pax_global_header00006660000000000000000000000064152007106350014511gustar00rootroot0000000000000052 comment=b7ec4d86b1cce3c04711e570c78272c0402ca65c ipython-ipyparallel-14e3c43/000077500000000000000000000000001520071063500160475ustar00rootroot00000000000000ipython-ipyparallel-14e3c43/.binder/000077500000000000000000000000001520071063500173705ustar00rootroot00000000000000ipython-ipyparallel-14e3c43/.binder/jupyter_config.json000066400000000000000000000000601520071063500233060ustar00rootroot00000000000000{ "LabApp": { "collaborative": true } } ipython-ipyparallel-14e3c43/.binder/postBuild000066400000000000000000000010271520071063500212600ustar00rootroot00000000000000#!/usr/bin/env bash jlpm --prefer-offline --ignore-optional --ignore-scripts jlpm build IPP_DISABLE_JS=1 python -m pip install -e .[test,benchmark] jupyter serverextension enable --sys-prefix --py ipyparallel jupyter serverextension list jupyter server extension enable --sys-prefix --py ipyparallel jupyter server extension list jupyter nbextension install --symlink --sys-prefix --py ipyparallel jupyter nbextension enable --sys-prefix --py ipyparallel jupyter nbextension list jlpm install:extension jupyter labextension list ipython-ipyparallel-14e3c43/.binder/requirements.txt000066400000000000000000000001651520071063500226560ustar00rootroot00000000000000ipywidgets jupyterlab >=3.2.4 jupyterlab-link-share matplotlib networkx pidigits requests retrolab >=0.3.13 wordfreq ipython-ipyparallel-14e3c43/.coveragerc000066400000000000000000000003501520071063500201660ustar00rootroot00000000000000[run] parallel = True omit = ipyparallel/tests/* [report] exclude_lines = if self.debug: pragma: no cover raise NotImplementedError if __name__ == .__main__.: ignore_errors = True omit = ipyparallel/tests/* ipython-ipyparallel-14e3c43/.eslintrc.js000066400000000000000000000036001520071063500203050ustar00rootroot00000000000000module.exports = { env: { browser: true, es6: true, commonjs: true, node: true, }, root: true, extends: [ "eslint:recommended", "plugin:@typescript-eslint/eslint-recommended", "plugin:@typescript-eslint/recommended", "prettier", "plugin:react/recommended", ], parser: "@typescript-eslint/parser", parserOptions: { project: "tsconfig.eslint.json", }, plugins: ["@typescript-eslint"], rules: { "@typescript-eslint/no-floating-promises": ["error", { ignoreVoid: true }], "@typescript-eslint/naming-convention": [ "error", { selector: "interface", format: ["PascalCase"], custom: { regex: "^I[A-Z]", match: true, }, }, ], "@typescript-eslint/no-unused-vars": ["warn", { args: "none" }], "@typescript-eslint/no-use-before-define": "off", "@typescript-eslint/camelcase": "off", "@typescript-eslint/no-explicit-any": "off", "@typescript-eslint/no-non-null-assertion": "off", "@typescript-eslint/no-namespace": "off", "@typescript-eslint/interface-name-prefix": "off", "@typescript-eslint/explicit-function-return-type": "off", "@typescript-eslint/ban-ts-comment": ["warn", { "ts-ignore": true }], "@typescript-eslint/ban-types": "warn", "@typescript-eslint/no-non-null-asserted-optional-chain": "warn", "@typescript-eslint/no-var-requires": "off", "@typescript-eslint/no-empty-interface": "off", "@typescript-eslint/triple-slash-reference": "warn", "@typescript-eslint/no-inferrable-types": "off", "no-inner-declarations": "off", "no-prototype-builtins": "off", "no-control-regex": "warn", "no-undef": "warn", "no-case-declarations": "warn", "no-useless-escape": "off", "prefer-const": "off", "react/prop-types": "warn", }, settings: { react: { version: "detect", }, }, }; ipython-ipyparallel-14e3c43/.github/000077500000000000000000000000001520071063500174075ustar00rootroot00000000000000ipython-ipyparallel-14e3c43/.github/dependabot.yml000066400000000000000000000015011520071063500222340ustar00rootroot00000000000000# dependabot.yaml reference: https://docs.github.com/en/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file version: 2 updates: # Maintain dependencies in our GitHub Workflows - package-ecosystem: github-actions directory: "/" schedule: interval: monthly groups: actions: patterns: - "*" cooldown: default-days: 7 # jupyterlab extension - package-ecosystem: npm directory: "/" schedule: interval: monthly groups: # one big pull request lab-minor: patterns: - "*" update-types: - minor - patch # group major bumps lab-major: patterns: - "*" update-types: - major cooldown: default-days: 7 ipython-ipyparallel-14e3c43/.github/workflows/000077500000000000000000000000001520071063500214445ustar00rootroot00000000000000ipython-ipyparallel-14e3c43/.github/workflows/release.yml000066400000000000000000000040451520071063500236120ustar00rootroot00000000000000# Build releases and (on tags) publish to PyPI name: Release # always build releases (to make sure wheel-building works) # but only publish to PyPI on tags on: push: branches-ignore: - "pre-commit-ci*" tags: - "*" pull_request: concurrency: group: >- ${{ github.workflow }}- ${{ github.ref_type }}- ${{ github.event.pull_request.number || github.sha }} cancel-in-progress: true permissions: contents: read jobs: build-release: runs-on: ubuntu-24.04 steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 with: persist-credentials: false - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6 with: python-version: "3.13" - name: install build package run: | pip install --upgrade pip pip install build pip freeze - name: build release run: | python -m build --sdist --wheel . ls -l dist - name: verify wheel run: | cd dist pip install ./*.whl jupyterlab==4.* ipcluster --help-all ipcontroller --help-all ipengine --help-all jupyter labextension list 2>&1 | grep ipyparallel jupyter server extension list 2>&1 | grep ipyparallel # ref: https://github.com/actions/upload-artifact#readme - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7 with: name: ipyparallel-${{ github.sha }} path: "dist/*" if-no-files-found: error upload-pypi: permissions: id-token: write environment: release runs-on: ubuntu-24.04 if: startsWith(github.ref, 'refs/tags/') needs: - build-release steps: - uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8 with: path: dist merge-multiple: true - name: Publish wheels to PyPI uses: pypa/gh-action-pypi-publish@cef221092ed1bacb1cc03d23a2d87d1d172e277b # v1.14.0 ipython-ipyparallel-14e3c43/.github/workflows/test-docs.yml000066400000000000000000000042531520071063500241000ustar00rootroot00000000000000name: Test docs on: pull_request: push: branches-ignore: - "dependabot/**" - "pre-commit-ci-update-config" tags: - "**" workflow_dispatch: permissions: contents: read env: # UTF-8 content may be interpreted as ascii and causes errors without this. LANG: C.UTF-8 PYTEST_ADDOPTS: "--verbose --color=yes" jobs: test-docs: runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v6 with: # make rediraffecheckdiff requires git history to compare current # commit with the main branch and previous releases. fetch-depth: 0 persist-credentials: false - uses: actions/setup-python@v6 with: python-version: "3.13" - name: Install requirements run: | pip install -r docs/requirements.txt . # readthedocs doesn't halt on warnings, # so raise any warnings here - name: build docs run: | cd docs make html - name: check links run: | cd docs make linkcheck # make rediraffecheckdiff compares files for different changesets # these diff targets aren't always available # - compare with base ref (usually 'main', always on 'origin') for pull requests # - only compare with tags when running against main repo # to avoid errors on forks, which often lack tags - name: check redirects for this PR if: github.event_name == 'pull_request' run: | cd docs export REDIRAFFE_BRANCH=origin/${GITHUB_BASE_REF} make rediraffecheckdiff # this should check currently published 'stable' links for redirects - name: check redirects since last release if: github.repository == 'ipython/ipyparallel' run: | cd docs export REDIRAFFE_BRANCH=$(git describe --tags --abbrev=0) make rediraffecheckdiff # longer-term redirect check (fixed version) for older links - name: check redirects since 8.6.0 if: github.repository == 'ipython/ipyparallel' run: | cd docs export REDIRAFFE_BRANCH=8.6.0 make rediraffecheckdiff ipython-ipyparallel-14e3c43/.github/workflows/test-ssh.yml000066400000000000000000000140001520071063500237340ustar00rootroot00000000000000name: Test ssh on: pull_request: paths: - ipyparallel/cluster/launcher.py - ipyparallel/cluster/shellcmd* - ipyparallel/tests/test_ssh.py - ipyparallel/tests/test_shellcmd.py - ci/ssh/** - .github/workflows/test-ssh.yml push: paths: - ipyparallel/cluster/launcher.py - ipyparallel/cluster/shellcmd* - ipyparallel/tests/test_ssh.py - ipyparallel/tests/test_shellcmd.py - ci/ssh/** - .github/workflows/test-ssh.yml branches-ignore: - "pre-commit-ci*" concurrency: group: >- ${{ github.workflow }}- ${{ github.ref_type }}- ${{ github.event.pull_request.number || github.sha }} cancel-in-progress: true permissions: contents: read env: # UTF-8 content may be interpreted as ascii and causes errors without this. LANG: C.UTF-8 IPP_DISABLE_JS: "1" JUPYTER_PLATFORM_DIRS: "1" jobs: test: runs-on: ${{ matrix.runs_on || 'ubuntu-22.04' }} timeout-minutes: 45 strategy: # Keep running even if one variation of the job fail fail-fast: false matrix: include: - python: "3.10" - python: "3.12" runs_on: windows-2022 steps: - uses: actions/checkout@v6 with: persist-credentials: false - name: Get Docker infos run: | docker version docker images - name: Set up docker-compose for ssh linux launcher if: ${{ !contains(matrix.runs_on, 'windows') }} run: | export DOCKER_BUILDKIT=1 export COMPOSE_DOCKER_CLI_BUILD=1 cd ci/ssh docker compose up -d --build # retrieve id_rsa file for public key authentication mkdir ~/.ssh/ docker cp ssh-sshd-1:/home/ciuser/.ssh/id_rsa ~/.ssh/id_rsa cat ~/.ssh/id_rsa #check ssh connection and accept host key (for future ssh commands) ssh -o "StrictHostKeyChecking no" ciuser@127.0.0.1 -p 2222 -v echo "ssh connection to container succeeded" - name: Set up docker-compose for ssh windows launcher if: ${{ contains(matrix.runs_on, 'windows') }} env: SSH_HOST: ciuser@127.0.0.1 SSH_PORT: 2222 CODE_ROOT: c:\src\ipyparallel run: | cd ci/ssh # determine host ip and place it as 'static' env variables in corresponding docker compose file (win_Dockerfile_template -> win_Dockerfile) $env:docker_host_ip=(Get-NetIPConfiguration -InterfaceAlias "Ethernet*").IPv4Address.IPAddress.Trim() $content = Get-Content "win_Dockerfile_template" $content | ForEach-Object { $_ -replace '\${docker_host_ip}', $env:docker_host_ip -replace '\${docker_host_name}', $env:computername } | Set-Content "win_Dockerfile" docker compose -f win_docker-compose.yaml up -d --build # retrieve id_rsa file for public key authentication mkdir $env:USERPROFILE/.ssh/ docker run ipyparallel-sshd powershell.exe -Command "type C:\Users\ciuser\.ssh\id_rsa" | out-file -encoding ascii $env:USERPROFILE/.ssh/id_rsa #check ssh connection and accept host key (with arbitrary windows command) ssh -o "StrictHostKeyChecking no" $env:SSH_HOST -p $env:SSH_PORT -v echo "ssh connection to container succeeded" # copy ipyparallel code to docker container (use zip, scp and unzip) ssh $env:SSH_HOST -p $env:SSH_PORT mkdir $env:CODE_ROOT # zip ipyparallel files (excluding files probably not needed) cd ../.. $exclude = @("__pycache__", "node_modules", ".yarn") $files = Get-ChildItem -Path "." -Exclude $exclude Compress-Archive -Path $files -DestinationPath ipyparallel.zip -CompressionLevel Fastest # copy file into docker (we need to do it over ssh since docker copy or mount doesn't work in Hyper-V) scp -P $env:SSH_PORT ipyparallel.zip ${env:SSH_HOST}:${env:CODE_ROOT} # deflate ipyparallel files ssh $env:SSH_HOST -p $env:SSH_PORT powershell.exe -Command "Expand-Archive -Path $env:CODE_ROOT\ipyparallel.zip -DestinationPath $env:CODE_ROOT" # pip install ipyparallel files #ssh $env:SSH_HOST -p $env:SSH_PORT "echo IPP_DISABLE_JS=$env:IPP_DISABLE_JS" ssh $env:SSH_HOST -p $env:SSH_PORT "pip install -e file://c:/src/ipyparallel#egg=ipyparallel[test]" # we need to disable the windows firewall for github runners otherwise the ipyparallel engines cannot connect to the controller. # obviously, a more precautious adaption of the firewall would be desirable. since an adaption of the firewall is NOT necessary # for a local standard windows environment, no further improvements were made. echo "Disable Firewall:" Set-NetFirewallProfile -Profile Domain, Public, Private -Enabled False # just see were pip is installed and what libraries are install echo "Check pip inside container" ssh $env:SSH_HOST -p $env:SSH_PORT "where pip" ssh $env:SSH_HOST -p $env:SSH_PORT "pip list" echo "Check if container can ping the docker host (requires adapted hosts file and firewall disabled)" docker run ipyparallel-sshd ping -n 1 $env:computername - name: Install Python ${{ matrix.python }} uses: actions/setup-python@v6 with: python-version: ${{ matrix.python }} cache: pip - name: Install ipyparallel itself run: | pip install --upgrade pip pip install --no-deps . - name: Install Python dependencies run: | pip install --upgrade ipyparallel[test] - name: Show environment run: pip freeze - name: Run shellcmd tests run: | pytest -v --maxfail=2 --cov=ipyparallel ipyparallel/tests/test_shellcmd.py - name: Run ssh tests run: | pytest -v --maxfail=2 --cov=ipyparallel ipyparallel/tests/test_ssh.py - name: Submit codecov report uses: codecov/codecov-action@v6 ipython-ipyparallel-14e3c43/.github/workflows/test.yml000066400000000000000000000136031520071063500231510ustar00rootroot00000000000000name: Test on: pull_request: push: branches-ignore: - "pre-commit-ci*" - "dependabot/**" concurrency: group: >- ${{ github.workflow }}- ${{ github.ref_type }}- ${{ github.event.pull_request.number || github.sha }} cancel-in-progress: true permissions: contents: read env: # UTF-8 content may be interpreted as ascii and causes errors without this. LANG: C.UTF-8 IPP_DISABLE_JS: "1" JUPYTER_PLATFORM_DIRS: "1" jobs: test: runs-on: ${{ matrix.runs_on || 'ubuntu-24.04' }} timeout-minutes: 30 strategy: # Keep running even if one variation of the job fail fail-fast: false matrix: include: - python: "3.11" cluster_type: mpi - python: "3.12" cluster_type: slurm container: slurmctld - python: "3.10" env: IPP_CONTROLLER_IP: "*" - python: "3.13" env: IPP_ENABLE_CURVE: "1" - python: "3.10" runs_on: windows-2025 - python: "3.12" runs_on: macos-14 - python: "3.11" - python: "3.14" pre: pre steps: - uses: actions/checkout@v6 with: persist-credentials: false - name: Cache conda environment uses: actions/cache@v5 with: path: | ~/conda key: conda - name: Cache node_modules uses: actions/cache@v5 with: path: | node_modules key: ${{ runner.os }}-yarn-${{ hashFiles('yarn.lock') }} restore-keys: | ${{ runner.os }}-yarn- - name: Set environment variables if: ${{ matrix.env }} env: MATRIX_ENV: ${{ toJSON(matrix.env) }} run: | python3 < image "docker.io/library/ipp-cluster:slurm": already exists # see https://github.com/mlflow/mlflow/pull/20779 # work-a-round fix: docker compose again if first call failed run: | export DOCKER_BUILDKIT=1 export COMPOSE_DOCKER_CLI_BUILD=1 cd ci/slurm docker compose up -d --build || docker compose up -d --build - name: Install Python (conda) ${{ matrix.python }} if: ${{ matrix.cluster_type == 'mpi' }} run: | export MAMBA_ROOT_PREFIX=$HOME/conda test -d $MAMBA_ROOT_PREFIX || mkdir $MAMBA_ROOT_PREFIX wget -qO- https://micro.mamba.pm/api/micromamba/linux-64/latest | tar -xvj bin/micromamba eval "$(./bin/micromamba shell hook -s posix)" micromamba activate micromamba install -y -c conda-forge mpich mpi4py python=${{ matrix.python }} echo "PATH=$MAMBA_ROOT_PREFIX/bin:$PATH" >> $GITHUB_ENV - name: Install Python ${{ matrix.python }} if: ${{ matrix.cluster_type != 'mpi' }} uses: actions/setup-python@v6 with: python-version: ${{ matrix.python }} allow-prereleases: true - name: Install ipyparallel itself run: | pip install --upgrade pip pip install --no-deps . - name: Install Python dependencies run: | pip install --upgrade ipyparallel[test] - name: Install pre-release dependencies if: ${{ matrix.pre }} run: | pip install --pre --upgrade ipyparallel[test] 'https://github.com/ipython/ipykernel/archive/main.tar.gz#egg=ipykernel' - name: Install extra Python packages if: ${{ ! startsWith(matrix.python, '3.11') }} run: | pip install distributed joblib pip install --only-binary :all: matplotlib - name: Start MongoDB if: ${{ (! matrix.runs_on) && (! matrix.cluster_type) }} # only under linux with no cluster uses: supercharge/mongodb-github-action@1.12.1 # uses latest mongodb per default - name: Install pymongo package if: ${{ (! matrix.runs_on) && (! matrix.cluster_type) }} # only under linux with no cluster run: pip install pymongo - name: Try to connect to mongodb if: ${{ (! matrix.runs_on) && (! matrix.cluster_type) }} # only under linux with no cluster run: | python3 <> $GITHUB_ENV - name: Run ${{ matrix.cluster_type }} tests if: ${{ matrix.cluster_type }} run: | ${EXEC:-} pytest -v --maxfail=2 --cov=ipyparallel ipyparallel/tests/test_${{ matrix.cluster_type }}.py - name: Run tests if: ${{ ! matrix.cluster_type }} run: | pytest -v --maxfail=3 --cov=ipyparallel - name: Fixup coverage permissions ${{ matrix.container }} if: ${{ matrix.container }} run: | ls -l .coverage* ${EXEC} chmod -R a+rw .coverage* - name: Submit codecov report uses: codecov/codecov-action@v6 - name: Report on slurm if: ${{ matrix.cluster_type == 'slurm' && failure() }} run: | set -x docker ps -a docker exec -i slurmctld squeue --states=all docker exec -i slurmctld sinfo docker logs slurmctld docker logs c1 docker logs c2 ipython-ipyparallel-14e3c43/.github/workflows/windows-ssh-image.yaml000066400000000000000000000030431520071063500256750ustar00rootroot00000000000000# because it's too unbelievably slow to install ssh server on Windows name: Build image for Windows SSH CI on: workflow_dispatch: env: REGISTRY: ghcr.io IMAGE_NAME: ipyparallel-windows-ssh TAG: 3.12-2022 jobs: build-and-push-image: runs-on: windows-2022 permissions: contents: read packages: write steps: - name: Checkout repository uses: actions/checkout@v6 with: persist-credentials: false - name: Log in to the Container registry uses: docker/login-action@v4 with: registry: ${{ env.REGISTRY }} username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} # - name: Extract metadata (tags, labels) for Docker # id: meta # uses: docker/metadata-action@v5 # with: # labels: | # org.opencontainers.image.title=${{ env.IMAGE_NAME }} # # images: ${{ github.repository_owner }}/${{ env.IMAGE_NAME }} # tags: | # type=raw,value=${{ env.TAG }} - name: Build image # can't use build-push-action on Windows # https://github.com/docker/build-push-action/issues/18 run: | docker build -t ${{ env.REGISTRY }}/${{ github.repository_owner }}/${{ env.IMAGE_NAME }}:${{ env.TAG }} -f ci/ssh/win_base_Dockerfile ci/ssh - name: Push image run: | docker push ${{ env.REGISTRY }}/${{ github.repository_owner }}/${{ env.IMAGE_NAME }}:${{ env.TAG }} ipython-ipyparallel-14e3c43/.gitignore000066400000000000000000000007021520071063500200360ustar00rootroot00000000000000MANIFEST build dist _build docs/man/*.gz docs/source/api/generated docs/source/config/options docs/source/interactive/magics-generated.txt examples/daVinci Word Count/*.txt examples/testdill.py *.py[co] __pycache__ *.egg-info *~ *.bak .ipynb_checkpoints .tox .DS_Store \#*# .#* .coverage *coverage.xml .coverage.* .idea htmlcov id_*sa .vscode node_modules lib ipyparallel/labextension tsconfig.tsbuildinfo dask-worker-space .yarn package-lock.json ipython-ipyparallel-14e3c43/.mailmap000066400000000000000000000250671520071063500175020ustar00rootroot00000000000000A. J. Holyoake ajholyoake Aaron Culich Aaron Culich Aron Ahmadia ahmadia Benjamin Ragan-Kelley Benjamin Ragan-Kelley Min RK Benjamin Ragan-Kelley MinRK Barry Wark Barry Wark Ben Edwards Ben Edwards Bradley M. Froehle Bradley M. Froehle Bradley M. Froehle Bradley Froehle Brandon Parsons Brandon Parsons Brian E. Granger Brian Granger Brian E. Granger Brian Granger <> Brian E. Granger bgranger <> Brian E. Granger bgranger Christoph Gohlke cgohlke Cyrille Rossant rossant Damián Avila damianavila Damián Avila damianavila Damon Allen damontallen Darren Dale darren.dale <> Darren Dale Darren Dale <> Dav Clark Dav Clark <> Dav Clark Dav Clark David Hirschfeld dhirschfeld David P. Sanders David P. Sanders David Warde-Farley David Warde-Farley <> Doug Blank Doug Blank Eugene Van den Bulke Eugene Van den Bulke Evan Patterson Evan Patterson Evan Patterson Evan Patterson Evan Patterson epatters Evan Patterson epatters Ernie French Ernie French Ernie French ernie french Ernie French ernop Fernando Perez Fernando Perez Fernando Perez Fernando Perez fperez <> Fernando Perez fptest <> Fernando Perez fptest1 <> Fernando Perez Fernando Perez Fernando Perez Fernando Perez <> Fernando Perez Fernando Perez Frank Murphy Frank Murphy Gabriel Becker gmbecker Gael Varoquaux gael.varoquaux <> Gael Varoquaux gvaroquaux Gael Varoquaux Gael Varoquaux <> Ingolf Becker watercrossing Jake Vanderplas Jake Vanderplas Jakob Gager jakobgager Jakob Gager jakobgager Jakob Gager jakobgager Jason Grout Jason Grout Jason Gors jason gors Jason Gors jgors Jens Hedegaard Nielsen Jens Hedegaard Nielsen Jens Hedegaard Nielsen Jens H Nielsen Jens Hedegaard Nielsen Jens H. Nielsen Jez Ng Jez Ng Jonathan Frederic Jonathan Frederic Jonathan Frederic Jonathan Frederic Jonathan Frederic Jonathan Frederic Jonathan Frederic jon Jonathan Frederic U-Jon-PC\Jon Jonathan March Jonathan March Jonathan March jdmarch Jörgen Stenarson Jörgen Stenarson Jörgen Stenarson Jorgen Stenarson Jörgen Stenarson Jorgen Stenarson <> Jörgen Stenarson jstenar Jörgen Stenarson jstenar <> Jörgen Stenarson Jörgen Stenarson Juergen Hasch juhasch Juergen Hasch juhasch Julia Evans Julia Evans Kester Tong KesterTong Kyle Kelley Kyle Kelley Kyle Kelley rgbkrk Laurent Dufréchou Laurent Dufréchou Laurent Dufréchou laurent dufrechou <> Laurent Dufréchou laurent.dufrechou <> Laurent Dufréchou Laurent Dufrechou <> Laurent Dufréchou laurent.dufrechou@gmail.com <> Laurent Dufréchou ldufrechou Lorena Pantano Lorena Luis Pedro Coelho Luis Pedro Coelho Marc Molla marcmolla Martín Gaitán Martín Gaitán Matthias Bussonnier Matthias BUSSONNIER Matthias Bussonnier Bussonnier Matthias Matthias Bussonnier Matthias BUSSONNIER Matthias Bussonnier Matthias Bussonnier Michael Droettboom Michael Droettboom Nicholas Bollweg Nicholas Bollweg (Nick) Nicolas Rougier Nikolay Koldunov Nikolay Koldunov Omar Andrés Zapata Mesa Omar Andres Zapata Mesa Omar Andrés Zapata Mesa Omar Andres Zapata Mesa Pankaj Pandey Pankaj Pandey Pascal Schetelat pascal-schetelat Paul Ivanov Paul Ivanov Pauli Virtanen Pauli Virtanen <> Pauli Virtanen Pauli Virtanen Pierre Gerold Pierre Gerold Pietro Berkes Pietro Berkes Piti Ongmongkolkul piti118 Prabhu Ramachandran Prabhu Ramachandran <> Puneeth Chaganti Puneeth Chaganti Robert Kern rkern <> Robert Kern Robert Kern Robert Kern Robert Kern Robert Kern Robert Kern <> Robert Marchman Robert Marchman Satrajit Ghosh Satrajit Ghosh Satrajit Ghosh Satrajit Ghosh Scott Sanderson Scott Sanderson smithj1 smithj1 smithj1 smithj1 Steven Johnson stevenJohnson Steven Silvester blink1073 S. Weber s8weber Stefan van der Walt Stefan van der Walt Silvia Vinyes Silvia Silvia Vinyes silviav12 Sylvain Corlay Sylvain Corlay sylvain.corlay Ted Drain TD22057 Théophile Studer Théophile Studer Thomas Kluyver Thomas Thomas Spura Thomas Spura Timo Paulssen timo vds vds2212 vds vds Ville M. Vainio Ville M. Vainio ville Ville M. Vainio ville Ville M. Vainio vivainio <> Ville M. Vainio Ville M. Vainio Ville M. Vainio Ville M. Vainio Walter Doerwald walter.doerwald <> Walter Doerwald Walter Doerwald <> W. Trevor King W. Trevor King Yoval P. y-p ipython-ipyparallel-14e3c43/.pre-commit-config.yaml000066400000000000000000000044071520071063500223350ustar00rootroot00000000000000ci: autoupdate_schedule: monthly repos: - repo: https://github.com/astral-sh/ruff-pre-commit rev: 6fec9b7edb08fd9989088709d864a7826dc74e80 # frozen: v0.15.12 hooks: - id: ruff args: - "--fix" exclude_types: - jupyter - id: ruff name: ruff (notebooks) args: - "--fix" types: - jupyter - id: ruff-format # run via nbqa to handle cell magics exclude_types: - jupyter # run ruff via nbqa, which has better and configurable handling of cell magics # than ruff itself # but has trouble with isort rules - repo: https://github.com/nbQA-dev/nbQA rev: d31b7eae1767c43460afb3ba130e0a6602933abe # frozen: 1.9.1 hooks: - id: nbqa-ruff-format - id: nbqa-ruff-check args: - --fix # isort rules get confused in the temporary files - --ignore=I - repo: https://github.com/rbubley/mirrors-prettier rev: 515f543f5718ebfd6ce22e16708bb32c68ff96e1 # frozen: v3.8.3 hooks: - id: prettier - repo: https://github.com/zizmorcore/zizmor-pre-commit rev: a4727cbbcd26d7098e96b9cb738169b59711ae51 # frozen: v1.24.1 hooks: - id: zizmor args: - --fix=all - id: zizmor args: - --fix=all - --config=zizmor-strict.yaml files: .github/workflows/release.yml - repo: https://github.com/pre-commit/pre-commit-hooks rev: 3e8a8703264a2f4a69428a0aa4dcb512790b2c8c # frozen: v6.0.0 hooks: - id: end-of-file-fixer - id: check-case-conflict - id: check-executables-have-shebangs - id: requirements-txt-fixer # - repo: https://github.com/pre-commit/mirrors-eslint # rev: 9158d5162f915488785c296b5d08d6d18be10d32 # frozen: v10.3.0 # hooks: # - id: eslint # files: \.[jt]sx?$ # *.js, *.jsx, *.ts and *.tsx # exclude: ipyparallel/nbextension/.* # types: [file] # additional_dependencies: # - "@typescript-eslint/eslint-plugin@8.59.2" # - "@typescript-eslint/parser@2.27.0" # - eslint@^6.0.0 # - eslint-config-prettier@6.10.1 # - eslint-plugin-prettier@3.1.4 # - eslint-plugin-react@7.21.5 # - typescript@4.1.3 ipython-ipyparallel-14e3c43/.prettierignore000066400000000000000000000001401520071063500211050ustar00rootroot00000000000000node_modules docs/build htmlcov ipyparallel/labextension **/node_modules **/lib **/package.json ipython-ipyparallel-14e3c43/.yarnrc.yml000066400000000000000000000000701520071063500201430ustar00rootroot00000000000000enableImmutableInstalls: false nodeLinker: node-modules ipython-ipyparallel-14e3c43/CONTRIBUTING.md000066400000000000000000000025671520071063500203120ustar00rootroot00000000000000# Contributing We follow the [Jupyter Contributing Guide](https://jupyter.readthedocs.io/en/latest/contributing/content-contributor.html). Make sure to follow the [Jupyter Code of Conduct](https://jupyter.org/conduct/). ## Development install A basic development install of IPython parallel is the same as almost all Python packages: ```bash pip install -e . ``` To enable the server extension from a development install: ```bash # for jupyterlab jupyter server extension enable --sys-prefix ipyparallel # for classic notebook jupyter serverextension enable --sys-prefix ipyparallel ``` As described in the [JupyterLab documentation](https://jupyterlab.readthedocs.io/en/stable/extension/extension_dev.html#developing-a-prebuilt-extension) for a development install of the jupyterlab extension you can run the following in this directory: ```bash jlpm # Install npm package dependencies jlpm build # Compile the TypeScript sources to Javascript jupyter labextension develop . --overwrite # Install the current directory as an extension ``` If you are working on the lab extension, you can run jupyterlab in dev mode to always rebuild and reload your extensions. In two terminals, run: ```bash [term 1] $ jlpm watch [term 2] $ jupyter lab --extensions-in-dev-mode ``` You should then be able to refresh the JupyterLab page and it will pick up the changes to the extension as you work. ipython-ipyparallel-14e3c43/COPYING.md000066400000000000000000000056121520071063500175050ustar00rootroot00000000000000# Licensing terms Traitlets is adapted from enthought.traits, Copyright (c) Enthought, Inc., under the terms of the Modified BSD License. This project is licensed under the terms of the Modified BSD License (also known as New or Revised or 3-Clause BSD), as follows: - Copyright (c) 2001-, IPython Development Team All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of the IPython Development Team nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ## About the IPython Development Team The IPython Development Team is the set of all contributors to the IPython project. This includes all of the IPython subprojects. The core team that coordinates development on GitHub can be found here: https://github.com/jupyter/. ## Our Copyright Policy IPython uses a shared copyright model. Each contributor maintains copyright over their contributions to IPython. But, it is important to note that these contributions are typically only changes to the repositories. Thus, the IPython source code, in its entirety is not the copyright of any single person or institution. Instead, it is the collective copyright of the entire IPython Development Team. If individual contributors want to maintain a record of what changes/contributions they have specific copyright on, they should indicate their copyright in the commit message of the change, when they commit the change to one of the IPython repositories. With this in mind, the following banner should be used in any source code file to indicate the copyright and license terms: # Copyright (c) IPython Development Team. # Distributed under the terms of the Modified BSD License. ipython-ipyparallel-14e3c43/README.md000066400000000000000000000015201520071063500173240ustar00rootroot00000000000000# Interactive Parallel Computing with IPython IPython Parallel (`ipyparallel`) is a Python package and collection of CLI scripts for controlling clusters of IPython processes, built on the Jupyter protocol. IPython Parallel provides the following commands: - ipcluster - start/stop/list clusters - ipcontroller - start a controller - ipengine - start an engine ## Install Install IPython Parallel: pip install ipyparallel This will install and enable the IPython Parallel extensions for Jupyter Notebook and (as of 7.0) Jupyter Lab 3.0. ## Run Start a cluster: ipcluster start Use it from Python: ```python import os import ipyparallel as ipp cluster = ipp.Cluster(n=4) with cluster as rc: ar = rc[:].apply_async(os.getpid) pid_map = ar.get_dict() ``` See [the docs](https://ipyparallel.readthedocs.io) for more info. ipython-ipyparallel-14e3c43/asv.conf.json000066400000000000000000000003451520071063500204610ustar00rootroot00000000000000{ "version": 1, "project": "ipyparallel", "project_url": "https://github.com/ipython/ipyparallel/", "repo": "https://github.com/ipython/ipyparallel.git", "environment_type": "conda", "matrix": { "numpy": [] } } ipython-ipyparallel-14e3c43/benchmarks/000077500000000000000000000000001520071063500201645ustar00rootroot00000000000000ipython-ipyparallel-14e3c43/benchmarks/.gitignore000066400000000000000000000001101520071063500221440ustar00rootroot00000000000000.DS_Store .idea ipyparallel/ env/ html/ __pycache__ .ipynb_checkpoints ipython-ipyparallel-14e3c43/benchmarks/asv.conf.json000066400000000000000000000003451520071063500225760ustar00rootroot00000000000000{ "version": 1, "project": "ipyparallel", "project_url": "https://github.com/ipython/ipyparallel/", "repo": "https://github.com/ipython/ipyparallel.git", "environment_type": "conda", "matrix": { "numpy": [] } } ipython-ipyparallel-14e3c43/benchmarks/asv_normal.sh000077500000000000000000000001471520071063500226660ustar00rootroot00000000000000#!/usr/bin/env bash ipcluster start -n 200 --daemon --profile=asv asv run ipcluster stop --profile=asv ipython-ipyparallel-14e3c43/benchmarks/asv_quick.sh000077500000000000000000000003151520071063500225070ustar00rootroot00000000000000#!/usr/bin/env bash echo "starting engines" #ipcluster start -n 200 --daemon --profile=asv echo "starting benchmarks" asv run --quick --show-stderr echo "Benchmarks finished" #ipcluster stop --profile=asv ipython-ipyparallel-14e3c43/benchmarks/asv_runner.py000066400000000000000000000055201520071063500227220ustar00rootroot00000000000000import atexit import os import resource import socket import sys from subprocess import check_call import googleapiclient.discovery as gcd from cluster_start import start_cluster from google.cloud import storage os.environ['OPENBLAS_NUM_THREADS'] = '1' DEFAULT_MINICONDA_PATH = os.path.abspath(os.path.join('..', "miniconda3/bin/:")) env = os.environ.copy() env["PATH"] = DEFAULT_MINICONDA_PATH + env["PATH"] ZONE = "europe-west1-b" PROJECT_NAME = "jupyter-simula" BUCKET_NAME = 'ipyparallel_dev' instance_name = socket.gethostname() compute = gcd.build("compute", "v1") def cmd_run(*args, log_filename=None, error_filename=None): if len(args) == 1: args = args[0].split(" ") print(f'$ {" ".join(args)}') if not log_filename and not error_filename: check_call(args, env=env) else: check_call( args, env=env, stdout=open(log_filename, 'w'), stderr=open(error_filename, 'w'), ) def delete_self(): print(f'deleting: {instance_name}') compute.instances().delete( project=PROJECT_NAME, zone=ZONE, instance=instance_name ).execute() def upload_file(filename): blob_name = sys.argv[1] storage_client = storage.Client() bucket = storage_client.bucket(BUCKET_NAME) blob = bucket.blob(f'{instance_name}/{blob_name}') print(f'Uploading {filename}') blob.upload_from_filename(filename) if __name__ == '__main__': # atexit.register(delete_self) benchmark_name = sys.argv[1] template_name = sys.argv[2] soft_limit, hard_limit = resource.getrlimit(resource.RLIMIT_NOFILE) resource.setrlimit(resource.RLIMIT_NOFILE, (hard_limit, hard_limit)) ps = [] for i in [3, 4]: ps += start_cluster(i, 1030, '../miniconda3/bin/', log_output_to_file=True) # time.sleep(10) # ps += start_cluster( # 0, 'depth_0', 300, '../miniconda3/bin/', # log_output_to_file=True) # time.sleep(10) # ps += start_cluster( # 0, 'depth_1', 150, '../miniconda3/bin/', # log_output_to_file=True) log_filename = f'{instance_name}.log' error_log_filename = f'{instance_name}.error.log' def clean_up(): for p in ps: p.kill() atexit.register(clean_up) # cmd_run("ipcluster start -n 200 --daemon --profile=asv") # Starting 200 engines cmd_run( 'asv run -b DepthTestingSuite --verbose --show-stderr', # log_filename=log_filename, # error_filename=error_log_filename, ) clean_up() # cmd_run("ipcluster stop --profile=asv") print('uploading files') # upload_file(log_filename) # upload_file(error_log_filename) results_dir = f'results/{template_name}' for file_name in os.listdir(results_dir): if 'conda' in file_name: upload_file(f'{results_dir}/{file_name}') print('script finished') ipython-ipyparallel-14e3c43/benchmarks/async_benchmark.ipynb000066400000000000000000005430401520071063500243640ustar00rootroot00000000000000{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import pickle\n", "\n", "import altair as alt\n", "import pandas as pd\n", "from benchmark_result import get_async_source" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "# benchmark_results = get_benchmark_results()\n", "with open('saved_results.pkl', 'rb') as saved_results:\n", " benchmark_results = pickle.load(saved_results)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# time_async_messages" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This benchmark comes from benchmarking the runtime of sending a large amount of messages asynchronously and after sending them all, waiting for the reply" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "jupyter": { "source_hidden": true } }, "outputs": [ { "data": { "text/plain": [ "\u001b[0;31mSignature:\u001b[0m \u001b[0mmake_multiple_message_benchmark\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mget_view\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mDocstring:\u001b[0m \n", "\u001b[0;31mSource:\u001b[0m \n", "\u001b[0;32mdef\u001b[0m \u001b[0mmake_multiple_message_benchmark\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mget_view\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mclass\u001b[0m \u001b[0mAsyncMessagesSuite\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mparam_names\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m'Number of engines'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'number_of_messages'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mtimer\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtimeit\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdefault_timer\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mtimeout\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m180\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mparams\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mengines\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnumber_of_messages\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mview\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mclient\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mreply\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0msetup\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnumber_of_engines\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnumber_of_messages\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclient\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mipp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mClient\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprofile\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'asv'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mview\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mget_view\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mview\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtargets\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mlist\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnumber_of_engines\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mwait_for\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;32mlambda\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclient\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m>=\u001b[0m \u001b[0mnumber_of_engines\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mtime_async_messages\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mreplies\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mi\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m20\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mreply\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mview\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mapply_async\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mecho\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0marray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m*\u001b[0m \u001b[0;36m1000\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mint8\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mreplies\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreply\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mreply\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mreplies\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mreply\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mteardown\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclient\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclient\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mAsyncMessagesSuite\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mFile:\u001b[0m ~/ipyparallel_master_project/benchmarks/throughput.py\n", "\u001b[0;31mType:\u001b[0m function\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "??make_multiple_message_benchmark" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Results from benchmarking on 64 cores\n" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "source = get_async_source(benchmark_results)\n", "dview = pd.DataFrame(source['DirectView'])\n", "dview['Scheduler name'] = 'DirectView'\n", "dview['Speedup'] = 1" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Duration in msNumber of messagesNumber of enginesScheduler nameSpeedup
04.7511DirectView1.000000
117.7051DirectView1.000000
229.59101DirectView1.000000
358.47201DirectView1.000000
4133.31501DirectView1.000000
..................
49593.2311024NonCoalescing5.581141
502398.6851024NonCoalescing2.804805
514529.79101024NonCoalescing2.870884
528927.69201024NonCoalescingNaN
5322609.19501024NonCoalescingNaN
\n", "

162 rows × 5 columns

\n", "
" ], "text/plain": [ " Duration in ms Number of messages Number of engines Scheduler name \\\n", "0 4.75 1 1 DirectView \n", "1 17.70 5 1 DirectView \n", "2 29.59 10 1 DirectView \n", "3 58.47 20 1 DirectView \n", "4 133.31 50 1 DirectView \n", ".. ... ... ... ... \n", "49 593.23 1 1024 NonCoalescing \n", "50 2398.68 5 1024 NonCoalescing \n", "51 4529.79 10 1024 NonCoalescing \n", "52 8927.69 20 1024 NonCoalescing \n", "53 22609.19 50 1024 NonCoalescing \n", "\n", " Speedup \n", "0 1.000000 \n", "1 1.000000 \n", "2 1.000000 \n", "3 1.000000 \n", "4 1.000000 \n", ".. ... \n", "49 5.581141 \n", "50 2.804805 \n", "51 2.870884 \n", "52 NaN \n", "53 NaN \n", "\n", "[162 rows x 5 columns]" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "datas = []\n", "for scheduler_name, scheduler_results in source.items():\n", " data = pd.DataFrame(scheduler_results)\n", " data['Scheduler name'] = scheduler_name\n", " data['Speedup'] = (\n", " 1\n", " if scheduler_name == 'DirectView'\n", " else dview['Duration in ms'] / data['Duration in ms']\n", " )\n", " datas.append(data)\n", "data = pd.concat(datas)\n", "data" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Duration in msNumber of messagesNumber of enginesScheduler nameSpeedup
358.47201DirectView1.000000
359.19201Coalescing0.987836
360.54201NonCoalescing0.965808
\n", "
" ], "text/plain": [ " Duration in ms Number of messages Number of engines Scheduler name \\\n", "3 58.47 20 1 DirectView \n", "3 59.19 20 1 Coalescing \n", "3 60.54 20 1 NonCoalescing \n", "\n", " Speedup \n", "3 1.000000 \n", "3 0.987836 \n", "3 0.965808 " ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "filtered = data[(data['Number of messages'] == 20) & (data['Number of engines'] == 1)]\n", "filtered" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "data['Messages per engine per second'] = round(\n", " data['Number of messages'] / data['Duration in ms'] * 1000, 2\n", ")\n", "data['Total messages per second'] = round(\n", " ((data['Number of messages'] * data['Number of engines']) / data['Duration in ms'])\n", " * 1000,\n", " 2,\n", ")" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Duration in msNumber of messagesNumber of enginesScheduler nameSpeedupMessages per engine per secondTotal messages per second
04.7511DirectView1.000000210.53210.53
117.7051DirectView1.000000282.49282.49
229.59101DirectView1.000000337.95337.95
358.47201DirectView1.000000342.06342.06
4133.31501DirectView1.000000375.07375.07
........................
49593.2311024NonCoalescing5.5811411.691726.14
502398.6851024NonCoalescing2.8048052.082134.51
514529.79101024NonCoalescing2.8708842.212260.59
528927.69201024NonCoalescingNaN2.242293.99
5322609.19501024NonCoalescingNaN2.212264.57
\n", "

162 rows × 7 columns

\n", "
" ], "text/plain": [ " Duration in ms Number of messages Number of engines Scheduler name \\\n", "0 4.75 1 1 DirectView \n", "1 17.70 5 1 DirectView \n", "2 29.59 10 1 DirectView \n", "3 58.47 20 1 DirectView \n", "4 133.31 50 1 DirectView \n", ".. ... ... ... ... \n", "49 593.23 1 1024 NonCoalescing \n", "50 2398.68 5 1024 NonCoalescing \n", "51 4529.79 10 1024 NonCoalescing \n", "52 8927.69 20 1024 NonCoalescing \n", "53 22609.19 50 1024 NonCoalescing \n", "\n", " Speedup Messages per engine per second Total messages per second \n", "0 1.000000 210.53 210.53 \n", "1 1.000000 282.49 282.49 \n", "2 1.000000 337.95 337.95 \n", "3 1.000000 342.06 342.06 \n", "4 1.000000 375.07 375.07 \n", ".. ... ... ... \n", "49 5.581141 1.69 1726.14 \n", "50 2.804805 2.08 2134.51 \n", "51 2.870884 2.21 2260.59 \n", "52 NaN 2.24 2293.99 \n", "53 NaN 2.21 2264.57 \n", "\n", "[162 rows x 7 columns]" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 1, 2, 16, 64, 128, 256, 512, 1024])" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dview = data[data['Number of messages'] == 100]\n", "dview['Number of engines'].unique()" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
\n", "" ], "text/plain": [ "alt.Chart(...)" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "alt.Chart(dview).mark_line(point=True).encode(\n", " alt.X('Number of engines', scale=alt.Scale(type='log', base=2)),\n", " alt.Y('Messages per engine per second', scale=alt.Scale(type='log')),\n", " color='Scheduler name:N',\n", " tooltip='Messages per engine per second',\n", ").configure_axis(labelFontSize=20, titleFontSize=20).properties(\n", " title='Runtime of apply using DirectView', width=1080\n", ").interactive().display(renderer='svg')" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
\n", "" ], "text/plain": [ "alt.Chart(...)" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "alt.Chart(dview).mark_line(point=True).encode(\n", " alt.X('Number of engines', scale=alt.Scale(type='log', base=2)),\n", " alt.Y('Total messages per second', scale=alt.Scale(type='log')),\n", " color='Scheduler name:N',\n", " tooltip='Total messages per second',\n", ").configure_axis(labelFontSize=20, titleFontSize=20).properties(\n", " title='Runtime of apply using DirectView', width=1080\n", ").interactive().display(renderer='svg')" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
\n", "" ], "text/plain": [ "alt.Chart(...)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "
\n", "" ], "text/plain": [ "alt.Chart(...)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "
\n", "" ], "text/plain": [ "alt.Chart(...)" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "for scheduler_name in data['Scheduler name'].unique():\n", " scheduler_data = data[data['Scheduler name'] == scheduler_name]\n", " alt.Chart(scheduler_data).mark_line(point=True).encode(\n", " alt.X('Number of messages', scale=alt.Scale(type='log')),\n", " alt.Y(\n", " 'Messages per engine per second',\n", " ),\n", " color='Number of engines:N',\n", " tooltip='Duration in ms',\n", " ).configure_axis(labelFontSize=20, titleFontSize=20).properties(\n", " title=scheduler_name, width=800\n", " ).interactive().display(renderer='svg')" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "jupyter": { "source_hidden": true } }, "outputs": [ { "data": { "text/html": [ "\n", "
\n", "" ], "text/plain": [ "alt.Chart(...)" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "data['combined'] = data['Scheduler name'] + ' ' + data['Number of engines'].astype(str)\n", "alt.Chart(data[data['Scheduler name'] != 'DirectView']).mark_line(point=True).encode(\n", " alt.X('Number of messages', scale=alt.Scale(type='log')),\n", " alt.Y(\n", " 'Speedup',\n", " ),\n", " color='Number of engines:N',\n", " strokeDash=alt.StrokeDash(shorthand='Scheduler name', legend=None),\n", " tooltip='combined',\n", ").properties(\n", " title='schedulers vs directView scaling engines', width=800\n", ").interactive().display(renderer='svg')" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "jupyter": { "source_hidden": true } }, "outputs": [ { "data": { "text/html": [ "\n", "
\n", "" ], "text/plain": [ "alt.Chart(...)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "
\n", "" ], "text/plain": [ "alt.Chart(...)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "
\n", "" ], "text/plain": [ "alt.Chart(...)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "
\n", "" ], "text/plain": [ "alt.Chart(...)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "
\n", "" ], "text/plain": [ "alt.Chart(...)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "
\n", "" ], "text/plain": [ "alt.Chart(...)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "
\n", "" ], "text/plain": [ "alt.Chart(...)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "
\n", "" ], "text/plain": [ "alt.Chart(...)" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "for engine in data['Number of engines'].unique():\n", " alt.Chart(data[data['Number of engines'] == engine]).mark_bar().encode(\n", " x='Scheduler name',\n", " y='Duration in ms',\n", " color='Scheduler name:N',\n", " column='Number of messages:N',\n", " tooltip='Duration in ms',\n", " ).properties(title=f'Runtime on {engine} engines:').interactive().display(\n", " renderer='svg'\n", " )" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.4" } }, "nbformat": 4, "nbformat_minor": 4 } ipython-ipyparallel-14e3c43/benchmarks/benchmark_result.py000066400000000000000000000315461520071063500240770ustar00rootroot00000000000000import json import os import pickle import re from datetime import datetime from enum import Enum from itertools import product from benchmarks.constants import DEFAULT_NUMBER_OF_ENGINES from utils import seconds_to_ms RESULTS_DIR = "results" class BenchmarkType(Enum): # ECHO_MANY_ARGUMENTS = 'EchoManyArguments' # TIME_N_TASKS = 'Engines' # TIME_N_TASKS_NO_DELAY_NON_BLOCKING = 'non_blocking' # TIME_N_TASKS_NO_DELAY = 'NoDelay' __order__ = 'PUSH TIME_ASYNC DEPTH_TESTING BROADCAST' PUSH = 'Push' TIME_ASYNC = 'Async' DEPTH_TESTING = 'DepthTesting' BROADCAST = 'Broadcast' class SchedulerType(Enum): __order__ = 'DIRECT_VIEW LOAD_BALANCED BROADCAST_NON_COALESCING BROADCAST_COALESCING BROADCAST' DIRECT_VIEW = 'DirectView' LOAD_BALANCED = 'LoadBalanced' BROADCAST_NON_COALESCING = 'NonCoalescing' BROADCAST_COALESCING = 'Coalescing' BROADCAST = 'Depth' def get_benchmark_type(benchmark_name): for benchmark_type in BenchmarkType: if benchmark_type.value.lower() in benchmark_name.lower(): return benchmark_type else: raise NotImplementedError( f"Couldn't find matching benchmarkType for {benchmark_name} " ) def get_scheduler_type(benchmark_name): for scheduler_type in SchedulerType: if scheduler_type.value in benchmark_name: return scheduler_type class BenchmarkResult: def __init__(self, benchmark_results_file_name): with open(benchmark_results_file_name) as results_file: results_data = json.load(results_file) self.results_file_name = benchmark_results_file_name self.date = datetime.fromtimestamp( results_data["date"] // 1000 ) # Date is in ms self.machine_config = results_data["params"] self.results_dict = { benchmark_name: { 'benchmark_type': get_benchmark_type(benchmark_name), 'scheduler_type': get_scheduler_type(benchmark_name), 'results': [ Result( duration_in_seconds, stats_for_measurement, param, benchmark_name, get_benchmark_type(benchmark_name), ) for duration_in_seconds, stats_for_measurement, param in zip( result_data["result"], result_data["stats"], ( product( result_data["params"][0], result_data["params"][1], result_data['params'][2], ) if len(result_data["params"]) > 2 else product( result_data['params'][0], result_data['params'][1] ) ), ) ], } for benchmark_name, result_data in results_data["results"].items() } def get_number_of_engines(benchmark_name): match = re.search('[0-9]+', benchmark_name) return int(match[0]) if match else DEFAULT_NUMBER_OF_ENGINES class Result: def __init__( self, duration_in_seconds, stats_for_measurement, param, benchmark_name, benchmark_type, ): if not duration_in_seconds: self.failed = True return self.stats_for_measurement = stats_for_measurement self.failed = False self.duration_in_ms = seconds_to_ms(duration_in_seconds) if ( benchmark_type is BenchmarkType.BROADCAST or benchmark_type is BenchmarkType.PUSH ): self.number_of_engines = int(param[0]) self.number_of_bytes = int(param[1]) elif benchmark_type is BenchmarkType.TIME_ASYNC: self.number_of_engines = int(param[0]) self.number_of_messages = int(param[1]) elif benchmark_type is BenchmarkType.DEPTH_TESTING: self.number_of_engines = int(param[0]) self.is_coalescing = True if param[1] == 'True' else False self.depth = int(param[2]) else: raise NotImplementedError('BenchmarkType not found in Result constructor') def get_benchmark_results(): results_for_machines = { file_name: BenchmarkResult( os.path.join(os.getcwd(), RESULTS_DIR, dir_content, file_name) ) for dir_content in os.listdir(RESULTS_DIR) if ( os.path.isdir(os.path.join(os.getcwd(), RESULTS_DIR, dir_content)) and "asv-testing-64-2020-04-28" in dir_content ) for file_name in os.listdir(f"{RESULTS_DIR}/{dir_content}") if "machine" not in file_name } return results_for_machines def get_value_dict(engines_or_cores='engines', bytes_or_tasks='tasks'): return { 'Duration in ms': [], f'Number of {bytes_or_tasks}': [], f'Number of {engines_or_cores}': [], } def ensure_time_n_tasks_source_structure( datasource, delay, number_of_cores, scheduler_type ): if delay not in datasource: datasource[delay] = {number_of_cores: {scheduler_type: get_value_dict()}} elif number_of_cores not in datasource[delay]: datasource[delay][number_of_cores] = {scheduler_type: get_value_dict()} elif scheduler_type not in datasource[delay][number_of_cores]: datasource[delay][number_of_cores][scheduler_type] = get_value_dict() def add_time_n_tasks_source(source, benchmark, number_of_cores): number_of_engines = benchmark['engines'] scheduler_type = benchmark['scheduler_type'] for duration, tasks_num, delay in [ (result.duration_in_ms, result.number_of_tasks, seconds_to_ms(result.delay)) for result in benchmark['results'] if not result.failed ]: ensure_time_n_tasks_source_structure( source, delay, number_of_cores, scheduler_type ) dict_to_append_to = source[delay][number_of_cores][scheduler_type] dict_to_append_to['Duration in ms'].append(duration) dict_to_append_to['Number of tasks'].append(tasks_num) dict_to_append_to['Number of engines'].append(number_of_engines) def add_no_delay_tasks_source(source, benchmark, number_of_cores): scheduler_type = benchmark['scheduler_type'] if benchmark['benchmark_type'] not in source: source[benchmark['benchmark_type']] = { scheduler_type: get_value_dict(engines_or_cores='cores') } if scheduler_type not in source[benchmark['benchmark_type']]: source[benchmark['benchmark_type']][scheduler_type] = get_value_dict( engines_or_cores='cores' ) dict_to_append_to = source[benchmark['benchmark_type']][scheduler_type] for duration, tasks_num in [ (result.duration_in_ms, result.number_of_tasks) for result in benchmark['results'] if not result.failed ]: dict_to_append_to['Duration in ms'].append(duration) dict_to_append_to['Number of tasks'].append(tasks_num) dict_to_append_to['Number of cores'].append(number_of_cores) def add_to_broadcast_source(source, benchmark): scheduler_type = benchmark['scheduler_type'].value if scheduler_type not in source: source[scheduler_type] = get_value_dict(bytes_or_tasks='bytes') for duration, bytes, engines in [ (result.duration_in_ms, result.number_of_bytes, result.number_of_engines) for result in benchmark['results'] if not result.failed ]: source[scheduler_type]['Duration in ms'].append(duration) source[scheduler_type]['Number of bytes'].append(bytes) source[scheduler_type]['Number of engines'].append(engines) def add_to_async_source(source, benchmark): scheduler_type = benchmark['scheduler_type'].value if scheduler_type not in source: source[scheduler_type] = get_value_dict(bytes_or_tasks='messages') for duration, number_of_messages, engines in [ (result.duration_in_ms, result.number_of_messages, result.number_of_engines) for result in benchmark['results'] if not result.failed ]: source[scheduler_type]['Duration in ms'].append(duration) source[scheduler_type]['Number of messages'].append(number_of_messages) source[scheduler_type]['Number of engines'].append(engines) def add_to_depth_testing_source(source, benchmark): scheduler_type = benchmark['scheduler_type'].value if scheduler_type not in source: source[scheduler_type] = { 'Duration in ms': [], 'Number of engines': [], 'Is coalescing': [], 'Depth': [], } for duration, number_of_engines, is_coalescing, depth in [ ( result.duration_in_ms, result.number_of_engines, result.is_coalescing, result.depth, ) for result in benchmark['results'] if not result.failed ]: source[scheduler_type]['Duration in ms'].append(duration) source[scheduler_type]['Number of engines'].append(number_of_engines) source[scheduler_type]['Is coalescing'].append(is_coalescing) source[scheduler_type]['Depth'].append(depth) def add_to_echo_many_arguments_source(source, benchmark, number_of_cores): view_type = 'direct_view' if benchmark['is_direct_view'] else 'load_balanced' if 'number_of_engines' not in source and benchmark['results']: source['number_of_engines'] = benchmark['results'][0].number_of_engines if view_type not in source: source[view_type] = { 'Duration in ms': [], 'Number of arguments': [], 'Number of cores': [], } for duration, arguments in ( (result.duration_in_ms, result.number_of_arguments) for result in benchmark['results'] if not result.failed ): source[view_type]['Duration in ms'].append(duration) source[view_type]['Number of arguments'].append(arguments) source[view_type]['Number of cores'].append(number_of_cores) def get_number_of_cores(machine_name): return int(re.findall(r'\d+', machine_name)[0]) def make_source(benchmark_type, add_to_source_f, benchmark_results=None): if not benchmark_results: benchmark_results = get_benchmark_results() source = {} for benchmark_name, benchmark in benchmark_results['results_dict'].items(): if ( isinstance(benchmark_type, list) and benchmark['benchmark_type'] in benchmark_type ) or benchmark['benchmark_type'] == benchmark_type: add_to_source_f(source, benchmark) return source def get_time_n_tasks_source(benchmark_results=None): return make_source( BenchmarkType.TIME_N_TASKS, add_time_n_tasks_source, benchmark_results ) def get_no_delay_source(benchmark_results=None): return make_source( [ BenchmarkType.TIME_N_TASKS_NO_DELAY, BenchmarkType.TIME_N_TASKS_NO_DELAY_NON_BLOCKING, ], add_no_delay_tasks_source, benchmark_results, ) def get_broadcast_source(benchmark_results=None): return make_source( BenchmarkType.BROADCAST, add_to_broadcast_source, benchmark_results ) def get_push_source(benchmark_results=None): return make_source(BenchmarkType.PUSH, add_to_broadcast_source, benchmark_results) def get_async_source(benchmark_results): return make_source(BenchmarkType.TIME_ASYNC, add_to_async_source, benchmark_results) def get_echo_many_arguments_source(benchmark_results=None): return make_source( BenchmarkType.ECHO_MANY_ARGUMENTS, add_to_echo_many_arguments_source, benchmark_results, ) def get_depth_testing_source(benchmark_results): return make_source( BenchmarkType.DEPTH_TESTING, add_to_depth_testing_source, benchmark_results ) if __name__ == "__main__": benchmark_results = get_benchmark_results() combined_results = { 'date': benchmark_results['CoalescingBroadcast.json'].date, 'machine_config': benchmark_results['CoalescingBroadcast.json'].machine_config, 'results_dict': {}, } for result in benchmark_results.values(): for benchmark_name, benchmark_result in result.results_dict.items(): combined_results['results_dict'][benchmark_name] = benchmark_result # source = get_broadcast_source(combined_results) # source = get_async_source(combined_results) # source = get_push_source(combined_results) # source = get_time_n_tasks_source(benchmark_results) # source = get_no_delay_source(benchmark_results) # source = get_echo_many_arguments_source() source = get_depth_testing_source(combined_results) with open("saved_results.pkl", "wb") as saved_results: pickle.dump(combined_results, saved_results) ipython-ipyparallel-14e3c43/benchmarks/benchmark_results.ipynb000066400000000000000000024316251520071063500247570ustar00rootroot00000000000000{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "ename": "ImportError", "evalue": "cannot import name 'get_broad_cast_source' from 'benchmark_result' (/Users/tomo/ipyparallel_master_project/benchmark_result.py)", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mImportError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mpickle\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mutils\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mseconds_to_ms\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mms_to_seconds\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 8\u001b[0;31m \u001b[0;32mfrom\u001b[0m \u001b[0mbenchmark_result\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mget_benchmark_results\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mget_time_n_tasks_source\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mget_no_delay_source\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mBenchmarkType\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mSchedulerType\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mget_broad_cast_source\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mget_echo_many_arguments_source\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 9\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mbenchmarks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mutils\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mecho\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 10\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mbenchmarks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0moverhead_latency\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mecho_many_arguments\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mImportError\u001b[0m: cannot import name 'get_broad_cast_source' from 'benchmark_result' (/Users/tomo/ipyparallel_master_project/benchmark_result.py)" ] } ], "source": [ "import pickle\n", "\n", "import altair as alt\n", "import pandas as pd\n", "from benchmark_result import (\n", " BenchmarkType,\n", " get_broad_cast_source,\n", " get_echo_many_arguments_source,\n", " get_no_delay_source,\n", " get_time_n_tasks_source,\n", ")\n", "from IPython.core.interactiveshell import InteractiveShell\n", "from IPython.display import Markdown, display\n", "from utils import ms_to_seconds\n", "\n", "InteractiveShell.ast_node_interactivity = \"all\"" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# benchmark_results = get_benchmark_results()\n", "with open('saved_results.pkl', 'rb') as saved_results:\n", " benchmark_results = pickle.load(saved_results)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## ipyparallel benchmark results ##" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### time_n_tasks ###\n", "The first benchmark comes from benchmarking the runtime of sending\n", "n tasks to m engines. Where the each task is just the echo function. " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "??echo" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/markdown": [ "### With a delay of 0.0s. :" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/markdown": [ "#### 16 cores:" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "ename": "KeyError", "evalue": "'direct_view'", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[0mdisplay\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mMarkdown\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mf'#### {core_num} cores:'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m alt.Chart(\n\u001b[0;32m----> 8\u001b[0;31m \u001b[0mpd\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mDataFrame\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mresults\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'direct_view'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 9\u001b[0m \u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmark_line\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpoint\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mencode\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 10\u001b[0m alt.X(\n", "\u001b[0;31mKeyError\u001b[0m: 'direct_view'" ] } ], "source": [ "source = get_time_n_tasks_source(benchmark_results)\n", "for delay, result_for_delay in source.items():\n", " display(Markdown(f'### With a delay of {ms_to_seconds(delay)}s. :'))\n", "\n", " for core_num, results in sorted(result_for_delay.items(), key=lambda key: key[0]):\n", " display(Markdown(f'#### {core_num} cores:'))\n", " alt.Chart(pd.DataFrame(results['direct_view'])).mark_line(point=True).encode(\n", " alt.X('Number of tasks', scale=alt.Scale(type='log')),\n", " y='Duration in ms',\n", " color='Number of engines:N',\n", " tooltip='Duration in ms',\n", " ).properties(title='DirectView', width=800).interactive().display(\n", " renderer='svg'\n", " )\n", "\n", " alt.Chart(pd.DataFrame(results['load_balanced'])).mark_line(point=True).encode(\n", " alt.X('Number of tasks', scale=alt.Scale(type='log')),\n", " y='Duration in ms',\n", " color='Number of engines:N',\n", " tooltip='Duration in ms',\n", " ).properties(title='Load Balanced', width=800).interactive().display(\n", " renderer='svg'\n", " )" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/markdown": [ "### With no delay and 100 engines:" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.vegalite.v3+json": { "$schema": "https://vega.github.io/schema/vega-lite/v3.4.0.json", "config": { "mark": { "tooltip": null }, "view": { "height": 300, "width": 400 } }, "data": { "name": "data-8ef75365ba7fbf4f4d54fa282803fabe" }, "datasets": { "data-8ef75365ba7fbf4f4d54fa282803fabe": [ { "Duration in ms": 8.65, "Number of cores": 16, "Number of tasks": 1 }, { "Duration in ms": 21.92, "Number of cores": 16, "Number of tasks": 10 }, { "Duration in ms": 162.5, "Number of cores": 16, "Number of tasks": 100 }, { "Duration in ms": 167.11, "Number of cores": 16, "Number of tasks": 1000 }, { "Duration in ms": 175.12, "Number of cores": 16, "Number of tasks": 10000 }, { "Duration in ms": 5.46, "Number of cores": 64, "Number of tasks": 1 }, { "Duration in ms": 17.3, "Number of cores": 64, "Number of tasks": 10 }, { "Duration in ms": 117.17, "Number of cores": 64, "Number of tasks": 100 }, { "Duration in ms": 124.92, "Number of cores": 64, "Number of tasks": 1000 }, { "Duration in ms": 123.48, "Number of cores": 64, "Number of tasks": 10000 } ] }, "encoding": { "color": { "field": "Number of cores", "type": "nominal" }, "tooltip": { "field": "Duration in ms", "type": "quantitative" }, "x": { "field": "Number of tasks", "scale": { "type": "log" }, "type": "quantitative" }, "y": { "field": "Duration in ms", "type": "quantitative" } }, "mark": { "point": true, "type": "line" }, "selection": { "selector018": { "bind": "scales", "encodings": [ "x", "y" ], "type": "interval" } }, "title": "Ran with no delay on 100 engines Direct View", "width": 800 }, "image/png": "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", "text/plain": [ "\n", "\n", "If you see this message, it means the renderer has not been properly enabled\n", "for the frontend that you are using. For more information, see\n", "https://altair-viz.github.io/user_guide/troubleshooting.html\n" ] }, "metadata": { "application/vnd.vegalite.v3+json": { "embed_options": { "renderer": "svg" } } }, "output_type": "display_data" }, { "data": { "application/vnd.vegalite.v3+json": { "$schema": "https://vega.github.io/schema/vega-lite/v3.4.0.json", "config": { "mark": { "tooltip": null }, "view": { "height": 300, "width": 400 } }, "data": { "name": "data-aefbecf3b496de08d63e3cce8ef948ff" }, "datasets": { "data-aefbecf3b496de08d63e3cce8ef948ff": [ { "Duration in ms": 44.42, "Number of cores": 16, "Number of tasks": 1 }, { "Duration in ms": 119.48, "Number of cores": 16, "Number of tasks": 10 }, { "Duration in ms": 721.43, "Number of cores": 16, "Number of tasks": 100 }, { "Duration in ms": 4697.6, "Number of cores": 16, "Number of tasks": 1000 }, { "Duration in ms": 31541.52, "Number of cores": 16, "Number of tasks": 10000 }, { "Duration in ms": 30.72, "Number of cores": 64, "Number of tasks": 1 }, { "Duration in ms": 84.54, "Number of cores": 64, "Number of tasks": 10 }, { "Duration in ms": 594.61, "Number of cores": 64, "Number of tasks": 100 }, { "Duration in ms": 2660.3, "Number of cores": 64, "Number of tasks": 1000 }, { "Duration in ms": 26590.76, "Number of cores": 64, "Number of tasks": 10000 } ] }, "encoding": { "color": { "field": "Number of cores", "type": "nominal" }, "tooltip": { "field": "Duration in ms", "type": "quantitative" }, "x": { "field": "Number of tasks", "scale": { "type": "log" }, "type": "quantitative" }, "y": { "field": "Duration in ms", "type": "quantitative" } }, "mark": { "point": true, "type": "line" }, "selection": { "selector019": { "bind": "scales", "encodings": [ "x", "y" ], "type": "interval" } }, "title": "Ran with no delay on 100 engines Load Balanced", "width": 800 }, "image/png": "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", "text/plain": [ "\n", "\n", "If you see this message, it means the renderer has not been properly enabled\n", "for the frontend that you are using. For more information, see\n", "https://altair-viz.github.io/user_guide/troubleshooting.html\n" ] }, "metadata": { "application/vnd.vegalite.v3+json": { "embed_options": { "renderer": "svg" } } }, "output_type": "display_data" } ], "source": [ "no_delay_source = get_no_delay_source(benchmark_results)\n", "display(Markdown('### With no delay and 100 engines:'))\n", "data = pd.DataFrame(no_delay_source[BenchmarkType.TIME_N_TASKS_NO_DELAY]['direct_view'])\n", "alt.Chart(data).mark_line(point=True).encode(\n", " alt.X('Number of tasks', scale=alt.Scale(type='log')),\n", " color='Number of cores:N',\n", " y='Duration in ms',\n", " tooltip='Duration in ms',\n", ").properties(\n", " title='Ran with no delay on 100 engines Direct View', width=800\n", ").interactive().display(renderer='svg')\n", "\n", "data = pd.DataFrame(\n", " no_delay_source[BenchmarkType.TIME_N_TASKS_NO_DELAY]['load_balanced']\n", ")\n", "alt.Chart(data).mark_line(point=True).encode(\n", " alt.X('Number of tasks', scale=alt.Scale(type='log')),\n", " color='Number of cores:N',\n", " y='Duration in ms',\n", " tooltip='Duration in ms',\n", ").properties(\n", " title='Ran with no delay on 100 engines Load Balanced', width=800\n", ").interactive().display(renderer='svg')" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "jupyter": { "source_hidden": true } }, "outputs": [ { "data": { "text/markdown": [ "### With no delay and non-blocking map on 100 engines:" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.vegalite.v3+json": { "$schema": "https://vega.github.io/schema/vega-lite/v3.4.0.json", "config": { "mark": { "tooltip": null }, "view": { "height": 300, "width": 400 } }, "data": { "name": "data-601f18975bb233a6a79bba11c16ea9ca" }, "datasets": { "data-601f18975bb233a6a79bba11c16ea9ca": [ { "Duration in ms": 1.14, "Number of cores": 16, "Number of tasks": 1 }, { "Duration in ms": 7.56, "Number of cores": 16, "Number of tasks": 10 }, { "Duration in ms": 74.67, "Number of cores": 16, "Number of tasks": 100 }, { "Duration in ms": 81.59, "Number of cores": 16, "Number of tasks": 1000 }, { "Duration in ms": 76.41, "Number of cores": 16, "Number of tasks": 10000 }, { "Duration in ms": 0.97, "Number of cores": 64, "Number of tasks": 1 }, { "Duration in ms": 7.07, "Number of cores": 64, "Number of tasks": 10 }, { "Duration in ms": 70.4, "Number of cores": 64, "Number of tasks": 100 }, { "Duration in ms": 72.49, "Number of cores": 64, "Number of tasks": 1000 }, { "Duration in ms": 71.21, "Number of cores": 64, "Number of tasks": 10000 } ] }, "encoding": { "color": { "field": "Number of cores", "type": "nominal" }, "tooltip": { "field": "Duration in ms", "type": "quantitative" }, "x": { "field": "Number of tasks", "scale": { "type": "log" }, "type": "quantitative" }, "y": { "field": "Duration in ms", "type": "quantitative" } }, "mark": { "point": true, "type": "line" }, "selection": { "selector020": { "bind": "scales", "encodings": [ "x", "y" ], "type": "interval" } }, "title": "Ran with no delay on 100 engines Direct View", "width": 800 }, "image/png": "iVBORw0KGgoAAAANSUhEUgAAA7YAAAFsCAYAAAD4wCX4AAAgAElEQVR4Xux9CXxeVZn+c+6XpEkXdkoKbVWKu4wLIu7DMIJDaREXoCg644oLMq40pahVKQ0wKrjvC7IUdAShBbdxGx1FxWVG/Y+iyNBCt7DTpk3y3fP/PV/uhY+Q5L5nuScncO7v11/a5Hne7b4n/Z77nnuvQjpSBVIFUgVSBVIFUgVSBVIFUgVSBVIFUgVSBaZxBdQ0jj2FniqQKpAqkCqQKpAqkCqQKpAqkCqQKpAqkCqAJGxTE6QKpAqkCqQKpAqkCqQKpAqkCqQKpAqkCkzrCiRhO61PXwo+VSBVIFUgVSBVIFUgVSBVIFUgVSBVIFUgCdvUA6kCqQKpAqkCqQKpAqkCqQKpAqkCqQKpAtO6AknYTuvTl4JPFXhYVWC831c6ggrMBNAJYDuAkQji8RkCax5DjX3mFJut3YDWbUF3BQ5s7Hoa7zxPVWwsRRnf2LjK73PN9QDYCWBX4Nold6kCqQKpAqkCEVYgCdsIT0oKKVUgVWDcCvwEwHPG/GQrgG8DeDuA26aobl8H8FIA/wDghwD+CcB8AFcUMV0O4HgATwdw/RTFWLp9LoD/LGJ7SUUspwD4NICVAM6e4rir3M8G8CMAvwDwpjbwwQDeD+DJAP4E4MMAvlf8fE8A/QBYkzsArAXw8SpHNfy8FG4zAAzVYH88k3tNsF64lk4F8JeCVGdsfwfgGQCuA/A/Y4I8GcBXAfwZwGPbfnYGgNUAuKZ+XJyv9wH4QKC6JTepAqkCqQKpAhFXIAnbiE9OCi1VIFXgARUohS0/fN8CoAvAUQDmFuKWgnIqDgqppxai6X8BXAVgKYCnAfgNgCsBvAjAYYXwmooYS5/PKwTBNwEcVxHIGwF8CsCZhZiYyrgn8r0IwBEA/rm46HEtgMVtwvX/AMwB8N8AKKR4UOTy3z8AcDiAGwEcWPyMYv6zgRP9KIBuAG8OOPFvF7ZfBJABeByAZxa5l71bZ2y8GMULDW8d54LCHsXFBobDuHhRggcvDDE2rqd7ASwDcHXxJ/BpS+5SBVIFUgVSBWKrQBK2sZ2RFE+qQKrARBUohe3fF+KMOApbCl0e/HBOsdsHgNNIfnjnNOgyAF8D8DIAbwFwDYBDARwC4D8ArAHwtzFOjwawohA/nAi9HsArAXwDwPnFVOuE4u8UtYzpXwEcWQhBiqmfAnhnYYcfxDk5fHERF8Xv6cX25XbXjy6EFeOeVYi03wGgwOA0uPyg/28Ang9gsJhUvgvAzeMUjls16ZcT5TuLfN8NoBS2jHNVm8jlNJe2BgCMFbas1weLulEw8nxw4smJGqdoFIj/UsTwtuIcfLKYhLaHxkkpJ8BLAOwO4LfFVJi+efD8cHLJiRwF6z0Avgzg8+PkR2FzQbEllbm0C9vXAfhcIZoonjiJ/Fghpvj9/1cIXPbCEwH8uvg3he/YgwKafcLzvLm4WMFacOs5v3Lqyx7jZJ4XWlhfThG5TZbTe/YML2z8AcB3inqfC2AdgG8B4HZ2CvRHVZx/9jjFN3OjXQo9Xnhg7DzYt5x2vqDtogqn7mOPdmHb/jngE4XAZi7s7/bYKDB5Phk/c6QI5sSVcb8HwBMA3ACANi4tHO4N4KxinbL/uFYZD+vNmjymmMqyFl8YEyTXLWOgACZ2QdHj7Id9ARwDgH1GYc7+mKiX+TuB03gKYV70YMxcPzcBeBUAXuxh/3J9vXecWqVvpQqkCqQKpApMkwokYTtNTlQKM1UgVaAlpLgVmQLz58WUi0KVAuz7AP4RwGsLAUSRRWFJLI+Dig+1FIg8+HN+OOaHYYqd08bUl0KG2zG51Xm/QmxRNNDvswpRx1ie1CYcuRX58YVQ5Ad/TpIoivmHwpYHPzxzSsiD2yopltoPiuRSpPAD/LZimlhuydyniL2cQnILLqeNjJOiaMcYe8yNgo7HHwvxwb+XwrbcJk37txdihX+nSKGYLye2FLC3FoKGW6wpqigIKShYu7sLH/w+p+l/LeJqn7YRwv9zuGWYYoIxUwiV28vLSWr7PZWsBSd0PA4oYhiTYuuftMH+aBe25xQXDyj0Li5y+xmA9UVeFJUUuG8oLoo0C8MUj+0x8AIDJ/HMjedvYZEba8MpazmRJ709Xl5I+fe2yfDG4sILe4MHxSnFXPt231Jg8+fjnX/6o3Dkz5gve5IHL4jwHm+eI/Y2/Z5UxDzeFviJhC0vvPDiTdn37bHRDtdUeTAfXpzghQkerCsvtrA3ecGBvcWLFTw37D3er8saska8eEJxyXP7y+JiA8Vn+0HbXEO0Qbs8T59pu1DBtc+t4+VW5Il6mTVlT7LuXNe86HVe4YgxMRYKWv4eof10pAqkCqQKpApM0wokYTtNT1wKO1XgYViB8e6xLQUAPyBTiHILMMUlxVNHManhh2lOsCjWKGz5YZmi4xHFtKj8ED+2pNz+yIkScb8vPrATQ1FAEcgP9pwijb3HdqKtyJzQ8gM1BSO3u3LSRCHefpTCljHxAzmnXOWHcsbC/D7UJkwbxfZm5l8KuNIeH65T3rNZihtO0ig6KGwpkmibB2vGB/Dw/lMKZV4koL9S2HLKxlg5yaW4oS9OCvl3Tiu/VExrKT64xZeCtbwI0J4f46CQoTCj0OBEk9M6TpFLkVmKKQqi/wJwYXGB4jWFn/FafzxhS9FITikwKZwpwuifgp922y9qlH4pdhhfeXAKW4o0TpA5haQNHsTyXlBeuOBOAYrpVxfnlt/nxJ7nkmKTF0EonsnltujJhO1E559inOeF4oy5UJBxSs6pO3uUvUhfnIjzogjv2+WFCk7924+JhC37iFPgKmHLSSovcHykuHDCvCkKX1j0DPuC/UW/XCcU3sydFxi47foVRf4TbUVmrIydOVAo8yIUzxeFfNkX7cKW0/zJepmCnRd4KPZZO55THpzAc0cDLzY9EgB3IqQjVSBVIFUgVWCaViAJ22l64lLYqQIPwwqUwpZihKKTk1SKCArXUlRQvFCE8MN/+8EtwhRvFLbLCzFFUcIn0VLE8O9jD04pieXDk7hVkVtLKSQowihQ+aGcwkUqbMsP5NxCSYFyUdtEufRdCltu2SzvGeYDkTgdpTDih3NOljglZR14lJPJsQ/R4Qd1brFuz4/31VKQUNgyP04wxztYVwqQUthyssyc3zEGXApbXjj4bjEx5eSOk7TxJmAU1RTX7ff4lvUoJ3OlwKRoz4upNs/vZBO18YQtzw+3sZa8MkbWlnlx0speObHYCsyJJw9eECmnt/w3L0iwxuMdFGycPFLYcpJPMU/xxe3UtM1cWe9LCjFHGxSD3EI7mbAd7/xTDPPe4PEOimje683t2+WEmzieH16QKO9RLbkTCVvWgpPTMt7xJrbleaItblWmmB17UBjzAg7P80T3c092j21pr9xxwL5nT1Ek80IT+6Jd2HJ79GS9vKU4J7THHHlRiT3FLdTcSs66jrcFfYJyp2+nCqQKpAqkCsRYgSRsYzwrKaZUgVSB8Sow3j22vK+V99+VH545IaIA4D2V/LBPkUXR0y5sufWQU88qYctpDreeUhhyarR/sdWz/DfvLeR0Uipsy4dHSYQt4+ZWTB7twpaTJ34Q5zSSwqhdXHBayqlnebQ/gIdbmPnU6PZ6UZRzys18eP8sp7vEUdBSCHHSWQpbfvDnJJpfOfViLShkS2FLMVhOljmRpBDnlI0T3vaDW0o5TS+n3fwZLx5QZI8VU+X/TxTVNsKW4pEiknxu++Zkk5NlTsv551fF9JT3XHKrOqfM7XGVcfM+zK8U2905AebBbdGMj+eG96O2PxysXdhSFPNeTm7FpXDiPbnl+ZxM2E50/rnlnpNu9ka5i4D3KVO4cULPHQQ8f8yHU1GKXK4D5tB+jCdseZ8vRSs5FKWcgo4nbNuFajmpL3uSMfCCEyfxfNI0t6Rz6zH7i1u8OR3lPa+8CEMhPtnElvGWFyzK2Nsv3rQLW06CJ+tlbtHnhYty7VKM8yIVf1dwbacnK6f/c1IFUgVSBR4CFUjC9iFwElMKqQIPkwqMJ2zLCWQ5RSqfmsptkLz/lNtcefCDLB9yxImtVNjyA3j5fszyw3lpnx+QKQIpBscKW96jSAFKwU1hRZ/twsdF2FIY8X5PHhS3fDjUy4t/U2xuGtMLfDgWBTgFKad55f22FCd8oBS/zy3avFeWW1bL1/pQuB3bJmyZP6eQnEhShFJo8uFB7duNSwHKEDilHO91QtxeSpHH7c68H5a5cHLHgw/24fdKMeUqbOmDwornisKFk1tO8ik8OeHjtlNO+zmJp/DieSlFcHsZy8k3v8ft171FHVkTCnie74mELaeDpZBlrdhT5UTVRtgyB55DXlCgoGafMyf6p21+j354Hy5j42SfIp4PnJpI2FJEk8uLPzwo7snlQ7KqhC0vftAnJ7TsHdaWa63czVBeaOKklMKZ0+PyfvjyYV6cTvP88IFpYw+K4fI88Wft92y3C1vuqJisl3nvMXdJ8BzzoLDnBRX+4cGLG+X28nHCSN9KFUgVSBVIFZgOFUjCdjqcpRRjqkCqACtQCltO/con6FJclVsQee8jf8Z78TiF4Qd0vh+TH7Z5DyLvi6XI5KSSH7yJ4UOPJtqKTJ/lk1kpUsutk/zavrW0FLa8T4/TSE40+XMeFByc8vFr+eG5FLbjTdLKrcgTTez4VF0KUk7KGD8Pxk8hTRE79uADpfiBnuKVB7fHlvdHUnhS7DMOCpnSFh+4ReHb/h5bXiDghLZ88BWFMCeg9E3hx9rynbHlVlnaprgd7yCONWvfLl6eE+LHClsKJj6herKtyM8uxF77w6Noq8yhjIOTem4lpw9O0JlTWUcKLsbN7eljD54zbl8tH/xEcc77NPm1fHhUeX65hZxxlNucORXk/afsVQrS4aKO3O7NOrIHGQNFf/nwqInOP0UebZUXMxgne5vinFu3GWP5wDT+jPHxyeHl/adlXuO9x7Z8JzS33m8ogO2xUZBzrY3dWly+W7a0zfPOnuf94byowvqUNebFE17A4AUH5lpOoEshPF6/cMrL6SqFJ2tcHqWw5c84MZ6sl9t7gTWh7/KiGPOeV2xvnqBl07dTBVIFUgVSBaZDBZKwnQ5nKcWYKpAqYFIBTp/45Fp+eG5/uq2JDVcsJ6l8mi5FEoWM74Nbf/mEV94Lyvto2+8JHeuLUy9OL7ktmGJj7MH/Bzi55ESNNeNUeKKDOIqd8inI7ThuiaX99gdDTWSn9Mnt4PTJrat1Hdyay1rxdUjtD4WiP4pBbtvleeKEcrKjrDlfsUThJ+ktbgfntmHWlGKevUnRygsELlNCXsShGOODosY+CZuvUyrPN+Pk/ah1H+x1XkThjgFueW8/uD2Z8XD3A4V5e91YU9aIOYzNwyZmk162sZ84qQKpAqkCqQIRVyAJ24hPTgotVSBVIFVgmlSA00s+3IcTTW5V5oQ1HaP3lXILePnKG94Dy+klp4S8+FJudU+1ShVIFUgVSBVIFUgVcKxAEraOBUz0VIFUgVSBVIHW9mje78nXBfGBU+NNhh+uZeJTfLk9ndvkKXT50CduiR57P/TDtT4p71SBVIFUgVSBVAEvFUjC1ksZk5FUgVSBVIFUgVSBVIFUgVSBVIFUgVSBVIGpqkAStlNV+eQ3VSBVIFUgVSBVIFUgVSBVIFUgVSBVIFXASwWSsPVSxmQkVSBVIFUgVSBVIFUgVSBVIFUgVSBVIFVgqiqQhO1UVT75TRVIFUgVSBVIFUgVSBVIFUgVSBVIFUgV8FKBJGy9lDEZSRVIFUgVSBVIFUgVSBVIFUgVSBVIFUgVmKoK1C1s+QRIvs9x+5gE+c47vgswxPv1pqq2yW+qQKpAqkCqQKpAqkCqQKpAqkCqQKpAqkCACtQpbE8vXkDfLMTtvxSvOrikeFk9X4FwHoAvB8gzuUgVSBVIFUgVSBVIFUgVSBVIFUgVSBVIFXiIVqAuYUvRelMhaHcCuBDA/wBoFC+nXwmgt3iPH6e3Ox6i9U1ppQqkCqQKpAqkCqQKpAqkCqQKpAqkCqQK1FyBuoTtbAC3Ativ2HL8LQB/BTADwPcArAVA39yKvAjAjTXnmcynCqQKpAqkCqQKpAqkCqQKpAqkCqQKpAo8RCtQl7BluT4P4KkA/gLgBABnA3g0gMsBfL2o5xYAh3G6u2bNmlVKqfe113nffffF4Ycf/hAtfUorVSBVIFUgVSBVIFUgVSBVIFUgVSCyCuhFixbxOUHpeHAFOopB5djnJ0VRqzqFLRN8JoAFxdffAngUgLsBnF9sS74DwB4TPUSqv79fL1++/GHTWDfeeGN+4IEHRpFviFh8+3C1Z8M35UjxEpwEE8VvGU9BxJRviFh8+3C1Z8M35UjxEpwE46k1ozATU74hYvHtw9WeDd+UI8VLcBJMFI3tKYiY8g0Ri28frvZs+KYcKV6CI2bRokU+NNKzAfwUwJ8BHAxgCMDxxZDvhQC+46HFNxS3ey72YKvKxBsBfArADwH8QxV4Kn7u46SNF3dXsfWYJ5Ti9XoALwLwGACnAjiqOLHvAPCsiRKnsO3r66srxqmo96Q+//rXv/IKURT5hojFtw9XezZ8U44UL8FJMNE1uUNAMeUbIhbfPlzt2fBNOVK8BCfBOLRjdNSY8g0Ri28frvZs+KYcKV6Ck2Cia3KHgGLKN0Qsvn242rPhm3Kk+Cqc1lrVIGzZvW8F8PEahC13v/4GwD85LBEp9ccAngLgJcWtpVJeMFydIuo9AF5WPCTqYwDOKh4mdQ2AJxR/PxLAdUnYjlagarEF64pAsfjO19WeDd+UI8VLcBJMyJ6p21dM+YaIxbcPV3s2fFOOFC/BSTB192xI+zHlGyIW3z5c7dnwTTlSvAQnwYTs37p9xZRviFh8+3C1Z8M35UjxVbgahe09xc7VI9omtnyo7vsBnAbg5wB4S+YxxdDvXQCOA/AjAK8A8DMA3wBAfcXjFAA/AUBhOwDgBgCHFIKT9ujv+QDeAoD3dXLKyr/zoBb7NoDnFreOXty2BucD+GTB4atZvwjgvQBWFLESyp+Xtkrqm4rhZXdh/4wihucA+AiAQ4vJ9QcBXATgBcVtqlcAOBnAsQAOGCde5rYMwJsBPLbI4+3Fs5we9KujTmFLZ3MAcC82p7btB7cnbwYwPNkvszSxrftX/cT2qxa+j8h8+3C1Z8M35UjxEpwE4+M8xWIjpnxDxOLbh6s9G74pR4qX4CSYWHrbRxwx5RsiFt8+XO3Z8E05UrwEJ8H46MtYbMSUb4hYfPtwtWfDN+VI8VW4moTtuQD4GtSPFmKUzxviVuS5AL5a/J3bkr8EgK9H7QTAoSC3/q4HsBuA5xVCkXiKvF8Wr1WlsKUdbnnet9gdy58TR3HL7/MhvhSUFLOvAXBLsTb58N7XAfhB21qlyH05gHMAPK7YcctnJVFg8uG/3E5dxlXS+CBgPlNpI4CrivjeXQhaPkyYB6fVHHj+HQCKZ+7qZR14UNS/shDnY+N9PYCbAXytEMys0acBUEgHF7ZOv9OSsHUqnxO5auE7GS/Ivn242rPhm3KkeAlOgvFxnmKxEVO+IWLx7cPVng3flCPFS3ASTCy97SOOmPINEYtvH672bPimHClegpNgfPRlLDZiyjdELL59uNqz4ZtypPgqXE3ClmKSzxnitJUCk1+lwnYvAAcB+AWA5QAoknmLJ8Uh3z5DYcthIR/Yy1tBtxZC8XOFcKR4/BOAVxccTj35bwpmToRH2tYp32pDMUzOicXuWr6S9ZsF9g8A+NCoZ4xZ25ygfrgQ1ZwcH13gOEDlpJhC+DMAOL3llJkTZcZMP32FiC7vPZ4oXrpkHLwAQPF9VxK2sfyGnSCOqsUWMvwQsfj24WrPhm/KkeIlOAkmZM/U7SumfEPE4tuHqz0bvilHipfgJJi6ezak/ZjyDRGLbx+u9mz4phwpXoKTYEL2b92+Yso3RCy+fbjas+GbcqT4KlyNwpaCjRNSTld5UNjuDeASAHzw07XFW2NeOmZiS7HJiejv2u7TpcidVzygl8KWk1JuQ+YDaO8shC8FIN9IQ/vtr1W9sNgSvAYAtwu3H5z4Uhh/oZjkctft7YU9PixqImFLUUtxuz+ATQAeX+zK5VdOcDmN5fZjiu9fF8Ke4po1oQjmRJlbnceLl5Nj5vbatosBrNW4D8uqeyuy0++qNLF1Kp8TuWrhOxlPE9vKdSepvwTj4zzFYiOmfEPE4tuHqz0bvilHipfgJJhYettHHDHlGyIW3z5c7dnwTTlSvAQnwfjoy1hsxJRviFh8+3C1Z8M35UjxVbgahS230JZTyVLYcvrJCSbvM/3PYurJn7VvRZYIW4rldxZblnmfLh/OSxHKrccUtpyW8p5dTmf5EF9uReazj8r7dduXKu+/5b233M7MZyJRcPJ+3s9OImz/sbi3l9uFeR/wpcUbcCicKbw5xf1AMTXmw4SfWPwpt2RThPPBwuPFy+3b3CrNvIjnpJkCnNuzH3RUfsCeyl9KSdhOXfWrFr6PyHz7cLVnwzflSPESnATj4zzFYiOmfEPE4tuHqz0bvilHipfgJJhYettHHDHlGyIW3z5c7dnwTTlSvAQnwfjoy1hsxJRviFh8+3C1Z8M35UjxVbiahS111/eLBzNxYksxSyHJhztxC/DfintQKWwp6Hgf6XjClg+S4lZkPrOIwpH3ve5ePNvovwuRyO9z6zJFLoUv7XPr8f9WCNunF+KxnCx/txDk3PpLsczXto59ow23QFPQ8sFXPBgDJ7G8v5b3DFPUl8d5xf3G4732aLx4KWp5by/v8+XB6TRF+mVJ2MbyG3aCOKoWW8jwQ8Ti24erPRu+KUeKl+AkmJA9U7evmPINEYtvH672bPimHClegpNg6u7ZkPZjyjdELL59uNqz4ZtypHgJToIJ2b91+4op3xCx+Pbhas+Gb8qR4qtwnoWttLV5Hy2F56QP1a0wxm3IFKO8d7X94JOXFwLg+27b76edzBw5jyjuk6VAlh69AGYUD3vSbSQ+KZn2KHSZZ5Xv8eLdB8AsAP83GTlNbKWnKgCuarEFCOE+FyFi8e3D1Z4N35QjxUtwEkzInqnbV0z5hojFtw9XezZ8U44UL8FJMHX3bEj7MeUbIhbfPlzt2fBNOVK8BCfBhOzfun3FlG+IWHz7cLVnwzflSPFVuCkStnUvgYeN/SRsIzrVVYstZKghYvHtw9WeDd+UI8VLcBJMyJ6p21dM+YaIxbcPV3s2fFOOFC/BSTB192xI+zHlGyIW3z5c7dnwTTlSvAQnwYTs37p9xZRviFh8+3C1Z8M35UjxVbgkbOtejfXaT8K23voaWa9abEbGHMEhYvHtw9WeDd+UI8VLcBKMYxtERY8p3xCx+Pbhas+Gb8qR4iU4CSaqBncMJqZ8Q8Ti24erPRu+KUeKl+AkGMeWjIoeU74hYvHtw9WeDd+UI8VX4ZKwjWrpGgeThK1xyeojVC22+jw/2HKIWHz7cLVnwzflSPESnAQTsmfq9hVTviFi8e3D1Z4N35QjxUtwEkzdPRvSfkz5hojFtw9XezZ8U44UL8FJMCH7t25fMeUbIhbfPlzt2fBNOVJ8FS4J27pXY732k7Ctt75G1qsWm5ExR3CIWHz7cLVnwzflSPESnATj2AZR0WPKN0Qsvn242rPhm3KkeAlOgomqwR2DiSnfELH49uFqz4ZvypHiJTgJxrElo6LHlG+IWHz7cLVnwzflSPFVuCRso1q6xsEkYWtcsvoIVYutPs9pYssK2NTflCPFS3ASTMieqdtXTPmGiMW3D1d7NnxTjhQvwUkwdfdsSPsx5RsiFt8+XO3Z8E05UrwEJ8GE7N+6fcWUb4hYfPtwtWfDN+VI8VW4JGzrXo312k/Ctt76GlmvWmxGxhzBIWLx7cPVng3flCPFS3ASjGMbREWPKd8Qsfj24WrPhm/KkeIlOAkmqgZ3DCamfEPE4tuHqz0bvilHipfgJBjHloyKHlO+IWLx7cPVng3flCPFV+HqErbH9l361Bw4TEMdBmhkSv28qbLrrjn7hN9GtVimeTBJ2EZ0AqsWW8hQQ8Ti24erPRu+KUeKl+AkmJA9U7evmPINEYtvH672bPimHClegpNg6u7ZkPZjyjdELL59uNqz4ZtypHgJToIJ2b91+4op3xCx+Pbhas+Gb8qR4qtwdQjbJX1rT1XAh7VGBgW+I5batqkVcqX129edc9InKtZAB4AuADvacNRwewC4o+71M53sJ2Eb0dmqWmwhQw0Ri28frvZs+KYcKV6Ck2BC9kzdvmLKN0Qsvn242rPhm3KkeAlOgqm7Z0PajynfELH49uFqz4ZvypHiJTgJJmT/1u0rpnxDxOLbh6s9G74pR4qvwvkWtscsv+yFSulvTdbjWZYdddXZJ3x3HAxF8JMAvBZAE8DbC8xRANYA+AOA3QAsB/CnutfRdLCfhG1EZ6lqsYUMNUQsvn242rPhm3KkeAlOggnZM3X7iinfELH49uFqz4ZvypHiJTgJpu6eDWk/pnxDxOLbh6s9G74pR4qX4CSYkP1bt6+Y8g0Ri28frvZs+KYcKb4K51PYLl5++cGZyn8JYEZFjw/qDM9Yf/ay34/BzQbwAQBPB3B9m7DdAuAQABsBPB5AVojcupdS9PaTsI3oFFUttpChhojFtw9XezZ8U44UL8FJMCF7pm5fMeUbIhbfPlzt2fBNOVK8BCfB1N2zIe3HlG+IWHz7cLVnwzflSPESnAQTsn/r9hVTviFi8e3D1Z4N35QjxVfhfArbJSvWvgNanQNobiWe7OC25HetX7Ps/AlAbwFwUCFsZwLYDuAKAC8AcBGA0wHcW/c6mg72k7CN6CxVLbaQoYaIxbcPV3s2fFOOFC/BSTAhe6ZuXzHlGyIW3z5c7dnwTTlSvAQnwdTdsyHtx5RviFh8+3C1Z8M35UjxEpwEE7J/6/YVU74hYvHtw9WeDd+UI8VX4TnteCwAACAASURBVHwK26V9l12ioU8S9vfF6/qXnSwQthS4NxTbj78B4JMALiwErtDVQxeWhG1E57ZqsYUMNUQsvn242rPhm3KkeAlOggnZM3X7iinfELH49uFqz4ZvypHiJTgJpu6eDWk/pnxDxOLbh6s9G74pR4qX4CSYkP1bt6+Y8g0Ri28frvZs+KYcKb4K51PYLulb+xUAr5L0t4b+8vr+k14tELb7ANgGYHcAdxf2jwDwLxI/D3VMErYRneGqxRYy1BCx+Pbhas+Gb8qR4iU4CSZkz9TtK6Z8Q8Ti24erPRu+KUeKl+AkmLp7NqT9mPINEYtvH672bPimHClegpNgQvZv3b5iyjdELL59uNqz4ZtypPgqnE9he8yKtW9SGh8FMPlWZI0mlD51Xf9JnxYIW2q3mwG8AQAfSvUZANcB+ELd62g62E/CNqKzVLXYQoYaIhbfPlzt2fBNOVK8BCfBhOyZun3FlG+IWHz7cLVnwzflSPESnARTd8+GtB9TviFi8e3D1Z4N35QjxUtwEkzI/q3bV0z5hojFtw9XezZ8U44UX4XzKWyXnLH2acjVdVX32CpgWEEfdlX/Sb+ZRNguAvCO4ue8t/aC4onI/wXgTQBur3sdTQf7SdhGdJaqFlvIUEPE4tuHqz0bvilHipfgJJiQPVO3r5jyDRGLbx+u9mz4phwpXoKTYOru2ZD2Y8o3RCy+fbjas+GbcqT4yXBLll/2FpXpI/7uEXu+5L9vuuMtV/cv4/15D/lDWrsQhQgRi28frvZs+KYcKb4K51PYsp+WLl/7Vq1aU9uJD61OXXfOiVXvsh3Lp4bbMwnaB5YlCdsQv8WEPqoWm9CMF1iIWHz7cLVnwzflSPESnATjpRkiMRJTviFi8e3D1Z4N35QjxUtwEkwkre0ljJjyDRGLbx+u9mz4phwpfiLcMSvWvk1pfOQBDafxtnXnLOPk5yF9SGsXogghYvHtw9WeDd+UI8VX4XwLW/ZU8S7bq6DRgALfTQu0th9jBMCx6/qXfSdE7z0cfCRhG9FZrlpsIUMNEYtvH672bPimHClegpNgQvZM3b5iyjdELL59uNqz4ZtypHgJToKpu2dD2o8p3xCx+Pbhas+Gb8qR4m+44S/6bV+4blGmOhcAzYV5jgWAWqgUXgJg3wcKW3UnlP5PrbFVKb1V53prljW26Czf2mg2turGyNandZ20bdUqlYfsZ9++pLXz7Xc8eyFi8e3D1Z4N35QjxVfh6hC27IMXLb/84GaWH4kchyqlNIBf5pn+7jjvrg3Rhg9ZH0nYRnRqqxZbyFBDxOLbh6s9G74pR4qX4CSYkD1Tt6+Y8g0Ri28frvZs+KYcKV6Ck2Dq7tmQ9mPKN0Qsvn242rPhm3JK/LFnXLIflFrQHG6J1QUAWl81sBBo/Xv/GnqPT2HdqjS2akURjK06V1u10lszpbbmeb61oRpbd2hs+945J9xVg38nk6a1dnJWQQ4Ri28frvZs+KYcKb4KV5ewrbOnku37K1C3sM0AzAJwz5ii83uDACa9Atjf36/7+vrqjjGafqhabCEDDRGLbx+u9mz4phwpXoKTYEL2TN2+Yso3RCy+fbjas+GbcqR4CU6CqbtnQ9qPKd8Qsfj24WrPhj8e5/hVl8/esSNfAEXRqkcnrdALNNTCfXebccS2u3fuBNA9WW81MoVmnt8IKD45dYPSegMydXOu8Uw19pUgSn1CI/+O0mqu1nquUmquhp7Lf0NhLoC50ODfxZ/FNPROpdQWcAqMUfGr9OhXimFOhvMs25opbGvePXvg2o8t3lX3WrE5P3XFFCIW3z5c7dnwTTlSfBUuCdu6Oj+MXfEvKotw+D6lYwHcWzy1i+9m4r7yS4DWnvJHADgPwJcnsp2ErUXVPVGqFr4PN759uNqz4ZtypHgJToLxcZ5isRFTviFi8e3D1Z4N35QjxUtwEkwsve0jjpjyDRGLbx+u9mR8rRa/85KFWUfnAoXmwiWHLbj4ql9s/KQanbIuBNR8QO8t6IfNUOpmaL1BaWzg37XKN+TAhm7VdfN5r33KrYsWLRr3893SvrUrNfSRB83b7e//uumeM6/uX7Za4A9HvevCuZ1dXXOzPJ+b62yuyvRcINtXaT1XKzUXmv9uCWAK4d0kNu/DKNxOEaxbE2G9VSu1VUFv1VptzVS+NW+qrVmH3oYhDFz9oZcPGNkuwLLzY2PZnBMiFt8+XO3Z8E05UnwVLglb856OiVGnsN0CgI+j/p/iPUt8vxIfVT0HwEoAvQA2FRPdHeMVJQnbqWuVqoXvIzLfPlzt2fBNOVK8BCfB+DhPsdiIKd8Qsfj24WrPhm/KkeIlOAkmlt72EUdM+YaIxbcPV3vkv+2T1+2rOtWCEa0WZsUWYfCrLkSr1guqJp8auEsBGzhp1dAbMqibtcYGrdWG95508Pf/7Zu/n/G1VScMTdYzklwkGNu+PPqt18xQuw32NprDhQjOR6fBWs1VSs/VoBAuRDDFcNU7Ph8YyBCgtqKcAhcCuHV/sFJbs1xvhcJAA3pbZ3dj4GurTuBwBXXma1qnELH49uFqz4ZvypHiq3BJ2Jp2dFz4OoXt+wC8HMAfABwK4MkAzgXwPQBrgda2Fm5Fpti9MQnb9IvXdWlU/bKqsm/DN+VI8RKcBFOV83T6eUz5hojFtw9XezZ8U44UL8FJMNOp/6tijSnfELH49lFl7/i3X96zvTtfoHSxRVirhUC+UKtsgdL5ghmdHY/bNdysOE1qF5DfQtHKbcJHPmXeK7/721vfBJXdnOdqQ9eu7RuuPP/Vd05kpCrGkifBSTBVPefr58etumKP5q5mLzC0X2sazClwpka/FmIY94vhPUz8ti4UaL31wN45j75xyz1XtKbAGbZQBPNBWcjUgG6qgWZj18DAwI6B6z97yrCJfRtsiNr79uFqz4ZvypHiq3B1Cdvta/Z/Kpr6MCh9GJ8cpZT6eafOrutaectvbfooccavQJ3C9icA7gbwOwBvAXBU8WLhywF8vQiHU93DANy0Zs2aVUopiuEHHMcff3w6d6kCqQKpAqkCqQKpAqkCtVXgzu1DuPPeIdyxfQh38Gvxd36PP7tnsFrv7D6zE7vP6sKes7uw56wu7MGvrb/PaP2dP0+HWwW0Rutc3L1juPX1np3DuHdwpPX3e3cWX+/79zBGmpQQsiNTCrN7OjCnpxOzu4uvPZ2Y09OB2d2j35vVzb+Pfp05o0NmOKGmZQUm2s5vk8yOs3pPRYYPaw0+e2j0dT8Ar4Tl0HjbrDM3V71Pms8mInfsM4vYhHyXLR/ulo5ialpHIQ4CcAOAmcVDoihYdwfAK5EUu+cXJ/YOALz6Nu5DpNJW5DpOjcxm1RUtmZXJUb59uNqz4ZtypHgJToLxcZ5isRFTviFi8e3D1Z4N35QjxUtwEkwsve0jjpjyDRGLiY9j+i7es5GpBVpnC3NggcqxkFuENf8OzMfon66K83AHoDYCeiO3Cms+kInbhBtqQyMf2nDea591w2MffZDRsMAkB8YmxUtwEoyPvpxqG0tXXT0z3znU+/ZjD/rrR67+fy9tbYduTYRHt0bzQVmtafDoV8n9zW0pqXu4JRq6uCeYU2CttyreI5znA1qpAWQYQDMbUD13DFy96pTWbXchau/bh6s9G74pR4qvwvme2N67Zv+jVJ5/e7K1oJEfNXvl1u+Og+GD4ngrJzUUtdJvALQPAT8E4OBieDjVyy0K/0a/hA0ipqDdXBT7/wB8tjgZ3IJzanECOIp9B4BnTWQ3CVuDinuGVi18H+58+3C1Z8M35UjxEpwE4+M8xWIjpnxDxOLbh6s9G74pR4qX4CSYWHrbRxwx5RsiltLH8asu7xoeyRcM52ohRpoLlWos4BZhKD6I6T7RyonGZMfOfXbr7h64e+cPNfTGTGXFfa35hg40blY9nRuuXPXiCbcI24oV0zpJ8RKcBOOjL2OxIc33xSu+sfdInvfqxnAvctULjf20Ku4PBgVx8cCsUTHMz7oGh97K+4Mfs/9uT/rzLXevbd0nzPuFNQag8gGlG9tUpgay4Y6BJ8/+74FVq1ZZvztYmq80eFd7NnxTjhRfhfMpbO/t3+9g1VS/BDBjslorYLAJ/Yw5K7f8fgyOD+J9BoA3F8PIFwP4ZjHt5QN631jco85dsemocWLL4v4rgA8W4/GbACwrnpB8DYAnAOgBcCSA65KwHa1A1WIL2bEhYvHtw9WeDd+UI8VLcBJMyJ6p21dM+YaIxbcPV3s2fFOOFC/BSTB192xI+zHl6zOWF57x1XmdIzMWAM2FKssWQOuFOlPzH7nvrJfdtHU7J6gUsFUHL6pv5MSVr77RGSeu2KCVvrmjiQ1XnXvSra4x2/BNOVK8BCfBVBV1Ov28jnwPX/WDjp4dt/d2dupenY/0ao1eBezXejiW0nPBVyY9YCJsVLEdradEFxNhgA/F4kRYDfDhWOBEOMOAHlEDw1k2MPbdwb7zdbVnwzflSPFVOJ/CdsfZ894Brc/R1Q9Iayql3jXzjE3c0dp+fADA0wEcMvo7DGcCuBbAgQA+DeCs4ntJ2BZVq2tiW54Ubu3Zq5jetp8oPtqeE91Jb1pJE1ujX4JewVUL34cz3z5c7dnwTTlSvAQnwfg4T7HYiCnfELH49uFqz4ZvypHiJTgJJpbe9hFHTPlKYzn6rRft1jGzewEw0toanAMLM6j5Wun50PdNW3lv2cSHxu1QrQ983CK8kU8P1rq5AR2Nmxu52jC8ffOGaz92WuV7UqUxTxSIDd+UI8VLcBKMj76MxUYM+bLf1eyO3rctedyfzr/qjydmmepVyPbjE6MfKIApiDHbrHb6Nm6Jhhp9MNbzH7/vCf/5xy3vB9SA1hhQDb0NTTWAjmzA5t3BrvWz4ZtypPgqnGdhe4nW+iTJuVRKXzzzjC0nj8F+CcDzASwG8NTiNamPAfB9AK8tbudclbYi31+1uoWt5FxOiEnC1ql8TuSqhe9kvCD79uFqz4ZvypHiJTgJxsd5isVGTPmGiMW3D1d7NnxTjhQvwUkwsfS2jzhiypex9PVd3zG8qLlgSGcL+c5WbhFW0PM139Wq9Hyl1fzR+xsnPQaheU+r2qhb4lVvBLhNON/Q97KD131o/Q17Vm0RltbWtX42fFOOFC/BSTDS2k0HXEz5SmM59oxL9subWa9GsxcZt0WrXiDbT0HPVUq1XqF0//3B9z2QSHI6eKFna/mH9wRrrUcnwRTBSg3ovDmgeH9w8e5gacwPhQs/PoXtvat7v6KAV0lOiga+PHvl5lePwX4YAM/XiuL7fOjucgAUvNzizHtvKXR5y+cpEj8PdUwSthGdYddfHD5TCRGLbx+u9mz4phwpXoKTYHz2xFTbiinfELH49uFqz4ZvypHiJTgJZqp72qf/0Pke9a4L53Z2dC+gaIXKFug8X6AoWjMcsNfsGc+7/Z5dI5O/n1Tp0VffqI3QaqOC3lhuEc5ybFDQN3OLsM8PypPV27V+NnxTjhQvwUkwPvtzqm3FlG8dsRy+6kvd3Tu7ezt5XzDy3uOf/6grLv/JTe/XWvW2RDDFMDBXA/xKMWRy3DF39+49t9618z+VxrZRAVwIYYXWvcFoNAeyJgba3x3c7sAmZ1OOFF+F8ylst5/d+yZofFTwruZmrtWpc87cxO3F7ccrAbwewAuKZwb8DAAf0NtbgJ5SPK+Izy3izpWH/ZGEbUQtULXYQoYaIhbfPlzt2fBNOVK8BCfBhOyZun3FlG+IWHz7cLVnwzflSPESnARTd8+GtO8z36PedeGsGZ0zF2g9slApvUBrLNBazW89QViNTl0FH44HANzCaWuu9EaVq5ZwzXRzg0LHzcPbZ2+49mOLK7cIJ2F7fwWk51iCk2BC9m/dvmLKN0QsVT74pHDkjV5A9eqs2dvgV06EFVoPzGrdI4xsX63z/ZRSJu+p4gUtPhBrq4bmw7C2QauBxYfsf9r6X93y5pYobr07eHig2dADu7rmb/vhqn8g50FHVQ5jCVJ8Fc6rsP3AvEPQ0D+vFLYKw1DZYbNW3MqnHrcffOgUhTG3IvOp2nwi8to2AB8sxfts0z22RVGSsK37t6mB/arFZmDKGRoiFt8+XO3Z8E05UrwEJ8E4N0JEBmLKN0Qsvn242rPhm3KkeAlOgomovZ1DMcn3RSsvXaDzbOGIbi7MkM3nA5hawjXjva2tpwnvXxHQ9tFX34xOXJVSG/N8dJtwozGyYfXJT//dwU94TK2fL0zylRTX1Z4N35QjxUtwEoykbtMFE1O+IWLx6WPVqlXZsS9d1nzvhb89BB0UwDnFb2t7dMavrQdmYS4U5kK3nqtjcvAVoFsBvY33A48+IZoT4Xzg5X+/6JxLfnTTsRTCGBke0A0MrO9/BV8TOu4hzbkK51PYMtB7ztrvtEypCyqKcuqslZs/MQmGT3Znrfju23RMUoFa/+NxrXy6x9a1gvb8qoVvb/l+pm8frvZs+KYcKV6Ck2B8nKdYbMSUb4hYfPtwtWfDN+VI8RKcBBNLb/uIo8z3xSu+svcu1bNAUbSO3sc6H5ywaszX6r4HMvGtBBMdfMVI+TCmW/KWcNUb+RRhbhHWndmGdatP4FOGJzxC1N63D1d7NnxTjhQvwUkwPvoyFhsx5RsiFt8+TOxxx0dDdfV2tkQwWkL4hU874OPf/s2tn+cWWq11a3t08cAsvqdVdmhoKLUF0NwNMqCAbbolgvmk6HzgVYcvuuDCH9z4QjQ5Fd410DPUs+1rHzlhcKzxyXI59oxL/k7n2XPPf/2hn1i0aJE3jXTv6nkvVNBXAa17ofmHB0XqiM6zY2e/59bvyIqQUFUV8HbSqhzZ/DwJW5uq+eGY/BKz9ejbh6s9G74pR4qX4CQY23MTIy+mfEPE4tuHqz0bvilHipfgJJgY+3yymHgf3eyROQswNLxQN7L5mea24FHhesDeM5fcctsOfuDbpyKvbeWrbzhxHd0qrDZyi7Bu6g3NnXve7LJFmL5D1N63D1d7NnxTjhQvwUkw0219TPXFFmm9QtTetw9Xe5Pxl77zkn3yGVnx3uBma3u0Uqr36Qft/c5f3XDbf0Bpfo8PmttXWuMCt10D27JS/CJvieDFh85/2zW/2niKar02SQ2Mvjt458BI54xna62vIPeC1x8Kn8KWNnf173fw8Eh2JDI8HTmQKfyyify747y71jDNBG+vQBK2EfWD6y8On6mEiMW3D1d7NnxTjhQvwUkwPntiqm3FlG+IWHz7cLVnwzflSPESnAQz1T091v+xp1+6v4ZqiVaNvDVl5QNDNDB6f+von/Jq/3jh39s2bd2Yt+5x1a2twkp13NzMd22YbCufr3qEqL1vH672bPimHClegpNgfPVDDHZiyjdELL59uNqz4Y/HOeQNn+mcv+9uvXmzuCcYea/mfcFQvU951J5v/t3f7vgvoCWE9wMw+avCHtyYQwD4mtJahG0M6+DhEEMSthGdZZuFX1f4IWLx7cPVng3flCPFS3ASTF39MRV2Y8o3RCy+fbjas+GbcqR4CU6CCdnHx73tS3sMzZi1oNHIR+9nLe5r5f2tFK0UrwB2mzAmjSa4JZhbg7lVWOMWbhHmVuGsgQ3vP/HJP3va3z0+iv/TQ9Tetw9XezZ8U44UL8FJMCHXR92+Yso3RCy+fbjas+GbcsbDH73qot3Uro7WNLjBbdBZ3nvkk/e/4Lu/2fSl1oOy+D3oXjX64Kz7fn/WMbGtu8eT/dEKRPGf4EQnI21Fnro2Nf2FYhOpbx+u9mz4phwpXoKTYGzOS6ycmPINEYtvH672bPimHClegpNgfPU6pwi9e+2zoKFH5uuGmq81xeroA5koXLlVGNDzJvWn9dbWA5k4XYXemGvd2iasVLZRN4c33DtraMMPV71650Q2QuZbVbcQsfj24WrPhm/KkeIlOAmm6jxPp5/HlG+IWHz7cLVnwzflSPET4Zb0XXoBoE5LE9vptLIfHGsSthGdP+miDBFyiFh8+3C1Z8M35UjxEpwEE6JXQvmIKd8Qsfj24WrPhm/KkeIlOAlG2ruL3/2lXqju+Q2K1SybD4UDVPFgJr4KRykcAGDih6Ao3M0Jq9Z6I8VqS7xqfUvObcJQG7Vq3uy6RdhnvtK6TKXI9p2vqz0bvilHipfgJBjXPoiJH1O+IWLx7cPVng3flCPFT4R78Ypv7D2cD10MhRemiW1Mq9csliRszepVK1q6KGsNojAeIhbfPlzt2fBNOVK8BCfBhOiVUD5iyjdELL59uNqz4ZtypPjJcMcsv+TkDNnhhz1u39f+/E/bTl7Xv+ziyXr02NO/MKeJWa17WjPe26qLpwi3tgYXr8FRE7/CQgHD5b2sFKw6H524opi4Sp4i7GMNSWvnw1eVjRCx+Pbhas+Gb8qR4iU4CabqPE+nn8eUb4hYfPtwtWfDN+VI8VW4N6y6eubyVz5hu++HR02n9TKdY03CNqKzV7XYQoYaIhbfPlzt2fBNOVK8BCfBhOyZun3FlG+IWHz7cLVnwzflSPET4Zb0XfZGQH/qgb2oztA6/xHf16ozClU9P8P9r8EBH9DUdm/VOH28WSlszIt7WrldOMvVxib/rUc2Vm0RrntdlPaltQsRT4hYfPtwtWfDN+VI8RKcBBOiV0L5iCnfELH49uFqz4ZvypHiq3C+32MbqseTn9EKJGEbUSdULbaQoYaIxbcPV3s2fFOOFC/BSTAhe6ZuXzHlGyIW3z5c7dnwTTlS/ES4pX2XrdPQxxj04l3FU4RvAfRG3bq/dfS9rQr5LbsGOzZ++yMn3G5gb8qg0tqFCDBELL59uNqz4ZtypHgJToIJ0SuhfMSUb4hYfPtwtWfDN+VI8VW4JGxDrcp6/CRhW09draxWLTYro5akELH49uFqz4ZvypHiJTgJxvL0R0mLKd8Qsfj24WrPhm/KkeInwh2z4rLvKK2PHNPAd0DhWt7jyqcKZ1AbR6BvybLGxnWrT7glyma3CEpaOwvTxpQQsfj24WrPhm/KkeIlOAnG+MRHTIgp3xCx+Pbhas+Gb8qR4qtwSdhGvJAFoSVhKyhSKEjVYgsVB/2EiMW3D1d7NnxTjhQvwUkwIXumbl8x5RsiFt8+XO3Z8E05UvxEuCV9a38A4PD2XtTQ713ff9IH6+7PqbYvrV2IOEPE4tuHqz0bvilHipfgJJgQvRLKR0z5hojFtw9XezZ8U44UX4VLwjbUqqzHTxK29dTVymrVYrMyakkKEYtvH672bPimHClegpNgLE9/lLSY8g0Ri28frvZs+KYcKX483JIVl50GrS8A0ATwf/vvNfPAW2/fcd66/mWnR9nQnoOS1s6z23HNhYjFtw9XezZ8U44UL8FJMCF6JZSPmPINEYtvH672bPimHCm+CpeEbahVWY+fJGzrqauV1arFZmXUkhQiFt8+XO3Z8E05UrwEJ8FYnv4oaTHlGyIW3z5c7dnwTTlS/Fjckr61rwBwUatxVXb8ujUnfF1qK8pmtwgqpnxDxOLbh6s9G74pR4qX4CQYizaMlhJTviFi8e3D1Z4N35QjxVfhkrCNdhmLAkvCVlSmMKCqxRYmilEvIWLx7cPVng3flCPFS3ASTMieqdtXTPmGiMW3D1d7NnxTjhTfjjtm+WUvVEpfO/owRP2mdf0nfTrU77C6e97EvrR2JjZtsSFi8e3D1Z4N35QjxU+GGzxr3iOayJ9917Pff8lev/jAI3r6br3Z9jxPJ560diFyChGLbx+u9mz4phwpvgqXhG2IVVCfjyRs66utseWqxWZs0IEQIhbfPlzt2fBNOVK8BCfBOLRAdNSY8g0Ri28frvZs+KYcKb7ELT790qdnSl0LhX0UcObV/ctWl40rtRVdo1sGFFO+IWLx7cPVng3flCPFT4S794P7H6Wy/NvtLaaRHzV75dbvWrbdtKFJaxcioRCx+Pbhas+Gb8qR4qtwSdiGWAX1+UjCtr7aGluuWmzGBh0IIWLx7cPVng3flCPFS3ASjEMLREeNKd8Qsfj24WrPhm/KkeKJe+fnfvGoEShOah+nNM6/+pxlb29vWqmt6BrdMqCY8g0Ri28frvZs+FKOXvXI7rtm5D13LP3a7XtesfSgRqZ68qbq6epQ3Uqpnmaz2aMUenKlelSOnnueeuon5vzmE++Byls/1xo9AHqgcAQ0Fj6wxRSfFv5fCnoo12qYX6HUkAKGADWktR4e/fcDf55BDzW1HtZKDfHvWmVDyPPhXGVDHciHtGoM5XlzWKuOoU7VHNLN4eFm1jk0O9s1tGlnz/A83DqkVmHEst2NadJaGxu2IISIxbcPV3s2fFOOFF+FS8LWoqkjoiRhG9HJqFpsIUMNEYtvH672bPimHClegpNgQvZM3b5iyjdELL59uNqz4ZtypPg//u+f9bu//OufKuA5AL66rn/Zq8b2n9RW3X0byn5M+YaIxbcPqT39mUM6selvPds7O3oaWdYzMqJ6sgw9t7/gU9fv+Z1TjlQNtMQkBWYpNHOV9yiMCkwKUCjVrTR6Buc/7+Xdt/z4W63vA/f9XCl03ydGKUhb2+wfkkcOYEgDLSGtFIa0xrCGGlJKD/Fn0Bjm19bPHvBvNaQpwrUaBnSBv1+I82cZsqGmzoczlQ3ddeiKT+/5qzUnj+S69W9QfOt8uKGyoeE8H26gMaRbQrwx1InmkO7sGG5mw0P5SNfwnMauoZsGZw8/EjdRjDNmp0Paay5OfPtwtWfDN+VI8VW4JGxdOm/quVH/suzv79d9fX1Rx+jzFFYtNp++qmyFiMW3D1d7NnxTjhQvwUkwVed5Ov08pnxDxOLbh6s9G74pR4pf8alv6f/5vzsBjWvXnbNs8Xh9LLU1ndbAZLHGlG+IWOjjwL5FHdueuG/PvrM7uwd3oifLVM9INtyTjaieplI9WSkuFYVj3k3xiGKCyb+PCs+8Ryv07FpwxMndG36wnsKTolJD9jOKIQAAIABJREFU92RQ3ZocTjwVultTT6BzCnpmF6AG85699mgM3najVhiExqACBrXSg9DZoIIe5PeVxuC9j1325ll/vvSsDNmg1mj9yTI9mEO/HFod9YD4Fa5RwJdyrbsA1aWgugDdya85dJcCupgzv47+W3URmynVwmiQ147BfRx+X2P03wqqsw1bchpTUEt7lwq6FNot0a3uF96j/1ZD4IS7EObtwnt0so2hXGN48KDjXtPz129+lJPu9ik5p+Ojk3A1nCkKc9WailOg6ywfLqfiFOO6JcyzYU7Hd+WN4ZYYb3YMNzEyNHv3nqG/LV5/x6N++Koudcr1vDDgfLiuaRu+KUeKr8JtX/2IeZuXff/WRYsWPWz0h3ODRGQg6pOWhO3UdUrVwvcRmW8frvZs+KYcKV6Ck2B8nKdYbMSUb4hYfPtwtWfDN+VI8Ev6Lv0CoF4DpX8xPKNx9LdXnXB7ErZhHvhX9btAf3h+z913o+eOl339tt5rjj1IDVNoqp6sSaHJaaXq0XmxbRaqpwF0a6V6kKNHF1NNgBPPccQlJ52lwKTwbHTtqZoc6gU/mi1BCQwC2MmvSqnB4b2e8OSu2/7wg1JcgkKTgjOjCNUtvGoJ0tG/Z1k2ePuzz7po75+sXKwzik892ODPOrsGc60He5oYxJAexPtuJU8zS8n6mAw32L//Qp3na7XGs4qq/Uzp7MSZZ966IXgVwetSUH9560FdB+19Vyd2m9G1fWRXVyPv7BrSw12ZbnQp3exSWaNT6ayrqfOWqFb8mmWd0HlX3hLiugsU2VoX/x4V5hTpFNKjwlx3DR649JSZN1590X0cqDGY1gWLFp5ivBTrxdf2f09FqVx8crt3a1s5OAUvhTcn5cWEvDUtb/17dOKtCux9f4ce2vHol71h1g1f/8h9QhxqWGejU3HoQnRzOo5saISTcGRDFOcjeTbc6MiHBo749A/2+v4bn3HfVLy1Pb1jOFfDQ83hruE52Dm0cbeZw/PnbxxSJ7Re2Sbu97I4rutjx1n7L9AqvwzAszYv+ymSsHVpu6njJmE7dbV/kGfpogwRcohYfPtwtWfDN+VI8RKcBBOiV0L5iCnfELH49uFqz4ZvyqnCL1lx2TnQ+vR9dpuBrffseuw1a5b9eaL+q7IVqm9D+Rmbr171hK47ujf1dO3s6Gk0sp6RhmpNMlWH6s5Us6fZHBWaOQVnrnpUhu5c379lNsvQrXPVmmZmSre2xvLv3EI7upVW93Caye9n3Do7Os0MPoFTwM5c650Ul6DYLKaZFJ0Ul5x0UlByasmfj/5dD7ammfw79GCmMXj7sz/wpT1+9p4XNXSjhc0berBD68G8qQebM/LBWfnIIHbOG1Sr/jiumrbpN1OOFF+F2756n3lbj7vm1kc98RlRfwb0uXaqaiL19YNV6Dh8t/mdGNredW8+o6uRd3QpPdw1jEZXRiHeyDpb4huFGG9QaOdduc66OjLV2dS6655D3v3F3X917mkU2RTdD5ySF2K9Jbz1fRPvYqdAIbxHp+soMG3iuyXOW8K80TWH2nEabmO/b3u6nrH7bo2hu259wPb0QpgDowI8L4Q4t6oPLvzHl/Rs+I+vEj8q5jHcEuwU6px8q9EJ+L1PO+2cWb/56Kn8d+secm5bb/0drwFwNHshCVvpiogPN1W/1Ga1/gPC5PcqpInt1DWMr/8EJsvAtw9XezZ8U44UL8FJMFPXQf49x5RviFh8+3C1Z8M35UyGX7ListOh9TkauOsdxz5+93989pPH/f9r59kHPGak2XzO3c8644t7/frcx3SfvvEG/91oZlFfjgb+uG/PvV2Nno4s6xkeHt02m6vhnk6ddZfisvW12DKba9XTKMRl8f0eQHWDk8vWhBM9GXS3Lu7dzGfPe3xjx6bN5f2axYdds0Ad0QoY0RSaM/aYne2682ZONnOtdiqli22zo1tlR4VoNkjhWYpOYqE4zcxaQrO1hTYbFZ0UonmHHuzIOwfzXA/2dGPwb0u/s+1Rlz6p4eOeR5vp0NhSmfa6jU+pDwlOgnFsh6joMeUbIpZ2H7zIBWzruhszuhrY1dXoHp2Kd2cdncMU4zpr/RlvKl5uSb/7kHd9bs6vPvz2BwjxrG27uqYIV12ZKqbluhTt3MKOrpG9n/i8ztv+8Ovpsj09Cduolq9RMHUJWz5176NtkTwewO8AvBnAJUDrSXiPAHAegC9PFHEStkbn0is49C9eH8G7xmzDN+VI8RKcBOOjrrHYiCnfELH49uFqz4ZvypkIf8zpl75WZerz7EWlsPT81x169XjbxLaf3bsYGuvH9OziWSs38+nJrYPbHzet2r9n3m5Z9+AO9Aw3dvU0hrMe1am679syq/k02dF7MHWOnkamiof5tCaa99132ZpgQneD4hKjDwBq3YvZegqtbgnR1kOBpu4BQDvLKeaooMTOlpBsTS71oNJZITIfOM2EynYqbottiUsMZsXfGw1OM/VgnmOwo4M/14PNvDk4c+bsQTQ6BtVpf9llI9hsfseY9laVD1d7NnxTjhQvwUkwVTWbTj+PKd8Qsfj24WrPhN+6ELhxftffFq/fse83XjiXU/GWEG90dCo90jUCCvG8q1l8bU28le6887lnXbnXz957Mqfio/eCj25fbyjd2ZqOF9+/9zEnvHvWny//FCi+Fe8nv2/7+TMB7M++TsJ2Oq3uB8Zal7Bt90IBexWAwwGcAmAOgJUAegFsAsDp7Y7xSpiE7dQ1lskvIdsofftwtWfDN+VI8RKcBGN7bmLkxZRviFh8+3C1Z8M35YyHX7p87Yu0wpUtUQv96qv7T/ryRHZ3rO69TAMntPevBu7JgNspQtummR1T0OOcZrYmlPeLzPu3yub5qOhsPQSouDczzznZHBWiGaeZOttZPgjo/q96MNedg7ctvug3c7/9ikeM5Png7KHmIJ6wbbC8Vy10rqbn3SY+3z5c7dnwTTlSvAQnwdicl1g5MeUbIhbfPlzt2fBNOVL8RLida/Y/qpmPvuc5CdtYV3J1XCGELW/E/haALwHgFffvAVhb7PvnXvpFAG5Mwtb8Rvnq02uPkP6CsPfgP1/XmG34phwpXoKTYFzOT2zcmPINEYtvH672bPimnLH4JcsveS5UxmnrbA31rvX9J35osongjrN7/0NrHCHs3dF7LqF4n+XoZLP17/u3yvL+ywcL0az1vSZFZ/G0WYpMTjOHm3pn1uBEUw925nqw2ZUPzsxnDmJXNqhW3UQftR2mta4tEIuHvtjE4jtfV3s2fFOOFC/BSTA25yVWTkz5hojFtw9XezZ8U44UPxlucE3vI5tQz9lywk8uSg+PinU1Tx5X3cL2QAA/AsCvvJn78uLP14uwtgA4DMBNSdj6F3ouLSn9BRGTD9eYbfimHClegpNgXM5PbNyY8g0Ri28frvZs+KacdvzSFV9/XK5HrlXAI6HRv+6cZSvKnpzI7vbVvf8D4EntvauBtR0d2arBYb2zYyQfnN3THMTgwKBa1bol5iFzmNa6zsRDxOLbh6s9G74pR4qX4CSYOnsktO2Y8g0Ri28frvZs+KYcKb4Kl95jG3p1+vVXt7BdU9xP+54i7PcCuBvA+cXTE+8AsAcfIrVmzZpVSqn3jU3v+OOP95txspYqkCqQKpAqEHUF7t05gk9f+2dsGNiOZz1uXyx73iMr453zm49h1p+4Gej+Y2ju03Dns9+PvHuvSn4CpAqkCqQKpAqkCpQVSBPb6dkLdQvbPwF4BYBfFeU5FsCpAPiCcCrWd/B9UROVLt1jO3VNVXVFy0dkvn242rPhm3KkeAlOgvFxnmKxEVO+IWLx7cPVng3flNPCH3hgtuSMy66FxguVwjeuXrPspWN7cKzd7av3OwtQfHYDkKk3zUTnZTcdd9Xtj3r8U+r+Py6W5WH8zsc6Azc97zax+Pbhas+Gb8qR4iU4CcbmvMTKiSnfELH49uFqz4ZvypHiq3BpYhvrKpbFVed/+nMBcKvxjOJ9UoyI77m7BsATir8fCeC6JGxHK1C12GSn1A8qRCy+fbjas+GbcqR4CU6C8dMNcViJKd8Qsfj24WrPhm/KIf5fP//LS6Dxcg38OOuedfTVq5Y+6OGC7Xa3r563EtBnsUu1Vu+cfeamD8f2+zTECjKtdZ0xhYjFtw9XezZ8U44UL8FJMHX2SGjbMeUbIhbfPlzt2fBNOVJ8FS4J29Cr06+/OoXtZJEu4EPHivtuJ8Slia3fk21irWrhm9iaCOvbh6s9G74pR4qX4CQYH+cpFhsx5RsiFt8+XO3Z8E055371B/rHf+D1UPyh0dBHf3P1SRvG67/S7o7V896uoVtCFlBnzlq5aXWJN/UdS5/bxhFTviFi8e3D1Z4N35QjxUtwEoxtL8bIiynfELH49uFqz4ZvypHiq3BJ2Ma4guUxTZWwFUWYhK2oTLWAqha+D6e+fbjas+GbcqR4CU6C8XGeYrERU74hYvHtw9WeDd+Es3T52vdqhfdzp08GffRV/Sf9ZrKLYr2XPvdNUPpTxORanz3nzC2jW5GLw8R3LD3uEkdM+YaIxbcPV3s2fFOOFC/BSTAu/RgbN6Z8Q8Ti24erPRu+KUeKr8IlYRvb6jWLJwlbs3rViq5abLU6H2M8RCy+fbjas+GbcqR4CU6CCdkzdfuKKd8Qsfj24WrPhi/lLFl+6Vug1MezTKGZ48j1/SfytXATHrd+7+N69+tau4+hoT8ye+UWPq/hAYfUd919G8p+TPmGiMW3D1d7NnxTjhQvwUkwoXo3hJ+Y8g0Ri28frvZs+KYcKb4Kl4RtiBVZn48kbOurrbHlqsVmbNCBECIW3z5c7dnwTTlSvAQnwTi0QHTUmPINEYtvH672bPgSzpK+S08EVOtxxv98xCIcf9Shk/6/tOOs3uO1ar06jsenZ63c/KbxmlXiO7omdwgopnxDxOLbh6s9G74pR4qX4CQYh3aMjhpTviFi8e3D1Z4N35QjxVfhkrCNbvkaBZSErVG56gVXLbZ6vYefdvjO19WeDd+UI8VLcBJMyJ6p21dM+YaIxbcPV3s2/CrOMX2XvUBBXwugA1qfesEbnvHxyV6xsP3s/ZZAqyuL18VdOGvl5n+eqO+qfNfdr6Htx5RviFh8+3C1Z8M35UjxEpwEE7qH6/QXU74hYvHtw9WeDd+UI8VX4ZKwrXMl1m87Cdv6ayz2ULXYxIY8AEPE4tuHqz0bvilHipfgJBgPrRCNiZjyDRGLbx+u9mz4k3EWn3H5U7I8p6jtVQrvu3rNsg9Mhh9cs98ROldXamDOzgVHYO9XXTLp/1828UbT7BaBxJRviFh8+3C1Z8M35UjxEpwEY9GG0VJiyjdELL59uNqz4ZtypPgqXBK20S5jUWBJ2IrKFAZUtdjCRDHqJUQsvn242rPhm3KkeAlOggnZM3X7iinfELH49uFqz4Y/EedFKy9d0GziWkA9USt8bP2aZadN9ntnx9lzn6Xz7EoozNXA+i0n/viYRQc9JgnbtkVnc37qWrMhYvHtw9WeDd+UI8VLcBJMXf0xFXZjyjdELL59uNqz4ZtypPgqXBK2U7FC/flMwtZfLZ0tVS02ZwcGBkLE4tuHqz0bvilHipfgJBiDUx49NKZ8Q8Ti24erPRv+eJzj3355z+AMbj/Wfw+FS9atWfaKsvnGw9+7et+nZKpxhdZ4pFL4/vbGyHF3v+y6uyfbshzq4lxMi8bm/NQVf4hYfPtwtWfDN+VI8RKcBFNXf0yF3ZjyDRGLbx+u9mz4phwpvgqXhO1UrFB/PpOw9VdLZ0tVi83ZgYGBELH49uFqz4ZvypHiJTgJxuCURw+NKd8Qsfj24WrPhj8eZ+nytf+uFV4C4DtP7/7fo1etWpVPJGx3nn3AY5q6yXtqH6+AnzW79HFz3r1lqyQWCSb6pjcIMKZ8Q8Ti24erPRu+KUeKl+AkGIP2ix4aU74hYvHtw9WeDd+UI8VX4ZKwjX45TxpgErYRnb+qxRYy1BCx+Pbhas+Gb8qR4iU4CSZkz9TtK6Z8Q8Ti24erPRv+WM7SvrWf0cAbAFzfVNnR1645YVt737Tjd5y1/wKtcorap0Gr3w2N6OP2XLX5Juk01ibeunu4Tvsx5RsiFt8+XO3Z8E05UrwEJ8HU2a+hbceUb4hYfPtwtWfDN+VI8VW4JGxDr06//pKw9VtPJ2tVi83JuCE5RCy+fbjas+GbcqR4CU6CMTztUcNjyjdELL59uNqz4bdzlvRdejagVijgpjzH4vXnLvt/YxuuxN+9av99OjrzKzTwXAX8uZmr4+a8Z9N9eEksEkzUDW8YXEz5hojFtw9XezZ8U44UL8FJMIYtGDU8pnxDxOLbh6s9G74pR4qvwiVhG/VSrgwuCdvKEoUDVC22cJGkh0dJa216zqR4CU6CkeYxHXAx5RsiFt8+XO3Z8EvOkhVr3wGNDwG4Fzo7et05J/xkvJ4j/sCvPm/Wjk5uP1ZHKmCDhjpu1spNv55osjtR79rEOx3WwXTIN0TtfftwtWfDN+VI8RKcBDOd18NEF81iyClE7X37cLVnwzflSPFVuCRsY1gl9jEkYWtfO+/MqsXm3eEkBkPE4tuHqz0bvilHipfgJJiQPVO3r5jyDRGLbx+u9mz45Jz2+V/9i9L6y+wPpXHc1ecs++bE4uwvunftc68CcCyA25o6O263M299kAiWxCLB1N2zIe3HlG+IWHz7cLVnwzflSPESnAQTsn/r9hVTviFi8e3D1Z4N35QjxVfhkrCtezXWaz8J23rra2S9arEZGXMEh4jFtw9XezZ8U44UL8FJMI5tEBU9pnxDxOLbh6s9G/5VP7hef/bbN7T6SCv9uvVrTvrCZE1121dP1t03fw8K2JEjP272yq3fHQ8viUWCiarBHYOJKd8Qsfj24WrPhm/KkeIlOAnGsSWjoseUb4hYfPtwtWfDN+VI8VW4JGyjWrrGwSRha1yy+ghVi60+zw+2HCIW3z5c7dnwTTlSvAQnwYTsmbp9xZRviFh8+3C1Z8pfevraZ3Z3N342ONQElFq+bs2J507WI9vP6v0iFF7dwij9ollnbOHkdtxDEosEU3fPhrQfU74hYvHtw9WeDd+UI8VLcBJMyP6t21dM+YaIxbcPV3s2fFOOFF+FS8K27tVYr/0kbOutr5H1qsVmZMwRHCIW3z5c7dnwTTlSvAQnwTi2QVT0mPINEYtvH672TPhL3n3xo3XWuFYpLAJw3rr+ZadP1kw7Vvd+XANvISaHPmnOyi1rJ8NLYpFgompwx2BiyjdELL59uNqz4ZtypHgJToJxbMmo6DHlGyIW3z5c7dnwTTlSfBUuCduolq5xMEnYGpesPkLVYqvP84Mth4jFtw9XezZ8U44UL8FJMCF7pm5fMeUbIhbfPlztSfnH9F28p0LjWgCHPfOx++DMV79g0v9ndpzde57WeBf7565nnIH9jzyt8v8lSSwSTN09G9J+TPmGiMW3D1d7NnxTjhQvwUkwIfu3bl8x5RsiFt8+XO3Z8E05UnwVLgnbuldjvfYrP0DU635y6/39/bqvry/qGH3Wp2qx+fRVZStELL59uNqz4ZtypHgJToKpOs/T6ecx5RsiFt8+XO1J+Uv61q4HsBjQV13w+mccu2jRogl/h29f3fsBAO8ZndTi1K3LfvrxyfBlv0pikWCmU/9XxRpTviFi8e3D1Z4N35QjxUtwEkxVz02nn8eUb4hYfPtwtWfDN+VI8VW4JGyn08p+cKxRi8YkbKeuuaoWvo/IfPtwtWfDN+VI8RKcBOPjPMViI6Z8Q8Ti24erPQl/Sd/arwB4lQZ+2sh7jv7IKU+6eyKhOnj2fn25VmvYX1rj3bPP3PxvEh/ES3ASTCy97SOOmPINEYtvH672bPimHClegpNgfPRlLDZiyjdELL59uNqz4ZtypPgqXBK2saxauziSsLWrWy2sqsVWi9MJjIaIxbcPV3s2fFOOFC/BSTAhe6ZuXzHlGyIW3z5c7VXxj+m79MMK6u0A/rcD+ugr+0+6aSLOjtX7/auGOr/omffOWrn5g1LBKsVVxVt3v4a2H1O+IWLx7cPVng3flCPFS3ASTOgertNfTPmGiMW3D1d7NnxTjhRfhUvCts6VWL/tJGzrr7HYQ9ViExvyAAwRi28frvZs+KYcKV6Ck2A8tEI0JmLKN0Qsvn242puMf8yKy85QWq+GxkCu9dHXnHvSryYSoNtXz3sDoD8zOqlV/bPP3LSibDJpjBKcBBNNc3sIJKZ8Q8Ti24erPRu+KUeKl+AkGA9tGY2JmPINEYtvH672bPimHCm+CpeEbTTL1iqQJGytylYPqWqx1eN1fKshYvHtw9WeDd+UI8VLcBJMyJ6p21dM+YaIxbcPV3sT8ZcuX3uKVvh0S6dm6uj1Z5/47YmE6uDqeSfn0F9tiVqoC2av3PS29r6RxijBSTB192xI+zHlGyIW3z5c7dnwTTlSvAQnwYTs37p9xZRviFh8+3C1Z8M35UjxVbgkbOtejfXaT8K23voaWa9abEbGHMEhYvHtw9WeDd+UI8VLcBKMYxtERY8p3xCx+Pbham88/pLTL30ZMvW1olFOXte/7OKJhOqOs+a9VCv9df481/pzc87c8oaxDSaNUYKTYKJqcMdgYso3RCy+fbjas+GbcqR4CU6CcWzJqOgx5RsiFt8+XO3Z8E05UnwVLgnbqJaucTBJ2BqXrD5C1WKrz/ODLYeIxbcPV3s2fFOOFC/BSTAhe6ZuXzHlGyIW3z5c7Y3lL+m79HBA8bU+3VDqX9etOfGjEwnV7R/sXYxMXwmoTgV90cyVW145Xr9IY5TgJJi6ezak/ZjyDRGLbx+u9mz4phwpXoKTYEL2b92+Yso3RCy+fbjas+GbcqT4KlwStnWvxnrtJ2Fbb32NrFctNiNjjuAQsfj24WrPhm/KkeIlOAnGsQ2ioseUb4hYfPtwtdfOX7z8ooMz1UFRe4BS+MDVa5a9byKhuv8lz/mHPMOVAHYH8O+zVm5+2USNJY1RgpNgompwx2BiyjdELL59uNqz4ZtypHgJToJxbMmo6DHlGyIW3z5c7dnwTTlSfBUuCduolq5xMEnYGpesPkLVYqvPc5rYsgI29TflSPESnAQTsmfq9hVTviFi8e3D1V7Jf8kZ/z5vKB+mqH2yBj65vn/ZWyY69zf/4mq993devxkKvQCunbnPAS9Sp1w/nISt/9Xien59RhQiFt8+XO3Z8E05UrwEJ8H47ImpthVTviFi8e3D1Z4N35QjxVfhkrCd6tXq5r9uYUv7ewC4Y0yYswAM8larycJP77F1O7ku7KqF72K75Pr24WrPhm/KkeIlOAnGx3mKxUZM+YaIxbcPV3vk9331+hmDO5vXAuoIAJet61+2bKL+2NW/38G7eg7478a9t0Ip/HBntuu4vfruuGuyfpLGKMFJMLH0to84Yso3RCy+fbjas+GbcqR4CU6C8dGXsdiIKd8Qsfj24WrPhm/KkeKrcEnYxrJq7eKoU9geBWANgD8A2A3AcgC3AbgEwAiARwA4D8CXJwo9CVu7k+qDVbXwY/ThGrMN35QjxUtwEoyP8xSLjZjyDRGLbx+u9sg/7fO/ulxpfQI0/mPTHXcdff1nTxl3+rpzzb4HNXXjSmg8EQrX6Y7mcbNP37a5qpekMUpwEkxVPNPp5zHlGyIW3z5c7dnwTTlSvAQnwUyn/q+KNaZ8Q8Ti24erPRu+KUeKr8IlYVu1muL+eZ3CdguAQwBsBPB4ABmApQDmAFgJtLambQLA6e2O8cqUhO3UNU/VwvcRmW8frvZs+KYcKV6Ck2B8nKdYbMSUb4hYfPtwtdd/4ff1T/64le/p+W2eZ0dfc94J4wrVHWfNP0BnI1dA49CRPRZB3/2XRXus2HKjpI+kMUpwEowkpumCiSnfELH49uFqz4ZvypHiJTgJZrr0viTOmPINEYtvH672bPimHCm+CpeErWRFxYupS9jOBLAdwBUAXgDgIgCnAzgfwPcArAVA39yKvAjAuB96krCdusapWvg+IvPtw9WeDd+UI8VLcBKMj/MUi42Y8g0Ri28fLvaW9F32AUC/BwobtMLi9Wcv+/14faHXLNxzMB+6UgPPV8Bfth190UGPeNoLxP/PSGOU4CSYWHrbRxwx5RsiFt8+XO3Z8E05UrwEJ8H46MtYbMSUb4hYfPtwtWfDN+VI8VW4JGxjWbV2cYg/cBiaPwjADcX2428A+CSACwEcC+ByAK13GQLgVPcwADetWbNmlVLqQU/WPP744w1dJ3iqQKpAqkCqgK8K/Oj3W/CNn92Mzo4Mb/ynx+Cgedx08+BDNYewx0/6MGPTdWj27IM7n3cOhvd6nK8wkp1UgVSBVIFUgVSBYBVYtGhRXRopWA4PR0d1nbR9AGwrXu9wN4BXAeDDRjiZ5b85uW0UD5Xiw6XGfYhUmthOXUtWXdHyEZlvH672bPimHClegpNgfJynWGzElG+IWHz7sLF3zPJLTlYq+yp74DUvOAgvecHTJ/w/Y8fq/b6hoV7M3+u5VsfNOXPTj019SvESnAQTS2/7iCOmfEPE4tuHqz0bvilHipfgJBgffRmLjZjyDRGLbx+u9mz4phwpvgqXJraxrFq7OOoStrR7M4A3APgWgM8AuK4Qu6cC4IOlOIp9B4BnTRR6ErZ2J9UHq2rhx+jDNWYbvilHipfgJBgf5ykWGzHlGyIW3z5M7S3uu+SfMmR8rQ80cMpHX3/oZya6gr1j9byLNfTLFbAzhzpu9spN3ybP1KcUL8FJMLH0to84Yso3RCy+fbjas+GbcqR4CU6C8dGXsdiIKd8Qsfj24WrPhm/KkeKrcEnYxrJq7eKoS9gyGt5be0HxROT/AvCm4hU/1wB4AoAeAEcWgnfc6JOwtTupPlhVCz9GH64x2/BNOVK8BCfB+DhPsdiIKd8Qsfj2YWJvad/aQzU0X+uzN6DOWNftsMVdAAAgAElEQVR/4pqJ+NvPmvd5KP3aVp+o7MWzzrj1yrJnTHyaCGGJXQkmlt72EUdM+YaIxbcPV3s2fFOOFC/BSTA++jIWGzHlGyIW3z5c7dnwTTlSfBUuCdtYVq1dHHUK29bHHAB7Arh9THgLAPCJmuO+KqLEJmFrd1J9sKoWfow+XGO24ZtypHgJToLxcZ5isRFTviFi8e1Dam/pmZc/So/knNQ+FhofXnfOsndOJDp3rO79qAbeyp9r6FfMXrmFr3O775D6NBXCErsSTCy97SOOmPINEYtvH672bPimHClegpNgfPRlLDZiyjdELL59uNqz4ZtypPgqXBK2saxauzjqFrZ2URWsJGydyudErlr4TsYLsm8frvZs+KYcKV6Ck2B8nKdYbMSUb4hYfPuQ2Dv6rRft1pjVQVH7bAX1lav7T/yXiUTnvWf1nqNU62n3gNKvm3XGli+M7RWJTxshLLErwcTS2z7iiCnfELH49uFqz4ZvypHiJTgJxkdfxmIjpnxDxOLbh6s9G74pR4qvwiVhG8uqtYsjCVu7utXCqlpstTidwGiIWHz7cLVnwzflSPESnAQTsmfq9hVTviFi8e1DYm9J32XfBPSxCnr91f0nLZlIdG7/YO8qZGg9xT6HPm3Oyi0fG+/8S3wmYetn5ZjW2o/X8a2EiMW3D1d7NnxTjhQvwUkwdfZIaNsx5RsiFt8+XO3Z8E05UnwVLgnb0KvTr78kbP3W08la1WJzMm5IDhGLbx+u9mz4phwpXoKTYAxPe9TwmPINEYtvH1X2lixf+0UovBrAzzu6Zxx95aoX3zme6Nxxdu/pWuMc/kwrLJ99xuZzJ2qcKp9jeVK8BCfBRN3whsHFlG+IWHz7cLVnwzflSPESnARj2IJRw2PKN0Qsvn242rPhm3Kk+CpcErZRL+XK4JKwrSxROEDVYgsXifnTTG1i852vqz0bvilHipfgJBib8xIrJ6Z8Q8Ti28dk9pb0raU4fTffP55hePFV/a/8y3iic97aZ5+moT5a/GzVrJWb3z9Zv5jmIMVLcBJMrL1uE1dM+YaIxbcPV3s2fFOOFC/BSTA2fRgrJ6Z8Q8Ti24erPRu+KUeKr8IlYRvrKpbFlYStrE5BUFWLLUgQhZMQsfj24WrPhm/KkeIlOAkmZM/U7SumfEPE4tvHRPaO6bt0uYLqb71/Vumjr1lzEl/N9qDj1u+er3f/BWGA1jh39pmbl1edc9McpHgJToKpin86/TymfEPE4tuHqz0bvilHipfgJJjp1P9VscaUb4hYfPtwtWfDN+VI8VW4JGyrVlPcP0/CNqLzU7XYQoYaIhbfPlzt2fBNOVK8BCfBhOyZun3FlG+IWHz7GM/e0hWXvlZr9fnWuVPqmHVrTuTr2B50DK7e7+U51MXFDz42a+Xm0yTn2zQHKV6Ck2AkOUwXTEz5hojFtw9XezZ8U44UL8FJMNOl9yVxxpRviFh8+3C1Z8M35UjxVbgkbCUrKl5MErYRnZuqxRYy1BCx+Pbhas+Gb8qR4iU4CSZkz9TtK6Z8Q8Ti28dYe0tXXHac1vqK0REs/nndOcsuHO8c7jhr3ou10t9owbT6wuwzN71Oeq5Nc5DiJTgJRprHdMDFlG+IWHz7cLVnwzflSPESnAQzHfpeGmNM+YaIxbcPV3s2fFOOFF+FS8JWuqrixEmF7W4A3ob/z96ZwOldVef/ue8kIclMIMiSBbcapUqtdbfUpS6VmmSCgxoIIlaqRa0bApLJTICoDDMRFdxxK4pKJsElQEJi3bW429bWrS7UupAJKCgkIZDMe/+f32RCh2GS+5xzz+++9/33vp+PnwLzfZ7znLtMc/JuwACANQAeAeCt1YeM1NlW+bqfOlf34N6hi2+RzLpGrJ9GL9WwPMMxjMU+5eKRU78psljXmOi3dNW6pzrvqq/16XRwZ183dMqlU+3z7oEFf9uE3+iBmbsfdAKOeNGV7P/PGLOT9sDyDMcwuZxtixw59Zsii3WNWD+NXqpheYZjGItzmYtHTv2myGJdI9ZPo5dqWD7ElcE2l1ury8H+IeVaAMsAPB/Ap8ZL/QbAA3RlOVUZbLl1qoMKXXyLmtY1Yv00eqmG5RmOYSz2KRePnPpNkcW6xn6/pecNP8J1YAs8HuS8v/i6taf2T7XHd1604GlN5zcCOBzwnxlZ8fWTFi1axP7/jDLYJr441uclJn6KLNY1Yv00eqmG5RmOYWLOQG7anPpNkcW6RqyfRi/VsHyIK4NtbrdXlof5Q8o0AHsAvBzACePDbfWM7Y8BPBzAf8lK8nQZbPm1siZDF9+innWNWD+NXqpheYZjGIt9ysUjp35TZLGuUfm98n03zJvRMWMLHB7rHd6/eXDFK6ba351vmv8EdKAaahcC+OzNe2b2NE//wp1lsM3lNtw3h/V5iek0RRbrGrF+Gr1Uw/IMxzAxZyA3bU79pshiXSPWT6OXalg+xJXBNrfbK8vDDLYdAG4C8B4A5wL4IoCPAqjec7UAwIisJE+XwZZfK2sydPEt6lnXiPXT6KUalmc4hrHYp1w8cuo3RRbrGj//+S/8WR/6zj+P/QWlc5/cNHjK8qn29q6h+X82Oorq5ccPdcBX727M6Jm76le3afJINSzPcAyTy9m2yJFTvymyWNeI9dPopRqWZziGsTiXuXjk1G+KLNY1Yv00eqmG5UNcGWxzubW6HMxgWzlX76c9Z7zEEgDrq+87BPA4XVlOVQZbbp3qoEIX36KmdY1YP41eqmF5hmMYi33KxSOnflNksa5x4Qc/57/3i99X2/nlHTPvXPzlNWfsnry3uwfnPWTvqNvoHP4cDt9Bx96ezpW/q/5iU/x+WY2G7ZnhGCaXs22RI6d+U2SxrhHrp9FLNSzPcAxjcS5z8cip3xRZrGvE+mn0Ug3Lh7gy2OZya3U52MG24p4x9tmZwJcB/COADQBu0ZXlVGWw5dapDip08S1qWteI9dPopRqWZziGsdinXDxy6jdFFssay1YNv9N7vAbAf6KjsXjTwMm/nbyvOweOXABMqz4l+Ulw+OFeN9pz2Kpbfr6f0+SRalie4Rgml7NtkSOnflNksa4R66fRSzUsz3AMY3Euc/HIqd8UWaxrxPpp9FINy4e4Mtjmcmt1OdjBtnJ/CIDDxss0x//vDwCM6kqHVWWwDa9RXUTo4lvUta4R66fRSzUsz3AMY7FPuXjk1G+KLFY1unvXXwj4NYfNno4/7tzz6E1rV3x/8p76ocMP29k8ZKPzeLoDbmx2+J6u3u3/OZHT5JFqWJ7hGCaXs22RI6d+U2SxrhHrp9FLNSzPcAxjcS5z8cip3xRZrGvE+mn0Ug3Lh7gy2OZya3U52MH2ncDY3/ZPflSD7u260mFVGWzDa1QXEbr4FnWta8T6afRSDcszHMNY7FMuHjn1myKLRY3uvvWvQtO/G8Ddr1r6pzMWP/Ux9/md79ccN2Pn9Fs3OmAxPEYc8NzZq0e+PXnfNXmkGpZnOIbJ5Wxb5Mip3xRZrGvE+mn0Ug3LMxzDWJzLXDxy6jdFFusasX4avVTD8iGuDLa53FpdDmawrT48ai+AGwF8YNIztNXAe7eudFhVBtvwGtVFhC6+RV3rGrF+Gr1Uw/IMxzAW+5SLR079psgSW2PpyuEVzmFdtX/ON0+57MwnrZ/qU413Dsz/ZPVp9x74o2+iZ875I9XbTe7z0OSRalie4Rgml7NtkSOnflNksa4R66fRSzUsz3AMY3Euc/HIqd8UWaxrxPpp9FINy4e4Mtjmcmt1OZjBtnKuvtJnM4CzdWV0qjLY6tbNQhW6+DnWiM2s0Us1LM9wDGOxT7l45NRviiwxNZacd9WzG43GFgAd3uMfN69d8b6p/HYMzPuYg3vR+F9Q9nT2j1SaKR+aPFINyzMcw+Ryti1y5NRviizWNWL9NHqphuUZjmEszmUuHjn1myKLdY1YP41eqmH5EFcG21xurS4HO9j+w/iztd8BMPGTNJ8DYJeudFhVBtvwGtVFhC6+RV3rGrF+Gr1Uw/IMxzAW+5SLR079psiirXFi77rHNOGqAXWeh79g89Cpb672cLLfzoF57wfcmdXPmt69YM7qbZ862F5r8kg1LM9wDJPL2bbIkVO/KbJY14j10+ilGpZnOIaxOJe5eOTUb4os1jVi/TR6qYblQ1wZbHO5tboczGBbMdV31R4N4OZJLz1+BIAdutJhVRlsw2tUFxG6+BZ1rWvE+mn0Ug3LMxzDWOxTLh459Zsii6ZG98oND/SuucUBxwF4x6ahFWft37+JfjsGFlzm4F9X/czDnd7Vv+3joX3W5JFqWJ7hGCbUczv9PKd+U2SxrhHrp9FLNSzPcAzTTuc/lDWnflNksa4R66fRSzUsH+LKYBu6TXn/nBlsGwD+AOBD5aXI9W5m6LLVW/3e7imyWNeI9dPopRqWZziGSXlm6q6VU78pskhrLFtz3Wzs3rnFA09zcB+/buiU0yfuyX6/HRctGHTO9479zLkzO/u2fZDZO2meylOqYXmGYxim73Zhcuo3RRbrGrF+Gr1Uw/IMxzDtcvaZnDn1myKLdY1YP41eqmH5EFcGW+ZG5cswg22Vfj2ARwIYBHDXhHaq7zysPliqlkd5xraWZaVMQxefMglA1jVi/TR6qYblGY5hLPYpF4+c+k2RRVqju3fdpwF3koffunno1MWT963ymz/85AsAvKn6mYc/q6t/+zvY/ZXmKYMtu7I2nGZ/bCrf1yVFFusasX4avVTD8gzHMHWdj1b45tRviizWNWL9NHqphuVDXBlsW3FD7Wqyg+328ZciT65cvu7Hbi/Ez24Ylr6PVejiW9S2rhHrp9FLNSzPcAxjsU+5eOTUb4oskhrdq9Z/AN5Xn4XwneluxuLPDD7v95P3bWTzm/2cf3/P2H/2zq/q6ts+JNlbSZ79vlINyzMcw0j6z53Nqd8UWaxrxPpp9FINyzMcw+R+5iX5cuo3RRbrGrF+Gr1Uw/Ihrgy2kpuVH8sOts8AcMgU8T9fnrG129TQZbOrFHZKkcW6RqyfRi/VsDzDMUx4p9uHyKnfFFnYGt0rhwfhUL20+MZGs7Hk2recXH2K/b0edwzMf1UDqL7PFnB4U2ffyIXSnWfzTPSValie4RhGugY58zn1myKLdY1YP41eqmF5hmOYnM+7NFtO/abIYl0j1k+jl2pYPsSVwVZ6u/Li2cG2JanLS5FbsuxjRUMX3yKZdY1YP41eqmF5hmMYi33KxSOnflNkYWos7V1/joN/K4DbvfeLN6899euT92vHxfPPcB7/VP137/HWrtUjb9DsKZNnsq9Uw/IMxzCadchVk1O/KbJY14j10+ilGpZnOIbJ9axrcuXUb4os1jVi/TR6qYblQ1wZbDU3LB9NqwbbTgB3Vt8ycbClKINt6w5K6OJbJLOuEeun0Us1LM9wDGOxT7l45NRviiyhGst6173Ew10xNrA6/9zNg6deO3mv7hiYt6IBt67677se9jwcdfJ71b/zQ3mmOidSDcszHMPkcrYtcuTUb4os1jVi/TR6qYblGY5hLM5lLh459Zsii3WNWD+NXqph+RBXBttcbq0uh/oPOUS51QCq77m9aZy9aPyfrxp/+fKDAFwC4CMH8iqDLbHKNSGhi29R1rpGrJ9GL9WwPMMxjMU+5eKRU78pshysRvfKq5bBNfYNsg5/v2lwxdiAO/Fx+0Xzntvh3Max/+ZxxcipN5yxaNEi9e98Tc9SDcszHMPkcrYtcuTUb4os1jVi/TR6qYblGY5hLM5lLh459Zsii3WNWD+NXqph+RBXBttcbq0uh+QPOY8Z/2TkiZWGAew5QOlPAKg+nOTHE96HW70PbA6AfgDzAWwDUD17u2sqjzLY6jbVQhW6+DnWiM2s0Us1LM9wDGOxT7l45NRviiwHqtG9asPx8M0tAA5zzr3husFTqpci3+uxY2DhsxtobvTAbA8Md/WPnBqbWaOXalie4Rgml7NtkSOnflNksa4R66fRSzUsz3AMY3Euc/HIqd8UWaxrxPpp9FINy4e4Mtjmcmt1OdjBtvoO25dOUeJgn4r8/fHhddb4d+D2Yd+Hl1QfOFUNxFXt6qXIi6oPPSmDbZr3tbLHJHTxWZ+DcdY1Yv00eqmG5RmOYSz2KRePnPpNkWWqGktWDR/b8H4L4B7i4dduHjp13/fRTnjcftHCp3S4ZvVM7RGAu6azf1tP9ePYzBq9VMPyDMcwuZxtixw59Zsii3WNWD+NXqpheYZjGItzmYtHTv2myGJdI9ZPo5dqWD7ElcE2l1ury8EMth3jz7jeAGBg0jO0Xz7IpyK/C8D7AVRfO3HN+MuOlwPYAOCT43GrrxF6EoBfDg4OrnHO3eeTOpcvryTlUVagrEBZgf/bK7Drrr1435af4le37MTxf3oUVjztwfdZkOm3/Rfmfq0XHbtuxt3zn4DbnroWvmOqD7T/v72WpfuyAmUFygqUFSgrcLAViHnrTlnZ1q0AM9hW6X4IoHrp27lk1AaA6QDuGudfD+DY8Zce3w7gMgDVwHwbgLkH+hCp8lJkcrVrwEJ/o2VR0rpGrJ9GL9WwPMMxjMU+5eKRU78pskyu0d07fD2AxfDYuGntipMm78sdb17wiI6Gr15+fKwD/mWv6+g5tO+393yfbWxmjV6qYXmGY5hczrZFjpz6TZHFukasn0Yv1bA8wzGMxbnMxSOnflNksa4R66fRSzUsH+LKM7a53FpdDnawrT6kZBmAq8efgd1frRpYd09R+nAA/wPg0QB+M/4MbfWe2+qTkF8N4AQA1VOxZwM4/kDRy2Cr21QLVeji51gjNrNGL9WwPMMxjMU+5eKRU78pskys0d07fCWA0wF87e69dy/+57e+eOfEfbltcP6Dp4+6jc75v4DD91xHR8/slb+tfvfe84jNrNFLNSzPcAyTy9m2yJFTvymyWNeI9dPopRqWZziGsTiXuXjk1G+KLNY1Yv00eqmG5UNcGWxzubW6HOxgW71k+OgpShzsPbbnAXj5uOYLAM4Zf9ly9azDcQCq994+G8C3ymC7bwVCl023xTpViizWNWL9NHqphuUZjmF0u5+nKqd+U2TZX2PZyuFLvcNZDvjR6J7RJde/7bTqLw3vedxxybyjO+521TO1x3vgx819z9T+dPIuxmbW6KUalmc4hsnzpOtS5dRviizWNWL9NHqphuUZjmF0JzFPVU79pshiXSPWT6OXalg+xJXBNs87zKZiB9tp4x/2NNn3QJ+IvJ+bPf6S4zsmCR8AYOQgn6g8hpdnbNlttOdCF9+ionWNWD+NXqpheYZjGIt9ysUjp35TZKlqnPXB76z2QPVVadvRwJJNF6/414n7ccvaI+fM2jNto3N4ZvVZBb6j2dPVe3P1wX33ecRm1uilGpZnOIbJ5Wxb5Mip3xRZrGvE+mn0Ug3LMxzDWJzLXDxy6jdFFusasX4avVTD8iGuDLa53FpdjoMNttUw+0/jLyOunlmtnp2d/Kieka1eXlzLowy2tSwrZRq6+JRJALKuEeun0Us1LM9wDGOxT7l45NRviixXbvqG3/Av/1N9B+1oo6Ox+NqLT/7cxL340hpMe+KM+Z+BR7f3uLnZbPYcesHN3zjQfsVm1uilGpZnOIbJ5Wxb5Mip3xRZrGvE+mn0Ug3LMxzDWJzLXDxy6jdFFusasX4avVTD8iGuDLa53FpdjoMNtjPGP/yp+pqesxQvRdYlmqAqg230EqoNQhdfbTxBaF0j1k+jl2pYnuEYxmKfcvHIqd+6s3Sv2vAC+Gb1mQZowr3w+qFT1k3eh50Xz98Aj+UeuMM3fc+c87d/8WB7FZtZo5dqWJ7hGCaXs22RI6d+U2SxrhHrp9FLNSzPcAxjcS5z8cip3xRZrGvE+mn0Ug3Lh7gy2OZya3U5Qi9Frj65uPqu2epTjqd6jOrKcqoy2HLrVAcVuvgWNa1rxPpp9FINyzMcw1jsUy4eOfVbZ5alfeuf4ZrVp9D76nt6XrNpaEX1/d/3euwYmP9RB7x4/HMLejr7RzaH9ik2s0Yv1bA8wzFMaM3a6ec59Zsii3WNWD+NXqpheYZjmHY6/6GsOfWbIot1jVg/jV6qYfkQVwbb0G3K++ehwbal6ctg27rlD118i2TWNWL9NHqphuUZjmEs9ikXj5z6rSvLiede9ajmtEb11WoLn/PYY/Dqk596n9/ROwfmvw/AK6p9aXqcPGf1yNgzu6FHbGaNXqpheYZjmNCatdPPc+o3RRbrGrF+Gr1Uw/IMxzDtdP5DWXPqN0UW6xqxfhq9VMPyIa4MtqHblPfPy2Cb0f6ELlvKqCmyWNeI9dPopRqWZziGSXlm6q6VU791ZDnxvHULmw1XDbWPAvDud/zDE149+QvidwzMe7uDq75mDR74u67+keprgKhHbGaNXqpheYZjGGrh2gTKqd8UWaxrxPpp9FINyzMcw7TJ0adi5tRviizWNWL9NHqphuVDXBlsqSuVLVQG24y2JnTZUkZNkcW6RqyfRi/VsDzDMUzKM1N3rZz6tc6y+DXvPGTa7KO3eIdnOLh11w2d8sLJNXYOzLsIcP1j6+zcKzr7tr1fsuaxmTV6qYblGY5hJOuXO5tTvymyWNeI9dPopRqWZziGyf3MS/Ll1G+KLNY1Yv00eqmG5UNcGWwlNys/lh1s5wE4GcCjJ7Xw6vKpyHabGrpsdpXCTimyWNeI9dPopRqWZziGCe90+xA59WudZVnv8AYPLPfef272jR2Lr7765NGJNXYOLOgHfPW1P/BwZ3f1b7tUunOxmTV6qYblGY5hpGuYM59TvymyWNeI9dPopRqWZziGyfm8S7Pl1G+KLNY1Yv00eqmG5UNcGWyltysvnh1svwCMfU/i5Ef1FUC319VSeY9tXSsb9g1d/LBDmLCuEeun0Us1LM9wDBPehfYhcurXMkt377r3Ae4V8PjX6bNmLP7MmufdXO3K/ho7LlpwtnP+bWM75Vx/Z9+2izW7FptZo5dqWJ7hGEazjrlqcuo3RRbrGrF+Gr1Uw/IMxzC5nnVNrpz6TZHFukasn0Yv1bB8iCuDreaG5aNhBtvqk5H3jn+n7dkA9kyIv6vOVspgW+fqHtw7dPEtklnXiPXT6KUalmc4hrHYp1w8curXKkv3qnVvhner4fA/o2gs2TJ48o/2r3dVY/66p7wSzlcfFoUm/MCc/u2rtfsRm1mjl2pYnuEYRruWOepy6jdFFusasX4avVTD8gzHMDmec22mnPpNkcW6RqyfRi/VsHyIK4Ot9pbloWMG2yrp9QB2A3heythlsE252veuFbr4Fsmsa8T6afRSDcszHMNY7FMuHjn1a5Fl6arhs5zHpYDf6R0Wbx489WsT1/qmz7/bH/atsVcfwzu8vatv5JyYvYjNrNFLNSzPcAwTs565aXPqN0UW6xqxfhq9VMPyDMcwuZ3xmDw59Zsii3WNWD+NXqph+RBXBtuYm9Z6LTvYfhvAEwDcAeCWCbGrT+/cWVcbZbCta2XDvqGLH3YIE9Y1Yv00eqmG5RmOYcK70D5ETv3GZjlx5foXNZ3/2L7V98/bNHTqZybuxB0D809uAOvH/9v7OvtH/jF2p2Iza/RSDcszHMPErmlO+pz6TZHFukasn0Yv1bA8wzFMTuc7NktO/abIYl0j1k+jl2pYPsSVwTb2trVWzw62GwAcNUXUpQBqezlyGWxbdzhCF98imXWNWD+NXqpheYZjGIt9ysUjp35jsixbObzYu7FXwVSPf9g0tOJDE9d458XzuuHdNQAa8Pho5+qRl1jsQUzmqr5GL9WwPMMxjMW65uKRU78psljXiPXT6KUalmc4hsnlbFvkyKnfFFmsa8T6afRSDcuHuDLYWty41nmwg+3+hIcCOGTSs7a1pS+DbW1LGzQOXfygAQFY14j10+ilGpZnOIYhtqFtkJz61WbpPu8TT0RHxxZ43A8eqzatXTE0cQN2DMx7VgNuowe6dj/wmTji9Kukv6MPuJ/azPsNNXqphuUZjmHa5vATQXPqN0UW6xqxfhq9VMPyDMcwxLFrGySnflNksa4R66fRSzUsH+LKYNs213rKoOwfmh4CoPoD2PJxl88BqN789dU62y+DbZ2re3Dv0MW3SGZdI9ZPo5dqWJ7hGMZin3LxyKlfTZalvZ94iEPHFgDHeu/eunntKW+YuLa3X3T0X3W4xsbxV8dcN3LK15YteujD2N/RwW3SZJ5oqtFLNSzPcAwTXLQ2AnLqN0UW6xqxfhq9VMPyDMcwbXT8g1Fz6jdFFusasX4avVTD8iGuDLbB65Q1wP6hqXopcjXUVv93x4QBd355KbLd/oYum12lsFOKLNY1Yv00eqmG5RmOYcI73T5ETv1Ks/zNyg2HzXSjWwB3PDyu2LR2xd/f+5naYx7dwGj1TO2DPPCFXXtGe+44/Zt3LFq0iP0dHdxIaebJhhq9VMPyDMcwwUVrIyCnflNksa4R66fRSzUsz3AM00bHPxg1p35TZLGuEeun0Us1LB/iymAbvE5ZA8wfmg4HcCuA6msmBsa7OQnApwE8FsC/1dVheca2rpUN+4YuftghTFjXiPXT6KUalmc4hgnvQvsQOfUrzdLdO3wtgGUArts0tOLEez1T++aFfzqt0ayG2ocD7utN53vm9I3cIq0R2slYP41eqmF5hmOY0Jq1089z6jdFFusasX4avVTD8gzHMO10/kNZc+o3RRbrGrF+Gr1Uw/Ihrgy2oduU98+ZwXba+HfXVp/g+TIAowB6x1+KfCyAn9XVYhls61rZsG/o4ocdwoR1jVg/jV6qYXmGY5jwLrQPkVO/kixLe4evcED1AVBfH525d/GWNS+6ff+q77po4QOaaF7jHB7j4f+9o6PjubN6b/pV9XNJDWYXY/00eqmG5RmOYZh1axcmp35TZLGuEeun0Us1LM9wDNMuZ5/JmVO/KbJY14j10+ilGpYPcWWwZVd4LpEAACAASURBVG5Uvgwz2FbpPwxg/0vnqq/8mTP+suRT6mytDLZ1ru7BvUMX3yKZdY1YP41eqmF5hmMYi33KxSOnftksS1euv8Q5fy6A//IYXbJ56LQb96/n7WsWHjltevXyY/dkD/xX0zV6Du276Sf7f87WYPcn1k+jl2pYnuEYhl27duBy6jdFFusasX4avVTD8gzHMO1w7tmMOfWbIot1jVg/jV6qYfkQVwZb9lblybGD7SwAPQCqQfYwAMPjg+1tdbZVBts6V7cMtpNXIPTLbqoVk2pYnuEYpnUnyL5yTv0yWbpXDvfCYRDA7xyw5LqhFd/Zvyojl8zr7LqrsdE5/zcAfoVGo6dz1U33elsHU0OyyrF+Gr1Uw/IMxzCS9cudzanfFFmsa8T6afRSDcszHMPkfuYl+XLqN0UW6xqxfhq9VMPyIa4MtpKblR8bGmwfBuD3AOYC6Jgi/i8ANOtqqwy2da1s2Dd08cMOYcK6RqyfRi/VsDzDMUx4F9qHyKnfUJbu3uHqbRsfrFbXeSy5bu2K6tOQxx7ew+0anL8RHid6j981G2PP1N5g8RctB9vNUObQSdDopRqWZziGCfXcTj/Pqd8UWaxrxPpp9FINyzMcw7TT+Q9lzanfFFmsa8T6afRSDcuHuDLYhm5T3j8/2GA7A8BdAPoAnAXg6ClaqZ69vef9YtatlsHWekV5v9DF550OTFrXiPXT6KUalmc4hrHYp1w8cur3YFm6e9edBLjqw/XgvTt989pTPj5xDXdcPH/Y+bFXv+z0Td/Tdf72z0+1xtb9xvpp9FINyzMcw+Ryti1y5NRviizWNWL9NHqphuUZjmEszmUuHjn1myKLdY1YP41eqmH5EFcG21xurS7HwQbb6hnalQC+AuDxADqnKPFWAHfrSodVZbANr1FdROjiW9S1rhHrp9FLNSzPcAxjsU+5eOTU74GyLF217qnOu60AZsPjrE1rV7zjXkPtwPz9HyTVhPc9nau3X3eg9bXuN9ZPo5dqWJ7hGCaXs22RI6d+U2SxrhHrp9FLNSzPcAxjcS5z8cip3xRZrGvE+mn0Ug3Lh7gy2OZya3U5Qi9F3u/6jwC+BODH4/+h+gqgVwF4F4A/6kqHVWWwDa9RXUTo4lvUta4R66fRSzUsz3AMY7FPuXjk1O9UWZ67asNxo95vAfwD4fxFmwZPPX/i2u0cmP8eANXvUjS9XzFn9fb1B1tb635j/TR6qYblGY5hcjnbFjly6jdFFusasX4avVTD8gzHMBbnMhePnPpNkcW6RqyfRi/VsHyIK4NtLrdWlyM02D4DwN+O/2HsywB+NF7mAQBeCOAYADfpSodVZbANr1FdROjiW9S1rhHrp9FLNSzPcAxjsU+5eOTU7+QsJ/ZdNa/ZbFTvo30MHN63aXDF2AC7/7FjYP5bHXBO9e8eOKOrf+QjoXW17jfWT6OXalie4RgmtAft9POc+k2RxbpGrJ9GL9WwPMMxTDud/1DWnPpNkcW6RqyfRi/VsHyIK4Nt6Dbl/fPQYHsegLUHaKH6hM8nEu1V34NbPcN7ywS2elnznaEPniqDLbG6NSGhi29R1rpGrJ9GL9WwPMMxjMU+5eKRU78TsyxfvqFj90P9Fu/9s71zGzYPnnKvr0HbOTD/TQDGnr1terxqzuqR9zJrat1vrJ9GL9WwPMMxDLMP7cLk1G+KLNY1Yv00eqmG5RmOYdrl7DM5c+o3RRbrGrF+Gr1Uw/Ihrgy2zI3KlwkNtocAqL7q5zMAqpfRTfyQk+olyJ5o7W0A/hzACQCOBHAVgL0AHgTgEgAHfOaiDLbE6taEhC6+RVnrGrF+Gr1Uw/IMxzAW+5SLR079TszSvWp4HTxWAP6Ls2Z2LL56zcn3fO7AjoF5qxzcxePP1J7b1T9S/T6kHtb9xvpp9FINyzMcw1Ab0SZQTv2myGJdI9ZPo5dqWJ7hGKZNjj4VM6d+U2SxrhHrp9FLNSwf4spgS12pbKHQYLs/eDXcngGg+vqf6tEA8AgAzwOw4yDdnQjgFQCqZ22rwbYXwBwA/QDmA9g2/qFUu6byKINt685N6OJbJLOuEeun0Us1LM9wDGOxT7l45NTv/izdvcPV5wy8GsD3G02/5Nq3nHrPWzN2XDTvLOfcpWPr59z5nX3bLpKspXW/sX4avVTD8gzHMJL9yJ3Nqd8UWaxrxPpp9FINyzMcw+R+5iX5cuo3RRbrGrF+Gr1Uw/Ihrgy2kpuVH8sOtpsALJ0ifjWkHmiwfQiAywFUf5hbPT7Yfmj8Wd/h6o964y9FXgTgxjLYAqHLlvL4pMhiXSPWT6OXalie4Rgm5Zmpu1ZO/VZZXvfBb78RcBcC7jdN75Zcv/bk/9y/BjsHFpwJ+PdX/+7hBrv6t1VfmyZ6WPcb66fRSzUsz3AMI9qQzOGc+k2RxbpGrJ9GL9WwPMMxTOZHXhQvp35TZLGuEeun0Us1LB/iymArulrZwcxgWz3bumf8q3+qZ2CvBTA6/uFR1dcATfVy5Jnjn6L8UgBzAawZH2w3AKj+98nxldgO4EkAflkG2zLYxt6O0C+rkL9GL9WwPMMxTKjndvp5Tv1ece3X/ae+/qvq199uAIs3DZ1afbje2GPHRQtOd85fOTbUOn9ZV9/212vW2brfWD+NXqpheYZjGM2+5KrJqd8UWaxrxPpp9FINyzMcw+R61jW5cuo3RRbrGrF+Gr1Uw/Ihrgy2mhuWj4YZbKuXHVeDbPWSuuoDnx4D4FwAPxx/OfJPpminetnxZwFUHzB1GIBjAXwAwG8B3A7gMgDV9+TeNj74NgcHB9c4Vz37ce/H8uXL81mtkqSsQFmB//Mr8L1f3Iorv/iLsXU4428eikf/SfXZePseM3/9Zcy9oXqnBbBr0XNx+xOqz98rj7ICZQXKCpQVKCtQVqCdVmDRokXMjNROLf2fyMpuWvXsw+kATgWwbsLKHOilyLPHvwqoQh8N4GwA1YT62PH3o1WDb/Xv1X8//kArXd5j27ozGPobLYtk1jVi/TR6qYblGY5hLPYpF48c+j2xb8Ozm83m1upzBpzDK64bXDH2cuPqsfPi+UvgcU31mQLe42Ndq0deHLN21v3G+mn0Ug3LMxzDxOxPbtqc+k2RxbpGrJ9GL9WwPMMxTG5nPCZPTv2myGJdI9ZPo5dqWD7ElWdsY25a67XsYFt9OnI1jH4BwMkAHgdgPYB/IVqovhKoep9tpa8+hOp6AMeN//OzAXyrDLb7ViB02Yi1NkNSZLGuEeun0Us1LM9wDGN2IDIwanW/3X3Dj3VNt8XDH7308ffHK1/wlHt+f94xMP8ZDWAjgEOrt1p09o9Ev9TEut9YP41eqmF5hmOYDI61WYSc+k2RxbpGrJ9GL9WwPMMxjNnhzMAop35TZLGuEeun0Us1LB/iymCbwYWNiMAMttV7bG8FcB2A0yJqTZQ+AMDI+Ht3D2hZnrE1Wm2FTejiKyzvI7GuEeun0Us1LM9wDGOxT7l4tLLfJed84kGN6R1bqrdfeLhL3/kPj3/9/pcp7bp43pO8d9UztfMAbJ69Z6THrRn7SrOoh3W/sX4avVTD8gzHMFEblJk4p35TZLGuEeun0Us1LM9wDJPZEY+Kk1O/KbJY14j10+ilGpYPcWWwjbpqLRczg20V8h0AXgugeob1xxM+MKr6uh7mu2xVjZbBVrVsJqLQxbcoYl0j1k+jl2pYnuEYxmKfcvFoVb8nnHtl54zpM7bA46kArtw0tOLv9mfZMXD0oxpobPTAn3jgS3ftubvniDW3Vp8jEP2w7jfWT6OXalie4RgmepMyMsip3xRZrGvE+mn0Ug3LMxzDZHS8o6Pk1G+KLNY1Yv00eqmG5UNcGWyjr1tLDdjBtvr04qOnSFp9MJTJH+KmWoUy2LbubIQuvkUy6xqxfhq9VMPyDMcwFvuUi0er+u1eOfwZOPRUb6PYNLRi7GvPqixHXvWXx05rdFQvP67eWvFNj2ZPV//N1e9Kk4d1v7F+Gr1Uw/IMxzAmG5WJSU79pshiXSPWT6OXalie4Rgmk6NtEiOnflNksa4R66fRSzUsH+LKYGty5Vpmwg62vQA6p0hZvXf2rrrSl8G2rpUN+4YuftghTFjXiPXT6KUalmc4hgnvQvsQrei3u3f4gwBeVn0WgMfo4s1Dp1Wf5I5f/uCb/qhrer4L4PEe+I+9Td8z9/zt/225mtb9xvpp9FINyzMcw1juV6u9cuo3RRbrGrF+Gr1Uw/IMxzCtPtOW9XPqN0UW6xqxfhq9VMPyIa4MtpY3L70XO9hW32cxFVu997a2Rxlsa1vaoHHo4gcNCMC6RqyfRi/VsDzDMQyxDW2DpO53ae+6IQe3EsDPMTq6ZNMlp/2sWqw/rrn//ZoL/+z3M275Pjzcz7zzPXP6Rn5kvZDW/cb6afRSDcszHMNY71kr/XLqN0UW6xqxfhq9VMPyDMcwrTzP1rVz6jdFFusasX4avVTD8iGuDLbWty+tHzvYlpciJ9iX0GVLEOGeEimyWNeI9dPopRqWZziGSXlm6q6Vst9lq9af672/pPqubdfEkuvesuKbVX+/fv39Zx1+xJ6NzrkT4PAbONfTuWrb9+ro3brfWD+NXqpheYZjmDr2rVWeOfWbIot1jVg/jV6qYXmGY5hWneU66ubUb4os1jVi/TR6qYblQ1wZbOu4gek82cH2jQCq76ytHl0AVlR/xhv/XtryUmSj/QpdNqMylE2KLNY1Yv00eqmG5RmOYajNbhMoVb/dq4bPgMc/VcviHJZdN7hi0/4l2jkw7zOA62nOOBR+zx1PO7Rv29fqWj7rfmP9NHqphuUZjmHq2rtW+ObUb4os1jVi/TR6qYblGY5hWnGO66qZU78psljXiPXT6KUalg9xZbCt6xam8WUH28lpzgDG/uB3v+oZjbqilpci17WyYd/QxQ87hAnrGrF+Gr1Uw/IMxzDhXWgfIkW/3SvXL4Pz11ar4p17yebBUz66f4V2XLTgKuf8qQDuvO3pl866/5NP1f7+pBbdut9YP41eqmF5hmMYaiPaBMqp3xRZrGvE+mn0Ug3LMxzDtMnRp2Lm1G+KLNY1Yv00eqmG5UNcGWypK5UtxP7BbBmAmeNddAB4EYDq00H/pPoclbq6K4NtXSsb9g1d/LBDmLCuEeun0Us1LM9wDBPehfYh6u536cp1f+Wc2zr26hSHczYNrnj7/tXZefGCD8H7l1b/PtpsnnTLC7/xmf3fY1vXClr3G+un0Us1LM9wDFPX3rXCN6d+U2SxrhHrp9FLNSzPcAzTinNcV82c+k2RxbpGrJ9GL9WwfIgrg21dtzCNLzvYTvUe2xuAse91LN9ja7RXoctmVIaySZHFukasn0Yv1bA8wzEMtdltAtXZ75JVw8c2mtgKV/1lnR/cNHRq3/8OtfPfBY9Xjz2L6/0Lu1ZvX1dnlv11rWvE+mn0Ug3LMxzDtMnRp2Lm1G+KLNY1Yv00eqmG5RmOYaiD1yZQTv2myGJdI9ZPo5dqWD7ElcG2TS71AWKyg+3fTHjGthpkq/fX/gTA3XW2X56xrXN1D+4duvgWyaxrxPpp9FINyzMcw1jsUy4edfV70qpPH7HH370FwBMc8IHrhla8fH/POwbmv8UBb9j37/6lnf3bx957W1eWiWttXSPWT6OXalie4Rgml7NtkSOnflNksa4R66fRSzUsz3AMY3Euc/HIqd8UWaxrxPpp9FINy4e4Mtjmcmt1OZjBdh6AFwI4FsBNAKpnar8D4A5dSV5VBlt+razJ0MW3qGddI9ZPo5dqWJ7hGMZin3LxqKvfZb3rt3j45wDuU5uGTnnB/n53DsxfA+DC6t+bHq+Zs3rk3ft/VleWMtj+wjMv8WbWn2FyOdsWOXLqN0UW6xqxfhq9VMPyDMcwFucyF4+c+k2RxbpGrJ9GL9WwfIgrg20ut1aXIzTYPhzAj6ewrobaJwP4T11ZTlUGW26d6qBCF9+ipnWNWD+NXqpheYZjGIt9ysWjjn6X9a7/mId/EeC/MuuujsVXX3rynVW/Owbmr3TAUPXPHjivq3+k+uqfex51ZJm8ztY1Yv00eqmG5RmOYXI52xY5cuo3RRbrGrF+Gr1Uw/IMxzAW5zIXj5z6TZHFukasn0Yv1bB8iCuDbS63VpcjNNh+CcDTAZwL4BvVExcAnglgAED1vY7H68pyqjLYcutUBxW6+BY1rWvE+mn0Ug3LMxzDWOxTLh7W/Xb3Dl8G4HUAftDR4ZdcM3Bq9RYL7BqY9xoP986xvh0u7OwbeVPdQ+dUa2zdb6yfRi/VsDzDMUwuZ9siR079pshiXSPWT6OXalie4RjG4lzm4pFTvymyWNeI9dPopRqWD3FlsM3l1upyhAbb6v20nwXwnEn21aeFvn78fbfle2x1a38fVeiyGZWhbFJksa4R66fRSzUsz3AMQ212m0CW/XavXL8azr8ZcNuaDbfk+otP/vdqGXYOzHsZ4D5Y/bMH1nb1j/SmGDpT1IhdP41eqmF5hmOYNjn6VMyc+k2RxbpGrJ9GL9WwPMMxDHXw2gTKqd8UWaxrxPpp9FINy4e4Mti2yaU+QExmsD0fwEWT9NWHq1wO4DAAt9e1BOUZ27pWNuwbuvhhhzBhXSPWT6OXalie4RgmvAvtQ1j1u3Tl8Cudw3u993vgmks2D532+WoVdly04DTn/MfHhlrn3tnVt616NnfKh1WWg62+dY1YP41eqmF5hmOY9jn94aQ59Zsii3WNWD+NXqpheYZjmPCpax8ip35TZLGuEeun0Us1LB/iymDbPvd6qqTMYFu95Pgrk8SPBfDsMtjabn7ostlWO7hbiizWNWL9NHqphuUZjmFSnpm6a1n0u7R3eLkDNuzL6ldsGjp1ffVPuy5acJJ3/tNj/9m5D3b2bTsz5dA5VS2Lfif6xvpp9FINyzMcw9R9ZlP659RviizWNWL9NHqphuUZjmFSnt+6a+XUb4os1jVi/TR6qYblQ1wZbOu+jfX6M4PtwRKUZ2wN9yd02QxLBa1SZLGuEeun0Us1LM9wDBPc6DYCYvtd1nvVM5vebXXOTXfAq64bWvHeqv0dgwue02j6jR44xHv/ia7V218UWpbYLCH/6ufWNWL9NHqphuUZjmGYfWgXJqd+U2SxrhHrp9FLNSzPcAzTLmefyZlTvymyWNeI9dPopRqWD3FlsGVuVL5MaLB9aCD6jeMfKFVLh+WlyLUsK2UauviUSQCyrhHrp9FLNSzPcAxjsU+5eMT0e2LfJx/VbI5uBfwC73Hh5rUrxj4Q6o6L5/91w/uNgJsL4NOd/SPPZ/qNycL4l8H24KvErD/DsHvRDlxO/abIYl0j1k+jl2pYnuEYph3OPZsxp35TZLGuEeun0Us1LB/iymDL3qo8udBg29LUZbBt3fKHLr5FMusasX4avVTD8gzHMBb7lIuHtt/u/g3HYLS5FcAjAffOTUOnjL13dufg/CegiWsAVMPu1m3bu3oe9q6fUx+Gp80iWUvrGrF+Gr1Uw/IMxzCS/cidzanfFFmsa8T6afRSDcszHMPkfuYl+XLqN0UW6xqxfhq9VMPyIa4MtpKblR9bBtuM9iR02VJGTZHFukasn0Yv1bA8wzFMyjNTdy1Nv09fc8XMrt2ztox/bdknNg2tGHuZ8R0D8x7ZAVe9/HiRB76yZ8/unsPX/OEPbA+aLKz3fs66RqyfRi/VsDzDMYx0T3Lmc+o3RRbrGrF+Gr1Uw/IMxzA5n3dptpz6TZHFukasn0Yv1bB8iCuDrfR25cWXwTaj/QhdtpRRU2SxrhHrp9FLNSzPcAyT8szUXUvTb/eq9VfD+xfA47Obhk5ZDOf87sF5DxltuuqZ2kcC+Dawt6ez/3fbJPk1WST+FWtdI9ZPo5dqWJ7hGEa6JznzOfWbIot1jVg/jV6qYXmGY5icz7s0W079pshiXSPWT6OXalg+xJXBVnq78uLLYJvRfoQuW8qoKbJY14j10+ilGpZnOIZJeWbqriXtd+nK4cudw8u9x3ebjcaSLYMn37Jz4MgFwLSNAJ7ogR/sbTZ75p5/8y+k2aVZpP5lsD34ijHrzzCafclVk1O/KbJY14j10+ilGpZnOIbJ9axrcuXUb4os1jVi/TR6qYblQ1wZbDU3LB9NGWzz2QvzZ2hiWgtd/Bjv/VrrGrF+Gr1Uw/IMxzAW+5SLh6Tfpb3DFzmgHw7/7dBcct3gC39y25q5c6dPn7nRAX9dPSHahO+Z07/9B5r+JFk0/mWwLYOt9NykOJNsphRZrGvE+mn0Ug3LMxzDsPvdDlxO/abIYl0j1k+jl2pYPsSVwbYdbvSBM5bBNqP9C122lFFTZLGuEeun0Us1LM9wDJPyzNRdi+13We+613u4t1dvpW04t/jawVNu8GuOm7Fz2q3XOIfnwOEmOPR0rhr5jjYzm0XrXwbbMthKz06KM8lmSpHFukasn0Yv1bA8wzEMu9/twOXUb4os1jVi/TR6qYblQ1wZbNvhRpfBti12KXTZUjaRIot1jVg/jV6qYXmGY5iUZ6buWky/y1atO917d2WVpenRc/3aFdV7abFzYP6nADzPe/8H33A9c/pGvhKTl8kS418G2zLYSs9PijPJZkqRxbpGrJ9GL9WwPMMxDLvf7cDl1G+KLNY1Yv00eqmG5UNcGWzb4Ua3brCdAWAagF2TInQCuDP0Hbjl635ad7hCF98imXWNWD+NXqpheYZjGIt9ysUj1G/3qvVL4P3mKq+He+nmoVP+qfrnHRfN+7hz7jQAd1VDbdeqbdVX/0Q9QlmizMfF1jVi/TR6qYblGY5hLPYpF4+c+k2RxbpGrJ9GL9WwPMMxTC5n2yJHTv2myGJdI9ZPo5dqWD7ElcHW4sa1zqPOlyIPAXgmgB8BmAug+oPlLABXAdgL4EEALgHwkQO1Xwbb1h2M0MW3SGZdI9ZPo5dqWJ7hGMZin3LxOFi/3f0bnjj+XbWHAzhv09CK6ncLdl604ANw/h+qf2469/w5fds+bdFPirW3rhHrp9FLNSzPcAxjcRZy8cip3xRZrGvE+mn0Ug3LMxzD5HK2LXLk1G+KLNY1Yv00eqmG5UNcGWwtblzrPOoabKtnZL9UffLoeGv/AuAtAI4DMAfVh7oA8wFUX7FRsZOf0R2TlcG2dQcjdPEtklnXiPXT6KUalmc4hrHYp1w8DtTv4jcML+roQPUs7EPh8ZZNa1esrDLvuHjBO5z3r63+2Xv3oq7V2z5h1UuKtbeuEeun0Us1LM9wDGN1HnLwyanfFFmsa8T6afRSDcszHMPkcK6tMuTUb4os1jVi/TR6qYblQ1wZbK1uXWt86hps93dTfU/kGQBeBODh48/Qfh7AMICqdhPAIgA3TtV+GWxbcyiqqqGLb5HMukasn0Yv1bA8wzGMxT7l4jFVvz1nXTF378xZWwD8pfP48HVrV7ysyrvr4gWD3vvefdn9P3T2b/+QZR8p1t66RqyfRi/VsDzDMYzlmWi1V079pshiXSPWT6OXalie4Rim1Wfasn5O/abIYl0j1k+jl2pYPsSVwdby5qX3qnuwfRSAV46/DLkHwCsAbADwyfFWtwN4EoBfDg4OrnHOXTh5CZYvX55+VUrFsgJlBdpiBT7w2Z/hh7/6A/78wYfjZc9+6Fjmrh9cga4f7Jtjb3/sWdh1bPkd0habWUKWFSgrUFagrEBZgUxWYNGiRXXPSJl0+v9XjLo27RgAjwcw9omkAN4M4Mjxlx7fDuAyAB0Abht//231zO19HuUZ29YdttDfaFkks64R66fRSzUsz3AMY7FPuXhM7ndZ77qPeLi/A/y/zJrZsfjqNSfv2DEw/w1u39se4IHerv6RtXXkT7H21jVi/TR6qYblGY5h6jgbrfLMqd8UWaxrxPpp9FINyzMcw7TqLNdRN6d+U2SxrhHrp9FLNSwf4soztnXcwHSedQ221Qe4/ATAYwCMAPgYgOrrNap/fjWAEwBUT6OcDeD4A7VbBtt0B2FypdDFt0hmXSPWT6OXalie4RjGYp9y8ZjYb3fv+rcC/hwAP94Lv2Tr0Km/3Dkw/1UA3j2e942d/SNr6sqeYu2ta8T6afRSDcszHMPUdT5a4ZtTvymyWNeI9dPopRqWZziGacU5rqtmTv2myGJdI9ZPo5dqWD7ElcG2rluYxreuwbZKfwGAcwH8EcD3AZwOYDeA68c/RKr6hORnA/hWGWz3rUDosqU5EumyWPcb66fRSzUsz3AMk/LM1F1rf7/dvetXAf5iB3dzE27J5qGTv7dzYN7fA+7D48/UXtLVP3JenXlSrL11jVg/jV6qYXmGY5g6z0hq75z6TZHFukasn0Yv1bA8wzFM6jNcZ72c+k2RxbpGrJ9GL9WwfIgrg22dN7F+7zoH2yp9NbzOHH/J8cRuHjD+7O2eg7VYnrGt/wAcqELo4lsks64R66fRSzUsz3AMY7FPuXhU/b7uQ989E95/APBN7xtLNq895bO7Buat8HDrxnI6vLuzb+Q1dWdOsfbWNWL9NHqphuUZjmHqPicp/XPqN0UW6xqxfhq9VMPyDMcwKc9v3bVy6jdFFusasX4avVTD8iGuDLZ138Z6/esebKPSl8E2avmixKGLH2U+LrauEeun0Us1LM9wDGOxT7l4fPoL3/X/9Lmf75tfvT/turWnXrXzonnPhXMb9/1H9+HOvm1jn4pc9yPF2lvXiPXT6KUalmc4hqn7nKT0z6nfFFmsa8T6afRSDcszHMOkPL9118qp3xRZrGvE+mn0Ug3Lh7gy2NZ9G+v1L4Ntvesrcg9dNpFZJJwii3WNWD+NXqpheYZjmMhjkI38xJXrn9Yx3X1lz94mnMdrr1u74l073rzwhEajudEDs7x367pWb3thqsAp1t66RqyfRi/VsDzDMUyq85KiTk79pshiXSPWT6OXalie4RgmxblNVSOnflNksa4R66fRSzUsH+LKYJvqVtZTMiUGCgAAIABJREFUpwy29ayryjV02VSmSlGKLNY1Yv00eqmG5RmOYZTbn5Vs2cqr/sw7txVw9/cOb9o8uOLCOy9a+JSma1afun4/wG/s7N9+UsrQKdbeukasn0Yv1bA8wzFMyjNTd62c+k2RxbpGrJ9GL9WwPMMxTN1nNqV/Tv2myGJdI9ZPo5dqWD7ElcE25c20r1UGW/s1VTuGLpvaWCFMkcW6RqyfRi/VsDzDMYxi67OSnNh31bzmaGMrHB791OOOxsoXP9PtHFzwOOf9Ru9xf+/9P9/2++k9D7j0N3emDJ5i7a1rxPpp9FINyzMcw6Q8M3XXyqnfFFmsa8T6afRSDcszHMPUfWZT+ufUb4os1jVi/TR6qYblQ1wZbFPeTPtaZbC1X1O1Y+iyqY0VwhRZrGvE+mn0Ug3LMxzDKLY+G8nT13xpWted26uh9llwGH7Hy56w4uj1T/6zDu82eviHeeBro3um9Ry25je3pg6dYu2ta8T6afRSDcszHMOkPjd11sup3xRZrGvE+mn0Ug3LMxzD1HleU3vn1G+KLNY1Yv00eqmG5UNcGWxT307bemWwtV3PKLfQZYsyF4pTZLGuEeun0Us1LM9wDCPc9qzw7t7hYQCnAPj8jpnzFn/kedP3HHndC/7DAY8C8F3np/XMXv2b37YidIq1t64R66fRSzUsz3AM04qzU1fNnPpNkcW6RqyfRi/VsDzDMUxdZ7UVvjn1myKLdY1YP41eqmH5EFcG21bcULuaZbC1W8top9Bliy4gMEiRxbpGrJ9GL9WwPMMxjGDLs0K7V61/N7x/FYB/a442lmyY+2q/94g/H5n++x/CAz8abY72HHb+LT9rVegUa29dI9ZPo5dqWJ7hGKZV56eOujn1myKLdY1YP41eqmF5hmOYOs5pqzxz6jdFFusasX4avVTD8iGuDLatuqU2dctga7OOJi6hy2ZShDRJkcW6RqyfRi/VsDzDMQy53VlhS1cNv9F5XADgV843l3xk1qt/fcj0GRsd8AwA/+3R7Onqv/k/Whk6xdpb14j10+ilGpZnOIZp5Rmyrp1TvymyWNeI9dPopRqWZziGsT6jrfTLqd8UWaxrxPpp9FINy4e4Mti28qbG1y6DbfwamjmELptZIcIoRRbrGrF+Gr1Uw/IMxzDEVmeFLFs5/Brv8E4Au9xoc8m1nS+8Ydf0+dX31C5tzrwfmnf+/vjDVm//ZqtDp1h76xqxfhq9VMPyDMcwrT5HlvVz6jdFFusasX4avVTD8gzHMJbns9VeOfWbIot1jVg/jV6qYfkQVwbbVt/WuPplsI1bP1N16LKZFguYpchiXSPWT6OXalie4Rgm5ZmJrbVs5boXeuc+Ufl4h+dvHlzx6Z0D868G8AIP3H7bM9916AOOX57F76wUa29dI9ZPo5dqWJ7hGCb2zOakz6nfFFmsa8T6afRSDcszHMPkdL5js+TUb4os1jVi/TR6qYblQ1wZbGNvW2v1Wfwh8UBLMDQ05Ht7e7POaLl9octmWSvklSKLdY1YP41eqmF5hmOY0D7n8vPu3uETAGwF4ODcmZsGT/ngjovmX+kcTgewBw49I6fcsHnRokVZ/D5IsfbWNWL9NHqphuUZjmFyOf8WOXLqN0UW6xqxfhq9VMPyDMcwFucyF4+c+k2RxbpGrJ9GL9WwfIgrg20ut1aXI4s/JJbBdt8KhC6bbot1qhRZrGvE+mn0Ug3LMxzD6HY/rWpp7yce53xH9bU+R8Jh1abBFUM7B+ZdDriXV0maDsvn9I18Mqd+U2SxrhHrp9FLNSzPcAyT9qTXWy2nflNksa4R66fRSzUsz3AMU++JTeueU78psljXiPXT6KUalg9xZbBNezetq5XB1npFI/xCly3CWixNkcW6RqyfRi/VsDzDMYx44xMLlvR/6kGN0T3VM7UPB/C2TUMrzt1x8bxLnXdnVVG8dy/uWr3tY+UvfuI3Jva8aPRSDcszHMPEr2o+Djn1myKLdY1YP41eqmF5hmOYfE53fJKc+k2RxbpGrJ9GL9WwfIgrg238fWulQxlsW7n6k2qHLlvKqCmyWNeI9dPopRqWZziGSXlmpLWWr9nQtWt3c6sDnuyBj2weWnHGzosXDMD7vn1e7uWd/ds+sN83p35TZLGuEeun0Us1LM9wDCM9sznzOfWbIot1jVg/jV6qYXmGY5icz7s0W079pshiXSPWT6OXalg+xJXBVnq78uLLYJvRfoQuW8qoKbJY14j10+ilGpZnOIZJeWaktZb2Dldf4fNcwF23aeiUE3devGA1vH/z+DO1r+9ave2yiZ459Zsii3WNWD+NXqpheYZjGOmZzZnPqd8UWaxrxPpp9FINyzMcw+R83qXZcuo3RRbrGrF+Gr1Uw/Ihrgy20tuVF18G24z2I3TZUkZNkcW6RqyfRi/VsDzDMUzKMyOp1d277sOA+3vAf2Pa7t1LPn7Uqpc64K1jQy18X1f/9sHJfjn1myKLdY1YP41eqmF5hmMYyZnNnc2p3xRZrGvE+mn0Ug3LMxzD5H7mJfly6jdFFusasX4avVTD8iGuDLaSm5UfWwbbjPYkdNlSRk2RxbpGrJ9GL9WwPMMxTMozw9bqXjm8Fg7nAfjp6CiWfPLws06Ax3vH9W/u7B+5YCqvnPpNkcW6RqyfRi/VsDzDMQx7ZtuBy6nfFFmsa8T6afRSDcszHMO0w7lnM+bUb4os1jVi/TR6qYblQ1wZbNlblSdXBtuM9iV02VJGTZHFukasn0Yv1bA8wzFMyjPD1OruHX4DgLcA7vfocEuGZ7/2OAdcse+ZWrytq3/k3AP55NRviizWNWL9NHqphuUZjmGYM9suTE79pshiXSPWT6OXalie4RimXc4+kzOnflNksa4R66fRSzUsH+LKYMvcqHyZMthmtDehy5Yyaoos1jVi/TR6qYblGY5hUp6ZUK2lvev+3sF9eIxzbumGrtd1eWD9uO69nf0jrzqYR079pshiXSPWT6OXalie4RgmdGbb6ec59Zsii3WNWD+NXqpheYZjmHY6/6GsOfWbIot1jVg/jV6qYfkQVwbb0G3K++dlsM1of0KXLWXUFFmsa8T6afRSDcszHMOkPDMHq7V01YYTnW9es2+m9S8e7jzrD3Cu+ndXfSJyV//IGaGsOfWbIot1jVg/jV6qYXmGY5jQmWunn+fUb4os1jVi/TR6qYblGY5h2un8h7Lm1G+KLNY1Yv00eqmG5UNcGWxDtynvn5fBNqP9CV22lFFTZLGuEeun0Us1LM9wDJPyzByo1omr1j+56X31XbVd3uH162e/7geNhtvogU7vsL6rb2QFkzOnflNksa4R66fRSzUsz3AMw5y7dmFy6jdFFusasX4avVTD8gzHMO1y9pmcOfWbIot1jVg/jV6qYfkQVwZb5kbly5TBNqO9CV22lFFTZLGuEeun0Us1LM9wDJPyzExV68TVG/50dO/Yd9U+2AMDV3e99nrvGtUztUcCuHZ230iPc9Xba8OPnPpNkcW6RqyfRi/VsDzDMUz41LUPkVO/KbJY14j10+ilGpZnOIZpn9MfTppTvymyWNeI9dPopRqWD3FlsA3fp5yJMthmtDuhy5Yyaoos1jVi/TR6qYblGY5hUp6ZybWWnXPVkX56o3qm9nGAv3z97HM+4KY1N3qPB3rvPr/jkGbP/Dds38lmzKnfFFmsa8T6afRSDcszHMOwZ68duJz6TZHFukasn0Yv1bA8wzFMO5x7NmNO/abIYl0j1k+jl2pYPsSVwZa9VXlyZbDNaF9Cly1l1BRZrGvE+mn0Ug3LMxzDpDwzk2t1rxreCo+/dcDVVx9+9vnNvc1rPPCngL9hdE9Hz6FrbvqdJF9O/abIYl0j1k+jl2pYnuEYRnL+cmdz6jdFFusasX4avVTD8gzHMLmfeUm+nPpNkcW6RqyfRi/VsHyIK4Ot5Gblx9Y92E6r3lcH4A+TWu8EcCeA5sGWZGhoyPf29tadMZtdCV22lEFTZLGuEeun0Us1LM9wDJPyzEys1d07/HEAp3mPL71j1lvOnD/9t1c7uEcD+FfnGz2zV9/0a2m2nPpNkcW6RqyfRi/VsDzDMYz0DObM59RviizWNWL9NHqphuUZjmFyPu/SbDn1myKLdY1YP41eqmH5EFcGW+ntyouvc2g8G8DLAXwLwKEAVgL4PYCrAOwF8CAAlwD4yIGWpAy2rTssoYtvkcy6RqyfRi/VsDzDMYzFPkk9unvXvwPwrwXwH8tmf/FFp3dcd7mH/ysP/KTZbPQcev5N/yX1rPic+k2RxbpGrJ9GL9WwPMMxjOYc5qrJqd8UWaxrxPpp9FINyzMcw+R61jW5cuo3RRbrGrF+Gr1Uw/Ihrgy2mhuWj6auwXYGgLvGn62t3kO3GsA8AL8FMAdAP4D5ALYBqJ693TXVkpTBtnUHJXTxLZJZ14j10+ilGpZnOIax2CeJx9KVwxc4hzdWd33R9F8/f2Dm2wYc8CwA/+PR0dPV/9t/l/hNZHPqN0UW6xqxfhq9VMPyDMcw2rOYoy6nflNksa4R66fRSzUsz3AMk+M512bKqd8UWaxrxPpp9FINy4e4Mthqb1keuroG26q7wwHcBmA2gC8AeAeAvwHweQDD1fdXjr8UeRGAG8tgW56Rir0SoV9WIX+NXqpheYZjmFDPlj9f1jv8jx54Dzzumtmxd+lHO899HYBlcLh5tNk86dDVN389pl5O/abIYl0j1k+jl2pYnuEYJuY85qbNqd8UWaxrxPpp9FINyzMcw+R2xmPy5NRviizWNWL9NHqphuVDXBlsY25a67V1DrZVd48FcAWAHwB4KYArAWwA8Mnx1rcDeBKAXw4ODq5xzl04eUmWL1/e+lUqCcoKlBU46Ar824234iNf+MUYc8azFuHpI5di5q++CD9tNm576iDunvf4soJlBcoKlBUoK1BWoKxAWYG2WIFFixbVPSO1xTq0W8g6N616+WH1ftrqvXbrxxfmAgC3A7gMQMf4M7pzD/QhUuWlyK07TqG/0bJIZl0j1k+jl2pYnuEYxmKfQh7d5617Fhqu+lqfaYB75fo5r6v+suolAEbhfE9n3/ZNIQ/m57n0W2VNkcW6RqyfRi/VsDzDMQxz7tqFyanfFFmsa8T6afRSDcszHMO0y9lncubUb4os1jVi/TR6qYblQ1x5xpa5UfkydQ22le8fx196/O0J7Z8I4NUATgBQPRVbfcDU8QdanjLYtu7ghC6+RTLrGrF+Gr1Uw/IMxzAW+3Qwj+6Vw38Bh2qone+A1cNzzjoGwCsrTRM4ZU7/SPUKDZNHDv3ubyRFFusasX4avVTD8gzHMCYHMxOTnPpNkcW6RqyfRi/VsDzDMUwmR9skRk79pshiXSPWT6OXalg+xJXB1uTKtcykrsH2oQB+Nqmrj47/gfd6AMcBmAXg2eOfmjzlApTBtmXnojwjRS596BfkZBuWZziGIdtQYYvP+/j9OxodWwH3Z87jsnVzzmo6N/aXVfAOL+nqG6nuvNmj1f1ObCRFFusasX4avVTD8gzHMGaHMwOjnPpNkcW6RqyfRi/VsDzDMUwGx9osQk79pshiXSPWT6OXalg+xJXB1uzatcSorsE21MwDAIwA2HMwsAy2oWWs7+ehi29R2bpGrJ9GL9WwPMMxjMU+TeXxkjVfmvm73TdvBfxfA/jY+q7X/Q+cqz79vJpqX9m5etvl1rVb2a/2Lyhi1sC631g/jV6qYXmGY5iY/clNm1O/KbJY14j10+ilGpZnOIbJ7YzH5Mmp3xRZrGvE+mn0Ug3Lh7gy2MbctNZrWzXYUp2XwZZaplqg0MW3KGpdI9ZPo5dqWJ7hGMZin6byWLpy+FPO4XmAu379oa+9Ad4NjM203p3TtXrb2+uo28p+y2Cre1+xdM9YnuEYpo5z2irPnPpNkcW6RqyfRi/VsDzDMUyrznIddXPqN0UW6xqxfhq9VMPyIa4MtnXcwHSeZbBNt9bBSqHLFjQwBFJksa4R66fRSzUsz3AMY3gk7rFa1jv8fg+cCe+//YFDV197GHZetO+HbnVn/7axAbeOR6v6naqXFFmsa8T6afRSDcszHMPUcU5b5ZlTvymyWNeI9dPopRqWZziGadVZrqNuTv2myGJdI9ZPo5dqWD7ElcG2jhuYzrMMtunWOlgpdNmCBoZAiizWNWL9NHqphuUZjmEMj8SY1bJV6we8931w+MUlnZdc+UD32zfuq+EHOvu373spck2PVvR7oFZSZLGuEeun0Us1LM9wDFPTUW2JbU79pshiXSPWT6OXalie4RimJQe5pqI59Zsii3WNWD+NXqph+RBXBtuaLmEi2zLYJlpopkzosjEeVkyKLNY1Yv00eqmG5RmOYazOQ+XTvWr4bHi8Dc79oW/m5e/6i2k/Pn9spIW/tKt/+9iHRtX5SN3vwXpJkcW6RqyfRi/VsDzDMUyd5zW1d079pshiXSPWT6OXalie4Rgm9Rmus15O/abIYl0j1k+jl2pYPsSVwbbOm1i/dxls619jukLostFGBmCKLNY1Yv00eqmG5RmOYQyOwphF98rhF8Nh7FOOXzFz3dpnTP/WynHvyzv7R8a+3qfuR8p+Q72kyGJdI9ZPo5dqWJ7hGCa0z+3085z6TZHFukasn0Yv1bA8wzFMO53/UNac+k2RxbpGrJ9GL9WwfIgrg23oNuX98zLYZrQ/ocuWMmqKLNY1Yv00eqmG5RmOYSzOzNKV65Y65zZVXisO2XzZSTM+9xoAHdWg29k38hKLGoxHqn5zyWLdb6yfRi/VsDzDMQyz1+3C5NRviizWNWL9NHqphuUZjmHa5ewzOXPqN0UW6xqxfhq9VMPyIa4MtsyNypcpg21GexO6bCmjpshiXSPWT6OXalie4Rgm9swsWbXuSQ00tsL7uYunf/XyM2Z++jQPzIHD1Z19IyfH+kv0Kfpl86TIYl0j1k+jl2pYnuEYht3vduBy6jdFFusasX4avVTD8gzHMO1w7tmMOfWbIot1jVg/jV6qYfkQVwZb9lblyZXBNqN9CV22lFFTZLGuEeun0Us1LM9wDBNzZk7s3fDQUd/c6hwWPXnav1352pkffQ4cjobHptnHjvS4kzEa4y/V1t2vJE+KLNY1Yv00eqmG5RmOYSR7njubU78psljXiPXT6KUalmc4hsn9zEvy5dRviizWNWL9NHqphuVDXBlsJTcrP7YMthntSeiypYyaIot1jVg/jV6qYXmGYxjtmelZ85m5e3fftRXAkx7V8V+fWj37fY/zwIO9xxfvnL6356iVv7tD663V1dmvNFOKLNY1Yv00eqmG5RmOYaT7njOfU78psljXiPXT6KUalmc4hsn5vEuz5dRviizWNWL9NHqphuVDXBlspbcrL74MthntR+iypYyaIot1jVg/jV6qYXmGYxjtmenuHd4MYMlDOn79z4Oz3/YAAI8A8I3mDN8z5w3bb9b6xujq7FeaK0UW6xqxfhq9VMPyDMcw0n3Pmc+p3xRZrGvE+mn0Ug3LMxzD5Hzepdly6jdFFusasX4avVTD8iGuDLbS25UXXwbbjPYjdNlSRk2RxbpGrJ9GL9WwPMMxjObMdPcOV59+/OL5Hb//5qWzB2Y20Hw04P797j3+pMPXjPxS42mhqatfTbYUWaxrxPpp9FINyzMcw2j2PldNTv2myGJdI9ZPo5dqWJ7hGCbXs67JlVO/KbJY14j10+ilGpYPcWWw1dywfDRlsM1nLxC6bCmjpshiXSPWT6OXalie4RhGemaW9q57u4N7/aFu50/e27XmjunY8wQP/NQ3Xc+c87f9WOpnydfRrzZfiizWNWL9NHqphuUZjmG0+5+jLqd+U2SxrhHrp9FLNSzPcAyT4znXZsqp3xRZrGvE+mn0Ug3Lh7gy2GpvWR66MtjmsQ9jKUKXLWXUFFmsa8T6afRSDcszHMNIzszSlev6nHMDM9zd2y/vvPC/O92dfwng14Dr6ezf9q8SrzpY635jMqbIYl0j1k+jl2pYnuEYJuYM5KbNqd8UWaxrxPpp9FINyzMcw+R2xmPy5NRviizWNWL9NHqphuVDXBlsY25a67VlsG39HtyTIHTZUkZNkcW6RqyfRi/VsDzDMQx7Zpb1bjjTo/l+AHvf13nhd+7X+OPxAH436hsnHbr6pn9hferkLPuNzZkii3WNWD+NXqpheYZjmNhzkJM+p35TZLGuEeun0Us1LM9wDJPT+Y7NklO/KbJY14j10+ilGpYPcWWwjb1trdWXwba163+v6qHLljJqiizWNWL9NHqphuUZjmGYM7Osd/3zPfwnK/bSzsGvL2xs/ysAuzyaPV39N3+O8UjBWPVrkTVFFusasX4avVTD8gzHMBZnIRePnPpNkcW6RqyfRi/VsDzDMUwuZ9siR079pshiXSPWT6OXalg+xJXB1uLGtc6jDLatW/v7VA5dtpRRU2SxrhHrp9FLNSzPcAwTOjPLVm34a++b1df6zByc/fZvPKTjV9UztR7O93T2bb82pE/5c4t+rfKmyGJdI9ZPo5dqWJ7hGMbqPOTgk1O/KbJY14j10+ilGpZnOIbJ4VxbZcip3xRZrGvE+mn0Ug3Lh7gy2Frdutb4lMG2Nes+ZdXQZUsZNUUW6xqxfhq9VMPyDMcwBzszS/uGH+maqIbaY1bPeu+3/3zaT59Y8U34U+f0bx9Oed6YWrH9MjVYJkUW6xqxfhq9VMPyDMcw7H63A5dTvymyWNeI9dPopRqWZziGaYdzz2bMqd8UWaxrxPpp9FINy4e4MtiytypPrgy2Ge1L6LKljJoii3WNWD+NXqpheYZjmAOdmSVv2DC/0TH2TO1fnD3rin990rTvP7ZivcPfd/WNXJHyrLG1Yvpla7BciizWNWL9NHqphuUZjmHY/W4HLqd+U2SxrhHrp9FLNSzPcAzTDueezZhTvymyWNeI9dPopRqWD3FlsGVvVZ5cGWwz2pfQZUsZNUUW6xqxfhq9VMPyDMcwU52Zx535/ukL7nfoVsA98+Uzh3/wzOnffOQY18CrOleNvDflOZPU0vYrqcGyKbJY14j10+ilGpZnOIZh97sduJz6TZHFukasn0Yv1bA8wzFMO5x7NmNO/abIYl0j1k+jl2pYPsSVwZa9VXlyZbDNaF9Cly1l1BRZrGvE+mn0Ug3LMxzDTHVmlq5at955d/LpMzf+tHv6l48de6bW4w1dq0femvKMSWtp+5XWYfgUWaxrxPpp9FINyzMcwzB73S5MTv2myGJdI9ZPo5dqWJ7hGKZdzj6TM6d+U2SxrhHrp9FLNSwf4spgy9yofJky2Ga0N6HLljJqiizWNWL9NHqphuUZjmEmn5nulcPvhcMrnz/js78++ZAtDxj/+QWd/SNvTnm+NLU0/WrqMJoUWaxrxPpp9FINyzMcwzB73S5MTv2myGJdI9ZPo5dqWJ7hGKZdzj6TM6d+U2SxrhHrp9FLNSwf4spgy9yofJky2Ga0N6HLljJqiizWNWL9NHqphuUZjmEmnpnu3vVvAvz5z5n+1d+fMfPTR+z7mRvs7N/Wl/JsaWtJ+9XWYXQpsljXiPXT6KUalmc4hmH2ul2YnPpNkcW6RqyfRi/VsDzDMUy7nH0mZ079pshiXSPWT6OXalg+xJXBlrlR+TJlsM1ob0KXLWXUFFmsa8T6afRSDcszHMPsPzPdK4dfB4fLnjb9O7tfNfMTM6v/7uHe0dW/7ayU5yqmlqTfmDqMNkUW6xqxfhq9VMPyDMcwzF63C5NTvymyWNeI9dPopRqWZziGaZezz+TMqd8UWaxrxPpp9FINy4e4MtgyNypfpgy2Ge1N6LKljJoii3WNWD+NXqpheYZjmOrMdPcOnwbg40+c9h84Z9Y/jR8j/4HO/u0vT3mmYmux/cbWYfQpsljXiPXT6KUalmc4hmH2ul2YnPpNkcW6RqyfRi/VsDzDMUy7nH0mZ079pshiXSPWT6OXalg+xJXBlrlR+TIpBtsuADvHniD630cngDvHvjLzII+hoSHf29ubImMWOxS6bClDpshiXSPWT6OXalie4Rhmad/6v3VNv/XR036MlbM+MNqA73AOH5vdN/LilOfJohbTr0UdxiNFFusasX4avVTD8gzHMMxetwuTU78psljXiPXT6KUalmc4hmmXs8/kzKnfFFmsa8T6afRSDcuHuDLYMjcqX6bOofFoAI8C8GkADwVwM4AjAVwFYC+ABwG4BMBHDrQ8ZbBt3cEJXXyLZNY1Yv00eqmG5RkuxCw5b93jGw1sPa7jF0f0z7p89zS3t3oJ8qc6+0deYLF/qT1C/abMkyKLdY1YP41eqmF5hmOYlGem7lo59Zsii3WNWD+NXqpheYZjmLrPbEr/nPpNkcW6RqyfRi/VsHyIK4NtyptpX6vOwfb5AJ4M4PUA5o0Ptr0A5gDoBzAfwDYA1bO3u6ZqrQy29hvOOoYuPutzMM66RqyfRi/VsDzDHYzp6V334L1wWx/a8as/XT3rPTtnubs64XD97COO6XEv/94ei/1L7cGsSapMKbJY14j10+ilGpZnOIZJdV5S1Mmp3xRZrGvE+mn0Ug3LMxzDpDi3qWrk1G+KLNY1Yv00eqmG5UNcGWxT3cp66tQ52O5PXL0Eef9g+yEAnwcwXH0c6/hLkRcBuLEMtkDostVzBKZ2TZHFukasn0Yv1bA8wx2IOfG8D89pNjq3PrCx7a/On/2eOw51O+Z4jy/fPe2unvv13vbHlOfIshazJpb1Uv6lzFS1rPuN9dPopRqWZziGSXVeUtTJqd8UWaxrxPpp9FINyzMcw6Q4t6lq5NRviizWNWL9NHqphuVDXBlsU93KeuqkHmw3AKj+98nxdrYDeBKAX5bBtgy2sUc89Msq5K/RSzUsz3AHYrp7118zr3HLiefPfu8dR7lbq1dIfMtPH+3pOu+WkdAa5PxzZk1S5U+RxbpGrJ9GL9WwPMMxTKoolxodAAAgAElEQVTzkqJOTv2myGJdI9ZPo5dqWJ7hGCbFuU1VI6d+U2SxrhHrp9FLNSwf4spgm+pW1lMn9WB7AYDbAVwGoAPAbQDmVs/cDg4OrnHOXTi5zeXLl9fTeXEtK/D/4Qpc9dX/xk9/+gusPvQK3L/5S+yduwi3PWUIo10L/z/strRUVqCsQFmBsgJlBcoKlBWwX4FFixalmJHsg/8fd0yxaRNfinwigFcDOAFANbGeDeD4A+1BeY9t605n6G+0LJJZ14j10+ilGpZnuMlMd+/wWzrdnW/om3X5rod2/M9sAD9vjqJnzgUjP7TYr1Z7MGuSKmOKLNY1Yv00eqmG5RmOYVKdlxR1cuo3RRbrGrF+Gr1Uw/IMxzApzm2qGjn1myKLdY1YP41eqmH5EFeesU11K+upk2qwrT4h+RYAswBcD+C48X9+dvUyyTLY7luB0GWr5whM7Zoii3WNWD+NXqpheYabyCztXbdyBkaHeme//+5HdvxsBuB/C9/o6Vy97bspz02dtZg1qbP+RO8UWaxrxPpp9FINyzMcw6Q6Lynq5NRviizWNWL9NHqphuUZjmFSnNtUNXLqN0UW6xqxfhq9VMPyIa4MtqluZT11Ugy2UyV/AIDq/X4H/XTW8oxtPZvOuIYuPuMRYqxrxPpp9FINyzPcfmbZqnUv9d596JxZH8YTp/1ntey3Nr07ac7qbV8N7UE7/ZxZk1T9pMhiXSPWT6OXalie4Rgm1XlJUSenflNksa4R66fRSzUsz3AMk+LcpqqRU78psljXiPXT6KUalg9xZbBNdSvrqdOqwZbqpgy21DLVAoUuvkVR6xqxfhq9VMPyDFcxZ73/Wyf5RuMzr5n5MTxl+veqbdnt4Xq6+rd91mKPcvJg1iRV3hRZrGvE+mn0Ug3LMxzDpDovKerk1G+KLNY1Yv00eqmG5RmOYVKc21Q1cuo3RRbrGrF+Gr1Uw/Ihrgy2qW5lPXXKYFvPuqpcQ5dNZaoUpchiXSPWT6OXalj+QNyaNWsa39398CsALJk1o+PIO+8e3XvmzOFpz5r+zX077RondfbdtFG57VnL2LVL0USKLNY1Yv00eqmG5RmOYVKclVQ1cuo3RRbrGrF+Gr1Uw/IMxzCpzm6KOjn1myKLdY1YP41eqmH5EFcG2xQ3sr4aZbCtb23FzqHLJjaMEKTIYl0j1k+jl2pY/kDc0lXrL+nCrnMf1rHvG7J+OvpgnDD9Bpx6yCZ4+NO6+rdfFbHtWUvZtUvRRIos1jVi/TR6qYblGY5hUpyVVDVy6jdFFusasX4avVTD8gzHMKnOboo6OfWbIot1jVg/jV6qYfkQVwbbFDeyvhplsK1vbcXOocsmNowQpMhiXSPWT6OXag7G95x1xdy7Zk1f2PDTF57+9D/53Me/dOMq18BC77EQcAvh/MKHuxsf2Dv7/W6Wu2tsd+/0M7HhrsX4u1mfflln3/YPR2x59lLpWtfZUIos1jVi/TR6qYblGY5h6jwjqb1z6jdFFusasX4avVTD8gzHMKnPcJ31cuo3RRbrGrF+Gr1Uw/Ihrgy2dd7E+r3LYFv/GtMVQpeNNjIAU2SxrhHrp9GzmhP7rprX3NM45swlD/ve+z/7s5c7+IXwWOhcY6Gv/hnV8Ip5U21dA00c7m7H3MbteO6ML+BJ075/L+w/R4+97S8v+Or9DLY9awt2rVM0kSKLdY1YP41eqmF5hmOYFGclVY2c+k2RxbpGrJ9GL9WwPMMxTKqzm6JOTv2myGJdI9ZPo5dqWD7ElcE2xY2sr0YZbOtbW7Fz6LKJDSMEKbJY14j10+h/+rOf+7M+8v0HN5qjCzE6egw69j3D6qpnWKtnWh0WelT/jsOm2o657nYc3rgd1f+t/neUu+2Ooxq37j6q0x81d/evth/qdsyY5XZ3NdCcXun/4OdgrrvjXla/b8794QPP/8kjI7a7LaSa/amrsRRZrGvE+mn0Ug3LMxzD1HU+WuGbU78psljXiPXT6KUalmc4hmnFOa6rZk79pshiXSPWT6OXalg+xJXBtq5bmMa3DLZp1pmqErpslIkRlCKLdY1Yv8n6E8+7Zg5m3LUQTb9wdHT0GIeOsZcDO2BhsxpWPRZOn9b4kz2jzfus+qFuxz3PslYD6/3c7aNHult3zJu957C5d//mlkPdHdO73O5ZHdh7CLdlfg/gto1///NR99J4/8HO1dvP5Hzal4rdX8vOU2SxrhHrp9FLNSzPcAxjeSZa7ZVTvymyWNeI9dPopRqWZziGafWZtqyfU78psljXiPXT6KUalg9xZbC1vHnpvcpgm37ND1gxdNlSRk2RxbqGxG/xqg1HdTSbC10HFsL7hc2mO+Ypxx31xht+fMt14y8LXuCA+R5oTFz3Lrdr7JnV/S8Nrv75CPeHu49s3HrnEe4PzbmNOxpz3K5DpmPPTHK/PIDfAqiG1hHAb4N3I7c/4dwLDv3e209yzdERh8a2mYd2jrjX/vyuO9684BHO+U85h0dU/h74UdM1nn9o300/Ieu1LSbZ37qbTJHFukasn0Yv1bA8wzFM3eckpX9O/abIYl0j1k+jl2pYnuEYJuX5rbtWTv2myGJdI9ZPo5dqWD7ElcG27ttYr38ZbOtdX5F76LKJzCLhFFmsa1R+vb3fm3b3saML9zSxsOE7FqLhx55ZhW8e0xx7T6tbAPgFgDti4hLNdrvveTnwxJcGH+lu231k47a757rb3Ry3c/osdxc7sFb2N40NrA5jw2o1tN7+uHPO7/rXtz+/A6Pb7h51I4eNztrm1vxy9+TtCq3NXWsXPGLkhI//6EGPeVbWdzjyGN5LHloTy1ohrxRZrGvE+mn0Ug3LMxzDhPa5nX6eU78psljXiPXT6KUalmc4hmmn8x/KmlO/KbJY14j10+ilGpYPcWWwDd2mvH+e9R+Kh4aGfG9vb9YZLbc3dNksa4W8UmSR1jjh3Cs7Z7iOhW7a9H3PslYvB3bVhzD5YzzcgqMPm/m0W/541x2An7O/v5nu7v8dWMc/gOme97M2br3zcPfH5mFuR0enu5MeWL3Hzc7hN/D/r70rgZKsKs/ffd09MPsCg9MNggjRgJrEuKAxippoouIWnbgbIy5R1COKhhHU1qgYNYoaPXGJy4mCjktMjESNUaPRhGhUTGLcIksP0wUizEzP9MzQXfVyvupbUJRV8/671O37qv93zhyGqe/fvvffeu+re999aBw85ayHr/7ZZ1/fKk1jDGZ2sTCNVaY5e+PhscbU9O55V8HawUu4kWCqznOdPs+p3hS5xI4R6s/H3tVGipfgJJg69X9VrjnVmyKX2DFC/fnYu9pI8RKcBFPVc3X6PKd6U+QSO0aoPx97VxspvgqnwrZOI/uXc81aNKqwXb7mqhr4MTLrjvHYHR8+5nBr9RR3CzadWVbYV90YTALtP9sArGLsCSxgczHXV7RuKfY2jzF7Fihg15r5owqUoj5vrdqA4vDcFTDlbopWFGbWlK1GszSNcRSzN48tNDaMF7PmZdcdcBGg3VxJeZXgJJgY5ykXHznVmyKX2DFC/fnYu9pI8RKcBJNLb8fII6d6U+QSO0aoPx97VxspXoKTYGL0ZS4+cqo3RS6xY4T687F3tZHiq3AqbHMZtX55iG74/VyHW6mwDefQ10PVwHfwa866YOeUabbauwS3Z1mLpVfdnH77Tc/8wTV7vwdjtgElRSvG0Fx6hnWAaN1s9i5uLva1NmD/+Lhp3ub51yPktLcssas9ywrMmtI0WqbVKGBmKVonyrHZuVWHGvsef/m+U045xWlMuPIkxUtwEozDecoemlO9KXKJHSPUn4+9q40UL8FJMNk3vUOCOdWbIpfYMUL9+di72kjxEpwE49B+2UNzqjdFLrFjhPrzsXe1keKrcCpssx/OR0zQ6SY+dakqbFMzfmu8qoFP5PZzd67eP96aKsaXnmNt7xZcFlwe3HmOtTPLutmgtIKVr7Xpmmm1r7rZaOZwjNm7uLGYMxNYGJNUboADrZJi1cwYU+4+cNpTn77uBx89t2lajXFjZheaRWP9xkOz5kU37pP4k9Tc68fVRoqX4CQYSd11weRUb4pcYscI9edj72ojxUtwEkxdel+SZ071psgldoxQfz72rjZSvAQnwUj6ri6YnOpNkUvsGKH+fOxdbaT4KpwK27qM6v55qrDN6PxVDbaUqf73D35c7vjwt+/apGAdG1sSrqacLFtmsjTlpGlvwFRwpnUNRemt72O9VbRuaovWOWwq9pWbsK9cbQ5LZ1gPG2CGorUo2v9tcPOlAq3ZpuEzrMXs/M3zjc3Te/Z0cxLKn4+9q40UL8FJMCl7Ztixcqo3RS6xY4T687F3tZHiJTgJZtg9m9J/TvWmyCV2jFB/PvauNlK8BCfBpOzfYcfKqd4UucSOEerPx97VRoqvwqmwHfZoHK5/FbbD5dfJe9Vgc3J2BPDDp3duM4cWjjflePuZ1iWhaiZLYLIsy0ljim2FwQlrsb9np+COaJ3Dxi7Rug7z0j5qUrByWXAJMzN/2hOftO6Hl57X3nhprDW7WJrGOrNq1uy45iafWkP587F3tZHiJTgJxofHXG1yqjdFLrFjhPrzsXe1keIlOAkm1173ySunelPkEjtGqD8fe1cbKV6Ck2B8+jBXm5zqTZFL7Bih/nzsXW2k+CqcCttcR7EsL6kgkXmLjNKlyG6Ebp/euWrhUHPqsCmOL8ryllfbmLKc5K7BFK58N+tac3BrZ2fgzqttlmZdl4TrxvbzrXPgv4kPg11t0QqKVsxw8yXuEtxstRoTE2b2cGusseEV1/4i5gxrb25VX1ZVtfjYu9pI8RKcBFNVc50+z6neFLnEjhHqz8fe1UaKl+AkmDr1f1WuOdWbIpfYMUL9+di72kjxEpwEU9Vzdfo8p3pT5BI7Rqg/H3tXGym+CqfCtk4j+5dzVWGb0fk70mB72PRHNowfPprvY21vvtRqLYnV9vOsVriuMYcmN5m59R3RestS4LZI7SwLXvp7gVJWuUEDbaFa7ipNMQOU17Z3DEYxi2azsXbN2Kw5b/cNMme3RVV9ubj6DPXnY+9qI8VLcBKMK4c543OqN0UusWOE+vOxd7WR4iU4CSbnfnfNLad6U+QSO0aoPx97VxspXoKTYFx7MGd8TvWmyCV2jFB/PvauNlJ8FU6Fbc4juTo3FbbVHA0d8djzPn3c4VWLU8976Knffe8XfvSsslXc+hxraSaPKhYmN5m9FK2rlkRr+7nV9ozq0szqraJ1HIvSfG+Aac+scqfgmdKUM4CZ5bOsE2jO7n7MZVecfJd7DrU/qr5cpIV0cKH+fOxdbaR4CU6CceUwZ3xO9abIJXaMUH8+9q42UrwEJ8Hk3O+uueVUb4pcYscI9edj72ojxUtwEoxrD+aMz6neFLnEjhHqz8fe1UaKr8KpsM15JFfnNlThUh3+yIi6L0V+4PRXxtcd/PmUKVtTZVFMGrTagpUbMBmDyXGzMLkFc8dvLOaOay8B7uwWXCwtA+6IWP79KHOzkM5yD4yZ6cyywhQzZbO8FuNmFq2isRYLs+aC66+rclY18KvsJZ/HjhHqz8fe1UaKl+AkGMl5qAsmp3pT5BI7Rqg/H3tXGylegpNg6tL7kjxzqjdFLrFjhPrzsXe1keIlOAlG0nd1weRUb4pcYscI9edj72ojxVfhVNjWZVT3z1OFref52z69c92Bw60pPstaFmZbwd2CsbRbsCnLqS1je07YZPZt22AObFh6dtXOrPaI1tXmkDSD/W2xasqZsjTt51n5dzTNLMaLWbRubqy54IaGgXSN8ZHDVg18adJHwsWOEerPx97VRoqX4CSYGOcpFx851Zsil9gxQv352LvaSPESnASTS2/HyCOnelPkEjtGqD8fe1cbKV6Ck2Bi9GUuPnKqN0UusWOE+vOxd7WR4qtwKmxzGbV+eaiw7cPbI196ybHmKEw1m+UkivFt7VfblKYtWo8tbjxxo5mb2mAObF1v9h/du+FSZ+Z1nZkXnhFzqCNS5+/wsAevvvKy13OWlc+0ojANFAuzaw7e0DDTaAkdRoFVDfwYQWLHCPXnY+9qI8VLcBJMjPOUi4+c6k2RS+wYof587F1tpHgJToLJpbdj5JFTvSlyiR0j1J+PvauNFC/BSTAx+jIXHznVmyKX2DFC/fnYu9pI8VU4Fba5jFq/PFaUsJ2eni4unz91arwYnyxLs+2W19yUFKx7Ttpc7DthPeZut97Mb9lY7B/rPLvaXhZsX2+zwXDiVHQscofgAriGM6ut7lnWVrHbTBSNyw9e23jQ9K0PxVYNNlHUSKAUucSOEerPx97VRoqX4CSYSO2QhZuc6k2RS+wYof587F1tpHgJToLJorEjJZFTvSlyiR0j1J+PvauNFC/BSTCRWjMLNznVmyKX2DFC/fnYu9pI8VU4FbZZDFnvJLIXtl/fc/JDPvfGJ3ypqsJHTr9nzeKBjZNjRWtplrW19Dzr5mL/SceYG09cb/ZPrjfzW9eZ+fbS4N5dgvlvRriKt0RxrUF5tWkLVorXcqY9y9oqd3G34NVbdzfMc7FQlXPv51WDzdVfCD5FLrFjhPrzsXe1keIlOAkmpAdys82p3hS5xI4R6s/H3tVGipfgJJjcejwkn5zqTZFL7Bih/nzsXW2keAlOggnpx9xsc6o3RS6xY4T687F3tZHiq3AqbHMbvW75ZC9s73H4a3j/we3n7DMTXx0vV20r0Wq/4mYj5k46pthzh41m//HrzYHj1mJ+y/riwOruDZc6s6xjaIpYaZnielOW1yyJVjPTKkvOuM7AtGZMa2z3ruvWNn7lnT89LHLmAaoabB4uvU1S5BI7Rqg/H3tXGylegpNgvBsgQ8Oc6k2RS+wYof587F1tpHgJToLJsM29U8qp3hS5xI4R6s/H3tVGipfgJBjvZszQMKd6U+QSO0aoPx97VxspvgqnwjbDAeyQUvbC9oXNi/HlhTPQxNjSa266NmFaJZwUXSzH9pQwM2Nm8coxg2s4ywqUM2OcZTXlzNGHj26Y6avEuzg58OsErRpsTs4CwSlyiR0j1J+PvauNFC/BSTCBbZCVeU71psgldoxQfz72rjZSvAQnwWTV4IHJ5FRvilxixwj152PvaiPFS3ASTGBLZmWeU70pcokdI9Sfj72rjRRfhVNhm9XQdU5muYTtWgAHgSNviMTX/VDYXtk8ASeP8XWrtz0WMbZ/sRybHTPNqybQ/D/A7CopWIEZUzRnbjw8sXtqerd0Fydn8mIbVA222PGO5C9FLrFjhPrzsXe1keIlOAkmZc8MO1ZO9abIJXaMUH8+9q42UrwEJ8EMu2dT+s+p3hS5xI4R6s/H3tVGipfgJJiU/TvsWDnVmyKX2DFC/fnYu9pI8VU4FbbDHo3D9Z9a2B4L4BKgvWHSSQDeDOBDg0rsCNurW8f/4qRi18spWifM+MyqieaMedl1B4ZLTXrvVYMtZUYpcokdI9Sfj72rjRQvwUkwKXtm2LFyqjdFLrFjhPrzsXe1keIlOAlm2D2b0n9O9abIJXaMUH8+9q42UrwEJ8Gk7N9hx8qp3hS5xI4R6s/H3tVGiq/CqbAd9mgcrv/UwvZ8AOsBXABgG4BZAJy97Tur2hG2ZVk8ed2Fuy8dLhXL771qsKXMMEUusWOE+vOxd7WR4iU4CSZlzww7Vk71psgldoxQfz72rjZSvAQnwQy7Z1P6z6neFLnEjhHqz8fe1UaKl+AkmJT9O+xYOdWbIpfYMUL9+di72kjxVTgVtsMejcP1n1rYvh8Adzj+GADG5rtZTwHws35lUties/j2M9dfOPu14dKQh/eqwZYyyxS5xI4R6s/H3tVGipfgJJiUPTPsWDnVmyKX2DFC/fnYu9pI8RKcBDPsnk3pP6d6U+QSO0aoPx97VxspXoKTYFL277Bj5VRvilxixwj152PvaiPFV+FU2A57NA7Xf2phuxMA/3zSlnUdgDMAXHXRRRdNG2Ne3V3uxMQEFhac35ozXMbUuzKgDCgDyoAyoAwoA8qAMqAMjCQDW7duxdlnn51aI40kl6mLSn3SXgVgH4CLAYwBuAnApkGbSHHG9vzzz0+dY+pzcEu8nOpNkUvsGKH+fOxdbaR4CU6CWbZmHkLgnOpNkUvsGKH+fOxdbaR4CU6CGUKbLpvLnOpNkUvsGKH+fOxdbaR4CU6CWbZmHkLgnOpNkUvsGKH+fOxdbaR4CU6CGUKbqssIDKQWjY8C8AIADwWwHcBLANx3UB0rrbFyqjdFLrFjhPrzsXe1keIlOAkmwndENi5yqjdFLrFjhPrzsXe1keIlOAkmm+aOkEhO9abIJXaMUH8+9q42UrwEJ8FEaMtsXORUb4pcYscI9edj72ojxUtwEkw2za2J3IaB1MJ2NYDLAJwOgH9/CIDLVdguMZDTQEqRS+wYof587F1tpHgJToIZpe+7nOpNkUvsGKH+fOxdbaR4CU6C0fExHAZScB87Rqg/H3tXGylegpNghtMdy+M1p3pT5BI7Rqg/H3tXGylegpNglqeTNWoVA6mFbSef2wNoADjiA7QrrbFyqjdFLrFjhPrzsXe1keIlOAmm6gugTp/nVG+KXGLHCPXnY+9qI8VLcBJMnfq/Ktec6k2RS+wYof587F1tpHgJToKp6rk6fZ5TvSlyiR0j1J+PvauNFC/BSTB16v+VlOtyCVsRx9xQaseOHdMi8AiAcqo3RS6xY4T687F3tZHiJTgJZgSGxS0l5FRvilxixwj152PvaiPFS3ASjI6P4TCQgvvYMUL9+di72kjxEpwEM5zuWB6vOdWbIpfYMUL9+di72kjxEpwEszydrFGrGMha2FYlr58rA8qAMqAMKAPKgDKgDCgDyoAyoAwoAypstQeUAWVAGVAGlAFlQBlQBpQBZUAZUAZqzUCdhO06AAcAlLVm/MjJb7avQ2qOcI1aWhgD4wBWAZjvclPYzdg4PkbtWGML6q6X/7QewNyoFav1eDOwwX53djvo1yNH2WvIzd6Rlt9w0JhYC+Bgz+vzRvm7YfnPRJ4Z9LtGdGc6aAzUtX8GjYdOzYPGQL969dqSZ08zK997n37XAdeeyJcVzeyXGKiDsD0OwK8B+DSAUwFcP4Ln8UQAHwfwcwCLAL4D4HUjWKeW5M8A3/t8VwBnA+APH+daV38M4MUArrVf/E+xfeQfKQ/LCQAfAnASgJ/Z916z9rsA+ACAq+1n/Ldv55GyZrEMDPCacKZ9dRx7g8c9+vTI9wC8DcDdbS/xO/aFg96hvgx1SEIOGhP80fcSe+3geHmzHTuj+t0g4WolYgZdIzpcUBj0GwNbato/g8bDoa6T328McHKk33jp972h15blH0m+9z6DzqdLTyx/9ZqBMwN1ELaPA3A/eyN/uxEVthcC4Jf0qwEcbX91Px7AbuczqgajygBvXl8L4J4A/tOOB96ocGfxTQD2AngHgFkAF40ACQ8A8AYAv21r+QqAdwN4NoC3APgiAH43PNe+F3sEStYSPBg4H8DdAPyG/dGDLtgbvT3CTQgvBnBvG+NHAJ4J4BseMZfLZNCYOMWuYLgAwDb7HbDRfieM4nfDcvGfe9x+14junH9rwBi4f037Z9B4+IQtetD1kcKWs3jd44Wzt5/Ra0uWLe5779PvOvDwAfdMg3qid6VYlgRpUrdloA7CtpMxG29UhS3f6cv6+EvjowG81c5Oj/Kyax2LfgycY3uDM7YnA/gSAN7Y8uAMFG/wOYtZ94M3JfyRZ7+dmf0vO2NNIcIbtBk7+/Z5+71Q93o1f38GuKLn0i5hy97o7ZGX2h9In2fD8Cb2UwD+xj9scstBY+JV9nvgYwB4TW8BeKCdtR7F74bkxNcsYPc1ojv1pw4YA1zxwOtI3fpn0Hi4xhY96PrI+6reejlO/kWvLVl3uuu9T7/rwH0G3DMN6gmuFtOjZgyosM3nhPG5yR0AeAP2GABfzic1zSQjBrq/3HlDz1+n72zze5pdlvmsjPINTeUJAN4HgDNu/MFnn62XM9N3tDcjfC+2HiuXgV5h269HuIrhNPvjD5n6awBcBfCRGtLWOyZ2AuCfT9pargPwRwDePuLfDTU8dUlSHiRsnz9gDDyq5v3TOx46JA+6PvJ5/N7xcgaA7+u1JUl/+gZxvffpdx14xIB7pkE9cZVvsmq3fAyosF0+7rsjc2aKX7Tc0ISzbrxp10MZ6MdA95c7Z/q5VIYbIfAXx85zt3yOahSOVwDgM8MU7HwmksfXbJ1cjs1l2Zyt4o2ZHiuXgV5h269H+KPIS7p65e/t0v66PUPXb0xwDPAmjkut+TzaTQAm7WqHUf1uWLndXl35IGHLWfx+Y4DLM+vaP/3GQ4ehQddHLkPurZdL9r+q15bq5lpGhOu9T7/rAH8E6XfPNKgnuPpFj5oxoMI2jxP2HABn6Q16Hicj8yx6b1quAMBf4rlU9wv2OW0+W1L343Q7o3Yn+6xgp56/AHADgDfZ56G4VPmVdS9W8w9ioFfY9usRir4r7bJ2bpbzXQCc6eez6XU5Bo0J/rDzAvus+XYrXu4LYFS/G+pyvpYrz95rBFcq8McO7sfQbwxwKXId+2fQeJiyz9DyOfp+Y4ATCf3q1WvLcnWsLK7k3uebdlXCtwAMOp8uPSHLTFFZMVA3Ycsdkrlz8KgdHwTwjJ6ieEP/k1ErVOsJZoBf7nweiL+88+BNbWc55ecAPHlEXonF8cBx0X1wsx/+CsuLF489AHgDf2Mwq+qgzgz0CluOj3498kb7IxB/neeN7btqVvSgMcFnIy8DwBt9zlI9BMDlI/zdULPTljzd3msEVyd81j7S0W8MsGfq2D+DxgM3TruXXe3T7/pIYduv3kHfG8lPoAbsy4Dk3oc7IfMxPi4tHnQ+XXpCT0UNGaiTsK0hvZqyMpCEAb7HjxfzlbKEnZuG8Fd5bg6hG6wlabHaBRnUI8faRz64FHHUDoMMWJQAAAcCSURBVM5AN+zMXKe2lfbdMGrnNEY93DSKfcENk3gMGgOj0j98BRgfYXmNrXfQGOhXr15bYnRcOh+955b/z7dDdPYZGXQ+XXoiXTUaKQoDKmyj0KhOlAFlQBlQBpQBZUAZyI4Bvs6Hu8mvlOcFfx0AN/2p02MG2TVNTRPi6874Iz+XoeuxQhlQYbtCT7yWrQwoA8qAMqAMKAPKgDKgDCgDysCoMKDCdlTOpNahDCgDyoAyoAwoA8qAMqAMKAPKwAplQIXtCj3xWrYyoAwoA8qAMqAMKAPKgDKgDCgDo8KACttROZNahzKgDCgDyoAyoAwoA8qAMqAMKAMrlAEVtiv0xGvZyoAyoAwoA7cwsA7AIQCLyokyoAwoA8qAMqAM1JMBFbb1PG+atTKgDCgDy8XA5wH8HoCndb1DmbtQ8n3CfK9w6PF+AGcDSHF94jttvwfgjgDOtO9J7uT/CADcYfUNHgVNAtgN4HwAf+5hrybKgDKgDCgDyoAy4MhAihsHx5QUrgwoA8qAMpAxAx1he70VhAfs6xViCdsPAnhGImH7IABfBvBu+95L1tQ53gPgOQAKj/cl8z3L1wK4EMDrMz6XmpoyoAwoA8qAMjAyDKiwHZlTqYUoA8qAMpCEgY6wZbBXA3htl7B9HIDPAPiQFYuPBPBKAH8C4FgArwPwVQCcDb3Jzma+DMDJAN4I4F0AOsL2rQD+EMD/AjgHwE8AnArg+QCeYmO+GMB3APwpAMa6DMBjANy7h4nnAni5FeL/DuAFNv4/ArgTgO8DeDaA/7B2jwbwXgDHAfgcgO0218cCmAfwBQCMzXeDPtHmdGdb27nWR0fY0s+H7b9xlpuzw6z59wF80wrfryc5cxpEGVAGlAFlQBkYYQZU2I7wydXSlAFlQBkYAgMUtncH8HdWDJ4I4Et2KfKTAFxpBSwFLWdeKVS5zJezmJcC+DGAy+1SZqZH4UcxShG5BQAFLe04e/pdu+z5E1bkfgXA6QDeZmNvBcBlvxTFFKs8PtLlm///q1YcfwvAPwA4D8AsgPtYUU47xuQfilEejMG87gfg6QAWbO4XWzH7Eit2Wcc1AJgfRTVr/SsAf2Z9cRnygwHcy/r6NwA/tDFeBeAVAI4GcBd9vncInaoulQFlQBlQBlYUAypsV9Tp1mKVAWVAGQhmoCNs7wbgp3aG9gwHYcuZVc6CcraTM5+cuaQw5azrKXaGl8L2dlbcUoxyhpeztYzHGdd/AvBAAPcH8DD7OQUqhShnQbsPCmzOKt8VwP8A2GGfm/1NACcB+Fsrnr/YY9e9FHmTnZmliO7EnQbwvi4xTKFPHx8FsLbr3+mWAvYi65/PI3OWmLO0/2xnt68OPivqQBlQBpQBZUAZWOEMqLBd4Q2g5SsDyoAy4MhAR9hSeHKJ8F9aewrOJwCgSONMJTdO6nzePWPLjacoAEsrKv/ALsel+OMyXc5kUthuBrAHwMftbO3v2pnhbwDgzG3n4OdcakxhuwHAXE89bwHwUrvc+SqLe6edReYMsUTY0vc7AHzKLlt+DQAKW/6XtXGzK9bFWWcub35Wl7BlPgetaN8PgDPczPfxVuDy8212ibPjqVC4MqAMKAPKgDKgDHQYUGGrvaAMKAPKgDLgwkC3sB0HcIVdukth+wAAN9vlxhS3F3TtONxZiiwVth8A8K8A+N/PWrH7C+v7mXYGlTPFfB6Wopjik6/t4WZW3QcxzO0SAJ+0s8OcgT0ewFkCYcslyy8C8GS7ZJhLkzm7TFHL54Upsvms8U47E83l0Vz+zGXN/PcGAM7+claanHDpMoU9P2Pe9Mulz3yWWA9lQBlQBpQBZUAZ8GRAha0ncWqmDCgDysAKZaBb2JICzlhS4FE88nU/FG/cqIkHl9tyuTAFL4Xtx7qW/e6zM7CcseUzqdxBmJtIcekwhSs3heJyYc5odjZa4jJmzpTy33lwJpbPxnIGdpCw5XWOux5zA6vOwU2p+Fwsn+0dNGPLTaH4TDCP37FLrvl6IC6fpjinHTfLYk30x2OXfYaXdVPYUti/qUv8n2ZtKWg5u8vamBtnt/VQBpQBZUAZUAaUgQAGVNgGkKemyoAyoAwoA30Z4Mwplxr3zp660kXxx9cILfYYcjnvDY7LdzdaMcml0pxVlhxrAEwA2AvgKACc6b2ujyF3fOZztdJnZXntZQ0Uwk1JIopRBpQBZUAZUAaUgSMzoMJWO0QZUAaUAWVAGVAGlAFlQBlQBpQBZaDWDKiwrfXp0+SVAWVAGVAGlAFlQBlQBpQBZUAZUAZU2GoPKAPKgDKgDCgDyoAyoAwoA8qAMqAM1JoBFba1Pn2avDKgDCgDyoAyoAwoA8qAMqAMKAPKgApb7QFlQBlQBpQBZUAZUAaUAWVAGVAGlIFaM/D/cSdlna9pTsgAAAAASUVORK5CYII=", "text/plain": [ "\n", "\n", "If you see this message, it means the renderer has not been properly enabled\n", "for the frontend that you are using. For more information, see\n", "https://altair-viz.github.io/user_guide/troubleshooting.html\n" ] }, "metadata": { "application/vnd.vegalite.v3+json": { "embed_options": { "renderer": "svg" } } }, "output_type": "display_data" }, { "data": { "application/vnd.vegalite.v3+json": { "$schema": "https://vega.github.io/schema/vega-lite/v3.4.0.json", "config": { "mark": { "tooltip": null }, "view": { "height": 300, "width": 400 } }, "data": { "name": "data-bfb1f38c2912b9437b34f9da9038de1f" }, "datasets": { "data-bfb1f38c2912b9437b34f9da9038de1f": [ { "Duration in ms": 1.03, "Number of cores": 16, "Number of tasks": 1 }, { "Duration in ms": 6.91, "Number of cores": 16, "Number of tasks": 10 }, { "Duration in ms": 65.74, "Number of cores": 16, "Number of tasks": 100 }, { "Duration in ms": 580.1, "Number of cores": 16, "Number of tasks": 1000 }, { "Duration in ms": 5736.86, "Number of cores": 16, "Number of tasks": 10000 }, { "Duration in ms": 0.72, "Number of cores": 64, "Number of tasks": 1 }, { "Duration in ms": 4.86, "Number of cores": 64, "Number of tasks": 10 }, { "Duration in ms": 47.17, "Number of cores": 64, "Number of tasks": 100 }, { "Duration in ms": 490.48, "Number of cores": 64, "Number of tasks": 1000 }, { "Duration in ms": 4968.91, "Number of cores": 64, "Number of tasks": 10000 } ] }, "encoding": { "color": { "field": "Number of cores", "type": "nominal" }, "tooltip": { "field": "Duration in ms", "type": "quantitative" }, "x": { "field": "Number of tasks", "scale": { "type": "log" }, "type": "quantitative" }, "y": { "field": "Duration in ms", "type": "quantitative" } }, "mark": { "point": true, "type": "line" }, "selection": { "selector021": { "bind": "scales", "encodings": [ "x", "y" ], "type": "interval" } }, "title": "Ran with no delay on 100 engines Load Balanced", "width": 800 }, "image/png": "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", "text/plain": [ "\n", "\n", "If you see this message, it means the renderer has not been properly enabled\n", "for the frontend that you are using. For more information, see\n", "https://altair-viz.github.io/user_guide/troubleshooting.html\n" ] }, "metadata": { "application/vnd.vegalite.v3+json": { "embed_options": { "renderer": "svg" } } }, "output_type": "display_data" } ], "source": [ "display(Markdown('### With no delay and non-blocking map on 100 engines:'))\n", "data = pd.DataFrame(\n", " no_delay_source[BenchmarkType.TIME_N_TASKS_NO_DELAY_NON_BLOCKING]['direct_view']\n", ")\n", "alt.Chart(data).mark_line(point=True).encode(\n", " alt.X('Number of tasks', scale=alt.Scale(type='log')),\n", " color='Number of cores:N',\n", " y='Duration in ms',\n", " tooltip='Duration in ms',\n", ").properties(\n", " title='Ran with no delay on 100 engines Direct View', width=800\n", ").interactive().display(renderer='svg')\n", "\n", "data = pd.DataFrame(\n", " no_delay_source[BenchmarkType.TIME_N_TASKS_NO_DELAY_NON_BLOCKING]['load_balanced']\n", ")\n", "alt.Chart(data).mark_line(point=True).encode(\n", " alt.X('Number of tasks', scale=alt.Scale(type='log')),\n", " color='Number of cores:N',\n", " y='Duration in ms',\n", " tooltip='Duration in ms',\n", ").properties(\n", " title='Ran with no delay on 100 engines Load Balanced', width=800\n", ").interactive().display(renderer='svg')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### time_broadcast ###\n", "The second benchmark comes from benchmarking the runtime of sending\n", "and array of n bytes to m engines. " ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "jupyter": { "source_hidden": true } }, "outputs": [ { "data": { "text/plain": [ "\u001b[0;31mSignature:\u001b[0m \u001b[0mNumpyArrayBroadcast\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtime_broadcast\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mengines\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnum_bytes\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mDocstring:\u001b[0m \n", "\u001b[0;31mSource:\u001b[0m \n", " \u001b[0;32mdef\u001b[0m \u001b[0mtime_broadcast\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mengines\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnum_bytes\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclient\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0mengines\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"x\"\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0marray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m*\u001b[0m \u001b[0mnum_bytes\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mint8\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mFile:\u001b[0m ~/ipyparallel_master_project/benchmarks/throughput.py\n", "\u001b[0;31mType:\u001b[0m function\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "NumpyArrayBroadcast.time_broadcast??" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "application/vnd.vegalite.v3+json": { "$schema": "https://vega.github.io/schema/vega-lite/v3.4.0.json", "config": { "mark": { "tooltip": null }, "view": { "height": 300, "width": 400 } }, "data": { "name": "data-6ccfa781aa255b2ec55c78dc8596470c" }, "datasets": { "data-6ccfa781aa255b2ec55c78dc8596470c": [ { "Duration in ms": 0.76, "Number of bytes": 10, "Number of engines": 1 }, { "Duration in ms": 0.84, "Number of bytes": 1000, "Number of engines": 1 }, { "Duration in ms": 1.47, "Number of bytes": 10000, "Number of engines": 1 }, { "Duration in ms": 8.71, "Number of bytes": 100000, "Number of engines": 1 }, { "Duration in ms": 68.98, "Number of bytes": 1000000, "Number of engines": 1 }, { "Duration in ms": 714.37, "Number of bytes": 10000000, "Number of engines": 1 }, { "Duration in ms": 4.74, "Number of bytes": 10, "Number of engines": 10 }, { "Duration in ms": 4.65, "Number of bytes": 1000, "Number of engines": 10 }, { "Duration in ms": 5.68, "Number of bytes": 10000, "Number of engines": 10 }, { "Duration in ms": 14.47, "Number of bytes": 100000, "Number of engines": 10 }, { "Duration in ms": 75.06, "Number of bytes": 1000000, "Number of engines": 10 }, { "Duration in ms": 722.53, "Number of bytes": 10000000, "Number of engines": 10 }, { "Duration in ms": 15.8, "Number of bytes": 10, "Number of engines": 50 }, { "Duration in ms": 14.41, "Number of bytes": 1000, "Number of engines": 50 }, { "Duration in ms": 15.61, "Number of bytes": 10000, "Number of engines": 50 }, { "Duration in ms": 21.82, "Number of bytes": 100000, "Number of engines": 50 }, { "Duration in ms": 88.37, "Number of bytes": 1000000, "Number of engines": 50 }, { "Duration in ms": 789.8, "Number of bytes": 10000000, "Number of engines": 50 }, { "Duration in ms": 28.54, "Number of bytes": 10, "Number of engines": 100 }, { "Duration in ms": 33.21, "Number of bytes": 1000, "Number of engines": 100 }, { "Duration in ms": 46.83, "Number of bytes": 10000, "Number of engines": 100 }, { "Duration in ms": 33.61, "Number of bytes": 100000, "Number of engines": 100 }, { "Duration in ms": 123.84, "Number of bytes": 1000000, "Number of engines": 100 }, { "Duration in ms": 844.51, "Number of bytes": 10000000, "Number of engines": 100 } ] }, "encoding": { "color": { "field": "Number of engines", "type": "nominal" }, "tooltip": { "field": "Duration in ms", "type": "quantitative" }, "x": { "field": "Number of bytes", "scale": { "type": "log" }, "type": "quantitative" }, "y": { "field": "Duration in ms", "type": "quantitative" } }, "mark": { "point": true, "type": "line" }, "selection": { "selector001": { "bind": "scales", "encodings": [ "x", "y" ], "type": "interval" } }, "title": "Broadcast benchmark running on 16 cores with Direct View", "width": 800 }, "image/png": "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", "text/plain": [ "\n", "\n", "If you see this message, it means the renderer has not been properly enabled\n", "for the frontend that you are using. For more information, see\n", "https://altair-viz.github.io/user_guide/troubleshooting.html\n" ] }, "metadata": { "application/vnd.vegalite.v3+json": { "embed_options": { "renderer": "svg" } } }, "output_type": "display_data" }, { "data": { "application/vnd.vegalite.v3+json": { "$schema": "https://vega.github.io/schema/vega-lite/v3.4.0.json", "config": { "mark": { "tooltip": null }, "view": { "height": 300, "width": 400 } }, "data": { "name": "data-7b268d161e8775552bcb42811a989eb3" }, "datasets": { "data-7b268d161e8775552bcb42811a989eb3": [ { "Duration in ms": 0.71, "Number of bytes": 10, "Number of engines": 1 }, { "Duration in ms": 0.78, "Number of bytes": 1000, "Number of engines": 1 }, { "Duration in ms": 1.39, "Number of bytes": 10000, "Number of engines": 1 }, { "Duration in ms": 7.7, "Number of bytes": 100000, "Number of engines": 1 }, { "Duration in ms": 66.7, "Number of bytes": 1000000, "Number of engines": 1 }, { "Duration in ms": 694.22, "Number of bytes": 10000000, "Number of engines": 1 }, { "Duration in ms": 2.85, "Number of bytes": 10, "Number of engines": 10 }, { "Duration in ms": 2.83, "Number of bytes": 1000, "Number of engines": 10 }, { "Duration in ms": 3.29, "Number of bytes": 10000, "Number of engines": 10 }, { "Duration in ms": 9.05, "Number of bytes": 100000, "Number of engines": 10 }, { "Duration in ms": 68.83, "Number of bytes": 1000000, "Number of engines": 10 }, { "Duration in ms": 693.79, "Number of bytes": 10000000, "Number of engines": 10 }, { "Duration in ms": 8.39, "Number of bytes": 10, "Number of engines": 50 }, { "Duration in ms": 10.07, "Number of bytes": 1000, "Number of engines": 50 }, { "Duration in ms": 8.5, "Number of bytes": 10000, "Number of engines": 50 }, { "Duration in ms": 15.39, "Number of bytes": 100000, "Number of engines": 50 }, { "Duration in ms": 75.97, "Number of bytes": 1000000, "Number of engines": 50 }, { "Duration in ms": 708.87, "Number of bytes": 10000000, "Number of engines": 50 }, { "Duration in ms": 19.42, "Number of bytes": 10, "Number of engines": 100 }, { "Duration in ms": 21.5, "Number of bytes": 1000, "Number of engines": 100 }, { "Duration in ms": 19.28, "Number of bytes": 10000, "Number of engines": 100 }, { "Duration in ms": 23.87, "Number of bytes": 100000, "Number of engines": 100 }, { "Duration in ms": 91.12, "Number of bytes": 1000000, "Number of engines": 100 }, { "Duration in ms": 718.6, "Number of bytes": 10000000, "Number of engines": 100 } ] }, "encoding": { "color": { "field": "Number of engines", "type": "nominal" }, "tooltip": { "field": "Duration in ms", "type": "quantitative" }, "x": { "field": "Number of bytes", "scale": { "type": "log" }, "type": "quantitative" }, "y": { "field": "Duration in ms", "type": "quantitative" } }, "mark": { "point": true, "type": "line" }, "selection": { "selector002": { "bind": "scales", "encodings": [ "x", "y" ], "type": "interval" } }, "title": "Broadcast benchmark running on 64 cores with Direct View", "width": 800 }, "image/png": "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", "text/plain": [ "\n", "\n", "If you see this message, it means the renderer has not been properly enabled\n", "for the frontend that you are using. For more information, see\n", "https://altair-viz.github.io/user_guide/troubleshooting.html\n" ] }, "metadata": { "application/vnd.vegalite.v3+json": { "embed_options": { "renderer": "svg" } } }, "output_type": "display_data" } ], "source": [ "source = get_broad_cast_source(benchmark_results)\n", "for core_num, results in sorted(source.items(), key=lambda key: key[0]):\n", " data = pd.DataFrame(results)\n", " alt.Chart(data).mark_line(point=True).encode(\n", " alt.X('Number of bytes', scale=alt.Scale(type='log')),\n", " y='Duration in ms',\n", " color='Number of engines:N',\n", " tooltip='Duration in ms',\n", " ).properties(\n", " title=f'Broadcast benchmark running on {core_num} cores with Direct View',\n", " width=800,\n", " ).interactive().display(renderer='svg')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### echo_many_arguments:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "\u001b[0;31mSignature:\u001b[0m \u001b[0mecho_many_arguments\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mview\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnumber_of_arguments\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mn\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mDocstring:\u001b[0m \n", "\u001b[0;31mSource:\u001b[0m \n", "\u001b[0;32mdef\u001b[0m \u001b[0mecho_many_arguments\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mview\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnumber_of_arguments\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mn\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mview\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmap\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mlambda\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mtuple\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mempty\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mint8\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mn\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnumber_of_arguments\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mx\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mn\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mblock\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mFile:\u001b[0m ~/ipyparallel_master_project/benchmarks/overhead_latency.py\n", "\u001b[0;31mType:\u001b[0m function\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "??echo_many_arguments" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "jupyter": { "source_hidden": true } }, "outputs": [ { "data": { "text/markdown": [ "### With non-blocking map on 16 engines:" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/markdown": [ "#### direct_view cores:" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.vegalite.v3+json": { "$schema": "https://vega.github.io/schema/vega-lite/v3.4.0.json", "config": { "mark": { "tooltip": null }, "view": { "height": 300, "width": 400 } }, "data": { "name": "data-8604f17283614a508644e3660000a726" }, "datasets": { "data-8604f17283614a508644e3660000a726": [ { "Duration in ms": 15.84, "Number of arguments": 2, "Number of cores": 16 }, { "Duration in ms": 15.95, "Number of arguments": 4, "Number of cores": 16 }, { "Duration in ms": 13.94, "Number of arguments": 8, "Number of cores": 16 }, { "Duration in ms": 21.31, "Number of arguments": 16, "Number of cores": 16 }, { "Duration in ms": 17.97, "Number of arguments": 32, "Number of cores": 16 }, { "Duration in ms": 21.26, "Number of arguments": 64, "Number of cores": 16 }, { "Duration in ms": 27.26, "Number of arguments": 128, "Number of cores": 16 }, { "Duration in ms": 31.14, "Number of arguments": 255, "Number of cores": 16 }, { "Duration in ms": 11.98, "Number of arguments": 2, "Number of cores": 64 }, { "Duration in ms": 12.06, "Number of arguments": 4, "Number of cores": 64 }, { "Duration in ms": 12.72, "Number of arguments": 8, "Number of cores": 64 }, { "Duration in ms": 13.72, "Number of arguments": 16, "Number of cores": 64 }, { "Duration in ms": 14.43, "Number of arguments": 32, "Number of cores": 64 }, { "Duration in ms": 16.29, "Number of arguments": 64, "Number of cores": 64 }, { "Duration in ms": 21.2, "Number of arguments": 128, "Number of cores": 64 }, { "Duration in ms": 29.7, "Number of arguments": 255, "Number of cores": 64 } ] }, "encoding": { "color": { "field": "Number of cores", "type": "nominal" }, "tooltip": { "field": "Duration in ms", "type": "quantitative" }, "x": { "field": "Number of arguments", "scale": { "type": "log" }, "type": "quantitative" }, "y": { "field": "Duration in ms", "type": "quantitative" } }, "mark": { "point": true, "type": "line" }, "selection": { "selector001": { "bind": "scales", "encodings": [ "x", "y" ], "type": "interval" } }, "title": "DirectView", "width": 800 }, "image/png": "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", "text/plain": [ "\n", "\n", "If you see this message, it means the renderer has not been properly enabled\n", "for the frontend that you are using. For more information, see\n", "https://altair-viz.github.io/user_guide/troubleshooting.html\n" ] }, "metadata": { "application/vnd.vegalite.v3+json": { "embed_options": { "renderer": "svg" } } }, "output_type": "display_data" }, { "data": { "application/vnd.vegalite.v3+json": { "$schema": "https://vega.github.io/schema/vega-lite/v3.4.0.json", "config": { "mark": { "tooltip": null }, "view": { "height": 300, "width": 400 } }, "data": { "name": "data-0d2c7c04076ef4d90f82ee2d5d48fab4" }, "datasets": { "data-0d2c7c04076ef4d90f82ee2d5d48fab4": [ { "Duration in ms": 11.56, "Number of arguments": 2, "Number of cores": 16 }, { "Duration in ms": 13.11, "Number of arguments": 4, "Number of cores": 16 }, { "Duration in ms": 11, "Number of arguments": 8, "Number of cores": 16 }, { "Duration in ms": 10.88, "Number of arguments": 16, "Number of cores": 16 }, { "Duration in ms": 13.23, "Number of arguments": 32, "Number of cores": 16 }, { "Duration in ms": 20.05, "Number of arguments": 64, "Number of cores": 16 }, { "Duration in ms": 20.99, "Number of arguments": 128, "Number of cores": 16 }, { "Duration in ms": 30.29, "Number of arguments": 255, "Number of cores": 16 }, { "Duration in ms": 6.73, "Number of arguments": 2, "Number of cores": 64 }, { "Duration in ms": 7.05, "Number of arguments": 4, "Number of cores": 64 }, { "Duration in ms": 7.95, "Number of arguments": 8, "Number of cores": 64 }, { "Duration in ms": 8.35, "Number of arguments": 16, "Number of cores": 64 }, { "Duration in ms": 9.25, "Number of arguments": 32, "Number of cores": 64 }, { "Duration in ms": 11.32, "Number of arguments": 64, "Number of cores": 64 }, { "Duration in ms": 15.66, "Number of arguments": 128, "Number of cores": 64 }, { "Duration in ms": 23.91, "Number of arguments": 255, "Number of cores": 64 } ] }, "encoding": { "color": { "field": "Number of cores", "type": "nominal" }, "tooltip": { "field": "Duration in ms", "type": "quantitative" }, "x": { "field": "Number of arguments", "scale": { "type": "log" }, "type": "quantitative" }, "y": { "field": "Duration in ms", "type": "quantitative" } }, "mark": { "point": true, "type": "line" }, "selection": { "selector002": { "bind": "scales", "encodings": [ "x", "y" ], "type": "interval" } }, "title": "Load Balanced", "width": 800 }, "image/png": "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", "text/plain": [ "\n", "\n", "If you see this message, it means the renderer has not been properly enabled\n", "for the frontend that you are using. For more information, see\n", "https://altair-viz.github.io/user_guide/troubleshooting.html\n" ] }, "metadata": { "application/vnd.vegalite.v3+json": { "embed_options": { "renderer": "svg" } } }, "output_type": "display_data" } ], "source": [ "source = get_echo_many_arguments_source(benchmark_results)\n", "display(\n", " Markdown(f'### With non-blocking map on {source[\"number_of_engines\"]} engines:')\n", ")\n", "display(Markdown(f'#### {core_num} cores:'))\n", "alt.Chart(pd.DataFrame(source['direct_view'])).mark_line(point=True).encode(\n", " alt.X('Number of arguments', scale=alt.Scale(type='log')),\n", " y='Duration in ms',\n", " color='Number of cores:N',\n", " tooltip='Duration in ms',\n", ").properties(title='DirectView', width=800).interactive().display(renderer='svg')\n", "\n", "alt.Chart(pd.DataFrame(source['load_balanced'])).mark_line(point=True).encode(\n", " alt.X('Number of arguments', scale=alt.Scale(type='log')),\n", " y='Duration in ms',\n", " color='Number of cores:N',\n", " tooltip='Duration in ms',\n", ").properties(title='Load Balanced', width=800).interactive().display(renderer='svg')" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.4" }, "pycharm": { "stem_cell": { "cell_type": "raw", "metadata": { "collapsed": false }, "source": [] } } }, "nbformat": 4, "nbformat_minor": 4 } ipython-ipyparallel-14e3c43/benchmarks/benchmarks/000077500000000000000000000000001520071063500223015ustar00rootroot00000000000000ipython-ipyparallel-14e3c43/benchmarks/benchmarks/__init__.py000066400000000000000000000000001520071063500244000ustar00rootroot00000000000000ipython-ipyparallel-14e3c43/benchmarks/benchmarks/constants.py000066400000000000000000000000371520071063500246670ustar00rootroot00000000000000DEFAULT_NUMBER_OF_ENGINES = 16 ipython-ipyparallel-14e3c43/benchmarks/benchmarks/testing.py000066400000000000000000000000001520071063500243160ustar00rootroot00000000000000ipython-ipyparallel-14e3c43/benchmarks/benchmarks/throughput.py000066400000000000000000000136551520071063500250760ustar00rootroot00000000000000import os os.environ['OPENBLAS_NUM_THREADS'] = '1' import time import timeit import numpy as np import ipyparallel as ipp delay = [0] engines = [1, 2, 16, 64, 128, 256, 512, 1024] byte_param = [1000, 10_000, 100_000, 1_000_000, 2_000_000] apply_replies = {} class ArrayNotEqual(Exception): pass def wait_for(condition): for _ in range(750): if condition(): break else: time.sleep(0.1) if not condition(): raise TimeoutError('wait_for took to long to finish') def echo(x): return x def make_benchmark(benchmark_name, get_view): class ThroughputSuite: param_names = ['Number of engines', 'Number of bytes'] timer = timeit.default_timer timeout = 120 params = [engines, byte_param] view = None client = None reply = None def setup(self, number_of_engines, number_of_bytes): self.client = ipp.Client(profile='asv') self.view = get_view(self) self.view.targets = list(range(number_of_engines)) wait_for(lambda: len(self.client) >= number_of_engines) def time_broadcast(self, engines, number_of_bytes): self.reply = self.view.apply_sync( echo, np.array([0] * number_of_bytes, dtype=np.int8) ) def teardown(self, *args): if self.client: self.client.close() return ThroughputSuite # # class DirectViewBroadcast( # make_benchmark( # 'DirectViewBroadcast', lambda benchmark: benchmark.client.direct_view() # ) # ): # pass # class CoalescingBroadcast( make_benchmark( 'CoalescingBroadcast', lambda benchmark: benchmark.client.broadcast_view(is_coalescing=True), ) ): pass # # class NonCoalescingBroadcast( # make_benchmark( # 'NonCoalescingBroadcast', # lambda benchmark: benchmark.client.broadcast_view(is_coalescing=False), # ) # ): # pass # class DepthTestingSuite: param_names = ['Number of engines', 'is_coalescing', 'depth'] timer = timeit.default_timer timeout = 120 params = [engines, [True, False], [3, 4]] view = None client = None reply = None def setup(self, number_of_engines, is_coalescing, depth): self.client = ipp.Client(profile='asv', cluster_id=f'depth_{depth}') self.view = self.client.broadcast_view(is_coalescing=is_coalescing) self.view.targets = list(range(number_of_engines)) wait_for(lambda: len(self.client) >= number_of_engines) def time_broadcast(self, number_of_engines, *args): self.reply = self.view.apply_sync( echo, np.array([0] * 1000, dtype=np.int8), ) def teardown(self, *args): replies_key = tuple(args) if replies_key in apply_replies: if any( not np.array_equal(new_reply, stored_reply) for new_reply, stored_reply in zip( self.reply, apply_replies[replies_key] ) ): raise ArrayNotEqual('DepthTestingSuite', args) if self.client: self.client.close() number_of_messages = [1, 5, 10, 20, 50, 75, 100] def make_multiple_message_benchmark(get_view): class AsyncMessagesSuite: param_names = ['Number of engines', 'number_of_messages'] timer = timeit.default_timer timeout = 180 params = [engines, number_of_messages] view = None client = None reply = None def setup(self, number_of_engines, number_of_messages): self.client = ipp.Client(profile='asv') self.view = get_view(self) self.view.targets = list(range(number_of_engines)) wait_for(lambda: len(self.client) >= number_of_engines) def time_async_messages(self, number_of_engines, number_of_messages): replies = [] for i in range(number_of_messages): reply = self.view.apply_async(echo, np.array([0] * 1000, dtype=np.int8)) replies.append(reply) for reply in replies: reply.get() def teardown(self, *args): if self.client: self.client.close() return AsyncMessagesSuite class DirectViewAsync( make_multiple_message_benchmark(lambda benchmark: benchmark.client.direct_view()) ): pass class CoalescingAsync( make_multiple_message_benchmark( lambda benchmark: benchmark.client.broadcast_view(is_coalescing=True) ) ): pass class NonCoalescingAsync( make_multiple_message_benchmark( lambda benchmark: benchmark.client.broadcast_view(is_coalescing=False) ) ): pass def make_push_benchmark(get_view): class PushMessageSuite: param_names = ['Number of engines', 'Number of bytes'] timer = timeit.default_timer timeout = 120 params = [engines, byte_param] view = None client = None def setup(self, number_of_engines, number_of_bytes): self.client = ipp.Client(profile='asv') self.view = get_view(self) self.view.targets = list(range(number_of_engines)) wait_for(lambda: len(self.client) >= number_of_engines) def time_broadcast(self, engines, number_of_bytes): reply = self.view.apply_sync( lambda x: None, np.array([0] * number_of_bytes, dtype=np.int8) ) def teardown(self, *args): if self.client: self.client.close() return PushMessageSuite class DirectViewPush( make_push_benchmark(lambda benchmark: benchmark.client.direct_view()) ): pass class CoalescingPush( make_push_benchmark( lambda benchmark: benchmark.client.broadcast_view(is_coalescing=True) ) ): pass class NonCoalescingPush( make_push_benchmark( lambda benchmark: benchmark.client.broadcast_view(is_coalescing=False) ) ): pass ipython-ipyparallel-14e3c43/benchmarks/benchmarks/utils.py000066400000000000000000000011251520071063500240120ustar00rootroot00000000000000import datetime import time from collections.abc import Callable def wait_for(condition: Callable): for _ in range(750): if condition(): break else: time.sleep(0.1) if not condition(): raise TimeoutError('wait_for took to long to finish') def echo(delay=0): def inner_echo(x, **kwargs): import time if delay: time.sleep(delay) return x return inner_echo def get_time_stamp() -> str: return ( str(datetime.datetime.now()).split(".")[0].replace(" ", "-").replace(":", "-") ) ipython-ipyparallel-14e3c43/benchmarks/cluster_start.py000066400000000000000000000042031520071063500234330ustar00rootroot00000000000000import atexit import sys import time from subprocess import Popen from benchmarks.throughput import wait_for import ipyparallel as ipp def start_cluster(depth, number_of_engines, path='', log_output_to_file=False): ipcontroller_cmd = ( f'{path}ipcontroller --profile=asv --nodb ' f'--cluster-id=depth_{depth} ' f'--HubFactory.broadcast_scheduler_depth={depth} ' f'--HubFactory.db_class=NoDB' ) print(ipcontroller_cmd) ipengine_cmd = f'{path}ipengine --profile=asv --cluster-id=depth_{depth} ' ps = [ Popen( ipcontroller_cmd.split(), stdout=( open('ipcontroller_output.log', 'a+') if log_output_to_file else sys.stdout ), stderr=( open('ipcontroller_error_output.log', 'a+') if log_output_to_file else sys.stdout ), stdin=sys.stdin, ) ] time.sleep(2) client = ipp.Client(profile='asv', cluster_id=f'depth_{depth}') print(ipengine_cmd) for i in range(number_of_engines): ps.append( Popen( ipengine_cmd.split(), stdout=( open('ipengine_output.log', 'a+') if log_output_to_file else sys.stdout ), stderr=( open('ipengine_error_output.log', 'a+') if log_output_to_file else sys.stdout ), stdin=sys.stdin, ) ) if i % 10 == 0: wait_for(lambda: len(client) >= i - 10) if i % 20 == 0: time.sleep(2) print(f'{len(client)} engines started') return ps if __name__ == '__main__': if len(sys.argv) > 3: depth = sys.argv[1] number_of_engines = int(sys.argv[3]) else: depth = 3 number_of_engines = 30 ps = start_cluster(depth, number_of_engines) for p in ps: p.wait() def clean_up(): for p in ps: p.kill() atexit.register(clean_up) ipython-ipyparallel-14e3c43/benchmarks/depth_benchmark.ipynb000066400000000000000000002313071520071063500243530ustar00rootroot00000000000000{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import pickle\n", "\n", "import altair as alt\n", "import pandas as pd\n", "from benchmark_result import get_depth_testing_source" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "jupyter": { "source_hidden": true } }, "outputs": [], "source": [ "# benchmark_results = get_benchmark_results()\n", "with open('saved_results.pkl', 'rb') as saved_results:\n", " benchmark_results = pickle.load(saved_results)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# time_broadcast on different levels of scheduler depth" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This benchmark comes from timing broadcast on different levels of depth on the BroadcastScheduler" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "\u001b[0;31mInit signature:\u001b[0m \u001b[0mDepthTestingSuite\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mDocstring:\u001b[0m \n", "\u001b[0;31mSource:\u001b[0m \n", "\u001b[0;32mclass\u001b[0m \u001b[0mDepthTestingSuite\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mparam_names\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m'Number of engines'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'is_coalescing'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'depth'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mtimer\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtimeit\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdefault_timer\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mtimeout\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m120\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mparams\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mengines\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;32mFalse\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m[\u001b[0m \u001b[0;36m3\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m4\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mview\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mclient\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mreply\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0msetup\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnumber_of_engines\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mis_coalescing\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdepth\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclient\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mipp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mClient\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprofile\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'asv'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcluster_id\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34mf'depth_{depth}'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mview\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclient\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbroadcast_view\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mis_coalescing\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mis_coalescing\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mview\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtargets\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mlist\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnumber_of_engines\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mwait_for\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;32mlambda\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclient\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m>=\u001b[0m \u001b[0mnumber_of_engines\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mtime_broadcast\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnumber_of_engines\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreply\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mview\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mapply_sync\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mecho\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0marray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m*\u001b[0m \u001b[0;36m1000\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mint8\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mteardown\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mreplies_key\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtuple\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mreplies_key\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mapply_replies\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0many\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0marray_equal\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnew_reply\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstored_reply\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mnew_reply\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstored_reply\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mzip\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreply\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mapply_replies\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mreplies_key\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mArrayNotEqual\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'DepthTestingSuite'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclient\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclient\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mFile:\u001b[0m ~/ipyparallel_master_project/benchmarks/throughput.py\n", "\u001b[0;31mType:\u001b[0m type\n", "\u001b[0;31mSubclasses:\u001b[0m \n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "??DepthTestingSuite" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Results from benchmarking on 64 cores" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "jupyter": { "source_hidden": true } }, "outputs": [], "source": [ "source = get_depth_testing_source(benchmark_results)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Duration in msNumber of enginesIs coalescingDepthScheduler name
04.481True0Coalescing
17.121True2Coalescing
28.511True3Coalescing
39.971True4Coalescing
44.441False0NonCoalescing
57.301False2NonCoalescing
68.781False3NonCoalescing
79.561False4NonCoalescing
85.272True0Coalescing
97.372True2Coalescing
108.462True3Coalescing
119.672True4Coalescing
125.312False0NonCoalescing
137.602False2NonCoalescing
148.662False3NonCoalescing
159.842False4NonCoalescing
168.9916True0Coalescing
179.5816True2Coalescing
1810.6816True3Coalescing
1912.0716True4Coalescing
2014.8116False0NonCoalescing
2115.7816False2NonCoalescing
2215.9016False3NonCoalescing
2316.9816False4NonCoalescing
2427.4964True0Coalescing
2517.0164True2Coalescing
2616.7064True3Coalescing
2717.9264True4Coalescing
2853.3864False0NonCoalescing
2944.3464False2NonCoalescing
3043.9264False3NonCoalescing
3146.1864False4NonCoalescing
3259.50128True0Coalescing
3326.60128True2Coalescing
3425.24128True3Coalescing
3525.81128True4Coalescing
36113.06128False0NonCoalescing
3784.00128False2NonCoalescing
3878.83128False3NonCoalescing
3980.12128False4NonCoalescing
40147.38256True0Coalescing
4149.45256True2Coalescing
4242.14256True3Coalescing
4342.65256True4Coalescing
44254.80256False0NonCoalescing
45158.41256False2NonCoalescing
46152.24256False3NonCoalescing
47151.46256False4NonCoalescing
48444.02512True0Coalescing
49103.34512True2Coalescing
5082.23512True3Coalescing
5176.60512True4Coalescing
52617.53512False0NonCoalescing
53312.91512False2NonCoalescing
54299.75512False3NonCoalescing
55299.51512False4NonCoalescing
\n", "
" ], "text/plain": [ " Duration in ms Number of engines Is coalescing Depth Scheduler name\n", "0 4.48 1 True 0 Coalescing\n", "1 7.12 1 True 2 Coalescing\n", "2 8.51 1 True 3 Coalescing\n", "3 9.97 1 True 4 Coalescing\n", "4 4.44 1 False 0 NonCoalescing\n", "5 7.30 1 False 2 NonCoalescing\n", "6 8.78 1 False 3 NonCoalescing\n", "7 9.56 1 False 4 NonCoalescing\n", "8 5.27 2 True 0 Coalescing\n", "9 7.37 2 True 2 Coalescing\n", "10 8.46 2 True 3 Coalescing\n", "11 9.67 2 True 4 Coalescing\n", "12 5.31 2 False 0 NonCoalescing\n", "13 7.60 2 False 2 NonCoalescing\n", "14 8.66 2 False 3 NonCoalescing\n", "15 9.84 2 False 4 NonCoalescing\n", "16 8.99 16 True 0 Coalescing\n", "17 9.58 16 True 2 Coalescing\n", "18 10.68 16 True 3 Coalescing\n", "19 12.07 16 True 4 Coalescing\n", "20 14.81 16 False 0 NonCoalescing\n", "21 15.78 16 False 2 NonCoalescing\n", "22 15.90 16 False 3 NonCoalescing\n", "23 16.98 16 False 4 NonCoalescing\n", "24 27.49 64 True 0 Coalescing\n", "25 17.01 64 True 2 Coalescing\n", "26 16.70 64 True 3 Coalescing\n", "27 17.92 64 True 4 Coalescing\n", "28 53.38 64 False 0 NonCoalescing\n", "29 44.34 64 False 2 NonCoalescing\n", "30 43.92 64 False 3 NonCoalescing\n", "31 46.18 64 False 4 NonCoalescing\n", "32 59.50 128 True 0 Coalescing\n", "33 26.60 128 True 2 Coalescing\n", "34 25.24 128 True 3 Coalescing\n", "35 25.81 128 True 4 Coalescing\n", "36 113.06 128 False 0 NonCoalescing\n", "37 84.00 128 False 2 NonCoalescing\n", "38 78.83 128 False 3 NonCoalescing\n", "39 80.12 128 False 4 NonCoalescing\n", "40 147.38 256 True 0 Coalescing\n", "41 49.45 256 True 2 Coalescing\n", "42 42.14 256 True 3 Coalescing\n", "43 42.65 256 True 4 Coalescing\n", "44 254.80 256 False 0 NonCoalescing\n", "45 158.41 256 False 2 NonCoalescing\n", "46 152.24 256 False 3 NonCoalescing\n", "47 151.46 256 False 4 NonCoalescing\n", "48 444.02 512 True 0 Coalescing\n", "49 103.34 512 True 2 Coalescing\n", "50 82.23 512 True 3 Coalescing\n", "51 76.60 512 True 4 Coalescing\n", "52 617.53 512 False 0 NonCoalescing\n", "53 312.91 512 False 2 NonCoalescing\n", "54 299.75 512 False 3 NonCoalescing\n", "55 299.51 512 False 4 NonCoalescing" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data = pd.DataFrame(source['Depth'])\n", "data['Scheduler name'] = data.apply(\n", " lambda row: 'Coalescing' if row['Is coalescing'] else 'NonCoalescing', axis=1\n", ")\n", "data" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
\n", "" ], "text/plain": [ "alt.Chart(...)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "
\n", "" ], "text/plain": [ "alt.Chart(...)" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "for scheduler_name in data['Scheduler name'].unique():\n", " scheduler_data = data[data['Scheduler name'] == scheduler_name]\n", " alt.Chart(scheduler_data).mark_line(point=True).encode(\n", " alt.X('Number of engines', scale=alt.Scale(type='log')),\n", " alt.Y('Duration in ms', scale=alt.Scale(type='log')),\n", " color='Depth:N',\n", " tooltip='Duration in ms',\n", " ).properties(title=scheduler_name, width=800).interactive().display(renderer='svg')" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "jupyter": { "source_hidden": true } }, "outputs": [ { "data": { "text/html": [ "\n", "
\n", "" ], "text/plain": [ "alt.Chart(...)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "
\n", "" ], "text/plain": [ "alt.Chart(...)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "
\n", "" ], "text/plain": [ "alt.Chart(...)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "
\n", "" ], "text/plain": [ "alt.Chart(...)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "
\n", "" ], "text/plain": [ "alt.Chart(...)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "
\n", "" ], "text/plain": [ "alt.Chart(...)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "
\n", "" ], "text/plain": [ "alt.Chart(...)" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "for engine in data['Number of engines'].unique():\n", " alt.Chart(data[data['Number of engines'] == engine]).mark_bar().encode(\n", " x='Scheduler name',\n", " y='Duration in ms',\n", " color='Scheduler name:N',\n", " column='Depth:N',\n", " tooltip='Duration in ms',\n", " ).properties(title=f'Runtime on {engine} engines:').interactive().display(\n", " renderer='svg'\n", " )" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.4" } }, "nbformat": 4, "nbformat_minor": 4 } ipython-ipyparallel-14e3c43/benchmarks/engines_test.py000066400000000000000000000007111520071063500232240ustar00rootroot00000000000000import time from subprocess import check_call import ipyparallel as ipp n = 20 check_call(f'ipcluster start -n {n} --daemon --profile=asv --debug', shell=True) c = ipp.Client(profile='asv') seen = -1 running_engines = len(c) while running_engines < n: if seen != running_engines: print(running_engines) seen = running_engines running_engines = len(c) time.sleep(0.1) check_call('ipcluster stop --profile=asv', shell=True) ipython-ipyparallel-14e3c43/benchmarks/explore/000077500000000000000000000000001520071063500216425ustar00rootroot00000000000000ipython-ipyparallel-14e3c43/benchmarks/explore/control_flow.py000066400000000000000000000017061520071063500247270ustar00rootroot00000000000000import numpy as np import ipyparallel as ipp def main(): client = ipp.Client(profile='asv') # client.debug = True direct_view = client[:] direct_view.targets = list(range(5)) direct_view_result = direct_view.apply(lambda x: x * 2, 13) print(direct_view_result.get()) # load_balanced_view = client.load_balanced_view() # result = load_balanced_view.apply(lambda x: x * 2, 13) # print(result.get()) broadcast_view = client.broadcast_view(is_coalescing=True) broadcast_result = broadcast_view.apply_sync( lambda x: x, np.array([0] * 8, dtype=np.int8) ) print(broadcast_result) print(len(broadcast_result)) # broadcast_view2 = client.broadcast_view(is_coalescing=False) # broadcast_result = broadcast_view2.apply_sync( # lambda x: x, np.array([0] * 8, dtype=np.int8) # ) # # print(broadcast_result) # print(len(broadcast_result)) if __name__ == '__main__': main() ipython-ipyparallel-14e3c43/benchmarks/explore/scheduler.py000066400000000000000000000002661520071063500241760ustar00rootroot00000000000000from ipyparallel.apps import ipclusterapp as app def main(): app.launch_new_instance(['start', '-n', '16', '--debug', '--profile=asv']) if __name__ == '__main__': main() ipython-ipyparallel-14e3c43/benchmarks/gcloud_setup.py000077500000000000000000000126061520071063500232430ustar00rootroot00000000000000#!/usr/bin/env python3 import multiprocessing as mp import os import sys from subprocess import Popen, check_call from time import sleep import googleapiclient.discovery as gcd from benchmarks.utils import get_time_stamp CORE_NUMBERS_FOR_TEMPLATES = [64] ZONE = "europe-west1-b" PROJECT_NAME = "jupyter-simula" INSTANCE_NAME_PREFIX = "asv-testing-" MACHINE_CONFIGS_DIR = os.path.join(os.getcwd(), "machine_configs") CONDA_PATH = 'miniconda3/bin/conda' compute = gcd.build("compute", "v1") def generate_template_name(number_of_cores_and_ram): return f"{INSTANCE_NAME_PREFIX}{number_of_cores_and_ram}" def get_running_instance_names() -> list[str]: result = compute.instances().list(project=PROJECT_NAME, zone=ZONE).execute() return [item["name"] for item in result["items"]] if "items" in result else [] def delete_instance(instance_name) -> dict: print(f"Deleting instance: {instance_name}") return ( compute.instances() .delete(project=PROJECT_NAME, zone=ZONE, instance=instance_name) .execute() ) def delete_all_instances(): return [ delete_instance(name) for name in get_running_instance_names() if INSTANCE_NAME_PREFIX in name ] def gcloud_run(*args, block=True): cmd = ["gcloud", "compute"] + list(args) print(f'$ {" ".join(cmd)}') ( check_call( cmd # stdout=open(get_gcloud_log_file_name(instance_name) + ".log", "a+"), # stderr=open(f"{get_gcloud_log_file_name(instance_name)}_error.out", "a+"), ) if block else Popen(cmd) ) def copy_files_to_instance(instance_name, *file_names, directory="~"): for file_name in file_names: gcloud_run("scp", file_name, f"{instance_name}:{directory}", f"--zone={ZONE}") def command_over_ssh(instance_name, *args, block=True): return gcloud_run("ssh", instance_name, f"--zone={ZONE}", "--", *args, block=block) def run_on_instance(template_name): current_instance_name = f"{template_name}-{get_time_stamp()}" benchmark_name = sys.argv[1] if len(sys.argv) > 1 else '' print(f"Creating new instance with name: {current_instance_name}") gcloud_run( "instances", "create", current_instance_name, "--source-instance-template", template_name, ) sleep(20) # Waiting for ssh keys to propagate to instance command_over_ssh(current_instance_name, "sudo", "apt", "update") print("copying instance setup to instance") command_over_ssh( current_instance_name, 'wget', '-q', 'https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh', ) print('installing miniconda') command_over_ssh( current_instance_name, 'bash', 'Miniconda3-latest-Linux-x86_64.sh', '-b' ) command_over_ssh( current_instance_name, 'echo', '"source miniconda3/bin/activate"', '>>', '~/.bashrc', ) command_over_ssh(current_instance_name, f'{CONDA_PATH}', 'init') print('installing asv and google api') command_over_ssh( current_instance_name, f'{CONDA_PATH}', 'install', '-c', 'conda-forge', 'asv', 'google-api-python-client', 'google-auth-httplib2', 'google-auth-oauthlib', 'google-cloud-storage', 'numpy', '-y', ) copy_files_to_instance(current_instance_name, "instance_setup.py") for config_name in os.listdir(MACHINE_CONFIGS_DIR): if config_name == template_name + ".json": copy_files_to_instance( current_instance_name, os.path.join(MACHINE_CONFIGS_DIR, config_name), directory="~/.asv-machine.json", ) break else: print(f"Found no valid machine config for template: {template_name}.") exit(1) print("starting instance setup") command_over_ssh( current_instance_name, "miniconda3/bin/python3", "instance_setup.py", current_instance_name, template_name, block=True, ) command_over_ssh( current_instance_name, 'cd', 'ipyparallel_master_project', ';', "~/miniconda3/bin/python3", 'asv_runner.py', benchmark_name, template_name, block=False, ) if __name__ == "__main__": running_instances = get_running_instance_names() number_of_running_instances = len(running_instances) # atexit.register(delete_all_instances) print(f"Currently there are {number_of_running_instances} running instances.") if number_of_running_instances: print("Running instances: ") for instance in running_instances: print(f" {instance}") if "-d" in sys.argv: result = delete_instance(sys.argv[2]) elif "-da" in sys.argv: result = delete_all_instances() if "-q" in sys.argv: exit(0) if len(CORE_NUMBERS_FOR_TEMPLATES) == 1: run_on_instance(generate_template_name(CORE_NUMBERS_FOR_TEMPLATES[0])) else: with mp.Pool(len(CORE_NUMBERS_FOR_TEMPLATES)) as pool: result = pool.map_async( run_on_instance, [ generate_template_name(core_number) for core_number in CORE_NUMBERS_FOR_TEMPLATES ], ) result.wait() print("gcloud setup finished.") ipython-ipyparallel-14e3c43/benchmarks/instance_setup.py000066400000000000000000000030701520071063500235620ustar00rootroot00000000000000import os DEFAULT_MINICONDA_PATH = os.path.join(os.getcwd(), "miniconda3/bin/:") env = os.environ.copy() env["PATH"] = DEFAULT_MINICONDA_PATH + env["PATH"] from subprocess import check_call GITHUB_TOKEN = "" # Token for machine user ASV_TESTS_REPO = "github.com/tomoboy/ipyparallel_master_project.git" IPYPARALLEL_REPO = "github.com/tomoboy/ipyparallel.git" def cmd_run(*args, log_filename=None, error_filename=None): if len(args) == 1: args = args[0].split(" ") print(f'$ {" ".join(args)}') if not log_filename and not error_filename: check_call(args, env=env) else: check_call( args, env=env, stdout=open(log_filename, 'w'), stderr=open(error_filename, 'w'), ) if __name__ == "__main__": cmd_run( f"git clone -q https://{GITHUB_TOKEN}@{ASV_TESTS_REPO}" ) # Get benchmarks from repo print("Finished cloning benchmark repo") # Installing ipyparallel from the dev branch cmd_run(f"pip install -q git+https://{GITHUB_TOKEN}@{IPYPARALLEL_REPO}") print("Installed ipyparallel") # Create profile for ipyparallel, (should maybe be copied if we want some cusom values here) cmd_run("ipython profile create --parallel --profile=asv") cmd_run('echo 120000 > /proc/sys/kernel/threads-max') cmd_run('echo 600000 > /proc/sys/vm/max_map_count') cmd_run('echo 200000 > /proc/sys/kernel/piad_max') cmd_run('echo "* hard nproc 100000" > /etc/security/limits.d') cmd_run('echo "* soft nproc 100000" > /etc/security/limits.d') ipython-ipyparallel-14e3c43/benchmarks/logger.py000066400000000000000000000013531520071063500220170ustar00rootroot00000000000000import os from datetime import date from ipyparallel_master_project.benchmarks.utils import get_time_stamp LOGS_DIR = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'logs') GCLOUD_DIR = os.path.join(LOGS_DIR, 'gcloud_output') PROFILING_DIR = os.path.join(LOGS_DIR, 'profiling') TODAY = str(date.today()) def get_dir(main_dir): target_dir = f"{main_dir}/{TODAY}" if not os.path.exists(target_dir): os.makedirs(target_dir) return target_dir def get_profiling_log_file_name(): return os.path.join(get_dir(PROFILING_DIR), f'profiling_{get_time_stamp()}') def get_gcloud_log_file_name(instance_name): return os.path.join(get_dir(GCLOUD_DIR), instance_name) if __name__ == "__main__": print(LOGS_DIR) ipython-ipyparallel-14e3c43/benchmarks/machine_configs/000077500000000000000000000000001520071063500233005ustar00rootroot00000000000000ipython-ipyparallel-14e3c43/benchmarks/machine_configs/asv-testing-16.json000066400000000000000000000003131520071063500266600ustar00rootroot00000000000000{ "asv-testing-16": { "arch": "x86_64", "cpu": "Intel(R) Xeon(R) CPU @ 2.30GHz", "machine": "asv-testing-16", "os": "Linux 4.15.0-1029-gcp", "ram": "16423396" }, "version": 1 } ipython-ipyparallel-14e3c43/benchmarks/machine_configs/asv-testing-32.json000066400000000000000000000003131520071063500266560ustar00rootroot00000000000000{ "asv-testing-16": { "arch": "x86_64", "cpu": "Intel(R) Xeon(R) CPU @ 2.30GHz", "machine": "asv-testing-32", "os": "Linux 4.15.0-1029-gcp", "ram": "32423396" }, "version": 1 } ipython-ipyparallel-14e3c43/benchmarks/machine_configs/asv-testing-64.json000066400000000000000000000003131520071063500266630ustar00rootroot00000000000000{ "asv-testing-64": { "arch": "x86_64", "cpu": "Intel(R) Xeon(R) CPU @ 2.30GHz", "machine": "asv-testing-64", "os": "Linux 4.15.0-1029-gcp", "ram": "64423396" }, "version": 1 } ipython-ipyparallel-14e3c43/benchmarks/machine_configs/asv-testing-96.json000066400000000000000000000003211520071063500266670ustar00rootroot00000000000000{ "asv-testing-16-16": { "arch": "x86_64", "cpu": "Intel(R) Xeon(R) CPU @ 2.30GHz", "machine": "asv-testing-96-96", "os": "Linux 4.15.0-1029-gcp", "ram": "96423396" }, "version": 1 } ipython-ipyparallel-14e3c43/benchmarks/profiling/000077500000000000000000000000001520071063500221555ustar00rootroot00000000000000ipython-ipyparallel-14e3c43/benchmarks/profiling/__init__.py000066400000000000000000000000001520071063500242540ustar00rootroot00000000000000ipython-ipyparallel-14e3c43/benchmarks/profiling/profiling_code.py000066400000000000000000000041641520071063500255170ustar00rootroot00000000000000import sys import numpy as np import ipyparallel as ipp def echo(delay=0): def inner_echo(x, **kwargs): import time if delay: time.sleep(delay) return x return inner_echo def profile_many_empty_tasks(lview, n, block=True): lview.map(echo(0), [None] * n, block=block) # def profile_echo_many_arguments(lview, number_of_arguments): # lview.map( # lambda x: echo_many_arguments(*x), # [ # tuple(np.empty(1, dtype=np.int8) for n in range(number_of_arguments)) # for x in range(16) # ], # block=False, # ) def profile_tasks_with_large_data(lview, num_bytes): for _ in range(10): for i in range(10): lview.apply_sync(echo(0), np.array([0] * num_bytes, dtype=np.int8)) def run_profiling(selected_profiling_task, selected_view): client = ipp.Client(profile='asv') # add it to path on the engines # client[:].apply_sync(add_to_path, master_project_parent) print('profiling task: ', selected_profiling_task) print('profiling view: ', selected_view) if selected_view == 'direct': view = client[:] elif selected_view == 'spanning_tree': view = client.spanning_tree_view() else: view = client.load_balanced_view() # view = client[:] if selected_view == 'direct' else client.load_balanced_view() if selected_profiling_task == 'many_empty_tasks': for x in range(1, 5): profile_many_empty_tasks(view, 10**x) elif selected_profiling_task == 'many_empty_tasks_non_blocking': for x in range(1, 5): profile_many_empty_tasks(view, 10**x, block=False) elif selected_profiling_task == 'tasks_with_large_data': for x in range(1, 8): profile_tasks_with_large_data(view, 10**x) # elif selected_profiling_task == 'echo_many_arguments': # for i in range(100): # for number_of_arguments in ((2 ** x) - 1 for x in range(1, 9)): # profile_echo_many_arguments(view, number_of_arguments) if __name__ == "__main__": run_profiling(sys.argv[1], sys.argv[2]) ipython-ipyparallel-14e3c43/benchmarks/profiling/profiling_code_runner.py000066400000000000000000000055571520071063500271170ustar00rootroot00000000000000import datetime import os import sys import time from subprocess import Popen, check_call, check_output import ipyparallel as ipp def wait_for(condition): for _ in range(750): if condition(): break else: time.sleep(0.1) if not condition(): raise TimeoutError('wait_for took to long to finish') def get_time_stamp() -> str: return ( str(datetime.datetime.now()).split(".")[0].replace(" ", "-").replace(":", "-") ) def start_cmd(cmd, blocking=True): print(cmd) return ( check_call( cmd, stdout=sys.__stdout__, stderr=open('spanning_tree_error.out', 'a+'), shell=True, ) if blocking else Popen( cmd, stdout=sys.__stdout__, stderr=open('spanning_tree_error.out', 'a+'), shell=True, ) ) def stop_cluster(): if '-s' not in sys.argv: start_cmd('ipcluster stop --profile=asv') # atexit.register(stop_cluster) PROFILING_TASKS = [ 'many_empty_tasks', 'many_empty_tasks_non_blocking', 'tasks_with_large_data', 'echo_many_arguments', ] VIEW_TYPES = ['direct', 'load_balanced'] def get_tasks_to_execute(program_arguments): return ( [f'{program_arguments[2]} {view}' for view in VIEW_TYPES] if len(program_arguments) >= 2 else [f'{task} {view}' for task in PROFILING_TASKS for view in VIEW_TYPES] ) if __name__ == "__main__": print('profiling_code_runner_started') if '-s' not in sys.argv: n = int(sys.argv[1]) if len(sys.argv) > 1 else 16 client = ipp.Client(profile='asv') print(f'Waiting for {n} engines to get available') try: wait_for(lambda: len(client) >= n) except TimeoutError as e: print(e) exit(1) print('Starting the profiling') controller_pid = check_output('pgrep -f ipyparallel.controller', shell=True) number_of_schedulers = 15 scheduler_pids = sorted(int(x) for x in controller_pid.decode('utf-8').split())[ -number_of_schedulers: ] client_output_path = os.path.join(os.getcwd(), 'spanning_tree_client.svg') files_to_upload = [client_output_path] ps = [] for i, scheduler_pid in enumerate(scheduler_pids): scheduler_output_path = os.path.join( os.getcwd(), f'spanning_tree_{i}_scheduler.svg' ) files_to_upload.append(scheduler_output_path) ps.append( start_cmd( f'sudo py-spy --function -d 60 --flame {scheduler_output_path} --pid {scheduler_pid}', blocking=False, ) ) start_cmd( f'sudo py-spy --function -d 60 --flame {client_output_path} -- python profiling_code.py tasks_with_large_data spanning_tree' ) print('client ended') for p in ps: p.wait() ipython-ipyparallel-14e3c43/benchmarks/profiling/view_profiling_results.py000066400000000000000000000015601520071063500273350ustar00rootroot00000000000000import os master_project_path = os.path.abspath( os.path.join(os.path.dirname(__file__), os.pardir) ) ALL_RESULTS_DIRECTORY = os.path.join(master_project_path, 'results', 'profiling') def get_latest_results_dir(): return os.path.join( 'results', 'profiling', max( dirname for dirname in os.listdir(ALL_RESULTS_DIRECTORY) if 'initial_results' not in dirname ), ) def get_initial_results_dir(): return os.path.join( 'results', 'profiling', next( ( dirname for dirname in os.listdir(ALL_RESULTS_DIRECTORY) if 'initial_results' in dirname ), max(dirname for dirname in os.listdir(ALL_RESULTS_DIRECTORY)), ), ) if __name__ == '__main__': print(get_latest_results_dir()) ipython-ipyparallel-14e3c43/benchmarks/profiling_initial_results.ipynb000066400000000000000000000423671520071063500265260ustar00rootroot00000000000000{ "cells": [ { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import os\n", "\n", "from IPython.core.interactiveshell import InteractiveShell\n", "from IPython.display import IFrame, display\n", "from profiling.view_profiling_results import (\n", " get_initial_results_dir,\n", " get_latest_results_dir,\n", ")\n", "\n", "InteractiveShell.ast_node_interactivity = \"all\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# ipyparallel profiling results" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Running profiling with py-spy" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "def get_results(dir_name, file_name):\n", " return os.path.join(dir_name, file_name)\n", "\n", "\n", "def get_file_name(task_name, is_client):\n", " return f'{task_name}_{\"client\" if is_client else \"scheduler\"}.svg'\n", "\n", "\n", "def get_latest_results(task_name, is_client=True):\n", " return get_results(get_latest_results_dir(), get_file_name(task_name, is_client))\n", "\n", "\n", "def get_initial_results(task_name, is_client=True):\n", " return get_results(get_initial_results_dir(), get_file_name(task_name, is_client))\n", "\n", "\n", "def display_svg(svg_file_path):\n", " display(IFrame(src=svg_file_path, width='100%', height=800))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Task: many_empty_tasks:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "\u001b[0;31mSignature:\u001b[0m \u001b[0mprofiling_code\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mprofile_many_empty_tasks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlview\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mblock\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mDocstring:\u001b[0m \n", "\u001b[0;31mSource:\u001b[0m \n", "\u001b[0;32mdef\u001b[0m \u001b[0mprofile_many_empty_tasks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlview\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mblock\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mlview\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmap\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mecho\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m*\u001b[0m \u001b[0mn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mblock\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mblock\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mFile:\u001b[0m ~/ipyparallel_master_project/profiling/profiling_code.py\n", "\u001b[0;31mType:\u001b[0m function\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "??profiling_code.profile_many_empty_tasks" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Client:" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "display_svg(get_initial_results('many_empty_tasks'))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Scheduler:" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "display_svg(get_initial_results('many_empty_tasks', is_client=False))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Task: many_empty_tasks_non_blocking:" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "\u001b[0;31mSignature:\u001b[0m \u001b[0mprofiling_code\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mprofile_many_empty_tasks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlview\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mblock\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mDocstring:\u001b[0m \n", "\u001b[0;31mSource:\u001b[0m \n", "\u001b[0;32mdef\u001b[0m \u001b[0mprofile_many_empty_tasks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlview\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mblock\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mlview\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmap\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mecho\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m*\u001b[0m \u001b[0mn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mblock\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mblock\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mFile:\u001b[0m ~/ipyparallel_master_project/profiling/profiling_code.py\n", "\u001b[0;31mType:\u001b[0m function\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "??profiling_code.profile_many_empty_tasks" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Client:" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "display_svg(get_initial_results('many_empty_tasks_non_blocking'))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Scheduler: " ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "display_svg(get_initial_results('many_empty_tasks_non_blocking', is_client=False))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Task: tasks_with_large_data" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "\u001b[0;31mSignature:\u001b[0m \u001b[0mprofiling_code\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mprofile_tasks_with_large_data\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mclient\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnum_bytes\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mDocstring:\u001b[0m \n", "\u001b[0;31mSource:\u001b[0m \n", "\u001b[0;32mdef\u001b[0m \u001b[0mprofile_tasks_with_large_data\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mclient\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnum_bytes\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mi\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m10\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mclient\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mapply_sync\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mecho\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mempty\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnum_bytes\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mint8\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mFile:\u001b[0m ~/ipyparallel_master_project/profiling/profiling_code.py\n", "\u001b[0;31mType:\u001b[0m function\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "?? profiling_code.profile_tasks_with_large_data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Client:" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "display_svg(get_initial_results('tasks_with_large_data'))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Scheduler:" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "display_svg(get_initial_results('tasks_with_large_data', is_client=False))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Task: echo_many_arguments:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "\u001b[0;31mSignature:\u001b[0m \u001b[0mprofiling_code\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mprofile_echo_many_arguments\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlview\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnumber_of_arguments\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mDocstring:\u001b[0m \n", "\u001b[0;31mSource:\u001b[0m \n", "\u001b[0;32mdef\u001b[0m \u001b[0mprofile_echo_many_arguments\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlview\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnumber_of_arguments\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mlview\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmap\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mlambda\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mecho_many_arguments\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mtuple\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mempty\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mint8\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mn\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnumber_of_arguments\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mx\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m16\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mblock\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mFile:\u001b[0m ~/ipyparallel_master_project/profiling/profiling_code.py\n", "\u001b[0;31mType:\u001b[0m function\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "??profiling_code.profile_echo_many_arguments" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Client: " ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "display_svg(get_initial_results('echo_many_arguments'))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Scheduler:\n" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "display_svg(get_initial_results('echo_many_arguments', is_client=False))" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.4" } }, "nbformat": 4, "nbformat_minor": 4 } ipython-ipyparallel-14e3c43/benchmarks/profiling_latest_results.ipynb000066400000000000000000000425771520071063500263740ustar00rootroot00000000000000{ "cells": [ { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "import os\n", "\n", "from IPython.core.interactiveshell import InteractiveShell\n", "from IPython.display import IFrame, display\n", "from profiling.view_profiling_results import (\n", " get_initial_results_dir,\n", " get_latest_results_dir,\n", ")\n", "\n", "InteractiveShell.ast_node_interactivity = \"all\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# ipyparallel profiling results" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Running profiling with py-spy\n" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "def get_results(dir_name, file_name):\n", " return os.path.join(dir_name, file_name)\n", "\n", "\n", "def get_file_name(task_name, is_client):\n", " return f'{task_name}_{\"client\" if is_client else \"scheduler\"}.svg'\n", "\n", "\n", "def get_latest_results(task_name, is_client=True):\n", " return get_results(get_latest_results_dir(), get_file_name(task_name, is_client))\n", "\n", "\n", "def get_initial_results(task_name, is_client=True):\n", " return get_results(get_initial_results_dir(), get_file_name(task_name, is_client))\n", "\n", "\n", "def display_svg(svg_file_path):\n", " display(IFrame(src=svg_file_path, width='100%', height=800))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Task: many_empty_tasks:" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "\u001b[0;31mSignature:\u001b[0m \u001b[0mprofiling_code\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mprofile_many_empty_tasks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlview\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mblock\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mDocstring:\u001b[0m \n", "\u001b[0;31mSource:\u001b[0m \n", "\u001b[0;32mdef\u001b[0m \u001b[0mprofile_many_empty_tasks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlview\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mblock\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mlview\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmap\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mecho\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m*\u001b[0m \u001b[0mn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mblock\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mblock\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mFile:\u001b[0m ~/ipyparallel_master_project/profiling/profiling_code.py\n", "\u001b[0;31mType:\u001b[0m function\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "??profiling_code.profile_many_empty_tasks" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Client: " ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "display_svg(get_latest_results('many_empty_tasks'))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Scheduler:\n" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "display_svg(get_latest_results('many_empty_tasks', is_client=False))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Task: many_empty_tasks_non_blocking:" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "\u001b[0;31mSignature:\u001b[0m \u001b[0mprofiling_code\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mprofile_many_empty_tasks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlview\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mblock\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mDocstring:\u001b[0m \n", "\u001b[0;31mSource:\u001b[0m \n", "\u001b[0;32mdef\u001b[0m \u001b[0mprofile_many_empty_tasks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlview\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mblock\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mlview\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmap\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mecho\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m*\u001b[0m \u001b[0mn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mblock\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mblock\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mFile:\u001b[0m ~/ipyparallel_master_project/profiling/profiling_code.py\n", "\u001b[0;31mType:\u001b[0m function\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "??profiling_code.profile_many_empty_tasks" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Client:" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "display_svg(get_latest_results('many_empty_tasks_non_blocking'))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Scheduler:\n" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "display_svg(get_latest_results('many_empty_tasks_non_blocking', is_client=False))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Task: tasks_with_large_data" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "\u001b[0;31mSignature:\u001b[0m \u001b[0mprofiling_code\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mprofile_tasks_with_large_data\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlview\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnum_bytes\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mDocstring:\u001b[0m \n", "\u001b[0;31mSource:\u001b[0m \n", "\u001b[0;32mdef\u001b[0m \u001b[0mprofile_tasks_with_large_data\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlview\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnum_bytes\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0m_\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m100\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mi\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m10\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mlview\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mapply_sync\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mecho\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mempty\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnum_bytes\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mint8\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mFile:\u001b[0m ~/ipyparallel_master_project/profiling/profiling_code.py\n", "\u001b[0;31mType:\u001b[0m function\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "?? profiling_code.profile_tasks_with_large_data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Client:" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "display_svg(get_latest_results('tasks_with_large_data'))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Scheduler:\n" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "display_svg(get_latest_results('tasks_with_large_data', is_client=False))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Task: echo_many_arguments:" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "\u001b[0;31mSignature:\u001b[0m \u001b[0mprofiling_code\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mprofile_echo_many_arguments\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlview\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnumber_of_arguments\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mDocstring:\u001b[0m \n", "\u001b[0;31mSource:\u001b[0m \n", "\u001b[0;32mdef\u001b[0m \u001b[0mprofile_echo_many_arguments\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlview\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnumber_of_arguments\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mlview\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmap\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mlambda\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mecho_many_arguments\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mtuple\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mempty\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mint8\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mn\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnumber_of_arguments\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mx\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m16\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mblock\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mFile:\u001b[0m ~/ipyparallel_master_project/profiling/profiling_code.py\n", "\u001b[0;31mType:\u001b[0m function\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "??profiling_code.profile_echo_many_arguments" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Client: " ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "display_svg(get_latest_results('echo_many_arguments'))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Scheduler:\n" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "display_svg(get_latest_results('echo_many_arguments', is_client=False))" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.4" } }, "nbformat": 4, "nbformat_minor": 4 } ipython-ipyparallel-14e3c43/benchmarks/push_benchmarks.ipynb000066400000000000000000004674071520071063500244250ustar00rootroot00000000000000{ "cells": [ { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1.9825750242013553" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "81920 / 41320" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "import pickle\n", "\n", "import altair as alt\n", "import pandas as pd\n", "from benchmark_result import get_push_source\n", "from IPython.display import Markdown, display" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "# benchmark_results = get_benchmark_results()\n", "with open('saved_results.pkl', 'rb') as saved_results:\n", " benchmark_results = pickle.load(saved_results)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# time_push" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This benchmark comes from benchmarking the runtime of sending arrays of various size to different numbers of engines and returning None." ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "jupyter": { "source_hidden": true } }, "outputs": [ { "data": { "text/plain": [ "\u001b[0;31mSignature:\u001b[0m \u001b[0mmake_push_benchmark\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mget_view\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mDocstring:\u001b[0m \n", "\u001b[0;31mSource:\u001b[0m \n", "\u001b[0;32mdef\u001b[0m \u001b[0mmake_push_benchmark\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mget_view\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mclass\u001b[0m \u001b[0mPushMessageSuite\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mparam_names\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m'Number of engines'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'Number of bytes'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mtimer\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtimeit\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdefault_timer\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mtimeout\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m120\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mparams\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mengines\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbyte_param\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mview\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mclient\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0msetup\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnumber_of_engines\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnumber_of_bytes\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclient\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mipp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mClient\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprofile\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'asv'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mview\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mget_view\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mview\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtargets\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mlist\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnumber_of_engines\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mwait_for\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;32mlambda\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclient\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m>=\u001b[0m \u001b[0mnumber_of_engines\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mtime_broadcast\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mengines\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnumber_of_bytes\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mreply\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mview\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mapply_sync\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mlambda\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0marray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m*\u001b[0m \u001b[0mnumber_of_bytes\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mint8\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mteardown\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclient\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclient\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mPushMessageSuite\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mFile:\u001b[0m ~/ipyparallel_master_project/benchmarks/throughput.py\n", "\u001b[0;31mType:\u001b[0m function\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "??make_push_benchmark" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "jupyter": { "source_hidden": true } }, "outputs": [], "source": [ "source = get_push_source(benchmark_results)" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "jupyter": { "source_hidden": true } }, "outputs": [], "source": [ "dview = pd.DataFrame(source['DirectView'])\n", "dview['Scheduler name'] = 'DirectView'\n", "dview['Speedup'] = 1" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "jupyter": { "source_hidden": true } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Duration in msNumber of bytesNumber of enginesScheduler nameSpeedup
06.3010001DirectView1.000000
18.15100001DirectView1.000000
212.971000001DirectView1.000000
381.4110000001DirectView1.000000
4158.5720000001DirectView1.000000
..................
35577.7110001024NonCoalescing1.142511
36598.62100001024NonCoalescing1.082156
37597.031000001024NonCoalescing1.319331
38666.2010000001024NonCoalescing2.073837
39806.0020000001024NonCoalescing3.242618
\n", "

120 rows × 5 columns

\n", "
" ], "text/plain": [ " Duration in ms Number of bytes Number of engines Scheduler name \\\n", "0 6.30 1000 1 DirectView \n", "1 8.15 10000 1 DirectView \n", "2 12.97 100000 1 DirectView \n", "3 81.41 1000000 1 DirectView \n", "4 158.57 2000000 1 DirectView \n", ".. ... ... ... ... \n", "35 577.71 1000 1024 NonCoalescing \n", "36 598.62 10000 1024 NonCoalescing \n", "37 597.03 100000 1024 NonCoalescing \n", "38 666.20 1000000 1024 NonCoalescing \n", "39 806.00 2000000 1024 NonCoalescing \n", "\n", " Speedup \n", "0 1.000000 \n", "1 1.000000 \n", "2 1.000000 \n", "3 1.000000 \n", "4 1.000000 \n", ".. ... \n", "35 1.142511 \n", "36 1.082156 \n", "37 1.319331 \n", "38 2.073837 \n", "39 3.242618 \n", "\n", "[120 rows x 5 columns]" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "datas = []\n", "for scheduler_name, scheduler_results in source.items():\n", " data = pd.DataFrame(scheduler_results)\n", " data['Scheduler name'] = scheduler_name\n", " data['Speedup'] = dview['Duration in ms'] / data['Duration in ms']\n", " datas.append(data)\n", "data = pd.concat(datas)\n", "data" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
\n", "" ], "text/plain": [ "alt.Chart(...)" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ldata = data[data['Number of bytes'] == 2000_000]\n", "alt.Chart(ldata).mark_line(point=True).encode(\n", " alt.X('Number of engines', scale=alt.Scale(type='log', base=2)),\n", " alt.Y('Duration in ms', scale=alt.Scale(type='log')),\n", " color='Scheduler name:N',\n", " tooltip='Duration in ms',\n", ").configure_axis(labelFontSize=20, titleFontSize=20).properties(\n", " title='Runtime of apply using DirectView', width=1080\n", ").interactive().display(renderer='svg')" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Duration in msNumber of bytesNumber of enginesScheduler nameSpeedup
35660.0410001024DirectView1.000000
36647.80100001024DirectView1.000000
37787.681000001024DirectView1.000000
381381.5910000001024DirectView1.000000
392613.5520000001024DirectView1.000000
35164.1210001024Coalescing4.021691
36164.27100001024Coalescing3.943508
37173.361000001024Coalescing4.543609
38284.1610000001024Coalescing4.862014
39718.3420000001024Coalescing3.638319
35577.7110001024NonCoalescing1.142511
36598.62100001024NonCoalescing1.082156
37597.031000001024NonCoalescing1.319331
38666.2010000001024NonCoalescing2.073837
39806.0020000001024NonCoalescing3.242618
\n", "
" ], "text/plain": [ " Duration in ms Number of bytes Number of engines Scheduler name \\\n", "35 660.04 1000 1024 DirectView \n", "36 647.80 10000 1024 DirectView \n", "37 787.68 100000 1024 DirectView \n", "38 1381.59 1000000 1024 DirectView \n", "39 2613.55 2000000 1024 DirectView \n", "35 164.12 1000 1024 Coalescing \n", "36 164.27 10000 1024 Coalescing \n", "37 173.36 100000 1024 Coalescing \n", "38 284.16 1000000 1024 Coalescing \n", "39 718.34 2000000 1024 Coalescing \n", "35 577.71 1000 1024 NonCoalescing \n", "36 598.62 10000 1024 NonCoalescing \n", "37 597.03 100000 1024 NonCoalescing \n", "38 666.20 1000000 1024 NonCoalescing \n", "39 806.00 2000000 1024 NonCoalescing \n", "\n", " Speedup \n", "35 1.000000 \n", "36 1.000000 \n", "37 1.000000 \n", "38 1.000000 \n", "39 1.000000 \n", "35 4.021691 \n", "36 3.943508 \n", "37 4.543609 \n", "38 4.862014 \n", "39 3.638319 \n", "35 1.142511 \n", "36 1.082156 \n", "37 1.319331 \n", "38 2.073837 \n", "39 3.242618 " ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ldata = data[data['Number of engines'] == 1024]\n", "ldata" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
\n", "" ], "text/plain": [ "alt.Chart(...)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "
\n", "" ], "text/plain": [ "alt.Chart(...)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "
\n", "" ], "text/plain": [ "alt.Chart(...)" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "for scheduler_name in data['Scheduler name'].unique():\n", " scheduler_data = data[data['Scheduler name'] == scheduler_name]\n", " alt.Chart(scheduler_data).mark_line(point=True).encode(\n", " alt.X('Number of bytes', scale=alt.Scale(type='log')),\n", " alt.Y('Duration in ms', scale=alt.Scale(type='log')),\n", " color='Number of engines:N',\n", " tooltip='Duration in ms',\n", " ).properties(title=scheduler_name, width=800).interactive().display(renderer='svg')" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
\n", "" ], "text/plain": [ "alt.Chart(...)" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ldata = data[data['Number of bytes'] == 1000]\n", "alt.Chart(ldata).mark_line(point=True).encode(\n", " alt.X('Number of engines', scale=alt.Scale(type='log', base=2)),\n", " alt.Y('Duration in ms', scale=alt.Scale(type='log')),\n", " color='Scheduler name:N',\n", " tooltip='Duration in ms',\n", ").configure_axis(labelFontSize=20, titleFontSize=20).properties(\n", " title='Runtime of apply using DirectView', width=1080\n", ").interactive().display(renderer='svg')" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/markdown": [ "## Results for duration[DirectView]/duration[scheduler]" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "
\n", "" ], "text/plain": [ "alt.Chart(...)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "
\n", "" ], "text/plain": [ "alt.Chart(...)" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "display(Markdown('## Results for duration[DirectView]/duration[scheduler]'))\n", "for scheduler_name in data['Scheduler name'].unique():\n", " if scheduler_name == 'DirectView':\n", " continue\n", " alt.Chart(data[data['Scheduler name'] == scheduler_name]).mark_line(\n", " point=True\n", " ).encode(\n", " alt.X('Number of bytes', scale=alt.Scale(type='log')),\n", " alt.Y(\n", " 'Speedup',\n", " ),\n", " color='Number of engines:N',\n", " tooltip='Number of engines',\n", " ).properties(title=scheduler_name, width=800).interactive().display(renderer='svg')" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "jupyter": { "source_hidden": true } }, "outputs": [ { "data": { "text/html": [ "\n", "
\n", "" ], "text/plain": [ "alt.Chart(...)" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "data['combined'] = data['Scheduler name'] + ' ' + data['Number of bytes'].astype(str)\n", "alt.Chart(data[data['Scheduler name'] != 'DirectView']).mark_line(point=True).encode(\n", " alt.X('Number of engines', scale=alt.Scale(type='log')),\n", " alt.Y(\n", " 'Speedup',\n", " ),\n", " color='Number of bytes:N',\n", " strokeDash=alt.StrokeDash(shorthand='Scheduler name', legend=None),\n", " tooltip='combined',\n", ").properties(\n", " title='schedulers vs directView scaling engines', width=800\n", ").interactive().display(renderer='svg')" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "jupyter": { "source_hidden": true } }, "outputs": [ { "data": { "text/html": [ "\n", "
\n", "" ], "text/plain": [ "alt.Chart(...)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "
\n", "" ], "text/plain": [ "alt.Chart(...)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "
\n", "" ], "text/plain": [ "alt.Chart(...)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "
\n", "" ], "text/plain": [ "alt.Chart(...)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "
\n", "" ], "text/plain": [ "alt.Chart(...)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "
\n", "" ], "text/plain": [ "alt.Chart(...)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "
\n", "" ], "text/plain": [ "alt.Chart(...)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "
\n", "" ], "text/plain": [ "alt.Chart(...)" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "for engine in data['Number of engines'].unique():\n", " alt.Chart(data[data['Number of engines'] == engine]).mark_bar().encode(\n", " x='Scheduler name',\n", " y='Duration in ms',\n", " color='Scheduler name:N',\n", " column='Number of bytes:N',\n", " tooltip='Duration in ms',\n", " ).properties(title=f'Runtime on {engine} engines:').interactive().display(\n", " renderer='svg'\n", " )" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.4" } }, "nbformat": 4, "nbformat_minor": 4 } ipython-ipyparallel-14e3c43/benchmarks/results/000077500000000000000000000000001520071063500216655ustar00rootroot00000000000000ipython-ipyparallel-14e3c43/benchmarks/results/asv-testing-64-2020-04-28/000077500000000000000000000000001520071063500254115ustar00rootroot00000000000000ipython-ipyparallel-14e3c43/benchmarks/results/asv-testing-64-2020-04-28/CoalescingBroadcast.json000066400000000000000000000400721520071063500322010ustar00rootroot00000000000000{ "results": { "throughput.CoalescingBroadcast.time_broadcast": { "result": [ 0.008845925250000164, 0.009693699750016549, 0.017903971000009733, 0.08668510299997934, 0.16480446000002758, 0.008895709249998163, 0.009668692749983165, 0.018017655999983617, 0.08785248450004701, 0.16742340900003683, 0.011144069000010859, 0.01291441100005386, 0.021867980499962414, 0.11143436649996374, 0.20807968100001517, 0.017370600000049308, 0.021279159500011247, 0.03439328749999504, 0.2058132695000836, 0.4104975199999785, 0.025944526499984022, 0.032942681500003346, 0.05592378349996352, 0.26616708349996543, 0.6067387004999887, 0.04439101899998832, 0.058250153000017235, 0.0918319529999394, 0.430556787999933, 1.091450024999915, 0.08410565100001577, 0.11051783899995371, 0.1733202585000413, 0.8846239645000082, 2.2535463620000655, 0.17621222300005002, 0.22157175400002416, 0.35427233650005974, 1.6998301029999539, 4.317671548000021 ], "stats": [ { "ci_99": [0.008582579999995232, 0.009114014000033421], "q_25": 0.008682207875011727, "q_75": 0.008968500750000885, "min": 0.008582579999995232, "max": 0.009114014000033421, "mean": 0.008832584300006375, "std": 0.00017140010979117438, "repeat": 10, "number": 2 }, { "ci_99": [0.009108888500009016, 0.009953991500026405], "q_25": 0.009403745750006465, "q_75": 0.009740142000012497, "min": 0.009108888500009016, "max": 0.009953991500026405, "mean": 0.009582252150011072, "std": 0.0002462743314681266, "repeat": 10, "number": 2 }, { "ci_99": [0.017534163000050285, 0.01867728000001989], "q_25": 0.017671222500013073, "q_75": 0.01826516849993709, "min": 0.017534163000050285, "max": 0.01867728000001989, "mean": 0.01798331509999116, "std": 0.0003786153143613796, "repeat": 10, "number": 1 }, { "ci_99": [0.08306781500004945, 0.08970819600006052], "q_25": 0.08596901674999913, "q_75": 0.08833938750004222, "min": 0.08306781500004945, "max": 0.08970819600006052, "mean": 0.08685855430001084, "std": 0.0018151735799285678, "repeat": 10, "number": 1 }, { "ci_99": [0.16107823200002258, 0.17379544200002783], "q_25": 0.1638462867499868, "q_75": 0.16606597699995973, "min": 0.16107823200002258, "max": 0.17379544200002783, "mean": 0.16573946559999514, "std": 0.003731894153962115, "repeat": 10, "number": 1 }, { "ci_99": [0.008576794000020982, 0.00908237950000057], "q_25": 0.0088115052499802, "q_75": 0.008946545374968196, "min": 0.008576794000020982, "max": 0.00908237950000057, "mean": 0.008855587049993119, "std": 0.00015211203141679916, "repeat": 10, "number": 2 }, { "ci_99": [0.009387736000007862, 0.010546965000003183], "q_25": 0.009498287874990297, "q_75": 0.009844313375026559, "min": 0.009387736000007862, "max": 0.010546965000003183, "mean": 0.00976546714999813, "std": 0.0003412908628503487, "repeat": 10, "number": 2 }, { "ci_99": [0.016273666999950365, 0.018713926999907926], "q_25": 0.01781956000002083, "q_75": 0.018379910500016194, "min": 0.016273666999950365, "max": 0.018713926999907926, "mean": 0.017958508699985033, "std": 0.0006727841703927171, "repeat": 10, "number": 1 }, { "ci_99": [0.08674636700004612, 0.08973132799997074], "q_25": 0.08748966099994959, "q_75": 0.0883355022500325, "min": 0.08674636700004612, "max": 0.08973132799997074, "mean": 0.08791227270000945, "std": 0.000807301358026835, "repeat": 10, "number": 1 }, { "ci_99": [0.16093234000004486, 0.1750400199999831], "q_25": 0.1628612142499719, "q_75": 0.16924775275001025, "min": 0.16093234000004486, "max": 0.1750400199999831, "mean": 0.16709278520002044, "std": 0.004621281552313097, "repeat": 10, "number": 1 }, { "ci_99": [0.010230723999939073, 0.012223024000036276], "q_25": 0.010931111749926004, "q_75": 0.011239616750003734, "min": 0.010230723999939073, "max": 0.012223024000036276, "mean": 0.011122193599987895, "std": 0.00047463716002265835, "repeat": 10, "number": 1 }, { "ci_99": [0.012257858999987548, 0.014189851000082854], "q_25": 0.01282191524998666, "q_75": 0.013461429500011945, "min": 0.012257858999987548, "max": 0.014189851000082854, "mean": 0.01310372200000529, "std": 0.0005208494357745843, "repeat": 10, "number": 1 }, { "ci_99": [0.02098156099998505, 0.02309099400008563], "q_25": 0.021288757999968766, "q_75": 0.022437249000006432, "min": 0.02098156099998505, "max": 0.02309099400008563, "mean": 0.021915044299998954, "std": 0.0006735451847936856, "repeat": 10, "number": 1 }, { "ci_99": [0.10096165100003418, 0.1308096000000205], "q_25": 0.10872409600005994, "q_75": 0.11688631299998065, "min": 0.10096165100003418, "max": 0.1308096000000205, "mean": 0.11299160749999829, "std": 0.008475357573682207, "repeat": 10, "number": 1 }, { "ci_99": [0.18895035699995333, 0.24013160899994546], "q_25": 0.20190470549999873, "q_75": 0.22293177300002753, "min": 0.18895035699995333, "max": 0.24013160899994546, "mean": 0.2122637761999954, "std": 0.014566629150127908, "repeat": 10, "number": 1 }, { "ci_99": [0.0165838509999503, 0.01871835999997984], "q_25": 0.01680883924998966, "q_75": 0.018069517499981202, "min": 0.0165838509999503, "max": 0.01871835999997984, "mean": 0.01746284440000636, "std": 0.0007091753887267665, "repeat": 10, "number": 1 }, { "ci_99": [0.0205556199999819, 0.024096668999959547], "q_25": 0.020935979750049682, "q_75": 0.021610147250072487, "min": 0.0205556199999819, "max": 0.024096668999959547, "mean": 0.02152572150001788, "std": 0.0009785784286471292, "repeat": 10, "number": 1 }, { "ci_99": [0.03401366599996436, 0.03830210000000989], "q_25": 0.03418752575001349, "q_75": 0.036850587499969834, "min": 0.03401366599996436, "max": 0.03830210000000989, "mean": 0.035429392599985475, "std": 0.001594348955210466, "repeat": 10, "number": 1 }, { "ci_99": [0.17302560900009212, 0.29960075300004974], "q_25": 0.18121118124997793, "q_75": 0.23677853524998227, "min": 0.17302560900009212, "max": 0.29960075300004974, "mean": 0.21515005480002855, "std": 0.03953404606258293, "repeat": 10, "number": 1 }, { "ci_99": [0.30271836000008534, 0.5422823939999262], "q_25": 0.3225045839999723, "q_75": 0.47618572675000337, "min": 0.30271836000008534, "max": 0.5422823939999262, "mean": 0.40884113890000434, "std": 0.08609508480067304, "repeat": 10, "number": 1 }, { "ci_99": [0.02554168100004972, 0.03172661799999332], "q_25": 0.02565242625004771, "q_75": 0.028200433999955976, "min": 0.02554168100004972, "max": 0.03172661799999332, "mean": 0.02705550220000532, "std": 0.00193771291474936, "repeat": 10, "number": 1 }, { "ci_99": [0.03199326900005417, 0.03460981000000629], "q_25": 0.0323733895000089, "q_75": 0.033615521250027314, "min": 0.03199326900005417, "max": 0.03460981000000629, "mean": 0.03310141110001723, "std": 0.0008861333697770849, "repeat": 10, "number": 1 }, { "ci_99": [0.05214603100000659, 0.06058179399997243], "q_25": 0.053464679249998426, "q_75": 0.0586950042499268, "min": 0.05214603100000659, "max": 0.06058179399997243, "mean": 0.056150699799979976, "std": 0.002920517901717828, "repeat": 10, "number": 1 }, { "ci_99": [0.23856013699992218, 0.4569734049999852], "q_25": 0.25278867450006715, "q_75": 0.2740517917500256, "min": 0.23856013699992218, "max": 0.4569734049999852, "mean": 0.2811357017000205, "std": 0.05982761166976554, "repeat": 10, "number": 1 }, { "ci_99": [0.4445840670000507, 0.8725243510000382], "q_25": 0.45032277725002245, "q_75": 0.8389444445000152, "min": 0.4445840670000507, "max": 0.8725243510000382, "mean": 0.6395324776000166, "std": 0.19012840996297167, "repeat": 10, "number": 1 }, { "ci_99": [0.04258687399999417, 0.04952562099992974], "q_25": 0.04345094299998209, "q_75": 0.046289385499960645, "min": 0.04258687399999417, "max": 0.04952562099992974, "mean": 0.0450725171999693, "std": 0.002110897886216203, "repeat": 10, "number": 1 }, { "ci_99": [0.053943051999908675, 0.06265194899992821], "q_25": 0.05625700975005543, "q_75": 0.059161112750047096, "min": 0.053943051999908675, "max": 0.06265194899992821, "mean": 0.05807491780001328, "std": 0.002583140475555448, "repeat": 10, "number": 1 }, { "ci_99": [0.08870725500003118, 0.09989857700008997], "q_25": 0.09069596875005459, "q_75": 0.09293613574996584, "min": 0.08870725500003118, "max": 0.09989857700008997, "mean": 0.09268910370000186, "std": 0.0034760391626996834, "repeat": 10, "number": 1 }, { "ci_99": [0.4027940830000034, 0.6487416649999886], "q_25": 0.40929327350008293, "q_75": 0.46930103449997773, "min": 0.4027940830000034, "max": 0.6487416649999886, "mean": 0.46124919379998347, "std": 0.0751229472147978, "repeat": 10, "number": 1 }, { "ci_99": [0.7481511089999913, 1.4615149620000238], "q_25": 0.8471250672499764, "q_75": 1.3211891855000317, "min": 0.7481511089999913, "max": 1.4615149620000238, "mean": 1.0921921868999789, "std": 0.26666679292780665, "repeat": 10, "number": 1 }, { "ci_99": [0.08146235399999568, 0.09221761899993908], "q_25": 0.0833243205000258, "q_75": 0.08510844774997395, "min": 0.08146235399999568, "max": 0.09221761899993908, "mean": 0.08478033300001471, "std": 0.002876318737929474, "repeat": 10, "number": 1 }, { "ci_99": [0.10640839400002733, 0.1270882999999685], "q_25": 0.10835112225004195, "q_75": 0.11156673200005685, "min": 0.10640839400002733, "max": 0.1270882999999685, "mean": 0.11151468289999684, "std": 0.005499325208689884, "repeat": 10, "number": 1 }, { "ci_99": [0.15773363799996787, 0.20360428500009675], "q_25": 0.162975499750047, "q_75": 0.17678210900001545, "min": 0.15773363799996787, "max": 0.20360428500009675, "mean": 0.17385428260001845, "std": 0.014247788757566302, "repeat": 10, "number": 1 }, { "ci_99": [0.7361780019999742, 1.1884854380000434], "q_25": 0.808749882250055, "q_75": 0.9404563609999741, "min": 0.7361780019999742, "max": 1.1884854380000434, "mean": 0.9071444995000093, "std": 0.1392134097820916, "repeat": 10, "number": 1 }, { "ci_99": [1.4098480440000003, 2.839077851999946], "q_25": 1.7670974549999983, "q_75": 2.3356866939999463, "min": 1.4098480440000003, "max": 2.839077851999946, "mean": 2.084349132888898, "std": 0.4333633393878665, "repeat": 9, "number": 1 }, { "ci_99": [0.16928448999999546, 0.18345719600006305], "q_25": 0.17517631674999734, "q_75": 0.18091167550005594, "min": 0.16928448999999546, "max": 0.18345719600006305, "mean": 0.17715205730002026, "std": 0.0043132100853061055, "repeat": 10, "number": 1 }, { "ci_99": [0.21535888599998998, 0.31579631300007804], "q_25": 0.21622833124999374, "q_75": 0.24134334500004684, "min": 0.21535888599998998, "max": 0.31579631300007804, "mean": 0.23729199030001383, "std": 0.0321105897756529, "repeat": 10, "number": 1 }, { "ci_99": [0.33576220000009016, 0.3734258969999473], "q_25": 0.3425022622499512, "q_75": 0.3673758272499583, "min": 0.33576220000009016, "max": 0.3734258969999473, "mean": 0.35413141340000037, "std": 0.013475846576763748, "repeat": 10, "number": 1 }, { "ci_99": [1.4580333979999978, 2.3868200189999698], "q_25": 1.543456884999955, "q_75": 1.8864731869999787, "min": 1.4580333979999978, "max": 2.3868200189999698, "mean": 1.7862989127777762, "std": 0.3177570955213481, "repeat": 9, "number": 1 }, { "ci_99": [2.1267124273409737, 5.997938056659018], "q_25": 3.0612302160000127, "q_75": 4.489385956999968, "min": 2.9360243280000304, "max": 5.507314160999954, "mean": 4.062325241999997, "std": 0.9598250430443954, "repeat": 5, "number": 1 } ], "params": [ ["1", "2", "16", "64", "128", "256", "512", "1024"], ["1000", "10000", "100000", "1000000", "2000000"] ] } }, "params": { "arch": "x86_64", "cpu": "Intel(R) Xeon(R) CPU @ 2.30GHz", "machine": "asv-testing-64", "os": "Linux 4.15.0-1029-gcp", "ram": "64423396", "python": "3.7", "numpy": "" }, "requirements": { "numpy": "" }, "commit_hash": "27fad6ce5e477f56b8ad133dcffe7ce99f3c1b63", "date": 1590746655000, "env_name": "conda-py3.7-numpy", "python": "3.7", "profiles": {}, "started_at": { "throughput.CoalescingBroadcast.time_broadcast": 1590747745591 }, "ended_at": { "throughput.CoalescingBroadcast.time_broadcast": 1590747822988 }, "benchmark_version": { "throughput.CoalescingBroadcast.time_broadcast": "bb46d525dc8242ec0b309ba7667c82bdca00f5c739fbd6e655a6642432442d25" }, "version": 1 } ipython-ipyparallel-14e3c43/benchmarks/results/asv-testing-64-2020-04-28/CoalescingPush.json000066400000000000000000000771721520071063500312310ustar00rootroot00000000000000{ "results": { "throughput.CoalescingPush.time_broadcast": { "result": [ 0.008626033000012967, 0.009523629499966546, 0.017559458499988523, 0.08712030949999416, 0.1680599549999897, 0.00894946424998011, 0.009683799999976372, 0.01769718599996395, 0.0864713404999975, 0.16666043350005566, 0.011123256999951536, 0.012278449500001898, 0.01952985500003024, 0.09741004149998389, 0.16939672300003394, 0.017196650499954558, 0.01777139950002038, 0.025258308999980272, 0.10908515199997737, 0.20226785950001158, 0.02526710449996017, 0.02578230749998056, 0.03318828449994271, 0.10341592349999473, 0.23217307699997036, 0.0407155305000515, 0.04175227000001769, 0.050578026999971826, 0.12681978050005682, 0.3167116585000258, 0.0777580364999153, 0.07990174399998295, 0.0875864679999836, 0.17374344399996744, 0.40954724800002396, 0.16411892249999482, 0.16426925350003785, 0.17335783999993737, 0.28416456450003125, 0.7183380660000012 ], "stats": [ { "ci_99": [0.008146309500034477, 0.009783669999990252], "q_25": 0.008302115999995863, "q_75": 0.009119202749985789, "min": 0.008146309500034477, "max": 0.009783669999990252, "mean": 0.008758313399994222, "std": 0.0005188953077547604, "repeat": 10, "number": 2 }, { "ci_99": [0.0089143120000017, 0.010119650500030275], "q_25": 0.009319742624967375, "q_75": 0.009740896124995402, "min": 0.0089143120000017, "max": 0.010119650500030275, "mean": 0.009513853399988647, "std": 0.0003336493752107844, "repeat": 10, "number": 2 }, { "ci_99": [0.01604266199990434, 0.01994761000003109], "q_25": 0.01672539675004714, "q_75": 0.018526230999981408, "min": 0.01604266199990434, "max": 0.01994761000003109, "mean": 0.01771550629999865, "std": 0.001190096253311954, "repeat": 10, "number": 1 }, { "ci_99": [0.0817723190000379, 0.08949081100001877], "q_25": 0.08239456049994942, "q_75": 0.08918323724998345, "min": 0.0817723190000379, "max": 0.08949081100001877, "mean": 0.08601517099999682, "std": 0.003306016875149065, "repeat": 10, "number": 1 }, { "ci_99": [0.15460205299996232, 0.17879896300007658], "q_25": 0.16093446150003388, "q_75": 0.16946449325004664, "min": 0.15460205299996232, "max": 0.17879896300007658, "mean": 0.1660758762000114, "std": 0.006602941400604751, "repeat": 10, "number": 1 }, { "ci_99": [0.008597456499956024, 0.009654478500010555], "q_25": 0.008773870375009096, "q_75": 0.009081076000015287, "min": 0.008597456499956024, "max": 0.009654478500010555, "mean": 0.00899193844999786, "std": 0.00030433842910848114, "repeat": 10, "number": 2 }, { "ci_99": [0.009140548499999568, 0.01017406400001164], "q_25": 0.009530539374978275, "q_75": 0.009940035750020115, "min": 0.009140548499999568, "max": 0.01017406400001164, "mean": 0.009708529749991613, "std": 0.00029453255782427794, "repeat": 10, "number": 2 }, { "ci_99": [0.016489944999989348, 0.021588101000020288], "q_25": 0.016798740000012913, "q_75": 0.018122266999966996, "min": 0.016489944999989348, "max": 0.021588101000020288, "mean": 0.01784190390000049, "std": 0.0014038746770247835, "repeat": 10, "number": 1 }, { "ci_99": [0.08205938800006152, 0.08989794399997209], "q_25": 0.08314024849997281, "q_75": 0.08903297125004883, "min": 0.08205938800006152, "max": 0.08989794399997209, "mean": 0.08608731469998929, "std": 0.0030968838137072473, "repeat": 10, "number": 1 }, { "ci_99": [0.1559238689999347, 0.17525006500000018], "q_25": 0.1609269900000072, "q_75": 0.16840900775000023, "min": 0.1559238689999347, "max": 0.17525006500000018, "mean": 0.16517958160000035, "std": 0.0059368603184514115, "repeat": 10, "number": 1 }, { "ci_99": [0.010252927999999883, 0.012662950000049022], "q_25": 0.01054038800000967, "q_75": 0.011742299250016686, "min": 0.010252927999999883, "max": 0.012662950000049022, "mean": 0.01124397849999923, "std": 0.0008347536375169244, "repeat": 10, "number": 1 }, { "ci_99": [0.01148742600003061, 0.012849755999923218], "q_25": 0.012089814999995951, "q_75": 0.012413394750041107, "min": 0.01148742600003061, "max": 0.012849755999923218, "mean": 0.012239602499994362, "std": 0.0003783303693663618, "repeat": 10, "number": 1 }, { "ci_99": [0.018286784999986594, 0.021541085999956522], "q_25": 0.019039458249949348, "q_75": 0.020093809250056438, "min": 0.018286784999986594, "max": 0.021541085999956522, "mean": 0.019569669500015152, "std": 0.0009236356972732607, "repeat": 10, "number": 1 }, { "ci_99": [0.08468428900005165, 0.11168164800005798], "q_25": 0.08758703875000151, "q_75": 0.10458920024998974, "min": 0.08468428900005165, "max": 0.11168164800005798, "mean": 0.0968178552000154, "std": 0.009493693909720437, "repeat": 10, "number": 1 }, { "ci_99": [0.15919929300002877, 0.2116591740000331], "q_25": 0.1637878360000684, "q_75": 0.20204422674999023, "min": 0.15919929300002877, "max": 0.2116591740000331, "mean": 0.18091178940002237, "std": 0.02008885263191084, "repeat": 10, "number": 1 }, { "ci_99": [0.01637929699995766, 0.018057109999972454], "q_25": 0.016584122499978093, "q_75": 0.0175264539999489, "min": 0.01637929699995766, "max": 0.018057109999972454, "mean": 0.017126143899974976, "std": 0.0005551160291764908, "repeat": 10, "number": 1 }, { "ci_99": [0.016998603000047297, 0.01852458200005458], "q_25": 0.01755340299999375, "q_75": 0.018373623499968517, "min": 0.016998603000047297, "max": 0.01852458200005458, "mean": 0.017829234000009818, "std": 0.0005386348112816717, "repeat": 10, "number": 1 }, { "ci_99": [0.024187933000007433, 0.02761886600001162], "q_25": 0.024886589999965736, "q_75": 0.0257781682500422, "min": 0.024187933000007433, "max": 0.02761886600001162, "mean": 0.025507238000000144, "std": 0.0009896708242578078, "repeat": 10, "number": 1 }, { "ci_99": [0.09552688400003717, 0.13326627499998267], "q_25": 0.09635745124995765, "q_75": 0.12145611849999227, "min": 0.09552688400003717, "max": 0.13326627499998267, "mean": 0.11035977550000098, "std": 0.014137190932565864, "repeat": 10, "number": 1 }, { "ci_99": [0.17106886099998064, 0.24026064000008773], "q_25": 0.17311534149999375, "q_75": 0.22233529450005562, "min": 0.17106886099998064, "max": 0.24026064000008773, "mean": 0.20052009510001198, "std": 0.025950511926258333, "repeat": 10, "number": 1 }, { "ci_99": [0.024329353000098308, 0.02964884199991502], "q_25": 0.024759865999982367, "q_75": 0.026281315999966637, "min": 0.024329353000098308, "max": 0.02964884199991502, "mean": 0.02584693809998271, "std": 0.001577307351883458, "repeat": 10, "number": 1 }, { "ci_99": [0.024427403999993658, 0.027513573000078395], "q_25": 0.02528791324999702, "q_75": 0.026396855249998907, "min": 0.024427403999993658, "max": 0.027513573000078395, "mean": 0.02594954990000815, "std": 0.0009429481891090266, "repeat": 10, "number": 1 }, { "ci_99": [0.03206847499996002, 0.03517884099994717], "q_25": 0.032659348500004626, "q_75": 0.03461690725006861, "min": 0.03206847499996002, "max": 0.03517884099994717, "mean": 0.033554302899983665, "std": 0.0011109958070581118, "repeat": 10, "number": 1 }, { "ci_99": [0.10002285399991706, 0.11005605499997273], "q_25": 0.1025649302500824, "q_75": 0.10705668550005498, "min": 0.10002285399991706, "max": 0.11005605499997273, "mean": 0.1045445435000147, "std": 0.0029909478341828537, "repeat": 10, "number": 1 }, { "ci_99": [0.17988154299996495, 0.2891982660000849], "q_25": 0.18646843800007673, "q_75": 0.2747246254999709, "min": 0.17988154299996495, "max": 0.2891982660000849, "mean": 0.23239718600001424, "std": 0.046501169224635375, "repeat": 10, "number": 1 }, { "ci_99": [0.03962768500002767, 0.04228904999990846], "q_25": 0.04020812224999304, "q_75": 0.04102424499998847, "min": 0.03962768500002767, "max": 0.04228904999990846, "mean": 0.04077571800000897, "std": 0.0007391376962320621, "repeat": 10, "number": 1 }, { "ci_99": [0.040016887999968276, 0.0435650210000631], "q_25": 0.04138571100003219, "q_75": 0.042147975000006, "min": 0.040016887999968276, "max": 0.0435650210000631, "mean": 0.041820055300013335, "std": 0.0009447184480246171, "repeat": 10, "number": 1 }, { "ci_99": [0.04837756699998863, 0.05585123499997735], "q_25": 0.04897018300005129, "q_75": 0.05154773449999084, "min": 0.04837756699998863, "max": 0.05585123499997735, "mean": 0.050734295399979604, "std": 0.0021768581323109277, "repeat": 10, "number": 1 }, { "ci_99": [0.12166364600000179, 0.1316810189999842], "q_25": 0.12349806049996914, "q_75": 0.12958099024999115, "min": 0.12166364600000179, "max": 0.1316810189999842, "mean": 0.1267552549000129, "std": 0.0035797494755120717, "repeat": 10, "number": 1 }, { "ci_99": [0.21098766800002977, 0.3725908090000303], "q_25": 0.21710887650004906, "q_75": 0.34680094199998734, "min": 0.21098766800002977, "max": 0.3725908090000303, "mean": 0.2906116468000164, "std": 0.06384176115599363, "repeat": 10, "number": 1 }, { "ci_99": [0.07670568999992611, 0.13380969799993636], "q_25": 0.07714033950006183, "q_75": 0.07972666699996012, "min": 0.07670568999992611, "max": 0.13380969799993636, "mean": 0.08377482559995997, "std": 0.016740215697987886, "repeat": 10, "number": 1 }, { "ci_99": [0.07840756100006274, 0.12253278000002865], "q_25": 0.07909789625003327, "q_75": 0.08525752400004194, "min": 0.07840756100006274, "max": 0.12253278000002865, "mean": 0.08608384430002616, "std": 0.012856260782576089, "repeat": 10, "number": 1 }, { "ci_99": [0.08563176800009842, 0.09165440899994337], "q_25": 0.08636830124999051, "q_75": 0.08873662774999502, "min": 0.08563176800009842, "max": 0.09165440899994337, "mean": 0.08773705820000259, "std": 0.0017217310323326233, "repeat": 10, "number": 1 }, { "ci_99": [0.1636225629999899, 0.23117165799999384], "q_25": 0.16788399449998792, "q_75": 0.17581178924999108, "min": 0.1636225629999899, "max": 0.23117165799999384, "mean": 0.17717735019998598, "std": 0.01858376043205793, "repeat": 10, "number": 1 }, { "ci_99": [0.2716173129999788, 0.6601895659999855], "q_25": 0.2767923027500103, "q_75": 0.55150875224993, "min": 0.2716173129999788, "max": 0.6601895659999855, "mean": 0.43273784749998184, "std": 0.16060738234973743, "repeat": 10, "number": 1 }, { "ci_99": [0.1562136710000459, 0.21108283599994593], "q_25": 0.1619041467500324, "q_75": 0.1673143827500212, "min": 0.1562136710000459, "max": 0.21108283599994593, "mean": 0.16824349640000946, "std": 0.0146558224461268, "repeat": 10, "number": 1 }, { "ci_99": [0.15575455400005467, 0.19504804700000022], "q_25": 0.15809427900003925, "q_75": 0.17104056325004535, "min": 0.15575455400005467, "max": 0.19504804700000022, "mean": 0.16846358250003277, "std": 0.01338573624916823, "repeat": 10, "number": 1 }, { "ci_99": [0.16660568700001477, 0.18553882699995938], "q_25": 0.1717909287499424, "q_75": 0.17884957074994645, "min": 0.16660568700001477, "max": 0.18553882699995938, "mean": 0.1752875489999724, "std": 0.00577125810317259, "repeat": 10, "number": 1 }, { "ci_99": [0.26569269000003715, 0.38338727500001824], "q_25": 0.2796120845000871, "q_75": 0.294285336750022, "min": 0.26569269000003715, "max": 0.38338727500001824, "mean": 0.29556935930002054, "std": 0.03207808163735649, "repeat": 10, "number": 1 }, { "ci_99": [0.4041045749999057, 0.9809495229999357], "q_25": 0.4173579522500006, "q_75": 0.9768582472500213, "min": 0.4041045749999057, "max": 0.9809495229999357, "mean": 0.6994360398000026, "std": 0.2735017901007138, "repeat": 10, "number": 1 } ], "params": [ ["1", "2", "16", "64", "128", "256", "512", "1024"], ["1000", "10000", "100000", "1000000", "2000000"] ] }, "throughput.NonCoalescingPush.time_broadcast": { "result": [ 0.008620542500011652, 0.00928788449999729, 0.01708308349998333, 0.08276614799996196, 0.15744631900003014, 0.008838448999995308, 0.009793268999999327, 0.016722709500015753, 0.08528353749994722, 0.15993675699996857, 0.01608480850001115, 0.016697292500055028, 0.024459453499957817, 0.0897565330000134, 0.16715718599999718, 0.043816755500017734, 0.045084755999994286, 0.052130809000004774, 0.12068702749996874, 0.21110773750007183, 0.07776893400000517, 0.0801256669999475, 0.0868662994999454, 0.15603731100003415, 0.23713002349995804, 0.15013570299998946, 0.15078586900000346, 0.15776968549999992, 0.2318694649999884, 0.32170500600000196, 0.29276626249998117, 0.2939307045000419, 0.30423321100005296, 0.37828487399997357, 0.4755169929999852, 0.5777052649999632, 0.5986182484999745, 0.5970295684999769, 0.6661988299999848, 0.8060022340000614 ], "stats": [ { "ci_99": [0.008206209500031036, 0.009053327999993144], "q_25": 0.00833494874999019, "q_75": 0.008845723875012368, "min": 0.008206209500031036, "max": 0.009053327999993144, "mean": 0.008609955200006425, "std": 0.0003004812350956369, "repeat": 10, "number": 2 }, { "ci_99": [0.008967609500018625, 0.010208922499998607], "q_25": 0.009122169749971931, "q_75": 0.00961826062504656, "min": 0.008967609500018625, "max": 0.010208922499998607, "mean": 0.009416406350010221, "std": 0.00038868018602088855, "repeat": 10, "number": 2 }, { "ci_99": [0.016463063000060174, 0.01795395799990729], "q_25": 0.016998382750017527, "q_75": 0.017180386749998888, "min": 0.016463063000060174, "max": 0.01795395799990729, "mean": 0.01712881890000517, "std": 0.00038836919234824216, "repeat": 10, "number": 1 }, { "ci_99": [0.08087568900009501, 0.08426567700007581], "q_25": 0.08244750550002777, "q_75": 0.0830221747499138, "min": 0.08087568900009501, "max": 0.08426567700007581, "mean": 0.08273114780000697, "std": 0.0009334210474713383, "repeat": 10, "number": 1 }, { "ci_99": [0.15471595799999704, 0.1633620789999668], "q_25": 0.1569910004999997, "q_75": 0.15834090200002038, "min": 0.15471595799999704, "max": 0.1633620789999668, "mean": 0.15825445110000375, "std": 0.0025662887095347546, "repeat": 10, "number": 1 }, { "ci_99": [0.008406331999992744, 0.011521784500018839], "q_25": 0.00854192962501088, "q_75": 0.009212699625038567, "min": 0.008406331999992744, "max": 0.011521784500018839, "mean": 0.009087421550009366, "std": 0.0008686065808817843, "repeat": 10, "number": 2 }, { "ci_99": [0.00904527400001598, 0.010628054499989048], "q_25": 0.00935180837500127, "q_75": 0.010227777250022996, "min": 0.00904527400001598, "max": 0.010628054499989048, "mean": 0.009821413750006513, "std": 0.0005342745964222046, "repeat": 10, "number": 2 }, { "ci_99": [0.016178867999997237, 0.01849652699991111], "q_25": 0.016575799499946697, "q_75": 0.017123786000013297, "min": 0.016178867999997237, "max": 0.01849652699991111, "mean": 0.01703528919998689, "std": 0.0007702393059983586, "repeat": 10, "number": 1 }, { "ci_99": [0.08315559599998323, 0.09058982200008359], "q_25": 0.08386282600002914, "q_75": 0.08810216224995315, "min": 0.08315559599998323, "max": 0.09058982200008359, "mean": 0.08611210309998114, "std": 0.0027217928932749633, "repeat": 10, "number": 1 }, { "ci_99": [0.15335575400001744, 0.16466074400000252], "q_25": 0.15810028600000692, "q_75": 0.1613514367500386, "min": 0.15335575400001744, "max": 0.16466074400000252, "mean": 0.15939476319998674, "std": 0.0036067167098495657, "repeat": 10, "number": 1 }, { "ci_99": [0.015311557999893921, 0.019917789000032826], "q_25": 0.015756848249992572, "q_75": 0.01688490525006614, "min": 0.015311557999893921, "max": 0.019917789000032826, "mean": 0.01658848780000426, "std": 0.0012994124804339231, "repeat": 10, "number": 1 }, { "ci_99": [0.016332374000057825, 0.01741568099998858], "q_25": 0.016610422750034104, "q_75": 0.017067891250036382, "min": 0.016332374000057825, "max": 0.01741568099998858, "mean": 0.016815768700018906, "std": 0.0003452290200829003, "repeat": 10, "number": 1 }, { "ci_99": [0.02308998099999826, 0.027346458000010898], "q_25": 0.023926930500010712, "q_75": 0.025134659749994626, "min": 0.02308998099999826, "max": 0.027346458000010898, "mean": 0.02466996499998686, "std": 0.0011397932242211944, "repeat": 10, "number": 1 }, { "ci_99": [0.08729575899997144, 0.09254688800001531], "q_25": 0.0892921285000341, "q_75": 0.09020057725007291, "min": 0.08729575899997144, "max": 0.09254688800001531, "mean": 0.08978644170002781, "std": 0.0013065272031116187, "repeat": 10, "number": 1 }, { "ci_99": [0.1637167540000064, 0.17513021399997797], "q_25": 0.16546044999995502, "q_75": 0.16853404525002702, "min": 0.1637167540000064, "max": 0.17513021399997797, "mean": 0.1678826613999945, "std": 0.0035608125772332326, "repeat": 10, "number": 1 }, { "ci_99": [0.04273475299999063, 0.04687981800009311], "q_25": 0.04343453549998344, "q_75": 0.04397243100004289, "min": 0.04273475299999063, "max": 0.04687981800009311, "mean": 0.0441263744000139, "std": 0.0012277031361291736, "repeat": 10, "number": 1 }, { "ci_99": [0.04400019499996688, 0.05241902099999152], "q_25": 0.0447598865000316, "q_75": 0.04607379199995876, "min": 0.04400019499996688, "max": 0.05241902099999152, "mean": 0.04590135379999083, "std": 0.002283290702632368, "repeat": 10, "number": 1 }, { "ci_99": [0.04947435199994743, 0.05895796999993763], "q_25": 0.05099486349999438, "q_75": 0.0532347580000021, "min": 0.04947435199994743, "max": 0.05895796999993763, "mean": 0.05249662960000023, "std": 0.002501634828978675, "repeat": 10, "number": 1 }, { "ci_99": [0.11592110300000513, 0.1250894420001032], "q_25": 0.11770796749996748, "q_75": 0.12192758550003191, "min": 0.11592110300000513, "max": 0.1250894420001032, "mean": 0.12015343870000379, "std": 0.002792159440479075, "repeat": 10, "number": 1 }, { "ci_99": [0.19412857199995415, 0.23100578800006133], "q_25": 0.20464960124996878, "q_75": 0.2236239067500776, "min": 0.19412857199995415, "max": 0.23100578800006133, "mean": 0.21248614590002718, "std": 0.01235483091988466, "repeat": 10, "number": 1 }, { "ci_99": [0.07573616199999833, 0.09749580300001526], "q_25": 0.07713394774995663, "q_75": 0.09059920199996441, "min": 0.07573616199999833, "max": 0.09749580300001526, "mean": 0.08277829269998165, "std": 0.008627000132310823, "repeat": 10, "number": 1 }, { "ci_99": [0.07835397500002728, 0.09584046200006924], "q_25": 0.07920582124998532, "q_75": 0.08187180874995192, "min": 0.07835397500002728, "max": 0.09584046200006924, "mean": 0.08184669749998648, "std": 0.004877620186436193, "repeat": 10, "number": 1 }, { "ci_99": [0.08409520799989423, 0.09333268299997144], "q_25": 0.08515069624999683, "q_75": 0.08960026850002123, "min": 0.08409520799989423, "max": 0.09333268299997144, "mean": 0.08764903719998074, "std": 0.0028344999898714763, "repeat": 10, "number": 1 }, { "ci_99": [0.15066290200002186, 0.1589443159999746], "q_25": 0.15384509225006582, "q_75": 0.1577182377500037, "min": 0.15066290200002186, "max": 0.1589443159999746, "mean": 0.1555540136000218, "std": 0.0026052031817556196, "repeat": 10, "number": 1 }, { "ci_99": [0.23586854500001664, 0.25876864500003194], "q_25": 0.23686216474996513, "q_75": 0.24010328400001413, "min": 0.23586854500001664, "max": 0.25876864500003194, "mean": 0.24027665789999447, "std": 0.006641261479536542, "repeat": 10, "number": 1 }, { "ci_99": [0.14437502999999197, 0.21116126399999757], "q_25": 0.14691698549998478, "q_75": 0.15395573750006974, "min": 0.14437502999999197, "max": 0.21116126399999757, "mean": 0.15587613149999696, "std": 0.0187981250469612, "repeat": 10, "number": 1 }, { "ci_99": [0.1434089109999377, 0.18125911499998892], "q_25": 0.1460104392499204, "q_75": 0.15523428299997022, "min": 0.1434089109999377, "max": 0.18125911499998892, "mean": 0.15410265399997342, "std": 0.011358025633779915, "repeat": 10, "number": 1 }, { "ci_99": [0.15582461799999692, 0.19790348700007598], "q_25": 0.15648710224999718, "q_75": 0.16189442800003917, "min": 0.15582461799999692, "max": 0.19790348700007598, "mean": 0.1626380463000146, "std": 0.012110956660389567, "repeat": 10, "number": 1 }, { "ci_99": [0.2270297439999922, 0.27583958299999267], "q_25": 0.22867086199997289, "q_75": 0.2382089515000132, "min": 0.2270297439999922, "max": 0.27583958299999267, "mean": 0.23680090019998942, "std": 0.013800639155099005, "repeat": 10, "number": 1 }, { "ci_99": [0.31223022199992556, 0.333479556000043], "q_25": 0.317467429499942, "q_75": 0.32671771900004387, "min": 0.31223022199992556, "max": 0.333479556000043, "mean": 0.3223415760999956, "std": 0.006741939646566338, "repeat": 10, "number": 1 }, { "ci_99": [0.28274467500000355, 0.30658861000006254], "q_25": 0.28946799074998353, "q_75": 0.2991433137499939, "min": 0.28274467500000355, "max": 0.30658861000006254, "mean": 0.2944556270000021, "std": 0.007394235634826602, "repeat": 10, "number": 1 }, { "ci_99": [0.277127973000006, 0.3097667669999282], "q_25": 0.2856744022500095, "q_75": 0.29701001274997907, "min": 0.277127973000006, "max": 0.3097667669999282, "mean": 0.29319580879999874, "std": 0.0095942825377354, "repeat": 10, "number": 1 }, { "ci_99": [0.2979574570000523, 0.38271414400003323], "q_25": 0.30199557225000717, "q_75": 0.3094849699999713, "min": 0.2979574570000523, "max": 0.38271414400003323, "mean": 0.3121080982000194, "std": 0.023899180930829832, "repeat": 10, "number": 1 }, { "ci_99": [0.3607820450000645, 0.3926738210000167], "q_25": 0.3766254417499795, "q_75": 0.37930107974997895, "min": 0.3607820450000645, "max": 0.3926738210000167, "mean": 0.37853706429999645, "std": 0.007749129064276956, "repeat": 10, "number": 1 }, { "ci_99": [0.4582203700000491, 0.5260238369999115], "q_25": 0.46636885700007724, "q_75": 0.487888080499971, "min": 0.4582203700000491, "max": 0.5260238369999115, "mean": 0.482560559500007, "std": 0.02148525182295919, "repeat": 10, "number": 1 }, { "ci_99": [0.5420115119999309, 0.6395372190000899], "q_25": 0.5598544282499915, "q_75": 0.5895197725000116, "min": 0.5420115119999309, "max": 0.6395372190000899, "mean": 0.5796201139999994, "std": 0.027886579197014958, "repeat": 10, "number": 1 }, { "ci_99": [0.5460454280000704, 0.6973744749999469], "q_25": 0.5821190719999265, "q_75": 0.6291908107500319, "min": 0.5460454280000704, "max": 0.6973744749999469, "mean": 0.6058712907999961, "std": 0.04085236369731694, "repeat": 10, "number": 1 }, { "ci_99": [0.5665197380000109, 0.649996400999953], "q_25": 0.5758741947500141, "q_75": 0.6123330052500648, "min": 0.5665197380000109, "max": 0.649996400999953, "mean": 0.5992439769000157, "std": 0.02770944503297547, "repeat": 10, "number": 1 }, { "ci_99": [0.6555359900000894, 0.6853121939999482], "q_25": 0.6592976379999413, "q_75": 0.6820101182499343, "min": 0.6555359900000894, "max": 0.6853121939999482, "mean": 0.6692841222999846, "std": 0.011593396541399511, "repeat": 10, "number": 1 }, { "ci_99": [0.7655089279999174, 1.2444201350000412], "q_25": 0.7869372262500178, "q_75": 0.8310357720000638, "min": 0.7655089279999174, "max": 1.2444201350000412, "mean": 0.8459427972000299, "std": 0.13492733219884584, "repeat": 10, "number": 1 } ], "params": [ ["1", "2", "16", "64", "128", "256", "512", "1024"], ["1000", "10000", "100000", "1000000", "2000000"] ] } }, "params": { "arch": "x86_64", "cpu": "Intel(R) Xeon(R) CPU @ 2.30GHz", "machine": "asv-testing-64", "os": "Linux 4.15.0-1029-gcp", "ram": "64423396", "python": "3.7", "numpy": "" }, "requirements": { "numpy": "" }, "commit_hash": "107894eff6c48a92d0cdbc180e5b6e8bcc901562", "date": 1590525320000, "env_name": "conda-py3.7-numpy", "python": "3.7", "profiles": {}, "started_at": { "throughput.CoalescingPush.time_broadcast": 1590698212041, "throughput.NonCoalescingPush.time_broadcast": 1590698244437 }, "ended_at": { "throughput.CoalescingPush.time_broadcast": 1590698244433, "throughput.NonCoalescingPush.time_broadcast": 1590698301142 }, "benchmark_version": { "throughput.CoalescingPush.time_broadcast": "d53ef539a1ba7dda53fcdfdd810c23bcde346a6e936436ffd5a03e8254a38640", "throughput.NonCoalescingPush.time_broadcast": "d53ef539a1ba7dda53fcdfdd810c23bcde346a6e936436ffd5a03e8254a38640" }, "version": 1 } ipython-ipyparallel-14e3c43/benchmarks/results/asv-testing-64-2020-05-12-19-52-58/000077500000000000000000000000001520071063500263105ustar00rootroot00000000000000ipython-ipyparallel-14e3c43/benchmarks/results/asv-testing-64-2020-05-12-19-52-58/results.json000066400000000000000000001073721520071063500307160ustar00rootroot00000000000000{ "results": { "throughput.CoalescingBroadcast.time_broadcast": { "result": [ 0.039593691499987926, 0.03953122449999569, 0.04052302450000411, 0.05352431949998504, 0.11026714249999259, 0.8770127015000355, 0.03812991500001317, 0.03784298749997106, 0.0394316109999977, 0.04876342949998502, 0.08642994599998133, 0.9502801714999976, 0.03852789249998523, 0.04106315699999641, 0.043008643000007396, 0.04930529000000661, 0.08631184450001683, 0.9878738880000242, 0.03818913649999445, 0.039404291500005684, 0.03874865700001351, 0.050808920000008584, 0.08732329950001372, 0.9680699484999877, 0.03836946350000403, 0.03830064850001236, 0.03931985250000025, 0.049687723000005235, 0.09232195599997794, 0.8908312775000411 ], "stats": [ { "ci_99": [0.03800533200001155, 0.04065613000000212], "q_25": 0.039155099499978974, "q_75": 0.040196615749962916, "min": 0.03800533200001155, "max": 0.04065613000000212, "mean": 0.03961995689999185, "std": 0.0007652152925337841, "repeat": 10, "number": 1 }, { "ci_99": [0.03753044799998406, 0.04154612199999974], "q_25": 0.038778261749968124, "q_75": 0.04030578699997989, "min": 0.03753044799998406, "max": 0.04154612199999974, "mean": 0.03947269209999149, "std": 0.0012822692080858207, "repeat": 10, "number": 1 }, { "ci_99": [0.03905490700003611, 0.04292187800001557], "q_25": 0.03959967050001012, "q_75": 0.041668870000009406, "min": 0.03905490700003611, "max": 0.04292187800001557, "mean": 0.04067300170000863, "std": 0.00122241959645075, "repeat": 10, "number": 1 }, { "ci_99": [0.04974593999997978, 0.06301837300003399], "q_25": 0.051331276500008016, "q_75": 0.05914049249999209, "min": 0.04974593999997978, "max": 0.06301837300003399, "mean": 0.05519946159999449, "std": 0.004549242020566946, "repeat": 10, "number": 1 }, { "ci_99": [0.09214095099997621, 0.1302569089999679], "q_25": 0.09501374599997803, "q_75": 0.12691022350003323, "min": 0.09214095099997621, "max": 0.1302569089999679, "mean": 0.1108923119999929, "std": 0.01634733976852076, "repeat": 10, "number": 1 }, { "ci_99": [0.4970714749999843, 1.1075130319999857], "q_25": 0.8336977690000253, "q_75": 0.9757989637500231, "min": 0.4970714749999843, "max": 1.1075130319999857, "mean": 0.8816220231000103, "std": 0.15553189021451888, "repeat": 10, "number": 1 }, { "ci_99": [0.03664770400001771, 0.03893903699997736], "q_25": 0.0374921874999643, "q_75": 0.0387797820000344, "min": 0.03664770400001771, "max": 0.03893903699997736, "mean": 0.03806498120000583, "std": 0.0007441738953740595, "repeat": 10, "number": 1 }, { "ci_99": [0.03661901800001033, 0.039830294000012145], "q_25": 0.03747479349998173, "q_75": 0.038071858749972876, "min": 0.03661901800001033, "max": 0.039830294000012145, "mean": 0.037865600399987896, "std": 0.0007891086417963826, "repeat": 10, "number": 1 }, { "ci_99": [0.03704657999998062, 0.04208052899997483], "q_25": 0.03847356574998173, "q_75": 0.0411035292499804, "min": 0.03704657999998062, "max": 0.04208052899997483, "mean": 0.039621273899985, "std": 0.0015849688106862258, "repeat": 10, "number": 1 }, { "ci_99": [0.04716855800000985, 0.10839672700001302], "q_25": 0.04805860775002202, "q_75": 0.049662159250019045, "min": 0.04716855800000985, "max": 0.10839672700001302, "mean": 0.054617229600000886, "std": 0.017946740730065656, "repeat": 10, "number": 1 }, { "ci_99": [0.07938138299999764, 0.09203635900001927], "q_25": 0.084572202749996, "q_75": 0.0884193627499883, "min": 0.07938138299999764, "max": 0.09203635900001927, "mean": 0.0863199540999858, "std": 0.003784846804414086, "repeat": 10, "number": 1 }, { "ci_99": [0.48578528500001994, 1.068874428000015], "q_25": 0.8754506365000339, "q_75": 0.9847136125000304, "min": 0.48578528500001994, "max": 1.068874428000015, "mean": 0.8852365694000071, "std": 0.17279072752115998, "repeat": 10, "number": 1 }, { "ci_99": [0.03728572600005009, 0.04011407100000497], "q_25": 0.038092401249997465, "q_75": 0.039625271250002925, "min": 0.03728572600005009, "max": 0.04011407100000497, "mean": 0.03871645890000082, "std": 0.0009771236290693854, "repeat": 10, "number": 1 }, { "ci_99": [0.03937603100001752, 0.046615710000025956], "q_25": 0.03995318149996763, "q_75": 0.042861547500024244, "min": 0.03937603100001752, "max": 0.046615710000025956, "mean": 0.04171030850000079, "std": 0.0021521465265767997, "repeat": 10, "number": 1 }, { "ci_99": [0.04117069499994841, 0.044826182999997854], "q_25": 0.042167861500018944, "q_75": 0.04382514999997511, "min": 0.04117069499994841, "max": 0.044826182999997854, "mean": 0.0430995166999935, "std": 0.0011542122394929822, "repeat": 10, "number": 1 }, { "ci_99": [0.04766915099997959, 0.05069348000000673], "q_25": 0.04889870874998792, "q_75": 0.0503427480000056, "min": 0.04766915099997959, "max": 0.05069348000000673, "mean": 0.04938904229999821, "std": 0.0010144383184438142, "repeat": 10, "number": 1 }, { "ci_99": [0.08372233299996878, 0.09545267499999], "q_25": 0.08491606674998309, "q_75": 0.08831842050001626, "min": 0.08372233299996878, "max": 0.09545267499999, "mean": 0.08746320040000341, "std": 0.003533908380925711, "repeat": 10, "number": 1 }, { "ci_99": [0.5097361489999912, 1.0146845109999845], "q_25": 0.9472866597500058, "q_75": 1.0048567195000118, "min": 0.5097361489999912, "max": 1.0146845109999845, "mean": 0.8971173792000059, "std": 0.18297454601029128, "repeat": 10, "number": 1 }, { "ci_99": [0.036648866000007274, 0.03977303700003176], "q_25": 0.03729679674998465, "q_75": 0.03857796225001664, "min": 0.036648866000007274, "max": 0.03977303700003176, "mean": 0.038170934900006157, "std": 0.001012345649049337, "repeat": 10, "number": 1 }, { "ci_99": [0.03707878300002676, 0.040554134999979397], "q_25": 0.039123028249989034, "q_75": 0.03968281625002135, "min": 0.03707878300002676, "max": 0.040554134999979397, "mean": 0.03919724880000217, "std": 0.0009948791330539677, "repeat": 10, "number": 1 }, { "ci_99": [0.037954456000022674, 0.0404126329999599], "q_25": 0.03818598274999374, "q_75": 0.039488024250019294, "min": 0.037954456000022674, "max": 0.0404126329999599, "mean": 0.03894797420000486, "std": 0.0008269331451015837, "repeat": 10, "number": 1 }, { "ci_99": [0.04876575399998728, 0.1069900599999869], "q_25": 0.04966977925001004, "q_75": 0.10276323600000126, "min": 0.04876575399998728, "max": 0.1069900599999869, "mean": 0.0716406059999997, "std": 0.026808726595567284, "repeat": 10, "number": 1 }, { "ci_99": [0.08200671800000237, 0.09397113899996157], "q_25": 0.08610272225000415, "q_75": 0.08874485949998245, "min": 0.08200671800000237, "max": 0.09397113899996157, "mean": 0.08743688969999538, "std": 0.003009074232858632, "repeat": 10, "number": 1 }, { "ci_99": [0.4997367770000096, 1.044705222999994], "q_25": 0.9509253250000143, "q_75": 0.9821842137500312, "min": 0.4997367770000096, "max": 1.044705222999994, "mean": 0.8948638909000067, "std": 0.1768874345207813, "repeat": 10, "number": 1 }, { "ci_99": [0.037569308999991335, 0.04094308200001251], "q_25": 0.03781686175000232, "q_75": 0.03903370625003788, "min": 0.037569308999991335, "max": 0.04094308200001251, "mean": 0.03866639350000582, "std": 0.0010534915111510392, "repeat": 10, "number": 1 }, { "ci_99": [0.03721643099999028, 0.039078582000001916], "q_25": 0.03780887700001756, "q_75": 0.038707603000034396, "min": 0.03721643099999028, "max": 0.039078582000001916, "mean": 0.03825151920001417, "std": 0.0005783231429558188, "repeat": 10, "number": 1 }, { "ci_99": [0.03805392200001734, 0.042185211000003164], "q_25": 0.03901989899999592, "q_75": 0.04007841550000535, "min": 0.03805392200001734, "max": 0.042185211000003164, "mean": 0.03956394809999893, "std": 0.0010981989168209329, "repeat": 10, "number": 1 }, { "ci_99": [0.04784663499998487, 0.053488598000001275], "q_25": 0.048875734500001045, "q_75": 0.05016069525001399, "min": 0.04784663499998487, "max": 0.053488598000001275, "mean": 0.049804707900000265, "std": 0.0014973123784616346, "repeat": 10, "number": 1 }, { "ci_99": [0.08459592899998825, 0.14661338499996646], "q_25": 0.08729384274995766, "q_75": 0.1323171372500127, "min": 0.08459592899998825, "max": 0.14661338499996646, "mean": 0.10608651429998303, "std": 0.02640079764856437, "repeat": 10, "number": 1 }, { "ci_99": [0.5563090400000306, 0.9518067260000294], "q_25": 0.8743827295000131, "q_75": 0.9413316547499733, "min": 0.5563090400000306, "max": 0.9518067260000294, "mean": 0.8477022570000088, "std": 0.13532104229288655, "repeat": 10, "number": 1 } ], "params": [ ["0"], ["1", "10", "50", "100", "200"], ["10", "100", "1000", "10000", "100000", "1000000"] ] }, "throughput.DirectViewBroadCast.time_broadcast": { "result": [ 0.13349697350000156, 0.13757400549999943, 0.13579799900000467, 0.13982678850001662, 0.16439921450000838, 0.47744156549998706, 0.1371917925000048, 0.1340706629999886, 0.13984176649998403, 0.1409244350000165, 0.16396317900000668, 0.4703190010000071, 0.14100516299996002, 0.13594795000000204, 0.1389418249999892, 0.14502579200001264, 0.1690291329999809, 0.43242723999998134, 0.13601782199998524, 0.14130281050000804, 0.1397477489999801, 0.14304372949999333, 0.16729811899998026, 0.5427276924999944, 0.14546457950001468, 0.14010253800000783, 0.13890613850000477, 0.13959479999994073, 0.1658691185000123, 0.41989809349996676 ], "stats": [ { "ci_99": [0.127882268999997, 0.14535911400002988], "q_25": 0.13109944874997836, "q_75": 0.13548654750000821, "min": 0.127882268999997, "max": 0.14535911400002988, "mean": 0.13394673929999498, "std": 0.004579658493395269, "repeat": 10, "number": 1 }, { "ci_99": [0.12532447600000296, 0.1460942030000183], "q_25": 0.1296700654999654, "q_75": 0.14141157700001372, "min": 0.12532447600000296, "max": 0.1460942030000183, "mean": 0.1360714049999956, "std": 0.006785323282463979, "repeat": 10, "number": 1 }, { "ci_99": [0.129730966000011, 0.13891156200003252], "q_25": 0.13221338025000762, "q_75": 0.13814562524997598, "min": 0.129730966000011, "max": 0.13891156200003252, "mean": 0.13505147520000377, "std": 0.0034410506579162733, "repeat": 10, "number": 1 }, { "ci_99": [0.13394822099996873, 0.15338321399997312], "q_25": 0.13571136975001252, "q_75": 0.14259959024998636, "min": 0.13394822099996873, "max": 0.15338321399997312, "mean": 0.1401767113999995, "std": 0.005446036865294196, "repeat": 10, "number": 1 }, { "ci_99": [0.16010401699998056, 0.16886535999998387], "q_25": 0.16235957600000006, "q_75": 0.16585494424998615, "min": 0.16010401699998056, "max": 0.16886535999998387, "mean": 0.16418647749999876, "std": 0.002536797820020208, "repeat": 10, "number": 1 }, { "ci_99": [0.3899962529999925, 0.9769589030000247], "q_25": 0.3967922965000099, "q_75": 0.9226415207499912, "min": 0.3899962529999925, "max": 0.9769589030000247, "mean": 0.6278100240000015, "std": 0.25617237146765537, "repeat": 10, "number": 1 }, { "ci_99": [0.13364590200001203, 0.14791298500000494], "q_25": 0.13584824274998653, "q_75": 0.14091064899997718, "min": 0.13364590200001203, "max": 0.14791298500000494, "mean": 0.13839803419999158, "std": 0.004115915264549108, "repeat": 10, "number": 1 }, { "ci_99": [0.1279837469999734, 0.13713921599998002], "q_25": 0.13097728549999488, "q_75": 0.13613197474998628, "min": 0.1279837469999734, "max": 0.13713921599998002, "mean": 0.13324287519998848, "std": 0.0032935725071455927, "repeat": 10, "number": 1 }, { "ci_99": [0.13692859200000385, 0.14524353799998835], "q_25": 0.13864366925000127, "q_75": 0.14343039224999643, "min": 0.13692859200000385, "max": 0.14524353799998835, "mean": 0.140786124899995, "std": 0.0028737987479793637, "repeat": 10, "number": 1 }, { "ci_99": [0.13258027700004504, 0.14749116299998377], "q_25": 0.13749688599996546, "q_75": 0.1441660465000183, "min": 0.13258027700004504, "max": 0.14749116299998377, "mean": 0.1406054222000023, "std": 0.004610185435729679, "repeat": 10, "number": 1 }, { "ci_99": [0.1556372200000169, 0.1677825610000241], "q_25": 0.16290019875000894, "q_75": 0.16549161899999376, "min": 0.1556372200000169, "max": 0.1677825610000241, "mean": 0.16328164820000096, "std": 0.003403698659711505, "repeat": 10, "number": 1 }, { "ci_99": [0.38826210799999217, 0.6558797280000022], "q_25": 0.3957013497499844, "q_75": 0.5462274060000141, "min": 0.38826210799999217, "max": 0.6558797280000022, "mean": 0.48128468409999525, "std": 0.09194353568270619, "repeat": 10, "number": 1 }, { "ci_99": [0.13255308899999818, 0.14800101700001278], "q_25": 0.1401530672499689, "q_75": 0.14380009275002692, "min": 0.13255308899999818, "max": 0.14800101700001278, "mean": 0.1407400349999932, "std": 0.0045232907132239965, "repeat": 10, "number": 1 }, { "ci_99": [0.12448130199999241, 0.1438345730000492], "q_25": 0.12710110825003085, "q_75": 0.14219490149999103, "min": 0.12448130199999241, "max": 0.1438345730000492, "mean": 0.13465789410000184, "std": 0.007654263527849078, "repeat": 10, "number": 1 }, { "ci_99": [0.13345890199997257, 0.14375608900002135], "q_25": 0.1361285120000133, "q_75": 0.14049382475002403, "min": 0.13345890199997257, "max": 0.14375608900002135, "mean": 0.1387205621000021, "std": 0.003260630503118682, "repeat": 10, "number": 1 }, { "ci_99": [0.13631786700000248, 0.17139923899998166], "q_25": 0.14173387300003526, "q_75": 0.15373237499997572, "min": 0.13631786700000248, "max": 0.17139923899998166, "mean": 0.14866544690000297, "std": 0.010170318776103452, "repeat": 10, "number": 1 }, { "ci_99": [0.15654476299999942, 0.18640681599998743], "q_25": 0.16638419974998442, "q_75": 0.17531284250000567, "min": 0.15654476299999942, "max": 0.18640681599998743, "mean": 0.1705850312999985, "std": 0.007679596044646368, "repeat": 10, "number": 1 }, { "ci_99": [0.3843204380000316, 0.5491546740000217], "q_25": 0.40400390750001236, "q_75": 0.46944760549999387, "min": 0.3843204380000316, "max": 0.5491546740000217, "mean": 0.44203042790000496, "std": 0.047257566191506215, "repeat": 10, "number": 1 }, { "ci_99": [0.1296415989999673, 0.14315632899996444], "q_25": 0.13171962174999408, "q_75": 0.14119627750002905, "min": 0.1296415989999673, "max": 0.14315632899996444, "mean": 0.13634866230000284, "std": 0.004855885853442196, "repeat": 10, "number": 1 }, { "ci_99": [0.12903123599994615, 0.1559033680000539], "q_25": 0.1376594159999911, "q_75": 0.14437937199998885, "min": 0.12903123599994615, "max": 0.1559033680000539, "mean": 0.1425663519000011, "std": 0.007876097218835846, "repeat": 10, "number": 1 }, { "ci_99": [0.13220214599999736, 0.14235386399997196], "q_25": 0.1371766037499924, "q_75": 0.14104857250001146, "min": 0.13220214599999736, "max": 0.14235386399997196, "mean": 0.13889995459998658, "std": 0.0028782676045227182, "repeat": 10, "number": 1 }, { "ci_99": [0.13101239200000236, 0.15592314399998486], "q_25": 0.13629831225000544, "q_75": 0.14579949424999938, "min": 0.13101239200000236, "max": 0.15592314399998486, "mean": 0.14217794840000125, "std": 0.006947986103183435, "repeat": 10, "number": 1 }, { "ci_99": [0.1622707079999941, 0.1785253629999488], "q_25": 0.1639438175000123, "q_75": 0.16936688275001188, "min": 0.1622707079999941, "max": 0.1785253629999488, "mean": 0.16785331049999855, "std": 0.004699177216815024, "repeat": 10, "number": 1 }, { "ci_99": [0.3834767139999826, 0.8743127949999803], "q_25": 0.4005345952500079, "q_75": 0.6387375994999758, "min": 0.3834767139999826, "max": 0.8743127949999803, "mean": 0.5487412160999952, "std": 0.15634854036671367, "repeat": 10, "number": 1 }, { "ci_99": [0.13376385499998378, 0.16204253099999733], "q_25": 0.14131529349998573, "q_75": 0.14926748499999576, "min": 0.13376385499998378, "max": 0.16204253099999733, "mean": 0.14573094189999553, "std": 0.007481577383876254, "repeat": 10, "number": 1 }, { "ci_99": [0.13613797900001146, 0.14619637699996701], "q_25": 0.13800751550000712, "q_75": 0.1421601247500064, "min": 0.13613797900001146, "max": 0.14619637699996701, "mean": 0.1403323400999966, "std": 0.0028492349136453655, "repeat": 10, "number": 1 }, { "ci_99": [0.13636013900003263, 0.14600898999998435], "q_25": 0.1379267894999856, "q_75": 0.14057006050002485, "min": 0.13636013900003263, "max": 0.14600898999998435, "mean": 0.13965014810000298, "std": 0.002736920484994003, "repeat": 10, "number": 1 }, { "ci_99": [0.1335097850000011, 0.14443881400001146], "q_25": 0.135556055250035, "q_75": 0.14234926824997274, "min": 0.1335097850000011, "max": 0.14443881400001146, "mean": 0.13922277499999042, "std": 0.003751137149800483, "repeat": 10, "number": 1 }, { "ci_99": [0.15434206400004769, 0.18346451499996874], "q_25": 0.16269595249995916, "q_75": 0.16729481174996863, "min": 0.15434206400004769, "max": 0.18346451499996874, "mean": 0.16555902169998263, "std": 0.0074052689768483665, "repeat": 10, "number": 1 }, { "ci_99": [0.39212155399997073, 0.5450011129999552], "q_25": 0.3976958247500022, "q_75": 0.4443624167500104, "min": 0.39212155399997073, "max": 0.5450011129999552, "mean": 0.4401061981999931, "std": 0.05588983209818558, "repeat": 10, "number": 1 } ], "params": [ ["0"], ["1", "10", "50", "100", "200"], ["10", "100", "1000", "10000", "100000", "1000000"] ] }, "throughput.NonCoalescingBroadcast.time_broadcast": { "result": [ 0.13124687299998072, 0.1324038749999943, 0.13229522900002166, 0.1339511605000041, 0.14526916650001453, 0.3719886810000048, 0.13310688250004432, 0.1308293699999865, 0.13527265650000686, 0.13703262349997658, 0.14573727699999495, 0.3161452129999702, 0.1336076080000339, 0.13294219200000157, 0.1339552120000178, 0.1353773845000319, 0.1475395155000001, 0.33794542399996885, 0.13085492650000674, 0.13021585499998878, 0.1318089795000219, 0.13773213500002157, 0.14492695200002004, 0.3453015230000176, 0.13092333399993095, 0.13117726550001407, 0.1345351760000426, 0.13889968400002317, 0.14642883049998545, 0.3375421589999803 ], "stats": [ { "ci_99": [0.12618592699999454, 0.1352666810000187], "q_25": 0.12893427825000003, "q_75": 0.13400366550000342, "min": 0.12618592699999454, "max": 0.1352666810000187, "mean": 0.1313601753000057, "std": 0.0029609875523011467, "repeat": 10, "number": 1 }, { "ci_99": [0.12764262399997506, 0.13648561700006212], "q_25": 0.1304727440000022, "q_75": 0.13470597300002396, "min": 0.12764262399997506, "max": 0.13648561700006212, "mean": 0.13244011160000468, "std": 0.0026855955045843637, "repeat": 10, "number": 1 }, { "ci_99": [0.12941695799997888, 0.13810009899998477], "q_25": 0.1309685592500074, "q_75": 0.13343500125003516, "min": 0.12941695799997888, "max": 0.13810009899998477, "mean": 0.1326827847000061, "std": 0.0025056195405551407, "repeat": 10, "number": 1 }, { "ci_99": [0.13180632700004935, 0.15346546900002522], "q_25": 0.13304433074999622, "q_75": 0.13696885524997526, "min": 0.13180632700004935, "max": 0.15346546900002522, "mean": 0.1363848960999917, "std": 0.006034706940878162, "repeat": 10, "number": 1 }, { "ci_99": [0.14323961299999155, 0.1524302150000949], "q_25": 0.14413569974998097, "q_75": 0.14746846874999164, "min": 0.14323961299999155, "max": 0.1524302150000949, "mean": 0.14642695570001935, "std": 0.003107416628598823, "repeat": 10, "number": 1 }, { "ci_99": [0.29931464000003416, 0.6238584600000081], "q_25": 0.32294105949995355, "q_75": 0.47690876924997383, "min": 0.29931464000003416, "max": 0.6238584600000081, "mean": 0.41108471409998515, "std": 0.10868937401920155, "repeat": 10, "number": 1 }, { "ci_99": [0.12780283299997564, 0.13918716000000586], "q_25": 0.1310533360000079, "q_75": 0.13579779425002414, "min": 0.12780283299997564, "max": 0.13918716000000586, "mean": 0.13331255010000972, "std": 0.0032496183024120005, "repeat": 10, "number": 1 }, { "ci_99": [0.12753291299998182, 0.13499576899999965], "q_25": 0.12988562549999472, "q_75": 0.13260258100001465, "min": 0.12753291299998182, "max": 0.13499576899999965, "mean": 0.1312083625000014, "std": 0.002311235958664829, "repeat": 10, "number": 1 }, { "ci_99": [0.13214866299995265, 0.1449965990000237], "q_25": 0.13320841200007294, "q_75": 0.13729180099997507, "min": 0.13214866299995265, "max": 0.1449965990000237, "mean": 0.13596039910000285, "std": 0.0036764692786462583, "repeat": 10, "number": 1 }, { "ci_99": [0.13160305400003836, 0.19206957199992303], "q_25": 0.13529067725001198, "q_75": 0.138814154500011, "min": 0.13160305400003836, "max": 0.19206957199992303, "mean": 0.14189649259999443, "std": 0.016929381099128386, "repeat": 10, "number": 1 }, { "ci_99": [0.1426907970000002, 0.21088077800004612], "q_25": 0.14522242150003706, "q_75": 0.1482634209999958, "min": 0.1426907970000002, "max": 0.21088077800004612, "mean": 0.15277738990001807, "std": 0.019538643726821847, "repeat": 10, "number": 1 }, { "ci_99": [0.3061838569999509, 0.3426795220000258], "q_25": 0.31409481549999896, "q_75": 0.33108458450000455, "min": 0.3061838569999509, "max": 0.3426795220000258, "mean": 0.32148190329999693, "std": 0.012201107983271285, "repeat": 10, "number": 1 }, { "ci_99": [0.12876408799996852, 0.14099941599999966], "q_25": 0.13302670249998982, "q_75": 0.1357785769999964, "min": 0.12876408799996852, "max": 0.14099941599999966, "mean": 0.13474377029999118, "std": 0.0034796243915718008, "repeat": 10, "number": 1 }, { "ci_99": [0.12843753999993623, 0.1395770919999677], "q_25": 0.1320449159999555, "q_75": 0.1339063245000034, "min": 0.12843753999993623, "max": 0.1395770919999677, "mean": 0.13325128619998167, "std": 0.002707153009584223, "repeat": 10, "number": 1 }, { "ci_99": [0.12891605900000513, 0.13990133000004334], "q_25": 0.13082414725005265, "q_75": 0.13635896949995185, "min": 0.12891605900000513, "max": 0.13990133000004334, "mean": 0.13380982969999877, "std": 0.0035375361859406687, "repeat": 10, "number": 1 }, { "ci_99": [0.13141433999999208, 0.14310728399999562], "q_25": 0.13481973849999918, "q_75": 0.13723829024999645, "min": 0.13141433999999208, "max": 0.14310728399999562, "mean": 0.13617014570000946, "std": 0.0029375055001676672, "repeat": 10, "number": 1 }, { "ci_99": [0.1435626569999613, 0.149558815999967], "q_25": 0.1450088717500222, "q_75": 0.1492605357499599, "min": 0.1435626569999613, "max": 0.149558815999967, "mean": 0.14706810329999484, "std": 0.0023245717013085964, "repeat": 10, "number": 1 }, { "ci_99": [0.3110325060000605, 0.3832328339999549], "q_25": 0.31759660800000233, "q_75": 0.35491684475002216, "min": 0.3110325060000605, "max": 0.3832328339999549, "mean": 0.33899336569999716, "std": 0.0238783997027229, "repeat": 10, "number": 1 }, { "ci_99": [0.12704632899999524, 0.1364665190000096], "q_25": 0.1298096997500835, "q_75": 0.13148584175006306, "min": 0.12704632899999524, "max": 0.1364665190000096, "mean": 0.13102527540002598, "std": 0.0023888157266289027, "repeat": 10, "number": 1 }, { "ci_99": [0.12833420399999795, 0.13641526100002466], "q_25": 0.12968357024999477, "q_75": 0.1331215127499803, "min": 0.12833420399999795, "max": 0.13641526100002466, "mean": 0.13135038239999516, "std": 0.002434989487148795, "repeat": 10, "number": 1 }, { "ci_99": [0.12983820400006607, 0.13841303499998503], "q_25": 0.1308449062500472, "q_75": 0.13643094274999612, "min": 0.12983820400006607, "max": 0.13841303499998503, "mean": 0.13335753580001325, "std": 0.003154263272620229, "repeat": 10, "number": 1 }, { "ci_99": [0.12996956300003148, 0.1411478850000094], "q_25": 0.13595921399993927, "q_75": 0.13836725225003477, "min": 0.12996956300003148, "max": 0.1411478850000094, "mean": 0.13691180319999602, "std": 0.0030921730594185527, "repeat": 10, "number": 1 }, { "ci_99": [0.14162127899999177, 0.14724844199997733], "q_25": 0.14387146574998155, "q_75": 0.14638777000001824, "min": 0.14162127899999177, "max": 0.14724844199997733, "mean": 0.144762598199992, "std": 0.0019074377013979403, "repeat": 10, "number": 1 }, { "ci_99": [0.3170171989999062, 0.5057667020000736], "q_25": 0.33130655425001976, "q_75": 0.3562975887500386, "min": 0.3170171989999062, "max": 0.5057667020000736, "mean": 0.3577212297000131, "std": 0.05113143543550765, "repeat": 10, "number": 1 }, { "ci_99": [0.1260728409999956, 0.15975838299993939], "q_25": 0.1289252260000069, "q_75": 0.13213377524999714, "min": 0.1260728409999956, "max": 0.15975838299993939, "mean": 0.13302917669997782, "std": 0.009124775893298744, "repeat": 10, "number": 1 }, { "ci_99": [0.12518101199998455, 0.15865013699999508], "q_25": 0.12719501524998122, "q_75": 0.13435902724997106, "min": 0.12518101199998455, "max": 0.15865013699999508, "mean": 0.1331317097999886, "std": 0.009167981581024953, "repeat": 10, "number": 1 }, { "ci_99": [0.127397434000045, 0.15655832900000632], "q_25": 0.13068603375000976, "q_75": 0.13580668874996604, "min": 0.127397434000045, "max": 0.15655832900000632, "mean": 0.13524601839999945, "std": 0.007691563507479617, "repeat": 10, "number": 1 }, { "ci_99": [0.13169165700003305, 0.1658628550000003], "q_25": 0.13588015624998206, "q_75": 0.1475842732499757, "min": 0.13169165700003305, "max": 0.1658628550000003, "mean": 0.14272231230000898, "std": 0.009760459555155173, "repeat": 10, "number": 1 }, { "ci_99": [0.14224515600000132, 0.16265891299997293], "q_25": 0.14259109824996585, "q_75": 0.14752532550001263, "min": 0.14224515600000132, "max": 0.16265891299997293, "mean": 0.14711368979998837, "std": 0.005846012214071467, "repeat": 10, "number": 1 }, { "ci_99": [0.3044764740000119, 0.37354032199999665], "q_25": 0.32360224249995895, "q_75": 0.338608934749999, "min": 0.3044764740000119, "max": 0.37354032199999665, "mean": 0.3337402455999836, "std": 0.018035733651292067, "repeat": 10, "number": 1 } ], "params": [ ["0"], ["1", "10", "50", "100", "200"], ["10", "100", "1000", "10000", "100000", "1000000"] ] } }, "params": { "arch": "x86_64", "cpu": "Intel(R) Xeon(R) CPU @ 2.30GHz", "machine": "asv-testing-64", "os": "Linux 4.15.0-1029-gcp", "ram": "64423396", "python": "3.7", "numpy": "" }, "requirements": { "numpy": "" }, "commit_hash": "85c7bb662c0fafcf0edefe295db727311eff715c", "date": 1589299893000, "env_name": "conda-py3.7-numpy", "python": "3.7", "profiles": {}, "started_at": { "throughput.CoalescingBroadcast.time_broadcast": 1589306407213, "throughput.DirectViewBroadCast.time_broadcast": 1589306445603, "throughput.NonCoalescingBroadcast.time_broadcast": 1589306486850 }, "ended_at": { "throughput.CoalescingBroadcast.time_broadcast": 1589306445599, "throughput.DirectViewBroadCast.time_broadcast": 1589306486846, "throughput.NonCoalescingBroadcast.time_broadcast": 1589306523346 }, "benchmark_version": { "throughput.CoalescingBroadcast.time_broadcast": "1229cbf5251bdcfdb654cdb9ee6b317440b8fbb1e70646546196e2a6dae5998c", "throughput.DirectViewBroadCast.time_broadcast": "1229cbf5251bdcfdb654cdb9ee6b317440b8fbb1e70646546196e2a6dae5998c", "throughput.NonCoalescingBroadcast.time_broadcast": "1229cbf5251bdcfdb654cdb9ee6b317440b8fbb1e70646546196e2a6dae5998c" }, "version": 1 } ipython-ipyparallel-14e3c43/benchmarks/results/asv-testing-64-2020-05-19-00-04-55/000077500000000000000000000000001520071063500262775ustar00rootroot00000000000000ipython-ipyparallel-14e3c43/benchmarks/results/asv-testing-64-2020-05-19-00-04-55/results.json000066400000000000000000001407301520071063500307000ustar00rootroot00000000000000{ "results": { "throughput.CoalescingAsync.time_async_messages": { "result": [ 0.008620546500054616, 0.03379631249998738, 0.29773593150002853, 0.010170596999984127, 0.043363679999998794, 0.35711225549994197, 0.016890968999973666, 0.07753204799996638, 0.6691886819999695, 0.026966543500009266, 0.1881735400000366, 1.398158381499968, 0.044266059499989296, 0.2933529389999876, 2.8480276519999848 ], "stats": [ { "ci_99": [0.008324573999971108, 0.010412833999964732], "q_25": 0.008443956249976736, "q_75": 0.009328884250038527, "min": 0.008324573999971108, "max": 0.010412833999964732, "mean": 0.008910689900005764, "std": 0.000650215510348033, "repeat": 10, "number": 1 }, { "ci_99": [0.033360493000031965, 0.03747583099999474], "q_25": 0.033760387749993015, "q_75": 0.033962443749942395, "min": 0.033360493000031965, "max": 0.03747583099999474, "mean": 0.03418484219999414, "std": 0.0011180587180007588, "repeat": 10, "number": 1 }, { "ci_99": [0.27128386000003957, 0.3119353879999949], "q_25": 0.29189127549994964, "q_75": 0.3075831207500386, "min": 0.27128386000003957, "max": 0.3119353879999949, "mean": 0.296957672100001, "std": 0.012027636288590575, "repeat": 10, "number": 1 }, { "ci_99": [0.009345898999981728, 0.01087651199998163], "q_25": 0.009786718249941373, "q_75": 0.010280717999989974, "min": 0.009345898999981728, "max": 0.01087651199998163, "mean": 0.0100569174999805, "std": 0.0004321332394739936, "repeat": 10, "number": 1 }, { "ci_99": [0.042694538999967335, 0.05573164899999483], "q_25": 0.04295884149993867, "q_75": 0.04394374974998527, "min": 0.042694538999967335, "max": 0.05573164899999483, "mean": 0.04464202469998781, "std": 0.0037431220848301067, "repeat": 10, "number": 1 }, { "ci_99": [0.3313542849999749, 0.3970382410000184], "q_25": 0.3534119354999632, "q_75": 0.3621038112499946, "min": 0.3313542849999749, "max": 0.3970382410000184, "mean": 0.35890581219998124, "std": 0.015919707764402578, "repeat": 10, "number": 1 }, { "ci_99": [0.01626849100000527, 0.020770747000028678], "q_25": 0.01649862424994808, "q_75": 0.017899430249997295, "min": 0.01626849100000527, "max": 0.020770747000028678, "mean": 0.017376282099996844, "std": 0.0013117810298236235, "repeat": 10, "number": 1 }, { "ci_99": [0.07595796700002211, 0.08380293999999822], "q_25": 0.07693987124999069, "q_75": 0.07938569749998692, "min": 0.07595796700002211, "max": 0.08380293999999822, "mean": 0.07841015099999141, "std": 0.0022910311579457964, "repeat": 10, "number": 1 }, { "ci_99": [0.6548360190000153, 0.7146110879999696], "q_25": 0.6652331910000129, "q_75": 0.6883875314999557, "min": 0.6548360190000153, "max": 0.7146110879999696, "mean": 0.6760138289999815, "std": 0.01790497300992644, "repeat": 10, "number": 1 }, { "ci_99": [0.025481495999997605, 0.04228260599995792], "q_25": 0.026119156499973428, "q_75": 0.02765530724998655, "min": 0.025481495999997605, "max": 0.04228260599995792, "mean": 0.02830656840000074, "std": 0.004726780745848462, "repeat": 10, "number": 1 }, { "ci_99": [0.14364650599998185, 0.24711430899998277], "q_25": 0.15758787849999578, "q_75": 0.2007481829999449, "min": 0.14364650599998185, "max": 0.24711430899998277, "mean": 0.1856022348999943, "std": 0.030632451679805005, "repeat": 10, "number": 1 }, { "ci_99": [1.3193792430000713, 1.4591027230000009], "q_25": 1.3695126097500179, "q_75": 1.4292126050000036, "min": 1.3193792430000713, "max": 1.4591027230000009, "mean": 1.397284824500008, "std": 0.040221307425201795, "repeat": 10, "number": 1 }, { "ci_99": [0.04283988400004546, 0.048132612000017616], "q_25": 0.04330762125002252, "q_75": 0.04520905350000248, "min": 0.04283988400004546, "max": 0.048132612000017616, "mean": 0.044485667200018494, "std": 0.0015473093702052894, "repeat": 10, "number": 1 }, { "ci_99": [0.28382040400003916, 0.5436680690000344], "q_25": 0.2863599297500201, "q_75": 0.3012614447500539, "min": 0.28382040400003916, "max": 0.5436680690000344, "mean": 0.3177799419000166, "std": 0.07558430375089381, "repeat": 10, "number": 1 }, { "ci_99": [2.705085967999935, 2.955346575927645], "q_25": 2.789244341, "q_75": 2.8980540470000022, "min": 2.705085967999935, "max": 2.9139160140000513, "mean": 2.8332394503333282, "std": 0.07431816977067779, "repeat": 6, "number": 1 } ], "params": [ ["2", "8", "64", "128", "256"], ["1", "10", "100"] ] }, "throughput.CoalescingBroadcast.time_broadcast": { "result": [ 0.008692752750008026, 0.009675120499991863, 0.016965066499977866, 0.08853290349998133, 0.16721010150001803, 0.00957796675000111, 0.010750109500008875, 0.019535819999987325, 0.10125572399999783, 0.19367475850003757, 0.01722321199997623, 0.020946698500011962, 0.03812538050004832, 0.2483430965000082, 0.48895782200000326, 0.026132772000011073, 0.033175150500056816, 0.05528547200003686, 0.3239788249999833, 0.8385141724999698, 0.04395270100002335, 0.05572699449999163, 0.09534417599996914, 0.5617332264999959, 2.3586256380000066 ], "stats": [ { "ci_99": [0.008194235500013747, 0.009081963999960863], "q_25": 0.008398016625029925, "q_75": 0.008780381500010037, "min": 0.008194235500013747, "max": 0.009081963999960863, "mean": 0.008618855100004907, "std": 0.0002758713259189728, "repeat": 10, "number": 2 }, { "ci_99": [0.009461685500014028, 0.010631627500004015], "q_25": 0.009539398250019815, "q_75": 0.00971375499999283, "min": 0.009461685500014028, "max": 0.010631627500004015, "mean": 0.009802295450000997, "std": 0.00041245191702584446, "repeat": 10, "number": 2 }, { "ci_99": [0.016449805999968703, 0.017544447000034324], "q_25": 0.016810325750014954, "q_75": 0.017164510000000632, "min": 0.016449805999968703, "max": 0.017544447000034324, "mean": 0.016983049700002084, "std": 0.0003264171918043348, "repeat": 10, "number": 1 }, { "ci_99": [0.08592042200001515, 0.09039576699990448], "q_25": 0.08815089400002307, "q_75": 0.08887434300004315, "min": 0.08592042200001515, "max": 0.09039576699990448, "mean": 0.08850877200000581, "std": 0.0011627678836657503, "repeat": 10, "number": 1 }, { "ci_99": [0.16066284099997574, 0.1753528169999754], "q_25": 0.16294818325005167, "q_75": 0.16910134700002288, "min": 0.16066284099997574, "max": 0.1753528169999754, "mean": 0.16674757650001198, "std": 0.00424785314214818, "repeat": 10, "number": 1 }, { "ci_99": [0.009087665000009792, 0.010429489000046033], "q_25": 0.009248641999995755, "q_75": 0.009945067500026994, "min": 0.009087665000009792, "max": 0.010429489000046033, "mean": 0.00966611485001181, "std": 0.0004628840094510255, "repeat": 10, "number": 2 }, { "ci_99": [0.010301053000034699, 0.011313834999896244], "q_25": 0.010607149000037452, "q_75": 0.010904845749962533, "min": 0.010301053000034699, "max": 0.011313834999896244, "mean": 0.010757696299998542, "std": 0.00029577447248943257, "repeat": 10, "number": 1 }, { "ci_99": [0.018777053999997406, 0.021611324999980752], "q_25": 0.01941139175002604, "q_75": 0.02044346500005645, "min": 0.018777053999997406, "max": 0.021611324999980752, "mean": 0.019860530100015695, "std": 0.0008431473750953864, "repeat": 10, "number": 1 }, { "ci_99": [0.09458070299990595, 0.11416146800002025], "q_25": 0.09675798975001726, "q_75": 0.10668964725000762, "min": 0.09458070299990595, "max": 0.11416146800002025, "mean": 0.10248121899999205, "std": 0.006613009464400978, "repeat": 10, "number": 1 }, { "ci_99": [0.17771635100007188, 0.21687070899997707], "q_25": 0.18175970274998576, "q_75": 0.2050173232499901, "min": 0.17771635100007188, "max": 0.21687070899997707, "mean": 0.1942510460000051, "std": 0.012973339356020932, "repeat": 10, "number": 1 }, { "ci_99": [0.01643639499997107, 0.017686275000073692], "q_25": 0.017155471999984684, "q_75": 0.017368074249958454, "min": 0.01643639499997107, "max": 0.017686275000073692, "mean": 0.017181556899993213, "std": 0.00035278320955242664, "repeat": 10, "number": 1 }, { "ci_99": [0.020068240000000515, 0.021842388999971263], "q_25": 0.020284156250028218, "q_75": 0.021104354249985136, "min": 0.020068240000000515, "max": 0.021842388999971263, "mean": 0.020816239500004486, "std": 0.0005480155417402727, "repeat": 10, "number": 1 }, { "ci_99": [0.03647836999999754, 0.04278400900000179], "q_25": 0.03686269850000201, "q_75": 0.038876435250017494, "min": 0.03647836999999754, "max": 0.04278400900000179, "mean": 0.03834904150000966, "std": 0.0017988190391608778, "repeat": 10, "number": 1 }, { "ci_99": [0.18064568099998723, 0.33836141900002303], "q_25": 0.1895818935000193, "q_75": 0.3108667302500123, "min": 0.18064568099998723, "max": 0.33836141900002303, "mean": 0.25268984980000936, "std": 0.06372921229061591, "repeat": 10, "number": 1 }, { "ci_99": [0.34504763900008584, 0.6690799909999896], "q_25": 0.3636280817499937, "q_75": 0.6012781492499926, "min": 0.34504763900008584, "max": 0.6690799909999896, "mean": 0.4902716410000096, "std": 0.12757132621541295, "repeat": 10, "number": 1 }, { "ci_99": [0.025635042999965663, 0.027162412999928165], "q_25": 0.02588173724997489, "q_75": 0.026805282249995344, "min": 0.025635042999965663, "max": 0.027162412999928165, "mean": 0.02630123539998408, "std": 0.0005281779220503558, "repeat": 10, "number": 1 }, { "ci_99": [0.03227196099999219, 0.034955180999986624], "q_25": 0.03255131824997193, "q_75": 0.03337288450006781, "min": 0.03227196099999219, "max": 0.034955180999986624, "mean": 0.0332093835000137, "std": 0.000779796381236725, "repeat": 10, "number": 1 }, { "ci_99": [0.0545181800000023, 0.05855325499999253], "q_25": 0.054715024500040954, "q_75": 0.05643037274998619, "min": 0.0545181800000023, "max": 0.05855325499999253, "mean": 0.05585814300000038, "std": 0.001429214436297396, "repeat": 10, "number": 1 }, { "ci_99": [0.2774180929999943, 0.5907567429999858], "q_25": 0.3023989447500526, "q_75": 0.48214142400000526, "min": 0.2774180929999943, "max": 0.5907567429999858, "mean": 0.38646856780001143, "std": 0.11031557455980986, "repeat": 10, "number": 1 }, { "ci_99": [0.5533758289999469, 1.1532030600000098], "q_25": 0.6240669315000105, "q_75": 1.0757584705000198, "min": 0.5533758289999469, "max": 1.1532030600000098, "mean": 0.8435880483999938, "std": 0.2383735501194566, "repeat": 10, "number": 1 }, { "ci_99": [0.04196806499999184, 0.04694865599998366], "q_25": 0.04270174999996357, "q_75": 0.04510253624998484, "min": 0.04196806499999184, "max": 0.04694865599998366, "mean": 0.04403992189999144, "std": 0.0015947228146868879, "repeat": 10, "number": 1 }, { "ci_99": [0.054145610999967175, 0.06101726700001109], "q_25": 0.05519432250008549, "q_75": 0.05624507224996478, "min": 0.054145610999967175, "max": 0.06101726700001109, "mean": 0.05618069590000232, "std": 0.0018699573122114626, "repeat": 10, "number": 1 }, { "ci_99": [0.08840790599998627, 0.10744755100000702], "q_25": 0.09335793550002336, "q_75": 0.10081602575000659, "min": 0.08840790599998627, "max": 0.10744755100000702, "mean": 0.09670411520000358, "std": 0.00542444973082017, "repeat": 10, "number": 1 }, { "ci_99": [0.49631662799993137, 1.1042332210000154], "q_25": 0.5179511682500504, "q_75": 1.036317896749992, "min": 0.49631662799993137, "max": 1.1042332210000154, "mean": 0.7399738084000035, "std": 0.25895401842738963, "repeat": 10, "number": 1 }, { "ci_99": [2.008715976000019, 2.460814056000004], "q_25": 2.244290172250018, "q_75": 2.448894440250001, "min": 2.008715976000019, "max": 2.460814056000004, "mean": 2.318650116250005, "std": 0.14721487908232403, "repeat": 8, "number": 1 } ], "params": [ ["0"], ["2", "8", "64", "128", "256"], ["1000", "10000", "100000", "1000000", "2000000"] ] }, "throughput.DirectViewAsync.time_async_messages": { "result": [ 0.005164543166652417, 0.03294233899998744, 0.2803005235000171, 0.00923408549998328, 0.05318283550002434, 0.5286853164999457, 0.042968987500017874, 0.4121564595000109, 3.941807138499996, 0.0845600305000005, 0.8198040139999989, 7.923556505499988, 0.1644718530000091, 1.5967455605000112, 15.488727038499974 ], "stats": [ { "ci_99": [0.004700405666653751, 0.005292328666655521], "q_25": 0.004875937999997859, "q_75": 0.005202598499991495, "min": 0.004700405666653751, "max": 0.005292328666655521, "mean": 0.005061239899993097, "std": 0.0001964908058078159, "repeat": 10, "number": 3 }, { "ci_99": [0.030074841000100605, 0.035119355999995605], "q_25": 0.030956798000062236, "q_75": 0.03489566825001589, "min": 0.030074841000100605, "max": 0.035119355999995605, "mean": 0.03284424110002533, "std": 0.002015114941494051, "repeat": 10, "number": 1 }, { "ci_99": [0.27087633700000424, 0.2908711309999603], "q_25": 0.27782420375004335, "q_75": 0.28246072474993866, "min": 0.27087633700000424, "max": 0.2908711309999603, "mean": 0.2808232482000051, "std": 0.005270169769983609, "repeat": 10, "number": 1 }, { "ci_99": [0.0090960234999784, 0.00984728849999783], "q_25": 0.009118607499985387, "q_75": 0.009515747125007579, "min": 0.0090960234999784, "max": 0.00984728849999783, "mean": 0.009349040599988711, "std": 0.0002811392860593625, "repeat": 10, "number": 2 }, { "ci_99": [0.051330961000019215, 0.05530092899999772], "q_25": 0.05271274450001329, "q_75": 0.05340875975002746, "min": 0.051330961000019215, "max": 0.05530092899999772, "mean": 0.05315916220001782, "std": 0.0010960649849742323, "repeat": 10, "number": 1 }, { "ci_99": [0.5225797169999851, 0.582661278000046], "q_25": 0.5242165925000108, "q_75": 0.5411622077500198, "min": 0.5225797169999851, "max": 0.582661278000046, "mean": 0.5371014591000005, "std": 0.018220864020299057, "repeat": 10, "number": 1 }, { "ci_99": [0.040706682000063665, 0.051628069999992476], "q_25": 0.04208435625005791, "q_75": 0.04768267874993626, "min": 0.040706682000063665, "max": 0.051628069999992476, "mean": 0.044673758300007194, "std": 0.003681875809290368, "repeat": 10, "number": 1 }, { "ci_99": [0.395338608999964, 0.4224360349999756], "q_25": 0.40744065625001724, "q_75": 0.41982772950007075, "min": 0.395338608999964, "max": 0.4224360349999756, "mean": 0.4123705204000089, "std": 0.008195477789377107, "repeat": 10, "number": 1 }, { "ci_99": [3.892344665546838, 3.9802795589531774], "q_25": 3.932117807750018, "q_75": 3.946001442999986, "min": 3.907864946000018, "max": 3.95376922600002, "mean": 3.9363121122500075, "std": 0.017172179858605575, "repeat": 4, "number": 1 }, { "ci_99": [0.08216877699999259, 0.08597627400001784], "q_25": 0.08383649975000651, "q_75": 0.08552120625003568, "min": 0.08216877699999259, "max": 0.08597627400001784, "mean": 0.08445420680000097, "std": 0.001181963748742046, "repeat": 10, "number": 1 }, { "ci_99": [0.7702778589999753, 0.8412386879999758], "q_25": 0.8036846739999817, "q_75": 0.832970702250023, "min": 0.7702778589999753, "max": 0.8412386879999758, "mean": 0.8140867838999952, "std": 0.023150522830525773, "repeat": 10, "number": 1 }, { "ci_99": [3.236354780498999, 12.610758230500974], "q_25": 7.876684488249978, "q_75": 7.970428522749998, "min": 7.829812470999968, "max": 8.017300540000008, "mean": 7.923556505499988, "std": 0.09374403450001978, "repeat": 2, "number": 1 }, { "ci_99": [0.15284628999995675, 0.1744776059999822], "q_25": 0.16120458374999203, "q_75": 0.1678588002500021, "min": 0.15284628999995675, "max": 0.1744776059999822, "mean": 0.16397780829998965, "std": 0.006289819224997528, "repeat": 10, "number": 1 }, { "ci_99": [1.5282115560000875, 1.645367047000036], "q_25": 1.5676296235000535, "q_75": 1.6098852644999795, "min": 1.5282115560000875, "max": 1.645367047000036, "mean": 1.5882121024000297, "std": 0.03739357031454772, "repeat": 10, "number": 1 }, { "ci_99": [13.313943113500272, 17.663510963499675], "q_25": 15.466979199249977, "q_75": 15.51047487774997, "min": 15.44523135999998, "max": 15.532222716999968, "mean": 15.488727038499974, "std": 0.04349567849999403, "repeat": 2, "number": 1 } ], "params": [ ["2", "8", "64", "128", "256"], ["1", "10", "100"] ] }, "throughput.DirectViewBroadCast.time_broadcast": { "result": [ 0.004829067166667755, 0.005606473500023412, 0.01263321249996352, 0.08095782800000961, 0.1562830199999894, 0.00906763900002261, 0.009889020250000158, 0.01672270850002633, 0.08940325100002156, 0.17481991450000578, 0.04129126649996806, 0.04355331749997049, 0.055171397500032526, 0.22398425899996255, 0.3863427999999658, 0.0823959655000408, 0.08685200849998864, 0.10002380949998724, 0.3481144514999528, 0.922514496500014, 0.15988937900004885, 0.1651560674999928, 0.1996843130000343, 0.8019820409999738, 1.6627209840000319 ], "stats": [ { "ci_99": [0.0047328489999927115, 0.004903505000015684], "q_25": 0.00477150399999952, "q_75": 0.004849304583331104, "min": 0.0047328489999927115, "max": 0.004903505000015684, "mean": 0.004820090733331501, "std": 0.00005326441207714547, "repeat": 10, "number": 3 }, { "ci_99": [0.005460999999968408, 0.005840229999989788], "q_25": 0.0055636689999687405, "q_75": 0.005738726625025947, "min": 0.005460999999968408, "max": 0.005840229999989788, "mean": 0.005639294700000619, "std": 0.00011900344353950086, "repeat": 10, "number": 2 }, { "ci_99": [0.012288420000004407, 0.013101293999966401], "q_25": 0.01244687299998759, "q_75": 0.012803795749931624, "min": 0.012288420000004407, "max": 0.013101293999966401, "mean": 0.012651397999968594, "std": 0.00024624152150955284, "repeat": 10, "number": 1 }, { "ci_99": [0.0787361029999829, 0.08323862700001428], "q_25": 0.07940961725003604, "q_75": 0.08265183375004881, "min": 0.0787361029999829, "max": 0.08323862700001428, "mean": 0.08097269830001323, "std": 0.0016520205969901142, "repeat": 10, "number": 1 }, { "ci_99": [0.15344877799998358, 0.16555165600004784], "q_25": 0.15542969025000275, "q_75": 0.15761350924995554, "min": 0.15344877799998358, "max": 0.16555165600004784, "mean": 0.15762823179999258, "std": 0.003960802988750161, "repeat": 10, "number": 1 }, { "ci_99": [0.008706469499998093, 0.009568108499991013], "q_25": 0.008768430499998203, "q_75": 0.009117869500002485, "min": 0.008706469499998093, "max": 0.009568108499991013, "mean": 0.009048688349997747, "std": 0.00028942168986324963, "repeat": 10, "number": 2 }, { "ci_99": [0.009609362499986673, 0.010197469999980058], "q_25": 0.00970993712500956, "q_75": 0.009998253750012509, "min": 0.009609362499986673, "max": 0.010197469999980058, "mean": 0.009878340699998489, "std": 0.00018422426052194855, "repeat": 10, "number": 2 }, { "ci_99": [0.01642194000010022, 0.017470976999902632], "q_25": 0.016575195499996198, "q_75": 0.01707546199997978, "min": 0.01642194000010022, "max": 0.017470976999902632, "mean": 0.016822505099992214, "std": 0.000323800163276356, "repeat": 10, "number": 1 }, { "ci_99": [0.0854995230000668, 0.09775606899995637], "q_25": 0.08605274050006528, "q_75": 0.09408783550000521, "min": 0.0854995230000668, "max": 0.09775606899995637, "mean": 0.09031738440002073, "std": 0.004436511818139959, "repeat": 10, "number": 1 }, { "ci_99": [0.1641539360000479, 0.1861152610000545], "q_25": 0.1672852660000217, "q_75": 0.1764230562500586, "min": 0.1641539360000479, "max": 0.1861152610000545, "mean": 0.1731191985000237, "std": 0.006364633813992945, "repeat": 10, "number": 1 }, { "ci_99": [0.040175653000005696, 0.04908908499999143], "q_25": 0.040500754250047066, "q_75": 0.04263510599994902, "min": 0.040175653000005696, "max": 0.04908908499999143, "mean": 0.04235029729998132, "std": 0.002701539867758973, "repeat": 10, "number": 1 }, { "ci_99": [0.04116082199993798, 0.04576803899999504], "q_25": 0.04209909250002397, "q_75": 0.04525005700000406, "min": 0.04116082199993798, "max": 0.04576803899999504, "mean": 0.04360287270000072, "std": 0.0016749750266660441, "repeat": 10, "number": 1 }, { "ci_99": [0.05101653500003067, 0.060191714999973556], "q_25": 0.05350934200004076, "q_75": 0.055806033000038724, "min": 0.05101653500003067, "max": 0.060191714999973556, "mean": 0.0549610443000347, "std": 0.00246483607891888, "repeat": 10, "number": 1 }, { "ci_99": [0.2017150969999193, 0.259580063000044], "q_25": 0.20933500850006226, "q_75": 0.23824678725003423, "min": 0.2017150969999193, "max": 0.259580063000044, "mean": 0.22578254040000728, "std": 0.017704638385837353, "repeat": 10, "number": 1 }, { "ci_99": [0.369287725999925, 0.42040482100003373], "q_25": 0.3751195502499911, "q_75": 0.3936112802500418, "min": 0.369287725999925, "max": 0.42040482100003373, "mean": 0.38801777829999085, "std": 0.01619732157027122, "repeat": 10, "number": 1 }, { "ci_99": [0.07879325600003995, 0.0892234319999261], "q_25": 0.08077539874997797, "q_75": 0.08607729824996113, "min": 0.07879325600003995, "max": 0.0892234319999261, "mean": 0.0833139206999931, "std": 0.003197261508207132, "repeat": 10, "number": 1 }, { "ci_99": [0.08271935899995242, 0.08820150400003968], "q_25": 0.08567154124992271, "q_75": 0.08734241875001203, "min": 0.08271935899995242, "max": 0.08820150400003968, "mean": 0.08634440369999083, "std": 0.0016057631647591346, "repeat": 10, "number": 1 }, { "ci_99": [0.0952918209999325, 0.106165328999964], "q_25": 0.0969747414999631, "q_75": 0.10106292700001518, "min": 0.0952918209999325, "max": 0.106165328999964, "mean": 0.09957424749998153, "std": 0.0031585779994233016, "repeat": 10, "number": 1 }, { "ci_99": [0.31368589100009103, 0.44314617099996667], "q_25": 0.32301865825002096, "q_75": 0.39346683750002853, "min": 0.31368589100009103, "max": 0.44314617099996667, "mean": 0.3609249231999911, "std": 0.041799947948551665, "repeat": 10, "number": 1 }, { "ci_99": [0.7653320470000153, 1.2304204519999757], "q_25": 0.8241818692499976, "q_75": 0.9282883279999794, "min": 0.7653320470000153, "max": 1.2304204519999757, "mean": 0.9403514184999949, "std": 0.15624326108129036, "repeat": 10, "number": 1 }, { "ci_99": [0.15273758499995438, 0.17064346099994054], "q_25": 0.15693677524993177, "q_75": 0.16310414374993343, "min": 0.15273758499995438, "max": 0.17064346099994054, "mean": 0.1606432412999766, "std": 0.005219046130410442, "repeat": 10, "number": 1 }, { "ci_99": [0.16174194500001704, 0.17977564699992854], "q_25": 0.16365085075000252, "q_75": 0.16689883624997037, "min": 0.16174194500001704, "max": 0.17977564699992854, "mean": 0.16637081319997832, "std": 0.0048750888129792174, "repeat": 10, "number": 1 }, { "ci_99": [0.1922215069999993, 0.21006848700005776], "q_25": 0.19773875875000613, "q_75": 0.2008668502500086, "min": 0.1922215069999993, "max": 0.21006848700005776, "mean": 0.20047576670002626, "std": 0.005380124431766521, "repeat": 10, "number": 1 }, { "ci_99": [0.635619451000025, 1.0906079869999985], "q_25": 0.752442421249981, "q_75": 0.8712297929999693, "min": 0.635619451000025, "max": 1.0906079869999985, "mean": 0.8278257628999995, "std": 0.13026085743244586, "repeat": 10, "number": 1 }, { "ci_99": [1.4595262269999694, 2.025653168999952], "q_25": 1.5470724054999323, "q_75": 1.9081914672500204, "min": 1.4595262269999694, "max": 2.025653168999952, "mean": 1.7232515438999827, "std": 0.20930782040048906, "repeat": 10, "number": 1 } ], "params": [ ["0"], ["2", "8", "64", "128", "256"], ["1000", "10000", "100000", "1000000", "2000000"] ] }, "throughput.NonCoalescingAsync.time_async_messages": { "result": [ 0.009522220500031153, 0.03686639000000014, 0.3047796495000057, 0.01241582649998918, 0.061397902500004875, 0.5596200879999742, 0.046337140500043006, 0.37403785899999775, 3.7308022665000067, 0.08310045550001632, 0.6005156389999797, 5.809228241499966, 0.15904546900003425, 1.1951652104999653, 11.584770297500029 ], "stats": [ { "ci_99": [0.008954769500007842, 0.009904627500020524], "q_25": 0.009212031000004117, "q_75": 0.009784239625034274, "min": 0.008954769500007842, "max": 0.009904627500020524, "mean": 0.009485575300021764, "std": 0.0003355950468842661, "repeat": 10, "number": 2 }, { "ci_99": [0.034620018999930835, 0.0378832499999362], "q_25": 0.0351971017500432, "q_75": 0.037407756500016376, "min": 0.034620018999930835, "max": 0.0378832499999362, "mean": 0.036426437000000075, "std": 0.001198846077904984, "repeat": 10, "number": 1 }, { "ci_99": [0.28860485400002744, 0.3313204710000264], "q_25": 0.2907054010000252, "q_75": 0.3194952090000811, "min": 0.28860485400002744, "max": 0.3313204710000264, "mean": 0.3068746477000218, "std": 0.016485659158036674, "repeat": 10, "number": 1 }, { "ci_99": [0.0113495939999666, 0.01288067799998771], "q_25": 0.011887989249942166, "q_75": 0.012738260750040808, "min": 0.0113495939999666, "max": 0.01288067799998771, "mean": 0.012246755899991513, "std": 0.0005546967998456544, "repeat": 10, "number": 1 }, { "ci_99": [0.0581906520000075, 0.07123019400000885], "q_25": 0.05931640675004246, "q_75": 0.06418565999996417, "min": 0.0581906520000075, "max": 0.07123019400000885, "mean": 0.06247132580001562, "std": 0.00396005687340336, "repeat": 10, "number": 1 }, { "ci_99": [0.5167844110000033, 0.5874817839999196], "q_25": 0.5380322405000015, "q_75": 0.5699719912500427, "min": 0.5167844110000033, "max": 0.5874817839999196, "mean": 0.5543960099999936, "std": 0.02241010469779015, "repeat": 10, "number": 1 }, { "ci_99": [0.04565038900000218, 0.04948769199995695], "q_25": 0.04608608575000517, "q_75": 0.04669807225002387, "min": 0.04565038900000218, "max": 0.04948769199995695, "mean": 0.046806808399992406, "std": 0.0012676942832864004, "repeat": 10, "number": 1 }, { "ci_99": [0.3705148569999892, 0.39409775400008584], "q_25": 0.3713841849999824, "q_75": 0.37593372749998366, "min": 0.3705148569999892, "max": 0.39409775400008584, "mean": 0.3762176006999994, "std": 0.00716581673664994, "repeat": 10, "number": 1 }, { "ci_99": [3.6206711698430603, 3.821358883156937], "q_25": 3.703045393499991, "q_75": 3.7487718995000137, "min": 3.6630704189999506, "max": 3.7593851540000287, "mean": 3.721015026499998, "std": 0.03687133969494092, "repeat": 4, "number": 1 }, { "ci_99": [0.0810751449999998, 0.08548632999998063], "q_25": 0.08199353925004971, "q_75": 0.08364891799996599, "min": 0.0810751449999998, "max": 0.08548632999998063, "mean": 0.08297062479999795, "std": 0.001304641192929528, "repeat": 10, "number": 1 }, { "ci_99": [0.5813492190000034, 0.6296922170000698], "q_25": 0.5886326777500415, "q_75": 0.6095911724999894, "min": 0.5813492190000034, "max": 0.6296922170000698, "mean": 0.6014065020000203, "std": 0.01576383333759041, "repeat": 10, "number": 1 }, { "ci_99": [4.818252166500827, 6.800204316499104], "q_25": 5.7993184807499745, "q_75": 5.819138002249957, "min": 5.789408719999983, "max": 5.829047762999949, "mean": 5.809228241499966, "std": 0.019819521499982784, "repeat": 2, "number": 1 }, { "ci_99": [0.156031928999937, 0.16170384800000193], "q_25": 0.15703854950007212, "q_75": 0.16008814299996743, "min": 0.156031928999937, "max": 0.16170384800000193, "mean": 0.15879852170000958, "std": 0.0018630902983645958, "repeat": 10, "number": 1 }, { "ci_99": [1.1421353060000001, 1.2169688289999385], "q_25": 1.1743947777499955, "q_75": 1.1994828332499594, "min": 1.1421353060000001, "max": 1.2169688289999385, "mean": 1.1868848797999703, "std": 0.022766685370222903, "repeat": 10, "number": 1 }, { "ci_99": [6.9780813225006, 16.191459272499454], "q_25": 11.538703407750035, "q_75": 11.630837187250023, "min": 11.49263651800004, "max": 11.676904077000017, "mean": 11.584770297500029, "std": 0.09213377949998858, "repeat": 2, "number": 1 } ], "params": [ ["2", "8", "64", "128", "256"], ["1", "10", "100"] ] }, "throughput.NonCoalescingBroadcast.time_broadcast": { "result": [ 0.008620470250008339, 0.009622141749986213, 0.017656418499996107, 0.08696063050001612, 0.16765341649994525, 0.011416243500036671, 0.012402350499996828, 0.01987142250004581, 0.09430217350001158, 0.17957985650002684, 0.04607844949998707, 0.04701952099998152, 0.05578295150002077, 0.14594264400000156, 0.2769783309999525, 0.08186632000001737, 0.08486101149998149, 0.09323973900001192, 0.21450314599997, 0.42359116150004184, 0.16103973399998495, 0.16058349750005618, 0.17459378149999338, 0.33724325700001145, 0.6798208399999908 ], "stats": [ { "ci_99": [0.008205965000001925, 0.009089394499994796], "q_25": 0.008381190125007265, "q_75": 0.008872450625020178, "min": 0.008205965000001925, "max": 0.009089394499994796, "mean": 0.008627598750007338, "std": 0.0002865515220120793, "repeat": 10, "number": 2 }, { "ci_99": [0.009356210000021292, 0.00988211650002313], "q_25": 0.00950898412499157, "q_75": 0.009725772625031937, "min": 0.009356210000021292, "max": 0.00988211650002313, "mean": 0.009622119150003527, "std": 0.00015475084092258728, "repeat": 10, "number": 2 }, { "ci_99": [0.016645406000066032, 0.018378909000034582], "q_25": 0.01709604650000074, "q_75": 0.017731907250038148, "min": 0.016645406000066032, "max": 0.018378909000034582, "mean": 0.017533123100008652, "std": 0.000552618011821297, "repeat": 10, "number": 1 }, { "ci_99": [0.08615267200002563, 0.08874568800001725], "q_25": 0.08665475425002, "q_75": 0.08783434249997413, "min": 0.08615267200002563, "max": 0.08874568800001725, "mean": 0.08724706800001059, "std": 0.0008188446666852995, "repeat": 10, "number": 1 }, { "ci_99": [0.16305615500004933, 0.17677564099994925], "q_25": 0.16576626500000202, "q_75": 0.1693364304999534, "min": 0.16305615500004933, "max": 0.17677564099994925, "mean": 0.16812310859997978, "std": 0.003648182255915987, "repeat": 10, "number": 1 }, { "ci_99": [0.011168922000024395, 0.01195038100001966], "q_25": 0.011365965000010192, "q_75": 0.011572164999961387, "min": 0.011168922000024395, "max": 0.01195038100001966, "mean": 0.01150338060001559, "std": 0.00024330178730021717, "repeat": 10, "number": 1 }, { "ci_99": [0.012096121000013227, 0.012943928000026972], "q_25": 0.012338083500026187, "q_75": 0.012524595750022627, "min": 0.012096121000013227, "max": 0.012943928000026972, "mean": 0.012477581300015573, "std": 0.0002472507696150881, "repeat": 10, "number": 1 }, { "ci_99": [0.0195686750000732, 0.020653976000062357], "q_25": 0.01978344225000228, "q_75": 0.020143486499932806, "min": 0.0195686750000732, "max": 0.020653976000062357, "mean": 0.019980554400012805, "std": 0.0003514414688743741, "repeat": 10, "number": 1 }, { "ci_99": [0.09025073400005112, 0.09586432399999012], "q_25": 0.09230916399994271, "q_75": 0.09470924675005676, "min": 0.09025073400005112, "max": 0.09586432399999012, "mean": 0.09355940580001061, "std": 0.0018010276068382055, "repeat": 10, "number": 1 }, { "ci_99": [0.1714542380000239, 0.1885740000000169], "q_25": 0.17800399250000964, "q_75": 0.1812137872500159, "min": 0.1714542380000239, "max": 0.1885740000000169, "mean": 0.17914957750001576, "std": 0.0047639449166534025, "repeat": 10, "number": 1 }, { "ci_99": [0.04511955999998918, 0.050354253000023164], "q_25": 0.045567324249986996, "q_75": 0.0465281257500294, "min": 0.04511955999998918, "max": 0.050354253000023164, "mean": 0.04648563639999566, "std": 0.0014576156039902764, "repeat": 10, "number": 1 }, { "ci_99": [0.046205805999989025, 0.04867426299995259], "q_25": 0.046373387749952144, "q_75": 0.047359286250014065, "min": 0.046205805999989025, "max": 0.04867426299995259, "mean": 0.04701710889997912, "std": 0.0007173452663651339, "repeat": 10, "number": 1 }, { "ci_99": [0.05345904800003609, 0.06391044400004375], "q_25": 0.05469898999996303, "q_75": 0.0566776217499978, "min": 0.05345904800003609, "max": 0.06391044400004375, "mean": 0.05677062690000412, "std": 0.0033920911124408473, "repeat": 10, "number": 1 }, { "ci_99": [0.14132271100004345, 0.16883525800005827], "q_25": 0.14504027400008113, "q_75": 0.15538091924997843, "min": 0.14132271100004345, "max": 0.16883525800005827, "mean": 0.15035567310003445, "std": 0.008485164098872088, "repeat": 10, "number": 1 }, { "ci_99": [0.26023821400008273, 0.3210660080000025], "q_25": 0.2675666624999735, "q_75": 0.28449011099996824, "min": 0.26023821400008273, "max": 0.3210660080000025, "mean": 0.2788189165999938, "std": 0.01640879364347214, "repeat": 10, "number": 1 }, { "ci_99": [0.08033618499996464, 0.09033748299998479], "q_25": 0.08138364825006761, "q_75": 0.08272537599995644, "min": 0.08033618499996464, "max": 0.09033748299998479, "mean": 0.08270411060000242, "std": 0.002680404767282204, "repeat": 10, "number": 1 }, { "ci_99": [0.08267735000003995, 0.1040636559999939], "q_25": 0.08374727324994069, "q_75": 0.08644645725004807, "min": 0.08267735000003995, "max": 0.1040636559999939, "mean": 0.08662655169998743, "std": 0.005977171647581533, "repeat": 10, "number": 1 }, { "ci_99": [0.09127682499990897, 0.09614916999998968], "q_25": 0.09248555450002982, "q_75": 0.09408064225002022, "min": 0.09127682499990897, "max": 0.09614916999998968, "mean": 0.09337089389999846, "std": 0.001310775002163252, "repeat": 10, "number": 1 }, { "ci_99": [0.20217686599994522, 0.2354110670000864], "q_25": 0.20461608450003155, "q_75": 0.22245577174996356, "min": 0.20217686599994522, "max": 0.2354110670000864, "mean": 0.21468249050000168, "std": 0.010409317442343996, "repeat": 10, "number": 1 }, { "ci_99": [0.3909941900000149, 0.48543925599994964], "q_25": 0.4063517805000174, "q_75": 0.43055101750005065, "min": 0.3909941900000149, "max": 0.48543925599994964, "mean": 0.4257616408000331, "std": 0.026591234692129255, "repeat": 10, "number": 1 }, { "ci_99": [0.15728756099997554, 0.19970750800007409], "q_25": 0.15896066024998845, "q_75": 0.17138462124998455, "min": 0.15728756099997554, "max": 0.19970750800007409, "mean": 0.16672785819999944, "std": 0.012573077309684788, "repeat": 10, "number": 1 }, { "ci_99": [0.15803653800003303, 0.1689588010000307], "q_25": 0.15953643425004316, "q_75": 0.16217833275007365, "min": 0.15803653800003303, "max": 0.1689588010000307, "mean": 0.16195923290005113, "std": 0.003635362695587119, "repeat": 10, "number": 1 }, { "ci_99": [0.1672279309999567, 0.18582413599995107], "q_25": 0.17038082449997205, "q_75": 0.1769337970000322, "min": 0.1672279309999567, "max": 0.18582413599995107, "mean": 0.17483865769999057, "std": 0.005366869156471123, "repeat": 10, "number": 1 }, { "ci_99": [0.30457564300002105, 0.3889815949999047], "q_25": 0.32749489899998707, "q_75": 0.3453450047500439, "min": 0.30457564300002105, "max": 0.3889815949999047, "mean": 0.33827333839999485, "std": 0.02153415902392266, "repeat": 10, "number": 1 }, { "ci_99": [0.6247370330000876, 0.8005736940000361], "q_25": 0.6619757715000105, "q_75": 0.71717153124996, "min": 0.6247370330000876, "max": 0.8005736940000361, "mean": 0.6951275572000213, "std": 0.05364867665978859, "repeat": 10, "number": 1 } ], "params": [ ["0"], ["2", "8", "64", "128", "256"], ["1000", "10000", "100000", "1000000", "2000000"] ] } }, "params": { "arch": "x86_64", "cpu": "Intel(R) Xeon(R) CPU @ 2.30GHz", "machine": "asv-testing-64", "os": "Linux 4.15.0-1029-gcp", "ram": "64423396", "python": "3.7", "numpy": "" }, "requirements": { "numpy": "" }, "commit_hash": "48cf3839b6b5c562997be18c09382f3d1f4c6bca", "date": 1589565612000, "env_name": "conda-py3.7-numpy", "python": "3.7", "profiles": {}, "started_at": { "throughput.CoalescingAsync.time_async_messages": 1589840171515, "throughput.CoalescingBroadcast.time_broadcast": 1589840205836, "throughput.DirectViewAsync.time_async_messages": 1589840241995, "throughput.DirectViewBroadCast.time_broadcast": 1589840331520, "throughput.NonCoalescingAsync.time_async_messages": 1589840376302, "throughput.NonCoalescingBroadcast.time_broadcast": 1589840446713 }, "ended_at": { "throughput.CoalescingAsync.time_async_messages": 1589840205833, "throughput.CoalescingBroadcast.time_broadcast": 1589840241991, "throughput.DirectViewAsync.time_async_messages": 1589840331518, "throughput.DirectViewBroadCast.time_broadcast": 1589840376299, "throughput.NonCoalescingAsync.time_async_messages": 1589840446712, "throughput.NonCoalescingBroadcast.time_broadcast": 1589840475862 }, "benchmark_version": { "throughput.CoalescingAsync.time_async_messages": "bc39ff32fe6e341890c32d72e46298e78c20394bfec57b7ee66c2b38c0ef2b9a", "throughput.CoalescingBroadcast.time_broadcast": "f8807a8d9df27ba2cdad747382db6a0f1ab8ce2ab7a4055a6a6a9b6ba4f5a59e", "throughput.DirectViewAsync.time_async_messages": "bc39ff32fe6e341890c32d72e46298e78c20394bfec57b7ee66c2b38c0ef2b9a", "throughput.DirectViewBroadCast.time_broadcast": "f8807a8d9df27ba2cdad747382db6a0f1ab8ce2ab7a4055a6a6a9b6ba4f5a59e", "throughput.NonCoalescingAsync.time_async_messages": "bc39ff32fe6e341890c32d72e46298e78c20394bfec57b7ee66c2b38c0ef2b9a", "throughput.NonCoalescingBroadcast.time_broadcast": "f8807a8d9df27ba2cdad747382db6a0f1ab8ce2ab7a4055a6a6a9b6ba4f5a59e" }, "version": 1 } ipython-ipyparallel-14e3c43/benchmarks/results/asv_testing-16-2020-04-29-20-02-25/000077500000000000000000000000001520071063500263535ustar00rootroot00000000000000ipython-ipyparallel-14e3c43/benchmarks/results/asv_testing-16-2020-04-29-20-02-25/results.json000066400000000000000000002117221520071063500307540ustar00rootroot00000000000000{ "results": { "overhead_latency.EchoManyArgumentsDirectView.time_echo_with_many_arguments": { "result": [ 0.011600995000009107, 0.01823099250000837, 0.012466673500000525, 0.01374125649999769, 0.016962420999959704, 0.016178994000000557, 0.020117643500014992, 0.02798354499998368 ], "stats": [ { "ci_99": [0.01120511100003796, 0.011960260000023482], "q_25": 0.011502861250022534, "q_75": 0.011708947999991892, "min": 0.01120511100003796, "max": 0.011960260000023482, "mean": 0.01159277230000839, "std": 0.0002218052041431864, "repeat": 10, "number": 1 }, { "ci_99": [0.011686776000033205, 0.052099621999957435], "q_25": 0.012538724750015717, "q_75": 0.034869578999987993, "min": 0.011686776000033205, "max": 0.052099621999957435, "mean": 0.024769812799991086, "std": 0.014059646966520487, "repeat": 10, "number": 1 }, { "ci_99": [0.011944003999985853, 0.04769866000003731], "q_25": 0.011988962749995835, "q_75": 0.01764167375002046, "min": 0.011944003999985853, "max": 0.04769866000003731, "mean": 0.01856218560000684, "std": 0.011582334695337532, "repeat": 10, "number": 1 }, { "ci_99": [0.01248612099999491, 0.031298967999987326], "q_25": 0.012849943500000904, "q_75": 0.021611819250011877, "min": 0.01248612099999491, "max": 0.031298967999987326, "mean": 0.017946198300001014, "std": 0.006500964186682249, "repeat": 10, "number": 1 }, { "ci_99": [0.01381807799998569, 0.06116078100001232], "q_25": 0.014084603500023718, "q_75": 0.025378843750033298, "min": 0.01381807799998569, "max": 0.06116078100001232, "mean": 0.02400806719999764, "std": 0.014472966678883191, "repeat": 10, "number": 1 }, { "ci_99": [0.015791310999986763, 0.06618650999996589], "q_25": 0.015980583249998404, "q_75": 0.024555491750007263, "min": 0.015791310999986763, "max": 0.06618650999996589, "mean": 0.023624378799996747, "std": 0.015052764141802837, "repeat": 10, "number": 1 }, { "ci_99": [0.019225314999971488, 0.025203949000001558], "q_25": 0.019459915500007696, "q_75": 0.023824202250011695, "min": 0.019225314999971488, "max": 0.025203949000001558, "mean": 0.02154285900001014, "std": 0.0024107594013916033, "repeat": 10, "number": 1 }, { "ci_99": [0.026534841000000142, 0.036134404999984326], "q_25": 0.027137971749993994, "q_75": 0.029820262499967498, "min": 0.026534841000000142, "max": 0.036134404999984326, "mean": 0.02893791959998566, "std": 0.002752818798957145, "repeat": 10, "number": 1 } ], "params": [["2", "4", "8", "16", "32", "64", "128", "255"]] }, "overhead_latency.EchoManyArgumentsLoadBalanced.time_echo_with_many_arguments": { "result": [ 0.010789112250009225, 0.009471337000007907, 0.011040793999995913, 0.011431148000013991, 0.016219426499986866, 0.01539587899998196, 0.02011445750000007, 0.023214527500016402 ], "stats": [ { "ci_99": [0.009335743500002991, 0.01266797350001525], "q_25": 0.010456948125010967, "q_75": 0.011824766499998418, "min": 0.009335743500002991, "max": 0.01266797350001525, "mean": 0.011013515350006742, "std": 0.001108849108199584, "repeat": 10, "number": 2 }, { "ci_99": [0.007062949000015806, 0.0101798955000163], "q_25": 0.008511497875005603, "q_75": 0.009849810874996479, "min": 0.007062949000015806, "max": 0.0101798955000163, "mean": 0.0090038089500041, "std": 0.0010636614100913802, "repeat": 10, "number": 2 }, { "ci_99": [0.009523532000002888, 0.013814830499995878], "q_25": 0.010578580875005628, "q_75": 0.011316825375004669, "min": 0.009523532000002888, "max": 0.013814830499995878, "mean": 0.011117151249999324, "std": 0.0010550167644680522, "repeat": 10, "number": 2 }, { "ci_99": [0.009435002500026712, 0.019459699999998747], "q_25": 0.010927255999988006, "q_75": 0.012274133375001384, "min": 0.009435002500026712, "max": 0.019459699999998747, "mean": 0.012117191700005492, "std": 0.0026126339623907258, "repeat": 10, "number": 2 }, { "ci_99": [0.009183046000032391, 0.022570364999978665], "q_25": 0.012222153000010394, "q_75": 0.01705472400001895, "min": 0.009183046000032391, "max": 0.022570364999978665, "mean": 0.015273253100008332, "std": 0.003748104055633533, "repeat": 10, "number": 1 }, { "ci_99": [0.011088185000005524, 0.019619897999973546], "q_25": 0.013210348750007483, "q_75": 0.01629696299995942, "min": 0.011088185000005524, "max": 0.019619897999973546, "mean": 0.015141893599979995, "std": 0.0025193836305665517, "repeat": 10, "number": 1 }, { "ci_99": [0.015894172999992406, 0.029966928000021653], "q_25": 0.018354756500002622, "q_75": 0.02313863925000703, "min": 0.015894172999992406, "max": 0.029966928000021653, "mean": 0.021163179200004833, "std": 0.004173514892004354, "repeat": 10, "number": 1 }, { "ci_99": [0.02195298899999898, 0.04586755100001483], "q_25": 0.02260193874997185, "q_75": 0.03044198575000223, "min": 0.02195298899999898, "max": 0.04586755100001483, "mean": 0.02755964669999571, "std": 0.007276074348355644, "repeat": 10, "number": 1 } ], "params": [["2", "4", "8", "16", "32", "64", "128", "255"]] }, "overhead_latency.Engines100NoDelayBroadcastCoalescing.time_n_task_non_blocking": { "result": [ 0.07520916099997521, 0.07678796449999936, 0.07541730850002182, 0.08074059899999497, 0.10063560349996692 ], "stats": [ { "ci_99": [0.07006922300001861, 0.09313867699995626], "q_25": 0.07336307550001209, "q_75": 0.0769116347499903, "min": 0.07006922300001861, "max": 0.09313867699995626, "mean": 0.07658256239999446, "std": 0.006017831034835755, "repeat": 10, "number": 1 }, { "ci_99": [0.07382437199999003, 0.08177720500003716], "q_25": 0.07440911349998203, "q_75": 0.08003754424996146, "min": 0.07382437199999003, "max": 0.08177720500003716, "mean": 0.0772437251999861, "std": 0.0029738235344584354, "repeat": 10, "number": 1 }, { "ci_99": [0.07399094300001252, 0.09337934500001666], "q_25": 0.07431650274996571, "q_75": 0.07716606099997136, "min": 0.07399094300001252, "max": 0.09337934500001666, "mean": 0.07768484410000269, "std": 0.005668895059009246, "repeat": 10, "number": 1 }, { "ci_99": [0.07457671499997787, 0.10479008299995485], "q_25": 0.07919927074999578, "q_75": 0.0853533519999985, "min": 0.07457671499997787, "max": 0.10479008299995485, "mean": 0.08323037139998632, "std": 0.00809006887722507, "repeat": 10, "number": 1 }, { "ci_99": [0.09605660599999055, 0.12199371899998823], "q_25": 0.09748434325000233, "q_75": 0.10357836424998368, "min": 0.09605660599999055, "max": 0.12199371899998823, "mean": 0.10229363319999152, "std": 0.007166606983005139, "repeat": 10, "number": 1 } ], "params": [["1", "10", "100", "1000", "10000"], ["0"]] }, "overhead_latency.Engines100NoDelayBroadcastCoalescing.time_n_tasks": { "result": [ 0.0757566624999697, 0.07830057649999844, 0.07783967399996072, 0.07671541749999733, 0.09821735700001 ], "stats": [ { "ci_99": [0.07247497999998131, 0.12024718899999698], "q_25": 0.07405068300001005, "q_75": 0.0807097572499913, "min": 0.07247497999998131, "max": 0.12024718899999698, "mean": 0.08069631419998587, "std": 0.013605772838245463, "repeat": 10, "number": 1 }, { "ci_99": [0.07206980299997667, 0.11945616700000983], "q_25": 0.0750680177499845, "q_75": 0.07959261825000397, "min": 0.07206980299997667, "max": 0.11945616700000983, "mean": 0.08147111970000083, "std": 0.01307351537113829, "repeat": 10, "number": 1 }, { "ci_99": [0.07188492100004851, 0.08583495900001026], "q_25": 0.07425228574997789, "q_75": 0.07928848724999682, "min": 0.07188492100004851, "max": 0.08583495900001026, "mean": 0.07729960459998893, "std": 0.003944322636869084, "repeat": 10, "number": 1 }, { "ci_99": [0.07511616400000776, 0.08858367100003761], "q_25": 0.0762200735000107, "q_75": 0.08059851999996681, "min": 0.07511616400000776, "max": 0.08858367100003761, "mean": 0.07887588580000511, "std": 0.004098414348010947, "repeat": 10, "number": 1 }, { "ci_99": [0.09466583800002581, 0.09971297200002027], "q_25": 0.09753590924998434, "q_75": 0.0984175155000031, "min": 0.09466583800002581, "max": 0.09971297200002027, "mean": 0.09787245230000394, "std": 0.001235030385126534, "repeat": 10, "number": 1 } ], "params": [["1", "10", "100", "1000", "10000"], ["0"]] }, "overhead_latency.Engines100NoDelayBroadcastNonCoalescing.time_n_task_non_blocking": { "result": [ 0.10918391799995675, 0.10912190849998638, 0.10574189749999618, 0.11068297150001172, 0.13033116499997277 ], "stats": [ { "ci_99": [0.10412688999997499, 0.12033192899997402], "q_25": 0.10722533025003145, "q_75": 0.11055794525002227, "min": 0.10412688999997499, "max": 0.12033192899997402, "mean": 0.10964310249999017, "std": 0.004142011862994719, "repeat": 10, "number": 1 }, { "ci_99": [0.10434302999999545, 0.12745179000000917], "q_25": 0.10671343324999327, "q_75": 0.11391985749999378, "min": 0.10434302999999545, "max": 0.12745179000000917, "mean": 0.1114551320999965, "std": 0.006829148119055288, "repeat": 10, "number": 1 }, { "ci_99": [0.10240810099998043, 0.1142351390000158], "q_25": 0.1038189009999968, "q_75": 0.10618974025000227, "min": 0.10240810099998043, "max": 0.1142351390000158, "mean": 0.10629420809999601, "std": 0.0034335184955069345, "repeat": 10, "number": 1 }, { "ci_99": [0.10685225999998238, 0.1291873910000163], "q_25": 0.10826491175001252, "q_75": 0.11445649975000549, "min": 0.10685225999998238, "max": 0.1291873910000163, "mean": 0.11285851300000331, "std": 0.006636533485495459, "repeat": 10, "number": 1 }, { "ci_99": [0.12563071300002093, 0.15563981700000795], "q_25": 0.12958022824999205, "q_75": 0.134944084749975, "min": 0.12563071300002093, "max": 0.15563981700000795, "mean": 0.1342137275999903, "std": 0.009010420860169318, "repeat": 10, "number": 1 } ], "params": [["1", "10", "100", "1000", "10000"], ["0"]] }, "overhead_latency.Engines100NoDelayBroadcastNonCoalescing.time_n_tasks": { "result": [ 0.10606124449998333, 0.10945524449999766, 0.10959935950000954, 0.11312032049997356, 0.1328239819999908 ], "stats": [ { "ci_99": [0.1038742759999991, 0.11050122599999668], "q_25": 0.10525727449997646, "q_75": 0.10754643499996064, "min": 0.1038742759999991, "max": 0.11050122599999668, "mean": 0.10654273629999125, "std": 0.0020370476117982897, "repeat": 10, "number": 1 }, { "ci_99": [0.10538376800002425, 0.12111574299996164], "q_25": 0.10632159849998857, "q_75": 0.1123979730000002, "min": 0.10538376800002425, "max": 0.12111574299996164, "mean": 0.11040574039999455, "std": 0.004812804212479911, "repeat": 10, "number": 1 }, { "ci_99": [0.10387612499999932, 0.11439191900001333], "q_25": 0.10519604649999792, "q_75": 0.11169505674997993, "min": 0.10387612499999932, "max": 0.11439191900001333, "mean": 0.10872549400000367, "std": 0.003553838100112276, "repeat": 10, "number": 1 }, { "ci_99": [0.10798453199998903, 0.16442219399999658], "q_25": 0.1103816337500092, "q_75": 0.1198565322500258, "min": 0.10798453199998903, "max": 0.16442219399999658, "mean": 0.11948496700000533, "std": 0.016051139827514223, "repeat": 10, "number": 1 }, { "ci_99": [0.12480448599995952, 0.15918192600003067], "q_25": 0.13126763100001426, "q_75": 0.13399538424997104, "min": 0.12480448599995952, "max": 0.15918192600003067, "mean": 0.1358136631999912, "std": 0.009833762327292404, "repeat": 10, "number": 1 } ], "params": [["1", "10", "100", "1000", "10000"], ["0"]] }, "overhead_latency.Engines100NoDelayDirectView.time_n_task_non_blocking": { "result": [ 0.08321073450002814, 0.08585588150000945, 0.08603831250002258, 0.08665684999999712, 0.10200595550000457 ], "stats": [ { "ci_99": [0.07668241999999736, 0.09804530500002784], "q_25": 0.07795295375001388, "q_75": 0.0899571922499689, "min": 0.07668241999999736, "max": 0.09804530500002784, "mean": 0.08471881400000711, "std": 0.0071606989394248045, "repeat": 10, "number": 1 }, { "ci_99": [0.0806060939999611, 0.09883270399996036], "q_25": 0.08175916474999667, "q_75": 0.09190194475000624, "min": 0.0806060939999611, "max": 0.09883270399996036, "mean": 0.08719032649999008, "std": 0.006047378785648209, "repeat": 10, "number": 1 }, { "ci_99": [0.0803318860000104, 0.09443869000000404], "q_25": 0.08271143425001526, "q_75": 0.0908758537500205, "min": 0.0803318860000104, "max": 0.09443869000000404, "mean": 0.08667232800001443, "std": 0.00475365660477663, "repeat": 10, "number": 1 }, { "ci_99": [0.0820536290000291, 0.10057517399997096], "q_25": 0.08416176725003766, "q_75": 0.0942066117499678, "min": 0.0820536290000291, "max": 0.10057517399997096, "mean": 0.08884640979999858, "std": 0.006319006562835812, "repeat": 10, "number": 1 }, { "ci_99": [0.0917681780000521, 0.12000426700001299], "q_25": 0.09953949074999002, "q_75": 0.10683371775000694, "min": 0.0917681780000521, "max": 0.12000426700001299, "mean": 0.10404428690001169, "std": 0.007718219594006622, "repeat": 10, "number": 1 } ], "params": [["1", "10", "100", "1000", "10000"], ["0"]] }, "overhead_latency.Engines100NoDelayDirectView.time_n_tasks": { "result": [ 0.07868351199996937, 0.08449962449998338, 0.08632050250002976, 0.08567083400001252, 0.10535847299996703 ], "stats": [ { "ci_99": [0.07502171300001237, 0.09087533499996425], "q_25": 0.07825124199997902, "q_75": 0.07958493499999975, "min": 0.07502171300001237, "max": 0.09087533499996425, "mean": 0.08034763319998887, "std": 0.004555586554542441, "repeat": 10, "number": 1 }, { "ci_99": [0.08168634100002237, 0.09286589200002027], "q_25": 0.08341055274999576, "q_75": 0.08656831249996344, "min": 0.08168634100002237, "max": 0.09286589200002027, "mean": 0.08542092369999069, "std": 0.0032303995349542702, "repeat": 10, "number": 1 }, { "ci_99": [0.07717162300002656, 0.10495991600004118], "q_25": 0.07960188874997698, "q_75": 0.09016610424995974, "min": 0.07717162300002656, "max": 0.10495991600004118, "mean": 0.08692904839999756, "std": 0.008377327073885393, "repeat": 10, "number": 1 }, { "ci_99": [0.08070632700002989, 0.09710152500002778], "q_25": 0.08240411274998394, "q_75": 0.08660780224997211, "min": 0.08070632700002989, "max": 0.09710152500002778, "mean": 0.0857863061000046, "std": 0.004533647855079917, "repeat": 10, "number": 1 }, { "ci_99": [0.1001413700000171, 0.10923250100000814], "q_25": 0.10148200449999933, "q_75": 0.10811320099998056, "min": 0.1001413700000171, "max": 0.10923250100000814, "mean": 0.10486635919998548, "std": 0.00334896179452144, "repeat": 10, "number": 1 } ], "params": [["1", "10", "100", "1000", "10000"], ["0"]] }, "overhead_latency.Engines100NoDelayLoadBalanced.time_n_task_non_blocking": { "result": [ 0.007612590499988414, 0.007843423750003353, 0.008112771749992476, 0.00820070950000229, 0.00875249000002043 ], "stats": [ { "ci_99": [0.007314830500007474, 0.007996791000010717], "q_25": 0.007387918874989907, "q_75": 0.007794981750016916, "min": 0.007314830500007474, "max": 0.007996791000010717, "mean": 0.0076173261000008095, "std": 0.00022781092948981522, "repeat": 10, "number": 2 }, { "ci_99": [0.00728223800001615, 0.00844356049998396], "q_25": 0.007691217250012983, "q_75": 0.00803495687497957, "min": 0.00728223800001615, "max": 0.00844356049998396, "mean": 0.007847823299999845, "std": 0.0003437544071523929, "repeat": 10, "number": 2 }, { "ci_99": [0.0074363859999948545, 0.00966716050001537], "q_25": 0.00783742512500396, "q_75": 0.008312487374993793, "min": 0.0074363859999948545, "max": 0.00966716050001537, "mean": 0.008293394599999716, "std": 0.0007143167706553823, "repeat": 10, "number": 2 }, { "ci_99": [0.0075594944999863856, 0.008927788999983477], "q_25": 0.007914641999988703, "q_75": 0.008443321249984592, "min": 0.0075594944999863856, "max": 0.008927788999983477, "mean": 0.008218548299993245, "std": 0.0004178530079687763, "repeat": 10, "number": 2 }, { "ci_99": [0.00810626799997749, 0.009596438999977863], "q_25": 0.008635209624998197, "q_75": 0.008934097500009841, "min": 0.00810626799997749, "max": 0.009596438999977863, "mean": 0.00881442480000203, "std": 0.00038384872588990987, "repeat": 10, "number": 2 } ], "params": [["1", "10", "100", "1000", "10000"], ["0"]] }, "overhead_latency.Engines100NoDelayLoadBalanced.time_n_tasks": { "result": [ 0.007506732750002243, 0.007422871999992253, 0.007644153249998453, 0.00768481349999206, 0.008624351249991946 ], "stats": [ { "ci_99": [0.0071294205000072, 0.008924292999978434], "q_25": 0.0072833242499896755, "q_75": 0.00785360237499333, "min": 0.0071294205000072, "max": 0.008924292999978434, "mean": 0.007642465449993097, "std": 0.0005119459367962547, "repeat": 10, "number": 2 }, { "ci_99": [0.006983195499998374, 0.008010475499986569], "q_25": 0.007242653875017879, "q_75": 0.007631507374995294, "min": 0.006983195499998374, "max": 0.008010475499986569, "mean": 0.007435970399998837, "std": 0.00028809269007160093, "repeat": 10, "number": 2 }, { "ci_99": [0.007136196499999414, 0.008158534499983716], "q_25": 0.007476072000002887, "q_75": 0.007923309125004607, "min": 0.007136196499999414, "max": 0.008158534499983716, "mean": 0.007658622649998392, "std": 0.0003070166743574603, "repeat": 10, "number": 2 }, { "ci_99": [0.007397307500013994, 0.008174612499999512], "q_25": 0.007542984375014328, "q_75": 0.007971008125018386, "min": 0.007397307500013994, "max": 0.008174612499999512, "mean": 0.007749572950007178, "std": 0.00025029003659232375, "repeat": 10, "number": 2 }, { "ci_99": [0.008194997999993348, 0.009179910999989715], "q_25": 0.008284498875013924, "q_75": 0.00899339100000418, "min": 0.008194997999993348, "max": 0.009179910999989715, "mean": 0.008640680649997989, "std": 0.00037360347309639005, "repeat": 10, "number": 2 } ], "params": [["1", "10", "100", "1000", "10000"], ["0"]] }, "overhead_latency.Engines100NoDelaySpanningTree.time_n_task_non_blocking": { "result": [ 0.060596371499997304, 0.059972810000033405, 0.061502429500023936, 0.063341134500007, 0.08811786699999402 ], "stats": [ { "ci_99": [0.054052452000007634, 0.06459923299996717], "q_25": 0.05819133024999701, "q_75": 0.061784701749985516, "min": 0.054052452000007634, "max": 0.06459923299996717, "mean": 0.05993178789999547, "std": 0.0032732905796410507, "repeat": 10, "number": 1 }, { "ci_99": [0.056152107000002616, 0.06584728100000348], "q_25": 0.05825526499998546, "q_75": 0.06211414824997519, "min": 0.056152107000002616, "max": 0.06584728100000348, "mean": 0.06037621910001008, "std": 0.0029648397108950095, "repeat": 10, "number": 1 }, { "ci_99": [0.05830663699998695, 0.10847085900002185], "q_25": 0.06034623499998304, "q_75": 0.06445428949997734, "min": 0.05830663699998695, "max": 0.10847085900002185, "mean": 0.06639253139999823, "std": 0.01421124513122592, "repeat": 10, "number": 1 }, { "ci_99": [0.06110534500004405, 0.10486473999998225], "q_25": 0.061836874750014204, "q_75": 0.06755790500004366, "min": 0.06110534500004405, "max": 0.10486473999998225, "mean": 0.0681601318000105, "std": 0.012551528932052455, "repeat": 10, "number": 1 }, { "ci_99": [0.08195016700000224, 0.09163254200001347], "q_25": 0.08543544574996531, "q_75": 0.08913413125000602, "min": 0.08195016700000224, "max": 0.09163254200001347, "mean": 0.08717886149999572, "std": 0.003160998637886942, "repeat": 10, "number": 1 } ], "params": [["1", "10", "100", "1000", "10000"], ["0"]] }, "overhead_latency.Engines100NoDelaySpanningTree.time_n_tasks": { "result": [ 0.05913984500000424, 0.06076595250002015, 0.06002303500002881, 0.061960370000008425, 0.08563842749998685 ], "stats": [ { "ci_99": [0.0571994069999846, 0.065569188999973], "q_25": 0.058162320000022305, "q_75": 0.060333451999994736, "min": 0.0571994069999846, "max": 0.065569188999973, "mean": 0.059783004899998105, "std": 0.002319533191270233, "repeat": 10, "number": 1 }, { "ci_99": [0.05565591800001357, 0.09377706399999397], "q_25": 0.05918519149999213, "q_75": 0.06294213099998558, "min": 0.05565591800001357, "max": 0.09377706399999397, "mean": 0.06625951000000327, "std": 0.012786275858080377, "repeat": 10, "number": 1 }, { "ci_99": [0.05545795599999792, 0.1102493629999799], "q_25": 0.05775650525001197, "q_75": 0.06153779875002385, "min": 0.05545795599999792, "max": 0.1102493629999799, "mean": 0.06431048760000521, "std": 0.015450549512406184, "repeat": 10, "number": 1 }, { "ci_99": [0.05991626599995925, 0.10040716299999985], "q_25": 0.0603160487499963, "q_75": 0.06399918850000574, "min": 0.05991626599995925, "max": 0.10040716299999985, "mean": 0.06574682380000355, "std": 0.011671796527738797, "repeat": 10, "number": 1 }, { "ci_99": [0.08077203099998087, 0.09683841800000437], "q_25": 0.08227686225001207, "q_75": 0.0880761060000026, "min": 0.08077203099998087, "max": 0.09683841800000437, "mean": 0.08600601210000036, "std": 0.004617183204768113, "repeat": 10, "number": 1 } ], "params": [["1", "10", "100", "1000", "10000"], ["0"]] }, "overhead_latency.Engines10BroadcastCoalescing.time_n_tasks": { "result": [ 0.010342398500014838, 0.11068819049998524, 0.010295906250007647, 0.1115872299999694, 0.010706903750005381, 0.1110818674999905 ], "stats": [ { "ci_99": [0.00938776600000324, 0.01187117000000626], "q_25": 0.009924411875005035, "q_75": 0.01096938824998972, "min": 0.00938776600000324, "max": 0.01187117000000626, "mean": 0.010507290600003216, "std": 0.0007652571833550811, "repeat": 10, "number": 2 }, { "ci_99": [0.11010687200001712, 0.11181257600003391], "q_25": 0.11059112974999152, "q_75": 0.11131386974999202, "min": 0.11010687200001712, "max": 0.11181257600003391, "mean": 0.11087792390000004, "std": 0.0005211765336212826, "repeat": 10, "number": 1 }, { "ci_99": [0.009460581500007947, 0.011227016500015452], "q_25": 0.009998676125007933, "q_75": 0.010633453249987213, "min": 0.009460581500007947, "max": 0.011227016500015452, "mean": 0.01030697840000414, "std": 0.0004744070254298093, "repeat": 10, "number": 2 }, { "ci_99": [0.11090828300001476, 0.11225290900000573], "q_25": 0.11129523524996898, "q_75": 0.11181254449998335, "min": 0.11090828300001476, "max": 0.11225290900000573, "mean": 0.11156877649999046, "std": 0.0004239038778165732, "repeat": 10, "number": 1 }, { "ci_99": [0.009988870000000816, 0.011538037500002929], "q_25": 0.010390541375009832, "q_75": 0.011037725624987615, "min": 0.009988870000000816, "max": 0.011538037500002929, "mean": 0.010722927949998962, "std": 0.0004817230351851279, "repeat": 10, "number": 2 }, { "ci_99": [0.11008263200000101, 0.11161907299998575], "q_25": 0.11088611250001179, "q_75": 0.11142514225001321, "min": 0.11008263200000101, "max": 0.11161907299998575, "mean": 0.11102426969999897, "std": 0.0004888361608705155, "repeat": 10, "number": 1 } ], "params": [ ["1", "10", "100"], ["0", "0.1"] ] }, "overhead_latency.Engines10BroadcastNonCoalescing.time_n_tasks": { "result": [ 0.013065466500023604, 0.1136708464999856, 0.013480717499987804, 0.11371189999999842, 0.013601078999982974, 0.11409122050002907 ], "stats": [ { "ci_99": [0.012436364999985017, 0.014170027999966806], "q_25": 0.012773360249980215, "q_75": 0.013624220749974825, "min": 0.012436364999985017, "max": 0.014170027999966806, "mean": 0.013179520999995021, "std": 0.0005273268980745825, "repeat": 10, "number": 1 }, { "ci_99": [0.11305438599998752, 0.11727425300000505], "q_25": 0.113323734249974, "q_75": 0.11381291400002169, "min": 0.11305438599998752, "max": 0.11727425300000505, "mean": 0.11391434819999517, "std": 0.0011630056515304398, "repeat": 10, "number": 1 }, { "ci_99": [0.012644760000000588, 0.01595068699998592], "q_25": 0.01317403250003224, "q_75": 0.014306180250017064, "min": 0.012644760000000588, "max": 0.01595068699998592, "mean": 0.013821579200003953, "std": 0.0009865791204733529, "repeat": 10, "number": 1 }, { "ci_99": [0.11313538400003154, 0.11424223400001665], "q_25": 0.113294080249986, "q_75": 0.11395143024998333, "min": 0.11313538400003154, "max": 0.11424223400001665, "mean": 0.1136695641000017, "std": 0.0003804545602588676, "repeat": 10, "number": 1 }, { "ci_99": [0.01238308199998528, 0.014708150999979352], "q_25": 0.012941234000024338, "q_75": 0.014487674250005966, "min": 0.01238308199998528, "max": 0.014708150999979352, "mean": 0.013651616399994283, "std": 0.0008007272002561981, "repeat": 10, "number": 1 }, { "ci_99": [0.11296692499996652, 0.11468541499999674], "q_25": 0.11368310949998772, "q_75": 0.11437825049999617, "min": 0.11296692499996652, "max": 0.11468541499999674, "mean": 0.1140125697999963, "std": 0.0005133247033206382, "repeat": 10, "number": 1 } ], "params": [ ["1", "10", "100"], ["0", "0.1"] ] }, "overhead_latency.Engines10BroadcastSpanningTree.time_n_tasks": { "result": [ 0.013949346000032392, 0.11400716700001112, 0.014296026000010897, 0.1145388559999958, 0.01374125499998513, 0.11515308149998305 ], "stats": [ { "ci_99": [0.01319326700001966, 0.015310097999986283], "q_25": 0.01352056499996479, "q_75": 0.014338422250006033, "min": 0.01319326700001966, "max": 0.015310097999986283, "mean": 0.01402373010000133, "std": 0.0007088528559210322, "repeat": 10, "number": 1 }, { "ci_99": [0.11340602199999239, 0.11468107599995392], "q_25": 0.11364022349999914, "q_75": 0.11417725149999569, "min": 0.11340602199999239, "max": 0.11468107599995392, "mean": 0.11397065529999395, "std": 0.0003826165538557706, "repeat": 10, "number": 1 }, { "ci_99": [0.013707331000034628, 0.015244168999970498], "q_25": 0.014093433749991391, "q_75": 0.014806788500024481, "min": 0.013707331000034628, "max": 0.015244168999970498, "mean": 0.01441287850000208, "std": 0.0004795592307511497, "repeat": 10, "number": 1 }, { "ci_99": [0.11383916899995938, 0.11547804500003167], "q_25": 0.11437071025001444, "q_75": 0.11476570575000267, "min": 0.11383916899995938, "max": 0.11547804500003167, "mean": 0.11456282919999694, "std": 0.00041436303160013457, "repeat": 10, "number": 1 }, { "ci_99": [0.013222795999979553, 0.01598491199996488], "q_25": 0.013363089000009154, "q_75": 0.014877109499991548, "min": 0.013222795999979553, "max": 0.01598491199996488, "mean": 0.0141476404999878, "std": 0.0009428221927385346, "repeat": 10, "number": 1 }, { "ci_99": [0.11442017699999951, 0.11585973000001104], "q_25": 0.11475206849999608, "q_75": 0.11565066374997457, "min": 0.11442017699999951, "max": 0.11585973000001104, "mean": 0.11517306789999679, "std": 0.0005142616688020424, "repeat": 10, "number": 1 } ], "params": [ ["1", "10", "100"], ["0", "0.1"] ] }, "overhead_latency.Engines10DirectView.time_n_tasks": { "result": [ 0.012353486999984398, 0.11329958500002135, 0.012737898500006395, 0.11360939150003446, 0.012521433999978626, 0.11369198450000795 ], "stats": [ { "ci_99": [0.011894568000002437, 0.014674812000009752], "q_25": 0.012134413250009857, "q_75": 0.01262419374999979, "min": 0.011894568000002437, "max": 0.014674812000009752, "mean": 0.012598115000002963, "std": 0.0007831693654713593, "repeat": 10, "number": 1 }, { "ci_99": [0.11313036999996484, 0.11646784900000284], "q_25": 0.11325327475002211, "q_75": 0.11364418275002208, "min": 0.11313036999996484, "max": 0.11646784900000284, "mean": 0.11368136270001514, "std": 0.000952730560027431, "repeat": 10, "number": 1 }, { "ci_99": [0.012003622000008818, 0.013912302999983694], "q_25": 0.01236808999998118, "q_75": 0.013608033499977523, "min": 0.012003622000008818, "max": 0.013912302999983694, "mean": 0.012953415099991617, "std": 0.000683636702765439, "repeat": 10, "number": 1 }, { "ci_99": [0.11286617999996906, 0.11494534099995235], "q_25": 0.1131978649999752, "q_75": 0.11376546674998167, "min": 0.11286617999996906, "max": 0.11494534099995235, "mean": 0.11366664519998722, "std": 0.0006105414113005525, "repeat": 10, "number": 1 }, { "ci_99": [0.012052935999975034, 0.013149068999950941], "q_25": 0.012468856249981286, "q_75": 0.012877604999985692, "min": 0.012052935999975034, "max": 0.013149068999950941, "mean": 0.012614332999982025, "std": 0.00035042453099992725, "repeat": 10, "number": 1 }, { "ci_99": [0.11278879299999289, 0.1147215499999561], "q_25": 0.11325943775000269, "q_75": 0.11419776174999186, "min": 0.11278879299999289, "max": 0.1147215499999561, "mean": 0.11372977419999301, "std": 0.0005855695665243569, "repeat": 10, "number": 1 } ], "params": [ ["1", "10", "100"], ["0", "0.1"] ] }, "overhead_latency.Engines10LoadBalanced.time_n_tasks": { "result": [ 0.006798044500001765, 0.10773655549999717, 0.0068299067500134925, 0.10786797400001547, 0.007079758250000623, 0.1077139625000143 ], "stats": [ { "ci_99": [0.006416340500010165, 0.007186282000020583], "q_25": 0.006639413625002533, "q_75": 0.0070131222500080526, "min": 0.006416340500010165, "max": 0.007186282000020583, "mean": 0.006826465400007464, "std": 0.0002406415287981878, "repeat": 10, "number": 2 }, { "ci_99": [0.10747155100000327, 0.10830131699998446], "q_25": 0.10769354924997288, "q_75": 0.10795055774997309, "min": 0.10747155100000327, "max": 0.10830131699998446, "mean": 0.1078232428999911, "std": 0.00021964919048617407, "repeat": 10, "number": 1 }, { "ci_99": [0.006548748499994872, 0.007124722500009284], "q_25": 0.0067203950000020996, "q_75": 0.006989748125000972, "min": 0.006548748499994872, "max": 0.007124722500009284, "mean": 0.006842631950004829, "std": 0.00017219598782053158, "repeat": 10, "number": 2 }, { "ci_99": [0.10766593700003568, 0.10818034700002954], "q_25": 0.1078289407499824, "q_75": 0.10794383175000632, "min": 0.10766593700003568, "max": 0.10818034700002954, "mean": 0.10788854880000827, "std": 0.0001299637269629865, "repeat": 10, "number": 1 }, { "ci_99": [0.006528279000008297, 0.007463845499984245], "q_25": 0.006820281999999622, "q_75": 0.00720160112499002, "min": 0.006528279000008297, "max": 0.007463845499984245, "mean": 0.007024097649997429, "std": 0.00026790347759086844, "repeat": 10, "number": 2 }, { "ci_99": [0.10724866300000713, 0.10802916099999038], "q_25": 0.10758263999997553, "q_75": 0.10792236924997667, "min": 0.10724866300000713, "max": 0.10802916099999038, "mean": 0.10770371889999523, "std": 0.00024489664027174186, "repeat": 10, "number": 1 } ], "params": [ ["1", "10", "100"], ["0", "0.1"] ] }, "overhead_latency.Engines1BroadcastCoalescing.time_n_tasks": { "result": [ 0.00580383199999801, 0.10701007649998928, 0.0060535367500023085, 0.10690705100000741, 0.005763824249996219, 0.10713692900000638 ], "stats": [ { "ci_99": [0.005490944499996431, 0.006452631000001929], "q_25": 0.005623577374997524, "q_75": 0.006047819374991548, "min": 0.005490944499996431, "max": 0.006452631000001929, "mean": 0.005872373499997252, "std": 0.00030535558744447554, "repeat": 10, "number": 2 }, { "ci_99": [0.10670902100002877, 0.10774518199997374], "q_25": 0.10689468224997256, "q_75": 0.10722950550000121, "min": 0.10670902100002877, "max": 0.10774518199997374, "mean": 0.10711835899999186, "std": 0.00033825070638599864, "repeat": 10, "number": 1 }, { "ci_99": [0.005687090500003933, 0.007101687500011167], "q_25": 0.005866456999996217, "q_75": 0.006616988125003331, "min": 0.005687090500003933, "max": 0.007101687500011167, "mean": 0.00625637960000347, "std": 0.0004903284266641392, "repeat": 10, "number": 2 }, { "ci_99": [0.10650567600004024, 0.10786452199999985], "q_25": 0.10680215349999855, "q_75": 0.10711288400001706, "min": 0.10650567600004024, "max": 0.10786452199999985, "mean": 0.10702109860000633, "std": 0.00037522211189445353, "repeat": 10, "number": 1 }, { "ci_99": [0.005346287500003655, 0.006516048000008823], "q_25": 0.005571133250001026, "q_75": 0.006015675749999616, "min": 0.005346287500003655, "max": 0.006516048000008823, "mean": 0.005834421450001059, "std": 0.000384012344167445, "repeat": 10, "number": 2 }, { "ci_99": [0.10673420000000533, 0.10728072000000566], "q_25": 0.10696706525001787, "q_75": 0.10720215524997911, "min": 0.10673420000000533, "max": 0.10728072000000566, "mean": 0.10707093110000301, "std": 0.00019284102102502232, "repeat": 10, "number": 1 } ], "params": [ ["1", "10", "100"], ["0", "0.1"] ] }, "overhead_latency.Engines1BroadcastNonCoalescing.time_n_tasks": { "result": [ 0.006066915749983082, 0.10690118200002985, 0.006173574750008015, 0.1073657809999986, 0.005955037500001481, 0.10735907649998921 ], "stats": [ { "ci_99": [0.005707892499998479, 0.006635734500008539], "q_25": 0.005841979249993301, "q_75": 0.006294400624994978, "min": 0.005707892499998479, "max": 0.006635734500008539, "mean": 0.006094647049994251, "std": 0.00027721298624956307, "repeat": 10, "number": 2 }, { "ci_99": [0.10656262499998093, 0.10748673399996278], "q_25": 0.10676242574996309, "q_75": 0.1070311155000212, "min": 0.10656262499998093, "max": 0.10748673399996278, "mean": 0.10694017550000012, "std": 0.00026956186063089313, "repeat": 10, "number": 1 }, { "ci_99": [0.005753626500023756, 0.0065002414999923985], "q_25": 0.0059197158749952905, "q_75": 0.006326844999996695, "min": 0.005753626500023756, "max": 0.0065002414999923985, "mean": 0.0061325886500043225, "std": 0.00024475031513394906, "repeat": 10, "number": 2 }, { "ci_99": [0.10673260599998002, 0.10774665299999242], "q_25": 0.10728773049999063, "q_75": 0.10752171649997422, "min": 0.10673260599998002, "max": 0.10774665299999242, "mean": 0.10735920579999743, "std": 0.00027197255332649795, "repeat": 10, "number": 1 }, { "ci_99": [0.00565651549999302, 0.006512360000016315], "q_25": 0.005694663874990624, "q_75": 0.006327289499999722, "min": 0.00565651549999302, "max": 0.006512360000016315, "mean": 0.006007054900001663, "std": 0.0003175994726180173, "repeat": 10, "number": 2 }, { "ci_99": [0.1068346910000173, 0.10778325799998356], "q_25": 0.1070098934999919, "q_75": 0.10767872000000978, "min": 0.1068346910000173, "max": 0.10778325799998356, "mean": 0.10733860589999722, "std": 0.00034666006620733073, "repeat": 10, "number": 1 } ], "params": [ ["1", "10", "100"], ["0", "0.1"] ] }, "overhead_latency.Engines1BroadcastSpanningTree.time_n_tasks": { "result": [ 0.009846644250004033, 0.11093607299997643, 0.010313800500000525, 0.11082821250002439, 0.010098358999997004, 0.11095543400000452 ], "stats": [ { "ci_99": [0.009266918999998097, 0.010323443999993742], "q_25": 0.009734381875006193, "q_75": 0.009998867124998867, "min": 0.009266918999998097, "max": 0.010323443999993742, "mean": 0.009863712600002827, "std": 0.00028360500422028344, "repeat": 10, "number": 2 }, { "ci_99": [0.11081427400000621, 0.11144720999999436], "q_25": 0.11090051249999533, "q_75": 0.1111665470000247, "min": 0.11081427400000621, "max": 0.11144720999999436, "mean": 0.1110518198999955, "std": 0.00021244592012301255, "repeat": 10, "number": 1 }, { "ci_99": [0.010154614499981562, 0.010607061999991174], "q_25": 0.010217393625012505, "q_75": 0.010548507499997584, "min": 0.010154614499981562, "max": 0.010607061999991174, "mean": 0.01036785919999943, "std": 0.00016796843491472557, "repeat": 10, "number": 2 }, { "ci_99": [0.11071048799999517, 0.11154872900004875], "q_25": 0.11077088475001062, "q_75": 0.1109051995000101, "min": 0.11071048799999517, "max": 0.11154872900004875, "mean": 0.11089301440000554, "std": 0.00022922437183006087, "repeat": 10, "number": 1 }, { "ci_99": [0.009282295499986049, 0.010981822500014005], "q_25": 0.009749653499987687, "q_75": 0.010356978625004842, "min": 0.009282295499986049, "max": 0.010981822500014005, "mean": 0.010052491499996563, "std": 0.00048728712452331916, "repeat": 10, "number": 2 }, { "ci_99": [0.11045435400001224, 0.11208057100003543], "q_25": 0.1108380177499555, "q_75": 0.11125612299996135, "min": 0.11045435400001224, "max": 0.11208057100003543, "mean": 0.11104267699998331, "std": 0.00043896459254696404, "repeat": 10, "number": 1 } ], "params": [ ["1", "10", "100"], ["0", "0.1"] ] }, "overhead_latency.Engines1DirectView.time_n_tasks": { "result": [ 0.004918859833329256, 0.10628983750001453, 0.005223731166665857, 0.10632228349999195, 0.004947509666664018, 0.10636036549999517 ], "stats": [ { "ci_99": [0.004593943666653407, 0.0050897106666714835], "q_25": 0.004890356583331368, "q_75": 0.005049248083338398, "min": 0.004593943666653407, "max": 0.0050897106666714835, "mean": 0.004924603199998502, "std": 0.0001433226443046432, "repeat": 10, "number": 3 }, { "ci_99": [0.10599649300002056, 0.10679887800000643], "q_25": 0.10616759150001087, "q_75": 0.10649286725001161, "min": 0.10599649300002056, "max": 0.10679887800000643, "mean": 0.10635559120001403, "std": 0.00025475043477495756, "repeat": 10, "number": 1 }, { "ci_99": [0.004598141666671533, 0.005806559333336736], "q_25": 0.005108311250012321, "q_75": 0.005431084416665992, "min": 0.004598141666671533, "max": 0.005806559333336736, "mean": 0.005244560000003654, "std": 0.00032045974697919756, "repeat": 10, "number": 3 }, { "ci_99": [0.10597897299999204, 0.10683787699997538], "q_25": 0.10611171450000256, "q_75": 0.10646534924998718, "min": 0.10597897299999204, "max": 0.10683787699997538, "mean": 0.10631824379998989, "std": 0.0002443616584449611, "repeat": 10, "number": 1 }, { "ci_99": [0.004584897000010339, 0.005539155666667739], "q_25": 0.004881854500008369, "q_75": 0.0050891511666530205, "min": 0.004584897000010339, "max": 0.005539155666667739, "mean": 0.004988209366664857, "std": 0.00024261671003970167, "repeat": 10, "number": 3 }, { "ci_99": [0.10591308599998683, 0.10653976199995441], "q_25": 0.10617747925000742, "q_75": 0.10650054250001517, "min": 0.10591308599998683, "max": 0.10653976199995441, "mean": 0.1063131478999992, "std": 0.00020698018962979215, "repeat": 10, "number": 1 } ], "params": [ ["1", "10", "100"], ["0", "0.1"] ] }, "overhead_latency.Engines1LoadBalanced.time_n_tasks": { "result": [ 0.006451550500003123, 0.1075689349999891, 0.006596619500001566, 0.10764660199998843, 0.006712516499987942, 0.10758954150000477 ], "stats": [ { "ci_99": [0.006150790500015546, 0.006777280499989047], "q_25": 0.006374264750000691, "q_75": 0.006659618249997834, "min": 0.006150790500015546, "max": 0.006777280499989047, "mean": 0.0064923202000017, "std": 0.00018493313126402767, "repeat": 10, "number": 2 }, { "ci_99": [0.10734961100001783, 0.10781926300001032], "q_25": 0.10744279899999754, "q_75": 0.10768326024999908, "min": 0.10734961100001783, "max": 0.10781926300001032, "mean": 0.10756804619999798, "std": 0.00014236872575154602, "repeat": 10, "number": 1 }, { "ci_99": [0.005655859499995586, 0.007308461999997462], "q_25": 0.006050254499996299, "q_75": 0.006760975500014865, "min": 0.005655859499995586, "max": 0.007308461999997462, "mean": 0.006475947450002195, "std": 0.0005573522999172478, "repeat": 10, "number": 2 }, { "ci_99": [0.10719828099996676, 0.10819126399997003], "q_25": 0.10747629050003127, "q_75": 0.10780966800000158, "min": 0.10719828099996676, "max": 0.10819126399997003, "mean": 0.10764268579999907, "std": 0.0002927566576182318, "repeat": 10, "number": 1 }, { "ci_99": [0.0062847565000083705, 0.0074590744999909475], "q_25": 0.006516993500007118, "q_75": 0.007052356875007604, "min": 0.0062847565000083705, "max": 0.0074590744999909475, "mean": 0.0067949578999986215, "std": 0.000359902559530259, "repeat": 10, "number": 2 }, { "ci_99": [0.10715169900004184, 0.10786207799998238], "q_25": 0.10747836250001797, "q_75": 0.10769234024999719, "min": 0.10715169900004184, "max": 0.10786207799998238, "mean": 0.1075503961000038, "std": 0.000213233772044126, "repeat": 10, "number": 1 } ], "params": [ ["1", "10", "100"], ["0", "0.1"] ] }, "throughput.NumpyArrayBroadcast.time_broadcast": { "result": [ 0.0007018334999997933, 0.0007764117499980167, 0.0014829829999989386, 0.008736860249996425, 0.07488802999998256, 0.7653585099999987, 0.0032046291666697852, 0.003537573499997393, 0.004233403625001131, 0.013164804999988178, 0.07539469649998409, 0.767996098999987, 0.008561509750009577, 0.008641060000002199, 0.008291029000005778, 0.017436018000012155, 0.08937925750001341, 0.8064283754999906, 0.023081000000019003, 0.015477267500017433, 0.06034955400002673, 0.02486107799998649, 0.08942550999998389, 0.7818872155000065 ], "stats": [ { "ci_99": [0.0006884874666639007, 0.0007294268666669268], "q_25": 0.0006961803166670203, "q_75": 0.0007092950666664896, "min": 0.0006884874666639007, "max": 0.0007294268666669268, "mean": 0.0007036452333329635, "std": 0.000010982266625557334, "repeat": 10, "number": 15 }, { "ci_99": [0.0007525150000000329, 0.0008006843571430571], "q_25": 0.0007701631964291015, "q_75": 0.0007864457321440049, "min": 0.0007525150000000329, "max": 0.0008006843571430571, "mean": 0.0007769404642857579, "std": 0.000013195914656804267, "repeat": 10, "number": 14 }, { "ci_99": [0.0014536971249938802, 0.0015080322499940735], "q_25": 0.0014657444375014705, "q_75": 0.0014936003124947916, "min": 0.0014536971249938802, "max": 0.0015080322499940735, "mean": 0.0014811201499973948, "std": 0.000018625111597510308, "repeat": 10, "number": 8 }, { "ci_99": [0.008458726999975852, 0.010098179999999957], "q_25": 0.008500389499985772, "q_75": 0.009199842750000187, "min": 0.008458726999975852, "max": 0.010098179999999957, "mean": 0.008922854349992803, "std": 0.0005150131699455924, "repeat": 10, "number": 2 }, { "ci_99": [0.07364143399996692, 0.08071787299996913], "q_25": 0.07450673350000159, "q_75": 0.07787832399998251, "min": 0.07364143399996692, "max": 0.08071787299996913, "mean": 0.07610269739999467, "std": 0.0021916200970678776, "repeat": 10, "number": 1 }, { "ci_99": [0.7612878489999844, 0.7684770460000436], "q_25": 0.764713977999989, "q_75": 0.7658594517500035, "min": 0.7612878489999844, "max": 0.7684770460000436, "mean": 0.7650947626000004, "std": 0.001809972203752431, "repeat": 10, "number": 1 }, { "ci_99": [0.002245835500000718, 0.005581166833337647], "q_25": 0.002965673124994813, "q_75": 0.003619961791663684, "min": 0.002245835500000718, "max": 0.005581166833337647, "mean": 0.0035587568833326103, "std": 0.0010243696126793892, "repeat": 10, "number": 6 }, { "ci_99": [0.0024660703333362712, 0.006110625333330215], "q_25": 0.0032202523333353383, "q_75": 0.003733255708337898, "min": 0.0024660703333362712, "max": 0.006110625333330215, "mean": 0.0037031452666676985, "std": 0.0009120205356108765, "repeat": 10, "number": 6 }, { "ci_99": [0.0027476812499998005, 0.005464117249999845], "q_25": 0.003628259562496794, "q_75": 0.0049406289374900325, "min": 0.0027476812499998005, "max": 0.005464117249999845, "mean": 0.004147111099999279, "std": 0.0009013464723895025, "repeat": 10, "number": 4 }, { "ci_99": [0.01001150150000285, 0.018944243500016], "q_25": 0.011049709874981772, "q_75": 0.015485977124988892, "min": 0.01001150150000285, "max": 0.018944243500016, "mean": 0.013458073149996608, "std": 0.0027902622053378873, "repeat": 10, "number": 2 }, { "ci_99": [0.0746321670000043, 0.08531274699998903], "q_25": 0.07501309925000044, "q_75": 0.07600346149999382, "min": 0.0746321670000043, "max": 0.08531274699998903, "mean": 0.0768364902999906, "std": 0.003309863717411174, "repeat": 10, "number": 1 }, { "ci_99": [0.7649792170000183, 0.7905390089999855], "q_25": 0.7664179109999765, "q_75": 0.7700450512500083, "min": 0.7649792170000183, "max": 0.7905390089999855, "mean": 0.7702374999999961, "std": 0.007128972189071394, "repeat": 10, "number": 1 }, { "ci_99": [0.007002887999988161, 0.024132705499994245], "q_25": 0.008103620999996508, "q_75": 0.0118875506249978, "min": 0.007002887999988161, "max": 0.024132705499994245, "mean": 0.010735920350001038, "std": 0.00487956072031332, "repeat": 10, "number": 2 }, { "ci_99": [0.006767223499991815, 0.021009798500017496], "q_25": 0.007872065500002634, "q_75": 0.01029291450001324, "min": 0.006767223499991815, "max": 0.021009798500017496, "mean": 0.009919628350007769, "std": 0.0039102872161942736, "repeat": 10, "number": 2 }, { "ci_99": [0.007151559500016447, 0.022805809999994153], "q_25": 0.007596244374994399, "q_75": 0.009347842375021287, "min": 0.007151559500016447, "max": 0.022805809999994153, "mean": 0.009748960200002443, "std": 0.00442532171597064, "repeat": 10, "number": 2 }, { "ci_99": [0.014004899999974896, 0.02240654000001996], "q_25": 0.01656812175001221, "q_75": 0.019562435000025857, "min": 0.014004899999974896, "max": 0.02240654000001996, "mean": 0.01786438030000568, "std": 0.0023404043017206523, "repeat": 10, "number": 1 }, { "ci_99": [0.0802449320000278, 0.1318586599999776], "q_25": 0.08207426800001372, "q_75": 0.10871444599999336, "min": 0.0802449320000278, "max": 0.1318586599999776, "mean": 0.09622826230000783, "std": 0.016833681807387823, "repeat": 10, "number": 1 }, { "ci_99": [0.7724696669999958, 1.0185414940000328], "q_25": 0.7746022760000102, "q_75": 0.8888426617499903, "min": 0.7724696669999958, "max": 1.0185414940000328, "mean": 0.8453881256999978, "std": 0.08342170999004797, "repeat": 10, "number": 1 }, { "ci_99": [0.012498355999980504, 0.06016509899995981], "q_25": 0.017720889250000482, "q_75": 0.03166712974999086, "min": 0.012498355999980504, "max": 0.06016509899995981, "mean": 0.026840883099993107, "std": 0.01338997216234101, "repeat": 10, "number": 1 }, { "ci_99": [0.012001634999990074, 0.0694166089999726], "q_25": 0.014474447249995137, "q_75": 0.026227258749983662, "min": 0.012001634999990074, "max": 0.0694166089999726, "mean": 0.02317907229999605, "std": 0.016366151323007748, "repeat": 10, "number": 1 }, { "ci_99": [0.014570211999966887, 0.13101808199996867], "q_25": 0.015277614500021741, "q_75": 0.11090126824998947, "min": 0.014570211999966887, "max": 0.13101808199996867, "mean": 0.06464812330000314, "std": 0.049428662383809614, "repeat": 10, "number": 1 }, { "ci_99": [0.018560545000013917, 0.0689415919999874], "q_25": 0.021299726500004112, "q_75": 0.03000328200000979, "min": 0.018560545000013917, "max": 0.0689415919999874, "mean": 0.0303634355999975, "std": 0.014631706216571038, "repeat": 10, "number": 1 }, { "ci_99": [0.08536787399998502, 0.12685157300001038], "q_25": 0.088541600250025, "q_75": 0.0938635569999633, "min": 0.08536787399998502, "max": 0.12685157300001038, "mean": 0.09604393519999235, "std": 0.01402939158920632, "repeat": 10, "number": 1 }, { "ci_99": [0.7726710270000012, 0.9234684610000272], "q_25": 0.7768000107500086, "q_75": 0.8210961535000081, "min": 0.7726710270000012, "max": 0.9234684610000272, "mean": 0.8077378793000036, "std": 0.0461909545718021, "repeat": 10, "number": 1 } ], "params": [ ["1", "10", "50", "100"], ["10", "1000", "10000", "100000", "1000000", "10000000"] ] } }, "params": { "arch": "x86_64", "cpu": "Intel(R) Xeon(R) CPU @ 2.30GHz", "machine": "asv-testing-16", "os": "Linux 4.15.0-1029-gcp", "ram": "16423396", "python": "3.7", "numpy": "" }, "requirements": { "numpy": "" }, "commit_hash": "766bdabf611694c8bf1807677ed3a501bf0b87f2", "date": 1588108958000, "env_name": "conda-py3.7-numpy", "python": "3.7", "profiles": {}, "started_at": { "overhead_latency.EchoManyArgumentsDirectView.time_echo_with_many_arguments": 1588183771496, "overhead_latency.EchoManyArgumentsLoadBalanced.time_echo_with_many_arguments": 1588183774429, "overhead_latency.Engines100NoDelayBroadcastCoalescing.time_n_task_non_blocking": 1588183777662, "overhead_latency.Engines100NoDelayBroadcastCoalescing.time_n_tasks": 1588183781087, "overhead_latency.Engines100NoDelayBroadcastNonCoalescing.time_n_task_non_blocking": 1588183784716, "overhead_latency.Engines100NoDelayBroadcastNonCoalescing.time_n_tasks": 1588183788845, "overhead_latency.Engines100NoDelayDirectView.time_n_task_non_blocking": 1588183792973, "overhead_latency.Engines100NoDelayDirectView.time_n_tasks": 1588183796800, "overhead_latency.Engines100NoDelayLoadBalanced.time_n_task_non_blocking": 1588183800624, "overhead_latency.Engines100NoDelayLoadBalanced.time_n_tasks": 1588183802143, "overhead_latency.Engines100NoDelaySpanningTree.time_n_task_non_blocking": 1588183803662, "overhead_latency.Engines100NoDelaySpanningTree.time_n_tasks": 1588183806748, "overhead_latency.Engines10BroadcastCoalescing.time_n_tasks": 1588183809881, "overhead_latency.Engines10BroadcastNonCoalescing.time_n_tasks": 1588183813207, "overhead_latency.Engines10BroadcastSpanningTree.time_n_tasks": 1588183816535, "overhead_latency.Engines10DirectView.time_n_tasks": 1588183819861, "overhead_latency.Engines10LoadBalanced.time_n_tasks": 1588183823137, "overhead_latency.Engines1BroadcastCoalescing.time_n_tasks": 1588183826313, "overhead_latency.Engines1BroadcastNonCoalescing.time_n_tasks": 1588183829489, "overhead_latency.Engines1BroadcastSpanningTree.time_n_tasks": 1588183832665, "overhead_latency.Engines1DirectView.time_n_tasks": 1588183836092, "overhead_latency.Engines1LoadBalanced.time_n_tasks": 1588183839268, "throughput.NumpyArrayBroadcast.time_broadcast": 1588183842443 }, "ended_at": { "overhead_latency.EchoManyArgumentsDirectView.time_echo_with_many_arguments": 1588183774427, "overhead_latency.EchoManyArgumentsLoadBalanced.time_echo_with_many_arguments": 1588183777661, "overhead_latency.Engines100NoDelayBroadcastCoalescing.time_n_task_non_blocking": 1588183781086, "overhead_latency.Engines100NoDelayBroadcastCoalescing.time_n_tasks": 1588183784715, "overhead_latency.Engines100NoDelayBroadcastNonCoalescing.time_n_task_non_blocking": 1588183788844, "overhead_latency.Engines100NoDelayBroadcastNonCoalescing.time_n_tasks": 1588183792972, "overhead_latency.Engines100NoDelayDirectView.time_n_task_non_blocking": 1588183796799, "overhead_latency.Engines100NoDelayDirectView.time_n_tasks": 1588183800623, "overhead_latency.Engines100NoDelayLoadBalanced.time_n_task_non_blocking": 1588183802142, "overhead_latency.Engines100NoDelayLoadBalanced.time_n_tasks": 1588183803661, "overhead_latency.Engines100NoDelaySpanningTree.time_n_task_non_blocking": 1588183806747, "overhead_latency.Engines100NoDelaySpanningTree.time_n_tasks": 1588183809880, "overhead_latency.Engines10BroadcastCoalescing.time_n_tasks": 1588183813206, "overhead_latency.Engines10BroadcastNonCoalescing.time_n_tasks": 1588183816534, "overhead_latency.Engines10BroadcastSpanningTree.time_n_tasks": 1588183819860, "overhead_latency.Engines10DirectView.time_n_tasks": 1588183823136, "overhead_latency.Engines10LoadBalanced.time_n_tasks": 1588183826312, "overhead_latency.Engines1BroadcastCoalescing.time_n_tasks": 1588183829488, "overhead_latency.Engines1BroadcastNonCoalescing.time_n_tasks": 1588183832664, "overhead_latency.Engines1BroadcastSpanningTree.time_n_tasks": 1588183836091, "overhead_latency.Engines1DirectView.time_n_tasks": 1588183839267, "overhead_latency.Engines1LoadBalanced.time_n_tasks": 1588183842442, "throughput.NumpyArrayBroadcast.time_broadcast": 1588183875803 }, "benchmark_version": { "overhead_latency.EchoManyArgumentsDirectView.time_echo_with_many_arguments": "78b0a9b0deb1bb8db5b3183b398a099a14be98dbe2405a357242604c182fdc32", "overhead_latency.EchoManyArgumentsLoadBalanced.time_echo_with_many_arguments": "075aa340d1d9bc7849ccade3bb11a52ea80cb0f5aac08cb5a9235f51b8148a5a", "overhead_latency.Engines100NoDelayBroadcastCoalescing.time_n_task_non_blocking": "aaabcd7a89a2cf3570e3a02a6418dfd00c5486f73c670cfbfa740d4ce0249805", "overhead_latency.Engines100NoDelayBroadcastCoalescing.time_n_tasks": "4f9f78d7a3958b3e1f57ff8a92434ffd79e50c34496bb89ab3b9c02adcfc7b4f", "overhead_latency.Engines100NoDelayBroadcastNonCoalescing.time_n_task_non_blocking": "501355a716530431dc9ad712eef2586da4c74844eb9bc0a4b15fe209df76cc98", "overhead_latency.Engines100NoDelayBroadcastNonCoalescing.time_n_tasks": "d6aea3efb13a8c7f8183c720a9ae8748e156b3e964096743e50f6776192a33d2", "overhead_latency.Engines100NoDelayDirectView.time_n_task_non_blocking": "b4a361b70ff8cded6ba3baf946466ac49de91ca62bb712838be3bd3af82b3f48", "overhead_latency.Engines100NoDelayDirectView.time_n_tasks": "0ce7c2cf65ce3e7a455b8269cedfce6d2bfa881135128a9ded9438e3d23b9313", "overhead_latency.Engines100NoDelayLoadBalanced.time_n_task_non_blocking": "c0a8da6a1374cf07e2586be9d3ec81ab3ce0beadba6012234a8387bd36a045fd", "overhead_latency.Engines100NoDelayLoadBalanced.time_n_tasks": "b9f74ca7a0ca784a5594708f0a5b06664f2ae8c1b6b71953ec7432a4b6f1272f", "overhead_latency.Engines100NoDelaySpanningTree.time_n_task_non_blocking": "37f2cb970de0182abb248febb297953335ef7be175cd194cf73b38b6c8edbeb3", "overhead_latency.Engines100NoDelaySpanningTree.time_n_tasks": "26b080f3d2b87221dd2125181ecc0ec8ad0696cf772f2d06cdc8ae2b99379c4b", "overhead_latency.Engines10BroadcastCoalescing.time_n_tasks": "e6baa90f15ac58c4a211e617cf9a33fcaf076b3df222cbf966a4b3f7549d02ab", "overhead_latency.Engines10BroadcastNonCoalescing.time_n_tasks": "26226562d0be937e13584cdca9f73d8e87e48c357af3a79420537219bd76b399", "overhead_latency.Engines10BroadcastSpanningTree.time_n_tasks": "78393f5b6454ffe4cc354a4e5ed89652e8db12ca8f9dcd5c01e16bfad81e9aac", "overhead_latency.Engines10DirectView.time_n_tasks": "cfa9ac084c7b8d5268953f3c42714cf3361de876728441cf7432ec6bbf3ccfc3", "overhead_latency.Engines10LoadBalanced.time_n_tasks": "be690f610b5f1810d06e13bdf7483b5255d57984f1eb4ec0eee5137d4835493c", "overhead_latency.Engines1BroadcastCoalescing.time_n_tasks": "e6baa90f15ac58c4a211e617cf9a33fcaf076b3df222cbf966a4b3f7549d02ab", "overhead_latency.Engines1BroadcastNonCoalescing.time_n_tasks": "26226562d0be937e13584cdca9f73d8e87e48c357af3a79420537219bd76b399", "overhead_latency.Engines1BroadcastSpanningTree.time_n_tasks": "78393f5b6454ffe4cc354a4e5ed89652e8db12ca8f9dcd5c01e16bfad81e9aac", "overhead_latency.Engines1DirectView.time_n_tasks": "cfa9ac084c7b8d5268953f3c42714cf3361de876728441cf7432ec6bbf3ccfc3", "overhead_latency.Engines1LoadBalanced.time_n_tasks": "be690f610b5f1810d06e13bdf7483b5255d57984f1eb4ec0eee5137d4835493c", "throughput.NumpyArrayBroadcast.time_broadcast": "898d240d2d6de3bdf0fd6636311bd5ce8754b9c4042a39174957e7a910fadefa" }, "version": 1 } ipython-ipyparallel-14e3c43/benchmarks/results/asv_testing-16-2020-05-04-17-43/000077500000000000000000000000001520071063500261345ustar00rootroot00000000000000ipython-ipyparallel-14e3c43/benchmarks/results/asv_testing-16-2020-05-04-17-43/results.json000066400000000000000000000047061520071063500305370ustar00rootroot00000000000000{ "results": { "throughput.CoalescingBroadcast.time_broadcast": { "result": null, "params": [ ["0", "0.1"], ["1", "10", "50", "100", "200"], ["10", "100", "1000", "10000", "100000", "1000000"] ] }, "throughput.DirectViewBroadCast.time_broadcast": { "result": null, "params": [ ["0", "0.1"], ["1", "10", "50", "100", "200"], ["10", "100", "1000", "10000", "100000", "1000000"] ] }, "throughput.NonCoalescingBroadcast.time_broadcast": { "result": null, "params": [ ["0", "0.1"], ["1", "10", "50", "100", "200"], ["10", "100", "1000", "10000", "100000", "1000000"] ] }, "throughput.SpanningTreeBroadCast.time_broadcast": { "result": null, "params": [ ["0", "0.1"], ["1", "10", "50", "100", "200"], ["10", "100", "1000", "10000", "100000", "1000000"] ] } }, "params": { "arch": "x86_64", "cpu": "Intel(R) Xeon(R) CPU @ 2.30GHz", "machine": "asv-testing-16", "os": "Linux 4.15.0-1029-gcp", "ram": "16423396", "python": "3.7", "numpy": "" }, "requirements": { "numpy": "" }, "commit_hash": "766bdabf611694c8bf1807677ed3a501bf0b87f2", "date": 1588108958000, "env_name": "conda-py3.7-numpy", "python": "3.7", "profiles": {}, "started_at": { "throughput.CoalescingBroadcast.time_broadcast": 1588607341576, "throughput.DirectViewBroadCast.time_broadcast": 1588607371588, "throughput.NonCoalescingBroadcast.time_broadcast": 1588607401077, "throughput.SpanningTreeBroadCast.time_broadcast": 1588607436141 }, "ended_at": { "throughput.CoalescingBroadcast.time_broadcast": 1588607371588, "throughput.DirectViewBroadCast.time_broadcast": 1588607401077, "throughput.NonCoalescingBroadcast.time_broadcast": 1588607436140, "throughput.SpanningTreeBroadCast.time_broadcast": 1588607459984 }, "benchmark_version": { "throughput.CoalescingBroadcast.time_broadcast": "fa34b3be29f11e8e92ff3f69ee3db3cef435c17dc271602df2b926f774e93a8e", "throughput.DirectViewBroadCast.time_broadcast": "fa34b3be29f11e8e92ff3f69ee3db3cef435c17dc271602df2b926f774e93a8e", "throughput.NonCoalescingBroadcast.time_broadcast": "fa34b3be29f11e8e92ff3f69ee3db3cef435c17dc271602df2b926f774e93a8e", "throughput.SpanningTreeBroadCast.time_broadcast": "fa34b3be29f11e8e92ff3f69ee3db3cef435c17dc271602df2b926f774e93a8e" }, "version": 1 } ipython-ipyparallel-14e3c43/benchmarks/results/benchmarks.json000066400000000000000000000240031520071063500246740ustar00rootroot00000000000000{ "throughput.CoalescingAsync.time_async_messages": { "code": "class AsyncMessagesSuite:\n def time_async_messages(self, number_of_engines, number_of_messages):\n replies = []\n for i in range(number_of_messages):\n reply = self.view.apply_async(\n echo, np.array([0] * 1000, dtype=np.int8)\n )\n replies.append(reply)\n for reply in replies:\n reply.get()\n\n def setup(self, number_of_engines, number_of_messages):\n self.client = ipp.Client(profile='asv')\n self.view = get_view(self)\n self.view.targets = list(range(number_of_engines))\n \n wait_for(lambda: len(self.client) >= number_of_engines)", "min_run_count": 2, "name": "throughput.CoalescingAsync.time_async_messages", "number": 0, "param_names": ["Number of engines", "number_of_messages"], "params": [ ["1", "2", "16", "64", "128", "256", "512", "1024"], ["1", "5", "10", "20", "50", "75", "100"] ], "processes": 2, "repeat": 0, "sample_time": 0.01, "timeout": 60, "type": "time", "unit": "seconds", "version": "7d58edbe3c5f17d8c8b9f56b07e36103b6aac63113a081844b4c8ae47c8f9912", "warmup_time": -1 }, "throughput.CoalescingBroadcast.time_broadcast": { "code": "class ThroughputSuite:\n def time_broadcast(self, engines, number_of_bytes):\n self.reply = self.view.apply_sync(\n echo, np.array([0] * number_of_bytes, dtype=np.int8)\n )\n\n def setup(self, number_of_engines, number_of_bytes):\n self.client = ipp.Client(profile='asv')\n self.view = get_view(self)\n self.view.targets = list(range(number_of_engines))\n wait_for(lambda: len(self.client) >= number_of_engines)", "min_run_count": 2, "name": "throughput.CoalescingBroadcast.time_broadcast", "number": 0, "param_names": ["Number of engines", "Number of bytes"], "params": [ ["1", "2", "16", "64", "128", "256", "512", "1024"], ["1000", "10000", "100000", "1000000", "2000000"] ], "processes": 2, "repeat": 0, "sample_time": 0.01, "timeout": 120, "type": "time", "unit": "seconds", "version": "bb46d525dc8242ec0b309ba7667c82bdca00f5c739fbd6e655a6642432442d25", "warmup_time": -1 }, "throughput.CoalescingPush.time_broadcast": { "code": "class PushMessageSuite:\n def time_broadcast(self, engines, number_of_bytes):\n reply = self.view.apply_sync(\n lambda x: None, np.array([0] * number_of_bytes, dtype=np.int8)\n )\n\n def setup(self, number_of_engines, number_of_bytes):\n self.client = ipp.Client(profile='asv')\n self.view = get_view(self)\n self.view.targets = list(range(number_of_engines))\n wait_for(lambda: len(self.client) >= number_of_engines)", "min_run_count": 2, "name": "throughput.CoalescingPush.time_broadcast", "number": 0, "param_names": ["Number of engines", "Number of bytes"], "params": [ ["1", "2", "16", "64", "128", "256", "512", "1024"], ["1000", "10000", "100000", "1000000", "2000000"] ], "processes": 2, "repeat": 0, "sample_time": 0.01, "timeout": 120, "type": "time", "unit": "seconds", "version": "d53ef539a1ba7dda53fcdfdd810c23bcde346a6e936436ffd5a03e8254a38640", "warmup_time": -1 }, "throughput.DirectViewAsync.time_async_messages": { "code": "class AsyncMessagesSuite:\n def time_async_messages(self, number_of_engines, number_of_messages):\n replies = []\n for i in range(number_of_messages):\n reply = self.view.apply_async(\n echo, np.array([0] * 1000, dtype=np.int8)\n )\n replies.append(reply)\n for reply in replies:\n reply.get()\n\n def setup(self, number_of_engines, number_of_messages):\n self.client = ipp.Client(profile='asv')\n self.view = get_view(self)\n self.view.targets = list(range(number_of_engines))\n \n wait_for(lambda: len(self.client) >= number_of_engines)", "min_run_count": 2, "name": "throughput.DirectViewAsync.time_async_messages", "number": 0, "param_names": ["Number of engines", "number_of_messages"], "params": [ ["1", "2", "16", "64", "128", "256", "512", "1024"], ["1", "5", "10", "20", "50", "75", "100"] ], "processes": 2, "repeat": 0, "sample_time": 0.01, "timeout": 60, "type": "time", "unit": "seconds", "version": "7d58edbe3c5f17d8c8b9f56b07e36103b6aac63113a081844b4c8ae47c8f9912", "warmup_time": -1 }, "throughput.DirectViewBroadcast.time_broadcast": { "code": "class ThroughputSuite:\n def time_broadcast(self, engines, number_of_bytes):\n self.reply = self.view.apply_sync(\n echo, np.array([0] * number_of_bytes, dtype=np.int8)\n )\n\n def setup(self, number_of_engines, number_of_bytes):\n self.client = ipp.Client(profile='asv')\n self.view = get_view(self)\n self.view.targets = list(range(number_of_engines))\n wait_for(lambda: len(self.client) >= number_of_engines)", "min_run_count": 2, "name": "throughput.DirectViewBroadcast.time_broadcast", "number": 0, "param_names": ["Number of engines", "Number of bytes"], "params": [ ["1", "2", "16", "64", "128", "256", "512", "1024"], ["1000", "10000", "100000", "1000000", "2000000"] ], "processes": 2, "repeat": 0, "sample_time": 0.01, "timeout": 120, "type": "time", "unit": "seconds", "version": "bb46d525dc8242ec0b309ba7667c82bdca00f5c739fbd6e655a6642432442d25", "warmup_time": -1 }, "throughput.DirectViewPush.time_broadcast": { "code": "class PushMessageSuite:\n def time_broadcast(self, engines, number_of_bytes):\n reply = self.view.apply_sync(\n lambda x: None, np.array([0] * number_of_bytes, dtype=np.int8)\n )\n\n def setup(self, number_of_engines, number_of_bytes):\n self.client = ipp.Client(profile='asv')\n self.view = get_view(self)\n self.view.targets = list(range(number_of_engines))\n wait_for(lambda: len(self.client) >= number_of_engines)", "min_run_count": 2, "name": "throughput.DirectViewPush.time_broadcast", "number": 0, "param_names": ["Number of engines", "Number of bytes"], "params": [ ["1", "2", "16", "64", "128", "256", "512", "1024"], ["1000", "10000", "100000", "1000000", "2000000"] ], "processes": 2, "repeat": 0, "sample_time": 0.01, "timeout": 120, "type": "time", "unit": "seconds", "version": "d53ef539a1ba7dda53fcdfdd810c23bcde346a6e936436ffd5a03e8254a38640", "warmup_time": -1 }, "throughput.NonCoalescingAsync.time_async_messages": { "code": "class AsyncMessagesSuite:\n def time_async_messages(self, number_of_engines, number_of_messages):\n replies = []\n for i in range(number_of_messages):\n reply = self.view.apply_async(\n echo, np.array([0] * 1000, dtype=np.int8)\n )\n replies.append(reply)\n for reply in replies:\n reply.get()\n\n def setup(self, number_of_engines, number_of_messages):\n self.client = ipp.Client(profile='asv')\n self.view = get_view(self)\n self.view.targets = list(range(number_of_engines))\n \n wait_for(lambda: len(self.client) >= number_of_engines)", "min_run_count": 2, "name": "throughput.NonCoalescingAsync.time_async_messages", "number": 0, "param_names": ["Number of engines", "number_of_messages"], "params": [ ["1", "2", "16", "64", "128", "256", "512", "1024"], ["1", "5", "10", "20", "50", "75", "100"] ], "processes": 2, "repeat": 0, "sample_time": 0.01, "timeout": 60, "type": "time", "unit": "seconds", "version": "7d58edbe3c5f17d8c8b9f56b07e36103b6aac63113a081844b4c8ae47c8f9912", "warmup_time": -1 }, "throughput.NonCoalescingBroadcast.time_broadcast": { "code": "class ThroughputSuite:\n def time_broadcast(self, engines, number_of_bytes):\n self.reply = self.view.apply_sync(\n echo, np.array([0] * number_of_bytes, dtype=np.int8)\n )\n\n def setup(self, number_of_engines, number_of_bytes):\n self.client = ipp.Client(profile='asv')\n self.view = get_view(self)\n self.view.targets = list(range(number_of_engines))\n wait_for(lambda: len(self.client) >= number_of_engines)", "min_run_count": 2, "name": "throughput.NonCoalescingBroadcast.time_broadcast", "number": 0, "param_names": ["Number of engines", "Number of bytes"], "params": [ ["1", "2", "16", "64", "128", "256", "512", "1024"], ["1000", "10000", "100000", "1000000", "2000000"] ], "processes": 2, "repeat": 0, "sample_time": 0.01, "timeout": 120, "type": "time", "unit": "seconds", "version": "bb46d525dc8242ec0b309ba7667c82bdca00f5c739fbd6e655a6642432442d25", "warmup_time": -1 }, "throughput.NonCoalescingPush.time_broadcast": { "code": "class PushMessageSuite:\n def time_broadcast(self, engines, number_of_bytes):\n reply = self.view.apply_sync(\n lambda x: None, np.array([0] * number_of_bytes, dtype=np.int8)\n )\n\n def setup(self, number_of_engines, number_of_bytes):\n self.client = ipp.Client(profile='asv')\n self.view = get_view(self)\n self.view.targets = list(range(number_of_engines))\n wait_for(lambda: len(self.client) >= number_of_engines)", "min_run_count": 2, "name": "throughput.NonCoalescingPush.time_broadcast", "number": 0, "param_names": ["Number of engines", "Number of bytes"], "params": [ ["1", "2", "16", "64", "128", "256", "512", "1024"], ["1000", "10000", "100000", "1000000", "2000000"] ], "processes": 2, "repeat": 0, "sample_time": 0.01, "timeout": 120, "type": "time", "unit": "seconds", "version": "d53ef539a1ba7dda53fcdfdd810c23bcde346a6e936436ffd5a03e8254a38640", "warmup_time": -1 }, "version": 2 } ipython-ipyparallel-14e3c43/benchmarks/scheduler_benchmarks.ipynb000066400000000000000000032234311520071063500254120ustar00rootroot00000000000000{ "cells": [ { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "import pickle\n", "\n", "import altair as alt\n", "import pandas as pd\n", "from benchmark_result import (\n", " BenchmarkType,\n", " get_no_delay_source,\n", " get_time_n_tasks_source,\n", ")\n", "from IPython.core.interactiveshell import InteractiveShell\n", "from IPython.display import Markdown, display\n", "from utils import ms_to_seconds\n", "\n", "InteractiveShell.ast_node_interactivity = \"all\"" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "# benchmark_results = get_benchmark_results()\n", "with open('saved_results.pkl', 'rb') as saved_results:\n", " benchmark_results = pickle.load(saved_results)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## ipyparallel benchmark results ##" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### time_n_tasks ###\n", "The first benchmark comes from benchmarking the runtime of sending\n", "n tasks to m engines. Where the each task is just the echo function. " ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "\u001b[0;31mSignature:\u001b[0m \u001b[0mecho\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdelay\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mDocstring:\u001b[0m \n", "\u001b[0;31mSource:\u001b[0m \n", "\u001b[0;32mdef\u001b[0m \u001b[0mecho\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdelay\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0minner_echo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mtime\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mdelay\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mtime\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msleep\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdelay\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0minner_echo\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mFile:\u001b[0m ~/ipyparallel_master_project/benchmarks/utils.py\n", "\u001b[0;31mType:\u001b[0m function\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "??echo" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "jupyter": { "source_hidden": true } }, "outputs": [ { "data": { "text/markdown": [ "## With 16 cores:" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/markdown": [ "### With a delay of 0.0s. :" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.vegalite.v3+json": { "$schema": "https://vega.github.io/schema/vega-lite/v3.4.0.json", "config": { "mark": { "tooltip": null }, "view": { "height": 300, "width": 400 } }, "data": { "name": "data-1c48c1d1c479f23c984574997a86bdf2" }, "datasets": { "data-1c48c1d1c479f23c984574997a86bdf2": [ { "Duration in ms": 10.34, "Number of engines": 10, "Number of tasks": 1 }, { "Duration in ms": 10.3, "Number of engines": 10, "Number of tasks": 10 }, { "Duration in ms": 10.71, "Number of engines": 10, "Number of tasks": 100 }, { "Duration in ms": 5.8, "Number of engines": 1, "Number of tasks": 1 }, { "Duration in ms": 6.05, "Number of engines": 1, "Number of tasks": 10 }, { "Duration in ms": 5.76, "Number of engines": 1, "Number of tasks": 100 } ] }, "encoding": { "color": { "field": "Number of engines", "type": "nominal" }, "tooltip": { "field": "Duration in ms", "type": "quantitative" }, "x": { "field": "Number of tasks", "scale": { "type": "log" }, "type": "quantitative" }, "y": { "field": "Duration in ms", "type": "quantitative" } }, "mark": { "point": true, "type": "line" }, "selection": { "selector011": { "bind": "scales", "encodings": [ "x", "y" ], "type": "interval" } }, "title": "SchedulerType.BROADCAST_COALESCING", "width": 800 }, "image/png": "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", "text/plain": [ "\n", "\n", "If you see this message, it means the renderer has not been properly enabled\n", "for the frontend that you are using. For more information, see\n", "https://altair-viz.github.io/user_guide/troubleshooting.html\n" ] }, "metadata": { "application/vnd.vegalite.v3+json": { "embed_options": { "renderer": "svg" } } }, "output_type": "display_data" }, { "data": { "application/vnd.vegalite.v3+json": { "$schema": "https://vega.github.io/schema/vega-lite/v3.4.0.json", "config": { "mark": { "tooltip": null }, "view": { "height": 300, "width": 400 } }, "data": { "name": "data-d67cc399a4f1dc20ed36ffdfa4f3150e" }, "datasets": { "data-d67cc399a4f1dc20ed36ffdfa4f3150e": [ { "Duration in ms": 13.07, "Number of engines": 10, "Number of tasks": 1 }, { "Duration in ms": 13.48, "Number of engines": 10, "Number of tasks": 10 }, { "Duration in ms": 13.6, "Number of engines": 10, "Number of tasks": 100 }, { "Duration in ms": 6.07, "Number of engines": 1, "Number of tasks": 1 }, { "Duration in ms": 6.17, "Number of engines": 1, "Number of tasks": 10 }, { "Duration in ms": 5.96, "Number of engines": 1, "Number of tasks": 100 } ] }, "encoding": { "color": { "field": "Number of engines", "type": "nominal" }, "tooltip": { "field": "Duration in ms", "type": "quantitative" }, "x": { "field": "Number of tasks", "scale": { "type": "log" }, "type": "quantitative" }, "y": { "field": "Duration in ms", "type": "quantitative" } }, "mark": { "point": true, "type": "line" }, "selection": { "selector012": { "bind": "scales", "encodings": [ "x", "y" ], "type": "interval" } }, "title": "SchedulerType.BROADCAST_NON_COALESCING", "width": 800 }, "image/png": "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", "text/plain": [ "\n", "\n", "If you see this message, it means the renderer has not been properly enabled\n", "for the frontend that you are using. For more information, see\n", "https://altair-viz.github.io/user_guide/troubleshooting.html\n" ] }, "metadata": { "application/vnd.vegalite.v3+json": { "embed_options": { "renderer": "svg" } } }, "output_type": "display_data" }, { "data": { "application/vnd.vegalite.v3+json": { "$schema": "https://vega.github.io/schema/vega-lite/v3.4.0.json", "config": { "mark": { "tooltip": null }, "view": { "height": 300, "width": 400 } }, "data": { "name": "data-2365ace601ba66b30ad97ebe895f3eb8" }, "datasets": { "data-2365ace601ba66b30ad97ebe895f3eb8": [ { "Duration in ms": 13.95, "Number of engines": 10, "Number of tasks": 1 }, { "Duration in ms": 14.3, "Number of engines": 10, "Number of tasks": 10 }, { "Duration in ms": 13.74, "Number of engines": 10, "Number of tasks": 100 }, { "Duration in ms": 9.85, "Number of engines": 1, "Number of tasks": 1 }, { "Duration in ms": 10.31, "Number of engines": 1, "Number of tasks": 10 }, { "Duration in ms": 10.1, "Number of engines": 1, "Number of tasks": 100 } ] }, "encoding": { "color": { "field": "Number of engines", "type": "nominal" }, "tooltip": { "field": "Duration in ms", "type": "quantitative" }, "x": { "field": "Number of tasks", "scale": { "type": "log" }, "type": "quantitative" }, "y": { "field": "Duration in ms", "type": "quantitative" } }, "mark": { "point": true, "type": "line" }, "selection": { "selector013": { "bind": "scales", "encodings": [ "x", "y" ], "type": "interval" } }, "title": "SchedulerType.SPANNING_TREE", "width": 800 }, "image/png": "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", "text/plain": [ "\n", "\n", "If you see this message, it means the renderer has not been properly enabled\n", "for the frontend that you are using. For more information, see\n", "https://altair-viz.github.io/user_guide/troubleshooting.html\n" ] }, "metadata": { "application/vnd.vegalite.v3+json": { "embed_options": { "renderer": "svg" } } }, "output_type": "display_data" }, { "data": { "application/vnd.vegalite.v3+json": { "$schema": "https://vega.github.io/schema/vega-lite/v3.4.0.json", "config": { "mark": { "tooltip": null }, "view": { "height": 300, "width": 400 } }, "data": { "name": "data-dc3718091d34f3c4bf53f7a397265104" }, "datasets": { "data-dc3718091d34f3c4bf53f7a397265104": [ { "Duration in ms": 12.35, "Number of engines": 10, "Number of tasks": 1 }, { "Duration in ms": 12.74, "Number of engines": 10, "Number of tasks": 10 }, { "Duration in ms": 12.52, "Number of engines": 10, "Number of tasks": 100 }, { "Duration in ms": 4.92, "Number of engines": 1, "Number of tasks": 1 }, { "Duration in ms": 5.22, "Number of engines": 1, "Number of tasks": 10 }, { "Duration in ms": 4.95, "Number of engines": 1, "Number of tasks": 100 } ] }, "encoding": { "color": { "field": "Number of engines", "type": "nominal" }, "tooltip": { "field": "Duration in ms", "type": "quantitative" }, "x": { "field": "Number of tasks", "scale": { "type": "log" }, "type": "quantitative" }, "y": { "field": "Duration in ms", "type": "quantitative" } }, "mark": { "point": true, "type": "line" }, "selection": { "selector014": { "bind": "scales", "encodings": [ "x", "y" ], "type": "interval" } }, "title": "SchedulerType.DIRECT_VIEW", "width": 800 }, "image/png": "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", "text/plain": [ "\n", "\n", "If you see this message, it means the renderer has not been properly enabled\n", "for the frontend that you are using. For more information, see\n", "https://altair-viz.github.io/user_guide/troubleshooting.html\n" ] }, "metadata": { "application/vnd.vegalite.v3+json": { "embed_options": { "renderer": "svg" } } }, "output_type": "display_data" }, { "data": { "application/vnd.vegalite.v3+json": { "$schema": "https://vega.github.io/schema/vega-lite/v3.4.0.json", "config": { "mark": { "tooltip": null }, "view": { "height": 300, "width": 400 } }, "data": { "name": "data-528bab018118c0e7dedef9cdeb2813d7" }, "datasets": { "data-528bab018118c0e7dedef9cdeb2813d7": [ { "Duration in ms": 6.8, "Number of engines": 10, "Number of tasks": 1 }, { "Duration in ms": 6.83, "Number of engines": 10, "Number of tasks": 10 }, { "Duration in ms": 7.08, "Number of engines": 10, "Number of tasks": 100 }, { "Duration in ms": 6.45, "Number of engines": 1, "Number of tasks": 1 }, { "Duration in ms": 6.6, "Number of engines": 1, "Number of tasks": 10 }, { "Duration in ms": 6.71, "Number of engines": 1, "Number of tasks": 100 } ] }, "encoding": { "color": { "field": "Number of engines", "type": "nominal" }, "tooltip": { "field": "Duration in ms", "type": "quantitative" }, "x": { "field": "Number of tasks", "scale": { "type": "log" }, "type": "quantitative" }, "y": { "field": "Duration in ms", "type": "quantitative" } }, "mark": { "point": true, "type": "line" }, "selection": { "selector015": { "bind": "scales", "encodings": [ "x", "y" ], "type": "interval" } }, "title": "SchedulerType.LOAD_BALANCED", "width": 800 }, "image/png": "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", "text/plain": [ "\n", "\n", "If you see this message, it means the renderer has not been properly enabled\n", "for the frontend that you are using. For more information, see\n", "https://altair-viz.github.io/user_guide/troubleshooting.html\n" ] }, "metadata": { "application/vnd.vegalite.v3+json": { "embed_options": { "renderer": "svg" } } }, "output_type": "display_data" }, { "data": { "text/markdown": [ "### With a delay of 0.1s. :" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.vegalite.v3+json": { "$schema": "https://vega.github.io/schema/vega-lite/v3.4.0.json", "config": { "mark": { "tooltip": null }, "view": { "height": 300, "width": 400 } }, "data": { "name": "data-9a232fde5a4cab6816796779032d9105" }, "datasets": { "data-9a232fde5a4cab6816796779032d9105": [ { "Duration in ms": 110.69, "Number of engines": 10, "Number of tasks": 1 }, { "Duration in ms": 111.59, "Number of engines": 10, "Number of tasks": 10 }, { "Duration in ms": 111.08, "Number of engines": 10, "Number of tasks": 100 }, { "Duration in ms": 107.01, "Number of engines": 1, "Number of tasks": 1 }, { "Duration in ms": 106.91, "Number of engines": 1, "Number of tasks": 10 }, { "Duration in ms": 107.14, "Number of engines": 1, "Number of tasks": 100 } ] }, "encoding": { "color": { "field": "Number of engines", "type": "nominal" }, "tooltip": { "field": "Duration in ms", "type": "quantitative" }, "x": { "field": "Number of tasks", "scale": { "type": "log" }, "type": "quantitative" }, "y": { "field": "Duration in ms", "type": "quantitative" } }, "mark": { "point": true, "type": "line" }, "selection": { "selector016": { "bind": "scales", "encodings": [ "x", "y" ], "type": "interval" } }, "title": "SchedulerType.BROADCAST_COALESCING", "width": 800 }, "image/png": "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", "text/plain": [ "\n", "\n", "If you see this message, it means the renderer has not been properly enabled\n", "for the frontend that you are using. For more information, see\n", "https://altair-viz.github.io/user_guide/troubleshooting.html\n" ] }, "metadata": { "application/vnd.vegalite.v3+json": { "embed_options": { "renderer": "svg" } } }, "output_type": "display_data" }, { "data": { "application/vnd.vegalite.v3+json": { "$schema": "https://vega.github.io/schema/vega-lite/v3.4.0.json", "config": { "mark": { "tooltip": null }, "view": { "height": 300, "width": 400 } }, "data": { "name": "data-97a6abfab327861ce324062846faebff" }, "datasets": { "data-97a6abfab327861ce324062846faebff": [ { "Duration in ms": 113.67, "Number of engines": 10, "Number of tasks": 1 }, { "Duration in ms": 113.71, "Number of engines": 10, "Number of tasks": 10 }, { "Duration in ms": 114.09, "Number of engines": 10, "Number of tasks": 100 }, { "Duration in ms": 106.9, "Number of engines": 1, "Number of tasks": 1 }, { "Duration in ms": 107.37, "Number of engines": 1, "Number of tasks": 10 }, { "Duration in ms": 107.36, "Number of engines": 1, "Number of tasks": 100 } ] }, "encoding": { "color": { "field": "Number of engines", "type": "nominal" }, "tooltip": { "field": "Duration in ms", "type": "quantitative" }, "x": { "field": "Number of tasks", "scale": { "type": "log" }, "type": "quantitative" }, "y": { "field": "Duration in ms", "type": "quantitative" } }, "mark": { "point": true, "type": "line" }, "selection": { "selector017": { "bind": "scales", "encodings": [ "x", "y" ], "type": "interval" } }, "title": "SchedulerType.BROADCAST_NON_COALESCING", "width": 800 }, "image/png": "iVBORw0KGgoAAAANSUhEUgAAA8cAAAFsCAYAAADhS8teAAAgAElEQVR4Xux9CbwkV1X+V/3ezGQPYUsC8gfmYYAgCmGJ6B9ZhABBAqLBAKIgIgJBWZ2BoAxKmAkom+IfcYvKEgKCAmGRKKCiRAREdjCPqEASQkgg62Te6/r/vupbk55O93vndZ+7VL+vNEy/7lv3nPOdU+fer86tWxV0CAEhIASEgBAQAkJACAgBISAEhIAQ2OQIVJvcfpkvBISAEBACQkAICAEhIASEgBAQAkIAIscKAiEgBISAEBACQkAICAEhIASEgBDY9AiIHG/6EBAAQkAICAEhIASEgBAQAkJACAgBISByrBgQAkJACAgBISAEhIAQEAJCQAgIgU2PgMjxpg8BASAEikLgBwDcEcD3AXwFwPVFaTdemTaP1lPqulYenrbPaVQZ1WOcbEubVvY2AEsAjgHwdQD/A2B1gmJrYbgRmT0AdwBwJYDvrgHCej47CsAPAmB/Xw79td3N6q9Jsvn9KOZHADgOwMEAvgbgkhGb1uqLTTcSP/TX/wHwTQDXTsDO26eT9JuE8XD7BQDbAdwWwMUAvjrB3rViYhS/jeJJ2fyPsT3qm2muQZ0jBISAEBACmREQOc7sAIkXAkKgQYCT/7cA+OkhPL4N4GkA3mPA6FwApwK4N4BPGdqv1eT/AvgnAO8G8FhDX28H8DgA9wfwz4b2w02oM3WfdPD3d26wz2ma/w6Al4yceBWAfwDwbAD/C+DBAP5+TOfLAHYCeMfQb/TjXwA4fOi7TwN4CoD/HOmDbd8VvnsSgDcP/f6oMf6nXoyVHeEmCpuTKP06gN8bOvcb4bu27/YnknWSKR5/CuCXR/Q5A8DLR777LQDEaFZ/DZ9P8v1fQQ71fh6AxwM4B8AigBcB+O0RPRgrzwLwnfA9byCRPA/bcYvwO/3CmxPrHTcD8LsAnjrU8JPBV1+I6FPG1k+OUe43x9jdNns+gFcDuBuAtwL44ZH4+nkAXwrfWWKiJduMCbbnjQEew3F4CoC/BfBGAM8Iv/9EiEHezGsP2vPMcFNvPcz1uxAQAkJACBSKgMhxoY6RWkJgkyHwAgCvAvDxMBFlRehXAwZ3DdW7tSD5GwCPBnAigH+bETuS3H8MejzG0FdLjjlhJqneyPGjgezwnPsGosMKWGvDGwB8YiMdTtm2JcckRZ8DsCVgSeL1YQAnBSJzPgCS05YI3w7AQ4PM+wVdHw7gA+E79kfS8EQAJBI8985D5JTNePODJJjHKGFqyTFvlLwPwEEAiBnjg+Tv7qHKuQvAS0MflE1y2ep1GgD6qD2eA+A1Q3+TwF8d/mb8EG8S6zeFyjH75kFizyoyyem0/homxx8CQKx4kPA9d4gcnwngxeE33qRhVbIlZsToYQBWAhGjj3j8OIB/AXBLAJcFfNYjxySE9OkDQx8knPcAcHz4uyXwMXz6UQAPGvJD+5E3Il4G4IsAeENl+OCNg/MAXBhigPqyDX1NTOg3rjwhNpaYaMnxscHXLTlmnN4ewBUhrzC/tOT4IeGaoF6MbxJnymbeYJySsF86xi59JQSEgBAQAh1AQOS4A06SikJgEyDAChUn5Jx4ttVJTm5JjElS+B0rYqzokahx2SzJBSesXNLYkmNOqlmJvHkgXb8B4JpQwWR/LdkliSUhZwWOVWue9zOhX8p64RA5/n0APxKq2KzUsYLKvkhaSLJGyTF/Z/WL9nApLAnu24IPSbo5AWeFmVUmEvq2etgS1D2hasjJNkkSSeCTw/kkdqxm/2EgQ9SLFVpWzG4Tqo6vALB3HZtHQ6qVzSrxH4QfWZ37fCC0XN7LKh+J1Cip+ddAWFn5JB5tNZNkta18koT9XcCOeP5akEFS8q0gg1+RqJLcXBR+b8nxcBV/K4DPBHxJVEmGiREPkiTqyINV2JY83WvI4DbWSL7oo+EqIfUnxoyHlhST0P5suPHRYsPuRv1luUxHK8/s969HyDHxbSvbJI/8m8eRQ8u72/NarPk7K/K0k5VgKznmTQtW6kkGSaR5Ho8/AvArAM4KqwJi+HQ9cjwcP8PY3iqQ0BYTPoJxaLjOeC3zJgOXf1tiYhI5Zt9tnPIabckx4+2/w40e4vPHQbFDAPxliF3mKMarDiEgBISAEOggAiLHHXSaVBYCc4jAnw8RQE4sSVBZBSMJ4sFcRULL6hhJDckaK5GsGpEQtOSYbTnpbithrL7tDkuXSUxYleWzqKw+8jPJ0WsBnB7ktISJf7IiRDJNQkuiSjmU1xIcEiWSyWFyzIn6f4S+WOFiNZmEr61ejj5jOby0dpRs8Tz2x4O2klS3FbO7hIk59eIxrDfJMZcGt0vNx9k8+uxvK5sY/3uovD4gVMFagtSSY1bLnhB8Qr1YyeRBW0k8Lw9/k7gPL6EmsSBmXB3Apes8SGRYNW0rufyby7t5U4DHOHLM71sSe3bwPf1PgsdnhYdtG32GlMvuqT/xIkaMteFqNW9CMBZ5EAvegCH5582MG8L37T+zkGP65hEArgNwp0DG28oxb+awmk57eJOHVdD24BJx3vzhTQeSx5a0/r9QWeZNB96IsZLjtmLNlQB8NGD4aLEjpjF8uh45ZuyMrpogRsSMlfRbB4xYTaZ/eFOEN1p4tIR2vZgYR455vbACzZtcjBfGeEuOeW3xZhwP3qTZN4KZ/hQCQkAICIGOIyBy3HEHSn0hMCcIcALOKvDoBJ1klBNdkoTPhkkrCSUJEJ875TJbVr/+KrRjpZjLs/msMivOfxaquO1ySVaiWVXlRJpLc7kckgSIR/u8MskFyew05Jj6k2iTULL6xv5JXFpC2E7GSWxeB+B7Q/4bR7bamwasUn0kVKJJGLiEuSXtfFaUdrKaSJLDpZ33HHp+ctRmktyW0Lbixz1z3P5GEklS0JLjcSHHGwwkLiR6rJbz4NLsYWLXLlenfkeHNi25oz1cCk1Cyooffdxfgxzz+WLKpN8vCKR7eJnypMvi9eGGBp9XJlEnEeXRVqu5eRMrxqweDz8vTZ1ZiR7GbRZyzKokb6LwWeFXBqxacsyYpt/b5ezDtrTPQ3O1AIl8ix9juY1pLotm35ZnjluyzWfGGbPjjlg+XY8cj9OFeYBLnXnjhSsyeLNs+CAuvPZ5vdC/68XEJHLMm2K8gcIbKVzJweo+8xPjjdfycAy3sdjq0d64mJPULDOEgBAQApsLAZHjzeVvWSsESkeAyyJZoWXVhpVGVodIIFhJI1ltCeuoHW3luH3u8pHhGVUuGeUkmtW/cQeXT5NMs8LEajQPToxZUZxEjn8uLF8eVzkmeSEhHj3ayXQ7GaedoztxjyNb7fONXDrMSjRl8llsEu+WHLOKTJLEpaXts7Os4vL3cQefnWXFdfhoZXPDI8rgMmgS1naJO8kjl92SgJF0seJI8vtjoZLOviifZJg3H3i0vmjlcIMpkmwSYOp3n6Fnq0lAOB6RtPJoNzebVDnmsnI+g0sixJUAJC+jlVZizJUB1Ik3Vvg3nwUl6eVyay7d5mZcjLH2BkCrK+3/oWADSSh1ZTWRz1i3x6zkmGSYccm+iQltJgGnnPbZ9dE44dJ0Lh1vlxy35JjL03lD5P1DKycs5Jg3aFhtHt18jkuXuXM1H1/gZmwxfLoeOWZMMF6GD/p4+OCjFnxWn1V4ruLgwWXy3G3bEhOTyDGfi6d8xmO7EoXkmN+1S/7byjFl86bYCWGlBVeqtM+Lj7v+9J0QEAJCQAgUjIDIccHOkWpCYJMgwDzEpYp8ppJVr/ZZwfZ5SFZ/+HwulxS3y6hZ4eNzoZygkihwaeXwhlzD5JiVQD7Xy4k1iTeXx3LTIlbouDyzfeaX33H5aFsJaskxCQcnwFyq/bEw8eWy33Hk+JdCRY/EiaSeBJJVUhJh7qLdTsbH5d5xZIvVVFa9SeBYxSKRInHhs9ItOSbBo6x2yTDtJFGaZDMJVbvb8SjRG37mmK+oIVHjwY2qSCpHnzmmfiSn/K1dds7NxKjn8LPFfAaU33OzopY88Pd2OftoqPNZTlb/xpFjEhdujMWDVXEubW19yJ2F3xt+YzWUstqdnNvK+rjLijHHCikrj7w5QuLNlQk8uDFTS4iGq+GzkmOS0tZnrU4kxyTA7TLm9tli/s7lvSSqPBiPHxyqHJMcM5aHHy+wkGM+q85qKA/6m8uS6VP2w2uofR47hk/XI8eTnjnmJmys3hILfuYKAx5cKcKbJbzhRbJviYm1yDFjmn3w2uNBcswbdnwenN8xvlj1Zx/EjDdgeDNG5HjcFabvhIAQEAIdQUDkuCOOkppCYM4R4GY2nIi3r+lhxYpEk5PQlghw8klyRVLFDXC4nLh9XnR0t+phcszKH59f5MSVFVM+U9hWpEgISA5YqWYbEs6WsLXkmBNgTrhJNvgcNAkFj3HkmES4XdpMGdSdlWRWWlmV3Sg5phxOtjkR5zFc4WvJMavStIt2Ei9O4mnDWjb/QuiXmwdx87CW6BEbLovmZJ8Em/2xf+LEZ5DHbcjVbnDVbh41TPh4Y4PLU4kB8WdfrHTzZkFbxWUltH39Dv3LmxE8Dgt+aZ+/pb3cbKpdSstKOskzMR0m2owJtmMljwervST53O2accEqMUkwD5Jd4kQixMpt+1ok/kb/c3nyyYHsj5IeD3JMOW0VnJ/bVzkNL9WlrrwuWJ2kP4btHq4ckxxzeTVvIvGwkONhUsdzGLv0M+UQF2LIRxhi+JTySHKHD9504o0V3vhirLRL9Ns2jAH+RtLKmwW0kTpz1Ue7mzd15l4FlphYixxTZrtKhJ/b3arblSUtxnzcgXHYkmiR4xGn6k8hIASEQJcQEDnukrekqxCYXwQ4ueUSz3ZX5tZSVn05GeZBAksS3D4LSiJH4kIy0JJjLrFkhbUlxyS+JIKsNvIzJ948SDZIxkmAuGSYxKl9fQ03SyIRaYkoCQef/+S/PPg9N0UaJcftUmAuqWw3lGrbk+iT8FvI8ejkmtWxdmMr7lTd7oTbkmPq1r62iNU4bhjGyvBaNrdLnFtZk95zzI2OuKs3CW77nuPR1y21lfXhHZ6JP5+DbgkDceCz0sSBRJh2cNnrKIHjioC2Mkei2G5ONRz51IX+4it/2uW+rEyz0ki72oM+5hJyyml3xeZvLVlu27U3Zlryw6W0JNDDzxwzJljJHveM+EbIULuZG599JgHmwaXBXw/yWnLMZd3c/Zs3ZoYP3gTh93zulkdLjvme3vb1Qe17gi3kmH3wXFZd29dp8TvGG6+P4Q3VYvq0tZHX6h3WeM9xe03yBgt1bjek4/kk07wp1L5mbL2Y4Dnj3nPMvMJrhwfnSLwhxNgffs8x45e+aGOEsulP7lewkXgYca/+FAJCQAgIgdwIiBzn9oDkCwEhMIwAJ5skL1wqyaXWfHZw+GCljySVpIivVBnd/XktNJnvWG1i1ZmEenizKJIy9ktSSRI77iDB4m/cLXe9g8/fknST6LVLZNc7Z9Lv7St8SPZINttnlVtyzM2rqDftanfrbftay+Zp9bGeR0yJN5eBcwksCUTsg4SIeNC3JIejO0xb5bMfxiExpe4tGV3vfNrKqvW4g35rl0Wv10/7Ox8bYBxRHxLo0Wdu1+tnI/owzngNcJk89WyXKw/LyOHTtWykfbwuiQt1Hr6m2/O8YmJUD2JB3/Aaa5dwr+cP/S4EhIAQEAKFIyByXLiDpJ4QEAKbGgFWGlmhJilu33/cAjJMjjU5LyNM+K5s7uo97uDNnEk7QsfSvjR9YtmpfoWAEBACQkAIuCAgcuwCozoRAkJACERBgOSGm5FxaSdfCTVc1ebyzbsBeHqoUEdRQJ0KASEgBISAEBACQmCzICByvFk8LTuFgBAQAkJACAgBISAEhIAQEAJCYCICIscKDiEgBISAEBACQkAICAEhIASEgBDY9AiIHG/6EBAAQkAICAEhIASEgBAQAkJACAgBISByrBgQAkJACAgBISAEhIAQEAJCQAgIgU2PgMjxpg8BASAEhIAQEAJCQAgIASEgBISAEBACscnxQQBWAewbgnoRwGFj3iXK94Ly/aHj3q0oTwkBISAEhIAQEAJCQAgIASEgBISAEIiGQCxyTKJ7dwCvBPAaAO8OFjwvvHbkAgBHANgB4HIAbwWwAuD2AF4F4OxoFqtjISAEhIAQEAJCQAgIASEgBISAEBACIwjEIsc/AuAXATwawAsCOd4KYG+oGl8D4CUAjgbwTQCHAzgDwDHhfZ0k19fKW0JACAgBISAEhIAQEAJCQAgIASEgBFIgEIsct7q/E8BbhirHRwG4AsAhAP4ewOsAPATA+QDOAUB9uKx6CcByCgAkQwgIASEgBISAEBACQkAICAEhIASEQGpyTMRPAPDnAD4P4KkA/hLAuQBIpHlcCuBEABft3r17V1VVvzXsplvd6lbVAx/4QHlOCAgBISAEhIAQEAJCQAgIASGQAoF6aWmpl0JQB2VwP6ltALgyONZxcOiY+1NFPVKT458Mzxf/GoC3B8tIfr8P4LUAFkJl+WasINd1fRP9zjrrrP6OHTvYTsccIrC8vLy6fft2+XeMb+cFm5LtyKlbQtnV8vLySqzrLIYdQV8OvrMcUe2eRTGd64OAU5z4KFNWL4z9fdu3b5/1GsptVdF2xMh9RsCT4hLxOothh1vep3+XlpY8eNOPAfg4gK+G/ZluAHBqKBQ+DMDfGf2+VrP/BfA5ACc79LVeF78K4P8B+CiAB63XeIbfPwuAGz3feYY+TKd6OHktQcPLqinre2EZ9b8NnXQKgNMBnBSCg5t23W9Sp3v27Kl37twZW28TeGrkj8CFF17IO3Py7xho5wWbku3IqVsq2bzpuLy83I91ncWw48ILL6S+M92xj223fzZUjxtFwCNONiqzC+1D7HNiP9M1lNvW0u2IkfssmKfGJdZ1FsMOz7zv6N+WHNO9zwbwBxHIMVfhfgbAwy0xNGObfwRwDwCPDY/JztjdxNOJFW/wcaPnqEdsEkJy/GYAfwPgTgC+NmLNXwB4BoD3AzgeAEvmDwXA3azHHiLHUeMhe+eOySe7Ld4KzAs2JduRU7dUsj0nC+NiPIYdHpOx2HZ7X+/qb+MIeMTJxqWWf0YM0pHD6tLtiJH7LDinxiXWdRbDDs+87+jfYXJ8FYA7AnjwUOWYqydfBoCrbD8B4KUAHhkKh9zk+DEAPgbgiQD+FcC7APxmiJWnA/jn8IjqdwLvulcgreyP8n4CwLMA8BlVVnv5mQe52IcA/F8AfxL2jGpD8AcA/GE4h8ua/wwAV/6+KOjKdvy97Yt/047HA2BlmW8jIh+kntx0+cOB65H7sW8+brsHAG/gccPmp4UNmmkL9WFF+o0AuLnzzwH49WA/9X0CgC+ENyB9KfDNZ4bfvwLgOQA+DeA+AF4Ybhj8C4AzAfzTuGssNjm2XNdtm9sBuGTkncg3OV/keCOQdq+tY/LpnvHraDwv2JRsR07dUsn2nCyIHM9dmum0QbEm7Z0GBUAM0pEDk9LtSJXDR7FPjUus6yyGHZ7jnaN/W3LM193+BoDXB0LL/Ze4rPrWAP4qfOYSaxLHJwPYAuD3A9k8L7wS9/6B8LI9CeEnAdw3kGP2w+XbtwJwXPid7UiQ+f0HAfxOIMS/FN4exPDihsi/DOAjQ7HGzZVJQs8CcJfwNqLHASAB54bKXBpOEky92uMBgXzz9bwk1CyG7gzEm+e1hJoknSSZBPrYcEPg24Gs024efNz2H8Ibj7is+vcAcKXxF8P3XIFM8kwZ1Jv9scJMkk37bwPgU6EvkvoXhyXadwuvEj7gsiqJHJtyrcixCabONnJMPp3FYJLi84JNyXbk1C2VbM/Jgsjx3KWZThsUa9LeaVBEjpO5L1UOFzm2u9RzvHP0b0uOSUhZNWY1lSSV/1rJ8c1DhZSPqe4AQKJN8scqLF+Ty2XVLDjeM1RbSTZZhf7jUKEmEWdV9SnhHBJO/k1yy8r0yhDKhwVCzXNYteUqX75u929DW1ZtuREXSfnwQSJP0kpCvRoIKcn7IwKppi6/EqrLbwXAx2zvHSrSxOUiAO8LVfNJ5PgOAP4bAJ+x/m7om68Ipq2sTpN48wYCZfINSbxJwGox35hE0s5zb3KIHNuvMbVMgIBj8kmgbVoR84JNyXbk1C2VbM/Jgshx2hwgaWsjIHI8Hp8YFbkcsVi6HalyuMixPfo8xztH/w6TYxJOVmpZ5eVBcnyLsHkxN9P6QHibz8+MVI5JWPnaW25S1T63TKLMyitX4pIcfwMAl1RzqfKVgTyzEv2K0P/wK3P55iBuELY7kNhhkFl5Jbn+01BR5nO/JKIk41zuPIkcUxYflSU53hc6ZMWYy6v5L5dRc1n2zwJ4RyDH7O+5geBTJpeM//QaleMjw6bOJPbXh+o4l2KzMj5c+eYm0Nz8mcvOKY8kmRX0YwLRPyCoRI7t15haJkDAMfkk0DatiHnBpmQ7cuqWSrbnZEHkOG0OkDSR42lioHRSabWpdDtS5XCRY2vE7H+kwGUDSkf/DpNjLplud6puyTGrsCR47w5VzlcHi4eXVVvIMQn388Pyaz63zGXIJLJ8TpeV2j8CwGeYWSVmhZcV15cPPb88DDSfR+azv1y6zSXLJLUkmm9agxyzGs7nh7l0nOSVn7kHFeVOIscksHwOmsul/3pIl0mV41FyTHJ9eSD6rMyfFl4P/KSw5JyEnVhwWTWXidMWPqcscmy/rNQyNQKOySe16tHlzQs2JduRU7dUskWOtRt+9GSVSYAqx+OBL51UWsOldDtS5XCRY2vEdIYcs1DJ52m5BJiVYy77JRnl36xufh3AD4fKMZ9P5nO148gxN+fisuq2cszngEkeDwfwn+GtQKwocxk2iTLJM/vnMuovr0OOudyZS67bCjeXLJPU8y1EJNwktaNvGqJcPhvM5355UIdHhSXYJMdtlZpVcW7gzGXVrJRzUy+SdvZJ4k7bjwikma9y4nPC7TPHo+T4R4KMXQBOCHJ5g4A3GLiJF0lxazc3EOMz0Dc5VDm2X2NqmQCBXINLAtNmFjEv2JRsR07dUskWORY5njkZFdqByLHIcc7QTJXDRY7tXvYc7zL4l88Vk7y2S5Ltht/YkkuqSQb5/PHwwZ2k/094Vnf4+eK1ZPAcbprFyjZJtvU4BABtYWW6XuckPrfM3bS5Wdhl4SYB9Sfh3+hB+0jC+Xx0e5D38nsuOedz0GMPkeONQq32URHIkHyi2uPZ+bxgU7IdOXVLJdtzsjAuvmPY4UF6Ytvtea2rr+kQ8IiT6SSXfVbpFVcreqXbESP3WbBJjUus6yyGHZ55P5d/LTEwR234DDCffWbVuT3aym8yM0WOk0EtQRYElHwmozQv2JRsR07dUsn2nCyIHFuymtqkQiDWpD2V/rHkxCAdsXRdq9/S7UiVw0cxSo1LrOsshh2e410u/+a41jLLZKWZS6K5MRmfPf5aan1EjlMjLnlrIqDkI3Kc8xLJGX+pZHtOFjpFjnc9cHH55/9439KdfrBz417Oa6JLsmNN2ruEwThdY5COHJiUbkeqHC5ybI++Wce7etfxW69ZvOLsqqofeclpHz9iaUmP5djR727Lzk0S+J7jZ6+85o8PfcmlfDeWjjlDINfg0gUY5wWbku3IqVsq2bNOFta7VmLYMQvpqV9/8yOuvWrrX4XNPqj+e67fd8OTbrHru9zsQ8ccITBLnMwRDDcxpXRSacW+dDti5D5iUwNV86Tmy1C94wuoTuU2SF/EYP5+LKr/2vuI3sIjXnPdHT/wUwdf9N2Vii9+xREr1cXf71d8r8+lh65WfPEtrulX3zm4rm7J9/Bc16+qg+rqKL7j5/q6qrYdUTU7G+3tV0ccAVx1fV3hhro6/DDg6hv6zWccClQ31NVljznv4ludd/Jtqn31QIdFVNW+gwaft9QVwvfVIqrrV+qKOyhhIbRdqau9ixh813yuq23NZ1RY2FpdevJbvnzUe59wVyyg+f6G1braunXwL9u0n6tVVNjKp0brCvs/b6n41b5eXaEf5NWLvcsf9sZP3uJDv3wf6rCyiopbPoNtePRRDX9e6S1WfE9R1UfFfnp9PKOq6sez6SWnfRwix9artdvtukmOV1+LGvWb637Fd27pmCMErnzIH3zkZuefzq3YdYwgMC/YlGxHTt1SyV5cXMR3HvjaaNdZDDuufMgf/MPNzj/9wdMkhd4Cnom62VVz/1FVeMfqav3GxUVglZOjPip+XuGEqr9YgbOjft1MklZ6qKp2olU1k9TBuFmxbfjcC/82E62F5nees9pDxR1M2G61V+//DH7J7+q6Wgif+zWq3gLQZx91r/m+0a1GtdDjHHBw/mrQof1c1WGSd4Bu1KfHWTW/HTsJ7FeouFNLxTaNDnW1GmTxvH7dq3ps0HxG87lf18057LP5jqcFuYPP9X58qub7XsAqtKWurT4DHAe/83OQBbbZ/5nfD+yogw7N7yM6tPpce+fTnn/IV895NdvcqFtv/+em26ADO2Gf+3UY6BLmRI2MId0Clvv1rBt9mo73x8ONsUHbb4pVr8Gqwa+uq/YzcWT78foEW8E2vaBvg+FA7hBuw/rcVLeq2nv0vU/adsm/f7jBsgr4hPhosNqPb/BtxRBFxfigcjXqgY6gT+vBdy1+rT5NZOzHZPjz4JfGd73mM/0wuFAGvh39TEIYnDCItUGDat/hP3Dclqu+8TXqQ1sGugX8gg8HKhzo2xu/a+1ouw/6DsUlEW7EDfAZXO1B1uAz7e81mAzrgMVDDu+tXHt1o88QPuP0IYYhxAKuk2Jxmqync2IgIHIcA9Uy++wsOS4TTmklBISAEBACQkAICAEhIATcEGh3+OW/I5/5Z1XXvS1bq/6+vfx9wMsb6t38O/xdPfL7gPfzLlx1QN/t+YN7SM3dh7r5P95IOejmR/eu/+7F4SZV+La5fRA+N3dS6iD8gM8Bkf06DnSr6j766KFX7zv8dsctXPU/X+HtqH6wYVSHUX0olxdPxrMAACAASURBVI15F7PRYXDi4PZRDey7+V3utfWKL3+y1afVYRjLwT0antbnvY39+PWB46vBs6+qHLuFc/kddZkcX14Bny8fYmm4EQT23vqeD9j27c98bCPnbJa284JNyXbk1C2l7JiyYvS991b3eMC2y/5jqrzQr3G3qgJXEg4flzXjR4W63wdrYawFhQkWJ4N9ThWbidZg6hkmWs00c8Ln/ZNWTjI5wWonpYM+hieozaSt38wKWVttdBjUWav9+rB+1+rWTvjYflifm+oW9N0/keWMsZnQBhUOnADvnzwHfdi2CjoM9BnoMKobvyIOje7NCsUBJoPPTS17SM+ARTttHkygB/oM6zakw/AEd4BPv8FqoUK92uhT7cet1YF9Xn3C6a887DN/8ELqcKM+1GuAA/XkuzvYD+qq+czz9+vDYmC/wYgFzrq/ChauB5NsCt7/efA7/bXadBLsqYOOA28P9A19LfQpb7Xpj/029vTQnL9ATNrPjYyqbl4ywu+obx913aNeK015fr+8Pgu5reyg95A9PGeRbRaA79z/1R+45Uef/7AVrGCxV9UrfHlLb6ADP/M7/t18XkDdvNulX9WLPdR8j8yWPgnY4PvF/sqQDtXg9yHs6gXiFfThZ+rQ4FDVfClNvVDVWNhXg29hXUC9ZaGq993A71FvXajqG24Ati6i5s/sh9+R9QFbccXJZ3/xqPc/8S5bV2+osYjm+20rVX09gIMWq7peCd8tEsOgQ/i+6WJLVeM6GlHV9ZbrB5+3oK75PV/4wn/pvn1Vja3h8w29+vCtVc136tQ3VPUR23o1X+565N5efSWuRH1QVR91fVV//bSPfu/wv33wEbe8rqr5DppbHdqrcc1CTRZ57BG9+hv/C/zAkYs1br5Y/9fXgDvdYmuNYw+u8alPAbdBjeNR4x3NW1zrlwF46a4B0V1vjpN6uXmsxxdi2DHrY0RXv/zox1dV9Vb6IEbl+JSdb7tnHzixRnViSIkX9HsLn3j/Kx73H+v5Xb/HQ6Cz5Liu8eTDXnLJX8SDRj3nQCDWMzs5bPGWOS/YlGxHTt1SyZ51srBeXMewY5bJ2LWvOPaxdV3/9bDeVVX9zCEvvvhd69mi37uFwCxx0i1LN6ZtDNKxMQ18WpduR4zcZ0EuNS6xrrMYdniMd1f9zjEP7PVw/0tO+/hvez5z/FM7zzm9Al5d81bT4OEW3grhU9S8FfXc9531+Des438++cPHrIff42sJGbVZB4GukuOfOvSMS86Td+cPgVyDSxeQnBdsSrYjp26pZHtMFta6XmLYMetk7JqXH3vvusL9r77ns199+Kd//z6HvuTif+/CNS8dN4bArHGyMWndaR2DdOSwvnQ7YuQ+C86pcYl1ncWww3O88/TvI3e8/WFVVX9wLf/2er2T3vOKx314TBsS6R8C8FSurQDwXEucqI0dgU6S4507d3ZOb7tLNndLz+Qzb0jOCzYl25FTt1SyPScL466xGHZ4TMZi2z1v+aaL9njESRftXk/nGKRjPZkxfi/djhi5z4JjalxiXWcx7PDM+17+PXnHm+/eqxY/yScC1vHvdXUP9z3vFaeNPkJ6GIDfBnBvAJ8SObZcJRtr0zmSyVc5iRxvzMldau2VfLpks1XXecGmZDty6pZKtudkQeTYevWqXQoEYk3aU+geU0YM0hFT30l9l25Hqhw+ik9qXGJdZzHs8BzvvPz7qJ1vf24NvBKouSx68sEl1j284Lzdp712QqNnAbiTyLF/NhI59sdUPc6AgFfymUGFYk+dF2xKtiOnbqlke04WRI6LTRebUrFYk/augxmDdOTApHQ7UuVwkWN79HmOd17+/akXnfMW1HiCyYoKb33f7tOeKHJsQsutkcixG5TqyAMBr+TjoUtpfcwLNiXbkVO3VLI9Jwsix6Vlic2tj8jxeP+XTiqtUVu6HalyuMixNWIG7zVfXl7ue2yk5eXfR+1829k1ql+0WFEDZ5+357SniBxb0PJrI3Lsh6V6ckDAK/k4qFJcF/OCTcl25NQtlWzPyYLIcXFpYlMrJHIscpzzAkiVw0WO7V72HO+8/PvIHec8o6rwer5QbG1LKr677dnv2/P4N4oc233u0VLk2ANF9eGGgFfycVOooI7mBZuS7cipWyrZnpMFkeOCEoRUgcixyHHOyyBVDhc5tnvZc7zz8u9PvfCcE7BQXbDeM8cVsK9CfeJ79jz+M2uQ4yUAz7MjopYWBESOLSipTTIEvJJPMoUTCpoXbEq2I6duqWR7ThZEjhMmAIlaFwGRY5HjdYMkYoNUOVzk2O5Ez/HO07+P3HHOs0P1eLIxdXX6+876ufXedWwHQy3NCIgcm6FSwxQIeCafFPqmlDEv2JRsR07dUsn2nCyIHKfMAJK1HgIixyLH68VIzN9T5XCRY7sXPcc7b/+Gdx2/BzUWUIHvLgZqrKLCCoBT3rfntL+zW6qWngiIHHuiqb5mRsA7+cysUEEdzAs2JduRU7dUsj0nCyLHBSUIqaJl1RNioPSNrKyhW7odqXK4yLE1YsrckGtY+0fvOPfuq73+Q6u64juLuYHYv9cL+Lsx7za2G62WMyMgcjwzhOrAE4Fcg4unDbH6mhdsSrYjp26pZG9WcnzKS86984sfe7cv/+gJd+vcuBcrp8xbv6ocj/do6aTSGoel25Eqh4scWyPGjxw/Zufb7vB7T7vv1z12vbZrr5a5EOjcJGHPnj31zp07O6d3Lgd3TW6uwaULOM0LNiXbkVO3VLI3Gzk++UXnHNerq3cC9d3Ddf65foWfff/u077aheteOtoREDkWObZHi3/LVDlc5Njuu1nHu0e88JylhUWcixonvO5p94HIsR37LrfsHMkkOf7n793xndW2K3/xvbuefm2XwZfuN0Ug1+DSBV/MCzaNHdu393a97GXVF75wfHXZ3b5YAQ/Acd/6anXFbY6qrr78kuq6Wxze5KZbfe/Q6vojD672Xn1FBRyNIw/7XrX32m3VvkOuqvZdt7U6CsC+g7dU+66/tlrZu6U65KDrKuBwrGy7vlrZu1gdtO/6anXrYtPXyr7FanXL3mrbymLV37LQfLe6b6HauuWGanVloeqv7Kte9gv3vOjMt332jquLg7/7qwvVtm1Af6VX9Vf3VX1+v7qv2rp1G+rVlaq/2qv6CyvVYr9XAVvBz/Vqr1pcGPxGGf2FXrXYX636q1WFLUDd71UL/dWq7lVV3V+tsGUL+v3V6vmnHP+J17znCz9W96sKi4tY6Perfr+q6t5qxXP4zofmnHrwd6+3WvFNEO3v7KvXG8is66qqq9Vqoe415zft+v2q16ua/37pJ+/0njd9+MJH9/r9Ck2f/QpYQK/qV825/X6jH/ti++bvps9+tcBHo+p+VVc8j/0Nzm3P+fmfuMPZb/nI13+pacbfQ5/8A71e897JXo2q5v/VVYUe0PzN35s+UfWCrejXVd1D9dgf/T+v/pt//d/n7z+HIFUD/QbnEKiqQhV0qftVr/m+UeDRdY1mydrQ8Smgfm8XrnvpaEfg5Hv9wEvf/6lvvMx+xmZp2cPJ97rNRGx4qXQBCV7OtOMDn/7mrhL1ffgJt33ZBz/9zZem1i01Lo844ba7Yvgghh3s8xH3us2uGfzyqHb8EDlOHdn55HWTHF95B9RVfW6vrv9oeHLICWe/nRw2E7qqWuAkLkzy+Dcncs08KkzohieHTfswoeMksJlXcdK4ECZ+7eSQk7Ch79o+m0kpJ5/7J451BfT2TzjXnxxycscJI6pe0KOdHPY4cUSPdg/0aiec604OBxPaRo+aZ3NCOfibvzST09bWob7Q2FpXvSATzeSV01HqUTWzXv456JNfhJOD/sO2UkLTfuxEuOZkvZlE839OvPMtn/JvX/3O2Zzx1qAsNP82evBvIjSYpTeT6kYv6smvwuR7wAz4/aBP9JqT+BUVb/pstB0ng9aEifqNk2/qP2ACw7ZSnwYM9taIDH83MhrlBrKaPgcT+cbDNfsbfN9A0/xP0wtnKM137bmDvwf6Hn2zg+566ZXXf6Xpc0Akghnh74AJ+w/nDP7ZL/9G2wfdtn8PTmzxbr4fwreNhWFbh3AMovb3PYTvwJ4DbB3Y0rm8ky9FS7IQEAJCQAgIASGQGwGR49weSCe/c5PUpnJ85R3SISRJQkAIxECAlYp68P+8b9Ew9XrwRXOE3/kvOXb7U1Ph2P8fP/CuRKDg5Pc10A/3GYbPbfts+2rlsN/QZ4X65odtu/3lV+29aLjPut/cSjhAbvMXb3M0dx5a5YI2w7rznkk/3CJo9OQdkbru9/mxuYUTdEZ9h1sf9qMXffuqfw0d8+7HflsGMvbr3tgcbgHVA3NZkG1uXw2w6Dewhj6a+y8UFLCt6h+6/ZGP+sJ/X/m3TR+Nfs1dLZ7Q6Ih+v9GvuUUY/LO/z+Y+0KDPPvrNXZ7B3ZyBfvc97pZPvuAr3/nzm9ga9OsH/QY1Ykod3HqizOZvxkLjx4G+lPaAux/9nI9+7tJXN7YNNi0ZnBPObW4pDtw+uKXZ/j5Q+jEAfmgkiP8TqN8dI7DVZz4EHn7CbV/6wU9/U5XjERf0ej2cdI9jO49N6Xbkir/UuMSyM4Yds/fZe2z7SE4McnzN7tvcE6v1iajqE5uBtK4u2Fb1PrH1jG/+R75MKsldJseXAdXnmolwmLwNip1hAthOmgYTrMEki1OqdiI8KKdx3hsm14NJa1NgDBP2/Yv1mj4HE8jhSdlon+1ktt8UM4cnwmFyPcPksFk02Kg/mEj2w+TVNjls6rs3YtMg1k58BzVX2jKYUA4WODa/c+Jbh78pkzY11c9BX41O/UAyes0XTf0XvarGaphcBz80MvpNzXogryk813V/les2Bzaxzyc8YPufv/kjFz6ZerAs3e/fqN/A/nbi26vBHe8bsYM21LVZdLoKNhvY0q9rimj+Zl+hz+bcXq+u+HuQhdUVcK1Br9+vV3sLddXr19xQvzmHf/f7NX/Hygra36v+Qt3r1fU+msHf2W61X68uDDDtrYbvFqjXQg3sQ7W6UPcW6nqlt1Dz96bdQr9eWV2sq4V+3VtdrIEbsNJbbH7nb9XCYv2ix97ty7/zjs/dubeyWvcWttS9xX69dy/PXa17i1vqhZXV+oaFrTWuvx7N34ur9Q37ttYLW1YHMvat1nsXV+qFfdvqxS0rzXfX37BSL2w5qF7ctlIv7j2oBq7CtdcfXC9u21dvOeiQest1++orAGw5+IZ6y7WH19sO2Vt/7+oja+BSbDvsuvqg7x1VX3bkNfXBlx9dA/+Fw25xTL38rSvqw29zXH2r4y+r8Q7gbnf7Yr1r10tbEsodZetSn9vJqVsq2bM+g7XesBnDjlmeJT15x9t/olfV7wdwaND9mrqqH3He7sf/03q26PduITBLnHTL0o1pW/pGVlZrSrcjRu6zYJMal1jXWQw7Zh3vHvnitz+o6tcfBLDVmxxf+/JjTkcPr67rZqnh4FVOnJyS2NR4zqEvueQP1/E/n7baCmD4EVP2dTCAayyxozbjEegsOa6Bx52357R3yLHzhUCuwaULKM4LNiXbkVO3VLJnnSysd63EsGPWydjDdp178617+z/2tJN+8L1v+NiFt/jQrsd9dz079Hv3EJg1TrpnsU3jGKTDJtm3Vel2xMh9FgRT4xLrOothh8d4d/ILzz2mt4D7ve5p93qX1439q3ff5qSq3//QWv6t0T/psDO+/eExbUikuRrqqYFMPze0eQqA5wD4JvjMKfBEAJdZYkhtDkSgk+T4n664/Y+fd9bj/0XOnD8Ecg0uXUByXrAp2Y6cuqWS7TFZWOt6iWGHx2Qstt1dyCHzrqNHnMwjRjFIRw6cSrcjRu6z4Jwal1jXWQw7PPO+l3+v/u2j714tVJ8EsG0t/1bAdauo73v4GZd+fqTdYQB+G2g2mvwUAJJjkmEuYrwZgO8BeD2AiwHstsSQ2swBOdarnOY3jL2SzzwiNC/YlGxHTt1SyfacLIy7zmLY4TEZi233POacrtnkESdds9mibwzSYZHr3aZ0O2LkPguGqXGJdZ3FsMMz73v599ozj30uUL+yHhDatY7VqqpecMiLL37thEbPAnCnQI7vCOB8AEuh7bMB3CNUly1hpDZDCHSycixyPL8x7JV85hGhecGmZDty6pZKtudkQeR4HjNNd22KNWnvLiIDzWOQjhyYlG5Hqhw+in1qXGJdZzHs8BzvvPx77ZnHvqVG/QTLNVSjeuthZ1zM5dHjjmFy/MMAd3nBnUPDJ4HvyAR+2SJHbQ5EQORYEVEUAl7JpyijnJSZF2xKtiOnbqlke04WRI6dLm5144JArEm7i3IZO4lBOnKYU7odqXK4yLE9+jzHOy//XvPyY85GhV80WnH2oWdcwmeJ1yPH3ISLG3MNXnI6WGrN4zVGOWo2hIDIscKhKAS8kk9RRjkpMy/YlGxHTt1SyfacLIgcO13c6sYFAZHj8TCWTiqtzi/djlQ5XOTYGjH7V030PTbS8vLvNa845hmom2eC11tWvYK6evahL7n4jQZyzCafBfBMAJ8DwM2+Xgrg7+xoqWWLgMixYqEoBLyST1FGOSkzL9iUbEdO3VLJFjle6ty455RC5r4bkWOR45xBniqHixzbvew53nn595ozjz0BqC9YlxxXfPdn78RDX/Stz6xBjvmM8fPC76cAeHP4fB4ALt1uXtupY2MIdG6SsGfPnlrPHG/MyV1q7ZV8umSzVdd5waZkO3Lqlkq252RhXOzGsMOD9MS223odq108BDziJJ52+XouveJqRaZ0O2LkPgs2qXGJdZ3FsMMz73v699ozj352jYrV47WO0w8945I3WGJgqM0hAI4MO1Vv8FQ1bxEQOVYsFIWAZ/IpyjAHZeYFm5LtyKlbKtmekwWRY4cLW124IRBr0u6mYKaOYpCOHKaUbkeqHD6KfWpcYl1nMezwHO+8/Xv1mcc+rEL9HgB8bzH/47EKYKXu90457De/pSXRORINAJHjTMBL7HgEvJPPPOE8L9iUbEdO3VLJ9pwsiBzPU4bpvi2xJu1dRyYG6ciBSel2pMrhIsf26PMc72L4d++eo+++utp7SL/CfdAHehU+uYr+h8e829hutFrOjIDI8cwQqgNPBGIkH0/9cvY1L9iUbEdO3VLJ9pwsiBznzAiSPYqAyPH4mCidVFojuXQ7UuVwkWNrxJS5IZdde7XMhYDIcS7kJXcsArkGly64Y16wKdmOnLqlki1yrA25upDvptFR5FjkeJq48TonVQ4XObZ7zHO8y+Vfu7Vq6YVAbHJ8UFg/v29IYb6Di+/jumbEiEMBXAdwYcHkQxtyebm+zH6UfCb7ZV6wKdmOnLqlku05WRgXrTHs8CA9se0uM6NuLq084mQeESu94mrFvHQ7YuQ+CzapcYl1ncWwwzPv5/KvJQbUxheBWOSYRPfuAF4ZXkD97qA2X2T9HADfDFuYPzFsM/5WPoAO4PYAXgXg7Elmihz7BkBpvSn5iBznjMmc8ZdKtudkQeQ4Z7RK9igCsSbtXUc6BunIgUnpdqTK4aPYp8Yl1nUWww7P8S6Xf3Nca5tdZixy/CMAfhHAowG8AADJMV92zQryzQB8D2hegH1xIMeHAzgDwDHhO5Lra8c5R+R4vkNWyUfkOGeE54y/VLI9JwsixzmjVbJFjm0xEIN02CT7tirdjlQ5XOTYHlee410u/9qtVUsvBGKR41a/dwJ4SyDHdwRwPgC+sJrHswHcI5Bjfn9O2D2by6rZZlnk2MvN3elHyUfkOGe05oy/VLI9JwsixzmjVbJFjm0xUDqptFmxf3Ol1aWlJT6eV9yRKoeLHNtd7zne5fKv3Vq19EIgJTn+YQDvAHDnoPyTADwAwBEAzgVAIs3jUgAnArho9+7du6qqeumosaeeeqqX/epHCAgBISAEhIAQEAJCQAgIASGwJgJLS9rQcTOESEpyzE24uFSad/xqAM8NAHNJ9fcBvDa8BPuKsPS6zzs+o04466yz+jt27CjyruFmCJjYNi4vL/e3b98u/44Bel6wKdmOnLollF0tLy+vxrrOYtgR9F2YMf9EtXtG3XS6AwJOceKgSXFdMPZXtm/fPus1lNuwou2IkfuMgCfFJeJ1FsMOt7xP/4ocGyOy481SkmNC9VkAzwTwOQAfAsCqMHe0Ph3ASQBYEn4egPtNwlXPHHc84tZRX8tWJgM0L9iUbEdO3VLJ9lxmNi5aY9jhsQFMbLvnOzN3wzqPOOmGpRvTUsuqN4bXtK1j5D6LLqn9G+s6i2GHZ97P5V9LDKiNLwIpyPGbAfxNUPsUAPybx3kAnhDI8fsBHB9e8fRQABeIHPs6uiu9KfmIHOeM1Zzxl0q252RB5DhntEr2KAKxJu1dRzoG6ciBSel2pMrho9inxiXWdRbDDs/xLpd/c1xrm11mbHI8Dt9DABwZdqUe/v12AC4JO1pP9Isqx/Mdsko+Isc5Izxn/KWS7TlZEDnOGa2SLXJsi4EYpMMm2bdV6XakyuEix/a48hzvcvnXbq1aeiGQgxzPpLvI8UzwFX+yko/Icc4gzRl/qWR7ThZEjnNGq2SLHNtioHRSabNCu1VPwim1f1U5tkas2nUVAZHjrnpuTvVORRC6CN+8YFOyHTl1SyVb5Fi7jXYx/1l0jjVpt8guuU1q8hQLi9LtSJXDVTm2R5jneJfLv3Zr1dILAZFjLyTVjwsCSj6qHLsE0pSd5Iy/VLI9JwuqHE8ZaDotCgIix+NhLZ1UWoOhdDtS5XCRY2vE7F9t4LLLdC7/2q1VSy8ERI69kFQ/Lggo+YgcuwTSlJ3kjL9UskWOVTme8vIo/jSRY5HjnEGaKoeLHNu97Dne5fKv3Vq19EJA5NgLSfXjgoCSj8ixSyBN2UnO+Esl23OyoMrxlIGm06IgIHIschwlsIydpsrhIsdGh0CVYztSajmMgMix4qEoBHINLkWBMEGZecGmZDty6pZKtsixKsddyHfT6ChyLHI8Tdx4nZMqh4sc2z3mOd7l8q/dWrX0QkDk2AtJ9eOCgJKPKscugTRlJznjL5Vsz8mCKsdTBppOi4KAyLHIcZTAMnaaKoeLHBsdosqxHSi1PAABkWMFRFEI5BpcigJBleNs7sgZf6lkixyrcpztAossWORY5DhyiK3ZfaocLnJs97LneJfLv3Zr1dILAZFjLyTVjwsCSj6TYZwXbEq2I6duqWR7ThZUOXZJe+rECQGRY5Fjp1CaqptUOVzk2O4ez/Eul3/t1qqlFwIix15Iqh8XBJR8RI5dAmnKTnLGXyrZnpMFkeMpA02nRUFA5FjkOEpgGTtNlcNFjo0O0bJqO1BqeQACIscKiKIQyDW4FAXCBGXmBZuS7cipWyrZIsdaVt2FfDeNjiLHIsfTxI3XOalyuMix3WOe410u/9qtVUsvBESOvZBUPy4IKPmocuwSSFN2kjP+Usn2nCyocjxloOm0KAiIHIscRwksY6epcrjIsdEhqhzbgVJLVY4VA+UikGtwKReRGzWbF2xKtiOnbqlkixyrctyFfDeNjiLHIsfTxI3XOalyuMix3WOe410u/9qtVUsvBFQ59kJS/bggoOSjyrFLIE3ZSc74SyXbc7KgyvGUgabToiAgcixyHCWwjJ2myuEix0aHqHJsB0otVTlWDJSLQK7BpVxEVDlO6Zuc8ZdKtsixKscpr6mUskSORY5TxtuorFQ5XOTY7mXP8S6Xf+3WqqUXAqoceyGpflwQUPKZDOO8YFOyHTl1SyXbc7KgyrFL2lMnTgiIHIscO4XSVN2kyuEix3b3eI53ufxrt1YtvRAQOfZCUv24IKDkI3LsEkhTdpIz/lLJ9pwsiBxPGWg6LQoCIscix1ECy9hpqhwucmx0iJZV24FSywMQEDlWQBSFQK7BpSgQJigzL9iUbEdO3VLJFjnWsuou5LtpdBQ5FjmeJm68zkmVw0WO7R7zHO9y+ddurVp6ISBy7IWk+nFBQMlHlWOXQJqyk5zxl0q252RBleMpA02nRUFA5FjkOEpgGTtNlcNFjo0OUeXYDpRaqnKsGCgXgVyDS7mI3KjZvGBTsh05dUslW+RYleMu5LtpdBQ5FjmeJm68zkmVw0WO7R7zHO9y+ddurVp6IaDKsReS6scFASUfVY5dAmnKTnLGXyrZnpMFVY6nDDSdFgUBkWOR4yiBZew0VQ4XOTY6RJVjO1BqqcqxYqBcBHINLuUiospxSt/kjL9UskWOVTlOeU2llCVyLHKcMt5GZaXK4SLHdi97jne5/Gu3Vi29EFDl2AtJ9eOCgJLPZBjnBZuS7cipWyrZnpMFVY5d0p46cUJA5Fjk2CmUpuomVQ4XOba7x3O8y+Vfu7Vq6YWAyLEXkurHBQElH5Fjl0CaspOc8ZdKtudkQeR4ykDTaVEQEDkWOY4SWMZOU+VwkWOjQ7Ss2g6UWh6AgMixAqIoBHINLkWBMEGZecGmZDty6pZKtsixllV3Id9No6PIscjxNHHjdU6qHC5ybPeY53iXy792a9XSCwGRYy8k1Y8LAko+qhy7BNKUneSMv1SyPScLqhxPGWg6LQoCIscix1ECy9hpqhwucmx0iCrHdqDUUpVjxUC5COQaXMpF5EbN5gWbku3IqVsq2SLHqhx3Id9No6PIscjxNHHjdU6qHC5ybPeY53iXy792a9XSCwFVjr2QVD8uCCj5qHLsEkhTdpIz/lLJ9pwsqHI8ZaDptCgIiByLHEcJLGOnqXK4yLHRIaoc24FSS1WOFQPlIpBrcCkXEVWOU/omZ/ylki1yrMpxymsqpSyRY5HjlPE2KitVDhc5tnvZc7zL5V+7tWrphYAqx15Iqh8XBJR8JsM4L9iUbEdO3VLJ9pwsqHLskvbUiRMCIscix06hNFU3qXK4yLHdPZ7jXS7/2q1VSy8ERI69kFQ/Lggo+YgcuwTSlJ3kjL9Usj0nCyLHUwaamxBeaAAAIABJREFUTouCgMixyHGUwDJ2miqHixwbHaJl1Xag1PIABESOFRBFIZBrcCkKhAnKzAs2JduRU7dUskWOtay6C/luGh1FjkWOp4kbr3NS5XCRY7vHPMe7XP61W6uWXgiIHHshqX5cEFDyUeXYJZCm7CRn/KWS7TlZUOV4ykDTaVEQEDkWOY4SWMZOU+VwkWOjQ1Q5tgOllqocKwbKRSDX4FIuIjdqNi/YlGxHTt1SyRY5VuW4C/luGh1FjkWOp4kbr3NS5XCRY7vHPMe7XP61W6uWXgiocuyFpPpxQUDJR5Vjl0CaspOc8ZdKtudkQZXjKQNNp0VBQORY5DhKYBk7TZXDRY6NDlHl2A6UWqpyrBgoF4Fcg0u5iKhynNI3OeMvlWyRY1WOU15TKWWJHIscp4y3UVmpcrjIsd3LnuNdLv/arVVLLwRUOfZCUv24IKDkMxnGecGmZDty6pZKtudkQZVjl7SnTpwQEDkWOXYKpam6SZXDRY7t7vEc73L5126tWnohIHLshaT6cUFAyUfk2CWQpuwkZ/ylku05WRA5njLQdFoUBESORY6jBJax01Q5XOTY6BAtq7YDpZYHICByrIAoCoFcg0tRIExQZl6wKdmOnLqlki1yrGXVXch30+gocixyPE3ceJ2TKoeLHNs95jne5fKv3Vq19EJA5NgLSfXjgoCSjyrHLoE0ZSc54y+VbM/JgirHUwaaTouCgMixyHGUwDJ2miqHixwbHaLKsR0otVTlWDFQLgK5BpdyEblRs3nBpmQ7cuqWSrbIsSrHXch30+gocixyPE3ceJ2TKoeLHNs95jne5fKv3Vq19EIgR+W4B+BQAFeNGMHvrgPQX8u4PXv21Dt37syhtxfm6mcNBJR8JoMzL9iUbEdO3VLJ9pwsqHKsdF4SAiLHIsc54zFVDhc5tnvZc7zL5V+7tWrphUBqkvlkAKcAuBrAEQCeAmABwFsBrAC4PYBXATh7koEix16uL7MfJR+R45yRmTP+Usn2nCyIHOeMVskeRUDkWOQ451WRKoeLHNu97Dne5fKv3Vq19EIgNTm+FMBDAHwOwAcB/CmAJQCHAzgDwDEALg6V5WvHGSly7OX6MvtR8hE5zhmZOeMvlWzPyYLIcc5olWyRY1sMhGt+dWlpiSv3OnuUbkeqHC5ybA9hz/Eul3/t1qqlFwKpyfFLATwBwBcA3AfAjwB4JYDzAZwDgPpwWTUJ87LIsZebu9OPko/Icc5ozRl/qWR7ThZEjnNGq2SLHNtioHRSabMCKN2OVDlc5NgaMftjpr+0NPteE7n8a7dWLb0QSE2O/xnA9wF8FsCzAJwE4HkAzgXwzmAUq8snArho9+7du6qq+q0RY6tTTz219gJA/RSHAGNS/h3vlnnBpmQ7cuqWUnZMWTH69urTq5/iEqcUahCQfycHwrxgU7IdOXVLKTumrBh9e/VZeZBs5eryEUhJju8E4GsADgkbb7GKfCSAKwNhfm14/vgKADdjBZl3CUchPOuss/o7duzo9NKg8sMin4bLy8v97du3y79jXDAv2JRsR07dEsqulpeXV2NdZzHsCPpyf4pZjqh2z6KYzvVBwClOfJQpqxfG/sr27dtnvYZyW1W0HTFynxHwpLhEvM5i2OGW9+lfkWNjRHa8WUpyTFJ8CYC7A/hvAG8C8BkA3wRweqginxoqyfebhKueOe54xK2jvpatTAZoXrAp2Y6cuqWSrWXVsy+vm+8s3F3rtCHXeN+VvhzZGnGl25Eqh4/ilRqXWNdZDDs8x7tc/rVeH2rnh0BKckytfx3A7wC4jMumAZwWdq5+P4DjARwM4KEALhA59nNyl3pS8hE5zhmvOeMvlWzPycI4X8Www2MyFtvunHEr2QMEPOJkHrGMQTpy4FS6HTFynwXn1LjEus5i2OGZ93P51xIDauOLQGpyTO23Arh5qCIPW3O78N2+tUxU5dg3AErrTclH5DhnTOaMv1SyPScLIsc5o1WyRxGINWnvOtIxSEcOTEq3I1UOH8U+NS6xrrMYdniOd7n8m+Na2+wyc5DjmTAXOZ4JvuJPVvIROc4ZpDnjL5Vsz8mCyHHOaJVskWNbDMQgHTbJvq1KtyNVDhc5tseV53iXy792a9XSCwGRYy8k1Y8LAko+IscugTRlJznjL5Vsz8mCyPGUgabToiAQq6IVRdmEnZZOKq1QlG5HqhwucmyNGL3KyY6UWg4jIHKseCgKgVyDS1EgTFBmXrAp2Y6cuqWSLXKsDbm6kO+m0VHkeDxqpZNKq69LtyNVDhc5tkaMyLEdKbUUOVYMFItArsGlWECGFJsXbEq2I6duqWSLHIscdyHfTaOjyLHI8TRx43VOqhwucmz3mOd4l8u/dmvV0gsBVY69kFQ/Lggo+UyGcV6wKdmOnLqlku05WRgXrTHs8CA9se12SYDqZCYEPOJkJgUKPbn0iqsVttLtiJH7LNikxiXWdRbDDs+8n8u/lhhQG18ERI598VRvMyKg5CNyPGMIzXR6zvhLJdtzsiByPFO46WRnBGJN2p3VTN5dDNKR3AjsXyK7urS01Mshfz2ZqXL4qB6p/RvrOothh+d4l8u/68WdfvdHQOTYH1P1OAMCSj4ixzOEz8yn5oy/VLI9JwsixzOHnDpwRCDWpN1RxSxdxSAdOQwp3Y5UOVzk2B59nuNdLv/arVVLLwSs5PgIAM8BcCaAXQDuCuB3AXzCSxFrP3qVkxWpbrZT8hE5zhm5OeMvlWzPyYLIcc5olexRBESOx8dE6aTSGsml25Eqh4scWyNGG3LZkVLLYQSs5Pg9AB4F4GcA/HXo4BsAbpcaTpHj1IinlZdrcElr5XTS5gWbku3IqVsq2SLH2pBrugxU/lkixyLHOaM0VQ4XObZ72XO8y+Vfu7Vq6YWAhRwvAtgH4OkATgoEmZXjLwG4C4CveClj6Ufk2IJSd9so+ahynDN6c8ZfKtmekwVVjnNGq2SrcmyLgdIrrjYr9MzxJJxS+zfWTagYdniOd6nGaOv1oHbxELCQ4wUA3wLwBgAvAPAPAP4CwLsAHAvgknjq3bRnkeOUaKeXpeQjcpw+6m6UmDP+Usn2nCyIHOeMVskWObbFQAzSYZPs26p0O1Ll8FFUU+Micuwb1+qtPAQs5Jha8/ni5wf1TwbwdgBfA3Cv1CaJHKdGPK28XINLWiunkzYv2JRsR07dUskWOday6ukyUPlnxZq0l2/52hqmJk+x8CrdjlQ5XOTYHmGe410u/9qtVUsvBKzkmO0exJ30AXwUwDMBnAvgMi9FrP2IHFuR6mY7JZ/JfpsXbEq2I6duqWR7ThbGRWsMOzxIT2y7u5lx50trjziZL0QG1pROKq2Yl25HjNxnwSY1LrGusxh2eOb9XP61xIDa+CJgJceUuh3AkUF8P/z7eQCrviqt3ZvIcUq008tS8hE5Th91N0rMGX+pZHtOFkSOc0arZI8iEGvS3nWkY5COHJiUbkeqHD6KfWpcYl1nMezwHO9y+TfHtbbZZVrJ8esBPHsMWCTL308JoshxSrTTy1LyETlOH3Uix56Yx7iGPSZjnpMkT7zUlx8CHnHip005PcUgHTmsK92OGLnPgnNqXGJdZzHs8Mz7ufxriQG18UXAQo65IdcKgGUAbxqpFJM03+Cr0tq9iRynRDu9LCUfkeP0USdy7Il5jGvYYzLmOUnyxEt9+SHgESd+2pTTUwzSkcO60u2IkfssOKfGJdZ1FsMOz7yfy7+WGFAbXwQs5JgS+bqm8wA8z1f8xnsTOd44Zl06Q8lH5DhnvOaMv1SyPScL43wVww6PyVhsu3PGrWQPEPCIk3nEMgbpyIFT6XbEyH0WnFPjEus6i2GHZ97P5V9LDKiNLwJWcvy0UDX+JIDrh1R4OIBrfVVauzeR45Rop5el5CNynD7qbpSYM/5SyfacLIgc54xWyR5FINakvetIxyAdOTAp3Y5UOXwU+9S4xLrOYtjhOd7l8m+Oa22zy7SQY7bhu4xvDeDbI8uo7wrg6pQgihynRDu9LCUfkeP0USdy7Il5jGvYYzLmOUnyxEt9+SHgESd+2pTTUwzSkcO60u2IkfssOKfGJdZ1FsMOz7yfy7+WGFAbXwQs5LgH4EoAf6Jl1b7gq7ebIqDkI3Kc87rIGX+pZHtOFlQ5zhmtkq3KsS0GYpAOm2TfVqXbkSqHq3JsjyvP8S6Xf+3WqqUXAhZyTFlvB/BDAHYD2Dsk/N1hsy4vfdbtR5XjdSHqdAMlH5HjnAGcM/5SyfacLIgc54xWyRY5tsVA6aTSZkX572tOlcNFjq0Rsz9m+ktLS1a+M7HzXP61W6uWXghYg+XSsKx6VK5e5eTlCfXTIKDkI3Kc81LIGX+pZIsczz5Jyhmjkr1mjuQkmKvddAwhIHKcJhxS5XCRY7s/Pce7XP61W6uWXghYyfGDAGwbI/R8VY69XKF+RI7XjoF5Scwl25FTt1SyPScL4yI2hh0ez7jFtlsZPD8CHnGS3wp/DUSO/TFNlfssmqf2b6zrLIYdnnk/xthm8a/apEfASo7TazZBopZVF+OKKIoo+axZFak9lgZFcdwGOi3Zxzl1SyXbc7KQaoLoMRmLbfcGLgE1jYSAR5xEUi1rtzFIRw6DSrcjVQ4fxT41LrGusxh2eOb9XP7Nca1tdpkix5s9AgqzX8lH5DhnSOaMv1SyPScLIsc5o1WyRxGINWnvOtIxSEcOTEq3I1UOFzm2R5/neJfLv3Zr1dILAZFjLyTVjwsCSj4ixy6BNGUnOeMvlWzPyYLI8ZSBptOiICByPB7W0kmlNRhKtyNVDhc5tkaMNuSyI6WWwwhshBzfM+xYPXz+OQD2pYRUy6pTop1eVq7BJb2lG5c4L9iUbEdO3VLJFjnWhlwbzz7dOEPkWOQ4Z6SmyuEix3Yve453ufxrt1YtvRCwkmO+4/ipY4Rqt2ovT6ifBgEln8mBMC/YlGxHTt1SyfacLKhyrMRdEgIixyLHOeMxVQ4XObZ72XO8y+Vfu7Vq6YWAhRwvhB2pPw7gzJFK8Ue1W7WXK9SPyPHaMTAviblkO3Lqlkq252RB5Fh5uyQERI5FjnPGY6ocLnJs97LneJfLv3Zr1dILAQs5pqwvAPgAgBd4CZ62Hy2rnha5bpyn5KPKcc5IzRl/qWR7ThZEjnNGq2SPIiByLHKc86pIlcNFju1e9hzvcvnXbq1aeiFgJcfvAfAoAO8AcPmQ8OcCuN5LGUs/IscWlLrbRslH5Dhn9OaMv1SyPScLIsc5o1WyRY5tMVD6RlY2K/ZvrrS6tLTUs56Tsl2qHC5ybPeq53iXy792a9XSCwErOb4UwK3HCNUzx16eUD8NAko+Isc5L4Wc8ZdKtudkQeQ4Z7RKtsixLQZEjm04zdoqVQ4XObZ7ynO8y+Vfu7Vq6YWAlRwvAhjXNulO1TRalWMv15fZj5KPyHHOyMwZf6lke04WRI5zRqtkixzbYkDk2IbTrK1S5XCRY7unPMe7XP61W6uWXgisRY5JiP8MwDsBPBQAq8Sjx9MBXOeljKUfkWMLSt1to+QjcpwzenPGXyrZnpMFkeOc0SrZIse2GBA5tuE0a6tUOVzk2O4pz/Eul3/t1qqlFwJrkeOtAPYCeDGA52hZtRfk6mctBJR8RI5zXiE54y+VbM/JgshxzmiVbJFjWwyIHNtwmrVVqhwucmz3lOd4l8u/dmvV0guB9ZZV8zVOfQCTNj9Y9VLE2o8qx1akutlOyUfkOGfk5oy/VLI9JwsixzmjVbJFjm0xIHJsw2nWVqlyuMix3VOe410u/9qtVUsvBNYjx15y3PoROXaDssiOlHxEjnMGZs74SyXbc7IgcpwzWiVb5NgWAyLHNpxmbZUqh4sc2z3lOd7l8q/dWrX0QkDk2AtJ9eOCgJKPyLFLIE3ZSc74SyXbc7IgcjxloOm0KAjoPcfjYRU5jhJuN+k0VQ4XObb703O8y+Vfu7Vq6YWAyLEXkurHBQElH5Fjl0CaspOc8ZdKtudkQeR4ykDTaVEQEDkWOY4SWMZOU+VwkWOjQ7D/3dj9paWlmflOLv/arVVLLwSswXI0gMcBuMeI4NO1W7WXK9QPEVDyETnOeSXkjL9UskWOZ58k5YxRyV4zR3ISPGmPlE0LnSrHaVyfKoeLHNv96Tne5fKv3Vq19ELASo7/HsCDxwjl652+76WMpR89c2xBqbttlHxEjnNGb874SyXbc7Iwzlcx7PCoCMa2O2fcSvYAAY84mUcsRY7TeDVG7rNontq/sa6zGHZ45v1c/rXEgNr4ImAhx9yxeiW88/h5APYNqXDtFOpQ5s0AXDFy7qGhCs3dsSceIsdTIN6hU5R8RI5zhmvO+Esl23OyIHKcM1olexSBWJP2riMdg3TkwKR0O1Ll8FHsU+MS6zqLYYfneJfLvzmutc0u00KOidH7AVwP4LEzAnYSgN0AvgDgCAA7AFwO4K2BgN8ewKsAnD1JjsjxjB4o/HQlH5HjnCGaM/5SyfacLIgc54xWyRY5tsVADNJhk+zbqnQ7UuVwkWN7XHmOd7n8a7dWLb0QsJLjfwNwHwBXAbhsSPgPA7hmA8pcCuBeAL4B4K7h/cmPAnA4gDMAHAPgYgCsIo+tSoscbwDtDjZV8hE5zhm2OeMvlWzPyYLIcc5olWyRY1sMlE4qbVbs31xptdTnylPlcJFja8RoQy47Umo5jICVHJ8L4FZjoHvkJBI7pu0hgUi/G8BDALwZwG8AeC2A8wGcA4D6cFn1EoDlca4SOZ7vAM41uHQB1XnBpmQ7cuqWSrbIsTbk6kK+m0bHWMs9p9GlpHNEjtN4I1UOFzm2+9NzvMvlX7u1aumFgJUct/K4FHrbSPXYqsudAHwtLKV+F4A/BPCXAE4BQPL9ztARq8snArho9+7du6qq+q0RAdWpp55aW4WqXecQYEzKv+PdNi/YlGxHTt1Syo4pK0bfXn169dO5xLpJFJZ/Jzt6XrAp2Y6cuqWUHVNWjL69+qw8Xgm1SXJxp820kuPtAPYAODVY+2EALwfwjxuw/paBVLc7XP9C2AGbFWLueM0KMjf/4kZd3LCrzzs+o/2fddZZ/R07duhVDRsAvktNl5eX+9u3b5d/xzhtXrAp2Y6cuiWUXS0vL6/Gus5i2BH05fgwyxHV7lkU07k+CDjFiY8yZfXC2F/Zvn37rNdQbquKtiNG7jMCnhSXiNdZDDvc8j79K3JsjMiON7OSY1Z2SYz579VDJJnPCFt3rKas/wHwKwA+COCPAFwQCDPfl8zNuiiDO2LfbxKuWlbd8YhbR30tW5kM0LxgU7IdOXVLJdtzmdm4aI1hh8dy2dh2z3dm7oZ1HnHSDUs3pqWWVW8Mr2lbx8h9Fl1S+zfWdRbDDs+8n8u/lhhQG18ELOT4KADfBfASAGcG8T8NgEujTwDwmQ2oxGeNXxd2qv4XAM8Ir2/ibtjHAzgYwEMDaR7brcjxBtDuYFMlH5HjnGGbM/5SyfacLIgc54xWyR5FINakvetIxyAdOTAp3Y5UOXwU+9S4xLrOYtjhOd7l8m+Oa22zy7SQ48XwbuO/AvDLAFYB7AzLqo8LzxFvBEfKbAn38Hm3A3DJyHuUb9KvyPFGoO5eWyUfkeOcUZsz/lLJ9pwsiBznjFbJFjm2xUAM0mGT7NuqdDtS5XCRY3tceY53ufxrt1YtvRCwkGPK+lMAvxSE8nVOfPUSl1j/nJci1n5Ejq1IdbOdko/Icc7IzRl/qWR7ThZEjnNGq2SLHNtioHRSabNCr3KahFNq/6pybI1YtesqAlZyzOXOjwlkmBtq8bVLJMfcPCvpIXKcFO7kwlIRhOSGOQicF2xKtiOnbqlkixzrVU4O6ajILmJN2os0dgNKpSZPG1BtQ01LtyNVDh8FLTUusa6zGHZ4jne5/Luhi0SNXRBYjxz/IIDLw+7R43Y5vDC8l9hFGUsnIscWlLrbRslnsu/mBZuS7cipWyrZnpOFcdEaww6PyVhsu7ubdedHc484mR80brQkBunIgVPpdsTIfRacU+MS6zqLYYdn3s/lX0sMqI0vAmuR460A9gJ4MYDnALj1GNHta5l8tVqjN5HjZFBnEaTkI3KcJfCC0Jzxl0q252RB5DhntEr2KAKxJu1dRzoG6ciBSel2pMrho9inxiXWdRbDDs/xLpd/c1xrm13mWuSYleIdAD4G4N4ADh0D1u8CuCEliCLHKdFOL0vJR+Q4fdTdKDFn/KWS7TlZEDnOGa2SLXJsi4EYpMMm2bdV6XakyuEix/a48hzvcvnXbq1aeiGw3rLqVs4zAXwEwJfCF9xt+lkAfh/A97yUsfQjcmxBqbttlHxEjnNGb874SyXbc7IgcpwzWiVb5NgWA6WTSpsV2pBrEk6p/avKsTVi1a6rCKxHjh8E4GEASI4/CuCLwVC+dukJAG4L4FspjRc5Tol2elmpCEJ6y2aXOC/YlGxHTt1SyRY51oZcs2ejMnuINWkv01q7VqnJk12zjbUs3Y5UOXwUtdS4xLrOYtjhOd7l8u/GrhK19kBgPXL8GwDOmiDokwDu66HERvoQOd4IWt1rq+Qz2Wfzgk3JduTULZVsz8mCKsfdy7HzrHGsSXvXMYtBOnJgUrodqXK4yLE9+jzHu1z+tVurll4IrEeOtwHga5zeDeANAM4fEszl1LWXItZ+RI6tSHWznZKPyHHOyM0Zf6lke04WRI5zRqtkjyIgcjw+JkonldZILt2OVDlc5NgaMfuX4veXlmZfMZTLv3Zr1dILgfXIcSuHBPkpAPhqJx49AHcF8FgAV3spY+lH5NiCUnfbKPmIHOeM3pzxl0q2yPHsk6ScMSrZa+ZIToI5P9ExhEDppNLqrNLtSJXDRY6tESNybEdKLYcRsJLj9wF45BjoDhc5VkB5IpBrcPG0IVZf84JNyXbk1C2VbJFjkeNYOSp3v6ocj/dA6aTSGjel25Eqh4scWyNG5NiOlFpulBwvAtgXXut0CoD3AFgNG3LxFU9Jl1arcjzfAZxrcOkCqvOCTcl25NQtlWyRY5HjLuS7aXQUORY5niZuvM5JlcNFju0e8xzvcvnXbq1aeiFgqRxziRLJ8GsAXAfgngBeAOALYWn1l72UsfQjcmxBqbttlHwm+25esCnZjpy6pZLtOVkYF60x7PAgPbHt7m7WnR/NPeJkftC40ZLSK65WzEu3I0bus2CTGpdY11kMOzzzfi7/WmJAbXwRsJBjSvxLAE8C8HgAbxtSQcuqff2x6XtT8hE5znkR5Iy/VLI9JwsixzmjVbJHEYg1ae860jFIRw5MSrcjVQ5X5dgefZ7jXS7/2q1VSy8ErOSYu1afBODvATwOwL0AvB3AP3spYu1HlWMrUt1sp+QjcpwzcnPGXyrZnpMFkeOc0SrZIse2GCidVNqs2P/86Gqpm66lyuEix9aI0TPHdqTUchgBCznmM8ffBfBeAE/MDZ/IcW4PxJWfa3CJa5VP7/OCTcl25NQtlWyRYz1z7JORyutFlePxPhE5ThOrqXK4yLHdn57jXS7/2q1VSy8ELOSYsl4H4NcAPBTAl4Y24bpYG3J5uUL9EAElH1WOc14JOeMvlWzPyYIqxzmjVbJVObbFgMixDadZW6XK4SLHdk95jne5/Gu3Vi29ELCS40sB3HqM0CMBfN9LGUs/qhxbUOpuGyUfkeOc0Zsz/lLJ9pwsiBznjFbJFjm2xYDIsQ2nWVulyuEix3ZPeY53ufxrt1YtvRCwkuOdAA4dI/TlAPZ6KWPpR+TYglJ32yj5iBznjN6c8ZdKtudkQeQ4Z7RKtsixLQZEjm04zdoqVQ4XObZ7ynO8y+Vfu7Vq6YWAlRwfBWBcWz6LnPQQOU4Kd3JhSj4ix8mDbkhgzvhLJdtzsiBynDNaJVvk2BYDIsc2nGZtlSqHixzbPeU53uXyr91atfRCwEqOtazaC3H1syYCSj4ixzkvkZzxl0q252RB5DhntEq2yLEtBkSObTjN2ipVDhc5tnvKc7zL5V+7tWrphYCVHL8MAN9pzOMwAKcB+F8AJ2hZtZcr1A8RUPIROc55JeSMv1SyPScLIsc5o1WyRY5tMSBybMNp1lapcrjIsd1TnuNdLv/arVVLLwSs5HhU3lMA/BmAmwO4wksZSz9aVm1BqbttlHxEjnNGb874SyXbc7IgcpwzWiVb5NgWAyLHNpxmbZUqh4sc2z3lOd7l8q/dWrX0QsBKjh8F4KAgdAHAzwN4JIA7ArjISxlLPyLHFpS620bJR+Q4Z/TmjL9Usj0nCyLHOaNVskWObTEgcmzDadZWqXK4yLHdU57jXS7/2q1VSy8ErOR43DPHHwdwf73n2MsV6ocIKPmIHOe8EnLGXyrZnpMFkeOc0SrZIse2GBA5tuE0a6tUOVzk2O4pz/Eul3/t1qqlFwJWcvyQocpxHZ43/jKAG7wUsfajyrEVqW62U/IROc4ZuTnjL5Vsz8mCyHHOaJVskWNbDIgc23CatVWqHC5ybPeU53iXy792a9XSCwELOT4awBMAHAfgWwBYMf4kgKu8lNhIPyLHG0Gre22VfESOc0ZtzvhLJdtzsiBynDNaJVvk2BYDIsc2nGZtlSqHixzbPeU53uXyr91atfRCYD1yfBcAXxojjMT4xwF8zksRaz8ix1akutlOyUfkOGfk5oy/VLI9JwsixzmjVbJFjm0xIHJsw2nWVqlyuMix3VOe410u/9qtVUsvBNYjxx8B8EAALwDwrwD6AB4M4EwAnwBwPy9FrP2IHFuR6mY7JR+R45yRmzP+Usn2nCyIHOeMVskWObbFgMixDadZW6XK4SLHdk95jne5/Gu3Vi29EFiPHPP54g8BePiIwFcDeG54DnmvlzKWfkSOLSh1t42Sj8hxzujNGX+pZHtOFkSOc0arZIsc22JA5NiG06ytUuVwkWO7pzzHu1z+tVurll4IWMjxbwJ4+YjApwN4I4AjAXzfSxlLPyLHFpT1C9Y+AAAgAElEQVS620bJR+Q4Z/TmjL9Usj0nCyLHOaNVskWObTEgcmzDadZWqXK4yLHdU57jXS7/2q1VSy8ELOSYy6c/NiLwBAAPFTn2coP6aRFQ8hE5znk15Iy/VLI9JwsixzmjVbJFjm0xIHJsw2nWVqlyuMix3VOe410u/9qtVUsvBCzkeC1Zqhx7eUL9NAgo+Ygc57wUcsZfKtmekwWR45zRKtkix7YYEDm24TRrq1Q5XOTY7inP8S6Xf+3WqqUXAuuR4zutI2g5bNLlpc+6/WhZ9boQdbqBko/Icc4Azhl/qWR7ThZEjnNGq2SLHNtiQOTYhtOsrVLlcJFju6c8x7tc/rVbq5ZeCKxHjr3kuPUjcuwGZZEdKfmIHOcMzJzxl0q252RB5DhntEq2yLEtBkSObTjN2ipVDhc5tnvKc7zL5V+7tWrphYDIsReS6scFASUfkWOXQJqyk5zxl0q252RB5HjKQNNpURC48MIL+0tLS70onXe4U5HjNM5LlcNFju3+9BzvcvnXbq1aeiEgcuyFpPpxQUDJR+TYJZCm7CRn/KWS7TlZEDmeMtB0WhQERI7HwypyHCXcbtJpqhwucmz3p+d4l8u/dmvV0gsBkWMvJNWPCwJKPiLHLoE0ZSc54y+VbM/JgsjxlIGm06IgIHIschwlsIydpsrhIsdGhwDwHO9y+ddurVp6ISBy7IWk+nFBQMlH5NglkKbsJGf8pZLtOVkQOZ4y0HRaFAREjkWOowSWsdNUOVzk2OgQkWM7UGp5AAIixwqIohDINbgUBcIEZeYFm5LtyKlbKtkix0udG/e6kJ9K0FHkWOQ4ZxymyuEix3Yve453ufxrt1YtvRDo3CRBu1V7ub7MfpR8VDnOGZk54y+VbM/JgirHOaNVskcREDkWOc55VaTK4SLHdi97jne5/Gu3Vi29EMhFjhcBHAXgsiFDDgVw3XrvTRY59nJ9mf0o+Ygc54zMnPGXSrbnZEHkOGe0SrbIsS0GtCGXDadZW6XK4SLHdk95jne5/Gu3Vi29EMhFjn8PwN0BnATglgDeCmAFwO0BvArA2ZMMFDn2cn2Z/Sj5iBznjMyc8ZdKtudkQeQ4Z7RKtsixLQZEjm04zdoqVQ4XObZ7ynO8y+Vfu7Vq6YVADnJ8CoBfBcDqMcnxTgCHAzgDwDEALgbAKvK144wUOfZyfZn9KPmIHOeMzJzxl0q252RB5DhntEq2yLEtBkSObTjN2ipVDhc5tnvKc7zL5V+7tWrphUBqcrwdwBsBvBzASwI5/hMA5wM4BwD16QNYArAscuzl5u70o+QjcpwzWnPGXyrZnpMFkeOc0SrZIse2GBA5tuE0a6tUOVzk2O4pz/Eul3/t1qqlFwIpyfFBAD4C4KkAbgZgVyDH5wLgf+8MRl0K4EQAF+3evXtXVVUvHTX21FNP9bJf/QgBISAEhIAQEAJCQAgIASEgBNZEYGlJbzvYDCGSkhxzCfWHAHwSwJEAjgPwJgDfBPB9AK8FsADgikCe+7zjM+qEs846q79jx47eZnDOZrRxeXm5v337dvl3jPPnBZuS7cipW0LZ1fLy8mqs6yyGHUFfjg+zHFHtnkUxneuDgFOc+ChTVi+M/ZXt27fPeg3ltqpoO2LkPiPgSXGJeJ3FsMMt79O/IsfGiOx4s5Tk+BAAtw143QPA8wCwBHwCgNNDFZl/8/v7TcJVzxx3POLWUV/LViYDNC/YlGxHTt1SyfZcZjYuWmPY4fGKnth2z3dm7oZ1HnHSDUs3pqWWVW8Mr2lbx8h9Fl1S+zfWdRbDDs+8n8u/lhhQG18EUpLjYc3vG547ZjX5YADvB3B8+PxQABeIHPs6uiu9KfmIHOeM1Zzxl0q252RB5DhntEr2KAKxJu1dRzoG6ciBSel2pMrho9inxiXWdRbDDs/xLpd/c1xrm11mLnI8DvfbAbgEwL61nKLK8XyHrJKPyHHOCM8Zf6lke04WRI5zRqtkixzbYiAG6bBJ9m1Vuh2pcrjIsT2uPMe7XP61W6uWXgiURI5NNokcm2DqbCMlH5HjnMGbM/5SyfacLIgc54xWyRY5tsVA6aTSZgVQuh2pcrjIsTVi9seMy7PCufxrt1YtvRAQOfZCUv24IKDkI3LsEkhTdpIz/lLJFjnWbqNTXh7FnxZruWfxhq+jYOmk0opv6XakyuEix9aIETm2I6WWwwiIHCseikIg1+BSFAgTlJkXbEq2I6duqWSLHIscdyHfTaOjyPF41EonlVZfl25HqhwucmyNGJFjO1JqKXKsGCgWgVyDS7GADCk2L9iUbEdO3VLJFjkWOe5CvptGR5FjkeNp4sbrnFQ5XOTY7jHP8S6Xf+3WqqUXAqoceyGpflwQUPKZDOO8YFOyHTl1SyXbc7IwLlpj2OFBemLb7ZIA1clMCHjEyUwKFHpy6RVXK2yl2xEj91mwSY1LrOsshh2eeT+Xfy0xoDa+CIgc++Kp3mZEQMlH5HjGEJrp9Jzxl0q252RB5HimcNPJzgjEmrQ7q5m8uxikI7kR0IZckzBP7d9Y11kMOzzHu1RjdI5rSzIPREDkWBFRFAJKPiLHOQMyZ/ylku05WRA5zhmtkj2KQKxJe9eRjkE6cmBSuh2pcvgo9qlxiXWdxbDDc7zL5d8c19pmlylyvNkjoDD7lXxEjnOGZM74SyXbc7IgcpwzWiVb5NgWAzFIh02yb6vS7UiVw0WO7XHlOd7l8q/dWrX0QkDk2AtJ9eOCgJKPyLFLIE3ZSc74SyXbc7IgcjxloOm0KAjEqmhFUTZhp6WTSisUpduRKoeLHFsjRrtV25FSy2EERI4VD0UhkGtwKQqECcrMCzYl25FTt1SyRY61W3UX8t00Ooocj0etdFJp9XXpdqTK4SLH1ogRObYjpZYix4qBYhHINbgUC8iQYvOCTcl25NQtlWyRY5HjLuS7aXQUORY5niZuvM5JlcNFju0e8xzvcvnXbq1aeiGgyrEXkurHBQEln8kwzgs2JduRU7dUsj0nC+OiNYYdHqQntt0uCVCdzISAR5zMpEChJ5decbXCVrodMXKfBZvUuMS6zmLY4Zn3c/nXEgNq44uAyLEvnuptRgSUfESOZwyhmU7PGX+pZHtOFkSOZwo3neyMQKxJu7OaybuLQTqSG6FXOU2EPLV/Y11nMezwHO9SjdE5ri3JPBABkWNFRFEIKPmIHOcMyJzxl0q252RB5DhntEr2KAKxJu1dRzoG6ciBSel2pMrho9inxiXWdRbDDs/xLpd/c1xrm12myPFmj4DC7FfyETnOGZI54y+VbM/JgshxzmiVbJFjWwzEIB02yb6tSrcjVQ4XObbHled4l8u/dmvV0gsBkWMvJNWPCwJKPiLHLoE0ZSc54y+VbM/JgsjxlIGm06IgEKuiFUXZhJ2WTiqtUJRuR6ocLnJsjRjtVm1HSi2HERA5VjwUhUCuwaUoECYoMy/YlGxHTt1SyRY51m7VXch30+gocjwetdJJpdXXpduRKoeLHFsjRuTYjpRaihwrBopFINfgUiwgQ4rNCzYl25FTt1SyRY5FjruQ76bRUeRY5HiauPE6J1UOFzm2e8xzvMvlX7u1aumFgCrHXkiqHxcElHwmwzgv2JRsR07dUsn2nCyMi9YYdniQnth2uyRAdTITAh5xMpMChZ5cesXVClvpdsTIfRZsUuMS6zqLYYdn3s/lX0sMqI0vAiLHvniqtxkRUPIROZ4xhGY6PWf8pZLtOVkQOZ4p3HSyMwKxJu3OaibvLgbpSG6EXuU0EfLU/o11ncWww3O8SzVG57i2JPNABESOFRFFIaDkI3KcMyBzxl8q2Z6TBZHjnNEq2aMIxJq0dx3pGKQjByal25Eqh49inxqXWNdZDDs8x7tc/s1xrW12mSLHmz0CCrNfyUfkOGdI5oy/VLI9JwsixzmjVbJFjm0xEIN02CT7tirdjlQ5XOTYHlee410u/9qtVUsvBESOvZBUPy4IKPmIHLsE0pSd5Iy/VLI9Jwsix1MGmk6LgkCsilYUZRN2WjqptEJRuh2pcrjIsTVitFu1HSm1HEZA5FjxUBQCuQaXokCYoMy8YFOyHTl1SyVb5Fi7VXch302jo8jxeNRKJ5VWX5duR6ocLnJsjRiRYztSailyrBgoFoFcg0uxgAwpNi/YlGxHTt1SyRY5FjnuQr6bRkeRY5HjaeLG65xUOVzk2O4xz/Eul3/t1qqlFwKqHHshqX5cEFDymQzjvGBTsh05dUsl23OyMC5aY9jhQXpi2+2SANXJTAh4xMlMChR6cukVVytspdsRI/dZsEmNS6zrLIYdnnk/l38tMaA2vgiIHPviqd5mREDJR+R4xhCa6fSc8ZdKtudkQeR4pnDTyc4IxJq0O6uZvLsYpCO5EXqV00TIU/s31nUWww7P8S7VGJ3j2pLMAxEQOVZEFIWAko/Icc6AzBl/qWR7ThZEjnNGq2SPIhBr0t51pGOQjhyYlG5Hqhw+in1qXGJdZzHs8Bzvcvk3x7W22WWKHG/2CCjMfiUfkeOcIZkz/lLJ9pwsiBznjFbJFjm2xUAM0mGT7NuqdDtS5XCRY3tceY53ufxrt1YtvRAQOfZCUv24IKDkI3LsEkhTdpIz/lLJ9pwsiBxPGWg6LQoCsSpaUZRN2GnppNIKRel2pMrhIsfWiNFu1Xak1HIYAZFjxUNRCOQaXIoCYYIy84JNyXbk1C2VbJFj7VbdhXw3jY4ix+NRK51UWn1duh2pcrjIsTViRI7tSKmlyLFioFgEcg0uxQIypNi8YFOyHTl1SyVb5FjkuAv5bhodRY5FjqeJG69zUuVwkWO7xzzHu1z+tVurll4IqHLshaT6cUFAyWcyjPOCTcl25NQtlWzPycK4aI1hhwfpiW23SwJUJzMh4BEnMylQ6MmlV1ytsJVuR4zcZ8EmNS6xrrMYdnjm/Vz+tcSA2vgiIHLsi6d6mxEBJR+R4xlDaKbTc8ZfKtmekwWR45nCTSc7IxBr0u6sZvLuYpCO5EboVU4TIU/t31jXWQw7PMe7VGN0jmtLMg9EQORYEVEUAko+Isc5AzJn/KWS7TlZEDnOGa2SPYpArEl715GOQTpyYFK6Haly+Cj2qXGJdZ3FsMNzvMvl3xzX2maXKXK82SOgMPuVfESOc4ZkzvhLJdtzsiBynDNaJVvk2BYDMUiHTbJvq9LtSJXDRY7tceU53uXyr91atfRCQOTYC0n144KAko/IsUsgTdlJzvhLJdtzsiByPGWg6bQoCMSqaEVRNmGnpZNKKxSl25Eqh4scWyNGu1XbkVLLYQREjhUPRSGQa3ApCoQJyswLNiXbkVO3VLJFjrVbdRfy3TQ6ihyPR610Umn1del2pMrhIsfWiBE5tiOlliLHioFiEcg1uBQLyJBi84JNyXbk1C2VbJFjkeMu5LtpdBQ5FjmeJm68zkmVw0WO7R7zHO9y+ddurVp6IaDKsReS6scFASWfyTDOCzYl25FTt1SyPScL46I1hh0epCe23S4JUJ3MhIBHnMykQKEnl15xtcJWuh0xcp8Fm9S4xLrOYtjhmfdz+dcSA2rji4DIsS+e6m1GBJR8RI5nDKGZTs8Zf6lke04WRI5nCjed7IxArEm7s5rJu4tBOpIboVc5TYQ8tX9jXWcx7PAc71KN0TmuLck8EIEc5HgRwGEArhxxxqEArgPQX8tJe/bsqXfu3JlDb8VOAgSUfESOE4TZRBE54y+VbM/JgshxzmiV7FEEYk3au450DNKRA5PS7UiVw0exT41LrOsshh2e410u/+a41ja7zNQk83kAng7gAgBHANgB4HIAbwWwAuD2AF4F4OxJjhE5nu+QVfIROc4Z4TnjL5Vsz8mCyHHOaJVskWNbDMQgHTbJvq1KtyNVDhc5tseV53iXy792a9XSC4GU5HgrgL2hanwNgJcAOBrANwEcDuAMAMcAuBgAq8jXjjNS5NjL9WX2o+QjcpwzMnPGXyrZnpMFkeOc0SrZIse2GCidVNqs2L/z8OrS0lLPek7KdqlyuMix3aue410u/9qtVUsvBFKSY+p8FIArABwC4O8BvA7AQwCcD+AcANSHy6qXACyLHHu5uTv9KPmIHOeM1pzxl0q252RB5DhntEq2yLEtBkSObTjN2ipVDhc5tnvKc7zL5V+7tWrphUBqcky9TwDw5wA+D+CpAP4SwLkA3hmMuhTAiQAu2r17966qqn5rxNjq1FNPrb0AUD/FIcCYlH/Hu2VesCnZjpy6pZQdU1aMvr369OqnuMQphRoE5N/JgTAv2JRsR07dUsqOKStG3159VktLehXgZhhrUpPjnwzPF/8agLcHgEl+vw/8//bOBOiWo6rjvwiRHQJiQBARHrJEEKEEjCgoAmKJrAYURDHsECk2IWHf8wIIkU02BUpBZBEQiYIsLqACyqKlbIZNkIACsiMhwTra19z38e6j33xnunvu95uqVF6919Pd53fOPT3/OT0znAqcq1SWj9r0Yi63VW93WHpnzspxzwjvGX+txs68k27luGe0OraV47oYsHJcx2m3rVrlcCvH9Z7KXO96+bfeWltmEWgpjmOsz5dt1G9fM+BmwAnAjYHjgHhp17GbDFQcZ7l+zH5MPorjnpHZM/5ajZ15saA47hmtjq04rosBxXEdp922apXDFcf1nspc73r5t95aW2YRaCmOrwB8cMfEXwjcAzgNOAY4H3Cj8jbrg9qoOM5y/Zj9mHwUxz0js2f8tRo782JBcdwzWh1bcVwXA4rjOk67bdUqhyuO6z2Vud718m+9tbbMItBSHH+7OV8GOAM481ANFcffDuOy/93kozjuGcE946/V2JkXC4rjntHq2IrjuhhQHNdx2m2rVjlccVzvqcz1rpd/6621ZRaBkcRxlU2K4ypMi21k8lEc9wzenvHXauzMiwXFcc9odWzFcV0MKI7rOO22Vascrjiu91TmetfLv/XW2jKLgOI4i6T9pBAw+SiOUwJpYic946/V2JkXC4rjiYHmabMQOP30088e9Ru4sxhc2aniuBLULpu1yuGK43pHZa53vfxbb60tswgojrNI2k8KAZOP4jglkCZ20jP+Wo2debGgOJ4YaJ42CwHF8cGxKo5nCbdv6bRVDlcc1/szc73r5d96a22ZRUBxnEXSflIImHwUxymBNLGTnvHXauzMiwXF8cRA87RZCCiOFcezBFZlp61yuOK40iFA5nrXy7/11toyi4DiOIuk/aQQMPkojlMCaWInPeOv1diZFwuK44mB5mmzEFAcK45nCazKTlvlcMVxpUMUx/WgbHkAAcWxATEUgV6Ly1AQNkxmW9iMbEfPubUaW3G8b3Hr3hLy0whzVBwrjnvGYascrjiu93LmetfLv/XW2jKLwOIuEnxbdZbrx+zH5GPluGdk9oy/VmNnXixYOe4ZrY69k4DiWHHc81fRKocrjuu9nLne9fJvvbW2zCKgOM4iaT8pBEw+iuOUQJrYSc/4azV25sWC4nhioHnaLAQUx4rjWQKrstNWOVxxXOkQt1XXg7LlAQQUxwbEUAR6LS5DQdgwmW1hM7IdPefWamzFsduql5DvpsxRcaw4nhI3Wee0yuGK43qPZa53vfxbb60tswgojrNI2k8KAZOPleOUQJrYSc/4azV25sWCleOJgeZpsxBQHCuOZwmsyk5b5XDFcaVDrBzXg7KllWNjYFwCvRaXcYmcM7NtYTOyHT3n1mpsxbGV4yXkuylzVBwrjqfETdY5rXK44rjeY5nrXS//1ltryywCVo6zSNpPCgGTj5XjlECa2EnP+Gs1dubFgpXjiYHmabMQUBwrjmcJrMpOW+VwxXGlQ6wc14OypZVjY2BcAr0Wl3GJWDlu6Zue8ddqbMWxleOWv6mWYymOFcct423nWK1yuOK43suZ610v/9Zba8ssAlaOs0jaTwoBk89mjNvCZmQ7es6t1diZFwtWjlPSnp0kEVAcK46TQmlSN61yuOK43j2Z610v/9Zba8ssAorjLJL2k0LA5KM4TgmkiZ30jL9WY2deLCiOJwaap81CQHGsOJ4lsCo7bZXDFceVDnFbdT0oWx5AQHFsQAxFoNfiMhSEDZPZFjYj29Fzbq3GVhy7rXoJ+W7KHBXHiuMpcZN1Tqscrjiu91jmetfLv/XW2jKLgOI4i6T9pBAw+Vg5TgmkiZ30jL9WY2deLFg5nhhonjYLAcWx4niWwKrstFUOVxxXOsTKcT0oW1o5NgbGJdBrcRmXyDkz2xY2I9vRc26txlYcWzleQr6bMkfFseJ4StxkndMqhyuO6z2Wud718m+9tbbMImDlOIuk/aQQMPlYOU4JpImd9Iy/VmNnXixYOZ4YaJ42CwHFseJ4lsCq7LRVDlccVzrEynE9KFtaOTYGxiXQa3EZl4iV45a+6Rl/rcZWHFs5bvmbajmW4lhx3DLedo7VKocrjuu9nLne9fJvvbW2zCJg5TiLpP2kEDD5bMa4LWxGtqPn3FqNnXmxYOU4Je3ZSRIBxbHiOCmUJnXTKocrjuvdk7ne9fJvvbW2zCKgOM4iaT8pBEw+iuOUQJrYSc/4azV25sWC4nhioHnaLAQUx4rjWQKrstNWOVxxXOkQt1XXg7LlAQQUxwbEUAR6LS5DQdgwmW1hM7IdPefWamzFsduql5DvpsxRcaw4nhI3Wee0yuGK43qPZa53vfxbb60tswgojrNI2k8KAZOPleOUQJrYSc/4azV25sWCleOJgeZpsxBQHCuOZwmsyk5b5XDFcaVDrBzXg7KllWNjYFwCvRaXcYmcM7NtYTOyHT3n1mpsxbGV4yXkuylzVBwrjqfETdY5rXK44rjeY5nrXS//1ltryywCVo6zSNpPCgGTj5XjlECa2EnP+Gs1dubFgpXjiYHmabMQUBwrjmcJrMpOW+VwxXGlQ6wc14OypZVjY2BcAr0Wl3GJWDlu6Zue8ddqbMWxleOWv6mWYymOFcct423nWK1yuOK43suZ610v/9Zba8ssAlaOs0jaTwoBk89mjNvCZmQ7es6t1diZFwtWjlPSnp0kEVAcK46TQmlSN61yuOK43j2Z610v/9Zba8ssAorjLJL2k0LA5KM4TgmkiZ30jL9WY2deLCiOJwaap81CQHGsOJ4lsCo7bZXDFceVDnFbdT0oWx5AQHFsQAxFoNfiMhSEDZPZFjYj29Fzbq3GVhy7rXoJ+W7KHBXHiuMpcZN1Tqscrjiu91jmetfLv/XW2jKLgOI4i6T9pBAw+Vg5TgmkiZ30jL9WY2deLFg5nhhonjYLAcWx4niWwKrstFUOVxxXOsTKcT0oW1o5NgbGJdBrcRmXyDkz2xY2I9vRc26txlYcWzleQr6bMkfFseJ4StxkndMqhyuO6z2Wud718m+9tbbMImDlOIuk/aQQMPlYOU4JpImd9Iy/VmNnXixYOZ4YaJ42CwHFseJ4lsCq7LRVDlccVzrEynE9KFtaOTYGxiXQa3EZl4iV45a+6Rl/rcZWHFs5bvmbajmW4lhx3DLedo7VKocrjuu9nLne9fJvvbW2zCJg5TiLpP2kEDD5bMa4LWxGtqPn3FqNnXmxYOU4Je3ZSRIBxbHiOCmUJnXTKocrjuvdk7ne9fJvvbW2zCKgOM4iaT8pBEw+iuOUQJrYSc/4azV25sWC4nhioHnaLAQUx4rjWQKrstNWOVxxXOkQt1XXg7LlAQQUxwbEUAR6LS5DQdgwmW1hM7IdPefWamzFsduql5DvpsxRcaw4nhI3Wee0yuGK43qPZa53vfxbb60tswgojrNI2k8KAZOPleOUQJrYSc/4azV25sWCleOJgeZpsxBQHCuOZwmsyk5b5XDFcaVDrBzXg7KllWNjYFwCvRaXcYmcM7NtYTOyHT3n1mpsxbGV4yXkuylzVBwrjqfETdY5rXK44rjeY5nrXS//1ltryywCVo6zSNpPCgGTj5XjlECa2EnP+Gs1dubFgpXjiYHmabMQUBwrjmcJrMpOW+VwxXGlQ6wc14OypZVjY2BcAr0Wl3GJWDlu6Zue8ddqbMWxleOWv6mWYymOFcct423nWK1yuOK43suZ610v/9Zba8ssAiNVji8AfBU4+1DG7d+//5snnnjiSPPO8oX9ACafzWGwLWxGtqPn3FqNnXmxYOXYtD0SAcWx4rhnPLbK4Yrjei9nrne9/FtvrS2zCIwgMi8OvBj4BnBZ4InACzYZqDjOcv2Y/Zh8FMc9I7Nn/LUaO/NiQXHcM1od+yCVu7P37dv3HZI5kED5zZ+1dDaj29EqhyuO63/hmetdL//WW2vLLAIjiOMTgQsBDwEuCXwSiCryVw5mpOI4y/Vj9mPyURz3jMye8ddq7MyLBcVxz2h1bMVxXQyMLirrrIDR7WiVwxXHtRHz/zETN812rXd6+bfeWltmEdh1sCRM5HnAG4CXADGf2Fa9D/iQ4jiB7sK6MPkojnuGbM/4azW24nj3F0k9Y9SxD5kjrRwfBM/oorI2pke3o1UOVxzXRoziuJ6ULdcJjCCOXwrEfy8vE/sUcB3gIyeffPIjjzjiiIevT/jII4884swzz9SLEpCABCQgAQlIQAISkIAEZidw9NFHc/zxx4+gm2a3da8PMIKTQ/x+ATgVOBfwOeCoTS/mclv1does/t3s321hM7IdPefWauyovpxyyilnz/Viwzns2L9/f8x3V8+Szm33dmfmZViXESfLsPTwZlli/6zd/oYOb9T81qPbMUfuq6HYmstcv7M57MjM+3PZXeNj27QlMII4vhlwAnBj4DjgfsCxmzD0Sj5t3bJ3R9O/iuOe0d8z/lqNnXmxcDBfzWFHxkXJ3Hb3jFvH/j8CGXGyjSznEB09OI1uxxy5r4Zzay5z/c7msCMz789ld42PbdOWwAji+HzAacAxQPz5RsDbFMdtA2GU0XotLqPYf6h5bAubke3oObdWY2deLCiOl5A59s4cvXg9uK/nEB09omp0O1rl8J3sW+RO8WAAAA2pSURBVHOZ63c2hx2Z691cdvf4LTnmoQmMII5XM7wMcAZwyAeKeyUfA6kNAf1r5bhNpB18lJ7x12rszIsFxXHPaHXsnQS8eFUc9/xVtMrhiuN6L2eud+aXeu5LbzmSOK5iGS/pOumkkx5Z1dhGiyOgfze7bFvYjGxHz7m1GjsuFvbv3/+IufLoHHZk9Dm33YtLtls44Yw42UIs//sJpDl/862YjW5Hr/hrzWUuO+ewI7PPuexu9ftxnHoCixPH9abZUgISkIAEJCABCUhAAhKQgAQkUEdAcVzHyVYSkIAEJCABCUhAAhKQgAQksMUEli6OLwh8GfjmFvtor5l2/mLwV/aa4d/G3u8Ezg1sA5ew46LAf+hjCTQgEPEWv5/13058FipeABnrh8eyCWxaMy4AfHXTZyGXbXLV7CPGLwR8fkfr85Rrpq9X9TJOo0sB/742nZHt2OuxN07UHHwm5wXO2vGOo01rgr4c3ZszzG+p4vho4IeAPwKuAHx6BjZ22ZbAkcALgMsCHyrfvL4T8LW20xhytP3ADYB/Kd8Av/3CL+p/E7ha+XzbKMDfWC4iv1EmdAfgv0eZnPOYROBcwFWByCNxIXTf0suvAfcBPlFuOMXvyRs1kxB3PWnTmhE3zV8MxG851pMnlrWl62QbD34r4DHAO4HvAh4EvBd4CnCNsr7Gv/36Qm4e3BR4DRACJn7XI9jxUOAma4L9seXPez32Gof6YQ0XQjeuPZ5QYuiVh1gTouimLw8L7/Y0Xqo4vjVw3XKxcwnF8VYE5PWAxwM/Xqx5M/BM4GVbYd10IyKZB4trly7eUhL7H0/vsuuZ8V3zuxdREt82H+U4HfgBIHJiCCmP5RMIkfRo4EeAfyjrRVSR44sIR5WbIU8FPgmcvHxz95wFm9aMfaVi+hDgksW/kUe3YddNrZNfCjwMeD/wKCB+C68ATl1bS+LfjgfeWttpp3bfDzwOuF0Rx8cOYseL4tPa5abD6qbqicZepyipG/bqwK8CNwceAIQ43rQmhDiOnRd7OY/UUd3CVksVxytXRPAqjrcjMCNBxVaXL5W7/f9Uqj4f2w7zdm1FVMCi4vXLwJWBz+26x/YdXB54FhB32OOu+yjiOLZ4fxb4YhFMcZPmt9vjccSZCNyr7DCKyvHlgDcAIaDiiMrZD5fq8kzD2+1MBDatGQ8vPn5Judl1dvF37EjaS0fktYj9B5YKZ+TfKCrco0B4VRHMvzcwlNg6fVoRNP9WxHHs9BjBjveUmy/xeMbzgAcDTzf2Bo6mc6b2ciBuboQ43rQmhL6ItWKv55FFODR7korjbKL2t1sCtwWeC8Tnup6828626Px4jCAuauLC4BbAmxZmW9z4iAp4bHGNql34dxRx/L3A/UuV8fuAdwPxd7Ht1mP5BNbFcfyOYjfKlYpZsX3++sCdl2/mnrVg55oRVdP4Ly6A4/gUcB3gI3uMUIjjEMa3KeItnj2+SrkhFCh+p+Tk3x+Yy2+VfPz88px0bKuOdXAEO54GPBv4DPDqsn3/OGNv4Gg6uDjetCZcWF8uwpezTFJxPAtWO51IIO68hviLC9Z4HsoDLl22hcbiG0c8R3bxtbv/S2EUQvh1wDuAiwBXBJ4D3G0AA6ICFbkwttvGEVvW41mjuGPssXwC6+I4qjyxvTYusqMysHoOOZ5h9FgegYOtGVE5/kLZehvPp8Yum7ghFxXkvXCEzXcp+TVsjtwbO2HixuT9gHi0ZZXn4rGDvx8USmyFj51ksWbEca3y5/D5vTvbEfkjnnlfvZci8kisafGIxl6OvUFD6VumtV453rQmxJZqfbkUjybPU3GcDNTuJhM4ptzFjgVm59s1J3e6BSfG3f/3lZeonAHEFri/LBc+SzIv3igbQj+O2MYaF2lxl/3jAxhxQyAqFDGvWBDjxTXXtHI8gGdyprAujqPH2A55TyAe3YgbNo8AXp8zlL00JLBpzQjxd0IRhZFjItfEc6p76Yhn7E8qcR3vePixciPow+WxpYsB7wIuM/B6G9en8cLV1fGB8khRVGpji3y8bK2XHbEuf7SsGbGGrcRWvB19r8feEn5n6+J405oQu9305RK8OcMct0Ecx5urfdPoDMHRuMs7ArF1av2Il4Xs/LvG0xpiuKiExMsj4qZBXNhHZX2JzxyvYMbLxeK541G2VUcejGePYqteVJGjon3KEJ53EhkEQhzHM8YhkuII8bTaSvra8qIfPweYQbptH5vWjNjxEc+phniOqtCNgLe1nVr30W4JPKl8wiy+5nHX8lK6eIFU3BiKm4Bx4f+M7jOtn0D8Rlc7PkawI7asr3Y+xdcO4tGceDHXXo+9eo/2axniONaAeO5+05oQ4lhf9vNR15GXLo67wnNwCTQkEBd5kayXLIob4po0VHzyJG5ArN48OqkTT1oEgdjJENv7Yxukx3YSiKpo7LZZPS6xnVZutiqEZLyte/3bwNE6HsuJbxzHltElHyPYEXkktrHHyxzXj70ee0uMq01rgr5cojd3OWfF8S4BeroEJCABCUhAAhKQgAQkIAEJLJ+A4nj5PtQCCUhAAhKQgAQkIAEJSEACEtglAcXxLgF6ugQkIAEJSEACEpCABCQgAQksn4DiePk+1AIJSEACEpCABCQgAQlIQAIS2CUBxfEuAXq6BCQgAQlIQAISkIAEJCABCSyfgOJ4+T7UAglIQAISyCdwQeBrvr08H6w9SkACEpCABEYloDge1TPOSwISkMByCPwZ8DPlG9yrbwi/H/gscGyCGc8D7gS0WLPiG7DvBi4PXB/4q7X5/xxwdeDxE2z6nvJZnRP9jvYEep4iAQlIQAISaECgxYVGAzMcQgISkIAEOhJYieNPF1H5ZSBTHD8fuGMjcfxTwJuAZwKPAsKm1fFs4K5AfEP2m4fJ+1LAJ4CHAo87zHNtLgEJSEACEpBAAwKK4waQHUICEpDAlhNYieMw8xHAo9fE8a2BVwEvKILz54GHAXcHLg48FvgLIKqynytV1d8ALgfsB54BrMTxk4HbAO8F7gV8ELgCcE/g9mXM+wDvBB4ExFinAbcArr3DB3cDHljE/N8BJ5Tx/xS4IvCPwF2At5fzbg48BzgaeC1wXJnrLYGvAK8DYuyzgV8sc7pSse2+pY+VOI5+Xlj+7g5lDmHzTYC/KeL5r7c8ZjRPAhKQgAQkMBwBxfFwLnFCEpCABBZHIMTxNYBXF0H5fcAbyrbqXwI+XERwiOKoAIfYjS3LUU39A+ADwNvKtuwwPsRjCNoQohcDQhTHeVHFfVfZwv2yIpTfDBwDPKWM/d1AbGEOYR2CN47Y6h0idHVcuQjsdwB/AjwA+CTwo0XYx3kxZvwXgjaOGCPmdV3gV4Azy9xPLYL4fkUwhx0fA2J+IczD1mcBjyl9nQLcALhW6etvgfeVMR4OPBg4L/CDPu+8uN+BE5aABCQggYUTUBwv3IFOXwISkMAABFbi+GrAv5ZK8XUOQxxHhTeqsVF1jQpsVFBD3Eb1d1+pNIc4vkQRyCFoo9IcVeMYLyq/fw78JPATwM+Wfw+RG2I2qrHrR4j0qG5fFfhn4KTyHPE1gcsCrywC/PU7zlvfVn1UqRCHEF+N+0jguWuCOm4WRB8vAi6w9vfRbYjgk0v/sQU9qtVRLX5jqbJ/dAC/OgUJSEACEpDAniKgON5T7tZYCUhAArMQWInjEK+x3fnpZZQQrbcFQuhFxTReRrX69/XKcbzMK0RkPMcbwvRWZWtxCMh4MVZUVEMcXxT4L+APS9X4hqVC/VYgKsirI/49tk2HOL4w8MUdVj8JuH/Zuv2R0u5ppZodleoacRx9PxV4RdmCHc8nhziO/4dt8QKxsCuq37FV+85r4jjm89Ui/L8ERKU95vsLRSTHv1+ybNeexWF2KgEJSEACEpDAtxJQHBsVEpCABCSwWwLr4vjcwHvKNuQQx9cDvl62TodAfsjam6BX26prxfHvAm8B4v+vKYL5M6Xv40slNyrW8XxwCOsQsPFJpnhB2PoRbWJuLwZeXqrUUQm+NHDTCnEc26/vDdyubH+ObdZR5Q5hHM9Ph1CPZ69fWirisdU7tnLHFu34+zOAqEJHdTyYxDbsuDkQ/xbzjn5jG3c8W+0hAQlIQAISkEAjAorjRqAdRgISkMAWE1gXx2FmVE5DJIYAjU85hQCMl1/FEVuHY+tziOYQxy9Z28L8hVIJjspxPKMbb3aOF3PFNugQv/Girdj6HJXV1curYkt2VGzj7+OIinA8KxyV4E3iONa+eBt1vBRsdcSLvuI54XjWeVPlOF60Fc9Ix/HTZft4fPoptoKHwI/z4gVkYVP0F8fHyzPNYXeI47g58IS1GwhXKeeGKI4qc9gWc4squ4cEJCABCUhAAg0JKI4bwnYoCUhAAnuYQFRwY9v0ziru4SIJARnfT/7GjhNja/J/HuZW5IsUQRrbvqO6XXOcHzgS+DxwHiAqzp86yInxJu54zrj22eFYj8OGENNn1UzENhKQgAQkIAEJ5BJQHOfytDcJSEACEpCABCQgAQlIQAISWCABxfECneaUJSABCUhAAhKQgAQkIAEJSCCXgOI4l6e9SUACEpCABCQgAQlIQAISkMACCSiOF+g0pywBCUhAAhKQgAQkIAEJSEACuQQUx7k87U0CEpCABCQgAQlIQAISkIAEFkjgfwAgXakLUD9cvQAAAABJRU5ErkJggg==", "text/plain": [ "\n", "\n", "If you see this message, it means the renderer has not been properly enabled\n", "for the frontend that you are using. For more information, see\n", "https://altair-viz.github.io/user_guide/troubleshooting.html\n" ] }, "metadata": { "application/vnd.vegalite.v3+json": { "embed_options": { "renderer": "svg" } } }, "output_type": "display_data" }, { "data": { "application/vnd.vegalite.v3+json": { "$schema": "https://vega.github.io/schema/vega-lite/v3.4.0.json", "config": { "mark": { "tooltip": null }, "view": { "height": 300, "width": 400 } }, "data": { "name": "data-a66ebbe24cbc2c6a0595e6ea80ffc329" }, "datasets": { "data-a66ebbe24cbc2c6a0595e6ea80ffc329": [ { "Duration in ms": 114.01, "Number of engines": 10, "Number of tasks": 1 }, { "Duration in ms": 114.54, "Number of engines": 10, "Number of tasks": 10 }, { "Duration in ms": 115.15, "Number of engines": 10, "Number of tasks": 100 }, { "Duration in ms": 110.94, "Number of engines": 1, "Number of tasks": 1 }, { "Duration in ms": 110.83, "Number of engines": 1, "Number of tasks": 10 }, { "Duration in ms": 110.96, "Number of engines": 1, "Number of tasks": 100 } ] }, "encoding": { "color": { "field": "Number of engines", "type": "nominal" }, "tooltip": { "field": "Duration in ms", "type": "quantitative" }, "x": { "field": "Number of tasks", "scale": { "type": "log" }, "type": "quantitative" }, "y": { "field": "Duration in ms", "type": "quantitative" } }, "mark": { "point": true, "type": "line" }, "selection": { "selector018": { "bind": "scales", "encodings": [ "x", "y" ], "type": "interval" } }, "title": "SchedulerType.SPANNING_TREE", "width": 800 }, "image/png": "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", "text/plain": [ "\n", "\n", "If you see this message, it means the renderer has not been properly enabled\n", "for the frontend that you are using. For more information, see\n", "https://altair-viz.github.io/user_guide/troubleshooting.html\n" ] }, "metadata": { "application/vnd.vegalite.v3+json": { "embed_options": { "renderer": "svg" } } }, "output_type": "display_data" }, { "data": { "application/vnd.vegalite.v3+json": { "$schema": "https://vega.github.io/schema/vega-lite/v3.4.0.json", "config": { "mark": { "tooltip": null }, "view": { "height": 300, "width": 400 } }, "data": { "name": "data-87ceab5b19c2457c931903d15e2ca53b" }, "datasets": { "data-87ceab5b19c2457c931903d15e2ca53b": [ { "Duration in ms": 113.3, "Number of engines": 10, "Number of tasks": 1 }, { "Duration in ms": 113.61, "Number of engines": 10, "Number of tasks": 10 }, { "Duration in ms": 113.69, "Number of engines": 10, "Number of tasks": 100 }, { "Duration in ms": 106.29, "Number of engines": 1, "Number of tasks": 1 }, { "Duration in ms": 106.32, "Number of engines": 1, "Number of tasks": 10 }, { "Duration in ms": 106.36, "Number of engines": 1, "Number of tasks": 100 } ] }, "encoding": { "color": { "field": "Number of engines", "type": "nominal" }, "tooltip": { "field": "Duration in ms", "type": "quantitative" }, "x": { "field": "Number of tasks", "scale": { "type": "log" }, "type": "quantitative" }, "y": { "field": "Duration in ms", "type": "quantitative" } }, "mark": { "point": true, "type": "line" }, "selection": { "selector019": { "bind": "scales", "encodings": [ "x", "y" ], "type": "interval" } }, "title": "SchedulerType.DIRECT_VIEW", "width": 800 }, "image/png": "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byGWV+/If4t4lEOEi7y+R4S4CG0RzSKK5ZDPREDKIWODPBVaXslTP9BK+pFzB8VxvUootmWbs6zayiEPy5K+5d/6gVyrrRzXPwbUmT85iXv5u36Hrvx3LY5F5MqPBoKLbEGXFfAvAJB398r24Vq8yTkiaOWBVPJ0a3lIl2AlmA17z7H0Kyv6cu+2HKPecyw/AshTteVorl7LlnARkqu951geZiU/eggeFw48DE0EvWwhr59+Lf03xbFs8663OGuvEolZtt4PbneuxbHmPcfNHyjq1XXJrfwgIUf9lOph29e1frIdESACRIAIEIFQBCiOQ+GncSJABIhAHwFZbZQHS4lglVVYefBR85BtunIvqqxGyrbb+mFOGvikzsuKsPQtgnpwRU9WEqVN/fCuwT5lq68cgz4Nsy0iUVYq96U41uPnYH+yIimvrhIhKIK7fphULY5l9VWEpcR2BQB5j2/zkIeCnZBeCSVblks+xE/JQ/M+47X8le3bgvWoQ/JZetxrxcjviQARIAJEgAi4IkBx7Ao3jREBIkAEiIACAVlxlodwiSgeXO1simNZ+d6oh/zYISvfow55IJu8LooHESACRIAIEAEioESA4lgJFJsRASJABIiAGwI/m+4VlldPvTGtINfGZUuvbJmWrcDyPQ8iQASIABEgAkSACJggQHFsAiM7IQJEgAgQASJABIgAESACRIAIEIEuI0Bx3OXs0XciQASIABEgAkSACBABIkAEiAARMEGA4tgERnZCBIgAESACRIAIEAEiQASIABEgAl1GgOK4y9mj70SACBABIkAEiAARIAJEgAgQASJgggDFsQmM7IQIEAEiQASIABEgAkSACBABIkAEuoxAbnG8DcAcgIMNkOQ9mEcMPH1Uvj48vRtz8F2VXcaXvhMBIkAEiAARIAJEgAgQASJABIhABxDIJY5F6J4M4LUAfg/A+xMWLwLwLACXAjgKwC4A1wK4EMAhAHcH8DoAG/ndlR2gDV0kAkSACBABIkAEiAARIAJEgAhMFgK5xPEDATwVwOMAvDiJ4y0A9qdV41sBvBzAcQC+CeBIAOcCOB7AlWkV+bbJgprREAEiQASIABEgAkSACBABIkAEiECpCOQSx3W87wPwzsbK8TEArgewHcDHALwewGMAXALgIgDij2yrngEwWypo9IsIEAEiQASIABEgAkSACBABIkAE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+yDg2EjB1vpkiWP9L9u0gZjsUvRbqdo7DYljteeKEP6XAYq0q73PCJGsv68f6dqddJgLNQETMAETMAET+F8CFsf2ChMwARMwgYUSGBbHNwLOjDRkieOHAFdG6rQE8l5DO0EP0qpTxfEHgVMB/X9CCOa/RNlLI5KriLXWB0tYS8Dqk0zaIGz40Dlq25HAMRGlViT49sATEsSx0q9fATwn0p+VZq0ot4Sx1k9LqGvt9dEREVeqt1K5laKt358PKAqt6LiYKA1bLwf0N7Vb5SqNW2urfZiACZiACZiACRQiYHFcCLSrMQETMIEJJjAsjmWmIqcSiRKg+pSTBKA2v9Kh1GGlPks0SxwfNZTCfElEghU51hpd7eysjbmUBi3xq422lPqsyOpg8yqlZCtiq9/rUERYa4UVCR4ljjX3aTdqbQo2OLTRl9YJa63zqMixNtrSGmkdj4j0cX36SangEvi6ThuQySaVp+PcWNMsuyWO9XLggKEXCJvEtRLFijLLNrVNUXYfJmACJmACJmACBQlYHBeE7apMwARMYIoJKIKrtOnZUdz5IpGA1PeTr551oVKT/zzPVOR1QpAq7VvR7ZRjTWARcDFwE0AR5wvmuFA7cWudceraYc3HskFi+pqUhvgcEzABEzABEzCBvAQsjvPydGkmYAImYAImYAImYAImYAImYAI9JGBx3MNOc5NNwARMwARMwARMwARMwARMwATyErA4zsvTpZmACZiACZiACZiACZiACZiACfSQgMVxDzvNTTYBEzABEzABEzABEzABEzABE8hLwOI4L0+XZgImYAImYAImYAImYAImYAIm0EMC/wJ2vTDPsH/6vgAAAABJRU5ErkJggg==", "text/plain": [ "\n", "\n", "If you see this message, it means the renderer has not been properly enabled\n", "for the frontend that you are using. For more information, see\n", "https://altair-viz.github.io/user_guide/troubleshooting.html\n" ] }, "metadata": { "application/vnd.vegalite.v3+json": { "embed_options": { "renderer": "svg" } } }, "output_type": "display_data" }, { "data": { "application/vnd.vegalite.v3+json": { "$schema": "https://vega.github.io/schema/vega-lite/v3.4.0.json", "config": { "mark": { "tooltip": null }, "view": { "height": 300, "width": 400 } }, "data": { "name": "data-064a17ae45e920f5c4b792fd7fe5c036" }, "datasets": { "data-064a17ae45e920f5c4b792fd7fe5c036": [ { "Duration in ms": 107.74, "Number of engines": 10, "Number of tasks": 1 }, { "Duration in ms": 107.87, "Number of engines": 10, "Number of tasks": 10 }, { "Duration in ms": 107.71, "Number of engines": 10, "Number of tasks": 100 }, { "Duration in ms": 107.57, "Number of engines": 1, "Number of tasks": 1 }, { "Duration in ms": 107.65, "Number of engines": 1, "Number of tasks": 10 }, { "Duration in ms": 107.59, "Number of engines": 1, "Number of tasks": 100 } ] }, "encoding": { "color": { "field": "Number of engines", "type": "nominal" }, "tooltip": { "field": "Duration in ms", "type": "quantitative" }, "x": { "field": "Number of tasks", "scale": { "type": "log" }, "type": "quantitative" }, "y": { "field": "Duration in ms", "type": "quantitative" } }, "mark": { "point": true, "type": "line" }, "selection": { "selector020": { "bind": "scales", "encodings": [ "x", "y" ], "type": "interval" } }, "title": "SchedulerType.LOAD_BALANCED", "width": 800 }, "image/png": "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", "text/plain": [ "\n", "\n", "If you see this message, it means the renderer has not been properly enabled\n", "for the frontend that you are using. For more information, see\n", "https://altair-viz.github.io/user_guide/troubleshooting.html\n" ] }, "metadata": { "application/vnd.vegalite.v3+json": { "embed_options": { "renderer": "svg" } } }, "output_type": "display_data" } ], "source": [ "source = get_time_n_tasks_source(benchmark_results)\n", "display(Markdown('## With 16 cores:'))\n", "for delay, result_for_delay in source.items():\n", " display(Markdown(f'### With a delay of {ms_to_seconds(delay)}s. :'))\n", " for scheduler_name, results in result_for_delay[16].items():\n", " alt.Chart(pd.DataFrame(results)).mark_line(point=True).encode(\n", " alt.X('Number of tasks', scale=alt.Scale(type='log')),\n", " y='Duration in ms',\n", " color='Number of engines:N',\n", " tooltip='Duration in ms',\n", " ).properties(title=f'{scheduler_name}', width=800).interactive().display(\n", " renderer='svg'\n", " )" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "pycharm": { "name": "#%%\n" } }, "outputs": [ { "data": { "text/markdown": [ "### With no delay and 100 engines:" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.vegalite.v3+json": { "$schema": "https://vega.github.io/schema/vega-lite/v3.4.0.json", "config": { "mark": { "tooltip": null }, "view": { "height": 300, "width": 400 } }, "data": { "name": "data-f4c8a6e7f35eaeba657c51b1351537da" }, "datasets": { "data-f4c8a6e7f35eaeba657c51b1351537da": [ { "Duration in ms": 75.76, "Number of cores": 16, "Number of tasks": 1 }, { "Duration in ms": 78.3, "Number of cores": 16, "Number of tasks": 10 }, { "Duration in ms": 77.84, "Number of cores": 16, "Number of tasks": 100 }, { "Duration in ms": 76.72, "Number of cores": 16, "Number of tasks": 1000 }, { "Duration in ms": 98.22, "Number of cores": 16, "Number of tasks": 10000 } ] }, "encoding": { "color": { "field": "Number of cores", "type": "nominal" }, "tooltip": { "field": "Duration in ms", "type": "quantitative" }, "x": { "field": "Number of tasks", "scale": { "type": "log" }, "type": "quantitative" }, "y": { "field": "Duration in ms", "type": "quantitative" } }, "mark": { "point": true, "type": "line" }, "selection": { "selector021": { "bind": "scales", "encodings": [ "x", "y" ], "type": "interval" } }, "title": "Ran with no delay on 100 engines SchedulerType.BROADCAST_COALESCING", "width": 800 }, "image/png": "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", "text/plain": [ "\n", "\n", "If you see this message, it means the renderer has not been properly enabled\n", "for the frontend that you are using. For more information, see\n", "https://altair-viz.github.io/user_guide/troubleshooting.html\n" ] }, "metadata": { "application/vnd.vegalite.v3+json": { "embed_options": { "renderer": "svg" } } }, "output_type": "display_data" }, { "data": { "application/vnd.vegalite.v3+json": { "$schema": "https://vega.github.io/schema/vega-lite/v3.4.0.json", "config": { "mark": { "tooltip": null }, "view": { "height": 300, "width": 400 } }, "data": { "name": "data-eecdaea28dfa02ef3268ff4e2b82afe6" }, "datasets": { "data-eecdaea28dfa02ef3268ff4e2b82afe6": [ { "Duration in ms": 106.06, "Number of cores": 16, "Number of tasks": 1 }, { "Duration in ms": 109.46, "Number of cores": 16, "Number of tasks": 10 }, { "Duration in ms": 109.6, "Number of cores": 16, "Number of tasks": 100 }, { "Duration in ms": 113.12, "Number of cores": 16, "Number of tasks": 1000 }, { "Duration in ms": 132.82, "Number of cores": 16, "Number of tasks": 10000 } ] }, "encoding": { "color": { "field": "Number of cores", "type": "nominal" }, "tooltip": { "field": "Duration in ms", "type": "quantitative" }, "x": { "field": "Number of tasks", "scale": { "type": "log" }, "type": "quantitative" }, "y": { "field": "Duration in ms", "type": "quantitative" } }, "mark": { "point": true, "type": "line" }, "selection": { "selector022": { "bind": "scales", "encodings": [ "x", "y" ], "type": "interval" } }, "title": "Ran with no delay on 100 engines SchedulerType.BROADCAST_NON_COALESCING", "width": 800 }, "image/png": "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", "text/plain": [ "\n", "\n", "If you see this message, it means the renderer has not been properly enabled\n", "for the frontend that you are using. For more information, see\n", "https://altair-viz.github.io/user_guide/troubleshooting.html\n" ] }, "metadata": { "application/vnd.vegalite.v3+json": { "embed_options": { "renderer": "svg" } } }, "output_type": "display_data" }, { "data": { "application/vnd.vegalite.v3+json": { "$schema": "https://vega.github.io/schema/vega-lite/v3.4.0.json", "config": { "mark": { "tooltip": null }, "view": { "height": 300, "width": 400 } }, "data": { "name": "data-db14e88f35cec334e11a5ca140df08f5" }, "datasets": { "data-db14e88f35cec334e11a5ca140df08f5": [ { "Duration in ms": 78.68, "Number of cores": 16, "Number of tasks": 1 }, { "Duration in ms": 84.5, "Number of cores": 16, "Number of tasks": 10 }, { "Duration in ms": 86.32, "Number of cores": 16, "Number of tasks": 100 }, { "Duration in ms": 85.67, "Number of cores": 16, "Number of tasks": 1000 }, { "Duration in ms": 105.36, "Number of cores": 16, "Number of tasks": 10000 } ] }, "encoding": { "color": { "field": "Number of cores", "type": "nominal" }, "tooltip": { "field": "Duration in ms", "type": "quantitative" }, "x": { "field": "Number of tasks", "scale": { "type": "log" }, "type": "quantitative" }, "y": { "field": "Duration in ms", "type": "quantitative" } }, "mark": { "point": true, "type": "line" }, "selection": { "selector023": { "bind": "scales", "encodings": [ "x", "y" ], "type": "interval" } }, "title": "Ran with no delay on 100 engines SchedulerType.DIRECT_VIEW", "width": 800 }, "image/png": "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", "text/plain": [ "\n", "\n", "If you see this message, it means the renderer has not been properly enabled\n", "for the frontend that you are using. For more information, see\n", "https://altair-viz.github.io/user_guide/troubleshooting.html\n" ] }, "metadata": { "application/vnd.vegalite.v3+json": { "embed_options": { "renderer": "svg" } } }, "output_type": "display_data" }, { "data": { "application/vnd.vegalite.v3+json": { "$schema": "https://vega.github.io/schema/vega-lite/v3.4.0.json", "config": { "mark": { "tooltip": null }, "view": { "height": 300, "width": 400 } }, "data": { "name": "data-d755a1f46ab4ea775268e5cf31101e28" }, "datasets": { "data-d755a1f46ab4ea775268e5cf31101e28": [ { "Duration in ms": 7.51, "Number of cores": 16, "Number of tasks": 1 }, { "Duration in ms": 7.42, "Number of cores": 16, "Number of tasks": 10 }, { "Duration in ms": 7.64, "Number of cores": 16, "Number of tasks": 100 }, { "Duration in ms": 7.68, "Number of cores": 16, "Number of tasks": 1000 }, { "Duration in ms": 8.62, "Number of cores": 16, "Number of tasks": 10000 } ] }, "encoding": { "color": { "field": "Number of cores", "type": "nominal" }, "tooltip": { "field": "Duration in ms", "type": "quantitative" }, "x": { "field": "Number of tasks", "scale": { "type": "log" }, "type": "quantitative" }, "y": { "field": "Duration in ms", "type": "quantitative" } }, "mark": { "point": true, "type": "line" }, "selection": { "selector024": { "bind": "scales", "encodings": [ "x", "y" ], "type": "interval" } }, "title": "Ran with no delay on 100 engines SchedulerType.LOAD_BALANCED", "width": 800 }, "image/png": "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", "text/plain": [ "\n", "\n", "If you see this message, it means the renderer has not been properly enabled\n", "for the frontend that you are using. For more information, see\n", "https://altair-viz.github.io/user_guide/troubleshooting.html\n" ] }, "metadata": { "application/vnd.vegalite.v3+json": { "embed_options": { "renderer": "svg" } } }, "output_type": "display_data" }, { "data": { "application/vnd.vegalite.v3+json": { "$schema": "https://vega.github.io/schema/vega-lite/v3.4.0.json", "config": { "mark": { "tooltip": null }, "view": { "height": 300, "width": 400 } }, "data": { "name": "data-3abed3ba541a1bff180c05cafe7b66f9" }, "datasets": { "data-3abed3ba541a1bff180c05cafe7b66f9": [ { "Duration in ms": 59.14, "Number of cores": 16, "Number of tasks": 1 }, { "Duration in ms": 60.77, "Number of cores": 16, "Number of tasks": 10 }, { "Duration in ms": 60.02, "Number of cores": 16, "Number of tasks": 100 }, { "Duration in ms": 61.96, "Number of cores": 16, "Number of tasks": 1000 }, { "Duration in ms": 85.64, "Number of cores": 16, "Number of tasks": 10000 } ] }, "encoding": { "color": { "field": "Number of cores", "type": "nominal" }, "tooltip": { "field": "Duration in ms", "type": "quantitative" }, "x": { "field": "Number of tasks", "scale": { "type": "log" }, "type": "quantitative" }, "y": { "field": "Duration in ms", "type": "quantitative" } }, "mark": { "point": true, "type": "line" }, "selection": { "selector025": { "bind": "scales", "encodings": [ "x", "y" ], "type": "interval" } }, "title": "Ran with no delay on 100 engines SchedulerType.SPANNING_TREE", "width": 800 }, "image/png": "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", "text/plain": [ "\n", "\n", "If you see this message, it means the renderer has not been properly enabled\n", "for the frontend that you are using. For more information, see\n", "https://altair-viz.github.io/user_guide/troubleshooting.html\n" ] }, "metadata": { "application/vnd.vegalite.v3+json": { "embed_options": { "renderer": "svg" } } }, "output_type": "display_data" } ], "source": [ "no_delay_source = get_no_delay_source(benchmark_results)\n", "display(Markdown('### With no delay and 100 engines:'))\n", "for scheduler_name, results in no_delay_source[\n", " BenchmarkType.TIME_N_TASKS_NO_DELAY\n", "].items():\n", " data = pd.DataFrame(results)\n", " alt.Chart(data).mark_line(point=True).encode(\n", " alt.X('Number of tasks', scale=alt.Scale(type='log')),\n", " color='Number of cores:N',\n", " y='Duration in ms',\n", " tooltip='Duration in ms',\n", " ).properties(\n", " title=f'Ran with no delay on 100 engines {scheduler_name}', width=800\n", " ).interactive().display(renderer='svg')" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.4" } }, "nbformat": 4, "nbformat_minor": 4 } ipython-ipyparallel-14e3c43/benchmarks/throughtput_benchmarks.ipynb000066400000000000000000004366471520071063500260450ustar00rootroot00000000000000{ "cells": [ { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "import pickle\n", "\n", "import altair as alt\n", "import pandas as pd\n", "from benchmark_result import get_broadcast_source\n", "from IPython.display import Markdown, display" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "# benchmark_results = get_benchmark_results()\n", "with open('saved_results.pkl', 'rb') as saved_results:\n", " benchmark_results = pickle.load(saved_results)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## ipyparallel benchmark results ##" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# time_broadcast" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This benchmark comes from benchmarking the runtime of sending and returning different size arrays to different number of engines with the echo function on various scheduler implementations\n" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "jupyter": { "source_hidden": true } }, "outputs": [ { "data": { "text/plain": [ "\u001b[0;31mSignature:\u001b[0m \u001b[0mecho\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdelay\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mDocstring:\u001b[0m \n", "\u001b[0;31mSource:\u001b[0m \n", "\u001b[0;32mdef\u001b[0m \u001b[0mecho\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdelay\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0minner_echo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mtime\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mdelay\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mtime\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msleep\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdelay\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0minner_echo\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mFile:\u001b[0m ~/ipyparallel_master_project/benchmarks/utils.py\n", "\u001b[0;31mType:\u001b[0m function\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "??echo" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "jupyter": { "source_hidden": true } }, "outputs": [ { "data": { "text/plain": [ "\u001b[0;31mSignature:\u001b[0m \u001b[0mmake_benchmark\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbenchmark_name\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mget_view\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mDocstring:\u001b[0m \n", "\u001b[0;31mSource:\u001b[0m \n", "\u001b[0;32mdef\u001b[0m \u001b[0mmake_benchmark\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbenchmark_name\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mget_view\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mclass\u001b[0m \u001b[0mThroughputSuite\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mparam_names\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m'Number of engines'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'Number of bytes'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mtimer\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtimeit\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdefault_timer\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mtimeout\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m120\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mparams\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mengines\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbyte_param\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mview\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mclient\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mreply\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0msetup\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnumber_of_engines\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnumber_of_bytes\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclient\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mipp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mClient\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprofile\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'asv'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mview\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mget_view\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mview\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtargets\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mlist\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnumber_of_engines\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mwait_for\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;32mlambda\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclient\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m>=\u001b[0m \u001b[0mnumber_of_engines\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mtime_broadcast\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mengines\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnumber_of_bytes\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreply\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mview\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mapply_sync\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mecho\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0marray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m*\u001b[0m \u001b[0mnumber_of_bytes\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mint8\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mteardown\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclient\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclient\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mThroughputSuite\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mFile:\u001b[0m ~/ipyparallel_master_project/benchmarks/throughput.py\n", "\u001b[0;31mType:\u001b[0m function\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "??make_benchmark" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Results from running benchmark on 64 cores\n" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "source = get_broadcast_source(benchmark_results)" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "dview = pd.DataFrame(source['DirectView'])\n", "dview['Scheduler name'] = 'DirectView'\n", "dview['Speedup'] = 1" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Duration in msNumber of bytesNumber of enginesScheduler nameSpeedup
09.4510001NonCoalescing0.484656
19.47100001NonCoalescing0.587117
217.831000001NonCoalescing0.722378
389.2510000001NonCoalescing0.873501
4172.5120000001NonCoalescing0.858733
..................
35677.2110001024DirectView1.000000
36661.01100001024DirectView1.000000
37760.371000001024DirectView1.000000
381979.3010000001024DirectView1.000000
393942.0420000001024DirectView1.000000
\n", "

120 rows × 5 columns

\n", "
" ], "text/plain": [ " Duration in ms Number of bytes Number of engines Scheduler name \\\n", "0 9.45 1000 1 NonCoalescing \n", "1 9.47 10000 1 NonCoalescing \n", "2 17.83 100000 1 NonCoalescing \n", "3 89.25 1000000 1 NonCoalescing \n", "4 172.51 2000000 1 NonCoalescing \n", ".. ... ... ... ... \n", "35 677.21 1000 1024 DirectView \n", "36 661.01 10000 1024 DirectView \n", "37 760.37 100000 1024 DirectView \n", "38 1979.30 1000000 1024 DirectView \n", "39 3942.04 2000000 1024 DirectView \n", "\n", " Speedup \n", "0 0.484656 \n", "1 0.587117 \n", "2 0.722378 \n", "3 0.873501 \n", "4 0.858733 \n", ".. ... \n", "35 1.000000 \n", "36 1.000000 \n", "37 1.000000 \n", "38 1.000000 \n", "39 1.000000 \n", "\n", "[120 rows x 5 columns]" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "datas = []\n", "for scheduler_name, scheduler_results in source.items():\n", " data = pd.DataFrame(scheduler_results)\n", " data['Scheduler name'] = scheduler_name\n", " data['Speedup'] = dview['Duration in ms'] / data['Duration in ms']\n", " datas.append(data)\n", "data = pd.concat(datas)\n", "data" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
\n", "" ], "text/plain": [ "alt.Chart(...)" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ldata = data[data['Number of bytes'] == 2000_000]\n", "alt.Chart(ldata).mark_line(point=True).encode(\n", " alt.X('Number of engines', scale=alt.Scale(type='log', base=2)),\n", " alt.Y('Duration in ms', scale=alt.Scale(type='log')),\n", " color='Scheduler name:N',\n", " tooltip='Duration in ms',\n", ").configure_axis(labelFontSize=20, titleFontSize=20).properties(\n", " title='Runtime of apply using DirectView', width=1080\n", ").interactive().display(renderer='svg')" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
\n", "" ], "text/plain": [ "alt.Chart(...)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "
\n", "" ], "text/plain": [ "alt.Chart(...)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "
\n", "" ], "text/plain": [ "alt.Chart(...)" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "for scheduler_name in data['Scheduler name'].unique():\n", " scheduler_data = data[data['Scheduler name'] == scheduler_name]\n", " alt.Chart(scheduler_data).mark_line(point=True).encode(\n", " alt.X('Number of bytes', scale=alt.Scale(type='log')),\n", " alt.Y('Duration in ms', scale=alt.Scale(type='log')),\n", " color='Number of engines:N',\n", " tooltip='Duration in ms',\n", " ).properties(title=scheduler_name, width=800).interactive().display(renderer='svg')" ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "jupyter": { "source_hidden": true } }, "outputs": [ { "data": { "text/markdown": [ "## Results for duration[DirectView]/duration[scheduler]" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "
\n", "" ], "text/plain": [ "alt.Chart(...)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "
\n", "" ], "text/plain": [ "alt.Chart(...)" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "display(Markdown('## Results for duration[DirectView]/duration[scheduler]'))\n", "for scheduler_name in data['Scheduler name'].unique():\n", " if scheduler_name == 'DirectView':\n", " continue\n", " alt.Chart(data[data['Scheduler name'] == scheduler_name]).mark_line(\n", " point=True\n", " ).encode(\n", " alt.X('Number of bytes', scale=alt.Scale(type='log')),\n", " alt.Y(\n", " 'Speedup',\n", " ),\n", " color='Number of engines:N',\n", " tooltip='Number of engines',\n", " ).properties(title=scheduler_name, width=800).interactive().display(renderer='svg')" ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "jupyter": { "source_hidden": true } }, "outputs": [ { "data": { "text/markdown": [ "### Running on 1 engines" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "
\n", "" ], "text/plain": [ "alt.Chart(...)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/markdown": [ "### Running on 2 engines" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "
\n", "" ], "text/plain": [ "alt.Chart(...)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/markdown": [ "### Running on 16 engines" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "
\n", "" ], "text/plain": [ "alt.Chart(...)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/markdown": [ "### Running on 64 engines" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "
\n", "" ], "text/plain": [ "alt.Chart(...)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/markdown": [ "### Running on 128 engines" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "
\n", "" ], "text/plain": [ "alt.Chart(...)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/markdown": [ "### Running on 256 engines" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "
\n", "" ], "text/plain": [ "alt.Chart(...)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/markdown": [ "### Running on 512 engines" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "
\n", "" ], "text/plain": [ "alt.Chart(...)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/markdown": [ "### Running on 1024 engines" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "
\n", "" ], "text/plain": [ "alt.Chart(...)" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "for engine in data['Number of engines'].unique():\n", " display(Markdown(f'### Running on {engine} engines'))\n", " alt.Chart(\n", " data[\n", " (data['Number of engines'] == engine)\n", " & (data['Scheduler name'] != 'DirectView')\n", " ]\n", " ).mark_line(point=True).encode(\n", " alt.X('Number of bytes', scale=alt.Scale(type='log')),\n", " alt.Y(\n", " 'Speedup',\n", " ),\n", " color='Scheduler name:N',\n", " tooltip='Duration in ms',\n", " ).properties(title='schedulers vs directView', width=800).interactive().display(\n", " renderer='svg'\n", " )" ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "jupyter": { "source_hidden": true } }, "outputs": [ { "data": { "text/html": [ "\n", "
\n", "" ], "text/plain": [ "alt.Chart(...)" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "data['combined'] = data['Scheduler name'] + ' ' + data['Number of bytes'].astype(str)\n", "alt.Chart(data[data['Scheduler name'] != 'DirectView']).mark_line(point=True).encode(\n", " alt.X('Number of engines', scale=alt.Scale(type='log')),\n", " alt.Y(\n", " 'Speedup',\n", " ),\n", " color='Number of bytes:N',\n", " strokeDash=alt.StrokeDash(shorthand='Scheduler name', legend=None),\n", " tooltip='combined',\n", ").properties(\n", " title='schedulers vs directView scaling engines', width=800\n", ").interactive().display(renderer='svg')" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Duration in msNumber of bytesNumber of enginesScheduler nameSpeedup
35617.3810001024NonCoalescing1.096910
36619.59100001024NonCoalescing1.066851
37652.451000001024NonCoalescing1.165407
381132.6710000001024NonCoalescing1.747464
394143.3020000001024NonCoalescing0.951425
35176.2110001024Coalescing3.843198
36221.57100001024Coalescing2.983301
37354.271000001024Coalescing2.146301
381699.8310000001024Coalescing1.164411
394317.6720000001024Coalescing0.913002
35677.2110001024DirectView1.000000
36661.01100001024DirectView1.000000
37760.371000001024DirectView1.000000
381979.3010000001024DirectView1.000000
393942.0420000001024DirectView1.000000
\n", "
" ], "text/plain": [ " Duration in ms Number of bytes Number of engines Scheduler name \\\n", "35 617.38 1000 1024 NonCoalescing \n", "36 619.59 10000 1024 NonCoalescing \n", "37 652.45 100000 1024 NonCoalescing \n", "38 1132.67 1000000 1024 NonCoalescing \n", "39 4143.30 2000000 1024 NonCoalescing \n", "35 176.21 1000 1024 Coalescing \n", "36 221.57 10000 1024 Coalescing \n", "37 354.27 100000 1024 Coalescing \n", "38 1699.83 1000000 1024 Coalescing \n", "39 4317.67 2000000 1024 Coalescing \n", "35 677.21 1000 1024 DirectView \n", "36 661.01 10000 1024 DirectView \n", "37 760.37 100000 1024 DirectView \n", "38 1979.30 1000000 1024 DirectView \n", "39 3942.04 2000000 1024 DirectView \n", "\n", " Speedup \n", "35 1.096910 \n", "36 1.066851 \n", "37 1.165407 \n", "38 1.747464 \n", "39 0.951425 \n", "35 3.843198 \n", "36 2.983301 \n", "37 2.146301 \n", "38 1.164411 \n", "39 0.913002 \n", "35 1.000000 \n", "36 1.000000 \n", "37 1.000000 \n", "38 1.000000 \n", "39 1.000000 " ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lol = data[data['Number of engines'] == 1024]\n", "lol" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "raw", "metadata": {}, "source": [ "for engine in data['Number of engines'].unique(): \n", " alt.Chart(data[data['Number of engines'] == engine]).mark_bar().encode(\n", " x='Scheduler name',\n", " y='Duration in ms',\n", " color='Scheduler name:N',\n", " column='Number of bytes:N', \n", " tooltip='Duration in ms'\n", " ).properties(title=f'Runtime on {engine} engines:').interactive().display(renderer='svg')" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.4" } }, "nbformat": 4, "nbformat_minor": 4 } ipython-ipyparallel-14e3c43/benchmarks/utils.py000066400000000000000000000001561520071063500217000ustar00rootroot00000000000000def seconds_to_ms(seconds): return round(seconds * 1000, 2) def ms_to_seconds(ms): return ms / 1000 ipython-ipyparallel-14e3c43/ci/000077500000000000000000000000001520071063500164425ustar00rootroot00000000000000ipython-ipyparallel-14e3c43/ci/slurm/000077500000000000000000000000001520071063500176045ustar00rootroot00000000000000ipython-ipyparallel-14e3c43/ci/slurm/Dockerfile000066400000000000000000000030211520071063500215720ustar00rootroot00000000000000FROM ubuntu:24.04 ENV DEBIAN_FRONTEND=noninteractive RUN --mount=type=cache,target=/var/cache/apt \ rm -f /etc/apt/apt.conf.d/docker-clean \ && apt-get update && apt-get -y install \ gosu \ mysql-client \ python3-venv \ python3-pip \ slurm-wlm \ slurmdbd \ slurm ENV PIP_CACHE_DIR=/tmp/pip-cache \ VIRTUAL_ENV=/srv/env \ PATH=/srv/env/bin:${PATH} \ IPP_DISABLE_JS=1 RUN --mount=type=cache,target=${PIP_CACHE_DIR} \ python3 -m venv $VIRTUAL_ENV \ && $VIRTUAL_ENV/bin/python3 -m pip install ipyparallel pytest-asyncio pytest-cov # initialize some filesystem RUN mkdir -p /etc/sysconfig/slurm \ /var/spool/slurmd \ /var/run/slurmd \ /var/run/slurmdbd \ /var/lib/slurmd \ /data \ && touch /var/lib/slurmd/node_state \ /var/lib/slurmd/front_end_state \ /var/lib/slurmd/job_state \ /var/lib/slurmd/resv_state \ /var/lib/slurmd/trigger_state \ /var/lib/slurmd/assoc_mgr_state \ /var/lib/slurmd/assoc_usage \ /var/lib/slurmd/qos_usage \ /var/lib/slurmd/fed_mgr_state \ && chown -R slurm:slurm /var/*/slurm* \ && mkdir /run/munge \ && chown munge:munge /run/munge \ && chmod a+rwxt /run/munge # && mungekey -c COPY --chown=slurm:slurm --chmod=0600 etc_slurm/ /etc/slurm/ COPY entrypoint.sh /entrypoint ENTRYPOINT ["/entrypoint"] # the mounted directory RUN mkdir /io ENV PYTHONPATH=/io WORKDIR "/io" CMD [ "tail", "-f", "/var/log/slurm/slurmd.log" ] ipython-ipyparallel-14e3c43/ci/slurm/README.md000066400000000000000000000002031520071063500210560ustar00rootroot00000000000000# Slurm cluster example for testing adapted and simplified from https://github.com/giovtorres/slurm-docker-cluster/ License: MIT ipython-ipyparallel-14e3c43/ci/slurm/docker-compose.yaml000066400000000000000000000022511520071063500234020ustar00rootroot00000000000000services: mysql: image: mariadb:10.11 hostname: mysql container_name: mysql environment: MYSQL_RANDOM_ROOT_PASSWORD: "yes" MYSQL_DATABASE: slurm_acct_db MYSQL_USER: slurm MYSQL_PASSWORD: password volumes: - var_lib_mysql:/var_lib/mysql slurmdbd: image: ipp-cluster:slurm build: . command: - slurmdbd container_name: slurmdbd hostname: slurmdbd volumes: - etc_munge:/etc/munge - var_log_slurm:/var/log/slurm depends_on: - mysql slurmctld: image: ipp-cluster:slurm build: . command: - slurmctld container_name: slurmctld hostname: slurmctld volumes: - etc_munge:/etc/munge - slurm_jobdir:/data - var_log_slurm:/var/log/slurm - ../..:/io depends_on: - slurmdbd compute: image: ipp-cluster:slurm build: . command: - slurmd deploy: replicas: 2 volumes: - etc_munge:/etc/munge - slurm_jobdir:/data - var_log_slurm:/var/log/slurm - ../..:/io depends_on: - "slurmctld" volumes: etc_munge: # etc_slurm: slurm_jobdir: var_lib_mysql: var_log_slurm: ipython-ipyparallel-14e3c43/ci/slurm/entrypoint.sh000077500000000000000000000033511520071063500223600ustar00rootroot00000000000000#!/bin/bash set -ex if [ "$1" = "slurmdbd" ] then echo "---> Starting the MUNGE Authentication service (munged) ..." gosu munge /usr/sbin/munged echo "---> Starting the Slurm Database Daemon (slurmdbd) ..." { . /etc/slurm/slurmdbd.conf until echo "SELECT 1" | mysql -h $StorageHost -u$StorageUser -p$StoragePass 2>&1 > /dev/null do echo "-- Waiting for database to become active ..." sleep 2 done } echo "-- Database is now active ..." exec gosu slurm /usr/sbin/slurmdbd -Dvvv fi if [ "$1" = "slurmctld" ] then echo "---> Starting the MUNGE Authentication service (munged) ..." gosu munge /usr/sbin/munged echo "---> Waiting for slurmdbd to become active before starting slurmctld ..." until 2>/dev/null >/dev/tcp/slurmdbd/6819 do echo "-- slurmdbd is not available. Sleeping ..." sleep 2 done echo "-- slurmdbd is now active ..." echo "---> Starting the Slurm Controller Daemon (slurmctld) ..." if /usr/sbin/slurmctld -V | grep -q '17.02' ; then exec gosu slurm /usr/sbin/slurmctld -Dvvv else exec gosu slurm /usr/sbin/slurmctld -i -Dvvv fi fi if [ "$1" = "slurmd" ] then echo "---> Starting the MUNGE Authentication service (munged) ..." gosu munge /usr/sbin/munged echo "---> Waiting for slurmctld to become active before starting slurmd..." until 2>/dev/null >/dev/tcp/slurmctld/6817 do echo "-- slurmctld is not available. Sleeping ..." sleep 2 done echo "-- slurmctld is now active ..." echo "---> Starting the Slurm Node Daemon (slurmd) ..." exec /usr/sbin/slurmd -Z --conf "CPUs=2 RealMemory=1000 Feature=compute" -Dvvv fi exec "$@" ipython-ipyparallel-14e3c43/ci/slurm/etc_slurm/000077500000000000000000000000001520071063500216015ustar00rootroot00000000000000ipython-ipyparallel-14e3c43/ci/slurm/etc_slurm/cgroup.conf000066400000000000000000000000271520071063500237460ustar00rootroot00000000000000CgroupPlugin=cgroup/v1 ipython-ipyparallel-14e3c43/ci/slurm/etc_slurm/slurm.conf000066400000000000000000000047171520071063500236230ustar00rootroot00000000000000# slurm.conf # # See the slurm.conf man page for more information. # ClusterName=linux ControlMachine=slurmctld ControlAddr=slurmctld #BackupController= #BackupAddr= # SlurmUser=slurm #SlurmdUser=root SlurmctldPort=6817 SlurmdPort=6818 AuthType=auth/munge #JobCredentialPrivateKey= #JobCredentialPublicCertificate= StateSaveLocation=/var/lib/slurmd SlurmdSpoolDir=/var/spool/slurmd SwitchType=switch/none MpiDefault=none SlurmctldPidFile=/var/run/slurmd/slurmctld.pid SlurmdPidFile=/var/run/slurmd/slurmd.pid ProctrackType=proctrack/linuxproc #PluginDir= #CacheGroups=0 #FirstJobId= ReturnToService=0 #MaxJobCount= #PlugStackConfig= #PropagatePrioProcess= #PropagateResourceLimits= #PropagateResourceLimitsExcept= #Prolog= #Epilog= #SrunProlog= #SrunEpilog= #TaskProlog= #TaskEpilog= #TaskPlugin= #TrackWCKey=no #TreeWidth=50 #TmpFS= #UsePAM= # # TIMERS SlurmctldTimeout=300 SlurmdTimeout=300 InactiveLimit=0 MinJobAge=300 KillWait=30 Waittime=0 # # SCHEDULING SchedulerType=sched/backfill #SchedulerAuth= #SchedulerPort= #SchedulerRootFilter= SelectType=select/cons_tres # <-- MODIFICAÇÃO 1: Atualizado para compatibilidade com TRES SelectTypeParameters=CR_Core_Memory #FastSchedule=1 # <-- MODIFICAÇÃO 2: Comentado por ser obsoleto #PriorityType=priority/multifactor #PriorityDecayHalfLife=14-0 #PriorityUsageResetPeriod=14-0 #PriorityWeightFairshare=100000 #PriorityWeightAge=1000 #PriorityWeightPartition=10000 #PriorityWeightJobSize=1000 #PriorityMaxAge=1-0 # # LOGGING SlurmctldDebug=3 SlurmctldLogFile=/var/log/slurm/slurmctld.log SlurmdDebug=3 SlurmdLogFile=/var/log/slurm/slurmd.log JobCompType=jobcomp/filetxt JobCompLoc=/var/log/slurm/jobcomp.log # # ACCOUNTING JobAcctGatherType=jobacct_gather/linux JobAcctGatherFrequency=30 # AccountingStorageType=accounting_storage/slurmdbd AccountingStorageHost=slurmdbd AccountingStoragePort=6819 #AccountingStorageLoc=slurm_acct_db #AccountingStoragePass= #AccountingStorageUser= # # COMPUTE NODES #NodeName=c1 NodeAddr=slurm-compute-1 CPUs=2 RealMemory=1000 State=UNKNOWN #NodeName=c2 NodeAddr=slurm-compute-2 CPUs=2 RealMemory=1000 State=UNKNOWN # # PARTITIONS #PartitionName=normal Default=yes Nodes=c1,c2 Priority=50 DefMemPerCPU=500 Shared=NO MaxNodes=2 MaxTime=5-00:00:00 DefaultTime=5-00:00:00 State=UP # PartitionName=normal Nodes=c1,c2 Default=YES MaxTime=INFINITE State=UP # allow dynamic registration of compute nodes (slurmd -Z) Nodeset=ns1 Feature=compute PartitionName=all Nodes=ALL Default=yes MaxNodes=100 MaxNodeCount=100 ipython-ipyparallel-14e3c43/ci/slurm/etc_slurm/slurmdbd.conf000066400000000000000000000013221520071063500242620ustar00rootroot00000000000000# # Example slurmdbd.conf file. # # See the slurmdbd.conf man page for more information. # # Archive info #ArchiveJobs=yes #ArchiveDir="/tmp" #ArchiveSteps=yes #ArchiveScript= #JobPurge=12 #StepPurge=1 # # Authentication info AuthType=auth/munge #AuthInfo=/var/run/munge/munge.socket.2 # # slurmDBD info DbdAddr=slurmdbd DbdHost=slurmdbd #DbdPort=6819 SlurmUser=slurm #MessageTimeout=300 DebugLevel=4 #DefaultQOS=normal,standby LogFile=/var/log/slurm/slurmdbd.log PidFile=/var/run/slurmdbd/slurmdbd.pid #PluginDir=/usr/lib/slurm #PrivateData=accounts,users,usage,jobs #TrackWCKey=yes # # Database info StorageType=accounting_storage/mysql StorageHost=mysql StorageUser=slurm StoragePass=password #StorageLoc=slurm_acct_db ipython-ipyparallel-14e3c43/ci/ssh/000077500000000000000000000000001520071063500172375ustar00rootroot00000000000000ipython-ipyparallel-14e3c43/ci/ssh/Dockerfile000066400000000000000000000025111520071063500212300ustar00rootroot00000000000000FROM ubuntu:24.04 RUN --mount=type=cache,target=/var/cache/apt \ rm -f /etc/apt/apt.conf.d/docker-clean \ && apt-get update \ && apt-get -y install \ iputils-ping \ bind9-utils \ wget \ openssh-server ENV MAMBA_ROOT_PREFIX=/opt/conda ENV PATH=$MAMBA_ROOT_PREFIX/bin:$PATH ENV IPP_DISABLE_JS=1 # x86_64 -> 64, aarch64 unmodified RUN ARCH=$(uname -m | sed s@x86_@@) \ && wget -qO- https://github.com/mamba-org/micromamba-releases/releases/latest/download/micromamba-linux-${ARCH} > /usr/local/bin/micromamba \ && chmod +x /usr/local/bin/micromamba RUN --mount=type=cache,target=${MAMBA_ROOT_PREFIX}/pkgs \ micromamba install -y -p $MAMBA_ROOT_PREFIX -c conda-forge \ python=3.10 \ pip \ ipyparallel # generate a user with home directory and trusted ssh keypair RUN useradd -m -s /bin/bash -N ciuser USER ciuser RUN mkdir ~/.ssh \ && chmod 0700 ~/.ssh \ && ssh-keygen -q -t rsa -N '' -f /home/ciuser/.ssh/id_rsa \ && cat ~/.ssh/id_rsa.pub > ~/.ssh/authorized_keys \ && chmod 0600 ~/.ssh/* USER root ENV PIP_CACHE_DIR=/tmp/pip-cache COPY . /src/ipyparallel RUN --mount=type=cache,target=${PIP_CACHE_DIR} python3 -m pip install -e 'file:///src/ipyparallel#egg=ipyparallel[test]' # needed for sshd to start RUN mkdir /run/sshd # run sshd in the foreground CMD /usr/sbin/sshd -D -e ipython-ipyparallel-14e3c43/ci/ssh/docker-compose.yaml000066400000000000000000000002171520071063500230350ustar00rootroot00000000000000services: sshd: image: ipyparallel-sshd build: context: ../.. dockerfile: ci/ssh/Dockerfile ports: - "2222:22" ipython-ipyparallel-14e3c43/ci/ssh/ipcluster_config.py000066400000000000000000000012531520071063500231510ustar00rootroot00000000000000import os c = get_config() # noqa c.Cluster.controller_ip = '0.0.0.0' c.Cluster.engine_launcher_class = 'SSH' ssh_key = os.path.join(os.path.dirname(__file__), "id_rsa") c.Cluster.controller_ip = '0.0.0.0' c.Cluster.engine_launcher_class = 'SSH' c.SSHEngineSetLauncher.scp_args = c.SSHLauncher.ssh_args = [ "-o", "UserKnownHostsFile=/dev/null", "-o", "StrictHostKeyChecking=no", "-i", ssh_key, ] c.SSHEngineSetLauncher.engines = {"ciuser@127.0.0.1:2222": 4} c.SSHEngineSetLauncher.remote_python = "/opt/conda/bin/python3" c.SSHEngineSetLauncher.remote_profile_dir = "/home/ciuser/.ipython/profile_default" c.SSHEngineSetLauncher.engine_args = ['--debug'] ipython-ipyparallel-14e3c43/ci/ssh/win_Dockerfile_template000066400000000000000000000052141520071063500240030ustar00rootroot00000000000000# syntax = docker/dockerfile:1.2.1 FROM python:3.12-windowsservercore-ltsc2022 SHELL ["powershell"] # using docker env doesn't seem to work fully correctly. The environment variable is set in the powershell # but somehow it is not present during pip install process, which will cause the ipyparallel installation # to fail. Therefore, we use the SetEnvironmentVariable command (for the machine) to make this 'permanent'. # See run command below. ENV IPP_DISABLE_JS=1 # the following env variable values will be 'statically' replaced by the corresponding github workflow script # if the values aren't replaced the container hosts file isn't changed which is typically no problem in a local # environment. but it's a necessity for github runners, since the host name resolution inside the container doesn't # work correctly while trying to register with the ipyparallel controller (for linux runners this isn't an issue) ENV docker_host_ip ${docker_host_ip} ENV docker_host_name ${docker_host_name} # set IPP_DISABLE_JS=1 and install latest node js version RUN [System.Environment]::SetEnvironmentVariable('IPP_DISABLE_JS','1', [EnvironmentVariableTarget]::Machine); \ #add the docker host name and ip to the container hosts file (needed for the github runners since the docker host name resolution doesn't work there) $hostsfile='C:\Windows\System32\drivers\etc\hosts'; \ $line=\"$env:docker_host_ip $env:docker_host_name\"; \ if ($line.Trim().Length -eq 0) { \ Write-Host 'Environment variables docker_host_[name|ip] not set. Hosts file unchanged!'; \ } else { \ Write-Host 'Adapting hosts file '; \ $h=(Get-Content $hostsfile)+$line; \ echo $h | out-file -encoding ASCII $hostsfile; \ type $hostsfile; \ } RUN Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'; \ Write-Host 'Install OpenSSH Server...'; \ Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0; \ Write-Host 'Initializing OpenSSH Server...'; \ Start-Service sshd; \ Stop-Service sshd # create ciuser including key pair RUN Write-Host 'Create user ciuser...';\ NET USER ciuser /add USER ciuser RUN Write-Host 'Create key pair and copy public key...';\ ssh-keygen -t rsa -N '\"\"' -f $env:USERPROFILE/.ssh/id_rsa; \ cp $env:USERPROFILE/.ssh/id_rsa.pub $env:USERPROFILE/.ssh/authorized_keys # switch back to the admin user USER containeradministrator # This is apparently the only way to keep the sshd service running. # Running sshd in the foreground in the context of a user (as it is done for linux), doesn't work under Windows. # Even if it is started as admin user, errors occur during logon (lack of some system rights) CMD powershell -NoExit -Command "Start-Service sshd" ipython-ipyparallel-14e3c43/ci/ssh/win_base_Dockerfile000066400000000000000000000013171520071063500231020ustar00rootroot00000000000000# syntax = docker/dockerfile:1.2.1 FROM python:3.12-windowsservercore-ltsc2022 SHELL ["powershell"] RUN Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'; \ Write-Host 'Install OpenSSH Server...'; \ Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0; \ Write-Host 'Initializing OpenSSH Server...'; \ Start-Service sshd; \ Stop-Service sshd # This is apparently the only way to keep the sshd service running. # Running sshd in the foreground in the context of a user (as it is done for linux), doesn't work under Windows. # Even if it is started as admin user, errors occur during logon (lack of some system rights) CMD powershell -NoExit -Command "Start-Service sshd" ipython-ipyparallel-14e3c43/ci/ssh/win_docker-compose.yaml000066400000000000000000000002411520071063500237070ustar00rootroot00000000000000services: sshd: image: ipyparallel-sshd tty: true build: context: ../.. dockerfile: ci/ssh/win_Dockerfile ports: - "2222:22" ipython-ipyparallel-14e3c43/docs/000077500000000000000000000000001520071063500167775ustar00rootroot00000000000000ipython-ipyparallel-14e3c43/docs/Makefile000066400000000000000000000034221520071063500204400ustar00rootroot00000000000000# Makefile for Sphinx documentation generated by sphinx-quickstart # ---------------------------------------------------------------------------- # You can set these variables from the command line, and also # from the environment for the first two. SPHINXOPTS ?= --color -W --keep-going SPHINXBUILD ?= sphinx-build SOURCEDIR = source BUILDDIR = _build # Put it first so that "make" without argument is like "make help". help: @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) .PHONY: help Makefile # Catch-all target: route all unknown targets to Sphinx using the new # "make mode" option. # # Several sphinx-build commands can be used through this, for example: # # - make clean # - make linkcheck # - make spelling # %: Makefile @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) # Manually added targets - related to code generation # ---------------------------------------------------------------------------- # For local development: # - builds the html # - NOTE: If the pre-requisites for the html target is updated, also update the # Read The Docs section in docs/source/conf.py. # html: $(SPHINXBUILD) -b html "$(SOURCEDIR)" "$(BUILDDIR)/html" $(SPHINXOPTS) @echo @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." # Manually added targets - related to development # ---------------------------------------------------------------------------- # For local development: # - requires sphinx-autobuild, see # https://sphinxcontrib-spelling.readthedocs.io/en/latest/ # - builds and rebuilds html on changes to source, but does not re-generate # metrics/scopes files # - starts a livereload enabled webserver and opens up a browser devenv: html sphinx-autobuild -b html --open-browser "$(SOURCEDIR)" "$(BUILDDIR)/html" ipython-ipyparallel-14e3c43/docs/make.bat000066400000000000000000000015241520071063500204060ustar00rootroot00000000000000@ECHO OFF pushd %~dp0 REM Command file for Sphinx documentation if "%SPHINXOPTS%" == "" ( set SPHINXOPTS=--color -W --keep-going ) if "%SPHINXBUILD%" == "" ( set SPHINXBUILD=sphinx-build ) set SOURCEDIR=source set BUILDDIR=_build if "%1" == "" goto help if "%1" == "devenv" goto devenv goto default :default %SPHINXBUILD% >NUL 2>NUL if errorlevel 9009 ( echo. echo.The 'sphinx-build' command was not found. Open and read README.md! exit /b 1 ) %SPHINXBUILD% -M %1 "%SOURCEDIR%" "%BUILDDIR%" %SPHINXOPTS% goto end :help %SPHINXBUILD% -M help "%SOURCEDIR%" "%BUILDDIR%" %SPHINXOPTS% goto end :devenv sphinx-autobuild >NUL 2>NUL if errorlevel 9009 ( echo. echo.The 'sphinx-autobuild' command was not found. Open and read README.md! exit /b 1 ) sphinx-autobuild -b html --open-browser "%SOURCEDIR%" "%BUILDDIR%/html" goto end :end popd ipython-ipyparallel-14e3c43/docs/requirements.txt000066400000000000000000000003211520071063500222570ustar00rootroot00000000000000# pin jinja2 due to broken deprecation used in nbconvert autodoc-traits intersphinx-registry jinja2==3.0.* matplotlib myst-nb myst-parser numpy pydata-sphinx-theme sphinx sphinx-copybutton sphinxext-rediraffe ipython-ipyparallel-14e3c43/docs/source/000077500000000000000000000000001520071063500202775ustar00rootroot00000000000000ipython-ipyparallel-14e3c43/docs/source/_static/000077500000000000000000000000001520071063500217255ustar00rootroot00000000000000ipython-ipyparallel-14e3c43/docs/source/_static/IPyParallel-MPI-Example.png000066400000000000000000007116721520071063500266430ustar00rootroot00000000000000‰PNG  IHDRä@ Ôk jiCCPICC ProfileH‰•WXSÉž[RIh�H ½ Ò«”Z©‚��JŒ AÅ^\ "¢XÑUE׈ ±—E±÷łв.ê¢(*oBºî+ß;ß7wþœ9óŸ’™{gÐêáI¥¹¨6y’|Y|DkLj‹Ô¨d`üy|¹”   ô—÷7¢ì¯9)¹þ9þ_EW ”ó@ÆAœ!�óó n_Ç—Êò *õ–Sò¥J<b= â2%ÎRáJœ¡ÂGúmã9_€LãñdYhÞ‡zV? òh~†ØE"KÐq _Ä@¬Œ}X^Þ$%®€ØÚK!†ñŸŒï8³þÆŸ1ÈÏãe bU^ýBË¥¹¼iÿgiþ·äå*|ØÀFÉ"ã•ùÃÞΙ¥Ä4ˆ;%1±ÊZCÜ#¨êJ)"“Tö¨1_Î�õLˆ]¼Ð(ˆ�!—äÆD«õ™âp.Äpµ SÅùÜDˆ ^$”‡%¨m6É&Å«}¡u™2[­?Ç“õûUúz¨ÈIb«ùߊ„\5?¦Y(JL�˜ ±U�89bMˆ�å9 Qj›…"NÌ€�L¯Œß âx¡$"DÅ�dÊÂãÕöÅyò�|±M"17F�÷å‹#UõÁNñyýñÃ\°+B ;i€G(=�‹@¦Ê{!”$%¨yz¤ù!ñª¹8Uš§¶Ç-„¹J½Äò‚õ\<9.N?ž)Í�KTʼnfóFÆ©âÁ—ƒhÀ¡€°e€I ˆ[:ë;á/ÕH8àÈBà¤Ö ÌHé‘Àg(@$òÁy!ý£BPõ_µª§Èì-蟑žAœ¢@.ü­èŸ%ô– žB�øÞy°ña¼¹°)Çÿ½~@ûMÆšhµF1à‘¥5`I #†#‰áD{ÜÄýñhø †Í ÷Á}òøfOxFh%<&Ü ´îLÏ“ýå(ÐùÃÕµÈø¾¸ äôÄCðÈ™q&nœpè‡�AÏžPËQÇ­¬ ëî¿eðÝ¿¡¶£¸PPÊJ0ÅîÇ™ššžƒ,ÊZ_U¬ƒõæ ŽüèŸó]õ°�úÑ[„íÇÎb'°óج°°ãXv ;ªÄƒ«ëiÿêðßOäÿÃOíSYI¹K�K‡ËgÕX¾pj¾rãq&I§ÉÄY¢|~„,®„ï<Œåæâæ €ò[£z}½cöCæ…oºù8Ð××wø›.ª€ý%pûßú¦³� _'8WÉWÈ T:\ù À·„Üi†ÀX;˜�ðþ „�‘ $‚T0VY×¹ L3À\PJÀr° ¬Á°ìû@=8N€3à"¸n€{põ´ƒW  ¼½‚�:Â@ 3ÄqDÜ$ C¢‘x$IG² ¢@f ó‘¤Y‹lFª‘_‘CÈ ä<ÒŠÜA!È[䊡4T5AmÐá¨ÊF£ÐDt<š…NF ÑèR´­Bw¡uè ô"zmC_¡ÝÀ40&fŽ9a>‹ÅÒ°LL†Íбr¬ «Åáÿ| kÃ:±�8gà,Ü ®àH< çã“ñYø|-¾¯ÃOá×ðGxþ•@' ~.a !‹0…PD('l#$œ†{©�ðžH$2‰¶Do¸S‰ÙÄéÄ%ÄõÄ=Ä&b+ñ ±›D"’I¤X�”O*"­!í"']%µ“zÈd3²9œœF–�ç‘ËÉ;ÉÇÈWÉÏɽmŠ5Å�KP¦Q–Q¶R)—)í”^ªÕ–@M¤fSçR+¨µÔÓÔûÔw¾£5Äs4*4öjœÓx¤ñ‘¦Ks qhãh ÚRÚvZíí�N·¡ÓÓèùô¥ôjúIúCz�&CÓY“«)М­Y©Y§yUóµEËZ‹­5A«P«\k¿Öe­Nmж�6G›§=K»Rû�ö-ín†Ž«N¬NžÎ��:çu^è’tmtÃtº t·èžÔ}ÂÀ– ƒÏ˜ÏØÊ8Íh×#êÙêqõ²õJôvëµèuéëê{è'ëOÕ¯Ô?ªßÆÄ˜6L.3—¹Œ¹�y“ùiˆÉöá�ÅCj‡\òÁ`¨A°�РØ`�Á ƒO†,Ã0ÃÆõ†Œp#£ÑFSŒ6�6êª7Ô(hñÐ}Cï£ÆÆñÆÓ�·_2î615‰0‘š¬19iÒiÊ4 6Í6-3=fÚaÆ0 4›•™7{ÉÒg±Y¹¬ Ö)V—¹±y¤¹Â|³y‹y¯…­E’Å<‹=,©–>–™–e–Í–]VfV£¬fXÕXݵ¦XûX‹¬W[Ÿµþ`ck“b³Ð¦Þæ…­�-׶жÆö¾Ý.Èn²]•Ýu{¢½�}Žýzû+¨ƒ§ƒÈ¡Òá²#êèå(v\ïØ:Œ0Ìw˜dXÕ°[N4'¶S�S�Ó#g¦s´ó<çzç×톧 _1üìð¯.ž.¹.[]î¹êºŽt�çÚèúÖÍÁ�ïVévÝ�îî>Û½Áý�‡£‡ÐcƒÇmO†ç(Ï…žÍž_¼¼½d^µ^ÞVÞéÞë¼oùèùÄù,ñ9çKð ñ�í{Ä÷£Ÿ—_¾ß>¿?ý�üsüwú¿a;B8bëˆ'¼€Ím�¬ÀôÀM�mAæA¼ ª ÇÁ–Á‚àmÁÏÙöìlö.öë—YÈÁ�?ÎLNS(ZÚ¦–¶6ìa¸ExVxMxW„gÄôˆ¦HBdTäŠÈ[\.Ÿ[Ííé=ræÈSQ´¨„¨µQ�£¢eÑ�£ÐQ#G­u?Æ:FS b¹±+cÄÙÆMŽ;<š8:ntåègñ®ñ3âÏ&0&&ìLxŸ’¸,ñ^’]’"©9Y+y\ruò‡”ДҔ¶1ÃÇÌs1Õ(UœÚ�FJKNÛ–Ö=6l쪱íã<Ç�»9ÞvüÔñç'MÈ�pt¢ÖDÞÄýé„ô”ô�éŸy±¼*^w7c]FŸÃ_Í%” :„ÂRáóÌ€ÌÒÌYY+³:DA¢rQ§˜#^+~“™½1ûCNlÎöœ¾Ü”Ü=yä¼ô¼C]IŽäÔ$ÓIS'µJ¥EÒ¶É~“WMî’EɶÉùxyC¾<Ô_RØ)~R<*,¨,è™’'bÎŽ¹Ô¹9s›ç2¯tÞ_óSæ7.0Y0gÁ“Ÿ"~ª)Ò,’ÝZè¿pã"|‘xQËb÷Åk-_(q))/ù¼„¿äÂÏ®?WüÜ·4siË2¯e–—K–ß\´bG©Niaé“•£VÖ•±ÊŠËþZ5qÕùr�ò�«©««Û*¢+ÖX­Y¾æóZÑÚ•!•{Ö¯[¼îÃzÁú«‚7Ôn4ÙX²ñÓ&ñ¦Û›#6×UÙT•o!n)ØòlkòÖ³¿øüR½Íh[ɶ/Û%ÛÛvÄï8Uí]]½Óxç²´FQÓ±kÜ®+»Cw7Ô:ÕnÞÃÜS²ìUì}ùkú¯7÷EíkÞﳿö€õ�u‹ë�ºiu]õ¢ú¶†Ô†ÖC#57ú7<ì|xûó#•Gõ�.;F=¶àXßñÂãÝMÒ¦ÎY'ž4Ol¾wrÌÉë§FŸj9uúÜ™ð3'ϲÏ?pîÈy¿ó‡.ø\¨¿èu±î’祃¿yþv°Å«¥î²÷å†+¾W[G´»tõĵÐkg®s¯_¼s£õfÒÍÛ·ÆÝj»-¸ýâNî�7w îöÞ›sŸp¿ø�öƒò‡Æ«~·ÿ}O›WÛÑG¡�.=Nx|ï ÿÉ«§ò§ŸÛ<£?+nö¼ú…Û‹#áW^Ž}ÙþJúª·³è�?Ö½¶{}àÏà?/u�éj#{Ó÷vÉ;ÃwÛÿòø«¹;®ûáû¼÷½Š{ {v|ôùxöSʧç½S>“>W|±ÿÒø5êëý¾¼¾>)OÆë? `°¡™™¼Ý=¼·QǪî‚ý‚¨î¯ýü'¬º/ö‹µ°Sã9Mì…Í&rÃ^y„O ¨»û`S‹<ÓÝMÅEƒ7!BO_ß;Hð<óEÖ××»¾¯ïËVìš&«î J!Â;æP%º³rüðƒ¨î§ßåøc”x€ûz[‘&– txŠeXIfMM*>F(‡iN��’†x ä @ASCIIScreenshot=½¯ pHYs%%IR$ð×iTXtXML:com.adobe.xmp 832 2020 Screenshot 0P4iDOT (  ’$ŽÛ;y@IDATxìÝu¼ÕÇñ‡în¥)¥Q¤A@J%E° °APT%DPBB:E$¤ EEº»»óÌ0sg÷î½lÝâ÷9¯—wgΜ™9ûÞ]üã;çœD×�"@@@@@@@«@"ù°zr1@@@@@@@Ly¾ € € € € € € €Ä€�|  rI@@@@@@@äù € € € € € € € ò1€Ê%@@@@@@@ �Oß��;w&€^ÒE@@@@@@@·�¼[#žnÈÇÓ†n!€ € € € € € €ÑÈGƒ_Ù�|¶lÙâK—è € € € € € € €ÀMäoÈLJO�> € € € € € € €� Èæ'­ äã„�›"€ € € € € € €! ȇÄ;'ÈÇŽ3wA@@@@@@Â)@ Nͺ�| ÁrY@@@@@@@ äc7\—&�—$×A@@@@@@bO€@>ö¬ƒ¾�|Ðtœˆ € € € € € €Ä™�|œÑûcyÿ­h‰ € € € € € €ÄùøòIDÓùhp8„ € € € € € €ÄSùxúÁ¸»E ïÖ`@@@@@@Hò às"�O]D@@@@@@¼ä½@âã.�||üTè € € € € € € ½�|ô>ñâ(�|¼øè € € € € € € ��|@\qÓ˜@>nܹ+ € € € € € € Š@¼ ä÷ïß/ׯ_÷x_©R¥’L™2yÔ…kçСCråÊ�Ë%Ož\²fÍêQW;¡òûOì‘éëÇ;]Ï”:³%ÔkŽ1B† bvÞ¼y’'Ož„úVè7 € € € € €„Y ^òyóæ•2eÊøõ–Ïž=+[¶l‘]»vɵk×ÌsòåË'lR/^,gΜ1§Çg„| r·NÛ£gËg û9Ë&¤J–Z^oÜ?NÞ`É’%Í~4hÐ@>øàƒ8é7�ZàÈ‘#R­Z5Ÿ ü äßyç™K–,rç�wJÒ¤IeåÊ•æ§K Ï—<�øÈÓΉ;ù¸³çÎ € € € € € €@|HÐ�üõë×eݺuR @Éš5«é{ìØ1Y±b…¹›�üÞ½{åôéÓÎgœ9sfÑQÍá(;wî4/“-[6¿.7ä‡þròÜqŸm3§Í&O×èáóØì_'É_{~3�ÝW¨ªü¼e¹¬Ùº\2¥É*�K·”Ú%ÉÀýä—í«%qâÄrwÞ²Ò£^I—2ƒyŽÙ߬þʹv®ŒyäármdÊÚ¯eÝöU²ëè6)�­°Ü“÷^iWé)I•<µÓÖ½qùÊ%™¾~¼üµ÷wÙzð_9~î¨9ª¿`öÂR­h]¹¯`ws�íkׯɇ߽)W¯]5ëI"éVç ùs÷/²ê¿¥òûîurøÔÉ–>§”ËWQ»¿‹dK—C¾^ù¹ì9f9?{T~Ýù³Çuk«ï±Ÿ3CnéTµ›G]8vô»ûßÿEºTáÂ…¥råÊ‘êí �)bÇŽ’.]:éСƒÌ™3GÖ¬Y#ÿüó�¹žµN�Þ¼ysɘ1£}Šùº{÷n™1c†¹]¶lY©T©’Çq÷ÎÒ¥KeÆ fUË–-%W®\æv°÷v_[û¾lÙ2ùóÏ?EGŸ8qBrçÎm>dS¬X1©W¯ž$J”È}ŠÇö•+WäóÏ?ý7¡T©RRµjUÑÙ¦L™bº\ºtIòäÉc^§nݺ’$IçüPïí\ÈØˆ‹@^ßóüùóÍÏæßÿý7P¿/E‹•V­ZIš4iÜ]Œr;Ô¾GyaÎ]:+k·®�ÕÆ¿1Û�l–ãg�ÉÉóÇ$iâdÆ¿'é%¶;åþBÕ¤þ=KÒ$I}\AŒ™#®ÊÒÈü ³äÀɽrøôIœ(‰dH�I²¦Ë.%s—– ×”â¹ïñy~(•çÎ�“‰'ú¼DëÖ­£4?xð Lš4É<¯V­Z’2eJó;£ßÕ‹/Š.Q¡ßݨ~롞ï³ÃT"€ € € € € €@Œ $è@Þ—L\ò~jXb—‚ J‰%ìÝ�^ ä› ª*'ÎóyÏìF=é™E>�õ™ù¢,ßäû˜ž�&EZ9{ñŒÇ¹Ž¿×b¨Y·jóRé5="¤Î“ù#ÌÏb„á¿zœ£;wå*!ï·&RyÄǶË;³^–-‡þ�tŽ]ѸL+yºzI‘,¥]å¼^¹zEj(íìëF‡ÊÏš�»—Þå­&KÕ»jK—Ñ-d‹þû[nÏR@Ætžíos¿Û½úê«2wîÜHí4h |ðA¤z»âñÇ—µk×J¦L™¤Zµj2sæLû�óš7o^ѵ®õA»hð]£F ÑÀZ¿³ÞK@ØíÔN§S×?uêÔòã�?š¯z<Ø{Ûמ6mšôéÓÇÞõùZ¥Jéß¿¿¤OŸÞçñ³gÏJ… Ìcú°@¹råäå—_öÙö³Ï>“š5kšÇÂqo÷MB µ�²þðáÃòúë¯ËêÕ«ÝÝp¶õ3ÿøã�Ej¸Y µï7»¾ûø€y½åû ‘¿£î6º](Ç]2¤íxIž4…Ç! ô_šØI6íßèQï½S$WqÖÞ À½�…²¯¿}HÄW™7ožùŒ¯c¿üò‹´oßÞ<Ô¢E Y°`�œ:u*RÓ'Ÿ|Rºvíé!”PÏ�t#*@@@@@@ Æ佈/^,gΜ1ƒM ý-ÿ�¼/‹äI“Ëìî«ÌpÜ;�÷ÕÞ]WÿîfÒ£~_§êü¥sÒfx}c´ìQ§.ª ïsív¾yû˜¯×øÈëˆn-k ÷´øÈÛç¥M›Vt®ÎÔðÓO?‰ŽœÖ¢³6hè^ãZƒkû>:êWGéz퓎¼×Ò¤IéׯŸ¹­ì@Þ®äÞzŽÞóÝwß5—›ÐQúùóç—œ9sÊñãÇeÉ’%æCÚNG|O�:U7#w ¯×øûï¿åüùóæut´¸>P°iÓ&9tè�¸ùpÜÛÝ™PCí@y¥Ý°aCó=i4|×ÑÕ:"þ·ß~3ÐÐz}ˆA?_ïÙô˜»„Úw÷µn¶ío ¯×y²úKÒªB�K~º°ŸÌùu²G�¯�Â9‹ÉnÞÎ×¹ÑÕéƒ,ï½÷žÓD¿[[·n5÷ý äí“uö }€DèÒÿÿè÷VË›o¾):ÚÞ]Ü�¼]Èùö9¼"€ € € € € €@ì È{Yß �ü°%Ì) õ­é4ÎìŠx!ßüÞ¶òÓ–eßñÝŽR…‚•Ípsí¶•NÝçí¾‘»n+)Qò:et® ydåæ%rá²6éÉ:Â}ò3?HúTÖ”÷_-ûÌcÊ{msÏíåŒ)åsšSÎ<µ_«Ì’8QbÞqŠÌ^Ä®2_£ äu´¾Ž¸Õ²õà&9vöˆØ�ü¸UÃe÷±æ1�]`ýöŸÌmûO­â íMó5WÆÜÒ±rW�º˜ØÑp\Ãä@y `G�%wÝe½W�Îý…^�r^Ë;ï¼#M›6uºûóÏ?K§N�Ì}�â¼W¯^Î1{CëìQ÷ãÆ�“Ò¥#f!pò�Þ[¯¿|ùrù믿DG {/Ë }öÙgeÕªUfWô}•/_Þî–óêäµ2yòäÒ£GyôÑG�6z­É“'›}·GŒ‡ãÞÎ Œ�PCí@ù�ÊÈ‘#ÍÛ7jÔHÞzë-s t»?cÆŒ‘�>úÈÜU[=] µïÑ]Ûû˜ÈëÔò5‹6�¼YóI¶´9d߉ݲøïyÎÒzžNA?³Ûr�K<ôi%9}á¤SW©p y°x#ɘ:³ì7¦¯ÿc×:ã:ßI¾¬…b$�wn|cCgž:Ôš)$�@¾Y³fÒ·o_g$¼.ÁòÔSO™Ó×ë ú™¸—Wðä=ß»ßì#€ € € € € €@Ì È{ß �¼û-ýºc�ô˜ÔÙ©ò7�× lʳ‹eÒšQ2âÇ�Îù£ž˜%W®]–.£Z8uZ��²Æzì¾ùûï¬.o7ûÔXÛ9±hˆÿê”§�ótC× ×u¢ut|ÓAUäÒ•‹Îñzw75Ž[a•†ç]Ƕ1׊¶èzò½`¾y]{¼S•nòhÅ'œ¶—¯^–éëÆÉ½ˆêo?¼Y:�læ´M–$™,èyÚ}§A nÈwîÜYºwïîÑ+�b[Ã^ ÷½Gš»§£×5èu:ú)"¦×»:òZGdëèõo¿ýÖãÚî@>Ð{{\(ŠwùÜsωNçí]¼ùçŸ^žx"âóönïï¾?÷v_+ÔPÛß@þèÑ£òàƒšK (P@tê}}Á]®^½j¶ÑYtF {“&Mênâ±jß=.v“�ÿ-ãË(úïC’ÄIs¾s!6@@@@@@ Ö佨ƒ ä�9âL5¬—Ô`ófSD{Ý:ÊÝ@×�w_(Ø@>¶;ed§2oà ùh^ÄÈÚéÏý(—®^’G>¯íܦoÓ�R¹H-Ÿ�¼®ß¬ë8Ûå©1­Œ�ìo{W»¿‹–?'[m’Σš;õÒMzf¡dI›Ý©›¾n¼ ]ü�³Ÿ7s~ùº‹\Ù•¾ù&e‘n¾n7¹ékBägÍš%… Šô>uúk‰®Až{Z|møå—_šS¹ëö‡~h†÷º­E×´×µíµè¨s{êz³Âøã䃹·}}ÕQì:u÷�ÌQÂZ§S׿òÊ+º)íÚµó¹6¼;�×€S§º×µî)ÁÞÛ}�PCmy]† K—.æ­«U«fº¸ûaoO˜0Áœ]÷5´·gM°�»_Cí»ûZþlëC8‹6Ε�G¶Ê‘3‡Ì+®^»jžúŸ±6üµëלˌ|b¦ä7F»Û¥ég•åäùö®¤NžFªÝUGjo %ò”}ˆ&6K0�¼>P¡³x—+VÈÓO[.éÌöìÚÎÈs¾÷½ØG@@@@@�˜ �÷26�÷ºLXwã"�¿3GQsJø…}+ýçF„Ù³Ÿ_iŒb¿$-†ÔpÞã« ß“Ú%E äS&K%ó^Zë´Ó�aK>’©k¿vêê”|H^iÐO–ý»PúÎzÉ©·p*Œ�Fp÷øWMœ* ݾï±Þ}oWú ä?zä+)sG»ÉM_z ¯#¡S¥Jé}j˜>þ|³^C¿L™29m>l®9¯£ª+V¬hôöA uZ{]­A·®Kï.î@>˜{ëµ6lØ _}õ•9bøÚµˆ Ö}Ý~ä‘Gä�7Þð®w _ªT)?~|¤6QU„zo÷uC µý ä¿ùæ�5ÌÝ}ˆj{À€R¯^½¨‡<Ý~”öq@ÿ øzå09wé¬�£‘«>:ÊX¾â^çÀÛ³{Ê�ÿXße§òÆFò¤)D—Öh`̼Q¾@%ïÃ1²L ß±cGy饈óìŽmÛ¶M7nlîêC4º–¼]Ü�|0çÛ×á@@@@@bO€@ÞËš@~‘)H ÿrƒw¤nÉ&‘ùn“‰O/ð¹l�LXý¥S§�Yÿ–ÃdÎoSäÓï8õ k�î.'Ï7§µw×é´ú:½¾]|ò_>>-Ò´ôv{_¯ 9�× ^Cq_¥OŸ>æ(i=6uêTsêzw»nݺ™�{âĉeáÂ…’3gNÙ¿¿Ô©SG4$¯U«–|úé§îSÌm;�öÞbë|�:ß.º½Î0¡Ë èC{öì1µlÙRz÷îm7s^Ý�¼†Ú:ÊߟŽ{»ï[�¼¾¿±cÇš·Ö+¼§=w÷ÉÞîÙ³§Ô¨ñ �]o¿†Úwû:7{]ò÷÷ÒoÎË7kæqüƒ–_˜ËKØ•Oí—ç't�ƒ'÷ÙU>_�ÃçEü¨ &�÷5Û„ÞêØ±cR¥Jó®:]½N[ow ÌùöuxE@@@@@�Ø �÷²&�_ Ÿ.eÑõîâÈÛëÀ¿a¦ ˜´½ínÚn‚ûTÙb�<ö…ç_�¯#ñíâ+�ÿÔ÷r[ÆI’$òÛo¿‰†êÞ¥W¯^2sæL³Z§¡Ï—/ŸG“e˖ɳÏ>kÖÙkµ�1B dÖ}þùçNPè>Ñ䃹·®K¯ëÓë:õz~÷îÝåᇖ 28·Ðéëõa-þòQµq.xc#\÷v_7ÔPÛßòúYèZ>ùä©];b wÙµïþÞë¹qmdãÞ?<šß�·¬¹Ö{¦4Y$•ñ{~ߘ•ãÂåóNï@^œ¹xZ¦üøàƒ(ïk‡âÚ`ùò呦•×úgžyÆ<¦Ûº†¼®%ï.:]×¥>tè�äÍ›WæÍ›' 6]2!{öì²hÑ"34wŸ£Û¡Ü[§Ðב¾Z´úŸwÑÿ:=·–¨Âv÷ù¨Úx_7\÷v_×j2Dt}÷@ŠÈ+VL¦L™å©úÙ¼ü²5Ê\§ðשüC-¡öÝßû×ý¨œ±ìÅE§yÅBUåÝæCœýkÆ:òµ?*kÌÊ`­'¯|òÎ ÆÆžc;�CÖ›ÿ¶¬ÙºÜc¶…úw7“õûº›‡};˜@¾U«V¢Éx—�7ŠÓ¢ËEè:òvqòÁœo_‡W@@@@@ˆ=y/ë`y J4È´K�¤H‘"önH¯ñ} ù¨¦¬×7ݱrWiûÀ“æû?zæ�<:¬®\¾zÙñxºFiQ¾½;{Dš®îÔëÆk�Þ“‹7rê^›úŒü¼u…³Ïíådࣣ�}ÝG ¿Ï‰ßÆk$þèγåŽ,<î;Áòü±9ͼ»W®\1Ãá'N˜kÇëò¾ŠN�=|øpó��4·»té":¥½¯âä½÷×_-º¶¹–¨Fà»ûUØL ®{»M~úé'Q+-O=õ”tíÚÕ}ø¦ÛmÚ´‘ßÿ]’%K&kÖ¬‘)Rø<çï¿ÿ6NЃú…ý9ùlìge¨}÷ç6fØ> Œ\»~ÍiþØý]¤S•ˆmVþ·DzÏèî× ï@þĹc’1uf�6öŽ®MÿõJkö­+}Gyùø‘‘öáy &�/X° Ìž=;Rt){É]?^ב·‹;�æ|û:¼"€ € € € € €@ì È{YÈkxvðàAçj–”(QÂÙe#�@þÏÝ¿ÊùËçœÛý³oƒN söS'O#½›|äìë†ͺÞ{Ÿ™/ÊòMá!Ÿ8qy¢jwÉ�1¯Ù�m‡ÿó¸÷°ö“¤H®âf]�‰Oȯ;vŽëTôÏ=øšäËZPtJû¹¿OsŽé†ŽzÕѯîŽ@^¨gŒâu‡†Åsß#µŠ7tFÚ§3Fðë´ú1]‚ äË—//#GŽ4×_·ûçQݨQ#yÿý÷íC¯{÷uëzŒ0ÖuÜõ|5﫸ù@ïíîW‹-ä­·Þò¸…>䢣ôuzy-á äÃuow‡wíÚ%:Ê]K¹råd̘1æ¶¿^yåÑ‘êZF�%êé«èlÍ›7—Í›7›Ÿó„ äî»}/\¸ Û·o—¢E‹úº”Sjß� Ýd£íð²÷ø.§ÕíÆ¿?ÃÚO”TÉS›kÂ÷œÜÅñî406¼ù'G·4ì¹$MË>&UŠÔ’ ©3™Í/^¾ ¾ï-ºN½]î-ð€y¾½¯ÁòÚ�Ñ£G˽÷ÞëtI?W]²aË–-æ²ß~û­ÜqÇÎqw ÌùÎ…Ø@@@@@@�XHð�üÅ‹eÏž=˜Ž”ÕðIK¦L™$wîÜÎ1ÝÏœÙ÷¨J»QBä[ ©!G϶ߎ_¯íxJ:T~6Fùè:P}Zôûë.öÚéÕ«W�šÜ]²fÍ*I“&5«Ü¡¸V4iÒÄ��1cFÑÑðz®†Ú®Ïš5Kô�‘¨JçÎ�eõêÕÎa 58Œª„roý­êZR§N-/¾ø¢¹^|š4iÌiõ5 wÏ<Î@>\÷v»\»vÍ ÊÿûÏzð¤téÒætòö¿;:}úôéݧxlë²öåj ££ï»ï>ósÓóô|»¸§òO•*•ùyëhù\¹r‰~—¶mÛf.30sæLÑ;ì™ìó½_Cí»÷õ¢ÚwΫ²øoë¡»�>|S {aÙvè?�µãíã¾ùÍÿ±‹.q‘>U9prŸÇT÷Úàqcô}c~¸Êõë×=¾Òëêl ãÆYÿ–éoÅýðŠ. ¡¿C-Þ�ºÖ÷ïßß|ðB¿ç:[„þ?HK�:uDgœp—PÏw_‹m@@@@@ˆ�È;vÌ ýá*T¨�/n�ÆŽª=�|xGÈkÐváòùHÜÉ“¦�÷[|nN'í>8uí×2üÇ�‘B5w›lérÈ;’Â9#ÂIûx¸ù›~�·fF¬Ýl_ß~�‰@þõ×_—9sæØ·¸éëˆ#äþûï7Û¹Cq nO�:åóü¶mÛŠŽÂŽ®,X°@^zé%§É»ï¾+=ô�³ï½ê½ûôé#Ó¦EÌ~  èkч~øás;œ�¼^0÷6;æú£3<óÌ3rùòeW­µÕ´üî†nOw½þÛ5yòdw•èÈì/¾øBtdutå�¸i ¯ç‡Ú÷èú`;tê€<þU9wÉóáû¸~öz»ËÍyw[÷vÖtÙå‹“%sš¬îê�¶õ0�EÂßRªT)?~¼Ùܨ벾¾#Ú0K–,æì ùóç÷¸M¨ç{\Œ@@@@@ˆ�ÈëšØË–-ó ëÎ;ïôaêë¤`ùŸþY8à\ÒŸðßi|“�@¦¬dXsÚç›\Ò㰮߬ë8¿;çcäê<óX1cŠö!mÇ›S?÷›ó²Y§£Ñg?¿ÊX§ý²4\Õ ÍÞhÜ_jk «6/•^Ó#ÖÏŸµ�MŠNï«lÜó»|8¯w¤êI“$•JwÖ”êö’t)3ø:U®^»*u?*k¾Ú &?ûƒhˆhÑéÿgü2AvÙ&GÏ–ÓN9ïYGèùxDˆèµ}µ×õ¢uôº¿E§¥¯P¡‚ÙÜqu$öСC¥{÷î#Ëu”îsÏ='íÛ·¿éå/]ºdN£­!¯Ž¼Öß—Ž^�ª„zïóçÏ›}ÖÆî`YGˆëƒú^t”¸†´:b\�¼‹ŽþW‹èÚxŸ£ûḷ¯ëêïƒ ’ÿýWŽ9â4Ñð¼R¥Jξ¯�+W®˜!ûÒ¥KÍQîvh«SÒóÍ7‘NùóÏ?åí·ß6ïådëçW¥JiÚ´éMïk_8”¾Û׸Ùë–ƒÿÊg ûÉÆ½x4Õßõ‹u{ËØU_ÈöÛ�cº¼®o—I?�–ÿ™/[mòùðNc©ŒêwÕ•ö•Ÿ‘Ü™n·O ËëþýûEg"ð·”)SFt]x-î@]g­Ø¸q£è´ôîï½>xñé§Ÿš3xß#Ôó½¯Ç> € € € € €ļ@¼äõí'I’ÄTÐi˜Ë–-#"Âk0§ÅFtz{ ²âC $��Ëþú äG>1Óœ‚þ¿ý�é¤÷J¡E%Oæ;üêæé 'e«1…õ±3Gäö¬ù�µî J²$Éü:÷ÿ­‘;_¾|¹ùöõ{óÏ?ÿÈí·ß.EŠq~K7³Y»v­èõ´èzÖ}ûö�ö”pÝ[®Ñµ³>,… œ8±ç’Ñv$„ƒqyïºíqª>” ÓÔëZð:K‚þ›©S§'OžÜ£]|Ùчôß„=ÇwÊ™ §�ŠHžLùÌÙüí£Ž²ßw|·?wTN�?):#GÖ´Ùå¶Ly¢|hÇßkÇD;w Þ«W/iÕª•¹”Ć D—_)Q¢„9:>ª{‡z~T×¥@@@@@bN Þòö[×p©|ùˆ’v}8^.\èòöõäm ÿ_£ äý¿-ƒðŠ{­nݺɒ%KÌÓuD¶ŽÌŽ®„óÞÑ݇c$t_�z ï)Ôó¹m@@@@@@ <ñ2�?sæL¤w§ëí¦H‘"R}8*td©½^µ}=™¯Ó=LJ’ÐGÈÇÃ[½áÅõw k¹øá‡&—¯5Ë}9†ãÞ¾®K·š@¨�z¨çßjž¼@@@@@‚@¼ ä\lö‘@>6µæ½B ÅuŠz�–þСCÎLú@Š®w^±bÅ›‚„rï›^œÜB¡ꡞ QòV@@@@@H0ò à£"�ORw1”P|ñâÅÒ½{wçèšãýû÷—Úµk;uÑm„rïè®Ë1n5�PõPÏ¿Õ1'°bÅ Ù·oŸ¤I“F6lÐ�öïß/Ë—/—D‰I¾|ùÌ5ãS¦Lé÷5B¹·ß7¡!·€À±cÇdÑ¢Eæ;)_¾¼äÏŸ? wêùÝŒÆ € € € € € ù°0ÆìEJ ³ \@@@@@@HXò àó"�O]D@@@@@@¼ä½@âã.�||üTè € € € € € € ½�|ô>ñâ(�|¼øè € € € € € € ��|@\qÓ˜@>nܹ+ € € € € € € Š�|(z±t.�|,As@@@@@@@ ŒòaÄŒ©KÈÇ”,×E@@@@@@bN€@>ælÃveù°Qr!@@@@@@@ Öäc�:øÈoÇ™ € € € € € € €@\ ÈÇ•|÷%�‹¦ € € € € € € €@< ��'DtÝ ��N‡c € € € € € € €@ü ��ŸŸ‹G¯ä=8ØA@@@@@@„�|ø˜äÀ‡D@@@@@@@/y/�ø¸K ?ú„ € € € € € €D/@ ½O¼8J />:� € € € € € €$@ WÜ4&��wîŠ € € € € € €„"@ Š^,�K KÐÜ@@@@@@£�|1cêRò1%Ëu@@@@@@@�˜ ��9Û°]™@>l”\@@@@@@ˆ5ùX£þFòÁÛq& € € € € € € Wòq%À} äÀ¢) € € € € € € OäãÉ]7ä£Óá € € € € € € ?äãççâÑ+yv@@@@@@@�!@ Ÿ>&ùð!ÑE@@@@@@@ÀK€@Þ $>îÈÇÇO…>!€ € € € € € €Ñ ÈGï/ŽÈÇ‹��N € € € € € € € ÈÄ7� äãÆ�»"€ € € € € € €¡ȇ¢KçÈÇ4·A@@@@@@Â(@ F̘º�|LÉr]@@@@@@@ æäcÎ6lW&�%B@@@@@@bM€@>Ö¨ƒ¿�|ðvœ‰ € € € € € €Ä•�|\Ép_ù°hŠ € € € € € €ÄùxòAD× ùèt8† € € € € € €ÄOùøù¹xôŠ@Þƒƒ@@@@@@@ AÈ'€�‰@>|Ht@@@@@@ð �÷‰�»òññS¡O € € € € € € €@ôòÑûÄ‹£òñâc  € € € € € € €@@òqÅMcù¸qç® € € € € € € €@(ò¡èÅÒ¹ò±Ím@@@@@@@�0 ȇ3¦.E S²\@@@@@@ˆ9ù˜³ Û• äÃFÉ…H«V­’+W®H¡B…$wîÜÑöyÓ¦MràÀÉš5«/^<Ú¶D@@@@@ˆ]ùØõêná ä�ž9$'Îwú‘#Ãm’6E:g?¦6®_¿.'Ï—ãçŽÉµkWÍÛ$Oš\òfÎS·äºø%°c�ïf·åIžÌ÷±˜¬]¹r¥<ù䓿-F�-åË—�öv#FŒ�Ï>ûLR¥J%ßÿ½dË–-ÚöD@@@@@ˆ=ùسúNá äûÌ|Q–oZäô¥Kõ¥u…ŽÎ~¸7vÝ&£––Õ[~”+W¯x\>E²”òýKë<ênµ�L%Åxß"�4ÑÿV{w ÿýì?$R¨Šï÷1û+‘Z•|‹©Ú«W¯JÓ¦MeëÖ­f¯�üÍʹsçäÁ”'N˜çöë×ïf§p@@@@@@ –äc :”ÛÄh _íi}ßã¡t/Ês/^¾ ¿j"NîõÙ&yÒ2¿ÇzŸÇn•Ê´EEŒÉ¤U#‘Qn•wuë¼�ƒGD DºÇE ?eÊéÛ·¯ <~üx)]º´_Ø#GŽ”O>ùD'N,Ó§O—Â… ûu�@@@@@@bV€@>f}Ãrõ„ȯüo‰ôžÑ=Jƒ”ÉRɼ—ÖFyüV8@ Ÿ°>ÅÉߊ<ÞÓês\ò�5’mÛ¶É]wÝeëþê�:uJ*W®l®;¯#ì%ï¯í@@@@@@�˜ ��Yß°\=¡ò׌”/üÔ1Èœ&«ôzh€äÉ|»Y—4q2É�:“süVÜXiÌÈíšH®ì"wæ¿ßá­õžâ2�_·n�tèÐÁ}ùå—¥}ûöávëÖM/^,)S¦”eË–IÚ´i:ŸÆ € € € € € €á �¿iد˜PùaK>’©k¿v<ª­+½�@ž‚@|ˆË@þ•W^‘¹sçšÓÎ/]ºT²fÍÓ?ü Ý»[3RôêÕKZ·nÐù4F@@@@@¿�|øMÃ~Å@ùkׯɴuceíÖ•òïþ¿$]ÊôR¾`%iY¾ƒ9b}ù¦EN»D±†üå+—dÆ/ßÈÆ½¿É¶CÿÉ¡Ó$g†Ü’/kA)™§¬4-û¨$M’Ô¹Ž½ñÁÜ7äʵ+æîßû6Èþ{ìC’=}NãÜ2Î~Êä©å¥ºo9û¡lì4–©=źBÚ"Ã'ˆü¶Q¤lI‘î�‹äÉ%òþP‘ekD2eiÓL䑯žwœ0Kdóv‘ é¬stÿG£ýïÆu Þ!R¾”HÇ"Y¢Ô¿p¹ÈŸ›<¯«{%Œ%½ëT�\î]¯~ú÷"kÙðo"9rìº7î]ª˜È�ˆ¤KãyÇSgD>ùҪ˘Þz߉y¶Ñ½­;EÆÍ°êoÏmLëÞÒ³�º}ÿ£Èú "{ˆ=q]îÈ�ȼwéâ"Íë‹øºî×ÓD¶ï¹ÇèßÁÃ"Óæ‰H‹ègØ­£È¼¥"ÚfÛ.ë³|§‡H¶Ì÷Ö{}9ÑÚoü HêT"ªëÌ.Š”»[¤®áî¯}°�| îï bK§œ?vì˜*THfÏžqÀÏ­Ó§OKÅŠåºÑ™š5kÊ Aƒü<Ópž7Ïœ*ß>¡L™2rÿý÷Û»¼"€ € € € € €)@ $\lžH éÊEyïÛ×ĺÛ}Í‘á6Éš6›²ÿaW‰¯@~Ç‘­Òoö˲íðN;ï�B9î’×½/ù³r™AàFêgIž4…Ìï±ÞÏÖÑ7[ºÚq�×Wɟך2þ§_"Žj8<í +¬µkë·7ûŸE²�oýê"c§ÛG"^ ³íÏõôó�^™4'¢½½Õª‘Ȩö^̼0íίˆ,ùÉ÷õµïã>µÂyw‹/‰LýΪyß8_ƒpw¹tY¤z+ãÁ„¿­ÚÉÆƒ ˜ÛE„èÚÛÞóýª¡øHãýkèï.µYý«»&b»eC‘™óE.[Ïw˜ô‹åS#Ú¬2¾>µÛXûú�À £ý‰SÇí­WžéÕÍ÷Cv} &�ÖÝ}ß­[·JãÆ�ͪfÍšÉ;ï¼ã>ì÷vƒ dÇŽ’!CYµj•ñ„ñE÷£<ýôÓ²|¹ñ4É�Ò®];Ñû@@@@@@�ÐäCó‹•³ 䧬#_,ùØï~yò§/œ”Ǿ¨/g.øH5½®š#}.ÓyޤH–Ò<_yaݬ®ˆ†µûEtZG¹ßUPä»%V�wHnòöéÓŠð°È–"ÉŒI–L)SÂlnþyµ¿Èà1ÖþsDú¿jmÛu6‚�üXÏ} œHá"¹s£ä�‹|k8éx-÷ùi¦µmÿuò…ò‰1ε?m“$‰Hã3ÐÏRƒo-Úý,µ¸y«ÆšÉ ò½ÆH}ÃbÎ"‘sç­#�‡ºDW äCqw÷cæÌ™òæ›ošUo½õ–´li<]Dyíµ×dÎë‰�þ>þü~]…@Þ/&!€ € € € € € ÈLû'øÈ_»vU^_žÜçÑɲù*Ê¥«åÏÝF2ëU¼ùÁ‹Þ—™ÆTõîrwÞ²rÏíåä×�?Ë߯èz ÞíÒ¾Ò3Ò¾ÒÓö® ˜×[._5†Tåï}Ⱦã7ÒXc_Gè»§¬OmLYÿ|�^fÛPÿ¸GÈ¿mŒø~©³È.ƒ¡h ëÊÙ³ˆü·Ì �;ÓžkP~ûm"ÿÜ絕;�×àúû¯Eî6Bd-:Jû±nañ°wEÚ!öÍJZã|åŠé@¾·ñ ÆÇ_Z½Ñ©ø¿-’ÊzN¬ül”ÈëZÇu$¹w}Ø zkkšw óWÁyÚ4" ³‡Ÿ²ÞƒNÿþƒñÕÐàÝ]æm~ùS¤S+‘œÙÜG,·æÆù?¬´êç¦U+D´±ùti®ËÎÕ‰$Er‘'_#¸ð†È3m­¥JÕ³Îþ¾±ä@SkÛ;�oß\d¨ñp€=0|ÅZ#Ð7¾ :}}¾Tw»#FŒ�Ï>ûÌÜ:t¨T«VÍ>ÐëÀ�嫯¾2Ï=z´”/_Þ¯ó äýb¢ € € € € € °�|Àd±‚¿�ü»ÖË ßtôè`§ªÝ䱊F"i”Oö“9¿Nö8îäOœ;&-†Ô�«F°o—§j¼d®=oï�]õ…ŒY1ÔÞ• ©3ÉÌnË�}÷ư%ÉÔµF{£4,Õ\^ Óšñö5íWw ÿÝ‘j÷YGn3FJŸÞ.v Y‘E¬Ú¡cE^~ÏÚ^6ÅZ^jÈZÊ ÖÝÓ껯­ l3‚�ÙÀ]tÿof[5S>i`8DU äÃå®}éß¿¿Œ7ÎìÖ„ ¤T)ãÍQF�%l|¹�òÉ'ŸH�:uüº �¼_L4B@@@@@ �˜,öOð7�ÿaã\sýx»‡iS¤“iÏ-]«]Ëñ³G¥åК�»;�÷è�x|ª¤K™ÁJ¡�kì9¾SzNêb^Ïþ3ç…ŸDïå]â*�_1-bÊõ"FP½g¿H‹"c¬œRì)Öuõ©�":Ž÷ùuߊ»Óªwÿ­Ò ®áï‘ßÝG|oÇF ¯Óé7îdÝ¿¾ñ~ŸëÑ—ˆ¹ D†y¯N!¯EGÀÛ£ÿ­ëoûE¦Í³¶sd9xÄÚž4D¤Q-wKßÛ:“€N›¯æ:*]‹ú�÷´¶»¶ùÀo;�×éõ§·jÇNyÚ¯å÷ïEîÌomß^ÑšÿµgEÞ|ΪsòMŒìy‚5ÈÜ:x㯎òoö¤µóNczý'<{ìȇÓ]§«×iëµÌ˜1CŠ)âÑ/w&Ož,o¿ý¶Ù\ס×õèý)?ÿü³ìÛ·Ïiª÷/V¬˜³Ï € € € € € €@pòÁ¹ÅêYþò׌”/üÔé[ù•¤ËaξntÕB¶úשsòsŸ&ŸÌïëówãóöå®\%"5�«@~ý\cªúBVwJÕ».›·'2§—×iæµ|möϼimüÅšš]÷Ü�üáßDR§²Ú¸ÿ¶3FÍO7Bb-;²Ö—·ö|ÿ��@þ‹ñÆýý|ß?ªÚ¯?i^?òÑÓg�uà� wëΈc϶ùðõˆ}_[ëþùȘ�`ÞR‘k×|µ°êž|̹íZ¥Àä›aúøaúÔïD:¼dµßd\/O.k»p5c]ø"Ý:Z£÷µÖÈ?o<”ðî�àß:Ãú»i›ñ€Æ�÷ªkÈëZòQ•@ùpº0@ÆŒcvë믿–råÊEÕÅhëuºz�¶^‹N�_«V­hÛs@@@@@@ fäcÖ7,W÷7�ÿ|ñ‡2m�5íµÞ¸r‘ZÒ·©ÎÙÑÑí¿ìXmïŠ;�×0_Cý@Ë»ÍKÅBÕ"�W�¼{TuYcdü¿[�Ú®uÓ'Ì2LxÕêîþõSœÛ�¼ñÈû*]�0w´1�º–ŸfŠèÔõÑ•Øä_y_dÈ×V/²fI—&ºYÇúï¿aMßíÜA³Î" dÉä»­ÖjˆÝéeg³aÆôÖ9z¾N—¿c�u¾®3?¨¯µ­í@Þ=ƒÁŒù"mŸ·Úl]±.}1£¿;÷ЏGÙ»ù÷Œ>t<âÚöÖac„~¾û­=�®^§­�ªȇÓ}äÈ‘æóÚ¯AƒIÍšQ|8QuüF½NW¯ÓÖkÑ)ðË”)sã/ € € € € € €q!@ êÞÓß@~ôŠ!2nÕ�y¿�{T)ò ôij …v•çÆ·•�{"æZwò“ÖŒ’?zø®S£Ü|¯ÅP¹¯`•HÇj Ÿ$‰È‰?#¦²w¿1�J]§T×âþ­šÈc#�טNþ=ã?-:Ê\G›[ö©ØÔx áhÄÜ£×#j­­3ƈúü•DÎ�Q·¾/£Û[ˆdÊÑR§¯×¥´Äd ¯ÓØëtöÞÅ}ÿ– �*>òn±H N÷ï¾ûN^~Ùx¢À(¯¾úª´mÛ6¢Sl½øâ‹²`ÁóŒ… Jîܹ8›¦ € € € € € €á �·h \Ïß@þÛߦÊÀÖúÑÚ�üY ÉÈ'ŒaÜ7ʵkWåá!Õåä¹ãv•Çùÿ-–·fÜšl´¸-S^Ôf¬Ó6ª�Œ©2ë°i¬WI¨�¼¾�ƨðlÆhsïòð“"ó—Y!¯ @IDATµº†¼®%]‰�@~ÊÜëÒ±‡1Ý(:¼N L¹zÕ˜¶¿ƒÈÊuÖÙ…ò‰lÙamlLñÿTkÛýW§ï×iüµ¼ÑUäuã?ï²b­HÝvVmLò�ùô-ﻋüú—1[Ds«^×�×uä£*î@~ê0ÃãÆƒ¾Ú‡Ë]¯­ë·?øàƒæmêׯ/:…}0E§¨ß¿¿dÏž]–.5æû§ € € € € € €Ä©�|œòûwsù5[—ËëS=‡k?IŠä*nÞhÕæ¥Òkz7�›ºGÈï8²Uÿª‰s<‰²i;Á9ß9pccóÁäÀ‰½æÔøÞÇt?!òã>iV×ó]]6¦^/XYä¨ñ<ƒN ¯S¹ß¬ÄF ÿÛF‘J[=ibŒŽŸ`Œ’¦ô(2àÆ œ¿m¬ã^á!až<™È’I"¥­¯’sùA£�QéX»Ó�sëVu9oýùÀ·µÄd WA‘_¾³îãþ;xŒ1꼿U£ëÇë:òQ•Å«Dw²Ž¾úŒH/ÏŸ‹Çiár·/ª�¼óyóæ•ùó�yû,‡–jÕª™gêë¨ü+V8w|ôÑGåÙg=ÿ-q²� € € € € € à·�¼ßTq×Ðß@þäùÒjh-¹tå¢ÓÙn“§kô�ËW/Ë …ïÉé '�cºáä¯#è;�zX4˜·Kæ4Y¥]¥§¥\¾Š’&EZ9prŸì<ºM¾ß0Cþصޜª^§¬÷Ur _µ‚ÈwcDt t»L5ÂÞFH­å‘Æ"_}hmG÷76yÙ®ÓÌoüÏêïR#8¿÷ß½:Aä¿í"÷õ<¾ÈÈb›v±Ö�/ZHdÅ4kôÿO¿X£Ûõùòˆ¬ž%’>mĹîQâ�·1AƒÙH§À/Uﺜ9kAÆd ¯7œoLèP¹|Dÿtýzµù{³µÁoóDtäTeëN‘»�‡´TºWdÁ8kÛ×ßp¸»¯ûöÛoËäɓͪyóæÉwÜá>|Óí3fH¯^½Ìvï¿ÿ¾4nl|Iý,O?ý´,_¾ÜiÝ®];yå•Wœ}6@@@@@@‚ �Î-VÏò7�×N}ø]/™ÿ§‘šúYÜ�¼žòÇ®uòÂ7�ûy¶Ü²�¼´1‚\!�%“Ì.3^xíºœ=—È é×}+¢Áµ»œ<-rúŒ»&bíô5¬éäÝGsdI–Ô]ü¶{ZøÔ©¬~ëhù¼¹D´_›Œg,f-;]¤ÜÝ"³¿Š¸×ÞVh­#ÿS¦°ÂøbwFßxÞ¢ß`k¿ñƒ"olk�†û¥ëYÇÒ¦¹.ï¼”Hª-’.�5õý³F>¼ï u\ÿÆt Ÿ9£È¨"UŒ*ôaÿíÖýuÆ�ù ºríšeñ×&«UÅ2Ö:#‚�! czk[ÿ†âqkkÓ¦MÒ¬Y3sç©§ž’çž{λI´û;v”µk×J† ÌéêS¤0>L? �¼ŸP4C@@@@@ �,.šÈï>¶Cº�k+:ZÞ»èô)’¦”s—Î:‡¼y=ðõÊÏeÜO#Dל¿Y¹¯`¹GÈkèzâ”ïwÿ¬±ú‡¯G>ÖÙPüÍìÈõQÕÌ)Ró�¨Ž^¯ÁùûŸ‹èÈíèJ­J�¼Ž ×õÝWÿj�¡k°ëZìî¢!uýVø¬õúÞÕÀ.]{‹ŒžbïY£ôuf=O‹†øsYÛ1Èë´ú—.[÷ñþ›=‹ñPÅx‘Âù½�DÞ_b,Eð𓾯åkZþ`Ü#ßÕªyì±Çä÷ßxÚúƒŠ®Í@ft;�|TŸõ € € € € € €@hò¡ùÅÊÙ�òÚ! åߘÖUö3æß¾QÒ¦LoNO¯#àÿmÌÛ}£<]£§´(ïJWoÔo9ø¯|¶è]ùgï¹výF²jŸd¼¦JžZ*¨,uïn"å  ¯�òå�ŸÊÄ5Fê|£4-û¨<÷àkönX_—ÿ,R¯½uÉ ŒµÞoÌö]¾±5•»†Ì6k™8G䉗­àøÀz‘´Æhn-õ�ó—×Éf„·Ó†‰´îj�²¶ŽZS¸÷î.Ò­£]ãùú”T�›áYÝÞwcDªÝ]‹À�­ß`ôÏxŸþµ¦Ÿw_!MêëR§J"i÷°Èƒ•­#ºf¼®¯Å{ô»UkýÕQü1ã9Õ¯3Üy#Ü>wÞA?Ô˜.^~»¤3FÌ?Ö4‘ôyA$W9«?º~»®ãn—:m­‘ô­Y#Ûµ~öB‘G»Y-¶¯Ñ0]KIcäý¶]"Ý� Þ3>?-«ŒÏ¯vkû“^"º®»~¾î~”)a<(1Ș-à6«�?õ:}�Ñôþ9x$âŒY_FØEÔŠêî>×½ýÃ?H÷îÆ—Ì(ƒ–5Œ©ü( �1cÆH²dÉä»ï¾“ܹsûqVD“®]»š£êíš:HÏž=í]^@@@@@@‚ �.6O 4�·û¶ÿÄÙt`£dK—SŠæ*!‰�ò�–ËW.Éž»dÏÑråÚÉœ&‹dN›MrfÈ-É’C’o¡âäwA°–-;Œiü�PVþ…E’†iŠyóâ1øçì9‘·Z¶ŽöÏ“K¤Àí")’ÇÜM5¬×µÚ)nX)`­Ûswô äíÑýúÞ×þ!rá¢HÙ’�~Löþv8ÜÛ·o/ëׯ—"EŠÈôéÓ�%Ù—÷ùzôèQ©]»¶\¸pA:uê$/¾ø¢ÏvT"€ € € € € €ľ�|ì›|Ç`ù€oô~‚¯@þÿœ$Þ¿}÷y;��÷�¾I7nÜ(­Zµ’ëׯˠAƒ¤f͚ўñÑGÉèÑ£%S¦L2þ|I›6m´í9ˆ € € € € € {ò±gô�䃦 èĸä{¾kLѾ( nz4ž;Ú¿uÑ=Nº…vnÅ@^?žÝ»wËåË—%{öì7 Ø>,§OŸ6Ûi{  € € € € € €@ü ��?ŸE”=!��’&¬â"�ïØCdÊÜà߯ê™"w þü„~æ­È'ôÏ…þ#€ € € € € €Xò à›@ ;R\ò“æˆüògðï¯Ç“"9²~B?“@>¡‚ô@@@@@¸µäÀçK ;Ò‚eÆTáûEÒ¦iÝ8vîÉ]B8|̘ò¡u�*þ¿§ïM’³@@@@@@bB€@>&TÃ|Mù0ƒr9@@@@@@@ äc9Ô[ȇ*Èù € € € € € € €@ì ÈǾyÀw$�˜Œ@@@@@@@�8 ��ó�àæ �¿¹-@@@@@@@�ø&@ ß>ý!�÷�B € € € € € € Ïäãù¤Ý#�O]D@@@@@@¼ä½@âã.�||üTèñK`ί“e×±íN§ê”|HîÌQÔÙg@@@@@@ öäcß<à;ÈLé„‹—/ÈÑ3‡åüåsαn“´)Ò9ûl ��º�o'íùÍy =ë¿-õînêì³� € € € € € ûò±oð ä&3O¸výšÌúe¢L]7VžÜé"]ª¿(­+tŒTOEÜ Œ1B† bvdÞ¼y’'Ož€;õ×_ɹsÖ¹sçýïV.òñ÷Ó½|ù²lÙ²Åé`æÌ™%GŽξ½¡ßWûß{­Ë–-›dÍšÕ>,z�ß~‹xèÂ9`ld̘Qî¸ãI‘"…»Úc{×®]ràÀ�º¨vJ”(!©S§Žê0õ € € € € € à§�¼ŸPqÙÌh4œ¡ø/0ç·)òé‚w¢<¡Kµ¤õ}�Gyœq'0lØ0:t¨Ù äo¿ýö€:óûï¿KÛ¶måúõëæy�:u’^x! k$´Æò�bS׎• »×;'Ö¿§™T,TÍÙׯ?ÿü#-Z´p.WªT)?~¼³ooL˜0AÞÿ}{WÚ·o/={ötöwìØ! 6tö½7'Nl†ò]ºt1Û%J”È£Iß¾}eêÔ©uQíhÿ´Ÿ@@@@@M€@>4¿X9›@>8æÎ£šËÖC›¢<ùÉê/I« ¢<Î�¸%�×QÄÍ›ŸýÖ­Î �w(Øp ¼5óY±é§æ‰ªÝåÑŠO8ûáÚðä5(_´h‘äÌ™ÓãmÚ´}˜Ä.�òöyúZ½zuÌk<Ðiµuzm-¥K—–dÉ’ùÝ»áÇG "ÿù}'öÈéó'§¼YòIêäiœ}6" ÄU ¯=Ñ‘ï¸ÛeÿþýR»vmgV­�.�×Ñëýúõ3O¿té’ù{™={¶,]ºÔ¾¤ôêÕKZµjåì�:vn-�Ò»Y³f¢e£F�äÛo¿5ßàÿC k}’±ónâ"�Ïž=»:tHt�öI“&9ot̘1òÑG‰}\DÈWªTI¾øâ ç|{ãƒ>�qãÆ™»… –3f؇"½¾ñÆ¢!¾–Ñ£G˽÷Þ©  € € € € € š�|h~±r6�¼Ì?m^*Kÿ™o6¾t墬øo±Ç‰ Uõ1\»dc¹7ÿmVþ·D–ý»À©+�¯‚T,XU¾ûcºü¾s­ü½oƒ$7FÕçËZH•n!5‹5pÚêÆå+—dúúñò×ÞßeëÁåø¹£ÆCù¥`öÂR­h]¹¯`�öº3û×IòמßÌúûŒ>þ¼e¹¬Ùº\2¥É*�K·”Ú%ÉÀýä—í«E׈¾;oYéQ¯�¤K™!Òµ­Ø»w¯L›6Í<­F�2qâDÙ¸q£9R¶C‡æ”Ú:}üÚµk%}úôÒ¤I3èvßG= ÂÓ¥K'zΜ9sdÍš5¢ÓtëÚï÷Üs�9…|ÆŒݧylŸ;wμ·Gå��Ö­[Kš47é­³"<þøã²nÝ:ѰR§­þùçÍ«DȇÒw]‹{ß¾}¢Ó�?õÔS’<¹ïÙô½}ùå—f?î¸ãÓÐ×û ´î�]ëeîïQ¯Þ¤Ì#Rü¦a¿"�¼¤1ÈGwgw ¯Sä·^_tôñÍJý»›I�ú}�f7 ä�†® ¥?»û*�`ßuØïMw ¯£ï5Tþå—_Ì)µí‹è(w]OÚ^›ZƒC�Û.v¨mï§M›VjÕª%™3g–Ÿ~úIþý×z@A§â^°`�ÏõàOœ8!ï½÷ž} Ù´i“lݺÕÜ÷'�?zô¨9rÿÔ©SfÀ©Aç?üàw oß8�¾o߾ݙ-@P}àÀW±}4Ôž?¾äÎ�ÛW³€ëÂÈû{ãv<%*?k6÷䣻††òžœ'92D„“#×~Ýiæ±dI’Éè'fËm™¬Qäî¼y÷1ïmû·_y�Mâí·ß–"EŠÈôéÓeøðá2xð`)W®œù;еäµÈ_¸pAÊ—/oŽÀ×kèoPg·ðUä}©P‡ € € € € €@xäÃë#W#�÷�uõ–eΔõW®^–]SÏ븳º1%vÄÔçuŒ)ëËæ«èqñ¨B¾¤I’šÓÔçʘG�Ú/›Ó±gÉïŒ�ÿjÙgSaëEï¹½œdK—SþÜý‹4αKâD‰exÇ)Æ4öEÌ*ï@¾ù½må§-?ʾã»íS¤BÁÊæÔk·­tê>o÷�3bÙ© pÃÈëÈ]�Ú]§a·Á,Y²ÈâÅ‹%iÒ¤òòË/‹†ã:ÚVGÝÚÅœu_ƒ¿Q£FÉ]wÝe¾råŠèuí0ÿ�wÞ‘¦M#FgÛ×ð~Õp[Gâkñ'�ïÙ³§9ýwΜ9ÍuãS¥Jp Lßuzq�A@§_´h‘¹þ·û½¨¥>ä Óéßwß}òÕWÓ¥»Û³½Áø^ÍýÝZn@Ï_m|gÜ3)ø;B¾@¶ÂR4÷Ýò�ëZ©�ß‰Îæ Ë)èÃ&Zʨ$ý[Zø äu&‡û U7§¹ß|ðóûO+cÚw� _ËÉsÇ͇WÜ}ÕåÊå¯(�¥&44w—ÊEjIߦÝUæv0¿U�`âê‘ε~5¦¬?vöˆ³‡1=ÿ�ÆtùîÒ²|{)”Ãú>»ëÙö!ÿðÃKÕªUåêÕ«2wî\óÁ‘-[¶È›o¾iÎ>aÿþ‚ äíp_û—?~ó÷U_ 䣒¡@@@@@�ð ȇÏ2Æ®D 8­†ˆ >©àqâÔ®K$KÚluÞ;¾B>]WúƒVÃ$g†ˆ‘Í:-ýêÍˤíOš�eÓAUD×­·‹NÞ£^_s}q üºŽm#Œ©ïí¢ëÉëTØZÜ�|ÖtÙeʳ‹eÒšQ2âLjR§Æ¿rí²hj—­GDz À>æï«;�9r¤T¨`™éÔ§OŸ6§¾¶G~ëñ�JêÔ©Íé¶í{¸ùÎ�;K÷îÝíCæ«NG_¿~}3”.Z´¨èÚë7+�òË—/—gžyƼä'Ÿ|⸢#Üý äõ7úù矛½¹|ù²9í½.1yòd3è×¾¾ÓîîÈ»5ØF@@@@@ fäcÆ5¬W%�œ3\�¼®¯=é™EÑù[m’Σš;�´ÎYhœ“Ý©›¾n¼ ]1Í»†ü_w™cwòù³Ý)#;Í�yfÈGóÞŠ8ÿ¹å’±®÷#Ÿ[SYë5¬£‡C)î@^ƒ¼âÅ‹›—Ó)ç8`È$k™8q¢¼ûî»æCüñ‡¹ÞµÖ»y]»½P¡BZíQZ·n-ýõ—¤L™RÖ¯_ïqÌ׎¿�ü¹sç䡇’ýû÷G�h Lß5<­V­šœ9sFòåËgŽvv¿Ÿzõê‰>��!C3lMž<¹ûpX·ƒ äíïQ«¡µäðéƒfŸ—n)Ï×é%~×Kæÿ9ˬ³¿›ºãÈßW°Š¼×šÑ@�ëloL몛fÑéúôøUt¦‰Þ3ºËÊÿ–؇̑øÏ×~ÓÙ×@_ûrâÜ1§®—ñðJuã!wñäýù­ºÏ×í¸ ä5<ïÕ«—Ó%}FzqÏPÝyçÄ(6ôá—o¾ùÆçö)ò¶¯ € € € € €Äœ�|ÌÙ†íÊò�S†+�/™·Œ|öØ×Ñv`Ù¿ ¥ï,k:nmè.íwÙ*�ÕÄÞ]ûûëE§¯wòwæ(jNg¿ð¯o¥ÿÜ×�ö³Ÿ_iŒÀ¿$-†Ôpê^møžÔ.ÑÈÙfÃÈÏž=Û\+^¯Ó°aCÙ±c‡9½¼N3¯eƌһwos{íÚµæHyÝqòëÖ­�.Þ»ôèÑÃ\?]ëW¬X!™2eònâ±ïo ¯ Œ;ÖœR_N�¢Û.�òÁö½_¿~2iÒ$ó¶ãÇ�—R¥J™Û:•½Ni¯¥M›6òꫯšÛ1õ'Ø@þÝæƒ¥b¡jòØõdÿ‰=f÷š–{Tž«õš|2¿¯3-þÿØ; ð(®. ’ ‚ .Á ®ÁÝ¡H)¥-.EŠ»(nŠkqwwwÁ‚„!@€@ü÷Üe†ÙÍ&ÙÍn¬ÿwútgæÎµyw7³ÌwÏ9œ®aùo;äyCAžÃÑsXzÅŒ}ÿVvÜ%óÈó÷€¿Š) ”cÞò÷‰¿WеöìJ-JµWåÖP�7廪×�8ˆIAþÍ›72l={·³ :”7nl± ïää$¿“ü™ãháùðèà€€€€€€€€€€X‡yëpŒÒ^ È›�ט ™�õerT¤ §†;�ÍÖÐ_»t¢5W,”±8ýù£~®pΛÍaíµÆ¡é9”wdù¾µFRõ|ßE~mߦîkyÎeÍ^Þlìuîíí-B ÙX°g��Û±ðǦò,ij¨m̆ FëÖ­“§8d={ï†g¦ò7oÞ¤¦M›ÊðÜ<‡^½zéuiŽ oÉܵáÈ97øðáÃå<˜Û¿ÿþ+÷y1CŽ9ôæg탨äS'IC+;éDrCA¾_­QT-_=½Kª8.ŸÞñ¬–+È=m>j4½<½z÷R=Ç ^XL×ÚÔÝ£eþz¥¬f�F"Ä0åPn yS¾«zˆƒ˜äy.�;w¦C‡Épõ¼uvv6Y�Ï’%‹üî)×”2eJJ—.¥M›–L�ÄA^¡‡-€€€€€€€€€€DòQÇÖj=C�7¥µù*yêPÿ:cÂ�ÀŽËhâv�ç8Wä<Ú3[.×kÞÇì�¬µí¿Ÿ–ù³ÿ+‚<çÀ¾pá‚Ê^{­š›=ØÙ´Â¿¶ŽvßA~Û¶mÔ¯_?ÙŒuGGGmÄáìù¶ Pâĉe¸}n§x+‹ ,�{“&Mèúõë²_V9D{¹råèÝ»w2 §ˆj‹IAž½éÙ«^1;_m¢¾Èþ�ÈŸAä�o6« ù½ñUªÒø&s¨h–Òê1ïptŽ¡X³â¿Rû ú . yS¾«JÊ6¦ùÇ�ÿÏŸÏ Èi™²¾L™24gÎåR"µ… )lh          f€ o®˜© AÞ|îÖä9$<‡†Ï.ûœ£Ë[©Uœ&¡EÎwK¯Ø‰;ENí®Ê¡ôŒgy¶ÿŠ Ï×røðarqqá]=ëÔ©“<Ç…œCžsɇgæ òáõexΘw?×±dîkÖ¬¡#FȡƎ+=žûöí+�9Ì? öQm1)È×ñhL=«}_”rÇï¦Ì3¯½æ­½N’ƒ½#ý¾² ]xpZ=õ[Åß©I±Vê1ïtXÔ„¼žÝPËØ;ž½äµf(È›ò]Õ¶ç}CA¾M¹nôSÉv†Õ,>ÖFQèÙ³'µiÓ&Ì>!ȇ‰'@@@@@@@@@@@ N€ Þ6òæ¿IÑ)Èû¿{A?L¯ 7Iöªg�]Åú¯íD§¼�(‡T CšÒ|‘<þ/ ò“&M¢jÕª©×É;Ÿ?¦òåËS@@€ÌÏ9ä#2Sù{÷Ënß¾M;vèrž{xx�§§§ô\oÕª•Ì9ÏíyÞ·dîì _¡Bé‘_¬X1)ÈŸ8q‚ØsÿàÁƒ¡¼÷y¼�äÍ“¢[�¿ûü¶ Ñýåë—'›5UNšû벉g#ëþ—y¾ úõëS—.]ÈÙٙ؞óTs.wΫ΂uÖ¬Yõ±pûìÙ3½²Å‹ÓÒ¥KeÙ¢E‹ÈÍÍM=Ïáî¹ïˆÌ\Ažû3wîÚ9\¼x‘Z´h¡-"ž{Ñ¢úžÝz"yÀ Wum‘Ùû±E�?uê]¿~]�ÿ¶mÛèæÍ›ò¸Q£F”)S&õ/&Iž<¹zŒ�È€ 9nÑÚ ‚¼ù¸£[�ç®=½˜æœB_¾„„9ᔉSÓÈFÓ(‡knµÎI�O’$ ½yóF½6íÎÏ?ÿLýúõÓÉýG�Qõê¦ ž ¤eË–…êǰÀ\A>2s7³^½zäíí-‹Ó§O/CæóBk[läãÛÆ§à�`£—Y4sißtŽÞ9¿7¾Äiî=÷Ò+7<¨[¨)õ¨:ȰX[C�ç4¿-jJœó>,û/ òǧµk¿§ ëš¹œ¿cü]ƒ�€€€€€€€€€€XF‚¼eü¢¥5yó1³ _ç¯Rª8΢èún‡)i¢ð=«�M‹�ÎR¬Y õ®1L=ŽhçÚ£‹4aûòñ¿§W•óc—É^‰zVL‰ꇿ½¹í»¾]ÖÏ-Â~Ïøyí¿¾ƒFmî+ËØ“~S�côYž §—SC�¬;Ž*宥7޹§OŸ–yÔ¹‡–Ï�!ƒì¢AƒäååEM›6¥Áƒ˲-[¶Pÿþý¥§;{Ú:88Èr%»‹‹ Íœ9“ºwïN~~~ò¿°G{×®]é—_ôÔ+ž>}JUª„ö€VÎn *DK–,1,u¼ÿ~êÖ­›,o×®�œ—a%KçnØßŒ3hÎ�øÜ¹sgêØ±£a«ﺲ‰Æo3.T‡5wõ>O�^= _æÕQ«±X΢9—ùøß—åMŠ·¢ß*ü.Ãà+¹àÓ%Ë@K;l“çÛ/l¬'b¬;ž �÷c^H‰ÁŸÛjùêQÏjCÔüðê bçÓç�bËdÚ~i=} Òž¢‰SÉ�ùesVÖ+×Xú]Uúz÷1�6_X-çþ2ð9½áò?}þ¤œ¦ §R™ÕãÈìܾ}›6Ô¥¨øý÷ßé×_ ³ŽQ©R%yžëq}Å|||¨F�òÐÓÓ“fÍúþ·J©ÞväÈ‘´zõêðª¨çV¬XAùóçW�±           9ä#Ç-Z[A��VÜVìmÐkòö»Mþ�/(CŠÌ”1yÖP9°­2P,èD+j>|XΈ?³¦›þœ9s’­­m,˜iè)X{î­Zµ¢³gÏ’�� íÞ½›\]]Cú(1ä•°ò¯?Ð¥‡gDÎugÊ隇Ùëm„wÉQ‚ ÜÞòŽöN”5uNrqL^œ�8C‚|x« ÈÇ�7éÿxŠÆDí¸‚Ãšs׿ /S¦Œê)WX˜3ϰysú@]ø A>¼ËäãÀ›ô| ÈÇ�7 Sä €ÄÆCò±ñ]Áœ@@@@@@@@@@@@@@ |äÃç+ÎB��o&             f€ o®˜© A>f¸cT°„yKèES[òÑÀ€€€€€€€€€€€€€€ @�·"Ì¨ê ‚|T‘E¿              u ÈG[«õ AÞj(Ñ€€€€€€€€€€€€€Dòц:òA��<;´�˜"A>¦È›1.y3`¡jœ!ðäÉzýúµ:ß9r�­­­z¬ìøøøP`` <Œ/¹»»+§(88˜.\¸ kwœ��)cÆŒ” Am±ÞþÇÉ××W¯,¬ƒ¼y󒃃CX§­Rîã÷Ž®Þ{E7З¯D®.‰(wFg*”#y¸ý?yñž.yûÓµû”Ä!>åÏêBù²$#Ç„v¡ÚqÝ×ï‚ÕònIÈÖ&žz¬ìð\?|–‡;¹gHJÁŸ¿Ð�Ço•*ä’ØžR‹9Úû�Ÿé�ï;µ8¥sJ‘4¡z™���¯tÎë¥lš…HÖ—½_‘¯ÿrϘ”ògq¡L®NÄ×lh�Ÿèö£7†Åß6¥Má@©œm§mpñŽ?}¹�GöðßWm;Þç÷øcðµ8‘½­œkbñžÃ@@@@@@@@@@@b'ò±ó}Ñ›y=8ø�èÚµ+8p@½šùóçSÉ’%ÕcÞ ¡ *�¿¿¿Z~úôiU¿ÿ>Õ®][=g¸ccc#EùöíÛËz,èkmøðá´víZmQ˜ûË–-£‚ †yÞ’÷}©ÛÔ“t÷éw±[Û_FWGšÖ­$eM«/B³H=hÁ9ÚrÜG[]îÇ·³¡ ¿¡*EÒé�ë*Æ9pá©Z6¿Oi*™'•zÌ;!b5@…;ÈÿÍGµüôœ:ôàÙ;j}"G¿iÓ&=/|î¯iÓ¦jÏž=£/t!͹pÆŒtäÈy~РA”/_>µnÖ¬Y)aB늜�Eøøšýv‹HB}V§”uªŸK Î|üìÕZsàý³ãÍÛZOöí'}„�–«QRÇø4«W)* BÕsöå{ïÒ”5Wå9á‰}pj ÕÛÛP�ç÷‡§×$;[YŸ_/8OŽò]žíöñmèܼz†‡ß{ö õ‹Øú5ÏG?WÕͳÖ{DH}]ö*ïÕ$/9%²£û¾o©ó_'Ôpûë¹Sgáí®˜V�¯_&µ­�Sž xûQ†²_¸Ý‹=×…êw^ëFU"ö^ך5yü7�®L/^§¸íóF~N>‡È¡Ø;³8Ïõ`           1K‚|Ìò7itò&aB¥8F@ä9o|Ò¤IeXúÙ³gSÙ²eå•p~øråÊÑ›7o(UªTäçç'ËÃäË”)CsæÌ Eaüøñ´téRYÎyêׯ_ªŽR0pà@)âóñ¢E‹¨hѢʩ(ÙŽX|Q ©ÜyS! jYШÈÌ"¯S¢øzÞÚm'%öôf›-ÄxCoìþóΪ¡ìÙž=áÙAžÅÚ¤"¯:‡@×¶gÏûr"4:{¢§^Ö~A²�¡ Ÿ*Y"ò òfNF«†–—uøåŸ�wèÏUWôÚZK�×^/2ˆ(/ý’]whÂÊ+rnÊ5^žû? ~6¹¿¸Yé!/ Ä ‹òõî“‹$Ò$w ]V%Ž4À¦ä­‘�~oª†?ðÃgª?p¯ÌGÏõ‡ÿêA�Êeâ]Õ¬!È'ˆoKçæ×UûäNwÐkÆiºóX—ã^ûžëUÄ€€€€€€€€€€€@´€ ­¸#7ùÈqóññ¡Ý»wÓ�;wÈÛÛ[æ#wss#»Ab�lc EÛ›7oÒÝ»w)Q¢D”3gN*T¨Õ¬Y3T“Ç�ÓºuëdyÅŠiåÊ•tíÚ5é]ݪU+ruu%šYHæ1ëׯOuê|ÏmiûPŠ#Š oooO®~ÕªUT·n]3fŒ¼‚C‡QçÎ�)Y²dTºtiÚºu«,7W� ”¹é¿Šð<Ö™3g„ç°­QJÑ)È?óÿ@Õûî&ÀY`= föV7ÅžÏúj}t^èÞþð´Z¡„|mØy!´/Ú�û‹¼ó%Dþy¶ˆy®3oË-šö¯nŽ-ªd¥?~ÊÏŪE• Ïð ^¨Áæê’ˆ¶�¯*£ ȼ€€€€€€€€€€€Äò1‚ݼA!țNj…×+VÐ_ýE>|0Ú˜C�ïܹ“R¤H¡wþâŋԻwoòõýž—[[¡B… 4zôh=1ÿäɓԶm[m5uŸ¤L™’Ο?¯–ÅÞ¶3gÎ$OOOYfi{µã8¶£äçÍ›G¼xÁÑÑQ†Œgá¼_¿~´mÛ6jÒ¤ qú�7Ê+4W�çFìuÿêÕ+Ùži¤M›Vî¾D§ ÏböØå—åj–p£ ¿1œN˜Ç{Î>ùãOk›^´ íÉÏ"u©NÛˆ·Žþâ‚z²¾V�çé­Æ!Ç„vtdz-)Þö›{†¶�xDÊý“h»ñèCÙÎP�ïÙ8»òŒNß|A=~È#·ç�aà9<{”/ ZŒ:$ÛZK�× â“;£ªEÓÉþ›?@×îÈ}­ÈÎáê9l}|;:;¯®ô„¯/¼ß/ò­ãªP&ÞÝÐfm¼A³6Þ”ÅÝå¦öut¡éµãó�çÌkÐßçdÛÊEÒÒ_]ŠË}å%*yñ§�ê Ø+½åy¼%<©PŽäÊÐØ‚€€€€€€€€€€Äò1ÝÜ!!È›GlòäÉ´páBµQ‰%(W®\ƒ8yyy à}Ïž=”&Mµ‡D¯Q£}üøQ–åÉ“G†,gëÐË—/e9{kÏ�;Wm§Ômll¨ZµjtîÜ95Ä:WÌ�!qrV­ZÄ¡ÔÙ,m/;‰äË…¹ñèÎfóWøó+¥øžZÛüD ­ öìYª\¹²d6uêTéÏ":/¨à÷róæÍ‘䃂‚¨X±bôåË9ÏãÇ�ë-¨ÐN>:ù‰«®Òâ�^røQm ç$7ÕØ«}ÔÒK²:çœïTßÝhÓ:ý÷н§º\éÇfÖ–¹æµ‚<‹Ô•{î”aé§v+.=âËvÝF>†ÐÂ?ÊÒæ£Âä �~»ŸÓ-)ý;²")ìEr¦�÷œKžÍZ‚ü-Ÿ×Ôhð~Ù§’»þSð*Þq‹Œ4À'ê”r£±íu‹¡>KšÄ´yleÙŽ¯ïÕÛOrÑÀ¥…õCEàJ;N=¢>³ÏÈú? /÷þß¼ÜMä§®»Nó·Þ’m�]wT ò<èÈ%iõþ{rüñŠR­’éå>^@@@@@@@@@@@b†ù˜ánÖ¨äMÇuÿþ}þóçÏäääDãÆ�£òåËëuÀaèGŒA&L�¹É•“cÇŽ¥åË—ËC¡>lØ0b���=æÛ´iCÊ{±lÙ2*X° <§Ô{öì)ë=yò„ªV­*Ï'OžœöíÛGvvvÔ·o_Ú¾}»ôÐfOm6KÛËN"ùrfŠ䷙߸Ò$¢T„;®¦ä9‚€’ë�ÓT©R…˜%G0Ø¿? 2$Ò‚}ºœiæÌ™iË–-aÎ::yöpgOw¶¹ÂS½tÞTaÎËðÄŒõ7hÎf�w¿æùˆÃdzæ#ÑeoyŠi¦µ‚üùùõhüŠ+´t÷ªY"=UÝRÅBihZ·ržÛn”íy1Á‰Yµ•fzÛ£Âóÿ·IÇeYõbééÏNº òŸÊ�ýœKžmÎ泌L¾Ôr_y‰jAž=ûÙßMëݯŒ�-€€€€€€€€€€€@ô€ ½¼#5š"sèsXø8Ü<‡¢gûã�?¨E‹á7øv–½¨Ùó�½ã9g<ç/wppÐkËB: êl,³ Ï¦Ô,X@Å‹ëBT—,Y’Þ¾}+Ã¥sy6>?eÊÙ7‡^g³´½ì$’/±I�çtü~1÷Â… ËÐõÍ›7§РAƒ"ä™÷¬Y³$ Ž€Àß› 6ÐêÕ«…"ËÛµkGÝ»w“Vt òŠ÷6Of݈Šäž!i˜ó2<1üŸ ´öà}Yžw}û?�Ññ«~²Þ"áñ^Ô=E(AþâZÞ!�ΙœŽ\~&óªsèw½^Èú6µr�2FµbédŽu[›xtà¯ô)Äê‚<_H¥^;é™ÿª$Dö©BdWBÿ'J`+=ûE âh âÛPávºðJxùçAT¡ÇÉ#m Úýg5¹oø¢0árfÆìØ´‚|Q÷”"d¾.õAà‡`‰€ÏsŠ6^à`,•@T ò«Ü£‘"jÛbÁİ_=ä>^@@@@@@@@@@@b†ù˜ánÖ¨äMÇÅ!ç}||ÈÙÙYzVs.rSŒ=ëk×ÖyËò–=ë �ó˜—)S†Þ¿/Cà¯]»VVÑ ê,þr¨{6ÁΞõZñ~åÊ•2=‡Ï¿té’ôÀ·´½,’/~"깿—P0Í´L•¾RÂdf62¨nè!ÿU¸=s¸Ž. Ø’%K¨P¡B& òJ›°¶œ¶`ÅŠ?~ü°ªPt òÕûì¦GÏßɹì˜P•ÜR9†9/Ã}眡í'É≋R�âÆÃ’wœ|\ ì\QñÖ6ô�goój}vÑ“ïÕa”Üã¦òŽ< Á“^±â¹SÒ‚¾edÖö�ç1Z�?J§o<§Ü�iÍð ¤ä¼çÐòÛNøP@à'q ½Ü9Ÿ=Ûp!J³7ÿ}ß@ªý­,s'Ú2VçI/+i^®Ü}E?Ž8(Kògu¡ƒËÉ}­ ¯©®·›Ê9!uyç”ͨW®Dµ ÏŸ þ|°U)’ަt)¦ �-€€€€€€€€€€€@ € ÐÍ‚¼iÄØ+ºH‘"ÒÚÃÖ.]jZCQëØ±cÔ¡CY¿S§NÄÿ3ëY¼O’$ q.r6­ ¾iÓ&™+žË•º 4 ‘#Gr­_¿^†_ç}ö�gopKÛs_qÑ y¾†I“&Ñ¢E‹äå¤J•J†úçÅ ¦xȇŀS´nÝZõ¾«—G§ ßbôaºèõRNgÕÐò”7³é+F‹üñ+Ey6El–/m&¥SןËÒ¥=É#{òPò|rÒê«´h‡.Ÿ}ªd‰hßäê2·º)‚ü›÷ÁTN„†þüEŽ3´•5.Ÿ)Êy%Gº³“=�QKˆî»é�ï;â… ,ȼèK]æ"�lɉ¯ŸíŸþe‰óÚ³XÏ‚8_çþ)Õå¾áËùÛ/©å˜Ã²¸„X`ð·X`Àf(ÈÛˆÏæWþO,jPŒÓ iUPާ”i·Q-È+xÌæ•³G:€�€€€€€€€€€€Äò1ÇÞä‘!È›†Š9ÕªUKVÖz¥›ÒZ+”<˜š6mj´Ù/¿üBçÎ�“çΜ9#ÃÛk‰’#@IDATõ­[·R¦L™äùzõê‘··75nܘ†*ËX°gÑ—�Û±Xli{ÙY$_‚ˆ‚t)ÆÍê!‰‘MØŽæ&õeL�¿~ý:5iÒD¶oÙ²¥š"ÀA>K–,RxWçéÒ¥£´iÓ’©‘¢S�ï;ç¬ðr÷‘Ó�Ñ£$•/èªL=Â-ç�ç<òl}šå£_ªÏ!ßdغ~_¼É¶�¯BR;ä¹×ekY-õý1ŸÜ7E�çŠ�ÿ:A‡„nk�M­I,–³Ç}TxÈ/Ùu‡&¬¼"ç·Oê•E{Ä÷ŠE,ÈOY{M毯R$­ê¹pj J‘4¡¬Ç9äCB¾‡¸?3·®ìÇð…¯…¯‰­VÉô4¾CØ9俈Á/{¿¢}çžÐ?;½äŽ íèß‘)}ÊÐQ¢Z�Ÿºî:ÍßzKÎ=¼Ï†¬€�('A>Ê[>yÓúûû“§§§¬Ì[%Ÿ¸)­9ï<çŸgëÓ§±ðnÌX,fÑØÖÖ–.\¸*ä|\äcSy…7G`Ë–-¹¸¸È}SyN'0gÎY?²/Ñ)ȳp¼`Ûm9ÕÁ- PÓŠYLž6ç�ç<òlêæ¤® sm[£ïnòñÓ…Å?=§9¡Ø0d½ÒðôÍÄjr¶tIÈ%IYlª ÿXˆï�Eøýö¶T@„xg‹*AžsÜs(~¶?~ÊOã–_&W—DR�?wëý2ö%KlO?VÊB³6Þ$ÇO‰kWŒsÈs.y¶K êËEÊ9e»UûÌ=+[ÕÈN½›æ•ûZy%/½Ò†·37Ü Ù›nÊ¢°ÂÅGµ ?H¤Ø(Ò°Mî\Lä¹O'÷ñ           3 ÈÇ w³F… o:®’%KÒÛ·oeØxöF7Õ._¾LÍ›7—Õ[µj¥Šó†í+V¬H~~~”>}zbŸÍRwKÛÎÑœãØ(È›läˆch-oÞ¼T°`Am‘ÞþúÃhÈB]îõb¹RÒÂ~º°èz•Â88pá©Öùt™|©e~xê¯ßSYž�=¸%°Þà:Q:,AÞ°=›*ÈkU‚üÃg�T³Ÿ.7|¡ɉÃË×(ž^†¬úB%:n¥Ï!_¨¨{ :#äÉìL«‡VP§Øxè~ºñàµ<æÜðœ#ÞÐØŸ=ñÙ~b<‹ïl òŸ‚¿Píþ{äb®¿rHyÊ—E?AT òƒC¨RÏ�24?�¿fxÊ�Ñ™wa           1D‚| �7gXò¦ÓjÖ¬]½zU俎GëÖ­£œ9sšÔøÅ‹T¾|yY7wîÜ´fÍšPí8w<ç…g+Z´¨šëÜRAÝÒö¡&jFy}X‘õ�¿rå ñgOkr¿_¿~Ú"½ýwAŸ©Š·Î9ØÅÇ•vL¨j4Ĺ^£oܦ|÷íÄ0‹íÇgÖ¢øv6zUwŸyL½fê¢ T.œ–þêZ\ž�ë‚<‡›/Ü~³Ý• fOùU²ÊÃæ#‰òßó0Ô,áF~+¢T¥Ék®ÒÂí^:"²G0´z÷’÷ã·²xýÈJ”Ã-‰Ü�H�çJì�Î^êlÆKD¥ ¯›ð‚€€€€€€€€€€€@Ì€ ³üM‚¼I˜d¥e˖Ѹqãä~©R¥dØz;;»P\¼xQŠõ‰%’ç¾ /↠’——N¨[ºt)yxxèµ=z4­\¹R–uïÞ�Úµk'÷-Ô-m¯7I3Ÿ½÷j°™æ’ó+Ù%4³‘Auc9ä ª¨‡±ÝC>2‚<_ܬ�7dXuÞ/œ3͹ä�…þ¼î=ûDŠÂœ^±>³ÏÐŽS�ä!ç|çÜ‡x› LjC¸³q¿å¾å¨�ë‚<_Oí?öÐ}ß@Þ•¶zhyá ¯óD×z·óÉNõs‰ÿÝuÅë½§�TGx±³qŽ÷ÕÃ*PRÇøò˜_´!ñsgr¦5â¼b¦ò̾zŸÝäëÿA63ô’�*AþßC÷i¼ðì/z°-è[†ŠçN)÷ñ           s ÈÇ{“G† o2* ¡F�Ñ�;ºpÓùóç—9áÝÝÝ¥×üÝ»w¥çüÚµki÷îÝ”&Mµs>îÕ«—æØ›<2y“QÉŠ,°²ûÓ§Âý;cQ]+ȳ—|—.]èСCa¶²µµ¥áÇSýúõÕ:– ê–¶W'Çvbƒ Ïï%/Î0Å8úBX9á#+Èó¸÷}ßR·©§èîS]ˆô°æb(Ès=­‡½±vÎNöR Öæ1WÄlûø6t~~=cÍԲؘCž'7iõUZ´CÍ¢¨{JZôGuÎÏ‚¨B�ê±±<ê>~ï¨ýŸÇˆ·aYý²iø¯¤,dàz¦ ò>Št¿ïRs¹¯üy¿yð+‚|Xã–ï›\�R»è"y(‚¼aå˜'tm˜‹ZTÍ*E{¥[�˜#A>æØ›<2y“Q©ß¿O'N¤-[¶PPP�ZÎ;ìáÎáé;wîL êÇ]gQ~áÂ…4gÎúðArZiœ!C3fL(QöôéÓÔºukYmûöíÄõØ4h Cà7mÚ”,Ëx>ýû÷—Þúì�Í^ö–¶—ÇÁ—=zÐÞ½{‰Óœ9s&Ü+2d­_¿^�7ðññ¡5jȶžžž2EA¸œ9r$­^½Ú Ôø!GIàˆ ÆŒ�4nÜXïT«V­dt½Â08Ìøè¥—èÈ•gÒZ[�EÖªEÒR÷Æy(•ðv7´UûîÒ¼-·ÈOÑŠ±ˆœSxÛ�ëP„²¤I¬Ëm�é§hï¹'ÒëúÌÜ:zç †,T]m·{øð¡Ô�œœd¾ymìƒ@”`!ûúƒ ùò•Ò&w�B«1AÙppÎY~õÞ+‘ÝžòˆÜ禴1ìãÿñøSðÉ›¹sÊ€ŒB؆�€€€€€€€€€€€€µ@�·É(ì‚|ÂE×              E ÈGXkv AÞš4Ñ€@Lxòâ=ý<æp¤‡.›/5 9Ýa            —@��ïù8ð&aŠ á¸ïû–jÿ±7Ü:á�¬X( MëV"¼*8           ±ŽùX÷–„žùÐLP ·~¢9›nFzҜ߽~ÙŒ‘n�†             ÈÇu3Ç„ o&0T�X@‚|,x"šùˆá<€€€€€€€€€€€€€Ä>äcß{jFäC!A€€€€€€€€€€€€€Äzäcý[DA>¼I˜"€€€€€€€€€€€€€€ o$6B���ï æ             ဠ>ŸXq‚|¬x0 0‹y³pÅLeò1ã‚€€€€€€€€€€€€€€% È[B/šÚB��&Ð@@@ Ê øøøÐéÓ§éåË—äïïO2d æÍ›Gù¸þß;vŒ>þLÙ²e£téÒ…{ùAAAtêÔ)Y§páÂäään}åäµk×hãÆ�äììL)S¦”ã”(Q‚lmm•*Ø‚Äb!!!täÈâ{3ß“©eË–äææ‹g�©�@Ü#ðäÉòòò’÷Ç2eÊ„{‘½'s§³fÍ¢wïÞQŠ)(UªTäááAiÓ¦ w<œˆ䣇³E£@�·Çq!ƒè«xPÄfcŸlìíãø}Ÿ~ðÛ·üöÍ÷‚o{¶ Q—På†ïŸ<6,’Ç S¦"›øñ�žC¡å¢’»òy�gcK¶ Z>Y3zPÆæ&ÿµïšþsU?¿'¯É&¾}¬ø»0bÄZ»v-}ùòEe]´hQúçŸÔcì€Àÿ#�wAŸåeÛÛÙP|ñ¿¥vôèQêСƒìfÑ¢ET¬X±p»ä‡÷UªT¡×¯_Ó/¿üB}ûö ·¾rrÓ¦M4`ÀåPnYÈ[²d‰ôNà Ö°ô7h¬¹�˜Hl»¯Z‚àÆ�Ô¹sgzöì™^7¦üÍÐk€� üôÓOtñâE2åwodïÉ<‰jժѣG�Ôùð9þž+¿ ÔØˆv䣹ùB�7ŸZÄmï> 3§RÀõ«ôéÕ+õbÒV­N‡ŒT�ý/_¤³}zÊãD®®TvñJõÜÝKéÎâ…ò8m¥*”·¯þÃâ�þ/éÝýûò¼ƒxpÌ"¶1{sû&}‚V¼x”¬@AŠgcùCreœ+F“Ïæ�Ê¡ºuΓ�JÍÕÍ]-4Ø zñœöׯiPª;,6y:¥(VÂ蹘*äE¯.]”ÃÛ'KFN™³D<•¯_ÉÿÂyY/~Ò¤”8k¶ˆÛDq�¨æ~²Kò¿xž¹¦¡ ë6GñÕ™ú]‹ò‰`€(!(þ–nþƒì;sÓæ”««îïe” fB§ì}ÛºukY“–-[VzÓæÈ‘ƒ~øA7OºA3|øø™n>|M×îÐÃgï(u²„”1µ•Ê›ŠÚ™ÑªF%�û¾o©ö{å-«e£¾?æ³h8öxmРy{{K!žÅ5Sìï¿ÿ¦)S¦���mݺÕ$Ù›7oÒ–-[è•ø½vâÄ òóó“CÕ¯_ŸF�mʰ¨,ù Ó�5Cƶûª¥`Øþܹs²^HÃÑ1’‰ßé?þøc„Q5,ûÿ±=îÉ–½ëó¶Ü¢ëoÈN¶O¨BéS:ZÖa4¶Þ±cõîÝ[ŽÈ Öø»‘EæžÌ}.\¸�?~LüñäÉ“ôUü›šïë|¯æ¨TáÙ™>=èÕåK²JÞÞPÚ*ÕÔê{jVŽºµeþYNiàu¯ÂÁ€€€˜H‚¼‰ b²ù˜¤oþØkO/¡Ë>gÕ†5 4¤’ÙÊ«ÇØ Ÿ@Ðs?) }þð!TEþaÁ¡£Ôò—çÎЩî�äq¢Ô®Táß-ê9¯…óÉkádŠ ¯´Q¶Ov喇#ËÃØ(ÈóÄöÔ¨(Bô¿%Çté©Üê ÊÔÃܾ¾yƒŽµÕ-”ÈØ°1åéeZøÜ0;Œ‚Öæ�‚¼9ßµ(@‡.£�@lúõë'½nùÒ>LÉ“'� ÿC¼^ñC\ �§©ok�\]‘¯ÿ=�þÒ‚úB€‰E¾ëÔ“tàÂSé‰zÎ÷ºê¤°£°¶ Ï‹]îÞ½Kîîîôï¿¡þ©Ù™4i’ô®³�XP77ï,‡Äåpùì�Ç¡yãEÕŠ#s·¤èܿӳ£‡ÉÖÁ�ªí>dIWf·}sûmÝB¶sïÒƒ²4ûÉì>,m`ÉoPKÇŽKícÛ}Õv>¤5jÈ.š6mJC† ±¤;´ ƒîÉa€‰Dq\äµÞñÓ§O§Š+š|õ–Þ“¯\¹BÍš5“ãuëÖ-°õäM~kP@@@"E‚|¤°Eo#òÑËÛÒÑ È[Fðd7²ûüyŠ'ÂWݱ_> «GòßÉX[þÞ³õöŽ·ÿU¦!°±·§êûŽÊ4áõî{è�¨ásuëE™›ü^õ9gmîÑ)È›ó]‹¸Ôb±M8èÙ³'íÞ½[^×åË—á‰gñ;l¼ƒ±Ë/Óò=Þò¤£K?ºma5D}ЧºtÇŸÆ,¿DÞ�ßyã £»Ôš‚ü™3g¨U«Vò8<çƒ7Çnß¾-ÃÝs›öíÛS÷îÝÍiNýû÷—ž¶Üˆçâ î¸`ä#¿(4.¼¿Öšcl»¯Zr]wîÜQ½ey! ‹u0ëÀ=ÙzLyQáC?‘JN˜G6Šogc½Î£°§_ý•NŸ>MÎÎÎtèÐ!¹`ÍÔá,½'ûøøPõ꺨züÛ OŸ>á A>\<8    € o1¨ï‚|Ô3¶æä-£y°I}zÿä1%uÏE¥ÿÖ…ï «GòßÉX[þÞ³õö.�J�wm—VÚ¼“¸„ï{oõ º1].·èŸS)e‰RÖ›Œ•z²6÷èäÍù®Y º‰f±M8Ð òW¯^�3ž³Ñü¶Y4Ü‹×AT­÷núB,Æ/ê_–rgtÕç§à/´`ûmêP7'ÙD‘3<äCa³Àš‚¼‰‚=Ü8@)R¤sܰNpþw///ÅâàÁƒÄ}™j  M›6ÉêäM£yÓ8ņZ±í¾j ­ ß±cGêÒ¥‹%Ý¡­¸'�òVÄÏò8\=[d#QXrOæ\òœ‚† ‚¼Ä€ˆQäc¿iƒC�7�×úòõ MØ6H„c ‘�âQ<êVm ]ñ9GÇn ‹>gèù_J™Ä•Šd*I?•jO)§Öàæ“+´ãʺëw›î>÷"[;Ê”"«ü¿^¡f”5UN½ú÷D�'þVËÎÝ?IïýÕc7—Ì”Ã5—zÌ;MŠ·¢ì©¿—m8·‚®?¾¤Ö©š¯.Í\Z=ž´s8}z¯ÿV±7%wJ©óÎÑÛûéÐÍï¹:=2§’YËѶKÿÒŧéú“Ëdog/®#ÕñhL•r×’í9¼þá[º¼¥\Pn©¾ßŸ9zÀ©ëÏéè•grÞÏ^} ø¶6”5]bÊá–”*Jf¾Ú€ÀO‚»î·L¹©E›$´ëÌc:}ãÝz@iS8P÷”ÔªZ6£)"俈7dé.oâqØ<ÅÙ�/j+[¶,ùûûS¶lÙTa\62ãeܸq´téRÙ‚?¯ü�1Õ⊠Ï÷üçâ^¤ØÓ½»å½&ž�-ei¡K—£œãm†z )QjWm‘ºoî}�z-œG|_aûøâ9=Ú¾Uî»*,—ȃo/ŽéÝôòø*ç"{oQÚk·–üÕöcÎ>ÿx)Þþ÷ZÖ–¿Šß^Ÿé�ø}ôâÌ)úèç'ïå|�ÌÔ¸™Þïƒ��AôòÜYz~ò8ñ½?èùsŠ'R$ð=2±¸¯¦ö,OÌ̘)¿…líP¶VmèÕåKäwò˜ü øåã'Jœ-;elø%ÍùýßiÚ~¬u_õ?ŽíÜJï}ŸÐ§ç/ÉÖÉ‘&OAIÅoãÔe<)±øwDT›%‚<ßç8â ÷áííM!!!äææF2Âß�™¹÷dîÃ’ûª¥÷tc×`N™µîÉ<&ßOw‹û ß“½½¡d‰íÉ=ƒ3Uðp¥b¹ôŸ pýØrO湜÷äÍGÐãÈ/à%NŸR:'¤|Y’‰ù§¡ìé�^Þ}¦•ûîr¡¬Y¥,F‹(W‹ûþ£oÞôJ™±mò¤ ©Uõ°¿oær7cÕªU4räHYü×_Q•*U «DxlÉ=‚|„xQ@@@¢•ùhŹÁ È›ÎísÈgª:ÑC¯A«²�iñÑYÄô mhýITνª,þ"DüåBX_rl¶*èÖ·³µ£¥:P‹’íÄv�øqÜë ú·›aÕp�‡Ô›HåséB‡qÅ!ë»KA]iÔ¾|OjV¢µrHÕÿ,BŸ>T�ç·^jaÀ‚CÓÄüç«uÊæ¨DO_?¦;ÏnªeÊ/0XØv£<œwp ­:¹P9E2¥Û¾×èƒfŸ´ØÐ“‰ûµ¦�Ô�|î7©Kˆ ¥Ö� ‚üÇ—/èÒ¨aòá¡:1Í‹È#ÇR±˜ "³äahd„áWW.ÓÅ¡èƒß3£Sã‚ù£ø‰=on! ‰†ô—Í0×+üvÀ|ìSE .Nš+7•ž¿ØXu‹Ê"{í>›7Ò• £Ã›„<"Ôw-ð®7n©Ëû˜ý×¶B<:E×®„ê‹?;Åÿš¥÷áJá _ÅÃsŽZñd¯n!WòBE¨ðøÉd'ë¨2}ìØ1Ù½©òüÐðàÁtöìÙ0§Õ²eKâÐ܆Æù«{÷îM¾¾¾†§äq… hôèѤNžY½c=w:.\òö×6—ûE…(ÿwßÒr‘‚ödx‚|ˆXPÐþYÚ~ò‘lÂÂËŒ%È!��¶ ¹ÏÂXݺuå~Æ U TÅ ¶oß®†µåô-Z´ˆ Å÷Ó¤�u¿1ÙC?UªTßOÆ¢=í"AS¦Ubú\ù[A[7²÷5îc‡g úúm±¶OcûÉ= SñésôNYroÑëèÛ�%¿A�õgJGAR�•_³‘øw G 04ÉËþ£[œÆçöׯIAbCXf+Ò$äï?Dý�©­§ü²M�PüÆ*~û ïÃmb±ÞcÔ8¹XSï„8°ô¾Êïù…Áýåï[þ•ãxbW�ç”Ã(Û^ºt‰š7o.û7ÕCžÿ=½bÅ bañƒX@mÌ&L(ÑFçˆÌ=™û·ä¾jé=ÝØõ™S¦½¯DöžÌãm<ú�F/½H>ê0kçÀAnZUÏNÝÈMvb™b±ážòå+ý>ë4í=ûD™V¨-Gé¹¼¨~¨r.`1¼F_]ª#à ÛÇW s‘×ýyôaºàõÒ°Y¨ãŒ®Ž´mœîy�áÉÈp7ìã÷ß—ß.ß¿?¥N­ï bXߨ±%÷ä'Ož¨‹~øá>|¸±!Ô2„¬WQ`@@@¢„ù(ÁjÝN!È›ÎÓ˜ ^k­ Ï¢ý⣳뮞ë^u ±·<[läÕÉÙ O�7R]-âè¼Àšæ³e£*Ær¿�wn'ö|aWWO}aŽ=™ÓÕ¨¥Ó‚|Èû÷tè§ÆÂ3G'Z°øžRkìÿêÊ%zy^' ± ]nÕz²O:l°z1bÇ’‡¡æ Ãü óP“ÄÞÚlœ"€ø¿ $¿£‡…'²NHHQ¬›<]Ö±ôåí/:ÒJ÷àϽKéÝ̳wW+O_‚ƒe÷éªÕ¤îA�"Ô³¹çòµêðÖ˜»V\uÞé¯oߤñ`1QªÔÒ;Š8¾Qx,k òÇÛÿ*Äø«òZøó’ª´§¸öOä{ø ñâÅ¢B�·ä»¦ÌËn×ÿú“î¯[-»â‡å®eËSJ™cðwY±Rs’sž|Ê!iyG· 2¢À3ñUŒjpä ÿKT†ü} Ë;Nigî6²×þ`ýZº6yÙï=Ž„ÀŸç„)SQ°ð~ç÷�½ÿÙ’äÈIe.Ó›–V�WNð‚—|éã+ްWt ­ó´W*ŠmXÂß.ˆÅ8ÏÄøl¼ €Å!¢Ê‚Ř%K–”ð$H 'j‡5&{˜³|`` ¬ÂÂ^‰%¤{ü°ðÍ¿‘ØK}Ô¨QzÝø ïÊ5jÐÇ�º¿qyòä¡¢E‹Ê¾X$|ùR÷�¶téÒ4wî\µ­öá={¶W«V�Î�;GÜŸbDT‡¬Y³Êpà\V«V-?~¼<­2fÌHY²dQëq[É€½£¸Ïç«“�´rŸ–Zðç/T¨Ý&±‘(¹ð?4­¦Ù]²7Zíþ{ÉOx‡³±ø^®€+9&²¶ý…Ç·nÎIâÓö UÉÙÉ^ƒ=Ó÷�ûþÐýÐ%_é‘ÎÛ(ŸI­§ìüZ#»ž‡ºRnéV+È—ÍŸšŽ\~F âÛJ¼t)èÉ‹÷tý~e^ìZA¾L—mÒ=}JGÊŸ5™œ›­ø °ØÎ×ÅÂÛ´n%¨¢ð–ךV�WÊófNF…r$§¯?Ò.-@i?±cQªQ<½RMnÃäù=í-ÄŒ}çŸÊzžâ½˜Ò¥˜¼½¾lذ� $�†JMšè¸«^™6ç,/$™8qbxÕõÎqÝþùG–±WŸ6‚„^Å>`ïl^ô§˜ß‰£$¾ç,†ºÕ -enþs¨H=‘½¯ñ˜×§LT“}|å¯þ=æèAFkŽâoIæ&ºßOJ¹%÷¥íÖ’ß Ú~ÌÙ× òœ–ˆ=Þù>ä$þ¾:ˆ0|ŸŠß7ÉIüÕ ò{kU!Ž ÃQuœsç%ñ{Š£ÄÞóïéAõ¾Xx쟔ZDÓÑš"Ès/ø´‰oO©Ê”¥ÎɈ#>¸/«;eÊLžKÅoV;5fé}õîªåtsÆ_²G{1&/,LäšFü&xM�ïÓóÇ心jýþ»ˆÐ]?ÊèârÍÔBí:çÊ#¼ý‡*W æÍ›GS§N•‡­¥M›6Ê©0·“'O¦… ªçùžÌaxq§¹à{(ßï÷ìÙCiD$ Å"{Oæö–ÜW-½§+ó�ÌÖ÷d—˜ñ}��ï§ §k’ÐK¾·�y%rÊouÝ©KÃ\²¿Ä†{2GŽ™¸J7wöè¯UÂMFŒá9ß{(îϾ" `]ý§�:oí׳ì²ZÄg¼Ÿ¼•Ç ò ¶{ѽ'oÔ¶Ú�ÇâwÀáµÏ–ÑÕIòU´§å~d¹vT¹rezúô©LÃùã#c–ܓߋçüû—�–rÄ©ð ‚|xtp@@@,'AÞr†QÞyÓ‡'È'sL.C¯soÞÏn‘ÿ»¤ò~"Œý/ó눜«:¯2®“$QRª�«†x€úY†tóá»wUâ„IiÙoÛˆ·÷^Ü¡•'piçEÈzî[±ŒÉ³Pv×ÜÊ¡Ü6)ö‹:.ˆ ye@öêç0õiœÓ“ß›§äå{ƒ2$Ϧ‡<·ãpø‹Ó1¯ý¡<åWwÞ*Ì¿2–5¶Õ¡Ï|‰EÒ3ç…Û%‡ú úæÝmco/ÃÜ+ X,ÿðJÆwJLñ B'²—îµI:EV2xà¦ô#•�oUw ;''õÔ­93È{ÙbyÌBrÞ¾ý‰=n»·rݘ©{Е¡nq~€rÊèÖ’‡¡æ òÚ‡È*�çÆ¡ÙØcþt÷NôÎç¡<.9gA¨ð©ò„™/œŠ`wUñ`T¨E~4wwö¿J,R+æä–‘¸Gª( "�ð‚�¨´'N¨žç¹s禵k×F8‡¾Þ¼y³¬Ç4YtwÒü æ¹V›…í>}úèõ7vìXZ¾|¹,cOáaÆ©y°Ùcž…å÷Õ²e˨`Á‚²®öá=‡Øçzì]¤äßLž<9íÛ·�ì/öÊg1=mÚ´Òó�;P„GGG:räÙ‹¿-,�*Ãüñ‡ô6¾ÿ¾\lÀmøºxQ�¥öðY Õì·Gvãž!)­QÑì.§¬½F ¶Ý–íê”r£¡­<(¡ý÷è$ÿˆ‡ë~{¸Þ¸|&y>¬Ab*‡¼V�繡Ý't("Ee®ü@Ÿ=ö:Ôý.|ÿç‚ÚÓR™|©•¯˜R]<¸NmÆ©‘¾Ráœ)hqÿ²ê9Þ1äÞŠ½›æUûá0ýfž–m¸ÿ9¿—ÒkoL�ÿB=¦Ÿ’ ¸2{æOø­ˆž¤^'â@+°qä†òåËV1éø“X,Ç¡§ÙøA¾"°›ÒxõêÕ4bÄYÕ\1ß”þ£ªG¯áÅ^¼`¬ÚîˆEKîk†×™ò–Ü[ ÇçcK~ƒëÏ”2­ Ïõù÷GÂb�Z1N§ä{h?eûå»X|uÂùÛ�E|õKö­ÁË çäoXöz7öo ­ Ï÷ä"ò€c†Œ²5/>Ù¹½ºP¸Ô¼ERðWæÂ[Kï«Ç;´V#Ý‹ºÀ)dïÚ!×(ãò}{WÅ2Ê¡É[ÝÏ‹JÃ2Ž|¡Dt™5k•+§¿xÁ°ß·ø^ÅQ^ø^Ì n ÿÆÜ½{W~ÿ'L˜ #²÷džƒ%÷UKïé† Ì9¶Æ=ÙÿÍGé!þN,–s ãf÷*¥—®„#Úü2öñX¼ðlÓ˜JċʌYLÜ“yH�c,* î[OøP‹*Y�M9TÙìM7i憲<"A>Tão>~¦£Ó-ݳ�±í‹ÿÞÑš5¹(P@~gLýí«�‡²oÉ=™ûPRÙðþ¶mÛ(S¦L¼kÔøßÞŸ?¼—çˆß¼ÚgüŒ†±ñßiåÙ�,À €€€€€I È›„)f+)Œ9L*,|Æy^±ßƳ›Ì�®´ ¦Ï,¥¢YJËÐïÓ÷Ž¥ gW(§)©C2ZÕq·ø‡­N\åðí�¦——ùÔ•JZ/y¥Œ·C7ô$ÎË®XÛrÝõÆVʵۨä9ýø¦³É5é÷ðªwünÒ ¯Côsér †!ë¹p^ëµ”-•;= xD?Ï­©ç‘1ãçe”;]íô­º‘02%țЉV�gò?Ô!öðf�×2‹–K¡PÛ ÿƒ•¯‡Ú²NÕ=‡Ã½,yjŽ0Ì÷Ö¨,½ã9g|¥M;…W¿ƒvêôdÏ.º8\çe—¶²H0LßûT¯²ûÖ’hÊCBö˜f��çÁêü`µÊö}d“À^}ø˜Ex¥¹wê&G±ÖÜ ÅÕœ:SÖŸ[™q%ºªæp?7 �êWlò !<×ïñŽmtiô0YWyS¹q®\¯…óåµeoÝŽ²·n¯wí|pøÇ(Ðç�,/·b�ú€\ä]ò¤³t}pÞóÓ&˺¥æý#˜ç‘ =vU*+?×JYÁJ/ÖúÌN‡=ûY`ËÑî7=ÑA+È'yÆË¯ÛÊ‹ý`“úÒË^»˜EÃP8È.ú?ׯ—½ƒå8$T¨{¥½%[önçðÙì™Ã^s,è½€|OfZö^ϸ-?øçhìϹØÙ³Þ "ö|gïxÎÏIãXHWÂܳhÈâ›öáý‚ ¨xqÝ÷”½ûß¾}+jry6>?eÊÙ÷éÓ:±U8Gý’%Kd=^4 xÐsNzÎGÏ×U¤H9G^LÀùå-5ÎÞfÂQÙM鼩hnïÒz]rès”µf#ò»sŽw¶—âÁ•ßwÒ§à/”%Mb)èÛÇ·ÑVy‚¿Ê:?¾� �™['L�8&þódµ‚<{ðïþ³q¸yK­õø£2B_÷¹ùu¥§¢Ò§V�çè»'U åÅ^½ÏnzôüeÞx[ ¼ñ yörìò×I5"‹£ÚVß+e\í6Ï,/HQšÖ3å¸páÂÄß%Ž¡,Œ1¥Ý»wï¤Wü³gÏduö�çï#�9={ÓÆF3W�·ä¾fxý‘ä û0<ïÞbX—�-ù j¬?SÊ´‚|ü$I©"ßã þV›Ò�a�SÝ:Êûœ.åÑQ=ÑH+ÈçêÖ3Täío1þíË¿�µfé}õ@ÃÚrá+ÿî­ºë€I÷_Žjs¼}«P¡õµó2¶Ÿ²hqâßCŠqˆz3ÏÞºìÁ®xëæÈ‘C.’ã…fá§€Q¼k•ÅeáÕWÎYrOæ>,¹¯ZzOW®!2[KïÉ<æøWhéî;rxcÂ1ŸX%r¬�ZzIÖéT?uªï.÷ _bâž\¹×NòõÈØÒÉÙu"¼‡ÎÙðØ‚|ß9œÆGvýsÕlÔ¯ù÷¨\ÊxÖâΞ´¿#ÿþûoe³·‘½'ó@ü;”°qÈüV­ZQ&!Êóïj^(�ØJééäx—ùpñÄŽ“äMŒ òõ ÿHݪ„ï™ÜsEkºôðŒ:PÅÜ5¨�Èã.íÛÃëI;‡ÓÙ{ÇÕ:�ж Î•ú©ÇÊNlämEçU�öHowenƶ†‚©ä_ˆ\Χ{u‘mR•.KYšþ¤¶ÿJßœ•°Ð,Ú'ÉžC­g¸cÉÃPs„aíÃÄ´UkPÁ!:O6í|x¡ÁÞZ•Å ùFCikëš³¯<$M’Ã]„ç^JG &ž{¦šÒc±eÏ ‘ŸH„*=ôc#Ùu¾~Õð±Öš»V\åÜå7n�Tîls¸ÞÛ<N]PiË.½Ä|¡Ìzo�ŠÒ3?.òæp»8l�š«¼Üê ¡ÂþòõßY²�nÏÓ �…ÇM¢Ôe<¹X YÏaÕ‹L˜"ËmÛL—ÇŽ”ûZñ^ cËùÖ³·Ñ-:’•¬ðb�ÏŒŒê!R\pd�/?ÉY}‘<ø{ÀÆ!‰Y PL+ȧ«^‹ ¦œR·üwˆÿóêÔ~_Òת+¢^< W—umeÔŽ>ýCyª[¸ÃyÑGŽÔ½GJW�7&Î_ÉyÓ#²­[·?ðgc€šjZïsy¯<„Ô¶go£2eÊÈ,*ûÚ‡÷ìéË¡îÙØCŸ=ëµâ=‹ëœƒž°ÐÁ!îá€sʳÇ!‡³u¿eªKOvÒ…(Uú¬7`¯êU)ãÐéB��óž·ÿó˜Ü/_ЕZ /oÕ4Bþò=ÞjuöÂgo|cÿyZA¾[£ÜÔ¾NNcÓ ·ìõ»`!"¼'ö’S.ýŸ�^’7da�½Ó òuKg 1í +§Ô-³eƼ8àôœ:j9ïhùe3Êc%÷-G"ò‹¯W‹Ð8ÞØÖ¯_O9sšíÊ ŠG�«««Œ ¡”›²ebÍš5r.ì1«˜%‚JQµ5W�·ä¾fx – òæÞ[ ÇçcK~ƒëÏ”2­ Ÿ£}GÊÖ²µ)Íôê¿y#ï©ö_ùù}wÕRy_äŠ,zóïÅ´‚<ç­ç°÷Z{uõ2�ø­�,2¶¸ÏÒûª²È�ÈÕµ§ð„oj’(¯�cd÷ùžóJx¿*ÆßÇ G‘á¼ï/¤ãÐÙÎÎÎ26G€1Å,¹'sÿ–ÜW-½§›r}aÕ±ôžÌý¶uˆ.ÞÑ¥ãEv¼ Lµo7§ÀŸ©Û´“²˜Ó©pZc÷dm÷¾?棟„'¼²ÐØ#*³T�׆Ð/êž’þîSZ¤ }sµwþÝX©R%yY¼�6M?’UD׫=oÉ=™û9s挼'oÚ´IÛ­ü­Qt ½8°ˆy‹ðEOcò¦s6&ÈÿùãßTH„_ÏϨH/Ÿ‡W%Ô¹âYË񯮼‡íÚ“±E�ÏçVˆ¦þ´X;5£û†‚|Ù•hxC]nCnÐvA#ºûü¶ÚvDéT&GEõØÚ;1!È»wìJY~jiôR8ç9ç>gÓ ò÷ÿ]#ómF¡±ÏÚª–< 5G漩§{u•C‡å­Ì'�åøbÕ|•ûµS�ô>§ àè,JWÞ&¼s„èΡñ™ _ƒß±#”£ío2lé)6Ÿ­ÄŒ¹äR°�Ü·Öܵâj²¼ù‰ÃòGÆÌá.½·Ete1‚±ñ”qA�7‡›¢•CV?xÜèÃç'{ET!ܳ)aèy_yxÍ¡Õ=Fê¼;´u+¬ßJ‰R¥æª¤ð“¡Ý5^aò¤…/–|f85ƒ÷Òäç›Ãè†eœë5O¯¾êi­ ÏB †vqè@z²o·\àQãð)½ÓZá@ï„8Èݳ�^ŠÃó–sHÌéÓ§Ó!–°g<{«sˆÜß~û-‡ÿ3fÌ 9sæÈvìQÄyjMµcÇŽQ‡º�:u"þߘ±XÏB{í?®[p§}xÏ-Ù;˜M©ËⅲЀÏ!C†Èóì!Ï^øŠpÀ!î9×.›ÖïÞ½Ä'?œe/böŽ7 ¹/+˜ùrîÖ º–›Ï�’ô-£×C�þ{dÎVmaµbéhR'Ý‚´{½õrµjë…µo,ºR7&þóØZA~ž0J‰h¦Ø{xÍÁû2_¯ß«á69:£±÷½bZAžðBCãÅ,ÐpàË‹ôShyÃvZä§æ•uŸCÃs†ÇÚüí‹/–Q ë˜zÌÞõœ š½g‘ßÔ¶ü9çÏ¿òoö¼åϽ»»»š³ÚÔ¾¢«ž¹‚¼%÷5ÃkЬ Ù{‹áø|lÉoPcý™R¦ä�E «�Ï"òŠÏ¦õÄÑr‚Ä"·ðŒkòoNÅTA^|«8*r•ö¾É¿G³µÒ‰óJ{íy¥LÙšr_ÕFøávöÉ’Qrñ7iž|Ä‘€œs‰¿¦¬¾Q5cÛ¼ysâè5,rÊ6§Í÷%EEXÝñߎêÂí¸.{Üšj–Ü“y Kî«–ÞÓM½Fcõ,½'sŸeºlSsÄð,s'Ú2¶Ša±<މ{2{÷³·¹b."‚L‘ö¥@V*”#9å̬͜�»%‚¢€ ·&Ek>©äµB6?¤öHâª×ÞØÁð/Šˆ¼ë��¢ØxøÏÑ^Ƕ)µEˆø¤Fç§-d1¾«ÈÃ{õÞKµØÅÙ‰Ò$OD‰ê<ý^¾!®ÇvpFq.£T+ÈÓ¶0uo¨‰.ð±GE�g­íÒÒKus‚<ç^=¶:åõL¦×ÆØ§QP‚°'žâ™g¬®¹2kÍâ‡Û]²d‰¹êzçnݺ%=nY¸ãp¸üyá-ÎÎÎzõâÚ�µ‚¼=÷5Ãk·E�·çÞb8>ÛóÔX–”iùª"U�ÇÇ\îæÚ²bÀWò·’RÏI,øà߉NâýÆúü…‹zlÚß�|¬òœ¹Þ¾#\¤gÚû&GÚáˆ;ZÓž×–ó¾%÷ÕïÃå=ï5«ˆ{ì5–R•Ð-D5<ïˆcŽóçŸÒ¯¿þJïÅ"AWÍB{¾›2~ѨQ#yZ{3U_[nÏ=™û±ç¾jï=]{ÖîÛ{OfÏ÷ò}·ÊaÙ«Ú¿Gˆ™º4„qŽ/:�ú±�éÕ�k”@¨먹kÅUCTÌ‚K¹s8Ù]5+ÉüŸìíÏ^ÿÆL k<ä­áv¸C ¼w—8gj½=‡�]:=ý÷(�1DžÓ>�‹‚¼¥×΂ÀÞ¦õ(<4TFÈ×§y6nN®Â#[±¾žsʲöëPA^¨€…„W<ž/O�,ÇóÈ–�*-^é�Å6²C3Xøfá™-{öìÄôæŒ=v8d<›6t¼¹6Ê98Ì=›¹üìmÛ¶¥«W¯J¡ðܹs2ä¼½ïí”ùÛºåß%{m–yÞÙ{›½¸�Ù‹×o©Ê×:þZA~Φk4gÓuÙä·þe©n™ÌÆš[\ÿyrZAÞP875ùٯѼ-ºkgϽoÚÞ{iô<÷¾[|–þ>rOvaد#yìÇt,&Þ� hüòór¼œ“Ò_ßWyx]L]‚,çÏ/faã”ü~´ÅXTçE(l¼å‡÷–G´˜6M·ð®yóæ2­ƒ¥mc³žµ‚¼=÷5Ãë´V�·÷Þb8>ÛóÔX–”iyCáÜTû›‹æÑ­eº¨F)„W9/VcÏr퇕SÚpj6Ã~*ÈÛq_}H÷·n¦—"�̳3§ˆ—*æäêJUV¬!wϬ²ˆî]øñ{½…}J]sÛä ‰ŠíMVéÖ­qt6Ž®ÁB»)ó÷÷'NŦMÉbª¾¶Üž{2÷cÏ}ÕÞ{ºö:¬Ý·÷ž.îé½u÷ô\™“Òæk[;½ú±uOæI°È½áÐ]âT,ǯ<¥ �‹Ûø‡áß$fË‘Z‚Ë�™-‚|èÛpúÿú}]´¦É½KS“ŠžÆº—eŽæÎ©îß¿¯Fcâ4GÖš=÷dKYÀû»wï¦Ì™íû}ÇýÀ@@@@l#AÞ6n1Ú ‚¼å¸� ò«„ ŸÑŒ Ͻ†e\ï»(ò'rILî‰"ÿÃÑP�ïQm u¨ÐËìEŒß<œ^Û©Öé\©u­Ò_ßzz�z/i£žãKùº…›Ð·�£~€ AÞ6AÞw�¯ýÃÿäëÂ!¦9Ô´½¦< 5ÒÜÔZa¸ôO¿çµ7eâôßÞÝäéœí;RþþƒŒVÝß¼!…>ó“ù59Ϧ#,è��|èË}ñTÿ‹ç)S­º2d}¸ç¾§^ ™C=u‰RôüÜ”<ª´h…:´£æ‚|TÜžžÙ¨êêõê5iwvׯAïDîÝOM�?=t ù�<./µîîCF#JølÙD—~þQÖá\éœ3�-> òÚ$yº÷&Nahü>?ùuY�‚¼g“æTdä9Σ‡Ó“Ãå¾gãfTä[Ýw™,ˆ¦?ì…W£F .—óβnÎV¬XA?ÿü³¬Â^|ìMn©]¼x‘84/[×®]UqÞ°}Íš5ééÓ§”%KéÈçí}xo�p`8?Î/Ï^úZ+\¸0qØRSÖpäºÿ$Pž^>ª •¡a Í” ¿ý„�˜wFVÓ©µ¯•Ó°©UDZõðßA¾é¨½tçÑkJææJ»~©GIÅÖкM9J§¯ûÉâèä[UËN?t+!Ç$òï‘ ØZVÍFã»›÷šõõõ¥:uêÈú,®±Èf‹qˆzÎGÏöý÷ßG†°Ô8�Æ dõ¹sçª"^TíyQVðÃÕ„hÁ|xQL˜µ‚¼=÷5Ãë±V�·÷Þb8>ÛóÔX–”Ù"È+ !8ÒL�u[ÈED&1´¿"ÿ³geqt òŽº¯ò¢=¾'ßZºˆ}îÉykSï„¿}#uV6¼Ì(�ÓW­N¥&™þX³f�š‚eÈ�!Ô³gO³}V¨P�^ ¯~Nå¢xÛšmðñ¤=÷dîžûª½÷tíõÅô=™Çnôíº÷8P¦H1µÈN;Gsû±uO6œSÈ›w´ÿìcš³ùš¼6>ߥ~þEaꑎmäGÎ?Mÿ×Ý[:Šößv(©_ÃGrçHJ›6éþÍ‹æ²gÏn8\”ÇöÜ“y1 çŸg+T¨­]»6ÊñP@@@@ ú@��>¶ë‚¼å(mäØ4”]�£\)O šÐj¦Ñ�CÞÓþkÛ…`_›’'I©Îä­£iÏ]x9>Y==Ûü—Hõ´S¶�¦Ý—#ÚÔ.؈F7ÕåJÞ|v ÍØ­©”6ä¶o9�9ç3g³ÅCž=ÇÙƒœ-CõšTr¢®/Y`ãŸã}zЋË‰=cêì: C_ZÚÕ³S'E^ø²:ç»ä¼—¦ì�ÿsÚ×´¾|äÜñF›�sg*y=í}xo�p '£ùséÒ%úâ‹/4%$£ pøS¶t‡ýú—î;´E•l2¬a]S‚üÕ»/©­éÊV§tfš6@—[Þ°½¥ÇÃæœ¦�§‡Ú=»¨™ÜZÚÖžz¶òeûl•áè åHA�«ixµ[û›�1²¾s½Ü4¢}9‡—�o©åÿöÑÓ—¡òxjß2Ô \–HóÓ° ϼ§§§ºÐD{Þ’}á×­['«Z+ hCãžß�”{÷úõëenSuµåöÜ“¹{î«öÞÓµ×Ó÷d»ÿôãtèüc9 NCÃéhlµØº'›šïٛϩó¤Ãòtµâè÷ÁLUUË­äW캥¦è)“?--^IDE2ýÛSȑܵbúäÉ“©iÓ¦Ê0oí¹'sj¤ºuëʱø³ÄÑs`    ±G‚|ì±·xdò£’aÝëNÕy)­,ñ�ßuMÜ¢ ñ©´«–¿.µ.݉2§ÊJÁB„øâ�¿wš¶�_O¯C_Épõ¶ÞОE«þ] 'tIDÍJ~A…³” DbŸ-Æ"”,IrµŽa¸ynÓ¾|wÊž&7ý¾ï'zöú©Z—w Èëá°éÀ^Ažs@íÚ‘^ß¹%ÃdVœ¿„R,lt.ìù$r/&Ë›Ïèy¥ðüøïdu>æãœkÜRÓó<7]ö'Ò4éò¥nœE”²h1½¡®üö3ÝÛ¨{Ÿ¯w?ÊÕ¹›Þy{·o­zq?ìÏVÙ´gù8’W±ƒæî(AÞî·V,¡› æòeɼpBk—žD÷·ü-‹>5AþñÁý2o+_\š2å¨ìo³ôˆú=¥ƒíZÐû·oe8÷šë·’³››dŸym$�¬M[PáºTòÂÄŽ@Ái ”\·1%ÈóøÏÿ;M'÷—!pYðª¼l•Œ†¡Ì-:¶ì�Ç¡2Ù”‡ú¦Æ áþ›4iBOž<‘UX0gáÜиÞÍ›7õ¼Æ9MË–-‰Å¶•+WR‰ú¿ ~üñGZ½zµ<Ï zõÒ‰ ö>¼·G8�“Ñü±åá?ç8¯;l—Ì“šÐÕ‰XÀ­U2“¦W"S‚<‡×m=v?y=�ÑŸWý¯áÛ�‡€õ~H²Eü–1¬Ç x�ÛÚjPÁl‘1¶qı-‚¼â ç$‰ìùµ¥O•Do*S×\–9p•Âèô�× ò<ÞÉ«~ÔsêQokrOìB&Ô$λkÊÆ�¯¦{ؾ};eË–ÍTU£åüùá‡÷¶ŠúZAþôéÓäöñ»Üè`šÂØä¯Ï™Iwþ\)gTyÉJñ›-¿fv‘wí¹¯öÆyÑw ¡™�#ñÂ5sfï½ÅXßöü5ÖŸ%eÚß|†žì¦Ú+¿!9�R ñ[!qºtzUy/XP̰_G†¬× ò<ž%÷UNS“$]zezzÛ�Ç�è@k�XÇ©°8%Vtš6 ¶%‚üüAS¦èæT±bEš3g¹¸¸Dšâùóç¥XŸD¤)b³çžÌíí¹¯Ú{Oçñ‹é{2�Ë‹ÚXHg«ZL'Z›ZËÈ©S8‡<ß'ŒYlÜ“û‡Pƒû©27_‘×�¯°qŠN••Y#ÈŸºæG½¦#þmÃsX÷CMJ™4aTCÈóŽäΑ˜xai¸X”Þ¨Q#5ú“E•ì½'kù®]»ÊTN–Ž�z    Ž'AÞñLÞ#yË‘Úê!Ï# ]݃ÎÝ;eñ`œ?Þ˜ @„žŸ BЛ³±Í¦RõõÕ*¯ï¢ñ›†©ÇQí@��ŠPÔçíäym¨içĉ¥ÈÊÞò,¦†‰°ã�÷¼é‰"}DKÎã(EH3SÓ>Üe�,k‹V”¦tYéEê"Bs&ϧ­�uñA„ƒ>Ú­±—5 ìF?‘ÈÇΖL´åðžŠ=:°�Î}§[!ÏåžO©K•–áÒïnXK·W,•U9×µVUÚÛ³UÂÂr̭jHZ->_|ÜDb/y­9bîŽä­á.½¶Z6¢ð�áyçD£ÌõÐû°0º'˜{-]¤^æ§&ȳ’¤]’©nñyùJg– VÈáyAQù9 ÉÉÈÃue~ön¿ùæÚµK÷ðõÂ… FäkÇØ±c‡úàÐUD Eá-ŸI>äFw|_Óž3¾ô÷á»T$gJš?¬’¬kìÏæc÷iÌÂÿä©\™’R¿æ(kzâ…lYÒºQ"Wg¹ïÈ?¶ò#æ�¦í'ÈiTžz>·dÞÔôDˆ ‹ϵ¼õ¦“‚<üÛÚË´d»nq/’X1º ¹8ë8êMLܸqC.Háò>}úÐ×_mXÅìñ™3g¨K—.²†zôÐ_Å'AþáŽtyºÅ5xdÏ!ºgñ$'‘bƒ-‰øÞqN¨[X+ 츯Éö¶iFÁ�|åbµœ_v¢t*QÂäb‹Pßøþ¡qí½· -µ¿¿¬ý j¬?KÊläÏ/¢éìÕÝGxñBÎ/:RÊbÅ(Tˆ^·W.S£ñ(ãǤ ÏcFu_eÿd¹rSÖ¦-ż‹S’ Åoï×ôì¿3ò~üêÚU9uN%Ã)e¢Ó´‚|ïÞ½‰§™3[µjEÜŽ­hÑ¢ò�?~ùo•;wî{Îst ^|—1cFµ;>¶åžÌØs_µ÷ž®^€Ø‰�{2�ß}Ê:uý™œ §¡Òº åÍš\,ôw¦~AtÙû%­=èMÿÝxF«¾«FÅL,¤‹�{2GŸÉ뙜ÚTÏN¥Ä=5S7  #ËùžvÙû…¼.NÇÂiY´Æ‹Ðž¼Ñ‰…q·h¥ø öôÛ*ä™.bqZâ„Î2´?ŸãEƒÕ†£Ì°}×¥8În|Q`bñ[‡£š£¸s¿¤}ûöQbñï^ŽeéB5nkï=ÙÇLJê××=w‚ ÏDa    » ÈÇ.‹F‡ o&YÉAþ�ÿ=³þkòñ×èjjtS‚üûï©ÏÒvĹßM™¡ .¼­;ÎoHO^‰qÆañ_…¼Ô+… ¯‡Ã¦Gò<0‹¨œó‘=æÍYš²å£ä¹ý‰�}DÞK�€¡íÏThNm�g§OÒ™C¤À«-çýHá²ÅSŽ3#¿!ÎÙjÊ8ok‘‘ÿ£, ua�MÕ³¶\ë…fÿÍóg´¯YµK£^j˜»£yž¨5Ü9êÀ•iS¥W²z‘w8UÁ‡ð÷ò½ôÉ ò⟟=Cg¾ªzƒ^?s‰ ³¨Þñ\Ÿyžÿ¥Ÿ$Ÿ-›xWgB\áPí¼˜ƒ-CÕôøð¹Ó‚¼ ƒûUwâl9;t–)<äA4üÑzî8p€Òx6RëÉnì<—qÈ]CAž=Š8üî¡C‡L5aK�é‡~PCörE{ÞÛ#NÔÖ‡ÿÜ‹ò3Ö_ŽÅmÆa[‡Q„8§ªÖØmžøŸ½ÊÌY¥ÂéÌ òáá¨ùÿöJOzcýðÃô2ù#ç¸7Vך2[yÎÑÛzÜâܶŠ1¾6Î-Ï¢Â!x°Å´ ÿNܾœpˆ8­[�†yhH[ãQyø|‡ˆ½Tm [?nÜ8)ª±çëÁƒ)eJÝÂ>î×caïØ±cä$žñ¢c´Æú‰myN©s¸S;b±Û˜•Ÿ5ŸR•(©wÊÖûš^'|wï óãÇ;%S¸p*­ÙsoÑö£Ý·ç7¨¶K÷mäƒ|î˨œw]1þ½Ê¯/2Mš+�\ôÆÇ1-ÈGu_UBîóÜØø··‘!0tE"âV!™ºÇ9Qâ�%Ñ³Ñæ–nݺµ¼F5ÒÕ«W¥pÿèÑ#³Uy¡›V�·õžÌƒØs_µ÷ž®½Èغ'óýiàÌt[,ˆSLüŒÔ¾e”b³‚|lÜ“•t0Ê]]œDDCñoÍÏ ^ÜÇ¿XP×/6¨?\UI[nj¿xîTô‡ˆìÃöJˆþ•úo3UU¯<[wúgJ]½2>pwî‹ï‰|od›4i5kfùb{ïɼöË/¿”cÛ²HO6〠ï0”Ñ×yËÙ²°]ÿ—Râ!r„8úWÿ½”6©ñЀ†=‡…‡ÑšKhí©eô&Ðð´<Ι6/UÈS�Ú•íB‰�çqã¶[ÎýEǼÐó@?zôŒÞ¾Ó­ÐæNÆ·œ!rÐ×ÔëÿŽßM»q0ù¾ðQËS{¤£ Çç¸~¤–/ëµ™²¦Î©óÎò£sÅÿsÔ²†ÅZѰ߫Ǧv–™M+�ÍWO·(ý%}]{”zÜoy{ºþè²z<¹Í*—«Šzìè�ƒm›KOYC¡ÖÑãphpÎV ÿ ÊѾ£Ñ!ŽvïD7u‹+Lå2})<|/ÿ2™¼nFz:â,Â5²—S–FM)m¹ FÇÐòC¹[ËÑ“£‡E˜û»ª¸ÎÞ«,ÕV5ºÏ‡Eç¹p¾uÅÊü:3òøâiÈíU+äxڛ܆½ÂŠŽùžR)ªtá°-‹“ü ™�CásH|­)ï.«·û�ž8«Ö³sî2körãéWñS.‡H{6iN V½•s'|%¬gª[ŸŠ�� ‹:@gÇè^³Z[vQ¢Tº°Ú‡DØû ‡(§ø<çŸkGš­×Ο-¯ÅóÉ{íjU0ày±b–�(ïWýhw½Fß‹�w½épǶò2˜MŽ/:Dº¤ó?oÁ=»d”‰‡Nè�צT0Å$PˆOÿöèDïDäöÄ4—~C¯sØ+]ÉÏ^´ü�Ý;~ü¸Ü•ßCÚ6ì߯_?£áìYX²d Í›7�Bøú4–5kVùP´xñâšR¢S§NQ÷îÝe‡ûæzl-Z´�!ðÛµkGß}÷�,c/àQ£FÉœ+›=žºví*½™8,éO?ý$ëíÝ»Wz÷ó/H�:µ,oР±ç·6l˜,Óþaá£M›6Ú"YwøpóQx”G.>¢üòala™ÏqXöÂSmLÇbBd6þ;æÒ�4~ù9º~ÿ•ÞƒsnŸ$‘³ �Ë9ê+1ÿûŠCèÿ}ä­;x—Šð´ZÁ{ù¨*ÄÞ~Ž6mXÞ#³Y¢–óÙþ ®ùöÈïf=rdHJSú”¦ƒ^ ÁoØ/ %ÍF‹ºÔÏé²FÌ;#¼ð}dþÚ ‹›ë�¿ÿ$�ŽÜ#˺6ÈCÃÚEÛï>~MmǤ`±h€çe.¥¿ço×Y³fQÍšú¿9õ×°@Ç9èCÅ÷VÛ¶m‰…kŒCó6lØP~Þ¬] À õ Š‹¬·ë ñßÖLÊŠºœ>ÄgûV±ˆêoù[TûÛ¨üï (U1ýÔܵ-÷5SSâß“w×­&¿“'dÄ"e±gê’¥©Ü̹zÍì¹·èu¤9°÷7¨¦+‹vµ 4koÛM ?FuŠª1çZ¿¯·çpDû�{üzjßJFìáB{ï«W§ÿ"ßçJT �ÃÊ�‹˜SÖ­)W§nzQ­´u¹Ï÷È’%KÒ[‘.(C† ´eËrw�ð865§Š™:uªŒ„ÁßZã¨3œ2¦ÿþÒX{Ζ{2·ç{${ Ûr_µ÷ž®�lޓ߆½§ßÿ¾Jî»#î£Ï9”ùåΜLF³éT/·\@¦”ncúž½yA˜;åñîß¿/u™Û6ÕÇEQú TxN7„°þÀ/˜²¥w§\âÁ½¡'š©Ëdñ—ÃÔßDÉÜ])c*7"V ;oª]|-ç¨w…7¢÷£×2d?{î±w||4;Ï"V¾|ùhÆ ráHT×Á"Û²eËäâN/aÉ焽àW®\I/^¼ ‹/J1ŸÇáÅ+cÇŽ�jÈOæ|lÝ×>×{ /Vßë�÷ï’Kâ$25”65S\cq.ù‘¢€#C9¹¸R’Œ™ˆÿÍà"vŤ)¡´yLNïÂb!GÅà39rä0;¾·>xð€nß¾-ócó"n“ðcšS�qO¶ýž,þù@,Tó"° Ð0Ê�2 eNëNiSDo4S¯¥¥åœKþ¡ðx÷{Jì%Ÿ9�HÍ&ÂÍ»™Èwoi¿1UÏÜyᦲàsÆŒ2STó·åžÌ}N™2Eþîåß¾ÞÞÞrNýÄ Mùw7 @@@@ ö@��=ö� AÞbT¨   ‡ °·ú‚ èÍ›7ê,ÙË�E@€€ã\¹rEŠâì™7sæLªU«–ÙÎYPç:üÙ2dõìÙÓl}åäæÍ›iôèÑʡܖ-[–¦M›F)R¤Ð+Ç€@Ü"ÀQZ8šÆ�7ô&¶téRâÏ1 @Àq8r§‚á…r7n4Û±­÷dî´^½zr±Œ2G®àûºaÔ%å<¶    1G‚|̱¶y$ò6£CC�8FàåË—2l§ŸŸ={öŒØË�Ã\Ã>OSDHÛ=ÿùÚ|ñ‹†W–!gmîànÈb[XX¥K—Ž8:„9 9¸•spªKs¿sÔ ’ŠÜÝœŽ!{öì”;wä�ýæÆÆ9�Ø%ÀáØ?~L|_ ¦M›Ê{sìÎ £ÇÜ“£�:GzâÔ.|UR"™ÍÖ{2÷·víZâÔå†#J•(Q‚’ˆ”0�Ø'A>ö_ƒ(g <CÈú(Q¡€€€€@<" äV·uÊëÇפüY“ÛÚí@@@>À=oˆ>ä£�­Ãz† ï0”è@@@@ Øv܇.ßyaóŒz6ÎKi’Çíü¹6_‚€€@ À=9ac(�ÏŽùxð’C��/¦              ȉ‹‡äãâ«‚9�€€€€€€€€€€€€€€yäÍó‰g!Èlj—“«@�· WìT† ;Ü1*€€€€€€€€€€€€€ØC‚¼=ôb¨-ù�a@@@@@@@@@@@@@@À� È;ftuA>ºÈ¢_ˆ>ä£�­Ãz† ï0”è@@@@@@@@@@@@@bŒùCmû@ämg‡–              [ ÈÇy+Æ… o,T�8B‚|y!ÌM‚¼9:8             q“ù¸ùºèÍ ‚¼€€€€€€€€€€€€€€@¼ A>¼LäãÁ‹„)‚€€€€€€€€€€€€€€ò@ââ!ù¸øª`N              `žyó|âÄYòqâeÀ$@@@@@@@@@@@@@@À*ä­Â;•!ÈÇwŒ              ö€ o½j A>†@cp ò„]]A��.²è@@@@@@@@@@@@@¢�ùècë°ž!È; %:�#A>ÆPÛ>yÛÙ¡%€€€€€€€€€€€€€Äò±EÞŠq!È[ UA@@@@@@@@@@@@@ Ž€ G^sÓ€ oŽÎ�€€€€€€€€€€€€€@Ü$A>n¾.z³‚ ¯‡              /@��/ùxð"aŠ              `@‚¼�¸xA>.¾*˜€€€€€€€€€€€€€˜'AÞ<Ÿ8q‚|œx0 °Šy«pÅNeò±Ã£‚€€€€€€€€€€€€€€= ÈÛC/†ÚB��!Ð@@@@@@@@@@@@@H‚¼aFWW䣋,ú�è#A>úØ:¬gòC‰Ž@@@@@@@@@@@@@@ Æ@��1Ô¶AÞvvh              ±E‚|l‘·b\òVÀBUˆ# ÈÇ‘ÂÜ4 È›£ƒs              7 @��›¯‹Þ¬ ÈëáÀ€€€€€€€€€€€€€Ä äãÁËA>¼H˜"€€€€€€€€€€€€€€ o$.B��‹¯ æ             æ @�7Ï'Nœ… '^L@@@@@@@@@@@@@¬"AÞ*\±S‚|ìpǨ              `òöЋ¡¶äc4†€ ï@˜ÑÕùè"‹~A@@@@@@@@@@@@@ ú@��>¶ë‚¼ÃP¢#ˆ1äc µíA�·�Z‚€€€€€€€€€€€€€@l€ [ä­76ùG/І3¨³Mé–Š:Tì­c@ nðõõ%///rvv¦Ê•+Ç­Éa6 Ÿ�ÐÐP:yò¤¼îR¥J‘‡‡ÇgÇ          ðy€ ^ÿØäÏÞ=AÃÖôR)¥K–�ÖôÛ£;r' äù½~¬v™Ú#-¥ `qŸÀ¿ £“LŸ2 ¹º8=‡Âè!СC:þ<•)S†–-[=ƒ ×O‚@ø›P b)›sâÄäœ(ñ'q]–\DXÀ+úðá%H�€\“%·¤ êØH ((ˆêÔ©C¯^½¢.]ºÐˆ#lì Í@@@@@@@@@@ ~€ ^·ÏE�_pp­9±D}Eš–hKƒë}§ÇÆÎ‚ höìÙrèíÛ·S–,Ybc1>¦ÏÓ ºìý‚®Ý{Iï?eH•„ fKA%ó¦Ž4—§/C©æà‘ʹ`þ°JT©p:£çPèx;vì aÆɎW¬XAì�ú¹ØçúYµçõ½:ýº»þ/ÙEö6_PÁACíé.ÆÛÞZ±„¼Í—ãV[³‘Ü2e¶ha´§a-µn�ûÉ5iRõ;Q¸ï‡®=º¨«(5ÔÊ߈\œ\L6\´hM›6�\\\hÛ¶mäééi².N€€€€€€€€€€À§F‚|kÖ¬Ñ=d¬ö÷q œq‚î(þ ò›�ݧ÷_Qâ„Î4°UA£×— èaÆÄ!ëË—/O‹/ŽËÓuøÜ>·Ïª#^�6•înX+»ÊÞº¬[Ìሾc¢¯¥‹Èkq„ ïžÅ2‘—½ã÷4¬­N±Îö}ÂK>™zŒóÂÂèÏ­ÉçÅ]µâš^û(•{õØp'88˜êÖ­K/^¼�[ça          ð¹€ ^éø(È{ûyQ�Å-Uº®Î®´køYõØØycTb®ìÐùÇ4bÞi }§š2iB±¨‚èeà[µláðJT¡�i¯÷Ž? ‘óOËúñÉCþk±áÀ¹Gä–Ø…NÍk¢^o|ÙÑzÇÏš5‹jÖ¬_¦î�yB�·#y3òÖ½wVž˜K+OÌÓk• Ï•ýõWZ²d 999Ñ®]»(S¦Lz}à@@@@@@@@@>UäãÁ+›‚üÛwoÈÛï–JÉ-‘y¦Ê¡›ÚùTùÇ�Óýû÷åe–(Q‚\]]M]r¼.ø,˜ŽÜMááB}Ö¤¢'õk^€<Ó¹Ëã'/BhíoZ¶ãÍ\‚¼¤·þtëÖ�N�:E)R¤ C‡ÉÐÐqk†Ñ;›Ïå³êHŠñ]�yú„B<�HR)JN~?ÃCÞöwÑ}o껪 ±—¼Ö,äoÞ¼I-Z´�Íz÷îMƒ Òv�}ød @��/ml ò¶âùTy[¯?¾µ¿ü¼ÜyÞíjä ÿu.N"-p${àDI\)…GÂHç”xÈ+$bnËß®ž­]»v4vlì¦zˆ¹+ÇHöˆï‚¼­×AÞ6rè ]×�.?÷ggÏ�kÒd”¥acÊ\Oÿû>T\ã½MëeªÖ gñé»{'ùŸ?KáoßPŠ‚…)]…J”VüoÊÂÅ÷ó]1¶1ËÖ²5¹¸ÿ~6¬ŸyG½_ ØrüÏ¥õ4cŸî{fR‹94mïxò{ýXve© ?eÊZ¹r¥l³qãFÊ—/Ÿ-S±¨MðÛ :uû¿u˜¼ŸyÑ‹ z%¸8¹RÒÄÉ(GÚ¼@O^ùRà›×ä!Ú¦H’’r¤ËKų–¡:…S’„Æï MÔL¥cÇŽÉß Ä ¹^½zÑ»wïhíÚµôï¿ÿÿnH•*,X�:tè@žžžF{òññ‘ß³·nÝ¢Û·o‹H8á².ßrÄ‚dÉôï�ÚN¶oßNwîÜQ‹J–,I+VT�±         `ò–qŠÕZ–ò3vÿH,ʳq¾öíCO aÑ´vàÚNš°y¸z]Ó;,£¢ž¥äqË™Õèe°ÎëM­ðq']² ´¦ßÃbyÜ{iºõäºÑsÆ ³¦ÎIËzmVO òÅăî›�¯PÈÛ`µï8%p¢q-~£*yké•;â€\7hÐÀhWü`:kÖ¬FÏý÷ßÔ¥Ky®M›6Rœ ˆT÷«¯¾¢ïs}QÕÞö‘²¢€ÅîÉ«.Ê Ë{ÒÏ}J[Ñ:rUkù!³OÑž3)qBg:³ i¤½R“Qº÷\ÿ¨o3ÝÂ¥bø{áµ9ç±°oÊœï‹K›ë�ž¿åÍÚxU¯ÌÜÁÒo«P™üi"Uñ{J£þGǯDˆûÚJöÿ×þe© ç�YPè;*×g«<ÕVD'(�/ �˜wÚXUš1°Õ*9ïòСC¥¨Î�öïßOé…@j‰ùùùÑèÑ£éøñãF«³ÀÃyŸYðÑ ;ìéÊÖ·o_)±¨nheÊ”¡E‹å7lØ@ãÇ�—â�¶§…èܹ3-^¼XOœ8QK[ÏÖϪ#æn+7ž?‹aüzíÝ»W{9zûœc›HD·Y*È??sŠNîot:n™2Sâ4iÉÿâùˆóâóVú§ß(]ÅÊj™ÿ…st¢oyœµi zt`/…½~­žWvrwéAy{~EÆBt=|@‡ÚéBž+õ•mµ5É=‹qAR©£lã“ ïˆ÷«rÝölýƒžQ�åÍ(èm UÌU“¾o2�:,®gµ Ï÷ÑáÃu¿=F�E;v´gZfÛNÝ>–v\üÛl>É ýfwúƒº$Ò«{ðú.úqËH ®Wnx0©ÍïT>WUÃb‡ÿüóÏ´bÅ Ù/œ2d]»v-Rß¼°�¿SµÆ‹†þüóOâEZ!!!ÚSê>/ä~Ó¤‰|oãJüý~øðaµ>7�i~Á§Z;         *ò*Џ»c‰ ¿õÜ:š¶k¼z+zo£,©²©Ç†;Ë�Î%öhWlë�ãäžÈCÆA^™›±m®tùhaw�·¥±ó¶–±7â¤I“ÔæìíËel– òJãbÅŠ{ ³Û¾}ûÔâÿûßÿˆ½íµ¦ä•rkÚ+mlÙN]s™–ïô’M'ö,EÍ+_t`iß1-È/ßy‹¦®¹$§—2iBj$dJãF/ß‹ùG.>¦Ð·áty™¾�wìòSÚ÷_„ˆèÂcâh,Þ·®ž=Òåvk�‡X\×Z°Ó�ÚKO_èÄ>_­XrOâBç¼üéÔ5?Y�#lÿ¹®ÑPÿZA¾”ã¯Þ}A!oÂ)Cª$”×3¹ô¿!¼îŸ áß” Ï^å�=’¢ ç�·ÄØÃ¼qãÆÒ;›ë³øÎÞîìîÜ9éÁÍåì=Éï}ÎM¯˜V$TÊ .Lì=ùìÙ3¹ ……g¶©S§FZäÂÞ�œCZ1—%e}àÀ¥XnM ò¶~Ví�»=Üø‚8²3aK™2%5jÔHFàëñöö¦#GŽPhh(]¾|YÖQþœ›Ÿ€nmQŽ,ßÖøå¥)`¼¾-‚|±X c�ÚÄ{è3Ýû›{g1Ü#{zrT'Þeª[ŸŠ�ÕySóy­ ÏÇl) ¡Ô%JRˆðžrø…‹ëf+ôÍÊÖ²�Ü×þyûê%]�þ‹Zàu“ïzËãÏA�W.Ü’ÏÚ›WD[Xë~¯¿øKéÃÔ6} ¢ª?D:=ñŸatØk%rIL ;ÿM’e²I�ç…4õë×—ýsš å³i@X*ÈóP_ÕJíÊuUG}ð˜º.l*#ó¨…&v~l=›*ä®fâ¬}ÅZAž#ìð÷C¢D‰d�Ì™3“¯¯/]½z•rçÎI�ÿí·ßhÉ’%êÊ—//#Ÿð‚@þ®=qâ………Ñž={(cÆŒj=íy- 샀€€€€€€€€í ÈÛÎ.ÆZZ"È_áT¿^áiöcëYâqu“sdïxö’gKŸ<­î»K­;wÿTÚ• 8í…ûgÔsæ<äW›O>þwe]ö°?ãý¯ÚŽwj‹°®Z˘"3u«2@-2ô�ç)ÝS{ÊŸ¼}8’§ü_ý÷RÚ¤éÕöѱ3wî\úý÷ße×Öò-[¶¤~øAõ„?}ú4õéÓG†¯Ï’%‹ g¯ åm(È[ÛÞžkW<Ô¹�ùÃ*Q¥ÂéìéŽbZ�ï0á]¸­‹è`Ì‹�…ùmÇ}¨c�\f¯ëë'èÀ¹Gä&ÂËŸš×Äl]åä´uWhñ?7åa“Šž4®k é鯜_& üòq±@!òóyCÓ ò|.¡« kW˜¾¬1_kÿ×~o®¿`öa\é‹op(cöd_·n�Rlv;mÚ4Õ ½I“&4nÜ8™jAi´lÙ2úå�øÉQø¼b†¢6G‡6l˜ú~ç0ôß|ó�¬^¹reš7ožÒTn¹>¿çÙ¸_î_1öèÔ.Š1%È+õ•­¥ŸU{çn7ž+‡–V¢ ,]º”8Š€ÖX˜çpý†žÃ§§ AþmMËökýJ”®Xd�•[¿ ¤·B¹–0Yrrñð�û†´òùú  \»PÈãGt µ.¢E"6»ÆÆÈÉÅ…Îÿð?òݳ‹’dÈH5ÖG¬ 0ä=7£"#ǨžðÏÏýGg†’áëÙë¾Úš ”ÀL”ž£—“ïµx¾œ®5‚<7à0ü2O„'Ý2FŽ:!;�l}¿rj÷Mm­ãùrÓ#ªõ«þûåø�ƒ4nË I£K…þÔ¡œn1�-òoß¾•©)¸3~ïó÷Lt™"ȧIšŽjhDži²SZ�ôäûÒ‡ö]Ý®¦ùáñ“»¥¤¿Fx‚ï½²�&m¥N-±kê]}ˆ sL÷Ÿß¡þ¦{bS‚u^ÐX½>nÏ!f fêA4š¥"ŸVPç°”ÁµSãÐàœ3šmÖ¬YÄy¢³·½Ò�-Ûv? +Þ/eÓõãkRþ¬ÉméFmÓ‚|íovÒcáÙž$‘3�˜ÛDæ€W'cÅŽµ‚üó€7TgèNzöžrfLJÌŽÅt­…‡�uØ»ÝÕʼnNÏo"rë×1ä·.D=çÕvcv?PˆªåÊ•“u*T¨ CÄ›m N>þ\æ™gq,gΜ´~ýzJ˜0¡^3öpç\ôœßœÃÈó¢!¸²iEÂÔ©SËüÄ쵩5ö‚}ðàeÏž]ÍÏç9êD«V­dÕ"EŠÐêÕ«µÍä>/`oq¶èä­�»½Üøz8šÁãÇ�)I’$ÒCU»0‡Ï›²èäM�eX®äË͘C©Kéì®_CŠúiËW¤2¿Ì�Ínÿ±œnÌ›MÎnnTo÷!µ+­ ïœ(1ÕÚ²ƒ\Üõ\˜ø==Ü©[uPjʯ”¾²ù0àöòêÄâøŽ­Ÿ5G ò,>÷\ÞœüŸPÆäYh‘ðŽwuÖ}WØ"È3îR¥JÉ(¹råRï‰Ññ2¹¹O.ºàß8†)|ؾãüô.ü�:´6RÐâóhÕ¿ Ôs2¥ß;¯R�y‡CŸ‹óf(H©=Òê�sÔ�ÖCž£”ðb'7ñÙŠÊx�‡¢gûöÛo#-ð‰ª½r‚¼B[°�yûøÅHkKyžHÇù É÷…�œSâ-iXÃhÌútüV„(2¦éOT£@}jô[9z*ëv¬Ø›ºWýZîþ‰MA>•{ZÿõuJ_Ìâ xˆ®ØOmçQ™œ•”ÃhÙÚ"ȳˆÉ^´†Æ¡fùá6ç�íÑ£‡ZE+ÈÛÒ^íȆ�úÃwÓ¿ Ùr‡«n–ÝÚ.cZ�ïôãaþ¹œæˆöE¨ƒð„wvJ`í´ÉZAþ_ò¾÷/Çä8Õ‹g ÎõóDŒ)„ÅVí¹MûÎ>’‡Æõ.¦ù•»oÑOêrÈóõ§J–ˆJ‹\ìÅr¥¢’ySËë±D“²V�ÿsïmšôÇE«�Oí[†”Ë¢×F+ÈÏ�Šþø_5½óQpNs%ìyÙ²e‰Ã Ge†aᣪÏ絹ൂ< ï,ÚðáÃiÇŽä$Ù‹#8-^¼X]°Âé 8¼¡mÚ´Iý|D§ oíÜíåÆ×¹råJúé§1:•÷^ºtiâ´%K–$ÎÎ9žã’iùª+ÿ"�9åô·oM�>÷(K£¦TtÔw²ÌgÛfº4E'γ‡<{ʳiùœ_v¢üý"¿g‚îÝ¥CÚÈúœCžsÉ›³ÏM�·öýjŽ�%ç®?¾Dƒÿê,EkâY�ך­‚<‡]çÜåyóæ¥¿ÿþ[Û¥C÷×�ZNË�Υ෺gQu>íË%2E×ó~v‹z‰ßZÁ^Û>KªlT«`#j^ò î^{ΑûZA~Á‚T±bÅ(»g¶ü�ÂQNJ”(!¿s¢l„         ÑJ‚|´âuLç– òüàyùQ�Wiò$)hn×5zÂ;ϦP–âÔ©âWôíZ�§6—-uüýZ´í&-ßéEÁÂ-ÔÀ²¤u§ =JR™üi ÎèZ+Èÿ¼ú­ØuKv’2iBòHâªß¡‘£á_¡š%3ê�Ñ ò Ë{ÒÏ}Jë�·ä€…Ü7oÞ{/nܸ1Ê&Z‘'eÊ”‘Ò+ë€öš5u `´‚<çŠïÞ½{¤&Š Ïâò¥K &&OžLìyÏÆwÑ¢E#µå|ȃë<¥£S�·vîörã e‘lÑ¢E´|ùr ˆtíY²d¡ &¨‹,” ¡/‰Bý•#Ë·É<‰œ¢~kšíP+ÈWûs=¹gÍ&ëîØ–ïzSÖ¦-¨ðˆÑ²ìáŽèÂ�ßËýº»¨a鵂|�þƒ(Gû޲ŽöÏÛ/ho“º²ˆÃÕsØzsö¹ òÖ¾__yˈíæF:—PdpK§+îÿg{òzz•œ8ÑüŽëeÈzmƒ.KÑó ?Y´¢Ûvâ¨6.Î.¢¾³¶šÞ~HHˆ‹¹�Sm,Y²Dï¼£ö_ÝA·˜_Ða8–aÔío*úÊqj�t4¥íÊ•.ŸRäЭö;gÛ¶m”={ö(ûçߌ�5’õ6l(sÄGÙ@@@@@@@@@¢•ùhÅë˜Î-ä9_ê¸�:‹GXgt¤�«‰\S×Êýiþ�БØ5 mûæ„|ànl¶äç{ñ²mß¾�²fÍj iõþýû«¡éµ•9´8ç�f3|Hno{í8ÖîO[w…ÿ£‹<ð]çbÔ®¦ÎûÕÚ~”úŽäo?|MÍÆì•Ý÷oQ€ú6Ó…MWÆS¶�!ïhá»2|ýñ+O‰…nÅ8û¦‰µ([ýœÕÊyÞZ+ÈÏÙt�ælº.»ø­Yª[&³¶;‹÷µ‚|Û9hl—â·U*rxâû÷ïS²dÉd˜ø¨<¬µ!áûí7ª[W'‚*ýEµµG�׎mÊã“?kJXû¸$Èkçn 7-×ÀÀ@Ú°aƒ _üøq Šðâuuu%Ž�-›Nøævq%‡¼#ù<=¾¢<ÝzjqÈ}ÏaðÙ2ÕaðÇé<íe�‘?äuPŒ-~qDùÖó«Q@ˆX b…5(Ü’†Ôg²w4kÖLžçí¤I“LÖµçÄ×+;Ò•‡"σƊz–¢ ¹«SJ÷Ô”Düö™¼m4…†…¨5 y>qÆû_Úxf�ö>¦†ºW|ÜáPösº¬6,vȱV�?xð ¥Ic~aª]üÇ‹•ô™:°‰y›°Ål#Kyß—¨ã¼êäòg*B×}už©mÊv!ßÊÆ�¯?º¬î›{�ì(Až½æv?'Ç4õgÁÁi´æD„·\|õ�o×®}÷�.|³öZ¯\¹B|Ž�óÇsyÅ´‚¼-í•~^¾|IìE§5�Í!‚MÙÆÃ÷hì’³òtÙiiÉÈʦªZT®ä-ñ¸>÷4í8ù@äÑN@ç5�”òøÄU?êùóQ9¶9A^;¹�7ïhÿÙÇ4gó5º÷8Pžê"r¼ÿ¢°¶šÞ¾µ‚qõêUjÛ¶­¬S§N5§»ÙFš“öògΜQS:pü™3gjzÖírüS§NɃ¸$ÈÛË-Ò…œ={V~^¹¸Zµjjt>þ”y�ì9¨êkù²ôÌû¯?éÚ¬i²ŒóÇsys‚üÛ·oe8ð÷ïß«Sã…œ.":ÌÖÏš#<ä·\XCAou šŒ]ÛŸ'Ò›w¡òTëR](iâd”7]!*•Íô÷,‹ðëÖ­“m,Yµ¤^þ÷{S�ª <ŽÞÜOc7ÒëJ+ȇ ¡>Däž÷×dhü«õìz¿µ¦wXFì�ïh³U�çß—/_ ÜÐúõëm~~ûí·täÈõ²¾üòKâ(@0ë@�·ŽW¬Ô¶T�çÉ ÓZ§PÞp<5™^�Þ„éž+òuíQÔ¢ô—Ê!]ò9K!a‚þ5ß‹"/ý\õ¼[BwÛ\繪²Èž>y&åPnÃÂè�ðP{ÿ!B´(”¹Õ.Ô˜2Šlüð¾@¦¢rŸÿ|*‚<_ËÒ¥Kõr@sÞèV­Z‹+NNN´uëV½pÔZAÞ–ö܆ÍAžÛiï—Ê—F ×I\ø”ží=ãKy=“QÖôzåÚƒûO©áÈ=²¨´èkÙ¨*ÚÓ‘ön»A3Ö_•åS¾*M�+ˆ¤×�óÃ7½Wõr7&È?ö¡ ©’(Mô¶¾Ï‚©î°]²ŒCÊshySöë_—ié/yzí5¨`¶¦ªÊrž[ë±ûÉëA€ôê_õ¿jT4W*£mB߆“÷£@*�-y¤óŽäŸ>}*Ó!ðûŒs³ˆcθ^ëÖ­ÉËËK 6œÓÝX.wî#44”¼½½©@�ˆ…¶Š„Ü�ݸqcòññQœiõêÕT°`A>%íâŋԡCâFlqI�·—_§®È�!ïF2___5}§à°øŠ>" ~*VÌXi©ò} —ÄV62¨îèòÜ}¹Yó(u‰óƒx_íÖ�^ß¹M ÄwdÕUëÈÝ3«ÁLôcC�׿@WfßsQH”z¶lmý¬ñ­×Oȱî=“(ÅJ‘)Áì”;,®'<ÅË:kzí“9äÍ5àÏ4¿¯ù}îééI;wî4WÝ®s�æ7¢‡/î«}d¿S抰òIºÑ“W¾4ü¯ÞôÀÿžzžw´‚üñ[é‡Mèf�Ô´D[Ê�¾q¤¶�®ˆŽôBØÿÞy•ÞïYÑläÿøãš2eŠœAÅŠeô —È÷ôóçÏK±>Iã÷о}ûÒáúEmÜYT üpÉè@@@@@@@@>IäãÁËj� ?}×ÚrNßóð›úã¨qñÖ4äÏîtáþi½+žöåR*–µ´ZÖfvMzè§[²Ó¹RêZ%²ÇT—MÉÇßÛdü€|™ðšW,¶y ž~áðJT¡P:eÈHÛ÷‚# Õ7}ä¹yRËpî©’%’dz§ dn®j»Ó×ý¨Û”£ò8]ŠÄ4©wi*–+%=𠦟þ¼(ÇT*äËöÙ* $§6Õ³S©¼©)S7  £S×ühÉv/ºìýB6ß½$µ¬jZiÚ|ì>�YøŸ¬›+SRê×¼€\x�ÐÕI–eIëF‰\�•©È­vîI¹Ð‘ã¾NéL”1µ½ £;¾¯i�XÄð÷ỂeJš?¬’^{>p„ Ïý 8P¾Çø}É�nnn\lÒNŸ>Mݺu“çYŒ0`±·|ÆŒe¨ã;wîО={ˆ½ï‹)BóçÏWû²U$T:`�Mö”eóðð�cçÉ“G ÿÓ§O'ί®˜1AޞϪ½s·‡_'äÍ›W†ê.UªeÊ”‰dD€%K–H¯V®7~üxjÙ²%ïÆºE‡ ïš,¹È?AŠò¡ÏüèÚìéôäðAy­kÖ¦ã'ë_·ø^ ñ{ªWvwÍ*ò^»Z–•Ÿ5Ÿ’dάžwN”ˆ&7¿¨F­lÅN|ä­¸$›«Z+Èst NÅÀöÍ7ßÈÔ-6E÷|+BËÿ£W+±ÈŸ3]^ºóô¦^îx¥’¡ ?f}„G½““3¥O–‘C_ÓëÐWJ¹e‘ãׇÄýÁΕ/z½êläyñ�²�{âWœÚ þür¿ó÷0G+ؽ{·üÞ72rOD¸KE¸û�7BÿrzŸÃù³Kw^ÐøåçäµjpÝ$‰œå„U²Eºn>Ïc–ë»U. ø¢VNú_§b\lµ±¸Äaè¯_¿.Ã˳ç#‹NQ/â`olng(P±ç|ÕªU©E‹T¹reµ«Û·o«‚?{]*^¯j±3bÄ)ªsXú .hO©û�‚…w›S9ðg„ÃÙsHwöØgãÏLíÚµÕ6¼cÏgÕQs·…Ï}òäÉ24‡ì74ŽjЮ];êÕ«%K9wµaý˜:ö?û�ØGWmÍFrÏâ)÷�tn/BÌߢl-ZS¡¡#eÙÃ]Ûé„q$Þ|To×Arþ©ÁÿÂ9:Ñ_wŸàüð¯®_#®Ë¡êKž¿•üñgJ’^ÁŸyò˜´j¢T�r›ªhq*?ga”õ¬­pèÐ!êׯŸÚŒWmÞ¼Y¦_P ¸ã¨÷«§¤vÕuYcò}éC Äk¿:@É“˜Øýýýåý•S`´mÛ–Xœ�n»õä:Í ¯<ÔÿþIš89}S,­86�¼ý¼ÔiüÚ~1•ȦKkÂÑ}šE|ÎЫ`]”µâÇ�L)=©]ÙnÔ¤„þ=×°ž=ÇM‡ç°qäk1ðâŽÐÃir˜½Ö’'O.£ppNxS‹ø{øÀ�j3k~O¨�°         @äãÁ›ÀA>\Î'9E­ þÝwßIQ�„s>ì7oÞHïIöŽ7eö¶7Õ¯=åO„HÎ^ëìù�I„`ÏžÁƒÜ»ØÓ¥Ù¶êþþ“ êþ•ü ‹ï.κpñf~<É¢þC¿ òâ?{ÉgNãNYÓ¹Gëœ ç,|SÏבÌÝ•2¦r#O1%ì½a}GŸ®{,óBÅX0µ&²ŠÒîsÛ²(¼LD‡áE'»ví¢T1ôZó"£Ç¯Òƒ÷d¸ùÜéóQ–”Ù-Z¬¤¼F¾/|d*Ÿ—Áþô6ü-¥rOCi’¦£Ì)³’SËïQJ±±}ÿþ=qd^àÁ ù»�“ÄÄ÷{l\/Æ�¸F‚|\{EŒÌ‚¼(q¬È˜ nÍímoÍX¨ûi`oG�/_>Ú¸qc¼¼Ø�ÒþýûåÜy‘�»»{¼¼L:‚€1A>âlüÙã¼ÜÑ��?c6l°JÜ�?W긙¾xñ‚jÕª%§ 2„zöìé¸ÎÑ€€€€€€€€€ÄäãÁ‹A>î¿Hö êö¶�û„0Ø"HOŸ>%ÎÓÌ×qÕ8duƒ dNuW¯Ø¶mÛhÔ¨Q2|~½zõˆ=�añŸÀ§ È¿zõJ¦n`oc¶Ù³gS�5âÿ‹ÍWÀÙÊïþNâï&€€€€€€€€€|N ÈǃW[y��6mÚx0ÛÏsŠö êö¶ÿ<©ãªã3�Â… Ëéó÷ZÞ¼y‰ós8å7nÈrã¾eËZ9>_'æ®#ð)ò{÷î¥AƒÉ â÷/§V€�€€€€€€€€€€@T ÈGE(œ‡ ^„(¦`¯ noû(¦‡Ó ç”(Q‚ÂÂŒ΋ú‰'RÁ‚�žGaü#ð)òì!íÚ5¢ž=½3fÌÿ^Ì@@@@@@@@@@ Æ @��qäÖAÞzf1ÝÂßߟöìÙ#‡-[¶,åȑê)ØÛÞªÁPâ�ÐÐPºxñ¢ÌÇýüùs)γș3gNb±ž=äaŸ�·"�øãCûå¥.YšÜ³fût.W          f@�7'®œ‚ W^ Ì@@@@@@@@@@@@@,'AÞrV±V‚|¬¡ÇÀ              `3ò6£‹¹†äcŽ5FG€ ï(’ÑØùh„‹®A@@@@@@@@@@@@@ š@��&°Žì‚¼#i¢/ˆäc†³]£@�· ƒ€€€€€€€€€€€€€@¬€ +Ø­‚¼u¼P@@àó àëëK^^^äììL•+W6{Ñ¡¡¡tòäIY§T©Räááa¶>N‚€€€€€€€€€€€#@�wÅhî‚|4F÷ `#�7aáô.ü%H@ä–ÈÅÆ^>Íf¡oÃ)üýrl’€Í§ù"Ç�«êС�?žÊ”)CË–-3;£ÿ³wàQ\Ý?$AÁ‚Òâîî‡ ÅZ´…BѶhqJ±¢V¤-(îîîŠ'8’ðÍ{Ãlg7»ÉnxÏÿéÎ�ëû›Íð=ÿ÷žsžâ'àçç'Ë—/WË•+'ùóç·9hÞ¼yÏwéÔ©“Y?äþóÏ?Íêô›fÍšI’$Iô[›×+W®ÈÚµkåôéÓJðI™2¥øúúJ… ¤hÑ¢fã6nÜ(ÇŽ“xñ⩽8;;›µ[»Á¼³ kذ¡d̘ÑZ·8W·cÇÙ¿¿bñå—_JPP�ÌŸ?_vîÜ)7oÞ”T©RIîܹåÓO?///«ßOgþüyÁo"88XõEtxÄ&K–Ìê¸ÈVù�ãkËÒ�—eïÉÛrüR€dpO"fK) Ëz‹GŠD6— ‘ ‹OË«W"ù5årùÓÊ~-÷úüM—äÒõGò"(D2z$–ż¤zÑ âìÏl®û�_È¢­ÿÊi-—ùÿ‡âšÐErfJ.³§’šÅ­sÒ'¸tã‘l9|SŽ]�Ïäþ£çÚ¾Kv¯ä’;s mÍŒÚóÐ{‡½>,ó6^TãÏ^y YÒ'•B9R«ïÜaÔ.»rÈã{¯Þ{UŽ_¼/ç¯>�kwžj¼\Å;m©]ÂK åt»°VÕ½cÒ½§ïÈÒíÿjk>“[÷ŸIR×øêY}�5¥T(�N²g4ÿ½à¹ì8vË´ìûŠæ]îìOZ×Ìaª× M*xKºÔ‰õÛ(]ýüÉò�WÔåòyJþì©mÎ7oÓE¹q÷™¸h¿•Nõs™õ{$n¸`V§ß4«”U’há÷#2|çµû®©ßܹ«%eÒâ›)…Æ,­Íåa6|ãÁëê÷�ßöV~Ëkö^SÝ–ˬýþÍß»ýõ—üüóϪ}ôèÑR¥J•ˆ¦ Ó>tèP™={¶ª_´h‘äÌ™3LV� � � � � � � � � � �@t  cx ò¾zõªT¯^]u,_¾¼üöÛoV=xð@ ØCìÍ—/ŸÌ�;׬Ý5j˜Õé7+W®”L™2é·V¯‹/–AƒɳgÏ´CtoÙ²¥ �ŒÃ°)S¦ÈرcU¢PŽaE=Õhø5j”L›6MÕ �²-qÚ0$N‡.³fÍR{]½zµtíÚUN�:fïÎ.\hVÿJSuÿøã�8g�=:'J”H0¯»»u�×lB;otAÞÍÕE‰ßó5!ÔÒœÑ<†oÝ4äq_Chá¥Ë“%…&þzÈã§/eÓ¡ër÷ásU_*o™Ü½”*?à%=hö%œÊ™Z²¤K*iSºJ€æq¿ñ ¿òüFÿ\™“Ëß*‡ªò'?o‘£~÷T‚)ÄìÑ·µ½éfK�‡ _»÷:yü,HuM£­]<·‡_á%H;lðï�ÇR¯Lfئ >�ºFu￯>/#þ:¦æ‚ww--’@z-2¢ \¼þX¶½!�/‚åøÌÐ<ãúâ;Žß’ þñ·¹!7µÃï•÷Ö»™®­jd#&›#QølÐVÁ! äyß2¶¦Õƒ µƒý^´øî³å“ÊÙÌVÂw<稩îÌåûï{XD‚ü¬5çeøŸ¡Üð�+J'9´(w<—5šÇ<憵¯ë+_5}Aì;}[Z Ý®êû·* �Êy«rx­‡nSÑ YbÓè°¤*W®,ׯ_W‡kð®�Œáð•~ˆ áïGŒ™i8†H€H€H€H€H€H€H€H€H€H€"$@A>BDo¿yûžÂ8Puþé§Ÿ¤Aƒaêb6BÃ#o0Âɇg'N”ñãÇ«.á ò÷îÝSžõOž<777Á8„I×íöíÛÒ¢E ¹|ù²™—,Y¢BÍ Äcxìc¿Øwx¢ú#´~ÕªUBtTlß(M�_áø •FФÉ÷Êñ�áŒ0 ò膴¨KŸ>½iÂЯ_¿^Úµkgª»té’ 4‚=BQ#J‚Ñ.\¸ Øb¾4iÒ›¢T6 òð’ŸÖ³´&Œ‡þ¦‚ƒ_IÏÉûL¡·{4û@ZT÷ ³žQ�Gc‚øNÒ½i^3!ÞÎ _@ SžÛ;…šcÈÜ£2w�Ÿ*7(›Y vB$…Ác¾Íðmš ýDÝÏùAKã …Ã7ÚVML>~1@—Ï&¤>Ö뤅œ‡ ›Þ«´Y(ò=Úaƒ6ÃCEVìß;ék/|Ô-5AžØ0[‚üwÿ; Kw\V}*N¯‰î… uƒûìµ~JÜïÑ,¯^­®QÙ;&øT;Lpäõak^ì–—ïº"ŸU1³Í6¡Ý B?à ÅÞIu,›£ýþ/íÅ@íì§ÖÏÝÒZÛ.{OÝV© 6�®©ÂÉ[ö1ÞO\rZÆÿ‰"ö‹}‡g!ÚôGhýªE2ȯ�ÌÓ|`,¢›àï),þþûïð¦³ÙöâÅ Ó;ºH‘"2sæL›}Ù@$@$@$@$@$@$@$@$@$@$@Q!@A>*ôÞÐX òö�†:„X5ÅŠ3…u×GC¯T©’@Ô†6DóˆÌ^A~ذa¦|ÄC† ‘:uŠsÆ;vüCNô#GŽ(Ïo„¼× ÞÜ¿Ž0öÈACntˆÏ°^½zIóæÍU9²±U�O‘"…¬]»V'Ž8ÿv÷îÝMá«{÷îýFCOù–š74„t£ÝÔò²Wé¶F 2"öêU�ͪl)ÈÓ(�|Q;G˜~Æ ˆœ¥:­Pé® �e˘ša¼ïWî¾¢…¾ß¯†Õ,žQ†·/bœ"Âò-_:VØ× rK»ºÿåØî2v·lÐ<áaS4ïû’š¾Ñ–hBû÷šà³&ÈÃ#»Þ÷ë5ïí`‡æ½Jã7º,¼½c�ÊÝV«C `·{b»òš[ÛÛ›äqP |—UJÜ.¦EÀA£A¯Ôuµú½•ùÐS‰æÆvke{ùaÓHœWS i[Xê”ô 3�ñÀ@Çz¹¤c½Ð÷–~Â'C2Y<¨’iܺý×T4D‚ðÍšÒáüµ‡ÚocƒêÓ들yUóC,�?Vïwt(Q¢„L�:Õ4Ÿ£…B… EeË–M–.]êèpö'          »P�· ÓÛíDAÞ~þ¹·nݪy‡:«Ü©S§6 ž3gŽòžFôZµj™Úlìäõpù˜gòäÉ*l¾åœ’:wÎ^ÏÿË/¿(ïL„¹GhuˆÐR¶lY®× &¨qÈ3ÿã�?ªòüù󕇨å:ŽÜßÒœmï� õªvdœw¥W’(ÔÜ‘aáö5zȃSÛ¶mÃí¯7Ö¨QC~">òI'H�@oŠñ«Q�Ÿ? ‚äÎê½n\¸•æ-¾ïô•_ûÀ”�”¼±Ý(ÈÃóx£¢;qÂÿ<Å�}õò%-”;½Ãj—ðRyÞõ6ýúâeˆ”þj…–Ë=ÈfØy½/<âoÊ�»O5‘?DU ùé?Õ<á��ÿ;xÓ‚<öÛQ‹\€Ø/~+©“%Dµ²9ZÄ„¡ZäذvE¤V‰ŒªÞ‡½‚üg·Èáó¡) �aóM†“š!ý@gí°¬bÁt2¶sqUþeÞq™¹êœú�ìžX[Áï«lçêPFÙ|ieBתÿÊ�ÓªòüþÚßÔ눪Bû¸qã†:X…{°Òߣz»#WÌBt“´iÓʆ ¡‡Ͼ$@$@$@$@$@$@$@$@$@$@$` òöPzË}(ÈÛÿV¾gÏžj@Ÿ>}”÷¹>Z÷D‡à�põöx_Û+È—.]Zôñúzá]³dÉ"Ë–-S] uéÒE•‘½hÑ¢*_½þ=\]]eÇŽJhîׯŸÊŸŽ:ˆ÷8xð®˜Q�Ÿ2eŠ”,Y2¯†¼ð… –àà`~zöìÙމÎFA~ׄڦ°íÆ5~˜z@o Ín-$¸Q�GXy„—�ÈJ¾Ý/;T7x!ÃÙšA´‡xŸL '¿SÛŸ¥!üÔgeó¡ʫڲ]¿ÿ¸RVù¾y>ýV ·]ªr¬ã"X³Jš:Â×[ä[tJ&-=­†MÕ¼¼‘;ÞQ‹ìÞ±<½áñ­[*MÔ.œÓ]òeK%s¤–¼ZÚ�×Ñÿõ.V¯oC�7F>èóé‡ê0�¾9Ý:6��ø`ÆÙ+Èãp‡ž#^_/¼k–tn²lHÕeÃAé2v�*ëéŒßÃUÛïŽßj©Ã*ýf’…[.‰­èH×�ó0¼+g̘¡Ê‘ù@Z ¼C…äŸþ‰ÌC$@$@$@$@$@$@$@$@$@$@  !¢·ß�‚¼ýÏ!ÞáQŽ+ÄxÅî^½*Õ«WWåš5kªÜäê&‚{yx¾#< ¹1ç¹­éÓ¥K'ßað†‡§&ì›o¾‘/¾øB¾ÿþ{AžyݦM›¦Â4ׯ__Î�;§Ö‹J¨f}ÞÀû"�¡N¯z•]×dZ´j§øvuµ»“Q�_¾|¹x{{G8z¤Gžk„ÛÙAä]œ�äð´�¬Ž2†úžÑ»´ñ5Ÿ�‚|Íâ^ZhùÂVç1V½ˆû~žOšVÌjl6•ráÛaû&×ÑDÎÿ<ïWìº*½§ìSÊú÷)’&ÔÄèWÚ!íïæöÕÔ¤Bù±E~U~øô¥æý¾\•‹úºËôÞ¡¿]}ýÚ¤ß&9ùï}«‚ÿüsùý÷ߥU«VÒ¡C•3ësÐësDæ[sÈ#‚�»{øb(¾/ÂMãÌÚ_U¼�]�ÇR‡¦~dÆûõúƒç•?Öû©»?U4åÊ~Ý,FAÞ(|ëíÖ®«÷^•îBÃÉ÷ÐB¾·°ò½IM¿t_;(OíÏéµÛ÷ÓÀ )§å"‡¸ �µ‹–·¾a9oIžä¿S74ïväZ‡÷…ñ¿Xª<êáU>³�uA^koÍCþçY‡eÞÆ‹jîyýÊKÍ#Ý^‹ÊÞ-׀Рol„¯ßuâ–zz„d_<°’dNë¦W…¹¾ A›@¸„ýÇã\3¢šÈqÀ`ô‚j�»•ä�·Çì䃃_IÁ¶K´wÜ+É–!©,TÙž©ÍúèÑôPö¾Y%wj鲫ƒ­jd—ùJ í°LsЛM¤Ý MÅåË—%Y²d²sçNõ®·ìÑýùóçå£�BÑà:xðàˆ†°�H€H€H€H€H€H€H€H€H€H€"E€‚|¤°½ÙAäã½}ûviß¾½Ô­[7iݺµ4hÐ@Ξ=+)S¦Táêí õn� �…à¥�ç„<æXßQC^xxzB„F¸vì7W®\*×}ݺuÅÇÇGyÍC˜‡éóŽ®cÙ?® òø>%J”�G�Eú0æ@ºâ0ZÞ¼yU”c�eÙ(Èoøµºx¦rµì"ÝÆï•µû®©úãk›‰Þ¨ŒŒ �píŸü¼EÍÙR2»7ͫʖ5ÑóÖý@�Ç÷êUMÍFAß–ð¹ïômi54ô·lä1‰>¯·&V/–Ü4ùë„ÕGš÷¹5A~Öšó2üÏÐ�ñ#;•jE3X·yÕ½Ûš‡6¼!–œ’µ0ÿ°Õ³K�fÖÙ¢ým òÛ�Ý”ö#wb Ò­I^i]3»4è»AÎ^y()“&�Í£kªCªCöò˜¢––þ\R¸%�íZxyG yáÙÁ=y"™¢å Ç~seN.ÃÚ‘º}Ö‹O†d*-B«¡ÛÔԺǼµuAdñâŪiÅŠâmG4 Ëy¢þ‡~PÕýû÷—Æ�á= � � � � � � � � � � D  òÑ‚1f'¡ ï_x�ÃÃÞÓ¾¾¾JÔÖ=!?þøc%lÛ;£½‚|§N�dË–P�BOöìÙí]Bõƒ¸¤‹CŸ|ò‰üñÇÒ¶m[éܹ³ µ��ûz=ìÚµK'Ž8ltD›xùfÍšÉñãÇ•—ì‚ T눾·eû±cÇó Ñ zõêe¬ S6 òÃÚ‘Z%2šõ�§o•o×È­€g‚¼Þ{µ°ñ–AžÅå5w˜­<îȯdÂä#\¾n¿¯>/#þ Ä't-!eó¥Õ›L×q‹NÊä¥gÔ½¥ ¯ç*‡wýzí ‚GŠD¦q(@†à ³&Èo;zS:ü*(W.”^F]Lõµç#ª{�h�ƒgïÊ烷ªnåò§•ñß”°9Q p@jp}Oõ ]Wɽ‡ÏUĈÚ}·^-ýq¥¬Jضwö òÆßú?Zä€ì“Ù»„ê·xûeùaêUþ¤r65¢m�œÒ¹anj!÷õzDtØ5¡¶ú›±¶ˆQL2dˆàÐ’£þï¿ÿVÃ"+ê;º&û“ � � � � � � � � � ¼Ÿ(ÈÇ�çNAÞñ‡‘fîܹj`ÕªUeíÚÐÜÊÈ)�Üòöš½‚üêÕ«¥{÷îjZ„N?~¼Í0Ê•ŒòI’$1má—‘Ýhú^ $þù§©)wîÜ2þ|Ó}T �¯‹<½å¸ˆ˜*ç+q1×`£² 5Ö˜CÞÞ�õNC‡Us”,YR&L˜ ...êÞøqøða%Ö»º†õb�A¾`ŽÔ*|»ko8è/]ÆîQÛ¨Q,£ŒèPĸ%UŽŒ ÿê•(Á¹¶a³µ<â´|âF4ûˆü¹á‚ªêÒ(·|Y;§©ùÛ‘ÇÖ¸¼·ôkYÀÔ†¼ê!æ#<<ÌR�Ÿ²ìŒŒ]xRµ}Õ —´¯ë«ÊúÇ€™‡äïÍ—Ô­5Aþ©æ�^G󊾩…Ňá° XúAÜÏï“ÊÔÕ½c"„ãOk%šÚüï<•ªÝ× (U‹d�_;Uek#痫Ω¦ù*¨ÃÖúÅDÝ�¹GeîºÐTا…aÎåÌxE´¶½‚¼12pà Âë a–8í¡:ˆ‘$ч—o>–š½Bˆèô½«hËí�Bæ÷¯ w s½uë–T®\Y¥ At¼;±WÚþ]ð÷÷///Áû›F$@$@$@$@$@$@$@$@$@$@1E€‚|L‘�Æy)È;óèѣʣÜ8Â˪U¡^ÅÆz½ ‘ææÍ›ú­º"ûìÙ³UyÆŒJ¼Ñ;$J”H…¨×ïïÞ½ê¶P¡BÒµkWÉ‘#‡$L˜Pàá/néP‡òå˧U×råÊÉÝ»wU¡ï·nÝ*NNN²mÛ6•?^ïܼyó=·õ¾qéYA6l(8èûðÃ¥G�*:B@Ѧ!zȆ ïa¼#‰²ÿ~iÑ¢…šiMÚ´ics6� � � � � � � � � � �@T P��*Á70ž‚|ä רQC®\¹b¬‡€7UX šW¯^Ý¢Öö-<íá�­žD"?¿P¯UÔC†ÐoiðÞ·ä¿ùæY¿>4ì4¼åu¯ÏçÏŸK©R¥$00PMó믿*ïNË9ãú}dy|ï“'OJ—.]äúuÍå?[·n]Œ òÈÝðè…ÕÕ›VÌ"}?·™!²‚<~V_�Ù%[ß°º&*ú{@«‚R¯t¦0}úk¢û‚-—Lõðvާý_Èëß+Bɯ?à¯Ú-yTþ¥yßšsDû}›¦0 °‡háú²ß– �ΖžÑ¦ …ze2› òhŠêÞ!ÈëÞÿ˜û 1û.dM©yî—ˆÒ¶ ¡ãëý°^°Öã‹øº[kŠ–º=×Ê•[OLsé!àMˆæÕ{„F ±h²z‹Èðb× 9ä;�Ý-~þ�ô*å%oí7`M�ÿæ·=²~èoªfq/Þ¾°šçùË`)Õi…¾V÷ˆJ¯ÿðlÇŽ*­ú ­¼£!,ë/ù�Jg„¹/Á¾Öí¿&ý¦xÌë�üŸ4�ö9k/Ⱦӷ%£GY=¢ªÞæºëÄ-¨…ׇØki³;ÖËFÔŽêÞî}ë‘fb¶¾vâ„.‚_jùÍy "ÃóûgÛ¿*Dÿ5-ܽñ9üÞ§ŒÀ“<¦lü?§Ä�`é�Ê’5]R›Ë]¿ûTª|ZtÖÅ@IDATŽßf'CÒ0Ìú®¬¡FäÅËÿÏIùC;�� –æ“!™TÑ"4¯æ†ß¬5çeøŸÇÔ�a튨ˆúøŽ£v©g‚ûÍcjˆ{òDz“Õ+:5jÔHNŸ>-¹råR0p*"»wïžzã€S“&Mâ<�H€H€H€H€H€H€H€H€H€H€b’ù˜¤MsS��&�opˆEøá-ÿäÉI›6­dÈ�A<<ÂæÉ~ƒÛz/– Q)Àá쑪 K–,’ A‚7òýá±|âR€dJ㦅EO&.ΡáËcrqxµ_¾ùDÎ]} n®ñ%§Ž=U²„v-yÿñ AÎïÛZÞø“K–ôn*Œ¸]ƒµN8pñÆ#-×ûM N&Ù3&³™[<¼9? Rûð¿óDÜS¸JfÏ$â™Ò5¼!Õ½#—ü5Íküöƒ@å%ŸÁ=‰öÜ’˜…÷wïq#ž;~xË? |)iµg•A;|á‘"|!=:‘íÙ³G�*6fÌ•W>¢ùqhgæÌ™*Äýš5k$U*ó°ú�g; � � � � � � � � � � 8J€‚¼£ÄÞB òo:—$ ˆõõQCræÌ)‹- w¿R©R%A�®]»Ê_|n6’ � � � � � � � � � �@t  cx ò1 ˜Ó“ �@ ª…È_wÀ?Ò+LíQZ²¤s‹ôøwyàãÇ�åÖ­[‚|ð™2e ÷«"b†þï)úb �H€H€H€H€H€H€H€H€H€H€bšù˜& óëÃ�GLNA$@o˜@ÏIûeåî+‘^uÁOÅ7SòH�ç@           �·G€‚üÛco÷ÊäíFÅŽ$@$ë,ßuEŽ_ˆô¾¾¨�CÜ“¿¹Üì‘Þ(’ � � � � � � � � � � „!@A> ’ØWAA>ö=îˆH€H€H€H€H€H€H€H€H€H€H€H€H€""@A>"B± �‚|,xÜ � � � � � � � � � � � � � 8H€‚¼ƒÀÞFw òoƒ:×$             �¨  5~od4ù7‚™‹� � � � � � � � � � � � � �@´  ­8cf2 ò1Õ³’ � � � � � � � � � � � � �@L  “t£in òÑ’Ó� � � � � � � � � � � � � �À$@Aþ ÂŽìRä#KŽãH€H€H€H€H€H€H€H€H€H€H€H€H€Hàí  ÿöØÛ½2y»Q±# � ÄI;vì�   ñññ‘ 2ÄÉïÀM“€5���²gÏÕT¨P!qss³Ö�u$@$@$@$@$@$@$@$@$@$ðΠ -ù8ð�¸Ex ®Þ~buUÏ”®ßÅÉj+c�íÛ·K»víÔÆf̘!E‹�}›äŽâ,�«W¯ZÝ»§§§Ä�ßj[tV>yòDªT©"<�-ZHÏž=£szÎE$@$@$@$@$@$@$@$@$@±žùXÿˆD(ÈÇ�‡ôn±@�,uêÔ‘Aƒ½ƒß0n¥[÷¥â7«¬~‰ÉÝKI©¼i¬¶±2vÀßXýúõÅÏÏO ñäã’ñ=»ŸÖ­[·¤bÅŠV79yòd)Uª”ն讜:uªŒ5J\\\dùòåâååÝKp>         ˆµ(ÈÇÚGó߯(ÈÿÇ‚¥7Gàƒ>�W¯^I­Zµdذaona®d�;¥| òvÁŠÅ�æÏŸ/ P;œ3gŽ@àŽKÆ÷Dì~ZwîÜ‘òåË[Ýä›äŸ>}*U«V•€€u…8O#         �÷…ù8ð¤)ÈÇ�‡ôn‘B[Üz¨+v]•^“÷©MÓC>î<;D ¸pá‚øúúÊÂ… ãÎÆ_ï”õÈV¬X!½zõR›~“‚<9r¤LŸ>]œœœdÍš5’>}ú¸�»%         �H  Iporù7I›kéöïß/!!!’&MñööÖ«y�¥(ÈÇÒζöíÛ'-[¶T=�Wùµãšñ=·žØÛäÏž=«Ò3€XÛ¶m¥K—.q wK$@$@$@$@$@$@$@$@$@‘$@A>’àÞä0 òo’6×"�¸I€‚|Ü{nðTF>mx oÚ´IÜÝÝãÞ—àŽã�·)ÈT½zõäܹs’:ujÙ¼y³úíÇ)€Ü, � � � � � � � � � D‚ùH@{ÓC(È;F<((H&L˜ òŸçÏŸ_Ê•+'ðâD®æK—.É‹/$cÆŒR£F ©^½º8;;;¶@,ë=wî\AžàD‰I»vílŋ«ö’%KJ‘"EÌúnÛ¶MàÁhi9rä�2eÊXV‡¹G¾ùÕ«WËÑ£GåôéÓrïÞ=ÁØ\¹rIÓ¦M%I’$¦1È'ü¿ÿýOÝ-ZTJ”(aj ¯ðûï¿Ëýû÷ÅËËK4h^W»Û.Ýx$[ß”cäFÀ3¹ÿè¹dpO,Ù½’KîÌ)¤F±Œ/žõé–ì¸,—®?–¤‰ãKË>²tûeÙ}ò¶œú÷¾dòt“|ÙRI£òÞ’Â-A˜ nÞ{&m¼¨ê+J'‰ºÈŠ]Wdÿ™;òüe°|�5•”Ë—VÊ|èf¬µ Gù¿7_ÿ;OÕ÷j_×WÄw²6¥<}$ÿ[ú›ÈœÖMê•Îdµ_d+=})n¸ Ç/¨ý¼ ‘ÔÉJ�$ê{—þÀS'r1›>ª{¿ÿø…ü¾ú¼š³\>OÉ–!™¬ÙwMöžº#g.ß—ôÚ³/ìë!-«ùhïþõŽ´Ÿ¼¬Þ{UÛÿ}9õ�\Ó˜z¤pï´I¤v /)”3|�Wø;ñññ‘%K–˜}OË›k׮ɂ TuÅŠåÏ?ÿ”'NBÆÃË>mÚ´2qâDÙ»w¯$K–L Ÿ‡o4¬�w`Ò¤IÕ˜¥K—ÊîÝ»åÔ©S’)S&É—/Ÿ4jÔHR¤HafVŽê{Âl²HÜ8òžÁô�?–iÓ¦©•À¬âYùƒ¾|ù²üóÏ?ªB©7nÜX•õ�ÀÀ@Ù³g�lß¾]®\¹"7oÞ”øñãK¶lÙÔ{®R¥JŠ¡Þ_¿.Z´HõÇ{ïéU«V)Ï J£ÖÏ›7¯tëÖMR¥J¥Wëüõ×_ê¾råÊê=Qÿ¦=þ\=ügÏ;“DV�w”»é X†*³gÏVµøÞ9sæ´èÁ[         x÷P��Ï”‚¼céÉ“'R¬X15¨I“&R¸paA8hk6fÌ��—íûï¿7‰y8t�;wn«_ù{g̘¡Ú¬åîÝ»·òÖµ\«V-6l˜eµÙýíÛ·å»ï¾“]»v™Õë7б¾¾7š(^¼¸@ä‚È4zôh½«Í+D|÷ÁÁÁ¡qÈ�!6ûÚÛ°`Ë%é?ãP¸ÝËj¢øÐv…%™&º[ZëaÛ5!÷¶¤Lš@ÊçO'ÿlûײ‹x¥I"»•ÔDZ7³¶šðÞbÈ6U×Xí×ì½&5�ÚÒÚÕÍ)_ÕÏmóP€ÞßAþ—yÇeæªsjèÈŽE¥ZÑ ú4f×¥Ú�ƒïþw@ÕA¸ÿªA.³ö¨Üì;}G¾³K? ²9M§ú¹¤ÃG¾fíQÝûùk¥Þ÷Ôœ˜{çñ[rÄïžÙ¸)¢‰òS{–g'ë¢ü•[O¤ï´ƒêE˜Á¯+>×Dýž`µÙÏÏOêÖ­«Úp¸ä矶ÚO¯„pþÅ_è·fWü}yxxÈÁƒMõ�Ç�/eË–5ÕµnÝZ ö)S¦”òåË›hS­€¹ ì{{{«M娼'L“D²àè{F_ïÿ•+WªÛ=z„I ðòåKùôÓOåäÉ“ªÏرc‚¹ÑpëÖ-c•Y9qâÄ2pà@©ZµªY}óæÍåÐ!ë5kÊÚµkïCÝ Êë<ê8`Ú/ ÷úÇõî¦+c}õÕWV˜:i…Èò‘ån\W/ã9àÀúôé#Ÿ}ö™ÞÄ+ � � � � � � � � � ¼³(ÈÇ�GKAÞ±‡dä *¤D–gÏž)RxlÃÓïÌ™3J\‰AþÐäxr~©c{Dï ¿¼÷hÐ7!‚ùå—j­Zµ’o¿ý6Ìfð�!|ë¡‚7nÜ&2Ä|x]ê¦ X òÊk×®m« èÁcñ¢à± ƒw*æÔ½o±WäÐFŽzì'"ÃÞàÝ ëׯ_VÕà༳Í>".ÎNš7sjÉ’.©¤Mé*šõƃþÑ–+srù{€¹@‡z]�Gææê"• g�Tš@¡÷ôåª>�6çšU%¾ËžèFA^uÒ>àQ_Ø×]à=¿áàuy¦y¨Ã~hžOšUʪʶ>ä/j^ýuú¬SSÁ¬Yë¡Ûd¯&œÃ¡xõˆj*r€µ~ŽÖ½x"»®x«ÃŠçö�bÚxWo?‘gî „óŽõ|µÿÌÿH¢ºw£ ¯ï;o–”R0Gj¹óà¹v0⪇h®ïš�èPDEHÐûé×;¥vïu¦Ãx¾ø8|/ùCçîÊ¿7K½2™e`›‚ú0³+¼±øáU‡ß3…gFA!î«U«¦ÄZ£H /wxl#ü=ÌòoWäõuÜÜÜÔ{Ù;wîT‘-І¿I¿ð·´È¾',çqô>²ï¬ƒ±³ño©‹‹‹ ªHž|¸Ìš5KÝþùçVp•.]ZEç@t•?üP\@t•óçψ ÔA!L`)æùÌ™3KÖ¬YMÏý1G•*UÔ³„ð Ã{ÏfäU…ö�H8h†÷9ÖÆ¿o0üžš5k¦Ê¶>ä£ÂÝÚ]‘i`8�0bÄkÝXG$@$@$@$@$@$@$@$@$@ï òqàqR�wì!yŒL� �tïÞ]>ùäÓDðHœ7ož(PÀäµmjt°°o”&ȯpp�Ö½ÒHMøÊ*ü9>ú¿ð‡—?Â!#lõºuëÂxIEx$ÂË5"C(lù–¢žå¸Q£F™BBÃsâ"Âçë6sæLùå—_Ô-D1´ÃÆ�'ðÔ‡ATòô ?4;¼ûáeCèm�Qµ­Gn¨pé�ËgÑB�ÿ·gÌ"�Fí’š°›Þ«´Íå¡Êú‡Q�‡ýôÞeÄ7SrÕŒñ]Û+›]W÷?kÂl}M ÕÍR�oP6³ hUÐä ¿ïômi?r— _ŸQ á¾bX›ÞÚ˜ÓAý?¼Už½«æ\÷kuIcñýÒ¾Z�5Úo T0ŸÚ³4†E‹m?vSûn;Õ\E´34n–¦h•h·´¨ìÝR�oQ=»toš×Ä}­¾¾ÛøÐC$™?éÛ°‡5Ñ`• §×D÷Bê0†¾Oú³×úÉíû�Ò£Y^½Úì:eÊÁ� <ÙË—/¯Ê¶>Œ‚|×®]¥M›6âïïoòÈÆAüApÖ=Âzغy�™>}ºøú†F À;óêb><öëׯ¯µyµ÷=as;"ûžÑ§G xÁ#Ì; -\¸PàÕŽü;vTï:|„SCK0`€òš‡0oò‹ð¬'Tºð±‡ ’'O®ò8ëõƵ¢»lÍ¿n�[>ÞhFAþËÚ9¥K£ÜÆfåa_³×Z%j[zÙçN”ÀY6�©i&êb"£ð;®Kq©P �ÙüÆGyc8ú®�óH›Z9ŒÓɤ¥§å·E§TÝðöE¤fñŒfíQ¹Ah„{‡uk’WZ×ÌîÐtQÙ»Q�G¾úµ#«IÂøÎfëWï±Vyê#ÍÀò¡¡¿K½ƒŸÿ#-äýzõLqˆa•ùÀr¼Þ7¼«1—6<¶óçÏ^w•ë]Y�œèzZ¤qxôè‘Ê!ŽPó0´ão ‚³¡õFAQ5ºté‚j“Á{^Ë8ˆƒœçÿý·©ÍVÁž÷„­±öÖGå=c\ï@=5¾'B§Cà�¤I“ª÷W† ÖÓ7ç±VÖÙâQ `º �w²î…Ñ_O¢¿�Á^ï80` «oäqÐióæÍ‚ÈFCº�¥KCôà S… ŒÍfeGùèân¶í‡�®‡ªô}[öá= � � � � � � � � � ¼K(ÈÇ�§IAÞ±‡dä!\ :„©˜²[GDî�Óbz;hÞ•^I¢”²ÑýĉÒ´iSÕúñÇ òÊëAÞ·�2‚Œ=f�І0×mÛ¶UÓa „{¶fá½ ƒh¯\<'ˆ‰ð*5†ÚàÑ é5yŸ*[Ënäª$>’…ÙV³›•>D÷ýSBs†£“Q�¯¢…¹õUÑ0c·½)~Ý©ê»jÂu›p„kGùÀÚï¢ËJvÝšð\£çZu  y’ø²itMI?T` ³ÉHTì>y[¾¾]�Ì–>© ™ŸÞÝþ¿Ñ¨ìÝ(È×-•IY(Ì7hûË•r q"Ù;©ŽYûò]W¤÷äýª®{³¤eu³v{oà%�°õ°E‹IΜæ‡=,ç1zÈÿ.�ŠâÆ�JHÇÁDÞAƒ©Ã,GŽ1‰ÃºhŒ>ðÐöñ »w„:¹ëëãZ¦L;DtÑÿ]0¶³L$@$@$@$@$@$@$@$@$@ï òqà‰R�wì!yx�Ι3DZ âho„–Çoù vZ[lôDGhfüg�Ù#´A8‡€îˆ!gp�5Ô�† Ê™3gÌÂ<ëß¾þúkåE!‚<,"ÁIuràã¨ß=™ºâ¬l>tCBŸÝ†}\)«|¯år7šQ�ß7¹Ž¸&t16«r÷ ûdµ–—¶m\-I©å—‡ùV5²Ë·ZØtK»pý‘Ôí³^U#‡žI�ïÖËÍ{ÏÔ”ÎNñ$WæR(§»äÍ’BJæõÏ"»w£ ß¶NNéÜ0w˜ezLÜ'«ö\§xñäèŒÐÐáz'D @ôÂø#w|d qaqïèðÌ(ÈS6 ŠÂ�#¼¼îý �ÿÇTÓÁC^?�dä©ÂÕÕ5Ì’Hï±zõjU¡7eÊðO Ù󞳈ƒQ}Ï—ÿH��HºA4ïÕ«—~kõŠ\êóçÏW^îˆöžmß¾]R¤H¡ºè‚|ÕªUå×_UuÈ�´°õë×+aeýÐQ‹-”—<ꌂ¼ñàÚt»pá‚Ô­zØ*pØÃ–9"ÈG'wã~ðïòË—/%GަC)Æv–I€H€H€H€H€H€H€H€H€Hà]#@A>rÁ§HšPó.~%ZpºmM*d‘[ä×»©«.ÈCˆ‡ oÍúÏ8$ ¶\RM¨¨ ÏÉUÙ(ÈÛò´¾÷ð¹”í¼RõG¸z„­·e‘äOýû@÷Û¨¦lXÎ[Ëa_@•ûi{^øzÏ‹~®$9¼’ÙZ6ÒõX{Ä_Çdï©ÛaæpvŽ'õKgVYÀšEvïFAÞV¸|]�×ôx96£¾Ùò='í—•»¯¨ºåC+‹wÚ¤fíöÞ ¬¼.ÐŽ;ÖtàÄÖx£ oôªþè£�ÄÏÏO‰ÌýúõSÃñ÷®GÉ0zkë‚<þÞ È[³þýû«(hCÈz„®ÏìyO„7Þž¶¨¾g,×0 ÍH}�ƒº€nÙ÷ã[¶l)'Ož45#í<ì&L¨ênß¾­úáaåÑÓyã¿EkÖ¬‘o¿ýVµãð”‡G衎jժɵk×T¤]°7 ò8,�}X¼Íá�C¸z„­·eŽòÑÍ{zöì™éð Ò.LŸ>ÝÖVYO$@$@$@$@$@$@$@$@$@ï  òqàQR�wì!ù&Mš˜°zõêÉÀ�U>b5`’7o^ù믿T»=ömÁ¬‡a†¸/PGÌè)ŠPöG�•Ÿ~úIåuF¾xaððŸ2eŠn�Ÿ£ežzGÖÔûÂK»\—Uòìy�ÀC»K£<QÚè™}Cóà®Ü-Ô[8„Ýô½â»”+WNËïþJo’ñãÇ«:S…¡à¨ �<àÈk\Þ[úµ,`˜MäÖý@©Ý[ ›¯ Ö°ˆù¢¹8ø•4üq£@@vÒ&]6¤²dNë†&«vùæc©Ùk�j+œÓ]fö)cµŸµÊ´°ú‹_‡Õ×Ûë–Ê$ƒ¿´.^ï™+( R€-Àrަ�ÅÛ/«ê%ƒ*K¶ a=’õ1Žî=ª‚<.Ôé³^njé `–ÏMßú�½òPòû„õB×û =ƒ.ðÂÛ¶,ºyˆÌÈco »nôˆ®S§Žép�­=¡Þž÷Dxãíi‹Ž÷ ù Ü;Þ'¶ÁÞÿx·c�Œ3 Rg¸¹™ÿ�ÕªUKyÒ;99 RixzzšmÑ ~ÿýwS]L òX`ÆŒR¤HÓZØwÆ ¡à±¿eË–…û;2¦6)\¸°Ìœ9Ó4—e!:¸ç{ý–=‡PŒcY&         �¸L€‚|xzä{HoZ�wlw1ß^�ŸŒ†<½»lË=z¤òÌÛõœÄøŽÞhîîîââê9�0Í´`®®®Êãž¿éҥ̋PϱªâÝäÉ“�S)aìçŸ6ÕCë#þ±c¡áÁ!"Ÿ<ÂF[3Gù‹×kÂj¨€�üéÝç‘Ê…Ó+�ðýgîJ¿‡äV@¨èŠõ"äÑ9Ï¿j�[R¸%�mGoÈ÷ÿ;¨<Ï!Ò/h.,[ ò3´]aÍKÝC; ðLFhaÑ7ÔN{h†°èðÀÏB4±«‘&àC†ÈžZ>Ö<êõ0úð2O–8¾Õ)Ÿ»+Ÿ S®w°%4ëíQ¹":Á¤¥§¢ÍâÅ'C2Í#ßYN_~ ›Ý�IKN ¾OÚT®²ndu³C–ë:º÷¨ òXÕž«ÒcbèA‹ø.NòM£ÐßNúÔ‰ÕoæÐù»2jþ )¢Òئ å–M÷gΜQÚ¨Àßí×_mj³,D· �ù}Ò)R¤xÃãï^Þø[[¼x±®�ûˆÊ{Â8OdÊQyÏ 5Dkxþ'L˜P½s|||LÛ˜8q¢:ìƒ ¼÷F�mjC¡gÏž*|;Êåµï-Z´Pé30ïÔ©Seþüùh2YL òxVC‡¨¸uë–Ju€è'0D<@äƒð,$$D¢:{ö¬êV @•jDO_€ÆwlT¸[î)ÀÖ­[7^ß²ïI€H€H€H€H€H€H€H€H€Hà]$@A>…~ãI<%£!É×ðWí ò»>}išËXh^ÕGz}ò�±JŒ‚e%K:s¯]½ÝxE¨y䬷6—­°üúø�¾[/~þ�ÔmF�$²jxÕp…p}\d®Ætúøñ�äÅËÿà!T-’AïbóêÈÞ£C�ÇFÍ>"n¸`sOh¨W&s¸‚<ú|úé§røðáÃÖG· ѡ֭YóæÍc,-ªï Ëù½�Ì{^Þ-[¶”C‡©åúöíkÊ·®¯‘é0ôðÆCA胃 äÙ³ÿè æ†�eŽ9L¹écJ�GXý—/­¿cR§N­¼Ý³dÉ¢öÞÇ®]»¤cÇŽVçš0a‚Š®bîÆñz¹_¿~*s�QÊ”)õ&^I€H€H€H€H€H€H€H€H€Hà�&@A><^ òŽ=$xx+VL…&F.]äÔ}Ÿ ß¡Þuñ¨zõêòË/¿„‹Œàk¯!Ô5 žìÁ}úôi³0óèÏy„Їð^ºtiã0Õaêá}›)S&“'*:�8qÂ$ž!—ñ�?þh6Öx�iË–-¦*xù"‡|’$ILu–…gZXññ‹OËìµçUˆx½yÓ?*�Yº4Ê-Å;,Óö(*;ò¸MÏu/ôñß”�.cw«P÷z„dÿZó˜oQý?o\½Í(ȯÍ{âÒ}Y¶ó²Ù>òdI!£¿*&é4Ïk{í¤6ÏØ…'•·ù��¦a“¾-)¥?ð4Ý[~[tJy­£¾Sý\Òá#_Ë.Ñv�ï>Qó‚?tîž<*j'Ï›%¥|Ý0·”Ê›ÆXm³ìÈÞqè>¬G³¬>¤2@JgçxrdZ=›ëâÄ@M˜ÿ÷Æã0}ŠøºKÇz¹´4îaÚŒëׯ—.]º¨ªqãÆIÅŠ�ͦ2ÒO´nÝZÝ#´<þV`ø›Â¡–¦M› Äf–÷éÓGyºão@?Œƒñ˜ÞÐHÿ€uáe­ïÀK_÷bÖëõkt¼'ô¹"{uô=ƒœñȳæý®ïÃèEÁïCooo½Y…¶0`€øùù™êðŽ��õU«V©pòhD´]lÆax†#ìý°aÃÔX<¿ã‚½�÷ DðK—.ÉÅ‹Õ!#¤à0†w� nFA^÷îÇw?zô¨<þ\òæÍkôcb}Ë9#Ë}Ĉʃ‡CÖ¬Y£…XÎÍ{         xW P��O–‚|xHÜâ{IÀš o/k‚¼½c£»ß©Hã~Õ´ð¢‡7}\±¸¼w�± ╊^Ë•*UÒ›¢õjM��Ö8Y´°&ÈGû"1�‚|\‚Ü? � � � � � � � � � ˆP��¿ òqà!q‹ï%�mGoŠÿݧ’D±k—ðrˆÁ½‡ÏMáß‹jžéÑÊÝž�¬ßï/w=·DñåÃl)Å+M{†ÅŠ>qyïoà¶mÛÄßß_’$I"µk×~›[áÚv¸wïž)äÑ¢Eßëðýv"c7         ˆu(ÈǺGvCäÃ2a � � � � � � � � � � � � � ÄväcûÒöGA><$n‘H€H€H€H€H€H€H€H€H€H€H€H€H€,P�·o)ÈÇÆ§Â=‘ � � � � � � � � � � � � �@ø(ȇÏ'V´R����›              ‡P�w×ÛéLAþípçª$@$@$@$@$@$@$@$@$@$@$@$@$@$ä£Bï �¥ ÿ†@s             ˆFä£fLMEA>¦ÈrÞˆìØ±C‚‚‚ÄÇÇG2dÈQw¶“@”øûû˹sçÄÙÙYJ—.¥¹"({öìQÝ *$nnn 1k?sæŒÜ¸qCÜÝÝ%Ož<$+[|úâ‰Ôþµ¸j)áSN5úÍJ¯ØY,õë×???%ÄC�·eûz|#G�¨æ¼Ý{Kú*ÕL]×Õ¬$¯‚CÔ}é™s%qºô¦6ž=-A�Ÿˆ8;Iª|ÌÚÞÄMTöû{þ2X }¹TMݸ¼·ôkùf™LYvF~[tJ­¿rxÉè‘$&¾¦Õ9!jwïÞ]µÍš5KàµÓ6uêT5j”¸¸¸ÈòåËÅËËËî%Ÿ>}ªýû÷ï«¿•�Ú=–I€H€H€H€H€H€H€H€H€H€H€ÞäãÀ³¦ ’•->yþXêŒ*¡ZŠe+#CO°Ò+ú«~ß>QÎß<%ñ�Hß�FH¼xñ^dþüù2`À5nΜ9R €maxwÇ/åÞÑêï‡ßý(kÖ1­·²tS¹ÜŸ %‰W&Ó= ‡ê+þkW«º“¦IʼšµÇôMTö{3 ò�ÊyKÿV¶¹ÇÄú—œ–ñÿ¼ä‡U‘LžŽ…q�ìž^¾|)5kÖ„¬/^¼¸L›6-²S94¢zÕªU% @]!Î;bØç¯¿þ*NNN²páBÉ‘#‡#ÃÙ—H€H€H€H€H€H€H€H€H€H€Hà= @A>|(eÊ”‘   zɇŠm$@$@$@$@$@$@$@$@$@$@$ð  >ù8ð�¬lñÕ«WrôÊ-ø+Iíæ.^©²XéýUQä÷íÛ'-[¶TC^mä×Ï¢*j#lüí];Dså—²³ç‰›÷›á„ïÕ½‡Ç%²m'ÿ½/¯B^‰{òDâ™Ê5²ÓDjÜ�{Ïäò--…€f|R½±ö­Zµ’½{÷JŠ)dË–-*„|¤¾@$�={V‰éÚ¶m[éÒ¥‹C³tîÜY6lØ ‰%R{ws{3QÚ$;“ � � � � � � � � � � ¼5äßzû¦ o?+ö‰ª ß«W/•Oa¸7mÚ$îîîáb�ª¨}ïÈ!ÙÝ©­Z#C�Z’ïûþá®��QÝ{tîå}� ï7„«‡5mÚT~üñÇ7Ž¢^½zrîÜ9I�:µlÞ¼YyËÛ»‰õë×›Dü¾}ûJ³fÍìÊ~$@$@$@$@$@$@$@$@$@$@$@ï òqà!S�·ï!]¼s^þØù?Õ¹JÞ:õ5Ç—ÊQ-|û‹ ç’3]^)šµ”4,Ò<Ü0î«�-–w©y¾ªÜ[>Pó¾²_î<º)É]SJ6ϜҤh )äš#^ßáòà äì�ú­éš#m©�¿‘éÞ²àÿªÌØ:NU—õ­*YÜ}dÅ‘*ô¼ß­3â™<½äÉ�_:Tì!É\“› ß|jµì8·ÉT·Ûo« \>¬B®êa¾ëÇ%ÚHVÛ¹®‚ûÞ½{âãã#K–,1Ík«¢ö®m$àØQqrq‘ró‹kO[˙տxp_.ÎûCÕ¥)QZ’fÉ*×7®—»‡öËÃsgÅ5]zI�¿ diö©Äsv6‹›èØ{˜I¨ ‘ ‹Ok¿Õ°ƒòiêåó§ Û`Qsÿñ Y´õ_9}ù�\ð(® ]$g¦äR0{*©YÜË¢·ùíÓÀ ùsÃóÊ×wÍ*e•$‰\¬¶aÍßWŸWmåòyJ¶ Éd;k²÷Ô9sù¾¤wO,…}=¤e5qvŽgu½ò¯¿þ’ŸþYÝŽ=ZªT©¢7Exݱc‡ìß¿_ ®O¾üòK:~þüù²sçN¹yó¦¤J•JrçÎ-Ÿ~ú©xyÙf1tèP™={¶ZoÑ¢E’3gÎ×Ö;|¸Ìš5K�Å]»v•S§N©{ãö… «ÌÊ+W®”=z¨º>}úÈgŸ}fÖÑM­ZµäÒ¥K’*9ä§L™"cÆŒQS�?^Ê—/¯Okóú" @‚ž=Uí µÜÎ ™ú>»yC^‡ Æ®iÓiêN¦6˵Õ+äÈÀþª:{›v�÷ˆÌR�Ϫ…¦÷í¤=“ׇ®oÚ ‡úöVÓx+!EFš‡�®½G´O{Û!®ú2TØ�H�2÷¨Ì]秦nP6³ò¦×_Àc¾Íðmòï�'ª}Îå$¿?"›¸ä´Œÿ'ÔÃÜA¾EõìÒ½i^»¬ÕÂ×w¿W-WúO™ômI›KçË—O…šGhù¿ÿþÛf?k FAíùóçW^óéÓ§7uGÔäyo×®�©Î²ðâÅ )P 4A‘"EdæÌ™–]½5j”L�:Uõ™1c†-Z4Üþl$          xP��Ïš‚¼}É(ÈCÈž§…“Oí–Æl0BÚ£¬kµ¥N�ƪlü0 òîç¶_%)G,fç@9²‚|âIÔa�$ ÿ ŽC Ç•SžïðÚ_Üe»år¦û¨òÆ\ÚsçÎU§iâ.„É–¦õ"~‚ä)4/ùeâœè?qßÚòFA>¡–/¼ü‚¥âœ ¡Y×ÍMêÉSÿkâæ•YÊþ¹À¬-¶ÝØ+Ⱦ–R�V(ïxׄβeLMIl‘ï}åî+ÒsÒÿÙ»÷øš®¼�ã?�iê.LÝҺƣu´TJ]â^u­6î¡.q©ài¨HŸÒ)1}™šRÕÎL(5-š¨ŒÛƒžÃPŠ©k„PR¢A笕9™�sv’}"‘s&Ÿýz5Ù{íß^{Ÿ÷Šþó={­ýú#vmUMÞÓ"×�›—@¾Bé²9ª³”ðκ@ÛÛûç’ÿ*¾²á]óuáSSS¥eË–ú¹Ô:ìöP;×ýW�1�/[¶¬lÞ¼Y|||¬^ž¥®Y³f’––&µjÕÊ|Û=KA+V¬�¨¨(]±páBéܹsÕœB@@@@@�¢$@ ï£M om�Œ�|“š¿Öë¿;^t“¼óÅtÝ<à×Ãdtû)Ž%b äsšÚÞéB‡†¼ò­kÊ;}ßwèMdìÊArìâßô[óqSØÖå΀Ú/x�@^MW¯¦­WÛºuëD­½ý0·Ó«ÿ$_¼Pß²Á¤©âßw@Ž·7òU»t“F3#œê÷M/WlkË{Ù‚ÚΛ]›Ý©³n°ÈŸ¹”*Ýg|­Ÿ¦{ëêòîèæNO¦¦Ão3~£ÜºsWj–‘5sÚ;Õ86ä%�ïù\ ™k[§Þq Y°K¯-¯¾(°oiÇÓúøÒ¥KÒ¡C½¯~/^¼Ø´.»Fc *!!!Ù•æÚ®¦¼OII‘*UªH|||®õÆ‚˜˜‰ŒŒÔMo¿ý¶ôéÓÇxš}@@@@@(Âò0øòÖÉÈ«)ß§E8]xäüA™°êUÝÐEÞ²MEï¸y5Uý ¶º¼ly ä{7$¡ßtºå´˜Ñ²ÿônÝþåä=b|ƒÞXü �¼Z;Û>]÷Ê•+¥ysç ×x¯üÞ¿{û¶l}¹‡¤ßøQ|~õ„´ûó:)æeþÅuoc _;x¸Ô yÝé‘g‡Ë…øÍzºü {�λSƒÕ@~×ß.Ëh[à­¶±½ëÛþ 0ý*´Wá}ioÙý»î¦5ÆÆ¼ò!=êIèË ŒÝèý°䫽çDM£(º·ÓyÕpëÖ-QSÄ«MMó®¦{we3òj¹…gŸÍ~jüÜúUÓݧ§§Kݺu3¿”’Û5öóêÍ~5m½ÚÔ’/¾^ ¨IDAT¾ø¢ý¿@@@@@@ ˆ È{À�¼µA2òƒZ��Q�“œ.<•ü�Œ\þ²noX­‰,~õc§c ¿$øS xâ§+ y ä³{öé1c$átF[P�üòåËEM¹­6õ¶²ýíe+Ÿ7¿jN¬øPN¬X¦»küV¤<Ñ)(Û®��|ý±ä©W‚�jí�¼Zà¼ëÎŒuÍ�ŠÜ¤Áj ¿nÇ?ä­ÿ¯ŸzVp#Ðþ)ÓO0dÞN9püŠ>—ðûRªDqÓ:{c^ù)ýÊð®uì]dþ¶ò6v9ýRf»ãNÓ¦MåÎ�;z65+ƒ+›1�ß°aƒøûû»ryfímÛAì_>QSè«)è]ÙÔtõökV­Z%ê3±!€ € € € € €J€@Þþä­ ’1�©ù+2áÅÿvºðdÒ1 ‰ÎX7¾ÅSÏÉoú/uª1ò�ú‹Ô¨`v:]èÐà‰�üÆ�eÚ´iú“̘1C^{í5‡OUð‡êíxõ–¼z[þñ§jKÛ•´ýŸÊ–êšlE5��ÝwN¦þ.A‹„ |Z†t©m¢#Ò?b«=s]¼¼ŠÉ·è¥ßV7-üWcaòAAAòÃ?HéÒ¥e÷îݶ¡6k³ç6òÛ¶m“Š+š•åÚvòäIéÕ«—®S¿çÎ�›ë5Æ‚)S¦H\\œnRëØW­ZÕxš}@@@@@(Âò0øòÖÉÈÖï,oõ^àta©]2}õÝÞ½q_™Òe¶SÍT ?-Q¯9ïô!³i¸pá‚tìØQŸíÚµ«¨)ì cSëÈ«õäÕÖü½ßŠß³mLÃ]ùëׯ‹zCÛ¸5lØPÔ4è®lVß�?ô}мòövÝõР:2u@CÓÛ´Ÿô•\¾ž&Õ*=&±ó;™Ö #�—õë×ëÇP_qå-÷ü ä?ÿüs™9s¦~†ˆˆé×/ãK;F›œöÕõ/^???ÙºukN¥œC@@@@@�"&@ ïN om�Œ�|éRedÍø­âíå�åâþ:_Öì˘¦~D»PÜzT–óêÀÓù°?‡È�3{ôçú|âN)Sª¬ÓgÌ©Aò*˜¯^½ºÄÆÆæTZ`çn']’í^’ûwïJùFM¤Õ’Mïå.�üáÇeàÀ�Yž188X¦OŸž¥-·«�ü•Ó$pâWº»5ËÊê9/8u­ÖŽWkÈ«­EýJ=ÃüK Æ #�7†áóæÍ“ž={)Çýü äU¿fÍ}/W¿�œœ,���úÚÂüKŽPœD@@@@@�B �/4zë7&�·fe äÕSƒ"¤k£ŒõâÕñ�Û?ÊÐe=åú­u(K‡ÆHÝ* ô¾ñ‡§ò 6Í–M‡2ÖâŽì³HÚÔmoüx¹îGFFJLLŒ®Û´i“Ô¬Y3×k ¢ààÿDÈùØ�ºëÖ,—rO?ãt›¢Èÿò‹HŸYñrâÜ m²*üyiR§BŸwV”?ÅŸÒmû6�QÝëe9ovP�üåË—E½a~ïÞ=éÖ­›¨�Ýê–�ü/6ÌN�:åùK(jÝûY³féGvõ V?'u € € € € € à¹ò0vòÖÉ1�÷zÄKB'K“š-åÚ­«²ô¯Qr:ù„k™?Ðü­ë¼ògSÎHJjræÃÞúù' ÿl‚>®S9@ÆvË<§vjÛÚ+á«Û�= “>ª÷µ!£'é}ã�é1c$áô.Ýôåä=™×kÔþÚ„OdIüot³š) o‹`©QáIÛl�궆ÕËã%Ëè}³Ç�—>}úèScÆŒ‘ 2>ƒYmA¶¥ž>%;‚mo�ÛÓÊmž—fïF9Ý®¨ò bsÂy™²dŸ6)íã-óBšKË•äæ­tùã–S²lÃq}®ÌcÞòuTñ)Y\Û¨P?éÚmû¡þ½2ö¤¬Ú|RïGÏh+ÕýË<_òQ/)ë›ñ7tòü é¯ÏMéßP†w­“Ygß û A¾Ú{ζ&¼Èáè—ìͦ¿CCC%>>^J–,);wîÓ:ÇÆüä÷ïß/C† Ñ]«µàGŒáx›�‡ &ûöí“2eÊèéêK”(‘c='@@@@@@ h È{ÀxÈ[$Ç@>»«|K––—™¾¯®Ék ?sm¨ì>±5»Û:µÏê5_^è¢Ûó3�OK¿-C>ì!É7“œî©æôù_i[·ƒé9{ãàÁƒ%11±P§­WÏr`Æ’ô;D¥ºÏ¯Š_ÿ'í�¨å@^êãí‘퉗²˜¼¼ŠÉœaM¥w›Æf½.ù'é¶Ù©=»†ÆµËË'3ÛéÓùÈïÚµKBBBtßsçΕ^½ze÷YÚó#�Ÿ={¶|öÙgR¼xqÙ¶m›”+W.Ë=r:HJJÒo÷ß¿_ò²DAN}s@@@@@þ3ä=` ä­ ’1�Òf¬üãÊ÷²ã»-rÿþ½Ìü+ÖÒ�tõòþ™mŽ;¿�‹”/¿ÍXOú“Ñ›ä‰rÕKL�ç¬C¶³pƒñ¿_8$ã>¬û ~nŒ m;Îéêm{õ±½ùÿå¤ÝRêÑìß"NM»¡§­ß˜¸V.ß¼$wÒÓ2û›Ûo‰´ªõ|æ±ÙΖ-[dâĉúÔûï¿/íÛ»6í½YŸyi»vø�ìy=ã�åªAݤQxD–nRÏœ–¯ö×mã'É“3 �E‰sfÊ…¯ã¤˜——mÿÆx*ßö�=*ýúõËÒßСC%,,ë¬Y LÒ~¾'ÍC¾Ðgú¶ó—ˆaMLªþݤBù›¾“¥_—Ûwîþû„m¯Fe_™;²©4v˜ÊÞ^tñê-éøFœý0×ßMëV��ßÌø»ùþÂMéõæ}MØÀ§eH—ÚN×O[º_6}sVÔ—.ïítÞØ ¦�ïÛ·¯;vLôzîÅÔ«õ¹lQQQ­«Ô›õ®„éꢔ”騱£¤¥¥IÿþýE…ó®lóçÏ—�>úH¼½½E­=_µjUW.§@@@@@Š€�¼ 2�¼µA2ò#Ú…ÊàÖ£DMä\¢ü|ïg©ÿ«ÿ’ ¾~Ö:£JOã­¦ó®W¯ž¬]»Öö’zîiA°}3.DR~+�ØÞ`n·z½”ò«\·q‹>¿?o ºÃ3‚îW;Ö’ƒŸ±ô\÷m�öI?ÙÖ”ÿQ|KyK½êe¤|iÏš:}ïÞ½2|øpýy-Z¤ß<·ôá È¨«)òãââ¤|ùò–{»zõª^{^…ùjš{5Ý= € € € € € à(@ ï(â†ÇòÖÅ,�·v%UfGŽ‘Ø–pÿE/^,:ä<ͽYùÑ–¼g—$„MÒ]=Ùÿ �œݺe«·ž–È•‰úÙ¦ zZ‚;;¿yî–žO5nÜ8=m¼úȺuëò©Wón®]»¦ÿ¦ïܹ#“'O–‘#GšfÓº`Áýv¾z+?66V|}}³©¤@@@@@в�¼Œ>�¼µA"�·æäJÕÙ³g%==]üüü /p´}!à솿Èý»w¥D¹òR%°p¦ÏwÅ-/µ ǮȼOÊwgoèË£g´•õ+æ¥+�½&55U._¾¬×s¯QÃyÝûüü`÷îÝûÿ[Õ½Ôò®lÉÉÉróæMýïBýû`C@@@@@ÌäÍTܬÍUªTÉ̽͞‡@޽ƃ§ÉYàÀñ+ò沺(ýî}¹|=-ó‚&¶ußW…g¬×žÙÈ € € € € € €€Ç È{À�È[$ykNT¹‡ÀÎCIòúÂÝNÓ¬^Eyots©\¾”Ó9@@@@@@úÈ=`ÿþýÝ9OH€H€H€H€H€H ™(�o&Ý6ÄýÜsÏ™O>ùĦ¼êª«'Þ}÷]3yòdëgèСfàÀ�MÍé¹çžkÆŽkÓ¸ÿþûÍ Aƒšš#ÿ†@'sïä¼w×ú÷õ×_›Ë/¿Ü\sÍ5æµ×^³“óÊïýàÁƒõgð˜§Ìц­±ÆÁxÆ�gÖYg�à½N¸¸ÓN;™¿þõ¯f�0>ø`¦,/¾øâü·ÙfsÆgd ÓéžN<ñDsÙe—ÙÇØc�=ÌqÇõHï¼óŽ™2eŠ�c©¥–2³Ï>»‹¯+~W]æ:ü¤÷v>ÚK/½d6Ùd›…#�<Òì»ï¾ÑÙig÷Á°†0`€™gžy2?„K/¾ø¢](Ô£G³ÄKXÁk–°0kÒ¤IæÙgŸ5}ûö5+¯¼²Yl±Åê†ì±Ç „�õ„¾Ë/¿|=/©÷&Nœh¾úê+3Ûl³™¥—^:Õ_Y7ºCû|À˜;î¸Ã."ûûßÿ^º.O«ëL»œý¸rÈ?òÈ#f—]v±‘�=Ú|ÿûß/'â”XþùÏš_þò—¶­E[¯n«­¶rão½ÖÎcWê»üñÇf¥•Vr8ž|òɪ~Ÿ»Á     (™ò%mwtÛn»­�#˜Ô Û/½ôRsòÉ'Û¬žp f÷Ýwoj¶Ï>ûló«_ýʦ‘E0×ÔÌt£ÈÛÁý¦›n2Ï?ÿ¼�”=ì°Ã ÓnGÞ g–-´)h[Bî¾ûî3C† Ýr×ò”ù{ï½gV[m5Ö?ét�üŽ;îhüq3ÿüó›‡zÈ´ÔóEYÄ@hÖÕ&_S3\ |»°näÈ‘æøã��ŠBý?ÿùÏVPxï½÷V- éŠßÕ¨‡íB�ëqog6!€ÞtÓMmŽ8âó£ý(:;íhã°8ê‚ .0ø6C ‡E?¿øÅ/>„süãmx,PPaS�>ÌœrÊ)v±�†ÅVLpoÑEõ/ÛsX�À¾‘˳`É� B—í¶ÛÎ^¦3Ï<Ó¿Ý”óNkŸñ}½ð - ¼Æ kÈeÿý÷7wÞy§µT‚LÓ“kG�i?öãÊ!ßJ�<Zm´ÑFUV©ô)¶ÜrK7þÖkí<–Ùw�oB; ÄÔýío3sÌ1‡þä‘H€H€H€H€H€šF€ù¦¡mOÄ]Qp�gº=Ô¦ÏTÛÁZ„÷Üs�Õ„{æ™g ƒmGÞ g–Íûï¿oÖ\sM«A‰E@Xä v5# ÁF&;cÊü–[n1?ýéOmIP ÿ�5’é½Z–)�‡ióÍ7·ÈFŒa~ó›ßTáëŠßÕª vè�FÜÛùXíÈ'Ÿ=o÷ /˜óÏ?ßÜ~ûí5ñFù/¿üÒÜxã�V(ûÆo$³b²ä/ºè"«±©�g™e›ÜáæœsNsÅW˜%—\R½Øc³òûí·Ÿ¹ë®» 4ý¡Ñ�Eø_•Á?:M  ÷-¶ØÂ>éÑGmöÞ{ï†O== äÛQgo‚öãʃÚJ�üI'�dÐï…ûÞ÷¾g „×°hg±ª«º¼ß5ÿ9bÇ›Èû4yN$@$@$@$@$ÐJÈ·’v Òꊂƒ·ß~Û¼òÊ+öé¡iÓÉû;· KK¢Üc'HôáÛ‘wM›Çü`�cç�w¶1y=jԨܑĔy̤^îŒ69@ y˜¸‡6+´V¿ó�ï49‡]#ú2ò|°?~¼}0h/³Ì2UÙ¿«UìÐ�¸·ó±š!�oUsïÐ>‡Õ u0Ïþé§ŸÚŸ�ò°h„Rê°° ‚r¦7Èc�àõÖ[Ϧ�…Xˆ ‚¢/¾øÂZgºá†lÔÐNÔsMËȯ¿þúæ�CÑ[UGä)¤a_å)ñãå—_¶Û€Ël`~ûÛß&|4çg§µÏÈÿ=hW�ùÿ´îŒý¸òX·R ÿƒüÀ<úè£vÑ+¶ÁÖ �âbúî±ãM ä;¥–0Ÿ$@$@$@$@$0�‰)ºéˆ€˜à¬,¼ðÂöï_ÿúWðÉ.¹äçĞýð" !ðÃþÐÖ-h Î0Jà÷¿ÿ½kSÄ<}ËŸâøƒKÿOúSËÓ/3ÁvØÁ>Ëw¿ûÝ2£�îâõ®ÌE8_øù^}õÕÊСCm\»îºk0~WƒX¢.fá•@dàüã®~‰É÷ÈØâƒçiãdqŽË»ì]\‘­‚*"v׎:꨺:묳¬ße—]¶rúé§WdOâŠì‡ì‹‰äºáÇŽëüžsÎ9U~eQ€{ßÐW•½�«î‹Y}VvUÝ‹ýqøá‡»¸eOðØè¦ÛðÏ>û¬ã$‹2=ç�ücF,dòß)žºS�a?®¼Zù—¿üŽC²è¨¼ˆ1­»îº6-ÑŒÜíÚ—ò|×’O;ÞüðÃ]á[$údüM$@$@$@$@$@M!@ ùél‘E™š|XáóÍ7˜,}÷Ýwͬ³Îjæž{n³üòËÛýê`†:äþóŸÿXS¤¡{"ð0ýúõ Ý2X­þ»ßýÎÞƒö’I¬¹U¬üǾäØ3tÕUW52¯kþzêÔ©æšk®12áj Ý‚x ™ÍSì üæ›ošÙgŸÝiô3q{¶ÂL,ÌñBË®ÿþf©¥–²Ì`Æ;éþýï»ý:¡Å†çƒ9Õ¤†Ó& ÕHVE¹kxó–94¿°ï²º[o½Õàù¡ÚsšØ;éŠæ½¬:ƒ½QfØ+TZZ»¯ öNg™0²ÙÝpà skä%ŸÓÿ�}¯¼òJ{i“M6±æÝ¡� -%˜ Æ{†÷š†õø£Pg`6û_}õÕvÿq¤“•ÐøÅ^Í -´PMT`xýõ×Ûw ïKïÞ½­a¼30}r>w܇F�­W˜º4hPU0h² nû®h™ûqèyQ-›¼ïª¦{Dù¢ŒPßDðgµÚѶ¡�ÚsÏ=î!ÿÀ˜¤Nº%–X¢a}A˜Ø:Ó¶ZwêÞ`zö쉟-qeiÈ{ì±æª«®²y† mYQ“ÿ²¾«ÐPFO?ý´ýá]0`€YpÁm¹­³Î:uµÛbêkl™Çæ= 5 w “ö”)SŒ,2ÐD{ˆ¶ ¼aª\Îv«‚Ð÷6©!�ï-¾yú#íjã𠃥´%«¯¾ºÅˆþ�,ö±ç�4䯻î:# :ÍÈ‘#]»�¾›™løzòHõý,pÅ·i®¹æÒ¢4§žzªëçábÒ¢Š¯!¿ýöÛYàÂÆœ ì‘/Ä�o¾yÍrEÛg쉌úо6ú�" µÌñ}æÒò-㈱¶¾À;…2Âû‡±¾í²ˆÉ&1zôèš÷EÓ.òMÇ8ËïÿÁ\ýçŸn-$m·Ývµ=¢ï�ü$]Ñï"êú0phOWXa…dÔvKäuýÂz.Oß½¬ñ¦æÏÂ=ä•�$@$@$@$@$@­$@�|+i· ­20}|à�š &¤æx†f°Âî�L0¬—"DÄ&CΟÿÉO~b'å °J:L0cB 9!¢Ée'2uÂыɿ'„Â=ô�»”sLbBP„É‘¤Ãäô>ûìcDã¦Fpå›îýùÏnýùá1¹ƒ‰Ñ\²—/¼ðB³ñÆû^¬ ¼wDR´Ì±×²hÓUå£ÞL.ª€À÷×Î:áÃ1ÇS³Ï.¶VÀÞ©¢i³ZoRÍ–¬ç�?þ¸À¿ {>ù䓚àx±?zHhϧœrŠ«6&³!”Ç~ÒaBü¶Ûn«ºŒÉă:ÈÀ”rÈm´ÑFæŒ3ΰ Xüûþ»ê_O;‡@ “ø¾+Zæ~zžgROÃ}W5|Ñã{ï½g°@á©§žª‰ï„xÏ<óLÝ6êÐCu EüH¶Új+#Ú©þ¥àyL�A„ÈÒò„Ìi‹­|e�—!�Ç‚µ×^Û.€ÁÄ5Ä„\ßUr±H ß 4óÜøö…\l}�)óؼ'Ÿ'+w„‹IûÚk¯5øžÖs0‹ŽoéùÎoãŠöGÚÝÆùÏ“G ï‡Óó¬ù·ÞzˬµÖZ6"Bx¤ý±6Qõ­Mš­o–@Þ¯ÿ0UÁm³\Ñö<,vÀ":,LšóG~ÑÆÂUk– 8‡@füÓúîö¢¾£^öéÓÇ ËÕ¼5¡˜Å­¶ÚjvÑ«ï×ßC~̘1¶ÃÖ ¾›e–YÌyç�góà_Ç9ò~òÉ'»ÅQÉûX¤€>„ÞIWÆ»šŒ¿³Ô™²úqŸ}ö™Yn¹ål6°PŒ1.9ôI±„:öãò�¹”]Ì ¿�;÷ ±øäÒK/µÑ§�Š~Óõ]Ë’w,ªÅ$¾+ë»xÄG^ã{‰vc±€â']sž§ï^ÖxS3A�¼’à‘H€H€H€H€H Õ(�o5ñ&§W†à“}Ðb‚ÃÄ ôÐ(Ãàƒkhÿ@ Z!'žx¢»íö—^zÉþÎ*�×À˜ Â„-&ð¡�¦†Ø“Z"I­LNÁAè�"Ü}÷ÝVcKý7C ¡(&ðà�&æÐXÕ¼ƒ  °úB8h¿òÊ+VXM)hï©ó'÷Úk/+@Ö{z,Êá‹–9´.ïºë.Í‚ÕD„Æžš\IAdš–v;ê 4± ¨“ô\Ckšd¾K›Tóýä9÷'r54Ñ0 †˜TÇž»p'�t’�@$äüºÍ8å1ñ xo¡©A4B}�<¬^¬' g ­ ‡ú†´11ŒgG½…ÃBhàø÷üI>¼ßx8ä–|wØa‡ÕhõÅÔW?nœç™Ôƒÿ˜wácœßFC¸‚:aÚ(h&ª«×Faa ´…Ô© ¹ˆ@>O�Ñô¦�<›œþùö±0Ù;bÄ}Ī£_f°`1pàÀªûø�Éw”à°X`÷Ýw·çø‡ò…ÀL¿ÐÂÇoLÜc¿m¼;*A”Q_‹¶±yw¼“¬ÜcÓÆÂ=ÙÚÀr† 1ç›o>Í[¼oLÂ-½ôÒfüøñ^�-�¤faÞþH;Û¸ª‡‘­Èc¡„îp¾†;únx�Ðv@P�o,®¡ D¿P�/�‡¥ÜÇ÷Ö™`í¨!¡¬†?þøc»H %ñ„FkÚ·Pø¼×жÏ*�×ô „ƳÂÂú*°º7ï¼óÚï< ªóu²,ì$¾Ú/C_}uh³À¼µ_‡xð~øn‘E±Öük¾�ùB‹ 0†@Þa}‚hÒ'ù£ÿ'[hY?X$�ó<óÌc­‰¨eÜDß8©±ï ämò/ﻪáô˜µÎ”Õ�óò¨ãXT‰úŠö ã,¦ÀX ý6_ Ï~\±1—–sÑ#úÙ°@§ã=´Ohß0.ò]hìóMÇ"b¤£–40&G;‘lñ®$µæËú.¶Z _ÖxS¹áûL y¥Á# � � � � �@K È Ÿn:"PÆ^·2iêöUm�:ØwM„5×Ó.ˆFŸœÓ¼Uü=[±Ÿ›*¢aãü‹@ÞÅ#æ·Ýu=ñ÷ì>|¸Ý÷TïÉcEä.|Ùû3#~ì·Š|ËD`E&¿5i{”I³Š?í}™\«ˆ  ê>~È\÷üÊ�õ#“Õ$Øëb¶³"Úò5aC²rGزʈP¼"“åUùÓ"¬Š{Ë6zÛeº’ÜËW&à]8¤-ÂF´+¢Içî‹ùYw/t6Ê ïa—µÌCqçÙ‡²Œw5”‡,×~øaÇIàTÄ"‚ &V \–yÚ(mDÃÚÅWï¤h�Ñ8EÞ=‡–»h~ëí–Áí(þ|ŽYG~EØdŸuݯÿÉ8b¿«²ˆÍñ�X2zûïMè{[V}-Zæ1y=hî±i‹eŽŠ,ªàû›tøŽÊb,W.Év+öÛ’L¿[ÕÆ…ÒÁ¡{ÖF{ȇÂgÝC^s¹tda§‹JPöº­*"LªÈâ/û[„½ÎNP.Ú¦¤Eû´" YªÂÕû! 8]œØ'»Õ.kû,šÑ.Ÿb Úö 5¯à¢ý+põzËýo‹Xü©º§?F�åâOöQÕŽ1{È#o([À»(eaaû[kyŠ•*w'²ÑõuD€hë‡ïAM¹°xg“®ïjÖ:SV?í¢òÁQTVÐõê€,ެâÃ~\ñ1—Ï6ï¹,6rå•lSÄ „»‡²LŽÊú¦kžÑWD:Ïdqe}eaH09Ytnóƒv¯‘ËÓwOÆ¥í¡X7JÞÊüßô!ó|O2GN�$@$@$@$@$@$�B«îé¦#±‚ XsÍ5í`¥iBÀ<ȲNBû“j¢!R‘ÿ5É@0‰‰Ѽ©¹'æ€í=܇;éDÎÝÏ#ìJÆú-Ì.îääŒú­çB‚�“½(�Ñx²‚YÁo¯Ax”gÒ +w䣬2/c‚ùÉš÷˜:#ÚfŽ5:„œXXp~’“j!ÿy®ù¹¢•_‘}’k‚‹f¹K_4:kîã‚/h“½GÝBŽ ço/b‚\à= 5ÞEëÜ¥-&(kîû:I _Ö»ê?Ös¿�mŸš`bÂÔ1ÏÓFeøh‚Eꌆű+äýü9—m?ëäbœd|±ßUÏð]Â_Ú$v2Mý]V}-Zæ1y×gð�y¸—�¶ŸœûmprÁRÌ·%™ŽþÎú]Sÿþ1Fp�xZ%�sÈ®®+S,6Âwõ_…ô¢íüùßÈ‹vE,TÄ"Px±(áü#|›Å‚‚�(x.ZÆ|mj}Ú`Bu.fmŸ}�¼X‘¨‰ñÕW_u‹3ÅBTÕ},^k'ö9ÑWLöŸÁ‚+eW8ñ#V �ÅIçÛÄ¢KÕmô‡‘/ü¥õ�ÑçW?b©«*|Ùïjž:ã·!1ý¸¤@BÝFŽý¸oêL̘«ãÐ}ì Úç5^ð.êXu69v(ë›® çÈk¸´£_§µ W¿þ»–Ö—é$�¼>�$@$@$@$@$@$ÐJÈ·’v ÒŠ ‹Ð°Õ‰/1e=�™uÚèCrbØæ-´"^'ì0ùÒvÓÜVëÏ–GØÊGò&e”™˜2¬@Û.ù'&@�1ÝžŒÂýÖÉ Ä'fv]1aîüd9ÉÊq•UæíÈç­3˜Ö2K³øàO''Õ²”A=?þ¤×�üã W,,ÑûyÔ¿�Snþ&ݹçžëž ê|'fìݽ‹.ºÈ¿Us+�Y€‚•-­š0üé=,:9ômÔOrqbÙïjž:SV?ÎÈÃÊ–¿H%Äר�ûF ;æJã›vÝ_Ü�Ö¦`A�Ö×䨡¬oºæ/F ó]¤@^K€G     ÈG€ù|¼º¼ïXÁPM‹êd°aÃ*²?d“h“&Mª2«�HÖIhRm̘1Á¨UX í)ßA#A5~a :Í­µÖZv’$�°+-.ÿºj`)³FGæÒ&æÔ¼½Æ“¤…õ¯gåŽ0e•y;òyëŒoõÞ{ïõѹs_МœTsž žø¹§�vZ0Ù›ÝMê{ì±A?¾ -¤u „ L­[õ„ºÈæsë9ŸSÒôs½pþ½<õÕ‡ó<ª2ßÕd>ý†ÜëµQª š§�Ê*ðÑü©3vz8^sÍ5®þ§-tñŸ3ö» ኖ+Êf»!Xö,˜Ü—½LýäªÎ˪¯EË<&ïU"?òr/#m˜Ç†@}móBÇãŽ;®*»1ý‘ªˆ¼­jã¼$Ýi«òþ·`ìØ±,$TÞ²—¸Ë�.N½¤6·ó8ñÛúFm$ iŸï‘.DÛÔKYÛg_ Ÿ–×<Ðñüàƒªò�­ж€)¬ øN·À‚/˜Ì®çbòxVù’&ìµÀ¼ïtË$¼£i »ê- ,ó]Í[gÊêÇùyl³8öã¾Èk½ªw¬7æÊÂÚ÷A´¦…-:BNöyw~’c‡²¾éšn�|ßE äµx$     �|(�ÏÇ«Ëûö5�ÿõ¯óë _“{"&¤`¦B8�tð�Ðr íuLL.f�„ö'Õòô!ÐÐ<†ö—×¼Á*ü5šÈUÿYŽ05®ic2t]1Úè¯õœ¿9&8?üðÃzÞƒ÷²rGà²Ê¼�ù¼uÆß{3¹§©½óÎ;]Ù&'ÕÔOÑ£?‘›¦±†‰s­[`r¾ mòäÉ!/5×üÉBl“�æ°'¥¦Ÿ& @X_Ó•òÍxWÓØ%¯üñÇŽe½÷Âú¼mTV��æ©H�Ѱ�~„.öŒch"BÒÈ•ñ]…�˸é{…#¾Ø×&ˆ}Wf}�)ó"y÷ŸçE¸#\LÚÞ껡¼Ñ¯Á‚7Ô߬ðÑG�䜋é�¸H'y¾É‰ ¹%Ãâw«ò¾UX­Ñ…(I 6Ø–HßÁP~ë]Ó8Q¶õ4‰}­ðz Ïê¥UÆ=­ƒ‡rHÝè´}Xj©¥Rý¡�кŒw#éÔ„ÛjeàÍ7ßt R°mJ#‡x5�¤6{ZXXùA˜�æ>Âøy¼¾ÓòÄâß4‡~…æ)¹€±Ìw5o�)«ç äm¤ŒØ�ûæÛÙh¼…ûõú\Ê3ëñÄOtuñ±Ç ƒ ^ë«?v(ó›® çÈw¥ï¢¿À*¯å—²Æ›Ê‘G     h ä[EºEéì¸ãŽnÚ2!3ô:Q�µ4‡‰LÆaoÙe—uav±Å«L™2%-hÕõ¬“Ð1“j(«fP=íÄ”)�÷Ó†9âX󭘘Ô2 òº¬Üýxc˼¬ ’¬y�©3¾9ú4ÍruRÍgVôÜŸÈMNPkœ˜P×z�6Ië ÚÒáh|z¼õÖ[]¼0œæT8Œw+´ „†ë�|Ùïª>–#´UKítšSÍÑû¬Á&Ø¢ý‚­¤%¿}¥@Þ§]{®Öà雘Oú|æ™gjêõÊ+¯\µ¨ßô!×l�Œ¢áo?/ÿû߃þa5i“M6±i`ë•"‹ƒ¸˜µ}V�|½ïí¨Q£ßÐ � � � � �ÀôH€ùé¬TGŽé& Bû8âqÏ;ï<çÚ Y´c1pÆä©NöÁÜn× á*ò¡¦IÓY˜lÃÞóÈšŸ,Ïò£\`Š0Æa²Æþèä9dÍ ^ZY¹§ÅQ¤Ì;I ï ‘ý 3Ÿ4×µ¾§ùñýç9÷'r�9æ˜`ЧŸ~Ú¥Ÿ&<,"hƒE}®SO=5˜6.®¾úêÖ4Ië9ŸeÚe½ð¸S_ýI½4¢š~YïªÆ—ç¨<±@šÓ=’ó´QY>šf‘:£a;ý¸å–[Ú:½øâ‹W².`iÖwõÅ_¬üñî]D9bQ”ïʪ¯e—y–¼ûÏQ„»Þ?Ï’¶/¬JÓŽ~ôÑGû¤¬,!ŸŸïVµq~šzÞ* y,Õo‹“û™ûßµ�vÚI³˜ù¨u ñ¿ñÆÁp¾·È–?\_zé¥îûŠ£VÄemŸU �çJ3+¿×^{9¾I‹Èò¨ç°�~¯ö#q=Ë3´Z «VZWÒ,øÛ]ÜtÓMUÅPÖ»Z¤Î”Õ�+"�g?náJ옫ª"eüá×El¥r¾%ºäØ¡¬oº¦›G û]ô-]è‚͇Õ¢P^�|£¾»Æ¯Ç²Æ›�$@$@$@$@$@$Ð*È·Št‹ÒùéOê&¶Bæ,‘�_þò—ÎÏ<�+gþ¤îÞ{ï�)lÖIèØI523¤5Ó‚:é—GØ•å!ÁBã~á…² ú9ãŒ3\<ÀÌõšk®i¯A£ ÚgY]Vî�âËS溿)4¼²Lü¦¥�5ï1uƯ0ór~�JNª…üç¹æOä¦iùøÖ,®¸âŠ`ôEmDj}MÛÏüŸÿü§ó³óÎ;ÓÖ‹íÈÃÂ�>ÏYg�¥Ù ËzWƒ‘7¸¨{åâýY0yþùçÝsäi£² |4{EꌆÅm&Âý¿4AŠ®Ýç?ü°ãûóŸÿ´…йçžëîŸþù¹²+jùšï8‡ÜöÛooÓÀžé0Ùž×ùBb­GY¶·¥“µ}öëóm·ÝV¬¬ ÍE~`u Íùõ|5ÿcÆŒI Ruý¥—^raÒ³T�1&ëñîiÓ„r°¤~°�Æw1ý@?ž"u¦¬~\�<ûqßì!3æòË?ë9L«k]<öØcƒÁ`YNý$Çe}Ó5á<ùØïâ|àž+ôì÷¡m³gÈÇ|×Êo*GI€H€H€H€H€H U(�oé¥ãO¾…4_a®NM"cÀš¨Ô}'CY†6’N2d5£Þ á*òzã�7º¼arÐ7±�s$�°+Ä!yÍ×:€SÚ$1Âaò04±‹Å:q ­j?a"ù¤ª E[«õmžßöâ<$Ü*Zgôy;Q �7Ê©Þû¤Ïèc¿«ÐJÃV'œp‚mû!|A�Ež �Šº€¼Á Þ�¤+£¾-óؼÇp�IÛ7­‹ïÚth”b+–û¥/¤f½µN”-�ow“çà§ØEŸý8½Ž#ú*I‡¾“ïgÝu×uá¡�­÷ |GÇwx_Thƒ4a• }I,ró5í!HK:ôVYe• ¶h™0aBå¹çž«ÀrúÛl³�Ë^!KHˆO_B ”\à’L/íwQ�|Lûì¿çà†…:hÃñ]†ÐZ¿Yž ‚m-oÓ/¤=¿.š@Z( XÒ~ò”t1y¼+þAX$A}Á· ‚r¿îaQ[ÒÅö_Ñ:SV?®ˆ@ùf?î¡|Þ1ØÅ8X›Ð÷ í)ê ê+Ú8]è«÷Ccÿ]�Í{�|ìwÌЖè³á»‚1Æò˜Pë%¸ŸE Ÿ·ïî—Y‘ñ¦žç$@$@$@$@$@$Ð.=�°¡›®ˆ�ÑÈärÝgšuÖY�L¸šyæ™§Æß²Ë.kD�ì®Ï4ÓLF&\±xÃ]á‚A:½zõr×p"š9F&Ϫ®Õû!BH#ƒjëE&ûŒLÊÙó#Ž8ˆ@²&¨˜­4¢]`zôèaĤvÍ}tJ1kZsO&pÍŒ3Îhļ¡™þù�ëjüÄ\�•þ6ÏbîÓEƒ|úÜô†ì�iDÐiÊ„„‘}T�LŠÛß"812i­^íQ&,í5™µ¿ÅT ÙsÏ=�Ÿîˆ$¦Ì]&äÏ‚2 • ü]}õÕFöÑöƒ´µÎ ¿Gy¤Ay„œ˜s7ãÇ�··F�mDÐòVèšh,Ñæ¶añŽÉd^0žØwM„vÁû§œrŠ¡ˆ½‡ú1pàÀ ¿äEÔK¼+bÎ9yËýÆûrÚi§5|n¼Ã£F�²á®ºê*#Â.Gè$¶¾†âÄû,“êAŽbú߈6� Vô]uDœ\y啿øã�¶ ¨x×Q/ÓÚ¨ŸýìgF´�2çà²Ë.3"\©ò_´Îh$"d52 ­?íQ„ô¦_¿~U׺Ò1ojDxa³$‹5Œise/滊ú'kªÒ›yæ™Í´iÓÜ5|+DØdda‰»¦'eÔ×¢e›÷î±i‹f¼¹öÚk£í7€3Þ18þÚ~ÎE@bÀH]l¤ÝmúBY¿W²e‹ýê³ã8räHóàƒú—RÏE0nz÷î]uÿî»ï6(û´ïúch “ß+± cü>TU¤ßþ˜a† úˆø~%Ê ï¾on¸¡¹øâ‹“^2ýFÿJLSWùÍÒÆÅ´Ïè÷É¢U›æì³ÏnD¸_•¾þ@ÞЬçÐÖ�¿:Ydg¶Ûn;ýÙð( H�háý­¶Új¶Oâß‹YæÎ;ï´cYDáß²çèn¼ñÆö\,¹ôå}‡çF=ôÇþ}œË‚û>÷íÛ·êVì»SgÊêljֿ‘E ö¹’mQÕÃ&~°÷£ªö"˘+�°ÐOŒ11nKk«ÐÊBwhìPÆ7]3. Ñ�,’1²�ɈP\/§c¾‹ˆTïÛ^Üëß¿¿í»â›€²H ¯º<}w ƒc‘ñ¦žç$@$@$@$@$@$Ð.È·‹|“ÓÅ‚ÝÐdÁ–[ni'_ç�wÞ`.N<ñD#dF4Tjî÷éÓÇ †1ù† ää&²ºaƙ믿ÞzG^1 ‡ 1•iÏý˜Èƒ0‚ÂгÁ/ò-¦ì &¤EKÌ.:À"&J‘oÑØ6bþ҈Ƒu)簈ƣÍW#šx5qŠÖ˜XcBUù�wÞyF´-¬_.¸à‚šp¸ ¦]Íf›mfôìÙÓN~Š‚õÃÄ”¹Í€÷ªÐB€¡„NJÁ &‹0i付¼—Ug øA½ÂD2&û11 �ã|óÍç&žÄlµ«Ÿ~þ‹žû¹à!çÍ7ßl'™4N,”@ºΦ9ÌUè ÚdfÎ9çLóZs“¹^x¡9çœsªÊ lDÒ`ÑL#1Þ/8”;Þ·z.¦ÌëÅ‹wyF9¾÷Þ{ΫX>¨Y(Tä]uFž@p!û8W \æ˜c#š¤fܸqF¶/0ƒ ª!Y,|ÐELY²¡—h^Wy�©3ˆ“­X¬¢¯V%%z¿ÝGL~ËV-V+ÚdF´¥ e©èwïºlQ`ð~ŠŒš´ÑÞ@ø%[’ÔÜÓ ±õµh™Çä=–{LÚà†o�Xž0xÿ1y¯ G¶Ýv[Ûfaq!ÚA1«oÄš�z±ý‹˜þH»Û¸§žzʈF¹{žz'ûí·Ÿ[P¥þBi½çñ�e–YüËö\,¾± QÕ—Dßß±úüV¡ßŠo±hÙ×ć bÍÅöWðm 91Qo¿£¸'š©Fö3ykx ýO±ZÖ6.¦}V�ü\sÍeÄ�A¹ˆö©Ë+À¢�õ��§oOÐ^@€�z�~»hrÛcÒ_½ß¨Cxw°0CÌr»w î°ðÎwt�+6 |‡“mÁl`/£ŒÄJIÒ‹�ôññ-ñªAø‰…ÆXÈ”t±ýÀ˜:SV?ãÔéP[”|Þäoöãò�¹’üŠþ«¶¾¢�CÀaü€ïøî»ïnĈ½†ñ¾7IûM×ø°c-,vÆ¢çF.滨qcŒ‹lX¬¯ãѳÎ:Ë.n4N×0zÌÓw×08æoúayN$@$@$@$@$@í"@�|»È· ]L@ˆ;yòd#æäÌB -d0`†v|'fÔ�ìoÄÌ«Á„Ø‚ .h† ’{R/KZÍòƒÁº/$‚0½ÐÔ� ²Yì1!�‰Bä‚]ð›{î¹›•d)ñNed˜xG}‡Ã¤³j¢Á2ƒ˜cŒ‰¾*¬?‘«V0)+&/­ÐB:hÇ·ÂAc“áЃ°jÉ%—4 t×®wéB{HL�X?À"!Ô=ºò øa¡ yRŒù®B�2Ç7.|ð]À_V×®úZ$ïeq/’¶ÏÚŒøƒ;Þ3¼oœÐµ†GỆEGø®%-+%s�:Ž~+„ÑXT‰v ÄЭg…Cön6ë­·žû‹=“ñwÕß¾@ý8|—± Ï�ï2£fqÐ8WKK°Äƒ9�âÐ6Â’ê ÞÕ¡C‡,äh†‹­3ìÇ5£TòÇÙ®ï"r Á<¯`ü€@ºØ:ëS´+ï±ßE¼§²�ˆ]$‹o!‹{YÐ � � � � � t'Èw§ÒîæÏêku´u#³þÝ_`Û˜Þ…Ëb®ÖzÌø/4‘›1(½‘ d$!,4Ö0Y Ä[n¹%cHz‹!@î1ô¶X8'Fà a®ÙöBü ä‹fÛï»À‚ , ÐÕˆ­3ìÇÕ2å       �tȧ³á�$€}3¡Õó€¾v1´âaþû´C3¦5¡)GG0¾ùæ›Û}Ï}­Iì¡ S¦Ð^1b„Ýß¹LZœÈ-“&ã"�0h@¤,„R0ãL×|äÞ|ÆL¡š¶A_ÚÔ;ì°CÇY)C +;×^{­5' :\„T]G’¿bë ûqI¢]÷7¾IÛo¿}á Âú¶C£#      �ÈÇÐcØ.Gû’âf=a^f>aVoÒ¤Iöˆ wšùÎ.y:ËÌàÂÁ|ôK,aÍM¾üòËÖ#®Ã|=´ä±åC™Ž¹eÒd\$@$@$йbò0QÌ1ÇØmª°G4úÁØ~­µÖê\(]<çìÇuñò²7eʳá†zWò�6{«³|¹¡o      �N%@�|§–ó$pÞyç™1cÆïarrÿý÷7x Û#<è‘»XJøê«¯‚Ï ýèÑ£Í2Ë,¼s‘¹1ô–H€H€¦1ù»îºËZ�R3Ï<³;v¬>|¸^â± Ø�kÔ&E‰=ÓÏ9çœÂ±c‘÷÷¿ÿýÂá�H€H€H€H€H€H€@€yÖƒéŽÀk¯½f&NœhÞzë-óᇚ9æ˜Ã :Ôšî4hÐt÷¼| 8S§N5O>ù¤Õˆÿý÷í^ÓC† 1‹,²ˆ6lXÓoÀ´.̥­¾úê6½¸'ah   �N$€­5`V»oß¾fë­·ÎõèïÞÿýÖLÿ /lV\qEÓ«W¯\qÐs~ìÇågÆ$@$@$@$@$@$@$Ð� P ß�KŸÏN$@$@$@$@$@$@$@$@$@$@$@$@$@$Ð4È7 -#&             èÎ(�ïÎ¥Ïg'             h 䛆–“ � � � � � � � � � � � � � tgÈwçÒ糓 � � � � � � � � � � � � � 4�òMCˈI€H€H€H€H€H€H€H€H€H€H€H€H€H€º3 ä»séóÙI€H€H€H€H€H€H€H€H€H€H€H€H€H€šF€ù¦¡eÄ$@$@Ó�iÓ¦üÍ0à ¦OŸ>ÓÛãÕ}žO>ùÄ|úé§5~z÷îm Ps�¦N�j¾øâ {ìzõêöÈ«Màõ×_æÞyç53Í4Sðž16¼WÞóv¦�7¯Iÿ�œ÷ä³t—ßü¶+éîÜ)FŒ¡H€º�Ï>ûÌ>.úÚ3Î8cG?úG}äòß¿wÎ    �Î#@�|ç•Yæøá‡æñÇ7S¦L1o½õ–AçÁË-·œYzé¥3ÇÓ�=ž{î¹fìØ±Áý÷ßo Ô­p<ýôÓæ?ÿù�}f<û‚ .Ø­ž¿ÈÃv÷:S„YaZÅý€0wÜq‡ÁäÎßÿþ÷2²Þ1qüüç?7×^{mM~W\qEsÓM7Õ\ç…0�O<Ñ\vÙeöæ{ìaŽ;Ç:W_|qóõ×_›m¶ÙÆœqÆu|òV;¼ûî»f�5Ö&=nÜ8³Î:ëïéÅØðO‘c;Ó.’_?L'çÝŽîvÎoK±ïný‘¯¾úʼøâ‹Ö\sÍeǵî·'Ÿþ¹ûêõ¹çžÛ 8PšÉ“'´I׳gO³ÐB ™yæ™'y«ê÷«¯¾jÇÕUS~,¿üòU‹7ñ 'NLñ]{yÑEíò ;­?Ò‰ó#ûÛßÌ—_~ifžyf³òÊ+×V^©!ðÒK/™M6ÙÄ^?òÈ#;ûî[ã§S.|üñÇf¥•VrÙ}òÉ'Íì³Ïî~ó„H€H€H€H ³P ßYå•)·ì_z饿œsÎqÂÔd@L6@0|øðä-÷û½÷Þ3^x¡ý½é¦›šaƹ{]ý¤¬¼Ÿ}öÙæW¿ú•}\äÜÕ½´üað¿ýöÛ›J¥bãÜo¿ý̨Q£J‹z�¨;×™v–iîEÚ‰ý÷ßßÜyç�V«ù¹çžkç#·<íc�=Ö\uÕU5éR _ƒ¤î…N8Á\~ùåÖÏÈ‘#ÍñÇ_×èæ"‹,bÛæ­¶ÚÊ- ùãµö@Û²Új«Ï"�� L8ãÅv¦�1‹©Þ:9ïþCa�ÓóÏ?o~vØaþ­éòœß–bÅÚÝú#X¹Å[8XLÞpà `Á¾©Û{ï½ÍÑG­?ÍÁlÆ�ï~'Oúöík6Þxcó³ŸýÌÌ?ÿüÉÛ6®k®¹¦æzèÂ�7ÞX%HÃ"ù 7Ü0ä5xíÔSO5;ï¼sð^W¹Ø)ý‘²æGb¸ãUdnuÒÝq1pQÞX¼ƒù+¸#Ž8ÂüèG?*UÛáìý…˜£™cŽ9Úž/f€H€H€H€H  ä‹qëÒ¡Ž:ê(sÝu×¹<¬24ã¡  Úθ‰ ü¥9â˜ÐèWVÞ‹ù:…Q½|bÒbóÍ77X]®Žy%QÿØ]ëL}*Í¿[„{‘v¢»M€×+¹õ×_ß@SŒùz”jïQ _Ëdz¿rË-·˜Ÿþô§ö1³ä“?k äó3c    �Ö @¾5œ[–ʽ÷Þk~øÃÚôæœsNsÒI'Y-xLZÀ½óÎ;æ÷¿ÿ½¹ä’KÌn»íF�¼¥’þïí·ß6¯¼òŠõ Yö}M�­sîüæ7¿1g�uVU†)�¯Â‘ú£»Ö™T -ºQ„{‘‰±î6^¯ø(4©G'ý^ù¿þõ¯Öd=¬Ý|ç;ßIOŒwº�XÁpløíL;&ßÛ©y§@ž‹½²ÔýîÖñûlÊÛì³Ï>úÓš’_{íµ�u/ܨ'�‡´e–YƆÿý÷ ¶ê:ÿüó­62.Â2Úm·ÝVevcih:«ÃxéOú“ý‰q7ÌÔ«ƒÉù^½zéOkJ_5äáþë9lÖÕ5a;¡?RæüH½òjtϯÃÈ7¢wŸù8~ M$@$@$@$Ð<È7�m[b†Iq˜Çƒ»âŠ+Ìw¿ûÝ`>¾øâ ƒý¨’Z¾ç¢ƒF?Žv�wrÞÛÅLÓÅÞŠ#FŒ0Ó¦M³ûß|óÍöòJˆÇé…@‘v¢»M€×+k äëÑI¿W†@>=vÞéŠbñác˜´3í˜|#l§æ�y ä³ÔýîÖñûl°üÁørË-gþð‡?8\_|±9í´Óì>ðºO|=�<©¯°Â .³×! ×½¨«<~ûãðÃ7Øfîꫯ6«¯¾ú·wj¾Éúu×]×n1Wë‹WÊ&PæüHLÞü:L�| ÉÆa)�ö>H€H€H€H€ÚC€ùöpoZªØóîŸÿü§™yæ™íþ“ªŸ5Á_ÿú׿Êáþõ¯9áþk¬aÍûñ 2Ä|ÿûß÷/ÙsL6Üwß}fÒ¤Iv²û^-¸à‚f±Å3Ë.»¬5…^/_ÿýï ò�½Ëa&pƒ 60X}�I‹!(†ÆLªãoÆg´é–‘w˜ôÇB†�Ûu×]M¿~ýB·¬&Åï~÷;{ù:t¨¹ýöÛÍ£�>jËa�0«®ºªµ^ ù E4uêTkqâĉæå—_¶ñ@3Çw4XÝÿæ›ošÙgŸ½iû ‚ù~ðóØc�Lí´ÓNæÇ?þ±Íj³òHZ(O>ù¤eöÁ˜Å_Ü,½ôÒf—]v ²GÝ*ƒ;öbCy!m䦱ïÊM'ú ÑM—¤kw�)Â͆O?ýÔÖyh¡~áý0`€}g×[o=³Î:ëX³¹~˜"çŸþ¹9ï¼ólPLV®µÖZ™¢ùíok-´ÐBf‡vpaŠr�m'’à0‹zÿý÷ÛwæË/¿4K.¹¤µ>¢W.Ã-köÚk/k ñçÈ#Ì)§œâÂzè¡æÀÄå k¥@mú0§�ïrÑ>h̸§h¤¬¼kÿ5Ïx1v~D ¾HÚ±ã¤k²¾h_*ö»Xf©ì³Ž[’ù�wÞ¹ÐÜ ø·»�GÿÛSoyí»c̬í"ž�ŽH€H€H€H ë @¾ë”E)9�@Bk8 |1ñšÇA0‚ Ï,nµÕV«ÙCïÚk¯50XÏa¢ æýÒ&R¡‘�8L:"�´½î/¸àó½ï}Ïú�Í;"Á€+M8¡[š°Èôýä'?1>ø îÚŒyÿ ˆÄ„oH(4&XÈ�t˜þ÷¿ÿmãÄ$, Íp×_½9òÈ#­i~�¤l…@‹? 8L{.p?çœsœYI}ö2¸_wÝuæ˜cŽ©©÷bu nôèÑÁ(í¬3E¹)?,Ád?êVš;ä�C êt¬ÃD?Þk¹ðÎ*×zñBСڤm¶ÙÆœyæ™Î{Qî±í„?>fÌ˾ÃD) ­k¥ƒ UXHA�8,rÁ"ßá´… Js˜ÌÆ{QÏåš@¨k¡x±_2Þ³áLJnÛNEë+ê&ÔÑ®¥¹f˜Á.„J»_Öõ"ytq�Ÿ�­¶ÚÊŒ;Ö¿TuŽÅLBèŒEE7ÜpCÕ}ü@ûŠ…MIÓ÷¿øÅ/ ÄÀaXN 9ùÑ~ÃA@ {¥?þøãv1®ëD(„[I‡rA˜äB½2úHˬÀ¬0Þav’ï Þu±õUãÁ1�`اçE£-@]C;št` 3Ï$õìÙ3y»êw‘´«"(ðï—_~¹m`Ñ)ä°Àå9pàÀÐm{-OÞýþÄG„ã[ˆ¾5øañkÒmgBÛ%ãö§iáÆ–yÑþ·Ÿ·2Î[ùmñ¿éH'ÊÂ<¸dȯ3Eûþˆ·h}÷ó^´?[gж¯xî¼ÎÈ£ƒ±¾ohÇ0VÁcXä…o9Æ3ºh¼ˆ@‹ÉŽ;î8›Eă¾Išk¥@¾Œ2�÷í�”‘÷¢ãžØù”}Ñ´cÇH;F Ó—òÛ¸"ßE?|LYdÜRVÚ]¡�Ì#�G[…16ú)k®¹¦]t‹qwwÙvï  � � � tuÈwõÊ™?+î¾ûn Úãgœq†]EŸ5LÞBp‡½ô  ¡4•}·È"‹h(øÂæã�?ÞNðB#ü0‹ÿá‡Ú|©�q�?ÞêÎý AhAaʈÚ€˜¸zþùç­`ÇÈÇæÀ€çÄOtyA:ÐT�Ë*�×À>b ŽÐPÓ…gŸ}¶ÕìWzÄ„V<ÃAèŽÉL*¡<¡¥¨®Yy䓎˜`b L^5[ Mg¤ ME8‡0 kÐüÀdpÀò‚¯Éé¶­'ù—‡;&óFŽ©AíD„2Жºçž{Üuœ¤ äÛUgb¸áy`i'äš_ø áÌ믿n L_,†I[cæø‡6X€}¯µ\ë‡ÀÚ»p§žzj•eˆ¢ÜcÛ �PDž0¹á;�x¢>Á²&àî¼óÎ!£½Yâ?,€†&Ü`ECÛ$�²¼ãŽ; ÚjuÚ£mÑE0ûŠ hQ@kï4iM@#¾¼B�P„Æ>´Oñ®cqê¾5š÷ /¼Ð @4ß±õgÔ!8”´è`¹õh|a±ˆ.hÓt›qD„°í¾™�pþ hšÃeÈküД‡¶ú\sÍeë«  P Üô'ì|AT=Óº*ôÇäâW8_ ¯éC#‹ìÐÞãû¢ÂVì£ +4¾+£?�ø|�žyÄ{ « È+¾¯Ð¨„_ S_ýçÀyÁp2l‘ð—\r‰}n„E?ßXôŸ´?¢í¾¿€"”n‘´ÓâÉsýôÓO7hÔáû„~#ê¾Ï?ü°µt€E|išâ›‡»ßŸ("x@zEÛ´áÚßF<èëàAÙé7×ÕÁ¤}Ró­Œ2/ÚÿÖ|•ulå·E¿éXà¡í¡ÿ~;XO ¯aòôA5LÑú®yG{žcR ?Ûl³Ù…ƒº˜J¶`ü‰œØK®ˆ@^…Z¿‡XOQá<~'];òÈC‘2/cÜS´?[_cÆ=±ó#1iÇŽ;PÖÚéÝ»wpA!ü¤¹˜¾TìwѯùËÛF·”‘vWi#ÑgCPWOCþÜsÏ­ZÀŽ0÷l·Ývv‘lrñ­ÆÉ# � � � �@ ˆp“n:" “�19ìþD#»"ÁŠ“+²g|®'• j�hÉe +“ˆ•_ýêWÑ‚¬ñ/fb+"|pqŠÙÜ?¸ ‚"çÏ"“æ1Yåq�7®òÌ3ÏT]×Eò®aý£˜™syÍ ÿVÕ¹L;ȳLPUDPæüˆ@ÞÝ—‰w]OÀBËM´C+¢-¯·*2�^‘Étw_&¦Ý½2OdbÞ¦!¹Š,€°Q‹@Ñ¥+†e&çâB¼úì¢uQ�»‡“‹.ºÈÝë U÷b¹‹97·L0UÅ�:§ùÂQ4K«î§ýhU�‰á†¼‹Ò=ŸLøõRçÁ{E.Ê©Kóí·ßn…dœ™X©ë?+w?’"í„,PqyÁbEð.JÔ]ôºûbNÓÝ+ûüÐÖ¢=ðë)Î7Ûl³ŠL"Ud!TM²‡v˜ó/æy+b¾Ê�,ȲïÚ°Fn½õÖ³qm»í¶�¼Úûxñ-òÛF ( 5*²pÀƇ÷2ébë+ò¨œBu¬.½ôÒd²Mù-‹ž*²8ÍþἈ“ 5û<" ª\Á¸ç–Eh8ÿøŽŠUw_4 Ý==Ù~ûíí}Ù†¥"B½ì޲ˆ£¢y�º»ŽY@àâ{rV•=Ê\„ÄÖ�X�© îù®Œþâ;ùä“«ò!‹M*È·ïоˆÿR%¦¾VE$?ĺ�˃,HÞnø;Oxôd{ ›žL|Wd œªøÑ?ÓwüQë¹›ìënû8ø6áùÁQ›Ùs@Ú6^Ë-ÙŸM]W¦¡~ú² Üù‘äu³(bœßPÿÂ,‹þœ_ämIÚž-ù]Œ)sä£ãí4ê�Äæ=fÜ;?“¶_þ~Î:·‚ð²…Ÿ­7bùÐ�.ÓyL_ÊoãŠ|ýð¨ïEÚ颋Я´»Z)‹åm ÇF}}Yèêê�¶…8¢ï$[wUdr£hxŸH€H€H€H I mL7�Ó¯Uƒ}í„cÀ,šlvb89À!(:h Å¥×ü úää·úINŠég½•ùXVÞ³ ùüA&qBƒP¢M[ó²rß•VI‡É -Çfä1X×ø±x@]³ò²êÝ.¸@ÚXt {pkÒîˆºŠ…%ð#Œ‘ÔÅpM(÷̲g¶FYuMbç§™ù¼u&–Â7-ó´I–*%ü€ JÓÍm#»È^×1}]%°ÓÉ;Ѫ­ºîz'YßU/H¥H;¡yÂs@è�tbÚÐ=£h1'oGýÆ» Z”1'_ÑIhå‰É:L¾ø×db:êÄ)Þ©P;• Sïw^¡I½¸pO…ÇxÏE[¾Ê{l}ÅB#°-Ûš :䇖c£ peŠg‹95O÷ꫯº:!Vujîã½Ô:HÒ‰Åw?Yßýï=„]Éň˟hk0ÉèëþöãOëO _`„÷D´€ëÆ›õ¦² Õ×dyÃɰø�'<Ú-3´©!�•úÁžz.OÚõâÉzO¶0py‹]$“'ï~"í›ØH _V;“W _V™—ÑÿÎZÎõüµòÛ¢ßôX�|Þ~œ>L}×¼ã]ÎÛ)«Î4«}U>þÑï³é÷h÷Ýw·íÅ`�èA�†EWÚÆÕÈã;"xìøC¬¥T0³÷.,5ù‹¤ýüèyŒ@^ó˜vLŽ×cʼY㞬ý‘˜¼—1î):?RFÚZWü:Ü*�¼¦�v¬×—Šý.úá‹´‘1ã–Ø´;±�L–1æL0—ƒ>Er܈Eºb²Nt$@$@$@$@­%@�|ky·,5L¢CK2m€�Õ±²ZÝü4j¤`/zbŽÓþù“£脜?!ˆ‰1òV÷ZlÞ5ò¬B>ÐCÈé¤QHã Bz”„IAâ‚ –à§l�<øª–mRñÙyÔ ­£²ŸmÙ¡?Á‚/pŒáᑦ�6éA…úi¦@>o�‰å†:%¦~ݳÉÞr5£ðS¶Ã»­Zв?µ‹þøã�wyyúé§Ýu1¡o¯‹¹Qw-í$ë»ê‡/ÒNøŠ!ÍR1ùîž%Ïd›Ÿ¯Ð90@Në#Ž˜\Á$ ÞS¡J(<®A#BÃÃòD¬‹šˆùÅ &‡Å|ªû>h‰<&…·±õZÑúìbVºã…òY'ÀUhŒgO›t³÷–MH «ø#|h1™Ö,šI.¨ò'yñÞ„ i¹¨€%ä¯hqù#1iŠ¾áµ¼õ5¡ß÷i¶†¼˜%uL‘V蛊…=Ê]ÌŸ'³[õ;6ïU‘eø¡u ý¡d�ʼÊKž¼ûý‰¢ù²Ú™¼ù²Ê¼ŒþwUü¡u «†¼ŸLÞwU¿é¡öñfÕ�ÏÛ�Ó<볩ïšw¼Ëyû#eÕ™2ÚWeÑèè÷Ùô{á/Ö,<‡Ë*�×v0í(Û˜4ÊV¥¨@e�çHûƒ•¨¤E¡˜2oÖ¸'k$&ïeŒ{P�EæGÊJéûu8Ïíêh y¤«.o_*ö»è‡/ÒFÆŒ[bÓîÄ6RË9tÄB%Ô9µ$â·yøÖ†¬`…âá5    �xÈÇ3ìÒ1`e1LoCs@M˜j|·Ýv«›÷¢ƒF˜ÿï Þ4½äQöã ¦ïOb0TÄÍ{2­¬B>Ð7f̘d4ö·jV�‹ï0Ù¢f{·Øb ÿVÕùZk­eãe äu8LÄúæ·‘x³òI³ðÉ:ú훎ŒáŽ 0�_öÞ®b­? „W?ÍÈç­3±Üð|Xˆ¡o<#„»ÌA“Œ1©Ý 7bÄËÔ7Kîk#©¦+L²+{�x­—Ÿ¬ïªG‘vB'1‚û“÷Ð.Ëùæ2Á嬳βZ`yâGe w¬SABV¡ êøõNó“<&ÍíÇÖWhúi 6¬"û™ÚÉ©I“&ÕLzDzivø¬à¾@^·"IæÍ×Ð i{챎œ¨“=âÝuhÙ$�/�?í´Ó’·ío˜×rA:IÛŸ@|¾ÀëY]L}M¦‘G0œ ‹ßyÂëĽrmt„%˜z.OÚõâÉršªªÅáv¬Ë“w¿?QT _V;“W _V™—ÑÿŽ-3„oå·E¿é±ù¼ý8Í™²XT Ú¬Q‚1eÞ¬qOÖþHLÞË÷ølóÌ�”™¶_‡[)�/Ú—Šý.úá‹´‘1ã–Ø´;±�ôëx½slùˆÅKÚnâˆEÒt$@$@$@$@­!ÐÉ´pËz&ÕF"<22QaD3ÕàîÚk¯5«®ºj0W¢‰lD@lï}ôÑF´Tƒþü‹²G›‘}À±ÐÃ]ž}öÙÍsÌazôèaDûÛˆÖ¼½'‚#Â?çOOÄœ¬�<ûé‹ Moe>É{(r¨Ñ’¶·D“Ï <8äÍÈÀÞlºé¦öžì“kD£»ÆŸìYhn½õVËAö:t÷e2ÉÈ Ïþ^wÝu�hk»{þ‰ì-odpiæŸ~#Â4ÿVás|ÂÚrAž‘wßM˜0ÁÈн$ûM›Q£Fù·£Ïe"Ï=ïœsÎiúõë×0NÔE1ooýÅp’‘I�˜õ5bº­&mÿùG�mD@Pã'y¡u&–›æï ÚÙóR/¹ãŒ3Îhdÿh# gL¯^½ÜõØц7b.ÙôîÝÛˆ6¼yë­· ê½:”Ñx2>{Y aV^yeõØ~ëðqˆ@ÙÞB_}�\ÐÌ5×\ê½áñðÃw} Œ³ëõ#¦L™bÄÚŒ�³Þ˜/-Ñ¢eŽøš5îÉÚ‰É{Yãž×Fó#e¦í×á¬s+È3Æ@²PÚŽ�Òúr¡gÃ5|‹ÎÍĶq±ácÆ-1iwj™Vô:Æ?˜‹Â˜M#ëe{KlF¬1V]ã    �&h�ÜŸ©t%2 v+bC{j^ó®âƾ¬0¥†U¶Ðp‚†QRËV„o.mˆjRUG5ôS ð#oÞQØKYµnýUØy5«°? j„Õ³ ”–K™ò¾ööV–ÅU0¯¯«§¡Å�û0› ÍÁ2œoÞß»>kÜ1Üý´Ó´&eÃ=35äóÖ?ïE¸%ùB“+T{]ËG™hLz�úí›Ì”I¥Š‚,cY RA’}`®ü—¿ü¥½Ž­²˜-Îú®ú™/ÒN¨†Om:?í¼çºüž{îYc}ûÁƒ´�ë¹cŽ9ÆÕgk€zaêÝË£Åèk¹@£u.iŠU&Ø]þêm©S_Q· •„m0’Vc e'“åõ¹ËÜ˪‘¦òøÆ„¶CÁùÜ'Ož|FXoA{€o4íaÊ^ùm¹å–Á0('mKð~†œß'�Å+ÎKYý D(“é.õê•K\Nʬ¯ˆ×ÿÖ6Ód½ßŸÀV$e¸Ø¼çÉLªj�Ùk¯½ò úÍ“÷,ý í?ãý«çbÛ™<òe–yýïz\²Þkå·¥Ñ7]„:®N&Û±,uF­c…êLl}o”wßb�Ÿ÷2ëL‘ö5k=Húóûlª!?Ø [søíY5ä¡9ëÚ¡!_¤ê�Ê÷dí�­¯(?ïeŒ{Be®í;¾AþüH™iûu¸ò±}©,mœr µqYÂ×k#cÆ-1iwjª×xlk™ºý¡ö³°�ü 'œPyá…BAy�H€H€H€H Ih²¾I`»r´²2ÖM.…ÌÌjÞóýx1x ¹G}Ô¥M�üÿjdŽ‚+Ž7K ¯ƒ³,ÇäþÎÿÿ$ùÎ|�÷å—_ž/°øŽlg1GóÚÊ£+ äc¹Õ�ÉgOwL°”UÞH×7Ea<£`|÷ÝwWÔt6öKmj{]´ôëe×Ý›ÞòîAåBL´±k®¹¦«ŸZO±í€X ¨Y …ð¾9å,û¢úi†ÎUham#'Vl^1ù#Aï0«Ï‘UpS_!X†ÀÎß2[6t‚Ë:®yp…ð'ä øTî´‡œ.œ�?±(RñÛ Ü 9_ �IÕ�ÃÂMÛ2¨+«?�øŠŒÊ®¯¾`X4Ÿõ13ó„×ú s«e¸=§@~áJ²¾6kÜ“µ?S_ý>G‘ñ¢Ö‹zG¿ßáÏ�”™¶_‡[!�÷Ÿ©ÈÜLìw1¶�Œ·Ä¦ÝUÚÈzu¶Þ=<¿XÁ³Êú Ó£X¯ªÜ|óÍ•©S§Ö‹‚÷H€H€H€H€šD€ù&�íÊÑúû‚§íëŠüû{»¦ âüçÄÀR;úb:пåÎÏ<óLç§™ù¼ywLœdòÅú|¡ ´†“NÌ7;ne ä1Ð>÷ÜsSÿt¢劉hø³ÙÁ½³“yÎò{˜i�ÁDM^ÃÝg*æaƒIûåÒ•ò±Ü‚›¸è?;Ò+Óé1á\‘í)ìŠ}X]z¶>@+P7|!]½CL}õ÷BÓ¶e—>f�÷¹„aˆ©ÖŠî“)&QSŸ‚:}'çn»ífËVqp/ä|�|špU¶pu IÔ•ÕŸ@|EFZ˪¯ÐFÔwÚ÷y]žð¨ÃšVZOyÒöŸKÌ¡º|h~P�Á?êx잦yò޶Róyì±ÇÖdZfxG4o5\ÈÓÎèâ4´ëH·‘+«ÌcòEË<ù|­ü¶ ¬µÜýï¥æ ‹Jô~RÀÓÕøcê{L¤¬:S¤}ÕgÇ1O�ñ…™È/éctç¾5Y_›5îÉÚ‰©¯­÷¤Í�”™v‘q Wûièsåq±}©Øïbl3n‰M»«´‘yÊ~ÑïQ«VúíÂuèÔSO­ÈÖjy£¤    �’ P _2ÐvG‡ Ù>U`Љ=Õñ¸5?ýɉ¬‚ÑšHê\@}ÜtÓMí³cB§žéHhnb2Îw1Ü‘¶jaaÒ;)tF^t’ ïAWÈÇrCh%¥iÃâ>„âúþC ¹L'{º¸‘Æî»ïn£‡¯Ï÷dÏçLIg}WýÈŠ´1Š~ÚeŸ¿ûî»v±ŒìIZÅÖháy×Xc wKBþ²h²úås±õœjšÈ^£ÖJBÒ/4Óµ¾á˜ÈÇÖWXHs¾&1t‚Ó÷ePÏùyœ'5@ý-$d�ÑzQUµ ZV‡vXj_ ÿÉú†vl“M6±åŽzáoPV™+"0Š­¯I(²W´«ßÐLÊëò„÷5â`ý Yæ~Úø†¦-¨PyÒÖ08æ´ùá.õ ø6`ÑHÈ¡�‚öy=—'ïà„ÅE¨«Ø"(É –!´Þãý ¹²ÚhµiZɾI(ݲʼ«ä[ùmÁBSe �Aß¡�Ò¶~’Θ>¨¦Sßcú#eÕ™"í«>;ŽyÚ ä+•˜2oÖ¸'k$6ï1ãŘù‘2Æ\Z狌;¶¨@>¶/û]Œm#cÆ-±iw•6RëNÖ#ækô›†ws×]w­àY¦M›–5 ú#   h2 ä› ¸ÕÑ|ðÁ¶ TìK S‹0�?¬2†ùgí¤cp‡½Åê¹µ×^ÛúG‡|¬®‡pɉGU>´Ë í¡ &L‘¶/Bš)�Ç3åÉ;ücЉgòÿN:é$Çë‘G©º‘ºØAûª5 60WŠÅøS“ÞZnÓ“@üüm °òÿâ‹/®@@†ò€Ö,&Ý!¬ƒ©ë‘#G*r{Œå~Í5׸ò…¦6&F~øa[wñ[™ãÈ·³ÎÄp|¸ã‡ºˆÅxWñjçü8ò†÷Ë}‡v°ßQLlã�›2eŠÝª×QŽþ¾Ë~šzž7m —GЦapDu¡ò·Í6ÛT&Nœhû’¨·h[Ðf Î¾ùæ›~Кó¼y÷·ÍÀ6 Xè„víú'Zï‘vÈ•ÕÎø‹4a]Ö- ŒÔþwÈ"IeÞUò­ü¶ø}©ÕW_ݾ�·ÀºZæ86C Sßcû#eÔ™"í«ÿîäi'ºŠ@ã„ /¼Ðým¶Ùf®žyä‘î:ü¼÷Þ{þãV&OžìübQ°OèßLßÅ–yì¸'¦?›wÿ]Í;^Œ�‰IÛ/?œçw Œ ä16 Õ“ä5]¬VF_*æ»;Ndz·”‘vWh#Á �ÃXlÕUW­Œ=ºòꫯæ J¿$@$@$@$@-"Ðéºé†€h•™ämø<3Î8£á£!p]¿²ÿ¦­¹ ŸÕV[ÍÈÀ¾êžhÆÑÐw×zôèað'Â{M&�™í¹ rŒZ�_=‘EF„¡uý¨ßzǼy¡”íÒzQVÝ“Á±‘IS{M&I�¬Ü·çGq„AC•_ü� ~#Â.ËCÌ…ÕÜ—Iq#ÂóÑGÕÜ[tÑE ÊL&ÍüóÏod¿ÆO3.L˜0ÁÈŠ�z¿ýö3£F�jF2æì³Ï6²g«‘Éóºñ¯³Î:fܸqÎO,w¤'“gFL¥»8ý1ùfd"À^’�­!ŠÛ´»Î冇SÑFL×U=ÏÌ3Ïld½»†w÷7¿ù�A’»VƉL’TÅ)[\˜!C†Ø¨ñL² Àž£Þ£&] ÷d\yÛ Ñ 6b9ÂôêÕˈ°;�Á»-ûOÛëh�ñÞ·Ë¡-™uÖYMÏž=«²püñÇY0Uu-ùuu¾‘Ûe—]Œ×k¼‰€ÞˆfŽ».šªF&­�ÔÜ5´iúÎÏ>ûìfñÅ7"ĵ÷eñ—8p ó[_‘Hºøfši&#‚,Jt×d�Šý¦¡l»’ûÙÏ~fD;7s–.»ì2#¾Ö¿_>`,“éÁxöÜsO#¦›ƒ÷ü‹"(5brÕ^4h�a�ý¦ù~ô\LtÑ·?Á[ è­ªã€,w™h®º^F¢Ÿ!‹~lÜÉzU• ÷#¶¾zQ¹S|·ÅÚM�ê·he;¿¡“<á‘ôC´¬Ús¿¾køþ­¸âŠú3xÌ“¶FðÔSO¦ëO{�}#‚îªk¡"x3èsÈâ‘Ðmw ùBŸ¨žË“w±Èbûa¡øú÷ïoÓ’m…Rûqeµ3hѧ õ‘·«¯¾Úˆð¸*›e”ylÿ;¦Ì«F~øm—¯ìo â–­) ê\Èaœ„:—ü¦ÇöA5½¢õ=¶?RF�)Ò¾ês㘧ÎàÝC¿ã´iNë¸ï Ú]YÄ㼊pÖõíñm•¿î^–Ä•ÿ¦…Ã8ãEu² Êl¸á†ú³áQ š±cÇ:±e;î‰é�ÄæŠŽ{ʘ)š¶+¼oOòŽ;L¶K Î$ãÖßbµÊÌ;ï¼ögl_*æ»XVYdÜRFÚ]¡�Ô2ÍzÄØo¶Ùf³óFYÃÐ � � � �@k P ßZÞMO üßsÏ=F4{‚éA(.ff „]Yâ„ð^4ͧŸ~ê(¢ñn®ºêªª( lÁÄü« úõëg¶Ýv[ƒ�<„˜Í#èUáñCVuL¸ÕóS(åBž¼câ·Ñ?™aƙ믿Þ^¤7pøŠ¨=÷ÿéd„Pþ$¹ïG47�˜*5΋ùn3Ï<ó,|7Ld`ÒB+Ñòƒ5íüî»ïv‹ �>òÑ,‡²ÂD=„œI¡AŸ>}Œh’±ðPµh¢,î†`! Òža†ì‚L‚Í7ß|nr^̺2V]¡Îá†üCX†É%Ñ<4¢±ª�äŽXƒÅ8XQ¶CùB„ödðàÁF,h¸$DûÑ€=\Ú¢�î.!ï$O;qÐAÑV4¨“¡ |LÞˆ‰[;ÚYÑüõRê:§0`‚ “ÃI‡6ÖI�OÒ~C¨�Å4øæˆ&Ž6b‚;)DF]ÃD¶ßþAHA¬ì«m'ÈEcß&¿sÎ9§K2¶¾žx≶ž¡�M:”%„?hã ´îj‚]ü•%ob�ˆe ëU…ZsÍ5—+V€á÷ °øïyè›J ßw”7\R8•ôï äÁﶘ„®êà[�¶5$T-£?�<�vÚi&­^%óìÿŽ©¯~<þ9ÚŒ3Ï<Ó~kDsÒÝBŸ)Ë‚À<ᱸ ‹›.¿ürÛ¯r‰}{"2¬Ð‹1²Ôû}úé§]ð]À‚¼m´‘½žü¦—ÕEäEê{ý‘Ø:S´}UÐyê %�1ÂÅbÚ}÷ÝW£©9Ê6iî;ð¯ß<Eá°pß¡<‹×’ãß´ðI�?ú Ïdu;�3Æy/£ÌYÑqOL¤¬¼÷ Ló#EÒv…ç�äw ˜h<Ûy/Šº§¢Ñoæž{në§Œ¾TÑïb™mdÞqKYi·»�¬[мI$@$@$@$Б(�ïÈbkœi¼Ä°Êcòš¯ .¸ �F„ãÍvX�‹��˜¶d\ è¤ËN“s}ûöu0ùúÁXí[1Mç®Oo'˜†`O̬ÙÞÔ@h‹:Ül‡A7„Ðæ„Ä›j�º�˜Hlv Ç_”„ñÐÂû 9&pÐVà�nú' &Šm[�ï4ÒÅ,¯ÓªiÆÓc¡–˜lµ½{÷¶ ´²5/±õ‚<+ê;ÞsÔó!b�—éÑùyÈá°hš†hW—\rÉ\Z4;í´“µb€ï9éaÑRšóòbÖØ.z@;õä“OÚE@XôíøF®�ý‰ØúÚèÙZqýA,bBŸ ý ”ê½NÖ·"1iÀÂÒÈ?Êc¡…²‹xšÙ'À·ðù矷‰X<†Å‘y\»Û™N/ó<¬Õo컊z†¶|PÞhŸ’Öe4­fÛQßñ<ݱÎ4³;%îî6î)k~¤è˜«�õ"¶/û],ëÙ[=nÑ|³�T<’ � � � Ä @>– Ó@ øf“¦[�|·M&a%šS­XÌÒmaóÁI€J'ÈMÄÿA›ZÝõ\H _Ï?ï‘ � � ´�Ç=ícÏ”I€H€H€H€H€º ä»G9ó);€Àí·ßn57ažÐׄV<öI|â‰'¬•˜Ë†ÙzºruÔQfóÍ77Ø‚Á·âs–0OŠñ0‘‰½ÔéH€H “”%�‡0m%Ì ÃeÙóœùNª)Ì+ � �@w ÀqOw(e># � � � � �@W%@�|W-æ«Ûøõ¯mð‡½Iaæ„anÒ¤Iö ;Ý·ÛÁiâcoX8˜ï]b‰%ì^º0™sµp0k -y˜É¥# �N"+�Çb0ìýÜêV_}u»�¶÷¨ç(�¯G‡÷H€H€H õ8îi=s¦H$@$@$@$@$@J€y%Á# ´™Àyç�gƌ̄ôûï¿¿9ðÀÝþæA�¼˜›¬ |õÕWÁpÐ�=Ú,³Ì2Áû¼H$@]™@¬@~³Í6s‹“𜫮ºª¹ä’KLŸ>}>6ò Ñ � � ´”Ç=-ÅÍÄH€H€H€H€H€H ŠòU8øƒÚKàµ×^3'N4o½õ–ùðÃÍsÌa†j–]vY3hРöfn:M}êÔ©æÉ'Ÿ´B§÷ßßL›6Í 2Ä,²È"fذa\1�–;‹º�xÀ¼ù曦oß¾fë­·ÎýÈ&L0hûõëgV\qÅ\–B°ÝÊ�wÞiÓ„V=ÚT:   �öว}ì™2 � � � � � P Ï:@$@$@$@$@$@$@$@$@$@$@$@$@$@$@M @�| 2J               @žu€H€H€H€H€H€H€H€H€H€H€H€H€H€H€š@€ù&@e”$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@�<ë � � � � � � � � � � � � � � 4�òM€Ê(I€H€H€H€H€H€H€H€H€H€H€H€H€H€H€yÖ              h 䛕Q’ � � � � � � � � � � � � � �ò¬$@$@$@$@$@$@$@$@$@$@$@$@$@$@$ÐÈ7*£$               äYH€H€H€H€H€H€H€H€H€H€H€H€H€H€H  (�oTFI$@$@$@$@$@$@$@$@$@$@$@$@$@$@ȳ� � � � � � � � � � � � � � �@P ߨŒ’H€H€H€H€H€H€H€H€H€H€H€H€H€H€(�g               �& @¾ P% � � � � � � � � � � � � � � P Ï:@$@$@$@$@$@$@$@$@$@$@$@$@$@$@M @�| 2J               @žu ÛØfÌ&Ýî™ùÀ$@$@$@$ÐL7ÿlB3£gÜ$@$@$@$@$@$@$@$@$б(�ïØ¢cÆ‹ @¾(9†#   �0 äÃ\x•H€H€H€H€H€H€H€H€(�gèv(�ïvEÎ&  h2 ä› ˜Ñ“ � � � � � � � t, ä;¶è˜ñ¢(�/JŽáH€H€H€H L€ù0^%         äYº ä»]‘ó�I€H€H€šL€ù&fô$@$@$@$@$@$@$@$@K€ùŽ-:f¼( ä‹’c8    @>Ì…WI€H€H€H€H€H€H€H€H€yÖ�nG€ùnWä|`   �& @¾É€= � � � � � � � �@Ç @¾c‹Ž/J€ù¢äŽH€H€H€Â(�sáU         @žu Û @¾Û9˜H€H€H É(�o2`FO$@$@$@$@$@$@$@$б(�ïØ¢cÆ‹ @¾(9†#   �0 äÃ\x•H€H€H€H€H€H€H€H€(�g¨"ðå—_šYf™¥êZžÿûßÿÌ×_mfši¦<ÁZê—ù–âfb$@$@$@Ý€@»ò7Üpƒ™:uªYn¹åÌòË/ßtÒï¿ÿ¾¹ãŽ;jÒYzé¥ÍJ+­TsÝ¿ÛÏŽ ïç%t»Çe¤Ë ÄU¯uõüi>CÇ2òŠãÆ=z˜f˜!t»áµiÓ¦™™gž¹¡¿2<´º­)#ÏÉ8þñ�˜Ë.»Ì,µÔRf×]wMÞnéïGyļüòË5inµÕVf¶Ùf«¹Î $@$@$@$@$@$Ðé(�ïôLÉÿm·Ýfþô§?Ù»[l±…Y{íµS|3eÊ3vìX3qâDóÎ;}ûšÅ_Üì³Ï>fÓM7M §70‘ríµ×šk®¹ÆLž<Ù`bd�0묳ŽùÉO~b¨^kŽÈ#òúôÓO›•W^Ùl¹å–fµÕV«ñç_øðÃÍé§Ÿn*•ŠÙyç�ÍŠ+®èßnxN�|CDô@$@$@$@¹Ä ä¿øâ sê©§Ú~$ùds饗ºô Ƚå–[ÜïÐÉí·ßn<ð@{ë®»î2C‡ y³×ŠÄŠÌÈo´ÑFf®¹æ²Þ°uøðáUAbûÙ±á«2ø?{»í¶›ùä“O±k1ë˜cޱ~‚"/ÆŒC4éXOèØÕóʳ^kVÙþå/1ûÁ˜5äYd3nÜ8»¸;y‹¾±Øïzš5j”Ùo¿ýÒn¾ž§­)œH úy,¦o´¾™Yºé¦›¬BÒxûí·ÍŸÿüg›òͤθI€H€H€H€H€ÚI€ùvÒ/9mh™|ðÁæÕW_­Š9M ÿüóÏ›í¶ÛΚù„©@h›c•<Ä]t‘ùàƒl<˜è<ôÐC«âÔHpÐdÚ{ï½­‰¹ &8sžsÎ9§Á$ÆÜsÏ­ÁìL|ôÑG6ÏÌCK0 .¸ �»ßžüñ�4‡rˆÕ¤¸þúëskÇ# ä“Tù›H€H€H€âÄäa¥i§�v20‹­.‹@‹P/¿ür+üñÇ5hͱhü5É_ �…¡K.¹dÈ›‰ígdžG¦À3ÍxlüІßzë­ ´¨á° aà 7´æÃ1&A?ÚÌpXÜ ¿e»¢ãÍG,ăg„†wÈu…ü…òÕèZ³ÊöᇶcEÖ{÷îmÇ¡X„�1'[Ccnžyæ1÷Þ{¯éÓ§OUVab}¸VXÁ|ï{ß3óÏ?¿™4i’­o*äÇ"Œ-ËtYÛš2ÓlF\/¾ø¢¹âŠ+ÌK,avÙe—f$Q(N˜¯×üP _!‘ � � � � t ä; �²dñ‚ .°“]ªéSó˜Ø€KÈÃ$ý}÷Ýgý`’&ÕÁt=´~0±�=åxà;9¢÷q|æ™g 4èá`¢Bxâ¦C/¹ä{�=ö0Çwœ=Ç¿—^zÉšÄ40�öä\uÕU­ŸG}´J€�‹ï¾û®5¡-h>@¢ˆ£@¾5†!   �tEòÎ�1Ân{Aþ ÐÍ"�‡F:Ì_£ß{Þyç3(¬ùØ~vlxX€U€˜sÎ9Ç,ºè¢U�?4•o½õV'MeˆÅ¾Ø*– 0NÀà²\Ì8DóÃÏõì�œEú¿ „“¤ˆŠ(`#fAÐÄ¢'¨(FΈgöLbÄx˜@�¨ˆ9‹9ç¢("Š‚˜Ãüë[÷«þ÷ôÎìôÌôÌîÏûùìvª®ª~º»vg¾õ¾ï¿þõ/óæ›oºhaÑÏ%5Ý?�…,KuoõùMÞíú¼xóÍ7§…K×Ä¥¨ðÞïJƒ  Þ>øà7Nh[Büµ×^kYÍ›BØ+m„îˆnh4‰;I‹3Ö$ÙÞÒV‚üÒvǹ^@€ ,�ä+ä¾ëK6}‘!oôË.»Ì}ñ%OY&AþÓO?5;ì°ƒ;¾æškº/É¢ÞW_}µ¹êª«\™L^ò'Ÿ|rJ4“ç‹„såñ“çŒwy=xÁ^_àéËžõ×_?ø2O m³Í6fÞ¼yÎÛIëaÓ—, s¯œrú’¥aÆáñ×äc£¢  @ˆE PA^ÿ·z1]"Üm·Ýfž{‚¼¢,)ot*•2çœsŽE3u´Ðú3Õ¥}qùbÿÏ.ö|õs»í¶s9ݵ®°òç�wžV�[ÿÇìDQ±×gEŠ~ŽPCš0¬{*“»é¦›ºõ|i‚°ÙpJ«b>‡¨ýb(÷µr`Ë…@“‰5ùÁ[M÷Ï÷#ße©î­>§êþýôÓOfß}÷5Æ «ÒµY³f¹çJä ?tèРŒžŸ‹.ºÈmËK~•UV Žù•N8Á(j…&~è= ß_FKM`W[ú\ºúê«çœ(g¬Q4 MhW®yµ«þez'Âýˆ®ë9Mt×gú8¶xñbóùçŸM<Ògú|S¹åj£�>ÂA>×�à8 @€ P ä+á.ÚkЗaݺu3—_~¹iݺµû`^� /ïyåb—éKPyEMÀ·Ýv[FP þ 5_Nç(ì�BÞù/?ü1¿Ô9_|±Û”ˆ.�Ùøñã� n½õÖ.lžÛiù¼vòz�·”·‰'šAƒ9Oˆ»ï¾Û ùþX¾Kù|‰Q€ TO A^Þí½{÷v“JûôécFŒá"6Åä{ì1sÔQG¹Ne _LýÙ®6Ž _ìÿÙÅž¯¾Ë{[a¿eã%Ê{+¶~EÀR$,Ù¸qãÜg_w’K¥ÑRJåºÖgˆÛo¿=¨¾˜Ï!ª¤XŠð¥Ï-2¥åÒ3öØ®éþ¹Žð«T÷VB³žIMâ8í´ÓÒ>çùnê˜R@H\ÖgÐQ£FùC.ÒšKìV:„L¦Ï´š€#»ë®»\Xûp9‰¾Ã‡wé$Ô†L¢¼& (š„Ò¯e²êÆM4¸îºëÜsúí·ß§·hÑÂxà�Aªµà€]Q9Ÿ»]“Ú´iã&Á¿ÿþûAš úúì«ñ1“)Ì¿>cëóµ��§‰!Š ÏØb§TpÍ›7ò´«žK/½Ô¥¦SÊE±ð–DŸ aáÛG�÷$XB€ @•LA¾Bî®ëýöÛ/˜á¯™òÕ òá/,Þx㠳 +d$á¿Ì[c�5‚/õTP3ß7Ø`óÛo¿9�$y&e²ð—Uò¶÷_\)¬ r…êË Ÿ/ð÷ßwÞPú‚D_’uêÔÉU©kQ˜À_~ùÅå²�†ÄÌÔnuûä«£Ã1@€ �?�|yý/¹Ï>û¸�ßúP¢—¼B•B)Ž á…š[n¹Å Nú_2š+½Øú³ˆ#Èûv±ç«ïØ4‰Ul5Ù!,[¿õ¾ÜrË™·ß~Û¡Òg¥¤’—ðFmT%õT6ž™ö«N Ãò¼—È'ÓÄc‰ÿ²b?‡¨Žb¨=§ Y¿Ûn»9ïdí“Õ–þý¯7ùý.õ½­®7zvºwï¤ó±ÿüç?fÒ¤Iîó°Äæ¦M›§KœÖ˜áŸ'�ºOÞ$Ìk"¹ž³¨U7Öœ}öÙÁs=OÛJÛ óÃ&/z/È÷íÛ×}îU¨ýL&Ñ]ŸñæwMõ¾õÖ[áÝÁºþÍ7ßÜE¡ ¿£* út�Š^7cÆŒàœbû¤Š aá;€ ïI°„ @€*™‚|…ÞÝ\‚üÀ��瀾¨PŽÃl¦ÜòòLQÈ=}h÷_æÍ�;×y.è¼³Î:Ë 0 c ñ§/d QÒI'¹u…±÷a'¾^¡ë~Pá ÕÆôéÓÝRžò.ЗŸúroÊ”)y‡ÿs †~!ȇ`° @€ �¯ /oç!C†¸–åÕº×^{¹õ¸‚¼�ª”)Š“**¶~×™ ¿âòÅþŸ]ìùº�¶«Øú•’jΜ9.½„Nykr°;Õ˜òÆëÞ¨­8¡»u®ò‡Kˆ÷“uU�&H�Ôg„UW]U»L±ŸCTG± TG6«íýËÖoí/Ž­®½ð1Mð;v¬Û¥õ>½Z¸L¶õ/¾øÂy‡gÊ!¯°îJo¡èo Q¯pù[n¹¥Y°`�›p®çµO‚~Ô²�5šäÅv}ÞU Er�§»>?ûçX4ÉÝ[XüÖ>=ãz»téâŠ(ÂÈ‘#Ýû¤³ >@IDATIJÏ>û¬‘G»LŸ�õ™ZQAdjW“ܵTDí×gko…ò:7Ÿ>©|¡,t® Aþø @€ T6ù ½¿¹y}é©YõòB—7z6 çë“çÒZk­åŠ*—»rºËäa’)ä½;hé‹ }¢�{ÊKïíÌ3Ït!W^yeç ñÔSO ø ?ª¼÷2…ÛSAÍâ×— ¾}_G!KùB¨q @ÈN A^‚TÏž=]>iyĆC‘Çäþùg'KÄ•­¼iÃVlýẢëqùbÿÏ.öühŸ£ÛÅÖ¯Iµš\+Ï{åv—g|6“÷¸¢deå•S\!È%ìKTõ¦H\‡rˆkCŸ–Äç�b„û]¯íý‹ö7¼�ä½ ×›k]³õîK�¦4Ëu®Æ=+ªC&Q]⺷ÇÜyä‘nóšk®q ü1-o»í67Dëò—·¼·lcÍÂ… ÍV[måú«ômwÜqGšG¾žë~ýú¹wC“Í5îoû›«6,È+ç»R2l¼ñƾI·Ô¸¦I.²pÚ7M�×;%Óçx…æ÷WûO9åCë…òùö©ê£ Aþø @€ T6ù ½¿¹yy (”e4?_‡DpÍ—Éce»í¶sëa¯£L9ú\¡ÿûµÓN;å ”‡»Bgz“·‚Ä÷çŸÞ}™¡/êôå¬òÇký“O>q"¾Ê…½ð%Ü«M…½WžAåšWÈÓ¸† —å @€@<ùò'žx¢¹ï¾ûœ@õÈ#�¤ånŽ#ÈëÁÃ?ÜuLÿ[ḛ̂[¸®èzA¾Øÿ³‹=?Úçèv1õK0•÷­Éµ§žzª Ã-ñQâÚ•W^ìûóJ÷ã³Ï>sB¨Äx¥¥’éÿ¥©’¸ê#l…ÏñëI|)†�ïG¶emï_¶~'uo³ÕŸm¿&tH¼–ˆ-qùž{îÉk¶U¯úMAaÙÃ6mÚ´`ÒαÇë¼ÑÃÇ«[Ï6Ö<ùä“A„8=Ãzž¢ž§Â‚|¶Ïâa�ZÚ}.yµ¥Ií²;ï¼3ˆ8n[éßämÿã�?$ÈçÛ§bXø~‡¯÷¡‡2묳Ž?Ä€ @€@Å@�¯˜[™~!¹ù�wÞÙÌš5Ëy) |6?~¼%Ê@€ �øâ ò>E‘jV*#?ñÓ·G�Wˆôÿþ÷¿Î#Uÿ+†½¯“¨ß÷%Ó2Ž _ìÿÙÅžŸ©ßá}ÅÔ/ѶcÇŽ.t¶êT¾jyø¶k×.Ü„ +¯PÚ_~ù¥iذ¡Ë5/Ï[™<ÃùÁ[µjåRT)M•Äý\–Äç�bÔõþeë÷6[ÝÙö+o¼Äøyóæ¹÷X¡Ï«û\­Gïšü!S´ EWÓó6EsÐçÑßÿÝí–x®0ôòpWôµzõê…‹§­gkFŒaô#ÓXäCʇOÖ5i²€Lßú÷ïïÖ¼&é'jŸ~úi²?œG^ŸËõ¹XcžBã{¯ûèùJñ ±°ù|ûT ßoyO‚% @€ PÉä+ôîæä�>úhš¯uëÖ.?{6 þKûí·Ý‡z­‡Ãå]pÁîK4í�Úo¿ýæ„vå»Sˆû³Ï>;Z$ã¶Âà+Ÿ¨¼$|ðÁàK>yÐËs^^Qú"OžòP(K}AºüòËg¬/¼A>Lƒu@€ P<�8‚¼1E6Rä¤öíÛyÇG¥8‚¼æ˜cŒ¼ÇöâŠ+:q^»ù!jÙÆå„â‰'¢Å³nk²‰>3Ë‚|¶÷Gbþ6ÛlãʇyñR”8�Ÿº¦l¦÷NïU!‚|¾}*†…ï?‚¼'Á€ @¨dòzws ò^h—G€¾4Š~ê±ø�Ÿú²Bþ½ýúë¯.7¼„v}¹qÚi§ùCiK‰çÑeaÏ€´B‘ õgÏ=÷t^ a±__üù�¤Ï<óŒYmµÕœwÎ&›lâBFóFª 6ä¬@€ �DÄäGŽi.¹äמþ/Tô¤¨Ék^b»¼°o¼ñFwXH}ždýªˆMŠ’¤ÿ?õ¨·$ê÷ue[Æä‹ý?»Øó}ßå},A®iÓ¦~—[[¿RX)ä¼ìÑG5k¯½¶[�þR,… —…½n•[÷Ù›>‡(½BÕo¸á†~wÖeŸCŠe Î)b×ܹsM‡ÒúZ[ú—Ö©˜ÅÞۘ͘E‹9�qMø–�qÆ.•YÜó•VMÏ�¼ú�A¡ÜWZi¥jO—®ˆo:wúôéiiäq®Éà{ì±GPGuc�&š?ýôÓ®¬ÿ|œZyç�wÜç×wÜ1ˆ.WŒ úé§» ézg”—^ã2™ï_9yß–ú‘/ ßwyO‚% @€ PÉä+ôîæäåY®ô2…}”WA&Ûm·Ýœ`¯°ñ /6ÍÚ×ì}…|T¨¾L¦/éä�" {Æd*«}òl’/Q>êõ¤/gå¥Ð¢E óúë¯Uø�|qù+€ @ qùã�?ÞE>Ê·Á‹.ºÈyÒê¼pHú;î¸#-×xõçê[A¾Øÿ³‹=_×pÝu×¹PÞ ë­·ºPþÚŠ­?̹ºÏaOq}ðŸ=Ô�ùóç›1cƸp÷ )îm³Í63Š’ H ÙÄF•-ösH± äÝ­ÏIšô ÉÇ~òˆ¿ŽšîŸïG¾Ë$îm®6õyOÑΞþyW4¤¨¾ˆPXyy2Em¯½öryàµÿ¥—^Êé¹ Ï…«Wèù‡~8-|¥¾´9è ƒÌꫯx$¨^rR9ú2/—!Èç"Äq@€ ��r òW]u•û¿UB³¼kÃù¢Ãbb>½ þ¹Î‹#Èûv±çë”O[b±l¿ýö3 {í­Øú•ÃZaçe .ÙL¦|Þš0+Ë6qV^ÈwÝu—K= TÞAa¾õ£õ¨û9¤XòÈVÚ,ooÃa÷kº¾_ù.“¼·™Ú–Gû 'œ`zè!w8:Q#Ó9á}ºoú<¨çfå•Wvb¼<ä‹1-Auh’¹&›Ëªk“ΧL™b6ÝtSwNœ_Åòò¸×äu™¢ÄiÂ|4Òݹçžë&»¨L9ùbX¨�2ùÿqà7 @€ PÙä+ôþæä5s~‡vpa¶þî»ï6�;whèËy}(Ô¤,“w{ø‹(ÕuóÍ7çkE"½¾•eò°wB¿Þzë-³Ï>û¸ð�šiß·oßÐÑÿyÒøÜ“o¾ù¦iÞ¼¹;¾õÖ[›/¿üÒyÿ(Ìb.C�ÏEˆã€ @ ?qù/¾øÂ|ûí·ÕV«û9¤X Ù¯0äªG!û%J†­¦ûîK>ëÅÞ[ åú ¨ðñŠ Ï™aÓûí£®i"‡Ï.“mýÃ?tÏÔ?ü`ôÜ©ž5×\3[ñ`¿&£è½UÚ ‰ìÑÐöáh áϼÕ�5šì¢I/²lùëõ<û¼ñJ¯á…þby=oJí  2¥ýФ•-¶ØÂ|ðÁŽ}x\,‡ _ wö‚¼'Á€ @¨dòzws òºìðEk­µ–‘®¼oú’CÞðúrB–MLWîN}¥Ü‰2‰ïÇ{¬ Ù÷ì³Ïº¼žúÂAþrÃíˆüZ¼x±û¢P9ç« �/ïõO_¦ì¾ûîn€ÏM)ú6mÚDj®º‰ _• { @€@1âòqêïß¿¿g4Qôž{îI;eÉ’%.üo¿ý––“<­PŽ�êêÏqª;G�WÁbÿÏ.ö| wú߸U«Vfƒ 6¨riÅÖžx+Ïp ­š$+“X¨ÏÞC_ÞâòÚ�kš¬0ûºÿºç²èŒ$>‡Ë@‚ß}÷]'°+Ä`ضß~{÷�>W^>}Y¢þ 9¶-Z˜“N:Éåù ï�®¿÷Þ{f�=öp_&ÈË W¯^Ñ"iÛúROÞû?ýô“óÆW¨>yÌë‹”8† ‡e @€@|I ò>÷¶\™¼•®|à 7 ïvëÅ~I‚A•N…vÔDÿ4YŇ‚WZ2E@+Ä ¹·cÇŽ5]t‘K1qÓM7iÂ"tœ¾è™;y`ðàÁFùíãÚ‘GiÎ<óÌ ¸îóõ×_ï&�ø :(ÁZÑ8ôY¶cÇŽAù¸c�"!\yå•.|~ø�à¯Ï´š˜®W h2¹BÌËÒ^“¢�4.+Ï~¥OЄz…ïoݺµ;,±^X”ê#<ÁG)W}÷–DŸ aáÛG�÷$XB€ @•LA¾’ïnצ/”¯SB¾¾˜Ð cŸ�É D¡óô…@Û¶mÝ—Þ«!Ÿzâ”Õ~µ¥Éþ‹š8ç© ‚|\R”ƒ @ñ$%ÈWךÓ7ß|ssÇwTW´dÇòä}'Šý?»Øó}?²-‹­_b§ÒN͘1Ã…ú^yå•�îQ¾ÿ£gë_œýÅ~)–A®>–³>ò˜&GËÓ»~ýú¹º—õx!÷Vé¤4h�µÞš< Ènò0W(ùÕV[-ã„‘|Çq’ˆ®çhùå—wŸ…}ä¸$¯U!ð•+^¶êª«f�b·×^{¹ÉòÑTIö%[]…°@�ÏF“ý€ @€@%@�¯¤»ÉµÄ"€  … @€@l¥ä5S^ó¤Ž=öX—:vç,Xˆ Ÿ`óT�œ™àé§Ÿ6½{÷v‘Ðrž@�4µe¬IëÔÿm(|÷îÝÝ8¸ÒJ+¹pùÑÔrJ§I²3Î8ÃuÔQÿwví] È×Þ{CÏ @€ �ä È'Ç’šêù:r£è& @u†@©y¥F’×§lôèѦG�5Â&,ÈrÈ!¦M›6®o¼±éÚµk�ô‰F!& t^ò¯.Ôy¸<ëéjËX“Þ«ÿ¿¥0÷·Þz«Û!oüM7ÝÔl°ÁF‘ 4>ùPô-[¶ti?r¥Ÿûÿ5—wí™gž ¼ýacòäÉ®ä�/ï} 5@€ @ |äËÇš–j ùZr#è @C Ô‚ü�7Þh† æBa+|9á‡oRX�ï—W²ÏÛÞÏ:ÊI@¢¬ÄÙ¿þú˼ð YCš—³Ou­­Ú2Ödã¦(!_|±?~¼I¥R‹­»îºæ¦›nr¡ó3¨;O=õT3uêÔ*=A�¯‚„€ @€@…@�¯�ÉeÄ'€ Ÿ%!@€@¥äxàóú믛V­Z™ãŽ;.N—JRFžÇ 5åjÞi§�¢»Ù†@Y üðÃnbˆòÇŸwÞyem»R«-cM.žo¼ñ†yî¹ç̬Y³Ì¼yóÌ +¬à&c¬¿þúæïÿ{�MZÊÕoüÞ{ïuyîý¶_j|×8�A€ @¨4ò•vG¹žœäs"¢ @È‹@©ù¼:Ca@€ @€ Ô"òµèfЕò@�/gZ� @`é!€ ¿ôÜk®€ @€ @ ?òùñ¢t@�¯€›È%@€ P« ÈתÛAg @€ @€jùZt3èJy È—‡3­@€ °ô@�_zî5W @€ @€ �ùüxQº ÈWÀMä @¨UäkÕí 3€ @€ @µˆ‚|-ºt€ @€ @€ @€*‡‚|åÜK®€ @€ @€ @€jùZt3è  @€ @€ @€ Tùʹ—\  @€ @€ @€ Ô"òµèfÐ@€ @€ @€ @¨ò•s/¹@€ @€ @€ @¨EäkÑÍ +€ @€ @€ @€ P9ä+ç^r%€ @€ @€ @€ P‹ È×¢›AW @€ @€ @€ @ r ÈWνäJ @€ @€ @€ @ @�¯E7ƒ®@€ @€ @€ @€@å@�¯œ{É•@€ @€ @€ @€@-"€ _‹n]� @€ @€ @€ �Ê!€ _9÷’+� @€ @€ @€ �ZDA¾Ý º@€ @€ @€ @•CA¾rî%W@€ @€ @€ @µˆ‚|-ºt€ @€ @€ @€*‡‚|åÜK®€ @€ @€ @€jùZt3è  @€ @€ @€ Tùʹ—\  @€ @€ @€ Ô"òµèfÐ@€ @€ @€ @¨ò•s/kÍ•Ì�;7c_VYeÓ°aÃŒÇüÎ~øÁüøã�~3X6nÜØ¬¸âŠÁ6+É(%÷T*e~ùå×aÝÇe–Y&ÙÎWSÛ_ýe-Z”hÖ¬Y°ÎJÝ&ðóÏ?» XvÙesŽ+uûJé}J9Æ%Ñ¿Ú\ïZm¾;ô € @€ @¨ äëÂ]Ê£�o¾ù¦Y¼x±¨¶Øb‹ŒgJ˜˜>}º;Ö¶m[Ó®]»Œå Ù9þ|Ó­[·Œ§Ž=ÚôèÑ#ã1¿sРAfâĉ~3Xnºé¦fÊ”)ÁvmY™3gŽ™7ožëÎÆolš4i’³kš°ðù矻r�;w6µA$.%÷_|Ñôïßß]ïðáÃM¿~ýr2*¦ÀŸþiÆŒc&L˜`>ûì3³dÉ’ º'Ÿ|Ò´oß>Øf¥n˜={¶ÙqÇ]ç?üp3xðà¹Möxë­·Ì{ï½gš6mj6ß|sÓ©S'S¿~ýé�f'PÊ1.{«uÿHmy×’$ùí·ßš™3gº*õ®véÒÅÔ«W/É&¨ € @€ @€@ù4ucË-·4ß|ó�‘×èŒ32^У�>jŽ>úhwì°Ã3gŸ}vÆr…ìüúë¯M×®]3žG�W_Æ�WåüÚ*ÈŸsÎ9fìØ±®¿“&M2âŸËÂ×8yòd“mâD®z’<îS¸Þ$¸—[�?ÿüóͨQ£Â—¬O›6ÍtèÐ!Øf¥nøä“OLÏž=]ç“Ãâ¹í¶ÛÌ\`4$lŠ¢c;v ï®uëšà¤¿ŠZqê©§–µú;1räH׿.»ìR–1°”c\Yᕹ±Úð®%}É3ž~úé Z½úŸ ƒ @€ @€ P*ò¥"[CõÖ´ ½ì{î¹Çœ|òÉnwA>zþöÛooä…ž„0­;‰m]ÓСC]UW\q…ÙsÏ=sV;`À#OmÙk¯½fZ¶l™óœrH’{9ù… šîÝ»›?þøÃ´nÝÚ|ðÁ.bC£F�ÂuÖY§¬!óË}ß––öjZ$¼ñÆͰaÃÜó$Ì빓é�ÖD�õÖ[/(SÛVŽ<òHóøã�;Ïþwß}·¬Ý{ÿý÷MŸ>}\›g�u–јXnKrŒ+wßËÙ^M¿kI_ë½÷ÞkN:餴jäÓp°@€ @€ ”€‚|  Öd•òå¥//;yÛÉhŽ=öØœØu×]]¸Üå—_Þ…»ÎyB HR¬*§ ÿòË/›8ÀSˆÓO?½èÑd© Ô¤H¨”Ûm·�I¥RnrÇÕW_mvÞygó믿Eg¸ãŽ;Üå+|½_/5�BêG�¯Ý“½ ¹§¥8§&ßµ¤¯çûï¿w‘5²>lòa¬C€ @€ @¥ € _ ª5X'‚|yá+G¹Ä9Ù�èBX»�j~m´ÑFæçŸ6Ê9?uêÔjJÖÜ¡º*È‹§¿}Ë-·]VyjR$¼êª«ŒDxÙ)§œbŽ?þøðO?ýd6Ûl³ Œ½<Ð×\sÍàxmZA�G��ó<Öä»§ù”Ñ­;ï¼Ól¸á†æ·ß~3}ô‘;A>Š”… @€ @€ !€ _µZ|N’‚¼Äæ|ÐLŸ>Ý|øá‡¦E‹fýõ×wfݺu‹E¡¦BÖËsýÙgŸu9’å ·Æk¸ðÑ )¿úê«Çê{œB S-&¿ÿþ»ÙvÛmƒÜåýõ—Y¼x±«¢^½z.O³6$ØIˆ—©/ sµbúþÌ3ϘW^yŨMyë«_ãÇ�7Ï=÷œùꫯ\(m‰‡z¨i×®]´é`»Aþ�7Þ0=ô�óú_²d‰Ñ³¨üÐêCÿþý]ÝÇ7ýúõ Ú)vå»ï¾3Þ½)¶Ï ¬�ØÑ{-R‘ ¢V,7õcòäÉîy›5k–»ß W¾Å[˜Ýwß=ÚœùüóÏÍĉÝþ�vÚÉ…7WØp=Gq„iÓ¦�}_zé%Ó¼ys³÷Þ{›¾}ûV©'‰…^»žï^xÁñÖX¡ç«aÆ.wºRôêÕË´oß>cï¿ÿ~óÁ¸¼Í'œp‚yýõ×]E8�P&vt�Î2U�K$Ôû7jÔ(£û"Óó,�õbM^ñ=zô0_|ñ…{Çô®µjÕ*¨ö /L{kS”õU÷Ú›î�îÛ2Ë,cŽ:ê(¿;Xj‚Ѫ«®l‡W £FŒáÆÕ³`Á'Œj]K”’$l:tÈ8NÌž=ÛL›6Í�1zÞtW[m5Ó©S'Ó¹sgÓ»wow_Âue[/dŒËVWÜýKó»¦H)š0¥±oþüùf¹å–3+­´’ózöìi4f”Ò|¤ýmTäŠÁƒ»1Hm"È—’ÙHŒô–Dß/¸àsë­·º*%šI”—H5 ž<ð@tw°�¯X5aÂ3dÈ�À3ØW¤çCªÄQYÒ‚¼&ŠHô�kó$öE­nšˆ ûøå—_F«uÛ›.½ôR'¬ûÏ?ÿ¼ãâ·ÃKM”�PõÚk¯»õÎÝ|óÍ%ñø/ôÚ%¤JXËfM›6u÷Û?ïárz.~øaÓ¨Q#sÙe—™ÿûßF"zØ”—ýúë¯ÏxÍÕ òš$#Ïõûî»ÏU§~ÞtÓM¦I“&áê ZŸ7ožÙf›mܹšˆ#QÛÛ{ï½ç&M¨}oµ)lýµ×^›q�ïkt©‰<[mµUÚîbÆ(��a6iG6ºvíj4¦„MX ÞUe]ã–&9iK.ËwŒËU_œãK㻦{®(þoc&Nõë×7šÈT*Ó$ý�˜3gŽ›è¡¿CÿøÇ?äKœz!@€ @€ �*ä« ©Û;’ä%èJ8�é‹ryð®»îºfáÂ…ÎcÞ{�J„”¨\�•[�?ï¼óÌm·Ýæº$AP¹�W^yeóÎ;ï8o^ß×)S¦TñÊôÇò]Ê öÑG5jO^βpXkm?õÔSÎ#=,Ô_sÍ5f·ÝvÓagIô=,øÈc_¢¼„MyÊ“Tž½åQš” ¯6;ì0w þyY{íµ‹°G® $-Èë™košñꫯºM]Û¶mý!·T8{M�ˆZ¡Ü$H+e�™¼t%&*%�•«2yU�=Ú­ëWX�3‰CêwXà–w¹DLÕ#Ûc�=Ì•W^éÖ“üUèµKlÖX (›l²‰ó†—·µ&Iè}ðâëÈ‘#Ýî³äµO^õzFwÜqGÁA‘-¼8§ë—p¯ aË&È+ƒÆ%µ/“è*Q_õ'ao¿ýv©`Ÿ}ö1—\r‰«V׺×^{¹g^B½&ÞhŸî¡ÞùÚ`z=õG“Säe®çoÿý÷¯ÒEE“ˆFÑ(fŒÒ¯?þøÃµ£÷Â÷EQ!6Ø`ƒ´ö×Zk­`LñÆŽkÎ9ç7 ¬K—..€"I(Êc�=æ¼ýUVuùÉþÜLËšäóŸëò»¦&Š!kÙ²¥‹¢¿E;>þøc÷·QÑ6ôN{Ó»óŸÿüÇ("E>¦t0š5Mˆºá†\t”'žxÂEµ@��Rb€ @€ @()û…'VAlˆì” Ïî~lîâT¦\Ë¡C‡¦]½JRVTtçÛ/·SÖK7í¸ SV€tÇ­HŸ²!�ÓŽG7î¾ûî ?V¸�ιíÛ²bWβV\J©Oº.9eÅñ´sìòA_9ä�´cÅl 6,¨÷ûï¿wUÙ�ðÁ>õÇNLpûo¿ýö`¿õ\šMªï6:@P¿ÚµááS6DpÐŽV¬`š²“ÒöE7òán…É Í»îº+­*+†ÇÔ*8íxÒª_íèdžS�]}¡Ü¬È´wÆg¤¬�´i½©SVô ŽÛ( Á1›B دçR¦ûäûn'Ö¤¬¸ìö[ïq·ßzf»í¤zíÖ[9eÅæ”õl¯Ò%j?eEU×ï}÷Ý·ÊñcŽ9&¸V;�!eø Ì¯¿þš²aþƒão¾ùfp̯X!/8îÇ0+ê¥Âï�ý†þ¼b—vrDЮƒêì$&·ßNDq㎮I÷ÒŠÃA™Ú¶ò¯ýËõѦ°ˆÕµ¤Æ(5f'mä‡XíÛ );ù&¥¿AQÓ»¢1Ý¿?qÞý|Ƹh{…n/�ïšþvûûbÃÆWAg'T¤l•´ýz—ý9ù,mê…´z´aSc¤ìÄWŸ�·‘;‚6Ô@€ @€ @ ”ä�„U�° ç‹l/fyÚöçEÅU_Æz*e$�TgåäÕß÷lý²^¸A‰zIؤI“‚:§OŸîªÔ„õE‚œ–ž³õ¨ ÊþòË/AóIõ=,øl¶Ùf)ë©´‘ÏJ\±J×ë™Û<çUš�Xk½Ãƒ2uA��ËM±Ÿ¢û¾Ÿ„&bx>Ö½…yë-ïw§¬·°+/aÙ›ŸHW8õçÅ]&õÌDÛ³9ÈݵØh iT.,ÈKÌŽšM™p»÷Þ{£‡SQA^ì}{âmCÖ§¬7v•óŠÝaæýò“Zlª‚à=÷"½�Ì”Ëô\Û�$ÎÏW�OjŒRß äs]ó+¯¼0÷÷¦ºsâŽqÕÕ‘ï±¥ñ]ëÞ½»»/#㾓65BÊF�II4ÏçÇFûH»%š Õ·o_×¾õˆOkA> € @€ @€@‰ È—p¹«÷‚¼<ã%äeú9ñÄá žŸU½€(�vyFl¨á Œ kìO͸,§ ï=‰Õ›+6clå ï6ÌqÆ2ùî Aò ýôÓO]º^Äòþž½Ík�ÖLR} >ºÖB-®XeCC<£^޾m.8(Sù¸Ü¢°MÝà/7miCÙbmïÞ½ƒcaAÞ¦Sö{ñ*,Þ�3&xžÂøÁIE®$ñÌØðÓ)MΰáæS64ºû9øàƒƒûþã�?¦õ2,Ègв¡h~ÊäAfúé§»H¾¼<÷3yí§u À ›‹¾J¿4ªmM € @€ @€@‰ È—p¹«÷‚¼4®BegóÄ“·­¿®lrµ”áà×_Ô)ñÔ{E‹�Âæ«=›ÃÝ…ÏöáÝåͶ¤ú|$TjqŪÿþ÷¿Áµk2B& G¨ ‚|\nzžý³”-"ƒxø¨ 6Ïz€',È+…€7_V"³·0¿B#øº2- }fäù}ã�7¦4¹ÄsȶTXê°yA^“V|hþðq…°÷u]}õÕáCn=,Èûr~)®TN‰på•W¦Âc©&#xÓ»ïûS[Ãaç+È'5F‰Q¡‚¼Òh„O‡àG—C† ñ·"ë2î—µ‚,�ïšOçàï‘þGQ: M´yë­·J6yF‘+UDí*bFÔä£D؆ @€ @€JI ž*/i’z*/+›{Ú|óÍ7fÙe—53fÌÈØ¶õp7G}´;vØa‡™³Ï>Û­ÿôÓOƆÌvëË,³ŒiÛ¶mÆóÃ;Ufܸqá]iëVœ6Ö{Øí³ù[�õ"M;žkÃæà6ÖÛÝØðfÊ”)Õ·ÞÅÆz£šV­Zë —±¬Íakú÷ïïŽYaÇœyæ™Ëå»SÜÄÏæ°56Ü®±b¿±â»¹è¢‹Së9kÄBÜ­P`¬ olxÝ ™¤ú®:­âê}â‰'Œ#‚6òY‰ËÝNè0º¯2ÎÛtéÒÅ­‡©Vüs»†n¬Çdøp¢ë6Ô¹±b¶«SÏ¥‹cÕ_·É“'Ï�Ú‚ç*Úà~ûí<�ï¿ÿ¾iܸ±±aêÍAäŠÚ‰ Æ Ón½W¯^æ£�>2p€±áÏÝ>=÷§�vš[ûí·ÍrË-çÖ“úUȵëyÞÿý�Vƒn4hÐÀ´nÝÚ�=Úi'ª+Ú»ã/¿ü²;æ [AÎ<üðæQ£FÆzÖûÝÁÒ îf§�vrÛ'�t’±ÞÙÁ1­|òÉ'ÆŠÞiûü†Æ¾©S§;)ÉïJlùÔSO™Ã?ÜÕgjc£‡¸1Gë—]vYÐŽÞƒ… º{¥{VM㟞½¦M›;q(g“£Ô�Þƒ>}ú¸6Ï:ë,3`À€œíkü´Âª&e›7onVXaS¯^=c£Gë5ïŽEÇ×à„ÐJÜ1.tJÑ«K㻦ûb#õëo~øá‡* W_}ucS¹˜­¶ÚªÊ±bvø1¦Y³fFƒ46…͆°76¿¼Û¥ÿ•4n`€ @€ @€JEA¾Tdk¨Þby}q.KËŽ;ëýYôU”S�·y›�õ¬5Mš4I Ã1mÚ4sÄG¸]™„¾pÙ|Ö÷ÜsOcC�–ÜÌ›7ϼñÆfذafß}÷uB­&hâƒzñ×W¬ºâŠ+Œ ñîªÎ&€ßÿý� Zù¸Üxàs '¸k·aÒƒç*Êy÷ÝwwÏ£&¹Ìœ9ÓÔ¯_¿Ö òq¯Ýz‡›§Û]ª&Ëhb‹õ|u¨¿þ3Î8ÃX�r·­×‹eIòcÏ;ï<ÇUï•líµ×v`4ù!IÓÝϰµlÙÒØô¦E‹n· —oÖ[o=c=ÿÝ„‰�µÑòä“£Ä"_A^;4Éá×_5z�h4ÑEb¼7MtÚzë­Ýf]ä£ï„¿Žè²RÞ5MXÓ$&M–ÓDí#¸Ô† ºÿ7:tèàöéo¤î±Þ¥|ÌF!1šd(óôãµOfüäMâÓ¸¬ÉzÑÉ?*‹A€ @€ @(š€<ä±Ê!PlÈúvØÁ…xUèú$,²>[HóêÚña…­7euÅܱC=4­pÚ™l„ Aëyœ©HAû¬¸ïêµb]Jé&Wa·e—_~¹Û¶ÅAÛvb@Z;Iõ=yÁ‚imä³—{˜§Òd²pÈ⺲>.7…Ïöa˜­7{¦Kwû¬ç§+§ãÞÂ!ë~Ý›=]YåA÷f½þƒv¢¹Ø}™b–…<3Ö{ÝõIaø­×kÆæ­—Ðï(S²Þ ×Ï ‡¬1bD•2á�õv2@pÜF¨Ú´‚ýI­ÌŸ??¨ßß{;é(­z;1'(£w>›i PÚ ÿc#MdMµ‘­Žböç²>©1J}Î7d½�Ô0Í–⥗^ ÊX¯ûœhâŽq9+Ê£ïÚÿ`Ù)ýoàÿßлd'“$•æÁ¿_ù,õþ{ó÷7Ÿó£)||],!@€ @€ Kù¢§4Ô® Šñ�וÈ{\^䲇zÈØÜçn½Ð_6¯²9ä�CÜéò&öáëãÖ§ðæò6—�<Ы ++ïØñãÇ»ªoºé&cóqWiæÄO4÷ÝwŸÛoÅdÓµk×*e Ùaó\+§Êsóõ×_wÃ6×xàµç ˆ±÷Ô¾¤úž”‡|\î6ߺ±B�»¬þóŸF!죦0ýJ“ «$y…d÷Ï�ÍUl섄襧…VWHfÿ|ÖÖ�õq½v;wîìÂÑk©(QShêm¶Ù¦,!ëÃi7¾ûî;£PÔV8w]Ò{©¨IZ8Ôõ¶ÛnëÒS„ë¿þúëƒðõJŸàÓƒ„Ëh]ýÖØ6�q ±]Óx¬(ò8Wèn-«³¤Æ(µ¡H&ò¸—iLÖOu¦pç>…ƒÖåýµp´Ž8òqǸh;Ål2>Wò»öÚk¯¹(2bjÅycóÊ;¼üñ‡Km’¯‡¼"$(2‡Lß5d3¥vùöÛoÝa=úCÑ>â¦9ÉV/û!@€ @€ d$P¬¢Ïùµ‹@±òaOD›+9e¿Ïz�6üvʆ¡Íz\>ýôÓÀÓ͆®¶l¦ƒÞó\^n6Ìm¦"Á>;� hËæç®ÒwÒ8e'¸2ö‹÷” ™œ[슼ÃÞxbçMÄ6Gxpܦ¨â ›Tß ñÀôý /ãrW$yIëÚµŒzpñÅ)]¯gSIòz7vÙe—àÚ¬¸FèÖ‡ ¿îºë‚ãuÝCÞ{¶®µÖZ)½WQ“·«¿çZ–ÒC>êÕj';ï›3SŸ}öY´{Em‡#>ÈÓ?lßÿ}êïÿ»»v6?õÕW_…§­Û‰,iŒÄ)×xšVA‘6}FоÍ!Ÿ³¶¤Æ(5¤qÃ?vXζ…À—G�ð'г�”‰ã!wŒóm$±,d|®ëïšMá’ÝçŸÜ3›Æ"k¹RØu×]ƒ¶å‘�A€ @€ @(%åÐÄ*ˆ@±‚¼PXïÂà‹j›=e=½�€b½ÖR³gÏv¡fµ_‰õ^¯–žÍ› ñm½S¯%HêGVu�$®]rÉ%)ëuïÎ�ŠHQ�Ôzã;1ÎærNI,µÞ¬ÁuÙ¼çÕ5›÷±pfq ‹¯ª¬W¯^AÛX¢–Tß |¢}Ñv>Ü/»ì²àÚöØc�”&jˆ¹BºGÃW’ /N>ø`píš�`ó…§lžë”B›_zé¥Á±è�º.ÈÛ<ËÁµIP}ñÅÝ$ lC½xê—åäu_† ô¡oß¾îyÔþ$ì›o¾IuêÔ)¨_mIô×ónsPûÓr2µ[Ó‚|8‚R%XoyJþÃ?Lé'*R&5Fy~â‚&+i\·Ñ\»j;*â†SHx;v¬›ä¡ÐçO>ùdÊz5ÜõÌÅäóã|Ÿ‹]2>×õwM÷K÷õ¼é=ÑÿÖ3Ý��ú{áLjI“&‹7¯óÃÿ—DŸõ¼*¢0 @€ @€ �YŸ1n@ÝÝYlÈz]¹õj76«ùè£�õêÕÓä�`Û¯Ø<ì.Ì«ßδ´â£0`€±"m•ÃÙ‡ Z‘ËXÁ/¼Ë­g —­rGyd*»ÊIvÇl`&Nœhš6mšépAû¬0d¶Ü[4~8ܳBé+¤~Ô’è{!!‘£ýðÛq¹+,°Í•�ö¼ø:´lܸ±±"µÛUI!ëuAz'l.î ̓»ÈÈ/…¿øâ‹]f¨®‡¬×±Ûn»÷U×¥ë´b›»ÄæÍ›»t¯¼òŠÛŽ†Â·Þ°æá‡6�52Ó§Owe¿lŽxcóÔ»]Ö“ÙXQ2|8-@8d½/¤�×{íµ—±eÜ.…�Wøø¤ì±Ç3Ç|Æ1MmبæöÛo7­[·ÎÚdM‡¬×½²ŒXg2¥WPš…°%1FùúlqsÊ)§øÍ´¥RAh ›õŒwã¶ß§¿Iú±Ü.…À÷©1ℬ×IqÇ8ßf±ËBÆçºþ®ù�ûž�BÃëý ÿ?±ñÆ»û­ñ \N=1cÆŒjÓᔫO´@€ @€ T.ù »·P¬7ªiÒ¤I FE/Ñzñ:Qû%”[oÂh³dÉ—}̘1FbsÔ¬‡¨s$*I|ËeÆ.¿ür'¾)÷¶·Q£Fåa®Îôåý5×\cüq—{Ø ûÖ#ÙÜu×]UN•€!Où˜Ã&!@±®÷oû[øP"ëÊ=«ÜÕ&Õ¶„hoêçÀ�ݦõ(6—2Y±}—ðëÅ~åçmÙ²e¦fbíˇ» µí˜?õÔS�ÐR¿~}Ó£GsðÁë-ìÚ´ÞôN(�Õ� …9G'ETW]1Ü$,�9Ò=£~â�o«}ûöî¹ßl³Íü.·”°)1Pf=|�Êɬצ±Ü1ëMëöM�:Õœzê©N|Ôs•äD5PèµëùÒ»�¸cÃØåó¾ï¾û²>‹>y¶qJï�rJËtíÇwœ[÷¿æÌ™äÏö>Ùh¦OŸ>nü’p«ÉC3’2=ëçž{®±^¿A• 40“GŒ‘óÝS¿§M›œ«>–âþ dX±¡ã�õ\vbèܹsÓ&XX�e£ ^Q+vŒ ×÷öÛoý °QOŒMwLèÐX:nܸpQ×·+¯¼Ò•÷?T Y³fnLÑø*aWïã?ÿùOcS¤�Ÿi#Ÿ1.Óùùî[ßµóÎ;Ï�qá÷ÄsÓû¯qPtâüáÏKbÙ»wo÷ÿˆÞ; ò¥øŸ ‰~R @€ @€ Pä+ã>–ì*$nØðÁNt“xÓ¦M³Új«™•VZ©dm&U±ž>øÀh€DB›ÓÙH0« VWû.a^"›&tl¾ùæeYjòÞÊSWb¥ ¹íDÂõÖ[Ï´jÕª&»Tò¶%Œ~òÉ'îGP$ˆ–[X+ùEæh@ã‹ WoVXa³ÑF9¯ÿ§TÄᚣ‘C“@4ñl�uÖqc»&ÿTºÕõwíË/¿46¥…»oš§ÿ#:tèà&Vú½ãú @€ @€  Èó @€ @€ @€ @€J@A¾P©€ @€ @€ @€ € Ï3@€ @€ @€ @(ù@¥J@€ @€ @€ @€‚<Ï @€ @€ @€ @ äK•*!@€ @€ @€ @ò<€ @€ @€ @€ �@�/Tª„ @€ @€ @€  Èó @€ @€ @€ @€J@A¾P©€ @€ @€ @€ € Ï3@€ @€ @€ @(ù@¥J@€ @€ @€ @€‚<Ï@âæÎ�›±ÎUVYÅ4lØ0ã1¿ó‡~0?þø£ß –�76+®¸b°ÍJ²JÉ=•J™_~ùÅuX÷q™e–I¶óÕÔö×_™E‹%š5k¬³R· üüóÏî–]vÙœãJݾRzŸ�RŽqIô¯6×Á»V›ï}ƒ @€ @€êùºp—òèã›o¾i/^ìª-¶Ø"ã™&¦OŸî޵mÛÖ´k×.c¹BvΟ?ßtëÖ-ã©£G�6=zôÈxÌï4h�™8q¢ß –›nº©™2eJ°][VæÌ™cæÍ›çº³ñÆ›&Mšäìš&,|þùç®\çÎ�Mm‰KÉýÅ_4ýû÷w×;|øpÓ¯_¿œŒŠ)ð矚1cƘ &˜Ï>ûÌ,Y²$¨îÉ'Ÿ4íÛ·¶Y©›fÏžmvÜqG×ùÃ?Ü <¸Æ.DN>üðCóǘzõê™u×]×Ô¯_¿ÆúCÙ ”rŒËÜbeì­MïZRD¿ýö[3sæLW�ÞÕ.]º¸w7©ú©€ @€ @€@”‚|”HßÞrË-Í7ß|cä5:cÆŒŒWóè£�š£�>Ú;ì°ÃÌÙgŸ�±\!;¿þúkÓµk׌§ÆäÕ—qãÆU9¿¶ òçœsŽ;v¬ëï¤I“Œøç²ð5Nž<Ùd›8‘«ž$�‡û®7 îåäÏ?ÿ|3jÔ¨ðeëÓ¦M3:t¶Y©›>ùäÓ³gO×ù¤Ç°¸D4ñãÞ{ï5ÿýïÍG}œ¦ç}å•W¶këŠ&8éo„¢Vœzê©eí¦þNŒ9Òµ¹Ë.»”e ,åWVxen¬6¼kI_²ÆŒ§Ÿ~:¨Vï�þg ¢Ž„@IDAT@€ @€ ”Š‚|©ÈÖP½5-ÈG/ûž{î1'Ÿ|²ÛG��ž¿ýöÛy¡'! GëNb[×4tèPWÕW\aöÜsÏœÕ0ÀÈS[öÚk¯™–-[æ<§Ü’ä^NA~áÂ…¦{÷îÎ[¹uëÖæàƒv5j䮳Î:e ™_îû¶´´W“"áo¿ýfî¼óN'(ûHaîuE�?òÈ#Íã�?nš6mjÞ}÷Ýð%”|ýý÷ß7}úôqíœuÖYFcb¹-É1®Ü}/g{5ù®•â:5‰æ¤“NJ«A> € @€ @€@  È—jMV‰ _^úò²“·�làÀ�æØc�ÍÙ�]wÝÕ…Ë]~ùåÍ[o½•³|MHR¬*§ ÿòË/›8À!SˆÓO?½&ðÑf‰ Ô¤HxÕUW™«¯¾:¸BMöP¸zýÈä4YWä³¢©ujò]KÆ÷ßï"k(d}ØäÃ4X‡ @€ @€JAA¾Tk°NùòÂWŽòí¶ÛÎ5zà�š .¸ g6Úh#óóÏ?土:ujÎò5Q ® òâéÃoßrË-F×�U�𠝼òJsÍ5טfÍš™þóŸæˆ#Ž0ÿþ÷¿Í /¼à@#Èç~Þäs3ª-%jò]Kš�&h)ºÅ†nhé§š@�Oš4õA€ @€ @QòQ"u|;IA^bóƒ>h¦OŸn>üðCÓ¢E ³þúë;³nݺÅ"US!ëå¹þì³ÏºÉò†[c�5Ìzë­çBʯ¾úê±ú§�òH‹Éï¿ÿn¶ÝvÛ wù_ýe/^쪨W¯žËÓ¬�Ÿ~úÉ ñZWx{…¹�Z1}æ™gÌ+¯¼bÔ¦¼õÕ¯ñãÇ›çž{Î|õÕW.<¾ÄˆC=Ô´k×.Út°]ˆ ÿÆo˜‡zÈyý/Y²ÄèYT~hõ¡ÿþ®îáÇ›~ýúí»òÝwß ïÞ$ôùÜÀ ‰½× Ó­ÈQ+–›ú1yòd÷¼Íš5ËÝo=o[l±…Ù}÷ݣͅ:Ÿ8q¢Û¿ÓN;™±cǺ°áš¤!�·M›6Î û¥—^2Í›77{ï½·éÛ·o•z’ØQèµëù–-Þ+ô|5lØÐtìØÑ(5@¯^½Lûöí3vñþûï7|ð�ËÛ| '˜×_Ý¥qP„ ebwÐA9á,S¹DB½£F�2º/2=Ï›o¾y¦ªòÞ7iÒ$³`ÁsÈ!‡Ï’„ùÚ.Èk\нö¦{ û¶Ì2˘£Ž:Êï–š`´êª«Ûá•Bƨ#F¸±@õˆŸ„Q™þ–(%IØ:tè�qœ˜={¶™6mšcô¼éþ®¶Új¦S§N¦sçΦwïÞnì וm½�1.[]q÷/Íïš&ªh”ƾùóç›å–[ά´ÒJîïaÏž=ݘ—c!å|¤ým¼ãŽ;ÌàÁƒÝ¤ºä !Ê9€ @€ @€@>äó¡UÊ&%ÈK,9÷ÜsÍ¢E‹ª\µ¾Ð–hxÚi§™ T9ÞQnA^BðùçŸoÆ�îF°.@¢°Ä¤LuÉÓNBä#�<âªUŽxŸY$8ÊfΜi²^vòÉ'‰‘Þ’è»<ôo½õVW¥D3‰ò©£&Áó�ˆî¶ó«&L˜`† b4A!lz>$¬J•%-Èk¢ˆDÿ¸&1Ob_Ԋᦉº�_~ùe´Z·-±éÒK/uº/ðüóÏ;.~;¼ÔD U¯½öZ°[ïÜÍ7ß\�ÿB¯]Bª„µl¦Üäºßþy—ÓsùðÃ…{¿ì²Ëœ‡¹Dô°-»ì²æúë¯ÏxÍÕ òzO9åsß}÷¹êÔÏ›nºÉ4iÒ$\}¢ëuA�¿öÚk3NÊBy¶Új«´ÃÅŒQ£ãCZå¡�®]»�)aÓ–Aƒ…wUY׸¥INšÄ’ËòãrÕçøÒø®éžüñÁ߯Lœêׯo4‘©T¦I>ú;1gÎ7ÑCãÒ?þñùR§^@€ @€ @  ù*HêöŽ$y ºdú¢\¼ë®»®Y¸p¡ó˜÷^§!%*WgåäÏ;ïŸñ¹.¿kŠ`rá…º[вeK1D‹4v|üñÇFmCï´7�ÿùÏL*•ò»b-•FÀ¢¦ Q7Üpƒ‹hñÄO˜V­Z!ÈG!± @€ @€ ”–€ý« 6Dvʆgw?V°Heúñǵ:thÚÕ[¡$eEEw¾ýr;e½tÓŽ[Á0eHwÜŠô)ò8íxtãî»ïúc…ÛèáœÛ¾­½öÚ+gY+.¥Ô']— �œ²âxÚ9ö ù /6ÜtÚ±b6† Ôûý÷ß»ªlHø`Ÿúc'&¸ý·ß~{°ßz®Í&Õw ¨_íÚðð)"8hG+V0MÙÉiû¢ùpßgŸ}‚6ïºë®´ª¬Sl¨à´ãIo¨~µ£B©¾‡ŸÍ6Û,e=µƒ6òY‰+Véz=s›ç¼Jk­wxP¦.òq¹I8ö@tŸÃ÷ÓƒÐD ÏGº·° o½åýî”õvå%,{óIâ §þ¼¸Ë¤ž™h{6¹»›ß;m¢‚Ê…y‘#zjʦ̸Ý{ï½UŽGy±÷퉷 YŸ²ÞØUÎ+ÕŽ¥A�OjŒÒ=(D�Ïuï^yå•à™É5áHuÅãrµ›Ïñ¥ñ]ëÞ½»»/#㾓65BÊF�II4ÏçÇFûH»š Õ·o_×¾�B’Ö>‚|*6 @€ @€ � d}i”½v²^!ž•ã=“Y�1cE.wH¡ÆÏ>ûì ˜õ¨6ʉ-Sˆm…“ŽšÂq[O4·[áì’:›•3dý‰'ž„*ö!â£ýºîºëÌå—_îvßxã�Fù½‹5…ßo¿ý\5ÊU­pí ‡¬{`EX3bÄ_aòO:é$Ç~•UVI ¡ŸTßÃáÇžý¸ãŽ+èòâ†s¾ÿþûÝ5ªå�·Br•ö”#\aÃeI‡¬�6f…\súé§»ÝãÆ�3ÊÇ á›¾çž{fÌÏ­œÛVà7‹-J ¥Y¯wD¡îe[o½µËEß§O÷ÜhŸÕ­çI!ùblƒ4ÉÎ:ë,3`À€ðaÞÚ¿»6BƒÛ¶\™8À¥Üˆ†¹O« á�º²>zÉ I¯táTÑ2áí¤Æ(Õi£ƒ=ã²L÷רæ—Bß[�}÷Ì)ܹL¡ë} •èßµLUÅã2�[è¾¥ñ]ÓûéßÍÁƒÉÀ(µE9l̘1F©d“'O6v¢[×/rÈ(X� @€ @€Ê@A¾ �ËÙ„ä•3yÆŒ›Vî^å=—E… Ÿ«6ã‰v*ׯò÷f³r òÖCÛØðÖN°œ9sfÆ/ý•[XÂ’,›€œíZ²íW>då4–)ÇróæÍ�ð.6ÊùmÃo›¿ýío.w»õâ56 €Š%{KªïaÁç¶Ûn3ÿûß}y-ãŠUšŒa½þ]ÝšŒ <àQ“ræ™gºÝuA��ËM9¹ý=Sþ¹Š^¿„c‰÷z.ô|Ê‚ü#�<ârÅk¿/+Ës ó³iœ€ª²IY¡ÏŒ&è¶á¦�8Z]$ȵhÑ"(ây‰æzW4hÓŠrKk²�L"«ò‡-<"¼_ëà>øàèî’n/ ‚|Rc”nD¡‚ü[o½år�+¸�¾‘õž*�¸Æâê,îW]ù[ß5�62@€JùÛõ÷R•$�+ï{)&Ïh†Æ=ÃX/ù`"žï‚¼'Á€ @€ @(ùrP.cÅò?ýô“±!³]oåÁÖ¶mÛœ=W™°°=¡œ‚¼ �ë„A}á/¯õLfsØ^Ú’‡¨Š3•ÍgŸ¸‰Ÿ"È+Z"„DÕ‹.ºÈ1•x)šñå—_ óg¼%Õ÷°à#ÑʆïöM䵌+VÙPü.’‚*Ÿ8qb01!ܘúaóU»]uA��Ë-,”KpòÏUøÚµ®è þy”Ù¸qã4A^^Êk®¹¦;­W¯^Î ^^Þ^x¡Û§È >ÚEÔÓÜ(òW!ÏŒžçý÷ßßM2ñÍKToݺµÑd Ù×_íÄ0­¿üòËî˜Öe^�oÔ¨‘±iþ·3ô;,È+ª„"M„­:A^íO�:ÕØtáSJº¾4òI�Qº…ò?m*‚ ƒêÑ$—VXÁ º6<¹™;w®vW_ÝÎȯ¸c\ä´¢6—ÆwM÷ŦÝ0·Ür‹ùᇪðSt M>Új«­ª+f‡cš5kf4¦kl ‚|˜ë€ @€ @€@© È—šp™ë/F�×ç±´ìر£‘çn±VNA~ç�w6³fÍ2Mš4I Ã×0mÚ4sÄG¸]™„¾pÙ|Ö²ü�wÞ1½{÷6óæÍsaÿ‡ föÝw_'Ôj"€RH _…î=üðÃ&’ê{Xð‰Š Ac1VâŠUW\q…¹öÚk]�ÙBćÃÚ×A>.·x ðÜ4hPð\Eñ*B‚Í™í"6È\!çÃòµI��{íŠü`ót»KÝtÓMÝÄy»†=]Ï8ã sÇw¸2Ñz½X–„ ¯6å -®z¯dJ¡±G“ÊaKƒ ŸÔ¥û‘¯ //gyUÿúë¯î=8p ›è"1Þ›&:)åƒ,:áÉ— /ãŽqásŠ]/d|®”wMÖ4‰I““^xá£Ô7Þ”GÿotèÐÁíÒßHÝãê¢ øsÃËM6ÙÄEýÑ>µãµO‘mlJ(­MâÓø¡IUÑÉ?®¿ @€ @€ K Ä9ꩾ̬(–²^Ñ)+¬gmÙ~ñíʨœõpN+·Ã;¸c6œlÚþB7î¾ûî -+<æ]ÍvÛmçηù†sžkÇmY'cù &e¬çqÆ2…ì´â¾«×Н޽ØÚÉ®*›³Þ³ÅAÛvb@Z3IõÝzjm,X° ­�|6âró¼÷Þ{36që­·}²mÆ2IíTýb¯+úÄ®¶n6ü|ЖõfÏÚ–õütåzôè”yî¹ç‚s­7x°ßŠžn¿øƒ}wÞygPöÇ ö'µRȵÛPЮOVKY¯×Œ]±^þA¿£Ïâ1Ç㎭·ÞzÏÕ»ãïãˆ#ª”3ÜF¹ŽÛÁ~;! Ø_ê+äíÚPÙ±šÓ`#i?£G�NÙÜè±ÎM¢��Záú¼á†ƪ.©1J�Ù *¯›o¾9gûvROPþª«®ÊXþ¥—^ ÊØ¼ôË„wÆãÂç»Î»ö?‚6ÂFJÿøÿ7ô.ÛÉ ÞÅ‹÷Ò¿çq–zÿ½ùûç<_&úÿ�¯‹% @€ @€ �b à!_쌆Zv~1òºy�Ë‹\öÐC™uÖYÇ­úëÙgŸ5‡rˆ;]y •:ëׯŸó6—�<Ð}8ìLuÈ;vüøñîP¶|æÊó­<ò2+&›®]»ºõb]}õÕÆ EA5òÜTÞlyï>ýôÓ�מ/ ÆÞPû’ê{!˜¾Oáe\îá<êòVû¨)Lÿ£�>êvW’‡¼B²ûçÇŠšÆNHˆ^ºË¯¼ð2…döÏg]÷�ïܹ³ G¯¥<Ñ£¦ÐÔÛl³MYBÖvØa.ú„úðÝwß…¢ž?¾ë’ÞKE­(µâ!¯~kl›Æ8…Ø.‡iºuë–íöC€ @€ @(œ@±Š>ç×.Åzȇ=mHõ”ýB<ëÚðÛ)†6ëqøôÓOO7›K»Ú²™zÏsy°åòx¶‚¶:è *}·!�Sv‚�+c¿xOÙ�¹™š,hŸ¼Ã½—�–bçMÄ6Gxpܦ¨â ›Tß ñÀôý /ãrW$yIëšµŒzpñÅ)]¯gSIòz7vÙe—àÚ¬¸FèÖ‡ ¿îºë‚ãuÝCÞ{¶®µÖZ)½WQ“·«¿çZ–ÒC>êÕj';ï›3SŸ}öY´{‰oâ!ö8÷¬r�§IvܦÏîѻロ³ê¤Æ(5¤qÃ_³�–³m;é#(ŽáOTTyúû:ãxÈÇã|I, Ÿëú»fS¸dE÷ùçŸ÷̦±ÈZ®vÝu× myäc€ @€ @€JIùÂç2ÔÊ3‹õ�×E)�ªržËTŸ<Δ[^ÞésçÎ5o¿ý¶óôU.XöÝy•¹Â~ÉÃMªòÀ”m¾ùææàƒ6-[¶tÛò,nÞ¼¹[Ïôëá‡6Ê7-“ç¨ÜmH~cÅfwúFmdäo' ¸¼éâ?gΜ êJò�×E)Š„Žô<Š…žO;1ÁŒ3Æ\ýõîÚ1AÑ"š6mê¶ëº‡|8ÒÄŽ;îh àÆ +Œšn¸!ˆà.Öþ*eù°‡¼oï’K.1#GŽt›Ê+­ÜÕ 4ð‡‹^>öØcÁX¢ÊÆŽlüñÁ˜¦¼Ôïä…µšö�ר}Úi§¹nÙI3ÎK½}ûöæoû›Û×®]»´ˆ$I�QžƒMá`¬ ëÆrjÜØã¦E‹î°Æz�ÛÞlŠcÓ$¸M½Cú›Ô«W/÷7AÏ–é�ž=oq<äóã|½Å. Ÿëú»&ýÿ`S¶˜.]º˜¶mÛEа)Ü;ª¨²aÆÞòÅrŽs¾"iøÿKf̘‘ö¬Ç9Ÿ2€ @€ @€ò!€ Ÿ­:P6 AÞzµ $}ôQpÅ ½.A&j¹y•·ÞÀN°ûý÷ߣ§›lá‡ÃÃÂû3…ËÖD‚#�<2•.ï×7Ø`3qâÄ@õû‹YÚœ¸i“¢áðÃáž%`*¤~Ô’è{!‚O´~;.w…–Ø~^|Z6nÜØüúë¯nW¥ òz'l.î ÍCøºýºÄØ‹/¾Ø…`öûêº ¯1b·Ýv î«®K×ù矺KÔ䥻xå•WÜv¹y…¼Þk¯½Ü¤u@iN?ýt×—$~) ‡&XÄ1MÖÑ;µšäu¯4QHbw&Sz¥Y[c”¯Ïæ7§œrŠßL[*„ÆÐ°It׸íM“ôãÚ+¾O�G�W=qÇ8ßf±ËBÆçºþ®ù�ûž�BÃëý ÿ?±ñÆ»ûݨQ#_¬äKù’#¦@€ @€ @ DA>£V% ØðЦI“&�½.ygKD”ɳՆ÷�1K–,q9Ñåå+±9j�:urbŽD¥ê<Üýyï½÷žóž>}ºQîmo£F�2Ûn»­ß̸ԗ÷×\s�yüñÇ]îa/ìËóõ®»îªrŽ ŽØåœ” áX×ë½@ÃÇ‹]WîYå®–0)¯¿°§~Êk^fC4;�ÎLíÛw ¿^ìW~^‰ S[¹öåÃ݆ÚvÌŸzê©@h‘w°¼`å!lCø»æ.»ì2'”æj»ÐãaÎÑIÕÕY 7 KòÆÖ3ê'ø¶äq,¯ùÍ6ÛÌïrK ›eO>ù¤Q9™ £láAÇlxk·oêÔ©F$>ê¹ò^öî`¿ ½v=_z—Â1ÔGÆÞ(Ÿ÷}÷Ý—õYôù˳�Sz”SZ–)š…¢.ø<âÙÞ§Ù³g›>}ú¸ñKýÒä!�IX&1=S½jWcž¢‹DMýž6mZ°»T÷7h Ê oî¼óN'†*úIøù�4i’‹z=­Ø1*\Ÿ¢­èo€&7(ª„ŸÐ¡±tܸq᢮oW^y¥+ïË©€¼é5ùBã«„]½�ФbS¤�Ÿi#Ÿ1.Óùùî[ßµóÎ;Ï�q>:M˜™Þ�uŠ&çÿˆð¹Å®+r�ÞM½wò�/ÅÿÅö‘ó!@€ @€ �Ê!€ _9÷²$W"qÃæ€u¢›Ä…^mµÕÌJ+­T’ö’¬T�BÒj€Dµ×^;ѰÕIö5ZW]í»„y‰lšÐ¡ôåY¢˹-O]‰•JM ‘p½õÖ3­Zµ*gÊÞ–„ÑO>ùÄýhŠѥ鞗x-j°¦Æ(EäÐ$Mù¤iß¾}°ÍJÝ$0{öl³ãŽ;ºÎ~øáfðàÁe½=c¯¾úªùøã�Ý»¬g¬C‡fÍ5×4[mµUY'�”õÂëpc¥ãê0–œ]¯éw-g (ðí·ßš™3gº3ëׯoºtébêÕ«W@Mœ@€ @€ @ ùxœêL©-·ÜÒ|óÍ7F^£3fÌÈØïG}Ô}ôÑîØa‡fÎ>ûìŒå Ùùõ×_›®]»f<5Ž ¯¾Œ7®ÊùµU�?çœsÌØ±c]'MšdÄ?—…¯qòäÉ&Ûĉ\õ$y<ܧp½Ip/· þùç›Q£F…/#XŸ6mšNƒ¬ÔIŸ|ò‰éÙ³§ë{ÒcXu@~ÿýws饗š{ï½×,X° cÑN�:¹1uë­·Îx¼¶ìÔ'ý�PÔŠSO=µ¬ÝÒ߉‘#Gº6wÙe—²Œ�¥ãÊ ¯Ì�ÕÔ»VÊËÔ˜ñôÓOMè=ÐÿL @€ @€ �R@�/Ùª·¦ùèeßsÏ=æä“Ov»ãòÑó·ß~{#/ô$„áhÝIl뚆ꪺâŠ+Ìž{ÚyjË^{í5Ó²e˜画@’ÜË)È/\¸ÐtïÞÝüñǦuëÖæàƒv5j䮳Î:x/—ûa*A{5%*ºˆÆ¢°)ƒDmÖ[Ç´ïöÛoÏ:9)|~M­y䑿ñÇ7M›65ï¾ûnY»ñþûï›>}ú¸6Ï:ë,£1±Ü–äWî¾—³½šz×Ju�šLsÒI'¥U� Ÿ†ƒ @€ @€ @ äKµ&«D�//}yÙÉÛN6pà@sì±ÇæìÀ®»îêÂå.¿üòæ­·ÞÊY¾& $)V•S�ùå—Íà�) Äé§Ÿ^øh³ÄjJ$ô‚¼&Ñè½WØüµÖZË¥ÑÄ¡!C†˜gŸ}Ö]ýÊ+¯ì&ÞøÉ %F’wõòµ{²WÞ7´D'ÔÔ»VŠËùþûï]d …¬‚|˜ë€ @€ @€@) È—‚j Ö‰ _^øÊQ¾ÝvÛ¹F<ð@sÁäìÀFmä¼i•s~êÔ©9Ë×D�º*È‹§¿}Ë-·]VyjJ$T®ø»îºËEÂÈ$´/Z´ÈôêÕË|ñźÂÂG=êkËÝ@�G��ó,ÖÔ»§où–Ñ­;ï¼Ól¸á†æ·ß~3}ô‘«A>_’”‡ @€ @€ò%€ Ÿ/±Z^>IA^bóƒ>h¦OŸn>üðCÓ¢E ³þúë;³nݺÅ"QS!ëå¹.OU}Ñ.o¸5ÖXì·ÞzNH[}õÕcõ=N¡?ÿüÓ1Qném·Ý6È]þ×_™Å‹»*êÕ«çBZkã§Ÿ~2âe o¯0÷Q+¦ïÏ<óŒyå•WŒÚ”·¾ú5~üxóÜsÏ™¯¾úÊ…Ç—q衇švíÚE›¶ äßxã óÐC9¯ —z•Z}èß¿¿«{øðá¦_¿~A;Å®|÷ÝwF»7…Âö¹�;z¯%B*2AÔŠå¦~Lž<Ù=o³fÍr÷[ÏÛ[lavß}÷hsæóÏ?7'NtûwÚi'3vìX6\ÏÆGaÚ´ic®¾újóÒK/™æÍ››½÷ÞÛôíÛ·J=Iì(ôÚõ|¿ðÂ Ž·Æ =_ 64;v4J aº}ûö»xÿý÷›>øÀåm>á„Ì믿î¼Éá@B™ØtÐAN8ËTA.‘PïߨQ£Œî‹LÏóæ›ož©ªÄ÷…s•ŸþùÁ³ŸxCyV¨qA÷Ú›î�î›ÂëuÔQ~w°Ô£UW]5د2F�1Â�ªgÁ‚NÕºþ–D'-tèÐ!ã81{öl3mÚ47ÆèyÓý]mµÕL§N�LçÎ�MïÞ½ÝØ§zsY!c\®:s_šß5EJÑ„)�}óçÏ7Ë-·œYi¥•ÜßÞ={º1#¿bŽûH-úÛxÇw˜Áƒ»1Hu"ÈC–s!@€ @€ �8äãPªCe’äåEvî¹çy|FM_hK4<í´ÓLƒ ¢‡Ó¶Ë-ÈK–6nܸ´~ø ‰…%&eªKžv"yäW­rÄû¼ÈšÈ ÁQ6sæL£�õ²“O>ÙHŒô–Dßå¡ë­·º*%šI”—H5 ž<ð@tw°�¯X5áÿ±wàRËÛ¯‹ˆ€(ŠbEEDÌ 0‹¯bÄ„"ê5]³˜õšQQ1˳(˜s1'³(bÀ„b¼ûÕ[ŸÝÿÞ9³{fwf÷œ…·ž‡3©§»ç73½Ë¾]U·ßnáº1A!4<V!ŽÂ²ä1Q¢Rƒ˜±/ji¸a"îãôéÓ£ÕÚ6Ħ /¼Ð„uWà…^0.n;\b¢„ªqãÆùÝxç†^�ÿr¯B*„µB†Üä¸ßîyËá¹|ì±Ç^æC† ‘Ã?\ ¢‡6ß|óÉUW]{ÍÅy<ƒG}´<øàƒVúyíµ×JË–-Ãê+¶ ò]tQÅ&R”zW\qEì Bõ`"O�=ò§£0>FLJ¼Êƒ�îÝ» Æ”Ð0�夓N wÕYǸ…IN˜ÄRŸ•:ÆÕW_’ãs㻆{~Øa‡ùÏÆ8NMš4Ldª”a’>'�VÂ0.m³Í6ä+œõ’ � � � � � � � � Ô!@A¾’ÚÞ‘… A ?”Ãw¥•V’o¾ùÆ<æ�×)DHˆÊŬڂügœ!7Ýt“u ‚à–[n)ÈåüÖ[o™7¯ëk–¡¤‘«ü‰'ž´7qâDkbèСæáìÚ;v¬y¤‡Býå—_.Ûn»­+"Yô=|à±QÂ&<–áIŠPÚo¿ý¶y”f%È£ äÓ†¹çeùå—7¡G.Žg-Èã™kg˜ñÚk¯Ù&®¿]»vî�-Î$¢V.7ÒHYÁ/]ˆ‰³fÍ’§žzÊÞìïÕ«—Üxã�X5 y0ƒ8„~‡7¼Ë!b¢ØöÛo/—\r‰­gù§Ük‡Ç9ÆD!X}õÕÍÞÖ˜$�÷Á‰¯Ã† ³1$ì³ä±^õxF‘�¹ÙÙ‰s¸~÷˜�Z!AÑ0.¡}DWˆú¨¿Z†w·0÷ÞW«íbíà]t\P“SàeŽç¯_¿~uNE4‰h�4c&xýùçŸÖÞ[×D…èÚµk^û�:uòcŠ;€(§Ÿ~ºM[wÝue¹å–³Hˆ€òä“Oš·?Ê¢.7Ã�·lhA¾”ñ¹–ß5D09çœsìàýFÄ|aìøøã�íA´ ¼ÓÎ0vœx≒ËåÜ®DK¤ƒÁ°¨aBÔÕW_mÑQF�-‹,²ù($n“ � � � � � � � � T–€þàI›ƒhˆìœ†g·*Xäâþ¹ãXžyæ™yW¯BINEE;_ÜΩ—nÞq s*@Úqésò8ïxtã¾ûîóýQá6z¸Þm×ÖŽ;îXoY—rè®KC çTÏ;G�÷}ÙgŸ}òŽ¥Ùø`­:�!§¼/3{ö윊vþøøñãý1·¢Bž?îÆ0õrá{§¢¿gèΫôÏœ»‡:Á ÒÍ¥ªÿ€°¾j ‹Dõd5F¡1�ä9iä‡Dí난N¾Éá3(jxW0¦;öIÞýRƸh{ånÏ�ï>»Ý}ѰñuÐ鄊œFPÉÛ�wÙ�SÊRS/äÕƒ M�‘Ó‰=VŸNŠòÇ5r‡oíÑH€H€H€H€H€H€H€H€H€H ’à�D›ƒ„‚|’²�˜å`Û�W]õTôe �³j òè‹ë{¡~A$se êea£F�òu¾ûî»V%& õÖ´¥ã|þùçû²?ÿü³o>«¾‡‚Ïšk®™SOmßF)+IÅ*\¯ã©yÎë4±V½Ã}™Zä“rƒpì&€à>‡÷Ó�ÀD Ǻ³P�Woy·;§ÞÂV²37‘$©pêÎKºÌꙉ¶§9ÈíZ4¿wÞD” y�È=5§)3<·x Îñ¨ ö®=ðÖ�õ9õÆ®s^%wüøã�~²&#D'3U²írê.U�ÏjŒB_Ëäë»ÆW_}Õ?3õM8B]IǸúÚ-åøÜø®­·Þzv_0F&}'55BN#Mä š—òO£}äÝL�êÛ·¯µ¯QHòÚ§ Ÿ‡Š$@$@$@$@$@$@$@$@$@&@A¾Â€«]½äá!/îßGá… '»~BTu"<Úáiý§¡†} kìN�]VS�wžÄè¿æŠ�í�æQö}×0DZeJÝ A^<7yòdk÷À‰XÎÃß±×¼ÖyÍdÕ÷PðÁµ–kIÅ* íyF½]Û.Ø—©A>)·PÖÔ îró–ÊÞOÊèÓ§�? òšNÁïwâU(Þß|óÍþy =ðýI)W²xf4üt“34Ü|NC£Û¿þýûûû±:´P��‹²�hnŠó Ù4È"A¸òðÜ�óÚÛÏz÷Å Üè¢f4vsýM:Ñ#«1 \Ò òðˆŸ2eJc¯{ÞÂÏšèçZܽH:ÆÅ�[î¾¹ñ]C”÷njøúÚ–zV‹ ´¶|Á9‰•à 9¹ÝóƒgÊ=WÑö6ß|sË�ŒçÏ',Ì!ÿøã�[®xìwe5 €çòÓ4 2ÿüó£hfVε£ñ_~ùÅža�ˆa¹È‹uHvYxá…}—C¹áñ®6mÚÔÊ î>ï¼Nv°¼ða�0‡|¸ëÈU®“¢»+º�±DÓQX t…½óm4eåȯˆìyÂsUŸe5F¡M×!Ûm·�5yòÉ'ËÀ�ëkÞŽO˜0Ár�#¸Nº(xòˆc,.fIǸbu”zln|×0>èD� ùÛñŽh$Ñ „‚¼ï²6M±`cˆFÏõ’—‹.º(¯ õ˜ goû&Mš$óÍ7_Þqn� � � � � � � � � �@–(ÈgI³Ô•F�ÿé§ŸDCfÛU@Ìn×®]½W„2¡°=¡š‚¼z›0ˆüÕ.ÚÛÖ¶²çž{Ú:)'Ç.a'¸�Ÿæ° ·+! ªž{î¹Æâ%XtÐA2}út�0qÆYV}ˆVê™èš(i™T¬ROTѼ¼V÷È‘#ýÄ„°1ôC½qmW-òI¹…B9'÷\…׎õÝvÛÍ?�"[´h‘'ÈCÕh vZïÞ½åÃ?”Ýwß]Î9çÛw÷ÝwËqÇgëo¾ù¦,°À¶žÕŸrž<Ïýúõ³I&®ÕÛ¶më…­¯¿þZ †Á^yå;æÊ:A¾yóæ¢žõn·_†‚<&·¨w¶?†•b‚<„µ{ï½W4�@Þ9•Ú¸ôÒKÿ`�;wMa! .¸`¥šË¬ÞRù¬Æ(\@9‚<ÆOME€¨>ž&¹,´ÐB&èj”Q¯y;_ý ÁJÒ1.8%õêÜø®á¾h¤Qïxùá‡ê0ìСƒM>êÑ£G�civ¸1¦U«V‚1cShäC\'        ¨4 ò•&\åúÓòøá"–+¬°‚Às7­US�ßrË-å£�>’–-[æ …á5Œ3FößÛ'ô…eKYßa‡DC�‹†%—iÓ¦Éo¼!¶ZvÝuWj1àÔSO5�|O9åÙo¿ý|Yõ=|¢"¨o,ÁJR±êâ‹/ ñn5òH衇¼ Z ‚|Rn?ü°÷ÜÖ0éþ¹ŠâE„ Ñmà Þ¤I“F+È'½vD~Ð<Ýv©k¬±†Ml�·kèézüñÇ‹¦(°2Ñz�X–… �6á ®x¯`Ë/¿¼M€Áä‡J¢P8OìöíÛÛõ.¾øâ•l2³ºKä³£p¥ ò˜Ø¯êÙ³gÛ{tì±ÇÚDˆñÎ0Ñiýõ×·ÍZä£ï„»ŽèrNy×0a “˜0YNÓàȬY³ü¥Î;ï¼ö}£cÇŽ¶Ÿ‘¸ÇÅ¢ ø“ƒ•ÕW_] `{Üg6¢b<ö!²�›Ü�I|?0©*:ùei$@$@$@$@$@$@$@$@$@$�š@…Câ³ú*p9äUX/ز í>¯j4×njÇ4œlÁóK9æõE~õRÍåùÕðÆõžªáÃýu©€[þöÛo÷eÔó8¶L9;UÜ·zU|Í�=ræêä«JCåÚ¶zû¶ub@^3Yõ=ÌQüÕW_åµQÊFRî!Ïx ¶‰ë¯¿Þ_w-ä�OÊMÃÏûëRoöØkÇNõü´r½zõòeÂòȇîLEO+‹<èÎ4 ¿o'š‹Ý•I³,ç™Ùb‹-¬O*€åÔë5¶yõò÷ýŽ2u9ä»té{.Þ—wZ½Ïë” sÈk” \#TøótB€ß_‰ŒÙÀÚS±87yòä’šÁ ‘4ü?�4QÕüÚ¥æ�ÏjŒ¤RsÈë¤_‡Ëùå—_öe4 ~l™pgÒ1.<'í:ßµÿOP#läðÝÀ}ßÀ»®“É<Þ_ýÕßK7$Yâýwæîo’ó\™è÷!W—$@$@$@$@$@$@$@$@$@$�–=äSOih\¤ñ�Ç•À{^ä°G}ÔB0ÛF™ž{î9ÙgŸ}ììÿûß‚|Ð¥ØÎ;ïlÞæð ƒz±<¯ð޽í¶Û¬úBùÌ‘çyäa*&K÷îÝm=íŸË.»LT(òÕÀsy³á½ûÌ3Ïx¯=WŒ�7 öeÕ÷¬<ä“ró¨ïµ×^‚öQC˜þ'žxÂvÏIòÉUVYEtBBôÒóB«#$³{>Ãò�)d}R¯ÝnݺY8z,#jM½ÁT%d=Ó\ÚEËÆtžç¨CÃÜÆñût�okï½÷®Ów iœSÑÌÊèï9 ™ëÏM»ïpw�X‚�3x;OZÓtueÊyóÍ7ÍÓ¹`5l³y•Yá˜?ðpƒ‡*<0ak­µ–ôïß_Ú´icÛð,nݺµ­Çýyì±Çù¦að…özë­gžç8ç;Óżc‘§†¼îðÈ_rÉ%­ÏÇsŒ¨8gǰ~衇ÚzœȨùo]¿±­Â­|ðÁX�dôèѶîþdÕ÷r<0]Âe)Ü5$¿¨Øl§¯ºêª/x�€`yÓÁÿ³Ï>óUÏIò¸(D‘pÏžG°Àó©äæ›o–«®ºÊ®^Ôˆ1ÿüóÛv­{ȇ‘&6Ûl38p �*ŒÊÕW_í#ØÅ꟨ç}–9äCy×ÞùçŸ/Æ ³Mä•Fîê¦M›ºÃe/U@´wYCn[ðÔvQâ*Åø„ç!ÎÚCc÷qÇg]ÓIB楾Ì2ËH³fÍlßÒK/�‘$«1ʱОˆ"¢¡ÆECŒË /l‡1ÖcÜv¦) DÓ$Ø&Þ!|&õîÝÛ>ðl©H/xöœ%ñ�/eŒsõ¦]–3>×ú»|Д-¢©¤]»v‚šbÀÞQD…€ <Ø{˧åœä|DÒpßK&Mš”÷¬'9ŸeH€H€H€H€H€H€H€H€H€H äK¡Ue³äÕ«Ý’?üÐ_1D2Q«O�Gyõ6Áî�?þˆž.…‡à áþ¸pÙ˜Hpà�úPÙay·ÞµkW9r¤GÝþ4Ktáä€h8ü0Ü3L„Ô�Z}/Gð‰öÃm'厰À[ÂçÅÕ�e‹-döìÙ¶kNäñNh.nŸæ!¼n·ŽPàç�wž…`vûj]�DZí¶ÛúûŠëÂuþõ×_v‰˜œ€úªmW[�GÈëwÜÑ&… H›0hÐ ëKš?ãÇ�—�vÚ)qÅ„á†äq¯0Qbwœ!½Ò,„–ÅåêÓârôÑG»Í¼%&9` ¢;ÆmgøLÂ?Ö!ð]jŒbÜÝùX&ãÂsÒ¬—3>×ú»æBî;n �÷3ü>±Új«ÙýnÞ¼¹+Vñ%ùŠ#f$@$@$@$@$@$@$@$@$@ òŒ9aІ‡––-[z1*z]ðΆˆƒg«†÷�‘ßÿÝr¢ÃË×yƒ†…4d³‰9•Šy¸»sÞ~ûmó~÷Ýw¹·�Ýpà ²ÑF¹ÍØ%~¼¿üò˹¶‘{Ø ûð|½çž{êœCÃ[Îùð „Ǹ^çO»ŽÜ³È] a^¢�¡Ÿðš‡iˆfóètÇÂeÚ¾Cøub?òóºHaI×Kᮡ¶�ùرc½ÐÒ¤I�,""hkvÈ�!&”&íC©åBÎÑIÅêJà ¼±ñŒº‰®-xÃk~Í5×t»l ab ìé§Ÿ”ƒieA„ÓðÖ¶ïÞ{ïDt€øˆçÊyÙÛÁ þ”{íx¾ð.…1ÐG c/Èçýàƒ|]þòBãÞ䔆ÅE³@Ô—G¼Ðûôé§ŸÊvÛmgãú…ÉC3Òø#òFRCD ©[ý3fŒ?V©ûëˆYÑÐñr×]w™Šè'áó;jÔ(‹z=-íÖ‡h+ø @ôD•p:0–Ž1",j}»ä’K¬¼+‡ð¦Çä Œ¯vñ>ãVZÊžWîúÜø®�qÆ6ƹè4!;¼ÿë1#É÷ˆðÜ´ëˆÜƒï#xïà!_‰ïiûÈóI€H€H€H€H€H€H€H€H€æäçœ{Y‘+�¸¡9`Mtƒxƒ0ÂíÛ·—Å[¬"íeY)„¤Åˆ„Ë/¿|&a«³ìc¡ºjµïæ!²aBÒT[d)ijûá© ±© véÒEYd‘j4Ý`m@ýä“Oì& @�›îyƒ�o 7Ô…ˆ˜‚‰gˆÂ€±“æt«õwmúôé–¢÷ “ãð=¢cÇŽ6ypN¿w¼>           Ïg€H€H€H€H€H€H€H€H€H€H€H€H€H€H€*@€‚| ²J                Ïg€H€H€H€H€H€H€H€H€H€H€H€H€H€H€*@ö‘ŒA@IDAT€‚| ²J                Ïg€H€H€H€H€H€H€H€H€H€H€H€H€H€H€*@€‚| ²J                Ïg€H€H€H€H€H€H€H€H€H€H€H€H€H€H€*@€‚| ²J                Ïg€H€H€H€H€H€H€H€H€H€H€H€H€H€H€*@€‚| ²J                Ïg€H€H€H€H€H€H€H€H€H€H€H€H€H€H€*@€‚| ²J                Ïg sS¦L‰­s‰%–�yç�7ö˜ÛùÃ?È�?þè6ý²E‹²è¢‹úm®dK ’Üs¹œüüóÏÖaÜÇyæ™'ÛΩíÿûŸüòË/¾D«V­ü:Wj›À¬Y³ìæ›o¾zǕھRö> •ã²è_c®ƒïZc¾;ì � � � � � � � � �@-  _ w©„>Ž?^~ýõW¨Ö^{íØ3!L¼ûî»v¬]»v²ôÒKÇ–+gçŒ3¤gÏž±§Þxã�Ò«W¯ØcnçI'�$#GŽt›~¹ÆkÈÝwßí·ËÊgŸ}&Ó¦M³î¬¶ÚjÒ²eËz»† S§Nµrݺu“Æ W’ûK/½${î¹§]ï\ ;ï¼s½ŒÒøë¯¿äæ›o–Ûo¿]>ÿüsùý÷ß}uO?ý´,³Ì2~›+µIàÓO?•Í6ÛÌ:¿ß~ûÉ)§œRÕ ùöÛoc-úñõ×_ËŸþ):t�e—]V6Ø`iÚ´iUûÃÆê'PÉ1®þÖk·DC¿k• 7sæLyÿý÷­ê&MšÈºë®+ÿøÇ?*Ñë$         #@A~{ÖYg�X¯ÑI“&Å^ÝO¶Ya )z衲ÄKXÈ|¤œX`�döìÙòâ‹/Ê}÷Ý'?ü°]}ëÖ­Ïc³fÍ*L£¼ê)È7îÉ^åÝÕìÏjÈw-ë«ùþûï-²BÖ‡FA>¤Áu         �J  _ ª X'ùêÂGŽò�7ÞØÝc�=äì³Ï®·«®ºªÌš5K�sþÞ{ï­·|C¨UA<]øíë®»Np´9�@c s¹œìºë®òúë¯tôxߣQ�§ Ÿä¹l¬ïZ’¾GË`‚Ö]wÝ%«¬²ŠüöÛoòá‡Z òQRÜ&        Èšù¬‰6p}Y ò›yäy÷Ýwåƒ>�…^XV^yeó0ëÙ³g¢+m¨�õð\î¹ç,G2¼á–]vYéÒ¥‹…”ïСC¢¾')ô×_“?þøC6Úh#Ÿ»üÿûŸüúë¯VÂW#O3ì§Ÿ~2!ëo�0÷QKÓ÷gŸ}V^}õUA›ðÖG¿n»í6yþùçåË/¿´ðø#öÝw_Yz饣Mûírù7ÞxC}ôQóúGøn<‹È�> ï6ì‚ .��wÞÙ·“vå»ï¾ïÎ ÛåFHì轆‰ÈQKË ý¸ãŽ;ìyûè£�ì~ãy[{íµåŸÿüg´9™:uªŒ9Òö#ú-·ÜbaÃ1Icÿý÷—%—\R.»ì2yùå—žÖ;í´“ôíÛ·N=Yì(÷Úñ|Ã+¼1VàùšwÞye…V¤@uäS�³‡zHÞ{ï=ËÛüïÿÛl¤q€G9„2°Û{ï½M8‹;¿>‘ïß 7Ü ¸/0<Ïk­µV\U™ï»ð åꫯ¶z³~ÞÓtãîµ3ÜÜ·yæ™Gþõ¯¹Ý~‰ FK-µ”ßWÊ£.½ôR PÏW_}eÂ(ÖñY‚”$¡uìØ1vœøôÓOe̘16ÆàyÃýmß¾½¬¸âŠ‚h}úô±±/¬«Ðz9c\¡º’ß5DJÁ„)Œ}3f̰È‹-¶˜}n¾ùæ6f$åXN9©Ÿ�wÞy§œrÊ)6¡. òåå9$@$@$@$@$@$@$@$@$@¥  _ ­(›• /²ÿüç?òË/¿Ô¹jü  Ñð¸ãŽ“¦M›Ö9 !ø¬³Î’#F„Ýðë/ ‘ baV†ºài!òñÇ·j!.º¼È˜Èà ¬B…e-Pb¢Dÿ¤1b_ÔÒpÃDÜÇéÓ§G«µmˆMi!¬;{á…Œ‹Û—˜(¡jܸq~7Þ¹áÇWÄã¿Ük‡� a­�!79î·{ÞÃrx.{ì1iÞ¼¹ 2D?üp�ˆÚ|óÍ'W]uUì5äñ }ôÑòàƒZuè'ò¹#×{5 ©+î¹çkª1Ei¸âŠ+b'b‚‰<=zôÈ;œfŒÂøò*6ºwï.SBÖ“N:)ÜUgã&9…ïZ�Bï(uŒ+TO)ûçÆw ÷ü°ÃóŸ�q¼š4i"˜ÈT)Ã$|N|öÙg6ÑãÒ6ÛlCA¾RÀY/ � � � � � � � � �@äë ©íYòt!ÀðC90xéBLDJ‚§žzÊÞìïÕ«—Üxã�X5 y0ƒ8„~‡7¼Ë!b¢ØöÛo/—\r‰­gù§Ük‡Ç9ÆD!X}õÕÍÞÖ˜$�÷Á‰¯Ã† ³1$ì³ä±^õxF7Ûl3‹à€ÈNœÃõC¸Ç„„Ð òˆÆ€q íà ºBÔGý•6\ï“O>iíc½U«VöþÅ=o•îK\ýxÇäx™ãùëׯ_�SM"E#Í… ^þù§µƒ÷ÖõQ!ºvíš×~§N�ü˜â ŠÄé§Ÿn“ÀÖ]w]Yn¹å,’" €;¼ýa¨ËMÆpçÆ-Z�/e|®åw “RÎ9ç»mÚ´±ˆ!ø,ÂØññÇ >mï´3¼?'žx¢ D)†ô˜5µÑQF�-‹,²ù($n“ � � � � � � � � T–€þàI›ƒhˆìœ†g·*Xäâþ¹ãXžyæ™yW¯BINEE;_ÜΩ—nÞq s*@Úqés*‚ä�nheßn£‡ëÝvmí¸ãŽõ–Uq)‡>áº4rNÅñ¼s4Œ´ïË>ûì“w,ÍÆàÁƒ}½ßÿ½U¥!áý>ôG'&Øþ[o½ÕïWÏußlV}×è¾~´«áás"Ø·ƒLs: o_t£î»ì²‹oS=ƒóªR1ÔC4TpÞñ¬7P?ÚÁ? §ž¸úr¹©ÈèÛ;þøãs*$ù6§M›–SÑÏ×( þ˜¦ðûñ\ÂpŸ\ßubMNÅeÛ¯Þ㶃 6°í¬ÿ”{íê­œÓ &9õl¯Ó% µŸSQÕú­9Õë?øàƒýµê†œ ð¾ÌìÙ³sæß?~¼?æVTÈóÇݦ¢^.|ïTô÷ ÝyY.5ý„½GšZ §“rr/ÝýÓ )9�ô“es™×uÀX5…E¢º³£Ð˜N ò¬4òC¢öuAN'ßäð5¼+Óÿ$ï~)c\´½r·çÆw ŸÝî¾hØø:ètBEN#¨äíÇ»ìÎ)e©©òêÁ†¦ÆÈéÄ«O'Eùã¹Ã·�öh$@$@$@$@$@$@$@$@$@$PIð@¢ÍABA>ÉÙNÌr°íÎ‹Š«®Œz*ú2HŠY5yôÅõ½P¿Ô ×—�¨—…�5Ê×ùî»ïZ•˜€¾¨·¦-çóÏ?ß—ýùçŸ}óYõ=|Ö\sÍœzjû6JYI*VázsÍs^§ ˆµêîËÔ‚ Ÿ”„c7÷9¼Ÿ&b8>Ö�…‚¼zË»Ý9õ¶ò–�¹‰$I…Sw^ÒeVÏL´=ÍAn×¢ù½ó&* \(ÈkDŽè©9M™á¹=ðÀuŽGy°wí�·†¬Ï©7v�ó²Ü¡á¯}Ý=ÆRCäç&L˜�eS©«TA>«1 SŽ _„W_}Õß�ú&¡®¤c\}í–r|n|×Ö[o=»/#“¾“š!§ÑcrÍKù§Ñ>òn&HõíÛ×Ú×($yíS�ÏCÅ          � `ÈúÊ ¨zí.d=B<#Ç{œ©Ç˜¨Èe‡jüÔSOõÅÔ£Z�†Û'5„ãVO4Û�pöI]Ȫ²þˆ#Žð¡Š]ˆøh¿®¼òJ¹è¢‹l÷ÿû_A~ï´†Pã»í¶›Uƒ\Õ׎pȸÈ�}饗Zx|„É?òÈ#�ýK,‘B?«¾‡áÇžýÐC-ëò’†s~衇ìÑrÈ«�\§=äGØpXÖ!ë£�©�+ƒ ²Ý#FŒäObåp æï°Ã±ù¹‘s[~ùå—_òBi‡!ëñŽ Ô=lýõ×·\ôÛm·�=7ØçBuãyBH~„ÏÒʹöhûÂúýí·ßú0ÓÈy�ðó°7ß|SX`Z²)ö>4ŒA‹`'Ÿ|² 80VÓ?ü :ùÄ׊ÐÙ×\s�à=o¬†�ôH‡¦Ú(Ö׬Æ(´¡ÑAÏ8,îþÚ�"úáöqî†Ðõ.…Jôs-®ª¤c\ܹåî›ß5¼ŸîÝ<å”SD#R[TÃn¾ùfAªØwÜ!:aÑÖñ‡9ä= ®� � � � � � � � � T�ù*@®fN�GÎäI“&Å6�ܽÈ{‹ .Wmì‰1;‘ëù{ Y5yõÐ om‚åûï¿û£?r CX‚� ]K¡ýȇŒœÆ0äXnݺµ ï`ƒœß~[š5kf¹ÛÕ‹W4 € ÅŒ�eÕ÷Pð¹é¦›dà 7tM”´L*Va2†zý[ݘŒ€<àQƒr 'ØîZä“rCNn7Ï”{®¢×áâ=ž <Ÿ°P�üñÇ-W<ö»²±×�Ÿ¦a0e³²rŸL2À3¬á¦M-Öra.u'ÈC4ǻڴiÓ¼Ó‘[“}`Y‘>´p2D¸ëàú÷ïÝ]ÑmL¼ÐT¢áëMäFcK-µ”åIoÙ²eEÛ.·òRù¬Æ(ô·\A^#ˆFŒ°<àáˆ(äÇX\Ì’ŽqÅê(õØÜø®a|ÐÈò·ãó• �còJ%&Ï`ÂÆ�ž!ê%ï'⹎P�w$¸$        ¨ òÕ \Å6ÒòšY4d¶õlíÚµ«·ç( ËѪ)Èkh\ñƒ?¼ÖãLsØÊž{îi‡ H9¡8®l)ûÀ ü9âDˆªçž{®1…x ˜¯NógœeÕ÷Pð=z´hm×DIˤb•†â·H ¨|äÈ‘~bBØú¡á±mW-òI¹…B9'÷\…׎uDOpÏ#„È-Zä òðR^n¹åì´Þ½{›<¼¼Ï9çÛ‡È .ÚEÔÓÜ ¤üSÎ3ƒç¹_¿~6ÉÄ5Q½mÛ¶‚É@°¯¿þÚÄ0¬¿òÊ+v ë0'È7oÞ\4íÁÿßü yD•@¤‰ÐŠ òhÿÞ{ïM'žRµuD¥xôÑG­=Dkp“ŸªÖ�„ •*Èg5F¡{åò?5��À€z0Ée¡…2AWÓ˔)S°»Îøj;#’Žq‘ÓRmÎ�ïî &Q\wÝu‚HQCt L>êÑ£GôPªm7Æ´jÕÊ&p`l �‚|Hƒë$@$@$@$@$@$@$@$@$@•&@A¾Ò„«\A?œCÄÂr…Vxj ò[n¹¥|ôÑG�TÍQÛõ1cÆÈþûïoÇℾؓìDÈò·ÞzËBXO›6ÍÂþQÔ7–`%©XuñÅËW\a5 †µ¯A>)·‡~Ø{nŸtÒIþ¹ŠâE„<�˜äop„œ=ä“ ŸôÚùAótÛ¥®±Æ6±Þ®¡§ëñÇ/wÞy§•‰ÖëIJ,y´ ohpÅ{CÚŒ=˜üPmCdÍmÍn´ÑF69§Ú}HÒ^©‚|VcúVª /gxUÏž=ÛÞ£c�=Ö&º@Œw†‰NHù‹NxreÂeÒ1.<'íz9ãóœò®aÂ&1arÒ‹/¾(H}ã ©qð}£cÇŽ¶ Ÿ‘¸ÇÅ¢ ¸sÃåꫯnQ°ÏÝ_¬GÅxìCdM …UÁ$>Œ˜T�ücø‡H€H€H€H€H€H€H€H€H€Ò¨pŽzV_e*ŠåÔ+:§ÂzÁ–õ‡o+ƒrêáœWnÓM7µcN6o¹÷ÝwŸoK…Ç’«Ùxã�í|Í7\ï¹>Ü·¥NlùÛo¿Ý—QÏãØ2åìTqßêUñÕØƒ­N°ª4g½S�bß¶N Èk&«¾«§¶o㫯¾Êk£”�¤ÜCž<ð@l×_½ï“ ´±e²Ú‰úÁÿTôI\m9Ü4ü¼oK½Ù ¶¥žŸV®W¯^¾ÌóÏ?ïÏUop¿_EOÛ¯¿ßw×]wù²?þø£ßŸÕJ9×®¡ ­O*€åÔë5¶+êåïû}>ø`;Ö¥K—Øsñî¸ûx饗Ö)fî¸F¹ðÇ5B…߯üþj®|÷Ýw¾¸Ÿ… c€FÒðÿn¼ñÆœæF/T<óýµÂú¹Ê*«$ª;«1 �éÏhøðáõ¶¯“z|ù¡C‡Æ–ùå—}ÍK[&Ü™tŒ ÏI»ÎwíÿÔ9|7pß7ð.ëd�÷×_õ÷Ò½çI–xÿ�¹û›äsäùFy˜ŠÉÒ½{w[Oû¹£U(òÕÀsy³á½ûÌ3Ïx¯=WŒ�7 öeÕ÷r<0]ŸÂeRîaõ½öÚKÂ>jÙýÄOØî9ÉC!ÙÝ󣢦脄è¥[îxä…‡!$³{>kÝC¾[·nŽKx¢G ¡©7Ø`ƒª„¬0`€EŸ@T „¢ž1c†u ïeŸ>}¢Ý«è6Þ{¤«€!•ÂçÇú�±!4Œq±] ÃxŒ(ˆÜðÞ{ïÙ²X»Y�Qh‘Làq،ŠáÎ] ¬Ãû9ja´Ž$òIǸh;i¶ËŸçäwmܸqELUœ�œaxubŠàþ”ê!� ˆÌÃç;ƃB¦ÅdæÌ™vϾc ÚGÏž= �Âý$@$@$@$@$@$@$@$@$@$P>�´Š>Ïo\ÒzȇžˆR=§?ˆ¼@ ¿�Ó0´�ãÀäÉ“½§›æÒ.Z6î ó<‡[}Ï:�À·µ÷Þ{×黆4Îé+£?¼ç4dn\“eíƒw¸ó²ÃìœÁƒXs„ûãš Ž'lV}/ÇÓõ3\&åŽHð’Æ5cõàþâ‹/r¸^ÇfNò�Ç»±ÕV[ùkSq)Dhë§�vš?~å•Wúãµî!ï<[;uê”Ã{5x»º{Že%=ä£^­:ÙÁ¿o*fæ>ÿüóh÷ÊÞÖÜõ9Íy_ð|x¸«�è¯]sc,zœ;Võ�§++〦Ïðýœ8qb½5d5F¡!ŒîšuX½më¤_>ŒáNüòË/sðôwu&ñ�O:ƹ6²X–3>×ú»¦)\ ¢›:uª¿gšÆ¢`¹JØzë­}Ûðȧ‘ � � � � � � � � �@% ‡&m"�V� õ.ô?Tkôœz|š€±éÓO?µP³Øñã�7Þ(JOsÁæÂ¾!VA¼† ‰ßÿ}ÑóCâ.õº·s£"RT Uo|ãþøã�ÄRÍçì¯Kóžm·Ôƒafp ÅWÔÕ»woß6–¨eÕ÷rŸh_°] ÷!C†økÛ~ûís˜¨æé <' òàôÈ#�økÇ„„Ñ£Gç4ÏuN=´s^x¡?�R낼æYö×Aõ¥—^²I&Ø †:aÔ-«)Èã¾ <Ø÷¡oß¾öø ‡Q‘2«1ÊÙpà �%&+a\å•W¬]´qÃÞo¹å›ä�ÐçO?ýtN½šýýû$‚|)cœësÚe9ãs­¿k¸_øÜÇó†É1øN žé6vâ=rcĨQ£Òâ-éüð{IôY/©"&         �²¾üà�òÌ´!ëqQêÕ.š‹U>üðC�½®Ï“ßv+š‡Ý¼ºí¸¥Š�2pà@Q‘¶ÎáBá‡Ã‚{î¹§¨àî²õ¸pÙ(wà�úPÙuNÒ]»v•‘#GÊüóÏw¸¬}* –;‹†ÃÃ=o¶Ùf‚�úQË¢ïå„DŽöÃm'厰ÀýúõË{^\X¶hÑBT¤¶]sRÈz\Þ ÍÅíÓ<ØEFþ $øyç�g!˜Ý¡ZY�1bÛm·õ÷×…ëT±Í.±uëÖ–îâÕW_µm[¥mÛ¶¶Ž?ê +�=ö˜4oÞ\ÔãÜïw+š#^4O½mª'³¨(éÙR=ÕÅ¥CÖ»By½ãŽ;ŠN”±]H›0hÐ w¸ìåˆ#|xüb•`¼Ä=׉K‹5tÈzÜ+�ð `gH¯€4 ¡e1F¹ú4‡¸}ôÑn3o‰TCCSÏx·Ý>0Æ?�(`»ߥÆH²'%ã\›i—åŒÏµþ®¹�ûŽBÃãý ¿O µî7ƃjR[ UlÒ¤IEÓáT«Ol‡H€H€H€H€H€H€H€H€H`Î%@A~»·PÔUZ¶léŨè%ª¯‰ˆØ¡\½ £Eä÷ß·œè7ß|³@lŽšzš˜Q â[}a좋.2ñ ¹·�Ýpà ¢žën3v‰ï/¿üryê©§,÷°öÕ#Yî¹çž:ç@À€ˆ‡|Ì¡A€pŒëmÖ¬Yx(“uäžEîj“hB´3ôóØc�µMõ(ˆKq–¶ï�Ø�ü¼mÚ´‰k&ѾR¸k¨mc®Ã^hiÒ¤‰ôêÕKú÷ï/ÂßÚTozJu ŒB!ç褈bÕ¥áaiذaöŒº‰®­e–YÆžû5×\Óí²%„Mˆ�0õ𔃩צh„;¦Þ´¶9È�9æñ\e9‘ ”{íx¾ð.E'îh{A>ï|°à³èò—§ð §4 ×~衇ںûóÙgŸù<â…Þ'�æ!Ûm·��_n1ycFÃ8vÍ5ר¡Bù©Õó[Ž; :qm¢ßcÆŒñ‡ÐÇJÜ_ß@ÌŠ†Žõ\61tÊ”)y,ÔcY0Á+jiǨ°¾7ß|Sð QODÓ]ø K1ù!4¼[—\r‰•w?p¼U«V6¦`|…°‹÷q¯½öMež»^Ê[A‰;çÆwíŒ3ΰ1N½ãëÐÂû�qt’|�¨SAŠ}úô±ï#xï ÈWâ;AŠîñT         �9Œù9ì†f}974|°‰no–\rIiß¾½,¶ØbY7•y}xà‡  —_~yiÚ´iæíT¢ÂZí;„yˆl˜Ð±ÖZkU]d©Ä½HZ'+Þÿ}+në®»®q¬ïÙºzç�wÊZk­U•nã=‡1ö¡‡2�´* §l"ë< ×\s�MbpÕ½ôÒK‚1®>»é¦›äì³Ï¶ÉѲóÌ3�Üÿý²òÊ+çÚsÏ=õ2Œ'œp‚ôîÝ»PÛ_NÛ믿¾¥(Zqpc×?ÿùÏ`Oüê€ä™gžñ!\Ï7ß|~»ØÊo¼a9ð¾Á:è 4hPÁSð¹²Ï>ûÈ{ï½—W)Ð�SN9%o?6ð.üñuöÚ�‰£G�ö‡uâàƒ.8™÷z§�v²~C¤§‘ � � � � � � � � � �@–(ÈgI³‘Ôuâ‰'ʨQ£|oŠžñð t^Œ8xÄGØ?_0²òÎ;ïÈvÛmg{!80RbÎߤ _›÷¸Vù-·ÜR>úè#�!ŒWË~øáóŠÆdžZð’ÿí·ßä®»î² CS§N­ƒ©>ABþþóŸ:\pA™5k–üïÿ³:ã&El±ÅòñÇû61¾Â3ÿ÷ß÷û ._{íµ²é¦›ú}n%MÛ¥ ò÷ÝwŸEDqmÇ-1¡áÈ#�Ì;”T�ÇóÒ§OŸ¼ÉÅù/¿üR0¡Q[`àÔ¢E A¤g{챇œuÖYyú¥ òo¼±\ýõ®J›drøá‡ûmL`Dî¹ç+öÞ{o òF¥ðŸéÓ§ B+Ã!`ÞyçµuþiÜ^}õUóz†—ôrË-׸;ûwï^yåÙ}÷Ým«!&À@H}â‰'L }ùå—M°l¬ààù�É2Κ7on¢8„qX}‚üÝwß-Çwœ•mÖ¬™œzꩲÙf›ÙÄ%ˆÌÁ~ë­·Ê!‡"+¬°‚•s=ôP+‡òݺu3N#ÿâ‹/ ð‡~ØŠ"ü:î)ê-MÛHeð믿†Õå­#íÀ¾ûîkûÐïÇ<ïxtãûï¿—Í7ß\²>´¤‚üW\!_|qxjQy0ÇõÃ0¹à¢‹.’Å[ÌB×ï¿ÿþòã�?Ú±›o¾ÙBÿÛ†þ�pŽtÅ ©EÆŽkE�j$ŒþòÜsÏÙg®éÚµk'ðŠÿä“Od̘12|øpùꫯì\xâÿë_ÿ*Ö�‘ � � � � � � � � � �@I(È—„«ñF¨`xŽÂn¹å=âz  bÌ’K.wØöÑC¾  �Ì uÔQ"Þ»”Û¶m›yÅ*„x‹°Þ0LäÙk¯½ŠoÐc_‘’¹ÂÑOˆ¹ð€†(«O�‡X‹œéËŽÐñÈ™ž…!lû®»î*¯¿þºUç¡^©¶Ñ R•À»vÒI'Û(ðÇ}^¬²Ê*‚¨üaIyˆÙÛl³�EèÛ·¯Ü{ï½vn!yxÁƒ3–x¶{ì±¼üöç�wžE@%ˆÌr饗Z}Iþ`EÏž=mbÁ /,˜PRÊä)„´w¢ÞõIÚg          (F€‚|1:5xÌ…S†W&DçŸôR ‚@Ü€ÁcЉû;ÖXc�¼j:vì(;ï¼sÞ>·OÍ;î¸Ãú€ÜKÜ¥Kó2/”ÓÞûðJ…!ÿ2¼^N^¦‹V[m5  Á$ÎÒž�:Òâ ÂÀ8Ãõ^wÝuvaª—_~yyä‘GLÂ}€G&Ä(D/€gf!ƒ÷+B&�7ÎB—£xæï¶Ûn–ù‹/¾xÞ:OêBõ”»^¨è÷»ï¾+|ð� fÈ¡ ÏR<q†ÐêÈ qóßÿþ·‰‘O?ý´¿o¸ïˆÆÑ¯˜!5Ú?~¼åGøè­¶ÚÊØAØ„Á+9걌ýðŒ�æ¤Æþ•VZI =/8žUß!ÄÂ3}ÇýþöÛo¥sçÎÒµkW Ñ]è¹Aœ­³Î:vÞŠ+®hb¥Û_ß^ÅxfáÕ�çï.*íÛ··kïÕ«—Ì?ÿüõUcÞÉxÇq-��¼ìIì›o¾ñï-ÊcÌ�y%Ã~#%Æ'ä"G˜yÞÏ$‚üóÏ?/ýû÷·s0~]pÁ¶žÕŸ /¼P®¾új«u‡cd¥ÛƸ Qc &%à9(d8Žðñ¸_ �ÜíîªO�Ç3‚Ðò›7Úh#éׯŸŸÌQH�Çg‰Ë-�{…IÎ0vã³Ë¥TÁX‚ºÝ½uå -}ôQ{æpÏÄé§Ÿ^¨hì~¼3x_a«áQO#          �¬P�ÏŠd#©Â)<a!¦–b;‘ã8‰uïÞÝÄãhY«fî=ÎÐGˆV–C{íµ×LxÆ>Îg£9~qì°ÃxG'¤=uC�.$àBd^f™eP¬ŽA¼†x ƒ§.ˆ³QëÑ£‡‰§q¢ûì3;ï¼Ý“ ò˜lu '˜:"+ Ú€‹®PH�wÞøèÔ°aÃL€wtéÜ6–Ѱõá±è:Dx'¢?øàƒ6&Z¦Øö”)SlbÊ Áý÷ß_¬8�‘ � � � � � � � � � �@I(È—„«ñ†8÷ä“OZGûôécÂ7ÄФAÖåa†ç+rJÃà�oßÐ:uê$ wÉŒ3LІàƒ¸á~Ö¬YòÔSO ê„A`¾ñÆmÝý u·»8”~jR;íù¨žîgœqVÍà)êÂ8'äݹ«®ºªÀË׌ÉNlFîkÜ›¨ALƒ¨ƒèQ áËq?áù쬂üõ×_/gŸ}¶5�6á­ ïr×wp�a¢&C„æDm샀Žç žìmÚ´1‘ b3 “= ÜGE^iÔœ!¼ê!òá™ ­� Ûm· òÆ;CdXRAeËé;!BžALž)Åð~ã]EýXÇ3ðÌ3ÏäÝóJµ�~†‚7¢¸ q×à¼øá�>zôhYd‘E òðÌc²DxLÒ ÓäñY°^xÁ§K3—³Ÿxž`ÈM¿Ã;Øz±?S§NµÏL¸�{[Šá3 유�èxh$@$@$@$@$@$@$@$@$@$@$� =K›ƒ¨g_nÙe—õÿTTʩȞS19§9ãKºÒ·ß~Û×3|øðDç¢-×þñÇŸSaÊŸ7mÚ´œŠ•þ¸ –þVTPõÇPÎW‘Å—QoàœŠÄVFýœNðDz8?¯²¿74„¿ïÓäÉ“ãŠØ>�}9ô]EÕ¼¾« ï�k®â:õ¨(è�kŽéœzËû2*€åTóÇUxõDzXAý*„Yý:‰ §áòóªUÁ*·ñÆÛqð×(yÇU”ó}ÓÉ9àýq�@‘Óþ¸F ðÇÜŠz„ûã*¬»Ý¶ÔüÞþ¸jhí¼ã…6TH¶óÔ;¼PÛŸ¶ï矾ïŸzéçp½¡©—²?®9½ÃCyëW^y¥/§BxÞ±B¦ßŸ£!Ãc‹á¹ÒI±Çâv†×“ô<õ†÷ýpï¾zìÇU_Ñ}~Ý÷C'HlK'¾X9<Ó!w×w,ñühØóœNz(X®Q#ät‚MNEèÞW‡¦šÈÝ}÷ÝuÎͪíhÅè‹N˜²ö5ÅENC°G‹ømõ‚Ïéä+«“¢ü~Œ;®ÿš:Ãï�®è¤+·Þzëå4š†Ö‰6þ\ïs §ãÆ/T¢Q|;˜dä,‰ .àƒÉ ÎÜs� Ašâ$‡gα<÷Üs]±‚K¼_®^¼_3gÎ,XÖÀÄ×F¸¼è¢‹üW–K          È‚CÖgk qU„ÆC®‚glÇÖ]w]ËkݶmÛØãØ‰pÎê1hÇO>ùdËå]°°@îz„Y‡!Ô0BG a¶×\sMËSŽøÈ÷ë, 9�üÆÈ95õ –ýöÛÏv#Ì0Â#;K{¾«'\"¼¼ жK…òD9äwÜqGË¥Öƒu—çxþùç÷a™]p?„4Çu l|hà†øXf²> •�4Ý5¤pa¥®9 �…!ë’ºC‡î�-ÃÜÖÑç÷!Õa*ˆŠF°õð�NŠüƒ Y–Ç:Ò)èYRÈúRû†ÚGˆ~÷\Fû¢^þ>õÃC=$+¯¼r´ˆh4Ñɶ!·z»>CØï½÷ÞÛŠ!Þ÷víÚÕwZÑã*ìÊ©§žjeÔÓYvÙe—¢åqP'ÎøëÃ6RàýŸgžy°Y5KšC~•UV±ñC_ÕËݵ»Žâ¾â^ ;ïÊ©€ìSO |;B¦;Ã»Š°ñK,±„ÛeˬÚΫT7�šÁ…zGZ„Ý�3äe×(&vyàÕ›Þ«/‡¼zÃ[|�t":±@t’Ž?7IÈzwínüÓ _¢“Œ³N"�,&áø®QDEyßFÜ Æä�Ú¡BŸÑópýw�V×ä¬yóærì±Ç|�]9.I€H€H€H€H€H€H€H€H€H€H dY¨ú¬£ñÐÒ9„ýÖ¼¸>,¹ó T1¯hÇKõ�WAÓ{F½¨Ã†à!Ž>¬¾úêáî<ùóÎ;/ï˜ÛÐ|î¾ Ýn[†ò土WÙßåxÈ2$®ªœ õ ÜЖßE@ÈäB¶Áصgí!¯$úhl™p'¢#¨ ž;à€üyh'%¤mëÄ)ß&ÒC2x «(neá%µú<ä�7;Â݇i)POy7~á]C*Â^'}øôxn÷B¡ïÃ~#̽+ïýR é:n½õÖÜZk­åë Ãø—ZË“ � � � � � � � � � �@†¬�£2‡îƒ±¡}�ˆQLü+U�5j”¯"G! s†»Ä( ê…òC@q}‡øZÚóúÜz9‚|¡ðáN�‡ „SwMqùå]YõµrY òH àÚ† »ÑFÕûo�=öp]²¥ä‘& ÎBA+íÛ·OrZ£(“4d=Bœ#Ô9ì¾ûî³TÑ Ó ”:Bª'5ðßvÛm­¸NÒ�n¸ÁŸšuÛšë]zôèaiš5k&:ÁJZ·níÛ W6ÙdѼ÷¶+.U‰Nv²4(°È"‹Ø¸ŒkǸuÿý÷ËQGeç¶lÙRv>4„~×h¶k¾ùæ“\ÐÆ9õZ”‡é*Ñ(¶îþDǼGšËÝ#U>+ ™Nvöí0Æ[Œ»i éOtÂŒUqï½÷Êj«­–¦:žK$@$@$@$@$@$@$@$@$@$@ÿG ˜ZÏcs&î¼âgœQð"Kõ�‡‡³ónDîB¦’•ëÕ«W^‘ÐÃý”SNÉ;æ6Þzë-ßFÔ3íù®�p �nwM*†‡‡òÖub�/WÈ£¶�‡<*rᜠy¿#¬½ 7]¨L^‡JØP¡ßúÏÐrÌyÞ–ãež$=¢%¸{И<äU¤ôýÒÜÜå óçL�:Õ×…péi i*N?ýt_"2 BóÖxGkÍ’zÈwÜqžÍ‹/¾{™ˆdàž¹è8{B°3Œx±å–[Gr¹¬Û¾çž{|?1¾³�7ÞØ—u×VßQ `:q¡äsQwøÜé$­¼:ÀQ[BÛo¿ý|™—^z)<”·Žñ0¼žÐË>¯` a´�\V™,J$@$@$@$@$@$@$@$@$@$@Å ÐCþÿæ&Ì5kð‚VÕ®WsðÊ 'œ{í*rˆŠ&vìˆ#Žü+f_ýµhè`+¢â±Àë7jŸ|ò‰hrÛ ÏÎÛn»Í =Ü ykkc9ûì³í‹^±ÎÒžïê —Õð�G{ðDUÊš†§óÊ+¯vCt²�ôë×Ïö-µÔRòüóÏçO³�Hðd…!rBçÎ�Kª.�‡|x]ð¢6lX�¶C6�ÉCQœ¯¦�«®ºªNßKÙ�è_|ñ…,½ôÒ2vìØRN�-rûˆw²˜isó¶F™hô‰bç!Ê…†ÍÏ+òÜsÏyÏè¼ÜHê!¯áèE…qëI¡h: D44»•Ñ0þ²Ûn»%îù믿.šÝÊÃËÞÖβný¸Ót$¢“œ\Su–·ß~»èd�:ûÝŒ­3gδMŒõóÎ;¯¬±ÆÒ³gO‹èQ,zÆ{ï½gp²¦oxã#¼â›6mju†Ÿ;8¦“kAœýñÇÖ¼íáaoxÛÇÆJ<ß0ô\ÓÚÞ{ï-ˆŒ üm�H€H€H€H€H€H€H€H€H€H€H 5�âz=�Öä,9rdNÅ�Ø®ÿùçŸ9v½b¡œÖ8YCûr*ÚÆÖî„×¢ËsïH Ÿ¶õ0ß±†'Î;z¸ãü—_~9ï8úÞ»woëS§N�rŸ~úiÞñ´ççUö÷Fµ<ä5L½g �s %ﻃu uí�gí!FL€‡*îc!C$€Ÿ~`Ys>@IDATú)ïpyÜSçéŠÕÈå¢.ÀÃÛyò6&yôÝ=ïè#úZÈfÏž�Cĉb†¨î:£ÏvÜy*žÍzcÃk¾>»ãŽ;|ûð¼NjaÔ ×ÿè3’´®4åT õýÿòË/ V…q­k×®VV'AÔñÒŸI\Ïo¼áëÒ E9MËà·£+8WSø~D½ëÓ´m ^áŽ·ŠæycF´l’íb9äë;?Iy|&! úŒw=Êñºë®ó×S(BŠë¢H¸k×I]nwÁ¥¦(°Ï³BtB’gt2XnÖ¬Y…Šr? � � � � � � � � � � ”L€ò©§44® �“Þ°íÚµ3ïqxŪxm�„#¼x‘g¶ð òDGóÛÁ¿ÿÀãRÃi›·#òôÂkçÁZµj%K.¹äß%ÿÿÖÈQC.cä^o½õ,DZ†õö^Ä -´�À‹6l;ôpÇùhçâ‹/6Í3fˆ†Á÷9~·Ùf¹âŠ+PÌ[Úóõíò|}X>|¸Ï oþe–YÆGÞqÇBO�—4¬Ôò8¹ÜÁÒ0Dp^¶ðþt¹�q,kyÔzS¯³Î:v ÈkÕ)S¦È›o¾iÑ Àý�Wª³4ò¨C'�ˆ†³¶êX`ËU½âŠ+ ¢) G´Š»®©ØòÛç¯vuÒ‚­‚£¦ep»m‰üÙÎk7mßáÅ»ûî»[½-Z´°¾#—<îúõñÇ[Ô�pa9©áÅ\ÈÂÜã~Üçì.T^L¹üòË¥oß¾æ©�¨È×­B§åêÆ1�\aï("*À+¹˜¹gï&<� y'GëÐI²ýöÛçíV‘ÞÆ‡¼�o<ùä“òùçŸûZo¹å¿}Øa‡ù\êMš4‘þýûË<óÌãËâ…‡6 ݈¶~š–Â"p`\„Á;|Ĉ¶Ž?X‡Wýª«®j׬1¤}ûö¢.ãëµ×^+~ø¡•‡‡9ÆâhĉrÛö�ø{žûh†çøØc�ýûHy Œ©¸žÅ¤÷åCïwäb4hv×±³Î:Ë�§*¨KDyê©§DÓ,Ø8ˆ“4D¾1®S�?»ŒÁˆ²�Ï¢b†1í·ß~³÷dÝu×µ(ø|š>}º½Ÿ£F��LaU”¢X›h݈ Y!R=º£Ý,¸}ÓM7 ÂÃÃÒ ò¨i ~ã:Š&·äq.Þ <IÂÖC�Ç$•К5kfB¥Û‡{ˆ‰+˜$PÌ0c|�’ ê¡\¬xÞ±†ä÷Ùg›Ô“×™ï¼óŽ`„3„fר6ÑÄí‹.!òB´u'ÈGËF·ÁcÜ®»î=daáËi;¬c#Dib^=Àó& …e“®WC�G8z|>¸ôq}+”FÀ•Åç„}Ø;ì`“¶Ü±BKòß~ûm¡Ã~?ÆYŒ%áD1�+$@$@$@$@$@$@$@$@$@$@$P& òe‚k¬§Á“"1<áUgÈ Ì1ǘGhÜñè>Ô íðúuÂcÔ{Ô�¹À!RÂs44x˜Ãk>Ì쎇‚:¼š!ô!ÿ²kåºuë&–ßDiwž[¦=Ú´iõNPpma¹öÚk‹†ù¶]²5œ¾­ÃÛyÙ£æ&K@X…ï°<~Ï=÷\e¿ùæY|ñÅ :CFxs?üðÃæ��þE bÿ¦›nj»ñܹ Ñr˜áQ ox5;/dDa€ˆýwœÝùðÆu#ܾbË[o½Õ¢6 LV}Ç;}�Nb€×:¢ âA}>BOc¼C[l±EÁKÁóŽÉˆxïߨ�&ÓË+îÎÁ3‡hô1vÀë;©AìÆ¤ g£á!_iQÏá3Ï<ãš-¸Dp_¢ßxÆá­ŽÉCÑq 4Ü|�qÏ÷5×\c‚rÜÄt“=�£ÑI Y9m‡u�;Ö&N`Äfxx§µ>}ú'ð‚‡<ž…¤†h˜Ð«Ï[Ï*ÞY¹Ú]h°ö ÃV�Üä v¡7ŒÈð†è olD´¨¤¹\ämÚ´x^×—�»’}aÝ$@$@$@$@$@$@$@$@$@$@$@$0§  ?§ÝѾž´‚zÚóÝ#�7¼¯‘'Þî¥x\—Ã^Þ?ýô“ ñN#           ÈŽùìX²¦”Ò êiÏOÙýÔ§#Ï1þ!t2²#ü5B,O˜0Á–h`·Ývx4Ïi¶ÜrËÙ%A€^i¥•,G=Bˆ#—5 áëá%¿ôÒKÛ6ÿ� � � � � � � � � � � � �@-  _ wi.écZA=íù �ùª«®’!C†Äv"ý!‡"‡v˜Ï­[°FwÂãáq�þ‚ .�UVY%î0÷‘ � � � � � � � � � � � �@£%@A¾ÑÞš¹¯cÍþØc�Ù…÷èÑC:uêT„´ç—ÔX… #Tù¸qãdÚ´i2sæLYh¡…dùå——nݺI‡*ÔjÃWûë¯¿ÊøñãÍ#þ›o¾‘ßÿ]:vìhÏÀÚk¯=GNBhxêì � � � � � � � � � � � �@¥ P�¯4aÖO$@$@$@$@$@$@$@$@$@$@$@$@$@$0W  ?WÞv^4 � � � � � � � � � � � � � �@¥ P�¯4aÖO$@$@$@$@$@$@$@$@$@$@$@$@$@$0W  ?WÞv^4 � � � � � � � � � � � � � �@¥ P�¯4aÖO$@$@$@$@$@$@$@$@$@$@$@$@$@$0W  ?WÞv^4 � � � � � � � � � � � � � �@¥ P�¯4aÖO$@$@$@ýõ—Œ;V>ÿüsùöÛoeÖ¬Y²ß~ûÉÒK/)ÉM          �b.»ì2û�µmÛ¶²øâ‹ËZk­%íÚµ+vJU�Q�¯*n6F$@µA —ËÉÏ?ÿl�mÑ¢…Ì3Ï<µÑqö’j€À;ï¼#p€|ùå—y½½í¶Û¤G�yû¢ß}÷�ßµð ûu®Ì=ª9>ÿúë¯2{ölƒ‹Ï‚æÍ›Ï= ðJç$î¥>¯ãðÁ› ›nlïúóçŸÚ÷nŒ¹´d7”nÖ¬™ýKvf핪å1²–û^{O {L$@… üðÃòã�?Ö)€ï‹.ºh�ýÜA$@ I Ôÿ³m´ÑF2eÊßehGy¤zè¡~_C®P�oHúl;�Î�; < ûöí+^xa¢sXˆH �—^zIöÜsO«ä‚ .��wÞ9]…EÎÆ�õ|ð�ýù�üCVZi%iÒ¤I‘3þïÎ…‡ñ[o½%o¿ý¶`{‰%–�5ÖXCV_}uA}QÃx2iÒ$+?cÆ óNnÓ¦�,³Ì2v^ÇŽ£§Än—Úö„ ¼°[ad'8$\qýnE‡¤}ûö‘Ú oΜ9SÞÿ}+îë®»n,·°†É“'˸qãä믿¶ûµæškJëÖ­Ã"yëY\;¼ÈÇ�/Ÿ~ú©µ‹¬q­Ë.»¬l°ÁÒ´iÓ¼6óÆn»í&¯½öšuÏÝ:ë¬c÷zï½÷.zï¾ÿþ{kgàQŒ»+ט–üLO7ª9>ŸqÆrÓM7Y§÷Ýw_9í´ÓÒ_@jøå—_ã>æŸ~›½âŠ+&þl©B‹6Ѹgõ®–ò¼Öê÷á‡ÊĉK|Ž®ºêªöoÉ%—,zŸÓ~Áùø,ùøã�eêÔ©òûï¿ ¾Ã,·Ür6¹+édJ¼/xWp øN…ïD¨§W¯^‰¿‡àBËù>QPfñ®]yå•rÉ%—XoŸ~úiûnRn×ûõë'¯¾úªyp<÷ÜsåVSç¥å†ç~ðàÁ6Öã;¢³í·ßÞß·/n™ÕWw¥öÕê Yô=í3S©ûR õÖâóž–kšßÊù\Ìêÿª�å7†´Ÿéåœ_Êo à�ß�’Z«V­¤[·nuŠgõ]ªNÅEvdÕw4QîwГN:IFŽY§—øíî»ï®³¿¾ 9>ƒ§stÀdxÃ&±Rß5Ô™ö»{دRÆ™,Ÿ™°X¯öo‰¥þ?}Nù-±Üw÷>Íï •ãê{f*ñ¼–ú¶ÿþ÷¿öÿc|®¼ð ¦à7ã'Ÿ|Ò~û�¾ÕÞ¦ _mâl¯d�:u²'é®Kn€'x׆ fÛ[mµ•¬½öÚþXc_©å¾7F¶¥ü€^nÿñÅà��k®¹Æþ#áêAÛI¾DãK÷�h?"»sÃeïÞ½åꫯwɳÏ>+|pAa?^ï´ÓN2hÐ ûA:ïä`£œ¶×_}™>}zPKñÕ¡C‡Ê?ÿùÏâ…ôèo¼!»ì²‹�“(|ÐAYÿë=ñï �gžyÆÇd…ùæ›Ïo‡+xÏöÙgyï½÷ÂÝ&ࣞSN9%o¿ÛH{혂ç¢�AÔ>á„÷¼±&tíÚUþøãMüñÄ(àY„PKÎpïZh!·YËr>Óñ£žKÌØ?æ˜cjâ:+ÙÉjŒÏ®ÿÿùÏäæ›o¶M¼û§Ÿ~º;Ôh—˜@pöÙgÛ&a'1Y ÇVXa…pw£\o ÜËyWã`–ò¼ÖÚ‡”Î;ï<1bDÜ¥KÿþýmKÜ$Ã4ßGðù�IÊøõÕW_Ŷ� (§žzªàó·˜z_p¾Ýÿý²òÊ+«Â+åû„?©�W²x×ßÙ`äñ�¤\sö–Zj)yþùçË­¦¢çeõ®4Üð=|óÍ7¼ƒQÃwgw?¢ÇÂí¬Æ¸°ÎJ¯×ÚòÈ¢ïiž™°/sãz->ïåÞ§´¿1”ó¹˜ÕÿUÓo i?ÓK9¿œßî¼óN9þøã?&˜Ä?zôh_>ËïR¾Ò„+iûŽfÒ|ÅùøŽ÷ýµ\A¾!ÆgL"Åo‰ø­÷†‰�çž{®­ûSλ–æ»{´/¥Ž3Y<3Ñ>`»š¿%¢½B×]ìÿéµþ[bšw5ÍgK¥Æ¸$ÏL%ž×4ÿgÄ¡‹.º�  2DvÜqG[oÈ?ä’>ÛND`núÏC" ,„0ÊÛm·�µpòÉ'ËÀ�+ØZ¶U×rß³%‘Mm¥ü€^j‹¿ýö›Üu×]6ù]QCÛõ ò˜‘1>ü!zÞy絕ÎS_Ün¹å–¼êzè!9üðÃý>üH¾À Bv…ÑóöÛo�õº.·íR¿HÞwß}æaö+ºŽ/Y}úôÉ›ÐPŠ �ó¶'´B‚<þÓ‚/„ðP‡!úÒðÇÐ=öØCÎ:ë¬:öi¯}‹-¶0@×Ï–-[ZDx:C®½öZÙtÓMÝ®F¹üì³Ïd“M6±¾�'x%µ,~ÌLÚV¥Ê•ó™Žwý©§ž2OgxpÎíVÉñ9Ê6Í|¢uUc3¡á1é “‹ðÃ,&ÂÀàù‹Ï….]º¸"�rÙ¸—ó®ÆÁ,åy­µ1‚»Mñ}^å±?ùä?!dë­·–Ë/¿¼Nt†4ßGð�?˜††vñ™«ÿs¥ávæ™gÊ�7Þh�Ζ[niXñþÁ0Îã‡Ýú,«1®¾v²<^kcdxíYô=Í3öen\¯Åç½Ôû”ö7†4Ÿ‹Yü_µ1ýÆ�ö3½”óËý�¡TÁgã�7–믿Þ?VY|—ò••¸’¶ïh.Íwиîâ÷ üNQ ‚<œCàxóÈ#�øïÛîš’òå¾ki¾»»þ•;Îdñ̸>¸e5KD›åþ?½ÖKLó®¦ùl©Ä—ô™©Äóšæÿlo¾ù¦EÝÆsŸÆ¶ž‚<î­Q@Ø>|hA CFZådõKåzX¸æZî{á«j¸#¥ü€^j/ᵂTœ!'1Ä'˜Ô'ÈãGbˆ®˜ ëÙ³§wÜqæu QáqðŸ@üçîÄOtÍØá?ñ1xÕl¸á†Ôýx>fÌ>|¸ù1ãú_ÿúWÞùiÚFˆ"ä½)dø¡jß}÷µÃðà„çt}vÅWÈÅ_œW,© �Бà€pr¡äÁØ…/×bÌ0\l±Å,týþûïïs�Á›!äCK{íøÂ„W7Ûl3 5‡IÈkýâ‹/ &.<üðÃÖ·¿òÊ+�:w(X8O~\W)ßYü˜Þ—†X/ç3�‚|þ�ªäøœß’˜`W+òȆÛ~ã:>g Ô`¬ÀÄüÇqÑ­G¯·±l§ùgV×Pλ×v)Ïk-�q˜$„± †Ï'üÈ´Ê*«Ø6Bi㘛Ào|ç-Í÷÷ „Gx á³b ¾áÇT¤–páÎñÿ'xmã»Vhø<Çç: 9·á)…zp-ø±?VBÌ?ä�Cê�*Qê÷‰° ½žÅ»†èG“'O¶KAt1܇rmnäÓpÃЗ_~ÙÆz„2Ej’R-«1®ÔvÓ”¯¥12z�Yô=Í3íÏܶ]‹Ï{©÷(ío i>Óþ_µ1ýÆ�ö3½ÔóËý�ß…ÜïA…ž¤“;v¬†‡$&I:Ëâ»”««ÔeÚ¾§ý×ß´‚|µÆg¼+ø­ ÿßs†É¤?þø£mÖ'ȧy×Ò|ww}-wœIû̸öÃe5KLóÿôZþ-1í»šæ³¥c\Òg¦Ïkšÿ³á³¿ÁðÛ5Rv4¸é F# # ù#sÊÉþ©0YSTj¹ï�´ �þYPá"Ó.ª€luk¯Üù矟S=§žÂ¾=Ò‹¶÷Øc�ù²*˜çÔKºhùRjèv_·þÈ]çÔJ¶­|Ûêé]§íèýÁ?§ù휣�>ÚŸûÿØ;pÛ‰êo�ô (]ê�&Uà^�¢ ¤H¥ "E‘*ŠR‘*Ò‘®4‘^üTº A¤÷*EÁ¿û[ï芳³“ì$“ÝÎ]ëyÎIv2õ—)kf•Ó2$‹_G¼b´Dh•Ä¥�Žèâu %nÖ}9c¾%Bü¶0â,‰/ÚÞ•ùQµîaš²¨jm¶ÙfIþ¢ý¾º{9ë.)«lT*¸ëÍU67+ÅÕÀ;í´“¯·»Fµ �–»—ãsº â¢>is²J¿ªßô'íb‘ÜV6Ù¤i-¸à‚É{ÆÏa¦Q½ŽUÚë(�q;ì°CÒž®¼òÊDH˜¼¯3/ñ#bØ/>-Q6éÈ—ÌÙ¢—ä/®;ÂÉÑTþý"‹,ÒE¶Ž÷UTá'ª¤Û�°ÃÖ×¶Øb ÿ]Dñ±Õ¯•Ç0¬¹V[m5�“¸§¯U‡Q�4JcdãQ.{º.ö{8ˆÝchr^ *³V¦=†Ø9½Jü^î1°G$J¸~®XvÙe;öŒšà¥ÂïÜä}·²÷‚a•ÇJ\97Y•ÆÓc=_NÖ|ì‰ÒiKŽ’gb�S˜g/ûZï®…êÕ8Ó­Íhþzíç^"yör�>Ì{‰½è«ú »Í-M�q±mFË͵j{%NÌšMB’1â°Ã#¹�“YÈ\%¢w@.<ð€€›i¦™ü€XDbQšEh.Ÿ~úéþ¨²yéÓ@«É¹çžÛ‰0ÆÉæ¸×HÏJƒgœ)AÞ÷ÝwŸ×\É3ɉ�5#„FÖ9žh0¦Ï'&¼l%-üNSSe—^é­-);uÆÚV„^Þú÷ÂÓO?}:ëFcItÙe—9\y¿ð Þ�6V¨K-µ”·f¥,yT§ìÇw\rÞî¿q%ÑFÒî0q(LO^öQÏÑhÄ�,9Ï<óŒ/Ó¬³Îêæ™gÿÝW]uÕ뇦ÊNÛ¹øâ‹ý÷þË_þâ]~âÎ+—¢3¼ÑnÄú k]úÄ¥—^ê-v±ÖçüHðCC“¾—&¬·±<‚°–År «n¬{q·Æ÷¦~ì¿Z\éøú»Î7׸\é«×\s�úD&E·üòËû¾Šuí:òÈ#ýî]t‘·Bçx yµXÄÍ;–¢œý®ãn–…<ã¾ûîëÓç[á*T‰¶Œ+%=*Ñ”K¿­†+ºV©{V:œ¥‹Û2¨¨½¾üòËI¿#,õGëtŠ)¦àg_(´�çø„ô‘E…`¬ ]ÓËœ!_gœÀCƒº‡çûˆMfÑÎ?ÿ|÷ì³Ïúw"HpóÎ;o[¸:s:V<œÑ¦„{8xúFÚkaè œ·Û+R~ŠoÇ^{w/™ñÌ�EuçM+v|ÖrWá5o½Æh"‹�²í¨ æÔ´÷ Í'öJ‡O€ _Ó†f™e–$YYx%ü-ËŒ“IäÜTÁ½)~¢N_ ¡‰m¯¤UwŒ#n¿ÇwÖ1ð€X—Ã÷1>¥‰c xǼH›„_,KÝø‘né„gƒâ!By:âáf÷‰cóf]ªÊOÔͧWñªô5-üNúH$}�Ôm­ŸÏÜÉZó¡‡òàX_c�ǃ»îºËÏiz‚¦­×:s:q™Káõh�_úÒ—Ûl³MâéAóãÚÄš+7-»– wõ™„ˆO}êSúØ_ñTÁ¾CšbǸº¸S¼€�!iˆ`ȯñhqÁ ¾‚c¨øËOH'fŒìçœLYÓT§ìuÛLSó"u¨ÃKi{­Ó×7¼ªq|ÚÝwßíØŸ`_>Šq‚s°áwà?·Új+�Òv­ÛÞ›(;©ƒ[[jüˆÙchr^Ì*z·µê°ì1ÄÎéUã÷r��=.ÖùûN"ÌÉú4…ÏŠx©Âˆ‘/»•½ä­aõwžÕíž{î™™§-2óÓ‡M”]à-ÙˆÈÌŸr‹p´% ͲÑ+x c‘›7ù‹;ÊÜ<ë–=´Óo“wæ&7ÿ˜¸·–\rɺË&FGM”]»­•VZ)7o,3ÅíVGÞ<&ÆÇCóV„•™iÐf²,ñd& /îRZK/½tò;Ä_Ü‚·Ð|Ë¢ºß\Ó’M Ì¾*Š2-¸&åÉ뫚Nײòr6jR®, öØ²ÈæA’~ÚꦗyÓõ»Ó溑l8øðŒ«"h…š¾Ý,ä±€§]’ì�¸oKòϲ�WMwâ\ýõmÅÃK�–]¯¢ÈЦèGÕºg¥%nß“2ÈÑYAü3QøIÂiYß|óÍÜð½x!B«¤ ý°�¯;Nˆ·…å$8a©—5Šâ]R—M6Ù$“¯¨3§cݬߧ̕9¤ÄØ+›þ­Å[,·<"Àh‰2[Gö1s ‰ÅŽÏuùÀtEb4‘C�p¾£ÓÉ7ö[6¦“o´þúë·¥ ß–æ°¨fª‚{üXÔ髊al{Õtb,(û9¾Ã³Ã+Ñ®±ÔÍ#ÙNÚ%óU¨ˆ)“Ž(Ú%y‹Âh[”C=4yãU¦?ÑV�!øQ¥¯iqåX€¿ô%®ë5Xæ•ùbã�7ÎŒÏúÞ“4ó,äëÎéF7}ÚÌ[rÔ�_W¦ËϼŸÅG¥ÇÐt¼ðwÞz17-{˜OÞý{쑉}̃;…�×Ôòxà�-QÂN~ës½ŠBdfùy3FösNΪ@�²×m3MÍ‹uy)m¯uú؉‚Y ¾ZÛDxÁb²G—7N�FÝö[vò®‹q›¦²{ MÍ‹yå/Z«ËCìœ^'~/÷Dñ0éCxv©CE¼T�ôÊÆ)*{¯xPÝ*k!_w|.‹A•p¢È˜|ë" ù^ö5ÊÛ�wïå8SÔfÒXö{/±—ëô~î%¦qìö»W}5Ì·hn ÃåÝ—ãbÚLVÞUګƯ³fÓ¸"�/5Fhø~\ÍB^Õ%ÆÐ•ó‘e ÷5šl²É¼å"ÖåXŽ`µŽv2„f¼0êþ^ÿaIŸÖ(A©·ÈÓøX†AœÍ‰wHX“¢}¨„…/ÚöhÿsvFHyVŒhŠ£1®„Õ0´ÑF9^èãŽklÙÑðÃÊ�j g´±r�AÞ[¬òMdΚβzæ}]Â3\gBb™�u8ßKº-gar½}:�˜²£e$…O’o,Â6�…¶(u´eÅù”h"6IX`�¯íR–þ7«œ3ƒ•ßV6Wü_˜wlÙesÅ ãé-ÒI Ð &8aÔ|{M*,1Ò„µZÀJX>¡�‡U}«Dˆó8Å}QÛ™’Ô ÷�°¨'Ú Ö©œ{ a�ŒÅMH1ßœt(�~K'd³Í[Ć–©„Í뫼kŠÊZÈc!À™Àg¼Ë‚ÁÝpà o¬t©cÖUÏ“¤=`®VñhT‡ç{÷2oòUï'Ÿ|rRÇ,|i—ŒUœË#›&þ XÚ ÷P7ËOբĂ Úëzë­Wh!O[¡Í@¿üå/ÝœsÎéïÁ^-–é?jQ͹ö²áìÃtûW¥îé´˜�(ó÷Œ×”3o|¦|Ì%!á•£›5[>öþ¤“NrGu”O†6¬ø•I·ªuQì8Á|Œ÷ˆ~GÛTÂ2GŸþ¼6æE,jð*‘¦:s:c�ÎE¤ÇœË¸ÈX…Ö{š8«9m™ŸSç·(·¸SN9%‰Êüļˆ6| }Mx´ÝC ýع%v|Žá“Êþ÷&FyÇwôgWkš" HÚ“>kê*BE'›×>9,øvãó}_+üwã<–¡ÃJUp�å'ƒ:}•¸±íUóçZuŒ ãös|eÏkÐÿ‹Ús“>}1å(ï,,sÞ}7~$/^øœñ�7kˆpŒÔr�7Î[ð˱Þ+ –ÒŒç¢ìç-xÕò(L7¼¯ÃO„ñ‡á¾J_ÓòÒN9äýéqÆ{ ĸB›È#Æ#¼RA„c­ÌZ^OeJÌ)i ùØ9}·Ývs¢Àé³àœ{¬w±ÜaÝ ï Ÿ áÁŽpÌuJ±k.Ò‰Á ËWå1I ¯d¬‹áaY{…Äz*m5Ïûºc\,îäÍÚ’=ï:xÎÀÂ~š}Ùøó툾_´ˆ#û9'ûЦþÕ){Ý6ÓļÃKÅô5`Ãs ^g Æ<\Â3NÀ+e�ú®n{�-{ nZö&¯e÷ššÓe/³V–=†Ø9½Nü^í1` É>ŸòkÊ‹¥¿O·ßE¼T·¸ußw+»Ö©i´ª…|Ýñ¹..EñÊZÈ÷²¯•áÝ{5Îtk3!vƒØKìå:½Ÿ{‰!Žeî{ÕWÉ»ÌÜR¦ŒeƸØ6“.G•öÆ­³fÓøðÜxЂŠÖî¾/×~Hý-�þ! ¥Å¹ÌhÑbq,S[æ2I$–‘hÀ£ÁRheNhpÉ ’ ­á¶ß~ûä¹Þè¹wÄ•E€>ö׳Ï>;ÑHá}Y«[,ú _ÅB¾NÙ±*%œÇœ>—ñG?úQò‹æ¦ MDÍ?ËÚ­ò3Ï<33Û¦Ê>ˆ3e“0©wžEç�fa‚Q§ì2 'y‹`¬%“Z’¤w[”&ïѼK“ZÈóݰp—Í•$(°tÖo*.ñ“wÜ„šû„!ÿ°¯É1‰uª(tx¤ˆýæ"°HÊ–¶œ�aò޲•í«m¬ø£¬öºl&eA™· RŒÃ+˜e}³°X"Œna‰Ë8Zˆ“窧-§›Ì;,ù¨GqE˜ie†FÞc€ga,ü«²òâª4±êÃòW)¬?ÚíiÅW6&ýk®ê]B¢~Ì×0Œ—e¨jÝ Ï7…0ïQ$ô¬�õ–#Q˜m?-(ó ‚e®âD¬JœÄÜ͵ÅŽ¤¯í�2‹‹^Ÿ%Ú¾a=Ь¹Òe,;§‡ñt,íçòx6Q XÚ™(†Eò÷"€i‰bUK”ÚÞÅÎ-1ãs,ØVù!Š?¾½Ñ港Bý´Æãûh¿ Ï“�aÿœñA„9-Qzó¿s‡™ªàËOäáP¶¯Æ´×¬¼«Œqaü~�ï"Hõm‰õTÈ?†e çN, ò¨*?’—Ž>‡oÖþ W}œ\uü–ÍêÖ‰'ž˜„Õ8\ùþX"ˆ°8‰ÞÔå'Â4†á¾J_Ë+/^¼»" yQâJÂÑ6Â1õ¹çžKÖ褕eù;§«å+é3ÊÆtR%Ö½j�Ï{q§Ÿ¼KßÔYs¥ÓàwYܲâ‚ådï¡.•ãbq§|ð¯”Wÿäx¬{#!±v„7g®*¢ºcd?çä¼ò×-»¦W¶ÍÄ΋±¼TL_ ÇoÖgr|¢Vß[΋RvÒŽ²Æ‰$pê¦l{�){,n©"7ò³ìCó"®³V†=†Ø9½nü�Ojr�AŒ’~ÂZ …}1‹—ª“f™8eÊÞ$ªe‚'dŽb_º•Ÿë¤Ý-Ž(a%ß»ÈB¾É¾V‡wojœIãQ¦ÍhÝÛéç^b¯ÖéýÞKT «\›ê«uæ–nå,;ÆÅ´™¬2Ti¯aüØ5{íʇËqQaÒ¹G×h !º™N Ù´šl¨k#<öØcõ±¿†yÑÞne ft?Í”àÞVÓÅ_‰vo¦¬�¯ìâ!¦ì/½ôR‹…1åg‘#gûu„XŠø0¸‰fÑÜ$©`‹Mbò*KM–½© –²e'‚jm7bP%j[تegã‰MTòs]„‰^qÅIÙä¬çð•¿ò¢Üñ7NÚ~Å›DÛûp£wvo¼ñFÛ{~„îgD#>yûÍþ*$Iºzƒb€ösð)ÛW5~�kÙÅ2eÑö¢Wñ°à]¯£Ô€ëX}ÎQ0.y„â�† ¯ ‚î0n“y‡éžwÞyI9º¹tÆ�¨–)¥2yêþP,âÛÆ™ny0&_„ZJ:ß ÆF2îOµl‹R†ªÔ�ôò\£Q¾2î€û-°¡Ì¸¨gžö#ÖI F`Þôøà–œ«×æÊü‡?ü!QÚ(†ŸhKhŒü(» ñ#ž`:j/ž’’6“´51§‡‚¶,E˜?.Õó¨êš+/�²¸eÅ×6Ük�|¸S~Ö#eǃ¬ú6ñ¬ŸsråÍJ£l›‰�cy©˜¾Žâq£†+¯¼2iKéq¢#pð@ÇúnüwLÙcq ŠÛØmÙ=Sê΋Zà:kÕAï1ÄÎé1ñ{±ÇÀ^ª¦Ë¾-†MU© /U5Í2áË–½ITË¥¼ãXÈ7Ù×êðîM�3ú͸–m3„Ô^b¯ÖéýÞKêÔT_­3·•µìÓf²ò¯Ò^³âÇO9ßÎáڮׄËßm¶ÙÆgƒ‹D$3Ýw+GÕ²‹F”wÿFº¸Ö-­Ž,p!¹ì²Ëz—‚²©ïhã!É/qY�kG\|¦‰´e“ØM3Í4‰ {„®ô8&7ÖiÂŨ¶E\ñàŠŠýæ´]Q0ðiåõUú¾–©l_õ ÖüWÖ�Üi§�æDØ›ä‚ÛG±Æö.Vyˆ+\Í«{uÙTð.Ý“Á .oø¦¢€ããé+¾ÕÞ{ï�`¯Ï›Ì[ÓäŠ uKóÚá¨nÃqÍ/̼å*{*ã²þœsÎqÔE'‚þžÝ\ÖãÞ‡ü9€²Êf¬w- p'J޾¶WÜŠ‡ß)É(uS¶îMlÉQ)Â4y7túW ¸ù䈈<Æ3à ƒ;Vúh™±6/ÍnÏÁY6’``É\-›È~\H^4|;N„Åa|Åý+c"®måÇò�¥*Y2¸…®UE¡#qV2‰ÒÁÂñYùx]Ü»Ž?Þ»_Æ=·ÎÉ$LùfŸ}öÒy kÀ~¢¨Neújl{-Ê¿ê»~�ï«¡|nƒáEt]À8À¸ÅU©I~DÓL_q�H™/!úG£¤Içtž3Š‹ç4óü's|ÖQ01ü„æ1–®ã&Jî¾JE.ëYws ó ýÔ!Ág‰Ç-”XÚuszèŠ>™±1$\d3‡@:ކïõ¾êšK㥯eqKÇã÷Ê+¯ìùaÖ¸³¯CeƸ&p§l¡ËzŽ8cþ™vÚië»vœ~Îɵ Ù%bÙ6;/ÆòR1} ÷ôÌyã¼8ü7×ô8Q_™öNü˜²Çà&‚'ÞŠªÐñ޾„Ëó"*»Ç;/jê¬UC–tbö7´\Ë®³cçô˜øŠ»®ñšØc`Ö}̼}¶§ô}^Šcj®¹æštÔ®¿éßÊ+f.[ö&yP-‡®}9öE¼êãÒ×2ãs¯p+벾ɾVu/ µ½s_‡ÿ&^šÊ¶™Aî%†¸+ÙÄ:½ì§˜ÕŸc禦új�²k½Ó×2cqbÛL:_~—m¯Yq›xÆñlì_rôUH´QŽë+U‘Þ[ØáG@„‡‰Æ,ZÝþ°X)´2�\ø*¹WwÂÔ'ϸÁ‚BóËsÃj¤q_†ÊjóÆ”=íN_ëQtE;¹I µuÈw² jÉÀà-?±Z΢&ËÞ”ÅCV9óža¡¦¬Ô \™X½q0–³‰ò¢¶=¯ZvÙˆJÚkÚSD˜0ž (.éÓZÈËd•~í‡V–¡Ë¹Psÿˆ#ŽÈŒ‹;dmƒtP&ö›ã‰@ÓÅ}PáZUÔí«Yé”}VV{=CD‰¨# pÓqCΕìxŸõ{çž{n «z­wèÒ�8½È[65“üpZDju€íÐÍ(qºYÈ ×’€Ï mÞ4u³�—�O\eÈ»ô'\ëØDUìpïÙ�ªÔ=+-<™àÖS­§É­ãa³zEË|•UVñc›âó,«Å¬zÖ};N¤ó¥hù¹.µÔRÇÞ¤ãdýÖ¾ÙÍB'Œ«ß˜6Ü¢�3QOÙ\¬”eìÜ;>Çò�•*;D�Ãñù˜cŽiqŒ‚¶W¨$% =5ey�JŽÐM ?QTÍ2}5¶½å? XÁ3âšPÇ�°?Âç—¡2üH^:ðŠÚî9N#ËãqC øÔ,Â3”¦%›ÎI�X~"Ih Ý”µÚÅ#˜â¢7�tMÄ7 ©‰9]-_éÛYzà-õ›ËÆz˜}Û}Õ5W[äàGYÜ‚(É­¶á^[È7�;…-ä³¼“%³›Bʶ™Øy1»µO]Ó{juûk*õàW4Nèº,=N�WfN'~ݲ77µÎ-Â9ýn…V ÛB*»Ç c yT�ó Pv­ò°|§&ö7Ê®³cçôØøÚ–©wS{ ¥§mëΪT†—ºüòË“<4¯2W,z‹¨JÙ›æAµ²OQ‡ÊŒÏ½ÂM”°’ïQä²¾} ¬Êòî½gʶ™Aî%†¸7µN/;Æåµå²ã³ö‹2ý[ä禦ûjÙ²çÕ½ÌGܘ6“—wÙöš?æ9²%1¼kézŒï…Ü�oÌ‘Áý&sYßoÄ{˜.'t`#×ÍÝþ(† µÙdË"ÈÃ4…$bIþyçÎ…B#å2TvñSvhÀ�\7Üx/šNeŠ_: ®;p³ŠàW¿cxÅ…¸h¶w¤×dÙ›Ú`é(d—ä ·ÃzÓ–aªp\DUË œ4åQ8y¦…îZfÑrÍ‹îË®õ¡ŒJáFAÞyÛ0v�”Rì7?ä�C’tECL“m»†çü”í«m TüQv±,uIÙ‹„íêr¿èÛd/®ÍÀ�M…ð›÷"oÜÃê7Öó¹³ÊéüßùÎw:‚„ck–0\7Wp/ÿâ‹/vÄï&�«Ò¤œÏ@™Á)T ¶eeëÞQØŒ(/)ŽYîu3¢ôýŒó©§žš¸F ]Ç…^Ù‚ÇŽé|˜£8ÊFqælá:TvNÓî·@þ±ÇKê™u\IX¶ô}ìÜ3>7Á¦ë3*¿Ãñ™ã^T¨Å}Hچź,|<Ò÷1üDQÅËôÕ˜öZ”÷¨¼£Ï幬D˜Â±:f†Bí2õ+âG²â£\ªy‰EX¡ë=_5l^¹Ä:* ® cù‰¬²�ú³2›ÐâY&Á3½þëO»áÛ¤mMÌéúíØˆÊ¢P O�ò¨êš+/�2¸åÅÕMí^ ä›À�:„ùª|E“âó²m&f^l‚—ªÛר,Ö±Y¼Mæ~bÆø¬q"7‚¼(3§¿nÙcqãx?Žªò‡\7*»Ç3/v+ï‹Öª!ÛÔþFÙu¶~ïº{±ñ›Þcxá…’=“ &´ÑWæ;•å¥8:°J[Õ° “GUËÞ4ª‚Ç^ ä{�x–È÷¢¯…ß³ïÞô8S¶Í z/1Ľ©uzÙ1.ü>y÷EãssSÓ}5¬GQÙÃpz_vŒ‹m3š_x-Û^Ã8MÞ‡GÈçÙ&“¯œ– ä+C6¼Ø,W� gdÖ¡¡vر³ÎÅ£<á™Üe…|eM•=<—¹†±q¬±Š.-c]”qE†  ¤÷ز7µÁ–¯Ê=‹g&VηëÍý>ûìS˜TÕ²‹›Õ$„dy¤cô-ÎÇ IòYï4œ¸šOò÷sú¸nämz1A(áæMì7Ïæ¼”, ­�ËöÕ¬tÊ>+»Xψå<ž<ªU±C±¡ Ñ÷4nx.yÓy£d‚P–¼^xᛵyj³ Cë2üSëwÒ²‚w,BÕZ\X¼ã齎³¼GK�ça»äLYÞ…á{Êýƒü yÏX_DUê^”޾ Ï1.ÚÀÒðƒ¼ê¸–Eg´Æ–1vœHç�לðûÓfYtV%mkÃl!*CqæjŠ�[bÆç&øÀ*u¦°´Å°}r�‚e¨ô® We6q‡©~Ee‰á'ŠÒ-ÓWcÚkQÞ£öŽöÇùˆr„‹÷OŠ¥ch]›§¬\T×<~$�>ÚþñÈòüóϧƒ´ýf\ÓðœuŸEwÜqGFŽÒJ‚ÄòIBc覌�‹t¼(€;Þ òH½x¤òMÌé*81�üÐ/3Æ5�;¹…yqך÷ùíyÊô5’ˆ™›à¥êöµ0ï"O âZÚ�%éq¢¾2í�øM”½î^dQùë¾+»Ç3/–)[ÑZu�{ ±szlü¦÷äÈÅ„wÉ2b(úVUy©¢´ê¼«[ö¦xPý–½È×Á¥Lœ²ù¦ûZVÙŠx÷¦Ç™²mfÐ{‰M¯ÓGu/±©¾¶»¢¹% Ç}•1.¶Í¤óæwÙöš·‰g¡eüSO=ÕD’Qi˜@> ¾á‹Ì# },;ëPŒP¡�nîä ð°î&]‡˜²‡ŠrRºû�u.¡~W°;ôÐCÛÊÓdÙ« µÛ Òð\ua�©í…v€²BU-;£šöa‡–—lkâĉ>×i kyBß�é ­üÃ�‚p£3Ì#dC«çØo~Á$uφG(äõç°¬±÷eËrqRö¢ Íõ×_߇£Ý„¸—)gèí㪫®J¢4�wh9‡ç‘" "m·e®Úgt�U&ކÁ*Hé€Hpç=-¸• )lëYÞ<°UêÆË»-J†i(«¼xBPŒ{iÍ;N„eÇ »ÎŸäØꀷmcaø¢{Mg˜ò”_•eª¶§Ø¹%v|V~¡.Xôí†ù×Ú¯ôJ)œS?ýéO‡¯Fú>†Ÿ(ªx™¾Û^‹ò ïBÞ†6Z•òø‘0,Ùõ[¡L÷øã�‡¯3ïQrÕ~’§˜‰'0 ò ±üDf�FüaY!¡®)8Ú �tîI Úš˜Óë ÚÒe­ºæJÇ×ßeqÓðáµ_òMàN¹M ~½ú÷eÛLì¼ËKÅô5uá�5”½T;/Œ† ¯:Otã¿cÊ‹[XÞ¦îÃy¸HY-f^,SÖ¢µê ÷bçôØøMî1Ð7Âò„žüº}£:¼T·4«¼�){^>aÛ/Ã*vEÇeäåÅó²ãsQuß•È7ÝײÊ[Ä»79ÎTi3ƒÞKlz�>Öö«öÕ°ÝÍ-a¸ªc\l› óæ¾J{MÇmâwhpÓí¨Ø&ò+“† äË 4BavÜqÇdóäÁ¬\ò¡6®¯uã†s!²(`–ò•]<Ä”=ÔØb2l2|ã�š,{xf9Ã@a›¡®yTµì¸íÖöšÇt>òÈ#I˜­¶Úª#ë°l¡àVb £g©a©R¸Q�'ð9ýôÓ“üCwæ±ß<<ã8<›>,_¨ÙY¶¯†ñ«Þ‡LHÑb™‰! ßL³ÎÀäîˆ ƒÛ⪴õÖ['¸ã^I©é¼Ããø&EÄ‚òÄOÌýÓ£D¨3Þ‹¢âsþùççÆ%,Xj ïó,ܤ]â3&ßsÏ=mÅE8�å>i°™Üílæ*uoË(çç±kùq}—GÌ‹ôÉðO½äÅiú9eвr†V¯(vœÐrq6 ¶¾ñcâ¥%T®«:g–�Ó5®œåfx#Áz¨¤.å(/šÇe)vn‰ŸcùÀ²õ,nÏ=÷lëk½æ+£7² ÷Ë‹Î�oº¯e•»ˆworœ©Òf½—NM­ÓIkP{‰äÝ4Õé«aŠæ WgŒ‹m3š·^«´W�Óä‹x�Bó&󨚖 ä«"6äáCW©X+2áäl‡!ŵÙ$W­:6‡XÀ†„Õ˜.èe…|§Ûâ!¶ìzù¹•ÄÚË€¦©èüЧŸ~:<8#$$poªì¦t�Â}T?w²EÌ¡!VóyTµìô Å�:3‘¥)<—†�ü4… fîÓý ësÅ“3FC 7 óë_ÿ:|í…Nœ!Æ;\\"SŠýæ`µôÒKû´¹¦-\ÑU Xò/ÛWµ|u®eˤ2û,Ó2ºÛm·]ÛkìEØ›o¾9§Ààoû[[ü˜¼Ã„`p´m 4�>! [æ>\̆–leâ&d�³`¡r ã{Z8*�äy|вT­;G=¤óÓ´¸ÒÂ# ŠêZÈ*þéy0L»÷Œcšw/ò±ã„b.xЬ…ëxj=pU–ÊÎéaz‡~x’Wš·Ã5yæ™g&yn»í¶‰rK:”Sðf£;·ÄŽÏ±| Ö£‰kè5ƒ¶‚;ï^RèÙ%­(‘ ¸ò¦ŒaEŠ_|OmÛzM+!õ²UÓŽá'Šò*ÓWcÛkQþUß b|Oó}ZfxÛð\Ô›nºI_%×X~äöÛoOŽ`ÀZ2z§Ç‰"¬ËÌéÄ�){,nEå¯û®ìC̼ØÄZ5lÛU÷7Blª®³Ã×'U3@IDAT¸Y÷UçôtÝâ7¹ÇÀ�:7ea˜.¿cx©¬ôê>«Sö4«œì·+~ϪR؆‹x¡ªé– _V OZa9³ÚI87½—3Τq¨ÓfÒièï^ï%’OSëôªc\ã³âT÷Z·¯6Qö^�qUÛL“íµÎwòE’ë¤]7Î{ˆèŒÆÂt:qìë´üòË»ýöÛÏÉ™Ânê©§vÒ�œèdâq2i9Ù\wbQ‘Ô_N„”þ7ñÄJ6y§7Ò‘œ0Ûî=ïy�m}ì¯bAád3Áß¿÷½ïu¢‰íDÃÎÉ@â¾÷½ï9YŒ&á�<òH'B”ä77"t2Iµ=“…†ÿ-gê¹C9¤íÝl³Í榘b ÿ,¶ì¢mìĂŧ5nÜ8_va Ý\sÍåËE]¯¹æ'´ P'ˆ¶²Äþ�óâýw7ªN\Nº¹çžÛ½þúëNµN¬Tœl4ú,ä,$'’¶ìš,»¸fw¢à¿/ß_6äÜL3Íäó›~úéÝœsÎÙ–wìä¹N8Ám²É&N\‡8‚ºi§�Ö‰Îɦ'˜ÏWγôåÊ˳jÙùž_üâ}r3Ì0ƒ“³P�Xéøï-G8±0öïfœqF'™›nºéÚ²û/hÏ´yðºõÖ[�Xù8ÙØ÷e– Ë×M ÿ‰Ëuýéã}ôÑN„³N¬fœLNÜ…ú÷ë­·ž“M¼$,7±ßœºŠ’�OS¬ÉýQêN”M|žxâ‰$¿¬¾š¼¬ysà 7¸'Ÿ|2‰-’ßb ëøÐd“MædsÖM>ùäIXQp|k¦¯©¦šÊÉYŒnƒ 6ðaHWŽ:ð¸�1‰þ¤Ä˜(Ö�¾­ñ|Þyçõy‰°ïß]t‘“Í7\<'8aØ5ª¿Æä&$ÐîÔSOõ�DÉÆ·•ð}Õûë®»ÎÉŠ�¶Ë.»¸}÷Ý·R´1±¬óqÄBËÏéD˜æDHéËb͉w·Øb‹¹o¼Ñc.›Dþ�¸7r´©<ªZ÷óÎ;ÏçEšbµìÛé<óÌãD‘Ç—ÅZËg7å”S:Q„qr¾yfö"Ìõi„/[ÛúE”U”m|vM|û¢rÇŽôý“O>Ùgö¢@�d÷Ê+¯8ÚÍK/½äÀ]w:¾{Ìœžd$7ð*¢œå1Gì±Çn¾ùæóýŸ‡ôcxœ&‰ö,G_8x H”—üXC›‡ÿ‘Å _Äe·Ÿà”bç–Øñ9œ›ªò�Z‡&®²iìDè˜$%Â' ;Éï¦oDêçPÙÜóIÃȲœ£­uÔQN6—üs9{ÕÁ{äc‹+Û^Ãû‰g�¶gÃò#–Ÿ 1}5¶½6…ã Æ÷½öÚËc'ÂwǼ(‚m¿Îb� |c< ãFH1ü|:ë5xLˆ6=a„0ù¶{Ø{þ6|È:�q/(N¬<Ÿ*›¨NŽÇr·Ýv›_Ê<\–ÊðaZ¬kÄëJòHÜÙgŸ�ü¶xOQèi+Öi§�–ðG¬±™Ÿ”¦™fšdźŽu-ß þ~•¶Ã˜ÅºC„ôͯ?Y÷„;§ÃsÐ)ë¬4±Ö]sÍ5ýcÙ˜w¬ùó¨êš+·¬2ˆ'ÊìŽ~ïÞ�bƸXÜ)›(ø&<ó}¬ßÔï99¶~1m¦‰y1†—ŠékðŸì¿°æ„ØÛ|óÍý=ü°îðÞ3=Nð<¦½Ç”�¼cp#~,Åì1Ô�›X«ëCÕ9=ýýÊÄob�AÜ6û5|sœ(åt]ß7ÁK¥ë[çw�²“O šUNøú?ÄÞˆXz{Þþ•½9xI¥˜ñYÓˆ¹²¶cÏI ÞUyUöŒØÇSBÞ®ábúZ ï®å©;Îh|®uÛL˜Fxß�½Ä¦ÖéƒÜK 1«r_·¯ÆÎ-½㪴™¦Ûkì5,²x+H”‰¹¥0 &�ð½Ì–ɈMHP�“(“fššȳ€Øÿýýæy:/~31^yå•þU–�¦œ’5ó6lÜ@±yÒ`#á° –x–ElB°ÙÖ$!�•p  ¿ŠlþÃd¦©©²Ã؈5w:yÿ›Í>òo’ØGøBV˜i%Ú/i$ЍjÙÁv§�vrb�›,‚`&ý´òÂ'L*mYô¹Ï}Î ÃwáFßZaîg�uV�¹Xɧ_EµW&E”?Âq"Ì¥„PV_ ÃÖ¹mS/Ä*WÜõ9Ê›È(ÿõU¾e &¾±�ÎX”V ^ݼ5O¾5Ü0¥«póVÃU¹Vaˆ²Ò-³Xf™þ¢ _Yé ¤§½çQ�º+#š—¦>gœ ¯¦–ô=×AlÂü¹§ýÑ!ú Xûû^ý«;7 TÄæ-ã$íE¼t`�¾L”$ó¾÷½/©JÌœž$"7ôs„Oi%@ ƒDÎæÕŸ�]QPBÁ…Mÿ"‡P ;·ÄŽÏ1|`Q=«¾Äæ?±(uåÍ©Œíçž{®C¡3�ÀeHÝ�°ý¾o‚Ÿˆé«±íµ)¼1¾£¤ëš¬z°y‰°yŽ9æèxÃ�ˆ'/'®E;ÒÌ{�%„¡�¢¨�GlÈÂóä)¹eÅ+ÃO„ñä¬M/ŒÖgl–ˆ�þº+ÊírtRér± ŒB�ã‚xæ‰4±@ ™9/OÐVwN'¯XA[XÞªk®Xܼ¹¯*��ãÈ/wâ›@ªQL›ib^Œá¥bûšx%ñk.æ×4Áǰ?�"uÞ8ÓÞc˃[º®u~Çì1Ô�›Z«ãCÕ9=ýÍÊÄob�£ûŠnºt£&x©ny”y_§ì¤Ãæ•+Üß Ã°W}ÅW$�bÆç$‘ˆÆÈ¬ýÙ¬$å8]/£ßÕík1¼»æ_wœÑø\ë¶™0�ð¾{‰ä»Nô^bˆY•ûº}5vnéåW¥Í4Ý^«`¯aC,ä¸Wo„¨ïu5�ü �ïq¾3å¬N¿Á¡Öa–X­³¹�àD-QyZî!ìBs$MhÌc�ÈB O˜‡�•0hßc –�XW#Ð�äÌÀÄJPóÀª3Ü´ÐçyW65°h†š*;SXpQöôf –Ûl¡¥\e3&¯üás¬ÿÌ…VÃúž|aŽX …ßKß뵩²“ƒ&VáhX«Ð³ª•Œ–«èÊ‚™Mqï-—Óai;( Q†ª–�oŒ1T­ù „Âò+Ô¨Ôw\•a�e–YÖ1n°nWBq‚²gõ£p£€oÏFòe—]–`M0¾ô“PУië5æ›ã±‚þŒàMÛ:ý¬±JÇš²PÎáÒ,¹2öÈÙ³]ÓBÈJ_̲~E‘ìX„„ÐPÎŽò–‘ásî±xÇói²é™&¼!ðYÌgå©áëä­qÁ[±…©/cÙ£qó®0·êÑ„q‚�˜*„‡0o,äQŠÉ"¼ 0Ncö—ÙgŸÝ/ 0Q�º#ÅJE€¬�)òC1 êPs;«(w„ÓÔ ù´ 9+nSÏèkXYƒ%s"–.½Î¿ê8ÁÆ1sxã…å=Æ£, ­èñt˜©3§kzEa þ¥0ú|ØþèCªä á›º’/JŒÏrœC[²Œ(€0ަåbæ2‰Ÿëò�mŒüÁc…R¿´‘gò…üí¥B怙gžY‹”ye|çmâ° =µdFÐÃ&ø‰Ø¾Û^›€nã;¼<,cfHxJZc�5<�’V(Ôp1üóÎe +',àÓÄKÚ|8¦Kn9¦�M§Çï²ü„ÆÅ;ó¼ëWž +¡ …0¸,-·Ürîâ‹/n ÎxŸ*ò2Ÿà-à,QøÆ;ÚøñãsùäªsºfÎÔUW]å=‘…˜ë{i«¯¾ºÿ‰5�zÓ÷ék•5W¸…ùãÀ  Œ‡R^7ŠãH¿.îÄ¥¯ÁGÁäõGÂõ’5'×­SL›ib^¤Üuy©&ú< ü'‚§—_~Ù±Ö‚�a�ÇZ�>Œ²^™ÒÓÞ›({]ÜÒõ¨ó;v�¡Î¼ØäZuØöªÎééoV6~ì<‘zEˆÅ¾e7jŠ—ê–O·÷uÊNš1csŠ1‚ïÆÜÂø@_㈔Q"†êr’þ†{l8yÁѽ¢˜q¢We•t™#3à§PRcœAPÛ�'¨3·„˜ÄŽÏƒæúôûžã˜St1§¦•&òʃמХ=S_0¬Ô4?SÏØö“÷ â²Y‰¥"nÌéï¬mªÌ‰Mñ#1õgLclc݃5?¼T?xAêŽÒ+¸Aä‹p åбNŒÍ¬{zè!?— Xƒ¯©B6§WA«¹°†{sXö*¥¦çÅAóRìã…Ê»j¥É + ·\ê̋Է©µªí1ôo�!¦� :n,:èòCþuúZS¼{�qf0k¢ u×éuónr|®S†˜¾:è²×©ï0ÄA΂<�?õ´ÉÞz=h2�ü ¿À$–?œhÒ@Ðúynï$µU·d äËf›µQP6®…3 �ÑF€Íš]wÝÕ{#kÒ+×ëavoŨ5¡P¬C�´ª ¬8‡fß?Ñ,ž–Zÿ­+È5Ë{ZÿJc9†ÀXA`,Ï‹¡7Ž9ðÀÇÊg³z†€!`†€!ÐêMKÃHBݼºjø^_M ßk„'ÁôqÁÇf&n‚B ΚÃýÚ=œ%Ä™àF†À(#`ùQþzVvC`ðà† ¯(ê×kYg ¾¤£Q<6p¤L]âH܃Mº¼öÚkÓj±ËùߟøÄ'†�±,xjà­pÑ`¹ÀYGÎp>é0+¿DWØ0 �¾ 0êóâÕW_í=&rd\è1ï•W^ñG«ÝsÏ=~Ÿ�#(ð®ad†€!`†€!ð?0v«ž�g›m6ï 8ï(¹ÿÅêß� äû‡õ$““ºÛÅåø"‹,â]â‘s‰!Ü×c�»W#C`”0�ü(=+»!`Œ5{ì1nsÝz »ëϺõ²xå¸îºë¼÷ bàæeÒa§Q< ;¾V¾Þ!€‚6îþ!ÎõC)ÊÈ0 �XF}^äœbþ8F�cP8ž É÷ß¿¿‚Ï–[néŽ8âˆX¨,¾!`†€!`†@Ÿ0�|ŸŸ²CK—ó1²ý‘Gé­ ²ÞÛ3C`”0�ü(}-+«!`Œu8Žó¾ë›ž›m¶YÝèo €…ü<à­tÙŸk®¹†¾V£.xz€­€=C/1o¾ù¦·ôœ0aBÏò±„ C`ÒB`ÔçÅ“N:ÉuÔQ™ !ýn»íævß}woè’Ȇ€!`†€!` -&�ÚO3º{ûí·Ý}÷Ýç-â_~ùe÷Î;ï¸ùçŸß-°ÀÞ (òF†ÀX@àÖ[ou¸HžnºéÜÆo\©J¸œ»öÚk}œ‰'úþQ) l†€!`“<ÆOLòMÀ0 CÀ óâ“O>éî¾ûn÷ì³ÏºW_}Õqöé‚ .è–Xb 7~üø ¶vk†€!`†€!0J˜@~”¾–•Õ0 CÀ0 CÀ0 CÀ0 CÀ0 CÀ0 CÀ0 C`d0�üÈ|*+¨!`†€!`†€!`†€!`†€!`†€!`†€!`†À(!`ùQúZVVCÀ0 CÀ0 CÀ0 CÀ0 CÀ0 CÀ0 CÀ0 �‘AÀò#󩬠†€!`†€!`†€!`†€!`†€!`†€!`†€!`£„€ äGékYY CÀ0 CÀ0 CÀ0 CÀ0 CÀ0 CÀ0 CÀ0FÈ�̧²‚†€!`†€!`†€!`†€!`†€!`†€!`†€!`Œ&�¥¯ee5 CÀ0 CÀ0 CÀ0 CÀ0 CÀ0 CÀ0 CÀL ?2ŸÊ jc �×_ݽñÆÕ7nœ›uÖY;ž§<õÔSéGþ÷sÌᦜrÊÌwöÐ0 CÀ0 CÀ0 CÀ0 CÀ0 CÀ0 C ˜@¾X÷=§W_}ÕÝu×]î±ÇsÏ>û¬›i¦™‚º%—\Ò-¾øâ}/Ï(fxâ‰'ºcŽ9Æý–[nqãÇ�ÅjX™‡�8À]xá…¥[f™eÜ%—\Òñ<|ð /¸W\1|”ÜŸuÖYnÕUWM~Û�!`†€!`†€!`†€!`†€!`†€!`†À`0�ü`pïi®ï¾û®;óÌ3Ý 'œàÞzë­Ì¼fŸ}vwðÁ»u×]7ó=_zé%wÊ)§ø÷묳Ž[n¹årÃŽÕǼ;öØc}õÈÏ7ß|cµª#_¯Ql¯t�;ï¼ó:°/#�§¾&LèˆËÈgÂb CÀ0 CÀ0 CÀ0 CÀ0 CÀ0 CÀè;&�ï;ä½Ïðk_ûš»è¢‹’Œ¦�vZo�Em( ßc�=yôÇ?þÑm¸á†þõ�èvÜqǼ cö¹ äGçÓŽ…öúñ�Ü=ñÄ®Œ@>ýe®¸â ·çž{úÇ&�O£c¿ CÀ0 CÀ0 CÀ0 CÀ0 CÀ0 CÀ &� î=Ëõ¦›nr;í´“Oæ™gvßúÖ·¼ü{ÞóÿìùçŸw—^z©;ãŒ3Ü6Ûlcù._â¹çžs�?þ¸…‡;—» `|myȰùYÖ†€!`†€!`†€!`†€!`†€!`†€!`d"`ùLXF÷á¾ûîë~úÓŸú üøÇ?výèG3+ó�üýöÚknÎ9çÌ|Ïñ àÌ­œ½sŒ…öjòc®YZ… CÀ0 CÀ0 CÀ0 CÀ0 CÀ0 C`GÀòc¬¬¹æšî‘GqSM5•ûÓŸþäÔ2¾l5�;î8ÇôЋ/¾˜÷W\qEïF;Lgþùçw›m¶Yø(¹ÿë_ÿê.¾øb_†¿üå/nܸqnÑEõçÐò“ŸLÂ…7XïŸ{î¹þÑÚk¯í¦™f÷³ŸýÌýæ7¿qÿüç?ÝRK-åV_}u÷±�},Œ–ÜÇÆ'!\ú£È�E[o½µ›~úé³^9ê{úé§ûw”qÁtW_}µûõ¯í1˜{î¹Ý +¬à½L>ùä™iððí·ßv\p�»û‘–ù[n¹¥ÃûÁ3Ï<ãf˜a·ÕV[å¦ûâÉ'Ÿôeøá‡ÿ÷ÿçÆ�ï–_~yÿ½É?‹ê|sÒùùÏî|ðA7õÔS»/}éKîž{îq·ÜrKòÝi7xsøð‡?Ü‘mSíõ¶ÛnswÞy§ï/»í¶›ï矾»ãŽ;í oä¿ýöÛ»yç�·£uëžNhùV«å®ºê*wß}÷ù¶úÊ+¯¸…^Ø-¾øâýln›§ìÿú׿߀4–]vYß?Áì}ôQ÷Î;ïø¶³Á8þŠÚ~ ûm†€!`†€!`†€!`†€!`†€!`†ÀX@Àòcá+uøÄ'>áaÙ­µÖZéÇöÛ0 CÀ0 CÀ0 CÀ0 CÀ0 CÀ0 �1�€ äÇØçÝyç�Ý 7Üàk…E*‚o„™eé›ßü¦·z%üË/¿ì®¿þzët,fCZ`�Üç>÷¹ð‘{á…¼@‹vh‰%–ðB:w7Þx£O“ç˜Ï:ë,n êúp™e–ññ±R¾îºëAñ·¾õ-‡ÅzH±ñI KçC9$I/X‰CeòAåG>ò_g” °4‡Ž?þxo-¬áôŠ·„»Bw&›l2ÿ=±ŒWê•@þ»ßý®;å”S4Üß҇zÈýò—¿ô–ãX�S¥˜oN*�ç~Ê)§ôíu�5ÖðVé(6à)BøŽà>TĈm¯>aù äW[m5/”§ß`)>Ï<óxÏøÃ܇>ô¡6�|lÝ5½öS �7DÎî CÀ0 CÀ0 CÀ0 CÀ0 CÀ0 C`RAÀòcìKãâý+_ùJR«ÙgŸÝ[n#dD¸�çn<‰ÜÔ9“aöÙgŸíSÙb‹-Üá‡î…Ê<ÀbØ�?þ¸ÏY÷¸¹VJ Ô‰ÄG$X\×ã2a?.Ô†–æ±ñµááù±ÇëUÈï¸ãŽî€HÊ~Í5׸/~ñ‹>¾Å™gžfã…Ÿ`!ÈÄu?nÒ!,çñ ‚é^äq/Ž…?.ÈßûÞ÷º£�>Ú!‰ü¿þõ¯{å´+¥˜oN¡@þýï¿;ï¼óÊ.üq×ÿûßÿÞÿ¾ôÒKÝÒK/íïÓÿê´WM#Èó E ¾;G (¡˜�R”bë®é赟yûìã‹Àyå´›,ªÚ^Ã4B�<–àœ)?ÝtÓ…A:{:Ñ~ äñ~±òÊ+û3Þ\pA¼Âô�ðè@¬Ûñ\¾SL1E¤Íe=/øN»îºk[ûa†€!`†€!`†€!`†€!`†€!`†À¤Œ€ äÇè×Gh�`÷�Ȭá +¬àφNŸ®*àÄÊ7ëÐÆoì­¬Ãô¸ç�w¼U$pÃ>×^äULþ¸*O gò„÷±ßœ´B�<ç·ãý $ÜøãÎ:ðÀÞ²¨j{ Óò{íµWâÍ “¾o¢îé4õ; Ø‚"BºâŠ+Üž{îé£pÇBäGÐ!+]ÎGx‘Ǹqãü}(PÿÚ×¾ævÚi'ÿ<üÇyêË/¿¼„`·õJ±ñ5�ðZG ¿ß~û¹�wÞ9LÆß«@Á3Bf¥×^{Í{ àwÖùònÝu×u=ôPãò�?þ¸[}õÕ}6éc4ï¼kì7']ÈsLA–G‡P ÿ•¯|%qÝŸ.SÕöÆò7Ýt“ûÀ>¾Î¼o¢îé„û%�§žyæ™>û™gžÙM?ýôé¢tüÆ;Ášk®Ùö<ÈWm;m ÙCÀ0 CÀ0 CÀ0 CÀ0 CÀ0 CÀ0Æ(&�£¶¨ZXp_sÍ5>H֙ݷª€“3ÈÕzù€pŸÿüç5©¶ë'?ùI÷‡?üÁM>ùä^À¬îÙC�zžàõ¹çžsýèG}zi`lü¶Bþ÷G?òX¦/²È"Žk‘•1Bs„çM[ȇJ„O?ýô,(2ŸÅ~s6�üo~óWt”ƒÑDÝ5-½öK ÜqÇ9þ O<Ñ¡ìQ‡B�üg>ó‡bƒ‘!`†€!`†€!`†€!`†€!`†€!`†Àÿ0�üÿ°˜dîBA".æ>øà̺WÈßÿýŽóÓ!„ñå³hÅWt/¼ð‚?+œ3ÕB�úg?ûY‡oš8{}£�6ò�9?žsä•bãk:áµyòëæŽ·öœ!ÿÖ[o5.�'ÿ¥—^Ú½ñÆn¡…r×]w�JQì7'“QÈ7Q÷4È*�/:º G‡gÈŸzê©þlx}—¾r,J/Ð!‡â¶Ùf›t�R¿M _ & d†€!`†€!`†€!`†€!`†€!`“0&�Ÿ?>×]wÝÕ×<ï¬v^†çµ� ¯¾ôÒKn„ þgž@ñÑGu¸š‡&Nœè]èûò/¨ç †Ï8ãŒÄ —óã9G^)6¾¦^û%�GáW¿ú•Ïšsæ[l±°îÎ;ïtŸþô§ý³¦-äItã�7v¿ûÝïîôÉÑEmË?ïGì7'ݦòUÛkX§Ðe}Y ù&ê–�ûÍ6ÛÌÝ{ï½nÊ)§ôßcê©§NÉý}ûí·»í¶ÛοÇSÅž{î™xª€ÖYgwÒI'å†-zaù"tì�!`†€!`†€!`†€!`†€!`†€!`Ι@~Œµ‚“O>ÙÍ4ÓLîSŸú”›bŠ):j‡[t„Ø¡SN9¥ã\h�ô÷¿ÿÝ!X‡ÖXc ‡ÕmaŽÞzëy7ô„ûÉO~â>ò‘�´EùÆ7¾á~üãûg{ï½·Æj€P Î³ .¸ ð󛲯¿þúîÏþ³ÃÍý�7ÞèæŸ~^yŠ�¯é„×~ ä/¹ä·Ï>ûø¬�þà?ðuäÁ¿ÿýo‡âÄÍ7ßìß÷B ÖYg9 ¬õq[ŸÕ~#¬7nœûÍI¤)�|Õöê+ðßuòMÔ=,÷ѱt‡Î;ï<‡7‰²ôÄO8,ì¡VXÁ]xá…¹QéKl°�ï«(aÐþð’�Eo¿ý¶{ä‘GÜâ‹/ÞñÚò�ØCÀ0 CÀ0 CÀ0 CÀ0 CÀ0 CÀ0Ú0�|£ÿ7Ô¸£ž{î¹½à�ú ,à+öàƒzKØ»ï¾ÛÿFpÛm·¹é¦›.·â«®ºª{úé§½åôÎ;ïì>ö±�y�?¦Ÿ~z7çœs¶ÅålzΨ‡f˜a÷ýïß­´ÒJÞú9眓XâÎ8㌋Þ0ï´@�ò}ôÑ^(‰‹ûÃ;Ì]ýõ>mÿ­CŠ��€õù矓t§�vš;óÌ3ý³óÏ?ßÍ7ß|Éûi¦™&Á%éÐ~ûíçÀ*M_þò—½õ9Pœ!! ÛgžyÆ?Æ‹Àæ›oîï–j½yÐ �|¨ì@g<ð@o©Oy±>GÀ‹’ß�2(Å|sÒhJ OZUÛ+q :yâÅÖ�4BºöÚk%úÊ3ô¾ýIdÂ8z�âBvú9„2̶Ûnëfžyfÿ›¸¤¡„RÎV[må¢`�2gÉóm9¾€6Jý~úÓŸº¥–ZÊ¡´‘&ȧ±ß†€!`†€!`†€!`†€!`†€!`†€!`´#`ùv_U4бñŸzê)·Új«ir]¯Ë.»¬V0V OXŸƒÝ_ÿúW~¶.üÁ ak/òd†ó]vÙÅ=ûì³my§ÜqÇmù˜oNÚM ä«¶W­[]�|lÝ5ÿð_>_b‰%ëùðyxÏ·ÙqÇ3û^Ô‚^ãàâ„NðÞ'ôYÖEÈg!cÏ CÀ0 CÀ0 CÀ0 CÀ0 CÀ0 CÀ(FÀòÅøŒÜÛßþö·^HŒ;w¬Ê³h­µÖr{íµ—CÈ[†H+q,£±œÅšÂ�6nµÓ„�Wøúþñ�´½ÆÂ«y„Ùi ê‡rˆûýïï.»ì²$?Â#”üáØ&Ötbã#ˆî¦  yq]n¹åÜÅ_ì=üðÃníµ×ö÷p€ûüç?ïïê,�`�ðYôä“OºÃ?Ü ç_~ùe7ûì³{·ýêÞ¡ù /ì-—³âÇ>{ë­·|þàŽ«ò�ðj°Å[8ê�w€�ê~sÒà¼ó«®ºÊM;í´^) L—ûÇÜ­¾úêþ1íV=0¤Ãéïªí•x(ˆè‘ x�P«rM³èS÷¬tÿõ¯ù¾CÆ3�*¦àµàÒK/ÍŠÒöŒ6B{à�çÜ+ч³NÀëë_ÿºO]Bâ›à¹o Yq9&€>I<¬ùõ؃0 »7 CÀ0 CÀ0 CÀ0 CÀ0 CÀ0 C`RFÀòcôë# ÃÕ÷ÏþÓ-¹ä’ëø<Š�Ÿ—î ž#]ú/¿üòî•W^qk®¹¦Wxèe¹øvx @qŒyç�×}@;*¢ªß¼(­Q{7êu§¯¡ÀYôï{ßû¼Ò 4ݾù¨}'+¯!`†€!`†€!`†€!`†€!`†€!`ýDÀòýDÛò*D K ^!õ26~*¹¡úùÇ?þÑm¸á†¾L¸$ç|w#CÀ0 CÀ0 CÀ0 CÀ0 CÀ0 CÀ0 CÀnL ?Üßg’*]¬@=6þ Á¾ú꫽WƒM7Ý´ÍVñœí~Ï=÷¸É&›Ì»wÇm½‘!`†€!`†€!`†€!`†€!`†€!`†€!` 7&�îï3I•.V Ð`wÜqŽ?Θ_l±ÅîÂßxã wÿý÷û+åÛrË-ýyçƒ.«åo†€!`†€!`†€!`†€!`†€!`†€!`Ý0�|wŒ,DŸˆ¨ÇÆïS5s³9餓ÜQG•ù!ýn»íævß}w7å”Sf†±‡†€!`†€!`†€!`†€!`†€!`†€!`†€!0\˜@~¸¾Ç$]\³_{íµƒ‰'ºX ±ñ+eÖ£ÀO>ù¤»ûî»Ý³Ï>ë^}õU7ãŒ3º\Ð-±Änüøñ=ÊÕ’5 CÀ0 CÀ0 CÀ0 CÀ0 CÀ0 CÀ0 �^ `ù^ ji†€!`†€!`†€!`†€!`†€!`†€!`†€!`Lò˜@~’o€!`†€!`†€!`†€!`†€!`†€!`†€!`†@/0�|/Pµ4 CÀ0 CÀ0 CÀ0 CÀ0 CÀ0 CÀ0 CÀ0&yL ?É7À0 CÀ0 CÀ0 CÀ0 CÀ0 CÀ0 CÀ0 C ˜@¾¨Zš†€!`†€!`†€!`†€!`†€!`†€!`†€!`“<&�Ÿä›€`†€!`†€!`†€!`†€!`†€!`†€!`†€!Ð L ß T-MCÀ0 �¾#ðÿ÷îÖ[ouO>ù¤{å•WÜßþö7·Ã;¸yç�·ïe± CÀ0 CÀ0 CÀ0 CÀ0 Cà?üñ~¯n¶Ùfs³Ï>»ûÈG>âæž{nƒÇ0 �IÈO2ŸÚ*Úk^ýu÷Æotd3nÜ87묳vyLr=�ûÇ?þÑí´ÓNîùçŸoËëüóÏw'Nl{–þñ׿þ5y4ÓL3%÷v3é ðöÛo»ýë_¾�ÓÞ{Iäõ�üÃgA^ÓL3M/³³´ÿ‹ÀX½êølcœuƒ~"0l}­Ÿã{?qîe^ÿþ÷¿Ýßÿþ÷$‹é§Ÿ>¹k7ÃÖ^«à;Êe¯RO ‡ÀSO=•™ÀsÌᦜrÊÌwúÐö' »†@1ãLQºön4¨Ê�¬¶Új.l3ì5~å+_q_üâG£ÂVJCÀ0"0�|$€£kÑßýîw�¤sÍ5—ûð‡?ì–[n¹Q(þÈ”ñ€p^xaGy—YfwÉ%—tŸùæ›Ï-¿üòáú6Ûlãæ™gžÜü_{í5·ì²Ë&ïï»ï>7à 3$¿Gáfá…öcû&›lâ¾÷½ï�B‘‡®ŒŸþô§Ý�wÞé5³o¿ýöž–ï�CqgŸ}¶Ïcûí·w|pOók*q„3÷ß¿ûÃþছn:¯Éþ¡}ÈM6ÙdMeÑÓt�û‰'žèŽ9æ_Ç[n¹Å�?¾v}«ŒÏ£:Æ=üðÃî÷¿ÿ½ãJÉ%ýßœsÎYˆÞQÇ{ì1÷ÒK/yE°þÀ>àV^ye7ÅSÆG©‹¹ä™gžqÏ=÷œ›e–YÜüóÏ_Êrã7¿ù�C�YDÓN;­[j©¥2ƒÀ£“÷#�<âž~úi÷Î;ïø¼?øÁzŲaWŒÓJ5Ñךœ×ú9¾+ƒºÆŒ3´¿sÎ9Ç]pÁÞÓíO‰1 Þªˆbò.J·×ïšh¯½.c^úM”}T¿[&ö¼�^xÁ­¸âŠíÿû묳Îr«®ºjæ;}hûŠ„óÞ×Tñc ¬:ËJ”ºÍo”!Ø#Zzé¥Ý{ÞóžŽd�ÿô§?yž›oo3óÌ3ûq˜xð%e þ�|á©(éŸoŸVD'Ÿ?ÿùÏe“v(k-±Ä¥Â³©ÊþðeEëót‚¯¾úª{衇ücxÂVX!·0^Õu kU˜ÓÉ»_d‘E:ð×DÙ©'˜Á‡Òàƒá?á¿]tQ7õÔSçAábÇ™¬„›ä³ÒO?«[÷ؾڋ6S¦¯5ÕfǪüÈ�~ô#¿ÖyüñÇÝ/ùK?.²F»á†ºò›š§] CÀeL ?Ê_¯KÙ}ôQ·Ë.»¸¿üå/™!aÄO9å·ÐB e¾äC6Q)´Î:댄òÀAäÎ;ï¼ØÊ äcãwd<‰=Å63ÌŸ¨ŠÀgÐõÀ²yñÅwï¾û®_8^wÝu¥-ú±ÅE–Ò½÷ÞëfœqFý9×XÀ/b6Úh£Dà×­à( ±Ñƒ…ö^{íÕ-ø˜¯ (¬ÝqÇ=­ï7¿ùM/ô “í¶ÛÎ}ãßèi~M$ŽÁ¡‡ê?ÂôØPäÝ0òa9¹4î¸æ;öØc}±Ê·ÒåWŸGmŒcCìˆ#ŽÈä§À`Ûm·õJ,YŠ (‘�M!PÜÿýÝÚk¯Ýä׿þµC0Eü,¡:›Dä½Ç{¸÷¾÷½ñ™‡PPéF¸cL+ý0w¡Lõ³Ÿý̽øâ‹™I�6|âG?úÑÌ÷Ãô°‰¾Vg^ËàŸã{^º=oЇ�g¾ýío»3Ï<3³¨7ß|³àd¾üïØ¼‹Òíõ»&Úk¯Ë˜—~eÕï–‡I¯Ÿ�ÿÌØ2a„LXÊämÂy!öÉ'Ÿì ,˜¯!½?üðL\Çð¿ð…/x�xø\ïáG~øÃêO½í¶ÛÜ®»îš+F9ïSŸú”Ûwß}½p½-rêGÿN0Ò¹âŠ+Üb‹-–ÄúÉO~âöÛo¿äw·”oºé¦nÁëëÍ7ßܯW Ì%å/KŸûÜçÜ/~ñ‹$8kØ"q^½‹Ö-ðW(b–%xúO~ò“>ø ù¸˜²k}áù&âÓôþ÷¿ßóæ³(vœÉJ³I>0+ýðYݺÇôÕ^µ™²}­‰6bÃ�°þúþ÷¿ï“;ꨣܦ›n&m÷†€!`ŒIL ?&?«slœàò…3”•ІE#7t]Š%CÃFXóo¸á†¾Xx ÛqLJ­ˆ]Ëóñ�Ü=ñÄ^û¹Œ…|:ÁØøéôÆúï±Ðf†é±0 yúý¢Ìl*—¥QVeի΂•Í¡o¼Ñ[:c11©S?61 ÖA|'4Ø¿ó�ï$Y³†6?HÞâÇ?þ±·žH áÍ qoRèQe|µ1¡·*Å tGy”Mc”Liwкë®ëN8á„ï k®¹¦·.׿‡5:í4´ôÅíÔSOu«¯¾ºó×o}ë[áDHÞQÐ|y·Ê*«øpi‹¶�<.�QÞ ‰:£0òñ<;÷Üss…+aüAÞ7Ñ×êÌkyuîçøžW†nÏ›âaëŽ3/¿ü²[i¥•|áè…åW_}u&eòX©Ò^BE;Ž˜jª©Kq„bðÐ!ýüç?w_þò—“GðBð#ð !¡PŽG“,Ï?ð-Œic‘÷½ï}ž¯PÅCð¡bzU�üÇ>ö1wÆg„Åê¸Gð¸Áx�Gú²Š@eEö5C*È×]·TP^~ùåÞzœr š�‹);å¿û{Åíþ� xÚ‚ð†À·.ãe5vœ!¿&ù@ÒË£˜ºÇôÕ^´™*}-¶Í¤ñŒáG~ûÛß:<=BŠ˜Ûú4ºöÛ0Æ$2é�1ä,–Ö‚ .Ø�Uÿ÷Õ¯~µ%«¤–¢ùÙ ´–¸Yj‰•Nò|˜nÄ­VRþÓN;m˜ŠVº,²@ñu ¿Òq€±ñô&…û±Ðf†é;ý¿ÿ÷ÿ’>(‹óa*ZGYÄ­ZRVѪíx_ô@\à%q3ExU|(߉›äßKÜ—.ßN;íäë-Ç—”Ž3–n±ÅYœö¼šbŸ´9Y¼ö<¿˜ d#¦%î }yá+dS²%‚ÇÖ›o¾Ù+Фr¤EL6}‰;hÜŸ}öYßOé«" Žªs•ñy”Æ8qS˜´)¶DY(ÁI¼=µDˆž¼«”ä�Þì¶Ûn-¬·Äõaë�7Þð�E Þå£Öî»ïžÄ±­þóŸÍ_ÅÕ¢¿ýöÛ·D©µ%èþ9ßJŽ#j‰–$¾X·Åå‡l‚%ïwØa‡–lÄgþ1_¥I6;}\Ùoýà?hÉFsÒFÄ•cK„£IÚ'Nl‰KÕtCõ»‰¾Vg^Ë¡Ÿã{^º=oЇ­;Έ‡ˆ¤�}÷»ßíVÜÌ÷uóÎL¬�›h¯},n[VM”}T¿[}ü1êü³“¾.Ç•‘›Tö'D �𿺧&ÇÍ$Ø}ík_+ÄŽørFrþ3ŸùLKŽÓIævQ‚j‰p³%VöéÀßÀ‹ˆžßÃï†Xç‰BaK<$éŠå~G|üô§?MˆB•O‹=@¾F„�-r·Ò< üHÿ¢ÏÅZ=I›uA7Ê$¼bYvža]o¤ñô*çUgf³n ­cÖ•þ¢ù¯µÖZmùš�‹)»(g´Ä*©ü°¶9Þ‰'€ä�xfh«wÞ�Øq†t›äóÊ[÷˜¾Ú‹6S¥¯Å´™,ˆ¼ÇB›nyyVøä¥Ñ¯ç,(”‰—3š+e;JªJëxÔ7»T¯òë~ lb¬•+�þ¤}‹E~Hð(s†|UÜÅ¢Ø�rÊ)¾(¸�£½¤]ó÷û¸ „8kx«­¶ò÷á¿[o½Õ�³á3îeÓÅ÷•ôs~3ŠÀ)yÅX�:Æ?Ù(Jžë�Xr8ÎSï‘7. ùvüáZ‘y…öÇØž7oÕí«Ôƒ9ˆy€ññ¡‡rbùíVXaï¢�³ ïºë._gu—�Uw-÷<àDÄ÷mÎ^üÄ'>áÝûfÅI?«ëÒ­ß}�6θËY‚´UÚÐ,³Ì’TGÌîôÓOO~Wq?™DêãMÜ›ŸEˆÚá†T«»õÖ[ÎÇ.v|&�ºcqE(Þæ>¨—Ç­±Æ~NÅ�+óhš?£LgÄ;øLÚdÖyî„Ë"Îi׳Z�<òÈ\>2+.|°ºé¤0^„¥gÈsNªl6‡¯£ïÃs|9–Eççè„{�@•¾¦Ù×™×4.רñ½êœNžô-9A”ü¼ÆÚ‹µs8s ó}V[n‚‡­;΄e§.ô)Ö}},½ÎÃí2¼KHuóÓ¨ƒ»ÆojÝR§½jú=Fj¾z­Söºß­‰yQË­ß7µð€O?ý´ãŒböØg€Ì£:|`ØÞ«öÕ¦øç&Úk�½™4ޱ®¤ëìOP†þ™õ ß^T<áø5*ü<ü:í’£“Ø[«r7ï¼ó¦«\ë7m¾–õ�x¦ñiàÚZ¼ü}7—õðìƒánž½°ô˜Z«Pÿ�Ä û;óŒx¼üï›ÿ\À…cG ÖTð;M{êNZ”�ár“CÖ“ìm°? f»îº«_fÍ Ç3ñÝY‹¡Q²þÍrYO~½\·°_ÃxÅ|NÙØ§ªBƒäãŠÊ �ç.œcîà ¾¡(JV½Î8Ë(çe/êfÕ­¯†a³î˶™Ø¾–•wQ›É _‡Ñtàè»Ðç?ÿywÀè+»†€!0f0�üû´gŸ}¶7C¾Vl¨°ÙS•X³Ù—>sJÓaóÆžI:M,’D#Ø Åu´?ÿJ¬’Ú‚±‰zÒI'%g>ë˼…†m2IDAT…Z¨ã|.}—¾Š«.fVú9¿9osÉ%—ô¯Xv�=öÈ êÄÍ—mÛä›ß(ˆK¯äYxƒÐ… ݸ£ß!LGqFÜòRßßó`8|£�6òáôJEÊ®©+Vq¡æ“ë‡@¾.îŒClÞB,4Xp„Ä¢�zˆ¥œŒŸ3‘Ó$N4ÏÓ�ýwË€Žç<7Èîè£�Î|—õ��.Ý€Êz_÷ F±4õmJÜ.g&ƒr ›ŽœcRL_}饗üF›¿i¢žlPÓ–QBÈÈ£$Æb“3¥ÓDÿä{²AÑM¥î‚µß}MÜØ&ÂW”PâP¢�rÖŠJ(¶d��ú~Ð×*¸71>³ùü±…*6g™Ѝ‰ñ™ôDÔQ:"îŽ;îè7’¹‡Ä‚ÝoˆþçW³ÿiK(?"´`C��¹,bNd¾„.»ì2‡òZY‚GBqb^†Ï*K(8ª�(«|ýÈ˱SÉY‹eËßÏpUúš–«Î¼¦qcÇ÷ºs:JY(0BðEàGÒÄÃÁi¡|0lïUûjSüsL{�Ù› q徎 ,L£êþqcùçC=49§œõûM(¥ Ä^QY�P,M-’X“z7‰’ß4¤Pa–õ¢î‹…aêÞ#„WÖ´}ä.ûï¿¿›rÊ)Ýu×]ç•¡Ë äQ²c~EQ]• Ö[o½B�|/×-Œ=ºÂ~ çÔW¥P¸ÚO>®[ÙÙÔýƒ¼r¡ˆ {¿(WèQuÆ™>0¯Ýž÷¢îažÝúj6ë¾l›‰ékYùvk3Yqêð#šÊÿ«¬²ŠÿÙMÙIãØÕ0 �QGÀò£þSåðªÖ?š}ûÐtÓMçÖ³Ï>»CȆõ¯ÖÁiËuÈæá;‚J–0ïXœClB!¸…ŒLâlhBX^ýõþžÍÖ4³¿À x�e õ/\ð²yÊ‚ ÊœsÎé-H¡Uû /´ äùÍ¢‰Äa>é¡J™ ´÷Î:ë,_ô¯Î‚5L¯J|~îЇØè'>BQ´³C(°©–e±]7ŸpÄ?6ð‚€Ð’3œýo„Z0±l±‘‚03­XÛfb¿¹ äµú(«°XÁzŽöŽ-4Çsx#}B)ÜØÒgô'Úß‘…« ,åL\‡EeH±ßœ ´þ!´÷i?Xw!ô -©y_4–ô[HHyÒ„‚ @Ð~ûí—iñ�Ž£¿« «bp'.ŠR�?þ¸Ú2†ê† å 7œò6# ‡°K%´»!#tA­ïôÊ7Õ1•gŒ´3¾= Ÿ4¡ß”•I˜6V£ê)€çôwÆwæ¬Öåìgoù‚P<´Ð�í«›nº©÷AžŒ�XH1öÈ™ÕÞ# Ï¡<�<›i|Hû  ˜êø…Bמ{îéÃåý«»`íw_Cy¡;Zü"8Oʃ žïÆ3pEÐ<¬T÷Øñ hª Éoø6´ nù¦Ægòª:ÆG©ŸÂ&”7ÙLG1©¨-ÑÇtÃ]\†zSË›w¥}Ò׉Ë=¼gñByi0~bÑÑ/Ø´ )Èc G°údn…ÕÍÌ0^Ùûõ×_ß·!£¬Ð‹ñ¹lYº…«Ò×4­:óšÆ�ßcæôPȧeAð�ŒÎ ´7èøã�÷^¹4WpŠ]÷Ôg(Ÿœ ›‡±‰qb³«Ë�°šK÷—ºy“n îZ®¦Ö-uÚ«–¡Ÿc¤æ^딽îwkb^Dya–*`³>Zi¥•üx†…kV<�©.¬k ÓW›âŸcÚkÌÞLˆ!÷ueaUö'ˆ×ÿ®�Ÿ˜¿ÙcÂJOzsPÅK�òa™›º/+�g¿K >X—2GÁƒ°7€Ðž~…|öÚªý…Šc­Îø’òIãÆ�óû`ìßÑŽ±Tg/œXUU¼¦�²W¦üZÖÌ1ì-`l Õìm”È«G#<³ÜtÓM~o¥›@¾—ë0Wï�iƒžû¢ûAñqÝÊ*¡¼�—’4…mãÝ{H‡ÓßuÆ™>Pó­zíEݵ eúª†Í»–i3±}-+ïnm&+N~DÓa¯^�ÆŠÖ€Þ®†€!`Œ D8i4†&79E+•k&šgMq†‹[²áÞ–†¸úLÒÏ:C3Ì_‹-aÞ’ø"\l‰Ë÷$¾X‘$ïÒ71g)Ê"?Ƀzpn•(´e!¾-ª·ÕO˜ˆ$ž,žZ²‰–Ä‘ÅSK É{Ù0HÞåÝȂŇ—EX^�ÂçUâsuå�ó¹À:$ÑâMÞ‹enø*¹¯‹[’@ÍÙXNÊ&‚ÁÌT8/W” 2ßéÃ:m&ö›‹†¤ìK/½tÛù³´1=g�ï"š«ZT�j—÷´9θU¯I_%�–lÚê+�ýæ"`KòçìÐ�DÀ�¼£lbõ¾n»ÏÞ",´¥~’lÜ%å•E{å¬9·J,vZ\»Q,î¢ ”|Wú¸lÐù,E@×/ ¾²nÑ~Ê’Æ/e£$mS?¥ãÄäl3QÆòu¡EK�:’¡@KÚ§ÃóÜôL9ÙPôs(s=áD±¢[ú¾ î±ãsVEÅcQ‚§(ådIž55>k‚UÆ8�Ã5<Ó�o,Þ“Â×�ß˱Lj~ò`aFôam—]tQø*¹g«—–A["Do1ÞhÚ­(C%aËÞÀŸh²Ù�1[ßç]ÅóL©y&�8<�¦)J®é×C÷»J_Ë+|Ùy-v|�™ÓE)ù.|µñq¢¬•¼WÊyUõÏëð°Y VgÂøðyÚÆhou¨JÞ1¸kÙšZ·Ä´×~�‘Zw½Æ”]Ó(ûÝš˜Ep˜´3Æf9®L‹á¯¬uX³Ò—ÒÃ6ÙWumW•®Û^c÷fÒ8Æží¬±îºë&é’üPÖš[×Å|«O<±-ŽæÍû�o|£ëð!„"¬MÒb-PD¢àÊÂMK„m>¨ã$ñ™òHŽ¿LÖ‹ì×)…õÏ:C¾Wë0f�vrtQ¥5º–}P|\™²‹ð<ù.´—, ±Cš¬ mÏbÇ+˶e\ñG“u¯ÓW‹Š[¶ÍÄôµ¬üË´™¬x±ü}KǧG}4+ {f†À˜B€s¶�Æ¡ÀÁOUk‰d"ä>‹Ø ÔÉKH¡@>‹QÍÒ$nÖ†¦¦³1¡åãŠp±!ÀVEn±Üèˆ2lâî®ã}úA•k:.¿ËÆk¯t@]E¹%þɱÁ!ZÐÑŠÎ\HÔÁ­#£Të÷�ã)ü'JÕ6ÓÄ7ò¢ÉÝQvq³–,&6Ø`ƒ¶÷áÆ–hÉwlJ8ܸÍú$~ì7Ëýsq‘ž¤«7(°I ßeØòâF«Å&<å뤤œ,Ô«²µ¾e¯±¸k>çž{nRfñúÐB +uþ™x©,°©³`­»¡¨u¨sWÓI½ÅÕ]é$bûª‡‘ä+"ù†óR–@^w-û Ö-š?×~�‘aÞMÝ—m3±ó"Sí׬I³úK^�bùÀ&ûj]þ¹n{�Ý›Ic+(Óù¨Œ@¾)þ9È/»ì²‰2sºn½þ]V ާ:ÿà ȱV^_¬ü¾€õm#�0´Ð4«xéIÝ鸬e4¬ö9 i䘺–¯Õ‚—Ð÷Û”!ö’”Ÿa/éÕW_Í�&^Ø’ôQLS*#�GS¼ùøbßf�ÐM ß«u‹ã™Ô§Žbê ù¸2eykÖt¡�ˆ~»�?çûw£Øq†ôµíV18èV®ôû&ë^§¯¦Ë£¿Ë¶™˜¾¦y¥¯eÚL:N¿U៱‰±FŽkQ?ö†€!0Ö0—õcÂÏÁÿ*�/Ü|Cu\Z†gçÅÍÉÄU'ç'ázN)tY�;1Üv†žGsà�úóIÃ÷z�›y\;CEá4|x ]ÂáBwíÓN;m¤ã^´ð’zà¦)ë¬eÜË"л¿�DrtGbÿ}PÕ¥[:�²ñqYÆy^ÇÈæP:)ÿ›cÔe5gãj8¤:¸…ñëÞ㢚óÊ!Ž2f¬ÃUf™´«¶™&¾y貞#p—&ÚÇ=p.¶º°'Lèú‘3Òp»ž&ú ~O\G©»ÜØoÎ÷ç Eˆ3äEÀàïø€×2¹¬—CÒ®ˆ�ëqêœ>+5L;ö^4h�l$Éàâ ÷–[l±…Ç9yÑðM,îaqÀ_Ï俬tÙ ö¯ë¸ÁãaN ]Ö‡ys�KzÑv÷®q=ÞÒ1 ··ŒËSM5U©lcû*.Ey̻ۥßár>$ܤ‰‡ ï:8Ëe=m‹¹ K KŸ{ÆO ùÇäºåO‡­û»ß}í´ÓNs‡~¸/®ÎÃÔ·›ÌíŒy¸ÃÔ1Ž€|WޏuŠŸóêŽËjÙX÷¯‹\Ö79>ç•¥ìs¾'®`•Dq1q)¨Ïš¼†náé‹ð˜Ê«00nqUÂõ©lpëÏä*Š#‰{pÙÄñîUõ%.Ågq•\†èû¸•�»wõzÍ5×dÆÅ…+ü î%9")$κÇå0}Ê:‚' ¯÷¤É¼ÏX Ñÿp;)PÙy-f|��ÓC7ظ$Ö£sÂï£çíâ–¸h®­ÊÆy„÷eÇ™0÷¸â…Ï„d3ÖåTøW6ïXܵHƒZ·hþ\û=F†y7u_ö»Å΋" qœ ‰u±Ávé*Äò�MöÕºüsÝö»7“¹Ž+é0 åå9f�£·Š¨)þ9tY�{vÜ´Gp0WW%ö´”çÈŠ[Öe}È?“GÖÀÏà.bÝAØ+ƒòxÞ‰g¿çÄ‘ŠÄSb_aï½÷Nö ô9WÖÅ–u9çdãî]‰1˜ýŽT){„|+Gt@yû¼#_Üõ㚟cÉDa™ÇžÊ¸¬?çœs|�‰À¹Ø¬ù•º¹¬qorÝ‘p:çí÷hÓײ|óî+¯¼’Ž^ø›}N=~0/`™²SFÂÁ‡@´ ÆhörØ_`ŽÅ­¶,DÉ)s=¬�bÇÒ)ÃÆâÖdÝëôUÅ+¼–m3±}-Ì3¼/ÓfÂðMÞs¬†(491€hK–¾Í1F†€!`Œ)Æš†Á¤^uQ…fU mgâ¢9›v‘­iaÙNþÒVŽj!�Fc–¥*.ì5®0wšdÇ5ÆR$Ô@ϲþíÈLàÞ_ËUdݨÞpOÞ�ªh�g¥U6~h¹¥uèv½òÊ+;²¬ƒ[G"5`Q©×”w²Âz×l”SÎ:,•jÕ6ÓÄ7-ä…)Î,gh, ­$LhirÄG$ÏÃÜwë·<è ƒ’W±ßOš..ȲWÀMÿa"Æ©UVYÅ·-#Ïzm9‹{ˆ!ýMû¸ÖK’:TGƒ¼®…O�òGš’ïÅËÓUºa»å¾á^:©¶ß¢”’ÌÉE.ëÃñ”¹ ïib�¯óÜÚk¯�~�ù›#ð²¦^Õ({èÒ]#Ách½Ø‡È"¼=jQ^È ÒöLQ’ðX­æ‘zEàˆ²ðèJÂw³�Ç ýŠramœ¦nò!îM­[DH�ÔO¤U©,§ýJ¿I™ë +¬PXœ*e�ÿ!oö:EÁ4á�±Še�ÞüºQØëŒ3¤¯ý£ÈB¾ Üš®;e/ÛW ›¦²m&¦¯¥óÔßUÚŒÆiêÊž¯(µ”¯§âÆžoÌQžF†€!`Œ5Ìeýû¢!s�'h+ª² %˜üò(<Ï&-HT�<i…y6ò(fc*Ü �2 YèäQ¸Qœ'€Õ¸Ê –Y°jœðZ6¾2c0-,ÐpƒÖíO¬Ð¬ü}Ü:©ù€ï ·ÃE›à,zqWXDUÛLß\ËÌ%�(»Ö‡2*…[œ—˜E0ó— ¥Øo.–zIº¢‰ªÉ¶]?4o¸ÃH'N=õÔÄõ Ä"z±uˆÅ=�¸)Í¢³nÙË,XÓy×ÝPL§Sö÷c�=–´§²ã²¦ÓW_{íµ$_úké¹ÔiA.ã´0u_”O^þÿ¿½3yµ¤hÚxú:Ïó<­D\ôBPì…‹ýÚ… à€("¸QTDPÁ¡p¡.ñ[8€qÑ(Ò "‚ÓÆa#¨-­‚‚+7ýÆ/_¢È“·²NUe�{Ï9ýÜ{jÈÊáÉ)2"2rŸÛn˜¦ìŸáü×)᪌8§{]¨f|.aÐWé±.ãs ‡yÏés%·�ôSŽ�ð>ÙGˆœ¦g^œšoç¹iµÝ]û8ûÔÓbª%ïCŒÙó R7ŸÀßßÜ5ö™×jÇ÷Ú9=UòaHÓF®�§<]4”‡-ÅÕwœÉ¿O‹VÈ×âîyßÊu‹ça~û¶™Úy‘#š|<µ«áIhʾ:–Û^}Þ+›É�®U”õ•OLÉ?§ ù>m7é¯4ô�#¬º¨¯B>埻”í~¤I—¡-?¢ ¥?aô�Ë¤ØØà}­Ä'™wƒ&Liþò´9ZÍ�"/¹ä’⦔ynçÎ�þyó;O!ïrÄmÛ¶íÛ»woó�_ÌSȧ¸OµnÁÍ¿cÉñdChÇцCÛ+ƪ]44ïà‡’ßËë¿2n8þ]mÚóS;ÎO>p*ܦ,»cÀï¼¾š†åºo›©íkyº~?´ÍøwSüÒg½Í™Ò}¬ÃDB@�uF@ ù5«ÝÇ{¬™ÈºË¥b›ëÇø= a‰Ø!ä“e®TwFzYò殪TŒ™çæ"¶) ¾¹Ò†Åg\uQßk)޾ߧŒ[zNW)ÞÒóTPзR\cŸ#ì�äÌ0ocþ˹k]4T˜9E�»B¾«=˜ Ц,©!låýÈË #êåO•˜µuιsoIðŠw³¬ yÇÉë�üâÁcQT‹{š¯ß~û-Zý:Æü¢,C}¬y¼cŠy<}ïSãs…×÷³®¦¯â©Aø²Ã´D¾Ë;WÈã)Æ…Kœ«·?B„´}r�ÑWj8Â<èBÁy‚¡U®f|.•³¯ÒcÝÆçóžÓþ8A<Êsæxsã¸/5dúâ‹/æE3óÞŽ�iÚté,x>À›�� ´{;ªi&ž±7˜¼O!L+;Þ<Þ`˜/ö7ê3¯ÕŽïµsú”J¾¡f— L'Îç9xã�7š0Xצ´ª y„º^î‡~8-ÒÌõöíÛc8,šç‘/*ºÜ$wÅÑ÷{;£©É»�»Õeç»±‚‚ÎH+^âÞíþûïoÊÆ" kû fNQç©"¸´�NÅé.ÿT°UZ§ zŒmœjë<íÃ%6®€½O,»B‹uÏë¼]�Žá˜ßZÜ=M„T(‡=Ïvcs�²i(¹€¢Ë¥[çX�bÏ�{j Ul×öU·q}]"Ï[®�'<Šfê AÄþDìˆñ6ê¿ô�”Ò1ꪫ®J_­ôuÍø\*x_¥Çº�Ï%<Æ>O•Ú´Ñ!„;DoË¥q>ƒ7î‘G’DgXÜ�z¼?ÿüskXøjÓ6ÿðíáÖý¡c0o^«ßkçô)•|CyØRý÷gòï7S!_‹»ç}ÙÖ-ž¯UûíÛfjçÅt]ñî»ï‚©–œ²¯ŽåŸÇ¶×ZÙLtªÈãM±¯|‚t§âŸWM!ÿË/¿4s}—10.Áá ˜ïRA^gm÷v^u“FÞŸØÄà¼FÉðo‰&•1äiaéuNøÜ }>m[wŸ_—ï¤éôùŽ0(��¦^·¤™ðvÓ—–��›÷RSc”>wÒ¶0fœ!}ùÀRž§z>´ìyº]}ÕÃm3)¾}û ἯyºéïÔm&�{ÞuºqcÌÑóâ×{! „À2" …ü2ÖJEžXìqæ.LÌO?ý4(6,ŸÔKÌSê??Ïe*…|zv6;)†Ð˜/ÖÖ^î’ý»ï¾kÂ\}õÕs³ÄùpÄÉîÁ1çêöý>µÿ±4·±i ù.UzSÖ m3SÔyš·|1L>Ù½åÖÄì,M)l•/¿ürÓæR7iµužžÅ˜žMŸæ/µæíRÈûí·±Œ”ÓÿJÆÚò7Þxcóž¶¶U´}ÍÝÒVÚvD°ƒÂû^—1 ÇK\z饱�ÓÖùÒ6óšñ¹”×¾J�)ÇçR^ú>¿ýöÛ›q�ñ}(?Ö7�¾áàÃ|¼ëÇåñ~úé§M{ݱcGþ:º}½òÊ+›0]gÄnøxÎŒüüMv³ äÎ w®î‘ã /Ü7f¼Yµ¾–cà÷^Ïóò5ã{íœ>¥’o(ë8å¿}Ç™ü»ÍTÈ×âîy_†u˲�‘ŽÍ�ß¾m¦v^Ä%°ó ¬1†P-8e_Ë?�m¯µ²™gÎ`÷zxê©§ò×sïûÊ'ˆh*þyÕòÌïaάÿ‘äÄ3Žz" Ç ¥k®¹¦©GúVJ¸Þ÷:Ʀ�žþù& ÞˆJ”U9ïF”õ¬ J~„ yÃ;áØ}ïø¼þúëÅo –^.øQžåS­[À#=ª²ï.ï)ø¸R] y>&ï]ñwÉÛ¾«gˆ³/Ø–þ”φ–=O»«¯vL›©íky¹ŸºÍ´¥QzÆŽxïÛ©‘M)¼ž ! Ö)äס³2¤®™XK–pLþùÎΙòÉðÚk¯Ý 0ܳgOtÙD„…ÿüóÏLêS)äQèy>nºé¦™4æÝŒYð²pâŒNO¡mNé™:,æBD�/_,Ìû–÷}¿G™æy‡qeA‰°¾fN�Á­-ž¡ÏpÜežZy³k¾DCÛÌuž*ä¹Îìì>÷6À™¸)¥‚-ÂäÆ-Ô+gtñ—Ûßÿ}óym�ƒ•îð›�XöŸwÞyMÞ»òéY/+mi3‰vái/R!_‹;˜ìÞ½»Y`bˆámëkWÄà�#¯“.<Ç,XÙõé˜ 5èÊK×»W^y¥Ióºë®k0ù7Ÿ}öÙÌyˆµ}õÙgŸmÒ}úé§óäöÝ{ï½Íû6…|ê*�y?O#D軨ö¿}-ÝÑ–|aH‚;mÚm·Ë­6ç[z{ó_êyY©f|.•©¯ÒcÊñ¹”—¾ÏS/ÔBñES©Á+ D÷öÃñI)q$L—‘ãwê6ßöï¿ÿî»þúë›øÀÍ;š(M—±.TNŸsM™à<ïmÆ~øasün]s´yœ¥ûUëk¥rô�×jÆ÷Ú9}J%ßP¶„[ßq&ÿ~3òµ¸{Þ·jÝâéó»cdšþ×}ÛLí¼H÷óÐ óu�—…p9PËNÙWÇòÏcÛk­lÆqõ_d?>uíÞöðùo_ùßMÅ?¯šBž²§ý EsN©ÒÞ#%ìôƒ}ðÁÍZ’õz.�ã[ ÿ¨gøtø›”ƒÓÝèŸþyúzæ:UF¶•c&ðœd�ÞörlΧñuªl/mv™jÝ‚ÂÓóʸՇœŠ�ëƒEW˜1y'¾ÿýæ›o62ŠÒÆ¥ú(˜‹ó`»ÖâsþÑìüî` ×øÌ„ŸÁ¬ÿÃé§Ÿì ªpÇwÛußq}ë­·Ækÿgg cÂa‡L0ê�›_ÛÝì,´xo º`L~ó.¿0¥T0—žá€fIËtüñÇÇ`GuTÌSþ ÷¶( fq_™’4<ôÐCmÁ6<³oSžc�=6Ø9®ÁvñSŒEœÌ‚7~sÜqÇcžÂ‘G¹!Žô8€D~Í:2ÆGyˆß®ið ×C¾ÿä“O‚ xc‡~x¬3[´„3Î8#æÜ)Ÿ-þ‚¹fvFцôÆâ¶!¢�lxxæ™gÂW\ÌEQ°…e8âˆ#bû1�{|gLr¬o;ï,¶‡RCÛLm�›ëÜðñÇ7Ù1aÄžvjŠ×pç�wŽÇ§]ÞvÛmáÜsÏ ‡rH|vÎ9çÄ<Æ›‰þ™0#–ß (bŒÌI¶ó'ÎQŒ‹¶ ¶K#ÎOŒ±Œ_N5}•¹Œè‹ÿùÏ‚…˜ÛLyÇvpw"MÆ™œÒ¾~ñŇ»ï¾;Øù‡#[DÆùÑU�~ ¶f°–GQ}¿}Í” qL+ˆ¹˜yÕÎØO>ùd0c³øÜŽ]Œå%2Ó`ÂÁ™×ÌG¶ëzæÙ²ÜÔŽÏðRô÷”^zé¥`F)ñm…þæÏäü ϦŸ=þ±¿ðŽ&lj>7åS°#VšûE\À[2ÎÑGML�û|‹ÏKŒYÌ©ŒN¯½öZ0�/‘ÿcNb>;묳mÏvš‡_|10W@|p0ƒ¹`g‚úçÁŒ.믾ÚÜ3�´��Àè3c$sc;s%cÛÙgŸóg†�º7{ü”8ÍÕd÷<.x]3¬ŒcÏèOv®ª¿Þð ÿÚF«Ö×(CͼV;¾×ÌéÌeÔÄœÀø˜ëSJŶ/ÞECyØÚq&Í ãñ]wÝÑ—àE»¨6íÜ=_[µnñôùÝŠ12MèuM½Õ΋䕾àkÆaøPúЙgž×>¦ˆ¦¨ vE\—¤å«á§ì«cùç±í•:«‘ͤrÍšÚŽe‰ó"÷¶ë8˜‘l8ᄸ�ò ä%"Ÿ Ž)øgd9¦h�Ybì`m³¯Ë|ídJÆÀø±v6夿Š|ÊÓšq{`L§þX[±Þ÷<0¼÷Þ{q-ºbícGÔ4q±Î0o7Q.ÂsÖdÔ‰mŒ‰ò;¢2˜R=†'¦üo¾õ æ$3´Š·Ô±í:�rÊž¶ƒ9¾c¬÷2ù·þ OÃ{ø0øT3Ê©ZßïÚµ+˜qoŒþ–[niæOoÞ/ý~BžÉZ:§©Ö-�>úh䉿�laJ>./ÓÐû¡y'~Úë;䉴¿“N:)À³ÐN�;±f¦Ï£¡ãL 8//óÞ×”½¦¯.²Í íkcÚÌ<\‡¼G¿ð¦¿€l3^°ÍñZÿ„€대òkZ»¶›6 †PptQ®�', Æ›o¾yƒÒ'�Á:‹‡\)=¥Bž�í(J“m®T¦ÌaóÂ.j¼v.\0«ã4º™kQ0,%åäL`»I¡é»mÛ¶Ee\ú¬ízÈ÷0È(¶Qzu‹CÛ9�Å-�gè=J”Ï)±peñç„Ð…4F]4´Í°H®©ó´~X(»LžÇn¸!* Òç©` ¡”+¼Ò0\³ ¢­Û.ùüU¨©sÙvæs£ È#ǰÁ>´ì y&,ˆ Êd»Wâõ¢þ�Á�~IÞ6B¶Û#ŽiY¼Ò¦6A(—h;)¡$²3¾ÒG�×v&}°ÝÂ�„ % C¢Sa~ýõ×ΨQЧ ùÚ¾Š¢ E<ñäDÿ{0))äY¬£lq…q0.µÅ·N yʉàÐ\´Ç(”£àÛ% e¼A ˜ãµϥϗáºv|ÆHÃÜ•ö. B\bNS�Ïߨ߭P6aôÎ;ﳌ2ú…^§�vÚLÊŒ™óˆ~ g¤f‚Ú‘ �€zæEá&W  �OLJ¶Ï0BHß‘’y6 æ8}ÔyÝelºj}�‚ÖÎkµãû˜9�|O©ä#¾¡°ožÚÂÕ”½¦¯.²Í ékcÛL–cŸ¥XØÑqsÐØ¸ô�B`U�B~UjjD>ÙEùÀ„Ý»wo`êQ¶ÁÔÂüœzê©bgñÄvvº¦„â¥V¾¾“2}ÏjgiÇÎ(^r"ÞË.»,>nÛaŸ‡gÁb€Ý’XNú‚¦Ëškc„,ÜÙ•ŽEp_â;S+*¶]é߈³k-µ~öw¥_¬—Q’¿ÿþûq÷§/|Ù=ÕG©6ô{ð‚YÆ;A®(b×9–‡v>j«¢ ·Rùûæzæõœ˜3v÷¥.ÞvÕúežb^«߇Îéä;õ΃Ò%ãx1—Ñ.ëæl~;Å8CškÖ„áÁ¯•v|3'3÷³ÎJ‰u*k ìr‚¯ÆK uƒÁpN¬]H/÷Ô“‡£ÍaHÒ5áð†7ŠÔø9ÿ¾Äe�}<§äßç÷(ÊÝ“LŸ]çù÷ìÌd ì�o“Eú75ë¾ukaÖÄóhJ>n^Z]ïÇä�øà]iOà›¼‹Kw,·ø§aÛ®ûŽ3Sð�mé÷yVSöš¾ºÈ63¤¯�m3}°í&5º²ã'7xßì� ! V )äW©¶*òŠ’†…6náPð  �G(Áq ÅB : Y— Ïyñ­Ê{?,|±¨Çzø‚ .(]W…X€á÷®ÇsL\l¥î¨—±(SÙ­»wïÞh|qÊ)§Dw³¸œÝ Sç©BAD»AqÞ´›’Â)lùniê Q°À�Ýñ}©¦ÎQü t@`Â.ÖE(û–cl8îâŸüãÅGn¤ í±ñ—¾«Á½çþòœ>‡€ A)s.™gº,`3¦¯:¦sg8–…´Ø‚`gBmò�P#Æ)Ƭu'xÆ(„�ŒQ¹ÑD©üxAI]Úc¨Æñ ËJS�Ï5å\‡ñyhù1^„÷„w¥¿cp… ø>DÿÄp^â�?þˆý›þÉœ|ôÑG÷‰btÒf§ †yž6é2ÁKn­Z_›“)ÆwÍéSÖHÿ¸„{¬¶*ä"æEæ7x)\÷âe‡cJrï'må­áÛâ[¥g«,›ÙŸùg QÀ±Ægg;kž’ŒÀÛ#uÍ: ~/|Èà…P¢ÏûÖãà—5ý Ùý‹ôWq­Ÿ–©ïõØuKßø×-|7†Rà†Ìþ»ÍvÝÊMyjÊ>U_]G\KeBþ‰¬š?÷؈ c$ÚžH!°îH!¿î5¬ò !°0Úò}klõýVá6"€†sé°˜OiQ®×Ó4t-„@7¾«…P*ù™ÊÝ_mÝ[�Ï[‡½R®C`ÕúZ]iõµ›…€æÅÍBZé! „€XoðÄ’zÁØO xã ! ö¤�ßjYeB`!H!¿X«"ÅÈž={O ¸ì³Û¦*Ñ5þ˜#?p<–8'”�è¢ý�¿þú+à’�mçw�S¸ HIñ° µ < E`ûÚÐ2*¼[ƒ€æÅ­Á]© ! „€X7Ø4ƒw$¼Ðâ!/�û‹7†u«K•G�qH!?7}%„€RÈ«¬;œãùÎ;ïŒ.&;¡qw'ÚصkWô^¸¹ûí·— )–¾Š”ÁV±¯µC�„€XB4/.a¥(KB@! „€B@¬Rȯ\•)ÃB@, RÈ/KM(‹Bå)gŽ%ŽÀêY´ÿ"À®Ý¯¿þ:žåÍyÚœ}¹ì$Åò×�ò׆À*öµ¶rè™ˇ€æÅå«åH! „€B@�ÕC@ ùÕ«3åX�%A`÷îÝá—_~ GydرcÇ \ýùçŸ�+ðíÛ·Ë­÷ ôX!°84>/[Å,„€«‡€æÅÕ«3åX! „€B@�åC@ ùå«åH! „€B@! „€B@! „€B@! Ö)ä× U! „€B@! „€B@! „€B@! „€X>¤�_¾:QŽ„€B@! „€B@! „€B@! „€B` �B~ *QEB@! „€B@! „€B@! „€B@�åC@ ùå«åH! „€B@! „€B@! „€B@! Ö)ä× U! „€B@! „€B@! „€B@! „€X>¤�_¾:QŽ„€B@! „€B@! „€B@! „€B` �B~ *QEB@! „€B@! „€B@! „€B@�åCà¿äº!KîD¿IEND®B`‚ipython-ipyparallel-14e3c43/docs/source/_static/basic.mp4000066400000000000000000002071521520071063500234370ustar00rootroot00000000000000 ftypisomisomiso2avc1mp41free0mdat®ÿÿªÜE齿ÙH·–,Ø Ù#îïx264 - core 163 r3060 5db6aa6 - H.264/MPEG-4 AVC codec - Copyleft 2003-2021 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=6 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=15 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00€6"eˆ„7ÿþöðþ6;˜ÐqÿðùþªŒ®K€1<ñüGÆðñÝhª}û![~YÇ`×F�ì¦ÎyV×ÙZ󪋙zësð<³×ÿ–åœmTRý�”ùyŒ{ò�–!z)ôà0 ^ nuÙ6ŸÆ‘ê²Ö¾#ê�lº:¾÷�]( Ÿ ºùJ• V?彆e³÷,¹N|¡°™hÛ R5PåíqÇ¢-… Â@ƆÓWLˆ¤¨fK•*)4Gý �M:•~ùE\vŠ7âwp²¸= ™³/]Û‹Ç/~ U¦ ‘?!_¿:1ÙÍ—fƒ‰šB°ÐÝÅíù�Çß /\Ú÷WyK�àÆ+,ÓBô&Î4êšÅÁ�©Ò½JMd›Ú¾ãð'í%Lx]Q�F# Lw$­;Öî¢l³°€‹³ë$@î�A ¾�MÐÁÍ+ƒÃà^ÓÇ,�Þ ·Wan±‹f-ÀÈ^@ƒäÇ—,6mZ,d+ByaÖw¯–ÛGÑ  }Ðf˜V“‚äý Ñ¥¦âá°8{þr$t,þ¬ÖÚõ=õiÞ�„Õ8mˆÇ†L6Bþ+ŠUÍýšð'vâ…!ÁU÷85k”ŸCò’*¬‚3{(ŽÉ~b z…wšÄ€‰ínÌrGd/ešÖ™BíTû„àñíf”�[ÊñõV* b ùó9N~SE{Å_§ºŠ}«§ æ‰à®L¾¬||�F[å’£CÒ (�Ãj·?P…Ð f¿JÕ'1áÍ#&3ËFÉD.Ñ,{P‘�\#€ñÇïs>\7€š‚°”äj#S‹J³ÄïyedKvn2Rè5Ì9âSÅÙÏO-Ž{O'—ׂÄÍ%#È ;±`Â@‡ÍÎ^È5¹¶ÕÓ ´ÛYSè”\ÍŒçŸ'q’þø-3ú(vÃ3iî¯ ÖžÉwË$´ ó°Vž¹œáË@Àþ"püŠåKYý¤š p7ì"hZ¨p±µY%Œ i”R£à\â86iF|JXăç–÷SÚéöDb¡ÒÉö=&Ã3ÄT$–”õiw][|�Ì›h$¼’ØõÚUÈEEAåbŽ"�+/hk$MâËÌi%6‡“8_̼M�hIzçh`}ÈÉ¡A>çÄ—9‹½î-éèù?ÔâHCÁ}Š_–vfæár¶ì5ôxÁ“Va½ÔÒ¦)¿¼Cýs¶2Ä9¸iUXÕ{¹T'õÃÚ¼Cm!æ6¹Ç3³ØýøûÑ.’Iì˜ @™�­iQvþãüß(§#¨‰ Ù(äžå¼Z6dH7ø$Їù®ÿ~¦¤<Õãþ(Ÿ&[^Çu2ÂÕ sø«A9š”×�v�¤ÛÍ wë]>L_IzPuÔ›!õ `P�©-©’ÈÉw^<°½=®|c }u ‰Û˜õŸŽ\Ÿ5™ìÓŒ{Sþu±˜~û®Ç þ…ˆMto>y¬µ¹ƒ¥~¥©ûDdkͳ¤„¹T‘B±ÉöL Îh0�[ƒûœáúŠÿ_mÅJà­ù6i”’¦ü¸Ûù>¢dt÷8yg:аsè­æ‚»£ [Xšœ=ü³®Tea÷6ªÁ@%YíiíçÄœ–T n (¼ñ^ÇzÊò¾/SŽÁÔܵ² ©k–±«dØ3 Æ**P£[ïlwÜ’Úç§20{NÞ½Žylò÷)9g‰ÀEÕõá™{ÏUZ}—äø¸¶ò¸s/:î­S#7ÓzÀ/´;½ïËf“Ã)„§ãþšä/Ú.Öâš²†vê·µ0 T�~ô]Œ÷Š«ksaF>Û ž#©íXíðHÑÁ*õ?ÔrÔ�–ô éÙ 4`¢»³þ5u©�ùÌé`"'�tÒ»& 7sž¶‰±ìºüù°fÿeLó¤ÙèvDìmf” b€ì3©–‚0#y$´›ÿ8•¬†ò›âˆ1©rF ÞK+@IÝ2Û:Ê#üë—£yÆ„ü‡Ãè<#{ÅÍŸx´‹’ ÷þ‡Åoª³ã>ÚÓ7‡Ç$þ)ýêeþ:qW—Ô,øqü†~Ž6øâAï ü×Q…H“Y¨£ÑíêL =÷HoÌ·a"’0„ qèæ¨¤�>»Hnð MH½Í¾ÊÔÎÊ4oüÿ}JÉbß(±Í ±ç-ÆhX†MxôÉ5ò‘þÚéYD¡Ô.'}lHÔùÿ aQ¾ÔB¹z"Ã9[˜ÿóa+—�“È© ÖÂ�¾¡{ qIIÞs°Œ¶‘=�¡váÙ{ŒÁ2eýÖ–Å5w€�‡X$/ÿ�áµçïcäLOl¡ ð{ft ZÊP¶­�>$%À•n¹¨¾ïxm`™r; ±s ùkéå›â]+mI-{]V˜õì8eÃ*èö$ÛÑ1{Aø¦*Ø–Ÿ½BêÎ8 æpìã±AÖSÍìÔ£ãþo”´hØ’×B;C¼,eQ5-Пø,^HuT" �hëÂþÞ.?ºb¡ëTe%’ÝÓGŒî”‹Yi½'½²Q»:Ædü€8uv¬¢®ª_¡z\‹‹•Ù&:Å&øŠµË1x]ëXpþ“É,)À‘�çr¸ c‰=Þ2cs‘Ó�@½„»™(´qÒvÌÏÜÕµ…ýös*[’•’Ló²6›Œ¿O„./õ>ÙâýÝûú‘cIø&¹³-káé�§+ˆ«•}ƒ³1äÖòçpŽùŒ¼,µ îíÝ÷<3|Èi>h©CþDæ·M}\ ˜(³¨ ”t�}rîd7=?ˆ`kvÝEj�\'ÆÇŽÁ@ØÖ]Í]Ï0ë¢^Sê¨ÓɲeOu ŒÃIÁ½-ËáócçÁßfè€$&òôIïÀéroyhúË�ÀÙ•ºk¡½F5ð½$›³$[ÊŸêÃG¦WSM$CeÍ 5®Ux ˜¬Ÿp•`ñÈû.·ŒÅw?â/ØôoÕ0NÍ#Yûö/Êp-:r™FÚ®°P¤ùIºr€µy'OýµWÂ3Ù˜uòùÅÕüÄü+C�8!lÇÉté—,lñ€¬…–”æM6,â“C#9SK1 Ðü@�Ž9Zõ¹)¯ · >L¸6µª¶µ?ü(Ï ó[yà1ìžíœØ ÎÜ´ú_† —T¯$,ó‚AlZàþ¬¬øÛYÞ»”sÐHh ¢äô¸¢üÍ•gMy¿`›~}f=OõhÅxX?C2DZ±÷й­CŒ™°Ï¾¿ô-,|-¤êàª^T6“¤YÖÖº®íì%Yswˆ9Y˜�á�Ëæ)\±Þ|ããÖüxôX¬xe(”êÆšõ•ü[|átiíï>´.GÆnCO’$}Ó�A° OLâwEèíøŸö笯ì„Ý{U6Üt1¥æ%IµŠÆYðY›Î/ÎVxÚÔß·=•¼Ã‹ü§FƒÙr˜2––ßÎtžÙ@DfНܨK4ôc­T¹Ô ªlM0Yðà¿”,Ž*NíŽ(¬ÊܺŸ²šóò#_9f± Gþl¢oìÒT—»Òø÷`[D›ÑÚÂáÜú£$Ÿ¡Ñí%wVsÉY²Ëßëà{±Õuà¢�ÎOòὂ½6U q0 J3Õ·« úÌ×ÈB¡»²Q�›7¸Ó�Eî¦b€Š„˜ä€O—ŠUî‡Ì0Ïÿ@¬ŽÿPÅ.Ãs?ï}‡' Ìí4·ìfÉ /¶{"0h à~j€©îÆ8F‘è½úz¿-I,"úxæ\E)}ﯯ(ëµÓ _öÒzŽÊñ'—Þ4­wy¦j{RÜ©aïqñú‘ @7æÙ€uo»º(ž*�ór؉¶dxÐI=� èáø¼à©Bûð"+þLø}ÇWeÂÉQ�Æpñé‘{2Ød5þóo»¨¤Æ_¦Ãk‡l ¬\±†BëiUcz”²…´Tê®V0±-iTlè—ÿa#ÉŒ°³Ó-‡…)Õ}÷3M¬cmÓ% ³V²1é!^µ/^æURq …ªMÇÐ*3 õ*I6k ‡›²E‡»Ýîp ÜbY’ˆn" /1œ©%,ö ý›Î’�ß§ÑàR»ì]¸¸8'ðÒ9'g |+CbtžpZSe\€Ù›*Šò mÎ�s~:JWh,ÚëžaÁÆ|>Œs£jÅ,<ªãSb]¼1lº0ï HÞŠ6O™ž±•97N×¢’ï,ª’Nowv=^²ó3=JT(K 4râÑ1¤¾ô—@æPׂÌë¥\"ÄitW<j]šÁö#ÉBló!åªgňNߕР®¨Æ?t£Þ!Z¨ëðzŽŸêv(öòÍ®”¯l– �DÏ”Uúƨ¿è_ŠÏ'Àè Cäȹԇj)ŸÝ'ãôkêOüƒ·�Î?J8A”ut|ö‹^žUÜ(Õd§@N§iÐ ÝÅ­+2Ÿ÷ e¯m0Hn·�Šð½/Ð éN±n 騎c¥¶¨5 €ðÙ&–¡ƒ�q£ë!h,+1)E¸à‚¬u³ûÕåŒ~Gk¡%¿)Ý󈟳Gr£}B ¨O¼j‹ 0º¦éòñ Ž�ÓVorq!g@Ä]qg't‡Ìã5Ìǃ2› 5ZÖö€eðåñµŒwí÷“P7í (¡0³µ j’'Ö]{ƒ(Žýfïvhä¸ÖC-7‡aÇ‚å+%˜j{¦MkêB7̶Šf´QãšèoõÚû¾ñŽÐÚ,¾ˆß¦Á•©€±˜sü´ißcW„Xb€�Å­´.æ²Ü˜èç+Õh3 ½ëÂl&”8Ÿÿñˆ«/Ð-2£‡’PÀïBÔ�“œûž® YÇ›?5‰>‡ÝvÄlÙrXßÜ9W¢ž®æNƒÌ£Ò»œÅñ‹hFÉ| ™ëÖ̳¼b]ÑÚUÉìg»©9˜…º¢wz°S8nõN—s¦`,õ@D“8—“;½ÍÇ<ÿ_͹Æ�À|XCŠè¯×Ë‚=@É™ìW®+±Ü¨9œÅ}@Z܃„ý8ć+^ØA¤Ìã¹a˜Ý‘+ôNï3 (¹–±Ã6ü0Œ…S@†‘F7¦3²­LáÉÁ§jJ3dò7ßûEÖ®žôjG>m¡“�a_S–ú(eç1t~QÔÂ)›ì„]­´)�íûjÐYd´Õ‚‹V7Ó¼÷ƒÅ:ñQ&Z$ȃTU˹JqhÓ”LÑåØ¿þ�·² Qm^hÆŽëcL^ÙÆß¯¡j˜:5æ“#�°¶ øÉ‘ E=#D},.Åå¶Ïq7ž‚ºT†ºr±ØW¶ÿ…ϧ¾×€5èÖŽ+èt|l ^ûb»pZ21¿�cÄP�ÿÉö%=ÇG/øðȆU{¤C0«ªïðëØ�„­[DErSÔ‘oyâ¶x_ˆ&òušGI³ìŸÏ97]1ZÙ~TŽÐ莌H JŠSp³03ÊíŠùzu‡¶ðL3ÕÝÑST‚t!eïúŠg §G ÙœÚþ‡[=OÎuq°Jro|ѧõí�¤÷ló^O¬'RWÍS¨dSœëpþÈŽüZó@ƒ#Ä Èéhtƒ#åľ\Ókœ¯?Ÿ!ÔŸR< �R·¨³ŒG³Z`ÕÕíÞO_Å>Mè&’æ5O€”]_Lå¢þBrÞ’¤™ÿtÖò]è IÍò×S~~ËÎKd‚BÏ[E#y¶ÈOçÆÔ¯Ô²|µRYZ]„ˆá7‘B1Ã…ÿ²ƪ X¢á*ý­Jr•½0ךXD­|½lèì|ôs1"ëF¿±îFÊ¡ÉY˜Ô^Ñt‰/riÙá½åG�¼ü>C\âוüÇã*¸±ûÛ®u±Ý‰'kýx;Ãhhžnœ¬·ÖÜ—~ksvUœHKPBAÞ+)­‡Ž °ëláYçWk}“ì_&Î;p¤ ”c ¡mÆn‚*‡ ³öDó2Z�ö‰³j%lN£#*c‰Mîø!ŽI¿JHª¿ ¡tà‚¬@}8à81J¤ž3Oõ Úf­œÒʪ¦çoÃâJ/î Gú§åcŠlŠr&ç¦l†¡œé/5�TÐøV›3eŠä¶×UÞÌ®es’çNrrÒ×áý׳/G¾A)~wŠ–}W‚¬ÓÓd‡¨¿FŠð| 2-,˜š÷d€xÉéÇ~"¤sØté›OÇB�Û�fÕ'0ËÜ‹•-…–uÏëÚ“æ9e9eœqYûœ× ÒÆ›%ÙÏ+=­ý=mÍ>ßQ¹wY‰"¥]ò¤V³àãí”F�J�mýÈÅ*`àØ]¹¦ÈeÁù~Ëþ³Éæ˜9,>x�ÙÓ~‰[ð4r‰Ù­Ë†"Ý®mÞˆaà ô3?†MËT2K¶»·{€$Í~‡ß•Ö ŠÇm�œNª¡ÀÜ×û{î»ÉD¸Cš=û* Š[ŽF¶.š¢ÝûÚÀ«2%…£!*D8A·"›ÉŠ !#Õ”’÷.ÿwíÊÒíq쥭 ì¤7¾Í§F¾Y¬…ļ:ÞÌ' yº¿“{ N _Çlìô,x”:#c¼#àD¹µ­T{b*–\=†�~ŠÞ~D¦L<ç‹èˇ$Öpôçœó³ñ‚9K‚'Æõ]"í�¥zE0ø@w¨LN 7tžxZì4ÌÒé˜ã#wÇk?­BS,I>c1Ö�Áä}&WÖÔj‘¦•¨*ÆÓ&õU~yíŒ4U¤Ý�Ò¢ÆtΚNDwœÛåiÜYb†Ié-VU�êWmIÎ"Âøo€Ží%×Ë5AË—ùDÅf.£Ë>&‡ƒ+a˜\~Ñ@)>*`5yé°w±pJwV™9;YÁ+O”A[7 óÈ„)b ·²ƒ>$ôr`¹íÍ4R u:°‹ÊÕȵø“(lãÃèÀuOá–z•lå]ù‰B‹l\Èo{ªOÚýX×îª7’E€±¿ªd"H7àðü*bÇšd‰Š¿ûZÏ*>{¤‚¦H<= ¼��—E6vpOuËËAn/|zj7ÄVž£»n¹[–»Vqѱþ’ T ÊÃö©àßµ-K«�K|•,ÊÊOÂ'…+‘:étF2÷÷É)4 }/Ð膰õo±œôsRijŒ‡i1¯é*Êk¼ò÷·Ó÷*ÛÿËöÂE¾rÁœ.ñR|pL ¶%!ˉ”BeÌßPß—ßèGÅϱÊxžÝëÍ�S5%Ù8çkšÒ)’0�B±X.�o¦¡›x­»�a©ô°PaÝhÕ~èOø’pny“G ë˜Ç­XáÏé<ÿ«© ËBWX‚f ,§N‚Œ6;B™8'§ªÅd˜È».*ž|¯ÛÛðK€æ7¥}]ðÏk5”K×Ê}![î§QàöÖ~™ŒK“xS_á‡âqC&yoÔP”S.¾–F¹·|Œ¯€= �ô‹„*C‹›[õyF¤RÎ Õ éÒ€VEùe凜›Ù ~ esSîOð?­0É6D™“˜ÂÌfW?�°…ÊœþÀî[�ÏF÷igs3…ºa&+ŠÜØÊ�f8ü�Ȥ‰¹ØÂ+è\ ûÛŸl’ìP&¤BÍÅa�Ö ¸@í™õÜ=,�Ñ’*‚MB>ó×%ë‹° ¯9ŠþWò^´»žtE¡ÍB¬h ��ó ÍäÆëA*·Pïé¦Å—ÃÄ>B¬SzaÿŽê>,@‹xS¸ ¯eº$ŸŠta©|ÔÚæ^ùåK¤b€ \Ô•sÕÿkQ–fÑž-{‡ÿ"?Q“§/8åȹÔN�ÎY»N]׎¬>Ä0©wZ¦§­’À›ìBÍýŸ”L¦£¼ˆ€rM¥®8˜§ö˜Q¼ü?³å{:C/¼‚ldÅîh£ÉÉ’÷‰ß5/Sît>6g¦Um)Â`ki70¹L ê!îô5à¬ÊøÍ-—Ž#Z]¢­“õT K4ôg£-©A$œªM ïIý|0Mã4{Æ›æü€uïdd:�1ü9ÿ©Ðbb\ÞvçBzT—ލ¡ôA®hÑNºïüB7pÁ†°Âx†_´†€¤±8O2и¢òÜÕ¾F”£œ¼i?Yk‰IqÍ9&†Hµ,O�Ãn¹Û“—6ÌÌÉ­Û¤Ïm+Sa¼·QFCArÄ‘ÔìÝ£Gj®lHÝèÆ·nrHHfe«/çzï¹,µP“³#“‚ÎÕÚmòKÌB,ŽÂGÁl›‡-*°“b†çnÇ:í½²>¢«£yô±^Ø9ìž„L“ hoÔAû|ì² /HïÍÜŸ°Q�.ç=òà§÷–dñ|´¯�1H“9újhm6±ÔôÀUír¥êw÷ŽáOvð¶}l¢b™Æ"¨sâÝÙÂ1A0_ÒûBo´PT†ÙεÙ_@� G�ºÝKªßåðK9 &½9¡·of{�Kç¿ÛþÌ!æ³wˆÃäpŒ‰€�㧤¤.ÖÌ„Ô~ U£XñÅcP‚¡XÕ”Ÿ<šÀøï°bðÝX¥†|f‚¨'}¼RÕ¦dNz“–7�­V.¿¡ô`l» ®¨¶¦GFŸSŠƒôdÏ‹õÕœâP¤fLLqš»ëà¡Ò÷fܵa,L@pÙöškèû kÛçÿs¦{có‚>lÄÈð¢‘z.ï±[W%]•ƒF—’ægÍ�kâõQç�† ïÄ Z •&H!úŠ¡•>ªJÎI¸Xh3^ð)«azgªx “C”œ�7 0�uœ¥JO·5Ui¥º_áí�èØïQ½i¯À¸60Øp³Pá¶Ÿ¾´b¹2Š�%ÝDzÃx_ÔÿÆtz·yã#¶j\)I¦8úî³…ÃÆ‚aiš´�yZ%è§°pôX�Y\h�‡¤ëºñ|ƒ3Fƒ‚Œá•ÃJ«„I”2�½—B�æ?ê&oît@Œ×ž¡§céI¬âÊ“�éÜ€^>Å,Ý&# M—ŸôFÈ�‘3´@,*½@£ØÉ…‰fx îºj©®¬Ôß5) ”.9bðg�0Çä4�=-Pýý„¢6æ¸O¬z0Zuy4Ù0e‡xdì;™ûÅJ›3 \T�‰–†®”„|<[¼z×rM:)ið¯Fz ·¹´j^W`öF<ä‚ÓÉÛ¾N'�i(™Ž#>èï· ³+½Õì,7Xo(T<49MÞU9"\ GP3°­<[¡Ý'åÅÎÒ`R<án•Êa^’qsÄÄéí'�|§O3A(ööó±†ãs¶9H›ÆÎi¶ËÍÐÝV¥\Ò•#|ôð,ÌØ†�T�7ü¯’Ü1ÛqP×Îp•¶ÍYÈ©bæÂ*÷HN‹[‚˜�(q¸] l EjÛúñ(‘,š`qšcE®Ä¹Asb8–ƒb-®JGáq?†˜Ðy”8eê䯞ûÎS<‹ð%Ìóo†¼ðBùz‰àé¼>�²ëŸa×Ù+~»ˆ:³#)‡ô~]„’ØR†…Z½Þ®ê«.”UœÑ!b”ug½€ôf$‚G·SãÃèZ|ÉK‘kYçëÌè&Ÿš‡ð™­Æ]¦ßÇ3›¦Äž,[„ØåôfA좜³ªCúûñؼ—f)<)kÍÇr¯H B¿þÈZþë;ÄNÏ8»oò=Ø\ƒ|Þ ^÷Î+z‚%j,.d‡ñ(7éÌOOyœr·0×PÉžä«ñûÑ6í‘ÔnÁæ�ÍDû‰Q!äo€Ãƒ9"ÐÚÇR< ggÓ¶À½µLõ&‹øzà 0uphë¨×7ÖÞyÑG¤ðÎ2;¼ûàZcÇypy§Ï£ò}Ó×ùž�…n[ÒûÇ". ÔJǺþ¤ ”ó_çžû·ÿ½d8]š]|®Ö÷ÉÎ$h :íÐ2^~ {Öñ×€»Ð{íܓ<·œ¤øÈ3Z­Ð}N•IÛÈ3"Œ/*¾>3½Içd2-VÖ Ž øæléRò%ßEþäÄTKKêF BŸ1Z•~EI¢L°�á.€•…«íµ¢V áà¢&}Z½å∹í*jÙÄÕõÉÌ>¬>Uš¡·ÂSÈð9tÕj?I³ õЪµFÝ!Ü!qùø‚ölaðÂêA7ÖìÓŸ@7ôCg]F‰T¥ì¸÷›8ü« Ý&MÑÕ"Gâ¬j"-n•� ª¶¯)M¥ È¡$þsoI½ËÄðó¸{µ ;4C¯÷è”Dš�2¡7‰Úgö·hrT=ÕmÇŸÐz–&øª@qÉ 6^tB1†šCE2í1×ÃúïÇQÞé'È  ¹#'¢ÐIéC€°z­¶Ïõ�øé]ƒJÚ†UŽúO?È`ÿ“m #tÁ*˜ä­ R9TØ‹ûE‰ Ùï´�ÓYWNm(ïÀä#äMÖ~¨?k›ÑˆÒ^í~‡YÆ%m1ç^X_ƒøo ˜\‘0ÎÕ#NÔçÒ°Ô² R¡_½ `rîÆàö™¿6žäJ‘6/¶CÆ�EMÁ›ººŠ×n‘—îšd‡~¹jƒ½éC¶S¯sã�‘q%k¼~š%!—í£žÇ¾à.·à øÒ Im˜m+ÍÞ Ò®�ÌzÚ$Çï©ÿ­¨úÁ�­0˜½æ%@Õ·{ÆWËä�l+O›+8àRŽþ gÍ–Ákï(òYÝx¤¸ñì“�2ìVÕ¯0[ÿ#&á-Ï_j¢³†ÓáÑÛ¬“Á*õhiÄ}mÓ€&fÿ¨öX;<ƒuSô2”ªåªÈ7ó�]"A˜á_ë£Y=W–z¶jr¤ÝÉŠØ‘wSlü7Š×æú°kìÕ‰ÜáÅ~;Y˜¢NÂ9q�¾¼ewcw”`hnª†Â÷’%*=Ë`%oXì�àz¾qxžî?aìú¾�º4aÝ�Œ‡IË.nì¡ËA’”ÌsŠÀc'ª#ž°B%~zÑÅ+ó˜B5^bBï÷ÃG»é¹ÄÉØ:|³:qÅ9¿–$LÕMÚº@ßK¼Ü,ŽÙYËД/¡”�Õ]ó;%@««Îk;T2{ÉäsBFPÂçœlú–+ÁPž(`åüÞJò®ÏÅìFÀö7€”ÙA颢êˆÄ6’We�Þ•�³gµÏCñçOJ{k�½™·îð44Û¹­Üû“N,Ô2�:Öåm§–]ïǺ×>U¦I™<•?�ˆJ•ë”ÔåéîE[Ñ-“ç KÀÇD‘Ü…å�ýÿymUÁÐ'99ïH& ÿÈÃL €‰%Íø×2„ÊNàY뱸HèO¬Ç«i&gí;ú†™µ_ä«i,eéhÚE×L8…PXtE¸»Z�kSƒ]Ë÷ªÂsÏÝá7QùÙ‘çΙ/t&[|}<’æ(Ñé8Îsí�3“ÿr�_'óýMsAXI®› g4tƒ%–$oŠY5ÀUµbi’  *H©Í‰?"ŸAÚ¬¶¦Êʦ]RcXM§rhàübØwá¹Nø¡àô³·.“|eÃB¨>‘;æºËMô}c&ƒÔ˜‹f³“è•ø¥Öç»´%v <¥'á¿ UelÀüa¡ þ¦LƒEæ0uÿÝ1mÙÿÅ.`s¿ÜQ˜K…‘À3Lêâðµ2½êò´bh”դ婴éHÿ¾™›Gx³ €^ h½™`š"Ÿ9;>z?W!0‚ó+«¹7iÞ¾ÀmIØu z€p£D§¿²òÿ÷Éa¢^ÿ8K#œ�î”äf¼š±W]uý"80”“i PCWš2Æ�äyǪÄó{¥Y6s—¥;�.”]Ad½Îy> 85Ð:%»˜‹è·‡Âó8kÏ\N\åJ"&¿ûÂõ¯Þ$µË�´I,IY[éO”8Ié×Ë47h8g×x�3@Çù©Üd8Öº „¹ZG‚ÑçÍç,Ðß•¿Ú ÇŽgìùzzPœ¢v#bÎÚú…{?a�R�µU,.ѳ÷´ âÖ~®b ^ÂÔ@lŠø6>Úrùã´ú€C1ƒ $.d´�DKã€UÉ«¬-P9¹üª'ÈØùðò�*JYtwµˆ/ª75뢿}Ñ«Üè’ÛÜ“ê3BjpöÞ‚÷ü°€@Pê½÷b-kPK9¥Êf”•[)U*éï„Új±©´YõÊs0» ¡»Ê"N"s¨”¾ ¶ÐÖÔ‰dÙÛ7ê*'2�—ýô j÷äÄyMËxÝä{é8GyxáØïˆNC¬ ÍŸ8âÐ!嫨­aI¸x÷›8ãèÉÑB€:`ÑzþY�'&(zZö-ñDÛ›¬ñ2}‚&($ߢ¹;Á V;½þ .i:ÉÆˆÈ¯l—£5zÕ,C½uÅ Àîâ;Šç¨ ÓgsˆÅ`^íÅX*·dAO7rÓYÂè�SA½+3 PÇÖÿ¶ZB5z»Hn¦ª…€íK/ãd¡ÐÌ/È È~­:ÝÈ7Áß¶ @Ýú@ªôÇ[G¬Q<\#¼Áþæ¶%t¤N•ñ”–Ÿ #ÇèLÿæÁF?û¾ñ¼qðS7øVÍjM€âÃdâ´ê[ȉT>¶•èBáÌ^À…j@&é*w#(¦2�ø�Œ³Òå… S'TƒT‚c% 5‰HÀ¡¶¶ƒï¸_‘<,*¿hü¢æVVpµã¢@[…ĦëT¶Á�í"�¿2÷t^~rÅÄe¶‘ÁðøL²ö\âÈû®:=ËZÂ;)z€†WÌžÃCÓBVÑ‘�raõÅkó((s”Ç ­yZ8iwEéV¸nc�¶Ô¹U%?¥Õ'玦iMhvoëΊ¤Ž.—P~ô#JËFòM:€“YP_E$¬�wwd´PE0Â,cÆ‚*Š ~ b€I—�Ýö_?0ºdÛ¢cÁ¤ëöÇJmqª¤­²Hݶb– –C† BF°P|Œ´ä|Åݰ¾‚Šñh‘�øˆÿÎ}§ Ï&'’4 ÎdÊÝ*õÔ-¨ø©ëÂr$³C¬ÙÎÿ)ª* @ý‰ãP’Û¤_BN/ÿz,&pŒ¥[ö¶%Òñãé¿1«‡ÓÚ0Z8 lV²dÛ{Àt‹G$IÚ\@Ëúâ‡Ã‚ùúdö½ye‹ŽÊLÌ’P C…wÚ-_fcƒ$�šg·ˆ¸“fÇR÷m°ü#kyÿ8Ì YÙ=­¿Ä b—îe&äx\µ3odp’*M¿®¾•ÖbZdL?íÝœIF9Q%;�лBÏ[ÔÿyÀÀ|‘�#ÞÑû.¬·®Ül,ê�\›%•‚‘··],ß<¥ð�ì—ÂWGU—¢ þÈ–D`š[øý[³*‡™ôà‘UNÙ:»ëËo©Ý>‡+5™?¦ÔZmdÉ&À£Õɶb¦&êú ŒKr_ƒ 2<Ƽv¨ö pqñȺ':‡7-”'7ŒjÄ„ ^§¤þ t9'üË¡Æ5Áh¨' àJªE‘ÉÓ²hïçú�$ô9r\~jþ\RHY˜~4žJACïV… ’Ï=<õIª=¸ƒîf«&-o%ü¶ñAEèoï tÅ"N…;èØ†J7ü£¥‘ÓEÕës[¶½…þ&çµ]ftîé•¡ïO åÁÂÝæa‡S¡iÊ#üª+ÈÂ¥=[ç{$Âz¾á¾E÷XD°Û9JÀU>Ç}œ,fЀmŸ7ìãÚÑyu#É銋‡]ÜQc Jöç!qö×Íd¹Á‘ºNtPUU7Å€³X…Ü/àfV6ûÝEG•Ó<‹áv8öíPÂÇ*™ŸÅÕŽ´·î ˜ÛF-;.µl«ÒXøÖ Jû þî…pîàN““Úìlj_À+jŒ©ÃòòË%Ou|^åã-ÇO2ù׿Uà—,ÊÊ”ãÙ¢�¥Ö—£.=iÁéGnÆÐÅõ�$çËV„ôÞ¦âQgÕ©|಩~Òs ·æ‹d“c�fœôY¶,C%Y'oƒò¬3{‘ÕØr0­v×=và˜ˆÿöË�  P”¬¼¥ESÂê7�°—�ÔG%q,R ̶{a"¬éäIn—,€ {^H«bÖá (—l ì€Î+ƒ†Þ·ƒ»(ˆŽ>ø§+Bß •ü5}ÉG¿ýxO Í�`wþ)”#_yvêói¥á„(¨žsò×�áò^@öêLÙà@œ0©÷¼í¤`]XϾ(àãóD—¹¯Œ’IKèÞ,—½zÍâkd{@ÈÜ2žï‡œV¾ÐœÇÍÍÆ� ¿K–0?ÆhQSŠ´¾¦8ú¹ l¼ñ4�¨)/†(ÅÀŒ`³„1l Vu°3vשΥöŸG�Ó¤·©°6WðF#Øø 'ÏDŸy AyÞ=Uµ:·ŠÍ0Uê‹§KH¢æ(Œš_§\N§’½ºkÅ™x�2Òò‹î˜v]c5î Ô¸ÜÎÎèÑA!W¿nª12Ï`¸Ì(êhvºÖ%aDÙ7*1í¯àª¬ ”�^Ìr0Ü«~ðÅØF÷AÔY0´Y÷¢;ŽùØS&[¿{CúªÕbQØrðú•îqÌ|Tñ“v÷ç´B4óâ7ï„»Bï�æ?ô ´‰,…ù‘Ï«£ò,ø®j¦P“ #ÝÂfhB‚÷ï`öîéÒJ]¤oõañÛGœØl´À1À¾Ý¢ seA—,£O !:µOß.A. ½÷âï¾x¼Ÿ3nURžƒEs‡ÌDžÝ�‰Hê¥hŸ•ÏÓ°÷E€Å>—A#0àœ–RšDÝÖÅ&½CQ>÷h�tésÔÞ‚Y Êj3sãö"ÙòCxCÃV°gµëáó&€±{`|°ó�F­�=…ž—ÿËví‹!(:H);ã_¿(Ff'ÝB°äñh ¾e[ÚÚž¶V¢iƒ[±‰Ú›ú;îÃ$©>?D²H¾È…âk”g9öÂ@íF2. ð(ƒAš$lCþ§„Ϻ"WSfø,HʬËC¦´'D+•0Ž®^þàh-‰ûýÈ{kPKâ˜])gpÙ›_ÚAäÌŽ¿Q^�g:/‰ëNi†'�ž¶1›ž¯zÎß® ¾WÎÀþ�NŸ�¥üCè�fzÞ§R4êÕ¤FLQŽ@�¦‡íqàé$à¡¢R eÒ³N7Æ¿0¨ÐrÁ‡í °à/šV¼YÞ=ÓÂÄ;˜<žrãÔ|‘ƒh«°±A¨;íÃ*êF�5‰0ˆŸ€;Y ýYXïtöQ¢�&Ýá,ŸYe“+È|±cê!è’ÏåÉ �²Œ¶î9ùÚü›hÏFg‘ d_üÓü™Ô7Ëã,HÒ‡ƒšÆ7BÙl Á€5Üuî�&áeª¯ÏÀ�bhóáw�†àöÊ–Ð*6âlò``¨%±úÁÖ­V(fluÙK¬‡Üç½ý›vXÉÒ»Ùåm¿Û7Yó|wécªöx.២á|·ó„/?wQƒ;/ %7Vé@Ô|d«¹ï\y»8è3Ê%çì¨À†”Öû˵ÂÃFêÅ¢z;-tuâ é/!Ÿ°0Í%I¡Íb™˜6ªd§„ÒŠM³®üɪKy^ùK/¢”_~y ]†ê{[®Çjp>�wl€×µB~9~M‰.¥hÏŒQÈÜõ)F}Zi.ᘭ¢ÃÎBׯÊ”wfal(iõVgñ§4Ñ|™? àLÊÎEó9Ÿ_{iƒƒ n©œWý ÷•dº¥Î<•qêdºäURh`—¯¤ž|íëFa²Í¸ª*ª_nUðÖ6‘MHFg �äŽÖáuì {>žvŠ»óœ‰„¿ÔÙGX ‹%“mƒÂ×ÅLþËÆ"¾Aù¬I3–)î?Àî¡ô@çØ�ö} ¦Ž«–Y¸Î´—�u¸µ ÓÚT| Ôê{˰'Eøí¢õAYL´€HÍlàsˆ4ÕoŒJ+¢ñ¦Q,ŒþWþ\ hN³‡éþ:çŽz o·GâÍp �r|OÏòo<±DZÈ:ÕÌ&£Žœé“M‘-ܶØ)ŒË©Œf :Æìçu–VÜý:¨<=Ñ;kFgì€ñÐ`b£;ò�å` |¢[7 …s ž�IÞq)Ó?:@›SYšã׈ÙZB½O¬"óJm}"'ßî`ñúÑëa_2 —=6é"í?<<Ó\á넾•]Ñóû ˜µ¹tq6$I Z¤ÐöVö»”rqëç�øå©Í�…Øç oݨäXò#·§o¸sÕºè²SZæËæmføÖ|¥§�®_º.ŒHËowDS|¿EÕõž<ÀIß’cÈò£›E±Å²?aÄc™˜ì«2åað_-|£’œÝµŸê7t ™ÑJ¤ÿËV8ÆÄšɿ´ßû<¾Tp-âgtÊ�¬L•Hº±ÃT4�¹Õ%¸ÚE ÐD\@¼2 öV<]b¼rà¹L´šÒøÆ‹Ê­—âóîâ猦ðGu­’¹KºqØ­?À‰lÔ‘î-ª�Bˆ–QàýèÁ@•etÔd… ¢ ÒÔýÛXÙDxõ]°R¾ßb‚cÖ|0oiÖPÔÀ�§Š—Z{×[ÌÞ=]>Wg’£OÖF¬4@¤™%SèDYvUÅoȽÒyùÏ9hèMÂõFBˆè‚+º}âÇ!çümõ>$“H 'ã�Õé-áöo}¾"¢¹‰M¹‹]Ù¡,, _ÊMóø$vøiŠ <JâK·1—DuêiX#—‚˜V\óÀ®R*zb†öž’j©çþ¨{¬^hzO¾;¶(ZÇ� —ùIo7Ø•<Í{E‰Ž|Õ@�s;Zð¿’Ó#IÄ*"±¨å©*Tb+KD�Ü9ß‹ÈHBE–àé+âý~‰/j:-9�÷Cp? ;“–-=äÕ­y?j(ãU–pÎ,™G‚êR~´Œå² ~¾k0Xš^FËW.ÛÿÿÕèv°�n�',pã²ô ~ž?W`{رŽÖ…§Ñ#Ý!þÌù¶á‰L¿\zÒÍ,2Írò. ɤ¿¾FêÃ&««…Ç•µýãúm{_ ¶þús>«*‘ŸìhÑcôŒÏÈÊ\Ô°o ¢2þË%ž à9V�3ö™½lUPÃK\eš6îFŸ{Åò“+;hö˜ŸX€Ñk_ ×Ç#/œúòãNBÓåšå2†v™9'‘ìñ¿ƒ¾Ö”-`Üá …uTŸŠF§#M©Åá ÊY¼25•�mN©üÄ�l†ø ’Z z¦-ێ¦ž,ø¿éCµ1‚¼¶×Aêl‹ÿc¬«™CÀ2Z…:K c¶ÅÕö¯Z†zˆ�Ê¡ÉG*—0W"±i ·×ªxê=è¾âí$ˆ±”°¼ì5V辪ƒR/îy8üÉŽkößssw�ÎYF‚Ÿ‰tŠ6�p‚φ[Œ"Ÿ±évüÊADò°5@#-/˜UæÀ¬š¸%Ê/÷˜ÒZ߇}ðjílΑ ¨$} 9’�„°ß“ª&ÍúBü4´“Ï3�Ôi4Þ„+�#ÊE&ÿ‘;Ò |©½v¬®›Ðd€JéR:KSéRaŨÄy·Â8Åéò›5—(ºßÍUu¤g5|¹½F›¾•s†2ÑçÖÞGqOëßð1úVòÊŠ©¦€@óº—ÓYíE´RZƒßaߢø(¸iãËY\€Û?ŠE1݆uT{‘ƒa/ íÙNÏÙm‹¼–ß§² ¾ =¹IÆhy5|?@EÁœp‚?qV×.GµÏåN*uÔà›A!²Éö…‹ÛÒ0S5“�ú!¦"ˆ–•òNk^bE*D‡G¿¶´ÃÕ‡3Ã7†Ê–ŒQÃnƒzÅVóÝ cWïçÎsŒÛ„üÙ*ðÏ„4ÆI?ú Ú©‰a=ÈLÏrîD€vÿcš&ÔÎû'Îr!´K Ðm¸&Øãð—Œý­ Mh:ø¡oo>kQR‚+žm<ØáÍ à;›³_àÊOÎ2 ô1Éï©ìã¦yo¥šÔ’Žå?!ô;þGÝRt´9†1õ%Æ€3¢¶á8%@°2Ù7ß;¾Y {åö³5D�³…I Ln†w%îïÖ Ç„X֯ɡ­Ã¯ƒ…T³rnn’91!õÓ»� j ß'²O¬„{; ÀØ=Ê7[j¹ Û[ªá&os9½�[ýRl#݆vj¾Iû×<±Z2mŠ‹Pówa` ³v¶Õà«é�ÞåëÍ2sl³Ò¿�2HØrÓM³McKÍ2�¿8jœ½ï $Rî„ø¿¡mõgÈ*Û½l%ÐsŸ%€._ñZG ‹À®²fØÁ,Q ƒ~6žiß&¸oŒ"S=CùÎ<¤ªz7¸ 6w­Å°¿²æ(öšAcpæ»O†˜êpCÎÆö—˜×a+´”ç¥É¶êü…,E›G~ë 6ný¹ø•©Ñàs‚FOT>Þu`¨ l�‚Æâg#ªí§�h KÿÈÒA2Ä+ ¥ÍÃ�¹—ÄgAÁ—chë?[Ñ×ãÌQ¿–'‚–ââÞ}Uêäð5ñ¸Ê|™¦Q&•¯‚Yu–åñ”jRÒ商¾lúôê^XÖë \D /§‹>iÊXß~ 0EÑ)0ÑJ^MÕF’¾83v¿îêØì²6{—B�N¿>�ÛÒ¼e§Z)uÉó×iôt�²þÌ›¡âÔòYO*@•oÉ-²Ÿ…ä¯êÿ>„†¯3j­}‘˃™å»€Û…Ãòþ»Ù‡÷’¶øZÁÓU±µ3s8¸ õèxðB ûX kXTµ+=?SµKé5~òKÃ7v~¼ƒò¾ÇCç–¸l\c�s2j†ö´Uä>Œ�Âæß™eóOM;a‡:óðÐ䳋òJ£L®DhƒiöXl¤¬áë¬ÃS›w©ð“`¾D,—B+·÷â:¯ Ë*’A­»Å‹ËpZ“kFeÀŠ —$Úpd¡°:¸J·àÐá.y9𬸫pÑç’\}pi¥¾¿-hµ ­KÿC’¦»Ž‚ðœæ P·ìô‰>`úó†¸ªÍÆ-�û*¬ ‘9Ì¡êÒô¨ÀŸðn?‚"'pš JíÝ­"IÔ|¢�唚ëΫ7»xzXÙÅßÏÂd넟â^ÍRÏ |°ä¿ñ9¥�œeì#f@‚ʦurT¨¡NáßZ—9UÄËp·÷+4è‚?6t’Wü%&y�Qº]£7ðêäô›˜À(�žë†²½µwŒêdˆJwê”K^íB®Áð5èþáS %K«½h÷A=üßÑXºöÀÚÊöÙ„–a&âhaU—iÞ«Ë32¢ÕÁ4áÊVj©q½Ôথw}jR)’ 鉛#Ön Œ:¬pfÊßÿ^¡EøaÉ<õíV£Î°[åEð—M1”—ý²!”«­e S;IˆEU5�@Ú‰j8`ùªäT°Ôöë°ÁOÏ»œÚŽ»• ÓŒÄ4¨ÉÝ6¾i@ƒÄ¬P;i`®Âf­Þ+Ñ�v@'wUQ”ôbªë]\øQ }T�ø"…m„âŠÔïK‘el�–eÙírñ«z{ëáòH” ¤~ÖNßZ��àbÞäñî±Ã$Z½œ–fFŽ›VÀÙÛJ#F"õ¹UŸ[&_�Áã} ø™V'iÖKW™Qo#F :ß�£:;=-sEYú̈57Z›iäû?k-öãCpfð‚‚Ÿ—ñmö¡$À-\Ûò} ˆî4ïïŠA�RXº<»çnW8X½J{‹½5ÛÏÄHÉ7!'A{dU™©šÖ†ý¶ó�`hU¯6aã¥ÈcŒEÏ«ÛÅø =ð¦SÄÿéÚ\Ðê_@»ïÏ»¦uWªúCn ¨$Çï£f&侊ÎP¯@U*nWzÞÿ·¼¨$ëÆPÖ¬ÿLj … çÒª¡­þžýã>�“kÇ=°BCPŹWèa’.L�þ˜q§8ûG¯yÿ±2y½ãÞ¬ÿÀ»zNò³Ú‚û¦NÛô‹w¥¼_�¹Ôz1.Ü�†ƒüS�랦“?µ©yȵ€3‰²It~Ý]ÆQ3…,¢If†Ãjò—¿ÛßäBùi.<Vÿá Lgøy°Éù Rúgfèþ6Øé¢�ÁãY‰ÌéCÞŸ'ÚæØÅF“Ž,©º¼öÓôFUêcÆÒÓYâñ¢2MEÚ¼ùëüôÌS¨ù¿ 9:»š1&á{µÖ�1Aa´Mhà”mk“´ƒ\° kaOC{¯Tê)[0å§Õ ·“ÚåR^4=4íUoðÔÀ -!^=V³%ŸÏÿ:x0¶{�ú�u¹uJa M†–Ï+ñõ kBÖ+ÑÑÄSÌJ(*îH²†à'9ÁÜtÜjYQÃÁ_œ¼WîëP!g3µDAÆþçéý„ïØZ9ZÆôü2Á�¹wŠŠþïtö¬¹NݹyÁR�ÄÃ|Jk=—Å”³5˜•àâ­4íó¿B·¶€gågWi ;$ܤ®T=[~TEý üb§ý§ó;l¬¯w•§yͦ4Inå}½;eóþ„:S7âƒ0´4!ËI�¯Ž½îô°ÐÖN Œ¹ê¥äfÁhJ)Íú1„ùëwq• è›(%'#˜x ïgœ/Öf‚‡� >5ÓHEõ¹«É<1šìDñêÓˆ½YÛ3{c%ØÝíþEÕ-š¨2u\ê?‹$»r�~¹{þÝç!r<œÎŸ=|vвVcï2&êÏì™k$Ê\P’è·DŒf¦nÙŽþú_wm�¯O7ÞÝ"êÐàYï ñ¸äÂ3¬£ïø)ø#';e ò5¿+Æ ƒ£7¥Åƒ',¯\Ž®�bÎë³Å²0·h"no4mþìÊëm\ÌÖ)úJ ‹&_ ·û©ó:6g2B'o®Ö¸xãÞ:¤Ýw~ÙlדSГÙÿ ëÍŸÜ\]$Ý®0C\ìæ:|)ìÍ]AßÛs‘©Zà^e»8(˜°˜Q!MqÙÂ(ügdþÅ”{0®",PìœÌ¹cbg'ÎÛ%Î;´õÌ"W–±‹¼ÄÜóç×;±qÞŸâ-pË:ûÆI>FÖËôÝÔŶÒÀðTíV‰)<›'6òëA| ì.¢B;Ê*€‡µï¯ H/•Bæ�úFÂÃÆ]ÖÜ›îÆl+Ç»¸Qc�æ1vaýU*Ž…3«sQ¯Ä®ö»²cnœ.I"¥ež?Jb?$nßÈTít=®«>“Žé�GÃü  Ï(sètGÕ™»„.U("¯ËÖÿbÖƒšnƒ'j½ÍJ*¥0Åî Æ¥F;%D%Q(–öªù^ç¿úÁœqÖ ƒ£-§™$ø“xd³…â ñù¸8E‰lxì.·¸ø8÷y¬W lߪˆóÔåù³GCýúrRöO`&ÿm¼þ®žÐ·AW•P_K4Gìáç(]F¥>`Ñ3Ž:¼¢¾Þw�O½Øº³-(á�šçÿݦB¤±\£½M t]’Uk¬,öÌÐqÑᬥ(Ø}u½AeíRNCQpðߣ£?ÐÓÄJJnî�aðìþ7`ˆï™Á •¥‘¤Fg9‚€C“—j¡;‡~ºJ(A pq/Gíµég’hõWÀ`¢{øÐ“lNŸ1­²;y�IuÊR�\_ÁØuÇ“F¨-Ï.Žœ89!�Ü—ˆTØyNóÄV(!Ø^õ8 4¹êOBÇ�ú-ª‹Ã»Y‚©©Ð8GuµŸ6äqÚ¾¦A¶b VŽÏËô‡#:« ü:‰€:{"Zà÷¯[öú5¤ÿÿŒ¥rõKƒY sB1×fñ=…>¤?펟>|(Äÿqå`dæó§™ ƒó/9Û|«6bê�£ðx{CdC“¬ž]z@öe¤±¹Qâl>î(Û½T(¯‚¼®œð7AUÉ;[ÀȂЭº íÌ+'˜Õêó �gÈ¥ô§ß ›Ì¤Ù4øn+“Kýñmoä8ŽEìf< Ÿå—ÜØE‘q,€¦‚öO j- í¥uÏ^h)j"8×窄Ϙ°…¥{T¢4H•D�ð—3Ž(K&=äa걩¾’�^ °,Ýßñ¼ŽnPBpÛ«ás­i6YDh]E¬\¹�$(�kZ€¦�ƒ�Z9÷–#Ý×ö™D/z–KþšT˜u­Yk9+ÍncXΤ+Ï8!rõˆM|¥çÈóÇ\T³–Î�Pï©R{zîè ¡ïÄ]9$÷rÅb`ý ’O­ôTL�h€ÄØ ø\™»˜8.Öpèìȇk¨{�8¶Rw;¡ªôä}Ä%l[ik¹˜µq–ðDg’®[u¡rn“E½xÿ%Jè�\ŸÝfª«ì[Þ®*ù&H>«ÿž.Ô[¤'<{Ÿ”uÍæÚ‰“Ü™³Æ©˜pYtu8ö4x!,2¤Ó,?ïf2ËŸÖ²»§ôÜë•�·â/uØ- Ày¬¡æ?$­0o,&#hw Ò ¶ñÝmæ…1�ê8PyHh,ÆolQ×Ö~ ªaùžª-� ðµ¥kz¸EÜêö}ïÐp ü.³Pošª|lKÙ°yptËxã<ÒÇ©naÈ"óüMb§Žî‹L˜‡4À:\Ôqµ¿¿¯?sò³ÚçÆÎC|ú¾ˆ¬d íê "¸- úÂiŠc5±ëhÌ»¤×Ô=À#40>;î ÜÖÙ@NoÒÊáy—cŠºE×;í<ûAþ�aiwÒøá ¡{ÏF{Ͳ³).ºÄØÆ- Ÿžü,ÏeÂx-ÿcÚ‹þ%bgÔÿq4x¿ÁY‹×–TžiqÕ:Kÿ® .ß9š¨¤—A=¹ÍHŸ�lØIª+I‹(Þ�#’)0Xÿÿÿft©ÿW¤}0Ñ%S¿…ýÕÞòñ]Iï“Ú|<6†ë¨GvöŒ�°³ÕÂy·—Кcny9€Ü(¦ù4,œ’¨^-0˜ÅûÚSã]V‰ƒ¢Éæ Œ"¹Æß)­mÃÖFì@./éÞdµxÔµcÔcf©¸ Zw—jÓêùãS(ó¯³i>&Ñ î?¼P´•¯:·žtsºòï÷‹ìžÁ¼æHéâh#¼˜I èêˆá¹<µ~wÏ éÓµ™;3u¿m�÷ø³4?oæBÈj€x žâxvÚ©í±°$³Žl °ì@ÞGÒ¯™úî,Ó¿æÉ$û,XŸpa�+ÏÝÛЊß?»Q›‚5ñÞjFÂ$ã9•¤GŒÏ)€"ƒ$J=bÞÏà; „tÚtµ1&RÓL¼? ê[~ñÄDãžTþmoêpxB-޾â¦�`š3½Î‰ŠB­ìÉ�Ìn¢K%!«áɾ.Þ{Dƒ†•*?ŠñE6|Kkm] ðÜä§£e/ÿÛspykL•þNµN4¼Ãèt²¤1Äf 1[µe<, $ßE^¹Œ=²£.“Èß—Jà�P ÞÀžºžüŒÏÐpþGáU*F^p>:Õ…`‰ ýbë­—÷Ê ÈÄs�«RŒÐ ò²ô:팓¨ïÇͨã:Üy´ƒKÉØ¹ºpÑAß‹N혠ªb™ŸCÂ�pü0D©�€l@<“Aö Á˜š§zÈi3ØÝÐ�ïåðšó’:´âïÒ+< �1ÄFÊk¦Ž´w¯å7®×^w^ÑØ)¤ô…´—Ý\œÄ æàãEQ³ü‹‰u)„dN«Œv6"›ÈFœ»·È%ÃQredaœmª°Øô<º 8H_X±•Ó Ú>º”+kÊe,c*´å•-‘Ý y(c¿§¥ZRŽMƒ#æy§qô'ôæsùCMËd�¨‘.7V·]á¾rˆî¸Ïòÿ$ûbÖh•9Uj›³Ú^8îÓGV^šˆ°¼Õ¶ß¾ê�¥É@^{Z«¡™7©ÿ濚´ÇZ­Ø YLßíS�ê§žoÕÕõsGåÖFõœÆ9›O¶Þ7‡ °HRÖmOÓN6#„Ê™ ÍâNÙ%÷KÉ;\ÒËo‹8’rSO·¼oá%3€MΓ¸×cŒbÅàLÁ›‚ KŽÇPüJÝö­¿ù—Ä ‚O،Ųš¥þK^�v“±�H0“ú’\ê;rͶRkäþ½þif„J­ªˆ¤þrÄBów­D®ò9/ó­LVf”@%¢g$žêyXzH¬ßÄxD‡Ü¥Êšliã�h(Î÷Êb"† XÃÿÜ�S¸xì¢6É`k¢ž'Á­ÂЛd*˜É `3¦Á«f (û«èr€�'GbÝ�"Ÿw;ãf.ì̵x·ÿ`:“<_Û˜ é“ÞYvø\ˆ‰ÎÀa0OüQ'�ŸÏåY:|oyl®ü‰èh˜\Õ©h[ZÃ9áñÕ ²O«YÿãÄ"Npþò­00Ú/¿ÒÀ±¦ËVj3ÑÓ ËÖè²{GSœ*ž¿Z}ßÊ Îä)?t³ ý$iaѲûNíW«ìßNÆ7ïF;þ-ß-Õƒ|GYOEºùå§±ZÌ$lE‚Ž«& åˆÕ äŸX#à�GǼd¢·ùÿÏaˆë,Øs8üb„�¥Wïέ”¥ÞUÍB/ÜÓý9œ4¾L.§€O>¾˜Â8M^�Éw ³Aò:qOÖ-˜‰íÍò<�…ÿ„p‘Û™x½Y‚Wܬmð´ æ õÅ&ÁÕ}±äIZÕ.3)ó­“k»„'ÓÐXo¸rÙN){¤’á>H£ÍA�ZÓ!»ï}•÷‚vŒu¤gøûÉ`+«{� +Z5h£Á^ãÀ¾RènNT½jø®e$"ë_õ"1:µ…-—«�7-qDΞÇNሲÚ²#¯2dr¹äÞdüF#€|ÁÛ[å*Œþäê�Û) ¶d-Ð�L¢J› /ñVóV®<9Òʇ›÷ä[°ö/2FÁsc]n¢+oûºï¡œì· �²;Ð�\¥ÔMà§6u&ZÝcžþȧ§Àyª‚l6ÀÀGJKÿ%B3ÆÑPÖg¥÷3M±œGø±§ÿhIBch‹Q;¸Ç“3áäç é8ËÛ-azo<Ó'¢2ÿ-?«‡ßâ�ÔRñXÙgì|„Õxpi]3ä±,x#ö7j…Ý ›ûå(Ü[¾ŽV�c|ŒkïžÒºÐ&¬GêFÿ®F<гiäõÉž6m÷È[�Ï[œÃm¼V@ O-æ£~ §3ÓOÏ5Ô'¥X?RçÂËhs—™D LÛH£5Ç–í–Ä£R9“LCEäÒçoõgº“Z(ò®;aÇmHë5La»ÐþS©ñN —KIÿÿ¬5I‚¦¡0ÔïÌû‡ Ãw'Ù~ñítbÅ„q'òôîäåûs1ÂÉ/l¥í…(š¡ŸRyÓÔNÀÊ21æ«6IÑý(6|i.À%H:¦Ì^³ °av³Ð9ƒ¯Že ¹ßsèêÐ?YLžÌ:nS˜ºw’ýô\«ú? ‡Æ*ThlÈõ3šùEËŽ$Ôܨž�ضÓ~¢x:C÷Õ:|¡F$’½Ä4„{åFZÙç{åT¹ÁÉí;L…Læ ßÅö{¥¤\fvâ¢òNó²ýúÜWb†ùp6µËÝ{ùÞ 9üî3ÊÆ^Œyöÿà–)0ITÅoLr±’Uk§Çàv¬[µÞmâEU þÅç­bÁ·è1ÉQ±µÍ0Ækñ,‹›³¼8蘢ÍÍ”¸%Š>µÎT@æò´·F˜}ÇþÞ1j4Rð ‡ã˜Z¨ú’”ÜÇ�† ÕÍq¬@ºò/™ø”ÿ"uâöZÆç�.¸hŒ7œÊÈæ{�?þý,Ïßʺ'ùìÂ�çÄÁÛ=ï.Þ„†(1s>“ý°„;éØVÈ_õÞ�nüod=¾Lc’ÉÐ F�•ô˜Öši»]Ô &S®ô9÷˜oc:*bå(trxÉêrÌF܇µ"´Ø:_³¡†ˆÁ½h対3ɺV#¯Ý}8´œÓ1�PÉ�Fç$¹…qalS©TL9AžBx†ÿýöú×íeû¶ìÖyº~Wà¡v»¶©–Iý¾ÙÑo2‰‰™žatBÿ¯ïåªtF`|@9Ëàî€5žcjBÿµÔ#Øí„·Jå÷= C»mJ  Iv�¥Y¯vpÙ�'½AšfI¨Ah™Lð¿þŒ°€ÙÃ6Þ²‚7,âQì¬òv‹s(†(ñ¤x XÛNKå4—&]Éð"×2wélzˆ?ïü ¢?7Õÿ¥|>šñÙtïe�€gÂr_-x®Vº—í©vM¬ÞØtÍéãzß–Ä’ƒö~io+ÊòôÖF-KH²~#÷ZÂ8›ïgY_Úé�K;ýœ³å=>Sr¶ËMiss¥KޱïÅ5)õe­X¦`qUE«@mç¤C0Å nǦÅ\†nY6Âï¨7.>ˆ_ž7HjуrhÈÔSá§ï Œm'£ZÜ'v‡‹qvepÆüÞD5©¦Ã`ʲ6¤Á_/ü‹�Úî½ûF&CªrЭ8'àyÎÖ•Hˆ‰é0®ãíHPæ–zàw`=ýaµ72h*g[ÖìÄ%ëÄ’nËö£D‰€°ÿê*óø .“˜=g>ôJ�–hçK¹6.Ã_® §ÓÔýác\º^ABÚXkŸû4n2SöCœË:tPú:MWóÍYE�ë9²E¬„ XäöÞaÎN<&è:g¼ª¨©ºø¿ •ð�Å!äŸ5õ‚^ÞÚp7ìaØœ¾]kžè=ÿdfcnù*ü·ì¢)ìÙ`Ô~dÓâÆH†�PP–:Ç5è¯F€ƒQÎ8WN­ ‡šËðÉAJç±Oõá;ÖU (™†äYS5S-Õ2�OS—µ1×Î:Œ�e~ñ‚-ؼXS=qP¢RܾîÜþÌ6(AÁÁ\ÎØ[íŸ#�RÈOâ$e™u'uxDFŠdZ+骰ácQñ€$Ìý%A¸×R×°Ì5Up°ÃÞ]aæq2¾Õõ<‚¼áöò6Rþ­í+¸³¹˜å„-š— ýü³àé¦Gaª�GNœ6z[LÆQƒåÝwIŽ›NçÓƒR8†SKDI¨«uãcpý%oŠ!¿fY¤ÔÎW˜°°TÞ*¯A¿¨7Q/;'à…Ê[޹B…”Þ×xåƒØrkKü¢¸ÐáHÂÝ©è}(˜ü]gEçpm|Ò¼gíØZá*ÚŽtü‘ù‘òé iÿÑTE�¦l/Ó§ÆgÝšªÎUêŸ�8ôå`oÝi\ªÂ-|£Ò‘tîUÜû³1•H@4¹+4ÖU‘iN¦�Nî€'ƒSb™ºA(•*Ä=�‚ë¤ ^‹2 �H߆À$jµ¡.]>äbô‹ê#9#N%¦ãá|Èåú(8�2+õzø�¡×h 2Øfé˜N‰ÀùKÕÝJs1œ ay�To~]�¾XM:™äÁK„s ‚=Ù|Å«M@ ×@IbgÊpx�=(-dȂԥBÖüÝ£‡¶Ì/"#jœÒX‘Ç€�Žö3Ûž•ü:°` �Úï.¬ØÉw×)ýŒ;�ÄmaŒÄZ6O”1‘ï: çÛc Õy¡ÞM^[»Lô±×ÞBVÙIáJE?ÜJîÙçЭü¶Ýý‚,àCÕ('1ßùl†H¢YqˆÙ×RÝÀï}’2ÎD$èvw’­Ÿ Cy�ç&¾ö¤"x#3c tÖÍôÜŸØ ù‰0Í/ˆä`"rìC¤®�é°æË ]ŸÒcUAï9í ^1çx¶÷è­'7Ê’±ç»ÍØÂút�UßñQ{œ£ŒÐÛym+µz¦ÑÊ%Á#TåÃr‰]Ⲭä"ÔU5K‹@¶Ôe¢2ÆMk‘ üŽ–Q®e-RÕƒ—gî ÍŸ§¢û1Å«b¤ÿã¬;I Œ[ ‰r-x~¶T½uÙþ„{©HÀ¹na¢ûƒ Üãut°€ªÆJ¦rrS~~ÂÝ©/°ŠK|Ü£žéý࿺õXª˜Ÿþl7aÊÒÞW¿ßÎ}„%—ïºH44§ ÈÀ H@yß¡�j²Í»òàØ^;I^;Ÿ»¼`ý^ÝŽ‹8~Cˆ’A F›ñu{\Xˆ�9œumã*ÜÜâ·Èhnþؽ¤VhÐá=«Ôüs"’˜ÿˆ÷8Ï—%!1~©{ñõÊ�‰$µ¼ƒXS~>›µ�v&_^…BÒÌyr|Cø!Ê$™†Îóšš³œ4ÉmŽìü ÇÅ$KÄL…kãõzµð ñ(¥ÿ¬©‡ÀYWŒ,6¡‚+_»«k|ž]6µ\e,g]/Có¶¹®ây”ïÒ(=Øì­ã~ädö[iüË+ 7¸dª?#SÈPõc¤FB”—äü¾­7ŠmÂo%þ`Ë6 Jlµ’œàÍHXd,ó¿®s�Œò$¯³êÒc z€‡~æyþžŠ{gfݬN$}òЈ×Eç'Ú–|‘Š j90 âê‰#Áëœfí¾–‘ ˆ+—«|›}É�lÖí°ÀÚÕ\͹>ú M3…Ǽ‚KWëÚ•SÊ õBX›�Ê,°ºú‹ù¾É 0æÉß“§ÄÙ&ê4c\ùÒgü±ã»Ò@fqßÖ’¥†Ksˆ$CDÕ�‡pÊF�X‰täX¿Œ¢›q ~,el'�0¸Qb®@Õr �µB¯†0j±Ä¬Î¦Î¥6K*Än ‰KCsCÊnôéf;åãGª*}UF—ÞË—Á¯?2/�"¿èè&í�ë�«…t›‹\K‡�UUpãלï…Ìb¶¤¤öž¥Eœ-àÄ0è¼éÝÁcã €ݵ’O<Î×½%;x%eu6.yû“‘OÙm_Ö.‰Y[¸ù'»Lµ³+!NtúßM×k¿ /-J‡2u/±$xä ÿ‰\À"S¿~ÄK6âÚ/ÚŒƒ®•Sæ@î~¶({²Ÿ"uà¿Å&‡çå˜>ÙâAúU œ”üÍ dèñÜþ|™G")‹ÆsÝHhJz"ˆ~÷€ø _êÖÁ:'QPv?‚íÁ:ˆe[¿ÚX;“–`ˆmù÷Ãuò)eC†<ä4ÖcÕÉþhn;¶{4;d$2ž’Ö0ÈzßFùE…ëãªoEøÊñ°ß_³p�Ü0Ô·²Á%$Ðâ[ÀU{¼âl|Še~ÒÞ#D,Du ¹e;Æh½=½Ï0æóiÖWJüÍG–®,¤2>?OÉ!ªDeQ²•xc¨;<ße�Ÿ×wHjCååëŽSF6„lºUë—rÈ!T‘…9Býø©Kq¬21¤ûê©-`¬d;zK稔"›ÏµegdI½™ J`¥P¸A@pe+Ä÷Ö+1¡¯ªßšâÀ‰÷Îã&÷Xnn;ÑëÖ.9à }çãTdnTÏ¢Îvkœ%^pk'Ђÿñ:§|�b á ¥äÚXÒ�ò´XN¹bLW4?u?]ÔRªÖdÓmåg0"Ö/úbú>pŠ'#´ôWçh»…Öøf“ÙAìB§âxÆc+'Œ7(–æµU5s?¯?S,Iò…ÕãcP†5¿ƒE¦�¯\€$Ó¶÷Òž7ÜÄÍÊa.µpÁŸ¢e9Œãa-6¶>k_Í݈€Lû|,Wa~=hæ“ÿ! “7�¨jKDœ•ò¸n)1zC7\¥Á¡ú¶Æå–;©!vM¤Õ /ê,„]o¡ªU-ÀÃ&’'7{˜Ôˆ°;à‘ãÿIÁ?u©#I%ªÏHˆ€˜Ã!�3v &¬…v?´Ñ‡´r@¦Ñ¢Y¶*gf^þŠÅCKGÍÉ'-¶« A){•µ´ìš2©ð…#H«Z8“?ÞøÉo½ÈGkiUJ­Æjf6aõZiógí¸þ`“bo’Þ>ÑùU¢pY&.3¦°)—ªȾ;¨ÒÕ¹Þ)4dJrh^*ürFþ„VÞŠ§ŠRí½¨¸ÈµÍ S>–ûFbZ×H9’œ f—iá}óù^î5%ç±F˜·ÁÎ0R‡# M<ýÂÛ4é‰÷hÑìµZACû}Nª‰줣X ˆÍ¡KlôzÌFÇÚZ1¦4gë’¬6¨þѦo™’‰µWå Ûs£ã%ÄÑ�ƒ�ÉhóüËC*ÿŒÀûô1ôu‘K™f&2½ÈÐOJ9ß?Œ>÷¬ÃFYcöÍÀDÿç3íü‰¿E!UPÕNÓ †“1ÀC‰ H§¦£÷[§óÜ7°I$±÷O aø¸œªqM;o¬¿<‘r¶†�@„«ÈðEÊ“:bs‚Å1Y·ÛV$\[«Yã75ª#uÎv”69$w4± ’¿¨Éÿñ eC²kœ÷é©D6ííʯùc9&È|ßÔ(áO“üÅ",9ºBÝž]…{P‘?'ª4Ü[ôªÝÀðòB’oäCdá‘Ú¡•J›‚³˜j%‰Ícv—Îᕇ§‹/–”ø¯o¹w•šæßÏE/Ã/Ä• P­nDQŒæ�. Åe–ÑËÛ{—Ïœ¢}É8ïjÔ��™ÞÈy¼¾ËT9‡sìqb¼·ô�&„ $¨ üƒ!Fœc“n¹íˆ;@�­©i (f¯RèÇ8[¦Mq ›le€SâB¿@PFÓTaÂð/ùßÒ%öQy™IUÏ…P™‡ïI~»°PGEý¼Â—A¯�MEÞ jäœ9ÔHÓ~Æ~}JòåÓ2^ǵ M¦èåfA³öƒ3�ˆÖI`w…|e¥jðA{‰O�¹�”p1Û«ÄGªÀ)Á'h«�–:ÇVZV¦8b¹j[ÿ†v¥a-"lrØ™®†|“Ø©ñý›a?Döu&b¶¯€dvÝØD�46n}Ïn"!r[ýÝÿû&Ž5K5ÿ¸¡B½®‡_§Ô–uq<´ qÌÈKþ¬žÍæ¬ëGî´�VÖ3Ò•[2{÷|TtcŒùšP=,ÜÓ§÷âtÀ„™�Œ‚á(ÂRž¼L^–¤ñ\x¹CºÏƒåÊ´[et� ª°ê°;lZÀý.ÀÂk¹rèï×<ȸ4 )�Í•½qi®Â5‹hŠ0•qôi¶!)EîUrŒŽëŠº€Þ·Hàýó¯J4â_­±õdzÎuÐÚÌî kæ o¡MYÎá>LmÃÙ9Ú‚8U•=Ë»4)S<öÏ­þô z¼ vDÞ,ïØË*=WýßbQ¼ ’H‘[¼i½Š“Ê%€ÜµT&h=2½Â(PÒË»}§Ì«…ýpæ>²èä·|R¬I©Ñ’QDyeòý¤ØK¡ØB;ëãÔ�£}>¥6†h«Q‡š éâÜAë1dUÈç+Å6„�+¶cð.Ä'æ1¹wx�\ø×hµsÀóÂ~€öœ´�«ÿ†ç9!’µDàœE/ß-ÅþÅ l‹EIb÷t ‰šï+a é\þrNêõdïnñ^3«FôRõÝ3%Ö¦¶ZýÎßëXÐzÅl6M# ÑÀ’´¡LÓŽ]¹¨‘–ž×¼q`¹+ê‡ó#ó€òÿ^› –8nbÞð´ bVPÀ½Ò`2�ù…Zª„ö:ì ߸ �8"ÖsXax\­CAÃÕpL»KÕã»ÏÃAE¾U!Tgp“»N¦T¤j|jiÂF‡p×2^Ÿÿ-õ#ÔV[@šé¦vœ»|vA[ýrÀyf,¹ìâ·ëÈ+¥€zú¿"˜+FgEuçj›˜,Þ[¾æ�ž~ Øùdoïd¿å¹·,Ì�èⵓ’¥Nq| €ÕŠ¡j!Ù bÍlZõp¬m;]·(fû¨Eõ/T�Š)ØÓÛ"ª+Š�äd=ñMÇûg&Þ†›•Jó»2™Û¤xßpP"e؆¡„…è—PdÍ>)¤!^ÅŒ;�Aˆ‡ Ü�£ Q§ÁѾŠL~~vT&Or–{ù daäÔûßgS][çDÝ©ÈúLèÛ_~æ@víúÿ·oB¤Ç¸NƒþIá�æmôšç¤HŽø·cï•Ì_FPÞX w›¥Õ1B“v|¶]-…ÉvÌQÐn—¨J¯ß­A%‹ªš;Ò9¶´™¤óDœ—ô’ó*QÒoT’]ÁRKÝøNNëA„…!½‹@2ôÚ³UBó®Ÿa5kÛë§­®´É²×e�‡î@~˜LAŒe~X0À'IY¸¥†ú=~@¬›#|ÌI{9¦se½;ª#öu_1miyø4 q6^¢UñE—yg‹È£;�˜÷²?ó7µ*-®¿sx[ …ëA{ ú^¡Š$S? ôoSa1è€ò—9F-jļ(½y£,[�—æ§iÁG¬„ǵ² «¿R"�â/ÇÇ™�×%¯;MóÅ+wœ ðr²ÅÙ²Ž—5`èhî¸Õ\è¾¢€åÀC-‘Hp:›W“ÁXÄ««IiÊ:Põ*Æzÿ+Ç¡—9äè¥ðÑ�ñ “cö•f¹L»³�v˜~ªà0ehÝ4zéêsb‡í?.íá#(¢�qå$è´qsw¼=›ÿ_ÜÀB ÉÆ÷U|ñãzýGg8˜×ãéO£mg" 6Þk’dóîɈ�{e~åû€ Fâ-� kŃx& ¡.ßJ¹í�½¦“ã2Kº›R»T]_º° ?3ÉœÓ ±a!ˆ"wºQÞ�ÙÖƒ ñµ'vì3OuVu)¼!K½²»„�ïGr±‘±@’XK¶�¿óçrÈÚ   ïllLE1Û6-&¥jÕ¤ãÕ¶ÜmkqŒð°ÔbÁ‡ÞÂM\4¡¯ æ]¼eö¥*~Ôæ —/��ÇL‰Ì§M:Åž–¯:c¼>‹Œƒÿojeô¹áŒòâzÀq) ¨ê ÂFsÛ6/#�Å5�=G”SW-Ûk¿r$E:QvÔÅ1Ñ¢ÖòÒåt|•ä8p-$—i70s²ðˆƒÂ*:-�’CîÆ.wÒ ¬­í'’¬›ô4Ÿµò°uÒÃpçšòdHC›•!DÔ)ˆCŸ[ão@MtÞ¿0I—ø×“8Qi±ƒ‘WV»žÚÒ8(çbmG9)eKPõµŠ<Í«‹ôÊ¿äÁ{wìúœ‘`E_\´9„�•g·ïTº‘A>�êß&<±g`r� ㉋ª]ÞÔíÿ~%ûÙ„}²k,æ<©àæŽy¡ÊrüÿöhÞÙã6j Â<È2›˜‘qÒu'Ö?ÞÞÎ’Ðð¤¨6§ícŽ´<‡M«þ‚ïýWtñK÷kiFÇöiFq'K¸ €¢kü¤Š�N#ZÀ7•œž#;åŠ^_Ô\ÜÈßL9ðBŽ5£ßÝ2`O£Vå]‰Þ‹þ/]}Mm™´&$¼È]jÚ_Uô�Qw÷Î]蘊P­A„ò�Í»à•:C9½O„j*¨ŽZÿMÐ.CÀmŽJÎî…³%ÙÞxmÐu§3I†7þ tqW@iòXy™[Öþòëi5(¯J/�4x„XΕ�ð‹n·,M_®ëžÜÃ"ìବ=V)ßùð¬É…É=Û�ç\ø„üizGB¿‰=FšÌÄ{b uÕŸ–>ÓûÄÈÒrGMÁ˜åH# »&¶6mÙ§î–�y {�?�ÈÊåÏG€%ÛÇhÆÅÝ‚òÙÓàºU}Â> gkk”¬4½qBn—9>ÿGöKSºY]Ž3«-z—Oô%“ìc,ùM8YšZÓ0üÈCG$ß¿Pº‰\{EBá3TpEjjŒëÆHìòíXâåîg¥,7¨“žîM3²×|îrP;g¸> ×ñú<ƒÛéÃ0 ÂÝè9c·ùŠCÛ>Ê=¼sgng3:{ù¤Qôî–V®4ŠÜèSéni�>2GåýŠÖû‹…ÙÌ¿V4oo€Å•ÙcÝ{Ý^‰’j¢ƒhÿêñ’'߯Dç¼9ŠtÄgï�hd3¯`‰R)µf;è;�Á¡´EZþÃ¥XŠ Z÷ŸÕ¦‘׫HndƒŽ¦)ÑöÏ é Ú»õ7õUðnà ž*U‚ª®ŽŸF*¤{ð“ß‘º{42Ú¸�ÛÞM)Œ!jŽ‹4ò@Åh»Á^«‰åÕœgÅi¾é@Ïh¬$wúþ�:Óê—½Öù’rØ ‘ýJ †¥dÿÏÔ€Êq¸ŸRµ§ÙJÖ^èå£j…ÙFô«BåϯT[áу‘7v²ÆV¦SYJŽ奒ºwÿ3ȳ‰!ÑWÄû�xdx°w¹)Ãw€�ØKì´{z¹\ ?^ì͉¥LŸþK[ÜëÜ ºðö�…�dâjድ0T:¥:‡oY4y±�D—!ršéü¹ËÆ}Ô´›>V›¼,)À‹ÁVvKäF,IwËû?ÔÐí"ÛÓ5ysÏ[Ö`̦íÁw/ÿ—×ûß©å'ìcà˜üd:È�›_1,º¹w²`tX@y„»y°Ï”¯éÇÖåg[ÏçVÉaËat¼×÷bݾr)–¯hõÊ :Ø*ôçŒblË—î*ËJÙRÄmݶo™^ÂÁèleé TÙÇÿ¥»fQhÐç’ó;©E>Mk±�ø—EfÖ­?`ŸW»Lú'pªí*D¡£RôáÞ+¯«Î]�óf½m¾·u°ÚÞ5wG‡ª"Õ6°Ú“lí™vìpÇAK[º/ŸÝ©¬æT¼§v2UÐ�*Õ§H~eòU†V£Úó*ù>æ²¼[ÝÚì„2¬d�“.¹d¢ºm;Ž–7Ë*D{_`²k۴铱î<½­rôê&ß½EŒ¤pŒØ#ÿÀ�ÿìûqæïܵžÉjÿ$3ªBü¿Ÿa×Hs}~ü*�ûÁë@ÿCä®\Î[C«Í’Á°,‹l”!r¨…ÀùOK²xb¦Ñ‡.Ì+¾fòötn½ç“ǧ¦Ûy$4 ᦬i\ÐLÉ7¿ IÇнÕJkäE{ˆ'Å¿‚S·Õì†�Â;qvJQ³¦IÏGÛ¦c¨˜-Yã†{:ýE`:¸ ׿Á[VÓkØ’¥#¼±XfÄ -�üûäÜ 7¾$çv7ÅÀúà@ñ™Ã¨N[£Çj5@é*Ïñ¹‡fq2‰³²9ˆ_ûA˜×lþÜj×:“á+Zn“”÷T̽G«s—!Ç�à†ÚSÈ þ¸GiáʆQÀâU }PC|çJJ ÅŽE ÇçRÚV¥©ù¢l€ZÐ×+Õõ:,…]Ùñð‚õÄ Ý6Ê”ÌAªq:ì«"¤!œ«+ ¹ÊPÛè/D�§[~ œnA=K Öq(°dýà­qÀòQ\ô£¾÷í¿Š@p’jÑô ]+|Þcœâ®´ŠÜX!á€]ìSíj‚ÌÍOQrÈì½ÄKâ?Ò€Fg ° w“w¼›û'šÖcÊ›�e©ž¥¶çïN3‡�ân˜|HŰ[4×2(ÐUœöC£Û/åj$×oUÍÊ(xa�áæ.ßðuþú@Šq*yŽr tÊás‘'‘ÜHTRûœÛG¥'¾�ïóèNÒ@:£ª\« ^ãÁb‚”\B�'¿œ.>ö~#öþãe— ñâÒXh0­BÀ«­F·-è}tó«L4æ Ò±«]÷Ûm€ÖA=}{rS€*v¯T^#Œbœ8{EŸe© ìû_ˆ�>~çÜ;=ŸËOLӠ욤ÇÑ?[ƒä+u;�Cä|ù�iåy,WïƒD^iL6•s#Nu³»J«¸Àý#y؉K¿˜¶˜s=cŸÃ‚ÂD7éHdðibªK®�#¤rÎ1•XF)7agãƒû‹¡ª^ÅÀrFE3÷ïÎÓåeW\<@¼AcT;S�IÆj3ÑÁ{4»?þÃߟÈ!JpW©RŽrÁ„Mó¥Â&ØïõîÖzÝas€ï“ï 1Œt¨2jè¬$DϨ¸Jp9,Ñz¾¿E>—/M%³í“5Çô <ÇI³þsÑ6‡cäܸ³Æ$„~£2õ,‹'‘ÊÏ“#áZ.FßYï·ïüǬéıÄ,$Àè’w#�z¬„Âo$tEk芪šýuv"’5­ÀfV� £øtOÞhºƒ9á‘2ä׌9ð_ó_þÙBË!7ìŽÓ^¿†„&Ïw 1ìOM :ùñ°êÄb£æíÞÊ6ލ°,íóª=æˆ*c½{VŸ &~[ÕØƒMha?ƒ‡úØÑuõ§×8¸°- giêÙMû@î7íU”°N±–ÎXùÙóˆÄ²(~*‚\Ì1;*0W_}oïÙlÝä…­7Ï %${EÔFô’ Ÿ‡[rv¯; …šwJÍ«nÅq ‚­­Î½2!ç>úYÒ0¤!C»§žðâ/ † …›Ï6ˆmøûmýÇÿÈØ8ü¦ËŽá^d+Á½ ü#¬û9=ÇòµêŒÆÖ%pì :S¬rãã@qäª o� އ’Â…¹­ÛÝHnˆÉøâ›£l¹ #†Jwí©9Wö§h’ï% vÓ•Ö ,ÓÕàõÜ×¼rTù9prl£�i}ÓÛs™ó¡¿(*Tˆ‰Ã ÷Ì›¡ýézQq¿œÍ\kÕ‰}Ä7¸lèÐAŠÝ:�7Ûû?ŸZ˜gª) ~V<l‡=ûŠC…eB=Š%A.‡(Â¥d"•Éܹ øœÎWIé“BßNéXùïÌEßôí°Ë�öÂTÒ�®r¼I&kf°SË–oʃܓ¾û2LÈ¿¸ì»ŒO½~OúŽšråÊܙѭÜqÎúŒ‚Qˆ”$§ò“Üð8éff›2% A¤ìrv@¸ÅCLAq¯í&IÖ8—}S˜5ûˆˆ¸ ,O&H�´Ì¨Øk6ünòˆ-.“à‚7ýÍk¨¥ÉEûlbú"Ø´Æ…„ìï7îbâî*§B¬ Œ‘~ºÊ|¿MH]tÄèÁVqqýÓw¬3=ó�VâGJ­eQH¥ªÚçÈŠ¥5& {ûQ$MÅœ7ÙÐu?[&ãLÛa#IêÚ»4ÓôÞ¦#”ÿYŒ×�½Ô^êç§ç3‹Íçñ‡—cƒuJ×|Þ©lrȤþ¡-Úñ‘â¢ðbOÔÞJQ°KØd §BØHy$Y´ YZUÄ3S8õ�½‚-ÅäÄï¿0W£€þªyªÕ=ˆ��º½=ã—UðÚJÏ™hfF2®~Ð*ZôöQÝæžÌd—0N�ŽyG…u1 <ݘÙI ÿ¶aÚ×tSõKÆ/K {­ÿØ>åp°­]'¯¼Ñ/¢my#7e+ñŠ:9l„4lºÊkŸf?ñRRÃaTG¿ ,%á@¸�èù iú§%‚'æÓ¼þâEtüSDJ=h&Ua½üÉ~èsX½Xê"7`¸=ɘ¹hÅpý†Áˆãê:%ÌbãŠð"x•>´œY Êà ¿ìr'«ßR0›i;�?PÐÌŸcÚÃêªh¬çkY$óŸiüüGClôŒ¯V96!o £/7‹ÖÔjôG©#¸2�Á†C�P+o½BÖµëÞ`—Ÿ»kÎJ íúñP#·pÀªèåmj})6Öµöj#xèŸÏXÜQ *//z”¡4k&rŠNØøyRDÊk5] ±ÿœE؇Ódl%Ö—âS'lJ`‡ $(õzÃh#ˆ^fUíÙ d�?u…âè?¶Ÿ…qÓƒ•â�ý?ÐôS@%µåCáâïÑz÷Tjc4³¼hú{ ~¸úX䨋³¹™pŽno* HY�\¸"»|“6ð}C‰ /ïû¥(bhSSrþFN¥”W2ÿFÓÆ˜ç~”VóD4�MÑr‹ZöXöãS;b0 °»ªá·,$l P;±nl,NJé`æµ=dÀŽcXqIxEÐ:Ab›zNŸVçUÌÀü€L×âþJ=ê·ïRÑ’µì*N?¥gê�]È“/ÂÒ);ÏÈ¥72ìÆÚ¤Ù½ñ‹?IQB³Qºô9"@.çMdAb -LkD/ª#† z ÀlÏ~&$ïº/Ài~w. Àpî>–À2ØQ£yîQbÁ0ðÝ ýöÄòÒnÁQMë�Îèaúƒ‹‹c kö”y„^IËÎ&`Ž FöwkšqÔý¹ŽbÞ•€äÉ©ñ¿t)ƚ߯›ËâLøV ?Ió\¢¶‹v]'f>¡Ôê"'ÎKuÝð¯­$¸QgK1ÆVÚ„œuŽ´\œ\ p)¶�÷DO‹xn½ó�z[ääƒ�e}&a�êZëIîˆ~½ÅÕÛ¨®?î?Îþ½Ó–›OIÕ�îÛbí«yŽŒ\O͘,ÌǼ\¥ìÑ(h¨ýÓ o \³¦¿aÍ*J`ˆ�_Ö.¶ ^Ôð€91墉CÛoÒ‡q6ž…jBÿ£ä[ÂòîùŒÛ$º5Õç }{P!¯îÚ¦X~‚D@(!­Aš‡Iá Re0!Ÿþž@ßP)‹”åõy er%ñUÂî»ÏõT¯ «¬§�–(',D.„7nkºÎú¸¾Í×@õ�ž†¨O(óMGQ&B á7_Î"ß `ÛÁüîþÙ0ëÎðm/|‘È�T°2M²G¥Vžö¦“wìÅ׺…#v[–¦Ú%0J‡$¶öðW¾¸ä±›7²ÇŠ œ¿ãníAŠ@@Ñy¥»ò„?€MOËP±–˹-LÒjýrˆ™¼¼$†5]¿¶(“Á�36hVO|_èÏÎÄèhÂñM‚&”!»Nú"ÂVtòº)ç‘Û ѯ¤¬'­‹¡€O"ºëYg4ve& ,ì5Ò*ÿ�·S6ÕiHÙ›ÖÅ„T`à¬+,SSŠÎ}åôöMEÓ‡ [*å[0ÁH­$®,3†Ý>9›:·ªNq`ä.Ú‰Íó_(-ù8hpw´OC‘EP;:tdfS�áöœU‘{$–#èŽ ¹3qﮦˆ¾ð QŽiW†,R¢JOîê]®8chÿ­ Ô¨iH“Þ{õ¦Ã¸�ì~h,÷ p)¥¥b+‰S%Üây­¬©~$¯)œé¨Vì4G¬\ÖÚj|Å‚ÌÔ¹¶6š¿I^àLdŠU»t£9vpÐM]Æ(W”8;ý1ÿŠ ÏÁŸß ÝO“éLý,X Е1¤ïšl�àJ\Îfä²ÛïÑú„+&Whú,8pEl�•vr6“ú"F”c—Yëhwȉ—x(UiÄœÕÍŒÓB‰®ÿÏ¾Ž˜‹¸Ÿý¶¾¢"Ùœ77ÚeBi($YE ¹¼ȶúDè¼^ ÛøEôï•dáæGñ`±3öOL®)ì¹éúçsÍP«5ˆÿc³^û²õfozL³ÊzÚ©ß"èAšªIቔÀ‚þªUÌò@”R‹ ËÞ°ûb³Ô �ÒA>›r¼ ¼æ[íiÑg‚{êÔš]ñ¦üÈS̽'$‹)gfõZ¿Ý#ƃ}b�°_Éå?mIyÛ�ñ95}‹ÜQñ£ ý¦ÓH¶ÝDZŒ€6ËôûÙš$ÄèéÔ�öFšS;c]ê§ý³ªîscl®éªôÆlÒGýÛ4Yv�$Wq˜)*#²rš¡þ㤓#co]àÑB(ÃEÎÓ1y–<-ƒšì ÅeÇ,pp$i—…Gšl]’ú;Æ™FAŸÖ)²¤ÏÉ (*>ˆQT²L'K ´¶)ƒp3z]‡uÌ0·tÇBJY.B`ý7¸VÃ莧%•y¼²ïÓ׈F�4Ì +VRþ5R·3åüéü»_�C«áYjŽ©È*<]³×NRLÝ]“U#ZpkçÔd§0xF7¤;¥WGœ¾�ËÃEÍ¡O¾‡këîtGŽï’}'Hnå°™ªwç�ð>ª×€»éx8´p§|x†Ì;”åu¡Ô¾ë\x–Ç@T ¥Ub%!ùÌß'©Í£½ô©ˆ­ZÒîaòi=ªo›á{CŒÐ©2`ùÉ­Îù&íaªn¤·Ï’û°Y�š§©¿Á MIg†ô +£úõ¼Ê[ ]Ç2Ò»r÷¦í–“ÿÛØMÂÇ…4À¼ú�tòêú!9ÅhytU‘¤£=e¨C2À”ëâKøÎ/mWä=…s±Ü»‚Óò“±Åº‡ôL  ..�Y|á*$ÄÑë~k‡e}ãùh>=�˜¶Tç~‡;Ãî3Iºr5ì’¸‹ýoÓ- ÆóÿJÖçð}k/+u‹„BŒØr„—îed#6©úT&îìA›‚ ý ˆˆ,P LÚ‰£en–EBô<=÷¯ð)Ž’?ÚŽæÝ‘µt�€Í Ðx6h(ékAWªÝ§õþ£•ÁëÌ`Íüw×ô©W ÞÃ_KÙ*Äz¬ö(€0ª™“uÁ?á–¶Ï®c¶‚¶NŸÃ)«ÒÜ“â‘Á×®¤k¾€L{Ìk4(n¨Yt™€©´e«6þ‹šgÄÏq�Õv©¤[Jk^΋ÉÔú~Ù£Žmàæ#6$�.ëc,ÐøsÖ:D߉äá1| =Â1­9 ëÓ„ìß7–Ý ¿Ï÷™�[úšij¤²ýê Ü—Ô`ù8•ÄO묉+‡<+Zñ®‰õÂÞ\m ýÂ_j½JõG¶Ä§ÜV<˜hÏ—û«çzð O-Š�‹@ƒÏM‡/ÀÜucü W Gv„HDýp´ÇkBRË+œP­€ˆ°JƒãêiþïH°V%’Ì>cÔÝ^V—Hf¥Èä"°ç{šH¿¾4ç›`ÐÈ·<‡|v*_6 4åfNÏØûä{=¥)ÚBƒnŸ­¢584’rNšèY•@]òp œ\V6q�º«ª2B([_àçÎ�5¢àN’r42í•U^Óçdà 6 U× _ß‹Ûyíµ^?„š;ÍÓA/N+«± s;4âÉdá…¡Æ n_ª0è]• 1�úqè/!ŒUÜÿ/÷e@Õ«ßv)ß-^�¡”ö„Ù3±ôqhÿRÖGÐr´Yo®ìL­™$sV´þ}ŒALû‹—>#•8­šÇ:Øu"ëÝ”AÏ8Òà‡qãi5Ò�óF9ÀvèË+>ïÿyš>ÕáôËÒ„4 s29!9¬Õ›à È1dјâUˆ4ÕºŠój¹¸jv•�Âxƒw}C*xt1( Ãsé>w; KsyCN;åÎDêÍ$š�‚íÅ JC_&\ŒÖóö­¹™×›EVÂ/Ñ”7žàJZGM_À‡¤,Ô®åúŒƒÖ«¸[´Â¨l||ÀFU­F¶Ôb�ò³xŽè,²<±épšnÒ£ãM¦þ^Tñ×—ù®ìˆiÀ¨«“ºW« ò•8N•…ùcŒ·Wo �[R±_Ÿ7kC˜¡]�yOŸþ¥Z$“�9}3U§¤Ú4•ièž6Ze]>V�ßýhš]çÛï®Í«¿BÁ•ž~2ÅÑn�µçè>Ɉâ”r_÷¹zll² ûfÚJ0 @«sÌ­cÈj:•®-+À»è'‘ÿ� éŸ|çÕÛĘ#ž•WÌÞ‹ô€BÁK`�GÿLœÞ]×jjUb L±*yNNŽ:Rí "�®ÔOMV…ØUŸr[^&‰4rjMž£ GÎ"7É\»Óðs§yE;,ß·>Éô0fÎ)v‚ó\˜ãLÂÿæ'†¯ü¾H^“,�z”…«jjßI–ÌjȲÌc-½Zmúã†×ž6Ê�ig‰Ü›4¥L�öÒ§ÛSµÞV©Æ7ÈT¬uïê*¤Ç)¦FD�ÇyœŽC•§ ~åk[º3~*›~ H#¼ËËö1Œ .G|Î齃ó ª]÷q~¿Gಠ€¿Ä˜�èìw“.ÑL鯋—¦]ãÓcxÄŠ‹Ô§9ýΪó>”Íß–G[æû°¤,ä»v@€�KÏñÛd|÷ŽpÕ^Ôftxy�UlBáÒA(‘¾°ÏAëhàÿyÆv•ÉŸôÓ7‘X Îô¯½óy6/+¤þ›—’âSóº#?ùƒ°ñšêQTxp²]é‚KVþ‡°nKŸ¹…7YW9ƒ|µ1e µâ˜M·¶ƒt/ ïd~g«ÿî½�¹š¸z?—)¸åf¿l ·Ž×=~fónC8,{¿~hóÌŽ¤Ã:(„Ùù†z_Õý�-°#`$‚±Õ9Nš©6 ö iÑÐe³™ZV¾öJ�¯™D8—NÐ[ŠÓÈû”\ÐLƒÑßèágNä7éêh@'Ýyµ|&‰íe ë]q³öR4Žtp…±ÌåÑ#®+#ž*ÈÐg9È|Vµ8­ðÿœ²9ò¿>…ˆ�éÃ/º"Wljðçߨ8Ïÿ«€\ÿ½0¥Í¾‚€yzFzÙÐg9U ŠDÚtÖ‚¾Pë’Y·1õ`*±@ß«uÇ$7ˆ²ŒD²#ÄGÛܼ/åµxã@±n).³¶<ý§t�ó�žÔ¹.™ °¦¨™^zã]—àôö§<"gËVV›í�ºÜ:Ïþêü½0íXo¨öâ$ÁùP¢1�ÕŒcD#ÔΑœØ²~ùog¶EæûM1š+¤üÎ[ƒ¨Äi3póÝE¸Üƒ„Jþø­êQñr¸OK¬ [à!¦ÇA„SøßyˆF—//Øw<€®¹M¨K¤­À=r ¯”Ê-t)ù¼äCíb£hák&û[†-a6ÏþøSÍÝOÞ2“Åå“?²:7¯1D½:‘hOy^sÓ\ð®ã¢a¤ÕòÈ÷Jf ”£MÛcb>T|U·,øœÀ¿Ê~Øb 8Îæ$Q$>J9]oÿ&Èñ;$}ñöžd‘šA[¿SKŸ£KÈMîŽ�i>Ùð¿pžrc“� Æuˆ¼%§Ý‚ë˜ø UA6ô¸)Ê+‹E`°]¡:]i9Ül÷jIn½ÐT>:ZoX9`ÔÀ­ïztø­yl܃. Â2®Šj{BضĶzžy2Sí„ }‹:œfÈæ ñ±Úá„&ž0{=ù�@–y™:­óÒ{Á¾ìyx™|ñn³ÎÅúd#ø>ø-¹�‡Ñô´Î¡„¯[!õÏN–mÒR6Ô…tKçøÃS×O¿í¾M0q¤O]«îëdÁ_fëo[À‹È%çy¶‹K?pt}­t…x†¢ÆšR ÿ%[EÛ;V#ª¶ã5gåDy³Ž�?ž¶NèOÖø9[ê±_/˜ƒbÒ&Ð4.N_':ÁNþÎÄoN öƒÇ’}®Z.ªŽÃeh*Mùbéùÿ˜^�­J•×µpÜ“œ»@‹±“ÅëO“ ÒäwöÉ?ÿÇáTZ{ó�¡Ïxze—OÊ1œ`…<ù„²¯QUFE×D/SÿîËüW¹ž0÷I¨Ãýòéå0Ĥí�s0ºê ü÷ázxØòhøq××íð/è`cm!EcTb92 È ªS"5ýu\”$ü¦XªeÇlý°z¢<²&M¹…Ⱥ$}¯^+vhÄý=§è–á/e¿ é‹6f�¡<�z¾$Üí¬øÁsT¢œ=(7B¾vM,ªãwîI¯zПºó‘BµéKøbß0ªáÆ{¥QȳPÖå c©é‡ûÙvvõsk^h´}IÛÁ[²Û 7̰º‰)=Aj‘.ù– $ûÕŠÈj_ nQa¿<¯&ò£˜ÍZ 5dAå/V=µK miŽ P^±r^Ã~LE α³7ç+·òÁ¡v2íúk_p,â0�ê×ÕD­yÿ¼ˆáÆit¥÷�Þk uBn3 ?)UòÐÛÊX¯÷¡¤¾Óò ÓÅ›ËÚvx´˜=‡ŽyGûËË$…µÅið ˆ Ó„Ž:?_n@Ò½Ù]ê»Ïóžúó—˯&iJ#R5Ùþ¦  )dÒor»ì9üŠÛünaãÜl ´cöà¼p`æà¨’ج‹ÞÁ½¢¬Â´™“:ÃH¨ À–»_žE^«v‘©ÜKÀ kÊ• b">5Ñý� Ü3và±í…ωž¼Ã%TÞYúàNŠ…·J'Î5Æ_‹DJ1±®sr‘®­¿ßÄ�»PÒÐ�&P¥ÑåÙ –E¨Hk÷. �Õ͉Khé}][d5ãoº.¯å¥Q"ùK$‹þ'�k´�½ õ®½ã"Ciyy¶pËÀßJÔ°ïÎ®ÔØëלáŸÊ{\äôPUXwçmV‡7c. Þ(} õ„ׂ¥8ËéÁm7þ¼.ÄÚ‹¬²` Gõ)§Ù|¼¢Ã/çÏ?«öÔë¾J¹\úQ‹¸<3ŠŠ Ž¥-:ñ†Û9#æ_ˆ<`^ÕôðP¸y]�\ªâ�ü�åQÞÃ)Ê—LûG©”º.™“u@JÞ¨v°fïjï²Æ¤Q ÷ÿ±Âã¢ÈXá:¯vpUC:K¨¨.l!�=†:-Ùžà¹n0Ó,ö¦:iB?‰DÐ0cÄû¼¸ÉÈÕ-—SêzO¥½ˆ��GDü޳°òûbTÓI#¾3ƒ÷oZp(ë`/â['¦�÷¶^Ä(é_óÝGÄN–�²IÑÊH¸NŸ²×ˆWʶÇ4·P¢–7Ó/ã �ñè»0íÄv‹Î!†“ðóÕ5«¼¯•°sžêà0õ¿jsÉÝ}¥¸³-Œ7W gÈ”df)™…ó <Ö²Kõ4a ñ®ð•µ` éÚøšæQ`XÁ¤yÝͱ†Ë—*p:bM’Dйô«õjþø &µ,ïµ/·‹MBüÈnõ “9úo9B‘‘nÈÈ´Òýzc�!›™ÿÝDY“�ÈRkD4´ÇÏ‹ÿðÐ ´`° [0MUî‡YÅÿç¨ñ˜Ë“eH+M—jdã¨YU£ÀlvnØztX‚N�ÛtÎÃ’šÝ%Pj;eò§œk\rG�R]t€¯½µŠÜÝp¥–êeì¦K:âR€È`<ö‘×s‚ü|¶8/“ö|ô\êèÿ¡P°< †Þ¼×#]ƒ}pK‡NÉH¶jŸ¹SïƒW¢LÙ¬qøVþ17#Æü{ýBQJ¦¿š1‹/ÿ8ŒéºŽ*ÌÙÔ#¥mß‚¸_¸Íö©„/ÿÔvm“)±OL é(½pü ,n{}«¬?gþ$ÊÏŠ7Ô¸œ,ꋚe¾F‡7P?6˜#NùÀeS"rÎÉиR›~u¹m:%º/WP ߇‹¨ÕaÓãIXßÉQŸéƒ7.Çô@¿âŸìž7mY2I$Ân½œ-þäWÆëy¢Œ£Á˜¹c™8Î%T÷V'ÉZÐ- yîãÊë± z`ó5Íð³|­Í4¬•E�ÅDP?:âÁÐ�A”ñ‚ÀCS�×H¥ëÚÑNPãƒÉ@)_YÇêËp¶ÿÞò¿ÜÊ®�ù¹í±Œ%©4¡þ�¶û’•7ºOTwIwË}Õ¦Þ~;Ì›Ü6Å!gº¯B/™ÉhO©À.ûO{{…ñYÄj>$T¨.*‹×æ»’ÎM…ª¤70ù«tüÁ�ºûI¯(¸±€'n¯¡ùÈ”Ž{ÂÔõÿüùÞ«Ê„RÇwÁ‰y_u¹QÒ kzQÅ �;D»»ò.&¡‚£u¦‡6"rÌýq˜)Ú£úć%û eSíCüÏ”õ|A;mÍ,ºÕÛPaÓ©ê½ógÇ"\]”Õ×IÉÈ€©¤ú–cú»¡ CâWâ³­áÐqñ啸Á∆jwé4¹v™-ðð\ÉUÛ¶Ò²ö”Ìâš$’>WB&¢Uس¯?=GÛ}L¾B´W %Ó°ÇøÖ°-ý±÷­ $ï,˜„ gLt›)¤ô¾!oÈX\§=»!ÌiÚ‹Oé}°�Έ]]ïkR.ö´ž�lð Þ}³Ö§ëñR`p¨Î8a Ë ×Fl1‚ÕêÀ»Ÿò�ä~ãKìµd‚/{ Íw áå?ðÚd€�m ï\W®oš7¦2S Oƒ{•_ê­ýÿ`[Z¢¬Cµää*a °]ó„¢ïZfÎØ²ÏßÄáÔÿŠî�»ìÛ=ßÁV6*™,ÙT‘Hçå05èÎ{âRÙR>cÄ…iÒ–îCÊÕøêM]ŸKÝ�–ÍæB¬�õFj›†N�5â¸MØÿÒw�.Á9°±§\%ìvçïþ5A�؇Äjh5° ’mÆud1ýÿI }ÐíèÍDë–ã îL^2ƒÞêó+Vj ã*Œ’,¶ i0£P©2áµ×’ˆÁÕ¤–tÂî�DãÃÙm$ˆÇ:sxË Â…zÔ“>-…ëŽw¦‡j Îzäò–Z+ç¬Mp ¦Kºd]O »�9ï›�Ý<ÆÄFð›�B€µ¾lJŸ«ô_Þçñ�Ã.S¦ù8û¡$-ù6nq7éÀHŽÞë(Wó¤zZ®S\‹g?²FtUvó6+±{#Ö‹GjÄ̘›�j,åËý»­Ó<¼³[|¿LD;,¿ @þ0ζÑ+è Î}™Ó‰¸p§'Ä¥•[q[­àenËw ùž³\8OÞ™£#ì©l¢2=díZ¢Èøè.¬ q*÷Ý´]#¦ñÐÆö’À÷º\ɾôJ$nwªwdée Ö ˘ƒaìVçaM7‚®ñP"ZŸ@H_í|:žX:âÔÒúxæ[xÇ—×aæ¶û€÷+™4¯7 áZ#î6uyÁÌy’ººI×X¯ÊðQn~XãÖ ÚýWäïJTŸ“\µJA̵ øtž�1²²!‹hFâ”2�×#?óŒ¾$º^,ÊuuËl‹¿ &4§ŸŽ¿D{Ÿ…%}±XØQ(5¡ÿ.XÕTö˜ôä1ãûijµ9�¨`—,@JÞŠ'ÂUk,ÛäjWpÆæjCÎL1wöÏpê,¬5#…-÷9UZOšðõè” (eo16gá“:Âù´šøn•i[}hm£ˆ »y`2>:z S®ÄSæå«¼Úê”ÀÍh)÷‹ ƒ.­¦â°;Ffú€NJ„N¨þè/Ÿ˜=úN/``ÍòÁL² £1‘b?ªŒZ]wÊN›ùc vþIÈWßUB)RsJ›ôß*¼Ì¾Œ¾â¯Õ*ÿÕ2ÿ²‰Goø³þqHK�&Ûâh¹hLÅe®ØˆuOMz…?ÇØ-ýíkP»O^2øâÛK3oš³Äaï�» 5àù Æ%¶kÑ�»ðäá#ANÐáÍð©‚:¢k¡ß¡½vEƒ�¢`Ê=^ù¾ÌhN l‚@Õ€ÁåË€îšÀ`$‡tYÜ 2ܱ37î„ê‰æA$tùƒ¶É7®95x誧o—ªçEõ$E ‰Q‰ó©(±á­í‚‰™—ûX«Ñ4=gNÂøàEѧ�tFüÄ[ªG†œB.ÑÔWX®†ßÑÃ`£TÄèÄ‚�£ƒÜŽl³�«¿öÛS©õp øu[fê>ï |–͉ÔÃS™²Ža5ÿªqXå?<ÿý ÞîÉûuf²‰ØµG�؈ÍÖú‚&1VÓME-™Kô"èŸ"“uçƒ#B_i7úÈnË ÁP#QS…ÚqèÑgƒÇÍ�Pð\¿ÿ—ìø±;@æËv·O›=úçÜ$äá¼X={V™›=Á ½L*Ôx.ê¬7¯ m…„å¥ Bæxö¯5ÉidD8‡Ñ]×—úv!ä›-6éÿ�´¹ãà!Oõa)Ì€%4=OÚí ¹dóÒö#I%²JÇË•(°¢tmq“›´{Ëíê™ÞÐÓ6‡ÆÑ»�àHf,¬š|…ñ÷zéÂox޲ô.GâÝ×ÛªÒ�xJ˜q äl¿`¸9]ýÎEmwäÂ4_%:Bø'cÓ@÷�éßš°ŽQ³¥Q¦hÞ™Ôé¡Å”'Œ)n˜ž9¼à@|ÎJØÚÃpÆ>ýVÃHƒo–ëA°ÏÔ!Ÿp"q¢@pÕ¤Í~ÒaÃ:‰:'L´mƒ!Â+ñ%ˆh—¦�ч$�jœ…¬+zÎ9†.‹‚©R”:Œ+S͆àz¬~ Ê ôZ Â`ÎÔÞ T5ÿ¤üÓ< Ð RÈ«Ó}Ú‡ç3 O*&K0È1$J†p6£„ãÛµœÜ›+Ìd¿…¡vƒ¼�Øx E6VÝãórIÇ©càÃ�ÔÂ.ùvàQáÓÆŽs´´¦nÀŽ’Bq£Q9]¯ŽÎ‘|¾y•S¸}) Ñ܇)ÊþpÄð±' ví…”9@¼D,¤&Q4– cSÙG–G\`8À„_ˆZß.��}…&ˆL-w Ô°N7uVÆc#:p³Ûo)Ź~8^eÖ:ÚãOˆWeEWl·p•¢ó‹ð è›'ërôžÁ �ÇÛïÀ°ÖqåÂ’‹Aä4&Þ-$`Ø¡,Á�kʽ*åÀ×åÕT‘æbhR‡ú}•†òT5uâ«Ï•>Pu¡úÔË'‹.(„ÍêÖœó¤Þˆ¡Ú-ÊÐ;¸Í¼ýM ÂBÇ9{ÛfÁäþSá Ä(È•õejKªÕ0A®øIrô°Ñ¶´—Œ‹–‹<  #Ü"à~#® %‘j¥AºÐÀ”å)WŒñzRVªœ}²Çs£jyõ<µtQLWç·?4°[¾Ë”½ÊR¯ÜÞ¬=±ÜéàLz¬o?9âc2bQ ç¼¾ü_xõ;¯ªO-8¸Ê]W³É/Ãïð|Þ$‡/y‚P7EÛ{¦O2« fÞîgt&�>?˜0Èø Ãû殟C)cžü­3&]á,§u Ü÷_PÈUç³w³©ˆ#¤zÙÃm©eû6V¿4½ Ýf™ó pûª¹ô±$]3UæhÔD°ñ¨úXÝ ¥MqžK·¢8S<…9¼¡ˆI xÅqÕ™r‘1jé´�¹‰V¨GÇôÑ“]r¤ôåó]Öm W|œæP㟖¦@I*ZY=¬W̪1âIfVá�qµË~MÊþ6²™/Ô¥¸îìoŽ.YÒæŽpÄtyç7fs6ŠVj;‹2ÀÁ„H¤}⻀¹Á¥îT„ƒ›W_ Aï˜ÿâAJ”ŠÇì8 Ðù8¢Âȹ£ó*f ¯ãú"ená�x3áK¾†û�SÉqÄ2A¸Š™ˆ/ÉŸÆ@{9¥&oWlŠx4ñÆvYMÈ ðY¯æP™àîBãÝJÖ~èù¾GßÑÉ"‚r­"ê.ŒÉGÅž}Þµê,žü&Slé[÷¥Ô_çÃ6{yS`à&CÜvú\ŸTlzÙ-MÁl>‡æCËüc0á¥÷§j2XÓ‹¨œãµÎG D¯_—zÎ+°˜ë}§?æ`ñ«Òl/ç-¬ ­ú¯�…�ÉôÖþm™wÌOÀ§Qždÿ‰À–?‡µ:3Q(Þ};šº‹° /í� #a<ͲìRå¾?¿�kâùyué¤Ñz~Ó?ÿ\ t€®ÚöÃ~ÍË1¥^t/xÓ§ó9}icÉä ¦*£·„ö oÀj’7/Ú,×[éVÁÿí÷‚ò’¡ÍÄšZˆ—…ž"¦Œ´è‚â–4‡i€d´ù òŸÓ¿ˆîž+wIxÝ_(õkp±Ûæîø D Ó[6lÙ³k{ž/:AžÈE<3ÿvѤ®;j/9É­E¾!t €òÚ"«j™`ãœ/Íù)pžéjB$½7pÍS~ÿ`(aæAšîI¨Ah™Lÿþ©–)G â!i|[²h½ç{ï<¬t£|(œ´Áñ³ôé6–®µwâ6i޼d~³F ´ÃÃYByÙyù£ØŽœA¢ìp6Âãè|lEMòÿro jt²ILä7%¢üؘ¡~üB‰õ÷*ð¥óh­ª¡g� ߌ½bR2œbò†.ÖlCEÖpA˯ŠÎÞúе¼þp•70zÈ/rƒíÆ}¬ûØùýÎÌ‹iÜÅbõ±Ãÿ¨8'<7NH9¢ )Û"è°ø$AŸ E,7ÿaÔÕn€'ÕYûV§H­ûTº]^p!Ÿ+tBÿ@&‘çÆ[9pñÚd« ù�Ÿ-jBÿ �|n�»HS �!A›2I¨Al™Lÿþ©– AÝðžµÍPñAŸPE,7ÿaÔÕn€'ÕYûV§:€IÀŸotBÿ@&‘çÆ[8±ŸqjBÿ �|n�»HS �A›vI¨Al™Lÿþ©– AŸ”E,7ÿaÔÕn€'ÕYûV§:€IÀŸ³tBÿ@&‘çÆ[8±ŸµjBÿ �|n�»HS �2A›ºI¨Al™Loÿþ§„€Ñ€Ì!‘[`è’ˆKy¬ZAAŸØE,7ÿaÔÕn€'ÕYûV§:€IÁŸ÷tBÿ@&‘çÆ[8±ŸùjB$½7pÍS~ÿ`(a A›þI¨Al™L!ÿþªUî°Äš >^õt°TØ?§è2sîMÝ_ï+÷Œ³Ü#²©ÁþŒ|g#ÒRæ»É6ö äê%lû<¦¢’ ¨xú T×õ`äšçêá°& þg«ìp‡³€=Êð Æ¸˜…Ÿ,ŽR&ô[Lg›áú1à´ßMûްSM>£_ÑõñôfK¼™ÿâ+øÿt½BÑÎþ§,…äœ ûÔ¥Á>çkEߦÀš¹z<\…Ð�ÕVƒ÷ÙDî’Öõ!¯u=z‰ÓØÖŒá‚ƒÖ«£êÆÏ’Ø$Û¸põ`o×"g9ûH+Ô6wÜ$[µÀ�²E`pÕIl…Æ=­râ!º…•ðßh´éÅ­#ïfOoÂåƒV³ŒäñËÒ¸Z4 £@Ô"N­M,$£>z;A““«£™Ž d~vAû£1ÖÄ#õ¤1_O¿ç`ü«”Öa^ÄîXû”2k‡ÛèÓ1D­È5ß tm•[Öº ¢ ò%­O?õ,ç±/7Þj¸Çª BºS;yy‹”Å DÒëj§CâD PÃ)«/i¹6Qñ�Rþ_ÀÑ®[[+×°x&$û—�{(z6ù0oÀQEqÁ«vÊ×9ág”c(ÃùAÂ42R±�4"gƧÈ9c‹mÜ…œÚÅ?Kv°‹C¥Xš?�rê“}w‘&8Ÿ…‹EËsyös¦«QÇ ý ó8š(µ`T ´[,âíþb™pà¾ãàǶWL5²í×þ`bŠ�aP� È€³d$pAÄõp+ú‚±Çs»;¸1�Ÿ¨4<‰Ô¿e(ªæOŒC=cs“¥3þIøˆœlp‚¯/ò±þc�±Íµ§Y.]("WBhóÑ”HÍLÑÄíÁOÜ5P/užæcÅ}™W'ëªc± °bíg/®,àñ]¢=S<`¶Z¾”«sr¤Šõ¾;þó·ªxG˜Ò øËYÉ–‡†ù‘Kèõe6I~Ú…]¾£/?ÜȾ¤þeÓÒ®6À_uåÜ$ š¢Æ&u•Ž–f�ØBøEšž4ïq™�¥9~æ�øy— '1|xÚ¯¶;©b›adŽ˜™oý™Ò‚Ájq'ªÖ‰¼_æÛMÔRRŒÂó §P�<0È~¡É—Oÿ>Èæä;lÚèɉ\K»¾Tß½3Bl8I%¶²;ñ¼¨“ÐçpWÌš&ÆTS…‰ò�¦o8ygŽ¥Å:@:Á¹ –Òî1ËÞüK•/W¤W¿~ Ce¶qG˜]¢€1Á¾ ”_'{ÝfãaX80j9énÅB³2pwLjœP!Žu9È—Ø­ àð˜Õh…80Šž_°%‚/x=wl¤.çÐjüùÊfmÝ�À‹uh×ý ÝvÔ8ú@¨åÁÜ7g´æQ¢¤ 0ßÞòù¼R‘IQCªþ%¦Q»hiRwÖYéÃIš>óL£sR餖p¥»É'îöïñ_À8§z7Våè—þH…êäXQ’š<)•Š?äKd¾¡F¶ÀßÙ9õ,ñË©Sü@ºÜ�%(|› *W8þ`}ÀvÖñ[Dm¥*sø£Ó-‚ÅÃOõÉéX¼X@Y¬ºö_êÔ"˜0®”Ï! «¥„—ØX—"%&§ÝÈÁ>00 /�?Ýw[k·ZñçØPoaÌ'¤[Rª"¸\e×v'eC'°¦–ÅZ˜ïê²!zxÃ§Ö –L&ê»×3l¯'‡�GvÌ5]ÏJžO7äyêI fûSƒ�ÁƒèÔq#+6Vìçòšsu§Æ´)„V˜¹ ']’]Ö>¹Íœlö_Z+}Éò@ ì:ÜÁ>‹oAàoDÀ*h5ß�™It†îBtcQU ü‚=LÏ}°öB7mS,“ÕôÄTqž=jBÿ �|n�»HS«åôû¦+Aš"I¨Al™L!ÿþªUBA¤hJÕEqZôêz8!Až@E,7ÿaÔÕn€'ÕYûV§:…вÃ�mžtBÿ@&‘çÆ[8±SÓ+<[@žajBÿ �|n�»HS«åôû§AšfI¨Al™L!ÿþªUV Až„E,7ÿaÔÕn€'ÕYûV§:‚I+MÁž£tBÿ@&‘çÆ[8± Ž0“qž¥jBÿ �|n�»HS«åôû§AšªI¨Al™L!ÿþªUW AžÈE,7ÿaÔÕn€'ÕYûV§:‚I+MÀžçtBÿ@&‘çÆ[8± Ž0“pžéjBÿ �|n�»HS«åôû§AšîI¨Al™L!ÿþªUV AŸ E,7ÿaÔÕn€'ÕYûV§:‚I+MÀŸ+tBÿ@&‘çÆ[8± Ž0“qŸ-jBÿ �|n�»HS«åôû§A›2I¨Al™L!ÿþªUW AŸPE,7ÿaÔÕn€'ÕYûV§:‚I+MÀŸotBÿ@&‘çÆ[8± Ž0“pŸqjBÿ �|n�»HS«åôû§A›vI¨Al™L!ÿþªUV AŸ”E,7ÿaÔÕn€'ÕYûV§:‚I+MÀŸ³tBÿ@&‘çÆ[8± Ž0“qŸµjBÿ �|n�»HS«åôû¦A›ºI¨Al™L!ÿþªUW AŸØE,7ÿaÔÕn€'ÕYûV§:‚I+MÁŸ÷tBÿ@&‘çÆ[8± Ž0“pŸùjBÿ �|n�»HS«åôû§A›þI¨Al™L!ÿþªUV AžE,7ÿaÔÕn€'ÕYûV§:‚I+MÁž;tBÿ@&‘çÆ[8± Ž0“qž=jBÿ �|n�»HS«åôû¦Aš"I¨Al™L!ÿþªUV Až@E,7ÿaÔÕn€'ÕYûV§:‚I+MÁžtBÿ@&‘çÆ[8± Ž0“pžajBÿ �|n�»HS«åôû§AšfI¨Al™L!ÿþªUV Až„E,7ÿaÔÕn€'ÕYûV§:‚I+MÁž£tBÿ@&‘çÆ[8± Ž0“qž¥jBÿ �|n�»HS«åôû§AšªI¨Al™L!ÿþªUW AžÈE,7ÿaÔÕn€'ÕYûV§:‚I+MÀžçtBÿ@&‘çÆ[8± Ž0“pžéjBÿ �|n�»HS«åôû§GAšîI¨Al™L!ÿþªUé“€‰À"“¤ôK³iü• o •Iló0‘ P<‡Œ °Ù-*ªâ#Û$Òª•%Ë"AŸ E,7ÿaÔÕn‡ðmu€‡Ÿd¯€üô]'}Îj@Ÿ+tBÿ@&‘çÆ[8± Ž0“qŸ-jBÿ �|n�»HS«åôû§!A›2I¨Al™Lÿþ©–Žº&Xà�G"AŸPE,7ÿaÔÕn‡ïF ]ÞÉ_æ%€Nûœ À€ŸotBÿ@&‘çÆ[8± Ž0“pŸqjBÿ �|n�»HS«åôû§#A›vI¨Al™Lÿþ©–e/|e’ŒÙ€ AŸ”E,7ÿaÔÕn€'ÕYûV§:‚I+MÀŸ³tBÿ@&‘çÆ[8± Ž0“qŸµjBÿ �|n�»HS«åôû¦$A›ºI¨Al™Loÿþ§„]ªz4”�&仪Ûb÷PeŸ}S¦¨Å–‹)z­«;Äýp”ø²\ÿ˦ަ|rU˜ñxÃ�œ2ü¾Ï¼øÄ–QAc’ɆXQl~ë|ÈüÐqÝ0|ö»ßÏÊo¦õþÝÇ.É"N‘ ùû¸1Ò šŠ¢� !E[Öþ‚�:h•%Ù¦¶î�à�@Œå·†¡ ËEòÜ,;uƒŒ}ãáÀOäÁº©l! ¹_^É0Þ§ƒÅ ”.5@Ë*rä»2Hµ²µOÕ5P¾ €({‰džMÜTa8û9wƒêyö,0ímÊù+¨Ü«ÛëØÏ’ųõËvoÕúRiýÖH ×7$»;Ž%Dtñ¿'N�j=¬Ë4eùMµûK›FߘˆLý²ð4ËJ'9;:ØÃ�“û*$‚wçVð�jf6çqpݺÎ3 Î˼a;=HÛ· ;SzÑ—Ãì0ê»¶æS^x9¹²LæMAæ'èÓq²Ç"ß.”¾3*7­VµÒœF‚Ë÷ipï!¬Dh)r&¨Tª§3÷ÿ¹W8~´;æ^-{f¢AËyäWYª{mg–Å æw’ƒzl§ÎÔWÞ�Šd{þÔÊ‘«fÿÿ€e]ÌP‡| \D»Œ4´CÁ'‰^ï(7/×QçTÐD…Ç8[ ¤](Óµu§Ã»b¦«2¶lŸk,Î[vî’Ÿemrºõph†0žŽ›+ÿ[_Ãã�b¡s},3Ëoç!–ø`¶§9©!WV=jÊ%Ùò¸lþÈ™eȯAn{ü6¶~`ñcÀsôJ;ÛDÕþ;ô]óáÏ5º�¼Oò÷/µÕøÞí…U•”ÉCQÞù»©7l ã+v‚è“r„=ùr Ìa>ðÕŒë/õ x_•Qò¼öwJ[Cq\ƒ™äÎ>ŸêžÎ相Œvà”p7@×KÇ,°8oi§ôÇÞP™ù¹‡éÃê—ã÷¤V(­ùr ™ï|Æçâ‹°Ð:íR}€.ÆþøÁÙj’Ýp†³ö�ŸöÅ ¼$›†ÀÕIe¸]Óï²—eÀ<£Qø¹v2Ÿ¯ÄQîS^ R¥7wÓéfª«‘| Ð#EïwÛµòÏ~5–„‘xfaú¢ñ¡`z<Œø§¶‚[Éÿ¦bw„>g�â „MŸ…Ëœ[hÈÏnÉ]š& ¡ò@.û8ƒ’PŒ)M¥øÝÁ|Aœƒ#�Ó×û6¡ØA%ÑóìLÈó“„�O0}Bi.NÕE,/ k@ÄÇ0²ë@&ÐÒn�ÖýSæt¹DðÏ<ÛW*Ã¥÷ã9+µüsbˆ’;Åo=˜Ð®Œ>ÄŸ`¥ñ¡nÞÓ󭆇@Ä®>ËGêEÛŒ Ìjùú’õ»’Ü[±5‰ÎyóÑß—õªÁ¶úl¨f;,S;ßxpy¢ÈZ‡ú¶ÙY —�rŒ³ �íagËY“z�gep¥ cL¤e†V.T�.!Dk�šbi}ËM ×3“xRUÊ‚Uš(˜I�½�"—�ò»‹©ž™ú²ÇÝúkÀ‘³Ø�[-w«ã ¸L 3ü)xL!’‡!¹ëpÀÄÓø0þ:wØ+0ª?CÔ»R@¨‹†¸0{«_-7;f+ö�ÀÎÈe¡ËáË”))Új”!˜#Cùû¯b‹îØl’xºƒ¤Ð´ù€46û‡½[Šwµü!ëóÛÕÃÞ®ù#ü-,:—Ð_Û´Ž¨MOgF­.9ÑÐ2\�Ê=µ#ÄíY‰Ö�„M× ­CV çßz1Âáo�å?cÒ#pÿz²'ÞÒzøãñ/Q¨_rŸïÉ­ú�åëÎæŸõÖ‹;T�Ù_6Šg] èVìËr¹¥ŒÈ4@ö¢àòy]дÕNçß—;ýG'¸º—Šì&I ]Õê2ÁoWùðßAâvF�É©ér¼é§ïXÿ¦�'/pç¥ù?);d®Áˆ¢Í©ÒÁsÑÐØ§)ýa�èŒ:E®ê ®»—uù£^P¥‹=þuZÕTWqλ@ï͵©,?;Y°¤¹�€Îv¸ ƒ'áyç¹_5vÑ®¿æ¦UG÷ ùÙé-ÛØsºzµ_cRqFÜZ½ôÖÖ!TguS/Aó £&z«gl,p…Àûß§-Ò,#‘!eÔ„éÄ}QZú@õ¸¡¢q(3˜Ò�Šè[¢Dbû–:ò‰…–p(ó�¦MøÀ=ö5±ôÁ`µg:ýn›ÇÂŒJ)ti {ú 8ß*£"ßuž6ºæXŽyünºöä¿ö©BTR3D@ä@å¼µ@tº³gŸôv_Û_`<ø¤™.¼S ,´/€c™„<¹#Ì×�"‰×ÇŽÿÑLø5ç|Û-ùò L?ľüµ—H6Ù(”öø÷НÝKZ¤F¤ÑïÒä�ôþI �UJoÕí,^“ßmN²ý˜äg㉃CS_t/–*nsë±áQciSÊšñþ’U> ½XMˆÑ´´f#L¢† Ô�é¯3Ù.Ñ|$Œ&ËBÚ†ÎÑbm³†È|QøÑûeT9Œ+C9Æ·Sÿî±¼}!È¥·Œ)ŒÞ7¬¯U*Æ&ò{‘¨G4Q” •Ó©ÀŠ7–TÄ4ýo<¾$àõá‹|ô) ;q8@f9Ìí¶ô¾EšE7ô³òŸÓ£%ê`Òã‹î›Í-¥Wú lPóáVjRl§^žÌ_¬È¢¾$�N]" °QG3þ¶¥TzOÁ(I�í‹e¯O5AŸØE,7ÿaÔÕn€'ÕYûV§:¯£ ´$Ä8% mOC¢`+Ÿ÷tBÿ@&‘çÆ[8± Ž0“p0ŸùjBÿ �|n�»HT’6ߥüx ’›­J Œx—�WA›þI¨Al™L!ÿþªUôHm¤«·€aß@Yq)cZ4[=³Fo•竲Y‘œ“t_Õ©ÇA»–1à;àï†ÃF·n™*ÇI±?/$ÄB?³‡Þn— �åkÝN{uU?KWé¾b}y… y<ÿÊ‚æXWŸéu¿H§)VÝ^«­"­+ÿäô'phÊ9á~�ñWgw ß3›œC™1èj•sÿî„N^ž*hÛßÖ1ËíJ£‡H›KTt¹{ú�wá )ö‚µ�ÞDš (UèÊ •ÿl*ú�'›Ô62JÑ�Áû–ó¡ŽtÆ_B¦mUön?nu3h‡ªœ ÝPB´nÙÁ§áâ‡ÊPX׫X÷°ÿTïG ⺱†^ÝYCc¶€Èé �ߺ°{v|ê„(0™Ž+û?™[9  %æ¶üá丘@‰¤m1eš§ žUlØ­M-Û�4ò^6J> r¹ð HSÙCÞ}TY+Ë·šsüÔ8̽ï›îóoò‚~]–é’ݰAM2âÒª’¦Hãè?Û‹|ð< #í•VîŒt†�B….ÀÕ ãýÊ&gÁ7=겫ëpmJ5¾C݈ODBæ"s�Zj8…ÀrßL’³£eƒcÄ…îa¼Y:ŒYGØl/ífMû¿Ì4Û”b3��X.eåV_(*úO#tŸ¶GŒs¡§@©µ7JÆÔD§à£Éíó'1prK|ŸI“Ê›»m?‡¸ÿ”}kíúxI ©a€ó~wŒ`Z9ÙŲ”Hm2ß"rðbøÂQ!ƒ ß‘gÞ*”Z“YÈuN;€™›:bªü=øÿú±Œ¾‘à­pÝY‹SV¯œQ‰÷/¤áþ½ÄUÌ‚Ê@Ì‚âYqj%°À\æË^ÐNží—ùÒöl<”Éû>:^ê8 †9ÙÑ`äÚVîV0&…`©ì ÞÓöºÖšß2ïÁÙ¡É8c ±tJ =’ú¸‘@ºý ½Ñ†Jbîs‘ÞÉÒ¼T¤"032SÝŽL• KW›ÏZÖ’Œ¹±œšvûX"<©ÑÚz)Ùl‚&®µp¼hý¦Ý-4¹"Sm»úŸ�iƒz¬-óZÆnÆD û¶ZO?÷}rO´þ[Ÿ2“õ•ðíAùɲšH¢ëëëµ7›ÏÒ–B½»h`nøGt˜6οÃh¹MeL,C…�Kâ XoMÁÐz¹Ü§’íèLœ;¨Q�VÈ?C±>–ïP‡6�QÓÝòŽõx~%ÏÊ ¢eÃòؾ|%hi°}$¬k’ˆü O ø\>j®pãnª�{Ÿ)W§ƒgCù³ øý›~i–À\ºbö/K˜}²õƉî˜p�†hbm«ô ’ñ§ E,Šˆ=ZM0·ñ�zZÿnØtkŒ¯_�b› ºuÙCäTeN•Ú ‰uŸK’sOÛêµãØ\©±‚WÓÛ®yHÒ3>†lÃ]¬ãö[‘BQ/‚,_Ž;Q¥E­ã0JKš§OJðœÄà;þ×AÒ혬þÅ1^!ß�Bž! j_I�¿uÃÐÌuUÍmaJl 6ƒWì›Üß.±ä¬elƒý1™ê;Ôcö�½›D·¥"r+H…Øû|᳋ë�ZysmnÚáÕ)­Â' Ñ L ¥ éÜ"‰6¶Y ÖC=ÔfhˆÉ�ÈâØnMS•ü«àF[SvÊÁŒC¾»'É{Ð�w8x»V ?l k˜THæ¢=-¯îíÀºäļâGH´Ñ Iº>Ék·byEÕ µJƒ—WúŽ¡‹„J¢$é¶Ën i̘�G1k¹~Ъ¹Žñ÷xt]§{¼ óó„z¢yâ3¤ö]co×­mÀs£ìQíÛ—Óq'M(€jÇ…þÞÓIˆÞ  ¤à%ÁZÙs¹èÊmý¥hþä<ÅZxF­£ƒZ¨1*ù‡FùÕÔ•Å}™}ÛF\i„U ÜŽcÈÊ­ÓÈ€C”#!¸³BŠÅ= –� —Êxáÿhˆ®€­q“xkhú¢Moý‘~›�LRÄ;/ü�…y=fiŸìï�<Ó‘‰;K—»ÿ�x¹zsɪ¶ø]YÔ*õ§qNLí½9 ¾Ý_0¾Ê €Ðð#îJ�;Ϩ‰”BL_£ƒW�­{lfgƒw ¦çìw¾ÿsÅ–ú÷ÕXa…ò?å°–¨ñ¥o»ÿç"x~6a%äȲ)÷®Ú´ÓÍÔð‡þBl åó÷½Œ°•š×™×â*‹ÛV–Ù>y¤ól@N”Ù`šœ±®Ee²dèB0mzi0|)MÖáH'·­®çªª%æbô%bnLÐ"WIÿ j&ý=Ô.3÷Ãvþ1ös4X.*â˜^�ŒµÕ�™w6DXï~Ý$:tñÏÕò�?ùÀ1?F7>gLm2«*€j1©šëžÞ=MÞu¡² -Óò­W:±®­6)›Ã Ä.rÙ :]>‡Q3 K~ \%ê�úÓ}_ã&üqZ@;±R}µJh ôŸvõ4$Ã}Ì? %+ø„-â ê3ËÛ09<ÌDdFN¡ ˜^z;ÐÊP$Œ-x`ú>ΚõH©ç!MéáÀ'žEñhú/Ò¬<Œ½‰z\8¹„™‘§•lìyã~šÏx?Ï,Ê;ýémAžE,7ÿaÔÕn€'ÕYûV§:°ÒîS‚OðªC �€šðû=3ÎpÇ{µ£,ìý Ê©¿jÆ¢¾½*ZˆÑ‹�EK2¨±âׂžÅŠwõ�ªcâË£Gž;tBÿ@&‘çÆ[8²q@Ì™� l¨þ§Ä aŸËBìIÂo»Z2À.È$[ ᬫ ž=jBÿ �|n�»HT¯“jô»H~œAš"I¨Al™L!ÿþªU«€À×ÍÝ*Þ ?ô d·WrØ\‹íÕ'¿">í±ú&Gò-ÛºsÎô ßlGÀ¨;*ñì /öÝËQ'Y2ýÓVßpqëÐyVL‚oè�RzW—š ê›4#FìK‚„Âè}Þ Ú˜¸¶ëk—Ž‘xnéCª¨ Bí…E#¦14×Lrù 0nÐr€FsÊU-6üK,á­«Èyæc‘##³`§@)¾’ô%pøãCv×mZ ̼íC%z§kâƒt„YbÒr� ЉC±^®�ÆÖájóh8/Í=ƶÔzuÏF¾nçòT9—Æ.V{ŒðÅ6@¼áŒâxšfu“ÊÇ|[àHb~x[g …Ûy²exú׿åPÖjgnÃÓf¼ÍGQÒ¸!j’x³¶ÜMA}Yü®Ñ‚“û‡à»Ü~ÇÚ–›zé4Ó°¸’;Í8·àÌhïݾöÚT”†(µGÏ„ý>±„ÿŽLÒÇ.âVã¢ðHN(Cb²®ç{Â2XXP¹Û±{6Ãçq*A‰è°Ñs ÏÃqÀQT>'�%r"Ú³ñ¹ç:ÇA˜{ã§ æ$;¢jŒ�¢ŠwÈ’Ì~ß)órQIè„�{g =6Ì`A»KåiP�’Ö‹=ˆÀH!ÖnÇï8=ñ»é’‘CÛðŽ⬑pk¤þ ‹�‰£ÙÊÌmÅù.lÄZ>KÆÅf× »ÜMUk›(üÁZ¯ÏÈ„š³Zqäþ§ ÉÄØþ°§’É^/ø×ÜNAN£á�Ÿ˜~“½Ié‡ð¿//w£íFËMi‹Þ»ãþ­¡ ñ#KäóšÄ—Ķ/l‘M´È ‡³à_ˆ!2Õ Ö=ZQüUáã ¦ïÈ_½4ï+;ïï'nó¥4Z$v¹#ßc lë&´}-,ƒÕ!kYÀO#ðIB|¦wÃ00ÞF4YËSª÷ eùP^whx`Їþ5n^Òn¶<ö®˜Ó„¦PÜ ¥žÉŒ_ƾǕ»õ}9lˆ"ƒ°5ÿì·oùàÇR¯âý£Ó�½çsøøÒ{Î ¨ÎzÒØj>˜<}Pñì>Y!¨«²ÛnÆ1éʣpÜà¢,'-zô膡‹ÍþÝ0˜#Eü;A/ž�ʉhÉuÓ|�ÅÔö­ 91äQ_ Xóv!OF|Ø?åͱh¨Â=;|Y D™†(Œ,[¬_y1Í_á%Oq‰;”2Až@E,7ÿaÔÕn€'ÕYûV§:°ÒîS€ bݲÑé+–n IžtBÿ@&‘çÆ[8²q?¤à,žajBÿ �|n�»HT¯“�Ö ¯ *S�Jn =!+AšfI¨Al™L!ÿþªUׯVk/ûk”P ÿ¨íîV$EÝÉ¢j.!NŒ¶&žw9–‹9cЫËLýñk—3Ñò×'§z½!63ïmg”€È7=m`­·�é5mX/¬èù?,ÔብX,hÊšå–÷6ý`ÇVœ+Í'�[Àzîr÷ÌM!!%XÞÄ%§òÝÝÓî`SÀÇ ÝªWþ£8´Øïç«™¶&CùmãqJo+�ªƒw;Wª ˜wÒ0J¿|ÕÅ_"¢Ëاl§µù».p Ä"ÌÙ&ýVDU]-7‡â.Í3Î3jTÁÿ°P9Ý,nÆ®&âÉÀÛÑt‡æŒbáü$òõ\•SUõB÷ÿÉ0DTÜö_‘—ñuWaaxyî FëfíM|7ô¼ÁTm€'¾:v£(�+/2 ‹Ík]8\¾ŸqÚÍï�Y÷¤×Fé&C )”‰®Â§ú ÷` ÃeÁ…uõ‹?Gð¾~!Zc„‰�ºÂƒ©2mç:ÜÍä*ÜÏU%€š6`^Œqàú5ÐY0s…µÝŒÓJëH̘m�1Ä (*mðxO‹ýŸOŸBòôÊØþB¨væzM§ç¢ZG´!"f>Tî÷_˜ZQIÿ7bÜéøŽLš,®µJ¿{WPP”�ˆQÃÌvŒ”ã;—Z¥wÐæ£¿ˆŽ¯®/Œ\ÈÛï7/SdB Z•`ÇÖ(Á'+y½¤b,Å0]yÆ÷2›òº{h(`‰ÅÛáí^ð  ¨N8\ë�õPÇø<b®öà 3$ê˜ B?xï’ç‡ð8ÞçºåÿÕ«µŒUŽÂÕ€œÈ� ©ó”³»²þìðZ×ð®øYÁpïþ‚Ë1�ô(Q–1›öØô´M<¥y›RïQè=ÖÝ/%Ä�HIR}Áë1Ti™¹êv5òÉ™ \Fg§ú#|] Ç-¨ *ä¿IRXÈ1 ™‚Ùý9aVuòœª²·H¡lòÌ7©åfsÍ t öÄ•,Êd{šÙ…�©…E^²Ö;Õ­)¨¯±ªÐËEU�βÑ”—íbfúÄdÍj'QMây{Ä«²úa@+;EæD@ø'ˆ'E @Œî#;»ÈuNìŠ4©‘Ç½bÌ@ó”i:òv´ å°ýŽOEôýG/>I ,¿Êe§ =\tü‹c]þ²ª� K#eÞÿïÿÆ•¯;:8ú7[:ï²²^úfˆ0H] ²¡xi”†XÈÔ[":É xÐ~…"é Äüä´=Íj+à&lî¿+M?aue5ºh¬2°‰"3g�7MF/ϵf IÆÉ�¿û€6óŸíd™Z¬44ÃÏ-Á·¨©CaÕO�ëÌô�ˆ¸Øý'²MÆe‹CƦ°¿ø¹òùáT ÔHé}}S KGk§Z(÷A1çCâРÝÂ{ ¾Î�½–c‘öJhì}�7‘o¿I€e¥�Äc¶¦ /‘�ÕSR_vèï0ó:aÑî›) ùX4nóä‘=2Z‘Œ“< š/ájíòãù,¾âÛ2J¹O‰øI³Uò^ÿÛ½¦VÛnù6*ÎØK¹åª3ïRÜùPzâ4¹…3Až„E,7ÿaÔÕn€'ÕYûV§:°ÒîS€F(ÓÀ€µÛî‹4èwA1ž£tBÿ@&‘çÆ[8²qÓ8Çhüm�©Ú‡{R–nUž¥jBÿ �|n�»HT¯“jô�2AšªI¨Al™L!ÿþªUm?Àxç²h.õ'€ú¥7!^+8+I!ñÊ>ÕÕ±Þ_fí#l�Óšlæ•�Û·+‹{бMˆk…ú�d-#›²å6×�{ÃnzV«—¦­Ï ý2ÞuZèñtï!‹LE.c3Ùe®¦È©8œZ[ËGênÞ»aßôHÕzÕýúÌiR<ˆ¿×™Ï¦åK°FÈÊ/üìÔ}ý%ô=}Xèžs«ëûp;à°»<¤Vpt©§éùæ>´qµuäN‚ÅS35ê&Þä:–À‰BàžMÑÖ7ÜŒ À C—«�EýòøÒɺ´ –õg‹uÛP>¾gh”‚·TûJSDvf¶ ­Ÿš2 �gÛÊÃMÀB‘;ÔÈûŽqÎÄ7l$Ozd »}ÅÚ¾%¸ÿ*W_aÆøúÂz¬¬£Kýy&Üž¹ä�~¹¥Ø&™DßW˜³hÐ%ìk° �ØÑáYâB‘bÞ�mgO�âÁ(”Å}‘c3�SáXEo')’j!¬"ãÒƒe:6”>´xùI°<UEMRý9x¼^ŠÑV]ÓµÐHÄpI“"º·!€5zëÇì‡#<'7dQÇ`¿$DQ±ëBzXæE›gE©¯�)q_fœC5G?g EÅ«1ñ R5´ÇôêT7CEõ¾, ÉÑOåb�„§8Ÿ!Ùñ‚ñ ®sšÊ;�…3Nã‚d¶oÝ�jEüŒAÅ#ä¨ðÂr %ƒîúPLùâðŠ2¯Uw°XU¹rå�q/» £™½ Ä—Á †t]ý -§yÊÀ-ŠtP†”!XŒFR‹y˜tʑק×ákG´%Ðî}á6AžÈE,7ÿaÔÕn€'ÕYûV§:°Òîk¦G@x¿u¥¢à÷` …Bpš4VÎøžçtBÿ@&‘çÆ[8²q?¤à0žéjBÿ �|n�»HT¯“�ÖqE©^©µ¡@³p#á)AšîI¨Al™L!ÿþªUéä€!`qÍ»óO‚8@$AŸ E,7ÿaÔÕn€'ÕYûV§:°ÒîSu PþŸ+tBÿ@&‘çÆ[8²q?¤áŸ-jBÿ �|n�»HT¯“jô�ØA›2I¨Al™L!ÿþªUëj˜uYB~þQ†.%†›3ãiƒdmë±Ëƒ~ Ý‘ðáŠ?‡´Î8…+%ÁfÑ<�šß<PnoŒ$WƒŠ‚¯þCäm“;Ÿ8Z‰®ÒA~�·( æÂó—¾�Zf’ý®ž--hÇLñ® 3î¯WŽ×7´ø§Gñî�W£\´ ×j^—TEŸ%1]ŠÈ ßÊŠŸš>ôüI~Yy-U¼õ@Óž£-÷Ìà?ldû¤°Ãæ2±ÁÍò^nß ?Mü  “,q¦ŠFk\b  ')×–YmÆD¨ræ+OÓ£1–ÔÓ39ÂCÐD]t7y€�,ů÷‡R'…ÊÇayµïô‹·ŸEÔK SJxf�Œyýcf»ûëC©ä󤛀 ybëû`˜•—ê/ô%7ÍCXQ s0Óg­Vwµ{õ‡Êg`c.ûð¢.ÓÛÕ¤nɼ\©%ï©·¨ÏjÑ”©j[&ZŸŠe{¢£ÕÚ4ÉŸš{…¸0c_HQ*VÙ^¥ÿ …³Š(·€$Æã‚$%dHÉÆRʼnXÍʪ{˜`™ÚYÒ›�Š]­©º×ývïhÝíóëÈÞ¼+ÓÕ‚U’ÁDËkë�—h6ýã�þƒoáöwåÀRf?¿¡ªÊDŠ.Ì®Tâ€MNËë­J•@lvÃ�¡ŽF÷¬Ü’Oxòÿ’ãd²FÝ¡uŽE[àÓmnb1œ ×-PU‘‘nÌ€ù$ý²ì“&á~LÜ ÷øjË(ñ¬º¼ 7Ít4Ò}jj)íA S� ’¹Ûÿ.Õã·ƒ®xh5§ F¾¯ÒžjÅéTy+T º{ƒ¢t ÃË‘/}Ë\pÉÃ902“¸¢F±àºD;fy«• 8Ÿy1Χ¤a½™ã2ÙÖ}^Ëî¸[« õ„Òtê-Þå:ª‰X8ØRN�n��5T+øO@¥7AŸPE,7ÿaÔÕn€'ÕYûV§:°ÒîS€ dµ€úË€Zs¾×¾µ5ŸotBÿ@&‘çÆ[8²qvxøô€/ŸqjBÿ �|n�»HT¯“�PsÇÈíK"»2¿lÁ/A›vI¨Al™L!ÿþªUBIÁ Q'Á3�; UH‘04¥/ $AŸ”E,7ÿaÔÕn€'ÕYûV§:°ÒîSt÷VŽŸ³tBÿ@&‘çÆ[8²q?¤áŸµjBÿ �|n�»HT¯“jôœúA›ºI¨Al™L!ÿþªUé]PPÇõŽEf.¦‡°”æÏĦ Jb®à•Ù Ôï©öU_“5ÆiSôŒ•cÕÁ5’ð’´/l}ènÖÀ÷Ÿ¹é‰x?Ãåç/~V\!¢©Z 0õ3s¶áýK̶¥T½‚T´|鋦hÑžÂhuäY¨^pç"„`{<ŽË²/ 1-(F^'¥Ì+oþPvz˜haÎ%[(k®;A´¨î·ÏÄfm˜©kqa.M&Dì�nêž‘nVpI y>Þ TÞ� ikÏ¥¯Zt·£š#boɘ˜ˆ¨”³ÁìÅ‘~Býf-£±½†‡o€´ ßO`Y+ ²¸½ì ˆyÜàíü†‚A·zƨá.ÇyŸ"€g‘xðØXå=óNû^úPç�O·dš““Ò-гªÄðÛhêâ�‰[lð~±å'{ÔÀ5ùN¤ ½ˆÀ’²øÃÿ÷ÙXE‘�Œ=ÀÔ+å:÷Y÷É‘& ®`8Rí¿ñ"MË¤Ø #´„~žO¿D÷pw]i?fšB�¶ôIu#ªMÌô’a¼ ‹ ‚§Âä;mÎoÇuæÑ–Dœ°G†´yžBž³1¡£8aϽéN–Áÿü(˸mYvs¾ü} u*꫿̳‹ìGEé·�ý: “Ñ,ɲâWøÿ»g(÷;y&•�eQÓ ONY†`|ßp‚çQmC¸8)õë 6°Qbµ°Ù&禰ê¶We�ô-\F!CòÂ�Ô­ŸÀVa�Ýá½ý÷º(ºZÿåà2ÚXª½ZµªÃ ]W÷Šó¡¿‡¸­rò¢è¤æ�Ѳ+zÄÑ’ÍÏý“IžvRd3 ÷¾Ûì£×Ц6¬ GÛ«Jûªü”¼•�]¸F¸Ÿ7É�MD¿°!Á¡N’_‹Èç=̓{H…æ¦t).¯=€�tJ´°…3mnþ‹›~ÌÃÃKðs‚vô8íM–�”¡EÄ’¿þÍG®ëWq‚Ý=¶[x¸ o^£*d¥è¨yÿ�cIg_I””›˜È BZÉÏ$:È ðýBSÎê²qYÐ ¢òþ#ƒ†XpÑ‚Wm”£ì3b {Lèù>爂d-�ó»»(T29ÀÛ,è&ÒÉ ö/_^"¹©â"ÿÃßP^[åyLQ†´Nä£áÈñ¦“*¸§—žÚúÍB…m{ñÏ»y`¶ÞgS°ëZ6Ükëõ}bë€\ ŸâÍ×r¾E¡LaÎ#!´Ì„ k°'& ã?~nì¼°ñÐZw¬ý,ƒ*%PµÂ„´µ7AŸØE,7ÿaÔÕn€'ÕYûV§:°ÒîS€ ý<ÆÀE¶ÇqÕÔvÐMBŸ÷tBÿ@&‘çÆ[8²q?¤à/ŸùjBÿ �|n�»HT¯“�P™²E¸ðG Uñ:p8á(A›þI¨Al™L!ÿþªUf¦8ä ?³:œÃp#*$AžE,7ÿaÔÕn€'ÕYûV§:°ÒîS0p¥ž;tBÿ@&‘çÆ[8²q?¤áž=jBÿ �|n�»HT¯“jôœAš"I¨Al™Lÿþ©–]ºš cöЉfÅ#唉|…Ę�3¶5 ]Eòqw:t—‡*BAy_ª¥¯e–|²æóˆpZ’#·ú½H òIAÏ”ØÜÙŒ�ÒÊš. ;�_êú]-硯äaMMQæâ“‰b×sÓÕäǰ «ÓS×ï='Ô4Њ+Õê'è¾»AÙøˆ:,ºWaÈÿÙ¾íÌ#x锾¬QV1�åÁœƒ!ÑéÅ¿(mˆfE[öd€4|'~ƒŽ_ÓŸŒú¦O(Æš.‰.ÚZ÷ A³Ëw6i ­Ae9Ëx­qiDwqcÀu–ÊÚ‡D'ÃBzy%cæ°„å—í€Ïè5%ýœ¾¿ÛiÖW Iæ…Hý8‡cÏN}s±]…&WˆÏ„ÙU15ý’SF»á\뱚ã\MÒüX @Ê-qnÜ€Tè_îJ?Ô,Ï‹QOQÏõèÖ_¾Hd™VH«–L‰üÂ':èžC<ªÌ†Æ?²••.-#cÇ7?ά‹ÖnÀ°í7÷óŽÂK~_ Dä‚èÓFOÆ4Wµ8%æÄkŽ 9º X~«é÷ŠE^YO-·3'üË’ï@|£ÈÒs’s t#˜×‡‹<ðÌ­áÒó¢x›x¸³~nÑæ sÌÈ>—âŸ^ixéWâ±3ϰv‡DØ£=Ô)b³¹¹$>ÓGŽ_¤yìéFˆ„117«t½cr+¡8ìDÈ/?±XÔ¶Ç „:|"(¤�8‘òNåj™^vò`R • �߸€Yg}öŒO3½XÛɨ'Fû�¯ø çJ€á,’ ©ñWkz›×§x&C¨7NÒBªI É\]º¿c�\›qA ½e·Ü*\¸$w)ͲÜ5Åû×�`?—_'BìßÕ°k (OÚ·Z8ŠEq{$à` 4ÛÏ(?ý²Y@¯=] ©ëøB¤�³‚×ÿ…VsôlÓ“õ¾‹ß—OTÛ(õ®™“´³zÍY÷ÈT}ÆIåÐlÓè�1Á$Ûm¿ñò‰­Þ/ýEGíÈ<6ÍA�|;¿îé‰n³€~K¿0&ÂóáRÉyÄ\dc˜œœæO^ó²‚ :Èú3'ÂM„‘æ|3q&Õž¢Ü¤îvTdó€o°]ê< €âf?ñ�ÖàÃW­±ø·>k:¬*mi¡Ô„? “cv-B¯gJ´Wóê—°E³�/-§}v=;º”´jkM°O6=ÚËÑ$’¸<¹“ê)ç�)›—„4_Cq%Ýëê«Gd¡6Ìʬ3¶»zsn«Þø1“©½m¤®à¡ñIìðÉf"šy¿VÅã�ú©ÀÃK®+d|•øåé‰ÐHÃMÐ.€!Ä<Œ 7Až@E,7ÿaÔÕn€'ÕYûV§:°ÒîS€ c#ºü‚o©Úÿ%~(@zÁžtBÿ@&‘çÆ[8²q?¤à/žajBÿ �|n�»HT¯“�Psˆä&ÑöY_€5a#AšfI¨Al™Lÿþ©–áp+¸qÃ.$Až„E,7ÿaÔÕn€'ÕYûV§:°ÒîS{v°×ž£tBÿ@&‘çÆ[8²q?¤áž¥jBÿ �|n�»HT¯“jô�ñAšªI¨Al™Lwÿþ©–]¹ @ÄзܲkJ¦q0 ñ—´t—QQáíÆ–43ê. 4À9$z;Fê:Œ6ìÖ‡2°ÑWñA±jÀt˜Œë÷°�çœ=ù+å�dÌ_̧åS€YPH‹þHb_*úúf]Ò"<ä ÝfTNò°ÁAGM¡oä9­�Š…ŸÎ¬hbЛŠ—@…*¾ ‹–&Û`�{GÃ0Ó«¤˜~ÄrÕÔ-]t°hq© ÿdŠpž³Ðš&¹Ã4ý‹è?×k/áþ¼OÚÈ‚á ªžèiÃë¶üªÈÜ\1ŽÀ%¶ 'vç“®¦HL¢y>ÀûÙ•MFµ·}�‡˜2Ì?通Mð”ˆ>> óhÌ ß9ßžî€#òežvO0§«ÌJZsÉÛe³�Nà§k$áu®çÍ»xpTXƒn€ä—é3àBik——œÉÑÈ[FN‚Ði÷H¤U7Åþ†ÿù8GîÀTa2B¡ÿ£ýûE°æ %ÍNÙFlˆœ§@”pòHÀ�ì\u“]lU@ç›òÁ;e³ÇÞe',Ä2¯pÙ9^ÖÇÁ�¨æÐÔ¼V©ÏHÕª®žËD:åsíØT÷RtÍ ¬þ,?¬1ap÷T¥ì££°L‰7óÕ µTÏõ¡»FJ´€"�›9ÿ9†‚¯ie6¿^ôñ)‹ ÓÉ%àì’@ñÝ‹Sê]6¿Å>8´­ÿ.¤¿û~tXºü¨Œñ¢ãŽê©¬ž¹¾)‚9Öø6ÙÖæN…o²çí7½¢Ó8pKVò³2…i&ÊvL,ð=S£« ‡kìÓXïì‚sEÂì`Ñ¢qàp>5¸P0‘ßt{5çTë€Et7]7ã:TVéîül0ÁI¡^TØ­5ÄûHàþ@jWõµLŠ9ânxGé`-ê¬ a¸Å|fqé³´Bi¥ œx´Ð¼TY‹FÇi4AžÈE,7ÿaÔÕn€'ÕYûV§:°ÒîS€FP@o]À Œíãæ x/žçtBÿ@&‘çÆ[8²qÓ:–h¢ÄlJkf‚&eúLžéjBÿ �|n�»HT¯“mèÛÑAšîI¨Al™L_ÿþŒ°eÀ$AŸ E,7ÿaÔÕn€'ÕYûV§:°ÒîSt�î<Ÿ+tBÿ@&‘çÆ[8²qWG9 Ÿ-jBÿ �|n�»HT¯“mèÛÑdA›/I¨Al™L_ÿþŒ°ÛŒÈJeRJÌû`ñZ¡·çcµÒÁ�j«#§“1°Öú#´\ÚÂ&â@#Œ%ön Æâ¢pPS†P¤Ûñר-õX/󛀘Éh¶ï�ø›}O*ü¹)ëÏ00¹Å"Ç_`ÍøOæ{ËJ½’¶¬½Äð—·ôýo b_÷݇HàâíÜfeê©ÑGÁ67_ÄÆ·>ð§í݃»]*GÁ8¤#m±™@rºFó®<žþ¿õ­£ «)wÄï�ÑF“øP±^êËU9cM.“ ·[ÒÀô�aÞ„×^fz¯ÿé2>nº¶Š9.À-Ò³ þ)*DÞBµˆ´tB¿Ñ;u€,å„ßú¥½¸ú$‚õNqÂi¸±†ÙÚï»ÂfVI…11ßL�î[è¢}À|Ó„„ ë®& ê<‚"�| 縰 j4©ÚvF>-òK–¯.)æMÝœVàB”õ =`(첟¨&XO~Ë‹öšâw=J^IІ›Éíõ^[4Rt×ë¨ç‹^¥=ŒÍ™Ónnb6ì¶[±–Sþ *UêC оïnä!“(& ਱öHU¶X‡öQ³¢¯½ï; ”Þ3.ÕO£¦dëûk²Xí»Ì«rù'*‘ (l +~äF±c‘m2n¿9j Ô™ø]¶,¹)‘� MïF±—”A;‚Ô6&‡HLlkâ\P/[Åô|½Ã}?#蚆` —ÂÊFÄ BI�5ºo“§ØHB~¡�Ï•gž÷æAå¿0§€^E¾36»YË~ñ\]Lí-Ùéϯ,n¡Ž˜ºUlo[r<ßÉP;Ïí.ˆæj'¹ŠÒì<«{Ö8šèi¿©—k½â~, �.)“c;}*ÓÓžc–Õ¢£ßK´¡º)éè!õ¹xØ$ßËíbû¹Ò\~-”‚°YÛÆéœEcæñA�¦K)–dkU¾nqSlÀp'C´4dšéa>üzp‹„iL÷Sݼøú„ÈI©G›–ÆœrŽ82=ù éÝ–™æÇ“g`|è«Xø»‹Å¿¡Æ@ÊW§±f±d¨1¿VÒŸž Ih½%Ê0sÐ(�>¯¢>Lj‚½O’/og1½Œ¹x^Èó驟ÕÀ'´jø›ؤvºêè®NýH™Î޵x|…ç½m“�û{ì¹PnÙ—(W#Σñˆ’êÑa€pÒYƒ«LÚ�"‹_6gbD/ëÆ|:þV�bÿϘG1lQ"A¶Ù^µ°ï_lðÑ0a*µTMêÌ�ªK—+M#NeÉ+‹×â ?6靯lý�²N�×ÇÃÖ4ÕlJªàóßöoNxDwvÍè›bfeaAïAïh–þÁÔ´) ‹’ä]¿mªU /W T%‰:E�ÉO^Á moovlmvhdè%€@ avcCdÿá!gd¬Ù@ð9î#ÿÿj€€ŒËhëãË"Àýøøcolrnclxpasp––btrtØÌØÌstts�stssˆctts� stsc�Tstsz�8Ø(‡=9'Á:±"ì>ê(%%" "6" K; /%" !$ !$ !$ !$ !$ !$ !$ !$ !$ !$ K& %& '$ (9 4[qK$ 6!0/75!6:!4-(!!Ü;#33(!!þ;!3,(!!";!3'(!!õ83# ("#hstco0budtaZmeta!hdlrmdirappl-ilst%©toodataLavf58.76.100ipython-ipyparallel-14e3c43/docs/source/api/000077500000000000000000000000001520071063500210505ustar00rootroot00000000000000ipython-ipyparallel-14e3c43/docs/source/api/ipyparallel.rst000066400000000000000000000021251520071063500241200ustar00rootroot00000000000000API Reference ============= .. module:: ipyparallel .. autodata:: version_info The IPython parallel version as a tuple of integers. There will always be 3 integers. Development releases will have 'dev' as a fourth element. Classes ------- .. autoconfigurable:: Cluster :inherited-members: .. autoclass:: Client :inherited-members: .. autoclass:: DirectView :inherited-members: .. autoclass:: LoadBalancedView :inherited-members: .. autoclass:: BroadcastView :inherited-members: .. autoclass:: AsyncResult :inherited-members: .. autoclass:: ViewExecutor :inherited-members: Decorators ---------- IPython parallel provides some decorators to assist in using your functions as tasks. .. autodecorator:: interactive .. autodecorator:: require .. autodecorator:: depend .. autodecorator:: remote .. autodecorator:: parallel Exceptions ---------- .. autoexception:: RemoteError :no-members: .. autoexception:: CompositeError :no-members: .. autoexception:: NoEnginesRegistered .. autoexception:: ImpossibleDependency .. autoexception:: InvalidDependency ipython-ipyparallel-14e3c43/docs/source/changelog.md000066400000000000000000000576451520071063500225710ustar00rootroot00000000000000(changelog)= # Changelog Changes in IPython Parallel ## 9.1 ### 9.2.0 - 2026-05 9.2.0 updates JupyterLab extension dependencies and removes some use of deprecated APIs in ipykernel. ([full changelog](https://github.com/ipython/ipyparallel/compare/9.1.0...9.2.0)) ### 9.1.0 - 2026-03 9.1.0 introduces a new task labeling feature for filtering task results (Thanks, @ottointhesky!). 9.1 requires Python >=3.10. ([full changelog](https://github.com/ipython/ipyparallel/compare/9.0.1...9.1.0)) #### New features added - Task label feature refined [#983](https://github.com/ipython/ipyparallel/pull/983) ([@ottointhesky](https://github.com/ottointhesky), [@minrk](https://github.com/minrk)) - Task label feature [#979](https://github.com/ipython/ipyparallel/pull/979) ([@ottointhesky](https://github.com/ottointhesky), [@minrk](https://github.com/minrk)) - handle XPUB socket type in kernel protocol [#985](https://github.com/ipython/ipyparallel/pull/985) ([@minrk](https://github.com/minrk)) #### Bugs fixed - Use new serialization code for PyPy3.10+ 7.3.19+ [#934](https://github.com/ipython/ipyparallel/pull/934) ([@mgorny](https://github.com/mgorny), [@minrk](https://github.com/minrk)) - ipykernel 7 support - take 2 [#947](https://github.com/ipython/ipyparallel/pull/947) ([@ianthomas23](https://github.com/ianthomas23), [@minrk](https://github.com/minrk)) #### Maintenance and upkeep improvements - fix a couple of doc links [#976](https://github.com/ipython/ipyparallel/pull/976) ([@minrk](https://github.com/minrk)) - require Python 3.10 [#954](https://github.com/ipython/ipyparallel/pull/954) ([@minrk](https://github.com/minrk)) - dependabot: split major/minor js bumps [#940](https://github.com/ipython/ipyparallel/pull/940) ([@minrk](https://github.com/minrk)) #### Contributors to this release The following people contributed discussions, new ideas, code and documentation contributions, and review. See [our definition of contributors](https://github-activity.readthedocs.io/en/latest/use/#how-does-this-tool-define-contributions-in-the-reports). ([GitHub contributors page for this release](https://github.com/ipython/ipyparallel/graphs/contributors?from=2025-03-03&to=2026-03-10&type=c)) @ianthomas23 ([activity](https://github.com/search?q=repo%3Aipython%2Fipyparallel+involves%3Aianthomas23+updated%3A2025-03-03..2026-03-10&type=Issues)) | @mgorny ([activity](https://github.com/search?q=repo%3Aipython%2Fipyparallel+involves%3Amgorny+updated%3A2025-03-03..2026-03-10&type=Issues)) | @minrk ([activity](https://github.com/search?q=repo%3Aipython%2Fipyparallel+involves%3Aminrk+updated%3A2025-03-03..2026-03-10&type=Issues)) | @ottointhesky ([activity](https://github.com/search?q=repo%3Aipython%2Fipyparallel+involves%3Aottointhesky+updated%3A2025-03-03..2026-03-10&type=Issues)) ## 9.0 ### 9.0.2 - 2025-10 ([full changelog](https://github.com/ipython/ipyparallel/compare/9.0.1...9.0.2)) 9.0.2 fixes compatibility with upcoming ipykernel 7 (as of alpha 3). ### 9.0.1 - 2025-03 ([full changelog](https://github.com/ipython/ipyparallel/compare/9.0.0...9.0.1)) 9.0.1 fixes compatibility with IPython 9.0. ### 9.0.0 - 2024-11 ([full changelog](https://github.com/ipython/ipyparallel/compare/8.8.0...9.0.0)) IPython Parallel 9 is a small major release. The biggest new feature highlight is Windows support for SSHLauncher (thanks [@ottointhesky](https://github.com/ottointhesky)!) Fixes: - Fix for background-thread output going to the wrong cell in a notebook. Other changes: - Compatibility fixes for upcoming ipykernel 7 (ipykernel 6.9.1 is now required) - JupyterLab extension dependencies are updated from 3.x to JupyterLab 4.3 - Use `importlib.metadata` instead of deprecated `entrypoints` (no effect for users) ## 8.8 ### 8.8.0 - 2024-04-02 ([full changelog](https://github.com/ipython/ipyparallel/compare/8.7.0...8.8.0)) 8.8 is a small release. New: - `BroadcastView.map` is defined for API compatibility, but is not particularly efficient or recommended. Fixed: - `AsyncResult.join` is fixed. Improved: - Performance optimization disabling timestamp parsing in `jupyter_client` is not applied until ipyparallel classes are instantiated, rather than at import time. ## 8.7 ### 8.7.0 - 2024-03-04 ([full changelog](https://github.com/ipython/ipyparallel/compare/8.6.1...8.7.0)) 8.7 is a small release, with a few improvements and updates, mostly related to compatibility with different versions of JupyterLab, Notebook, and Jupyter Server. Highlights: - JupyterLab 4 compatibility for the lab extension - Improved logging and deprecation messages for different versions of Jupyter Server and Notebook #### New features added - Update labextension to jupyterlab 4 [#833](https://github.com/ipython/ipyparallel/pull/833) ([@minrk](https://github.com/minrk)) - add `ControllerLauncher.connection_info_timeout` config [#872](https://github.com/ipython/ipyparallel/pull/872) ([@minrk](https://github.com/minrk)) #### Enhancements made - log launcher output at warning-level in case of nonzero exit code [#866](https://github.com/ipython/ipyparallel/pull/866) ([@minrk](https://github.com/minrk)) - improve deprecation messaging around `ipcluster nbextension` [#835](https://github.com/ipython/ipyparallel/pull/835) ([@minrk](https://github.com/minrk)) #### Bugs fixed - Use pre-3.10 serialization code on PyPy3.10 [#846](https://github.com/ipython/ipyparallel/pull/846) ([@mgorny](https://github.com/mgorny), [@minrk](https://github.com/minrk)) - fallback import when using notebook and jupyter_server is unavailable [#808](https://github.com/ipython/ipyparallel/pull/808) ([@minrk](https://github.com/minrk)) - don't propagate logs in IPython [#797](https://github.com/ipython/ipyparallel/pull/797) ([@minrk](https://github.com/minrk)) #### Contributors to this release The following people contributed discussions, new ideas, code and documentation contributions, and review. See [our definition of contributors](https://github-activity.readthedocs.io/en/latest/use/#how-does-this-tool-define-contributions-in-the-reports). ([GitHub contributors page for this release](https://github.com/ipython/ipyparallel/graphs/contributors?from=2023-04-14&to=2024-03-04&type=c)) @ellert ([activity](https://github.com/search?q=repo%3Aipython%2Fipyparallel+involves%3Aellert+updated%3A2023-04-14..2024-03-04&type=Issues)) | @hroncok ([activity](https://github.com/search?q=repo%3Aipython%2Fipyparallel+involves%3Ahroncok+updated%3A2023-04-14..2024-03-04&type=Issues)) | @mgorny ([activity](https://github.com/search?q=repo%3Aipython%2Fipyparallel+involves%3Amgorny+updated%3A2023-04-14..2024-03-04&type=Issues)) | @minrk ([activity](https://github.com/search?q=repo%3Aipython%2Fipyparallel+involves%3Aminrk+updated%3A2023-04-14..2024-03-04&type=Issues)) | @ottointhesky ([activity](https://github.com/search?q=repo%3Aipython%2Fipyparallel+involves%3Aottointhesky+updated%3A2023-04-14..2024-03-04&type=Issues)) | @tornaria ([activity](https://github.com/search?q=repo%3Aipython%2Fipyparallel+involves%3Atornaria+updated%3A2023-04-14..2024-03-04&type=Issues)) | @WernerFS ([activity](https://github.com/search?q=repo%3Aipython%2Fipyparallel+involves%3AWernerFS+updated%3A2023-04-14..2024-03-04&type=Issues)) ## 8.6 ### 8.6.1 ([full changelog](https://github.com/ipython/ipyparallel/compare/8.6.0...8.6.1)) ### Bugs fixed - avoid errors when engine id cannot be identified [#793](https://github.com/ipython/ipyparallel/pull/793) ([@minrk](https://github.com/minrk)) - Disable variable expansion in %px [#792](https://github.com/ipython/ipyparallel/pull/792) ([@minrk](https://github.com/minrk)) - fix wait_interactive(return_when=FIRST_EXCEPTION) when there are no errors [#790](https://github.com/ipython/ipyparallel/pull/790) ([@minrk](https://github.com/minrk)) ### 8.6.0 A tiny release fixing issues seen building notebooks with jupyter-book. ([full changelog](https://github.com/ipython/ipyparallel/compare/8.5.1...8.6.0)) - Fix KeyError on parent_header when streaming output with %%px - Allow disabling streaming/progress defaults with IPP_NONINTERACTIVE=1 environment variable (e.g. when building notebooks in documentation) ## 8.5 ### 8.5.1 A tiny bugfix release ([full changelog](https://github.com/ipython/ipyparallel/compare/8.5.0...8.5.1)) - Fix error preventing creation of new profiles via the lab extension ### 8.5.0 A small bugfix and compatibility release. ([full changelog](https://github.com/ipython/ipyparallel/compare/8.4.1...8.5.0)) - Updates dependencies in jupyterlab extension to jupyterlab 3.6 - fix ResourceWarnings about closed clusters - Avoid some deprecated APIs in jupyter-client and pyzmq ## 8.4 ### 8.4.1 ([full changelog](https://github.com/ipython/ipyparallel/compare/8.4.0...8.4.1)) 8.4.1 is a tiny release, adding support for Python 3.11 ### 8.4.0 ([full changelog](https://github.com/ipython/ipyparallel/compare/8.3.0...8.4.0)) 8.4.0 is a small release, with some bugfixes and improvements to the release process. Bugfixes: - (`%px`) only skip redisplay of streamed errors if outputs are complete Compatibility improvements: - Avoid use of recently deprecated asyncio/tornado APIs around 'current' event loops that are not running. Build improvements: - Switch to hatch backend for packaging ## 8.3 ### 8.3.0 ([full changelog](https://github.com/ipython/ipyparallel/compare/8.2.1...8.3.0)) 8.3.0 is a small release, with some bugfixes and improvements to the release process. Build fixes: - Workaround SSL issues with recent builds of nodejs + webpack - Build with flit, removing setup.py Fixes: - Remove remaining references to deprecated `distutils` package (has surprising impact on process memory) - Improve logging when engine registration times out Maintenance changes that shouldn't affect users: - Releases are now built with pip instead of `setup.py` - Updates to autoformatting configuration #### Contributors to this release ([GitHub contributors page for this release](https://github.com/ipython/ipyparallel/graphs/contributors?from=2022-04-01&to=2022-05-09&type=c)) [@blink1073](https://github.com/search?q=repo%3Aipython%2Fipyparallel+involves%3Ablink1073+updated%3A2022-04-01..2022-05-09&type=Issues) | [@dependabot](https://github.com/search?q=repo%3Aipython%2Fipyparallel+involves%3Adependabot+updated%3A2022-04-01..2022-05-09&type=Issues) | [@jburroni](https://github.com/search?q=repo%3Aipython%2Fipyparallel+involves%3Ajburroni+updated%3A2022-04-01..2022-05-09&type=Issues) | [@kloczek](https://github.com/search?q=repo%3Aipython%2Fipyparallel+involves%3Akloczek+updated%3A2022-04-01..2022-05-09&type=Issues) | [@minrk](https://github.com/search?q=repo%3Aipython%2Fipyparallel+involves%3Aminrk+updated%3A2022-04-01..2022-05-09&type=Issues) | [@pre-commit-ci](https://github.com/search?q=repo%3Aipython%2Fipyparallel+involves%3Apre-commit-ci+updated%3A2022-04-01..2022-05-09&type=Issues) ## 8.2 ### 8.2.1 8.2.1 Fixes some compatibility issues with latest dask, ipykernel, and setuptools, as well as some typos and improved documentation. ### 8.2.0 8.2.0 is a small release, mostly of small bugfixes and improvements. Changes: `len(AsyncMapResult)` and progress ports now use the number of items in the map, not the number of messages. Enhancements: - Show output prior to errors in `%%px` Bugs fixed: - Fix cases where engine id could be `-1` in tracebacks - Add missing `pbs` to engine launcher entrypoints [All changes on GitHub](https://github.com/ipython/ipyparallel/compare/8.1.0...8.2.0) ## 8.1 8.1.0 is a small release, adding a few new features and bugfixes. New features: - relay KeyboardInterrupt to engines in blocking `%px` magics - add `Cluster.start_and_connect(activate=True)` to include activation of `%px` magics in one-liner startup. - initial support for Clusters tab in RetroLab Fixes: - ensure profile config is always loaded for `Cluster(profile="xyz")` - build lab extension in production mode, apply trove classifiers - pass through keyword arguments to constructor in `Client.broadcast_view` ## 8.0 This is marked as a major revision because of the change to pass connection information via environment variables. BatchSystem launchers with a custom template will need to make sure to set flags that inherit environment variables, such as `#PBS -V` or `#SBATCH --export=ALL`. New: - More convenient `Cluster(engines="mpi")` signature for setting the engine (or controller) launcher class. - The first (and usually only) engine set can be accessed as {attr}`.Cluster.engine_set`, rather than digging through the {attr}`Cluster.engines` dict. - Add `environment` configuration to all Launchers. - Support more configuration via environment variables, including passing connection info to engines via `$IPP_CONNECTION_INFO`, which is used by default, avoiding the need to send connection files to engines in cases of non-shared filesystems. - Launchers send connection info to engines via `$IPP_CONNECTION_INFO` by default. This is governed by `Cluster.send_engines_connection_env`, which is True by default. - Support {meth}`EngineLauncher.get_output` via output files in batch system launchers - Capture output in Batch launchers by setting output file options in the default templates. - {meth}`LoadBalancedView.imap` returns a `LazyMapIterator` which has a `.cancel()` method, for stopping consumption of the map input. - Support for `return_when` argument in {meth}`.AsyncResult.wait` and {meth}`~.AsyncResult.wait_interactive`, to allow returning on the first error, first completed, or (default) all completed. Improved: - {meth}`LoadBalancedView.imap(max_outstanding=n)` limits the number of tasks submitted to the cluster, instead of limiting the number not-yet-consumed. Prior to this, the cluster could be idle if several results were waiting to be consumed. - output streamed by `%%px` includes errors and results, for immediate feedback when only one engine fails. Fixed: - Various bugs preventing use of non-default Controller launchers - Fixed crash in jupyterlab extension when IPython directory does not exist - `ViewExecutor.shutdown()` waits for `imap` results, like Executors in the standard library - Removed spurious jupyterlab plugin options that had no effect. - `%autopx` streams output just like `%%px` Maintenance: - Add BroadcastView benchmark code - Tag releases with tbump ## 7.1 New: - New {meth}`.Client.start_and_connect` method for starting a cluster and returning a connected client in one call. - Support [CurveZMQ][] for transport-level encryption and authentication. See [security docs][] for more info. - Define `_max_workers` attribute on {attr}`view.executor` for better consistency with standard library Executors. [security docs]: secure-network [curvezmq]: https://rfc.zeromq.org/spec/26/ Improvements: - {meth}`.Client.wait_for_engines` will raise an informative error if the parent Cluster object notices that its engines have halted while waiting, or any engine unregisters, rather than continuing to wait for engines that will never come - Show progress if `%px` is taking significant time - Improved support for streaming output, e.g. with `%px`, including support for updating output in-place with standard terminal carriage-return progress bars. Fixes: - Fix dropped IOPub messages when using large numbers of engines, causing {meth}`.AsyncResult.wait_for_output` to hang. - Use absolute paths for {attr}`.Cluster.profile_dir`, fixing issues with {meth}`.Cluster.from_file` when run against a profile created with a relative location, e.g. `Cluster(profile_dir="./profile")` - Fix error waiting for connection files when controller is started over ssh. ## 7.0 ### 7.0.1 - Fix missing setupbase.py in tarball ### 7.0.0 Compatibility changes: - **Require Python 3.6** - Fix compatibility issues with ipykernel 6 and jupyter-client 7 - Remove dependency on deprecated ipython-genutils - New dependencies on psutil, entrypoints, tqdm New features: - New {class}`.Cluster` API for managing clusters from Python, including support for signaling and restarting engines. See [docs](./examples/Cluster%20API.ipynb) for more. - New `ipcluster list` and `ipcluster clean` commands derived from the Cluster API. - New {meth}`.Client.send_signal` for sending signals to single engines. - New KernelNanny process for signaling and monitoring engines for improved responsiveness of handing engine crashes. - New prototype {class}`.BroadcastScheduler` with vastly improved scaling in 'do-on-all' operations on large numbers of engines, c/o Tom-Olav Bøyum's [Master's thesis][] at University of Oslo. [Broadcast view documentation][]. - New {meth}`.Client.wait_for_engines` method to wait for engines to be available. - Nicer progress bars for interactive waits, such as {meth}`.AsyncResult.wait_interactive`. - Add {meth}`.AsyncResult.stream_output` context manager for streaming output. Stream output by default in parallel magics. - Launchers registered via entrypoints for better support of third-party Launchers. - New JupyterLab extension (enabled by default) based on dask-labextension for managing clusters. - {meth}`.LoadBalancedView.imap` consumes inputs as-needed, producing a generator of results instead of an AsyncMapResult, allowing for consumption of very large or infinite mapping inputs. [broadcast view documentation]: ./examples/broadcast/Broadcast%20view.ipynb [master's thesis]: https://urn.nb.no/URN:NBN:no-84589 Improvements and other fixes: - Greatly improved performance of heartbeat and registration with large numbers of engines, tested with 5000 engines and default configuration. - Single `IPController.ports` configuration to specify the pool of ports for the controller to use, e.g. `ipcontroller --ports 10101-10120`. - Allow `f` as keyword-argument to `apply`, e.g. `view.apply(myfunc, f=5)`. - joblib backend will start and stop a cluster by default if the default cluster is not running. The repo has been updated to use pre-commit, black, myst, and friends and GitHub Actions for CI, but this should not affect users, only making it a bit nicer for contributors. ## 6.3.0 - **Require Python 3.5** - Fix compatibility with joblib 0.14 - Fix crash recovery test for Python 3.8 - Fix repeated name when cluster-id is set - Fix CSS for notebook extension - Fix KeyError handling heartbeat failures ## 6.2.5 - Fix compatibility with Python 3.8 - Fix compatibility with recent dask ## 6.2.4 - Improve compatibility with ipykernel 5 - Fix `%autopx` with IPython 7 - Fix non-local ip warning when using current hostname ## 6.2.3 - Fix compatibility for execute requests with ipykernel 5 (now require ipykernel >= 4.4) ## 6.2.2 - Fix compatibility with tornado 4, broken in 6.2.0 - Fix encoding of engine and controller logs in `ipcluster --debug` on Python 3 - Fix compatiblity with joblib 0.12 - Include LICENSE file in wheels ## 6.2.1 - Workaround a setuptools issue preventing installation from sdist on Windows ## 6.2.0 - Drop support for Python 3.3. IPython parallel now requires Python 2.7 or >= 3.4. - Further fixes for compatibility with tornado 5 when run with asyncio (Python 3) - Fix for enabling clusters tab via nbextension - Multiple fixes for handling when engines stop unexpectedly - Installing IPython Parallel enables the Clusters tab extension by default, without any additional commands. ## 6.1.1 - Fix regression in 6.1.0 preventing BatchSpawners (PBS, etc.) from launching with ipcluster. ## 6.1.0 Compatibility fixes with related packages: - Fix compatibility with pyzmq 17 and tornado 5. - Fix compatibility with IPython ≥ 6. - Improve compatibility with dask.distributed ≥ 1.18. New features: - Add {attr}`namespace` to BatchSpawners for easier extensibility. - Support serializing partial functions. - Support hostnames for machine location, not just ip addresses. - Add `--location` argument to ipcluster for setting the controller location. It can be a hostname or ip. - Engine rank matches MPI rank if engines are started with `--mpi`. - Avoid duplicate pickling of the same object in maps, etc. Documentation has been improved significantly. ## 6.0.2 Upload fixed sdist for 6.0.1. ## 6.0.1 Small encoding fix for Python 2. ## 6.0 Due to a compatibility change and semver, this is a major release. However, it is not a big release. The main compatibility change is that all timestamps are now timezone-aware UTC timestamps. This means you may see comparison errors if you have code that uses datetime objects without timezone info (so-called naïve datetime objects). Other fixes: - Rename {meth}`Client.become_distributed` to {meth}`Client.become_dask`. {meth}`become_distributed` remains as an alias. - import joblib from a public API instead of a private one when using IPython Parallel as a joblib backend. - Compatibility fix in extensions for security changes in notebook 4.3 ## 5.2 - Fix compatibility with changes in ipykernel 4.3, 4.4 - Improve inspection of `@remote` decorated functions - {meth}`Client.wait` accepts any Future. - Add `--user` flag to {command}`ipcluster nbextension` - Default to one core per worker in {meth}`Client.become_distributed`. Override by specifying `ncores` keyword-argument. - Subprocess logs are no longer sent to files by default in {command}`ipcluster`. ## 5.1 ### dask, joblib IPython Parallel 5.1 adds integration with other parallel computing tools, such as [dask.distributed](https://distributed.readthedocs.io) and [joblib](https://joblib.readthedocs.io). To turn an IPython cluster into a dask.distributed cluster, call {meth}`~.Client.become_distributed`: ``` executor = client.become_distributed(ncores=1) ``` which returns a distributed {class}`Executor` instance. To register IPython Parallel as the backend for joblib: ``` import ipyparallel as ipp ipp.register_joblib_backend() ``` ### nbextensions IPython parallel now supports the notebook-4.2 API for enabling server extensions, to provide the IPython clusters tab: ``` jupyter serverextension enable --py ipyparallel jupyter nbextension install --py ipyparallel jupyter nbextension enable --py ipyparallel ``` though you can still use the more convenient single-call: ``` ipcluster nbextension enable ``` which does all three steps above. ### Slurm support [Slurm](https://hpc.llnl.gov/documentation/tutorials/livermore-computing-linux-commodity-clusters-overview-part-two) support is added to ipcluster. ### 5.1.0 [5.1.0 on GitHub](https://github.com/ipython/ipyparallel/milestones/5.1) ## 5.0 ### 5.0.1 [5.0.1 on GitHub](https://github.com/ipython/ipyparallel/milestones/5.0.1) - Fix imports in {meth}`use_cloudpickle`, {meth}`use_dill`. - Various typos and documentation updates to catch up with 5.0. ### 5.0.0 [5.0 on GitHub](https://github.com/ipython/ipyparallel/milestones/5.0) The highlight of ipyparallel 5.0 is that the Client has been reorganized a bit to use Futures. AsyncResults are now a Future subclass, so they can be `yield` ed in coroutines, etc. Views have also received an Executor interface. This rewrite better connects results to their handles, so the Client.results cache should no longer grow unbounded. ```{seealso} - The Executor API {class}`ipyparallel.ViewExecutor` - Creating an Executor from a Client: {meth}`ipyparallel.Client.executor` - Each View has an {attr}`executor` attribute ``` Part of the Future refactor is that Client IO is now handled in a background thread, which means that {meth}`Client.spin_thread` is obsolete and deprecated. Other changes: - Add {command}`ipcluster nbextension enable|disable` to toggle the clusters tab in Jupyter notebook Less interesting development changes for users: Some IPython-parallel extensions to the IPython kernel have been moved to the ipyparallel package: - {mod}`ipykernel.datapub` is now {mod}`ipyparallel.datapub` - ipykernel Python serialization is now in {mod}`ipyparallel.serialize` - apply_request message handling is implememented in a Kernel subclass, rather than the base ipykernel Kernel. ## 4.1 [4.1 on GitHub](https://github.com/ipython/ipyparallel/milestones/4.1) - Add {meth}`.Client.wait_interactive` - Improvements for specifying engines with SSH launcher. ## 4.0 [4.0 on GitHub](https://github.com/ipython/ipyparallel/milestones/4.0) First release of `ipyparallel` as a standalone package. ipython-ipyparallel-14e3c43/docs/source/conf.py000066400000000000000000000306331520071063500216030ustar00rootroot00000000000000# # ipyparallel documentation build configuration file, created by # sphinx-quickstart on Mon Apr 13 12:53:58 2015. # NOTE: This file has been edited manually from the auto-generated one from # sphinx. Do NOT delete and re-generate. If any changes from sphinx are # needed, generate a scratch one and merge by hand any new fields needed. # # This file is execfile()d with the current directory set to its # containing dir. # # Note that not all possible configuration values are present in this # autogenerated file. # # All configuration values have a default; values that are commented out # serve to show the default. # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. # sys.path.insert(0, os.path.abspath('.')) # We load the ipython release info into a dict by explicit execution from intersphinx_registry import get_intersphinx_mapping iprelease = {} exec( compile( open('../../ipyparallel/_version.py').read(), '../../ipyparallel/_version.py', 'exec', ), iprelease, ) # -- General configuration ------------------------------------------------ # If your documentation needs a minimal Sphinx version, state it here. needs_sphinx = '1.3' # Add any Sphinx extension module names here, as strings. They can be # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom # ones. extensions = [ 'sphinx.ext.autodoc', 'sphinx.ext.autosummary', 'sphinx.ext.doctest', 'sphinx.ext.inheritance_diagram', 'sphinx.ext.intersphinx', 'sphinx.ext.napoleon', "sphinxext.rediraffe", # 'myst_parser', 'myst_nb', 'IPython.sphinxext.ipython_console_highlighting', 'autodoc_traits', ] myst_enable_extensions = [ 'colon_fence', 'deflist', ] # Add any paths that contain templates here, relative to this directory. # templates_path = ['_templates'] # The suffix(es) of source filenames. # You can specify multiple suffix as a list of string: source_suffix = { ".rst": "restructuredtext", ".ipynb": "myst-nb", } from traitlets.config import LoggingConfigurable # exclude members inherited from HasTraits by default autodoc_default_options = { 'members': None, "exclude-members": ','.join(dir(LoggingConfigurable)), } # Add dev disclaimer. if iprelease['version_info'][-1] == 'dev': rst_prolog = """ .. note:: This documentation is for a development version of IPython. There may be significant differences from the latest stable release. """ # The encoding of source files. # source_encoding = 'utf-8-sig' # The master toctree document. master_doc = 'index' # General information about the project. project = 'ipyparallel' copyright = 'The IPython Development Team' author = 'The IPython Development Team' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # # The short X.Y version. version = '.'.join(map(str, iprelease['version_info'][:2])) # The full version, including alpha/beta/rc tags. release = iprelease['__version__'] # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. # # This is also used if you do content translation via gettext catalogs. # Usually you set "language" from the command line for these cases. language = "en" # 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 = 'literal' # 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 = [] # If true, keep warnings as "system message" paragraphs in the built documents. # keep_warnings = False # If true, `todo` and `todoList` produce output, else they produce nothing. todo_include_todos = False # -- Options for HTML output ---------------------------------------------- # The style sheet to use for HTML and HTML Help pages. A file of that name # must exist either in Sphinx' static/ path, or in one of the custom paths # given in html_static_path. # html_style = 'default.css' # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. html_theme = 'pydata_sphinx_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. # https://pydata-sphinx-theme.readthedocs.io/en/latest/user_guide/configuring.html html_theme_options = { # "navbar_center": [], # disable navbar-nav because it's way too big right now "icon_links": [ { "name": "GitHub", "url": "https://github.com/ipython/ipyparallel", "icon": "fab fa-github-square", }, ], } html_context = { "github_url": "https://github.com/ipython/ipyparallel", } # Add any paths that contain custom themes here, relative to this directory. # html_theme_path = [] # The name for this set of Sphinx documents. If None, it defaults to # " v documentation". # html_title = None # A shorter title for the navigation bar. Default is the same as html_title. # html_short_title = None # The name of an image file (relative to this directory) to place at the top # of the sidebar. # html_logo = None # The name of an image file (within the static path) to use as favicon of the # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 # pixels large. # html_favicon = None # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ['_static'] # Add any extra paths that contain custom files (such as robots.txt or # .htaccess) here, relative to this directory. These files are copied # directly to the root of the documentation. # html_extra_path = [] # 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 # Language to be used for generating the HTML full-text search index. # Sphinx supports the following languages: # 'da', 'de', 'en', 'es', 'fi', 'fr', 'hu', 'it', 'ja' # 'nl', 'no', 'pt', 'ro', 'ru', 'sv', 'tr' # html_search_language = 'en' # A dictionary with options for the search language support, empty by default. # Now only 'ja' uses this config value # html_search_options = {'type': 'default'} # The name of a javascript file (relative to the configuration directory) that # implements a search results scorer. If empty, the default will be used. # html_search_scorer = 'scorer.js' # Output file base name for HTML help builder. htmlhelp_basename = 'ipythonparalleldoc' # -- Options for LaTeX output --------------------------------------------- latex_elements = { # The paper size ('letterpaper' or 'a4paper'). #'papersize': 'letterpaper', # The font size ('10pt', '11pt' or '12pt'). #'pointsize': '10pt', # Additional stuff for the LaTeX preamble. #'preamble': '', # Latex figure (float) alignment #'figure_align': 'htbp', } # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, # author, documentclass [howto, manual, or own class]). latex_documents = [ ( master_doc, 'ipythonparallel.tex', 'IPython Parallel Documentation', 'The IPython Development Team', 'manual', ), ] # The name of an image file (relative to this directory) to place at the top of # the title page. # latex_logo = None # For "manual" documents, if this is true, then toplevel headings are parts, # not chapters. # latex_use_parts = False # If true, show page references after internal links. # latex_show_pagerefs = False # If true, show URL addresses after external links. # latex_show_urls = False # Documents to append as an appendix to all manuals. # latex_appendices = [] # If false, no module index is generated. # latex_domain_indices = True # -- Options for manual page output --------------------------------------- # One entry per manual page. List of tuples # (source start file, name, description, authors, manual section). man_pages = [ (master_doc, 'ipythonparallel', 'IPython Parallel Documentation', [author], 1) ] # If true, show URL addresses after external links. # man_show_urls = False # -- Options for Texinfo output ------------------------------------------- # Grouping the document tree into Texinfo files. List of tuples # (source start file, target name, title, author, # dir menu entry, description, category) texinfo_documents = [ ( master_doc, 'ipythonparallel', 'IPython Parallel Documentation', author, 'ipythonparallel', 'One line description of project.', 'Miscellaneous', ), ] # Documents to append as an appendix to all manuals. # texinfo_appendices = [] # If false, no module index is generated. # texinfo_domain_indices = True # How to display URL addresses: 'footnote', 'no', or 'inline'. # texinfo_show_urls = 'footnote' # If true, do not generate a @detailmenu in the "Top" node's menu. # texinfo_no_detailmenu = False # Example configuration for intersphinx: refer to the Python standard library. intersphinx_mapping = get_intersphinx_mapping( packages={ 'python', 'ipython', 'pymongo', 'distributed', 'jupyterclient', } ) import os rediraffe_branch = os.environ.get("REDIRAFFE_BRANCH", "main") rediraffe_redirects = "redirects.txt" # allow 80% match for autogenerated redirects rediraffe_auto_redirect_perc = 80 linkcheck_ignore = [ r"https://github.com/[^/]*$", # too many github usernames / searches in changelog "https://github.com/ipython/ipyparallel/pull/", # too many PRs in changelog "https://github.com/search", # github search links "https://github.com/ipython/ipyparallel/compare/", # too many comparisons in changelog r"https?://(localhost|127.0.0.1).*", # ignore localhost references in auto-links # requests from CI blocked r"https://www.mcs.anl.gov/.*", r"https://www.mcs.anl.gov/.*", r"https://urn.nb.no/.*", ] # myst_nb execution nb_execution_mode = "off" # avoid warning during linkcheck about image-only output nb_mime_priority_overrides = [ ("linkcheck", "text/html", 10), ("linkcheck", "image/png", 99), ] ipython-ipyparallel-14e3c43/docs/source/examples/000077500000000000000000000000001520071063500221155ustar00rootroot00000000000000ipython-ipyparallel-14e3c43/docs/source/examples/Cluster API.ipynb000066400000000000000000000635361520071063500252100ustar00rootroot00000000000000{ "cells": [ { "cell_type": "markdown", "id": "80a38ff6-dfe6-4c7a-a378-d16a4fbb0786", "metadata": {}, "source": [ "# Cluster API\n", "\n", "IPython Parallel 7 adds a `Cluster` API for starting/stopping clusters.\n", "\n", "This is the new implementation of `ipcluster`,\n", "which can be more easily re-used in Python programs.\n", "The `ipcluster` script is\n", "\n", "Controllers and Engines are started with \"Launchers\",\n", "which are objects representing a running process.\n", "\n", "Each **Cluster** has:\n", "\n", "- a **cluster id**\n", "- a **profile directory**\n", "- one **controller**\n", "- zero or more **engine sets**\n", " - each of which has one or more **engines**\n", " \n", "The combination of `profile_dir` and `cluster_id` uniquely identifies a cluster.\n", "You can have many clusters in one profile, but each must have a distinct cluster id.\n", "\n", "To create a cluster, instantiate a Cluster object:" ] }, { "cell_type": "code", "execution_count": 5, "id": "ef0dff26-f6d2-4d79-901b-049debe0c0d1", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import ipyparallel as ipp\n", "\n", "cluster = ipp.Cluster()\n", "cluster" ] }, { "cell_type": "markdown", "id": "db2688db-d6e6-4bb2-8fec-cb38fe4d8c59", "metadata": {}, "source": [ "To start the cluster:" ] }, { "cell_type": "code", "execution_count": 2, "id": "23e385fc-6bc2-44ad-b544-0f39182c1a76", "metadata": {}, "outputs": [ { "data": { "text/plain": [ ")>" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "await cluster.start_controller()\n", "cluster" ] }, { "cell_type": "code", "execution_count": 3, "id": "8f48261b-6787-424f-a9e7-b24fb04d076d", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Starting 4 engines with \n" ] }, { "data": { "text/plain": [ ", engine_sets=['1623757384-b3pm'])>" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "engine_set_id = await cluster.start_engines(n=4)\n", "cluster" ] }, { "cell_type": "markdown", "id": "af046a0c-281c-4dad-9dc7-582a8cda6b06", "metadata": {}, "source": [ "As you can see, all methods on the Cluster object are async by default.\n", "Every async method also has a `_sync` variant, if you don't want to / can't use asyncio." ] }, { "cell_type": "code", "execution_count": 4, "id": "e239a78a-2907-43e4-80be-eaba13dfac0a", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Starting 2 engines with \n" ] }, { "data": { "text/plain": [ "'1623757385-pe8h'" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "engine_set_2 = cluster.start_engines_sync(n=2)\n", "engine_set_2" ] }, { "cell_type": "markdown", "id": "f289aaba-7417-40d3-84ea-88bf83715140", "metadata": {}, "source": [ "At this point, we have a cluster with a controller and six engines in two groups.\n", "\n", "There is also a `start_cluster` method that starts the controller and one engine set, for convenience:\n", "\n", "```python\n", "engine_set_id = await cluster.start_cluster(n=4)\n", "```\n", "\n", "We can get a client object connected to the cluster with `connect_client()`" ] }, { "cell_type": "code", "execution_count": 5, "id": "fe2dbd68-1dcb-4de9-a45f-757314261b8c", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[0, 1, 2, 3, 4, 5]" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "rc = await cluster.connect_client()\n", "rc.wait_for_engines(6)\n", "rc.ids" ] }, { "cell_type": "markdown", "id": "d9da9293-3a44-4f16-8f81-7faaf80f20cd", "metadata": {}, "source": [ "And we can use our classic `apply_async(...).get_dict()` pattern to get a dict by engine id of hostname, pid for each engine:" ] }, { "cell_type": "code", "execution_count": 6, "id": "a00c2116-269e-4016-a3d3-ec71ae1b093c", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{0: {'host': 'touchy', 'pid': 24774},\n", " 1: {'host': 'touchy', 'pid': 24775},\n", " 2: {'host': 'touchy', 'pid': 24776},\n", " 3: {'host': 'touchy', 'pid': 24762},\n", " 4: {'host': 'touchy', 'pid': 24769},\n", " 5: {'host': 'touchy', 'pid': 24773}}" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "def identify():\n", " import os\n", " import socket\n", "\n", " return {\"host\": socket.gethostname(), \"pid\": os.getpid()}\n", "\n", "\n", "rc[:].apply_async(identify).get_dict()" ] }, { "cell_type": "markdown", "id": "1e71632f-d2d2-4c1b-b258-54ee639a8409", "metadata": {}, "source": [ "We can send signals to engine sets by id\n", "\n", "*(sending signals to just one engine is still a work in progress)*" ] }, { "cell_type": "code", "execution_count": 7, "id": "6ff6f7da-38e0-4fea-83af-ff875eebcc76", "metadata": {}, "outputs": [], "source": [ "import signal\n", "import time\n", "\n", "ar = rc[:].apply_async(time.sleep, 100)" ] }, { "cell_type": "code", "execution_count": 8, "id": "e898c30f-996b-44cd-bfad-84516d27a004", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Sending signal 2 to engine(s) 1623757384-b3pm\n", "Sending signal 2 to engine(s) 1623757385-pe8h\n" ] }, { "ename": "CompositeError", "evalue": "one or more exceptions from call to method: sleep\n[0:apply]: KeyboardInterrupt: \n[1:apply]: KeyboardInterrupt: \n[2:apply]: KeyboardInterrupt: \n[3:apply]: KeyboardInterrupt: \n.... 2 more exceptions ...", "output_type": "error", "traceback": [ "[0:apply]: ", "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m", "\u001b[0;31mKeyboardInterrupt\u001b[0m: ", "", "[1:apply]: ", "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m", "\u001b[0;31mKeyboardInterrupt\u001b[0m: ", "", "[2:apply]: ", "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m", "\u001b[0;31mKeyboardInterrupt\u001b[0m: ", "", "[3:apply]: ", "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m", "\u001b[0;31mKeyboardInterrupt\u001b[0m: ", "", "... 2 more exceptions ..." ] } ], "source": [ "# oops! I meant 1!\n", "\n", "await cluster.signal_engines(signal.SIGINT)\n", "ar.get()" ] }, { "cell_type": "markdown", "id": "ba286e10-0e9d-41af-9016-ceb8d7943cbe", "metadata": {}, "source": [ "Now it's time to cleanup. Every `start_` method has a correspinding `stop_method`.\n", "\n", "We can stop one engine set at a time with `stop_engines`:" ] }, { "cell_type": "code", "execution_count": 9, "id": "70574035-e97b-4a3b-acfd-ca404bab7e04", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Stopping engine(s): 1623757385-pe8h\n" ] } ], "source": [ "await cluster.stop_engines(engine_set_2)" ] }, { "cell_type": "markdown", "id": "89026a15-60a2-40b5-beff-8b281ae624b3", "metadata": {}, "source": [ "Or stop the whole cluster" ] }, { "cell_type": "code", "execution_count": 10, "id": "81275363-a1db-4d6d-9330-514d2355a219", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Stopping engine(s): 1623757384-b3pm\n", "Stopping controller\n", "Controller stopped: {'exit_code': 0, 'pid': 24758}\n" ] } ], "source": [ "await cluster.stop_cluster()" ] }, { "cell_type": "markdown", "id": "7835fa97-59dc-4146-9bdf-43640bbb1801", "metadata": {}, "source": [ "## Cluster as a context manager\n", "\n", "Cluster can also be used as a Context manager,\n", "in which case:\n", "\n", "1. entering the context manager starts the cluster\n", "2. the `as` returns a connected client\n", "3. the context is only entered when all the engines are fully registered and available\n", "4. when the context exits, the cluster is torn down\n", "\n", "This makes it a lot easier to scope an IPython cluster for the duration of a computation\n", "and ensure that it is cleaned up when you are done." ] }, { "cell_type": "code", "execution_count": 11, "id": "31bf1cfb-9349-46a1-b412-50678368a017", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Starting 4 engines with \n", "Stopping engine(s): 1623757397-ng0s\n", "Stopping controller\n" ] }, { "data": { "text/plain": [ "{0: 24989, 1: 24991, 2: 24990, 3: 24992}" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import os\n", "\n", "with ipp.Cluster(n=4) as rc:\n", " engine_pids = rc[:].apply_async(os.getpid).get_dict()\n", "engine_pids" ] }, { "cell_type": "markdown", "id": "5d2d5f22-8116-45e8-8c82-c24e19f7e0de", "metadata": {}, "source": [ "It can also be async" ] }, { "cell_type": "code", "execution_count": 12, "id": "3c0cdb81-4288-4e3a-b25a-7b0b0ce6016a", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Starting 2 engines with \n", "Controller stopped: {'exit_code': 0, 'pid': 24988}\n", "Stopping engine(s): 1623757400-5fq1\n", "Stopping controller\n" ] }, { "data": { "text/plain": [ "{0: 25058, 1: 25059}" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "async with ipp.Cluster(n=2) as rc:\n", " engine_pids = rc[:].apply_async(os.getpid).get_dict()\n", "engine_pids" ] }, { "cell_type": "markdown", "id": "b7537226-dc39-4859-bcfb-16c79a16b951", "metadata": {}, "source": [ "## Launcher classes\n", "\n", "IPython's mechanism for launching controllers and engines is called `Launchers`.\n", "These are in `ipyparallel.cluster.launcher`.\n", "\n", "There are two kinds of Launcher:\n", "\n", "- ControllerLauncher, which starts a controller\n", "- EngineSetLauncher, which starts `n` engines\n", "\n", "You can use abbreviations to access the launchers that ship with IPython parallel,\n", "such as 'MPI', 'Local', or 'SGE',\n", "or you can pass classes themselves (or their import strings, such as 'mymodule.MyEngineSetLauncher').\n", "\n", "I'm going to start a cluster with engines using MPI:" ] }, { "cell_type": "code", "execution_count": 13, "id": "b85d2009-d60c-4642-a15c-84c80adcc361", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Controller stopped: {'exit_code': 0, 'pid': 25057}\n", "Starting 4 engines with \n" ] } ], "source": [ "import os\n", "\n", "os.environ[\"OMPI_MCA_rmaps_base_oversubscribe\"] = \"1\"\n", "\n", "cluster = ipp.Cluster(n=4, engines='MPI')\n", "await cluster.start_cluster()\n", "rc = await cluster.connect_client()" ] }, { "cell_type": "code", "execution_count": 14, "id": "91062c98-3ff2-494f-ae02-6cb96648b6ef", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[0, 1, 2, 3]" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "rc.wait_for_engines(4)\n", "rc.ids" ] }, { "cell_type": "markdown", "id": "9274020a-a556-4d4c-a67b-170b448d1a91", "metadata": {}, "source": [ "Now I'm going to run a test with another new feature" ] }, { "cell_type": "code", "execution_count": 15, "id": "9a078e90-bdf8-4f8e-aedc-bcabf2c9ba87", "metadata": {}, "outputs": [ { "ename": "TimeoutError", "evalue": "Result not ready.", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mTimeoutError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m/var/folders/qr/3vxfnp1x2t1fw55dr288mphc0000gn/T/ipykernel_24747/824703262.py\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 12\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 13\u001b[0m \u001b[0mar\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mrc\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mapply_async\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0muhoh\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 14\u001b[0;31m \u001b[0mar\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtimeout\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;32m~/dev/ip/parallel/ipyparallel/client/asyncresult.py\u001b[0m in \u001b[0;36mget\u001b[0;34m(self, timeout)\u001b[0m\n\u001b[1;32m 227\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mexception\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 228\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 229\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0merror\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mTimeoutError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Result not ready.\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 230\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 231\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_check_ready\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mTimeoutError\u001b[0m: Result not ready." ] } ], "source": [ "def uhoh():\n", " from mpi4py import MPI\n", "\n", " rank = MPI.COMM_WORLD.rank\n", " if rank == 0:\n", " print(\"rank 0: oh no.\")\n", " 1 / 0\n", " print(f\"rank {rank}: barrier\")\n", " MPI.COMM_WORLD.barrier()\n", "\n", "\n", "ar = rc[:].apply_async(uhoh)\n", "ar.get(timeout=2)" ] }, { "cell_type": "markdown", "id": "f69526d7-4c39-422e-8654-76fbac9ce14e", "metadata": {}, "source": [ "Uh oh! We are stuck in barrier because engine 0 failed.\n", "\n", "Let's try interrupting and getting the errors:" ] }, { "cell_type": "code", "execution_count": null, "id": "ebe3e6d1-10cf-49be-83b6-da8dbaf712b1", "metadata": {}, "outputs": [], "source": [ "import signal\n", "\n", "await cluster.signal_engines(signal.SIGINT)\n", "ar.get(timeout=2)" ] }, { "cell_type": "markdown", "id": "afd8854b-2138-458d-b2bb-69acdc009b7f", "metadata": {}, "source": [ "It didn't work! This is because MPI.barrier isn't actually interruptible 😢.\n", "\n", "We are going to have to resort to more drastic measures, and *restart* the engines:" ] }, { "cell_type": "code", "execution_count": 16, "id": "2ae1cb50-965b-400e-b39f-4567df667da2", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Stopping engine(s): 1623757404-oexv\n", "Starting 4 engines with \n" ] } ], "source": [ "await cluster.restart_engines()" ] }, { "cell_type": "code", "execution_count": 17, "id": "c676323b-1bf7-4983-8139-5b085c2fdf91", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[0, 1, 2, 3]" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" }, { "name": "stdout", "output_type": "stream", "text": [ "engine set stopped 1623757404-oexv: {'exit_code': -9, 'pid': 25078}\n" ] } ], "source": [ "rc.wait_for_engines(4)\n", "rc.ids" ] }, { "cell_type": "markdown", "id": "7c49fa83-087c-4237-acbe-7d6c8ca208c9", "metadata": {}, "source": [ "We are now back to having 4 responsive engines.\n", "Their IPP engine id may have changed, but I can get back to using them." ] }, { "cell_type": "code", "execution_count": 19, "id": "7e261d39-0793-4207-813a-24caa4ec9a92", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{4: 0, 5: 2, 6: 3, 7: 1}" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "def get_rank():\n", " from mpi4py import MPI\n", "\n", " return MPI.COMM_WORLD.rank\n", "\n", "\n", "rank_map = rc[:].apply_async(get_rank).get_dict()\n", "rank_map" ] }, { "cell_type": "markdown", "id": "9a67ca12-67f5-4539-939f-80a6e61b5692", "metadata": {}, "source": [ "Finally, clean everything up" ] }, { "cell_type": "code", "execution_count": 20, "id": "060108bb-229b-4829-bf32-0dc7d0db0345", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Stopping engine(s): 1623757404-oexv\n", "Stopping controller\n", "Controller stopped: {'exit_code': 0, 'pid': 25076}\n", "engine set stopped 1623757404-oexv: {'exit_code': -9, 'pid': 25154}\n" ] } ], "source": [ "await cluster.stop_cluster()" ] }, { "cell_type": "markdown", "id": "4607e5e6-e585-413f-85aa-281e606f7f82", "metadata": {}, "source": [ "## Connecting to existing clusters\n", "\n", "a Cluster object writes its state to disk,\n", "in a file accessible as `cluster.cluster_file`.\n", "By default, this willb e `$PROFILE_DIR/security/ipcluster-$cluster-id.json`.\n", "\n", "Cluster objects can load state from a dictionary with `Cluster.from_dict(d)`\n", "or from a JSON file containing that information with `Cluster.from_file()`.\n", "\n", "The default arguments for `from_file` are to use the current IPython profile (default: 'default')\n", "and empty cluster id,\n", "so if you start a cluster with `ipcluster start`, you can connect to it immediately with\n", "\n", "```python\n", "cluster = ipp.Cluster.from_file()\n", "```" ] }, { "cell_type": "code", "execution_count": 2, "id": "0da44ee0-2a3f-4b98-b31a-9c71621b9777", "metadata": {}, "outputs": [], "source": [ "import ipyparallel as ipp\n", "\n", "cluster = ipp.Cluster.from_file()" ] }, { "cell_type": "code", "execution_count": 3, "id": "0df1b2b2-0d35-45a7-8ad8-c7f55eb52a5f", "metadata": {}, "outputs": [ { "data": { "text/plain": [ ", engine_sets=['1624884556-z9qr'])>" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cluster" ] }, { "cell_type": "markdown", "id": "947edd74-5b1c-42ca-a83a-1755a96c6469", "metadata": {}, "source": [ "`ipp.ClusterManager` provides an API for collecting/discovering/loading all the clusters on your system.\n", "\n", "By default, it finds loads clusters in all your IPython profiles,\n", "but can be confined to one profile or use explicit profile directories." ] }, { "cell_type": "code", "execution_count": 6, "id": "c8b30824-b833-449c-b1eb-71b56ff47ba6", "metadata": {}, "outputs": [], "source": [ "clusters = ipp.ClusterManager().load_clusters()" ] }, { "cell_type": "code", "execution_count": 8, "id": "6c5e2fe0-c45c-4528-8732-d6bd56580885", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'mpi:abc-123': , engine_sets=['1624884663-euj7'])>,\n", " 'default:': , engine_sets=['1624884556-z9qr'])>}" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "clusters" ] }, { "cell_type": "markdown", "id": "b75d78c5-5f49-436f-b313-c56085f70e43", "metadata": {}, "source": [ "This is the class that powers the new `ipcluster list`" ] }, { "cell_type": "code", "execution_count": 10, "id": "cbf3d3f3-70e1-4c92-b6d5-bf17ea913253", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "PROFILE CLUSTER ID RUNNING ENGINES LAUNCHER\n", "default '' True 4 Local\n", "mpi abc-123 True 4 MPI\n" ] } ], "source": [ "!ipcluster list" ] }, { "cell_type": "code", "execution_count": 11, "id": "08a6c241-8d05-45fa-bfe1-ba89f4257ade", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2021-06-28 14:53:00.591 [IPClusterStop] Stopping engine(s): 1624884663-euj7\n", "2021-06-28 14:53:00.592 [IPClusterStop] Stopping controller\n" ] } ], "source": [ "!ipcluster stop --profile mpi --cluster-id abc-123" ] }, { "cell_type": "code", "execution_count": 12, "id": "5ec2c3c2-153c-4fbf-b52d-567530533a3c", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "PROFILE CLUSTER ID RUNNING ENGINES LAUNCHER\n", "default '' True 4 Local\n" ] } ], "source": [ "!ipcluster list" ] }, { "cell_type": "markdown", "id": "3b3e53cf-4b30-4496-8b84-993daf4fc527", "metadata": {}, "source": [ "The same operation can be done from the Python API:" ] }, { "cell_type": "code", "execution_count": 13, "id": "7be40506-7108-4fbc-8b8f-16e4d478ed84", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Stopping engine(s): 1624884556-z9qr\n", "Stopping controller\n" ] } ], "source": [ "cluster = ipp.Cluster.from_file(profile=\"default\", cluster_id=\"\")\n", "await cluster.stop_cluster()" ] }, { "cell_type": "code", "execution_count": 14, "id": "572b2e45-4b20-4f8d-81b0-9334a42e69e7", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "PROFILE CLUSTER ID RUNNING ENGINES LAUNCHER\n" ] } ], "source": [ "!ipcluster list" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.9" }, "widgets": { "application/vnd.jupyter.widget-state+json": { "state": {}, "version_major": 2, "version_minor": 0 } } }, "nbformat": 4, "nbformat_minor": 5 } ipython-ipyparallel-14e3c43/docs/source/examples/Data Publication API.ipynb000066400000000000000000010411661520071063500266660ustar00rootroot00000000000000{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# IPython's Data Publication API" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "IPython has an API that allows IPython Engines to publish data back to the Client. This Notebook shows how this API works." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Setup" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We begin by enabling matplotlib plotting and creating a `Client` object to work with an IPython cluster." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import ipyparallel as ipp" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "c = ipp.Client()\n", "dv = c[:]\n", "dv.block = False\n", "dv" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Simple publication" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here is a simple Python function we are going to run on the Engines. This function uses `publish_data` to publish a simple Python dictionary when it is run." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "def publish_it():\n", " from ipyparallel.datapub import publish_data\n", "\n", " publish_data(dict(a='hi'))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We run the function on the Engines using `apply_async` and save the returned `AsyncResult` object:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "ar = dv.apply_async(publish_it)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The published data from each engine is then available under the `.data` attribute of the `AsyncResult` object." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[{}, {}, {}, {}]" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ar.data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Each time `publish_data` is called, the `.data` attribute is updated with the most recently published data." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Simulation loop" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In many cases, the Engines will be running a simulation loop and we will want to publish data at each time step of the simulation. To show how this works, we create a mock simulation function that iterates over a loop and publishes a NumPy array and loop variable at each time step. By inserting a call to `time.sleep(1)`, we ensure that new data will be published every second." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "def simulation_loop():\n", " import time\n", "\n", " import numpy as np\n", "\n", " from ipyparallel.datapub import publish_data\n", "\n", " for i in range(10):\n", " publish_data(dict(a=np.random.rand(20), i=i))\n", " time.sleep(1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Again, we run the `simulation_loop` function in parallel using `apply_async` and save the returned `AsyncResult` object." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "ar = dv.apply_async(simulation_loop)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "New data will be published by the Engines every second. Anytime we access `ar.data`, we will get the most recently published data." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "import matplotlib.pyplot as plt" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\ntxG76/tLG3Nkcil6fAN0eiofcnPfoHr/bzSweTtJFql4HzSoEp9dDNO7rJo9t5YuG/KajVBI4+E2\nexKg4FX1l8GrEqp2IqCYAtiMCqCQMMlCUXOZVQCnRBWwgYMR9GRVfOf34+WVBL/0raucmYnic1r5\njU8e4G8+NoTtDrM1rCerjDWrJEniV5/dT8Br5/JKkq9/UD2iolS5jSiRs5eR7DZ6nn6Ip49/BoA3\nLxtTBbx8boE/+o/v8cHpaUNe716VUcmqPwD+AfAfgT8PfAX4GeBPg8Fg2T8jGAweAL4E/JuJiYnz\nBl1bVdKTVfcQZL2Ql5m8pp5OGWZW6ckq4yKhd0qkttL3EGBdURS+fVldLPyFRz6F0+7i+sIFVjbU\nlEyPnqwyz2K1EtUCWS+aVcYnqy7ozIWdpwCWyqtzq8xTyxDauKmmp6K9fTyoTQTyjNZeAzQqWSVq\ngJ5WSVZ1q3+70fXNmWsRUQNsTwNsqiL6JMDya1aiBri0dotTezrIy4qeYjKLpjfSLESz+F02xvsr\nPi/UP6PakwDrJ0mS9ImAm0HWq+VVCZ0YEBMBzXVY5TN4ImB6foXeFXWL0VJmlZZkCTR7EmAFcHUh\nfSJghckqsXZ64EDzzKp+kyarAE4ONt6scnvsIEEqlduSb6soCt/8aIUvfec6y/EsR/s8fO3zx7Zk\nIYa0ZJWYvmikOl02Xnp+BIsEf3humXMLdxv9lWr19fdAlul+9BQ2r4dHDz2Pw+bkytxZ/b+lFq1r\ne5juQOX34raKqtmsCgaDfx74aeDPT0xMfHliYuJ7ExMT/wb4OPAY8MUKXu63gXXg/6r1umqV6JGv\n3kNm1ezkGtlMgcBAhz7RqlbpzKqheiarVCMstbCCIpuvZlUPfbiUYHo9TY/bxscO7eHhQ2q66q0r\n3wdKzSpzLVbLVWmyqlJIbL1qgIl0jNc+/J8APHDg6YqeW1ykmy9ZtXB5CgDfgX14HOrETs8Bzay6\nVXuyKpIIIyvVvy+LyarWMKucLhtuj518Xr4rSZfLZ0lkYlgkKx3uylMvbRmj7OoG6bklrG4X3sMj\nZT8v0DmI2+ElklzjUe3g+MeT5qoCCvPsif2dVVWM2smqxkivAm4yxELnVVVpVo12u/E6rCzHszrI\n2wwyeiJgemGZwJJIVl0y5DUbIT1Z1cRJgJl0nvXVJBarRG9/+WslvQa4Ur5ZFUmscWv5Mnabk/F9\nD1V8rUZJTAQMmXAioEhDXl5JkG0QLsJiteB220GB1CYtokS2wD95eYrfPTNPXlb4wok+vvq5wwz4\nNjdZFUXRmVVGAdbv1Kk9Pv7qA4MowL94bZpIjUNORAUw8IKK9XA7vcX9lAHpqvVVdQ/WEzB+2NO9\nJCOSVX8LeG1iYuLl0i9OTExcBv4/4BfKeZFgMPhp4EXgSxMTE7XbpTXqXqwBGl0BVBRFZ1a568is\nsnpc2Hu6ULI5MqG1uv0cM+nbl9UE3GeOBbBZJJ4e/wmgWAUsNauqmajXbPV67AQ8dpI5mfkKgKzJ\neJZkPIvdYaXT7zb0mv74rd8nltpgfN9DHB9+uKLndhh8omyk4pPqwm305AH9a579e8FiITW/jJyp\nbrPjsDnxOn0U5ALxVPXpkyKzqjVqgACd3ZtzqyJJkarqLmuSZFv1UUTA1U8eKRuuDmoiRlQB93lC\nSMAH8zESWfNMl3pLN6uqM0PbZlVjpEPWN0lWTS2LZFVlcHUhq0XieL/50lXiPhgzKlm1sELvsvo5\nOrl8uWXWOmExCbCJyaqQBlfvG/BhtZV/L6qmBvihNkH5+PBDOOzNS2z26WaVMRUyI+V32RjtdpEt\nKFwLVd4oqFaejs25VTfCSX7pW1d4Y2oDj93CP/rEGL/45D7s2wwtiqcjZHIp3A4vXpfxGA6hv/bg\nICcGvKwmc3zl9emq3/eKohTNqucf17/+jEFVQEVRWA+rn7/tZFVtqmm1HAwGrcAzwJ9s8ZA/AcaD\nweC2cJdgMGgDfgd4dWJi4g9ruSajVASs3xtmlaIo3LiimlWHDDKr8tE4hUQSq8eNzV+/Dy4Atw5Z\n3/1VwLVkjjenIlgk+Mlj6sLh/rEn6XD5mQ3fZCZ0Ha/PicNpI53KkWrRdGA1kPXwSjFVVc50m3K1\nsDbN9z74QyQkfvYTX6oYWiw2fjGTJasKsoJ1UWW9PfBIEeRrcdjV95QsbzuxaieJdNV6ldwqRVGK\nNcAWSVYBejI1csdEQL0C2OZVNVXR85XzqoSGAwcBWI9NcXKwg5yJqoCryRxXQ0kcVomHhqq757Zr\ngI2RRzOrUrN3b5xFDbDaZBWgQ9bNxK0qJquMMquW8UXAY/eykVhtGcj6igmYVfokwAoqgFBSA6wg\nWXVOxyc0rwIIRbNqxYTJKmhOFbA4EVBdZymKwncuh/m7377GQjTLwV43//bzx3h2rGvH1wrrFcD6\nAvStFomXnh+lw2HlzEyU/3mpuvVl4toU6YUVHIFufCeK61+xn5oJ3dAHXVSjZDxLNlPA5bbj9rTO\nYasZVevR7h7AA1zZ4vtXAQk4uMPr/DIwBvxSMBj0ayZYUxXQ/rDulRpgaClGbCONp8PB4JAx9ZR0\nySTAeo8Vdu/TIOuzux+y/r2rq+RlhSf2+/WTOZvVzhNH/xwAb17+PpIktTy36nBfFWZVneDq//XV\n36YgF3j+5E8xNlD5Blcs0o0CyxqlyzeXcKaS5JwuRsduTz96xlS+Q3Ky+oVdl8at2khUt4lIp3LI\nBQWH04bd3vTbQtnSIevrt//tCri639vmVTVT1fCqhESyajZ0g+cOqAt4s1QBz2hg9YeGfLirfL/E\ntepqR4sw4lpVerLqjsOAjXiYjcQqboeX/q6hql//hFaDN2OyyogaoKIopOdXkJAY61fvya1SBRTM\nqmYmq5Y13k//nsrWSpVOA5QVWU9WPXDgqYp+ltEKdA4iSRbWYivkC+bb2wnI+oXFBppVXgFZz5LM\nFvjya9P86zdnyRUUPnusl3/14hGG/OXdC+pdASzVgM/BLz+rTq3+vXfmublaBd9WT1U9hmQp2iGl\n+6k3Ln236mtc01NV7QpgrarVrBIr7q1WauLrWx4jB4PBXuAfAWvAa6jMqlgwGPx6MBisH+hoB4lk\n1b1SA9QrgMf6DUukpHSzqv7/jK57JFlVkBX+5Ip6ivDi+O2BxaePF6uAiqIUzaqweRarlehIQN3w\nVwJZX60DXP385Gk+uPlj3A4vf+m5X6rqNYyuPxil8++qp0by3kEslttvB4ZA1mtMViVirVcBhKJZ\ntbFVsqoNV2+qohfU5Ir//vGKn7tfg6zPhG/w9GgXEvDefNQUVUCR8HpyZOdT8K0kUi8+fztZVU8V\nAeu3m1XTIZVXtb//cE1V4WN9HuwWicm1FHGTTKw0klmV24hRSKWxdng4tO8kADdbxazSDsH7m2hW\n6XD1oQqTVRXWAKeXrxJJrtHrG2Bvz2hFP8to2ax2ejr6UFAIR813sF2c4pmgIDem0iqSVbOhBH/7\nf1zl1ZvruGwWXnp+hL/7zH4cFVRExe+0EWYVwHNj3fzksV5yBYV/9soUqVxl9+DQq6qJWloBFBJT\nAd+6/P2qmavtCqBxqtWs8gEKkNri+2KXuV1U50va60SBfwb8RVTQ+ueBHweDwaZQaDudVuxWiXi2\nQDq/+6HdNy4bWwGEonFUT16VkPgZqTnz3YCM1DuzUUKJHHs7nTx4R83j6L4H6PENEI4ucm3hAr2a\nWbXa4pD1G+FU2TfuIlzdmGRVQc7z9Ve+CsAXnvzf6aqyvmV0/cEoTV28BUCHBlQvlfeAemqVvDVb\n9et3d/QBsFHlREAxUrlV4OpCflED3DJZ1a4BNkuZ0Brp+WWsXg/eg8MVP3+4Tw2Kz4Vv0e22cmLQ\nS66g8PZMc6uAqVyBswsxJOCJ4co2oKUSRoK3nayqq/Qa4NwSSqG4yRJw9Wp5VUIOm4XDAQ8KcGnF\nHGsAI6cBphe09eXeAQ4MHgdaYyJgNi8TSeexStDlLp+XZ6TyuQKrK3GQIDBYYbIq0A0WC9nVDeTc\nzibo+Sm1Anj/2FN1b1iUIzERMBQx30TAXo+doU4n6bzMjSqSQtXI41U/579zbom5SIaRbhf/5vNH\n+fihyg/UxO+0r0FmFcAvPLGP/V0uZiMZ/t2Z8lsAhVSG9TPnAOj92GN3ff/ovvvp9Q0Qji5xde58\nVdemTwLsbZtVtapWsyqGWvPbimQssm+bruKCwaAFFcB+Ebh/YmLiX09MTHxjYmLi14EXgAPA/1nj\nNVYlSZJKJgKaZ5pKPRSLpFmej2KzW9h/0LhNVHpBmwS4t/5mlUszq9Lzu9usEmD1z40HsNxx47dI\nFp469ilATVf1aBNeWnUiYLfbTn+HnXReZi6y8+JWUZSSGqAxyaofnvtj5lZvMdC1j888/Feqfp3S\n+oNZILBryRzpKXVxsefo3RPRPGOqgZWoIVml1wCrTVbFW3Pj7O/ZArDeTlY1XYJX1XnyMJK18qqc\nz91FtzdAJpciFFng2VFzVAHfm4uRKyiM93vp9lTHwpELsmoQS633nms1WT0uHH09KLk86cViTXp6\n2RizCkq4VSapAnrFoU2s9vtguiS5PzaoJiRvLV0yzf11K4lUVcDrqGpapxEKL8eRZYWegBeHozLD\nTLJaVcMKyJYx0Oj8LWFWNZdXJdTXJSDr5jOroLFVwHRe5k2tDmrJF/jU4R7+3//lKPu7qkvVhqON\nYVaVymWz8GsvjGK3Snz36iqv31ov63lrZ84ip7N0njyCs+/u9ZhFspS0VaqrAopJgO0aYO2q1awS\nn1RbZc5FKmqrcvO49tzfmpiYuC0XPDEx8R4qoP3FGq+xavXeIxMBb2lg9ZFDAewO47gwKc04cjUi\nWaXVAFNzu7cGOB/J8N5cDIdV4lOHN+9QbGsAACAASURBVN/sig/XM1d/gL9HXRiurbQmswrgSAWQ\n9Xg0Qyadx+2x69HmWhRPRfijN/4dAH/9hV/Gbqv+NZ0uGza7lVy2QDbT/LoQwHtzUbrW1E2Sb5OE\niV4DnDSgBlhlskrUAI3492ykOv1uJEk9CCiUJHPbgPXmK6JVADurgKsLlXKrBHj23bloxTUEI3V6\nRlQAqw+jJ+JZFEXlmFi3mfrUljHyjGjpqpkiZH1qRUwCrB6uLqRzq5bNYVY5HDacLhuFvEw6Vdu6\nWjer9vbT17kHn9tPLLXBaszcB5YhfRJg8+HqAxXC1YXKrQImM3GuLZzHIlm5b+Tu9Eoz1NcpIOvm\nNKsaBVmf2Ujzd/7HVc6uqgdq434nf+9jI7gqqP3dKTFlMdBAswrgQK+bn39cTcz99huzLMd2DpgI\nXlXvJhVAITEV8MzVH1bFOBPJqp52DbBm1boaWUStAG51BHQMtSZ4a4vvd2rfv7HF968BTeNWBTSz\nKrzLIes3rqgbViMrgADpedUEa0QN8F5IVglW1fMHuul0bX4aNtp/lL09o0ST68wnLmKxSEQ2UuSa\nuImqRfpEwNBWTeOiSiuARsTN//tbv0c8HeHE/kd55NDzNb2WJEmmqwK+Mxula1V973tG7gb5ekb2\ngiSRml1Czlb3GXivJqusNgsdfhcoEI0U/3ZFHbINWG+eoufVqlA1vCohYVbNhG4Q8Do43u8lW1B4\neyZqyDVWqoJcrCHWYlbpvKr2JMCG6E7IejqbYnFtGqvFylDgQM2vf2JA3SRdCSXIFsyBs9BTxpHa\nuFWpkuS+JEktUwXUzaomHsAsL1Q3CVCo3ImAF2fepSAXOLz3Pryu+k4EL1f9Xa0xEfCjpfpxq165\nscbf/tZVptbTdGlsQiPslEYzq0r14niAJ/f7SWQL/PNXp3b83a2++g4AfS88seVj9vcdZjhwkHg6\nwnltomW5kmWFDS1Z1dXbTlbVqprMqomJiQLwBvDZLR7yWeDKxMTEVqOg5tl+WuAh7TFNkYCsh3dx\nsiqbzTNzcxUkOHC0z9DXLp0GWG85At1YXA5yGzHycXOcIhqpTF7m+9fUhcGLxwNbPk6SJJ4e/zQA\np698n64eDyiwUQGk3EwSZlU5kHUjK4Dzq5P82Qd/hCRZ+NmPf8kQ88tMZlVeVnhvLop/TTVPROWv\nVBanQ33vyvKm49XLUVeNyapWZVZByUTAEsh6JKkmq6pln7VVu2qZBCi0v8SsAvSpgK83qQp4cTlO\nLFNgn99ZdYUDirwq8VnVVn11J2R9NnwDBYWh3jEcttr/DTpdNka6XeQKSkWDSuop8bdV67ARwaxy\n7VUPWYVZZXbIeiiu1QCrrOoaIR2uXqVZ5dDMqvQOEwGLFcDmTgEsVZFZVd2apt4a8DkY6HAQzxaY\nWt/5kLYSZfMy//qNWb782jTpvMwLB7v5hz+h3suSNeJu0tkk8XQEu83ZFMyBJEl86bn9BDx2Lq0k\n+K9ntw4upOaXiV+bxOr10PXIfdu+rkhXVToVMLqRolBQ6Oh04nA2h023m2REzvvfAy8Eg8GPl34x\nGAyOA38F+HclX+sMBoM632piYmIGeBf4UjAYtN/x/FOoZteEAddYlYrMqt1rVk3fWKWQl9mzz29o\nekEpFEgvqR6la0/9w3GSJOEa2r1VwB/dWieWKXAk4OFo3/ZnIE+Nq1XAd669SmdA+xsOtWYVUNQA\nb64mdzwpKSarajer/ssrX0VWCnzi1BcY6T9c8+tBKVy29klIterScpxcPElHPKqaUns2N6q9Y7VV\nAbu9xWmA1bBEitMAW2/z3CUg62vFTWKRWdU2q5qh9HKYzFIYa4dHHyBQjYa1iYBz4ZsAPKNxq96d\njTSlCviWNgXwif21zaMRRnpHO1nVEHn2qxvn1KxqVk1rcPURA3hVQvcNmItbJcyqRKy2+6BI7ovD\n0AMl3Cozq9nJKrkgE1pS10p9e6pLO5VTA1QUpQSubg5eFRR5SiGTJqsATmqsuQ8NfM/ORzL88rev\n8Z0rYewWib/z9DAvPT9Cr3aolozXxpELabyqgG+waSD9TpeNf/D8CBLwB2eXOK/xuO7U6o/UVFXv\nMw9hcWxvGov91Ps3fkQqU/6/R3sSoLGq2ayamJj4Y+CPgW8Eg8GXgsHgTwSDwf8D+CHwHvA1gGAw\n6AEmgQ/ueImfA0aBd4PB4N8MBoM/GQwGfx14XXv+79R6jdUq4N39zKqbdZgCCOrEJSWXx9HbhdXd\nmI2me5+oAu4+s+o7l9VFwefGt05VCe3p2c/BwROkc0miDpV/0aqQ9U6XjUGfg0xBYWZj+5NYPVlV\n4XSbO3X25hucn3wLj7OD4LO/WNNrlarDwElIteqd2Sj+dfVU1L1/L5Jl81uBZ0zd0Ccmq5sI6HZ6\ncdrd5PIZkpnKDVNRA2w1ZhWUJKu009F8IUc8HUGSLPjcTRlye88rel79PPSfOrbl33w52tc7hiRZ\nWFibJpfP0t/hYLzfQ6ag8O5sY6uAiqJwRqsAPlVDBRDayapGSySrklqyykheldB9ola0bI4DK3Ef\njJUxNGU7FQf43J6surV02dSQdYEVaRazai2cIJ+T6ex24/ZUd1919qvr0O0A64tr04QiC/jcXToA\n3wzq6ejHarGykVglm2v+WmwziSqgUZD1H09u8EvfusKN1RR7fA5+56eO8LnxAJIkYXdYsdkt5HMy\nuWz1By1hnVc1aMg1V6v79/r4Kw8MoAD/4rVpoum7J1aGX1V5VYFteFVCff49HN33ANl8hndvvFb2\ndbR5VcbKKILmXwa+AvxvwDeAXwX+APgJrSoIkAcWgJnSJ05MTFwAHgIuAL+Janz9DPAvgY/fCV5v\npHq1D/LdyqySZYWbGq/qoNG8qoXbT70aIbeerNpd3Krr4SRXQkk6HFaeP9hd1nMEaH06pX4ot6pZ\nBeVB1mVZUUcxA7391Ser8oUcX3/1qwD8had+jk5Peb/vclSsPzQ/WXUbr2r0bl6VkGdM/V5ysvpT\nSJGu2qiiCihO31uzBqglqzSzKppUp9R0erqxWIwbZNFW+YpovKpaKoAADruLwa5hZKXAwtoUQNOm\nAk5vpFmIZvG7bIz317YwjsfayapG6k7AejFZZaBZpSWNLy4nkE1g4hhxaKPIMulFjYmqTZvu6ejH\n7+khkY6alkcEzU9WrWhpk4E91VUAobxklUhVnRp9AotknmENFouV3k51ryDSQGaTmAj44VK8JuM1\nV5D53dNz/JOXJ0nmZJ4Z9fO1LxzT8RqgtlI8XvVvsZYqYCiqGu59TeBV3amfeWgPx/u9hJM5vvLj\nmdt+h0qhwOqP3wUg8MLOZhXAM+NqFbCSqYDFZFWbV2WEDClSaobUb2r/2+oxWeDkFt+bBH7WiGsx\nUrt9GuDi7AapRBZ/j7umDf5mSs81jlclVISs765klUhVfepIT9mTOp489km+/spXubH6ASelT7IW\nbl2z6nDAw+uTG1wLJfn0kc3rU5H1JPmcjM/vwuWu/sTyz87+EQtr0+zpHuHTD/2lql9nM4lFeqLJ\nZtVKPMvUeponI1vzqoQ8NdYAQeVWLW3Msh4PMdQ7VvbzZFkhlWjNaYAA/h41WbWh1QAjCTXJ1gye\nQ1uqotokQP8D1U8CFBruO8ji+jQzoRuM9B/h2bFufu+dBc7MRknn5ZqmKlWi03oFsBOrpbb6RTtZ\n1Vi59vYj2axklsPkEklmQtcBY82q/g47Aa+dcCLHzEaa0W73zk+qo4rsxurvg9nwOkouj727E6tH\nva+qkPVxzt56k8mlywx0bX1fa6ZCTU5WLS8KuHr1CfSiWbU1s0oAqc1UARTq9w+xsjHPSmShojVJ\no7S300mP28ZaKs9sJFMVh3A5luU3X5nkaiiJzSLxc4/t5fMn+jat6Hk6nEQ30iTjWR1fUKlCETUk\n0OffW9XzjZTVIvHSCyP84jevcno6wrcvh/mp4yrqInLuMrmNGJ7RIX3i9U564tif4z+9/Ft8OPUO\nG4nVspij6xpcvbu3nawyQuaxu02o0hqgmWPF1aq0Amh0xzh1B/yyEXLv233Jqngmzys31Kh1ORVA\noe6OPo7vf4SCnGPDfpG1UAKlTpNF6q0jZUDWw9qY394aeFXR5DrfePP3APjrL/wyNquxi0mjwLK1\n6h2tpnQgpSZANpsEKOTVaoDJKmuAUP1EwFQii6KA22PHam29W5WoAUa1ZNWGBldvTwJsjhRFISrg\n6jVMAhQS3KrZsApZH/A5ONrnIZOXea+BVUDBq6plCqCQblb52smqRkiyWvVDtqkrH5DJpen1DeBz\ndxn3MyRJ51Z9ZAJulZ6sqoFZpQ/v2Xv7YWgRsm7OiYCpXIFYpoDdKtG1xUTnemtlvrZJgFCsAW41\nDTCbz3Bp5j1ATVaZTf2aoWJWbpUkSZzcU30V8PR0hC9+6wpXQ0n6O+x85XOH+cJ9W+/z9GRVvPr3\nZFgwq0yQrAIY9Dn5lWfU9eu/f3ueSW3QTSUVQCGfu4sHxp5GVgqcufKDsp6zpu1X2skqY9R6O4AG\nymmz4HNaycsKkU16r62uG5pZdfCY8YaSWEyIal4jtBuTVT+4vkamoPDgXh/7/JVtIEQVcMP1Iflc\noekmSbU6FFA3/TfXUuS3MNyMgKv/9zf/PYlMjJOjj/PQwWerfp2tZJZpgIKp0x9RzZPtklXukb0g\nSaRml5Bz1X0Gdlc5EbDIq2rNlIfX58Rms5BK5sik8yXJqjZcvRnKLIXJrKxi6+zYtvparsREwFlt\nIiDAs2NiKuB6za9fjlYTOa6GkjisEg/WkJQQ0gHr/tZ8z7WixGHBzZtnARg1EK4upHOrlprPrfKJ\n+2ANzKrUFpiJIrfKnJD10lRVMyDUiqKwsljbJEAAZ7964JJZWUWR5bu+f2XuLNl8htH+o/pEYDOp\nTzerzFkDhCK36sMK3rN5WeH3357nH//gFrFMgceHO/na54/tWA8XyfVaaoBmM6sAnjvQzWeO9pIr\nKPyzV6ZI52XCr2lmVZkVQCGxnypnKmA+LxPdSCFZJB0H0VZtaptVO6hnl1YB18MJ1kIJnC4bQ6PG\ncXmE7oRfNkLu4d2VrFIUhW9rFcAXj1d+w3/syMexWe1sWG6SlaIty63yOW3s7XSSKyhMbzHKV4er\nD1S3YZsN3eAH576BRbLysx//Ul0WkiKtkIhnkZuUcssWZD7QmBXOZfV9st3G3epy4trbj1IoVP2+\nEovVSpNVOq+qBScBgno62qlD1pNE2smqpip6QUtVnTpqyPt7WDOrZjYxq96ejZLJ372JM1pnZtVU\n1UNDPtz22jho2WyeTDqP1WapqUrdVmUSkPWpJfXv08gKoFApt6rZ8nQ4kSR1Y1yo8j2S1pL77jvW\nl2MDamJycvkyslL/91+lCsU1XpW3ObX2yHqKTDqPp8NR033V6nJi7/Kh5Avk1iJ3fd/MFUAomlVm\nZpvpZtViedyqUCLL3/+T6/zRhytYJPibj+7lNz51gM4yEny6WRWvwazSjL++JgPW79QvPDHEsN/J\n9Eaa3//hFTY+uIRks9Lz9EMVvc7Dh57DZfdwY/Ejlta3bxpsrCZBUdP11gbhAHa72r/FHRTYpWbV\nzSuqmXTgaF9dKjZiY+va10Bm1Z5+kCQyS2HkfOsn4c4txpmLZAh47DxZxUjyDlcnDx54GlBYt3/E\nWqj5p6rV6oiWrroW2rwKWDSrKk9WKYrCf3nlqyiKzJ974C8wHDhY/YVuI6vNgtvrQJGVmuLWtejD\nxTiZvMwhn43sYgjJatXrs1tJ51bdqq4KKADrlSarxMLJ62s9XpWQv6cIWY8kVLOqq52saooi51Qz\nwH9/7bwqgMGufdhtTlZjyyQzqgG8x+fkcMBNKifz3lz9q4Cn9Qpg7bWxhF4BdDZt9Pi9KAFZn42r\ns4dGB4xPVo10u/A6rCzHs6zUsCE1QhaLpBsliSrvg+l5kay63azq8fXR3dFHMhNneb16zmK91Gxe\n1cpCsQJY63t8uyqgMKtOmdSs6verB3RmTlaNdLvodFoJJ3MsxbZ/z743F+WL37zKxeUEvR47//Kz\nhwneP4ClzH9jj1d9P1ZrVuXyWdYTYSySle6Ovqpeo15y26382sdHsVskrnzvNMgyXY+ewtZRGUvK\naXfz6JEXAHjz8ve2fazOq2pPAjRMbbNqBwlu1W6bCKhXAA2eAigkklXuvY0zqywOO86BXpRCgcxS\n5ZPHzKZvX1L/G37yWG/V4Nynx9Xo6prjPKstmqwC9Oklm00EzOdldfKGBL19lZtVH9z8MR9Ov43X\n1clffObna77W7WQEXLYWCV7V4440yDKuoQEsju0XzrVC1qtOVrV4DRCK3KrIWrJYA2wnq5qiiOBV\nnTLGrLJYrOzT4LyzoZv610W6qt5TAVO5AmcXYkjAE8PVV3qERE28PQmwsXIPq2bVEurnYz1qgFaL\nxHGtCmSGdFWtEwGLyf2715cHtHSVGauA+iTAJiWrhFlVyyRAIQFZT98xEXA1tsxc+CYuu4ejQ/fX\n/HPqoT6/mmY0K7MKwCJJen13qypgQVb4T+8t8Ovfu0kknefhIR+/+4Wj+vPKVbEGWN26dDWmJh17\nfP1YLc1hsW2ng70efu7xIUavqyw791OPVPU6Yj/15qXvbpt2E5MAe9q8KsPUNqt2kJgIuJvMqlQy\ny/z0BhaLxNgR4/vkciZLNrSGZLXqN7RGSTAMWr0KuJrI8db0BlYJPnO0+n+jhw4+i8PmJmGbY2Zx\n0sArbKyObGNWrYcTyLJCV48Hu6OyKky+kOPrr/42AD/99N8yFGy7mYwY212LhFl1PKf+v2dsZ3aP\ngKwnqoSsi2TVRqXMKlEDbGGzqqtHmFUpNnSzqp2sarQURdFrgEZMAhTatAqo1erPzETI1rEK+N5c\njFxBYbzfS7en9qRGoj0JsCnyjOwl6VFI2LK4Hd66TdO6b1BA1pufsNaHjUSqTFZtM8DnwKBmVi2b\nD7IeimvJqiZNt11eqB2uLrTVRECRqjox8qjhQ2qMUpc3gN3mJJaKkMo037zdSttxq9aSOV767g3+\n4NwykgQ/+/AefvPTB+mqosItAOuJKpNVocgCAH0m4lXdqZ8a7+XIpLoG+IZnH4UqUBwnRx/D7+lh\nYW2aqeUrWz5uXcDV25MADVPbrNpBvbuwBjh5NYwiKwwf6MHpMv5mkl5UT72cgwEka20cjUolgO6t\nDln/06thZAWeGu2it4bIuMPu4qHR5wC4vvGWUZfXcB3SzKrJtTTZwu0bwFrg6t97/w9ZWp9hb88o\nn3zgp2u/0B3ka2Kyaj6SZj6aocNhJbChLjA9IzuP7hWGVnKyulNIkaxar5hZtQtqgN0lNUCNWVXO\n2OO2jFV6YYVseB17lw/3fuPMgP13TAQEGPI7OdjrJpmTeX8+ZtjPulOnp9XklhFTAAFibbOqKXLv\n38tav7pxGuk3hqe2mUTa4uKyCcwqXx2TVTpk3YRmlZasCjSrBriofh7VAlcX2qoGeH5SXWealVcF\nKk9SGCuh6EKTr2ZrndpiIuC5hRi/+M0rnF+M0+228c8/c4i//uBg1Q0McSBYbQ0wFBW8KvOaVcnr\n0zjX1kh1+Dht7+G/na080GC12Hjy2CeB7UHrIlnVrgEap7ZZtYMCmuO8m8yqek4BBEjNafDLHVg4\n9ZD4ma2crMrLCn96RV0AvDhee/LtY/d/FoAl5QNSyebyKqqV12Fln99JXlaYWr99gVstXD2SWOMb\nb/0+AD/z8V9tyClgM5NVIlX18D4fqWm10ldOssozqtUAp6qrAXa4/NisdlLZBJnc5oD8zSS4Xq2c\nrPJryaqN0hqgp10DbLSiJRVAI82A4T6Vb1daAwR4Tq8C1mcqYEFWeFt7PxtlViVi7RpgM2Tv8bMx\npFZn9vtH6/ZzjgY82C0Sk2tp4pnmMj3FtMl4rPJDGzmfJ70UBknCteduPs6YlqyaXDIfZL2ZzKp4\nNE0ilsHpsun3pVpUTFYVD6EKcp6Ppt4BzG1WQQlkfcO8ZtWBHjceu4XFWJZQIousKPzB2SVe+u4N\n1lN57t/Twde+cKzmSbC1TgMUcHUzTQK8U2IKYPdzjyFZLPzBuaW7TMBy9PTxzwDw1uXvI8uFTR+z\npptV7RqgUWqbVTuod5cxq/J5manrIQAOjtcHhNeMSYBCogbYysmqM9MRVpM5hv1O7t9TeVroTp0c\nfQwHHaStIS7euGDAFTZHehXwDsh6tXD1iTd+l1Q2wQMHntZA9PWXXn9oQrLqXQ34/Piwn9SUmpLa\nbhKgkDCrUjMLVQ0ukCRJTxNVkq4SkfSWNqtEsmojTjwVQULC56lv1bStuxURkwANgqsLDQcOAzAT\nvnEbw0Jwq07PRO9Kghqhi8txYpkC+/xO9ncZYy6JSlY7WdVYSZJEZL+6zhykfqlLh83CkT4PCnBp\npbnVp1oObTJLYZBlnH09m/IWu7y99PoGSOeSLK5N13ytRircRGaVSFX17fEZYthvVgO8sXiRRCbG\nYPd+Brp2Tm03U/0tMBHQapE4oa1r35jc4B9+/yb/6f1FZAX+6gMDfPkzh/T2Ty1ya6+RSlY3qTqs\nJasCJk5WCbPqyE8+zV++fwBZgS+/NkU0Xdma9tCe+xjo2sd6Isyl2ffv+n4mnSMZz2KzWfC1D34M\nU9us2kG7rQY4N7lGNlOgb9Cnb6SMVnpemwQ41Di4upB7WCSrWtes+vZl1Uz83HjAkEWFzWpntONR\nYOcpFmbWkT717/V6+E6zqvIa4PTKNV658C2sFis/88KvGHeRO0gs0kWKoVFK5QqcX4wjoSarErpZ\ntfOC0up24trbj5IvkK4ysdhVBbdKMKs8LVwDdLpsuNx2UvkYCgo+T5cpAaS7XSJZZdQkQKHujgAd\nLj+JdJT1eEj/+j6/iwM9LhLZAmfrUAV8S0wBrGJK7FbSk1W+9gK70VrtUTdM/Yn61kbuGxDcquaa\nVXodvgpmVTmHoWasAiayBZI5GafNgs/ZWDwGlMDVDagAwuY1wAsar8rsqSpojYmAUKwC/u6Zed6b\ni9HptPJPP32Qv/HI3qprf3fKYrWohpUCqSrSVaGoui40K7OqkMqwdvosAL0fe4yfeXgP4/0ewokc\nv/3jmW1h6XdKkiQdtP7Gpbv3U4JX1RXwIBn079NW26zaUV0uGxYJIul8XU5IG616TwEESG3DE6i3\n9GRVi9YAZzfSnF2I47RZ+ORh4+pCp4aeB+DCwo9MF40vV5tNBMxm80TWUlisUtkwQ0VR+M8v/0sU\nReZTDwYZ0iZ6NUK1gmWr1fnFOLmCwpE+D10OC6kZNfruGdk5WQVFUytR5UTA7gonAhbyMulUDski\n4fa0rlkFahUwb1HTf+0KYOOlKIrhkwCFJEliOKBWAUsh6wDPjKmgdaOnAiqKwmlhVhlUAYQSZpW/\nnaxqpNLZFGuOJFIBOpfqW887oXGrPmoyt8pbA7NKh6tvcxhaNKvMMxFwJS5SVfa6ccm2k5Fwddi8\nBniuBXhVQq0wERCKkHWA4/1evvaFYzxqwPTXOyWmLldTBdSTVSY1q9bfPoecztJ58gjOvh5sFomX\n/n/23jNIkvyw7nyZWTbL2/Z2vN+d9TtrsSCwIAgRAiXQgYRwR/IkHp0O4unEiNOH+yCKIZGUyBBF\n3omUSJAUJBKERIsFl5jFmpndWTczOzt+2vvy3mRl5n3I/GfVdFdXl0lT1ZMvAhGIne6u3Nnursz3\nf+/3XpwGa6Xx1mIGf3UzsefXaNS545JZ9c6tV1Gt3X8vn0rIFUATrq6qTLNqDzE0haCcrkoOeLpK\nFEXc08GsKivMKgOSVYRZtbrZkVveL/rLm9Ib/ycOBOC2q5fAOD79MGyCHwUuiVsrl1X7unrqYMgJ\nCsBCsqSsbCW2yESsC4ylvV9n7945j+vL78Pj9OEHzv2UVpfbVL2CZbsV4VU9PuFFaXULIleDfTgM\nhm0vRcHOytyque7MKpKsSrWZrCI3TKzLBnrAT6d8ARYcJX2fmkuA+qu0vAEumYE16FOSt2qKLAI2\nQtaBOrfqwmIGnIoHXQupMtZzVfgcFhyLqnNDLIoiClkzWWWElmJ3AArwJylwK7G9P6EHHZe/X27F\nioYevnoamFWd3qeVV9tJVkmmdD+ZVTEDK4BAPVkVHVHZrNpKQBRF5EppzK1fh4Wx4vjEo6q8hpaK\nyMmqrUz/MqsA4GiUxfcdDePHzg7j337fIUQ1WpIki4CdQtZ5oYZkTnrmC3n1f+ZrR/HzUgUw9MIT\nyj8b8djxC89MAgB+++0VzCfb56mOhWYwM3QUpWoBl+feuu/PSLIqaMLVVZVpVrWh/VIFjK3nkMuU\n4fLYMazS6UoztZoV1loWrxuMmwVfKIJLa7fEpIVKHI9v35YWw75PBbB6o8JRD4LV0wCAt5pEVwdB\nTiuDSb8DvAjMyW8snVYAuVoVf/javwMA/MNn/jHcDu1+DprJ6bKCYShUyjVw1eZwRrUliiIuLUtJ\njMcnvCgtts+rIuoVsu7vMFlFKoAugya+1ZQv6ARHmckqo5S9Wq8AapFomCRm1bZk1aTfgamAA/kq\nj8tr6iVZ3l6SfpafnPSqVgMpFTnwvAi7wwKrTf+K0oOsha1bAIDgFoXiorYpD6/DgumAAxwv4s42\n9qOestml7zOuyqPaIey91Mb95cyQBFlf2Lq1KwRZbxG4etStP1y9XOKQSZVgsdAIRdR5iLa4XWBY\nJ4RSBbVcAR8tvAMRIo6OPwyHrXeAu9aqJ6vW+vpgm6Yo/NwzE/ixsyOwaHhwV4esd5b6T+Vj4AUe\nflcINkt/pnIJryrcYFYBwAsHAvj04SCqvIh/dX4BlVr7Bv4zMmh9+ypgyoSrayLTrGpDYWJWDThk\nvb4CGNG0S1taJTFt/dcAKYqCU4GsD1YV8LW5NApVHseirFJ5U0uBkAtB7gwA4O1br6LGD+b38qHI\n/VXATpcA//r9P8ZWehXj4QN46wfGxAAAIABJREFU6cwXtLnIFqIoCi4Cl9WJW7WYLmMrz8HnsOBQ\nmFWqfO3wqojYGdms6rYG2GGyqpAnvKr+vPnpRP5AQw3QTFbpLqUCqDKviogkq7bXAIF6uup1FVcB\nL2hQASRJT3MJUH8tbt0GAARjFEpL2vNzTg6RKqBx3CqKorquxJfbwEx42QAivlFUuDJWkwtdX6ea\niuUNhKvLqarwsAc0o95jX2MV8ArhVU33fwUQADxOPxxWFqVqAYVy1ujLMVzdJqtiGZlXJQPr+03l\ntS3kb82DcbEIPHZqx5//9FPjGPfZsZgq43feaf+w4KmjnwIFCh/cewOFcj0YUV8CNJNVaso0q9pQ\nmCwCDniy6t5N7SuAXDYPPl8E43TA6u9tTrVbKVXAAeJWiaKIv7heB6urLauNwbB3Bg4+inw5g6sL\nb6v+GnqILAISyHqig2RVOh/HNy/8LgDgxz/xfxgGunZ7uofLdiNSAXxswguaojpaAiRyzU4A6J5Z\n1X2yavDNKl+QrSerXGaySm8pcHWVeVVEE+FZAMBqYn5HiuPZhipgrYuVpe1KFDjcihVhYyicHVMv\nFZrPmkuARklJVsVolFY2IPLaJoFODBPIurHcKlI37XRsRKkBjrW+j50dltJV/VIFJMmqiEv/ZNXW\nurpwdSJiVpU34nW4+uxgmFUURSHqJ4uA/V0F1EMKs6pDs6rfeVXx1y4BAILnzjZdD3VaGfzSi9Ow\n0hT+8kYcby60x5gMeqI4PvkoajyHS7e/A0B6jiM1QNOsUlemWdWGCLMqPsDJqlymjM3VLCxWBpMH\ntDvdL5NU1fiQIRBJoJ7oKg/QIuCtWBF3EyV47Ayel8G8aisUcSFUldJVg1oFPBSW4uW3Y50nq77+\nxm+hzBXxyIHncHr6Se0ucg+5dU5WvUt4VePSjSqp8nWUrJJB7KWlNQi1ziHAgQ7XAMkNk2uAlwCJ\nfAEnOBOwbohEUVRqgFolq1i7B2HvMDi+io3U8n1/Nh1wYtLvQK7C4/Ja77X0i3IF8OyYB442GX3t\nyExWGSNeqCmJvGExBJGrobyuLbeKJKuubxUgGFh/IiB/AvZvVwQz4dxjwKffFgEVZpUB1Xa14epE\n9oj0LLGw8jFShTgC7ggmwgdVfQ0tFfFKZlXMNKsaaoD7zKw6Lx3Mb68ANupgmMVPPC59L/z6G0vK\nGMJe2l4FLOarqFZqcDit0rqiKdVkmlVtiCSrBplZRVJV04dCsFq1Y1IoZpUBvCoi54R0E0PqiIOg\nv7ghPcS/fDgEm4oPIY0KRlwIchK36r27r6FcbR8o2C86EGJBU1K1LZ2tIJ+twGKl4Qu0ZiTMb9zA\ndz/6czC0BV968Z/qdLXNpcBlO7xJ70aFKo9rG3nQFPDIuGToFbtIVjGsA/aRiPQwJZ9sdyKSrEo9\ngMkqr98JjpKMCq/TNKv0VGlpDVw6B1s4oOl7EnlAW4rvrAKSdJUaq4CEV/XUlL/nr9UoM1lljDZS\ny+BqFYS9wwgMkwMBbauAQx4bIi4rchUeiyl9hz4apRzadDA2IlSqqMZToBhGSfXspn5bBIzlpeeH\nsAHJqricoouOqNt2IP8Nrm1+CEBaATTqkLobRZRkVX8vAuohxazKd3ZfGstIv68iPv2xL3tJ5Hkk\n3ngXABB+cXezCgA+fyKCJya8yFV4/OvXFsC3kYR+/PAnYGGsuL70HpK5LYVX5Q+xA/VzMAgyzao2\nFJan0weZWaXHCiBQN4icBvCqiOrJqsGoAWbLNXx3TmKafFaDCiBRMOKGXQgiYj+AClfGB/de1+y1\ntJLDQmPK74AgAtfuSnOzoai7JYNNFEX8/nd+FSJEvPzID2EkOKnX5TZVNzfp3eqD1Rx4ETg+5ILH\nboEoil2ZVdLHE27V8h4fuVM+NgiKopErpdvipRFm1X4wqxgLDcEiJQEtfHtDAKbUUeaynKo6rQ1c\nnWgicgDATsg6UOdWvbWQbusGeDeVOB4fruVAAXhS5elyM1lljBY2pQrgdPQInJPSg7PWkHUAODks\n/R762EBuVTd1+PK6dB9rHw6DYlofus4MSUnKha3b4IXO08BqShRFw9YABV5QODqhqLrvP8SsulWS\nfu+dmRmMCiBRVF4EJIbLgyyFWbWPklWZyzfApXNgp8fgmmndJKAoCl99bhJBpwXXNgr4r5f3fn50\nOTw4e+BZiBBx8ea3kUqYS4BayTSr2hBZAxxUZlW1UsPSvQRAAbNHIpq+lpFLgEQKs2pAklXfvp1A\nlRfx6LgHoxqebAflFZghnAUwuFXAwzJk/d6ilFTYqwL4zq1XcXPlQ3jZAH7g6Z/Q/Pr2ErlJ7xQs\n240aVwABoBpLgi+WYA14YfV39sDr6gGyTtMMfKxUb00XEnt+fCEn3TCx+6AGCEABrKPS/ytJ+0mN\nS4BaalJOVi3H7+34s+mAA+M+O7IVHlfWu68CvreSA8eLOBZ1IaByxSCfM5NVRmhBhqtPRY+AnZLM\nKj0g6yeGjOdWdVOHLym8qtYVQABwO7wY8o+Dq1WwEp/v7iJVUq7Co8qLYK00XDqvbaZTJfA1AR6f\nAza7upxOezQMzipikd4ARdE4NdU6vdJvqi8CmskqkqwqdMmsivShWRU/33wFcDf5nVb88xemQQH4\nww832vr92FgFTJpLgJrJNKvaUKihBtjPE6e7aeFOHDwvYnTCr3lSQakBtnEzoZXIaw9CskoQRfzl\nTenh/XPHtDUSiVnlzBwBRdG4PP8WcqXeqyl6iywlbm3sDVevcmX84Wv/HgDwxWf+CVi7MdD/RpGb\n9E7Bsp1KFMUGXpW0HFbsYgmQiCwCFha6hKx3wK0q7qNklSDwqIrSTU+tuD/Mt0ERWQL0PaStWTUR\nOQSg+SIgRVGqVAEvyub80yquABLVa4BmskpPLcpw9emhw3BOyGbVsvb8nFN9kKzqpg7f6WFov1QB\njeRVJWSuZ6iNEZpOZR8KYWNcgECJODhyAm6n+r+btBRJVpmA9fq9VieAdVEUEctKz1n9mKyKvyab\nVXtUABv18JgHXzwzBEEEfvn8AnKV1qnMh2bPgbW7Mb95E0vr0mGVCVdXX6ZZ1YZcNgZOK41KTUCh\nqu1SixbSYwWQqJOTL61kHwqBYhhUthIQKp2dEuitD1ZzWMtWEHVblfSLVmJdNjicVohlJ46PPwpe\n4PHOre9o+ppaiJhVpZQUuW1lVv3Ve3+EeHYdk5FD+MTpz+tyfXupW7Bsp7qXKCFZqiHMWjETlB5C\nu60AAnWzqjjXnVkVcEtmbDuLgEoN0DP4ZlW2lIYIERaBRT7T37+P9pMkuLpkBng1WgIkGgtNg6EZ\nbKaWUeF2sgBJFfDNhUxXVUBeEPGObDw/qYVZlZFrgPvg521QJIqisgQ4FT0C5xSpAWr/4DwVcMBl\nY7CZr7YNE1Zb3dThy2vS/eVecHWiflkE3MobtwSY2JJHaFSuAAKAfSiM1RkBAHB6erAqgEBjsmpt\nIIMIaspqY2Cx0KhxPKrV9mqzmWISXK0Ct8MHp72/DBounUX6g+ugLAyC58529LlffmQERyIsYgUO\nv/7GcsvvDZvFjscPvwQAuJF4E4BpVmkh06xqU4NaBRQEEXM3pXWZA0e1N6vKCrPKOLOKtlhgH5Ee\njEtrncOg9RQBq3/2aBhMC+6SGqIoSklXnRh6DgDw1o3BqwLOBp1gIMJSlG6yd6sBJnMx/I+3/zMA\n4Muf+CpoWt/4/W5SJruzZU1vkMjD7WMTXoXX080SIJFiVnWZrAq0CVmvVmuoVngwDAW7Q93aghHK\nFJIAAIvoRiY5eKMGg6riwipq2Tzs0RDsw9qxAAHAwlgxEpiCCBGriYUdfz4bdGLUa0emXMNHXVSv\nPt7MI1fhMe6zY9KvbvqJ5wUUC1VQFOAyIPnxoCpdiCNbTIG1uxHxjoCdlB6c9agB0hSlVAE/3jSm\nCkiSHIVcBQIvtPU5ZNyj82SVsYuARvGqgPpistq8KgCwR0NYnZb+2z00+7TqX19rsXYPXA4vqrUK\nMsWk0ZdjqCiKglOBrLdnYNd5Vf0HV0+88R4gCPA/dhoWd2fmkYWm8EsvToO10nhzIY2/vtUaXfHM\n8ZcBAKu1dyFCRCBk1gDVlmlWtSliVg0aZH1tKY1SkYM/yCIU1dbtFQVBAWA6RoxjVgGAc1yuAq72\nbxVwK1/FO0sZWGgKLx9uvWyjlohZNWZ/GFbGhpvLHyCRGwy2F5HdQuOAxwabIMJiZ3blrHz99d9E\nhSvhsUMv4sTUYzpf5e6y2hjYHRbwvIiShua3UgFsSOz1lKwigPXFNYh85wnTdmuA5EaJ9dj3xaJK\npijd6FgFNzIp06zSS9kr0gOq94y2cHWiiYi8CBi7s+PPGquAr3dRBbywKK8ATqqfqlKWNz120Ix5\nS6iXGnlVFEXBMRoFZWFQ2YyDL2nPM6xzq4ypAjIWGqzLBlFsH+qs1ADH2ru/JJD1xdjttoY9tFJM\nfm4wpAYYk5NVGtQAE1QWOT9gKwPTvgOqf309FPVJicaYWQWsQ9bbNauUJcD9UQFs1IjXjp9/ZgIA\n8B8vrmChxb3b8YlH4GNDqNBJCN5N1dlwpkyzqm2FG7hVg6T6CmBE8xv2SiwJkavBGvSDYY1lXyiQ\n9eX+Nav++mYcggg8M+1THZi7m4hZVUiJOHtQXrG48W1dXltNzdqkX10Wr6Pp9/W99Y/x+sd/BQtj\nxZde/AW9L29Pab0ImCnXcGOrAAtN4eHRevJMYVbtsYzSTBaXE/ahMMQqp9R9O5G/zWTVfuJVAfVk\nlVV0I5MsGnw1D47qS4BHdHm9SdmsarYICHS/CiiKIi7KZpWWvKr9ULkdJCm8quhhAADFMA33Ldqn\nq+rcKgMh6z7pfbDdSjwZzXG0WQNk7W6MBqdQ47ldfy71UEx++I/qXAMUBBHJmGRGBiPqm1VXF94G\nAIwu0uDig8c/BYCIaVYpUrhVbZrHsT5dAhRFEfHXLgFoH67eTC8eCOJTh4Ko8iJ++TsLqNSaJ0Bp\nmsGp0ecBABnnR12/nqndZZpVbSpMaoADlqyqm1V6VABlnkCbp15aSoGs9+kiIMcL+Bs5Wvq549qC\n1RtFbliSsQLOHZOiq4NYBQwL0ptG0b7z5k8URfz+d34VAPC9j/4IhvydGzNai6TBOoHLdqL3V7IQ\nAZwadoFtWB8is+jdJKsAgJ2RPq+bKiCpAe6VrCJLgPulkpSR1w9tcKNU5FDdA9hpSh0RXpXvzDFd\nXm9CXgRcijd/KD4YcmLYY0OqVOvIIFhIlbGeq8LnsOCoBuloYph7TLi6rlrYJLyqw8o/c06SRUDt\nH5wPh1lYaQrzyTLyBv1OIoy0dg9tCLOqk7XpmSGZW7VpXBVQSVbpXAPMJIvKEqAWlfqr8xcBAGML\nNCpbe6/89qOIWbVlLgIqi4DkwHAvxfsUrl64s4jy6iZsIT+8Jw/19LX+96fHMea1Yz5Vxv93affv\nkVmPxGxbq30AXjDv8dSWaVa1qSA7eMmqZCyPZLwAh9OKsamA5q9HKndGwtWJlBPKPjWrLixmkCrV\nMB1w4OSQfjA+kqxKxvJ4aPYcnDYX5jdvYjVh7LRzp3KUpZ/DTexMVV248Qpur16BzxXC55/8X/S+\ntLakdbLqklIBrCcxuHQWXCoLhnXCFgl29XXZGSkWXZxb7vhzSQ0wlY+1/LjGWtJ+EGFhuB3S72CT\nW6W9REFA5qqcrDqjT7JqIiLVYFZi95r+OUVRSrqqk1VAkqp6ctKrCddQSVbtUqc2pY1IDXA6Wv/+\n1BOybrPQOBxhIQK4vmVMFbCTQ5taoYhaJgfaboMt3P79bD9wq+prgPomq+Jb2vGqajyHa0vvApCS\nVZXNvYdT+lHKImDaTFYpNcA2k1X9WgMkFcDQC4+DonuzOZxWBr/0iWlYaAp/fj2OC4vN37ttpSE4\n+DDKfBYfLVzq6TVN7ZRpVrWpsPxDPEiA9XsyWH3mSBiMDiyK+qmX8WaVY0wyq8or/VkD/Ivr0hv7\n9x0L68rl8QecoBkK2XQZlGDBE0ekFYsLN17R7RrUUCUjPfCv8rhvobPClfBH3/0NAMAPPvvTYO3q\n36SpIY+GySpeEPHeSmteVbffcwpkfb6HZNUeNUCyBMjumxqgdOLsd0lcukzKrAJqrcLcMvh8Efbh\nMBxD2sLViSK+UditTqQKceRKzW9on5uRHrLfWEhDaHNc4eKSzKvSoAIImMkqI1SqFLCZWgZDWzAe\nnlX+eR2yrs+D80m5CmgUt6qTQxsFrj7SGdKiblYZswgoiKLSyAjrnKwiS4AhDXhVt1Yuo8KVEKn5\n4MpTqGwOarJKXgTMmmYV2yFgnfydRfosWRU/L/OqeqgANupQmMX/+ph0kPCrry8p5nOj0okSgtUz\nAAazrdLvMs2qNqUwqwaoBqhUAHVYAQTqKSYjlwCJyDX0Y7JqIVXC1Y08nFYaLx3sLuHSrWiGRiAk\npatS8cYq4CsDM90rCiKS8klwzmbBvUT94f8vLn0NydwmpqNH8MLJzxl1iXvKpWGy6na8iGyFx4jH\nhnFf3fBRlgC74FURuaa7XwRUAOvFJARhd0A7uVHaL8mqtGxWhXxS3TdtJqs0V70CeFS316QpGhNh\nKV21tAsf51DYiSG3DcliDdc39zYIEgUOt2JF2BkKZ8e8e358N8rnzGSV3lqK34UIEePhWViYetrG\nOSEnq/QyqxTIujHcKo+vA7NqrTNeFdHM0BFQoLAUu4tqTXtw/XalSzXUBBEeOwOHRd9HroRcNw5r\nkKy6LFcAj1hnAACVrcFOVsXMZJVyQNhuDTAmJ6vCfZSs4ksVJN/+EIB6ZhUA/P2TETw27kWuwuNX\nzi/u4E6mEgUEOcmsevf2eVQ48z5PTZlmVZsKDVgNsFioYnUxBZqhMHNYn5Nlwodqd6lFSznG68wq\nUWhvFlkv/dUN6U39pYNBuBp4QnqJVAETsTxOTD4KnyuEjdSS4fPO7SqTLoGr8oDdAo6hcTsmmVXx\n7Ab+/J3/AgD48ku/CJrW/++2XZFkVbtg2U50qWEFsPEEWklWTXXHqwIAdlYyqwpznZtVFsYKj9MH\nURSQLaZ2/TilBrhfmFVyDTASkH4vmskq7ZVRlgD14VUREbNqN5hzp6uAJFV1dsyr2YNuPmMmq/QW\ngas38qoAgJ0izCrtAesAcFw2q27FiqjuAg/WUi5P+wnjbnhVAOCwsRgLzYAXaoZA1pUKoM6pKqAh\nWaWBWXV1QTKrjgVPAsA+SFatQxD761lBb3WyBlgo51CqFmC3OuF2aJP67Uapdy5DKFXgOXkI9i5x\nF81EUxT+2fOTCDgtuLqRx9ev1IMQtZqAbKoEpxjCgeGTKHNFvH/3ddVe25RpVrWtIGsFBSBV4jpa\n8jFK87diEEVgYiYIu0OfnnzdrBrW5fVayeJiYQ14IVSqqCaMXSkRRRHpEoebWwW8di+Fv70jPbx+\n7pg+JuJ21blVBdA0g6eOfg+AwYmuktNCV9AJQEoSAcB//e5volqr4Mkjn8SxiYcNu752ROoPBQ2S\nVZeWpQfcxybuT2LUlwB7MKtkMHtxcRUiv3s6ajcp3KoWkHVSA9wvySpSAxwKS78XTWaV9spekXhV\nPp2WAIkmyCJgvDm3CoBiVr05v3cVUOFVaVQBBMw1QCO0sLmTVwXUAevFxVVdks4euwXTAQc4QcSd\nuP4mukdJGO9tVpV6OAydHZZM63sGVAHrcHXjlgBDKg8zpPIxLG7dht3qwNEx6V5rUM0qu9UJHxsE\nL9T25Gnudyk1wDaYVXF5CTDiHdEVZbKXlArgi0+q/rUDTiv+z+enAABf+2AdH8uJ1EyyCFEEfAEW\nz574DADgreuD8Tw1KDLNqjZloSn4nRYIomRY9bvu6rgCSNTtyZdWqs9Aa8+tKlZ5zCVKuLCYxp9d\n28JvXVzBv/z2PfzUN27g+3//Kr74R9fwc39+G//q/AKKnICTQy7MyGaL3mo0qwAoVcCLN15pWc/q\nF8U3cwCA4RHJjLkdL+H26lW8deNbsDI2/MgLP2/k5bUlt0bJqkSRw514CTaGwpkRz31/Vl8C7L4G\naHG7YI+GIFY5lNc7v7Hzt8GtqierBv/hWRAFZIuSWT42LJ3gZlKmWaWlRJ5H9qM7AACvjjVAAJiU\nzardaoAAcDTCIuKyIl7kcKMF2LpY5XF5LQcKwJMT2lQAASCfk5NVPjNZpZcWm8DVAcAa9IFxs+Dz\nRXCprC7XonCr2qilqi23r/01wF6YqDOyWTVvQHo8lidwdf2XAGvKEqC6RtnVhbcBAMcnHoV7RLrP\nHtQ1QKBhEfABrwJ2kqzqxwogUIerq1kBbNQj41784OkoBBH45dcWkK/UkIpLvzsDYRZPHv0e0BSD\ny/Nv7cquNNW51N8y3ccKsVakSjXEC5zuoMROVON4LNyRHgb14lUJlSoqWwlQDAP7UEiX19xLjrEh\nZD+6La0Unj3e09eq8gK28lVs5Mj/Kvf9/2yltcnjsjEY9tgw7LZhxGvHZ48a93cUjEg3p8SsOjhy\nElH/GLbSq7i+/D5OTj1u2LW1o7icrJqd8sOaS2AtU8J/fvXfAwA++9iXEJVvPPpZrNsOiqZQKlRR\nqwmwqFTxIWD1h0Y9sG/7msX5OmC9F7Ez46hsJVCcX1EM4XYV2CNZJYqicqPE7oMaYL6UgSDycDm8\nCEUkwyGTKkIUxb46jdxPKtxbBl8owjE2pGoNoB1NRqSZ7JX4vV3/G5Mq4J9di+GN+TRO7AI/fn81\nB04QcTzqQoDVJpVRrdRQrfCwWGlNpu1N7RQv1LAUl8zM7TVAiqLATo4id/0uSktrsAW1r9ecHHLh\nL2/EcW0jjx88oy9v1OG0grHQqJRrqFZrsNl2/x4kzKpumKgKZH3TALPKoGSVlhXAK3NSBfDMzFPK\n/f6grgECErfq7vo1xLJrOIb+TuVrKaf8XFsqViEIIugW67MkWRX2Gt+kISqvbSF/ax6Mi0XgsVOa\nvc6XHx3F5fU8bsWK+HdvLuNTVikFGwi74HeFcGr6cVyZv4i3b76K73n4H2h2HQ+SzLuTDhRirbib\nKPU9t2p5PgmuyiMy4oEvoE96p7whpSzsw2HQlv74tlKSVW1A1nlBRKLI3W9E5eX/n60iUeTQKpRv\nYygMuW0Y9tglU8pz///32Pvj7wQAguE6YJ28IZ079jK+efF3ceHGKwNjVkWHPZhdK2J+5e8wn/oY\nAVcYn3/yKwZfXXuiaQoutw35bAWFXEW1n9NGXlWjaoUSKptxUFZLz8lHdnoMqXeuoDC/gtCzj3b0\nuXslq6qVGmo1AVYbA1sf/cx0K1IB9LFSHdvhtKJc4lDMV83alUZSeFU6VwABwMsG4GODyBSTiGc3\ndp30fm4moJhVP/XEGOgmptZFeSL7aU0rgFKixe1xmOapTlpPLoGrVRDxjcLl8Oz4c+eUZFYVF9fg\ne0h75hpJVn28WYAgik2/F7USRVFwe+zIpErIZysIhluZVXKyqguzajp6GBRFYzl2D1WuDJtVvxSh\nUcyquGJWqVsBFAQeHy1KyaozM0/D5g0AFIVqIg2hVuub+/9OpHCr0qsGX4mxYhgaTtaKUpFDqVht\nmW6PZfpvCTD+2iUAQPDcWdA27cxhC03hX7w4jZ/+5k28Pp/GMC2FFQLys9W545/BlfmLeOvGt0yz\nSiUN3m8VA6UsAva5WXVX5xVAACitEJ6A8UuARORayisbEEURmXKtnobKNyajqtjKV1FrwSKjKSDq\nsjU1ooY9dgScFl1v8nqR3WGB22tHPltBNl2CP8gqZtU7t/4OX/nkP4fV0p+pFp4XkIzVTwwPBLaw\nefsbAIAfev5n4LCxRl5eR3J7HchnK8hny6qYVTVBxPtysmo7r4pMobNTo6CY3sDz7OwEgDoDqxMp\ni4C7JKv2UwUQkJYPAcDnkk6ffUEnyqscMqmiaVZpJCOWABs1ETmIzOIlLMXu7GpWHY2yCLNWxOS1\nv2PbHih5QcQ7svH8lA68Kre5BKibFmS4+vS2VBWRc1L6ninptAgYddsQcUnfi4upsu54ArfXIZtV\nZeUgbbtEUUR5tXvMhN3qxER4Fkuxu1iM3cGhUe1SF9sVy0vPC1G3Mcmq8NBOQ7QXzW3eQK6UQdQ3\nhuHABCiKgi0cQDWWRDWWgmMkourr6aGIvAi4lXmwa4CAlK4qFeUDtVZmVVbCq0T6qMmgdQWwUaNe\nO37u3AT+9WuLWFjNwA8gGJaePx47+AJsFjturnyIWGZ91/sAU+3LNKs6EFkEjBf616wSRRH3ZLPq\noK68KjIrbByvqljl7zOicgUrhgBcfPcu/q8/uIoS13rpI+C01I0o9/2mVMRtg6VFJHbQFAy7kM9W\nkIwV4A+yGA/PYip6GItbt3Fl/gIePfSC0ZfYVOlEETwvwhdwwma3oJT8C9BiGk72IJ498VmjL68j\nkQfEduCy7ej6Zh5FTsCk34GRbUZIcUGGq/ewBEhEmFfF+eWOPzcgJ6tSuySrCjnpFNrl6U+ztFM1\nJqsAwBdwYnM1i0yyhNHJgJGXtm+VkeHqevOqiCbCB3Ft8RKW43fxyMHnmn4MLVcBv/mxlK7ablZd\n28gjV+Ex7rNjwq9dCsQ0q/QX4VVNRZsn/9gJGbKuk1kFSOmq8/dS+HizYIBZtff7YC2TA18sgXGx\nsHi7q7XNDh/HUuwu7m1c19esMihZRYZo1E5WXZm7AECqAJI0pj0aQjWWRGUzPpBmVdQv/czFTLMK\nrNuGZKyA0h6Q9XoNsD+MGJHnkXhdSlaFX9TerAKATxwM4v3VHKqLUrPI5Zd+dzrtLjx68AVcuPkK\nLtz4Fr5/QBof/SzTrOpAIfnNpp+TVVtrWeSzFbi9dgyNagdl3S6yBNgNT6BdcTI3al1OQ2021PXW\nszu5UcN5C34EALMVR4kT7uNGbU9HDXnsmk2D96OCETeW5pJIxgqYPSLdXJw79jIWt27jzevf6luz\nilQAw0NuxDLr+PjenwIMwNssAAAgAElEQVQAOM8Pg6YG67+fW1lCUmcRcLcKINDAq5rpHq5ORL5G\nd8kq6Xtt12SVvATI7pNkVaYgJav8LtmsCkonb2lzEVATCbUach9JZoDvtDFmVTuQdQD3mVU/+fjo\nfTW8i0vSCuBTk9oyi3KkBug14ep6ac9k1ZT04KxXsgqQuFXn76Xw0UYe36fzSnHdrNr9fbBxvKfb\nuurs8DG89tGfY07HRUCClwCAkI7MqvuXANVlVl1ZIBXAp5R/Zo+GkPv4zsBC1iNeGbBumlVgXdLP\nI7kX2039ZlZlrtwEl87BOTUKlwr3ue3qJx8exn965QZ4Cvj6rSR+RqkCvowLN1/BW6ZZpYpMs6oD\nhQcgWdVYAaR0TAL1stSyXcvpMm5sFe7nRuWqSBQ640aNHHQCvw2MlDL4xo+d6itulNGqLwLmlX/2\n9LFP4Y+/+xv44N7rKFUKcNrVPZFTQ2QJMDzkwR9/9zdQ46uo2Z9AkptCtlyDd4AgwR6Vk1XErNpe\nAQSA4oJkVjl7hKsDUG4EiourEAUBFN2+SbhXsqqY3181wExRTlaRGqBc98yk9J+JfxBUuLMIvlSG\nY3wYtpDfkGuYiBwAIEHWW+n4kAtB1oLNfBW340UckX8ni6KIi4uSWaUlrwoACmaySleJooiFTcms\n2jVZNUnMqnXdrqvOrcrv8ZHqq35os/v7IOGOOsa6T+7PDEn8rzkdFwGTJQ6CCPgdFtgY/Q7TMilp\nCdDttau6BJgvZ3Fn7SMwNIMTk48p/3zQIeth7zAoUEjkNlHjOVgYfSub/SSXe+9FwApXQraYgoWx\nwu/uj0Gt+Hn9KoCNqshruiWrBX93I45Hxr14asqHMzNPwe3wYSl2F0uxO8r4iqnuNDhPdn0gUgPs\n52TVvZtSHPGAjhVAoM6sco73ZlalSxz+8TdvguN32lKdcqNEQcDf2m0Q0lk4axxgmlWK6mZVfa46\n7B3B0fGHcXPlQ7x397t49sT3GnV5u4okq4q2RVy88m3YLHZExr+EbAq4Ey/ikXH90oS9yqVismor\nX8VCqgynlcbJoZ0mI6kBuqZ7P3GyeFwSoyKeQnk91lGaspFZ1Wwtbf/VAGVmVUMNEAAyKTNZpYWM\n5lUBwHjoAChQWE0stHzwoSkKz0778T+vx/HGfFoxqxZSZaznqvA5LDiqcoVnu8xklb5K5WPIldJw\n2T27rmg5J2Rm1coGRJ7vmTHYjqYCDrhtDLbyHLbyVUR1XGL1tPE+SA5DnT0chk5FDoGhGawm5lGu\nluCwaV93JLyqiO68Kum+LrzL0mi3urZ4CaIo4PD4I/cdZipm1VZS1dfTS1aLDQF3BMn8FpK5LUT9\nvR/qDarICnOxRQ0wLvOqQp6hvmk0KLwqnSqARKm4dPAYlROMv/r6In77C0cRdtnw5NFP4tXL38Cb\n1/8GP/K8aVb1ov74LhsQ9TtgPZsuYWstC4uVweSsvpPdajGr7iZK4HgREZcVP3xmCP/0mQn8ymcO\n4ve/eBx/+ZWH8LUfOoF/89lD+OpzU/jRh4fx0sEgTgy5EWKtOwDnFE0r11NuYxHwQVIzswoAnj72\naQDAWze+pfs1taP4Zg4iBLx67/cAAJ97/MdxdGQSAHA7PlhpFTWTVSRVdXbUA2uTE1w1k1VA91VA\nh80Jp82FGs+hUM7u+HMSPd8v8PF04f5klV+uAWaSg/W9OigivCrfQ8aZVQ6bE1H/GHihhvXkYsuP\nfXZG4pa9Pp+GKEoHNCRV9eSkF4zG6ej6GuD++Hnrd5EK4FT08K51NoZ1wB4NQeRqKK/HdLkumqJw\nQj7kuLahb7qqHWaVGveXNqsDE+GDEEUBi/J/B61lHK9KSqCrXgGUeVUPNVQAAcAelQ6hKpuDWQME\ngIifVAEf7EVA1rV3sqrfKoBcJofMB9dBWRiEzj2i62sn49Iz1InZAB4d9yBb4fErry2CF0ScO/YZ\nAMCFG69AEFszk021lmlWdSCPnYGVoVCo8ihx/N6foLNIqmrmUBgWq/ancY0qKzHt5qeF7WpeZrk8\nNeXDVx4bxWeOhvHwmAcjXntXgHPnuHQ9pdWNnq5rv8njc8BqY1AsVFEq1t+UnjzySTA0g6vzbyNb\nTBl4hTvFcTzSiSIS9stYTt5G0B3F5x7/Mg5HpBPSOwNmVqnJrLq0LD3gNuNVCVUOpZUNgKbBTqhz\nc8HOkEXAziHrJF2VasKtKsg3SPumBiibVX7ZrPL4nQAF5DJl8Lx586K2Mlekio/XIF4V0URYqgIu\n71EFPDHkQsBpwUauirsJ6b1P4VVpXAEEgLy8vun2mckqPbQXXJ2ILAIWF/Vj6JwYls2qzcIeH6mu\nyPtgrlWyitxf9oiZmB2WqoD3dOJWxWRkiO5m1Zb6vCpRFBVe1entZpWSrBrMGiAARM1FQAB1Xmir\nZFUsI5lV/bJyl3jjPYg8D/+jp2Dx6IsvSSWkn7VgxIVffG4KAacFV9bz+O9XN3Fk/AzC3mHEsxu4\ntXJF1+vabzLNqg5EUVRfVwHv3ZR5Vcf0XePgsnnUcgXQTjusgd5qWPMp6YZlOqBORNshV5TKK6ZZ\n1SiKopqmq7xsAKenn4Qg8nj71t8adXlNldzKoyZWsOaUrutHnv9ZOGxOHJbnYgctWVW/Sa8oqYpu\nVK0J+HBNOg1vxqsqrWwAggDHaBS0XZ2bZteMdGNHwO2dyC9zq9JNuFXFHAGs75MaYFGuAcqAdYuF\nhsfrgCgCubQ6YH1TkoRaDbmP7wDoA7OqTcg6Q1N4Zlpia70+n0aiwOFWrAg7Q+HsmLaVZlEQ68wq\nM1mlixS4+lBzuDqRMZB1mVulc7LKJSerCrkKRKH5+2BpVWai9sCsAqRFQEA/bpWSrNK5BhjfIkuA\n6plVK4k5JHOb8LlCmNo2DmAf2gfJKjkl9KAvAio1wBaA9ZicrIr0SbLKqAogUK8BBsMuBFgrfvH5\nKQDA77+/jptbJZw79jIA4K0bf6P7te0nmWZVhyKQ9USfQdarlRqW7yUACpg9oi+vqnEJsNulFqIF\nOVk1E1DnpJeYVSWzBrhDu1UB679cX9H9mlopvpnHuuM1VJHFodFTOHdcitiO+xxwWGhs5TmkS/31\nc9lKNjsDq41BjeNRKde6/jpXN/Ko1ATMBp0INznBJVU9NRdSlBrgQueLgIGWyar9UwMURAFZ2azy\nsvVatglZ10aF2wsQylU4p0Zh6/HQpFeRRcDlPcwqQFoFBIA35tNKqursmFfzddpisQpBEOFwWnVP\nYj+oWtyUklXT0dZmqhGQ9cMRFlaGwkKqjFyl+/ejTmW1MnA4rRB4EcVi8zSHWpiJulmlU7Iqr3+y\nShBEJDUwq67OXwQAnJ5+cgenyB4lyarBNasIp8o0q9qoAcrJqnAfJKtEUazD1V98UvfXTsk1wEBI\nep56dNyLf3gqCkEEfvn8Ah4/8ln8by//S/zwcz+r67XtN5lmVYci87PxPktWLdyJg+dFjE36dU8l\nqLUEyAsiFuW0wXRQnWQVqQGayaqdCoalG5ntZtWjh16AzWLHrZXLSty3HzS3PIdN+1sAgB//xFcV\nY5ShKRwMkSrg4ICrKYpqi9exl96VeVVPNElVAerzqoB6DbAw10UNcJdklSiISg2Q3Qc1wEI5C17g\nwdrdsFnq/z6+oAlZ10KZyzKvyuBUFQBl+WcpvrdZdWrYDZ/DgrVsBX/6kfRQrksFkKSqfIP/szYI\nKlUK2Egvw8JYMRaabvmxTtmsKi7px8+xMTSOhFmIAK7rXQX07f4+KAqCwu7q9R5zInwAFsaK9eQi\nShXt/x1Jsirq0i9ZlU2VlCVAh1O91708L/GqzmyrAAKNNcBETylxIxXxST9zD7xZ5dq7BthPzKrC\nnUWUVzdhC/nhPakvxLxYqKJSrsHusMDZ8DP+jx4dweEwi818FV+/TuGFU38PLodH12vbbzLNqg7V\nr8mquzdIBVDfVBXQOCvc243EarYCjhcRdVvhsqlz0qswq1bMZNV21ZNV98f+HTYWjxx8HgBw4Wb/\npKteW/gDiBSPM6Mv4tDoqfv+7FBksKuAvXCrCFy9Ga8KUHcJkEhJVi2uQhQ6Yy8pyaptZlWpxEEk\nSQ+NUyV6qL4EeP+0sy8gfa+mTci6qspelcwqr4FLgERD/nFYGCtimbU9H4qlKqBkTq1lq6Cwu/Gs\npupwdZNXpYeWYlJFdTw0u+tCJJHTgGQVAJwYlg6wdOdWeXZ/H6wm0hCrHKx+Dyyu3g4xrRYbJsMH\nIUJUKplaql4D1O8AWYsKYIUr4ebyh6BA4fT0zvQK47DD4vNA5GrgkhnVXldPEbPqQWdW2ewMGAsN\nrsqjWm2esIzJa4D9UAMkFcDQC4+DovW9byQVwEDYdV+ryMrQ+BcvTsNppfHduTReuT2YK5n9pMF/\nItBZ/cisEngB87ekk6cDR/U3q9SKaC+kSAVQvUlhh2JWmcmq7dqtBgg0VAGv98cq4PWl97Fa+QC0\naMUPPvszO/58cLlV5ES5O7NqNVPGarYCj53ZdeZei2SV1euGLeSHUKp0zKlQklXbaoCF/carUpYA\n719mVZJVSTNZpab6YQmQSErPzACQWC976Tl5FRAAjkUl9oXWUpJVXjNZpYcWZLj69FBruDoAsDJg\nvaQjYB0ATsqLgHpzq1oljNWCqxPpVQXkeAGpYg00VX9u0EMJ2awKD6lnVl1f/gAcX8XM8DF42UDT\njxn0KmDIEwVNMUjlY6jWel9oHlRRFNVyEbDGc0jlY6AoGkGP/s+b26VUAF8wglclVwDl549Gjfns\n+NmnpQbCf7i4gqWUySjtRaZZ1aFC8g9xP9UA15bSKBU5BEKsYkDoqfIKYVb1tgS4kFS3AggAjhEJ\nNl9Zj0Hk+2/B0UgFQiwoCkjLsfFGPTT7NFwOL5Zid/ZctNJagsDjv7z6bwAAo9XnMT0xteNjiFl1\nJzZoZpV8opzr7uaIpKoeGfPsOnOvJKtUZFYB9XRVp1XA3WqABOi5b5YAt8HViUiyyqwBqieBqyF3\nXarceU/tbQbooYkwgazf2fNjT49IVUAAeFqHCiDQkKzymskqPbQoJ3m2w6mbyTEaBWVhUNlKgC/p\n9+B8fMgFCsCtWBHVmn5rpa0SxnXMhDoPxnotAiaKHEQAQad11/dmTV53UzteVbMKIJFSBdwczEVA\nhrYg7JWeYeLZB/twmxwYlppUAZO5LYiigIA7smdCVGvx5QqSb38IwCCzKnE/r2q7PnkoiE8eDKBS\nE/Dfr5rtnl5kmlUdKuzqvxrg3Zv1CmCvgPNupNxM9LjUMi8nDaZVgqsDUjzZHg1B5PmBXirRQhYr\nA1+AhSiISCfuN3ksjBVPHH4JAHDBYND6+Y/+J5bid2AT/Djh/wzoJjd+Yz47WCuNeJFDso+M5L3k\nISfKme4eSN5dIRXA5g+4Is8r8+dkYUotsdPdQdZ3A6wTXpXLsz+SVWmSrNpWA/QryarBMlb7Wflb\ncxAqVbAz47D6+oMN0QlknaEp/PBDQ5gNOvHSoeCeH6+GzGSVvlKSVdG9zVSKYeoIg2X9qoAeuwXT\nAQc4QdQ1pdwqWVVaUwczQaTXImBMfkbQewkwoUEN8EoLXhVR3awa3PvsiI8sAurHiutHEWZos2QV\nYXpFvL2FE9RQ6p0rEEoVeE4egj2iz/vmfa/fsAS4m37m6Ql85dER/PwzE3pd1r6UaVZ1KBLnje+y\nWmKE7hnIqwKA0qp0CtHrzcS8HJNUswYINCwCmlXAHdqNWwUA5459GoBUBTQKmlms5PDf3vgtAMB4\n6dMYGm7+hkRTFA6G5HTVAFUBXS1YHXupxPG4sp4HBeCR8eYP6OX1GMQqB3s0BItrZ1S5F7Gz0psv\nWRtsV7slq0gNcD8sAQK7J6tcbjsYC41SkUNVx9Wt/SxSAewHXhXRRPgAALSdTP3CySh++wtHdasM\nmckq/cQLNcW0nIq2BwEmhwvFRX0fnOvcKv2qgJ5WyapVchiqjlk1Hp6FlbFhI7WEQjmnytdsppj8\noN9soVcriYKIRExds2ors4a15CJYu3sHK7RR9qj0vl7ZGsxkFQBEfBIqYSv9YHOrlBpgk2RVTIar\nE8aXkTKyAgi0rgESsTYGP/zQMKyMabf0IvNvr0ORG8lksQahD1YvkrE8UvEiHE4rxib9ur9+41KL\nswemQInjsZ6tgKGACb+6D6uKWbVqmlXbpZhV8Z3cqmMTZxFwR7CVWcXd9Wt6XxoA4JsXfw/ZYgpD\nzsMIcKdachgODyBk3UNWkLqoAV5ey4PjRRyOsAjssvqjBa+KiJ2RvmanZpXL7oGVsaHMFVGu1v9b\nFfKEWbVPzKpdAOsUTcHnNxcB1VT2Sv8sARJNREgN8G5fLmSR3zlmskp7rSUWwPFVRH1jYO3tJf+M\ngqyfGibcKv0g6y2ZVXKyyqlSDdDCWJUq5vymdukqJVml4xJgJl1CjVN3CZBUAE9OPQ6Gtuz6cfsq\nWZV9wM0quQZI7skaRSqS/bAESODqRphVoiAilagD1k1pK9Os6lB2Cw2PnUFNEJEpG38qfveGZBTN\nHo2ANsC5rcZT0lJL0AeG7f6EdjldgQhg3O9Q3YEmcfqymazaoVaQdZpm8PTRTwEA3rr+N7peFwBs\npJbx1+/9MQDgmPULoEAhPLT7jf4hAlkfIG5VL2uA7+6xAgjUK3qsikuARGRdsFOziqIoBNwSS65x\nEbCYk2uA+wawLv27+V2hHX/mM6uAqqofk1UhzxBYuxu5UlqB7feT8hnpd47HTFZpLlIBbIdXRUQg\n68UlnZNV8oHQx5sF3Q5k22NWqZOsAurcqvmNm6p9ze1SlgB1TFZpwatqpwII7A+zKmomqwDU78Ga\n1QDjcrLKaLOqvB5D/uYcGNaJwOOndX/9bKYMvibA5bHDZt/dxDWljkyzqgspi4B9wK1SKoAGrAAC\njUstPfKqlCVA9W+cHeOkBmgC7rYrGJFuapqZVQBw7vhnAAAXb70KXtDXnP3D878OXqjh+ZOfA5+Q\nboRaJqvC9RpgPyYZmonAxAu5CgS+faCtKIq4tCJNRLc2q6QHHVaTZFXdrOr077vZIiA5xds3NcBC\n8xogYELW1ZRQqSpwdd/p/oCrA5Ip22kVUC/VagJKRQ4UTcGp48P0g6oFGa4+3YFZ5ZyUfmfrnayK\num2Iuq3IV3ks6rRgxbpsoGkKpSKHGnf/EI5aTNRGEW6VlpB1I5hVcZV5VTWew7XFdwG0YVYpNcBB\nNqukNCPhMj2oYl2tmFWkBmgss4qkqoLnzoK26Q96b6cCaEo9mWZVF1Ig6waDnIv5KtaWUmAYCjOH\nw4ZcQ2mVLAH2yKuS4eozKi4BEpnJqt0VitaZVc0Mh5mhoxgJTCFTSODjpfd0u66PFi/hvbvfhcPK\n4u898pMoFaqw2Rl4fLubmaNeG1w2BslSzfCfzXbFWGiwLhtEsTkfYDctpsvYynPwOyxKoqyZSOqJ\nVPbUlNXvhTXoA18qd7wA5CeQ9XwTs2qf1ADTCrOqVbLKNKt6Ve7mHESuBvbAJCye/orjN1YB+0mF\nnMyr8tibDlaYUleLSrKqfTOVJKv0NquAerrq2oY+3CqKppRDisZKvMjzqGxI7xGO4Yhqr0eSVXOb\nGppVeQOSVSqbVXfWPkKpWsBYaGbPJM2grwECdQ6TWQPcnVnVL8kqIyuAQN2sagVXN6WeTLOqC9Uh\n68Y+EM/djkEUgYnZkGExRLUi2vNJ6eZ5WmW4OlA30oixZqouJ2uDk7WiWuGb8iIoisLTDaB1PcQL\nNfzB3/1bAMDnn/oK+LxkUIWHPC3XLimKwqGw9P1zJz44JoBbNuByTf7+d9MluQL42IQXdIu/EwLn\nZafUrwECDYuAHVYBA82SVXINkN0HNUBRFJGVzSo/2yxZJX2fplNmDbBXZa/KvKo+qgASKYuA8f4y\nq8jv+v2SYuxniaKIRZKsGuogWTUlMwEXV3VPCp9SIOvGcqsqmwmIPA9bJAjart77wlhoBjaLHVvp\nVeRLGdW+bqNIsipqgFnVKoHeia7IvKrT061TVQDgGJKTVZuJgUm2b5ffHYaVsSFbTN3H03zQVAes\n339PKohCA7PKuGSVyPNIvC4l/sIvGmVWSd8f/pBpVukh06zqQv1SAzR6BRBQbwlwQa7DTAe1qAFK\nJwBl06xqqj2rgLJZden2d1DltK8F/N2Vb2I5fg8R3yi+99EfRXxTWuxp5waMVAEHCbJev0lv/++2\nHV6VKIoozstm1Yw2ZpVrlphVnXFVtierBF5AqVgFqPqN0iCrUMmhxnNw2lywWXf+TvMF5Rqgmazq\nWYRX1Y9m1URYWn7rt2QVMQRMXpX2Sua3kCtl4HJ4EfK0/4BnDXjBuFnw+SK4VFbDK9ypE0PSA5he\nySqgObeqtKYOZmK7GNqC6SHp98WcBpD1ak1AplwDQwF+pz4HyaIgIrEl3cOplawivKqHZvc2qxg3\nC9ppB18qg88Pzv1Xo2iKVhJDZPXuQZSSrMrdn6xK5+PghRq8bAB2q/rBgnaVuXILXCoL59SoZve2\neymZIMkqswaoh0yzqguRKVojq0Y1jsfCHelB78BR9eLRnao+K9z9zUS6xCFVqsFppTGkQarC6veA\nYZ2o5QrgMtpNFQ+q6pD15jemo6FpzA4dQ6lawIdzb2l6LflyFn/y5n8EAPzoCz8Pm8WO+Gb7p4WH\nBxGyTuoPmfbMqkKVx7WNPGgKODu2O3C+Gk+BLxRh8XlgC+xuavUikqwqzC939HkkWZXKSwMRxUIV\nEAGWtRkyFKG2CFDb1yRVBdSTVZlUaWBPoftFZAnQ20e8KqKJiMSsWonfgyC2z6TTWsQQcJlLgJpr\nYZPwqo60TAZvF0VRYMki4KK+kPWpgANuG4NYgcNWE26NFmp2aFNeUQcz0UxKFVADbhVJVYVdNjA6\n1WylJUAeLo86S4CZQhLzmzdhtdhxbPzsnh9PURTsUakKWB7oKqBkVm2l9f2Z6ycRjmGpWIUg1O9P\niIEX8Y4acl1E8fNvA5AqgJ38TlVT6bi5BKinBv+pwAApNUADk1VLc0lwVR7RUS+8fuMc7rLCrOo+\nErqQIhVAR8tKU7eiKEpJfpnpqp1qtQhIdO74ywCAt268oum1/NmF/4RcKYNj42fxxOGXAKDBrNp7\n8vtQpJ6sGhQTQDlRzrVXA/xgNQdeBI4PueBpUf/VEq5O1AhZ70QkWUVqgAX5gWi/1JJawdUBwOG0\nwuG0osbxTSGmptoTX64gd3MOoCh4T7VfsdJLbocXQXcU1Vqlrx5+6smq/fHz1s8ivKpO4OpEzinp\nobCoM7eKpijd01X1ZFX9fbCOmVC/PUAg63MaLALWlwD1Az+rXQG8uiAZAscnzjZNBzeTvaEKOKgi\ni4APMmSdYWg4nFaIIlBuCGXEZbh6uE/g6kZVAPmagEyqCIqqp+RNaSvTrOpCIQWwbtxDRn0F0LhU\nFaDOzQSBq2vBqyIikPWSCVnfIcWsiu9uVj119FOgQOHDe2+gWNEmnbaWWMArH3wdFCj8+EtfBUVR\nEEVRqQGG2rgJG3bb4LEzyJRryulmv4tA49utAV5a3nsFEACKCzJcXVOzakJ6rW6ZVXINsCAbdfuB\nVwUAmaKcrGoCVydqTFeZ6k75G/cgcjW4Dk7B4u7PE846ZP2OwVdSVz1ZZdYAtdYCgasPdZ78cyqQ\ndf0fnE/qzK3yNKkBlpUaoAbJqiEtk1WyWaXj+xk51AtF9OdVEZFkVTU2uGZVxG8uAgKNkPW6edwP\ncHUuk0Pmg+ugLAxC5x4x5BrSySJEEfAGnLBYTBtFD5l/y10oTJhVxZohry+KIu7dlEyigwbyqoQq\nJ83U0jTsw92vETYmq7SSY1yGrK+YyartCu3BrAKAoCeKYxNnwfFVXLp9XpPr+Nr5Xwcv8Hjx9Pdj\nRuZJ5DJlVCs8nC5bWytxEmR9sKqAygpSG4B1QRTrvKpxX8uP1ZpX1fi1i/MrHSXZFGaVkqzaX8Bn\nJVm1Sw0QaFwEHIzv035UnVfVfxVAoomwVAVc7iNulZms0k8KXL2LZBU7KUPWjTCrdE9W7Xwf1DJZ\nNRqcgt3qRDy7jmwxperXjuXlGiCrf7KqnUO9vSSIAq4uSGbVQ7NPt/159UXAATar5Irb1oNuVhHI\nekPyu14DNM6sSrzxHkSeh//RU4at/6YSZgVQb5lmVRfyOy1gKCBTrqHK68+h2FzLIp+twO21Izqq\nDYumHZXXY4AowjEcBm3pHiJJklUzQe2TVWUzWbVD3oATDEPJxtDuBmy9Cqj+KuCV+Qv4cO5NOG0u\nfPHZn1b+eSe8KiLCrbozIJB1T5P6w266lyghWaohzFoxs8cYQXFRTlZNaZessgW8sAa84IslVGPJ\ntj/Pw/rB0AwK5SyqtYpyQ9SOITkIyhRJDbBVskqGrJvJqq6VvSoZAd4+hKsT1RcB7xl8JXWR9Irb\nTFZpqmIlj830CiyMFaPB6Y4/38hk1aEICytDYSFVRq7FfYFaamZWkQXnXgd8mommGeVQbG5DXci6\nEckqxaxSAa6+uHkL2WIKIc9QR9+3+6IGaCarAACsfC/WaFbVlwCNM6uMrgACQEpuoQTNJUDdZJpV\nXYimKASVdJX+VaPGFUCj4HJAnf/Uy42EIIpKskpTs0q+RrJeaKoumqaUE4JWVcAnDr8Ehrbg2uK7\nSn1LDdV4Dn/wnV8DAHzhqZ+Av+EBv5MlQKJBWwR0+9pfA7wkp6oem/Du+bOvR7IKaICsz7UPWacp\nGj5W+u+cLiSUGqDLs09qgHsA1gGzBqiG6smqYwZfye6q1wD7I1kliqLCx3ObySpNRaqfE+EDsDCd\np2zqgHX9H5xtDI0jMgPyug5VwMY1QJLS1TJZBTRyq9StAhIEgV7MqvuXAHt/gL4sVwDPzDzd0TMG\nqQFWtgYXsG4yqyQ1rQHKzCoCoddboigifl42q14w3qwKmEuAusk0q7oUgawnDeDiELPKyAog0MgT\n6P46NvNVlGsCgt/4c6UAACAASURBVE4LfA7tJn4dJFllAtabqh3Iutvpw0Oz5yCKAt6+9apqr/3q\n5W9gNTGPIf84Xn7kh+77s07g6kSHBwyy7nBawVhoVMo1VKutT7BJBfCJyb0TlXoA1oEeIOsN3Ko6\ns2p/PDynZbPK726RrJLN+bRZA+xKfKmC/M05gKbhOXHI6MvZVWOhGVAUjY3UMqq19kYUtFS1UgNX\n5WG1MbC1GGgw1bvIEuBUtLuaqnNCTlatbkLkedWuq12dHNKPW2WzW2CzW1CrCSiXOAiVqpTWpWml\nXqa2tFoEjOucrGpcAnSyvb/m1fnOK4DA/qgBepx+2K0OFCo5FMoP7nr49hqgKIqIZSUDz6hkVeHu\nIsqrm7CF/IYOqiQVs8pMVukl06zqUmH5xCSuc7KqWq1hayMHmqYwMbP7qb0eKqmxBJiUeVUapqqA\nhmSVWQNsqmAb3CoAOHfs0wDUqwLmSxn8yVu/AwD40ou/AKvl/hutbmqAEZcVPocFuQqPjQFYWqMo\nCm6Z1VRoUQXMlGu4sVWAhabw8Ghr847L5sEl06CddiWar5UUs2qhQ8h6wyKgwqzaJ2ZVnVnVyqwy\na4C9KHf9DkSeh/vQFCwu4xZx95LNYsdIYAKCyGMtsWD05Sg1K7fHbmgy+0HQQg9LgADAsA7YoyGI\nXE3CLuisk8PGcavKG9K/r2Mk0hNmopXqySq1a4D6JqvUrAAWKzncXrsCmmJwcuqxjj7XsQ9qgBRF\nISKnq7Yy/bPgqrdIsoosNedKaVS4Mli7Gy5H+4fHaopUAEPPPw6KNs6+SMUJs8pMVukl06zqUiH5\n9CKuc7IqvpEHROlNyWJldH3t7SqvqrcEOKMhXB0A7CMRgKZR2UxAqA7GSpyeCinJqtY3pWcPPAe7\n1Yk7ax9hM92ZOdFMf/rW76BQzuLE5GN49OAL9/2ZIIhdzTFTFFXnVg0IZJ1UIHItqoDvr2QhAjg1\n7IZzj599JVU1Nab5A6mLmFVz3SWrUvl4nVm1X2qAyhrg7gcKXr8ToKQRAd4A9uGgK3OF8Kr6twJI\npFQB48ZXAU1elX4icPVuk1UA4JySqoBFA6qAx6MuUJDGSqo17X9HNVYB1bi/3EvDgQk4bS4k81uq\noQ1KHI9chYeVoeDXsC3QKOU+SQWz6triu+AFHofGToG1d2ZK7IcaIFAHiD/IVUBycFiUU4J9was6\nf0m6BgMrgNVKDYVcBYyFhsfXv4dk+02mWdWlQi7pTUhvZtXWmlQDiu6RrNBDZZn/RJb2utG8nCrQ\nOllFWyxwjEQAUUR5fUvT1xpEtVMDBACHzYnHDr0AALhw45WeXnMlPodvf/inoCgaX37pqztMlXSy\nCL4mwONzwO7o7ITyUFj6fhoUyHozuOx2EV7V4xNtVADlSp7WvKrG1+g0WeVvTFbl9s8aoCiKbSWr\nLBYaHq8DoiAil9mbV2bqfmWvSGkIXx/D1YkmwzJkvQ+4VUqyyuRVaaoazylQ/anowa6/jpGQdbfd\ngpmgA5wg6sKAvC9ZpQJmYi/RFF2HrG+qk65qTFXplVysJ6t6ryVdnX8bAHBm+qmOP9ca9IGyMODS\nOfBl4yvP3SrqN7lVCrNKTr3HDV4C5MsVJC9+AAAIv/C4IdcA1JcA/UEWNG0mk/WSaVZ1qbCcrNLd\nrFqXzaoR41YAiUoK/LJ7s4rUAGcC2jvUDqUKaHKrtot0r1PxAoQ9Uh7njsmrgNe/1TUTShRFfO38\nr0EQebx05u9jMrKTORPf6ByuTtTIrRoE1W/Sm5sWvCDivZUOzKrFerJKa7EzEwCAwvxKR98PATlZ\nlcxuoVKugaYpODo0JftRpWoeHF+F3eqEw9b695oCWU+aVcBOReDq3jPdp1b0Uj9B1s1klT5aSy6g\nxnOI+sc6Tqg0ip2UfocbYVYBwAn5/fcjHaqAje+DatxftiO1q4AxOSUccemXEia4hFAHbM9mEkUR\nl+cvAJDg6p2KoumGdFX768D9pqhPSjNuPchmFWFWycmqmAxXDxsEV09dugqhVIHnxCHle8yQ6yBL\ngCavSleZZlWXChFmlc41wK116QG+H8yqssKs6u5mosoLWM6UQQGY1LgGCABOAlk3uVU7ZLNb4PE5\nwPMiMunWD86npp+Ax+nDSmKu64evD+fexJX5i2DtbnzxmX/S9GO6gasT1RcBSwMBWa/XH5qfRt6K\nFZGt8Bjx2DDu2zsRoWeyyhrwwuLzgM8XUY2n2v48kqxKZCU2Ceu2gdoHJ1VpkqpqUQEk8iqLgINh\nqhqpOx9v4jf/n1exdC8BvlhG/vYCKIaB93j/wtWJJkiySk7aGKmcmazSRXVeVW9mKklWFQ0yqwi3\n6mNdFwErDWvT2g4Jqb0IOMhLgOvJRcSz6/A4/ZgZ7i6xuh+qgBHZrDKTVXXAOklWhb3dM4p7kbIC\n+KJxFUDAXAI0SqZZ1aXIGmCiqB/AWeAFJW0SGTG2BljLFVDL5kE7bLAGfV19jZV0BYIIjHrtcFi0\n/1ZUklXmImBTtVsFtDBWPHHkkwCAt278TcevU+M5fO07vw4A+IGnfxJeNtD047qBqxOFWCuCTgsK\nVR5r2f6HrHsaWB3NdGk5A0BKVbVTLdBrCRCQGGHkdTpZBCTJqlROuqndDxVAoD24OpGfQNbNZNWe\nevv8PVTKNVy/vIbsx3cAQYD7yAwYtv8TQkP+MdgsdiRzm8iXs4ZeS0Exq/r/722QtSgvAfZuVkkP\nzqWl9Z6vqRuRZNXHmwUIGh/8NL4PluVklVPzZFV9EVCNg61YQd9kVTaj3hIgSVWdnn4SNNXdPfl+\nWASMmMkq2OwWMBYaXJUHV+UNrwESuLqRvCqgEa5uJqv0lGlWdakwMasKnG7JjWS8gFpNgC/ghMNp\nbF2mpJx6DXfdyye8qpmgPjfNSrJq1UxWNVO7ZhUAnDv2GQASt0oQOwOvfvvDP8F6ahEjgSl8+uwP\n7vpx8c3ua4AUReFQeHCqgK49mFWEV/VYGxVAoM6PYqe1T1YBgGtWqgJ2YlYRwHqmJN3UsvtlCVCG\nq/vbSFb5zGRVW4qt57Ap8xrXltLIyLwq7+n+rwACAE0zGA8fAAAsx4xNV+WUGuD++HnrV5Fk1VSX\nS4BErAxYLxkAWAeAqNuGIbcNhSqPxZS2bL37mVXaA9YBYMg/Dpfdg3QhgVS+98XFWF5KVoV1SlYp\nFcCICryqBZlXNdM5r4rIvg8WAaO+OrNqEJL5WoiiqIYqYMXQGmB5PYb8jXtgWCcCj5/W/fUblVSS\nVaZZpadMs6pLsTYGrJVGhReRr/K6vGZfVQCVU6/ubyQW5DTBtA68KqBeVyyZNcCmCkYkU6gds+rI\n+BmEPEOIZzdwe/VK26+RLabwjbf+XwDAl178BViY5jd0tZoggQwpINjlwg0xqwYBst4qWZUocrib\nKMHOUDjTRqKSL1VQWY+BsjCaVyiIiClWmF9u+3N8bBAUKOQraYjg4XLvkyXADpJVxKxKm8mqlrr2\nQd0ETcYKSH0wOHB1ogliVhm8CEjGDEyzSjuJoohFUgMc6s1QdYxEQFktqGxJ9VcjdGJIejDTmlvV\nuIqrANa7xEy0K4qilCrgzZXLPX89JVml0/uZUgHs4lCvUdVaBdeX3gMgJau61X6oAbocHrB2Nypc\nCblS2ujLMUyNVcCYkqwa1f06SKoqeO4saJtxQQ1RFM0aoEEyzaoeFGT15Vb15RJgDzcS8/Ip3bRO\nySqHkqwya4DNFFKSVXvfkNIUjadl0Honq4B/8uZvo1DJ4fT0kzh74NldPy4VK0AURASCLKxWpu2v\n3ygCWR8Es0pJVuUqEIX7T/IIWP2hUQ/sbdRlCVzdOTkK2qLPdLayCNhBssrCWOFh/QBEcFRhH9UA\npRPldphVPlIDTJlm1W7iawKufyilSpzySW/qA4kv4z1zzLDr6lSTEeMXAQVBRF5Z3jRrgFopkdtE\nvpyBx+lD0N3bgQHFMEoqvLRsTBXw5LBkhFxZ19ascrltoCiglM6DS2VB2aywhfyaviYAHB1/CADw\nH/7q/8Z/e+O3UOG6/32sN7MqsSUdYoe6PNQjurnyIaq1CqajR5TUczfaDzVAoJ6u2sqsGnwlxokk\nq1KZNArlLGwW+67YDi3VLxXAUoFDpVyDzW5R/m5M6SPTrOpBJOar1yJgPyarellqmZfTBHosAQIN\nyarVzQc22ttKndQAAeCZ45JZdfHm36LG7/0zsBS7g1ev/BloisGPf+KrLeuj9Qpg98ZsY7JKa9ZG\nr7JaGTicVgi8iOI2Dl6nFcCSjkuAROxs52YVUIesc3QOrn1TA2wfsO722MFYaJQKVVQrNa0vbSA1\ndzuGUpFDKOrG8YdHQXNVVBdXQFkYeI4fMPry2payCGhgsqpUqEIURDhZKyw6cCIfVC0qFcAjXWMS\nGmU0ZP3Rcel9+N3lLMq1zmr/nYhmaLBuO6x56T3PMRIBRWv/ffrZx34Mnzj9efBCDd+8+Lv4Z7/3\nRbx/9/WuvlZcZ2YVSVaFezSrrsyRFcDuK4DA/qgBAiZkHagnq9bj0j1l2Ns99qVbiTyPxOvvSq9v\nNFw9UU9V6f338KDLvFvpQQq3SgezShTFhmSV8WZVaUVeAhzvzqzKV2qIFTjYGAqjOtURLB4XLD4P\nhFIFXOLBjfbuJpfHDpudQanIKXO1rTQZOYSx0AxypTQ+WrzU8mNFUcQffOfXIIoCvufhf4Dx8GzL\nj69PMXd/AxZirfj/2Xvz+Djy+sz/XX3f3bot2ZIlj+3x3PcEGIYBshCWnAwghoQlZDizm2NDzv3l\nZEl2Nz8CyZLNATuZkHAERCAENvdyzEACzH3Y4/F4bMuSLMtSS+r77qr9o+pb3bZ19FXdVe16Xq95\nMchSV8nT1fWt5/s8789wwE2uLHMuuTULykwStZxsHbeqIis8vtScWZXt4iRAoeB0zaxqxggWkPWy\nlNYXRlZXIiuYVbvvTksOiWhMcKvsdNVWOvq4ulC+/ra9TEzG8K2vgKIQOnIAp886BufUcC1Z1avN\nEp1XFbVTVUZqflWFq7fLqxLSIes94lbtCXu5eiRAoSLrwz6MUijixZ1Vj9HOZmgz8nn8vOd1v84H\nfuxBpkYOsZZc5kNf/Dk+/Dc/r7N6GlG2VCVXlvG6HIS9rSXCm5E6CbD9tRLA0xqv6sZ2zao+qAGC\nDVmHGkd0NaH+HQz3AK6efPoE5c0U/qmJrq5pt5LgVQ3avKquyzar2tBQF2uA6WSBQr6MP+A2BWtC\n5wm0yKwSoM6pmA9nF8fV63F6m1t1mSRJaopbJUkSd2lVwH997h93/N7HX3yIo2cfIeiL8Ka73rPr\na7cDV6/XoRHrQNbreR1Cz13IkCvLTMV8jDdYk8t3cRKgkHsohisSopLONmUEX5Ss6rcaYGD3ZBVA\nZNA2q7ZTNl3k9Ik1JIfEtTdPMDEVw7+uLpwjN1qHVwUQDQ4R9kfJFTNsZFZ7cg76JMA+udbMqvkO\nTQIUCmhmVW6xdw/O9xxQ6z8PnzZ2oy8U8eHOqhs0/i4xF4Wu3nsT//3HP8XbX/3z+NwBHj35DX7h\nwTfxt9/9REPp8dWMSFW5u5K8SCULlEtVAiFPW5MA46kVluKn8LkDXL33prbOqV+SVaMiWZW4gs0q\nLR24ntbg6j0wq+orgL1OMyXsSYA9k21WtaEhcSF3IVklKoAj442NrjdahXPtwS8Fr2pmsDsVQCFf\nXRXQ1uUabIJbBfCya74PgEdPfn1bzkO5UuKTX/99AN5013sI+3dnUIhkVTs1QLAWZD20xUTA7y6o\ni/Y7G0xVAWS7PAkQtMkxOmS9+YmAZamPzCq9Brg7YB3qJgJumP892m0999Qyiqxw4OoRgmEv4aiP\ncFI1epwz0z09t2YlSRKTWrpqoUfcqtokQDtZZaR0uHqnk1ULvWFWAbxiRr1vf3chSb5s3FAhNVml\n1QC7lKyql9Ph4vW3/ygfedcXeOmR11IsF/irh/6QX/nEj/LcwuM7/uxa1yuA2jqpzQqgmAJ43f47\nth1606g8wwMgSZTim8gV61bb9Rpg6go2q7S0+0ZWfV4a6cEkQN2setWdXT/2pdqw4eo9k21WtSG9\nBtiFZJWZ4OqKLFM4r474bXUxcUafBNjdRbPfhqzvqKEmuVV7BiY5OH49xXKeJ059c8vv+ccnPsuF\nxBJ7h2Z4zc1v2vU1S8UKyc08TqfU9k3h8LBqBFgpWVU/EfCRJiuA0JtkFUBgRj1eM9yqgT5jVimK\n0nSyKiYg6/ZEwIukKArHnqhVAIWCG+oDe26o+wvndtVryLowws2Qzu5XZQtpVpPncDs9jA/u78hr\nBvb3tgYIMBrycO1okGJV0TdRjFC4LlnVanK/ExoMj/KzP/Tf+S9v/l/siU2ytH6a//rZ9/BHf/cb\netX7Ugm4+mioW3B1rQLYLq/qTGd4VQAOtwvPYBQUhVJ8s+3X65VEsmrVTlaRKqjPe91OVpVTGZKP\nH0NyORl6+e1dPfZWqjGr7GRVt2WbVW1oSAOsx3O7833a1ep5zawyAVy9tJ5ALpZwD0RwBVtLRp3R\nKi/dTlbpkHW7BrilmqkBCol01VZVwGR2gy/+2wMA/IdXvb+hXTuxABscCeF0tvcRJZJVL8bzVGVz\nQ9YvTVZdSJc4u1nA73Zw/VhjN0e5XCG/uAKSpEN5u6XggUmgObMq5FWrJRVnBk8XGB9Gq1DKUaoU\n8bi8+DyNGa16smrT/IZqN3XhXIr4hQz+gJsDh0cAqKSzSGuryA4HcUfv74XNSoes98ysspNVRmth\n7SQAk8NXtZ1SERLJqtzCck+Hw9xzQE1XPXTaOBMi2ANm1U66aeal/P/3f4433/Ve3E4P3zz2d7z/\ngXv55yfnkOWLE2Zrme4mqzrB9qzKFZ6dV9MrnTCroD+qgPXJKlkxbqiAmSU2ENNllT/W7WTV+jcf\nQ6lWid1+Pa5wbw0iRVZqNcAh26zqtmyzqg0NdRGwbqpJgKIC2OJCQlEU5je0GmCXJgEK+exk1Y4S\nNcD1BmuAAC898hokycGTp/+VTOHiHdfPffOPyZey3HLgLm4+8LKGXq9WAWxvtxBgwO9mNOSmUJFZ\nShZ2/4EeKnxJsupRLVV160QYd4OmXeHcCkq1im9itOvw6VoNcLHhn/E5ogBUXRlT1JvbVX0FsNHf\np2ZW2cmqegmw+rW3TODUJtelnn0BFIXiwBjL5xs31M0iUQNcip/qyfHtZJXx6jRcHcA9EMEZClDN\n5ChvGAs430l3z8SQUBO/uZIxVcD6ZFWrA3w6LY/Lyxvveg8fun+Om2ZeRq6Y4cF/+V1+7VPv4NT5\n5/TvE8mqkaB1klUvnj9Grphhz8AUY7HOoAO8YwKybl2zyucJEPbHqFTLJDLW/T3akagB5mV1XdPt\nZFU9r6rXSqcKVCoywbAXr8/V69O54mSbVW1oMOBGAhL5iqGpjUK+TGozj8vlYNAEXdl8m7yq9VyZ\nTKlK2OtkMNDdi14sfvKLdrJqK8UGA0gOieRmnkqDXIqB0AjXT91BVa7wyImv6l+fv3CCrz/zJZwO\nJ2971c81fA6dgqsLHR62BmQ9eEmySkxdunMq2vBr6JMAu1wBhNr0wWaSVW5ZrTWXpLQh59RtNVsB\nBIhqNcDERr6nqQkzqVKucvxptX5x/a21B6jkM88DUBgZZ2MtSyFv/EZRJzU5fBUA59bPUJW7z3PJ\npO1kldESvKr9Y52Bq4PGBNyvfqbnF3pXSxoOerhuT5ByVeE7C8aYZsGwB3em9zXArbRnYJJfedNH\nef+PfIjB8BinV57j1z75dh78l/9BtpCuMau6MNlWUWqTANtZKz19Wq0A3tyhVBXUTwS0tskzGlWv\nubXkuR6fSW/kD3iQKVOS0jgdTgZDI107tqIoxL8ueFUv6dpxt9Om4FUN9f4Z/EqUbVa1IZdDYsDv\nQlZgw8BFs6gADu8J42izFtUJiUmA/hYXEmfqUlXdTlMIg61wzjartpLT5SA26AcFNtcbN3fuulab\nCnj8nwD1RvMXX/swCgqvvWWWvUMzDb9Wp+DqQjXIurmTK/XJqlJF5sll9e/hzn3m51XBxWZVo6aL\nq6ousktKqi+Mmmbh6gA+vxuvz0WlXCWXNb5SbgW9eHyVYqHC2ESEkfHa50DqadWs8hxSTZ/zi8ZO\nJuu0/N4gI9EJytUSK5uNJxA7pUzSTlYZLTEJcKZDkwCFRK0710PIOsA9M2p1+yGDpgL6pArOSgnZ\n5cEV7T2j9VJJksSdh1/NR9751/zgnW/H4XDwz09+nvc/cC/nV74BisJwF5JVqYQ2CTDY3iTAp+e/\nDcCNnTSr+qAGCHVVwOSVya1yuhxIAc2kCY7icHQP1ZA9tUBhaQXPUIzIDZ1LqbaqDXsSYE/Ve+fD\n4hrsAmR9Ta8AmuPGXVhqdxKg4FV1f3fXOzqE5HZRWk9QzZm7FtYrtcKtuvPwq3A7PTy38Bgb6TUe\neeFrHF98nLA/yhvvek9Tx+8Eh6Fewqx6Yc3cyapA0IPkkMjnyjx1LkWxInPVkF9n4zWiXkwCFPIM\nD+AMBaikMg1XVUo5cMo+ZKqk89YyHrZSooVkFdTSVTZkXdVRDax+3W0Xm65JzayK3XINAMsL1nvP\niHRVtyHrlXKVQr6MwykRaOPh1tb2qlTLLK2fBmBq5FBHXzugTwTsbcrj5VoV8LGlFFkDqoDKumr4\nl4IRSkXjpg62K58nwI+98mf5Hz/+Ga7edzPJ3Abl+J8STn+IcqHxdHGr0iuAbayTUrlNTp9/DpfT\nzbWTnQNY68mqC/GOvWYvJMyq1SvUrALAp77PYoHuphxFBXDonjuRHL23KjbtSYA9Ve/fARbXsA5Z\nN86suqBPAuw9rwqgsKyODm/VrJrXHsj2d5lXBSA5HHq0PL9sc6u20qA+EbBxblXAG+bmA3ehoPDw\nsa/w6W/8TwDe/PL3EfI1/r7NZUtk00XcHifRWGfeH6IGeGo9Z2rIuuSQCIXVxMOjL6oL9mZSVdDb\nZJUkSQRFumq+scV6NlPCragmfCJr7YUtqAMFAKLBJs0qG7KuK50scPZkHKdT4pqbaoyMcipD7vQi\nksfN3pdcB1gvWQW9g6xn0mqqKhj2Ijmsz4czo86tz1OpltkTm8Tv7ewOfA2y3ttk1VDAzY3jIcqy\nwrfPdr4KWNTWl5Vg5KLJuGbV5MhBfuutD/Dj/+7XkaUQ7soL/Nanf4zPPPRRCiXjNh86was6evYR\nFBSO7LsFn6dz6/F+YFZB3UTAK9isqnrV58+ot3sVQID418zDq4J6s8pOVvVCtlnVpoa1HcruJKvM\nYVYJZpW/5WSVVgPsQbIKwG9D1ndUzaxqDmAsqoCf/9afspo8x+TwVXzvTfc29RrrF2oLsE49UEV8\nLvaEPRSrCgsJcy9+RT3nmPYQcOdkc9d87oxmVs10P1mlHre5iYDZdFHnVm1m+sCsymnJqiZqgADR\nQRuyLvTck+dQFLjqmtGL6i2pZ9R6VeTag+y9Sl04n19MopjYgN5KUxpkfTHeZbNKwNXDdgXQKJ0V\ncPWxztdWRA0wf7b3D86vmDFuKmBeM6vKwYj+njW7JEni8P7Xkoz+Nu7Iq5FlmS9/9y/4hQffxGMn\nv2FIxV3nVbVhVj11RuVVdWoKoFC/1ABHY1d2DRCg7FLXokH3cNeOWS0U2fj2EwAMv/LOrh13Jwks\nij0JsDeyzao2NWhwsqpSkVlfzSBJMLLHJDXAZTENsPlYaFWuGQbTPUhWAfj2qmZVfsnmVm2loRbN\nqlsPvBy/J0hVG+f89lf/PE5HcwD9TsPVhawCWRfg43SqQNjr5Mho4zdGRZbJLfQuWQUQmFGPmz3d\nmFmVyxT7LFmlLs5jzZpVA3YNEFTWnZgCeP1tFxuuiSeOARC58QjhqI9w1EexUGlqcqkZNNWrZFXK\nhqsbrXkNrj7dYV4VYArAutDLp2M4JHj8XJp0sbODAsT6smyRZJXQaqaM4ggxOf1e/uvb/pzp0auJ\np1b4vb/5eT70xZ9jNdHZ+mb8QnvJKkVReOaMyqvqvFnVJzXAiG1WFSXVkA5Iza1p2tHmI88g54uE\nrzukV0p7qWpFVjcSJYjZgPWeyDar2tSwYFYZZFatX0gjywoDw0Hcnu7B7baTXCqruyUOB949zcdC\nz6WKlKsKYyEPwR79PnqyaslOVm0lEXNdX8s2lVrwuH3ccfhVANx28B5umG4+vttpuLrQYYtwq0Tq\nwVupctveMM4m0mXFlThyoYRneABXqDe7P4KV1VQNUE9WrRl2Xt1SQtQAA80tsGIiWbVh7ven0Vpe\nSLC5niMY9jJ9sPZ3qFSrnPvMVwAYuucOAMYn1SmZ5xeNmUpmlMYH9+N0OFlNnDO0JnSp9GSVDVc3\nTHqyatSAZNWklqxaWkGp9pblNBBwc9N4iIoBVcDCOS1ZFYpayqzSJwEGPRyauIHfeftf8o7v/UX8\nniBPnPomv/Dgm/mbbz9IudL+EI36SYCtMqsW1k6SyK4zEBphUkt7dkreUS1ZtbZh6cEpw1H1moun\nVnoyvdUMysnqmsarxLp2TH0KoElSVcnNHIqsEI35cbls26QXsv/W25RgVq0bNMVp1WQVwMJKHBQF\n79gQDndzqRmo8aqmB3q3u+vfp9YX7WTV1vIHPASCHirlKukmF4v33f1T/PBLfoJ3f9+vtnTsmlnV\n2WRVbSKguc2AUFS9LnxVmTu1h/FGleshr0ooeKCFGqBIVvVVDbBVZtWVnawSqarrbpm4aPLt6j9/\ni9z8OfxTE4y97m4AJqbUxbPVIOsup5uJwWkUFM5pMO5uyE5WGStFUfRJgEYkq5x+L96xYZRKVeeG\n9lKvOKBOBfxGh6uAFyerrFEDBFjTUCAjIbW67HS4eN1t9/GRd32Bu655HaVKkc9984/45U/cx7Nn\nH2nrWOlkbRJgINjasISn61JVnZ7K7fR7cUVCKKUy5c1UR1+7m/K4vAyERpCVKhtp62+mtaJMWV2X\nuSvNrUfb3r+qswAAIABJREFUkYCrD7/KLLwqexJgr2WbVW1qSEtWxQ1iVq3qcHWTVADPqQZPu7yq\n6cHeVAChBoa3mVXbq1Vu1WB4hLe+4qearkGButg3qgZ4cFh9v53ayFMxMePGq5nf3orM7fuau+Zz\nPZwEKCRYWbkzi7t+r6Ioag1QJKv6ogao7kLGmjSrIjE/SJBKFpCrshGnZnqVShVOPKvCo6+79WLD\ndf5jnwVg/7vfjORUE7lWNaugN5B1YVaFbbPKEMVTK2SLacL+GAMhY2DEglvVa8g61KqAT55Lkyp0\nLnUi1mWWM6sy6ob16CXTewdCI/z0D/4Ov/aWP2FicD/LG2f5nc/9JB/9yv/Xcpq4E3D1pw3iVQn1\nTRVQh6z3dgpnL1SVK2RK6gacVOzsmnw7FVbWyBw/hdPvY+COG7tyzN20YU8C7Llss6pNDRlcA1w9\nr5lVZklWiUmAEy2aVVqyaqanySqbWbWbxCKoWbOqHWVSRYqFCj6/m2CHIcBhr4uJiJdyVeGsidMr\n50uqkTbggJjfvct3XywzJKs8I4M4gwHKiTSlXXZUi4UK1apCwKWaDlZPVhVKeYrlPG6nB7+nuYWd\ny+0kFPaiyAqppHWqL53UyWMXKBWrjE9GL3oISz75HJvfeRpXJMS+t/6A/vXRiShOp8T6aoZC3rgB\nJ0aoF9wquwZorEQFcHr06o4nVYTMBFmP+lzcMhGmqsC/dqgKqCgKhfOqgVMORptOdvdSerJqm6TT\n9fvv5Hff8Vnecvd/wu3y8m/H/4n3P/BG/vHxzzZdMdN5VS1u6hVKOZ5fegpJcnDDfmPSK4I11C8T\nAa9EbtVmZg1ZkXHLYYq57mzyxr+hpg4H77oVh7e11GCnZU8C7L1ss6pNhb1OPE6JXFkmX+4sR0CR\nFdPVAMUkQF+Lyap5zSiY6WWySjPaCudXe85+MKtaTVa1o/pUlRGL/cNausrM3KoXUurubFBuPl0j\nqne9mgQI6lQkAVnfLV2VTasPz1G/uqi1erKqvgLYyvtXQNZTJjZTjdR2YPUzWqpq8m0/fBGLzeVy\nMDqh3hdXlqzFrRKMmKX4qa4d0zarjJWAqxvBqxIKTGmQ9UVzPDiLKmCnpgKW4pvIxRLOSAjZ7bEm\nsyq0/SaT2+XhDS+9nw/f/3luvepu8qUsn/jqh/jVv3w7J5efbfhY7Sarji08RlWucHD8OkJ+Y+pd\n/TIRcOQKNqvWkmqC0yPHyGWMQd1cKr0C+EpzVAChrgZow9V7JtusalOSJBlWBUxs5CiXqoQiXgIh\nczjMBd2san4SYL5c5XyqhFOCfdHeLZidfi+e4QGUcoXi2kbPzsPMEmZVNydtGQVXFzL7REBFUXhc\nG49LsdI0mDR3tvfJKvX4ogq4M7dKmFUDYXVRm8jELQ1jTbYIVxeKagZ+4gqErCc2ciye3sDldnDk\nxj361/NLK1z4yteRXE6m3vmmy37OqlVAvQYY706ySlEUMmmbWWWkaskq48yqWg3QHA/Od+2P4pTg\nqeU0iQ6kG0Vy369tKGYzJWQT1/aFZEXR1//DDTCkRmN7+cV7f59feMOHGY7sYX71BL/xqZ/ggX/6\nb2TyuxvvwqwabtGsEryqG6eNqQBCXbKqb2qA5rjmuqm1VM2symaMr+Qq1SrrDz8KmIdXBbC5bier\nei3brOqAhoLGVAHNlqqCmlnVCrNqIVFAASZjPtzO3r71RDLMrgJurd4kq4yBqwvVIOvmTK6cTRRY\nyVepOiSqFZliExwQRVFqyaoeMqugcci6WPxEQlG8bh+lSpF8qXvmaKfVKlxd6EqGrD/3pPogcOi6\nMby+WjLh7AOfR6lW2fND37vlPWd80ppm1UhkHJ87QDK7TirXWUD1VioWKlTKMh6vE4+3+cEotnaX\nnqwa6zxcXSiwX0tWmaAGCBDxubh1bwS5Q1VAAVf37x3FH/SgyCrX0OxK5CtUZIWw14mvwWlhkiRx\n+6FX8nv3/zU//D3vwOFw8H+f/gI/98C9fOPZL2+7cXPRJMCWzSqVV3XzgZe19PONSGdW9UkN8Epk\nVsW1ZJVPGaBcqlIuGdtEST1zgvJGEv/UBAFtHdlrlYoVMqkiTqekskVt9US2WdUBDRuUrNLh6uPm\ngKtDe8yqMxvqzm4vK4BCgltVWLIh61spElVHtGbTRYqF7vBgjIKrCx3UzKrTG3lKJoRYP7KoXu8O\njVWVboJdVN5IUklncYWDuAe7N7VlKwmzLLtLDVDEykMRL7Ggmq7atDC3qpasatGsGlTfn8krLFml\nyApHn9AqgHVg9Uo6y9KnvwzA9Hvv2/JnRbLq/GICxQIJDCFJkpgcuQqAxS5wq/RJgGE7VWWEsoU0\na8ll3C4vE4P7DTuOzqwyAWBd6J4D6jXYiSpg4Zy2vtw7ptdVrQBZ1yuALUzm83n8vPWen+Z33/FZ\nrp28jXQ+wZ/+wwf4rb9615afDelkgVKxij/oaalxsbK5yIXEEkFfhKv2XNv0zzeq/qsBmuea65bi\nWrIq7FEHRuQMmnqvH6+uAmgU969ZJbS2Q2woiMNhjnO6EmWbVR2QUZB1Ha4+YZ5kVb6NZNUZLTEw\n3UO4upBvn52s2kmSQ2Kgi+kqRa7bLTTIrAp6nOyLeqnICvOb5mNhPLKgXu+RqHp9iJpcI9InAc7s\n6/lNvsas2nknUvx+wZCXWKhWBbSqklmRrGqtBhi7QpNVi2c2SG3mCcd8TB2o/d0tfeYrVNJZBl56\nC9Gbjmz5s+Goj1DES7FQ0Sf2WEWCW9WNKqDNqzJWC2snAZgcOoDTYVxyzTc+guR2UVxdp5ozxz3s\nZfujuBwSz5zPsNnmGljfDN07ptdVM03cB3ulGly9uaEo9do3fIBfv+9j/Kfv/yDRwCAnlp7ilz/x\no3zq639AoVTbwKilqlqrJIkK4A37vweHw9ny+e6mGmDduvd0gKHwGJLkYDO9SrnSHW6TWSRqgFFf\nt8wqFa4+/Ko7DT1OM7InAZpDtlnVAQ1puyn9XgOsZLJUkmkcPg/uoVjTPz+/IcwqEySr9mrJqnN2\nsmo7DQ53z6xKbuaplGVCES/+gHF8Np1bZTLIerZU5eiFDA4J9mjn2MwkJH0S4P7e8qoAPb4tDLTt\nJGqAwbCXAZGssjBkPZnTklWt1gD1ZNWVZVaJVNV1t+xF0nYu5UqF+f89B8DM+7ZOVYGaULJqFVBM\nBOxqssrmVRkiMdVxykBeFYDkdNamGS+aI+kR8rq4bW8YWYFvzrd3Dea1GqBvYpSwSFZZYDrqWkbA\n1dtbu0iSxN3XvZ6PvOuLvPaWWRRF5v88+kne/2dv4rsnvnpRBXB4tLXGRTcqgFDPrLJ2ssrldDMU\nHkNBYT19ZT0vxJPqZn4sqG7uG1nJLacyJB47iuRyMvTy2w07TrPS4eo2r6qnss2qDsiIGmA2XSSb\nLuLxunSWSa+lR7QnxlpKb9RqgL1fMOsLPjtZta26ya0yugIodHhEcKvMZVY9fi6FrMC1Y0EGtF58\nJtlEssoEkwCFvKNDOP0+yhtJyonUtt+XTasL/EDI0xfJqoSWrIq1mKwKhb04nRK5bIlSsblR5lZV\nsVDhhaPqZ3B9BXD17x+msLRC4MAkI6+5a8fXsDxkvStmlZ2sMlIiWSUMSCNlNsg6wD3aVMCHT7d3\nDdZjJoJhUQO0gFnVgWRVvYK+MPe/5pf57f/wlxzYcy0b6Qv8/t/+Er/7hZ/l9NJpoLVkVblS4tjC\nYwDcOP2SjpzrdtKZVRY3q6Aesn7lcKsURSGeVu/NIxH1ecnIiYDr33wMpVoldvv1uMLmMYYEXH3Q\nNqt6Ktus6oCGdcB65y5kvQI4HtZ3m3ut+l2vZrWZL5MoVAi4HYyZYLKhAKzbyartNTSiGkfdMatE\nBdBYPlsNsm4us+pRjVf1PZPRuvpDC8mqHk8CBHV3WJhmO0HWc/2WrBI1wBanAUoOicgVVgV84egK\nlbLMvukBYtpYaEVROPOnfwXA9HveguTYeZliWbNqWGVWLcVPIyvGMvTSdrLKUHXTrDIbZB3gpfuj\nuJ0Sz65k2moY1Ab4jBLW6vDpPmdW7aSrxq/lt9/2Ce5/za8Q8IZ46vS/8qWFX2XZ+zUiw80f68S5\npyiW80yNHGQw3Pw6vhm5IiEcPg/VXJ5KxloV7UulQ9YT5rnmjFYyu065UiTkixINqxxUI2uA9bwq\nM2lT1ACH7BpgL2WbVR2QEcwqs1UAob1JgIIRND3g7zlTB+qSVbZZta1Esmp9zfgJbd1KVh0c8iMB\nZzbylCrmgKzLiqKbVXdORloCy+rMqh5PAhQSZlV2hypgVtul6x9mVXs1QIDogLogSl0hZtXRx9X3\nx/W31UzWxGNHST5xDPdAhIk3//tdX2NsIoLDKbG+lunaMIhOKBIYIBYcolDO6VOXjFLWTlYZJlmR\nazXAkUOGH88/qSWrFs3z4Bz0OLl9XwQF+OaZ1kxjpVqluKJ+/vvGR3VjNdvEpk2vtJZRP3dGQ51J\nVtXL4XDy2lvezEfe9UXuvvb1yJRZ9n+Vj37tJ3lm/jtNvdbTZ9Tvv3H6pR0/z0slSRLe0f6ArAuz\nai1lnmvOaAle1Uh0XAf5G1UDVBSF+NfNZ1YpiqJv1ts1wN7KNqs6IN2sypaRtxk326zEJMCRCRNN\nAjzX+iRAnVdlggoggHswisPvpZJMU0lbe9fHKA0MB0GCxEaOqsHT80SyatjgZJXf7WQq5qOqqFMB\nzaBT63k28hWGg26mB3z6jnIz9QczJaugZlblTm9tVsl1I8kDQY8+DTBh5WSVzqxqLVkFENUmpSau\ngImAG/Es584mcHucHL5+j/71eS1VNfn2H8EV3L0C73I71U0dBc4vJg07XyPUrSqgnawyTquJcxTL\neQaCw0QCA4Yfz4zJKoB7ZtSE48MtTgUsrm6gVKt4hgdweD26sZpuog7fKxmVrKpXLDjE2+/+Va5O\nvwu/MsqF5CL/be4/8Qd/+ytspFcbeg3Bq7rJYF6VkF4FXLW2WaVPBLyCklViEuBwZJxAUJhVxiSr\nsqcWKCyt4B6MEbnxakOO0YryuTLFQgWP19nS5E1bnZNtVnVAHpeDiNdJVYFkvjOsEVEDHDNRskqk\nkMQkvWYkeFVmgKuDuutjc6t2ltvjJBLzI1eVhmtJySef4zs/+F7Sx081fJxqRdZ3L1qdcNOMDmnc\nqhdMUgV8pC5VJUlSHaujsUV6JZOlFN/E4fPg3TNs2Hk2o91qgPlsCUUBf8CN0+VgQEtWbVo0WVUq\nF8iXsricboLe1g1Xkay6EmqAxx5XDdarb9iDx6tOUMvNL3Hh7x9CcruYuv9NDb+WdauAGmQ93vjn\nZSsSkzftZFXnpVcAR41PVUGNWZVfMAdgXeglU1E8TomjF7LEW6gLFXTMhLq+DIWb37Tphaqyorcq\nhjrErNpO8QtpwtUZXjPwa/zoPT+D1+3jOyf+hfc/8Eb+7tFPU5W3f/7YSK+xsHYSr9vHkb03G3qe\nQv0CWR+JqgbxlcSsEnD14UhdssqgGqBeAbznjl1r/92UXgEcDpqiEXQlyzzvCotLpKviHagClooV\nNtdzOJwSQ6PG1qKaUaENZtUZ7eFrZsA8O7uCW2WbVdurWcj62T/7PIlHn2XxU3/b8DE217PIskJ0\n0I/HY9zYb6HDJuNW1VcAQWU4IamRa7mBRJueqpraa5obfXBm54mAYocuEFIfnq2erEpoqapIYLCt\nRU30CmFWybLCsSfV9209WP3sA58HRWH8Da/FN9a48aqbVYvWMqu6MRFQrsq6WSWMcFudUzcrgAD+\nKTXlkVtYRulQkr8TCnic+j3s4RaqgHpyf6+6vvQH3TidEsVChXKp2rkT7bA28mVkBWI+Fx6nsfdf\nMQlwZCzGD33Pj/N79/81dxx6JYVyjk9+/SP8l794GyfOPb3lzz4z/20Arp28HberOykRr/YZbv1k\nlWoQi2rclaCLa4DqfcOoZNW6CSuAUM+rsiuAvZY5nmz6QEPBznGr1lbSoMDwaAinyzz/iWrMqj27\nfOfFkhWFs5tiEqA5klVQY2/ZkPXtNaSbVY1xqzYffRaA5FPHGz5GtyqAQmYyq5KFCsdXs7gcErdo\nlV+n00Ew5EVRalynnVSbBGiOCiDUMau2qQFmBVxd27EL+2M4HS5yxQylsrl30reSgKvHAq3zqgBi\n2udjss9rgGdfjJNJFYkNBtg7rVanyokUS5/5PwDMvO++pl5vfFI1q1YWkyiyeR7gd5NIVi3EjTOr\nclqKMRD04DT4YfpKVA2u3h2zyj0QwRUOUs3kKG+Yq/b6ipnWpwJeOsBHkiSCLQwb6bYEr2rEAF7V\npVpfVR+eh7VN7JHoOD//hg/zi/f+PiPRCRbWTvKbn76fj//jB0nnL/5v8IzGq7ppxnhelVBtIqA1\nN6GEBkMjOB0uktl1iuX+3kgSqtUA99RqgAYkq+RiiY1/exKAoVfe2fHXb0eb6+o6bGDYhqv3WvbK\npUMaDqgXczzbvlkl4OojJqoAKopSGyu8t7lk1YV0iUJFZjDgIuIzPjnTqOwa4O4S41rFImknFdc2\ndI5G+thJ5HJjldiaWdWdFOGBIT8OSYX+F3oMWX9sKYUC3LAnhN/t1L8eamJst0hW+U3CqwLw7hnG\n4fdS3khQTqYv+/NLkx6SJBHTWE9WnAjYCbg6QHSwVgM0U2qi0zqqVQCvu3WvnkRb/NSXqebyDL3i\nDsLXNjdVLRLzEQx7KeTLbMStwyDcNzyDhMT5jXkqVWPg8GKaWihqnlRzP2lhtbtmlSRJeroqv2Au\nhs73TEXwOiWeW82y2mQKQ98MrWOihsWwERNzq7rBqxISg2gubVzcdvAV/N79c7zhpe/E6XDxtWe+\nxPsfuJevPfMlZEVGlqs6jP2mme7wqqB/aoAOh5ORiJauMngYhlkkzKqRemZVttTxzaD4Q49QzRcI\nX3eoqTR1NySSVYM2XL3nss2qDqmTySoBVx8zEVy9FN9ELpZwx8K4gs25zLUKoHlSVQA+LSFmJ6u2\n1+CIuihqJFmVeOxZ/d/lQonMidMNHaNbkwCFfC4H+2M+ZAVOr/d2l+yRSyqAQs1MBBRVu6BJJgGC\n+kAlJhMKM61eIlkVqKslWXkiYDKnLsbbgasD+PxuvD4X5VKVfAc2PsyoQr7Mi8dXQYLrblUfuuVy\nhbN/9nkApt/bXKoK1PebFauAXrefsdg+qnKV5Y15Q46RFXB1uwLYcRVKeS4klnA6nOwdmu7acQP7\ntSqgySDrfreT75lSx9w3C1rfajM0aAFu1VqmO2aVoij6puHQFmslr9vPW+7+j3zoJz7HdVN3kM4n\n+fg/fpDf/PQ7+cazXyZTSDIa3cuegUlDz/Oic+qTGiDUQdaT5rrmjJCiKLopNxwdx+ly4PO7UWSF\nfL5z6xK5UuGF3/kTACbufW3HXrdT2oyLZJVtVvVatlnVIdVPBGxXAq5upmSVvpBoYRJgDa5urp1d\nPVllm1Xbqp5ZtVvSI/Ho0Yv+f6NVwG7XAAEOmwCyXpUVHlvazqxSr5W0RZNVAEEdsr542Z+JemMw\nVHuAHtC4VZZOVrVZA4T6dFV/VgGPP32eakVm/1VDRGLqBsbKl79K8fwaocMzDL/6JS29rjCrzlsN\nsm7wREA9WWXD1TuupfVTKCjsHZrB5TS+Bibkn9Qg64vme3B+xQH1OnyoSW6V2DSsX2OGo9qmTdrE\nyapcd2qAmVSRUrGCP+DWky5baWJoml97y5/w0z/wO8SCQ5xcfoaP/9NvA2oFsJug6H6pAULNrFq9\nAsyqbDFNvpTF5w4Q8qnmsxETAZc++bdkTpzBPzXB1DsbH6jSDSmywua6AKzbNcBeyzarOqThoACs\nt3chV6uy/vA+Om6eZJW+kNjbvFk1v6Elq0zEq4La71Kwa4DbKhDy4PW5KBYqu96kEo+rZtXQK+4A\nGjOryqUqiY0cDofU1ajtoeHem1Un1nKki1UmIh72RS9+kKwlqxo3q4Q5ZBbtNBEwl76YWQVWT1aJ\nGmB7ySqog6xv9Ccb49gTGlj9NtVcVRSF+Y99FoD9731Lyw9TgltlpWQVGA9ZF58hwgC31TmJCqBg\nj3VLNci6+SpJd05G8bkcnFjLsdKEyVTbEK0lq8R71tzJKs2sMjhZJeDqQ6OhXT8jJUnirmtfx0fe\n9QVed9t9SJL6qHfrVXcbeo6XSq8B9kGyajR25SSr4nWpKvFeq00E7IxxXE6kOPmhBwC4+jd/CqfP\nXJsp6VSBSlnWnoG6txFha2vZZlWH1Klk1cZalmpFJjroN9UFcin8shmd0eDq02YzqyZGQZIorMQb\n5itdaZIkqaGJgHKprJtT+7UdktTTz+/6+utrGVDUmG03hwnokPW13plVjyyqcNw79kUvW3zWFuk7\nLwyqhSKF5VUkp1OvtZpFO0HWt5pOZuVklZhiGOugWZXow2RV/EKalaUkXp+Lg9eqmwUb//YkqWdO\n4BmKMfHG72v5tcf2RnA4JOIXMhQL1vk8NzpZlbGTVYZJh6uPdodXJSRqgHmT1QBBrdm/ZEqbCtgg\naF0ulSmubYDDgXdPjVsjqqtpCzCrRoPGrtfFJnYzE8ID3jDv+N5f5Hff8Rne/yMf4uYDdxl1elvK\nMxRDcjkpb6aQi8ZMkuuWRiJXTrKqxquqrSn9HU5WvfjhBylvJBl82a2Mvf6ejrxmJyUqgDavyhyy\nzaoOaTjQGWaVqACOmqgCCFBY0uCX+5pLVpWqMkvJAg4J9sfMtbPrcLvUhZEsUzi/1uvTMa0a4Val\njr6AXCwRPDTN4MtvA4eD9PFTVAs7LzK7DVcXOjDoxynBYrJAvtybsdjb8aqgcWZVfuE8KAr+yT04\n3OYZXgDUMau2MKu2qAFaOlllRA2wD5NVAqx+5MZx3NpAAZGqmvqJN7a1u+p2OxmdiIACK0vWSVdN\nDl8FwGL8lCGvbyerjNNZzWDsFlxdyKyAdaF7DqhTAR860xi3qnB+DRQF79gQDlftPmaJZJUArIe6\nlKxqYa00NXKIOw+/uqsVQADJ4cAzot4TrZ6uGo2pSeC15OUMzn7Tmj4JcFz/mp6s6oBZlTk5z8Kf\nfwEcDo588Ge7/r5sRAKuHhuyK4BmkG1WdUhRvwunBKlilVIbE8bEJEDTmVUtMqsWEwVkBSYiXrxd\nTM40Kr+oAp6zq4DbSU9W7TBlK/GYWgEcuOMGXMEAoUP7USpV0sdO7vja3YarC3lcDqYH/cgKnOoB\nZH09V+bF9Txep8SN45f/7o0u0s3KqwIIHlBBrlvWAHXAel0NUEtWJSyYrKpNA+xgDXCzv8yqalXm\nuSfVh2tRAcyeWmDtn7+Fw+th8sff0PYxJkQV0ELcqj0Dk7idHuKp8+SKuw+yaFZ2ssoYKYqiJ6v2\nd9usEsyqpRWUam82W3bSHfsi+N0OTsbzLDcwJKSwTXI/ZHJmVbkqs5mr4JBq7QqjJMyq4SaSVWZQ\nv1QBa4B181VvO636GqCQ2FjMZds3q57/zT9EqVTZ92M/SOS67n52Nqoar8pOVplB5nMPLCqHJDHY\ngXSVmAQ4aqJJgAB5zcxplllVg6ubqwIo5BOQdZtbta2GNLNqfYcaYOJRdRJg7PbrAYjefA0Ayad2\nrgL2Aq4udLiH3CoBVr95IrylidtossqMkwCFvHuGcfg8lOKbVNK19061IpPPlZEk8AdqZtVAaASA\nTSsmq/RpgB1IVunMqv6qAZ55IU4uW2JwJMiefSq0df5jnwNg4s2vwzvS/t/duDaJbFmr2FpBToeL\nvUMzgDHpKjtZZYw2MqtkCylCvqj+2dUtOf1evGPDKJWqvpFoJnlcDl6qXYsPNTAVUPwO/kuq7CFt\nGmA2Vdh1wEsvtJ4rowCDfjdOh3HpEHUSYPM1QDNInwh4wdpmVTQwiMflJVNIGrKpYCatpdTnoZH6\nZJVeA2zPOF776reJf+3buMJBDv3Su9t6LSO1YdcATSXbrOqgBGS9VbNKURTW+ixZNa+lA8w2CVCo\nlqyyJwJup0aYVZuPCbPqBqDerNoZsr7eoxog1EHWe8Ct+u6CalbdsUUFEMDnd+NyOSgVK5SK2/N3\nzJyskhwOAvu1BE1dukrszAVCXhx1C/yBkDWTVaVKkVwxg9PhJOhr/3NbmFWpZAG52npK12w69rgA\nq+9DkiRK6wnOff7vAZh+91s6coz6iYBmfLjdTpM6ZL2zZlW5VKVYqOB0SvgNTn5caRJw9amRgz2p\nsfin1AdJM0LWoVYFfLiBqYDbJavcHiden4tqVSHfgUnbndaadk7DBvOqMqkixYI2CdDgumGn1S8T\nASVJqktXmbN+2ynFtd9vyxpgG8kquVzh+d/6KABXvf8nOrJBZZQScXsSoJlkm1Ud1JCWEoi3eFNN\nJQoU8mX8AbepIvtyuUJxJQ6ShG+8uR1Ekawy2yRAIb9IVtlm1baKDgZwOCVSiTzl0uWVg/y5CxTP\nr+GOhQkenAIgctPuZlUhXyadLOByOXROTzd1eKQ3yaqKrPDEuZ3NKkmSGqoCioqd2SYBCgW2qAJm\nM5dPAgR151KSHKRym1Sq5nsw2U4pbRJgJDCIQ2r/lupyOwlFvCiyQtrErJZmlMuUOPX8KpJD4tqb\n1QXw4ie/hJwvMvzqlxK6eqYjx4nE/ATDXgr5ss6csIKmtGlyi/HOQtYzafX9E4z4TMkFsbJ6BVcX\nMjNkHeC2fWECbgen1vMsJXf+HCuc0zZD914+wEe/D6bN91m4lukyr6qBSYBmU7/UAAFGrxCzSjCr\nRqJbJataN6sWPvEFsifPEjgwyf53vrm9kzRQ1apMYjMPEsR68Gxi63LZZlUHJTrr8RaTVWsCrj4R\nMdUNqbhSB79sEuIsklUzg+ZMVokJagW7BritnE6H+oGt1Hrc9RIVwOit1yM51I+UyHUHkdwusi+e\npZLZ+qGxfgHmMDBCv52mB3y4HBLnkkWyW5hwRunYSoZcWWYq5mM8vL0p3UgVMHdWS1btN1+yCuog\n62f0l+mnAAAgAElEQVQW9a+JSYCBS353h8NJNKDuxic1A8gK6iRcXSg60F+Q9eNPLyPLCjOHhglF\nfMjFEgsPfgGAmZ98a8eOI0mSJblVRk0E1HlVO3zO2GpNCz2Cqwv5JzWzatGcD84ep4OXTavX4kO7\nTAXM75DcD0cbq8T3QiJZNWJwssqqFUDonxog1LhV/TwRsFDKk84ncDndFzE4xXqtVbOqtJ7gxd97\nEIAjv/XTODzmTfomN/MoskIk5selDYKx1VvZZlUHJaLAGy2aVWaFq4vUUbO8qkyxwlq2jNcp7fhQ\n3kv5JwWzyk5W7aQhfSLgFmaVVgEcuON6/WsOr4fwNQdBUUg988KWrxlfUd/vrUy36YQ8Tgczgz4U\n4NR699JVO00BrNduZpVcqejToAJmNatmhFlVVwPUJwFevhutQ9YtxK1KZAWvqn24ulB0sH8g64qi\n6FMABVh9+W/+heLqOuFrD6rTQzsowa06byFu1ZReA3yxo/VFm1dlnHoFVxfya8mqnEmTVQCvPKCa\nVQ/vwq0SNUD/xA7JKhOmTPVJgEFjk1WC7WlFs8rXJzVAqDer+nci4Hpa3bgfDu+5KCmuJ6uyrZnG\nL37oASrJNEP33MHIa+5q/0QNlEhlD9oVQNPINqs6KD1Z1WKn16xwdR1+2TSvSl1cTA34DIVPtiNh\nwBWWVizFOOm2BLdK7PDVa1PA1e+44aKvR28+AmxfBewlXF3ocA+4VY8sNWpWqYv07apghXOrKJUq\n3vERnH5zmsHBA5pZNV9b3IlklZguUy/BrdrMrHXh7DojkQLrBFxdqJ8g66vLKdZW0vgDbq46Moqi\nKMx/7LMATL/vrR1PEVsxWTUQGiHoDZMpJDvKbBNGt0in2OqMypUSyxvzSEjsGz7Qk3MITGnJqgXz\nmlW3TIQJeZyc2SywsLm92aQzUbfYEBWpwPQuVcJeSE9Whbo0CbBHG3vtyDPSPzXAK2Ei4NoWkwAB\nvD4XDqdEqVilXG6uiZA+foqFv/wSktPJkQ/8rKmaQ1tJmFUDQzZc3SyyzaoOSiSrWq0BrooaoMmS\nVYWWJwFqFUCTTgIEcEdCuMJBqvkC5c1Ur0/HtNoOsl7NFUgfOwkOB9Fbrr3oz3aDrMd7CFcX6vZE\nwAvpEmc3CwTcDq4b2/lGWEtWbb1IF5MAAyacBCgkzi17uq4GKJhVW6QtRbLKShMBazXATiar1Pdl\nog9qgEefUI3Ka26awOlysP7wo2SOn8I7Nsz4j/y7jh9vbF8Uh0MifiG943ACM0mSpLoq4MmOva74\n7AiG7WRVJ7W8MU9VrjI2MInX3Zv1jQ5YN3Gyyu10cNe0NhXwzNbpqmquQHkjieR24RkeuOzPxaaN\n2OQwk3RmlYHJKitPAoR6wLr1zarRqJoMXuvjZFVc41XVw9VBvUeJdFW+iUCGoig8/5sfBVlm8u0/\nQvhIb8z9ZrSpPQ8M2JMATSPbrOqgRLJqvQXAej5XIpUo4HI7THeB7AS/3ElntJ00s04CFPIJyLrN\nrdpWull1CbQ4+fRxlEqV8LVX4QpeHJnVzaqnLzerFEUhfkGtAfbUrNIh690xBR7VUlW37g3jdu78\n8VurP2y9SBdppYAJJwEK+SZGcXg9lNY2dHZZNi1qgFuYVRacCJjMqYvwWCdrgCJZtWntZFWlInP8\nKXXxe51WAZz/UzVVNXX/Gw3hVrjdTkbGwyiKtaqA06OHAZi/cKJjr6knq0w0sKUfdFbA1XtUAQTw\njY8guV2U1jao5syXOhLSpwJuw60qnNfWl+OjOvOyXqGoSBib0KzS1vqjBppV2bQ6CdDnt94kQECf\n+FaMb6JUu8cGNUICsL6aWO7bJoaAx49E9lz2Z2LNlm2CW7X2z99i/eFHccfCHPzFd3XmJA3Whj0J\n0HSyzaoOSiSr1nPlpj/I1jRe1ciecE9g0ztJMKv8ey//8NpJ81oqYNqkkwCF/KIKeM42q7aTMKs2\n17Iocu29rfOqbr/hsp8JHp7G4feSP7tMaePih8ZcpkQ+V8bjdRGO9s7M3D/gx+2UWE4VyXQhhfGI\n9vB8x2R01+/djdUhOFABk04CBJAcDp2nJcy1nJas2mrhXasBWsesSmQEs8qIGqC1k1Wnjq9SyJcZ\nGQ8zNhEh/fxp4l//Dk6/j8m3v8Gw405MqVXA84vWqQJOj6m16TMGmFVB26zqqBZWBa/qYM/OQXI6\na9OMF81bS7p5IkzY6+RsoqCn7eulM1G34FVBrQZoNmZVqSKTLFRwShDzNzd4qBnV86rMXp/aSg6P\nG/dgDGSZYnxndpnZFfRF8HuCFMo5MgXrbIQ0IzEJ8NIaIIA/JCYCNmYcy8USz//WHwJw1S+8E8/g\n7uteM0ivAZosOHIlyzarOii/20nA7aBUVUgXm9tBMGsFEOp4AtssJraSoig6s2rG7GaVWPCdsyHr\n28nrcxMMe6lUZFLJ2oIz8dhRAGK3X3/ZzzhcLiLXq2mBS9NV9RXAXi7AXA6JA9r78+S6scZAqSLz\n5LL6e9+5b/frfDfAupgEaFa4ulBgRjOrTqvmms6s2qEGaK1klWBWdS5ZFYr4cDolctkSpZI1qmxb\nSVQAr79VfQ+c/fjnANj7ltfjGTDuXmdFbtWMZlbNX3i+Y68pHvDDNmC9oxJVzanR3iWrwBqQdZdD\n4uXaVMCHz1x+PRb0AT7bmFXiPmgyZpVIVQ0HPYYyWa3MqxISVcCSxblVkiTVIOsJ815z7SieUjft\nRyITl/1ZDbLeWLLq7J/9NbkzSwQPTTP14/d27iQNVKlUIZMq4nBKRGLmfna9kmSbVR2WXgVskltV\nmwRoLrg6tMasiufKZEpVIl4ngwbuOnVCOmR90U5W7aRLuVWKorD5qGZW3XF5sgpqVcDU0xc/gIkK\n4Mie3r/fBbfqpMGQ9WdWMhQrMlcN+RlqYNS12FHOposXpdmErJCsAgjMTAKQ1RhbIkK+lVk1EBoB\nrDUNMKlNA4wFOpescjhqC6WURScCZlIF5l9Yw+GUuObmCYprGyx/4Z9Aktj/nrcYeuzxumSVVeoa\ne4dmcDndrCQWyRUvH2TRrBRFIZO2k1VGaMEENUCwBmQd4B5tKuBDpzcvux5rm6Fbry8DIS+SQyKf\nK1OpyMaeaBOqTQLsDlzdirwqof7iVmmQ9ZS5r7lWFd8GsA61NHyugRpgcW2DU7//5wAc+cDP4HCb\n+zlQKKFNBo8NBkzXcrqSZZtVHVZ9FbAZ1SYBmitZVcnmKCfSOLyeLeGX20mHqw/6TR9d9k/ayapG\ndKlZlTuzRHkjgWdkEP/U5bswsD1kXY+2m2C3sMatMtasemRRmwLYQKoKwOV24g+4kWXlsp0sRVFq\nySoTM6ugZqblzixRLlUpFSs4nRJe3+WLFx2wfoUnqwCig9auAj731DKKAlcdGSUQ9LDw519ELpYY\n/b6XEzwwaeixowN+AiEP+VyZzXVrcL9cTjdTw2qt7OzqC22/XiFfplqR8fpceDzWeFCwglK5TRLZ\ndXzugJ6y6JX8kxpk3eRm1U3jYaI+F0vJIqcv+TwrLGuYiW2S+w6HVLdxY550lW5WGcyR6guzalS9\nr/fVRMA+TFZVqmU2M2tIkoNBbeOwXoGgeh02UgM8+bsfp5LOMvK9L2Xk1S/p+LkaJQFXH7QrgKaS\nbVZ1WENaTDLeBGS9Uq6yvpZFkmB4rPdJk3rpcPWJ0aZMp/kNa8DVAXwai6tgA9Z31NAlZpWoAA7c\nccO2743ITWq15XKzqvdwdaFuTQTUzarJxg3p7bhVxQtx5HwR92AMd6T3f4c7qWZWLeqTAAMh75bv\nGQEpT2Y3kGXzw1gr1TLZQgqH5CTk7yyPITqgvi+tCFlXFIWjj9cqgNV8kYVPfBGA6ffeZ/jxJUmq\ncassVAWscavarwLqvKotEoy2WpdIVU2OHMQh9XYJLSrgZk9WOR0Sd4sq4CWgdT1ZtUNyPxjeuRLf\nC61ltBpgwLhklTqIpn9qgMUL1tmE2k56DbAPJwKupy+goDAYGsHlvPx9HQw1VgNMHX2BpU9/Bcnl\n5OoP/Iwh52qUbF6VOWWbVR2WqAHGm0hWxS9kUGSFwZEQbo/TqFNrSWLXqxleFcCZTWvA1aEGWLeT\nVTtrcERdLK2vqYsnAVeP3XY5r0ooeGASVzhIcSVOYWUNAEWuW4CN9t6cnYr58DolVtIlUgVj+EDn\nkgWWU0XCXidHRhu/CYr6TuaSsd1WmAQoFNTNqnP6jtx2D9Bul4eQL4qsVEnlzW8yiFRVJBDr+IOr\nnqyyYA3w/GKSjbUsgZCHmcPDLP/1P1DeSBC56QgDL7m5K+cwbkFu1fTY1UBnuFU6r6qHAyz6UQtr\nLwKwv8cVQAD/lJqsyi+YF7Au9ApRBTxzcTW3fkN0O4V3mYzbC3UjWWX1SYBC/VUDVNdcAkTeT9qp\nAgiN1QAVReH4r/9PUBSm7n8ToYP7O3+iBsqeBGhO2WZVhyV2WTaaSFbV4Oq9f3C/VPqklmYnAQq4\n+oD5zSrv2BCSy6mOgC6YZzFkNl1aA9x8VDOrtuFVgToNTqSrBLcqlcxTLlUJhDymWIA5HRJXDWnc\nKoPSVSJVdfu+SFMwVn2RfglctsarMr9Z5ZsYRfK4KV6Ik15TJ+gEd/jvHtMmAlqBW5XMGlMBhFqy\nKmHBGuDRx9X357W3TCBJMK+B1affd1/XauEiWbVsoYmAOmR9tf2JgOLBPmTzqjqq+mRVr+UXk1bP\nLpuezXbDnhADfhfLqSIv1g0zyesbotsnq2rDRsxUA1TX+EYyq+orgGbHaewkXx/WAFcT/ZesEgbc\nSGQbs6oBwPqFv/sGm99+EvdglIPv/4nOn6TBspNV5lRHQAazs7NO4JeBdwD7gAvA54EPzM3NZZt8\nrUngecAHDMzNzaU6cY7dkgAnx3ONTUsAWF3WYNNmnASo7Xr5t5nUspWqssJCwjo1QMnpxDc+Sn7x\nPIXlVcN5KlZVOOLD7XGSy5TIrCbIPH8aye0icuPVO/5c9KYjbHzrcZJPHWf0++6ui7Wbx5w9NBzg\nudUsL8Rz3NYgU6oZCbPqjiZfWyzS05fsKNcmAZobrg7q9RXYP0H25FlSJxeBnatJA8FhluKn2MzG\nmWbn91avJeDq0Q7C1YVqySpr1QDL5SrPP6NWqq+/dS/xr32H7Mmz+CZG2fMDr+7aeezZG8XhkIiv\npCkVK3i85uc2TY0cRJIcLMXPUCoX8Lhbv3+KB/tQ2Pz3YCtpYdUccHUAdyyMKxykks5S3kjiGYr1\n+pS2ldMhcfdMjC8/F+fh05scGg5QTmWoZnI4/T7cO0wHrd0HTWRWZYxPVulszybS2GaUSFYV+qIG\nqBo5a6nzKIpiaRPxUq2JZNV2ZlVIMKu2fr6tFoqc+MD/AuDQL70bd8x8z7S7STCrBobsZJWZ1Klk\n1WdQzaoHgXuBDwP/Afj72dnZZo/xB4B1tkIvkV4DbCFZNTZhnod3oVYmAZ5LFilXFcZCHgImqzVu\nJ98+jVtlVwG3leSQdOjguYeeAEUhcsPVOH0779zXIOtqssqMDIbDI6oxYESyKl+u8sz5DBJw+77m\nrvFQeOsdZSslq6BuIuBp1awSi56tZKlklUFwdVAh4aAC1s2emqjXi8cuUCpW2LMvyvBYmDN/+lcA\n7H/XbFcnArk9TkbGwygKrCwlu3bcduR1+9k7NIOsVFmMn2rrtexkVedVlSssrp8GVGOx15IkSR9u\nkjtrbm4VwCtm1CE9ogpY0JP7OzNRdXZj0jzJd4H66EayykxrpVbUTzXAgDdEyBelXCnqm1X9orhI\nVm1XA6xLVm01oXr+458jv3ie0JED7HvbDxl3ogYpnytRyJdxe5w269Fkatusmp2dvRd4E3Dv3Nzc\n/5ibm/vHubm5/wW8GrgT+I9NvNZrgbuBD7V7Xr2SmAa40SCzSpYV1lZMnKzaZazwVhK8qplB6+zo\n6tyqRRuyvpNEFTD+nacBiN2xPa9KSDernj6uAUPNA1cXMhKy/tRyhrKscPVIgJi/uYVtSOPNbM+s\nMn+yCmqmWlEDAe9YA9QmAiYsMBHQyGSVz+/G63NRLlXJN7H50WsdfaIGVk8dfYGNbz2OMxhg34/9\nYNfPRedWWagKOD2qpgnbhazryaqIde7DZtfK5iLlSpHhyB6CPnNsLgb2q2aV2SHrANeNBRkMuFhJ\nl3ghnmt4fambVSaZBpgvV0kXq7idErEtptp2Sv0wCRAungZopY2X7TSqQ9bNf801I2FWbZescroc\neH0uFFmhULh4TVJYWeP0H/wFANd88D/jcJk/yXypRAVwcDjYV4m5flAnklXvAb4xNzf31fovzs3N\nHQf+CnhfIy8yOzvrBj4K/Dqw2YHz6okG/W4kYDNfobKF83ypEhs5yqUq4ahPd63NJMGs8jeRrDqj\nMVamLcCrEvJPqsmq/DnbrNpJwqzKPq1O9xu4fXtelZBv3x7cgzHKG0nyC+dNWQPcF/XhczlYzZRJ\n5DtrDDyyqKY6mpkCKLTdNEArAdYBgpqpVl5WF0M71gC1ZNWmBZJVCY1ZFTMgWSVJUi1dZZEqYCqR\n5+ypdZwuB0duGmf+Yyqrat+P/gDuaPevd51bZSHIus6tutAet8pOVnVegldlhgqgkH9Sg6wvmv/B\n2emQaumq04mGB/jUmFXmSFbV86qMeqhVFIX1VfXh2epmlTPgwxUOopTKlBPpXp9O2xqJ9edEwN2Y\nVbA9ZP2F//Yxqrk8o6+7m6G7bzfuJA3UhqgA2nB106kts0pjVb0c+LttvuXvgGtmZ2eHG3i5nwcK\nwMfbOadey+mQGPC7UGgsXbW6rFYAR0wIV1cUpbaYaIJZdUbA1S2UrBI1x8KSbVbtpMGRECgK1RfV\niUixBswqSZL0dFXiiWNsmHC30OmQODgkqoCdA1oriqLzqu6cjDb983oNsK7+UNpMUUmmcQYDeIYH\nOnOiBiugceCUC+pO+k5mlSWTVQaYVVCDrFtlIuCxJ86BAoeuHYVkgvNf+hdwONj/rtmenI8wq84v\nJCyzoy8mAradrEoLs8o692GzS0wCNJVZVQdZt4LumVGvyYfPbNYG+DSarEoVTHEd67wqAzeYs+ki\nhXwZr8/VF5WkWhXQ/Pf13TQSUc0qwXjqB8mKzHpKvR6HI9sP1AoEL+dWJZ98juW5v0dyu7j6N3/a\n2BM1UAkbrm5atZusGgcCqED0rXQCkICrdnqR2dnZfcCvAj8zNzfX+ztRmxKQ9fVGzCp9EqD5KoDl\n9QRyoYQrGsYVavziPbtpvWSVMKvyNrNqRw2OBPEm1pAKBXx7x/CNjzT0c8KsWv3uUapVhUjMh9fA\n+HwrOjTS+Srg/GaBtWyZAb+Lg8PNXw+BoAeHU6KQL1MpV4GLeVVWiSqLuqK0vqb+/x1qgFZKViVz\nwqzqfA0Q6iDrG+ZPVimKUqsA3raPhQe/gFKuMPb6e/SqUrcVHfATCHrI58ok1s3/dwi1GuDC2kkq\n1dZSntWqTDZTBGnnyq2t5mRGsyowpSWrFqzx4HzNWJDhgJvVTJkLp1WDbbfNUK/PhdvjpFKWKRYq\n3TjNHdWdSYDqg/PwmLUnAQp5+2gi4GhMmFX9k6xKZOJU5QrRwOCOgz3E2i2bUTdDFEXh+G/8TwCm\n3/0WgjPWQFNspVqyyjarzKZ2zSqxQt8uYy++vtu280eAf5ibm3u4zfMxhYYD6sW83gBnZPW8Gokd\nNWGyKq/zBBpPVeXLVc6nSrgcEpMx6+zo+gVg3U5W7aiBoQCBVRWSHb19d16VkJ6selKtD5qpAihk\nBLfq0bopgI4WFpySQ9J3VUVSIndWM6v2W6MCCODfN4bkduHKpJDKJYI7AdYtlazSAOsBo5JVogZo\n/mTV0vwmyY084aiPifEAi3/5NwDM/ORbe3ZOkiQxPmUtblXQF2Y0tpdytcTyxnxLr5HLlECBYMiL\nw9mpOTq2RA1w/6h5zCr/fgFYt8aDs0OSeMUB9ZqMn1ENtkbWmOFtKvG90FrW+GTV+qr6bGCmBHo7\n6qtkVVRde/VTsmpN429tx6sS0muA2jVw/kv/QuLRZ/EMD3DVz73D0HM0WpvrdrLKrGp3FRMGFGC7\nlbR46tu2/zI7O/tq4PuBX2jzXEwjkayKN1EDHJ0wX7JKTAJshld1drOAAkxGvbgc1tkNEjH0/PIq\niiz3+GzMK5fbSSyhvi+8Rw43/HPRm1UOS+HEi6AopoKrCwmz6uRa58yqWgWw9etbX6Qn1UV67ozG\nq7LQDpbkdOKfVB+qAoUUHu/2qbqBummAZqh87CTjk1XqezKxYX6z6ujj6vvy2lsmOD/3D5QTaWK3\nX0/stsZNbSN0JXKranB169eHzKJcMc1achm308Oegclen44uwawqnLuAUq32+Gwa0z0H1Pp6eUXd\nEPU3MMDHTNyqtYy6th/uQrKqb8yq0f6ZCFgDrFvDIG5Eglc1HN2+Agh1EwEzJaq5Ai988I8BOPRf\n3osrbF2TR5EVNkWyashmVplN7ZpVadSa33b9FvFffMu50bOzsy7gD4Hfm5ubW2jzXEyjoYBWA8yW\ndvy+bLpILlPC63PpO+hmUuFcK5MA1UXy9KD5fp+d5Ar6cQ/GUEplSnHL8v27Iv8FNVlV3X+g4Z/x\njg6pu6eFAp7kuimTVXujXgJuB/FcueFpnjspW6py9EIGhwS37m39970sWWUxuLqQe5/6UBUubnk7\n0OXzBPC5A5SrJbJF88JYK9Uy6XwSSXIQ8ccMOYZVAOulYoUXjqom9nU37eHs/1bB6tPvva+XpwXA\nxGSNW2UVTY+qZlWr3Kp00p4E2Gktrp0CYO/QDE6HeSrsTp8X79gwSqWqT9czu46MBBgNughsqmut\nRpio4r2cNlOyysCKbW0QTZ+YVWP9UwMUAPJ4agVZtoZBvJviOlx958p+QEvF57MlzvzxpyksrxK+\n/hD77vt+w8/RSGXSRSrlKoGgB1+TU7ttGa92zaoN7X+3W6mLRNV2n073AyPAJ2ZnZ8fEP3WvJ75m\nnYgOtd2W3ZhVF+rg6mbspOvwy32Nm1Xz+iRA6y2S/drvmbergNuqtJ7AEV9FdrrIRhqZm1CTqAIG\n4sumXIA5JIlDIl3VgSrg4+dSyApcNxYitEOSaDddWn/IzWs1wGnrJKsAnOPqjl0gt7NZBRCrS1eZ\nVamcan5E/DEcDqchxxBmVTpRQK6aN/F54ugK5VKVvfsHKD/xJLkzS/inJhh7/T29PjXG9kWQHBJr\nK2lKxd7zbhpR28kqAVfvAzCzWXRWTAI0UQVQqFYFtAZkXZIkXjnkxFUpUw0EGmKiimRV1gzJKoOZ\nVeokQPMNomlH3lE1fdwPNUCP20csOERVrrCRWev16XRE8aT63DMc3aUGqCWrsksrnP6jTwFwzQf/\nM5LTmDVQt7Spw9XtVJUZ1a5ZdR61Anj1Nn9+BLUmeHqbPx9H5Vmd0l5L/PP72p+fAJa177OMRLJq\ntxrgmonh6oA+CdDfBLPqjMZWmbFYsgrquVU2ZH07JR4/BkB+ZIKNzeYWjaHr1dqgP77M4Ig548KH\nOsiterQDFUCAUFRdpKe1RXreoskqRlQYvzeze3JxQONWbZqYW2V0BRDU2m0w7EWWFVMkCrbTsccF\nWH0v8x/7LAD73/1mUyxgPR4XI3vCKAqsnNvdKDWDxETA+dUTyErzJmWtBmi9TSOzSudVmQiuLmQ1\nyDrAnV41nZSKxKjKu9e9zZKsUhTFcGZVLlPqq0mAUJes6oMaIMBIVEDWrWEQ76Y1PVm18+O2GNgh\n/e3fIOeLjP3Aqxh86S2Gn5/R2rAnAZpabZlVc3NzVeBbqMyprfT9wPNzc3PbWc+fBP498LpL/vmI\n9uf3an9uKetaN6t2AaxfWNbg6ibkVYHKQIDapLxGNL+hLiRmTFhr3E36REA7WbWtEo89C0BudJKN\ntWxTPytNzwAQTqzgcvf+IXYr6WZVm9wqWVE6Z1aF1UV6NlWgks1RXF3H4fU0NfjADKoOqItV18bu\nBpQVklVGw9WFYvpEQHNyqxLrOZbmN3G5nYzLm2x+52lckRD73voDvT41XVarAsaCQwyERsiXsqwm\nmueiCK6PzazqnMw4CVDIP6VuXOQWrMPQGcup98dEJMaxC7uvJczCrMqVZfJlGa/LQdhrzDpGVACH\nRvtjEiDUMav6oAYINbOqX7hVogbYCGDdv7qI99kncHg9XP0bP9WN0zNcm7ZZZWp1onj/MeDzs7Oz\nr56bm/ua+OLs7Ow1wFuBX6r7WgQoz83N5QHm5uZOs0XqanZ2VlwtX5ubm0t14By7KlED3I17U0tW\nmY/fA+j8g0aZVZv5MolChYDbwWjIep1f3aw6Z5tV22nzUWFW7aO4lkVRlIYXU4Vh9ebuXj2PXK7g\ncJuH+yF0uK4G2MzvdqleXM+zka8wHHS3XYmtX6TntZqHf2ocyWGtKV+lqJZAiu++96BPBDSzWdWF\nZBVAdCDAubMJ004EPPqEulg/fP0YSw9+HoDJt/1wQ9WebmliKsZT312wFGR9evRqNjNrnLlwvGmg\nt21WdVayIrNoarPKeskqsb5MRwZ4+MwmN47vXHcLmWQa4GpGpKrchhlJogJoRlxCq6pNA+wPs2q0\njyYCKopSY1btAlj3B9yMf+efAJh+3316qtPqsuHq5lbbTztzc3NfBL4IfGF2dvZXZmdnXzc7O/vT\nwP8FHgP+GGB2djYAnAGeaPeYZlfI48TrlMiVZXKlreF7pWKFzfUcTqfE0Ij5bkhypUJhJQ6ShG98\npKGfEamq6QG/JXeDajVA26zaSnK5Quqp4+q/75+hVKyQTTe+y7mRUyiGB5AqZTIntmsG91YTEQ9B\nj5ONfGVX5txOqp8C2O61EIrW6g/ZM9bkVQHkPSEUyYGysUE1v/P7RkwENHUNUE9WGWxW6ckq80HW\nZVnhmGZWXb3XzYWvfB3J5WTqnW/q8ZldrPqJgGafMCnUDrfKrgF2VvHkefKlLNHgkOHmdCsKTJ6h\nPFAAACAASURBVKkbQfkF61SSBGYiHR3gm2cSu1YBzZKsMroCCPQdrwrAFQ3j8HqoZnNUsua7lzWr\nEY3t1A/JqnQ+QbFcIOANEfDuHJ5Y/z9fJRBfpuwPMfWTP9alMzRem+t2ssrM6tTW/H3Ah1GB6V8A\n3g98BnidVhUEqKDyp/pm6t//Y+/NoyTJD/rOb1x5RN5ZmXV1V1dVX3P0XJpDBxIzgCwEthEIkCWM\nOcwuksVheF7ve+sFeTGweHffW57MKcwzu5hTMjZrcYhD6GkGkEBzj+bsme6qrq4zMyvvOzMi9o+I\nX0R2Vd4VkfGLyPi+xx9Md1WFZiozI76/7/fzHSSGYbAQGs6tyh6qFcCFpQg4nr6EROswB8gy/IsL\nYH3jpaQIr2oj6cwb5KCerPKYVf1UefUtSI0mxItriF9QK2iTVAFzR1U0tHRV6cXpVq6sFsMwuJpS\nzYE3c9MnWZ6+rbJxzloBBAxIcrXc6oGrO4xXBaDWkNCOqKYB+d8xSM6oAaonxCQFZpWMRUD6klU7\nN45RKTURSwTR+fPPQ5EkLH/gvfp7KS2KJYMIigIa9Q61dcqTItyqaRYBvWSVuTIqgJdtvpL+chpg\nHTCSVdxyGoVGF189rA79+6GIH2CAerVl69gEgatb2R5wo1nFMExPFTA/4m/TLz1ZVXTOa26QSDps\nVAWwW6vjzZ/7FADg6NH3om1KOct+SZKs3hcwQNxLVlEpU37TNEPqZ7X/G/R32gDuH/P7/SaA3zTj\n2uzSgujDfrmN43oHF+KnzRuyBEhtBXAKXtWW9hDgRF4VAARIssozq/qqqFUA44/ej0Y6jL1bRRxn\na7hwaTxmT+6oAiG9ivjWKyi98BrWvvsDVl7u1LqSEvH8fhXXc3W8az02+gtOqNTs4vVMHQLL4G2r\nZ399+/w8fH4e7VYXlbduA3BmsqpebSEQTcJfzqO+vYvIPZcG/t1EWE1z0pysKtZmVwME6DSrSKrq\n3ruT2P1XnwUAbHz0w3ZeUl8xDIPVC3HceD2L/Z2iI25IN5fU9dTtzBsTVZLbrS7arS44nvUmuE0S\ngavTWAEEgMByCozAo53NQ6o3wYn0HxgSs+rKvev4kgI8dbOIh4Z8XnIcCzHkQ73aRq3aRiRmz//G\nbNXaZJWiKHcwq9wk/9ICGrcP0DrKIbTpvHuYXumA9bLzzSqjArg69O/d/MXfQusoh87qGoqXH0C9\n2kY07sznvV6VCw3IsoJoPACBUp7uvIu+SI9LRLhVxwMg69kDDa5O6RJgQ4toTwJx3i5ocHWHJqt8\nqQTYgA+dQtkVMWWzVXz2ZQBA4rH79DW/fHb4aShRq9lFudhEa1E9jSJ1Qhp19YyQ9Wd2y1AA3L8S\nRtCkDz69AnGTmFUOTFZVWmhFVWOnfnN4sirhCGaVVgO02qzSaoBFymqAzUYHb76ifk4s3HgB3UoN\niXc+hNhD99h8Zf3VWwV0glLRZYQCUZTrBeSrmbG/rloxUlVOrOPTKJqXAAGA4TgE19RURN0hVUCS\nYH/4berwyl9vj64CRijgVpFkVTpkjRHcuwTotmSkmxYBU9FlMGBwXMmgK02PjKBBulkVHcyrqu8c\nYPtXfw8A0PnAdwAMg7pWiXW6vCVA+uWZVRZJXwSs938xZ2hPVu2qNxLj1jlkRcGtgsGscqIYhkHg\nHOFWeemqkyr0JKsMs2q8GiCJtYv3XAZYFpXXbkBq2sueGKQrac2s0iDrk+orJq0A9oqwZwhgXXTY\nqaQiK6hX22hrZlVt3BogxckqUgO0eg0wHA2A5RjUq210BjAQ7dAbLx2g25VxYT2Gw9/+QwDA5se/\ny+arGqwVYlbddoZZxTDMVNyqakn9HI54vCrTRMyqNUprgICzIOuKJKF1qA5tXLlnDedjfpSaXbyo\nHeIOEg3cKsKsSlmUrOqtALrNbDZqgPR+ro8rnhOQjCxCUWTkys7m3GbHWAK8/jO/DLnVxsoH34fA\nNfVzqV6l8x5+Uulwdc+solaeWWWRiFl1XOue+jNJkpE7Uj+U05Qmq/QlwDHNqsNKG82ujAVRQDTg\n3B6zzq3yIOt3qHmYRXP3EHwkhPDVjYnNKvL7vrC2gPCVdShdCZVX37Lses+i5bAPET+HUrOrn6KO\nK0lW8MyuFWaVH4zURTeTBVhWHwNwihqNDmRZgZJS6331reFmVcgfgcD50GjX0GzTlSgimlWyimUZ\nPWpfKtDz74KsAF5s7aG5ewjx4hrS73u3zVc1WMvnYmAYlRfZbp/+XKZRG4uTc6tIsioUcVcqwy61\nOg0cFG6DZTicW9i0+3IGykmQ9VY2D6UrwbcQBx8M4ImLCQDAkzeHG8nk0KZiZ7KqqiWrLGJW5VzI\nqyJy2yKgUQWk3yAephxhVsX6m1X5Lz+Pwz/6AtigH1d/8ocghlWjtlZ1R7KqQJJVDsADzKs8s8oi\n6TXAPsmqfKYGSVIQT4rwU2rsNCZkVum8KodWAIkCHmS9r4rPqBXA2CPXwHAcYvEgOI5BpdREuzX6\nwY8wGFJLEUQfVGtCpefprAKqkHUjXTWJ3sjWUWlJWI36cM7ECH8kGoBQLQKyguD55bFHD2gROYHj\nV1WTbZRZxTCMnq4qUFgFlOQuKvUiGDCIignLf148SRdk/ThTxcHtkspS+zNtxvqjHwbD0ntL4fPz\nSC9HoMgKjjRDmXYRyPr2JGYVWQK0ienjNu3mtqAoMlaT6/Dx9BqAQc2sckIN8ORh6OObaurxb7aL\n6A6pAhrJKnvMKkVRLF8DPNbvlVxoVi26pwYIAIvErCo6exGQJMPSfZJViiTh9X/7HwAAmz/03Qie\nW4IYUl+HbqkBFrwaIPWi987S4dJrgH2SGZkDrQJoAnzZKpFZ4eCYzKoth1cAiUhipeklq+6QDld/\n5D4AAMuxiC+ob+zkjX6Ycj03YIRpU6KYW3VFM6venJBb9RVtBfCx8zFTI/zhqB++cgGAU3lV6k2N\nf3UJDM+huXcEqTE8Qk5W9misAlbqRShQEA7GwLHWHzjokHVKluxIququUA3l516BkIhi9UPfbPNV\njZbTqoCkBjhRsoosAXrJKlNEO1ydyEnJKn3AR7u/3EwGsR4PoNKS8ML+4CpgWGdW2VM/KrcktCUF\nosAi5LMGxOzGJUAiPVnlghogAKTJIqDDk1XZkvqe0a8GuPfpP0X5q9cRWF3ExR/+ZwCgJ6sabklW\nHav3+UnPrKJWnlllkRb0ZNUQs4rSCiDQczMxZt1oW3uI2kg4+zTXSFZ5ZlWvCs+oZlXiMWPQc5Iq\nIKkB9ppV5Rcnn2SflaZNVlnBqwLUm3RfWa2dOXEJsKYlq0IxUQcBj3qoSlCcrDIqgNbyqoiiCXpq\ngLIk49Xn1f92kWf/BgCw9r3fBj5E/0GF0yDrK4kL8AsBHFeOUGmMd80kdeIxq8yRblYt0surAoDg\nupasuuUAs4okq1aN5P7jF9XX5pM3CwO/zm5mVY6kqsLeEuA0cl8NUL2XyTg4WVVvVVFrVeDj/adS\n4t1KDdd/7lMAgKs/+UP6yqiopQrrNeczqzptCZVSEyzHIBr3PjNplWdWWSSSrMrXO5BPQJoz2snR\n4iqdZlW31kCnUAbjE+BbiI/1NcYSIP0PLMOkJ6u8GqAuqdlC+avXAYZB7OFr+j8nN1PHI8yqerWN\nerUNwcchGgsieu0yGIFH9c1tdKvjMa9mratTQNaPax28ddyAn2PwwIq5N5rhqB++ipOTVQZHh5ht\nta3bQ7+G5mRVUYerW8urIoon6UlWbb2ZQ63SQppvovzkl8EIPC78wHfafVljaXVN/Tw72ClONZ4w\na7Esh/VFUgUcD7JOHuRDLlsSs0tOSVYF9WTVAfW/2/3Wpp/YVB+U/3a7hI4k9/26sM1rgJnqbJYA\nfX73LQECPWuAGXeYVYtasipTot8gHqRcD1z9ZBvgxif/X7RzBcQfvQ8rH3yf/s/dxKwqaqmqeFIE\ny3mWCK3y/stYJB/HIurnIClAsWEwfRRF6UlW0VkD7K0AjsMgaUsydktNsAxwweHOdPC8lqy67SWr\niMpfvQ6l3UH4rk0IUcOEGTdZlcsYqSqGZcD6fYjccwlQFJRfum7dhZ9B6ZCAWIBHpSXhcMwP5Kc1\nDs5DqxH4eXPfWsPRAPwkWbXpPLOqrv07DEX8EC+qZtUobpUzklWzMatiCXqYVS8/q54iX7j9AiDL\nWPngNyKgPYTQrviCiKAooF5rU/HvchxNCln3klXmSVEUx5hVQjwCPhKCVKujky/ZfTlD1dwjzCrD\nrLqQCGAzEUC1LeH5AVVAu5lVlvOqMgYuwW1LgADgW4iD4Th08iXI7cnGa2jUYlw1iHMONquyGlw9\nfQKuXt/exfavfwYAcM/P/Pgdv4+hsMascoFZlfd4VY6QZ1ZZqFSfKmC52ECr2YUY8lG71tMvoj1M\nt4tNyAqwGvWb/pA+awVWFgGGQeswB7nrjMUoq6XzqnoqgECPWZWrDv36Xrg6kc6tepFOblUvZP3N\nMauAVlUAASAU9unJKv/aqunf32qRGqAY9kHcJGbV8Og8zcmqkp6smk0NMKYlVov58ZN+Vqhea+PG\n6xlw7SY6Tz4FANj42Idtu55JxTCMwa1ySBWQcKvGSVYpimKsAbowmTFrFWs5VBolhPwRLETGux+y\nSwzDOKYKSJLrwRP3mI9rq4BfHLAKGAgK4HkW7ZY01rCL2SLrwFbVAN28BAgADMvCl1b/G7shXZUM\nL4JjORRqObQ79i1UnkUErn6SV/X6v/slKO0OVj/0zYi97d47/iyombWNWhvKkEEEJ6hwTMwqbwmQ\nZjnbWaBcC6L6gu6FrGcOSAUwQu3JSXPiJUB3wNUBgPX74F9cgCJJaB3S95Bsh4qEV/XoCbMqRQDr\ndchDPrD6rds4AbJOqoDjQNa7soLn9lSz6jELzCoGCnwV9QZeSc7GIDFTeg0w7Edog5hVI2qAWrKq\nSGOyqqYmq+Lh2fy3CAQF+Pw8Om0JjT4cxFnp9RcPIEsKLh2/DrnexMLjjyF6je7EyUk5jVtFFgHH\nSVY1ah3IkoJAUIAgWAOAnif1pqpovV/rlVMg68aB6J0DPk9o3KovbRfR7lMFZBjG1ipgVkuSLFpU\nA3QzXJ1IXwR0gVnFshwWoio6xKmQ9d4aINHx3zyDzOeeAicGcfUn/sWpr+F5Fv4AD1lW0Gw6OyFH\nBqI8uDrd8swqC9UvWZXZpx+u3tDNqjGXADWOymbSHbUDYtJ53Cr1pL74zMsAgPij993xZz4/j0gs\nAKkrozykUtMLVyeKPqimBWg2q66kVPN1HMj6K4dV1Dsy1uMBLFuQmGzuZ8DIEjrBMBpd571t64D1\niB/ixTX1n42qAWrJqgKFyapZM6sYhtHTVXbW115+bg+QJQSfVsHqGx/7iG3XMq10bpVDFgHXUpfA\nsTwOCztotIZXrskDvBt5N3ZoJ/MWAODCojMMWcKtqlNsVsntjmpUMAz8y+k7/ux8LIBLC0HUOzKe\n3R1VBZw93FlPVllVA+xzsOc2GZB1+j7Xp1E6qr7mSJ3OadJrgJrpJne7eO0T/wEAcPFffg8CJ16j\nRDpk3eFVwIJ2f59Y8MwqmuW8px4HiUDWyYII0JOsotis0iPaYyardLi6C5JVgAFZb+x63KrGzgFa\nmWMIyZhuMvSKVAGPs/2rgL3rNr01wPBdm2CDfjRu7aNdKFtw5WeXsQjYGFm9IhVAK1JVAFDfVitz\n7WjSNl7HWVSvaMyqsA/B88tgOA7NvSPIrcE3OlQnq+qaWTWjNUAAiCcIZN2eRcDMQRmZ/TJSe29A\nyuURvrqJ1De805ZrOYuWz8fAMED2oIJOW7L7ckaK5wSspS5BgYJb2eGMP1IB9Mwqc3RLS1atpehe\nAiQKOiBZ1TzMAYoC/9ICWIE/9eePbw5fBSS/2xU7klX6GqCXrJpWblsEXIypr7lMyZmLgNmy+l6R\n0phVu7/zR6i+dgOB88vY+Nh3Dfw60SXcqkLOqwE6QZ5ZZaEWhiWrVumEqwOTM6u2Cu5MVjW8ZJVe\nAYw/en/fGgSJzg6CrFfLLbSaXQRFQV8QAQCW5xG97yoAoEwpt2pBFJAM8qi1JeyXh38gf2XXOl4V\nYKSQ2tGEbbPd00qWZNTrbYBRT+NYn4DA+SVAUYayVaJiAizDodosodOl64ZIrwHOKFkFAFGbk1Uv\nP7sHKAqW3/gKAGD9Yx92RDXqpHx+HqnlCGRZweEe3SBqonG5VUayyh2fxXaL1ADXHZKsEi+oD5yN\nHXpTHk19CbD//eUTGrfqyzsltLqnq4BGDXC2n4OyouhIj5QFyapatYVG3b1LgER6DdAtZlVcHbzJ\nOhSy3sus6pQqePP//HUAwN3/9kfABQf/HpL7+XqNrnuzSdSot9GodyD4OGoZ0p5UeWaVhUqJd5pV\njXoblVITvMAhTnHksDEBs6rS6iJX68DPMZbUn+wQSVY1dz2zalAFkGjUIiCpAC70WbeJUV4FZBgG\nV8aArB9V2rhVaEIUWFxbsuZ13SDJqojzklX1WhtQgKDo06eBQ1pKr749uArIMqy+tkdqd7TIWAOc\nXbJKXwS0IVkldWW89sI+xMNbwM4OfAtxrH7H+2d+HWaJVAGdw61S3ytHcavIA3zYJZ/FdqordbB3\nvAVArWI6QQZgnd6UxyBeFdFq1I8rqSAaHRnP7J5OXdu1CFhsdNGVFUT8HAIWDAkZqaqQIw8BxpV/\nUf1Mb2XoS0xPo7TGenKiWdXutlCqHYNjOSTDabz187+BTr6IxDsfxNK3fP3QrzVqgM46PO2VXgFM\nufs15wZ5ZpWFMmqAqlmV2ScVwAhYls4XhqIo+snXODVAUgFcTwTBUfq/aVIFz2vJKq8GOBCuTpRM\nq3H1wWbV6QogkbEION4kux0ikPVh3Kqv3FbTGQ+fi0DgrHlLJaaOE5NVNS0mHooYp9GiBlmv3RwO\nWU9QuAgoyxLKdbWiEhUTM/u58aRWA7QhWXXzjSwa9Q5W33oaAHDhn38HuIBzDRGyCOgUbpWerMp4\nyapZaT+/DUnuYil+HgGfMyoiwTX1wbm5d0TtmvE4mIknNtX31X5VQLuSVXoF0HJeFb2tCzPkthpg\nWktWZRxoVpFU1UJkGfWbu9j5T38AMAzu+ZkfH2neuCFZpVcAF5zx/j7P8swqC3WyBpg5UE+J0iv0\nfhh18iXIjRb4aBh8ZHRKhMDVNxLuuTkOkGTV3nybVd1aHeVX3gLDcbqxdFJGsqo/s6ofXJ0o6oBF\nwHGSVQavKmbZdRBmVcuBzCpy8hYKG+aGuEkWAYdD1gm3qlDNWnR1k6vSKEFRZIQDMfCcNeySfjKS\nVbM3q15+dhe+0jECb74G1u/D2vd9cObXYKZ6FwFH8eho0IX0FTBgsJu7MbQSqyerXFwjmpV2MsYS\noFPEBfzwL6egdCU09+l5z+yVnqwaYlY9rq0C/t1OGc0TVUC71gCzVQJXt+Y9P9eTrHKz/EvuWQME\nDGaVE5NVxhLgMt74qV+E0pVw/rv+MaL33zXya93ArCocG8kqT3TLM6ssVCzAg2cZVFoSWl1ZN6uo\nhqvrPIHxlgC38+oNw0bSHXB1wDjxa+weOeJBxiqVnn8NkGVErl0BJ/Y3I8NRPwQfh0a90/eEZViy\nKnRxDXwkhNZBFk1Kl2F6zSq5z+9CuyvjBS0x+fbz1ryuFUUxAOsRByarKkPMqiE1QACIU5isMuDq\ns+NVAUBUM6vKxQZkeXbvS7VKCzev55B69e8BAKvf+X7407P93262EgsigqKAerVt67riuAr4glhd\n2IAkS7iduzHw73nJKvO0k9OWAB1kVgH0Q9bHucdcjvhxV1pEsyvj6dt3VgHtWgM04OoWJavmAK4O\nAP5FdyWrYqEFCJwPlUYRzbY94yfTKqctAYbrPLKf/xK4sIgr/+ZjY32tG9YASbIq6ZlV1MszqywU\nyzBIiurayXG9Y9QAV+k1qxoTLwFqcHUXJav4WARcSIRUq6Nb6j+fPA/S4eqP9edVASrXiaSryBs/\nkSwr+g1Yv2QVw7KIPqCe4JQprQIuiAJSooB6R8Ze6fTN8UuHVbQkBZcXgnqS0my1s3lI9Qb4eBSy\nP2jLCtJZRGqAYm8NkJhVN4ebVQk9WUWRWaXB1WMzhKsDgCCoEFBZVlApze534NUX9sHWa0i89SIA\nYOOjH5nZz7ZKDMNgReNWHTiFW7WovlduHQ1OonrJKvO0k1XNKqfA1YkMyDqtZtV4Az5PDFgFJDy2\nWqUFZYamfbZmbbKK1ADnxqzK5qFI9K+xjhLLsEhrS3pOWwTMaskq+Uvqe92lH//+sQ+ijBqgsw5P\ne+UtATpHnlllsVKi+oLOlJvI52pgWKbvgzstau6NjmgTKYqCLY1ZtemiZBXDMB63CkDxaY1X9Vh/\nXhURubk6ya0q5evodmSEo34Egv1v8HRu1fMUVwGHcKuMCqB1BjSpyokb58ALLDptCe0WnTySfuqb\nrLqwCrAsGntHkFuDT+b0ZBVVZhVJVs0Ork6kVwELsznBVRQFLz+7h+Trz4LpdJD6hnchfNfmTH62\n1SJm1b7TuFUDFgGlrox6rQ2GZfSKhqfp5cQaIAAEL6gMnTqlZlVDv8ccnt5/XFsF/PudEhodw9Tg\nBQ5BUYAsKzPl5VjJrKpX29oSIIdIzD0Hv/3E+gQIyRggy2jnnbHGOkrpGFkEpHeFs5/I9fq3SxA3\nzmHjB//J2F/r9GSVoijI57waoFPkmVUWi6QtdnfLUGQFyVQIgsDZfFWD1ZxgCTBb66DWlhAL8EgE\neasvbaYKnCPcqvlcBFRkGcXnXgEAxB8ZnKwCDG7V8Qlu1bAKIFHMAdyqq0O4VcSseruVZpVWAQxt\nntfrPbNM1pxVOrOqZ6GM9Qnq6qYso3578A0eSVbRVQMkS4Czr8LFkrPlVh3ulZE/KGLhdRWsvvnx\n75rJz52FerlVTtDGEklW9U+hVnVT2EftgItTVGkUka9m4BcC+jS9UxTUk1X0PThLjRY6+SIYgR+Z\n4FgM+3DvYggtSdE/Z4ns4FYRZtVi2PxkVS6jrSYvnl5NdqOMKiA9n+tnkWOTVXl14CZUZnDX//Yj\nYP3jG7FOB6xXyy10OxKCId/Aw3RP9MgzqywWWQTMEl7VKr1wdQBoTMCsIhXAjUTAdR+wQQ2y3tid\nT7OqdmMHnUIZ/uWUDpwfJNL3PpmsGgZXJ4o+aCwC0soHu5JSDYKTyaq9UhP75RYifg53p607mSFc\nJ3HjnG28jrOoVtHWAE+wPsRNLQEwpAoYp7AGWNRqgHFbklWzXQR8+dldxG6+DL5eReTey0i+55GZ\n/NxZaGUtBoYBsgcVdDr011E2tGTVTvZNSPLpZGWt4vGqzBKpAJ5PXQLLOOs2WVxXmVX1W/Q9ODcP\ntFTVchoMO/rfKwGtn6oC2vA5aGWy6jij3ju5vQJI5LZFwEUtWZUp0plmHKTDfZV/eP7q/Vj8pscn\n+tpAUADLMmg1u+g64PPzpLwlQGfJWZ/CDlRKM6vK2oM8zXB1oHdWeLhBAQBbBK6ecE8FkCgw5zXA\n4tMvAwDij94/0ohMpvvXAI1k1eAbsODaMoRkHJ18EY3bdP67JpD1t3INSD2MDHLa++j5KDgLkwwk\nWSVunEc4Ys8S0llU05JVJ6tJoc01AMMh61QC1rVriYk2mFXJ2dUAux0Jr7+wj9TLfwcA2PjYR1x1\nKOHz80gtRSDLCo526a+jhANRpGOraHdb2M/fOvXnlZLHqzJLO1m1ArjusAog0AtYpy9ZpcPVR1QA\niR7XuFVfuV1GvW08EOsJ4xl9Dkqyoq96W8GmPB7jXslN8i9qi4CuMavU11yu7ByzqvjqmyijDijA\nY//rv574s51hGEenqwxelVcBdII8s8pikQ+2lvZwQb1ZtT8eTwDogasn3XeSS5JV81oDLD47Hq8K\nAOILIhiW0RhVxg2lblYtD04TMgyjVwHLlFYBE0EBi2EBza6M3Z763d8TXpVFK4BEvcyqcEw7Ua44\nKVl1ugYI9EDWt4aZVaohVKoXIMt0nN7ZWQOMk2TVDGqAb72aAX/zOgKFDPxLKax88H2W/8xZS68C\n3qbfrAKGc6v0ZFXEfZ/Hs5ZTeVUAEFhOgfEJaGfz6NboWrrUmagj4OpEqZAP9y2F0JYU/N2O8Rqd\ndbIq3+hAVoB4gIePM/+xaV6WAIn0ZFWGnkOosyitmVWZkjPMKkVR8Oz/8X9DYYGIHETi2l1TfR+d\nW+VAsyp/rD6TJz24uiPkmVUWa0EUAEUBtAc2mmuAcreL5kEWYBgEltMj/z5JVrkJrk5E1hC9ZNVw\nXhUA8DyLeCIIRQEK2gdAtyurJxcMsJAefgMWe1B9AHMCt4pUARsdCV89qIIB8Oh5a1/TpM4hbp5H\nhLA6HMKs6nZltJpdsCyD4AkuADGralu3B349zwmIBONQFFk3ieyWsQZoZ7LK+ofQl5/b01NVF37g\nO8D63Md1WFmLAXDiIuBpblWFLAHGvGTVWUVqgE40qxiOMzAGQ3iAdoisTY+DmSAioPUnt4zX6KyZ\nVYRXlbaAVwUAuXk1q1ySrNLNquIetTiLXmX/8ku4/coLAICllekHU/RklQMh616yylnyzCqLlQoJ\nEDsSWFlBJBZAUDS/726WWkfHgCzDn06OBO11ZQW3i+qNwnrcfSe5BDA/j8mqTrGM6vUtsH4fovdd\nHetrCGSdVAELuRpkWUE8KULwDR8UiL2NcKvoNauu6JB11SR4Yb+KjqzgrrSIuIVwxk6xjE6hDE4M\nwpdO6ukkpzCr6noF0AfmRFVynGQV0ANZp4RbZawBzj5ZFY4GwHIMapUWOm3rkmaVUhMHT7+KyN4N\nsMEA1r73g5b9LDtlJKuKjnjIMJJVp82qGjGrIp5ZdRbJsoTbOWJWXbb5aqYTrZB1vQY4ZrIKAL52\nMw4GwDO3y6hp73mzTlZZvgRYa8/FEiCRXgPMuMOsigTj8AtBNNo11FoVuy9nqOR2B6//3SmkGAAA\nIABJREFU1C+gGlU/7xaTa1N/L4J2IPd5TlLRWwJ0lDyzymItiAKibRWGurhCb6oKmGwJcK/UREdW\nsBzxQRxhRjhR/uUUGI5D6ygHueW8U4OzqPisugIYffDusddBTnKrxoGrE0W1ZFX5pTegyPLE1zsL\nEbPqelb9gPuKVht6+4WYpT/X4FWdA8Mw+s1steKMZJVeAQyffoAWL6wCDIPG7UPI7c7A70G4VQUK\nuFWyIqNUV2G/MXH2ZhXLMojGrU9XvfL8HhZe/nsAwPkP/0P4EnTX16dVIhVCICigVmmhXKSrMtVP\nZBFwO/PGKXON8Hs8wPrZdFTcQ7vbQjKyhHDQ2vd3qyRe0MYrduiCrJMaYHBMZhWg3kPfvxxGR1bw\n5Vvq5+7sk1VWwtWNVJWbmIDDZCSr7P9MN0MMw+jcqmyRrtfcSd36jT9A/eZttDfUz/RUbDSfeJCc\nWgOUJRnFvHovH/cA646QZ1ZZrKDAIdFVzaoY5RHf5gRLgAZc3Z03xizPw7+sPiSTBZt5UfEZrQL4\nyOgKIJGerMqpN14GXH20QRtYSsG/kka3UkPtxs6klzsTkRrgjeM6JNmY0n77msW8qp4lQMCeFaSz\nqKbd5It90h6s36ca47I8tK4SpyhZVW2UICsSQv4IBN6elGwsYS1kXVEUvPrU64jfeAlgGKx/9MOW\n/BwaxDAMVrR01cEO/dyqRDiNeGgB9Vb11Ey6nqzyAOtnkgFXd2aqCnBCsmp8swo4vQo482RV3boa\n4LxVAAHAv+QuwDrQswhIMbeqnSvgxs//PwAA9j1qayIVXZn6+zm1BlgqNiDLCiLxAATBfWELN8oz\nq2aghAad9sXpdnAbu9qNxPnRyaotAld34RIgUXBN4z7szlcVsPjM+HB1opM1wHGWAHulQ9ZfPF1v\noUHRAI/liA8tScFTWwVkax0kgjwuL1j7+9+7BAgAIbIGWGlBlumvLZF4eCjc39gJXdQWAYdUARMU\nJavshKsT6WaVRZD1vVtF8F/6a7CShPQ3vkf/b+RWrWrcqn2ncKu0KuBJbpWXrDJHxKxyIq+KSFzX\nFgFv0ZXy0Ad8JqgBAsDXbsTBMsCzexVUW12Iog8sx6DZ6KDTsX54Q2dWWZysmhf5Fwlg/dgR9etx\nlI6ppk+WYrPqzf/r19EtV5H6+negGlZbDIS3NY2cmqwq5Ahc3asAOkWeWWWxFEWB2FQ/6BTKWRLk\nRiI4xo3EdkFLVrkQrk4UmEPIuiJJKD73KoDx4OpEvWaVoigT1QABw6xyAmT9d59XzcvHzkfBWhzb\nJyZOUEtW8TyLoChAkRU0HHCDMKwGCBgmXG17iFkVVsceaEhW6bwqG+DqRLGktghoUbLq5b/bQvL1\nZwAAm//iI5b8DJrUy61ygvotAraaXXTaEniBgz/A23VprpAbzKrgBfUBtE5RsqpbqaFbqYEN+CAk\nJ6tXJkQBD6yE0ZUVfOlWCQzL6PzG2gzSVYRZtRgyP1l1fDR/ZhUfCoILi5BbbXRLdDOexlWa8mRV\n5dW3cPu3PwuG43D3T/1L5Mrqc036TMkqZzKrdLj6gmdWOUWeWWWxapUW2I6EDsugYsHkrZlq7qlv\nXuMwq7a1U/3NpHtPccmizjxB1iuv34RUqyN4YVU//RpHQdEHMeRDpy2hkKuhlG+A5ZixPwyctAh4\nSxsWsLoCCBhLgCENRg4AYY1bVZkRr+MsqlXUm/xQpP+JtHhRg6zfHGxW6TVAGpJVNYqSVRYwq9rt\nLg7/25+Db9Yh3nsFiXc+ZPrPoE3L5+MAA2T2yzNJaZxV/RYBq3qqyj833BurdEs3q5xcA9SSVTsH\n1CRX9CXAc8tT/Y4+QVYBb6qmMlnGncXnoA5YH5AQPotIsmrcgz23yG1VwMW4xqyi0KxSFAWvfeKT\ngCxj7fs/CPHqOo41s2oea4B5fQmQ7raTJ0N0uycuUOZAPTWo+Hjk64MhwjRo3Ih2oyPhoNIGzzI4\n7+L1ksA5UgOcn2RV8Wm1Ahh/bPxUFRFJV735inpTmkyFwPHjvcVEH9RqgC9fh6wx3mjTlbTxwcYy\nwMPnrB9MqG+pZlVw/Zz+zwy4LP2nWTV9DbB/sio0xiKgXgOkIVml1wApSFZZUAO8/tIB4i9+GQBw\n+Ue/ey6MD3+AR2opDFlWcLRXtvtyRqp3EZAYEVWPV2WKGq0aMsU9cCyPleS63ZcztYR4BHw0DKlW\nR+eYjsSgkdyfjFdF9O71GFgGeG6vjHKzq/+uW52s6kgyCvUuWEaFvZupeq2Neq0NwTc/S4BEvVVA\nNygdpdesynzuKeT/9jkIiSgu/+v/EeVaHh2pjUgwhoBv+naM02uA3hKgc+SZVRYrs6/e/Jb9Ao4p\nN6vIyVdwBLOKVAAvxP3gWfc+zAS1hNk8Jat0XtWj4/OqiIhZdf1l9d/XJCeFvkQU4sY5yM02qm9s\nTfyzZ6ErPXyqa0thhP3W1m26tQZaRzkwAn/HehKZpp/VEtJZpDOrBlSgSQ2wvnV74PegK1ml3ljH\nbTSr4kkDsG52auKNT/8VAqUc2NQClv/xN5j6vWnW6poGWXdAFTAdW0XIH0GpntcNXLIOGo7M1wOv\n2bqduwEAOJ+6CJ4zv/I1KzEMo0PWaakCTgtXJ4oHBTy0GoGkAH97q6Qf2lidrDqud6AASAYFcCbf\n787jEiCR2xYB9WRVeZ+aNCMAyK02Xv93vwgAuPw//yB8iSiyZfU94SypKqDHrKq2qfrfPEoFL1nl\nOHlmlcXKHKhmVcXHI1ej16yS6k108iUwAg9fKjH075IK4LqL4eqAUQOcq2QVWQKcgFdFlEyr5tSR\nZtCOswTYqyjlVcCwn8eqdpo7iwpgY0c9oQteWAXDGYslTloE1GuAA+oTwfVVgGHQuH0IudM/Udeb\nrLL7hqioM6vsqwEGggJ8fg7tloRmw7zPlGK+DuXzfwkA2PzoPwErzA/7iCwCOgGyzjAMNpbUKuB2\nRq0C6smqmJesOovcwKsiErU0bmOHDsh6c286uHqvSBXwqZuFns9Ba82qrHbfnrKQVzVvFUCgJ1nl\nkhqg6I8gFIii1WmiXC/YfTm6tv/jp9G4tY/wXZtY+95vBQBkS+aYVbzAwefnIcsKWk06GxEn1WlL\nqJSaYFkGsbi7n2HdJM+ssliZfaMGSHOyqtFz6sWww38tSLLKzbwqwFhFbO4d2f6QPAu1snnUt/fA\niUGE77k08deTZBXRpDdgtC8CAsD7ryaxFPbh6y8NN3TNUF2Djoc2zt3xz0ldwAnJqtqIZBUX8COw\nughFkgaawj4hANEfhiR3UWnYaybQUANkGAaxhHoiWDSxCvjSH34J4YMtKH4/Nr7v20z7vk4QSVbt\n7xQd8V5/klulM6u8ZNWZtOMCXhVRcI3SZNW56ZJVgFoF5Bjg+f0KuKBqHll9aJOtWs+rmie4OhEx\nq5oZdySrAANWninRYRC3Mse48cnfBADc/dM/BpZXD6ByWrLqLEuAROQgkozp0K5iXq0AxpMiWMo5\n0p4Mef+lLFSr2UUxXwfLMahRblZNMim8pYF9N12erOJDIoREFHKrjXaOnpMSq0QqgLGH79U/1CbR\nabNqsmSVExYBv+uhZfzWR65h0YIb15PSeVUnzKqQQ2qA7Za2UMaz8A2pTIqEW3VzSBUwREcVUF8D\ntBGwDgAxUgXMm7MIqMgKMr/zhwCA5AfeDyFmPY+NJiVTIQSCAmqVFspFul9XwOlFQI9ZZY52sm8B\ncEeyyoCs08HQmeQec5CiAR5vOxeBrAA3tMST5WaV9nPSFiSrcvNsVi25K1kFAItx9V6NFm7V9X//\na5BqdaS/8T1IPfF2/Z/n9Brg8pl/hg5Zdwi3yqsAOlOeWWWhsgdGHYphGRQbXXRlOk9tm7sar2qM\nJcCtPElWudusAoxlxOYcVAHPUgEEgGg8CF4DqvMCq6+Wjf31D9wFMAwqr74FqemMUxorVd9WzSqx\nZwkQMFaQaK8BkoUYMTJ8oSx0cU39+8Mg62E6IOv6GqBoX7IKMH8R8OZX3oT4+otQGAb3/U/fY8r3\ndJIYlsHyWgyAM7hVG5pZdSpZFfWSVdNKURQ9WbXuArNKXNfMqlt0PDg3dLNq+mQVAHydVgV84Vh9\n77O+Bqglq0JesspMuW0NEDCSVTSYVaWX3sDe7/8JGIHH3T/1o3f8GakBpmNnqwECgBhSD0icsgho\nmFUeXN1J8swqC0WWAJdWo4gHeSgAtYuA40a0C/UOSs0uQj7OkpMm2qRzq+YAsk7Mqmng6gDAsoz+\nAbCwGAYzIYyUD4kIX9mA0pVQefXGVNfgJpEaoLh+Z7LKKWuAegVwRApNh6xvDzaraEhWKYrSUwO0\nO1lFFgHNSVZd/+XfByvLEB579FTtdF7UWwWkXavJdfh4P3LlA1QbJS9ZZYKOK4eot6qIiglba75m\nyQCs2//grCiKfo85zoHoML1rPQaeZfBCXv2dr1ZallZ3s1UtWRU29363UW+jXlWXAKPx+TOZ3bYG\nCABpLVmVsdmsUhQFr3/ik4CiYP1/+JB+IEiUMwmwDjgvWZX3lgAdKc+sslAErp5eiSAlqi9oWquA\nxIwJnBseCyUVwI1EYC7WS0iyyu2Qdbnd0et3sUemS1YBRhVw0gogUdQBVcBZaVCyKhgSwHIMmo0O\nOh3JjksbS4RhEAoPf4AWN9UbvNrNIWYVWQS0MVlVa5YhyV0EfSH4eHtNATOTVfV8BfJTXwQA3PXj\n85eqIlp1EGSdZTmsL14FAGwdvq6/1rxk1fS6lTHg6m64tyHMqubuEeSuvfDjTqEMudECHwmBj5zt\nITHi5/HIuQi6DANW4CB1ZVOHJk7KqmRV7mh+lwCB3mSVe5hVixoDym5m1eFnv4DC378I30Icl/7V\nP7/jzxRFQa6sPs+kzTSrqnQfnhLpyaoFrwboJHlmlYXqTVYtaCkkWhcB9VOvERFtUgHcSMzHTXFQ\nM++aLk9WlV9+E3KrjdCVdfgS0y/dnd9UEycXLk2XPHECt2oWktsd1SBlGIhrd95QMAyDsMatqlGc\nrqppsfBBcHUicVOrAQ5JVumLgDYmq2iAqxMRwHrJBMD6i7/waXCtJrprG1j7hkfP/P2cqpW1GMCo\nh0xdik1gIgJZv777KmRZQVAU9Bq2p8lFeFVrKefD1QF1vMK/nIIiSWjuZ229lmbPgI8ZIquAbe33\nvVqy7nOQMKsWTTar5rkCCABCPALW74NUraNbM28oxE4RYDmp2dkhqdHCGz/9SwCAK//LRyFE7/z9\nqjXLaLRrCAgiQoGzr1qLIWJWOSNZ5dUAnSnvzsYiSV0Zx0cVgAHSyxEsiMSsovMF3dSTVcMj2tsE\nrj4HvCqgpwbo8mQVgavHp6wAEj309jV8/4+9B/c+NN3KSOwhlcVSnnOzqrF7CMgyAueWwPpP3yST\nBEWFYsg6SXuIo2qA+sT6/sAEAA3JqiIlcHXASFaVSw3IZ+AgKpKE/Gc+CwBY/J5vN+XanCp/QMBC\nOgxZUnC0X7b7ckaKQNZv7L8KwEtVnVU6r2rR+bwqIlog6/r95Rng6r1613oMAsugBDWRZNXnYLsr\no9TsgmOAeHDy0ZlhOj6ab7OKYRj40upnaTvrjipgOqq+3nLlA8iKbMs1bH/qd9HcO0Lk2hWc/6ff\ncurPs6QCGFsxJdEnasl5J9QAG/U2GvUOeIHzKvMOk2dWWaTjbBWSpCCRFOHz80hpZhWNzCpFUdDc\n0+CXI80qkqyaD7MqcF4DrLs8WVV8WjWrEo+dzaxiWAappelj7ZF7L4PhOVTf3Ea3Zg6Px4kisHFx\nAD/I4FbRa1bVq+PVALmgH4HVRShdaeCQARXJKkrg6gAg+DiEIn7IknKm34Gbf/BX4PI5tCMJPPiD\np29s501OqgISyPrtY9VkCXk332cSMavcsARIJFJiVjX0+0tzklUhH4dHz0fR1KbnrfocJKmqVMgH\nbkIG5yiRZFVqaT7NKsB9i4ABXxAxMYmu1LHlYK15kMXNX/gtAMDdP/1jYDju1N8hvCozKoCAs5JV\nxWP1mSKZEueyeutkeWaVRSIVwPSKGrNMkRoghWZVp1CG1GiCj4RORUZ7JSuKblZtJufjFNdIVrnb\nrCqYlKw6q7iAH5F7LwOKgvJLb9h6LXZqEK+KiJwK0QxZ15lVI2qAgPG/szZgEZCGZFWprt5QxylI\nVgFGuqp4Bsj6jV/+XQCA7/3vgz/omR1OMqvWUpfAsRyy1V1IaOkroZ4mV7vbwkF+BwzD4vzCpt2X\nY5pIsspuyLpRAzQnWQUAT1yMo8WrD+NWfQ4avCrzx4Ryeg1wfutIARcuAqa0hT07uFXX//dfhdRo\nYukffR0W3v1w379j5hIg4CxmVd6rADpWnlllkTJajWBpVQVNJ0V6mVXj8gQOym20ujJSooCI39xI\nNK3ypRJgfAI6+aJrevUn1dg7QusgCz4WQejyBbsvB9EH1cTAPHOrBi0BEjkhWWUwq0azPohZVd/q\nf4OXCBtrgFYuPw2TnqyigFkFALHk2SDrhedehXz9OiSfH/d8/ENmXppjRcyqg9tF237PxpXA+3A+\ndQmAggZ3OJYp7Km/9o63ICsSVhIX4BPcY/qJ61qy6pbdZpWWrDKJWQUA77wQQ1dQH2FyJq2inpRu\nVo2osk+qO5YAY/PRUugnsgjYzLgJsm7PImDxuVew/wd/BsYn4K5/+8MD/x6Bq5uxBAg4aw2w4C0B\nOlaeWWWRjCXAO5NVNK4BNiddApyTVBUAMCyrTy0TU89tIhXA+CP3gWHtf0vQIesvvm7zldinUcmq\niBOSVVXCrBr9EB0ikPWt233/POgLw8f70eo00WjXzLvICaQzqyioAQJnh6y/+vP/GQBQf/AduHDv\ndIw5tymZCsEf4FEtt1Ap0WsEExFuVZ3b198TPE0uN1YAASB4QX0gpSVZFRyBmZhEoo/D+rJ6GLyr\n8Z/MVraq1QBFc5NVvbwqxuR6oZPkthogYCwCZmdoVimKgtc+8UkAwMbHPjLwkBMwaoBmmVWBgACW\nZdBqdtHt2sPpGlcGXN1bAnSa7H8ydaEURUG2ZwkQMD7saDSrxuUJzBuviohwvNwKWSdw9cRj99l8\nJaqIWTXPkHU9WTWAWRXSzSo6H6gVRUG9Mh6zCuhNVvWvATIMY3sVsFSjswZYKkyeKmjsHqL8hb+B\nwrA4933f7vEbNDEsg5U151QBySJgnTvwAOtn0E7GfXB1oBewbt86GYCxmaiT6qFNdRWwWLSKWWVN\nsurYqwACAPwurAGmbTCrDv7bX6D07CvwLy7g0o9979C/mzO5BsiwDIIat6pBebqqoDOr5vt150R5\nZpUFKhUaaDW7EMM+PZof8nHw8ywaHRm1Nl2z2M091YQZdeq1nSdLgPN1U6wnq1wKWS8+8zIA+3lV\nROGrm2ADPtS399Au0L/KZbYUSUJdq20MMqsieg2QzmRVq9mFJCnw+TkIvtOQz5PSzart/mYVYD9k\nvVSntAY4RbLqxq99Gowso3TxXtz3D+h43dOi3iog7epNVnnrRtNrJ/sWAPclqwLLKTA+Ae1s3jaM\ngSLLaB5m1etZMa8GCADvuKIeHCitLjIWAJ4JYN1sZpXBq4qY+n2dJlIDbLmoBkjMqkxxNsyqbq2B\nN372VwAAV/7Nx8CHhxsx2bJ6b5mKDm/STCIncKsURdGTVfEFL1nlNHlmlQUivKpFLVUFqMmABZKu\nooxbZfAEhptVW8SsmrdklQ5Zd1+ySqo3UX75OsCyiL3tHrsvBwDACjyi910FAJRfmr8qYPMgC6Xd\ngS+dBB/q/6GqM6sqLSrZOrUJUlWAweaq39qH3O32/Tu0JKtiIi3JKq0GOCGzqlupYe93PgsA8H3T\n+xGNz9f7+Sg5CbK+vngVUBg0uAwCodGmsKf+cmsNkOE4YyTmtj3pqlY2D6XThZCMgzN5xCEZD0IB\n4JdkPPlW3tTvDQDZqlXJKvWh2UtWubEGqN7LZMuzeb1t/fLvoHWQRfSBu3Huw/9w6N9tthuoNErg\nOcHUQ7eQ9vqoUbwIWKu00GlLCIoCgqK5r2dP1sszqywQWQJcXLnz1ITWKmBDZ1YNNqvaXRl75RZY\nBrgQn7dklXqz13ThImDpxdegdCVE7r008kRmltK5VXNYBRzFqwIAwcfBH+AhdWU0KHs/AQxe1bjQ\nZ04MwL+ShtLp6pWRkyLJqqINySpFUXqSVXSYVZFYACzLqDdhnfHTuru/98dQ6g3Uli/g3g98jYVX\n6Ewtn48BUA+daGdw8GwAAXkBCiPhuNGf9+ZpuIq1Y5TqeQR9IVPTBrRIh6zbxK0i7+fBEZiJacRy\nLHzaffWXrpv/uUDWu81OVpEaYGpp8Pr2PMiNNcBUdBkMGByXjyDJ/Q/ezFJj9xBbv/LbAIB7fubH\nRjJne3lVLGPe478YUu/zaIase0uAzpZnVlkgAldfXIne8c8XtA+8XJ2uFzSptw27mdgpNiErwLmo\nHz5+vn5tgmvayaQLa4B6BfAROnhVRPO8CDhqCZCIpKtqFFYB6xX1PU6c4ERa3CDcqv4P3SRZVbAh\nWVVvVdGVOggIIvwCHUkklmX0VFR5zHSV3O3i5qd+HwBQett7cOle8x8gna5AUMDCYhiSpCCzX7L7\ncoaqWm5ClFQzYjv7hs1X40wZqarLrmS3BdfU3w+7IOvjrk1Pq4SW9N/N1HBYMe+zsNGRUGlJEDgG\n8YB569eNehu1Sgu8MN9LgADgW4gDLItOvgi5Td+h2zQSeB8S4TRkRcJx2dpnhjd+9lcgN9tY/tb3\nIvGOB0f+fZL2SpsEVycK6jVAup5te2UsAXoVQCdqvlyHGYnA1XtrgAD0GmCOohqgIkloHaoPf8N4\nAsYS4Px9uJLEWdOFNUADrk4Xt0aHrM/hIuA4ySoAOqOmQiFkXU9WjVkDBIDQxeGQ9biNySq9AkhJ\nqopI51aNaVZl/vQptPeP0Iomcf5bnoAgeNWxfnJKFbBWaRlm1ZFnVk0jAld3WwWQiCwC2gVZHxcz\nMa2iMfXQJtCV8dSWea/XXl6VmSZmbwVwnpcAAbWm6k+rn6mtrPk1TrtE4OVWQtYLX3kJh//f58EG\nfLjrEz881tcQuLrZCVJRA6zXa/QdnBIVvGSVo+WZVSarXmujUmpC8HFIJO90cFNasipPUW2ndXQM\nRZLgSyfB+genILbz6gPxZmK+KoCAcSLYPMhAkeiC459FiqKg8LSWrKLMrApdugA+EkJzP4NWxj0R\n8XFEzJpBcHUinVtFs1k1Zg0QMJJVtQGQ9YSNySra4OpEZBGwmB9vEXDrU78HADi+9g7c/9iaZdfl\ndDnFrKqUmhAl9cFo62j+jH0z5FZeFZFeA7w1G+DzSZHkvlXJqnBE/Rz0SzKeummiWUV4VSGTeVVH\n6mH2wuJ8VwCJ3MitSmvcqoxFZpUiy3jtJz8JANj8+HfrXLpR0muAJi0BEoUckazSzKoFz6xyojyz\nymRltQpgejly6tQkRWGyqqFXAEfA1ec4WcUF/PClk1C6kqs+UOvbe+jki/ClEvrENS1iWBbRB9RZ\n9nmrAta1hwpi3gwSSVbRuAhY02qAE5lVZBHw5qBkVRqAzckqSuDqRLHk+JD1wjNfRem5V9D1B8G+\n6906m8nTaa2sqf9uDm7TXQPsTVbtZK9Dlt1zmDIr6UuAi+40q8hne93uZNWIe8xpFY5pi9uyjOu5\nOvZN+jy0agmQJKvmnVdFpCerXLQIuEgWAUvWGMR7n/kcyi+9Dv9KGps/8s/G/jqraoCilqCn2qw6\nVg/0kl6yypHyzCqTdbRP4OrRU3+m1wApSlY1x4CrA73JqvkzqwDDzHMTt6r4tFoBjD92P5WsjtiD\nBLI+P4kBRVFQ3yJmlfOTVZMwq0IX1aRPfUSyyo41wCJlcHUikqwqjZGs2v5VNVWVv+sRXHvXJpWv\neVq0kA7DH+BRKTVRKdH3+iKqlJvgFRERXwqtThMHhR27L8lRkuQudo9vAgDWUpdsvhprZCSr9m1Z\njm1YzKwin4Pn/Gql+amtginfN1uzJlmV0+DqXrJKlRsh62nNrMqWzDeIu9Ua3vy5TwEA7vqJj4MP\njf9Mli0ZgHUzZdQA6TSrZEnW0+fxBY9Z5UR5ZpXJIsmqxdXIqT8jgHWa1gDHMasqrS5y9Q78HIOV\n6HxOfgbI/POuPaeTVkjnVT1KVwWQaB4XAdu5AqRaHXwsAiFx2vDuVYTiZFW9MjmzKqgB5eu39vvW\nbcPBGDiWQ61VQbszWwOBJKsIN4sWjZusqt/aw9HnnoLCsijc93bc+xBdSUraxLCMnq6iuQpIxhVW\nY5cBeFXASXWQ30FX6mAxdg6i353mgRCPgo+GIdUb6BzP/nfZamZVWEvvxrWnmSdNqgJmq+p9esqi\nJUDPrFLlxhrgom5WmZ+suvkLv4VW5hixh69h5du/caKvtaoGKOo1QPruRQGgXGxClhREYgEIPo/T\n6UR5ZpXJyhwMTlYlRYNZJcmzP+Hqp3FOvba0VNV6Igh2Tk/jgzpk3UXJKrIE+ChdS4BE0R6zyo4T\nYTukw9XXz41MvoRIssrEBSSzVKtOXgPkQ0H4l1JQ2h00tLnzXrEMi5gOWZ/tjS21NUA9WdUY+hq5\n9eufAWQZxYv3Y+2hzYn+u8yrVtYIt8qcpIYVIuMKF1JXAXhm1aTqXQJ0s0i6atZVQLnTVQd8GAaB\nlbQlP4Mkq9hWF6LA4sZxA7smpCH1ZNUE6eBRajY6+hJgLD6fLYWT8i9qZpWLaoDpuHrwZnayqn5r\nH9u/pq753vOzPw6GHf8Rvit1UKzmwDIcFiLmphx7k1U03qvnPbi64+WZVSaq05aQz1bBsEzfPrqP\nYxEL8JAVoNjs2nCFp9Ucg1m1rZ3abybnD65OFFhTk1VNl9QAu5UaKq/dACPwiD5wt92X01fBtWUI\nyRg6+SIat923xNhPpAInbg6vAAI9ySrKakqyrOhxcHHCCoXOrRpUBdTMqsKMuVVjhDwkAAAgAElE\nQVSlGp01wKAoQPBxaLe6aDb6J3Y7pQp2f/ePAahg9fseHv275cmArNPMrSKpykurqrHvLQJOplsu\nh6sTEW5VY2e2kPXWYRZQFPgXF8AKvCU/IxIzEsZfs66mIc0ArVvBrDJSVd4SIJEba4ALkUWwDIdC\nNYtO17xq3Bs//UuQW22sfuf7EX/42kRfmysfQoGCZCQNjjX3tcgLHHx+HrKkoEXJs22vDLi6VwF0\nqjyzykTljipQFGAhHQI/YBKccKtoqQKOA78kvKqNOeVVAT3Mql13mCbF514BFAXR++8CF6QzZcEw\njM6tKr84H1XAcXlVgAq1ZBj1NEvqylZf2thq1NtQZAWBoACOn+wjRjertgZA1m3iVhXrWrKKsjVA\nhmEQJ1XAfP8q4O5vfxZSvYHq6iaYtTVcutsadozbRJJVR3sldCl6fREpiqKbVXetq+nY7aPXqTzZ\nplU7mflIVgXX1NrPrJNVRgXQuvccn5+H4OPQ7Uh49zkVv/HkzbOlIRVFsYRZlTvyKoAn5cYaIMfy\nWIguQYGiQ83PqvyXnsfRn3wRXDCAqz/xQxN/vV4BNJlXRURzFbCQU3lVXrLKufLMKhOV2Se8qsGs\nGdJ/P6ZkEbCxO5pZteUlq/RpWLcA1nW4OqUVQKJ541bVb2nJqhFLgADAsoxe56KpClifYgmQKHSR\nLALe7vvnBLJuW7KKshog0FMF7MOtkjtd3PpP/wUAkLv2Ttzz0OrEBuK8KhAUkEyHIEmK/tlOk1rN\nLrodCYKPw/LCCmJiErVWxbSHo3nQzpwkqwzI+myTVVbD1QHVsCfcqkthAWEfh61CEzuF6RPHtbaE\nRkeGn2cR8ZvHuPF4Vaflxhog0Mut2j/z91IkCa994pMAgM0f/Z6pKrW5snrQbplZRaqAFC4CFo5J\nDdBLVjlV3l2riTJ4Vafh6kT6IiAFqwlSo4VOvghG4PX52JNSFAXbhfleAgSAwDmtBuiWZNWzKq+K\nVrg6UewhtaI4N2bVBMkqwOB11Cr0VAHJEmBoCtYHMelG1QBnmaxSFAUlbQ0wTlmyCgBiSfV9udhn\nEfDwj76A5n4G7UQa1fOXvQrghCJVQBoh6yRVFY76wTAMNpbuAqCmqzyNVrVZxnHlCALvx3Jize7L\nsVRGDXDGyaq90cl9M0Q+B5vVNt69oVUBz7AK2FsBNHM1lZhV/TAh8ypiVrWzBSgyfQnWaZU20aza\n/b0/RuWVNxE4t4TNj//Tqb4HuY60yXB1Ij1ZRcGz7UkRZlXSS1Y5Vp5ZZaIyZAmwD1ydSDerKKgB\nNsmp18riQFBfttZBrS0hFuCREM1dRXGShEQUXDCAbqWGTrlq9+WcSYosUw9XJyKQ9fJLb7jqRmaQ\ndMD65uhkFaA+qAJApURPsoqYVeIES4BERg2wfwJArwHOMFnVaNfQ6bbgFwII+Og7mYsl1Gsqn0hW\nKYqC7U/9HgAge+87sLgaHZr69XRaBreKRrNKNajJg/rGkmrse5D18XQ7+xYAYC11CSzr7oWoIAGs\n3zr7g/MkIjXAYUxUMxSOGQnjxzcTAM62CmhFBRDwaoD9xPp9EBJRKJKEtg1rlVaJmFWZMy4CSvUm\n3vz3vwYAuOsTPzw1tiOr1wCXz3Q9g0SWn2uUJas6HQmVYhMsyyA6x4ELp8szq0ySLCvIHqrJqvSQ\nZBWpAeapMKtG8wS2NA7KRmJ+K4CAGjUPnHdHuqr6xha6lRoC55YsjeebocBSCv6VNLqVGmoDqmFu\nUadcRSdfBBv069DRUSIPquTBlQbV9BrgFMkqYlbd2utrTsYJYL2aPcMVTiajAkhfqgowklWlwp3J\nqsKXX1BN3lAYxUsP4L5HvFTVpDIWAel7iCLVX2JYby56yapJtKOZVW6vAAIGxqC5dwS5OzsAcnMG\nNUDgzs/Bt52LIOLncKvY1MeBJhVJVi2GzTugNZYAWW8J8ISMKqB7uFVGsupsacbMX/wN2sdFRB+4\nG8vf+t6pv0+uZC2zKhiik1lVPFbvi2LJIDjOszycKu+/nEkq5GrodmRE4wEExcEPaUYN0H6zisDC\ng+eHLQFqFcCk9+FK/j0RzpdTRSqAtKeqiGIPqomBssurgHqqav3c2NUD8qBKE7NKrwFOwaziQyL8\niwuQW23dTO9VIqyyGgozrAGWdLg6fbwqwEhWFU8A1rd/TUtVXX0EjF/A3Q+uzvzanK7UYhg+P49K\nqYkKZaubg5JV3iLgeDJ4Ve6GqwMAF/DDv5yCIklo7s/O6B9nwMcMEWZVtdQCzzJ4z4ZqMk+7Cpit\nmp+s0nlV6bC3BHhCblwEXDQpWXX42b8CAKx+6P1nqqQSZhUx0cwWrTVAfQnQqwA6Wp5ZZZLGqQAC\nRrKKjhogSVYNgatrD0Cbc56sAmAkq/acnazS4eqP0c2rItIh6y+6OzFAFvDG5VUBdCar6jqzarq4\nup6u6sOtIsmqWdYAaYarAwZgvVxsQJbVJbjajR1k/uJvAUHA8d2P4tLdizoA1dP4YlgGK2sqA4e2\ndJXOrNIe1Bfj5xD0hVCo5Wa+lulEEbNqfQ6SVYB6CAIAjZ3ZQdabe7NPVgHA45uqWfXFm4Wp1jF7\nmVVmSTerPF7VKenJqiP3vG8txtTX21mYVd1KDdm/+jLAMFj+lm+Y+vvIsoTjCgGsW1MDpBWwXjj2\nlgDdIM+sMkmZfQ2uPoIJQpJVVNQA90YvAZIY9YaXrNK5Cw2H1wALzzgDrk40L4uA9VsErj4erwoA\nIlHjRJkWkRqgOAVgHTDMqtrN02ZVLJQAAwblegFdaTbvoUayis4aoODjIIZ9kCVFf1jb/o+fBhQF\ntXseghQMeRXAM4hUAWnjVp1MVrEMa3CrMl66aphkRdZrgGtzkKwCgOCaWv+ZFWRdarbQPi6C4bmB\nAz5mKRK7M2H80GoEsQCP3VILW/nJD3IIsyplosHv8aoGy7/kvhpgPJwCzwko1wtotqerox792VOQ\nW20k3vkQAsuTLwASFWo5SLKEWGgBPn66Q8RRIoeT1JlVBK6+QB9v1NP48swqk2QkqwbzqgAgFuDB\nswwqLQmtrr3A6FGzwl1ZwU5R/fCfd2YVYHAfGnvOrQG2j4uo39gBG/Qjcs0ZJ8rRBzXI+svXZ8rb\nmLWmSVaFItqJMk1rgJXpa4BAL2T9tFnFsTyiWh2PLPRZLZKsonEJkCieVG/ESvkG2vkS9j7zpwCA\n/UuPIhTxY/PKeAw0T6dF6yJg7xog0YbHrRpLmeIeWp0GEuE0omLC7suZiQzI+mySVc0DtW7oX06D\n4awF2Oufg5qBy7EM3qOtAj45xSpgtqolq0xkVulLgJ5ZdUpurAGyDKvzobLl6dJVh/9drQCunIFV\nBfTyqqxJVQG9NUB6Dk4BrwboFnlmlQlSFAWZfdWsSo+oATIMQw23iiSriAlzUrulJrqygpWID0HB\n3Ws544gk0JwMWC8++woAIPbgPWAF3uarGU++RBTB9VXIjRZq17ftvhzLNOkSINBzolxuTVV3sEJn\nrgFuELOqP1A/QaqAM6o6FWt0M6sAowpYKtRx+z//IeRGC7h2H1qJNO59aBWsBxadWsSsOtovQ7L5\ngKlXJ5NVALC5TBYBvWTVMM0Tr4pIvKCaVbNKVun3lxbzqgCjClurtCBL6mv08YvGKuAkn42Koliy\nBujVAAfLjTVAwOBWTVMFbBfKyD35FYBlsfSPvu5M10F+ftoiuDrQY1ZRlqzK57waoBvk3cGaoGq5\nhUa9g0BQQDQ+OoFEzKpjG6uAiqKguTd8DZDEpze8uU8AQOCc85NVxWecxasimocqIGE0TZKs8vl5\nCD4OnbaEdsv+1JkkyWjUO2AYYx1mUoUuDk5WAWq8HpgdZL1EzCpK1wABw6wqHJWx8xv/FQBw++Ij\nAOBVAM+oQFBAMh2C1JX1BLXdkmVFnwgP9yQYvUXA8TRPS4BEwQvqg2p9Z3qGziQaZ23aLHE8CzHk\ng6JAf108sBxGPMBjv9zCjePxa1jlloS2pEAUWIR85hzSNhsdVMveEuAgubEGCBgw88wUZlXmc09C\n6XSx8LWPnLlGmy0TXpV1ZlUgIIBhGbSaXWoOdZqNDhq1NniBu+Nz0pPz5JlVJojcwKZXImOtNRDI\n+nHdPge6U6xAqjfAhUXw0f4nPQavyqsAAkBgJQ2wLFqHOcht+5lj06io86qcsQRI5HazSmq00DrI\nguG5iZaTGIbRP4QrFHCryKlaMOQDO+XikZ6surUHRT590zNryDqpG1KdrNJqgJW/egqtzDGEzXWU\nUhewshbzGCkmiHCraKkC1qstKLKCYMgHjjdu41YXNiDwfmRKe6g26TDWaJSRrJofs0oHrN+alVk1\nG7g6UThGKvHq5yDHMvhaDbT+5Nb4r1t9CXBK5mI/eUuAw+XGGiDQk6wqTl69PfjvnwcArHzrPzjz\ndeTKWg0wZp1ZxbCMAVmnZBHQqACK3uvO4fLMKhM0LlydiIYaILmRCK4uDTTYtrVk1aaXrAIAsAKP\nwHIKUBSdx+AkyZ0uSs+/CgCIP+Iws+pBYla5MzFAOCLBtRWw/GT1TFIDqlHArapVz8arAgA+EoIv\nlYDcbPd9nSVmnqwia4CUJ6sUBfLn/xIAUH74PQDD4NrDXqrKDNHGrSK8qkj0ztcZx/J6te2WVwUc\nqJ3M/JlV/uUUGJ+Adq6Abm064PMkGmdt2kyRQ5veZdwnLmpm1QSrgJYuAXoHB31lJKty1OAMzFCa\nLAKWJ6vetrJ5HP/1s2B4Dovf/MSZr4OYVVbWAIHeKqD9B6cAUCAVwAWvAuh0eWaVCRoXrk60ELK/\nBjjOEuCWlqza9JJVugIa36vpwCpg5dW3IDWaEC+uwZdyFlQ2+sBVgGFQee0tyC06Tm3MVGOKJUCi\nsMatqpTtv0HQ4epT8qqIxItrAPpXAWefrHIAsyoZROhwG/zRAYT0Am5GNsDzLO5+wNqb03mRblZR\nsghI0iOh6OnP5k1tEXDbWwTsq2a7gaPiLjiWw7mFDbsvZ2ZiWLZnEdD6dFVjl9xjzihZpS/jGmbV\ntaUwkiKPw0obb+bGM+g8XtXsxYdEcCERcrONbrlq9+WYprSWZMpMmKw6+pMvArKM1Ne9A77EeCGI\nYcpqgPW0hckqAPQlq461JcCUtwTodHlmlQkyzKrx3lRShFllZ7Jqb/iNRL0t4bDShsAyOBfzzCoi\nAgttOBCyTiqATktVAQAfDiF8ZQNKp4vyK2/ZfTmmqzbFEiARSVb1nijbJVIDDEXOdqOvVwG3T5tV\nJFk1C8B6s11Hq9OEwPsR9NF7OheJBpB46yX1//ma90BhOVy+dwmBoHnpgHnWwmIYPj+HSrFJxeuM\nPJCfTFYBwMYigay7M4V6Vu0e34ACBecWNsFz8/X6EDVuVeO29ZB1owY4o2RV9M4aIKBVATfUg7kv\n3hxvFVBPVplYA8wdecmqUdLTVS6qAi6SZNWEzKoDbQVw+YwrgIDKJ9ZrgDNLVlFiVnlLgK6RZ1ad\nUa1mB6V8AxzPIpke7wWh1wBtTFY1Riy13CqqN8NrcT94r+ury0hWOdGsciZcnSj6oPoQ5kZuVWOK\nJUAio/5AQbJKi3+LZ0xW6ZD1m4OTVYUZJKv0JUAxORaP0C7JzSai2+rr4o3QBgAPrG6mWJahilul\nJ6v61G03lwhk3UtW9dM8VgCJgmsqQ2cWkHVSAwzOiFkVifU/tCFVwKe2xqsCEmbVogU1wJRnVg2U\nf1FNLrcy7lkEjIoJ+IUAaq0Kas3KWF/TPMyi8HcvgPX7sPRNj5/5GiqNItrdFkL+CES/tb9/1CWr\nvCVA18gzq86ozIH6BpRaCoMbcx48RUMNcARPYDuvwdU9XtUdcnKyqvC0alYlHGpWEch6+UX3mVW1\nKZYAiWhKVplWAxySrIrPMFnlBLg6ABz96ZNgO23UltZQD8QQiQVw4RK9jC0nSjerKKgCktd6pE/q\neS19GSzDYS+/jVbHejaR0zSPcHUicV01q6yGrHerNXTLVbABH4SFuKU/iyg04NDm3qUQUqKATLWD\n17P1kd/HYFaZk6zSlwB5FlHvfnqg/Ivug6wzDIN0VIOsj5muOvyjLwCKgvR73wU+cnaThfxcK+Hq\nROSQskYBs0pRFOR7AOuenC3PrDqjshNWAAEgKRpmlV0wwVHMqq2CBldPeh+uvSL/vhoOY1Y1D7No\n7h6CC4sIX92w+3KmUuxt7l0E1JNVUzCrIjGKklUVk2qAWsKs1pdZpZowpfoxZMXaieSSlqyKUwxX\nB4D9//JnAIDi5QcBANfetjr1GqOn/iLcqgMaklXlwckqH+/H+dQmFEXGTtZ9lemz6pb272Qezarg\nhdkwq5p72mHoyuLMEqkR7dCmUrrz0IZlGHxtD2h9lAizKmVSsiqfVVNVycWw9548RG6sAQJAWlsE\nzJTG41YdkgrgB85eAQQMuLvVFUCArhpgrdJCpy0hEBQQFM2r9HqyR55ZdUYdTbgECABBgUPIx6Ej\nKSi3JKsubagao8yqvAdX76cgqQE6LFll8KqugeE4m69mOkXuvQyG51B98xa6tdEnpE6R3OmicfsQ\nYBj9YWIShSL0JKvICsyZk1WbRrJKke80pHy8H6FAFJIsoVK31jjQlwApTlY19zM4/utnAEFAaeNe\nAMA1rwJoulbWYgCAw70ypK61Juko6cmqPoB1ANhYItwq9xn7Z5GiKD3Jqss2X83sFVxX3xfqFier\nGjqvajYVQMAYGqlVTh/afN1FlVv11FYR8pADYllR9JVus5hVBq/KqyINk3+RmFXuqQEChllFIOfD\n1Lh9gOIzL4MLBpB+37tN+fk5AlePLpvy/YaJphqgUQH0UlVukGdWnVHZCZcAieyErCuShJY2CR9Y\nSZ/+c0XBtpas8mqAd4qYVY29I0dN7Ba1CmD8UWdWAAGAC/gRuecSIMsof/W63Zdjmpp7h1AkCYHV\nRXCByU0ewqyqVduQZXt/J81iVgnRMHwLcciNVt+T1sSMFgGNGiC9yar9//rngKIg9O63Q/YHcH4j\n4U01W6Cg6EMyFYLUlZE5HI8/YpVIsio8yKxa9LhV/ZSvZlBrlhEOxJAIn773cbt0wPrOgaX3Lzpm\n4pz1D8hEgaAAjmfRanbRbnfv+LO70yIWwwJytQ5ey9QGfo9io4uurCDi5xDgzXk88nhV48m/pNUA\nM+5KVi3qZtXoZNXhZ78AAEh/47vBh8x59iJwdWKaWSly39egIFlFlgA9XpU75JlVZ5DUlZHLVAEG\nSC9PZlYthAhkffYv6lYmD0WS4Esl+j4cFxpdlJpdhHwc0iZCJt0gPhICH4tAbrTQyZfsvpyxVSBw\n9UedtwTYq+hD7qsC6kuA69OlYTiehRjyQZEVPdlkl8yqAQI96ap+VUCNW1WwmFtFzDBazSpFUbD3\nmc8BAK7+wLfhvd9yD775Qw/YfFXu1coFNV11sDPespgV6nT+f/beNEaS80DTeyMir8g7K4+6q7t5\niRQpUZRIaaSVKFHiiNQxolYSy/YCCyz8wycMAwYMLwwY8BqGAcNY2DDWAxswFvAaWAPFkVbHjKSR\nqIM6RxIpkZR4iEdXdVXXlfcZecXhHxFfRHZ3HZkZXxyZ+T3AQIPuqsxgd2dFxBvvoaDXHYIXOIjR\ns8/P15b1n5NsEfBWrHL1e3w9mOAUwXQSgWQcitTFsOKcK5XEAMVz1qadgOO4c8dGOI7D49d0d9UL\n18//7yYRQFp9VYAlVmWXJ7tHWDTmNQZYSOvXdcUxOqvICuDqM09Se/9SU0+BuBEDjBluRD90VpG+\nqiUmVs0FTKyyQaXYhqpoyGSjCIUDE31v1kNnVddYsrssAng1E1nIC7rLmLWSdaXX151IHIf0Bx/0\n+nBskZrDRUBrCXD66FY86X1v1XCoYNCXwQscIqJ9kTt6bRMA0Nk9uOP30m45q4wYYDrqzxhg85U3\n0Xl7D6FcBvknPoJHPnoFKeaGdYw1HywCdoirKhEGd04HzpWC3sd0UH4XsuLdkIvfMCOAhcXrqyKQ\nknUnFwF7HsQAgZGxkcadkfjRVcDzooClNilXp7kEqN80sxjgxZgxwDlaAwSAvCESXVaw3tm9iear\nb0KIR5H79F9Qe/+yi51V4kgM0OvkCVsCnC+YWGWD0ynK1QkkBlj2YBHQeup1zhIgKVdnNz1nEiG9\nVTNSst7841vQBkPE33MNwdRsP92zFgHnxzFgZwmQ4IdFwNG+Khoi90XOqoxLziq/xwAPn9NdVatf\n+Sz44GQPTBiTs7aluzO8FKvIZ/y8CCAARMNxrGS2ICtD3Cxfd+vQfM/+AperE8QtYxHQUbHq4rVp\npzAf2pzRW3VfLorleAhVScZrp2dHAU1nFaW+qn5viFajh0CARyrDunMuwooBVj0+ErrkR5xVFwk4\nJ996HgCw/PTjU9VBnIfZWeXCGmAwKCAUFqAqGvo9+fJvcJAaWwKcK5hYZYPSFOXqBBIDrHgiVl1c\nrr5XM5xVrFz9TGbNWWX1Vc12BBAA4u+5C3wkBGn3Job1pteHQwU7S4AEcpHe8tBZRSKAUUoX+sRp\ndmYM0DVnlR5JSPnQWaUOhjj+d/oF7vqzT3t8NItBdjmOYEhAs97zTBi2+qouvqExe6uKrLeKQJxV\nV5hY5WjJunfOKuIwvvOzyXGc6a46bxWw1KHrrCKuqqV8jC0BXkIwkwQXCkJutqF0vY+R0SIeSSIa\njqM/7KLVPf8hB4kArjxDZwUQAKR+C51+C6FAGAkxTe11LyIa0z+DXpasq6qGelV3VqWzTKyaB5hY\nZYPilOXqgDWL60UM8LILid2q4axaYs6qsyAiH4lT+p36S8YS4AyXqxP4YADJh+4DADTmxF0l7RKx\naradVaSnIJag81QwZsQAPXVWdfzrrCr/5B8wrNYRv/8uJIzPBMNZeJ7D6obRW3XgTWdhu2U4qxIX\nP0y6tkIWAefj56RdhvIAR9U9cOCwkbvL68PxDKtk3RmxStM0071/3gNRp7BigGeLHZ80VgF/vluH\ncsYYCe3OKquvipWrXwbHcQjn9YdCcxcFNEvWz/7Mtf+8i/Yb7yKYTiD3yQ9Te99Sw+qrcqvShTys\nlDwsWW/Wu1AVDYlUBKEQc5zPA0ysmhJN1UbEqimcVR7GALuGs0o8Y6lFUTXcqFmdVYw7IYuAvZv+\njwFqmmY6qzKPzb5YBQBJ0ls1B2KVpqqQ9uk5q7zsrCKT4TGbS4AEIt5JuzfvsM+74azqD7voDSUE\nhCCiYf/dbJBi9fVnP8e6BV1kbcvb3irinoynxnRWMbEKAHBU3YOiKljJbCEcXNwHcVYM8NiR1x/W\nW1C6PQjxKIJJd39uJohY1Tr7oc09WRFryRBqXRl/Omnf8fuks6oQp+OsKp/q6YssWwIcCzMKOG8l\n64ZYVTxnEZC4qpY//ynwIXp9adYSoPMRQIIlVnl3LWpGAJmram5gYtWUNGpdDPoKYonwVE6CXFT/\nQHvirDKfet3prDpp9dFXNORiQSQmLI1fFCIbsxMD7O4fo1+sILiUQvSuTa8Phwpmb9UclKz3T8pQ\newOEsmkEEtMXQfrBWUWepNFyVgXTSQSXUlC6PfRPbxWlyBpg3UFnlemqii75Tgwa1Joo/vCXAM9j\n9auf9fpwFopVj8WqTnNMZ9WyLurvFd+CqiqOH5ffuWGWq9/j8ZF4i3jF2Rggce6LLvdVAUDskoc2\nl60C0ndW6TfNOSZWjYW1CDhvzir9wVupcadArGkaTr6tx/lpRgABoETEquQa1de9iGjMe2eV1VfF\nytXnBSZWTYmdCCAApMUAeA6o92QMFZXmoV1K74I1wF2jXJ25qs5HnKGCdTMC+KGHfHfDPS1ErJqH\nRUDJXAKc3lUFjDxR9oGzilZnFXB+yXrGcFbVOmXHVmf8XK5+8u0fQRsMkX38UURW8l4fzkJBnFWn\nhw0osrvnbmD8zqpkNIOlxDL6wy5Oancuai4a+0VDrFrgvirg1usXVaZfgnzRw1CnIefB1gUPbUhv\n1c/3bo0CKqpmdshmqXVWGTFAJlaNhbkIOGfOKuJsOstZ1XrtbXTe2Ucom8bSP/og1fcl5eq51J0p\nGqeIxr3vrKqaS4DMWTUvMLFqSopH00cAAUDgOWSMefeq5N5qgtLtY1CpgwsIZj58lL2qHgFkS4Dn\nEy5kwQUDGJRrvi+CNMvV5yQCCACxu7cgxKPoHRXRL872RY1EYQkQGH2i7IPOKkoxQACImWLVrRd5\nYjiGcFDEUO5D6t8Z56CBn8vVj56zIoAMdxGjIWSyUciyitJJy/X3Jzfi8dTlD5QsdxUrWSfl6lv5\nxXZWCZEwwqt5aIpiCks08apcHbDOg51mH9oZnVQAcNeSiI1UGI2ejFePrXNHtTuEqgHpSAAhwf6t\nUb8no9XoQQjwSC2xm+ZxsBYBZ/u67nYKprPqTjejGQH84hPgA3TTLCQGmEu6GANkziqGAzCxakqK\nx9MvARJyHiwC9o6Np16rBXCCcMfvE2cVK1c/H47nzQsxcmHmV+ovGn1Vc1CuTuB4Hqn3G71VL892\nH4tEYQkQAMRoEEKAR78nYzjwJvJjdlZRigECQNQoWe/s3ukMyTjcW1U3YoBpnzmrOtcPUH/xTxBi\nURSeftzrw1lIvIoCapqGDnFWjfE5I71VrGR9VKxabGcVAERJb9UB/Sgg6USNeBADDAYFRMQgVFWD\nJJ19s6xHAfXP709HVgFJX1WeUl8VcVWxJcDxmd8YoC4W3S5WaZqGk2/qEcDVZ56k/r5WDND9zqqO\nHzqrmFg1NzCxakrsxgCB0ZJ19xRo86nXORbtXeKsWmIxwIsg5fR+7q2SOxJar78LThDMUvJ5YV6i\ngCTeZtdZxXGcefPqlbvK6qxyPgYIWL1VtXaJ2vuN0pAMZ5XPxKqj574PAFj54qcQiLGHCl7gVcl6\nrzuELKsIhQMIjdEpaTqrThfbWdWUaqh3KogEo+Yy1yLjZMm6l84qYLyxEb9JT/IAACAASURBVLIK\n+Mu9OmTDgeXUEiDrqxofMwY4t86qY6iaFR1v/OENdA+OEV7JIfOR91N/XysG6L5Y1fUoBigPFTQb\nPXA8hxRLCM0NTKyaAqk9QLvZRzAkIG3D3kvEKjdL1rs3iVh151OvvqziqNkHzwGbY0QMFhny5+fn\n3qrGH96ApihIPHjv3N3UmouAsy5W3aDTWQV4uwioaZojMUDiOCNxyVEycb2ryamSdTMGGPNPDFBT\nVRz9jS5WrbEIoGeYYtWBu2LVuH1VhKvLlrPKqW63WYC4qjbz94Dn2GWvuKXfvJLzD02szir3nVXA\neGMjVzMRbKUjaPYVvHykpyRKbbpiVZn0VS0zsWpc5nUNMBKKIiGmMVQGqLet/7aTbxnF6n/16TOT\nLnYYDHtoSFUIvGC60N0gGjM6qzyKAdarEqAB6YwIgUKcl+EP2N/kFIy6qjgb9l5PYoBHxoXEGRbt\n/XoPqgasJ8MIBdg/jYsgJaXdA/86q0gEMP3YQx4fCX3MRcBX3pjZmzBN0yxn1RV7zirA20XAQV+B\nPFQRCAoIhuhddMXuMsSq6zfv+HtOj5SsO0HdXAP0j7Oq9ptX0D04RmR9GUsfe8Trw1lYcoU4giEB\nzVrXjL+6Aflsk8/6ZWQTy0iIabR7DVRa/j1XOc1+6R0AwBUWAQQwEgN0xFlFrjE9dlY1zj8Pchxn\nFq2/YEQBSx1nYoCsXH185jUGCMB0dJaaehRQU1Ucf1vvq6K9AggA5ab+8z6bWAHP0xXCLoI4q7wq\nWK+Z5eosAjhPMEViCiyxavq+KmAkBuiis4osAYpnPPXaq5EI4Hy5cJwgsqH/+XV97Kyqv2gsAT46\nf2KVuLWK4FIKg0odPR9HMS9iWG1AbnUQSMQQzKZtvx65SG954KwyXVWJENXVyWA6iWAmCUXqYlCq\n3vJ7GTMG6JCzSvKfs4pEANe+9hQ4np2+vYIXeKxspAC4665qtyZzVnEcd4u7alEx+6oKi12uThCv\n6DfO0g26nVWaqpq9qKIHnVXAyEObS0Rk0lv1qxsNDBXVEqtoxQBPWQxwUsK5DMDzGFTqUIfuDU+5\nQYGIVXXdzVj/3R/RPy4hsrGC9IfoX6ObfVUuRgABQBSD4HgOve7Qk7XcqtlXxUYN5gl2tTsFxSP7\n5erASAzQJ86q3ar+JOoqE6suxZp/9qdQoqkq6i/pYtU8lasTOI5DasajgKNLgDQEHnKR3mm576yS\nWvQjgAQzCnhbbxXprHIuBuivgnWl2zefxK597WmPj4bhRW9VuzGZWAWw3ioA2C+ycvVRLGcVXbFq\nUK5BG8oILqUgRL2pkhg3Dn8lI+JqJoJWX8EfjlpmZ1UhZt9ZxZYAp4MTBISMB3e3P5yadfKkt8oQ\nkcgK4OqXPkP1AR/BiyVAAOB4zloE9MBdZZarZ5mzap5gYtUU0ChXB7yJAZLOKnHjAmdVhvVVXQbp\nY/BrwXrn3X0Ma02EV3KIGMLavGGWrL8ym44BWkuABNNZ1fDCWWWUqzshVhlRwM71WxcBMw7HAM3O\nqqg/nFXFv/8ZlLaE1CPvRfzeq14fzsJDxKpjN8UqQ4iOJ8Y/R18t6GLVojqrFFXGQeU6AGArz5xV\nABBeyYELBTEo1yB3utRet3fobbk6ACSMhzatMeLwpGj9het1q2A9bt9ZVS2xJcBpmdcoIHE4FeuH\n0BQFJ9/5MQBg5cv0VwABKwbotlgFwGOxisUA5xEmVk3IYCCjWu6A5zlkl+2KVfoHutwZutK7o2na\nhX0CxFnFYoCXQ9YAe0dFaKr7VtfLqP/OiAB+6CFHntr4gVlfBCROIdHmEiDBy84q0tsTpbgESDiv\nZN1JZ9VA7qM76EDgA4hF7DloaXG4w4rV/cTqhi5WnRw2oCjunAMmLVgHmLPqpHaAodxHLrmKaNje\nNdu8wPE8xE39Jpamu6p7gXPfLchnozNGHJ5EAX+5V0dNksFzVuLBDmUjApjNswjgpIQLRsn6nC4C\nFhtHqP76DxiUqohe20Dyffc58n6lhjcxQGCkt6rt/oPTGosBziVMrJqQ8kkb0PTSxIDNEvJokEc4\nwKMnq5CGzl/syo0WlI4EIRZFIHXrRVuzJ6MiDREO8Fhx4IZz3hDEMELZNLSh7MuTav0lUq4+fxFA\nAlkEbL7ypi8Fw8sgzqoYhSVAwHqi7IlY5cASIIH8+Ui7ty5XEWdV3QFnVcMsV1/yhdjbL1ZQ/ulv\nwAUDWHWgjJUxOdF4COlsFPJQRemk5cp7ks92YoK13uXMBsRQDNV20fx3vUiYfVXMVXULUWMRsHtA\nr2S9d2Q49z10Vk3y0GYzHcFdSyKkoQoNwJIYhEDBCUXK1XNsCXBiiLOqN2eLgIWRgnUSAVx5xpkI\nIHkfAMgl3U9WeOWs6nWHkDoDBIK8eT3MmA+YWDUhJAKYtxkBBPTenZxZsu78h3rUVXX7D8i9mtFX\nlYmA98HN2SwQIe4qH5asE2dVZo7FqshKHuGVHORW544+o1mAOIVECkuAABAjXR2tvusLiWSmOJZw\nIga4qb/H7q0xwFgkiaAQQnfQQW9AL8oC+K9c/egbPwBUFfknP2Z2ejC8x+3eKuKsmuRzxnM8rhT0\np/d7xcWLApIlQNZXdSviFilZP7zkK8end2hcY657J1ZFYyHwPIeuNIQ8VC79erIKCFjVHHYpsyXA\nqZnXGGDOcDhVmic4/js9Arj6jDMRQAAoN7zprAJGnVXuilW1ihEBzMbAsfjtXMHEqgkpHuli1bLN\ncnWCm71V4/RVXWV9VWMjbupiVffAX71Vw3oT7bd2wYWCSD7kjMXYL8xyFJC2syoYFBARg1AVDV0X\nF0YBKwYYo9D3cTskBtjZvXmLCMdxHFJG+Tltd5XprPJJuTpZAVxnEUBfsbbpXm+Vqqh6rIKbXBRe\n5EVAVq5+NlbJOk1nlfcxQI7nzM/HZYuAAPD4tYz5/9PoqwIsZ1WWOasmZl5jgKFAGJlYDoqqoDFs\nIn7fNSQeuNuR95KVIartEjhw3jirDIe922JVnUUA5xYmVk1I8Vi3+9NwVgHAkumscv7mkli0z+6r\nMsrVWV/V2JCSdb85q+q/fx0AkHr4fvDh+Y50zqpYJbc7GJRr4MMhhFdy1F7XWkJyNwpoxgAdcFYF\nM0kEUgkobQmDcu2W38sYvVU1yr1VpFzdD0uAzdfeRuu1txHMJJH/zEe9PhzGCKvEWXXgvFjVaQ+g\nabpzRBAmu3Rb5N6q/bLurLpSYGLVKOIV+ouAF11jusm4i4AAsJ4K456sft2bp+CsGvRltOr6EmA6\nw66nJ8VyVs2XWAUA+bTuom+nNKw4GOevtkvQNBWZeB4BgY5bcBKsGKC7nVVVU6xi5erzBhOrJkBV\nVJSNborCKiVnVdRFZxVZalm/U2k3y9XZyXVsRGNlr+s3sep3Rl/Vo/MbASSQ3qpZWwQ0lwCvrIPj\n6f0YjifHf6JME7Ng3YHOKo7jRnqrbitZN3urSlTfsyFZnVVeQ1xVq888Offi86yRX44jGBLQqHZN\nwdYpzL6qKbo4FnURUOq3UGocISiEsJLZ9PpwfIUVA6QpVnnvrAImHxv58oN5AMDDFB5CE1fVUi4G\nfkJRmTG/MUAAyMX1z0Ur6axYZUYAPShXBzyMAbIlwLmF/SSdgGpZgiyrSGZEREQ6arWbMcDznnpp\nmmbFAJdYDHBciLOqe9NfMcD6i0SsesjjI3Ge1MO6s6r5xz9DlWWPj2Z8aC8BErxYBNRUzSzSdCIG\nCADRc8Qqp5xV9Q7prPLWWaXKMo6/8QMAwNo2iwD6DV7gsbKeAuB8FJAI0LEJlgAJ69mrCAohnNZv\nQuq7UwbvBw5K7wIANnJ3QeADHh+NvzAL1vePqXQcqrKM3kkZ4DhEVvO2X88OkzqMP3tfFt/+Zw/j\no1dStt+b9VXZg8QAB6X5G4OI1/TP2eDeDOL3XHHsfcpN0lflfgQQ8C4GWKvozqolFgOcO5hYNQGk\nXL1AKQIIANmYizHAw7M7q4rtIaShilQkgAwlEW4RIM4qP8UANUUxY4CLIFaFllIQr6xB7fbReWvP\n68MZG9NZdc0ZsarVcE+s6vWGUBUN4UgAgaDgyHtEr+muiM5tJetphxYBSQzQa2dV5Wcvol+sIHr3\nFlKPvNfTY2GcjVsl6+3G9M6qgBDEprGGt3f6FtXj8jM3Sqyv6jyCaSNeLXXviFdPQ/+0Aqgqwvkl\n8CFvryOthzbjux0jNte9CRUmVtkiXNDPuf1iZSZXni9CeF2/V5Dvo1f9cBalhu6WzHtQrg54swao\naRpqRgwwnWXOqnmDiVUTYIlVdCKAAJB1MQZoLrXcZtEmrqprzFU1EaIPnVWtN69D6UgQt9YQWXb2\nhOgXiLuq8fLsRFzIEmD0Cp1ydULc6IzquBgDtMrV6UcACUTUuyMGaDir6tQ7q0jBurdi1dFz3wMA\nrD/7tGMT1wx7uNVbZTqrpuyFM3uriovTW7XPxKoLMd1VB/ZL1slDO6/7qgBL0HW7uxEAKqe6WJVj\n5epTIUTCCKYT0GQFw2rD68OhhiL1gF/rTs/OkrO33qWmfk/ixRIgMCJWtd1bppbaAwz6CiJiEGKU\nmS7mDSZWTUDxyOirorQECAC5qP6hrjjsrNIUBb1jQ6xavfViYpeIVayvaiKC2TR4MQy50YLc6nh9\nOABG+6rm31VFmMWSdcecVSnDWTXBE2W7EKt3NOFcn5IVA7x1Zj1jOKtqtJ1VkvcxQLnVwen3XgAA\nrH31Kc+Og3Exq5t6dOjkZhOq4pwTwOysSk33UOlqYfEWAfdLern6FitXPxOrt+rwkq+8HLNmYt3b\nvipgsoJ12ljOKubumJZ5XAQs/ehXiBb1+7xyz9k+LjMG6FFnVTAkIBgSoCgaBn136jmqI0uA7MHe\n/MHEqjHRNA0lB2KAS1G9R6HaHUJRnVOg+6UqNFlBKJuGIN76ZJaUq19lS4ATwXGc79xV9Rf/BGAx\nytUJMy1WXaXsrPJgDdANZ1XMiAFKuwe3PKlz3FnlYQzw5Ds/gdobYOljH4S46c1FJ+NyYvEw0ktR\nyEMFpRPn+qDIjXd8is4qALi2QhYBF0OsUjUVB0Ssyt3j8dH4EyJWdfdpOKuIc997ZxX5jLRcdlYN\n+jKa9R4EgUN6ifXmTAspWe/NUcn68TefR6wFcOBQaxUhK84ZFEjBeiG15th7XAYpWe+41FtVY0uA\ncw0Tq8ak3eyjKw0REYNTP9k8i6DAIxUJQNWAetc5Bbp3wRLgXpU4q1gMcFLIU0S/9FaRcvXMY4vj\nrEq+/z6A49B64x2ofXcLHadB6fXROyqCEwSz94wWZvzBxc4qsoLmpFgVXEohkIxDbnUwrFhxq4wD\nnVVDeYBOvwWeExAX7RfuTsuhEQFce/Zpz46BMR5u9FaZYlViuvP0Vu4e8JyAw8oeBkP341FuU24c\nozvoIBXLeh7n9StWybr9RcDuOQM+XkA6qzpN92JIgOWqyuTZEqAdrEXA+XBWye0OSj/6FXiVw1Is\nDw0ayk1nHnCrmopyS3/tbMKbgnXAuh50q2TdXAJkfVVzCftpOibFI8NVtZakbjF0YxHQfOq1fuuF\nhKxqOGjoF8FXmFg1MURs6PpArOqXqpD2DiFERcQfuNvrw3GNQDyG2D1XoA1ltF5/x+vDuZTu/jGg\naYhsLIMP0l2oEmMhcDyHrjSELLtTTtppGUuADsYAOY4zXWidPau3KhnNgON4tLoNak8qGxJxVWXA\nc96cIqX9Y9R+/QfwYhgrX3zCk2NgjA+JAh4fONexQtyS8dR0onAoGMF69ipUTcF+2f8/J+1iRgDz\nzFV1HuIVowvwhn2xqnd0dieqF4TCAYTCAmRZRa/rfB8sgYhVOVaubot5iwEWf/BLqL0BMh95GIUl\n3SVOStBp0+hUICtDJMQ0IiHv0jKjvVVuQJYAM2wJcC5hYtWYOLEESMgZZXBlyTkFunuoK+3ibX0C\nNxs9yKqG1UQIokNLXvMMcar5IQZYf0mPAKYeeQB8YLFmumcpCmj1VdGNAAIAz3MjJevuuCeIsyo6\nZfHzuETvMnqrrltiFc8LSBtRPVruKqtc3bu+quOvfx8AsPy5TyKQYE8K/Y7TzqrBQEa/J0MI8IjY\nWOy9apSs757MfxSQlatfjmg6q+jFAG9fm/aKaRYB7VJmS4BUsJxV8xEDPP7m8wCAlS99BnmjR6rY\nsN8TdxbEseXVEiCBxADdWgQkzqolFgOcS5hYNSZOlKsTlohY5WDJ+nlPvVhflT2Is8oPMUCzXP2x\nxemrIqQe1m/CZkOsIkuAdMvVCW6Xy0ouxAABIGaWrJ+9CFij1Ftllat7Ex3SNA2Hz+liFYsAzgb5\nlQQCQQH1qmSKtzTpmBHAsC1nNylZX4RFQCJWXWFi1bmIGysAx6F3eApVtldDYRas+8BZBYyKVe5F\nXitF3d3BxCp7zFMMcNhoofyTfwB4Hit/9QQKKf26r+iQs4o4trwqVydYzirnxSpV1VA3nFXpLHNW\nzSNMrBoTR51VrsQAz15qYX1V9oj4qGCdlKtnFqhcnZB6xHBWveJ/x4CTzirA6rRxS6wyY4Bx52KA\ngFVGL+3dJlZR7q3y2lnV+P1rkK4fILycQ/YTj3pyDIzJ4AUeKxv6gywnooB2y9UJ14izagFK1pmz\n6nKESBjhlZy+Fm04o6ZB7Q8wKNfABQSEC/7oB/NiEbByqj/Uzi0zscoO8xQDPP3ez6ANZSx97BGE\nC1mz9NypGGCJLAF67qxyr7OqWe9CUTTEk2GEwouVKlkUmFg1Br3uEI1aF4EA74jFkMQAKw46q7qm\nWHVrZ9VuzRCrmLNqKojl3WtnlToYmq6i1IcWp1ydkHjwXnABAe239iB3ul4fzoUQZ1D0qtPOKpdi\ngGQN0PEYoN710Ll+cMuvZ5xyVkW9EasOd/Ri9dWvfHbh4ryzzNqmHgU8diAKaPZVJe09VLq6fB8A\n4KD0jqNrVF7TH3ZxXDsAzwlYz17z+nB8TZQsAh5Mf/PcO9aFrvByDpzgjzoJt8+DbAmQHvMUAzz5\nlh4BXP3ykwCAvMNiFVkCzCW9K1cHRmOAzovF5hIgK1efW5hYNQalY+NpyUrCkYWPbIx0VjnvrBJv\nWwMkMcBrGSZWTUNktaDb6I9LUIfOrTleRvNPb0PtDxC79wpCGfpRVb8jRMJIPHA3oKpo/tHfERfp\nhuGsuuqQs8pYK3VjtltVNXSlAcDp5e5OQsQ9affmLQtPprOKklhV71SM13XfIaD2B+bF7fr251x/\nf8b0ONlb1W7RcVZFwwkspzcwVAY4rOxRODJ/crO8C01TsZa9imDA2Z9Ls45oiFV2Sta75oCPPyKA\ngPudVZWSccPMlgBtY4pVxYqra460GVTqqPzsRXABAcuf/xQAS6xyKgZYNpxVxMHlFW7GAM0lQFau\nPrewn6hj4GQEEACyDjurlF7/TIu2NFBw2h4gyHNYn3JhaNHhQ0H9xKqq6J+UPDuO+otGX9UCRgAJ\nSaO3qunjKKAqy+ZMuGOdVaRg3YWL9G5nAE0DxGgIgsMX6KFcBkI8CrnZxrDWNH+ddFZRjwFG3Rer\nis//CsN6C4mH7tXFV8bMsGqIVcc3G1AVukuctJxVAHB1mfRW+ffnpF2sCCBbArwMq2TdhrPK7Ksq\nXPKV7pFwubOKLAFm8ywCaBchFoUgRqB2+5BbHa8PZ2pOv/tTaIqC7CceQ2hJX4xdiuch8AE0OhUM\nhvT/bZaMgnXvY4DuFaybzipWrj63MLFqDCyxyhnHSs5QoJ3qrOod6yJKeCV/i0X7Rl3/QbmZjkDg\npy9tXXRIyXrXwyigWa7+6OJFAAmzsAjYOyxCkxWEV/MQRGcEYnJD64azyowAOtxXBQAcxyFmRAGl\nXSsKSD0G2CEF6+7HAI+e0yOA688yV9WsEYuHkVoSIQ8VlE7bVF+71aDjrAIWo7eKiVXjQx6a2HFW\nkQEf0Sfl6oD7nVUV4zPP+qrsw3HcXEQByQogiQAC+oIxieiRfilaaJpmxQC9Llh3sbOqZpSrsyXA\n+YWJVWPg5BIgACTDAoI8h/ZAQU+m+0QWGI0A3r4ESPqqWLm6HYj1vedhyXr9pcUtVyfMgljl9BIg\n4O5FOlk+c7qvimCWrI8sAlIvWJdIwbq7zqpBpY7S878CJwhY/cd/6ep7M+jgVG9Vp2U4qxIUnFUF\nXazaO/V3XNoOrFx9fCxn1fQ3zqSc3U/OKjcf2gAjziq2BEiF8LJRsj6ji4D9YgXVX78MLhRE4XOP\n3/J75iJg/ZDqe3Z6TfSGEsRQDLGwM0mgcRHFIDhO73xWHLivHaXKYoBzDxOrLkGWVf0kxAG5FWdO\nQhzHYcmMAtJXoc9bAmR9VXTw2lnVPTxF76iIQCqB2L1XPDkGPxB/z13gIyFIuzcxrDcv/wYPcHoJ\nELi1q8PpvodOmywBuiRW3aX/uXWuW2IVcVbR6qyyYoDuOquOv/k8NFlB7lMfRrjgTbk7wx4kCnh0\nQFesapE1QApxfTMGePpnqJqzNxFeoGkaE6smwCxYpxEDXPePWBWLh8BxegxJoRzLPYsyE6uoQs6B\ns7oIePKdnwCqivwTH0Eweeu/ibzheio16fZWkdL2XHIFHOdtWobjObPHtCs5566SZRXNehcczyGV\nYWLVvMLEqkuonLagqhqWsjGEQs4tM+WMknUnooDn9QnsGUuAV5mzyhYRo7S+65GzyowAfvBBcPzi\nfqT5YACJB/Wbk8ar/nQNOL0ECADhSADBkAB5qKDfc7b0n8QAowl3SoxNZ9XeGc4qqQpVVWy9vqwM\n0e41wHE8EmLK1mtNCokArrEI4MziRMm6pmnoNOk5q9KxLDLxPHpDCae1m5d/w4xR75TR6jYQCyeQ\nTfgnluZXwis5cKEgBuUa5I401WuQGGDERzFAXuD1KJJmnaecYtCX0ax1wQsc0ll2w0yDWY8BHhtD\nKSsjEUBC3nRWURarmmQJ0NsIIMHsrXIwClivSIAGpDIihMDi3v/MO+xv9hKKxyQC6KylMmc4q8oO\nlKx3z4gBapo2EgNkzio7iBskBuiNs4pEANOPLW4EkOD3KKDTS4AEt8plJRIDdMlZFbt2ZwwwIASR\nEFPQNBVNqWbr9cn3J6MZ8Lx7E+ztt/bQePkNBBIxFJ76hGvvy6BLfiWBQJBHvSJRu0DvSkMoimaK\n0DSY596qUVeV1+6CWYDjeYib9qKA5BrTTzFAwL1IfLVkdeY4PTSyKFhi1ew5q7qHp6j/9lXwYhiF\nz378jt8nS320nVVlo1w973FfFSEaM3qrHCxZJ31VrFx9vmE/VS+heKTHifIOlasTlgxnVdkJZ9UZ\ns8LVroxmX0EsJJhCGWM6zBigx86qDBOrkHpYF6v8ugjohrMKcO8i3SpYdysGeGfBOgBk4nkAQM1m\nb5VZru7yEuDR33wfALDypU87VrzPcB5B4LGyrjvyjm/ScVeRVU8aS4CEq4X5XQTcL74DANgqsAjg\nuNiJAsodCXKjBT4cQiiXoX1otoi79NCGRQDpEy4YnVUzGAM8+c6PAQD5z3wMgdidTrs8EatoO6uM\ncvV8co3q604LGd4h3aZOQJYAl1hf1VzDxKpLIM6qZYfK1QlEMHIkBnhGZ9UecVVlIuzpo03MgvXD\nU8c7gm5H6fbR/NNbAM8j9cgDrr63H/Gzs0rTtBFnldNilTsX6WZnlUsxwFAuAyEWxbDewqBm9ZKZ\nUUCbvVV1D8rVNVU1xSoWAZx9VilHAUlBNI0lQMK1lfl1Vt1gS4ATQ0rWpSnEKvNh6Gred9eS1kMb\nZ8+DrFydPqazahbFqjNWAEchzqpig7aziiwBrlB93WlxIwZYM8rV01nmrJpnmFh1AZqqoXRCnFUO\nxwBJZxXlGKCmaSMWbUus2q3pJ++rLAJom2AqgUAiBkXqYlhvufrejVfegCYrSDxwNwJx9sM6ds8W\nhFgUvcNT9EtVrw/nFvqnZajdPoJLKQRTzv48cdtZFXXJWcVxHKLXjKn10UVAo2S91i7Zen3irCLi\nlxtUf/V79I6KELfWkPnw+117X4Yz0O6tIp8xmmLV6CKg2w9YnIaVq08OWaedJgZodaL6p6+KkBgZ\nG3GSyqkuVuWWmVhFi1ldA5RuHKLx8hsQYlHkP/OxM78mFcsiGAij3WtA6repvXfZb51VRsG6ozFA\n5qxaCJhYdQH1moRBX0E8GXY85pJ1qLNKbrahdCQIURHBtHWDPOqsYtjHdFfdnH7+eRrMcvVHH3L1\nff0Kx/NIvl+PuPjNXWUuATrcVwW4N9stubwGCACxa3dGATOGuGQ7BkicVS7GAA93DFfV155e6IGE\neWFtUxerTm42oFJYIWs1iLOK3rk6l1xBPJJCq1tHpeVN16ITyMoQh5VdcOCwmbvb68OZGUxn1Y0p\nnFVmubq/+qoAIObSQxvmrKLPrK4BHn/rRwCAwlMfPzfSz3Ec8oagRKJ7NCBiVd4vYpVxXeiks6pa\nZp1ViwC7Mr6A4pHuknG6rwoAslFdgaYdAzQvJNYLt1i0d2usXJ0mZm/VobsX/vUXmVh1O36NArrV\nVwVYLoyOgxfpsqyi1x3qE8Uu9t5FzyhZJ84q2zHAttFZ5VIMUO50cfq3PwEArD37tCvvyXCWWCKM\nVEbEcKCYXTZ2aDfpi1Ucx+HqstFbderP5dRpOKruQVFlFNLriITYk/ZxEW10VpnO/Q3/OqucfGgz\nGMhosCVA6gSXUuCCAciNFpSus2IjTU4Mseq8CCChkNavA0uNQyrv2xtIaHUbCAohJF2sMbgIKwbo\nzN9fvzeE1B4gEODNzzpjPmFi1QUUj/UI4LLDEUAAyBoxwKo0pGrLJ6Xfo31ViqrhBokBMmcVFcif\nr5sl65qmof6ivgTIytUtiFjV9JtY5dISIOCOs8paAgyB493rKiF/ftKeJVYRZ1XdtrOKiFVZW68z\nLsXvvQBF6iL92PvMpUPG7LO6SS8K2HYgBgjM5yLgfpFFAKchesUQOFOzGgAAIABJREFUq24cTXz9\naTmr/CdWufHQhiwBZrJsCZAmHMfNnLuq/fYeWq+9jUAyjtwnP3zh19LurSoZrqpscgU8549/h07H\nAM2+qlzU1WtQhvsEaLzI9va2AOC/AfDPAGwAOAXwHIB/sbOz0xnj+wsA/nsATwFYB7APYAfA/7Sz\nsyPROMZpIOXqbjirIgEe8ZCA9kBBoycjLdJxKpALCXHkQuKk1cdA0ZCLBREPU/knsPCIGyQG6J6z\nSto7xKBSRyiXgXjFebfOrJD6gH4T1nj5DWia5pvSVy+cVU7GH0i5ult9VYToXbqo07l+VmeV3TVA\nd2OAh899DwArVp831rbSePPVYxzt1/GBj2zZeq22A2uAwOgi4Pw4q/bLxhIgE6smIphKIJBKQG60\nMCjXEM6P//OPdFaJPowBuvHQhvVVOUe4kNX7R4sVU1D1M8RVtfy5x8GHLx6dIYt9JUpiVbnhrwgg\n4HzBeq1iCcWM+YaW/PpvoYtV/xrAVwD8SwD/FMB3t7e3L3yP7e3tHIB/APBlAP87gH8M4P8B8J8D\neN4QwjyheGQ4qxxeAiQQdxXNKOBZS4C7Vf3EfS3DIoC0iJAYoIvOqtG+Kr8IMn5A3FpDcCmFQaVu\n/vv3A2ZnlQsOmlgiDHC6+4lGb85ZSC3LWeUmZgxwxFmVpuasqhqv57yzqndcQuVnL4ILBbH6pU87\n/n4M9yAl68c0nFUkBphwxlm1N0/OqpIuVl0pMLFqUkx31cFkHTpW1YT/nFXhSACBII/hQEG/Jzvy\nHqyvyjnMRcBTe+d1N9A0zeyrWrkkAggA+bQzzqp8ykdiVczorOoMHBnyIM6qJdZXNffYttVsb29/\nBcDXAHx2Z2fnRyO//iMAvwfwnwH4Vxe8xH8LYBnAB3Z2dt42fu1729vbPwfwUwD/BMD/a/c4J6XT\n6qPT6iMUFpBySdTJRYO4UeuhIg1xN6V7JWupxXrqZfVVsQggLcR1XaxyUxyx+qpYBHAUjuOQevh+\nlH/yGzRefsPsE/Maq2DdeWeVIPCIxkKQ2gN02gMkUvQ/6x0SA6R8E30Z4UIWQlTEsNrAsN5EMJ1E\nhnRWdSq23HRkDdANZ9XR1/8e0DQUPvtxBNPuPBBhuEN+NYFAgEetIkHqDMw4xKQoigqpMwDH0ReF\nV5a2EA6KqLRO0ZRqSEYzVF/fC1gMcHrEzVU0X/0zpBuHSH/wwbG+R9M09A79W7DOcRziyQjqFQnt\nZg/hCH1BqczEKscIF2ZnEbD95nV03t5DcCmF7McfvfTrqTurfLYECADBkIBgSMBwoGDQlxGO0O02\nrZnl6qwrbt6h4az6jwD8dFSoAoCdnZ03APx/AP6TS77/dQD/9YhQRb7/ZwAOAXyEwjFODOmrKqwm\nXcvCOrEI2DViaaM37MRZdZU5q6hB/nzdFatYX9V5+K1kfVBrQm60IMSiCOXcuSm0ZrudiUB0Wu4v\nAQL6DcjtJevhoAgxFIOsDNHuNaZ6XUWV0e42wIFDIpqmdrxnoWkajnb0COD6NosAzhuCwGN5PQUA\nOD6Y3l3VafUBTY/a8pT7cHiOx9XCfQDmIwrY6tZRbRcRDkbM8mLG+Fgl6+M7q+RGC4rUhRCLIpD0\np1jjdCSexACZWEUf01lV9L+z6vibPwQALH/hU+CDl/tACmlLrKLhOio39FRHzkfOKsDZKCBbAlwc\nbF39GBG9jwP4u3O+5O8APGBE/c5kZ2fn/97Z2fnrc347DIDuPN6YWH1VzperE0gMkKZYddas8B5z\nVlEnvJwFFxDQL1ag9JxfLpFbHbTeeBdcMIDk++93/P1mjeTD+p9J8xV/RFxG+6rcimyaF+ktZ/49\nEmdV1OUYIGC50zqjJes2FwGbUg0aNCSiaQi8s11+zT++hfZbuwgupZF74i8cfS+GN9CIAlp9Vc4I\nwlfnqGSdRAA3c/f4pmB4lhgtWR+X0etLv1YRxBPOPbQZDGQ06l3wPMfcHQ5gxQD97azSNM1aAXzm\n8gggAMQjKYihGLqDztQP2EYxY4A+clYBzpWsa5pmxgBZZ9X8Y/eMvgogCuC8K50/A+AA3D3pC29v\nb38OQA7AC1MfnQ1IX1XBpb4qQI8BAvQ6qzRVRe/41qWWvqziqNkHzwGbaSZW0YITBERWdUGwd1xy\n/P3qv38N0DQkH7oPguius2UWMJ1Vr7wJTXWms2kSpBvulasTSLlsu+GUs8qbGCAARO/aBABIu9bs\nM+mtqk3ZW+VmufoRKVb/yl+O9RSWMXsQscrOIqDZV+XQLLfVWzX7zqr9EosA2oE4q6T98cWqrtmJ\n6r8IICGeIs4q+ufBaqkDaLqzgy0B0mdWYoDNV/8Mae8Q4UIWSx/9wFjfw3Gc2S9VakzWE3cWZSNO\n6KcYIGAN8NB2VkntgREtDECM0Y0XMvyH3Z+u5Kr+vKsx8usTNTBtb29nAPw1gDd2dna+OeWx2aJk\nOKsKLiwBEmgXrPdLVWhDGcGltClo7Nd7UDVgIxVBiJ1cqUIKRnsulKyTCGCaRQDPJLKSR3glB7nZ\nNl1NXkJEFXfFKmfjDxLprHI5BggAMRIDvH5g/lraprOqIRl9VQ6Xq6tDGcff+AEAtgI4z6xuGjHA\nmw2o6nQxD8edVcYi4Fw4q0hfFStXnwrTWTVBDPCstWm/kTAXAemfB1m5urNYMUB/i1XH33weALD8\nV0+AE8bfBMun9OvBYuPwkq+8mKE8QK1TBs8JWErkbb0WbUxnVZvu5682EgH0q6uTQQ+7akUCgAag\ne87vS8b/psZ9we3tbRHA3wJYgb4o6DqDvoxqpQNe4JBz8SSUi+ofaloxQNKfJG6MLgEaEcAMc1XR\nhvw5u7EISMrVM6xc/VxSRhSw4YMooJtLgASnZ7s7xpOyWMKLGOCdi4AZSs4qp5cAyz/5DQaVOuL3\nXUPy/e9x9L0Y3hFPRpBMRzAcKGavzaQQN0jCIWfVRu4uBIQgTmr7kPrTHaNfIDHArdw9Hh/JbCJu\nrAAch97hKVR5vOW8swZ8/AY5D3acEKuMz3VumYlVThAu+H8NUNM0nHx7sgggoZCiU7Jeaemfw6VE\n3vEKg0khwyAdys6qWoUtAS4SdsWqFvSY33lN3STEPVYgd3t7OwDg6wA+DOCf7uzs/N7m8U1F+bQF\naPrTEiHgnvuItrOKiFW39lUZ5epLrFydNhGjZN1psUpTVdRfeg0AkH70IUffa5bxU8k6EVW8cFZ1\nnOqsapHOKi9igLpY1bluiVW2nVUuxQDNCOCzT7MngnOOFQWsTfX9pG8u5pCzKiAEsZnTWxpuFN++\n5Kv9i6oqOCgbYlWeiVXTwIdDCK/koCmKufB3GdYSoH+dVeQ86MRDG+ascpZQPgNwHAaV+tgCqtvU\nX/oTeoeniKwVJr4ez1MSq6y+qjVbr+MEZsE65c6qKlsCXCjsKjFV43/Pm04ijqpxPZz/BsBnAfzH\nOzs7f2PnwOxwekQigO6VqwNAOhIAzwGNnoyBYr9nx+oTOMNZxcrVqSOSGKDDi4Dtt/YgN9uIrC/7\n+omm1yR9JFZ1ibPqqgfOKgc6qwZ9GcOBAiHAIxxx/0leeDkHXgxjWK1j2NB/XpvOqinFqrrhyHIy\nBjisN1H8wS8AjsPaV59y7H0Y/sAUq6ZcBCR9c045q4CR3qqi9w7UaTmtH2Ig97GUWEZcHNvIz7gN\nKwo43s3zTHRWJZ3rrCozscpR+EAAoWwa0DQMStMJ/k5zYkQAV770GXD8ZLfUxFlVtClWlY3OK78t\nAQJANOZMZ1WdlKszZ9VCYFesOoYeATwvy3A/9Jjg9cteaHt7+18B+PcA/Jc7Ozv/2uZx2aJ0bJSr\nu9hXBQACz2FJ1N1VVQruqrP6BHbJEmCGOatoQ5xVTotVJALIXFUXkzJWElt/fMvTp3JyR0K/WAEX\nCiKy6l6fgJOdVeTCIxYPeeIO4jhuJAqoC4Gms2raGKBkOKtizjmrTr7zY6j9AbKfeJQJzQvA6lYG\nwPQl620XRgyuLs9+bxUpV7/CXFW2EDcnK1mfhRhgzFgD7LQHU3fHncVwoKBRM5YAs8zd4RThZVKy\n7r8ooKYoOPnOTwAAq898ZuLvJ51Vdp1VZcNZlUuu2HodJ7CcVXSvQ6sjnVWM+ceWWLWzs6MA+AWA\nL5zzJV8A8ObOzs6F82jb29v/AsB/CuCf7+zs/B92jokGp0feiFUA3Shg7zZnVbMnoyrJiAR4LHvQ\nMzPviOvuxADrv2Ni1TiEsmmIW2tQuj103r7h2XGQKfDolbWJyjftEhGDEAI8Bn0Zgz5dsa7T9m4J\nkBAzFwH1kvVMXBcC7ccAnXNWHT73fQB6BJAx/xRWEggEeNTKErrS5E+Wzc6qlJPOKt2BOsuLgGwJ\nkA6TOKv0tWn90t7PMcBAgIcYDUJTNaolz9VS21oCdLEuZNEwe6t8WLJe+82r6J+WIV5ZM538k2Ct\nAR5B06YXUq0YoA+dVUSsouisUlUN9arhrGJC8UJA4yfs/wXgie3t7U+P/uL29vYDAP4DAP/nyK8l\njQL10a/7LwD8dwD+h52dnf+FwvHYQlVUlI3SxMKauzFAAMhFDbGKQsn67WLVnuGqupKJgGddKdQx\n1wCPitBU+zHO86i/pC8BsnL1yzF7q/7gXRSwY6wRRq+411cF6O4j011FubfKy74qAun/ImuPabsF\n6+YaoDPOKmnvJuq/fRVCVMTy5z/pyHsw/IUQ4LG8rj/0Oj4Yq7rTRBeZFQQcjtpu5e8Bx/G4Wb6O\ngexMv53TMLGKDuKW4ay6cblYNajUoQ2GCKYTCMT87dSPG2IvTZdxpag7O7IF5uxwEnMR0IfOKrIC\nuPrMk1M5zKPhOOKRFAZyH43O9GJcacFigK1GF4qsIp4MIxT2V6E8wxls/y3v7Ox8Y3t7+xsAvr69\nvf0/A3gZwL0A/jmAFwH8NQBsb29HAewCKAJ4wPi19wP43wC8AOCn29vbZ13B13d2dl6xe5zjUi13\noMgqUhkR4UjQrbc1Ic6qMgVnFekTIF1Ku1X9KS2LADpDICYiuJTCsNrAoFwznwjRZFCpo/POPngx\njMRD91F//Xkj9fD9OPn2j9B45Q1s/JMvenIMXQ+WAAmJZASNahftRo/qakpnJAboFeTPs7Nr/PmG\n4wgGwugPu+j2OxDDk/33Ou2sIq6q5S98CoEYexq4KKxupXF4o46j/Trues/4MWDiqoonI45GbcNB\nEetLV3Gzch0HpXdx9+p7HXsvp7hBxKoCE6vsIG7pN7vd/eNLv9Z6GOq/6NHtxJMRlI5bxmeKTqdZ\nuah3JbK+KmexxCp/OatUWcbp3+kRwJUpIoCEfGoV7V4DpeaxWWUwKVYM0H9iVSQaBMcBve4QiqJC\nEOx7ZGpGX1WauaoWBlre1X8fwL8E8B9CX/P7rwD8WwBPG1FBAJABHAHYH/m+jPG/jwP48Tn/979S\nOsaxKJJy9TX3I4AAkKXkrFL7AwxKVXCCYP6wN/uqWLm6YxBhsHvTmd4qsgKYevh+8EH2ROEy/FCy\n3jGXAN0Xq0hMzylnlZcxwOi1W2OAHMdZJesTuqtUVUGzq/cKJaPn7YVMj6ZpODLEqvXtz1F/fYZ/\nWdski4CT9VYRF0jcoSXAUWa5t6rb76BYP0RACGI1s+X14cw0xP3bvXF46deSTlQ/91UREg70N1ZO\nWbm6G4QLRmeVz2KA1V/+HoNKHbF7tpB47/RdeaS3qli//DN3FqqqoNrS7zf82FnF8xzEqP5Qs0tp\nEZD0VdF8AMvwN1Tudg1B6n80/u+8rxkAeN9tv/YCAPdKXMagaJarux8BBIAcJWdV71i/kAiv5Mye\nnD3DWXV1iTmrnCKysYLmH99C7+YJ8EH6T6jrL5G+KhYBHIfUw+8BOA6t19+B2h+AD7vvBLKWAN2N\nAQKj8Qe6S0ik+yPmYQwwZjirSAwQ0EvWi41D1NtlrC1dGfu1mt06NE1FQkwhINB31NZ/+yq6+0eI\nrBWw9LFHqL8+w7+QRcCTm3WoqgaeH88l5aZYdW35fvzi9e/N5CLgQfldAMBG9i5HPruLRHg5Cz4c\nwqBSh9yRLnSAdmegXJ1gPrSheB4kMcDcMhOrnMR0VvlMrCIRwJUpI4AEu4uA1XYJiqogHcsiFPDu\neuwiookQpM4AUntgrlTbocbK1RcO1gp4G0VSrj7jzqruofHUy3D6aJpmdlZdyzBnlVOYzqpDZ0rW\n678z+qoeY2LVOATiMcTuuQJtKKP1+jueHIPZWeVJDNC4SG9QdlYZMcCohzHA8EoOfCSEQbkGuaVf\nvJDeqkkXAZ2PAH4PALD61adcLdlneE88GUEiHcGgr6BiTN2PQ2skBug0Vwuz66wifVWbbAnQNhzP\nQ9w0hmIuiQL2brvG9DNkoKBFyVk1HCio1yRjCZDdMDuJtQboH7FKHQxx+t0XAOh9VXbIG2LVtIuA\nfo4AEszeKkrOKhIDZGLV4sDEqhE0TUPx2IgBerAECAA5wy5pdw2wd1tfVbE9hDRUkY4EkBbZ00en\niGzoF3rkz58mqiyj8YfXAQCpDz5I/fXnldTD9wMAGq+4fyOm9gd6XILnIW64b9EmN7otys4qP8QA\nOZ43o5VEEMwYnQ+1CRcBnSxXV7p9nHz7xwCA9a+xFcBFZJooYMdFZ9UVIwa4X3oHikp3OdRprHJ1\nJlbRQNwcbxGwZzirxBlwVpHzIC1nVbXcATS9M4ctATqLH9cAyz/9LeRGC/EH7kb8vqu2XqtgV6xq\nzIJYRXcR0HRWsc6qhYH9lB2h1eih1x1CjAZduUA8i9GCdTtTpr3bLNqsr8odrM4q+s6q1uvvQun2\nEL22gXDemcWyeSTlYW+VdHAMqCrEjRXwIfdF4rghJnVod1a1vRerAMutdvsi4NTOqhh9Z1XxB7+A\n3Gwj+fD9iL/nGvXXZ/gfEgWcRKxy01kVjyRRSK1jKPdxVNlz/P1osl/SHbNsCZAOpGRdulSsIp1V\n/ndWxRN0O6tIXxWLADrPaAzQzj0RTU6+bawAftmeqwoACmm9HmJasapkOKvyPlwCJBAHvtSx//mT\nZRXNehccB6SXmFi1KDCxagTTVbWWdHR95yKiQR6RAI++rKIzUC7/hnPo3rbUslvVxSrWV+UsooPO\nqvrvWF/VNKQe8U6s8rKvCrA6q2g6qzRNM5+QeRkDBIAYKVnfs+msMmajnYgBHhkRwPVnWbH6okLE\nquODCZxVhsAcd0kQNkvWi3925f1ooGma6ay6wsQqKlgl62OKVeuL56wicV5Wru48QiSMQCoBbShj\nWG14fThQun2cfv/nAIBVGyuABFKKXmoeQ1Unv+crzYKzKk7PWdWoStA0IJVhrsZFgv1Nj2D2VXkU\nAQT0RStSsm4nCkj6BETjQmKvpp+kr2WYWOUkJAbohLOq/iIRqx6i/trzTOK994ILCGi/tQe503X1\nvb1cAgRGnFXNPjSVzlPJfk+GIqsIhgSEQt4uUkav6TdW0nV9EXBaZ1XdEKvSlGOA/VIV5Z/8BlxA\noPIUljGbFFaTEAI8qqUOutJ4F+ymsyrljhv62rIel949mZ3eqkrrBFK/jWQ044grchGxnFXnd1Zp\nioL+if4zNrKSd+W47CDGghAEDv2ejKGNh8CEMhOrXMVPUcDSj38NpS0h+f77qVzXhYMiUrEsFFVG\ntV2a+Putzir/LQESyBBPh4JYZZWrM1fVIsHEqhG8XgIkkJL1so2S9Z5R8E3KL4mzisUAnSWUTYMP\nhzCsNSF3JKqvXTOcVaxcfTIEMYz4/XcBqorWn95y9b29dlYFggIiYhCqqkEa8yb5MvzQV0UwY4DG\nnzNxVtUn7qxyJgZ4/O9+CE1RkP/MRxHKZai+NmN2EAI8lo3RluODy90Bmqq5/jkjJet7M+SsulEk\nfVX3euaGnzeiVy7vrOqfVqApCkL5JU8WdieF4zjEiLuqZd9dxZxV7mJGAU8nO687wcm3fgSATgSQ\nYPVWXTxqcBblWYgBks4qCgXrVVauvpAwsWoEr5cACeYioB1n1UifwFBRcVDvgQOwlWZilZNwPG8K\nhL2b9KKAvZMSejdPIMSjrPdmCrzqrZLMJUBvxCoAiKfo9nWYfVVxP4hVRgzwts6q2sSdVSQGSNdZ\nRSKAaywCuPBM0lslSQOoioaIGEQw6M56JHFW7Z2+CVVTXXlPu7C+KvqIW4ZYdePo3I6g7m2dqLOA\n2Vtlcxl3OFRQr0rgeA5L7IbZFSyxyltnldzpovTDXwIAVr70aWqvm08Ssepwou/TNA3lpm5MmI0Y\noP1rUFauvpgwscqg1x2iWe8hEOQ9V2xJDHBaZ9Ww2Ybc6kAQIwhmkrjZ6EPRgNVkCKJLF76LjFmy\nTrG3qv7inwAA6Q89CE5gf4eT4tUioHSDOKu8iQEC9Ps6SO9ALOH9E/XIah58OIR+sQK53UEimobA\nC+j0mhjI418YOeGsar3xLpp/fAuBVAKFv/xH1F6XMZusbo7fW+XmEiAhHc8hHcuiO+igWJ/spskr\n2BIgfYKpBAKpBJRuD4Ny7cyvsWom/F+uTqB1HqyV9CXADFsCdI1wQX8I1S9666wq/fAXULo9pB97\nH9V153xaF6uKE5asN6UaBnIfsUgS0bB/XX4iRWeVFQNkQvEiwX7SGhBXVW45AZ731k5u11nVM8vV\nC+A4DnvGEuBV1lflChGzZJ1eb5VZrv4hFgGcBi+cVZqiQDJKasnTai+gvYRE4klRHzirOJ43C4Gl\nvUPwHI+U2Vs1/lNY01lFsbPq6LnvAwBWn3lyJqIyDGexStYbl/bHubkEOMqou2oWYOXqznBZFNC8\nxpwhZ1XCcBi3bJ4HWV+V+/jFWXVsRABXKBSrj2LFACcTq8wIoI9dVcCtBet2Fx1rFRYDXESYWGVA\nlgCXPY4AAkCWOKtsi1Wkr8ooV2dLgK5gOqsolqzXXzKcVY+xcvVpiN9/N/hwCNL1AwwbLVfes3dU\nhDaUEV7OIRDz7rNH21nlpxggAETvMnqrrhuLgCQKOGZZqaqpaEq624VWDFBTFBx9/e8BAGvbT1N5\nTcZsk0hFkEhFMOjL5g3vebQ9cFYBwFVSsj4DvVUDuY+j6g1wHI/1LIvG00TcJCXr54hVZgxw9pxV\nHZudVZVTJla5jR/EqmGzjfKP/wHgOKx88Qmqr51PTeesIuKWn8vVASAUCiAYEqDIKgb96QcO+j0Z\nnVYfQoBH0qXhEYY/YGKVASlXz3tcrg4AuaiuQlemjAF2R/qqgJFy9Qz7cLuB5ayiEwNUen00Xv0z\nwHFIf/BBKq+5aPDBABIP6k/fm6+6cyNGSr+97KsCgESStrPKPzFAwIpYkuXF9IQl6+1uA6qmIBZJ\nIiAEqRxT5ecvon9aRvTaBtIfYgIzQ8dyV10cBWwzZ9WlHJavQ9NUrGa2EAqyaxuaELdq98Z5YhW5\nxpwdZxVxGLdsdlaRcvXcMhOr3MKKAXonVhW//3Oo/QGWPvoI9QXMQkr/vE3aWVUiS4A+LlcnWCXr\n03/+ahWrr4rzOAHFcBcmVhkQscoPzirSWTV9DFB39BCHz15Nv/C9ypxVriBu0HVWNf/4FrTBEPH7\nriKY8l5MnVWsKODrrryfZIgn5MLfK+Ip2p1V/lkDBEYWAXdvc1aNWbLuRLn64UixOlspYxBIb9Vl\nJeueOauMRcDd0zdtxzWcZr/MytWdQtzSb367+2evk3Vvc+/PArQcxiwG6D7hgn5u9nIN8ORbzwOg\nHwEEgGxiGRw4VFpFyMr4932kXN3vMUDg1ijgtNTZEuDCwsQqAPJQQaXYAcfpnVVes2R0VtW6QyiX\ndFucBSm/jKwtozNQcNoeIChwWHf5wndRiazrzqoupTXA+otGX9VjrK/KDpZY5Y5rQNolzirvytUB\nBzqrjIsNP3RWAUDsLrIIeABgcmdVnXK5utzu4PS7LwAA1r76FJXXZMwH4y4CtltErHLXMZRPrSEW\nTqAp1caO0XrFftHoqyowsYo2otFZdX4McAYL1s1V3OnFquFQQcNYAmQ3zO4RXjacVacVT0T0Qa2J\n8gu/BScIWPnCp6i/fjAQQiZRgKapqLTGv28oNwxn1UyIVfrnz07JetUsV2dLgIsGE6ugPynRVA2Z\nXAzBkPdLawGeQzoSgKrpgtWkmE+9NpZxw3BVbaUjEJht0hVEwxrfPy5BlWXbr2cuAT7KxCo7mIuA\nLpWsW0uAHjuraHdWtUhnlV9igEbBuiEOps2C9cmcVWlKYtXJ3/4UarePzF98wCwqZjAAoLCWhCBw\nqJY66F1wbrdigO4KwhzH4eqy5a7yM/sl5qxyiqgxCHJWDFDtDzAoVcEJgtklNAvEE8Z5sNWfWvCo\nlTrQjCXAAFsCdI1AIgZeDEPp9qC0Jdff//S7P4UmK1j6xIcQymUceY/CFL1VJAZIOq/8jBkDbFGI\nATKheOFgP20BlIxy9cKq9xFAgp0ooFV+WcBujfVVuQ0fDiFcyEJTFNuFkJqmWUuAj7LuGzvE7tmC\nEIuid3iKfqnq+PuRWBrpVPKKaCwEnufQlYaQh9OXWwKApmrmkzG/OKsiawVwoSD6p2XInS4ycVKw\nPq5YRZxVdGKAR0YEcH37c1RejzE/BAI8ltdTAC7urTJjgB5Eba/OSG8VWQJkYhV9xI0VgOPQOypC\nHd76wK13ojvuwis5cIL3D3fHJRgSEI4EoCoaulP2wVZYBNATOI5DuKALoz0PooAnxgrg6peedOw9\n8lMsApI1QL8XrAMjMUAbzqoaiQFmmVi1aDCxCsDpkd5XVfBBXxUha0QByxOeVDVVtSzaa8vYM8rV\nWV+Vu9AqWe8enKBfrCCYSSJ29xaNQ1tYOEFA8v26a8Bpd5WmaVbBusfOKo7nzH6pto2nWgDQlYbQ\nVA0RMeibJ8ucIJi9YNLezYmdVXWzs8q+S6B7cIzqL38PPhLCMuXFIMZ8sLqpi1XnRQFlWUW3MwDH\nc54IwteM3qo9Hy8C1jsVNKQqxFBsJm7UZg0+HEJkNQ9NUcyUDdvaAAAgAElEQVSHnwSrZmJ2ytUJ\ndl3GrK/KO0ajgG7SL1VR+cVL4IIBLH/+ccfepzChWNXptSD12wgHI0iIaceOixams2rKzipN01Bj\nMcCFxR93Gx5TMsrVCz5YAiRkp3RWDco1aEMZwaUUhGgEu1X9pHwtw8QqNyFdDnZL1s2+qkffx4qa\nKWD1VjkrVg1KVShSF8FMEsG09yJ4nNIiYMcoV4/6JAJIGC1Zz0zYWdWQDLGKgrPq6Bs/AAAUnn4c\nwSS7oWHcydqWHiM5z1k1GrPlPYjuX1vRf0b6OQZouqoK97LzokOcV7I+6tyfNRIpew9tzCVAJla5\nDnFW9YvuOqtO//YngKoi96mPOHotN6mzynJVrc7Ez0C7ziqpM0C/JyMcCZjCF2NxWHixSlM1FP0Y\nAzScVZUJnVWk1FtcX4amadgjMcAlFgN0E8tZZVOsYhFAqpDequYrzt6Ima4qj5cACbR6q8wbaZ8s\nARJiI2JVKrYEDhyaUg2KenlnnBkDtLkGqGmaFQF8lkUAGWdDStaPDxrQzhhQsfqqvDlnr2a2EA5G\nUG6eoNW9uAjeK8xydRYBdAxxy3Cr3lay3j2yBnxmjVjC3nmwcmo4q5aZWOU2pB/NbWfVMYkAOrAC\nOEp+ws6q0gyVqwNAzHAJkweek1IbWQKcBXGOQZeFF6vqVQnDgYJ4Muwrt0DWUI7LEzqrRp96Vbsy\nmn0F8ZBgxgoZ7mA6qw7sxQDrL7FydZqkHrGcVU6uyph9VR4vARJoO6tiPumrIow6qwQ+gGQ0Aw2a\nKURdBK2C9cYf3kDnnX2E8kvIfvIxW6/FmF8SqQgSqQj6PRmVUvuO3yef0YRHYhXPC9jK3wcA2Dv1\nZxSQ9VU5T5Q4q24rWSfVBpH1GXRWGefBVmNysUoeKqizJUDP8CIG2DsuofabV8CHQyg89QlH36uQ\n0sXhUv1wrK8nzqr8jIhVos0YIIsALjYLL1b5sa8KALLRAIDJO6usC4kV7Jp9VRGmRLtMZEMXq+w4\nq+SOhNZr74ATBDO+xrCHuLWGYCaJQblmu0/sIqQ9Uq4+X84qcqERS/hH2AcssapjiITpCUrWGxKd\ngnXiqlr7ymfBBwK2Xosx35DequODxh2/Rz6jMZeXAEe5ZiwC+les0pcAN/P3eHwk84toLALe7qwa\n7USdNazz4OQPbaplYwlwiS0BegGJAQ5K7olVJ9/5MaBpyD/5MQQSzgqUS4k8BF5ArVPGQL783ydZ\nAsylZqOzj5hBulPGAE2xipWrLyQL/xPXj0uAAJCL6h/s6oTOqu6Is4qUq7O+KvcRjRignc6qxh/e\ngKYoSDx4DwIx9ndIA47jkDSigA0Ho4BWubo/nFUJyjFAvywBEqLXNgFYIuG4JeuqpqJpiFVJGzFA\ndTDE8Td/CABYYyuAjEsgUcCzStYtZ5V3nzGyCOjH3ipFlXGzch0AsJm72+OjmV+iV3Sx6g5n1dEM\nF6ynjPPgFJ1VZgSQ9VV5ghcxwONvPQ8AWPmSsxFAABD4ALIJ/b6h3Di+5KtHnVVrjh4XLcRoCByn\nj/Soijrx99cqegxwibkaF5KFF6tOfViuDgA5o2B94hgg6azaWMZuzShXZ0uArhNZJ2LV6dRxs9Fy\ndQY93ChZN2OAvnFWUY4B+qyzSlwvgAsG0D8uQZF6Zsn6Zc6qTq8JRVUQDccRCkz/31T60a8wrDWR\neO89SD7IokmMi7lQrGoRZ5V3PZPWIqD/xKrj6j5kZYhCah3RMBMOnII4q7p3OKuIe38GnVVkFXeK\nhzakXJ31VXlDxOUYoLR/jMZLr0EQI8g/+TFX3nOS3qpyQ38QnkvNRgyQ5zmI0elL1lkMcLFZeLHK\ndFb5LAaYCAsIChw6AwXdoTL29/VGyi93TWcVK1d3m2A6ASEWhdKRIDfv7CUZh/qLRl/VY6xcnSZE\nrGo6KVbdMJxV89ZZ1TJigD7q9wMAThBMJ4B043BsZ5VVrm6vr+roue8DANaefdrW6zAWg8JaCoLA\noVJso9e99YFUu+G9s2ojdzcEPoDj6j56A8mz4zgLq6+KRQCdJLycBR8OYVCpQ+7o/wYUqYdhrQku\nFEQom/b4CCfHPA9O0VlVJmJVgTk7vMDtNcCTb+vF6vmnPu5asmGSRcBZ66wCpl8E1FTNdFaxvrjF\nZKHFqk6rj06rj1A4gJTPonIcx5ml6JUJ3FWkhye0WsB+XT8hX2FiletwHGeVrE8RBdRU1SpX/xBz\nVtEk9bDhrHrlTUdK1of1Joa1JoSoiFDeXg8SLUY7q+z8N0s+dVYBI1HA3ZtmZ1X9EmcVKVe301c1\nqDZQ/OEvAZ7H6lc+O/XrMBaHQIA3H5Cd3Ly1t8p0ViW8O28HAyFs5u6GBg03im95dhxncYOVq7sC\nx/MQNw2H+L5+Y2zWTKzmwfGzd/sQjYfB8Ry60hCyPFkUiTircgV/pTAWheBSClxAwLDegtKz99Bt\nHIhY5fQK4CiFMZ1V/WEXDakKgQ+Y1zqzQHTKkvVmowdFVhFLhBEKsz7QRWT2zjYUKY5EAP1YQJ4j\nYtWYJetqf4B+sQLwPKrRBAaKhnwsiDj7cHtCxOitmqbIu/PuPoa1JsLLOfOCkUGHyGoe4eUc5Gbb\njOvRxOqrWvfNz5VQOIBQOABZVu9wckwC6azy2xogMFKyfv0AGcNZVbvMWWX0VdlZAjz51vPQhjJy\nn/ywGVVgMC7jrCigpmlWZ1XK28+Y2VtV9FfJ+n7REKsKTKxyGnHz1iigOeAzg+XqgB5FIq7gTmt8\nd5U8VFCvSOA4IJNnzg4v4Hh+xF11+cqvHTrXD9B89c8IJGLIPfEXjr7XKAXTWXXxImC5qT8AzyaX\nwXOzcxs/rbPKKldnEcBFZXb+lTtAkSwB+qxcnUCcVeP2VvVOSgD0m/G9pv49rK/KO0RjEbB7MLmz\nyowAPvqQbwSPeSL1AaNk3YEooN+WAAl2o4CKoqIrDcFx1gyxnyBl9tLe+M6quumsml6sOiQRwG0W\nAWSMz+rmnWLVoK9gOFAQCAqeP0G+ai4C+qu3ap85q1zDilYTscpYAlyfvXJ1wjSLgLWyBE0D0lm2\nBOglbkUBT4xi9cLTj0OIuPfQwIoBXlywPosRQMAa5pnUWWX1VTGheFFZ6J+6RbOvyp+23mxsMmcV\nuZCIrBVYX5UPIAWk0zirrHJ11lflBEkzCuiEWOWvJUBC3OYiIJkcFmMh8Lz/BNTYXYZYdf3m+M4q\nIlZNuQTYfucGGr9/DUI8iuWnHp/qNRiLCXFWHR/Uoal6NJd8NhPJsOcPKa4Zzqq9U/84q9q9Jiqt\nU4QCYayk/fXzdR65vWTdLFefUWcVYC3jtiborSoX9XsFFgH0FrcWAY+/5X4EEADyKf0BZ/ESZ1WJ\nlKvPnFhFYoCTPTCtlVlf1aKz2GKVz51VuQk7q7qH+g+wyPoy9mq6WHWVOas8Q9wgi4BTOKt+R8rV\nWV+VE1gl6/RdAyRaKM6Zs8qMAPqwrwqwYoCjzqpGpwxVO7+bhMQAp+2sOvob3VW18lefhhBlDwYY\n45NIRRBPhtHvyagaT46JWBX3cAmQcCV/LzhwOCi/g6E8+XqTExyU3gEAbObuAc8LHh/N/CMSZ5XR\nWWUO+MzgEiCBnAfJ+WwcKkX988nK1b0l7MIiYOvN62i/eR3BTBLZxx9z7H3OIh3PIiiE0OrWLxy2\nMJ1VhhNrVjA7qyaMAVYr+udviS0BLiwLK1YN+jJqVQm8wCFb8OcULXFWjR0DNC4kxLVl7Fb1i95r\nPiuOXyTIBR0REcdl2Gih/dYuuFAQqfe9x4lDW3hSD+uugearf4Yqy1RfmywBxnyyBEiwLVa1/bkE\nSIisL4MLCOgdFSEMgVg4AUVV0O42zv0ey1k1eQxQU1VzBXD92c9Nd9CMhYXjuDuigOSzGfdwCZAQ\nCUWxunQFiqrgZvldrw8HALBPxCq2BOgK0S3dudE1zmlmwfraLMcA9c9WawKHceXUWAJc9ue9wqLg\nRgzwxHBVLX/+k+BDQcfe5yx4jjfdUhctAhKxKpecrT5bFgNkTMvCilWlkxagAblCHIJPM+jZqH5T\nOH4MUL+QCKwWcNTsg+eAjbT3F72LijhlwXr9pdcA6IIKH/anMDDrhLJpiFtrULo9dN6+QfW1pV39\nwl684jdnlb0YIHkSHfVhuToA8IGA+Wc+6q6qXdBb1ehM76yq/vpl9A5PEdlYQeYvHp7iiBmLzu0l\n635yVgFWb9WuT3qrrL4qJla5gRUDPIamaSOdVbPsrDLOg41JnFWGWOXTB9uLgtMxQE3TcGysAK48\n86Qj73EZhfTli4ClWe2smsJZpcgqmrUuOA5ILTFn1aLiT5XGBcwI4Jo/I4AAkItNFgMkokgzlYYG\nYDMVQUhY2L9izwmv5MAJAvqnFaiD8RfY6r8z+qo+xPqq/v/27jw+trys8/jn1JZaUqnsuUnuknt7\np4FL02zdNA10IzaibMIBdQBFFEadUVEBXzMjoILijCMIKoiCOCPIaUCgbZC9N+xhp1ug19t3X7Lv\nVUlqOfPHqVNVyU2lKkkldU7l+369eDWdWu7vcrlVp556nu+zk9zuqkaGrOcWMyyPTmCEQ54LoU1u\ns1jl5gx4dQwQIDFSUawq5lbNLI5Xvf9MaQxw851V5279AgDDr7jFl2vcpfkuLlZ5p7MKKnKrPLIR\n0C1WHVK4+q4Ip5KEO5PkM0usTEyXxwB93Vm1uffBXK7A9JSzCbBbnR1NVeqs2qFi1fwPHyZ97BSR\n3i66r79mR36NWsoh6xsUq4oB7L0pnxWr3E2cm8ismplylht0dMW03GAP27N/8qVw9UHvBib2VGRW\nFWy75v0zxWLVWDwFwEi3N76d3asCoRBt+3rBtlk6P1b342a+q7yq3eDmVjWyWOUG0cYODmEEvZWp\nUhoD3ERWR6XFeXcM0BsfpNcTP3IAcLrbump0Vtm2zVyxWNW5yYD1fHqJC7d9HYChl2sLoGzNwFAH\ngaDB5PgCy0vZimKVN967R4rFKi90VhXsgsYAm8Dtrpr74cPkF9ME4zFCKe9eN9ey2ffB6fFF7IJN\nZ3ecUNhb7+l7zU6PAbrB6vt++rkEQs3ZxuoWq6p1VuXyWaYXxjEw6En6q8PRLVZlFlaw6/hMCzA9\nqXB12dPFKm+HqwO0hQIk24LkCjazS7VzddxvvU5FnFZl5VU1Xylk/XR9uVV2Pl8aA9QmwJ3V4Yas\n39e4D2LpE064esJj4eqwtZXdldxvw7yaWQXlDYyLx09XdFatf2G7uDxPLp8lFkkQCW+uODD6b3eR\nX0yTuvZqEpcc3N6hZc8KhYPONYgN50/PsjDvjgF6oyB8uN8ZAzw59jCFQr6pZxmbOctyNkNXex8d\n8a6mnmUvcYtV0/f+AIDocH/TN1VuR2VnVT0fmEsjgMqrarqdDFi3bbuUV7Vvl7cAVuovdVatvxFw\nan4M2y7Q1d5HKLi7mVrbFYmECIWD5HIFsiv1vZ+U8qp6NAK4l+3JYlU+X2CiGJjY5+FiFZS7q6Zq\njALm5hfJzS0QiLVxLOc85rA2ATadG7Jeb27V/IOPkV9MEzswSLT4xiw7I/XEK8AwmPvxo5sa09xI\nKa/Kg8WqRHsEw3CKTvl89Q151Xh9GyBUbAQ8fqbUWTVTpbOqHK6++byq8giggtVleypHAb02Btge\nS9HbMchKbplzU43N9tuscl6VRgB3U7xYrJr6f8VilY9HAAHaoiHCkSC5bIHlOr4EnlBelWdE+rrB\nMFiZmG74YpzZ7/+YzOnztO3rpevpzcug7E85147uqN9abl6V30YAXW53Vb0h6wpXF9ijxaqp8UXy\nuQKd3XHaos1p9ayXm1s1USNk3R0BjA4NcGLG+XZWY4DNV+qsOlNfZ9XMdzQCuFtCyQSJSw9ir2SZ\n//GjDXnO9AmnWBX32CZAgEAw4ISj25vfxgLlx3g1YB0gcaRcrHI7q6ardFZtNVx96cI4E3d+GyMc\naloIq7SOcrFqujSalEh65737cDFk/USTRwHdEUAVq3ZXrLgRcPb7Pwaca0y/c/Mb52dr51a5nVW9\nKlY1XSAcItKdAttmZWK6oc99/rNfAWDfi25uagZleQxw/c6qCZ+Gq7sSm8ytmioWq5QXt7ftyWKV\nOwLY5+G8KpfbWTVRo7PK7dwJD/Yzlc4RDQUY8PC4zl6x2c6qUrj6U1Ss2g2po43NrXLHAOMe2wTo\nKuV1bCFkvTQGmPTu60p0/z6MUJClc2N0RJzsvqqdVeliZ1Vicx2M5z/9ZSgU6H/+DUS6vN2ZK97n\nFqtOPzaFXbCJxcOeCpL1Sm5VOVxdeVW7KXbI+fBsZ51OFr93VgEkiu+Di3XkVk2OagzQS3ZiFNAu\nFLjwua8BMNjEEUCAZKyTtnCM9PICC0tzF90+4dNwdddmNwJOT7iZVRoD3Mu8c0W0i9xNgAMe3gTo\nKoWs1+isWjrnFENWup0ugZGuKAEf5wq0ilJn1dl6O6vcYpXyqnZDx5OKGwEblFvl5c4qKOd11PON\ncqVsNs/yUo5A0CAa825OQiAUInZgEGyb2Kwz6lirs6pzE51Vtm1z1vo8AEOvULC6bF8yFSWRbCOf\nd/Jz2lPe6aoCGCnmVjV7I+CpseIYYL86q3aTOwboig23UGdVjS9ttAnQe9oGGr8RcPpb97N8fpzo\n/n2knnx1w553KwzD2HAj4Pic81nCr51Vbmd+Pd39K8s5FueXCYYCJFOKtdnL9maxqrgJ0A+dVb3F\nKvRkjc4qdwxwvtP54KW8Km9wO6syZ2p3Vi2PT5E+cZZgLErycZfs9NGExm4ELKxknXFPwyB+wJsX\nEuXOqs2FrKdL4eptng/XjR92NgJGRp1v5GYWJtYN0p3ZQmbV/I8eYeHBxwh3p+i76boGnFb2OsMw\nSt1VAO0ey4Q7POC8Rp4YfajuDU6NtrSSYXTmDMFAkKHukaacYa+K7d8HFa/5rdBZVXofnN34fXB6\nQpsAvWYnNgK6weqDL77ZE9c3/RsVq4o/6/VrsSpRf2aVm1fV2R0nEGj+n4s0z54rVtm27cvOqlqZ\nVUtnnU2AY3Hn9zTS5a1vZ/eq2H53DPBCzQv9me86eVWpJz+uaWtz95qOqy/HCAZZeOg4ucXMtp4r\nc+YCFApEhwcItHlzVK69mIXjbh2rVzmvypu/r0rxw84IZv7kOG3hGCu5ZdLLCxfdrxSwnuip+7nP\nFoPVB1/yEwQi3u0wE39ZVazq8NZ7d1d7L6l4N4vL8+t+eNoNZyaPYWMz3HPYdxuw/C7QFiE62Ff6\n91bIrCptBKzxPjipcHXPafQYYCGX48JtzgigVzIo3WLV2MzFuVWlzCq/jgG6AeuLtb8wnZ50vnBU\nV6PsuWLV3MwSy0s5YomIp7dauXqKAeuT6Y2r0G4m0pmoU6xSZ5U3hNoThDuTFJZWagZClvOqNAK4\nW4KxNtqvPAKFAvM/emRbz5U+Xsyr8uAmQFd7amudVX7YBOgqbwQ8S1cxj2pmnVHA2fTmAtYLuRzn\nP/UlAIY1AigNtLpY5a2/Y4ZhND23qjQCqHD1pohVjAJGh1uos6rG++CE8qo8p9xZ1Zhi1fS9P2Bl\nYpr4kQN0POHyhjzndpXGAOdWbwQs2AUm553Pej3Jfbt+rkbYzDbA8iZA5VXtdXuuWOWGq/cPJj3R\n7llLr5tZld54TaubWXUs6FSg1VnlHdFh502lVsh6aROgwtV3VcrNrdrmKKDX86qgnNWxsMnMqlKx\nysObAF2J4hhg+vhpOtuLGwEXxi+6X2kbYLy+zqrJO77FysQ0icsO0VEcHxVphP6hjtKYg9c6qwBG\nBpqbW+WGq6tY1RxusSqUShJK+P+DY6mzqkZmlTqrvKeUWdWgYpW7BdArI4BQsRFwTWfVzMIkuXyW\njngX0Yg/GxLiifozq8rh6uqs2uv2XrGqOALY74MRQIBUNETAgNmlHCv5wrr3sQsFMuecMcDxRIqu\nWIhOD4cg7zXuKGDmTPWQ9cJKltn7nGJJ57XqrNpNjcqt8vomQCh3Ri3UsQWp0mLxwiLhizFAp1i4\nePwMnW5n1TobAcvbAOvrrHJHAIde8QLPXNRKawiHg6Vrko5O7xWrDje5s+rk+KOAilXNEj/ojBy1\nQl4V1N9Z5RarelWs8oxGjgEWsjlGb78D8M4IIEB/yrmGXNtZ5Y4A+jWvCirHAGsXq6bczqoe/xfI\nZXv2XrGqGK7e74NwdYBgwKC71F21fm7VyuQM9koWoyNJLtLGSJc/K+6tqp7OqrkfPkJhaYXEpQeJ\ndKd262gCdBwtFqu2uRHQF51Vqfq+UV5rsRiwHvfBGGDswCBGMMjS2VE6Y13AxRsBbdveVGdVdnae\nsX+7GwyDoZc9v/GHlj3v5hc9jutuuoRDl/Y2+ygXKW0EbEKxyrZtdVY1mTva7m439rtEsg0M532t\nUOVL4FyuwPSkswmwq0+dHV5R3ga4/YD1ybu+TXZ6jvYrDpO88si2n69RytsAz67Kum2JYlUpYH3j\nQrFt2xVjgPr7t9ftwWKVOwboj84qKI8CTlUJWV8qduxk+5yL3MPd3vtmdi9zL/AyGxSrZr7j5lVp\nBHC3Ja+6hEBbhPSxU2Rn57f8PKXOKg9nVrVFQ4TCAVaW86wsbzxaXCk973ZWeb9YFQiHiB3YB7ZN\nYsW5MFrbWZVZWSCbX6EtHKurnf7Cv36dwvIK3c98cst8YBNvGdyf4pnPu8yTW48GOvcTb2tnZnFy\n3ZHanTS1MMbi0hzJWIqudu8V8vaC/luexf6f/xmO/MZ/avZRGiIYDDgfmu1y1/Ba7ibAVHecsDYB\nekZbf7Gzanxq29tJzxe3AHqpqwogEU2SaEuynF1iLl3OunUXXPR1+PcaJJaIgAGZTLZqoRggs5hl\neSlHpC3ki8U+srP2VLEqk15hfmaJUDjoq0ptaSNglc4qdwRwIeV0EShc3Vuiw8WNgBuMAZbyqp6q\nYtVuC4RDJK92vrGfu39rmSx2Pk/6pHMh4eVilWEYded1VHI7q/wwBgjl7rbYgnMxu7azamZxc+Hq\n5yxnBHD4FS9o1BFFfMMwDA6Vuqt2N7eqMlxd47fNEWpP8Pj//ft0Pf1os4/SMMka74MaAfSmYKyN\nUEc79kqW7PTclp8nv7TM2BfuBJy8Kq8ph6yXN7C6Y4G9Pt0ECBAIGMTiTqE4U+UzLcD0ZDlcXa/7\nsqeKVePFEcC+fe2e/Paymt7iRsCJap1VxY6dyXZno9BhjQF6SuxAsbPqTB2dVcqraort5lYtnR/H\nXskS6ev2fABte3LzGwH9tA0QIF4MWW+bcL41X9tZ5Y4AuplWG0mfOMP0N+8jGIsy8MJnN/ikIv7Q\nrNwqjQDKTnBzq+arLBtRuLp3NWIUcOKOb5KbX6TjCZeTuORgo47WMOWQ9XKxamLO+cK7z8djgFA5\nClg9t8rNq+r2UWOJ7Jw9Vazy4wggQE9i48wqt1h1PpbEAA5qE6CnuJ1V1QLWM2dHWTo3RqijnfbL\nR3bxZOJKHd3eRkA/5FW53M6q+To7q2zbLges+6ZY5XS3hc45X1DMrOmsKoWrx2t3Vp375BcBGHjh\nswm168JJ9qZmbQQ8VQxXP9B36a7+utLaSh3GVZaNTIwWi1UDKlZ5TVv/9jcCXnBHAF/kva4qgP6K\n3CrXxKz/M6ugMmS9+hemyquSSnurWFX84OKXTYCunhoB624W0mxHN4MdbURDe+qP1fPa+roxImGy\nUzPk0xcXCEojgNc+HiOgP7tm2G5nlR82AbraU5vrrMqu5Mll84TCAcIRf2R3xEecomHwhJP3MF2l\ns6rWGKBt26u2AIrsVc3urDqkzippoPJGQHVW+c12NwLm00uMffEewHt5Va5yyLpToLJtuzQG6N7m\nV26cRLW8OIDpiTTgjAGK7KlPxuXOKn9sAnT1xp2/2FXHAIuZVfOpTg6rq8pzjECAWHHlc+bsxd1V\npRFA5VU1TeLSgwQTcZbOjrI8PrXpx/uqsyq5ucyq0ghge5tvsgMSR5wxwMKjo4SCYTIriyxnM6Xb\n3U6rWpsAZ779H2ROnqNtXy89N1y7cwcW8bih7kOEQ22Mz55jYWnrWTGbkc2tcG7qBAYG+3u9s61L\n/K+c3Xjxlzb5XIGZyTQY0K1NgJ5T6qza4hjg+Ff+nXw6Q+rJVxM/6M0updIYYLGzamFpluVshlgk\nQSLqr8+wa8UTTqF4ozHAcmaV/v7JHipWZbN5JscXMQzo3eevv+j1jgHOd3YrXN2jSiHr62wEnPm2\nuwlQeVXNYgSDdDzhcgDm7tt850D6uPc3AbrK3yjX11nlt7wqgNiBQQgEWDozSmexIFXZXVVvZ1Wp\nq+pnfxIj6I+uMpGdEAyESt1NJ3apu+rc1AnyhTz7ug7SFta1jTTORu+D05OLFAo2nV3aBOhF2x0D\nPP/ZrwDeDFZ39Xc615JjxQ2A7ghgn4/D1V21xgDtgs2M21nVo2KV7KFi1eToAnbBpruv3XdvPr3u\nGODiykWrWgsrWZbHJrENg4VkipFudVZ5kbvuPrOmWJXPLDP3w4chEKDzmsc142hStJ1RwPTJYmfV\niPc7q5KpTXZWuXlV7f4pVgUiYefvXKFAR8j5cqIyt2o27QasV++syi8tl3Ithl5+yw6eVsQfSrlV\nu7QR8KQbrt6vvCpprI224iqvytvKAeubL1blFhYZ/+q/g2F4Nq8KyiHqE3PnKdiF8iZAn+dVQUWx\nqkpn1fzcErlcgXh7hLZoaDePJh7V0sWqY3/xEfIZp3JbGgEc8ldXFUA8EiQWDrCct1lYya+6ben8\nONg26VQndjCoTYAeFR12ilVLa0LWZ+97ADuXJ3nVJYSS+gahmbZarLJtm/Rxt1jl/c6qxCa3AS4u\nOPdzLzD8In7EKRy2F5zXxJlVnVW1A9bHv/QNcnMLdDzxCpJXXbKDJxXxh93OrTo1pk2AsjM2yqwq\n51XpmsyLSsWqsc2PAY598R4KSyt0Pf2JRAf7Gn20hqRTi/UAACAASURBVIlG4nTEu8jls8wsTJSy\nq1qiWOVuA1xcv1g1rU2AskZLF6seefeHuOfGn2f083cyetafmwBd1ULWl84Vw9WTnYSDBkMd/ul+\n2EtKnVVnVndWlUYAr9UIYLOlnlTcCHjfgxd1MG5kZWKa/GKaUCpJuMv7ry/uN8qL88vYhdq/z7QP\nxwABEsUut3jGeZubXqezKrVBZ1U5WF1dVSIAI/3Oa+RubQRUuLrslGgsTCgUYGU5z8pybtVtbrGq\nt99/X27vBW39Ww9YP/8ZZwRw34u8GaxeqRyyfo4JN1y9FYpV7RtnVk2VwtVVrBJHSxer2q+6hMzp\n83z/db/P0rv/jLbpMd8Wq3qLuVVrQ9bdDKS5zm4OdUYJBvwRgLzXRPc7mVWZNZ1V5XB1FauaLXZo\nmHBXByvjU6WlBfUohasfGvZFAHkoFCAWD1Mo2FW/2apUHgP0WWdVMew+Out0o7qdVbZt1+ysWh6f\nYuJr/w8jGGTwJT+xC6cV8b4DfZcQDAQ5N3mCpZVM7Qdsk1usUmeVNJphGCSqdFeVxgDVWeVJWx0D\nzM7MMXHHNyEQYN/PPHcnjtZQfR1uyHq5WNWb2tfMIzVEeQxw/e5+t7NKmwDF1dLFquu//BGuetfv\nEOpMEj7+CJd+5oPM/d0/kJ3ZnU02jVStsypT/FC9kOpkROHqnhVbJ2Ddtm1mvvNDALq0CbDpDMOg\n42ixu2oTo4DpE8Vw9cPeHwF0bZTXsZY7Bui3zqr4YWcjYGTc+T26nVVLK2lWcstEQm1EI+tfDJ3/\nzJex83l6b3oGbX0bh7CL7BWRUBvDPUewsUuFpJ0yl55mZnGSWCRBbwuECov3JNfZCLh6E6Ayq7wo\n1NFOIBohn86QW1is+3GjX7gLO5uj55lP9sX7en9neSPgeClgfaiZR2qIyjHA9aYYysUqFYvF0dLF\nqkAoxKHX/SxPuO0jTF75FADO/sOnuOv6V3H6/3wGO5+v8Qze4YasX9RZVRwrm0t1c7hL4epeFR0q\nFqvOjZb+f5c+cZaVyRkiPZ3EDvmn0NHKUsVi1WY2Avopr8q1mY2A7jbAuI8C1qFcPAyddr6ccDur\nKkcAq3XCnbv13wAYfsULdvqYIr6yW7lVbjFsf+8lBIyWvlSVJnHfB+crvrRZtQkw4q9lTHuFYRhb\nGgV0twDu8/AWwEr9KecaZnz2PBNzzlRGK2RWhSNBQuEAuWyB7MrFn8OntQlQ1tgTVwDTGYPz1/8U\ny7/5Zrquu4bs1Aw/+r0/495bfpnpb97X7OPVpadYia6WWTWf6uKwOqs8KxhrI9LbhZ3LszzmfFgu\n5VU99Qm+GB/bC7YSsp4+Weys8sEmQJfbWTVfR2eVmyuQSPpsDPDgEAQCBE/MAOVtgO4IYLVNgPMP\nHGPu/ocIdbTT9/xn7s5hRXyivBFwp4tVjwLKq5Kd075OZ9XkmNPVoRFAb9vsKODKxDRTd38XIxRk\n4Kees4Mna5y+Ykfp6fFHWViaJRxq23ApjF8YhlE1tyqfKzA7kwEDOns0BiiOPVGsGjvnfLPee+3j\neNqn38/RD/4R0eEB5v7jYb754v/Mff/5bZvKqGmG0hjgms6qTHGsbL6zixF1VnlaKWT9rPMNiTsC\n2PkUjQB6RepJjwM2F7Leyp1Vtm1XbAP0V2dVoC1CbHiA2ILz5zi9trOqykXfuU86XVX7Xnwzwai/\nfs8iO223O6sO9l+6o7+O7F3rbQScGJ0HoGdAI4Be1ta/uY2AFz5/J3Y+T8+NTyPSndrJozVMX7Gz\n6rFR58vT3uS+lvliuzwKuPoadHY6jV2wSXXGCIX2RIlC6rAn/p8wdt558xkY6sAwDAZffDPPuvvj\nXPKm1xGIRjj/L1/m7me+imPv+QfyS/Wtc99tpYD19OoqtFussvt6SwUt8aaom1t1xi1WFTurnqJw\nda+IDvbRNtBLbna+FJxeSylg/bD/OqtqZVYtZbIU8jZt0RDhsP9GIuKH9xNNg4HBfGbGWQPthquv\n01ll5/Oc+9QXAY0AiqznUN/lGBicnjhGLp+t/YAtOjWmcHXZWRt3VqlY5WVtA5sbA7xQ3AI4+BLv\nbwF0uZv/bLsAtEa4uqscsr76M+20NgHKOlq+WGXbdqmzqm+wvIY2GI9y2Ztfzw13fZyBn34u+cwS\nj/zp33LPjb/A6Bfu3NTq+t2wXsB6bmGR/NwCuVCYffv7Wqbi3qpKnVVnRsnNLzL/wDGMUJDU0aua\nfDKpVA5Z/3HN+2bnFshOzRCItZUunvyg3s6qxXnnQiLus02Arvjh/QRsg3bDaSefWZzccBPg5D3f\nZfnCBLFDQ3Rq6YHIRWJtCfZ1HSRfyHF64tiO/Br5Qo7Tk48BcLBPnVWyM9b70mZyzNkE2KtilaeV\nxgDHaherlkYnmLr3+xiRMP23PGunj9Yw4VCErva+0r/3tUBelasyZL3SlBuurhFAqdDyxarF+WXS\niyu0RUOkui7OdIofHOSav3snT/3k+2i/8giZU+f4/i/9Pt955W+x8NDxJpx4fd3xMAYwk8mRLziF\ntKWzzujifKqLwz3Kq/K66P5yZ9XM938Mtk3HE64gGNOokZdsJreq1FV1aNhXxeJknZ1V7mrhhM9G\nAF1ut1si61wYzSxOMLtYDlhf69ytXwCcrio//XmK7KZybtVDO/L8F6ZPk80t09sxSLwtWfsBIluw\n9kubfL7gbCLTJkDPK40B1tFZNXrb18G26bvpGYQ7/PXn2l+x/a8VwtVdiSqZVdoEKOtp+WKVOwLY\nN5jc8MNHzw3Xcv1X/oGr3vkmwp1JJu/6Nt+46TU88D/eQ3Z2freOW1UoYNAZC1GwYSrjdFe5I4Bz\nqS5G1inEibfEht3MqtFyuLpGAD3HLVbVsxEwfdwNV/dPXhVAou7OqmKxKunPYlWiWKyKLTqv/TML\nE8ym3THA1Z1VuYVFRm+/E4ChV9yyi6cU8Zedzq1y86oUri47qb34vrY4v4xdsJmeSFMo2KS6YtoE\n6HGlMcA6OqvcLYB+GgF09VUUqyr/u9+53fpuJqqrPAaoziop2wPFKmcEcGCoo+Z9A6EQh3755Tzr\nG5/gwGtfim3bnPyQxV3XvZLT//ez2PmLV2zuprUh66s3ASpc3euipTHACxV5VRo18ppUcQxw7v6H\na/6dT590w9X9k1cFEI9HCAQNljJZstnqv8dFdxOgbzurDgAQnXZeM6cXJphxO6viqzurRm+/k3xm\nia6nHyV+yF/FR5HdVOqsGtuZzip3E+DBfhWrZOeEwkFi8TCFgk16caU0Aqi8Ku8rbwPcOGDd/XI4\nEGuj7yf8t923r0U7q0pjgGs7qybVWSUXa/1i1Tm3s6p2scoV6enk6nf/Htd/+SN0PeNJZKdm+NHv\nvpt7b/llpr91/04dtSa3WDVRzK1KF4O6nU2A6qzyulhFwPrMd38EQJdycTwn0tNJ7MAg+XSGhYdP\nbHhfv3ZWGQGj/K3yBt1VpU2ASX9mVsUODoJhEBnNAMUxwCqdVWeLI4DqqhLZ2Ei/U6w6OfYwhULj\nv8Qrh6srr0p2lptbNT+3pLwqHylvA9y4s+rC574KQP/znkko4b9unf5U+dqyrxUD1isyq1aWcyzM\nLRMMGnR06jOtlLV+scrtrNpEscrVcfVlPO1f/oqjH/hDosMDzP3Hw3zzRW/kvl97O0vnxxt91Jrc\njYBuZ9X0CadYZfT3klDLsueFu1MEY1Fy84vk5haIDvUTHepv9rFkHaXcqhqjgH7cBOiqZyNgaQzQ\np51VwWgb0aF+Ys5nEKYXyplVnRXFqsyZC0x943sE2iLs+5mbmnFUEd/oiHfRkxxgOZvh/PSphj//\nqYliZ5XGAGWHuSPxi3PLTIyqs8ovIj2dGKEg2ek5CssrVe93vrgFcJ8PRwAB+lJON1XACK4KW/e7\neOLizKrpSWcEsLMnQSCgzFApa+li1cpyjpnJNMGgQXf/1loKDcNg8CXP41l3f5xL3vQ6Am0Rzn/6\nS9z9zFdx7L0fJb+0ceZLI/UU2ybdjYBzp88DkDzQOq2hrcwwjFLIOmgE0MvcjYBzNULW0yf82VkF\n9W0ELAWs+zSzCiBx5AAxp7Oc0ZnTLGczhIMRYpHyB5Jzn/4S2Db9P/kswikFOovU4uZWNTpkPb08\nz/jsOcLBCPu6DjT0uUXWSq7TWdUzoGKV1xmBAJE+5wunat1V6RNnmLvvQYKJOH03Xbebx2uYoe7D\nGBgMdh8kGAg1+zgNU+qsqsisKoer+68DTnZWSxer3HD13oEkweD2fqvBeJTL3vx6brj74wy88Dnk\n0xke+ZMPcs+zf4HRf7sL27YbceQN9a4ZA1w572wD7D3SOqF7rS62v9zG2/lUhat7VT0bAfOZZZbP\nj2OEgkSHB6rez6sqxx+qKWdW+XMMEJyut/iC8y3dibGHAWcE0F24Ydt2aQugRgBF6jOyQyHrp8eP\nAbC/90hLfTgTb3K/tJmbzjh5OQb0aBOgL9QaBTz/ua8B0H/LDb7dut2d7OOtr3gfv/Xidzf7KA0V\ni4fBgEwmSyFfACrD1ZVXJau1eLHKGQHsG2zcN+Xxg4Nc8/fv4qmf/EvarzhM5uQ5vv+Lb+U7r/qt\nmvk221UOWF/Btm0C484L9P5L/dfVsVdVFjU6r1VnlVeVQtZ//CiFley693HD1WMHBgmE/PehqjQG\nOL9BZlXxtrhPxwDBCb93twEuLjnvCalEOVx97gcPsPjISSK9XfQ+5+lNOaOI35Q6qxocsn5y3M2r\n0gig7Dz3ffD08SkKeZtUpzYB+kVpI+Do+sWqC8URwMEX/8SunWknHD18HQd6L2n2MRoqEAwQi4XB\nhkyxAaMUrt6jzipZrbWLVeecDyb9dWwC3KyeG57C9V/9KFe9802EUkkm7/w237jp1TzwB+8lOzvf\n8F8PKjKr0jlWJqYJZLMsxeIcHu6u8UjxCjdkPRCN0PF4XYx7VSiZIHHpQeyVLPMPHFv3PhmfbgJ0\nlcYAZ9fvrCoUbDLF8Mu4nzurjuwvjQG6Ois2AZ699d8AGHzZ8wmE/Vd0FGkGdyPg8dEHG9pZfkrF\nKtlF7vvghTOzgEYA/WSjjYALD59g/sePEkol6X3O03b7aFIH90tQN2S9PAaozipZraWLVePFMcD+\nLYSr1yMQCnHol1/Ojf/+CQ685qXY+QIn//YT3H39Kzn9T5+rufZ+s0rbABdXmD1V3ASY6uJAp3+7\nHvaaWDFfLHX0KgKRcJNPIxupNQq46NNNgK5amVWZxRVs22nX3u4YdTPFR/YTLBhEl8u/B3cTYGEl\ny/nPfBmAYY0AitStu72fZKyTxaU5JuYuNOx5T40Xw9X7VaySned2Vrn1VoWr+0dbX/UxwPOfdbqq\nBl5wo661Paoyt8q2babGnWJVt4pVsoZ/P4HUYWLULVbtbGBupKeTq//s97j+yx+h6xlHWZmc4Ue/\n86fc+4LXM/2t+xv26yTbgoSDBulsgeMPOBt4cr29hH38QXKv6X/Bsxl+1Qu57K2/2uyjSA0dNYpV\nGR9vAoRysOzC/PqdVYstEK4OED/kFBOj8+XuD3cMcPxr95KdmqX9yiMkH395U84n4keGYZRGAY+P\nbryIol4Fu8DpYrHqkDqrZBe4X9q4elWs8o1yZ9XqYpVt21z43FcBGPTpFsC9IJ5wi1UrZNJZlpdy\nRNqCvu7kl53R0lWOfN6msydOpG13Rjs6Hn85T/uXv+boB95BdKifufsf4psveiP3/frbWTo/vu3n\nNwyjFLJ+/KHTAIT2tc4q070glIjxhPf8N7qvu6bZR5EaUkedYtXcfesHCC/6eBMglFd2L8wtrzvG\n0wp5VQDBWBvR4QHiC+WfpeJOZ9W54gjg8CteUApcF5H6uKOAjdoIODF7nszKIp2JHjriXQ15TpGN\nxOMRAsHya786q/yj2hjgwgPHWHzkJOHuTrpvuLYZR5M6lDqrFldWjQDqWkzWauliFex8V9VahmEw\n+JKf4Ia7P84lv/1LBNoinP/Ul7j7ma/i2F/+I/ml6mHG9egp5lZNHD8HQOLAvo3uLiJb1HH1ZRjB\nIAsPHSefvrj7qNRZ5dPMqkgkRFs0RD5XYClzcYh8aRNg0v/fcsVHhksh6+CMAa5MzzH2pXsgEGDw\nZ5/fxNOJ+NPhBm8EVF6V7DYjYKzqHu7u1wiSX7T1FwPW14wBni8Gq+/76ef4cvnNXhFPFDOrFiqK\nVT36+ycXa/1i1Q6Eq9cjlIhx2Vt+hRvu+hgDL3wO+XSGR971Ae559i8w9sW7txxI6uZW5S+MOf8+\nMtiwM4tIWTAepf3KI9j5PHM/fHjVbYVsjszpC2AYxA769+9gaSPg7MVFdLezKuHzziqA+JEDq4tV\n8R4ufPYr2NkcPTc+hag6VEU2baS/sRsB3byqA32XNuT5ROrhjsR3dMWIRFTc8Iv1xgBt2y7lVe17\nsUYAvcz9ItTprEoD0NWrTYBysdYvVu1QuHq94oeGuObv38VTb/1L2q84TObkOb732rfwnZ/7bRYe\nPrHp53PHAJOzMwAMXebPrg4RP0g9yfkwNnvf6kyWpbMXsPN5okP9BKP+LeaUQtbXya1Kt0hmFUBi\nZD/xio2AqUQ3Z2/9AuCMAIrI5g107ScWSTC9MM7M4vrr4zfD7axSXpXsJvd9UHlV/tLW54zzL09M\nlxZazd33IJmT52jr76H7GUebeTypwc2sWlxYZnpS4epS3R4oVu3uGGA1Pc96Ctd/9aNc9ce/TSiV\nZPKOb/GNm17NA297L9m5hdpP4D5P8S93x8wUAEOX+jMvR8QPOo6uH7Je2gR4yN9//zbaCLg474wB\ntkLYZfzw/lWdVeGxDLPf/RHBRJz+W25s4slE/CtgBDjU7ywmaERulcYApRncDmPlVflLIBIm3N0J\nhQLLE9NAxQjgi27CCAabeTypobwNsLKzSsUquVhLF6viiYinugICoRCHXv8KbvzGP3PgNS/Bzhc4\n+cFPcPd1Jmc+dht2oVDzOXriYQL5PImFOWzDIDbYvwsnF9mbUqWNgKszWcqbAP1erHIu0udnL+6s\nKm0DbIUxwMP7iReLVaFgmJnP3Q04mRahRKyZRxPxtUblVi1nM5yfPk3ACDLcc7gRRxOpy9VPHubw\nFX08/lp/v5/vRZWjgHahwIXbvgZoBNAP3Myqys4qjQHKelq6WNU/1OHJrQKR3i6u/rM3c/2XPkzX\n04+yMjnDD9/0J9x7y+uZ/vZ/bPjY3kSY9rkZDNsm19lJIKz5epGdkrzyCIG2COljp1Z1QPp9E6DL\nLVa5+VSVSplVHir4b1X80DCJOee9oLu9n3O3fhGAIY0AimxLaSPg2PaKVWcmjmPbBYZ6RgiH/N/N\nKf4xMNTBz772WnVW+VDlRsCZ7/6IpbOjRIcH6Lz26iafTGpxO6vmZ5bIZQvEExHaouEmn0q8qLWL\nVR4ZAaym4wlX8LTP/DVP/Ju30zbYx9z9D/LNn3kD9//GO1i6ML7uY3rjYZKzTrtrcJ+6qkR2UiAS\nJvk4J+x37v7yhzG/bwJ0uWOA83PrZVYVtwG2QGdVMB6lp72f678U4mVtz2fpzAWiwwN0X39Ns48m\n4muN6qwqjwAqXF1E6lO5EfD8Z74MwL4X3YwRaOmPty0hHAkSCpf/nDQCKNW09N/mZm0C3AzDMBh6\n6fN51j3/zJHfei2BtgjnPvlF7r7+VTz2vn+ksLyy6v7d8TDJYl5VfL+KVSI7rTQK+P1yblX6uFus\nao3OqrWZVblcgaVMFiNgEIu3xjddicMHuPyHQYy/vgOAoZf/pC5oRbZpqHuEcDDC2MxZFpfmt/w8\nClcXkc0qdVadH2f0tq8DMPjim5t5JKmTYRilkHXQCKBU19JX6n4oVrlCiRiXv/UN3HDXPzHwU88m\nn87w8Ds/wD3P/gXGvnQPtm0D0BYKsC8zB0D3yFAzjyyyJ5SKVfc5nQN2oUD6VGt0ViVLAeurO6vc\nTYDxRAQj4L1R6q1w88Uyp84BMPTyW5p5HJGWEAqGS4HoJ8a2HrKucHUR2Sy3WHXhtq+xPDZJ7NAQ\nHUevbPKppF7xis59dVZJNS1drPLjCsz4oWGu+fCf8BTrvbRffpj0ibN87zVv5rs//yYWHjkBwHPb\ncwB0HNzXxJOK7A3uhY+7EXD5wgSFpRUiPZ2Ekv57jakUT0QwDEgvrpDPlxc8LLojgC2QV+WqLCym\nrnkc7ZeNNO8wIi2klFu1xY2Atm2Xi1X9KlaJSH2ixTHAhYeOAzD4kud5MqtY1lfZWeXHz+yyO1q6\nWOVnvTc+leu/+lGu/KPfJNTRzsTXv8k3nvtqHnzbXxI87XR1xIZVrBLZae2XHSIYj7F05gIrE9Ok\nS5sA/d1VBRAIBpyClL06ZD1d2gTYOkHH8SMHSv9dweoijbPd3KqZxQnmM7Mk2pJ0tyveQETq43ZW\nuQa1BdBX4u0aA5TaVKzysEA4xMivvJIb//0T7H/1i7HzBU588J+Z+vfvARAd0kWdyE4zgkE6nuh0\nDsz+4AHSLbIJ0FXOrSqPArqFq3gLhKu7EsXiohEOKdNCpIHKGwG31llVOQKorggRqVdlsSpx2SHa\nr7qkiaeRzSoVqwzo7FaxStanYpUPRHq7ePz/fAvXffHDdD7tic4PDYPYgcHmHkxkj0i5o4D3PVju\nrPJ5XpWrPenmVpU7qxbn3THA1umsar/yCAde+1KueNtvEOnpbPZxRFrGwd5LCRhBzk4eZzmb2fTj\nT4096jyPRgBFZBPcbYDgdFWp2O0v8YRz/dnRGSMUDjb5NOJVoWYfQOqXeuIVPP2zf8PYF+6ikM3p\nA5fILkldUwxZ/8EDBKPOm2tLd1aVxgBbp7PKCAS4+t2/1+xjiLScSDjKcM8IpyeOcWr8US4besKm\nHn+y1Fl16U4cT0RaVDAeJdLTycrkDPvUMe07btREV4+6qqQ6Fat8xjAMBn7q2c0+hsieUtoI+IMH\niO5zvslrhcwqgPaUU5Can1sns6qFAtZFZOccHriS0xPHOD764KaLVdoEKCJb9cS/eQfZqVktTfGh\nkct7uezqAY4+7UDtO8uepWKViEgNsUPDhDuTrIxPkZ2eBZzNna3AHQNcXGcMMN5CAesisnNGBq7k\nrh/dvumNgLl8lrOTxzEwONCrvBkR2ZzeG5/a7CPIFsXiEV78C9c0+xjiccqsEhGpwTAMOoq5VXYu\nTyiZINwiY7juGOB8i48BisjOcTcCntjkRsBzUyfIF3IMdO4nGtEoiIiIiJSpWCUiUgd3FBCcvKpW\nCfLcaBugxgBFpB6H+i8H4NTEo+Ty2bofd2qsOAKocHURERFZQ8UqEZE6rC5WtUZeFUAytXob4MpK\njuxKnmAoQFtUk+IiUlu8rZ19nQdKY331OjVR3ASovCoRERFZQ8UqEZE6pI6Wi1WxFtkECBBpCxEK\nB8mu5FleypFeKOdVtUr3mIjsvJGBKwA4volRwFPjbrFKmwBFRERkNRWrRETq0DbYR1t/DwCJFtkE\nCE4eV7LD7a5aKo8AKq9KRDZhK7lVpTFAdVaJiIjIGipWiYjUwTAM+p53PUYwSOe1j2/2cRqqnFu1\nXOqsUl6ViGxGqbNqrL6NgPOZGaYWxmgLR+nvbJ1uVREREWkMFatEROp01TvfxI3f+iTtVxxu9lEa\nqn3dzqpIM48kIj4z0u90Vp0cfZiCXah5f3cE8EDvpQQMXY6KiIjIaro6EBGpUzDWRmx4oNnHaLjK\njYCLC06xKq4xQBHZhFSim+72fpayaS5Mn655/1PjGgEUERGR6lSsEhHZ49zOqvm55XJnlcYARWST\nNpNbVcqr6lexSkRERC6mYpWIyB7ndlYtVmZWaQxQRDapvBGwdm6VOwZ4SJ1VIiIiso5Qsw8gIiLN\nVe6sWsIwnJ+ps0pENqvezqpCIc/piWJmVd+lO34uERER8R8Vq0RE9rjKzKpAwKlWJZRZJSKb5HZW\nnRh7ENu2Mdzq9xqjM2dZyS3TkxygPdqxm0cUERERn9AYoIjIHtde7KJaXFhhsTgGGNcYoIhsUk9y\nH8lYivnMLJPzF6reT+HqIiIiUouKVSIie1wwFCCWiGAXbPK5AuFIkEibGm9FZHMMw2Ck3x0FrJ5b\nVS5WaQRQRERE1qdilYiIkOwoj/0pr0pEtqqekHV1VomIiEgtKlaJiEgptwq0CVBEtq6ekPWTbrGq\nX8UqERERWZ+KVSIiUtoICBBXuLqIbNFIf7Gzamz9zqrM8iJjM2cJBcMMdh3czaOJiIiIj6hYJSIi\nqzurNAYoIlu0r/sg0XCcqflR5tLTF91+euIYAPt7jhAKhnf7eCIiIuITKlaJiMiqzqqEOqtEZIsC\nRoBDxfG+4+uMAipcXUREROqhYpWIiKzprFJmlYhs3Ua5VQpXFxERkXqoWCUiIuqsEpGGGSkWq9bb\nCHhq/FFA4eoiIiKyMRWrRERkVWdVXJlVIrIN1TqrbNtWZ5WIiIjURcUqEREhFg8TDBoAJNo1Bigi\nWzfcc5hQMMyFmdOklxdKP5+cv0B6eYGOeBediZ4mnlBERES8TsUqERHBMAyOPv0gl1zVT7Kiy0pE\nZLNCwTAHe50A9ZNjD5d+fnJMXVUiIiJSn1CzDyAiIt5w009f1ewjiEiLGBm4gsdGH+D46INcdeDJ\nQEVelYpVIiIiUoM6q0RERESkoUbWya0q51Vd2pQziYiIiH+oWCUiIiIiDVUKWR8rbwR0i1WH1Fkl\nIiIiNWgMUEREREQa6mDfpRhGgDMTx1nJLoFhcG7qJIYRYLj3SLOPJyIiIh6nzioRERERaai2cIzh\n7hEKdp7TE8c4O/EYtl1gqPsQkVBbs48nIiIiHqdilYiIiIg0nJtbdXz0QU5NKFxdRERE6qdilYiI\niIg03OGBKwA4MfoQp8bccHUVq0RERKQ2FatERDbhtttua/YRRKQFteJry6rOqnG3s0qbAEV2Uyu+\ntojI3qBilYjIJvzrv/5rs48gIi2oFV9bRvqdh70jbAAACrRJREFUzqpT44+UtgKqs0pkd7Xia4uI\n7A0qVomIiIhIwyWiSfo7h8nmV5jPzBCLJOjt2NfsY4mIiIgPhBrxJKZpBoG3AL8I7AdGgVuBd1iW\ntVjH4/uBPwZeAHQDjwHvtyzrg404n4iIiIjsvpH+KxmbOQvAwf7LMAyjyScSERERP2hUZ9XHcIpV\nHwZeBvw58Grg86ZpbvhrmKaZAu4Gngu8DXg5cBvwXtM039Wg84mIiIjILjtczK0COKQRQBEREanT\ntjurTNN8GU6B6fmWZX214udfBb4H/Brw/g2e4o+ATuCJlmWNFn/2BdM0HwX+1jTNf7Ys6/7tnlNE\nREREdtdIcSMgKK9KRERE6teIzqpfBe6oLFQBWJb1APBx4I3VHmiaZgR4DfC+ikKV6yPAieLzi4iI\niIjPVHZWqVglIiIi9dpWsaqYVXUDcHuVu9wOXGWaZm+V258MJIHPr73Bsiwb+ALwnO2cUURERESa\nozPRw0j/FaTi3Rzsu7TZxxERERGf2O4Y4CAQBx6scvtDgAFcAkysc7t71bLR41+/nQOKiIiISPP8\n91d9gHw+RzQSb/ZRRERExCe2OwbYXfznTJXb3Z/3bPD4nGVZ6Q0eHzFNU1c3IiIiIj7UHu0gleiu\nfUcRERGRou0Wq5KADWSq3O4WoVIbPH5pg+ev9XgREREREREREWkh2x0DnMcZ84tVud3tiJrd4PHR\nDZ6/1uM39L3vfW8rDxMRqeoNb3iDXltEpOH02iIiO0GvLSLiV9vtrJoq/rOzyu1uR9TkBo8PbTDm\nlwJWNhgTFBERERERERGRFrLdzqrzOCOAV7DORj/gSpwxwceqPP5Y8Z9XAN+v8vhqj63q5ptvNjb7\nGBERERERERERab5tdVZZlpUH7gFeWOUuLwQetCxrvMrt3wMWNnj8LcDXt3NGERERERERERHxj+2O\nAQJ8EHiuaZo3Vf7QNM2rgJ8DPlDxsw7TNEv5VpZlLQMfBf6LaZr9ax7/S8Bh4EMNOKOIiIiIiIiI\niPiAYdv2tp/ENM1bgecB7wZ+AFwGvBVnhO85lmXli7lUp4Exy7KuqnhsJ/BNnKD2dwPngBuANwHv\ntSzrrds+oIiIiIiIiIiI+EIjOqsAXgX8OfA64FM4haaPAbcURwUBcjiFqFOVD7Qsawa4EbgTeAdw\nK/Ai4E0qVImIiIiIiIiI7C0N6awSERERERERERFphEZ1VomIiIiIiIiIiGybilUiIiIiIiIiIuIZ\nKlaJiIiIiIiIiIhnqFglIiIiIiIiIiKeoWKViIiIiIiIiIh4hopVIiIiIiIiIiLiGSpWiYiIiIiI\niIiIZ4SafYBGMk0zCLwF+EVgPzAK3Aq8w7KsxSYeTUR8zjTNQpWbbOCllmV9bjfPIyL+Y5rmEHA7\ncMiyrO4q93kj8OvAEWAK+DzwPyzLGtu1g4qIr9R6bTFN8wRwcJ2H2sBvW5b1lzt7QhHxE9M0I8Bv\nAq8BLgFmgC8Bb7cs68Q699+Ra5dW66z6GE6x6sPAy4A/B14NfN40zVb7vYrI7nsf8Jw1/3kucE+z\nDiQi/mCa5uOBe4EnbHCfdwPvAW4DXg68DbgJuMM0zeRunFNE/KWe1xacotQnWf8a5pM7eT4R8RfT\nNA2chp8/xCmCvxx4O3Ad8C3TNA+tuf+OXbu0TGeVaZovw/kf5/mWZX214udfBb4H/Brw/iYdT0Ra\nwzHLsu5q9iFExF9M07wZ5wPhg8BncL5IW3ufa4HfBX7FsqwPV/z8duB+nIu/392VA4uIL9Tz2lLh\njK5hRKQOPwP8NPBay7L+r/tD0zQ/DfwI+APgl4s/29Frl1bqNvpV4I7KQhWAZVkPAB8H3tiUU4mI\niMhe9xrgu8DzcNrj1/OrwGOVF3sAlmWNAn8F/JJpmi3zJaOINEQ9ry0iIpuRBv4X8E+VP7QsawJn\nFPDpFT/e0WuXlihWFbOqbsBpU1vP7cBVpmn27t6pRERERAB4A/BTNfIznw18ocpttwOdwJMafTAR\n8bV6XltEROpmWdZXLMt6i2VZ9jo3twHZin/f0WuXVvmGbhCI47TAruchwMAJB5vYrUOJSMv5ddM0\n/xuQAh4BPmBZ1l81+Uwi4nGWZS3VcbdLqO865juNOpeI+Fudry2ul5qmaQK9wCngH4E/syxrZUcO\nJyItxTTNPuAFwN9X/HhHr11aorMKcLdezFS53f15zy6cRURa0xng/+C03L8SuA94n2maf9PUU4mI\n75mm2QEEqXIdY1nWApBH1zEisjUTwCdwOrFeBnwZJ0vmX5p5KBHxlQ8BYeAvYHeuXVqlsyqJs+Ui\nU+X2dPGfqd05joi0oMOWZeUr/v2zpmmeBN5qmuY/W5Z1Z7MOJiK+527LqXYd496m6xgR2YpnrLmG\n+bxpmj8APmia5msty/posw4mIt5nmuZf4ASv/1fLsk4Wf7zj1y6t0lk1j9NiFqtye7z4z9ndOY6I\ntJo1F3muP8b5tnKj7TsiIrXMF/9Z7TrGvU3XMSKyaetdw1iW9SHgh+gaRkQ2YJrmfwd+E3j/mviT\nHb92aZVilbv9orPK7W41b3IXziIie4RlWRngG8CVzT6LiPiXZVlzOK3y617HmKaZwGm113WMiDTS\nV9A1jIhUYZrmG4E/BD5qWdZvVt62G9curVKsOo/TYnZFlduvxBkTfGzXTiQie8UKzgu1iMh2PMbG\n1zHufUREGkXXMCKyLtM0Xwm8Hyfv7nVV7raj1y4tUawqtrbeA7ywyl1eCDxoWdb47p1KRFqFaZoh\n0zQPrfPzIPAMnDZ6EZHtuANny856XogTYPqDXTuNiLQM0zSPVLnpBnQNIyJrmKb5k8BHgX8F/pNl\nWXaVu97BDl67tESxquiDwHNN07yp8oemaV4F/BzwgaacSkRawZ04YaTta37+ZmA/8He7fyQRaTEf\nAo6YpvlLlT80TXMA+DXgI5ZlZZtyMhHxLdM0/wm4t/haUvnznwOuw3ntEREBwDTNZwCfxClEvaJK\nbq9rR69dWmUbIJZlfdo0zU8DnzJN8904FbzLgLcC3wH+upnnExFfexfwKeAbpmn+L5zZaxMnlPQP\nLMv6fjMPJyL+Z1nWd0zTfA/w16ZpXobTMT6IUxSfAd7RzPOJiG/9b5wOh3tN0/xT4CTwk8B/BT5s\nWdZnmnk4EfGcz+OEor8HuN40zYvu4G5B3+lrl1bqrAJ4FfDnODOVnwLeBHwMuKVGRVBEpCrLsm4H\nngOcBv4CZ3b7EuBllmW9s4lHE5EWYlnW7wK/g7Me2sK5yLsTuLEYZCoisimWZX0Xp4PqWzhByZ8G\nbgR+1bKsX2nm2UTEk1I4Bafbga9V+U/JTl67GLZdbfxQRERERERERERkd7VaZ5WIiIiIiIiIiPiY\nilUiIiIiIiIiIuIZKlaJiIiIiIiIiIhnqFglIiIiIiIiIiKeoWKViIiIiIiIiIh4hopVIiIiIiIi\nIiLiGSpWiYiIiIiIiIiIZ6hYJSIiIiIiIiIinqFilYiIiIiIiIiIeIaKVSIiIiIiIiIi4hkqVomI\niIiIiIiIiGeoWCUiIiIiIiIiIp6hYpWIiIiIiIiIiHiGilUiIiIiIiIiIuIZKlaJiIiIiIiIiIhn\nqFglIiIiIiIiIiKeoWKViIiIiIiIiIh4hopVIiIiIiIiIiLiGf8fS6W+ZlZ49lgAAAAASUVORK5C\nYII=\n", "text/plain": [ "" ] }, "metadata": { "image/png": { "height": 392, "width": 597 } }, "output_type": "display_data" } ], "source": [ "data = ar.data\n", "for i, d in enumerate(data):\n", " plt.plot(d['a'], label='engine: ' + str(i))\n", "plt.title('Data published at time step: ' + str(data[0]['i']))\n", "plt.legend()" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.5.1" } }, "nbformat": 4, "nbformat_minor": 0 } ipython-ipyparallel-14e3c43/docs/source/examples/Futures.ipynb000066400000000000000000000373711520071063500246300ustar00rootroot00000000000000{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Futures in IPython Parallel\n", "\n", "The IPython Parallel AsyncResult object extends `concurrent.futures.Future`,\n", "which makes it compatible with most async frameworks in Python.\n" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Starting 4 engines with \n", "100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 4/4 [00:01<00:00, 3.96engine/s]\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" }, { "name": "stdout", "output_type": "stream", "text": [ "I got PID: 64955\n" ] } ], "source": [ "import ipyparallel as ipp\n", "\n", "rc = ipp.Cluster(n=4).start_and_connect_sync()\n", "\n", "dv = rc[:]\n", "dv.activate()\n", "dv" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Do some imports everywhere" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "%%px --local --block\n", "import os\n", "import time\n", "\n", "import numpy as np\n", "from numpy.linalg import norm" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "tags": [] }, "outputs": [], "source": [ "def random_norm(n):\n", " \"\"\"Generates a 1xN array and computes its 2-norm\"\"\"\n", " A = np.random.random(n)\n", " return norm(A, 2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The basic async API hasn't changed:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "f = rc[-1].apply(random_norm, 100)\n", "f" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "np.float64(5.916785808055198)" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "f.get()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "But the full Futures API is now available:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "np.float64(5.916785808055198)" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "f.result()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The standard futures API has methods for registering callbackes, etc." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "64955" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "f = rc[-1].apply(os.getpid)\n", "f.add_done_callback(lambda _: print(f\"I got PID: {_.result()}\"))\n", "f.result()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A more complex example shows us how AsyncResults can be integrated into existing async applications, now that they are Futures:" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ ". [64952, 64953, 64954, 64955]\n", ". . [64952, 64953, 64954, 64955]\n", ". . . [64952, 64953, 64954, 64955]\n", ". . . . [64952, 64953, 64954, 64955]\n" ] } ], "source": [ "import asyncio\n", "import sys\n", "\n", "\n", "def sleep_task(t):\n", " time.sleep(t)\n", " return os.getpid()\n", "\n", "\n", "async def background():\n", " \"\"\"A backgorund coroutine to demonstrate that we aren't blocking\"\"\"\n", " while True:\n", " await asyncio.sleep(1)\n", " print('.', end=' ')\n", " sys.stdout.flush() # not needed after ipykernel 4.3\n", "\n", "\n", "async def work():\n", " \"\"\"Submit some work and print the results when complete\"\"\"\n", " for t in [1, 2, 3, 4]:\n", " ar = rc[:].apply(sleep_task, t)\n", " result = await asyncio.wrap_future(ar) # this waits\n", " print(result)\n", "\n", "\n", "bg = asyncio.Task(background())\n", "await work()\n", "bg.cancel();" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "So if you have an existing async application using coroutines and/or Futures,\n", "you can now integrate IPython Parallel as a standard async component for submitting work and waiting for its results." ] }, { "cell_type": "markdown", "metadata": { "tags": [] }, "source": [ "## Executors\n", "\n", "Executors are a standard Python API provided by various job-submission tools.\n", "A standard API such as Executor is useful for different libraries to expose this common API for asynchronous execution,\n", "because it means different implementations can be easily swapped out for each other and compared,\n", "or the best one for a given context can be used without having to change the code.\n", "\n", "With IPython Parallel, every View has an `.executor` property, to provide the Executor API for the given View.\n", "Just like Views, the assignment of work for an Executor depends on the View from which it was created.\n", "\n", "You can get an Executor for any View by accessing `View.executor`:" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[0, 1, 2, 3]" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ex_all = rc[:].executor\n", "ex_all.view.targets" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "64954\n", "64952\n", "64954\n", "64952\n", "64954\n", "64952\n", "64954\n", "64952\n", "64954\n", "64952\n" ] } ], "source": [ "even_lbview = rc.load_balanced_view(targets=rc.ids[::2])\n", "ex_even = even_lbview.executor\n", "for pid in ex_even.map(lambda x: os.getpid(), range(10)):\n", " print(pid)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Typically, though, one will want an Executor for a LoadBalancedView on all the engines.\n", "This is what the top-level `Client.executor()` method will return:" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ex = rc.executor()\n", "ex.view" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's create a few compatible Executor instances" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Comparing Executors\n", "\n", "Let's make a few Executors. Aside: [dask.distributed][] is a great library. Any IPython Parallel cluster can be bootstrapped into a dask cluster.\n", "\n", "[dask.distributed]: https://distributed.readthedocs.io\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "There *can* be serialization differences, especially for interactively defined functions (i.e. those in defined in a notebook itself).\n", "That's why we define our task function in a local module,\n", "rather than here. ProcessPoolExecutor doesn't serialize interactively defined functions.\n", "But for the most part working with functions defined in modules works consistently across implementations." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "\u001b[0;32mimport\u001b[0m \u001b[0mnumpy\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m\u001b[0;32mfrom\u001b[0m \u001b[0mnumpy\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlinalg\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mnorm\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m\u001b[0;32mdef\u001b[0m \u001b[0mtask\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mn\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;34m\"\"\"Generates a 1xN array and computes its 2-norm\"\"\"\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mA\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnumpy\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mones\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mn\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mnorm\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mA\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%pycat task_mod.py\n", "from task_mod import task" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "tags": [] }, "outputs": [], "source": [ "def interactive_task(n):\n", " \"\"\"Generates a 1xN array and computes its 2-norm\"\"\"\n", " import numpy\n", " from numpy.linalg import norm\n", "\n", " A = numpy.ones(n)\n", " return norm(A, 2)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "from concurrent.futures import ProcessPoolExecutor, ThreadPoolExecutor\n", "\n", "distributed_client = rc.become_dask()\n", "dist_ex = distributed_client.get_executor()\n", "\n", "N = 4\n", "ip_ex = rc.executor(targets=range(N))\n", "thread_ex = ThreadPoolExecutor(N)\n", "process_ex = ProcessPoolExecutor(N)" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "tags": [] }, "outputs": [], "source": [ "executors = [process_ex, thread_ex, ip_ex, dist_ex]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can submit the same work with the same API,\n", "using four different mechanisms for distributing work.\n", "The results will be the same:" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "ProcessPoolExecutor\n", "['0', '1', '2', '3', '4']\n", "ThreadPoolExecutor\n", "['0', '1', '2', '3', '4']\n", "ViewExecutor\n", "['0', '1', '2', '3', '4']\n", "ClientExecutor\n", "['0', '1', '2', '3', '4']\n" ] } ], "source": [ "for executor in executors:\n", " print(executor.__class__.__name__)\n", " it = executor.map(str, range(5))\n", " print(list(it))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This makes it easy to compare the different implementations. We are going to submit some dummy work—allocate and compute 2-norms of arrays of various sizes." ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 1048576, 1261463, 1517571, 1825676, 2196334, 2642245,\n", " 3178688, 3824041, 4600417, 5534417, 6658042, 8009791,\n", " 9635980, 11592325, 13945857, 16777216])" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sizes = np.logspace(20, 24, 16, base=2, dtype=int)\n", "sizes" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Run the work locally, to get a reference:" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Local time:\n", "CPU times: user 65.8 ms, sys: 107 ms, total: 173 ms\n", "Wall time: 268 ms\n" ] } ], "source": [ "%%time\n", "ref = list(map(task, sizes))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And then run again with the various Executors:" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "for executor in executors:\n", " print(executor.__class__.__name__)\n", " result = executor.map(task, sizes)\n", " rlist = list(result)\n", " assert rlist == ref, f\"{rlist} != {ref}\"\n", " # time the task assignment\n", " %timeit list(executor.map(task, sizes))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For this toy work, the stdlib ThreadPoolExecutor appears to perform the best.\n", "That's useful info, and likely to be true for most workloads that release the GIL and fit comfortably into memory.\n", "When the GIL is involved, ProcessPoolExecutor is often best for simple workloads.\n", "\n", "One benefit of IPython Parallel or Distributed Executors over the stdlib Executors is that they do not have to be confined to a single machine.\n", "This means the standard Executor API lets you develop small-scale parallel tools that run locally in threads or processes,\n", "and then extend the *exact same code* to make use of multiple machines,\n", "just by selecting a different Executor.\n", "\n", "That seems pretty useful. [joblib][] is another package to implement standardized APIs for parallel backends,\n", "which IPython Parallel [also supports](joblib.ipynb).\n", "\n", "[joblib]: https://joblib.readthedocs.io" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.10" }, "widgets": { "application/vnd.jupyter.widget-state+json": { "state": {}, "version_major": 2, "version_minor": 0 } } }, "nbformat": 4, "nbformat_minor": 4 } ipython-ipyparallel-14e3c43/docs/source/examples/Monitoring an MPI Simulation - 1.ipynb000066400000000000000000002123441520071063500306430ustar00rootroot00000000000000{ "cells": [ { "cell_type": "markdown", "metadata": { "slideshow": { "slide_start": false } }, "source": [ "# Interactive monitoring of a parallel MPI simulation from a notebook\n", "\n", "first, start a cluster with mpi.\n", "\n", "Or load an existing cluster with e.g.\n", "\n", "```python\n", "cluster = Cluster.from_file(profile=\"mpi\")\n", "```" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "slideshow": { "slide_start": false } }, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "import numpy as np\n", "from IPython.display import display" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Using existing profile dir: '/Users/minrk/.ipython/profile_default'\n", "Starting 4 engines with \n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "8b14b3b6f0cb4a67be4645c8274c4074", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/4 [00:00" ] }, "metadata": { "image/png": { "height": 365, "width": 572 } }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Monitoring interrupted, simulation is ongoing!\n", "Monitored for: 0:00:19.277042.\n" ] } ], "source": [ "monitor_simulation(refresh=1);" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_start": false } }, "source": [ "If you execute the following cell before the MPI code is finished running, it will stop the simulation at that point, which you can verify by calling the monitoring again:" ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "slideshow": { "slide_start": false } }, "outputs": [], "source": [ "view['stop'] = True" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[stdout:0] \n", "{\n", " \"shell_port\": 57579,\n", " \"iopub_port\": 57580,\n", " \"stdin_port\": 57581,\n", " \"control_port\": 57583,\n", " \"hb_port\": 57582,\n", " \"ip\": \"127.0.0.1\",\n", " \"key\": \"944dac79-816e4a12e48b45baf11ab5e8\",\n", " \"transport\": \"tcp\",\n", " \"signature_scheme\": \"hmac-sha256\",\n", " \"kernel_name\": \"\"\n", "}\n", "\n", "Paste the above JSON into a file, and connect with:\n", " $> jupyter --existing \n", "or, if you are local, you can connect with just:\n", " $> jupyter --existing /Users/minrk/.ipython/profile_default/security/kernel-46128.json\n", "or even just:\n", " $> jupyter --existing\n", "if this is the most recent Jupyter kernel you have started.\n" ] } ], "source": [ "%%px --target 0 --block\n", "from ipyparallel import bind_kernel\n", "\n", "bind_kernel()\n", "%connect_info" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "%%px --target 0 --block\n", "%qtconsole" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.10" }, "widgets": { "application/vnd.jupyter.widget-state+json": { "state": { "02f2d94254d542bdbd3cff7f9bc035e7": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "FloatProgressModel", "state": { "_view_name": "ErrorWidgetView", "bar_style": "success", "error": {}, "layout": "IPY_MODEL_4cdefd8ae5764be8a8bf1f3c374492f0", "max": 4, "msg": "Failed to load model class 'FloatProgressModel' from module '@jupyter-widgets/controls'", "style": "IPY_MODEL_d101b978f358462fbcc0ad51c4be1ee1", "value": 4 } }, "0ab41c84c30445dfa2c77e0e2014dd46": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_view_name": "ErrorWidgetView", "error": {}, "msg": "Failed to load model class 'LayoutModel' from module '@jupyter-widgets/base'" } }, "11097de7cc114cc88d99cd17a693d510": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_view_name": "ErrorWidgetView", "error": {}, "msg": "Failed to load model class 'LayoutModel' from module '@jupyter-widgets/base'" } }, "20d1375897eb4fdcb87fda73573ad678": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HBoxModel", "state": { "_view_name": "ErrorWidgetView", "children": [ "IPY_MODEL_7a50e71a222340a4ba51e70ef3abce47", "IPY_MODEL_02f2d94254d542bdbd3cff7f9bc035e7", "IPY_MODEL_876517d46fa6488f8fb61db3ed689b96" ], "error": {}, "layout": "IPY_MODEL_0ab41c84c30445dfa2c77e0e2014dd46", "msg": "Failed to load model class 'HBoxModel' from module '@jupyter-widgets/controls'" } }, "212854fc12af402eb3a57438a851dfac": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "DescriptionStyleModel", "state": { "_view_name": "ErrorWidgetView", "description_width": "", "error": {}, "msg": "Failed to load model class 'DescriptionStyleModel' from module '@jupyter-widgets/controls'" } }, "2231573544774560984193c60e6370cb": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_view_name": "ErrorWidgetView", "error": {}, "msg": "Failed to load model class 'LayoutModel' from module '@jupyter-widgets/base'" } }, "4205fec62aea485c8ffaf31ca98859aa": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_view_name": "ErrorWidgetView", "error": {}, "msg": "Failed to load model class 'LayoutModel' from module '@jupyter-widgets/base'" } }, "4cdefd8ae5764be8a8bf1f3c374492f0": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_view_name": "ErrorWidgetView", "error": {}, "msg": "Failed to load model class 'LayoutModel' from module '@jupyter-widgets/base'" } }, "5143e78c3dcc439a95b7ec24ea37c2be": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "DescriptionStyleModel", "state": { "_view_name": "ErrorWidgetView", "description_width": "", "error": {}, "msg": "Failed to load model class 'DescriptionStyleModel' from module '@jupyter-widgets/controls'" } }, "6817e30d6c824bd194e102e20a9e7cda": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "DescriptionStyleModel", "state": { "_view_name": "ErrorWidgetView", "description_width": "", "error": {}, "msg": "Failed to load model class 'DescriptionStyleModel' from module '@jupyter-widgets/controls'" } }, "6be3837161754e08a715ac0c78fa1080": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_view_name": "ErrorWidgetView", "error": {}, "msg": "Failed to load model class 'LayoutModel' from module '@jupyter-widgets/base'" } }, "7a50e71a222340a4ba51e70ef3abce47": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", "state": { "_view_name": "ErrorWidgetView", "error": {}, "layout": "IPY_MODEL_2231573544774560984193c60e6370cb", "msg": "Failed to load model class 'HTMLModel' from module '@jupyter-widgets/controls'", "style": "IPY_MODEL_6817e30d6c824bd194e102e20a9e7cda", "value": "100%" } }, "7afda4d37ef841c684bb624ff6b19267": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "DescriptionStyleModel", "state": { "_view_name": "ErrorWidgetView", "description_width": "", "error": {}, "msg": "Failed to load model class 'DescriptionStyleModel' from module '@jupyter-widgets/controls'" } }, "811e5930f3bc42899a5e700d9b275bdb": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_view_name": "ErrorWidgetView", "error": {}, "msg": "Failed to load model class 'LayoutModel' from module '@jupyter-widgets/base'" } }, "876517d46fa6488f8fb61db3ed689b96": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", "state": { "_view_name": "ErrorWidgetView", "error": {}, "layout": "IPY_MODEL_11097de7cc114cc88d99cd17a693d510", "msg": "Failed to load model class 'HTMLModel' from module '@jupyter-widgets/controls'", "style": "IPY_MODEL_7afda4d37ef841c684bb624ff6b19267", "value": " 4/4 [00:05<00:00, 5.54s/engine]" } }, "88e7ff230d284b368ace25166967a93d": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", "state": { "_view_name": "ErrorWidgetView", "error": {}, "layout": "IPY_MODEL_6be3837161754e08a715ac0c78fa1080", "msg": "Failed to load model class 'HTMLModel' from module '@jupyter-widgets/controls'", "style": "IPY_MODEL_5143e78c3dcc439a95b7ec24ea37c2be", "value": "100%" } }, "8b14b3b6f0cb4a67be4645c8274c4074": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HBoxModel", "state": { "_view_name": "ErrorWidgetView", "children": [ "IPY_MODEL_88e7ff230d284b368ace25166967a93d", "IPY_MODEL_eee11ad7360e4cc2b6b2f196ff4a1d45", "IPY_MODEL_9d0e878210c24c93bc764ec9ec53b84e" ], "error": {}, "layout": "IPY_MODEL_a15b2b7fec55486689859c321b2ca7e3", "msg": "Failed to load model class 'HBoxModel' from module '@jupyter-widgets/controls'" } }, "9d0e878210c24c93bc764ec9ec53b84e": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", "state": { "_view_name": "ErrorWidgetView", "error": {}, "layout": "IPY_MODEL_811e5930f3bc42899a5e700d9b275bdb", "msg": "Failed to load model class 'HTMLModel' from module '@jupyter-widgets/controls'", "style": "IPY_MODEL_212854fc12af402eb3a57438a851dfac", "value": " 4/4 [00:06<00:00, 6.12s/engine]" } }, "a15b2b7fec55486689859c321b2ca7e3": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_view_name": "ErrorWidgetView", "error": {}, "msg": "Failed to load model class 'LayoutModel' from module '@jupyter-widgets/base'" } }, "afa1055878c444c49c4db6767994e04b": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "ProgressStyleModel", "state": { "_view_name": "ErrorWidgetView", "description_width": "", "error": {}, "msg": "Failed to load model class 'ProgressStyleModel' from module '@jupyter-widgets/controls'" } }, "d101b978f358462fbcc0ad51c4be1ee1": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "ProgressStyleModel", "state": { "_view_name": "ErrorWidgetView", "description_width": "", "error": {}, "msg": "Failed to load model class 'ProgressStyleModel' from module '@jupyter-widgets/controls'" } }, "eee11ad7360e4cc2b6b2f196ff4a1d45": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "FloatProgressModel", "state": { "_view_name": "ErrorWidgetView", "bar_style": "success", "error": {}, "layout": "IPY_MODEL_4205fec62aea485c8ffaf31ca98859aa", "max": 4, "msg": "Failed to load model class 'FloatProgressModel' from module '@jupyter-widgets/controls'", "style": "IPY_MODEL_afa1055878c444c49c4db6767994e04b", "value": 4 } } }, "version_major": 2, "version_minor": 0 } } }, "nbformat": 4, "nbformat_minor": 4 } ipython-ipyparallel-14e3c43/docs/source/examples/Monitoring an MPI Simulation - 2.ipynb000066400000000000000000001755341520071063500306550ustar00rootroot00000000000000{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Interactive visualization of MPI simulaitons\n", "\n", "In this example, which builds on our previous one of interactive MPI monitoring, we now demonstrate how to use the IPython data publication APIs.\n", "\n", "\n", "\n", "## Load IPython support for working with MPI tasks\n", "\n", "First, we create a cluster using `mpi` to launch the engines.\n", "This launches the engines using `mpiexec` so they are in the same mpi universe.\n" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Using existing profile dir: '/Users/minrk/.ipython/profile_default'\n", "Starting 4 engines with \n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "da09992ca3fd438eadf96a6599d5384e", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/4 [00:00" ] }, "metadata": { "image/png": { "height": 365, "width": 572 } }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Simulation completed!\n", "Monitored for: 0:00:11.457755.\n" ] } ], "source": [ "monitor_simulation(ar, refresh=1)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.10" }, "widgets": { "application/vnd.jupyter.widget-state+json": { "state": { "31b6b4a0105148e187aadfc70e0fe1c7": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", "state": { "_view_name": "ErrorWidgetView", "error": {}, "layout": "IPY_MODEL_c872eb3aedc4492eb5a7d3b3c24249bb", "msg": "Failed to load model class 'HTMLModel' from module '@jupyter-widgets/controls'", "style": "IPY_MODEL_7b50ee6a201f48f796c337a68ba8730c", "value": " 4/4 [00:05<00:00, 5.23s/engine]" } }, "401e2a9344964c7082435def275db2c8": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_view_name": "ErrorWidgetView", "error": {}, "msg": "Failed to load model class 'LayoutModel' from module '@jupyter-widgets/base'" } }, "650e652f16044e4f816006c8f334eadb": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", "state": { "_view_name": "ErrorWidgetView", "error": {}, "layout": "IPY_MODEL_9a56d508e10842299d798de5d18aa84a", "msg": "Failed to load model class 'HTMLModel' from module '@jupyter-widgets/controls'", "style": "IPY_MODEL_fe5f5baeb0b24e13bfb0aa8e3d411b0b", "value": "100%" } }, "7b50ee6a201f48f796c337a68ba8730c": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "DescriptionStyleModel", "state": { "_view_name": "ErrorWidgetView", "description_width": "", "error": {}, "msg": "Failed to load model class 'DescriptionStyleModel' from module '@jupyter-widgets/controls'" } }, "7d5e98d4de4b472080ce751a65546968": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "FloatProgressModel", "state": { "_view_name": "ErrorWidgetView", "bar_style": "success", "error": {}, "layout": "IPY_MODEL_401e2a9344964c7082435def275db2c8", "max": 4, "msg": "Failed to load model class 'FloatProgressModel' from module '@jupyter-widgets/controls'", "style": "IPY_MODEL_a577270a23bf46fa933a41e32d1a5a79", "value": 4 } }, "9a56d508e10842299d798de5d18aa84a": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_view_name": "ErrorWidgetView", "error": {}, "msg": "Failed to load model class 'LayoutModel' from module '@jupyter-widgets/base'" } }, "a577270a23bf46fa933a41e32d1a5a79": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "ProgressStyleModel", "state": { "_view_name": "ErrorWidgetView", "description_width": "", "error": {}, "msg": "Failed to load model class 'ProgressStyleModel' from module '@jupyter-widgets/controls'" } }, "bba28e827ace46e9b233476330b76938": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_view_name": "ErrorWidgetView", "error": {}, "msg": "Failed to load model class 'LayoutModel' from module '@jupyter-widgets/base'" } }, "c872eb3aedc4492eb5a7d3b3c24249bb": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_view_name": "ErrorWidgetView", "error": {}, "msg": "Failed to load model class 'LayoutModel' from module '@jupyter-widgets/base'" } }, "da09992ca3fd438eadf96a6599d5384e": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HBoxModel", "state": { "_view_name": "ErrorWidgetView", "children": [ "IPY_MODEL_650e652f16044e4f816006c8f334eadb", "IPY_MODEL_7d5e98d4de4b472080ce751a65546968", "IPY_MODEL_31b6b4a0105148e187aadfc70e0fe1c7" ], "error": {}, "layout": "IPY_MODEL_bba28e827ace46e9b233476330b76938", "msg": "Failed to load model class 'HBoxModel' from module '@jupyter-widgets/controls'" } }, "fe5f5baeb0b24e13bfb0aa8e3d411b0b": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "DescriptionStyleModel", "state": { "_view_name": "ErrorWidgetView", "description_width": "", "error": {}, "msg": "Failed to load model class 'DescriptionStyleModel' from module '@jupyter-widgets/controls'" } } }, "version_major": 2, "version_minor": 0 } } }, "nbformat": 4, "nbformat_minor": 4 } ipython-ipyparallel-14e3c43/docs/source/examples/Monte Carlo Options.ipynb000066400000000000000000012602071520071063500267070ustar00rootroot00000000000000{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Parallel Monto-Carlo options pricing" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This notebook shows how to use `ipyparallel` to do Monte-Carlo options pricing in parallel. We will compute the price of a large number of options for different strike prices and volatilities." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Problem setup" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "%matplotlib inline\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import numpy as np" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here are the basic parameters for our computation." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "price = 100.0 # Initial price\n", "rate = 0.05 # Interest rate\n", "days = 260 # Days to expiration\n", "paths = 10000 # Number of MC paths\n", "n_strikes = 6 # Number of strike values\n", "min_strike = 90.0 # Min strike price\n", "max_strike = 110.0 # Max strike price\n", "n_sigmas = 5 # Number of volatility values\n", "min_sigma = 0.1 # Min volatility\n", "max_sigma = 0.4 # Max volatility" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "strike_vals = np.linspace(min_strike, max_strike, n_strikes)\n", "sigma_vals = np.linspace(min_sigma, max_sigma, n_sigmas)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Strike prices: [ 90. 94. 98. 102. 106. 110.]\n", "Volatilities: [0.1 0.175 0.25 0.325 0.4 ]\n" ] } ], "source": [ "print(\"Strike prices: \", strike_vals)\n", "print(\"Volatilities: \", sigma_vals)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Monte-Carlo option pricing function" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The following function computes the price of a single option. It returns the call and put prices for both European and Asian style options." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "def price_option(S=100.0, K=100.0, sigma=0.25, r=0.05, days=260, paths=10000):\n", " \"\"\"\n", " Price European and Asian options using a Monte Carlo method.\n", "\n", " Parameters\n", " ----------\n", " S : float\n", " The initial price of the stock.\n", " K : float\n", " The strike price of the option.\n", " sigma : float\n", " The volatility of the stock.\n", " r : float\n", " The risk free interest rate.\n", " days : int\n", " The number of days until the option expires.\n", " paths : int\n", " The number of Monte Carlo paths used to price the option.\n", "\n", " Returns\n", " -------\n", " A tuple of (E. call, E. put, A. call, A. put) option prices.\n", " \"\"\"\n", " from math import exp, sqrt\n", "\n", " import numpy as np\n", "\n", " h = 1.0 / days\n", " const1 = exp((r - 0.5 * sigma**2) * h)\n", " const2 = sigma * sqrt(h)\n", " stock_price = S * np.ones(paths, dtype='float64')\n", " stock_price_sum = np.zeros(paths, dtype='float64')\n", " for j in range(days):\n", " growth_factor = const1 * np.exp(const2 * np.random.standard_normal(paths))\n", " stock_price = stock_price * growth_factor\n", " stock_price_sum = stock_price_sum + stock_price\n", " stock_price_avg = stock_price_sum / days\n", " zeros = np.zeros(paths, dtype='float64')\n", " r_factor = exp(-r * h * days)\n", " euro_put = r_factor * np.mean(np.maximum(zeros, K - stock_price))\n", " asian_put = r_factor * np.mean(np.maximum(zeros, K - stock_price_avg))\n", " euro_call = r_factor * np.mean(np.maximum(zeros, stock_price - K))\n", " asian_call = r_factor * np.mean(np.maximum(zeros, stock_price_avg - K))\n", " return (euro_call, euro_put, asian_call, asian_put)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can time a single call of this function using the `%timeit` magic:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 75.9 ms, sys: 9.47 ms, total: 85.4 ms\n", "Wall time: 90.6 ms\n" ] }, { "data": { "text/plain": [ "(np.float64(12.292386227996472),\n", " np.float64(7.565358135751658),\n", " np.float64(6.843004428201171),\n", " np.float64(4.4762283778996155))" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "%time result = price_option(S=100.0, K=100.0, sigma=0.25, r=0.05, days=260, paths=10000)\n", "result # noqa" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Parallel computation across strike prices and volatilities" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The Client is used to setup the calculation and works with all engines." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Starting 10 engines with \n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "f396267483a54ca9bcda1798d201ae4d", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/10 [00:00" ] }, "metadata": { "image/png": { "height": 560, "width": 799 } }, "output_type": "display_data" } ], "source": [ "plt.figure()\n", "plt.contourf(sigma_vals, strike_vals, prices['ecall'])\n", "plt.axis('tight')\n", "plt.colorbar()\n", "plt.title('European Call')\n", "plt.xlabel(\"Volatility\")\n", "plt.ylabel(\"Strike Price\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Plot the value of the Asian call in (volatility, strike) space." ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0, 0.5, 'Strike Price')" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABj4AAARgCAYAAABZvy+TAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAB7CAAAewgFu0HU+AADppklEQVR4nOzdeZyVdcH///dh31xQlEAEFUW05dYU0tTU7rLELaxsNdFcsjLt9ta+bd5aLpmWW+VKYvtqWi5l2aLinlQaGkKSSpCgxr4zvz/4cRpkGGY558xZns/Hw8fjmjnXua7PAKNyvebz+RSampqaAgAAAAAAUAe6dfUAAAAAAAAASkX4AAAAAAAA6obwAQAAAAAA1A3hAwAAAAAAqBvCBwAAAAAAUDeEDwAAAAAAoG4IHwAAAAAAQN0QPgAAAAAAgLohfAAAAAAAAHVD+AAAAAAAAOqG8AEAAAAAANQN4QMAAAAAAKgbwgcAAAAAAFA3hA8AAAAAAKBuCB8AAAAAAEDdED4AAAAAAIC6IXwAAAAAAAB1Q/gAAAAAAADqhvABAAAAAADUDeEDAAC6yIQJE1IoFFIoFDJp0qSuHg4taMvv0aRJk4rnTJgwoaLjAwAANiR8AADQcD74wQ8WH1QXCoVcfPHFXT2khve3v/0tl112WQ477LCMHj06W2+9dXr16pWtt946o0ePznvf+95ceeWVmT17dlcPFQAAqHLCBwAADWXhwoX52c9+tt7nbrrppi4aDU8++WTe9a53Zbfddsv//M//5I477sjf/va3vPTSS1m5cmVeeuml/O1vf8sPf/jDnH766dl+++1z9NFH56mnnurqoQMAAFWqR1cPAAAAKunHP/5xlixZst7nnnzyyTzyyCMZM2ZMF42qMf3gBz/I8ccfn2XLlhU/17179+y1114ZPnx4ttpqq7z88suZNWtWHn300axYsSKrV6/Oz372s/ziF7/IP/7xjwwdOrQLvwIAAKAaCR8AADSU5rM7+vbtm6VLlxY/X+nwMWnSpIbd2+Pqq6/ORz/60eLHW2+9dT772c9mwoQJGThw4AbnL1y4MHfccUcuuOCCPP7441m1alVWrFhRySEDAAA1wlJXAAA0jGeeeSb33ntvkqRQKOTSSy8tvvb973/fg/QKefDBB3P66acXP95jjz3yxBNP5JOf/GSL0SNJNttss7znPe/Jn/70p1x77bXp06dPpYYLAADUGOEDAICG8a1vfStNTU1JkgMPPDAnn3xyttlmmyTJSy+9lNtuu60rh9cQ1qxZk+OOOy4rV65Mkmy33Xb57W9/m1e96lVten+3bt1y8sknZ/Lkydlss83KOVQAAKBGCR8AADSEpqamfOtb3yp+fOyxx6ZHjx5573vfW/xcezc5f+qpp3L22Wdnn332yaBBg9KrV6/06dMn2267bfbaa68cf/zxuemmm/Lyyy+3+P4JEyakUCikUCi0uuTVypUr86tf/Spnn312Dj744AwdOjR9+vRJ3759M2zYsBx66KG5/PLLs2jRok2OeebMmcV77rDDDsXPP/rooznxxBMzatSo9OvXLwMHDszYsWNz4YUXZvHixe36dWnNzTffnGnTphU/vvrqqzc6y6M1r3/967P11lu3+NqTTz6Zyy67LEcffXR23XXXbLbZZunZs2e22Wab7L333vnkJz+ZqVOndvhrAAAAqps9PgAAaAj33Xdf/v73vydJ+vTpk3e9611J1gaQq666Kkly5513Zu7cucVZIK0599xzc/7552f16tUbvDZ37tzMnTs3jz32WCZNmpQPfOAD+c53vtOhcT/33HPZc8898+KLL7b4+qxZszJr1qz88pe/zPnnn5/vf//7eetb39rm6zc1NRW/ljVr1hQ/v3Tp0jzyyCN55JFHcsMNN+Q3v/lNdtpppw59Dc1dffXVxeNRo0bl8MMP7/Q1mzvmmGPy4x//uMXX5s2bl3nz5uWPf/xjrrjiipx++um59NJL071795KOAQAA6FrCBwAADaH5bI6jjjoqm2++eZJkzJgxGT16dJ566qmsXLky3/ve99bbf6IlV1xxRc4777zix4MGDco+++yTIUOGpFAo5KWXXspTTz2VJ598ssUw0h6LFy8uRo+BAwfm1a9+dUaMGJEBAwZkxYoVeeaZZ/Lggw9m2bJlefHFFzNu3Lj84Q9/yBvf+MY2Xf+8887LF77whSRr99p47Wtfm549e+ZPf/pTHnvssSRr90Z5xzvekcceeyw9enT8rxDLly/P/fffX/z4ve99bwqFQoev15Jnn302SdKjR4/svvvu2WWXXbLlllume/fueeGFF/LII49k1qxZaWpqyuWXX57ly5fnG9/4RknHAAAAdC3hAwCAurd06dL1ZgEce+yx671+7LHH5rOf/WyStYGktfCxatWqnH/++cWPL7roopx55pnp2bPnBue+9NJLufXWWzN37twOj71v37457bTT8sEPfjB77713unXbcLXaBQsW5Atf+EK+8pWvZNWqVTn++OPz5JNPtnhuc7Nnz84XvvCFjBw5Mt/73vcyduzY9V7/8Y9/nA984ANZuXJlHn/88Xzve9/Lhz70oQ5/LY888kiWLVtW/PgNb3hDh6+1MQcffHDOPPPMvO1tbyvGreaamppy22235cMf/nDmzp2bq6++Ou9///uz//77l3wsAABA17DHBwAAde9nP/tZFixYkCTZZptt8ra3vW291z/wgQ8UZx5MmTIljz/++Eav9dRTT2XevHlJkv322y//7//9vxajR5JstdVWOf7443P22Wd3eOwjRozIlVdembFjx240ZGy++ea59NJL85GPfCRJMm3atPzqV7/a5LVXrFiRrbbaKvfcc88G0SNJ3v3ud68Xgb7//e938KtYa+bMmet9/OpXv7pT12vJRRddlHe/+90tRo8kKRQKOeKII/KLX/yi+Ll1S50BAAD1QfgAAKDuNV/m6n3ve98GyzWNGDEib3rTm1o8/5XWBZQkbdoLpJKOP/744vFvfvObNr3nM5/5TIYOHbrR10844YTi8SOPPNLxwWXtDJjmttxyy05drzPe8IY3ZLfddkuS3H333V02DgAAoPQsdQUAQF2bNWvWehHglctcrfOhD30of/jDH5Ik3/3ud3PxxRe3uOn19ttvXzz+3e9+l2nTpmXUqFElHnXLVq5cmYceeih//vOfM2fOnCxcuDCrVq0qvr5w4cLi8Z/+9Kc2XfPd7353q6+PHj06ffv2zdKlS/Piiy9m4cKF2WyzzTo0/ubjS5IBAwZ06DptNW3atDz66KOZMWNG5s+fn+XLl6epqan4+vz585MkL774Yp577rn1fm8BAIDaJXwAAFDXvvOd72TNmjVJ1j7E33vvvVs8713velc+9rGPZdmyZZkzZ05+9atfZdy4cRuct/3222efffbJgw8+mPnz52evvfbKsccem/Hjx2e//fZLv379Sv41LF26NBdeeGGuueaa4jJbm9KW87bYYotNPuwvFAoZOHBgli5dmmTtjJeOho9Xvm/RokXZYostOnSt1tx+++35/Oc/nylTprT5PfPmzRM+AACgTljqCgCAutZ82aqNzfZI1u6TcdRRR7X4vleaOHFiBg8enGTtw/urr746hxxySLbYYouMGTMmZ555Zu66666sXr260+N/+eWX88Y3vjHnn39+m6NHsuHsipa0NTo038Nk5cqVbR7DK2211Vbrffzvf/+7w9famHPPPTeHH354u6JH0rZfLwAAoDYIHwAA1K1HHnkkTz75ZJK1Mxc+8IEPtHp+8zDy85//fKMP5nfffff8+c9/zmmnnbZePFi1alUeffTRfPWrX83b3va2jBgxIjfccEOnvoaPfexjxWWrevXqlRNPPDG33nprpk2bVlzqqqmpKU1NTXnmmWeK71s3y6U16zZ0r5QddthhvY+nTp1a0uv/+te/znnnnVf8eN999811112XKVOmZN68eVm2bFnx16qpqSkHHnhg8dy2/HoBAAC1wVJXAADUreazNpqamjZ48N6aZcuW5Yc//GFOOeWUFl8fPHhwrrzyylxyySV58MEHc++99+b+++/P5MmTixugz5o1KyeddFL+8pe/5Morr2z3+GfNmpUf/OAHSZJu3brll7/8ZQ4++OCNnl/tsxbGjBmT3r17Z/ny5UmShx56KIceemjJrn/JJZcUj0844YTccMMNrcadav/1AgAAOsaMDwAA6tKKFSvy/e9/v1PXaG25q3V69+6dAw88MJ/73Odyxx13ZN68ebnzzjuz//77F8+56qqr8sgjj7T7/r/97W+Lm3EfeuihrUaPJPnHP/7R7ntUUu/evfPGN76x+PG6qFMKq1evLm5O361bt1x00UWbnNHy7LPPluz+AABA9TDjAwCAunTbbbflpZdeSpL06NEje+21V5vet2bNmmKkeOCBBzJt2rSMGjWqzfft2bNn3v72t+fggw/O3nvvnSeeeCJJ8otf/CJjxoxp19fwz3/+s3j82te+dpPn33PPPe26flc49dRT87vf/S5J8re//S233XZbDj/88E5fd968eVmxYkWSZNttt822227b6vlTp05t154pAABA7RA+AACoS81naxx66KH5+c9/3ub3vva1ry0Gi29961s5//zz233/3r1755BDDile51//+le7r9Gt238maC9ZsqTVc5csWZJvfetb7b5Hpb3zne/MLrvskqeffjrJ2hCy//77Z8stt2zXdR577LGMGDEiW2+9dZL1f62WLl26yfdfffXV7bofAABQOyx1BQBA3Zk7d27uvPPO4scf/OAH2/X+5ud/+9vfLi43lSQvv/xymzfCfu6554rHm5qB0JKddtqpeHzHHXdk9erVGz33zDPP7FBcqbRu3bpl0qRJ6dFj7c9gPf/88/nv//7vvPDCC216f1NTU66//vrst99+6+3RsfXWWxc3mp8/f35x2auWTJ48WfgAAIA6JnwAAFB3vve972XlypVJks022yxHHHFEu97/vve9r7g/xLPPPltcmilJbr311owaNSqXXnppZs6c2eL7ly9fnq997Wv5yU9+UvxcRzbxfvOb35x+/folSaZPn57jjjsu//73v9c7Z8GCBTn55JNzzTXXpH///u2+R1d44xvfmMsuu6z48WOPPZbXvOY1ueKKKzb4+tZZtGhRfvjDH2aPPfbIySefnGXLlq33erdu3TJu3LjixxMmTMjDDz+8wXV+9KMfZdy4cVm9enXN/HoBAADtY6krAADqTvNlro4++uj07du3Xe8fPnx4DjjggOKeGTfddFPe/OY3F1+fMWNGzjrrrJx11lkZPnx4Xve61xVndMyZMycPPvhgcX+RJPnABz6w3qbebTVw4MD87//+b77whS8kSb773e/mzjvvzBve8IZst912mT17dn7/+99n8eLF6dGjR77xjW/kuOOOa/d9usLHP/7xDBw4MB/+8IezfPnyzJ07N2eccUbOPPPM7L333hk+fHgGDhyYf//735k1a1YeeeSR4h4eSdKrV6/07t17vWt+7nOfyy233JKlS5dm5syZ2WeffbLvvvtm1KhRWbFiRR544IE888wzSZKTTjop06ZNa3VmCAAAUJuEDwAA6srjjz+eKVOmFD9u7zJXzd+3Lnz89Kc/zde//vUMGDAgAwYMSKFQKC5/9eyzz+bZZ59t8RrdunXLRz7ykVx++eUdGkOSnHPOOZk5c2Zx/46XXnppvWW8kmTLLbfMjTfemD322KPD9+kKH/jAB7LHHnvk85//fH72s58lSVavXp2HHnooDz30UIvv6dmzZ9797nfni1/8YoYMGbLea7vvvnu+//3v5/3vf3+WLFmSpqam3H///bn//vvXO+/kk0/OlVdembe97W3l+cIAAIAuJXwAAFBXms/2GDJkyHozNdrjXe96V0477bQsX748ixcvzk9+8pNMmDAh73rXuzJ79uzcddddmTx5cv785z/n73//e3GJpi222CKjRo3K/vvv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Wfx45513brFgnXXWWfnhD3+YadOm5eyzz8706dPz3ve+N3379s3vfve7XHjhhVm1alX69u2byy+/vK1f4gZ69uyZq666KkcccUQWLFiQ/fbbL5/73OcyduzYvPzyy7n++uvz05/+NMna0nbsscd2+F4AUA6iBwClJnoA1C/RA9quFM/Lhw8fni984Qs5++yz8/jjj2fs2LH51Kc+lde97nVZsGBBbr755lx99dVJks033zyXXXZZWb6WpIHDxw033JCbbrqpxdcmT56cyZMnr/e5jYWP448/fqP3uPjii9f7+LjjjmsxfGy22Wa5/fbbM27cuDz99NO57rrrct111613zuabb57vfve72WOPPTZ6v7YYN25crrnmmnz84x/Pv/71r5x22mkbnDN27Nj87Gc/S/fu3Tt1LwAoFcEDgHIQPQDqk+AB7Veq5+VnnXVWXnrppVx88cX529/+lhNOOGGDc7bddtvccsst2WWXXTo97o2x1FWV2HnnnTNlypRcfPHF2XvvvbPlllumX79+2XXXXfPJT34yf/nLX3L44YeX5F4nnXRS/vjHP+akk07KTjvtlD59+mTrrbfO/vvvn6uvvjqTJ0/OoEGDSnIvAOgs0QOAUrOfB0D9Ej2g61100UWZPHlyjj322Oywww7p3bt3tthii4wZMyZf/OIXM23atOy7775lHUPDzviYNGnSRjf4bo/Wdqdvr/79++fss8/O2WefXfaxvOY1r9lgVgkAVBvRA4BSEzwA6pfoAR1Xqufl6+y7775ljxutadjwAQBUN9EDgFITPQDqk+ABvJLwAQBUFcEDgHIQPQDqk+gBtET4AACqhugBQKkJHgD1S/QANkb4AACqgugBQKmJHgD1SfAANqVbVw8AAED0AKDURA+A+iR6AG1hxgcA0GUEDwDKQfQAqE+iB9BWwgcA0CVEDwDKQfQAqD+CB9BewgcAUHGiBwClJngA1CfRA+gIe3wAABUlegBQaqIHQH0SPYCOMuMDAKgIwQOAchA9AOqP4AF0lhkfAEDZiR4AlIPoAVB/RA+gFMz4AADKSvQAoNQED4D6JHoApWLGBwBQNqIHAKUmegDUJ9EDKCUzPgCAshA9ACg10QOg/ggeQDkIHwBASQkeAJSD6AFQf0QPoFyEDwCgZEQPAEpN8ACoT6IHUE7CBwBQEqIHAKUmegDUH8EDqASb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UHqdeV7+SlOmTMnll1+ePn36pGfPnlm4cGEJRrhpDRs+zjnnnIwZMyZjxozJ4MGDM3PmzOy4447tusa0adNy6aWXJkn23nvv3HPPPenbt2+SZMyYMTnyyCNz4IEH5tFHH80ll1ySE044ITvvvPN619hyyy2z5ZZbtnqfJ598Mk8//XSS5OCDD86wYZ1/0LfddtvlNa95TaevA9BVRA8ASkH0AKhNggdAaZXiefkrrV69OieddFJWr16d//u//8vEiRMrFj4ado+P8847L4cffninpvBcfvnlWbVqVZLkqquuKkaPdfr165errroqSbJq1apcdtllHbrPt771reLxhz70oQ6OFqB+iB4AdJb9PABql+gBUHqleF7+SldccUX++Mc/Ztddd82nPvWpkl23LRo2fHRWU1NTbr311iTJ6NGjs88++7R43j777FPck+PWW29NU1NTu+6zZs2afPe7302SDBgwIO985zs7MWqA2id6ANBZggdA7RI9AGrDP/7xj5xzzjlJkmuuuSa9evWq6P2Fjw565pln8s9//jNJcuCBB7Z67rrXZ82alZkzZ7brPr/73e/y3HPPJVm7z0f//v3bP1iAOiF6ANBZogdAbVo4oiB6ANSQj370o1m8eHGOPfbYHHTQQRW/f8Pu8dFZU6dOLR6PHj261XObv/7kk0+2a2205stcHXfcce0YYeuuuuqqnH/++Xn++efTu3fvDBs2LAcccEBOPvnkvP71r+/wdZ9//vlWX589e3bxuO9mPVPo6S+e0Bb9Nu/V4nEjWbnzkDTmV05n9OvXo8VjYOPq+ftmwYhe2ayrB0HdGtC7e4vHQOva8r2zeFghW1RqQFADenb3s+yNrPnz1Y0pxR7RnfGDH/wgd9xxRwYOHJivfOUrXTKG+vqbTAU1f8C/qT9I22+/ffF43eyNtli8eHFuvvnm4jUOPvjgdo5y4x577LHi8fLlyzN16tRMnTo11157bU455ZRcccUV6d27/VGi+de6KeM+vlcGDRrU7ntAo3vnZ/bt6iFATXrv+3fq6iFAzfF9Ax1z4pva/vci4D9870DbzJs3L/d39SDoMmPHjt3kOe3dbqGUXn755ZxxxhlJki996UvZZpttumQcwkcHNd99fsCAAa2e23x5qkWLFrX5HjfffHPx/GOPPTaFQuendG655ZYZP358DjrooOyyyy7p06dPZs+enbvuuisTJ07MokWLcu2112bhwoXFvUUAAAAAAOrF7Qtfky369+3qYbTZ/IVLk/y2q4fRJmeddVb+9a9/Zd99981JJ53UZeMQPjpo2bJlxeNNbczSfObE0qVL23yPb3/728XjD33oQ+0YXcuGDh2aWbNmpV+/fut9fs8998y4cePysY99LG95y1vy7LPP5nvf+17e85735Mgjj2zXPTY1o2X27NnFKnnH1/6YwrI+7fsioEH127xXcabHTy98IEsWrOjiEZXfyp2HdPUQqAP9+vUo/sT6D7739yxZsqqLRwTVr56+bxaMsEgilTOgd/fiT6vfcM9zWbR8dRePCGpDS987i4fZywNa03PRgq4eAl3o4YcfzpAh1fnM5J577sk3v/nN9OjRI9dcc01JfpC/o4SPDurT5z8P7FesaP0B5PLly4vHffu2rST+85//zN13350kecMb3pBdd921A6NcX69evVqNNLvssku+853v5E1velOStfuAtDd8tGf9uKULV6Zpsf+ZgfZasmBFFv97+aZPrGErRg9LFtXugzaq05Ilq7LInytol1r+vpk/sneyzINnusai5auz0J8/aLdFy1fnn4PXJCu7eiRQ3fquXtPVQ6ALDRkypMv38GjJ8uXLc/LJJ6epqSmnn356Xve613XpeOyE00GbbfafbRE3tXzV4sWLi8ebWhZrne985ztZs2btv8RKMdujrQ444IDsvvvuSZL77ruvOAaASlkxuvr+4w1AbZk/sv171QHQ9cz0AKhdF1xwQf72t79l++23z3nnndfVwzHjo6OaV7XmG523pPnyT23d/HvdMle9evXKe9/73g6MsON23333TJ06NcuWLcuLL77YZRvQAI1H9ACgMwQPAADoGhdffHGS5C1veUt+8YtftHjOugkCixcvzg9+8IMkybbbbps3v/nNJR+P8NFB62ZFJMlTTz3V6rnNX99tt902ee3HHnssTzzxRJLk8MMPz1ZbbdXBUXZMV669BjQu0QOAzhA9AGqTWR4A9WHddhA33nhjbrzxxlbPnTdvXt73vvclSQ488MCyhA9LXXXQjjvumKFDhyZJ/vCHP7R67j333JMk2W677bLDDjts8trf+ta3iseVXOZqnalTpyZZuyn71ltvXfH7A41H9ACgM0QPgNqzcEQhC0eIHgCUh/DRQYVCIUcddVSS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N9+cU089NWPGjMnAgQPTs2fPbL311tl3331z7rnnZs6cOeX9Qv5/DTvjY/DgwSW5zpo1a3LyySdn4sSJ631+1qxZmTVrVm655ZaceOKJufbaa9OtW3V0puuvvz4f//jHs2LFf/7FumzZstx333257777cuONN+b222/PoEGDunCU1AOxA4BXEjwAqpvYAVAZggfVprPPy//yl79kv/32y6JFizZ47aWXXsqDDz6YBx98MJdddlmuu+66vOc97+nU/TalYcNHc8OHD8/o0aNz1113tfu9n/3sZ4vRY88998zZZ5+dkSNHZsaMGfnyl7+cKVOm5IYbbsg222yTCy+8sNVrDR06NL/61a9aPWe77bZr9xibu+OOO/KRj3wka9asyeDBg/PZz342b3jDG/LSSy/l+uuvz80335yHH34448ePz+9///t07969U/ejcYkeADQneABUP9EDoPwED2pBR56XL1iwoBg99ttvvxx++OHZe++9s/XWW2fu3Lm5+eabc/3112fBggX5wAc+kM033zyHHnpoub6Exg0f55xzTsaMGZMxY8Zk8ODBmTlzZnbcccd2XWPatGm59NJLkyR777137rnnnvTt2zdJMmbMmBx55JE58MAD8+ijj+aSSy7JCSeckJ133nmj1+vZs2de85rXdPyL2oSVK1fmtNNOy5o1a7L55ptn8uTJGTlyZPH1t7/97fnYxz6Wb3zjG7nvvvvy7W9/u0PLftHYBA8AmhM8AKqf4AFQfoIH1a6zz8u7deuWY445Jv/3f/+X3XfffYPXDznkkBx66KEZP358Vq9endNOOy1PP/10CoXy/H9Iday91AXOO++8HH744Z2awnP55ZcX98O46qqritFjnX79+uWqq65KkqxatSqXXXZZxwdcAj/72c/y97//PUny6U9/er3osc4ll1ySgQMHFo+hPUQPAJoTPQCqm308AMrPPh7Uis4+L3/jG9+YH/7why1Gj3WOOuqoHH300UmSGTNmZMqUKR26V1s0bPjorKamptx6661JktGjR2efffZp8bx99tknu+66a5Lk1ltvTVNTU8XG+Eq33HJL8XhjMzn69euXY445JkkyderUTJs2rQIjo9bZvByA5mxeDlD9BA+A8hM8YEMHH3xw8XjGjBllu4/w0UHPPPNM/vnPfyZJDjzwwFbPXff6rFmzMnPmzHIPbaPuu+++JMmuu+6aV73qVRs9r/nXM3ny5LKPi9oleADQnOABUP3M8gAoP7M8YOOWL19ePC7n/tINu8dHZ02dOrV4PHr06FbPbf76k08+udG10V588cUceOCBeeKJJ7Jo0aJstdVWed3rXpcjjjgiJ5xwQvr169fh8S5atCjPPfdch8bbHs8//3yrr8+ePbt43Heznin09HCkVq3ceUh6dfUgGki/fj1aPAZa53unchaM6JXNunoQlMSA3t1bPAZaV+3fO4uHrY0dW3TxOOCVNuvRvcVjqEXLh65MkvQp8yPX3gXfK42s+fPVjRk2rHp/UPkPf/hD8Xi33XYr2308Aeig5g/4N/UHafvtty8er4sPLVm0aFHuueee4sdz5szJnDlzctddd+VLX/pSfvSjH+WNb3xj1Yx3U+/dlHEf3yuDBg1q1/WB5L3v36mrhwA1yfcOtN+Jb2r7/9sB/+F7BzrmE7tU74M6qCbzVs7LI109CLrM2LFjN3lOV2630Jo///nPuf3225Mkr33ta4WParRw4cLi8YABA1o9t3///sXjRYsWbfB6oVDIPvvskyOOOCKvf/3rM3jw4CxbtiyPP/54Jk6cmIcffjizZs3KIYccknvvvTd77rlnl44XAAAAAKBW3Tt35/SuoTnry+cuTPLbrh5GpyxfvjwnnnhiVq9enSS54IILyno/4aODli1bVjzu1av1BX969/7Pck5Lly7d4PXLLrssW2655Qaf33fffXPSSSflc5/7XC688MIsXrw4J554Yh599NEUCu1bk7WU423NpmaIzJ49u1gl7/jaH1NY1qdd16drrNx5SFcPoeH169ej+NPqP/je37NkyaouHhHUBt875bFghMUO69mA3t2LP61+wz3PZdHy1V08IqgN1fS9s25ZK6gFm/XoXpzpceXTz2fhKv/doTasW9aqK/RetHDTJ1G3Hn744QwZUnvP6j7+8Y/n0UcfTZIcd9xxOeKII8p6P+Gjg/r0+c8D+xUrWt+sqPmGLX379t3g9ZaixzqFQiEXXHBBHnroodx999157LHHcv/992e//fbrsvG2pj3rxy1duDJNi/0PeTUrbly+yIPCarJkyaos8nsC7eZ7p/OKG5cv80CiUSxavjoL/X5Du3XV905x0/KuexYHnbJw1erMX+m/O1S34qblXbiSUN8m3yeNbMiQIVW9h0dLLrro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/pXVq1enV69eOfzww3PIIYdkt912y2abbZYZM2bk+uuvz1133ZWnn346b3nLW/LYY49l2LBhnf6azz///Bx11FEbfX3gwIGdvgdAIxE8AKqP6AFQfoIHQP3pyuflpdKw4eOcc87JmDFjMmbMmAwePDgzZ87Mjjvu2K5rTJs2LZdeemmSZO+9984999yTvn37JknGjBmTI488MgceeGAeffTRXHLJJTnhhBOy8847r3eN/v3751Of+lTOPPPMbLPNNuu9tueee+Zd73pXzjzzzHz1q1/N3Llzc8455+Sb3/xmJ77ytbbbbru85jWv6fR1ABqd4AFQfQQPgMoQPQDqR7U8Ly+Vht3j47zzzsvhhx/eqSk8l19+eVatWpUkueqqq4q/iev069cvV111VZJk1apVueyyyza4xic/+cl86Utf2iB6NHfRRRdlyJAhSZKbb745a9as6fCYASgd0QOgutjHA6Ay7OMBUH+q5Xl5qTRs+Oispqam3HrrrUmS0aNHZ5999mnxvH322Se77rprkuTWW29NU1NTu+/Vq1ev7LfffkmS+fPn58UXX+zgqAEoBZuXA1QXwQOgMgQPADamks/L20L46KBnnnkm//znP5MkBx54YKvnrnt91qxZmTlzZofut3z58uJx9+7dO3QNADpP8ACoLoIHQPkJHgBsSqWfl29Kw+7x0VlTp04tHo8ePbrVc5u//uSTT7Z7bbSVK1fmgQceSJIMHjw4W221Vbve35Krrroq559/fp5//vn07t07w4YNywEHHJCTTz45r3/96zt83eeff77V12fPnl087tu3R/wRhLbp169Hi8dUzoIRvZIkm3XxOGifAb27t3gMbFytfN8sHrY2eGzRxeOAdTbr0b3FY6h1y4euTJ8y/t1980L3Fo+Bjevte6WhNX++ujHDhg2rwEjWV8nn5W3h6VkHNX/Av6k/SNtvv33x+Lnnnmv3va677rrMmzcvSfLud7+73e9vyWOPPVY8Xr58eaZOnZqpU6fm2muvzSmnnJIrrrgivXu3/6eam3+tm3LkO4Zn0KBB7b4HNLr3vn+nrh4C1KQT39T2/0YBa/m+gY75xC6Vf9gA9eB/Ny/9gy+oR/NWzssjXT0IuszYsWM3eU65lo9qTSWfl7eF8NFBCxcuLB4PGDCg1XP79+9fPF60aFG77vP3v/89n/3sZ4v3+fSn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99/f1UNsk4ad8TF48OCSXGfNmjU5+eSTM3HixPU+P2vWrMyaNSu33HJLTjzxxFx77bXp1m3jnWnevHkZN25cHnnkkfU+//e//z3XXXddbrrppnzta1/LiSee2Okx/+IXv8gHP/jBLFiwoPi5JUuW5NFHH82jjz6aG264Ibfffnt23nnnTt+r0QgdAHSE4AFQvcQOAJoTO6hn//jHP3LYYYdt8EP4K1asyLRp0zJt2rRMmjQpp512Wq644ooUCtX7d9mGnfHR3PDhw3PIIYd06L2f/exni9Fjzz33zPe///08/PDD+f73v58999wzSXLDDTfkc5/73EavsXr16owfP74YPY4++ujceeedeeihh3LllVdm2223zfLly3PKKae0awZJS6ZMmZL3vOc9WbBgQQYMGJALLrgg999/f+6+++6cdNJJSZJp06blsMMOy8KFCzt1r0ZidgcAHWGWB0B1Ez0AWMcMD+rdypUr14ser3vd6zJp0qQ88MADueuuu3LOOeekf//+SZKrrroqF198cVcOd5MadsbHOeeckzFjxmTMmDEZPHhwZs6cmR133LFd15g2bVouvfTSJMnee++de+65J3379k2SjBkzJkceeWQOPPDAPProo7nkkktywgkntDiL4qabbsp9992XJPnoRz+ar3/968XXxo4dm0MPPTR77bVXFixYkE984hN58skn06NHx37rTj/99CxdujQ9evTIXXfdlX333bf42pvf/ObssssuOfvsszNt2rR85Stfybnnntuh+zQKsQOAjhA7AKqb4AHAOmIHjeLWW28tRo9999039957b7p37158/a1vfWuOPPLI7Lvvvlm5cmUuvvji/O///m+Hn1OXW8PO+DjvvPNy+OGHd2rJq8svvzyrVq1KsrZyrYse6/Tr1y9XXXVVkrX7d1x22WUtXmddPNlqq61yySWXbPD6zjvvnE9/+tNJkunTp+dnP/tZh8b78MMP5957702SfPjDH14veqxz5plnZrfddkuSXHHFFVm5cmWH7lXP1s3uED0AaC8zPACqn+gBQGKGB42n+d4dn/70p9eLHuvstddeOfzww5Mk//73v/Pkk09WbHzt1bDho7Oamppy6623JklGjx6dffbZp8Xz9tlnn+y6665J1lazpqam9V6fNm1a8Q/IMccck379+rV4neYbrnc0fNxyyy3F4+OPP77Fc7p165YPfehDSdb+4f3d737XoXvVI7EDgI4SPACqn83LAUgEDxrXihX/+f+gnXbaaaPnjRw5ssX3VBvho4OeeeaZ/POf/0ySHHjgga2eu+71WbNmZebMmeu9tm6Jq01d51WvelVGjRqVJJk8eXJHhly8V//+/bPXXnttcryduVc9ETwA6CjBA6D6CR4AJIIHrPvh/ST5+9//vtHzZsyYkSQpFArZZZddyj6ujqrOBbhqwNSpU4vHo0ePbvXc5q8/+eST6+0l0t7rTJs2Lc8991wWL15c3EymrdbNLNl5551bXXvtleNtj+eff77V12fPnl087tu3R6r1j+CCEb2Kx5t14ThgnQG9u7d4DLSuq753Fg9bGzu2qNgdoXQ269G9xWOoR8uHrkyfEv2dZPNC9xaPgdb53qGrbT/kxbUHa3q1fmIVKaxZ09VDoAs1f766McOGDWv3dd/3vvflc5/7XBYsWJCLL74448aN22C5qylTpuT2229Pkrz//e/P5ptv3u77VEp1PnWuAc0f8G/qD9L2229fPH7uuec6fZ2mpqY8//zz61W4TVm2bFnmzZvXpvsMHDgw/fv3z+LFizcY76Y0/1o35ch3DM+gQYPadX0gOfFNbf8+A/7D9w603yd2af9fmIDkfzffcdMnARvwvUOXWLJzV4+g3eYtn5fbunoQdJmxY8du8pxXbrfQFoMGDcq3v/3tvO9978vkyZMzZsyYnHHGGRk1alQWLVqUyZMn5ytf+UpWrFiR17/+9fnKV77SkeFXjPDRQQsXLiweDxgwoNVzm8/MWLRoUVmusyntuc+6ey1evLjd9wEAAAAAqGa9ZvVMz0W1M8un2/yeFbnPkUcemT/+8Y/5yle+kokTJ+a4445b7/XBgwfni1/8Yk466aSN7lVdLbosfDz//POZM2dOlixZkjFjxqRv375dNZQOWbZsWfG4V6/Wv0l69/7P/hBLly4ty3U2pT33aX6v9t5nUzNEZs+eXaySP7/l2SQvtev6pdR8OSuodgN6dy/+tPoN9zyXRctXd/GIoDZU4ntn3bJWUC8269G9ONPjyqefz8JV/ptDfVg+dGVZr795oXvxp9UvXfBMFjT53oG28L1DJRSXs6oThd7LNn0Sdevhhx/OkCFDynLtFStW5Fvf+lZuvfXWFmeN/Otf/8p3vvOd7LjjjjnyyCPLMoZSqWj4WLhwYb785S9n0qRJxY3Bk+Txxx/P7rvvXvz4Bz/4QW6++eZsscUWuf766ys5xDbr06dP8XhTu9cvX768ePzKwPPK6zT/uD3X2ZT2jLf5vdp7n/asH7d06aqsXr2qXdcvheJG5cv8zxS1adHy1Vnozy+0W6m/d4qblpf3ORp0qYWrVmf+Sv/NofYtH74iaf+KDx22oGl15jdV/u86UOt871Bq6zYrr7f1TLp32/SzPerXkCFDOrSHx6YsXrw4hx56aO6999507949Z599do4//vjstNNOWbZsWR566KF84QtfyH333Zd3vOMdufTSS/M///M/JR9HqVQsfDz99NMZN25c/v73v69XiwqFDX9Kcp999skHP/jBNDU15bjjjsv+++9fqWG22Wab/WfL600tB7V48eLi8SuXmXrldVoLH61dZ1PaM97m92rvfapVMXYAQCcVgwcAVW/5cA+GABrRuuABtN25556be++9N0k2WOaqV69eeetb35qDDz44hxxySH73u9/lrLPOyn//93/nv/7rv7pqyK3qVombLFu2LIcddlhmzJiRfv365eyzz85tt218C54ddtghBx98cJLk5z//eSWG2G7Nq1rzDcpb0nz5p1du/t2R6xQKhXZXvT59+mTrrbdu031efvnlYvhoz2bl1Wj+yN6iBwAlsXBEQfQAqBHLh68QPQAa0A7D5ooe0AFNTU355je/mSQZNWrUBnt7rNOjR4988YtfTJKsWbMmkyZNqtQQ260iMz6uvvrqTJ8+Pf3798+9996bPfbYY5PvOfTQQ3P33XfngQceKP8AO6D50lxPPfVUq+c2f3233XZr9Tqt/dqsu87222+/3kbnbbX77rvn3nvvzfTp07Nq1ar06NHyb39r460VYgcApSJ2ANQWwQOg8Ygd0Dn/+te/8tJLa/di3nPPPVs9d6+99ioeb+q5eFeqyIyPm2++OYVCIaeffnqbokeS4hSZp59+uowj67gdd9wxQ4cOTZL84Q9/aPXce+65J0my3XbbZYcddljvtebLeLV2nTlz5mTatGlJkv32268jQy7ea/HixfnjH/+40fOaj6Oj9+oK62Z3iB4AlIroAVA7zPIAaDxmeEBpNP8B+VWrWt9raeXK/2x0ubEfrK8GFQkfTz75ZJLkkEMOafN71i3L9O9//7scQ+q0QqGQo446KsnasvXggw+2eN6DDz5YLF9HHXXUBnuajBo1qjir4kc/+lGWLFnS4nWaTxsaP358h8b8jne8o3h84403tnjOmjVr8q1vfStJsuWWWxaXHKtmYgcApWZZK4DaIngANBbBA0prq622yuabb54keeCBB1qNH81/aH7HHXcs+9g6qiLhY91m2u3ZKHv58uVJkp49e5ZlTKVwxhlnpHv37kmS0047LUuXLl3v9aVLl+a0005LsrZ+nXHGGS1e53//93+TJC+99FLOPvvsDV6fMWNGLrrooiTJzjvvvNHwscMOO6RQKLS4YXySjB07NgcccECStRvUtLSM2Fe+8pViqDr99NOr+tdf8ACg1AQPgNpilgdA41gXOwQPKL1u3brlsMMOS5L885//zAUXXNDieS+//HI+9alPFT8+/PDDKzK+jqjIXJStt946c+bMycyZM/P617++Te/561//miR51ateVZYx3XfffZk+fXrx43nz5hWPp0+fvsHGLBMmTNjgGqNGjcpZZ52VL33pS3n00Uez33775VOf+lRGjhyZGTNm5OKLL86UKVOSJGeddVZ22WWXFsdy3HHH5Zvf/GYmT56cr3/965kzZ05OOumkDBw4MA8//HC++MUvZsGCBenWrVuuvPLKTk0huuKKK7Lffvtl6dKlOeSQQ/KZz3wmBx98cJYuXZof/OAHue6664pf25lnntnh+5SL0AFAOYgdALVH8ABoDEIHVMY555yTW2+9NUuWLMm5556bP/7xjznuuOOy0047ZdmyZXnwwQdz+eWX59lnn02S/Pd//3e7VniqtIqEj9e//vW54447cs899+Too49u03u+9a1vpVAoZN999y3LmG644YbcdNNNLb42efLkTJ48eb3PtRQ+kuSCCy7ICy+8kG9+85uZMmVK3vve925wzoc//OGcf/75Gx1L9+7dc8stt2TcuHF55JFH8tOf/jQ//elP1zund+/e+drXvpZDDz10E19Z6/bcc8/88Ic/zAc/+MEsWLAgn/nMZzY4Z9SoUbn99tuz2WabdepepSR4AFAOggdA7RE8ABqD4AGVNXr06Nx666153/vel3nz5uUXv/hFfvGLX7R47pvf/Ob8+Mc/rvAI26ciS129613vSlNTU6677rpiEWrN5ZdfXtwQ/H3ve1+5h9cp3bp1y8SJE3P77bfnqKOOytChQ9OrV68MHTo0Rx11VO64447ccMMN6dat9V/qQYMG5f777883vvGN7L///tl6663Tp0+f7LTTTjnppJPyxz/+MSeeeGJJxnzEEUfkL3/5Sz75yU9m1KhR6devX7bccsvsvffexVkqO++8c0nu1VmWswKgHCxpBVB7LGsF0BgsZwVd5y1veUueeuqpXHzxxTnooIOyzTbbpGfPnunbt2923HHHHHPMMbnlllvym9/8JgMHDuzq4baqIjM+jj322Fx22WX5y1/+koMOOihf//rX8/a3v734eqFQSFNTUx599NFcfvnl+cEPfpBCoZADDjig0zMcNmbSpEkbLGfVGePGjcu4ceM6dY0ePXrk1FNPzamnntqh98+cObPN544YMSJf/epX89WvfrVD9yonoQOAchE7AGqT4AFQ/8QOqA5bb711zj777Bb3oq4lFQkf3bp1y89//vPsv//+mTlzZg4//PD069evuAn3QQcdlIULFxY3NG9qasrIkSPzox/9qBLDo0oIHgCU0+JhhWRlV48CgPYQPADqn+ABlENFlrpKkuHDh+dPf/pT3ve+96Vbt25ZvHhxmpqa0tTUlLlz52bZsmVpampKkhxzzDF5+OGHs+2221ZqeHQhy1kBAACvJHoA1DdLWgHlVJEZH+tstdVW+e53v5sLL7wwt99+ex599NG88MILWb16dbbeeuvsueeeOeKIIzJq1KhKDosusnBYr6zsIXgAUB4LRxTSraelrQBqjeABUN/EDqASKhI+FixYkM0337z48YgRI/LRj360Te/9/e9/n4MOOqhMIwMA6o19PABqk+ABUN8ED6CSKrLU1WGHHZZly5a1+32/+c1vcvjhh5dhRABAvVk4oiB6ANQo0QOgflnSCugKFZnxMXny5Lzzne/Mrbfemh492nbLu+66K+94xzuKG54DALRE7ACoXYIHQH0SOoCuVpEZH927d88vf/nLfOhDH2rT+XfccUfe8Y53ZNmyZRk6dGiZRwcA1CIzPABqm+gBUH/M7gCqRUXCxze/+c0kyQ9/+MOceuqprZ77i1/8Iu985zuzbNmyDBs2LL/73e8qMUQAoIYIHgC1a/nwFaIHQJ0RPIBqU5Glro499ti89NJL+eQnP5nrrrsuAwcOzIUXXrjBebfeemve8573ZMWKFRk+fHh++9vfZqeddqrEEAGAGiB4ANQ2wQOgvogdQLWqSPhIktNPPz0vvfRSvvjFL+biiy/O1ltvnTPPPLP4+k9/+tO8//3vz8qVK7PDDjvkt7/9bXbYYYdKDQ8AqGKCB0BtEzwA6ovgAVS7ioWPJDnvvPPy0ksv5etf/3rOPvvsDBw4MCeccEJ+9KMf5dhjj83KlSuz00475be//W2GDx9eyaEBAFVI8ACobYIHQH0RPIBaUdHwkSRXXXVVXn755Xzve9/LKaeckilTpuTaa6/NqlWrsvPOO+fuu+/O9ttvX+lhAQBVRPAAqH2iB0D9EDyAWlPx8JEkN910U+bPn5/bb7893/jGN9LU1JRddtklv/3tb7Pddtt1xZAAgCogeADUPsEDoH4IHkCt6tYVN+3evXt+/OMf501velOampoyevTo/OEPfxA9AKBBLRxRED0A6oDoAVAfdhg2V/QAalpJZ3y8+c1vbtf5ixcvTqFQSI8ePfL+97+/xXMKhULuvvvuUgwPAKhCggdA7RM8AOqD2AHUi5KGj9///vcpFAppampq0/nrzv3rX/+6wXvWvVYoeBgCAPVI8ACofYIHQO0TO4B6VNLw8aY3vUmoAABaJXgA1AfRA6C2CR5APSv5jA8AgJYIHgD1QfAAqG2CB9AISho+AABeSfAAqB+iB0DtEjyARiJ8AABlIXgA1A/BA6B2CR5AIxI+AICSEjwA6ovoAVCbBA+gkZU0fDz77LPF4+HDh7f4+Y5ofi0AoHqJHgD1Q/AAqE2CB0CJw8eOO+6YJCkUClm1atUGn++IV14LAKg+ggdA/RA8AGqT4AHwHyUNH01NTe36PABQ2wQPgPoiegDUHsEDYEMlDR833nhjuz4PANQmwQOgvggeALVF7ABoXUnDx3HHHdeuzwMAtUXwAKg/ogdA7RA8ANqmpOEDAKhPggdA/RE8AGqH4AHQPt0qcZOddtopO+20U772ta9V4nYAQIksHFEQPQDqkOgBUBt2GDZX9ADogIrM+Hj++eezevXq7LHHHpW4HQBQAoIHQP0RPABqg9gB0DkVCR+vetWrMmvWrPTt27cStwMAOkHwAKg/ggdAbRA8AEqjIktdveENb0iS/PWvf63E7QCADrCsFUB9Ej0Aqp8lrQBKqyLh49RTT01TU1Muu+yyrFy5shK3BADaSPAAqE/Lh68QPQCqnOABUB4VCR9vfvOb8+lPfzp//vOfc/jhh+e5556rxG0BgFYIHgD1S/AAqG6CB0B5VWSPjy984Qvp3bt3Xvva1+bXv/51dtppp+y333553etel4EDB6Z79+6tvv+cc86pxDABoCGIHQD1S/AAqG5iB0BlVCR8nHvuuSkU1j5kKRQKWb16de69997ce++9bXq/8AEAnSd4ANQvwQOgeokdAJVXkfCRJE1NTa1+DACUj+gBUL9ED4DqJHgAdJ2KhI81a9ZU4jYA/197dx5vVUHv//994DAJDiCooOREqKmpqWmZChpWmJpjWCaO+c266f16s+vtkmSDQ/WrbLiZE5hTTmRqXSlFyyERs7BUcEYRcUhBBoED5/cH37M7yDmHM+/p+Xw8zuOxz1lrr/WJWG7Ofu21FvAuggdA5RI8AEqT4AFQfN12xgcA0H0ED4DKJnoAlB7BA6B0CB8AUEEED4DKJngAlB7BA6D09OiOnWy99dbZdttt8/TTT7f6OXPmzMk222yTbbfdtgsnA4DK8PaWNaIHQIUTPQBKy1ZbvCZ6AJSobjnj44UXXkhNTU2WL2/9P9RXrFiR559/PjU13sQBgOaIHQCVT/AAKC1iB0Dpc6krAChDggdA5RM8AEqL4AFQPko2fCxYsCBJst566xV5EgAoLaIHQOUTPQBKh+ABUH5KNnxcffXVSZItt9yyyJMAQGkQPAAqn+ABUDoED4Dy1SXh44ADDmjy5yeeeGL69+/f4nOXLVuWZ599Nq+++mpqampy0EEHdcWIAFA2BA+A6iB6ABSf2AFQGbokfNxzzz2pqalJfX194Wf19fV5+OGH27SdbbbZJuecc05njwcAZUHwAKgOggdA8QkeAJWlS8LHfvvtl5qaf71Zc++996ampia77757i2d81NTUpG/fvhk6dGg+/OEPZ9y4ces8QwQAKo3gAVAdBA+A4hM8ACpTl53x0ViPHj2SJJMmTcr73ve+rtglAJQ9wQOgeogeAMUleABUtm65ufnxxx+fmpqaDBw4sDt2BwBlRfAAqB6CB0BxCR4A1aFbwsekSZO6YzcAUHZED4DqIXoAFI/gAVBduiV8tMYbb7yRmpqaDBo0qNijAECXEzwAqofgAVA8ggdAdepRzJ3Pnz8/n//85zN48OBssskmGTJkSAYOHJgTTjghc+bMKeZoANAl3t6yRvQAqCKiB0BxbLXFa6IHQBXr9PDx0ksvZdiwYRk2bFj+53/+p9n1nn322ey+++65/PLL889//jP19fWpr6/PggUL8stf/jK77bZb/vrXv3b2eABQFIIHQHVZ9p7logdAEQgeACRdcKmr//3f/80rr7yS3r1755hjjml2vXHjxuXll18ufD98+PAMGzYsjz/+eN5+++28+eabOfbYY/PYY4+ltrZkrsgFAG0idgBUF7EDoPsJHQC8W6ef8fHggw8mSUaPHp2NN964yXVuv/32zJgxo3BPj//93//NCy+8kAcffDCvvPJKTjzxxCTJ7Nmzc/PNN3f2iADQ5ZzhAVB9RA+A7uXsDgCa0+nh47HHHktNTU3GjBnT7DrXXHNN4fH3v//9HHTQQYXv+/Xrl8suuyw777xzkuTWW2/t7BEBoMsIHgDVx2WtALqX4AHAunR6+Hj++eeTJLvsskuz69xzzz1Jkg033DCf+cxn1lpeU1OTk046KfX19fnb3/7W2SMCQJcQPACqj+AB0H0EDwBaq9NvnrFw4cIkyeDBg5tc/vzzz2f+/PmpqanJfvvtl169ejW53m677ZYka9wHBABKjdgBUJ0ED4DuI3YA0FadHj5qala/AbR8edO/CEyfPr3weI899mh2OxtttFGSZPHixZ03HAB0EsEDoDoJHgDdR/AAoL06/VJXDTc0nz17dpPLH3jggcLjPffcs9ntvP3220mSvn37duJ0ANB+DffvED0AqpPoAdA9XNIKgI7q9PDRcG+Pm2++ea1l9fX1+c1vfpMkqa2tzT777NPsdl544YUkyaabbtrZIwJAm4gdANXNzcsBusfwoW8IHgB0ik4PH4ceemjq6+tz66235pe//OUay773ve/l+eefT01NTT760Y9mwIABzW7nwQcfTJJst912nT0iAKyTszsASJzlAQAA5ajT7/Hxuc99Lt/5znfy0ksv5YQTTshPfvKTjBgxIk888UT+9re/Fdb7v//3/za7jfr6+vz6179OTU1N9t57784eEQCaJHIA0EDwAOh6W23xWgas6p0sGVHsUQCoMJ0ePtZbb71cf/31+fjHP5633347M2bMyIwZM5KsDhpJctJJJ+XAAw9sdhu//e1vM3fu3MKZIQDQlQQPABoTPQC6jktZAdAdOv1SV0nyoQ99KDNmzMiRRx6Zvn37pr6+PvX19dlyyy3zve99L7/4xS9afP43v/nNJMlmm23mjA8AuoRLWQHwbu7lAdB13LAcgO7U6Wd8NHjve9+bG2+8MatWrcprr72W3r17Z+DAga167l133bV6uNouGw+AKiV0APBuYgdA1xE7ACiGLi8LPXr0yKabbtqm5/Tv37+LpgGgGokdADRH9ADoGoIHAMXklAoAKpLYAUBLBA+AriF4AFAKhA8AKorgAcC6iB4AnU/wAKCUCB8AlD2xA4DWEDwAOp/gAUApEj4AKFuCBwCtJXoAdC7BA4BSJnwAUFbEDgDaQvAA6FyCBwDlQPgAoOSJHQC0leAB0LkEDwDKifABQMkSPABoD9EDoHOIHQCUK+EDgJIidgDQXoIHQOcQPAAod8IHACVB8ACgI0QPgI4TPACoFMIHAEUjdgDQUYIHQMcJHgBUGuEDgG4neADQUYIHQMcJHgBUKuEDgG4hdgDQWUQPgI4RPACodMIHAF1G7ACgMwkeAB0jeABQLYQPADqd4AFAZxM9ANpP8ACg2ggfAHQKsQOAriB4ALSf4AFAtRI+AGgXoQOAriR4ALSP2AEAwgcArSByANAdxA6A9hM8AOBfhA8A1iJ0ANCdBA+A9hM8AGBtwgcAQgcARSF4ALSf4AEAzRM+AKqQ0AFAMQkeAO0neADAugkfAFVA6ACgFAgeAO0neABA6wkfABVI6ACgVIgdAB0jeABA2wkfAGVO5ACgFAkeAO0ndgBAxwgfAGVm8RY1eXuF2AFAaRI8ANpP8ACAziF8AJS4t7esSY9eQgcApU3wAGg/wQMAOpfwAVBiXLoKgHIhdgB0jOABAF1D+AAoMqEDgHIjeAB0jOABAF1L+ADoZkIHAOVK8ADoGMEDALqH8AHQhUQOACqB4AHQMYIHAHQv4QOgEwkdAFSSZcNWZFl9XbHHAChLYgcAFE+PYg9QKd5555387Gc/y4EHHpghQ4akd+/eGTZsWMaOHZvrr7++xefW1NS0+au9Ro0a1eX7gGry9pY1a3wBQLlbNmxFsUcAKGtbbfGa6AFA2ZszZ07OPffc7LHHHhkyZEj69u2b4cOHZ999983Xv/71/P3vfy/2iC1yxkcnmDVrVg477LDMmjVrjZ/Pmzcv8+bNy+9+97tceeWVufnmmzNgwIAO72/kyJEd3gbQPuIGAJWo8aWs+voVAaBdxA4AKsWPf/zjnHPOOVm8ePEaP3/ppZfy0ksv5b777svChQvzwx/+sDgDtoLfajro1VdfzZgxY/Liiy8mSY4++uiMHz8+w4YNy8svv5zJkyfnxhtvzNSpUzNu3Ljcfvvta23jscceW+d+Jk+enO9973tJkvHjx3d47j322CNXXnllh7cDlU7oAKBSuW8HQOcQPACoJN/61rcyYcKEJKs/gH/qqadmzz33zIYbbpg33ngjjz76aKZMmZIePUr7YlLCRwedd955hehx7rnnZuLEiYVlu+22Ww4++OCce+65Oe+883LHHXfkpptuylFHHbXGNnbaaad17uePf/xjktWXxTruuOM6PHf//v1btV+oNkIHAJVK6ADoXIIHAJXmrrvuKkSP448/Ppdddll69eq1xjoHHnhg/uM//iPLl5f27xelnWVK3MqVK3P11VcnSbbccsvCX4p3+/rXv573vOc9SZILLrigzfuZNWtWpk+fnmT1PToatgV0zLvvzyF6AFBplr1neeELgM7hHh4AVKJVq1blC1/4QpJkl112yeWXX75W9Gisd+/e3TVauwgfHfDUU09lwYIFSZIxY8akZ8+eTa7Xs2fPjBkzJknyyCOP5LnnnmvTfq666qrC4864zBVUK5EDgGogdgB0vobYIXgAUKmmTp2ap556Kkny1a9+NbW15X2xqPKevsjeeOONwuNNN920xXUbL//Tn/6UrbfeulX7qK+vL5xV0r9//xx55JHtmBSqk7gBQLUQOQC6htABQLW48cYbk6y+1cInP/nJws//+c9/5o033sjGG2+cQYMGFWu8NhM+OmDAgAGFxw1nfjSn8fLHH3+81fu45557MmfOnCTJEUccscY+O+LJJ5/MXnvtlVmzZuWdd97J4MGDs/vuu+fII4/Mscce2+JpTC156aWXWlw+b968wuP+vXtkZe+mz5KB9li8xZqhY8MizdEV1q/t2eRjoGWOHSrZsmErCo/7duI/6zeo6dnkY6Bljp3KMnzo//ug46rSvoxHJejf6M+4vz9vaJWaVauKPQJF1Pj91eZsscUWbd7un//85yTJVlttlfXXXz/XXnttzj///Pz9738vrNNws/N/+7d/S58+fdq8j+4kfHTAiBEj0qtXr6xYsaJw8/HmNF7eEDJao/Flro4//vi2D9mM+fPnZ/78+YXv586dm7lz5+Y3v/lNLrzwwtx0003ZYYcd2rzd4cOHt3rdY/calsGDB7d5H1Dtvvzetr94AY4daI//2KB1ZykDa3LsVIAlI4o9QVX6zDu7FXsEKAuvL3s9txd7CIrmgx/84DrXqa+vb9M2V61alSeffDJJMnjw4Jxxxhm5+OKL11pv9uzZ+cpXvpIpU6bkjjvuyEYbbdSm/XQn4aMD+vfvnwMOOCB33nlnZs6cmeuuuy7HHnvsWutdd911eeyxxwrfv/32263a/pIlS3LzzTcnWV3pDjjggA7P3KNHjxx44IEZO3Zsdtlll2y88cZ5++2385e//CWXXHJJnnjiiTz++OMZPXp0pk+f7kbqAAAAAEBFGTC3Pr3falscKKbli7t21gULFmTV/zuT6LHHHsvDDz+coUOH5rvf/W7Gjh2bvn375uGHH85Xv/rV/PnPf84DDzyQk046KbfcckuXztURwkcHTZw4MXfddVfq6uoyfvz4PPPMMzn++OMzdOjQzJs3L1dddVXOO++89O7dO8uXr7728tKlS1u17V//+teFSHLcccelR4+O34v+lltuabLE7bvvvjn99NNz6qmnZvLkyZk/f37OPPPMNv/lffHFF1tcPm/evEKVvO6hl7Oy96I2bZ/q8e7LVlW79Wt7Fj6tfvFTL+XtupVFngjKg2OHctX4MlbdbYOanoVPq39v4XNZWO+4gdZw7JSnwiWtKJr+q3oXzvS4tu+jWdzDfatgXWr6vFPsESii6dOnZ+jQoZ26zcWLFxcev/POO1lvvfUybdq0bLfddoWf77fffrn77rvzoQ99KH/7298yZcqUPPTQQ9lrr706dZbOInx00N57751LLrkkp512WlasWJEJEyZkwoQJa6zTr1+/fPe7382XvvSlJMn666/fqm03vszV+PHjO2Xelk4/6tWrVy677LL8+c9/zqxZszJlypTMnTs3m2++eau335brxy1eviorVvllgNXWuhF58d7vKXlv163MghWOHWgrxw6lbo0blJfIh88W1q/Mgvq6Yo8BZcexU/oablruo3ilZXGP5VkkfMA69XScVLWhQ4e26x4eLenbt+8a359yyilrRI8G/fr1y7e//e3Czc9/9atflWz46PgpBOSkk07KQw89lMMPPzz9+/cv/Ly2tjaHHnpo/vKXv2SPPfYo/HzgwIHr3Oa8efPyhz/8IUmy5557Zvvtt+/8wZtQW1ubk08+ufD9vffe2y37pfq8vWXNGl8AUI2WvWd54QuArrXVFq8VvgCAf3n3B/UPOuigZtc98MADU1u7+nyKhx9+uEvn6ghnfHSSD3zgA7nllltSV1eXefPmZfny5dl8880Ltezqq68urLvjjjuuc3vXXHNNVq5c/anUzrypeWu8733vKzyeO3dut+6byiVuAMBqIgdA9xI6AKBlffr0yZAhQ/Laa6tfM4cPH97sun379s3gwYPzyiuvFNYvRcJHJ6utrW3yL8YjjzxSeNxwj4uW/PKXv0yS9O7du8kbpnelmhpvUNNxQgcA/IvYAdD9BA8AaL0dd9wx99xzT5IUPpDfnIblDWd+lCKXuuoGK1euLNwkfPjw4fnwhz/c4vp//etfM3PmzCTJ2LFjs/HGG3f5jI09/vjjhcfDhg3r1n1Tvly6CgDW5DJWAMXhclYA0Hb77bdf4fGzzz7b7HoLFy7M66+/niRtujd0dxM+usHll1+eOXPmJElOO+209OzZs8X1u+Km5q1VV1eXK664ovB947/w0ODdkUPoAIDVxA6A4nD/DgDomCOPPLLweMqUKc2uN2XKlNTX1ydJ9t133y6fq72Ej07Q0n0w7r777px55plJkpEjR+ass85qcVsrV67MtddemyTZeOONc/DBB7d6jhNOOCE1NTWpqakpnJbU2LRp0/LWW281+/wVK1bklFNOyRNPPJEkOeSQQ1q8nhvVQ+QAgOaJHQDFI3YAQOd4//vfn0984hNJkuuuuy533XXXWuu88sor+e///u8kq2/RcOKJJ3brjG1RuhfhKiM77bRT9t9//xx88MHZcccd06dPn8yZMydTpkzJNddck1WrVmXQoEG54YYbCjc7b86dd96Z+fPnJ0mOPfbY9OrVq9PmnDx5cg499NAceuihGTVqVLbbbrtssMEGWbRoUR555JH84he/KFzmapNNNsmPfvSjTts35UXcAIDmCRwAxSd2AEDn++EPf5gHH3wwb731Vj75yU/mzDPPzNixY9OvX79Mnz49559/fl566aUkyTe/+c2SvtSV8NEJVqxYkVtvvTW33nprk8t33HHHXHPNNdlll13Wua3Gl7k6/vjjO23GBosWLcq1115bOKukKTvvvHOuv/76bL311p2+f0qT0AEALRM7AIpP7ACArjVy5MjcdtttOeqoozJ//vxccMEFueCCC9ZYp6amJl/72tdy9tlnF2nK1hE+OsFll12WqVOnZvr06Zk3b14WLVqUIUOG5P3vf3+OPvroHHfcca06c2PhwoX5zW9+kyTZYYcdsueee3bqnF/96lez66675sEHH8zjjz+e1157Lf/85z/Tp0+fbLrpptljjz1y1FFH5fDDD1/nfUgob0IHAKyb2AFQGgQPAOg+H/nIR/KPf/wjP/7xj/PrX/86zz33XJYvX56hQ4dm1KhR+bd/+7fstttuxR5znYSPTjBu3LiMGzeuw9vZYIMNsmTJknY/f9KkSZk0aVKzy3fYYYfssMMOhXuOUD2EDgBoHbEDoHQIHgBQHBtvvHEmTpyYiRMnFnuUdhM+oMKIHADQNmIHQGkRPACAjhI+oMwJHQDQdmIHQGkROwCAziR8QJkROgCgfcQOgNIjeAAAXUH4gBIndABA+4kdAKVJ8AAAupLwASVG6ACAjhE7AEqT2AEAdBfhA4pM6ACAjhM7AEqX4AEAdDfhA7qRyAEAnUfsAChtggcAUCzCB3QhoQMAOpfYAVDaxA4AoBQIH9CJhA4A6HxiB0DpEzwAgFIifEAHCB0A0DXEDoDyIHgAAKVI+IA2EDoAoGsIHQDlRfAAAEqZ8AEtEDoAoOuIHQDlRewAAMqF8AH/j8gBAF1P7AAoP4IHAFBuhA+qltABAN1D7AAoT4IHAFCuhA+qhtABAN1H7AAoT2IHAFAJhA8qltABAN1L7AAoX4IHAFBJhA8qhtABAN1P7AAob4IHAFCJhA/KltABAMUhdgCUN7EDAKh0wgdlQeQAgOISOwDKn+ABAFQL4YOSJHQAQPGJHQCVQfAAAKqN8EFJEDoAoDSIHQCVQ/AAqDxjNnsyi1fW5O5iDwIlTvigaJYOrcnS9QQPACg2sQOgcogdAJVpzGZPFnsEKCvCBwBAFRI7ACqL4AFQmQQPaB/hAwCgSogdAJVH8ACoTIIHdIzwAQBQoYQOgMokdgBULsEDOofwAQBQQcQOgMoleABULsEDOpfwAQBQ5sQOgMomeABUJrEDuo7wAQBQhsQOgMomdgBULsEDup7wAQBQJsQOgMoneABULsEDuo/wAQBQwsQOgOogeABULsEDup/wAQBQYsQOgOoheABULsEDikf4AAAoAWIHQPUQOwAqm+ABxSd8AAAUidgBUF0ED4DKJnhA6RA+AAC6kdgBUH0ED4DKJXZAaRI+AAC6mNgBUH3EDoDKJnhAaRM+AAC6gNgBUL2GD30ji4o9BABdQvCA8iB8AAB0ErEDoHoNH/pGsmREsccAoIsIHlBehA8AgA4QOwCq1xqXs1rVu3iDANBlBA8oT8IHAEAbiR0A1c39OwAqn+AB5U34AABYB6EDgETwAKgGggdUBuEDAKAJYgcADQQPgMomdkDlET4AAP4fsQOABmIHQOUTPKByCR8AQFUTOwBoTPAAqHyCB1Q+4QMAqDpiBwDvJngAVD7BA6qH8AEAVIVlw1ZkWX1dsccAoISIHQDVQfCA6iN8AAAVa9mwFcUeAYASJHgAVAfBA6qX8AEAVJTGl7Hq6586ADQieABUB8ED8G4AAFD23LMDgOaIHQDVQewAGhM+AICyJHYA0BLBA6A6CB5AU4QPAKBsiB0ArIvgAVAdBA+gJcIHAFDSxA4AWkPwAKgOggfQGsIHAFByxA4AWkPsAKgeggfQFsIHAFASxA4AWkvwAKgeggfQHsIHAFAUQgcAbSV4AFQPwQPoCOEDAOg2YgcAbSV2AFQPsQPoLMIHANClxA4A2kPwAKgeggfQ2YQPAKDTiR0AtJfgAVA9BA+gqwgfAECnEDsAaC+xA6C6CB5AVxM+AIB2EzsA6AjBA6C6CB5AdxE+AIA2ETsA6CjBA6C6CB5AdxM+AIB1EjsA6AyCB0B1ETyAYhE+AIAmiR0AdAaxA6D6CB5AsQkfAECB2AFAZxE8AKqL2AGUEuEDAKqc2AFAZxI8AKqL4AGUIuEDAKqQ2AFAZxI7AKqP4AGUMuEDAKqE2AFAZxM8AKqP4AGUA+EDACqY2AFAVxA8AKqP4AGUE+EDACqM2AFAVxA7AKqT4AGUI+EDAMqc0AFAVxI8AKqT4AGUM+EDAMqQ2AFAVxM8AKqP2AFUCuEDAMqE2AFAdxA8AKqP4AFUGuEDAEqY2AFAdxA7AKqT4AFUKuEDAEqM2AFAdxE8AKqT4AFUOuEDAEqA2AFAdxI8AKqT4AFUC+EDAIpE7ACgO4kdANVL8ACqjfABAN1I7ACguwkeANVL8ACqlfABAF1M7ACgGAQPgOokdgAIHwDQJcQOAIpB7ACoXoIHwL8IHwDQScQOAIpF8ACoXoIHwNqEDwBoB5EDgFIgeABUL8EDoHnCBwCsg8gBQKkRPACql+ABsG7CBwA0InIAUKrEDoDqJngAtJ7wAUDVEjkAKAeCB0B1EzwA2k74AKAqiBwAlBvBA6B6iR0AHSN8AFBxRA4AypXYAVDdBA+AziF8AFDWRA4AKoHgAVDdBA+AziV8AFA2RA4AKo3gAVDdBA+AriF8AFCSRA4AKpXYAYDgAdC1hA8AikrgAKBaCB4ACB4A3UP4AKDbiBwAVCPBAwDBA6B7CR8AdAmRA4BqJ3gAVDexA6B4hA8AOkzkAIDVxA4ABA+A4hM+AGgTkQMA1iZ4ACB4AJQO4QOAZokcANAywQMAwQOg9AgfACQROQCgtcQOABLBA6CUCR8AVUjkAIC2EzwASAQPgHLQo9gDVIp33nknP/vZz3LggQdmyJAh6d27d4YNG5axY8fm+uuvb/G599xzT2pqalr1NXHixE6Zd8mSJbnooouy5557ZtCgQenfv3+23377nHXWWXnhhRc6ZR9AaVj2nuVrfQEArbfVFq+JHgBkzGZPih5A1fnqV7+6xvvT99xzT7FHahVnfHSCWbNm5bDDDsusWbPW+Pm8efMyb968/O53v8uVV16Zm2++OQMGDCjSlP/y9NNPZ+zYsXnqqafW+PmsWbMya9asXHbZZbnmmmvyyU9+skgTAu0lagBA5xA6AEic3QFUt7/+9a/5//6//6/YY7SL8NFBr776asaMGZMXX3wxSXL00Udn/PjxGTZsWF5++eVMnjw5N954Y6ZOnZpx48bl9ttvb3F7V1xxRfbcc89ml2+yySYdmvftt9/OwQcfXIgep556asaNG5d+/fpl2rRpOf/887Nw4cJ8+tOfzv33359dd921Q/sDuo7IAQCdT/AAIBE8AFatWpXPf/7zqauryyabbJJXX3212CO1ifDRQeedd14hepx77rlrXIpqt912y8EHH5xzzz035513Xu64447cdNNNOeqoo5rd3tZbb52ddtqpy+b97ne/m9mzZydJLrroonzlK18pLPvQhz6UUaNGZf/998+SJUty5plnls2pS1Dplg1bscbjZfV1RZwGACqP4AFAIngANLj44ovz8MMPZ/vtt8/hhx+e888/v9gjtYl7fHTAypUrc/XVVydJttxyy0yYMKHJ9b7+9a/nPe95T5Lkggsu6Lb53m3FihW5+OKLkyQ77LBDzjrrrLXW+fCHP5yTTz45SXLvvffm4Ycf7tYZodo1dT8OZ3YAQNdx/w4AEvfvAGhszpw5hfe6f/7zn6d3795FnqjthI8OeOqpp7JgwYIkyZgxY9KzZ88m1+vZs2fGjBmTJHnkkUfy3HPPdduMjU2bNq0w7/jx49OjR9P/959wwgmFx1OmTOmO0aAqCRwAUBwNsUPwAEDwAFjbF7/4xSxatCjjx4/P/vvvX+xx2sWlrjrgjTfeKDzedNNNW1y38fI//elP2Xrrrbtsrubcd999hcct/YXdY489st5662XJkiW5//77u2M0qHiiBgAUn9ABQAOxA6BpN9xwQ26//fYMGjQo3/ve94o9TrsJHx0wYMCAwuOGMyma03j5448/3ux6X/va1/LSSy/llVdeyXrrrZetttoqo0aNyhe+8IWMHDmyQ/M23u/222/f7Hq1tbUZMWJEZs6cmSeeeKJD+4RqJHIAQGkRPABoIHgANO+tt97KGWeckSS58MILM3jw4CJP1H7CRweMGDEivXr1yooVK/LHP/6xxXUbL58zZ06z6z3wwAOFx8uXL89f//rX/PWvf83FF1+cCRMm5Nxzz01NTU275n3ppZeSJP37989GG23U4rrDhw/PzJkz89prr2XZsmXp06dPm/bRnHnz5hUe9+/ZI717NX15MCgXjW863qBvF/yndYOank0+Blrm2IG2q5TjZvjQf52dnVXld01iyk//Rn/P+vs7B63WHcfOvps8869v6vp3yT6gO/WsW1XsESiixu+vNmeLLbZo17bPPvvsvPLKK9lnn30K94EuV8JHB/Tv3z8HHHBA7rzzzsycOTPXXXddjj322LXWu+666/LYY48Vvn/77bfXWmfo0KE54ogj8pGPfCTbbLNNamtrM2fOnNx+++256qqrsmLFinzjG9/I8uXL853vfKdd8zbst/GZKi39b2uwaNGiVoeP4cOHt3qek7YeWtbVEIrlPzbo/kvlQSVw7EDblfVxs2REsSegin3mnd2KPQKUpS47dp7fq2u2C0Xy+uuvJ7mp2GNQJB/84AfXuU59fX2bt/unP/0pl112WWpra/Pzn/+83R++LxXCRwdNnDgxd911V+rq6jJ+/Pg888wzOf744zN06NDMmzcvV111Vc4777z07t07y5evvvzN0qVL19jGnnvumRdeeCG9evVa4+cf+MAH8qlPfSqf//znc9BBB2XBggW54IIL8ulPfzq77LJLm2d95513kiS9e6/7ExSNQ8e75wUAAAAAKFfrP788ffsuK/YYrfbOO117WfXly5fn85//fOrr6/Pv//7v2Wmnnbp0f91B+OigvffeO5dccklOO+20rFixIhMmTMiECRPWWKdfv3757ne/my996UtJkvXXX3+N5Y3PrmjKBz/4wfzkJz/J5z73udTX1+cnP/lJLr300jbP2rdv3yQpBJiWLFv2rwO/X79+rd7Hiy++2OLyefPmFarkFc/Ny4rXFrd629BVmrpcVanZoKZn4VO331v4XBbWryzyRFAeHDvQduV23KxxSSsoov6rehc+rX5t30ezuIf7vkFrdOaxs8YlraCCLerlUlfVbPr06Rk6dGinbvM73/lOnnzyybznPe/Jueee26nbLhbhoxOcdNJJ2XXXXfOtb30rU6dOzeLFq9/Mr62tzdixY3PhhReucXPzgQMHtnkf48aNyxe/+MUsXLgw9957b7vmbAguixYtWue6Df8bktZdGqtBW64ft3jlqixdUdq/SFN5mrzxeNvP/iuqhfUrs6C+rthjQNlx7EDblepx0/hm5ev+ly10v8U9lmeR8AFt1t5jp+GG5aX3igVdY2VteV+CiI4ZOnRou+/h0ZQnn3wy559/fpLkxz/+8To/pF8uhI9O8oEPfCC33HJL6urqMm/evCxfvjybb7554SyLq6++urDujjvu2Obt19bWZuTIkZkxY0bmzp3brhm32GKLPPTQQ1m8eHHeeuutFm9w3nDmxpAhQ1p9fw8oNU1GDgCgbDUOHgDQEDwAaL8f/OAHWb58ebbZZpssWbIk119//Vrr/P3vfy88vvvuu/PKK68kSQ455JCSDSXCRyerra1t8gbfjzzySOFxa25A05SO3lDmfe97X26++eYkq0ve3nvv3eR6dXV1eeaZ1aeH7rDDDh3aJ3QXkQMAKpfgAUBjggdA52m45cGzzz6bY489dp3rf/Ob3yw8fu6554SParZy5crccsstSZLhw4fnwx/+cJu3UVdXl9mzZydJhg0b1q45PvKRjxQe33vvvc2GjxkzZhQudbXPPvu0a1/QVQQOAKgOYgcAjYkdALRFj2IPUA0uv/zyzJkzJ0ly2mmnpWfPnm3exq9+9avCfUL233//ds0xatSobLjhhkmSyZMnp76+6RsbTJo0qfD48MMPb9e+oDMse8/ytb4AgMq21RaviR4AFIzZ7EnRA6ALTZo0KfX19S1+Nb7h+bRp0wo/32qrrYo3+DoIH52gpXtu3H333TnzzDOTJCNHjsxZZ521xvI333wz99xzT4vbnz59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mWemX79++fznP9/huffYY49ceeWVHd4OUHpEDQCgu4kdAHQFsQO6x8svv5wkGTZsWI4++ujsu+++ec973pOVK1fmwQcfzPe///3MnTs3V111VVasWJFrr722yBOvm/DRQeedd14hepx77rmZOHFiYdluu+2Wgw8+OOeee27OO++83HHHHbnpppty1FFHFdapqanJmDFjct5552Xvvfdea/ujR4/OkUcemdGjR2fp0qU5++yzc+yxx2b99dfv0Nz9+/fPTjvt1KFtAMUxfOgbGdhjebHHAACqnNgBQFcQO6D7bb/99vnOd76TI488Mj179lxj2d57753Pfe5z2WeffTJ79uxcd911+T//5/9kv/32K9K0rdOj2AOUs5UrV+bqq69Okmy55ZaZMGFCk+t9/etfz3ve854kyQUXXLDGss033zxTp05tMno02GuvvXL66acnWX35q9///vedMT5QYrba4rVmv4YPXftyeAAA3WnMZk+u8QUAnemoDf4iekCR3H777TnmmGPWih4NBg8enO9///uF72+66abuGq3dnPHRAU899VQWLFiQJBkzZkyzfzF69uyZMWPG5PLLL88jjzyS5557LltvvXWb9jV69OjCX65nnnmmY4MD3cqlpwCAciVwANCVhA4oH6NHjy48Lof3p4WPDmh8Q/JNN920xXUbL//Tn/7U5vCxbNmywuPmAgvQ/UQNAKDSiB0AdCWxA8pTub0/LXx0wIABAwqPG878aE7j5Y8//nib93XvvfcWHu+www5tfv67Pfnkk9lrr70ya9asvPPOOxk8eHB23333HHnkkTn22GPTq1evdm33pZdeanH5vHnzCo/Xr+mZ3jX+ClK6WnV5qVW9u36QJP0b7ad/N+0TKoFjB9rOcVOd9t2k0af26voXb5AyVlvXr8nHQMscO9Xj4AGPJUlWLN+ouINUgJV1fYo9AkXU+P3V5myxxRadvt/Ofn+6q3nXuQNGjBiRXr16ZcWKFfnjH//Y4rqNl8+ZM6dN+5k3b16uvPLKJMmQIUPWOK2ovebPn5/58+cXvp87d27mzp2b3/zmN7nwwgtz0003tesv8PDhw1u97mkDhmfwhoPbvA/oNktGFHuCJn3mnd2KPQKUJccOtJ3jpoo8v1exJ6goI146vNgjQFly7FS20r8wTvl4/fXXk5xS7DEokg9+8IPrXKe+vr5T97lq1ao17l19zDHHdOr2u4Lw0QH9+/fPAQcckDvvvDMzZ87Mddddl2OPPXat9a677ro89thjhe/ffvvtVu+jvr4+p512WuE5EyZMSN++fds9c48ePXLggQdm7Nix2WWXXbLxxhvn7bffzl/+8pdccskleeKJJ/L4449n9OjRmT59euGm7AAAAAAAlaD3M/PSu2fr36MttlUrFxV1/z/4wQ8yffr0JMkRRxyR3XffvajztIbw0UETJ07MXXfdlbq6uowfPz7PPPNMjj/++AwdOjTz5s3LVVddlfPOOy+9e/fO8uXLkyRLly5t9fa/853v5Lbbbkuy+gYyX/ziFzs07y233JKNNtporZ/vu+++Of3003Pqqadm8uTJmT9/fs4888zccsstbdr+iy++2OLyefPmFarkJYtezLJeb7Vp+9Cqy09VoP6rehc+dXtt30ezuMfyIk8E5cGxA23nuKk8a1zGii5TW9ev8Gn1p7eYkrra1v/eB9XMsVM5Gi5lRdfr+6JLXVWz6dOnZ+jQod22v3vvvTf/+Z//mSTZZJNN8j//8z/dtu+OED46aO+9984ll1yS0047LStWrMiECRMyYcKENdbp169fvvvd7+ZLX/pSkmT99ddv1bavueaawra23nrrXHvttenRo0eH5m0qejTo1atXLrvssvz5z3/OrFmzMmXKlMydOzebb755q7ffluvHvV2/Mkvr61q9PpWvNTcKL27fLg2LeyzPIm9CQZs5dqDtHDflq/ENyv2Lu/vV1S5NXe3iYo8BZcexU37cqLw4eta6H1c1Gzp0aJfcw6Mp//jHP3L44Yenrq4uffv2zY033phNNtmkW/bdUcJHJzjppJOy66675lvf+lamTp2axYtXv0jX1tZm7NixufDCC9e4ufnAgQPXuc077rgjJ554Yurr67PZZpvl97//fTbbbLMu+9/QoLa2NieffHLOPvvsJKuL3mc+85ku3y+VrzVRAwCA9mscOwCgq4gdUB2ee+65HHTQQXnzzTfTs2fPXH/99dlvv/2KPVarCR+d5AMf+EBuueWW1NXVZd68eVm+fHk233zzwv04rr766sK6O+64Y4vbuueee3LUUUdlxYoVGThwYO68885su+22XTp/Y+973/sKj+fOndtt+6U8CRoAAMUjdgDQXQQPqB4vv/xyPvrRj+bll19OTU1Nrrjiihx22GHFHqtNhI9OVltbm+HDh6/180ceeaTwuOEeF02ZPn16DjnkkLzzzjsZMGBAfve73+X9739/l8zanJqamm7dH6VL1AAAKD1iBwDdReyA6vP6669nzJgxefbZZ5MkP/7xj3P88ccXeaq2Ez66wcqVKws3CR8+fHg+/OEPN7nezJkz8/GPfzyLFi1K3759c9ttt2WvvfbqzlGTJI8//njh8bBhw7p9/3QPUQMAoHyIHQB0F7EDqteCBQvysY99rPD+8AUXXJAvfvGLRZ6qfYSPbnD55Zdnzpw5SZLTTjstPXv2XGud2bNnF66Z1qtXr9x8880ZNWpUN0+a1NXV5Yorrih8X07XbeNfRA0AgPImdADQncQOYMmSJTn44IPzl7+s/u/B1772tXz1q18t8lTtJ3x0grlz52bzzTdvctndd9+dM888M0kycuTInHXWWWutM2fOnHz0ox/N/Pnz07Nnz1x77bUZO3Zsm+c44YQTMnny5CTJtGnT1gon06ZNy2677ZaNNtqoyeevWLEip556ap544okkySGHHNLkZbsoLlEDAKAyiR0AdDfBA0iS5cuX5/DDD8/999+fJDnjjDPyrW99q8hTdYzw0Ql22mmn7L///jn44IOz4447pk+fPpkzZ06mTJmSa665JqtWrcqgQYNyww03FG523uCNN97IRz/60bz44otJkrPOOivbb799/v73vze7v4EDBzYbWloyefLkHHrooTn00EMzatSobLfddtlggw2yaNGiPPLII/nFL35ROI1pk002yY9+9KM274OOETUAAKqL2AFAdxM7gHc79thjM3Xq1CTJAQcckJNPPrnF96d79+6dkSNHdtd47SJ8dIIVK1bk1ltvza233trk8h133DHXXHNNdtlll7WWPfbYY3nqqacK31900UW56KKLWtzf+PHjM2nSpHbNumjRolx77bW59tprm11n5513zvXXX5+tt966XfugaaIGAACJ2AFA9xM7gJY03J86WX0Fo/e///0trr/lllvm+eef7+KpOkb46ASXXXZZpk6dmunTp2fevHlZtGhRhgwZkve///05+uijc9xxx6VXr17FHjNf/epXs+uuu+bBBx/M448/ntdeey3//Oc/06dPn2y66abZY489ctRRR+Xwww9v8j4kNE/UAACgJWIHAMUgeADVSvjoBOPGjcu4cePa9dxRo0al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xfKNijcIAEAHNbxPnSQnnnhik+v06NEjxx9/fM4555y89dZbmTZtWg466KBumrBthI92euONNwqPN9100xbXbbz8T3/6UyF8LF++PNOnT0+SfOhDH0rv3r2b3cb++++fO++8M8uWLcuMGTMyevToNs3bcImrhm01Z7PNNsvIkSMze/bs3H///W3aR1vtNfiF9N+svkv3AQAA0JncrwMAqEQN7x/3798/u+++e7PrNX5v+f777xc+Ks2AAQMKjxvO/GhO4+WPP/544fHs2bOzcuXKJMn222/f4jYaL3/iiSfaHD4a77c1+5o9e3ZefPHFLF68OP3792/1fl566aUWlzfcEyVJFr+yKkmPVm8bqlnPulV5/fXXkySLeq3KytqaIk8E5cGxA23nuIE1HbDemmePv/hm078frazrUzh2+r7YJz1rW/97FFQzxw603Svz/vXh6bq6uiJOUr6WrVpc7BHapPG88+bNW+f6W2yxRZv30XC1oBEjRrR43+d3v09dqoSPdhoxYkR69eqVFStW5I9//GOL6zZePmfOnMLjxpFgXX8Zhw8fXnjcOB60Vnv2VV9fn5deeinbbbddq/fTeM51uXj8b1u9LpAkNxV7AChTjh1oO8cNNDi/TWuf0kVTQKVz7EB7vfbaa9lqq62KPUbZefCNm4s9Qrt98IMfXOc69fVtu8rOO++8U4jQ63rveODAgenfv38WL17crvepu4uP27dT//79c8ABByRJZs6cmeuuu67J9a677ro89thjhe/ffvvtJh83PoOkuf01WLRoUZvn7c59AQAAAABdb/78+cUegQrQlveOk3+9f1zK7x0746MDJk6cmLvuuit1dXUZP358nnnmmRx//PEZOnRo5s2bl6uuuirnnXdeevfuneXLlydJli5dWnj+O++8U3jc0v09kqRPnz6Fx4230Vrdta91Vb7nnnsu++23X5LkgQceaNMZIlDN5s2bVyj606dPz9ChQ4s8EZQHxw60neMG2sexA+3j2IG2e/HFF/PhD384ybovac+/bLbZZiV9hkJrzJs3L0OGDGnxUlTt0Zb3jpN/vX/cnvepu4vw0QF77713Lrnkkpx22mlZsWJFJkyYkAkTJqyxTr9+/fLd7343X/rSl5Ik66+/fmFZ3759C48bwkhzli1btsY22+rd+2r8fWfuqy3Xjxs+fHi7rjcH1W7o0KGOHWgHxw60neMG2sexA+3j2IG2a+k9PtZUW1tb9v+N6ar52/I+dfKv94/b8z51d3Gpqw466aST8tBDD+Xwww9f4xJRtbW1OfTQQ/OXv/wle+yxR+HnAwcOLDxuHEHWdVrQ4sX/uoFNa043erfu3BcAAAAAAOWhLe8dJ/96/7iU3zt2xkcn+MAHPpBbbrkldXV1mTdvXpYvX57NN9+8UMquvvrqwro77rhj4XHjQtf45uNNaXwaVnsuD/XufQ0ePHid+6qpqSn7CgoAAAAAQPP69u2bjTfeOG+88cY636d+8803C+GjlG9j4IyPTlRbW5vhw4dn2223XeP0oEceeaTwuOG6lUkycuTI9OzZM0ny5JNPtrjtxst32GGHNs/2vve9r8lttbSv4cOHr3EWCwAAAAAAlafh/eOnn346dXV1za7X0fepu4vw0cVWrlyZW265JcnqkNBw46Fk9Y1iGkLIgw8+2OL10+69994kq28c0/jSWa31kY98ZK1tNeWVV17J7NmzkyT77LNPm/cDAAAAAEB5aXj/ePHixWt8kP/dGr+3XMrvHwsfXezyyy/PnDlzkiSnnXZa4QyPBp/61KeSJAsXLiwEknd76aWX8oc//CFJcuCBB65xzbXWGjlyZKHA3XDDDVmyZEmT602aNKnw+PDDD2/zfgAAAAAAKC8N71MnyZVXXtnkOqtWrcpVV12VJNloo40yevTo7hitXYSPDpo7d26zy+6+++6ceeaZSVaHh7POOmutdU455ZRsuOGGSZL//M//zBtvvLHG8pUrV+b000/PypUrkyRf+cpXmtzXxIkTU1NTk5qamjXiRWP/8R//kST55z//mbPPPnut5c8880zOP//8JMmIESOEDwAAAACAKvDBD34w++67b5LVH+Z/8MEH11rn+9//fp544okkyRlnnJFevXp164xt4ebmHbTTTjtl//33z8EHH5wdd9wxffr0yZw5czJlypRcc801WbVqVQYNGpQbbrhhjft+NBg0aFAuvPDC/J//83/ywgsvZK+99srXvva17Lzzznn55Zfzwx/+MNOmTUuSHHvssRk1alS7Zx0/fnyuuOKK3H///fnpT3+aV155JaeeemoGDhyY6dOn55vf/GYWLlyYHj165OKLL05trb8eAAAAAADV4Ec/+lH22WefLF26NAcddFD+67/+K6NHj87SpUtz/fXX5xe/+EWS5j/kX0pq6uvr64s9RDkbMGBA4S72Tdlxxx1zzTXXZJdddmlxO+eee26++c1vprn/O8aOHZubb765yXiSrD7j4xvf+EaS1acinXDCCU2u9/rrr2fs2LF5+OGHm1zep0+f/OQnP8kpp5zS4rwAAAAAAFSW2267Lccdd1wWLlzY5PKRI0fmjjvuyIgRI7p5srZxqasOuuyyy3LiiSdmxx13zKBBg9K7d+9svvnm+cQnPpErrrgijz766DqjR5J84xvfyH333ZfPfOYzGT58eHr37p1NNtkkY8aMybXXXps77rij2ejRFoMHD84DDzyQn/3sZ/nIRz6SjTfeOH379s0222yTU089NY888ojoAQAAAABQhQ455JDMnDkz//7v/56RI0dmvfXWy0YbbZQ99tgjF154YR599NGSjx6JMz4AAAAAAIAK4owPAAAAAACgYggfAAAAAABAxRA+AAAAAACAiiF8AAAAAAAAFUP4AAAAAAAAKobwAQAAAAAAVAzhAwAAAAAAqBjCBwAAAAAAUDGEDwAAAAAAoGIIH6zlhRdeyFlnnZXtt98+/fv3z6BBg7Lnnnvmu9/9bpYsWdKhba9atSqPP/54Jk2alNNPPz177rln+vTpk5qamtTU1OSee+5p0/aWLFmSiy66KHvuuWcGDRqU/v37Z/vtt89ZZ52VF154oUOzQluVw7EzatSownPW9QXdpSuPnSVLluSWW27JF77whey5554ZOHBgevXqlY033jgf+tCHMnHixLzyyitt2p7XHUpBORw3XnMoRV157DzxxBP5yU9+kvHjx+cDH/hAtthii/Tt2zf9+/fPNttsk09/+tO59dZbU19f36rt1dXV5ec//3n23XffDBkyJP369cu2226b0047Lf/4xz86NCu0VTkcOyeccEKrX3eef/75Ds0MrdGVx01zlixZkm222abwd32rrbZq9fP8nkPFqYdGfvOb39RvsMEG9Uma/Bo5cmT9U0891e7tT5o0qdltJ6mfNm1aq7f11FNP1b/3ve9tdlsbbLBB/W233dbuWaEtyuXY2X///VvcTuMv6A5deez87W9/qx8wYMA6/65vsMEG9ddff/06t+d1h1JRLseN1xxKTVf/e+2zn/1sq/6+77///vWvv/56i9t67bXX6vfcc89mt9GnT5/6Sy+9tN2zQluUy7Ezfvz4Vr/uPPfcc+2eF1qjq4+b5px11llr7GfLLbdc53P8nkOlqg38P48++mg+/elPZ+nSpRkwYEDOOeecjB49OkuXLs3111+fSy+9NLNnz87BBx+cGTNmZP3112/zPuobfUKjV69e2XnnnbNixYo89thjbdrO22+/nYMPPjhPPfVUkuTUU0/NuHHj0q9fv0ybNi3nn39+Fi5cmE9/+tO5//77s+uuu7Z5Vmitcjp2Guyxxx658sor2/Vc6CxdfewsXLgwixYtSpLss88++eQnP5k99tgjG2+8cV577bXccsstufTSS7Nw4cJ89rOfzQYbbJBPfOITTW7L6w6lopyOmwZecygF3fHvtdra2uy1117ZZ599svPOO2ezzTbLkCFD8uabb+bJJ5/MJZdckr///e+59957c8ghh+S+++5Ljx5rX4Rh5cqVOfzww/Pwww8nSY444oiceuqpGTRoUB566KF861vfyquvvprTTjstm2+++TqPQeiIcjp2GgwbNix33nlni/vcfPPN2zwntFZ3HDfN7feHP/xh+vbtm169euXtt99e53P8nkNFK3Z5oXTsu+++9Unqa2tr6x944IG1ll900UWF2nvuuee2ax8PPfRQ/cUXX1z/4IMP1i9durS+vr6+/txzz23zp9YnTJhQeM5FF1201vL777+/vra2tvCpEOhK5XTsNHz61nFBKejqY+f++++vP+aYY+r/8Y9/NLvOr3/96/qampr6JPXbbrtt/apVq5pcz+sOpaKcjhuvOZSS7vj32ooVK1pcXldXV3/EEUcU9nPrrbc2ud7ll19eWOf0009fa/lTTz1V+BTxiBEj1rlf6IhyOnYazvhozSfcoSt1x3HzbnV1dfW77757fZL68847r37LLbds1fHg9xwqmfBBfX396jdVG/5Dd9pppzW5zsqVK+t32GGH+iT1G220Uf3y5cs7Zd9tffN2+fLl9RtuuGF9kvoddtihfuXKlU2ud9pppxW2O3369E6ZFd6tnI6d+npvQlE6innsvNuRRx5ZmOWRRx5Za7nXHUpFOR039fVecygdpXTsPPjgg4VZ/uM//qPJdRrmGDRoUP3ixYubXOf8888vbOeGG27oklmh3I4d4YNSUKzj5vvf/359kvrtttuuftmyZa0KH37PodK5uTlJkl//+teFxyeeeGKT6/To0SPHH398kuStt97KtGnTumO0tUybNi0LFixIkowfP77ZU1xPOOGEwuMpU6Z0x2hUoXI6dqCUlNKxM3r06MLjZ555Zq3lXncoFeV03EApKaVjp/HlTN555521ls+ePTtPPPFEkuSYY47Jeuut1+R2vObQHcrp2IFSUYzj5oUXXsjXv/71JMnPf/7z9O7du1XP83sOlU74IEly3333JUn69++f3Xffvdn19t9//8Lj+++/v8vnakrDrMma87zbHnvsUfhFoVizUvnK6diBUlJKx86yZcsKj3v27LnWcq87lIpyOm6glJTSsXP99dcXHm+//fZrLW/ta85mm22WkSNHJvGaQ9cpp2MHSkUxjpvTTz89ixcvzuc+97mMGjWq1c/zew6VTvggSQqfKhoxYkRqa5u/533jf2A0PKe7Pf7444XHLf2Dp7a2NiNGjEhSvFmpfOV07DT25JNPZq+99spGG22Uvn37Zosttshhhx2Wq666KitWrCj2eFSBUjp27r333sLjHXbYYa3lXncoFeV03DTmNYdiK/ax8/rrr+fBBx/MySefnG9/+9tJksGDB+ezn/3sWuu29jWn8fIXX3wxixcv7rR5oUE5HTuNvfHGG9l///2z8cYbp0+fPhk6dGg+9rGP5Sc/+UmWLFnSafNBU7r7uLn++uvz29/+NgMHDsz3v//9Nj3X7zlUOuGDvPPOO3n99deTJFtssUWL6w4cODD9+/dPsvof2MXw0ksvJVldzzfaaKMW1x0+fHiS5LXXXlvjk4nQGcrt2Gls/vz5mT59ehYsWJBly5Zl7ty5+c1vfpPx48dn11139Y8ZulQpHTt/+9vfcscddyRJdt555ybfwPW6Qykot+OmMa85FFOxjp1Ro0alpqYmNTU1GTJkSD784Q/niiuuSH19fQYPHpwpU6Y0+ZrS8JrTmnkbXnPq6+vXeB50hnI7dhpbtGhR/vjHP+af//xnli9fnldeeSVTp07Nv/3bv2XkyJF54IEHOjQjNKe7j5s333wzZ555ZpLkggsuyJAhQ9r0fL/nUOmED/L2228XHg8YMGCd6zf8h3nRokVdNlNLGuZty6xJ8ealcpXbsZOsvpbogQcemO9///v5wx/+kEcffTR//OMf88Mf/rDwxtXjjz+e0aNHZ86cOUWbk8pWKsfOsmXLcsopp2TlypVJUvgk4bt53aEUlNtxk3jNoTSUyrHT4Mtf/nKeeOKJfOQjH2lyeVvm9ZpDVyq3YydJampqsvfee+fb3/52fve73+Uvf/lLHnjggVxyySX54Ac/mCSZO3duDjrooDz66KNdMifVrbuPm6985SuZP39+PvShD+XUU09t8/P9nkOla/6cK6pG4xuDteYGSH369EmSLF26tMtmaknDvG2ZNSnevFSucjt2kuSWW25p8pMc++67b04//fSceuqpmTx5cubPn58zzzwzt9xyS/cPScUrlWPnS1/6UmbMmJFk9c38DjnkkCbX87pDKSi34ybxmkNpKNaxc+WVV2bx4sWpr6/PW2+9lRkzZuR//ud/8pOf/CTPPvtsLrvssmy66aYdmtdrDl2p3I6dJPnBD37Q5OtOw5vC//3f/53vfOc7Wbx4cU455ZTMmDEjNTU1HZoXGuvO4+aPf/xjrrjiitTW1ubnP/95u/4u+z2HSueMD9K3b9/C4+XLl69z/YZT2vr169dlM7WkYd62zJoUb14qV7kdO0laPH21V69eueyyy7LddtslSaZMmZK5c+d202RUk1I4ds4///xcdtllSZI999wzP/3pT5td1+sOpaDcjpvEaw6loVjHztZbb52ddtopO++8c/bdd9/8+7//e2bOnJmxY8fm9ttvz5577tnk5anaMq/XHLpSuR07ScuvOzU1Nfn2t7+dAw88MEkKZ4NAZ+qu42bZsmX5/Oc/n/r6+pxxxhl5//vf37ZB/x+/51DphA+y/vrrFx635nS1hhvnteZUuK7QMG9bZk2KNy+Vq9yOndaora3NySefXPi+8c1robMU+9i55JJL8l//9V9JVt/E77e//e0ap26/m9cdSkG5HTet4TWH7lDsY6exvn375sorr8x6662XF198MWefffZa67RlXq85dKVyO3Za67TTTis89rpDZ+uu4+bb3/52Zs2aleHDh+cb3/hG24ZsxO85VDrhg/Tt2zcbb7xxkqzzpnhvvvlm4T92DTc26m4NN4havHhx3nrrrRbXbbhB1JAhQ9Y4LQ86Q7kdO631vve9r/DYp2/pCsU8dq677rqcfvrpSZItt9wyv//97zN48OAWn+N1h1JQbsdNa3nNoauV2r/XBg8enH322SdJcuutt2bFihVrLG98M9x1zdvwmlNTU7POm+hCW5XbsdNaXnfoSt113Fx44YVJko9+9KO57bbbcv3116/11bDtxYsXF3529913r7Edv+dQ6YQPkvzrxf/pp59OXV1ds+s9+eSThccNN6Xsbo3/odJ4nnerq6vLM888k6R4s1L5yunYaS3XuaU7FOPY+c1vfpPjjz8+q1atytChQ3PXXXe16o0irzuUinI6blrLaw7dodT+vTZkyJAkyZIlS/L666+vsay1rzmNlw8fPrzDZ2BBU8rp2Gktrzt0te44bhouTXXllVfm2GOPbfKr4Rh5/fXXCz8777zzmpz13fO8m99zKFfCB0mSj3zkI0lWV95HHnmk2fUanwra8GmL7tYwa9LyqakzZswoFO5izUrlK6djp7Uef/zxwuNhw4YVcRIqWXcfO3fddVeOOeaY1NXVZeONN87vf//7bLvttm2a9d3zvJvXHbpaOR03reU1h+5Qav9ea/wp83dfLqS1rzmvvPJKZs+encRrDl2nnI6d1vK6Q1crteOmJX7PodIJHyRJPvWpTxUeX3nllU2us2rVqlx11VVJVt80bPTo0d0x2lpGjRqVDTfcMEkyefLk1NfXN7nepEmTCo8PP/zw7hiNKlROx05r1NXV5Yorrih8v99++xVxGipZdx47DzzwQA477LAsW7YsG264Ye68887suOOOrX6+1x1KRTkdN63hNYfuUkr/XnvppZfy4IMPJll96bjG14NPkpEjRxY+TXvDDTdkyZIlTW7Haw7doZyOnda65JJLCo/333//TpkNGuuO46a+vn6dX1tuuWWS1cdLw8/uueeeNbbj9xwqXj38P/vuu299kvra2tr6Bx54YK3lF110UX2S+iT155577lrLp02bVlg+fvz4Vu/33HPPLTxv2rRprXrOhAkTCs+56KKL1lr+wAMP1NfW1tYnqd9///1bPQu0R7kcO3fffXf9m2++2ezy5cuX148fP76wzUMOOaTVs0B7dMex8+ijj9ZvtNFG9Unq+/fvX3/fffe1a1avO5SKcjluvOZQarr62Jk1a1b9XXfd1eIMb731VmGOJPUTJkxocr3LL7+8sM4Xv/jFtZY//fTT9RtssEF9kvoRI0bUr1ixosX9QkeUy7Hz4IMP1r/88svNbmPVqlX1X/va1wrb2GWXXepXrVrV4n6hvYr1HkFjW265ZX2S+i233LLF9fyeQyWr7Xg6oVL86Ec/yj777JOlS5fmoIMOyn/9139l9OjRWbp0aa6//vr84he/SLL6U0hnnXVWu/fTuBQnyV//+tfC4//93//N888/X/h+xIgRa5x61+ArX/lKfvWrX2X27Nk5++yz8/TTT2fcuHHp169fpk2blu985zupq6tLv3798sMf/rDds0JrlMuxM3ny5Bx66KE59NBDM2rUqGy33XbZYIMNsmjRojzyyCP5xS9+UTj1e5NNNsmPfvSjds8KrdHVx84zzzyTj33sY4Ub9X3rW9/KhhtumL///e/NPmeTTTbJJptsstbPve5QKsrluPGaQ6np6mPn5ZdfzoEHHphddtkln/rUp7L77rtns802S21tbV555ZXcf//9ufzyy/PKK68kSXbaaaf853/+Z5PbGj9+fK644orcf//9+elPf5pXXnklp556agYOHJjp06fnm9/8ZhYuXJgePXrk4osvTm2tX+vpOuVy7Pzv//5vLrjggnz84x/PmDFj8r73vS8bbbRRli1blpkzZ+aKK67IQw89lCRZb731cumll7rfB12mu94j6Ax+z6GiFbu8UFp+85vfFD491NTXyJEj65966qkmn9vaIt3ctpv6amk7Tz31VP173/veZp+7wQYb1N92220d/BOB1imHY6fxJ2tb+tp5553r//GPf3TSnwy0rCuPnSuvvLJNx02a+cRVA687lIpyOG685lCKuvLYabx8XV8HH3xw/auvvtrirK+99lr9nnvu2ew2+vTpU3/ppZd2xh8LrFM5HDuNz4Zv6es973lPu88AhrbojvcIWtLaMz7q6/2eQ+Xy0RDWcMghh2TmzJn50Y9+lDvuuCMvvfRSevfunREjRuToo4/Ol770pay33nrFHjPJ6k+0P/roo/npT3+aG2+8MU8//XSWL1+e4cOHZ+zYsTnjjDMK1zSErlYOx85Xv/rV7LrrrnnwwQfz+OOP57XXXss///nP9OnTJ5tuumn22GOPHHXUUTn88MPTs2fPos5K9SiHY6eB1x1KRTkcN15zKEVdeezss88+ufPOO/OHP/whM2bMyEsvvZT58+dnyZIl2WCDDbL11ltn7733zrHHHtuqG8MOHjw4DzzwQC699NJce+21eeKJJ7J48eIMGzYsBx54YM4444xOv+8ONKccjp0TTzwxm266aR588MHMnDkzr776at54443U1tZm8ODB+cAHPpBDDjkkn/nMZ9K3b9/2/lFAq5XDv9ca+D2HSlVTX9/MnWsAAAAAAADKTI9iDwAAAAAAANBZhA8AAAAAAKBiCB8AAAAAAEDFED4AAAAAAICKIXwAAAAAAAAVQ/gAAAAAAAAqhvABAAAAAABUDOEDAAAAAACoGMIHAAAAAABQMYQPAAAAAACgYggfAAAAAABAxRA+AAAAAACAiiF8AAAAAAAAFUP4AAAAAAAAKobwAQAAAAAAVAzhAwAAAAAAqBjCBwAAlKETTjghNTU12WqrrYo9SpKkpqYmNTU1mThx4lrL7rnnnsLye+65Z63lEydOLCwHAADoKOEDAABa6bTTTiu8QX/33Xe36blTp04tPPeMM87oogkBAAAQPgAAoJWOP/74wuOrr766Tc/95S9/2eR2StlWW22VmpqanHDCCUWdY9SoUampqcmoUaOKOgcAAFAehA8AAGilffbZJ9tuu22S5Oabb87SpUtb9bzFixdnypQpSZIdd9wxu+++e5fNWCz19fWpr69v8lJX6zJx4sTC8wEAADpK+AAAgDb43Oc+lyRZuHBhbr311lY955ZbbsnixYvXeD4AAABdQ/gAAIA2+NznPle4CXdrL3fVcJmrHj165Ljjjuuy2QAAABA+AACgTbbZZpvss88+SZI777wzr776aovrv/zyy7nrrruSJAcccEA233zzwrJFixblggsuyIc+9KEMGjQoffr0yRZbbJGjjjoqt99+e4fmXLx4cX71q1/llFNOya677poNN9wwvXr1ypAhQ7L//vvne9/7XhYtWtTkcxvuqfHCCy8kSSZPnly4MXvD17vvt9Hw8/Ze6qrh+Y2dcMIJqampyb333pskuffee9eaY6uttkqSXHzxxYWf/fnPf17nPo888sjU1NRk0KBBeeedd9o8MwAAULqEDwAAaKOGm5PX1dXl+uuvb3Hda6+9NqtWrVrjeUny6KOPZrvttss555yTP//5z3nzzTezfPnyzJ07NzfffHMOOeSQHHnkke1+U/7ggw/OuHHjcvnll+dvf/tbFi5cmLq6urz++uv54x//mK985St5//vfnyeffLJd2y81xx13XPr06ZMkmTRpUovrvv7667ntttuSJJ/5zGfSt2/frh4PAADoRsIHAAC00THHHFN4s7zhMlbNaVg+YMCAHHHEEUmSuXPn5sADD8zLL7+cmpqanHjiibnzzjszY8aMXHXVVdlll12SrL43yAknnNCuGevq6rLzzjvna1/7WqZMmZKHHnoof/7zn/OrX/0q48aNS48ePfLcc8/lU5/61Fpx5corr8xjjz2WYcOGJUkOO+ywPPbYY2t8XXnlle2aqy2+/e1v57HHHssee+yRJNljjz3WmmPq1KlJkkGDBhX+fK+//voWbzx/zTXXZMWKFUmSk046qYv/VwAAAN2tttgDAABAudlwww1z6KGH5oYbbsiMGTMya9asbLfddmutN3PmzMycOTNJcsQRR6R///5JkjPPPDNvvvlmkuTSSy/NySefXHjO7rvvnmOOOSaf+MQnMm3atPzqV7/K+PHj84lPfKJNM1555ZV573vfu9bP99prrxxzzDE5+eST87GPfSyzZs3KNddcs8YMW2+9dZKkV69eSZKNNtooO+20U5v23xk233zzbL755oU/t/79+7c4xymnnJLrrrsuCxYsyJQpU/KZz3ymyfUaos0uu+ySD3zgA50/OAAAUFTO+AAAgHZofNmq5s76aPzzhvVffvnlTJkyJUny8Y9/fI3g0KBPnz654oorUlu7+nNKP/nJT9o8X1PRo7GPfvSjOfTQQ5Mkv/71r9u8/VI0evTobLvttknS7Bkpf/nLX/K3v/0tibM9AACgUgkfAADQDh/72Mey6aabJll96aT6+vo1lq9atSrXXnttkmSLLbbI6NGjkyT33HNPVq5cmSRNRo8GW221VcaMGbPWc9rrtddey1NPPZW///3vha8hQ4YkSSEElLuamppCzLj77rszZ86ctdZpCCK9e/fOZz/72W6dDwAA6B7CBwAAtENtbW3hUkrPP/987rvvvjWW33XXXXn55ZeTJJ/97GfTo8fqf3r//e9/L6yz1157tbiPhuVLlizJs88+2+YZ77///nz605/OxhtvnE022SQjR47MzjvvXPi69NJLk6y+2XelOOGEE9KzZ8+sWrUqkydPXmPZsmXLCjHqsMMOy8Ybb1yMEQEAgC4mfAAAQDu1dLmrpi5zlST//Oc/C4832WSTFre/2WabNfm81pg4cWI+8pGP5IYbbljnc1u6EXi5GTZsWMaOHZskmTRp0hpn4tx6662FPwuXuQIAgMolfAAAQDvtuuuu2XnnnZMkN954Y5YtW5YkWbx4cW655ZYkq29W/r73va/J59fU1HTJXHfddVe+8Y1vJEm22Wab/OxnP8vMmTPz1ltvZcWKFamvr099fX0mTJjQJfsvtlNOOSVJ8uyzz+aPf/xj4ecNl7naYostctBBBxVlNgAAoOsJHwAA0AENZ3O89dZbue2225IkU6ZMyeLFi9dY3mDQoEGFx/Pnz29x26+88kqTz1uXhktYDRw4MH/+85/zhS98ITvvvHM23HDDwg3Tk7afRVIuDj744AwdOjTJv2LH3LlzM3Xq1CTJ+PHjC5ceAwAAKo9/7QMAQAd89rOfTc+ePZMkV199dZJ/XeaqV69eOfbYY9dYf6eddio8fuihh1rc9vTp05Mk6623XrbZZptWz/SPf/wjSTJ69OjCDcybMmPGjBa301VnpLRVW+fo2bNnTjjhhCTJTTfdlEWLFmXy5MlZtWpVampqcuKJJ3bBlAAAQKkQPgAAoAOGDh2aj370o0mS3/72t/n73/+eu+66K0ny8Y9/fK3wMGrUqEIoueKKK5rd7pw5c/L73/9+ree0Rl1dXZIUzjppyqOPPrrO8NK3b98kKVzCq1jaM8fJJ5+cmpqaLF68OL/61a8yadKkJMl+++2XbbfdtivGBAAASoTwAQAAHdRwOasVK1Zk3LhxWbly5Ro/b2zYsGE5/PDDkyS/+93vMnny5LXWWb58eU466aSsWLEiSfKlL32pTfO8973vTZLcd999efrpp9da/tprr+Vzn/vcOrfTcLmoZ555pk3772wNczz77LNr3Ky8Jdtuu21GjRqVJPnv//7vPPXUU0nc1BwAAKqB8AEAAB10+OGHZ/3110/yr8tMDRw4MIccckiT6//gBz/IwIEDk6x+I/7UU0/NH/7whzzyyCO55pprstdeexXOGjnmmGPyiU98ok3zNASXxYsXZ//998+Pf/zjPPDAA3nggQfyve99L7vssksef/zxfOhDH2pxOx/+8IeTJA8//HAuuOCC/O1vf8vTTz+dp59+OnPnzm3TTB3RMMerr76a//t//28eeeSRwhwvvPBCs89ruMl5w71SNthggxx11FFdPzAAAFBUwgcAAHRQv3791npD/ZhjjkmfPn2aXH+LLbbIXXfdlWHDhmXVqlW57LLLMmbMmOyxxx457rjj8te//jVJcsQRRzR5Rsi6HHXUUYX7WLz88sv58pe/nH322Sf77LNPvvKVr+TVV1/ND37wgxx00EEtbucLX/hC4abq55xzTnbddde8973vzXvf+9589rOfbfNc7TVu3LjCPU5++MMfZo899ijMsf/++zf7vCOOOKIQmJLk05/+dNZbb70unxcAACgu4QMAADrB+PHj1/i+qctcNbbbbrtl1qxZOf/887PXXntlo402Su/evTNs2LAcccQR+c1vfpObb765cH+Ltrriiivyy1/+Mvvuu2/WX3/99OnTJ1tuuWU+97nP5YEHHsgZZ5yxzm1svvnmmT59ek4++eSMGDGi3bN01IABAwoz77DDDq2OF3379s3RRx9d+N5lrgAAoDrU1Lf2IrkAAABlZp999skDDzyQ973vfYXLkAEAAJXNGR8AAEBFmjVrVh544IEkzvYAAIBqInwAAAAV6cILL0yy+pJXJ5xwQnGHAQAAuk1tsQcAAADoDEuXLs3cuXOzZMmS/PrXv86kSZOSJJ///Oez8cYbF3c4AACg27jHBwAAUBHuueeejB49eo2fDR8+PH/7298ycODAIk0FAAB0N5e6AgAAKkpNTU2GDRuW4447Lvfdd5/oAQAAVcYZHwAAAAAAQMVwxgcAAAAAAFAxhA8AAAAAAKBiCB8AAAAAAEDFED4AAAAAAICKIXwAAAAAAAAVQ/gAAAAAAAAqhvABAAAAAABUDOEDAAAAAACoGMIHAAAAAABQMYQPAAAAAACgYggfAAAAAABAxRA+AAAAAACAiiF8AAAAAAAAFUP4AAAAAAAAKobwAQAAAAAAVAzhAwAAAAAAqBjCBwAAAAAAUDGEDwAAAAAAoGL8/x5AtejcqurkAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": { "image/png": { "height": 560, "width": 799 } }, "output_type": "display_data" } ], "source": [ "plt.figure()\n", "plt.contourf(sigma_vals, strike_vals, prices['acall'])\n", "plt.axis('tight')\n", "plt.colorbar()\n", "plt.title(\"Asian Call\")\n", "plt.xlabel(\"Volatility\")\n", "plt.ylabel(\"Strike Price\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Plot the value of the European put in (volatility, strike) space." ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0, 0.5, 'Strike Price')" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABlgAAARgCAYAAACFRlukAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAB7CAAAewgFu0HU+AAEAAElEQVR4nOzdeXhU5eG///ckIYEshCVhDZugBpdWlEQUEbSKshuquH0UFJBWpaVfi9aqKBYVEUWlVpagaN1qrQWLoFAqILtUqAsoEgiQkAgBhYQlIcn8/shvxkky25n9zNyv6+LqSebMOU9qonBunuexWK1WqwAAAAAAAAAAAOC1uHAPAAAAAAAAAAAAwGwILAAAAAAAAAAAAAYRWAAAAAAAAAAAAAwisAAAAAAAAAAAABhEYAEAAAAAAAAAADCIwAIAAAAAAAAAAGAQgQUAAAAAAAAAAMAgAgsAAAAAAAAAAIBBBBYAAAAAAAAAAACDCCwAAAAAAAAAAAAGEVgAAAAAAAAAAAAMIrAAAAAAAAAAAAAYRGABAAAAAAAAAAAwiMACAAAAAAAAAABgEIEFAAAAAAAAAADAIAILAAAAAAAAAACAQQQWAAAAAAAAAAAAgwgsAAAAAAAAAAAABhFYAAAAAAAAAAAADCKwAAAAAAAAAAAAGERgAQAAQEgMGDBAFovFp19jxowJ9/ARAwoLC91+HyYkJKh169b62c9+pnHjxunjjz+W1WoN97ABAAAAhAmBBQAAAAC8UFNToyNHjujLL7/UggULdO211+riiy/Wd999F7IxjBkzxh58Fi5cGLL7AgAAAGgsIdwDAAAAQOzJyclRbm6u1+f36dMniKMBnLv99tuVlpZm/7i6ulpFRUX69NNPdezYMUnSZ599pssvv1wbN25Uly5dwjVUAAAAAGFAYAEAAEDIDR48WI899li4hwG4NXXqVHXt2rXR58vLy/Xggw/qpZdekiSVlpbq7rvv1ocffhjiEQIAAAAIJ5YIAwAAAAAD0tLS9Oc//1nXX3+9/XNLly7Vt99+G8ZRAQAAAAg1AgsAAAAA+OChhx6q9/HKlSvDNBIAAAAA4UBgAQAAgGnZNvu2WCxenT9gwAD7+atWrfL6nJKSEj355JPKzc1Vu3btFB8frxYtWjh9/969ezVlyhT16dNHbdu2VWJiotq2bas+ffro0Ucf1f79+z2Oc9WqVfYxDBgwQJJktVr1/vvva/jw4erSpYuaNm2qdu3aaeDAgXr99ddVW1vr1f8HNocPH9azzz6rq6++Wp06dVLTpk3VokULnXPOObrnnnu0ZcsWr65z+vRpffzxx7r//vt1xRVXqEOHDmratKmaNWumrKwsDRo0SM8//7wqKio8XquwsND+dTsuzbVlyxaNGzdOZ511lpKTk9WyZUvl5ubqySef1PHjxw193YH085//XCkpKfaPd+/eXe/1QH5/du3aVRaLRa+99pr9c3fccUe9e9h+sfweAAAAEBrswQIAAAC4sXjxYt1xxx364YcfPJ77xBNPaNq0aTp16lS9zx88eFAHDx7Upk2bNGPGDD322GN64IEHvB5DeXm5brvtNi1evLje57///nutWLFCK1as0Jw5c7Ro0SK1adPG4/VeeuklPfTQQzp69Gi9z1dWVuro0aPasWOHXn75Zd1xxx16+eWXlZiY6PQ6+/fvV69evXT48GGnrxcXF6u4uFgfffSRpk2bprfffltXX321l191XVR67LHHNG3atHoB6eTJk/rss8/02WefKT8/X//+9791xhlneH3dQLFYLEpPT7dHHtvG9wAAAABiA4EFAAAAcGH9+vV67LHHdPr0abVu3VqXX365MjIydPDgQW3durXeuffee69903NJSk1N1RVXXKF27dqptLRUn3zyiSoqKnTq1Cn94Q9/UGlpqWbNmuXVOMaMGaPFixfLYrEoNzdX55xzjiorK7V+/XoVFhZKkjZs2KBf/OIXWrdunZo3b+7yWpMmTdILL7xg/zgjI0OXXHKJ2rVrp1OnTmnr1q366quvZLVa9corr+jAgQP68MMPFRfXePL78ePH7XGlZcuWOvfcc9WlSxelpqaqqqpKe/bs0caNG3Xq1CkdPnxYgwcP1urVq3XppZd69XVPnTpVjz/+uCTpggsu0Pnnn68mTZpo27Zt+vzzzyVJe/bs0XXXXafPP/9cCQmh/eON1WrVjz/+aP84PT09aPcaPXq0Dh8+rJUrV+qbb76RJP3iF79QdnZ2o3Nzc3ODNg4AAAAAPyGwAAAAAC48+uijqqmp0Z/+9Cc98MADatKkif21yspK+/G7775bL66MGTNGL7zwQr3QcezYMd1zzz164403JEnPP/+8+vXrp5EjR7odw4YNG1RVVaVu3brp3XffVe/eveu9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z51xxhn246VLlzZ63dF9992n77//3uv7RYtgfH+2bt3aflxcXOzz2AAAAAD4j8ACAAAA07rlllvsx++8847+/Oc/Nzrnm2++0ZVXXqmCgoJ6+5AESlxcnKZPn27/+O2339b48eNVUVFR77zy8nLdcccdev/99+2fmzFjRr2ZIM4kJiaqvLxcV199tT7//PNGr7/66quaMGGC/eOxY8eqR48ejc5LT0/XrFmz7B9PnTpVo0ePdrlvjNVq1bp163T33Xerc+fOOnnyZL3Xr7zySiUnJ0uSdu3apdGjR+vHH3+sd86xY8d01113ac6cOUpJSXH7dUajYHx/nnfeefbjxYsXq6qqKjCDBQAAAGBYgudTAAAAgMBaunSpysrKvD4/OTlZM2bMaPT5yy67TEOGDNGHH34oSZo4caJeeukl9enTRxaLRd9++602btyo2tpajRkzRnv27NHq1asD9nXYjBo1SmvWrNFLL70kScrPz9ff/vY3XXHFFWrbtq0OHjyolStX1osukyZN0siRIz1e+5JLLlGrVq30z3/+U71791afPn3Us2dPVVZWasOGDdq9e7f93J49e2rmzJkurzVmzBjt3r1bf/rTnyRJr7/+ut58801dcMEFys7OVmpqqioqKlRUVKRt27a53XS9ZcuW+v3vf6/HH39ckvTmm29q2bJluvjii9WxY0eVlJRo1apVOn78uBISEvSXv/xFo0eP9vj1RpNgfH8OGjRIzZo108mTJ7Vt2zb17NlTAwYMUIsWLez7swwcOFADBw4M+tcHAAAAxDoCCwAAAELus88+sy9p5Y309HSngUWqiwTXXHONtmzZIqluRsA333xT75yxY8fqpZde0jXXXOP7oD3485//rHbt2mnatGmqrKxUeXm5Pvjgg0bnNW3aVFOmTNGDDz7o9bUXLlyo06dPa8mSJdqwYUO9De1tLr74Yi1atEjp6elur/X444/rvPPO0+9+9zsdOHBANTU1+u9//6v//ve/Lt+Tm5urJk2aNPr8lClTVFhYaN9f5ciRI/X2l5GkFi1a6NVXX9UFF1zgxVcafQL9/Zmenq7nnntOd999t6xWq3bv3l0vsklSamoqgQUAAAAIAZYIAwAAgKm1atVK69ev11/+8hf169dPrVq1UmJiorp06aLrr79ey5cvV35+flCWB2vo4Ycf1rfffquHH35YOTk5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LAAAhAeBBQBMisgCwAgiC2BuRBYAnhBZAAAIPQILAJgYkQWAEUQWwNyILAA8YckwAABCi8ACACaXttdKaAHgNSILYG5EFgDeILIAABAaBBYAiBJEFgDeYl8WwNzYlwWAN5jNAgBA8BFYACCKEFkAGEFkAcyNyALAG0QWAACCh8ACAFGGJcMAGEFkAcyNyALAG0QWAACCI2YDy8GDB7VkyRJNmTJFgwYNUkZGhiwWiywWi8aMGWP4esuWLVNeXp6ysrKUlJSkrKws5eXladmyZW7ft3DhQvt9vf3ly/gkqbCwMOj3ABA5iCwAvMWSYYC5EVkAeIMlwwAA7vj7vNzIs2fbr65du/o83q5duwb9Ht5ICOrVI1jbtm0Dcp3a2lrdddddWrBgQb3PFxcXq7i4WIsWLdK4ceM0d+5cxcUFpmedffbZAbkOgOiXtteq8i6WcA8DgEkk7UtUZeeqcA8DgA9skaVr1qEwjwRApFtRmq2r230T7mEAACJMoJ6XGxENz7ljNrA46ty5s7Kzs7V8+XLD733ooYfscaVXr166//771b17dxUUFGjGjBnaunWr8vPzlZmZqSeffLLR+6+77jr17t3b431Gjhyp7777TnFxcbrtttsMj7OhadOmacSIES5fb9mypd/3ABAZbDNZCC0AvEFkAcytsCiTyALAI9tMFkILAMAZX56Xd+zYUV9++aXH85566im99dZbkqTRo0f7PEabESNGaNq0aS5fT0wM7moNMRtYpkyZopycHOXk5Kht27YqLCxUt27dDF1j586dmjlzpiSpd+/eWrNmjZo1ayZJysnJ0fDhw9W/f39t2bJFzzzzjO6880716NGj3jVatGihFi1auL3Pjh079N1330mSrrjiCmVlZRkapzMdO3bUeeed5/d1AJgHs1kAeIvIApgbkQWAt5jNAgCw8fd5eZMmTTw+b66pqdGqVaskSWlpacrLy/NnyJLqnq+H8zl3zAaWqVOn+n2N559/XtXV1ZKk2bNn2+OKTXJysmbPnq1LLrlE1dXVmjVrll566SXD93n99dftx7fffrt/gwYQ04gsALxl25OF0AKYE0uGAfAWs1kAAFJgnpd78u9//1sHDhyQJF1//fWNnqebUcxucu8vq9WqxYsXS5Kys7PVp08fp+f16dPHvpbc4sWLZbUa23S6trZWb775piQpNTVVv/zl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WFDv88XFxSouLtaiRYs0btw4zZ07V3FxkdGz5s+fr3vvvVdVVVX2z506dUpr167V2rVr9eqrr+rDDz9URkZGGEeJSJBeUKmj3ZPCPQwAESBtr1XlXSzhHgaACJW0L1GVnas8nwggIhUWZapr1qFwDwNADFpRmq2r230T7mEAUOCel4fSpk2bdN1116m0tLTe57/88kt9+eWXys/P16JFi5Sbmxu0McRsYHHUuXNnZWdna/ny5Ybf+9BDD9njSq9evXT//fere/fuKigo0IwZM7R161bl5+crMzNTTz75pNtrdejQQR9//LHbczp27Gh4jI6WLl2qX/3qV6qtrVXbtm310EMP6eKLL9aRI0c0f/58vf/++9q8ebPy8vK0atUqxcfH+3U/mB+RBYANkQWAO0QWwNyILADCxTaThdACRA5/npfbfPzxx+rQoYPL17Oysny+tiTt379fw4YN06FDh5SQkKD/9//+n4YOHSpJWrJkiZ577jmVlJRo2LBh+u9//+v3/VyJ2cAyZcoU5eTkKCcnR23btlVhYaG6detm6Bo7d+7UzJkzJUm9e/fWmjVr1KxZM0lSTk6Ohg8frv79+2vLli165plndOedd6pHjx4ur9ekSROdd955vn9RHpw+fVoTJ05UbW2tmjdvrnXr1ql79+7216+99lrdc889+stf/qK1a9fqr3/9q0/LpSH6EFkA2BBZALhDZAHMjcgCIJyYzQKEVyCelzs666yz1LVr18ANsIGHHnpIhw7V/b7lrbfe0g033GB/rV+/frrooot044036uDBg3r44YcDtiRZQ5GxZlUYTJ06VUOHDvVr6tPzzz9v369k9uzZ9rhik5ycrNmzZ0uSqqurNWvWLN8HHAD//Oc/tXv3bknSgw8+WC+u2DzzzDNq2bKl/RiwYU8WADbsyQLAHfZkAcytsCiTfVkAhA37sgDhE4jn5aFSWlqqN998U5J0zTXX1IsrNqNGjdI111wjSfrrX//aaBmxQInZwOIvq9WqxYsXS5Kys7PVp08fp+f16dNHZ599tiRp8eLFslrD91Bq0aJF9mNXM1OSk5M1atQoSdL27du1c+fOEIwMZkFkAWBDZAHgDpEFMD8iC4BwIbIA8OSDDz5QbW2tJOmOO+5weZ7tGXhtba0++OCDoIyFwOKjPXv26MCBA5Kk/v37uz3X9npxcbEKCwuD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nJys3r17B+U+PD33w6RJkxQfHy9Jmjhxok6ePFnv9ZMnT2rixImSpISEBE2aNMnpdV599VX97ne/kySdddZZWrFihVq1amV4PBaLRRaLxeUsmUWLFslqdf1QY9euXbrlllvsH9vWxwMAZ4gsAHxFZAEgEVkAuEZkAQBz2rZtm4YMGaLjx48rJSVFH374oS666CLD1xkwYID9WXdhYWGj1z/66KNGz+IdVVRUaNSoUfb9xceOHaukpCTD4/BGQlCuagJr167Vrl277B+XlZXZj3ft2qWFCxfWO3/MmDGNrnHWWWdp8uTJmj59urZs2aK+ffvqgQceUPfu3VVQUKCnn35aW7dulSRNnjxZZ555ZqNrLFq0SOPHj5fValXz5s31wgsv6NChQzp06JDLsXfr1k0pKSkGv2IpLy9PPXr00MiRI5Wbm6usrCwlJSWppKREH3/8sRYsWKCKigpJ0qhRozRy5EjD9wAQW9ILKnW0e3D+AwUguqXttaq8C/u+AbEuaV+iKjtXhXsYACKQLbJ0zXL9fAQAEDj+Pi8vKCjQNddcox9//FFS3XYY6enp+uqrr1zes02bNmrTpo3hsU6fPl233nqrRo4cqcsuu0zdu3dXamqqjh49qvXr12vOnDnat2+fJOnss8/WY489Zvge3orZwJKfn6/XXnvN6Wvr1q3TunXr6n3OWWCRpCeeeEIHDx7UK6+8oq1bt+qmm25qdM7YsWM1bdo0p+9ftGiRampqJEnHjh3ToEGDPI79k08+0YABAzye58yuXbvs+7y48utf/1qzZs3y6foAYg+RBYCviCwAJCILAPcKizKJLAAQAv4+L//000918OBB+8e2FZvcefTRR32OH0eOHFF+fr7y8/NdntO/f3+9+eabPq0W5a2YDSyBEhcXpwULFuiXv/yl5s2bp88++0xlZWXKyMhQTk6OJkyY4FU0CYUPPvhAGzZs0KZNm7R3716VlZXp+PHjat68uc444wz169dPd955p84777xwDxWAyRBZAPiKyAJAIrIAcI/IAgBwNHPmTK1cuVIbNmzQt99+q7KyMv34449KTk5Whw4ddPHFF+vmm2/WwIEDXe6JHigxG1gWLlzYaFqTPwYPHqzBgweHdRzu9leRpGHDhmnYsGEBuRcANERkAeAr254shBYgthFZALjDkmEAEFz+PqceM2aMy1WgjFq1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WAAgTBBZAOA3RBYATkRkARAKiCwAwgmBBQAAAGGJyALAiYgsAEIBkQVAuCCwAEAYYRYLABRGZAHgREQWAKGAdVkAhAMCCwCEGSILABRGZAHgREQWAKGCyAIglBFYACAMEVkAoDAiCwAnIrIACBVEFgChisACAAAAiMgCwJmILABCBZEFQCgisABAmGIWCwAURWQB4EREFgChgnVZAIQaAgsAhDEiCwAURWQB4EREFgChhMgCIFQQWAAgzBFZAKAoIgsAJyKyAAglRBYAoYDAAgAAABSDyALAiRKSvYQWACGDyALA7QgsAABmsQBACYgsAJyKyAIgVBBZALgZgcUg58+f16uvvqrevXurVq1aio6OVmJiovr166fFixeX+t6kpCR5PB6/fk2dOtWQ8Z49e1ZPP/20OnfurOrVqys+Pl6tWrXSpEmTlJycbMg5ALgLkQUAikdkAeBURBYAoSImJZrQAtjM3/vTPXv2NOR8ixYtUt++fVW3bl3FxsaqcePGGjFihNavX2/I8a0SafcAQsGuXbs0aNAg7dq1q9DX09LSlJaWpg8//FBz5szRkiVLVKlSJZtG+Zu9e/eqX79+2rNnT6Gv79q1S7t27dLMmTO1YMEC3XjjjTaNEIBdonemKrNVA7uHAQCOU2Vfhk42j7F7GABQREKyV6cbe+weBgAYIiYlWhmNMu0eBgATnTt3TkOHDtUHH3xQ6OspKSlasGCBFi1apEceeURTpkyxaYSBIbAE6eeff1afPn104MABSdItt9yiUaNGKTExUYcOHdK8efP09ttva9WqVRo2bJhWrFhR6vFmz56tzp07l7i9du3aQY339OnT6t+/vy+ujBs3TsOGDVNcXJxWr16tJ554QqdOndJtt92mtWvXqn379kGdDwAAIFQQWQA4FZEFQCghsgD2+sMf/qB77723xO3x8fFBHX/MmDG+uNKrVy9NmDBBiYmJ2rZtmx5//HHt27dPU6dOVb169XTPPfcEdS4rEFiCNG3aNF9cmTJlSqFHeF1++eXq37+/pkyZomnTpmnlypV65513NHTo0BKP17RpU1166aWmjfeZZ57R7t27JUlPP/20HnjgAd+2rl27qmfPnurRo4fOnj2riRMnKikpybSxAHAmZrEAQMmILACcisgCIJQQWQD71K5d27T7059//rlvOY0BAwZo2bJlioiIkCR17txZAwcOVMeOHZWSkqKHHnpIt9xyi6pVq2bKWIzCGixByMnJ0RtvvCFJaty4sSZPnlzsfo888ogaNWokSXryySctG9+FsrKy9OKLL0qSWrdurUmTJhXZ56qrrtLdd98tSVqzZo2++eYbS8cIwBlYjwUASsaaLACcijVZAIQS1mUBQs+zzz4rSYqMjNSrr77qiyv5atasqaeeekqSdOLECc2cOdPyMQaKwBKEPXv26OTJk5KkPn36FPkLkS8iIkJ9+vSRJG3evFk//fSTZWMsaPXq1b7xjho1ShUqFP8//+jRo32vly1bZsXQADgQkQUASkZkAeBURBYAoYbIAoSG06dP67PPPpMkXXfddWrQoPinp9x8882qXLmyJHfcmyawBOH48eO+13Xq1Cl134Lbv/zyS9PGVJqvvvrK97pHjx4l7tepUydVrFhRkrR27VrTxwUAAOBGRBYATkVkARBqiCyA+33zzTfKzMx79F9p96ajo6PVpUsX33uysrIsGV95EViCUKlSJd/r/JkhJSm4ffv27SXu9/e//12NGzdWTEyMqlWrpssvv1x//vOffeumBKPgeVu1alXifpGRkWrRooUkaceOHUGfF4B7MYsFAEpHZAHgVEQWAKGGyAJY4+2339Yll1yiihUrKiEhQRdddJFGjRql1atXB3Vcf+9NF9yenZ2tPXv2BHVes7HIfRBatGihqKgoZWVl6Ysvvih134LbU1JSStxv3bp1vteZmZn67rvv9N133+nFF1/U5MmTNWXKFHk85Vu4MDU170ZpfHy8qlatWuq+DRs21NatW3X06FFlZGQoJsa/xVzzz1GStLQ03+u4hCh5olgkFvBHxcrRxb62Qvzho8pqUc/ScwJGqVgxstjXgJEqHcnRqcah8w1/pZiIYl8DKJ0Tr52EI1J6Axa+h7MlREYU+xooVlqcMhKd/dPsVojxcK2Es4L3V0tS0uO3/HHh5IC9e/dq7969mj9/vm666SbNnTtXVapUCfi4Be8blzW+hg0b+l4fOHBAl1xyScDnswp3GoIQHx+va6+9Vh9//LG2bt2qRYsWafjw4UX2W7RokbZt2+b7/enTp4vsU69ePd188826+uqr1axZM0VGRiolJUUrVqzQ/PnzlZWVpUcffVSZmZl6/PHHyzXe/PMWnHlT2p8t35kzZ/wOLAX/8pel330dVbNmTb/3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u+66S1999ZUh55k6darf96eTkpIMOaeZIu0eQCjYtWuXBg0apF27dhX6elpamtLS0vThhx9qzpw5WrJkiSpVqlRon6NHj6p169Y6fvx4keOePHlSW7Zs0ZYtW/Tiiy/q6aef1oQJE0z9swAAAAChpsq+DJ1sHmP3MADAEAnJXp1uzA9FAgCMc8011+jLL78s8vXMzEzt2bNHe/bs0dy5czVy5Ei99tprio6OtmGUzkRgCdLPP/+sPn366MCBA5KkW265RaNGjVJiYqIOHTqkefPm6e2339aqVas0bNgwrVixotD7MzIyfHGlffv2GjRokK688krVqVNHJ0+e1IcffqiXXnpJ58+f18SJExUXF6d77rkn6HF36tRJc+bMCfo4AADjRO9MVWarBnYPAwBCEpEFQCghsgAAjHTo0CFJUmJiom655RZ1795djRo1Uk5OjtavX6/nnntOBw8e1Pz585WVlaWFCxcact5t27aVur1p06aGnMdMBJYgTZs2zRdXpkyZoqlTp/q2XX755erfv7+mTJmiadOmaeXKlXrnnXc0dOhQ3z4ej0d9+vTRtGnT1KVLlyLH79Wrl4YMGaJevXrp3LlzevDBBzV8+HAlJCQENe74+HhdeumlQR0DAGA8IgsAmIfIAiCUEFkAAEZp1aqVHn/8cQ0ZMkQRERGFtnXp0kV33nmnunXrpt27d2vRokX6/e9/r2uuuSbo84bC/WnWYAlCTk6O3njjDUlS48aNNXny5GL3e+SRR9SoUSNJ0pNPPlloW/369bVq1api40q+K6+8Uvfee6+kvMeGffLJJ0YMHwDgUKzHAgAAAH+wJgsAwAgrVqzQrbfeWiSu5KtZs6aee+453+/feecdq4bmeASWIOzZs0cnT56UJPXp06fEv4ARERHq06ePJGnz5s366aefAj5Xr169fK/37dtXjtECANyEyAIA5mDRewChhsgCALAC96eLR2AJQsGF6evUqVPqvgW3F7dgUFkyMn77RrCkkAMACC1EFgAwB5EFQKghsgAAzMb96eKxBksQKlWq5HudP5OlJAW3b9++PeBzrVmzxve6devWAb//Qjt37tSVV16pXbt26fz586pZs6Y6duyoIUOGaPjw4YqKiirXcVNTS78ZmJaW5nsdlxAlTxTPwAb8UbFydLGvEfriDx9VVot6dg/DtSpWjCz2NYCShct1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1/jx4/XDDz8Yei4AANyMyAIA1iGyAEDJiCwArJScnKxJkyapVatWio+PV/Xq1dW5c2c988wzOnv2rGHn+fDDDzV48GA1aNBAMTExatCggQYPHqwPP/zQsHOYLdLuAbjdrl27NGjQIO3atavQ19PS0pSWlqYPP/xQc+bM0ZIlS1SpUqUSjzN16lT94x//UG5uru9rR44c0apVq7Rq1SotWLBA77zzjmJjY4Ma77Fjx9SvXz998803hb7+448/asaMGZo3b55efvlljR07NqjzAAAQKqJ3piqzVQO7hwEAYaHKvgydbB5j9zAAwJESkr063dhj9zAAhLj3339fI0aM0KlTp3xfO3v2rDZt2qRNmzZp5syZWrlypVq0aFHuc+Tm5uqee+7RrFmzCn394MGDOnjwoN59912NHTtW06dPV4UKzp4j4uzROdzPP/+sPn36+OLKLbfcohUrVujbb7/VihUrdMstt0iSVq1apWHDhpV4nOnTp+vRRx9Vbm6umjdvrlmzZmnjxo1699131atXL0nSypUrNWbMmKDGm5OTo8GDB/viys0336wPP/xQX3/9tV588UXVrl1bGRkZGj9+vKsqIQAAZmMmCwBYh5ksAFAyZrIAMNOWLVt022236dSpU6pUqZIee+wxrVu3Tp999pnGjRsnSdq9e7f69++v06dPl/s8f//7331x5fLLL9eiRYu0ceNGLVq0SJdffrkkaebMmfq///u/4P9QJiOwBGHatGk6cOCAJGnKlCl666231L9/f11++eXq37+/3nrrLT3yyCOS8gLJO++8U+QYv/zyix566CFJUqNGjbRhwwaNGTNGnTt31qBBg/TJJ59owIABkqRFixYpKSmp3OOdN2+evvrqK0nSvffeqyVLluj666/XFVdcofvvv19r165V5cqVlZubqz/96U/Kzs4u97kAAAg1RBYAsA6RBQBKRmQBYJYJEybo3LlzioyM1KpVq/Twww+ra9euuvbaazVjxgw9/fTTkvIiy3PPPVeuc+zevVvPPvusJKlTp05au3athg0bps6dO2vYsGH66quv1KlTJ0nSM888o7179xrzhzMJgaWccnJy9MYbb0iSGjdurMmTJxe73yOPPKJGjRpJkp588ski22fOnKmTJ09Kkp566inVrFmz0PaIiAi9+uqrioiIkJT3l6q88v/iVq9evdjjtGjR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zvH11197X3zxRe/69eu9586d83q9Xu+UKVMC/in8yZMn+97z9NNPF9m+du1ab2RkpO+nXAAzuenayf9pYq4LOIHZ187atWu9t956q/eHH34ocZ93333X6/F4vJK8zZs39+bm5ha7H587cAo3XTd85sBJrPj3WlZWVqnbs7OzvTfffLPvPMuXLy92v1mzZvn2uffee4ts37Nnj++nolu0aFHmeYFguOnayZ/B4s9P7ANmsuK6uVB2dra3Y8eOXkneadOmeRs3buzX9cD3OUDwCCzwer15N2/z/w91/Pjxxe6Tk5Pjbd26tVeSt2rVqt7MzExDzh3oTeLMzExvlSpVvJK8rVu39ubk5BS73/jx433H3bhxoyFjBS7kpmvH6+VmF5zDzmvnQkOGDPGNZfPmzUW287kDp3DTdeP18pkD53DStbN+/XrfWP7yl78Uu0/+OKpXr+5NT08vdp8nnnjCd5y33nrLlLECbrt2CCxwAruum+eee84ryXvxxRd7MzIy/AosfJ8DGINF7iFJevfdd32v77rrrmL3qVChgkaOHClJOnHihFavXm3F0IpYvXq1Tp48KUkaNWpUiVODR48e7Xu9bNkyK4aGMOSmawdwEiddO7169fK93rdvX5HtfO7AKdx03QBO4qRrp+BjYM6fP19k++7du7Vjxw5J0q233qqKFSsWexw+c2AFN107gFPYcd0kJyfrkUcekST95z//UXR0tF/v4/scwBgEFkiSvvrqK0lSfHy8OnbsWOJ+PXr08L1eu3at6eMqTv5YpcLjuVCnTp1835DYNVaEPjddO4CTOOnaycjI8L2OiIgosp3PHTiFm64bwEmcdO0sXrzY97pVq1ZFtvv7mVO3bl21bNlSEp85MI+brh3AKey4bu69916lp6frzjvvVM+ePf1+H9/nAMYgsECSfD8l1aJFC0VGRpa4X8F/yOS/x2rbt2/3vS7tH1aRkZFq0aKFJPvGitDnpmunoJ07d+rKK69U1apVFRsbqwYNGmjQoEGaP3++srKy7B4ewoCTrp01a9b4Xrdu3brIdj534BRuum4K4jMHdrP72jl27JjWr1+vu+++W4899pgkqWbNmrrjjjuK7OvvZ07B7QcOHFB6erph4wXyuenaKej48ePq0aOHatSooZiYGNWrV0+/+93v9PLLL+vs2bOGjQ8ojtXXzeLFi/XBBx+o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", "text/plain": [ "
" ] }, "metadata": { "image/png": { "height": 560, "width": 812 } }, "output_type": "display_data" } ], "source": [ "plt.figure()\n", "plt.contourf(sigma_vals, strike_vals, prices['eput'])\n", "plt.axis('tight')\n", "plt.colorbar()\n", "plt.title(\"European Put\")\n", "plt.xlabel(\"Volatility\")\n", "plt.ylabel(\"Strike Price\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Plot the value of the Asian put in (volatility, strike) space." ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0, 0.5, 'Strike Price')" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABj4AAARgCAYAAABZvy+TAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAB7CAAAewgFu0HU+AADrv0lEQVR4nOzdeZiWdb0/8PcMm2wqiJKKC6KIZp1MIU1N7ZQFbmFlq0nmkhYnOx31tHGyo6ZpqZkdF1C09dSxtFzSkz/TIE0pzAyVIHFBSHFj3+f3B2ceBxlmn2d9va6Lq3vmuZ/7/o468cy8n/fnW9fQ0NAQAAAAAACAKlBf6gUAAAAAAAB0FcEHAAAAAABQNQQfAAAAAABA1RB8AAAAAAAAVUPwAQAAAAAAVA3BBwAAAAAAUDUEHwAAAAAAQNUQfAAAAAAAAFVD8AEAAAAAAFQNwQcAAAAAAFA1BB8AAAAAAEDVEHwAAAAAAABVQ/ABAAAAAABUDcEHAAAAAABQNQQfAAAAAABA1RB8AAAAAAAAVUPwAQAAAAAAVA3BBwAAAAAAUDUEHwAAAAAAQNUQfAAAQBmZMGFC6urqUldXl6lTp5Z6OQAAABVH8AEAAEk+/vGPFwKHurq6XHTRRaVeUs2YN2/eRv/sX/+nZ8+e2WabbfLmN785J598cu688840NDSUetkAAECZEnwAAFDzlixZkl/84hcbfe6GG24o0Wp4vXXr1uWll17KX/7yl0yZMiXvfe9787a3vS1/+9vfirYGTRwAAKgcPUu9AAAAKLWf/exnWb58+Uafe+yxx/LQQw9l9OjRJVpV7frEJz6RgQMHFj5eu3Ztnn322fzud7/L4sWLkyQPPfRQ3vGOd+SBBx7ILrvsUqqlAgAAZUjwAQBAzWva7ujbt29WrFhR+Hyxg4+pU6fWfKPg3HPPza677rrJ55csWZIvfvGLufLKK5MkCxcuzBlnnJHbbrutyCsEAADKmVFXAADUtCeffDK/+93vkiR1dXW55JJLCo/9+Mc/zurVq0u1NF5n4MCB+e53v5sPfOADhc/dfvvteeKJJ0q4KgAAoNwIPgAAqGk33nhjYaPsQw89NKeeemq23XbbJMlLL72UW2+9tZTLoxlf/vKXN/r47rvvLtFKAACAciT4AACgZjU0NOTGG28sfHzCCSekZ8+e+fCHP1z4XHs3OX/88cdz9tln54ADDsiQIUPSu3fvbLHFFtluu+2y33775ZOf/GRuuOGGvPzyy80+v62baK9ZsyZ33nlnzj777Bx++OHZYYcdssUWW6Rv374ZNmxYxo4dm8suuyxLly5tdc3z5s0r3LPpiKkZM2bk5JNPzsiRI9OvX78MGjQoY8aMyQUXXJBly5a1659LV/qnf/qn9O/fv/Dx3//+940eb/xa6urq2nS9ww47rHD+b3/7240e23XXXVNXV7fRfwef/OQnN7pH45+vfe1rHf6aAACArmOPDwAAata0adMKvzTfYostCiOUTjjhhFxxxRVJkjvuuCMvvPBCoQXSkq997Ws577zzsm7duk0ee+GFF/LCCy/kT3/6U6ZOnZqPfexj+cEPftChdT/zzDPZd9998+KLLzb7+Pz58zN//vz8+te/znnnnZcf//jHefe7393m6zc0NBS+lvXr1xc+v2LFijz00EN56KGHMnny5PzmN7/Jbrvt1qGvoTPq6uqy1VZbFcKXxg3PAQAAEsEHAAA1rOm7+I899thsueWWSZLRo0dn1KhRefzxx7NmzZr86Ec/yuc+97kWr3X55Zfn3HPPLXw8ZMiQHHDAAdl+++1TV1eXl156KY8//ngee+yxZoOR9li2bFkh9Bg0aFDe+MY3ZpdddsmAAQOyevXqPPnkk3nggQeycuXKvPjiixk3blzuvffevP3tb2/T9c8999x8/etfT5K85S1vyZve9Kb06tUrDz/8cP70pz8l2bA3yvve97786U9/Ss+exf2xoqGhIa+88krh46222qrb7nXiiSfmxRdfzN13353HH388SfLP//zPGTVq1CbnjhkzptvWAQAAtJ3gAwCAmrRixYr87Gc/K3x8wgknbPT4CSecUNhL4oYbbmgx+Fi7dm3OO++8wsff+MY38oUvfCG9evXa5NyXXnopt9xyS1544YUOr71v376ZOHFiPv7xj2f//fdPff2mE2wXL16cr3/96/nWt76VtWvX5pOf/GQee+yxZs9tasGCBfn617+eESNG5Ec/+tEmv8z/2c9+lo997GNZs2ZN/vKXv+RHP/pRPvGJT3T4a+mIhx9+OMuXLy98PHz48G67V2OYNWHChELw8fGPfzwTJkzotnsCAACdY48PAABq0i9+8YvCiKRtt90273nPezZ6/GMf+1hhj4iZM2fmL3/5y2av9fjjj2fRokVJkoMOOij//u//3mzokSSDBw/OJz/5yZx99tkdXvsuu+yS73znOxkzZsxmg4wtt9wyl1xyST796U8nSWbPnp0777yz1WuvXr06gwcPzn333ddsg+GDH/zgRiHQj3/84w5+FR13wQUXbPTxP//zPxd9DQAAQPkSfAAAUJOajrn6yEc+ssm4pl122SXveMc7mj3/9ZruMdGWvUCK6ZOf/GTh+De/+U2bnvOlL30pO+yww2YfP+mkkwrHDz30UMcX105Lly7NZz/72fzP//xP4XNjx47NnnvuWbQ1AAAA5c+oKwAAas78+fM3CgFeP+aq0Sc+8Ynce++9SZIf/vCHueiii9KjR49Nzttpp50Kx/fcc09mz56dkSNHdvGqm7dmzZr84Q9/yJ///OcsXLgwS5Ysydq1awuPL1mypHD88MMPt+maH/zgB1t8fNSoUenbt29WrFiRF198MUuWLMnAgQM7tP7m/Md//MdG11u7dm2ee+653HfffXn11VcLn99uu+1y5ZVXdtl9AQCA6iD4AACg5vzgBz/I+vXrk2z4Jf7+++/f7Hkf+MAH8pnPfCYrV67MwoULc+edd2bcuHGbnLfTTjvlgAMOyAMPPJBXX301++23X0444YSMHz8+Bx10UPr169flX8OKFStywQUX5KqrriqM2WpNW87baqutNgpymlNXV5dBgwZlxYoVSTY0Xroy+LjxxhtbPWe//fbLD3/4w27d3wMAAKhMRl0BAFBzmo6t2lzbI9mwT8axxx7b7PNeb8qUKRk6dGiSDSOZ/uu//itHHHFEttpqq4wePTpf+MIXctddd2XdunWdXv/LL7+ct7/97TnvvPPaHHokG7c/NmerrbZq07Wa7mGyZs2aNq+hI3r06JFBgwblTW96U0466aTcfvvteeihh4y4AgAAmiX4AACgpjz00EN57LHHkmxoLnzsYx9r8fymwcgvf/nLvPLKK82et/fee+fPf/5zJk6cuFF4sHbt2syYMSPf/va38573vCe77LJLJk+e3Kmv4TOf+UxhbFXv3r1z8skn55Zbbsns2bMLo64aGhrS0NCQJ598svC8xpZLSxo3dC+lJ598srD+hoaGrF27Ni+99FIeeeSRTJkyJWPHji2LdQIAAOXJqCsAAGpK09ZGQ0NDdt111zY/d+XKlfnv//7vnHbaac0+PnTo0HznO9/JxRdfnAceeCC/+93v8vvf/z7Tp08vbIA+f/78nHLKKXnkkUfyne98p93rnz9/fn7yk58kSerr6/PrX/86hx9++GbPb0vLo9a1JRACAAAqh8YHAAA1Y/Xq1fnxj3/cqWu0NO6qUZ8+fXLooYfmK1/5Sm6//fYsWrQod9xxRw4++ODCOVdccUUeeuihdt////2//5eGhoYkydixY1sMPZLkqaeeavc9Kl3Pnq+9v6vpRu+b03TDdAAAoPJpfAAAUDNuvfXWvPTSS0k2/HJ8v/32a9Pz1q9fXwgp7r///syePTsjR45s83179eqV9773vTn88MOz//7759FHH02S/OpXv8ro0aPb9TU899xzheM3velNrZ5/3333tev61WDLLbcs/Ht+8cUXC3uvNGf16tWZPXt2q9c0WgsAACqH4AMAgJrRtK0xduzY/PKXv2zzc9/0pjcVAosbb7wx5513Xrvv36dPnxxxxBGF6/zjH/9o9zXq618rbS9fvrzFc5cvX54bb7yx3feodLvuumsh+Hj44Yfznve8Z7Pn/vKXv8zKlStbveYWW2xROO7uzdwBAIDOMeoKAICa8MILL+SOO+4ofPzxj3+8Xc9vev73v//9wripJHn55ZfbvE/EM888Uzjebrvt2rWGJNltt90Kx7fffnvWrVu32XO/8IUvdChcqXRve9vbCsdTp07d7HmLFy/Ov//7v7fpmttss03heP78+R1eGwAA0P0EHwAA1IQf/ehHhXfqDxw4MEcffXS7nv+Rj3ykMO7o6aefzj333FN47JZbbsnIkSNzySWXZN68ec0+f9WqVfnud7+b//mf/yl8buzYse38KpJ3vvOd6devX5Jkzpw5OfHEE/PKK69sdM7ixYtz6qmn5qqrrkr//v3bfY9K99GPfrRw/JOf/CTf/e53Nznn8ccfzzvf+c7MnTs3ffr0afWa++yzT+H4lltuyerVq7tmsQAAQJcz6goAgJrQdMzVcccdl759+7br+TvvvHMOOeSQwp4ZN9xwQ975zncWHp87d27OOuusnHXWWdl5553z5je/udDoWLhwYR544IHC+KUk+djHPpa3v/3t7f46Bg0alH/7t3/L17/+9STJD3/4w9xxxx1529velh133DELFizIb3/72yxbtiw9e/bM9773vZx44ontvk8lO/jgg3PkkUfmtttuS5JMnDgxV155ZQ444IDU1dXliSeeyAMPPJD169dnwoQJefLJJ3Pvvfe2eM2xY8emb9++WbFiRR5++OHstddeOeyww7L11lsXArEjjjgiRxxxRLd/fQAAQMsEHwAAVL2//OUvmTlzZuHj9o65avq8xuDjpptuypVXXpkBAwZkwIABqaurK4y/evrpp/P00083e436+vp8+tOfzmWXXdahNSTJpEmTMm/evML+HS+99NJGY7ySZOutt87111+ft7zlLR2+TyW78cYb8573vCczZsxIsqHh8fjjj290zqc+9alceeWVLe4B0mirrbbKt7/97ZxxxhlpaGjI3//+9/z973/f6JwBAwYIPgAAoAwYdQUAQNVr2vbYfvvtN2pqtMcHPvCBwlikZcuWFcZWfeADH8iCBQty44035rTTTssBBxyQ7bbbLr17907v3r2z7bbb5qCDDso555yTv/zlL7nyyivTq1evDn89PXr0yA033JBf/epXOfroo7PddtulV69e2W677bL//vvnP//zP/PXv/4173vf+zp8j0o3ePDg/P73v8/3vve9HHLIIRk8eHB69+6dXXbZJR/4wAdy1113ZfLkyW0ac9Xo05/+dH73u9/lhBNOyMiRI9O/f/9C2wMAACgfdQ1Nd2UEAAAAAACoYBofAAAAAABA1RB8AAAAAAAAVUPwAQAAAAAAVA3BBwAAAAAAUDUEHwAAAAAAQNUQfAAAAAAAAFWjZoOP559/PrfeemsmTZqUsWPHZsiQIamrq0tdXV0mTJjQpmusX78+s2bNytSpU3PGGWdk9OjR6dOnT+E6v/3tb9u1puXLl+eb3/xmRo8encGDB6d///4ZNWpUvvCFL+Spp55q/xfZgkcffTSnnXZaRowYkb59+2bbbbfNIYcckquuuipr167t0nsBAAAAAFC+uuL35ZuzfPny7LbbboXr7brrrl2y5pb07PY7lKmhQ4d2+hrf//73O/0vvdGcOXMybty4/O1vf9vo80888USeeOKJTJ48OT/84Q9z1FFHdfpe1157bT772c9m9erVhc+tXLky06ZNy7Rp03L99dfntttuy5AhQzp9LwAAAAAAyltX/L58cyZNmpQnn3yy267fnJptfDS1884754gjjmj38xoaGgrHvXr1ylvf+ta86U1vavd1lixZkiOPPLIQepxyyim5++678/vf/z7nn39+BgwYkMWLF+dDH/pQHn744XZfv6nbb789n/70p7N69eoMHTo03/nOd/KHP/whd9xxR4477rgkyYMPPpjx48dn3bp1nboXAAAAAACVpaO/L2/OzJkzc9lll2WLLbbIwIEDu+SabVGzwcekSZPyq1/9KgsXLsxTTz2Vq6++ut3X2HvvvfOd73wn999/fxYvXpw//vGPhfCgPS6++OLMnj07SfLNb34z11xzTd75znfmwAMPzJe+9KXceeed6dmzZ5YvX54zzzyz3ddvtGbNmkycODHr16/PlltumenTp2fixIkZM2ZM3vve9+amm27KGWeckSSZNm1avv/973f4XgAAAAAAVIau+H35661bty6nnHJK1q1bly996UsZPHhwF6y0bWo2+Dj33HNz1FFHdarCM2bMmEycODEHHHBAtthiiw5dY82aNfnOd76TJNlrr73yhS98YZNz3v72t+dTn/pUkuTee+/NQw891KF7/eIXv8jf//73JMkXv/jFjBgxYpNzLr744gwaNKhwDAAAAABAdeuK35e/3uWXX54//vGP2XPPPXPOOed02XXbomaDj3Jxzz335NVXX02SnHjiiamvb/5fSdO9RH7xi1906F4333xzs9drql+/fjn++OOTJLNmzSo0UQAAAAAAoC2eeuqpTJo0KUly1VVXpXfv3kW9v+CjxKZNm1Y4PvTQQzd73v77759+/folSaZPn96pe+255555wxvesNnzmq6jo/cCAAAAAKA2nXHGGVm2bFlOOOGEHHbYYUW/f8+i35GNzJo1q3A8atSozZ7Xs2fP7L777nnkkUfy2GOPtfs+S5cuzTPPPNPqfV7/eHvv9eyzz7b4+MqVK/P4449n6NCh2XbbbdOzp/8EAQAAAKCt1q5dmxdeeCFJ8qY3vanDI/hrzdq1a7Nw4cJSL6NTFixY0KbfqQ4bNqxIK2reT37yk9x+++0ZNGhQvvWtb5VkDX7rXGKNQUH//v2z9dZbt3juTjvtlEceeSQvvPBCVq1alT59+rT7Pknr/+HvtNNOhePGsKStmj4XAAAAAOg+Dz74YEaPHl3qZVSEhQsX1szvLhsaGkp275dffjlnnnlmkuTCCy/MtttuW5J1GHVVYkuWLEmSDBgwoNVz+/fvXzheunRph+7Tlnt15j4AAAAAANSms846K//4xz9y4IEH5pRTTinZOjQ+SmzlypVJ0qbNXZo2PFasWNGh+7TlXp25T2sNkWeeeSZvf/vbkyRvOedfs3rAwHZdH9qq3w7VFdr1b+iVE7J7kuT7mZNldWtKvCKoDL53KGdve8NTpV5Cs3qv65M3Pn94kuSv292T1T1WlXhFUBl879Ddxg38S6mX0C3WrR2Q5/9+epJku93+Kz16VtfPctAd/rGgd0760Ib/TyjVu+kr3Q9+uV223a5yOgEvPL8+Hz/m+SQbWj7bb799iVfUvPvuuy/XXXddevbsmauuuip1dXUlW4vgo8QaZ/CtXr261XNXrXrthXPfvn07dJ+23Ksz92nP/LjVAwZmxZaCD7rHiqUb/7c1YPirJVpJ1+jT0CtDGoYkSdbWPZdVfnkLbeJ7h3J237q9CsdH7PxECVeysd5re2bI+g3fN1vs0DP1PX3fQFv43qG7/b/8U+H4hEG/L+FKutba1b2yfvGG750ddlqVnr2XlXhFUFnsn9sx225Xn6HbV9I/u7WFo+23377ke3g0Z9WqVTn11FPT0NCQz33uc3nzm99c0vVU0r/dqjRw4IZfzrZlpNSyZa/95d+W0VjN3act9+rMfaBcLX1yq40+rvQgBIDqctfTeyYprwAEgPL1/ZffXjiuphAEgMp1/vnn54knnshOO+2Uc889t9TLEXyU2rBhw/KHP/why5YtyyuvvNLiBueNY6S23Xbbdm1sniQ77rhj4bjpRuct3SexWTnVq2kQIgQBoFw0BiCJEASAtmkMQQQgAJTSRRddlCR517velV/96lfNntP4hvtly5blJz/5SZJku+22yzvf+c4uX4/go8T23nvv3HTTTUmSxx9/PAcccECz561duzZz585Nkuy1117NntOSgQMHZqeddsozzzyTxx9/vMVzmz7ekXtBpdEGAaAcCUEAaA8tEABKqXF7heuvvz7XX399i+cuWrQoH/nIR5Ikhx56aLcEH5Wzg0uVOvjggwvH995772bPmzFjRiERO+iggzp1ryeeeCILFy7c7HlN19HRe0ElW/rkVoU/AFAO7np6z42CEABoyfdffnvhDwDUIsFHiR122GHZaqsNv1y94YYb0tDQ0Ox5U6dOLRyPHz++Q/d63/ve1+z1mlq+fHl++tOfJtnQRhk5cmSH7gXVomkIIggBoNQaAxAhCABtJQABoBgaGhpa/bPLLrskSXbZZZfC53772992y3oEHyXWu3fv/Mu//EuS5LHHHssll1yyyTn3339/pkyZkmRD9Wf06NHNXquuri51dXXZddddm318/Pjx2W233ZIk3/jGNwqjs5o666yz8vLLLxeOgY0JQQAoF0IQANpDCwSAWlKze3xMmzYtc+bMKXy8aNGiwvGcOXM2aURMmDCh2eu8/ryHH364cPzrX/868+bNK3y8++67bzTaqtFZZ52V//7v/87s2bNz9tlnZ86cOfnwhz+cvn375p577skFF1yQtWvXpm/fvrnsssva+iVuolevXrniiity9NFHZ/HixTnooIPyla98JWPGjMnLL7+ca6+9trDfyMEHH5wTTjihw/eCWmBvEADKhf1AAGgP+4EA8Hpd9fvyclGzwcfkyZNzww03NPvY9OnTM3369I0+t7l/kZ/85Cc3e4/GnewbnXjiic0GHwMHDsxtt92WcePG5W9/+1uuueaaXHPNNRuds+WWW+aHP/xh3vKWt2z2fm0xbty4XHXVVfnsZz+bf/zjH5k4ceIm54wZMya/+MUv0qNHj07dC2pN0yBECAJAqTSGIAIQANqiMQQRgADUtq76fXm5qNngo9zsvvvumTlzZq688sr87Gc/y5w5c7J69erstNNOGTduXD73uc8VZqB11imnnJIDDzww3/nOd3L33XfnueeeS//+/bPXXnvlYx/7WE4++eT07Ok/DegMbRAASk0LBID20AIBoJrU7G+3p06dutkNvttjc5uRd0T//v1z9tln5+yzz+72teyzzz6btEqA7iMIAaCUhCAAtIcQBKD2dNXvy1vSdFuI7lazwQdAKRmLBUCpCEEAaA+jsACoRIIPgBLTBgGgVOwHAkBbaYEAUEkEHwBlRhsEgGJr2gI5aoenS7gSACqBEASAcif4AChjjSFIjx49kmElXgwANeG++SPytlIvAoCKYRQWAOVI8AFQYZY9MzBL163TBgGg2903f0QW160xCguAVmmBAFBOBB8AFcreIAAUiw3RAWgPIQgApSb4AKgS9gYBoBhsiA5AexiFBUApCD4AqpA2CADdTQACQHtogQBQTIIPgBqgDQJAdzEGC4D2ahqCfKT/rBKuBIBqJfgAqDHaIAB0Fy0QANrrplf3y9tKvQgAqo7gA6DGCUIA6GpaIAB0xE2v7pfVPVcYhQVApwk+ANiIsVgAdCUtEADay34gAHSW4AOAzdIGAaCraIEA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bNiw9OnTJ8OGDcv48eNzxx13tPi8qVOnFu7b1j8dWV+SzJs3r9vvQfcZOLe+8AcAOmPpk1ttFIQAUJ7uenrPwh8AANquZhsfQ4cO7ZLrrF+/PqeeemqmTJmy0efnz5+f+fPn5+abb87JJ5+cq6++OvX1XfML6z339KK31r0+/NAGAaAjtEAAKocWCABA29Vs8NHUzjvvnFGjRuWuu+5q93O//OUvF0KPfffdN2effXZGjBiRuXPn5pvf/GZmzpyZyZMnZ9ttt80FF1ywyfPf9773Zf/992/1Pscdd1z+9re/pb6+PieccEK71/l65513Xo499tjNPj5o0KBO34PiMRILgM4SggBUBgEIAEDrajb4mDRpUkaPHp3Ro0dn6NChmTdvXoYPH96ua8yePTuXXHJJkmT//ffPfffdl759+yZJRo8enWOOOSaHHnpoZsyYkYsvvjgnnXRSdt99942usfXWW2frrbdu8T6PPfZY/va3vyVJDj/88AwbNqxd62zOjjvumH322afT16H8CEEA6KzGEEQAAlC+bIYOALB5NbtZwLnnnpujjjqqUyOvLrvssqxduzZJcsUVVxRCj0b9+vXLFVdckSRZu3ZtLr300g7d58Ybbywcf+ITn+jgaqlF9gUBoDMa9wKxHwhAebMPCADAxvw2tIMaGhpyyy23JElGjRqVAw44oNnzDjjggMKeHLfccksaGhradZ/169fnhz/8YZJkwIABef/739+JVVPLhCAAdIYQBKD82QwdAGADvwHtoCeffDLPPfdckuTQQw9t8dzGx+fPn5958+a16z733HNPnnnmmSQb9vno379/+xcLryMEAaAzhCAA5U8AAgDUsprd46OzZs2aVTgeNWpUi+c2ffyxxx5r114iTcdcnXjiie1YYcuuuOKKnHfeeXn22WfTp0+fDBs2LIccckhOPfXUvPWtb+3wdZ999tkWH1+wYEHhuH+v+vTp06PD96JrbPnsa/8Olu5iT5BytWWPHs0eAy3zvVMETw9OkvTfaUmJF0JXGdDQq9ljoGXl+r3zwFOv7e34jh3nlnAl0Lzea7do9hjYvPXr1pZ6CVD2BB8d1PQX/K1tNr7TTjsVjhvbG22xbNmy/PznPy9c4/DDD2/nKjfvT3/6U+F41apVmTVrVmbNmpWrr746p512Wi6//PL06dOn3ddt+rW25uP/tH2GDBnS7ntArfvX7Xcu9RKgIvne6Wbtm+ZJhTg9e/l3Cx1Qtt87z7651CuAFu27cGyplwAVYdGiRUl+WOplQFkTfHTQkiWvvatxwIABLZ7bdDzV0qVL23yPn//854XzTzjhhNTV1bVzlZvaeuutM378+Bx22GHZY489ssUWW2TBggW56667MmXKlCxdujRXX311lixZUthbBAAAAAAAKoXgo4NWrlxZOO7du3eL5zZtTqxYsaLN9/j+979fOP7EJz7RjtU1b4cddsj8+fPTr1+/jT6/7777Zty4cfnMZz6Td73rXXn66afzox/9KB/60IdyzDHHtOserTVaFixYkDFjxiRJfvDnBVm7xbL2fRGUBSOxim/LHj0K71b/9oKns3jduhKvCCqD753yYRRW5RjQ0GvDu9WT/Fcey9K6NSVeEVSGSv/eMQaLUum9dotC02PmG+7I6p4rW3kGsLLeqCtojeCjg7bY4rW5k6tXr27x3FWrVhWO+/bt26brP/fcc7n77ruTJG9729uy556d35Sud+/eLYY0e+yxR37wgx/kHe94R5IN+4C0N/hobexXU8vWrM+qOr+AqkizXztcMkIIUmyL163Lq355C+3me6e0Xp332hsvBgx/tYQroU3+b0TP0ro1WVxhv7yFkqrg751bn9vwRoEjdn6ixCuhlq3uuTKre7b9DaNQq1b38LsYaI3go4MGDhxYOG5tfNWyZa+1Globi9XoBz/4Qdav3/B/Yl3R9mirQw45JHvvvXdmzZqVadOmZf369amvry/a/ak8A+e+9t+HEASAtlj65FaFYyEIQHm56+nX3nQnBAEAKpXfaHdQ02ZD043Om9N0/FNbN/9uHHPVu3fvfPjDH+7ACjtu7733TrJhnNeLL75Y1HtT2QbOrS/8AYC2WPrkVhsFIQCUj7ue3nOjIAQAoFJofHRQYziQJI8//niL5zZ9fK+99mr12n/605/y6KOPJkmOOuqoDB48uIOr7Jiu2EQdXh9+aIMA0BItEIDypQUCAFQawUcHDR8+PDvssEOee+653HvvvS2ee9999yVJdtxxx+y6666tXvvGG28sHBdzzFWjWbNmJdmwKfs222xT9PtTnYzEAqCthCAA5asxBBGAAADlzDyaDqqrq8uxxx6bZEOj44EHHmj2vAceeKDQ+Dj22GNbbVOsXbs2P/7xj5MkQ4YMybhx47pw1a2bPn16/vrXvyZJDj74YPt70C2MxAKgrYzCAihPxmABAOXMbx074cwzz0yPHj2SJBMnTsyKFSs2enzFihWZOHFikqRnz54588wzW73mr3/96zz//PNJko985CPp1atXm9dTV1eXurq6zbZKbr755jQ0NGz2+XPmzMlHP/rRwsdnnHFGm+8NHSUEAaAtGgMQIQhAeWkMQIQgAFDZnn/++dx6662ZNGlSxo4dmyFDhhR+3zxhwoQ2XWP58uX5+c9/ntNPPz2jR4/OoEGD0qtXr2yzzTY58MAD87WvfS0LFy7s3i/k/9TsqKtp06Zlzpw5hY8XLVpUOJ4zZ06mTp260fnN/csdOXJkzjrrrFx44YWZMWNGDjrooJxzzjkZMWJE5s6dm4suuigzZ85Mkpx11lnZY489Wl1X0zFXJ554Yju/qpaNHz8+u+++e4477riMGTMmw4YNS58+fbJgwYLceeedmTJlSpYuXZokOf7443Pcccd16f2hNcZhAdAWRmEBlCdjsACgcg0dOrRTz3/kkUdy0EEHFX6/3NRLL72UBx54IA888EAuvfTSXHPNNfnQhz7Uqfu1pmaDj8mTJ+eGG25o9rHp06dn+vTpG31uc6nW+eefn+effz7XXXddZs6cmQ9/+MObnPOpT30q5513XqtreuWVV/KrX/0qSfLGN74x++23X6vPaa85c+bkm9/8ZovnnH766bn00ku7/N7QHkIQANqiMQQRgACUD5uhA0Bl23nnnTNq1KjcddddbX7O4sWLC6HHQQcdlKOOOir7779/ttlmm7zwwgv5+c9/nmuvvTaLFy/Oxz72sWy55ZYZO3Zsd30JtRt8dJX6+vpMmTIl73//+3PNNdfkoYceyqJFizJkyJCMHj06p512Wpv/Bf7sZz/LypUrkyQnnHBCl6/1l7/8Ze6///784Q9/yFNPPZVFixZl2bJl2XLLLbPbbrvlkEMOyUknnZR99tmny+8NnSEEAaA1WiAA5UkLBAAqw6RJkzJ69OiMHj06Q4cOzbx58zJ8+PA2P7++vj7HH398/uM//iN77733Jo8fccQRGTt2bMaPH59169Zl4sSJ+dvf/tbqntgdVbPBx9SpUzcZZ9UZ48aN6/RG5KecckpOOeWUDj+/pf07kuToo4/O0Ucf3eHrQzl4/V4gghAAXk8IAlB+BCAAUN7OPffcTj3/7W9/e97+9re3eM6xxx6b4447LjfddFPmzp2bmTNn5q1vfWun7rs5dhMGKprN0QFoiU3RAcqLzdABoLYdfvjhheO5c+d2231qtvEBVB8jsQBoif1AAMqLFggA1J5Vq1YVjnv06NFt9xF8AFVJCALA5hiFBVBebIYOAG23YMGCVs8ZNmxYEVbSMffee2/heK+99uq2+wg+gKonBAFgc4QgAOVFCwQAWjZmzJhWz2ltL+hS+fOf/5zbbrstSfKmN71J8AHQVYQgAGyOUVgA5UMLBIDudNOr+2fgFv1KvYw2W/Lq8iS3lnoZnbJq1aqcfPLJWbduXZLk/PPP79b7CT6AmiUEAaA5WiAA5UULBABe8+CDD2b77bcv9TLa7bOf/WxmzJiRJDnxxBNz9NFHd+v9BB8A2TgESQQhAGwgBAEoHwIQAEi23377st7Doznf+MY3Mnny5CTJ6NGjc+WVV3b7PQUfAM3QBgHg9YzCAigPxmABQOW4+uqr86UvfSlJMmrUqNx+++3p379/t99X8AHQCiEIAE1pgQCUDy0QAChfP/7xj3PGGWckSXbZZZf87//+b4YMGVKUews+ANpBCAJAU0IQgPKgBQIA5eWXv/xlPvGJT2T9+vXZfvvtc/fddxd1RJfgA6CDhCAANGUUFkB50AIBgNK6++67c/zxx2ft2rXZZptt8r//+78ZMWJEUdcg+ADoAkIQABppgQCUBy0QACi+3//+9zn22GOzatWqbLXVVrnzzjvzxje+sejrEHwAdLGmIUgiCAGoZUIQgPKgBQIA3e/hhx/OkUcemWXLlqV///657bbbst9++5VkLYIPgG6mDQJAYhQWQDnQAgGA5k2bNi1z5swpfLxo0aLC8Zw5czJ16tSNzp8wYcJGH8+dOzfvec978sorryRJzjvvvGy11VZ59NFHN3vP7bbbLtttt12n194cwQdAEQlBANACASgPQhAAeM3kyZNzww03NPvY9OnTM3369I0+9/rg43e/+12ef/75wsef//znW73nf/zHf+RrX/tau9faFoIPgBIRggAgBAEoD0ZhAUB1EXwAlAEhCABGYQGUnhYIALVq6tSpm4yzao8JEyZs0gIpJcEHQJkRggDUNi0QgPIgBAGAyiX4AChjjSHIgD71ybASLwaAohOCAJQHIQgAVBbBB0CFGfBUfdavatAGAagxQhCA8iAEAYDyJ/gAqFBGYgHULvuBAJQHm6IDQHkSfABUASEIQG3SAgEoD1ogAFBeBB8AVUYIAlCbhCAA5UEIAgClJ/gAqGJCEIDaZBQWQHkQggBAaQg+AGqEEASg9miBAJQP+4EAQPEIPgBqkBAEoPYIQQDKgxYIAHQ/wQdAjWsagiSCEIBaYBQWQHkQggBA9xB8ALARbRCA2qEFAlA+hCAA0HUEHwBslhAEoHY0hiA9evRIhpV4MQA1TggCAJ0j+ACgTYQgAABQfDZFB4D2E3wA0G5CEIDasOyZgVm6bl0So7AASk0LBADaTvABQKcIQQBqgw3RAcqHEAQAWib4AKDLCEEAqp8ABKC8CEEAYFOCDwC6RdMQJBGEAFSbxgAkEYIAlAv7gQDABoIPAIpCGwSgemmBAJQXLRAAap3gA4CiE4IAVCcBCED5EYIAUIsEHwCUlBAEoPoYgwVQnoQgANQKwQcAZUMIAlB9tEAAypP9QACoZoIPAMqSEASgughAAMqTFggA1UjwAUDZaxqCJIIQgEpmDBZA+RKCAFAtBB8AVBxtEIDqoAUCUL6EIABUMsEHABVNCAJQ+QQgAOVNCAJApRF8AFA1hCAAlc0YLIDyZ1N0ACqB4AOAqiQEAahsWiAA5U0LBIByJvgAoOoJQQAqlwAEoPwJQQAoN4IPAGqKEASgMhmDBVAZhCAAlAPBBwA1q2kIkghCACqFFghAZbAfCAClIvgAgP+jDQJQWQQgAJVBCwSAYhN8AEAzhCAAlcMYLIDKIQQBoBgEHwDQCiEIQOXQAgGoHHc9vWe2bOiVt5V6IQBUHcEHALSDEASgMghAACrPffNHZHHdGk0QADpN8AEAHSQEASh/xmABVB6bogPQWYIPAOgCQhCA8qcFAlBZ7AcCQEcJPgCgiwlBAMqbAASg8ghBAGgPwQcAdKPGEEQAAlB+jMECqExCEABaI/gAgCLQAgEob1ogAJXJfiAANEfwAQBFJgQBKF8CEIDKpAUCQFOCDwAoIaOwAMqTMVgAlUsIAoDgAwDKgBYIQPnSAgGoXEIQgNpU3/opAEAxDZxbv1EQAkB5WPrkVhs1QQCoLHc9vedGQQgA1UvjAwDKlDFYAOVJAwSgsmmBAFQ/bycFgDKnAQJQnjRAACqfFghAddL4AIAKYR8QgPKkAQJQ+bRAAKqLt48CQAXSAgEoPxogANVBCwSg8vmNCQBUMAEIQPkRgABUBwEIQOUy6goAqoCN0AHKjxFYANXBGCyAyuMtogBQRTRAAMqPBghA9dACAagMGh8AUIU0QADKT9PwQwsEoLJpgQCUN8EHAFSxpu0PIQhA+TAGC6B6NIYgAhCA8iH4AIAaoQUCUH4EIADVQwsEoHwYAg4ANcY+IADlxz4gANXFXiAApeW3HgBQowQgAOVHAAJQXQQgAKVh1BUA1DgjsADKjxFYANXFGCyA4vI2TwAgiQYIQDnSAAGoPlogAN1P4wMA2EjT8EMLBKA8aIAAVB8tEIDu422dAMBmaYEAlBcNEIDqpAUC0LU0PgCAVtkHBKC8aIAAVCctEICu4S2cAECbaYAAlBcNEIDqpQUC0HEaHwBAu2mAAJQXDRCA6qUFAtB+3rIJAHSYBghAedEAAahuWiAAbaPxAQB0WtPwQwsEoPQ0QACqW2P4oQEC0DzBByUzcN6arBpZ6lUA0NWMwQIoH03bH0IQgOpjDBZA88ymoKQGPbE6g55YXeplANANjMECKC/GYAFUN2OwAF6j8UFZaBp+vLxn7xKuBICupgECUF6MwQKoblogABoflCEtEIDqpAECUF40QACqnxYIUKs0PihbjeGHBghAdbEROkB50QABqH5aIECt8bZLyp4GCED10gIBKB8aIAC1QQsEqAUaH1QM+4AAVC/7gACUDw0QgNqgBQJUM2+xpCJpgQBUJw0QgPKhAQJQO7RAgGrjNwtUNAEIQHUSgACUDwEIQO0QgADVwqgrqoKN0AGqkxFYAOXDCCyA2mEMFlDpBB9UFQEIQHVq2v4QggCUlgAEoLY0hiACEKCSCD6oSjZCB6heWiAA5UEAAlBbtECASmJ4NlXPPiAA1ck+IADlwR4gALXHXiBAudP4oGYYgwVQnTRAAMpD0/BDCwSgNmiBAOXK2ySpORogANVJAwSgfGiBANQeLRCgnGh8ULPsAwJQnTRAAMqHfUAAao8WCFAOavZtkc8//3xuvfXWTJo0KWPHjs2QIUNSV1eXurq6TJgwod3Xu+OOOzJ+/PgMGzYsffr0ybBhwzJ+/PjccccdrT53woQJhXu39mfevHnt/2Kb8eijj+a0007LiBEj0rdv32y77bY55JBDctVVV2Xt2rVdco9KogUCUH0Gzq3PgKdq9qUOQFnRAAGoTVogQKnUbONj6NChXXKd9evX59RTT82UKVM2+vz8+fMzf/783HzzzTn55JNz9dVXp76+PH75cu211+azn/1sVq9+7Rf9K1euzLRp0zJt2rRcf/31ue222zJkyJASrrI07AMCUL0GPFWfV4etK/UyAGqaBghAbWoMPzRAgGKp2eCjqZ133jmjRo3KXXfd1e7nfvnLXy6EHvvuu2/OPvvsjBgxInPnzs03v/nNzJw5M5MnT862226bCy64oMVr7bDDDrnzzjtbPGfHHXds9xqbuv322/PpT38669evz9ChQ/PlL385b3vb2/LSSy/l2muvzc9//vM8+OCDGT9+fH7729+mR48enbpfpRKAAFQnY7AAyoMABKA2GYMFFEvNBh+TJk3K6NGjM3r06AwdOjTz5s3L8OHD23WN2bNn55JLLkmS7L///rnvvvvSt2/fJMno0aNzzDHH5NBDD82MGTNy8cUX56STTsruu+++2ev16tUr++yzT8e/qFasWbMmEydOzPr167Pllltm+vTpGTFiROHx9773vfnMZz6T733ve5k2bVq+//3vd2jsVzWxDwhAdRKAAJQHAQhA7dICAbpTecxeKoFzzz03Rx11VKdGXl122WWF/TCuuOKKQujRqF+/frniiiuSJGvXrs2ll17a8QV3gV/84hf5+9//niT54he/uFHo0ejiiy/OoEGDCse8xj4gANVn4Nz6QggCQOnYAwSgdjXuA2IvEKAr+Um/gxoaGnLLLbckSUaNGpUDDjig2fMOOOCA7Lnnhv/jvuWWW9LQ0FC0Nb7ezTffXDjeXJOjX79+Of7445Mks2bNyuzZs4uwssoiAAGoPo0BiBAEoLQEIAC1TQACdBU/3XfQk08+meeeey5Jcuihh7Z4buPj8+fPz7x587p7aZs1bdq0JMmee+6ZN7zhDZs9r+nXM3369G5fV6USgABUJwEIQOkJQABqmxYI0Fk1u8dHZ82aNatwPGrUqBbPbfr4Y489ttm9RF588cUceuihefTRR7N06dIMHjw4b37zm3P00UfnpJNOSr9+/Tq83qVLl+aZZ57p0Hrb49lnn23x8QULFhSO+/XtkYa6yv9PcMCzr82Hf3VErxKuhGo2oHePZo+BlnXme2fLZzecv3QX+4BQW7bs0aPZYyiJpwcnSfrvtKTEC2ndgIZezR4DLfO9Q2seeGrDfrjv2HFuiVdSPtavW1vqJUDZq/zfOpdI01/wDxs2rMVzd9ppp8JxY/jQnKVLl+a+++4rfLxw4cIsXLgwd911Vy688ML89Kc/zdvf/vayWW9rz23N+47cKUOGDGnX9YHk06Nb/h4Gmud7B9rvX7ffudRLgA1KNzG4Q07PXhW3ZigHvndo0bNvLvUKysaiRYuS/LDUy4CyJvjooCVLXnvH0YABA1o8t3///oXjpUuXbvJ4XV1dDjjggBx99NF561vfmqFDh2blypX5y1/+kilTpuTBBx/M/Pnzc8QRR+R3v/td9t1335KuFwAAAAAAypXgo4NWrlxZOO7du3eL5/bp06dwvGLFik0ev/TSS7P11ltv8vkDDzwwp5xySr7yla/kggsuyLJly3LyySdnxowZqaurK9l6W9JaQ2TBggUZM2ZMkuTm255JQ90r7bp+pTICi84a0LtH4d3qVz30bJauXlfiFUFl6M7vHSOwqFZb9uhRaHp8e8HTWbzO3zmUr3IagTWgodeGd6sn+a88lqV1a0q8IqgMvnfoCrU2BmtlvVFX0BrBRwdtscUWhePVq1ve4HrVqlWF4759+27yeHOhR6O6urqcf/75+cMf/pC77747f/rTn/L73/8+Bx10UMnW25LWxmg1tXzFuqxrqI3/o+7xyGtf58t7thw8QWuWrl6Xxav8Egraq8u/d2a/drhkhBCE6rR43bq8KvigjL0677V9EAcMf7WEK/k//zeiZ2ndmiz2y1toO987dNKtz702nvOInZ8o4UqKY3UPP39Aa+pLvYBKNXDgwMJxa+Ogli1bVjhubczU5px22mmF43vvvbfdzy/2etm8QU+szqAnWg6fAKgsA+fWZ+BcL6sASmnpk1tl6ZNblXoZAJTYXU/vmbue3rPUywBKTOOjg5o2G5puHN6cpuOf2rP5d1N777134Xj+/Pntfv6OO+5YOC7GemldY/ihAQJQPRrDDw0QgNJpDD/KogECQMk0DT9qoQUCbMxbEzuoaRDx+OOPt3hu08f32muvDt2vvXt6vN7AgQMLIUYx1kvbaYAAVB8NEIDS0wABoJEWCNQeP5F30PDhw7PDDjskaX301H333ZdkQ+ti11137dD9Zs2aVThuvG97HXzwwUmSJ554IgsXLtzseU2/nvbuJULHNQYgQhCA6iEAASg9AQgAjRoDECEIVD8/iXdQXV1djj322CQbGhIPPPBAs+c98MADhQbFscce2+HmxtVXX104PvTQQzt0jfe9732F46lTpzZ7zvLly/PTn/40yYZWy8iRIzt0LzpHAAJQXQQgAKUnAAGgKQEIVDc/gXfCmWeemR49eiRJJk6cmBUrVmz0+IoVKzJx4sQkSc+ePXPmmWduco0HHnggCxYs2Ow9Ghoa8pWvfCW/+c1vkiT/9E//tNkWRl1dXerq6jbbKhk/fnx22223JMk3vvGNzJ07d5NzzjrrrLz88suFY0pLAAJQXRoDECEIQOkIQABoSgsEqlPNbm4+bdq0zJkzp/DxokWLCsdz5szZpBExYcKETa4xcuTInHXWWbnwwgszY8aMHHTQQTnnnHMyYsSIzJ07NxdddFFmzpyZZEOIsMcee2xyjV//+te58MIL8973vjfvfve7s/fee2frrbfOqlWr8sgjj+S6667LH/7whyRJv379cu2113a4NdKrV69cccUVOfroo7N48eIcdNBB+cpXvpIxY8bk5ZdfzrXXXpubbropyYaxWCeccEKH7kPXsxE6QPWxETpAadkEHYDXaww/bIYOla9mg4/JkyfnhhtuaPax6dOnZ/r06Rt9rrngI0nOP//8PP/887nuuusyc+bMfPjDH97knE996lM577zzNruWVatW5ZZbbsktt9yy2XN23nnn/OhHP8ro0aM3e05bjBs3LldddVU++9nP5h//+EehkdLUmDFj8otf/KLQZqF8NG1/CEEAqoMABKC0BCAAvJ4ABCpfzQYfXaW+vj5TpkzJ+9///lxzzTV56KGHsmjRogwZMiSjR4/OaaedlrFjx272+Z/85CczdOjQ3H///XnkkUfy/PPP58UXX0zPnj0zZMiQvPWtb83RRx+dj370o9liiy26ZM2nnHJKDjzwwHznO9/J3Xffneeeey79+/fPXnvtlY997GM5+eST07On/zTKnRYIQHURgACUlgAEgNdrOv5KCAKVpWZ/uz116tTNbvDdEePGjcu4cePa/bxddtklp59+ek4//fROr6GhoaHN5+6zzz655pprOn1PSk8AAlBdBCAApSUAAaA5WiBQWWo2+IBqIwABqC4CEIDSEoAA0BwtEKgMgg+oMvYBAagujQFIIgQBKAUBCACbowUC5UvwAVVMCwSgumiBAJSOAASAzdECgfIj+IAaIAABqC4CEIDSaQxAEiEIAJvSAoHyIPiAGiIAAagu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G31+/vz5mT9/fm6++eacfPLJufrqq1Nfv/kXf4sWLcq4cePy0EMPbfT5v//977nmmmtyww035Lvf/W5OPvnkTq/5V7/6VT7+8Y9n8eLFhc8tX748M2bMyIwZMzJ58uTcdttt2X333Tt9L2gPe38AVCd7fwDUHhugAwCl5G0YSXbeeeccccQRHXrul7/85ULose++++bHP/5xHnzwwfz4xz/OvvvumySZPHlyvvKVr2z2GuvWrcv48eMLocdxxx2XO+64I3/4wx/yne98J9ttt11WrVqV0047rV0NkubMnDkzH/rQh7J48eIMGDAg559/fn7/+9/n7rvvzimnnJIkmT17do488sgsWbKkU/eCjtD+AKhO2h8AtUf7AwAolZptfEyaNCmjR4/O6NGjM3To0MybNy/Dhw9v1zVmz56dSy65JEmy//7757777kvfvn2TJKNHj84xxxyTQw89NDNmzMjFF1+ck046qdkWxQ033JBp06YlSc4444xceeWVhcfGjBmTsWPHZr/99svixYvzL//yL3nsscfSs2fH/tV97nOfy4oVK9KzZ8/cddddOfDAAwuPvfOd78wee+yRs88+O7Nnz863vvWtfO1rX+vQfaCztD8AqpPNzwFqjw3QAYBiq9m3Xpx77rk56qijOjXy6rLLLsvatWuTJFdccUUh9GjUr1+/XHHFFUk27N9x6aWXNnudxvBk8ODBufjiizd5fPfdd88Xv/jFJMmcOXPyi1/8okPrffDBB/O73/0uSfKpT31qo9Cj0Re+8IXstddeSZLLL788a9as6dC9oCtofwBUL+0PgNqjAQIAFItXHB3U0NCQW265JUkyatSoHHDAAc2ed8ABB2TPPfdMktxyyy1paGjY6PHZs2fnscceS5Icf/zx6devX7PXabrhekeDj5tvvrlw/MlPfrLZc+rr6/OJT3wiSfLKK6/knnvu6dC9oCsJPwCqk/FXALVJ+AEAdDevNjroySefzHPPPZckOfTQQ1s8t/Hx+fPnZ968eRs91jjiqrXrvOENb8jIkSOTJNOnT+/Ikgv36t+/f/bbb79W19uZe0FXE34AVC/hB0Dt0f4AALpTze7x0VmzZs0qHI8aNarFc5s+/thjj220l0h7rzN79uw888wzWbZsWfr379+uNTc2S3bfffcW9wh5/Xrb49lnn23x8QULFhSO+w7olbpefdp1fWpb/2cXJUlW7vmGEq+k+Pr369HsMdAy3zuVY8CzG+a+vzqiV4lXwoDePZo9Blrme6djtnx2wz+rpbvY/6NWbdmjR7PHwOb16SE4htYIPjqo6S/4hw0b1uK5O+20U+H4mWee6fR1Ghoa8uyzzxZGaLXFypUrs2jRojbdZ9CgQenfv3+WLVu2yXpb0/Rrbc24M96SIUOGtOv6QPLRDwxv/SRgE753oP0+Pbrl141A83zvQMf86/Y7l3oJUBEWLVqUP5R6EVDmxIMdtGTJksLxgAEDWjy3aTNj6dKl3XKd1rTnPk3v1d77AAAAAABAKZWs8fHss89m4cKFWb58eUaPHp2+ffuWaikdsnLlysJx7969Wzy3T5/XxjmtWLGiW67Tmvbcp+m92nuf1hoiCxYsyJgxY5Ikt3/v4dSt2qJd14fm1MLoq/79ehTerf6j/3kyy5avK/GKoDL43ql8Rl8V34DePQrvVr/qoWezdLXvG2gL3ztdz/ir2rBljx6Fpse3Fzydxet870Br+ixeXOolQNkravCxZMmSfPOb38zUqVMLG4MnyV/+8pfsvffehY9/8pOf5Oc//3m22mqrXHvttcVcYpttscVrv7BfvbrlDTlXrVpVOH59wPP66zT9uD3XaU171tv0Xu29T2tjtJpasXRNGpbVtev60Kw/PJUkWbHPjiVeSHEsW74uS5etLfUyoOL43qlMPR7Z8O/s5T1bf+MGXW/p6nVZvMovoKC9fO90kdkb/mfJCAFIrVi8bl1eFXxAq/qu8/+L0JqiBR9/+9vfMm7cuPz9739PQ0ND4fN1dZv+4vuAAw7Ixz/+8TQ0NOTEE0/MwQcfXKxlttnAgQMLx62Ng1q2bFnh+PVjpl5/nZaCj5au05r2rLfpvdp7Hyilvo/Or5nwA6DWDHpiwxs3BCAAtWfg3A1TugUgAEBbFWWPj5UrV+bII4/M3Llz069fv5x99tm59dZbN3v+rrvumsMPPzxJ8stf/rIYS2y3ps2GphuUN6fp+KfXb/7dkevU1dW1q1mRbGh8bLPNNm26z8svv1wIPtqzWTmUg76Pzk/fR+eXehkAdJPGAASA2jNwbn0hBAEAaElRXjH813/9V+bMmZP+/fvnd7/7XS688MKMGzeuxeeMHTs2DQ0Nuf/++4uxxHZrOprr8ccfb/Hcpo/vtddenb7OTjvttNFG523VeK85c+Zk7drNj/poab1QKYQfANVr0BOrBSAANUz4AQC0piivFn7+85+nrq4un/vc5/KWt7ylTc/5p3/6pyQbRmSVo+HDh2eHHXZIktx7770tnnvfffclSXbcccfsuuuuGz3WdIxXS9dZuHBhZs/eMOD0oIMO6siSC/datmxZ/vjHP272vKbr6Oi9oBxofwBUN+EHQO3S/gAAWlKUVwmPPfZYkuSII45o83MaxzK98sor3bGkTqurq8uxxx6bZEND4oEHHmj2vAceeKDQoDj22GM32dNk5MiRhVbFT3/60yxfvrzZ60ydOrVwPH78+A6t+X3ve1/h+Prrr2/2nPXr1+fGG29Mkmy99daFkWNQyYQfANVL+wOgtglAAIDmFOXVQeNm2u3ZKHvVqlVJkl69enXLmrrCmWeemR49eiRJJk6cmBUrVmz0+IoVKzJx4sQkSc+ePXPmmWc2e51/+7d/S5K89NJLOfvsszd5fO7cufnGN76RJNl99903G3zsuuuuqaura3bD+CQZM2ZMDjnkkCTJlClTmh0j9q1vfasQVH3uc58r63/+0B7aHwDVTfgBUNsEIABAUz2LcZNtttkmCxcuzLx58/LWt761Tc/561//miR5wxve0C1rmjZtWubMmVP4eNGiRYXjOXPmbNSwSJIJEyZsco2RI0fmrLPOyoUXXpgZM2bkoIMOyjnnnJMRI0Zk7ty5ueiiizJz5swkyVlnnZU99tij2bWceOKJue666zJ9+vRceeWVWbhwYU455ZQMGjQoDz74YP7zP/8zixcvTn19fb7zne+kZ8+O/2u7/PLLc9BBB2XFihU54ogj8qUvfSmHH354VqxYkZ/85Ce55pprCl/bF77whQ7fB8pV30fnZ8U+O5Z6GQB0g8bw4+U9e5d4JQCUSmP4sWTE+hKvBAAopaIEH29961tz++2357777stxxx3XpufceOONqaury4EHHtgta5o8eXJuuOGGZh+bPn16pk+fvtHnmgs+kuT888/P888/n+uuuy4zZ87Mhz/84U3O+dSnPpXzzjtvs2vp0aNHbr755owbNy4PPfRQbrrpptx0000bndOnT59897vfzdixY1v5ylq277775r//+7/z8Y9/PIsXL86XvvSlTc4ZOXJkbrvttgwcOLBT94Jy1dj8EIAAVKdBT6wWfgDUuIFz64UfAFDDitID/cAHPpCGhoZcc801efrpp1s9/7LLLitsCP6Rj3yku5fXKfX19ZkyZUpuu+22HHvssdlhhx3Su3fv7LDDDjn22GNz++23Z/Lkyamvb/kf9ZAhQ/L73/8+3/ve93LwwQdnm222yRZbbJHddtstp5xySv74xz/m5JNP7pI1H3300XnkkUfy+c9/PiNHjky/fv2y9dZbZ//99y+0VHbfffcuuReUM6OvAKqXvT8AMP4KAGpXURofJ5xwQi699NI88sgjOeyww3LllVfmve99b+Hxurq6NDQ0ZMaMGbnsssvyk5/8JHV1dTnkkEM63XDYnKlTp24yzqozxo0bl3HjxnXqGj179szpp5+e008/vUPPnzdvXpvP3WWXXfLtb3873/72tzt0L6gWRl8BVDfjrwAw/goAak9Rgo/6+vr88pe/zMEHH5x58+blqKOOSr9+/QqbcB922GFZsmRJYUPzhoaGjBgxIj/96U+LsTygxhl9BVD9jL8CQAACALWjaJ3PnXfeOQ8//HA+8pGPpL6+PsuWLUtDQ0MaGhrywgsvZOXKlWloaEiSHH/88XnwwQez3XbbFWt5AEZfAVQ5468ASIzAAoBaUJTGR6PBgwfnhz/8YS644ILcdtttmTFjRp5//vmsW7cu22yzTfbdd98cffTRGTlyZDGXBVCg/QFQ/bQ/AEhsgA4A1awowcfixYuz5ZZbFj7eZZddcsYZZ7Tpub/97W9z2GGHddPKAJpn7w+A6mbvDwAS468AoFoVpdt55JFHZuXKle1+3m9+85scddRR3bAigNb1fXS+8VcAVc7oKwAS468AoNoU5W/16dOn5/3vf3/Wrl3b5ufcddddOeaYY7JixYpuXBlA64QfANXN3h8ANBKAAEB1KMrf5j169Mivf/3rfOITn2jT+bfffnve9773ZeXKldlhhx26eXUArdP+AKh+wg8AGglAAKCyFeVv8euuuy5J8t///d85/fTTWzz3V7/6Vd7//vdn5cqVGTZsWO65555iLBGgTYQfANVN+wOApoQfAFCZivI3+AknnJBvf/vbaWhoyDXXXJMvfelLzZ53yy235IMf/GBWrVqVnXfeOb/97W+z++67F2OJAG2m/QFQ/QQgADTS/gCAylO0v7k/97nP5atf/WoaGhpy0UUX5Vvf+tZGj9900005/vjjs3r16uy666757W9/m912261Y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ZLdSVwJAJRGAAFSPH/7whxk1alSSZPDgwTnppJMyZMiQrLHGGnn33XfzxBNPZPz48cVmh3LVIcHHmDFjOuIyALQD3R8AAEBTCEAAKts999xTDD2OOeaYXH755enatesyx+y99975z//8z9TV1ZWixCYrm1jm3XffzXvvvVfqMgBYgfoABIDOY40XF5S6BAAqUH0AAkDlWLx4cb7+9a8nSbbbbrtcccUVy4UeS+vWrbynyS3pnejNN9/M1772tfTr1y9rr712+vfvnz59+uTYY4/NtGnTSlkaAA3oOXm6AASgk+kzpa64ADoANNVqL64iAAGoIHfffXemTp2aJPn2t7+d2toOmSyq3bT5Hei1117LwIEDM3DgwPzv//7vCo976aWXsuOOO+aKK67Ie++9l0KhkEKhkA8//DC/+c1v8qlPfSp///vf27o8ANqA8AOg8xGAANASAhCAynDTTTclSWpqavLFL36x+Ph7772XqVOnVtxsTW0e2/zhD3/IG2+8kW7duuWII45Y4XEjRozI66+/Xvx+0KBBGThwYJ555pl89NFHef/993PUUUfl6aefrvh0CaAaWfsDoHOqDz/e36y8W9sBKC/W/wBoGzNmzFjpMeuvv36zz/vXv/41SbLhhhtmtdVWy/XXX5+f/OQnmTx5cvGY+sXO//3f/z3du3dv9jU6UptH7o888kiSZNiwYVlrrbUaPOaOO+7IpEmTUlNTk759++YPf/hDXnnllTzyyCN54403ctxxxyVJnn/++dxyyy1tXSIAbUj3B0DnpPsDgJbQAQLQOjvvvHMGDRrU6FdzLV68OM8991ySpF+/fjn11FPzla98ZZnQI1nyfv0ZZ5yRvfbaKx988EFb/O+0mzZvpXj66adTU1OT4cOHr/CY6667rrh9wQUXZN999y1+37Nnz1x++eWZNGlSJk+enNtuuy1HHnlkW5cJQBvS/QHQOen+AKClVntxFd0fQMn0+ucq6bZa5YSwdR+1b60ffvhhFi9e8pr89NNP57HHHsuAAQNy/vnnZ7/99kuPHj3y2GOP5dvf/nb++te/ZsKECTn++OMzbty4dq2rNdo8+PjnP/+ZZMnK7yty//33J0nWWGONfPnLX15uf01NTY4//vh861vfypNPPtnWJQLQTnpOni78AOiEBCAAtMRqL66S3t1XSZo/IwtApzVx4sQMGDCgTc85e/bs4va8efOy6qqr5r777stmm21WfHyPPfbIvffem8985jN58sknM378+Dz66KPZZZdd2rSWttLmwcfMmTOTLGmJacg///nPvPnmm6mpqckee+yRrl27Nnjcpz71qSRZZh0QAMqf7g+AzksAAgAA7WvAgAEtWsOjMT169Fjm+xNPPHGZ0KNez54986Mf/ai4+Plvf/vbsg0+2rxHpqamJklSV9fwnL8TJ04sbu+0004rPM+aa66ZZNm0CYDKYe0PgM6rz5Q6a4AA0Gy9X7H+B0AprLbaast8v/TSFB+39957p7Z2ST/FY4891q51tUab303qFzR//vnnG9w/YcKE4vaQIUNWeJ6PPvooyfJpEwCVo+fk6QIQgE5M+AFAS1gAHaBjde/ePf379y9+39gC6T169CjO9vT222+3e20t1eZ3kfq1PW655Zbl9hUKhfzud79LktTW1ma33XZb4XleeeWVJMk666zT1iUC0MGEHwCdl+4PAFpK+AHQcbbaaqvi9qJFixo9tn5/fedHOWrzO8iBBx6YQqGQ2267Lb/5zW+W2ffTn/40//znP1NTU5N99tknvXv3XuF5HnnkkSRpcC4xACqP8AOgcxOAANASuj8AOsYee+xR3H7ppZdWeNzMmTPzzjvvJEnWW69813dt8zvHV7/61WIrzLHHHptddtklX/nKV7LDDjvkv/7rv4rH/b//9/9WeI5CoZBbb701NTU1+fSnP93WJQJQIqa+AkAAAkBLCEAA2tehhx5a3B4/fvwKjxs/fnwKhUKSZPfdd2/3ulqqze8Yq666asaOHZvevXunUChk0qRJGTt2bJ588sniH8jxxx+fvffee4Xn+P3vf5/p05e8MbbPPvu0dYkAlJjwAwABCAAtIQABaB/bbrttvvCFLyRJbrjhhtxzzz3LHfPGG2/kf/7nf5Ik3bp1y3HHHdehNTZHu9wpPvOZz2TSpEk59NBD06NHjxQKhRQKhWywwQb56U9/mksvvbTR5//gBz9Ikqy77ro6PgCqlO4PABIBCAAtIwABaHsXXnhh1lxzzSxevDhf/OIX853vfCd/+ctfMmnSpFx88cUZMmRIXnvttSRL3sMv56mu2m31kU9+8pO56aabsnjx4rz99tvp1q1b+vTp06Tn1qdJ5bw4CgBto+fk6Zm7dfneKAHoGH2m1OX9zbqVugwAKkx9+PHRJotLXAlA5Rs8eHBuv/32HHbYYXnzzTdzzjnn5JxzzlnmmJqamnz3u9/NmWeeWaIqm6bdk4VVVlkl66yzTrOe06tXr3aqBoByVN/5IQAB6NzqOz8EIAA012ovriL8AGgDn/3sZ/OPf/wjv/jFL3Lrrbfm5ZdfTl1dXQYMGJChQ4fm3//93/OpT32q1GWulJYKAMqG7g8AEgEIAC2j+wOgbay11loZPXp0Ro8eXepSWsxkiACUFWt/AFDP+h8AtIT1PwBwFwCgLAk/AKgnAAGgJQQgAJ2XV38AypbuDwCWJvwAoCUEIACdj1d9AMqe8AOAero/AGgp4QdA5+EVH4CKoPsDgKUJQABoCd0fAJ2DV3oAKorwA4ClCUAAaAkBCEB18woPQMXR/QHAxwlAAGgJAQhAdfLKDkDFEn4A8HECEABaQgACUF28ogNQ0XR/ANAQ4QcALSH8AKgOXs0BqArCDwA+TvcHAC2h+wOg8nkVB6BqCD8AaIgABICWEIAAVC6v3gBUFVNfAbAiAhAAWkIAAlB5vGoDUJWEHwCsiAAEgJYQgABUDq/WAFQt3R8ANEb4AUBLCEAAyp9XaQCqnvADgBXR/QFASwk/AMqXV2gAOgXhBwCNEYAA0BK6PwDKk1dmADoNU18BsDICEABaQgACUF68IgPQ6Qg/AFgZ4QcALSEAASgPXokB6JSEHwCsjO4PAFpK+AFQWl6FAei0hB8ANIUABICW0P0BUDpefQHo1Kz7AUBTCT8AaAkBCEDH86oLANH9AUDT6P4AoKUEIAAdx6stAPwf4QcATSUAAaClhB8A7c8rLQAsRfgBQHMIQABoCd0fAO3LKywAfIx1PwBoLuEHAC0hAAFoH15ZAWAFhB8ANIfuDwBaSgAC0La8ogJAI4QfADSXAASAlhJ+ALQNr6YAsBLCDwBaQvgBQEvo/gBoPa+iANAE1v0AoCV0fwDQUgIQgJbz6tlG5s2bl4svvjh77713+vfvn27dumXgwIHZb7/9Mnbs2EafW1NT0+yvlho6dGi7XwOgmgk/AGgJAQgALSX8AGi+2lIXUA2mTJmSgw46KFOmTFnm8RkzZmTGjBm56667ctVVV+WWW25J7969W329wYMHt/ocALRcz8nTM3fr9UpdBgAVqD78eH+zbiWuBIBKUh9+fLTJ4hJXAlAZBB+t9NZbb2X48OF59dVXkySHH354Ro4cmYEDB+b111/P1VdfnZtuuil33313RowYkTvuuGO5czz99NMrvc7VV1+dn/70p0mSkSNHtrrunXbaKVdddVWrzwPQWQk/AGiNPlPqhB8ANJsABKBpBB+tdPbZZxdDj7POOiujR48u7vvUpz6V/fffP2eddVbOPvvs3Hnnnbn55ptz2GGHLXOOrbfeeqXXefDBB5MsmRbr6KOPbnXdvXr1atJ1AVgx4QcAraH7A4CWEoAANM4kga2waNGiXHvttUmSDTbYIKNGjWrwuO9973v5xCc+kSQ555xzmn2dKVOmZOLEiUmWrNFRfy4ASs+i5wC0lvU/AGgp638ANMyrYytMnTo1H374YZJk+PDh6dKlS4PHdenSJcOHD0+SPP7443n55ZebdZ1rrrmmuN0W01wB0PaEHwC0lvADgJZY7cVVBCAAH+NVsRXefffd4vY666zT6LFL7//LX/7S5GsUCoViV0mvXr1y6KGHNrNKADqK8AOA1tL9AUBLCUAA/sUaH63Qu3fv4nZ958eKLL3/mWeeafI17r///kybNi1JcsghhyxzzdZ47rnnsssuu2TKlCmZN29e+vXrlx133DGHHnpojjrqqHTt2rVF533ttdca3T9jxozids/eXVPTtXuLrgOdzaqrd2twm/LT67V3kiTzNlu3xJWQJL1W7dLgNrBixk156P3akjnbP9ykZT+X0/F6d+vS4DbQOGOn7a3+2pI/x1kbWP+jWnXvIuCClRF8tMKmm26arl27ZsGCBcXFx1dk6f31QUZTLD3N1THHHNP8IlfgzTffzJtvvln8fvr06Zk+fXp+97vf5dxzz83NN9+cLbbYotnnHTRoUJOP3e+U7dOvX79mXwM6u0O/vXOpS4CK9OXDNip1CVBxjBtomX8bsn6pS4CKZOxA07zzzjt5tNRFQJkTD7ZCr169stdeeyVJnnrqqdxwww0NHnfDDTfk6aefLn7/0UcfNen8c+bMyS233JIkWX/99YvXao1VVlkle++9dy644IL8+c9/zhNPPJEHH3wwF154YTHoeOaZZzJs2LBmBTQAAAAAAFAOdHy00ujRo3PPPfdk4cKFGTlyZF588cUcc8wxGTBgQGbMmJFrrrkmZ599drp165a6uiVz9c6dO7dJ57711luLIcnRRx+dVVZpfU41bty4rLnmmss9vvvuu+eUU07JSSedlKuvvjpvvvlmTjvttIwbN65Z53/11Vcb3T9jxozsvPOST6v//uK/p2Z+j2adHzqrVVfvVuz0uOXciZkz09zflcbUV6XRa9UuxU+sX3/zy5k9Z1GJK4LyZ9yUP9Nflafe3boUP63+68dey6w6YweawtjpWKa/qg7dZ84sdQlQ9gQfrfTpT386l1xySU4++eQsWLAgo0aNyqhRo5Y5pmfPnjn//PPzzW9+M0my2mqrNencS09zNXLkyDapt6HQo17Xrl1z+eWX569//WumTJmS8ePHZ/r06VlvvfWafP711296W+rcWQtSmF3T5OOBJebMrMvsD+aXugya69FXMnfrpr+e0vZmz1mUWbMXlroMqCjGTXnq8tSSv5P3N7PuV7maVbcoM+d78xaay9jpAM8v+c9HmwhAKlnPRf7+YGVMddUGjj/++Dz66KM5+OCD06tXr+LjtbW1OfDAA/O3v/0tO+20U/HxPn36rPScM2bMyJ///OckyZAhQ7L55pu3feENqK2tzQknnFD8/oEHHuiQ6wJ0Bj0nT0/PydNLXQYAVaLPFB2gALTMai96SxCobjo+2sgOO+yQcePGZeHChZkxY0bq6uqy3nrrpUePJVM5XXvttcVjt9pqq5We77rrrsuiRUs+5dCWi5o3xZZbblncnj7dG3QAba3n5Om6PwBoE/Xhh+4PAJqrPvzQ/QFUI8FHG6utrc2gQYOWe/zxxx8vbtevcdGY3/zmN0mSbt265aijjmq7Apugpsb0UwDtTfgBQFsSgADQUgIQoBrpa+sAixYtKi4SPmjQoOy6666NHv/3v/89Tz31VJJkv/32y1prrdXuNS7tmWeeKW4PHDiwQ68N0JmY+gqAtmb6KwBaarUXVzEFFlA1vJp1gCuuuCLTpk1Lkpx88snp0qVLo8e3x6LmTbVw4cJceeWVxe/32GOPDr0+QGck/ACgLfWZUicAAaDFhB9ANfBK1gYaWwfj3nvvzWmnnZYkGTx4cE4//fRGz7Vo0aJcf/31SZK11lor+++/f5PrOPbYY1NTU5Oamprcf//9y+2/77778sEHH6zw+QsWLMiJJ56YZ599NklywAEHNDhtFwBtT/cHAG1NAAJAS+n+ACqdNT7awNZbb50999wz+++/f7baaqt0794906ZNy/jx43Pddddl8eLF6du3b2688cbiYucr8sc//jFvvvlmkuSoo45K165d26zOq6++OgceeGAOPPDADB06NJtttllWX331zJo1K48//nguvfTS4jRXa6+9dn7+85+32bUBaBprfwDQ1qz/AUBLWf8DqFSCjzawYMGC3Hbbbbntttsa3L/VVlvluuuuy3bbbbfScy09zdUxxxzTZjXWmzVrVq6//vpiV0lDttlmm4wdOzYbbbRRm18fgJUTfgDQHvpMqRN+ANAiAhCg0gg+2sDll1+eu+++OxMnTsyMGTMya9as9O/fP9tuu20OP/zwHH300U3q3Jg5c2Z+97vfJUm22GKLDBkypE3r/Pa3v53tt98+jzzySJ555pm8/fbbee+999K9e/ess8462WmnnXLYYYfl4IMPXuk6JAC0r/pprwQgALQl3R8AtMZqL64i/AAqguCjDYwYMSIjRoxo9XlWX331zJkzp8XPHzNmTMaMGbPC/VtssUW22GKL4pojAJQ/3R8AtAcBCAAtpfsDqARWKQKAMmfRcwDai8XPAWgpC6AD5cyrEwBUgJ6TpwtAAGgXfabUCUAAaDEBCFCOvCoBQAURfgDQXgQgALSG8AMoJ16RAKDC6P4AoD0JPwBoKd0fQLnwSgQAFUr4AUB70f0BQGsIQIBS8woEABVM+AFAexKAANAaAhCgVLzyAECFM/UVAO1NAAJAawg/gI7mVQcAqoTwA4D2JvwAoKV0fwAdyasNAFQR4QcA7U33BwCtIQABOoJXGQCoMqa+AqAjCEAAaA0BCNCevLoAQJUSfgDQEYQfALSG8ANoD15ZAKCK6f4AoCPo/gCgNXR/AG3NKwoAdALCDwA6ggAEgNYQgABtxSsJAHQSwg8AOooABIDWEIAAreUVBAA6EVNfAdCRhB8AtIbwA2gprx4A0AkJPwDoKLo/AGgN3R9AS3jVAIBOSvgBQEcSgADQGgIQoDm8WgBAJ2bqKwA6mvADgNYQgABN4VUCABB+ANChdH8A0FrCD6AxXiEAgCS6PwDoeAIQAFpD9wewIl4ZAIBlCD8A6GjCDwBaQwACfJxXBABgOcIPADqa7g8AWksAAtTzSgAANMjUVwCUggAEgNYSfgBeBQCARgk/ACgFAQgAraH7Azo3ox8AWCnhBwClIvwAoDUEINA5GfUAQJOY+gqAUtH9AUBrCUCgczHaAYBmEX4AUCoCEABaS/gBnYORDgA0m+4PAEpJ+AFAa+j+gOpnhAMALSb8AKBUdH8A0FoCEKheRjYA0CrCDwBKSQACQGsJQKD6GNEAQKuZ+gqAUhOAANBawg+oHkYzANBmhB8AlJrwA4DW0P0B1cEoBgDalPADgFLT/QFAawlAoLIZvQBAmzP1FQDlQAACQGsJP6AyGbkAQLsRfgBQDoQfALSG7g+oPEYsANCudH8AUA50fwDQWgIQqBxGKgDQIYQfAJQDAQgArSUAgfJnhAIAHUb4AUC5EH4A0FrCDyhfRicA0KFMfQVAudD9AUBr6f6A8mRUAgAlIfwAoFwIQABoLQEIlBejEQAoGeEHAOVEAAJAawlAoDwYhQBASZn6CoByI/wAoLWEH1BaRiAAUBaEHwCUE90fALSW7g8oHSMPACgbuj8AKDcCEABaSwACHc+IAwDKjvADgHIj/ACgtQQg0HGMNACgLAk/ACg3uj8AaAvCD2h/RhkAULZMfQVAORKAANBauj+gfRldAEDZE34AUI4EIAC0lgAE2odRBQBUBN0fAJQr4QcArSUAgbZlNAEAFUX4AUA5WuPFBaUuAYAqIPyAtmEkAQAVR/gBQDkTggDQGro/oPWMIACgIpn6CoByZvorAFpLAAItZ+QAABVN+AFAubL4OQBtQQACzWfEAAAVT/gBQDkTgADQFoQf0HRGCwBQFUx9BUC5E34A0FqrvbhKek33li6sjFECAFQV4QcA5Uz3BwBA+xN8AABVR/cHAOVOAAIA0H4EHwBA1eox5Y1SlwAAjRKAAAC0PcEHAAAAlJjwAwCg7Qg+AIBOQfcHAOVO9wcAQNsQfAAAnYZ1PwCoBAIQAIDWEXwAAJ2K8AOASiH8AABoGcEHANDp9Jw8XQACQEXQ/QEA0HyCDwCg0xJ+AFApBCAAQCl8+9vfTk1NTfHr/vvvL3VJTSL4AAA6Nd0fAFQSAQgA0FH+/ve/5//7//6/UpfRIoIPAIDo/gCgsgg/AID2tHjx4nzta1/LwoULs/baa5e6nGYTfAAA/B/hBwCVRPcHANBeLrroojz22GPZfPPNc8IJJ5S6nGYTfAAALMXUVwBUGgEIANCWpk2bllGjRiVJfv3rX6dbt24lrqj5BB8AAA0QfgBQaYQfAEBb+MY3vpFZs2Zl5MiR2XPPPUtdTosIPgAAVkD4AUCl0f0BALTGjTfemDvuuCN9+/bNT3/601KX02K1pS4AAKCc1Ycfc7der8SVAEDT1Ycf729WeVNTAAArNmPGjJUes/7667fo3B988EFOPfXUJMm5556bfv36teg85UDwAQDQBD0nTxd+AFBx+kypE34AQBXZeeedV3pMoVBo0bnPPPPMvPHGG9ltt90qckHzpQk+AACaSPcHAJVI9wcALGvNlxake4/KmRpy/rwF7X6Nv/zlL7n88stTW1ubX//616mpqWn3a7YnwQcAQDPp/gCgEglAAKDyTZw4MQMGDGjTc9bV1eVrX/taCoVCvvWtb2Xrrbdu0/OXguADAKAFhB8AVCoBCABUrgEDBrR4DY8V+fGPf5znnnsun/jEJ3LWWWe16blLZZVSFwAAUKl6Tp5enP4KACpNfQACAHRezz33XH7yk58kSX7xi1+kV69eJa6obej4AABoJd0fAFQq3R8A0Ln97Gc/S11dXTbeeOPMmTMnY8eOXe6YyZMnF7fvvffevPHGG0mSAw44oGyDEsEHAEAbEH4AUMkEIADQOc2fPz9J8tJLL+Woo45a6fE/+MEPitsvv/xy2QYfproCAGgjpr4CoNKZ/goAqAaCDwCANib8AKCS9ZlSJwABgE5izJgxKRQKjX4tveD5fffdV3x8ww03LF3hKyH4AABoB7o/AKh0AhAAoFIJPgAA2pHwA4BKJwABACqN4AMAoJ0JPwCoBsIPAKBSCD4AADqAqa8AqAa6PwCASiD4AADoQMIPAKqBAAQAOo/Ro0cXFzQfOnRoqctpEsEHAEAHE34AUC2EHwBAORJ8AACUgKmvAKgWuj8AgHIj+AAAKCHhBwDVQgACAJQLwQcAQInp/gCgmgg/AIBSE3wAAJQJ4QcA1UL3BwBQSoIPAIAyIvwAoJoIQACAUhB8AACUGVNfAVBtBCAAQEcSfAAAlCnhBwDVRvgBAHQEwQcAQBkTfgBQbXR/AADtTfABAFDmTH0FQDUSgAAA7UXwAQBQIYQfAFQj4QcA0NYEH21k3rx5ufjii7P33nunf//+6datWwYOHJj99tsvY8eObfS5999/f2pqapr0NXr06Dapd86cOTnvvPMyZMiQ9O3bN7169crmm2+e008/Pa+88kqbXAMAaHu6PwCoRro/AIC2VFvqAqrBlClTctBBB2XKlCnLPD5jxozMmDEjd911V6666qrccsst6d27d4mq/JcXXngh++23X6ZOnbrM41OmTMmUKVNy+eWX57rrrssXv/jFElUIAKxMz8nTM3fr9UpdBgC0qfrw4/3NupW4EgCgkgk+Wumtt97K8OHD8+qrryZJDj/88IwcOTIDBw7M66+/nquvvjo33XRT7r777owYMSJ33HFHo+e78sorM2TIkBXuX3vttVtV70cffZT999+/GHqcdNJJGTFiRHr27Jn77rsvP/nJTzJz5swceeSRefjhh7P99tu36noAQPsRfgBQrQQgAEBrCD5a6eyzzy6GHmedddYyU1F96lOfyv7775+zzjorZ599du68887cfPPNOeyww1Z4vo022ihbb711u9V7/vnn5/nnn0+SnHfeeTnjjDOK+z7zmc9k6NCh2XPPPTNnzpycdtppuf/++9utFgCg9eqnvRKAAFCN+kypE34AAM1mjY9WWLRoUa699tokyQYbbJBRo0Y1eNz3vve9fOITn0iSnHPOOR1W38ctWLAgF110UZJkiy22yOmnn77cMbvuumtOOOGEJMkDDzyQxx57rENrBABaxrofAFQr638AAM0l+GiFqVOn5sMPP0ySDB8+PF26dGnwuC5dumT48OFJkscffzwvv/xyh9W4tPvuu69Y78iRI7PKKg3/9R977LHF7fHjx3dEaQBAGxB+AFDNBCAAQFMJPlrh3XffLW6vs846jR679P6//OUv7VZTYx566KHi9p577rnC43baaaesuuqqSZKHH3643esCANpOz8nTBSAAVDXhBwCwMoKPVujdu3dxu76TYkWW3v/MM8+s8Ljvfve72WCDDdK9e/f06dMnn/rUp/Ktb32ruC5Hayx93c0333yFx9XW1mbTTTdNkjz77LOtvi4A0PGEHwBUM90fAEBjLG7eCptuumm6du2aBQsW5MEHH2z02KX3T5s2bYXHTZgwobhdV1eXv//97/n73/+eiy66KKNGjcpZZ52VmpqaFtX72muvJUl69eqVNddcs9FjBw0alKeeeipvv/125s+fn+7duzfrGisyY8aM4nbP3l1T07Vp54XObtXVuzW4DTSus4+dXq+9kySZt9m6Ja6EStJr1S4NbgONM3ZKo/dri5MkH27StcSV0FK9u3VpcBtYsdqCz7LDygg+WqFXr17Za6+98sc//jFPPfVUbrjhhhx11FHLHXfDDTfk6aefLn7/0UcfLXfMgAEDcsghh+Szn/1sNt5449TW1mbatGm54447cs0112TBggX5/ve/n7q6uvz4xz9uUb311126U6Wx/7d6s2bNanLwMWjQoCbXs98p26dfv35NPh5Y4tBv71zqEqAiGTvQfF8+bKNSlwAVydiBlvm3IeuXugSoCO+8807uL3URUOYEH600evTo3HPPPVm4cGFGjhyZF198Mcccc0wGDBiQGTNm5JprrsnZZ5+dbt26pa5uSRvu3LlzlznHkCFD8sorr6Rr12U/obLDDjvkS1/6Ur72ta9l3333zYcffphzzjknRx55ZLbbbrtm1zpv3rwkSbduK//E69JBx8frBQAAAACAciX4aKVPf/rTueSSS3LyySdnwYIFGTVqVEaNGrXMMT179sz555+fb37zm0mS1VZbbZn9S3dXNGTnnXfOL3/5y3z1q19NoVDIL3/5y1x22WXNrrVHjx5JUgxgGjN//vzids+ePZt8jVdffbXR/TNmzMjOOy/5xO3vL/57aub3aPK5oTNbdfVuxU+r33LuxMyZaT5jaApjp2GmvqIxvVbtUvy0+vU3v5zZcxaVuCKoDMZO+TH9VWXo3a1LsdPj14+9lll1xg6sTO28maUuAcqe4KMNHH/88dl+++3zwx/+MHfffXdmz56dZMki4fvtt1/OPffcZRY379OnT7OvMWLEiHzjG9/IzJkz88ADD7SozvrAZdasWSs9tv7/IWna1Fj11l+/6W2pc2ctSGF2y9Yrgc5szsy6zP5g/soPBJZh7Czl0Vcyd+v1Sl0FFWD2nEWZNXthqcuAimPslIcuTy35O3h/s863zlelmlW3KDPnCz5gZbovWFzqEqDsWQmnjeywww4ZN25cPvjgg0ybNi0vvPBCPvroo9x2223ZfPPNM3Xq1OKxW221VbPPX1tbm8GDBydJpk+f3qIa60OJ2bNn54MPPmj02PrOjf79+zd5fQ8AoHL0nNyynycAoNL0maLjEwA6G8FHG6utrc2gQYOyySabFKeWSpLHH3+8uF0/1VNz1dS0rjtiyy23LG4/99xzKzxu4cKFefHFF5MkW2yxRauuCQCUr56TpwtAAOgU+kypE4AAQCci+OgAixYtyrhx45IkgwYNyq677trscyxcuDDPP/98kmTgwIEtquOzn/1scbux6bImTZpUnOpqt912a9G1AIDKIfwAoLMQgABA5yD46ABXXHFFpk2bliQ5+eST06VLl2af47e/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Wc0i+AAAABqk+wMASkf4AZTCO++8k+HDh+ell15KkvziF7/IMcccU+Kqmk/wAQAArFDPydOXrP0BAHQ43R9AR/rwww/zuc99Ls8880yS5Jxzzsk3vvGNElfVMoIPAABgpYQfAFA6AhCgvc2ZMyf7779//va3vyVJvvvd7+bb3/52iatqOcFHG5k3b14uvvji7L333unfv3+6deuWgQMHZr/99svYsWMbfe6CBQvyhz/8Id/61rey6667pl+/funatWvWXHPN7LDDDjnjjDOKrUWtNXTo0NTU1DTpCwAAlqb7AwBKS/gBtIe6urocfPDBefjhh5Mkp556an74wx+WuKrWqS11AdVgypQpOeiggzJlypRlHp8xY0ZmzJiRu+66K1dddVVuueWW9O7de5lj3n777WyxxRZ59913lzvvhx9+mCeeeCJPPPFELrroopx33nk59dRT2/X/BQAAVqbn5OmZu/V6pS4DADql+vDj/c26lbgSoFocddRRufvuu5Mke+21V0444YRMnjx5hcd369YtgwcP7qjyWkTw0UpvvfVWhg8fnldffTVJcvjhh2fkyJEZOHBgXn/99Vx99dW56aabcvfdd2fEiBG54447lnn+/Pnzi6HH9ttvn4MOOii77LJL1llnnXz44Ye566678otf/CLz5s3Laaedlp49e+ZrX/taq+veaaedctVVV7X6PAAAdE7CDwAoLQEI0FbGjRtX3L733nuz7bbbNnr8BhtskH/+85/tXFXrCD5a6eyzzy6GHmeddVZGjx5d3PepT30q+++/f84666ycffbZufPOO3PzzTfnsMMOKx5TU1OT4cOH5+yzz86nP/3p5c4/bNiwHHrooRk2bFjmzp2bM888M0cddVRWW221VtXdq1evbL311q06BwAAnVv9tFcCEAAonT5T6oQfAB9jjY9WWLRoUa699tokS1KuUaNGNXjc9773vXziE59IkpxzzjnL7FtvvfVy9913Nxh61Ntll11yyimnJFky/dWf/vSntigfAADahHU/AKC0LH4OtEahUGjWV7l3eySCj1aZOnVqPvzwwyTJ8OHD06VLlwaP69KlS4YPH54kefzxx/Pyyy83+1rDhg0rbr/44ostqBYAANqP8AMASk/4AbCE4KMVll6QfJ111mn02KX3/+Uvf2n2tebPn1/cXlHAAgAApdRz8nQBCACUmO4PAGt8tErv3r2L2/WdHyuy9P5nnnmm2dd64IEHittbbLFFs5//cc8991x22WWXTJkyJfPmzUu/fv2y44475tBDD81RRx2Vrl27tui8r732WqP7Z8yYUdzu2btrarp2b9F1oLNZdfVuDW4DjTN2oPnaYtz0eu2dzNts3bYqCSpCr1W7NLgNNM7YaT+9X1ucJPlwk5a9x0P5qi34LDusTE2hUCiUuohKNXv27PTp0ycLFizItttumyeffHKFx2677bZ5+umnkyRHHXVUrr/++iZfZ8aMGdlss83y0UcfpX///pk2bVp69OjRopqHDh26TIjSkC233DI333xziwKWmpqaJh97+eWXp1+/fs2+BgAAAAB0Vu+8805OPPHEJMmrr76a9ddfv8QVVYbXXnstgwYNSpIMXfe49OjSeyXPKB/zFs3K/W9clcTfeVOJB1uhV69e2WuvvZIkTz31VG644YYGj7vhhhuKoUeSfPTRR02+RqFQyMknn1x8zqhRo1oceiTJKquskr333jsXXHBB/vznP+eJJ57Igw8+mAsvvLAYdDzzzDMZNmxYpk2b1uLrAAAAAABAKZjqqpVGjx6de+65JwsXLszIkSPz4osv5phjjsmAAQMyY8aMXHPNNTn77LPTrVu31NUtmV9x7ty5TT7/j3/849x+++1Jlixw/o1vfKNV9Y4bNy5rrrnmco/vvvvuOeWUU3LSSSfl6quvzptvvpnTTjst48aNa9b5X3311Ub3z5gxIzvvvHOS5PcX/z0181se4kBnsurq3XLot5eMnVvOnZg5M83XCk1h7EDztde4MfUV1a7Xql3y5cM2SpJcf/PLmT1nUYkrgspg7JSG6a8qW+28maUuAcqe4KOVPv3pT+eSSy7JySefnAULFmTUqFEZNWrUMsf07Nkz559/fr75zW8mSVZbbbUmnfu6664rnmujjTbK9ddfn1VWaV2TTkOhR72uXbvm8ssvz1//+tdMmTIl48ePz/Tp07Peeus1+fzNabOaO2tBCrObPjUWsMScmXWZ/cH8UpcBFcfYgeZr03Hz6CtJkrlbN/1nS6hUs+csyqzZC0tdBlQcY6fjdHlqYd7fzBp4lar7gsWlLgHKnqmu2sDxxx+fRx99NAcffHB69epVfLy2tjYHHnhg/va3v2WnnXYqPt6nT5+VnvPOO+/Mcccdl0KhkHXXXTd/+tOfsu667f8pudra2pxwwgnF71e2HggAADRHz8nTS10CAJCkz5S69JmiIxqoTjo+2sgOO+yQcePGZeHChZkxY0bq6uqy3nrrFdfjuPbaa4vHbrXVVo2e6/77789hhx2WBQsWpE+fPvnjH/+YTTbZpF3rX9qWW25Z3J4+3S+mAAC0rfrwQ/cHAJReffihAwSoJjo+2lhtbW0GDRqUTTbZZJlFyB9//PHidv0aFw2ZOHFiDjjggMybNy+9e/fOXXfdlW233bZda/64mhrTTwEA0P50fwBA+dD9AVQTwUcHWLRoUXGR8EGDBmXXXXdt8Linnnoqn//85zNr1qz06NEjt99+e3bZZZeOLDVJ8swzzxS3Bw4c2OHXBwCg8xB+AED5MP0VUC0EHx3giiuuyLRp05IkJ598crp06bLcMc8//3z23XffvP/+++natWtuueWWDB06tIMrTRYuXJgrr7yy+P0ee+zR4TUAANC59Jw8XQACAGVEAAJUOsFHG2hsHYx77703p512WpJk8ODBOf3005c7Ztq0adlnn33y5ptvpkuXLrn++uuz3377NbuOY489NjU1Nampqcn999+/3P777rsvH3zwwQqfv2DBgpx44ol59tlnkyQHHHBABg0a1Ow6AACgJYQfAFBehB9ApbK4eRvYeuuts+eee2b//ffPVlttle7du2fatGkZP358rrvuuixevDh9+/bNjTfeuMy6H0ny7rvvZp999smrr76aJDn99NOz+eabZ/LkySu8Xp8+fbLees1fCPLqq6/OgQcemAMPPDBDhw7NZpttltVXXz2zZs3K448/nksvvbQ4zdXaa6+dn//8582+BgAAtEbPydMteg4AZcTi50AlEny0gQULFuS2227Lbbfd1uD+rbbaKtddd12222675fY9/fTTmTp1avH78847L+edd16j1xs5cmTGjBnTolpnzZqV66+/Ptdff/0Kj9lmm20yduzYbLTRRi26BgAAtEZ954cABADKR58pdcIPoGIIPtrA5ZdfnrvvvjsTJ07MjBkzMmvWrPTv3z/bbrttDj/88Bx99NHp2rVrqcvMt7/97Wy//fZ55JFH8swzz+Ttt9/Oe++9l+7du2edddbJTjvtlMMOOywHH3xwg+uQAABAR9L9AQDlRfcHUCkEH21gxIgRGTFiRIueO3To0BQKhTapY8yYMY12gmyx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JLn77rszYsSIFZ7nkksuyfe///0sXrw4m2yySa644opMnDgxt956a4YNG5YkufPOO3P88ce3qt5Fixbl4IMPLoYehxxySO666648+uijueiii7L22mtn/vz5Ofnkk3PXXXe16loAAAAdSfcHAEDrPPHEEznyyCMzc+bM9O7dOz/60Y8yYcKE3HPPPTnppJOSJM8//3z233//fPTRRyWutnE6Plrh7LPPzquvvpokOeusszJ69Ojivk996lPZf//9c9ZZZ+Xss8/OnXfemZtvvjmHHXbYMud477338u1vfztJ8olPfCJ//etf069fv+L+L37xizn44INz++2354YbbsjXvva1DB06tEX1Xn311XnooYeSJKecckp+9atfFfftvPPO+cIXvpAdd9wxM2fOzH/8x3/k2WefTW2tfyIAAEBl0P0BANByp556aubOnZva2trcfffd+cxnPlPct9dee+WTn/xkzjzzzDz//PO54IILlnk/vNzo+GihRYsW5dprr02SbLDBBhk1alSDx33ve9/LJz7xiSTJOeecs9z+yy+/PB9++GGS5Nxzz10m9EiSLl265OKLL06XLl2SJOeff36La/7pT3+aJOnbt2+D59l0003zne98J0nywgsvZPz48S2+FgAAQKno/gAAaJ6JEyfmL3/5S5LkhBNOWCb0qHf66adniy22SJL8/Oc/z4IFCzq0xuYQfLTQ1KlTi4HF8OHDi8HEx3Xp0iXDhw9Pkjz++ON5+eWXl9l/6623JklWX331HHLIIQ2eY/31188+++yTJLnnnnta1Eb0/PPP59lnn02SHHHEEVl11VUbPO7YY48tbgs+AACASiX8AABouvr3qZPkuOOOa/CYVVZZJcccc0yS5IMPPsh9993XEaW1iOCjhd59993i9jrrrNPosUvvr0/NkqSuri4TJ05MknzmM59Jt27dVniOPffcM0kyf/78TJo0qdn11k9xtfS5GrLuuutm8ODBSZKHH3642dcBAAAoFz0nTxeAAAA0Qf37x7169cqOO+64wuOWfm+5nN8/toBDC/Xu3bu4Xd/5sSJL73/mmWeK288//3wWLVqUJNl8880bPcfS+5999tnioudNtfR1m3Kt559/Pq+++mpmz56dXr16Nfk6r732WqP769dESZJCt/mpafKZoXMrdC/knXfe+b/teanpVb6thFBOjB1oPuOGarTqyy9n/sb92/UaNYUuxbFTU/goXWoWtev1oFoYO9B8NZld3F64cGEJK6lc8xfNXvlBZWTpemfMmLHS49dff/1mX6N+tqBNN9200XWfP/4+dbkSfLTQpptumq5du2bBggV58MEHGz126f3Tpk0rbi8dEqzsH+OgQYOK20uHB03VkmsVCoW89tpr2WyzzZp8naXrXJk/TB7T5GOBZNyJpa4AKpOxA81n3FCVnm//S9xhtmBoEWMHWu7tt9/OhhtuWOoyKs4jb99Y6hJabOedd17pMYVCoVnnnDdvXjGEXtl7x3369EmvXr0ye/bsFr1P3VFMddVCvXr1yl577ZUkeeqpp3LDDTc0eNwNN9yQp59+uvj90utzLL29dAfJiq5Xb9asWc2utyOvBQAAAAC0vzfffLPUJVAFmvPecfKv94/L+b1jHR+tMHr06Nxzzz1ZuHBhRo4cmRdffDHHHHNMBgwYkBkzZuSaa67J2WefnW7duqWuri5JMnfu3OLz582bV9xubH2PJOnevXtxe+lzNFVHXWtlKd/LL7+cPfbYI0kyYcKEZnWIQGc2Y8aMYqI/ceLEDBgwoMQVQWUwdqD5jBtoGWMHWsbYgeZ79dVXs+uuuyZZ+ZT2/Mu6665b1h0KTTFjxoz079+/0amoWqI57x0n/3r/uCXvU3cUwUcrfPrTn84ll1ySk08+OQsWLMioUaMyatSoZY7p2bNnzj///Hzzm99Mkqy22mrFfT169Chu1wcjKzJ//vxlztlcH7/W0t+35bWaM3/coEGDWjTfHHR2AwYMMHagBYwdaD7jBlrG2IGWMXag+Rp7j49l1dbWVvxrTHvV35z3qZN/vX/ckvepO4qprlrp+OOPz6OPPpqDDz54mSmiamtrc+CBB+Zvf/tbdtppp+Ljffr0KW4vHYKsrC1o9ux/LWDTlHajj+vIawEAAAAAUBma895x8q/3j8v5vWMdH21ghx12yLhx47Jw4cLMmDEjdXV1WW+99YpJ2bXXXls8dquttipuL53QLb34eEOWbsNqyfRQH79Wv379Vnqtmpqaik9BAQAAAABYsR49emSttdbKu+++u9L3qd9///1i8FHOyxjo+GhDtbW1GTRoUDbZZJNl2oMef/zx4nb9vJVJMnjw4HTp0iVJ8txzzzV67qX3b7HFFs2ubcstt2zwXI1da9CgQct0sQAAAAAAUH3q3z9+4YUXsnDhwhUe19r3qTuK4KOdLVq0KOPGjUuyJEioX3goWbJQTH0Q8sgjjzQ6f9oDDzyQZMnCMUtPndVUn/3sZ5c7V0PeeOONPP/880mS3XbbrdnXAQAAAACgstS/fzx79uxlPsj/cUu/t1zO7x8LPtrZFVdckWnTpiVJTj755GKHR70vfelLSZKZM2cWA5KPe+211/LnP/85SbL33nsvM+daUw0ePLiYwN14442ZM2dOg8eNGTOmuH3wwQc3+zoAAAAAAFSW+vepk+Sqq65q8JjFixfnmmuuSZKsueaaGTZsWEeU1iKCj1aaPn36Cvfde++9Oe2005IsCR5OP/305Y458cQTs8YaayRJ/uu//ivvvvvuMvsXLVqUU045JYsWLUqSnHHGGQ1ea/To0ampqUlNTc0y4cXS/vM//zNJ8t577+XMM89cbv+LL76Yn/zkJ0mSTTfdVPABAAAAANAJ7Lzzztl9992TLPkw/yOPPLLcMRdccEGeffbZJMmpp56arl27dmiNzWFx81baeuuts+eee2b//ffPVlttle7du2fatGkZP358rrvuuixevDh9+/bNjTfeuMy6H/X69u2bc889N//2b/+WV155Jbvssku++93vZptttsnrr7+eCy+8MPfdd1+S5KijjsrQoUNbXOvIkSNz5ZVX5uGHH86vfvWrvPHGGznppJPSp0+fTJw4MT/4wQ8yc+bMrLLKKrnoootSW+ufBwAAAABAZ/Dzn/88u+22W+bOnZt99903//3f/51hw4Zl7ty5GTt2bC699NIkK/6QfzmpKRQKhVIXUcl69+5dXMW+IVtttVWuu+66bLfddo2e56yzzsoPfvCDrOivY7/99sstt9zSYHiSLOn4+P73v59kSSvSscce2+Bx77zzTvbbb7889thjDe7v3r17fvnLX+bEE09stF4AAAAAAKrL7bffnqOPPjozZ85scP/gwYNz5513ZtNNN+3gyprHVFetdPnll+e4447LVlttlb59+6Zbt25Zb7318oUvfCFXXnllnnjiiZWGHkny/e9/Pw899FC+/OUvZ9CgQenWrVvWXnvtDB8+PNdff33uvPPOFYYezdGvX79MmDAhF198cT772c9mrbXWSo8ePbLxxhvnpJNOyuOPPy70AAAAAADohA444IA89dRT+da3vpXBgwdn1VVXzZprrpmddtop5557bp544omyDz0SHR8AAAAAAEAV0fEBAAAAAABUDcEHAAAAAABQNQQfAAAAAABA1RB8AAAAAAAAVUPwAQAAAAAAVA3BBwAAAAAAUDUEHwAAAAAAQNUQfAAAAAAAAFVD8AEAAAAAAFQNwQfLeeWVV3L66adn8803T69evdK3b98MGTIk559/fubMmdOqcy9evDjPPPNMxowZk1NOOSVDhgxJ9+7dU1NTk5qamtx///3NOt+cOXNy3nnnZciQIenbt2969eqVzTffPKeffnpeeeWVVtUKzVUJY2fo0KHF56zsCzpKe46dOXPmZNy4cfn617+eIUOGpE+fPunatWvWWmutfOYzn8no0aPzxhtvNOt87juUg0oYN+45lKP2HDvPPvtsfvnLX2bkyJHZYYcdsv7666dHjx7p1atXNt544xx55JG57bbbUigUmnS+hQsX5te//nV233339O/fPz179swmm2ySk08+Of/4xz9aVSs0VyWMnWOPPbbJ951//vOfraoZmqI9x82KzJkzJxtvvHHx3/qGG27Y5Of5PYeqU4Cl/O53vyusvvrqhSQNfg0ePLgwderUFp9/zJgxKzx3ksJ9993X5HNNnTq18MlPfnKF51p99dULt99+e4trheaolLGz5557Nnqepb+gI7Tn2HnyyScLvXv3Xum/9dVXX70wduzYlZ7PfYdyUSnjxj2HctPeP6995StfadK/9z333LPwzjvvNHqut99+uzBkyJAVnqN79+6Fyy67rMW1QnNUytgZOXJkk+87L7/8covrhaZo73GzIqeffvoy19lggw1W+hy/51CtagP/54knnsiRRx6ZuXPnpnfv3vnOd76TYcOGZe7cuRk7dmwuu+yyPP/889l///0zadKkrLbaas2+RmGpT2h07do122yzTRYsWJCnn366Wef56KOPsv/++2fq1KlJkpNOOikjRoxIz549c9999+UnP/lJZs6cmSOPPDIPP/xwtt9++2bXCk1VSWOn3k477ZSrrrqqRc+FttLeY2fmzJmZNWtWkmS33XbLF7/4xey0005Za6218vbbb2fcuHG57LLLMnPmzHzlK1/J6quvni984QsNnst9h3JRSeOmnnsO5aAjfl6rra3NLrvskt122y3bbLNN1l133fTv3z/vv/9+nnvuuVxyySWZPHlyHnjggRxwwAF56KGHssoqy0/CsGjRohx88MF57LHHkiSHHHJITjrppPTt2zePPvpofvjDH+att97KySefnPXWW2+lYxBao5LGTr2BAwfmj3/8Y6PXXG+99ZpdJzRVR4ybFV33wgsvTI8ePdK1a9d89NFHK32O33OoaqVOXigfu+++eyFJoba2tjBhwoTl9p933nnFtPess85q0TUeffTRwkUXXVR45JFHCnPnzi0UCoXCWWed1exPrY8aNar4nPPOO2+5/Q8//HChtra2+KkQaE+VNHbqP31rXFAO2nvsPPzww4Ujjjii8I9//GOFx9x6662FmpqaQpLCJptsUli8eHGDx7nvUC4qady451BOOuLntQULFjS6f+HChYVDDjmkeJ3bbrutweOuuOKK4jGnnHLKcvunTp1a/BTxpptuutLrQmtU0tip7/hoyifcoT11xLj5uIULFxZ23HHHQpLC2WefXdhggw2aNB78nkM1E3xQKBSWvKla/0J38sknN3jMokWLCltssUUhSWHNNdcs1NXVtcm1m/vmbV1dXWGNNdYoJClsscUWhUWLFjV43Mknn1w878SJE9ukVvi4Sho7hYI3oSgfpRw7H3fooYcWa3n88ceX2+++Q7mopHFTKLjnUD7Kaew88sgjxVr+8z//s8Fj6uvo27dvYfbs2Q0e85Of/KR4nhtvvLFdaoVKGzuCD8pBqcbNBRdcUEhS2GyzzQrz589vUvDh9xyqncXNSZLceuutxe3jjjuuwWNWWWWVHHPMMUmSDz74IPfdd19HlLac++67Lx9++GGSZOTIkStscT322GOL2+PHj++I0uiEKmnsQDkpp7EzbNiw4vaLL7643H73HcpFJY0bKCflNHaWns5k3rx5y+1//vnn8+yzzyZJjjjiiKy66qoNnsc9h45QSWMHykUpxs0rr7yS733ve0mSX//61+nWrVuTnuf3HKqd4IMkyUMPPZQk6dWrV3bccccVHrfnnnsWtx9++OF2r6sh9bUmy9bzcTvttFPxF4VS1Ur1q6SxA+WknMbO/Pnzi9tdunRZbr/7DuWiksYNlJNyGjtjx44tbm+++ebL7W/qPWfdddfN4MGDk7jn0H4qaexAuSjFuDnllFMye/bsfPWrX83QoUOb/Dy/51DtBB8kSfFTRZtuumlqa1e85v3SP2DUP6ejPfPMM8Xtxn7gqa2tzaabbpqkdLVS/Spp7Cztueeeyy677JI111wzPXr0yPrrr5+DDjoo11xzTRYsWFDq8ugEymnsPPDAA8XtLbbYYrn97juUi0oaN0tzz6HUSj123nnnnTzyyCM54YQT8qMf/ShJ0q9fv3zlK19Z7tim3nOW3v/qq69m9uzZbVYv1KuksbO0d999N3vuuWfWWmutdO/ePQMGDMjnPve5/PKXv8ycOXParD5oSEePm7Fjx+b3v/99+vTpkwsuuKBZz/V7DtVO8EHmzZuXd955J0my/vrrN3psnz590qtXryRLfsAuhddeey3JkvR8zTXXbPTYQYMGJUnefvvtZT6ZCG2h0sbO0t58881MnDgxH374YebPn5/p06fnd7/7XUaOHJntt9/eDzO0q3IaO08++WTuvPPOJMk222zT4Bu47juUg0obN0tzz6GUSjV2hg4dmpqamtTU1KR///7Zddddc+WVV6ZQKKRfv34ZP358g/eU+ntOU+qtv+cUCoVlngdtodLGztJmzZqVBx98MO+9917q6uryxhtv5O67786///u/Z/DgwZkwYUKraoQV6ehx8/777+e0005Lkpxzzjnp379/s57v9xyqneCDfPTRR8Xt3r17r/T4+hfmWbNmtVtNjamvtzm1JqWrl+pVaWMnWTKX6N57750LLrggf/7zn/PEE0/kwQcfzIUXXlh84+qZZ57JsGHDMm3atJLVSXUrl7Ezf/78nHjiiVm0aFGSFD9J+HHuO5SDShs3iXsO5aFcxk69//iP/8izzz6bz372sw3ub0697jm0p0obO0lSU1OTT3/60/nRj36Uu+66K3/7298yYcKEXHLJJdl5552TJNOnT8++++6bJ554ol3qpHPr6HFzxhln5M0338xnPvOZnHTSSc1+vt9zqHYr7rmi01h6YbCmLIDUvXv3JMncuXPbrabG1NfbnFqT0tVL9aq0sZMk48aNa/CTHLvvvntOOeWUnHTSSbn66qvz5ptv5rTTTsu4ceM6vkiqXrmMnW9+85uZNGlSkiWL+R1wwAENHue+QzmotHGTuOdQHko1dq666qrMnj07hUIhH3zwQSZNmpT//d//zS9/+cu89NJLufzyy7POOuu0ql73HNpTpY2dJPnZz37W4H2n/k3h//mf/8mPf/zjzJ49OyeeeGImTZqUmpqaVtULS+vIcfPggw/myiuvTG1tbX7961+36N+y33Oodjo+SI8ePYrbdXV1Kz2+vqWtZ8+e7VZTY+rrbU6tSenqpXpV2thJ0mj7ateuXXP55Zdns802S5KMHz8+06dP76DK6EzKYez85Cc/yeWXX54kGTJkSH71q1+t8Fj3HcpBpY2bxD2H8lCqsbPRRhtl6623zjbbbJPdd9893/rWt/LUU09lv/32yx133JEhQ4Y0OD1Vc+p1z6E9VdrYSRq/79TU1ORHP/pR9t577yQpdoNAW+qocTN//vx87WtfS6FQyKmnnpptt922eYX+H7/nUO0EH2S11VYrbjelXa1+4bymtMK1h/p6m1NrUrp6qV6VNnaaora2NieccELx+6UXr4W2Uuqxc8kll+S///u/kyxZxO/3v//9Mq3bH+e+QzmotHHTFO45dIRSj52l9ejRI1dddVVWXXXVvPrqqznzzDOXO6Y59brn0J4qbew01cknn1zcdt+hrXXUuPnRj36UKVOmZNCgQfn+97/fvCKX4vccqp3gg/To0SNrrbVWkqx0Ubz333+/+GJXv7BRR6tfIGr27Nn54IMPGj22foGo/v37L9OWB22h0sZOU2255ZbFbZ++pT2UcuzccMMNOeWUU5IkG2ywQf70pz+lX79+jT7HfYdyUGnjpqncc2hv5fbzWr9+/bLbbrslSW677bYsWLBgmf1LL4a7snrr7zk1NTUrXUQXmqvSxk5Tue/Qnjpq3Jx77rlJkn322Se33357xo4du9xX/blnz55dfOzee+9d5jx+z6HaCT5I8q+b/wsvvJCFCxeu8LjnnnuuuF2/KGVHW/oHlaXr+biFCxfmxRdfTFK6Wql+lTR2mso8t3SEUoyd3/3udznmmGOyePHiDBgwIPfcc0+T3ihy36FcVNK4aSr3HDpCuf281r9//yTJnDlz8s477yyzr6n3nKX3Dxo0qNUdWNCQSho7TeW+Q3vriHFTPzXVVVddlaOOOqrBr/ox8s477xQfO/vssxus9eP1fJzfc6hUgg+SJJ/97GeTLEl5H3/88RUet3QraP2nLTpafa1J462pkyZNKibcpaqV6ldJY6epnnnmmeL2wIEDS1gJ1ayjx84999yTI444IgsXLsxaa62VP/3pT9lkk02aVevH6/k49x3aWyWNm6Zyz6EjlNvPa0t/yvzj04U09Z7zxhtv5Pnnn0/inkP7qaSx01TuO7S3chs3jfF7DtVO8EGS5Etf+lJx+6qrrmrwmMWLF+eaa65JsmTRsGHDhnVEacsZOnRo1lhjjSTJ1VdfnUKh0OBxY8aMKW4ffPDBHVEanVAljZ2mWLhwYa688sri93vssUcJq6GadeTYmTBhQg466KDMnz8/a6yxRv74xz9mq622avLz3XcoF5U0bprCPYeOUk4/r7322mt55JFHkiyZOm7p+eCTZPDgwcVP0954442ZM2dOg+dxz6EjVNLYaapLLrmkuL3nnnu2SW2wtI4YN4VCYaVfG2ywQZIl46X+sfvvv3+Z8/g9h6pXgP+z++67F5IUamtrCxMmTFhu/3nnnVdIUkhSOOuss5bbf9999xX3jxw5ssnXPeuss4rPu++++5r0nFGjRhWfc9555y23f8KECYXa2tpCksKee+7Z5FqgJSpl7Nx7772F999/f4X76+rqCiNHjiye84ADDmhyLdASHTF2nnjiicKaa65ZSFLo1atX4aGHHmpRre47lItKGTfuOZSb9h47U6ZMKdxzzz2N1vDBBx8U60hSGDVqVIPHXXHFFcVjvvGNbyy3/4UXXiisvvrqhSSFTTfdtLBgwYJGrwutUSlj55FHHim8/vrrKzzH4sWLC9/97neL59huu+0KixcvbvS60FKleo9gaRtssEEhSWGDDTZo9Di/51DNalsfnVAtfv7zn2e33XbL3Llzs+++++a///u/M2zYsMydOzdjx47NpZdemmTJp5BOP/30Fl9n6aQ4Sf7+978Xt//whz/kn//8Z/H7TTfddJnWu3pnnHFGfvvb3+b555/PmWeemRdeeCEjRoxIz549c9999+XHP/5xFi5cmJ49e+bCCy9sca3QFJUydq6++uoceOCBOfDAAzN06NBsttlmWX311TNr1qw8/vjjufTSS4ut32uvvXZ+/vOft7hWaIr2HjsvvvhiPve5zxUX6vvhD3+YNdZYI5MnT17hc9Zee+2svfbayz3uvkO5qJRx455DuWnvsfP6669n7733znbbbZcvfelL2XHHHbPuuuumtrY2b7zxRh5++OFcccUVeeONN5IkW2+9df7rv/6rwXONHDkyV155ZR5++OH86le/yhtvvJGTTjopffr0ycSJE/ODH/wgM2fOzCqrrJKLLrootbV+raf9VMrY+cMf/pBzzjknn//85zN8+PBsueWWWXPNNTN//vw89dRTufLKK/Poo48mSVZdddVcdtll1vug3XTUewRtwe85VLVSJy+Ul9/97nfFTw819DV48ODC1KlTG3xuUxPpFZ27oa/GzjN16tTCJz/5yRU+d/XVVy/cfvvtrfwTgaaphLGz9CdrG/vaZpttCv/4xz/a6E8GGteeY+eqq65q1rjJCj5xVc99h3JRCePGPYdy1J5jZ+n9K/vaf//9C2+99Vajtb799tuFIUOGrPAc3bt3L1x22WVt8ccCK1UJY2fpbvjGvj7xiU+0uAMYmqMj3iNoTFM7PgoFv+dQvXw0hGUccMABeeqpp/Lzn/88d955Z1577bV069Ytm266aQ4//PB885vfzKqrrlrqMpMs+UT7E088kV/96le56aab8sILL6Suri6DBg3Kfvvtl1NPPbU4pyG0t0oYO9/+9rez/fbb55FHHskzzzyTt99+O++99166d++eddZZJzvttFMOO+ywHHzwwenSpUtJa6XzqISxU899h3JRCePGPYdy1J5jZ7fddssf//jH/PnPf86kSZPy2muv5c0338ycOXOy+uqrZ6ONNsqnP/3pHHXUUU1aGLZfv36ZMGFCLrvsslx//fV59tlnM3v27AwcODB77713Tj311DZfdwdWpBLGznHHHZd11lknjzzySJ566qm89dZbeffdd1NbW5t+/fplhx12yAEHHJAvf/nL6dGjR0v/KKDJKuHntXp+z6Fa1RQKK1i5BgAAAAAAoMKsUuoCAAAAAAAA2orgAwAAAAAAqBqCDwAAAAAAoGoIPgAAAAAAgKoh+AAAAAAAAKqG4AMAAAAAAKgagg8AAAAAAKBqCD4AAAAAAICqIfgAAAAAAACqhuADAAAAAACoGoIPAAAAAACgagg+AAAAAACAqiH4AAAAAAAAqobgAwAAAAAAqBqCDwAAAAAAoGoIPgAAAAAAgKoh+AAAgAp07LHHpqamJhtuuGGpS0mS1NTUpKamJqNHj15u3/3331/cf//99y+3f/To0cX9AAAArSX4AACAJjr55JOLb9Dfe++9zXru3XffXXzuqaee2k4VAgAAIPgAAIAmOuaYY4rb1157bbOe+5vf/KbB85SzDTfcMDU1NTn22GNLWsfQoUNTU1OToUOHlrQOAACgMgg+AACgiXbbbbdssskmSZJbbrklc+fObdLzZs+enfHjxydJttpqq+y4447tVmOpFAqFFAqFBqe6WpnRo0cXnw8AANBagg8AAGiGr371q0mSmTNn5rbbbmvSc8aNG5fZs2cv83wAAADah+ADAACa4atf/WpxEe6mTndVP83VKquskqOPPrrdagMAAEDwAQAAzbLxxhtnt912S5L88Y9/zFtvvdXo8a+//nruueeeJMlee+2V9dZbr7hv1qxZOeecc/KZz3wmffv2Tffu3bP++uvnsMMOyx133NGqOmfPnp3f/va3OfHEE7P99ttnjTXWSNeuXdO/f//sueee+elPf5pZs2Y1+Nz6NTVeeeWVJMnVV19dXJi9/uvj623UP97Sqa7qn7+0Y489NjU1NXnggQeSJA888MBydWy44YZJkosuuqj42F//+teVXvPQQw9NTU1N+vbtm3nz5jW7ZgAAoHwJPgAAoJnqFydfuHBhxo4d2+ix119/fRYvXrzM85LkiSeeyGabbZbvfOc7+etf/5r3338/dXV1mT59em655ZYccMABOfTQQ1v8pvz++++fESNG5IorrsiTTz6ZmTNnZuHChXnnnXfy4IMP5owzzsi2226b5557rkXnLzdHH310unfvniQZM2ZMo8e+8847uf3225MkX/7yl9OjR4/2Lg8AAOhAgg8AAGimI444ovhmef00VitSv79379455JBDkiTTp0/P3nvvnddffz01NTU57rjj8sc//jGTJk3KNddck+222y7JkrVBjj322BbVuHDhwmyzzTb57ne/m/Hjx+fRRx/NX//61/z2t7/NiBEjssoqq+Tll1/Ol770peXClauuuipPP/10Bg4cmCQ56KCD8vTTTy/zddVVV7Worub40Y9+lKeffjo77bRTkmSnnXZaro677747SdK3b9/in+/YsWMbXXj+uuuuy4IFC5Ikxx9/fDv/XwAAAB2tttQFAABApVljjTVy4IEH5sYbb8ykSZMyZcqUbLbZZssd99RTT+Wpp55KkhxyyCHp1atXkuS0007L+++/nyS57LLLcsIJJxSfs+OOO+aII47IF77whdx333357W9/m5EjR+YLX/hCs2q86qqr8slPfnK5x3fZZZccccQROeGEE/K5z30uU6ZMyXXXXbdMDRtttFGSpGvXrkmSNddcM1tvvXWzrt8W1ltvvay33nrFP7devXo1WseJJ56YG264IR9++GHGjx+fL3/5yw0eVx/abLfddtlhhx3avnAAAKCkdHwAAEALLD1t1Yq6PpZ+vP74119/PePHj0+SfP7zn18mcKjXvXv3XHnllamtXfI5pV/+8pfNrq+h0GNp++yzTw488MAkya233trs85ejYcOGZZNNNkmSFXak/O1vf8uTTz6ZRLcHAABUK8EHAAC0wOc+97mss846SZZMnVQoFJbZv3jx4lx//fVJkvXXXz/Dhg1Lktx///1ZtGhRkjQYetTbcMMNM3z48OWe01Jvv/12pk6dmsmTJxe/+vfvnyTFIKDS1dTUFMOMe++9N9OmTVvumPpApFu3bvnKV77SofUBAAAdQ/ABAAAtUFtbW5xK6Z///GceeuihZfbfc889ef3115MkX/nKV7LKKkt+9J48eXLxmF122aXRa9TvnzNnTl566aVm1/jwww/nyCOPzFprrZW11147gwcPzjbbbFP8uuyyy5IsWey7Whx77LHp0qVLFi9enKuvvnqZffPnzy+GUQcddFDWWmutUpQIAAC0M8EHAAC0UGPTXTU0zVWSvPfee8Xttddeu9Hzr7vuug0+rylGjx6dz372s7nxxhtX+tzGFgKvNAMHDsx+++2XJBkzZswynTi33XZb8c/CNFcAAFC9BB8AANBC22+/fbbZZpskyU033ZT58+cnSWbPnp1x48YlWbJY+ZZbbtng82tqatqlrnvuuSff//73kyQbb7xxLr744jz11FP54IMPsmDBghQKhRQKhYwaNapdrl9qJ554YpLkpZdeyoMPPlh8vH6aq/XXXz/77rtvSWoDAADan+ADAABaob6b44MPPsjtt9+eJBk/fnxmz569zP56ffv2LW6/+eabjZ77jTfeaPB5K1M/hVWfPn3y17/+NV//+tezzTbbZI011igumJ40v4ukUuy///4ZMGBAkn+FHdOnT8/dd9+dJBk5cmRx6jEAAKD6+GkfAABa4Stf+Uq6dOmSJLn22muT/Guaq65du+aoo45a5vitt966uP3oo482eu6JEycmSVZdddVsvPHGTa7pH//4R5Jk2LBhxQXMGzJp0qRGz9NeHSnN1dw6unTpkmOPPTZJcvPNN2fWrFm5+uqrs3jx4tTU1OS4445rhyoBAIByIfgAAIBWGDBgQPbZZ58kye9///tMnjw599xzT5Lk85///HLBw9ChQ4tByZVXXrnC806bNi1/+tOflntOUyxcuDBJil0nDXniiSdWGrz06NEjSYpTeJVKS+o44YQTUlNTk9mzZ+e3v/1txowZkyTZY489sskmm7RHmQAAQJkQfAAAQCvVT2e1YMGCjBgxIosWLVrm8aUNHDgwBx98cJLkrrvuytVXX73cMXV1dTn++OOzYMGCJMk3v/nNZtXzyU9+Mkny0EMP5YUXXlhu/9tvv52vfvWrKz1P/XRRL774YrOu39bq63jppZeWWay8MZtsskmGDh2aJPmf//mfTJ06NYlFzQEAoDMQfAAAQCsdfPDBWW211ZL8a5qpPn365IADDmjw+J/97Gfp06dPkiVvxJ900kn585//nMcffzzXXXdddtlll2LXyBFHHJEvfOELzaqnPnCZPXt29txzz/ziF7/IhAkTMmHChPz0pz/Ndtttl2eeeSaf+cxnGj3PrrvumiR57LHHcs455+TJJ5/MCy+8kBdeeCHTp09vVk2tUV/HW2+9lf/3//5fHn/88WIdr7zyygqfV7/Ief1aKauvvnoOO+yw9i8YAAAoKcEHAAC0Us+ePZd7Q/2II45I9+7dGzx+/fXXzz333JOBAwdm8eLFufzyyzN8+PDstNNOOfroo/P3v/89SXLIIYc02BGyMocddlhxHYvXX389//Ef/5Hddtstu+22W84444y89dZb+dnPfpZ999230fN8/etfLy6q/p3vfCfbb799PvnJT+aTn/xkvvKVrzS7rpYaMWJEcY2TCy+8MDvttFOxjj333HOFzzvkkEOKAVOSHHnkkVl11VXbvV4AAKC0BB8AANAGRo4cucz3DU1ztbRPfepTmTJlSn7yk59kl112yZprrplu3bpl4MCBOeSQQ/K73/0ut9xyS3F9i+a68sor85vf/Ca77757VltttXTv3j0bbLBBvvrVr2bChAk59dRTV3qO9dZbLxMnTswJJ5yQTTfdtMW1tFbv3r2LNW+xxRZNDi969OiRww8/vPi9aa4AAKBzqCk0dZJcAACACrPbbrtlwoQJ2XLLLYvTkAEAANVNxwcAAFCVpkyZkgkTJiTR7QEAAJ2J4AMAAKhK5557bpIlU14de+yxpS0GAADoMLWlLgAAAKAtzJ07N9OnT8+cOXNy6623ZsyYMUmSr33ta1lrrbVKWxwAANBhrPEBAABUhfvvvz/Dhg1b5rFBgwblySefTJ8+fUpUFQAA0NFMdQUAAFSVmpqaDBw4MEcffXQeeughoQcAAHQyOj4AAAAAAICqoeMDAAAAAACoGoIPAAAAAACgagg+AAAAAACAqiH4AAAAAAAAqobgAwAAAAAAqBqCDwAAAAAAoGoIPgAAAAAAgKoh+AAAAAAAAKqG4AMAAAAAAKgagg8AAAAAAKBqCD4AAAAAAICqIfgAAAAAAACqhuADAAAAAACoGoIPAAAAAACgagg+AAAAAACAqiH4AAAAAAAAqobgAwAAAAAAqBqCDwAAAAAAoGr8/ymFtYeVHqJgAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": { "image/png": { "height": 560, "width": 799 } }, "output_type": "display_data" } ], "source": [ "plt.figure()\n", "plt.contourf(sigma_vals, strike_vals, prices['aput'])\n", "plt.axis('tight')\n", "plt.colorbar()\n", "plt.title(\"Asian Put\")\n", "plt.xlabel(\"Volatility\")\n", "plt.ylabel(\"Strike Price\")" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.9" }, "widgets": { "application/vnd.jupyter.widget-state+json": { "state": { "127406256e66446d8a28ff1be9a709e5": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLStyleModel", "state": { "description_width": "", "font_size": null, "text_color": null } }, "1cb55885dde94c6c897d916b31d21ce5": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "1e7128aab3d743238b71a10cea4388c0": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", "state": { "layout": "IPY_MODEL_1cb55885dde94c6c897d916b31d21ce5", "style": "IPY_MODEL_edb2d388f4b84c7f92f5c88491c32605", "value": "100%" } }, "4422801dc7404b8f86c1f0cc62005f1b": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "65adaa88e5cc4a8aa5401d45cef2d2e7": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "ProgressStyleModel", "state": { "description_width": "" } }, "6c1c1b93ed774e14a27f891ba20b7868": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", "state": { "layout": "IPY_MODEL_fb964b63293e4480a883d75e8c1ea218", "style": "IPY_MODEL_127406256e66446d8a28ff1be9a709e5", "value": " 10/10 [00:01<00:00,  9.09engine/s]" } }, "6faf6a37bb8a46bda9d6e2115be68efe": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "8305c682e81c4dfe866ce36602d1d08e": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "FloatProgressModel", "state": { "bar_style": "success", "layout": "IPY_MODEL_4422801dc7404b8f86c1f0cc62005f1b", "max": 10, "style": "IPY_MODEL_65adaa88e5cc4a8aa5401d45cef2d2e7", "value": 10 } }, "edb2d388f4b84c7f92f5c88491c32605": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLStyleModel", "state": { "description_width": "", "font_size": null, "text_color": null } }, "f396267483a54ca9bcda1798d201ae4d": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HBoxModel", "state": { "children": [ "IPY_MODEL_1e7128aab3d743238b71a10cea4388c0", "IPY_MODEL_8305c682e81c4dfe866ce36602d1d08e", "IPY_MODEL_6c1c1b93ed774e14a27f891ba20b7868" ], "layout": "IPY_MODEL_6faf6a37bb8a46bda9d6e2115be68efe" } }, "fb964b63293e4480a883d75e8c1ea218": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} } }, "version_major": 2, "version_minor": 0 } } }, "nbformat": 4, "nbformat_minor": 4 } ipython-ipyparallel-14e3c43/docs/source/examples/Parallel Decorator and map.ipynb000066400000000000000000000051431520071063500301030ustar00rootroot00000000000000{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Load balanced map and parallel function decorator" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import ipyparallel as ipp" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "rc = ipp.Client()\n", "v = rc.load_balanced_view()" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Simple, default map: [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]\n" ] } ], "source": [ "result = v.map(lambda x: 2 * x, range(10))\n", "print(\"Simple, default map: \", list(result))" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Submitted tasks, got ids: ['b21595ef-61f4-4ec3-ac7a-7888c025e492', '5e29335b-526d-4516-b22f-0a4b358fa242', '18cd0bd2-7aad-4340-8c81-9b2e384d73d9', '1ef7ccbc-6790-4479-aa90-c4acb5fc8cc4', '8d2c6d43-6e59-4dcf-9511-70707871aeb1', '58042f85-a7c1-492e-a698-d2655c095424', 'd629bf13-4d8b-4a54-996e-d531306293ea', '79039685-1b02-4aa5-a259-4eb9b8d8a65a', '16ffe6f3-fe82-4610-9ec9-a0a3138313a9', 'a3d9050b-faf2-4fa4-873a-65c81cab4c56']\n", "Using a mapper: [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]\n" ] } ], "source": [ "ar = v.map_async(lambda x: 2 * x, range(10))\n", "print(\"Submitted tasks, got ids: \", ar.msg_ids)\n", "result = ar.get()\n", "print(\"Using a mapper: \", result)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Using a parallel function: [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]\n" ] } ], "source": [ "@v.parallel(block=True)\n", "def f(x):\n", " return 2 * x\n", "\n", "\n", "result = f.map(range(10))\n", "print(\"Using a parallel function: \", result)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.5.1" } }, "nbformat": 4, "nbformat_minor": 0 } ipython-ipyparallel-14e3c43/docs/source/examples/Parallel Magics.ipynb000066400000000000000000011631051520071063500261070ustar00rootroot00000000000000{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "(parallel-magics)=\n", "\n", "# Parallel Magics\n", "\n", "IPython has a few magics to make working with your engines\n", "a bit nicer in IPython, e.g. in a Jupyter notebook.\n", "\n", "These are mainly shortcuts to {meth}`.DirectView.execute`\n", "and {meth}`.AsyncResult.display_outputs` methods, respectively.\n", "\n", "As always, first we start a cluster (or connect to an existing one):" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Starting 4 engines with \n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "6cc56f1a384d4ed286658cdb559c3210", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/4 [00:00\n", " Group the outputs in a particular way. Choices are:\n", " **type**: group outputs of all engines by type\n", " (stdout, stderr, displaypub, etc.). **engine**:\n", " display all output for each engine together.\n", " **order**: like type, but individual displaypub output\n", " from each engine is collated. For example, if multiple\n", " plots are generated by each engine, the first figure\n", " of each engine will be displayed, then the second of\n", " each, etc.\n", " -e group outputs by engine (same as group-outputs=engine)\n", " -r collate outputs in order (same as group-outputs=order)\n", " --local also execute the cell in the local namespace\n", "\u001b[0;31mFile:\u001b[0m ~/dev/ip/parallel/ipyparallel/client/magics.py" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%%px?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Targets\n", "\n", "You can specify where you want the code to run with the `--targets` argument.\n", "This lets you quickly set up different combinations of engines as appropriate.\n", "`--targets accepts slice syntax, so you can specify start, stop, and strides,\n", "just like you would slicing a list:" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[stdout:0] I am even\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "[stdout:2] I am even\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%%px --targets ::2\n", "print(\"I am even\")" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[stdout:1] I am number 1\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%%px --targets 1\n", "print(\"I am number 1\")" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[stdout:0] still 'all' by default\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "[stdout:1] still 'all' by default\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "[stdout:2] still 'all' by default\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "[stdout:3] still 'all' by default\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%%px\n", "print(\"still 'all' by default\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "When setting up your working environment, you might want to do some imports and define some functions _everywhere_, both on engines and here in your local notebook kernel.\n", "That's what `--local` is for:" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "%%px --local\n", "import os\n", "import socket\n", "\n", "import psutil\n", "\n", "pid = os.getpid()\n", "p = psutil.Process()\n", "\n", "\n", "def report_info():\n", " return {\n", " \"hostname\": socket.gethostname(),\n", " \"pid\": os.getpid(),\n", " \"memory\": p.memory_info().rss,\n", " \"cpu\": sum(p.cpu_times()),\n", " }" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'hostname': 'heavy-2.local',\n", " 'pid': 25688,\n", " 'memory': 82870272,\n", " 'cpu': 0.828767104}" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "report_info()" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "\u001b[0;31mOut[0:9]: \u001b[0m\n", "{'hostname': 'heavy-2.local',\n", " 'pid': 25705,\n", " 'memory': 78331904,\n", " 'cpu': 0.500559408}" ] }, "metadata": { "after": null, "completed": null, "data": {}, "engine_id": 0, "engine_uuid": "3b5836d1-d16d81c32917ce2147c20af7", "error": null, "execute_input": "report_info()", "execute_result": { "data": { "text/plain": "{'hostname': 'heavy-2.local',\n 'pid': 25705,\n 'memory': 78331904,\n 'cpu': 0.500559408}" }, "execution_count": 9, "metadata": {} }, "follow": null, "msg_id": null, "outputs": [], "received": null, "started": null, "status": null, "stderr": "", "stdout": "", "submitted": "2024-11-04T10:58:58.531039Z" }, "output_type": "display_data" }, { "data": { "text/plain": [ "\u001b[0;31mOut[1:9]: \u001b[0m\n", "{'hostname': 'heavy-2.local',\n", " 'pid': 25706,\n", " 'memory': 78675968,\n", " 'cpu': 0.50026576}" ] }, "metadata": { "after": null, "completed": null, "data": {}, "engine_id": 1, "engine_uuid": "3bda9160-2b8556074eb4c377b62e6f81", "error": null, "execute_input": "report_info()", "execute_result": { "data": { "text/plain": "{'hostname': 'heavy-2.local',\n 'pid': 25706,\n 'memory': 78675968,\n 'cpu': 0.50026576}" }, "execution_count": 9, "metadata": {} }, "follow": null, "msg_id": null, "outputs": [], "received": null, "started": null, "status": null, "stderr": "", "stdout": "", "submitted": "2024-11-04T10:58:58.531290Z" }, "output_type": "display_data" }, { "data": { "text/plain": [ "\u001b[0;31mOut[2:9]: \u001b[0m\n", "{'hostname': 'heavy-2.local',\n", " 'pid': 25707,\n", " 'memory': 78020608,\n", " 'cpu': 0.501814376}" ] }, "metadata": { "after": null, "completed": null, "data": {}, "engine_id": 2, "engine_uuid": "db223688-6994b7bdbc25d90bddac66e7", "error": null, "execute_input": "report_info()", "execute_result": { "data": { "text/plain": "{'hostname': 'heavy-2.local',\n 'pid': 25707,\n 'memory': 78020608,\n 'cpu': 0.501814376}" }, "execution_count": 9, "metadata": {} }, "follow": null, "msg_id": null, "outputs": [], "received": null, "started": null, "status": null, "stderr": "", "stdout": "", "submitted": "2024-11-04T10:58:58.531514Z" }, "output_type": "display_data" }, { "data": { "text/plain": [ "\u001b[0;31mOut[3:8]: \u001b[0m\n", "{'hostname': 'heavy-2.local',\n", " 'pid': 25711,\n", " 'memory': 78954496,\n", " 'cpu': 0.489563088}" ] }, "metadata": { "after": null, "completed": null, "data": {}, "engine_id": 3, "engine_uuid": "d8b18943-9f945ec05692d14947250666", "error": null, "execute_input": "report_info()", "execute_result": { "data": { "text/plain": "{'hostname': 'heavy-2.local',\n 'pid': 25711,\n 'memory': 78954496,\n 'cpu': 0.489563088}" }, "execution_count": 8, "metadata": {} }, "follow": null, "msg_id": null, "outputs": [], "received": null, "started": null, "status": null, "stderr": "", "stdout": "", "submitted": "2024-11-04T10:58:58.531813Z" }, "output_type": "display_data" } ], "source": [ "%px report_info()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Blocking (or not)\n", "\n", "You don't have to wait for results for every execution.\n", "`%%px --noblock` allows cells to return immediately, without waiting for the result:" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 3.11 ms, sys: 2.61 ms, total: 5.72 ms\n", "Wall time: 6.25 ms\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "%%time\n", "%%px --noblock\n", "import time\n", "time.sleep(2)\n", "pid, time.time()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "But you will notice that this didn't output the result of the last command.\n", "For this, we have `%pxresult`, which waits for and displays the output of the latest request:" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "\u001b[0;31mOut[0:10]: \u001b[0m(25705, 1730717941.915563)" ] }, "metadata": { "after": [], "completed": "2024-11-04T10:59:01.928172Z", "data": {}, "engine_id": 0, "engine_uuid": "3b5836d1-d16d81c32917ce2147c20af7", "error": null, "execute_input": "import time\ntime.sleep(2)\npid, time.time()\n", "execute_result": { "data": { "text/plain": "(25705, 1730717941.915563)" }, "execution_count": 10, "metadata": {} }, "follow": [], "is_broadcast": false, "is_coalescing": false, "msg_id": "dc435629-8bb652d0d09a5733938c7249_25688_36", "outputs": [], "received": "2024-11-04T10:59:01.937149Z", "started": "2024-11-04T10:58:59.910427Z", "status": "ok", "stderr": "", "stdout": "", "submitted": "2024-11-04T10:58:59.896547Z" }, "output_type": "display_data" }, { "data": { "text/plain": [ "\u001b[0;31mOut[1:10]: \u001b[0m(25706, 1730717941.915562)" ] }, "metadata": { "after": [], "completed": "2024-11-04T10:59:01.931585Z", "data": {}, "engine_id": 1, "engine_uuid": "3bda9160-2b8556074eb4c377b62e6f81", "error": null, "execute_input": "import time\ntime.sleep(2)\npid, time.time()\n", "execute_result": { "data": { "text/plain": "(25706, 1730717941.915562)" }, "execution_count": 10, "metadata": {} }, "follow": [], "is_broadcast": false, "is_coalescing": false, "msg_id": "dc435629-8bb652d0d09a5733938c7249_25688_37", "outputs": [], "received": "2024-11-04T10:59:01.938928Z", "started": "2024-11-04T10:58:59.911340Z", "status": "ok", "stderr": "", "stdout": "", "submitted": "2024-11-04T10:58:59.899876Z" }, "output_type": "display_data" }, { "data": { "text/plain": [ "\u001b[0;31mOut[2:10]: \u001b[0m(25707, 1730717941.918869)" ] }, "metadata": { "after": [], "completed": "2024-11-04T10:59:01.931680Z", "data": {}, "engine_id": 2, "engine_uuid": "db223688-6994b7bdbc25d90bddac66e7", "error": null, "execute_input": "import time\ntime.sleep(2)\npid, time.time()\n", "execute_result": { "data": { "text/plain": "(25707, 1730717941.918869)" }, "execution_count": 10, "metadata": {} }, "follow": [], "is_broadcast": false, "is_coalescing": false, "msg_id": "dc435629-8bb652d0d09a5733938c7249_25688_38", "outputs": [], "received": "2024-11-04T10:59:01.937824Z", "started": "2024-11-04T10:58:59.912839Z", "status": "ok", "stderr": "", "stdout": "", "submitted": "2024-11-04T10:58:59.900945Z" }, "output_type": "display_data" }, { "data": { "text/plain": [ "\u001b[0;31mOut[3:9]: \u001b[0m(25711, 1730717941.9218612)" ] }, "metadata": { "after": [], "completed": "2024-11-04T10:59:01.934283Z", "data": {}, "engine_id": 3, "engine_uuid": "d8b18943-9f945ec05692d14947250666", "error": null, "execute_input": "import time\ntime.sleep(2)\npid, time.time()\n", "execute_result": { "data": { "text/plain": "(25711, 1730717941.9218612)" }, "execution_count": 9, "metadata": {} }, "follow": [], "is_broadcast": false, "is_coalescing": false, "msg_id": "dc435629-8bb652d0d09a5733938c7249_25688_39", "outputs": [], "received": "2024-11-04T10:59:01.939921Z", "started": "2024-11-04T10:58:59.915319Z", "status": "ok", "stderr": "", "stdout": "", "submitted": "2024-11-04T10:58:59.901237Z" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 13.5 ms, sys: 5.04 ms, total: 18.5 ms\n", "Wall time: 754 ms\n" ] } ], "source": [ "%time %pxresult" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Configuring defaults with `%pxconfig`\n", "\n", "The `%pxconfig` magic lets you configure the _default_ behavior of the `%px` magics.\n", "`%pxconfig` takes the same arguments as `%%px`, but saves them as the default for future calls to `%px` or `%%px`.\n", "\n", "In a notebook, I would generally suggest using `%pxconfig` at most once to set up your environment,\n", "and use `%%px --options` for cells that have different behavior than the default.\n", "\n", "It is much easier to see what code does and there is less of the dreaded \"hidden notebook state.\"\n", "\n", "`%pxconfig` and other line magics are principally for line-based environments like terminal IPython,\n", "where cell magics are impractical.\n", "\n", "For example, setting the default targets with `%pxconfig`:" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[stdout:1] just 1\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%pxconfig --targets 1\n", "%px print(\"just 1\")" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[stdout:1] 1 and 2\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "[stdout:2] 1 and 2\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%pxconfig --targets 1,2\n", "%px print(\"1 and 2\")" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[stdout:0] back to all\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "[stdout:1] back to all\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "[stdout:2] back to all\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "[stdout:3] back to all\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%pxconfig --targets all\n", "%px print(\"back to all\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Remote parallel magics" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Remember, an IPython engine is IPython, so you can do magics remotely and in parallel as well!" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[stdout:0] Variable Type Data/Info\n", "-----------------------------------\n", "p Process psutil.Process(pid=25705,<...>ing', started='11:58:29')\n", "pid int 25705\n", "psutil module ages/psutil/__init__.py'>\n", "report_info function \n", "socket module ib/python3.11/socket.py'>\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "[stdout:1] Variable Type Data/Info\n", "-----------------------------------\n", "p Process psutil.Process(pid=25706,<...>ing', started='11:58:29')\n", "pid int 25706\n", "psutil module ages/psutil/__init__.py'>\n", "report_info function \n", "socket module ib/python3.11/socket.py'>\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "[stdout:2] Variable Type Data/Info\n", "-----------------------------------\n", "p Process psutil.Process(pid=25707,<...>ing', started='11:58:29')\n", "pid int 25707\n", "psutil module ages/psutil/__init__.py'>\n", "report_info function \n", "socket module ib/python3.11/socket.py'>\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "[stdout:3] Variable Type Data/Info\n", "-----------------------------------\n", "p Process psutil.Process(pid=25711,<...>ing', started='11:58:29')\n", "pid int 25711\n", "psutil module ages/psutil/__init__.py'>\n", "report_info function \n", "socket module ib/python3.11/socket.py'>\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%px %whos" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Output\n", "\n", "IPython Parallel understands the Jupyter display protocol.\n", "When setting up a cluster, it is common for engines to want to know their own id or 'rank' in MPI parlance).\n", "\n", "You can do this with `scatter` and `flatten=True`:" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [], "source": [ "dv = rc[:]\n", "dv.scatter('rank', dv.targets, flatten=True)\n", "dv['stride'] = len(dv)" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[stdout:0] 0 4\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "[stdout:1] 1 4\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "[stdout:2] 2 4\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "[stdout:3] 3 4\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%px print(rank, stride)" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[stdout:0] 0\n", "4\n", "8\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "[stdout:2] 2\n", "6\n", "10\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "[stdout:1] 1\n", "5\n", "9\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "[stdout:3] 3\n", "7\n", "11\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "\u001b[0;31mOut[1:16]: \u001b[0mText(0.5, 1.0, 'Plot 1')" ] }, "metadata": { "after": null, "completed": null, "data": {}, "engine_id": 1, "engine_uuid": "3bda9160-2b8556074eb4c377b62e6f81", "error": null, "execute_input": "%config InlineBackend.figure_format = 'svg'\nimport matplotlib.pyplot as plt\nimport numpy as np\n\nx = np.linspace(0, np.pi, 1000)\nfor n in range(rank, 12, stride): # noqa\n print(n)\n plt.plot(x, np.sin(n * x))\nplt.title(f\"Plot {rank}\") # noqa\n", "execute_result": { "data": { "text/plain": "Text(0.5, 1.0, 'Plot 1')" }, "execution_count": 16, "metadata": {} }, "follow": null, "msg_id": null, "outputs": [], "received": null, "started": null, "status": null, "stderr": "", "stdout": "1\n5\n9\n", "submitted": "2024-11-04T10:59:10.338184Z" }, "output_type": "display_data" }, { "data": { "text/plain": [ "\u001b[0;31mOut[3:13]: \u001b[0mText(0.5, 1.0, 'Plot 3')" ] }, "metadata": { "after": null, "completed": null, "data": {}, "engine_id": 3, "engine_uuid": "d8b18943-9f945ec05692d14947250666", "error": null, "execute_input": "%config InlineBackend.figure_format = 'svg'\nimport matplotlib.pyplot as plt\nimport numpy as np\n\nx = np.linspace(0, np.pi, 1000)\nfor n in range(rank, 12, stride): # noqa\n print(n)\n plt.plot(x, np.sin(n * x))\nplt.title(f\"Plot {rank}\") # noqa\n", "execute_result": { "data": { "text/plain": "Text(0.5, 1.0, 'Plot 3')" }, "execution_count": 13, "metadata": {} }, "follow": null, "msg_id": null, "outputs": [], "received": null, "started": null, "status": null, "stderr": "", "stdout": "3\n7\n11\n", "submitted": "2024-11-04T10:59:10.338552Z" }, "output_type": "display_data" }, { "data": { "text/plain": [ "\u001b[0;31mOut[2:15]: \u001b[0mText(0.5, 1.0, 'Plot 2')" ] }, "metadata": { "after": null, "completed": null, "data": {}, "engine_id": 2, "engine_uuid": "db223688-6994b7bdbc25d90bddac66e7", "error": null, "execute_input": "%config InlineBackend.figure_format = 'svg'\nimport matplotlib.pyplot as plt\nimport numpy as np\n\nx = np.linspace(0, np.pi, 1000)\nfor n in range(rank, 12, stride): # noqa\n print(n)\n plt.plot(x, np.sin(n * x))\nplt.title(f\"Plot {rank}\") # noqa\n", "execute_result": { "data": { "text/plain": "Text(0.5, 1.0, 'Plot 2')" }, "execution_count": 15, "metadata": {} }, "follow": null, "msg_id": null, "outputs": [], "received": null, "started": null, "status": null, "stderr": "", "stdout": "2\n6\n10\n", "submitted": "2024-11-04T10:59:10.338378Z" }, "output_type": "display_data" }, { "data": { "text/plain": [ "\u001b[0;31mOut[0:14]: \u001b[0mText(0.5, 1.0, 'Plot 0')" ] }, "metadata": { "after": null, "completed": null, "data": {}, "engine_id": 0, "engine_uuid": "3b5836d1-d16d81c32917ce2147c20af7", "error": null, "execute_input": "%config InlineBackend.figure_format = 'svg'\nimport matplotlib.pyplot as plt\nimport numpy as np\n\nx = np.linspace(0, np.pi, 1000)\nfor n in range(rank, 12, stride): # noqa\n print(n)\n plt.plot(x, np.sin(n * x))\nplt.title(f\"Plot {rank}\") # noqa\n", "execute_result": { "data": { "text/plain": "Text(0.5, 1.0, 'Plot 0')" }, "execution_count": 14, "metadata": {} }, "follow": null, "msg_id": null, "outputs": [], "received": null, "started": null, "status": null, "stderr": "", "stdout": "0\n4\n8\n", "submitted": "2024-11-04T10:59:10.337693Z" }, "output_type": "display_data" }, { "data": { "text/plain": [ "[output:0]" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/svg+xml": [ "\n", "\n", "\n", " \n", " \n", " \n", " \n", " 2024-11-04T11:59:10.710350\n", " image/svg+xml\n", " \n", " \n", " Matplotlib v3.9.2, https://matplotlib.org/\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n" ], "text/plain": [ "
" ] }, "metadata": { "engine": 0 }, "output_type": "display_data" }, { "data": { "text/plain": [ "[output:2]" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/svg+xml": [ "\n", "\n", "\n", " \n", " \n", " \n", " \n", " 2024-11-04T11:59:10.710398\n", " image/svg+xml\n", " \n", " \n", " Matplotlib v3.9.2, https://matplotlib.org/\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n" ], "text/plain": [ "
" ] }, "metadata": { "engine": 2 }, "output_type": "display_data" }, { "data": { "text/plain": [ "[output:1]" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/svg+xml": [ "\n", "\n", "\n", " \n", " \n", " \n", " \n", " 2024-11-04T11:59:10.710387\n", " image/svg+xml\n", " \n", " \n", " Matplotlib v3.9.2, https://matplotlib.org/\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n" ], "text/plain": [ "
" ] }, "metadata": { "engine": 1 }, "output_type": "display_data" }, { "data": { "text/plain": [ "[output:3]" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/svg+xml": [ "\n", "\n", "\n", " \n", " \n", " \n", " \n", " 2024-11-04T11:59:10.710434\n", " image/svg+xml\n", " \n", " \n", " Matplotlib v3.9.2, https://matplotlib.org/\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n" ], "text/plain": [ "
" ] }, "metadata": { "engine": 3 }, "output_type": "display_data" } ], "source": [ "%%px\n", "%config InlineBackend.figure_format = 'svg'\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "\n", "x = np.linspace(0, np.pi, 1000)\n", "for n in range(rank, 12, stride): # noqa\n", " print(n)\n", " plt.plot(x, np.sin(n * x))\n", "plt.title(f\"Plot {rank}\") # noqa" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "%%px --noblock\n", "import os\n", "import sys\n", "\n", "from IPython.display import HTML, Math, display\n", "\n", "\n", "def generate_output():\n", " \"\"\"function for testing output\n", "\n", " publishes two outputs of each type, and returns something\n", " \"\"\"\n", "\n", " print(\"stdout\")\n", " print(\"stderr\", file=sys.stderr)\n", "\n", " display(HTML(\"HTML\"))\n", "\n", " print(\"stdout2\")\n", " print(\"stderr2\", file=sys.stderr)\n", "\n", " display(Math(r\"\\alpha=\\beta\"))\n", "\n", " return os.getpid()\n", "\n", "\n", "generate_output()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "When we retrieve the result, we can see the outputs" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[stdout:0] \n", "stdout\n", "stdout2\n", "[stdout:1] \n", "stdout\n", "stdout2\n", "[stdout:2] \n", "stdout\n", "stdout2\n", "[stdout:3] \n", "stdout\n", "stdout2\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[stderr:0] \n", "stderr\n", "stderr2\n", "[stderr:1] \n", "stderr\n", "stderr2\n", "[stderr:2] \n", "stderr\n", "stderr2\n", "[stderr:3] \n", "stderr\n", "stderr2\n" ] }, { "data": { "text/plain": [ "[output:0]" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "HTML" ], "text/plain": [ "" ] }, "metadata": { "engine": 0 }, "output_type": "display_data" }, { "data": { "text/latex": [ "$\\displaystyle \\alpha=\\beta$" ], "text/plain": [ "" ] }, "metadata": { "engine": 0 }, "output_type": "display_data" }, { "data": { "text/plain": [ "[output:1]" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "HTML" ], "text/plain": [ "" ] }, "metadata": { "engine": 1 }, "output_type": "display_data" }, { "data": { "text/latex": [ "$\\displaystyle \\alpha=\\beta$" ], "text/plain": [ "" ] }, "metadata": { "engine": 1 }, "output_type": "display_data" }, { "data": { "text/plain": [ "[output:2]" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "HTML" ], "text/plain": [ "" ] }, "metadata": { "engine": 2 }, "output_type": "display_data" }, { "data": { "text/latex": [ "$\\displaystyle \\alpha=\\beta$" ], "text/plain": [ "" ] }, "metadata": { "engine": 2 }, "output_type": "display_data" }, { "data": { "text/plain": [ "[output:3]" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "HTML" ], "text/plain": [ "" ] }, "metadata": { "engine": 3 }, "output_type": "display_data" }, { "data": { "text/latex": [ "$\\displaystyle \\alpha=\\beta$" ], "text/plain": [ "" ] }, "metadata": { "engine": 3 }, "output_type": "display_data" }, { "data": { "text/plain": [ "\u001b[0;31mOut[0:15]: \u001b[0m25705" ] }, "metadata": { "after": [], "completed": "2024-11-04T10:59:11.014407Z", "data": {}, "engine_id": 0, "engine_uuid": "3b5836d1-d16d81c32917ce2147c20af7", "error": null, "execute_input": "import os\nimport sys\n\nfrom IPython.display import HTML, Math, display\n\n\ndef generate_output():\n \"\"\"function for testing output\n\n publishes two outputs of each type, and returns something\n \"\"\"\n\n print(\"stdout\")\n print(\"stderr\", file=sys.stderr)\n\n display(HTML(\"HTML\"))\n\n print(\"stdout2\")\n print(\"stderr2\", file=sys.stderr)\n\n display(Math(r\"\\alpha=\\beta\"))\n\n return os.getpid()\n\ngenerate_output()\n", "execute_result": { "data": { "text/plain": "25705" }, "execution_count": 15, "metadata": {} }, "follow": [], "is_broadcast": false, "is_coalescing": false, "msg_id": "dc435629-8bb652d0d09a5733938c7249_25688_67", "outputs": [ { "data": { "text/html": "HTML", "text/plain": "" }, "metadata": {}, "transient": {} }, { "data": { "text/latex": "$\\displaystyle \\alpha=\\beta$", "text/plain": "" }, "metadata": {}, "transient": {} } ], "received": "2024-11-04T10:59:11.016530Z", "started": "2024-11-04T10:59:11.001550Z", "status": "ok", "stderr": "stderr\nstderr2\n", "stdout": "stdout\nstdout2\n", "submitted": "2024-11-04T10:59:10.988225Z" }, "output_type": "display_data" }, { "data": { "text/plain": [ "\u001b[0;31mOut[1:17]: \u001b[0m25706" ] }, "metadata": { "after": [], "completed": "2024-11-04T10:59:11.015371Z", "data": {}, "engine_id": 1, "engine_uuid": "3bda9160-2b8556074eb4c377b62e6f81", "error": null, "execute_input": "import os\nimport sys\n\nfrom IPython.display import HTML, Math, display\n\n\ndef generate_output():\n \"\"\"function for testing output\n\n publishes two outputs of each type, and returns something\n \"\"\"\n\n print(\"stdout\")\n print(\"stderr\", file=sys.stderr)\n\n display(HTML(\"HTML\"))\n\n print(\"stdout2\")\n print(\"stderr2\", file=sys.stderr)\n\n display(Math(r\"\\alpha=\\beta\"))\n\n return os.getpid()\n\ngenerate_output()\n", "execute_result": { "data": { "text/plain": "25706" }, "execution_count": 17, "metadata": {} }, "follow": [], "is_broadcast": false, "is_coalescing": false, "msg_id": "dc435629-8bb652d0d09a5733938c7249_25688_68", "outputs": [ { "data": { "text/html": "HTML", "text/plain": "" }, "metadata": {}, "transient": {} }, { "data": { "text/latex": "$\\displaystyle \\alpha=\\beta$", "text/plain": "" }, "metadata": {}, "transient": {} } ], "received": "2024-11-04T10:59:11.017455Z", "started": "2024-11-04T10:59:11.003764Z", "status": "ok", "stderr": "stderr\nstderr2\n", "stdout": "stdout\nstdout2\n", "submitted": "2024-11-04T10:59:10.988672Z" }, "output_type": "display_data" }, { "data": { "text/plain": [ "\u001b[0;31mOut[2:16]: \u001b[0m25707" ] }, "metadata": { "after": [], "completed": "2024-11-04T10:59:11.014525Z", "data": {}, "engine_id": 2, "engine_uuid": "db223688-6994b7bdbc25d90bddac66e7", "error": null, "execute_input": "import os\nimport sys\n\nfrom IPython.display import HTML, Math, display\n\n\ndef generate_output():\n \"\"\"function for testing output\n\n publishes two outputs of each type, and returns something\n \"\"\"\n\n print(\"stdout\")\n print(\"stderr\", file=sys.stderr)\n\n display(HTML(\"HTML\"))\n\n print(\"stdout2\")\n print(\"stderr2\", file=sys.stderr)\n\n display(Math(r\"\\alpha=\\beta\"))\n\n return os.getpid()\n\ngenerate_output()\n", "execute_result": { "data": { "text/plain": "25707" }, "execution_count": 16, "metadata": {} }, "follow": [], "is_broadcast": false, "is_coalescing": false, "msg_id": "dc435629-8bb652d0d09a5733938c7249_25688_69", "outputs": [ { "data": { "text/html": "HTML", "text/plain": "" }, "metadata": {}, "transient": {} }, { "data": { "text/latex": "$\\displaystyle \\alpha=\\beta$", "text/plain": "" }, "metadata": {}, "transient": {} } ], "received": "2024-11-04T10:59:11.017012Z", "started": "2024-11-04T10:59:11.008010Z", "status": "ok", "stderr": "stderr\nstderr2\n", "stdout": "stdout\nstdout2\n", "submitted": "2024-11-04T10:59:10.988885Z" }, "output_type": "display_data" }, { "data": { "text/plain": [ "\u001b[0;31mOut[3:14]: \u001b[0m25711" ] }, "metadata": { "after": [], "completed": "2024-11-04T10:59:11.016214Z", "data": {}, "engine_id": 3, "engine_uuid": "d8b18943-9f945ec05692d14947250666", "error": null, "execute_input": "import os\nimport sys\n\nfrom IPython.display import HTML, Math, display\n\n\ndef generate_output():\n \"\"\"function for testing output\n\n publishes two outputs of each type, and returns something\n \"\"\"\n\n print(\"stdout\")\n print(\"stderr\", file=sys.stderr)\n\n display(HTML(\"HTML\"))\n\n print(\"stdout2\")\n print(\"stderr2\", file=sys.stderr)\n\n display(Math(r\"\\alpha=\\beta\"))\n\n return os.getpid()\n\ngenerate_output()\n", "execute_result": { "data": { "text/plain": "25711" }, "execution_count": 14, "metadata": {} }, "follow": [], "is_broadcast": false, "is_coalescing": false, "msg_id": "dc435629-8bb652d0d09a5733938c7249_25688_70", "outputs": [ { "data": { "text/html": "HTML", "text/plain": "" }, "metadata": {}, "transient": {} }, { "data": { "text/latex": "$\\displaystyle \\alpha=\\beta$", "text/plain": "" }, "metadata": {}, "transient": {} } ], "received": "2024-11-04T10:59:11.017873Z", "started": "2024-11-04T10:59:11.009096Z", "status": "ok", "stderr": "stderr\nstderr2\n", "stdout": "stdout\nstdout2\n", "submitted": "2024-11-04T10:59:10.989072Z" }, "output_type": "display_data" } ], "source": [ "%pxresult" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`%%px` also lets you choose some amount of the grouping of the outputs with `--group-outputs`:\n", "\n", "The choices are:\n", "\n", "* `type` - where stdout of each engine is displayed, then stderr, then rich output, etc. (the default)\n", "* `engine` - all of an engine's output is collected together\n", "* `order` - same as `type`, but individual displaypub outputs are interleaved.\n", " That is, it will output the first plot from each engine, then the second from each,\n", " etc.\n", "\n", "```{seealso}\n", "{meth}`.AsyncResult.display_outputs` for the grouping options.\n", "```\n" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[stdout:0] stdout\n", "stdout2\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "[stderr:0] stderr\n", "stderr2\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "[stdout:2] stdout\n", "stdout2\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "[stdout:1] stdout\n", "stdout2\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "[output:0]" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "HTML" ], "text/plain": [ "" ] }, "metadata": { "engine": 0 }, "output_type": "display_data" }, { "data": { "text/plain": [ "[stderr:2] stderr\n", "stderr2\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "[stderr:1] stderr\n", "stderr2\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "[output:2]" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "HTML" ], "text/plain": [ "" ] }, "metadata": { "engine": 2 }, "output_type": "display_data" }, { "data": { "text/plain": [ "[output:1]" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "HTML" ], "text/plain": [ "" ] }, "metadata": { "engine": 1 }, "output_type": "display_data" }, { "data": { "text/plain": [ "[stdout:3] stdout\n", "stdout2\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "[stderr:3] stderr\n", "stderr2\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "[output:0]" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/latex": [ "$\\displaystyle \\alpha=\\beta$" ], "text/plain": [ "" ] }, "metadata": { "engine": 0 }, "output_type": "display_data" }, { "data": { "text/plain": [ "[output:3]" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "HTML" ], "text/plain": [ "" ] }, "metadata": { "engine": 3 }, "output_type": "display_data" }, { "data": { "text/plain": [ "\u001b[0;31mOut[0:16]: \u001b[0m25705" ] }, "metadata": { "after": [], "completed": "2024-11-04T10:59:33.222476Z", "data": {}, "engine_id": 0, "engine_uuid": "3b5836d1-d16d81c32917ce2147c20af7", "error": null, "execute_input": "\ngenerate_output()\n", "execute_result": { "data": { "text/plain": "25705" }, "execution_count": 16, "metadata": {} }, "follow": [], "is_broadcast": false, "is_coalescing": false, "msg_id": "dc435629-8bb652d0d09a5733938c7249_25688_71", "outputs": [ { "data": { "text/html": "HTML", "text/plain": "" }, "metadata": {}, "transient": {} }, { "data": { "text/latex": "$\\displaystyle \\alpha=\\beta$", "text/plain": "" }, "metadata": {}, "transient": {} } ], "received": "2024-11-04T10:59:33.225924Z", "started": "2024-11-04T10:59:33.214730Z", "status": "ok", "stderr": "stderr\nstderr2\n", "stdout": "stdout\nstdout2\n", "submitted": "2024-11-04T10:59:33.205767Z" }, "output_type": "display_data" }, { "data": { "text/plain": [ "[output:2]" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/latex": [ "$\\displaystyle \\alpha=\\beta$" ], "text/plain": [ "" ] }, "metadata": { "engine": 2 }, "output_type": "display_data" }, { "data": { "text/plain": [ "[output:1]" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/latex": [ "$\\displaystyle \\alpha=\\beta$" ], "text/plain": [ "" ] }, "metadata": { "engine": 1 }, "output_type": "display_data" }, { "data": { "text/plain": [ "\u001b[0;31mOut[2:17]: \u001b[0m25707" ] }, "metadata": { "after": [], "completed": "2024-11-04T10:59:33.222977Z", "data": {}, "engine_id": 2, "engine_uuid": "db223688-6994b7bdbc25d90bddac66e7", "error": null, "execute_input": "\ngenerate_output()\n", "execute_result": { "data": { "text/plain": "25707" }, "execution_count": 17, "metadata": {} }, "follow": [], "is_broadcast": false, "is_coalescing": false, "msg_id": "dc435629-8bb652d0d09a5733938c7249_25688_73", "outputs": [ { "data": { "text/html": "HTML", "text/plain": "" }, "metadata": {}, "transient": {} }, { "data": { "text/latex": "$\\displaystyle \\alpha=\\beta$", "text/plain": "" }, "metadata": {}, "transient": {} } ], "received": "2024-11-04T10:59:33.226441Z", "started": "2024-11-04T10:59:33.216259Z", "status": "ok", "stderr": "stderr\nstderr2\n", "stdout": "stdout\nstdout2\n", "submitted": "2024-11-04T10:59:33.206444Z" }, "output_type": "display_data" }, { "data": { "text/plain": [ "\u001b[0;31mOut[1:18]: \u001b[0m25706" ] }, "metadata": { "after": [], "completed": "2024-11-04T10:59:33.223382Z", "data": {}, "engine_id": 1, "engine_uuid": "3bda9160-2b8556074eb4c377b62e6f81", "error": null, "execute_input": "\ngenerate_output()\n", "execute_result": { "data": { "text/plain": "25706" }, "execution_count": 18, "metadata": {} }, "follow": [], "is_broadcast": false, "is_coalescing": false, "msg_id": "dc435629-8bb652d0d09a5733938c7249_25688_72", "outputs": [ { "data": { "text/html": "HTML", "text/plain": "" }, "metadata": {}, "transient": {} }, { "data": { "text/latex": "$\\displaystyle \\alpha=\\beta$", "text/plain": "" }, "metadata": {}, "transient": {} } ], "received": "2024-11-04T10:59:33.227627Z", "started": "2024-11-04T10:59:33.216035Z", "status": "ok", "stderr": "stderr\nstderr2\n", "stdout": "stdout\nstdout2\n", "submitted": "2024-11-04T10:59:33.206258Z" }, "output_type": "display_data" }, { "data": { "text/plain": [ "[output:3]" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/latex": [ "$\\displaystyle \\alpha=\\beta$" ], "text/plain": [ "" ] }, "metadata": { "engine": 3 }, "output_type": "display_data" }, { "data": { "text/plain": [ "\u001b[0;31mOut[3:15]: \u001b[0m25711" ] }, "metadata": { "after": [], "completed": "2024-11-04T10:59:33.224117Z", "data": {}, "engine_id": 3, "engine_uuid": "d8b18943-9f945ec05692d14947250666", "error": null, "execute_input": "\ngenerate_output()\n", "execute_result": { "data": { "text/plain": "25711" }, "execution_count": 15, "metadata": {} }, "follow": [], "is_broadcast": false, "is_coalescing": false, "msg_id": "dc435629-8bb652d0d09a5733938c7249_25688_74", "outputs": [ { "data": { "text/html": "HTML", "text/plain": "" }, "metadata": {}, "transient": {} }, { "data": { "text/latex": "$\\displaystyle \\alpha=\\beta$", "text/plain": "" }, "metadata": {}, "transient": {} } ], "received": "2024-11-04T10:59:33.228377Z", "started": "2024-11-04T10:59:33.219181Z", "status": "ok", "stderr": "stderr\nstderr2\n", "stdout": "stdout\nstdout2\n", "submitted": "2024-11-04T10:59:33.206615Z" }, "output_type": "display_data" } ], "source": [ "%%px --group-outputs=engine\n", "\n", "generate_output()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "When you specify 'order', then individual display outputs (e.g. plots) will be interleaved.\n", "\n", "\n", "`%pxresult` calls {meth}`.AsyncResult.display_outputs` on the most recent request.\n", "It accepts the same output-grouping arguments as %%px, so you can use it to view\n", "a result in different ways:" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[stdout:0] \n", "stdout\n", "stdout2\n", "[stdout:1] \n", "stdout\n", "stdout2\n", "[stdout:2] \n", "stdout\n", "stdout2\n", "[stdout:3] \n", "stdout\n", "stdout2\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[stderr:0] \n", "stderr\n", "stderr2\n", "[stderr:1] \n", "stderr\n", "stderr2\n", "[stderr:2] \n", "stderr\n", "stderr2\n", "[stderr:3] \n", "stderr\n", "stderr2\n" ] }, { "data": { "text/plain": [ "[output:0]" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "HTML" ], "text/plain": [ "" ] }, "metadata": { "engine": 0 }, "output_type": "display_data" }, { "data": { "text/plain": [ "[output:1]" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "HTML" ], "text/plain": [ "" ] }, "metadata": { "engine": 1 }, "output_type": "display_data" }, { "data": { "text/plain": [ "[output:2]" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "HTML" ], "text/plain": [ "" ] }, "metadata": { "engine": 2 }, "output_type": "display_data" }, { "data": { "text/plain": [ "[output:3]" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "HTML" ], "text/plain": [ "" ] }, "metadata": { "engine": 3 }, "output_type": "display_data" }, { "data": { "text/plain": [ "[output:0]" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/latex": [ "$\\displaystyle \\alpha=\\beta$" ], "text/plain": [ "" ] }, "metadata": { "engine": 0 }, "output_type": "display_data" }, { "data": { "text/plain": [ "[output:1]" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/latex": [ "$\\displaystyle \\alpha=\\beta$" ], "text/plain": [ "" ] }, "metadata": { "engine": 1 }, "output_type": "display_data" }, { "data": { "text/plain": [ "[output:2]" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/latex": [ "$\\displaystyle \\alpha=\\beta$" ], "text/plain": [ "" ] }, "metadata": { "engine": 2 }, "output_type": "display_data" }, { "data": { "text/plain": [ "[output:3]" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/latex": [ "$\\displaystyle \\alpha=\\beta$" ], "text/plain": [ "" ] }, "metadata": { "engine": 3 }, "output_type": "display_data" }, { "data": { "text/plain": [ "\u001b[0;31mOut[0:16]: \u001b[0m25705" ] }, "metadata": { "after": [], "completed": "2024-11-04T10:59:33.222476Z", "data": {}, "engine_id": 0, "engine_uuid": "3b5836d1-d16d81c32917ce2147c20af7", "error": null, "execute_input": "\ngenerate_output()\n", "execute_result": { "data": { "text/plain": "25705" }, "execution_count": 16, "metadata": {} }, "follow": [], "is_broadcast": false, "is_coalescing": false, "msg_id": "dc435629-8bb652d0d09a5733938c7249_25688_71", "outputs": [ { "data": { "text/html": "HTML", "text/plain": "" }, "metadata": {}, "transient": {} }, { "data": { "text/latex": "$\\displaystyle \\alpha=\\beta$", "text/plain": "" }, "metadata": {}, "transient": {} } ], "received": "2024-11-04T10:59:33.225924Z", "started": "2024-11-04T10:59:33.214730Z", "status": "ok", "stderr": "stderr\nstderr2\n", "stdout": "stdout\nstdout2\n", "submitted": "2024-11-04T10:59:33.205767Z" }, "output_type": "display_data" }, { "data": { "text/plain": [ "\u001b[0;31mOut[1:18]: \u001b[0m25706" ] }, "metadata": { "after": [], "completed": "2024-11-04T10:59:33.223382Z", "data": {}, "engine_id": 1, "engine_uuid": "3bda9160-2b8556074eb4c377b62e6f81", "error": null, "execute_input": "\ngenerate_output()\n", "execute_result": { "data": { "text/plain": "25706" }, "execution_count": 18, "metadata": {} }, "follow": [], "is_broadcast": false, "is_coalescing": false, "msg_id": "dc435629-8bb652d0d09a5733938c7249_25688_72", "outputs": [ { "data": { "text/html": "HTML", "text/plain": "" }, "metadata": {}, "transient": {} }, { "data": { "text/latex": "$\\displaystyle \\alpha=\\beta$", "text/plain": "" }, "metadata": {}, "transient": {} } ], "received": "2024-11-04T10:59:33.227627Z", "started": "2024-11-04T10:59:33.216035Z", "status": "ok", "stderr": "stderr\nstderr2\n", "stdout": "stdout\nstdout2\n", "submitted": "2024-11-04T10:59:33.206258Z" }, "output_type": "display_data" }, { "data": { "text/plain": [ "\u001b[0;31mOut[2:17]: \u001b[0m25707" ] }, "metadata": { "after": [], "completed": "2024-11-04T10:59:33.222977Z", "data": {}, "engine_id": 2, "engine_uuid": "db223688-6994b7bdbc25d90bddac66e7", "error": null, "execute_input": "\ngenerate_output()\n", "execute_result": { "data": { "text/plain": "25707" }, "execution_count": 17, "metadata": {} }, "follow": [], "is_broadcast": false, "is_coalescing": false, "msg_id": "dc435629-8bb652d0d09a5733938c7249_25688_73", "outputs": [ { "data": { "text/html": "HTML", "text/plain": "" }, "metadata": {}, "transient": {} }, { "data": { "text/latex": "$\\displaystyle \\alpha=\\beta$", "text/plain": "" }, "metadata": {}, "transient": {} } ], "received": "2024-11-04T10:59:33.226441Z", "started": "2024-11-04T10:59:33.216259Z", "status": "ok", "stderr": "stderr\nstderr2\n", "stdout": "stdout\nstdout2\n", "submitted": "2024-11-04T10:59:33.206444Z" }, "output_type": "display_data" }, { "data": { "text/plain": [ "\u001b[0;31mOut[3:15]: \u001b[0m25711" ] }, "metadata": { "after": [], "completed": "2024-11-04T10:59:33.224117Z", "data": {}, "engine_id": 3, "engine_uuid": "d8b18943-9f945ec05692d14947250666", "error": null, "execute_input": "\ngenerate_output()\n", "execute_result": { "data": { "text/plain": "25711" }, "execution_count": 15, "metadata": {} }, "follow": [], "is_broadcast": false, "is_coalescing": false, "msg_id": "dc435629-8bb652d0d09a5733938c7249_25688_74", "outputs": [ { "data": { "text/html": "HTML", "text/plain": "" }, "metadata": {}, "transient": {} }, { "data": { "text/latex": "$\\displaystyle \\alpha=\\beta$", "text/plain": "" }, "metadata": {}, "transient": {} } ], "received": "2024-11-04T10:59:33.228377Z", "started": "2024-11-04T10:59:33.219181Z", "status": "ok", "stderr": "stderr\nstderr2\n", "stdout": "stdout\nstdout2\n", "submitted": "2024-11-04T10:59:33.206615Z" }, "output_type": "display_data" } ], "source": [ "%pxresult --group-outputs=order" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Magics for multiple views\n", "\n", "All of the parallel magics are associated with a particular {class}`~.DirectView` object.\n", "You can change the active view by calling the {meth}`~.DirectView.activate` method\n", "on any view." ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "even = rc[::2]\n", "even.activate()\n", "%px print(\"hi\")" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[stdout:2] hi\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "[stdout:0] hi\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "even.block = True\n", "%px print(\"hi\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "When activating a View, you can also specify a _suffix_, so that a whole different\n", "set of magics are associated with that view, without replacing the existing ones.\n", "This way, you can also have more than one set of parallel magics registered at a time.\n", "\n", "Let's restore the default magics DirectView and add activate a new set of magics one for a single engine." ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [], "source": [ "rc.activate() # restore default for %px\n", "e0 = rc[0]\n", "e0.block = True\n", "e0.activate(suffix='0')" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[stdout:0] stdout\n", "stdout2\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "[stderr:0] stderr\n", "stderr2\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "[output:0]" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "HTML" ], "text/plain": [ "" ] }, "metadata": { "engine": 0 }, "output_type": "display_data" }, { "data": { "text/plain": [ "[output:0]" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/latex": [ "$\\displaystyle \\alpha=\\beta$" ], "text/plain": [ "" ] }, "metadata": { "engine": 0 }, "output_type": "display_data" }, { "data": { "text/plain": [ "\u001b[0;31mOut[0:19]: \u001b[0m25705" ] }, "metadata": { "after": [], "completed": "2024-11-04T10:59:52.046818Z", "data": {}, "engine_id": 0, "engine_uuid": "3b5836d1-d16d81c32917ce2147c20af7", "error": null, "execute_input": "generate_output()", "execute_result": { "data": { "text/plain": "25705" }, "execution_count": 19, "metadata": {} }, "follow": [], "is_broadcast": false, "is_coalescing": false, "msg_id": "dc435629-8bb652d0d09a5733938c7249_25688_79", "outputs": [ { "data": { "text/html": "HTML", "text/plain": "" }, "metadata": {}, "transient": {} }, { "data": { "text/latex": "$\\displaystyle \\alpha=\\beta$", "text/plain": "" }, "metadata": {}, "transient": {} } ], "received": "2024-11-04T10:59:52.048898Z", "started": "2024-11-04T10:59:52.035693Z", "status": "ok", "stderr": "stderr\nstderr2\n", "stdout": "stdout\nstdout2\n", "submitted": "2024-11-04T10:59:52.026609Z" }, "output_type": "display_data" } ], "source": [ "%px0 generate_output()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The default `%px` is still on all engines:" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[stdout:0] stdout\n", "stdout2\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "[stdout:2] stdout\n", "stdout2\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "[stderr:0] stderr\n", "stderr2\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "[stderr:2] stderr\n", "stderr2\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "[stdout:1] stdout\n", "stdout2\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "[output:0]" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "HTML" ], "text/plain": [ "" ] }, "metadata": { "engine": 0 }, "output_type": "display_data" }, { "data": { "text/plain": [ "[output:2]" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "HTML" ], "text/plain": [ "" ] }, "metadata": { "engine": 2 }, "output_type": "display_data" }, { "data": { "text/plain": [ "[stdout:3] stdout\n", "stdout2\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "[stderr:1] stderr\n", "stderr2\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "[stderr:3] stderr\n", "stderr2\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "[output:1]" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "HTML" ], "text/plain": [ "" ] }, "metadata": { "engine": 1 }, "output_type": "display_data" }, { "data": { "text/plain": [ "[output:3]" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "HTML" ], "text/plain": [ "" ] }, "metadata": { "engine": 3 }, "output_type": "display_data" }, { "data": { "text/plain": [ "[output:2]" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/latex": [ "$\\displaystyle \\alpha=\\beta$" ], "text/plain": [ "" ] }, "metadata": { "engine": 2 }, "output_type": "display_data" }, { "data": { "text/plain": [ "[output:0]" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/latex": [ "$\\displaystyle \\alpha=\\beta$" ], "text/plain": [ "" ] }, "metadata": { "engine": 0 }, "output_type": "display_data" }, { "data": { "text/plain": [ "[output:1]" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/latex": [ "$\\displaystyle \\alpha=\\beta$" ], "text/plain": [ "" ] }, "metadata": { "engine": 1 }, "output_type": "display_data" }, { "data": { "text/plain": [ "\u001b[0;31mOut[2:20]: \u001b[0m25707" ] }, "metadata": { "after": [], "completed": "2024-11-04T10:59:58.874298Z", "data": {}, "engine_id": 2, "engine_uuid": "db223688-6994b7bdbc25d90bddac66e7", "error": null, "execute_input": "generate_output()", "execute_result": { "data": { "text/plain": "25707" }, "execution_count": 20, "metadata": {} }, "follow": [], "is_broadcast": false, "is_coalescing": false, "msg_id": "dc435629-8bb652d0d09a5733938c7249_25688_82", "outputs": [ { "data": { "text/html": "HTML", "text/plain": "" }, "metadata": {}, "transient": {} }, { "data": { "text/latex": "$\\displaystyle \\alpha=\\beta$", "text/plain": "" }, "metadata": {}, "transient": {} } ], "received": "2024-11-04T10:59:58.878013Z", "started": "2024-11-04T10:59:58.866480Z", "status": "ok", "stderr": "stderr\nstderr2\n", "stdout": "stdout\nstdout2\n", "submitted": "2024-11-04T10:59:58.853554Z" }, "output_type": "display_data" }, { "data": { "text/plain": [ "\u001b[0;31mOut[0:20]: \u001b[0m25705" ] }, "metadata": { "after": [], "completed": "2024-11-04T10:59:58.874794Z", "data": {}, "engine_id": 0, "engine_uuid": "3b5836d1-d16d81c32917ce2147c20af7", "error": null, "execute_input": "generate_output()", "execute_result": { "data": { "text/plain": "25705" }, "execution_count": 20, "metadata": {} }, "follow": [], "is_broadcast": false, "is_coalescing": false, "msg_id": "dc435629-8bb652d0d09a5733938c7249_25688_80", "outputs": [ { "data": { "text/html": "HTML", "text/plain": "" }, "metadata": {}, "transient": {} }, { "data": { "text/latex": "$\\displaystyle \\alpha=\\beta$", "text/plain": "" }, "metadata": {}, "transient": {} } ], "received": "2024-11-04T10:59:58.878713Z", "started": "2024-11-04T10:59:58.863897Z", "status": "ok", "stderr": "stderr\nstderr2\n", "stdout": "stdout\nstdout2\n", "submitted": "2024-11-04T10:59:58.852885Z" }, "output_type": "display_data" }, { "data": { "text/plain": [ "\u001b[0;31mOut[1:19]: \u001b[0m25706" ] }, "metadata": { "after": [], "completed": "2024-11-04T10:59:58.875032Z", "data": {}, "engine_id": 1, "engine_uuid": "3bda9160-2b8556074eb4c377b62e6f81", "error": null, "execute_input": "generate_output()", "execute_result": { "data": { "text/plain": "25706" }, "execution_count": 19, "metadata": {} }, "follow": [], "is_broadcast": false, "is_coalescing": false, "msg_id": "dc435629-8bb652d0d09a5733938c7249_25688_81", "outputs": [ { "data": { "text/html": "HTML", "text/plain": "" }, "metadata": {}, "transient": {} }, { "data": { "text/latex": "$\\displaystyle \\alpha=\\beta$", "text/plain": "" }, "metadata": {}, "transient": {} } ], "received": "2024-11-04T10:59:58.879919Z", "started": "2024-11-04T10:59:58.866506Z", "status": "ok", "stderr": "stderr\nstderr2\n", "stdout": "stdout\nstdout2\n", "submitted": "2024-11-04T10:59:58.853329Z" }, "output_type": "display_data" }, { "data": { "text/plain": [ "[output:3]" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/latex": [ "$\\displaystyle \\alpha=\\beta$" ], "text/plain": [ "" ] }, "metadata": { "engine": 3 }, "output_type": "display_data" }, { "data": { "text/plain": [ "\u001b[0;31mOut[3:16]: \u001b[0m25711" ] }, "metadata": { "after": [], "completed": "2024-11-04T10:59:58.876632Z", "data": {}, "engine_id": 3, "engine_uuid": "d8b18943-9f945ec05692d14947250666", "error": null, "execute_input": "generate_output()", "execute_result": { "data": { "text/plain": "25711" }, "execution_count": 16, "metadata": {} }, "follow": [], "is_broadcast": false, "is_coalescing": false, "msg_id": "dc435629-8bb652d0d09a5733938c7249_25688_83", "outputs": [ { "data": { "text/html": "HTML", "text/plain": "" }, "metadata": {}, "transient": {} }, { "data": { "text/latex": "$\\displaystyle \\alpha=\\beta$", "text/plain": "" }, "metadata": {}, "transient": {} } ], "received": "2024-11-04T10:59:58.880366Z", "started": "2024-11-04T10:59:58.870708Z", "status": "ok", "stderr": "stderr\nstderr2\n", "stdout": "stdout\nstdout2\n", "submitted": "2024-11-04T10:59:58.853742Z" }, "output_type": "display_data" } ], "source": [ "%px generate_output()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For convenience, the {class}`~.Client` has a {meth}`~.Client.activate` method as well,\n", "which creates a DirectView with `targets='all', block=True`, activates it, and returns the new View.\n", "\n", "The initial magics registered when you create a Client for the first time are the result of a call to\n", "{meth}`rc.activate` with no arguments." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Parallel Exceptions" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "When you raise exceptions with the parallel exception,\n", "the CompositeError raised locally will display your remote traceback." ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "tags": [ "raises-exception" ] }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "[1:execute]\n", "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\n", "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)\n", "Cell \u001b[0;32mIn[20], line 3\u001b[0m\n", "\u001b[1;32m 1\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mnumpy\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mrandom\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m random\n", "\u001b[0;32m----> 3\u001b[0m A \u001b[38;5;241m=\u001b[39m \u001b[43mrandom\u001b[49m\u001b[43m(\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m100\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m100\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43minvalid shape\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n", "\n", "File \u001b[0;32mnumpy/random/mtrand.pyx:450\u001b[0m, in \u001b[0;36mnumpy.random.mtrand.RandomState.random\u001b[0;34m()\u001b[0m\n", "\n", "File \u001b[0;32mnumpy/random/mtrand.pyx:441\u001b[0m, in \u001b[0;36mnumpy.random.mtrand.RandomState.random_sample\u001b[0;34m()\u001b[0m\n", "\n", "File \u001b[0;32m_common.pyx:312\u001b[0m, in \u001b[0;36mnumpy.random._common.double_fill\u001b[0;34m()\u001b[0m\n", "\n", "\u001b[0;31mTypeError\u001b[0m: 'str' object cannot be interpreted as an integer\n", "[3:execute]\n", "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\n", "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)\n", "Cell \u001b[0;32mIn[17], line 3\u001b[0m\n", "\u001b[1;32m 1\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mnumpy\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mrandom\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m random\n", "\u001b[0;32m----> 3\u001b[0m A \u001b[38;5;241m=\u001b[39m \u001b[43mrandom\u001b[49m\u001b[43m(\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m100\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m100\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43minvalid shape\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n", "\n", "File \u001b[0;32mnumpy/random/mtrand.pyx:450\u001b[0m, in \u001b[0;36mnumpy.random.mtrand.RandomState.random\u001b[0;34m()\u001b[0m\n", "\n", "File \u001b[0;32mnumpy/random/mtrand.pyx:441\u001b[0m, in \u001b[0;36mnumpy.random.mtrand.RandomState.random_sample\u001b[0;34m()\u001b[0m\n", "\n", "File \u001b[0;32m_common.pyx:312\u001b[0m, in \u001b[0;36mnumpy.random._common.double_fill\u001b[0;34m()\u001b[0m\n", "\n", "\u001b[0;31mTypeError\u001b[0m: 'str' object cannot be interpreted as an integer\n", "[0:execute]\n", "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\n", "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)\n", "Cell \u001b[0;32mIn[21], line 3\u001b[0m\n", "\u001b[1;32m 1\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mnumpy\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mrandom\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m random\n", "\u001b[0;32m----> 3\u001b[0m A \u001b[38;5;241m=\u001b[39m \u001b[43mrandom\u001b[49m\u001b[43m(\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m100\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m100\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43minvalid shape\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n", "\n", "File \u001b[0;32mnumpy/random/mtrand.pyx:450\u001b[0m, in \u001b[0;36mnumpy.random.mtrand.RandomState.random\u001b[0;34m()\u001b[0m\n", "\n", "File \u001b[0;32mnumpy/random/mtrand.pyx:441\u001b[0m, in \u001b[0;36mnumpy.random.mtrand.RandomState.random_sample\u001b[0;34m()\u001b[0m\n", "\n", "File \u001b[0;32m_common.pyx:312\u001b[0m, in \u001b[0;36mnumpy.random._common.double_fill\u001b[0;34m()\u001b[0m\n", "\n", "\u001b[0;31mTypeError\u001b[0m: 'str' object cannot be interpreted as an integer\n", "[2:execute]\n", "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\n", "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)\n", "Cell \u001b[0;32mIn[21], line 3\u001b[0m\n", "\u001b[1;32m 1\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mnumpy\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mrandom\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m random\n", "\u001b[0;32m----> 3\u001b[0m A \u001b[38;5;241m=\u001b[39m \u001b[43mrandom\u001b[49m\u001b[43m(\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m100\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m100\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43minvalid shape\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n", "\n", "File \u001b[0;32mnumpy/random/mtrand.pyx:450\u001b[0m, in \u001b[0;36mnumpy.random.mtrand.RandomState.random\u001b[0;34m()\u001b[0m\n", "\n", "File \u001b[0;32mnumpy/random/mtrand.pyx:441\u001b[0m, in \u001b[0;36mnumpy.random.mtrand.RandomState.random_sample\u001b[0;34m()\u001b[0m\n", "\n", "File \u001b[0;32m_common.pyx:312\u001b[0m, in \u001b[0;36mnumpy.random._common.double_fill\u001b[0;34m()\u001b[0m\n", "\n", "\u001b[0;31mTypeError\u001b[0m: 'str' object cannot be interpreted as an integer\n" ] }, { "ename": "AlreadyDisplayedError", "evalue": "4 errors", "output_type": "error", "traceback": [ "4 errors" ] } ], "source": [ "%%px\n", "from numpy.random import random\n", "\n", "A = random((100, 100, 'invalid shape'))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Sometimes, an error will occur on just one engine,\n", "while the rest are still working.\n", "\n", "When this happens, you will see errors immediately,\n", "and can interrupt the execution:" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dv.scatter(\"rank\", rc.ids, flatten=True)" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "[0:execute]\n", "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\n", "\u001b[0;31mRuntimeError\u001b[0m Traceback (most recent call last)\n", "Cell \u001b[0;32mIn[22], line 4\u001b[0m\n", "\u001b[1;32m 1\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mtime\u001b[39;00m\n", "\u001b[1;32m 3\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m rank \u001b[38;5;241m==\u001b[39m \u001b[38;5;241m0\u001b[39m: \u001b[38;5;66;03m# noqa\u001b[39;00m\n", "\u001b[0;32m----> 4\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mRuntimeError\u001b[39;00m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mrank 0 failed!\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n", "\u001b[1;32m 5\u001b[0m time\u001b[38;5;241m.\u001b[39msleep(\u001b[38;5;241m10\u001b[39m)\n", "\n", "\u001b[0;31mRuntimeError\u001b[0m: rank 0 failed!\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "87b7c9c1dbaa492f8b16883f0b86edea", "version_major": 2, "version_minor": 0 }, "text/plain": [ "%px: 0%| | 0/4 [00:00 jupyter --existing \n", "or, if you are local, you can connect with just:\n", " $> jupyter --existing /Users/minrk/.ipython/profile_default/security/kernel-25705.json\n", "or even just:\n", " $> jupyter --existing\n", "if this is the most recent Jupyter kernel you have started.\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "[stdout:1] {\n", " \"shell_port\": 52987,\n", " \"iopub_port\": 52989,\n", " \"stdin_port\": 52992,\n", " \"control_port\": 52988,\n", " \"hb_port\": 52994,\n", " \"ip\": \"127.0.0.1\",\n", " \"key\": \"bc4c184f-ebc3b4399b253e678e8eb3e3\",\n", " \"transport\": \"tcp\",\n", " \"signature_scheme\": \"hmac-sha256\",\n", " \"kernel_name\": \"\"\n", "}\n", "\n", "Paste the above JSON into a file, and connect with:\n", " $> jupyter --existing \n", "or, if you are local, you can connect with just:\n", " $> jupyter --existing /Users/minrk/.ipython/profile_default/security/kernel-25706.json\n", "or even just:\n", " $> jupyter --existing\n", "if this is the most recent Jupyter kernel you have started.\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "[stdout:2] {\n", " \"shell_port\": 52990,\n", " \"iopub_port\": 52996,\n", " \"stdin_port\": 52998,\n", " \"control_port\": 52993,\n", " \"hb_port\": 52999,\n", " \"ip\": \"127.0.0.1\",\n", " \"key\": \"bc4c184f-ebc3b4399b253e678e8eb3e3\",\n", " \"transport\": \"tcp\",\n", " \"signature_scheme\": \"hmac-sha256\",\n", " \"kernel_name\": \"\"\n", "}\n", "\n", "Paste the above JSON into a file, and connect with:\n", " $> jupyter --existing \n", "or, if you are local, you can connect with just:\n", " $> jupyter --existing /Users/minrk/.ipython/profile_default/security/kernel-25707.json\n", "or even just:\n", " $> jupyter --existing\n", "if this is the most recent Jupyter kernel you have started.\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "[stdout:3] {\n", " \"shell_port\": 53002,\n", " \"iopub_port\": 53004,\n", " \"stdin_port\": 53005,\n", " \"control_port\": 53003,\n", " \"hb_port\": 53006,\n", " \"ip\": \"127.0.0.1\",\n", " \"key\": \"bc4c184f-ebc3b4399b253e678e8eb3e3\",\n", " \"transport\": \"tcp\",\n", " \"signature_scheme\": \"hmac-sha256\",\n", " \"kernel_name\": \"\"\n", "}\n", "\n", "Paste the above JSON into a file, and connect with:\n", " $> jupyter --existing \n", "or, if you are local, you can connect with just:\n", " $> jupyter --existing /Users/minrk/.ipython/profile_default/security/kernel-25711.json\n", "or even just:\n", " $> jupyter --existing\n", "if this is the most recent Jupyter kernel you have started.\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%px %connect_info" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Legacy magics: `%autopx`\n", "\n", "Because IPython used to be a terminal-only, there are some leftover magics that are only meant for use in terminal IPython, where inputs are necessarily linear and the cost of re-typing things is higher.\n", "\n", "The use of `%autopx` is notebooks is __strongly__ discouraged.\n", "Even other stateful magics like `%pxconfig` should probaly not be used more than once in a notebook to set up defaults.\n", "Use `%%px` with arguments to make parallel cells clear and consistent and self-contained.\n", "\n", "The cost of `%autopx` is high (unclear notebooks, very surprising behavior on re-execution),\n", "and the benefit is small (saves a little typing)." ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "%autopx enabled\n" ] } ], "source": [ "%autopx" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "\u001b[0;31mOut[0:27]: \u001b[0m25705" ] }, "metadata": { "after": null, "completed": null, "data": {}, "engine_id": 0, "engine_uuid": "3b5836d1-d16d81c32917ce2147c20af7", "error": null, "execute_input": "os.getpid()", "execute_result": { "data": { "text/plain": "25705" }, "execution_count": 27, "metadata": {} }, "follow": null, "msg_id": null, "outputs": [], "received": null, "started": null, "status": null, "stderr": "", "stdout": "", "submitted": "2024-11-04T11:00:52.095079Z" }, "output_type": "display_data" }, { "data": { "text/plain": [ "\u001b[0;31mOut[1:26]: \u001b[0m25706" ] }, "metadata": { "after": null, "completed": null, "data": {}, "engine_id": 1, "engine_uuid": "3bda9160-2b8556074eb4c377b62e6f81", "error": null, "execute_input": "os.getpid()", "execute_result": { "data": { "text/plain": "25706" }, "execution_count": 26, "metadata": {} }, "follow": null, "msg_id": null, "outputs": [], "received": null, "started": null, "status": null, "stderr": "", "stdout": "", "submitted": "2024-11-04T11:00:52.095184Z" }, "output_type": "display_data" }, { "data": { "text/plain": [ "\u001b[0;31mOut[2:27]: \u001b[0m25707" ] }, "metadata": { "after": [], "completed": "2024-11-04T11:00:52.102695Z", "data": {}, "engine_id": 2, "engine_uuid": "db223688-6994b7bdbc25d90bddac66e7", "error": null, "execute_input": "os.getpid()", "execute_result": { "data": { "text/plain": "25707" }, "execution_count": 27, "metadata": {} }, "follow": [], "is_broadcast": false, "is_coalescing": false, "msg_id": "dc435629-8bb652d0d09a5733938c7249_25688_114", "outputs": [], "received": "2024-11-04T11:00:52.106305Z", "started": "2024-11-04T11:00:52.099286Z", "status": "ok", "stderr": "", "stdout": "", "submitted": "2024-11-04T11:00:52.095216Z" }, "output_type": "display_data" }, { "data": { "text/plain": [ "\u001b[0;31mOut[3:23]: \u001b[0m25711" ] }, "metadata": { "after": [], "completed": "2024-11-04T11:00:52.103031Z", "data": {}, "engine_id": 3, "engine_uuid": "d8b18943-9f945ec05692d14947250666", "error": null, "execute_input": "os.getpid()", "execute_result": { "data": { "text/plain": "25711" }, "execution_count": 23, "metadata": {} }, "follow": [], "is_broadcast": false, "is_coalescing": false, "msg_id": "dc435629-8bb652d0d09a5733938c7249_25688_115", "outputs": [], "received": "2024-11-04T11:00:52.107142Z", "started": "2024-11-04T11:00:52.099541Z", "status": "ok", "stderr": "", "stdout": "", "submitted": "2024-11-04T11:00:52.095443Z" }, "output_type": "display_data" } ], "source": [ "os.getpid()" ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "%autopx disabled\n" ] } ], "source": [ "%autopx" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Linting and formatting notebooks with IPython Parallel magics\n", "\n", "Increasingly, Python formatting and linting tools like `black` and `ruff` aim to support Jupyter notebooks with IPython kernels.\n", "These tools work best if the notebooks don't use any IPython syntax extensions like magics,\n", "but they have varying degrees of support for understanding magics that may contain Python code.\n", "\n", "`black` can be taught that `%%px` contains Python code to format with the [python-cell-magics option]\n", "\n", "```toml\n", "[tool.black]\n", "python_cell_magics = [\n", " \"px\",\n", "]\n", "```\n", "\n", "`ruff` does not recognize `%%px` and its cell magic support is not configurable (as of 0.7.1),\n", "but may [gain a similar feature soon](https://github.com/astral-sh/ruff/issues/13977).\n", "\n", "`nbqa` can be used to invoke ruff, and _can_ be taught about cell magics like black:\n", "\n", "```toml\n", "[tool.nbqa.process_cells]\n", "# formatting is usually a good idea\n", "\"ruff format\" = [\n", " \"px\",\n", "]\n", "# check may not be\n", "\"ruff check\" = [\n", " \"px\",\n", "]\n", "```\n", "\n", "Running formatters on `%%px` is generally safe, but running linters that try to identify namespace issues is always going to be a challenge because, by their nature, parallel magics are working in multiple namespaces and the linters aren't going to understand that.\n", "\n", "Issues likely to come up:\n", "\n", "In general:\n", "\n", "If your linter _doesn't_ process `%%px` cells:\n", "\n", "- If you use `%%px --local` to define functions or variables, and your linters _don't_ process the `%%px` cells, then you are likely to face undefined name errors when you use the variables in local cells (e.g. F821)\n", "\n", "If your linter _does_ process `%%px` cells:\n", "\n", "- If you use `%%px` _without_ `--local`, the linter may erroneously identify your remote imports as duplicates (F401) to _reference_ things defined in single-cell. It's usually not too bad to put a `# noqa` on imports for this\n", "- If you define variables with `push` or `%px` and then reference them with `%%px`, you will likely see incorrect unused variable errors (F821).\n", " This is harder to work around with `# noqa` since there are likely multiple references.\n", " You can use a no-op assignment of a variable to itself, like `a = globals()['a']` which should convince the linter the variable is defined, but is annoying.\n", "\n", "The most straightforward way to address these is to run formatters but not linters on `%%px` cells, and do not use `%%px --local`.\n", "If you do want to use `%%px --local`, it will probably work best if you _do_ enable linting on `%%px`, but be careful in how you arrange your imports.\n", "\n", "You can also use per-file-ignores to disable namespace-checking lint (F8, F4).\n", "\n", "The example notebooks in the IPython Parallel repository currently run `ruff` via nbqa, and do enable linting,\n", "and you can check out the nbqa and ruff configuration used." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.9" }, "widgets": { "application/vnd.jupyter.widget-state+json": { "state": { "01ce2f8f2b044624a7935dde29b807e4": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "02b2fb2533f843138f934a50570922b1": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "0c41ca80d0834a129f9ee68f5e6f46c5": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "FloatProgressModel", "state": { "bar_style": "success", "layout": "IPY_MODEL_958c7ee6595f4dfbbab8d4366d4fbfd5", "max": 4, "style": "IPY_MODEL_f889c274f45f40f39d285ffdf81d8927", "value": 4 } }, "18d2f36a79cb464493c4bb210c7f2d3d": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", "state": { "layout": "IPY_MODEL_f3f1103dc3f34671833adbe0b2dc07f4", "style": "IPY_MODEL_8ff495a1bd45497dbd7cdbd2c36e2080", "value": " 4/4 [00:01<00:00,  3.07tasks/s]" } }, "2397c7cfcd6b477d990d8e87ebee740b": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "2916a04172c14908a8fca98f367583eb": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLStyleModel", "state": { "description_width": "", "font_size": null, "text_color": null } }, "2a1aa906910742e88b0e8dc8cc865c3c": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", "state": { "layout": "IPY_MODEL_d4df9e677d6d47f88dcc88680753f87f", "style": "IPY_MODEL_2916a04172c14908a8fca98f367583eb", "value": " 4/4 [00:00<00:00,  4.03engine/s]" } }, "38cf14d49e554edaa17109a726ff70b5": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", "state": { "layout": "IPY_MODEL_b851d6883c9f466ebe94d70bf9f9f8d6", "style": "IPY_MODEL_7524d5a02dd84ac289e685908fb99adb", "value": " 4/4 [00:08<00:00,  2.16s/tasks]" } }, "3e6a83f852b34d099ebee7ce2b994e80": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", "state": { "layout": "IPY_MODEL_f899c73fab574bde9f0e06c68d2c6f65", "style": "IPY_MODEL_5fba2ecdd37d4aedb0c39c1dd05332ca", "value": "%px: 100%" } }, "525f9918fc0e4dc2a955a475c6372083": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "5e30fa0143c9476f89f33bc05a27e4f7": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "5fba2ecdd37d4aedb0c39c1dd05332ca": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLStyleModel", "state": { "description_width": "", "font_size": null, "text_color": null } }, "6746fd5defb744b7a2b942e5ac957881": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", "state": { "layout": "IPY_MODEL_02b2fb2533f843138f934a50570922b1", "style": "IPY_MODEL_801c64f43c96412dbef731a87f404969", "value": "%px: 100%" } }, "6b9440ff0889439fadfd6ac2eed48e6b": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "FloatProgressModel", "state": { "bar_style": "success", "layout": "IPY_MODEL_2397c7cfcd6b477d990d8e87ebee740b", "max": 4, "style": "IPY_MODEL_db29d3f772b54102932d4264cbed0f67", "value": 4 } }, "6cc56f1a384d4ed286658cdb559c3210": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HBoxModel", "state": { "children": [ "IPY_MODEL_7dc7b51edbb9468ea980a6a330c9845a", "IPY_MODEL_6b9440ff0889439fadfd6ac2eed48e6b", "IPY_MODEL_2a1aa906910742e88b0e8dc8cc865c3c" ], "layout": "IPY_MODEL_5e30fa0143c9476f89f33bc05a27e4f7" } }, "6fb9232163254f16a9b3ca6c9709e373": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLStyleModel", "state": { "description_width": "", "font_size": null, "text_color": null } }, "7524d5a02dd84ac289e685908fb99adb": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLStyleModel", "state": { "description_width": "", "font_size": null, "text_color": null } }, "7dc7b51edbb9468ea980a6a330c9845a": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", "state": { "layout": "IPY_MODEL_525f9918fc0e4dc2a955a475c6372083", "style": "IPY_MODEL_6fb9232163254f16a9b3ca6c9709e373", "value": "100%" } }, "801c64f43c96412dbef731a87f404969": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLStyleModel", "state": { "description_width": "", "font_size": null, "text_color": null } }, "86c7d46257bf44d3a8bf5084e8dc142a": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "FloatProgressModel", "state": { "bar_style": "success", "layout": "IPY_MODEL_01ce2f8f2b044624a7935dde29b807e4", "max": 4, "style": "IPY_MODEL_dd77821774f64a42addbd009fc56e952", "value": 4 } }, "87b7c9c1dbaa492f8b16883f0b86edea": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HBoxModel", "state": { "children": [ "IPY_MODEL_6746fd5defb744b7a2b942e5ac957881", "IPY_MODEL_86c7d46257bf44d3a8bf5084e8dc142a", "IPY_MODEL_38cf14d49e554edaa17109a726ff70b5" ], "layout": "IPY_MODEL_942db27ef44d4fc28cd27d8557b4c79f" } }, "8ff495a1bd45497dbd7cdbd2c36e2080": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLStyleModel", "state": { "description_width": "", "font_size": null, "text_color": null } }, "942db27ef44d4fc28cd27d8557b4c79f": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "958c7ee6595f4dfbbab8d4366d4fbfd5": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "a0ef3882f90e4c87987846ba5d40878c": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "b851d6883c9f466ebe94d70bf9f9f8d6": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "d4df9e677d6d47f88dcc88680753f87f": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "db29d3f772b54102932d4264cbed0f67": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "ProgressStyleModel", "state": { "description_width": "" } }, "dd77821774f64a42addbd009fc56e952": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "ProgressStyleModel", "state": { "description_width": "" } }, "e6e06336c53c442e9a19466d3e959ef7": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HBoxModel", "state": { "children": [ "IPY_MODEL_3e6a83f852b34d099ebee7ce2b994e80", "IPY_MODEL_0c41ca80d0834a129f9ee68f5e6f46c5", "IPY_MODEL_18d2f36a79cb464493c4bb210c7f2d3d" ], "layout": "IPY_MODEL_a0ef3882f90e4c87987846ba5d40878c" } }, "f3f1103dc3f34671833adbe0b2dc07f4": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "f889c274f45f40f39d285ffdf81d8927": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "ProgressStyleModel", "state": { "description_width": "" } }, "f899c73fab574bde9f0e06c68d2c6f65": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} } }, "version_major": 2, "version_minor": 0 } } }, "nbformat": 4, "nbformat_minor": 4 } ipython-ipyparallel-14e3c43/docs/source/examples/Using Dill.ipynb000066400000000000000000000602611520071063500251170ustar00rootroot00000000000000{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Using dill to pickle anything" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "ipyparallel doesn't do much in the way of serialization.\n", "It has custom zero-copy handling of numpy arrays,\n", "but other than that, it doesn't do anything other than the bare minimum to make basic interactively defined functions and classes sendable.\n", "\n", "There are a few projects that extend pickle to make just about anything sendable, and one of these is [dill](https://dill.readthedocs.io).\n", "Another is [cloudpickle](https://github.com/cloudpipe/cloudpickle).\n", "\n", "To install dill:\n", " \n", " pip install dill" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "First, as always, we create a task function, this time with a closure" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "def make_closure(a):\n", " \"\"\"make a weird function with a closure on an open file, and return it\"\"\"\n", " import os\n", "\n", " f = open('/tmp/dilltest', 'a')\n", "\n", " def has_closure(b):\n", " product = a * b\n", " f.write(f\"{os.getpid()}: {product:g}\\n\")\n", " f.flush()\n", " return product\n", "\n", " return has_closure" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "!rm -f /tmp/dilltest\n", "closed = make_closure(5)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "10" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "closed(2)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "25810: 10\n" ] } ], "source": [ "!cat /tmp/dilltest" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "import pickle" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Without help, pickle can't deal with closures" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "ename": "AttributeError", "evalue": "Can't pickle local object 'make_closure..has_closure'", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", "Cell \u001b[0;32mIn[6], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43mpickle\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdumps\u001b[49m\u001b[43m(\u001b[49m\u001b[43mclosed\u001b[49m\u001b[43m)\u001b[49m\n", "\u001b[0;31mAttributeError\u001b[0m: Can't pickle local object 'make_closure..has_closure'" ] } ], "source": [ "pickle.dumps(closed)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "But after we import dill, magic happens" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "import dill" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "b'\\x80\\x04\\x95E\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x8c\\ndill._dill\\x94\\x8c\\x10_create_function\\x94\\x93\\x94(h\\x00\\x8c\\x0c_create_code\\x94\\x93...'" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dill.dumps(closed)[:64] + b'...'" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "So from now on, pretty much everything is pickleable." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Using dill in IPython Parallel" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As usual, we start by creating our Client and View" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Starting 2 engines with \n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "d2ece3d105ca4c488a76246625ef8962", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/2 [00:00 1\u001b[0m \u001b[43mview\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mapply_sync\u001b[49m\u001b[43m(\u001b[49m\u001b[43mclosed\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m3\u001b[39;49m\u001b[43m)\u001b[49m\n", "File \u001b[0;32m~/dev/ip/parallel/ipyparallel/client/view.py:228\u001b[0m, in \u001b[0;36mView.apply_sync\u001b[0;34m(self, _View__ipp_f, *args, **kwargs)\u001b[0m\n\u001b[1;32m 224\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mapply_sync\u001b[39m(\u001b[38;5;28mself\u001b[39m, __ipp_f, \u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[1;32m 225\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"calls ``f(*args, **kwargs)`` on remote engines in a blocking manner,\u001b[39;00m\n\u001b[1;32m 226\u001b[0m \u001b[38;5;124;03m returning the result.\u001b[39;00m\n\u001b[1;32m 227\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m--> 228\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_really_apply\u001b[49m\u001b[43m(\u001b[49m\u001b[43m__ipp_f\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mkwargs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mblock\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mTrue\u001b[39;49;00m\u001b[43m)\u001b[49m\n", "File \u001b[0;32m~/.virtualenvs/ipp7-stable/lib/python3.11/site-packages/decorator.py:232\u001b[0m, in \u001b[0;36mdecorate..fun\u001b[0;34m(*args, **kw)\u001b[0m\n\u001b[1;32m 230\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m kwsyntax:\n\u001b[1;32m 231\u001b[0m args, kw \u001b[38;5;241m=\u001b[39m fix(args, kw, sig)\n\u001b[0;32m--> 232\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mcaller\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfunc\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mextras\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m+\u001b[39;49m\u001b[43m \u001b[49m\u001b[43margs\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkw\u001b[49m\u001b[43m)\u001b[49m\n", "File \u001b[0;32m~/dev/ip/parallel/ipyparallel/client/view.py:55\u001b[0m, in \u001b[0;36msync_results\u001b[0;34m(f, self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 53\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_in_sync_results \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mTrue\u001b[39;00m\n\u001b[1;32m 54\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m---> 55\u001b[0m ret \u001b[38;5;241m=\u001b[39m \u001b[43mf\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 56\u001b[0m \u001b[38;5;28;01mfinally\u001b[39;00m:\n\u001b[1;32m 57\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_in_sync_results \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mFalse\u001b[39;00m\n", "File \u001b[0;32m~/.virtualenvs/ipp7-stable/lib/python3.11/site-packages/decorator.py:232\u001b[0m, in \u001b[0;36mdecorate..fun\u001b[0;34m(*args, **kw)\u001b[0m\n\u001b[1;32m 230\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m kwsyntax:\n\u001b[1;32m 231\u001b[0m args, kw \u001b[38;5;241m=\u001b[39m fix(args, kw, sig)\n\u001b[0;32m--> 232\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mcaller\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfunc\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mextras\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m+\u001b[39;49m\u001b[43m \u001b[49m\u001b[43margs\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkw\u001b[49m\u001b[43m)\u001b[49m\n", "File \u001b[0;32m~/dev/ip/parallel/ipyparallel/client/view.py:39\u001b[0m, in \u001b[0;36msave_ids\u001b[0;34m(f, self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 37\u001b[0m n_previous \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mlen\u001b[39m(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mclient\u001b[38;5;241m.\u001b[39mhistory)\n\u001b[1;32m 38\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m---> 39\u001b[0m ret \u001b[38;5;241m=\u001b[39m \u001b[43mf\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 40\u001b[0m \u001b[38;5;28;01mfinally\u001b[39;00m:\n\u001b[1;32m 41\u001b[0m nmsgs \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mlen\u001b[39m(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mclient\u001b[38;5;241m.\u001b[39mhistory) \u001b[38;5;241m-\u001b[39m n_previous\n", "File \u001b[0;32m~/dev/ip/parallel/ipyparallel/client/view.py:1364\u001b[0m, in \u001b[0;36mLoadBalancedView._really_apply\u001b[0;34m(self, f, args, kwargs, block, track, after, follow, timeout, targets, retries)\u001b[0m\n\u001b[1;32m 1359\u001b[0m follow \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_render_dependency(follow)\n\u001b[1;32m 1360\u001b[0m metadata \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mdict\u001b[39m(\n\u001b[1;32m 1361\u001b[0m after\u001b[38;5;241m=\u001b[39mafter, follow\u001b[38;5;241m=\u001b[39mfollow, timeout\u001b[38;5;241m=\u001b[39mtimeout, targets\u001b[38;5;241m=\u001b[39midents, retries\u001b[38;5;241m=\u001b[39mretries\n\u001b[1;32m 1362\u001b[0m )\n\u001b[0;32m-> 1364\u001b[0m future \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mclient\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msend_apply_request\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 1365\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_socket\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mf\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mkwargs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtrack\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mtrack\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmetadata\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mmetadata\u001b[49m\n\u001b[1;32m 1366\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1368\u001b[0m ar \u001b[38;5;241m=\u001b[39m AsyncResult(\n\u001b[1;32m 1369\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mclient,\n\u001b[1;32m 1370\u001b[0m future,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 1373\u001b[0m owner\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m,\n\u001b[1;32m 1374\u001b[0m )\n\u001b[1;32m 1375\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m block:\n", "File \u001b[0;32m~/dev/ip/parallel/ipyparallel/client/client.py:1954\u001b[0m, in \u001b[0;36mClient.send_apply_request\u001b[0;34m(self, socket, f, args, kwargs, metadata, track, ident, message_future_hook)\u001b[0m\n\u001b[1;32m 1951\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(metadata, \u001b[38;5;28mdict\u001b[39m):\n\u001b[1;32m 1952\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mTypeError\u001b[39;00m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mmetadata must be dict, not \u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mtype\u001b[39m(metadata)\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m-> 1954\u001b[0m bufs \u001b[38;5;241m=\u001b[39m \u001b[43mserialize\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mpack_apply_message\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 1955\u001b[0m \u001b[43m \u001b[49m\u001b[43mf\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1956\u001b[0m \u001b[43m \u001b[49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1957\u001b[0m \u001b[43m \u001b[49m\u001b[43mkwargs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1958\u001b[0m \u001b[43m \u001b[49m\u001b[43mbuffer_threshold\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msession\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mbuffer_threshold\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1959\u001b[0m \u001b[43m \u001b[49m\u001b[43mitem_threshold\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msession\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mitem_threshold\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1960\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1962\u001b[0m future \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_send(\n\u001b[1;32m 1963\u001b[0m socket,\n\u001b[1;32m 1964\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mapply_request\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 1970\u001b[0m message_future_hook\u001b[38;5;241m=\u001b[39mmessage_future_hook,\n\u001b[1;32m 1971\u001b[0m )\n\u001b[1;32m 1972\u001b[0m msg_id \u001b[38;5;241m=\u001b[39m future\u001b[38;5;241m.\u001b[39mmsg_id\n", "File \u001b[0;32m~/dev/ip/parallel/ipyparallel/serialize/serialize.py:182\u001b[0m, in \u001b[0;36mpack_apply_message\u001b[0;34m(f, args, kwargs, buffer_threshold, item_threshold)\u001b[0m\n\u001b[1;32m 174\u001b[0m kwarg_bufs \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mlist\u001b[39m(\n\u001b[1;32m 175\u001b[0m chain\u001b[38;5;241m.\u001b[39mfrom_iterable(\n\u001b[1;32m 176\u001b[0m serialize_object(kwargs[key], buffer_threshold, item_threshold)\n\u001b[1;32m 177\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m key \u001b[38;5;129;01min\u001b[39;00m kw_keys\n\u001b[1;32m 178\u001b[0m )\n\u001b[1;32m 179\u001b[0m )\n\u001b[1;32m 181\u001b[0m info \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mdict\u001b[39m(nargs\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mlen\u001b[39m(args), narg_bufs\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mlen\u001b[39m(arg_bufs), kw_keys\u001b[38;5;241m=\u001b[39mkw_keys)\n\u001b[0;32m--> 182\u001b[0m msg \u001b[38;5;241m=\u001b[39m \u001b[43mserialize_object\u001b[49m\u001b[43m(\u001b[49m\u001b[43mf\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 183\u001b[0m msg\u001b[38;5;241m.\u001b[39mappend(pickle\u001b[38;5;241m.\u001b[39mdumps(info, PICKLE_PROTOCOL))\n\u001b[1;32m 184\u001b[0m msg\u001b[38;5;241m.\u001b[39mextend(arg_bufs)\n", "File \u001b[0;32m~/dev/ip/parallel/ipyparallel/serialize/serialize.py:113\u001b[0m, in \u001b[0;36mserialize_object\u001b[0;34m(obj, buffer_threshold, item_threshold)\u001b[0m\n\u001b[1;32m 110\u001b[0m cobj \u001b[38;5;241m=\u001b[39m can(obj)\n\u001b[1;32m 111\u001b[0m buffers\u001b[38;5;241m.\u001b[39mextend(_extract_buffers(cobj, buffer_threshold))\n\u001b[0;32m--> 113\u001b[0m buffers\u001b[38;5;241m.\u001b[39minsert(\u001b[38;5;241m0\u001b[39m, \u001b[43mpickle\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdumps\u001b[49m\u001b[43m(\u001b[49m\u001b[43mcobj\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mPICKLE_PROTOCOL\u001b[49m\u001b[43m)\u001b[49m)\n\u001b[1;32m 114\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m buffers\n", "\u001b[0;31mTypeError\u001b[0m: cannot pickle '_io.TextIOWrapper' object" ] } ], "source": [ "view.apply_sync(closed, 3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Oops, no dice. For IPython to work with dill,\n", "there are one or two more steps. IPython will do these for you if you call `DirectView.use_dill`:" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "rc[:].use_dill()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now let's try again" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "15" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "view.apply_sync(closed, 3)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "25810: 10\n", "26717: 15\n" ] } ], "source": [ "!cat /tmp/dilltest" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Yay! Now we can use dill to allow ipyparallel to send anything.\n", "\n", "And that's it! We can send closures, open file handles, and other previously non-pickleables to our engines.\n", "\n", "Let's give it a try now:" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "20" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "remote_closure = view.apply_sync(make_closure, 4)\n", "remote_closure(5)" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "25810: 10\n", "26717: 15\n", "25810: 20\n" ] } ], "source": [ "!cat /tmp/dilltest" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "But wait, there's more!\n", "\n", "At this point, we can send/recv all kinds of stuff" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "def outer(a):\n", " def inner(b):\n", " def inner_again(c):\n", " return c * b * a\n", "\n", " return inner_again\n", "\n", " return inner" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "So outer returns a function with a closure, which returns a function with a closure.\n", "\n", "Now, we can resolve the first closure on the engine, the second here, and the third on a different engine,\n", "after passing through a lambda we define here and call there, just for good measure." ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "6" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "view.apply_sync(lambda f: f(3), view.apply_sync(outer, 1)(2))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And for good measure, let's test that normal execution still works:" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "%%px\n", "foo = 5" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[5, 5]\n" ] }, { "data": { "text/plain": [ "[10, 10]" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "print(rc[:]['foo'])\n", "rc[:]['bar'] = lambda: 2 * foo\n", "rc[:].apply_sync(ipp.Reference('bar'))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And test that the `@interactive` decorator works" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Writing testdill.py\n" ] } ], "source": [ "%%file testdill.py\n", "import ipyparallel as ipp\n", "\n", "@ipp.interactive\n", "class C:\n", " a = 5\n", "\n", "@ipp.interactive\n", "class D(C):\n", " b = 10\n", "\n", "@ipp.interactive\n", "def foo(a):\n", " return a * b\n" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [], "source": [ "import testdill" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "5 10\n" ] } ], "source": [ "v = rc[-1]\n", "v['D'] = testdill.D\n", "d = v.apply_sync(lambda: D()) # noqa: F821\n", "print(d.a, d.b)" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "50" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "v['b'] = 10\n", "v.apply_sync(testdill.foo, 5)" ] } ], "metadata": { "gist_id": "5241793", "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.10" }, "widgets": { "application/vnd.jupyter.widget-state+json": { "state": {}, "version_major": 2, "version_minor": 0 } } }, "nbformat": 4, "nbformat_minor": 4 } ipython-ipyparallel-14e3c43/docs/source/examples/Using MPI with IPython Parallel.ipynb000066400000000000000000000113621520071063500307020ustar00rootroot00000000000000{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Simple usage of a set of MPI engines" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This example assumes you've started a cluster of N engines (4 in this example) as part\n", "of an MPI world. \n", "\n", "Our documentation describes [how to create an MPI profile](https://ipyparallel.readthedocs.io/en/stable/tutorial/process.html#using-ipython-parallel-with-mpi)\n", "and explains [basic MPI usage of the IPython cluster](https://ipyparallel.readthedocs.io/en/stable/reference/mpi.html).\n", "\n", "\n", "For the simplest possible way to start 4 engines that belong to the same MPI world, \n", "you can run this in a terminal:\n", "\n", "
\n",
    "ipcluster start --engines=MPI -n 4\n",
    "
\n", "\n", "or start an MPI cluster from the cluster tab if you have one configured.\n", "\n", "Once the cluster is running, we can connect to it and open a view into it:" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true, "jupyter": { "outputs_hidden": true } }, "outputs": [], "source": [ "import ipyparallel as ipp\n", "\n", "rc = ipp.Client()\n", "view = rc[:]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's define a simple function that gets the MPI rank from each engine." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true, "jupyter": { "outputs_hidden": true } }, "outputs": [], "source": [ "@view.remote(block=True)\n", "def mpi_rank():\n", " from mpi4py import MPI\n", "\n", " comm = MPI.COMM_WORLD\n", " return comm.Get_rank()" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[0, 1, 3, 2]" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mpi_rank()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To get a mapping of IPython IDs and MPI rank (these do not always match),\n", "you can use the get_dict method on AsyncResults." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{0: 0, 1: 1, 2: 3, 3: 2}" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mpi_rank.block = False\n", "ar = mpi_rank()\n", "ar.get_dict()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "With %%px cell magic, the next cell will actually execute *entirely on each engine*:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "\u001b[0;31mOut[0:8]: \u001b[0m{'data': 1, 'rank': 0}" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "\u001b[0;31mOut[1:8]: \u001b[0m{'data': 4, 'rank': 1}" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "\u001b[0;31mOut[2:8]: \u001b[0m{'data': 16, 'rank': 3}" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "\u001b[0;31mOut[3:8]: \u001b[0m{'data': 9, 'rank': 2}" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%%px\n", "from mpi4py import MPI\n", "\n", "comm = MPI.COMM_WORLD\n", "size = comm.Get_size()\n", "rank = comm.Get_rank()\n", "\n", "if rank == 0:\n", " data = [(i + 1) ** 2 for i in range(size)]\n", "else:\n", " data = None\n", "data = comm.scatter(data, root=0)\n", "\n", "assert data == (rank + 1) ** 2, f'data={data}, rank={rank}'\n", "{\n", " 'data': data,\n", " 'rank': rank,\n", "}" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.6" }, "widgets": { "application/vnd.jupyter.widget-state+json": { "state": {}, "version_major": 2, "version_minor": 0 } } }, "nbformat": 4, "nbformat_minor": 4 } ipython-ipyparallel-14e3c43/docs/source/examples/basic_task_label.py000066400000000000000000000034721520071063500257370ustar00rootroot00000000000000"""Basic task label example Labels can be used for identifying or semantically grouping tasks. Using the $glob operator relevant task records can be queried from the Task Database. Authors ------- * ottointhesky """ import ipyparallel as ipp # start up ipp cluster with 2 engines cluster = ipp.Cluster(n=2) cluster.start_cluster_sync() rc = cluster.connect_client_sync() rc.wait_for_engines(n=2) def wait(t): import time tic = time.time() time.sleep(t) return time.time() - tic count = 5 # number of tasks per method # use load balanced view bview = rc.load_balanced_view() ar_list_b1 = [ bview.set_flags(label=f"bview_map_{i:02}").map_async(wait, [2]) for i in range(count) ] ar_list_b2 = [ bview.set_flags(label=f"bview_apply_{i:02}").apply_async(wait, 2) for i in range(count) ] bview.wait(ar_list_b1) bview.wait(ar_list_b2) # use direct view dview = rc[:] ar_list_d1 = [ dview.set_flags(label=f"dview_map_{i + 10:02}").map_async(wait, [2]) for i in range(count) ] ar_list_d2 = [ dview.set_flags(label=f"dview_apply_{i + 10:02}").apply_async(wait, 2) for i in range(count) ] dview.wait(ar_list_d1) dview.wait(ar_list_d2) def print_records(titel, data): print(f"{titel} ({len(data)} records)") for d in data: print( f"\tmsg_id={d['msg_id']}; label={d['label']}; engine_uuid={d['engine_uuid']}" ) query_keys = ['msg_id', 'label', 'engine_uuid'] # query database data = rc.db_query({'label': {"$nin": ""}}, keys=query_keys) print_records("all entries with labels", data) data = rc.db_query({'label': {"$glob": "dview_*"}}, keys=query_keys) print_records("all dview label entries", data) data = rc.db_query({'label': {"$glob": "*_map_*"}}, keys=query_keys) print_records("all map label entries", data) # stop cluster cluster.stop_cluster_sync() ipython-ipyparallel-14e3c43/docs/source/examples/broadcast/000077500000000000000000000000001520071063500240575ustar00rootroot00000000000000ipython-ipyparallel-14e3c43/docs/source/examples/broadcast/Broadcast view.ipynb000066400000000000000000015332741520071063500277760ustar00rootroot00000000000000{ "cells": [ { "cell_type": "markdown", "id": "b9dd40a2-26ae-48b7-8dc7-3b4995b2b6e6", "metadata": {}, "source": [ "# Broadcast View\n", "\n", "IPython Parallel is built on the idea of working with N remote IPython instances.\n", "This means that most of the 'parallelism' when working with N engines\n", "via the DirectView is really implemented in the client.\n", "\n", "DirectView methods are all implemented as:\n", "\n", "```python\n", "for engine in engines:\n", " do_something_on(engine)\n", "```\n", "\n", "which means that all operations are at least O(N) *at the client*.\n", "This can be really inefficient when the client is telling all the engines to do the same thing,\n", "*especially* when the client is across the Internet from the cluster.\n", "\n", "IPython 7 includes a new, experimental *broadcast* scheduler that implements the same message pattern,\n", "but sending a request to any number of engines is O(1) in the client.\n", "It is the *scheduler* that implements the fan-out to engines.\n", "\n", "With the broadcast view, a client always sends one message to the root node of the scheduler.\n", "The scheduler then sends one message to each of its two branches,\n", "and so on until it reaches the leaves of the tree,\n", "at which point each leaf sends $\\frac{N}{2^{depth}}$ messages to its assigned engines.\n", "\n", "The performance should be strictly better with a depth of 0 (one scheduler node),\n", "network-wise,\n", "though the Python implementation of the scheduler may have a cost relative to the pure-C default DirectView scheduler. \n", "\n", "\n", "This approach allows deplyments to exchange single-message latency (due to increased depth) for parallelism (due to concurrent sends at the leaves).\n", "\n", "This trade-off increases the baseline cost for small numbers of engines,\n", "while dramatically improving the total time to deliver messages to large numbers of engines,\n", "especially when they contain a lot of data.\n", "\n", "These tests were run with a depth of 3 (8 leaf nodes)" ] }, { "cell_type": "code", "execution_count": 1, "id": "0e46054d-5082-40d9-ace3-413cef646622", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/Users/minrk/dev/ip/parallel/ipyparallel/util.py:205: RuntimeWarning: IPython could not determine IPs for ip-172-31-2-77: [Errno 8] nodename nor servname provided, or not known\n", " warnings.warn(\n" ] } ], "source": [ "import ipyparallel as ipp\n", "\n", "rc = ipp.Client(profile=\"mpi\")\n", "rc.wait_for_engines(100)\n", "direct_view = rc.direct_view()\n", "bcast_view = rc.broadcast_view()" ] }, { "cell_type": "code", "execution_count": 2, "id": "339a80ab-bbeb-423c-abb3-6d429377017d", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "I have 100 engines\n" ] } ], "source": [ "print(f\"I have {len(rc)} engines\")" ] }, { "cell_type": "markdown", "id": "ff036951-029a-486e-ada9-ec0ee5edd3bc", "metadata": {}, "source": [ "To test baseline latency, we can run an empty `apply` task with both views:" ] }, { "cell_type": "code", "execution_count": 3, "id": "9c30c899-68fd-470d-80ec-c10e724bd27a", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "311 ms ± 67.3 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n" ] } ], "source": [ "%timeit direct_view.apply_sync(lambda: None)" ] }, { "cell_type": "code", "execution_count": 4, "id": "ee82f5fa-a2a1-4b72-ad1f-f36427168317", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "259 ms ± 14.6 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n" ] } ], "source": [ "%timeit bcast_view.apply_sync(lambda: None)" ] }, { "cell_type": "markdown", "id": "b4f994af-21b5-440e-b0b3-97e3abd73493", "metadata": {}, "source": [ "With 100 engines, it takes noticeably longer to complete on the direct view as the new broadcast view.\n", "\n", "Sending the same data to engines is probably the pattern that most suffers from this design,\n", "because identical data is duplicated *once per engine* in the client.\n", "\n", "We can compare `view.push` with increasing array sizes:" ] }, { "cell_type": "code", "execution_count": 5, "id": "e5f49dd7-e903-4126-888c-0130261e5fd7", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " 16 x 16: 2 kB\n", "Direct view\n", "287 ms ± 72 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", "Broadcast view\n", "266 ms ± 10.5 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", " 64 x 64: 32 kB\n", "Direct view\n", "598 ms ± 62.2 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", "Broadcast view\n", "274 ms ± 30.1 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", " 256 x 256: 512 kB\n", "Direct view\n", "5.99 s ± 199 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", "Broadcast view\n", "297 ms ± 43.4 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", " 512 x 512: 2 MB\n", "Direct view\n", "22.9 s ± 428 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", "Broadcast view\n", "559 ms ± 107 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n" ] } ], "source": [ "import numpy as np\n", "\n", "dview_times = []\n", "bcast_times = []\n", "\n", "n_list = [16, 64, 256, 512]\n", "for n in n_list:\n", " chunk = np.random.random((n, n))\n", " b = chunk.nbytes\n", " unit = 'B'\n", " if b > 1024:\n", " b //= 1024\n", " unit = 'kB'\n", " if b > 1024:\n", " b //= 1024\n", " unit = 'MB'\n", " print(f\"{n:4} x {n:4}: {b:4} {unit}\")\n", " print(\"Direct view\")\n", " tr = %timeit -o -n 1 direct_view.push({\"chunk\": chunk}, block=True)\n", " dview_times.append(tr.average)\n", " print(\"Broadcast view\")\n", " tr = %timeit -o -n 1 bcast_view.push({\"chunk\": chunk}, block=True)\n", " bcast_times.append(tr.average)" ] }, { "cell_type": "code", "execution_count": 7, "id": "8926cf3e-a247-413b-be61-7a7db73437e9", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ndirect viewbroadcastbroadcast speedupMB
0160.2874950.2657861.0816790.195312
1640.5980650.2738352.1840313.125000
22565.9862740.29703420.15352150.000000
351222.9468060.55865341.075245200.000000
\n", "
" ], "text/plain": [ " n direct view broadcast broadcast speedup MB\n", "0 16 0.287495 0.265786 1.081679 0.195312\n", "1 64 0.598065 0.273835 2.184031 3.125000\n", "2 256 5.986274 0.297034 20.153521 50.000000\n", "3 512 22.946806 0.558653 41.075245 200.000000" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import matplotlib.pyplot as plt\n", "import pandas as pd\n", "\n", "df = pd.DataFrame({\"n\": n_list, \"direct view\": dview_times, \"broadcast\": bcast_times})\n", "df[\"broadcast speedup\"] = df[\"direct view\"] / df.broadcast\n", "# MB is the total number of megabytes delivered (n * n * 8 * number of engines bytes)\n", "df[\"MB\"] = df[\"n\"] ** 2 * 8 * len(rc) / (1024 * 1024)\n", "df" ] }, { "cell_type": "code", "execution_count": 8, "id": "5a875b84-0d26-4e9d-94f6-23732095359e", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0, 0.5, 'seconds')" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABMUAAAL7CAYAAAD9DjKGAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAABYlAAAWJQFJUiTwAAC36klEQVR4nOzdeXgV9d3+8c93cpac7GSDJKxRCCQBbUUCKiJBqIKACmERtFattS5FsE9b7dOquFSsGy7V4tZfBZUAAuICqChLqEVtCYSwBwhbCJAEcrKd7fv7g4xPRGTzhMnyfl1XrmQ+M3PmPopHvTOL0loLAAAAAAAA0JoYVgcAAAAAAAAAzjVKMQAAAAAAALQ6lGIAAAAAAABodSjFAAAAAAAA0OpQigEAAAAAAKDVoRQDAAAAAABAq0MpBgAAAAAAgFaHUgwAAAAAAACtDqUYAAAAAAAAWh1KMQAAAAAAALQ6lGIAAAAAAABodSjFAAAAAAAA0OrYrA7QWiildohIlIjstDgKAAAAAABAS9FZRI5qrbuc6Y6UYudOlM1mi0xMTEyyOgiA1snpdMaLiNTV1R2yOgsANDd8hgLA2eMzFI2ptLQ00ufzndW+lGLnzs7ExMSkTZs2zbA6CIDWKS8v73YRkUsvvZTPIQA4Q3yGAsDZ4zMUjal79+6379u3b//Z7Ms9xQAAAAAAANDqUIoBAAAAAACg1aEUAwAAAAAAQKtDKQYAAAAAAIBWh1IMAAAAAAAArQ6lGAAAAAAAAFodSjEAAAAAAAC0OjarA+D7/H6/raysLLOmpibV5/O1EZEQqzMBZ8Fvs9nKXS5XUWxsbEFISIjP6kAAAAAAAJgoxZoYv99v27dv39U+n6+TUsoVEhJitzoTcLYCgUCs2+1Orq2t7ZCcnPwxxRgAAAAAoKmgFGtiysrKMn0+XyebzRYRGxvrdrlcRw3D0FbnAs5UIBBQNTU19rKysgifz9eprKwsMyEhYa3VuQAAAAAAEOGeYk1OTU1NqlLKFRsb6w4PD/dQiKG5MgxDh4eHe2JjY91KKVdNTU2q1ZkAAAAAADBRijUxPp+vjVLK7nK5vFZnAYLB5XJ5lVL2+vvjAQAAAADQJFCKNT0hIsfOsrE6CBAMSinzzzIPjAAAAAAANBmUYgAalVLK6ggAAAAAAHwPpRgAAAAAAABaHUoxAAAAAAAAtDqUYmiWevTokdijR4/EhrM333zTFRUVlfTmm2+6rMpllYceeigyKioqadmyZQ6rswAAAAAA0BxQirVimw+4bW/+a3f4i8t3Rrz5r93hmw+4bVZnamluueWWmKioqKSioiJuMg8AAAAAQBNCCdIKrdpe5nhlZXFk/t6j3zmr6JllO+SClCjPHf07Vl52XqzHqnxn67rrrqvNyso6mJyc7Lc6y7l21113VY0ZM6amU6dOre69AwAAAABwNijFWpl3v9kX9pcl26ID+sTr8/ceddw1uyDugZ+dXzH2ouSac5vux4mJidExMTE+q3NYISEhIZCQkBCwOgcAAAAAAM0Fl0+2Iqu2lzlOVoiZAlrk8SXbYlZtL7P0/lSBQEBeeOGFsIsuuighPj4+qWvXrm3vueee6IqKCnWi7X/onmLm/ceOHDmi7rvvvqgePXokxsbGJj300EOR5jaFhYW2W265JaZbt25t4+Likrp06dL2xhtvjNm4ceMJL3usqqpS06ZNi7j00kvjk5KS2rVr167dT37yk4RJkyZFlZSUGCIiUVFRSXPnznWJiFx44YWJUVFRSVFRUUnH3wvteH/5y18ioqKikqZPnx5+ovV79uwxYmJiki699NJ4c3aye4qd7nu7//77I6OiopKWLFnibDj/85//HBkVFZWUmZn5vdypqalt09LSTvp+AAAAAABoijhTrBV5ZWVx5KkKMVNAi/x9VXHkZefFHm7cVD9sypQpUW+88UZ4YmJiYMKECVV2u12WLFkSOmzYsDiv16vsdvtpvhsRr9erhg4dGldRUWEMGDCgLjIyUnfu3NknIvLRRx85b7755jY+n08NGjSoNjU11b9v3z7j448/dn322Weh77///uHevXt7zdcqKytTV199dfzGjRttqampvrFjx1Y7HA7ZsWNHyOzZs8NGjhxZ265dO8+UKVPcH3/8cejGjRttt956a1V0dLQWEYmOjj7pGV0TJ06snjZtWuTs2bNdkyZNqjp+/axZs1yBQEDGjRtXfar3fSbvbeDAgXUvvfRSxBdffOH42c9+Vme+xqpVqxwiIsXFxSFFRUUhqampfhGRdevW2Q4dOmTk5OQ0qzMKAQAAAKA1W7mtLGHZlkOpVXV+Z7gzpC67W3xR//NjD1qdywqUYq3E5gNu2/H3EDuVtXuOOjYfcNvS2kac80sSV61aZX/jjTfCO3Xq5P/iiy8OxsXFaRGRRx555OhVV10VX1paaqSkpJz2/bNKS0uNrl27+pYsWXIwIiLi2zKtrKxM3X777W1cLpf+8MMPD2VmZn77XtevX+8ePHhw/D333BP9r3/965A5nzRpUvTGjRttN954Y/Xzzz9/JCTk/064Onr0qAoEjnVeDz30UGVxcXHIxo0bbffcc0+VWSadSocOHQKXXXZZ3YoVK5zr1q2z9erV6zt//XNzc8PsdruMHz/+pGXUmb63yy67zONwOGTFihVOEakUEamsrFT5+fmO/v37161cudK5bNkyZ2pqarWIyLJly5wiIgMGDKg7weEBAAAAAE3Iu1/v6/LPNXsG7C6v7dRwPve/JdKhTeium/q0Xz6ud/IOq/JZgVKsmen52Iqkc3m80a/9J+Fs913/x8v3n+2+b731VpiIyOTJkyvNQkxExOVyyYMPPnj02muvjTvT13z88cePNCzERET++c9/hh09elQ9/vjjRxuWRiIiPXv29N1www3Vr732WnhBQYEtMzPTd+DAAWPRokWuxMTEwLRp0442LMRERKKiok777LWTGTduXM2KFSucM2fODHvyySePmvM1a9bYt27davvZz35WGx8ff9Jjnel7CwsLk5/+9KeeNWvWOMrKylRsbKxevny5w+v1yq9//euqDRs22JcvX+647bbbqkXELM9k4MCBlGIAAAAA0IQ9+cn2n8xcs3e4Fjnh7Yh2l9d2enzJtht3l9cs+p/B5/33XOezCqUYmqT169fbRUQuv/zy7z0F8/LLL/fYbGf2R9fpdMoFF1zwvTPevvrqK4eISEFBgb3hPcZM27dvt4mIbNy40ZaZmelbs2aNPRAISFZWluf4gi2Yrr/++prf//730fPmzXM9/vjjR833O3PmTJeIyIQJE0556eSZvjcRkf79+9d9+eWXjs8//9w5atSo2uXLlzvtdrsMGDDAc8kll3jy8vKcIiI+n0/+/e9/O1JTU30dOnTgBv8AAAAA0ES9+/W+LicrxExaRL21Zu/wDm1cFa3ljDFKMTRJlZWVhohIu3btvle42Gw2iYmJOaMiJi4uzm8Y33+uRHl5uRIRefvtt8NOtn9VVZUSEamoqDBERJKSkk770s2zERYWJsOHD695++23w5YsWeIcNmxYncfjkYULF7piY2MDQ4cOPeXZWWf63kSOnfX117/+NfKLL75wjho1qnblypXOCy+80BMZGakHDBhQ98EHH4SuW7fOVlVVpSorK9V11133vdISAAAAANB0/HPNngGnKsRMx4qxPQMoxdAkne0liZsPuG1ncynk3Nt+etCKe4pFRkYGRCSkpKTEOP/8879TQPl8PqmoqDDatm172sWUUif+5z8yMlKLiKxYseLghRdeeMr3aZZx+/fvP+FTKYNpwoQJ1W+//XbY22+/HTZs2LC6RYsWhZaXlxu33nprlcNx6tvDnel7ExHJysryhoeH65UrVzoOHTqkNm7caJs8ebJb5P8uk/zss8+cNTU1SoT7iQEAAABAU7ZyW1nC8fcQO5Xi8tpOK7eVJbSGm+9//9QZtEhpbSN8F6REndFZPRe2j/JYUYiJiPTs2dMrIrJixYrvtT8rVqxw+HzBidW7d2+PyP89YfFUsrKyvIZhyL///W+H2+0+ZdMeEhKiRUT8/jM/sax///7ezp07+5cuXRpaUVGh3nnnHZfIsadTns7+Z/reRETsdrv06dPHU1RUZHvrrbfCtNbflmHdunXzJycn+1esWOFcuXKl0zAMyc7OphQDAAAAgCZq2ZZDqedyv+aGUqwVuaN/x0rjtE6YFDGUyK8u61jZuIl+mFn8PPvss5GHDx/+NnVNTY08/PDDUcE6zi9+8YvqqKgo/dRTT0V++eWX9uPX+/1+WbZs2belUmJiYmDEiBE1paWlxu9///uo48uuyspKVVFR8W3e2NhYLSJSXFx8VmeWjR07trqurk5efvnl8M8//zy0e/fuvosuuui0GsEzfW+m/v3714mIPP/88xFhYWG6b9++35apl156qefLL790fP31144ePXp4Gz4EAQAAAADQtFTV+Z3ncr/mhssnW5HLzov13P+z84/8Zcm26MBJqgxDiTzws/MrLjsv1rL7RfXv39/7i1/8ourNN98Mz8rKShw2bFiN3W6XJUuWhEZFRQUSExODcnP3+Ph4/eabb5bddNNNsT/72c/iL7300rq0tDSfYRiyZ8+ekP/85z+O8vJy49ChQ99etvrcc88d2bRpk/2tt94KW716teOKK66oczgcsmvXrpDly5c7Z82aVZadne0REbniiivqXn755fB777035pprrqkJDw/X0dHRgXvuuee0zvaaOHFi9V//+tfIp556KtLr9crYsWNPa7+zfW8iItnZ2XVT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y5c7r7jiirqbbrqpqri42CYiUl5erq688sr4rVu32nr16uX95S9/WXP48GFj0aJFrpycnLhp06YdueOOO6rN1ykrKzP+9Kc/RV900UWeyy+/vC4uLi5w4MCBkE8//TR0/PjxsU8//fSRX/7yl9UNj52bmxt6++23t7Hb7TJ8+PCatm3b+tesWeMYMmRIfPfu3b0nen8zZswI+/3vfx9tGIYMHjy4NjU11Xfo0CEjPz/f8frrr4ePGzfu2/f3u9/9LqZr167erKwsT9u2bf3l5eXGsmXLQu++++6YrVu32h555JFKc9u9e/ca2dnZCW63Ww0cOLB22LBhNbW1taq4uNg2b9481x133FEVHx/vu+GGG6qjo6MDS5cuDR0yZEhtZmamz3yNNm3anN4fGAAAAADAjxLQWv5n/sYrlm48NMCctQmzH34hJ2PmBe2jKiyM1mJRirUSRmmhzbxk8nRuxXfsUsqvHUZpoS2QmO475Q6NaM2aNY477rij6sknnzzaYFZ11VVXxf/P//xPzNChQw9ER0d/exbe559/7nznnXfKhg4dWtfwdR544IGorVu32iZMmFD90ksvHTGMYydKbt682T1w4MCEP/7xj9FDhgypS01N9YscK4TWrVt3oGPHjt8phioqKtSVV14ZP3Xq1KgJEyZUh4WFiYhIZWWl+u1vfxtjGIZ8+OGHh/r06fNtCTZlypSo1157Lfz491ZQUGD7wx/+EB0REaE/+uijQz179vzOX+vi4uLvnM25evXq0q5du/obzurq6o6MHDky7qWXXoq4/fbbqzp06BAQEZk3b56roqJCTZ069ei9995b1XAft9utDMPQIiK/+MUvakREli5dGjps2LBacxkAAAAAcG54/QF1xzvrh67ZdaS3OWsX5dz36g09Z3WOC6s+2b44e5RizUzk0+2TTr3VDzvdZ1OY24W/NSThbI9Ved+e/We7b0ORkZH6f//3fysbzvr06eO99tpra+bOneuaP39+6M033/xtkTNkyJDa4wsxj8cj7733nis8PFw/+uijR81CTEQkLS3Nf+utt1ZNnz49YubMma4///nPbhGR0NBQOb4QExGJiYnR48ePr3744Yej1qxZ47jiiis8IiILFiwIraioUKNGjappWIiJiPz5z3+unD17dlhlZeV3/hbMmDEjzOfzyeTJkyuPL8RE5HvHP74QExFxOp1y2223Va1evdqxbNky589//vPvlFoul+t7l+1GRETw2F4AAAAAaAIqa322W2bmX7/pQFUPc9YlzrX9zYkX5MZFOHgIXiPinmJo8jIzM71RUVHfK3H69+9fJyKSn59vbzj/6U9/+r3LFDdu3GirqalRPXr08MbFxX3vta644oo6EZH169d/57XWr19vu+WWW2LMe3iZ99p6+OGHo0RE9u7d++09t8wcl1122XcKOZFjRVp6evr3cn3zzbEngF511VXf2+dEdu7cGXL33XdHX3jhhQmJiYntzDy33HJLGxGRffv2fZtn+PDhteHh4fr++++PHjNmTJu///3vYevXr7cFAlwRCQAAAABNQcnROue4N/47oWEh1jM5cv27t/z0HQqxxseZYmjyEhISvnd2lIhI27ZtAyIiR48eNY6bf2/7I0eOGCIiiYmJJ2yEkpKSAg23ExFZvXq1/dprr43z+/3qkksuqRsyZEhtZGSkNgxDCgoKbEuXLg31eP7vM+ro0aPqZMc40dzM3r59+xO+x4a2bdsWMmjQoPgjR44YF198sWfAgAF1UVFROiQkRIqLi0Pmzp3rqqur+/ZMtC5duvg//fTTQ4899ljkF1984Vy8eHFo/Xv133nnnVWTJk2q+uGjAQAAAAAa05ZSd8Qd7xRMPOj2tDVnl53X5ssXxmQutRnWPqivtaAUa2bO9pJEo7TQFv7WkIQzuaeYEpGqG5cetPqeYgcPHjzhExAPHDhgiIhERUV9p2xS6vvvMDo6OlD/Wic8O3L//v3fe60nn3wysra2Vi1YsOBwdnb2dxr6v/zlLxFLly79zpMhzbPZSktLT3iME83rjxeyZ8+ekPT0k/91nj59ekR5ebkxffr0iuPv+zVr1izX3Llzv/cEyoyMDN/bb79d7vV6Ze3atfZly5Y5X3/99fA//elPUeHh4fq2227j2nQAAAAAOMfW7KyInTKv8MYjtb4Ycza8Z+Knjw5PyzNO8P+0aBxcPtlKBBLTff7kizxnck8xf3Jvj9WFmIhIQUGB3TwLq6GVK1c6RUQuuOCCEz7VsaHu3bv7XC6XLiwstJeVlX3vtZYvX+4UEenVq9e3r7Vz586QmJgYfXwhJiKSl5fnOH5m5li1apXz+HUVFRWqsLDQfvz8oosu8oiILF68+Hv7HG/Hjh0hIiKjRo2qPX7difI0ZLfb5eKLL/b+/ve/d7/66qvlIiIffvjht6VeSMix3tHv9/PpCwAAAACNaMnGg0l35xbcahZiSkT/PKv9wsdHdKcQO8coxVqRur73Vmp1en/LtTKkru+kylNv2fgqKyvVo48+GtlwtmbNGvuCBQtckZGR+rrrrvteSXQ8p9Mp1113XU1VVZV66KGHvvNaW7duDXn99dfD7Xa7TJgw4dszsNq3b++vqKhQa9eu/c4Zla+99lrYihUrvldiXXvttbXR0dF64cKFrjVr1nynAJs6dWrk8TfZFxG5/fbbq202mzz77LORBQUF3ztzs+HTJzt27OgXEfn888+/U4B9/PHHznfeeSfs+H2//PJLe0lJyff+hptn2DW8AX9sbGxARGT37t0nPCsPAAAAAPDjvfP13tT7F266ucYbCBMRsRnKNzm7y7u/vTJ1rcXRWiUun2xF/F0GeuqyHzniXPanaKUDcvyllOayVobUDXq0wt9lYJO4qV+fPn08b7/9dtg333xj79Onj+fAgQMhixYtcgUCAXnqqacqoqOjT+ta68cee+zov//9b8c//vGP8LVr1zouvfTSurKyMmPRokWuqqoq9fjjjx8577zzvr2315133lm1YsUK59VXXx0/fPjwmqioKL127Vr7119/7Rg6dGjtRx999J3LJyMjI/XTTz9dcfvtt7cZNmxY/PDhw2vatm3rX7NmjWPz5s32Pn36eNasWfOdQiszM9P3xBNPHPnd734XPWDAgIQhQ4bUpqam+srLy438/Hx7eHi4Xrp06WERkdtvv71q9uzZYbfeemvsvHnzapKSkgIbN260LV++3HnNNdfULlq06Dt5Zs+e7fp//+//hWdlZXm6dOnii46ODuzcudP26aefhjocDrnrrrvc5raXXHKJx+Vy6VdffTW8vLxcmfc/u/vuu6tiYmK4lh0AAAAAfqQXl+/MeDWv+PqAPnaCktNm1P756q5vj+jVdrfV2VorSrFWxnvhz6sD0R19zi+nR4bs+/o7BY15yWRd30mVTaUQEzl2htT06dOP/PnPf4586623wj0ej2RmZnp/97vfVV599dWn9dRGEZG4uDi9bNmyQ9OmTYv48MMPXTNmzIgIDQ3VF154oec3v/lN1fFPgBw6dGjdzJkzy5566qnIRYsWuQzDkAsvvNCzYMGCwzt27Ag5vhQTERkzZkxtdHR02bRp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\n", "text/plain": [ "
" ] }, "metadata": { "image/png": { "height": 381, "width": 610 }, "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "df.plot(x='MB', y=['direct view', 'broadcast'], style='-o', loglog=True)\n", "plt.ylabel(\"seconds\")" ] }, { "cell_type": "markdown", "id": "c7bee30d-84c8-4391-9d26-66517858e297", "metadata": {}, "source": [ "# Tuning broadcast views\n", "\n", "As mentioned above, `depth` is a tuning parameter to exchange latency for parallelism.\n", "\n", "This can be set with `IPController.broadcast_scheduler_depth` configuration (default: 1).\n", "The number of leaf nodes in the tree is `2^d` where `d` is the depth of the tree ($d=0$ means only a root node).\n", "\n", "With a DirectView, the total number of request messages is $ 2 N $ and the number of requests to deliver the first message is 2 (one client->scheduler, one scheduler->engine).\n", "\n", "With a Broadcast View, the total number of request messages is\n", "\n", "$$\n", "N + 1 + \\sum_{i=1}^{d} 2^i\n", "$$\n", "\n", "\n", "Since we are talking about delivering messages to all engines,\n", "the metric of interest for a 'cold start' is how many messages must the last engine wait for before its message is delivered,\n", "because until that point, at least some of the cluster is idle, waiting for a task.\n", "This is where the parallelism comes into play.\n", "\n", "In the DirectView, the message destined for the last engine N must wait for N sends from the client to the scheduler, then again for N sends from the scheduler to each engines, for a total of 2 N sends before the engines gets its message.\n", "\n", "In the BroadcastView, we only have to count sends along one path down the tree:\n", "\n", "- one send at the client\n", "- two sends at each level of the scheduler\n", "- $\\frac{N}/{2^d}$ sends at the leaf of the scheduler\n", "\n", "for a total of:\n", "\n", "$$\n", "1 + 2^d + \\frac{N}{2^d}\n", "$$\n", "\n", "sends to get the first message to the last engine (and therefore all engines). This is a good approximation of how deep your scheduler should be based on the number of engines. It is an approximation because it doesn't take into account the difference in cost between a local zmq send call vs a send actually traversing the network and being received." ] }, { "cell_type": "code", "execution_count": 9, "id": "680d971e-2a13-472c-9b08-c1be00b8304b", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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1217dI0bN6588eLF8o0bN0pnzJihcV7/ww8/SC0WC40aNar8Ttddm2vr06eP/osvvvDcu3evaMCAAXr7MQ4cOCAiIsrLy+Pn5ubyw8PDzUREJ06cEBQUFPCeffZZbc2eBQAAAAAAAID6A0kxqJcOHDgg/O6772RNmzY1792795afnx9HRDR//vzSgQMH+t+8eZPXuHHjGo+fdfPmTV5ERIRp586dtzw9PSuSaUVFRSwpKclHKpVyqampBVFRURXllydPniyLi4vznz59utevv/5aYG+fMWOG16lTpwTPP/98+X/+858SPv/vDlelpaXMYrHmvObMmaPOy8vjnzp1SjB9+nSNPZl0J2FhYZbu3bvr9+3bJz5x4oSgffv2lUpCf/zxRw+hUEijR4++bTKqttfWvXt3g0gkon379omJSE1EpFar2fHjx0U9evTQ79+/X5yeni4ODw8vJyJKT08XExH16tVL7+L0AAAAAAAAAPUakmIN0L/3XJCvPHTZsybbDmkXVP7RkFYljm3v/98Zr/87me9Rk/0ndwsre7VPc7Vj2xvbzgkOXigJqc0+tbVmzRoPIqLXXntNbU+IERFJpVL68MMPS4cOHepX22N+/PHHJY4JMSKi1atXe5SWlrKPP/641DFpRETUrl0705gxY8q//fZbWVZWliAqKsqUn5/PS0lJkQYGBloWL15c6pgQIyJSKBQ17r12O6NGjdLu27dPvHbtWo8lS5aU2tszMzOFOTk5ggEDBuj8/f1ve67aXpuHhwc98cQThszMTFFRURHz9fXlMjIyREajkV5++WXNX3/9JczIyBC9+OKL5URkT55Rnz59kBQDAAAAAACABgdJMaiXTp48KSQi6tmzp8F5Xc+ePQ0CQe1eumKxmDp06FBlEP7ffvtNRESUlZUldBxjzO78+fMCIqJTp04JoqKiTJmZmUKLxUIxMTEG5wRbXXrmmWe0b7/9ttfmzZulH3/8can9eteuXSslIho7duwdSydre21ERD169NAfPnxYtGfPHvHw4cN1GRkZYqFQSL169TJ069bNcPDgQTERkclkoiNHjojCw8NNYWFhGOAfAAAAAAAAGhwkxaBeUqvVPCKi4ODgKgkXgUBA3t7etUrE+Pn5mXm8qvNKqFQqRkS0bt262/ac02g0jIiouLiYR0QUEhJS49LNu+Hh4UGDBw/Wrlu3zmPnzp3ixMREvcFgoG3btkl9fX0tCQkJd+ydVdtrI7L2+vrXv/4l37t3r3j48OG6/fv3izt27GiQy+Vcr1699D///LPkxIkTAo1Gw9RqNRs2bFiVpCUAAAAAAABAQ4CkWAP0ap/m6nspT/xoSKsS55LK2vjk6cdMMpms4M5b3j25XG4hIv6NGzd4jz32WKUElMlkouLiYl5QUFCNE1OMuZywkuRyOUdEtG/fvlsdO3as0pPMmT0Zd/36dZezUtalsWPHlq9bt85j3bp1HomJifqUlBSJSqXiTZ48WSMSVZlksoraXhsRUUxMjFEmk3H79+8XFRQUsFOnTglee+21MqK/yyR/+eUXsVarZUQYTwwAAAAAAAAarqpdZwDqgXbt2hmJiPbt21cl+7Nv3z6RyVSjHM8dde7c2UD09wyLdxITE2Pk8Xh05MgRUVlZmetMmwM+n88REZnNte9Y1qNHD2OzZs3MSqVSUlxczNavXy8lss5OWZP9a3ttRERCoZCio6MNubm5gjVr1nhwHFeRDGvZsqW5UaNG5n379on3798v5vF41LdvXyTFAAAAAAAAGogijUE4439/9Xvjp+ze7o6lPkBSDOole+Jn2bJl8sLCworkk1arpblz5yrq6jwTJ04sVygU3NKlS+WHDx8WOq83m82Unp5ekVQKDAy0DBkyRHvz5k3e22+/rXBOdqnValZcXFwRr6+vL0dElJeXd1c9y5577rlyvV5PX375pWzPnj2SyMhIU6dOnWqUEazttdn16NFDT0T0n//8x9PDw4N78sknK0okY2NjDYcPHxb9/vvvotatWxsdJ0EAAAAAAACA+snCcfT1gUutn/ryt2npZwu77z5d0ONQrsrf3XG5G8on7yPGmJyI7AOcCzmOu2PPIrDq0aOHceLEiZrk5GRZTExMYGJiolYoFNLOnTslCoXCEhgYWCeDu/v7+3PJyclF48eP9x0wYIB/bGysvlWrViYej0dXrlzh//HHHyKVSsUrKCi4bt/n3//+d8np06eFa9as8Th06JCod+/eepFIRJcuXeJnZGSIf/jhh6K+ffsaiIh69+6t//LLL2Wvvvqq91NPPaWVyWScl5eXZfr06TXq7TVu3Ljyf/3rX/KlS5fKjUYjPffcczXa726vjYiob9+++nnz5lFhYSGvV69eerFYXLGuV69e+v/9739SIqIe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z7iW0d3MmSu+DO24vCP25aiXjwt4gkdy+JgGlxSrpb62RyXHcZUSGxzHqRljB8maNHuSiH65zXF4RFRtuZwjxtjRalZFisVi4cGDB5Nut7+Pj4+/VCoVaDQa/5qcrz67l2vQ6635LIVCQW+88YbI8Vht27alYcOGWf73v//xNm3aFDBq1CgLEZHFYuEREcXHx3O9evWSazQauX0fo9FIP/30k1Amk9H7778v1Gq1FccLDQ2lyZMnc8uXL2dr1qzxe/PNNyteK35+fqTRVB47XigU0qhRo9i8efPYoUOHArp27coREf3000+84uJiNmLECEvbtm29HPd766236Mcff6TS0lLS6/U+9nXffPMN32Qy0auvvmoJDw/3dj6X8/kbNWpUJR4iookTJ7JDhw7Rrl27/J977jkLERHHcTwiIrFYLNNoNJXKARljxHFcxbHs985iscg1Gk2V5F11cnNzyWw2U3BwMN/V871+/XoBEdF7773HLBaLv/18EomEXnvtNXrttdeIMSZ03PfcuXPs008/rdVnU7du3SRBQUFVPsTT09P5//3vfyv+JQ0MDKRly5aZ+vbt66nRaDxdHSswMJCdO3eOFRYW+kskElebVLBYLAKdTud/p/c11D8Gg8GfiAjPHQA0VPgcA6g7HMdR5k1O8uctTvqPtjyVY+eLICJaGMOpRfxrXX89dK2r+6J8iHAcNb61V9oyb52iiam04v/qFuJRXnC85lzocxoT5xFLh36NdWeYD5MTuhPiFHWKV7GluFLPgE6STuVPyZ8yH/n1yEvuiq0uiMVif7KOHV9rD3tSrJXt8Ww163PImhRrSbakGGNsERGlEtFlsg7iP4aIehNR4v0MFFyLioriPD2r5i66devG/e9//6OsrKwqf6p5/PHHq5TF5eTkMK1WS126dOF8fHyqHK979+6W5cuX87KysnhEf/+Z4vTp0+y///0v78iRI7z8/PyKZJ3d9evXGRFxREQnT55kRET2JJkjhUJBbdq04Q4fPlwp3qNHjzIion79+t2xTJGI6MqVK/T555/zDxw4wLt69So5j8t148aNip8HDBhgWbRoEf/999/n7927l9e7d29LdHQ016pVK+5OvSxrqqioiBEROffWszt58iTj8XgUExNTZX23bt0sRFSlu1ZsbCx3/fp1l6WmtTVr1izzrFmzzBqNhs6fP8++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\n", "text/plain": [ "
" ] }, "metadata": { "image/png": { "height": 397, "width": 610 }, "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import numpy as np\n", "\n", "N = np.logspace(0, 11, 12, base=2, dtype=int)\n", "N\n", "\n", "dview_sends = 2 * N\n", "\n", "\n", "def bcast_sends(N, depth):\n", " return 1 + (2**depth) + (N / (2**depth))\n", "\n", "\n", "plt.loglog(N, dview_sends, '--', label=\"direct view\")\n", "for depth in range(5):\n", " plt.loglog(N, bcast_sends(N, depth), label=f\"broadcast (d={depth})\")\n", "\n", "plt.xlabel(\"N engines\")\n", "plt.ylabel(\"messages\")\n", "plt.title(\"Serial messages for last engine\")\n", "plt.grid(True)\n", "plt.legend(loc=0)" ] }, { "cell_type": "code", "execution_count": 10, "id": "688f856f-c2b4-47ef-93cf-16a5f5abc496", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABNAAAAMaCAYAAABH5ru5AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAABYlAAAWJQFJUiTwAAEAAElEQVR4nOzdeVzUdf4H8PdnLpiT+xQVEBRUPNIiRREtvPDKLN208ja1fpvV1pa22mq7W7vhtkl5FJjHpmbWird5hJqaV3mBB6iIiAfXHMw9n98fM0MjAoqKA/h6Ph7fx+jne73nw5exeff5vD+Mc04AAAAAAAAAAABQPYG7AwAAAAAAAAAAAGjIkEADAAAAAAAAAACoBRJoAAAAAAAAAAAAtUACDQAAAAAAAAAAoBZIoAEAAAAAAAAAANQCCTQAAAAAAAAAAIBaIIEGAAAAAAAAAABQCyTQAAAAAAAAAAAAaoEEGgAAAAAAAAAAQC2QQAMAAAAAAAAAAKgFEmgAAAAAAAAAAAC1QAINAAAAAAAAAACgFkigAQAAAAAAAAAA1AIJNAAAgEcYY2w3Y4wzxsY+wGuOdVxz94O6Jjw6GGN9GWM7GGNljDHbg34+7wdjbKkjnjnujuVRxBib4+j/pe6OBQAAHj0idwcAAADQ1DHGREQ0hohGEVFHIvIjIh0RFRFRHhFlEdFOzvkhtwUJ0AAwxnoS0Way/09eKxHdICJORHp3xtXQOBKK4UT0A+f8V7cGAwAA8IhAAg0AAKAeMcYCiGgTEXV1aTYQESOiNkQUQ0QDiaiciLwfdnxElE9EZxz3B3C3/yN78mwNEY3lnCNxVr2xRNSLiC4S0a/uDOQhu0n2z6ur7g4EAAAePUigAQAA1K8VZE+eaYhoLhEt55wXERExxpREFE9EzxBRijuC45y/5I77AtSgneN1OZJnUBXnfAERLXB3HAAA8GhCAg0AAKCeMMZiiKiv46/jOedrXfdzzjVE9CMR/cgYe+thxwfQAEkdr1q3RgEAAABQBRYRAAAAqD9xLn/eUNuBtY22YYwpGGPvMcYOMcbKGWMGxtg5xth/GGPNazincnEAxpg3Y+wjxlgOY6yCMVZW3XHVXKM9Y+x9xtgexlg+Y8zIGCt2nDORMSa8Yw/UAWMsyRHLRcff+zHGfmSMlTgKym9njHVzOd6LMfYhY+wsY0zPGLvseJ/SGm9iP68HY2wVY6zA5T39yBj7A2OM1XBOBGPsC5d7VTDGLjn64l3GmH+V4wWOvt/luL6ZMXaDMXaKMZbOGOtfzT3uq78ZYwmMsY2O/tIxxn5jjL3uiKXW4veOY1509PENxpiJMVbIGFvNGIuv5Z69GGNrHX1pcjyf5xhjPzDGpjDG7uq/NR2xcbLX9SIi2uVsY1UWo3DEOoEx9pPjvRoYYxcYY4sZY1E1XL/qszWAMbaZMXad2RcqeP1u4rzDe4hkjL3J7AsgXHDEVcYYO+Bor/G5ZIx1ZIwtY4xddPzcNYyxPMbYFsfPUOY4bqyjn3o5Ts1w6afK91fHuMMZY58xxs44nmsNY+wIY+wdxpi8hnOc9wtnjLVgjC1x+X26wBj7F2NMVcs9hY73ddzx+3SDMbaBMZZQ9fpVzqtxEYH7jclxjfaO30/Xn98+xtgrjDHx3fQnAAA0YZxzbNiwYcOGDVs9bET0HNkLoHMianWP14gle50j53XMZB+d4/x7CRElVHPebsf+PxFRruPPBiJSE1FZNceNreYaN13uYyGiMpe/cyLaSESias4b69i/u47vNclx3kUimkZENrIXki93uaeeiHoQUQARnXC0aYnI6HLMhlru8VGV96B23MP592+ISFDlnMccxzmPMRFRaZXr9K9yzsoq+8uqxHjgQfW349yXqryPUsezwoloHREtdfx5TjXnKolou8u5tip9biWiV6s5b3KV+HR067PJicjzLn/2RY7N+R5KXNrWuRwnI6KtVX4Wrv2kJ6Khd3i23nR5n6WOvn79LuOsrR8PV+nDUsers+0QESmrOW+g4304jzNU6X9ORDGOY0c6+sR5fLlLPxUR0aE6/s4Nd/SZ8z4VVZ7T40QUVM15zv1DiaiYfv9dMtOt71dczblisteFdP1MK3X587Mu+8KrnDvH0b70QcbkOP9VuvV3SOt4Npx/30VEsrr0LzZs2LBha1obRqABAADUnyMuf05j9gUF7hpjzIvsXzRbEtEPZE/kSDnnCiKKIKLlRORDRN8xxrxruMxfyP6FdQDZv/yp6NYFDWqTRUSTHPf35Jx7E5GCiF4k+5f1gUQ0oy7v6S4FENF8Ivo7Eflxzr3I/n73E5EnEaUS0UKyv6+eZE8AKYloItm/8KYwxgZWvShj7I9E9DbZV3acRkQ+jv6QE9HzZC9MPoqI3qly6r8c1z9IRI9xziWccx/HeY8T0b/JZREGxlgiEb1A9uTJDCJSOfrOk4hCyZ5g3FvN+76n/mb2qcJLyD6zYBMRRTjiU5G9KP9gsicVarKMiJ4me7IkhYjkjj73IaL3yN6nnzpHBznuKSOiTxx/TSeiFpxzuePZ9CP78/aNow/uiHMezDkPJqLLjqbhzjbO+XCXQ1PJPi3aSESvkD0h5U32BTl2k72P/8sYa13DrYLInkT9nIhCHP2kIKK1NRxfF8eI6HUiiiL7z8+H7FNShxDRWbL/3v2jmvM+I/uzvIGI2nDOPR3970VEiWT/2RqIiDjnqx399LPj3D+69FMw5/zxuw2WMfY4Ea1y3Psjsj93crInKZ8k+/MeR/bnoyZLyb6IQZzjd0lBRBPI/vPpSvbnuapZZH8+rGTvL5Wjr8KJaAsRfXm37+FBxcQYG0r2n4Oe7M98kONZlpL9eTtD9iTs/PuMDQAAGjN3Z/CwYcOGDRu2prwR0df0+wgGI9lrns0je0Ij4A7nznOc9wMRsRqO2eg45q0q7bvp9xE67Wu5h/O4sXV8Xz0d512oZt9Yur8RaJyIMqrZ34J+H9FjIqKoao75yrE/vUq7N9kXcjAT0RM13P9Jx/VLiEji0l7huGb8Xb6Ptx3Hb36Az1Ft/e18xk64xl1NPLeNnCJ74owT0QUi8r3D+9ng0vYE/T5KR/gA3+dFx3WTqtnXkn4fITSlmv0yIjrv2L+slmfrv/cR39Lq+vEuzot0PHs6chnFRESBLnHdNtKrluvd0+9tlWvsdVxjRg37fYjoiuOYrlX2OWM+SUQe1Zz7mWP/zirtCvp9lOJ71ZwnJnvy635GoNU1JqHLc/dMDX0R4YjbTPbE6wN53rFhw4YNW+PaMAINAACgfk0i+6gZExFJiOgpIppJ9qTYdcbYL4yx0YxVW3vrZcfrfM45r+H63zhek2vYv5lzfvKeIq8F53wP2afOhTPGQh/09ck++qzqPfOJ6Jzjr99yzs9Xc94Ox2v7Ku3Pkv3L+17O+S/V3ZBzfoCI8sieOOjiskvteA25u9Arjw+82xpgd1JTfzuuP8zx139zzk3VnL6A7Imb6jifsaWc85Iajvmv47U3+70Om/M9isk+4uxhGE72UXZFVM0oJc55BRF97DyW1Vwz7p/1E17NOOd5RHSK7Em+Ti67NPT7KL27fb7uG2OsFRElkH3E1cLqjuGclxLRZsdfa/p8SeWcG6tp/8HxWvX3sB/ZR7kZiOg/1dzTTPbPy/tR15iSyJ6cvcg5/766C3LOLxDRAbIvwJZ0n/EBAEAjhVU4AQAA6pEjofEmY+wjInqG7MW/u5J9mhcj+xTAFUQ0lDE2inNuIyJi9sUBwhyX+ZYxVtNUOInjtdrFBMg+7fGeMcZGENEYsk8fDSD7FLmqQomo8H7uU4WBfk+UVXWdiFqTfZRJda45Xn2qtHd3vMYzxopqubev47U5/d53m4hoHBEtY4x9TvYv4kccX/ar8yPZE6aPEdFuxthiso96uWMf3UN/R5J9qiZR9dNCiXNewRg7QvbpgFU5+2UGY2zqHcKTkT1Zdp3sP59zRBRNRPsZYwvInmw5U0uy93495njdwzm31nDMTsernOzTOk9X2a8not/qITYiImKMJRPReLKP0Auh31cVdVWZAOWc6xljPxFRbyLayhj7jOxTOU/U8h4fBOfPXUJEF6rP3xORPelMVPPny6Ea2q84Xqv+HnZ2vP7KOa9ppdU9NQVzl+oak7MvQu/w2eDleK2pLwAAoIlDAg0AAOAh4JxfJ6JFjo0YY0Fkr031F7J/IXuOiPYR0aeOU1xHo9xN7TRZDe037iVexpiIiNaQPennZCR7oXvnF/sAso8IqnalvvtwrZYkjPPeV++wv+qKec7+lFL1SY2qXPvzT2RPxnQne320d4jIwBjbT0Tfkn30VuUqqpzz845k1AKyT73sSUTkWCFxCxEt5pwfc73ZffS36+qfNfUJUc0JTme/OGtu3YmMiIhzbmWMvUD2ZGIk2UcNpRJRCWNsJ9nr82U+4GSa8/fgSi3HFFRzvKtiZ5L6QWOM/YeIXnNpMpN9OrAz0epL9uey6u/LRLInzWKJaK5j0zLGssg+wnQV59zygMN1/tyFZK8Ldyc1fb5oamg3OF6rftdwPq/38qzerbrG5OwLCd1fXwAAQBOHKZwAAABuwDm/xjn/kuyjapyjpsa7HOL6b7QX55zdYQuv4Vb3OoplEtmTORVE9Ecias7txc0D+O8F351fdGscvtKAOPtz/l30JeOcL3WeyDkvJvvKn8lkn3Z2jOxftnuTvRj9ScZYmOvNOOfpZK+b9DoR/Y/sqwKGk73w/RHG2HtV4rvX/r7fvnf2y9C77JeLLu/xMNlHoI0he6H5PLIniUY43vPGWqZR3g+PWvbdKWFXL6O6GGMDyJ48s5K9TlcU2etw+bn8/A46D3c91zG9swPZf/6LiSib7CO/BpI9EXmQMaagB8v5cz92lz/3sQ/ovnfzvNbXCMaaOPvi+7vsizkPOT4AAGggkEADAABwI875TbInG4jsUxOdrrn8ue3Di6jSc47XuZzz/3DOXUf2kCMx4n/7aQ2Wsz/vqS+53Y+c8z9yzh8j+3ufQvYRRpFUzep8jiTpp5zzYWQfDfUEEX1P9iTCXMZYB5fD77W/XUcY1lZDq6Z999sves75Ss75y5zzVmTvi7+TPQkygOwJwwfF+V5b1nKM6/S6exp9eY+cP78vOecfcM5zqxl9V+PoJs65hXP+A+d8Cue8Ldl/Xn8i+6ipx4ho9gOO1/lzj3aMfnxYnD+T2p7V+qipWJv7+h0AAIBHBxJoAAAA7ucs8F5ZAN5RtNr5xW74Q4/o9/prx2rYn0DV1+dqqJz1zHoxxu676D3nvJRzvpiInCPJet3heM45P0T2REsB2f8brIfLIffa33n0e0H/HtXsJ8aYlG5dFMGVs1+erWF/nXDOL3DO3yOi1Y6mWvuljo46XuMZYzVNo+vjeNUR0ZkHeO87qfXnxxhrSfZRaXeFc17EOf8XEf3b0VS1H53TUO91BKLz564gor73eI174eyfTrWMquv5sIJxcPZFG8ZYu4d8bwAAaESQQAMAAKgnjLEIx2p3tR0jo99XUfy1yu6ljtdpjLHYWq7BGGN3U7+qLsodr3HV3E9ERPMe8P3q27dkT6p40h1WYWSM+bj8WXCHETrO2meV0woZY5IajiVHYXhnTSzXqYj31N+Oel7OEYx/ZIxVrf1GRDSNfi8GX9VSx2tXxthLNcXtiMO1X2p8jw639csDsI7siSM/Ippcdafjd+lPzmN5/Rbhr6rGn5/D36iaZBdjTFzDCrxONfWjM2nqfbcBuuKc55B9VUkioo8YYzXWMWSMSRljD+rnuI1+/z2cXs29REQ04wHd627tIKJ8x5/n1zbt2PV3AAAAHj1IoAEAANSfdkR0hjG2jjH2PGOsctoSY0zOGBtM9hXnIhzNn1Y5/x9kH2EkJ6KfGGMvu47aYIw1Z4xNIqIjdGvx+Qdhu+P1fcbYUOeXSsZYDBFlkn06oq6mkxsaRx2zdx1/HccYW8MYa+/czxjzZIz1YIylkX0xBycVEZ1njM1kjMW59IOAMfYUEX3oOG6ryzl/Y4ytZYwNY4w5V/UkxliQo9B8BNmnOG53Oed++vvvZB+9GEdE3zlGOznf03TH/rIa+mUL2RNTRETpjLEPqjynPo54/kf2RQKcBjLG9jPGJjnv5zhe5ngmR1fTL/eFc36J7DXCiIj+wRib7EzsMMZaE9FGso/yqqCHn+B1/vymMMbGOxOMjLEWjLGviegPRFRazXntyF5D73XGWGtnMs2RWHuWiN5wHFe1H085XoffR/L8NbIvVNGeiPYwxp52Josdz3c7xtgsIsql2qdc3jXOuYZ+n+48jzH2mmOEJDHGWhDRWvr98/Ch4PbVdF8j++9kMhFtY4zFu/wsRIyxLowx5+cxAAA8qjjn2LBhw4YNG7Z62IioH9m/lLluFWRPZri2WYjovRquEUVEp12OtZK9IH1FlWu8XOW83Y72sXeIsdrjyF4M/rzL9U1kH2XjjHcsEV10/D2pyrljHe2769hfSY7zLtY13ru9BhHNIvsoJuf70pG9jpnVpe2Cy/HeVfrZ5Oh/i0tbLhGFuZzz7yrnlJN9xJBr23tV4rrn/nacP67K+ypxXIOTfXXPrx1/freac+Vkr83mGl+Zy/2dW4bLOcOq7Ktw3NM1ho1EJKrjM1Dje3Tsl5F9FJNrP5W6/N1A9gUR6vxs3WV8Sx3XmVOlXUL2qYCuv9Oucb1P1Ty7RNSpSj8aHM+X6/N4iIhUVe4XQ/bkFyf7iMYrjr7bW8f3M4Bu/TxyrvxqqhJXyyrnOdvDa7huuPOYavZJyJ4QdP0Zlrj8+RmXfSFVzp3jaF9azXXvOSaX3yGjy3X0jr5w/V2v9lxs2LBhw/ZobBiBBgAAUE8451uJqA0RvUVEP5A9QUJkn05XRvaaTv8moo6c87/VcI3zRNSZ7NPwdpH9i6aK7F/qjhPRZ2Svj7T8AcdeQkRPEtEXZK/ZRWT/QvkDEfXiLqtUNiac83lE1JHsI5nOkX1anZyIrhLRZiKaSkTxLqeoiWgQ2X9Ov5C9CLqS7Im3Q0Q0k4g68VuL/s8nov8j+9TKs457eBDRZbLXBkus+vO+3/7mnGcQUSIRbSF74suD7InXPxLRKCLychxaVs25Os75M473uY7syRgp2RMd54nov2RfWXOay2k7iehFsifmTpA9gaYke/LnRyJ6mYgGc84ttcVdV5zzCrInfSaSffRmBdmTapeI6EsiiuOc/6/mK9QPzrmJiJ6m30eN2sj+O7qd7P0wt4ZTs8netwvJXh+sjOy/32oi2kv2kVEJnHO160ncPgUzmX7/eQeTfXGFW1aDvYu4N5N98ZJ5ZP88MpA9aawmop+J6C9EFMvto/8eCEdfpRDRm0R0kux9ZSX7SMtEsn/OOZU9qPveRVwZZP+8/jfZR/hZyP57U+yI6S2yJ+EAAOARxTjn7o4BAAAAAOqJYyraJbKvUNmbc77bvREB1MwxNfpHIrrEOQ93czgAAACVMAINAAAAoGkbRfbkmZrso+gAGjLnQhDbaz0KAADgIUMCDQAAAKCRY4y95yjI3pwxJnC0+TDG/khEXzkO+9wxBRLAbRhjQsciG/1dF0BwLFqwluy1I81E9B+3BQkAAFANTOEEAAAAaOQYYyvo95UvTWSv0eZN9vprRPYpcYM554aHHx3A7xwrfZpdmtREJCJ7LTsie020qZzzxVXPBQAAcCeRuwMAAAAAgPv2OdkTET2IKITsybMSsi80sYKIlj3ogv4A98hK9gUp+hFRHBEFEpGQ7HX6sojo35zzo+4LDwAAoHoYgQYAAAAAAAAAAFAL1EADAAAAAAAAAACoBRJoAAAAAAAAAAAAtUACDQAAAAAAAAAAoBZIoAEAAAAAAAAAANQCCTQAAAAAAAAAAIBaiNwdANyOMXaBiFREdNHNoQAAAAAAAAAANBXhRKTmnEfU9UQk0BomlUgkUgYGBoa4O5D75eHh4U9EZDQab7o7FgCAe4XPMgBo7PA5BgCNHT7H4EG4fv260mKx3NO5SKA1TBcDAwNDcnJyFrs7kPu1b9++yURECQkJjf69AMCjC59lANDY4XMMABo7fI7BgxATEzO5sLDw6r2cixpoAAAAAAAAAAAAtUACDQAAAAAAAAAAoBZIoAEAAAAAAAAAANQCCTQAAAAAAAAAAIBaIIEGAAAAAAAAAABQCyTQAAAAAAAAAAAAaoEEGgAAAAAAAAAAQC1E7g4AAAAAAAAAABoeq9UqKikpaa/X6yMtFosPEQndFYuPj48/EVFeXt5kd8UADY5VJBKVSqXSPF9f35NCodBSnzdDAg0AAAAAAAAAbmG1WkWFhYUDLBZLS8aYVCgUit0Zj1QqFRERCQQCf3fGAQ2LzWbz1Wq1oQaDoXloaOjm+kyiIYEGAAAAAAAAALcoKSlpb7FYWopEIoWvr69WKpWqBQIBd1c8Op3On4hILpffdFcM0LDYbDam1+vFJSUlCovF0rKkpKR9QEDAr/V1P9RAayAYY0rGWChjLJSIxJxz5u6YAAAAAAAA4NGk1+sjGWNSX19frVwuN7kzeQZQHYFAwOVyucnX11fLGJPq9frIer1ffV4c6uRNIrri2OI0Go3CzfEAAAAAAADAI8pisfgwxsRSqdTs7lgAaiOVSs2MMbGjTl+9QQKt4fiEiJo5thNKpVLr5ngAAAAAAADg0SUkso/ycXcgALVhjDmf0Xpd5AI10BoIzrmGiDRERIwxs8sDAAAAAAAAAAAA1WDs4VTAwgg0AAAAAAAAAACAWiCBBgAAAAAAAAAAUAsk0AAAAAAAAAAA7kFsbGxgbGxsoLvjqCojI0OqUqlCMjIypO6OpalAAg0AAAAAAAAAoBHZuXOnRKVShcyZM0fp7lgehPz8fMHEiRO9o6Kigvz8/EJiY2MDZ8yYoSopKXk4Bc7uAhYRAAAAAAAAAAAAtzh37pywb9++/sXFxYK+ffsaoqOjLUePHpV89dVX8l27dnn8+OOPN/39/d2+0CJGoAEAAAAAAAAAgFvMmDHDq7i4WDBv3jz12rVrS//+979rtm7dWjxp0iRdXl6e6C9/+YvK3TESIYEGAAAAAAAAAFAjm81Gn332maxLly4B/v7+IdHR0UGvvfaaV1lZWa3TC1euXCnt27evX1hYWLC/v39I586dA+bNm6cwGAy3HatSqUKSk5P9CgoKBGPHjvUODw8PCggICOnevbv/ihUrbqljNn78eO9hw4b5ERGlpqYqVCpViHPbuXOnpOq1d+zYIUlOTvYLCQkJDgkJCR46dKjvqVOnGsSMxPPnzwuzsrI8wsLCrNOnT9e57ps9e7ZGJpPx7777TqrVat0+lbNBdBgAAAAAAAAAQEP0xhtvqNLT0+WBgYG20aNH68RiMW3dutUzJSXFz2w2M7FYfNv0wkmTJnmtXr1aFhwcbBswYIDey8uLHzlyRPLxxx8rs7KyPDZu3FgsFotvOae8vFyQnJzsr1Kp+KhRoyrKy8sFmZmZ0mnTpnkXFhYK3n77bR0R0aBBgwxERGvXrpXGx8ebEhISTM5rhIeHW12vuWXLFs/t27d7JiUlGV988cWKM2fOiHbt2uWRkpLid+jQoRsBAQG2eum0u7Rr1y4PIqJevXoZhULhLftUKhXv2rWrKSsry2P//v3i5ORkU7UXeUiQQAMAAAAAAAAAqMbevXvF6enp8pYtW1p37959w8/PjxMRzZ07V92/f3//69evC5o1a3ZL0iojI0O6evVqWb9+/Qxff/11qUwmq9w3Z84cZWpqqiItLU3++uuv3zLiKicnR5SSkmJYsWJFqTOZ9NZbb2mTkpICPvroI9Xw4cMNUVFR1uHDhxu8vb1ta9eulSYkJJjmzJmjqSn+bdu2ea5Zs6bYNfn07rvvKtPS0hTp6enSd955R1fTua7qulhBYmKisU+fPndMeJ07d05ERNSqVStLdfsjIiKsWVlZdO7cORESaAAAAAAAAADQqMR9mBXiplvX+b4nZiZevdebLV++XEZENGPGDI0zeUZEJJVKafbs2WrnVEpXixYtUohEIlq8eHGZa/KMiGjWrFmajIwM2dq1a6VVE2hCoZDmzZundh2J1apVK+uECRN0qampipUrV0pnz56trUv8Q4YM0VdNPE2cOLEiLS1NcfToUQkR3VUCLTU1VVGX+xIR3U0CTa1WMyIiLy+vahcJUKlUNiL76Ly63v9BQwINAAAAAAAAAKAaJ06cEBMRJSYm3pYMSkxMNIlEt6ZVdDody87OFvn4+Ng+/fTTapNOEomEcnNzb8vHhIaGWlu1amWt2p6YmGhMTU1VOGOpi06dOpmrtrVo0cJKVLeklFqtvuck5P3g3J5XY8ztJdCQQAMAAAAAAAAAqI5GoxEQEQUHB99WK0wkEpG3t/ct7SUlJYxzTiUlJYK6jtry9/evth6Z895qtbrOo7CqxkdE5Ky9ZrXelqt76FQqFSciKi8vrzZD5ux/50g0d0ICDeqVb4FIZpTbbst4AwAAAAAAQON1P9Mi74VOp/MnIpLL5Tcf5n2VSqWNiIRFRUWCqKioWzJOFouFysrKBEFBQZXt3t7enIioXbt25v3799cp1ps3b1abICsqKnJ7Eqm+aqBFR0dbiKjaEXlERBcuXBC6HudOSKBBvTHnqgNCciVejDPSlp1PkQ1p8aNAJTG6Oy4AAAAAAACAuxEXF2c+efKkOCsrSxIVFaV33ZeVlSWxWG7N6yiVSt66dWvL2bNnxcXFxcy1btqdFBYWCvPy8oSRkZG3JOqysrI8nLE425x10h7WKLL6qoGWlJRkJCL66aefPKxWK7nWf1Or1ezw4cMST09P3q1bN7cPzHF7ETZougw/XunHuH0UpvWStqtmUc50w96iGDeHBQAAAAAAAHBXxowZU0FENH/+fGVxcXHlNEO9Xk8ffPCBqrpzpk6dqjWbzTRlyhTv0tLS26YmlpSUsMOHD99Wz8xqtdKsWbNUrkmx3Nxc4VdffSUXiUT0wgsvVCbw/Pz8bEREBQUFwqrXqQ9qtfpqXbbaVgZ1FR0dbU1MTDQWFBQI09LS5K77PvjgA2VFRQUbMWKEXqFQ3HUisr5gBBrUG+ngluuLfjg9TVkq8iAiIpNNafypaKQ5pzxHNqj5JmGw7K5+oQAAAAAAAADcoWfPnuZx48bpMjIy5PHx8YEpKSl6sVhMW7du9VSpVLbAwMDbplVOmDBBf+zYMcmyZctkHTt2DOrVq5chLCzMWlpaKsjPzxcePHjQY+TIkRVdu3Ytdz0vJibGcuzYMXFCQkJAUlKSQa1WC9avXy9Vq9Vs1qxZ6ujoaKvrscHBwbb169dLp0yZwsPCwqyMMRo9erQ+IiLC/cXN6mD+/Pnlffv29Z81a5YqKytLEh0dbTl69Khk//79koiICOtf//pXtbtjJEICDeqRKFSmvtTBWOJ13eLZPFcmIZNNTkRku6aP0S49Fynp6PujZ7+ww0zA3J5JBgAAAAAAAKjO/Pnz1VFRUZb09HT5ihUr5D4+Prb+/fsb5s2bp+7WrVtAdecsWLCgvG/fvob09HT5nj17PDQajcDLy8sWGhpqnTp1qtZ1NJmTl5eXbd26daUzZ85UrVq1SqbVagXR0dHm6dOn68aMGXPL8SKRiJYvX14ye/ZsVWZmplSn0zHOOXXv3t3U2BJo0dHR1t27d9/461//qtq9e7fHrl27PAMCAqzjx4/Xvf/++5q6TIOtT8y5JCg0HIyxI6GhoSE5OTmL3R3L/dq3b99kIqJu7R5fVpF5Kdmar3vMdT/zllyW9gvLFEepbrgnQgCAO3N+liUkJDT6z2UAeDThcwwA6iovL2+yUCj0b9my5UMt2l8Tdy0i8LCoVKqQ+Ph40/bt24vdHUtjdOnSJX+r1XozMjKy1n/nYmJiJhcWFl7lnHep6z1QAw0eCoG3xKB4MTpTOrD5UiYTVn4g8DJT84o1ea/ovrvQmxusGBEJAAAAAAAAAA0OEmjwUEk6+11STm27UBTjlUWM7HPFOQksOeWJmi+yXzH9WtzSzSECAAAAAAAAANwCCbQGgjGmZIyFMsZCiUjMOb9tpY6mgnkKLfJnI3bJno9cyLwkBc52XmHx02+8PFa7/NxgW7nJ050xAgAAAAAAAAA4IYHWcLxJRFccW5xGo1G4OZ56J45S3VBOi02XPOa3iYTM5Gy35use0yzOmW7IKmqLGn0AAAAAAADQ1KnV6quof9awIYHWcHxCRM0c2wmlUql1czwPBRMwLh3Q/JDi5eg0QaDnmcodJpvCuKfoOe2XZ/5gKaxQuTFEAAAAAAAAAHjEIYHWQHDONZzzQs55IRGZGWOP1NArYYhMrZwUs8qjV/Aakggqk4e264bWumXnpus3XX6CW21NdlorAAAAAAAAADRcSKBBg+LZIzhbOSVmgbCl4nBlo5VLTMeKB2i+yJ5gPlce6MbwAAAAAAAAAOARhAQaNDgClcSoGBO1UTqoeQaTiW4623m5uVnFtxem6L690IcbrCJ3xggAAAAAAAAAjw4k0KDBknT0y1dOi10ojvXeTYysRETESWA5W95T8/npqcajN8PdGyEAAAAAAAAAPAqQQIMGjXkIrbLh4T/JRkUuFHhL8p3tXG/1NWwueFm77NwQW6lR6s4YAQAAAAAAAKBpQwINGgVxpOqmYmrsUklX/w0kZEZnu/WyrrNmyZnphp+utuf8kVp3AQAAAAAAAAAeEiTQoNFgAsal/cKOKMa1ThMES7Mrd5htcuPea89ql5x5wXJF5+XGEAEAAAAAAACgCUICDRodYZBUo5zQZo1HUsgq8hBonO22G4Zo3bLz0ys25j/JrTbmzhgBAAAAAAAAoOlAAg0aLc+EoDPKKbFponDFocpGGxebfy3pp/k8e6L5TFmwG8MDAAAAAACAJi42NjYwNjY20N1xVJWRkSFVqVQhGRkZqBn+gCCBBo2aQCk2ykdHbZIOafEVk4tuONu52hxasfbiZN2avKdtFRaxO2MEAAAAAAAAeJB27twpUalUIXPmzFG6O5b7tWbNGs//+7//Uz311FN+ISEhwSqVKuTll1/2dndcVSGBBk2CJM63QDktdpG4rfcuYmR1NDPLOXWCdmH2VOPhG5FuDRAAAAAAAAAAbvPJJ58oly5dKj99+rQ4ODjYeucz3AMJNGgymERolT0TniX/Q6svBD6SS852rrf6GLZeeVH79dlh1hKjzJ0xAgAAAAAAAMDv/va3v5UfOnTo+pUrV4o++eSTcnfHUxMk0KDJEUUoixWvxH4teTwgk0TM4Gy3FlR01H55ZrphZ2EHzrk7QwQAAAAAAIBGwmaz0WeffSbr0qVLgL+/f0h0dHTQa6+95lVWVlbr4nUrV66U9u3b1y8sLCzY398/pHPnzgHz5s1TGAyG245VqVQhycnJfgUFBYKxY8d6h4eHBwUEBIR0797df8WKFbfUMRs/frz3sGHD/IiIUlNTFSqVKsS57dy5U1L12jt27JAkJyf7hYSEBIeEhAQPHTrU99SpU6L77JYH5qmnnjK1adPGKhA07BRVg+kwgAeJCRiX9m12VNLJ96x+Q35/61V9OyIiMttkxv3XnzGfK+8gHdhig6i5vMy9kQIAAAAAAEBD9sYbb6jS09PlgYGBttGjR+vEYjFt3brVMyUlxc9sNjOxWHzbCI1JkyZ5rV69WhYcHGwbMGCA3svLix85ckTy8ccfK7Oysjw2btxYLBbfWq67vLxckJyc7K9SqfioUaMqysvLBZmZmdJp06Z5FxYWCt5++20dEdGgQYMMRERr166VxsfHmxISEkzOa4SHh98yBXLLli2e27dv90xKSjK++OKLFWfOnBHt2rXLIyUlxe/QoUM3AgICbPXSaU0QEmjQpAkDpVrF+DZrjfuvHzfsK0oho01FRGS7aWylW3Fuuri97y7pgLADTCTAhwYAAAAAAADcYu/eveL09HR5y5Ytrbt3777h5+fHiYjmzp2r7t+/v//169cFzZo1uyVplZGRIV29erWsX79+hq+//rpUJvu9ktCcOXOUqampirS0NPnrr7+ucz0vJydHlJKSYlixYkWpUCgkIqK33npLm5SUFPDRRx+phg8fboiKirIOHz7c4O3tbVu7dq00ISHBNGfOHE1N8W/bts1zzZo1xcnJyZVJtnfffVeZlpamSE9Pl77zzju6ms51VdfFChITE419+vQx3fnIxgMJNHgkeHQLPCuO87moz8zvY8nTxBMRkY1E5uMlyZYLmjhpcrP14ljvq24OEwAAAAAAoFFQfhIW8lDv9/sf63xfzZsF9/xdb/ny5TIiohkzZmicyTMiIqlUSrNnz1Y7p1K6WrRokUIkEtHixYvLXJNnRESzZs3SZGRkyNauXSutmkATCoU0b948tTN5RkTUqlUr64QJE3SpqamKlStXSmfPnq2tS/xDhgzRuybPiIgmTpxYkZaWpjh69KiEiO4qgZaamqqoy32JiJBAA2ikBAqxSf6HVltMp0pPGH68MoRrLYFERFxjDq5Yd3GSKEp1QDqoxS6BXGR2d6wAAAAAAADgfidOnBATESUmJt6WDEpMTDSJRLemVXQ6HcvOzhb5+PjYPv3002qTThKJhHJzc2/Lx4SGhlpbtWp12yqUiYmJxtTUVIUzlrro1KnTbd9vW7RoYSWyTxm92+uo1epHfsAJEmjwyJG087kibu21SL/pcnfzqdIk4iQkImY5r+6mXZgd69EzeIPHEwG57o4TAAAAAAAA3Euj0QiIiIKDg28r+yMSicjb2/uW9pKSEsY5p5KSEkFdR235+/tXW1rIeW+1Wl3nKvtV4yMictZes1pvy9VBLZBAg0cSEwtssqEt91o6+p7Wby4YZCsxRhARcYPV27D9yhjzqdIT0iEttgj9PCvcHSsAAAAAAEBDcz/TIu+FTqfzJyKSy+U3H+Z9lUqljYiERUVFgqioqFsyThaLhcrKygRBQUGV7d7e3pyIqF27dub9+/fXKdabN29WmyArKioSEBGpVCq31e5GDTQk0OARJwpXliheiVlm2FHYyXTkZl+ycCkRkbWwIk775ZkoSdeArZ59Qn5jrNbViQEAAAAAAKAJiouLM588eVKclZUliYqK0rvuy8rKklgslluOVyqVvHXr1pazZ8+Ki4uLmWvdtDspLCwU5uXlCSMjI29J1GVlZXk4Y3G2OeukPaxRZKiBRlTn4X8ATQ1jjKRPN/tVMaFNmjBUdqJyh4VLTQeuD9MuzHnJkq/1cWOIAAAAAAAA4AZjxoypICKaP3++sri4uHJkhV6vpw8++EBV3TlTp07Vms1mmjJlindpaeltozFKSkrY4cOHb6tnZrVaadasWSrXpFhubq7wq6++kotEInrhhRcqE3h+fn42IqKCggJh1evUB7VafbUuW20rgzZWGIEG4CD099QpxrVeZzx4/bhx77VB3GD1IiKylRgjdCvPTxO39dktHdh8PxML3DZsFgAAAAAAAB6enj17mseNG6fLyMiQx8fHB6akpOjFYjFt3brVU6VS2QIDA2/7fjhhwgT9sWPHJMuWLZN17NgxqFevXoawsDBraWmpID8/X3jw4EGPkSNHVnTt2rXc9byYmBjLsWPHxAkJCQFJSUkGtVotWL9+vVStVrNZs2apo6Ojra7HBgcH29avXy+dMmUKDwsLszLGaPTo0fqIiIhGVdxs3bp1nhs2bPAkIrp+/bqAiOjIkSOS8ePHexPZk4X//Oc/1W4MkYiQQAO4jUd84Hlxe980feal3pZczZNExMhGIvPJ0qctFzVxnk83Wy9p51Po7jgBAAAAAACg/s2fP18dFRVlSU9Pl69YsULu4+Nj69+/v2HevHnqbt26BVR3zoIFC8r79u1rSE9Pl+/Zs8dDo9EIvLy8bKGhodapU6dqXUeTOXl5ednWrVtXOnPmTNWqVatkWq1WEB0dbZ4+fbpuzJgxtxwvEolo+fLlJbNnz1ZlZmZKdTod45xT9+7dTY0tgXb8+HHx2rVrpa5t+fn5wvz8fCkRUbNmzawNIYHGOL/r6bjwkDDGjoSGhobk5OQsdncs92vfvn2TiYgSEhIa5XsxZ5eF6LdfGcI15mCXZi6KVB6UDm6xS6AQN6k53QBQvcb+WQYAgM8xAKirvLy8yUKh0L9ly5YPtWh/Tdy1iMDDolKpQuLj403bt28vdncsjdGlS5f8rVbrzcjIyFr/nYuJiZlcWFh4lXPepa73QA00gFqIY72vKqfFLhHH+WwnATmrQzJLnuZJzcKcacYD16PdGiAAAAAAAAAA1Dsk0ADugIkENtmQlj/Lx0R9LvDzyKvcYbR6GXYUvqBNP/us9YZB7sYQAQAAAAAAAKAeIYEGcJdEzRWliikxyz26BX5PYlY5/9x6taK9Nv3Mq/rtVzpjSjQAAAAAAABA04NFBADqgDFGnn1Cj4s7+Z3Xr7/Uz3qlogMREVm4p+mXG0Ms58o7SAc2zxSFK0vcHCoAAAAAAAA0Emq1+qq7Y4DaYQQawD0Q+npUKMa2/t6zb7PlzFNY5my3lZrCdf/NnVbxw6We3GQVujFEAAAAAAAAAHhAkEADuA8ejwfkKabGfi6KUv1MRPb5m5yE5lOlfTSfZ082nSxt5t4IAQAAAAAAAOB+IYEGcJ8EMpFZPjJyu+zZ8MVMKa4cdst1lkD9/y5N1P03d4BNa5a4M0YAAAAAAAAAuHdIoDUQjDElYyyUMRZKRGLOOXN3TFA34hjvIuW02C/FHX23kYCZne2WC5onNAuzpxv3X2vtzvgAAAAAAAAA4N4ggdZwvElEVxxbnEajUbg5HrgHTCSwyQa12C9/Mepzgb/H+codRpvKsPPqH7RfnXnOel2Pny0AAAAAAABAI4IEWsPxCRE1c2wnlEql1s3xwH0QhcnLFJNjVnokBH1HYkGFs91apG+rTT/7qn5bwWPchlGGAAAAAAAAAI0BEmgNBOdcwzkv5JwXEpGZMcbdHRPcH8YYeSaFnFRMarNAGCb/tXKHlXuYDt0crF2Y/bI5T+PvvggBAAAAAAAA4G4ggQZQz4Q+HnrFy9H/8+wftoxJhaXOdlupqWXFqtxXKr6/mMhNVqE7YwQAAAAAAACAmiGBBvCQeHTxv6CYGvu5qLXXXmJkIyIiTkLz6bLems+zp5iOlzR3c4gAAAAAAAAAUA0k0AAeIoFUZJE/F7FDNiJiMVOJC53tXGcJ0Gfmj9euPD/QpjZ5uDNGAAAAAAAAuDuxsbGBsbGxge6Oo6qMjAypSqUKycjIkLo7lqYCCTQANxC39rqmnBb7pbiz3xYSMLOz3XpR+7hmUc50w75rMe6MDwAAAAAAABqunTt3SlQqVcicOXOU7o7lfty8eZMtWbJE9txzz/nExcUFBgQEhISGhgb36dPH78svv5RZrVZ3h1hJ5O4AAB5VTCjgsoHND1o6+eboN1xOsd0wRBMRkcmmNO6+OtKcXZYjG9xikzBIqnFzqAAAAAAAAAAP3Lfffit95513vAIDA23du3c3NmvWzHrjxg3h5s2bPd944w3J9u3bPb755ptSgcD947+QQANwM1GovFwxqc1/jXuK2hkP3hhAJpuciMh2TR+jzTgbIenk96Nn32ZHmAArswIAAAAAAEDTER0dbVm+fHnJoEGDjELh72vrXb16VZCUlOS/efNmz++++87zueeeM7gxTCLCFE6ABoExRp6JIaeUk2IWCFvIj1busHIP05GbKZovsseZc9UBbgwRAAAAAADgkWSz2eizzz6TdenSJcDf3z8kOjo66LXXXvMqKytjtZ23cuVKad++ff3CwsKC/f39Qzp37hwwb948hcFwey5IpVKFJCcn+xUUFAjGjh3rHR4eHhQQEBDSvXt3/xUrVtxSx2z8+PHew4YN8yMiSk1NVahUqhDntnPnTknVa+/YsUOSnJzsFxISEhwSEhI8dOhQ31OnTjWIAVVPP/20aejQobckz4iIQkJCbC+//HIFEdGePXtue0/u0CA6DADsBN4Sg+LF6EzT0ZsnDD9dHcQrrH5ERLzM1Lxidd4r4hjvPdKU5nuYh7DhTAQHAAAAAABowt544w1Venq6PDAw0DZ69GidWCymrVu3eqakpPiZzWYmFotvmy00adIkr9WrV8uCg4NtAwYM0Ht5efEjR45IPv74Y2VWVpbHxo0bi8Vi8S3nlJeXC5KTk/1VKhUfNWpURXl5uSAzM1M6bdo078LCQsHbb7+tIyIaNGiQgYho7dq10vj4eFNCQoLJeY3w8PBbvitu2bLFc/v27Z5JSUnGF198seLMmTOiXbt2eaSkpPgdOnToRkBAgK1eOu0BEIlE3PHq7lCICAk0gAZJ8pj/RXFbn4UVG/J7Ws6W9yBOAuIkMGeX9bJc0rbz7B2SKenkl+/uOAEAAAAAAJqyvXv3itPT0+UtW7a07t69+4afnx8nIpo7d666f//+/tevXxc0a9bslqRVRkaGdPXq1bJ+/foZvv7661KZTFa5b86cOcrU1FRFWlqa/PXXX9e5npeTkyNKSUkxrFixotQ5Iuutt97SJiUlBXz00Ueq4cOHG6KioqzDhw83eHt729auXStNSEgwzZkzp8a62du2bfNcs2ZNcXJycmWS7d1331WmpaUp0tPTpe+8846upnNd1XWxgsTERGOfPn1Mdz6yemazmdasWSMjIkpOTjbe63UeJCTQABoo5im0yEdE7DKfKz+l33plMC83hRER8QqLv37j5XGmE6VHZENa/Cjwkrh9LjgAAAAAADxauq/rHuKmW9f5vj8P//nqvd5s+fLlMiKiGTNmaJzJMyIiqVRKs2fPVjunUrpatGiRQiQS0eLFi8tck2dERLNmzdJkZGTI1q5dK62aQBMKhTRv3jy163TGVq1aWSdMmKBLTU1VrFy5Ujp79mxtXeIfMmSI3jV5RkQ0ceLEirS0NMXRo0clRHRXCbTU1FRFXe5LRHQ/CbT33ntPdfbsWVHv3r2NAwYMQAINAO5MHO11XRSpTDdsu9LV9FvJ02TlEiIia762i2ZxThuPJwM3efQIymas1un3AAAAAAAAUEcnTpwQExElJibelgxKTEw0VZ1eqNPpWHZ2tsjHx8f26aefVpt0kkgklJube1s+JjQ01NqqVavbyvUkJiYaU1NTFc5Y6qJTp07mqm0tWrSwEtmnjN7tddRq9T0nIevq008/lS9atEjeqlUrS3p6eunDuu+dIIEG9Up3rVDs4eVrcXccjR0TCrh0QPNDkk5+Zyo25A+0XTe0ISIik01hzCp63pxTdkY2qMUmYYhM7eZQAQAAAAAAmgyNRiMgIgoODr6tVphIJCJvb+9b2ktKShjnnEpKSgR1HbXl7+9fbT0y573VanWdF4KsGh8RkbP2mtXa8EprL1iwQPb++++roqOjLRs2bCh2HfXnbkigQb1R37guvbxjky8xRnJtabsug4efYgIs/Ho/hCEytWJim1XGvddijQeuDySTTUFEZLtuaKP9+lyEpKPvDs++zQ4xoaDBfMgAAAAAAEDTcz/TIu+FTqfzJyKSy+U3H+Z9lUqljYiERUVFgqioqFsyThaLhcrKygRBQUGV7d7e3pyIqF27dub9+/fXKdabN29W+4W5qKhIQESkUqncVvD/YdRAmz9/vnz27Nmq1q1bWzZu3FgcFBTUoBY4QAIN6s3u9C+SrUaDgIjoaOZ3Iy4e/aVD4tjJmwIjosrdHVtjxhgjz57B2ZIOvhcqMvOftl7SdiEiIiuXmI4WDzDnauKk/ZpliqO9rrs5VAAAAAAAgEYtLi7OfPLkSXFWVpYkKipK77ovKytLYrHcOuFKqVTy1q1bW86ePSsuLi5mdRlBVVhYKMzLyxNGRkbekqjLysrycMbibHPWSXtYo8jquwbaRx99pPjwww+Vbdu2tWRmZhY3xNVBMRwI6k1Y+w5nhZ7Syoe+5Mrl1us/+mBa1rIl8VaLBQW77pPAS2JQjInaIE1pnsFkosr/s8HLTWEV316Yolt7oQ83WJEkBwAAAAAAuEdjxoypICKaP3++sri4uPJ7rF6vpw8++EBV3TlTp07Vms1mmjJlindpaelt331LSkrY4cOHb6tnZrVaadasWSrXpFhubq7wq6++kotEInrhhRcqE3h+fn42IqKCggJh1evUB7VafbUuW20rg1Y1d+5cxYcffqiMi4szb9y48WZDTJ4RYQQa1KPHUp7J0Uq9rhcd2qsqO5ctIyKyWSySnKyd/QtOHo/r/sLYzPBOXa65O87GTtLJL18c671Qv/FyT3NOWU/iJCBOAsuZ8p6ay6fbeiaFZko6+11yd5wAAAAAAACNTc+ePc3jxo3TZWRkyOPj4wNTUlL0YrGYtm7d6qlSqWyBgYG3JXsmTJigP3bsmGTZsmWyjh07BvXq1csQFhZmLS0tFeTn5wsPHjzoMXLkyIquXbveMjsrJibGcuzYMXFCQkJAUlKSQa1WC9avXy9Vq9Vs1qxZ6ujoaKvrscHBwbb169dLp0yZwsPCwqyMMRo9erQ+IiKi4RU3q8HSpUul//znP5VCoZDi4+NNn3322W0j3Vq2bGkZN26cvrrzHyYk0KBeCT08eLMeT5V37NFr1S9r/ztEr1H7ExFpS2422572yeQWHR/7OWncKz95yBVYaOA+MA+hVTY8fLc5V31Kv6VgMC8zNSci4hVWP/2my2NNJ0qOyYa03CbwlhjcHSsAAAAAAEBjMn/+fHVUVJQlPT1dvmLFCrmPj4+tf//+hnnz5qm7desWUN05CxYsKO/bt68hPT1dvmfPHg+NRiPw8vKyhYaGWqdOnap1HU3m5OXlZVu3bl3pzJkzVatWrZJptVpBdHS0efr06boxY8bccrxIJKLly5eXzJ49W5WZmSnV6XSMc07du3c3NaYE2sWLF0VE9tF3X375pby6Y+Lj400NIYHGOEet8YaGMXYkNDQ0JCcnZ7G7Y7lf+/btm0xElJCQsNik1wuzli3uceHILz25zVY5zNRDrijtOuy5zHa9+15wX6RNB7dxZth2pYvp1+Knyco9KndIBDqPJwI2eyQGn2IMM2gB6sL1s8zdsQAA3At8jgFAXeXl5U0WCoX+LVu2fKhF+2virkUEHhaVShUSHx9v2r59e7G7Y2mMLl265G+1Wm9GRkbW+u9cTEzM5MLCwquc8y51vQdqoMFDI5FKrU9P+eNPA/74zkJVQFC+s92o0/rsW5nx0v/+MXtY+fUiqTtjbAqYgHFp/7DDirHRaYIgaXblDpNNbtx7bYR2yZkXLIU6LzeGCAAAAAAAANCoIIEGD11Yuw43n5/3ydL2T/XPFIrFRmf7tfNnO34358+v/rJuVRy3NciagY2KMFimUU5ss8YjKWQ1SQSVBRxtNwzRuq/PT6/YmB/PrTYMRQMAAAAAAAC4AyTQwC0EQiHv/oeXjw6bOW+Bf8uI0852i8ko+3XT/4Z/O/vtMUXnz3i7McQmwzMhKEc5JSZNGK44VNlo42LzryX9NZ9nTzSfKQ9yY3gAAAAAAAAADR4SaOBWfmEttMPf/9u3Tzz7h28kUpna2V529UqrDf+cO213xsJuFrMJz+l9EqgkRsXoqE3SwS3SmVx0w9nO1ebQirUXpui+zXvKprdgUREAAAAAAAA3UKvVV1H/rGFDYgIahE4Dhpx9fu6/0sLadTjobLNZreKz+37qu/q9GRPzjhwMcWd8TYWkg+9l5bTYReK23ruIkXNlFmY5q+6h/SJ7mvHwjUi3BggAAAAAAADQACGBBg2GzNvHNHDGu1t6T5z+pczL+7qzXVdaEvLjF/+etPnTj/rqNWqxO2NsCphEaJU9E54l/0OrLwQ+kkvOdq63+hi2XnlR+/W5YdZSIxZzAAAAAAAAAHBAAg0anOgne1wZ9fd/L4qKT9jBBILKUVKXT/zabc3MN6ad+HFzK7cG2ESIIpTFildiv5Y8HpBJImZwtlsLdB21S868athVGMc5d2eIAAAAAAAAAA0CEmjQIIkkHrY+k17dm/LGe597BYVccLYbK3Te+1ctG/PDh+8PL716Re7OGJsCJmBc2rfZUcW41mnCEOmpyh1mm8z48/Xh2sU5YyyXdd7uixAAAAAAAADA/ZBAgwYtNKZdyfNz/7WsQ9+U/wklEr2z/fqF83Hr5r43/cCaFZ24zebOEJsEYaBUqxjfZq1nn5BvyENQuZiD7aaxlW7F+WkVmfnduMWGzwsAAAAAAAB4JOELMTR4TCCgJ58f8+vw9/+WFhgRdcLZbjWZpMe3bRy65v23Xio8c9rXnTE2FR7dgs4qX4lNE0UqKxdzIBsXm4+X9NV8nj3RnF2GxRwAAAAAAADgkYMEGjQaPiHNdMNmzl3XbeSLKz1k8jJne/m1qxEbP/lw6s4v03pYTEY80/dJoBCb5H9otUU6rOWXTCGqXMyBa8whFesuTtKtzku26SxYzAEAAAAAAAAeGUg2QKMTlzzw/PMfpn7ePK7TfiLiRETcZhOdP7D3qVXvvj75/MF9zdwcYpMgaedzRTmt7SJxe58dxKhyMQfLeXV37cLsacZfbmAxBwAAAAAAAHgkIIEGjZJUqTIP+OM7255+5Y9L5N6+Rc72ivKyoJ1LFkzcNP/v/SvKSiXujLEpYGKBTTa05V75C60+F/h6VC7mwA1Wb8P2K2O0GWeHW4sNMnfGCAAAAAAAAFDfkECDRi2y65NXR/59/pLWCb22CYRCi7O94NTx+DXvvzX9ty2Zrd0ZX1MhCleWKF6JWSaJD/gfiZjB2W4trIjTfnnmVf2Owo6cc3eGCAAAAAAA8NDFxsYGxsbGBro7jqoyMjKkKpUqJCMjQ+ruWJoKJNCg0ROJJbakca/sH/Sn99O8Q5rlOttN+grVwbX//cO6ue89V3LlssKdMTYFjDGSPt3sV8WENguEobLKxRzIwqWmA9eHaRfmvGTJ1/q4MUQAAAAAAIBHws6dOyUqlSpkzpw5SnfHcr/+/Oc/K/v37+/XunXroICAgJDmzZsHP/nkkwEffPCB4ubNm8zd8TkhgQZNRnBUm7LnPvh4RaeBQ9eJJB4Vzvably60/X7ezOk/f/P1YzartcH88jVWQn9PnWJc63WeT4euZJ7Ccme7rcQYoVt5flrF/y4lcLMNny0AAAAAAABwR0uWLFFUVFSwxMRE48SJE7XPPPNMhVAo5J988omyW7dugZcuXWoQ3y9F7g4A4EFiAgE9MXzUiTY9ks7vTv+i37XzZzsSEVnNZs+TO7YMzj9+rEOPMeM3hLXrcNPdsTZ2HvGB58XtfdP0mZd6W3I1TxIRIxuJzCdLn7Zc1MR5Pt1svaSdT6G74wQAAAAAAICGq6Cg4KpUevtM05kzZyo/++wzxccff6xMS0srr+bUh6pBZPEAHjSvwGD90D9/8EPC6HHLPOSKUme7+sa1lps//eiVHYv+k2g2GITujLEpEMhFZvmoVttkw8OXMKW4cjEHrrUE6X+4NFH3TW5/m9aMxRwAAAAAAKDRstls9Nlnn8m6dOkS4O/vHxIdHR302muveZWVldU6w2nlypXSvn37+oWFhQX7+/uHdO7cOWDevHkKg8Fw27EqlSokOTnZr6CgQDB27Fjv8PDwoICAgJDu3bv7r1ix4pbs0vjx472HDRvmR0SUmpqqUKlUIc5t586dt33/2rFjhyQ5OdkvJCQkOCQkJHjo0KG+p06dajADqqpLnhERjRgxQk9EdOHChQbx3b3BdBhAfWjXu++FqCe6f747Y2GvS78dTSDOGbfZhLmH9vcuPHO6ffyIFzJbd0+87O44GztxrPdVUbRqiX7T5SfNp0p7k41ERMQseZp4zcKcGM8eQRs9ngw85+44AQAAAAAA6uqNN95QpaenywMDA22jR4/WicVi2rp1q2dKSoqf2WxmYrH4thXVJk2a5LV69WpZcHCwbcCAAXovLy9+5MgRyccff6zMysry2LhxY7FYLL7lnPLyckFycrK/SqXio0aNqigvLxdkZmZKp02b5l1YWCh4++23dUREgwYNMhARrV27VhofH29KSEgwOa8RHh5udb3mli1bPLdv3+6ZlJRkfPHFFyvOnDkj2rVrl0dKSorfoUOHbgQEBNjqpdMegI0bN3oSEbVt29Zyp2MfBiTQoMnzkCss/V59a8fFY4dP/vzN0iHakuJQIiK9ujxgd/oX48/+nHU4afzUHxW+fkZ3x9qYMZHAJhvS8mdLZ79s/cbLg2zFxkgiIjJavQw7Cl8wny49JR3ccrMwwFPn5lABAAAAAADuyt69e8Xp6enyli1bWnfv3n3Dz8+PExHNnTtX3b9/f//r168LmjVrdkvSKiMjQ7p69WpZv379DF9//XWpTCar3DdnzhxlamqqIi0tTf7666/f8t0oJydHlJKSYlixYkWpUGgfdPXWW29pk5KSAj766CPV8OHDDVFRUdbhw4cbvL29bWvXrpUmJCSY5syZo6kp/m3btnmuWbOmODk5uTLJ9u677yrT0tIU6enp0nfeeeeuvp/VdbGCxMREY58+fUx3PvJ3//znP+U6nU6gVqvZb7/9Jj506JAkJibG8vbbb2vrcp36ggQaPDLCO3e91jyu05f7/pvxxNl9WU/ZrBYxEVFhzqmu3/7lT206Dhi86bGUZ3LcHWdjJ2quKFVMiVlu3HW1g/HwzX5ktsmIiKxX9e206WdaSR7z3+b5dOgxxrCeAwAAAABAY1Xw+BMh7rhvKVGd7xt26Jer93q/5cuXy4iIZsyYoXEmz4js0w5nz56tdk6ldLVo0SKFSCSixYsXl7kmz4iIZs2apcnIyJCtXbtWWjWBJhQKad68eWpn8oyIqFWrVtYJEyboUlNTFStXrpTOnj27TsmkIUOG6F2TZ0REEydOrEhLS1McPXpUQkR3lUBLTU1V1OW+RER1TaB98cUXips3b1aWGuvVq5dxyZIlZYGBgQ1ilBwSaPBIEYpEPPGlSQdjevbO+Wnp4pTSK5ejiYjMBr3y8PdrRl44fDCn17hXNvm3CK8xgw93xhgjzz6hx8Wd/M7rMy/1tRZUdCQiIgv3NP1yY4jlXHkH6cDmG0ThymI3hwoAAAAAAFCjEydOiImIEhMTb0sGJSYmmkSiW9MqOp2OZWdni3x8fGyffvpptUkniURCubm5t+VjQkNDra1atbJWbU9MTDSmpqYqnLHURadOncxV21q0aGElsk8ZvdvrqNXqe05C3q28vLxrRERFRUWCffv2Sf7617+qevToEbBq1aqSrl273vY+HjYk0OCRFBgRVT5i9j/+eyRzXbsT2zYOMBsNciKi4suXYn742/uRMT16/9j9Dy8fFgiFt81lh7sn9PWoULzc+gfjoRvHjXuKBnG91YeIyFZqCtf9N3equK33T9KBzX9mEuFt/0gAAAAAAAC4m0ajERARBQcH3zYKSiQSkbe39y3tJSUljHNOJSUlgrqO2vL39692pJXz3mq1us4LQVaNj4jIWXvNam2YX8OCg4Ntzz77rOGxxx4zd+3aNfCVV17xPnz48A13x4UEGjyymEBAXYeOONUmoVfu7vQvkq+ezX6MiMhmsUhO794+8PKJXzskjBm3vkVcZ7f/ojZ2Ho8H5Inb+Xyh35Dfy3JO3Z2IGHESmk+V9bFc1Lb3fCo0UxLnW+DuOAEAAAAA4O7cz7TIe6HT6fyJiORy+c2HeV+lUmkjImFRUZEgKirqloyTxWKhsrIyQVBQUGW7t7c3JyJq166def/+/XWK1XX6oquioiIBEZFKpXLbVMaHUQOtqoiICGt0dLTl9OnTohs3bgjcveABEmjwyFP6BxgGv/2XzOysnccPrVs12KDV+BERaYpvhG39zz9fCe/8+N7EsZP3eMjkDWLlj8ZKIBOZ5c9H/mjOKTup33ZlCNeYQ4iIuM4SqF+fP8F8vOSQdEjLHQKlGIs5AAAAAABAgxAXF2c+efKkOCsrSxIVFaV33ZeVlSWxWG79mqhUKnnr1q0tZ8+eFRcXFzPXuml3UlhYKMzLyxNGRkbekqjLysrycMbibHPWSXtYo8geRg206ly7dk1ARCRsALPD6jz8D6Cpik3sc2nk3+YvjHjsiSzGmI2IiHMuuHD0l8TVM994JTtrZ0t3x9gUiGO8i5TTYr8Ud/TdSgJW+Q+A5aL2cc2i7OmGn6+1cWd8AAAAAAAATmPGjKkgIpo/f76yuLi4ciU0vV5PH3zwgaq6c6ZOnao1m800ZcoU79LS0ttWTyspKWGHDx++rZ6Z1WqlWbNmqVyTYrm5ucKvvvpKLhKJ6IUXXqhM4Pn5+dmIiAoKCoRVr1Mf1Gr11bpsta0M6ur06dOiq1ev3pabslqtNHPmTGVxcbGgS5cuZl9fX7cn0DACDcCFh0xuSZ42Y1f+iWMn963MGKy5eaM5EZFBo/bbs2zJ2PMH9h5NGj91u9I/wODuWBszJhLYZINaHLB08svRb7ycYrtpiCIiIqNNadx1dZQ5uyxbNrjFJmGgtEEsVwwAAAAAAI+mnj17mseNG6fLyMiQx8fHB6akpOjFYjFt3brVU6VS2apbIXLChAn6Y8eOSZYtWybr2LFjUK9evQxhYWHW0tJSQX5+vvDgwYMeI0eOrOjatWu563kxMTGWY8eOiRMSEgKSkpIMarVasH79eqlarWazZs1SR0dHW12PDQ4Otq1fv146ZcoUHhYWZmWM0ejRo/URERENs7hZNbZu3eoxd+5c1RNPPGEKDw+3+Pj42G7cuCE8cOCAJD8/XxgQEGD77LPPytwdJxESaADVahHX+UbYhx0yfl71dZecPbuSbRaLhIjo6tnsx9bOfrtNXN+UzV0GDz/FBBjEeT9EYfIyxeQ2K41ZRe2NB2/0J7NNTkRkK9LHatPPRko6+233TG52lAmY2/9vAwAAAAAAPJrmz5+vjoqKsqSnp8tXrFgh9/HxsfXv398wb948dbdu3QKqO2fBggXlffv2NaSnp8v37NnjodFoBF5eXrbQ0FDr1KlTta6jyZy8vLxs69atK505c6Zq1apVMq1WK4iOjjZPnz5dN2bMmFuOF4lEtHz58pLZs2erMjMzpTqdjnHOqXv37qbGlEB76qmnjLm5uRWHDh2SZGdne6rVaoFUKuURERGWN954Q//aa69p6zINtj4xzhtEHOCCMXYkNDQ0JCcnZ7G7Y7lf+/btm0xElJCQ0Gjfy838i8qfMhYOLL58Kca13adZ83O9xk7eGBgRVV7TuXD3bKVGaUVmfrL1sq6za7vAW5LvOSAsUxypeqjFQgFcNYXPMgB4tOFzDADqKi8vb7JQKPRv2bJlg/jvcHctIvCwqFSqkPj4eNP27duL3R1LY3Tp0iV/q9V6MzIystZ/52JiYiYXFhZe5Zx3qes9MHwG4A78W4Rrnp39j9Vdn3l+tdhTWjmPu/TK5ej1//hgetbXi+OtFstt89qhbgQ+HnrFS9HrPQeEfc2kwhJnu63M1KJiVd4rFesu9uJG60OZ3w8AAAAAAADgCgm0+8QYS2SMrWeMXWGMccbYWHfHBPXjsZRncp776z/TQmPbH3K22awWcc6eXf1Xv/f6xIvHDge5M76mwuMx/4uKqbFfiFp77SFG9noCnITm7LIkzefZr5h+K27h5hABAAAAAADgEYME2v1TENFJIvojEd02hxmaFoWvn3HQmzM3JY2fmi5Ved1wtmtLikO3fZ46ZeuCfz1l1GlRW/A+CaQii/y5iJ2yERGLmUp8xdnOKyz++g2Xx2lXnE+xqU0e7owRAAAAAAAAHh1IoN0nzvkmzvl7nPO1RHTb6hvQNLXunnh51N/+vajV4912MYHAXqCRc3bp1yM9Vr03Y9qpnVsj3RxikyBu7XVNOS32K0lnv80kZCZnu/WStqtmUc6rhr1Fse6MDwAAAAAA4EFQq9VXUf+sYWvyCTTG2AjG2GeMsT2MMbVjmuWKO5wTxhhLZ4wVMsaMjLGLjLF/M8Z8Hlbc0PCJPT2tT035v6yBr//5C1VA0CVnu1Gn9dn336Uv/u8fs4eVXy+SujPGpoAJBVw6sPkv8pei0wSBnmcrd5hsCuNPRc9rvjwz0nq1QuXGEAEAAAAAAKCJa/IJNCKaRUSvElEnIrpS+6FEjLFWRHSEiMYR0S9ENJ+I8sg+RXM/Y8yv3iKFRqlZ27ji5+d98nX7pwdkCsVig7P92vmzHb+b8+dXf1m3Ko7bMDjxfolCZWrFxDbfeCQGf0sSgdbZbrumj9F+fW66fvPlx7mNYzEHAAAAAAAAeOAehQTaDCJqTUQqIpp6F8d/TkSBRPR/nPNhnPM/c877kD2R1oaIPqy3SKHREgiFvPuol44+M+vDNP+Wkaec7RaTUfbrpv8N/3b222OKzp/xdmOITQJjjDx7Bp9WTopJE7aQH63cYeUS09HigZrPs8ebz5UHujFEAAAAAAAAaIKafAKNc76Lc36Oc87vdCxjLJKI+hLRRSJKq7J7NhHpiOhFxpj8gQcKTYJvs+ba4e9/uDZ+xAvfSKQytbO97OqVVhv+OXf67vQvulvMpib/e1ffBN4Sg+LF6ExpSvOlTCaqrBPAy01hFd9emKJbe6E3N1ixmAMAAAAAAAA8EOwu8kpNBmMsiYh2EdFKzvmYavZPJKIlRLSYcz6lmv1byZ5ge5pzvqOa/VoiepVzvvQu4zlSw66YiIgI8eeff37zbq7TkJlMJn8iIolE0ujfS11ZTUZ27fB+ZemZk7ckXD18/Myh3XuXywKDze6KrSlhVqLAS2Kl/2WxgrnM4DR62qyFrY1lOl+bqZbTAe7Ko/xZBgBNAz7HAKCufHx8/KVSqSgwMNDi7liIiGw2m4iISCAQNIh4oGG5fv26SK/XW0pLS2v9d27atGn+Fy5cOME571LXe2AkzK3aOF7P1rD/nOO1tbOBMaZgjHVijHUie3+2cPy9Rf2FCY2BUOLBQ7snqSMGPnvTw9u38kPeWFosvrDpO/+rB35SWc0m1Oy6T1xIdC3SrMntYrhRobRWJiU9DAJhxHGpX7NsiZfQTOhnAAAAAAAAuGeY4nQrL8dreQ37ne3eLm1dyT6qzekDx/Y1EY2t7WY1ZTwZY0eMRmNIQkLC4jvE2+Dt27dvMhFRU3gv98MyaLAga9mX3XN/+bkXt9lExDmVZJ+Qay/lWboMHr4hLnngeXfH2BTwZM4M2650Mf1a/DRZuQcRkc81scyn1IN7PBGw2SMx+BRjyKVB3eGzDAAaO3yOAUBd5eXlTRYIBP5yubxBjFzV6XT+REQNJR5oWAQCgb+np+fNO/07ZzQaJ9/zPe71xEeU85t35bxXzvluzjmrZhvrnhChIRJJPGx9Jk7fm/LmzC+8gkIuONtNFTqv/auXj/7hw/eHl169gtp694kJGJf2DzusGBudJgiS5lTuMNnkxr3XRmiXnHnBUqjzquUSAAAAAAAAALdBAu1WzhFmNX3BVlU5DqBOQtu0LXl+7r+Wdeg36AehRKJ3tl+/cD5u3dz3ph9Ys6ITt9ncGWKTIAyWaZQT26z26BW8miQCjbPddsMQrfv6/PSKjfnx3GrDUDQAAAAAAAC4K0ig3eqM47V1DfujHa811UgDuCMmENCTz43+bfj7f0sLjIw64Wy3mkzS49s2Dl3z/lsvFZ457evOGJsKzx7BOcopMWnCcMXhykYbF5t/Lemv+Tx7gvlseZAbwwMAAAAAgEYuNjY2MDY2NtDdcVSVkZEhValUIRkZGVJ3x9JUIIF2K2cts76MsVv6hjGmJKIEItIT0YGHHRg0PT4hzXTD3pu7rtuol1Z4yORlzvbya1cjNn7y4dSdSxb0sJiM+B29TwKVxKgYHbVROqhFOpOLbjjbudrcrGLthcm6b/OesuktqAcJAAAAAACNxs6dOyUqlSpkzpw5SnfH8qAtW7ZMqlKpQlQqVciSJUtk7o7HCV/OXXDOc4loGxGFE9H0Krs/ICI5ES3jnOsecmjQhMU9PSD3+Q9TP2/RofPP5Kivx2020fmD+55a9e7rU84d2NvMzSE2CZKOvpeVU2MXidt67yJGViIi4iSwnFX30H6RPc14+GaEm0MEAAAAAAB4pF26dEnw7rvvesnlcn7nox+uJp9AY4wNY4wtZYwtJaI/O5q7OdsYY/+qcso0IrpORP9hjP3AGPs7Y2wnEc0g+9TNmQ8teHhkSJUqc///e3v701NfXyL38b3qbK8oLwvc9WXaxI2pfxtQUVYqcWeMTQHzEFplz4RnyUa1WijwluQ727ne6mPYWvCS9utzw6ylRgxxBgAAAAAAeMhsNhu98sorPj4+PrYXX3yxwt3xVNXkE2hE1ImIXnZs/RxtkS5tI1wPdoxC60pES4konojeJKJWRPQfIurGOS+ujyAZY0rGWChjLJSIxJxzFDh/BEV2ib868m/zv2yd0GubQCg0O9uvnD7xxJr335r+6+b1NdXngzoQRypvKqbGLpU87p9JQmZ0tlsLdB21S868ath9NY7zBvc/PAAAAAAAwA1sNht99tlnsi5dugT4+/uHREdHB7322mteZWVltX5vX7lypbRv375+YWFhwf7+/iGdO3cOmDdvnsJgMNx2rEqlCklOTvYrKCgQjB071js8PDwoICAgpHv37v4rVqy45X/yjx8/3nvYsGF+RESpqakK53RHlUoVsnPnztsGXuzYsUOSnJzsFxISEhwSEhI8dOhQ31OnTjW4Mjb/+c9/5D///LNkwYIFZTKZrMF9IWtwHfagcc7nENGcOp5zmYjG1Uc8tXiTiGY7/6LRaLQP+f7QQIjEElvSuFf2x/TsnZ319ZJBZVevtCIiMukrVL98980f8g4fON1r3Cub/cJa4Bm5D0zAuLRv2FFJJ7+z+sz8AdYifVsiIjLbZMZ914abz5R1kKa02CgK+70+HQAAAAAAPHreeOMNVXp6ujwwMNA2evRonVgspq1bt3qmpKT4mc1mJhaLb0v2TJo0yWv16tWy4OBg24ABA/ReXl78yJEjko8//liZlZXlsXHjxmKxWHzLOeXl5YLk5GR/lUrFR40aVVFeXi7IzMyUTps2zbuwsFDw9ttv64iIBg0aZCAiWrt2rTQ+Pt6UkJBgcl4jPDzc6nrNLVu2eG7fvt0zKSnJ+OKLL1acOXNGtGvXLo+UlBS/Q4cO3QgICLDVS6fV0alTp0QffvihasKECbqkpCTT7t27PdwdU1VNPoHWiHxCRIsdf96iVCoD3BkMuF9wVJuy5z74eMWhH76NO7ljc3+L0SgjIrp56ULbHz6c1So28altTz4/5phAKGxwmfnGRBgo1SomtPnWuP9aa8O+aylktKmIiGw3jVG65eenidv77JIOCDvIRIIG8Q8LAAAAAAA8PHv37hWnp6fLW7Zsad29e/cNPz8/TkQ0d+5cdf/+/f2vX78uaNas2S1Jq4yMDOnq1atl/fr1M3z99delMtnvdfDnzJmjTE1NVaSlpclff/31W+qr5+TkiFJSUgwrVqwoFQqFRET01ltvaZOSkgI++ugj1fDhww1RUVHW4cOHG7y9vW1r166VJiQkmObMmaOpKf5t27Z5rlmzpjg5Obkyyfbuu+8q09LSFOnp6dJ33nnnrmq813WxgsTERGOfPn1Mdz6SyGw20+TJk71DQ0Ot8+bNU9flPg8TEmgNBOdcQ0QaIiLGmJkx1iSSIpoCgaeHl8185yOhOkwgoCeGjzzRpkev87vTF/a9dv5MJyIiq9nscXLHlsH5x4917DFmfGZYuw433Rxqo+fRLeisOM73on59/lOWC5oniIjIxsXm4yV9LRc0cdK+zdaLY7yL3BwmAAAAAECDsOxPh0LcdOs63/elfz5+9c5HVW/58uUyIqIZM2ZonMkzIiKpVEqzZ89WO6dSulq0aJFCJBLR4sWLy1yTZ0REs2bN0mRkZMjWrl0rrZpAEwqFNG/ePLUzeUZE1KpVK+uECRN0qampipUrV0pnz55dp5lIQ4YM0bsmz4iIJk6cWJGWlqY4evSohIjuKoGWmpqqqMt9iYjuNoE2d+5c5alTp8QbN268WbW/GhIk0KDe3MzXet04JvTmXMiyinN7dhsR/rPYQ2i985lQlVdgsH7on+f87/Tu7ccPfb9msFGn9SEiUt+41mLzpx+9EtHliT29Xp6yV+zpif69DwKF2CR/odVm08nS44YdV4ZwrSWQiIhrzCEV312cLIpS7ZcOarFbIBchKQwAAAAA8Ag4ceKEmIgoMTHxtmRQYmKiSSS6Na2i0+lYdna2yMfHx/bpp59Wm3SSSCSUm5t7Wz4mNDTU2qpVq9u+0yUmJhpTU1MVzljqolOnTrd9d2nRooWVyD5l9G6vo1ar7zkJWZsDBw6IP/vsM8WUKVN0CQkJDfp7FhJoUG/2r704gFsZIyK6+GtJn6JcdVyXgc0zW3X1v+zu2BqrtknJF1o93u3z3RmLeuX/dqQ751zAbTZh3qEDSVfPZLd74tk/ZLZJ6IX+vU+S9j5XxG28Fuk3Xe5uPlWaRJyERMQs59XdtQuz23okBm/weDwg191xAgAAAABA/dJoNAIiouDg4NtKuohEIvL29r6lvaSkhHHOqaSkRFDXUVv+/v7Vlo1x3lutVtd5Iciq8REROWuvWa3uHX9hNptpypQpPhEREZYPPvigwU7ddEICDepNh+TQ3ft/OBdpUgvEREQGjSVg3+oL43OP3DycMDLyR7m3xHina8DtPOQKS79X39xx8dcjJ3/+79LB2pKbzYiI9OrygJ8yFo4/t3/P4aTxU39U+Pqhf+8DEwtssqEt91o6+p7Wby4YbCsxhhMRcYPV27DtyhjzqdLj0sEttgr9PBvc8soAAAAAAPXtfqZF3gudTudPRCSXyx9q+RqlUmkjImFRUZEgKirqloyTxWKhsrIyQVBQUGW7t7c3JyJq166def/+/XWK9ebNm9UmyIqKigRERCqVym11meujBppWq2UXLlwQEhEFBgZWOzX3zTff9HrzzTe9JkyYoJs/f75bk2xIoEG9aRnnW3S5zHKzLFcgL8sRS21WLiYiKjqv6br+Xydi2iWFbIrrE5LNBLWu/As1CO/U5Vrz9h2/+vm/Sx8/8/NPT9ksFgkRUWHOqa7f/uWtmI79B296bNDwbHfH2diJwpUlildivjbsKOxkOnKzH1m4JxGR9UpFB+1XZ6IlXQK2evYJ+Y0xPMcAAAAAAE1NXFyc+eTJk+KsrCxJVFSU3nVfVlaWxGKx3HK8UqnkrVu3tpw9e1ZcXFzMXOum3UlhYaEwLy9PGBkZeUuiLisry8MZi7PNWSftYY0iq48aaB4eHnzUqFHVDkg4ceKE+NSpU+LHH3/c1KpVK8sTTzxxV/XU6hMSaFCvmIDIJ9qme7JPTPrP315MKSvSRxMRmY02xa9brzx/6XjJme7PR2zyC5M3+OGaDZFQJOI9X5r4S0xin5yfMhamlFy53JqIyGwwKA7/8O3zF478kpM4dsrmgJYR6N/7wBgj6dPNfpV09Dun35Df31pY0Z6IiMxcajpwfZjlXHkH6cDmG0QtFKVuDhUAAAAAAB6gMWPGVHzzzTey+fPnK4cOHWpwJsT0ej198MEHqurOmTp1qnbGjBneU6ZM8V6yZEmZj4/PLUm0kpISlpeXJ+ratestNb+sVivNmjVLtXz58spVOHNzc4VfffWVXCQS0QsvvFCZwPPz87MRERUUFAjpIaiPGmgymYwWL15cXt2+OXPmKE+dOiUeNWqUftKkSQ1i1g8SaPBQ+LdQlA+e0e6/x38sbHvqp6KBFpNNTkRUelXfZvOC7IhWXf13PDGsxSGhSNAkVh992ALCI9XPzv7HN0c3rGt7fNvGAWaDQUFEVHz5Usz//v6XyDY9kn7sPurlw0KRCP17H4QBnjrFuNbfGQ9cP27Yey2FjFYvIiJbsTFSt/L8NHFbn93Sgc33M7HAbUOrAQAAAADgwenZs6d53LhxuoyMDHl8fHxgSkqKXiwW09atWz1VKpUtMDDwtv/2nzBhgv7YsWOSZcuWyTp27BjUq1cvQ1hYmLW0tFSQn58vPHjwoMfIkSMrunbtekvyKCYmxnLs2DFxQkJCQFJSkkGtVgvWr18vVavVbNasWero6Gir67HBwcG29evXS6dMmcLDwsKsjDEaPXq0PiIiAovL1QMk0BoIxpiSiJxzisWc8yY3H4wJGHXs2+x0q67+efvWXHj6Wq6mCxGRzcol5w7eGFB4przDE8NaZDZv53PN3bE2RkwgoC5DRpxu3b1X3u6MhU9fPXPa3r8WiyR7948DL5/4tUPCC+MyW3Z87Lq7Y23sPJ4MPCdu7/O5fkN+b0uuJp6IGNlIZD5Z+rTloibO8+lm6yXtfArdHScAAAAAANy/+fPnq6Oioizp6enyFStWyH18fGz9+/c3zJs3T92tW7eA6s5ZsGBBed++fQ3p6enyPXv2eGg0GoGXl5ctNDTUOnXqVK3raDInLy8v27p160pnzpypWrVqlUyr1Qqio6PN06dP140ZM+aW40UiES1fvrxk9uzZqszMTKlOp2Occ+revbsJCbT6wTjHgJSGgDE2h4hmO/+uUCi0hYWFn7gvogdj3759k4mIEhISFlfdd/7QjRZHNxUMNmgt/pWNjGzN23r/3P35iJ88ZCJL1XPg7uXs2dXil3WrBhs06sr+ZYzZWnbquq/XuClZHjI5+vcBMJ0uDTX8WDiYa8zBLs1cFKk8KB3cYpdAIXb7XH24f7V9lgEANAb4HAOAusrLy5ssFAr9W7Zs+VCL9tfEXYsIPCwqlSokPj7etH379mJ3x9IYXbp0yd9qtd6MjIys9d+5mJiYyYWFhVc5513qeo86L4EK9eYTImrm2E4olUqtm+Opd1GPB+QPe6fDwpYdfXczRvYMOSfB5VNlPX746MS0nH3XIt0cYqMW07N3/qi//XthZNf4nxhjNiIizrng4rFDPVe/N2Pq6d0/hrs5xCZB0tanUDk1dok4zmc7CciZlGSWPM2TmoU504wHrke7NUAAAAAAAAC4b0igNRCccw3nvJBzXkhEZsbYIzE0UOIptPYa0+qnpya2Xqj087jkbDdWWHx++SH/xc0LTj9Tfl0vc2eMjZlEKrU+/crru/v/8Z0vlAGB+c52g1bju3fFVy+v/8ecoeXXi6TujLEpYGKBTTak5c/yMVGfC/w88ip3GK1ehh2FL2jTz4ywXtfXedUaAAAAAAAAaBiQQIMGIbS1182hf4r7OrZn0HqhiBmc7Tcu6Tps+PfpV49svNyR2x6JnGK9aN6+482R81KXtnuq3wahWGx0thedP9Ppuw/+/Oqh71e35zbUvb9fouaKUsWUmOUe3QK/JzGrrFFgvapvp804O12//UpnTJsHAAAAAABofJBAgwZDIGT88SEtjg38Y9s0v+byk852q9kmPbW7aNj//nXypaJcta87Y2zMBEIhT/jD2CPDZs5b4N8y4rSz3WI0yo5t/OHZb2e/Pfpa7llvN4bYJDDGyLNP6HHFxJgFwjDZb5U7LNzT9MuNIdovssdaLmr83BgiAAAAAAA0MGq1+irqnzVsSKBBg+MTLNOm/F/b77oMav5fiVRYuayv+oYhYvviM1P3/De3h8VkxbN7j/zCWmiHv/+3b5949g+rJFKZ2tledvVKVObHf522O2NhN4vZhP69T0JfjwrFy61/8OzbbDmTCkud7bZSU0vdf3OnVnx/MZGbrEJ3xggAAAAAAAB3B1+SocFq1yv43NA/xX3eLMZrPxFxIiJuI9GFYyVPff+PE1Pyjt4Mc3OIjVqnAUPOPD/3X2lh7TocdLbZrFbx2X0/9V393oyJeUcOhrgzvqbC4/GAPMUrsV+IolX7yPEcEyeh+XRZb83n2VNMJ0rwHAMAAAAAADRwSKBBgyZVik1PTWi9LXFMqyUyL/FVZ7teYw7c+82FCdsXnxlQUW7ycGeMjZnM28c0cMa7W3pPnP6lzMv7urNdV1oS8uMX/560+dOP+uo1arE7Y2wKBDKRWf585I+yEeGLmUpc6GznOkuAfn3+BN3K8wNtGjOeYwAAAAAAgAYKCTRoFMI7+l595p0OX0Y97r9NIGRmZ/vVc+on/vevk9NP7CiMcWd8jV30kz2ujPr7vxdFxSfsYAKB1dHMLp/4tdvqmW9MP7F9U5RbA2wixG28i5TTYr8Ud/LdSoLfn2PLRe3jmkXZ0w37ruE5BgAAAAAAaICQQINGQygW2Lo/H7G/39SYz72CPM87280Gq/LYlisjM+efGllyRad0Z4yNmUjiYesz6dW9KW+897lXUMgFZ7upQue1f/Xy0T98+P7w0qtX5O6MsSlgQgGXpbQ4IH8pKk0Q4HmucofRpjTuvjpS8+WZ563X9HiOAQAAAAAAGhAk0BoIxpiSMRbKGAslIjHnnLk7poYqoKWibMgb7Vd2eDp0rUgi0DnbSwsrYjZ9lv3qgXUXH7dZ0X/3KjSmXcnzc/+1rEO/QT8IJRK9s/36hfNx6/763qv716zoxG02d4bYJIiaycsVk9r816NH0FoS//4c267pY7UZZ6frtxR05TY8xwAAAAAAAA0BEmgNx5tEdMWxxWk0GoWb42nQmIBRp37NTg1+o31aUKTyqLPdZuWSs/tvDPzho+PjC7LLAt0ZY2PGBAJ68rnRvw1//29pgZFRJ5ztVrPJ88S2jUPXvP/my4U5p3zdGWNTwBgjz14hp5ST2qQJm8uPVe6wcg/TkZspmi+yx5lz1QFuDBEAAAAAAAAICbSG5BMiaubYTiiVSq2b42kUlH4e+n5TYzKfHBG+1EMuKna2a0tNYTszzk3ZtfRcH2OFReTOGBszn5BmumHvzV3XbdRLKzxk8jJne/m1ovCNqX+btnPJgp5mg0HoxhCbBIGPh17xUvR66YCwr5lUWOJs52Wm5hWr817RfXchiRut6GcAAAAAAAA3QQKtgeCcazjnhZzzQiIyM8a4u2NqTFrHB1x65p24hS3jfH5ijOzzCzkJLp8q6/nDRyemntl/PcLNITZqcU8PyH3+w9TPW3R47GdyPJvcZhOeP7ivz6qZMyafO7A3zN0xNgWSx/wvKqe1/ULUxiuLXJ5jS055L83n2VNNvxa3cHOIAAAAAAAAjyQk0KDJkEhFll4vRe3uM771QoWvR76z3Vhh8T247tJLm9Oyh2puGqTujLExkypV5v7/96ftya+8vlju43vV2a4vLwvc9WXahI2ffDhQV1ri4c4YmwLmKbTIR0Tskj0XsYh5SQqc7bzC4qffeHmcdvn5QbZyk6c7YwQAAAAAALvY2NjA2NjYBlc+KCMjQ6pSqUIyMjLwHfgBQQINmpxmMV43hr0dtzQmIXCDUMSMzvYbF7WdMlNPvXp00+UO3IYBfvcqossTRSP/Nv/LNj2StgqEQrOz/Ur2ycfX/OWt6cc2/a+NO+NrKsTRXteVU2PSJY/5bSIhMznbrfnaLprFOdMNWUVtOcdzDAAAAADwKNq5c6dEpVKFzJkzR+nuWO5XbGxsoEqlCqlui4yMDHJ3fE6oDQVNkkDI+BPDWh6Jjg84s2/NhQElBRVtiYgsZpvs5K6iZ/JPlXXsNiJ8Q1CEstTdsTZGIrHE1mvslAMxPXvnZH29JKW0sCCKiMis1ysPrVs1Ku/wgeykca9s9mveUuPuWBszJhRw6YDmhySd/M5UbMgfaLtusCcnTTaFcU/Rc+YzZWelKS02ikJlajeHCgAAAAAAcM+USiWfNGmSrmq7XC63uSOe6iCBBk2aT4hMO+iP7b49uftq6xM7rqaYDVYVEZH6uiFy28Iz0yI6++5+cnjL/SKJsMH8UjYmQa1al42Y89HKw+vXtj+xfVN/i9EoJyIqzr8Y+8OH70e26Zn0Y/dRLx8RCIUYKnUfhCEytWJim1XGfddijfuvDySTTUFEZLtuaK1bdi5c0sF3h2e/ZoeYUIB+BgAAAACARkelUtnmzJnToAdgYAonPBLaJ4WcHfZ2XFpoG68DROQogs9FeUeKn/7+oxOTL/xaHOrmEBstJhDQ48OePzlizsdpwdExx5ztVovZ4/Su7SmrZ84Yl3/iWIA7Y2wKGGPk2SM4WzklZoGwpeJw5Q4rl5iOFQ/QfJE9wXyuvMHVXgAAAAAAaOxsNht99tlnsi5dugT4+/uHREdHB7322mteZWVlrLbzVq5cKe3bt69fWFhYsL+/f0jnzp0D5s2bpzAYDLcdq1KpQpKTk/0KCgoEY8eO9Q4PDw8KCAgI6d69u/+KFStuqWM2fvx472HDhvkREaWmpipcpzzu3LlTUvXaO3bskCQnJ/uFhIQEh4SEBA8dOtT31KlTGFBVR+gweGRIlWLT0xNbb73wa/GJw5mXh+jV5iAiIr3aHLRnZd6k3EM3D3YfGbFTppKY7nQtuJ0qIFA/5J3Z67N/2nH80PerBxm0Gj8iIs3NG823/uefr4R3fnxv4tjJezxkcou7Y23MBCqJUTEmaqPpt+IThp1XB/MKiz8RES83N6v49sIUUbTXz9JBzX8SSEXoZwAAAACAB+CNN95QpaenywMDA22jR4/WicVi2rp1q2dKSoqf2WxmYrH4tpkgkyZN8lq9erUsODjYNmDAAL2Xlxc/cuSI5OOPP1ZmZWV5bNy4sVgsFt9yTnl5uSA5OdlfpVLxUaNGVZSXlwsyMzOl06ZN8y4sLBS8/fbbOiKiQYMGGYiI1q5dK42PjzclJCRUfocNDw+3ul5zy5Ytntu3b/dMSkoyvvjiixVnzpwR7dq1yyMlJcXv0KFDNwICAhrEbCyTycSWLVsmLSgoEMpkMh4XF2fu1auXSSRqOGmrhhMJwEMS0cmvsHlb78UH1116Mu9YSW9u4yIiosKz6vj//fNkbFyfkI3te4ecdXecjVVsr6cuRj7+5MKfli7qeenY4R6ccwHnXHDh6C+JV8/ltHv8mZGZsYl9Lrk7zsZO0tEvXxzjvVC/8XIPc05ZT+IkJE4Cy9nyHtovtG09eoVs8Ojif8HdcQIAAAAANGZ79+4Vp6eny1u2bGndvXv3DT8/P05ENHfuXHX//v39r1+/LmjWrNktSauMjAzp6tWrZf369TN8/fXXpTKZrHLfnDlzlKmpqYq0tDT566+/fkvNr5ycHFFKSophxYoVpUKhkIiI3nrrLW1SUlLARx99pBo+fLghKirKOnz4cIO3t7dt7dq10oSEBFNtUx+3bdvmuWbNmuLk5OTKJNu7776rTEtLU6Snp0vfeeed2+qOVaeuixUkJiYa+/Tpc9eDU27cuCF49dVXvV3bmjdvbl2wYEFZ7969G8QgFyTQ4JEkkghtCaMif45+MuD0/m8vDiq/bmhFRGQ2WFVHNxX84eJvJacTRkZs9gmRad0da2PkIZNb+k57Y1f+8WOn9q3MGKwpvhFGRGTQqP32LFsy9vyBvUeTxk/drvQPuH3sMtw15iG0yoaH/2TOU58ybC4YbCsztSAi4nqrr2FLwUvmU6W/Sge32Cb08dC7O1YAAAAAaFoWT/xDiJtuXef7Tv7ym6v3erPly5fLiIhmzJihcSbPiIikUinNnj1b7ZxK6WrRokUKkUhEixcvLnNNnhERzZo1S5ORkSFbu3attGoCTSgU0rx589TO5BkRUatWrawTJkzQpaamKlauXCmdPXt2nb6jDhkyRO+aPCMimjhxYkVaWpri6NGjEiK6qwRaamqqoi73JSK62wTaqFGjKhISEkzt27e3KJVKnpubK1y4cKF85cqVspEjR/pu3br1ZufOnd0+wwYJNHikBYYry4a82X7Fr1uvxGXvvdbfYrLJiIhKrlS03fSf062ingj48fEhLY4IhAzF2e9Biw6dr4e165D+86qvu+Ts2ZVss1gkRERXz2Y/tnb2223ikgdu7jLk2VNMgHKM90Mcqbopmhq71LD9ymOmY8XJZOUeRETWy7pO2iVnWns8EbDFo1fwCcZqLdEAAAAAAABVnDhxQkxElJiYeFsyKDEx8bYphjqdjmVnZ4t8fHxsn376abVJJ4lEQrm5ubflY0JDQ62tWrWyVm1PTEw0pqamKpyx1EWnTp3MVdtatGhhJbJPGb3b66jV6ntOQt5J1aRghw4dLJ9//nm5XC7nixYtkv/tb39Tfvvtt6X1df+7hQRaA8EYUxKRc0ikmHOOb7oPCRMw6jwg7ETU4/7n9625kHz9grYzEZHVwj3O/Hw95UpOWYcnnmmZGRbjfcPdsTZGAqGQ9xg9/nBMzz5nfspYOLD48qUYIiKz0SA/umHdiAvHDnVMfHnSxqDI6HJ3x9qYMQHj0n5hRySd/c5UZOYPsBXp2xIRkdkmM+67Ntx8pqyDNKXFRlGYvMy9kQIAAAAANB4ajUZARBQcHHxbrTCRSETe3t63tJeUlDDOOZWUlAjqOmrL39+/2npkznur1eo6jzyoGh8RkbP2mtV6W66uQZk0aZJu0aJF8oMHD3q4OxYiJNAakjeJaLbzLxqNBlMHHzKlv6e+/7TY9Wf2Xz/+69Yrg406iy8RkbbE1HxX+rlXmrf32dv9ufA9EhRnvyf+LcI1z87+x+qjG7+P+W1z5kCzQa8kIiq9cjk686O/To/u3nNnj9HjDwpFIoz2uw/CQKlWOaHNt4afr7Ux/nxtIBltKiIi201jlG75+WniOJ9d0v5hB5lI0CCKhQIAAABA43Q/0yLvhU6n8yciksvlNx/mfZVKpY2IhEVFRYKoqKhbMk4Wi4XKysoEQUFBle3e3t6ciKhdu3bm/fv31ynWmzdvVpsgKyoqEhARqVQqt/03fH3XQKtOUFCQjYiooqKiQQwwQgKt4fiEiBY7/rxFqVQGuDOYR1mbboEXIzr5fvHztxd7Xj5Z2oNzEnBOgvwTpYnX8jTtOvdvtqH1k4EX3R1nY/VYyjM5rbslXtidsfCpwuyTjxMR2awW8Zk9u/oVnDoe133Uy5kRjz1e5O44GzvP7kFnJB18L+jX5z9luaB5goiIbFxs/q2kryVPEyft22y9OMYb/QwAAAAAUIu4uDjzyZMnxVlZWZKoqKhbagtnZWVJLJZbx1colUreunVry9mzZ8XFxcXMtW7anRQWFgrz8vKEkZGRtyTqsrKyPJyxONucddIe1iiy+qyBVpOff/5ZQkTUokWLBjGIBYWHGgjOuYZzXsg5LyQiM2OoueVOEqnIkvRS1K7e46MXKnwll53tRp3F78B3l17e8nn2EE2xUerOGBszha+fcdCbMzcljZ+aLlV5VU6N1ZUUh27/Yv7kLZ/982mDVlPn+f1wK4FCbJK/0GqzdGjLL5lCdN3ZzjXmkIrvLk7Wrc5Ltuks6GcAAAAAgBqMGTOmgoho/vz5yuLi4sqRUHq9nj744ANVdedMnTpVazabacqUKd6lpaW3jZ4qKSlhhw8fvu2/w61WK82aNUvlmhTLzc0VfvXVV3KRSEQvvPBCZQLPz8/PRkRUUFAgrHqd+qBWq6/WZattZVBXJ06cELn2q9OFCxeEb7/9thcR0YgRIxrEomgYgQZQi7AY7xuhb3tlHFqf3+XcLzeetlnsxdmvX9B2zkw92Tq2Z9CWTn2bnWSCBjGitNFp3T3xcsRjTyzKWrake97hA724zSYkzln+b0cTVs+c0a7LkBEb2j/VP9fdcTZ2kvY+V8RtvBbpN13ubj5VmkSchETELOfV3bULs9t6JAZv8Hg8AP0MAAAAAFBFz549zePGjdNlZGTI4+PjA1NSUvRisZi2bt3qqVKpbIGBgbdNq5wwYYL+2LFjkmXLlsk6duwY1KtXL0NYWJi1tLRUkJ+fLzx48KDHyJEjK7p27XpLHeiYmBjLsWPHxAkJCQFJSUkGtVotWL9+vVStVrNZs2apo6Ojra7HBgcH29avXy+dMmUKDwsLszLGaPTo0fqIiIiGXdzMxXfffSddsGCBolu3bsYWLVpYlUql7cKFC6KdO3d6Go1G6t27t/HNN99sECWukEADuAOBkPH4Z1oejo4POPPzmgsDSq5UxBIRWUw2+YkdV5/NP1nasduI8I2B4coyN4faKIk9Pa1PTX5tT0zP3qf3LP9qkPp6UTgRkVGn8/75m6/HnD/48/Gk8a9s9Q4OrXBzqI0aEwtssqEt91o6+p7Wby4YZCsxRhARcYPV27DtyhjzqdLj0sEttgr9PNHPAAAAAAAu5s+fr46KirKkp6fLV6xYIffx8bH179/fMG/ePHW3bt2qLb+0YMGC8r59+xrS09Ple/bs8dBoNAIvLy9baGioderUqVrX0WROXl5etnXr1pXOnDlTtWrVKplWqxVER0ebp0+frhszZswtx4tEIlq+fHnJ7NmzVZmZmVKdTsc459S9e3dTY0qg9erVy3j+/HnhyZMnxUePHpXo9XqmVCptjz/+uHHkyJH6F198US8QNIzJk4xzzBRsaBhjR0JDQ0NycnIW3/nohm3fvn2TiYgSEhIa/XtxOrnrapsTO68ONBuslcN1BUJmjujsu/vJ4eEHhGIUZ79X3GajA9+u7Hx69499rWaTp7NdJJHo2/Xpt/WJ4aN+Yw3kw7Mx45yTYUdhJ9ORm/3Iwiv7mURML+kasNWzT8hvjGFUpaum+FkGAI8WfI4BQF3l5eVNFgqF/i1btnyoRftr4q5FBB4WlUoVEh8fb9q+fXuxu2NpjC5duuRvtVpvRkZG1vrvXExMzOTCwsKrnPMudb0HvokC1FH73iFnhv6pfVpoa9VBZ5vNysW5h4uTv//o+KSLv5WEujO+xowJBNRt5IvHhr//4YKAiFYnne0Wk0n625bMYWvef+ulwjOnfd0ZY1PAGCPp081+VUxos0AYKqvsZ7JwqenA9WHahTkvWfK1Pm4MEQAAAAAAoEFBAg3gHshUEtPTk9ps6flC5JdSlfias72i3ByctSJ34o9fnu2n15gl7oyxMfMJDdM9M3Ped08+P2alRCavrAtQfu1qxMZPPpy688u0HhaTEZ9f90no76lTjGv9nefToSuZp7Cyn20lxgjdyvPTKv53KYGbbehnAAAAAAB45OGLEcB9iOjsd+WZd+IWR3bx+5EJyLm0Lis8U/7k/z4+Me3UT1ej3RpgI9ehb8r55+d98nnzuE77iYgTEXGbTXT+wN6nVr37+uTzB/c1c3OITYJHfOB5xSuxaaJWysp+JhuJzCdLn9Z8fnqy6VQpRlUCAAAAAMAjDQk0gPskkghtPUZF7us7JeZzVaBnnrPdZLB6HdlQ8MLGT0+NKC2qULgzxsZMpvIyDfjjO9uefuWPS+TevkXO9orysqCdSxZM3DT/7/0rykox2u8+CeQis3xUq22y4eFLmFJc2c9cawnS/3Bpou6b3P42LUZVAgAAAADUB7VafRX1zxo2JNAAHpCgSGXp0DfbL2/fO/h7kVhQuZJhcUFFu02fnn71lx8udbFZOSqz36PIrk9eHfn3+Utad0/cLhAKnaP9qODU8fg17781/dfN61u7M76mQhzrfVU5LXaJuIPvdnIZVWnJ08RrFmZPNx64jlGVAAAAAADwyEECDeABYgJGjw1sfnzQjHZpAeGK35ztVgv3yNl3fdAPH58YW3im3N+dMTZmIrHEljR+6s+D/vR+mndIs1xnu0lfofrlu2/+sG7ue88VF+RjtN99YiKBTTa4xc/yMdFpAj+Pyn4mo01l2FH4gjb9zAjrdT36GQAAAAAAHhlIoAHUA1WAZ8WA6bE/xD/TcpmHTFTibNeWGFvs+Ors1J+Wn08yGaxCd8bYmAVHtSl77oOPV3QaOGydyMOjcrTfzUsX2v7w4axX932ztIvNasVov/skai4vU0yJWeHRPXAduYyqtF7Vt9NmnJ2u336lM+fcnSECAAAAAAA8FEigAdSjNt0DLwx7J+6L5u289xAjGxER5yS4dLy01/f/OD713MEbLd0dY2PFBAJ6YvjIE8/O/seCoKg2vzrbrWazx6kdWwetnvXG2Msnf8Nov/vEGCPP3qEnFBPbpAnD5JWjKsnCPU2/3Bii/SJ7rOWCxs+NIQIAAAAAANQ7JNAA6pmHTGTpPTZ6Z++x0YvkPpICZ7tRZ/Hbv/bi2K1f5AzWlhg93RljY+YVGKwf+uc5/+sxZvwyD4WycrSf5sb1Flv+8/ErPy78tJdJr8dov/sk9PWoULwc/YNnv2bLmVRY6my3lZpa6r7JnVrx/cVEbsKoSgAAAAAAaJqQQGsgGGNKxlgoYyyUiMSco9h8U9O8rff1YW/HpbfuFrBJIGQmZ/u1PM1j6z85+eqvW6+04zZMh7tXbZOSL4z6MPWL8M5d9zDG7KP9bDZh3uEDSavee/2VnD27Wrg7xqbAo2tAnuKV2C9E0ap9RGR/YDkJzafLems+z55iOlES5t4IAQAAAAAAHjwk0BqON4noimOL02g0KNDdBAlFAv7k8PBDA1+LXeATKstxtltMNvnxHwtHZKaeeuHGJa2XO2NszDzkCkvf6W/uTJ7+5mKFn/8VZ7tBo/bP+nrxuMx/zh2kLb6J0X73SSATmeXPR/4oGxGxiKnEhc52rrME6NfnT9CuPD/QpjZ5uDNGAAAAAACABwkJtIbjEyJq5thOKJVKrZvjgXrk20yuGTyj3epO/ZutFnsINM72smv66K1f5Ez/ec2FblazDb+f9yi8U5drIz+c/1Vsr6c2C0SiytF+V8+c7vLt7D9NP7L+u7bcZnNniE2CuI3XNeW02C/FnXy3kICZne3Wi9rHNYtyphv2XYtxZ3wAAAAAAAAPCr6gNxCccw3nvJBzXkhEZsYY5vI9Ajo8FZoz9E9xaSHRqkPONpuVi88futn3+4+OT7x0vCTEnfE1ZkKRiPd8ceIvQ//8QZpvWIszznazwaA4sn7tc9/99d0/3LiYp3JnjE0BEwq4LKXFQfnLUWmCAM9zlTtMNqVx99WRmi/PjLRe0yvdGCIAAAAAAMB9QwINwM1kXhJj8uQ2m3r8IeIrqVJ83dleUW4O+Wl57qQdX53ta9Caxe6MsTELCI9UP/uXv6/qOvS5NWJPz8qRnSUF+a3/94/Z07OWLYm3WiyoOXifRKHycsWkNv/16Bm0liQCnbPddk0fo804O12/paArt6G2IwAAAAA0LbGxsYGxsbGB7o6jqoyMDKlKpQrJyMiQujuWpgIJNIAGIvIx/4Jn/hy3KKKz7w4mIKujmV3JKe/2w8cnpp/OKopya4CNGBMI6LHBw7Of++CfaaEx7Q47220WiyQna2f/1e/NmHDx1yNB7oyxKWCMkWdiyCnlpJgFwhbyo5U7rNzDdORmiuaL7HHmXHWAG0MEAAAAAGgSdu7cKVGpVCFz5sxpMrM9fvrpJ8nzzz/v06pVqyA/P7+QVq1aBaWkpPhu2LChQdRXRgIN6pVi7z6Z5MIFjJ66SyKJ0NbzhVZ7kye1+Vzl73HB2W7SW70OZ14evfE/p58tu6aXuzPGxkzh528Y9Nasjb3GTsmQKlU3ne3akpvNtqd9Mnnrgn89ZdRpRe6MsSkQeEsMihejM6UDmy9lMmGxs52XmZpXrM57RffdhSRusKKfAQAAAACAiIjmzZunGDx4sN/BgwclSUlJxilTpmiTk5MNZWVlgj179jSIBBq+wEC9Mfzyi5/v9997kc1GN/YfGOA7e/ZOYWCA0d1xNQbBUaqSoX+KW3Z0c0HHnH3X+1nNNikRUfFlXfuN/z4V1bpb4Laug5ofYwLMiLsXbXok5Ud0iV+YtWxxjwtHfunJbTYh51xw6dcjPVa9N6Nd16EjNrTr0y/P3XE2dpLOfpfEsd4LKzbm97ScKe9BnATESWDJKe+lyc9u79k7JFPSye+Su+MEAAAAAAD3Wb16tefHH3+s7NGjh3HVqlWlKpXqlprwJpOpplMfKoxAg3pT9klqf2a1EuOcjL/88kTR889PVy/5Eqsf3iUmYNQlpflvg15vuyCgpfy4s91q4Z7Ze64N+eHjE2Ovniv3c2eMjZlEKrU+PeWPP/X/v7cXqgKC8p3tRp3WZ99/l774v3/MHlZ+7arMnTE2BcxTaJE/G7FL9nzkQuYlKXC28wqLn37j5bHa5ecG28pNnu6MEQAAAACgNjabjT777DNZly5dAvz9/UOio6ODXnvtNa+ysrJaRzSsXLlS2rdvX7+wsLBgf3//kM6dOwfMmzdPYTAYbjtWpVKFJCcn+xUUFAjGjh3rHR4eHhQQEBDSvXt3/xUrVtxSx2z8+PHew4YN8yMiSk1NVahUqhDntnPnTknVa+/YsUOSnJzsFxISEhwSEhI8dOhQ31OnTjWIAVVWq5X++te/qqRSKV+6dGlZ1eQZEZFEcttbcgsk0KDe+Pz5nU366OjKEWdcp1OqFy9+7toLo18wHj/h7cbQGhWvQGnFgFfbfv/E0BbLJTJhqbNdU2xs+eOSs1N/WpHby2SwCt0ZY2PWvH3Hm8/P+2Rp+6f6ZwrF4srn9dr5sx2/++Dd6b98900HJH3vnzhKdUM5LTZd8pjfJhKyyv+FZM3XPaZZnDPdkFXUlnMsPgwAAAAADc8bb7yhmjlzpld5eblg9OjRuqFDh+p3797tkZKS4mc2m6tNok2aNMlr6tSp3hcvXhQNGDBAP3bsWJ23tzf/+OOPlUOGDPEzm823nVNeXi5ITk72z87OFo8aNapixIgRFfn5+aJp06Z5f/zxx5WlfAYNGmQYMWKEnogoPj7e9MYbb2idW3h4uNX1mlu2bPF87rnn/JRKJX/xxRcrnnjiCdOuXbs8UlJS/G7cuOH2nNC+ffskly9fFvbu3dvo4+Njy8zM9Pjoo48U//73v+X79u1rUOWgGkTGEZomj86dS69Pm1oiP3TYM+D77yVcb6/dZcnNjb4xZco0Wb9+u73//M4BgacnshN3IaZHUF54Z78v9n97IfHy6bIE4sQ4J+Gl30qSruWq2z82MCwz6vGA/DtfCaoSCIW8+x9e/n/27jq+qat9APhzbjxp6u4CVKBQpBQotLjDgCEbG7YNZ++235S5+5jhY9iAoYNhxb2UYoUWqAB19zZJ4/f8/oCElCGFBtK0z/fz4fO+PDfJfchuT3OfnHOei8G9+mQcX7VscHlOZlsAAJ1GLb4Ut3N09qXz7WMmT9/j3jqk6mGvhe6PMISKhvic43d0SqvbnTeULVGGAACAhrVRnywep02rzhAN993D9RTXWjhVhBBCCCGEAADg1KlTvJUrV0r8/Pz0x44dK3NycqIAAF988UXt4MGDnUtLSxkvL696RatVq1aJNm3aJB40aJBqzZo1VWLxnYUtn376qXTBggU2ixYtkrz++usK0+elpaVxhw0bplq3bl0Vh3NrjsRbb70l7927t8t3331nO2bMGFWrVq30Y8aMUdnb27Nbt24VRUdHaz799FPZ/fI/cOCAcPPmzRUDBgwwfok9f/586aJFi2xWrlwpevfddxX3e66pR21WEBMTo+7bt+9D116eP3+eBwDg4uLC9ujRwyU9Pb1enapr166aDRs2VLm6ulq8boAFNPRkEQKKrpGqds8/t7zqs8/7qc+f7wIAADodr27PngGqxDMd7F59dZdk6ND8h7wSAgChhKvtM7X14dwrVVfO/Zs7QlGt8QIAUMl1zqc3Z0+7eaHiQvSEgEM2DoL/zglGD+Xk7Ssf89FXWy/F7Uy+tPffYRplnS0AQHVRYdDuH7+c0yoq+mjPSS+f4fL4Fh+8rRnHXSyTvhK8SXWqOESdUDoMNKwNAABbpmqjWHvdn9fe8YhokNdZwmFwShpCCCGEUBNV89UlD4ucF+CRz2v3QUTR457vr7/+EgMAvPHGGzJD8QwAQCQSwSeffFJrWEppatmyZTZcLheWL19ebVo8AwD48MMPZatWrRJv3bpVdHcBjcPhwJdffllrKJ4BAAQFBelffvllxYIFC2zWr18v+uSTT+SPkv/IkSOVpsUzAIBXXnmlbtGiRTYXL17kA0CDCmgLFiyweZTzAgA0pIBmmAW3bt06sbe3t37btm0V3bp102ZnZ3Pmz59ve+LECcELL7zgcPDgwYqHvdaThgU09FRw3d1VLksW71HExV2u+e334Wx5uRsAAFte4Vr1yacv1+3afd7hk48Pc93dsfDTAL7tHEq8Quz+PLsjN/Lm+fJ+rJ7yAQBKbso67/zpSnDbGPe49v09r2GTgccTMWRkRpvuvbKPrVraN/9qchQAAKvXczNOnxiQfy0lvPuESbuCIrsXWjpPayfs6Z7Gb++YVbcrt78+W36ruK6nfG1SxWDdzdpw0SDvXbw2diUWThMhhBBCCLVgKSkpPACAmJiY/xSDYmJiNFxu/bKKQqEgqampXAcHB/bXX3+9Z9GJz+fDzZs3/1OP8fT01AcFBenvjsfExKgXLFhgY8jlUURERPxnraivr68e4NaS0Ya+Tm1t7WMXIR+EZVkCAEAphbVr11Z27NhRBwAQHh6u27x5c2VERIRbYmIiPz4+nhcdHf3fda9PERbQ0FMlGTIkX9Snz/Lqb7/rVrd/f2/Q6XgAAOrz57uUjJ8QajPx+X22M2ZcIYzFl2I3eRwuQ7uP9T/bOsolLWFL1tCqImUwAIBOzdpcPlg4Liel6nr3sf57XPxsaiydqzUS2ztohr4xf9+NxPiUM5vXjairqXYDAKirrnI/vOy3VzLijyfGvjT7qNjWrmm0hLFSjC1fbfNCqz2ay5XJqqOFI6hC5wIAQGu1XnVbs2ZwW9udFg33Oc6IuDpL54oQQgghhFoemUzGAAC4u7v/ZxUKl8sFe3v7evHKykpCKYXKykrmUWdtOTs733Oli+HctbW1j3yjfHd+AAA83q06nF7/n1rdU2fIz8fHR28onhmIxWLo3bu3auPGjeJz587xsYCGWhxGKGQdP/3ktGTMmGtVX389VHfzZmsAAKpUSmR/rnxWefhIhMP78/cIOnbE/aYawNlHUjv89bYbU44UhV49VjRUq761HK66WNl6/5K0uYGdnI5GjfZL5PAYXHb4GFpFRRf4d+yy/OTaP7vfOBvfm7IsFwBI3pXL3TZ/+GZop+Gj97QfOOy6pfO0dvwOjnm8ELtlyr150drU6higwAEKjC6jpqd8ibytIMZjl6CLc5al80QIIYQQQrc0Zlnk41AoFM4AABKJpPxpnlcqlbIAwCkuLmZatWpVr+Kk0+mgurqacXNzM8bt7e0pAEDbtm21CQkJj5RreXn5PQtkxcXFDACAra2txe7pntQeaK1bt9YB3P/fZng/VSqVxZdXYQENWYygfXi124b1G2QrV4XK1q0bQhUKKQCALjs7qGz2nDmi/v1POLw//zQjFlu+LN7EEYZA+/6eqUFdnDPjN2X2L74h6wIAwOop78a58oGFGTXhXUb47vLv4PhUf8k1F1y+gO3zypz4kJg+106sXTG8prgwEABAU6ewO7N53cSbZ09fjZ02a5+jl88j7UeA6iMCjl482v+EtoPsmioubwRbrfEFAKBKvYNqf/5k7dWqS6KRvgc4DgKlpXNFCCGEEEItQ3h4uPbKlSu8EydO8Fu1alXvc+iJEyf4Ol39hRJSqZS2adNGl5GRwauoqCCm+6Y9TGFhISczM5MTGBhY7x74xIkTAkMuhphhn7SnNYvsSe2BFhsbq+FyuZCdnc1Vq9UgEAjqHU9NTeUCAPj6+lp8RQquk0MWRRgGbF95OdV98+ZFgqios8YDej1XuX9/3+LRY2Yqdu7ytWCKVkViz1cPnBmyJ/q5gD9FUl6pIV5Xo/U4se7m9EN/pA+uq9XwLZmjNfNoE1o1/vMf/uoweMR2Lp9v/OVZlp3ZdvuXH8w9vXFtJ1avt/g3I9aOFygtt5kdupof6bILuMS4L6I+XxEh/yN9nupYUTil2F8AIYQQQgg9eS+++GIdAMDPP/8sraioMH7WVyqV8Nlnn9ne6zmzZ8+Wa7VamDlzpn1VVdV/7g8qKyuJofukKb1eDx9++KGtaVHs5s2bnD///FPC5XJh4sSJxnsQJycnFgAgPz+fc/frPAm1tbVFj/LnQZ1BTbm4uLAjRoxQymQy8sUXX9Sb5bZ//37BiRMnBFKplA4ZMkT9ZP5lDYcz0FCTwHF1Ubss/D2u7sCByzW//DpCX1bmDgDAVla6VH3xxTTF7t0XHT/5+BDXywtnnjRAUGfnfL9wh2VntuX0yLpUEUtZ4AIAKcyojfr3hyuh4X099rbr45Fu6TytEWEYiBo7MTmkV58bR1cuGVR683p7AAC9Viu8cihuRO7li+17vvjSbu+27Z/q1PLmhjCEigZ6XeRHOGYod+cO1hcp2wIAgJYVq+NLxmjTqzuIhvru5vpIqi2bKUIIIYQQas569eqlnTZtmmLVqlWSqKgo12HDhil5PB7s379faGtry7q6uv5n6eHLL7+sTEpK4q9du1bcoUMHt9jYWJW3t7e+qqqKyc3N5SQmJgomTJhQ16VLl3r7VYeEhOiSkpJ40dHRLr1791bV1tYyO3fuFNXW1pIPP/ywtnXr1nrTx7q7u7M7d+4UzZw5k3p7e+sJIfDCCy8oAwICrGoV1/fff1978eJF/m+//WaTkJDA79SpkzYvL4+zf/9+IYfDgQULFlQ7ODhY/Bt0nIHWRBBCpIQQT0KIJwDwKKUtchaLeODAQvft//whHjlyP3C5xumpmqSkTiXPT5xXs3BRe8riVl4NweVz2J7PB54aODNksa2rMNMQ16r0thf35j+3++er4ysLFI+0jh3dYefmUTdq/ufbezw/9S+BxMa4X19tWYlf3K/fzTq07NdYjVL5VL4Nas44riK5zUvBW4V9Pf4GAVNriLPl6iDFuhtz6nbldqc6Fn+XIYQQQgihJ+bnn3+u/eqrr2qkUim7bt06yY4dO0SxsbHqPXv2VPB4vHsWdhYuXFizbt26yk6dOmlOnjwpWL58uc2BAweEtbW1zOzZs+Xz5s1T3P0cOzs79uDBg+XBwcHajRs3ijdv3iz28fHRLV68uPqdd96p93gulwt//fVXZWRkpGbXrl2iH3/8Ufr9999Ls7KyrO4exM3NjT127FjZ9OnTFUVFRZyVK1dKTp8+Lejbt69q9+7d5RMmTFA9/FWePILLYJoGQsinAPCJ4e82NjbywsLCnyyXkXnEx8fPAACIjo5e/qjP1Vy7Zlv11VdDtBnXQ0zjXD/fLPv33tst7NKl0lx5NneUpZC0vyA87VTJYJ2GFRviDIdoWnV1PhQ50vc8h8vgYPCYVHIZ7/jqZTE5ly9Gg0nxWyi1Le865rldIb365Foyv+aClWv5yl25fXWZsijTOJHyikUDvHbyQu2f2B5/jRnLEEKoKcBxDCH0qDIzM2dwOBxnPz+/JrGywlJNBJ4WW1tbj6ioKM3BgwcrLJ2LNcrJyXHW6/XlgYGBD/w9FxISMqOwsLCIUtr5Uc+B39o3HT8BgNftPylSqbTFb0bODwurdVu/fpPtnNmbiI2NceaJLic3oHzeq3Mq3v8ghlUorK66bgmEIdBpiHfKiDfaLnQNsEkyxFk95WcklA3d8X3Ky3lXq9wsmaM1E9pItYPmvXV44Nw3l9k4OhcY4ipZrfOJNcun7fr+8xGy8jKhJXNsDhgbnkbyfNA+0Si/FcSGW2KIU5nWve6f7OmKjTcHsgrdf/aSQAghhBBCCKHGwgJaE0EplVFKCymlhQCgJYTgbKDbbKdNS3PfsnmRsEf3M2B4X/R6jvLgwT7Fo8fMlm/f4WfhFK2G1FmoHDwndGe3sf6rBRKu8ZsNRZXG6+iaGzOOrLreX4UFiMfmH9G5ZMLXP/8ZGtsvjuFyjR1nijJSO2395J155//d2haXIDcev61DgXRO2HJeO4dDwIChGw/R3ZR1ly9NnatOLG1l0QQRQgghhBBCzQ4W0JBV4Dg7a5x//XW/4zdf/8Fxcys0xNmqKqfqr7+eWvrK9Ge0ubniB70GuqNNlEvO6PfaL/Fr73CcELi1wSQFJv9adfSO75LnpJ4qCbJwilaLw+XSXpNeOfvMe58tcvT2NTZq0KpVkou7to3d+tl7E0syr9tZMsfmgPAYVvyMX7xkYqsljKMgyxCnKr2d6lDhC/JVGc/qy1QSS+aIEEIIIYQQaj6wgIasirhfvyL37f+skIweHQc8nnGGj+by5YjSF16cV/3rrxE4w6dh+EKOPnZSq2P9XmmzVOokyDHENUq9/bl/c1/c+/u1MTWlSixAPCYX/8DaZz/+ZmOXUeM284RC45LsqoK81ru++3zu8TXLu+l1uhbZLMScuH42lTazQtbyu7nuAB4xdunVF9a1k69Mn6c8WNAR9/pECCGEEEJNXW1tbRHuf9a0YQENWR3C41GH9+efdV21ciEvODjVEKcqlUi+bv0zJWPHTlUlJjpbMkdr4tnGrvyZt8PXhPZy28nhEWN3k/JcRfjuX67OO7cztyNlsQDxOAjDQKfhY1LHff7jQs/QducMcVav46WfPDpo4/zXpmddOOtuyRybA0IIiPp5XrZ5OXghx0ucbDygo0LN2bKR8iWpU3TZMicLpogQQgghhBCyclhAQ1aLHxwsc1v312a7/736N5FKawxxXV6+X/n/Xptd8e67fViZjGvJHK0FwyE0cqRv0vDX2y509pWkGOJ6LRWmniwZueP7lKmFGTVYlHxMNo5O6uFvfrC390uzV4ps7coMcUVVpcfBpb/M2Pfb9wOUslrce66ROE7COpupbbYLB3qtI0JOtSHOVmn8FRtuzq7bkd2LavTYeAQhhBBCCCH0yLCAhqyedNKkDPdtWxcJe/Y8bWwywLKM8sjRmOIxz86Wb9kaYOEUrYadq0gx9NWwfyJH+qzji+4UIGQVar/DKzJmHf/rRm+NCgsQj6tNj5i8577+ZVlQ1x5HCMPc3nuOktzkpB6bP/i/OSkH9+Lm92YgiHS5aTM7dDG3tW08ANwaEyhwtFer+8oWp87QpFR6WzZDhBBCCCGEkLk8rS1bsICGmgWOg4PW+ecFB51++H4Zx929wBBnq6sdq7//fnLpSy+N1mZl435eDRTay/3mqHfbL/YOs48HcqsAQSlwcpKrYrd/mzw7I7EMO58+Jp5QqO8349WTQ9+Yv8TOzT3bEFfXKewTNv31wvavPny2qjAfr9VGYsRcrWR84CHxWP/lxJZnbDxCFTpX5c7clxXrbwxlZVqBJXNECCGEEGri9AAALMvivr2oSaOUGq5R/ZM8DxbQULMiio0tcd/+z5+SceP2AJ+vNsQ1KVfal06aNK/6pwWdKG7c3iBCCVfbd1rrQ32mtFomceAbi5Jqhc7pzNbsqfsWp46UVahFlszRmnmFtqsY/8VPa9oPHPYvh883bn5flnWz3T9ffDAvYdNfHbEhRuPxgu2LpXNCV/AiHPcDQ7SGuC5bHilbljpXFV8SYsn8EEIIIYSaKi6XW0Up1SqVStxqBDVpSqWSRynVcrncqid5HiygoWaHcLnU4Z23z7utXbOQFxZ2xRCnarVQvnHjiOJnx05Txse7WDJHa+LT1qFk1Dvhf7bp7rKX4RBj59PSLHnHXQuuzLu4N689Nhl4PIRhoNv4Fy+N+ejrRa6BrUz2ntMIUw7uHbnpwzenFKRewc3vG4lwGCoe5ntGMrnVIsZFeN14QM1K1ceKJshWpE/QF9dJLZgiQgghhFCTIxKJMimlysrKShuFQsFnWZZgd3PUVFBKgWVZolAo+JWVlTaUUqVIJMp8kufEH4AmiBBywdPT0yMtLW25pXNprPj4+BkAANHR0Rb7t8j+3hhUu2LFcFpba28MMoQV9oo57fDhByc49vba+z8bmaosUEhPb8keUllQF2oat3UVZnZ/1n+3W6D0iVb8m7uUQ3FBF3dtG65WKOwNMcIw+sAu3U7ETJ4ezxMKn+iU5JaAUgrqk8Vt1YllQ0DD3lkqyyFqfoTTIeFArwuEIf/5xdgUxjKEEGoMHMcQQo9Kr9dzCwsLh+h0Oj9CiIgQYtGZaCzLcgEAGIbRWTIP1LRQSrWUUiWXy83x9PSM43A4D7w+QkJCZhQWFhZRSjs/6rmwgNYEYQHN/PTV1byqL7+KUZ080QNYapx5SWxtq21ffnmPdOLzNyyZn7W5crSoTcqRomFald7WECMM6AIinI53e9bvNJfPwbWHj0kll/GOrVoam5uc1APurOUHka1dWddnn98VHB2bZ8n8mgu2WiOs25UzQJ+r6GQaJ/b8PNEg7128VrZlpvGmMpYhhNDjwnEMIfQ49Ho9t7Kysp1SqQzU6XQOAGCxhmIqlcoZAEAoFJZbKgfU5Oi5XG6VSCTKdHR0vPKw4hkAFtCaHSygPTnK+HiX6u9/GKEvLPQxjfPCQq86fvjRPl7rVnJL5WZt6mo1/NObs/sUptdEAcCdQo+UV9p5uPeuwE7O+RZMz+plXTznnrBxzQh5ZYWnadwzpO353tNmHbZxclZZKrfmRJNU4ac6VjiC1unvLJUlwHLb2J0SD/c9SYS3fgk3tbEMIYQeFY5jCCFrh+MYMofGFNBwDzTUooiio8vct21dZfPcc7uAzzcWILTXUtuWTJ06r+q777tgk4GGEdvyNf1fabM/5sWgFWI7XrEhrpRpXU/9nfXygWXpQxXVGuxy+JgCOkUWT/j6lxUhMX33MRyucZlxYdrVLls+eXvuhZ3bwrDJQOPxOzrlSGeHLeWG2J0AArfeUAqMLr0mRrbk2ixNUgV2nEUIIYQQQghhAQ21PITLpfZv/t9Ft7/WLuS3a2fcuB00GoFi69ZhxWOefUl54oSbBVO0Kv4dHAtHv9v+j1aRzgcYzp0uh8U3aiN3/pgy7/LBwlBsMvB4OFwujZk8PXHke58scvTyyTDEtSqVzYWdW8dt+3z+82XZmbYPeg30cETI0UmeDTgqHh+4lNjzjUtkaZ3eSbk3b6p87fWRHC1gYR0hhBBCCKEWDAtoqMXiBQYqXFet/Mf+7bf/YuzsKg1xfVGRd8Vbb88sf+P/BuirqrBlcwNweAzbY3xAwqDZIYvt3UTGLodaNWtz+UDB+F0/X32+PFduZ8kcrZlrQKuaZz/59u/OI8du4QmFxmXGlfm5bf799pO5J9Ysj9LjzMlG47WyLZPODl3F7+y8BzhEbYjr8xQdW58Vu9oXc4W47QFCCCGEEEItExbQUItnM35cpvv2f5aI+vY5AQxzewkXJapTp3oUPzt2rmzdutYWTtFquPjZVI/4v7YbOgzw3MIVMMZCT3Wxss2+xWlzT2/O6qbXsjjuPAbCMNB55LPXxn32wyLPkLbnDXFWp+OnnTw6eNP7r7+SdfGcuyVzbA4IQ6hosPd5m2ltFjFuolRDnKsljHeawEH+R/pEXYECi8EIIYQQQgi1MHgjixAAMFKpzum77446//LLEo63d44hTmUyu5pff5tYMmnyOE1GhtSSOVoLwhDoMNDr2sg32y1yD5LeKfToKe/GufJB279LfiUnudLDkjlaMxsnZ9Xwtz7cEzt15iqR1NbYgUheWeF5cMnPM/b9/kN/lVyGMycbieMmkklfCd4s6O2xCQSMzBBny1StFWtvzK3bnduN6rAYjBBCCCGEUEuBH/4RMiHs3q3cfdvW1TYvvvAvEQqVhrg2LS2sdOq0eVVff9OVarW4VK4BbBwEqoGzQvZETwhYKZRyywzxuhqtx/G/bk4/tCJjkFKm5VsyR2sW3LN37oSvf1kaFNn9KGEYPQAAUEpyL1+M3vTBG3OuHN4XZOEUmwVhtFuadGbookoPrYLC7eWbLOVpL1cOki1OfUWbVo2z/hBCCCGEEGoBsICG0F0Iw4D9a69dcl2/biG/Q4dLxgNaLV+xffuQ4tFjXlEeOYo3zQ0U1MU5b/S77ZcFdHQ8QhjQ3w6TwvSabv9+nzLnyrGiNhZN0IrxRSJ9v5n/OzH09feW2Lq6GWdOqhUK+9N/r3lxx9cfjakqKpBYMsfmgJHy1IXBmtqsCFU5kXBLDXEq03rUbcueodiUOYCt0+GsP4QQQgghhJoxLKAhdB88X9861xV//Gs/f/4axsGhwhDXl5R4Vrz33ozy114bpK+owBlUDcATcPS9JgadHDAjeLGtizDLENeo9HYX9+Q/v/uXq+OqiupsLJmjNfMKC6+Y8OWC1eEDhu7k8PgqQ7w080b4P1+8P/fM5nURlGUtmWKzUGfPaqVzQpfz2jocAXKnGKy7UdtDviR1jvpcGc76QwghhBBCqJnCAhpCD2EzZnS2+/Z/logG9D8GHI5xqZzqdEK34rHj5tauXh1s4RSthnuQbeUzb7Vb27a3+3Yuj6kzxCsL6sL2/HZtXuL2nC6snuIS2cdAGAa6T5iUNOajrxa6BARdMcT1Go0o+cCeZzZ/9OaUwrSrjpbMsTkgfI5ePMrvpGRi0GLGUZBtiFOV3l51oOBF+eqM0foKldiCKSKEEEIIIYSeACygIdQAjESid/r66+POv/+2hOvra5xBReVy29pFi58rmfjCc5pr12wtmaO1IAyBzsN8koe/0XaRi7/NJUOc1VFB+unSYTu+S34pP7Xa1YIpWjUHT2/F6A++3NZ9wqT1ArGk2hCvKSn237Pg6zmHl//eS6tScSyYYrPA9ZdW2swKWcOPcvkXuMQ4609fUNdeviJ9nvJwYQdKqSVTRAghhBBCCJkRFtCaCEKIlBDiSQjxBAAepTgLpykSRkZWuG3ZvFY6Zcp2IhIZZ1Bpr18PLn35lXmVX3zZjarV+HPVALYuwrohc0P/jRrjt0Yg4VYa4vIqjfeRVddnHl19vZ+6Tse1ZI7WLHzA0Bvjv1qw2Ld9x9NACAUAoCzLuXn2dN+N778+MyPhpLelc7R2hBAQ9fe6ZPNy8EKOpzjFeEBHRZozpaPkS9Mm63LkOOsPIYQQQgihZgBv9JuONwGg4PafcJlMhvtBNVGEYcBu3txkt783LOR37HjReECn49Xt3DmoePSY6XUHDnhaMEWrEtzdNXv0u+FLfMMdThACtzbqosDkXa3uueO7lDlp8SWBFk7RaomkttrB/3vn4IBZry+XODgWGeLK2hqXY38ufnn3T18NlVdWCCyZY3PAcRYqbKa1+Uc4wHM9EXKqDXG2Uh2g2HBjdt2/OT2plsXftwghhBBCCFkx/EDfdPwEAF63/6RIpVK5hfNBD8H18lK6Ll+2y+Gjj1Yxjo5lhri+rMy98oMPp5fNnTdEX1qGxYkG4Iu4ut6TWx3t+1KbpTaOglxDXF2nczi7I3fS3t+vja4pVeK+Uo8poHPX4glf/7wiuFef/QyHqzXEC1OvRG75+O25F3f/E4pNBhpP0NX1hs2s0MXcVrYJAHBr/SYLXO2Vqn6yxddmaq5UeVk2Q4QQQgghhNDjwgJaE0EplVFKCymlhQCgJbeXXKGmTzJyRK779n+WiQcPPgwcjs4QV58927V4/Pi5tX+sCMPiRMN4hdiVjXonfHVIT7ddHJN9pcpzFe13/3Jt3vlduRGUxR+Nx8Hl8dnYKTPOjHj340UOXj7XDXGtSik9v2PL+G2fz3+uLCcL9/FrJEbC1UomBB4Qj/H/g0h5xll/VK5zVf6b84piw80hrFyL3XsRQgghhBCyMlhAQ8gMGLFY7/jF56dclixezPX3v2mIU4VCWrt8+biSiS9MVCen2FswRavBcAjt+ozvxaGvhS1y8pHc6SapZUXXTpQ8s+OHlClF12ucLJmjNXMLbF0z9pNvN3Qa8exWnkCoMMQr83OD//3m47kn167oqtfpcA/GRuKF2hdJ54Su4HVwPAAMMc7602XJusqWps5VJ5S0sWR+CCGEEEIIoUeDBTSEzEjQsWOV26aN66Qvv7SNiETG4oTu5s3WZTNnzqn89LMerEqFP3cN4OAulg/7X9i2LiN81vNFd/aVkpWr/Q/9kTH7+LqbsRqVHrtJPgbCMNDlmbFXx372/UKP4LALhjir0/FTTxwesun9N17OvnTBzZI5NgeEy7Di4b4JkhdbLWacBTeMB9SsrepI0fOyP9PH6UuVuN8lQgghhBBCVgBv5BEyM8IwYDdr1hW3zZsWCrp0OW88oNPx6vbsGVA8evRMxd692AGxgcJi3G+Meid8sXeo3Wkgt/aVohQ4OZcre+/4LnnW9cQyP0vnaK2kzi6qEW9/tDtmyoxVQqltuSEuryz3Orjopxn7F/7YT62QYyfURuL6SKptZoSsF0S7bQMeY+zeyxYrw+QrM+Yp9+d3pix2XkYIIYQQQqgpwwIaQk8I191d5bJk8R6Hzz79k3F2KjXE2fIK16pPPn25bPacYbriYqElc7QWQhuetu9LbQ72ntxqmcSeX2CIq+Q654St2VP3LU4dKatQiyyZozUL6dUn97mvf1ka2KXbMcIwegAASimTc+lCz43vvzHn6pH92Am1kQghIOztcUU6PXghx0eSZDygpwLN+fLh8iWpU7WZtc4WTBEhhBBCCCH0AFhAQ+gJkwwdmu++ffsy8bBhB4HLvdNk4Pz5LiXjJ8yrWbq0HTYZaBjfdg4lo94N/7NNN5c4hkM0hnhplrzjrgVX5ibF5Ydjk4HHwxeJ9P1nvXZ8yGvvLrV1cbvTCVUhd4jfsHrSjm8+Hl1dXIidUBuJcRAobSa33ikc4r2GiDiVhjhbrfGt25g5u+6f7N5UjUuTEUIIIYQQamqwgIbQU8AIhazjp5+cdlm2bBE3MNDYAZEqlRLZnyufLZnw3IvqpCQHS+ZoLThchnZ71v/skHmhixw8xWmGuE7DSlKOFI3Z+dOVF0uyZPhePibvtu3Lx3/50+p2/Yfs4vB4xk6opTevt//n8/nzErdu6IAF38YTdHLOtpkduoQbbHcSCNx6Qykw2tTqWNni1FmaSxW+Fk4RIYQQQgghZAILaOiJWl+93v6I4ohEpcON8wEABO3Dq93+3rDBdsaMLUQslhviuuzsoLLZc+ZUfPhRL7auDmefNICTt6R2xBttN3Uc4r2RJ+TIDPGaUlXQgaXpc079nRmt0+jxunsMDIdDezw3+eLoD79a5OIfeNUQ12k0osv7do3a/NFbkwvTrzlaMsfmgBFxdZKxAUfE4wKWETt+viFO63TOyj150+R/3RjO1mhwmTdCCCGEEEJNAN5coidm041NrS6pL4ni5HG2Y/ePnbXt5rYAS+fUFBCGAdvpr1xz27xpoaBr17PGA3o9V7l/f9/i0WNmKnbuwtknDRTe1yP9mbfbLfRsY5toiFGWcjMvVvTf/l3KjMyLFV6WzM+aOXr5yEd/+NXWbuNf3MAXS2oM8ZqSooA9P301+8gfC3vqNGr8PdJIvNZ2pdLZISv5nZz2gsnSZH2uvLNsedpc1YniMEpxaTJCCCGEEEKWhDc+6InZk72ni+H/V6orXX66/NPkaUemjbtWec3Oknk1FVw3N7XLooVxjl9+sYJxcSk2xNnKSpeqL76YVjpj5ghdQQFujN8AYlu+pv/04H29Xgj8Q2TLKzHElbVat1N/Z75ycHn60LoajcCSOVqz9gOHXR//5U+LfcIjEgBud0JlWe6NxPh+G+e/PvP6mVPYVbaRCIehoiE+52ymtF7EuArTjQc0rI36ZPE4+R/pz+sK62wtmCJCCCGEEEItGhbQ0BOztPfSLYMlg2v5hG+cOpFenR426/isuZ+c/aSXXCvnWjK/pkI8aFCBx/Z//hCPHLkfuFytIa5JSupU8vzEeTULF7XHPacaJiDCqXDMe+2XB3VxOshwiPG9LLpeG/nvDylzkw8VhmKTgccjtrXTDHnt3QP9Z732h8TBscgQr6updj26YtHLexZ8PURRVYlFykbieIhrpdNDNgpi3TcBnzEu82bLVG0Ua6/PrdubF0X1LLFkjgghhBBCCLVEWEBDT4yYK9b3s+mneNvp7dK2jm2TDXEd1fEO5h/sO3b/2DkbMja0tmSOTQURCFjHjz4847rij0W81q2Ns0+oUimWrVkzumT8+Mmq8+dxz6kG4PAYNnpC4OlBs0MW27kJbxjiWjUrvbS/YPzuX64+V56nwJk8jymwS7eiCV//vCI4uvcBhsMxFikLrqV03fzxW3OT9uwIsWR+zYWwp3uadGbIQo6/zXljUE/52qSKwbLFqa9o02vcLJgeQgghhBBCLQ4W0NATZ8+xZ//o/cf2+Z3mr3IWOhuX19Vqah0WXlk4cdKhSc9fKr+EXRMBgN+2bY3bhvUbbefM3kRsbGoNcV1ObkD5vFfnVLz/QQyrUGCTgQZw8bOpHvl/7da37++5lctnFIZ4VZEyeN+i1LkJW7Ki9DqcyfM4uDw+GzttZsKIdz5e7ODpfadIqVRKz23fNGHbZ+9NKM/Nlloyx+aAseWrbV5otUc03HclkXDLDHFaq/Ws25o1U7E5sz+r1OFMXoQQQgghhJ4CLKChp2aE/4jcLYO2LB8dMHovn+GrDPGbtTfbzDs5b+78M/P7VqmreJbMsamwnTYtzX3L5kXCHt3PACG31hzq9RzlwYN9ikePmS3fvsPPwilaBcIQiBjkdXXkm+0WugVJLxjirJ7yr58tH7z9u5RXclIq3S2ZozVzC2pTPfbT79Z3Gj5mK1cgMBYpK/JyQnZ8/dG8k+v+jNTrdFikbCR+B8c86ZzQZbww+6NAQH87THTXa6PlS1LnqM+XBVo0QYQQQgghhFoALKChp0rAEbBvd3z73Jp+a37v6NzxoiHOUpZzvPB4rwkHJsxbmboyjKW45xfH2Vnj/Ouv+x2/+foPjqurcc8ptqrKqfrrr6eWvjL9GW1urtiSOVoLG0eBatCskN09xvuvEtrcmclTV63xPP7XzRmH/8wYqJJrsXj7GAjDQJdR466O/fT7RR5tQu/8TOt0/NRjh4Zu+uCNl3IuX3S1ZI7NAeFz9OLR/ickzwctYRz4OYY4VeodVPsLJsnXZIzSV6pxPEAIIYQQQugJwQIasgg/qV/dophFuz6P/PwPN5FbgSEu18ptV6SuGDfx4MTJZ4rPuFgyx6ZC3K9fkfuO7X9IRo+OAx5PY4hrLl+OKH3hxXnVv/4agU0GGqZVpEvu6PfaL/OPcDxKmNszeSiQgrSa7ju+T5l79Xgx7sn3mGxdXJUj3vl4V6/J01cLpbYVhri8otz7wMIfZx5Y9FNftQIbhzQWN0BaYTMrdA2/q8tO4BLjTF59fl0H+Yr0uaojhe0pxUYZCCGEEEIImRsW0JBF9ffpX7hl0JY/n2/1/L9CjrDOEM+V5wa8efrNWW/GvzmwTFnW4jv7ER6POrw//6zrqpULecHBqYY4ValE8nXrnykZO3aqKjHR2ZI5WguegKOPeSHoRP/pwUukzoJsQ1yj1Ntd2J03cfevV8dVFdXZWDBFqxYa0zdnwlcLlgZ0jjpOCGEBACilTHbS+V4bP/i/2VePHgiwdI7WjjCEigZ4JdlMa7OI4yG6ajygZcXqhNLR8mVpk3S5ctxXEiGEEEIIITPCAhqyOC7Dpa+2f/XShgEbfu/q2jWRwK09vyhQJqEkoftzB597dVHKog46FvdS4gcHy9zW/bXZ7n+v/k2k0hpDXJeX71f+v9dmV7z7bh9WJsNZPg3g0cq2YtTb4Wvaxrrv4PAYpSFemV8Xtve3a/MSt+d0YfW0xV9zj0MglugGzH792ODX3lkqdXHNNcTVcplj/PpVk//99pNRNSVFuNywkTiuIrnNS8Fbhf08N4CAYxwP2Ap1oGL9jTl1O3OiqZbF3/MIIYQQQgiZAX6wRk2Gu9hd9UvPX/Z91/27pd4Sb+MeP0qdUrL++vpREw5MmHas4Bhu+A4A0kmTMty3bV0k7Bl92thkgGUZ5ZGjMcVjnp0t37wFNxVvAMIQ6Dzc5/KIN9oudPG3uWyI63VUkH66dNiO75On5adV41Lix+TTLqJswpcLVrftN2g3h8dTG+IlNzI6bPts/tyz2/5uj8uPG0/QzfW6dFbIYm6Q9AwA3B4PgKtNqeovW3xthuZqladlM0QIIYQQQsj6YQENNTk9PXqWbhy4cfXUkKnbJFyJzBAvqivyeT/x/Zmvnnx1WIGiQGTJHJsCjoOD1vnnnw86/fD9Mo67u3EfOba62rH6hx8mlUyZMlaTkSG1ZI7WwtZFWDdkbuiOqDF+awVibqUhLq/U+BxdeX3WsTXX+6rrdDiz7zEwHA6Nfn7qhVEffLnQ2S/QuNxQp1GLL8XtHL3l47cnFWWk4nLDRmJseBrJc0H7RaP9VhApr9gQp3Kdm3JHziuKv28OZuVaviVzRAghhBBCyJqZpYBGCPmUENKTEII3mMgsGMLAjLAZVzYN3LSwp0fPeAYY4zSVC2UXukw6NOnVBZcWdNay2ha/xE4UG1vi/s+2PyVjx+4BPt84y0d7LbVt6dRp86q++iqKqtVYLG+A4O6uWaPfC1/i287hBCFwe/8uYHKvVPfa8V3K7PTTpbh/12Ny8vaVj/noq61RYyf+zReJaw3x6uLCwN0/fjnn6IrF0ToNXqeNxQ9zKJTODv2DF+5wEBjQ3Q4TXaYsSrY0da76TCk2ykAIIYQQQugxmOtm5WMAOA4A1YSQOELIO4SQzoSQFl/cQI3jKHTUfN/9+0M/9/x5sb/U/6YhrtKrRFsztw4fu3/s9LjcOG9L5tgUEB6POrz7znm3tWsW8tu2TTEe0Gr5ih3/Di4aPWa6Ig7fp4bgi7i63lNaHe3zUuulNo6CPENcXadzTNyeMzluYeqo2jIV7t/1mDoMHpEx/qsFi3zadTAuN6Qsy71+5mT/jfNfn3EjMd7LwilaPcJjWPFIv9OSF1stZpwEmcYDatZWdbhwonxl+lh9qRIbZSCEEEIIIfQIzFVAGwYACwAgAwAGAsC3AHAWACoIIf8QQuYRQkLNdC7UAkW6Rlas679u3ay2szZKedJqQ7xMWebxxfkvXp51fNYzWbVZEgum2CTwgoLkrqtX/WP/zjtrGQeHCkOcLStzr/r4k5fLZs0arivA5a8N4R1iXzbqnfBVIdGuuzlcYpzZV5Yj77Dr56vzzu/Oi6AstWSKVktsa6cZ8vp7+/vN/N8Ksb2DcblhXU2125E/Fr6y9+dvBtdVV+Fyw0bi+thU2cwM+UvQw/Uf4DHGLsf6ImVb+aqMucoD+Z0oi40yEEIIIYQQagizFNAopXGU0rcppZ0AwAUAxgPAcgAoB4BRAPArAFwhhBTc/1UQejCGMDA5eHL6lkFbFvXz6neMQziG5UmQXJEcMfXI1Fe/ufhNN5VO1eKXgdmMG5vlvv2fJaJBA48A5877pL5wsXPJc8/Pq/7llwiqw66mD8NwCO06yu/C0P+FLXTyFhv379JrWdG148XP7PghZUrRjVonS+ZozYIiuxc+980vf7TpEXOQMblO868mR23+6K25l+J2Blsyv+aAEALCPp4pNq8EL+J4S4yNMkBHhZpz5SPkS1OnaDNlzhZMESGEEEIIIatg9kIDpbSSUrqVUjobAKIA4HUAKAMAAgDYQRE1mi3fVvdF1BfHl8QsWdTarnWaIa5ltYJd2bsGjd0/dtb2zO3+FkyxSWAkEr3Tl1+edFm2dBE3KOi6IU5VKrF8/YZniseOm6o8edLVkjlaCwcPsXzYa223dh7us4Ev4tQY4rJytf+hP9Jnn1h3M0aj0nMsmaO14vL4bO+XZp8e/vZHi+w9vIzLtDXKOtuz2/5+7p/P54+vyMvBZhiNxHEU1NlMab1DOMh7LRFxqgxxtkrjV7fx5qy6f7JjqRqvYYQQQgghhO7HrAU0QoiQENKfEPINIeQsAJQCwM8AYAsAhwHgA3OeD7Vs7ZzaVa/pt2bT6+1fX2fPtzcuV6xUV7r8cOmHKS8deWlsalWqrSVzbAoEHTpUu21Yv8F27pyNRCo1Fn/0BQW+FW++Nav8jTcG6CsqcLlcA7SNdb8+6p3wRV6hdqeBGPbvAk725co+O75LnpWRWOZn6RytlXur4Opxn32/ruOwUdu4AoFxuWF5bnbojq8+mntq/courF6PsyYbSdDFOctmduhibhvbU3B7DzqgwNGmVveWLU6dpblc4WvZDBFCCCGEEGqazNWF8wNCyBEAqAKAAwDwJgBo4dZeaP0AwJ5SOoBS+q05zoeQqfGtxt/cOnjrkiG+Qw5yCVdriKdVp7WdeWzmvE/PfdpToVW06JkVhGHAdurUdPdtWxcJY3rFA0NudTWllKhOxfcoHjtubu2KP0Mpyz7klZDQhqft91Kbg70nt1outucXGuIquc75zNbsqXGLUp/BJgOPhzAMRI6ecGXsp98vdG8dkmSI63VawbWjB4dt+uCNabkpSS6WzLE5YERcnWRc4GHxuIBlxJZn3FqB1umclbvzpsnX3RjG1miElswRIYQQQgihpsZcM9C+AIBYuNWJczgAOFJKoymlH1FKj1FKNWY6D0L3JOaK9R91+ej0ij4rfg9zCDN2odRRHe9A3oF+Y/ePnfP39b9bWzLHpoDj4KB1/umnQ84//7KU6+OdY4hTudy2dtmy8SXPT3xBnZTkYMkcrYVvO4fi0e+Gr2gd5RLHcIhxjCvLlkfs+vnqvPO7crHJwGOydXFVjnz3k509X3x5jdBGWmmIy8rLfPb/9sOsA4sW9FXXKbiWzLE54LWxK5HOCf2T19FpHzDE+OWDPkfeRbY8ba7qZHEopXgNI4QQQgghBGC+Aloe3NrjbCAA/AkASwghUwkhuJwJPVVt7NvIVvRZ8c97nd5b7Sx0LjHEazQ1jr+n/D5x0qFJz18qv9TiC0TCHt3L3LZuXS2dPHk7EYmMy+V0mZmtymbPmVPx/gcxrKJlz9prCA6Xod3H+p8d+mroQkcv8TVDXK9lRddOlDyz4/uUqYUZNbhB+2MK690/e8LXPy8J6NT1BCG3Zk1SSpnspHO9Nr7/xuxrxw4GWDpHa0c4DBUP9UmUTGm1iHERZhgPaFgb9Yni8fIV6c/pCuta/FJ4hBBCCCGEzNWF0w8AWgPALAA4AbcKaSsBIJMQcp0QspQQMo4QgjeS6KkY6T8yZ8ugLctHBYyK4zN8lSF+s/Zmm1dPvjr3/TPv96lR1/AsmaOlEYYBu1fnJbtt/Pt3QWSX88YDej1XefBgn+JRo+fIN20OtGCKVsPRSyIb/nrbLZ2He9dvMlCh9ju8ImP2sbU3+miUOpwx9RgEYoluwJw3jg7639tLpc4ueYa4Wi5zPLVu5eR/v/lkVE1JES6ZbSSup6TGZnrw34Je7luAzygMcbZUFaxYe32ucm9eV6pncQ86hBBCCCHUYpmtiQCl9CaldDmldAKl1A0AIgDgLQBIA4DnAGAjABSZ63wIPYyAI2Df6fjO2dX9Vi+McIq4s58S1XOOFR6LGXdg3NxVqatCWdqy9/3ienqqXBYv3uP41Zd/cFxdjT+jbHW1Y/WPP04qmTJlrCYjA7sgNkDbWI/ro94JX+QdZh9vbDJAgclNqYrZ/m3K7LT4EixIPibf8I5lE776eVXbPgP3cHg8tSFecjOjw7bP3pt3Zsv6DriHX+MQQkAY435NOj1kIcfX5oLxgJ7yNUkVQ2SLU1/WZtS4WTBFhBBCCCGELMasXTjvwgUAHgDwb/8vecLns2qEECkhxJMQ4gkAPEopftNvJv5Sf8Xi2MU7P4v8bIWbyM246btcK7f7I/WP8RMPTpyUWJLY4mdHigcOLHTfsf0PybNj9gKfbyxQaK+lti2dOm1e1VdfRVG1Gn+GH0Jow9P2ndb6UJ8prZZJHPj5hri6Tud4dkfupL2/XxtTXaKUWDJHa8VwODT6hWnnR33w5UJnv8CrhrhOoxEl7989avNHb00uTLvqaMkcmwPGnq+ymdRqt2iYzyoi5pYb4rRW61W3NWuGYktmPxZnVCKEEEIIoRbGbDfDhJA2hJDZhJCthJAKADgHt7pw9geAmwDwKwA8Y67zNUNvAkDB7T/hMpnMxsL5NDsDfAYUbBm0ZcWEVhN2CjlC475fufLcwP+L/7/Zb51+a0CZskxgyRwtjfB41OG99865rV2zkN+unbEZA2i1fMWOfwcXjR4zXREX523BFK2GT1uHktHvtl8ZEu26m8MlxoJkea4ifM8vV+ed3ZHTmdVjofxxOHn7ysd89NXWbuNf3MAXS4xLZmtKigL2LPh6zuHlv8doVSrcw6+R+BFOudI5oUt5ofbHgIAeAAAoMLqM2p7yJalz1OfLcEYlQgghhBBqMYg5OmwRQnIBwAtuzTIDAMgEgMMAcAQAjlBKyxp9kmaOECIFAMMyuX0eHh4u6enpyyyZkznEx8fPAACIjo5ebulcTBUpioTfJX3X51zpuUgKd4oYYq5Y/mzgswdntp2ZzBCcbCXf9o9/7bJlw9iqqnoz9PidOl10/PDDQ1wfb6WlcrMmVcV1NgmbsweV5ynamcZtHPl5kc/47fYJsy+1VG7WTimr5R1buaRPXsqlbnDndxCIbO3Kuo55bndwz9655jhPUx3LnhZtpsxZFZc3gq3W+JrGOV7iZNEI3/0cpztfSiCEmqaWPo4hhKwfjmPIHEJCQmYUFhYWUUo7P+pzzVUh4ALABgB4GQD8KaWtKKUzKaWbsHjWMJRSGaW0kFJaCABaQkjjK5vovjwkHqpfev4S9023b5Z5SbyMN9h1ujqbvzL+Gj3+wPhpxwuPu1syx6bA5tkx2e47ti8VDx58GLhcnSGuuXixU8nEifOqf/klgup0OIvqIRzcxfKh/wvbFvmM7zqBmFtliMsrNT5HV1+feWTV9f4qha5FN7V4XCKprXbIa+8eGDD7jeUSB0fjHn7K2hqX46uXTdv1wxfDZeVlQkvm2BzwAqXlNrNDV/MjXXYBlxgbs+gL6trL/0yfpzxc2MEcX8ghhBBCCCHUVJmrC6cnpXQSpXQVpdQs3/Yj9DTEeMaUbBq4adXk4Mn/SLgSmSFeqCj0ff/M+zP+d/J/QwsUBSJL5mhpjFisd/zi81MuS5cs4gYFZRjiVKUSy9dveKb42bHTlCdPuloyR2sR2tPt5qh3wxf7trM/SQjc2vGeApN/rTp6x3fJc64eL25t4RStVkDnrsXPffPrHyG9+uxjuFyNIV6Ufq3z1k/emXdux+Z22GSgcQhDqGig10WbaW0WcTxExj3oQEtFmjOlo+RL0ybrcuS4Bx1CCCGEEGqWcI0aavEYwsCstrNS/h7498Jo9+h4BhgWAIACJefLzkdOOjTp1Z8v/9xJy2pb9EwrQYcO1e4b//7bdu6cjUQqNe47pS8s9Kl4861Z5W+8MUBfUcG3ZI7WQCDm6npPaX2k38ttltg4CYxfOGiUevsLu/Mm7v716rjKwjrsevoYOFwujZkyI/GZ9z5b5Ojtm26Ia9UqSdLu7c9u+eSdF4pvpNtbMMVmgeMqktu8FLxV2M9zAwg4xrGArVQHKDbcmF33b05PqmXx8wVCCCGEEGpWzNlEgCGEvEoIOUMIqSGE6EyOdSSELCaEtDHX+RAyN2ehs+aHHj8cWhC9YImf1O+mIa7Sq0Rbbm4ZMW7/uOn7cve1+A30badOTXfftnWRMCbmFDDk9iwqSlSn4nsUjx03t3bFn6E40+fhPIPtyke9Hb46NMZtJ4fHGPeSq8yvC9v7+7W5Z7Zld9Xr2BZdtH1cLv6Btc9+/M3GLqPGbeYJRcaZpdVFBa12//DF3GMrl/TQaTVY4GkkQTfX69JZIYu5QdIEALi1fpMFrvZKVT/Z4mszNSmVLX68RAghhBBCzYdZbiAIIXwAOAgAvwBAEADIwGQzZwDIAoCXAOAFc5wPoSepq1vX8vX916+bGTZzk5R3Z6ZVqbLU4/Pzn7886/isZ7Jl2RJL5mhpHAcHrfNPPx52/vmXpVwf7xxDnMrltrXLlo0veX7iC+qkJAdL5mgNGA6hkSN8k4a/HrbQxd/msiHO6qgg40zZkB3fpbySk1LZ4vfiexyEYaDT8DGp4z7/YZFXWPhZQ5zV67kZp08M2Dj/9Rk3EuO9LJljc8DY8DSS54IOiMf4/0GkvGJDnMp1rsqduS8r1t8Yysq0Lbq7MUIIIYQQah7M9Q382wDQBwA+AwA3AFhhepBSWg0AJwBgkJnOh9ATxRAGpoRMSdsyaMvCvl59j3MIxzijMrkiOWLq4amvfnvx2yi1Xt2iZ7EIe3Qvc9u6dbV08uTtRCRSGOK6zMxWZbPnzKl4/4MYVqHgWDJHa2DnKqobMjd0R9QYvzUCCbfCEFdUazyPr70549CKjEFKmRaXxz4GG0cn9bD/ez+uzytzV4jt7EsM8brqKrcjfyx8Zc+Cr4coqiqxwNNIvFD7Iumc0D94HRwPAEO0hrguWx4pW5Y6VxVfEmLJ/BBCCCGEEGosc938vwAA8ZTSzymlLBiWctSXBQC+ZjofQk+FLd9W92XUl8cWxSxa1NqudZohrmE1gp3ZOweP3Td25o6sHf4WTNHiCMOA3avzkt02/r1QEBl5znhAr+cqDx7sUzxq9Bz5ps2BFkzRagR3d80e/V77JX4dHI8RBvS3w6Qwvabbju9T5qYcKQq2aIJWrHW3ngXPffPL8tbdex1iOHcK4gXXUrpu/vituUl7dmCBp5EIl2HFw30TJJNaLWachTeMB9SsVH2saIJsRfoEfTHu74cQQgghhKyTuQpoAQBw5iGPqQQA7M7VwvgUHxBL6vKtfgZSe6f21Wv6rdn0WvvX1tvx7SoN8Qp1hev3Sd9Pefnoy8+mVaXZWjJHS+N6eqpcFi/a6/jVl39wXF2LDHG2utqx+scfJ5VMmTJWk5GBN88PwRdy9LEvBh3vPz14ia2zIMsQ16r0tklx+c/tWnDlufI8RYu+1h4Xly9g+7w8J374Wx8utvfwMu5zqFUqpee2b5qw7bP3JpTlZOF720hcb0m1zYzg9YKebluBxxhnprIlyhD56uvzlHF5kVSP+/shhBBCCCHrYq4CmhIA7B/yGF8AqDbT+ZAV4OQlOIZmr7KLTn7bVbRx9DNMwTl7S+fUWBNaTbixddDWxYN9Bh/iEq5xmVJqVWq7GcdmzPvs3Gc9FdqWvWRRPHBgofuO7X9Inh2zF/h8tSGuvZbatnTqtHlVX30VRdUte+lrQ3i0sq145u3wte36uG/n8pk6Q7yqSBm8b1HqvNObs7rrsdPhY3FvHVI17rPv13UcNmobVyAwFngq8nJC/v3m47kn167oqtfpsMDTCIQQEMZ6XJVOD17E8ZVcNB7QU77mYsVQ2ZK0l7TXa1wtmCJCCCGEEEKPxFw3X5cAYODtZgL/QQixg1v7n52913HUPAlOfhPLAAsMsMAtOBch3vTsq6LN44czJSlWPcNDwpPoP478OH5FnxW/hzmEXTHEdVTH25+3v9/Y/WPnbLqxqZUlc7Q0wuNRh/feO+e2ds1Cfni7ZOMBrZav2PHv4KLRY6Yr4uKwQ99DEIZAp6E+ySP+r91Ct0CpsQjB6invxrnygf98mzw961KFpyVztFaEYSBy9IQrYz/9fpFHm9A7761Ox089cXjIpvdffyXr4jls4NBIjINAaTOp9S7RUJ/VRHxnfz9ao/Gu25I1U7Elqy+r1HEtmSNCCCGEEEINYa4C2h8A4AMA6wkh9YojhBB7AFgNAA4AsNRM50NWQBMx9VyFbZhxBhKhLMPNO91ZvH74/0RbXxjMlKfZWDK/xmpj30a2os+Kbe92fHe1k8Cp1BCv0dQ4/pr86wuTD09+Lrki2d6CKVocLyhI7rpy5Xb7995bwzg4lBvibFmZe9XHn7xcOnPWCF1evsiSOVoDqZNAOWh2yK4e4/1XCaXcMkNcWat1P7k+c/rB5elDFdUa3Aj/Mdi6uCpHvPPxrpgpM1YJpbbGa1ReWeF5cMnPM/b99v0ApayWZ8kcmwN+R6cc6ezQpdwQu+NAgAUAAAqMLqOml3xJ6mz1+fIAC6eIEEIIIYTQAxFK77Xf/2O8ECF/AsA0ANACQBUAuABAEgC0BQABACyilL5qlpM1c4SQC56enh5paWnLLZ1LY8XHx89wrEnhdyn6S85U5/iZHqMMV6f3731W1fvjeOoQWHe/17AGar2a+SX5ly5xOXF9NeydQgaHcPQxnjGn3ol4J95OYKd90Gs0d2xdHaf6m2+71x06FAu6OzNOiFBYJ3l2zEG7efMuEy7XPANSM6ZV6zlntmV3z75cGUtZML6PPAEjD4txj2vf3/MaYXD14ePQKJWcE2uX98y6cLYXZVnjUmyBWFLt2j2WtfUNVEdHR1v9uGxp2pu1Lqp9+cPZak29xkIcb8ll0QjfAxxHgVX/PkCoqYqPj58BAIDjGELIWuE4hswhJCRkRmFhYRGltPOjPtdsBTQAAELIVAB4DQDaA4DhDu4qACyglK4y24maueZWQAMAiO7RfTnv0tpA/vmlfZja/HpL9yjD0+gC+yWqe39ymtr5qCyTqXlky7Il3138rt/lissdTeNSnrTm+dbP75scPDmNIS172yp1cop99TffDNHeuNHGNM7x9Myzf+vN3aJevUrv91x0R0mWzOHMtuyhNSWqesuF7dyEN7qP9d/j6i+ttlBqVq/gWorTyXUrh9eWFvubxqV+gapBL81a5OjlI7dQas0GZSlRHSzopEmqGAB6emf2JI8oBV1c9gn6eCQTgoVghMwJbzwRQtYOxzFkDk2mgGZ8UUJEcGvJZg2lVPGwx6P6mmUBzTDIURZ455e35l9c0ZeRF9fbX4hyBGpdq0Gn1b0/TqQ27up7vJzV2J+732vJ1SVDS5Wl9fan8rPxy3yjwxtxXd26lt/vuS1F7Zo1wbI1a4dQmczOGCSECnv0OOPw4QfHOM7OGgumZxUoS+HyocK2104UD9apWeOSaMIQXUCE47Fuz/olcPkc1pI5WivKspC4dUPE1WMHB+o1GuMyYw6PpwqJ6Xuo+/hJFxkOB2dMNpK+VGmj3J07WF+kbGsaZ5wEmaKhPru5vjZVlsoNoeYGbzwRQtYOxzFkDk2ugIYap1kX0AwoC/zEhSG8S6v6MIqyep3YKFeo1LUZHq+O/egsFTtZ7bJHHasjC1MWdtyZvbO/Sq8y3oATIGwP9x5n3u307nFnYcsuEumrqnhVX34Vozp1sgew1Dg1j0gkMumLL8ZJX5qWSpiWPWOvIRTVGkH8pqx+xTdqI03jIimvtNNQ791BXZzzLJWbtasuLhQfW7V0UOnN6+1N41Jn17yeL07b5dMuoux+z0UNp04obaOKLx4GavbOPqoM6HhhDsdEQ30SCI/BQjBCjYQ3nggha4fjGDIHLKA1My2igGbA6gg/4ee2vMvrejPKCifTQ5QnVmhDnjmljv3oPAhsdU8h3SeiQFEg+u7id30ulF3oQoEa1ySJuWL52MCxB2a0nZHS0pd1qk4nuFT/+ONQXV6ev2mcGxBww2H+e3sFHTviLJQGyLxY4XVhT94IZa3WzTTuFiS9ED0+4JCNo8Cql0hb0r5NG+YVJRyz18plxr3RCCGsX8cup2KnzjwpEEusdoxqKli5lq/cndtHd1MWBXe2gQBiwy0R9vPaxW/nUGDB9BCyenjjiRCydjiOIXN46gU0QkgmAFAA6E8pzbr994aglNKgRz5hC9OiCmgGOhUjiP8xnHdlY2+iqrY3PUT5Upk2bMwJda/3k4Av0T+5bJ+sE4Un3H5L+W1ooaKw3sbZXhKv3FfDX90b4xlTYqncmgLKslC7eEl7+ebNA6lSKTEe4HD0or59TjrMnx/PSKVYpHgIvZZlzvyTE5WVVNGH1VNj90gun1GE9nTbHzHIKwWbDDy6+Pj4GaxOC8orF27kXLoQTemdGZNCG2lll1Hjdof1HpBlyRybC821Kk/VocIRVKatt8yfGyA9Kxrpe5ix4bXombsIPS688UQIWTscx5A5NKaA9rjTXpi7nsvArW+LH/anZU+zQffHFbLq2A8vy2ec+13T8aVdVGBbazhENDIp/9KaYTbLu74qOPZZR9CprPI6ivGMKdk8cPOqyW0m/yPmio2bkBcoCnznn5k/87VTrw0pUhQJLZmjJRGGAbt5c5PdNm9aKIiMPGc8oNdzlAcP9S4e8+xs+abNgRZM0SpweAwbPSEgYfCckEX27qIMQ1ynYSUpR4rG/PvjlUnFN2sdLZmjtWK4PBg4980jg159e5nU2cW4LFYllzmeWrdy8r/ffDKqpqRIbMkcmwN+mEOhdE7oH7z2jgeBAWPRXJcl6ypbmjpXdbok2JL5IYQQQgihlgmXcDZBLXIG2t3UMo7gxFedeanbexGtwsb0ECt0qNS2n3hc0+PNFODwrfICLleV87+7+F3s6eLT3SiYzGThCOtG+o88PC98XhKX4Vrlv81c6g4e9Kz55dfh+tJSD9M4LzT0qsOHH+znt2kjs1Ru1oKyFFKOFoVcPVY8VKvSSw1xwoDeL9zxRLex/vF8IcdqZ3U+TXePZaxeTxI2ru2cdupof71Wa+wiyeXzlWF9Bu6Pevb5y7h/X+Pp8hT2yr25w9lydb3Z64ybKFU8wjeO4ybCcQChBsKZGwgha4fjGDIH3AOtmcECmgllJU94/Msu3PRdPYlOWW9mByt2Ltd2mHxU0+1/qWClxaazJWedF1xeMCRXnltvZpWbyK1wTrs5ewf4DGjRe/5QrZZUL1jQRbFzVz/QaIxFCuDxNOKhQ486vP3WWSIQ4ObiD1FXq+Gf3pzdpzC9pt7eUkIbbnnEYO/dbaJcciyYnlW431hWkZ9rc3zVssHlOZn1ukjauXlk9Zr08m7PkLaVTzPP5ohSCurjxe3UZ8uGgJa983uAQ9T8CKdDwoFeFwhDrPJ3AEJPE954IoSsHY5jyBwssYSzHkLIbEKIgzleCzUvp4tYUY2aPv51JnLUqgYvSFC8cvpXbejow5QrNG6CztSVOwsSFoyTLI+ayT+7KBio9dVRurp1Ld8wYMNf08Omb7bh2dQY4iXKEs9Pzn3yypzjc0Zmy7IlD3qN5ozweNTh3XfPuf219nd+eLtk4wGtll/377+DikaPnqHYu9fbgilaBbEtX9P/lTb7YycF/SG25xca4iq5zvnM1uypcYtSn6ktU+HSw8fg5O0rH/PRV1u7jX9xA18sMf4M15QUBexZ8PWcw8t/j9GqVJwHvQZ6MEIICHt7XJFOD17I8ZEkGQ/oqUBzoXyYbEnqNO31GtcHvARCCCGEEEKNZpYZaIQQFgDUALALANYAQBylVljNaCKaywy0xOwqp1fWp8xjCECQiyRjYIjzpRe7emXYCLiPvWSMyAoFgmOfd+fePNCd6DV802Os1LNQ03n6UW2nl2+AFXa1rFHX8L6/9H30icITPfVUb7zh5jN89RC/IUdeb//6eQGnZc+2kv+z3b922bJhbGWls2mc37HjRcePPjrE9fFWWio3a6HXseTsjtzIm+fL+7F6avwZ4vAYZXB3lwOdh/lcwiYD/9WQbzyVslresZVL+uSlXOoGJjP9RLZ2ZV3HPLc7uGfv3KeQarOnvljurz5WNIIq9Xf28iPActvYxYuH+54gQg42G0HoHnDmBkLI2uE4hszB4ks4CSHvAcBkAAiBW905ywBgHQCspZQmP+i56L+aSwHt9a1X+x5Or+hlGhNyGWWEt+2VMRHulwaFuRQy5PFu1El1tkhw7PMe3KyjUYTV8kyPsXa+eZrI2Ue0HSZlP372lnO5/LLDT5d+GnSj9ka9jbKdhE6l08Om7x3pP7JFL7dj6+o41d9+173u4MFY0Om4hjgRCpWSMWMO2r067xLhWueS3qepskAhPb0le0hlQV2oaVzqJMiJGuO327ONXbmlcmuKHuUDW9aFs+6nN64ZqaiqrLd/n0dw2IXe02Ydkjq7qO73XNQwVKXn1u3J7aVLr+kJ9M5seiLiVAp6e+wSdHLOtmB6CDVJeOOJELJ2OI4hc7B4Ac34YoR0AYCpADABAJzgVjHtMgCsBoC/KaVlZjtZM9ZcCmiLT+SExV3KeSZbBvx7HXcU88qjAx0uTYryTg51t3msjaCZiusSwfEvojk5JyIJe6eYAgDAOgRkq7u+ekTXbnze/Z7flG28vrHVmvQ1Q2o0NfU6JoY5hF15p+M7B9rYt+xN9NXJKfbV334zWHu9fqGR4+mZZ//m/+0RxcSUWCo3a3L1eFHrlMNFwzRKvZ0hRgiwPm0dTnUf539SIObibB549A9sep2OxK9f2TUj4WRfVqczjoE8gVARPmBoXOeRz17FJgONp71Z66Lclz+CVmt8TOMcb8kl0UjfAxwHAc5KReg2vPFECFk7HMeQOTSZAprxRQnhAcAIAJgCAIMBgAcAWri1tHOU2U/YzDSXAhrArUGuuI5yTtU6piVmVXWQqe/cpBsQAOrvJMocEOJyaXKUV5qdiPfIN+xM6VWp4PgXvTh5pzsTyta7K9U7tb6h6fb6UV3IM4X3e35TpdAqOD9e+rH74fzDMTqqM8604xKudoDPgONvRrx5RswVt+guirVr1gTL1qwdQmWyO9cWIVTYvfsZh48+PMZxdtZYMD2roJJreae3ZMfmp1b3AHpn6aFAzK3sMNBzT0i0W6Yl82sKHvcDW1l2pu3x1cuGVubn1iv02nt43YiZMn2Pe6vgajOm2SJRlhLVwYJOmqSKAaCnJs1GmDpBpPM+QW+PFPKYs50Rak7wxhMhZO1wHEPm0OQKaPVOQIgTAMwGgI8AgEspxc2UH6K5FdAAbg1yOpaSfy4V+e1KKY24WigL07KUd/fj+RyiDveyvfpMe7fLz7R3y33UJZ5M0UU7wYmvYzj5iR0J0HpP1juHpmui3zqqazXI6mYmpVWl2f5w6YcBqVWp7Uzj9nz7iqkhU+PGtxp/01K5NQX6qipe1Vdfx6hOnuwB7J0CKpFIZNIXXtgnffmlazjb5+Hyrla5nf03d7iiSlOvMYOzrySlx/iA/fZuIoWlcrO0xnxgoywLSXt3hF7et3uIVqWUGuIMh6NrFRV9tOekl89wefwWvb+hOehLlNK63bmD2WJlmGmccRLcFA3z2cP1samyVG4INQV444kQsnY4jiFzaJIFNHLr694BcGsW2jMAIAYAPaX/LZqg+pprAc00XiHX8Nck5oceyajokFOpDLjXc+1E3Kpu/g6XJ3X1utzB27b6Uc7LyU90EJz8OpYpvNj+P4U0t/bX1NFvH9MH9LG6JcU7snb4r7i2YmilutLFNN7arnXamxFv7m/v1L7aQqk1CaqEM87VP/wwTJeX528a5wYE3HB49904QedOlRZKzWqwekrO78rtdD2xbIBed2c2D4dLVK2jXA51GeF7keGQFrfHnDk+sMkrKwTHVy3tV5B6JdI0LrZ3KOk+/sWdQV17WN0s2aZIdbokWH26ZCioWVtjkAEdr63DMdEQnwTCY7BYiVokvPFECFk7HMeQOTSpAhohJBRuFc1eBAAPuNWJ7DoArIVbTQWscj+qp6klFNBMJRfU2q07W9AhIauqQ7VS53ivx/g6CHP6tHG+NKWb9zUXG36Dl+Rxsk84C05915tTcrmtaZwCAOvRKVnda/5xvU93qyqqqHQq5pfkXyLjcuP6aFntnQIH4ehiPWNPvdPxnXhbvm2L3beKsizULlkaLt+0aRBVKiXGAxyOXtSnz0mH9+fHM1Jpi31/GqqquM4mYXP2oPI8Rb1ZjzaO/LzIZ/x2+4TZl1oqN0sw5we262dOeSduWT+8rqbazTTuFRZ+tve0WUckDo7qxp6jpWPlWr5yV25fXaYsyjRObLglwv5eO/ltHbBYiVocvPFECFk7HMeQOVi8gEYIcQSA5+FW4awz3Cqa1QLAZgBYTSk93eiTtCAtrYBmwFIKu1NKfXZcLu5wuaC2ncZ0L5vbuAzRtvWwSR3ezu3S2E4e2VymYTNhODcOuAlO/9ibU3YtxDROgVC9V+QldcwHJ1jPztUN/Gc1CVm1WZLvkr7rn1yRHGEal/Kk1RNaTTg4NWTqNYa03GWLuuJiYdUXX/ZVnz1bb7YPY2dXKX3llb3S5ya06GWvDZV6qiTo8sGCYZo6vYMxSID1DrVP6DE+4LhQwtVaML2nxtwf2HQaNXPyrz+73zx7ujer1xsboPBEIlnE4JF7Ow4blWaO87R0mqtVXqpDBSOoXGdarKTcQOlZ0QjfI4wND/dIRC0G3ngihKwdjmPIHJpCAU0NAFy4NbHnMNzqurmdUqpq9Iu3QC21gGaqRqnl/nW2IORQWnmHzPK6IArwn83QpAJObVd/+8vPd/G8HOXvUNGQ1+Wm7/bgJ/zch1OR3to0TgnD6n26X1THfnSCdW1nVd0t9+Xu8156denQUmWph2ncQ+yRNz1s+oHBvoPzLZVbU1B38KBnza+/DdOXlHiaxnmhoVcdPnh/Pz842Kr+e1uCuk7HTdiSFZN3tTqaUjBWZfkiTnV4P8+9bWPdr1syv6fhSX1gK76e5nBi7Yph1UUFQaZxJx+/tJipM+Nc/AJqzXm+lohqWUYZl9dde7WqN7Bwp1uzgKkVRrvtEXR3y7Bgegg9NXjjiRCydjiOIXNoCgW0NLhVNFtLKcVlEY2EBbT60kvk0rWJBeHxmZURFQqty70e42knyI9t7XRpWjfvqx52wocWbrnXtnoLzvzWl6nKrLf/GiUcvd6v1zl1749PsU5trGbDdC2rJQtTFnbalb2rn0qvEpkeC7EPufpa+9cOd3Du0GI30KZaLale8HNnxc6d/UGjMenSx9OIhww56vDO22eJQID7Ij1EQVqNS+KOnOHyCrWvadzRS3ytx/iAfY6e4mZbjHySH9goy8L5f7e0SzkUN1inVhuXHTNcria4R+zhHhOnnuNwuS1u3zlz0+XJHZR78oazFepA0zjjLromHuEbx3EVyS2VG0JPA954IoSsHY5jyBwsXkBD5oUFtHtjKYWDaeUe25KKIpLya8NVWlZ092M4BPQh7jZpQ8JcLz/XxfOmgPvgzaJ5yev8+WcX92FqcusVBCjD0+r9e59V9fkkntr7Kxub+9NSpCgS/njpx5jEksQoFu50o2SAYaPcohLfinjrhIfEo8XODNVmZkqqvvxqoCYlpb1pnHF2LrGbN3ePZNgw3KPxIVg9JRf25kVkJJQN0Jv8DDIcomkV6Xw48hnfcxwu0+x+sTyND2y1ZaWi46uW9i/KSO1kGrdxdC7o/tzk3QGdIouf1LlbCkopqI8VhavPlQ8GLSs2HuAQNT/C6ZBwoNcF0sCtARCyNnjjiRCydjiOIXPAAlozgwW0h6vT6Dnrzha0PpBaFnG9TNGaNVlWZiDmc+RdfO2SJ3TyuBzT2un+G55TFnhJq4P455f1YWQFXvUOcfgaXWD/M+renyRQWy+rKTxdLr/s8Gvyr/3SqtPqNU8QMALVQN+Bx19r/9o5MVest1R+libfvsOvdunS4WxlpbNpnN+x40XHjz46xPXxtpqiqaXUlCrFp7dkDyzLlncwjUvs+YVdRvrs8gt3bFbFnqf5gS3t5FHfs/9sHKGS1d65PgmhvuERCbHTZh0TSW1bxL5zT5K+Si1S7sodqM9TRJjGiT0/TzTIexevla3VdWlG6GHwxhMhZO1wHEPm8NQLaISQjx/5SbdQSukXj/ncFgMLaI8mu6JOvCYxP/zkjcoOJTKNx70e4yblF/Vq5Xh5ajefFD9HUd09X4iywD+3tA0vaWUfRl7sXu8QR6DStR5yWh37USK1cbOaTafjcuO8V1xbMaiorsjbNG7Lt62aEDTh4JSQKakttdEAW1fHqf7uu251Bw7Ggk7HM8SJUKiUjBlz0O7VeZcILpt7qPSEUv9L+wuGqxU6J5Mw9Qy2S4yeEHBUJG0em7Q/7Q9sGqWSc2Lt8p5ZF872oizLMcQFYkl1x+Gj97QfOOzG08ijuVNfKA9QHy8aTpX6Ox2gCbDcYLtT4mG+J4mQgx17UbOBN54IIWuH4xgyB0sU0O61LM70hcg94gRuFdA4gB4IC2iP79j1CtfNF4siLuTWtK/T6CV3H2cIsK1dJNcHhblceiHS67qYz/nvLCxWR/iJC0N4l1b3YerK6+25Rrkipa7NsFOq3h+fA5GjVcwCYSkLq9NWh22+ubl/rabWwfQYNhoAUF+5Ylf99TdDtNevB5vGOZ6eefZv/t8eUUxMiaVysxYalZ6TsDW7Z25yZS9KwTjG84Sc2nZ9PPaG9/VIt2R+5mCpD2wF11KcTq5bOby2tNjfNO7iH3g1dtqsfY5ePrhvVyOxSh1XuScvRpdREw0ms5mJmFMhjPXYze/knG3B9BAyG7zxRAhZOxzHkDlYooAWe4/wGwAwFADWA8AxACgGAHcA6AMAEwFgDwD8Qik9/sgnbGGwgNZ4ah3LbDxfGBR3rbRDWrE8RG9yU28g5DHKjt62Kc929Lg0IMS5iCF3NfrUawg/4ed2vOT1vRllpaPpIcqTKLQhz5xUx354AQS2VjFDQaFVcH5L+S3yQO6BWDWrFpoew0YDALK1a9vUrl4zhMpk9sYgIVTYvfsZh48+PMZxdm4WM6mepKIbtU6J27KH1Zar6zXncPAQpXcfF7DX2UditR0lLfmBjbIsJG7dEHH12MGBeo3GuO8ch8dThcT0PdR9/KSLDIeDsyUbSXu9xlW5v2AErdHUm7HL8ZEkiUf4HmQcBLi0G1k1vPFECFk7HMeQOVh8DzRCyGQAWAIAvSilF+9xvAsAnACAmZTSvxp9wmYOC2jmVVCtEq45k9/u+I2KDoU1au97PcZJwiuLDnS8NKWbV3IbV5v6Mzp0KkZw6vv2vCubYom6xt70EOVLa7Vtx55Q93zvEvAlVrGn2H0bDRBG382t29k3O7zZYhsN6KureVVffdVLdeJkNLB33hsikcikL7ywT/ryS9cI0zKXvDYUZSkk7ctvnxZfOkinubNJO8Mh2sBOTkejRvslcngPbu7RFDWFsay6uFB8bNXSQaU3r9drgiF1ds3r+eK0XT7tInDfrkaiLCWqAwWdNZcq+oOemnTsZRSCri77BbHuKeTuL1sQshJNYRxDCKHGwHEMmUNTKKAlAUASpfSlBzxmNQC0p5R2ut9j0C1YQHtyzmRVOf19vrDDuZzqDjK13vbu4wSABjqLb/YPcb40Jco7XSrk3pldplFwBKe+jeBd3RpLNDKp6fOowK5a227CcXXPd5KBK7SK4gA2Grg/VWKic/X33w/T5eb5m8a5AQE3Hd59d6+gc6dKC6VmNWQVatHpzVn9SzJl9cZ8kS2vuMtwn90BHZ0KLJXb42hKY9nVI/sDz/+7dbhaITcuySaEsH4du5yKnTrzpEAssYpZsU2ZvrhOWrc7bwhbogw1jTPOgpuiob67uT6SagulhtBja0rjGEIIPQ4cx5A5NIUCWh0A/Ewp/eABj/kaAF6jlP5nXypUHxbQnjwdS8nWi0X+u6+URFwtkofqWMq7+zF8DqPu4CW9MqqD++Xh4a55xiWe6lqu4PiXnXlp//YiWkW965kVOVZq279wTNP9jSvA4VvFkipsNHBvlGWhdunScPnGTYOoUnnnvzOHoxf16XPS4f358YxUioWKh7hxrsz3Ylz+cJVMV28/QY/Wtud6jA84LLHnqy2V26NoamOZWiHnHl+9LCbn0oVoSqnxB1RoI63sMmrc7rDeA7IsmV9zoYovCVYnlAwDNXvnSxMGdLx2jkdFQ7zPEK71zaZELVdTG8cQQuhR4TiGzKEpFNCKASCNUtr7AY85AQDBlFK3Rp+wmcMC2tNVJtfw15zJCzuaURGRW6Xyu9dj7EXcyu4BDpcnRXldDve0rQEAAGUlT3js80huxp6eRKcUmT6eFTuXaSOmHtVEzUsDpul3csRGA/enKy4WVn3xZR/1uXORQKlx7RZjZ1cpfeWVvdLnJty0ZH7WQKvWc85sy+6efbkylrLANcR5AkYeFuMe176/5zXCNO1lcU11LMtNTnKN37BquKy8zMc07taqzeXe02YdsHPzuHfXYdRgrEwrUO7K7avLknU1jRMpr1jY33MXP8yh0FK5IfQomuo4hhBCDYXjGDKHplBA+xMApgLAzwDwGaVUZnJMCgCfAsDrALCKUvpKo0/YzGEBzXKS8mrs158r7HAmu6pDjVLncK/H+DmKsvq2cbo8tZv3NUcJX0vkJXzB8S+iuNfjehB9/c35WRv3Ym3Hl45qImdlgBXM4lJoFZxfk3+NPJh38J6NBl7v8Pqh9k7tqy2UnkXVHTrkUfPLr8P1JSWepnFeSMg1hw8/2McPDpbd77nolpIsmcOZbdlDa0pUrUzjdm7CG93H+u9x9ZdWWyi1h2rKYxmr15OEjWs7p5062l+v1Rr37eLy+cqwPgP3Rz37/GXcu6/xNFeqvFSHC0ZSuc7VJEy5gdJE0Qjfo4wNDxuNoCatKY9jCCHUEDiOIXNoCgU0VwBIAAB/AJABwCUAKAEANwCIAABbAMgEgB6U0tJGn7CZwwKa5bGUwo7LJb47k0sikgtr22r1lH/3Y3gM0bb1lF4bGe52aXSEew5PXigQHPusO/fmwW6E1dZ7PCv1KtB0mXlU23HqTWsopBUoCkQLLi3ohY0G6qNaLan++ZfOin//7QcazZ0CI5erFQ8YcML+3XcSGIl1NJOwFMpSuHyosO21E8WDdWrWxhAnDNEFRDge6/asXwKXz2lyy+KsYSyryM+1Ob5q6ZDynKww07idm0dWr0kv7/YMaYt79zUS1bKMcm9ed+21qt5gMpsSBJwaYU+3PYJurtctmB5CD2QN4xhCCD0IjmPIHCxeQAMAIIQ4AsC3ADARAMQmh+oAYD0AvE8prTDLyZo5LKA1LdV1Wt7as/khh9LKO2RVKIPu9RhbIbemq7/95YldPC93ta1UCY990YOTfTSKsDqu6eNYO99cTde5R7TtX8h5Otk3zqXySw6/Jv/aP706vd4NeUtvNKDNzJRUffX1AE1ycgfTOGNvXymdMmWf9MUX8Cb6IeRVauHpzdl9i2/URprGRVJeaaeh3ruDujjnWSq3e7Gmsezy/t2tk/bsGKapU9gZYoRh9IFdup2ImTw9nicUtrifWXPT5codlHvzhrMV6kDTOMdDdFU03Hcfx1Ukv99zEbIUaxrHEELoXnAcQ+bQJApoxhckhAsAIQBgBwA1cGtvNNxo+xFgAa3pulYks/3rbEH705lVHSrrtM73eoy3vTAvtrXjpekhmizvc1935eScjCRUzzF9DOsQmKXu9r8jurCxVrGvGDYauDf59h1+tcuWDWUrKkyXdAE3KOi6w9tv78NunQ+XebHC68KevBHKWm29/THdgqQXoscHHLJxFDSJmY7WNpYpZbW8YyuX9MlLudQNAIwbzIls7cq6jnlud3DP3rkWTK9ZoJSC+mhRe/X58kGgZe98ccghan5Hp4PCAV4XCUOa/B6YqOWwtnEMIYTuhuMYMocmVUBDjYcFtKaPpRT2XSvz+udScYdL+bXhah0rvPsxHIbowtxt0iYGKDLGlv7uy81P6EQoW6/KpHcKvq7p/sZRXfDwoqeX/ePBRgP3RtVqpvqnBV0Ue/b0qbesk2H0wl69Ehzmv3eS4+SEeyM9gF7LMmf+yYnKSqrow+rvdMTl8hlFSE+3/R0HeaVYusmAtY5lWRfOup/euGakoqrSwzTuERx2ofe0WYekzi5NokBpzfSVarFyV+5Afb7irhmp/FzhEO9dvEDbckvlhpApax3HEELIAMcxZA5YQGtmsIBmXeRqHWfd2YI2B9LKI26UKlpTk9keBhI+RzbCszb9Lf2fEqeyxBACtN5j9C5haerot4/qgwY0+T0CH9RoINQh9Opr7V9rkY0GtDk54qqvv+mnuXixk2mcSCQymwnjD9jOnHkFN3J/sPJcud3pLdlDq4uVbUzjti7CzG5j/Pa4t7K12Iw+ax7L9DodiV+/smtGwsm+rE5n3J+RJxAqwgcMjes88tmreG02nvp8eYD6RNEIqtTf+YKBAMsNtjspHuZ7igg5OBsfWZQ1j2MIIQSA4xgyDyygNTNYQLNeN8sUkjWJBeGnblZGlMk1bvd6TJS0rORTwQZ9iDzR07SKRgGAdetwVd3z3WN6/5gmP2MBGw3cW93Bg541vy8coi+qv9yV4+WVa//G63tFsbEllsrNGlCWQsrRopCrx4qHalV6qSFOGND7hTue6DbWP54v5Dz1Pbyaw1hWlp1pe3z1sqGV+bnBpnEHT+8bvSa/sse9VXC1hVJrNliljqvcnReru17TAygYx0Ui5lYIe3vs4nd0sor9L1Hz1BzGMYRQy4bjGDIHLKA1M1hAax6OpJe7bUkqiriQWxOu1LKSu4+3YfLZL8Sb5VG687amcQqEsp6dktW93j+u946qenoZPx5sNPBfVKcjNYuXtFds3TqAKpV3/tsTQgVdupx3mD//KNfHW2nBFJu8uloN//SmrL6FGbVdwWRWp9CGWx4xyGtPm26u2U8zn+YyllGWhaS9O0Iv79s9RKtSGguUDIejaxUVfbTnpJfPcHn8JtcF1dpor9e4Kvfnj6Q1Wi/TOMdXclE8wu8gY89vcV8uIMtrLuMYQqjlwnEMmQMW0CyMEDIHAN4GAA8AuAoAr1NKTzbi9bCA1owotXpm4/nCVnHXyiLSS+RtWAr1GgqEkWx4m79V34dcrBenQKjeOypJHfPhCdYjoubpZv3o9ubs9fkz9c+B2GjgDn1pmaDqm69jVKdPdwOW3pmNIhAoxSNHHrF/4/ULhMfDQfgBcpIrPc7tzB1RV6Ott4eXi5/N5e7j/A/au4kUTyOP5jaWySsrBMdXLe1XkHqlXhdUsb1DSffxL+4M6tqj0FK5NRdUzxLVgYIumsuV/UFPjUtngccoBFEu+wQx7lcIsezefqhlaW7jGEKo5cFxDJkDFtAsiBAyAQDWAcAcADh1+3+nAUAYpfSxupxhAa35yq9SilafyW934kZlh6Jadb2ZCe3JTfg/7lbozblc7zmUcPR6n+4X1bEfnWRd28qeasKPiKUsrEpbFbbl5pb/NBrwFHvmTQ+bvn+Q76ACS+VnKarEROfqH38arMvODjKNMy4uxXazZsVJRo7AjogPoNex5OyO3Mib58v7sSaFCA6XqFp1dTncZYTPBQ6XeaK/zJrrWHb9zCnvxC3rh9fVVNdbcu4VFn62z0uzD4vtHbABRiPpi+ps6/bkDWFLlCGmccZZeEM0zGcP11tSbaHUUAvTXMcxhFDLgeMYMgcsoFkQISQRAJIppdNNYtcBYCuldP5jviYW0FqA+MxK543nCyPO5dS0V2ju7PXUmaTDm9wt0INzrd7jKcPV6X17nVf3/vgU69T6qcy6eVzYaOC/KMuCbO3aYNlf6wbT2lp702P8du1S7N979yA/OLhJF0gtrbJAIT29JXtwZUFdveXCYnt+YZfhPnv8Ozg+sVlTzXks02nUzMm//ux+8+zp3qxezzXEeSKRLGLwyL0dh41Ks2R+zYXqVHGIOqF0KGhY43gPDNHywh2OigZ7JxIug0tn0RPVnMcxhFDLgOMYMocmV0AjhNgCgB0A1FBKa81+gkfLZSwAxAJABAB0AAApAKynlL74gOd4A8DnADAYAJwAoAgAdgDAZ5TSKpPH8QGgDgCep5RuMYkvAoB2lNLYx8wZC2gtiFbPks0XiwL3XCntkFosD9WxlAsA0J25Cm9yt0AXJqPe4ynD1eoC+iaqe398mtr7N+l9tAoUBaKfLv0Uc7bkbFdsNHALW1vLrfr2ux7Ko0d7gU5nLFYAl6sVDxxw3P6dd84wEkmL2jPuUaWeLA5KPlQ0VF2nczSNu7eyPddjnP8RG0eB2a+pljCWFV9PczixdsWw6qKCejMlnXz80mKmzIhz8Q+06O/z5oCVaQXKnTn9dNnyektniZRXJBrgtYsXal9kqdxQ89cSxjGEUPOG4xgyhyZRQCOEcODWPmCvAECAyaEsAFgBAD9SSp96C3dCyCW4VTiTA0A+AITAAwpohJAgADgNAK4A8C8ApAFAVwDoAwDpABBNKa24/VhPACgAgFhK6QmT1/gYAF6glAbDY8ACWstVKlMLVp/JDzuWURGRV63yBaAQyyTD/3G3QAcms95jWYav0QcNSFD3+SSBSj3VFkq5Qe7baIAjUA7yGXT8f+3/d76lNRrQXL1qV/XtdwO1aWn13hPG3r5SOmXKPumLL1y3VG7WQKPUcRO25UTnplT2ouydfQW5fEYR3MP1QKch3smEMd/+Ui1lLKMsC+f/3dIu5VDcYJ1abWyAwXC5mtbdex2Nnjj1LDYZaDxNSqW36nDhCKrQuZqEKTdIekY03PcYY8PDpbPI7FrKOIYQar5wHEPmYPEC2u2ZWPvg1kwvCrcKVUVwa1N9b7jVQe0kAAyklD7VD4WEkD6387lxO7+j8OAC2n4AGAgA/6OU/m4SXwAAbwDAMkrprNsxQwEtxrRpACHkE7g1K63efiePkDMW0BBcyK1xWH+uoENidnWHWpXWfgBzAf6PuxVCmfrbZakZkVbXanA87ftxApW4NOmbLmw08F/ybf/41/7xxxC2osL0Rhq4QUEZDm+/vV/QuVOlpXKzBiWZMocz/2QPrSlRtTKNS50EOZGjfPd4h9iXmeM8LW0sqy0rFR1ftbR/UUZqJ9O4xN6xuNuEF3cFRXbHJgONRLUso9yb10N7tao3mDaXEXBqhD3d9gi6uWIRHZlVSxvHEELND45jyByaQgHtPQD4GgB2A8CblNLrJseCAOAnABgBAB9QSr9t9AkfEyGkNzyggEYICQSAmwCQDQBBlFLW5JgUbhUFCQC4UkoVuITz4XCQazwdS8mOy8W+O1NKIq4W1oQNoIn8N7hboRVT//5VTmx0uV7DkjyHf3CQI3HUWijdhzI2GrixZUCttv5eYC210QBVq5nqnxZ0UezZ0wc0mjt7xjGMXtirV4LD/PdOcpycmnRx1JIoSyHlSFHo1ePFg7Uqva3xAAHWO9Q+oftY/xMiaeNm9LTUsSzt5FHfc9s3DVfW1riYhKlXWPi53tNmHZE4ODbp2a/WQJctc1TG5Q9nK9Wms/eB4y66JhrhG8dxFcktlRtqXlrqOIYQaj5wHEPm0BQKaMm3/2+EadHJ5DgDAJduny+80Sd8TA0ooL0CAH8AwHJK6cx7HDfMTutPKT18O5YIAJcppTNMHpcBANuwiQAOcuZWqdDw1iYWhB5NK4loX3Mk4HXuNvBnSuo9phzs6CnJoPyyNhPP9e4SnuFuK2iSN7jYaOC/tDk54qqvvu6nSUqqN+uHSCQymwnjD9jOnHmFMC1rht6jUMq0/IQtWbH5aTXdgILxjeIJObVte7vHhffxSHvcZZ0teSzTqlSck3+t6HHzXEIMZdk7TQaEIln7gcP2dRo++hpel41DKQXVkaIOmgtlg0BLRcYDHKLmRzgdEg70ukAYgl2fUKO05HEMIdQ84DiGzKEpFNDqAOB3Sum7D3jMdwDwKqVU3OgTPqYGFNB+AIC3AOAtSulP9zi+EADmAsAcSumS27EJAPAXAMwBgHgAmAUALwNAW0ppzkPyuXCfQyEBAQG8xYsXlzfwn9ZkaTQa5w0bNnA2bdrUoLur/v3717355ps1prGffvrJ7tChQw26bsaPHy+fNm1avU6GH374oeOFCxcEDXn+7Nmza0aOHFlnGpszZ45zVlYWryHP/+CDDyp79uxZr2D1/PPPu1VXVzfo3//zzz+Xh4SE1Js9NmTIEI97PZYjdQa7drEwNdIO3rA/Bt6k/uWipHzYoY+G5UVt4NL1YlDmXAJ1QRqA/v6T0+Li4uptYJ2WlsZ74403nBuSu729Pfv333/Xq+adOnVK8NVXXzne7zkAABwJB1xGuIDTACcgnDvFDQ5wwK3ITX3oi0MCtu7hWy517txZ/eWXX9Zb7rhq1Srp5s2bbRqSf1O69vjZ2TzHbf/YCfLy6l135+rq4OvSEkhX/7cm+jSvvXtZu3ZtiYuLi/E/VFlZGTN58mS3hj7fnNeeuppwM0/VOfB1dlzTx13JOQNb4hdChaz+Pu0BAQHau8fbnTt3ipcsWWLXkPM3p2vP4F7jnpNEDKM7tYUQj3qrjUErlmrDhoyq4tvaGfcxbKnXHkDDxj2Du689jgYY/fEyx3Y8//o/+/kpMH//j5BenlXv+S3l2rsfHPfMd+0B4LiH1x5eew15Pl57lr321qxZowcA4PP55QB47Vn62rNWt//dKY9TQDPXV8YaAHjYhSMBgCa7rOw2ww9PzX2OG+L2hgCldBMAvA4AH8KtWXY9AWDow4pnCDWWXlYOlQnbYMFvKyF0JRfezoyEEupgPC4iGnieexSO+iyDPbHXYfILY8DvtQ3gOv5zsI16FvhuQQBNYL8xvUIPxRuLQblIqQ0ThBm7J+pBD4UehYI237f5T3GtudP4+2uL33i9/GedVl+uu9N7JVIshq1+/vChqxvY4Yyf+xLYU12F3YXav45+BzKlsXEytPPrBh+M/xMGd3oRuEyDPisgExWKOlhx8hysS7gItco7jU55dTLejR0bXMounZNQfYvqBWJ2ej6wO5UJdc9tfB2yKvON8UjvcIib+ie80+sVEHL5FswQIYQQQqjl4j78IQ2SDABjCSGfUkr/s2EzIcQZAMYCwGUznc9SDHfw9abtUUoXA8DiR32x+1U8CSEX1Gq1R3OYmhofHz+DUiqFhxdYAQBApVKlRUdH7zKNffXVVyMAoNN9nlKPRqO5EB0dfcw0plQqnweANg15PqX0ZHR0dL2ZgWq1egbcaojxUAKBYH90dHSGaUyn070JDfz3Ozo6/hMdHV10V/iThz1Pnp8BP/6VAUMPHViYm3eoo1f+7ghPXb6xg14PzjXowbkGeVwXWNNqIGwOGAe1MA30ShmocpNBlX0JVDmXoXuPHssZcqdQVVpa6gEAM+51zrvpdLq6u6/Zc+fOtQGA5xvyfFWxqnzFsBXL9+bs9VmRumJgcV2xNwAA14YLHi94gGN/RyjZUgK152vv+XylUpkTHR39t2ls2bJlveFW85CHn78JXnsvK5UzNhQXe8xxcoIXHRyBRwhwCIGJDg4wRCqFX8vLYWtNNbBguWvPICgoaH14eLjxW7GUlBQpAPxfQ59/97VjjmsvMePA8yk5CTAi8iWIDhsODGGAzxXA8Mhp0LX1ANh86jdIK7gAarW6/O7n//vvv50BYHhDzt8cr70HjXuX8oogrbgMhoaHQLcgX2AIAarXk9KkRFt5Zrqq67PP79bpdOOhBV970MBx737XXnzOxeEDV02FV7tPhtlRE4HH4QKPw4VXe0yG4SF94f0DP8GpnAst7tq7G4575r/2AMc9vPYeAq89vPYsee3x+XyZ6evgtWfZa89a3f53PxZzLeEcDwAbASAHAL6EW8skiwDAHQB6w63ZWf5wa7P9zY0+4WN6Eks4n1CeuAcaahzKAvfqFl+4sKaHoPxKGwbYetO36qgAtul7wWr9ILhJvYxxqYBT28pVktnZxy5zaFvXrNauEotsXo2NBv5LlXDGuXrBT0N02TmBpnGOi0ux7ezZeyUjhudZKjdrkJVU4XVhT96wuhptvQ8JTt7iq93H+u939JLI7vdcABzL7uf6mVNeiVvWj6irqa63fMMjOOxC72mzDkmdXVT3ey5qGO2NWhfl/vwRtFrjYxrneImTRSN893OchHX3ey5CpnAcQwhZOxzHkDlYfA80AABCyNcA8B7cNTvLcBgAvqeUvmeWkz2mJ9FE4AnliQU0ZDZM0SU7fuJvXbg5JzoTnUp09/ET+nBYpR8Mx9gOpvuuAwCAk4RXFuJmkxnlb585rJ1rjqv06TYkwEYD9VGWBdmaNSGyv9YNojKZvekxfni7ZPv33jvEb9PmgYWglkyvY8m5nbldbp4r76fXUeN+EQyHaAI7OR2NGu13lsNj7rnhHo5l96fTqJlT61Z2u5EY35vV641rY7kCgaJdvyH7I0eNS8EmA41DWUpUBws6aZIqBoD+zrULXKLkd3Y+IOzneYmQlrPMHT0eHMcQQtYOxzFkDk2i5gl+cwABAABJREFUgAYAQAjpBrc20O8It/YTqwGAJABYSSlNMNuJHlMDCmhBAHADALIBIMi0oyghRAq3ZtUxAOBCKVU8wTyxgIbMT1XNFST83J6bviuKUZS63n04h7rR1bqBZIs+FuTw370sCQD1tBfmh7rbZPUMcsgcEuaaL+ZznsqGRwWKAtFPl36KOVtytisLrPFOnCGMvptbt8Q3O7x50kPi0WJmurC1tdyqb7/roTx6tBfodHeW4nO5WvHAAcft33nnDCOR4GZU91FVXGeTsCV7QHmuor1pXGTLK+k42HtPq0jn/8zmw7Hs4Uoyr9udXLtiaGV+br2lBHbunpm9Jr28xzM4rPJ+z0UNoy9V2ih35w7WFynbmsYZB362aIjPbm6AtMJSuaGmD8cxhJC1w3EMmUOTKaA1dQ8roN1+jGGW2f8opb+bxBcAwBsAsIxSOusJ54kFNPTkUBZ4KRv8eZfWRjFlqcEEaL1pCxoi0O9jYup+VQ6W3GQ97jtthMsQrZ+jKKedpzSrTxunzNjWTiVchjzRAeVS+SWHX5N/7Z9enR5mGhdwBMpBPoOO/6/9/86LueIWUzhSX7liV/3d9wO1aWn13g/G3r5SOnVqnPSFiTcslZs1yDhT6n9pf8EwlVxXr/uTa4BNUo9xAYdsXe4sjcOxrGEoy0JS3L8hl/ftGqpVKqWGOGEYfWDnqBO9Jk+P54tELeZn9ElRnyltrY4vGUZV+judwwjoeSH2J0XDfE4RwdP5cgNZFxzHEELWDscxZA4WL6ARQj4GgGOU0hMPeEwvAOhDKf280Sd8BISQUQAw6vZf3QFgEABkAsDJ27FySulbJo8PAoDTAOAKAP8CQCoARAFAHwDIAIAelNIn+g0vFtDQ08IUnLMXnF0Yyck51Yno6y+RBAAotQkt2MQfXbOuNsKxRK5zf9BriXhMXaCzOKuDl23WoDCXzE4+dlUPenxj3N1owMCWb1s1IWjCwSkhU1KZJtBh9GmRb90WULvijyFsRaWLaZwbFJTh8Pbb+wWdO+HMn/vQqvWcxH9yumVfroxl9dS4/JDDY5RtolwOdR7uk8RwCMWx7NHUVVfxj61e1if/yuUouNOAB4RS2/LI0RN2h8b0xU7VjcQqdDzl7tzeuhu13cHkPSZibrmwj8cufoRTrgXTQ00QjmMIIWuH4xgyh6ZQQGMB4NMHFccIIR8AwOeUUk6jT/gICCGfwoM7i+RQSv3veo4PAHwOAIMBwAluLd3cAQCfUUqf+I0oFtDQ00bqKnj8hJ87cDN2RzF15c53H2dFThVV/kOT1gknyk4VsL4ZZYrAGqXO4UGvaSvkVrd2lWR28bXLGtrWNSvQWWzWZc/YaKA+VqVian5aEKnYu7cPaDR39khiGL0wptdph/ffP8lxcNBaMMUmrSxHbnfmn+zBVYXKENO4xIGfHznSd09ezbWRADiWParMC4keCZv+Gq6orPA0jbu1Cr7Ue9rMg3ZuHrgBfiNp06vdlQcKRtBabb33mOMruSge7nuIcRAoLZUbalrwMxlCyNrhOIbMwVoKaJ8AwIeU3vmGH91xe481w3KXfR4eHi7p6enLLJmTOeAgZ2UoC7xLawN5yeuimPK0NndvSU05fLXeJzpJ0+3VsxdpCN2fWhaQlFcbeLNcEajUsv/dOM2Eiw2/JMRNkhnl75A1vJ1rjpMNX2OOlBVaBeeX5F+6Hsw7GKNhNS2+0YA2K1tS9c03/TRJSR1N40Qikdk8N+GA7YwZV3BD9/u7cqyozZUjRUM0Sr29SZja+uvrHNvqZTG9o61+XH7a9DodOb1hdWT66eP9WJ2Ob4hz+XxlaO8BB7qNnXgJr8nGoXqWqPYXRGqSK/uBnhrfY+AxCkFXl/2CWPcUbDKA8DMZQsja4TiGzMFaCmg7ASCSUurR6BM2Q3fPlLOxsZEXFhb+ZLmMzAMHOevFyUtw5J9dFMnJO92R6E1mNMGtVrusc2i6tsOLidoOk7J0lJCTNypdj2ZUBKQU1gbmVCj9tez9i+UMAdbTTpjf1sMmMzrIMWtwmEu+iMe5Z/fDhsJGA/XVHTjgWfP7wqH64mIv0zjH2zvH/o3X40QxMSWWyq2pUyl0vDNbs3vmXa3qSU1a03IElA3r6bk9YqDXFcJgMeJRledmS0+sWT64PCer3p59ti5uOdEvTNvt065DuaVyay70RXW2dXvyhrAl9WdSMs6Cm6KhPnu4PjZPbGk9avrwMxlCyNrhOIbMwSIFNELIEZO/9oZbnSuz7/FQDgD4AIAfAPx9v837WzqcgYaaKiIv4fMTfo7gXt/blVFWOt19nBW7lOmCRySqu7+eDCJHLQBAnUbP2Z9a5nXqZmXgtSJ5QGGNyps1KUTcjcchGj9HUU64p21mnzZOWbGtHUuYx5wtgY0G7qA6HalZtKiDYts//alSKTEeIIQKIiPPO7w//yjXywuXd91H0fUap8TtucNqy1QBpnFbF2FW1GjfPR6t7bDj4WO4vH9366Q9O4Zp6hTGDfAJIaxfxy6nYqfMOCmQ2OgsmV9zoIovCVEnlAwFNWts5AAM6HhhDsdEQ30SCI9p1BcWyDrhZzKEkLXDcQyZg6UKaKYfviiYbGB7FxYAKgDgMAC8Rikte6wTtiC4Bxpqklgd4V1cGcS78ncUp+J6q7sPU65QpffteVHd7X9nWY9ONabHyuQa/t4rpX5nsqsC00sUAWVyjduDTiXiMYogZ0lWRx/bzEGhLlkdvG2rHzVdbDRwh66kRFD99TexqjMJUcBS4z+aCIVK8ciRh+1ff+0i4fFaTkvmR0BZCpcPFra9erJgjF5954IhBFiftvbx3cYGnBRKuLi33CNSymp5x1cvi81LTupO6Z1rUiCxqeo8cuzudv0GZVoyv+aAlWkFyl25fXVZsq6mcWLDLRH289rFb+fQYvaIRLfgZzKEkLXDcQyZg1Us4UQNhwU01NRxck468c8t7srJO9ORsNp6SzUpEMq6tk3TdpiUqA1/PgfuUaTKLK+T7L1aGnA+pybwepkisFals/vPg0zYibhVbVwlmV187TOHtXPN9nMUNWjjcZaysDJ1ZdutN7f2x0YDAKqEM87VP/00RJeTE2ga57i6FtnOmR0nGTYsz1K5NXUnjsXPrLzGkdZmccRg8oURX8SpbtfXI65db48MC6ZntXIuX3Q9vWH1CFlFWb1Ct0tA0JXYqTP3O3r5yC2VW3OhuVrlpTpUMILKdfW+uOD625wTjfQ7zEh5akvlhp4u/EyGELJ2OI4hc2gKBbQpAJBEKU1u9IshLKAhq0FkhQJ+ws8dedfjuhJV9X+6crIStxJdyMhEdbfXUkBof89lWSylkJRX63AgtSzwUn5tYGZFXYBKy4oedF5XKb841M0ms1uAQ+bwdq659mLeA2cAYaOBOyjLgmz16hDZuvWDqExmb3qMH94u2WH++wd5rVth0eIuhrHMxy5s57mducMUVZp6BR8HT1FatzH++1z8bGru/Qrofli9niRs/qtT2okj/fVarfHnk8PjqUN69T3YfcKkiwyHgzMkG4FqWUYZl9dNe7WqD7DANR7gMzJBd9c4QbRbKjYZaP7wMxlCyNrhOIbMweIFNGReWEBDVkevIfwLK1pzr2yK4lTdDLz7MOWKlDq/mAua7q+fY93Cax/0UjqWkmMZFW7HrlcEphTKAnMrlb66Bzck0HvbC/Pbekgze7VyzBwY6lIo4N57fx9sNHAHW1vLrfr222jlkaM9Qa+/c0PN42nEAwcet3/n7URG3DL2imsI07GM1VNyYXdex4zEsv56k2IvwyFa/w6Ox6PG+J3hCTj43j2iqsJ8yfFVywaVZt0IN41LnVzyuz8/Zbd/RGdsfNFIunyFvXJP3jC2XFVvGT7jKswQDfPdw/UUP3B8RtYNP5MhhKwdjmPIHLCA1sxgAQ1ZM07mERf++aVRnIKzHQir45oeo0Ao6xZ+TRMxNVHXdmzevZZ33k2u1nH2XSvzjs+sCrxWJAssqlF70fvvuQh8DlH7OYlzOnhJM/u2cc6MDnIou7shQVJZkuNvKb/1w0YDAOorV+yqv/t+oDYtrd57wdjbV0inTdsnnfj8DUvl1pTcayyrLVOJT2/J6l+aJe9o+lihDbc8YpDXnjbdXLOfcprNwpXD+wMv7No2TC2XORqDhFDf8I4JsdNmHhNJbXHPuUaglIL6RHFb9dmyIaBh7zQXYYiW197hiGiwdyLhMPjhsBnCz2QIIWuH4xgyByygNTNYQEPNAanOFQnO/NyRe+NAV6Ku+c8eZ6zUo0gbMipRE/W/KyCQNrhYVSpTC3ZfKfU7m10dmFYiD6xQaF0e9HgxnyNv5SzO6uhjlzkkzCWzrafUOMPifo0G7Ph2leNbjT80JbjlNBqQb9kaULtixRC2srLe+8lr3Srd/u239ws6dqyyVG5NwYPGspvny30uxuUPU9Zq6+0x5ewrSe4+zv+gg7sYl8Q+IrVCzj2x5o9e2Unnepo2GeCLJTUdhz6zt8PgEbjnXCOx1Rph3a7c/vpceb0Pj0TKKxIN8NrFC7UvslRu6MnAz2QIIWuH4xgyByygNTNYQEPNik7F8M8vb8O7uiWKqc7yv/sw5YkVOv/eFzTd3zjHuoQ+cqEho1RuE3e1LOBCXk3gjVJFoEytt33Q4x3EvIo2rpKsSD+7zOHt3LI87PgqbDRwC6tSMTU//RSp2BvXBzQagfEAw+iFMb1OO7z//kmOg0OLnP3zsLFMr2WZxB05XTMvVPRh9ZRviHO4RB0U6Xw4cqTveQ4XZ/U8qrwrl53jN6waXlta4mcad/b1T42ZOjPO2ddfZqncmgvN5Qpf1dGi4VShMy2eU26Q9IxouO8xxoansVhyyKzwMxlCyNrhOIbMAQtozQAhRAoA0tt/3efh4eGSnp6+zJI5mQMOcsgU58YBN/75ZVGcogvh/1neSRiWdetwVdPppURd6OjHKlixlML5nBrHg2llgZcLZIGZ5XUBah0rfNBz3G0FhaHuNpld/IQ5WbDR7WjhwZ4tvdGANitbUvXNN/00SUn1liYSG5tam+cmHLCdPv0qYVrGzDyDho5llQUKacLWnEEV+Yq2pnGxHa+o8zCfPQEdnVpEMdacKMtC4tYNEdeOHRyo02ju7DnH5Wra9Ig5Ej1x2lkOl4sfZhqBavQc5d68Htpr1bFAgWM8IODUCHu67RF0c71uwfSQmeBnMoSQtcNxDJkDFtCaAULIpwDwieHvNjY28sLCwp8sl5F54CCH7oVUZYoFCb904t48GEk0sv/MGGOlXgXasDGJmq7zrgFf8th7kWn1LDmSUeF+PKMiMKVIFphXpfLVs5R7v8dzCOg9HXX5fNc9TBkketEW3mig7sABz5rfFw7VFxd7mca5Pt45dq+/HieKiWkxm7o/6liWdqok8PKhwmFqhc7RNO4eJD3fY3zAYRtHQYu4hsyppqRIfHzVsgHFN9IjTOMSB8ei7hMm7Qrs0g2XHDaSLlvmqIzLH85WqgNM4xx30TXRCN84jqsIlyNbMfxMhhCydjiOIXPAAlozgDPQUIukVTL8c0tCeNe2RjE1ub53H6Y8iVwX2Pe8pvsb51mnNorGnk6m0nH3Xi31OZ1ZFZBaLA8srlV73q8hAeGVg9h9H8vYXKk31aqlNRqgOh2pWbSog2LbP/2pUnlnw3FCqCAy8pzD+/OPcb28lBZM8al4nLFMo9JzzmzLjs5JruxFWTAWbrl8pi64u+uBTkO9LxPmvv0w0H2knjjid277puEqWa2zSZh6t21/tve0WUfE9g645LARKKWgOlLUQXOhbBBoqXHGH3CImh/hdEg40OsCYQh+eLRC+JkMIWTtcBxD5tBkCmiEEBcAeBYAQgFAQil9xSQeAAAplNJmf6PVWLgHGmqJuOm7PfgXV0QxRUntCNVzTI9RwtGzHhFXNJ2mJ+qCh5ttlklRjUq4+0qp/7mc6oD0EkVgZZ3W+e7HcETZIHDbAxxRXr24lGdX/Vzr8QdaSqMBXUmJoPrrr3urzpzpCuydTd2JUKiUPDPysN1rr10kPF6zvaluzFhWkiVzSNyWM6S6RNnaNG7jJMjt+ozvHu9Q+1Jz5dlSaJRKzsm/VkRnnj8TQ1nWOF7wRCJZh0HD4zoOHZXa0pYZm5u+Ui1W7sodqM9XdDCNEzt+vmiQ1y5eazu8bq0MfiZDCFk7HMeQOTSJAhoh5GUA+A0AhHBrRgellHJuH2sHAJcBYAal9E+znLAZwwIaasmYiusSfsLPnblZRyKJRm5z93HWzjdPG/ZsoiZyTirwRKw5z51aLJfGXS0NTMqvDbheqghUaPS3Z4VS4EpTQOC6Dxh+Zb3nCFkfeSebcRf7+8amd/WzK3OU8Jv1Jvuq0wku1QsWDNbl5ASaxjmurkW2c2bHSYYNy7vfc61ZY8cyylJIOVoUcvVY8RCtyqTRBQHqFWKX0GNcwHGRFDdrf1SF6dccT/3157Dq4sJ616Ojl09GrynT97oFtq6xVG7NhfpCeYD6eNFwqtTfWY5MgOW2tjstGu5znBFxdRZMDz0C/EyGELJ2OI4hc7B4AY0QMgAA9gFAMtzax2sQAMwyFNBuPyYZAHIopSMafcJmDgtoCAGARsHhn10Uykv9pxtTm+9192HKl9bqgvqfU3d/4yJ1CKwz9+lZSuFMVrXzofTywOSC2oCscmWAhtUIeA6nQeB8BAin/hZWOnkr0JT3BxvaqtpVyi/1sheWBTiJy9p6Skuj/OzL7cW8ZlNYoywLslWrQmXrNwyiMpmd6TF+eHiyw/z5B3mtWzWrvZLMNZYpZVp+wtbsmPzU6u5AwThFiifk1LaNdd8X3tcjFZd1PhrKsnD+3y3tUg7FDdap1cZlxgyHo20VFX2s54svneHyBWYttrc0VKXn1u3O7aXLqOlpet0SEadKEOO+W9DFJdOS+aGGwc9kCCFrh+MYMoemUEA7BAAhABBGKa0lhHwCAB/fVUBbBwDdKaVBjT5hM4cFNITq46Zu9+InrYxiii+3JZStty6LEo5e79k5WdtlZqKu1aAntqm9Wscyh9PLPY5frwhMKS4KKuPG+XIdzhBC6m+DplMEgqa8H+jr6g91diJulatUUOZlJygLdBaXtvOQlkVaeWGNra3lVn3zbbTy6NGeoNffac7A42nEAwcet3/n7URG3Dz2iTP3WJafVu1ybkfuMFmF2s80bucmvNFtjP9et0BplTnO05LIysuEx1ct7V+Yfq3ehyGxnX1J1LgXdrfu1jPfUrk1F9qbtS7KffkjaLXGxzTO8RIni0b47uc4Cc3+ZQYyH/xMhhCydjiOIXNoCgW0agDYSCmddfvv9yqgfQsAr1JKJfd+FWSABTSE7o0pS7XhJ/zShZt9tAvR1v1nLGHt/XO0bcclarrMTAeu8InOOKlRarmrLp5ue6B4Y/dqSHaDu/bU1ikCTApp959RZCisedsLSwOdxGXtPKWlkX525XYintUsi1Inp9hXf//9QG16eqhpnHFwqJBOmxYnff65m5bKzVyexFhGWQoX4/Lbp58uHajTsMbrmTCg9w13PNn9Wb94Pi6Pe2QZCSe9z27dMKKuptrVNO4Z0vZ872mzDts4OWMH1EagLCWqQwUdNUkVA0D3/+z9Z3Rc15knej/7hMoBhZwDiUQwAswBzJlUsGRbkpUsx7blTtPtvnNnZt32zHvXzJ0ZezpZcjvItqhgBSszR5EgGMEABpAAQRA5A5XDqRP2+6EQqkBQBIkCK+D5raWFqr1P2AWRW6f+2oFqRio44lUtTD6o2ZB5mRAcRRmN8JkMIRTrsB9D4RANAZoHAH5FKf27offjBWj/DgDfopSa7nEZNAQDNITuQ3CyqrP/Npu/+ckyxtmVMbaaqk12aebmc8Ly/3CJJuRO+cYll/ouJf667teVVweuzqdAQ785CnmSt2cjK7kLyVcFaWOZtZw1zajuzU7Q9M1I1vXOzjD2RXuw5vrgwxmON97YpgwOhmzGwBcV1if8wz8cUC9YELOjqqayL3MNCppTHzav7250LA4uV+u4wXmbMvfOWpUW8wHkoyb5Bebk279f1ni2eq0iy/xwOa/WuOds3Lp/0RPfuIabDEyO3Os1eHe3bZG7PHOCyxmLqkW7LecLrsA4EKm2ofHhMxlCKNZhP4bCIRoCtDoA6KWUrh16P16AdgkAJErp4vGvgoZhgIbQBFEFuLqPclSX/riU6blSRsaEV5ThJDlzca1/8Y/OyjPW9011c2r7ay2/vv7rytqB2vkUaMi38yRVRk8R/8QtxblQ6bD5Unuc/hSbR0ykD5CqEQA6FKz1ZQ0Fa3MyjX1L8hL6jZroGKmk+HyM7ee/WOLZt28t+P3qkQqWlbWrV1cn/N//8SRrscTctNVH0Zc11w5m1uxu2+Gx+TODyxOzdXUrvp6/PzFL75yqe8erntsNCSd2/W67taMtZAfUhIzM25Uvfm9PRvGsmA11o4VwrrdQqOrZQX1ywkghAZkvTajS7sg5SdRsXEzjjgf4TIYQinXYj6FwiIYA7X8AwD8AwLOU0g/HBmiEkFcA4HcA8J8ppf/fpG8Y5zBAQ+jBMT1XTaoz/7KIaz6+iEhe7dh6xTLjjjjnmbP+hd9vAFYVnu2H7+HawLWEX13/1ara/tpyBULXbEvTpnV8Y+Y3jj9b9Owtt6Bw51tsSde7XCm3+92p7TZfSo9DSLV7JcskgrXemSm6vjkZxt7FeQkDkQrWxKYmvfV//I+N/su1C0LaajA4DM8+e9D0/e9dj6URQI+qL5MlhdR80baw8VzfRlmiIwEkwxL/jIqkL5c8mXuWU7G4IP4DoIoCl/Z8Oqv2wO5tos9rHC4nDCPNWLTsxOqXvn+K12gw5JkExS3x3t2ta6VGx3II6ruIjuvXrMvYrVqQ1BLB5qEh+EyGEIp12I+hcIiGAM0CABcBIAcAPgIAMwBsAoC/BoBKAHgKAG4DwEJKqXvSN4xDhBAjAAw/2O/PyMhIqa+v/3Uk2xQO2MmhR85n49Rn/nUOd/OzZYy7J21sNdUkWMXCref8y//2MjVlTelaSHWDdeZfXf/Vqkv9l8oVqrDBdana1K6nZzx9/Pni5+sZEhokOX0Sd77FlnSty5l6u8+TEhixJqQ8dLBmCkwFnZms752dYeh7lMGa58CBLPsvX9smd3eH7KTK5eQ0m//2b/ZpKyt7H0U7JutR92W2Hq/+9IfNm/paXPODy7VGvrd8W/buwsXJbY+iHfHEbR1UH//jr9e1X7+yBIL+HmmNpv7FTz2zu7RyPYY8kyTW29O8B9sfow4x5O87m6O/pHss9xBjUU/5lHp0b/hMhhCKddiPoXCIeIAGAEAIyQWAXQCwepzqKgisf9YRlpvFIULIzwDgH4ffGwwGV2dn5y8i16LwwE4ORQxVgL/2fh5/+c2lTO/10rund/KinL30sn/xj8/J+av7p7IpN603Tb+6/quVF/suLpSpHBKkJWuSu5+a8dTxF4pfqOcY7is7ZLtX5Gpa7cnXOp0pTf2e1A6bL6XHKaTYvFLig7SHANAEHT+YZlT1ZSdoe2ck6/rmZAbWWDOoubCPxKGSROy//OV898efbKRe7+jmD4RQ9eLF5y3/+T8d4zIzo3ph90j1ZQ1n+/Iu72/f4XNJKcHlqfmGy8u/kX/InKrFXQ8f0O3zpzPPfPD2Trd1MGT9xPSi0ktrXvnhIXNqOoY8k0BlhfgOdiz21w5uAJmqRip4xqNenLxfvTbjKm4yEBn4TIYQinXYj6FwiIoAbeSChMwDgOUAkAQAdgA4Qym9ENabxCEcgYbQ1GG6LprVZ/5tMdtatZBIPs3Yejmx6LY499mzYsV3G+E+IdZk3LLdMr5+7fWVNX01C2Uqc8F1yZrknicLnjzxUslLN+4XpI1l94rc+RZ78rVOZ+qdAU9KeyBYS7V7JcuDXGdssDYzJbAr6KJc80A4gjWpp0dt++//fa3v9JmlQEcDTaLRePRPPnHE/Fd/dYnw/JROr31YkezLJL/MnP24Zdmdy4NrFZmOLIjP8sRXtCTl8KLHci8yLInK31u0kkQ/c+rdPy5uOF21XpGkkZCHU6k9Zes2HVz69HO1sTTFOBrJXR6TZ0/bNqXHWxpcziSpb2u35+zhcg24/twjhs9kCKFYh/0YCoeoCtDQ5OEaaAhNEe8grz79z/O4+i+WMp6+lLHVijZxUCradta//G9rqSFdmKpmNNobDb+69qsV53rPLR4bpCWqE/ueKHji+LdLv13HM5MLk2wekT/fYku+3uVKaQoEa6m9Q1NBH+Q6QcFab7ZF2zczWdc7L9PYtygvYUCnevAFwn2nTqfY/s8vtkktrQXB5Wxqapfp1R/v1W/f3v6g15xq0dCX9be6zGc+atky2OmZFVyut6g6Fj2WsztvbmJ3pNoWq/pa7phOvPmbrQOtzSG/U1NqevOq51/Zkz173pSOTp0OfNU9JcLpnu0gKKO7sDMg8WWW49rtOacIz+Cafo9INPRjCCE0GdiPoXCIeIBGCPmfAPBHSumNSV8MYYCG0FSjCvC1bxfwtW8tZfpvlIydTERZlV/OXn7Jv/Qn5+Sc5YNT1Yw7jjv616+9vuJsz9nFEpX44DqL2tL/WP5jJ74767vXJhukjTUcrF3rGp0K2uvyP1SwZtHxA2kmdV/20OYFczMmFqxRRQHnH/4wy/nOu1uo02kOrlPNm1dr+Y//8TBfVOh6mM83FaKpL7t+vLvo6tHObX6PHPzvi2YUm86v+EbBUX2CasrC33hVu/+L4kt7P93u93hG/iwShpHzyxefXP3y90+qdfqo2OU2VikuUeX9onW91ORcGlxODFyvZn3mF6q5iVEXmsejaOrHEELoYWA/hsIhGgI0BQAoAFwAgDcB4E+U0in70hnvMEBD6NFhO85ZVGd/uZhtra4gsqAOrqMAoCSX3BLnPn9WLP/2bSBTM6Wrxdmie/3a68vP9JxZIiqiKrguQZUwsDN/54nvzvruNTWrntKRGoNuP3++1Z58vdOZ2jTgSem0+VJ6nf5Uu09KeJDrMASUBC0/mG5S92YlaPpmpuj65mWaehfmmgfHBmuyzcbb/r//udL75ZcrQQ4ajcfzft2WLccTfvr3ZxmdLuI7JEZbXyZ4JO7Mn5tXtV6zrqIURtbV49SMa9bKtIMLtmRdJQyuM/UgvE4Hf/wP/7629erl5cFTjDUG4+DCJ76+e/a6zXci2b544L9uzfQd6XyMOsX04HI233Be91juEcaE4e9UirZ+DCGEHhT2YygcoiFAexYAXoLAzpsMAIgAsBsCYdpeSmnEv/zEEgzQEHr0iLtPpTr9T/O5hj1LGe9A0th6RZfcLxXvOOtf9jdXqD7FPxVtaHe1a1+79tryU92nlo4N0swq8+COvB1V35v1vSsaTvNIpzwNuv38uRZ7yvUuZ8qdgcCuoL1Of4rjIYI1i44fSDOq+7ItgV1B52UZ+xbmmgeYG3Um2//6X5vF+vqQqXSMxTJgfOWVfcbnnr0d1g/1gKK1L+tudCSe+aRlh6PXNyO43JSsvrPka3l7M4vNOAXxATVfqkk79d6bj7kG+kN2kkydUXh1zSt/ccCSkYW7iU8ClRTGu699qXjNug6U0TX9QMW41MtS96pXpd3ATQamRrT2YwghNFHYj6FwiHiANnIxQtIA4EUAeBkAZkNgAEc/ALwDALsopZfDdrM4hgEaQhGkSIS/vGsGf+WdpexAfdHYasqqBTl35UVh6V+eU7IW26aiCV3uLs0vr/1yWXVX9TK/4g8ZFWdSmazbcrdV/bDsh7WPOkgba8DlV51rsSXXdbtS7vR7UjvsgRFrDp9kvv/Zo4KDtXU9V8UNx94r0NoGTMHH8EVF9Qn/8NMD6gULIrLweDT3ZVShUHu4c/aNE91bRUExDJcTAkp2WUL18m8UVGn0nBjJNsYaRZbJ6fd2Lbx58thGWRRH/g6yPO8rXb3+8PJvvniRYVlcRHYSpHZ3gndv23alzxfSzzKpmgbtjpy9XKbeHqm2xato7scQQmgisB9D4RA1AVrIhQkpB4BvA8BzAJAMgTDtKqV0wZTcMI5ggIZQdGBbTyWqzr22hG0/XU5kf8iIMAoASkpZvTjvhbPi/BfuTMX0zm5Pt+a1q68treqqWuZX/CG7hxp5o31r7taqH87+4WUdF/kpjsGGg7XrXa7U4RFrfS5/ykSDNVaR4bGmanjh5kHQS76RcoVhFc+K1Rcz/+9/OGxKTXqkU71ioS/z2P3qUx82r+1ssC8FCiNDeFRa1j5nXcbeOesyGiLZvlg02NFmOP6HX2/pa749J7jcmJzStvJbr+zOnVfeG6m2xQNKKQhV3bOFs31bwT8a/gJDRH6u5ah2a/Y5wuEmA+ESC/0YQgh9FezHUDhEZYA2cgNCOAD4awD47wDAUUrZ+5wy7WGAhlB0Ia5uterU/1nA3dq3hPFZE8fWU02CTc5cVCeWPlknlT7eEe4wrc/bp/7l1V8uOdF1YrkgC9rgOgNvcGzO2Vz1o9k/uqTn9VEVpI3V5/KrzrfYUuq6nClNA97UwBprQopTkMcN1hJ8Tnilbi9sbj0feh2tGd4r2yqeL15m02lVLrOGcyXoeGeijnelGFWudJPamZ2gdRUkaV1pJrWPCcN0sFjqy1qvWdNqPm/d6bL6s4PLLRna+mVP5+9PyTPYItS0mHX18L6ZF7/4eIfgdo1s3EAIUXLnVZxe88oPj2sMRhzhNwmK3a/xfNG6UW5xhTzIEiPfpd2U9QU/K6ErUm2LJ7HUjyGE0HiwH0PhEJUBGiHEDADPQGA65zIAIABgp5Q+0C5v0xEGaAhFKUUi/IXfFfLX3lvKDjbOHO8QqjbZ5YyKG2LJ43VS2VPtwHBh62T7ff2q166+tuR45/EVPtkXEqTpOb1zU86mkz+e8+OLBt4QUzsG9rn8qnPNtpS6LmfqnUHv0OYFQqpTkE0AACWDLfCjK59Cia0t5LwmUwa8MXsnXEwruee1WYZIBhXrMmg4p1HNuhK0vCtRzzuT9CpXmlHtykrQOPMSta78JK2bZ5l7/ruKtb5MkSm5sLdtQcPpvk2yqIz8WSEMkfLnW44vezr/NK/+6p1SUSjB7eKO//E3q1su16yklI6k5Gqd3la+82t7523ecSuS7YsH/trBHN+xzseoW0oJKqbcTONZ7c7cY4yBn5L1J6eLWOvHEEJoLOzHUDhETYBGCGEAYAsEQrPHAUANgZlORyGwocDHlFJv2G4YpzBAQyj6sc3Hk1XnX1/KdpyfS+TQdcqGUZXBJWeU10nFO26Is7/ZAqwqLB3uoG9Q9dq11xYd6zi20if7dMF1Ok7n2pi98eSP5/z4gklliqkgbaxep6A+12xLudHtSmnuc6XMOHt45tYLe1LMgitkSNnFlGJ4Y/YOaErIutel7osAUK2KdRvUrMuo5lxmLee06HhXkl7lTDGoXGpH2/oEFSjrVy39rVnLx8zv1dnv0576sHljT5OzIrhcY+D652/O2luyPBV3lnxAbdcup1S/88edjr6e3ODy5LyCujXf/uH+pJw8Z6TaFg+oX2a9e9tXiHXWNRC0wyyoWbtmZdpe9fJUnIr8kPCZDCEU67AfQ+EQ8QCNEDIXArtwPg8AaRAYbdYAALsgsHlA+6RvMo1ggIZQDBGcLH/lnRlc44EytvdqKZF8mvEOo7zOLacvuCkVbasT5zzbDLx20uv6WAUr//q11xcd7Ti60it59cF1Wk7rXp+1vvrHc35cY1Fb4mZ6mdzfrxr8+S9W+I4fX0EkaWQHPwoA9TMX9H+85GnrHbVF7RQko1uQDVLwLn9homIZwaBmnUYN5zJpOFeClnMm6lWuFIPKmWZUu7ItGldBks6ZYQ7P9NFwuH2hP/vi3vadXoeYFlyenKu/uvwb+Qct6TpXpNoWixRZJmf//O6CuuOHN8l+/8gIP5bjheKVq4+ueO7b51kufKNPpyOpxZXo3du2UxkUCoLLmXRtnW5n7n42TYtB5QPCZzKEUKzDfgyFQzQEaMNfBO0A8AEA/JFSenrSF55GCCFGADAOvd2fkZGRUl9f/+tItikcsJND04roZfirfyrgbu0tY7trS4nk1Y13GOU0Xjlt3k2pcMsNcd4LTaCa3NplDr+De/3a6wsPtx9e5ZE8huA6DavxrMtaV/3qnFdrEjWJcTP9SbzVaLD94udrhYuXKoDS0ZSKZWXNihVnEv7hpyeZtDRfv8uvvjPgMbRZfYZuh2DsdfoNgx6/weYRjXafZHD6JKPbLxt8QdMcw4UlIOvVnMugZp0mDecya3mXRcc7k/UqV5pJ5cwwa1z5iVpXfpLOrX4EC6XLosKc+6x18e2a/vWKTEc2xWA4IhQuSj66+Inc8yx372ms6G627k7d8T/+enNPY8P84HJDYlLn8mde+qJg4ZLuSLUtHlBKQTjWNU+o6d8CojLan7JEUM1PPKLZkl1DGIJ/ZicIn8kQQrEO+zEUDtEQoB0AgD8AwCeU0ke6M1q8IIT8DAD+cfi9wWBwdXZ2/iJyLQoP7OTQtCX5GP76h7lcw54ytuvSLCK6DeMdRlm1oKTOqZcKN9f55794G9QPP+3SJbq416+9XnGo7dAqt+Q2BtdpWI1nTeaa06/OffVcsiY5boI036nTKfZ/+7eNYmNjcXA5Uau92q1bTyT87d+cZ/T3DyhdgsQOB22dNp+h1+k39rv9BptHNNh8ktHrcRc4/cA6RQCFQti3XNXyjNug5lwmDec0aTmXZWittlSj2pVhUjtzLFrXzGSdK0HHT3o04WCnx3j6z82bB9rcITtL6sx8d8X2nN0zKpI6JnuP6ebG8SP55z/9YKfP6UgKKqY5c+afXfOdHx3Tmcxx83cuEuRBQef9onWT3O5eEFxOzKp27ZasL/giM+6GOgH4TIYQinXYj6FwiHiAhiYPR6AhFMdkP+FufJLD139exnZenEX8TtN4h1GG9yupZQ3SjE114vwXG6ku6aHCErfoZn91/VflB9sOVrpEV8i91Kzauzpj9elX57x6LlWXGjf/w8P1yad5zjfe2Cz39GQGlxOTyWb4xtePmL73vetkElPqhvuypctX/Lbd6tXeGfAaO+0+Q7dDMPS7/MZBj2iwe0WDwysZnYJkcAuyUZyS6aNE0Ks5l1HNukwa3pmg41wWHe9KMaic6Sa1K8usceUn65zZCRrv/aaP3qzumVF7qHO74JaCQx9Im2m8sOIbBUeMSWpcs/QB+L1e9sSu36y6c+FcJVWUkbW7VFqdY/7Wx/aV73jyZiTbFw+Ei/35wpddj1GvPLobMgGFKzKd0u7MPc5ouZhZnzAS8JkMIRTrsB9D4YABWpzBNdAQimOKRLibn2fx9Z/NYjtqyohgTxjvMMpwkpJcekuasaFOnP9SAzWkPfAIFrfoZn9T95sF+1v3VzpFpzm4TsWofJUZlWdenfvq2XRduu8hP01UoYoCjt/+brb7gw82KA5HyI7PbFpap/G73z1o+NqTLQ9z7YfpywZcftXtfo+hzeY1dtkFQ7/Lbxhw+402r2Swe0WDU5CNbkEyeIOnpoUJQ0DWq1jX0Ki2oU0RVK4kPe9KM6mdmWaNK9eicWUb1N7Ln7cta7kyuJoqwA2fz/GMp3hF6qGKbdm1DItT5B5E583riVVvvbHT3tMVsnZXYnZu/eqXv78vtaDQHqm2xQPqkznPntZVUr29EoJGgxIta1VXpu9WL05pimT7ohk+kyGEYh32YygcHnmARgj5PQTWbP5PlNKeofcTQSml333gG04zGKAhNE1QBbiGvRncjU/K2I5zZYzPmjjuYYSVlaTiRqlgXZ244OUGasp6oMDLI3nY39b9dt6+ln2rHaIjIbhOxaiElRkrz/x4zo/PZumz4mLEkeJ2s/Z//udFnn3711BBCFnbjJs5s8H8lz85rF25su9BrjmVfZnHL7PNAx59y6DX0GkXjD1OwTDo9hsGPaLR7pUMTp9kcAmBtdqmaPqoJ4PlPKvsrC7NCyFhHjFxPRmrU49mlZi7kg0qwaLjRQ7XnLovqihw/tMP5l47sn+LJAgjG3wwLCcWLVt1bOULr5zleNWUr3sXz8QmR7JvX/tjis0fshsqm6m7qn0s9wCbrHFHqm3RCp/JEEKxDvsxFA6RCNAUCARosyilDUGbCNwPpZSy9z9sesMADaFpiCrA3j6cxtd9NIvtOFvGePpTxj2MMIqSWNgk56+p8y94+SZNyJ9w6OWTfMzvbvxu3p6WPZV2vz0krOMZ3r8ifcXZV+e8ejrbkB0XQZrU3a2x/e//vcpXfWoZyPLof3sIoaoFCy4l/P3ffakqLp7QTn7R0JdJCiUdNp+2ZcBjaLcFNkXod/kNgx7RYPOKRkfQpghi0CYBE0YBCiUG1nt4MNPRnE4BChdVMpzSiCAwADxL/CqWEVQc41dzjKDmGEHDM4KGY/wanhV0KlbQ8oxfr+YEvYoVDGrWb9JwgknDCwk6TrBoeX+yQSUk6lX+eA/jHH292uN/+PeNXQ03KoLLdQmW7mXfeH534dKVuN7cJFCFEt/hznL/pf5NINHRHZA54lNVJB/UbMy8RKJkJ9xoEA39GEIITQb2YygcIhGg5Q297KCUSkHv74tS+lDTZ6YTDNAQQuydYyn89Q9nse1nyxh3T9p4x1AgVLHMuCPnr64T5794U0kqntCIC0EWmDduvDFnd/Pu1Ta/LWT9K57h/cvSlp378Zwfn84z5nnC8VkizX/9utn2f/5pnf/KlZCdEoHjRO3qytMJP/1pNZv81RsrxFpfNuj287f7PcZ2m8/QZRcMfS7BOOAWDTaPaLD7JOPwqLbxpo/yFGCZj4PFAgcsjIYPHkLhhEaEayoZaJgyCZ4hoopjBNVQEKfmGL+GYwQ1zwhanvVreUbQqQKhnF7F+Q1qVgiEcZw/QccLFi0vJBlUQpKe9/Ns9O4gWl99POfcx+/t9NptqcHlmbPmnF/7yl8cMSQmxc16hJEg9/n03t2tW+ROz9zgcsaiatFszdnNzzD2R6pt0STW+jGEEBoL+zEUDrgGWpzBAA0hFIxtPZXIX3uvjG0/XcY4uzLGO4YCoTQhr1XKXVUnzn/xhpI6+74jq0RFJG/ceGPOF81frLYK1uTgOo5w4tK0pedfnfvqqXxjflxMhfIe+zLd/vrrG6Xm5pnB5USrdet27PjS/Nd/dZHRaMYdUR2vfZlXlJnmAa++ZdBr7LL7DD1OwdDvEo1Wj99AbWJiWbeSlSoQdfA53awCR7QidHLRNQORGw7jWOJXc+yYkXGMoFWxgo5n/Xo1K+hVrKBXc0Mj4zghQcsLCTrOn6wPjIxTc0zYP5zkF5iqXW8sv33+1FpFlkfWm+M1GtfcTTv2L3zsqeuECfsM3WlFONc3U6jq3kl9csJIIQGZL004qd2RU0XU7H135I1n8dqPIYSmD+zHUDhEPEAjhPw/APAlpfTEVxxTCQDrKKX/bdI3jHMYoCGE7oXpOJ+guvqnWWzbqTLG0Z59r+MUc26blLOiTpz3wg0lY8FXLlouKiL5480/ln1257M1g8JgyNRRlrDSktQl51+d8+qpGeYZrnB9jkhyvvf+TOeuNzcpff0hI/uYhIQBw3PPHjZ++9s3xwYZ07UvowqFK0c6y26c6Nns98khG1FoMjX16sWWiy41kZ0+SeUSZLXbL6k9flnl9stqn6iovaKs8omKWpAUtU9U1H5ZUfklRe2XFPVU7FIaLhxDpKEwbmRkXCCQYwUNz/h1PCtoVUNBnIr169Xc6Mg4LSck6HghUcf7kwwqQcuzIWFcd2N9QtWu3+2wdrYXBpcnZGQ1rn7pe3vTi0qtj/bTxhfFI/He3a1rpFuOFQCjQyiJjhvQrM34QlWeNG1nQkzXfgwhFD+wH0PhEA0BmgIAP/uqcIwQ8p8B4L/hGmj3hwEaQmgimJ6rJr72rVlca3UZsbfk3mtWnWLM6pBzlt8Q5z5XJ2cvveeXc0mRyK76XbM+ufPJmgHfQMhUM5aw0qKURRd+POfH1UUJRRNaNyyaUVEk9l/9+zz3J5+spy6XKbiOzcxsM/3wBwf127e3D5dN977M55b4sx83r2y9Zl0ZvFsnwxJ//oLEE0uezDuj0jzY6B5RVsiAW1QNuv1qq1dU2TyS2uET1Q6fpHYJssolSGqPX1Z7RUXl8ctqnxgI5XySohKkQCjnlxSVX1bUD7Xm2yPCMkRSsSRkzTg1S/wF1hvqmS1fZvCidyRIpAyrKEVL6tglO25oNGq/mmNkNcdIGp6VNTwjaXlG1vKspOVZWadiJb2KlfVqVorm6auRIjbY07wH2x+jdjEruJzN0V/SPZZ7iLGo42Ktxwcx3fsxhFDsw34MhUOsBGj/CAD/hdLo/T/O0QIDNITQg2L6bxr42rdKuZaqMmK9k0/usUqVYkjvlrOX1YlznqmT8yoHxjtGUiTydsPbJR83fbym39efHlzHElauSKm48KPZP6outZQ6puKzPEqKw8HZfvGLpZ7DRyrB7w+ZqsiXlNww/81fH9YsWjSIfVlAX4sr4ewnLZsHOzyzgsvVem5wzrqM/bPXpN+KRLskhRKrR+T7XX611SOqbV5R7fBKKqcgqZ0+Se0eGhXn9ctqryirvKIyEsgJQ4GcXx4O5Kj6/ncMD5UiwDLrOZjnuAbBf2EHeQt8mVQJHdqse54bjABQliESyxCZZYjEDf1kGSJzQe85hsgcG/jJs8zQTyJxLCPzDJF4lpFVLJF4LvBTxTKyimMk1VCQNxLocYys4VlJMxLoMbJOxUo6FTvyk4mCxfuprBDfwY5F/trBjRAcsvKMR70o+YB6XcaV6bTJAPZjCKFYh/0YCodYCdA+B4DFlNJx1+9BozBAQwhNBhm8rVPV7iplm0+UMdbbBYQq4y6spOhTeuWspXXi7G/WyQVr+4CEHqZQBd5peKfko6aP1vR6e0P6boYwcnly+aUfzf7RybLEsq+cIhoLxNZWne3nv6gUzp5dAkrQ74shinrR4prGnTvzFJNRwb4soP5Ub0Ht4Y5tPqcUMuU3IV17a8kTufvTC02DkWrbZEkKJXaPyA94/KpBt6i2eSW13Suqh6epDo2MCwRygRBO5RXlwDTV4VFxkqIWJKoWZUVFAe6b0KQJPbCu/wSk+EPXur+pL4bqxOXg4e7a6yHqMQTk4QBvONhjyUiANxrqDYV3w+EezzIyxxCJZwMhH88SWcUyd4V66rGh3leM0tPa/Fr/3vatSo83JPhlktRN2u05u7lcw7SYNovPZAihWIf9GAqHiARohJCjQW/XAkDz0D9jsQCQAwB5APAnSukLD3XDaQQDNIRQuBBbq1ZVu6uYbf6yjBm4NZNQedxp9Io2aUDOWlwnlX29Tirc3B0cpilUgfduvVf04e0P1/Z4ezKDz2OAUeYnz7/0o9k/OjknaY5taj/N1BMuXbLY/vmfN4h1N2YHlytqNXWsXeua9fd/929sQoIYqfZFE8kvM+c/b1vcdKF/nSyNjtoiBJSsWQmnlz2dd0JnUn3l7qbxTqEUbB6RH3CLaqtHVFkDI+OGpqlKKpcgqQMj4xSVV/Crk5qqs7PbzmSwijTyF1BkVPR62lLHjcT5fokSVlYoJymUlRXgZEpZWaHcV7UBBRAAuprw8t9QNZsCzEio6QcKH6sk56dqxakwoDCEUIaAwhCiEAIKyxCFEELZoTKGEIUZOo4lRGEIKAxDFJYhCkMgUMYQJfAz8D5QF/jJMqPHcEPnsYRQjg0cwzFE4djRMpYMvWcI5RmicCwzcgzHEMqzROEYRuFZovCBOqriAseoOEZRBcqpimOUs6dPfR8An8kQQrELv1uicIhUgBa8KC6Fe/8fVgUABgDgCAD8NaW076FuOI1ggIYQmgrE2anmL+8q5u4cK2MG6guJIo37xZtqEqxy5uI6cdaTdVLJY53DYZpCFfjw9oeF7ze+v6bb0x2ygQEBosxPml/7w9k/rJqfPD/mR3N4DhzIsv/7rzfJ7e15weVEr3fqn3jimPknr14mPI/rTgGAvderO/NRy4aeJmdFcDmvZlwlK1IPlW/NvkKY6TNNbrL6W5uNVbt+u6WvuSkkxNVbEruWfv1bewqXruwILlcoBUFSGI8gc25RZr1+mfP4ZdYrKpxPlFmfpHA+UWEFSeYESWEFSeH8Eg38lBVWlAPvRVnhRHnopxL4KcmUlRTKibLCSsPBnRz4OfSek5VAiDfyk1JWoRC124lqAeB7oIavgwrYoEfXJpDh5+CDKxDfG3UyBIAAyIGAMBAAEjIaHA6XDQWIlAl6zzBEYQAowwyFi0PHDAeCI8eRwDEMIQo7FEIyhNDhY1hCKCFACQR+MgQoCdyfBto4XD56XOCYQNnw8WTo2ODzR48JuQYwQeVM0LWD3zMMUAIEGCbwnh1zbYYJKQN2qIwhhLJM6PXZ4WMZQhkSaCfLDP0zdM3g98OvGUJg9DXQaJgKjVA0we+WKBxiYgonmjgM0BBCU424+1R87a4irunILKbvRjFRxHHXp6Rqk13OWHhDLH28Tpr1tXZgOKpQBT5q+mjG+7feX9vp6cwJuS4QOjdpbu33y75ftTBlYcxO4wMAoIoCrnfeKXa+/c4mZXAwObiOSUrqNb7wwmHDt567NXbHzumquXYw4+Ketu0uqz8kXDVYVO0VO3L25s9P7IpU22LRtSMHZlz84qMdPpczMbg8s6Tswupv//CIKSU1ahfBlxRK3ILEeobCPI8oc16/wvpEmfNKCiuICueTZFaQFE4QFVaQFc4vKaxfopxfVlh/cJgX9FOSKScqCisFh3gyZSVF4eSh98NB3v1G6ZUAA/8AWiiB0EG5X4AfXgcfxPxOKShuEAgEgwAjwWFgkdOgEDIQNI45ZqgsaJ2/kfOGrwsAQAgZ8x5o8L2BkLvqAu/JmPeBF8HXJWPuG3gfCDUBRs4Nqgu0d9z7BZdP6JyR+9zVhpDPPNRmEngxsoBsSF3gQkPnjvP5yD1+X6O/yJD3w/cPOWa0/TDc/rEHkLuOGf53NfSbDf13d1dZ8L2Do9ngf3/B9777Pvc/ZkzmO/y7Cj1mnLaR0QuPe8xwvWTrXE0AgLNkHr/XZxxvXM9dv4e7jhjvmAlcZ5wLjfy7+4pjACZ/HQJjP/d4x5AJHDPedciY96HHPDY3rTnFELuzDKIhQHsZAC5RSq9M+mLTFCHECADGobf7MzIyUurr638dyTaFAwZoCMUA7yCvqn17Jtd0qIzpvV5CZP+4OxpSlcEpZ5TfkIp31omzv9GqMBz97M5n+X+69ae17e4xI7WA0NmJs69+v+z7JxanLh53s4JYQQWBufpP//RX5gMHjazLFZKWcbm5d0w/+otDuo0bMRwCAKpQuHSgY259dc9mUVAMwXVpM4wXlz2dd9ScqnVHqn2xxu/1slVv/W5lU82ZSqooIyEQp1J7ytZuPLTk6edqGZbFkZD3ca9Rej6fzCdfHJyf3ORaygTtLiuxRLg9Q1tTn6dtlikQSaaMpFBGppSRFcrICiWBn8DICmUkShlluGzoGIXC0DGUUShlZAqMolCijNYzMqUMHTpOoYEyJfCaKBRGy4bfKyPvGRp0DB09liiUMhSAURRgKKWMEnjWZ6J5VCBCCKHY8vozc16vLEyM2ZmFEQ/Q0OQRQn4GAP84/N5gMLg6Ozt/EbkWhQcGaAjFGMHJ8lfensk3Hihjeq6WEFnQjHcY5XVuOX3BTaloe50499nmz9oO5Lx76901ba62guDjCBA6yzLr2vfLvn9iadrS/vGuFQuqq6t/QASBlBw+fNN77MuVIEkhI/ZUs2dfNf+H/3BUPW+uLUJNjCoeh1919uOWyvY62woa9MWd5YgwoyLp2OIncs9zKlb5qmugUd23blqq3v79NmtHW1FwuTEltXXFsy/vyZtf0RuptsUDqdNj8u5t26b0eEuDy5lE9R3t1uw9XIExpv8nwLCqkyd/oFCABYuW/t4vU0aSFWboJ/HLlJEUhRFlyoiywkgKJaIcCPvEoWMlhRJpKBQc+kkkhTKSHBouSgpllNFjGJlSIiuBkG8oLCSUAlFoYOCDQmHoPSU08N0k8D74NQ0M9gkcO1oPFIgCgffD5RQAAj9Dzr3rmkP3AjpUN3wODNWNticwDIUGvQ95DaPvYeT+ofUAY84Z+uxjrwGh5yCEUFTCAC2MCCHZAJAFAONuA08pPRHWG8YJHIGGEIo6fjfLX/tTPndrfxnbXVtKJO+4WwFSTuuV0+belAq31n1qSZHevv1BZYurZcbY42ZZZl3/Tul3TqzMWBlzX/aD+zKxqUlv+/nP1wo1FxYCpaNfchhG1ixffi7hp39fxWVlRe30ukepu9GReO6z1i22bm9xcLnGwPXN35S1r2RF6p1ItS3WUEWBy/u/KKnd//k2v8djHqkghObMmX9mzcs/+FKXYInZ6RTRwHeqp0Q41bMdBMU0UkhA5ksTTmq355wkGlaKYPMmDZ/JYotCA+GiHBi5CEMjHwP/DIV4we+HX1OgICtAlKEwc/haQ2EdDAWYMBQwBkJJoDAU7AEdDithKIgMOpdSSsYrBxgJDWEotBw9Z+g+dMx9AILqvurYoPsFzhlz7Jj3cPf7ca8HY68/9H7oHgBjzxn93nzXfYcbFvL7CCofbnfQ25HfGYS8Dz1m+P3IFYKvM+a6wRcevnfQ1/wx1x29Lx19EXrMyHVHLzL23l913Xt9ppFzxrnuPX9XQb8H1u8oAQAQVcaGsZ875FpfYdx23l1w/2PGudfYaIXC3fca55z7HzPmXvfIcEKPGf9C9z3mrt/hOPf62Y7ivfOyTPZxGxsDoiJAI4RsBoB/AoDSrzqOUjruDnBoFK6BhhCKOpKP4a99kMfd2lPGdl2eRUS3frzDKKsWlNQ59Ueyynp+KTTPuONqmTn2mJKEkrrvzPrOicqMyp6pb3h4jNeX+c6eTbb/679uEBtuhfx3j6jVPu3mTScS/vZvzzNGY0x/4Q6X68e7i64d69oquKWQ9bwSM3U3lj6VdzAlz2CLUNNijtfp4E+8+ZvVrbUXV1BKR0b38Rqtc97m7fsrdj5Vh+vyPTzFJaq8e9rWSo2OZRC8hJGOHVCvztijXpgcs6EvPpMhhGId9mMoHCIeoBFClgJAFQD0AcCfAeAvAeA4ANQDQCUAzAKAzyGwTtp/nfQN4xwGaAihqCb7CV/3cQ5X/0UZ23WxjPidxvEOowzvP5de3PbPBl53TRzMGFtfZC66+UrpK8fXZq3tnvpGT85X9WXuz7/Idfzud5vkrq7QnUmNRrvh6aePmH74g2uE46b9egmiILPnPmlZeufy4BpFpiPr7BEGpNzZluqlT+dXa/ScGMk2xpK2a5dTqt99c7ujtzs/uDwhI/P2que/szezdHZMb+IRaWK9Ld17sGMndYhZweVslu6KdmfuQTZZE3Nr+eEzGUIo1mE/hsIhGgK0zwBgHQCUUko7g3flJIEtHH4GAH8HAEsppdcnfcM4hwEaQihmKBLhbn6exd/8tIztvFBGBLt5vMOuanTSv6ame8+w0l1hW6GpsP7bpd8+vj57fdQuxH+/vowqCjjf+H2Z6/33Nyp2uyW4jk1N7TK+8sohw9efjtmRK+Fk7fIYznzUsrGvxTU/uJzXsI6yyrQD8zZm1hEGl/+ZCKoocP7TD+ZeP3Jgiyj4RkaFEoaR88sXn1z90vdOqvUGHAX5kKisEN/BjkX+2sENINPRpUk44lOVJx/SbMy8RJi7dziLVvhMhhCKddiPoXCIhgCtFwAOUkpfGHqvAMB/o5T+LOiY8wDQQin9+qRvGOcwQEMIxSSqANewN4O78XEZ23G+jPFZE8ceckPFw78nJNCjeu1dCckM04xbL5e8fHxTzqaOR9PgiZtoX6Z4PKz9n/9loWffvjXU5wtZM46bMaPR/Jc/OaRdtSrm1oCbCrcv9Gdf2te+3WMXQ0YnGpPVzYsey92XU5aAv6cJcg30a46/+Zt1HXVXF0PQtEO13mAt3/Hk3nmbdzRGsHkxT+71Gry7W7fKXd7ZweUkQdWm3ZL9BV9oiomFlPGZDCEU67AfQ+EQDQGaAAC/oJT+p6H3PgD4N0rpT4OO+WcA+BalNHXSN4xzGKAhhGIeVYC9fTiNr/tzGdtxrozx9CcHV9erePh1ghkO6e/elyDfmN/4YsmLx7flbmt/ZO29jwfty6SeHrXt5z9f6as6uRxkmRupIISq5s+/nPD3f3dMVVLinKLmxgxFpuTCnrYFt872bZT8SvAfBppRZDq/7On8L41JatyQYYKaLpzNOPP+2ztcg/0h0w6TcvNvrH7p+/tT8mc4ItW2eCCc6y0Uqnp2UJ+cMFJIQOGKTKe0O3JPMLronoKMz2QIoViH/RgKh2gI0NoAYDel9EdD71sBoIZS+lTQMa8BwEuU0nHXykGjMEBDCMUb9s6xFP76h7PY9rNljLsnbbj8Fs/DbxJMcECvA0pCB6XlGfKani9+/vjO/J2tj7zBYzxsX+a/cdNk+z+/WOe/XLsgpILjJM2qVactP/1pNZuaIoSvpbHJZRU0Zz5qWdPZYF8astsWz3iLliQfWbgz5yLLMTEzVS6SFFkmpz94q+LmiWMbZdGvGS5nWFacuWTF8coXv3uaU6mVSLYxlikeiffuaVst3bKvAAojuzUQDWtTV6btUS9JjdrRfvhMhhCKddiPoXCIhgDtCADIlNLNQ+8/AIBtALCQUtpACEkHgMsA0EkprZj0DeMcBmgIoXjGtp5K5K+9V8a2ny5jnF0ZAAC3eQ5+k2CG/XodKGOCtHxtRuszpS8dfaLgiZaINBgm35d5q6pS7b98bZPU1FQYXE40Go9u+/bj5r/+qwuMTieHo62xrOOmPeX8563bHH2+guByrYnvLt+ata9wcUrEw9RYYevu1J344282dTfWLwgu15rMfYue/OaeWavXR+zvUzwQGx0pvgPtOxWbPze4nM3QXtfuzN3PpmpdkWrbveAzGUIo1mE/hsIhGgK0nwLA/wsAGZTSQULISgjswikAQB0AFAGAEQBeoZTumvQN4xwGaAih6YLpOJ+guvqnWWzbqTLG0Z59h+fgt2Yz7DHcHaSVMHrrNwqeOrJ13g+vM4S5xxWnRrj6MteHfy5w/uEPm+W+vvTgcsZsHjQ8++xh43deuUGYR/vZog1VKFw91lVad7x7i98bNFUOAJJz9VeXPZV3KDFLP+2nv05UffXxnPMfv7fTY7eFLKGROrPoypqXf3DQkpkdc7tJRguqUOI70rnAf7F/M0h0ZLQfsERQzU88otmcVUPY6Bk5ic9kCKFYh/0YCodoCNBMADALAOoopc6hsq8BwP8PAGYCQDMA/BOlFP+gTwAGaAih6YjprjXxV96ZxbVWl7W5O3J/m2CC3QY9yGOCtNmiIj7GJLZvT1lyVV2woVXOXTkAUxyohbMvo5JEHL/+zRzXRx9toE5nyK6lbEZGu+n73z+of2xn22TvE+sEj8Sd/bhlRctVayVV6Mg6cgxLxLx5lhNLv5Z3RqXlcIfJCZD8AlP97h+X3Dpzcp0iSarhcpbnhZKVa48sf/alGpbjoiboiTVyv0/v3d26We7wzAsuJya+U7sp6wu+NKE7Um0Lhs9kCKFYh/0YCoeIB2govDBAQwhNd0zfDQNf+9as9vaquX8k9pwvDHqQxgRpZlmGx11ueNoj+vL1We1KcmmbnLWkXSra2kEN6WFdV2wq+jLF6eRs/+eflngOHqwE/+haVQAAfHHxTfNf/9VhzZIlA+G6X6zqb3WZz37Ssmmg3ROyA6Jax1lnr03fP3tNegNh7trUFY2jv7XZeOLN327pb2kK+V3qLYldy77x/O6ZS1Z0Rqpt8UC40F8gnOjaQT1yUlAx5WYaz2p35h5jDLw/Yo0DfCZDCMU+7MdQOGCAFmcwQEMIoVFk8Lau7cJr5bsGzi3Zz8umsUEaAMASrw++4XTBBrcHOACg+pRexTKzXUmb2y7lr22Tc1cOAPPwI2ymsi+TOjq0tv/1vyt9Z84sAUVhRyoIoepFCy8k/P3ff8nPmDHtp9k1nOnNrz3Yuc3rFEOmIprTNI1Lnsjdn1FknvZh40RdO7J/5sUvPt7uczkTg8szS2fXrPn2D48Yk1N8kWpbrKOCzHr3tK0Sb9oqgcLo32c141AvT9urWZlWH6m24TMZQijWYT+GwgEDtDiDARpCCI2vpftCwkfXflX5paOhrB8kzdj6RFmGrzld8LTTBTnS6Jr8lFX7FHNuh5Jc0iZnLWqXCrd1UFPWhEOCR9GXCbW1CfZ/+uf1/uvX54ZU8Lxfu3ZtdcJP//40a7GIU3X/WCCLCnP+i9aFt2v618ti0JpTBJSsUvOZ5U/nn9CZVdN+V9OJ8Hu9bNVbv1vZVHOmkirKyBRZTq32lK3ddHDp08/VTvf1+CZDanYmefe171AGhZANMZhUTb12R+5eLlPneNRtwmcyhFCsw34MhcMjD9AIIU0PfFIApZTOfMhzpw0M0BBC6KtJikQ+avpo5t6WPQsb7Y0lFCBkWBqhFFYMjUpb4/ECN841FF1yv2KZ0aakzW2X8la3y/lr+u41Su1R9mWeQ4cyHb/6901SW1t+cDnR6Vz6xx8/Zv7Jq5eJWq1MdTuimaPPpzvzUfO67tvORcHlnIpxlyxPPVS+LfsKwxL8P4QT0H3rpqXqrTe2WTvbi4LLTSlprSuee3lP7rzy3ki1LdZRSkE41jVPqOnfAqKiG6lgiMjPtRzTbs0+Szjmkf1dxmcyhFCsw34MhUMkArRmAHioB1NKacH9j5reMEBDCKGJu2m9aXq74e3ysz1nF7olt3FsfYos06cdLvK00wXpsjzeJQAAgLIqQTHldCjJJe1y5sJ2qXBbO03I9QI8+r6MKgq43v1TkfPttzYpA4MpwXVMYmKf8YXnDxuef75huo8Qark6mH5hd/s216CQG1yut6g6KrZn7y1YkIRrek0AVRS4vO/z0tr9X2zzez2mkQpCaO7cBadXf/uHx3Umc0TX74plilXQena3bpRb3RXB5cTId2s2ZO5WzbZ0PIp24DMZQijWYT+GwgGncMYZDNAQQujBCbLAfND4QdH+1v2L7jjvFI6tJwCwiKpt33K6lbUDXRYO6H1Xnle0SQPUUtBer5qTbzOU+OdufOZXwKoe2X84qSAw9tden+/+7LP11OMxBNdxOTnNpr/44SHd5s3TOiSiCoXLBzvm3Kzu3Sz65JAANbXAcGnZ0/lHEtK0034NuYnwOh38iT/+Zk3rlYvLKaUj6Syv1Trnbdqxv2Ln1+qme2g7Gf7agVzfsa6d1C2FhOJcvuG89rHcI4xpaqcf4zMZQijWYT+GwgEDtDiDARpCCE3OtYFrCW83vF1xvu98hVfy6sfWG3mDfZMu//Z3fKwre+B2KmNrySGi+67jxqIM76fmnA45qXholNqWdmqZ4ZmaTzFKtlp52y9+scx79NgqEEVVcB1fVnYt4W//5qh6wQLrVLcjmnmdourMR82r2utsK2jQ4u0MR4QZ5UlfLnky9xynYqf11NeJart2OaX63Te3O3q784PLEzKybq964Tt7M0vKBiPUtJhH/TLr3de+XKyzrgElaHa5inGpl6bsV1emXyfjbJQSDvhMhhCKddiPoXCIugCNEGIBAAOltC3sF49ThBAjAAz/n/P9GRkZKfX19b+OZJvCATs5hFAkeSQP+6dbfyo51HZoUaur9a4lBAgQpTih+ObOvB01T2lyreo7X2az3bXZzOCtHOLqTidUue9wG0VjGaSWGe1y6ux2OW9Vm1Swvhc4zZQENeKdZr3t5z9fI9ScXwjK6AghYBhFvXTpOctPf3qCy8n2TsW9Y0VPk9Ny7tOWLdYub0lwucbA9c/bkLmvdFXaw67jOq1QRYHzn34w9/qRA1tEwTcSLhOGkQsqFp+sfOn7J9U6vRTJNsYyqc2d4N3bukPpF0JGyzLJ6kbt9py9XI4h7IE4PpMhhGId9mMoHKIiQCOEGADgvwLA8wCQAoENA7ihuqUA8I8A8F8opRfDcsM4Qwj5GQR+RwAAYDAYXJ2dnb+IXIvCAzs5hFC0qOmtSXqv8b2FF/ouLBBkQTu23qwyD65MX3nh5dKXL+cYcjzgs3Fc48EMrv10jrWzqdLsuq1Si7b7BmqU4UVqyuqUk4rblIyKdqlwS7uSVBTWKYS+8+eT7P/yrxvE+vpZIRUqlaDbuLEq4e/+w1nGZJrW4Ubdie7Cq0e7tgpuKSm43JKpvbnkybyDaQXGaT1ib6JcA/2a42/+Zl1H3dXFELRZh1pvsJbveHLvvM07GiPYvJhGKQWhqnu2cLZvK/iV0SnaDEh8meW4dlv2aaJi771w4wPCZzKEUKzDfgyFQ8QDNEKIGQBOAsBsALgMACoAmEUpZYfqdQDQAwD/Tin96aRvGIdwBBpCCD0aLtHFvV3/9qzDHYcXdbo7c8fWM4SRZyXMqnu84PGaHXk7WhnCBPoySqGy0Pge13Q4h+26lM0MNmYTZ1cGoTI73n2CUU2CVUkoCIxSy13ZLs3Y2A28dtKj1Nx79uQ4fvPbTXJnZ05wOTEYHIannjpi+tFfXCXc+DuLTgeiILPnPm1dcufSwFpFpiNTXwkDck6ZpXrZ03knNQZejGQbY0VTzZmMMx+8s8M12J8VXJ6cm3+j8qXv70/Jn+GIVNtineLwq71ftG6Qml2Lg8uJnuvTrMvYrZqf1BqO++AzGUIo1mE/hsIhGgK0/wUAfw8A36aU7iKE/CMA/D/DAdrQMbsBIJNSWnGv66AAXAMNIYQejdPdp1Peb3x/0eX+y/P9il89tj5RndhXmVlZU+GqKNcxOnpXXyY4We72oQy27VQ221eXw9ias4ngMI29zliU4SRqzOpUkora5YyKNmnmpnYlZZbrYT4DVRRw/vGPpa4/vbdJsdkSg+uYlJRu08svHzI8881pPW3R2u0xnPmoZUNfs2tBcDmvYR2zVqUdnL8p8zphpmbdqXiiyDI5/f5bFTerjm2URb9muJxhObFw6YovV73wnTOcSo3rzD0k/3Vrlu9I507qFNODy9lc/UXdztzDjEU9qenZ+EyGEIp12I+hcIiGAK0RAG5RSrcNvR8vQHsNAL5OKU2b9A3jHAZoCCH0aFkFK/9W/VtzjnUcW9jj7ckaW88BR+dq5vqenPvkOxuyN3Qw5N4zOZnea0bu9uFstutiDjNwK5s4OzMnNEpNbbYrlvw2OWV2u5yzol2auakbVPoJT99SfD7G/i//stCzZ+9a6vXqQtpfUHDb/OqPD2nXrOmZ6PXiUdPFgaxL+9q3u23+zOByY5K6ZeHOnH25cyzT+vczUbbuTt2JP/5mU3dj/YLgcq3J3Lf4a9/cU1q5viVCTYt5VFIY7/72JeJV63pQKD9SwTMe9aLkA+p1GVcedpMBfCZDCMU67MdQOERDgOYDgH+hlP5fQ+/HC9D+JwD8NaVUc4/LoCEYoCGEUOQc6ziW8efbf154deDqPIlK/Nj6FE1K95rMNTUvlb50NVmT7L/vBf1ulrt9KD0wSu16NmNtziGC3Xy/0yhhZWrMHBqlVt4uzdzUpqTOcd7vPLm3T237+c9XeKuqVoAkccF1qnnzahP+7j8cVZWVTdvpdopMycW9bfMbzvRtlPxK8M6rNL3QVLP86bxjxmTNtN6IYaLqT36Ze+6T93d47bbU4PK0mcW1q1/+/iFLZnZY1/6bTqROj8m7t22b0uMtDS5nEtV3tNuy93D5xoEHvSY+kyGEYh32YygcoiFA6wOA3ZTSV4bejxegfQAAKyil2ZO+YZzDAA0hhCKvz9un3lW/a+7xzuOL+n39d42e5hnePy9p3pWvz/z6hTWZa7of5NpM3w0Dd/tQ0Ci1jkyihIZd46Eqo0OxFLTLKWVtcs6ydmnmli5QG8cdpeZvaDDafv6Ltf7Ll8uB0tEhKywraVauPJPwDz89yaWlCQ/S7njitvnVZz5qXtNRb18KFEaGFLI84y1cnHx00WM5F1iOmbbrx02U5BeY6nf+uPTW2ZNrFUkaWWeO5Xlfyaq1R5Y/89IFdhqvwzdZvuqeEuF0z3YQlNGp4QRkvjThpHZ7zkmiYSe8WQg+kyGEYh32YygcoiFA2wsAiwFgBqXUOTZAI4RkAMAtCIRsz076hnEOAzSEEIoeClXg3S/fffW097T+inCFl6l8V9CVrkvvWJ+1vubF4hevm9XmB1+UXvQyXNORNLb1ZE5glNqdbOKzWe53WmCUWka3kljYJmeUt0sFG9qV9Hl2CJpi6j15MtX+y9c2SrdvFwWfSzQar27r1uPmv/2bGkanC9tOf7Gms96efP7z1q32Xt/M4HKtie9ZsDlrX9HSFJyOOAF9LXdMVbt+u6W/5U5ZcLk+Malz2de/tWfmkhWdkWpbrFNcosq7u3WtdNu5DIJ2QiU6dkC9JmO3uiK5eSLXwWcyhFCsw34MhUM0BGhbAGAfAFQDwA8A4JswFKARQmYBwG8BYBkArKaUnpr0DeMcBmgIIRRdhvuyGQtm7Hqz/s35VV1Vi6yCNXnscSpG5VuQvKD22cJnLyxLX9Y3mXsyAw167vahbKbzQjY7cCubONqziCLeNaV0LKoyOJWE/HYlZVa7lL28TSrc3AWaBMn10cf5zt//frPc25sRch+Tyar/5jePmL7/veuEuffabvGMKhSufdldcv3Lrq1+r5wQXJeUo7+29Gt5h5Jz9NN22uuDuHp438yLuz/ZLricIRtaZJbOrlnz7R8eMSan+CLVtlgn1tvSvQc7dlKHGLJOI5ulu6J9LPcAm6TxfNX5+EyGEIp12I+hcIh4gAYAQAj5fwDgZwBAAUAEAB4ArABggcD/Lfu/KKX/Oyw3i3MYoCGEUHQZ25cpVIHdLbvzPr/z+cKbtptlClXu2iQgS5/VuiF7Q82LxS/W6fmJbwZwT5KP4e4cTWVbq7PZnms5xHYnm/EOJt7vNEoYhRrSu5XEwnYpdX7b4AW/zvHFl8up05kQfBybnt5h+u53D+mffGLajrjyeyXuzMcty1uvWisVeXQBd4YlYu5cy8llT+WdUmm5CU+Zm64Ej5ureut3K+9cOFdJldG/G5xa7Zm9bvPBJU89Wztdw9rJorJCfAc7FvlrBzeATEd3DuaIT1WefEizMfMSYci4D/f4TIYQinXYj6FwiIoADQCAELIOAP4KAqPNkgDADgBnAOCfKKVHw3ajOIcBGkIIRZev6stanC26XfW7FlR3Vy9y+B13TbvUsBpPRUrF5eeKnruwMGXhYDjbRaxNOq7xQDbbeSGbHWjIJva2LKKIqvudJzN690BTmnvwoj+R+pWQKal8UWG9+S//6rBm+bL+cLY1lvS3uU1nP2nZNNDmnhNcrtKyttlr0g/MWZdxkzAPtxPidNLVcMNy8u3fb7d2thcGl5tS0lpXPPfyntx55b2Ralusk3u8Ru+e1i1yl3d2cDmToGrVbMnezRea7hoBi89kCKFYh/0YCoeIB2iEkNUA4KCUXp70xRAGaAghFGUm0pdJikQ+vfNpwe6W3Ytu2W6VUqB3JSy5htymzTmbL3yr6Fs3NZxGCXtDZT9h73yZyrVWZTM917IZa1MO4x1I+orDob/OCNYGPVAlqLkEqLq84mLCP/z0S37mTFfY2xkjbp3ty7t8sGOb1yGGbCJhStU0LXk8d19miXnahowTRRUFLu37rPTK/t3b/F7PyEL4hBAlZ+6CM6u//cPjOpP5/rvZonEJ53oLhaqeHdQXNPWYgMIVmU5pd+SeYHTcyJqM+EyGEIp12I+hcIiGAE0GgF9TSn886YshDNAQQijKPGhf1mhvNLxV/1b56Z7TC12iyzy2XsfpXItTF196ofiFC7MTZ9vD3d5gxNaq5Rr3Z7GdNTnMQEM2Y2/NIrJfHXyM6Gah76oR7M260HM5oKbylBbzzsVXmfx5vUraXKuSONMdvElBvJNFhanZ3VbReL5/vSwq2pEKAkpmsfnc8q/nf6lPUE3b3UwnyuOwq068+ZvVbVcuLaeUjvwBUml1jnmbd+wv3/HkDZzW+XAUj8R797Stlm7ZVwTvKEs0rE1dmbZHvSS1EQCfyRBCsQ/7MRQO0RCg9QDA25TSv5v0xRAGaAghFGUeti8TFZF82Phh4b7WfYuaHE1F441KKzAV3NqWu63mmcJnbvEMH751Fe5F9hO2pSqFazmRzfRczWasTdmMpz8FAMBn5aDnshk8PSH5GjC8ApYiNyQWu4HVsX6qTbRSXZKVGtKtiinbqlgKrErK7EE5fb4dVGFY7y0KOft92tMftazrbnQsgqCdEDkV4y5alnJk4facyww7/tpTaFTr1Uspp/705g5Hb09ecHlCRlbjqhe+sy+zpCys05ynE7HRkeI70L5Tsflzg8vZDO117c7c/WduXfwWAD6TIYRiF363ROEQDQHa+wCQSyldPumLIQzQEEIoyoSjL6sbrDO/3fB2xbnecxUeyWMYW6/n9I5lacsuvljy4sXihGLnZNr7oIijQ8M17stiO2qySd/NHO/N7py+i1qVYA/d9JOwClgKPZBY6gJee/cMVAqEgtrkoLpEq6JLtVJT5qBizrMqySVWOW2+lZqzvbE+eq31mjXtwu62bc4BISQA0ieoOsu3Ze2bUZHcHqm2xQqqKHD+k/fnXTt6YLMkCPrhcsIwckHFkqrKl75XrdbpcbOGh0AVSnxHOhf4L/ZvBolqRipYInTl+3wD2ZJn5Sp8JkMIxSb8bonCIRoCtCIAOAsArwHAf6OUivc5BX0FDNAQQii6hLMv80k+5r3G94oPtB1Y1OJsmTm2ngChhebC+h15O2qemvFUE8dwj35UkyIRpulEsvvtN5fZTzbOkuyiNriaMBTMMzyQVOoClWHiA84oqxaoNnGQ6pKt1JhuVUw5VsUywyqnzh5U0uY6YCrWhZsCVKFQe6hz9o2TPZtFn2wKrkvJN9QuezrvsCVdN23Xjpso10C/5vgff72+48a1xcHlar3BWrHza3vnbtreGKm2xTq536f37m7dLHd45gWXew2ymLR15u/5koTuSLUNIYQeFn63ROEQDQHa7wGgEABWAkAPANQCQDcAjL04pZR+d9I3jHMYoCGEUHSZqr7scv9ly7u33l1Y01tT7pN9urH1JpXJuiJtxYWXSl+6nG/Md4fz3hNFRZE4//DHWa5PP1mt9PWHLKYPBKihUGtNLhe9Gq3NCILD9LB7U1LCKKA22xVdkpXqU63UmDmoJORbleRSq5yxwEoN6VG3zpjPJfJnPmpZ1VZnXUkVYIfLGZb4C8oTjy95Mu8sr2bjckprODXVnMk488HbO12DA5nB5cm5+TcqX/r+/pT8GY5ItS3WCRf6C4QTXTuoRw7eTIRyM41ntDtzv2QMPG7ggBCKGfjdEoVDNARoE/0/xpRSyt7/sOkNAzSEEIouU92XuUU3+86td2Ydbju8sN3dnj+2ngFGKbGU3Hgs/7Gax/Mfb2YiMA2SKgq43nmn2PXBh6vl7u6ssfX8rFnXTS8/d8pQqBeYvrpExnrHwjg6LMTVbSHefgvx2ixEEfnxrj2h+3NaL9UmDlJ9slUxZFipOceqJM60yqlzB5XU2U6IxEi9IT13nJZzn7ZstnZ6S4PL1XpuYO76jP1lq9NxJNV9yJJEzrz/1sKbJ49tkEVxZOohw3Ji4dIVX6564TtnOJU6JkYoRhvqkznv3raVwk3rWiZ4GUY141AvT9urWZlWH7nWIYTQxOF3SxQO0RCg5d3/qABKacukbxjnMEBDCKHo8ij7snM955Lfa3xv4aW+SwsERdCMrU9QJQysylhV83Lpy7VZ+izvVLdnLKoo4P7o4wLXe39aLbW25Y+t5wsLG4wvv3RCt3Vrx5gTgRloMDA9Vy3MwC0LY2+1MM6uROLpsxDvoIX4XXetCzfhNhFWppoEGx0avaaYsgdpQr5VTpllVdIXWKku6ZEsLXHjZM/Mq0c6t/pcUnJweUK6tmHJk7kH0meacIH8+7B2dehPvPnbjT2N9QuCy7Umc9/irz2zu7RyXWuEmhbzag6e+lFmgzpBb2dVweVMqqZeuyN3L5epw5F+CKGoht8tUThEPEBD4YUBGkIIRZdI9GUOv4N7q/6t2Uc7ji7q8nRlj61nCSuXWcquPVHwxIWtuVvbIjEqzb1nT45z11uVUlNT0dg6Li+vyfCtb1Xpn3yimTATaJt3kGe7Liew/TcSia15aPRaz+joNSo/9Ah2yuvdgdFrKVbFmGlVzDlWJbHQqqTNG1SSS1zh3NhA8svMuU9blzRdGlirSHRkO1NCQM4uSzi97On8Kq0Rp83dz82qY7nnP/1gh9duSw0uTyssrl398g8OWTKyIjKlOZZVV1f/ACjAQn/BGaGmfwuIyui0cYaI/FzLUe3W7HOEY3CkH0IoKuF3SxQOGKDFGQzQEEIoukS6L6vqqkr7sPHDhbUDtfNFRVSNrU/SJPWuyVhT81LJS1dSdamPfK0wz5EjGc4//LFSrK+fNbaOzcxsM3zzmycMzz3bOKEgbTyKRJi+G0a295qFGbhlIY62odFr/YHRa6LnrvXjJooynEQ1FivVJVmpIc2qmLIHlYQCq5JSZpUzFthAbXqo3SBtPV79mY+aN/TecZUHl/Nqxlm6Mu3Qgi1ZVwnzsCvGTQ+SX2BOvvOHpY1nqtcpsjQy/ZfleV/JqrVHlj/z0gWWi9zU3VgT3I8pVkHr2d26UW51VwQfQ4x8t2ZD5m7VbEvH+FdBCKHIifTzGIoPGKDFGQzQEEIoukRLXzboG1S9Wf/mnC87v1zU5+3LGFvPEU6ckzTn6tdnfL1mffb6rkfdPt+p0ymO3/12lf/a9blAaUg6xKamdumf+lqV8eWXb5Iwhx7E1a1mu2sTmP6biYyt2UIcHRbi7rUQz4CFCPYEQpWHHmJGVUYn1SUOKrpUKzVmWpWEXKuSWGSV0+cPUkuB536j1+5cHsi8uLd9u9vqD1k3zpCoblu4M3tv3txE3A3xPvpa7piqdv12S3/LnbLgcn1iUueybzy/Z+bi5Z2RalssGa8f89cO5PqOde2kbikl+Fgu33Be+1juEcakirrNOxBC01e0PI+h2IYBWpzBAA0hhKJLNPZlR9qPZH50+6NF1wavzZGodNfi/Kna1K61mWtrXi59+apFbXkka4ANEy5dstj//der/JcvLwAlNLxiEhP79I8/XmX63nevE/UjWBRe8jFM73UT23vNwgzethBHu4VxdQfWXvMMWoh89zpzE0UZ3k+1iVaqSw6MXjPnDCqWAquSMtsqp82zg0ovAwAoMiWX9rfPqz/Vu0nyK/rga6TNNF5Y/nT+UVOKxjPZjxrvrh7eN/Pi7k+2Cy5nYnB55qw559e8/IOjxuQUX6TaFgvu1Y9Rv8x697UvF+usa0ABbqRCxbjUS1P3qSvT6gjB0ZIIociLxucxFHswQIszGKAhhFB0iea+rNfTq36z/s15JzpPLBoQBlLH1vMML8xPmn/lm4XfrFmVsar3UbbNX1dnsv/qVyuE8zULQZa54DrGZLLqtm8/afrRX9QyOp38KNsVjNjbNGx3rYUZqE9kbC0W4uy0MEOj10BwmAnQh0oOKBAKapOD6pIGFX1g9JpHO9NZfaO8oLlZO5dSGAkWWY74Zi5KPrb48dwalsf1p76K4HFzVW/9buWdC+cqqaKMrIvHqdXu2es2H1zy1LNXHnqqcJy7Xz8mtbks3r1t25V+oTC4nEnWNGq35+zhcvS2R9BMhBC6p2h+HkOxAwO0OEAIMQKAcejt/oyMjJT6+vpfR7JN4YCdHEIoHsRCX6ZQBfa37s/59M6ni25Yb8yWx1l0P0OX0bYhe0PNC8Uv1JlUD7e218MQm5r09tdeW+47fWYxiKFruBGDwaHbtKna/JNXLzKmR9emCfG7Wbbnipnpu25hrHcsjKPdQpzdo2uvjbMe3URYpUyocv5AaRPmhyQ9ep1oK1/JHp25Iq+B6lOFcG5uEG+6Gm5Yqt56Y7utqyMk7DGlpLWs+NbLe3LnlvdFqm3RaiL9GKUUhKru2cLZvq3gV0Z3xmVA4sssx7Xbc04RDHkRQhESC89jKPphgBYHCCE/A4B/HH5vMBhcnZ2dv4hci8IDOzmEUDyItb6s3dWu3VW/a/7JrpOLbH5b0th6NaP2laeUX36u6LmaxamLBx5Vu6SODq39l68t8VVVLaNC6NRJotW6tevWnTb/5U/Os8nJ0b9LJVWAWO/o2O7aRGbwloWxtQZGr3l6LcQzmEj8TuNXnk4BWoRFUOX8Djjk0OXsCtRnYanxHSVRO+ilvM4DKp2H8gYvVRs9VG3ygMbspRqLh+qSPYo+xUsN6R7FnOOhxkwfsKpp82BHFQUu7f101pUDe7b6vR7TcDkhRMmZW35m9bd/cFxnMkf/n6VH5EH6McXhV3u/aN0gNbsWB5cTPdenWZf5hWp+YttUtRMhhO4l1p7HUHTCAC0O4Ag0hBCKXrHalylUgc/ufJb/RfMXixpsDbMUuHsx/Wx9dvOmnE01zxc/f1PHPZqplHJ/v8r+y9cWeY8eXUG93pA1wYha7dOsWnXW/Jc/OctlZXkfRXumhODg2K7LCUxfnYWx3bEwjvZE4uoJbGzgs1qIInEAADLl4LL7cahxfx0kqh05nYAMs7SHYYnhfdCz1gndkgIAcJpA6MbrvVSl94DK4KVqk4dqzB6qsXipLikQvBnSvdSU5VFMOd7htdpilcdhV5148zer265cWk4pHfkzrtLqHPO27Nhfvv3JGzit8+H6Mf91a5bvSOdO6hTTg8vZXP1F3c7cw4xFHbt/RxFCMSdWn8dQdMEALc7gGmgIIRRd4qEvu+O4o99Vv6v8VPephU7RmTC2Xstq3QtTF15+vuj5C/OT508ssZkkxeHg7K+9XuE5eHAldblMIZU879csW3be/JNXT/MzZrgfRXseGaoA019vYHquJDKDjRbG3mZx9btTzrRW5je5ynXBh3LEBwt0n0O5/lNQMVOTVVBW5QdO66EqvYfyei+oDJ5A6GbyUk2Ch2qTPFSX7KWGVI9iyPQqCbke0CY+0o0pJqL16qWUU+++ucPR15MXXG7JzG5c9cJ39mYUz3okf66j1cP2Y1RSGO/+9qXiVes6UOjohiU841EvSj6gXpdxBTcZQAg9CvHwPIYiDwO0OIMBGkIIRZd46sskRSIfN308Y0/LnkWN9sYSOs4i+XnGvNtbcrbUPFf0XIOanfqdMhWPh3X8+6/nefburVTsdktIJctK6kWLLpp//KNqVVmZY6rbEmktVwYzLu3v2OTo8xUEl/OcJMzJu91Ynnm2jxcHtURwasHv0hG/S0dEjxZEr47IgvpRtZMynAScdmiKqd5DVaNTTKkmwUu1iYHgTZ/qpcaMwBRTQ/qUr+tGFQXOffzevOvHDm6WBGFkdCNhGLmgYklV5Uvfq1br9NG11t4jMtl+TOp0m7172rYpvb6S4HImUX1Huy17D5dvfGTTwRFC01M8PY+hyMEALc5ggIYQQtElXvuyBluD8a36tyrO9JypcEtu09h6Pad3LkpddHlj9sabazLXdHEMN6UPDVQQGMcbb8x2f/Z5pTI4mBJSyTCKav78y+Yf/cVJdXl5XI8kogqFm9U9M6992b3J6xDTguvUOs5asjL1yPyNmdcJMyb7FL0M42jTEkeHjnH1aIm7V0e8Azris2mJz6YDwaEjgktL/C4diJ5A8Cb5tA+70+gDfy7CKGOnmFK1yQNqo5eqzR6qtXipLtmj6FI81JDuVczZHmrK9j7Mum7O/j7N8Td/s77zxrWQNbzUeoO14rGn9szduO12+D5ZbAhXP+ar7ikVTvdsA0EZ7TMIyHxpQpV2R85JomZjekowQih6xevzGHq0MECLMxigIYRQdIn3vkyQBeaDxg+K9rftX3jHcadovGN0nM5VnFDcsCxtWcNj+Y81WdSWKZvCRyWJOHftKnF/9PFqubc3dIV9Qqhq9uxrpu9/v0qzYnlc77SoyJRc2t8+99aZvvV+n2wOrtMnqDrnbsg4VLwstXlyN5EIcXRqGEe7lri6dcTdo2M8A1ris+rAZ9cSn11H/E4d8bu1ILp0RPTqQPRqyTi7vE6FoXXdfIHQTeehKr0XVEMj3dQmL9Vahka6JXsVfZqHmrI9ijl3ZF232+dPZ5758J0d7sGBzODrJucV1FW+9P0DKXkFcT+qcVg4+zHFJaq8u1vXSbedSwFgJIAlOnZAvSZjt7oiuXmy90AIobHi/XkMPRoYoMUZDNAQQii6TKe+7NrAtYS3G96uON93vsIrhS7wP4wlrJxryL1TnlJevz13+62yxDL7VLSFKgq43nu/0PX++6vlzs6csfV8SckN4yvfrtJt2NA1FfePFn6vxJ3/vHVJc+1gpSzSkN1LE9K0t8q3Zx/OKUvofWQNogoQd5+KONp1jLMrMNLN06cj3sFA4Oaz6YjfqQW/W0f8bi0R3ToQvTqiiPz9Lx6mJjK8PxC46bwyp/dc6rFozzRr0kQZRoI/lmWkWfMKa5ZvXX+RNSQKVG0WqTZBBJVBmuqpppEwFf2YeNOW7j3U8Rh1iCEBJZutq9XuzD3IJmk84boXQghNp+cxNHUwQIszGKAhhFB0mY59mU/yMX9q/FPJ6e7TpY32xiKf7NPe69hkTXLP7MTZDWsy1zRsyN7QwTN8WB8uqKKA+7PP81zvvrNaam6ZMbaemzGj0fjCCyf0j+1sC+d9o41rUNCc+7SlsqPevpQqEDICLCXfcHnx47nHknP00TuiSnBwjL1VSxydOsbdoyXuPh3xDg5NMbXriODQgd+lJaJbR/xuHYgeLZEFzf0vPDEeiYcTvQVw3R4yKxaSVG5Yl94EeXobAABQIBQYTgSWF4FViZThR1+zaj+wKhE4lUg5jQisOvCT04iU1/qB04qU14mg0ouU14tUpRdBZRSp2uSnGpMYCOkSReC18qMO6aaqH6OyQnwHOxb5awc3gExH1+HjiFdVkXxIsyHzMmEIfuFACE3adHweQ+GHAVqcwQANIYSiy3Tvy0RFJAfbDmaf6DxRfH3wesmgMGZ9siAaVuMpTihuWJq6tGFn/s6mFG2KEM62eA4cyHK++WaleKuxZGwdl5PTbHjuuRP6p5+6Q5j4G0E0rL/VZT7/Rdu6vmbX/OBywoCUVZpwdsmTuScNFrUvUu0LK8nHMPY2LXF2aomrW8e4+7TE0x8Y5eaza0GwBzZS8Lu0Q+u6BaaYfsW6bu0eExzuLoQBIXSAZaGxH9amNoFZFdY/suOiQCiwvAiBcM5PWV4EZiiYY1UisOpAYMdp/MCpRcpqROC1gbCOHwrpeL2fqgIhHVWZRFAbRao2iVSTIFJtoh94bcgGIFPdj8k9XqN3d+tWudtbFlzOJKhaNVuyd/OFprieco0QmnrT/XkMhQcGaHEGAzSEEIou2JeFujJwJWF/6/7iy/2Xi1tdrfkKVcZdD4sBRskx5DTPT57fsC13W8P85PlhW/zfe/x4muON31eKN27MHlvHpqd3GL75jROG559viOcgre26Ne3ivvaN9h5fYXA5yzPeggWJVYsezz2n0kzDBd0ViRBXj5qxt+qIq3toimm/jnitWuKz6Yjg0Cpep66mmaTXdBgtojK6GwNLFFic1A5LktqAZ6Z8A9opRQmjBEbSqURgeNFNdEaZUVGjirQHQjqVSFm1CJw6MIIuMJLOT3mtODySjqr0IvB6kaoMIlUb/aA2DYV0QyPpOM1dvyThbG+hcLJnB/XJCSOFBBSuyHxKuyPnBKPjpmz9RIRQfMPnMRQOGKDFGQzQEEIoumBfdm/9vn7V7ubdM870nCm5ZbtV5JXHXzcNACBRndg3yzKrYU3mmoZNOZva1ax60gmF79y5JMdvfrvKf+XKfKCho46YlOQe/RNPVpm+80od4cM7rTSa1J/uLbh6pHOTxy6GbLig0rK24uWpRxdszrrGsDiFbjwD7a2Gk2+/sbGnsSFkNJ9Kq3XOr1x2fOHyeU3E7+SJ38UTv4sHv0tFRA9PRA8PoocnopcHyccTSeBB8qpAFngi+XmQBZ7Ifh5kPw+yyBPZrwJF5EEWeVBEnlAlLpLdQEg3NIqOCUxzBZYXFWKQHO4nTB7XikQImm3McG6fMev8TU1yay9leRkYXgGGkymrkoHlFWB4GVheCbxXycCqFMqqZWBVMmVVCnAaGTi1TFm1ArxGppxGBk6jUF4nA6eRH2bHVoRQ7MDnMRQOGKDFGQzQEEIoumBfNjGSIpFjHccyj3YcLb4+eL2439effq9j1azaW2gqbFyStqT+sfzHbqfr0ic15VC4cjXB8e+/WilcuFgOSuiIOMZiGdDt3FFl+sEPrjKau0fMxANFpqT2UMfs+lO9G/zeoJE/AKAz891z1mYcKl2V1hSh5kW9W2dOZp/7+L1tY3frNKWktSz75gv78ssX9YT1hqKXIT4rT3x2nggOHnx21XBIR/yuoXDOw4Pk5YnoVQVCOh8Pko8HSeCJLPAg+3kiCyqQxaHXgZ9DQZ3qq6axPiqikgdW8cfgp6EDRbVMNZj53wJH+sN6PwoAQFgZCCMDwypAGBkIKwPDKjRQJgNhlaGyoXJWBoYLlDOB15RhFSBc4BoMP1rGBl4Dwyk0EPYFXrMqeTj8A1YlB+pUCrC8TDm1DKw6UB4I+RTKqWXgtDLl1ApwGnkoAFSAVSnxuIEFQuGCz2MoHDBAizMYoCGEUHTBvuzh3LDeMO1t2Vt8qf9ScYuzpUCmMjfecQSIkm3Ibp2XNK9hS86WhkWpiwYe9p7+hgaj47XXl/vOnVsEkhSy6yMxGm26rVurzT/6i8uM0Sg97D2imSjIbM0XbYuaLg6skUUlZOMHU6qmqXxr1qG8uYndkWpfNFNkmZz96E/zbxw/vFESQhZIo5mlsy9UvvS9o+bUdG/EGvigRC9DvIMq4rPxRHDwl+san2UVgczP4PcSv5sH0a0KjKTz8kTy8iD6eCIPBXSSTxUYPTc0kk7y86AMh3TiyGi6iYR0lBJwy5vBLn0bKBhHygl4wcS9Cwb2cyBk+s00vhcaCACV0RAwEAhSJij4C0zPlYGwgfJAMCgDwynAsDIdCf+GfgJDgWEUIAylI69ZCoTQQKDI0KF7UsqwI68Dxwy9ZlhKAyEjHaoLeU2HXzNc4NqB9gaux3BD1+AoMJxCg14HfrKUMpwCDB+4BssrlOEoEI4CGyinLB+4LstTDBqnL3weQ+GAAVqcwQANIYSiC/Zlk2cX7PwXLV8UnO4+Xdxgayh2S27jvY5NUCUMzLLMaliVsaphW+62Vs046yzdj9jaqrP/2y+X+U6dWgJ+vzq4juh0Lu3GjdXmn7x6gbVY4nI9JrfNrz73acvK9hv25VShIcFlcq7+yuLHc4+l5BlsEWpeVHMNDqir3vrdmvZrtUsppSPf0lle5Steufro8mdevMDxqpgbyRj2fowqAKKXJd5Bngh2nvgcPPE7eRAcKuJ380R08+B3j4ykUzysztm6qFRwzAjZBpXlB3zmxD0dak29D6jMgCKxoMgsGX5NFRYUmQEqsaAoQ+VyoDz0NRvxIXfokaJAhgI+QgEIBUICQd1XvKbDrwkJBItk6BqBaw0dG3hNYThIJKNBIgS9DiqnI2UMDTSNwNC9KQCBkTYOvyaEBu4/8jkCX8pHyu91DoGQexCG3nV+oJ2hrwGGPx8E/S4g6HcU9JoJan/oazq2fDiIHW4XIaPlwfcIhLVB7WJHPyNhKb2rfDjgZWDk90oInL/Z9iwAgUWzZ74TqAv5ncDo5wAAIEDHLR8+D2D0GkOvYeiegfdDnxeG2zD0Jy/0GBjvmJDjUbTBAC3OYICGEELRBfuy8FKoAsc7j2ccbT9afHXwanGvtzfzXseqGJUw0zyzcVHKoobH8h+7lW3IfqARQFJ3t8b+y18u9h0/sZz6fCEjsohG49GsWXPG/Jc/OcelpU391osRMNjhNp7/vG1tT5OzHIa+RQEAEAJyZon53JIncquMyZrYGVX1CLVfv5J86r1dW21dHTODy3XmhN6Fj39936w1G5oj1LSHEi39mP/yQJ7vy64d1C2F7ObLZutqtTtyD7HJGvdDX1z2E5B8LBG9DEgCSyQPC5LAEFlgQfSxIAsMkf0sSAJLZD8Dsp8FWWCJLDKgiGzgvcgQRWRBFllQRIYo0tBriQFFYokiBgI9RWKH/mGIIgdej4R+8lCZHBTyyaPlI6HgcPinMKDIbDRMu0UIhd9QQjcavJCg1xMpH7nEUBg6+p/z0QDv4cvHXBvgq8opAPU99u/vyrkrH3q2QKRhgBZnMEBDCKHogn3Z1Gq0Nxr2tOwputB3oaTZ0TxDoqFTL4cRIDRDn9E2L3Few+aczQ1L0pb0MRP8P7zywIDK/trrC71HjqygHo8hpFKlErQrV541/eTVs3xurmfynyj6dNy0p1zY07bR1u0tDi5nOSLkzUusWvxE7lm1jovLaa2TQRUFag/sLq7d/8VWwe2yBNcl5xXUrXz+lYNpM4rskWrfg4imfoyKCuPd375MvGZdCwod/fvOEZ9qftIRzabMC4Rlpt+XFEUiIHoZInqGQj4fA6KXJbLAgiQwIPlYIvtZkP0MkYRA4Kf4GSL52UAAGAgCiewPBH6ynwWqMESRCVCFAaqQwD8yA4pCABQCisIQOvoahl9TJXAMVRgAhRA69JrSoWsEvYbha1NChstBIUDpSHngGDp63lA9GbkGDbpe8HlD5TB6LgaNCEWW52tv/kqesaE30u14WBigxRkM0BBCKLpgX/bouEQXt6dlT351V3XxTdvNEpfoMt3rWBNvspVaSutXZqxs2J67vUXP6++7kJLidHL213+1wHPgwCrqdJpDKjlO1CxdWmN+9dVTfFGhKwwfJ+rcOteXe+Vw52a31Z8VXM5rWEfRkuRj5duya1luGgYX9yF43Fz1O39Y1lRzdrUijwa8hGGkgoolJytf/G61Wm+I6gAyGvsxuctj8uxt26J0e8uCy4mJ79RsyNyjKrN0RqptKMopEgFZJKBIBBSRIYHXDCgyAUUkRBGHXksEFIkhVCYgS0PHSASoTEhgJCEBKpOhUYVDQeHwdWRmqI4QKgdCPUUOBJBBr4cCyqGATx4O/mA0EAQAoEPXpjBUNnTMcFAIQ+V06JiR0HCojhICCgmMAwoth5HysdeCwLUC1xw5joy8D66jAIEJpWPOCWrLyP2CyyHwuQC+4lpjrgs06HMMh6EKGTlnzPkk6Hwf5YyEUlAT0T3UpuF7DN9n9PXDlQeFs0FBbcgu319dPh3SXc/Xdr0uz1jfF+l2PCwM0OIMBmgIIRRdsC+LDIUqUN1dnXak/Ujx1YGrxV2erux7HcszvL/AVHB7Ucqihp35O2/lG/O/chqY4vMxjl//ep5n955Vis2WFFLJsrK6ouKi6cc/qlbPmRMTo4seBFUoXDnSNetmdc9GwS0lBtdpjXxv2Zr0w2WVabcIMx2+BjyY/tZm48m339jU29Q4N7hcpdPb527cdrBi59fqCBOd695Ecz8mnOstFE72bKdeOWSUH5tvqNHtyD3CJKgmtUsvQig+RHM/dheqDP8koa/p3eWBUHSknHzVMaMhaVCAp0BQqApBoWZIOYSUB9+TEoCg10PlZDQEDWm7nDbXDmpjzO7+ggFanMEADSGEogv2ZdGh2dms3928u/BC34XiJkdToaiIqnsdm65Lb5+bOLdhY87GhpXpK3vuNdWTiiJx/P73Ze5PP6tU+vtDFjcHhiiqefOumH7wg5OaxYtjdq2Pe5H8MnNhT3vF7Zr+tZJfCd51EozJ6uYFW7IOFSxIwhFA46ivPp5T8+kH29zWwYzgcnNaevOyb764L29+RdRNbYn2foz6ZM67t22leNNWCRTYkQqe8agWJh/UrM+oJQRDXYSms2jvx1BswAAtzmCAhhBC0QX7sujjkTzs3pa9edVd1cU3bDeKHX6H5V7HGniDoyShpGFl+sr6nfk7mw383VPtqKKA6+23i10f/nm13N0dMr0RCKH8rFnXTd/7bpW2sjLqgpHJ8jj8qvOfta5ou25bocg0ZP25pGz99UWP5RxJm2G0Rqp90UqWJHL2w3fKb1Yd2yD5Bd1IBSE0a9ac85Uvfu9LU0pq1GzQECv9mNTqsnj3tW1X+oXC4HImQdWq2Zy1hy8yx93fQYTQxMRKP4aiGwZocQYDNIQQii7Yl0U3hSpwvvd88sG2gyVXBq4Ud7o7c+g9FpnmCCfmG/ObKlIqGnbm72woNIeudUYVBdwf/nmG6/33Vktt7Xljz+eLiuqN3375hG7z5rgbmWXt9hjOf9a6pvu2c2Fg/ZkAQkBJLzLVLHki97g5VRuXmyxMhrO/T1P11u/WttddXRK8Hg6nUnlLVq49uuyZFy+wHBfxB+5Y6scopSBU98wSzvRuBUEJXgeRcoWm09odOccZA++PWAMRQhERS/0Yil4YoMUZDNAQQii6YF8WWzrcHdov7nxReL7vfPFt++0iv+JX3+vYVG1q15zEOfXrs9Y3rM1a2xU81dP9+Re5zrffrpTu3Ckcex6Xn3/b+PzzVfonn2iZoo8RMV237EkXdrdvGOz0zAouZ1jiz51rqV7yRO5pjYEXI9W+aNV69VLK6ffe2mbv6SoILtclWLoXPfGNfaWV61oj1TaA2OzHFJeo8u5tWy01OpYDhdG/nGrGoV6aul+9Ku0GTutEaPqIxX4MRR8M0OIMBmgIIRRdsC+LXT7Jx+xv2597sutkcd1gXbHNP2bDgCB6Tu8sTii+tSxtWcPj+Y83mdVmEQDAc/hwhvMPf1wtNjSUjj2HzcpqNTzzzAnDM9+8Ha2Lxz+s2xf6s2sPdm5yDQq5weW8mnHNXJxybOH27Msszyj3On86oooCl/Z9Vnr1wJ4tgsedEFyXkj/z2qoXvnMoJX+GIxJti+V+TGx0pPgOtu9QrP6QUaFMsvq2dmvOXi7PMBiptiGEHp1Y7sdQ9MAALc5ggIYQQtEF+7L4UdNbk3Sw7WBR7UBtcburPY8CHTf1Ygkr5Rpz75QnlzfsyNvRMMsyy+E9eTLV+bs3Vvnr6uaEbl0PwKamdum//vQJ44sv1pMomK4XLlShcP14d0ndie6NPpeUHFynMXD9syrTD89Zm16PO3aGEtwu7uTbv19x5+K5SkWWueFyhmXFgoVLq1a98J3Tap3+rrX4plKs92OUUhCOdc0Tavo3gxi06QUBmS9NOKnZln2S0XKP9HeKEHq0Yr0fQ9EBA7Q4gwEaQghFF+zL4lO3p1uzu3n3zLO9Z4sb7Y1Fgixo73Vssia5Z3bi7Pq1mWsbKnsTva7f/G6Vv7Z2PihKSADHJCX26Z944oTpe9+7Tng+bh6yZFFhLu5tX9B4vm+dKCiG4DpDorpt/ubMgzMXJrdHqn3RqvdOo7n6nT9s6mtumh1crtbrbfM27zywYNvjNx/VyMV46ccUu1/j3d26Xmp2LQ4uJ1rWql6Ztle9NLUxUm1DCE2teOnHUGRhgBZnMEBDCKHogn1Z/BMVkRxsO5h9vPN4Sd1gXfGgMJhyr2O1rNZdlFB0a71Y1L7qk1sZyoXa+RA0yggAgDGbB3U7dpw0/fAHVxidTp76T/Bo+Fwif+6z1mWtV62rFJmqgusSM3U3Fu7MPpJRZB6IVPui1Y0TR/MufPbhNo/dlhZcbk7PbFrx7Iv7c+Ys6JvqNsRbPybesGV4D3fspA4xM7icSdPe0G7P2c9l6iIyVRYhNHXirR9DkYEBWpzBAA0hhKIL9mXTT21/rWV/2/6iy/2Xi9ucbQUKKOMOE2III8+WM9q+VQXKjPMdOUSU+OB6YjA4dFs2nzT/+MeXGJMpbqaX2Xu9uvOfta7uuuVYTIMXdydA02cYLyx+Mve4JV3n+opLTDuS6GfOfPB2RX318fWy3z862pEQmj173tnVL37vuCEp2TdV94/HfozKCvEd6lzorx3YABLVjFQwRORnJ3yp3ZZzhuA6fQjFjXjsx9CjhwFanMEADSGEogv2ZdNbv69f9UXzFzPP9pwtvmW7VeSVvfrxjjN4KHzzgtqz/rygVgkyG1xHtFq3dsOGU+afvFrDJiX5H03Lp15Pk9NS80XbhoF2d8gURYYlYk5ZwqnFT+ae0plUcfN5w8HR16ut2vXbdR03ri0CgJHF4zi12lNauf7I0q9/6xI7BevoxXM/Jvf79N49bRvldveC4HKi5/o0azL2qMqT4m63XISmo3jux9CjgwFanMEADSGEogv2ZWiYpEjkSPuRzC87vyy+Pni9pN/Xnzb2GK1AYfNFCo+dU8DkCa0jarVXs7ryrPknPznLZWZO2WijR+3O5YHMywc6Njn7hfzgck7FuGcsTDq+aGfOBU7F4kigIM2XL6Sd+eDtrY7e7vzgcr0lsWvx157ZV7xidVs47zcd+jF/7UCu71jXDuqWUoPL2SzdFe2O3INsisYdqbYhhCZvOvRjaOphgBZnMEBDCKHogn0Zupcb1humvS17iy/2XyxudbbOkOnoyDOVSGHDZQqPn1UgyTnmRJ73a5YvP2f+yU/O8AX5cfGlnioUbpzsKbz+Zfcmr1MMCTDUem6wdGXqkXkbMutwx85RVFHg4u6Py64e2rfF7/WYgutSZxRdqXzxu4eTcvLG/ul5KNOlH6OiwngPtC8Vr1nXQvA6fSwRVPMTj2g2Z9UQlsEvQAjFoOnSj6GpNZkAjbv/IQghhBBCaDyzLLMcsyyzagCgxipY+d3Nu2ec6TlTXG+rL/aAx7BvMYFD5QTWXKPwxGkF0m1DJ4qiynfixCrPqerl6kULayw/+ctqVUlJWIKSSCEMgbLV6Y0lK1JvX9rfMf/W2b51ok82AQAIbimx9mDnNxrP93fM25B5qGhpCk6pAwDCMLDw8a/XzV6/5dbJt99Yeefi+ZVUUTgAgN6mW/M++X//y6wZi5edWPX8d06rtNq42YxiKhGeUXQ7c0/LC5Ove/e2bZG7vWUAACBTtf/iwHbxlqNcsyFzj2q2pSPCTUUIIRRjcARaFMIRaAghFF2wL0MPSlIkcqLzRPrRjqPF1wavFfd6ezMZhcLKOgpfO6VA9ph9KmWW0L55Oc3p3/vxwewl67sj0+rwEjwSd/7z1qUttYOVskTVwXUJ6dqGih3Zh7NLE6Z898lY0nO7IaH6nT9s7m9tnhVcrtYbrPO3PrZ//padDYQZdz+L+5qu/Zhwvm+mUNW9nXrlxOByNs9Qo9uRc5SxqL2RahtC6MFM134MhRdO4YwzGKAhhFB0wb4MTdYt2y3jnpY9RRf7Lxa32O/MqLgp8k+dUqCgJ/Q4mQDUFfL+m4szurzL590qTZ3TuTxteVeGPiNm10tzDgjac5+2VHbW25dQCsGbK9DUAsPlJU/kHkvM0sf06Ltwq/vyUMGFzz/a5nXYU4LLEzKyGlc+9/L+rLK5A/c6916mcz9GfTLn3de2QrxpqwQlaAYOz3hUFUmHNBsyLxOCU4sRinbTuR9D4YMBWpzBAA0hhKIL9mUonBx+B7e3ZW/+qa7qYvW5a7O3nnTrSsaZTDZoAPhyHoFj8xjwpppt6fr0rnxjfmeZpaxradrSrjxjnufus6JXX4vLXPNF6/q+Fve84HLCECl7lvnMkifzTuoTVEKk2hdtJNHPnH5v16KGUyfWyaKoGS4nhCjZc+afXf3S94/rLYkT/n1hPwYgtbks3n3t25Q+X1FwOZOgatVsztrDF5l7I9U2hND9YT+GwgEDtDhACDECgHHo7f6MjIyU+vr6X0eyTeGAnRxCKB5gX4amikIVqO48mXZrzztLCw5dLytq9qvHO+5aHoEj8wmcKyEgcoGRMnpO78jQZXTlGnO7Si2lXUtSl3QVmgudDHm4KX6PSus1a/qlfe0b7b2+mcHlLM94Z5QnHl/4WG6NSsPiel9D7D1duqpdv1vfWV8X8qDPqzXu0jUbDi99+rlahmXv+0CP/VgApRSE6p5S4UzvNhCU4I0bKDfTeEa7M/dLxsD7I9ZAhNA9YT+GwgEDtDhACPkZAPzj8HuDweDq7Oz8ReRaFB7YySGE4gH2ZehRGTxzIrXr/V0rtBdvlKo84l1hmksDUDWbwNH5DLSk3T3lTMtp3ena9K5cY25XcUJx1+KUxV1liWW2aAzVblb3zLh2rGuTxy6mB5ertKytZEXqkfmbsq4zLMEH1SF3LpxLP/Pnd7Y5+3pzg8sNickdi596Zl/RslVfuSg+9mOhFLfEe/e0rpEaHcuBwuhfEBXjVC9N3a+uTKvDaZ0IRRfsx1A4YIAWB3AEGkIIRS/sy9Cjpvh8jOu994o8+w9USE1NRUDpXd/kG9MBji5goHoWAa/m3l/01Yzal6ZL68ox5HQWJxR3VaRUdM1Pmm/lGC7iD4GKTMnlgx1zGk73rvd75YTgOp2Z75q7PvNQyYrUOxFqXtShigI1n30459rRA5tFr9cYXJdWWFxb+eL3Didm5bjGOxf7sfGJtx0pvgPt2xWrPz+4nElS39Zuzd7L5RsHI9Q0hNAY2I+hcMAALc7gGmgIIRRdsC9DkeSvrzc633p7gXD6dLnicFjG1kscUa7M0nr3LJBUV7NkHiYwaoZneH+qNrUrx5DTVWgu7CpPLu+qSKkYULNqZUo+xH34fTJb83nr4juXB1fLoqINrjOnam6Xb8s+lDvH0nOv86cbr9PBV+36XWVL7YUVVFFGNmZgOM5fuGTF8ZXfeuUsr9GETIPFfuzeKKUgfNk1V6jp3wJ+RT9SQUDmSszV2u05VYyWkyLYRIQQYD+GwgMDtDiDARpCCEUX7MtQNKCSRNyffpbv3r27Qrx5cxbIMjv2GDnBZGtdmtt2dLned4PvS+7x9GQIiqAZ73pjsYSVUrWp3Vn6rK5Cc2HX/OT5XYtTF/fpON0jW4/MZRU05z9rXdl+w7aMBu+WCAApeYbaxY/nHEvONdgfVXuiXfetm5bqd/+4eaCtpTS4XGMwDizY/sT+eZt3NA6XYT92f4rdr/HuaV0n3XEtBoCRJJpoWJt6Zdpe9bLUWxFsHkLTHvZjKBwwQIszGKAhhFB0wb4MRRupo0PrfHPXXG/ViYVK/0DqXQcwROELixq027ZebN5U1n9hsDa93laf0epqzej2dGf6ZJ9uIvdhCCMna5J7s/RZXTNNMzvnJc3rWpa+rNfAG6Z0NM5Au9t0/rPWdb3NrvkQHGQwIGeWmM8ufTKvypCo9k1lG2LJtSMHZlza/fE2r9ORHFxuycq5tfK5l/dnls4exH5s4sQbtgzv4Y4d1CFmBZczadqb2u3Z+7lMPYa4CEUA9mMoHDBAizMYoCGEUHTBvgxFK6oo4D18ONP98ScVwpUrc0EUVWOPIQaDQ7Nk8WXDt751ST1/vk2hCjTaG41ne85m1tvqM1qcLRndnu4Mt+Q2jnePu64HhCZpknoz9ZldBaaCrjmJc7qWpy3vSdQkhn3nwvYbttSLe9s32rq9RcHlLEd8+fMTqxY/kXtOhVPrAABA8gtM9Z/eXNJ4+uRaWRrdgIIQouTOqzitnVMxk1WpKfZjE0MVSnyHOir8lwc2gkRHR3EyROTLEo5rt2WfISrcLRahRwmfx1A4YIAWZzBAQwih6IJ9GYoFstXKO996q8x79FiF3NGRO94xXF5ek3bTxovGF164yej1IV/+7zju6M/1nsu4Yb2R0exszuh2d2c4REfCRO9vUVv6M3WZXfmm/K7ZibO7VqSt6ErVpQqT/FgAANBwti/v6uHOzW6bPzO4XKVh7UXLUo4t2JJ1heUYfKgFAGtXh/7kW2+s72q4URFczmq0StrC5Y7tL33nXxmWxd/VBMkDPp13T9smuc29ILic6Lh+zZr0PaqK5ObItAyh6Qefx1A4YIAWZzBAQwih6IJ9GYo1vrNnk13vvVcuXLi4gHq9d03XJGq1V1VefsXwzW9c1FZW9t7rOh3uDu2Z7jPpdda6jGZnc0aXuyvD5rclTbQdJpXJmqHL6Mo35neVJZZ1Lktb1p1jyPE8zGeiCoUrhzvLblb3bhQ8UshmCloT3zN7TfrhWavSGglz/00UpoOmmjMZZz98d7tzoC87uNyYlNK+5OvP7Zu5eHlnpNoWi/y1gzm+Lzt3UpcUMmWazdRd1e7IOcimasfd/RQhFD74PIbCAQO0OIMBGkIIRRfsy1CsUjwe1vWnPxV7Dh6qkJqaCsc7hk1P79CuXXPR+PLL19jk5PtOw+zz9qnP9JxJuzZ4LfOO405Gp7szwypYkynQCSVXBt5gz9BldOUZ87pKE0q7lqQt6So0F044fBAFmb2wu21h08WBNZJfCQkHTSmaOwu2ZB3Kn5/YNdHrxTOqKHD+k/fnXT92cJPo8xmC69KLSi9VvvS9I5aMLHek2hdrqKQw3v3tS8Rr1nUg09Hp0iwRVPMTj2o2Z50nLI6ERGiq4PMYCgcM0OIMBmgIIRRdsC9D8cBfV2dyvv3OAt+ZMxXU6TTfdQDHiao5c67pn3zikm7btjbCMBO+tl2w86d7TqddG7iW0eRoyuhwd2QM+AZSFVAmdBEdp3Ol69K7cg25XSUJJV2LUxd3lVpK7Qy59+keu1997rPWFe11tuWKTPnguuQc/bVFj+ccSc032ib8IeKYx2ZV7fvDb/5y8MYVA1WUkXKW44XCZSu/XPmtb5/jVGrlKy6BgsjdHqN3b9sWucs7O7icGPluzfrM3ao5lo5ItQ2heIbPYygcMECLMxigIYRQdMG+DMUTKknE/dHHBe69eyrEm/WloCjs2GOYxMR+zcqVF40vv1TL5+U91JRLt+hmz/acTa0dqM1ocjRltLvaM/p9/ekyle+633g0rMabpk3ryjHmdJUklHQuTFnYNS9pnnVsqGbt8hjOfda6tqfJWQE0aMdOAkpGken8kifzTphSNA/1GeJJdXX1DwTbIDt4rso22NFWHFynNZr6y3d+bf+cDVtvR6p9sUg43zdDqOreQb1yYnA5m2u4oNuZc4SxqL2RahtC8Qifx1A4YIAWZzBAQwih6IJ9GYpXYmurzrnrrXm+k1UVysBgyl0HMIzCFxff1G3fftHw9aebCM9P6sHRJ/mYmr6a5Mv9lzMa7Y0Z7a72zF5vb7pEJf7+ZwOoGJWQqk3tyjHkdBWZi7rKU8q7KlIqBniGp50N9uQLe9o2WDu9pSEfgSNC3lxL9eIn8s5o9Jw4mfbHsuB+7MrBPYWX93621edyhqxnl5idW7/q+VcOpBeVWiPTythDBZn17m1bKd60VYIC3EgFz3hUFUmHNOszawlD8AsXQmGAz2MoHDBAizMYoCGEUHTBvgzFO6oo4D14MMv18ScV/qtX54J0d6BFjEa7ZsmSy4YXnr+knjPHHq57i4pILvVdSrrYfzGj0d6Y0eZqy+jx9GT4Fb96IudzhBNTtand2YbsrkJzYdfMgXLqOaVf6LaKOcHH8WrGWbgk5VjFtuxalmem3XTFsf2Y6POx1e/+YWnjuVNrFEkaWc+LMIycN7/i1KoXv3dSZzLfd008FCC1uRO8+9q2K32+ouBykqBq027K2sMXm3si1TaE4gU+j6FwwAAtzmCAhhBC0QX7MjSdyP39Kueut2Z7v/yyQu7qyh7vGK6g4LZu06aLhue/Vc/odHK426BQBa4OXLXU9NVkNNgaMlpdrRk9np5Mn+zTTuR8Flh5vqPSPr9po07tNWqC6zQGrq9sdfrh2WvSG6bTjp336scGO9oMVW+9saGnsX5BcDmv1Tpnr9tyaPGT37j6IOvhTWeUUhBO9ZYIp3u3gSAHrzNIuZnGs9qduccYA4+hJEIPCZ/HUDhggBZnMEBDCKHogn0Zmq58p06nuN5/v1y4eHEB9d0dXhGNxqOuqKg1PPPMJc2K5X1T2RaFKlBvqzed7z2fUW+rz2hxtmR2e7ozPJLHcK9zCGWgtHcZLGrbCnoxdN8E1iJ1L9iUvX/24pyWqWx3tLhfP3brzMms8x+/t901OJAZXG5MSW1d9vXn9xUsXNL9KNoZDxS3xHv3tq6WbjlWAIXR9FHFONVLUw6oK9OvEzJ9wluEwgWfx1A4YIAWZzBAQwih6IJ9GZruFLebdb3zbonn0KEKqbl55njHsJmZbdq1ay8ZX3rxOpuU9MhG2TTaGw3ne89n3LDeyGhxtmR0e7oznGLoLqOcrIJ5XWthQccGUCkhA9KgPfGmdKegZlBOdfYlahLtKdoUe4Yuw55jyHEUmgvtWfosz1ftBhorJtKPKbJMzn30p/k3jh/ZKAo+fXBdRknZhcoXv3s0IT1z2m/IMFFikyPZd6BjhzIo5AeXM0nqJu3W7L1cvnEgQk1DKCbh8xgKBwzQ4gwGaAghFF2wL0NolHDtmtn19jvlvrNny6nLZbrrAJ73q+bOvWb42pMXtZs3d0Ri+l+7q117uud0xo3BGxnNzuaMLk9Xht1vT9SIBljUtgVm9a4EloZuBtpuaoBL2Yegw9QAEDQ4iCWsZOSNdpPKZLeoLfYkTZI9TZtmz9BnOPKN+fbihGK7SWWSHvFHfGAP0o+5rYPqqrd+t7rt6uVllNKRf4Esz/uKl68+tvy5l2o4XjXt1pF7GJRSEI53zxXO920GvzI6WpKAzBWbq7U7cqoYLRf1f34Qigb4PIbCAQO0OIMBGkIIRRfsyxC6GxVF4vrwzzM9+/aViw0NpaAodyVlTFJSr7Zy1UXjSy9f4XKyvZFo57BeT6/6dM/p9OuD1zN6Om15aXVzCrL7Z921UUGPoRkuZR2GZss1gAlunqhhNR6jymhPUCXYLWqLPVmT7EjXpduzDdn2maaZ9gJTgYtjuIg+dD9MP9Z+/Uryqfd2bbF1dRQGl2tN5r6Kx57aN3vd5jvhbme8Uhx+tXdP2zqpybkEgiJaomFt6hVp+9TLUxsi2DyEYgI+j6FwwAAtzmCAhhBC0QX7MoS+mninWe98a9c8X/WpCmVwMPmuAxhG5ktLbup37Lyof+prdwgX2TBpWNP1nrRLR9rWutuVEqChi1I5tP3ypexD9GbSOY6SyQ22IkAUA29wmFQme4I6wZ6oTnSkalPtmfpMe64h115kLrKn6lKFSd3kPh62H6OKAlcO7im+vO/zrYLbZQmuS8rNv7Hq+VcOps0stoWxqXFNvGlL9x7u2EntYlZwOZOqqdduz9nHZenDtsMtQvEGn8dQOGCAFmcwQEMIoeiCfRlCE0MVBTz79uW4P/20wn/t+myQJH7sMcRotGmWLbtkfPHFy6pZpY5ItHOs3mZnwuUDHSt7mpzlVIGQuZ28lrHpZvuvuOe2dHb5O4y93l7zoG/QbPPbTA6/w+wSXSYKdNLzVHmGF0y8yW5Sm+wWlcWRrE22p2nT7Jn6THuBqcBeaC506riH3/F0sv2Y3+tlT77z++VN58+sVuTRf6+EYaT88sXVlS9+t1pjMIoP277phCqU+A53lPsvDWwEiY5uzsGAxJdZjmu3ZZ8mKjbsu9siFOvweQyFAwZocQYDNIQQii7YlyH04OTePrXzrV2zvV8er5C7u7PuOoAQyhUUNOq2bL5o+Na3GhiNJuJralm7PIZL+9qXdzY4FikyVQXXcWrGlTfHcrp8e3aNzqQa2SRBVERyx3HH0ORoMre72s3dnm5zv6/fbBWsJpvfZnb6nWaf7NOFo316Tu80qowOs8psT9Ik2ZM1yfZ0Xbo915Brn2meac8x5Nxzw4Nw9WMDbS3Gqrfe2NjbdGtecLlKq3PM2bjt4MLHnroeiXXvYpE8KOi8u1s3ym3u8uByouP61avT96oXJuMUWYSC4PMYCgcM0OIMBmgIIRRdsC9DaHK8J06kuT78sNx/6fI8KgjasfVEq3WrFy6sNTz37EXNkiUR35nQOSBoL+5rX9JeZ1sqi0pIe1mO+LJmJZyr2JZ91pSimdCOlHbBzt+y3zI1O5vNne5Oc6+31zTgGzBbBavZ4XeYnaLTLFOZm2y7WcJKBt7gMKvM9gR1gj1Zk2xP0abYM/WZdqad2WJhLcr6Vet/Pdn7AAA0nDqRc/6T97e5rYMZweWm1LSWZd98cV/+goU94bjPdOC/MpjjO9a5g7qktOByNlN3Vbsj5yCbqnVFqm0IRRN8HkPhgAFanMEADSGEogv2ZQiFh+J0cs533in1Hj5cIbW0Fox3DJuV1apdv+6i8cUX61iLJaJTAr1OUXVpX3tFy5XBFaKgGIPrGJaI6YWmCxXbsk4lZumdk7mPQhXocHfoGu2N5lZnq7nb223q8/YNTxU1O/1Os1tyG+9/pfvTsBqvkTfazWrz8IYH9uENDwqMBY6Z5plOnuEn9AVBliRy9s/vlt+sOrpBEoTgUXY0c9acmsoXv3vMnJoe0c0jYgWVFMZ7oH2JeNW6DoJHP7JE4OclHtNuzjpPOCbiozQRiiR8HkPhgAFanMEADSGEogv2ZQiFn3D5ssX17p8W+M6dK6fuccIhlUpQz5t3Vf/U1y5pN2zojOS0QL9PZmsPdMxvujiwSvBIIQvpEwJKaoHx8vzNmdXpM02DU9UGn+RjGu2NpiZnk7nT1Wnq9nabB3wD5kFhMDCKze80+xX/XbuKPqihDQ+cJpXJPjxVNEWbYs/UZdpzjDmOInORPVWb6gueKuoa6NeceOt3a9qvX1kKlI5sxsCqVN6SFWuOLXvmhQscr8LwZwLkHq/Ru6dts9zlmRNcTox8t2Zdxh7V3MT2SLUNoUjD5zEUDhigxRkM0BBCKLpgX4bQ1KGiSFzvf1Do2bevQmy8VQzK3QvyMynJPdrK1ReNL790hcvM9EWinQAAsqgwV450ljWe71/ldYhpY6ppUo7++rwNGSdzZlsiMn2x19OrvmW/ZW5ztZmGpoqaB4VBs02wmV1eV7ZDcbAKTD7H4hneb+SNdpPKNDKKLU2XZk8e4Ilw8MpCb09/TvDxOnNCz8InvrFv1ur1LZO++TQh1PQXCFXdO6hHSgouZ3P1F7U7cw+zFjWO7EPTDj6PoXDAAC3OYICGEELRBfsyhB4N8fZtg3PXW/N9p06VKzZb0l0HsKysKi2t0z322EX9E4+3EI6LyIMsVSjUVXUX1Vf3rnZZ/dlj6xPStbdmr0mvmrkouS0S7RtPdXX1DxSqQMbcjHdv22+b291DGx54+82DwqDZ7rebHX7H5Dc8oAC5PVpYeiOJ6r0sCa4iOZa2pG3LT6flzBhI0iT50nRpXrPKLN5r44Ppjgoy693XvkK8YV0NCoyukccTr6o8+ZBmQ+ZlwhD8MoemDXweQ+EwmQBt0ouVIoQQQgghFA78zJmuxP/6s2qqKNWeL3bnuj//vMJfVzcbJCnwzCrLrP/69bn+69fnOn71K6t62bJLxpdevKwqLp7UGmQPijAEZq/JuFVWmX7r1vn+vBsnuivtvb6Zw/W2bm9R9ft3iq4c7mwpXZlaVboy7TZhyFdd8pFgCAOF5kJXobnQBQAd4x3j8Du4W/ZbpmbHyIYH5uEND+x+u9klukwSlfh73oQAtKZ7oSOlncy+Y4K5t83Ay4GAjLZZc7p/tzvnWL4Trs50gJ9XgAFGUbEqn5pV+zSsxqvhND4tq/XpOJ1Px+t8Bs7gNfAGn0ll8plUJp9FbfElahK9yZpkX5o2zafhIr9761QhalbWPZlXJS1Mvurd37ZN6fUVAwCASLX+c32Pi/X2Cu2mrN18iRk3bEAIoUcAAzSEEEIIIRRVCMOA/onHW/VPPN4q9fTsc765a67v+PEKubd3ZMdHxW63eA8c+P+z99/RdVzpmej97qo6OSAf5JwYABIAMwnmJEodJHVSu6PtcXvGnjtz7+e5E9bc9fV47p2bZnniZ3vGabrddqtzq1stUUxiAphBAASRc8ZBPvlU3N8fACiQIimRBHAA8PmthQWcqn2q3gLJLeDRDkciZ88eNhUWdtpOnrjrfOutTsG6coEKExiV7ErpL9mV0t/XOJ1+/+Lo/unh8MaF84EpOff2rwdzmy+PjRbv8lwtP5LeJoire8SQ2+zWtqVsm96Wsu2x67kZ3KCR0Iity9cVNxAciBsLj8VNRCYeTBX1K353WAu7dJGze0V+6soM0fa2BCoYdRARkWQIVN4TRyWDTrpX6Ke2XL8Qpag9qkftPvI9c70Sk9SF8M0iWaI20Ra1SbaoXbJHHCZH1CE5om6zO+oyuaLxlvhIgiUhmmxNjqbYUqJJ1iR5LYx+k7Ids67f2/B29Jq3VLk+fopH9TgiIu5TssI/6/19qcB1y/aZnIuCyyTHulYAgPUMARoAAAAArFpSaqqc8M//1zv0z//XO5GLl9KCP/tZpdzQsIUUxUpERJwztaurRO3qKgn8j+8FLdu3Nzi/+la9dfv2ZVvQ/3HytiaO5m1N/MlIuy+58fxI9UR/sJw4CUREYZ+a3nh2+Mvt17yThduSa7aeyGiSzOKaHDklMIGynFmRLGdWhIjGHtcmqkWFbn+3q9ffGzcUGorzlnjjertHMj23/fkOH1mIiCyqSDvaEmhjn4vqS2apJzNE/DkG6WlcM2maZgppIRc9Y3zEiPFFo9+iVtEatUm2yHwAF3WanFGn5Iy6zK5InDkuGm+JjyZaEqPJ1uRoqj014jA59Gev+PlZ96a2myuSeiLvDe7XOn375v9+Ma0nsCvw31o3W3amnLEcSLvPWOxHOwIArEcI0AAAAABgTbAdPjRmO3zotOH3nwv84O82Ri5cqNIGB/MWzvNw2Bm9cqU6euVKtZSd1W87cvSu65vfaBHcbm2laswojZvMKI17Z6I/eLHhzPDesW5/FZ9fvyoa1JKbL4+93nlz4nBeReK1ylNZdy12acVqWylWyWpsTtzs25y4+aMhZTuIjC/p7O67v9jUfPHsUTkUTCAickYl2n8vmY705U0595fd0TZ7Jv2q3xpQAragFrSG1JA1pIWsES1ijWgRW1SPWqN61CrrslXRFSt/rthtDifOZF22ybps85P/md8vMlGziJbHTj91mBxRp2l++qnJHY2zxEUTLAnRJGtSJMWaEk2xpciS8Oxr+Al2SXV8Kf9DtSdwL3pm6FVjWs4nIiLFcMo13i+oLbNVtley3pPyXVPP/EAAAPBU2ERgFcImAgAAqwv6MoDVS667mxh4++1K+fbtCh4OOz/WwGyWLRUV95xf+MJd25HDjx0xtZxmvRFH/emh3cNtvp2Gzs2Lz0lmIZRTlnCj8lTWbUe8eVmn362mfkyNRsUbP/27bZ03ag5qsvzQpgVuT1rf9s9/8XzRrn2PXaNtMYMbNBWdskxEJqyT0UnrjDxjnZVnbQE1YA2oAWtQnQvgwlrYFtEi1ogescqavBDA2Z66ltsKMAtmeT6Ai8yPfovaJFvUITnmpp+aHFG3aW7tt3hLfGRh9JvH5om6zC6VESP5yliZfGviJCnGR3/3GRlScVyt7bXsq4JdUmP4iABLajX1Y7B2YRfOdQYBGgDA6oK+DGD147IsBH/846LwBx9UqV3dJcQ/PjJJ9HhGrQcO3HV965v3pbS06ErWF5yRrfWnh3YM3p/dranGQ6GRIDE5szTuVtWrWTfjPLbQctx/NfZjoZlpy7Uf/e2e/oa6vYb+cJiVnJvfsvtLX7uQsWHzsk3FjWpRwRvxWiejk9bp6LRtRp6x+hW/1a/4rUE1aA1qQVtYDVvDWtga0SPWqBa1RvWoTdZlq6zLVk48ZguoCUzQLcLc6LdEipffGjnh2DexJU6gj0qKmJVI06ah+pHCwKBVsmpW0araJbtmlayaXbKrDsmhOUwOzWlyqk6TUzMJJvxiCKvaauzHYO1BgLbOIEADAFhd0JcBrC1qZ5cz8IMfVESvXasyfL6EjzUQRc28aVOL43Ofu2v/zGsDTHr2qXTPKxrSTPWnh6r6Gqf3qlHdvfgcE5iWXuSqq3gl61pytuPZ5xQ+xWrux6aHB53X3v7+wZH2lm2Lg0/GmJG+YXPdvq9+63JCRtayBIvPy+AG+RSfyRv22qaiU3Oj35TZhQDOtjD1NKyFHzv9VDVUy1LXVBDNoj8ce4s2RQoeOn7bcZ/+e+rPaNgy/tT3CyQYoiCqkiBpEpM0SZDU+c+aJEiqSTBpkiBpJsGkmgSTZhbMmkkwqWbRrJkFs2YRLer8Z80qWVWLaNGsolWzSTbVJto0u2TX7Ca7apfsmtPk1Fwml2qTbPpa2MgBVofV3I/B2oEAbZ1BgAYAsLqgLwNYm7imsdCv380Nv/tuldLaupF0/WPr/zKbLWQqLu6y7Nje5XjtM91SdlZkJWpTZV1sPDtc3l03VS2HtKSHiyLDk+u8t/VERk16cdySrGW1Fvqx4db7STd/9sMjk/29mxYfF0RJzavcdm3vW9+6Zo9PUGJV31KSdVmYjE5aJiOT1oUAzqf4bA9Gv6lBa1gLPzz9dH7km6zLNp3r4uOuyzij47499Lvjr5Nb/2hWp0Y6vZP4Ib2dfJrC4ooOvvxEIhMfhHWiIGomZlJFQdTmAzvVxEyaSTQ9CO4WPhYCO7M4F95ZRItmES2aTbSp8yPuNLs0F9jZJbvmMDlUl8mlOUwOzSJa1uQmHi+7tdCPweqHAG2dQYAGALC6oC8DWPu0kRFr4G//tjxy5WqVMTGR9qR2YlrasHnz5i7rwQNd9mPHhplpeae16ZrB7n84urHj5sT+iF/9WF2JWfaW8iPpV3PLE19o/ba11I913qjJrPvVz477J7y5i49LFkuoZM+By7u//LU6yfxyByBBNSiNhcesU9Ep61R0yuZTfFaf4rMGlLm13yiku450bs3fOlGUzOij2cx+KWT8NO188FziDV3jmqRxTdIMzaTzj4fL6xkjZkiCpC0O7x4aacekhwM78aNRd2bR/GCk3UJwZxWtC6PudJNg0k3MZJhEkyExyTCLZt0kmAyzYDZMgskwi2bdLJgNk2gyrKLVMAkmwySYDIzE+2RrqR+D1QsB2jqDAA0AYHVBXwawvoQvXEgP/eznVcr9+5t5NGp7UjtmsUSkwsJuy7aqLsdrr3WbCguDy1UTNzi11niL2q6N7w9OyTmPno9LtXZtOpB2tXhnysDzXH+t9WPcMOjeufeL751971jEN+tZfM7idE2XHTlxoeozb7YwAaHD06its+mRD0dO8Vkle/Fx5jYNWw9nnDaXJQwTzU1JjWgRMaAGTEE1KIW1sBRWw6awFpYiekSKaBFTVI9Ksi5LUS1qknVZUgxFknXZpBiKpOiKpBqqSTVUSTHmvtYMTVINVdIMzaQZH4V1858l3dBNBhn4A5zHiBkCExY+dIEefG0wxgyRiQ8dE5igC0wwRCYa85/1hXOPHhOZOPchiPqDrx95LQnSwmd94bXEJEMSJF0SJMMkmB60MwkmfT4cNCRBMsyCWZcEybAIFkMSJGM+SDTMgtmwiJaFsPCFp+uutX4MVicEaOsMAjQAgNUFfRnA+sRVlUUuXkyPXLpcpNy/X6yPjWU+bvOBBUJKyph548Yua3V1l/3UK4OC1boso6C6bk/ktFz2Vs96I8WPnnMmWgY27PNc3Vid2sWEJ5b6MWu1H9M1jd3+xY+2tl29eFiJhB9aM86ZmDRS+dob5zYePNoXo/LWBM45yZfHyuQ7EydINlyLz4lZjkbbqazzose2bOHw06iGyoJqUAqqQVNIDUkhLSSFtbApqkWlsBaWonrUFNWi0nx4Z1J0RZINWZJ1eS6s0xVJMRSTaqjS/MfDwd18WLcwym4+yIvp7qsvM0aMC0ww5sNCfVEY+LHQ8GMhIQmGWTFnCiRwbue9C8fmA0bOiHHGGBdI4AuvBSYs3O/RY489L9D8OfbRuYXrLZxb/H6RicaitnMfi9rNB5kP3i8K4kNt5sPLj9oL4ly7+WOi8NF5kYkPfQiCwCUmGYtfm5jpwT1EJnKMbHw8BGjrDAI0AIDVBX0ZwMtBGx62hX7zXoF853aR2tFZxMNh5xMbm0yKKT+/x1JZ0WU/darLvHmzb6nr6W+aTrv/4Wj11FB486PnbG7TWPGulJryI+ktoiR84g/0a70fk0NB6fqPf7Cz+/b1/bqqWhefS8jI6trx5lvn8yq2eWNV31pgBFVz5IOhaq3Dt5c4fbSGmsgU06b4y7ZXsm4ys6jHsMQVYXCDonpUDCpzwV1YCz8I7iJaRIpokbmRdnr0wai7hfBOMeYCu/kRdw9G3c2HdibN0CSDDMHgH/sQHzkuGtwQDDIEzrnA6cnBPcCLYsQ4EXGBCZyI+KJA8aPwcVHIuOiz8bhz393+3Z9s92xfkvU5YwEB2jqDAA0AYHVBXwbw8uGGQdGamtTIhQtFStP9Im14KIcM/sT/lS8kJk6aN5R2Wffu67S/empAcLm0papltMuf1Hh2eN9EX3Ar5/RQDRaHNF1QlVRTcTLznsny5PBjvfRj/olx27W3v1c9eL9xFzeMhxbSTy0qadzzlW9c9OQXLXmYuZ5og8GEyJnhE4Y3smHxcWYTpy17Uz+w7PZ0xqq2l5VmaEwxFEHWZUHVVUExFEHRFVExFEExFEE1VEHVVVHlqqDq6txrQxU1rgmaMf/BNUE1VFE39AevNUMTda4LGtcE3dAFneuCzvW5NlwTDG48eD1/TtC5Li4EfTrXH7RZ/HohANS5LnDOBYPm2nDOnxgacnpy/wlry7/f8+//fF/6vqdv67uKIUBbZxCgAQCsLujLAECfnDSHfvObfPnmrSKlvb2YBwJxT2wsSZqUk9Nr2bq1y3bieJelqmp6KdbqmhwMuRs+GNo72hXYxg3+0KLvJqvoz9uScK3yVNZdq9OkPvre9daPjfd2xV3/8Q8Oe7s6ti4+zgRBzy7benPvV79d407xrMiOqmuVfHuiQK7xnuJhLXnxcSHF2mk7kXlGynOt2REmsPoY3KD54E+I6lFB1VVBNmRxITBUDVVQdEVcaKMZmqDy+aBwPiSc6Z95VSedWTOs51VDXQj0GOec6VwXOHH24DXpjPP513PHhUVfLz4+125uNODHzi86Jsy3Y4s/L7RZ/P7HnefEn3x+7piw+H6PnHv4/Y9r99FIxofeuxx/lv9x33/8012puyaX49orAQHaOoMADQBgdUFfBgCLccMg+fbt5PC580XKvXtF2sBAHum6+KT2gts9Yyot7bLu2d1lf/XVPjEpSXmR+/vGI/b608O7httmd+katyw+J5mEcNbm+JtVp7JuORMt0YXj67Uf62uoS739ix8dnRkZemi9ONFkihZs312z961v3rQ4nEs2GnC94aohRM4O7VCbZg6TvujvEiNDKnTfsL2afUVwmeQYlgjwwHrtx5aTwQ3Suc5UQxUMbjDd0JnOdaYZGtO5/tHH3ChEpnOdGdxgGteYwY0HrxfOG2SwyuTKKadp7farLxKgvVTbFQMAAAAAvCgmCGTdtWvSumvXJBHd0GdnTeH3T+dGr18vUtvbi4yZmaTF7Q2/P0G+fXuHfPv2Dt//7091KTtrwFy+pct29EiXde/e8WcdnRbnsYUPfavoYtinXLv7/tD2gfszezTFcBARaaph72uYPjzQNLMvozTudtWrWdfjU22hpXv61SWvYps3r2LbD1svX8irf++Xx4PTUxlERLqqWjuvXz3W31C3s3T/4Ys733yrUZQkjBx4BDMJhv21nJv6bk9T5P3Bo/pAqIqIiDgJWpd/b+C/tW4xVyWftx5Ov8cEhu8fwBojMIEEJnCTYFr36xuuBIxAW4UwAg0AYHVBXwYAz0JuaEgInzlbqDQ2FKm9fQWkPXnXP+Z0+k3FxV3WnTu77J95rVdKS4s+qe0T7xfWpPoPhir7Gqb3KRH9oamlTCAttcBdb86fzDU5SF/P/Rg3DLr7m19suv/h2aNyMJC4+JzNHTex5cRr57eceK1jKabTrldq62x65MORU3xWyV58nLlNw9YjGafNmxOGY1UbAH4eg6WAKZzrDAI0AIDVBX0ZADwvIxwWw6c/yI7W1hYprS3FxuSU54mNGeNiRsaguWxzl+3QoS7boUNj7BlGTWmKLjSeGynvvjNZHQ0+vK4VMU7ODCOy+9TGv8kojVuza9d8GpoiCzd+8vfbOq5fOajJsmPxOXdKav+2z3/xfPHu6qFY1bfacc5JvjxWLt+eOE6K4Vp8TsxyNNhOZV0QPbZgrOqDlxd+HoOlgABtnUGABgCwuqAvA4ClorS3u8Lvny6S794tUnt6CkhRrE9qy2y2kKmoqNuyfVuX/bXXuk25ueFPcw9D5+z+pdHSjuvjB8I+Nf3R8wkZ9rayw2lX8yuSRl7kWVa7sN9nvvbD7+3pq7+zz9AfHgWYnJPXuuuLv3Uhc1M5Fsp/AiOomiOnh6q1Tt9e4vTRGn8iU0ybEy7bTmbeZOYn7/wKsNTw8xgsBQRo6wwCNACA1QV9GQAsBy7LQvj8+czolStFSnNLke71ZjytvZiaOmLevKnLeuBAl/3YsWFmsRhPvb7Bqf3aeEFrrXd/YFLOe/S822Pt2bQ/9WrxzpQ+JizLZm2rwszIkOPa298/ONLWvI1z/tH8TcZ4Rummur1f/dblxMxsjKh6Am0gmBA5M3TSGI+WLj7O7OKUZW/qB5Zdnq5Y1QYvF/w8BksBAdo6gwANAGB1QV8GACtB7e1zhN9/v0Cuu1OkdnUX8UjE/qS2zGKJSgUF3Zaqyi77q692m0tKAk+79vlfXfvDmQ7RFRkXLI+ecySYh0r3eK5uPpjWsZ6DtJG25sQbP/3hkcn+ns2LjwuiqOZu3XZ93299u9Yen/BCO6SuZ/LtiUK5xvsKDz88PVhIsXbaTmR+IOW5pmNVG7wc8PMYLAUEaOsMAjQAgNUFfRkArDSuaSxy6VJa5OKlYuX+/SJ9dDSLOH9iuiUkJ3vNGzd2Wauru+yvnBwU7PaHptYt9GM58Zt+1XRhtHpyMLSZiB66ns1lGi/akVyz5VhGs2gSnjq6bS3rvnUt4/Y7Pz3uHx/LW3xcsljCxburL+/+0tfrTFYrpiY+BlcNIXJ2aKfaNHOIdP5RGMvIkIrc122vZl8RnCaEkLAs8PMYLAUEaOsMAjQAgNUFfRkAxJo2MmINv/d+QfT27SK1o6OIh0KuJzY2mRRTXl6vuaKiy/7KK12WLeWzj/ZjY93+xMZzI3vHewIVfPH6VkRktoszBZVJtRWvZDWYretzjStuGNR0/nTRvTO/OR72zT60sYPF4ZzZfPjEharPvtkiiCJ+WXoMfTLqiLw/eFQfDFU+dMIsBM1Vyeeth9PvMYHhewdLCj+PwVJAgLbOIEADAFhd0JcBwGrCDYOi1655IucvFClNTUXa0FAuGYbwpPZCQsKUb9NGa2TjJrniq2/9ueB2awvnpodDrvoPhveMdvq3Gzp/aKF9k0UI5G5JvF55KqvO5lqfo4p0TWN33vnJltYrFw4r4XDc4nOOhMTRytdeP7fp0PHeWNW32qmts+mRCyOvcp+Stfg4izMPWQ+nnzZvTljXG1XAysLPY7AUEKDFEGPsABH9MyLaRkQZRPTbnPPvveA1EaABAKwi6MsAYDXTp6bM4ffey4veuFmktLcXc78//omNRVGTcnL6LFu3dNmOH++ybN8+xQSBApNR293TQ7uGWmd36Sp/aGdQ0SREsjbG3ax6NfuWK8kSWe7niQU5HJKu//gHO7pvXT+gqw/vjBqfntm98823zuVVbvfGqr7VjHNO8qXRcvnO5AlSDOfic2K2o952KvuCmGINxao+WD/w8xgsBQRoMcQYe5WIqonoLhH9LRH9AQK0j6CTA4D1AH0ZAKwV3DBIrqtLipw9VyTfu1ek9ffnka5LT2rP3O5Zc2lJl2XXri7Ha6/1ymY31Z8e2t7fNLNHkx8OQwSRKekl7jtVp7KuJ6Tb1+WulYHJCWvt29+rHmxq2M0N46GprZ6C4nt7vvL1i6mFJbMxKm9VM4KqOXJ6cL/W6d9Di6cFi0w2bU64bDuZeYuZ1+eUYFgZ+HkMlgICtFWCMRYkon+MAO0j6OQAYD1AXwYAa5Xh90uh90/nDt288Ya1vcNimph4YphGgmBIWZkD5rLyLungkd5WX056b/10tRLR4xc3Y4x0T4GroeJkZm1qvmtmuZ8hFib6etzXf/S3h8e62rfSos0WmCDoWZu33Nr71W9djfOkrcvReC9K6w8mRs4OnTDGo6WLjzO7NGXZ5/nAstPTFavaYG3Dz2OwFF4kQHvyf0BXKcbYF4noIBFVENFWInIR0d9zzr/+lPdkEdG/JaJXiCiJiEaJ6B0i+mPO+br8jz4AAAAAgOB2a663vtI9nZ3lJyLa7nL/JHzmTKHSUF+k9vYVkKqaHzQ2DEEbGMzTBgbz6P33KcvhCOQWl3SNFJ1SuiLZhdGQkUxExDmJ3u7AtjN/1laVnOO4v+VYRk3WxvjxGD3iskjJK/B/7l/+m18N3Ku/fuvnbx+dHh4sISLihiEONjXs+Vlbc1X+tl01e9/65k2r06XGut7VRMp1Trt+b8OP5FsThXKt9xQPa0lERDysJUXPjXxNaZzusJ3IOiPlOqdjXSsAwLNYcwEaEf1vNBecBYloiIg2PK0xY6yQiK4RkYeIfkVEbUS0k4j+KRG9whjbxzmfWtaKAQAAAABWAcuW8lnLlvI6IqozwmExfOZsVrSmpkhpbSk2JiZTF7floZBLa6iv9DTUUwoT+FTxocmejOPmILnd803Y5ECo/MO/6SxPSLe1bz6UVlNQlTy08k+1fHK2VI7nbKl8u+3qh7l3f/PL48GpyUwiIl1VLV03ao72N9bt3LDv0MUdX3irUTKZjVjXu5pYdqZ0mysS/zxydninen/mIOncQkRkjEdLQn/fVSgVu6/bTmVfFZzrc4MKAFh/1mKA9r/QXHDWRXMj0S5+Qvs/o7nw7J9wzv/rwkHG2H+Yv9a/I6J/uOj4/0FE//oTrnmYc37pmSsHAAAAAFglBLtdd77xer/zjdf7ieiC0tHhCp8+XSjfvVukdfcUcll+sJg+4wZL7vgwOanjQ5qJL6H+/FeNmbjiBzt/zoxGSmve7i29d26kd0N1ak3pHk8PE9hj77sWbdh/pL9036G/qn/vnY33L3xwNBoMJBERqZGIq+n86c913bq2p/z4qxe2nvxMOxOeuCHqS4eZRd3+mZzr+i7PvcjpwaP6YKiSiIg4iVqHvzrQ11ph2ZZ8znI4/R5j6+fvCwCsT2suQOOcPwjMPqmTZYwVENEJIuojoj995PR3ieg7RPQNxtgfcc4Xdob5T0T0d59QxsCnrxgAAAAAYPUzl5QEzCUlDUTUwFWVhc+fz4xeulyktLQU6WNjmURzi4ElznZQYn2H4HflUl/OCZpMqXhwDf+knH/rnYH85ktjIyW7U65uPpTeLohsXSy6zASBqj77ZuuWk6+13/zpD6s6rl05pMpRBxFRxO9LufXzt99qvXJhYNtnv3C+ZO+BwVjXu5qIKdaQ85vFv1aaZ+5EL46e4j4li4iIFMMpXx9/Q2mZ3WE9kn7avClhJMalAgA80ZreRIAxdojmRqA9dg00xtg/IKK/JKK/4Jz//mPOn6G5gO0Y5/zCEtTzTJsIMMbqnnBqQ35+vunP/uzPJl+0plhTFCWZiMhsNq/5ZwGAlxf6MgBY6160HxMCAcHW2mqxtbZZrB0dFjEUejDMKmhPp4Gc4+RN3U6cPbRxJZlsmhZfSkFXjhFh62xglq4obPL+XcdUc4OTa9pD/2ffmZUbTd2+N2BNSNJiVd+qxYkSxiSbp8fkNqkfDdfjxGk2VQt7C9SAZuGYDgsfg5/HYCn8wR/8QXJvb2/TS7GJwDNa2Pml4wnnO2kuQCshoucK0BhjTiIqmn8pEFEOY6yCiKY55xipBgAAAABrnuFyGaGdOyOhnTsjZBhkHhySbC0tVlt7m8UxMGje1Pa3lN/3Hg1kH6PR9D1kCCYiIlIjkjTRQPG++lBcYups2F4Z52c28yfcbW0QzWaeWrU7mLihPDzRcMs509nqIGMu9wkO9VuDwwPW+MLSsKdqd8DkcCIQWsCIZtK1iC9Fi3r6zM7EYckpcEaMGCV4TXb3pGSbyFUDk1lqiNZZ6AoAa9t6D9Di5j/7nnB+4Xj8C9xjOz28Dtsfz398n4i+/bQ3PinxZIzVybKcvh6258VWwwCwHqAvA4C1bjn7Mc3rtYR/85sC863bRRs63ivK6z/tHsw6TMMZB0iX5pZRU5iDjY07HNJvQo5UX0MkS+gfScmw9plKS7yWbdu9ptIS/5peO+z4CRrtaE248ZO/PzLR111GRESc02xXm93f22nK2VJ1Y99vfbvWkZAox7jS1eUgkdYXSIycHT5pTERLiIhEnbG0HrM7fcyuWKpTP7DsSOmOdZmwOuDnMVgKsix/53nfu94DtE+yMNT6ueexzm8mgBUvAQAAAOClJKWmyu7f/d1W9+/+bis3DIpev56ScOFCUcH9vyjp54U5Q5kHBdXkJCIizeSg4eSdtmHaWeicGCxMb7pOaX/612QWtYjo8XjFzAyvqaDQay7b7LXu2jUuuN1rZgpkesnGmTf+t//j5923r1+/885Pj/m8o/lERIaum/rqb+8far63rWjX3iu7v/yNO2abTY91vauFlOeadn1nw9vyrfEiuXb8FR7WkoiIeFhLjp4d/rrSMNVuO5l1RspxzsS6VgB4ua33AG1hhFncE867H2kHAAAAAADPiQkC2fbtm7Dt2zeRSHQ9c2bGNPur04Xt9aE9g5SXJZvjP1o7zZVNna5s6ip8g1Imm2zpY9fzEm/cypNv3Jy/GONCQsKUmJbqNeXkjq2V0WqFO/aMFGzb9bf3PzxT2PjBu8fDszOpRESaItvbrl58pffurd0bDx7/cPvnv3hfEMW1uyD1ErPs9HSZK5L+PHJmeKfaPHOIdG4mIjLGo6Whv+sqkorjrttOZV0VnCYl1rUCwMtpvQdo7fOfS55wvnj+85PWSAMAAAAAgOckJiSoSd/+rba936Y2Q+es41J/Ue/NkV2TM2I+p7kUjAsmGvdU0biniizyDKWN3aL0setkj0wwY3o62ZieTlZbWjfTBx8QERGzWOZHq2V6TQUFXnN52Zh1586J1TRajQkClR871b358ImeO+/8pLzl8oUjSjgUR0Qkh0LxDe+/82bn9St7Kk597vzmIyd7Yl3vasHMom7/bM51fVdKU+SDoaP6YKiCiIg4iVqHrzrQF9hq2Z58znIovYkxTAICgJW13gO0hbXJTjDGBM4/2s2FMeYion1EFCGiG7EoDgAAAADgZSGIjG84mte54WheZ3BGtjZfGisbapmtCM0qmQttZEsC9eeepP7ckxQ320XpY9fJM1FPkv7R0mFclm3a4GCeNjiYJ9+Y/zH+wWi1tDFTTo7XVFrqtWzbFvPRaoIo8p1f+Oq9ildfb77+47/d0XXr2gFdUWxERKGZ6fTaH37vG80fnu3Z8cZXzuVv2zkWs0JXGdFjCzq/WfwrpXnmTvTiyCnuU+f+jiiGS742/qbSMrvDdiTjtGlj/GiMSwWAl8i6DtA4592MsbM0t9PmHxLRf110+o+JyEFE/51zHopFfQAAAAAALyNngiW6643cO7veyL0z1Dab0l47XuntCWzVFMO+0MYXX0S++CLq2PBbeoo2OJM5dk2PG7gdzxTF8rELcr5otFpL2WNHqxUWjJnLyrzWXbsmBJdrRUermW02/eC3f//Gts99sb72h9+rHmyq323oukRENDs2UnDuz//j73vyi5p2f+XrH6YVlc6uZG2rmXlzwrBpY/xfRy+OblHuTh4jxXASEfFZJTv8i77viDmOu7ZXsy+ISdZwrGsFgPVvzQVojLHXiej1+Zdp85/3MMa+N//1JOf8ny16yx8Q0TUi+i+MsaNE1EpEu4joMM1N3fzXy1wyAAAAAAA8QdaG+ImsDfFnNUU/31ozXtzXMFU5MxYpIT63UZdBouiV8pK9WXlkKfnGdEYG3Slg7ZPW/ma3NjCQqo+NpRmzs4mPu/anHq22Y/uYqbg4sNyj1ZyJSfLJf/xHFyYH+m5de/v7h8c62ypofkOy8d6u8nf/nz/enLmp/Pa+3/r2lbjUdIRCRMQExm1HMxotu1JaI+8PHtC6/HuIk0BEpA+EqoJ/2b7ZVJ5wyXYi6xYzCcYnXQ8A4HmtuQCNiCqI6FuPHCuY/yAi6ieiBwHa/Ci07UT0b4noFSJ6lYhGiei/ENEfc86nl7vgT2N+Sqlr/qWJc45J/QAAAADw0pDMolF+JL29/Eh6+8xY2NlyeWzLcJuvMhrUkhfayGE9sbeL9vVSEY9LLevOO5hYv/FA2i/EiF+Qb970KM3NqWpPb5o2PJyqT0yk0rOOVkv1eMWM+dFq5eVe686dyzJaLTknL/C5f/HdXw/eb7h+82dvH50eGiidK40LQ833dv3su/+iIq9qR+3er37rhs3lVpf6/muR4DQpji8XnNf6AvWRs8MnjYno3HrWOreoDdMntQ7/Nkt16mnLjhSsKQcAy4Jxjo1fVgPG2L8hou8uvHY6ncGRkZE/iV1FS6O2tvY7RET79u37i1jXAgDwvNCXAcBat1b7MW5w6m2Yzuy8NVE50R8sMzT+sUBMNAkRT76zqWR3Sn1ueeLYR+81SLnfHC/X301V2ztStcHBp45We6y50WqTYlqa15Sb6zWVlCzLaLX2mks5d9/9xfHA1ETW4uMmqzVYuu/QxZ1f/GqDZDJjdNUi8o3xYvma9xUe0R/68xRSbW22k5lnpWznTKxqg+WxVvsxWF02bNjwnZGRkVHO+bZnfe9aHIG2Xv0JES10BB+4XK6UWBYDAAAAABBrTGBUUJU0XFCVNBwNaWdaLo9uHGiaqfBPyvkLbXTVsI12+HeOdvh32twDY1kb4xvKDqXdcyVbI5Yt5bOWLeWzRNT+oP3MjEm+edOj3L+fpvb2pX6K0WopxvR0itrSUkanT8/VZbVGRE+KV8zMGjMV5HtfdLRaafWhgZK9B/664fSvNzSdP30sGvAnERGp0ajz/oUPPtt169qe8mOnLlSc+lxbLDdFWE0suz2d5qqknsiZ4V1q88xB0rmZiMjwRjaEftBVLBXHXbOdyqoRnCYl1rUCwPqAEWirEGOsLiMjI72trW3NJ+v4vwQAsB6gLwOAtW699WPjfYH41qveitEOf4US1eMePc8Y6QkZ9vaCqqT60r2eblESnvpLz8dGqw0MpOleb+pzjVZLT/fOr602Ztm+zfuso9U0VRFu/uyHlR21lw+p0ahz8TlXcspg1We/cK5038HBT33Bl4A+HnFGTg8d1YdCFQ+dsAgBy/aUc5aDaU2MYYWctW699WMQGxiBBgAAAAAALw1PnmvWk+e6ZOj8cufNibzuusnKqaHQRm7M/X7DOYnTw+FN08PhTY1nhwNpRe7GjdWp9WlF7seuf8wEgR47Wm1qyizfvp3yzKPVmpsfP1qtsMBrLit76mg1yWQ29n3123VVn3nz3rW3v7+79+6takPTzEREgcmJ7Mv/47/9TtO599t3ffG3zmeXbZ180e/leiB6bEHnt4p/pdyfuRO9OHKK+9VMIiKSDZdc631TbZ7Zbj2acdq0IX7sEy4FAPBECNAAAAAAAGBNEkTGS/d6ekv3enqDM7K1+dJY2VDLbEVoVslcaKPKhmuwebZ6sHm22ploGcgpi6/ffCi9xeb65Kl9YlKSYn/llWH7K68MLxx7MFrtbl2q2tH5iaPVeDRq0wYG87SBwTz5+vW5g48brbZju9dUVPRgtJrN5VaPfud/uurzjtbV/vB7B4ZbmnZwzgUioumhgdLT/+n/Lkkv2Vi/561vXkrOyQu80DdynTCXJQybNsX/dfTi6Bbl7uRxUgwHEZExq+SEf973+2KOs872ataHYpIVO5wCwDPDFM5VCFM4AQBWF/RlALDWvWz92FDbbEp77XiltyewRZsPURYTRKYmZzuaC3ck1xdtTx5gwotP79OnpszRW7c86txOoKnayMiTR6s9wdxoNc+YmJnpfXS02lhXe/yNH//dkfHervKHn0XUsssrb+z7rW/XOBOT5Bd+kHXCCKiWyPuDB7Ru/27i9NEcWolFTeWJl2zHM28zk4CNGdaQl60fg+WBKZwAAAAAAADzsjbET2RtiD+rKfr51prx4r6GqcqZsUgJcWJERIbOTeN9wYrxvmDF3feGpjNK3Q2bDqQ1JmU5/M97TzEpSXGcOjVEp04NLRzjhkFKU1O8XF+fqnZ0pGkDg6n62Fiq4fM9ZbTaQL42MJD/0Gi1xIRJMS3deyA3Z2xy6+7BhuGezbOT47lzz6JL/Q13qoda7m0r2rn3yp6vfPO22WbTn/c51gvBZZIdXyk4p/UF7kbODp80JqLFRESkcataP/WK1uHbZqlO/cCyPaUnxqUCwBqBAA0AAAAAANYlySwa5UfS28uPpLfPjIWdLZfHtgy3+SqiQe3BjvdyWEvsrZ8+0ls/fTgu1dqdtyWxfuOBtHazVXzhEIoJAlm2bp21bN06S4+srRa9dcuj3G9O1Xp7U7Xh4TR9YiKVVNX8sYtwzoyp6RRjam5tNTsR7SWiycS4aGtGkhAQmZmISFcUW3vNpZO9d2/v3nTw6IfbX/9ykyCKL/10IynPNeX6zoYfyjfGi+Vr3ld4RE8kIuIhLSV6ZvgbSsN0m+1k1hkp2zEb41IBYJVDgAYAAAAAAOteQpo9uO8rBde4wa/1Nkxndt6aqJzoD5YZGl+YYsl83mhR47mRovuXxiKefGdTye6U+tzyxCVfeH5htJrjBUarJU/7rNXTPhqJd1JHWiJFLCYiIlLCobiG079+o+vs6eObCzfUFVXuaDcXFASk3NwQk6SXNlCz7PZ0miuTeiJnhnarLbMHSOdmIiLDG9kQ+kFnsVQSV2s7lV0jOCQ11rUCwOqEAG2VYIy5iMg1/9LEOcc+ywAAAAAAS4wJjAqqkoYLqpKGoyHtTMuVsQ0D96Yr/ZNy/kIbXTVsox3+naMd/p0298BY1sb4hrJDafdcydbI8tX17KPVGBFlzgYpzRekgaQ46kpNIFUSiYgoqKvOmx1NB9sabh8sHJ+l1EDYEBzOgOB0BoS4OL+QkOAXk5ICoifFL6VnBKS8XL+psDDwpN1B1wNmEXX753Jr9d2exsjpoWP6UGgrERFxErV234FAX6DCsiPlnOVA2n3G8OsYADwMAdrq8UdE9N2FF4FAIBjDWgAAAAAA1j2rQ1KrTmU1VZ3KahrvC8S3XvVWjHb6K5SIHrfQJuJX0zpvTrzSdWvieEKGvb2gKqm+dK+nW5SEFRnN9djRaprGlObmOPnu3TS1szNVGxhMLRwbS81qHUjs8cRTb0ocGfO7efrsVrqbl0aOqCIUjM/GZY6Nxgmjo0+8H7NaI8zl9Asut1+Ijw+IiYl+MSXFL6alBaTsLL+psNAvpqVFF3YLXYtEjy3o/FbxO0rT9J3opdFT3K9mEBGRbLjlGu8X1PszO6zHMk6bSuOXfPQhAKxdCNBWjz8hooXdRD5wuVwpT2sMAAAAAABLx5PnmvXkuS4ZOr/ceXMir7tusnJqKLSRG3O/M3FO4vRweNP0cHhT49nhQFqRu3FjdWp9WpF7eqVrZZLEF41Wa1s4rk9NmT03b3pK6u/m3O/v3DqsyynG/FCqkNVMTTke6kxLoPwJH2VP+0kyPp4B8mjUxqNRmzExmfrEAiRJExwOv+B2BYS4+I9Gs6Wl+qXMTL+UmxcwFeQHmcWyqne5NJcnDpk2J/xV9MORrcrdqWOkzu3YaswqOeGf9X1HzHXetb2a/aGYaAnHulYAiD0EaKsE5zxARAEiIsaYyhh7adcnAAAAAACIFUFkvHSvp7d0r6c3OCNbWy6PbR5snq0MzSqZC21U2XANNs9WDzbPVjsTLQM5ZfH1mw+lt9hcJiWWtYtJSYrj1VeHHK++OpRNdG16eNB5+xc/3j3Y3LjD0DQzEVHUbKLWzGTqzPKoeaLFWxRUQiZ/wGEEAm4eCrno0ywlo2mS4fMlGj5fIg0OPb4NY5zZ7cG5KaNuvxA/H7KlpPjF9PSAlJvjNxUV+cWEhJiuOcYExm3HMhssO1NaI6eHDmrd/l3ESSAipvcHtwX/sm2zuTzxovVE5h0mCas6EASA5YUADQAAAAAA4DGcCZboztdz63a+nls31Dab0l47XuntCWzRlLmRSkREwWk5p+WKN6etdvzV5GxHc+GO5Pqi7ckDTIj9GlqJmdnBk//TPzsfnJqsufWLH23va7izW5NlBxGRxg1TlxbJ6nFKSuaOvXU733zremJaRlDr63eofb1ubXjYpY+NufXJKbcxM+MyZmfdRiDgNoJB12N3C30U54yHQi49FHLpXm/GE9uZzbLwYMpoXEBMSPQLKSl+KS01IGVm+aXCAr+UnR1e7imjgtssO75ScFbrDdRFzg69YkzKRUREpHGrUj91Su3wbbPsT/vAsi25d1kLAYBVCwEaAAAAAADAJ8jaED+RtSH+rKbo51trxov7GqYqZ8YiJcSJEREZOjeN9wUrxvuCFXffG5rOKHU3bDqQ1piU5fDHunZnUnL0yO/94xo5FLxx65c/ruy+dX2fEg7FEREZmmYebGrYM9R8b2daUWnjts9/sTbj+PGRp11PH5+wqF1dbm1w0KWNjbr1iQmXMTXtNmZn3Ybf7zICATePRBxPu8YDimIxpqZTjKnpJy9hIwg6czgCgssVEOLj/GJ8gl9ISgqIqal+KSPDL+XmBkxFhQHBbtef5fvyOFK+a8r5nQ1/r9yYKJGve0/yiJ5IRMRDmif6wdA3lfqpVtsrWWelLMfsi94LANYWBGgAAAAAAACfkmQWjfIj6e3lR9LbZ70RR/OlsS3DbbOV0aD2IACSw1pib/30kd766cNxqdbuvC2J9RsPpLWbreILBzwvwuJwavu//ru393z563V1v/55Wce1K9URvy+FiIgbhjja0Vr1m3//v1em5BW0VLz6ek1+1Y7HLqIvelJk0ZMyQbRn4kn3MsJhUe3pcWr9/W5taNitj4+7jKkptz4z7TZ88yFbMOgiwxA/sXDDEHkgEK8HAvH6yAg9ac4ns9lCgtMZYG63X0xI8AuJiQExJdkvpqUHTDk5fqmwwC+mpMifNJqNMUaWPZ4Oc1VSd+SDod1q6+wB0rmZiMjwRjaGftBZLJXEXbOdyq4R7FJMp6ACwMpBgAYAAAAAAPAc4lNtoX1fyb/ODX69r3E6s+PmROVEf7DM0LhlvgnzeaNFjedGiu5fGot48p1NJbtT6nPLE2O6u6Nkthi7vvhb93a88ZWme2ffK2m5dK46ODWZtVDzRF/P5nN/9h82x6dndm058WpN6b5D/c86hVKw23VLWZnPUlbme1IbbhikDQ7atZ5etzY85NJGx9zG5IRbn55xGT6f2/D73EYg6CJFsX6ae/JIxKFHIg6amEjTnvjwkiq4XH7B5fILcXEBISHBL6Yk+8XU1ICUmek35Rf4pbzcEDOZOLOIuv3zubX6bs+9yOnBY/pweAsRERkkaW2+A4HeQIVlR8pZy4G05vm9GgBgHUOABgAAAAAA8AKYwCi/Mmk4vzJpOBrSzrRcGdsw0DRT6Z+I5i+00VXDNtrh3zna4d9pcw+MZW2Mbyg7lHbPlWyNxKpuQRR5xanPtW89+Zn2tqsX85rOv189OzpSuHB+dnS46Mr3/7Ko/r13BjcdOl6z5cRrHUu5FhkTBDLl5oZNublhInpiqKjPzJjUri63NjDo0kdH3frEuEufnHp4ymg47PyUGyCYjJmZJGNmJunJhTHOHI7A3AYIcX4hId4vJiaNiwmll0gpKiPVlExERLLhlmu8X1SbZ3ZYj2aeNpXGeZ/9uwAAawUCNAAAAAAAgCVidUhq1amspqpTWU0T/cH4litjW0c7/ZVKRI9baBPxq2mdNyde6bo1cTwhw95eUJVUX7rX0y1KAo9FzUwQaOPBo30bDx7t66m7md7w/q+qJ/t7Ny2cD0xOZN/82Q+/2nTu/fGSfYdqqj77RrNkMq/YjpRiQoIq7tgxRTt2TD2pDZdlQe3rc2h9fW5taMite8dd+tSk25iecRs+n+vBBgiaZvrEG3LOeDDo1oNBtz42lvnRifeJiJGUs5csm94gweomIiJjRskN/bTnH3J1YJQL7e2CUwwwp0sW3O6oEB8ni/EJUSEpURZTUqJCXJy63BsiAMDyQIAGAAAAAACwDFJynbMHv1F02dD5lc5bE3nddyYrp4ZCG7kx93sY5yROD4c3TQ+HNzWeHQ6kFbkbN1an1qcVuadjVXPBtl2jBdt2/XS49X5S3a9/vs/b1b6Vcy4QEYV9s56G9995s/XyuSOFO/fW7njjKw0Wu+OJsyVXErNYDHNpacBcWhogouHHteGGQfrYmFXt6XFrg0Nzo9kmJ9zG9LRLn52bMsoDQRePRu1PvhMnbaCWtJG7ZNnwGpkKjhITRGKMETPnpnPVk67UnyWl6x0iXX5MoYwzszlKFovMLJaoYLXIzGqNMqtNZjabzOy2qGB3yMzpjAoupyy45kI4IT4+KiYmyWJKclRITFQQwgGsPARoAAAAAAAAy0gQGS/d4+kt3ePpDc7I1pbLY5sHm2crQ7PKg9FNqmy4BptnqwebZ6udiZaBnLL4+s2H0ltsLpMSi5ozN5ZNZW4s+/VEf++lO7/88Z7h1uZthj43eksOheJbLp57rfPa1UN5lTuu7/zCW3ccCYmPSYtWFyYIJGVkRKWMjCgRjT+pnREISGp3t0vrH3BpoyNufXx+yujMzEdTRkNBl3z/Z4LaV0OW8i+TlFo2dw+TjSwbP0+m/EOktL1Lan8tEV+0dwTnjMuyjWTZxonouYbxMcbJZJLZfAjHLBaZWa2yYLVGmd0mM5s9KjgcMnM45kI4tzsquONkISE+KiYmykJyclRMSlKYJMVkxCPAWoUAbZVgjLmIyDX/0sQ/zfx9AAAAAABYU5wJlujO13Prdr6eWzfUNpvSXjte6e0JbNEUw7HQJjgt57Rc8ea01Y6/mpztaC7ckVxftD15gAkr/ytCSm6+/9T//C/P+MbHrtz+xY939t+7u0tXFBsRkSpHHZ03rh7rqbuxP2vz1ts7v/DWjYT0zNCKF7nEBJdLs1RUzFgqKmae1IZrGtMGBuxqb69bHRxyG6P3C5mWt5kJTjsRkWCNI2vF18m84VVN6Tkd0QZvCVxRLKTrL/47OOeMFMXKFcXKA4G4T37DE5hMylwAZ5aZxRplVqvMrNaoYLPJzG6PMrtdFpyOqOB0yYLb9SCEE+LjZTE5WRaTk2VmsazYVF6AWEOAtnr8ERF9d+FFIBAIxrAWAAAAAABYZlkb4ieyNsSf1RT9fGvNeHFfw1TlzFikhDgxIiJD56bxvmDFeF+w4u57Q9MZpe6GTQfSGpOyHP6VrjXOkxY59g//6eWw33f99i9+VNVTd3OvGom4iIh0VbX0N9ypHrh3d3dG6ab67a9/6VpqYcnsSte4kpgkcVNBQchUUBAiolEiaue6cTp6cXSr0jB1mGTDTUQkWBMl66avudjubw9bq9POSaW2IX1iwmJMT1v06WmrMeuzGH6f1QgELDwQtBqhkIWHw1YjHLbwSMTKo1ELj0atXJYtXJatXFEsn2odt09DVc1cVc38RX7zlCT1wSg4i+VBCMdsNlmw26LM7pAFhyPKnA5ZcLlkwR03ty5cYmJUSEqSRY8nKlitCOFgTWCcY9TmavDICLQP0tPTU9rb2/97LGtaCrW1td8hItq3b99fxLoWAIDnhb4MANY69GNrx6w34mi+NLZluG22MhrUUh7ThMelWrtztyQ2bDqQ1ma2ivpj2iw7JRIR63710y2dN2qqo8FA4kMnGeOegqKmqs+8UZNTXjkRi/piyYhoUvTc8C61dbaaNG5dfE5IsXZaD6VfMJU8/46dXJYFfXLSok9OWozpGas+O2sx/D4r9wcsRjBoNUJBCw+FrTwSthiRiJVHFoVwimLhsmwlVTW/+JMuEUnSmNm8KISzyMxqmwvhbFaZ2R1R5nDIg2bzLsNm5cVp6e/OrwsnCw6HyhwOTXA4NOZ0asxsNrA+HDzNhg0bvjMyMjLKOd/2rO9FgLYKMcbqMjIy0tva2tb8Dzj4YQ0A1gP0ZQCw1qEfW3u4wamvcTqz8+ZExXh/sNzQuOXRNqJJiHjynE0le1Lqc8sTx2JRp65prOH9X21su/phdWhmOv3R84lZOe1bX/lsTfHu6qFY1BdLxoxsi5wdrta6/buIk7j4nJjlaLQez7goZTh8saiNqyrTp6bmQ7hpqzEzF8IZ/oDFCAasPBiyGOGQlYcjcyHc3Eg4C5ejVi7Ph3CK8rG/kzHHGCdR1JkoaiSKGkmSxiRJY4u+JknSmEnSSDJpzDT3QZKkM7NJYyazxsxmjcxzn5nZpDGLZf7DqjGrVWM2qyZYbRqzWnVmt2nMbp8L8BaCPJMJIcsqhgBtnUGABgCwuqAvA4C1Dv3Y2iaHNanl8tjG/qaZSv9ENP9xbWxukzdrY3x92aG0e65ka2Sla+SGQc0Xzxbev3Cm2j8+lvfoebcnra/s6MmazYdPdL9sI4S0kVBc9NzIIX0oVPHQCUa6VOi+ZT2ReVVMsKz4n9mL4prGjOkZsz45MTcddWbWYvh8ViPgtxiBoJWHghYjHLbwcMTKI2ELj0StxkIIF5Ut8+u4WWi9rf8tMIPERaHd4vBOFPUH4Z0kzYV3pkVfLwrx5gM8nczzAZ51LsQT5kO8uTBvPsCz2+cCPKdTYzab/rL9G3sWCNDWGQRoAACrC/oyAFjr0I+tHxP9wfiWK2NbRzv9lUpE/9gC8oyRkZBhbyuoSqov3evpFiVhxX/h67xRk9X4wbvV00MDpY+ecyQkjm7Yf6Sm4tXPt4ov2S6QaqfPE704etSYiJY8dEJksmlj/FXricybgk3SYlReTHDDIGNmxqxPTlqMqWmrPjtjMWbnQjgeDFqMYMjKQyGLEQ5bpxWlXIhGmSsYHOPRqJUrioXrukiaJnFdl0jXJDI4kiMiIlHUSRQfDe8+GoH3yCg8kiR9YTQeM5s0Mi0agbcQ4M2HeLbjxwek1NRVv+vuk7xIgIZNBAAAAAAAANaIlFzn7MFvFF02dH6l89ZEXvedycqpodBGbsz9bsc5CdPD4U3Tw+FNDWeGQ/Fptp7UAld3QVVSd0K6fUU2KiveXT1UvLv6RwNN9Sl3f/PL6vGervKFUUahmen0ul//7EvNH56ZKt5dXbv99S/fM1mtMVnHbaWZiuPGTcVxbyv1U7nR2rHj3KdmEhGRzi3q/Zljaqdvl3lr0kXr4fRGJgkvxcL6TBBITEpSxKQkhYgCT2vbUVubTURUvG/f95/UhsuyYITDIg+HJSMUkng4LPFwRDIiYYlHoxKPRCUuyyKXoxKX5fkPReKKIpGqSlxRJK4qElfUudeqKnFNE0lTJa5qEmmaxOc/SNfnPi98retzX68Gui6SroucyEJEtJRJtZSR+d+l1NSYTBmPtdXxhwsAAAAAAACfmiAyXrrH01u6x9MbmlUszZdGywZbZitDM0rmQhtNMRyTA6HyyYFQefOlMbK5TOOJmfbujNK47oKqpH6LfXlHO+WUV07klFf+0tvdcfHOOz/dO9LeUskNQyIiigYDSU3nT3+urfbS4YJtu67tePOtu3Z3nLKc9awW5sqkflNF4l/Jtd6Nyu2JozysJxERkWy4lFsTn1ObZ/aYd6ZcsOzxtDO2vmY3LjdmsRiixWJQQoIai/tzwyAejYo8HBaNUEjioZBkhMMSj0TmPqLyXJAnR+e+XgjxVEXkynyQp6gPQjyuaQ+CvLnwblGQt3j03aLPZBjiJ1f6/JjN9lKNklwMARoAAAAAAMAa5og3yztfz63b+Xpu3XCbL6XtmrfC2x3YqimGY3G7SED1DLf5PMNtvj133h3QXcnW/pQcR3dOWUJ31sZ4LxOWJ6xJLSyZfe2P/vX7MyNDl2//8se7Bu837tRV1UJEpEYirvaaSye7bl07kLul6uaON79yK86TtubWA3tWjDGyVqe1WnZ52qMfjlQq96YPkWI4iYh4SEuRL46+pdRPDVqr086ZtyYOxrpe+HSYIBCz23Wy23UxOTkmgTDXNMYjkY8CvFBY4nMj8EQeiUhGJPpRiDc/Ao+Uj0biLRqBJ/KF8G5uJJ7EVVUSkhLX7PTNF4UADQAAAAAAYJ3I3BA3kbkh7pyh8/MD92fSBptnCicHQ4XBKTmHc3qwPhQ3SPSPRwv849GC7jtTxyWzEIpPs3WnFri6C7Yl9SSkLf10z4SMrNCJP/yjD4PTU7W3f/Hj7X31t/eoctRBRKQriq3nzo1DffV39mVu3Fy34823riXn5D11St96wEyCYTuZVWepTrsXPTe0W23zVZPOzUREfFbJjvxm4HfkW+Pt1qMZ500F7slY1wurH5MkzlwuTXC5XtqRYssFARoAAAAAAMA6I4iM521NHM3bmjhKRDWRgGruuTuVO9rhK5weCRdGg1ry4vbz0z23TA6EtjRfGiOb2+RNzLR3Z5bEdedXJQ0s5XRPZ2KSfPgf/EGtHArevP3OTyq6b13bJ4dC8UREhq6ZBu837h5qvrcztai0cdvnvlCbubFsaqnuvVoJDkm1v553VZ+K1kXPDh/QegM7aD7wNMajpeG3e0rEHEe97XjmJTHNvu6DRYDVCAEaAAAAAADAOmdzmZTNB9M6Nx9M6yQimhwMuXsbpgrHe4KFs95Iga4atsXtI341ddjvSx1u9e29/e6A5k629ifnOLtzyuJ7lmq6p8Xh1Kq/9jt3dn/563fvvvvLzR21l6rDvlkPERHnXBjrbKt870/+XWVybn5LxaufrynYtmv0hW+6yolJ1rDjq4UfaIOhG9Hzw0f0kXD5/CmmD4Sqgv+jY4tU5L5hO5FVK8SZozEtFuAlgwANAAAAAADgJZOc7fAnZzvqiahe1ww22DybPtg8Uzg5ECoMTsvZj0z3lHzj0ULfeLSw+84kSRYhmLCwu+e25O74VFvoRWqRTGZj55tfadrx+pea7p19r6Tl0rnqwORE9sL5yf7eTef//D9tik/P6C4/9mrNhv2H+5ggPO2Sa56U7Zh1/nbJL9S22WvRS6PHjCm5kIiIDJK0Dn91oKd1m2lzwlXbsczbzCpiqh7ACkCAtkowxlxE5Jp/aeLz2zwDAAAAAAAsJ1ESeN7WxJG8rYkjRHR1brrnZO5oh//x0z1lwznRH9oy0R/acv/i3HTPpI929xww255vuicTBNr6ymc7tpx4raO99lLuvbPvV8+ODhctnJ8dHSm8+oO/Kqx//52hTYeO12w58VqHIIr8BR9/VTNtiB8zbYj/O/nORIF8bfwYD6jpRESkcZvaOH1CbfPtMlcmXbQeSrvHRGFdfy8AYg0B2urxR0T03YUXgUBgyRftBAAAAAAA+CRz0z3TOzcfTJ+b7jkQjOttmC4Y7w0Uznqjj53uOeT3pQ61+vbe/vXcdM+UXGd3dllCd9aGuPFnne7JBIE27D/Sv2H/kf7eu7fTGt5/p3qir2cTETEiouDUZNatn7/9VtO59ydK9x2sqfrsm/cls8VYqudfjSzbU3rMVcl/KV8d26zUTR7hET2BiIhkPU65Mf66en96j2W357x5Z0oXYxiLAbAcEKCtHn9CRH8x//UHLpcrJZbFAAAAAAAAEBEl5zh9yTnOB9M9B+7PpA82zxZODYYKA9NyNj1humfX7UkyWYRgfJq9O7XQ1V1QldTzrNM986t2jOVX7fjZSHtLYt2vfrZvrKt9KzcMkYgo4velNJz+9Rutly8cLti559rON75Sb3E41+10RiYwbj2Yft+yx9MavTCyTWmaOUiqYSci4kEtNXp+5GtK3WSf5WD6OfPmhJFY1wuw3iBAWyU45wEiChARMcZUxhiG3wIAAAAAwKoiSgLPr0gaya9IGiGiq2G/Yu65O5U32ukvnB4OF8ohLWlxe1U2nBP9wa0T/cGt9z8cJZvbNJaU5ejOLI3rzq9MHPy00z0zSjdNZ/zz/++7U4P9l2794kd7hlvubzd0zUREJIdD8a2Xzr/aef3qwbyK7Td2fuGrt52JSfIyPP6qwMyibjuVfcuyP60hcmZor9bh30sGNxERGTNKXuSd/t9Tboy3WI9mXJDyXNOxrhdgvUCABgAAAAAAAM/F7jYrZYfSO8oOpXcQEU30B+P6GqYLvX2BQp83UqCr3Lq4fcSvpg21zKYNtczuu/WrAc2dbOlPyXV255QndGeWfvJ0z6Ts3MCpf/ovzvonxq/e/sWPdvQ31u3WFMVGRKTJsqPrZu3R3rpb1VllW27vfPOtGwkZWS+0wcFqJjhNiuML+Zf08cidyLnhA3p/cNvCaEB9LLIp9MPuDWKu867teOZl0WPDEkEALwgBGgAAAAAAACyJlFynLyXXeZeI7uqawQaaZjIGW2YLHj/dk398ume6vTutwNVdsC2pJ87z5Ome7hRP5Ojv/5MrkYD/+u1f/Kiq587NvUok7CYi0jXV0t9QVz1wr35PesnG+u2vf6k2rah0dvmfPjZEjy3o/FrR+1pf4Eb0wshRfSyyiYiIOAl6X3B78K87tkol7mu2k1nXBKdJiXG5AGsWAjQAAAAAAABYcqIk8PzKpOH8yqRhWpjuWTc/3XPkCdM9+4JbJ/qCW5s+HCV7nGksMfPp0z1tLrd64FvfubnnK9+8c+fXPyvvvH61OhrwJxERccMQR9qat//6/2nZ5skvvF/1mTdrcrZUjq/Q4684Kc817fzd0p8qzTOZ8uXRY8aMkkdERAY3aW2+g4HuwA5zWcJl67GMOmYW9dhWC7D2IEADAAAAAACAZWd3m5Wyw+kdZYcfTPeMX9jd0+eNFOjaw9M9wz41LexbNN0zxdKXkuPsztmS0J1ZEjexeLqnyWrV93z56w0733yrsfGDX29ovfJhdWh6KoOIiDhn4z1d5R/8l/+3PDEzu2PLyc/UlOw9MLiSz76SzJsThk2b4r+v3Jookm+MH+dBzUNERKphV+qnTqlts7vN25I/tOxPa2YC1t4G+LQQoAEAAAAAAMCKS8l1zj5mumfh5GCoMDgtZ31suqc3WuTzRovmp3sG4tPt3Wnzu3vGeWxhIiJRknjVZ95srXz19daWS+cK7l84U+3zjuYvXGd6eLDk0t/8ecndd3/Rv/nIiZqyo690MUF4THVrG2OMLLs8Xebtyd3y5bFy+e7UEZL1OCIiHtET5BrvF5TG6b2WvZ7zlu0pPbGuF2AtQIAGAAAAAAAAMfXIdM8rYZ9iebC759x0z8TF7VXZcE30BSsm+oIVTRdGyR5nGk3KcnRnlMb15FcmDZitor75yMmezUdO9nTdrM1s/ODd6qnB/g0L7/dPeHOv//gHuffOvDdWuv9wTeVrr7eIkrTuRmMxUeDWIxn3LHtTWyLnh3eozTP7SeM2IiIeUNOjZ4a/odyZ7LYeSj9v2hA/Fut6AVYzBGgAAAAAAACwqtjjzHLZ4fT2ssPp7URE432B+L6G6cLxvmChzxvJf8x0z/SwbzZ9sHm2+vavBlTX/O6eueWJ3YU79g4X7dr348H7jcl3f/OL6vHuznLOuUBEFJqdTrv77s+/2Hzx7HTxrn2121//cqPZZlt364Mxq6jZP5Nz3difVh85O7RP6/LvJmMuDzCm5MLwz/sKxQx7k/VY5odStmM2xuUCrEoI0AAAAAAAAGBV8+S5Zj15rjoiqtNVQ+hvms4YavEVTA6GCoMzcjZxerAgmqFz04PpnrcmyWQVAwlptu7UwqTuQ7/zL89Gg0MX77zz072j7S1Vhq5LRERyMJB4/8IHn22vvXwof9vO6zu/8NU6uztu3e1YKcSZo44vFVzQx8K3IueGD+kDoUqiue+dPhIuD/2gc7OU77ptPZF5RUyyhmNcLsCqggANAAAAAAAA1gzRJBgFVclDBVXJQ0R0JTT70XTPmZFwoRx+ZLpnVHeN9wUrxh+a7vml7h1f0H421nE6c6i5YYeuqta5thFXR+3lE923rh/I2VJ5c+ebX7kVl5q+7oIkMc0ecH6j+F21x389emHkmDEeLSUiIk6C1hPYFfzL9kpTaVyt9UTWdcEhqTEuF2BVQIAGAAAAAAAAa5Yj3iyXH0lvLz8yN93T2xtI6G+cLpif7lmga9yyuP1H0z2JBPGAmpR3YMBQb2mzI7ezNSVqJyLSVcXaW3fzYH/Dnb0ZGzbf3fHGV66l5BX4Y/F8y8lU4J40Fbh/pDROZ0drxo7zWSWbiIh0blZbZg+rXf4d5i2Jl6xHMuqZSTBiXC5ATCFAAwAAAAAAgHUjNd81k5r/8HTPwRZf4dTcdM+sR6d7+iepkGgHifZKEq0tUS1yS9BVv3nuvG4aar63a7ilaUdqYcm9bZ/7Qk3mpvKpmD3cMjFvTRw0bUn4G/n6eKlyc+IYD2vJRESkGE7lzuRn1JaZPebtKRcs1amtjLFPuBrA+oQAbZVgjLmIyDX/0sQ5R68EAAAAAADwAh6Z7nk5NKtYeuom80e7/IUzI5FCOawlLLRlTCISt1glRxkJagdp0VvE9UkiIuKcC2Nd7RXv/Yf/syI5J6+14tXPXy3Yvns0Vs+1HBhjZN2b2m7ZmdIZvTi6VWmYOkyK4SIi4mE9Sb4y9mWlcWrYWp12zlyR1B/regFWGgK01eOPiOi7Cy8CgUAwhrUAAAAAAACsO454s1x+NKOt/GhGGxGRtyeQ0Nc4XTjRFyzwjc9N92RMING8gQRTKRlaL2nR28S14QfXmBzo23j+v/3njXGpP+kpP36qZuOBo71MEGL2TEuNSYJhO55Zb9mXej96bniX2jpbTfrcNFjuUzMj7w1+W7410Wk9nH7eVBw3Hut6AVYKArTV40+I6C/mv/7A5XKlxLIYAAAAAACA9S61wDWTWuC6Q0R3dNUQ+u5NZwy1zBZODYUKgzNKlmgqYKKpgAxtmLTILTK03gfv9XlHC2r+7m8K7vzq3ekN1Ycub3/9802CKPLYPc3SEuySav98bo1+IK0uenZ4v9bt30mcRCIiYyJaHP5Jb7GY5WiwHs+4JGU4fLGuF2C5IUBbJTjnASIKEBExxlTG2LrpeAEAAAAAAFY70SQYhduShwq3zU33DM7I1p67U3ljnf7C6dGcQkXKTDC0CdKit8hQO4ho7le2aGAiseH0T9+4d+78Z13JW71pJbvaUwvTh1MLXePxHluQCWt7dR4xwRJxfKXgrDYcuhk9P3xYHwpvXTinD4UqQt/rLJcK3TdtJzJrhARLJJa1AiwnBGgAAAAAAAAAj3AmWKJbjma0bXlouqencLwvt3BmdKRADd4x60ozEelERGRoM5Jv7FKmb+xKZuf1fBLNZWS2F4Tt8dZxV6LF6/bYxpOz7eNpRe5xu9usxPLZnoeU6fA5v1Xyjtrhux69NHrUmIgWExERJ1Hr8u8N9AWqTBvja6zHM28KNkmLcbkASw4BGgAAAAAAAMAneHi650ahr7Eys7e+d+NI6+WyqP+ei0idb2mQoXaToXaTGrbbo/6NeT7vpjyh46NVesw2cdYeZx53JVm88Wm28ZRc53haoWtSMotGTB7uGZhK4rymkrgfKncn86K13mPcr2YSEZHGrWrTzDG1w7fLvDXpovVIegMTBcysgnUDARoAAAAAAADAMxBNglG4PXmwcHvyINGOs+N9Y3F3f3N6l7ercaMc9MY/aMjDpMt1pMt1xEQPiebNJJo3kBKxxSuRSPzsWKRksHmWiIgYI8PqNE064s3jrmSLNyHDPp6a7/ImZzt8q3EaqLkquc9UmfRXco13k3J74iiP6IlERCQbLuXWxOfU5pk9ll0p5827PR2Mrb76AZ4VAjQAAAAAAACAF+DJS/O98o9/+ywRnR1uaUq6/+GZipG2lq1qNOJaaMP1cdIi46RFLpNgKiTRspkEKY8Ym9vBk3MSIgHVEwmonsnBUFlv/TQREQkiU+xu07gj0eJ1J1vHk7Ls4+lFbq8r2Rrz9cYYY2Tdn9Zi2e1pi14YqVKapg+RYjiIiHhIS4l+OPpV5e7UgGV/2nnzlsTBWNcL8CIQoAEAAAAAAAAskcxN5VOZm8ov6Jr2YculcwVdN2oqJwf6NnDDEOdaGGSonWSonSRINtXq2hRkUrmka4mux13P0Lk5OKNkBWeULG93gDpvzh03WYSgLc487kq0eONSbePJ2Y7xtCL3hNUhqY+7znJiJsGwvZJ1x1Kdei96bni32u7bRzo3ExEZs0pO5N2B35FvTbRZj2RcMBW4Jle6PoClgAANAAAAAAAAYImJksTLj53qLj92qjswOWG9d+Y3Zf2NdyuC05OZC20MLWIKz9QlENWRIyFpNDm3steZvCsQ9psSgtNyativenTVsD3u+qpsONXxqNM/Hi0YbvM9OG5xSNP2OPO4O8nijU+3jXvynF5PnmtGNAnLvr6a4DQp9jfyruiT0broueH9Wm9gB3ESiIgMb2RD+O3uUjHHUW87kXVJTLUFlrsegKWEAA0AAAAAAABgGbmSU6L7vvbbd/Z97bfvDN5vSGm+eG7raHvLVjUadS60Cc1MpYdmzqcz4UM9KTuvrWjX3ppNh050B6ZUx1h3IHV6OOzxT0ZTQzOyJxJQU7jx+N/n5ZCWKIe0xJmR8Ib+phkiImIC6TaXacIRb/G6ky3jCRn28bRClzch3R5YjvXVxGRryPHVwg+0geDN6IWRI/pIuGz+FNMHQlXBv2nfIhXFXbedzKwV3GZ5yQsAWAYI0AAAAAAAAABWSHZZxUR2WcV5TVU+bLl4rrDrZm3F1GB/6cIUT24Y4mR/z+bJ/p7Ndb/+eSCjdNO9zUdONGys3tK9cA1dM9h4XzBxoi/omRkNewJTcmpoVvHIIS2RiD6WiHGDxLBPTQv71LSJ/iBR3RQREYkmFrW5zePOBIs3zjO3vlpakXvcmWCJLsWzSjnOGedvl/xcbZ29Fr08esyYkguIiMggSevw7Q/0+LebNidcsR3PvM0sor4U9wRYLgjQAAAAAAAAAFaYZDIbW0681rnlxGudvvEx272z75UNNN6tDM1Mpy+0UaMRV39j3b7+xrp9zqTkodyt2xq2nvxMszMpOZpe5J5KL3JPEVHrQns5rEljXf6UyYGQZ3Y84glOyalhn+JRZeOx66vpKrcGp+Sc4JScM9blf3DcZBX99jjTuCvJ6o1PtY4n5zi9aUXuSbP1+UIu08b4UdPG+B/ItycK5Ovjx3lATSMiIo3b1Mbpk1q7b7e5MulDy6H0JiYw/jz3AFhuCNAAAAAAAAAAYijOkxbZ//XfvU1f/93b/Y13PS2XzlWMdrRu0WTZsdAmODWZ1fzhmayWS+deSc7NbyveXd2w8eCxHlGSHgROFruk5W5JHM3dkji6+PqBKdk21uX3TA2HPL7xaGpoRvGE/YrH0LjlcfWoUd3ti+punzdaNNQyf5ARtzqkKUe82etKso4npNvGPfkub0quc1YQP13oZdmR0mPelvwX8pWxzUrd5FEe1eOJiHhUj5Ovj7+hNE3vtezxnDfvSOlibOmnlgK8CARoAAAAAAAAAKtE7taq8dytVWc1RT5//8KZou5b1yqnhwZKOOcCERE3DGmit7tsore77M47P/VnbNjUuPnIycbMjWVTT7qmK8kScSWl9BdTSv/CMW5wmhoKxXl7A56Zkcjc+mqziicaUFP4/ML/D+HEokEtORrUkqeGwpv7GucOCyJTbS7ThCPB7HWnWMcTM+zjaUVub3yqLfS4WpjAuPVQ+n3LHk9r5MLIdvX+zAFSDTsREQ9qqdFzI19T6qb6LAfSzpk3J4y80DcTYAkhQAMAAAAAAABYZSSzxag49bmOilOf65gdG7HfO/te+cC9+orw7EzaQhslEnb31d/Z31d/Z78r2TOYWzE3xdORkPiJC/MzgVFyjtOXnOP0EVHnwnFN0QVvTzBpoj/omR0LpwamZE/Ip3iUsJ7wuOsYOjeFZpWM0KySMd4bXFS/ELa7TV5nomU8zmMbT8p2eNOL3RM2l0khImIWUbe/mn3T2J/WEDk7tFfr8O8hg5uIiIxpOS/yTv/vKTfHm61HMz+Ucp3Tz/+dBFgaCNAAAAAAAAAAVrH4tIzwgW/+3k0iutl793Za65ULW8c62rZoimxfaBOYHM++f/50dsvFs6eScwtaivdUN2w8cLRPEMVnWlNMMotG5oa4icwNcRNE1LxwPBJQzaOd/pSpoZDH542kBqdlT9ivpmqKYX/cdTTFsPsn5Xz/pJw/0vHR+mpmmzjriDd7nYmW8fg023hKntOb9tmcy9ZZ5Xbk7PBBvT+4jeY3QtBHI5tDf9+1Ucx11knpTNAs3Hi27xzA0kGABgAAAAAAALBG5FftGMuv2jGmRqPn71/4oLj79vWKmeHB4oUpnoauS+M9nVvGezq33P7lj32ZG8oay4690pBesnHmRe5rc5mUgqqk4YKqpOHFx33jEcdYV8AzNRxK9U9EPaEZxRMJqB5DnxtN9igloscrkUj8zGikdLB5loiIGCPD6jRNOhLMXk+m40Z2QMmy+tVsIiLiJOh9wR0lAzY+laWGjK2qWXDOjWIDWEkI0AAAAAAAAADWGJPVqle+9npb5Wuvt82MDjvunflN+WBTQ2XYN+tZaKOEw3G9d28d6L1764A7JbU/t3J7w9YTr7XY4xOWLICK89hCcR5bLxH1LhwzdM4m+oPx431Bz8xoODUwGfWEZhVPNKQlE6eP7Q7AOQmRgOqJBFTPJBG1EFGCyGizXeRJ4txuAoLBWMqA2Rn405Z/at6SeNl6NKOOmZ9vV1CA54EAbZVgjLmIaGFrYRPnHFuOAAAAAAAAwCdKSM8MHfz279/ghnGjt/52euvlCxVjXe3luqLYFtr4J7y5TWffy22+cObVlPyClpI9BxpKqw/1P+sUz09DEBlPLXDNpBa4ZoiofeG4EtXFsS5/8uRAMHXWG/UE59ZXS1WjuvvRa8zonGoCGvNIjDbbRHKL878ia9yu3J065bs7dXzUJg37kywDVrfZ74g3B5yJloA7xRqIS7GGRJOA6Z6wpBCgrR5/RETfXXgRCASCT2kLAAAAAAAA8BAmCFSwbddowbZdo0okcvb++dMlPXduVEyPDBXT/CANQ9dM3q6Ord6ujq23fvH2bObG8oayY680phWVzi53fWarqOeUJXhzyhK8i48HZ2TrWFcgZWoolOobj3pCM7In7FdSdZVbxzVO4wGNsk2MNthEsgtzQZqNSCqIaLnhATW3K2pQl2LQouFo3GQRQiarGDDbpIDFIQWsTlPA7jIF7PHmgCvJEojzWAOuJGtYENmSB4iwPiFAWz3+hIj+Yv7rD1wuV0osiwEAAAAAAIC1y2yz6VWffbO16rNvtk4NDTibzr63ZfB+Y0XE73vwu6YcCsX33LlxqOfOjUNxqWl9eZU7Grac/EyLzeVWV7JWZ4IlWrTDMli0I3lw4Rg3OM2Mhl1j3YHUmdGwxzs6Xn01oEtZUUksNguCeT5IswuMtthFKrUK1CMb1KsYpHJiqmw4Vdlwhn1q+hNvzMgwWcSg2TYXtFkdUsDqlAI2tzngeBC02YwxHsEAACfUSURBVALOBHOECZgk9rJDgLZKcM4DRBQgImKMqYwhBQcAAAAAAIAXl5SVEzz0O//oGjeMaz13bmS0Xr1Y4e1qL9dV1brQxucdy2v84N28pvOnX/XkFbaU7DtYX7rv4AAThJjUzARGiZmOQGKmI0BEXbW1o2VERLt27viridaZ1OCtyd22iegG0eBmIiKLwGijTaRiq0B9skHdskHRT/qtmpOgRnW3GtXdoZknLwvHBNJNlrmQzWwXA1a7FLC6TAG72xRwJFgCriRLID7VFrC5TDKCtvULARoAAAAAAADAS4AJAhXu3DtSuHPviBwOnW06d7q0t+5mxczIUCHR3OL+hqaZx7raK8a62itu/uyHM1mbyhvKT7za6Mkv8sW4fCIiEk2CkbYlaZS2JP3SCGsm+fJopdoyu5dH9TgiIokxKrKKVGgTdTXJ0jXpsXfP6pxFg6orGtRcclhzKRHNpUZ1l65x6yfdj4iIGyTO7R6qx9P0k9sJIlNNVjFgtooBi31u6qjNZQrY3KaAM9HidydbA3GptqDVIa3oCD9YGgjQAAAAAAAAAF4yFrtD2/75LzZv//wXmycH+lxNZ9/fMtjcWBEN+JMX2sihYEL37euHu29fPxyXmt6bv21n/ZYTr7VZna5VEQAJdkm1ncq+ZT2WeUe+Olam3Juu5iEthYiIcRLNk3JpxqRcmp1ma7HsTa0xbYwfXfz+aEgz+bwRp38y6grNKK6wT3FFgqpLDi0EbbpLjepuQ+emT1OPoXOTHNIS5ZCWGJiSn9hOlFj0wfps9rlpo1anKWCPMweciebAQtBmtmKX0dUEARoAAAAAAADASyw5Jy9w+B/8QS03jNquW9cy269erPT2dJbpqmpZaOPzjuY3vP+r/Htn31NSC4rvl1YfaijeXT0YqymeizGTYFiPZNyzHEpvUm6OF8t1U/u5T8laOK+PRTaFf9G3SUiy9Jh3plw1Vyb1McbI6pBU60e7hT5R2K+Yfd6Iyz8pu0KziiviU1yRoOaSQ6pLDusuJTo3oo0bny5j0TVu1YOaNRrUnrr2uWQSwiabGDDb5ka0WR1zo9kWgra4FGsgzmPDjqMrBAEaAAAAAAAAABATBCreXT1cvLt6WA4FP7h39r0NvXdvVcyOjhQutDE0zTza0Vo12tFadeMnfzedtXlLQ/mJ1xpTcvP9saydiIgJjFv2pHaYd3s61MbpXPnmRLUxGS1aOG9MyQXR00MFcq132FyVXGPZ42lnwievP253mxW72zyVXkxTT2rDDU6hWcU6Ox5xBeeDtrBfmZs2GtJcckRzqRHdpcq6i3P6VKmjphp2TTXsEb+a+rR2kkUImhfvOOpY2AjBFHAmzm2E4E7GjqMvCgEaAAAAAAAAADzE4nBqO974yv0db3zl/kR/r7vp7Htbh5rvVUSDgcSFNtFgILHrZu2Rrpu1R+LTM7rzt+1q2HL81TaLw6nFsnbGGJkrkvrNFUn9arsvVa71Vuuj4c00v84b96uZ8qXRryi3JiZN5Qm11gNpTcz8YtMlmcDImWiJOhMtUSKaeFI7Q+csMBW1+cajruD0/Ig2v+qKBlWXHNZcckR3qRHNpcqGc6HeT6LJhlP7tDuOWsWA2S4GLHZTwOqU5jZCiDcHnEnWQLzHGnAmWrDj6BMgQAMAAAAAAACAJ0rJzfcf+b1/fJUbxtXOGzXZ7TWXKrw9nWWGppkX2syOjhTW/+aXhffO/EZOLSi+X7r/cEPRzr1DsZ7iaSqN85pK436uDQQ/jF4Z26sPBCuJk0hExMNasnJz4vNKw9Rh08b4a9ZDGXeFZV7gXxAZj/PYwnEeW5iIvE9qp2sG809EHQtBW9g3H7SFFo1oi+ouTTEcn+rGi3ccnSUiijy22Uc7js6NaLM65tZns7lNAWeCJZC5MW7UmWCJPvuTr30I0AAAAAAAAADgEzFBoJK9BwZL9h4YjAYDH9w785uNvXdvV/i8o/kLbXRVtYy0t2wbaW/Zdv3HP5jM3ry1YcvJ1+4lZecGYlm7lOOccX696D19PHI5eml0t9YT2EE6nwsAZcOtNky/ojbPHDQVxd20Hk6/JSRYHp8wrRBREnhCuj2YkG4PEtHok9qpsi76xqMO/0TUFZx5OGhT5jdCUKK6S1cN26e570M7jpLysfN7xLzvFe9K6X/uB1vDEKABAAAAAAAAwDOxOl3qzi989d7OL3z1nrenM+7+udNbh1qaKuRQMGGhTTTgT+68cfVY542rRxMysrrzt+1qKD9+qt1id8RsiqfosQUdXy44b/iUmuil0e1qu283qfOjuFRuU1tnD6ntvn1SvrPOejD9uphuj/nabk9jsoh6crbDn5zteGqdSkSTZr0Rp39CdoUWgrag5ooG1bmgLToXtBkatzztOq5kS0yD0FhCgAYAAAAAAAAAzy21oNiX+vvFV7hhXGmvvZzTUXu5cry3e7Oha6b5JmxmZKhoZmSoqPGDd6OpRSVNG/cfbijYvnskVlM8hThz1P753Bojot2QL41Wqi2ze3lUjyciIoObtO7A7mBPYKeY5Wi07k+rlfJdT9xAYC0w2yTNk+ea9eS5Zp/WLhJQzT5vxOmfWgja5tZnWxjRFp9qQ4AGAAAAAAAAAPC8mCDQhv2HBzbsPzwQ9vtO3zvzm4199Xcq/ONjeQttdFWxjrTe3zHSen/HtR/97UR22daGLSc/cy8xMzsYi5oFm6TZTmXfth7PrJNrvJuVxqlqHtQ8RETESdAHQ5WhH3ZXCmm2VsseT415U8JILOpcKTaXSbG5TNNpRTQd61pWGwRoAAAAAAAAALCk7O44ZfeXvta4+0tfaxzrao+/f/6DrcMtTRVyOBS/0Cbi96V0XLtyvOP61WOJGVmdBdt3N5Qff7XDZLW+0I6Yz4NJgmE9lN5kOZjWpNycKJbrJvfzWSV74bwxFtkY+WX/RvnyWK95R8pV87akXsawW+XLBAEaAAAAAAAAACybtKLS2bSi0suGrl9pr7mU23H9SsVEb/cmQ9fnpnhyzqaHB0umhwdLGk7/KpJaVNq08eDRhvzKHaMrPcWTMUaW3Z5Oy25Pp9I4lSPfnKg2JqLFC+eNaTk/emYoX77uHTFXJtVY9qa2MYHxFS0SYgIBGgAAAAAAAAAsO0EU+caDR/s2HjzaF56deb/x7Hub+uvvVPonvDkLbTRFsQ23NO0cbmnaaY+L92aXVzRsOfmZpljUa96aNGDemvRDtcOXKtd69+kj4TIiYkRE3K9myJfHvqzcnpwylSXUWg+m3WNmccVHzsHKQYAGAAAAAAAAACvKHp+g7Pny1xv2fPnrDSPtLYnNF85sHW67v1UJh+MW2oR9s6ntNZdOdtRePu7IzFHiizZE1G3bxJWe4mkqifOaSuJ+oQ0GL0avjO3R+4NVxEkkIuJhLUm5NfE5pXHqsGlD/DXrofS7gtOkrGR9sDIQoAEAAAAAAABAzGSUbprOKN100dD1S61XLuR1Xq+pmOzv2WToukRExDkXgkP91uBQv/UH1y79f9JKNtzbdPBYQ+7WKu9KTvGUsp0zzq8Vva9PRC9HL43u1rr9O0jnFiIikg2X2jh9Um2eOWAqjrtlOZx+U0ywRFasOFh2CNAAAAAAAAAAIOYEUeSbD5/o3Xz4RG9weur9e2ff29zfcKciMDnxYDF/TZHtQ/cbdw/db9xtsTtmE7NyetJLN/UU76nuifOkrUhgJaZYQ44v5V8w/EpN9OLodrXDt4cUwzFXILeprbMH1XbfXinPWWc5mH5dyrD7V6IuWF4I0AAAAAAAAABgVXEmJsl73/rm3b1vffPucOv9pBtn3v+2r7vdrkXCD4acyeFQ/GhHa9VoR2vV3Xd/To6ExNHknPyerLIt3UW79g1a7A5tOWsU3GbZ/vncWh7Vb0YvjVaoLTN7eURPICIig5u0nsBurTewU8x03LPsT6s1Fbgml7MeWF4I0AAAAAAAAABg1crcWDaVNu0LpG7bE4hXQhc6r9dUTA31lxiaZl7cLjQznR6amU7vb6zbd+3t72txnrQBT0FRd27F9p7crVVeQRSXZbdMZhU12ytZd6zHMu7Ktd5NSsNUNQ9qqURExEnQh0IV4be7K4RUW5tlj6fGvDlheDnqgOWFAA0AAAAAAAAAVj0mCFR29JXusqOvdGuKLHTdvJY1eL+xYLKvpzAwPZlJnLOFttwwpNmxkYLZsZGCjmtXSLJYwgnpWT1pxaU9Rbv2dafkFSz5tEomCYb1YPp9y4G0+8qtiSLlzuR+Y1Z5sMOo4Y1siLzTv0G+MtZr3p5cY96e3MMYe9olYRVBgAYAAAAAAAAAa4pkthgb9h8e2LD/8AARXQpOT1k6r1/NH2lrLpga7C+IBgNJi9trsmyf6Osum+jrLms69z5Zna6ppOzcnoyNZd3Fu6v7nIlJ8lLVxhgjyy5Pl2WXp0tpnM6Wb41XG+PRkoXzxrScHz07nC9fHx81VybVWPZ6WpkoLMvoOFg6CNBWCcaYi4hc8y9NfFFyDgAAAAAAAABP5kxMkitfe72t8rXX24iIxnu74rpvXS8Y62wvmBkZKtAU2b64fTQYSBpuvZ803Hp/x+1f/pi7EpOHk/MKunPKK3oKd+4ZkswWYynqMm9NHDRvTXxb7fR55FrvPn04XE5EjIiIB9R0+crYl5TbE9OmssRa68G0RmYR9aW4Lyw9BGirxx8R0XcXXgQCgWAMawEAAAAAAABYszz5RT5PflE9EdUbus76G+pS+xvrCsZ7ugp942M53DA+ykM4Z4GpiazA1ERWb93Ng1f/7q+V+NT0Pk9hcU9+1c7urE3lk0wQnnyzT8FUHDduKo77pTYUuihfHt2rDQQryZjLZHhET1RuT3xWaZw6ZNoQf916OL1OcJqUF7ohLDkEaKvHnxDRX8x//YHL5UqJZTEAAAAAAAAA64Egijx/286x/G07x4jomhwOSV03a7OH7t8rnBzoLQjNTKcvbm9omnl6eLBkeniwpO3Kh2Sy2QKJmdk96SUbu4t3V/ckZGSFnrcWKcsxK32t6H19Mno5eml0l9bl30k6txARkWK41HvTJ9SWmQNSkfuW9VD6TTHJGn6xp4elggBtleCcB4goQETEGFMZY5j/DAAAAAAAALDELHaHtvnwid7Nh0/0EhH5vKP2zhu1+aPtLQVTQwOFSjgUt7i9Gom4vF0dW71dHVsb3v8V2ePix5Ny8rqzNpX3FO2u7re53Oqz1iAmW0OOL+Z/aATU2ujFkW1qu28PKYaTiIg0btXafAeCHb69Up6rznIw7bqU4fAtycPDc0OABgAAAAAAAAAvrbjU9PD2z3+xmYiauWHQaEdrYk/dzQJvV0fh7NhIvq6qlsXtw75ZT7ipwTPY1LDnxk//XnclewY9+YU9uVuruvOqdo6KkvSpB8QILpNs/1zuNR7Vb0Uvj25Vm2f28YieQEREBklaT2CX1hvYIWY6mizVqbWmQvfE0j49fFoI0AAAAAAAAAAAiIgJAmVs2DydsWHzNBHd0VRF6K27lT5wr75wore7IDA5ns05f7AgGjcM0T8+lucfH8vrull7RDSZownpGb2pRaXdhTt296QVb5j5VPe1iprtZFad9VjGXbnGu0lpnK7mATVt7iYk6EOhreEf9WwVPNZ2y57Uq+ayhOHl+Q7AkyBAAwAAAAAAAAB4DMlkNop3Vw8X764eJqIrYb/P3HWjJneopalgaqCvMOL3PbR+ua4q1smBvo2TA30bmz88QxaHYzYxK7c7o3RTT/Ge/b3uFE/kafdjosCtB9ObLQfSmpXbk4XKnYn9xoySu3DeGI+WRn7VXypfGe0zb0+pMe9I7maMLdPTw2II0AAAAAAAAAAAPgW7O07ZcuK1zi0nXuskIpoa7Hd13azNH+1sK5wZHixQo1Hn4vZyKBQ/2t6ybbS9ZVvdr39GjsSkkeSc/J7ssi09RbuqB8w2m/64+zDGyLIzpduyM6VbaZrOkm+MVxvj0dKF88aMkhc9N5wn3xgfM1ck1lj2pbYwUcBa6ssIARoAAAAAAAAAwHNIys4NJGXn3iOie9wwaLC5MaX37u3C8e7OAp93LM/QNdPi9qHpqYzQ9FRGf8Od6mtvf19ze9L6PQVF3XkV23tyt1Z5mSB87B7m8sQhc3nij9Quf4pcO7ZPHwpvISJGRMQDapp81ftF5c7ktKksodZ6ML2RWcTHhnLwYhCgAQAAAAAAAAC8ICYIlFNeOZFTXjlBRDfUaFTsvn0ta6CpoWCyv7cwODWZQfPBFxGRoevS7Ohw4ezocGFH7WWSLJZQYkZ2T1pxaU/hrn09Kbn5/sXXNxW5J0xF7ne04dBF+fLYXq0/UEXGXK7DI3qicnvys0rj9GHThvjr1sPpdwSnSVnZ78D6hgANAAAAAAAAAGCJmaxWfcP+I/0b9h/pJ6KLwalJa8eNq3kjrc2FU0MDBXIwkLi4vSbLjvHervLx3q7ye2ffI6vLPZmUnduTubGsp3h3dZ8jIVEmIpIyHT7ptwpP61PRy9GLo7u0bv9O0riViIgUw6nemz6utszslwrdt62H02+ISdbwyj/9+oMADQAAAAAAAABgmTmTkqNVr73RVvXaG21ERN7ujvju2zcKxjrbC2ZHhwo0RbEtbh8N+JOHW5qSh1uadt76xY+4KyllKCWvoDu7vKKncMfuYSnJGnZ8Mf+iEVRroxdHt6lts3tIMVxERKRxq9bu2x/s9O2Rcp13LQfSr0tZjtmVf+r1AwEaAAAAAAAAAMAKSy0smU0tLLlLRHcNXWd9DXfS+uvrCsZ7uwr9E94cbhjig8acs8DkeHZgcjy7586NQ1d/8FdKfFpGb2phcU9+1c6ezNfKrttOZN6KXh7bqt6f3scj+tzoNoMkrTe4U+vt3CFm2pss+1JrTcVx4zF65DUNARoAAAAAAAAAQAwJosgLtu0aLdi2a5SIauVQUOq8UZsz1HyvcGqgryA0O522uL2haebpoYHS6aGB0tbLF8hss/sTM7N70ko29hR/ed//sPVIOUrDVDUPqOnzb2H6cHhL+Ce9WwSPtcOy23PVXJ44tPJPunYhQAMAAAAAAAAAWEUsDqdWdvRkT9nRkz1ERLNjI/bOGzUFo+2tBdNDA4VKJOxe3F6JhN1jXe0VY13tFQ3vv0P2+ARvcnZed0nBzpbk6ZQiPqvmLrQ1xqMlkV8PlMhXx/rN25NrzDtSuhhjj5YAj0CABgAAAAAAAACwisWnZYR3vP7l+0R0nxsGjbS3JPXU3SzwdnUU+sZG83RNtSxuH56dSR2YnUkdoHpigqDnppaPbHTtNrnV+JSFNsaMkhs9N5IrXx/3miuSaiz7UluYJBgr/nBrBAI0AAAAAAAAAIA1ggkCZW4sm8rcWDZFRLc1VRF67tzMGLh3t3Cyr7cgMDmexTkXFtpzwxD7Rhsz+kYbyWVKok2Je/Uc2wZRYHNNeFBLlWu8X1DqJo+YNifUWg+mNzKrqMXq+VYrBGgAAAAAAAAAAGuUZDIbJXv2D5Xs2T9ERJfDszPmzhs1ecOt9wumBvsLIn7fg1FnAXWKbnrfFZvES1Qat5MKXFtIEsxERMQjeoJyZ/Izyr3pQ6bSuBvWwxl3BJdJjtFjrToI0AAAAAAAAAAA1gl7fIKy9ZXPdmx95bMdRESTA32urpu1BWOdbYUzw0MFqhx1hPUA1U9foObZa1TsrqJi9zayiLa5CyiGU22aOSY3Tx+UCly37Eeyrosp1lAsn2k1QIAGAAAAAAAAALBOJefkBZJz8hqJqJEbBg00NXj67t4u9PZ0FvjHx3KbZ2tN7b5bVODaSqVxO8kuuYiISDCYyegK7vN1Nu/122aHpO0JlzP3V3QzQXj6DdcpBGgAAAAAAAAAAC8BJgiUu7VqPHdr1TgRXVciEbH71rXswfsNBSP9fQVdg/UZuc5NbEPcLnKbk4iISGQiS4gmZRtXja93tZy7V/yPTv4ytk8RGwjQAAAAAAAAAABeQmabTd948GjfxoNH+4jow8DkhLXz+tX8xrYbBdYJaUOhdYsz0ZJOREQCEyiuLKsppgXHEAI0AAAAAAAAAAAgV3JKtOqzb7ZWfZZaiei9sc62+IFLbbvcXme5okXE4v2f7Yp1jbGCAA0AAAAAAAAAAD4mrXjDbFrxhjNEdIZH9Zc6Q3o5V34DAAAAAAAAAIBPjVlFLdY1xBICNAAAAAAAAAAAgKdAgAYAAAAAAAAAAPAUCNAAAAAAAAAAAACeAgEaAAAAAAAAAADAUyBAAwAAAAAAAAAAeAoEaAAAAAAAAAAAAE+BAA0AAAAAAAAAAOApEKABAAAAAAAAAAA8BQI0AAAAAAAAAACAp5BiXQDMYYy5iMg1/9LEOWexrAcAAAAAAAAAAOZgBNrq8UdENDz/UR4IBJwxrgcAAAAAAAAAAAgB2mryJ0SUOf/R5HK5gjGuBwAAAAAAAAAACFM4Vw3OeYCIAkREjDGVMcZjXBIAAAAAAAAAABBGoAEAAAAAAAAAADwVAjQAAAAAAAAAAICnQIAGAAAAAAAAAADwFAjQAAAAAAAAAAAAngIBGgAAAAAAAAAAwFMgQAMAAAAAAAAAAHgKBGgAAAAAAAAAAABPgQANAAAAAAAAAADgKRCgAQAAAAAAAAAAPAUCNAAAAAAAAAAAgKdAgAYAAAAAAAAAAPAUCNAAAAAAAAAAAACeAgEaAAAAAAAAAADAUzDOeaxrgEcwxqYkSXJ5PJ7JWNfyoiwWSzIRkSzLa/5ZAODlhb4MANY69GMAsNahH4OlMD4+nqxpWoBznvSs75WWoyB4YX5N02hkZGR0/rVARKlE5CUi4zmv+aLXeN73x81/Hn1qK1gqS/F3ZTVazc8Vi9pW4p5LfY+lut6LXOdF3ou+bGWt5n/zL2K1Ples6lru+67HfuxF3o9+bGWt1n/vL2q1Phf6sZW/Zix+JkM/tvJW67/5F2EhIv/zvBEj0NYAxlgGEQ0TUSbnfCQW13je9zPG6oiIOOfbnvWe8OyW4u/KarSanysWta3EPZf6Hkt1vRe5zgu+F33ZClrN/+ZfxGp9rljVtdz3XY/92Iu8H/3Yylqt/95f1Gp9LvRjK3/NWPxMhn5s5a3Wf/OxgjXQAAAAAAAAAAAAngIBGgAAAAAAAAAAwFMgQFsbAkT0x/OfY3WNpagBlt96/XNazc8Vi9pW4p5LfY+lut6LXGc1/z2Ch63XP6vV+lyxqmu577se+7GlrAOW13r9c1qtz4V+bOWviZ/JXg74s1oEa6DBssI8dQBYD9CXAcBah34MANY69GMQaxiBBgAAAAAAAAAA8BQYgQYAAAAAAAAAAPAUGIEGAAAAAAAAAADwFAjQAAAAAAAAAAAAngIBGgAAAAAAAAAAwFMgQAMAAAAAAAAAAHgKBGgAAAAAAAAAAABPgQANAAAAAAAAAADgKRCgwarBGPsDxlgvYyzKGKtjjO2PdU0AAM+CMXaAMfZrxtgwY4wzxr4d65oAAJ4FY+xfMcZuM8b8jLEJxti7jLGyWNcFAPAsGGN/yBi7N9+X+Rlj1xljr8W6LljbEKDBqsAY+woR/Wci+j+JqJKIrhHRacZYTkwLAwB4Nk4iuk9E/5SIIjGuBQDgeRwioj8jor1EdISINCI6zxhLjGVRAADPaIiI/gURVRHRdiL6kIjeYYxtiWlVsKYxznmsawAgxthNIrrHOf+9Rcc6iehnnPN/FbvKAACeD2MsSET/mHP+vVjXAgDwvBhjTiLyEdHrnPN3Y10PAMDzYoxNE9G/4pz/91jXAmsTRqDBp8IY+yJj7L8yxq7OD4HljLG/+4T3ZDHG/oYxNsIYkxljfYyx/8QYS3iknZmIthHR2UcucZbm/u8nAMCSWM6+DABgJcSgH3PR3O8MM0vyAAAAtLJ9GWNMZIy9RXMzBa4t5XPAy0WKdQGwZvxvRLSViII0Nxx2w9MaM8YKaa5z8hDRr4iojYh20ty0plcYY/s451PzzZOJSCQi7yOX8RLRsaV6AAAAWt6+DABgJax0P/afiaiBiK6/cOUAAB9Z9r6MMVZOc32Xdf4+b3DOm5b4OeAlghFo8Gn9L0RUQkRuIvpHn6L9n9Fc5/ZPOOevc87/Jef8CBH9RyIqJaJ/95j3PDqfmD3mGADAi1iJvgwAYDmtWD/GGPsPRFRNRF/gnOsvXDkAwEdWoi9rJ6IKItpNRH9ORN/HpijwIhCgwafCOb/IOe/kn2LRPMZYARGdIKI+IvrTR05/l4hCRPQNxphj/tgkEelElPZIWw99fFQaAMBzW+a+DABg2a1UP8YY+49E9FUiOsI573nhwgEAFlmJvoxzrnDOuzjnd+bX1W6gueAO4LkgQIPlcGT+81nOubH4BOc8QES1RGSnuf8TQJxzhYjqiOj4I9c5TpijDgCx80x9GQDAKvRc/Rhj7D8T0W/RXHjWthKFAgA8xVL9TCYQkWXpy4OXBQI0WA6l8587nnC+c/5zyaJj/4GIvs0Y+weMsY3zP7hlENF/W6YaAQA+yTP3ZYwxJ2OsgjFWQXP/jc2Zf52zfGUCADzR8/Rjf0pEv01zo89mGGNp8x/O5SsTAOCpnqcv+78ZY/sZY3mMsXLG2P9FRIeI6O+Xr0xY77CJACyHuPnPviecXzgev3CAc/5jxlgSzS0mmU5E94noVc55/3IVCQDwCZ65LyOi7UR0cdHrP57/+D4RfXsJawMA+DSepx/7g/nPFx5p+8dE9G+WpCoAgGfzPH1ZGhH93fxnHxHdI6JTnPMzy1EgvBwQoEEssPnPD81355z/Gc0tDgkAsBZ8rC/jnF9adBwAYLV7XD+GPgwA1prH9WXfjk0psJ5hCicsh4X/AxD3hPPuR9oBAKxG6MsAYK1DPwYA6wH6MlgVEKDBcmif/1zyhPPF85+fNIcdAGA1QF8GAGsd+jEAWA/Ql8GqgAANlsPC+j8nGGMP/R1jjLmIaB8RRYjoxkoXBgDwDNCXAcBah34MANYD9GWwKiBAgyXHOe8morNElEdEf/jI6T8mIgcR/S3nPLTCpQEAfGroywBgrUM/BgDrAfoyWC0Y5/yTW8FLjzH2OhG9Pv8yjYhOElEPEV2dPzbJOf9ni9oXEtE1IvIQ0a+IqJWIdhHRYZobWruXcz61ErUDACxAXwYAax36MQBYD9CXwVqEAA0+FcbYvyGi7z6lST/nPO+R92QT0b8loleIKImIRonoHSL6Y8759LIUCgDwFOjLAGCtQz8GAOsB+jJYixCgAQAAAAAAAAAAPAXWQAMAAAAAAAAAAHgKBGgAAAAAAAAAAABPgQANAAAAAAAAAADgKRCgAQAAAAAAAAAAPAUCNAAAAAAAAAAAgKdAgAYAAAAAAAAAAPAUCNAAAAAAAAAAAACeAgEaAAAAAAAAAADAUyBAAwAAAAAAAAAAeAoEaAAAAAAAAAAAAE+BAA0AAAAAAAAAAOApEKABAAAAAAAAAAA8BQI0AAAAAFgxjLE+xlhfrOsAAAAAeBYI0AAAAABijDHG5z/6GWPWJ7Tpm28jrXR9AAAAAC87BGgAAAAAq0cOEf3PsS5imR2d/wAAAABYMxjnPNY1AAAAALzUGGOciGaIiBORRESFnPPJR9r0EVEuEZk459qKFwkAAADwEsMINAAAAIDVIUxE/zsRuYnou0txQcZYImPs/2KMtTLGIowxH2PsAmPsxGPafnt+iui3GWOHGWOXGGMBxpifMfYeY2zjE+5Rwhj7OWNshjEWYoxdY4y9tvh6j7T/2BpoL3Dv/397dxdqeVXGcfz7U3xFsDRNsijTRNFSsREnDFETS8R8l7EiGggxU0svZjQCkVIZqFTQLCjywtCcfLvwpcyXHJuMCaVIDZTM0YtGCZ1SRGd8ulj/Q9vtPv+Zvc8Z3M58P7BZm7XX+q/nf64OD2s9a8ckFyd5vFv7v0lWJlk0YmySfLWL78UkrydZneTeJGeO83eVJElbHhNokiRJ0+Na4Bng7CT7zuVBST4K/BlYCrwIXA/cDOwP3JPk67NMPQH4DbC2m/MwcDzwUJIPDK2xH7ASOAV4BLgaeA64DThpgrDHWft9wArgcmA98HPgBmA34JdJvjf07O8DvwD2AH4F/BC4D9gTOH2CWCVJ0hbEIrSSJElToqreTLIUuAW4kpaYmtQNtCOfi6rqppnOLvH0IHBNkjur6l9D804Cjquq3w3MuYKWiFsMLBsYey2wC/CNqvrxwPgvAHdNEPM4a18FHAIsqaplA+O3B24HLkmyvKoe7346G3gBOLCqXhtcdDg5J0mSNMwdaJIkSVOkqpbTdnWdnOSISZ6R5CDgSODXg8mz7vkv046Ibg+cOmL6TYMJrM5Pu/awgTU+AhwNPA38ZGiNu2m7u8a1sWvvCnwZWDWYPOvWfh1YAgQ4a+hZb9J2qzE056XhPkmSpEHuQJMkSZo+FwF/AH6Q5PAa/9anhV27c5JLR/y+W9eOqi22akTf6q59/0DfwV27sqreGjFnBfC5/jAnXnsBsDVQs7zfNl07+H43AucBf0tyC/AQLfZXxoxRkiRtgUygSZIkTZmqWplkOXAacAatdtk4du3aY7vPbHYa0ffyiHjWJYGWtJqxc9cOHwFlA/19Nnbtmfdb0H1mM/h+36bVl1tMOxK6FFiX5C7goqp6eoJ4JUnSFsIjnJIkSdNpKe3I4RVJth1z7syuqguqKj2fr80hvrVd+8FZfp+tfz7MvN+PNvB+R81MqKr1VXV1VR3UxXYq7bKDE2mXKmy3CeOVJEnvcSbQJEmSplBVPQNcB+xFO3o4jj927WfnNai3e6xrFyYZ9T/lRPXbNtKfgLeY8P2qak1V3VpVZwD3A3sDB85jfJIkaTNjAk2SJGl6XUY71vgdRh+3HKmqVgEPA6ckWTxqTJJPJtl90sCqajXtNs99aDdcDj7784xf/2yctdfQapp9Osl3k7yjLEmSvZPs1X3fLskx6c6CDozZhnaLKMBrw8+QJEmaYQ00SZKkKVVV/05yObBsg4Pf6Sza7qqfJTkfeJSWjPsw8CnajquFwJo5hHgu8AhwXZLjgb8AH6cdj7wD+CJtp9im8E3gE7Qk41eSrKDVXfsQ7fKABcAi4B/ADrRbQZ9N8ijwT9otpMd2Y++sqic3UZySJGkz4A40SZKk6XYN8Oy4k6rqeeBQ2u619cCXgPOBzwDP0XaN/XUugVXVE7Qk3G2045TfAj4GnEy7hRP+XyttXlXVWuBI2vHWl2hJuwuBo4D/0C4N+G03/FVgCfAU7f0voCUY1wLnAKdvihglSdLmI+Pfii5JkiT1S3IjLUm1X1X9/d2OR5IkaS7cgSZJkqSJJNkqyR4j+o8BzgSeMHkmSZI2B9ZAkyRJ0qS2BVYneYB2PHIdcACtttgbtBppkiRJ73ke4ZQkSdJEkmwNXAUcTbucYEdaPbLfA1dW1WPvXnSSJEnzxwSaJEmSJEmS1MMaaJIkSZIkSVIPE2iSJEmSJElSDxNokiRJkiRJUg8TaJIkSZIkSVIPE2iSJEmSJElSDxNokiRJkiRJUg8TaJIkSZIkSVIPE2iSJEmSJElSDxNokiRJkiRJUg8TaJIkSZIkSVIPE2iSJEmSJElSDxNokiRJkiRJUg8TaJIkSZIkSVKP/wGyK5CSZNGVEQAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": { "image/png": { "height": 397, "width": 616 }, "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# \n", "plt.plot(N, [1] * len(N), '--k')\n", "for depth in range(7):\n", " plt.loglog(N, bcast_sends(N, depth) / dview_sends, label=f\"depth = {depth}\")\n", "\n", "plt.xlabel(\"N engines\")\n", "plt.ylabel(\"relative to dview\")\n", "plt.title(\"Serial messages for last engine\")\n", "\n", "plt.grid(True)\n", "plt.legend(loc=0)" ] }, { "cell_type": "markdown", "id": "5f065a9b-195c-49a7-92d7-670a39d81860", "metadata": {}, "source": [ "## Coalescing replies\n", "\n", "The broadcast view changes the number of requests a client sends from one per engine to just one,\n", "however each engine still has its own *reply* to that request.\n", "\n", "One of the sources of performance in the client, especially when sending many small tasks,\n", "is contention receiving replies.\n", "\n", "The IPython Parallel client receives replies in a background thread.\n", "If replies start arriving before the client is done sending requests,\n", "this can result in a lot of contention and context switching,\n", "slowing down task submission.\n", "\n", "Plus, deserializing all these replies can be a lot of work, especially if the only useful information is that it's done.\n", "\n", "For this, the broadcast view has a tuning parameter to 'coalesce' replies.\n", "Unlike depth, this parameter is set per-request instead of for the cluster as a whole.\n", "\n", "Coalescing reduces the number of replies in the same way that requests are reduced on the way to engines -\n", "by collecting replies at each node, and only sending them along to the next layer up when all engines have replied.\n", "\n", "As a result, when coalescing is enabled,\n", "a BroadcastView sends exactly one request and receives exactly one reply,\n", "dramatically reducing the workload and number of events on the client." ] }, { "cell_type": "code", "execution_count": 11, "id": "b5ecaea7-f8aa-4b93-9403-96a57bb2fa29", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "288 ms ± 44 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n" ] } ], "source": [ "bcast_view.is_coalescing = False\n", "%timeit bcast_view.apply_sync(lambda: None)" ] }, { "cell_type": "code", "execution_count": 12, "id": "aa4dadbe-2a76-4163-b8ae-83613fb1ff33", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "216 ms ± 26.4 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)\n" ] } ], "source": [ "bcast_view.is_coalescing = True\n", "%timeit bcast_view.apply_sync(lambda: None)" ] }, { "cell_type": "markdown", "id": "1a597b4f-64b7-4f31-855e-3c8d44a8e371", "metadata": {}, "source": [ "Coalescing has its own trade-offs.\n", "Each send and receive at each level has a cost, but so does waiting to send messages.\n", "Coalescing behaves best when lots of (especially small) replies are going to come at the same time.\n", "If responses are large and/or spread out, the cost of leaving network bandwidth idle will outweigh the savings of reduced message deserialization." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.6" }, "widgets": { "application/vnd.jupyter.widget-state+json": { "state": {}, "version_major": 2, "version_minor": 0 } } }, "nbformat": 4, "nbformat_minor": 5 } ipython-ipyparallel-14e3c43/docs/source/examples/broadcast/Dockerfile000066400000000000000000000002431520071063500260500ustar00rootroot00000000000000FROM jupyter/scipy-notebook:4a6f5b7e5db1 RUN mamba install -yq openmpi mpi4py RUN pip install --upgrade https://github.com/ipython/ipyparallel/archive/HEAD.tar.gz ipython-ipyparallel-14e3c43/docs/source/examples/broadcast/MPI Broadcast.ipynb000066400000000000000000002076241520071063500274450ustar00rootroot00000000000000{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# More efficient data movement with MPI" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Just like [we did](memmap%20Broadcast.ipynb) manually with memmap,\n", "you can move data more efficiently with MPI by sending it to just one engine,\n", "and using MPI to broadcast it to the rest of the engines.\n" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "\n", "import ipyparallel as ipp" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For this demo, I will connect to a cluster with engines started with MPI.\n", "\n", "One way to do so would be:\n", "\n", " ipcluster start -n 64 --engines=MPI --profile mpi\n", " \n", "In this directory is a docker-compose file to simulate multiple engine sets launched with MPI.\n", "\n", "I ran this example with a cluster on a 64-core remote VM,\n", "so communication between the client and controller is over the public internet,\n", "while communication between the controller and engines is local." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "rc = ipp.Client(profile=\"mpi\")\n", "rc.wait_for_engines(64)\n", "eall = rc.broadcast_view(coalescing=True)\n", "root = rc[0]" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "64" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(rc)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "root['a'] = 5" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "%%px\n", "from mpi4py.MPI import COMM_WORLD as MPI" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We cn get a mapping of IPP rank to MPI rank, in case they mismatch.\n", "\n", "In recent-enough IPython Parallel,\n", "they usually don't because IPython engines request their MPI rank as their engine id." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{0: 0,\n", " 1: 1,\n", " 2: 2,\n", " 3: 3,\n", " 4: 4,\n", " 5: 5,\n", " 6: 6,\n", " 7: 7,\n", " 8: 8,\n", " 9: 9,\n", " 10: 10,\n", " 11: 11,\n", " 12: 12,\n", " 13: 13,\n", " 14: 14,\n", " 15: 15,\n", " 16: 16,\n", " 17: 17,\n", " 18: 18,\n", " 19: 19,\n", " 20: 20,\n", " 21: 21,\n", " 22: 22,\n", " 23: 23,\n", " 24: 24,\n", " 25: 25,\n", " 26: 26,\n", " 27: 27,\n", " 28: 28,\n", " 29: 29,\n", " 30: 30,\n", " 31: 31,\n", " 32: 32,\n", " 33: 33,\n", " 34: 34,\n", " 35: 35,\n", " 36: 36,\n", " 37: 37,\n", " 38: 38,\n", " 39: 39,\n", " 40: 40,\n", " 41: 41,\n", " 42: 42,\n", " 43: 43,\n", " 44: 44,\n", " 45: 45,\n", " 46: 46,\n", " 47: 47,\n", " 48: 48,\n", " 49: 49,\n", " 50: 50,\n", " 51: 51,\n", " 52: 52,\n", " 53: 53,\n", " 54: 54,\n", " 55: 55,\n", " 56: 56,\n", " 57: 57,\n", " 58: 58,\n", " 59: 59,\n", " 60: 60,\n", " 61: 61,\n", " 62: 62,\n", " 63: 63}" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mpi_ranks = eall.apply_async(lambda: MPI.Get_rank()).get_dict()\n", "root_rank = root.apply_sync(lambda: MPI.Get_rank())\n", "mpi_ranks" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "32" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sz = 512\n", "data = np.random.random((sz, sz))\n", "megabytes = data.nbytes // (1024 * 1024)\n", "megabytes" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "e3943864933941bbb65e6ad17e3c589f", "version_major": 2, "version_minor": 0 }, "text/plain": [ "_push: 0%| | 0/64 [00:00 0: a = randint(0, nodes - 1) b = a while b == a: b = randint(0, nodes - 1) G.add_edge(a, b) if nx.is_directed_acyclic_graph(G): edges -= 1 else: # we closed a loop! G.remove_edge(a, b) return G def add_children(G, parent, level, n=2): """Add children recursively to a binary tree.""" if level == 0: return for i in range(n): child = parent + str(i) G.add_node(child) G.add_edge(parent, child) add_children(G, child, level - 1, n) def make_bintree(levels): """Make a symmetrical binary tree with @levels""" G = nx.DiGraph() root = '0' G.add_node(root) add_children(G, root, levels, 2) return G def submit_jobs(view, G, jobs): """Submit jobs via client where G describes the time dependencies.""" results = {} for node in nx.topological_sort(G): with view.temp_flags(after=[results[n] for n in G.predecessors(node)]): results[node] = view.apply(jobs[node]) return results def validate_tree(G, results): """Validate that jobs executed after their dependencies.""" for node in G: started = results[node].metadata.started for parent in G.predecessors(node): finished = results[parent].metadata.completed assert started > finished, f"{node} should have happened after {parent}" def main(nodes, edges): """Generate a random graph, submit jobs, then validate that the dependency order was enforced. Finally, plot the graph, with time on the x-axis, and in-degree on the y (just for spread). All arrows must point at least slightly to the right if the graph is valid. """ from matplotlib import pyplot as plt from matplotlib.cm import gist_rainbow from matplotlib.dates import date2num print("building DAG") G = random_dag(nodes, edges) jobs = {} pos = {} colors = {} for node in G: jobs[node] = randomwait client = parallel.Client() view = client.load_balanced_view() print(f"submitting {nodes} tasks with {edges} dependencies") results = submit_jobs(view, G, jobs) print("waiting for results") client.wait_interactive() for node in G: md = results[node].metadata start = date2num(md.started) runtime = date2num(md.completed) - start pos[node] = (start, runtime) colors[node] = md.engine_id validate_tree(G, results) nx.draw( G, pos, node_list=list(colors.keys()), node_color=list(colors.values()), cmap=gist_rainbow, with_labels=False, ) x, y = zip(*pos.values()) xmin, ymin = map(min, (x, y)) xmax, ymax = map(max, (x, y)) xscale = xmax - xmin yscale = ymax - ymin plt.xlim(xmin - xscale * 0.1, xmax + xscale * 0.1) plt.ylim(ymin - yscale * 0.1, ymax + yscale * 0.1) return G, results if __name__ == '__main__': from matplotlib import pyplot as plt # main(5,10) main(32, 96) plt.show() ipython-ipyparallel-14e3c43/docs/source/examples/dask.ipynb000066400000000000000000001224721520071063500241120ustar00rootroot00000000000000{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Working with IPython and dask.distributed\n", "\n", "[dask.distributed](https://distributed.readthedocs.io) is a cool library for doing distributed execution. You should check it out, if you haven't already.\n", "\n", "In many cases, dask.distributed should replace using IPython Parallel if you primarily use the LoadBalancedView.\n", "\n", "However, you may already have infrastructure for deploying and managing IPython engines,\n", "and IPython Parallel's interactive debugging features can still be useful.\n", "\n", "Any IPython cluster can *become* a dask cluster at any time,\n", "and be used simultaneously via both APIs." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can turn your IPython cluster into a distributed cluster by calling `Client.become_dask()`:" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Using existing profile dir: '/Users/minrk/.ipython/profile_default'\n", "Starting 4 engines with \n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "12bcc9bb5f5849b281bc6b305c5cfe7d", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/4 [00:00\n", "
\n", "
\n", "

Client

\n", "

Client-4de93880-0b0d-11ec-b993-784f4385c030

\n", " \n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", "
Connection method: Direct
\n", " Dashboard: http://192.168.1.31:53263/status\n", "
\n", "\n", " \n", "
\n", "

Scheduler Info

\n", "
\n", "
\n", "
\n", "
\n", "

Scheduler

\n", "

Scheduler-faed09d3-e79f-4698-9162-b38cece51ddf

\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
\n", " Comm: tcp://192.168.1.31:53264\n", " \n", " Workers: 2\n", "
\n", " Dashboard: http://192.168.1.31:53263/status\n", " \n", " Total threads: 2\n", "
\n", " Started: Just now\n", " \n", " Total memory: 8.00 GiB\n", "
\n", "
\n", "
\n", "\n", "
\n", " \n", "

Workers

\n", "
\n", "\n", " \n", "
\n", "
\n", "
\n", "
\n", " \n", "

Worker: tcp://192.168.1.31:53626

\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", "
\n", " Comm: tcp://192.168.1.31:53626\n", " \n", " Total threads: 1\n", "
\n", " Dashboard: http://192.168.1.31:53634/status\n", " \n", " Memory: 4.00 GiB\n", "
\n", " Nanny: None\n", "
\n", " Local directory: /Users/minrk/dev/ip/parallel/docs/source/examples/dask-worker-space/worker-4ra4jer1\n", "
\n", " Tasks executing: 0\n", " \n", " Tasks in memory: 0\n", "
\n", " Tasks ready: 0\n", " \n", " Tasks in flight: 0\n", "
\n", " CPU usage: 0.0%\n", " \n", " Last seen: Just now\n", "
\n", " Memory usage: 96.50 MiB\n", " \n", " Spilled bytes: 0 B\n", "
\n", " Read bytes: 0.0 B\n", " \n", " Write bytes: 0.0 B\n", "
\n", "
\n", "
\n", "
\n", " \n", "
\n", "
\n", "
\n", "
\n", " \n", "

Worker: tcp://192.168.1.31:53627

\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", "
\n", " Comm: tcp://192.168.1.31:53627\n", " \n", " Total threads: 1\n", "
\n", " Dashboard: http://192.168.1.31:53635/status\n", " \n", " Memory: 4.00 GiB\n", "
\n", " Nanny: None\n", "
\n", " Local directory: /Users/minrk/dev/ip/parallel/docs/source/examples/dask-worker-space/worker-03ml7c0q\n", "
\n", " Tasks executing: 0\n", " \n", " Tasks in memory: 0\n", "
\n", " Tasks ready: 0\n", " \n", " Tasks in flight: 0\n", "
\n", " CPU usage: 0.0%\n", " \n", " Last seen: Just now\n", "
\n", " Memory usage: 96.43 MiB\n", " \n", " Spilled bytes: 0 B\n", "
\n", " Read bytes: 234.10 kiB\n", " \n", " Write bytes: 234.10 kiB\n", "
\n", "
\n", "
\n", "
\n", " \n", "\n", "
\n", "
\n", "
\n", " \n", "\n", "
\n", "" ], "text/plain": [ "" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dask_client = rc.become_dask(ncores=1)\n", "dask_client" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This will:\n", "\n", "1. start a Scheduler on the Hub\n", "2. start a Worker on each engine\n", "3. return an Executor, the distributed client API\n", "\n", "By default, distributed Workers will use threads to run on all cores of a machine. \n", "In this case, since I already have one *engine* per core,\n", "I tell distributed to run one core per Worker with `ncores=1`.\n", "\n", "We can now use our IPython cluster with distributed:" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "b9874c7d2ae04c6fa879f14f00135e30", "version_major": 2, "version_minor": 0 }, "text/plain": [ "VBox()" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from distributed import progress\n", "\n", "\n", "def square(x):\n", " return x**2\n", "\n", "\n", "def neg(x):\n", " return -x\n", "\n", "\n", "A = dask_client.map(square, range(1000))\n", "B = dask_client.map(neg, A)\n", "total = dask_client.submit(sum, B)\n", "progress(total)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "-332833500" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "total.result()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "I could also let distributed do its multithreading thing, and run one multi-threaded Worker per engine.\n", "\n", "First, I need to get a mapping of one engine per host:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{0: 'touchy', 1: 'touchy', 2: 'touchy', 3: 'touchy'}" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import socket\n", "\n", "engine_hosts = rc[:].apply_async(socket.gethostname).get_dict()\n", "engine_hosts" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "I can reverse this mapping, to get a list of engines on each host:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'touchy': [0, 1, 2, 3]}" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "host_engines = {}\n", "for engine_id, host in engine_hosts.items():\n", " if host not in host_engines:\n", " host_engines[host] = []\n", " host_engines[host].append(engine_id)\n", "\n", "host_engines" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now I can get one engine per host:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[0]" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "one_engine_per_host = [engines[0] for engines in host_engines.values()]\n", "one_engine_per_host" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "*Here's a concise, but more opaque version that does the same thing:*" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[3]" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "one_engine_per_host = list({host: eid for eid, host in engine_hosts.items()}.values())\n", "one_engine_per_host" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "I can now stop the first distributed cluster, and start a new one on just these engines, letting distributed allocate threads:" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "
\n", "
\n", "

Client

\n", "

Client-4f4545ca-0b0d-11ec-b993-784f4385c030

\n", " \n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", "
Connection method: Direct
\n", " Dashboard: http://192.168.1.31:54310/status\n", "
\n", "\n", " \n", "
\n", "

Scheduler Info

\n", "
\n", "
\n", "
\n", "
\n", "

Scheduler

\n", "

Scheduler-ecb384f5-10bb-4d53-9e4c-67db7ff07d03

\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
\n", " Comm: tcp://192.168.1.31:54313\n", " \n", " Workers: 1\n", "
\n", " Dashboard: http://192.168.1.31:54310/status\n", " \n", " Total threads: 1\n", "
\n", " Started: Just now\n", " \n", " Total memory: 4.00 GiB\n", "
\n", "
\n", "
\n", "\n", "
\n", " \n", "

Workers

\n", "
\n", "\n", " \n", "
\n", "
\n", "
\n", "
\n", " \n", "

Worker: tcp://192.168.1.31:54344

\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", "
\n", " Comm: tcp://192.168.1.31:54344\n", " \n", " Total threads: 1\n", "
\n", " Dashboard: http://192.168.1.31:54345/status\n", " \n", " Memory: 4.00 GiB\n", "
\n", " Nanny: None\n", "
\n", " Local directory: /Users/minrk/dev/ip/parallel/docs/source/examples/dask-worker-space/worker-kmqmwu7_\n", "
\n", " Tasks executing: 0\n", " \n", " Tasks in memory: 0\n", "
\n", " Tasks ready: 0\n", " \n", " Tasks in flight: 0\n", "
\n", " CPU usage: 0.0%\n", " \n", " Last seen: Just now\n", "
\n", " Memory usage: 104.27 MiB\n", " \n", " Spilled bytes: 0 B\n", "
\n", " Read bytes: 1.46 MiB\n", " \n", " Write bytes: 1.46 MiB\n", "
\n", "
\n", "
\n", "
\n", " \n", "\n", "
\n", "
\n", "
\n", " \n", "\n", "
\n", "
" ], "text/plain": [ "" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "rc.stop_distributed()\n", "\n", "dask_client = rc.become_dask(one_engine_per_host)\n", "dask_client" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And submit the same tasks again:" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "b6eddbe0edfb49e09f289ed49a29e988", "version_major": 2, "version_minor": 0 }, "text/plain": [ "VBox()" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "A = dask_client.map(square, range(100))\n", "B = dask_client.map(neg, A)\n", "total = dask_client.submit(sum, B)\n", "progress(total)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Debugging distributed with IPython" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "
\n", "
\n", "

Client

\n", "

Client-4f8be14c-0b0d-11ec-b993-784f4385c030

\n", " \n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", "
Connection method: Direct
\n", " Dashboard: http://192.168.1.31:54467/status\n", "
\n", "\n", " \n", "
\n", "

Scheduler Info

\n", "
\n", "
\n", "
\n", "
\n", "

Scheduler

\n", "

Scheduler-9de91656-970d-405d-85ce-7e065b96c0c8

\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
\n", " Comm: tcp://192.168.1.31:54478\n", " \n", " Workers: 0\n", "
\n", " Dashboard: http://192.168.1.31:54467/status\n", " \n", " Total threads: 0\n", "
\n", " Started: Just now\n", " \n", " Total memory: 0 B\n", "
\n", "
\n", "
\n", "\n", "
\n", " \n", "

Workers

\n", "
\n", "\n", " \n", "\n", "
\n", "
\n", "
\n", " \n", "\n", "
\n", "
" ], "text/plain": [ "" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "rc.stop_distributed()\n", "\n", "dask_client = rc.become_dask(one_engine_per_host)\n", "dask_client" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's set the %px magics to only run on our one engine per host:" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "view = rc[one_engine_per_host]\n", "view.block = True\n", "view.activate()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's submit some work that's going to fail somewhere in the middle:" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "524ea13e69ef4fbc80650087f3f9b746", "version_major": 2, "version_minor": 0 }, "text/plain": [ "VBox()" ] }, "metadata": {}, "output_type": "display_data" }, { "ename": "ZeroDivisionError", "evalue": "division by zero", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mZeroDivisionError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m/var/folders/qr/3vxfnp1x2t1fw55dr288mphc0000gn/T/ipykernel_14739/3426399645.py\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0mtotal\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mdask_client\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msubmit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msum\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0minverted\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 17\u001b[0m \u001b[0mdisplay\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprogress\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtotal\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 18\u001b[0;31m \u001b[0mtotal\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mresult\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;32m~/conda/lib/python3.9/site-packages/distributed/client.py\u001b[0m in \u001b[0;36mresult\u001b[0;34m(self, timeout)\u001b[0m\n\u001b[1;32m 231\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstatus\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m\"error\"\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 232\u001b[0m \u001b[0mtyp\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mexc\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtb\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 233\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mexc\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mwith_traceback\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtb\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 234\u001b[0m \u001b[0;32melif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstatus\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m\"cancelled\"\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 235\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/var/folders/qr/3vxfnp1x2t1fw55dr288mphc0000gn/T/ipykernel_14739/3426399645.py\u001b[0m in \u001b[0;36minverse\u001b[0;34m()\u001b[0m\n\u001b[1;32m 8\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 9\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0minverse\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 10\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0;36m1\u001b[0m \u001b[0;34m/\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 11\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 12\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mZeroDivisionError\u001b[0m: division by zero" ] } ], "source": [ "from distributed import progress\n", "from IPython.display import display\n", "\n", "\n", "def shift5(x):\n", " return x - 5\n", "\n", "\n", "def inverse(x):\n", " return 1 / x\n", "\n", "\n", "shifted = dask_client.map(shift5, range(1, 10))\n", "inverted = dask_client.map(inverse, shifted)\n", "\n", "total = dask_client.submit(sum, inverted)\n", "display(progress(total))\n", "total.result()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can see which task failed:" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "[f for f in inverted if f.status == \"error\"]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "When IPython starts a worker on each engine,\n", "it stores it in the `distributed_worker` variable in the engine's namespace.\n", "This lets us query the worker interactively.\n", "\n", "We can check out the current data resident on each worker:" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "\u001b[0;31mOut[3:1]: \u001b[0mBuffer<, deserialize_bytes >>" ] }, "metadata": { "after": [], "completed": "2021-09-01T10:14:10.163710", "data": {}, "engine_id": 3, "engine_uuid": "f3a63abb-5985ad4fd1b9c71f02922bb4", "error": null, "execute_input": "dask_worker.data\n", "execute_result": { "data": { "text/plain": "Buffer<, deserialize_bytes >>" }, "execution_count": 1, "metadata": {} }, "follow": [], "is_broadcast": false, "is_coalescing": false, "msg_id": "867ada26-ed0b46a8d787906a2a56aca7_24", "outputs": [], "received": "2021-09-01T10:14:10.167670", "started": "2021-09-01T10:14:10.138718", "status": "ok", "stderr": "", "stdout": "", "submitted": "2021-09-01T10:14:10.130438" }, "output_type": "display_data" } ], "source": [ "%%px\n", "dask_worker.data # noqa" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now that we can poke around with each Worker,\n", "we can have a slightly easier time figuring out what went wrong." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.9" }, "widgets": { "application/vnd.jupyter.widget-state+json": { "state": {}, "version_major": 2, "version_minor": 0 } } }, "nbformat": 4, "nbformat_minor": 4 } ipython-ipyparallel-14e3c43/docs/source/examples/dependencies.py000066400000000000000000000061541520071063500251230ustar00rootroot00000000000000import ipyparallel as ipp from ipyparallel import Dependency client = ipp.Client() # this will only run on machines that can import numpy: @ipp.require('numpy') def norm(A): from numpy.linalg import norm return norm(A, 2) def checkpid(pid): """return the pid of the engine""" import os return os.getpid() == pid def checkhostname(host): import socket return socket.gethostname() == host def getpid(): import os return os.getpid() pid0 = client[0].apply_sync(getpid) # this will depend on the pid being that of target 0: @ipp.depend(checkpid, pid0) def getpid2(): import os return os.getpid() view = client.load_balanced_view() view.block = True # will run on anything: pids1 = [view.apply(getpid) for i in range(len(client.ids))] print(pids1) # will only run on e0: pids2 = [view.apply(getpid2) for i in range(len(client.ids))] print(pids2) print("now test some dependency behaviors") def wait(t): import time time.sleep(t) return t # fail after some time: def wait_and_fail(t): import time time.sleep(t) return 1 / 0 successes = [view.apply_async(wait, 1).msg_ids[0] for i in range(len(client.ids))] failures = [ view.apply_async(wait_and_fail, 1).msg_ids[0] for i in range(len(client.ids)) ] mixed = [failures[0], successes[0]] d1a = Dependency(mixed, all=False, failure=True) # yes d1b = Dependency(mixed, all=False) # yes d2a = Dependency(mixed, all=True, failure=True) # yes after / no follow d2b = Dependency(mixed, all=True) # no d3 = Dependency(failures, all=False) # no d4 = Dependency(failures, all=False, failure=True) # yes d5 = Dependency(failures, all=True, failure=True) # yes after / no follow d6 = Dependency(successes, all=True, failure=True) # yes after / no follow view.block = False flags = view.temp_flags with flags(after=d1a): r1a = view.apply(getpid) with flags(follow=d1b): r1b = view.apply(getpid) with flags(after=d2b, follow=d2a): r2a = view.apply(getpid) with flags(after=d2a, follow=d2b): r2b = view.apply(getpid) with flags(after=d3): r3 = view.apply(getpid) with flags(after=d4): r4a = view.apply(getpid) with flags(follow=d4): r4b = view.apply(getpid) with flags(after=d3, follow=d4): r4c = view.apply(getpid) with flags(after=d5): r5 = view.apply(getpid) with flags(follow=d5, after=d3): r5b = view.apply(getpid) with flags(follow=d6): r6 = view.apply(getpid) with flags(after=d6, follow=d2b): r6b = view.apply(getpid) def should_fail(f): try: f() except ipp.error.KernelError: pass else: print('should have raised') # raise Exception("should have raised") # print(r1a.msg_ids) r1a.get() # print(r1b.msg_ids) r1b.get() # print(r2a.msg_ids) should_fail(r2a.get) # print(r2b.msg_ids) should_fail(r2b.get) # print(r3.msg_ids) should_fail(r3.get) # print(r4a.msg_ids) r4a.get() # print(r4b.msg_ids) r4b.get() # print(r4c.msg_ids) should_fail(r4c.get) # print(r5.msg_ids) r5.get() # print(r5b.msg_ids) should_fail(r5b.get) # print(r6.msg_ids) should_fail(r6.get) # assuming > 1 engine # print(r6b.msg_ids) should_fail(r6b.get) print('done') ipython-ipyparallel-14e3c43/docs/source/examples/fetchparse.py000066400000000000000000000054101520071063500246130ustar00rootroot00000000000000""" An exceptionally lousy site spider Ken Kinder Updated for newparallel by Min Ragan-Kelley This module gives an example of how the task interface to the IPython controller works. Before running this script start the IPython controller and some engines using something like:: ipcluster start -n 4 """ import sys import time import bs4 # noqa this isn't necessary, but it helps throw the dependency error earlier import ipyparallel as ipp def fetchAndParse(url, data=None): from urllib.parse import urljoin import bs4 # noqa import requests links = [] r = requests.get(url, data=data) r.raise_for_status() if 'text/html' in r.headers.get('content-type'): doc = bs4.BeautifulSoup(r.text, "html.parser") for node in doc.findAll('a'): href = node.get('href', None) if href: links.append(urljoin(url, href)) return links class DistributedSpider: # Time to wait between polling for task results. pollingDelay = 0.5 def __init__(self, site): self.client = ipp.Client() self.view = self.client.load_balanced_view() self.mux = self.client[:] self.allLinks = [] self.linksWorking = {} self.linksDone = {} self.site = site def visitLink(self, url): if url not in self.allLinks: self.allLinks.append(url) if url.startswith(self.site): print(' ', url) self.linksWorking[url] = self.view.apply(fetchAndParse, url) def onVisitDone(self, links, url): print(url + ':') self.linksDone[url] = None del self.linksWorking[url] for link in links: self.visitLink(link) def run(self): self.visitLink(self.site) while self.linksWorking: print(len(self.linksWorking), 'pending...') self.synchronize() time.sleep(self.pollingDelay) def synchronize(self): for url, ar in list(self.linksWorking.items()): # Calling get_task_result with block=False will return None if the # task is not done yet. This provides a simple way of polling. try: links = ar.get(0) except ipp.error.TimeoutError: continue except Exception as e: self.linksDone[url] = None del self.linksWorking[url] print(f'{url}: {e}') else: self.onVisitDone(links, url) def main(): if len(sys.argv) > 1: site = sys.argv[1] else: site = input('Enter site to crawl: ') distributedSpider = DistributedSpider(site) distributedSpider.run() if __name__ == '__main__': main() ipython-ipyparallel-14e3c43/docs/source/examples/index.md000066400000000000000000000023551520071063500235530ustar00rootroot00000000000000--- file_format: mystnb kernelspec: name: python3 mystnb: execution_mode: "force" remove_code_source: true --- # examples Here you will find example notebooks and scripts for working with IPython Parallel. (example-tutorials)= ## Tutorials ```{toctree} Cluster API Parallel Magics progress Data Publication API visualizing-tasks broadcast/Broadcast view broadcast/memmap Broadcast broadcast/MPI Broadcast ``` ## Examples ```{toctree} Monitoring an MPI Simulation - 1 Monitoring an MPI Simulation - 2 Parallel Decorator and map Using MPI with IPython Parallel Monte Carlo Options rmt/rmt ``` ## Integrating IPython Parallel with other tools There are lots of cool tools for working with asynchronous and parallel execution. IPython Parallel aims to be fairly compatible with these, both by implementing explicit support via methods such as `Client.become_dask`, and by using standards such as the `concurrent.futures.Future` API. ```{toctree} Futures joblib dask Using Dill ``` ## Non-notebook examples This directory also contains some examples that are scripts instead of notebooks. ```{code-cell} import glob import os from IPython.display import FileLink, FileLinks, display FileLinks(".", included_suffixes=[".py"], recursive=True) ``` ipython-ipyparallel-14e3c43/docs/source/examples/interengine/000077500000000000000000000000001520071063500244245ustar00rootroot00000000000000ipython-ipyparallel-14e3c43/docs/source/examples/interengine/bintree.py000066400000000000000000000154141520071063500264330ustar00rootroot00000000000000""" BinaryTree inter-engine communication class use from bintree_script.py Provides parallel [all]reduce functionality """ import re import socket from functools import reduce import zmq from ipyparallel.serialize import deserialize_object, serialize_object from ipyparallel.util import disambiguate_url # ---------------------------------------------------------------------------- # bintree-related construction/printing helpers # ---------------------------------------------------------------------------- def bintree(ids, parent=None): """construct {child:parent} dict representation of a binary tree keys are the nodes in the tree, and values are the parent of each node. The root node has parent `parent`, default: None. >>> tree = bintree(range(7)) >>> tree {0: None, 1: 0, 2: 1, 3: 1, 4: 0, 5: 4, 6: 4} >>> print_bintree(tree) 0 1 2 3 4 5 6 """ parents = {} n = len(ids) if n == 0: return parents root = ids[0] parents[root] = parent if len(ids) == 1: return parents else: ids = ids[1:] n = len(ids) left = bintree(ids[: n // 2], parent=root) right = bintree(ids[n // 2 :], parent=root) parents.update(left) parents.update(right) return parents def reverse_bintree(parents): """construct {parent:[children]} dict from {child:parent} keys are the nodes in the tree, and values are the lists of children of that node in the tree. reverse_tree[None] is the root node >>> tree = bintree(range(7)) >>> reverse_bintree(tree) {None: 0, 0: [1, 4], 4: [5, 6], 1: [2, 3]} """ children = {} for child, parent in parents.iteritems(): if parent is None: children[None] = child continue elif parent not in children: children[parent] = [] children[parent].append(child) return children def depth(n, tree): """get depth of an element in the tree""" d = 0 parent = tree[n] while parent is not None: d += 1 parent = tree[parent] return d def print_bintree(tree, indent=' '): """print a binary tree""" for n in sorted(tree.keys()): print(f"{indent * depth(n, tree)}{n}") # ---------------------------------------------------------------------------- # Communicator class for a binary-tree map # ---------------------------------------------------------------------------- ip_pat = re.compile(r'^\d+\.\d+\.\d+\.\d+$') def disambiguate_dns_url(url, location): """accept either IP address or dns name, and return IP""" if not ip_pat.match(location): location = socket.gethostbyname(location) return disambiguate_url(url, location) class BinaryTreeCommunicator: id = None pub = None sub = None downstream = None upstream = None pub_url = None tree_url = None def __init__(self, id, interface='tcp://*', root=False): self.id = id self.root = root # create context and sockets self._ctx = zmq.Context() if root: self.pub = self._ctx.socket(zmq.PUB) else: self.sub = self._ctx.socket(zmq.SUB) self.sub.SUBSCRIBE = b'' self.downstream = self._ctx.socket(zmq.PULL) self.upstream = self._ctx.socket(zmq.PUSH) # bind to ports interface_f = interface + ":%i" if self.root: pub_port = self.pub.bind_to_random_port(interface) self.pub_url = interface_f % pub_port tree_port = self.downstream.bind_to_random_port(interface) self.tree_url = interface_f % tree_port self.downstream_poller = zmq.Poller() self.downstream_poller.register(self.downstream, zmq.POLLIN) # guess first public IP from socket self.location = socket.gethostbyname_ex(socket.gethostname())[-1][0] def __del__(self): self.downstream.close() self.upstream.close() if self.root: self.pub.close() else: self.sub.close() self._ctx.term() @property def info(self): """return the connection info for this object's sockets.""" return (self.tree_url, self.location) def connect(self, peers, btree, pub_url, root_id=0): """connect to peers. `peers` will be a dict of 4-tuples, keyed by name. {peer : (ident, addr, pub_addr, location)} where peer is the name, ident is the XREP identity, addr,pub_addr are the """ # count the number of children we have self.nchildren = list(btree.values()).count(self.id) if self.root: return # root only binds root_location = peers[root_id][-1] self.sub.connect(disambiguate_dns_url(pub_url, root_location)) parent = btree[self.id] tree_url, location = peers[parent] self.upstream.connect(disambiguate_dns_url(tree_url, location)) def serialize(self, obj): """serialize objects. Must return list of sendable buffers. Can be extended for more efficient/noncopying serialization of numpy arrays, etc. """ return serialize_object(obj) def deserialize(self, msg): """inverse of serialize""" return deserialize_object(msg)[0] def publish(self, value): assert self.root self.pub.send_multipart(self.serialize(value)) def consume(self): assert not self.root return self.deserialize(self.sub.recv_multipart()) def send_upstream(self, value, flags=0): assert not self.root self.upstream.send_multipart(self.serialize(value), flags=flags) def recv_downstream(self, flags=0, timeout=2000.0): # wait for a message, so we won't block if there was a bug self.downstream_poller.poll(timeout) msg = self.downstream.recv_multipart(flags) return self.deserialize(msg) def reduce(self, f, value, flat=True, all=False): """parallel reduce on binary tree if flat: value is an entry in the sequence else: value is a list of entries in the sequence if all: broadcast final result to all nodes else: only root gets final result """ if not flat: value = reduce(f, value) for i in range(self.nchildren): value = f(value, self.recv_downstream()) if not self.root: self.send_upstream(value) if all: if self.root: self.publish(value) else: value = self.consume() return value def allreduce(self, f, value, flat=True): """parallel reduce followed by broadcast of the result""" return self.reduce(f, value, flat=flat, all=True) ipython-ipyparallel-14e3c43/docs/source/examples/interengine/bintree_script.py000077500000000000000000000054001520071063500300140ustar00rootroot00000000000000#!/usr/bin/env python """ Script for setting up and using [all]reduce with a binary-tree engine interconnect. usage: `python bintree_script.py` This spanning tree strategy ensures that a single node node mailbox will never receive more that 2 messages at once. This is very important to scale to large clusters (e.g. 1000 nodes) since if you have many incoming messages of a couple of megabytes you might saturate the network interface of a single node and potentially its memory buffers if the messages are not consumed in a streamed manner. Note that the AllReduce scheme implemented with the spanning tree strategy impose the aggregation function to be commutative and distributive. It might not be the case if you implement the naive gather / reduce / broadcast strategy where you can reorder the partial data before performing the reduce. """ import ipyparallel as ipp # connect client and create views rc = ipp.Client() rc.block = True ids = rc.ids root_id = ids[0] root = rc[root_id] view = rc[:] from bintree import bintree, print_bintree # generate binary tree of parents btree = bintree(ids) print("setting up binary tree interconnect:") print_bintree(btree) view.run('bintree.py') view.scatter('id', ids, flatten=True) view['root_id'] = root_id # create the Communicator objects on the engines view.execute('com = BinaryTreeCommunicator(id, root = id==root_id )') pub_url = root.apply_sync(lambda: com.pub_url) # noqa: F821 # gather the connection information into a dict ar = view.apply_async(lambda: com.info) # noqa: F821 peers = ar.get_dict() # this is a dict, keyed by engine ID, of the connection info for the EngineCommunicators # connect the engines to each other: def connect(com, peers, tree, pub_url, root_id): """this function will be called on the engines""" com.connect(peers, tree, pub_url, root_id) view.apply_sync(connect, ipp.Reference('com'), peers, btree, pub_url, root_id) # functions that can be used for reductions # max and min builtins can be used as well def add(a, b): """cumulative sum reduction""" return a + b def mul(a, b): """cumulative product reduction""" return a * b view['add'] = add view['mul'] = mul # scatter some data data = list(range(1000)) view.scatter('data', data) # perform cumulative sum via allreduce print("reducing") ar = view.execute("data_sum = com.allreduce(add, data, flat=False)", block=False) ar.wait_interactive() print("allreduce sum of data on all engines:", view['data_sum']) # perform cumulative sum *without* final broadcast # when not broadcasting with allreduce, the final result resides on the root node: view.execute("ids_sum = com.reduce(add, id, flat=True)") print("reduce sum of engine ids (not broadcast):", root['ids_sum']) print("partial result on each engine:", view['ids_sum']) ipython-ipyparallel-14e3c43/docs/source/examples/interengine/communicator.py000066400000000000000000000051101520071063500274730ustar00rootroot00000000000000import socket import uuid import zmq from ipyparallel.util import disambiguate_url class EngineCommunicator: def __init__(self, interface='tcp://*', identity=None): self._ctx = zmq.Context() self.socket = self._ctx.socket(zmq.XREP) self.pub = self._ctx.socket(zmq.PUB) self.sub = self._ctx.socket(zmq.SUB) # configure sockets self.identity = identity or bytes(uuid.uuid4()) self.socket.IDENTITY = self.identity self.sub.SUBSCRIBE = b'' # bind to ports port = self.socket.bind_to_random_port(interface) pub_port = self.pub.bind_to_random_port(interface) self.url = f"{interface}:{port}" self.pub_url = f"{interface}:{pub_port}" # guess first public IP from socket self.location = socket.gethostbyname_ex(socket.gethostname())[-1][0] self.peers = {} def __del__(self): self.socket.close() self.pub.close() self.sub.close() self._ctx.term() @property def info(self): """return the connection info for this object's sockets.""" return (self.identity, self.url, self.pub_url, self.location) def connect(self, peers): """connect to peers. `peers` will be a dict of 4-tuples, keyed by name. {peer : (ident, addr, pub_addr, location)} where peer is the name, ident is the XREP identity, addr,pub_addr are the """ for peer, (ident, url, pub_url, location) in peers.items(): self.peers[peer] = ident if ident != self.identity: self.sub.connect(disambiguate_url(pub_url, location)) if ident > self.identity: # prevent duplicate xrep, by only connecting # engines to engines with higher IDENTITY # a doubly-connected pair will crash self.socket.connect(disambiguate_url(url, location)) def send(self, peers, msg, flags=0, copy=True): if not isinstance(peers, list): peers = [peers] if not isinstance(msg, list): msg = [msg] for p in peers: ident = self.peers[p] self.socket.send_multipart([ident] + msg, flags=flags, copy=copy) def recv(self, flags=0, copy=True): return self.socket.recv_multipart(flags=flags, copy=copy)[1:] def publish(self, msg, flags=0, copy=True): if not isinstance(msg, list): msg = [msg] self.pub.send_multipart(msg, copy=copy) def consume(self, flags=0, copy=True): return self.sub.recv_multipart(flags=flags, copy=copy) ipython-ipyparallel-14e3c43/docs/source/examples/interengine/interengine.py000066400000000000000000000025401520071063500273060ustar00rootroot00000000000000import ipyparallel as ipp rc = ipp.Client() rc.block = True view = rc[:] view.run('communicator.py') view.execute('com = EngineCommunicator()') # gather the connection information into a dict ar = view.apply_async(lambda: com.info) # noqa: F821 peers = ar.get_dict() # this is a dict, keyed by engine ID, of the connection info for the EngineCommunicators # connect the engines to each other: view.apply_sync(lambda pdict: com.connect(pdict), peers) # noqa: F821 # now all the engines are connected, and we can communicate between them: def broadcast(client, sender, msg_name, dest_name=None, block=None): """broadcast a message from one engine to all others.""" dest_name = msg_name if dest_name is None else dest_name client[sender].execute(f'com.publish({msg_name})', block=None) targets = client.ids targets.remove(sender) return client[targets].execute(f'{dest_name}=com.consume()', block=None) def send(client, sender, targets, msg_name, dest_name=None, block=None): """send a message from one to one-or-more engines.""" dest_name = msg_name if dest_name is None else dest_name def _send(targets, m_name): msg = globals()[m_name] return com.send(targets, msg) # noqa: F821 client[sender].apply_async(_send, targets, msg_name) return client[targets].execute(f'{dest_name}=com.recv()', block=None) ipython-ipyparallel-14e3c43/docs/source/examples/iopubwatcher.py000066400000000000000000000054621520071063500251720ustar00rootroot00000000000000"""A script for watching all traffic on the IOPub channel (stdout/stderr/pyerr) of engines. This connects to the default cluster, or you can pass the path to your ipcontroller-client.json Try running this script, and then running a few jobs that print (and call sys.stdout.flush), and you will see the print statements as they arrive, notably not waiting for the results to finish. You can use the zeromq SUBSCRIBE mechanism to only receive information from specific engines, and easily filter by message type. Authors ------- * MinRK """ import json import sys import zmq from ipykernel.connect import find_connection_file from jupyter_client.session import Session def main(connection_file): """watch iopub channel, and print messages""" ctx = zmq.Context.instance() with open(connection_file) as f: cfg = json.loads(f.read()) reg_url = cfg['interface'] iopub_port = cfg['iopub'] iopub_url = f"{reg_url}:{iopub_port}" session = Session(key=cfg['key'].encode('ascii')) sub = ctx.socket(zmq.SUB) # This will subscribe to all messages: sub.SUBSCRIBE = b'' # replace with b'' with b'engine.1.stdout' to subscribe only to engine 1's stdout # 0MQ subscriptions are simple 'foo*' matches, so 'engine.1.' subscribes # to everything from engine 1, but there is no way to subscribe to # just stdout from everyone. # multiple calls to subscribe will add subscriptions, e.g. to subscribe to # engine 1's stderr and engine 2's stdout: # sub.SUBSCRIBE = b'engine.1.stderr' # sub.SUBSCRIBE = b'engine.2.stdout' sub.connect(iopub_url) while True: try: idents, msg = session.recv(sub, mode=0) except KeyboardInterrupt: return # ident always length 1 here topic = idents[0].decode('utf8', 'replace') if msg['msg_type'] == 'stream': # stdout/stderr # stream names are in msg['content']['name'], if you want to handle # them differently print("{}: {}".format(topic, msg['content']['text'])) elif msg['msg_type'] == 'error': # Python traceback c = msg['content'] print(topic + ':') for line in c['traceback']: # indent lines print(' ' + line) elif msg['msg_type'] == 'error': # Python traceback c = msg['content'] print(topic + ':') for line in c['traceback']: # indent lines print(' ' + line) if __name__ == '__main__': if len(sys.argv) > 1: pattern = sys.argv[1] else: # This gets the security file for the default profile: pattern = 'ipcontroller-client.json' cf = find_connection_file(pattern) print(f"Using connection file {cf}") main(cf) ipython-ipyparallel-14e3c43/docs/source/examples/itermapresult.py000066400000000000000000000044441520071063500253750ustar00rootroot00000000000000"""Example of iteration through AsyncMapResults, without waiting for all results When you call view.map(func, sequence), you will receive a special AsyncMapResult object. These objects are used to reconstruct the results of the split call. One feature AsyncResults provide is that they are iterable *immediately*, so you can iterate through the actual results as they complete. This is useful if you submit a large number of tasks that may take some time, but want to perform logic on elements in the result, or even abort subsequent tasks in cases where you are searching for the first affirmative result. By default, the results will match the ordering of the submitted sequence, but if you call `map(...ordered=False)`, then results will be provided to the iterator on a first come first serve basis. Authors ------- * MinRK """ import time import ipyparallel as ipp # create client & view rc = ipp.Client() dv = rc[:] v = rc.load_balanced_view() # scatter 'id', so id=0,1,2 on engines 0,1,2 dv.scatter('id', rc.ids, flatten=True) print("Engine IDs: ", dv['id']) # create a Reference to `id`. This will be a different value on each engine ref = ipp.Reference('id') print("sleeping for `id` seconds on each engine") tic = time.perf_counter() ar = dv.apply(time.sleep, ref) for i, r in enumerate(ar): print(f"{i}: {time.perf_counter() - tic:.3f}") def sleep_here(t): import time time.sleep(t) return id, t # one call per task print("running with one call per task") amr = v.map(sleep_here, [0.01 * t for t in range(100)]) tic = time.perf_counter() for i, r in enumerate(amr): print(f"task {i} on engine {r[0]}: {time.perf_counter() - tic:.3f}") print("running with four calls per task") # with chunksize, we can have four calls per task amr = v.map(sleep_here, [0.01 * t for t in range(100)], chunksize=4) tic = time.perf_counter() for i, r in enumerate(amr): print(f"task {i} on engine {r[0]}: {time.perf_counter() - tic:.3f}") print("running with two calls per task, with unordered results") # We can even iterate through faster results first, with ordered=False amr = v.map( sleep_here, [0.01 * t for t in range(100, 0, -1)], ordered=False, chunksize=2 ) tic = time.perf_counter() for i, r in enumerate(amr): print(f"slept {r[1]:.2f}s on engine {r[0]}: {time.perf_counter() - tic:.3f}") ipython-ipyparallel-14e3c43/docs/source/examples/joblib.ipynb000066400000000000000000000135471520071063500244330ustar00rootroot00000000000000{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Using IPython Parallel as a joblib backend\n", "\n", "[joblib][] is a tool for running tasks, which includes support for implementing custom parallel backends.\n", "IPython defines one such backend, so you can use IPython parallel with joblib.\n", "\n", "[joblib]: https://joblib.readthedocs.io\n", "\n", "The simplest way to set this up is a single call:" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "tags": [] }, "outputs": [], "source": [ "import ipyparallel as ipp\n", "\n", "ipp.register_joblib_backend()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This registers the 'ipyparallel' backend with all the defaults." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Using existing profile dir: '/Users/minrk/.ipython/profile_default'\n", "Using existing profile dir: '/Users/minrk/.ipython/profile_default'\n", "Starting 4 engines with \n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "be0e2704e2204783ae9435d63d6facff", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/1 [00:00\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "dea6ba0c1c7b419eae13a54f7b6c66fb", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/4 [00:00>> print list(mergesort([[1,2,3,4], ... [2,3.25,3.75,4.5,6,7], ... [2.625,3.625,6.625,9]])) [1, 2, 2, 2.625, 3, 3.25, 3.625, 3.75, 4, 4.5, 6, 6.625, 7, 9] # note stability >>> print list(mergesort([[1,2,3,4], ... [2,3.25,3.75,4.5,6,7], ... [2.625,3.625,6.625,9]], ... key=int)) [1, 2, 2, 2.625, 3, 3.25, 3.75, 3.625, 4, 4.5, 6, 6.625, 7, 9] >>> print list(mergesort([[4, 3, 2, 1], ... [7, 6, 4.5, 3.75, 3.25, 2], ... [9, 6.625, 3.625, 2.625]], ... key=lambda x: -x)) [9, 7, 6.625, 6, 4.5, 4, 3.75, 3.625, 3.25, 3, 2.625, 2, 2, 1] """ heap = [] for i, itr in enumerate(iter(pl) for pl in list_of_lists): try: item = next(itr) if key: toadd = (key(item), i, item, itr) else: toadd = (item, i, itr) heap.append(toadd) except StopIteration: pass heapq.heapify(heap) if key: while heap: _, idx, item, itr = heap[0] yield item try: item = next(itr) heapq.heapreplace(heap, (key(item), idx, item, itr)) except StopIteration: heapq.heappop(heap) else: while heap: item, idx, itr = heap[0] yield item try: heapq.heapreplace(heap, (next(itr), idx, itr)) except StopIteration: heapq.heappop(heap) def remote_iterator(view, name): """Return an iterator on an object living on a remote engine.""" view.execute(f'it{name}=iter({name})', block=True) while True: try: result = view.apply_sync(next, ipp.Reference('it' + name)) # This causes the StopIteration exception to be raised. except RemoteError as e: if e.ename == 'StopIteration': raise StopIteration else: raise e else: yield result # Main, interactive testing if __name__ == '__main__': rc = ipp.Client() view = rc[:] print('Engine IDs:', rc.ids) # Make a set of 'sorted datasets' a0 = range(5, 20) a1 = range(10) a2 = range(15, 25) # Now, imagine these had been created in the remote engines by some long # computation. In this simple example, we just send them over into the # remote engines. They will all be called 'a' in each engine. rc[0]['a'] = a0 rc[1]['a'] = a1 rc[2]['a'] = a2 # And we now make a local object which represents the remote iterator aa0 = remote_iterator(rc[0], 'a') aa1 = remote_iterator(rc[1], 'a') aa2 = remote_iterator(rc[2], 'a') # Let's merge them, both locally and remotely: print('Merge the local datasets:') print(list(mergesort([a0, a1, a2]))) print('Locally merge the remote sets:') print(list(mergesort([aa0, aa1, aa2]))) ipython-ipyparallel-14e3c43/docs/source/examples/phistogram.py000066400000000000000000000023501520071063500246440ustar00rootroot00000000000000"""Parallel histogram function""" from ipyparallel import Reference def phistogram(view, a, bins=10, rng=None, normed=False): """Compute the histogram of a remote array a. Parameters ---------- view IPython DirectView instance a : str String name of the remote array bins : int Number of histogram bins rng : (float, float) Tuple of min, max of the range to histogram normed : boolean Should the histogram counts be normalized to 1 """ nengines = len(view.targets) # view.push(dict(bins=bins, rng=rng)) with view.sync_imports(): import numpy rets = view.apply_sync( lambda a, b, rng: numpy.histogram(a, b, rng), Reference(a), bins, rng ) hists = [r[0] for r in rets] lower_edges = [r[1] for r in rets] # view.execute('hist, lower_edges = numpy.histogram(%s, bins, rng)' % a) lower_edges = view.pull('lower_edges', targets=0) hist_array = numpy.array(hists).reshape(nengines, -1) # hist_array.shape = (nengines,-1) total_hist = numpy.sum(hist_array, 0) if normed: total_hist = total_hist / numpy.sum(total_hist, dtype=float) return total_hist, lower_edges ipython-ipyparallel-14e3c43/docs/source/examples/pi/000077500000000000000000000000001520071063500225255ustar00rootroot00000000000000ipython-ipyparallel-14e3c43/docs/source/examples/pi/parallelpi.py000066400000000000000000000036441520071063500252330ustar00rootroot00000000000000"""Calculate statistics on the digits of pi in parallel. This program uses the functions in :file:`pidigits.py` to calculate the frequencies of 2 digit sequences in the digits of pi. The results are plotted using matplotlib. To run, text files from https://www.super-computing.org/ must be installed in the working directory of the IPython engines. The actual filenames to be used can be set with the ``filestring`` variable below. The dataset we have been using for this is the 200 million digit one here: ftp://pi.super-computing.org/.2/pi200m/ and the files used will be downloaded if they are not in the working directory of the IPython engines. """ from timeit import default_timer as clock from matplotlib import pyplot as plt from pidigits import ( compute_two_digit_freqs, fetch_pi_file, plot_two_digit_freqs, reduce_freqs, ) import ipyparallel as ipp # Files with digits of pi (10m digits each) filestring = 'pi200m.ascii.%(i)02dof20' files = [filestring % {'i': i} for i in range(1, 21)] # Connect to the IPython cluster c = ipp.Client() c[:].run('pidigits.py') # the number of engines n = len(c) id0 = c.ids[0] v = c[:] v.block = True # fetch the pi-files print(f"downloading {n} files of pi") v.map(fetch_pi_file, files[:n]) # noqa: F821 print("done") # Run 10m digits on 1 engine t1 = clock() freqs10m = c[id0].apply_sync(compute_two_digit_freqs, files[0]) t2 = clock() digits_per_second1 = 10.0e6 / (t2 - t1) print("Digits per second (1 core, 10m digits): ", digits_per_second1) # Run n*10m digits on all engines t1 = clock() freqs_all = v.map(compute_two_digit_freqs, files[:n]) freqs150m = reduce_freqs(freqs_all) t2 = clock() digits_per_second8 = n * 10.0e6 / (t2 - t1) print(f"Digits per second ({n} engines, {n}0m digits): ", digits_per_second8) print("Speedup: ", digits_per_second8 / digits_per_second1) plot_two_digit_freqs(freqs150m) plt.title(f"2 digit sequences in {n}0m digits of pi") plt.show() ipython-ipyparallel-14e3c43/docs/source/examples/pi/pidigits.py000066400000000000000000000077751520071063500247330ustar00rootroot00000000000000"""Compute statistics on the digits of pi. This uses precomputed digits of pi from the website of Professor Yasumasa Kanada at the University of Tokoyo: https://www.super-computing.org/ Currently, there are only functions to read the .txt (non-compressed, non-binary) files, but adding support for compression and binary files would be straightforward. This focuses on computing the number of times that all 1, 2, n digits sequences occur in the digits of pi. If the digits of pi are truly random, these frequencies should be equal. """ import os from urllib.request import urlretrieve import numpy as np from matplotlib import pyplot as plt # Top-level functions def fetch_pi_file(filename): """This will download a segment of pi from super-computing.org if the file is not already present. """ ftpdir = "ftp://pi.super-computing.org/.2/pi200m/" if os.path.exists(filename): # we already have it return else: # download it urlretrieve(ftpdir + filename, filename) def compute_one_digit_freqs(filename): """ Read digits of pi from a file and compute the 1 digit frequencies. """ d = txt_file_to_digits(filename) freqs = one_digit_freqs(d) return freqs def compute_two_digit_freqs(filename): """ Read digits of pi from a file and compute the 2 digit frequencies. """ d = txt_file_to_digits(filename) freqs = two_digit_freqs(d) return freqs def reduce_freqs(freqlist): """ Add up a list of freq counts to get the total counts. """ allfreqs = np.zeros_like(freqlist[0]) for f in freqlist: allfreqs += f return allfreqs def compute_n_digit_freqs(filename, n): """ Read digits of pi from a file and compute the n digit frequencies. """ d = txt_file_to_digits(filename) freqs = n_digit_freqs(d, n) return freqs # Read digits from a txt file def txt_file_to_digits(filename, the_type=str): """ Yield the digits of pi read from a .txt file. """ with open(filename) as f: for line in f.readlines(): for c in line: if c != '\n' and c != ' ': yield the_type(c) # Actual counting functions def one_digit_freqs(digits, normalize=False): """ Consume digits of pi and compute 1 digit freq. counts. """ freqs = np.zeros(10, dtype='i4') for d in digits: freqs[int(d)] += 1 if normalize: freqs = freqs / freqs.sum() return freqs def two_digit_freqs(digits, normalize=False): """ Consume digits of pi and compute 2 digits freq. counts. """ freqs = np.zeros(100, dtype='i4') last = next(digits) this = next(digits) for d in digits: index = int(last + this) freqs[index] += 1 last = this this = d if normalize: freqs = freqs / freqs.sum() return freqs def n_digit_freqs(digits, n, normalize=False): """ Consume digits of pi and compute n digits freq. counts. This should only be used for 1-6 digits. """ freqs = np.zeros(pow(10, n), dtype='i4') current = np.zeros(n, dtype=int) for i in range(n): current[i] = next(digits) for d in digits: index = int(''.join(map(str, current))) freqs[index] += 1 current[0:-1] = current[1:] current[-1] = d if normalize: freqs = freqs / freqs.sum() return freqs # Plotting functions def plot_two_digit_freqs(f2): """ Plot two digits frequency counts using matplotlib. """ f2_copy = f2.copy() f2_copy.shape = (10, 10) ax = plt.matshow(f2_copy) plt.colorbar() for i in range(10): for j in range(10): plt.text(i - 0.2, j + 0.2, str(j) + str(i)) plt.ylabel('First digit') plt.xlabel('Second digit') return ax def plot_one_digit_freqs(f1): """ Plot one digit frequency counts using matplotlib. """ ax = plt.plot(f1, 'bo-') plt.title('Single digit counts in pi') plt.xlabel('Digit') plt.ylabel('Count') return ax ipython-ipyparallel-14e3c43/docs/source/examples/progress.ipynb000066400000000000000000001431021520071063500250250ustar00rootroot00000000000000{ "cells": [ { "cell_type": "markdown", "id": "0", "metadata": {}, "source": [ "# Using widgets in IPython Parallel\n", "\n", "IPython Parallel 7.1 introduces basic support for using Jupyter widgets from a notebook to engines.\n", "\n", "This allows things like progress bars for incremental stages,\n", "when IPP's own task-level progress doesn't show you enough information.\n", "\n", "As always, we start by creating and connecting to a cluster:" ] }, { "cell_type": "code", "execution_count": 1, "id": "1", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Starting 4 engines with \n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "8ac284e0bbb1461baef9fffe347c18a0", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/4 [00:00" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import ipyparallel as ipp\n", "\n", "rc = ipp.Cluster(n=4).start_and_connect_sync()\n", "rc.activate()" ] }, { "cell_type": "markdown", "id": "2", "metadata": {}, "source": [ "IPython widgets support updateable readouts of things like progress.\n", "\n", "There are [lots of widgets to choose from][widget list], but for our purposes,\n", "we are going to use `IntProgress`\n", "\n", "[widget list]: https://ipywidgets.readthedocs.io/en/stable/examples/Widget%20List.html" ] }, { "cell_type": "code", "execution_count": 2, "id": "3", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "dc361372c39e4a88a9eddd35967bc4b8", "version_major": 2, "version_minor": 0 }, "text/plain": [ "IntProgress(value=0, description='Step 0', max=10)" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import time\n", "\n", "import ipywidgets as W\n", "from IPython.display import display\n", "\n", "progress = W.IntProgress(min=0, max=10, description=\"Step 0\", readout=True)\n", "display(progress)\n", "\n", "for i in range(10):\n", " progress.value += 1\n", " progress.description = f\"Step {progress.value}/{progress.max}\"\n", " time.sleep(0.1)\n", "\n", "progress.bar_style = \"success\" # change color when it's done" ] }, { "cell_type": "markdown", "id": "4", "metadata": {}, "source": [ "IPython Parallel supports progress and interactive waits on AsyncResult objects,\n", "which is great when your tasks are small and you have a lot of them:" ] }, { "cell_type": "code", "execution_count": 3, "id": "5", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "b969bda88b784a9fb4c1b3e47af978d1", "version_major": 2, "version_minor": 0 }, "text/plain": [ ": 0%| | 0/1000 [00:00" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "rc[:].scatter(\"rank\", rc.ids, flatten=True)" ] }, { "cell_type": "code", "execution_count": 6, "id": "10", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[output:1]" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "fab62a72396946c4a23713818e810cf6", "version_major": 2, "version_minor": 0 }, "text/plain": [ "IntProgress(value=0, description='rank 1: 0', max=10)" ] }, "metadata": { "engine": 1 }, "output_type": "display_data" }, { "data": { "text/plain": [ "[output:3]" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "09fed44290574465abc2af7da1473db8", "version_major": 2, "version_minor": 0 }, "text/plain": [ "IntProgress(value=0, description='rank 3: 0', max=10)" ] }, "metadata": { "engine": 3 }, "output_type": "display_data" }, { "data": { "text/plain": [ "[output:0]" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "6ba7ddeac80b4b25af7e2f76df76fb9f", "version_major": 2, "version_minor": 0 }, "text/plain": [ "IntProgress(value=0, description='rank 0: 0', max=10)" ] }, "metadata": { "engine": 0 }, "output_type": "display_data" }, { "data": { "text/plain": [ "[output:2]" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "9248af9c8c604c30a83386b742afab1d", "version_major": 2, "version_minor": 0 }, "text/plain": [ "IntProgress(value=0, description='rank 2: 0', max=10)" ] }, "metadata": { "engine": 2 }, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "cb2270f240a547e0a6e14a500026deb3", "version_major": 2, "version_minor": 0 }, "text/plain": [ "%px: 0%| | 0/4 [00:002 # # # Eigenvalue distribution of Gaussian orthogonal random matrices # # The eigenvalues of random matrices obey certain statistical laws. Here we construct random matrices # from the Gaussian Orthogonal Ensemble (GOE), find their eigenvalues and then investigate the nearest # neighbor eigenvalue distribution $\rho(s)$. # from rmtkernel import ensemble_diffs, normalize_diffs, GOE import numpy as np import ipyparallel as ipp # # ## Wigner's nearest neighbor eigenvalue distribution # # The Wigner distribution gives the theoretical result for the nearest neighbor eigenvalue distribution # for the GOE: # # $$\rho(s) = \frac{\pi s}{2} \exp(-\pi s^2/4)$$ # def wigner_dist(s): """Returns (s, rho(s)) for the Wigner GOE distribution.""" return (np.pi*s/2.0) * np.exp(-np.pi*s**2/4.) # def generate_wigner_data(): s = np.linspace(0.0,4.0,400) rhos = wigner_dist(s) return s, rhos # s, rhos = generate_wigner_data() # plot(s, rhos) xlabel('Normalized level spacing s') ylabel('Probability $\rho(s)$') # # ## Serial calculation of nearest neighbor eigenvalue distribution # # In this section we numerically construct and diagonalize a large number of GOE random matrices # and compute the nerest neighbor eigenvalue distribution. This comptation is done on a single core. # def serial_diffs(num, N): """Compute the nearest neighbor distribution for num NxX matrices.""" diffs = ensemble_diffs(num, N) normalized_diffs = normalize_diffs(diffs) return normalized_diffs # serial_nmats = 1000 serial_matsize = 50 # %timeit -r1 -n1 serial_diffs(serial_nmats, serial_matsize) # serial_diffs = serial_diffs(serial_nmats, serial_matsize) # # The numerical computation agrees with the predictions of Wigner, but it would be nice to get more # statistics. For that we will do a parallel computation. # hist_data = hist(serial_diffs, bins=30, normed=True) plot(s, rhos) xlabel('Normalized level spacing s') ylabel('Probability $P(s)$') # # ## Parallel calculation of nearest neighbor eigenvalue distribution # # Here we perform a parallel computation, where each process constructs and diagonalizes a subset of # the overall set of random matrices. # def parallel-diffs(rc, num, N): nengines = len(rc.targets) num_per_engine = num/nengines print "Running with", num_per_engine, "per engine." ar = rc.apply_async(ensemble_diffs, num_per_engine, N) diffs = np.array(ar.get()).flatten() normalized_diffs = normalize_diffs(diffs) return normalized_diffs # client = ipp.Client() view = client[:] view.run('rmtkernel.py') view.block = False # parallel-nmats = 40*serial_nmats parallel-matsize = 50 # %timeit -r1 -n1 parallel-diffs(view, parallel-nmats, parallel-matsize) # pdiffs = parallel-diffs(view, parallel-nmats, parallel-matsize) # # Again, the agreement with the Wigner distribution is excellent, but now we have better # statistics. # hist_data = hist(pdiffs, bins=30, normed=True) plot(s, rhos) xlabel('Normalized level spacing s') ylabel('Probability $P(s)$') ipython-ipyparallel-14e3c43/docs/source/examples/rmt/rmt.ipynb000066400000000000000000001276741520071063500246050ustar00rootroot00000000000000{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Eigenvalue distribution of Gaussian orthogonal random matrices" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The eigenvalues of random matrices obey certain statistical laws. Here we construct random matrices \n", "from the Gaussian Orthogonal Ensemble (GOE), find their eigenvalues and then investigate the nearest\n", "neighbor eigenvalue distribution $\\rho(s)$." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "import numpy as np\n", "from rmtkernel import ensemble_diffs, normalize_diffs\n", "\n", "import ipyparallel as ipp" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Wigner's nearest neighbor eigenvalue distribution" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The Wigner distribution gives the theoretical result for the nearest neighbor eigenvalue distribution\n", "for the GOE:\n", "\n", "$$\\rho(s) = \\frac{\\pi s}{2} \\exp(-\\pi s^2/4)$$" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "def wigner_dist(s):\n", " \"\"\"Returns (s, rho(s)) for the Wigner GOE distribution.\"\"\"\n", " return (np.pi * s / 2.0) * np.exp(-np.pi * s**2 / 4.0)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "def generate_wigner_data():\n", " s = np.linspace(0.0, 4.0, 400)\n", " rhos = wigner_dist(s)\n", " return s, rhos" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "s, rhos = generate_wigner_data()" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "<matplotlib.text.Text at 0x3828790>" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nSUVORK5CYII=\n" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.plot(s, rhos)\n", "plt.xlabel('Normalized level spacing s')\n", "plt.ylabel('Probability $\\rho(s)$')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Serial calculation of nearest neighbor eigenvalue distribution" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this section we numerically construct and diagonalize a large number of GOE random matrices\n", "and compute the nerest neighbor eigenvalue distribution. This comptation is done on a single core." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "def serial_diffs(num, N):\n", " \"\"\"Compute the nearest neighbor distribution for num NxX matrices.\"\"\"\n", " diffs = ensemble_diffs(num, N)\n", " normalized_diffs = normalize_diffs(diffs)\n", " return normalized_diffs" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "serial_nmats = 1000\n", "serial_matsize = 50" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1 loops, best of 1: 1.19 s per loop" ] } ], "source": [ "%timeit -r1 -n1 serial_diffs(serial_nmats, serial_matsize)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "serial_diffs = serial_diffs(serial_nmats, serial_matsize)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The numerical computation agrees with the predictions of Wigner, but it would be nice to get more\n", "statistics. For that we will do a parallel computation." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "<matplotlib.text.Text at 0x3475bd0>" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nvDyaNWtGcHAwzZs3N7u/dUNyat2XJSk81FTR/rToO+4JIYQwHbM+JCWEEMJ8SMEQQghhECkYQggh\nDCIFQwghhEGkYIhKZWNjQ3BwsP75v//977/cArTq+fv7c/jwYQACAwNJTU2t0PrCw8MZOnSowa9X\nxbaq0tWrV3nmmWdMuk1hmaRgiEpVs2ZNvv/+e5KSkgDjr8TNy8urcIZ7t7l161bs7e0rvE5r1qJF\nCzZu3Kh1DGEBpGCISmVnZ8cLL7zAokWLii27evUqM2fOxNPTk1mzZnHjxg0AJkyYwMsvv4yvry+v\nvvoqEydO5JVXXsHHx4f27dtz5MgRXnjhBTp06MC8efP06/v73/9O165d6dGjB6tXry4xj7OzM0lJ\nSXz00Ud4e3vj7e1NmzZtePzxx4GCecDGjRuHr68vc+bM0V+RGxsbS9++ffH29mb79u1lfu6MjAw+\n/PBD/Pz8CAwMJDw8HIDu3bsXuZq2cO8nMzOzxPaluXz5MoMGDcLLywtPT0/OnTtHXFwc7u7uTJ48\nGTc3N+bPn6/P//bbb+Pj40PXrl1ZsGBBkfW88soreHt706VLFy5cuEBcXBwdO3YE4IsvvmD06NEM\nHjwYDw8Pli5dqn/vtm3b6N69Oz4+Prz00ktMnz69WM6jR4/St29fvLy86Ny5M7dv3y6z74QFqcjU\nuUL8Vb169VRqaqpydnZWKSkp6t///reaN2+eUkqpWbNmqffff18ppdSCBQvU7NmzlVJKjR8/Xvn5\n+emn3J4wYYIaNGiQysrKUl988YWqV6+eCg8PV1lZWcrNzU0/dXxycrJSSqmsrCzl6+urbt++rZRS\nyt/fXx06dEgppZSzs7NKSkrS58vJyVG9e/dWoaGh+ra3bt1SSik1e/Zs9c033yillOrUqZOKjo5W\nt2/fVgMHDixxeujdu3fr7zPw+eefqyVLliillLp+/bry8fFRSim1aNEiNXfuXKWUUlevXlXt27e/\nb/t713mvuXPnqk8++UT/GTIyMtSFCxeUTqdT3333ncrMzFRPP/20+vbbb4v0TW5urho6dKg6deqU\nvq9XrFih77c7d+6oCxcu6KeS//zzz1WTJk3U1atXVWpqqnrooYdUdna2ysnJUc7OzurChQsqKSlJ\nde7cWU2fPr1YzvHjx6uwsDClVME04Lm5ucXaCMslexii0tWvX59x48YV+dcpwM8//8ykSZMAmDx5\nMlu2bAEKDiGNGDGC+vXr69uOGDGCmjVr0r17dxo2bIifnx81a9bE29tbPxPwzp07CQwMxNvbm/Pn\nz/PLL7+UmW3GjBn07duXwMBADh06xLFjx/D398fb25vQ0FAiIyO5cuUKSil8fHyoW7cuo0aNKnO6\n6k2bNrF69Wq8vb0ZOHAgN27c4MKFC4wcOZJvv/0WgA0bNujHCkpqf/78+VLX37VrVxYvXsx7771H\ncnIyDzzwAFAwLc2wYcOoVasWY8aMYdu2bQAcPHiQ4cOH06lTJw4fPsyOHTvIzs5m9+7dTJkyBSg4\nfFi7du1i2xowYADNmzenfv36uLu7c/jwYaKioujYsSPOzs44ODjwxBNPlNgn3bt3Z86cOSxfvpzc\n3FxsbW3L/J0Iy2H2U4MIy/TSSy/RuXNnJk6cWOT10r54mzdvXuR54fxcNWvWpGHDhvrXa9asSXZ2\nNmlpacyZM4c9e/bw4IMPMmzYMG7evHnfTF988QWXL19m5cqVQME01R4eHuzevbtIu/j4eMM+5D3y\n8/NZsWIFffr0KbascePG/P7772zYsEE/NUNp7Qun6/irwMBAunTpwpo1a+jZsycbN24s0i+FCsdv\npk+fzrfffouHhwezZs3i5s2b6HS6Emco/au/9ndmZiY1atQoMjZU2jqCgoLo37+/fiqS6OhomjZt\net/tCcshexiiSjRq1IiRI0fy6aef6r9oBg8ezJdffkl+fj6fffYZTzzxRLnWrZTi1q1b2NnZ0axZ\nM06fPs2uXbvu+55Dhw6xcOFCvvrqK/1rXbt25caNG/o9lvT0dM6cOcNDDz2Era0tsbGxpKens2HD\nhjIzjR07lpCQENLS0gCKTHk9atQo3nvvPVJTU/Hw8CizfUkuXLign7uob9+++nGRlJQUfvjhB7Ky\nsli/fj0DBw4kMzOTtLQ0nJ2duXLlCps3bwYKxpcee+wxVq9ejVKKrKwsMjIyyvxsOp2Obt268fvv\nvxMXF0dycjKhoaElntBw7tw5XFxc+N///V9cXV3N4l4lovJIwRCV6t4vkVdeeYXExET98+DgYC5d\nuoS3tzc3btzg5ZdfLvF9f31e0rKWLVsyfPhwPDw8mDZtWqmnohb+q3rFihXcvHmTxx57DG9vb154\n4QUAvvrqK1atWkWnTp3o0aMHf/zxBwAff/wxr732Gr169cLT07PEL0edTqd/fcSIEfj4+BAQEICH\nhwdz587VtxsxYgTr169n5MiRRV4rqf2967zXhg0b8PDwoGvXrty5c0e/LldXV3788Ue8vLzw8PAg\nMDCQBx54gDlz5uDj48OoUaMYPHiwfj3vvPMOZ8+exdPTk549e+pPPCjcZmnbt7W1Zfny5YwaNYqB\nAwfSsWNH2rRpU6zdkiVL6NixIz4+Pri6utKjR48Sfy/CMsnkg0JYqLi4OIYOHcrvv/9uku2lp6dT\nt25dUlJSGDJkCJ988gnt27c3ybaFeZAxDCEsmCnvODdv3jzCwsKws7Pj2WeflWJRDckehhBCCIPI\nGIYQQgiDSMEQQghhECkYQgghDCIFQwghhEGkYAghhDCIFAwhhBAG+X8LAxP1Be5fBAAAAABJRU5E\nrkJggg==\n" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "hist_data = plt.hist(serial_diffs, bins=30, normed=True)\n", "plt.plot(s, rhos)\n", "plt.xlabel('Normalized level spacing s')\n", "plt.ylabel('Probability $P(s)$')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Parallel calculation of nearest neighbor eigenvalue distribution" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here we perform a parallel computation, where each process constructs and diagonalizes a subset of\n", "the overall set of random matrices." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "def parallel_diffs(rc, num, N):\n", " nengines = len(rc.targets)\n", " num_per_engine = num / nengines\n", " print(\"Running with\", num_per_engine, \"per engine.\")\n", " ar = rc.apply_async(ensemble_diffs, num_per_engine, N)\n", " diffs = np.array(ar.get()).flatten()\n", " normalized_diffs = normalize_diffs(diffs)\n", " return normalized_diffs" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "client = ipp.Client()\n", "view = client[:]\n", "view.run('rmtkernel.py')\n", "view.block = False" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "parallel_nmats = 40 * serial_nmats\n", "parallel_matsize = 50" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Running with 10000 per engine.\n", "1 loops, best of 1: 14 s per loop" ] } ], "source": [ "%timeit -r1 -n1 parallel_diffs(view, parallel_nmats, parallel_matsize)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.9" }, "widgets": { "application/vnd.jupyter.widget-state+json": { "state": {}, "version_major": 2, "version_minor": 0 } } }, "nbformat": 4, "nbformat_minor": 4 } ipython-ipyparallel-14e3c43/docs/source/examples/rmt/rmtkernel.py000066400000000000000000000022571520071063500253020ustar00rootroot00000000000000# ------------------------------------------------------------------------------- # Core routines for computing properties of symmetric random matrices. # ------------------------------------------------------------------------------- import numpy as np ra = np.random la = np.linalg def GOE(N): """Creates an NxN element of the Gaussian Orthogonal Ensemble""" m = ra.standard_normal((N, N)) m += m.T return m / 2 def center_eigenvalue_diff(mat): """Compute the eigvals of mat and then find the center eigval difference.""" N = len(mat) evals = np.sort(la.eigvals(mat)) diff = np.abs(evals[N / 2] - evals[N / 2 - 1]) return diff def ensemble_diffs(num, N): """Return num eigenvalue diffs for the NxN GOE ensemble.""" diffs = np.empty(num) for i in range(num): mat = GOE(N) diffs[i] = center_eigenvalue_diff(mat) return diffs def normalize_diffs(diffs): """Normalize an array of eigenvalue diffs.""" return diffs / diffs.mean() def normalized_ensemble_diffs(num, N): """Return num *normalized* eigenvalue diffs for the NxN GOE ensemble.""" diffs = ensemble_diffs(num, N) return normalize_diffs(diffs) ipython-ipyparallel-14e3c43/docs/source/examples/task_mod.py000066400000000000000000000002361520071063500242710ustar00rootroot00000000000000import numpy from numpy.linalg import norm def task(n): """Generates a 1xN array and computes its 2-norm""" A = numpy.ones(n) return norm(A, 2) ipython-ipyparallel-14e3c43/docs/source/examples/task_profiler.py000066400000000000000000000043351520071063500253400ustar00rootroot00000000000000#!/usr/bin/env python """Test the performance of the task farming system. This script submits a set of tasks via a LoadBalancedView. The tasks are basically just a time.sleep(t), where t is a random number between two limits that can be configured at the command line. To run the script there must first be an IPython controller and engines running:: ipcluster start -n 16 A good test to run with 16 engines is:: python task_profiler.py -n 128 -t 0.01 -T 1.0 This should show a speedup of 13-14x. The limitation here is that the overhead of a single task is about 0.001-0.01 seconds. """ import random import time from optparse import OptionParser import ipyparallel as ipp def main(): parser = OptionParser() parser.set_defaults(n=100) parser.set_defaults(tmin=1e-3) parser.set_defaults(tmax=1) parser.set_defaults(profile='default') parser.add_option("-n", type='int', dest='n', help='the number of tasks to run') parser.add_option( "-t", type='float', dest='tmin', help='the minimum task length in seconds' ) parser.add_option( "-T", type='float', dest='tmax', help='the maximum task length in seconds' ) parser.add_option( "-p", '--profile', type='str', dest='profile', help="the cluster profile [default: 'default']", ) (opts, args) = parser.parse_args() assert opts.tmax >= opts.tmin, "tmax must not be smaller than tmin" rc = ipp.Client() view = rc.load_balanced_view() print(view) rc.block = True nengines = len(rc.ids) # the jobs should take a random time within a range times = [ random.random() * (opts.tmax - opts.tmin) + opts.tmin for i in range(opts.n) ] stime = sum(times) print(f"executing {opts.n} tasks, totalling {stime:.1f} secs on {nengines} engines") time.sleep(1) start = time.perf_counter() amr = view.map(time.sleep, times) amr.get() stop = time.perf_counter() ptime = stop - start scale = stime / ptime print(f"executed {stime:.1f} secs in {ptime:.1f} secs") print(f"{scale:3f}x parallel performance on {nengines} engines") print(f"{scale / nengines:.0%} of theoretical max") if __name__ == '__main__': main() ipython-ipyparallel-14e3c43/docs/source/examples/throughput.py000066400000000000000000000030621520071063500247010ustar00rootroot00000000000000import time import numpy as np import ipyparallel as parallel nlist = map(int, np.logspace(2, 9, 16, base=2)) nlist2 = map(int, np.logspace(2, 8, 15, base=2)) tlist = map(int, np.logspace(7, 22, 16, base=2)) nt = 16 def wait(t=0): import time time.sleep(t) def echo(s=''): return s def time_throughput(nmessages, t=0, f=wait): client = parallel.Client() view = client.load_balanced_view() # do one ping before starting timing if f is echo: t = np.random.random(t / 8) view.apply_sync(echo, '') client.spin() tic = time.time() for i in range(nmessages): view.apply(f, t) lap = time.time() client.wait() toc = time.time() return lap - tic, toc - tic def do_runs(nlist, t=0, f=wait, trials=2, runner=time_throughput): A = np.zeros((len(nlist), 2)) for i, n in enumerate(nlist): t1 = t2 = 0 for _ in range(trials): time.sleep(0.25) ts = runner(n, t, f) t1 += ts[0] t2 += ts[1] t1 /= trials t2 /= trials A[i] = (t1, t2) A[i] = n / A[i] print(n, A[i]) return A def do_echo(n, tlist=[0], f=echo, trials=2, runner=time_throughput): A = np.zeros((len(tlist), 2)) for i, t in enumerate(tlist): t1 = t2 = 0 for _ in range(trials): time.sleep(0.25) ts = runner(n, t, f) t1 += ts[0] t2 += ts[1] t1 /= trials t2 /= trials A[i] = (t1, t2) A[i] = n / A[i] print(t, A[i]) return A ipython-ipyparallel-14e3c43/docs/source/examples/visualizing-tasks.ipynb000066400000000000000000012041421520071063500266530ustar00rootroot00000000000000{ "cells": [ { "cell_type": "markdown", "id": "c12b2b6a-f643-4cb9-b5b4-dca60086a8e7", "metadata": {}, "source": [ "# Visualizing an AsyncResult in progress" ] }, { "cell_type": "code", "execution_count": 1, "id": "91255a04-00e0-44d5-8817-e5346226b4ca", "metadata": {}, "outputs": [], "source": [ "import ipyparallel as ipp" ] }, { "cell_type": "code", "execution_count": 2, "id": "4bd7ec9e-285a-4e40-bfdf-89290a5e0e35", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Using existing profile dir: '/Users/minrk/.ipython/profile_default'\n", "Starting 8 engines with \n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "a88e9002f12849979a16528e113e9a54", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/8 [00:00" ] }, "metadata": { "image/png": { "height": 384, "width": 612 }, "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "from matplotlib import pyplot as plt\n", "\n", "df.plot.barh(y=['prepare', 'schedule', 'compute', 'reply'], stacked=True, width=1)\n", "plt.grid((True, False))\n", "yticks = [0, len(df) // 2, len(df)]\n", "plt.yticks(yticks, yticks)\n", "plt.xlabel(\"seconds\")\n", "plt.ylabel(\"tasks\")\n", "# plt.ylim([0, len(df)])" ] }, { "cell_type": "markdown", "id": "4e41ad4e-9af8-4a46-a745-2f0aa4af87eb", "metadata": {}, "source": [ "In this visualization, the blue indicates the time spent in the client preparing the tasks to be submitted.\n", "It takes 200ms to prepare and send all of these mesages.\n", "\n", "The blue area is mostly pure overhead of IPython parallel,\n", "and should be minimized. The same goes for red, which is the same thing, just in the other direction - delivering completed results from engines to the client.\n", "\n", "The orange indicates scheduling time - the time tasks are waiting in queues before starting.\n", "There are two contributors to this:\n", "\n", "1. available compute (if there are more tasks than engines, tasks need to wait). Allocating more engines can help with this.\n", " The optimal scenario here is one engine per task, which would mean no task ever has to wait for busy engines.\n", " On the other hand, your engines will probably spend a lot of time idle, so that's lost of wasted resources.\n", "2. Scheduler overhead - There's always a cost to delivering messages.\n", " There is currently no separate measure of when a task has been *assigned* to an engine,\n", " so it is difficult to measure this one except by comparing the time between completing one task and starting the next\n", " \n", "The green is time spent actually working on tasks. This is all the 'real' work. In a perfect world, the graph would be all green, but that's never going to happen.\n", "\n", "The little bits of red are the overhead of delivering results back to the client.\n", "That cost is usually very low." ] }, { "cell_type": "markdown", "id": "cca4b6af-36a4-4aca-8e45-7536bf43f2f9", "metadata": {}, "source": [ "We can also visualize the work on the engines,\n", "which should look like a solid block of color if there's no wasted time.\n", "\n", "The left and right edges are the times when the first task was created and the last result was received at the client (the total effective computation time).\n", "\n", "The y axis is the engine id, and the x axis is time since the beginning of the task.\n", "Space in the graph indicates idle engines." ] }, { "cell_type": "code", "execution_count": 7, "id": "d1d7a1ef-a541-4f17-b6ef-9bb9bd3a0138", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0, 0.5, 'engine id')" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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5cHfPphUO/2H9WfIvkP48vUv+XLSlxQuKKTLGl3YbK/NOOmhk3j9zte57cjbmnUfipcV88LfXmD/v+zPwBED+fK1L5tVj6SE+fPnM378+KTKdu7cmZtvvpnS0lLGjBnDlClTALjooot44YUXOPDAAzn44IO59957ARg+fDjDhw/nyCOPrPyANn36dMaPH88WW2xR+UttdnY2t956KxMmTODWW29tgXsptT1ZWVmcdNJJfPbZZ7z22mu19m+66aYUFRXV2n7cccdx8803c+mll/Lzn/88qbYuu+wyNthgA6666irOOuusyu2/+c1vuPbaa7nhhhvYfffdm3U/ioqKuPfeeznxxBNZb731+OKLL5pVj5RKu+yyCwMHDuS2225j9913Z+zYsZx//vkUFxenu2tSm9HYeWqrrbbilltu4YMPPmC33XZj9uzZ1fbn5CQf7mor5ymH0EpKmS0P3ZKO3Tsy6fZJtfb17N+TA648gMXzFnPZFpdx9yl3c/+Z9/OHzf7AnC/msMvZuzBw64FJtfPmPW9yVu+zuH6v67n7lLt55IJHuOPYO7hw3Qv57qPv2PqIrVln+DrNvh+T/z2Z0pJSxvx6TLPrkNR0BxxwAKutthr33HNPZfAOEh98LrzwQgB+9atfVW7v378/AG+88Ubltoq/K/YBnHfeeay33nocf/zxzepX//79iTFy2223sf7663PPPfcwe/ZsSktLq81ZtMsuu/DEE0/www8/sGzZMr744gv+8pe/0LVr11p1Dh48mP/85z+VwzTmzJnDlClTuPrqq6t94LztttuIMVa7PxWSHfpy2223MXHiRADGjRtXbShzRf9zc3P5zW9+w5QpUygoKGDJkiVMnz6dRx55hB133DHpxyo/P59zzjmHN998k4ULF7Jo0SI++ugj/va3v7HaaqtVK7vGGmtw3XXXMX36dIqKipgzZw4PPvggm2++ea16x44dS4yRsWPHstNOO/HSSy+xaNEi5syZw6233lr5GA8ZMoTHHnuMgoICFi1axKOPPlrnY1cxD0+7du34wx/+wJdffln5P/v9739Pbm5utfJVnwN1qTmvTzKPeYVDDjmEF154gYKCAgoLC/noo4+44IILaNeuXZ1tHXzwwbz11lssXbqU2bNnc8cdd7DmmmvWWbYhO++8M/369asMiNdUV/AO4L777gNg/fXXT6qdDh06cMQRR7B48eJaz9WK//9uu+3GgAEDqu078sgjefXVV5kzZw6FhYXMnDmTp59+uloWboV77rmHrKwsjjnmmKT6JLW0ivPNzTffzF133UXv3r3Zb7/9Wqw9z1Oep1bF89Rf/vIXcnJyOPzww2sF7wBKSkqSaqctnafMwFO9Vlt/NUYdM4qNdtqIHv170L5LexZ+v5CPnvmIxy95nPnfzq91zNZHbs3oE0ez2vqr0b5zexb9sIhZH81i0q2TeOu+txi03SDOmvhTRPumeFPl35Nun8S/jv5Xvf2pWvayGZdV/j13xtzKobj9Nu/H1kduzaAxg+ixdg/adWhHwdcFTP3vVJ7845Msnb+0Wp3ZudmMPmk0I48aSc8BPcnNy2XhnIV88943TPj7BD55/pNGH6ddzt6F/f68H1++9iXX73U9S39c2mD59bZZj13P2ZW1h65Np96dWPrjUubNmMeHT33I45c8Xq1sbn4uO562I1scvAWrrb8aMUa+e/87Xrj2Bd68p/ocABWP7WPjHuPdR95l30v3Zd1R65LTLocZb87g4fMerjObrPNqndn3sn3ZbM/NaN+lPbM/nc1zVz9HwVcFjd73mkYdO4riomLefeTdWvtGHjOS3Pa5PPPnZ6oNf146fylPXfYUY28dy+iTRvPl641nvJUU1f1mvGzRMj565iP6bNyH1dZfjRlvzqjc12tAL3Y7dzc22GEDuvXtRnFhMfO/nc8Xr37Boxc8ypKCJZVlF8xawBcvf8HmB2zOf379H5YtWpb8gyCpmry8PA477DD69evHkiVLmDp1Ki+99BJlZWW1yu6www4APP3007X2vfTSSyxZsoSRI0fSrl07li9fzsyZiUzfYcOG8emnnwKwxRZbAPDVV18BsPHGG3PhhRdy5plnVpZvrnXXXZfJkyfz2Wefcdddd5Gfn8/ChQuBRJbgJZdcwrx583j88ceZM2cOm222Gb/97W/ZY489GDFiBIsWLQISX4omT55MjJH//ve/TJ8+nS5durDeeuvx61//mgsvvDDpD53JeOSRRwA46qijmDhxYuUHdoAZM2YAcPvtt3PooYfy/vvvc8cdd1BYWEifPn3YZptt2G233Xj++ecbbadbt25MmDCBIUOG8Mknn3DrrbeyfPly1l13XY455hgeeugh5syZA8A666zDK6+8Qt++fXn++ee5++67WXvttTnwwAP5+c9/zv77788TTzxRq429996bPffck8cff5wbb7yRkSNHcvTRRzNgwADOPfdcnn/+eV5++WX++c9/MnjwYPbee2/WXXddBg8eXOfE2ffddx/Dhw/ngQceoLi4mH322acyg3Pvvfdu+oNdLpnHHOCWW27h2GOP5euvv+ahhx5i/vz5bL311vzxj39kxx13ZOedd6a0tLSy/Omnn87VV1/Njz/+yB133MH8+fPZddddmTRpEgsWLGhSH3faaScAXnnllSYdt9deewEwderUpMqPGDGCDh068Mwzz9QaOh9j5Nlnn+XEE09k++23rxyedOmll3L++efz5Zdfct9997FgwQLWXHNNhg8fzoEHHlgZRKzwxhtvsHz5cnbeeWfOP//8Jt0fKdVWW2019t57bz799FNee+01Fi5cyFlnncUJJ5xQ67mbap6nGuZ56idt/TzVt29fRo8ezZtvvsmHH37ImDFjGDZsGDFG3n333SYtmNGWzlMG8FSvob8YyuiTRvPphE+ZNmkaJctL6LNJH0YdN4rN9tqMy7a4jPnfza8sv++l+7L7+bvzw5c/MOW+KRQuKKTrml3pP7w/mx+4OW/d9xbzZszjsXGPsePpiV9Jnr/mpzfar9/9usH+PDbuMYbsO4S1h6zN89c8XxmMK5xfWFlmm+O3Yeh+Q/nsxc/45LlPyMrOot/m/dj5rJ3ZZPdNuHyryyla/NMvykfdfhRbHrol377/La/f8TrFhcV07dOV9bZZj01226TBAF4IgYOuOYgdTt2Bdx56h1sOvaXewFKFTXbdhFOeOIXChYVM/e9U5n87nw49OrDmRmuy3a+3qxbAy++az5kvnEm/zfvx1ZSvmHTrJEJWYONdN+a4u4+jzyZ9ePSiR2u10X+L/ux6zq58+dqXvHLLK/To14PN99+cM54/gz8O+SOzP/vp14mOPTryu0m/o/e6vfn85c/54pUv6LpmVw678TA+evajBu9LTe27tKf/Fv356s2vKC6sPTxgwx02BODDpz+ste+Dpz4AYIMdNmhSmzXl5udW1vHt+99Wbu+yRhfOe/M88rvk8/6T7/POg++Q0z6HXgN6sfURWzPxuonVAngA016dxgbbb8D6o9fn/SfeX6F+SauyNddck3//+9/Vtn355ZccffTRvPTSS9W2b7BB4vX72Wef1aqntLSU6dOns+mmmzJw4EA++eQT3nzzTaZMmcJNN93EyJEjK+fAe+ONN3jrrbfIysri1ltv5fXXX+eGG25Y4fuy7bbbctlll3HBBdXnbx0zZgyXXHIJkyZNYo899qj2AXXs2LHcfvvtjB8/njPPPLNyW35+Pvvssw///e9/q9XVrVs3li5t+Iegpnr00UeZP39+5Yf0mkOau3TpwiGHHMJbb73FVlttVSu42qNHj6Tauf766xkyZAj/93//x8knn1ztg3OnTp2qLUJy44030rdvXy644AIuu+ynH+VuuOEGXnrpJf71r3/Rv39/liyp/t689957s+OOO1Y+d0IIPPPMM+y88848+eSTnHDCCfznP/+pLF/xxWOvvfaq9VgDbLTRRmyyySbMnz8fgAsuuIAJEyaw1157cfjhh9d67iarscccEs+DY489loceeojDDjuMZct++rHo4osvZty4cZx88slce+21QCK74vLLL6egoIDNN9+8Mkh93nnncf/997P//vs3qY/bbLMNAG+99VaD5Y499ljWWmstOnXqxODBg9lpp52YMWMG5557blLtNPS6Bvj8888Bqk3yf+KJJ/LNN9+w6aabUlhYWK18z549a9WxbNkyPvzwQ4YOHUqnTp3qnWNTWhmOPvpo2rVrx+233w7Ahx9+yJQpU9h+++1Zd911mTZtWou17XmqYZ6nftLWz1MVC0J8/vnnvPDCC2y//fbV9k+dOpVf/OIXSb3e2tJ5ygCe6jX5zsk8f/XzlCyvHpTaaOeNOPWpU9njwj34z69/evPZ9sRt+fGbHxm/6fhaAZyOPTsCMO+reTw+/nFGHDUCgMfHV884a8jj4x+n5zo9KwN4dS1i8fSfnubuk+8mllWPto86ZhRH/vNIxvx6DM/85RkgEXDa4pAt+Oqtr/jTVn+qdUzHHh3r7UtOXg7H3nUsm++/ORP+PoF7T7s3qQj/NsdvQ1Z2FleNuYpvpn5Tvb2e1ds76JqD6Ld5Px4850GeveLZam3/+pFfs9v5uzHlgSl88171ejbbczNuP+p2XvvXT/MEbHvCthx+0+HscNoO3H3y3ZXb9/vTfvRetzfPXf0c9595f+X2iddN5Hev/a7R+1PVuiPWJTsnm6/e+qrO/RWrulYNIFZY+P1Cli1eRo+1e5Cbn1tnALAuvdftzVaHb0VWdhZdVu/Cpj/flO59u/PUZU9VC+ANO2AYnXp24t7T7uWFa1+oVke7Du1q/e+Byuw9A3hS89122228/PLLfPjhhyxatIiBAwdyyimncMIJJ/DUU08xYsSIalk8FcNL6vuFtmJ7t27dACgrK2Ovvfbi6quv5qCDDiLGyAMPPMAZZ5xBjJGzzjqLwYMH87Of/Yxu3brx97//nX322Yfc3FyeffZZfvWrXzVpQYvvv/++zg+4p556KpAYMlWz7//617847bTTOOywwyq/GFWo+YEPqPyAvjLFGMnKyqKoqKjOzMiCgsYzsnv37s3BBx/Md999x9lnn13rnFj1g2rfvn3Zdddd+eqrr/jLX/5Srdxrr73G3XffzRFHHMEvfvGLWpNP33333dUCvzFG7rzzTnbeeWc++OCDal+KAO644w6OPfZYhgwZUucXoz/84Q/VHvOioiLOO+88Jk6cyDHHHNPsL0bJOO200yguLuaYY46p9qWool+nnHIKhx12WOUXo8MOO4y8vDwuv/zyyi9FkHgMfvvb37LvvvuSnZ2ddPv9+vVj+fLljf5/jzvuOLbeeuvK22+88QaHHnpo0kGIpr6uKxQXF1fL6qgwb17di5h9//33DB06lL59+1Zm5ErpcNxxx1FaWsodd9xRue32229n2LBhHHfccZx33nkt1rbnqfp5nmq61nyeqhjufNBBBzF37lz2228/nn/+eXr37s3FF1/MkUceyRNPPMHgwYMbnXuyLZ2nDOCpXlWz66r6+H8f892H37HxrhvX2ldaXEosrR0MWTJvSa1tLaFgZt1v3q/e+ioHXnUgG++6cWUAj5iYGLO4qLjOAE7NjKwKHbp34OT/nszAkQN56HcP/VRfEywvXF67vSqPUcceHdnq8K2Y8eaMasE7SAwffeh3D3HRbhex5aFb1grgffHKF9WCd5C4/7+87pcM2PKncftZOVlsediWFC4s5LFxj1Ur/9WUr5h812RGHjUy6fvUo1/il68Fs+p+48vvmg9A4YLaHwQqtrfv1J78rvlJB/BWW2819hq3V+Xt4qJiHjj7Af731//VWb6uepcvrf2/AFjwfeJ+VNwvSU13ySWXVLv94Ycf8qtf/YrFixdz9tlnM27cOH7xi18kXV8IAaDah+5Zs2ZxyCGH1Cq73nrrMX78eC666CK++OILHn74YcaMGcPJJ5/MwoULue6663jooYeqBSYa895777F8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sXDOQgZuPbDO/ZNum8Su5+zKmFPGMOm2SZWrCHfo1oHdz98dgJdufKnaMR17dqRTr04snru42iIf645al+mTp9cK0nXq1Yn9Lt8PoNrKsesMX4d5X82rPSS6xuNeVcX9+HSCE2FLzXHggQdy7rnnMmHCBKZPn86iRYtYd911+fnPf05+fj5PPPEEV15ZPct50aJFHH/88TzwwANMnDiRe+65h4KCAvbee2823HBD7r//fu6999562zzuuOMYM2YMw4cPr/Zr+bRp03jooYc45phj6NSpEwsXLuSoo45i8uTJSQ+fbcgLL7zA7373O/70pz/x+eef8+STTzJ9+nQ6depE//792W677XjllVfYfffEe91ZZ53FLrvswsSJE/nyyy9ZvHgxm2yyCbvvvjsFBQX84x//qKz70Ucf5bPPPuPQQw9lrbXWYvLkyfTr14999tmHRx99lIMPPjipPn766ad88803HHLIISxfvpyZM2dWrozXvXt3Jk+ezEcffcTbb7/N119/TZcuXdhzzz1Zc801+dvf/lbt1+j6nHLKKWy66ab86le/YsyYMTzzzDMsX76cAQMGsOuuu7L33ntXTmx90kkn8eqrr3LllVeyyy678NZbb7H22mtz4IEHUlZWxtFHH51Umyvq448/5sMPP+SBBx6guLiYffbZh/XWW4/HH3+81sTkV1xxBbfeeiuvvvoq999/P8uWLWP77bcnNzeXd999lyFDhlQr39BjPnPmTG677TaGDRvGySefzLRp03jmmWeYOXMmPXr0YMCAAYwePZrbbruNX/3qVwB89dVXnHvuuVx11VW888473HvvvSxYsIBdd92Vbt268d577/Gzn/0s6fv+yCOPcM0117Drrrvyz3/+s9q+oUOH8tBDDzFp0iQ+++wzZs+eTc+ePdl6663ZbLPNWLRoEUcccUSt1SA/+STxObDmF+Pzzz+fMWPGcNZZZzFkyBDeeOMNNtpoI/bdd19mz57NySefXFk2Pz+f559/nunTpzN58mS++uor2rdvz84778zGG2/Mo48+WtlOhYrsiJYalig1ZrvttmPDDTdk6tSpvPnmm/WW++c//8kFF1zA0UcfzcUXX1znCpYtwfNUguepIdXKt+XzFMBll13GjjvuyNixYxk8eDATJ06kd+/e7L///uTn53PmmWfWygpt6+cpA3iq08LZC3nj7jfY8pdbctG7F/HRsx+R3zWfjXbeiOJlxcx8Zyb9hv4Uqc/Nz+WM589g7vS5TJ88nYKvCshpn8NGO29En4378O6j7/L9Jz9NqvrJ858wYMsBnPr0qXz+0ueUFJXwzXvfMPXxqQ3265PnP2HXc3bliJuP4O0H3qZocRFL5y9l4vUTmfHmDL545Qs2339zznn1HL545Qu6rN6FTXbfhNmfzubHb6un/Xbr243zJp/Hdx99x9dvf03B1wXkd8ln8J6D6bpmV57/2/O1sg+rmvr4VG7Y5wZ+9fCvOGviWVyz0zV8M7XhbK0D/noAPdfpyWcTP2PejHmULC+h/7D+bLjjhsydMZe37vlp1aJ7TrmH1ddfnX3+sA9bH7E1X7zyBQtnL6Rbn26ssdEaDNhyADcfcnOzA3gAD5//MBvuuCE7nbET/bfozxevfEHXNbuyxcFb8P6T7zNknyFNqu/dh99l9ImjWXPjNWsFNOfNmMeDv32QQ/5+COe/dT5v3fsWJctL2PyAzemxdg+evfLZWkNrtz9le/YatxePjXuMx8c/Xrn9l9f9ki5rdGHaq9MomFlAWWkZPdfpyeA9BtOuQzveefidakNitzx0S8acPIbPXvyMOV/MYemPS+m9bm8222szipcV8/w1z1drN4TAhjtuyPeffM93H36HpKabMGECG2ywAUOHDmXEiBF07NiR+fPn88orr3DnnXfW+tBZ4dFHH2W77bbjggsuYP/996d9+/Z88cUXnHHGGVx77bX1ttenTx+uuOIKLr/8ct57771a+4855hgWLVrEPvvsQ25uLo8//ni1D2Mr6i9/+Quvvvoqp556Kttssw377LMPCxYs4Ntvv+Uf//gH//nPfyrL3nDDDfz4449stdVWjBo1ipycHL755htuuOEG/vrXvzJz5szKskVFRey4445ceeWV7LzzzgwfPpwPPvig8tf/ZL8YlZWVsd9++3H55Zdz0EEH0blzZ7KysnjllVd49913+f3vf8+YMWPYfvvt6dWrFwUFBXz66aece+65SU9WPn/+fEaOHMnpp5/OwQcfzAknnEBpaSlff/01t956a7VhW9OnT2eLLbbgwgsvZI899mDMmDEsXLiQp59+mksvvbTOVfxawkEHHcRFF13EYYcdRp8+ffj222+5+OKLufzyy2uVve222wghcOaZZzJ27Fh+/PFHHn30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6pwbY2YPUiSA55zLM7PxwIAwbU9EREREREREJK4559YGmbUWmGtmPwLzgF+AN6utYlLtEsJUzlnA1+U0j10HHBGm7YmIiIiIiIiIHNZ8A318A9wR7bpIZIUrgNcUWF7OMnlA7TBtT0REREREREREYCvQMdqVkMgKVxPaXUCrcpbpBGwJ0/ZEREREREREJBCNBHvYMLNEYAiwN9p1kcgKVwBvInCumTVzzpUK0plZR2Ao8EGYticiIiIiIiIiEtfM7OQgs5LwJlJdA/QC3qiuOkl0hCuA9yRwHjDWzO4EagGYWW3gZOBZwAM8HabtiYiIiIiIiEgApgy8eDKGsnMqDRgH/KlaaiNRE5YAnnNuqpndALwKfFtk1j7faz5wrXNuYTi2JyIiIiIiIiJyGHiYwAE8D7AbmOacm1a9VZJoCFcGHs65t81sAvB7oD/QEG8b7CnAS865peHaloiIiIiIiIhIvHPODY92HSQ2hC2AB+CcWw7cFc4yRURERERERKQS1IRWJO4kRLsCIiIiIiIiIiIiElxYM/BERERERERERCQ0ZrYqxFWdc65DWCsjMUUBPBEREREREZF4oia0NVkCpf+DKUBz3+/5wE684w74YzqbgdxqqZ1EjZrQioiIiIiIiIjEAOdcW+dcO/8P0BPYiHeA0MFAmnOuOZAGDAGmAhuAo6NVZ6keysATERERERERiRcOLJoZeMr+C7dHgUygh3OuMMvOOecBxpjZYGC+b7nbo1JDqRbKwBMRERERERERiU0XACOKBu+Kcs5lAyOAC6u1VlLtFMATEREREREREYlNDYHkcpZJ9i0ncUwBPBEREREREZF44qL4I+G2ErjYzDICzTSz+sDFQKij10oNoQCeiIiIiIiIiEhsehU4AphmZleZWVszS/e9DsM7iEUz4OWo1lIiToNYiIiIiIiIiMQJI7qDWFj0Nh2XnHMvmVlH4Dbg7QCLGPCic+6V6q2ZVDcF8EREREREREREYpRz7g4z+wS4FugNZAB7gVnAO865SdGsn1QPBfBERERERERERGKYc24yMDna9ZDoUQBPREREREREJJ5oMAmRuKNBLERERERERERERGKYAngiIiIiIiIiIiIxTE1oRUREREREROKJmtCKxB1l4ImIiIiIiIiIiMQwZeCJiIiIiIiIxAsHFs0MPGX/iUSEMvBERERERERERERi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Al4ws1OAxXiz2QbjbfJ6X5FlW/jmr8UbrAu1nEJmVg+4BO/gFe+WU9dxZrYMmA5sxNvn3gCgB3AIuMI5t6/cdyxSBmXgiYiIiIiIiMSTmj2AhfcteLPnjsU78ms/4I9AB+AF4Hjn3M4Il3MF3gy9igxe8RSwBRgC3AFcBSQDLwNHOed+qkhdRcqiDDwRERERERERiTm+UVyvqcByawCrajkl1vkn8M8KLvunypQtEgpl4ImIiIiIiIiIiMQwZeCJiIiIiIiIxJMwNmUVkdigDDwREREREREREZEYpgCeiIiIiIiIiIhIDFMTWhEREREREZE4YmpCKxJ3lIEnIiIiIiIiIiISw5SBJyIiIiIiIhIvHNEdxELZfyIRoQw8ERERERERERGRGKYAnoiIiIiIiIiISAxTE1oRERERERGROGGAuei1Y7WobVkkvikDT0REREREREREJIYpgCciIiIiIiIiIhLD1IRWREREREREJJ5oJFiRuKMMPBERERERERERkRimDDwRERERERGROGLKwBOJO8rAExERERERERERiWEK4ImIiIiIiIiIiMQwNaEVERERERERiSdqQisSd5SBJyIiIiIiIiIiEsOUgSciIiIiIiISL1yUB7FQ9p9IRCgDT0REREREREREJIYpgCciIiIiIiIiIhLD1IRWREREREREJJ6oGatI3FEGnoiIiIiIiIiISAxTAE9ERERERERERCSGqQmtiIiIiIiISByJ6ii0IhIRysATERERERERERGJYcrAExEREREREYknysATiTvKwBMREREREREREYlhCuCJiIiIiIiIiIjEMDWhFREREREREYkjGsRCJP4oA09ERERERERERCSGKYAnIiIiIiIiIiISw9SEVkRERERERCReOOf9ieb2RSTslIEnIiIiIiIiIiISw5SBJyIiIiIiIhInjOgOYmHR27RIXFMGnoiIiIiIiIiISAxTAE9ERERERERERCSGqQmtiIiIiIiISDzROBIicUcZeCIiIiIiIiIiIjFMGXgiIiIiIiIiccQ80a6BiISbMvBERERERERERERimAJ4IiIiIiIiIiIiMUxNaEVERERERETihSO6g1hoAA2RiFAGnoiIiIiIiIiISAxTAE9ERERERERERCSGqQmtiIiIiIiISBwxNWMViTvKwBMREREREREREYlhNSoDz8waAhcA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iWFqQisiIiIiIiISTzzRroCIhJsy8ERERERERERERGKYMvBERERERERE4oQ5ojqIhWkMC5GIUAaeiIiIiIiIiIhIDFMAT0REREREREREJIapCa2IiIiIiIhIPFEzVpG4oww8ERERERERERGRGKYAnoiIiIiIiIiISAxTE1oRERERERGReBLFUWhFJDKUgSciIiIiIiIiIhLDlIEnIiIiIiIiEkdMCXgicUcZeCIiIiIiIiIiIjFMATwREREREREREZEYpia0IiIiIiIiIvFEg1iIxB1l4ImIiIiIiIiIiMQwZeCJiIiIiIiIxAsH5onu9kUk/JSBJyIiIiIiIiIiEsMUwBMREREREREREYlhakIrIiIiIiIiEk80iIVI3FEGnoiIiIiIiIiISAxTAE9ERERERERERCSGqQmtiIiIiIiISDxRC1qRuKMMPBERERERERERkRimDDwRERERERGRuOGwqA5iofQ/kUhQBp6IiIiIiIiIiEgMUwBPREREREREREQkhqkJrYiIiIiIiEi8cEA0m9CqBa1IRCgDT0REREREREREJIYpgCciIiIiIiIiIhLD1IRWREREREREJJ54ol0BEQk3ZeCJiIiIiIiIiIjEMGXgiYiIiIiIiMQRi+YgFiISEcrAExERERERERERiWEK4ImIiIiIiIiIiMQwNaEVERERERERiSdqQisSd5SBJyIiIiIiIiIiEsOUgSciIiIiIiISLxzRzcBT8p9IRCgDT0REREREREREJIYpgCciIiIiIiIiIhLD1IRWREREREREJJ54ol0BEQk3ZeCJiIiIiIiIiIjEMAXwREREREREREREYpia0IqIiIiIiIjECcNhURyF1jQMrUhEKANPREREREREREQkhtW4AJ6ZXWxmL5rZeDPbZ2bOzD6Idr1EREREREREYoJz0fsRkYioiU1o/wr0BA4AG4Au0a2OiIiIiIiIiIhI5NS4DDzgLqATUA+4Ocp1ERERERERERERiagal4HnnBvt/93MolkVERERERERkdjiiG5TVrWiFYmImpiBJyIiIiIiIiIictgwV4M7mTSzQcBo4EPn3G8rsd7MILO6tG/fPv3ll1/eEobqsTV/X4Nsl5da1jI3zlpRZhk3Dt9U5vxTvj8WgD2HapGbn1zJGhaXkpRHs9p7STJP1B+abN3fPCc/JavMz64i8j0JOBc4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UM72Atnuey1zxFyR8igDT0RERERERERiyWjf6+lmVixuYWZ18TZnzQKmRKIcM0sBPscbvHsPuDLE4B1AP9/rqhDXFwEUwBMRERERERGRGOKcW4l3QIi2wC0lZj+EN5vtPefcQQAzSzazLmbWoSrl+MpKBb4EzgPeBK5xznnKqq+ZnRRgmpnZX4DjgR3AD2WVIVIeNaEVERERERERiSfRHIU2fH4PTAJeMLNTgMV4s9kG423yel+RZVv45q/FG6wLtRyAV4Gz8AbdNgIPmFmJRRjjnBtT5O9xZrYMmO5bJwNvdl8P4BBwhXNuX8XfukhpCuCJiIiIiIiISExxzq00s2OBh4GheINqm4EXgIecc7siVE4732sj4IEyih5T5PengL7AEKAB4AHWAS8Dzzjn1HxWqkwBPBEREREREZF4Eh8ZeP5RXK+pwHJrgFJpcpUtx7fsoApWr+g6f6rsOiKVpT7wREREREREREREYpgCeCIiIiIiIiIiIjFMTWhFRERERERE4oUjuk1o46P1rkjMUQaeiIiIiIiIiIhIDFMAT0REREREREREJIapCa2IiIiIiIhI3HDgiWY7VrWhFYkEZeCJiIiIiIiIiIjEMGXgiYiIiIiIiMQT54l2DUQkzJSBJyIiIiIiIiIiEsMUwBMREREREREREYlhakIrIiIiIiIiEk+cBpIQiTfKwBMREREREREREYlhysATERERERERiRcO8EQxA0/JfyIRoQw8ERERERERERGRGKYAnoiIiIiIiIiISAxTE1oRERERERGRuOGiPIiF2tCKRIIy8ERERERERERERGKYAngiIiIiIiIiIiIxTE1oRUREREREROJJVJvQikgkKANPREREREREREQkhikDT0RERERERCSeKANPJO4oA09ERERERERERCSGKYAnIiIiIiIiIiISw9SEVkRERERERCReOMDjie72RSTslIEnIiIiIiIiIiISwxTAExERERERERERiWFqQisiIiIiIiISN1yUR6FVG1qRSFAGnoiIiIiIiIiISAxTBp6IiIiIiIhIPIlqBp6IRIIy8ERERERERERERGKYAngiIiIiIiIiIiIxTE1oRUREREREROKFAzxRbEKr1rsiEaEMPBERERERERERkRimDDwRERERERGROOKcJ9pVEJEwUwaeiIiIiIiIiIhIDFMAT0REREREREREJIapCa2IiIiIiIhI3HDRHcRCo1iIRIQy8ERERERERERERGKYAngiIiIiIiIiIiIxTE1oRUREREREROKJUzNWkXijDDwREREREREREZEYpgw8ERERERERkXjhAI8nutsXkbBTBp6IiIiIiIiIiEgMUwBPREREREREREQkhqkJrYiIiIiIiEg80SAWInFHGXgiIiIiIiIiIiIxTAE8ERERERERERGRGKYmtCIiIiIiIiJxwuFwURyF1mkYWpGIUAaeiIiIiIiIiIhIDFMGnoiIiIiIiEi8cER3EAsl4IlEhDLwREREREREREREYpgCeCIiIiIiIiIiIjFMTWhFRERERERE4olH7VhF4o0y8ERERERERERERGKYMvBERERERERE4oYD54nu9kUk7JSBJyIiIiIiIiIiEsMUwBMREREREREREYlhakIrIiIiIiIiEi8cuGgOYqEWtCIRoQw8ERERERERERGRGKYAnoiIiIiIiIiISAxTE1oRERERERGReBLVUWhFJBKUgSciIiIiIiIiIhLDamQAz8xamtlbZrbJzHLMbI2ZPWdm9aNdNxEREREREZFoch4XtZ9wCte9fyjlmNkJZvadme0ys0NmNs/M7jSzxDLWGWZm08zsgJntNbMxZvarytRVJJgaF8Azsw7ATOAaYBrwLLAKuAOYbGYNo1g9EREREREREamicN37h1KOmZ0HjANOBr4EXgZSfOt+EmQ7TwHvAM2B14EPgKOAb8zs1orUVaQsNS6AB7wCNAFud86d75y7xzk3BO8XqTPwaFRrJyIiIiIiIiJVFa57/0qVY2b18AbgCoBBzrnrnHN/AnoBk4GLzezSEuucAPwRWAkc7Zy7yzl3C9AH2AU8ZWZtK/0JiBRRowJ4ZtYeOB1YgzcCXtSDwEHgSjOrXc1VExEREREREYkBzjuIRbR+qHoz2nDd+4dYzsVAY+AT59wM/0TnXDbwV9+fN5co6ybf66POud1F1vFvNxVvBqBIyGpUAA8Y4nv9ybniw+o45/YDE4FaQP/qrpiIiIiIiIiIhEW47v1DKce/zg8ByhsHHAJOMLPUCq7zfYllREJizoW3k8lIMrMngbuBu51zTweY/xJwC/B759w/yyhnZpBZPVNSUhJbtGiRF476FiS45PKWaXQop8z56zaXXZW67ermAeRDuduqiJTE/HAUEzJPQVJY3w8W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\n", "text/plain": [ "
" ] }, "metadata": { "image/png": { "height": 401, "width": 632 }, "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import matplotlib as mpl\n", "import numpy as np\n", "from matplotlib import cm\n", "from matplotlib.collections import PatchCollection\n", "from matplotlib.patches import Rectangle\n", "\n", "y = df.engine_id\n", "x = df.started\n", "width = df.completed\n", "height = np.ones(len(df))\n", "\n", "color_map = mpl.cm.ScalarMappable(\n", " norm=mpl.colors.Normalize(vmin=0, vmax=df.compute.max()),\n", " cmap=cm.viridis,\n", ")\n", "\n", "plt.colorbar(color_map, label=\"duration (s)\")\n", "\n", "\n", "def working_rect(row):\n", " \"\"\"Create a rectangle representing one task\n", "\n", " x = start time\n", " y = engine id\n", " width = duration\n", " height = 1\n", " color = duration\n", " \"\"\"\n", " duration = row.completed - row.started\n", " return Rectangle(\n", " (row.started, row.engine_id),\n", " width=duration,\n", " height=1,\n", " color=color_map.to_rgba(duration),\n", " )\n", "\n", "\n", "rects = df.apply(working_rect, axis=1)\n", "pc = PatchCollection(rects, match_original=True)\n", "\n", "ax = plt.gca()\n", "ax.set_ylim(0, df.engine_id.max() + 1)\n", "ax.set_xlim(0, df.received.max())\n", "ax.add_collection(pc)\n", "\n", "last_send = df.submitted.max()\n", "finished = df.received.max()\n", "first_result = df.received.min()\n", "half_done = df.received.quantile(0.5)\n", "\n", "ymin, ymax = ax.get_ylim()\n", "\n", "\n", "def annotate_milestone(ax, t, label, color=\"red\", dark=False, top=True):\n", " \"\"\"Add a vertical line annotation for a milestone time\"\"\"\n", "\n", " patch = plt.vlines(\n", " [t],\n", " *ax.get_ylim(),\n", " linewidth=4,\n", " color=color,\n", " )\n", " if top:\n", " xy = (t, ymax)\n", " xytext = (10, 10)\n", " else:\n", " xy = (t, ymin)\n", " xytext = (10, -30)\n", " full_label = f\"{label} ({t:.1f}s)\"\n", " ax.annotate(\n", " full_label,\n", " xy=xy,\n", " xytext=xytext,\n", " textcoords=\"offset points\",\n", " color=\"white\" if dark else \"black\",\n", " bbox=dict(\n", " boxstyle=\"round\",\n", " fc=color,\n", " ),\n", " arrowprops=dict(\n", " arrowstyle=\"wedge,tail_width=1.\",\n", " fc=color,\n", " patchA=None,\n", " patchB=patch,\n", " relpos=(0.2, 0.8),\n", " # connectionstyle=\"arc3,rad=-0.1\",\n", " ),\n", " )\n", "\n", "\n", "annotate_milestone(\n", " ax,\n", " df.submitted.max(),\n", " \"last task send\",\n", " color=(0.4, 0, 0.4),\n", " dark=True,\n", ")\n", "annotate_milestone(\n", " ax,\n", " df.completed.quantile(0.5),\n", " \"50% results computed\",\n", " color=\"black\",\n", " dark=True,\n", ")\n", "annotate_milestone(\n", " ax,\n", " df.completed.max(),\n", " \"All results computed\",\n", " color=\"black\",\n", " dark=True,\n", ")\n", "\n", "annotate_milestone(\n", " ax,\n", " df.received.min(),\n", " \"first result arrives\",\n", " color=(1, 0.5, 0.5),\n", " top=False,\n", ")\n", "annotate_milestone(\n", " ax,\n", " df.received.quantile(0.5),\n", " \"50% results arrived\",\n", " color=(1, 0.5, 0.5),\n", " top=False,\n", ")\n", "annotate_milestone(\n", " ax,\n", " df.received.max(),\n", " \"All done\",\n", " color=(1, 0.5, 0.5),\n", " top=False,\n", ")\n", "\n", "\n", "# plt.vlines(\n", "# [first_result, half_done, finished],\n", "# *ax.get_ylim(),\n", "# linewidth=4,\n", "# color=\"red\",\n", "# )\n", "# plt.legend(loc=0)\n", "plt.xlabel(\"seconds\")\n", "plt.ylabel(\"engine id\")" ] }, { "cell_type": "markdown", "id": "c4ecbaf9-d541-482e-8749-62aaa8a2192d", "metadata": {}, "source": [ "Sometimes in this example, a bubble of idle engines can be produced around when the last task is sent.\n", "\n", "This is caused when lots of results arrive in the client while the client is still trying to submit tasks.\n", "Because of IPython Parallel's threaded implementation,\n", "this can cause lots of contention,\n", "and receiving lots of results can significantly affect overal performance if the client is still trying to assemble tasks to submit.\n", "\n", "This is an opportunity for [optimization in the client](https://github.com/ipython/ipyparallel/pull/534)!\n", "\n", "A similar visualization can be done with altair." ] }, { "cell_type": "code", "execution_count": 8, "id": "a5ce43d6-2202-4fd6-a1d9-251d8572d380", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
\n", "" ], "text/plain": [ "alt.Chart(...)" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import altair as alt\n", "\n", "alt.Chart(df).mark_rect().encode(\n", " x=\"started\",\n", " x2=\"completed\",\n", " y=\"engine_id\",\n", " y2=\"next_engine_id\",\n", " color=\"compute\",\n", ").transform_calculate(\n", " next_engine_id=\"datum.engine_id + 1\",\n", ")" ] }, { "cell_type": "markdown", "id": "7d5d9bda-a58b-43b9-9839-59811956a6f8", "metadata": {}, "source": [ "We can also visualize 'load' as a measure of how busy the cluster is.\n", "It's essentially collecting samples of the above plot by drawing lots of vertical lines,\n", "and counting how many boxes are intersected instead of empty space.\n", "\n", "That is, for any given point in time, how many engines are working,\n", "vs how many are waiting for their next task.\n", "\n", "We do this by sampling points in time and counting the number of 'active' tasks.\n", "This is computed as the average value across a given window (default: sample every 10ms, plot the average load over 100ms)" ] }, { "cell_type": "code", "execution_count": 9, "id": "bdabe160-5548-492d-910c-d1af39e88739", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "image/png": { "height": 384, "width": 599 }, "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "def plot_load(asyncresult_df, samples=None, window=10):\n", " if samples is None:\n", " samples = min(int(1e2 * df['received'].max()), 1001)\n", "\n", " timeline = np.linspace(0, df['received'].max(), samples)\n", " remaining = df\n", " working = []\n", " for t in timeline:\n", " remaining = remaining[remaining.completed >= t]\n", " active = remaining[remaining.started < t]\n", " working.append(len(active))\n", "\n", " s = pd.Series(working, index=timeline, name=\"load\")\n", " if window > 1:\n", " windowed = s.rolling(window).mean()\n", " else:\n", " windowed = s\n", " windowed.plot()\n", " plt.ylim(0, len(df.engine_id.unique()))\n", " plt.xlabel(\"seconds\")\n", " plt.ylabel(\"busy engines\")\n", " plt.xlim(0, timeline[-1])\n", "\n", "\n", "plot_load(df)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.9" }, "widgets": { "application/vnd.jupyter.widget-state+json": { "state": { "0421d9cb7f9b406d982ee0c005a9a532": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HTMLModel", "state": { "layout": "IPY_MODEL_b3cd9eef2db342308a832c022cbb620d", "style": "IPY_MODEL_8fd7b6a17e804c90961d59398b635244", "value": "100%" } }, "2325225341874e0b9cee528398d6424b": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "description_width": "" } }, "5109f916201e46279f135d7403112689": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "6849ab149d6d41c99fe55794adfc8d23": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "ProgressStyleModel", "state": { "description_width": "" } }, "7ba86883f6654cb8bd011b877aa43270": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "8fd7b6a17e804c90961d59398b635244": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "description_width": "" } }, "a304343ad95c4cf888b0052e1ac42917": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HTMLModel", "state": { "layout": "IPY_MODEL_c33ae892827943a9b19193d0fbbfa253", "style": "IPY_MODEL_2325225341874e0b9cee528398d6424b", "value": " 8/8 [00:09<00:00, 1.37s/engine]" } }, "a88e9002f12849979a16528e113e9a54": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HBoxModel", "state": { "children": [ "IPY_MODEL_0421d9cb7f9b406d982ee0c005a9a532", "IPY_MODEL_f10a317efcce44cd9ddd950a291e1076", "IPY_MODEL_a304343ad95c4cf888b0052e1ac42917" ], "layout": "IPY_MODEL_7ba86883f6654cb8bd011b877aa43270" } }, "b3cd9eef2db342308a832c022cbb620d": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "c33ae892827943a9b19193d0fbbfa253": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "f10a317efcce44cd9ddd950a291e1076": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "FloatProgressModel", "state": { "bar_style": "success", "layout": "IPY_MODEL_5109f916201e46279f135d7403112689", "max": 8, "style": "IPY_MODEL_6849ab149d6d41c99fe55794adfc8d23", "value": 8 } } }, "version_major": 2, "version_minor": 0 } } }, "nbformat": 4, "nbformat_minor": 5 } ipython-ipyparallel-14e3c43/docs/source/examples/wave2D/000077500000000000000000000000001520071063500232455ustar00rootroot00000000000000ipython-ipyparallel-14e3c43/docs/source/examples/wave2D/RectPartitioner.py000077500000000000000000000461111520071063500267430ustar00rootroot00000000000000#!/usr/bin/env python """A rectangular domain partitioner and associated communication functionality for solving PDEs in (1D,2D) using FDM written in the python language The global solution domain is assumed to be of rectangular shape, where the number of cells in each direction is stored in nx, ny, nz The numerical scheme is fully explicit Authors ------- * Xing Cai * Min Ragan-Kelley """ from numpy import ascontiguousarray, frombuffer, zeros try: from mpi4py import MPI except ImportError: pass else: mpi = MPI.COMM_WORLD class RectPartitioner: """ Responsible for a rectangular partitioning of a global domain, which is expressed as the numbers of cells in the different spatial directions. The partitioning info is expressed as an array of integers, each indicating the number of subdomains in one spatial direction. """ def __init__(self, my_id=-1, num_procs=-1, global_num_cells=[], num_parts=[]): self.nsd = 0 self.my_id = my_id self.num_procs = num_procs self.redim(global_num_cells, num_parts) def redim(self, global_num_cells, num_parts): nsd_ = len(global_num_cells) # print("Inside the redim function, nsd=%d" %nsd_) if nsd_ < 1 | nsd_ > 3 | nsd_ != len(num_parts): print('The input global_num_cells is not ok!') return self.nsd = nsd_ self.global_num_cells = global_num_cells self.num_parts = num_parts def prepare_communication(self): """ Find the subdomain rank (tuple) for each processor and determine the neighbor info. """ nsd_ = self.nsd if nsd_ < 1: print(f'Number of space dimensions is {nsd_}, nothing to do') return self.subd_rank = [-1, -1, -1] self.subd_lo_ix = [-1, -1, -1] self.subd_hi_ix = [-1, -1, -1] self.lower_neighbors = [-1, -1, -1] self.upper_neighbors = [-1, -1, -1] num_procs = self.num_procs my_id = self.my_id num_subds = 1 for i in range(nsd_): num_subds = num_subds * self.num_parts[i] if my_id == 0: print("# subds=", num_subds) # should check num_subds againt num_procs offsets = [1, 0, 0] # find the subdomain rank self.subd_rank[0] = my_id % self.num_parts[0] if nsd_ >= 2: offsets[1] = self.num_parts[0] self.subd_rank[1] = my_id / offsets[1] if nsd_ == 3: offsets[1] = self.num_parts[0] offsets[2] = self.num_parts[0] * self.num_parts[1] self.subd_rank[1] = (my_id % offsets[2]) / self.num_parts[0] self.subd_rank[2] = my_id / offsets[2] print(f"my_id={my_id}, subd_rank: {self.subd_rank}") if my_id == 0: print("offsets=", offsets) # find the neighbor ids for i in range(nsd_): rank = self.subd_rank[i] if rank > 0: self.lower_neighbors[i] = my_id - offsets[i] if rank < self.num_parts[i] - 1: self.upper_neighbors[i] = my_id + offsets[i] k = self.global_num_cells[i] / self.num_parts[i] m = self.global_num_cells[i] % self.num_parts[i] ix = rank * k + max(0, rank + m - self.num_parts[i]) self.subd_lo_ix[i] = ix ix = ix + k if rank >= (self.num_parts[i] - m): ix = ix + 1 # load balancing if rank < self.num_parts[i] - 1: ix = ix + 1 # one cell of overlap self.subd_hi_ix[i] = ix print( "subd_rank:", self.subd_rank, "lower_neig:", self.lower_neighbors, "upper_neig:", self.upper_neighbors, ) print( "subd_rank:", self.subd_rank, "subd_lo_ix:", self.subd_lo_ix, "subd_hi_ix:", self.subd_hi_ix, ) class RectPartitioner1D(RectPartitioner): """ Subclass of RectPartitioner, for 1D problems """ def prepare_communication(self): """ Prepare the buffers to be used for later communications """ RectPartitioner.prepare_communication(self) if self.lower_neighbors[0] >= 0: self.in_lower_buffers = [zeros(1, float)] self.out_lower_buffers = [zeros(1, float)] if self.upper_neighbors[0] >= 0: self.in_upper_buffers = [zeros(1, float)] self.out_upper_buffers = [zeros(1, float)] def get_num_loc_cells(self): return [self.subd_hi_ix[0] - self.subd_lo_ix[0]] class RectPartitioner2D(RectPartitioner): """ Subclass of RectPartitioner, for 2D problems """ def prepare_communication(self): """ Prepare the buffers to be used for later communications """ RectPartitioner.prepare_communication(self) self.in_lower_buffers = [[], []] self.out_lower_buffers = [[], []] self.in_upper_buffers = [[], []] self.out_upper_buffers = [[], []] size1 = self.subd_hi_ix[1] - self.subd_lo_ix[1] + 1 if self.lower_neighbors[0] >= 0: self.in_lower_buffers[0] = zeros(size1, float) self.out_lower_buffers[0] = zeros(size1, float) if self.upper_neighbors[0] >= 0: self.in_upper_buffers[0] = zeros(size1, float) self.out_upper_buffers[0] = zeros(size1, float) size0 = self.subd_hi_ix[0] - self.subd_lo_ix[0] + 1 if self.lower_neighbors[1] >= 0: self.in_lower_buffers[1] = zeros(size0, float) self.out_lower_buffers[1] = zeros(size0, float) if self.upper_neighbors[1] >= 0: self.in_upper_buffers[1] = zeros(size0, float) self.out_upper_buffers[1] = zeros(size0, float) def get_num_loc_cells(self): return [ self.subd_hi_ix[0] - self.subd_lo_ix[0], self.subd_hi_ix[1] - self.subd_lo_ix[1], ] class MPIRectPartitioner2D(RectPartitioner2D): """ Subclass of RectPartitioner2D, which uses MPI via mpi4py for communication """ def __init__( self, my_id=-1, num_procs=-1, global_num_cells=[], num_parts=[], slice_copy=True ): RectPartitioner.__init__(self, my_id, num_procs, global_num_cells, num_parts) self.slice_copy = slice_copy def update_internal_boundary(self, solution_array): nsd_ = self.nsd if nsd_ != len(self.in_lower_buffers) | nsd_ != len(self.out_lower_buffers): print("Buffers for communicating with lower neighbors not ready") return if nsd_ != len(self.in_upper_buffers) | nsd_ != len(self.out_upper_buffers): print("Buffers for communicating with upper neighbors not ready") return loc_nx = self.subd_hi_ix[0] - self.subd_lo_ix[0] loc_ny = self.subd_hi_ix[1] - self.subd_lo_ix[1] lower_x_neigh = self.lower_neighbors[0] upper_x_neigh = self.upper_neighbors[0] lower_y_neigh = self.lower_neighbors[1] upper_y_neigh = self.upper_neighbors[1] # communicate in the x-direction first if lower_x_neigh > -1: if self.slice_copy: self.out_lower_buffers[0] = ascontiguousarray(solution_array[1, :]) else: for i in range(0, loc_ny + 1): self.out_lower_buffers[0][i] = solution_array[1, i] mpi.Isend(self.out_lower_buffers[0], lower_x_neigh) if upper_x_neigh > -1: mpi.Recv(self.in_upper_buffers[0], upper_x_neigh) if self.slice_copy: solution_array[loc_nx, :] = self.in_upper_buffers[0] self.out_upper_buffers[0] = ascontiguousarray( solution_array[loc_nx - 1, :] ) else: for i in range(0, loc_ny + 1): solution_array[loc_nx, i] = self.in_upper_buffers[0][i] self.out_upper_buffers[0][i] = solution_array[loc_nx - 1, i] mpi.Isend(self.out_upper_buffers[0], upper_x_neigh) if lower_x_neigh > -1: mpi.Recv(self.in_lower_buffers[0], lower_x_neigh) if self.slice_copy: solution_array[0, :] = self.in_lower_buffers[0] else: for i in range(0, loc_ny + 1): solution_array[0, i] = self.in_lower_buffers[0][i] # communicate in the y-direction afterwards if lower_y_neigh > -1: if self.slice_copy: self.out_lower_buffers[1] = ascontiguousarray(solution_array[:, 1]) else: for i in range(0, loc_nx + 1): self.out_lower_buffers[1][i] = solution_array[i, 1] mpi.Isend(self.out_lower_buffers[1], lower_y_neigh) if upper_y_neigh > -1: mpi.Recv(self.in_upper_buffers[1], upper_y_neigh) if self.slice_copy: solution_array[:, loc_ny] = self.in_upper_buffers[1] self.out_upper_buffers[1] = ascontiguousarray( solution_array[:, loc_ny - 1] ) else: for i in range(0, loc_nx + 1): solution_array[i, loc_ny] = self.in_upper_buffers[1][i] self.out_upper_buffers[1][i] = solution_array[i, loc_ny - 1] mpi.Isend(self.out_upper_buffers[1], upper_y_neigh) if lower_y_neigh > -1: mpi.Recv(self.in_lower_buffers[1], lower_y_neigh) if self.slice_copy: solution_array[:, 0] = self.in_lower_buffers[1] else: for i in range(0, loc_nx + 1): solution_array[i, 0] = self.in_lower_buffers[1][i] class ZMQRectPartitioner2D(RectPartitioner2D): """ Subclass of RectPartitioner2D, which uses 0MQ via pyzmq for communication The first two arguments must be `comm`, an EngineCommunicator object, and `addrs`, a dict of connection information for other EngineCommunicator objects. """ def __init__( self, comm, addrs, my_id=-1, num_procs=-1, global_num_cells=[], num_parts=[], slice_copy=True, ): RectPartitioner.__init__(self, my_id, num_procs, global_num_cells, num_parts) self.slice_copy = slice_copy self.comm = comm # an Engine self.addrs = addrs def prepare_communication(self): RectPartitioner2D.prepare_communication(self) # connect west/south to east/north west_id, south_id = self.lower_neighbors[:2] west = self.addrs.get(west_id, None) south = self.addrs.get(south_id, None) self.comm.connect(south, west) def update_internal_boundary_x_y(self, solution_array): """update the inner boundary with the same send/recv pattern as the MPIPartitioner""" nsd_ = self.nsd dtype = solution_array.dtype if nsd_ != len(self.in_lower_buffers) | nsd_ != len(self.out_lower_buffers): print("Buffers for communicating with lower neighbors not ready") return if nsd_ != len(self.in_upper_buffers) | nsd_ != len(self.out_upper_buffers): print("Buffers for communicating with upper neighbors not ready") return loc_nx = self.subd_hi_ix[0] - self.subd_lo_ix[0] loc_ny = self.subd_hi_ix[1] - self.subd_lo_ix[1] lower_x_neigh = self.lower_neighbors[0] upper_x_neigh = self.upper_neighbors[0] lower_y_neigh = self.lower_neighbors[1] upper_y_neigh = self.upper_neighbors[1] trackers = [] flags = dict(copy=False, track=False) # communicate in the x-direction first if lower_x_neigh > -1: if self.slice_copy: self.out_lower_buffers[0] = ascontiguousarray(solution_array[1, :]) else: for i in range(0, loc_ny + 1): self.out_lower_buffers[0][i] = solution_array[1, i] t = self.comm.west.send(self.out_lower_buffers[0], **flags) trackers.append(t) if upper_x_neigh > -1: msg = self.comm.east.recv(copy=False) self.in_upper_buffers[0] = frombuffer(msg, dtype=dtype) if self.slice_copy: solution_array[loc_nx, :] = self.in_upper_buffers[0] self.out_upper_buffers[0] = ascontiguousarray( solution_array[loc_nx - 1, :] ) else: for i in range(0, loc_ny + 1): solution_array[loc_nx, i] = self.in_upper_buffers[0][i] self.out_upper_buffers[0][i] = solution_array[loc_nx - 1, i] t = self.comm.east.send(self.out_upper_buffers[0], **flags) trackers.append(t) if lower_x_neigh > -1: msg = self.comm.west.recv(copy=False) self.in_lower_buffers[0] = frombuffer(msg, dtype=dtype) if self.slice_copy: solution_array[0, :] = self.in_lower_buffers[0] else: for i in range(0, loc_ny + 1): solution_array[0, i] = self.in_lower_buffers[0][i] # communicate in the y-direction afterwards if lower_y_neigh > -1: if self.slice_copy: self.out_lower_buffers[1] = ascontiguousarray(solution_array[:, 1]) else: for i in range(0, loc_nx + 1): self.out_lower_buffers[1][i] = solution_array[i, 1] t = self.comm.south.send(self.out_lower_buffers[1], **flags) trackers.append(t) if upper_y_neigh > -1: msg = self.comm.north.recv(copy=False) self.in_upper_buffers[1] = frombuffer(msg, dtype=dtype) if self.slice_copy: solution_array[:, loc_ny] = self.in_upper_buffers[1] self.out_upper_buffers[1] = ascontiguousarray( solution_array[:, loc_ny - 1] ) else: for i in range(0, loc_nx + 1): solution_array[i, loc_ny] = self.in_upper_buffers[1][i] self.out_upper_buffers[1][i] = solution_array[i, loc_ny - 1] t = self.comm.north.send(self.out_upper_buffers[1], **flags) trackers.append(t) if lower_y_neigh > -1: msg = self.comm.south.recv(copy=False) self.in_lower_buffers[1] = frombuffer(msg, dtype=dtype) if self.slice_copy: solution_array[:, 0] = self.in_lower_buffers[1] else: for i in range(0, loc_nx + 1): solution_array[i, 0] = self.in_lower_buffers[1][i] # wait for sends to complete: if flags['track']: for t in trackers: t.wait() def update_internal_boundary_send_recv(self, solution_array): """update the inner boundary, sending first, then receiving""" nsd_ = self.nsd dtype = solution_array.dtype if nsd_ != len(self.in_lower_buffers) | nsd_ != len(self.out_lower_buffers): print("Buffers for communicating with lower neighbors not ready") return if nsd_ != len(self.in_upper_buffers) | nsd_ != len(self.out_upper_buffers): print("Buffers for communicating with upper neighbors not ready") return loc_nx = self.subd_hi_ix[0] - self.subd_lo_ix[0] loc_ny = self.subd_hi_ix[1] - self.subd_lo_ix[1] lower_x_neigh = self.lower_neighbors[0] upper_x_neigh = self.upper_neighbors[0] lower_y_neigh = self.lower_neighbors[1] upper_y_neigh = self.upper_neighbors[1] trackers = [] flags = dict(copy=False, track=False) # send in all directions first if lower_x_neigh > -1: if self.slice_copy: self.out_lower_buffers[0] = ascontiguousarray(solution_array[1, :]) else: for i in range(0, loc_ny + 1): self.out_lower_buffers[0][i] = solution_array[1, i] t = self.comm.west.send(self.out_lower_buffers[0], **flags) trackers.append(t) if lower_y_neigh > -1: if self.slice_copy: self.out_lower_buffers[1] = ascontiguousarray(solution_array[:, 1]) else: for i in range(0, loc_nx + 1): self.out_lower_buffers[1][i] = solution_array[i, 1] t = self.comm.south.send(self.out_lower_buffers[1], **flags) trackers.append(t) if upper_x_neigh > -1: if self.slice_copy: self.out_upper_buffers[0] = ascontiguousarray( solution_array[loc_nx - 1, :] ) else: for i in range(0, loc_ny + 1): self.out_upper_buffers[0][i] = solution_array[loc_nx - 1, i] t = self.comm.east.send(self.out_upper_buffers[0], **flags) trackers.append(t) if upper_y_neigh > -1: if self.slice_copy: self.out_upper_buffers[1] = ascontiguousarray( solution_array[:, loc_ny - 1] ) else: for i in range(0, loc_nx + 1): self.out_upper_buffers[1][i] = solution_array[i, loc_ny - 1] t = self.comm.north.send(self.out_upper_buffers[1], **flags) trackers.append(t) # now start receiving if upper_x_neigh > -1: msg = self.comm.east.recv(copy=False) self.in_upper_buffers[0] = frombuffer(msg, dtype=dtype) if self.slice_copy: solution_array[loc_nx, :] = self.in_upper_buffers[0] else: for i in range(0, loc_ny + 1): solution_array[loc_nx, i] = self.in_upper_buffers[0][i] if lower_x_neigh > -1: msg = self.comm.west.recv(copy=False) self.in_lower_buffers[0] = frombuffer(msg, dtype=dtype) if self.slice_copy: solution_array[0, :] = self.in_lower_buffers[0] else: for i in range(0, loc_ny + 1): solution_array[0, i] = self.in_lower_buffers[0][i] if upper_y_neigh > -1: msg = self.comm.north.recv(copy=False) self.in_upper_buffers[1] = frombuffer(msg, dtype=dtype) if self.slice_copy: solution_array[:, loc_ny] = self.in_upper_buffers[1] else: for i in range(0, loc_nx + 1): solution_array[i, loc_ny] = self.in_upper_buffers[1][i] if lower_y_neigh > -1: msg = self.comm.south.recv(copy=False) self.in_lower_buffers[1] = frombuffer(msg, dtype=dtype) if self.slice_copy: solution_array[:, 0] = self.in_lower_buffers[1] else: for i in range(0, loc_nx + 1): solution_array[i, 0] = self.in_lower_buffers[1][i] # wait for sends to complete: if flags['track']: for t in trackers: t.wait() # use send/recv pattern instead of x/y sweeps update_internal_boundary = update_internal_boundary_send_recv ipython-ipyparallel-14e3c43/docs/source/examples/wave2D/communicator.py000066400000000000000000000036221520071063500263220ustar00rootroot00000000000000#!/usr/bin/env python """A simple Communicator class that has N,E,S,W neighbors connected via 0MQ PEER sockets""" import socket import zmq from ipyparallel.util import disambiguate_url class EngineCommunicator: """An object that connects Engines to each other. north and east sockets listen, while south and west sockets connect. This class is useful in cases where there is a set of nodes that must communicate only with their nearest neighbors. """ def __init__(self, interface='tcp://*', identity=None): self._ctx = zmq.Context() self.north = self._ctx.socket(zmq.PAIR) self.west = self._ctx.socket(zmq.PAIR) self.south = self._ctx.socket(zmq.PAIR) self.east = self._ctx.socket(zmq.PAIR) # bind to ports northport = self.north.bind_to_random_port(interface) eastport = self.east.bind_to_random_port(interface) self.north_url = f"{interface}:{northport}" self.east_url = f"{interface}:{eastport}" # guess first public IP from socket self.location = socket.gethostbyname_ex(socket.gethostname())[-1][0] def __del__(self): self.north.close() self.south.close() self.east.close() self.west.close() self._ctx.term() @property def info(self): """return the connection info for this object's sockets.""" return (self.location, self.north_url, self.east_url) def connect(self, south_peer=None, west_peer=None): """connect to peers. `peers` will be a 3-tuples, of the form: (location, north_addr, east_addr) as produced by """ if south_peer is not None: location, url, _ = south_peer self.south.connect(disambiguate_url(url, location)) if west_peer is not None: location, _, url = west_peer self.west.connect(disambiguate_url(url, location)) ipython-ipyparallel-14e3c43/docs/source/examples/wave2D/parallelwave-mpi.py000077500000000000000000000161001520071063500270620ustar00rootroot00000000000000#!/usr/bin/env python """ A simple python program of solving a 2D wave equation in parallel. Domain partitioning and inter-processor communication are done by an object of class MPIRectPartitioner2D (which is a subclass of RectPartitioner2D and uses MPI via mpi4py) An example of running the program is (8 processors, 4x2 partition, 400x100 grid cells):: $ ipcluster start --engines=MPIExec -n 8 # start 8 engines with mpiexec $ python parallelwave-mpi.py --grid 400 100 --partition 4 2 See also parallelwave-mpi, which runs the same program, but uses MPI (via mpi4py) for the inter-engine communication. Authors ------- * Xing Cai * Min Ragan-Kelley """ import argparse import time from numpy import sqrt import ipyparallel as ipp def setup_partitioner(index, num_procs, gnum_cells, parts): """create a partitioner in the engine namespace""" global partitioner p = MPIRectPartitioner2D(my_id=index, num_procs=num_procs) # noqa: F821 p.redim(global_num_cells=gnum_cells, num_parts=parts) p.prepare_communication() # put the partitioner into the global namespace: partitioner = p def setup_solver(*args, **kwargs): """create a WaveSolver in the engine namespace""" global solver solver = WaveSolver(*args, **kwargs) # noqa: F821 def wave_saver(u, x, y, t): """save the wave log""" global u_hist global t_hist t_hist.append(t) u_hist.append(1.0 * u) # main program: if __name__ == '__main__': parser = argparse.ArgumentParser() paa = parser.add_argument paa( '--grid', '-g', type=int, nargs=2, default=[100, 100], dest='grid', help="Cells in the grid, e.g. --grid 100 200", ) paa( '--partition', '-p', type=int, nargs=2, default=None, help="Process partition grid, e.g. --partition 4 2 for 4x2", ) paa('-c', type=float, default=1.0, help="Wave speed (I think)") paa('-Ly', type=float, default=1.0, help="system size (in y)") paa('-Lx', type=float, default=1.0, help="system size (in x)") paa('-t', '--tstop', type=float, default=1.0, help="Time units to run") paa( '--profile', type=str, default='default', help="Specify the ipcluster profile for the client to connect to.", ) paa( '--save', action='store_true', help="Add this flag to save the time/wave history during the run.", ) paa( '--scalar', action='store_true', help="Also run with scalar interior implementation, to see vector speedup.", ) ns = parser.parse_args() # set up arguments grid = ns.grid partition = ns.partition Lx = ns.Lx Ly = ns.Ly c = ns.c tstop = ns.tstop if ns.save: user_action = wave_saver else: user_action = None num_cells = 1.0 * (grid[0] - 1) * (grid[1] - 1) final_test = True # create the Client rc = ipp.Client(profile=ns.profile) num_procs = len(rc.ids) if partition is None: partition = [1, num_procs] assert partition[0] * partition[1] == num_procs, ( f"can't map partition {partition} to {num_procs} engines" ) view = rc[:] print(f"Running {grid} system on {partition} processes until {tstop:f}") # functions defining initial/boundary/source conditions def I(x, y): from numpy import exp return 1.5 * exp(-100 * ((x - 0.5) ** 2 + (y - 0.5) ** 2)) def f(x, y, t): return 0.0 # from numpy import exp,sin # return 10*exp(-(x - sin(100*t))**2) def bc(x, y, t): return 0.0 # initial imports, setup rank view.execute( '\n'.join( [ "from mpi4py import MPI", "import numpy", "mpi = MPI.COMM_WORLD", "my_id = MPI.COMM_WORLD.Get_rank()", ] ), block=True, ) # initialize t_hist/u_hist for saving the state at each step (optional) view['t_hist'] = [] view['u_hist'] = [] # set vector/scalar implementation details impl = {} impl['ic'] = 'vectorized' impl['inner'] = 'scalar' impl['bc'] = 'vectorized' # execute some files so that the classes we need will be defined on the engines: view.run('RectPartitioner.py') view.run('wavesolver.py') # setup remote partitioner # note that Reference means that the argument passed to setup_partitioner will be the # object named 'my_id' in the engine's namespace view.apply_sync( setup_partitioner, ipp.Reference('my_id'), num_procs, grid, partition ) # wait for initial communication to complete view.execute('mpi.barrier()') # setup remote solvers view.apply_sync( setup_solver, I, f, c, bc, Lx, Ly, partitioner=ipp.Reference('partitioner'), dt=0, implementation=impl, ) # lambda for calling solver.solve: def _solve(*args, **kwargs): return solver.solve(*args, **kwargs) if ns.scalar: impl['inner'] = 'scalar' # run first with element-wise Python operations for each cell t0 = time.time() ar = view.apply_async( _solve, tstop, dt=0, verbose=True, final_test=final_test, user_action=user_action, ) if final_test: # this sum is performed element-wise as results finish s = sum(ar) # the L2 norm (RMS) of the result: norm = sqrt(s / num_cells) else: norm = -1 t1 = time.time() print(f'scalar inner-version, Wtime={t1 - t0:g}, norm={norm:g}') impl['inner'] = 'vectorized' # setup new solvers view.apply_sync( setup_solver, I, f, c, bc, Lx, Ly, partitioner=ipp.Reference('partitioner'), dt=0, implementation=impl, ) view.execute('mpi.barrier()') # run again with numpy vectorized inner-implementation t0 = time.time() ar = view.apply_async( _solve, tstop, dt=0, verbose=True, final_test=final_test, user_action=user_action, ) if final_test: # this sum is performed element-wise as results finish s = sum(ar) # the L2 norm (RMS) of the result: norm = sqrt(s / num_cells) else: norm = -1 t1 = time.time() print(f'vector inner-version, Wtime={t1 - t0:g}, norm={norm:g}') # if ns.save is True, then u_hist stores the history of u as a list # If the partion scheme is Nx1, then u can be reconstructed via 'gather': if ns.save and partition[-1] == 1: import matplotlib.pyplot as plt view.execute('u_last=u_hist[-1]') # map mpi IDs to IPython IDs, which may not match ranks = view['my_id'] targets = range(len(ranks)) for idx in range(len(ranks)): targets[idx] = ranks.index(idx) u_last = rc[targets].gather('u_last', block=True) plt.pcolor(u_last) plt.show() ipython-ipyparallel-14e3c43/docs/source/examples/wave2D/parallelwave.py000077500000000000000000000163641520071063500263130ustar00rootroot00000000000000#!/usr/bin/env python """ A simple python program of solving a 2D wave equation in parallel. Domain partitioning and inter-processor communication are done by an object of class ZMQRectPartitioner2D (which is a subclass of RectPartitioner2D and uses 0MQ via pyzmq) An example of running the program is (8 processors, 4x2 partition, 200x200 grid cells):: $ ipcluster start -n 8 # start 8 engines $ python parallelwave.py --grid 200 200 --partition 4 2 See also parallelwave-mpi, which runs the same program, but uses MPI (via mpi4py) for the inter-engine communication. Authors ------- * Xing Cai * Min Ragan-Kelley """ import argparse import time from numpy import sqrt import ipyparallel as ipp def setup_partitioner(comm, addrs, index, num_procs, gnum_cells, parts): """create a partitioner in the engine namespace""" global partitioner p = ZMQRectPartitioner2D( # noqa: F821 comm, addrs, my_id=index, num_procs=num_procs, ) p.redim(global_num_cells=gnum_cells, num_parts=parts) p.prepare_communication() # put the partitioner into the global namespace: partitioner = p def setup_solver(*args, **kwargs): """create a WaveSolver in the engine namespace.""" global solver solver = WaveSolver(*args, **kwargs) # noqa: F821 def wave_saver(u, x, y, t): """save the wave state for each timestep.""" global u_hist global t_hist t_hist.append(t) u_hist.append(1.0 * u) # main program: if __name__ == '__main__': parser = argparse.ArgumentParser() paa = parser.add_argument paa( '--grid', '-g', type=int, nargs=2, default=[100, 100], dest='grid', help="Cells in the grid, e.g. --grid 100 200", ) paa( '--partition', '-p', type=int, nargs=2, default=None, help="Process partition grid, e.g. --partition 4 2 for 4x2", ) paa('-c', type=float, default=1.0, help="Wave speed (I think)") paa('-Ly', type=float, default=1.0, help="system size (in y)") paa('-Lx', type=float, default=1.0, help="system size (in x)") paa('-t', '--tstop', type=float, default=1.0, help="Time units to run") paa( '--profile', type=str, default='default', help="Specify the ipcluster profile for the client to connect to.", ) paa( '--save', action='store_true', help="Add this flag to save the time/wave history during the run.", ) paa( '--scalar', action='store_true', help="Also run with scalar interior implementation, to see vector speedup.", ) ns = parser.parse_args() # set up arguments grid = ns.grid partition = ns.partition Lx = ns.Lx Ly = ns.Ly c = ns.c tstop = ns.tstop if ns.save: user_action = wave_saver else: user_action = None num_cells = 1.0 * (grid[0] - 1) * (grid[1] - 1) final_test = True # create the Client rc = ipp.Client(profile=ns.profile) num_procs = len(rc.ids) if partition is None: partition = [num_procs, 1] else: num_procs = min(num_procs, partition[0] * partition[1]) assert partition[0] * partition[1] == num_procs, ( f"can't map partition {partition} to {num_procs} engines" ) # construct the View: view = rc[:num_procs] print(f"Running {grid} system on {partition} processes until {tstop:f}") # functions defining initial/boundary/source conditions def I(x, y): from numpy import exp return 1.5 * exp(-100 * ((x - 0.5) ** 2 + (y - 0.5) ** 2)) def f(x, y, t): return 0.0 # from numpy import exp,sin # return 10*exp(-(x - sin(100*t))**2) def bc(x, y, t): return 0.0 # initialize t_hist/u_hist for saving the state at each step (optional) view['t_hist'] = [] view['u_hist'] = [] # set vector/scalar implementation details impl = {} impl['ic'] = 'vectorized' impl['inner'] = 'scalar' impl['bc'] = 'vectorized' # execute some files so that the classes we need will be defined on the engines: view.execute('import numpy') view.run('communicator.py') view.run('RectPartitioner.py') view.run('wavesolver.py') # scatter engine IDs view.scatter('my_id', range(num_procs), flatten=True) # create the engine connectors view.execute('com = EngineCommunicator()') # gather the connection information into a single dict ar = view.apply_async(lambda: com.info) # noqa: F821 peers = ar.get_dict() # print peers # this is a dict, keyed by engine ID, of the connection info for the EngineCommunicators # setup remote partitioner # note that Reference means that the argument passed to setup_partitioner will be the # object named 'com' in the engine's namespace view.apply_sync( setup_partitioner, ipp.Reference('com'), peers, ipp.Reference('my_id'), num_procs, grid, partition, ) time.sleep(1) # convenience lambda to call solver.solve: def _solve(*args, **kwargs): return solver.solve(*args, **kwargs) if ns.scalar: impl['inner'] = 'scalar' # setup remote solvers view.apply_sync( setup_solver, I, f, c, bc, Lx, Ly, partitioner=ipp.Reference('partitioner'), dt=0, implementation=impl, ) # run first with element-wise Python operations for each cell t0 = time.time() ar = view.apply_async( _solve, tstop, dt=0, verbose=True, final_test=final_test, user_action=user_action, ) if final_test: # this sum is performed element-wise as results finish s = sum(ar) # the L2 norm (RMS) of the result: norm = sqrt(s / num_cells) else: norm = -1 t1 = time.time() print(f'scalar inner-version, Wtime={t1 - t0:g}, norm={norm:g}') # run again with faster numpy-vectorized inner implementation: impl['inner'] = 'vectorized' # setup remote solvers view.apply_sync( setup_solver, I, f, c, bc, Lx, Ly, partitioner=ipp.Reference('partitioner'), dt=0, implementation=impl, ) t0 = time.time() ar = view.apply_async( _solve, tstop, dt=0, verbose=True, final_test=final_test, user_action=user_action, ) if final_test: # this sum is performed element-wise as results finish s = sum(ar) # the L2 norm (RMS) of the result: norm = sqrt(s / num_cells) else: norm = -1 t1 = time.time() print(f'vector inner-version, Wtime={t1 - t0:g}, norm={norm:g}') # if ns.save is True, then u_hist stores the history of u as a list # If the partion scheme is Nx1, then u can be reconstructed via 'gather': if ns.save and partition[-1] == 1: import matplotlib.pyplot as plt view.execute('u_last=u_hist[-1]') u_last = view.gather('u_last', block=True) plt.pcolor(u_last) plt.show() ipython-ipyparallel-14e3c43/docs/source/examples/wave2D/wavesolver.py000077500000000000000000000264111520071063500260230ustar00rootroot00000000000000#!/usr/bin/env python """ A simple WaveSolver class for evolving the wave equation in 2D. This works in parallel by using a RectPartitioner object. Authors ------- * Xing Cai * Min Ragan-Kelley """ import time from numpy import arange, newaxis, sqrt, zeros def iseq(start=0, stop=None, inc=1): """ Generate integers from start to (and including!) stop, with increment of inc. Alternative to range/xrange. """ if stop is None: # allow isequence(3) to be 0, 1, 2, 3 # take 1st arg as stop, start as 0, and inc=1 stop = start start = 0 inc = 1 return arange(start, stop + inc, inc) class WaveSolver: """ Solve the 2D wave equation u_tt = u_xx + u_yy + f(x,y,t) with u = bc(x,y,t) on the boundary and initial condition du/dt = 0. Parallelization by using a RectPartitioner object 'partitioner' nx and ny are the total number of global grid cells in the x and y directions. The global grid points are numbered as (0,0), (1,0), (2,0), ..., (nx,0), (0,1), (1,1), ..., (nx, ny). dt is the time step. If dt<=0, an optimal time step is used. tstop is the stop time for the simulation. I, f are functions: I(x,y), f(x,y,t) user_action: function of (u, x, y, t) called at each time level (x and y are one-dimensional coordinate vectors). This function allows the calling code to plot the solution, compute errors, etc. implementation: a dictionary specifying how the initial condition ('ic'), the scheme over inner points ('inner'), and the boundary conditions ('bc') are to be implemented. Normally, values are legal: 'scalar' or 'vectorized'. 'scalar' means straight loops over grid points, while 'vectorized' means special NumPy vectorized operations. If a key in the implementation dictionary is missing, it defaults in this function to 'scalar' (the safest strategy). Note that if 'vectorized' is specified, the functions I, f, and bc must work in vectorized mode. It is always recommended to first run the 'scalar' mode and then compare 'vectorized' results with the 'scalar' results to check that I, f, and bc work. verbose: true if a message at each time step is written, false implies no output during the simulation. final_test: true means the discrete L2-norm of the final solution is to be computed. """ def __init__( self, I, f, c, bc, Lx, Ly, partitioner=None, dt=-1, user_action=None, implementation={ 'ic': 'vectorized', # or 'scalar' 'inner': 'vectorized', 'bc': 'vectorized', }, ): nx = partitioner.global_num_cells[0] # number of global cells in x dir ny = partitioner.global_num_cells[1] # number of global cells in y dir dx = Lx / float(nx) dy = Ly / float(ny) loc_nx, loc_ny = partitioner.get_num_loc_cells() nx = loc_nx ny = loc_ny # now use loc_nx and loc_ny instead lo_ix0 = partitioner.subd_lo_ix[0] lo_ix1 = partitioner.subd_lo_ix[1] hi_ix0 = partitioner.subd_hi_ix[0] hi_ix1 = partitioner.subd_hi_ix[1] x = iseq(dx * lo_ix0, dx * hi_ix0, dx) # local grid points in x dir y = iseq(dy * lo_ix1, dy * hi_ix1, dy) # local grid points in y dir self.x = x self.y = y xv = x[:, newaxis] # for vectorized expressions with f(xv,yv) yv = y[newaxis, :] # -- " -- if dt <= 0: dt = (1 / float(c)) * (1 / sqrt(1 / dx**2 + 1 / dy**2)) # max time step Cx2 = (c * dt / dx) ** 2 Cy2 = (c * dt / dy) ** 2 dt2 = dt**2 # help variables u = zeros((nx + 1, ny + 1)) # solution array u_1 = u.copy() # solution at t-dt u_2 = u.copy() # solution at t-2*dt # preserve for self.solve implementation = dict(implementation) # copy if 'ic' not in implementation: implementation['ic'] = 'scalar' if 'bc' not in implementation: implementation['bc'] = 'scalar' if 'inner' not in implementation: implementation['inner'] = 'scalar' self.implementation = implementation self.Lx = Lx self.Ly = Ly self.I = I self.f = f self.c = c self.bc = bc self.user_action = user_action self.partitioner = partitioner # set initial condition (pointwise - allows straight if-tests in I(x,y)): t = 0.0 if implementation['ic'] == 'scalar': for i in range(0, nx + 1): for j in range(0, ny + 1): u_1[i, j] = I(x[i], y[j]) for i in range(1, nx): for j in range(1, ny): u_2[i, j] = ( u_1[i, j] + 0.5 * Cx2 * (u_1[i - 1, j] - 2 * u_1[i, j] + u_1[i + 1, j]) + 0.5 * Cy2 * (u_1[i, j - 1] - 2 * u_1[i, j] + u_1[i, j + 1]) + dt2 * f(x[i], y[j], 0.0) ) # boundary values of u_2 (equals u(t=dt) due to du/dt=0) i = 0 for j in range(0, ny + 1): u_2[i, j] = bc(x[i], y[j], t + dt) j = 0 for i in range(0, nx + 1): u_2[i, j] = bc(x[i], y[j], t + dt) i = nx for j in range(0, ny + 1): u_2[i, j] = bc(x[i], y[j], t + dt) j = ny for i in range(0, nx + 1): u_2[i, j] = bc(x[i], y[j], t + dt) elif implementation['ic'] == 'vectorized': u_1 = I(xv, yv) u_2[1:nx, 1:ny] = ( u_1[1:nx, 1:ny] + 0.5 * Cx2 * (u_1[0 : nx - 1, 1:ny] - 2 * u_1[1:nx, 1:ny] + u_1[2 : nx + 1, 1:ny]) + 0.5 * Cy2 * (u_1[1:nx, 0 : ny - 1] - 2 * u_1[1:nx, 1:ny] + u_1[1:nx, 2 : ny + 1]) + dt2 * (f(xv[1:nx, 1:ny], yv[1:nx, 1:ny], 0.0)) ) # boundary values (t=dt): i = 0 u_2[i, :] = bc(x[i], y, t + dt) j = 0 u_2[:, j] = bc(x, y[j], t + dt) i = nx u_2[i, :] = bc(x[i], y, t + dt) j = ny u_2[:, j] = bc(x, y[j], t + dt) if user_action is not None: user_action(u_1, x, y, t) # allow user to plot etc. # print(list(self.us[2][2])) self.us = (u, u_1, u_2) def solve(self, tstop, dt=-1, user_action=None, verbose=False, final_test=False): t0 = time.time() f = self.f c = self.c bc = self.bc partitioner = self.partitioner implementation = self.implementation nx = partitioner.global_num_cells[0] # number of global cells in x dir ny = partitioner.global_num_cells[1] # number of global cells in y dir dx = self.Lx / float(nx) dy = self.Ly / float(ny) loc_nx, loc_ny = partitioner.get_num_loc_cells() nx = loc_nx ny = loc_ny # now use loc_nx and loc_ny instead x = self.x y = self.y xv = x[:, newaxis] # for vectorized expressions with f(xv,yv) yv = y[newaxis, :] # -- " -- if dt <= 0: dt = (1 / float(c)) * (1 / sqrt(1 / dx**2 + 1 / dy**2)) # max time step Cx2 = (c * dt / dx) ** 2 Cy2 = (c * dt / dy) ** 2 dt2 = dt**2 # help variables # id for the four possible neighbor subdomains lower_x_neigh = partitioner.lower_neighbors[0] upper_x_neigh = partitioner.upper_neighbors[0] lower_y_neigh = partitioner.lower_neighbors[1] upper_y_neigh = partitioner.upper_neighbors[1] u, u_1, u_2 = self.us # u_1 = self.u_1 t = 0.0 while t <= tstop: t_old = t t += dt if verbose: print( 'solving ({} version) at t={:g}'.format(implementation['inner'], t) ) # update all inner points: if implementation['inner'] == 'scalar': for i in range(1, nx): for j in range(1, ny): u[i, j] = ( -u_2[i, j] + 2 * u_1[i, j] + Cx2 * (u_1[i - 1, j] - 2 * u_1[i, j] + u_1[i + 1, j]) + Cy2 * (u_1[i, j - 1] - 2 * u_1[i, j] + u_1[i, j + 1]) + dt2 * f(x[i], y[j], t_old) ) elif implementation['inner'] == 'vectorized': u[1:nx, 1:ny] = ( -u_2[1:nx, 1:ny] + 2 * u_1[1:nx, 1:ny] + Cx2 * ( u_1[0 : nx - 1, 1:ny] - 2 * u_1[1:nx, 1:ny] + u_1[2 : nx + 1, 1:ny] ) + Cy2 * ( u_1[1:nx, 0 : ny - 1] - 2 * u_1[1:nx, 1:ny] + u_1[1:nx, 2 : ny + 1] ) + dt2 * f(xv[1:nx, 1:ny], yv[1:nx, 1:ny], t_old) ) # insert boundary conditions (if there's no neighbor): if lower_x_neigh < 0: if implementation['bc'] == 'scalar': i = 0 for j in range(0, ny + 1): u[i, j] = bc(x[i], y[j], t) elif implementation['bc'] == 'vectorized': u[0, :] = bc(x[0], y, t) if upper_x_neigh < 0: if implementation['bc'] == 'scalar': i = nx for j in range(0, ny + 1): u[i, j] = bc(x[i], y[j], t) elif implementation['bc'] == 'vectorized': u[nx, :] = bc(x[nx], y, t) if lower_y_neigh < 0: if implementation['bc'] == 'scalar': j = 0 for i in range(0, nx + 1): u[i, j] = bc(x[i], y[j], t) elif implementation['bc'] == 'vectorized': u[:, 0] = bc(x, y[0], t) if upper_y_neigh < 0: if implementation['bc'] == 'scalar': j = ny for i in range(0, nx + 1): u[i, j] = bc(x[i], y[j], t) elif implementation['bc'] == 'vectorized': u[:, ny] = bc(x, y[ny], t) # communication partitioner.update_internal_boundary(u) if user_action is not None: user_action(u, x, y, t) # update data structures for next step u_2, u_1, u = u_1, u, u_2 t1 = time.time() print( f'my_id={partitioner.my_id:2}, dt={dt:g}, {implementation["inner"]} version, slice_copy={partitioner.slice_copy}, net Wtime={t1 - t0:g}' ) # save the us self.us = u, u_1, u_2 # check final results; compute discrete L2-norm of the solution if final_test: loc_res = 0.0 for i in iseq(start=1, stop=nx - 1): for j in iseq(start=1, stop=ny - 1): loc_res += u_1[i, j] ** 2 return loc_res return dt ipython-ipyparallel-14e3c43/docs/source/index.md000066400000000000000000000046721520071063500217410ustar00rootroot00000000000000# Using IPython for parallel computing > ```{eval-rst} > > :Release: |release| > :Date: |today| > ``` (install)= ## Installing IPython Parallel As of 4.0, IPython parallel is now a standalone package called {mod}`ipyparallel`. You can install it with: ``` pip install ipyparallel ``` or: ``` conda install ipyparallel ``` As of IPython Parallel 7, this will include installing/enabling an extension for both the classic Jupyter Notebook and JupyterLab ≥ 3.0. ## Quickstart IPython Parallel A quick example to: 1. allocate a cluster (collection of IPython engines for use in parallel) 2. run a collection of tasks on the cluster 3. wait interactively for results 4. cleanup resources after the task is done ```python import time import ipyparallel as ipp task_durations = [1] * 25 # request a cluster with ipp.Cluster() as rc: # get a view on the cluster view = rc.load_balanced_view() # submit the tasks asyncresult = view.map_async(time.sleep, task_durations) # wait interactively for results asyncresult.wait_interactive() # retrieve actual results result = asyncresult.get() # at this point, the cluster processes have been shutdown ``` You can similarly run MPI code using IPyParallel (requires [mpi4py](https://mpi4py.readthedocs.io/en/stable/install.html)): ```python import ipyparallel as ipp def mpi_example(): from mpi4py import MPI comm = MPI.COMM_WORLD return f"Hello World from rank {comm.Get_rank()}. total ranks={comm.Get_size()}" # request an MPI cluster with 4 engines with ipp.Cluster(engines='mpi', n=4) as rc: # get a broadcast_view on the cluster which is best # suited for MPI style computation view = rc.broadcast_view() # run the mpi_example function on all engines in parallel r = view.apply_sync(mpi_example) # Retrieve and print the result from the engines print("\n".join(r)) # at this point, the cluster processes have been shutdown ``` ![IPyParallel-MPI-Example](./_static/IPyParallel-MPI-Example.png) Follow the [tutorial][] to learn more. [tutorial]: ./tutorial/index ## Contents ```{toctree} :maxdepth: 2 tutorial/index reference/index ``` ```{toctree} :maxdepth: 2 examples/index ``` ```{toctree} :maxdepth: 1 changelog ``` # IPython Parallel API ```{toctree} :maxdepth: 2 api/ipyparallel.rst ``` # Indices and tables - {ref}`genindex` - {ref}`modindex` - {ref}`search` ipython-ipyparallel-14e3c43/docs/source/links.txt000066400000000000000000000105351520071063500221640ustar00rootroot00000000000000.. This (-*- rst -*-) format file contains commonly used link targets and name substitutions. It may be included in many files, therefore it should only contain link targets and name substitutions. Try grepping for "^\.\. _" to find plausible candidates for this list. NOTE: this file must have an extension *opposite* to that of the main reST files in the manuals, so that we can include it with ".. include::" directives, but without triggering warnings from Sphinx for not being listed in any toctree. Since IPython uses .txt for the main files, this one will use .rst. NOTE: reST targets are __not_case_sensitive__, so only one target definition is needed for ipython, IPython, etc. NOTE: Some of these were taken from the nipy links compendium. .. Main IPython links .. _ipython: https://ipython.org .. _`ipython manual`: https://ipython.org/documentation.html .. _ipython_github: https://github.com/ipython/ipython/ .. _ipython_github_repo: https://github.com/ipython/ipython/ .. _ipython_downloads: https://ipython.org/download.html .. _ipython_pypi: https://pypi.python.org/pypi/ipython .. _nbviewer: https://nbviewer.ipython.org .. _ZeroMQ: https://zeromq.org .. Documentation tools and related links .. _graphviz: https://www.graphviz.org .. _Sphinx: https://sphinx.pocoo.org .. _`Sphinx reST`: https://sphinx.pocoo.org/rest.html .. _sampledoc: https://matplotlib.org/sampledoc .. _reST: https://docutils.sourceforge.net/rst.html .. _docutils: https://docutils.sourceforge.net .. _lyx: https://www.lyx.org .. _pep8: https://www.python.org/dev/peps/pep-0008 .. _numpy_coding_guide: https://github.com/numpy/numpy/blob/master/doc/HOWTO_DOCUMENT.rst.txt .. Licenses .. _GPL: https://www.gnu.org/licenses/gpl.html .. _BSD: https://www.opensource.org/licenses/bsd-license.php .. _LGPL: https://www.gnu.org/copyleft/lesser.html .. Other python projects .. _numpy: https://numpy.scipy.org .. _scipy: https://www.scipy.org .. _scipy_conference: https://conference.scipy.org .. _matplotlib: https://matplotlib.org .. _pythonxy: https://code.google.com/p/pythonxy/ .. _ETS: https://code.enthought.com/projects/tool-suite.php .. _EPD: https://www.enthought.com/products/epd.php .. _python: https://www.python.org .. _mayavi: https://code.enthought.com/projects/mayavi .. _sympy: https://code.google.com/p/sympy .. _sage: https://sagemath.org .. _pydy: https://code.google.com/p/pydy .. _vpython: https://vpython.org .. _cython: https://cython.org .. _software carpentry: https://software-carpentry.org .. Not so python scientific computing tools .. _matlab: https://www.mathworks.com .. _VTK: https://vtk.org .. Other organizations .. _enthought: https://www.enthought.com .. _kitware: https://www.kitware.com .. _netlib: https://netlib.org .. Other tools and projects .. _indefero: https://www.indefero.net .. _git: https://git-scm.com .. _github: https://github.com .. _Markdown: https://daringfireball.net/projects/markdown/syntax .. _Running Code in the IPython Notebook: notebook_p1_ .. _notebook_p1: https://nbviewer.ipython.org/urls/raw.github.com/ipython/ipython/1.x/examples/notebooks/Part%25201%2520-%2520Running%2520Code.ipynb .. _Basic Output: notebook_p2_ .. _notebook_p2: https://nbviewer.ipython.org/urls/raw.github.com/ipython/ipython/1.x/examples/notebooks/Part%202%20-%20Basic%20Output.ipynb .. _Plotting with Matplotlib: notebook_p3_ .. _notebook_p3: https://nbviewer.ipython.org/urls/raw.github.com/ipython/ipython/1.x/examples/notebooks/Part%203%20-%20Plotting%20with%20Matplotlib.ipynb .. _Markdown Cells: notebook_p4_ .. _notebook_p4: https://nbviewer.ipython.org/urls/raw.github.com/ipython/ipython/1.x/examples/notebooks/Part%204%20-%20Markdown%20Cells.ipynb .. _Rich Display System: notebook_p5_ .. _notebook_p5: https://nbviewer.ipython.org/urls/raw.github.com/ipython/ipython/1.x/examples/notebooks/Part%205%20-%20Rich%20Display%20System.ipynb .. _notebook_custom_display: https://nbviewer.ipython.org/urls/raw.github.com/ipython/ipython/1.x/examples/notebooks/Custom%20Display%20Logic.ipynb .. _Frontend/Kernel Model: notebook_two_proc_ .. _notebook_two_proc: https://nbviewer.ipython.org/urls/raw.github.com/ipython/ipython/1.x/examples/notebooks/Frontend-Kernel%20Model.ipynb .. _Cell magics: notebook_cell_magics_ .. _notebook_cell_magics: https://nbviewer.ipython.org/urls/raw.github.com/ipython/ipython/1.x/examples/notebooks/Cell%20Magics.ipynb ipython-ipyparallel-14e3c43/docs/source/redirects.txt000066400000000000000000000013271520071063500230270ustar00rootroot00000000000000"asyncresult.rst" "tutorial/asyncresult.md" "dag_dependencies.rst" "reference/dag_dependencies.md" "db.rst" "reference/db.md" "demos.rst" "tutorial/demos.md" "details.rst" "reference/details.md" "development/connections.rst" "reference/connections.md" "development/messages.rst" "reference/messages.md" "intro.rst" "tutorial/intro.md" "magics.rst" "examples/Parallel Magics.ipynb" "tutorial/magics.md" "examples/Parallel Magics.ipynb" "mpi.rst" "reference/mpi.md" "multiengine.rst" "tutorial/direct.md" "process.rst" "tutorial/process.md" "security.rst" "reference/security.md" "task.rst" "tutorial/task.md" "transition.rst" "tutorial/index.md" "winhpc.rst" "reference/launchers.md" "examples/Index.ipynb" "examples/index.md" ipython-ipyparallel-14e3c43/docs/source/reference/000077500000000000000000000000001520071063500222355ustar00rootroot00000000000000ipython-ipyparallel-14e3c43/docs/source/reference/connections.md000066400000000000000000000142721520071063500251070ustar00rootroot00000000000000(parallel-connections)= # Connection Diagrams of The IPython ZMQ Cluster This is a quick summary and illustration of the connections involved in the ZeroMQ based IPython cluster for parallel computing. ## All Connections The IPython cluster consists of a Controller, and one or more each of clients and engines. The goal of the Controller is to manage and monitor the connections and communications between the clients and the engines. The Controller is no longer a single process entity, but rather a collection of processes - specifically one Hub, and 4 (or more) Schedulers. It is important for security/practicality reasons that all connections be inbound to the controller processes. The arrows in the figures indicate the direction of the connection. ```{figure} figs/allconnections.png :align: center :alt: IPython cluster connections :width: 432px All the connections involved in connecting one client to one engine. ``` The Controller consists of 1-5 processes. Central to the cluster is the **Hub**, which monitors engine state, execution traffic, and handles registration and notification. The Hub includes a Heartbeat Monitor for keeping track of engines that are alive. Outside the Hub are 4 **Schedulers**. These devices are very small pure-C MonitoredQueue processes (or optionally threads) that relay messages very fast, but also send a copy of each message along a side socket to the Hub. The MUX queue and Control queue are MonitoredQueue ØMQ devices which relay explicitly addressed messages from clients to engines, and their replies back up. The Balanced queue performs load-balancing destination-agnostic scheduling. It may be a MonitoredQueue device, but may also be a Python Scheduler that behaves externally in an identical fashion to MQ devices, but with additional internal logic. stdout/err are also propagated from the Engines to the clients via a PUB/SUB MonitoredQueue. ### Registration ```{figure} figs/queryfade.png :align: center :alt: IPython Registration connections :width: 432px Engines and Clients only need to know where the Query `ROUTER` is located to start connecting. ``` Once a controller is launched, the only information needed for connecting clients and/or engines is the IP/port of the Hub's `ROUTER` socket called the Registrar. This socket handles connections from both clients and engines, and replies with the remaining information necessary to establish the remaining connections. Clients use this same socket for querying the Hub for state information. ### Heartbeat ```{figure} figs/hbfade.png :align: center :alt: IPython Heartbeat connections :width: 432px The heartbeat sockets. ``` The heartbeat process has been described elsewhere. To summarize: the Heartbeat Monitor publishes a distinct message periodically via a `PUB` socket. Each engine has a `zmq.FORWARDER` device with a `SUB` socket for input, and `DEALER` socket for output. The `SUB` socket is connected to the `PUB` socket labeled _ping_, and the `DEALER` is connected to the `ROUTER` labeled _pong_. This results in the same message being relayed back to the Heartbeat Monitor with the addition of the `DEALER` prefix. The Heartbeat Monitor receives all the replies via an `ROUTER` socket, and identifies which hearts are still beating by the `zmq.IDENTITY` prefix of the `DEALER` sockets, which information the Hub uses to notify clients of any changes in the available engines. ### Schedulers ```{figure} figs/queuefade.png :align: center :alt: IPython Queue connections :width: 432px Control message scheduler on the left, execution (apply) schedulers on the right. ``` The controller has at least three Schedulers. These devices are primarily for relaying messages between clients and engines, but the Hub needs to see those messages for its own purposes. Since no Python code may exist between the two sockets in a queue, all messages sent through these queues (both directions) are also sent via a `PUB` socket to a monitor, which allows the Hub to monitor queue traffic without interfering with it. For tasks, the engine need not be specified. Messages sent to the `ROUTER` socket from the client side are assigned to an engine via ZMQ's `DEALER` round-robin load balancing. Engine replies are directed to specific clients via the IDENTITY of the client, which is received as a prefix at the Engine. For Multiplexing, `ROUTER` is used for both in and output sockets in the device. Clients must specify the destination by the `zmq.IDENTITY` of the `ROUTER` socket connected to the downstream end of the device. At the Kernel level, both of these `ROUTER` sockets are treated in the same way as the `REP` socket in the serial version (except using ZMQStreams instead of explicit sockets). Execution can be done in a load-balanced (engine-agnostic) or multiplexed (engine-specified) manner. The sockets on the Client and Engine are the same for these two actions, but the scheduler used determines the actual behavior. This routing is done via the `zmq.IDENTITY` of the upstream sockets in each MonitoredQueue. ### IOPub ```{figure} figs/iopubfade.png :align: center :alt: IOPub connections :width: 432px stdout/err are published via a `PUB/SUB` MonitoredQueue ``` On the kernels, stdout/stderr are captured and published via a `PUB` socket. These `PUB` sockets all connect to a `SUB` socket input of a MonitoredQueue, which subscribes to all messages. They are then republished via another `PUB` socket, which can be subscribed by the clients. ### Client connections ```{figure} figs/queryfade.png :align: center :alt: IPython client query connections :width: 432px Clients connect to an `ROUTER` socket to query the hub. ``` The hub's registrar `ROUTER` socket also listens for queries from clients as to queue status, and control instructions. Clients connect to this socket via an `DEALER` during registration. ```{figure} figs/notiffade.png :align: center :alt: IPython Registration connections :width: 432px Engine registration events are published via a `PUB` socket. ``` The Hub publishes all registration/unregistration events via a `PUB` socket. This allows clients to stay up to date with what engines are available by subscribing to the feed with a `SUB` socket. Other processes could selectively subscribe to just registration or unregistration events. ipython-ipyparallel-14e3c43/docs/source/reference/dag_dependencies.md000066400000000000000000000147651520071063500260350ustar00rootroot00000000000000(dag-dependencies)= # DAG Dependencies Often, parallel workflow is described in terms of a [Directed Acyclic Graph](https://en.wikipedia.org/wiki/Directed_acyclic_graph) or DAG. A popular library for working with Graphs is [NetworkX]. Here, we will walk through a demo mapping a NetworkX DAG to task dependencies. The full script that runs this demo can be found in {file}`examples/parallel/dagdeps.py`. ## Why are DAGs good for task dependencies? The 'G' in DAG is 'Graph'. A Graph is a collection of **nodes** and **edges** that connect the nodes. For our purposes, each node would be a task, and each edge would be a dependency. The 'D' in DAG stands for 'Directed'. This means that each edge has a direction associated with it. So we can interpret the edge (a,b) as meaning that b depends on a, whereas the edge (b,a) would mean a depends on b. The 'A' is 'Acyclic', meaning that there must not be any closed loops in the graph. This is important for dependencies, because if a loop were closed, then a task could ultimately depend on itself, and never be able to run. If your workflow can be described as a DAG, then it is impossible for your dependencies to cause a deadlock. ## A sample DAG Suppose we have five tasks, and they depend on each other as follows: - Task 0 has no dependencies and can run right away. - When 0 finishes, tasks 1 and 2 can start. - When 1 finishes, task 3 must wait for 2, but task 4 can start right away. - When 2 finishes, task 3 can finally start. We might represent these tasks with a simple graph: ```{figure} figs/simpledag.* :width: 600px ``` An arrow is repsented here by a fattened bit on the edge. As we specified when we made the edges, we can see that task 0 depends on nothing, and can run immediately. 1 and 2 depend on 0; 3 depends on 1 and 2; and 4 depends only on 1. Let's construct this 5-node DAG. First, we create a directed graph or 'digraph': ```ipython In [1]: import networkx as nx In [2]: G = nx.DiGraph() In [3]: map(G.add_node, range(5)) # Add 5 nodes, labeled 0-4. ``` Now we can add edges: ```ipython In [4]: G.add_edge(0, 1) # Task 1 depends on task 0... In [5]: G.add_edge(0, 2) # ...and so does task 2. In [6]: G.add_edge(1, 3) # Task 3 depends on task 1... In [7]: G.add_edge(2, 3) # ...and also on task 2. In [8]: G.add_edge(1, 4) # Task 4 depends on task 1. ``` The following code produces the figure above: ```ipython In [9]: pos = {0: (0, 0), 1: (1, 1), 2: (-1, 1), ...: 3: (0, 2), 4: (2, 2)} In [10]: nx.draw(G, pos, edge_color='r') ``` Taking failures into account, assuming all dependencies are run with the default `success=True, failure=False`, the following cases would occur for each node's failure: 0. All other tasks fail as impossible. 1. 2 can still succeed, but 3 and 4 are unreachable. 2. 3 becomes unreachable, but 4 is unaffected. 3. and 4. are terminal, and can have no effect on other nodes. Let's look at a larger, more complex network. ## Computing with a random DAG For demonstration purposes, we have a function that generates a random DAG with a given number of nodes and edges. ```{literalinclude} ../examples/dagdeps.py :language: python :lines: 24-40 ``` So first, we start with a graph of 32 nodes, with 128 edges: ```ipython In [11]: G = random_dag(32, 128) ``` Then we need some jobs. In reality these would all be different, but for our toy example we'll use a single function that sleeps for a random interval: ```{literalinclude} ../examples/dagdeps.py :language: python :lines: 16-21 ``` Now we can build our dict of jobs corresponding to the nodes on the graph: ```ipython In [12]: jobs = {n: randomwait for n in G} ``` Once we have a dict of jobs matching the nodes on the graph, we can start submitting jobs, and linking up the dependencies. Since we don't know a job's msg_id until it is submitted, which is necessary for building dependencies, it is critical that we don't submit any jobs before other jobs it may depend on. Fortunately, NetworkX provides a {meth}`topological_sort` method which ensures exactly this. It presents an iterable, that guarantees that when you arrive at a node, you have already visited all the nodes on which it depends: ```ipython In [13]: import ipyprallel as ipp In [14]: rc = ipp.Client() In [15]: view = rc.load_balanced_view() In [16]: results = {} In [17]: for node in nx.topological_sort(G): ...: # Get list of AsyncResult objects from nodes ...: # leading into this one as dependencies. ...: deps = [results[n] for n in G.predecessors(node)] ...: # Submit and store AsyncResult object. ...: with view.temp_flags(after=deps, block=False): ...: results[node] = view.apply(jobs[node]) ``` Now that we have submitted all the jobs, we can wait for the results: ```ipython In [18]: view.wait(results.values()) ``` Now, at least we know that all the jobs ran and did not fail. But we don't know that the ordering was properly respected. For this, we can use the {attr}`metadata` attribute of each AsyncResult. ## Inspecting the metadata These objects store a variety of metadata about each task, including various timestamps. We can validate that the dependencies were respected by checking that each task was started after all of its predecessors were completed: ```{literalinclude} ../examples/dagdeps.py :language: python :lines: 72-81 ``` Then we can call this function: ```ipython In [19]: validate_tree(G, results) ``` It produces no output but the assertions pass. We can also validate the graph visually. By drawing the graph with each node's x-position as its start time, all arrows must be pointing to the right if dependencies were respected. For spreading, the y-position will be the runtime of the task, so long tasks will be at the top, and quick, small tasks will be at the bottom. ```ipython In [20]: from matplotlib.dates import date2num In [21]: from matplotlib.cm import gist_rainbow In [22]: pos, colors = {}, {} In [23]: for node in G: ...: md = results[node].metadata ...: start = date2num(md.started) ...: runtime = date2num(md.completed) - start ...: pos[node] = (start, runtime) ...: colors[node] = md.engine_id In [24]: nx.draw(G, pos, nodelist=colors.keys(), node_color=list(colors.values()), ...: cmap=gist_rainbow) ``` ```{figure} figs/dagdeps.* :width: 600px Time started on the x-axis, runtime on the y-axis, and color-coded by engine-id (in this case there were four engines). Edges denote dependencies. The limits of the axes have been adjusted in this plot. ``` [networkx]: https://networkx.org ipython-ipyparallel-14e3c43/docs/source/reference/db.md000066400000000000000000000167241520071063500231560ustar00rootroot00000000000000(parallel-db)= # IPython's Task Database ## Enabling a DB Backend The IPython Hub can store all task requests and results in a database. Currently supported backends are: MongoDB, SQLite, and an in-memory DictDB. The default is to store recent tasks in a dictionary in memory, which deletes old values if it gets too big, and only survives as long as the controller is running. Using a real database is optional due to its potential {ref}`db-cost`. You can enable one, either at the command-line: ``` $> ipcontroller --sqlitedb # or --mongodb or --nodb ``` or in your {file}`ipcontroller_config.py`: ```python c.IPController.db_class = "NoDB" c.IPController.db_class = "DictDB" # default c.IPController.db_class = "MongoDB" c.IPController.db_class = "SQLiteDB" ``` ## Using the Task Database The most common use case for this is clients requesting results for tasks they did not submit, via: ```ipython In [1]: rc.get_result(task_id) ``` However, since we have this DB backend, we provide a direct query method in the {class}`~.Client` for users who want deeper introspection into their task history. The {meth}`db_query` method of the Client is modeled after MongoDB queries, so if you have used MongoDB it should look familiar. In fact, when the MongoDB backend is in use, the query is relayed directly. When using other backends, the interface is emulated and only a subset of queries is possible. ```{seealso} MongoDB [query docs](https://www.mongodb.com/docs/manual/tutorial/query-documents/) ``` {meth}`Client.db_query` takes a dictionary query object, with keys from the TaskRecord key list, and values of either exact values to test, or MongoDB queries, which are dicts of The form: `{'operator' : 'argument(s)'}`. There is also an optional `keys` argument, that specifies which subset of keys should be retrieved. The default is to retrieve all keys excluding the request and result buffers. {meth}`db_query` returns a list of TaskRecord dicts. Also like MongoDB, the `msg_id` key will always be included, whether requested or not. TaskRecord keys: | Key | Type | Description | | -------------- | ----------- | ----------------------------------------------------------- | | msg_id | uuid(ascii) | The msg ID | | header | dict | The request header | | content | dict | The request content (likely empty) | | buffers | list(bytes) | buffers containing serialized request objects | | submitted | datetime | timestamp for time of submission (set by client) | | client_uuid | uuid(ascii) | IDENT of client's socket | | engine_uuid | uuid(ascii) | IDENT of engine's socket | | started | datetime | time task began execution on engine | | completed | datetime | time task finished execution (success or failure) on engine | | resubmitted | uuid(ascii) | msg_id of resubmitted task (if applicable) | | result_header | dict | header for result | | result_content | dict | content for result | | result_buffers | list(bytes) | buffers containing serialized request objects | | queue | str | The name of the queue for the task ('mux' or 'task') | | execute_input | str | Python input source | | execute_result | dict | Python output (execute_result message content) | | error | dict | Python traceback (error message content) | | stdout | str | Stream of stdout data | | stderr | str | Stream of stderr data | | label | str | optional user-defined task identifier | MongoDB operators we emulate on all backends: | Operator | Python equivalent | | -------- | ----------------------------------------------------------------------------- | | '\$in' | in | | '\$nin' | not in | | '\$eq' | == | | '\$ne' | != | | '\$gt' | > | | '\$gte' | >= | | '\$le' | \< | | '\$lte' | \<= | | '\$glob' | [fnmatch](https://docs.python.org/3/library/fnmatch.html) (wildcard matching) | Remarks on _$glob_: The operator can be used to find substrings in DB columns based on [unix style filename pattern matching](https://docs.python.org/3/library/fnmatch.html) _$glob_ is **not** a regular MongoDB opertor, but is internally translated to a regular expression (_$regex_) which is natively supported by MongoDB. The DB Query is useful for two primary cases: 1. deep polling of task status or metadata 2. selecting a subset of tasks, on which to perform a later operation (e.g. wait on result, purge records, resubmit,...) ## Example Queries To get all msg_ids that are not completed, only retrieving their ID and start time: ```ipython In [1]: incomplete = rc.db_query({'completed' : None}, keys=['msg_id', 'started']) ``` All jobs started in the last hour by me: ```ipython In [1]: from datetime import datetime, timedelta In [2]: hourago = datetime.now() - timedelta(1./24) In [3]: recent = rc.db_query({'started' : {'$gte' : hourago }, 'client_uuid' : rc.session.session}) ``` All jobs started more than an hour ago, by clients _other than me_: ```ipython In [3]: recent = rc.db_query({'started' : {'$le' : hourago }, 'client_uuid' : {'$ne' : rc.session.session}}) ``` Result headers for all jobs on engine 3 or 4: ```ipython In [1]: uuids = map(rc._engines.get, (3,4)) In [2]: hist34 = rc.db_query({'engine_uuid' : {'$in' : uuids }, keys='result_header') ``` (db-cost)= ## Cost The advantage of the database backends is, of course, that large amounts of data can be stored that won't fit in memory. The basic DictDB 'backend' stores all of this information in a Python dictionary. This is very fast, but will run out of memory quickly if you move a lot of data around, or your cluster is to run for a long time. Unfortunately, the DB backends (SQLite and MongoDB) right now are rather slow, and can still consume large amounts of resources, particularly if large tasks or results are being created at a high frequency. For this reason, we have added {class}`~.NoDB`, a dummy backend that doesn't store any information. When you use this database, nothing is stored, and any request for results will result in a KeyError. This obviously prevents later requests for results and task resubmission from functioning, but sometimes those nice features are not as useful as keeping Hub memory under control. ipython-ipyparallel-14e3c43/docs/source/reference/details.md000066400000000000000000000515371520071063500242170ustar00rootroot00000000000000(parallel-details)= # Details of Parallel Computing with IPython ```{note} There are still many sections to fill out in this doc ``` ## Caveats First, some caveats about the detailed workings of parallel computing with 0MQ and IPython. ### Non-copying sends and numpy arrays When numpy arrays are passed as arguments to apply or via data-movement methods, they are not copied. This means that you must be careful if you are sending an array that you intend to work on. PyZMQ does allow you to track when a message has been sent so you can know when it is safe to edit the buffer, but IPython only allows for this. It is also important to note that the non-copying receive of a message is _read-only_. That means that if you intend to work in-place on an array that you have sent or received, you must copy it. This is true for both numpy arrays sent to engines and numpy arrays retrieved as results. The following will fail: ```ipython In [3]: A = numpy.zeros(2) In [4]: def setter(a): ...: a[0]=1 ...: return a In [5]: rc[0].apply_sync(setter, A) --------------------------------------------------------------------------- RuntimeError Traceback (most recent call last) in () in setter(a) RuntimeError: array is not writeable ``` If you do need to edit the array in-place, remember to copy the array if it's read-only. The {attr}`ndarray.flags.writeable` flag will tell you if you can write to an array. ```ipython In [3]: A = numpy.zeros(2) In [4]: def setter(a): ...: """only copy read-only arrays""" ...: if not a.flags.writeable: ...: a=a.copy() ...: a[0]=1 ...: return a In [5]: rc[0].apply_sync(setter, A) Out[5]: array([ 1., 0.]) # note that results will also be read-only: In [6]: _.flags.writeable Out[6]: False ``` If you want to safely edit an array in-place after _sending_ it, you must use the `track=True` flag. IPython always performs non-copying sends of arrays, which return immediately. You must instruct IPython track those messages _at send time_ in order to know for sure that the send has completed. AsyncResults have a {attr}`sent` property, and {meth}`wait_on_send` method for checking and waiting for 0MQ to finish with a buffer. ```ipython In [5]: A = numpy.random.random((1024,1024)) In [6]: view.track=True In [7]: ar = view.apply_async(lambda x: 2*x, A) In [8]: ar.sent Out[8]: False In [9]: ar.wait_on_send() # blocks until sent is True ``` ### What is sendable? If IPython doesn't know what to do with an object, it will pickle it. There is a short list of objects that are not pickled: `buffers/memoryviews`, `bytes` objects, and `numpy` arrays. These are handled specially by IPython in order to prevent extra in-memory copies of data. Sending bytes or numpy arrays will result in exactly zero in-memory copies of your data (unless the data is very small). If you have an object that provides a Python buffer interface, then you can always send that buffer without copying - and reconstruct the object on the other side in your own code. It is possible that the object reconstruction will become extensible, so you can add your own non-copying types, but this does not yet exist. #### Closures Just about anything in Python is pickleable. The one notable exception is objects (generally functions) with _closures_. Closures can be a complicated topic, but the basic principle is that functions that refer to variables in their parent scope have closures. An example of a function that uses a closure: ```python def f(a): def inner(): # inner will have a closure return a return inner f1 = f(1) f2 = f(2) f1() # returns 1 f2() # returns 2 ``` `f1` and `f2` will have closures referring to the scope in which `inner` was defined, because they use the variable 'a'. As a result, you would not be able to send `f1` or `f2` with IPython. Note that you _would_ be able to send `f`. This is only true for interactively defined functions (as are often used in decorators), and only when there are variables used inside the inner function, that are defined in the outer function. If the names are _not_ in the outer function, then there will not be a closure, and the generated function will look in `globals()` for the name: ```python def g(b): # note that `b` is not referenced in inner's scope def inner(): # this inner will *not* have a closure return a return inner g1 = g(1) g2 = g(2) g1() # raises NameError on 'a' a=5 g2() # returns 5 ``` `g1` and `g2` _will_ be sendable with IPython, and will treat the engine's namespace as globals(). The {meth}`pull` method is implemented based on this principle. If we did not provide pull, you could implement it yourself with `apply`, by returning objects out of the global namespace: ```ipython In [10]: view.apply(lambda : a) # is equivalent to In [11]: view.pull('a') ``` You can send functions with closures if you enable using dill or cloudpickle: ```ipython In [10]: rc[:].use_cloudpickle() ``` which will use a more advanced pickling library, which covers things like closures. ## Running Code There are two principal units of execution in Python: strings of Python code (e.g. 'a=5'), and Python functions. IPython is designed around the use of functions via the core Client method, called `apply`. ### Apply The principal method of remote execution is {meth}`apply`, of {class}`~ipyparallel.client.view.View` objects. The Client provides the full execution and communication API for engines via its low-level {meth}`send_apply_message` method, which is used by all higher level methods of its Views. f : The function to be called remotely args : The positional arguments passed to `f` kwargs : The keyword arguments passed to `f` flags for all views: block : Whether to wait for the result, or return immediately. False: : returns AsyncResult True: : returns actual result(s) of `f(*args, **kwargs)` if multiple targets: : list of results, matching `targets` track : whether to track non-copying sends. targets : Specify the destination of the job. if 'all' or None: : Run on all active engines if list: : Run on each specified engine if int: : Run on single engine ```{note} {class}`LoadBalancedView` uses targets to restrict possible destinations. LoadBalanced calls will always execute on exactly one engine. ``` flags only in LoadBalancedViews: after : Only for load-balanced execution (targets=None) Specify a list of msg ids as a time-based dependency. This job will only be run _after_ the dependencies have been met. follow : Only for load-balanced execution (targets=None) Specify a list of msg_ids as a location-based dependency. This job will only be run on an engine where this dependency is met. timeout : Only for load-balanced execution (targets=None) Specify an amount of time (in seconds) for the scheduler to wait for dependencies to be met before failing with a DependencyTimeout. ### execute and run For executing strings of Python code, {class}`~.DirectView` s also provide an {meth}`~.DirectView.execute` and a {meth}`~.DirectView.run` method, which rather than take functions and arguments, take Python strings. `execute` takes a string of Python code to execute, and sends it to the Engine(s). `run` is the same as `execute`, but for a _filename_ rather than a string. It is a wrapper that does something very similar to `execute(open(f).read())`. ```{note} TODO: Examples for execute and run ``` ## Views The principal extension of the {class}`~parallel.Client` is the {class}`~parallel.View` class. The client is typically a singleton for connecting to a cluster, and presents a low-level interface to the Hub and Engines. Most real usage will involve creating one or more {class}`~parallel.View` objects for working with engines in various ways. ### DirectView The {class}`.DirectView` is the class for the IPython {ref}`Multiplexing Interface `. #### Creating a DirectView DirectViews can be created in two ways, by index access to a client, or by a client's {meth}`view` method. Index access to a Client works in a few ways. First, you can create DirectViews to single engines by accessing the client by engine id: ```ipython In [2]: rc[0] Out[2]: ``` You can also create a DirectView with a list of engines: ```ipython In [2]: rc[0,1,2] Out[2]: ``` Other methods for accessing elements, such as slicing and negative indexing, work by passing the index directly to the client's {attr}`ids` list, so: ```ipython # negative index In [2]: rc[-1] Out[2]: # or slicing: In [3]: rc[::2] Out[3]: ``` are always the same as: ```ipython In [2]: rc[rc.ids[-1]] Out[2]: In [3]: rc[rc.ids[::2]] Out[3]: ``` Also note that the slice is evaluated at the time of construction of the DirectView, so the targets will not change over time if engines are added/removed from the cluster. #### Execution via DirectView The DirectView is the simplest way to work with one or more engines directly (hence the name). For instance, to get the process ID of all your engines: ```ipython In [5]: import os In [6]: dview.apply_sync(os.getpid) Out[6]: [1354, 1356, 1358, 1360] ``` Or to see the hostname of the machine they are on: ```ipython In [5]: import socket In [6]: dview.apply_sync(socket.gethostname) Out[6]: ['tesla', 'tesla', 'edison', 'edison', 'edison'] ``` ```{note} TODO: expand on direct execution ``` #### Data movement via DirectView Since a Python namespace is a {class}`dict`, {class}`DirectView` objects provide dictionary-style access by key and methods such as {meth}`get` and {meth}`update` for convenience. This make the remote namespaces of the engines appear as a local dictionary. Underneath, these methods call {meth}`apply`: ```ipython In [51]: dview['a']=['foo','bar'] In [52]: dview['a'] Out[52]: [ ['foo', 'bar'], ['foo', 'bar'], ['foo', 'bar'], ['foo', 'bar'] ] ``` ### Scatter and gather Sometimes it is useful to partition a sequence and push the partitions to different engines. In MPI language, this is know as scatter/gather and we follow that terminology. However, it is important to remember that in IPython's {class}`Client` class, {meth}`scatter` is from the interactive IPython session to the engines and {meth}`gather` is from the engines back to the interactive IPython session. For scatter/gather operations between engines, MPI should be used: ```ipython In [58]: dview.scatter('a',range(16)) Out[58]: [None,None,None,None] In [59]: dview['a'] Out[59]: [ [0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11], [12, 13, 14, 15] ] In [60]: dview.gather('a') Out[60]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15] ``` ### Push and pull {meth}`~ipyparallel.client.view.DirectView.push` {meth}`~ipyparallel.client.view.DirectView.pull` ```{note} TODO: write this section ``` ### LoadBalancedView The {class}`~.LoadBalancedView` is the class for load-balanced execution via the task scheduler. These views always run tasks on exactly one engine, but let the scheduler determine where that should be, allowing load-balancing of tasks. The LoadBalancedView does allow you to specify restrictions on where and when tasks can execute, for more complicated load-balanced workflows. ## Data Movement Since the {class}`~.LoadBalancedView` does not know where execution will take place, explicit data movement methods like push/pull and scatter/gather do not make sense, and are not provided. ## Results ### AsyncResults Our primary representation of the results of remote execution is the {class}`~.AsyncResult` object, based on the object of the same name in the built-in {py:mod}`multiprocessing.pool` module. Our version provides a superset of that interface, and starting in 6.0 is a subclass of {class}`concurrent.futures.Future`. The basic principle of the AsyncResult is the encapsulation of one or more results not yet completed. Execution methods (including data movement, such as push/pull) will all return AsyncResults when `block=False`. ### The mp.pool.AsyncResult interface The basic interface of the AsyncResult is exactly that of the AsyncResult in {py:mod}`multiprocessing.pool`, and consists of four methods: % AsyncResult spec directly from docs.python.org ```{eval-rst} .. class:: AsyncResult The stdlib AsyncResult spec .. method:: wait([timeout]) Wait until the result is available or until *timeout* seconds pass. This method always returns ``None``. .. method:: ready() Return whether the call has completed. .. method:: successful() Return whether the call completed without raising an exception. Will raise :exc:`AssertionError` if the result is not ready. .. method:: get([timeout]) Return the result when it arrives. If *timeout* is not ``None`` and the result does not arrive within *timeout* seconds then :exc:`TimeoutError` is raised. If the remote call raised an exception then that exception will be reraised as a :exc:`RemoteError` by :meth:`get`. ``` While an AsyncResult is not done, you can check on it with its {meth}`ready` method, which will return whether the AR is done. You can also wait on an AsyncResult with its {meth}`wait` method. This method blocks until the result arrives. If you don't want to wait forever, you can pass a timeout (in seconds) as an argument to {meth}`wait`. {meth}`wait` will _always return None_, and should never raise an error. {meth}`ready` and {meth}`wait` are insensitive to the success or failure of the call. After a result is done, {meth}`successful` will tell you whether the call completed without raising an exception. If you want the result of the call, you can use {meth}`get`. Initially, {meth}`get` behaves just like {meth}`wait`, in that it will block until the result is ready, or until a timeout is met. However, unlike {meth}`wait`, {meth}`get` will raise a {exc}`TimeoutError` if the timeout is reached and the result is still not ready. If the result arrives before the timeout is reached, then {meth}`get` will return the result itself if no exception was raised, and will raise an exception if there was. Here is where we start to expand on the multiprocessing interface. Rather than raising the original exception, a RemoteError will be raised, encapsulating the remote exception with some metadata. If the AsyncResult represents multiple calls (e.g. any time `targets` is plural), then a CompositeError, a subclass of RemoteError, will be raised. ```{seealso} For more information on remote exceptions, see {ref}`the section in the Direct Interface `. ``` #### Extended interface Other extensions of the AsyncResult interface include convenience wrappers for {meth}`get`. AsyncResults have a property, {attr}`result`, with the short alias {attr}`r`, which call {meth}`get`. Since our object is designed for representing _parallel_ results, it is expected that many calls (any of those submitted via DirectView) will map results to engine IDs. We provide a {meth}`get_dict`, which is also a wrapper on {meth}`get`, which returns a dictionary of the individual results, keyed by engine ID. You can also prevent a submitted job from executing, via the AsyncResult's {meth}`abort` method. This will instruct engines to not execute the job when it arrives. The larger extension of the AsyncResult API is the {attr}`metadata` attribute. The metadata is a dictionary (with attribute access) that contains, logically enough, metadata about the execution. Metadata keys: timestamps submitted : When the task left the Client started : When the task started execution on the engine completed : When execution finished on the engine received : When the result arrived on the Client note that it is not known when the result arrived in 0MQ on the client, only when it arrived in Python via {meth}`Client.spin`, so in interactive use, this may not be strictly informative. Information about the engine engine_id : The integer id engine_uuid : The UUID of the engine output of the call error : Python exception, if there was one execute_input : The code (str) that was executed execute_result : Python output of an execute request (not apply), as a Jupyter message dictionary. stderr : stderr stream stdout : stdout (e.g. print) stream And some extended information status : either 'ok' or 'error' msg_id : The UUID of the message after : For tasks: the time-based msg_id dependencies follow : For tasks: the location-based msg_id dependencies While in most cases, the Clients that submitted a request will be the ones using the results, other Clients can also request results directly from the Hub. This is done via the Client's {meth}`get_result` method. This method will _always_ return an AsyncResult object. If the call was not submitted by the client, then it will be a subclass, called {class}`AsyncHubResult`. These behave in the same way as an AsyncResult, but if the result is not ready, waiting on an AsyncHubResult polls the Hub, which is much more expensive than the passive polling used in regular AsyncResults. The Client keeps track of all results history, results, metadata ## Querying the Hub The Hub sees all traffic that may pass through the schedulers between engines and clients. It does this so that it can track state, allowing multiple clients to retrieve results of computations submitted by their peers, as well as persisting the state to a database. queue_status > You can check the status of the queues of the engines with this command. result_status > check on results purge_results > forget results (conserve resources) ## Controlling the Engines There are a few actions you can do with Engines that do not involve execution. These messages are sent via the Control socket, and bypass any long queues of waiting execution jobs abort > Sometimes you may want to prevent a job you have submitted from running. The method > for this is {meth}`abort`. It takes a container of msg_ids, and instructs the Engines to not > run the jobs if they arrive. The jobs will then fail with an AbortedTask error. clear > You may want to purge the Engine(s) namespace of any data you have left in it. After > running `clear`, there will be no names in the Engine's namespace shutdown > You can also instruct engines (and the Controller) to terminate from a Client. This > can be useful when a job is finished, since you can shutdown all the processes with a > single command. ## Synchronization Since the Client is a synchronous object, events do not automatically trigger in your interactive session - you must poll the 0MQ sockets for incoming messages. Note that this polling _does not_ make any network requests. It performs a `select` operation, to check if messages are already in local memory, waiting to be handled. The method that handles incoming messages is {meth}`spin`. This method flushes any waiting messages on the various incoming sockets, and updates the state of the Client. If you need to wait for particular results to finish, you can use the {meth}`wait` method, which will call {meth}`spin` until the messages are no longer outstanding. Anything that represents a collection of messages, such as a list of msg_ids or one or more AsyncResult objects, can be passed as argument to wait. A timeout can be specified, which will prevent the call from blocking for more than a specified time, but the default behavior is to wait forever. The client also has an `outstanding` attribute - a `set` of msg ids that are awaiting replies. This is the default if wait is called with no arguments - i.e. wait on _all_ outstanding messages. ```{note} TODO wait example ``` ## Map Many parallel computing problems can be expressed as a `map`, or running a single program with a variety of different inputs. Python has a built-in {py:func}`map`, which does exactly this, and many parallel execution tools in Python, such as the built-in {py:class}`multiprocessing.Pool` object provide implementations of `map`. All View objects provide a {meth}`map` method as well, but the load-balanced and direct implementations differ. Views' map methods can be called on any number of sequences, but they can also take keyword arguments to influence how the work is distributed. What keyword arguments are available depends on the view being used. ```{eval-rst} .. class:: ipyparallel.DirectView :noindex: .. automethod:: map :noindex: ``` ```{eval-rst} .. class:: ipyparallel.LoadBalancedView :noindex: .. automethod:: map :noindex: .. automethod:: imap :noindex: ``` ## Decorators and RemoteFunctions ```{note} TODO: write this section ``` {func}`~ipyparallel.client.remotefunction.parallel` {func}`~ipyparallel.client.remotefunction.remote` {class}`~ipyparallel.client.remotefunction.RemoteFunction` {class}`~ipyparallel.client.remotefunction.ParallelFunction` ## Dependencies ```{note} TODO: write this section ``` {func}`~ipyparallel.controller.dependency.depend` {func}`~ipyparallel.controller.dependency.require` {class}`~ipyparallel.controller.dependency.Dependency` ipython-ipyparallel-14e3c43/docs/source/reference/figs/000077500000000000000000000000001520071063500231655ustar00rootroot00000000000000ipython-ipyparallel-14e3c43/docs/source/reference/figs/allconnections.png000066400000000000000000000766201520071063500267210ustar00rootroot00000000000000‰PNG  IHDR°°ÈN0*tEXtSoftwareAdobe ImageReadyqÉe<}2IDATxÚì½ x\Õu6¼mlcl�dÃ�/à1Ný,!!$Ñpò|�DrÒ4�4±”+ ••´¤?%Ÿ¤/”¯¡Me‡Ð&M‚dÒ@Ò4±Hú4†hD¸‡ ñÀ6Ôö_â‹l�elcÿçݳÖhëhf4÷Ùçœõ>ÏÑÌœÛ�Ùg¿û]kíµ”�@ �@ �@ �@ �@ �@ �@ �@ �@ �@ �@ �@ �@ �@ �@ �@ �@ �@ �@ �@ �@ ©±dQ8ä,‘ëjó9—ñ¾ÖYº±È]ø“åÖDÕïM“k]W–ä¦÷x46·;KŸ³´É-øSäV"ÂqH(ºe{|(‡ãVÑk‡s\Üy]llkrÖ­�[+&J �VÔ $·Ê‚)°Ÿ–&Zß켬Ăõ´î½vÑk?í'ˆ%C§³ls§Çµd´ÁQS-äãt^cÎç6:ï;ÌœÏmζUÎkƒÜÖà€ÚGD%LÐ<(Â: p:ÑNhpƒöÔSäïÆ@iÈ9ooŠmµdè&ød:„¿Êt�µ±ÏZ¬“;&HAÛœe�³4’:OÕN@pË ü®UÎÒa|S»�§iÛ0‘·j &ØMbPU+©“rQ^ýôq1ùCy›»-µ‘:S®}†ˆhø| ÄíâsQBÅÅÈg •bŠóñ©)ãZ ÌZ�%oå' L °m4zfôbÄkt,�Ô0fOÔ¹¹"þ~_´�N“¼Ò ŸˆÛÆ ­4¦\ÔÒ:¨¹ƒ*aÚ^GÛº\ûõ*a®4Ϲ�ŽcÕ5@Çä !0�À~smj¬suRÍFŒÎ%0ºn—;ëk„é5–ãq]tl5µ³æó«©=6a›áW…úšd�ÙvzßLŸ[T"*–Û²©àò‚˜û+Ê£Wc]›ñ~ˆ:ƒTÇ¢S¨3>Or¿'§z¯Üi_cÈEd¹(7E£�±ŽÛãÚŸC: •— æú(]O7½oQcM–!Q`�@ `ð¥�}O9˜÷0é½Ó=˜Êq—a1�+¢ÆOÈ�‹<2™´2ò,ᨽÓt¼ <«âãN;C¤*|¥ð;E©½õM@Hk©m"**«žBí#Y´¤*ë Ðø8�C‘¿¶Þ *~Õ¡ýYøè„À‹Ðo!y1ÐQUËOä ÃÜ?€ÂDQ5:Œ‰ïct Ȋɤ3@�BîcÌsðƒµªÑpü>5êgž‹è` ï¡õõyª»$&ÉÏ,”]�éì“&�ã,UÖ\×É“Ûøm�¨0A�m¤‡Õ’f"3¶#š±�|¾¢À/aÒ¤yÎb“KXH~A�ê�™²¾„ %/!0�@ ”ŠÄb¶ÅUÁ ‰B�'(FÑ_�®±KTë»Wšóy�'ú�°JLÆu#žm\ÎXhòZAR—8 üˆ’‰¨ñÉQó!£\Á¹Ä�·ÀxX�Ïè" ¬ääÕDÄUW ÕEó!*e)%Çҥ穋.>WÍš5Cm|i‡zö™MêÊw^¤Þù® Õ=kú’û™ë,œ«®[^§�9|øˆzöéÍjãÆWåfæ ê7¢ôüã}Ì > >!îžÏ„õ©‚81n¡ ‚`(0�Wg*ò‚’BÎ8*ò·Ž• ĺdBK#ër-£'îQ)�mt\Ês ¹âö;nT÷?p›&1,ùèÕz=ˆêKÙ8f_söñL€½w$? Š>@FÊ%Ø:NR “#Y|"f‰ƒ¼00,wOX6ˆd(â‡Æ·Ñ2D4øÌ%Ø›HµÅ¹Š-•¶€«�ÏI o%+ggi£çw·_ k:ÿÇ úŸ‘õÏ~�JøËzÓø»0^Sìâ‘¢Àü=J ¥R_ʨWC¯qC1Å “ÀÀ#¦>z8':§@�56mÜ¡>ݼ\Y¾€ñJG�=ûÌær^ºÎPNK‘Y?=x¦ÚŠô\¯Ë"ÅQ©û–£*÷3«I}õ»ž}XƒðY) �e�¨’jµ⮯?¨víÚ§þþîÏªß Ü­ý\¹`ó–ûÔï¿­,˜›·Š+’Ji3¬מª¥«ÃüÖL‡9ðı†Yä€s€¼ºè}%È ÿÏ2&kãÿ"âî#bcôyuKëËkT"#s­ë¡‚: ~/bŸe �Pšµ�s c€À‹¦:Ô§nº[>¢îýΗ´¢Ê.ùŒzGÝ—Ô£ës>¶èS£Q¸ã9j'…%òã­pÝ*R/ÈfÞBÖ�"›&+55%l�Ù*ÓºCäu툮5lî/Ë4úë%“EZôÅþV¹õÓƒÔ’ÅùÐ(‡è<á»ä|N� yx×׬ 袥ç©�;÷éõˆ6d@e¥Š4„ÿëç?{"y¬…€ZYM¦ÅFƒèðœ5Ó>ð1#§^œÔÍP¯7¦Fý{PT¨?‰«Ñ$µaRY­ÇÕhæ ô õ©\‚܈‰Ìé ø‘2Z‘†¤¢Æç×vÓÝ‘Ï9‚‰Óá3yíÚ¹_ÝþµO8¯û4™ÍÚ˜�‡ªúöš>µôâó´Ÿì–›ïsuÓ&ž¿Ù*áïÊRq@quSñÅCŠÌ‹´Áõt®R9ˆÖ‡ !7é+„Àl#/8HÛ-½�ÙˆÚ…oW‘ .S¡3ÕБaÛùŠŠ¾ü|r;¶a1ÑóÔ/U|ÿý>¶J“ÐÚ§¥ê�ÆÕ~Ãçtã\ñ�¯êŠ×~ýgUç/�òx4¾Ök>>®®|×­j”!6ÃŒ¹¬J]=V'V‰®¡,Î�ýWV0‘ªgA“S;Šô;GT"˜B‚,ë+°­öÜ Ô2‡M³­¯ó0Bêxøûú}¨êL5ø·÷«u7C-¾ã#É}x»�ËÞ§Þ*‡Äšœ÷½³vI£|.¼‰IQתD"Q¬^AuÌÐ vÓ¶•”¤xÅDÆdh-2¶@Pʾû‚àVÿæ'º¯Àç¡‘×冓ƒ~Ш0‚ÂH &ƒLà}úÒ dæP.:Ô-ZŒÑ?�Ô‘‡È¬£§mÈ”�ÎÞÓ5Ôˆ°QäÜEÕdy™À¸6ÁU�Ÿ_ÅÛxq?{©Ìs|ÎTç³­¯hªMd¦ê$rãÏQ`%eédÆÌäºSÿòTòý¤ÿûªD#t �˜mÚM!0•(ëà6õõ8 Êˤ2nW‰šEèüÛÙ4åþlE#‘^› JÇ$lcÝ*"l)oSb€dúÛîÕƒ‘ßäµ�JÂwª±fVøë(M‘ͬxíòJ ¨�^9€!ðLqÄŸmÏW6}ú ôÜW€È¸ÿˆ+�ÿ!a4…‰WD¹GP¦Ù€?ãA䯋è"4Ê62}ðy“½{…Ì)0®žj莞H, Ql ™Ðªr;).å"å>ƒ¤Ö¹áÇo¤Ï‚ $†ŽœŒ&*‡Ì`Zc5[5à;Âó„¨ßJ@äÓWÀ|È&Ó$©9 ¬Ñú²¸¯³À@CBˆ+ÙZç¡A£bRÂ+¶3ðpá!2çxèõÎçEa´…Ï<΢F¹F%¢†É«�ÖgBœ”Yˆ:îÆª-DæH˜{-ùAÊMfBWƒ°cDØiû,5¶rv4ÕNDü!:WÄù,v³ óùÁó�g‹Ÿ;“ @XìgBç_ ÿQ¾}…~à\fO|^TsNB‘ÙÝW�Ù ØÓ3ÙÔñ dû° 1óˆÊmÙêl¹( +�¾‰ŠåÙ�äÁ2CAÓE×Mä€í¶HàšQè0–†°3s/Ýê,¿§›îƒ ÐacYk<[Ûì×q7R wîxÏSW¼ÒW¤Zgúúlî+„ÀÖ�–©H�ôf³¯kHÎ$ºÕcÁÿÞKóܺé¤ÛË„=1·‘Z…?�«ÿ¦ëqp?»²P²�Ììâpg¯§ÐÈO„ž‰Çñ<*�@LO6g q^·©ÄíXbJ¥$Ó¨UÞˆË"u¡œ8* – øµL_T–iFcß’™`-% €i‘�åó˜—•.é€@L`1¨c¶qÂ1H §\Qyd O°[-¡ |`Ùç€Y²%Ýù&ªLìWÀÇSýåå÷Izžj=Îe®Kwœ@Là-ò‚_f.[³KÀ¯ÔP†ûЬ~¨J¡;õÅ(_ � pò]5i’MvB�:õ:+”r Ëæßê,¨JL LˆÉ“íäŸ:5ä,ƒåüJÍÞ(ªhSeà%ÿ¹W¦@ –?ª_y]/�@�qé+<ÇQd[³¡æÚ$Q«@�óŸ9`͵L>qª¬}õCÔ_„%`G¬¢0Ê‚hò¢�¾ÀÒ¥ç©ÃÃGÔ®�û’Ÿ��_³�¹îÊw^¤_wíÚ—¨nÿÚ�zû§núÆè¾Æº>ðU½ÿ¦�;ôëðá#ê–›¿=†ðl26prX¤1¤X$Uåü{æv†9QvÛ�?Of7³C €¡d€Ðh ç¥ó8`– “d{ŽÇ©òûŽ�õe]·˜XEÉ«Å,=âe,X8W“×-7ߣYŸoŸ5kFÖǃ¼@f8¦÷¡õ¥ÖF}./äÄDƒ÷(‡Ò2 d†"‹npÁRl7Ë`Æ(Åê=�‹èyðȳ¸–¬ ESÅåPHAK“—‰ë–_–$®ÃŽ’ÊÃ[I€ˆ@\PbíT%7š¨¦Jj œ‡ ìØ@¯ž¸ùp#5Ú$?ŸX9ˆ+äwò‚ßêÛßêS+>zµztànukkcNÇÃtS"ÔÓ£—�zM(ëa*-”}ÇÒlTÿE%`�dBw›¥s°�öÐ5sU‚vùù„ÀJN^*‘Kä5äWåܳ¦O5ÝС]?¨¾ô—�êïïþlö¸kŸ>þ‡g: Çû ,�Ôüf\“JPvEW‰ÀˆZ�\v/õ%á"%Œ�e$¯Zjp ~%//þ涨µÝëµ`Jœ9«jÌ~ølFQÏ>³I~Üß³^ûÓ¼ ‘YDfBøÈ°p­*6®»ù:`ƒëT *B@«GH× &V6òòí„Aø½@XxÅrå».ÔшÀ#ëŸ×aóLJxÅçŸ;dåÖ_»¼.y¬�âˆPVk2TÙe’ã2XZî¿S›MÓ£ ,XK¯MôÜzlFŒP™A ¨(Ä ‘WBQÍPùè{t(=Ì�›^Ú¡Í�Za8DRC€Lƒˆ8D„!%òÛ¼å>­àÌc½‚•ïú ª{�ª=÷]hÕ~͈B¬7 $b;WNʀ؀êþôZ™�ØÌóX'eâK¢h0¿*ª~0DøuxàšQí*¬™TX‹ü’¥Ã$!/Ïþ?úÔi§5Xs]ÈFòä ?Ì“Êptê…TÙè9^“ÌŽ—ÇTÖäå(ªÐŒ™cÖÁ¤ˆcÜû³úY¹:@ŒLlÉëÍFßPʉ­F;ˆ:ßÓàÃç}ëè™]ì…ðtóÙ¤kŽ Õˆòä�–tp“Žy\¦}Mš äЦ—³\xH…E åØì…kö*|ïò<6õzȯÔi\sH~B!0!/� ˜* j žç.]sœ®y•üŠB`B^ApÁ匚<4ÇJT˜˜�—@ *L?¿êÙíB ¹¥¬ÂšåWò‚‹Nz¦ÃÊ;…“*L~¾âÃ�Qˆë‚F^o½Õoãe•5ÜyÎÆaurÊ$y¢ý­Â†œj =㫜÷km¾¡Âœë„ß饚ýžñG¬0õ…ļ‘€�—íÿ[¹T¤j:ýðq[I<.ÝLQ aõú7W Sbƒ憭!ÅØ®Ê_§LÌCäÕL[ ¼ú "k³­ã.ãýLj|@¯¨b!…Ç‘«Lb-ÙoŽ�j-‘B›å× ß]«¨0AZòBFZšðÿvÑÿzÐC™º½roûéÞFS` ¯° ÐÄ]jÄóÅ›Õâó—H‹.÷}÷;jÛÖ-Ê+÷׊kƵâš+�þG֫߬ÿõfQ¿bmâo*tΧ2&[ôv¨Q¿WK€Ì)Òp‚Ò©0›S7ñ5–-˜ƒªy×xŽÚlrOâ¾Ó÷5"Ô £›ÈfˆÀLÜ%Ò–�y�o>ÿ|õ®«ßW£©’*Wê&[£ýÌ�úH>'9`ÞÒîÁ¯FÙ|2 fUødï.•ÙÿÎhV£¹lýC`)Öö„¼Ü¤ÏóTkÑaTW×Hï)¨8`ʼþÃ�q £hMfݼ0²8q‘•�I7!–e~ooS,¸tâ�õñ€©�îb�6Žýú7þa%ÝC� düýsjèàA­²¼æo¡:Ä#€ˆ?ÊkH©€dÛòp£àؘs\[šA3”–¨9À Át„ú¢xŠýãfEfØ&·Ê6ö‡¯1NYPÂé|¡¼Ý¼²Já=Cô»…Õh$iԼƊ*0ú‡YæÆï%¦CA9�@�¯}õ¯õbÁX‡À‹¬ì¹çt€F|ëV¯ÞŠ5Æ ÙF’ÁÆ 2Êèøá“ê7Í�dZD�Lxõ.…‡~hÝ“mì#$ráýa’ì¢õ ®m´ÿ:5vŠBÄ$¬$ÛÓô�ݤñ=F&’vZ¯ÏM×3HëÛ•ËYibà&îºL‡-’mCà7•ö/ßZSkcBRìg²5Sý£óÏ+ˆÄ"D Ü¿®"RAdwƒ+êj±�ôÍDÒEJªA%ꬭ"ÓkÝÃÅt\<Ï>í*³ŽHÛ$º0ý/=´¾S ê(Yså ŒTH˜nFg€žqÓtØ[„ûØ…cÏîÝÒ{ &¨1(6VnøŒõn ½aÛÆ_³&ÆÝ»v†”½&m~æZ-¿¾Ú\Iƒa"œ"…f:G=mO%xÍD"õ¢ãO©Q+Y-ý®1càÏãd’ì¦ó׺”ÎÏæÌÕDʬ#'0’…�S!Ħö"�¶ÆÑ£#Ò &H‰w›q›ñŠÏXoâÉÇ«þyM—ÞöÀý=êçÿþ/Ý‚5®NÔ6•hæG\™cÿ6ˆÊ$«m�dyª˜A¦ ÆÂ&ÎZ2K¦¨ðºÐçït�?Ý=áí!—R«˜c-† ñy™¤ÝY@Ô¡@�7à÷â%_Õ^]]­þ¶ã''NC¡yÅ@~¦8) [3À÷Ñks®"¾.g$ÕÔCÿï4÷“l]$ºšHž}Uí´¾“ˆ~°AI1ñv³S�¿W�š 9r2¹ÂtyP�†û÷™Ë…hDªhõ ¾C&, Lt ŒºË¯P!‡HÜ8:2¢6¾ô¢Þ–*RðšåïO¾þ¹ßéó劥—\ª¦WUéóc�šÛä|ç¼ùó“óÀž~âñ¨Å·±—:øF5j²³‰d{�~$«Ë¬ä0ÈoP£¦¸ϧ¥ˆÀÅÔïÖÿs§5Æés”ŽisŽYKû‡X5ѵÕѹ¢´-âúžfúŽ�Ñ×G�ïÁ¾uÄl‘Š¥¸&þ­bD†-î9•£ï š ¡‘^©HóÀÂÕÕ5aéÞý&­oþý]D ’:xð€6å�ܰþ/ZS[¨®[ž|¿mË–¼,¦OŸ®_‰Ôâ?zàßl&°µD`�ìÊlIÖŘJU™Õª•ÞN}qG6çK±>šá뉰çëÎï�û%w>øÈŸ}<åúw¿ç½*ßÁLÝW$Œæ�¥Sg�õ×ñ¿´ ¸ÊùN¨>��•ˆ•*Ì¥<¤Zs”Í„h̺’úªUÆDm/ÿ/�ÃïC‡? |!{‰ÀÐÙýê¡>‡ØŽ:*`º£Þ¯;5D«�3o¾Ú»g·¥ðCVO=ñxr$�Î! &X™-^²D+ ¨¼‡,‡È[Yø )ü¬Àx�i"d ͘éû2 ÷~«ÄÀb‰6=Ÿ…ß ¿~o&DÞßÁY9.ºø’1ä…õO?ñ„žfyZ¸•ðÕÔ[ܱ ¾ºiõ•U`+¨¾Øß×[ª‰Úåšbº†:.ÝQ=÷œ&#È *ˆ¯ý�üšˆo·î<Ñ1Æ�‘½y�ÿÓ9~žÓQâ¬yá=˜±x_¨=!¯ñÀï“aòs ’2‰ÍMn�°9’2º¥—\’<û™û›ïÝÊËóÀQ›˜K%бœæ¶+¹¶T€ÔW³-ÓV¯*Û<0t–èÔ`br›©@>ÜâÕœàÊûNŸ^¥Ò]'FýÝ3ðë´‚¨‘DÅé~&Üc~/˜䋯²ÕF×(fÄ (°ÍG`ÒâYï=)R2Ô×?D[2ñÀløŸýB¿Ž]ɘ ¹&{…)Šƒô9œ÷lÚ¤|^æ« '09ÔZ|�ì$n”Ÿ«LFæ²äÄ9cô°!åH#E©¤ü _n˜`sÞR‡hà“a™ëáó‚?þ,¼¦ 20ó!ÇÀÕÅ“lq~©0�ÅHÑQ^¸W¶¨/ë�eÀ¾l‹¯Q̈0©„*¤Y�†�§ù4øQ�QÆ�mô±¡ÔIŠqŸ�£ýê÷¾/\ìPz�“�)ª@|¦ï§˜yBAÂW*…yÕ ¾°@\uõ{Šqo£7}âc xV1°FVŠ(¥+²õ:I%¶¥^b¶(Y"n4¥à…¼fš¬’�BKU ÑÈug# Ö>ó…›KFb¥Dbê@�µ×vðÀ�¬Ô³O÷€úˆÀ1)V3äo³ñ¤µÂ¯äå§4YOZ¨Le¸gÏnOš9Qùjø²æº¦où½ªúï犖™Ã À\+ç™õ�¡…[¢IIýÀ²XŸ‹ÀVø<}n¬öúÿÉ–'O®S“&Ùczë­~_4”ã�øÀ­¹žšÿú®&°BQÈ<0®!æ>Žª8ÄÌê¼® Á’rÝRçýLgݰó~£³N`<˜v«3^ˆªÓF†Õ› .Toο@G.3÷�~5£Íu§ïÚ¬�,2²äòä±¥F‘ê�õ’òªW® ¼Yö78ÄW8‰QñÅN5xå…èÝIî›…ë.y³Ž–¨¯ £Í\ê�mÞ¼I½ðÂ4‘ ¡ß Ü­zêP·íjó–û’DõÃnÓ¯ sÝ­­�ª÷áýzïw¾¤~7ømµâ£WËɇ�æöþ£~ÆúÕ¢;oБ‚LVLX&�ñº9}ßL¾Ç+ŽeB³¬ˆúˆ¼")ªƒŒÜƒµE´ÞLã¶B%Ò0uexvV+£"±ËQQ`Y*0ÆîÏ¿½"6ÿ{¯xáþ±úŠze†ü…^¤YÿkµuËuîyç©óÎ=OÍ™;7ïó­lY®QM7t$U+®lð©›¾¡_ïýέêö;nTë~ö„<•8ÔþdÕLMFÙ†Þ›aú ¿y£šýØê�Kíí÷("0f(°.5j2‹©±eë±tÀßL!ôP%mÆ3¥ý@Pƒ„žwÒ@ÙúÂtN’™aÿB`0²øLéE,U_ùæC׎W_M.XwμyjÞ9óò"³ æª+ßy‘6æB^n >" +“¹dd8çc`Nœz`·:ô¾›Êr�Ö‹QG=äßäBŸM‚ºj¦<«0«ÕÑ>x&—1™Ñ:¼oTi|i”1Ä=iQ"ìˆAøB`‚‚ÔWÅì3<¬éO?–±*îþ}ûÔñãÇաÇԈË|s"–©S§ªw_ýž¬¿ÿžoõ9äu¡6 >ûÌfu××ÌÉŸõþªfΪÒ$xËÍß–VåBÕ–ßkÔW.™;0)yÉ—/Óïáÿ*�å;ÌU�ŸÛ\ÛŒ÷\wµkŸ!"7s]¯Jq˜$D%`?˜Í…8…ÀŒúT¡Ï”*r0ˆeêkÌ<°C‡¢i�œ²õwA™]zéŸhË»vîSMêP×.¯S·þe¯uMýmÙàš>5Ë!°/µ6j›" T%”d)‚UÊ�êÿú®:Q=Oíkú«œlämW¨Ýñ¯šüÎéþŠ^ðY�–<½,Gä—Ë’Àª¶½®ª¶¾®ß¿9¯J�œ¦:9ý´QÓÆÑ·ôöÓ÷Œèm¦Ùqæóæ¡ËjÆ­Ã~³è½‰ãÕÓŠù?r0H1M¬¾b•T_Ÿ¸ñ“µƒÏ>:qâ¸záPp–t@gŽûÔ)SÕÖ­[’ĺòÊwæí ƒÙ¾«G×ê`Œ�|ôjõȯõ6�ƒßïÚµÏù{¡~ÏQ‹‡�hǦÈBÈ A*ÿóƒ×ûâME: 4(30¦òqA}qÖWSˆÀûd+~°  ¦£‹gª¹¿Ü©&�¼¥vÜz‘ó MÓävηª7çW©c¹ñû½~¾&¹™ÏïOA`û“–i>º'ùcà[¾WÐ?8ÿÞÏ[šêkMÉ &ÎH�¬p]uÆ 5쨮Îâš9k¶&£Ù³g'HÕ(i¹�N˜ël{‡C^¹¨.×9Êk×ÎýÚl<óôfýê ÊjãÆz=ÞÃ̈õ&,œ«ID¸©€púÁÁç5�ÁŸçg _ùamR<ç¾/«CõŸT³~¤ýc¦™ŸArÓvmÖåJÌóÀž~âñ² ìœgÔæ ÿ,å,u‚{+~0•ƒ ÄràÚsÔÐÕg©ÅÿûÿUg¼tH _^£ ÄÂJÕµðžM*ôÄõþ™ä}@`üÀÙÿ±=ArK.·íž5©2Ìû‚º2 5œb·øgœ»äÒ?©½ô, ŸuöÙY™Í`Z`2¬«»¬ ë\zñyš˜àÃÚäÕßÜöƒ¤‚úÔ'ïÖ‘…?üÑm:RqÓK;Ô]w>¨·í$CØ= $X>A 0›Æò«&å9s=ÿ`êù[oK]¤ÏÄί<¨CãA^Ç\¨MŒ<× J Û ºŽÍ¿ góc!(Ò<°\È+by]ª|� ì[tEš·ìdÕišÄ`>ÜwýÂäz˜¡¶ ²&"°|à6�¤z¸K ÎyXTßVÄ ¬Pš‘WŒpìÇþ(Ž•·´®êW98ÍÑу¼ø°°¤ˆé–›ïI¹ &ÇBC攂ym>1±cÇ«êÈÈ‘¤ª¡M!eê•åN&ÒÑ“›\˜ú÷u”X¹¢­2¯ÝUWöï„Цü”sÎ,«®ˆX–˜¾mXÕ<š0ÿAq�¤jÝ›TRc•ÕéjJ ßV10‘Ipû—,ëe'Q ª¾È$É °†ˆ°˜¬Š6¢…Iñü%K<ÝpAZ›6mÒ$–Š Y�i•glƒÉt–Cd³gÍöM ‡ `D�(+ƒ·È‹òqqàâ+0ø¿Ž]œpÆ¿E�Pacƒ:NŒù\L˜>1�™ùyNï?ª©÷”2m—qÈË÷å�ˆª‘«6aEÂ*™mÛKJ$Óÿpš£ªöîÙ3ŽÄàƒê:~â¸ÞvØ!3ŽÆÜ·oŸ^ì#Ìwœ`, œ&ÈM…±›!Ô›�³ ‚ðO ½ûlõÆÅ³uPÇÌßP‡®>+IføŒmZ�…�&¦<–Üž+L!² G^Ç«KãÀçÂxô1«ù¤²xÎFª2&aE󼮬æ�ù ]‘¹Ni{uÇ«ú€�æQw` “Ù¾ýûô>‡˜ØhB·&Æšõ�Œ¨S'O)AîÈe˜%Á^'°ˆX.B‘ƒ %˜A\ ±Óâ‚ÿ ÁÀ�kD2|ù6οmuö=[Í~â5­â@€…dvöƒí:ke(¡úâÈÞL’ÝPYM)â85¶>"­bHÿÀ׃âÂ2‚O d„iH›5fàäˆO+-r�È@h ?ÚÔiÓÔy‹«^|AíØ¹C�{îyúÜbj,ú€0Rlòšâ ŒCO¾¦¦íIº;}”éâ@¿uÆKCzlGP[‹æÿ„fFLó:€£§M`€^!l ×@rdE`ðyñÜ,4¨'¨(oΛ¡ª¶k?™n—×$oç­é€�×1g_ãö›™ß‘-~à‹jþ?!™¨ô`‰J´Sè—ÄÄÙ�ÌŒLføN¼Ç2õ…©cÈ,Ó}E¤ÞžÝ»­¼¯W½ç½½d9÷›7êWLÄÆ¤lmaqžwø»OP�ÎL˜óðNýŠÔvœ>z&-'§OÑ�gE\<qB[rû U 2 ä:Q“‚+Üàup„†TЉ�ÿßžDG3mÚ´¨Cbk‰°â~oüЇ’¨VG�µîÚ@“&OVO>ñø˜�x0¾#3âDÀy1‡‹Îâ¿u‹&0¼çò4 ¼td’ø‹Ö6m¦´ óæÍ××WI€¬00Å|N<ë -L•iaà å:�Á‚¢¥AbðÙ³>+Ó8åà›ãüñ9àÎX¤ Ï)0Ô7Ê3«v–û )#ÛÅÁÖa¥3ºo«€y°¢Èe4^ˆ¹._ ðâСgRNf†�ªÔþ)�²÷c�ÛA¡üÙ�™žàC: Ï7Ì„ 1¼‚À˜°Þø“†¬’³ æAiÀçƒú2ý] 7`¤ˆi˜ˆ¦TÂGÆÓò�òS>�Ãs™aJ€1�T9Ñ4 àIq,1ÓH™7´T·5ë³ óÀÐaÃ'te OFS™¡ÄÜ$†` „ÔgcÖ+@ܳg'È $ÆÁ¸®l”™_�o=°1*ÕQa5Qñ{øÆrÁÈâ™:òDrÚwÃB­Ê¦ Ó‰ÇáûB ûÅ@dØŽÐyÞŽà´‰Ð*¶…U@á¹ŠÌ .dáF G*Xº ‡˜òøºFzµ¹ÜxEç�¡ƒþݳ „ùTåÎfâp“|_PD•"ž—Æ“¬Ó‘g‘hƱT¨,˜ ¦êÊÄ�HC�Ðqš›rÂgöq�Œtä £¬0 ƒs“œ ´RÂÃ1ߟ3޼ÜßQIPi!0/N]ØÄg>û 5åàžR*Œ"9{F�t-iLFFøl g–‚Ä þžpH €iq‘X&³ÞyçžWrÂ5É Á%Lf ¢³‡ &þ½¯Ch~HõUÈó�ï¼0³º“¡;¡8ö®®ÉxŽL>1÷wX¢ÂÂA�Dôd|4lâeÈ:ÏäóP¹ñ²“§o tË &1ëðvƒØØ¬—ŽÌàÇq`’r©‰ƒ'Móõì3Ç,±lÞ´)©Î�ϯ^"´Bç�Á²‚Å ”…A½³fÚñ*â¢À&€M™áÔͤ¼ŠX6Ý æC}}¥˜– yqþ@›í*eC˜;N:•Æd%ôªAfÈl�d6õôÓÕŒ3Î(‹jĵÈóÌ8¥æÁögR³¥ª†ˆDÛŽ¯<($6ðÍGT@s"Z_‘9Õ� ýa®ò²Ï LÃ-’:cÖkóXªy`éÀ>¯táëètA$•T®aNJÈí£™Í®®ÖË«9Ÿ:¥Ê’:Êœg†kÂ@€s4âÕ$´ÍrY~ï%?ZÍœ¹áûÇ·¡L“•áûÆçiRÆUxÊO¥æ‚²Ù#�vgë+2gRY +8xù3ò"K…™¼âb> t¨ºž…©³ß ïÑÑ‚ *I`LÙÂpñ”óÿ L‹™: A!œ±$ÁêŒk¶áZ8‹þaÃܨ͢®ÿÝ$3®L])ÅFEZáKæ×e4Ъ>|H¥"°Œ=uý'ujÁ8¦T@Cé=W‘j J ¯«…ƒcV¤r*õ^P_•@²Ã'µ@¡ÔG’>±Jš ýßîß隷íêƒnTjÒ¤„i�kˆQê¨óˆÌÊ&4&f. £Iìð¡ä{ jÔ;Ûœâ<ü»˜¤6uJîÕªõ÷�8>æó |ÿk¯©M_Š\wíò¢×£yË�&.@™mP~Þ"0[*2Ù{Ö�;Ô‘K#z>Bé‘z&Aª3‹eg6`ûXÉy`ìobe‚H@6uUR…Š·NœPg�u–öç$CßÝ©£(’J´ÜAcʸHåMg`’Ã+G‰šUªÓ™€ Åî]»Ô°ó=³fÍæÎ5F¯È§%¶é… Æ%HÄ��*¬¥ª8áË•®È û÷Ù�Átˆ9aøŒ3PaÅhÜ!„ÉÌÿ’XEæ�qÇÀ¼fª?d1Qê(�^вÓW²Ô i:“á~"-Mj‡GÉ ÿËHŽS �uÅü_gT%>?ýäj—CöÎÒùØã�udxÎrú>øµ‡oì,E¢nOµ s½—�$0[*2Ca¹# _svÁ#™¨<鑬`Læ­ ÀLåŽd„¯¬þ²\`[©…x®çŠ•nUãmÍd�+wEæ ”œ`ÿ×€<鱕’Ñžïñœ~ȸ�¶Hœ È¿é¥UÃuËÇ‘G2‚Ì9’‘}Pœ�¾“¥mB1ê�!ü°ª€Ì�¼;«Î,X™Mp(}(hý�§+2ç€+°²Ïƒú€ê`?�—âºwM—úÕC¿PK/¾D<˜ðÝ>÷œúù¿ÿDçö»éÓÍÏá.µrw›õ>™ù½šs¡óÀàçb÷€& ‡È`6ÌF•¬"³@y£"sC¡ÿd¶)V(}T8—c*�rÏ�$—;n¯çðƒúúÈŸ}\Ý÷ÝïèLê ~¿ô’Kô’ ÌR+˜0ýeȰ�…ó1z9È¥”8}÷ËcTÈ ys1+¡"³ qcð R{±>•T™‰¤Ö�ä‚4ê‹#ØÎ÷II¨.49ŽÜ>öñ¼Î ¿ &U»MŒ¼À_ƪ,ȹÇØ®Íc"‰ñ>ßœ§¨ÈÌØ. LÀ#¥$€#+õå's xn|éEutd4šóšë–¥À£ibD8>ÍLa¥'-S£×m¡õÀÞªš©£ŠÝu¿ØŽ,<¥‹ PEæÀÃs™KŒe^Ñ”s˜©¾�ÃÏOQ½û=ïU¿Yÿký9T]�SAÏlÂÇ}ÃÂQŒ 3˜uâÁÙy9ð£Ðz`ÈF%&H…ãYÌó PEæäm§×ÀUfÎD`=5WøúzÊü}üÐyÉ„X¶y`œéý‹.òe0ÂU¨+öøoµ »fùûKú]ffzüЩ¡,›[VnÀdx ÀùœªÈ¬\ýUX i Ì‘ÿ-Îè¾¢™ØKíÿ¤eW®Cñ�¥L‡yèßW*†HD˜ñZ˜‰|Ý�<·¬é«ÊjE(ÑT™Td<¦”’@`§óôXúÿ·Sæ�5&iÑìv¬�8KÈù¼:È�„ý5ƒ�~š�/¾ètü»‹r®êêj�Ô·`Bœ>]‡dëGs~À_“-~x!?Ûy`è[œg¬¨Vž Td¦hiÝOeœãçð{‘ËI%¾Ñýt[9òK4„m*1pÈx�“©5dj(üÍN‡Ñ~õ{߆ߦxÒéÌÑ‘"ËÄ»¯~�u÷s¸0!ÙVU÷•¯þ?yƒpú*R@1,WeÑ›>ñ±†2µ 2uNÅ 'ó¡L*ãsßO}U½®S‰à3XÍVRÿUç÷jSJxƒYÁ([Ë]“ÒjsÞv«ÑYì\þ�¢Åfòbu[Êy`0ê̎ꪭ»ÌÊ{Àä…Ñ2æþØ= vdDíq”áâ<Í®fúªTáøl‚„Y7H¾2�ZAƒï&c]D�FR·¡T)ÃèÛ�÷]JFì$‡ÄÚS@gÐòйÁ%îDÎÙÞAî¿aá˜"©WÇEŽà�(Ÿó0Ê$iÿƒß+TŠŒþPb»mì'0R_ÍÆª¼ç…” �¤ÂÌh¿ÌUO’H— Y²Dz K`†ãC…qRaÎÃÈ“¤+¡Ê �fÓ€!G”ÝR“Á�Ø”garÔWR…±óÑBôº`‹W~@ž†¤³Å&/¼& Vƒ Ôa»nùû“Óð»A‘=²þ×úwäÊeéÅ œ–O'®Ê?Ý&Ú*ø½C®Áw4(í¿è ŒœªÍ)6…H嬰TŽ÷Òu÷xÌv\ôy`˜ïó!û½¼žBTYeUYžß–R :m/QB}×C4t©ÝO.ò�Í$¥\£"ŒÐš8´ÞB¬ bHE^€ˆCÉÓç_UfF5 Òb¹DlÆjRañ ©¯¢˜JDÄ€ªiTÄ£„Õ΂ ŽÅÊÒš54Êj BäN&òbs¢Þü@^˜ÓƒPç)Tþ'°Ý�û» ±šëðšj±Q•�È@hÜE†ßdÆj»Xày`ÊùDÉšòjµ\�Q¿»&h}Ö”"ßÈ×*®ª3^9¬.QcCCk.Ây:ò<4^¡ •¢Ô3É >/?D²!£Âé»GÔ›ó«ô+Bì‘Üáö ¬]ê�zÂ+BÞ1‘i†�rhÖót½(sn‘¹Ž ·â¼¾I_¨âª ‡ã»k–+¡p¡õÀ,›åš�~¡Óò)5=*€(u6z®ŠÎµdʆÈk°Òꎈº£œßYè<0ØàQ¸_È‹bA­9Ö¹÷lÒ¹ñ@R /¤ B±U”&¤Î}x焵¡®_’4?Û� Œj–¥J(Ì•¤AfA6“úŠÐGô+«œ¥ÃÖë ªåÈ/åT ¼B'«fêxeïìÖ•dÔ{馡ÓúݳÏ$sÂÌäÕ,èª ÉAdX ¼�ˆSáõÐÕ‰*½È™˜ …S©2N(ì‡Â¥y Ûõ¹Õ!µÕ¶'6óòhÛ!¯‰j•5ÿõÝqõ‹l:(D¦A�¡£z‡C^~qOy+áŸÚšX�ÿj €éÐ>W?ª’ÛƒS•¥K( C%é‰RWUrXÕWG ‹TLŠm%þÞJ‚¡âÚ¼DÒRÐÒû¦Žœê��°8Ò@ö�—_GØHÚ U_|\œÌU�<ïïø¥ÇÓ–yÉ”P¸ÜóÀJð¿_‚8}ˆšQ<†¿ $·èîµ’yU¢s± ¦*c£ø1|ø�š·`áЛG�b æ©ÿ-…ªb‹ûÄU #ªvØ•˜Ül…,…Š:ri$¯€ ¨¯ãÎñ Ãt(4 2ÏhÆqóÀ˜¸�y�Í…0÷ -T�Jn¸CÛ1ÌÈ(!A©M4¯Ë+áó¥Pe©?fΚ�E›â–\x!Ln0½õþøÁy9zoûÎUxðEX ¬#0ë0ÝQR¹� HQ†ÓvmV§9äõÇO¤F…FAæÍhÎKUüÄÅå×ðxAåá®$½s玡?þñ�\W>¥îOÜøIä]ëY¯Ÿþ÷R_Àï sž-ë.ÄYae{ÔÙnVŽ®ytï¸cx�ÊT˜˜Å€okjBݨ½-ßÌùx¨+¨#˜+1×,^}u{hïÞ½IgVÊ21Æ~Ñ×ÛBÖ®Œ÷M‘A‰�Äú|Bfa¶î ¿ãC ¬«þû9ýÄuοmÕæld�9ç‡[µo “îõ€á‰?j³7›»ñ~\˜Æ�D–˜yc,¹ŽHlÊÁ7µÏç8Q}º(0Ûqð_tÁ<ÝÐ&$«é£?<̆œc™ÄØ‘mC=ÝQmsúÒ“%J’œŽ –:‡æØà`2 k‰C\¢¸•ÏÛ½kg„jê­6Ú*» Zš�õq"3(3O�5û‰|­/L`ŒáËç$ÌØ‹gjB±A��°@V -mù™7C¯{ãâЄ]çKL%ÑFß!A©Ávïe•þGáÃrã�K#š�@4PUxE#J¤–!1³Y`dX+@S½!Â1KѨW·mSG޼¡®~_½ª»ìr)+/¨(RÍ#rÒɲ© ·m)šVù‰ÌL øëMg Š~£ŠTÖagœÍ@Ú�·¦Ÿ¦S¡!ÀˆÉ ÀûГ¯éi 6U$÷�qC´2=”ÔÂoÞ¨£ ñ!ö¦Â©ÁüˆW4 ˆã`úÄÐxáß2}dK¾|ÙD„¢½ž^C®ÁA"G� ÏŸ?_ÈK`=ˆœtý.§}£M7ú•ÌЯp¿u†Á2€~`ûOHb $LûÀô LïqM:¦Í‰ã m |oBÄhä” hXNÏ*Ì|e§ï~9AF4ŠÊ8ß%Æ£±t×uÆ™gÖ:1’צP´cüK…û•D0 ¼If½Ôž3‘™'}fx¾aqAÿrÆú5yÁÚ‚2¦ãÌúÝCY›a6ä ÌeLUÁA™d(Ã('¹ž*0D“Êô˜8Ä~Ñ�7$Í•é|i“O;-d�F È Ðë'ÓJ)0çá�Úé-¨¸ØÓO<-™áYhV ŸÈ,JÏCÔ9&n-�ý÷súù†› *€¼´åçÊ«™Ïþbb ù§@N ×líç:û?¶k“üYøÌ“ìµR;øæh'O„gF* �eö�ÕÊ£�Pt:$ßQu}¥#°ão¾‰³�Ò‰æÏ¥˜—qÕ{Þ«žzü·V&á�^U¥æÍ›˜ß¢õÀ\dq)³&Z`b�dµí^ÀÚ%fª2Ýé"¹ÂÑì&FΟ©.@Dˆ„ iѸj²Å€œ8*©¨uˆèB¬Ç{¼‚…Àr’^.Y¤ûÕ� 8¸ñ¾ñ' z`žL¥ðŽ=ÏÖ\Rh=0?àƒú°NdŒ‚Bñüs¿Óç)VU6b�>}ºZzÉ¥šÄy“Y”T€0¡Eh`Œ¥ÝPgDhµV *¾.(/Æü{?Ÿ|U–ÖZƒ|œçŸ™ÌÁ©#�Ï q†øÅà@dL^&烰ª¶ ë}@h××dü!0 À“ŽË>Ê6FYnœñBT�ý`{Ú Hq%(u—_Qð9ŽŽŒ¨'%€‹qNAQÉŒ£WS€“IfnuVQBAí¾å{é ®:ýüL��™áE“–ñ¤ƒÈC3qÜ÷ksã쬿Cl Ós ëÌÄXšÛV— ä•u¨þ“ÒYާžx\“ð›õ¿ËåªF¦u65*C�ÕÓk(¡Å˜Ðð¾”é­Ò X ”ŸÀ¢†Ü�–è;jùß™4©üó N�:Šñûø›KóƲI\ÀÀ §z`‚‰Õ3"üj0% ²G¥ê�™ê,¡Ehi§}âtÌê›âÅ A”aºÁ4‚9òM` ¨�+@^“'×U€ÀâêäÉmãÖ—i¤•u=0Azüê¡_$Õã7�¬×*L|XÞCBòÌP‡Õ¨é‘I�ÝC[6oØ¿ÓZ9ëù�[ºé;Ô"¤‘È©‚¸Pxuþ÷_)ûýšzЛsÈÊI`� ä`ü�t&Äb…é òǶ­[´é+•*ûùO¢nút³Ü$ÿZá&Rc‚c¥¦ª�`¿³¢º  ™ÈmÈ8OÜ!¹0HÎ�´ÓwèyO7�†ùVRD ��EÌñôíÁAè­¼V9$Öä¼ïÝð˜/ïqÉ lËöx¼ÒùAbwÝù ögõ>Ô¡ýY™ì0™ì—ÜHu|ÉQc·Ü|OVßËYç± 7ò¢¡Ac=J,¤+§’#*: AÜßS”<„Åý3_¸¹¤ó¸úY¯³vا4\·\Xµ€ïÓhØE€Œ<¹”PI…¶Ÿ®Öd„%¶3ý\1¨³Ú…o×ûCq5ú˜ÀÊjB$‡gYŸ•ÛoÅþ°GÖª¹:¹ÄÆëSžgæŒä±Y+·w|H¶[ü·õê-§Aã3æ…™å¼ d«°‘¼˜\‘ª”°•¼l¿6¿cÍó‰aÁ<ÐL9S³üYZ ÌM�Ðßv¯:õ/Oéd€àà+cŸ¯–?¢ªôé¤RfC_Àµ`Áµk×~uÏ·¡ðßv”Õÿù‡Ï¨GîÖ‘‰0þÍm?P»vŽF)‚à8çàc³*8CiAyqƒÆ+È,Ÿ²â6šŒ˜¨QçÈÌéýG­|Ëd· (·Q xiX)qšó¼ƒ°8¹¸«7’�Ã"“®œR&eeÐÐuË8b½CXCG†UÇ ŸÓǰ"ˤڄÀ,ÅÚîõz ¹Í†˜ÛÕtC‡VW3�Å$.m‚©¿M“��Ïl¢lø¡ÇÈx|ž#4+æ��ŒmÊ*Rî„©(y!ðþ<0÷#›ï�p ŒžýÞ ­Ç 6WCP†Va1™�»àª3Çø¼68¤…Ï+¯º^Å~ºZ,_õK¯‘r+0ÆD>¯Ã)Lƒ 47©e¼™ÅˆÏvG™&” µôŒåÜg¡œJ1²ìÀüR�ˆàׂcƒ²JZCÕU{îú=ï,söácÍó2ž¯Ôëžü�ÊE`ÛÒàÍ~ªkJ TVýÛëtÈ;üYPR�?iYah`ÑDälÛNó¾L3ãZçsÈQo B¬Çqf(=ˆíUµW, E±Ìçí8æŒÖäqåªfð?¶N¹Í……Àœ”œ²£qÈ þ¯ls"›AnæÄfF�Go~¹ ¬¤Qˆ¨Ë…Ò&審S•‹Â“y`«L›FÓ„Pé¹ÀSqÝ2�…Æ)úK5™™ÌvGSÖå*#âøNOÔô$1åypÇæ_ §àý’/_¦~à‹cæÈ˜ë0 �# ±ÿ‘K#ͧ)PÓ‰Ëb |û‘‹CêÀµ£YjÝ«f¼4¤Nß3¢FÎ?S¼v^2„ëA™%ßyöKaˆsø¡D¼WIÌyé(p Ú!f)�9?p¬”“™�ó÷:çï¤QL%ÉK|Wi?È Žm» Ä ^²©V òb2›ýØšó C.'@^ �Öì'þ¨æþr§&²7.ž­Îù·­zûÞO�¯×Í}x§&%„âO͈í[îJm]rû`ò;!°Ò«°�C4µ ´�XÞ# çšÂÆHJPb ä**ŸˆM�+9¯àÐÕgiƒÚ:Q=M�ñÒ!õÚŸ.J’ÞWm{Ý!º×<Ž/óÀ ÃéÃ'Ôüg”€9ò–Øà–6Lk¢ëêðàoèÉz`˜ós`.ûcŽÝŒ¢yÍ¡©$ À€Ã—Õ¨YÏ':§áËÆºÍ‡/›£ªÝãùØ/óÀ0Ð6,+å@�B0Èñ“¡ ×åK neÏÆ‘ZI®vT˜§Jj{mB�9dÕªs&(äˆsäB€•‰Iißõ µúx¡rX�Á ˆîÞP ‘wŒXjlw5 [FZ£ó_åQæÀ—•mM¤·ŒlG—\ž Ü@PG¶þ³Šþ¯äŸ‚Ï+ôäkÚ”Ÿs"¿× sÛð˜Ï)É{úiÒ€|Œ|‚A¨ÿZVˆ ÅË(g2_ÉÔ[vÚM%V‰„ÃABªšHÈZÀ™ú�Ù”r ëÇ5Xgä™+wª¨Bpèê³Õ”ƒÇ´Ÿ APbgýÇv5ùhÂï0óù:¨ûéÿ{iHÉ1ÙáóÛß4¥XÙÑå,MÅì·ðÛq\@™ÅD8×vS ¢mê+â2 A´x¥õúaTÙY?îÐõ“]ó ’ ›D‚ƒ “Eá³=Œ~ iS`Æ/ é÷{ÿü|­ÊÝý¢£F§©©¹A­±_løò‡ì†ÕÂ{6éðø¹�5Îof#¤XYŸ}tö쫃¿'Í~Û¨ÿ ÑkÛk+i¿r÷Ùaúî Œ##–ª/FkóÉV!xbXºë|Y;¿ò VWXÜ 5•¦Lø’vÿÅ¿zâGAHüñШÏkç­�þ¿óªÔö¿¾D«²©CÇÆEÂT’cõ•δèþA È‹ÛŒÖ ØéÏÓq«¨ßkñÃ}(�!8‚æ‚é›_é` ú!Ó‘i7ª^ è° ¥‰ü^\;)ŸcmU]&i�û¿õ5Q`G&¿˜dÀ/¹ТÒÒëëVcã `¶�d1ð†ªª§>°–ˆÿëšTÔO6Êmˆ-?*±ØJ¯«�mMtLˆÎ%kW+ÝÏNV€Æ59¢L.óMç›[[É_žì»ít=-Æu­ ÏP‹ëärìõi˜²/Ò8_Û`Û…©4¥Ø´2Ã1D:­.õÕFý^;‘ŒœßuÀÕ'âêiÛ2úÌ׆ïèä¾”ÎÛEßµÖYú ¹ŽÖµ©<â#ÊM`¥N)•Kã„Âj „£qCj÷8 ~Ð èÀ<°xuu�* Ì»þÃ�q™à=ƒ R¡9 ±xà9^ÍøC %Âô}sJ#EvowŽçÌCk ò‰¶@aA‘‘*ƒë3U-]'¾·m…ö[c;�ñh¦¢Ä@7,n¬âoÜ|«ÂE‡ª®–§[ ð7y…IÝ€8êHå½ôýU{†>¯—Õ�¯‹ÞÇUŠ€ ú¾A"žl$µ)D XFˆÌâÔß*äž”»"3rØJÏ7|™<&�ÀÒÁjœˆ &é;Â<0$bP‰�úL¾°°µ„¡äM5�+UŸ å…€¶Õ9X£zS”Òa…ÜsÕœý¢. ÛN`Cù^h™,,�‰@�?X¬’àþ*J‡þµ'�zyÌ&Rbå†àŠuÔ/ã\)G7ß-SÙ´àÜ눇èœ=´�'°v͆ù‘‚;V:K?}WΖ¹²]°�D3¤®×Ì VÌã\…¶À]á¶Ô@y�¯æ�-s nmDÄÕ¥Ù2üVè�WP ÿ�L Ø'N‘ã0U†IáÕ¦8'�ïó¾Fâö2I†Muè¼o1“©»¾Ã:Æ "\ª¬ôy+~¨’fË/!*:lñ’%jÛÖ-z‚q1+Ò ¥ö N¯ªRGGF¬LÄ‹käßtl&03ÙðD¾úL5®¾nȽŽÎK±>šjŸ4çåuñT÷Óô™åÚ÷VŒÀh±‰(8[~­e×e5®[®_·mÙbݵ�\ë.¿¢¤ßñ™/ܬúùµCbG-#¯éÎoó~i þEm–êËר� DaSæc¾. äÈƒÄ˜È ü'@©I§˜€Ùö¦O7õœ^¼ ©V6pÐņ ߄ɸN–‹¶?p�ý†¾™6øÜsz :¼|dXÙX ïs% ,lÙ½Hrx)#½_æ�Á�f.A…Ü뺹 Ô?‰ ±fŒÌ¬Šøs9"#òü–ýë×§|/÷AP!„¨_°‘ ’äô|­“+ô½qIØFL®õòü–_u¤û,÷Á;�z`eADÔ—¦ì3#xM�ñ<°=»w{¶þçC¿Èj�ßá‡û õÀÊ‚zW%V!¢°5�£¶Ió5'x¡X:<õøoU*òÅ:l ä>òP`Q!°ÊÀÊÌdOŽzM…yèœóÈz=Ùøª÷¼7¹ï±Û¼¬,å>xæ$a ¯�û¥øU•�)ú^›S7õy¡@�<Υæ—^TùØÇÕÒK.Iªàƒú°^6¾ø¢Þ§’)²ä>äŸÌ³9 ‡¨¯J+0cä²ÐTÇ“«›¤Xi�ÉÏÜi§¶c‚´Ü‡òAæ�•âÿª4�¹F¶™ã†Bl²ý”z`A  ٌ̳¸–^¥‰�CØÆ‹ÿ—]¶Á%‰m‚×̈�ðÉ<0&0ÛÌt�®þILØxÐè†%ºÕ¢æ� ü™VRD,%Öà˜‘¢%déœ+6#®´ü7ôô<0�@�Õ@ÕÌ•;Ryfþ6úÁ Ó1/¬6×*¡�ÀÓ˜má5q@YàóÚD`6›‡Ô¨­¹UšŠ@01x˜ÇU‚�™Þ9V OZ™=fs °†G?sø¦˜ÀûðÙ<0›”+0 à–µ ‹Ñ5‚¼š-½F™&øäÂ@4diy—`ýå„,NžË*L̈A0`›µEÔ—¥ ÌTa[‘lXj ™á“y`µôìG-¹žÿ%áó˜­¥UR©0ëBêe˜À&È<°¢?ßfø¼(0Q`ya5_£…U¤e˜@à_Hø¼å5e»� †ÓCÛ¥Ù¾U<¶)G6®•_ÇB#rˆSã±Y…uZ¬Â+àƒy`a×ÀºÒˆXv=B`T˜µÄ@ùmTa2L` ¤XQÕ Ì‡ð�Å%|ÞnóB ‡•*Læ� ¾'x�à Ë Ì �6«0�@P°/>nÁµ4¹ø¦8Jâ”k]ƒ)ÿ˼š#üþl¶·¨DVVaý•¾¾¯}õ¯Çì3Îg¾x³~ïÞæ…í÷}÷;ý~Aüþ"\¿ž뀅ÏïDÛyÛö|Žw¶M2?ç»�²o„iõ:çsQÏï—íS,E-&}VaͶª°m[·DoúÄÇÒ<€²}‚íD¢º£ªÔ÷Î>“AÅ‹FÒ\4ɾ‘¬1!"L”ì¼P7a" ›�ì­t½Í”3ÑÏ#ÓAz¨Ã´´Ðo¥Òî¼o0F­ˆž‚i­³~5�²�Ö#h§ÇÈ#8á}ç{ºŒî{Ô¹om)î)æSvr¸µñ{qGˆß+N©‰ºè\<³OÂÞ­B2y¯dßðŽ3G=(ÝaÐÇ.‹ë…sdºÝù¿W¨D Kšý‰˜°´™ ÖQ‹õ^ø�-ÂJ" :0­JqO;é³ù{ ÷›ýµ ¯ ´DØ,·×:Hò^�Ø€1‚·¤.â4^å÷ÆÂjŠë¤‘p£Ï ø+jeLÆt^Å,’Ö#q˜®ëéÞ›÷¯qó71î3+g=84~Ǹ²«ê°-5¥*FOaÜÉs" ¬ä`ÿO»Å5Í* ¹/ò[x!ƒÜ+3yo\~ÙᇌQ»TIÔ ^_tpdÏQÉ6½ Ý£ZV’K2g˜ ø]ûèÞ‡�{ª«öfñ›ô² ÒUªC`$yo°qX”F!XV{H…mS‰ÉÍM>6‘5:ÿ_+�âWäx,|.]¨#f«Ü0DÓKpó¢FÀÐ RþÄÑ’e[ívŽiT£A5&ýP…¾?¤¤ú²ç‘g惹®»ƒ®{›:Š9/ ÷÷)ÕwÈ<°±÷�ÚUG ¿kPLߣº÷ýúþfúþAù5¼­À€ˆÇî%ÔâJ%#â«Mš×Ø� �ö1ºE$œ˜H*ó;$3œS{_‹=W(˜¶qp4:¹Pš(7+AQblÂYå¥kÏ�ßKäŽû‚�ðyü²ÐE‹|> ®•¹xcÀJ´Rs¯xÐ.ƒ;+0~ÈšèõŒ¿„rçõÒµ# £Î/ ¥P¡QþjyäroS%hõÈ�ÍH`*©Œ¥ö—‡¡Ï%©½„ÁÕV:Ÿš@ 𠸯“à XÔ%©½4by±ÿ«Ý‡¦D�À¯XTÁïæèC1z�ÀÈÜ7¤µ×H¬Gdn˜@à#„]è²@̇þS`¦”®÷è½S¢@ Èb>ô!� ¸¤µ×T$Gî‰)Q ðŽ+7Ä|è73²Y„½:Ñ’’¦F飘X9Kˈùп Ì”Ô^.¯�t?bJ© æC˜§Ê«¤QaæçvId+؇ æAó¡(0ëI ÿG}ì@ñK�Àk`+›Ȯ>'0¯‡Ó»ÐFÿ ñ‡ 1ú\�™?n£—o4™¹I“Q^ Te­ÄLV˜fú(æC§•Šxýf“™@BëûÀfýíeú>¶(‰ùÐÏæªÒìùŸ’âFé�˜@LHåå€(0ÀÁ’¡õ*QK Té\r5䪼Ü#·>LñÈu"œ¾™F->Pa(CåWTa0ÊÄ rë 0èV£>Œb•™ 9”5R÷Ìs(G=“WLЉK�Õú¥ü9™FÙÖ-þ°¼±®äU `”-~Nï œ¦|1I�‘báB‘X|Q£sçÿZFÿÓ:ç}E+ ²‡Ðì[:K›eOsžÿÌ�JtŒ‚üQk ,Ki10͇># Ð_¯üUÙ·…ž0© )ñž@^#5ÓäFl‡˜‹ˆÉºÖd ‡Ÿ"÷Œùax�8ÿ›ue„aæ-‡õ£•^Å|$£ÑJÌ5Šñ ‰áÿâ*ΫœªYš¦@P6ð€¸¤ˆä¿g²ì‘Û,fŽZýöCP"›F»Äù/”�ÀJ�¤ïK|ÝÁ$0_š ƒ ‹ÒÕ/“œ‚² ¶ ÌÁJzí“[^x)ˆC›�N=F ®É§2œç‡Õ‰5Èh-?tÜð9Uÿö:ý>¾�Ú°óÕóÔ/ÕÐÈë ™û±UªváÛÇÓÐuKò}÷§ïPá9óTÛOW«˜s,£¿í^µöé_és |…C¥:1YTj]qAÀà[3"‘4דL¢ýúÏjâêüåÔö{Uë5WÛþn]’´ðš1Soç…ª:S5_u½&°•Ϋ‰È—éõß`½–r ÈêK̇AU`Æè�º6#ú¡1P¥f4ðpŠÍÍ ê€Úmñr²QWôåçõ²úÑkkw”ÙŠï|5ÑcÖÛÜhª­×J Jkå»>¨U˜À·í½T�•¢Àü�H¦…ö4äUiàÚÖù¥±ƒ�`ökZö¾Q¥å(0(*,¦9±ÑÙ‡‰jËmjø ¡2<ãx¾‡¨¸­ À ŒG1h0#öøåáÙ}Ë÷¬¹¨i»6«¹½ÿ¨,%Ö¼qˆü_É¡·CN05êá÷ÎWTŒ”H®åþ;“ê gúÁ¾B©ƒ8xî—�—X²!øÊŒŒ,¹\Zd‰±ÌQR&Åv¼<&pƒÉK÷:×|\›¡Üà[ý›ŸÈ ô1JØ�ˆù°D˜ìцW>�Ô,(@LXú6<–q?˜ü¿;`v„ Q7üc¾e¼DçGÿ+K¼ÔyE�y ~2# J„Ñ#œÊ äÕë�WÇÃßOn)a;CûÈjëõ+›Af«5†ãY…ñyy»„Ô{¡R˜�–ó¡ØøÒŒ((àÃbÕ´Ö!(*�Mrôô¯Æ©*„ϯqHÊ$$Vc|¬n/ð<Â%Tw ÇfcÀ-KÀ5©�Dâœc0‘*J·=U°†éÿ2œÀ76P‚s›™çcr«…ÀÜX£ÕxWú�À¦Ø­jþë»jÊÁ=êDõ<õæ‚ Õ—FÔ‰šùjæïÒËî¿ø×äþ溪-¿W³~¤&}]�œ~¦yÛjøR'«fÊ ”R¸²Ä˜ìñë÷]¥æt˜ê ¤õÆŸ4è÷ þù ‰m¹Uý÷sc÷7ÖáõŒ¢êྨ�žÓýiýA¢¾ VIÅ<)õGR¸R,=ÈïÅ�£9?Ø1R^û›þJ«²ÓwmÎúX„éCyzßMãO 8ŠíCgòŠJáJ!°LàÌÎ+ƒôÃ�¼€·r0”%6û±4‰ Uª0zî�Ä|(–Q…õÐè)„Z3Ÿý…Î��j >°lQý_ßÕ š@ H„ÑS%Iæù2ä}ò ‘4«DÊ–¿ÿhÇÒBpF®$ÄAP`g?Ø®Mй Í˜vø„<Í‚\‰&Lo‹m>dõÕ#Ó{„À²Á"°&¿Øð•—rЉ &BÞ6Ýy_Y*0i�62¬|Ðícäž»ñ°­×'˜½`+vˆ;û¿¤p¥ØÄÀ g4¥;2”!³b`¢Bhü9÷}Y›§í~Yw˜aõ€Ã?°[ûÁpŒÖ(ºNÙ—tĵFæÿx‚ÀŠ©êš”džËS…u‘|÷�¯ž§Ãàñš <ß Yä*ÿæü ’ó¼;¤ÆÑ!€Ã/>0"ˆÅò( °bNbæ¹_=r{…Àr§–ŠÀ¶í·ÐU˜ý8– 0¦ÊhŸÍ±A1»ÈêKRG•“ýò�ajNX€Áˆ³`P)RSêë ɯæp¤`´Hç“ÔQB`!�sÂ|ŽmPÕÎÒè�ö‰l0SÆ–|¦a€°\çô{V¡Øƒ ™û%V� ëQ£s¤N˜~×gisÞvªÑê¶ùœgñ¦åÁV°Z¢A ®$x£L˜âÃÿ©‡:••Ò�|‡!Sù¨„ϳ–Ö·Q4*¯Óz�IŠ :ÛúA‚ô>y¬óymSôº–Žk¤}¨“[IçEz 6D¼ò¨Ûy_ï¬kp}G“A¸qºÆ!R‘+Ià|09µÈÏ[±R1¦:ð ¦W0¢À ÁzmSŽ?@>0&ƒNZ Úàtu´®Ëµ¾„¡RøCÉTÁ> /êÄøÕ˜†ÑL¤ÓA¤µ‚¾Ïœ®²[ËÇ»F世´mƒq�º}Ò¹“ç“_º¼mªXê‹ÀæC™û% ¬ Ñê„EIΣSèðʵ# ÞLË!Ip€ßrý¾1cÝvç·î0>+"¦£-¤ê âÔ‰u“ZJ7bãŒwö‡²¯'U¶a‚kn"b¢kYíP�N´�ß; ì›Ç8U_ †IÍ÷È-+k©C[éK>@óïý¼�×Wqs) të Äh‚(ÌoQc7~Îâ|0ãA��t±8 3R7M 'ð6Š©ÀX}‰Ë¢Ìð£ ÑSÁ4ÂïTv¦y­°èzÔhý&tµð5ñÂëI)±Ÿ¬6ň9Â"bŒ›¤—! íˆsÛ-smK5Ÿ×·’ÏG×$£sûp¨@õR£áókävŠ+z”G‚9¨#í�æ8!@RHÕFKM€T`¦#…Ôí¬oT£An j;ŸÓ0b ÑïlK5 h£mq×9ÑΠ ×±?�~S˜/ÛhÚä'´Å*dÙDÖ€¸Ìý 4ö-a�ÿ/µ5Wªs‡,ù?õïUäszn^V)îƒ e»8Uèy  èûÍùÿAÇ2.¼] 0û‚ç€53yÉ IX)TX/—Y!%ÖcÉÔ¬F#—ZH!‚\àÓ1'ɶ’’rß¡FmøF”Þ)çý$c?ýÙ˜´›BJoEÌñ:|oˆ¢û’¿ëóDz­�ˆ\›å1ýòhfuâ4¸Áà$*åësV`…Ô“¹_B`¥MZE羊:ú¨×ÔBª $¶"‰ ©âgÊvD¸Â‘Æ�{UL`&uÇSÂyœ""�fî÷�Úy§øc&Ä¢eŸûEV÷³/ä·&·AAáÿÆ\ËXª)Õx©Ú䔀4Ø5Ô¡6ÙPì’&Òö8¯ËèÇ�ºLQ"·ÕÔ(ÌŽ¬ÏEÄ­†’гÊL3�;d¨¢¸ÑàzéœJöÑvåF¯Ÿr¦!øJåh2”ŒÄb&‰¡*Åè· íªÝâKŒTè{Ñwð´š!¡ö�ûƒÉ°ø±šæÄMtÝÆ4›.£ïD0V\��"f? ‰!Ú'•Y±$®/ Œ~¸A•>’/TÁ‡£�"ý~ÛN÷3êµN2$Æ#éV# È+Hvx»?ÿvk.jÚî5÷—;+y ksð�ñ=h3ÚÎ¥Ák²::EyóT�YYÂD`ÑRÜŒ)Ò Þx)ây‹u.ú–>¯©Öa¼w/æþ� ªòÑ=êDhš:xí<ý¬ÎÿÞ+ÉçuöÔŸONŸ¢½ûl5Ã!²Ew¿ÈÑ¿šÔ¦¹žm^w¼:qN,U[_O~ˆM`i´‘ÿÈùgê�öÉ#o©}7,thMrävöl%(gûkºÈáÍÖ ÌIáÑž¹ŽG|*�ïö;#·7çUIKŠˆÕ§ëçË’Û�çï�zËQYPS �מ£÷Ãs«qž{<Ë™•f*9þ�˜UàÐúsþm«nØ 0�Î9?ܪɊ:È ûlÿëK&<'›˜$m ß.Ÿ!YFì+/H €ÉÐ$¥áËkÔÌß�›%æ/›7C› €Ð“¯%ˆè†Q[7Þã¡À6ØÙ…aÅG¯VK—ž§–^|žzö™Mjm÷zµ`Á\uû×nTw}ýAµqã«z?ìÃëQ·þe£Z°p®Þ†ã~þ³'Ô®�ûÊvÝTS®•ÊßäT¦$m?õ}wú}¬Ã6çëúت1ë‚„™Ïï×~0<¿‡‚Râg™ý]£$6ELù>Åä þÓ0Î|þ€šýÄkNã?[¯ƒùŸÍÆÏ™<¦eð— ²ÃÊ–åêö;nÔ$µ¶û×jæÌêðá#jæ¬êÊw^¨_“�“±â{dýóú¸k—שއ:Ô,cÿ2A—…p–Á4µÖÒØ*‡Àú6<¦Öüæ'zˆgðoïW¡ª„y*rÁe*¾�êüåô²Ö 7ìÓ|Õõú<+�×äú3õqx "@X0Â<ÏÏ'|XzTNþ®ä(ýà›êDõ4y…Àü˜ø`:LlXϦH)1 –šî<§xFaöaÍÿþ+: AV؇ªCï>[\Ͻg“öWãÊ ~2�÷X˜Ž8r6Âl±„Œ‘üÞ??_ïƒvãf¨7Ž*äˆF1OL (/(§•ÍË»M«©[n¾'ëãaF¼nùˆ&AøÎr@X�ÏÆ‘N9…\ÛB®ó¤¦GT)¤†Ž �=‰A\P[ì#ƒêj¹ÿNM`¼_}^& º˜¸4i]¿P“€€,íÛöºŽF„°ŒgƒW(3d–GÀVªHCó;B`vŽÞÏTs_Ú©•6;H £2­Ê.ž­ÉŒÕ×.G¹aT·ÀÝ!dWOp¼a¡´¢,âÁÂþ0�Ò®�û³:¦C¨.XïÃZ…�³@�Ÿ ÛÌÙfªª˜k[ÌužVYEU"¨#škqÄÚs/ÈÒêxøûcöa“!‚@V¾ëƒÚ”?Øjò¥"Ï8äràY®®Éÿ?‚8œ�ÀŽL€ùÁ‘ˆÏ1MŒ�˜@PbÜû�[õë&G9!’að 2Õ·¿Õ§¾„Pù‰Py(³¿¹ícŽÿˆ6!Öé…�-3I­µå3 æ?�üX %6 õo¯S7|.ùj Pi¼È eÆfD>¯fUò• B`A�¨Ã¥KÏÕó¹ØȸgMŸzä׃ꢋÏUáÝãÏóááX(.�ÝßÜv_.EMd;K]¦‚©Ûñ²&+w×ó¶œu02:ïÂîM3#«1¼rؽ@ &” ¤L“�áÓâ‰Ì&@Z9mdZlÈçXÕD>+·ï+Ózó\鎂‚Ér �@ L Š Ìײ¦Ã<ø¦ü B`�@�˜ÂÓm¨ÚȬa†ä'+)�"3òmÁTWŽ6�@�”@¥è[-½Ä6ù•„ÀJ…¨³´ë‚“[­,©> MO ˜�Äz�—^¹‚@eFXì¼m¶‘\ó�k3N�BFp›¬*'*ò­ÓŸP�@¬P‹;/ò—‹ÀöêÅBÄËô=Ú_3wãai …3èípú é3<„Éjœa”¿Àk…¾¿ßÇ·7néuõ”±Šr›²Ó±?¤|p@ÏôÁ\«d@»P‚(0Û9rØ­S‰¨¦ βÌY×–kFó|α±<�øXí.úƒDDÙcé3ÐïÓö‡7ð‘5ÚzïB`�Ј¼VäI:©€ì³“¤éüÿì�={*džç$)’*8•»³îÒiÕ9𠄺tHUJ*»C”©�*»“ô ”®@]ºp:§ êì*¸sç̃ž½ÌY`…�„๯k/Ø]vv™�y¿æKˆW§7ôTÄšlΘ¸ÆV °Œ—Vÿyî–׈íØu<_q2câ €cÿ;!ö ´Ð+R^,¨(Ì™+ä=žƒ’†ûÈÁ)<6 òó†àˆ¿C¥¸X”¦˜å{×å«y/u—¯–×°®«ñ{‹çN(t&Ì×áŠûØï=7ð”hØ´ùž¦ï�ݶs¾?c*àÂý,ô¹G²ü´Ýóáy›qÿxɵû§÷¹µ¶—ÏíÃÐ¥òaÇ�S(­QüÞ£7fï'§ÇYçw¬ ]gÔå¯;ŽÇðyzèÊ"Ê�yw×|¯)¯íd×ÛÀªqë/8ò‰ÂB§ëÚÇr •:\Û Z|:a�Ó¢Z–¦`Þ2ÿ�Gi»Q�‚ìëÜ õ#æ)®¹*‘¯™½C·Ù;P)àþì”IŽ_{÷>cªTüò*ö¼“d眾•‡3þ—ô>ïÝÊÐËž»æ®éP0ïkù²ðaà{:JÎO=+*ø^˜¡¶˜ÿNÎ .=|^ªÚJ�½‹VËmX¦uuã„gpžÓ0|¾¢¯gä<¼¥iî c €Úš×wÃçB+ôn%ÞÔ$ÍC¾wëð奨2v=„h–™ àó)°ì1BÔ… ¾ét¦™0Ìã­ê´ą̃Àâ.ôÀÑ5Ú *­™âIÒË�­9!yá•5=n<Û{çÝ7ø_FΓšya IU˜^}A~ùg(zî� 9C[ÃùPKþÛƅݱ�a>Œ˜%‘˜–¿žaê ”¢¾fÝ4ß*= Ó†Yµ%¯»2‹˜‚dèBzxgi›Ã(¾�—TpwÖõ(·g™awï—†–îx�µ�dÎPÉœ÷díe#'ñ}–�Dzg¨-xn+Óçì´Ð-9èö̽«]¡H±÷’cÛOË%;p ¿/爵2£}í$#¶=J BáxÁéÓ×¼sßÍž �0?Ç?7)“æŽCç—ðNÂ|»aQº×I»ZŸFÈ)ËYXs�I´mÒ2¯qʱs 1Ôg¿»@oT( ×ÞÔ¥`¬:…ÿs™ôPüwrÏ ž«¢<Šçpü:}†ee:þÛ‡^¬¥[ áÃË«Ó鱉¯‹EŠ«DC—oË”gñºhAKñT,Ó(9#BjÓÆwzªUç™x41%A£íVÿ5EYÂÛ‡ÅaÃ:CLç9ÏÝÓ8MoÈPð݆‡ðéûTpâä¶$ˆu ÓòŸ�/â3ܹP%ž¹jç¸�äòý`Q8›Ç¯¸{±ã‘€PàeO–xo«h²ŒÉûÚr4 W<†g?PhÔ78h<½ÏÖ)Oe´žëÞÈû€ò‚bÌ©ÕAH� ±XhÚtE*�ëg̹{ó‚ó¾¥÷�1�òç6(„�»dõ m.=*²±rçÅò*Ú+R^B LˆÇ Òó0?«7¨õÄ›ÚáaÐþ0pJ®ö2íÿö¤¤¥ÀöA°Â3èÒ2EÁïkíŸg0Pb'Ê� «³Ë¡Uvh�—y†,L8›‰�Ûiå5ë½Æ®ËwRb/b)„ý�òè%¸ÝO„aRôDý*™AÃZQKg.Iös*¼±+£aѾ“#u„Ù>þ°'ÿsj±%!tCFÁ?·nÊf¹.Øo†ù™Ë§K6$Ë4ÜpŒŽy •°Ç3†3¿/TÍĆh„â©�lJÔ³Ab˜O÷]-Ê$´,J`†ìlŸÊîŠébì`G«Klû2¬‘†U(\G´®²ÄC˜í³Mm 6¨Ñºm§³‘O÷]f´û”�9]±Ô£»‚ãã>”Ö)çãl–¨—mzv-Öÿ®^�<°·Æ½µÜYxËâíÓpƒ«pCVžse¥Ož×û‚ã•°z®Ë*=¯ª»f•«Ñ(m»ú,¤À^œt.=‹§ç7_r­-�atVÜË<3Kó.”ý/„Xê€é<öK(¿ÏB€+ê>®ÑJÌR`¯NŸá€ã$¤ÐsõÀ�Ãw[r¿´cÍ&{uºÚï«ê"Äfaûò�K§Øb¨û–¹&‚¡Í™,mƒ�>Ú±FœÃÓ&ŸF½F˜ÿ"<̳y™\Ób»w¦q�ÛÅï÷áOþï—Éð/•Ê×qû>n_Ä Êì�¨ñܯqÿÇø羌Ûßyîg^÷Ÿøý»øù׸ý-ny<þ¯øù3 ~üüSüüGÜ~ ÷1vœËãömܾŠ[3n·¸�ŠÛf€Õós¼ê؆î…wùMLûåüVÔå>ë¼®oãöuÜþ�áÜOñ†çQü<¡áúÞÊëòYü„Ò{‡zÌãïhàfa‰ÇG¬ÿ_ÄÝo( ~Ô[¯*ü`¡q¦ñ�_»‰ç*ܲT�%ë<þ®Æï™ŸXÕÎ=f•]QúþVæØS”VR&Ï‘¶ØH~f¬ÏŠxˆý+üÊ)°eimR�mZ ±ïìu/DųwVÁÁ·Õy;\ ÆŠ­d ŽÙ®Qãoáaœ_•iØPˆq’&ö[nàk©{…ûðŽeL»¥)�„xš Q¼U,í ÚÆ¢¡t~ÄUw¡@0Xý�‹­Ã…6�Œ r‹ÖÝ ôßlRž‡Â9d'\[eúëÜ«ÍqHBy`bO¦ ŒŸÓ2“6.qÂó³E%Éh…7d YÚJÍO¹—B Lì3é°†¨0ì+ ]> PUB SUB IOPub PUB SUB PUB stdout/err PUB SUB Notif. XREP PUB XREQ SUB ZMQ_FORWARDER Heartbeat ping pong ApplyQueue Direct SUB Monitor ControlQueue Control XREQ XREP XREP PUB XREQ XREP XREP PUB XREP XREP PUB MUX Balanced XREP Task XREQ XREQ XREP Registration Query XREQ XREQ Client(s) Hub Engine(s) Schedulers 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 XoKqZd0cd9hVSfcofDZAYzncetKJqngPEwjGZcNTF9CNbKaq26Lat/SaOiNCkumrjFaeUUh2cP7Y GeVHJq56RcqIk5Y6g9qla1pKzdAaV9wvJpf3x5UCytaPvjGu3zddCrg0KGlQrB+SyVrIMizUMUsM aM9C52bjIylL4xYdyf1ixwCTa5UzMWZUy3MUxrQTCI6epPrO5YkYYzRlxEG5sGyH96QqQLPWofKu tOOqAM3WAKqfqqEF4tQb9Q7uRz6qClA3niypARQk/0lVgKZ8KK37kU1XAZqtATS6I1VjhY68UU8t V8F8FaDZGkCDGiuDKkCzNYCaPrKpKkCzNYA6PjI3nsNZHX8p3xk3sh1xKZ/ObVkXvJTPOKpwiUv5 JPfx/YWX8h3Ksb/iUj4+OnoqCZi7lM9ieH/TJS7lYzVy9ZiqYIMhqdnOp91feeylfFp1SXBQOrYz OxqDs6HEW/0Ut5hd4GwotVv9TqnkutjZUEff66d/q9/Z2bbcvX7n5SmZvddPv+ruMmdDwaq788+G Mr7Xz2R95Zn3+sn44SCUoUrJJ9zrJ1RgqR4MLvUszrnX7+hKrgtlK0pv9VPJVDnpXj/9qRncX2n6 Xj/9qrsL3ACC7vXTn5DFBOuaudfPRIbqBe7107/Vz2I/KudM814/fe6VWONn3eunr+gO7LET7/VT pCgpbvWTnalybHxBcq+ffuqUxUzylIl7/cxkQZ9/r59X91a/Y+/jO60AV+U+vnOvslW51U/zvqQj 7/XTTSczOJ/f/L1++hsqXFTh7Hv99D01KPkvca+fMC7VW/1U6l5PutdPf5+G5f3z7/XT95zQPvIF 7vXTypNkb/WT7b2eXvfwoL/RJdqW593rdxTvn3yvn5TQDm/1O/0+vmNO8dC7j+/se6wY/la/M6s5 GP5ePw0vl9vVRfcmXOBeP/3EVoixS9zrp3+eh+y2rDPu9ROIXfVWP3nF0On3+pmRY+ff66en8npr i/0y9/rp2/RH3Md32mE68ozuM+/1k0BR8aWPPb3h8F4/g6v4kGGvXZF63L1++sUW6MacC9zrp0Fe 3K1+51elGdSvB/kb2S5xr5++mSOrrD/jXj8Ztg9u9TvxPr4jq3A17+M7O5olvdXv7Pv4TFXh6udc qdzrd1IxPBtTOv9eP/1b/bhezr7XTyxm0z3p6Mx7/fQTnfjzYM+910/fbRcxdt69frJxHdzqd0zc Uu9ev3P8SvP3+ukI1JgrACsgLlTzpHOr38Fp8yfe6+fVvdXPYjdhGkqWVuteP/2CWC2NfOy9fvrl Y7pZnccVxOrc6iePKJ5+r99pNsyx9/rp3+p3RHWtBn/2TBTECvmWZ97rp68cLHZV9XB4BHEe/Pal XdXNMq7WEaZi1o0bUwntvuqFdg0S7yVliyhCUlIEtfLSGNanfS5je2iyCTnErGDmUOCWoCUVaq2k kSuFLwpr3ypRv9WxLz7lnqzgt86aa9Jn8ptNksilHt57Lqt9GaGszhhWsnpWnXsrEes0vfF5LOdN JTcZ70P924kVb9ckVqKLwOPDSu/vFazs27exRiT3ijVeX0ZY07MNYJ24M4R1+ukc9vAzHGOPzuU3 9tjAf7HHde0Ge0oPC9j73ayOve8Cz1i/6l9in562HftMfLg3m1u/c7PNvoc325WjarFv9rHd69a2 zk0CZCO6R7VvVs/XqpUKO63Nh5ydiLgGTqZle3zppm6Wm2DJQVD9W+dnJxa97tZGfm+31HKm7hNM 2CsUAjorzFvRH2k4fsCCeEsWOyx781s30/eg/W7abCNzX4XtJfWlVvd0Tlu9c+pedgUkvE+Scve8 iYQ/JiILoQpgDCELoQNM2IF9Nl334lzVZuqNjyjwNpZOYaXuUwkr21atzTb6NEaVpMK9hV1vMuhH d1Fe8zWJxeJPcLN9W8XhrzaFyc5yicg+qeRaUjjBmhNcvLVBS/dkeDzwep9djffSHt6N+Ywu0LT6 mk/PVpd/cA1LbGvwTxxeqdmy+oOOD4i2FLxt8w1epEnDwdklNI2sGWaXiXrZWtHsYtXYZutPTx/e gs++L7kq1SrwQBdvpb77tQ54uheCFscNlDDA4f60+VnPKRV628KvQU4IhypO4ZML3uA3h7EgeKlO BZ1sDOt+gcb2wR983Nd8IAC/BoQXg97i43MFjuaNTD+uc/npIIhjwRTlKhWJJhxy3S0Zpo/eDTLx hnUDH8DMLsmjhnckPPJLH3xEGOGB2N870DRfWb6/O1xECxIZWLCc9KDfAMbgr7gnj8e55uW8T2wO cJdP8g+qAVgc6QG4e/NCZLmBBP3ZgwdtHH0l0w9W8LWV8QgA+lwOCfi1hPDtAQzE5BDZQAEYhRQT BexztwFN7oLwaDkfypMEXx8QWA95Qy924OsrGWx2ZiR4t+v1pmwJG3zqBR0EFliw1/BLVv+T7+UT YDn84i8EBwlH7GvpfCglitSPqBc42V1+vpeGjvj4Ea/oGjQY4TKP4MHVvwREwpm6LvAjdNei93S0 XMo4mW6hOk5aOS0G5vWM88TSJcSFJ9zzvq04mv3SoMmAEiY+AL3saG7Bhnd+iCIfQGpkCb4+BJEb DT49Y/iwUXXDdRm+4qyODw4/iBRdJVbg04DkP40pBIJb2lkbQfQjAwx8fQ5y785eMf7Th0htQ2CI NVIWOzee2ZiUPPqwkn2WKz+bv3ZuLrNFGGkaMhclo3Hmwz3Jf4dLd7l51BaVCFTEkFANshNiz7dk P7NRB15jY8Hdc0DodMQRy+4Dw8t4xgU+DXD+05gQ2wFB0Qbz2/1QitGAuXyHdo8ljzsVjzz6r5ul z6adlkp+TWnJXx9K5Hreold+XoBUu6YjTos95lgRFNC+v4+Z4M5T8NIhKgE+JWqZ4HadBg+atcJ+ 0LoDD5LpEn3THuffazZ0WW2DpywgmMFaCXKstuBWCCAdyUAUuaq5ERfxjR5/IYsHoFB0SYSiIMfA 1wjg1BDuQodAgj9JoFVCEQ/qCsDrUAg2dJB+0ZpCGgtl/KhmHJYjvgDj53HDr1skwZo0k4fYq6o9 PfnIvHEiWvgDH+A+53dQlKAWuyBDvUh8yoWnn5WbUE7jvq9ksFBLrDAgGUsibbzDZLR5bn69LOH+ m+o3L1Vv3Yi3eXus3LgOEAX/qxeIvYwXrlsTsnMECJwM4Jdyyc9KRpaAyo0gFhrWoVl1i7HdV8IN ETZPGzLKkZ3cIqcd8iaWLKvTDsxacHjoEkS/H8z5K83Fk5M9CoKikM2r3HlHoSMXIIxIlijMH4JI LKjG2SRK3R2NEK6vtof4fHq/4wMBXFE9cInHBZETpTkkYFAfCdKRyN1BAR8OTsv5ND56eR2oORVH zUqZB4tm5QaM3S6ws/Lln+OEuxquocCvtqEG060wZliKEe52+hYIvRiN1Vp4GvzWyHFeEn/9b21x KOXhVsFnyIMPPz5KgJEIP5n1+GtkzjFJGCGVcEOZ/AzmQjpu35Ng1p5scDp8ThOF0d2HEsECUjmV yIaAP8Og57scGG0SkJytEghOe2OAgkryVYHjg0x72F8hOE01yoR7P05CEBEyWyTLXPxeg4oEbF/j vl+syKGtu4Q6xUvDc3vwD9zs1M1MXKAs6cnGweZ7TBw8QbgXZAH3xdp59QCOZM9t8YrVZvkUeKPS RgMBEKsZrO4aoGqOB26YyV6Hz4RUhNyBHeIj7WN/Ca/Yb4CB0r1OBb8nriS70WdA2FZPjSPs2CAt 7FgZohpjZu0kkETjIjzqwkn0X34ShjP9GRCFl20KThK32JEIU8xQfX7lEaCi8kMZSLSaB1DyfdEs UkEvxmjVQGqdgMtZgps1LoDKnwzuc1UTakUgyjoLbf41xb39jQcsJ3YL+vsggre+UgLY+V8NLqZ0 ouQw2TOUlhNXKUEUxhjM1L73AMyXwEp/BF4MZaR57lWVlpCoqjFAxM4SkM4dL/AsBkDM9DJpE8sN GDdRAUbStMkyM7Co0gBjn4l61NxyJwLgnbskPmpX4sCda8S0dlyV2IY0djq+oecYJwqv9C0cgxdI y0EDcEn13UhaEp9koolYF3SaofU1rYBjD1bHH7JQTlNqOy0qvTx1K2wvk4eFgT4XenECXiuViKIn FwbKYUdp55BIkTl5dBbAH2sVXhUVIT49fmA4xZ4LZlFJZp/oGunYfLbA/J48OntJSqr9nkSA8LzJ RIGWfgX2wWbe5uKkhoIQ2vyzTASvZCotIArjwMoc/hRxH7ZUDVRell8m+CANUPSVR9cAQ2OjSGab H/0Te4bWuDlNC8iiXsPqBectJCUMyIjnGtEfld5M9AxjsKfreDRn8NpDARjLOzw4DWWAsNq/fv7l 1gUAcJNn1Umq9eTERzdfQMIgOvnLZTJ425rDKxGsCRUToLHWuI5X0m3lrA/mTNZvAUG+ZknH9CYN PKKfLJnd3N8dQ2OPoGff1yKDjuIBRvdrBhB7MX6iRQX1voYxydmRonS21V1AXC1qMFJGARX8kcDq wEoxgXLIlecg/dMN9J4tk4N2JOSrKpjG07vSgD6sFzvXjoTaIAYk3208eGuLRMGKp1vwdrl9rv5X 0thnFO6MfK/sSXy4xoFbNByUSAfx8HE5EZYTpCUfLUGzBlw0yMNx30EzD4NGG7Bb8XbuHLOZrUsy VPm7vR8M+Q5iJ+gHOiCQhjEApeI9UIjFehVZoyjj7jtBuCvrlDks+7zA5l2UoT8YJQoBa5PMTm/D +owEdeUxRKXllZGOYrgEzKFcA/EVXglY2aNDhLy+v0h6OQBJvebJ7C1dh3NxrQIAhe+tC7pFitUV vCRb2oN7Z3cV1o5udn5Jor/w5425qUo6Pu+LYDTxCHRmabWZyrNteaHBon+Sfy4SRQ== stI8e5KCpaRtt6bd0JHKINoAvp8rA/g4Bmyv+GJklnuhfjlRGfetWYBUrAoNEB/AdjUDTaiAGk3L 7xV1xyMAWYE4Xs7feYGeoqGVuQuT2e/10ISgBDO1hw9i2tq2JdAbwIn5xeqwcDFKuF+dBWBAV+7N EjHa4AHDTMMa+y7aRw7dlfDyOmZg8hCfty9tzkzvZaImDWgHQCWMwQZvUw9pM47IpO/Mkzna3YZn AeJgamQBauk7E/Njz7d0wLAbDUw6D8BO+qcEXKnNnRm/Kxd9bxJFa7gI6NdBwnFHgDtDhkzHLmDP r4BfEqN08LZcSgFfc0Fc1rpQJaB3bwq885GFQh8n3P4PIMpfc2Z4FkYUTxJNwpz90KtOAaaJuqAG LOCjjLOu6FntVI2ThSL3tffugg5SDdo1AXxUvclCH/lp9Ghi1kCiJfKQcWNk1mMNmOqv9enhLdiC f5w1yS8NLiL1AGSSWYdz8vFThnHLp3foSOdcADGZHFFIL4LGoeQ4ogjI3WX9ULK0vhL3fUPZNyYr MALmArZ1G5LuR0r9EAq0EXSQ7MvvJQ2JlTSlos/k4fnJyeAP2spDyRAYcx0KihhDv9mp28I9NrYv C6DxxitdOrSPk0h3JACqb76AHMA3sJQe+h6YjtXebTbE9kF2dDJMDCC2NkkSg+OFqEmwyO7aJ+5E APeHAPY2i10KouKoiDkmECfsGcBoz8Kb8t0S8FIhP/hU8cJPAeG3oPAbBj514OaYa8Nu2mGuwItE 8juEWX977AnrJ3cI72cSoDrUXAonV7/hg2uqDB7gARnZuxbchCg3PNeZtrKJDYn4om1Bu1dWlDHB pinIT3HmFhSdr4vWJeeuC0kclffA9c8Dyt8AnQb8KAsGjcbtSr/OpdWC7M1KCGNk5G7GpU0Qexxl TPCJFndNLHjHXPOjkZx67ZGg4HVDDnkUxHARBRa7O/8y/uCREJCdx/1J/QpI+JAigfi6F1DwIkUB GI0UBehUJoACSMmaSBgkbkUkkK9zPCoigU2YknTKZY68q6GAPW9cgYSASP3P1lWwyCJhk+u9mqOD zJ4n7L0VoYDLVLFS21eHgIRnHTpgi9RYLL4pSEkTgKwanSuwUadGU7TIXhB0MAYwF91RyECgy02O nIbMR+bSQc+ZxrdyNcS1kHCl3jRab+tzaBqd29PXYAuzqGwxW81pIACIkj03EhDp/O9KBmJlNR6D rnTaXKNqDgSitxBBYJVmbyRt2XsT6LcnWXj58fEEWyl7Lo11lmfTGLM7EQQPYG49m8Yel2fTWG91 nuhtDTf6BMJKyxe9aXyficrWbC/S2Gkgen0T7PqMrAtNEENV2XfEGBgWlSzGTlqN3rcBx4tj4PTL 4ShmZ65Gb7kXUcli7OhpbLR5Q20MYC4Ho9hfn0fYLzabsUYmtm8iCKvz8bsjBTEcnqAD5Bp5yPwa YcJgDN+q/AmlpVlMDGfbc6XlcLkzXFBdPTT83WuOwaS0HO6t0q8j27Xsq8PGugpsCuwu7YWJTiFZ jZXMV1lbPc7rkfU6n72WXJEjpjKpJEXLUqGbLs4rGfz6pDnwQrXHWngeNQ0b5lyJGXfszcWp8pML Zb2JWaLHZHX29w68EnBWUJEPcD0XFKpIkKcywc1bax6OJg78/V07Nw98eSz2bGs0aRTqVWtHdPCF G0fyYghKUmMlQCQdj4usAmL2Lt99LxXm16Nsu/vmLA79mSdpzQh68QCBoYCTt7JxmBTemyNPTkhO DamkcMM8wVaeC2kBx5yLkKDUyNj4Jd3jUt4Gv0/sO5j7JorhVWccHU8D8e0wvVnDDvN55rewSYl8 thtKln2MKnshPlcwP+V5e/DAU8/CPG03xgypMD7yL0pcxnbviT+Shz87fYMiDDQ+/Pgh2O0RmBgK Iy09gdBYzLMgpM4e60GLSYfPEIuUtL7HloAZd9PeHSKMiLi0Bxhr+xNsaiu3LfdLYrXZQxo4ZDMc 5YMQ7tFzmI+VdNbw7PS+NzXb7WGEB+Oy1MibeLFGOqzpOjyaNk9mH8dxrJ7/SZOOpxcUvsLhdmIe H663JBeNlmxr9Hcw7PQCd/UrhDuC1WCAMQozCwpE0T1IwDjMrhTFJk1rGWUMwNBYTtyagAeYLLic 3hDllk1jGAB8V0MU4RIqWNaSeA0bw6F8bVbyHz7SLLEgy0urJ0fhcrly0JgrXwB0ztdYmUjOlVbH /CLMo8xoDnbvLqCfuCxIflnqMpAcAfa4ZYDPagZgpw9jbwtlPFLCmmylEz9gyFyUGMiCNYn51xeY V/3Cvi2vneLnQgSEfNMHOXXfhe+ZmxQnN1/IijiryO0gnUTvqu3vF9toYw6rPQ9xsNJ3caxWzmeE rKmcOn9CxpX3Es+1H5sohmP5/9r78r44cl3RT9DfARIaaGiacu3FDs1OB0ISJpBM2AlDCFlYzr3n n/fZnySXbbmqGnqpnjn3/u4972UodZUsy7YsyZJczfyUbB49YeLwco2t1Olgvp6GcGO+Y3p4PQfC 8+vkvLMjJhsU4qrWS0aWHMn45Pm6LQ/HaXzT2OBD53X+w2CqXXso1vaWxWbVibQEOZQxvRhadRtO LnyvvU4zMR/Hj3AtJt7yhLdNHlNYs1NNWIvX69DT80DUm3tNMVUN98nFj3G3M9rF/6c6fwg33bXh zS26k+utEBut1oq7+m4CFrYXogA4WMagGBBrt4cLZlwojltlF2zW7G5MYewd8W4EY61Z+piUMO8y CWuZpVvsYybH6MLD49LXA2dleTMMl9Y/LPqH8Nfp7tr9p8OnSZ1rllaiyCw+g+dh+MvYqgl1l8lu FMBO+5Tyb47byUkzGaFgRQ/ylKzVG9x/Jgkj90y+uM6LVjmd73e9zsEm72rTts/4LJ2qp3U++SN3 0DXzeY7OXhcE7KXX8yznCxdswUretRvdp/FFLaxh/4Aeys1JMwOhFTkHZ2BdU0JB8ZZ4hUlF0+Pp SUVGuNw8bSKChPs4rLWN2U9ydVvFB958mQdtrjG1kzaQngCuZPn0bWxzwYRXcBXje931Ru9vdjEh oq6rNR7eYi2cHw/umns9B3vgH2Jy4SkYRb1uDgs9g9rlTr/yRlfPfL6HTzhNPClexukTgjw4nveW b75gMttt4FWfHpbFxZZD5/tuPXBPNi/rTDbAbEvc2rupNXw9FBvHh6tu7fPUBkqdGKTJ4bK3vLs/ A4JirqVkJKj7OuED4zPGjLglaRlNpAJ3wR/XWmEH8qDdQRCZD4+vh2unVxfDtd2jmrSRn9nA8ytV XchJaYu4zk1iBe6AICjGNzNSQFVveBG3LQVwWYBcoUPige77C8GnkE/n7++ra/Wkdrw06/wxYmkm 43eyPsy7bKaMyqPRGL/4BRj310//OGquTsa19fW1N3/EXBJZDNSSH6SNkclY/6aezhhcTZnjNpbL cptM0GSQh5aMkLevjgyjzW2MtNO6dZJ9WOBjsnsDoq35oKRlKQZEW/NBRkM9b0BMdmhAjE/fBPNz 3mhtz8mYD1ZfnjMgQrBAPq9iiLNnGRCXoPPf3t5jclKoqwF/TqM3wGhwvo4fb6bahbe8NrUB6sYO CI2JqU1g+t26uNjcm6FgJRbCgueCymwQMxSQjAbJFoZZyzBjUZ/ZWgL5s7arhvMSa3eoE/UPzuX4 uyPKEcTs2zF7DCbUGGCmGs+SekH+8PssihLfZz/tYCxMdXN1kiW+96SK0F7JlJFJKwdfi5QOcKem dcxPOEfdyTSPz60tLs3q6bUSPL4dudr48un8WyqGDm9fo4PmTF5pXD+5+DQ8+vAQDY9+X2g9n1XJ 8yv5YTpLS/3oYKrCKOWFwtxZ35zsMu1Whm+NOureap4mO6cMMo4x/HS3+X31a/Xhw9Lc4qFvpE7Z VtLMg/KAYfQOkyFvj5gBaK1tpHVzDMvj32duy3o2fETOiELVaL9YhCnZlpGWq2gRzUxmDG6YQH9O yWzQQn2FjBhcTah2ZNW4L3cn2xhvqec3yXtSHDG9l5J7JZd5d1tvQf74S9DdlYgl5T5rSFWyphRJ Dudr884zphTdXwR82khd89yQGo3hvc/bon4yEWVkDcaIzIl661vTRHVeNrWs+VMJu1/LmMiyj6Fq kS3qtjFiCQzcbz+8rKgrMKQqnZhS/RlSiw1Y+7OLTv1i5kvr97u+xZUtrOqWtCxPXNnCKnVjolu0 Un3WMfoaNqEzxP1mUtTF4bqssVTbmku4YHoxgbxYH8tERlsJ5Lkk8A5SwKU+VrfkPYoFy2coZwx3 0+Yukgd1vzrTVmfCVpTWVKQz4deTfQshrG/5ohjqWwjpekrPiSEza+XF5i8LIZAHrQVMnxJp/FgH YigjhNzVKRA4mN6ZEULQq0efDtbQ9x8Ymw1j4VD4gJK/6J58b8VZz+vJ1sQbYMyx+4zndW1qCZ1I WxnPK6XHuacfP77B/JcZEQ/E82p+UBx7wfN6c/s4PD5y9KtHw03fypQ33WSVqHYOnK4MN7kqC023 8GB+prl8MDr7Q5lX73+ROhh8P78cXf20fvRhMvGXR8RKsniSMb4yppeOtrVLci4EH4S2q8+w/mFd ysOCg6IOjolY/n6vB0UdHBOZONjOD4r0gMmDog6OiWBc9EERahcTJdp5VisDs/OMlSf3l74OiqZv FvbWvNHZz27bYyLk2LMHRSB6ZjDXJbDtvCNzUJQ7Jjr/tYWeqXkjrKSmhAdFB/PiIhoWzx4UbYMl t/M2J65uP4OJ93F/C93ZfpGwqlRLFFdthZVdgWolGB4eX/x+NpDT6vn7/zut7uu02mZgL6fVExkh 1N1pdb1HIfQ/4LS6Y2cTZdkUu5tKdDahbtnG3VSiswmzONu4m0p0Nj13LtbO2TTzZW/7d1fOpkq1 Q/utL2cTakrd2m/dW2/ouerWfuveeuNrv1P7Lc/Al6w3+8YcY78dR/Md+LyLrbfjqNFN9lPvTqSM 9UanPOU7kTIupLSO4otOpPl5t3a5O9epEyljvVHG0NI87Xy2/bYOokckbZxIB6tiqjoVFDiRFmR5 FluCSD8/cyK5p97iLuzYR64lwhysXjvTxCJkcQdOpIwLSer85TqRFs5+kHWzcrobfIC/rg4rVUpt MqPVQSiMsbHSk9LDz/d8gxY7U5kgG30DSFdhNqbmJ8w7NKkaz5+QGfvFNtPqKzX35C4MUBdKMKBK YIniJl3koeme0UaaZ0uG6YxkYCfvnXt2Ng7G23t2iiQDaX1KNsDXtmfn2ylub4sw0dZi0OZO3/JN uzMDiTQTyqx/RjfxqpfDG8722/kJGXozebtetxbf/gTmty+rKqH1sTTWJGeL2cfzi2L7IS1UeXib 1kGVxPMYhEXM727i4fwbfriJfgFL3q1PyhumtNVWn76pry/CWq1iSYnWqrd88yEm4o08AJIfA0yy HHNPa4czeGLu05E8Fw+1IAB76G7N+frHFDL6y1vUlDa21rHKx4J7Ory5Kc6vjzHv9w== TYK5zmvS0Fr8Y3fHPV1b29YlQRa85dMPG+7qu+StNzLTmMdk1CXYHM+2kYY5d3Xqm2M0k0rV6Cbp GGw0p+RpvByDMk7j6UzcPo//eDJR9mk8nSbkzuPLPo2vVLtw6swdP+/UaevSgVVZnlOnrTWFHsVe nTqdW1OVajt7akxqmd04dbQ1hVVCg/Euqmp0LbOKJBZKmNKcOm2tqUq1Q3uqNn3zen0ZY3u87q0p tF8ebuPpm4WDNXTRxO3sqYimrmVNXS+I+snITt4tc7gIzF9ZKzx5//Olrx/3ZmGnSbbRSHO78kBT dm1ZTh3m0hmfOqvh+fbR8NT0GOgwWFZ8rWzBBXK6uWPEVmHEXSeCqysbKr2ZpdMzsEzgjk1y+7Ad XXG6KHDn/Op3ryfhMmFHsUX2ZQtm3sctjCOchm4047LjCLPnyKXGEWpFRZ6+PaeqHGD9gtvD9Q5U lSJJJDanfi1jDdXm9Q6zrMYWJzaoYB4VyYGlGYygs3gGHwN18cSfD1TzU2xGwyBkbz6SXxZrdC81 3dWlYdc93T19R+kEWGsKo6C3j7ZmZf+lL6UWJ6hnbIJ0hlEYHR5bAhF9ueVsPzx6gPHDmjj/9W2T TBxRbx3M/oNr33bnynEpyaHb1p1rVWnu16Hb1p0rYxRLcuh2ImH6d+i2VUC0hOkp/ajTOGbu7VGR zI2f3dTV6kQSsVOejmOau5dE0gv3XEzzbfyrI6NpfH0eLYtmkSRifXlGFtWPz9bERXVkIyOJ0HiO YZBjb3LhojaS8aQYb6w6E2e+lNYxGE3DlFvUNhynrTPYWcVCjBviYv9g1nhSdBXNnjIbOvWkVKpt fCkPj3Nz9YWLcvwn5m7BXDxbz2lKKOX4nSkfGnbs6PTrh7nJg9l7LYZ+pkm0vw5G8cqWD8Mjq/HI 8Oj6QYhlZR5fDOlLL09lfUnclc8Tx/LmB1D3XXVvRAmO30r/gTsdOH7BEu8kcKc1Oduz47c1Wf+/ 6MH/ix78m6IHZ1//VX3f6fnTf1T0IAt1rlRfCna+iHc6DXZuG+pMsT1lBTu3DXXm5/sdBTurxIqi YOe2oc6ZDLtp0Xuq2LTgI9lBfcseU0LbJoRWqiWmhFoJoViJSyWN6RumipLGPoxHYqo6tpNeqtN9 0tjbn9Mo72Rc3yuHJ419r712a1O+Az+M+5aJh6E3c2NLmP6Z5GTWweW6Wxs5myoK2yHf+DNfY+Lp kru6NbHez2E5nfF1mZvR/WF5rlpj1+Kqk8NyO+u5z2Dntn5gecZXUrBzW1HX9rasUnUmab12fCSG zoOoe52JTqsbY/j1+OB0JulVKCnYua3OBGu/3XF5iYflOlswf1xe4mE53mbS5ri8xMNyWpXlm3gZ nYlirlKtaXAZF9bdtQPLuEBNqfeYnU6FkNbHeorZ6VQI8ejBkjIuNlqvkowQgtHv1HSDryd6FELM o9hDzE6nQohuZ+glZqerjAtc+yrnYnAZF9laN4PJuKBaN2nOxeAyLrqudbN79Lv7jAvLNz6wjAuj j3WZLN9VqnzFTm3vPFm+q1R5vfa7SJa3GdhJqryKTudnbqnDrwf/Ubvo5TZ3C5Zy3m5O220JU+p5 O0uhYPcjt0miKKPWFlqvz1XbKqfWlrbF2lTbKqfWFnkUyztv/zwxIi/snlr23uDl3PPwl/um/Nod 6M8IS4ke7Fb+pFZS2cU62uWLlVasI8MxcgiZypPPuIQsVbPmdO8QqlSVSwi+zrmEVnaBlfMruKRm na+tX1h7ZnFD38nasUOoUu3AJdS3Q4jmWJFLqDY+2VHQz+Ik2i/Q3c319ikUz2dyPXrTN/WlBaRR 2EIIUIw/PuDta7NoOUWTC0/TI+7JpyUfwxhnbCfRZ7wDYvN6ztmZHd5DgRTCfnC26Y2urYDV5nlN bGUdI4hmQMyMrJpxUYkVtRCXQuiNnt6AWJuY28arZVt4Y1UAtsHnBRjOy03pG49Q2drAqAV3IFU8 LCupra8IL9BeT0ZefVi+2Fs/ffFETspFtAiaj/Zpda/5Wy+FJmu7svvQ5OwBe0py2+P1NMPu2QP2 6e4Xu1rqWKmfZdjJAJ+P++sY4ONgwO5cp8fqHRyqS3u/r2P1lwJ8qHZH8bF6d9lPxxtoerv2wv0C a6T66I2+uZ6lG9hPPFnin8cYx3MkrlBXWLOibn7ugga3/yb17x5/W+TBxbvyNm68WG1rVtUI+wvz 95dPFzfdtYnNt6SM6CtkylyaefulvJwn4z9J9/2B5DxZsT0Dy3ky/hMtYQaQ82TtlQPLeTL+E3OO jB6U40bPR9/wbb2t/yQ9ex1IzpPxn1CO1YBynoz/pFIdXM6TceJWqoPLeTJOXIwcHlTOk3HiWvt+ f0ff/mhy+v71t8Xdub3fMyt+fDd3f/7mcnbRqZ2DBuuMeCWF8FjlPP9kxRWs/Mqu4wgHHz3YTWDO 31lRZ7x710rOsbLxfbhtMDPtL8+GM9MtJflgQtCsx3ZQ847ExgEYO8v3X9611XrUKU8vBVI/0IWN WBx4YxKk0xEYNq3jJjpn60ZEwQ6fYL2+jYNLR/pXJm+XZsUFaIYvO1nGOjxueo95RxijuL2xNd2F pDI9OI9h8kVzoCI2HLBAfJiGYfOL0pQuT+mKArc20nBJU3of0a0EeBLuAquv/DTvYWrdx4NxWGNH Uxva5vmEFs8yCKY7dKfUyZW8SBwBmRRuY7XqbXExEmFJ1ctF2KC3mip6UCWTBzB/52dVgdRwHUST v4jRWQGsnLMFUZ/Zm4c9cMMVG78u6WLstUKPzO7GehOv5lwhtYq0i/0J56s4XuvK8OlAtwp3m79G V07ffFmrVFcXJ8+PFg4+vP8xPHF9vz8Aifb2jmt9fUk0UJzqbSVapdpvgYuMmmMlyikxonTLjgVJ emFGd1kR0n4Zo69z9ZVXh1cpqF9sLo0t92M0Zc+S+o9FLjKa6ITX1FfGa6gKa6dnqiuPh6A/fNsG VeRVo4NAGRkRYald5z+B+PHPzVygzNGPJ/d09dsc2lUupXKioTUPi9l9TbloVmHlcAuD8pqoZ7ho Je3ub7LSystzYwtgNK3tIZ5ZOsLgRdfF2aK3/HFtHQs5z4j6r7tNXVg5Sb0r918SzBB9Ywors2zB bGnlEgsrZ29m+T08tZ3sY2LUeYkFb+TaRyNg6aEMKVDsMKlUX3Kh9uAwsQnusc4V0C22eq5zBdL0 qM7R1uJ5Updwxuz0mLxNDtSCrIEBJEJKOWZ6UO/MJzo3MX0TRDPuydM70cHBjIzrs6XSD4FnO0tY BiZT3QpQuHEVnaAhrMo/vUwylFt7N7zqrUyfvsEVjXcuzLUoGQrv4d29+ECUoToRe8unu2t2MtSs O36Na3oi9PEk+B13y9x/2QD94d0SpnEvYhr3XJEaUKkOrrqVWVeV6uCqWxXk8gygupXZ/CvVwVW3 Mu4bHmlfdnUrbr+UV91qHAzzme0i0QMcezEfewIn31T31a2KTkbKr25lhBBo4wOrbmVqW1WqvZ0P d1dKXepjg6luZWpbkQ4zoOpWvXh655NaMBw5I85598YHjyEpNj+soPceM6KkhySbE9VbRlTQNiOK JEwuJ6rsjCgV01uy46Uom6OnwLqpka2lTt3CRsIoxzB8LcqO7rXl2KCie3P3WPUaWHfe2lt1vv4x 7Bc5W0xfnnEMe9XLsW2xWfXitoF16G6ZssNaQDC9nm9SdRyUMFxmoQQ6xuHeEJmoFDqTynxtu4XX 0AWz4q7uN6OMvKOI7kEmcJJbOBfPf3+/0LykqjDrycj8F/jr/buq44QT6x8WHvfpnwHIMVkbK+Om 7tYZg32hGzoHepGddVvWwC60KTgTH8CFNui7EK9muk+bsu/RUwdmsMUWhTxJ3zgZIqPth/tyVPwo Nk17qAx2flzNRCB/wluiltyJYXn+G7irU9frYAytzHR1fkatDFJQ5vL3M4LSG0lunQ4EJUi5CRSU I0FbrzT1pb2gFO7J5jcMBg4TW1CumRph6Fiao9MuLApWtY/T0HPcXEa70ttJUn9zsDSP23vi7KxO rHsro6A5YvEBGJdkA97b3LfkZriO9/ZtuLVP72Zgpl6CvTvybS0tonw+v+iNzs35gDnZpUqtrTVM szuffPb2rpddTHu2xxDPO75M0FkDeeDbRVVxNyYN8ihsVgdTivNlVM/u1L8wCWw73nRPZy/9HmOu fviYuLhECXdt/QswD35nM/HAGHgAG2puLcIIqXW67/VwGcO/YhjzsTVQ/A/XSVt3T4fHcMzX3tpj vilLPKH70V1dPGuKjdbZqlZumqD4fwCrZWKRoq+2yMqV+lg/Y96JW1Gd8VluxdIvfDY28iAvfDaa 0iBLaHecZdOXk6FS7bSSf/dOBlPyDaOhuiz6NpEp+taBk6Fthl2pTgZWE3KAFz6rWgSDvfAZT3hL C0JvG4IOu1h5QehtPZ2V57wOLxV+6vhYA8al38JPHQghVdm4I19nbTveT+KN9eX95mcSFDCx5zfB Fpk/X12cfP9hdXH88pP7dHsauc0P58xXSRWnCwXJaEaQgBLxfjgdnPNDRxXP/Y/Sxu2KoD0Fdrw9 +vn8eSz1pV1gB3xdTpUoGZ3e6823nZ7MUl86vPm20ypRojUHRvgOK60rK4J2XrGu/utuFTQgMDTa V4m6/et3JvaMTnkm5ymYPSOzQJd3tp3tvT+d9j7RNt+6IM/fgR3QpIiPiVXUx5jEG5DOlJ6MmMNY W2d6KEdnkmd89We2/DJ0JrleehZXxz9vR1/WekYrWb2nH3HVVlip+8VKEVdto9DISupUXP3xo/vw kcm03jh+XXZRu4ywohj48ovavVgJXHpfXhZXMC1m3dW7zS4rgVviSjTBwG9drufEVTjjYcSZN5kt ttL+nqM9mSn8rvmsO7TwoiUVlj+3DWbfQ8E1S1xY0bgMKHLECKtKFYuAL2B23x6ec3zG7L6fmOe3 Ozw1PbrzQpafPEYqusfeEkwZu7KEjJqi8BDQLroMEHEnug+Ez+Ukis3Fd8u9BsLDt67l1/p27mxv TMao8x8fL2BIow/21FbifD2ZCMsOhM/FKpQYCE+FWtpV0O3YNsLMONiFUstCR4BhoBd65mZQBsbk r8Gs5zfXgfTYYDl/rJbrGaMJ7LP9jemb+swC6RmiPnMIatDNxRsY1dXYrY3ghQPvwi1iuXuyeTmX sjyNBdvyluemFmhcrpdkOGi9udd0a3fJmqzkP359veFsH7UaGPiKsT2Pobf8168evHXP3THU4cLm tf13j2pF69jy83edr9tpbX87Sq3b6v6d5smgdjHQ9N3ytYu2plA32oU6Depe9OB5ZSY2bQDl+v+Z KLUeAkR6jFLrMkCkg/AQsl/6CxDpIDwEdZgysnSfDw+pVClAJHKq3sRK7fvHDbAdgu2yg9XtCrob b+8GEqxe+m2MhcHqlWp/zhE1as/Lg0w92FQi4HoZteVBQMIV9rO5re5jVf/pm1ipQw== 4y+fJO7jKln1Vka/JL2eJLqYirPjLZ/uZ0Iu1ihYFPSD6hPeNpSAKIiiycWZ/XG6RSaXv48FuOfd k88jK1L12xCf1yl4Fc+DWnipEBgVs3cLot76tcJDV92a665OfV5xts/XKfNmQ4eu+s7Xg28L7ulE SCkyAerJm5f1gWTtWxFEg0gNVr6LNDGYfBflpwZnEoOxPswAUoMzicEqX6zk1OBMBFilOpDUYJ4Y /GtmvtKJGCpODf41k70OsW0EmLnnvdTU4Iw9JP1jpacGZ8SRtivLTQ3OJAbTTazlpwZnEoMz8WNl pQZ3c5b0wnWI61crp7vT75Y3QTlbj5/Oh9tKonRcpJghvV1FZfd1qdkgqzVmDQ1NcHrzVy+KxcXo 607dmGxHVqcu8LXt18O7gdaaWDpEuLWp49nunZdpDu+AnZe6Lly+eEifpUN+4O3t40toIATKN57a Dsd/gsJQJwdGAkTFAd3+Y5cOmdWamV065OM63sWOtZHOA7e2+WvB+CUp/+VTi4qHgP7wmRUPgdGY 2xEbrYNl1BCwbNBWrUf9oF2Fwy7SW4Pv59/GV5/O/ny/8f198m729e3JPKzUm/3lTW/6etKKtyyh IOtUESG8HmxXeLrXPeguTqZ9RB3k/HdvcqRRN2VfWZiJXlFyrKMbg9xS6pDUD8RcqmwUCC6JEcyr 54Z7A9Sq0aNVKS1Vvl8qLcNu6yTVG3yQqSSat7Or7wMFy3/m27K3fL+/l0ZBy3Epr0p+UfBe+1rQ 3VTJj+6fT/1N7xqgKvnuyZ3TcfJvvkr+vYPXv+6goJy2Un//ekBPb20Pz5lXw8nF2cknS5GpoxE3 voiSMUhDMs8P17C9ZbHRvF4GRSbZobMbDMnEzMCpbX52421ifdklvGNIlgAQl0ugr6y9RVfzLJ6e L6Q+XzCP8TDnDSg/D34J0jIzlphCUp++8f8cf85Q5hNNZpQghcaJ0C63upuSwCuHR40OAnKx+tzU ry3QW9faG9LPB+TCXN1bgQXyuZHJXEBNIaBaePKO1DnHvgJT1P9y1nGs1ql2LxaFWMREeyyDN+2h OrymZgSezdWbC3hJ5+mkCon6E7bGtTVxseS8oTJ4lGUTzbhr3hd4cy4BdXhhaZYuDKaShmJz5Nfm P6rBvrtZ/7Bwu9uBCy3VYDuv+NDTJVRWTRV7i8IpOTPZx8meOdeTlVq7usa7h00md8Ynt4fe7sXN LFKYaLukg9WpYhvWz9PiscQ94OotTnFvJaIsG9oF9jLrbnT65m1rzdmZEdNyD7iZP//44h4gI0uz e4CdZSP3gGqI5XLepleEd7oH3M4soL8KFJm3N7B83kzsgb61PEHXi8uTxD/otlGUArOwPVw/aimw hfdXLqBxiXP69zzW6KFA6h3UmGOvenEHP03fzGHy/TvVXRIA385UIMU8rpfF2uyMmLydX8bF7sGQ fWgBs7YWQa7Mg9A//bSVXneeW/uGqQ259qGVWtlrv/ML6P7BtV9OuiW7gK6gztUA0i3/zjpX/Tvb TA3gIlebXC/tnW349Vjf6ZboUxrUPQZGZVFnr6U42yxXG7+ArtKbs63LC+ioXt9LV9D1fQEdVWgv y9nWVlgxOdZOXC1dLE0/TqzCP8760teDscXl+t3o1+d9/8bfBnp3q1Wplu1xK7J8la+vX48bkdz2 IE9XB3re43b+132PgYP0rRXdIWsZnYw1vZWk9o6Ond1Tz1sVm0tre//DKlAtzrx97NP39juavtnY WxcXi1u+8bxR9ODxp8mFp/prLC81S0oEPLqUDOZnj/Ez/Fy9m1jxlm++LqROuY29NXlt7Y54WBUb JyO7KutZndhhAanLHW95znMxLQyW7uv1NTQzZ8RFeLeizMzREG/obpLm0qmZSTO51Jpz8ebs7uXM l7d/zC3thDeXL3nhmL9cO1T6vGfkb6nTm/WdW8T34jmXmcBqg7bu4X35NAxzYRvWkfyorOuMhQrb H8n/x1ZuaZve2T73gHywVjjvRnN9ETT4i/eZcF4sUy9gS6zOyQTOtdpZYCVNTWynvm9xOK8rwPno BsK7a08/fv1IJSR14ex0u90+Olyikwrcm1dV+bfRAGOlNsBWmYlFfeZbehr/7BaLcmxQt7ya+8pS bbw8B7l93Va6nWbuFS3hxrJSd+SuCqtgjtWgNH3DQKNb9qTpww7YSb3tNrE98HX7itvdF1bJtDKg egHpzV8l3lhWdF9Zpi8l3FhWdF8ZRt2Ue2NZ0X1lpPOXemNZO52/tGTNrrKfek7WHFT2k52s+b8p +6mU+OSNo199ZD/B1/9bs596T9bsOvupp2TNtqmalWqJyZr/CdlPD/eY7tQcrrvr7zEP6gved9bC xz28V36j74vO9O3Y+uIuUAKTsos46RtAer9qsYNMiZfr9JaRNq4juttwrKciTjWlxqq7j1ic0sun +rV65oADLzp7A1b+8RtRT2DhXp03ExAUv3ZoKZjznIIMiNJO9Y2iUunjVL/WYbrEyhhl2fhLuGA7 Keubk5GPr3y8AADraDeZ4wXTJQ7lRWegIkW0v5xHFPSEMVCxvOqMQqKqT1u5dIqvM9dLoP2DRJPV 5z4my2Lj+FcLjTnXHb/+tiEuGl6MAodq+zdJ4JBlIVWsz1QyWFyMPGyqSMilWSoLhWZ2EwvYbVAA Ae40c2aQO/Cnyn2/XGNvaXiOytet1G6Wb7rww3SYsPWSH2ZwodDU50rbHLPergE5fyhSQCie/2U/ KnydiVt0a40JrN6/MA0dWk/+19SIeHEJm/uSMOfp7dlGvl7N3We69AxDzBaglZmf5mSWsW37KFpK nSi16QizJrfStTY8tm4iIeWx7LG8/gxW5bSYvH23RrkQWEYNa2gdbuKRSajvnvuH7khtd0ezyXzs OcmygzuaC2p2DSDJ8n/qHalFJRy6vgEEzPrujRh9Awh8PTgj5h+Ngu6ihMOCs/142XreiKG+tKs4 I5oLWHxhLevzvfj0OWlXwqHwlmWcybd7cyByxtZRYQifKeFQXGELPd7jYN2888K2RkylOuDLP0xE hMz1nkWDZXd48ilZ6rxmQ2e1tXnl/HJuXC6SJZVqoTRhazpPcvd2gKzR3cctqPBtNp7r44dNeSHn 14O7RVo5/5Niev3fbWJ6u6k4jfSA2vx7OOMY3cYgXY8KqaJqL6xyDJptrct5jIVLkxHmQHk/nHW2 z/eWcLXFOhlBlWFY8xZRk3Dck0/f1pQmMTvjnmyNraEdgHXvVlrmNp5/pqbKC8UX+i69UEJERAda QaU6YIcCaQV29OCg6tCVbFm8/Vl4wWCHlgV83Y9WYNVPHpiNYXT+Li5W7ti1Ob4+D/v6WdP2WndV h+74bE1cVEc2nnFtXtRk5hRKS+3cbFc+AWTR8TrASGtoG33VtnqDQ9Xn3l5uyMCPgUVfqZPEjo6G h5+Wph8Xd5ork1d3zx8MZ3wF/7Nirp5f0R3GXMFk6TnmCr7Nxlz1n+VYtI5lvOVgIq3MOsZx6d1b wGvb1pfWczf43f5+pOMBeTd6nLvCawSr0Nx82qeCBYB2qZla/rune1gHfctbmZ7CPeduKXOBF768 jmk8iUmORDlG6ZGnFzuwxK838cA0MemR5ZyUtst8LPektFIdcFlb0n6xOlBpZW2d048P097S/vh4 xjsoowcHWNaWlAmtJw+qrG1WWvakTpz/fupA9GTjLXXA5++nEp0M2VZKd1mSEKIIokGWtVWnb4Mt a0tnnZj7NtCytuRkwFYGWtaWnb49V1Du48lE+aeifZ9PFNk0uPYtqyY8mJ9pLh+Mzv5QouL9L5V0 DrYqnqtMJv7kvRh9mDvtyCqRfksuSD4IPThnOittpO/M61wMSffXExZvDta9Acixjm4OmOj+ZlSd FFf/v+pzr+dqGO+9jHmoXq/V52J5k8iaex23qz4XZTJlQcxcL4j6ychOvrYtShhg/8rac9ZPu68f 92bBDkq20Sxyn783YAB3pMppuPznstx21/5coBvYU6VlXA/Ellg7npmjIEFneu/qR0oUzCwqioXs n5LL9cvDXxSjKFOf00z209eYLzUqKwLRjU6UX+nXCADNLv2kgEd6TJdAsCRjHdXO93rMG5mbO5UB /F+Pl67lpkbx+kpufHEux8dnUjIXZqAvqW8OfuI9WFiqmx9M/CP8sN5gPxwPeyfUHp68m/YEY8vG ym/iWLA7waEH4+fq9d06/+Hav9Q/NMghJDZHluS+j7freviDIN5hlVt83JeYK1WJ4vx6Eksl7Ms0 LXExEs2ke0T9DZX4X4H1OS/wlWlSVTBfA43n/RQtGNmE1sPV9JoWHC1cXbNrykd58WHK0N3b4XXV /oeJYGxlc32uRIxubb81r/GtBI9vR64q1Y0vn+Lr5fdPIzdrny7fOvYmc+p+eTpeSgf+6NhTToYP Puv46mJ0oQbsYxovu7rfRHf2x2l9+hZ8BNznXzBp+aNIPb3BR1KxfuJfnv7LlyjWZu9IG08xnlzQ wH+aVt9+cvRfgo++e+oe3yh6PnmM0NPV25F0Vd5+C1RfujxT1CeJz6j7DdMolQBFmKM2gi9C/+Xy 995c+8ZU0OdiLxkLK8poIifL6zHFE9gmZFoqLE65cs5ebdfk1pG+QjXuYO40sBvjZCPj79NG/0sL cwRinCw1+Gf+FymBUiadvXrvS20clOrfSggvTVFmMljD/idYcH/cm3tFo/Qw/evBzOeUCv2P/OF4 6c8se0n+1sf+wvm0U2OCop484oa4M2mt/XprEpfmjpw2WBlsenV77qeTEVyY//J95furH+t4M+hf WuDUiP2SsxutVw0sfTjpTG8sTeI8eCMrt0SpON5YJ/lbS8XxRmvaCc53cFXuOql8ClsGt2v00v+3 UImiJBiK4jgYmn739P3qfu/+5vrmx1C9MluZXt4S4uDH5c/1+6urD1f//bj68+Lp7urH49DM0PTy ++bWVhysXl38vLwaqstTlIglwlg2jNdO25VCYPVrsnG7+frd/NnqV+doIetIGPv14TdmTYMNiqGM 1eH6yeVnGc84vvlQx8cj1NeHmcadS/MiXWri9erV/crT2uSb1seM/CIlOTn9sAG2ztrHlat3S9MP 13PTm8ufdkBr/uM9Znf+VJpPmjzClcz23g1pW4wO1+Z2/eGp6bE/MABzFfoyshpPD9drS0sI3R6e 3H+1KyvTww+LGKp5OVx/c7g5PPH79T1PMqHDCZVkImBezqaycf3kRA3z258kWdT5ef36eoEWm1wE 07evpDMWJuDdI1pr03IJge46nv717WoideTCFEL37WRqDNPjzDjO782p1JuC6yxFAcvqUa3CLcfM dTCGHxO1e0c1tt+zHizMT7Ifzkaa8+qH5hTXEcCqP1hUP21N8xU1e72sftgT+odjUrxgdcxPGBhv eaMpNQ15sn3M297YaqCEmkgrPeBS+/Lw7Ql+eCfoEZSnYXh8u2Rwn8AXPizOt+ukEg== TRgBiXIplis4BuG1B0P7dm8aRVsdEzJH4PGA0E7IwZl++9kDdfIW950Pk0wVuBxtwGZw1JrSjZ5m KmtVqh3V1pL6nv7HqjIAFP5oTj5bq6uobsEzGFVmi+VfWxq7+rC6dTk/nK6mo0Ohd3nX2ldr309e p9Pr6MzXXT/j0+t8jyRiPfWrnB9Mp9P+/NCh41b467NIt6bzY3ch2XJhrM7P8OQh/fvSJxTp0N6+ I4xTdEENPB5Oq3oLnx3117GZbedcVb299NgPqKpCX6huw+mb31WlCnR5TfaLuVyHDbZeLtLJ8njs pJ6TxzOh/rp0zXvpHtJFJliFCVx5gWxBueaX4sDlSU40NjP60/VB+v7+gzLqJ5PAn4O/5rYrVRDH vxbhpzfbq09nb/fgp/nF9WTk3WXzy/brzYXfI3ctdjlD10oIqSBSqxqgEpLW8h+wEkIwWd9rgEoI qSDQSr9KyMszZz+t69nGUfZmNBU9alLRVj45/37t0rms/li9v5+/GOUKAc22uZ2P9Bm9jGlOPrWS njAS9PXv8OmNQnFazaJ4On/7G6u3PEktZfSTu80ciwQbnj9Cff3dI+ZhHMDLX+cy90UcveUogp/r WRTe1meD4j2hYNXPiLNSyq2fjMk6H2D2j8t7PBxUS2op9Oz3RAq7fTWJXolAz+5Li/OwvVOfn05n BC0fZMZfE0sfJ85gsCfX4YfGFKkYsv79X7Xxxc/fDe+kJYjET87N3mE65+ET9LT2BXW0V/KH2e8H u0joK/zhSPbKLqxDI3A4/HN6jaJaXq3d368cwVIJ3vygRsfPR979CevO3wB6RMNS+Bo/FceehqVi SKz0Hz6PIp+GsdFD/OG1ocbyCmO0lWLCkseYUJ0bPlVM8KeJCZqaW8MCzNmspyxYfXivWfCnPN1S THj6vKeZcGgzoZ5hQhEL6MgpZcHZ4p5hAUWBzTykTIBmDRPSIWnDBO4YF9sP6dxfqe1oFmx+abz6 dkAsqFTNTCiaB6jaO+kkjvZuUya4T4Kz4GLvTbt5MEaSNr3rcnLOvd4vnkrPokBHWQdzEXWYdijw 3uh+aDCTAfrSI4qVw6OpTpcUxmflUaCUn+5jNOS+Z+Y0+dHTWd3hnB7no8GXRXs+0HrhKAwz23dj ceb2h0IxkUVg+GBokBzrWD6Zie1srr4/V904+mG/J32m8r31Dyv7hmNHXzKDY97scYIYmdv7HENH dac0tJljfa74cc6HHucY330s0dsWQW6O8RXfdppyFNlu8OWqWFkwx57jRFejYRCwnIxaR5x4hoYa X/EWDfYu9iyKNiu+k+GUdmXNjEZvk6rGN+M8K9X+8jwKNqDddoMQUPR3OqA9dqNIcGVogL48S0UH 63N4bPXP/RSB+3BsI5DGjt6Re+HEhJmVz9Ogd+Q8FZmdqHsazKzsVVpOdDIr9T5Eaz+7E008Py87 oEEeUOtHnGN4E4IGeCMzzR19Pjmdegbmj/zu/YjGi1ipDs6PaLyI6FEclB/R/ICn9IPyIxovYqU6 OD+i8SLiehmUH9F4/SrVwfkRDT6q9DAgP6LxIlaqg/MjGi9ielv7QPyIxotYGaAf0XgH6aRuQH5E ciexfV86dVKezB9JaQLzcpmUxAnluXv/K33l7DcKkiN0sflIzTievZ886oB0mFmPC79RHJH8qdHt 06N3XCAd/WykcQ1Lw1/S8IVmo05y2v3yNLc1fXP42JABSzf1mUlyWlG2j6RB/yN/kHeSZBhMSVmp MzEjvWiOZQTXq61fJLMoyANViFvpqKsfR1c6zMHBvkR/bDZPb5cvodlfK0rgzNSMqw4D/ITk4sbB OJ4lXe/JqAdyIm1c+4001oG8dSNLylm4seeQdKpUuVDcOHDVQdjD/1uozFaqeFx4svbjkh8VVqpV gLy/enz6hS8EJytX1zc/Wmf/vrqvOEOC/ufQ/+L0v85QgP+0zivj9NpQUhtq/ahUT6aX7x9Xby4e b37+OLv/99AMgMTQ9MrPn9+Hxpe33q9/HFr7718/7x+H5Gcffg4137+v4dHkyfThm9bB1urQzJDE eQI4Z/Er4ZwAVvhJvvccvj9uHm7Ov19ZeKHTJ9CN5YoYOvwv+AP+EUPLv+CvvYrTCJModKMh+CMK XPmHFwdRAH9EXhIECfwhvMgNECJcEYQEcQM/GTo8I/ZIhhz+Gx624Y9vAPqvIeEMvRn6/MUZusQm 31X8ADCH4dCU74UNz0viobvKlAuKiOczWMvAXFeB9KcFIPbl10prRQ4fDCaxY2oqN5xyKCXNYsgb ihL8f9Q7M6QrG6WOJqIrbSBh6OQYOvQHDqEHQ0fj5MZRmPj4RxQ6Xgh/OPB/nsBBDRxgEv43jl2f htuBP7saQjeKGoEX4UDAP3cVITxsKZHPLfYsBD6b97PP8v0eBqxg/d38/PV0Xup4pRgHM2RP8D9H Lr93FVpsUYwDEwSBcOgPNxRRRIMYiBjHzvPTwfP8xHHxv0EYh97Q4XLx2LkFY5cg150EJkTg49A5 MWCD9gAYNDyYP0PCCxqxoNF0RAOEwZDwg0YgkgDGL0wa8Ec8dFF5T/Tv9Uv6GXAF5JAfIXIPlnCc IFl+1PCEQy3Cug5cGH0/bojIwUkVAWLhJgBKGn6YuAhyG7HjRUAXEusmXiKJTXz4+TsA4RNYCvJj 3w1jArqN0E/ozbgBXRDUUzcSCAEmuEE0ZFN2AXP1oJIMjdeGDj9afxHrLythCqieZBgNUwYffN+X rIYmkdUplwm53VQTPtkF5owv//j5YwgUEsIrZ827fuX1csVFrgtsC5jiuR5J0bsKsMwJke9ulDRA nCZDwH+BSKZcL2pEKE3+xce+v10Dx54EuieQgAApiOCD2EWY3/AjaA9p8oUkIPGFPxQJ4GqCcxaG 1QkjH8YFyHQdn1DFDZhjEQxwKBqBQ1uIjxPODRAGXfaFJ98TwvWGYKQdD0inBgMPyLEoaj/khWJm nOZUHLi1oen3j/c3P65B7q8sX4CC8e7n4xm+au3GmVlTMCTVk9CXpMCgBHI+WRT+QTOlBGr0ZPOd QUy2MO1FQjMcFwUMZEzbgg9DHcO7MPhhACM8JeIAKHfLn2wgVzwX5UoC3ItcFDYwdfwgQDJiEAMR TBhgOIi0lAwBswpmDc0VAICg8eMQZ1yEwhGlRwyvB7BUvldADNHqEbHX8D34EEAgDkOcrIjLT0C4 gLAJgljI9hIHRjtP1d896/JjA9NOUwVylqjK0/mvsude4nps7slRD0PaQ0A4O67LlRn1B02J2CdY 4uH/4XgncSP2gFgP5Ebswpq/Q5Ab41rXsCQyL3kRfw7lC82KBgnYHFyQLC0GwqUJQ28QA4Re0q0r QLMiQMDYMNCVYLeF/dNlQNqALewMEhhkQYbSFofJ3jDsqsOGCAVp5jmFOtnEUwlLzvQ4JfyOwQzh hoA8yHA9j61VWYeZs8p/8VQ7BoHHhi3yHA5LQsNqWAUuA2hOaxAjLjQMS1w/HjKYYVuRE0t3KVZs Zj2P+ZCBtsKBwstiZ5DQIMtS2uKwtDsMvepynlfNAv7RDDgoUmzIZqyeOMB2eMgNJkqOguFkQEMv /74YyhH8YEJCEDEU84sGPAgcZ2gaI38xAhikCj2d3V1t/bi8+m94BrULhNDP+38rgDs0jR8u/3i8 Oft+c/aA4gnDiLP9NaKXKex70hppwIh70s4Cyr2IZJRUb4WUQvAKqKWgguJaEK7sFDBCBJ5HhpOb ig0FE0KkL6GyBZsSB9AbMFgKBNpAEHguWVwG5DhAnEYc+fId3boCAB4/tkGAByS9lBf6O4BYmNmz xpPYJLYskOyGRqx7qlpXgGaeQ6WJId3TlOg7A2JE6+bzIMbqLC4tg/QPnm5Ef+7xkZKSQsGEcPQw +H4cMYBhsQJx0hzNLDBU4iGDOUnUZFIdSjSLdbcTPlZSROjvgizqwMlNwsDJcSbIdkRj1n3N8qiZ Z1unkic7gGRj5YeQAQ2p7PNCIP+ciR0RdCt2+pY6nbcFtmRvjT3Zoq0PjSsQylAR2p4DmBC+x2DS ZZe+5YISzCHpX82KhokkNX9aNoywauwi8VLsQr/jKVxxDtaqgCJPbRsYQDLYLYjC5WZpbXFY2iON Xfc6zvGmWcCvsiQe67GvRoJRoCkPnoMxzufxKbHHfnHZmGdgNHZB6DIQGhV6UPAnBtDc1jBGH4OB xAODSqF2hZuZAxrS5L132bjh9wYUexnUDKBnpoZx/niZzijUurt5PjULeNeh8MsPJUq/osFkUEYu w1AMtTD8YJ6BsFup5PUsAgutSuaefXuwcuKdFPtnyaYsS3MzfHWTvFhTMCPEAJIRa26cE2tsGlow W6wZoVkgPvIihYk1I3jcLHYLkhNrilYu1lSPDHbV6zjHm2YBv0oXa5pyLtYM5cGzMCYACmAZscZW WKGw1LLHyYg1HABLrDFuG5ihj8ESW6x5TnYOeEYY5WBMrCmQkWIpagbQM5OJOsMfL9MZIzEV6hxP moUbTZdiTZFlizXDLEvYuQZaNKBFeLNirVt7MhyYVHsPUk10LdX6UNrYXAj0mvK0dAuyUgQgShYo SIFy5BQoRwCT8sfTSluSmaAa0qwkSRYGJobjaK0tBQrHyeK3QSk6BnR9ji/TLdOE7nuSZDnULOBa WTLOtOZoycMoyKschTDD/zw+JeMYh/VyYyPB94FUdYszix5HgcSCyDOcLbq8GolcI0GUonbdMCeq wtxM0DA5clISKZhwssg5RE9RBjT8MEDVI41fdzrPrWYBBzuUdPkBRUlXNKQcagjmGIqhHEM/Cpzr dCrqik8BpmDjiJwoCXs5muhMCfQ7EZc9mdQd9z1Dd9fxDD6FnuD/jxIe1LD78/Hm681FyqYSYxts xAMPcehrh+o8MMXVBnsoGo7v4LJCYLrdKKDr6uUegpKVuHEGRG81KwyIp8q+42P0CgNGjTiO3SHW BIDoPUaKAgG+IM4CAV+QqD1NfxwkuSYYKDb4kizRrQxQds40oVlgSFGgZhH/ytrVeNdT+u84kNHP iCgCspHI41RbG/8p1M0xJCEfTrm7KRiYhIz7ngdd4yDDfQPkhDqMhTDTh0wDoaumn+mhq3nPeOHy sZS7kP42zOEPc2QAtjBHcMsCqo7pBnTv85xrFrGzw42uYIhxpyscZAtsyLaQtAFzJGa3E3HYrcdW BP/4QZHrenjUAt2CXiUYJSWnro+xTBqGEP1W4MUhg8Cg0jtyRUsYMA5ectO1lMLwGFvKKokcpwW+ ZEhQEClsbJicn0HgRexLHAkLuQHEGpWGKUpbDKb7o5HrPmsSFKRZwK3yRFaSofyOwRjlmoIiGON7 Dp+RVvqXULdkMIRm5EQjTiIDQoDmthuLiEMMuzWME6hgKOkTR+6AhBwA6QzzzCuK22YEBB854YTs wzCHO8xSgJMgS2mLw1R/FHLd5RyvmgX861g6ZYdTCqf8gHKooZdjKIZyDFwwBVG3ug== aFSmYCopqMv1lS6EY58kpG9pmHCh86GPsZalBnGxFryQWgQkwiUNymvAXgCzBIMpQMZKIkIvhJkE cyOhqSRc0LMCF4O4bGIFhjR9ByDscS6Foak3Eeg3AkFbpcbou41IUPypbtcirdsoLkDiiyDxeovi KhoMDkWKWs/Ea3XVOpvJ3VqUoteDyq6tKqEsKtuo2lwp1ZRCdIM0oHDVxJ4jKH7aiRw/xIh+WCqB E5Dt5CaeNJ38yKH144kI/u7OdALAlOsHsJASgWvKSUAniGIGdDH4Gp9gFfjqyZe/NSvyGWUkaF0o yuUzaBYhbgkGHWof+IpsUT01cdWx5xatwgBEBP8EI6QNTvnkGQQRo6ilnhW9Bp3uELWonpoZHpSm Rsh+pWTepc+MTNlq5pkx0vpeqwwSKjRW+ZUw7AcBmFDctgK6FOYPTwmsc/VkuEfPjAwnHfsIBOcQ Qwd8lNyTdIeae7JfIWM/7Ny+9Ylv4fRjewb5cabjFr0Gne6QxYNmhiedqgDWcJDEzAyIghjK1Fd5 CP/KskOcLoVkyWZIH94XgbshWQdMPGCiBCmLGoYQ8xotOQ7So8yAhn0cmK5u04Ja/YwQIzUwIJuC jbjowPBrDFZj32JAtn5NNsBAnkGngWYoOVB1Tbeg+28IMRKlgHelxbSxjmvZwokw5DMiioBsGPI4 dXQb+0kLHY5E8LH0fJ+/SfH9+j1azhxkuG+AnFKf8ZAkB2tCiRbeSS2SODtCPpoU8cU+jn02drIJ BjJz1wA503zGGdk504RmQZ5/zSKmdhr9lh9oin8rGmoLzEVW4XAX4u7breKWY71YEi1xXId8KZ7n xz56V2BFIdcp18uPpETzHRRpCBNJ6FCiI54NOz7mZHgRbGthTPa2EJieETIggsx7Pmo0HBTJt5oV BgxCaJuSGjkQ5pSAzYw1ASB6j5GiQLQRZoG0GzbAwhD8Yz/JNcFAocGXZIluWUDVOdOEZoEhRYGa RfwrT1mKs/TfcSCjnxFRBGQjkcdptCjzk6+bY0h8M5wwvfzAY0AEGfaL0BMWyLDfADmlDuNhEgGr WBNRomag6WSi2c/YkfDhFIFvfRzkmwhypKD3JEd0ywKqzpkmNAvy/GsWMbVjXSw30FIhKxhqC2zo tpC0AXMkllRzu5Vq8T/uLEbR7nlCr9nITbWzCHNyDZC2TP2eL5LEAkXyLamepUDiXqi39BSIgsaT H6dNkDgKpX5m3iKQ3OIyQKlnxDGlOeqPYy/XBAOFBp+XJbplAVXnTBOaBYYUBWoW8a9MDS1D/x0H MvoZEUVANhJ5nFxDUz/5ujmGxOfD6bphyICoZBn2i9AVFsiw3wA5pT7jYRKJaIg1QeKIZqDpZKLZ z9iR8OH0vSDgH8f5JuIcKVJDK2BavnOmCc2CPP+aRUztQkPLkKc0tBwDLbCh20LSBsyR9OVfdnv1 yvUSWAEj0Ftj5XmuA0wJp4MFlBQRHbIxWNIIHNzyfJhsEU6TxKe30LGcvpNCMBcmhK3FQGROjS88 YWC4RkBmM9wc4ipMBhZAO56jDCAFFI3IcWUWVoqfJg6iU0QoAGzEhlYFbFVYlxSQ9Vs1wEGxxpfj WavyYHYwXFOxH9DxFExWz6UCE3GQBeJpwGcU2G4shtR/yRMpYvTBxzYGjG8CDd7LYqAvXMdtUGUJ +ws/Cyz7BAJUtcDH4wWrWUp2w0EJ8fQqRCeb3xCxoOMrULdjdJuib16aGXheGXt4CuF4sOVFNsHs zRDsBhyy7xWOEFgXC1D5WbPonUikJpkhr4vKFYXjSE6wLFJ5msAUqLBniSB6VaXKLVIQ+iRqceLi n24AdrEXuGXPH4ncp3RorD9Bp9wuJU3CtMWaJ3GAg4ztw0CD+MAKJYgaQAEMA9W80CTGWLPkO8ih pOH6OBP0SwCkMJHEt5C5YGhEntVkSlA388QwK31ABNk5kR4PlTpMrueolunPQQ2TRE7DhNU2MsME SyA7TFhCJDdMmsR0mCjUODtMQGF2mDBYPTNMmqAuhokxK314Zpi6SG3s1UPdRRO95g51cFDosINC Z0iHXmYKgK2fXV6VelYoEZZ6WihMETD444nXdMt5+HN/yP+h4wVgcWdHhT6ey/i+R4XbHPlni/4U uCXgz/qP9MevNDGto8jMLGVIqycMrXwQcq/RqNn7OSNedHNWLPRZsYPDLyhY0poC+09XT1cPpU4C hbLUon7p6P8jRcXcxATixaqADJZrctwoltVwInROOrDVuVSaC4wp4TnAcDDwpJKDIA8stdJLi0W+ RJ5GRIgobESgNiIQA+thQxAx+rpCek9gCz4Zg3SuPqVVbdhv4b2IYESr3F7hxSSi2migKMdRGBAQ A1Io5jMAsQ4dHMJmE8/BCl/o3wgxGd6irBuJXsRulO2urDLkOLCFgdqMxMcSe7YtJvzL355Bo28k oUvaAbAxivFwwgt9VB9xg0PFNwzjIQ+oj/2EMtWSRohqbcnlnlDrpnJarodjjbUmUe1WBc3CRpAI b8iLYNTBJhqiQmEujo0XeQ03kTqNC2Pp4LxEeiMYZvmeH8LW/L2CenichhpguTwnIGDQSGAoZM8i HyY4fiyXA7brOzD5c9R1MQcKeQxgjZJiY+N8G/+yNn673FJp4x/hwqJCENA2rjoNSo1f5EYiBEVT IasAG9lDDhX4i8G+ANPIFgUlzAaVkK2IAt7EsvAXUOXGyC0sMRd6kgYnBCWHhjLyhBRjiU+2FNIa YXgirTeSPzDoUQBmWiJfRMlFMPjTx9lGhnDsytmWhLLIGdYvhL9swrqPGgsix8MCgb1EjRUMFgMm TkqcG8tfs6Q+F07WBVnPzMf+9jCaj35aVA9mBUwfQbtTAraSEwoGpCMP108nYOgkPu0MPgwTSlrY sYLYHcD2xML+PVkWKALuJ14sYSAuMFhBAEWhjPoPA5GQ+9ONXTdN88Dgd9yhwNgjVxHSGzgUzohA N6B9K0xk6TkAwsYbpWUyYZ9GIDYL/fflxyAvcHvOUteNiCpgO21enOdY6NOj9ebrnSrTpF0JMxF+ t5GzvVoq5QpFkS4pjzKX0ab0XCxpSrUu0Z8WggGLoLQmaRJguU1R+pboauUhTtSeiBGtUZJW5wDM sM7B3vVdkoQJSMJIgHD0PCmWKdvRjT1cDIgOJrQv3wMDFmNlsXhlFCdp9qRIYRhZgUFS2LMEQ3s8 sHmDiOJ2oVk/cdP+W9R1M+HyLAagxoglTWlLzLVh74kD8lkkqJhR4SddRMLAkghYOwT6L6iGpEw6 mIYKWDwXxwF1DixX6znCK31XNPlsPgp5n7ZGFwQfeninqPgv6m1IXOD5rqSEQvE8ESIIt0GsxOpE Hs0I0fBCKpYJClEAL9PowyTyQko0gp7FPsFQygj5Xox+Zc91USOLZasgOKOhAur+3v2xaNw4NFEb oyFUpEkMhbSXvGH24Lnxeq1KpcKRezmmBp3XlVYXbGAApCBCL6DlZ2AIUa9hMITvZUD0lix+mQI9 WDIJnRpaMNC7ZSVN2QDWLk7cIUZGCgFckZuBtQgWRW7Avoy8HHYLpJB5WWpbGaDslWlA993QoUDN Ir6VdjzN+i3Jv+MwRj6joQhoRiCHUZ9Ns19C1RbDELIxFAKPHhQMS0Ga0QljNNcZSPPdwDiNPmOe n+Ahr2kAtQs550z3XM13xgiXj6Pn+tbHUb6JKEdKs8KAjF35rpkWVP9znGsWcLPTM+n88JLvvmiA LbCm2cJRDOUo+jqRFr2Xjur+/KnX0+8uzrx7rRlTftpW6OnjExCQWBbfpRBnH5Mq0igp1I1oxy5Z /3R9aSBj9DS1L1w3TM1jSmeOsMR5IglADxyegpCjA4tO+57jUtpWQ4Sp4R67IZX4B1s6kOol7rqC crYE7lJuammDtjJEca6hai8MMInL0NOFrmlYiKFlyEBH7vAc39+hV0apAZXWZ0XVDRhJWrpIT8Vw kNEdQXLGAX2s9CHVao4eVxggGlbUC13KeZcRiCSywKTFaNiGn6bsRaBE4qjikAgvfQc9raAk0uE/ vQcaoZCH4KCIxuSuxSxRD52dofSyUntenGDgaoamv1drzI0KzhKdaUiZznkSnyum/ncph6LXyByT q9ZzXDaehgLLYmBGjGYpuqspZ0yBAIAvgNUIckk/0E/NinwGHL4T4/lm+oy1+WGuaFzwB70gG1NP zQpIDfbcqoBF6lC6mAKhZWzwpU+B/tzl1LTMM5KqcamOyMbUUzPT89IqSQlO4136bGhMW808Gw7a 3+uqURLqKazpVx7ju0eZYgoE/5WM81D2pE+acfKZEeGlrADx5Q1pZFGSTgFJc6I4l/YpYXwPKUtM gRILX+LZkybxMl22aNXIVFfsvjczvOi09pM1DFThLjMQCmLoUl/lIfwro24FotuEM1FyhfTec1bd JFRHG+gLjGiWIdAXjsuAaIOb91wsfc1BnnyrWWFAdVTSsoDpmR9rAkD0HiNFgZrW8ZZQ+NA5FqCn ywARlGmCg1yDz8sS3bKAaedYE4oFjBQFahbxryyJUnyyx4jQ9HMiioBmJApwKlHDf3JUcxyJw4cT +pEwoJv47L0EbxLiIM1+BuSU+oyHEfrZWRNRoGag6WSg2M/ZEZjhBL0a/XkGiKBMExzkGXw5olsW MO0ca0KxoIB/zSKmdii4CgZa+sIKhtoCG7oLDy5bxbgzEs1JupVobvk5Z73KNAzfDunWJmHORAEG m1LMgBifnr7mNWKYbTaE3oERVDCRRBLW4rAQjya9IYMeQSn60LykkMVZGCCLI11mU30aR1n8BhIZ ZFGG2pYNk33S6E3H4yx/mgU8K02MmT5HejQMBYb04BkYZ34On5Zg5peAj7sNk8MHmmLAgJhwoDnu 4umAARiGK5hFoW/4hraTQY7nbvZM0JAm50DABy+KHOvTOM6gNwAzRRXM4lKc6ZBGbjqd41ezgIed yqvc8NGBUMFAMygjmGEohloYeJHNrquODa6e8OG7tbcn4d9ZUBgvMpLscc3qotv2SNYpoIwxoNfC VC5wiBp8DXNcPZEMTKSyyKCn2xQJfWxeyq0WBZMrD4SRxz/VMlfjNxA3J4U1tS0bpuV3il53XFPh mnWc41lpss702QS+GAoM6YaCAhhjfg6flnXmF4ePuw2Tw5eKIwXEe540x0k0GIBhuIZxCkPDNxJG BrkOWTE9i/MzQcHk4KWyTn8aZNEHWRr4PsW5lO2QQa47neNXs4CHHetm2eEjWVcw0BxqCOYYiqEc Qz8Fhf/z6wkHPUjLnp1eZqZ4bH1qzVABjWTxRFYz9EReJokgL5OEn9UMmeJZoH/ldDKuGTLVLcri NxC2iUcZals2LKsZ6o7HWf40C3hWumaoSeeaISM9eA7G9ac8LKMZMuWkWN80ypuXFRx0ZWTCAUFe knAKfcO3jGboedmZ4Hn5meBZan0q0PSnWhFU6A3ATFGjLTIuxZkOMbXTy84DUUCX4Q== V2fSMjekd5ZeZ1hmaXsBgxYMbBHerLT0uj017L0QVAea4X5nV020LyHZf3BmoK6exZuvw0jgjbyR l9YWwEBEukEuxjSBQKUJYPEGLM0IqCkcKQFxlg2MKiE000vjF2X0DkXZC48kS5oXECWwdKhGJJXL EejQiDEX18VllSYKuFGCUWwC9s8gkrcdJw3PpWw1gedk1FHfb8RhQpGZeKGB69O5UAjLiCIegLaI wj99TPbEyJYsbV2cXRaxvHpCcZcU25BeMk13/MpeeBjx4hW02v6W8n4rF8aSPCEjrpDFlLSsYWkU RoTsS/8W8lKGSHJOyNsPIhlMFmJ5doMF63jRdRPsb5Qn7BHFUloxUMMoXlZhkw+h/jhhVLT0IxFo MCnyPd6/ptXb8vYyRt9dRcUTp23knwzPPPtRbVhymqbo+FOrElJ1QMFgoeSUE7ryT82n0Go4lB3H zEiDI/TN6Ki/09EJfcPgtB6ghvmOQSb/1nOCHk2P5KOkzuBRpFs9bdod73iDYc3T1R5Wr+WzoSf9 IAfgX/TjX/B6PdXt0L/Qy4VF/QgGDHPPCgYFo6QMxwgG+JsJBjN/olT+2YJBLUJ7eXr2+ixYzgnD 5iX2vE0YFS39mBEMinyP969p9bZUwRDqlSxb1PTln9iasx+ZYDBz3Z63bFG7RjAAp5RgMHwKrYZD 2XFbMMSuGZ3YtUYnZpJXLWgFo+WeIpN/6zkh5YTukRIhtmBQpFs9bWYlaueCQTWvBIPpdSoofPPs FQL4F30JhsHKBffv9DvS2EVmv1MVhzWMVl4UpCsvfeCLNBDWIsV7GeV6VpgCh02oQE8iqZjqIQlU pWENo4BThU4+6BVOj5FWOtQjEWkwqT5QU1FoTd8oZFOwBPkgu6NFrGwysJZI5tEwzvpWSYgg1XpT hHL3TZg0laWFNcxLeU2rMLa4RY8RU9Fk/3FlGzxRxIZJPaTDpB6R02p9K1jAsAWxNT+C2O4mo9Dg UfRb/W3a3e9QTlhMRzmRYXsKMBSln+QA/JN+3Hai4wqe/5jfrgdbtpzDXQd2KDT2gdsOSh54dmMK ZIRnzwnUr5R+h+f8HIST2jwHWNGAP7tS9jCcmCZmWgzc1DVunqWLHVd8+jZdxWKjYyAvPWYxFLXs 55RogxN75fE+NzM8KC/eJGRk3vFnSabT9lky0rOfVViJgYp0vMyzZD/eBEGPnuObH6WA4SBinnlO qfANL9JMKY0SBRXjlbBHLxIp82X6J76MYi2DzIDk9DHPaa/jHMkaJXbJ6n8zw49OFRmL9TJp2B4M CxLISh3ZAcri6Vef8Qd8kNrRVYPlixWKE2QiAPUXIyPiKCdWZOSQeY6ELVZgKmXFComqzKL27EWd FQFRDh0DCVuspGFQUY5ogxN75fE+NzM8GIBYiYQtViSZTtvndIHazzmxQisiL5yUDMC8Ti4zcmJF Ms88p1SY5zgrVuKEj16c2KMXJ5ZYwZeNjNDIGCiyxUra6zhHskYZJkN2/5s5Yd2tWEnDy7KDY0Ei kRUieUgulKx7seL2HhzbkVjp/hr7PuwkNzbjTGUv41jLFUy3MUvUlUvUAmHEpHkOcFHy50gKAoYT c2xMi0Fkz+wgSleGUlciLsYUOg6KbclGdZytZyMMlVzx+NqK6fIxiwelyRXWLymxfYtM3mrmmRhp f6/lCoOG6XiZZ8n+VF0JgdVmg5V+EwsUU9/DDBXm2ZOiwKDEkpWMaj8jl/yU+alc8S0h5CkhFVrT h+sAcUZpC5UoVCihS3b/mxl+dFpa3GI9yZXM4FiQQAbUZwcoi6dfo6rjopf/mE3VkQenp4KfA0+4 9PorKdq3/oZxF25MEc0hnjWmyTJOFLoMhkfy6Vt44U3s2xB6h5KbUliAtdRITbdgIvH8IYMd7Dx6 y9CgIJS0koFR2oyInYjBMPfFxm5BFC43S2vLhlGPDHbVa0ODgjQL+FViIlSG8jsGM5QzCgpghvN5 fCw5Sv0iVEsMg2BjF1AlPA3DYnR6VELfCTlE89vAGIUe4xvqAkMGexSls8z0LFL8ZhyI2NhFnsu/ THLYkxwNlEeV51KuRwa76nWeX80CHnaeWJUhLE2uyrGMQw3BHEMxlGPo63qv/q/D6cIm7rWx0u7b idy0qlosgH8uKZ0RVlDwDcjFsmjyJRC5CWWCMwi9A7qLhgUxDJBL+guHgW2TDGnkoD/SS4YCBUE1 Is7AUBVJGn6CdfsUDCE2cguicSUZUls2jDpksKtOGxoUpFnArfLU0zhD+R2DGcoZBQUww/g8PqOy 6l9C1RLDEPKhi30s+KNgVBxSjUoIUohDNL8NjFPoGL75PmaYa+x4X4KcZLpnruI344Crxw5v5wkc 9qUnstgZRE9PA2NcEtkeGeyq13l+NQt42LEJnR1SytIqGFQONQRzDMVQjoGJQTfuVjKVfH9OP2G4 eC0gFpxi+ece3YiNgl/BqBqXfEtmdluANKfYwEy2LoOlCeQGuUowNySYrHS8fcGGYRRnQoon+zJI stgNJDC4kgytLRtGHdLIdZ81CSZfPc+t8tIV4gzhdwzGCDcUFMAY43P4TLqC/kXnsjMMHh86z0et WsGoOJpiNyWKM4hht4ZxCh3DN0pIN9hVwjrrmc5yZxxI+NCBHcK/DHPYwywNgCvM0triMNUjjV33 OsevZgEPO07Nyg6prNWXH1QO5dnvRQNbhLdvGdX/vThd31vtqlL09r3V+09X9/8uuxL5/b/bnpuW dYF1WaWLOq5Hjtl6IsEo3QhvxAip2JyG4XF/ElJp1HIv9TAtYKXgJKZWQ7xVPQ1mogKyIoElJkva YJ1XD2vaY/lLj+o+Rmndw4sMwSJyEnUpTEB1ttSb3+mGHMenmkkGY9yg+5NZs1nq/t7b6YvGhEMV VYO7ob7/mGQsmiupxfuwqVo91szDkq1Yx1IDEaTeixoxRm7bIE96Ug0Qy1FF8ojLBlLshmkCy+TS e4YUDcKbJoMssEVAqkBugK4Is03YII0vzBLdygCpc6YJzQJDigY1i/hX2sWhrOsp/XcVToSmnxNR AGQjUYBTXxzKfvJUcxyJx4fTSZyYAWk962GimDAO0uw3QIvSiPHQx2wZ04QLFmY6A00nE8V+zo6E D6ebJPxjV+Sa4KDI4MsR3bKAaedME5oFBfxrFjG1U+9+fqBJuhQNNQczujmSNmALSV/uH7/jJMgy /D+91sEov/CgEfdY0IZvypj5NZCbthI2l6lF3BjxgibhpHcq0e4ZJmlKI928RLuswMLcWOEYf7zI 0Kqu3MKd28d79/SbCPTV9eQKo9QD3JC1a1PWzb1bGSZyCKLq+2ont9eo4BJqwMndDy8ZhoHyMRsr rYfv473UCiaFYPqW4+H96gYSyXeU/PRlGb44Dl0tPlMYEDdkkEe+fMmQoCAomvwMrEWwCNUHDZOi giG3ABpVkKG0xWFpfwxy1WdDgoI0C7hV3n7qZyi/YzBDOaOgAGb4nsdntlL9i6daYhg8PnJOjLuI glHgsxoUuo6DQTS/DYxTGBq+Bbh1GuxJouaY7lmi+M04kPCxk2XxFUxqSBw7g0QGV5bWFoelPTLY Va/z/GoW8LDjjTM7pHLfzA8qhxqCOYZiKMfQT306v/cUprJ9hYYReINBlFp6Wo5ooJE1CPLwqkAO CuVbXE5h3AMVMm1ZQB+NkYCJKgSl10rF7C0C8dmggVxaaaCROroJDgoMviBLdMsCpp1jTSgWMFIU qFnEv/LFlqafyy1GPyeiCGhGogBnXnZ5jqea40g8PpxSvmigEULIficJXAuk2c+AnNKQ8TBxUhsi bcKN1Qw0nYwV+zk7Yj6cUs5ooBFGugkOCg2+HNEtC5h2jjWhWFDAv2YRU7uWZpo8W5wxBlpgQ7eF pA2YI+mr5Gb/VkDX1xyGyrWYuebw57+u7r+fletd1DjLv+jw7/An+kPshkM8HvHIwxHR7cAC04zJ aIjoinn9LATF5On3s8/y/Ydu1PGO7Te8rVO5QXsNmuo1gL6LJnq1R7tg2T98vbyePL6np8xUoAYf /5LTgn5mf6rJUbSsq2/Prq8+3J/dfIdFff1w9q+robMfP9DvefULfhm6vr96gD5fDT389fO/EAKf qNer1bW99cr/BzhdosE= ipython-ipyparallel-14e3c43/docs/source/reference/figs/dagdeps.pdf000066400000000000000000000410171520071063500252720ustar00rootroot00000000000000%PDF-1.4 %¬Ü «º 1 0 obj << /Type /Catalog /Pages 2 0 R >> endobj 8 0 obj << /XObject 7 0 R /Pattern 5 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] /ExtGState 4 0 R /Shading 6 0 R /Font 3 0 R >> endobj 10 0 obj << /Contents 9 0 R /Type /Page /Resources 8 0 R /Parent 2 0 R /MediaBox [ 0 0 576 432 ] >> endobj 9 0 obj << /Filter /FlateDecode /Length 11 0 R >> stream xœ­�ËŽ,9’ž÷þ±”6!Þ/Û¤f7Pz€�ÔÂ`F€z£××÷›{dÍãD80êꃪ“–t’F£ÝÍoÿ²¥Û?ÝâíoüùÇ-ÜÂíßnµ7þý¯öï’ÿŽÿ¯í¶ÿsÓo=aÿ·ÿvûßüàŸøó�[ÎñÞʘ©öÓmôû cæPKˆ|9çzϵ”™âèõVB»çb©×rû×í¿n=ÜC©%†X[ºåXï³ÆÞûyþÿø@ åËœ!å’Ç­Ç{l3ôTf6>Æ~ï£Ç03äšï#ö–Jl£ 7q¾. Öq/-ðÏ,³_ù@¬ýc`5C `õw~¹¥œøÈÕ„j†ë-õtom€€œÂ¥-ØbŽ#×É ˜÷>G` Ítåir¬-� à/=çGéq^žg½·ÜÛ¬Ù6�ò½qV¥ ö~õ^÷íÅÖî}Æ�b½0º´MÍÖúd×ĉqâ|b~ýméŸÆ~§½�£¿ïºÅ{¨­[ëâ˜3[jOÚ8Xå·ãsãNŽe$®V�W>ðmï…áåcãjÔšØrÓÝ­¥ßs/•Ó�ÌoŒ“ƒ-!ÇKaiŒÚKÒ2C¯‹õʾý·|½¼)ÀfÚ‰wÜF¸ÇfᲉy¤ RžYG”]ò�‰ äö\�v?Ž×”~NxrÞG‚Ôã ’ƒÀj¼�”C.1g£ŸO¸±kD¡£uCN.í_äÀùY2òÿÀÚ/Œÿóå¸0øß»øOx½²÷�îv]ºî,<·Bû OËW>p�i_øÀG¦ý™?\@áçM^ €ïøÆ@¿}á;|”®W–ðí _)éãI_á‚_¿ð• |ûÂ%- ¶†èØ`ýÒK“…_ÚÄ—ä3°3l(h1%<øËÐÏ|äË`îªI‹9ÙÄ�ÙÌ|Ôã~›ýËñßVÿ¯Wdð•/|!…Ô~ö(Ï;©qW`4=„tùŸ‰'%.]ë­ïœ&sëùJçøÁ•%|ýÀw-~Ô{üUbu…B±Ô/:´±·‚öÊàÏË»ô…OªÞ.N>Ø92ƒ>H›‹ã{024ü!�Zb®óÊø+õã.±á?ÊË+Úô·/|>¢+_ø~ˆ_—p�›UN÷Ø¥è<`y@¸µæ+dðeü÷cü¶€¯zÑ—|Wɯ¬à£bõ DÙGFu… ýéãWDÁŸÇ~·E?Þï‹¶À‡ñ=Æ·%> þ޹o«ÿîÂù²ü¯üÿ“­~I‚~ÿÝþ8þûµÿ¬a~¾4߯^¸5_¾ðÝÿÌY/‰�/_øÊü?_Ò/È•ÁŸ×ÿõ ßL±¾ýÑS\nÿ÷ð—{I#¥dtćïL8Rd'õšÇ­MðÖs1>b(îÔûµñÚ¤xy5o1‡uÏ Z”³x\ñ—8^î Zô=MÄ+×H5ÂŒÒxÙŒ5@1ý¢»X_ˆ0°�’�Z÷Y[¥�Þ5׃¾zØz°e)ÎeÌxI@¦Ê”q0(ï9ÞÁ/{ÓÜnß�:÷Ø1±’cªüu¶Êޏ¡—ÄU‰(_½µ¶{ýùǪŽ&pÍs˜ �ÑZ:DRŒåÎA†sc¯ì!FpZ1$˜*U&7²zÍ÷¡“N©Â Ïab¨ÍÉ…,»÷ä+P4 ߟ<¥7öÀ!³ïyíÒsæl¬ÇZîap.ϸ&y › #í¤ˆ>!Œ„:ÛÎs®x�!Ö"[Ö¤‹N•Õ°ç,öð�b÷1vj!°ä¹çæ¸f:J%�ÂÚS:²éÔ¹_!)|WYÑ¢X¶ÑŸ]ˆ1²Ã.d]ó#³¤û¯~ó]‡–Ú¨£]s ²›þÐ_°«D®3Í+¼_–ÐDë-G„¶ ãN_ÑÅIëu;[„¿Ýw’9z�_À �ƒV~ΰsU ׄõÎK®Ð¨3{îž« K³Ñ]p¡Î¶ø£Ý¥™õ-¤JJWmßî?øOv>P²'\ô&ë �d>˜öH÷TGµÕkîdQ2$ÛeÄÔ,h´ð2QÁ%W,J�¸MÛÕ<$ýhì‡EÏxÉ™œJ\¶�ÛeŽ�[ŒœÎñ¢#�µ•Ë bÜ"cøÓò%†ß…°2 ™aN~¯(œtŠýš/™/p­†ºÛí èº_ $Ó.úί�S”;üˆN•¯ñÃ2Q w Tû…+Í^âµ`’! ‡ç-Ö­špµ‰ÝÛ®!£F¼„ÃϦ(t5r©^ÚZ-:]>$‚–B¶”ÜÒ;‚Ãù=W§¡Ðë…Q|7!k½—' F­UÎîL©—˜nb‰_àJ�Þ¸EñÚ)JÎÌ]Aß Ì�F�,º¦)ª÷ËŒ´£ÀI0ÈzI#ß—Àí:¾À_ Åè#õZN•Ùø=)ö†0åP M'ÿèF–r~… ŒM‰ äÑó%F>9ö¸ÓÎð+¶&— �ðš7y"�âhuw…ˆòÛ¸»:.ä7É(øµ°Á‹i{õpö|ó)c“÷�— ™Z:øùŠ?Yö„”øŸý'醰·„RþUœIïƒi錆ô oŒõq {ÒÇ¥€‡°óë ûf­\Î/º”§\õG#‘4ƒ›gîe—$öᯛ‡• ÑMÙÊÕì,Ý»_«Š[’PF‹¸Í€ßrà=v-'ž qL�ý üÊJȒÚln£oÕ^¿Þ¢Ò¥ƒ”«:)Ò�xâÆkÙa…k_Ó¯B\u‹PÊ0 ®y™¤°�§§+Ûõb®y•E§�[ßµ ~¯ó�5ÀZ®ˆó”a>Q¼”íó‹%Œ¯qmó«\ñ × âìÒòK©ž„×ë¸õþït*GøýÛßÿö.Ù$1Ë ©eÙRœˆ©h溣5bh@Nië¨} ¾6”£×sí%}B—Î0ç HCÄÏíRØôc,¾5ÄgP äÇ‹¨Ä ( RænCúê’‹Ôþ÷pà ÜV$B@jÍÏ*0"{Â1ù›[ñDsãrZêí±­»½ÉuŠTã„â˜M˜smnP§Žco+�';z,Ê�åæÂ\*s±”uVstȧ up1ÜŠËþ'‚.Ž&év+³¿‹OWÄãižqìÀ¯ç³¹Y—“½¹Ÿ¨bÙ­§¨OŽÿLÄKÇßÉžËô÷¿ùÜ÷ ·ºÜŸ­˜Í%½(Ñ�©{p7_«(„±›òž’¤):öœÔhîáä:W�dÁEùüYËBúÄùå,[µËsŽ®<µY&„“fX»ù"³H˜#Cºzà’­ÿXÁ›”ß*kªÎ€îêfåì`¬¨8EcÝŠ9;t\Œ„O�è—ÝÚéÁåÑ&t<žR&*ý˜xEñ¶Â·¬¨$hZs¸‘MÖ(²‡e!ÌÖ)7´AÈ»&‰ÛqZîMœ3‡ :Hs[E×DÕåê@yÉ#ižìÁ¯‡³¹Y—c½¹{’XvëÉÉ¡Éâ'"~lFó«º'{  æ  SÆ‘ìØõÜcxâ  ¹Hœ9{…%W©UùcN€:¹§P‹ŠY3†…Ù�¾Ç¶¢.2\Hæ´-ˆäLÈ?iš1)`œ{ ’D‚¢¡ nD”í3ôUKÝgx»,7ÑQ“›è@ƒ”�"~µùus®  惓lÝ/›œÐ’4„æÚ¾¶ÌÑbpBhÃëÖ+�/CRQ.A¨ax8'…ªŒÐR4ó<¯QTEy ½œmDUÐXѸ�žË–�ʆž¸mžÐå¡Ù¾Õ2óm=æÍ¯ûD$릅-øÚ�^ŽÈM¼œîm]öv"�× ;¢r˜Z¨ñrНú'–l´¿šÿ{•[šâܳÆ\¤¦+çPéJ�“ÁwEq-Ò‘ôДú!ï_‹R02× í µnÛßJ€)FÙø§˜�< ¥5¸iÛRm”÷•“¢â¹v‚¾z-D¦>áD` Å4w7323ÝÑSÁªc´_wÉ÷)÷= ¥5[÷˦MVwx%¢‹|E×&9ßgU�™ÍÊÌÛ&¦�ºß†\ä!Gå«v"ö ÛŽXï Ëч-ÓûNTÒÙ«“Tb=(Žu´—ý2ÄÈêá H8¡­À¸`³ìä ŽîÒðŠÌÕv†¾úÀ¶ÇŽj k2k©¹™Ñìùeeò)ä7¿î”¥™‚T,h±îeÓf ¡×r`3•éÐ…Å!+S#xJôž»È—¥»Küï·a…oÝU)ÞÌ Yh'«ó¢!ÊŽ–6öë°n¨\Îa”� =º<Ô#ÛÃ×£Zf¾­Ç¼ùuŸˆdÝ´£°_›§Í?“õÙ°;!Ìì%XWsSZÃlRíà%CñY¹lZß3YWà�}8è68 …Ds˜Ò2Ö9eEÄÂAúôËp@WjÃ4�e«·Á9´¬¬…Q’¢~¦)_|wÁäm�aNÔV¸´ ¹ž×‘èpÊjÉE C¿N¹¡ŒÃ'Eœýro �’"ó‚˲ìæ(—1j¶2†ŠV Ç®ƒ.³¹9_Oôæ–ë‰aݪ#$‡#O‚È÷ì õ!¹ªl¶ß¸ß{7ƒ)½€eÉÁëà[UÂ"&ÊÕ ÈoØ/1{« ¤�ÀxI»18MEJÌþS3äåØÍVXæ@ûS8°*ÔîÐ3«Ü+R5¡FNm ÞWèæB‰�óhÔ\ÅédµiôëÌ›TdŒC,İϼ®[i‘JˆÃ¶LÕ¾½îšƒ•?dÄ>ÒæÖ•à¬t¶–NÐ J,Δ¤ÇpµÎ£Ó]a0†ï£_&¨DDñ»Îøí¼j´è–aÜ™¹›@¯{V„,ˆ?—úæñµ@}àöq½ž•›Ù�ó²nG%2‰Ý¦�9„9úüHÝ–/Ñ=¥añ³“i‰$ü–\ââ,2ø¼¤¤øy“…“µƒÿ°1…þ‹)јÌÈ”á8eçǨH6rNŽ4$&ê&›SÙ!P‘Ü wr2KÊüEà£ÝDà�q?A—�¤ä³‡³‰ýå”Xg¶ô«)µH¢2m~ÝuìÉ^]�[÷Ï–-Ÿ£¢€ç‰j®Ìꪳ¥èÄüB]|Sey¶Íâ[á^•_Ü–ãf”÷%)ôj¶ñy±JP,¾ÈDÝÖ­í°Å‰EkÖ­G“‡z$;¸;¢eæÛz¼›_÷‰8^·ìèjÁÕæ òO”|ˆ‚5) Áò*Gu�OŽ‹ÆÑÇ\þÝ1%RQ„�…å¥sîÊcÂó´gÅò0N–âî/¨u°˜žö�B�ì°*ÐmÞ_pÒ±\ÌÇÏ–Ë›rŠOÐ×\ªíq†Ãšì3¥»™Í¥•áÓ‚Úüº•Š;,웺)(¯›¬˜kåŸ`.¹_[–kPâ¾%";d¯À‡eú`}Jl[„`�sRƦÐ|Óy^eðÊ*æ²(ýš•Ç5›„ÈxÝðmÊ}©ŠžfþW¸$­=6^Ni™õæxYñv¦Žu·Ž´¢ªüLÒg7¨OÆ@ÁCât%à΃Ý#·ØòT¸d‹õ!ï«eüö½�¸ËÁàyÆð•´Á�SœFUwE~©TbïO†¯°kÆ(Jf¢&�eÃ’¼¿ ¢Ð*E¬(zÞNÐ%…ä`ø ÜbòH뢊ufKIËrc 3Ú¯{ò©$U&S†ÿ»kà–‡ì• ·âkéÊ®å$Z9¸Ñ ²tçûc„: ””Ï£ëzòž7³LE1I•Š.ùUoƕӚôu·ç�w%ÙvE�<¾èæv§Ñ™OçìÖ}¢’eÓ'[æÉóiâSÀg•)3¬de÷±71�º*Ĥxÿ ß”h'?1ó>º©¢Œs ¡ÃÐÄ~=My© %y²2HQkQY`ãúËA�f&O¦’$‡²•ï “ŒM¢ž ó¡«ÜUù©°‰ââ tsÙp�óhe…Ê‹XTø¹Î¼¡ªÜ•*¨ÜuÍìÖ�mØàîÜp®o/»ÞTÊï))ë1ÆÉfA>ÊSßÝ–z+AMá7Z5†ð^¥á+Ob�ySê.ú†SÚÁiÝIægˆpˆ¤œ…u×›J±+]%0#yŒ� +¾Ï£—Óò3¯'½®{ótrÚµ§²WŒmŽ‚?Ó÷Ÿ�ŸsÊ \7h"Yµ¥,ŒnÛP¨w…oJ‚ÅöྴW ü5Áxº*̪ IšŠÒlíö#,Cïf*° ý%ØŸ&ïè¬MRU¡Ÿ¦B 9¸‚>†z¨éÀ/«œw…n.WöqͱÌ´€¼­3[™»’VdÑÙÌëºUãŠ>"·‡eˆ­»Þα ƒ’çfõ›Gå@Foê>Çw…J»“Ã0NŒ¥®ŸG'QP9ç]Hüμ©z‚EÉ'PK~³îb¥Á%£¦—]JüîÚ ÀsV~B Ê–róÐß§Ñî´ÜÌuožNN»vT¶`lsü™¾Ï“/#PŽ8æG—³d÷Á"àhÓ�í:„©$š²f#ÜßÙëžì¯8$æ�,(H°Ã·U͉§(þ�UÆo1«£ú=…g°R¹æ¬­g‘Ž× râ{èkñÃö8ÃUÕŠº$@dëÌVäƒGÃTÝøæ×ÝU"V�ùÿq^7 †aµ" lÅ_›Xu)ÊAe)óT³±B÷ËP@{h¼)½`ª–%àݼ <©€36žVm°~ó³(ܶìÙ¨�‘ȤN9ák�n®Ôäq½žÕ2óéœÝºOTâvýJb›Ã×J»Ÿ)ûÏñ³µžd”b{ÜÍbÙÚ]ÙÛ(“ꆔt+âI&Þ$¿8½iš�òcéïn#ígàô@OsxÊQ} ¨ÌßÍ‘ý‹ãÍ-£Ô¤UKr:°²ƒšÚC4+ÙXfÝ,5Hu^IîG¿b¥”š¨R"èô»mˆ‹*]ÛãižqìÁ¯ç³¹Y—“½¹{ªXvë)jÅ“§ÅOt¼ ¾,g«Ôãó¥íá±&× Œ‹Û�7…”ö.u\”””üÔ¢Eªº„·Óbêí®\˜§â0è•òÌHèÁ„[1§ÀæTõYRÌQ¹¾üFÝ3ýeýi²Qts•k�óèzoŠð‚\±ûefËfUFn€ÉÚÌëº�ù'8[`ïu׿~ †BëV ¶ ¬*…¦ÈºÖñ8d/À‡E*¥E£ò§è VÔ]"Dœ÷¡Ë¤ /ME±ÐƇR#Ü’£Ú‹¨üS[l7·aÅ®ÜuXVÿæ�µB}‘àã ^ŽÊÏ»œòæWíIÄmÙÑ—C×J»Ÿ)ûJ>•õá”Pr²–¾ÊÈ©JÀ:\© ܪ±ßÂÓ«˜ÕC¬©bÐÒf8�¡tðÃ'™“ÚN©T¨góî©B°b�MµQÉŠ€O•–®\ØØŸÞP¹“¥Þ(¥°8èæÊ§ÑEMs`*¨S£_g¶óºîÒT¢%æ„Õgß~Ýõv” ÎÙÂlºÉ<)\�Så#Ø3Y5‡‡gÐ�…Ù)_íð¤ºi!"”‰¾»$·ó¢›LAÕÂí®T·ehLµüOg©C×õµŸ�ÓhwTnfwÌ˺‘è»];ssäù‘¸÷ËàK‹•Ü�F‡(‰s/=Îwö—ê^$¸Â-_Ã. m4x›JüŠJÆI_fÕYmb6+fÎêžÞÂådž”#G…�›Š<@R‘’®tœ,'›eV2©›Ü‹<ü�æ]*¢•ëèá2vÅPÔÿÀÍ TêL�¥D�öëVŽ¿²ì\2ÝÈmZv I‡’h6�0õŒF‰HžS%÷ •¾(+²!§¬^Ð�Žr°ÅXUX¹Îlúà´6*ªSÜÎëŽr°ÔÔ÷"Çu×Ö†K¾š´×VzŒ-P_�þ8�v§åfv'½¬ÛщÎÒíz%2‡°•~WtoúÆMäzv`L§Ñ”SÕÌkª ‰ß�Þ»BÕ ­N¹ðÒÅdÁgá.5ó° ÿ1,±¥í^"cš²d÷Ü)üu3mÝ|ÄCýv’š…HýœXø-𦝬hn¾v2”ƒä K£‘íq†—{+ÓŠå¥[f6�‰jÿHb´_wVú—ÐP$ÃÜ®Í'?8¸ªFQsÅ×&WÎÈÜGغ¬Çõ åÓƒsVž¤Ìæ ‚£3·ðݼ,3™ëÆTn¿j«k(P8¤°¯{ÞS”‚ºã˜1àñµ@7×ÖåqíÎj™ùtÎnÝ'*Yv}¢±a+u~"ìýø®OC¹È¨‚A1ul5 LIQ¼>TÉeˆb%S)‡Pž\öÍÒô)KMS ‹©F -ÚÄÈêðÒ,5Me YµJ%‹5¢h«VUí¦”§^.êîšy U�¡Â‘ÑNÐ¥UÕö8ÃQƒ²‚”ÝãfŠ1íØÔ–(¸®[ 2“²(z/Ï”ºß]›×¾Ã•çŠ/‹ wm9*ûÔwØrЇeˆ ¹fUµèÀ›’Ë”�PrÞÌ‹m*ÕNÉ"Ê#q«Þ,± «ÖøÒíyOŠ«j¤b±¾èæƒ=N£ÝY-3ŸÎÙ­ûD%Ë®O4¶ ÌQç'Â~¦-½€%Ýf×é±#K)Râ“ò³b?+Ø’¿“ô»©°Q“³�ëß±`æž7Ž´¬<[�x²65˜VªÄ�1¥Ý©âôÖääC$ó QõµÆ™Ñìª"ê9'W[Q‘ðÍ×îÅÞTnCRÀsd?+, . VcÝŠáHœÉTjÑÜ[v+¿ªz3ˆ¹‰7®xR§ùîùu¤íŠãm*{Fe…ª:ÌŠ�­`eMô‘wkÕü:©ZS$ÕøÀÚ•”¼®WÉ@겋Á¨ÕºUä"äï�¡v‡£vBï ]Nf[g\Žô¶®ÕSòKOH+z< ~ ß?‡|c+Õ�Ö©æÐñ ªškʈ_áGT,X¶mÞ뇒5o숧=,–të´hKK”‹¬5k °‰»„à�’¾×¤ÞP«è=°ÅæóºnùžáY­ÛOXì¹këQ®qØ‚ÁjcWŒuù†*|›Lß t{ÆÅàÕH­žÏ£Õä‹ÝØÚ�½ÎlAâhÙ²M¹ùçu[xJýY”z[w½w W¾¬œ%ý„1]ñ}íNËÍìNzY÷æéä´kGe Æ6GÁŸéûÏîQ÷(ˆÖ_å¾â§=4e¾ìFûS\ôð�¨enªËÊ5z&K:V´50„zIŽ=4fmKv�Âã°uS­°"TùtèXS1ðŠ¬µú™¸9$t¶„þ—횃GÖ­rº,lA”úT5 ÊûZ_ÚPiñêõÛ6Âf™/^çÝìÑ”×ö ¯‹Ö§‡œT¿Í–-ÛCHñ¥ñÊ.õ¸^ÁÛzNnÞå„onÑŽ:¶uà ]9L­ô¸by…ýÙÄuÏ{È Ü¢úˆ-X ÝþÒ#mïéO¿MåäbæVvî²Ê–<iÎ&÷tA2gÕ^YÙŒnúoS9½‡”uÇ¥+–ÅöÒ®H¯Ã~ªeíÝÜ«$�óh5aŠM‘ö¸ý_šÊiïè ( ûÌ˺‹úeq:Õ÷Ýöî¿/MåŠzýekËtaÅš�(q]N�©¬PµéM/=ÒNƒÃk{5?o¯MåΫNíµµ›ßsª¯má<¾¨æq½ž•›Ù�ó²nG%â;ë®=�-sÔ»b{sÐs�%!©˜ß^SŠ{mºm(¶¸‚l=ŠJÿ­+wPvºÚ²EGAfP×á3+£\ Ó;AGƒm)§ÚëÈÄPY”ÊVŸÄÊb±ì~%N…ûÈ%Ÿ¡¯o;l�\�¤ZU1«9—™íf4è^É[ª pëÖƒwõ*}¬nÓ’ú˜‡j…«ýW|Yž&(ÉÞÙ:=I±BõéhOÖ¢\÷lOnô`í9ßÍ«Ü8µ�–cïWm–G(ê‘dµëžÍˆ@€¨(®—rÂ×ÝÜK�ÓhwVȨ̈svë>Q‰Ûõ+‰m_+í~¦ìý&ø·` ꯤ »ý97ô´$�–uMÞÚª£ÃJ±ÁÖ¸(kUKæ¿î�6³Ñ9Nå�¨¼UE»AÕ�V ¢îƪ®nö$ 6—š¾ª<Њ[ÔY%vŠf&ÝÜ“�óèfÏkÁ7ÕÏ�™Ñj¹€¡×¨ÚiÝYò,{Pâq[wmÏ9Éô•馆+Âr¶gPY‰%9l¯P$Á”º¥L 5¡: ÖB¬dj¼Î«÷U�ÂÏÑO«–‰®. Š'¨4fݳ¢±|JwÁŠ_V|­PÿÈã+¬LC=™³WÊÙÀ÷´¢àêÈÏ—z̶¬3MYL;YÆ÷Ä8Wkû©Ê$QnC/ª°°�ïÉENehñY¤¬Æ®¬Þ=‹Ý¾§˜"y¾ 5L§´uI;f|O2âO¨\ñ'¡Öª½«ÕϸyO6ózª%Ï¢Êå?wÓ;Lû]O8Êœéχ¶ë~ŒâÕ²rlà{±$}îÜ~üÖK5W–ã`ÃþL6i–Ÿ÷G«ôkEl›º6ð=Ù(ÐÕú“ÀÍÏ„„HöÊÃ>î=Õè[}¾¬q2Æe[„c¾÷T#‡êó�75ðªˆÊa¥6û¨÷$£ëûóŽˆÕS‘Üù¬lØ{‚‘y�2y<È©wa[«*8‰Ç°÷ä"qR!Éò|g3Éék]òêÎuÓŸÈ¥#1T�@¹�*¾«ÇÌïÉ%m0ý*|ÓVJmÚo}þ!—Þþ a‡i endstream endobj 11 0 obj 10705 endobj 16 0 obj << /Filter /FlateDecode /Length 68 >> stream xœ336S0P°0¦¦† æF– )†\@>ˆ•Ë˳Ì,Ì�,# �–.C c0mbl¤`fbdY 1 ºÒrø‘ endstream endobj 17 0 obj << /Filter /FlateDecode /Length 320 >> stream xœ5Q»qÅ0 ë5ð�ø•4�s¯ÊÛ¿ @;a@ª¼dJ¹\ê’U²ÂäG‡êMù>`¦üõ�ãèÙ!ºSÖ–{ËÄ<¥ŽXM–{¸�/ M‰¹…ó÷è+£0�ºÅß?@³$0ipðS�k­Zb‰<,X³+Ì­)TÈU|;6¹rq³Ð§š·Ü‚ðeˆdGj±¯Ëe)ò»õ „æˆO‰…ç�f"ñ'b{öÙbWW/ªÖI‡RÒln04E²êƒØWÇ5?OGÙÁÉA¿ŠÁø68™/Iy_¡�þÏÙȱ’C$ò}µÀˆ#l€¡Oí#e 4E÷î™R>&UŠïF!}ªW2¼‘Ùj†Íÿ]Ù* UYŸFp&ƒI8ód£ ÓRµÓ¿ûÜãóccz€ endstream endobj 18 0 obj << /Filter /FlateDecode /Length 317 >> stream xœ5RKrC1Û¿Sp�Θ¿}žt²jî¿­„'+°-@B./YÒK~Ô%Û¥ÃäW÷%±B>�íšÌRÅ÷³Ï-¯GÏ·- Q=ø2'"ÔÏÔè:xa—>¯N)x“¯á_x”NƒÀ;2Þ“‘$ÁšK‹MH”=Iü+åõ¤•4t~&+sù{r©j£É X¹Ø¤+)$=‰H²r½7VˆÞ�W’Çg%&Ý&±M´ÀãÜ•´„™˜BæX€Õt³ºúLXã°„ñ*aÕƒMž5©„f´ŽcdÃx÷ÂL‰…†ÃP›}• ª—�ÓÜ #¦GMví²[6ï!D£ù3,”ÁÇ($‡Nc$ Ò°€�9½°Š½æ 9Àˆe�š, mh%»zŽ…ÀМ³¥aÆ×ž×óþE[{£ endstream endobj 19 0 obj << /Filter /FlateDecode /Length 338 >> stream xœ5R9®Ý@ ë} ] €vÍœç©~î߆”_ C´VŠšŽ•iùe!U-“.¿íIm‰ò÷É ‰’W%Ú¥ ‘Pù<…T¿g˼¾Öœ K• ““’Ç% þ —Þ.çck?�#w=z`UŒ„Ë£kY:»Ãš�ü<¦?âr®X·cH ºqÚïCóyÈ f˜–Š ]V‰~Añ G­}÷XTX ÑíIpŒ�P‘€v�ÚH 9³»¨/úY”˜ tí‹"î¢ÀIÌœb]:ú>t,¨¿6ã˯ŽJúH+kLÚw£IiÌ"“®—Eo7o}=¸@ó.Ê^Í ASÖ(i|Ъ�c(še…wš 4LJÌ<‡3”ô}(~_K&º(‘? ¡_£ŒœosÑŸ¶ŠñÙa¯`…ÒÅšä}@*z`úÿ×øyþü¶€T endstream endobj 20 0 obj << /Filter /FlateDecode /Length 248 >> stream xœ-Q9’AËçzBsÓï±Ë‘÷ÿé ʃ†C :-qPÆO–+ÞòÈU´áï™ÁwÁ¡ßÊu9HÒTM¨]¼½vfó¤5,ƒë?c 7zqxLÆÙíu5{×kOfP2+qÉÄSuØÈ™ÃO¦Œ í\Ï È¹Öe¤›•ÆŒ„#M!RH¡ê&©3A�£«Q£�Å~éË#�aU#j û\KÛ×sÎ4;«<9¥GWœËÉÅ +ý¼ÍÀET«<p¿ÛCýœìä7ÞÒ¹³Åôø^s²¼0Xñæµ�Mµø7/âø=ãëùü¨¥[ endstream endobj 21 0 obj << /Filter /FlateDecode /Length 90 >> stream xœM�AÀ ï¼"OPDÐÿtzÒÿ_«Ô½ÀN‰E‚ô5jK0î¸2kP)˜”—ÀU0\ Úî¢Êþ2IL�†Ó{·ƒ²ñqƒÒIûöqz«ýzÝÒ"X endstream endobj 22 0 obj << /Filter /FlateDecode /Length 210 >> stream xœ5PË C1»g ¨�džV½uÿkmÐ;aÿBXÈ”y©ÉÎ)éK>:L¶.¿±" ­u%ìÊš ž+ï¡™²±ÑØâ`p&^€7`èi�5tႦ.•B�Å%ð™|u{è¾OxjrvCÉ` jºMX´<Ÿ�Nâÿ~Ãî-ä¡’óÊžùœíð;³ná'jv"Ñr2Ô³4ÇE> stream xœMQ»mD1 ëß\àëkyž R]öoCÉ� ¡/)§%öÆK á[¾ä‘UC?1ì3,=ÉäÔ?æ¹ÉT¾ª›˜Pbáýh¼t/"+Êß�e sÎ÷ࣗ`&4`¬oI&Õ¼3d‰¡ŽÃA›TwM,®Í3ÈíV7²:³ lx%âÆDÙ�Í`£Œ±•�År¨ ’Z`×éQ‹‚+”Ö t¢ÖĺÌà«çöv7C/ò਺x} ëK°Âè¥{,|®BÌôL;wI#½ð¦fR™�‘•:=b}·@ÿŸe+øûÉÏóý (\* endstream endobj 24 0 obj << /Filter /FlateDecode /Length 392 >> stream xœ=RKn1ÛÏ)¸@¥ðMrž©ÞîÝ[›ÌTª /¶1”— ©%?ê’ˆ3L~õr]âQò½ljgæ!î.6¦øXr_º†ØrÑšb±OÉ/È´TX¡VÝ£Cñ…(-à�á¾ÿñ¨Á×°…rÃ{d`JÔn@ÆCÑHYAaû‘è¤P¯láï( WÔ¬…¡tbˆ –)¾« ‰˜¨Ù ‡„•’ªÒñŒ¤ð[Á]‰aP[[ÛxfÐÙÞ‘�3íÑqYk?=é£Q2µQMg|ñÝ2RóÑè¤ÒÈÝÊCgÏB'`$æI˜çp#ážÛA 1ôq¯–Ol÷˜)V‘ð;ʽýÞ’�Ï{à,Œ\ÛìL'ðÑi§­¾býƒ?lK›\Ç+‡E¨¼(~×Aq|XÅ÷d£Dw´Ö#Õh% ÂÎí0òxÆyÙÞ´æôDh£DÔŽ=(²Å地§ü¬Í±ž&{o´�”Į̀„Ôvz¨¶ÏcÔwžûúü.¡ endstream endobj 25 0 obj << /Filter /FlateDecode /Length 80 >> stream xœEŒ» À0D{¦`~&fŸ(•³ JÜpOº{¸:2SÞa†‡ž ,†Sñ™£`5¸FR��죰n_u�æzS«õ÷*Ovvq=ÍËô endstream endobj 14 0 obj << /FontDescriptor 13 0 R /Name /BitstreamVeraSans-Roman /FontMatrix [ 0.001 0 0 0.001 0 0 ] /BaseFont /BitstreamVeraSans-Roman /Widths 12 0 R /Subtype /Type3 /CharProcs 15 0 R /Type /Font /FirstChar 0 /FontBBox [ -184 -236 1288 929 ] /Encoding << /Differences [ 48 /zero /one /two /three /four /five /six /seven /eight /nine ] /Type /Encoding >> /LastChar 255 >> endobj 13 0 obj << /Descent -236 /FontBBox [ -184 -236 1288 929 ] /StemV 0 /Flags 32 /XHeight 547 /Type /FontDescriptor /FontName /BitstreamVeraSans-Roman /MaxWidth 1342 /CapHeight 730 /ItalicAngle 0 /Ascent 929 >> endobj 12 0 obj [ 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 318 401 460 838 636 950 780 275 390 390 500 838 318 361 318 337 636 636 636 636 636 636 636 636 636 636 337 337 838 838 838 531 1000 684 686 698 770 632 575 775 752 295 295 656 557 863 748 787 603 787 695 635 611 732 684 989 685 611 685 390 337 390 838 500 500 613 635 550 635 615 352 635 634 278 278 579 278 974 634 612 635 635 411 521 392 634 592 818 592 592 525 636 337 636 838 600 636 600 318 636 518 1000 500 500 500 1342 635 400 1070 600 685 600 600 318 318 518 518 590 500 1000 500 1000 521 400 1023 600 525 611 636 401 636 636 636 636 337 500 500 1000 471 612 838 361 1000 500 500 838 401 401 500 636 636 318 500 401 471 612 969 969 969 531 684 684 684 684 684 684 974 698 632 632 632 632 295 295 295 295 775 748 787 787 787 787 787 838 787 732 732 732 732 611 605 630 613 613 613 613 613 613 982 550 615 615 615 615 278 278 278 278 612 634 612 612 612 612 612 838 612 634 634 634 634 592 635 592 ] endobj 15 0 obj << /seven 16 0 R /six 18 0 R /three 19 0 R /two 20 0 R /four 21 0 R /zero 22 0 R /nine 17 0 R /five 23 0 R /one 25 0 R /eight 24 0 R >> endobj 3 0 obj << /F1 14 0 R >> endobj 4 0 obj << >> endobj 5 0 obj << >> endobj 6 0 obj << >> endobj 7 0 obj << >> endobj 2 0 obj << /Count 1 /Kids [ 10 0 R ] /Type /Pages >> endobj 26 0 obj << /CreationDate (D:20110217132425-07'00') /Producer (matplotlib pdf backend r8851) /Creator (matplotlib 1.1.0svn, https://matplotlib.sf.net) >> endobj xref 0 27 0000000000 65535 f 0000000016 00000 n 0000016070 00000 n 0000015954 00000 n 0000015986 00000 n 0000016007 00000 n 0000016028 00000 n 0000016049 00000 n 0000000065 00000 n 0000000315 00000 n 0000000208 00000 n 0000011095 00000 n 0000014749 00000 n 0000014534 00000 n 0000014154 00000 n 0000015802 00000 n 0000011117 00000 n 0000011257 00000 n 0000011650 00000 n 0000012040 00000 n 0000012451 00000 n 0000012772 00000 n 0000012934 00000 n 0000013217 00000 n 0000013537 00000 n 0000014002 00000 n 0000016130 00000 n trailer << /Info 26 0 R /Root 1 0 R /Size 27 >> startxref 16290 %%EOF ipython-ipyparallel-14e3c43/docs/source/reference/figs/dagdeps.png000066400000000000000000006133041520071063500253110ustar00rootroot00000000000000‰PNG  IHDR Xšv‚psBIT|dˆ pHYsaa¨?§i IDATxœìÝwXS×ðo{ÉwÝ8°î½*jUÀ¶n±îŸuK]ˆ£jµZG[+Z«U‚X+ZZÜ ¢‚{\UHòþþH‰DH ñý<Ï}HnÎ=÷Ü�ÜÜ÷ž% "cŒ1ÆcŒaI€1ÆcŒ1öñà„1ÆcŒ1Vl8aŒ1ÆcŒ@cŒ1ÆcņÆcŒ1ÆX±á„1ÆcŒ1Vl8aŒ1ÆcŒ@cŒ1ÆcņÆcŒ1ÆX±á„1ÆcŒ1Vl8aŒ1ÆcŒ@cŒ1ÆcņÆcŒ1ÆX±á„1ÆcŒ1Vl8aŒ1ÆcŒ@cŒ1ÆcņÆcŒ1ÆX±á„1ÆcŒ1Vl8aŒ1ÆcŒ@cŒ1ÆcÅF\Ò`Œ1Æ>IIIˆŠŠÂùóçqíÚ5¤¥¥A,£|ùòhÔ¨7nŒúõëC(äû{Œ1¦‰€ˆ¨¤ ÁcŒ•VD„Ó§OcíÚuغҬ,ˆÌÊŽu!3´„€d'?BÖ³ë€\ŽÊUÜ0nÌ( 6 ¶¶¶%]|Æ+u8aŒ1Æ4xþü9¾5»ÿÚqùª�6 Ôéغ�jâŒ4àQ4µÂX LMM°æÇU4hï§eŒ±� Œ1Ƙÿý7¾8©2d½×õûÚ6­J‰‡`ÏTPôïèÞã3lûc+¬¬¬Š¶ÀŒ1ö�à„1Æ{�D"Á_~ ªÕä³0·+XFWö@<uª»áÈ?‡amm­ß‚2ÆØˆÆc,‡Ã‡£k·n�5ønD…¯åÉEˆ~n�&õjáøÑ#000ÐOAcìÅÃt0ÆcÿINNÆWƒ‡€ÜÛè'ø§ú� ß‹¨ÈH,Y²¤ðù1ÆØŽÆcì?“&OFÂË×�ûè)øÈV¥9¨ýtÌŸ�Ë—/ë/_Æûq,Æc Àƒàææê³ h5¸yˆÚÄEÉ�C3ÀÅè< pm¡ºñ±UÀ韀¤€© P·7Ðc`Rî]iÄK?AßöM¼½X��1ÆJ®aŒ1ÆüüóÏšXM‡)VDþ ¤<ÚOF¾øÈJÖ¶ny·áîÉ@Ø ÑEº®ó€Øà§N€Lú.�ØÒã°óÏ�xöìY±cŒ•&\Âcì£GD°¯àˆÄÞÀç?*V¦ÄåUJ3€…U�ò5�ч€WO€@ íd gŽþ—v¿õ¼×ž#Þ­ó€ŠX¶x!&MšTôÆc¥×€0ÆûèÅÅÅ!1þ9P£ó»•ï 6ìk¯ÿ·a$@r VwÕtµÿ{~q§êzSk*7ATT”þ Ïc@cŒ}ôÎ�;§xPÉ#ï„éÉÀ£s@…OÏe™Š¿bCÕtB1ðoîç2'œ9{®pfŒ±˜‡ø`Œ1ÆJ�ŒŒ ¼xññññˆ��ÇóçÏ5>~öì`hX:æ�éαŠ~ �¾UD„ääd•à!¯ÀâÕ«WºíÀÀ(ï×÷Í.l>_87T¬sª¸µ-jUÛñ׉ 5†� 33ÆÆÆº•‘1ÆÊ@cŒ•˜ÌÌLe-…¦@"ç󬬬¢+Œ,�¼‡Ý-Ǩ¾6$Ø6ØÐSñ\d´�¤Æ÷mrŠf[<#:cìcÅcŒ1½!"¼~ý:ÏæN9‹—/_–t‘ßyûHKÌlT× P,]€Ž3rognŒüHMP Ûkí'Ö ¼s§O¸�òŽN‰DEsŒ1VÊqÂc¬ÐÂÃÃ1|øpÄÇÇ#33³¤‹SpO.Õ;¾{¨>:Í:ÏÎ{[s;ÅDzޭÆåJ&||žMë±ÐŒ1öaá„1ÆX¡âñãÇ%]ŒÂˆ f G–æ5»µ{"UÓWñTü� À®š¢ƒúõ¿�“ë3¡;5PÝ&ó Ï¢éÀiE<Œ1VJqÂc,_YYYHHHÐØ7ãÞ½{%Z>¡P{{{888 |ùò(_¾<`llŒû÷ï#&&7oÞÌ;’gÖ]æ*†Õ½¶€¸q@±¨+dЇr)pl%�t_Ñÿù0ôO NÏÜûˆ †üm   �ÃfŒ± Œ1ö""¤¤¤hÕOãùóçHJJÊ•‡¹¹¹òB¿\¹rz/cvþÙûP÷8û¹���rHÛøøx„††B"‘àĉ "íwš–\Üx| Œ=¢Ý6Ÿ~­Xò#—Ç~€±©Nœ8�Ê•+C,æŸaÆØÇG@:�™cºHMMEBBd2ÌÌÌààà�@PÒÅbe”T*Õ8ï…ºçoß¾UÙ>»AÓE~ÎÇööö055Un+—Ëahh™L¦±|9ó×&°È™~’’’ðçŸB"‘ ""r¹\÷7 Ìl�™7swF/¬«�?' eË–8yò$ÜÝÝ1kÖ,|õÕWˆ0Æ -==—.]ÂÓ§O!•Jabb‚5jÀÝݽÔÍ9Äcz”••…°°0ìÚµ gΞÃý;·Tî¾ZZÛ ‰‡Úµmƒ¡C‡¢bÅŠ%XZVÚRSSµž÷"11÷¤w9kò»à·µµ-Ô�ÔàÁƒahh¨q?666zù)99»wï†D"Axx8¤R©ÎyˆD"T­ZwîÜy< DŠÑ«þ¡èÛ¡/nC¸¼F�Š5kÖ 66óçÏÇ®]»àææ¦ DxhÞâ#—ËqçÎ\½z©©©‰D°··GÆ aggWÒÅcL+ñññ ‚ä�?påúuÈÔÜ|±27ǧ-Z`¸Ÿ¼¼¼JÅy†Æô 33+V¬À«V#þÙSˆ*7‚¬rsÀÙ(ç EŠ!>Ÿ^‚àñ9ïD€²Þ¢OŸ>X¸`jÔ¨QÒ‡ÀЉT*EBB‚Öó^¨«¥°³³Ë·IRùòåaoo33³:Ò¢‘––†={ö@"‘`ÿþýÈÈÈÐ9¡PˆöíÛ£G�Ø¿?ÂÃÃÕ'ì<[1ônaƒ�WO ^וˉqñÂy˜››+_ºxñ"±sçN¸ººbÖ¬Y8p`©¸@(‹d2öïß�_~ú Ç�Ãë´4µé\*:¡wÿ~=z4ŸŸY©ôêÕ+L›:¿ýöDrB_¹9ZÁ0F@ Ò Çdà<ÞâoQ:NËRQ±¼|·C† )Ñ€0VH±±±øjÐ\»vÔtÐbŒbv伤'ç¶@t|D)ÿbј8q"Ï ðÊ®¥Ð¦ÙSv_Š÷O»fff:õuøØ>'éééØ¿?‚ƒƒ±wï^¤§§ëœ‡@ @«V­àãヾ}ûâÞ½{ðññÁ£G�òÞ°ÕxÀk Îg–tMž\„hSo8˜Èqúäq¸¸¸¨MvéÒ%"44®®®ð÷÷ÇàÁƒ9Ñ£�;wbÊÄoðàñ#xˆÌÐWf £>Œa!džBŠóHG$Òñ‡( ²LtëÜk~Z77·’>Æû÷ïLj!C‘š˜„Y2k G9Ø ÿß…‹x‹eHÂHF×Î�±aãF899C‰sㄱB Á—_}*_ 2ßß熺e�ùØ÷-p|zôø ¡;B`ll\$eeÚËYK¡M'í÷/ˆ³k)ò«¡È^ÊZ-…>ddd <<‰»wïFjjj�òñôô„��ú÷ï'''Èår,_¾þþþy6ÙêС:vìˆÙsæ@nãù¿•›h¿ci&ðÏb <ffæ¸|1®®®ùnvùòebÇŽ¨R¥Š2144Ô~ßLERRÆŒ IHz ,1›lÐ&ùn—9v ³ÄIH °tù÷=z4÷ãc%jݺu;v,º-ð«Ü• ûMŠ¿‘‚‘âØZãðÑ#¨Y³f”4o€0V@¡¡¡ðöñùnT ÛYP×÷Cø[_tjßa»ÿâ‹ =#"¤¥¥åÛ);ûybbb®Z SSÓ|;fçìKñ±ÕRèCVV""" ‘H°k×.¼zõª@ù4jÔ¾¾¾ðööV©qHLLÄàÁƒñ÷ßkÜV `Þ¼yøöÛo!‰ƒfÍ?EVÆ[ ZÅÄ‚µºi®yùˆÚqÔzÈSâñÅ€غu+æÏŸ�Ù³ó™È0‡+W®(‘Ê•+ÃßßC† ásƒŽž>}ŠŽmÛáÙ½ûX#³ÇXB݈È0 /ð3^bܸqXµjU©ëÐË>6l€ŸŸ&ÂËQB?Ë9ý‹,t=E’�9NEEjuƒDŸ8a¬®^½Š†�AZ·è‹-€>~Œnýá¯Ýñ¿ñc±bÅŠÂçWÆI¥R$&&jÕìI]-…@ PÖRhXp-EÑ�Éd8~ü8$ vî܉„„„åS§NeÐQ­Zµ\¯Ÿ>}¾¾¾y6¹ªP¡¶mÛ†víÚ)×5jÔ€��|||P»vm�ûZ¾|9fΜ™çÁ:tÀü•õýû÷Ghh¨ú�„âwÔåR€+W®Ä�!C`ee¥L&“ÉСCܾ}±±±°··×í@\»v ����H$pvvV"FF…»¨.«ˆ}?ÿÇ÷ìÃY%Tƒ~¶5HÂx<ÇÎ�;ñùçŸë%OÆò“••…f�#ë꜓U‚ôW‰t´ÄañwßaÚ´izË7?€0¦£Õ«Wã'‚&œ\šê7s¹ ¢5­àjð7¯_ýà«ùe2µí)>>oÞ¼QÙ^ ÀÖÖV«ŸÊ—/¯2º+]ˆçÎ�Cpp0BBBðøñãåãêêª :êׯŸg{|mš\ …BÌ›7þþþ¹Òøøx8;;#++KëòmÛ¶Mí,çOžð4x¼IºÌU,9[ œß $ÜUlcRpk©æ³b½wéîŸ~l‰ K—.ÅwpZJKKÓzYuµÆÆÆpppЪٓ­­-OÐö#"\¼x‰!!!¸wï^�òqvv†··7|}}Ѹqc­:´ÉUNË—/Ç”)S´.§­­-† †¥K—ª}}ÿþýèÞ½;–.]Š©S§j�¯:ׯ_Ç‚ ŒŠ+bæÌ™>|8"P ‹îâ䌖‰ØANH…óñ±È@ Þ"2Ì…æBõBKÛ‹µg�¢¶(ǎªU«ŠóÐØGˆˆP·VmÔ¸õ;I1b•7ãdð†%>�’!Ãr$á4Þà *£M†çã6!�`Œ—�áÞྚÏt"¤pÞüE 1}úôb9.@ÓAxx¸"(˜ppm¡X™ôø¾!àÔ°«DmºÌºÌQÝøà|EÇÕŠõ+ ñ>pxð2˜t(_]‘Žâ Ð¥� öî +òcÊ®¥Ð¶/…¦Z mj(`ffƣȔq×®]ƒD"�D"ÁÍ›7 ”‡ƒƒ¼½½áããƒæÍ›k]cPØ&WÙˆµkׯ�7´.³‡‡¬­­qèÐ!�i¦OŸŽ+VàøñãhÞ¼¹ÖykróæM,X°Û¶mƒ££#f̘�#F|Ô£éI$øúúâ Üð Œð™hˆûhcTƒ!6àæÁsÞ @´½XÄc­Yž>ÆýÃX‘:qâZ·n�èŒÿñ�¢Q'ñ>°Ðè4èðnýÑ0Ø?©))êlúæÍ�5êúRÈß›95»–B›Ÿìì츖‚áÎ�;�H$Æ•+W ”‡­­-úõë´nÝZç>:…mr•ÓÉ“'ѪU+�öß¿DDDàÅ‹À³²²Ðºuk<}ú±±±°¶¶ÖišÜºu ,Àü� *`ÆŒðóóû(‘v­[ƒNÇâ¨Ì9×k‰�Â·Õ º\¬Å! ®¸ƒõ¿þŠ#FÍ�0`îܹX·h ⥮ùv<ïˆ8<�×ážëµü>Ó�Šnx„Û·o£jÕªz+¿&|ÕÀ˜¢¢ÏCêÜLóÌȺÆó¦.>\š!+3S1ÚVÆ�ÉdHJJÒª†">>ijf÷Í®¥Èj×®­1È077çZ –¯¸¸8„„„ 88.\(PåÊ•CŸ>}àããƒöíÛxâ½Ó§OÃÇÇ'Ͼ%ù5¹ÊiÆ :—ÁÍÍ ;vìÀ£G�P¹reµi Œ `ذaøóÏ?õò]«^½:~ÿýwÌš5 .ÄĉñÝwßaúôéðóóƒ‰Iþó^”oß¾ÅÉÓ§±R¦¾oF^gh]Fr�>>èܹs¡ú-hÛäªcǎغu«Æ&W9%''#$$Dç²dÿhÇÄÄh @ÀÅÅ›6mBŸ>}°fÍŒ?^ç}iR½zulÞ¼YˆLš4IˆŒ9²Ì"—/_†T&Cc-&,,™Â#£Š|?ìãv9&_Pþ-!ÆâÒAøÁb8˜àâÅ‹ðññ)Pºà+Æ´ôöí[d¼M, —Ñt3@–©x\®0*°}o #3ŒÌQ¥JtéÒEmÓ' ®¥`Å">>¡¡¡�H$8qâD®�´abb‚Ï>û ¾¾¾èÖ­›^.„õÙä*§íÛ·çš7Fööö°³³CLL zõê•gÚÞ½{c„ ˜2e >ýôSxxx輿¼T«V ¿ýö›2™>>¸pá,-õ7\l¶ªU«bÓ¦MÊ@dÊ”)*�ˆ©©iþ™|@RRR`"ÁD^ôC˜[CЦ¦¦rŠŒ@ ȳé`^`!°öƒÂõ)#P±ÝØü°'`¬™˜˜(FâIU¸Œœ•õû)ES¬œdRÈ2RaaaQ¸}1¦ƒäädüþûïèÞ½;àçç‡Ã‡ë|ˆÅbtïÞ›7oF||:vìˆØØX�ƒ�˜˜œ?>Ï4šF=‰Dhذ¡Öˆ‘‘$ âãã1räÈÕ,iËÝÝ7nÄ­[·Ð£GL�:nnnX±bE®‘í>$R©±±±øùçŸ1dÈ,Z´²Ë!ÿï²ðCŸ¯‰•>ÙC˜/X°™oñRµéðH@ì0£€M¯”û!ž¤z#?\˜–D"ªÕ¬�›Obõ—©�1P¡¶b(ßœž_I³P·n]ýí‹15RSS±wï^cÿþýÈÌÌÔ9¡PˆöíÛÃÇÇ}úô�­­m”´èš\å¤MíG�:u•»ív²dÉ$$$h5I]ÕªU±~ýz 0:t€ŸŸŸÎeÖ…››‚‚‚0kÖ,,Z´Ó§OÇ’%K0uêTŒ=ºÔ)ûäÉDEE!22QQQ8wîœÚêd(ÝÿÿºxÄ"ß(bz‘‘‘�cÇŽaÏž= ÃÇ•¯E#w“ÐÀÿ‚�Y°Ãl~òÀ'�"^š�† :/mp˜š7mŒ»ç4Ü‹(€·)À“X Ê{ó<:�@Pl'öqIOOǾ}û ‘H°wïÞõwhÕª|||зo_­:wFQ6¹ÊöæÍüñÇù¦ûä“Oò @EMJ§N�´Ú¯¯¯/Ž9‚ &ÀÓÓ³Xn<¸ººâ×_Å·ß~‹E‹aæÌ™Ê ÇŒS*‘7oÞàÂ… Ê`#222ÏÿN1x«œŒ­¨œG:êÔªUà‘ÛKLLľ}û†ƒjìqo!AüßHXË‘ˆ¹H@W˜¡Ìù^€âù_Ÿ‘HqŠý22û� ;ˆPb´Î1kz4Þ€Þû£iÂc:h×®~ûí7Ålæv9ÆÙ¾¾ÈLSðì*p1Tñ¸VE§ó / �7àP /nÇWYé¹fM^Ü��›èµÍ<û¸edd <<‰»wïFjjj�òñôô„¯¯/úõë'''=—27¹\Žï¿ÿþþþzåJ“�;w"999ßtµk×V»^$¡jÕª077×)€•+WâôéÓðööƹsçŠ-¨R¥ Ö¯_,^¼þþþX¶l¦L™‚1cÆÛ9ˆˆpûöm•`ãâÅ‹yþÏ5ˆBºJ²©Hƒ)P4ÏºŠ „â5 Ìa¡NkpV,E³fÍ r¸ì#vóæMe-Ç©S§´jâšBRð9ýÄö"�†Pv_@†Z€+È€7ž¨¼6ÏmaЏ(_Û"x�:5jÁÙ9÷ü9E�'"dLééé¨PÑ ¯¼–½{!ÐU1£9ÅWœÞ=ž}°¨ì<8 ¼|È¥ŠuÕÚf5ßå•pXX7nÄСC‹éÈXY”••…ˆˆH$üùçŸZ]\«ãááx{{ÃÅÅ%ÿ ô¤8š\åÔ¦M?~<Ï4–––øõ×_ÕSyâÄ ´lÙ­Zµ‚³³3¶oß®Óþ¯_¿ŽÆ�ÃÇÇ7nÔi[}‰‹‹ÃâÅ‹±qãFXYYaÊ”);v¬Þ‘¤¤$œ={Vlœ={IIIzË¿ pîʹ\qqÈ�ë ­œíü(ÒÐïš½äL÷þÅÚy¤£1`×®]èÝ»·ÞÊÍÊ©TŠÓ§O+ƒŽ[·n震@K˜â(ŠæüûYpÜÅÚuë0jÔ¨"ÙÇû8aLGS§NÅk×C6íP®îo«Û{ðï“Çev¨LVtd2Ž?Žàà`ìܹ‰‰‰ʧnݺðññ���O±LJõ>m›\mß¾mÛ¶-ôþnÞ¼‰š5kæ›®G�4h�ÚäôéÓhÞ¼9&L˜€ððpܸqCçrlÞ¼C† Áï¿ÿŽ�ê¼½¾<|ø‹/FPP,--•�HAú;deeáòåËÊ`#22²@aºŠ@å"k†5ÿ"ÜÑ÷ÆñK,—ׯ_ãàÁƒ þ}ûô\ïG%t…þk% žâo BÜãÇÅÖ§‰¿5ŒéhÊ”)X½ö'È$~ÀÈ¿ ?,oN×ög7cù† |0�=}úxöìY�¶¯Q£†2èÐǪ̂¨g“«œ‚‚‚´JצM�åÊ®�iذ!Ö¬YƒÔÔT�kŒˆˆŒ=M›6E�5tÚ^_*W®ŒŸ~ú 3gÎÄwß}‡¹sç*›f�7.Ï‹”Ç�«çÏŸ/P?£Â˜ŒxœEe»y}¹ˆ·Ø,x�ÿ›ÁÁSŠ‹‹SÖr=zYYYÎËÎÎíÚµÃýû÷qîÜ9Ц…Cñ7à+=°†l¥dl^½¹XTàÆt�žžŽþýû¿kÒû ÍDýdžñêæh߬>ìßÇ“ 2�ªW¯Ž;wîh½�««+|||àëë‹zõê•èç.!!ƒƾ}û4¦ …ÀÌ™3 Ýä*[ff&*Uª„øøø|Óž={7oÞT[;qîÜ9xxx 66 6ÄÉ“'Ñ¢E �Ë“ššŠÆ�ÃÈÈäûaž IDAT‘‘‘¥âfÄ£G�ðÝwßaÆ 077ÇäÉ“1nÜ8ˆD"œ?^edª'OžäŸa1X {L/äð¤9e�ÐLôYÕ*ã\l ŒŒŠ~ÂCV:Éårœ;waaaسg.]ºT¨üjÕª///tèÐÇŽÊ+`ffssso§N�‚¯¯o±5¹ÊiïÞ½Zhذ!®]»¦öõ쀨víÚ000@LLL�sss„„„ iÓ¦˜ ))) ƒD"ÁÁƒ‘••…F�©M[¡Bôïß>>>hÞ¼y©™<­¤š\å¤íÌç-[¶„X,η –¡¡!êÔ©£õ„„êÔ«W«V­Â¨Q£Ð®];ôïß¿ÀyTbb"Ξ=«¬ÙˆŠŠÂ«W…œˆµˆ‰Åb <þþþ¨T©úôê…ÞÃ*wD¼y‰ô¿àãW¼Âo+¶¡JYÉ{öìöîÝ‹°°0>|¸PÍ ---Ñ­[7xyy¡[·nÊIÿ8€>}úàÊ•+øòË/ ¬q|ø©h(x€ßÉM¡[ ©„Õx‰™ÂÔ¨U†��M��©Àˆ1–¯äädòðð (¾û*‹‘‘›�ض2á«­„eo ?PþË”X4ð&ôYO/zöìYI&û¤¥¥QHHõíÛ—Œ�� yzzÒ?ü@�?&"¢Úµk²³³£¯¿þš"""H*•–pÉs{ñâuïÞ]í÷*{ …Xdå�‹‹#�@�g²—ï¾ûŽˆˆÖ¯_¯öõ«W¯*ó>|85lذPe“ËåäííM–––t÷îÝB啟ÌÌL:wî­Y³†HÕªUÓê=)-‹X,&???ºwïžÊq¥§§So//ô?XSj¡–NËU¸QS‘ Búí·ßŠôÿÀJž\.§‹/R`` 5mڴПMWWWš0a>|˜222TöuéÒ%êܹ3 V­ZÑÙ³g)--�zöì™gž¾¾¾äQ¿ òC9º×|?Ç™¨I;àDÍDf€Æ�O©©©%ô.q˜–.]ºD†††*'ŠŽŽ¦{÷îQç®ÝëM¬ m¾! ’¾½£H–K  c�¼¾'‘[ @å+T¤­[·’\./éÃc¥ØÛ·o鯿þ¢�™™âÇ£Q£F´dɺÿ~®ôaaatðàAÊÌÌ,þÂjéäÉ“äììœç�l… èÈ‘#EZŽyóæi}!IDD?ýô“Ú×oܸ¡ÌwÍš5d``�ë‚CW¯^½"777jܸq¡óÊ&—ËéáÇB“'O¦-Z(ƒY}/FFF$‹‹,ð000 ‘#Gªýd“J¥´bÅ 264$7± ­�%£z¾l×áF`M†B!Õ¬Z�Μ9£—÷Ÿ•>NãÆ�#—B}&yzzÒ¢E‹èòåËjߟܼy“ú~þ9‰„B2©Ì)ög:Š@eÚŠŠô l¨¹Èœ�½µ Í�;—ÒÓÓ ôÞ³Ò+!!�¶lÙBýû÷' ‹B}MLL¨W¯^”çy+55•æÍ›G¦¦¦dkkK?þø£òÆÂƒ¨fÍš÷!‰hãÆ�¹òÌÌ̤ÐÐPê߯¹:Wʵ�¡Ø€<ê×§ &ÐÅ‹‹ìýÔ ŒåãÊ•+äèèHÕªU£¸¸8ºwïµlÙRm“ˆ®]»æþòÒúõë髯¾"ÊÊÊ*�£`‚¬¬,:|ø0�1ByW½zuš3gŽJóžUihr•Ó�4–áýu]ºtQn·jÕ*µÛålþ“’’B�€‚‚‚ôRÖ•+WÚ½{wžéd2]»v�6mÚD_ý5Õ¯_?ß`¯ K¥J•¨_¿~4vìXúüóÏÉÞÞ¾ÈCCC3f =|ø°ÀïåãÇ�©råÊ$H¤fÆ&Ô¿Úºu+½}û¶Àûa¥ÏÍ›7iÙ²eÔºukµßs]GGG9r$íÝ»—Þ¼y“ç~¥R)‘££#ÒÔ©SéåË—Ê×/]ºD+VÌ3ÀÙ»w¯Vǘ˜˜HW®\¡˜˜ºqã†ÞjNõ�ÆòM666T¯^=•»êªTår¹Ú;­[·&"¢]»vú÷ß‹­ü¬ô“ÉdtìØ13f •/_žE›á3fPLLL™ižWZš\åÔ¯_?­/6-Z¤ÜnÅŠjÓ¼7¾F�4nÜ8½”U.—“——Y[[çÚOxx8Íž=›:uêDVVVEráojjJmÚ´¡éÓ§ÓÎ�;iÏž=4qâDrrr*pžÙÍ µ <ÆŽK�=ÒËû©îb¯uëÖ4nÜ8ruuÕË>XÉËÊÊ¢ãÇ�Ó”)S¨F�…þ4hЀæÌ™CÑÑÑ$“É´*Cxx8Õ«W�Eß�÷û)9rDYË­n±µµU6ÿ,K8aLƒcÇŽ‘……yzzRRRR¾éoݺ¥öä1uêT"RÔ¤ 'NuÑY)'—ËéÌ™3*pÎÎÎ4iÒ$ŠŠŠ*3AQéjr•ÓóçÏÉÀÀ W9ÌÍÍÕ–ïÔ©SÊm—-[¦6Mö Ù @-Z´Ð[™©R¥Jôé§Ÿª4ßlÕª•ÞŽZµjÑСCéçŸ¦ØØXÊÊÊ¢Ç�Ó´iÓ¨J•*…Ê[ÛNÿ€¢Éøñãs½·…‘žž®v_cÇŽ¥   ”––¦·ý±â•œœL;vì �º9 ¡¡!uéÒ…Ö®]«Ss?"¢Ë—/+[E´hÑBm’«oiÎ¥J•**}ËÊ@Sãï¿ÿ&cccjß¾=¥¤¤hµÍ–-[Ôž@BCC‰ˆèÍ›7€6mÚT„%g¥•\.§óçÏ«\À988иqãèĉZßMû�”¶&W9i "Ôõ 155UiÆðÝwß©ÝöýÚÍ¥K—’™™™^�íÔ©S$‰hæÌ™D¤ð†Z¨‹,[[[êѣ͟?ŸÂÃÃUš†ätçÎ�åïèèH¾¾¾:JÆÆÆô¿ÿý�žÞžR‰ÆÞBb±˜¼¼¼têx8nÜ8µ'‘œm•���Éßß¿(ŠÍJ©Ë—/Ó¬Y³¨jժʷ‘#G–Ú¡qõ¥46¹Ê&—Ë56ÇPw7²cÇŽ*Û/\¸Pí¶ñññ*é:Dôz3!!�† BÈÃÃCç&Wb±˜š4iBãÆ�£­[·ÒíÛ·µ®qKKK#777­öcggG£F�¢_~ù…>ûì3­ËgbbBß|óM‘^xíÛ·Oí¾ÿüóOzõê ?þø£ÈöÏ O&“ÑÙ³giÖ¬YT¿~ý¼?W‚}=D‹ ËŠ£wÏ ŒL¨M›6´wïÞŸ—ÓÒÒ(00�ÌÍÍÉÚÚš~øáµý/är9Íœ93Ï2·oßž^½zUØ·©Tㄱ‚‚‚H(Ò_|¡óUMš4Q{ç/ç�{»víÈÛÛ[ßÅf¥Ì�7( @9‡•• :”8PæG>Ó¶ÉU§N�Jlî›'N¨-“¦¹~,X ²ýüùóÕ¦KLLTI—��@hûöí*gFFEGGÓêÕ«éË/¿T±Ù�’¡¡!MŸ>�¶oß®ñ}vqq!oooZ±b�>}ZçÑœÒÓÓi×®]äëë›oŸ kkk>|8…‡‡Sdd¤N� ÙjܸqôâÅ‹½_ÚÒ4ŠYLL 9::Ò¬Y³Š´ LwoÞ¼¡={ö�ŸŸU¨P!ÿÏTöh”Î�ý~"L‰%|Ÿùn.®rœ‡„¡EB±!ÓÂ… u,F&“Ño¿ýFNNNd``@“&MÒØl;33“œg¹}}}?ŠÁ8aì??üð Q£FéÜ&==]mµoïÞ½UÒùùùQ£F�ôYlVJÜ»w�/^L 4 @Ñ—àË/¿¤°°°�âÇ„HÑäª[·nyþ¸ …BZ°`A‰69Ót ©Súûý¶æÎ�«6�º;–•*U¢iÓ¦å[&¹\Nqqq$‘Hè›o¾¡O?ý”ŒŒŒ”ÁF³fÍh„ ´mÛ6ºwï={öŒ©]»v$•JÉÉɉÌĮ̀mÛ¶4cÆ ú믿 <àEFFýý÷ß4hÐ eçØºuëÒÂ… éèÑ£*ÇlaaA¤½{÷RFFEEEåÛì.çbjjJS¦L¡«W¯ÒŒ3ÈÜÜœÌÌÌhúôé¹j”ôeòäÉyþÿÚ·oO}ûö-’}3Ýüûï¿ô믿’——™˜˜èТʧ„o¢µ›ø"ÆÚM%�PH yÐÍ›7ó-ß?ÿü£<ç÷ïߟîܹ£1mjjj¾çlj'–Éæ¸êpÂ>zr¹œM›6­@€###ÕžL/^¬’nÉ’%daaQ¦:Ì=zDË—/WΖkb¢¾3444ßaËš“'Oæ;"RI5¹ÊéåË—j/dlll¨M›6¹Ö›˜˜ä gÍš¥öøÔõëÕ«uêÔ)×ú””:rä-^¼˜z÷î­rG×ÕÕ• @+W®¤ÈÈH�ì‘#GH(R@@ÅÅŪI_VV…‡‡ÓðáÃÉÚÚšPÍš5iîܹtíÚ5•´;v$___Úµk—²FåÌ™3j‡!×´˜™™Ñ´iÓèùóç*y¿xñ‚fΜ© D¦M›¦÷@¤OŸ>jÿÿÙÆŽKµk×Öë>™vär9]ºt‰,X@Íš5Ó-àÍ­„bBï•„å2íƒ�œËÄ(9T'k;{Š��U[Îk×®Q�=yzzª R¡N||¼ÚV9—eË–}T×€°�š\.§I“& :̦®4Í ¡’nçÎ� ×�.ûpüûï¿´zõjjÑ¢…òît¯^½hûöíZXPÖ¬]»¶T7¹ÊiݺujË7nÜ8µ³�·oß>WšÚo« :çÍ›G¶¶¶tåÊ ¢‘#GR½zõ”sXXXP‡ÈßߟÂÂÂt>7Ì›7�„Ba�;©TJG�¥Ñ£G+çðpss£™3gRll¬Æ‹¡œëO�:E�;wÖúÑÜÜœf̘‘o3«„„ò÷÷'sss255¥©S§êí¼™}Ç:çÒ¸qcåëÙ³ØóœMÅ#{òñãÇrrAlD}¨`�GÎeA‰*{���½Ê£Ïž=£Q£F‘H$"WWW É7h¸{÷.U«VMc¹Åb1mÙ²¥¨ßæR‡öÑ’J¥4bÄ@«W¯.T^_|ñE®“Š@ È5‚Æ¥K—@¾wKXéòâÅ úå—_¨]»v$ I,S·nÝhóæÍe¾£ 64uêJG“«œ5j¤¶œgÏž¥+V事?þü\yL›6MmÙNãããiÏž=¹:È ª[·.�1‚6lØ@—/_.ô@R©”Ú¶mKŽŽŽZÕÈår:}ú4M˜0A9#z¥J•hòäÉ­õØ'NPÇŽu <üýýuîß‘��@ß~û-YXX�©©)Mž<¹P�¬\.W;çBÿþý•iþùçô;xS•˜˜H[¶l!ooï<çÀÐf111¡:uê(žûí-|ð¡l’õ‚ÄöîÔÔ³9¥¤¤ÐÂ… É‚ʕ+GË—/תií… ÈÁÁAcÙÍÌÌèàÁƒÅðŽ—>€°�RFFùøø�P(¤Í›7:?ww÷\'–:uêäJ—ššJô²OV´^¾|I7n¤.]º�H$"¡PH;v¤_ý•Jºx¥JZZšr¢­œ‹££#=z´¤‹§tþüyµÍ›7W¦ &tèÐ!Zµj]¾|9W>šúøúúªŒU¾|yêÔ©ŠŽìÒSOž*ÉÉÉÔ¦M211Ñ[µçßÿ­öóË/¿¨MߦMòõõÕ˾?vr¹œ^¼xA< Ç�¨ãwZZ…„„Pß¾}•}<==é‡~ÐëìËeÑÖ­[ÉÌÌŒjÕªEW®\¡G�‘ƒƒC©jr•---Míœæææ*}wjÕªE#GŽ$"E@úÏ?ÿТE‹ÈËË+ϦB¡Pã¾;uêD½zõ*òcœ1c‰D"6lÕ¬Y“P¹rå”Cã¤OÑ#GÔvÎ×´XYYÑܹs5Cª/III4wî\²²²"cccš8q¢Vs‡H$µåWIçééI,ªâ—Y¯_¿¦;vРAƒÈÖÖ¶P‡��uîܙ֬YC£:bE;|§Ê´råJÊÊÊ¢ÌÌLÚ·oŸÊÜuêÔ¡ Э[·Júð>ÙM®LLLhÓ¦M%]­µjÕJíÁ�!C¨}ûö*mµ³kA‚‚‚èêÕ«¹js¾þúë\ùiÜwöD�úì;GË–-£Æ�+Ï9>>>ôË/¿�µµ5õêÕKçsŒ\.§C‡QË–-µ¾`´¶¶¦ùóç—ø` /_¾¤€€*W®Ñ„ èÉ“'¹Ò�92×1…Â\�ÚÒ¥KÉÌÌŒÏÓjdÏB>{öìüg!×b©Q£M�:•Ž?®s-]¯Þ½IX½}žɵ@¿&šª©ÉÏ7ˆ�Æà!##Cí`49—¯¾úª@7Ê*@X™wÿþ}rww'''§\ãÙ–\.'›\'šÖ­[kÜ&44”ùl¿e…T*¥eË–‘±¡1¹‰�h5&Ð+ì!‘<—³ø‰¡3 !$ÛòÊæ75jÔ 9sæÐÕ«WKð¨>L[¶lQirõ¡È}NÝâàà@½{÷VÎÇáææ–o~Ù£ç½ÓA“7n èØ^Ož<¡•+WRóæÍ•AÏçŸN‰D¥j÷îÝ€V­Z¥U¾r¹œ{öì!WŒ¥/½²g!9r¤rô´‚.B¡�Z·nMßÿ½V“ý奂S%E} ÞëinËýÚ”XrOJJ¤hv–߈pÓ¦M+uÍRK ¬L»~ý:999‘»»;Ý¿_ïùߺuKíÉfêÔ©·‰�UœÈΜ9£÷ò”5iiiÔ½kw@@“ПҰ?ßÀãýå4ÖPU8‘�HL«V­â;š�W“«ÒF.—Ó½{÷hÛ¶m4aÂjÖ¬™rÎ�÷—€€•ÏÃ'Ÿ|B#FŒÈwêš`YXXhL/“ÉÈÌÌŒ–.]ªóñ<þœÖ­[GmÚ´!�@@ôÙgŸÑ–-[ò¼øŸ8q"ä9ÊŽ\.§ýû÷“§§§Ö�¶¶¶´hÑ¢"ÑK_^½zE���dmmMFFF4vìXzôè‘Ú Û¶m›kû»wï:pà@ ”¾txöìmذ�zõê¥û,äj¾ýû÷§-[¶è­&P9¢Ù—¿ë'qiF0µ!,ËÈýÚ÷™¡�Ö¯_Ÿë=Ò4´wöòÃ?èåxË1+£bbbйsg888àСCpttÔû>¢¢¢Ô®oÖ¬™ÆmÜÝÝ·o߆§§§ÞËTVddd ·W/œ:rû±]Ф@ù4Ç'¸„ |)_ˆÉ“&ÃÝÝ=zôÐsiË®7n ÿþ¸{÷.6mÚ„!C†”t‘T¼~ýÑÑшŒŒDTT"##ñâÅ @ÕªUѤI\½z©©©*Ûaܸq€/^àêÕ«˜1cF¾û”Éd¹Ö‰D"�é…B!4h€˜˜­Ž))) »ví‚D"ADD C‡ BïÞ½amm�oK–,ÁÉ“'áãム.ÀÊÊJùáÀ�Ðx{Ÿ��¦L™‚1cÆÀÂÂB«mJ’••fÍš… &`õêÕX±bÖ¯_¯öçææ–k�‹‹ Œ��qýúutéÒ¥8Š\âˆW®\Áž={†³gÏ‚ˆ œŸ‹‹ ¼¼¼Ð³gO´iÓ†††:瑚šŠ»wïâÎ�;¸sçŽÊãG�)éáóøïUàáY å8@¬¦œ" Œ‘––¦\uûömtíÚ÷îÝS›¥��~ÿýwøúú¾|e ¬L:uêzôè�jÕªáÀ�°µµ-’ýhúñnÚ´©ÆmÌÍÍáèèˆ;wîI™ÊŠ)S¦àø‘ãØ/ÿíаPy™À!4ýåóàÝÏ/_DÕªUõTÒ²këÖ­5j*W®Œèèh|òÉ'%Z™L†k×®©×®]ÁÊÊ Íš5èQ£àé鉦M›ÂÎÎ;wîÄöíÛsåÕ·o_ØØØ(Ÿ?~ЦM­Êñ¾¼hذ!>¬ñõäädìÞ½‰ááá�ÉdhÛ¶-Ö®]‹Ï?ÿöööù–+'CCC£Q£F9r$‚ƒƒûöíC@@¢££µÊÇÞÞ^x˜››ëT†ÒÀÒÒß~û-&L˜€ÀÀ@,[¶,WWW×\ëD"jÔ¨�ëׯG1KLff&Ž?® :}ФI„……ÁÒÒ²Èö¥.qtt„³³sžÛU­Z•�<=zkÖ¬Á�_èà#›"l!Ô“ŽÀð!ÃpäøQ…B½ä]Ö¼yó&L@PPŒµk×ÂÌ̬ØËñìÙ3DEE)ƒ�èèh¤¦¦B(¢^½zhÙ²%¦L™‚fÍš¡F�jÿŸ6lP›÷ˆªÇŽƒ››*Uª”o¹ €¬]»©©©Ê ù´´4ìÙ³‰û÷ïGFFZ´h�+V _¿~…®µuwwǯ¿þ ØÙÙáìÙ³8wîœVÛ–/_S§NÅèÑ£Kä¯oèÞ½»ÚDÓoD­ZµÊd’””„ýû÷#,, Àëׯ œ—‰‰ :vì///ôèÑCíg–ˆðüùó\5Ù�_¾|Yðƒ�— ¾=H3�s[€J��ŠõÔ§Iy’fÂÁÁ@¿~ýTjCrªP¡öïß� ®\e ¬LÙµk|}}ѱcG„††ÂÄĤÈö•‘‘�ØØØ\ë›5k–ï]ŸªU«âÊ•+EU´šL&ƒßÐh-¬�±òÞzÍÛ&Ø(�Šv§¾Á¦M›0|øp½æ_”T“«·oß"&&F¥v#..€"¨÷ôôÄìÙ³áéé ­.Š>|ˆƒæZïîîž«¦ãèÑ£hÛ¶­Ve•Ëå¹Öi€¢££ñòåKH$ìÙ³éééhÒ¤ -Z„þýûki‹ˆ`dd;;;¬[·N«m0mÚ4Œ5 ¦¦¦z+Ki ©©Ì¤I“píÚ5Ìœ9...ÊõµjÕʳÖêCrûöme-ÇÉ“'ÕÑÚªP¡>ûì3xyy¡C‡055…\.ÇãÇ�¡6ÐÐt±^hðø|áò¸¼Iº/Мæ‘b<ÀÌ™3!•JÕ&«V­<¨¶V�©â„•¿ÿþ;† †¾}ûbË–-joª‹ØØXdeeåZŸWÿ�lÕªUÃ_ýUÅúàíÛ·wÜÅ6ü!„HE:æãwÄâbp‰x�¹Œ¹œkÛU؉Ÿ°ð 6°Do´Ä"Œ@9¼k:Ò ÐKЫ–¯Ä°aôj"ð±(®&WD„{÷î©Ùß'cccxxx _¿~ðôôD³fÍàìì\ ÿÓ¦M›Ô¶a1b„JmIbb"._¾Œ)S¦h•¯®5 ¸ÿ>„B!ºvíŠÌÌL4hÐsæÌ�···Ú>…ADؽ{7ÔÞ$Q§B… ˜>}:FŽYæ�lš�™3gâçŸÆÆ�1tèPøûûÃÅŵjÕBBB`ggWÌ¥-™L†3gÎ(ƒŽ7n*¿zõê¡G�ððð€‰‰ îÝ»‡ˆˆ¬_¿wîÜÁ½{÷�™™©§Òë@.îˆÁH¶ëû�Ì4àmŠâù³«ÀÅPÅãZ=Ã7'#ƒC3 Ñš÷óà4ŒLÌ0uêT�Iš5k†½{÷~pŸ•SR½ßÓ§5kÖ1b„ÆÉçômÕªUjG¼ˆˆˆÈwÛ��@‰‰‰ÅPÒÇÇ©VõšÔÕ”£XÝÇv*sj‹ä‡ÏH`H®Ñ®&¡?‰!¢yB'ð#ý‚Id KjŒ”…Ã*ib) ãÇ�—äá–9G¹¥R)UªT)×÷S$嚨îÏ?ÿ$ZOBÙ»wï|‡rÍÌ̤ÐСC©\¹r€Œ��©Q£FtãÆ ½ãûd2íܹS§¹iÕªUôæÍ›")Si¢nžSSS’Ëå”’’BK—.%{{{‹Åäçç÷ö®;¬Éëÿž7  n8Å�u+* 8p[­µÖ½Pq¶¨u[÷kÝ¢âÄ�[pàÖŠ{"�œßù’“@ÂÒöÇyžûˆ÷½;ï¸ç~8ð¯zO|üø‘Û·og�=”ž±ì$±XÌråʱ~ýúlРË–-K±Xœ£6ó4 ŠTöZU´´Üû• È fü{Ò£ QÎ"±<¡&ïXóR)ÎÜõpË–-¿kï€ß# $ øfˆ��Çùóç�¸¸8$''C__¶¶¶¨Y³&j×®­ÕÉàÌ™31nÜ8Œ1óæÍË·muö‚  V­ZYÖM7€¾{÷®V“ÿ2âãã±mÛ6„……!** €ß1Lq½4lð»oð`¯JÏð Ž‘ðUHFêÃÅ`ŽŽ˜Œµ8€¾øÇóUSÔD I1ìÞ½y;Áï¹­r•––†›7o*I7nݺ’077‡««+~úé'¸ºº¢N�:yæ âСCÿxÉÉ€Ö­[«è©?~¥K—VR¿É š$ R©'Nœ@hh(ÂÃÃñæÍ8::bðàÁðóóCHH®\¹‚òåËgoR “ɰcÇáúõëZÕ)Q¢ÆŒƒ~ýúÁÐÐ0WÇó½B�¤L™2¦¦¦5j „¥K—bîܹX³f àäÉ“ßí{âÉ“' )ÇÑ£Gs$…‰D õB©TŠ;wîàÎ�;¹5Ô¼ƒHœ\85ú'oâíê±~U¯N¥À�¿À�Ï5^îÕ«–/_®0P/€v( ÈWÈd28pK-Á¾û@–sT¢=Œdx'¤á´øæ¦Ê ëÖvÅ !?ÁÇÇGå#IcÇŽÅìÙ³1uêTLœ81_ÕiÔ�Ê•+kå¢2�€ÄÅÅý¿$ ¯_¿Fxx8ÂÂÂpüøqˆD"4kÖ 'NÄ´iÓPÕÖÓäò,b!ÑÊk™þÿpœP" "ˆP'­<¢/hg�û_En¨\=þ\‰l\¼x‰‰‰‹Å¨Zµ*<==1zôhÔ­[NNNùfø¯­ñ9 ›ý ž€¼}û¥J•B||<ìííѧOøùù¡F�Š÷R�5°a䤤䊊¨L&ÃöíÛ1mÚ4­mÊŒ��‘ššŠ}ûö¡Zµj9ÿ ¨nJ¿ÖÕ711ÁÏ?ÿŒ�bÙ²e=z4&Nœˆ{÷îaüøñ¹®.—]�„»»;Μ9“kmª³mú^Q¼xqxyy6mÚéõ�À�Ã@¹¦¹ÛÑ—Dà¯rcwª®Ïøñã1mÚ´UÞl €€ ßpûömôè…ÓçΠºØ Ë9? 6lÓ¬ à/È€Wx�㸊Ñ{УGL™0«×¯QŽÊd2üôÓOX¶lBBB˜¯syýú5îÝ»§’Ÿ™ûÝŒ(T¨¬­­ÿ_yÂzÿþ½"¶ÁáÇA�7ÆŠ+àíí�¢E‹bÉ’%Ð$¨BÝ øR ·Åчò ”bpª'Ÿ5Q¿EïÈþ„þÅÈ®—«ÏŸ?ãÒ¥K ²qîÜ9<~,÷@S²dIÔ­[“'OVŠ+[‚—/_⯿þRÉ/Q¢š7o®”÷öí[\»vM§wˆ:’��€ž={¢sçΨS§ŽÚ I�5�ššŠ˜˜˜yÈ‘J¥Ø¶m¦M›†˜˜­êØÚÚbìØ±ðó󃻻;ºwïŽsçÎå©£Žï ‰‰‰j]ºj"&&&9r$"##qïÞ=ìÝ»ëÖ­C�=0~üxE<§o‰ïÝ;™¾¾>AÀ—/_rÜ–¡¡!6lˆfÍš¡Y³f¨\¹2¢¢¢þ‘L "`S060ÌEÏ—{ÆïŸª�A°hÑ" 4(÷úú†R€|ÁÒ¥K1"pJÉ,q¿¢‘´Æ?¤C ŠÁ�Ð�d ƒ‡ð,žžž>|8‚ƒƒÑ·o_lÙ²«V­BïÞ½óq&rœ?^m¾.Ò GGGܽ{7·†ô]âÓ§OصkÂÂÂpàÀ¤¥¥¡Aƒøý÷ßѱcGXYY)•óæ ,$f0HÕít¸2J¢pnøçÿ,b@o êf²8,ðîÓ{Èd²ÿWîxµU¹"‰¸¸8Ù8{ö,®^½Š´´4¡V­Zðó󃫫«ÂPü{ÁúõëÕz©éÝ»7$åÏÞÉ“'A2K I\½z¡¡¡8~ü¸ÊõòåË#$$$Ó6ªU«Apùòål©TŠ­[·bÚ´iZ»‡µ³³Ã¸qãгgO¶nÝŠ:uê`øðáX¶l™Îãø7BS|‹¬$ÎÎθqãîß¿�+V`öìÙX¿~=ºwïŽñãÇçi}:&NœˆAh‡¹øÆÐíÅP ¥q\‚ùØŽ_æ/ÄÖ°­ˆ�-[¶À××7�F�9r‹€äÔ3É÷ˆ¤¤$ìÝ»¡¡¡Ø·o’““áææ†¹sçÂÇÇ%J”ÐXW&“eJL5¡*à�ª˜��¨{4F ÄâúáWˆ!‚ªCô¿~þ?� 6`àÀ�jU®Þ¿�óçÏ+ÈÆùóçñæÍòÍuݺuѧOÔ­[UªTùnõ�IjT¿RwXqüøqØÙÙ¡téÒjëÄÄÄ 44aaa¸sçŠ-Š¢E‹âï¿ÿV*—•^@„ÔÉÉ —/_F¯^½²žÌÿ •JŠéÓ§kýΰ··Çøñã ¢îåì쌅 ¢ÿþhÔ¨üüü´Ë¿š<`eå.µbÅŠxüø1d21`À¬X±³f͆ Э[7L˜0!ÛD$%%>Tˆïþýûj=-æ7J•*GGG888ÀÑÑŽŽŽ066Æýû÷qòäI>|oß¾Íq?ÖÖÖ ÂÑ´iSØØØdZþÁƒ¸páA�{»£ˆ;¬hôŒÌ³78>_®zõÌḬ̀k×.4hÐ {m@�R€<ŲeËäzýè� èžívDa|Qš6ðù{*š·hþÍÈ ÞþÃØØX'z'''ìÙ³'7‡õÍ�œœŒ(b$&&¢fÍš ‚¯¯¯Öƽ¦¦¦ø(K„ 2µ¤!3lÇôÄ,´Á8€>$_ÂE|€ªúH„¡¾¡Ê‰øIII2dV¯^�€€,X°<À²e˪TéÛ"EŠ nݺ2dˆ"¢x‘"E¾ñ ´Ç©S§pûöm•ü¦M›ªÝlª³ÿ¸{÷.†7n páÂðööÆ‚ ФI4mÚ4[\\\pùòe­Ê¦¥¥aË–-˜>}ºÖÆÀ¥K—ÆøñãÑ£G�LíLúöí‹ÈÈHôë×µjÕú.TŠòêì?€¬% +ÊíÑnݺ…ZµjÁÈÈÆ Cÿþý±råJ"âää¤ÒFRRîß¿¯6>Æ£G�¾¹í…X,†½½½‚\d$eÊ”�‘‘pìØ1DDD`íÚµjŸ1]a``€ (H‡¶‘Ó௿þBÏž=Q¤HìØ±¾¾¾r²F™Ü-opy Ë RKÝõî Ö¸}HåRÉ’%±ÿ~8;;ëÖfÔâ¿ÿå-À7ÃíÛ·1|Øp D»‘�Œè€XŠ@ ØÿvïÞ�6mÚäJ»º€¤Z H­ZµtÚÌ:::âÍ›7x÷îÝ¿jƒ—Ž””>|aaaعs'>~üggg…žyvN«T©‚DégÜÃßp‚n*=Å`޽˜…×ø€x¼…=¬a},Ÿð…§Jù+ˆC•Jyçâ{­[·Ð¾}{ÄÖ­[ŠË—/ÃÄÄíڵÌ3ðÃ?(Ô—€ìEBOG�5°gÏ­$o½zõÂÆ�µj·lÙ²?~<ºwﮕtJ,_¾...ðóóCTT”ÒÿkÐ$Ñ$ùJG:‰��Uòphdd„¡C‡*ˆHpp06lØ€úõë£víÚxÿþ½‚h|MV¿ôõõQ¶lYµ$ÃÞÞ^åž‘Éd¸téBBB�Ó§OçŠ4ÆÙÙYA8<<044DëÖ­1nÜ8´lÙR£}N HBBâââP®\¹LËdI@0aÂtíÚUgµ¸Â… cëÖ­pssÃèÑ£1þ|�êÿ› NbeeSSS5¥ÿA¡B…PªT)ÄÄÄàÕ«W*Œô¿_¿~ @nStòäÉ<™CV011Q!é—,Y2Ë{ôÉ“'8tè"""pøða… fN`ee…fÍšÁËË ^^^*.°uÁãÇ�áëë‹èèh„„„`ذa¸té† ¢Z˜„��,L?àòêöru,{WÀ¶6`VBNF>þ¾ áñ9ðUœá"Vc?Î!Oñ &0D]TÂtƒ;4‹8X!Ç7ݱbÅ Œ=:¯¦¡êÔ¯€ÿ.‘Éd8uê°}ûv¼|ùeË–Å�?þ???T­Z5×NÌ---á\± Âo�D6QäïÇ9$"Ÿ�¸‰‡Ø¹!p+Ô… ° û pB)|ÆìÅY,Á_F_T‡²4&�p3í>&èàzõ{Iܽ{WÉ îÕ«W!•J!‘H�––†*Uª`ܸqhذa¦ö7ÿlÞ¼Ÿ?VÉïÑ£‡âtÿÅ‹ؾ};ÂÂÂE;;;Œ=mÚ´ÉrC 䜀ÀåË—3% /_¾ÄÁƒ•b3d„££#&Nœÿ©º¸¸`Þ¼y:t(<==Õµÿ4ÅÉ™L†çÏŸ«Øc|øðóæÍìY³òk¸Q¤HµR X[[ëô.NLLÄñãÇ�ˆˆ­dxxx(©Uå†�ÝÞ½{Ñ£G˜ššâÔ©SpuuÅÛ·oÑ©S'µÆø… Æ‘#G`jj*'=Ÿß·"€;GþG2#S¤¥I‘úåï 5ä£]»vزeËê æ»Á·ˆ~X€ÿ>Ú´jÃ’r”!R%buzò�'=Q�KÈã˜Ï]˜Á†¨F=H‰ß4ÖKO=Ñœ¥KÙç[äót gPF)@®#>>ž‚ p9FdJ ^`‡J^2²б)jfI@Îa ððáÃù:¿:u꨼¨Š/ž­M¹››»wÔ2™Œ/^ä¨Q£hooO´±±á�!CE©Tš/ãøðáM�M9í²¼²“!”¦bcŽ7._æ“]¤¤¤0::š‹/f�=X®\9ÅýfaaÁ–-[2((ˆä»wïH’ëׯ§±±1+UªÄ7n|ãä/¢££Õn"ÌÍÍ)‘H(‰Ø¤I®X±‚¯_¿æû÷ï)‰¸råJ�ûªV­šJ?žžžZ×oÛ¶-›5k¦”÷üùs>œFFF,T¨'L˜À7oÞP&“ÑÍÍ�åË—çÆ�óìÀåíÛ·´··§››SRRò¤�üBrr2oݺÅ={öpþüùìÓ§Ï7'š’¾¾>½¼¼¸nÝ:^¹r…Ÿ>}ÊÕµxúô)׬YÃ.]ºÐÒÒ2WÆ\¬X1úûûsíÚµ|úôi®Ž7#žHYnC“ñy±bÅ0cÆ tìØÖÖÖŠü½{÷B&“é=9QÁäjX‹/IÄÇÇcΜ9X¶lôõõñóÏ?#00PIß<<<VVVyú,)R¡¡¡ðððÀĉ¿ u£Ì�˜˜¨ð,õµ=Æ“'O¾¹g©t.\*T€»»;Î�;‡Ó§O+]OIIÁ¡C‡páÂbذa9ê/11'NœP¨Ui¨23èëë£~ýú µªjÕªå¹ëò {÷î044ĉ'P¯^=ŵ#GŽ`âĉjë5hÐÁÁÁŠÿ_¿~]m9ußq‰DX¶lúõë—ƒÑ@�h�>`ñâÅX¼t9þ~úóâ�–¬ Vè 蛲4¼~÷7o^1Ü8à�‘èWTÒ®$à"n£)jfYV€:!úbtN§¦5®\¹¢6¸’®öépttÄþýûs:,�qûöm„……!44±±±077G‡°xñb4nÜø›»¦%&&"::Z)¢ø³gÏÈíêÖ­‹:ÀÕÕ5jÔÈTÿ866¾¾¾Yü¯")) ;vìÀÊ•+U®™˜˜àÒ¥Kjí:Ž?Ž%JdËýln�ׯ_£OŸ>زe 0zôh 6L­S�œîꂺuë"88¿üò <==U¢Æç7Ò=I©3ü~þüù7 ·w(^¼8$‰Â£¡žžÜÝÝáããƒvíÚ¡dÉ’ä÷if1GÞ¿�)S¦ $$��� „¹yÖq,d2®^½ª §N�Êq@¨T©’‚p4hÐ ß4ÒÒÒ0yòd£E‹X¿~=,--ן={†.]º¨%˜ÖÖÖ Uú~]»vMë¾ †¶mÛælÐßXS€ 8@›’¥(Ò7"\û#.!Ôœ‚ßRbYžE&`_–ê1]Ñ”úÐã%¬ÐJ�æ'´g•ò•óm,X V\™­ö6oÞL|ÿþ}.�T÷îÝcpp°B}¤P¡BìÖ­wïÞÍ/_¾äyÿºâÑ£G,i]‚•$eø Ûr¬zµÃ€cÆŒá²eË(‘H€ 4à‹/òlR©”±±±\»v-üñGV¯^�b±˜hbbBOOOŽ3†þù'ÿþûo�Úþÿªr•œœÌ�;w²K—.juûÓS¿~ý4¶Q»vmúûûg«ÿŒêpé©E‹ZÕ}úô)¿ÿÔ©S*tߤR)[´hAKKK>{öì›�cΜ9ß\=*ý=Y½zuêééÑÃÿÿþ;§N�ÊŽ;Ò‚heeÅÞ½{sçÎ�LHHP;ŸG�±iÓ¦Z÷kffÆI“&ñíÛ·*m={öŒk×®¥¿¿?‹+–+ó´°°`çÎ�¹zõj>yò$¯^µxöì6lH‘HÄàà`µß””Ö«WOíøÅb1�;¦T>55•ZÍ_OO�QQQù9Ýÿ÷( ÈR©”?ÿü3PTÁ‹˜ô(sâñuú5�hB‘ĈeD¶ŒÃF�Ä èNc˜Ö›ÊQèL'{Ç|[•— üøñc¶Ú»páðâÅ‹¹Ò±eË–|#tuu¥¿¿?'MšÄõë×3**Š/^¼ L&ããÇ�Y¶lY/^œúúúŠ{oìØ±L+++/^œÇ�W[&00Pã|æÌ™£R>&&Fë5677/°ùÈg�h„L&cÿþý A Ú‡¿Ét#Ó¸;”X8±˜È’wÕ��)èIg¢ŸN›ËaèÈJNómMÔm<ªT©’íöÞ¾}K ͵1>þœ .¤»»;ÐÀÀ€íÛ·ghhh¾mTÁ™3gÒÏÏ�M½š°IÓÆôööæäÉ“¹k×.­=ºtìØ‘"ÀhÆ[X§Õ½‘ŒƒÜ„ñ´“ØÐÄÈ„K—.UùÀ¤¦¦rÔ¨QŠß²mÛ¶:yšIIIá… ¸hÑ"vëÖ�NNNж,--ÙºukN›6�‡Ê5)WLL +W®L##£ÿ¼—«ÔÔT:tˆ}ûöeÑ¢E €åË—ç¤I“xóæM’dll¬ÚMEÕªU5n(öíÛG¼}ûv¶ÆUºti•þÚµk§¶ì£G�8pà@êëë³hÑ¢œ>}:?|øÀ¦M›²}ûöÙê??pìØ1ŠD"Nž<9OûIKKãÇyøða.[¶Œ£F�¢···Úwmn&+++^¸pA­„A*•òÂ… œ8q¢ÂXY*TˆóçÏç½{÷r<﨨(6kÖ,ßH ÷”7lØ0îÝ»7×�ݳ‹´´4Nž<™‚ ÐËËK£4zëÖ­çÕ¾}{µÏzhhh–kâìì̵k×ÀÒÜ÷ŒR�˜9s¦ü!í¼:ûÄ#c Чĉv¢’üˆ½*ä#½t>Ýn%¸±y³æù²¯^½RûëÝ»wŽÚµ°°à´iÓr<¶eË–±Q£F�‰„-[¶äúõëùáǵ­ nß¾ÍaƱ�™©œüÓ¦�ˆv> �X¢©@cK¹ê“¾�»÷èÎsçÎilïòåËA±Öbˆ€ž¨Î…Â(üÎOØG"™†Ã|ˆ-ÜŽ©ZIäÖÍšóÁƒ™ŽûÔ©S 1æææÜ»w¯J™LÆG�qëÖ­1bÝÝÝihh¨8M¬S§‡ ÂM›6ñÞ½{yrš¶nݺÿ¼Ê•T*åñãÇ9hÐ ZYYË”)Ã1cÆðòåË*ëš.¡ý:-\¸Pc£G�¦��M¶#[[[•þ:tè TæáÇ0`õôôhaaÁàà`%Iiº·¹ïAAA�GŽÉQ;_¾|áíÛ·¹oß>.\¸�C‡e«V­X¾|y…D�«Ñ”-[–Íš5SHø´M‚ ÐÞÞžMš4á€8gÎîØ±ƒ×®]Sxõ˘š6mª4Ƥ¤$îÙ³‡ýû÷W¸777§¿¿?·lÙÂéÓ§ÓÈÈ(×%§OŸæ?ü�'„£hÑ¢ôóóãªU«²å&>¯Ï&MšPi”¶Ýºu‹¦¦¦jçèàà V…Q&“±~ýú™®OÆ ùîÝ;>þœ¸}ûö¼žr2 €€@-®]»F‰žÑdLî��ô4áÅüŸ‹Õ ô¢�Ñ#[ê56 Ž?>_Ö$ýÔôë”]5Žt¸ºº2 @çzoß¾åêÕ«Ù¬Y3ŠÅbŠD"zyyñ�?þȱ¿x]‘œœÌqãÆQ,ÑØRÂÊ£ÁÖ7À®R°•SWØþXc6X¸´œŒtïÑ]íI¤¦Bñÿb�hú°/fáC‡2&&Fë9¼ÿž;vT´Ñ¥KîÝ»—³fÍ¢··7‹/®¸Vºtiúùù1$$„gΜáçÏŸss9Uð_W¹J�;¨Øü•*U*˸3_¾|Q«o``�é3àêêÊÎ�;g{¼éc̘|||H’<`¿~ý¨§§GKKKΚ5K­Šfºý×ëׯ³=޼FZZ7nL›,í¤yýúuîܹ“óæÍã�?þȦM›²L™2‰DŠuÒ××g… غukrÑ¢EÜ¿?ïÞ½«âþ7]ꕞ$ Ë•+Ç-ZpÈ�!\°`÷ìÙÃ[·niŒé“’’¢Ôzêׯããã¹jÕ*¶k×ŽÆÆÆŠ íðáÃyôèQ¥ñ¤¿ÿ³:ÌÐIIIŒˆˆàÏ?ÿ̪U«æ á�H$lذ!g̘Á .|3õ9mpôèQÚØØÐÚÚ:S‚›��ÀÊ•+«�¯¡¡!¯\¹¢R'555K×Ë�:uRzog›§yƒ/XPIôê Z:ͧänãe!m7KÃC°»ÐuÐ ®8 ew�u³ðœuOŸö&ߢˆçVô¯áä䄸¸8­Ê~úô ýõÂÂÂpðàA¤¥¥¡Aƒøý÷ßѱcGXYYåh,ÙA\\Úy·ÁíÛ·Qe2Qi” bCÍå0- Tþ¨82 ÷×ÛFlơñ}븻»€Â«‹:H!ƒ‘‘<ˆÇ�#)) ‰VVVpqqÑÙk�L&Ãßÿ�V­Záýû÷ˆŒŒÄ–-[pÝÜÜгgOÔ­[®®®Jî\ó±±±ðññÁƒ°víZä[ßy ’¸té°uëVþŒ¾}ûbݺu(R¤f̘��jŒ¬žýÊ•+ùæF\WˆÅblܸÕ«WG÷îÝŠ¨õL•îÅ �{K�Îíã㣵»dÉ’Z{ ›8q" ummmuöЧÉ%ï�®›ëÕ«‡I“&¡mÛ¶¨P¡‚Z¯x+VÄÄÄ téÒ:��ßïׯ_GDD:„'N 99Yçv¾† pqqÁˆ#ЦM*T(Çmæ%d2‚ƒƒ1yòd4lØ›7o†���Ú²$1`ÀܼySíõ¥K—¢ZµjJyIIIðóóÞ={4Žá§Ÿ~‚ ”îÃZµjáâŋ٘Q²�oË ð=âÈ‘#òS‚AGäR‹YŸˆF£ˆò^„‰¥Ü&¤ùõŽ‘Ñ„SÂÀ”02'ªv &ÜÿÊ0]J±MUZ °RTëŒIQ–Ò�𡹩YžŸ>§£yóæ*§(ÆÆÆ9Ž”:eÊZYYi¼ž˜˜È°°0vèÐA¡òãææÆùóçS/5¤\4necIórb¶ºª*íÐ6y?mˆhhdÀÇS*•ª ö–1åDõíÕ«Wܳg'L˜@///š™™)Ô8ªT©B???%µ�Áƒçz„_m�Qå*Ýæáß ™LÆk×®qüøñttt$ ·•0`###u>±Õ¤ºrôèQ�u8@Œ��Íö<Ôt�VVVœ;w®Vª´´4sîܹÙGnC&“ñÕ«W>ž6l`÷îÝicc“+RMÉÄÄ„£G�Öz>Úàýû÷}:ÍÌ̾«{÷¿ŽRtèØ‘’â•þ1:Ÿø@N&=‰ºýþG@¦ª’�1±„A!¡!Ñ?ÑkQ¼ aV’˜öJ¹¬ï ø[²¥zõ{Yr‘yõêÕyêÔ©<]™L¦¢È]¸æ7n$%[�ÏŸ?óÏ?ÿdçÎ�nFk֬ɹsçfËPîÅ‹\µjÈ:.µi_ÂŽ%­JЩ´#Û¶iË   =zT§ËË—/YÒ¶8‹V³Ó‹ì“�ôÔ9 ,ùƒˆÆ&Fœ>}z–ÜÌlG2âË—/<þ<.\È®]»*·ZYY±M›6œ1c>¬ô¤¦¦rÊ”)�‚ °téÒ<}ú´ÎkŸü×T®bcc9eÊV¬X‘€\·¾wïÞ|ÈòåËg¹>‹/VÛ_úÁÄÝ»wµšOrŽR%$%%Q,‘í~S/á˜þZ3©îC˜ZÉ%&éy“b}¢Éhå²³(’s.~Ì€6460Rx(@'''îÞ½;ON0îܹ£öe6jÔ¨·}îÜ9ņzïÞ½ìÑ£‡b#àììÌ3fdû¥xáÂúwñ§žD�"ˆXI¯ »£Ç£'¡‡Ã‡MEµXD,ïÏ©Œ#ûí7­6¼�|:ÑÈBÌOsN>$$,ê,¦¾¡$Ó�HµjÕÔþÎ2™Œ>dhh(‡N777…x}}}ºººrذaܼy3ïß¿¯Õ½ræÌ–*UŠ"‘ˆ‚ p̘1õÍs7oÞdåÊ•ill̵k׿Y?y�¼Ž;3yòdµ÷ÆÌ™33­çææF__ßl÷{çÎêéé©ôÛ«W/�Ûúé§ŸX±bî{ñKKKãýû÷yèÐ!.]º”#GŽd»víX¥J)Æ,íììØ¨Q#öë×�³gÏæöíÛyåÊ»•ÔÔTº»»ÓÖÖö»´[¹{÷.ýõWzzz*âìÔ¬Y“}ûöe@@«W¯NA›ùW¯^éÜG×®]Y¯^=Åÿe2¯_¿Î_ý•?üðƒF²£k*W®Ì]»v)~‡ .°M›6Z·allÌQ£Fiãèùóçôóñ¥H±°Ø”ýÑšk1†×±š°‡‰ØÏx„óæqú³žXUq®[·Nã»T*•rÖ¬Y‹ÅôððÐJjÿúõkÚÙÙ©�—¹¹¹Š²«W¯*Ùèe–Nœ8¡±Oܲe‹VëU€œ£€€@ gΜ‘?¨Ã/¨' Ó^©' óR =#Â} j� ?ÅÊ©ä‹íëÑ�t&!PµdÉ’r5 F�)^0%K–äúõësÕoÆ j_f9õš‘ššÊððpÅÉV¨P�“'OÖÉ€úk$&&200�‚ ÐAR’¿b _c§Æ5•!’'°€]„&Ô$t°/«Ñ;Inß¾�XKî‘�ôÔ2„H»S¬�?222’3gÎd»víhmm­(S¦LvéÒ… ,àÙ³gsD>|øÀîÝ»E"+UªÄK—.e»=Mø·«\}wÆØØ˜¾¾¾Ü±cG®Æ�IKKSë‰J,gÌ1!!�‰Dã)hf¸uë»uë¦ ¢_÷­N%$+üñÇ![®äädÞºu‹{öìá‚ 8dȶhÑ‚åÊ•S"Hb±˜ŽŽŽüá‡øÓO?1$$„»wïfLLŒÎê«�?fÑ¢EÙ¦M›o®ª’––ÆS§Nñ—_~QHÖ Ø²eK.]ºT%˜^`` Ë—/O’|÷î]¶ÆŸ®¦³qãFh½éÍ*™››³S§N\±bE–Fî/^dÛ¶mu""?ÿüs¦DdóæÍ,jV„V’¢\Šáü¤EÐ`â(¯`%; � €­[¶Vyö^¿~Í–-[ÇŽ«•´S*•ªUwNO»víR*ôèQÉ]f)³ ŸeÊ”áˆ#²cr¤JX´h‰17Y72ö–<¿ÓRÕ:�~&1÷‹r~ƒa´—Ò‰|Dc9ÍĦlÖÄKE]èÁƒlÓ¦�bs`aaÁ äÊiõ�!CԾ̲ãÚP*•òرc8p Âƒ�H$bÆ yåÊ•ØïÝ»Çre�h(2à< dë´Æw°�îbgà¤I“TÆ#“ÉXÙ¹"K6ØUú}+�‹{�– °êõäÂ?¬ù+h^‚SТøC”r¹Š#@A¬þ¢¯¯Ï€€:;;+¼Û*TˆMš4áøñã¹k×®<‹lJSSSêééQ,3((Hk„Ì�QåªW¯^LHH`JJ ¯\¹ÂððpnÞ¼™Û¶mã¹sçòÍæI[üý÷ß\°`�"B±��½½½ó4îÌ… Ôz6Ò‹# ¹‹��¥¿¿?E"K–,Éßÿ]íI÷€tžGtt4hTíKHHàµk׸cÇΙ3‡ `“&Mhoo¯4VªT‰mÛ¶åðáùxñb C�$fbSÖv©•il‹gÏž±K—.Š´©©)§L™’íhå$Y§N•—Yñâŵ& 2™Œ§OŸæ°aÃ.õ Ô«sˆ%:W«Áyóæ}3]ü—/_réÒ¥ôôô¤ ÔÓÓc«V­ò5îÌ“'O§«éi÷îÝ™Ö?~<‹+¦ÕsÃ.]ºP–*UŠ‹-R�?u*Xƒ ÒyÉÉÉ”H$=z4CCC9}útöêÕ‹*§ë¦¦¦¬^½:;uêÄÑ£GsåÊ•œÏŸ?ç¬Y³€Óч2Dfû{Aåc„±œØŽv%l9aÂJ$Ö«WO§Cºƒª•.`£F�”$( .ÔX€ÚŠV­ZeÚÿìÙ³ijjú]»/þ/¡€€@ £F�¢žµSþ�Ž‹)†$ËÛìa?´&º×u×zƒóâÅ öíÛ—‰DqJ8tèP�OÇ“““Õž²dÅX&“ñâÅ‹5j”BŸÕÆFŸ"**JiÓàïïO�Æõ5>~üȲveXNbÇx„çèc’ž~ÇPÊAÝúöíK3‰Ú>¯5�š!r©FósÚ©b•h©^ ™£uÊ ¤¥¥qÆŒ‰D444¤¾¾>çÍ›§ó‡+]åªbÅŠ>|8 ™™‚@QÅæDûbð ù37+�˜ñ–~žè´”Bu_ =ê2000_ŒÔß¾}ËU«V)âΈÅbzyyqÕªUjc¸ä5d2«T©ÂŽ;2""‚ýúõËRÅÃÝÝ��:uÊ´Ì�7èççGAhkkË%K–¨HQÕmn† ¢qœ/^¼`TTׯ_ÏI“&Ñßߟ®®®´°°PjÂuêÔ¡¿¿?'MšÄuëÖ1**Š/^¼øæ*OñåËÖ®]›eÊ”ÉÕÍ4ùÏ{sÒ¤I¬Q£y|‹Æ�3$$„qqqÙjÓÄÄD+�ccå$™™™±C‡\¶lY®DNÏ —/_f‡´_ú7mºçÊ·‚8Ê'ØÊ‚%EqäÈ‘:Iß=z¤ò œW­Z5xzzj=þ¼‚X,ƸqãдiStîÜOŸ>ŨQ£°sçN¬]»™ÖOJJÂàÁƒ±fÍx{{ãÁÃǘ¿`èþÐ02‹²jj™vµ»Ú û�À§—H9³ —ÌÄŽ�»°qýZxxxäê)) çÏŸÇo¿ý¦öú�7„íÛ·ÃÖÖK—.EÏž=a`` TŽ¤Ú¸Ÿ?ƱcÇTâcÄÅÅáÓ§OŠrÅ‹‡ƒƒ*V¬ˆ6mÚàðáÃxñ⢢¢P¤H•v¿Gèëë#,, 5jÔ@ß¾}±uëVµ±3´Err2"##±k×.ìٳϞ=ƒ™™Z¶l‰_~ùÍ›7‡¹¹y¶Ûýú5Q¶¬ºçJ5kÖDxx¸Î}ˆÅb¸ºº¢Y³fhÖ¬j×®­sÌ’œ zõêǵk×”åd)RÔE%LA@®�¡Ša#Ç¡1F téÒÐÓÓÓª^JJ |}}ñæÍ•k‰Û¶mƒµµ5RSSÑ·o_¬_¿^c[]ºt���¢¢¢T®U­Z5Óq¸¸¸.\¸ ˆûR€<Ä·f@ø¾�î3Þên„®o¬Ùݪ¼j~íŠDzô@UD;Ž„/‡ ›£­$rO%† ‚@???FGGSOOOET[¼ÿžãÇ�WˆÔA`Û¶myíÚµLë-X°@íiJÆ“øœºM7rÏL‡93;vŒ¸Ãrí4+=%`$%éQ¯>)‹èº\½Ô¢Ó+õïÇòüòCÁÊcAC+P�€f•ÁzëÔ·Õì„êšgÇx8¯ñéÓ'…ý†‰‰ ���¹dÉ�'ÖU®Æ�OÓÂf”Ø”'†�Ñ,yÌ,�»C±C}Š%’\ñà’��ÀÐÐPz{{+<ˆÕ«W� ,øæqg2¢OŸ>´··×ZýèðáÃÀëׯ+å_½zUqêmooÏ+V¨õÒ•ššÊ{÷î)"bkJ‚ ÐÞÞžMš4aÿþý9gÎîØ±ƒW¯^Uû|/\¸�úúú¹n«‘ضmpéÒ¥:×}ñâW¯^ÍöíÛ+¢�—-[–���ŒŒŒÌÕõ8{ö,ht!•JyùòeΞ=[á@A›äààÀ�òÏ?ÿÌuIPNqõêUvêÔIãØõ ám¬'q”Ÿ°�£Ð™^¨EK˜Q€À)è©ò-�!’¿b +£4  GÒ •Ž©Jå¢M�MµÖV}úÄ3f°P¡BŠþ6lÈ“'Oª-ïïï¯v“qõêÕ\s3šî}ìÊ•+ÙšSËæ-YC\ŽRáe¬¤j±ŠQÃ�5QŽ+0Råƒ�ålšÂˆæ0exð>6«”Ûƒ™ÀÐÐP ×1ÝÈgäùzf`QÐs·œ`”é&ϯ»RM[/•×ÜØØø»ûÈgÄÖ­[iff¦ðfæå奢ÿœÑËÕÖ­[ilZˆ"§†ÄÌÙ#„ZÝ)ˆDüóÏ?uûçÏŸ¹cÇúùù)6ƒµjÕâ¼yóøèÑ£ÜZ¢\ÃÇ�ibb©S§j]gâĉ´°°P–+W®(TVJ—.Í•+WòãÇ�Œ��åîÝ»ÂÁƒ³yóætttT¨rjJ;vdll¬ÎN/Òmª²ûìk 4ˆYŽ?ݶ"88˜nnnŠø:õêÕã¬Y³xóæÍ>>JöˆÙ-ï÷ØBs˜Òèñ�‚ IDATÕÙ­)@àT5d,ºR€À@tâ1„p?f³5Ü(@à)Ê=ÅVŠ1-Z”åøÒu©S§N”Éd|ùòe–Ä0c€ÈÎ�;«.==­H­¿¿?ÝÜܲ»ÜФJ�J¥4/jA4®¼Áé¿�è¹�è¼ZN@ªûÊÿßs1;éOXêš—’ÇÉØÞÄÔ�)�ÇÁÁ�úúúŠ�D,Ö±ŒÙÕ¸³¹A¬‚2, Ko(RaYII¶jÕŠ€f;�$Jž/6;Æ+_³t�mUÛòû¨¼æ9‰|ž_xüø1===„´páÂ\»v-Ø«W/r/Wñññ´-]†bûÚÊ„='é×4 Õ;ÑÈÄT«`•_¾|áîݻ٭[7¯V­ƒƒƒ¿ûÍÕÊ•+)‚N®ìСO�:¥pÛ]´hQ6hЀžžž´³³SÚ¤²råÊl×®GŽÉ%K–0""‚111jß[Ù•Ì~üø‘‚ pÍš5Ùªÿ­ñùógV«V�åÊ•S‘𤤤ðÈ‘#6l˜Âƒ”‰‰ ½½½¹fÍš<óV÷5f̘Á"EŠðàÁƒ9r$���¿›‹‹ ÇŒÃÈÈHyôóó# 7dvssãäÉ“ÅÔÔT…´:¿œ-ä®_¿N___ż£±\­Äû5vj$ %`ɦ¨©”—‚C´„ÛÁ])¿£Ð�•ËWÊtL7oÞÔHöÊ•+Ç>ðÞ½{tttÔH<$ 7nܨÔnåÊ•UÊU«VM«u ¡¡¡a¶¤@{�¨`Ô¨Q›!f'þ³¹)ZZN<AîR7ãß“ýSnd4Q®)¡oBšU;î«n–šŒ¡XÏ@í %£Á3)!ˆD"êëëóùóç|øð! .ÌnݺåÊ|¿|ùÂeË–)Å�pppà† øüùsµc´··ÏU7£2™ŒæææYQS‡àà`›0ûÕ~PÒST£¬ÿ÷�'­PDÉçû#„Rz�.*õg¢õ%rÃE¯ãº�6·äù–®ªuªN‘_óy­¦­ k~öìÙ\Yë¼FZZgΜI±X¬0ª,T¨�ŒŒ�úé'Šô�ˆqws‡|¤§™()jËÆMšª=MNMMåÁƒÙ»woñ®X±"§L™ÂØØØü^ªlÃÕÕ•-Z´ÐxýíÛ·<þ<·lÙÂiÓ¦±[·nŠÍJÆ{ÊÔÔ”5jÔ ��ÇŽË?þøƒÇŽãÓ§O5ªv}úôIí;a„ Ùž�““‡šíúß·oߦ‰‰ »uëÆ7oÞpÓ¦Mìܹ3ÍÌÌÈc3ýøã�Ü·o_¾¹‘–Éd¼zõ*çÎ�Ë%J(Èe‰%سgOnÞ¼Yc´ðS§N1<<\m̈‹/�Žý7¢k×®,-ØhüN¼Ê„€ØÁšÞðPÉ/ KvBC¥¼0L"�$óãÇ�¬P¡‚ÚgÉØØ˜×¯_gtt´ÒwùëdjjªU=99Yˆ2cÒv¿�.‘¼zõj6V·º À½*0`æÎ� œ[x ‘gN| ]åR.ÀÀC™—Izñù?àÓÑ¡¡¡*—W¯^�bÅŠ¡mÛ¶066FÏž=1~üxH¥RüöÛo˜3g–,Y‚nݺ¡U«Vèܹ³Ž3T†¾¾> €Þ½{cË–-˜0aîÝ»‡îÝ»k4"7nüüürÔoF‚GGGÄÅÅé\÷âÅ‹¨Åò0FæÆùE`Їÿû; RìÁôDs˜ÂHQÆÖh„êø§0 ý•ê{À)ircüOwëÚ�±� 1�z#õô¼¯lX?ÝùçïªU«¢N-­×¿1Äb1ÆŒƒ¦M›¢uëÖ€ÄÄD.\ÆÆÆˆ‰‰ÁâÅ‹�öó�bŽê‰;,i¬þÚ°³€½†µ0,Œ4Ÿ•ˆ\ÞýõÚ·o©TŠ“'O",, Û·oÇëׯáàà€AƒÁÏÏUªTÉ‘q~ãúõë8wîV¯^�¨¨(%£ïtÃï·oÿq†aff©T 011AçÎ�ѵkWT¨P–––:Ï=½­¯!©ñÊ %\\\pùòål×ÿÖ‹Åhß¾=6n܈M›6�$\\\ˆ¶mÛ¢F�ùr�ÅÇÇãðáȈˆÀ¡C‡###¡jժشi*Uª”åXÜÝÝ5^«P¡ &&æ_óNʈ‡÷À•Ù3°þ�1K°‡Ðõ‘Œü†mx‡ E¥²µP�-Z(]#‰~ýúáÖ­[jûY¾|9âããáíí�„„µe¬¬¬°oß>Ô¬YS)ÿÖ­[jŸÑ¬ ÐÓQ½zuˆD"\¸pAë:È HTààà€>}ûbíÆq�Vn µÏÝþYÒ”/_^íåÏŸ?£K—.055…··7ºu놮]»bË–-X¼x1F� ìÙ³„»»;lmms<¬„„¤¥¥¡B… xúô)H"--MmYu°r GGGܽ{WçzÑg/ÂG榒ORÈ�€ÏÇ ìÇyÌÃ�€{x†d¤ *T½Â8£,!)H…>þñbRŽA„b6xý è£ýEÀ¶ðh;ðù9`Tüc$ðl¿œ |å¸ëM4䤄rRüoÚ$'%%aÉ’%xñâÊ•+‡;wîÀÄľ¾¾prr‚¸°5¤î³n¨ÕLÀ±‘ržMåÌëTøâ2n˜6#‘‘‘ضmâããagg‡^½zÁÏÏ...ßýzÊd2<{öLÅ£ÔñãÇ!z÷î­([¢D 8::ÂÙÙíÛ·‡££#’““±iÓ&DDDÀÂÂ$ñòåKèëëçh\šˆ:ïvÚ¢F�Ø»w/d2YŽˆL~A*•âܹsصkvíÚ…ØØX T©Rxùò%öïß�Æ�5è\ÄçÏŸqêÔ)á¸zõ*ùz Y³f¨W¯*V¬ˆ~ø•+gñìhØÛÛ#666Çm} \¿~­‘½Ã³ŸÐi�¢7æ fÌaŠ?(oÖË 8 ‹MqíÚ5²hÑ"„……©íãÇ„H$BË–-‘ššª¶Œƒƒ<¨ÖÛàµk×ÔÖqvvÎr~`jjŠŠ+ââÅ‹èÓG‡�\tF)€Zü:oöî?€—¡=!ë�ä죭ÀÕíÀÅ (ëà€©S§ª-²lÙ2ØÚÚbóæÍØ´i6lØ $$$@"‘`þüù ·ºU«VE@@>œ­÷§OŸnF<ˆ´´44hЋ/†··7Z¶l©r2)‘H`ff–­ég'''œ8qBçzO㟡,Š«äDV`@ ‚ÑCþwJõEQH¥^QA¼Ã'%w¾&0‚µ^QX۔ģ£ï@¦!}ûl?�–¤ýÏÛ臛r²%[# jðlÙpž èâþÞFj¾EñGAê¡k×®:¯Ë·BLL |}}ñàÁ¬]»Gß¾}annŽ»÷îMÆj÷LsÒ,íÈR÷Ÿpic7<}ü]ºtAçÎ�áêêúÝ‘ŽÔÔT€¢S@’’’p÷î]”+W®ÀrŠIIIˆ��ETTöî݋ׯ_ÃÚÚ~~~˜>}:Z¶l ‘H„Úµkcذa8sæL¶û¢ �Y4ç±±±ˆ��ÅñãÇ‘šš {{{øøø`ôèÑhÑ¢lll„>xôè‘F¼š¢R¥Jÿ• I|Jþ„’*Ö}M0˜€5�®øµ‘ŽLl@,Úa¶"mQ_8VJŠMññãÇl2N�:…~øA¥|OOO¸¸¸ä¹Þ{zzbß¾}Ùîñ—P§€hãÍðôôÄùóç5>¾C±R •033CĦ�héãnîöØ H4ãôV‹?@¼¹ÚwêŒß"¶ wïÞØ²eK®ÃÌÍÍáêêŠ &`üøñ¸pá6oÞŒ_~ù˜1cär9úõë‡ 6 yóæ S»¨åDrr2öîÝ‹­[·bÿþýHMME½zõ0oÞE¥€À¥K—þU ÈãÇ�…¨¨(>|ééépwwGÿþýѶm[Ô©S'×yoÛ¶ ^^^>|8V®\Yè9¼xñ"[XÕ³gÏ`hhˆ&Mš`úôéðññ�‡‡‡ZåúÑ£G�Ëåpqq)ô\”¨T©¢¢¢t&ïkB$�*caóÆ ¼ÅÏX�èŒi_¸¿›¡žá B–M²{ô^½z%¼“9aaa�êÕ«c̘1jçЪU+DFFÂÄÄDí1W¯^U)ÛÞ>·‘N¼¼¼°eˤ¥¥åªT Ý¡X)†Z4mÚ¿oÛ†ÎP¬üŠÀu€y)í)ÀÉeÀ®(ãR›7m„T*^òœør³)‰àéé OOOÔ«W]ºtIÌŸ?3gÎDݺuáíí�±cÇ¢E‹¨V­šÊ)¤¦¦"&&[·nETT>þ OOOL�:(]ºt®>wîÜÉK®„££#žåê÷Ÿ²¬W*¬diâ T¯^×o^ÅͰ‚Ò^Ã!s ™ßí[¿dí¹ à÷ßGLL ³möóûoA�144Ôh3ùöí[:tHåßÞ¼yƒeË–©î(5l5ŒÁŽ 6tô��2õŸ €‹úøtúF�:xàâÅ‹š�SH|úôIP*r*ÊpF «Ð©››\]]Ѿ}{áÿÝÜÜàää”ïu_½z57nœMù8yò$&OžŒƒÂÝÝ¿ýö:uê$È:qâÒÒÒtVÀ²(kkk8::âÒ¥KÐP9-�Ä¥K—„ЪK—.A"‘ qãÆ˜={6Ú¶m›o‘M,Y²ýû÷G³fͨÕRSSqòäIÁËqùòeYEH{ôè4lØPã‚´‰‰Y‹“®= ‹-BjjªÆóø7@$ÁÒÌÏß©(œîà  �Ûñ%j¡"##ƒÌÌL4lØK—.E§N�`llŒôôt:t[·nÅ®]»ðñãGT­ZãÆ�C@@€°áW‡³gϪü}Ñ¢E°µµÅ”)SpðàAìÝ»;wîD³fÍE¨ ¡.ÊùܹsG¥B—/_Ftt4bbb���¹\)$¸�Üžšœ¨…òP€xˆ¨… �Áà^®ã®âÊÁ1[þ¼Â{¼Q|ÀàÁƒ‘™™‰=zàÑî¬Ü]âý5àÆ\à›V¾ðöö†\.GZZRRR�šššë¿?~ÄË—/Uþ-%%)))*+Wç==½|•uÉ‘ùÂÎ�ä³ôÊJÞc×&€‘ðú7XÚønPÑ'ßa2í«ãâeÕáÁÛ·osy0”íåË—Âqfff‚bQ¿~}Á‹áêê {{û‡�ݽ{GŽÁÆ�ñññ˜ŒÊ•+cÛ¶mèØ±c®PÌcÇŽÁÜÜ\ãðüP ðÏ%¢§¦¦"..{öìATT”P…ü›o¾Á�?þˆÖ­[k]¡½oß¾8rä OOÏ<½:$qãÆ Aá8vìRRR`kk üðÃhÑ¢ììì t~÷î݃H$Rid*(*Uª…B�Û·oëì¹úZ¨^³.¹ý7ù‡†pFÖõ?ƒ›è‚ìyi§q0ÍFhò'"E‘*x÷&Ož¬Ö`S¦L=zTíØcÆŒÁÌ™3ó];^¿~�gÏžåú]Û{TµjUH¥Ò,‚—b¤ÈP¬€#_x{{ãÏ×0|ÄlX?âèñPÔx´ì«ú/: �w€Ä“@¯À½xèËŒ!‘É�’’KKK|ÿý÷prr‡TŽ7`Àì޽˗/Ï–\.•JŒiÓ¦!##oß¾ETT^¿~�Å‹cÚ´i Bpp0ñâÅ $%%¡bÅŠ1bºté‚J•4gÿ8sæŒÊßk×® '''ÄÆÆâìÙ³˜6m¢¢¢pòäIøøø F�;v,:tè Õ¦ÄÚÚ%J”ÈÆ„õîÝ;>>¨R¥ŠN®Cbb"œœœt’ÿ£„ò;róæÍÿ:¤–W-¬;¶ ŠLÄøû�‰Æ|F*>!p÷‰c?ÔE)X#M±Û¡)Z£6Ò��õ8€8\Æ4ôÍ6ÎYdåÈÔ¨Qû÷ïÇÔ©SUÎÇÔÔTðRå„H$BXX† ¦Ñ¹© ¿´Ëÿ²<µ•+W.Î)bˆX�`Àbü¿Å�7ˆ?®^(Ïʶp Myðþ�úŸM�HŒY3gÀÇÇ^^^022BRR\\\ðüùs4oÞ}Šj5«Bn÷-â팤¹ Oâ;O÷‰pæôÙµåéóçÏð÷÷Ç‘#G´ï\Á>P°�w�Ž/æ¤Ò|”³�ÃPþÕaܺqMøI.—ãñãÇ*ó1îÞ½‹ÏŸ? Ç::: ŠÅ—¡R®®®(Q¢DÁæ_@dffÂÖÖ2™ Ož‘––sssLŸ>#GŽÔÉ\îÞ½«Ò{ºdÉ <¸ÀrwíÚ…öíÛãñãÇptt,Ìs�$nÞ¼)„V�>}P·n]øûû£mÛ¶ÑÓj‹K—.¡nݺèß¿?:v숃"66V ¬Zµ*|||„°*™L–�DíѵkW<þ|8–.] ’¸wïÊ•+‡ØØØ\òÍÌÌàïï�&Mš`̘14h"""°jÕ*T¨P666ÀÑ£GñìÙ3øúúâÖ­[xúô)J•*…2eÊ )) 7nÜÀ£G�°yófDDD`É’%pssC÷îÝѽ{÷|=ÓÒÒT.<ꘄªU«†ßÿ7nÜÀÌ™3±yóf<~üÁÁÁ ÅÈ‘#¬rãöæÍÄÆÆ"::7nÜÀ¥K—°k×®<ç—° {ŠÞ¨…òG4–c>â3JÀÕá†M‡nh!ô©€Ò8Š0ŒÁJtÂDH!AsÔÄ<„äR>>#ë$2`°pþð÷ûkׯAl É. Dö¼`�‘ú 8ÕK„'±Äð¡ÃþÕÊÇ�7йsgܽ{ŽŽŽ044Ìå!ÉÓ®ó>w ´öÐ`£øé2ÒÓ0|øpAÁ¸wïÒÓ³j¹ˆÅb”)S®®®hРz÷î-(eË–-’Í ¶ ‰¸¸8 :oß¾E… °sçNøûûkÄzwöìY¤¦¦ê,ÿ(º¬/Ñu¡€ddd >>QQQسgîÝ»###øøø <<~~~j™„ ¥ÂsìØ1¸¹¹aÙ²eX¶llllàããƒáÇ£E‹Z%‰‰‰:¡ß͉ÿV&¬úõë£rE,ýsW6$ùöÕ‡BÑ¡è�çqבˆcòËØ¼�;wV©|êß%SSSìÚµKk*gUù"‘¨@÷ßÓÓkÖ¬AJJÊ¿b-ü_D±R ­ ÌCÈ UªT�““ºvíŠ-[¶`Ö¬Y˜8q""""`bb‚Û·o«LDþN@733Ê+ˆþýû ÏæÍ›ƒ¤ÐÿøñãF·nÝP·n]<þUªTApp0"##Q³fMÌ™3qqqؼy3,X€É“'£víÚèÞ½;ºté[[Û\ó¸|ù²°QûùÕÿpwwÇÆ�1qâDÌœ9ëׯÇû÷ï1nÜ8̘1ƒ Â�!CðèÑ#ÄÄÄ ::gÏžÕ:G!'dÆ2,KÞ�쌾ðE_øæß @M”ÇAÌË÷¸pìÇGÅg 8PøíÈ‘#X»v-Hàãm`o Æ, Â�¬ºš€FçIÀ)ŒeRLŸ>]³Îÿ6lØ€��¸¸¸àâÅ‹pwwÏu I¤§§« çÚ²e æ‡-3R=-“WÓ’€?vŽ54ËÁº><øò[µj•Í›áìì¬Ó°]‚$Ž9‚I“& ¬b®®®¸yó¦VVúcÇŽÁÌÌL-9EAPT HéÒ¥Q²dI\ºtI(`©-Þ¿�èèhDEEaÿþýøðáжm[øûûÃÛۻȒ¦_¿~�-¬êÉ“'000@Æ !‹ñàÁœ:uJ§ÉàšàÞ½{¾žy¡R¥J8uê”Îå5þüóO¼ýø×pÇpMP]§ò âGñ¯p´vÀñãǵc²³³Ctt4ªW×~^ªB°\]]5f•üžžž�Ëå¸|ù2êÕË]g«:ÀWª¸^Œÿ$&&YwµmÙ²e$ÉÓ§O:D’üí·ß€eË–¥žž rõ­W¯^¶ñ Ïž=Ëzõê ǘ››ÓÚÚš•+W&®]»6[ŸíÛ·«ü�$“““¹mÛ6úûûSOO�‰„­[·æÆ�ùéÓ'á¸E‹©<·#GŽhu½îß¿ÏAƒQ*•R*•R,ç{ý4izzzlÞ¼9çÎ�Ëk×®ñîÝ»464f0üIÄé´%"‚&#0@8¯W¯^ÑÁÁAåÜdö`µ©`û`w؃¹[§W ×/`‰ Y}ÚuhGkkk÷«W¯.´ìæÍ›³}ûöZõ¹sçÃÂÂèííM©TJ¬Q£'NœÈóçÏS¡Pz^ª�––Ƹ¸8Ž;–µjÕ¢H$"V®\™#GŽdLLŒðž¼{÷ŽeÊ”a�:u˜žž^$óQ…�?7mÚ¤sÙ .¤��333u.»¨°eËų4l˜„ý:ý^¬ÁhàÈ‘#µþ®U¨P�‰‰‰:7¹\N##£\2µ}Ÿ”HKK£¾¾>/^\ þÅÈÅ H1´ÂÎ�;ó]D–/_N2k3áææÆ   áßÍ›7§““õõõUöýæ›oH’7oÞä¤I“X©R%Aéð÷÷gÙ²e)‘HèëëKlѢ˕+—ë#ЧOš˜˜ðîÝ»jÏåõë×\±b6lH422b`` ÷íÛÇ®]»æš›H$âÇ�5¾VçÎ�chh(k×®-|œ Óœ��ÌÝ»wgS–”Xºt)pfêìc’†X6×`i'~øðA¸�þþþ*ç(•JÙ®];ʲ”KKоX6tí –ú”9üçxh(3ä¾}ûøûï¿ÿøã�¯ï×Âõë×éîîN###®_¿¾P²ÒÓÓiekG4É[�ð›A8T# L±„0±!ªv$FžÏ_ù#Ñ~%R)Ÿ={¦£«P´P(Œ‰‰ ^^^Ü»w/ §M›F###áùÓiii”Édœ;w®Nçzùòe•Ͼ.”½Q£F±L™2y“™™É„„þôÓOtww'êëë³uëÖ\¶l>|Xèy¨‚B¡àÍ›7¹hÑ"úùù YkkkvëÖ�ëÖ­ã“'OÔö?}ú4¥R)üñÇ"™Ÿ*\¹r…xòäI�Ë>pàðÎ�;:—­k¤¦¦2$$$×3+†ˆíш™8¤“ïÅ,£‰ÄˆmÛ´¥L&ÓêûV§N¾zõªÀçxûöm•r'NœX`™^^^ìÕ«W�û#o+ ÅÐ 'NÌw!ùÒR9iÒ$ššš –°›7oROOOP r¶ªU«²Zµj@SSSöìÙ“{÷îeZZɬ ÜŒ3h``@±XLooo`DDD¶y~üø‘eË–eýúõ™‘‘‘ïy%&&rÆŒÂ]•§¢råÊZ]«víÚJáÐ××gË–-¹`ÁÞ¼y3_K¦\.gß64òúc’Žƒ 5£¾TŸG�ÆY¶l™Ú9‡……‘̲xîܹ“–––„I³DÙ�'Iúøøäò~ý°nÝ:ÑÃÃׯ_׺¿B¡à“'OxìØ1®Y³†ãÆ�cùòå =1óƒfÊ„¶m�‚R» èRWD·P(Ü¿?ëÔ©#lBöïß/<ër¹œ...‚Cœ8q‚xîÜ9�ÎùÂ… *Ÿý 6ZöæÍ› €oÞ¼Éöû§OŸ¸cÇöéÓ‡ÖÖÖ@+++qûöíZF´Áëׯ¹uëVöë×�NNNºäííÍY³fñâÅ‹”ËåË›7o^–‘dß¾"™oN( fE¡ˆ?|ø�¥sٺĽ{÷X«V-µk¶"vB¦â@¡¾'±„æSÖñ¬MWWW­¾u~~~LJJ*Ôy*#r¶ÈÈÈË4hÝÝÝ 5¯b¨G±R ­ É¦zåÊ•ÂñJ«Äo¿ý&üöÓO?Q___¥W@,³K—.ܱcSRRÔÎãÏ?ÿd©R¥€¬T©R®aBBÅb1§N�ªñù) ÆÅÅ©<¯Ž;jq¥È°°0­•J$öéÓ§@ òçÏŸéÝ´ Å Ç�TàH�>&Oð;[Š=©'ÕãŽ;ù×®]£¡¡¡Ê¹·nÝ:×=(_¾¼Úsõðð`ff&ïÝ»Gàß.¤MÈUff&yðàA®X±‚£F�b»víX¥J•\!ÖÖÖÔÓÓ#Db¢éE£€tYEæŸþÉÅ‹³M›6BX•••¹víZ>~üX§c¾zõŠŽŽŽlÔ¨‘ΕÜÆ�¯3å°C‡¹äËd²B)êüñðرc:™c1²£X)†Æx÷î�F‹Š2¬F‰¥K—R*•rîܹlÚ´)E"‘Ú ¾rãwöìY�æÔ¾}{–+WŽÀ€€€láôôtÖ®]›nnn*ó&Ô!))‰cÇŽ%úûûÓÑÑ‘sçÎe»ví¨§§G±XLþòË/ gÏž=åÁÔÔ”íÛ·çÊ•+Y®\¹\çèææÆ!C†pÿþý¦;))‰óæÍ£­­-O'''.\¸°@Vǽ{÷ÒPj@ÀVðb$&ó)"UZ°.àWNDoÚK­€={ôÌ2dȵ÷<::ZåLMMU/‰¸páB¦§§ÓÖÖö_‘|þùógN›6�úúú´µµe@@[´hÁ2eÊd{^ X©R%¶mÛ–#FŒàÒ¥KÃ;wî¨Tïß¿Ïúõëç¾" Qž}¨åcæGJÊÔ¦�C)¾ÿþ¸‚ê¡P(¸{÷n!¤aÆ>^ Aȯ‰D"þòË/:=o77·\ãxyyJfFFe2Y�Ö bä�b¤ãèÑ£-.kÖ¬!I¾}û–ááálÚ´©°è´lÙ’áááCVÎÖ¥KÖ«W�666y&�+qäÈàìÙ³ €fff´°°àúõë…ÍÍ_ýE#£ì,Nš $$„+Vþ­P((—ËyðàAúûûgÛ\›››³cÇŽlܸ1ííí³ÍÏÄĄժUcÇŽ9fÌ®\¹’GŽáǵڜEFFæ!–%KãïNù˜þ–p®C#S^¸p¡¯ vP(ܹs'kÔ¨Alܸ1>¬‘Õ3,,Œzzz|ùò¥Öã&$$€VžOMqìØ1•÷òËPżðòåK®]»–íÛ·<...6l:Äàà`�ZíÓÓÓyüøqŽ?>!F¥J•8lØ0îÛ·¯Ðñ÷Á´iÓ(‰–Ä¢@¥J•8dÈ�"“?sæL–(Q¢È˜Æ´ÅÁƒ…!Mš¡¡a.ãQzz:###@=äV(¤" ÍMÌøÓO? øÏŸ?ϵ†ªkܾ}»NÏ;))IeÄA_x‚4hÀÀÀ@̲9Q¬€Cc,\¸P£æ»ï¾c›6m¨§§G‘HĦM›²J•*ôôôd t¤97©”qqqtssc… òÝp+ º»»³C‡¬]»6ëÔ©ÃîÝ»gYfZµâýû÷I’+W®$îÞ½[ãó­U«{÷îÍ—/_rÓ¦MìÞ½;­¬¬E§S§Nœ3gÇŽ+P[ZZ2$$„'Ož¤B¡à›7o˜œœ¬Õu,D...ÂÅÀÀ€FFF>|¸FL7“'OVy�Û´iÃ~ýú±W¯^ áâÅ‹™�� 6êéÓ§ÂyçlÕªUcjjªÊ~êb��œœ8tèPº¹¹é<ù\¡PðåË—LHHàÆ�9qâDvïÞ�uëÖÍu¬]»6}}}ieeE}}}þüóÏ|þüy¡7ÉÉÉ8p f±”"CS¢Ëjb�B{åc@4ÅfI¤,Q¢D¡C�t¹\ÎíÛ· „M›6e\\œÆý =<<عsç�?sæLš˜˜Iˆ�Ò葳©[[ ¯_¿ÎY³f ¡™"‘ˆuëÖåŒ3xíÚµlÏÛªU«(‹ ’¨P(ø×_qéÒ¥ô÷÷§‰‰‰°6uéÒ…áááEÆ”¥ 233Ù¢E ÚÚÚª ß,,  bŒ¢À®]» Oö¯¯�ÌÌLNš4I+¶E###>|X­L¹\®²_£F�(“É„w+##ƒÍš5ÓhLsss?~\çç¯n?±páÂBË6lÝÜÜt0ËbäD±R �ѧO�·úõësÑ¢E¬¬¢ô() s¶’%KÒÍÍ�—.]¢••6l˜g2:™ÅÊ$‹N +^sß¾}trr¢±±1/^ÌŒŒ úûûÓÊÊ*_F”ÌÌL=z”b±˜ÎÎ΢^£F Ž;–Ç�WjsåÊŽ=Z¥pqqáÏ?ÿÌ7nhu��?N¼~ý:ÓÓÓ¹~ýz!™»lÙ²455¥T*ePP�ZÙ …B 0þ²éëëóÝ»wÏE.—³eË–*ï•L&S;¾:+1úúú l?€öÉçr¹œ�?æÑ£G¹zõjŽ;–�;wf�5X¢D‰lcÙÙÙ±aÆìÝ»7§N�ʈˆž;wNmù’åJÛû¤×®]Òüš¾¾>W¯^Í ÿ¼[ârM‰~{ˆù™ù2]aðq¢Z§,Y"1…8耀€BQZr¹œ‘‘‘¬Zµ*°Y³fÙÔ4…2ÏâÀ�šG«V­ØºuëõÍTy/÷îÝ+“žžÎ#GŽpĈ#�‘‘ÛµkÇððð<7ÜçÏŸ'ž:uJã9½}û–‘‘‘0`€�§§§§Ç&MšpÆŒ<þ|‘‡UÏž=£­­-[´h¡óù=}ú”¸k×.�Êý·nÝ"€"õâ䇗/_ÒÇÇGão3�&Ÿ§Üääd•}•>¥§\ªœ_sttäÕ«W‹ä¬^½Zå˜ÚÖíR…�7@‘„CþG±R �¡ £È¯©²8}þü™¦¦¦œ4iIrÛ¶m*ûJ$³sçÎLHH ¡¡!òü8}úô‰%J”àØ±cY­Z5¶lÙ’dï÷ßO ‹e'>>ž¶¶¶ôõõÍeá~þü9ׯ_ÏÀÀÀ,êØÿ̧eË–\»v-Ÿ>}ªñu’Ë匋‹cÿþýif–'[³fMΟ?_#K™òÃù¥E533“¿ýö›°±uuu,úíڵ˵YQ&ÏålmÛ¶Õø>ž¡¡¡¬[·®�£T±bE:”{÷îÕ*çíŸÄÁƒ)‰8}út�Ê=yò$�¢ ïÌÈÈ ¾¾>—,YRdcä…'N„š6333ž>}:_ÙoÞ¼QÙÿ矦H$bxx8÷ì٣јîîîEêu:t¨Êqua„¹yóæ?®dþ¯¢X)†FPVÕd±QWu6((ˆnnnT(\µj•ʾ•*UÔ%K–pÇŽ‰Dù¯:t(­¬¬kÅ— l||<+T¨@}}}öèÑC�}âÄ Ž?>Gz­Zµ8~üx:”†††…®Ú›’’ÂíÛ·³C‡Ô××§X,f‹-¸víZµ…Õ �ŒŒ8oÞ¼\“Ëåܹs'kÖ¬)("J�K“&MM…BÁŸþY«{£ çÏŸÏÆðôeëСƒÚ0¥­[·æù|tïÞ�iii‰D¬R¥ ÷îÝË… rðàÁüæ›oX®\¹lÉŒR©”nnnlݺ5̰°0FEEñæÍ›ùzÇTA—…•x÷î;wî¬ñ& B… j ˜�={–ƒ bÕê5)UqýmJ±wïÞ}RÉà€¥J•RûAIKKcÙ²eó|>ìììr%JÒÃÃþþþ9r$—-[ÆðîÝ»:�ã/Š�«„„„<é†s¶fÍšiìÎOMMåíÛ·yõêUÞºu‹¥J•â˜1cÔŸœœ,X[·nÍ… ÒÔÔ”NNNÙ(• ‹ÌÌLnÙ²EókÕªt"{åÊ•‹Å¶˜Îž=›ÆÆÆ…6¨Bff&�9Â��¡0ŸT*eƒ 8þ|�)AAA¬Q£·oßÎ� ¹`R©”�7æ´iÓxöìÙ"©òO ##ƒ�5b©R¥´"ÚÈ S¦L¡µµµNdå…N�:±Y³fE>ŽïÞ½+P‘[kkk•#êpçΕr–,YÂ=zhäém×®�Ö9�ÚB¡Pd‹ZP6��Ñ´iSvêÔIgòŠ‘…bä+B¡Pðøñã2dëÕ®K™Aö¸”­#¿õÿ–sçÎå‹/þ±y*s BBB„�¢’bV“¶e˵r8xð`Ž?^eßáÇsÉ’%²¬ÄÎÎÎ|ûö-GŒA±Xœgy«V­èååÅõë×ÏŸ?ÏãÇ�sìØ±¬^½:�¬�eq¸’%KªuÑ–)S†#FŒÐÉõT…G�qΜ9B’®……ƒƒƒO¹\ÎŽ;²E‹ùÊQ(<|ø°À4V¦L•t„€v…ûöí«R†H$ÊÓÿîÝ;ž;wŽ‚Õ=¯æììL–,Y’%J”КYª ø2äª_¿~: ¹ÊÌÌäôéÓÆ2MZŸ>}r)›ÚÀÇLJíÚµË÷¸ýû÷ÓÖÖ–ÖÖÖ\³f ½½½ €ƒ *”±#33“›6mbÅŠ €ß|ó�Î= Jb€‚Â××W§›�¤¤$îܹ“}ûöÖAKKK~óÍ7 1ex~ÈÈÈàÉ“'9qâÄlõ–Ê—/ÏÁƒsÏž=ÿÓÑ=zDKKK¶iÓF'¬RAAA¬]»¶f–7&L˜@;;»"‡$/\¸�¯�GU³··×ÚàrõêU•²V­ZÅ:uêä;æÀ�¿Š‚¬ÎS3jÔ(��1jÔ(:;;ëL^1²P¬€|( ®[·Ž•+f…)8Kíˆæœ�þŽI܉©Üˆqƒ@6×¢¡Ø€zR=v ìV¨*žÚÎ1!!�Æ èôJ—.ÍQ£Fñܹs9r¤Æ‹]^,<£F�¢•••�›‘ss+‘Hxýúu¶jÕŠÖÖÖ477gÛ¶m™™™ÉŽ;R&“©ýà+©búé' áCVVVìÞ½;7mÚÄ—/_2##ƒÃ† #�ÅÊ‘3¶óÅ‹ùž‡.qõêUþôÓO'¿³³3ëÕ«GGGG­äÄÇdzU«Vjï˺uë4’“WUÛ¶mÊnݺ±víÚBý•/ïa~ÏG@@E"‘ðLE�µ/Q!WOž|ø�ùºÖíííÙ¨Q#öéÓ‡Ó¦Mão¿ýÆóçÏsĈ}«W¯N333>zôˆ€vy)ÚbíÚµ:¹Ú·oŸZZbUÍÀÀ@gÊì/¿üB===�Ë —.]*„¸íÙ³G ‚5jT¾94\¿~½Ž×¦M�YüUaèС´µµ-pø”rÓôer¿&P(¼xñ"'Ož,ä„)«�ÏŸ?_åNIÇ«�ýþý{îܹ“!!!;–T*e£F�8uêTž9s†™™™üðáÍ�ÿK5jõôô ­à:99qìØ±:š•z\ºt‰t‚˜Ÿ>}˜§´meÊ”á½{÷ 4®’�Q›&‰¸jÕ*_�¼¡®úú¥K—t6†2M]ÁÝb Å Hâøñã431c)© £1;O¥CUûŒhCGŠ ¢ok_�1õ\¹r…ãÆ�>€VVV æÑ£GU*: …"—¥===U¾øyUV(¬\¹²JæŽÒ¥K3::š!©óóó£D"a||<_½zÅ2eÊÐÖÖ–~~~B2¦�� {õêÅnݺQOO�< ££#{õê¥v.™™™lذ!-,,X¢D ÚÙÙqûöí?~ÝÝÝyîܹ\ÇgddpíÚµB8Ÿ¿¿?ÏŸ?¯«ÓP‰””–,Y2Ï—ü0wî\Êd2�ÂÜRSSÍAƒ ù%J”`—.]¸iÓ¦|g•t¼ymð222˜��ÀÉ“'³AƒB¸^¹råøý÷ßs÷îÝjÉ(Ê•+ÇaÆå{ÿkHKKc�:uèââR`¯‚’äâkl†“““V(]ãúõë*éÔ5innn…bžR~ƒ4múúúZÕÙÒzöì™k.‰Dm} pÑÖ IDATª‚@¡P°dÉ’œ:uªÎd£X)2œ8q‚F†Fl&®ÉwˆÒZùø²Å`�ĆlÞÌ»À/ÕÍ›79iÒ$a1377g¿~ý›o’ïÇU.8���*�ŒŒÌSÞ¬Y³Ƙ/[ÕªUI’íÛ·§½½=?|øÀ   ³|ùò466ζ›ššrâĉÙ8îß¼yC™LÆiÓ¦qáÂ…”H$ynY¢D vìØQ(œgcc£Óò‚àñãDz’òß¿Ïððpz{{S$ÑÀÀ€�:uâÎ�;s=C† Q«€¨úÝÎÎŽ]»vå¢E‹Ø­[7µ—ü¼êjĨ ÉRRcvïÞ]çqÚ_†\mذA'2ÿúë¯lliš´Š+ ž:]Aù\„^7%%EðRµjÕŠqqq¬Y³&% CCC™––Æôôt†‡‡ ÄvíÚñâÅ‹:=uPÖ†)LØi›6mòÌ�zùò%×­[Ç:úÊ”)áC‡òСCZåç(C?r&žß»w�+V¬`‡– 333vìØ‘¿þú«Æ退6nÜXãùü/!11Q(öZCÐ_ýEyÚÓ%Ê–-Ë~øA§27nÜ(xµm+V,tqÄÝ»wk<ž‰‰‰Ö^G]A™Gùesww×ù8-[¶¤¿¿¿ÎåþF±Rxúô)-ÌJ²‰¸:“S(åCÙŽ"Œ†b8Pãyܽ{—3fÌ^PSSSöìÙ“{÷îÕêC« IÊÙÔ%’oß¾=OyêšF�‘$|Èyóæ áQFFFìÒ¥ wìØQ š $9uêT• ÏÚµkUþ¾sçÎ|eª²È×­[—#GŽÌæå¨Y³& @‘HÄ   ŠD"¡>ÀÎ�;…Xö/¡ŒÉ�ŒŒä¬Y³¨¯¯ÏG�©�‹B¡`—.]hnnθ¸8ª·hÑBçVlMðæÍººº²eË–œ2e {÷îÍ ÐÖÖ6Û5300`uÖ²œah÷ïßç Aƒ¨¯¯O333¶iÓFm½�²e˪ Q¢uëÖ*û*Y§r6e¡Hòïš šÆÊ ErõéÓ'öêÕKë @ß¾} Åt•jÕªÅ~ýúJÆË—/Ù¶m[Yõc”´Í"‘ˆÃ† ûêô®Ê”7n,°Œ .ãââÇ‘#G �L&ã·ß~ËÕ«WóÙ³g…škff&OŸ>-Äå+ê\]]Â�;wê¤îŠr]Ô$ ÿf <˜Z+ÃË—/§D"Ñ)…w^5j]\\ -çÎ�;ùüÍ‹è£fÍš:£1^·n�Fë]^!×E�k×®©œ“®‹Z’+Ä…õ,ão+ :†ò!݉©:U>ˆ8Êq˜Þâš,SÊ9[’æÓ§O¹hÑ"!aÛÀÀ€íÛ·çÖ­[uR_¤cÇŽ¹^p!=gÛµkW¾2���Uöupp`¿~ýA7776jÔˆ …‚ãÆ�£T*”%sÕâÅ‹ W%Ú† ²I“&üðáÍÍÍó�¥~ûö-K•*%(?ïÞ½cLL ���idd¤s"…BÁgÏžñĉ\·nÇ�Ï®]»ÒËË‹%K–ÌvM¬­­Y·n]öèу“&MâÆ�yêÔ)¾zõŠ …‚r¹œñññôòòRyM÷íÛ§rOž<áðáÃÕÒÈ*ónò‚2>g344äýû÷UþmèСBÿÔÔTêëësñâž–×®]ÓyÈÕ… ÔÖAùr#�s30sæÌ"÷šuëÖ� 4(”Œ´´4._¾\Èí255å¦M›8zôhŠD"Ö«Wï«1ð‘YÖEssó× xÿþ={öìI±X,¼?ööö0`€VUÈÕ!11‘+W®d§N�ò ¥Â?gεE% %ß¶mÛt.û¿)))¬Q£Ë—/¯ñ�?þ¨…@S„‡‡S$ê9Û¹sg¾…ýò¢ü®S§ŽÎ¼® …‚¾¾¾yÎEOO�úúú:a,+("""TÎ-**Jçc)#7 þZ Õ(V@tŒ†õ°‰¤zžŠÄ'ìç�èÊ–ð¤Ì(‚ˆ“¤‘r« €ááá\¾|¹PÔNOO�~~~ܸqc¾km¡LVÿ²ÕªU‹‡Vùò«{ASRR#JËÙºvíšmó¦ÜÜnذ�iii¬Y³&+V¬HoooÚØØlN#GޤX,Φø(ióþøãNœ8‘2™,_·´’ÕÆÆÆFøíÓ§OBÃÚµk ¹ š@.—óÁƒ<|ø0W®\ÉÑ£G³C‡¬V­Z.ÌÑÑ‘�7fß¾}9cÆ nݺ•½zõÒš{üÊ•+´³³Ëö¡jܸ1W­Z¥òã¤Î‹õå¼,X ²š°\.Wk­ûé§Ÿ˜‘‘¡òo9«ÚשS‡Ý»w×ê<¿œ¿L&ÓYÈ•B¡`XX˜Z�З_+++=z”îîî444üjÅ)S¦ÐÊʪ@}SSS¹lÙ2:99Q$±K—.ܳg«W¯N}}}Ο?ŸÇ�§››e2/^\ä!@ééé´³³ãàÁƒµêwïÞ=.Z´ˆÍ›7*B›˜˜p„ …ªBNfUcß³g,P‹ÅbÖ¯_Ÿ“&MbBB‚¢R”Už¾ “Ó¿ýõMLLؽ{w�•ûN�:±yóæE<³¿‘��@ `ÌKééé‘[äµ&5lØPgßýŒŒ öë×/ßùDGG³nݺìÖ­›NÆ-ÆŽ«rn÷ïß×ùX …‚666 Õ¹ìÿ¯(V@t%‡ý§‘ˆšÃ„MQ�ß¡ Eq²† Çúð bJ$úøø0<<\ãÊÊÚâãÇ�*_ð~ýú©õ€|i}¸}û6—,YB___�ÞÕÁÁAe¿qãÆå? €666|÷îoܸACCCöíÛ—lÒ¤ 322„Â}2™L nLKK£½½=È7oÞÐÄÄ„?ýôS¾çkkkK±XÌË—/gû=!!�îîî”J¥ rÒÓÓyûömFGGsÉ’%>|8Û´iÊ+fc–‹ÅtqqaË–-Ìyóæq×®]¼zõªÚp!eEhmÂy^¾|I‰DÂeË–ñäÉ“G²hB®È,Fe‘½¼6•+Wfu^Œ//(7¾Ú„Z¤¤¤péÒ¥,UªE"yýúuáï©©©üá‡d…Èݾ}›ƒ&�U¹½(>èJìÚµ‹r½s9!—ËyêÔ)Ž7Ž•+WîE«V­¸xñb–(Q‚“'O.Ð233yæÌN›6��7sÇŽ¹xå}ÐE¸•:´iÓ†­[·.2ùÿ-PÖÚX³f�FÇ׬Y“ýû÷/âYý�wïÞP_„W=z$D.¨k†††y²6kÖL'‘$ùùóg¶iÓ&_åC™g5dÈ–+WN'cª ß–(Q¢È¼Ð¾¾¾üæ›oŠDöÿG+ :Ä”)Sh.1e:j¬L¼Æ.­�püHàëÄŸ8qBå´dɵ4}“&Mâ�!C„øk===z{{sîܹ¼zõªPÿ!g›={v®ñ?~Lccc�ªUY%}îܹ”H$‚Ò¢¬bmm-älLš4‰FFF|÷îÇŒC“<­•ÉÉÉ”J¥ttt¤‡‡‡�3“œœÌëׯ322’>>>‹Å466¦££c6Oƒžž+T¨@???:”‹/æþýûù×_('@é‘цruÅŠ”H$¹ &=}ú” ,`Íš5…EZ]-‹’%KrôèÑ´´´¤T*e@@ƒ‚‚hddD™LÆ!C†ðÖ­[tvvVÙáÂ…$³>fš(šJEFÓ uQ„\}‰3gΨ u�Éd‹ÅôõõýG+R+ š°Î¤¤¤pñâÅttt¤X,f·nÝòô+V¬P9‡¹sçR,óâÅ‹T(lÕªíììJàïjÁ¯^½b¹råX¾|y¾~ýšÏž=£žžÃÂÂøüùsrÒ¤I*Çøøñ£�t×­[7ŠÅb–*U*³”‘‘Ë•+'lXš5kƨ¨(Þ¿_牻ʘӽ{÷jܧY³fÙ’¼UáæÍ›¬W¯žÚ{§¬B�””Äyóæ ^¡N�:ñûï¿§………ÚDȲeË ÊÖ§OŸT3~üølóQ& kRõY×!W9qýúuV©RE°€+›Òk7xð௖تšÔHNNæ¢E‹èàà@±XÌ=zh\±ûÕ«WüöÛo €äÓ§OÙ·o_YÐu™„ùøñcŠÅâlïþ“'Oøë¯¿ÒÏÏOØ|U¬X‘?þø#ãããU¾gaaa400È“hãÓ§OŒŠŠâ�!C9±X̺uë244”'NœÐª¢’=OW@Uرc�âÄW2Ë áááA�<=žJoDDDÄWœ]ÖÚÛ©S§|�ËÌÌdhhhžÉä@“^^ž�¶mÛ˜X&'…w"¿öüùs¡ß�7@ÈÉüšPÞçœ-$$¤ÈÆÜ³g�ÜÔÛÅ(ŠÂÉ®Ç 0Oåávp6°µÈ‹–RÓ\/�«žÑœ¿!”iˆU)#‡h,‘qîܹE~Nýû÷Wù’oݺU­«ö×_ÍÓBpòäI•ýÔU‹NOO§»»;ëÕ«G¹\Î'OžÐÒÒ’:t ŸŸ-,,„áÎ�;´¶¶fýúõ™œœÌÀÀ@º¹¹133“ß}÷�`É�ÓFÏž=M&�H£jÕª¼“sSRR ‘HôÒÌþþûoΗ�‡‡¢¢¢˜\�Æ�cíÚµÌ$-//©©©°´´d½^¡P`ÿþýÌ êÍ›7¬çÑ2ÊšçäÖ^¿~þþþ¥F¹zûö-ºtéBÈ77oÞ„ŸŸärùg§|Òºuk-S¬÷ïßcÑ¢Eprr‚H$BïÞ½MBѼuëjÕª‰D‚ àï¿ÿF·nÝ@ATT”Õ�/>~üˆ@©T2yHJ¥ÑÑѼ\È5¡R©`kk‹©S§âñãÇØ°aºví ;;;æwÙ®];¬X±wïÞ5}bÆ „”ªdq¹³.6nÜB¶oßÎz|Ïž= „û·Y\,_¾‰„s‡ôôéÓœù�ÌdÅŠ˜;w®^µ«˜˜“íÂ;vŒsi9 £<1!¤)V�‘:Ò¹«È(È„R(�E¨½ˆ KA,Ô%*]€T›þÏg± ˆ¸Nà;”@$ ŠØçÈ*­z+KxóæÍÑ©S§Rmãߊ¢ …BÁ*½`Á(Š2çéÓ¢,Ewì(ŠÂüùóõ„¨Í?׬YÃiKˆÚ[ÉTïÎ�;9Çr®bgg§SÏØ±cáééi’>ƒÁƒ³ö±4E!õ;9,,¬TÛø¯ <1!l-m0‹ôc‚„!Üô¢/^`éÒ¥ÌN˜¾ßEãÆ�±xñb„‡‡3ÁÛylÛõ!ÿ+”6åJ¥RaΜ9‰D¨_¿>–/_θÉ-ljg¯_¿!Û¶mc(Wr¹¼DÎØ\xþü9Z´h�@€I“&iÝ[ÚA¹mÛ¶¥ªnT\dggcîܹŒaYtt4ëo¶´ðúõktìØ„ôïßÙÙÙØ¼y3,--áææ†àĉ3f cähaa�víÚi¹�§§§3¾#†ðäÉlܸݺucTƒ "##™ßYhhhiu¬X±‰¤ÔÛ¡UâJKjýߊK—.ÁÌÌL‡¢Ú¦M´oß¾ÌûCQ,--™– .ÀËËKï„ÞÝÝ¿þú«ÞÅ!BÔæ­¦œðþñÇ:´d>…M.ýþýû „Ûð¶4@Q”JÝÚÈÈÈRoûСC „”Šùè åˆ 1jÔ(T”¸ä8¾$=! Ðdw`Á7‰AJ„ˆB,%Ã9'Ëú@Q®^½Šyóæ¡iÓ¦ eÉ××#GŽÄ¡C‡´]Æ�Ç:Ñ Êûöíc=N«seffâ�?þÀÎ�;1{ölôíÛ�7æøœœœ0~üx¤¦¦"-- �=ÒÙn.((@µjÕÌ£]ÒOœ8�J•*¡V­Z̪˜J¥b¼, rrrpóæM¤¦¦2õ&%%qÊ]¾{÷>>>hذ!oîí›7o3§¦M››�Ooër¥FÇŽY�åææ¢jÕªœ÷œÏÊEQhÞ¼9ç‹) ³fͦM›…-Ös¹Œœ*Uª„°°0†ruëÖ-Ã7ÈH�@€àà`$&&âäÉ“ ]K¥RÁÎÎÎ(ùSSaÙ²e077/õvhÕÀ²P=ü·aÕªU D;)Ø××W‹J[– All,V­Ze�ÞÔ¦M¤§§cÑ¢EzÏ7nœÉWÛ)Šbr¹Œ)���¬uÙÚš–‘a´8CÑÂæ%fj¤§§ƒnÑœrðGybB|÷Ýwê&™‘@ˆjS¹ŠfBwÿ“„^!ZýÿÐÝÝr9vBò ì« a#’ÃÃÅ�× ”™™‰={ö _¿~pss!êD²ˆˆ¬X±Bïª~«V­tp¦]Z"’m2Ztòimm�àà`tëÖ µk×Ö¹F(B,ó¢OÐÞ$´t§¦Kú¯¿þʨˆÐøðáC!¢óºtéooo& hÙ²¥ÞÕ“3gÎ@(� úóÏ?ÃÇÇæææ˜7ožÑɃ>!ú%jé(®qذaœ/¾ê]4Eªh¡Ãcbb “É@ˆÚ•7>>ž5'‡5u®ÿþZ\霜øøø€�Ò¡\ååå1Fxx¸VЕ““ƒ:@("%%Ťí–YYYHNN†­­-¤R)† ‚G��¢(( Öݤ²Àƒ�””¤•À„ððp˜››ÃÇLJӓƒ¢(T­ZÑÑÑÔAÄÅ‹1wî\4oÞœ™¸yxx _¿~عs'§¸Ãµk×@ˆá]×ÒÀâÅ‹!—ËK½�ÂÂBXXXðÚ-ú¯�¢(DEEÁÊÊ ýõT*¤Ré'{Žcccakk«wOïØ«T*Ìš5Kï¹S¦L1y𑟟ÏÐ[«W¯ÎÙ6[Â|pp0k�­ZµÒ›hjp-~–UPàåå…„„„2iëåˆ ‘ŸŸgØ‹,aWU„îy܈ÜKx�@¨ýïŽ�¸¯k{…@ "hÕªk(ŠÂ¥K—0{öl-Gß*Uª`ôèÑ8rä/ípŠ¢XWsÎk IDAT°+T¨€èèhÔªU‹QK*ZZ·n�3f`ÇŽ8þ¼NPÑ£GÖÀF(bíÚµ¼îuïÞ½accÃ8sÓ.éÆ c’C5]i_¿~ ¹\©TŠ¿ÿþ—/_!êœ •J+++ƒÁÅ”)S ‰Œ–wÌÉÉÁ˜1c  Q«V-\ºt‰÷µ*• fffz_¨sæÌ�L&cuÃå¨ ! %Í Äù‚¤‘���mÛ¶¡M›6z)#""àìì �@€¨¨(|óÍ7ð÷÷‡T*…X,֢ƙ÷îÝC�:u ‘H°hÑ"-JÜóçÏQ»vmÈåòÏJê4333fÌ€�� ¤R)†Ê8¯Ó¨S§úôéS&ýQ©T8{ö,&OžÌü$ ÂÂÂвeK4mÚOž<Á½{÷ШQ#Œ3Fgä×_!cÇŽELL 3ÎÈår´mÛË–-í[·xM¼hå!S¬|°`ÁXZZ–I[ôÊz9tñöí[x{{£nݺÌb̧x–¯]»¦#é^´8::"-- E1>V\…M¬£¤ÈÉÉAxx8$ &MšÄ9N7nÜ5kÖÔùœ‹ê˜˜˜''§2Ë‹HNNfí7“JS ** Mš4)“¶þ—Q€˜4í¦ùAuÀÐ5› `�KK3{u�Qmšn`áÓëŸ D³Xùëž[i�£‹³šþæÍìÚµ }úôa$Vår9Úµk‡Õ«W¤j⯿þÂÑ£G±zõj$$$ M›6¬¸B¡@³fÍ0`À†R´œ:uJo{mÛ¶Õ¹ÆÇÇ­[·æÍå~õꬭ­Ñ¯_?æ3:éüÀ�ˆ��…\.×¢ñЮ­���ÈÍÍEDDªT©‚ëׯƒÃê]ùùùFåÊ•Y'û†pþüy1î|M¤üýý1bÄÎã5jÔ`V“5Aû¥°ý�jÖ¬É{¢¿iÓ&Η)—#xóæÍ9%'mmm±bÅ ¬\¹’yaËår$%%�Óê÷oÛ¶ …•*UÂï¿ÿ®uìÊ•+ððð€›››QAaiâíÛ·˜>}:¬­­~;W"|�=РAƒRëËû÷ï±oß>ôë×�‘ܶµµE\\vïÞ­•otüøq¸»»ÃÆÆ{öìAaa!.\333T©R§N�ÂÁƒ1zôhÆÄS  N�:˜}pæÌŒ3F+YÔÕÕ"‘]ºtav/‹ z—611±Dõ³fÍ‚½½}™´•šš ¡PøIvzþ-ÐM)«û”››ËiÖ«Y&L˜€‚‚P…‘#Gê=wùòå&ïçýû÷Q¹re8::âìÙ³ŒjdÑ"‰pâÄ €···ÎqMï!M<}ú„¨ÅaÊlÁQ�5ʤm@­H)•<ÅÿÊB¥RAi¥àL(ïòZ"QêOD×,VUÕ¹:`íÚµxôèrrrpõêUìÝ» ,À AƒÐ¢E xyyimµš™™! ‘‘‘=z4V®\‰Ã‡ãÏ?ÿd�fÏžÍ:@Ñ^°k×.ÖsΜ9£÷>±Ñyš6mŠììlÈd2Ìš5‹×ý.,,D­ZµP³fMfªé’~ýúuÈd2ôîÝ›¹&%%B¡B¡cÆŒAXXìììP¥JÞçµkׂR"sº7n0ÉÚC‡åT¯À( ±aúôéP*•:4—yóæq¾àÖ­[Ç»Ÿ .d­Ã××—S™+11–––øã�?X¯­[·®–&¾B¡À¤I“°oß>&§À××ëׯ/ëâÅ‹ðõõ…\.× ˜i¬Zµ B¡‘‘‘Ÿ\éêÍ›7˜2e ,--annŽQ£Fáùóç¼®¥Ÿ¿’Lä)ŠÂåË—1cÆ ƒ5G½qãÆ¼]Èi<þ›7oFHH#ñiff†6mÚ <<b±&‘7¦“³ É~—f̘''§2ië÷ß!gÏž-“öþ� ( •+W6ÙïËîÝ»‡5jè &lllðã�?Pϸ¼+èždcpñâE899¡R¥JøóÏ?1zôhÎ>ÌŸ?Ÿ¹NST‚.]»vålÇÅÅ“&M2yÿ‹âǬž*={ö,õ¶i¼}û„è—½/‡a” &ÄÝ»wAAóCÆ+^ùô"+þQ¼2€¨iXöèÓ§BCCuÜ­ jÔ¨�¨¨(L˜0ëÖ­ÃñãÇñøñc^Û†ôV¶f‘H$Z4‰o¾ù†u3d(èéé©sM‡¨i%Æxœ={�+V¬`>£åb7mÚ„­[·‚‚�7P'õ* †bBZ´hÁ«=àC?¼|ù’÷uEQXXˆ””Èår¸»»sò–W­Z±X̺ú Ã ÿý÷ß9À£¢¢Œâéfggcúôé:õq­tåççÃÅÅC‡e¨ml¿£ÀÀ@¤¦¦¢}ûöLÝb±ÞÞÞpqqA§N� àêêŠ pR½4AQ–.] ©TŠš5kêLž ™—ïÈ‘#?©ÒUFF“Ämaa�1cÆ0µ|qõêUBxí¢iâãÇ�8|ø0† Æ<‹J¥]ºtÁW_}Å™ð]¹¹¹8|ø0´jÕª…Aƒ¡J•*‹Å˜5k qñâEXXX@ `öìÙ%¦K¬\¹b±¸XtHS`êÔ©puu-“¶èI×êիˤ½+¢££!•JZªtœo¿ýÖ ƒxpp0³›_XXˆ>}úpž+ yyM‹£G�B©T"88¯^½â\4¤ßÁšïZê[³ôêÕ‹³­víÚ•‰AßÅ‹Yû¿páÂRo[•+WÖK�.‡a” &mÈ•^¼D "0wT'¢ËÜ ü†tyÃ^WÝ5êºêÔ©ƒ˜˜|ùå—Ø²e Μ9ƒW¯^•8ÌÏÏOç/ºÅÉåhnh•Žmà¦6Zmé�?þàÝ×ÀÊÊJ+Ðôîèß¿?ÌÍÍqåÊjU(GGG­• ///£îÙ«W¯àè舶mÛ–ø^?|ø­[·!jÓÄ¢Ò¤GŽ!ººã´½Â¨åZ‹6ÒÅÃãX^.\!Mš4�H$Bƒ 8¿3­Œvùòef‚\´4nÜX‹"‘““ƒ””ÆÉšuNÐŒ3гgOH$X[[#11‘S28==�1Å9r¤ÎÎINNÚµk¡P¨¬–5^¿~�É“'C©T Åbsss!°~ýz^ínݺQQQŒ v… �#GŽðÊ¿ ( W®\Á‚ вeKÆWÆÕÕ½{÷ÆŽ;´~»ùùùHLL„@ @ãÆ�ýüN�:1nå|©€lˆŽŽ.ÕCHJJ‚‡‡G™µW­Z5 8°ÌÚû7¢aÆhÕªD"’’’L^^^F�¥7ð Ÿ z *((`^¡‹H$Â×_mò¾nß¾‰mÚ´Avv6nß¾Í)�_±bE 2›oÔàÁƒ9Û›1cF™ômÞ¼™õ;>|¸TÛ-ŠîÝ»Òñçåˆ ±zõjÅ‚by~ÔI!^IÐê4A«_ª'«wD¬ü ºåèžßdŸú¡+ ÷ÑœœV—TM*ìØ±ƒu ЗD¬R©Xë¦W ˜à€/ÒÓÓakk«µ:“••///4lØÙÙÙ¨^½:|}}ñîÝ;ܼy„¨·O›5kÆôÁX*ÇO?ýBˆIV%)ŠÂÖ­[akk {{{lß¾�ÈiÍó¢’¹III°¶¶Öš<öîÝ›s…�KÕP¿š5k†€€àöíÛ¸zõ*çùmÚ´A½zõ¨�ÂØú¢o¥�6„¤#R©èÔ©d2£tö×_1×?~®®®°³³Ó Æh<{ö µjÕ‚B¡(S³,M¤§§câĉP(�Éd7nœIž]oooŒ;–õØíÛ·1þ|„††2̺uë"99W®\á5Qxñâ¾úê+ÄÅÅ1” „‡‡cÉ’%¸qã†ÁzNž< ˜™™ÁÊÊ ùùùøõ×_Q¹reXXX`éÒ¥F'sRGGÇ2¡|paÒ¤IeêPÞ«W/NÔr¨áêêŠ)S¦`öìÙ&¥ç=~ü!!!z…B�¨¨(888Pát^[‘H$:ù{¦í-Ò³gOäçç#''‡Ó ÊÜÜ\‹Z ¨ßÓlçŽ5гMzñ°¸žW|AË©-Æî —‹/†……E™%¾ÿ/¢<1!V®\ ‘¤x«WÈOÿ¿Ë±T÷XÓÕ_¾¸1øí·ßXð¥K—j�G;ô-EÕ†4‘™™Éz�¦œëÈ‘#áììlÔƒMKïjÒQh—ôY³fáîÝ»P*•èÖ­(ŠB‹-‚yóæA(B$1gc0tèPXXX˜,íÕ«W ý­mÛ¶xüø1 !‘H´Vîi¾³¦ +׎TÑûk 8Bëľ(èäó 6gˆ>wsŠ¢`gg‡qãÆaàÀ��J¥L0boo�úõëÃÊÊ B¡Ý»wÇ Aƒ X¶dòË—/ÃÝÝîîî:/Ù²Àßÿ�ñãÇC.—C.—c„ ¬æ{ÅE›6mÿš‚‚œ‹Q£FÁßß¿ÌÚËÊÊ!„UÙ­ÿPb=zÄ|–––�@P,S¿—/_¢yóæzsss� (×ä�.r¹\g1¯¤x÷î •J±sçNæóóçÏC*•²ö£fÍšœ»™Ïž=c½FS%‹ ]ºtáíåUdggÃÏÏOÇ@Qsq®,€!C†|’¶ÿP€˜yyy�H%¨“bš¤éêóÙêsi¢ö²( °ñ\+T¨ sW2˜>S7zÛ²hÙ½{·Öy3g΄\.7zò8tèP(•J­oM—ô�?"88˜áÎò�,íÌ™3AA³fÍŒ^1£9džL‹ƒ'NÀÊÊŠñÖÈË˃——ãE¢ÏQWÓ Þ¼ÿ®®®ze5Aï(M›6  äÌÚµk—ÞºhÚWQ.qnn. B“ Ù°aC&9^óO¿”ÊJéêÅ‹=z4,,,`ii‰¤¤$ddd˜¤n•J…sçÎ!11ÕªU!jîxË–- “> à‡ðóÏ?cüøñZ²¡Õ«WǸqãpôèÑbѪøâÞ½{ „`Û¶mÌgùùù˜2e „B!5j„‡PO"]\\`mm�mÛ¶±BEÁÙÙ&L(µ>óA||<Ë´ÍJ•*éåáÿ—±bÅ H$�gþË/¿„P(4jl>yò¤Ž²dÑR©R%Zç»wïÊy�R©4è“e,^¾|‰ZµjÁÒÒÇŽc>ýú5«â$!ÖÖÖ¸ÿ>g�þù'ëu†kÖ,H$å-.´lÙööö D½­ÿþý{Î`ÓPÒåëׯu&¬7nÜ@PPÌḬ̀zõj¼ÿË—/‡»»;"##1vìX-Ó;™L†ÁƒëõX))ž?Ž‘#GÂÜÜVVVøòË/‹¥4Vïß¿Ç?ü€þýû3”Ú…|×®]Ìwzþü9!øî»ï˜k)ŠÂõë×±xñb´iÓ†Ù!rvvF\\¾úê«2MØœ8q"çÎâéÓ§Q¡BXYY1ÜñŒŒ ÄÄÄ€µbVÑœ™;wî0Ïò§ÄСCQ½zõ2m³K—.hÒ¤I™¶ùo—_Raa!š4i777ƒ4H•J…¹sç²úLh–¨¨(�qåíÛ·z“Ô­­­yí&ƒ»wïÂÇÇ...Zï]•J…ððpξò°â’P7ä!uìØ1Bpýúu“|?.ÐRû%‘Á7–/_©TjRúõ 刉Açh:˜Ë½Ô�¨%v5ÿÝñ‘Zj×½=�¼�PJ 4#°ô#¨:‘ ë;ÝÝ�jÓÕÈܹsMÎ�¦�µ‹–©S§êœKStŠ}å}ûöÁÑÑQË}�‚óçÏëœÛ°aCNp} #ÍÕ M—ôôôtìÛ·„Æ�Αظq#Ó§¢I÷†ðàÁ(•ÊR1D:|ø0óâppp!Æ ƒ»»;ëß bÅŠÅÎúûï¿¡T*yokÓòªR©T+Áüĉ¬}Óœ,s¡R¥Jˆ��EQX·n,,, óÛÊËËCjj*<<<@ˆZÒrÊ”)>|8“#‚£G�šŒZôôéSÄÇÇ3ÊNÓ¦MÓ‘±4´ ydd$C_óõõÅØ±cqòäIÖ<Š¢˜—;v wïÞL>“¹¹9Zµj…… âêÕ«ež¤ ¨w:œ��1|øpÎsÞ¾}‹îÝ»ƒ‚¸¸8fb·{÷nØÛÛÃÁÁAËwfíÚµ‰D¥’ÿf  „Zµj•i›³gφ¥¥¥ÑªaÿtèЭZµb=öôéSØÛÛ£mÛ¶œ÷.##z‰D‚eË–éÊqtfÑ¢¹(Äš&È–ØnJL�:•Qû” {ôå½–ƒåˆ‰‘ŸŸgWGTèÌ­†U’•N`á B¥J• ‰`ccƒÉ“'›lE“Vð(ZØŒçÖ¯_Ïzîµk× ¶³{÷nBpçÎܹs‡•B'š»Ê¡R©Ð Aøûûk)Æhº¤S¥å;AOŠóóóáéé NÃ=.Ðy1š<\S€Þ:tèÜÜܹó!‹Y:¾ˆ��‡•••ÁÜŠ¢°qãFˆÅb…B�lZZZ±Vßµ!eíÚµ BÈ™P}éÒ%¸¹¹ÁÖÖ–ù›¶nݧN�Â?ü E;²¶¶Æ˜1cŠ-ùäÉ 6 fff°¶¶ÆôéÓ‹xо3gÎDݺuAˆZ.944 ,Ðë‘ññãG¤¥¥aâĉZ;–ÕªUÃØ±cqäÈ£s™Jßÿ=Ñ¿+J㫯¾‚R©„··7Μ9@M/iß¾=!ˆ��Å›7oƒºuë–v× ¢ÿþeN¿ ¥NùîLþ—P½zu½>4µ“ͰîüùóZï¶âááÁêqõêÕ+†ÉVM.pðàAÈår„„„èŒÓ‡æLšoÖ¬/A’Ó§O³^¿gσ×úùùaذaÅþn|ЩS'£ÌƒK ¹¹¹‰DX³fͧîÊ¿åH)€–C ÝeúÄ«›Ö¶Vxñâ=z„1cÆ@¡P@*•¢_¿~¸yóf‰ú>iÒ$Ö�‡-‘yݺu¬çòÙ~¥¯ÕÇ}ýú5³âd,._¾ ¡P¨“4GoÝnذVVVðôôdœsi¬\¹�ááá077Ço¿ýÆ»]Š¢ ^cÆŒ!VVVzsFöïß¹\ŽÚµkãùóç(,,Ä7ß|ƒÀÀ@¢6OüùçŸñìÙ3ÄÄÄh%dV«V )))¼Tž?~Œ¡C‡B*•ÂÆÆ3gÎ,Õ.//GŽÁðáÃu\È·nÝÊôQ…7n`É’%g‚GGGx{{£R¥J¥"É]RDDD5Iÿ믿P¿~}ˆD"L›6 ŒGŽ••\]]akk‹qãÆ•b¯ù¡OŸ>ežÿòåK¢›3÷_EQP*•˜7ožÞóÆ�±XÌEaùòå:;òEKxx8ë³ùüùsøûûs^gooo2‰v[¶l�X,FDD„΢̓'O8å‚]\\x/æÑæ·Å»cccK}�àsÊ…ª^½:§šX9ô£<)P…Ž�:ÂÂN„vwM|„l`§C½}ûóæÍc¨8qâD±(l¼QKKKÖºÖ®]Ë:Hñ ‚.\KKKƒçµo߾ثŒ#FŒ€\.× z÷îÍLà¶oßÎä Ð�Ó‡¾|£F�`oooÔŠyFFÜÜÜТE “R%*W®ŒêÕ«ÃÉɉ5O‡žT—¤Í¨¨(¸»»ë]=§U®är9ã ̶ÂMS³Š}Ü}•J…9sæ0l}t­””…BtèÐAG¬@¥Rá»ï¾chõë×ÇO?ý„¬¬,Ì™3666 DMωDhÓ¦ ¶mÛ¦Ci|ôè ‰D[[[Ìš5ËèœÚ…¼K—.ÌoÍÓÓÇÇáÇu\Ûi¤§§ã믿FŸ>}àææBÔÉ÷aaa˜?>._¾ •J…äädØØØ|Š•>|€¥¥e±�¼i·ö¢¦O:t!³fÍ4nÜ„ìß¿€z•ÅÎÎC‡Åýû÷áèèˆúõë5È$$$@*•šÌ)µcÇŽz_˜ß}÷vìØ{{{ØÚÚbË–-¼WÅ)ŠB£F�P­Z5Ö }vv6âââ@È?*WE�Ï‹‚KñìçŸÖ9÷àÁƒppp€³³3s¼nݺèÑ£‡N?""" ‰°zõj^ß�þ~iiihÚ´)3©ÿæ›o�——‡={ö víÚ „ÀÁÁ�‘ñ¨_¿>ÒÒÒ ÞÇ‚‚œ:u cÇŽe\ÈÍÍ͉ÔÔTVzEQ¸uë–-[†¶mÛ2íÒ*n›7oæe xíÚ5BJEº¸P©TðòòBŸ>}JTOVV󻋉‰Att4êÔ©ƒû÷ï#44�£F�ú$/ÿîÝ»£Y³feÞnRRœœœÊ¼ÝÏô„™�ݦM›8½1èÒ¤INJã½{÷Ñ ¶R¹retè�αk×®¡J•*�ËåZ*(IIIP*•œ^-´ÒXÑ¢i•——‡„„¢æYkæcÄÇÇ£R¥JÌÿŸ�Ö­[ƒ???lÙ²…ÙÍ¡w¬¬¬Ð¬Y3†ÖX±bE|ùå—ZÁuVVvíÚ…¸¸8Æ…ÜÉÉ ýû÷Ǿ}ûX_�¯_¿ÆÎ�;ѯ_?f#•JÑ¢E Ì›7—.]2šB÷áÃ…Bƒ™e :ÿ‡N&/)vìØKKKˆD"tëÖ €z²µxñb˜™™ÁÏÏ�5A¸4�°°°2mø'�ísÌùùT˜3g¬¬¬ôž“››‹¾}ûê <!˜~üȹº¸bÅ ÖAŠO¾DûöíѶm[ƒçÀñãÇK4™¹~ý:D"³Û‘›› ±XŒ””-—ôÈÈHˆD"ƈ033VVV3f 5/V(•üvõêU˜™™í+ROŸ>åT6 `�ìþôÓOððð€\.DzeË8§‚‚øùù!,,Lëw¦I¹ ÒzùÀÅÅE¯ ìÞ½{Yû{òäIê•Ä:uê@"‘`Ñ¢E:oz÷*##/^„««+<==M¦(sþüy´hÑ‚é—R©ÄܹsqêÔ)DEEA ÀÉÉ  @\\#ëëéé ???†ò„ÄÄDœ={Vç;äååáĉHLLDpp0ó7¬Zµ*c eŠ•<$$$”¸S¡k×®0i^ÊÉ“'Aˆš—ÿå—_2“Ä›7o"88B¡“'O.3MþÎ�;£uëÖeÒ–&þúë/Â/!ø¿‚�¢fÍšœÇŸ>}ªW©ŠµÏ޾{zíÚ5Nú+!êü;Í”U«VA,k)1ƒgÏž¡Zµj°¶¶æµ»yäÈVÉ|c±téRÖïÈg1 P/––GN³fÍU*uÁÁÁèÕ«×§îÆ¿åH¢  ßÿ=Z·i ¹9ç@&·’aРA¸rå £FÁ%ëzïÞ=øûûÃÊÊŠ—1Ÿ„õI“&ÁÍÍÍ`])))¬ý×ç°J£iÓ¦:f�\P©Tpww×;Ù5„„„XXXàáÇZUM—tÍ NRRõ*¿L&cò?è]Ÿ%K–ðn{É’% „àèÑ£Åî?—犙™™^Š×»wï0lØ0¢Îq¹qã†Î9kÖ¬�@ ÐÚ^פ\ 0@'¥�ÏõÉ«Òù;EË/¿ü‚mÛ¶A¡P bÅŠœ\^ÚA{êÔ©�Ëå¨S§ŽÉä¦ïÝ»‡^½zA$ÁÞÞÕ«W!îîîX¾|9rssqçÎôë×b±fffŒÿŠ@ `Jhh(¶lÙÂä‡P…Û·o#%% ­ÊÞÞÝ»wǦM›ðôéS“|M|ñňˆˆ0y½ÅAzz:¤R©Ñ¼sC Ÿ�É“'C$!$$„k �œœ ‰D‚jÕªñ’ý-):tè€/¾ø¢ÔÛ) Š¢`mm�äää2oûsEXX:uêÄyüÇ}:ôM®/^¼È©.EAíÚµuT²è…³â(SÞ¾}*T€››/YûÇ�ÃÞÞ­Zµ2‰ ùœ9sX¿'ßÜB:/ÂÔ4)Š¢`gg‡3f˜´Þ’bÈ�!¨Zµê§îÆ¿åÈ'Baa!nܸ��;wbÆ ؼy3öïß���†b@#22žžžœ;™™™hÛ¶-„B¡UKô%¬‡‡‡óÚ�X¶lë Å&Ù[5kÖ4* ˜0almm‹½ºùîÝ;¸ºº¢C‡X¼x1ÌÍÍ™•)Ú%ýÀ�¨V­#«xðàA¤§§C.—#11‘©küøñ¼¶ÄuWWWddd«ÿ½{÷†���νfKÒfÃéÓ§áçç©TŠéÓ§3÷1;;NNNˆ‹‹cÎå¢\iB_ò9 ®DFZi­G�zéEA&“A  cÇŽ&y™Ý¹sqqq …pqqÁÒ¥K™çêÆ�ˆ��…@ €µµ5êÕ«'''¢Îç‹Å‹ÅèÛ·/.^¼ˆÔÔT&wH*•ÂÇLJ R$ š5k†9sæà�?þ(uã¸Ñ£GkÑÕ>%/^ ‰Db”hôìÙ“Yåþí·ßàãã¥R©•ëtéÒ%A"‘ 99Ù(c‰ÈÈÈR«_š5k†Î�;’¶?GT¬XcÇŽÕ{ÎŽ;Xw‘i:æúõëY¯;w­9ƒ���V/ Z2™ï{‚Æo¿ý;;;àñãÇÏÏËËCHH<<4x­··7&NœÈ«�À?‰¶ûöíã}MQ|óÍ7 D­êÕ AæsM—ôE‹�‚¦M›ÂÎÎ�?FBB,--™—ŒJ¥B×®]annÎ{€}úô)lllŠ•øñãGXYY1ž-ZÀÑÑmÛ¶5ª®> 11b±���8wî¦N� 333<|øEaÆ ¬”+M<|ø�€ó…McÇŽ¬¿ssslÞ¼Yoß 0|øp¢V”)éþöíÛˆ��…P(„««+–-[¦пxñëÖ­C»vírº¯ýû÷GFFÞ¼yƒY³fÁÞÞ�U«VE`` 3©133!ê<¢àÌ™3e&�K»ƒsIú–(ŠB@@¢££M^·§§§•1++ ½zõ!]»vežÏ�?bòäÉ …6¹�/¾ø:t(•º a̘1ðööþ$mn(,,„X,ÆÊ•+Y�«T*Ìž=B¡�ñ"DM¹¤=†  �݆_~ù…‘Îf+¡¡¡œêxEÁÆÆÆ¨�ªühÔ¨ïŪ#F@"‘˜4jüøñ¬ß—ï �Q/} ¥Ýù°,ÊW®\!Ÿ—È¿åÈg†Ù³gÃÆÆFçó±cÇB&“¤olÛ¶ fff 1:IñâÅ‹èܹ³š&—tX_¼x1ë õèÑ#ƒmÙÚÚm˜W½zuI]c@Q ‹¯uìÙ³g°µµEûöíaee…áÇÃÃà 4À£G�`ff¦~øð¡¡¡°³³ã•tüCIÚ²e‹QýÖLæ@ûöíñòåËbË®^¾|™‘y•H$5j”AÊ•& %ŸÓ s8ŠC+‚ïÞ½Ã_|‘H„ˆˆØÙÙ{"óæMÄÄÄ@(ÂÍÍ Ë—/LJ@Q®^½ŠäädòùóçãöíÛxøð!† ‰D¥R‰ððp„‡‡3ò�´Ìe`` víÚÅ8›�?îîî D-ä�””Tj“`'Nœ!„•bW–øõ×_A·ÔrqñàÁBðý÷ßëûæ›oSQ:¿Ξ= ___˜››cñâÅ&ß…jݺõ'Û…øê«¯@a]yÿ¯ááÇ̎uQddd mÛ¶ u¯    Ò”xÿþ=ÀŒkÇŽc(”l¥yóæÇÀ ð¦¯_¿"‘;vä­êF/ª­X±‚×ù|AKþj�@`Ô8¬µ³n ÌŸ?r¹¼Ôw”�EAA,,,LN;ý_Gyò™a×®] „è¬~dffÂÁÁ±±±ë8wî\\\àææf´V6�sÒ§Oƒ ëônAÑbhÛ˜¢(£eT`Á‚033+–5�_~ù„Ö$6Z]¦uëÖ°±±Á±cÇ ‹1vìX 6 ¶¶¶Z[¬ŒGß` wïÞP*•¼hj4:tè‘H„víÚaذaà}- BÔ¹žžžz)Wš×J>§Q)Ç'Ož zõê°´´ÄáÇ/cŒ 5�ª[·npwwÇÊ•+‘••…#GŽ >>*T! …QQQزe‹}áÍ›7سg¨%¹)‰Ð¸qc9ryyyؾ};Cc Á÷ß•J•J…ãÇ�£ÿþŒÇHíÚµ±xñb­…�œœ"11±X\q4Ýcï޽ŮÃèÛ·/¼¼¼L>AØ´içªð£G�Ï•ÄÄD†^ùþý{Æ,³qãÆ&]9 +•�>¸~ý:ÑV”û¯âرc DWþýܹs¨P¡lmmqàÀæóüü|V:ç�7 “Éзo_>|Xk'´hiÓ¦ ¯ ¡ÿþz“ãõûpæÌ™ „`ðàÁ¼s8nÞ¼ ¹\ŽîÝ»›|§uÀ€:ßY&“UÇСCK¬VqqqZ~]ŸŒ 6Ë¡Fyò™á�?þ!çÎ�Ó9¶nÝ:ÂOoúÙ³g†¹¹9¾þúkÞíÏŸ? …*•Ê`Âú‚ XgC»4999 „`ÇŽ¼ûü£Å% Ì´7…T*e�ŒôîÝ›YõÚ°a“@¾nÝ:ˆÅbÆÙ¶°°E᯿þ‚££#BBBx½�²²²àíí�† òâ§çää@$A©T"==Ë–-ƒ™™Y‰'x7oÞ„H$Â_|Á¬äwîÜÙ Ž>-×{éÒ%ƒmДÀ¢…+iþ�?þ€‹‹ *T¨ÀP!h‡ãíÛ·óú^×®]c4ó=<<°páBlܸÑÑÑŒŠ•‡‡† ¦åBžŸŸ�Ó§OãË/¿DHHsOªT©‚#F`ÿþýøë¯¿0aÂ( XXX`Ô¨Qxöì(ŠÂO?ý„ÐÐP¢–âܼy3CWøðá¾ýö[têÔ R©B¡aaaؼy3Ö¯_¯uojÖ¬‰E‹ñòÿÐEQ°²²ÂìÙ³�ºÎ”ÈÊÊ‚L&ÓK-.z÷îmPU§°°³fÍ‚X,Fݺuµ‚ÖãÇ�ÃËË r¹kÖ¬1É„­Y³fèÞ½{‰ë) ˜��ÿ:Ö¯_�@À<ËEaùòå�H$¨W¯¯y›6m!jçp®à£]»v¼©Ž‹-‚……çx]XXˆÁƒƒ‚™3gòþ]fggÃßßþþþ¥’w@ï†k[[[£ê  ŠkDʆêÕ«cÀ€&«Ï”1b*W®ü©»ñ¯Byò™!33“sr^XXˆ5j ^½z¼& ¹¹¹ŒÄäÉ“y]£•p'¬Ï�;—u€64yzúô))žŒd‹-Jdþ•””¸»»³æPdeeÁËË 666¨^½:T*:vìkkkDGGÃÉÉ +W®„��ãÂüûï¿C&“¡cÇŽ¼V¯~ùå…B^ÜàØØXò�;ùO?ýÄk—É4�ï €+VÀÒÒÎÎÎz)R|’Ï 0eÊÎ8›ªË¾}û “ɬCû«T©§&�«W¯"*Jí·ãêꊨ¨(4jÔ"‘ˆùÍΘ1—/_EQ ( ÷îÝÃÊ•+Ѿ}{†çmkk‹èèh¬_¿žsâ’‘‘�©S§ÂÚÚR©C† aòž~ùåDFF2�ÎÒ¥Kµhoß¾ÅúõëÑ´iS-·â¢t‡-Z`Ó¦M¼_àõêÕû¤R�k×®…P(Ä“'OL^·——FŽÉëÜsçΡR¥JP(Ø´ióŒ¿{÷dv9KÚÏÆ�óÚ‘.-Ô«WÏä—#áîî@ý7ŽŽŽ!#GŽ4Z´dÏž=œÏ$!]ºt1JV—ÞÁeSØÊÍÍEÇŽ�öð¡( Ý»w‡\./Ñ®©>Ðc©fᣌ© :oÓT»tùùùŸµßÆÖ­[AH9-Ò” Ÿ!8eæh©Ø­[·òª‹¢(Ì›7�íÚµãL˜£€¡C‡rÖ¥™°nccÃ:H’J½qã)ž¯½ªRÜ xË–-ÉЭؒÚOŸ>ͼ„Μ9ƒ·oßÂËˋ٠¢‹¦ Ù�?þ¡PÈ{’”””±XŒóçÏsžóûï¿3^4îܹBÒÒÒŒøÖÚØ¼y3Q'MkR®ž>}ŠöíÛƒ‚N�:éäñI>ôè5j¡PÈÔU´h¾4)ŠÂ’%K йsgVjD�=P¯^=Öö®\¹‚N�:�µy ¦jUDDÖ®]ËÄo߾ŷß~‹AƒÁÛÛ›Yélܸ1’““qþüy£$,3331{ölØÛÛ3êXôªûµkבH[[[L›6MG¦óÒ¥Kz';t177G—.]ðý÷ßë�PõìÙ“ó>•‚ƒƒy{ûšão ½,;;›1�ëÒ¥‹ÖÎÞÁƒáêê +++lݺµØ»! 6ü¤ßàÁƒË¥?¡v¤ Å•+Wàëë ¥R‰Ý»w]Ï×_Í,X°•=z­ªFç.iRÀ5ųQ£F°°°À?ü`T�´ÿÖ7ß|cÔuƀΛÑ,+V4ªŽÂÂBÈårÌŸ?ß$}¢i‡ôÂß熛7o–øÝü_Cyò"$$={öä<Þ¥K¸ººµõºÿ~(•JT­Z•“�›› ‘H„ÔÔTƒõ]¼x5jÔ`¨ i…Ó‰ª×¯_çÝYYY077ǼyóŒ¾V¥RÁÊÊ ÉÉÉ ( mÚ´A… X'½'N!j'ñû÷ïs[šÊ#«W¯!üÈÉÉÁÂ… áää¡Pˆ=z0÷öáÇ1b,,, “É0räH&x¦åŸ�)¶¶¶4hN�:¥s¿fÍškkë2SÞÒÄåË—AHéÈcÒ¹DE8>صk¬­­áîî®5qyóæ ³»Ø¡C-9¾ Aß¾}�¾ÎT •Ïø&,ÿ¯"$$ 6„¹¹9ªU«Æ[D›7oÖ»ЧOŸbùk¨T*Èd2,Z´ˆùìñãǨZµ*lmm�–©ýí·ß ‘H î—š­t 4ºžÐÐÐ Çhâ믿!ºù±Ÿ T* E±æ&ÿU” Ÿ!bccѰaCÎã<€™™c–Ç7oÞDÅŠakk‹cÇŽéÿý÷ßAÑ»*¯‰Ù³g³Ö§OŸÖ{ÝÁƒA)6¢k×® 2úº[·n��zîÝ»©TªåñA#//nnn „èUB)ê0aÂìÙ³Ç`îܹ™L†ÁƒëëÝ»7#ëZtûÞÇLJ—L²&4U®aWŒÑÄëׯ‰Ó-ZàÎ�;puueM>ÏÍÍe‰Ž;2/z¥®h¹wï²²²Î+à={ö,³[5aÂÆkƒ¦L˜0�q!¿ÿ>V¯^�Ž;29ÖÖÖˆŠŠBjj*o'ßâ 77Ë—/‡»»;¢¢¢C¼¿ÿþ_~ù%lll ‹Ñ«W/lÞ¼�;w†T*5:!„ B… ˜4iÈÓ»z|ÍÂL‰øøx899ÛõYúöí[¬ç�ÆãÇ�ÊÛ¤I“´v‘¾ýö[888ÀÞÞž×3«‰àààOÊG?þ<aÏü¯àýû÷L²x¿~ýŠŒ­]»–Õ„.­Zµ*QÎ]Íš5Ñ¿êU|wwwxzz­Œ—žžÔ¯_¿Ø~X|Ñ A�ûPÔ€F�m2¹h¾ÉŸMš41YÀõ_@yòbÚ´iZ´6$&&ÂÌÌÌè UFFZ´h‘H¤£›¾nÝ:…BÞƒxrr2ç Íæ°Nƒ^É(îê3�H®Ïœ 4õH“£9eÊH¥R•ôôt4mÚ”×DP3![¥R¡[·n077çE1[³f !øñÇ™ÏèûS³fMVJM«V­Œò �e2œœœŒro>|ø0¼¼¼˜Iò… ´Žß¸qAAA033ÃêÕ«µþÞ)))œjPP,--õºÃ«T*œ?“&MÒºÞÂÂ=zôÀÝ»w‘™™‰ï¾ûC† AÅŠAˆšVŠ™3gâܹs&q6yyyHMMeh^íÚµc‚úììl,^¼˜ nÛ·o�#GŽ`ýúõhÖ¬™Þ‰�¾R½zu$$$€¢%E[ÈÍÍ…µµµQ¾>ÆÀÇÇGG6ÛXbΜ9‹Å¨S§ŽÖóþêÕ+tìØ„ÄÄÄb Q«V- 4¨Dý* >|ø‘H„5kÖ|²>|JܹsU«V!¤Ø� ¡]ÈÊ•+C©T–H=-&& þ{ç×ÔõþñÏÍboDd+à`)R'ˆu‹V­bëjµjݳÅѺêhÝÛÖ:[w­£µÖ�[ëVÄúÕÖ…ÕVÜU”!$Ÿß4÷GHIŠ-ï×ë¼ÄääÜ“›äÞóœçy>O]>|˜ŽŽŽ¬^½ºÑ"¹¹¹lÒ¤ ]]]K$Ǫ ºªÆ×¯_ßèqÔµ ÌQ ±U«VlÞ¼y±Ç)I†N__ßW=�׆2¤¢Öx/l�žžžÎòåË›dxQVœ IDATmçääˆ:ß~ø¡¸kÙ¿†„„<ŽZ:°`[¸p¡Î ëj¾üòKJ$“CE^¼xA£½}ûöÕ’ÌÈÈ ¯¯/›4i"ÎG¥R±fÍš/þ ~YYYlР�A5BT*[µjÅråÊ1--�7nÜ ½½=Û·oO¹\®3œ«_¿~¹Ã üä“O(‘Ht&�Fzz:}}}ÅÏ3%%…*•Š_ý5­¬¬””­×©Ä ¶råÊÑÇÇGg^FFüñGöîÝ›åË—'�WU\mx,\¸�‡â„ X·n]1f»R¥Jìß¿?·mÛfVÕ•âðâÅ ®ZµŠAAAòŸÕÞÁììl._¾\|.&&†?ÿü3ÿøãN›6�aaa&"ÄeË–K®ÚÔõ^L })Š?þøƒŒöNèãÔ©S¬T©­­­¹téR�ßüêÕ«éèèHOOO­˜}]„……éÍ—{YT¯^ý•A¯Š�7ÒÎÎN¼.åu×ÅŒ3 ý%&&òñãÇôóócTT”É^‡Ï>ûŒ¶¶¶´°°`ll¬IIÊãÆ�£ …nؘ“��­óѸqc£Çùý÷ß €;wî,öœ¼½½™˜˜XìqJõ桹*ÒÿÛ)3@J!ÇŽ#1|CjÕSw<¿þúkÊårÆÄÄðþýû¬[·®Q²’'NÔyá~øð¡Î ësçÎezz:¿øâ �Å�¡ÿþ¬P¡‚Q»Û5jÔЙ4úÃ?h-rÔõP i‚ håS<|ø�ÁÁÁ (²FÈÝ»wéææÆ-Z°N�:ôõõå¢E‹(‚NIãÙ³g*íHj†\õîÝ›wîÜ¡«««I1ëêäóQ£F±J•*”J¥¬R¥Š¸ó¨+‡†Ô_'&<<\#L(--�K—.eëÖ­ieeEôòò=þþþ ¡���XSÃÑÑ‘íÛ·çW_}eTM•WAnn.ׯ_/VaŽ��eRRU*•J%7oÞ,泄……qݺuÌÉÉá… 8räHz{{›dˆXXX°}ûöܲeK‰VH���elll‰Œ­ÞŒ1µè¦.ÒÓÓùÁÈ“žÎS~ûöm6kÖŒøÁjÌV«V­Øž™âÒ­[·"UéþMdggsàÀ�À„„nذ�@ÑÊ‹)Ì{€ãÆ��Ó“'OR.—sذa&ÍY­¼oÒïð矦 %"o­õµ7kݺµÑã¨T*:::{î�?&€"ëT½j®\¹b6ƒë¿@™R ¹ÿ¾A»~J¥’µjÕbxx¸Éa&‡w¤mllŒJ ?~¼Î‹wÁž³gϲsçΔJ¥trrb�:uX±bE“æ«Fm¤ª8‘‘‘A™LÆE‹é|>>>ž^^^ Öƒ6x±§Kóúõëtwwgtt´ÞEºšíÛ·ÈK¨>zô(›7o®×å­AÓWoEr•¿°àèÑ£ieee’û>òùÁƒéèèH /ÿ¢°0³iÓ¦éøàƒSzúþûïéììÌ *h\GT*—,YB[[[úøøèÌ—#óv‰‡ R"s3”Ù³gÓÒÒòµü=Kjj*kÕªE¹\Î P¥RqΜ9FÕER©Tüä“O ý­èª¥£öæ£X¥R©4äÈõ}� #55•ÎÎÎlÑ¢ÅK­þíáá¡u^LëÍ7ß4ÉxÉÏáÇ @§§½4¡6¸ ‘Ø/£Ì)•¨T*ÚÛÛóóÏ?/²¯z!nŒŽxARSSL;v¬Á¯7nœÎ ¸¾Ð�›7orذa”ËåAo…uCP©T àûï¿oPÿ£G�Ïœ9£óùëׯÓÒÒRÃÅ›‘‘!îôÕ¤R©Î8aCk„:tˆ‚ P&“ñرc”Éd\°`�ξêdú‚úêj•+uÈ•ZmêÖ­[´´´äèÑ£‹:MZäääÐÓÓ“}úôáÔ©S)•JùÆopçÎ�¬U«AàÀ�u*cé«£®,nkkËöíÛsÅŠœ5k5úùûû³o߾ܲe‹X ³¨äùוJÅ;vˆ†Vdd$7oÞ,.0Ξ=Ë„„J$º»»sêÔ©âo*++‹[·ne‡D‘c[ÅŠ™˜˜h–›ùÈ‘#éèèXbJL���ìß¿‰ŒMæy<âââ(?þøc�0›ëׯ3&&†8hÐ ­M„Ê•+søðá%67C8pàݵuþMlß¾�NNNôññÑI''‡={ö$Nš4‰R©”‹/6ìÍþCVV£¢¢èããóÒ•ŸÔ›Lù›©’Ó#Gޤ§§g±æ³páBÊd²O¾7o¾ù&Û´ióª§ñZPf€”R"## N¬ëÒ¥ ÝÜÜŠó­Žã ¯È:vìX�ñ¢’Ë;tè@½Ö eܸq´³³3hñ3kÖ,ZZZªÒ3qâDÊd2 £èܹsbBQ­wïÞ:ÇU×4h�Î÷øèÑ#V¬X‘uëÖeåÊ•éããC‰D¢WÍ(++K«xUzzº(+Ú»wo�sÒ£Gºººš”¡®|®öTŒ5J<‡¹¹¹œ={6­­­éãã£åvÖw³ÿý÷¹jÕ*.\¸�±±±bÕa‰D¨¨(.\¸�W¯^ÕK¥R‰õ4þ-¨T*îÝ»W;¨V­ׯ_/ªW®\aŸ>}¨P(hooÏÄÄD�Ú,ÿý7—/_ÎF�™œ¼Ê/¾øÂ¤º:/^¼ »»{‰…!© –nܸ±DÆW£T*9mÚ4ÊårFFFІ»ú¹9sæÐÒÒ’•*UÒ�M àÇ\¢s+ uáZCëB½näääˆ"­ZµÒZˆÇÇÇ”˜¬R©Ä¼G}M߆�š‡Š×éÂWvQõIZµjÅÖ­[3;;›+W®cãu%¬†:ücÆ EöMHHЪð^�ÌÌL2..NÃPз“_°Éår½!Njµ«Y³fi<®R©Ø¡C:::òæÍ›bñÁ¢”4|}}Eo�:äÊÖÖ–kÖ¬Ñè—’’B‰Dbrõب¨(Êd2zxx0))IgŸëׯ‹¹>mÚ´áĉ­÷<©ÕªÔÍÍÍ�“&M*rw«Y³f¥^ÅT>,†_qÕªUâï௿þbbb"íìì¨P(Ø»wo±à¡šÛ·osÆŒ¬T©’I†ˆ Œ‰‰á×_mp’ì–-[¯F§‹ììl^ºt‰gΜarr2ïܹÃ5kÖ€I5:LáÌ™3 ¢µµ5—,Y¢q ¸|ù2£££)‘H8räHfeeÑ××—£F�z)s+Œ€€:ôUOÃìüõ×_Œ‰‰¡T*å_|¡3©ZµjEzÈ”J%ûôéSèwßЂ#GŽP*•êõ&?xð€o¼ñ­­­5„ Ú¶m«Q¸¶(Ô‚¯BáL¥Ré|˜ü±¨ZäIáê RÇW­Z•›6m28¶yܸqtqqy%…ö^'OždëÖ­ €~~~\²d‰˜¸úøñcN�:•nnn”H$ìØ±£VHáÝ»w ä%W«‚Œm …‚mÛ¶å¦M›˜™™©w®-[¶dTT”ÉïõâÅ‹2dk„ER!Ó®…bgiC;[;®\¹ò¥Û{ö외XmÛ¶­FñÜœN™2…r¹œÕ«W§»»»Ñµ˜J‚·ß~»ÄD^û÷ï§»»;Ë—/¯WdE¥RÑÚÚš3fÌÐ;Nnn.ß{ï=½ßu‰Db´÷hêÔ©�»víÒx<55•AAAtuuÕªÍ2zôhƒwÅýõWZ[[³k×®¯äZ—‘‘¡ó\™jl«T*º¹¹™ü[Q©T´³³3($½4póæMšÒúeè¦Ì)¥,[¶Œ‚ ºÈOFF½½½MNöªX±¢†Žrr2½½½éææ¦7Ѹ`}u+j±P½zu0@çsÖG�Í;wîèkÞ¼y”Éd…ÊÞ©eëׯ/t^jÚµkÇòåËk„,ݸqàP,KKK½¡SJ¥’ï¼ó-,,xôèQ^¾|™ÖÖÖìÙ³§ØGëZ«V-úúúê ›úàƒÄ8Ý‚!Wj’’’4ŒC¹rå kÖ¬I‰DB ­9<}ú”›6mb·nÝèêê*z1ذaÃ"ÏQõêÕ5r eÇŽ žõo$99™:t  ôòòâüùóÅÏ8##ƒ‹/¦¿¿?�¼Biûöí“Ù9yòdªT*9r„~ø!���M2FسgOîÛ·Oãóºuë% ¿úê+£ßÛ‰'[?/·ÂMæÌîhÊyȘÍ3øŠ'±˜›0�£Ð™ „P ³ƒ?ýôSƒ¯‡ÅeË–-tqq¡§§§–ôéùóçE™äØØØ)¾h “'O¦ƒƒÃ¿Â0W*•œ —/_®õº‘#Gê¼PµHðöö.r7D�°nkkK…B¡7aýîÝ»:‹*æG­ehÑÆ›7oÒÚÚZCv1''‡ -Ú sUgee1&&†ÎÎάZµ*+W®¬á1jР›5kÆëׯÓÎÎNgâ_JJ ÝÜÜèWR*•ŒŒŒdtt´Q “5kÖÐÎÎŽtuuã~ÿøã.\¸�M›6‹V©R…:t`‡4B\\\Ø®];±BqÁfˆgKêïiÁ0³3/^d—.](‘HèááÁ3fˆç/''‡ëÖ­õjÕâæÍ›ùÆo°[·nãdggó‡~`ÇŽõ~.E5///~ôÑGLNNæÄ‰immmT^Qff&)$Œ�Væ:|Êlì&±¿Ðv«9¨�ÈÄãÇ�›çäÁŸþ)†>\CB5;;›666”H$¬Y³&/^¼øRæ¤ µa^œby¥�°yóæ�Ÿ~úi‘ÊŽ…ÉÕggg³}ûöz¿Ër¹\¯ábwïÞ¥‡‡ãâ☔”D{{{FDDèÝ,;}ú4�«֫Ãqíìì´ ã¾LÒÓÓ9zôhQ²^½zLHH(Öù?~¼ÉÞkµLþË(Àh.š7onTÁßÿ*eH)E�€i¬ì_ýúõYµjU£d÷îÝK¼té’ÖsÙÙÙ¢fþСC5ÆMLLÔyq/*ÜÇÁÁ�Ó§O7hn�?æ_|QhÂz‹-X»vm½c|òÉ'tss3êâ§V|JIIaVV–¨ÜdH“Éd¡yô葸#�wõöíÛ�+V¬ I®ZµŠÀÿ'áªU®,--Åð}‰}êøùC‡ô~ÓÓÓÅP…Î�;‹¯ïÕ«ÃÃÃÅ÷Å–-[Šr˜èãã#®6lsss¹gÏñ33Ö@-ŒÀÀ@£“9ÿ \¹r…={ö¤L&£‹‹ 'Ož,.þU*þùg1™ÝÞÞž~~~z‡Ož<áÊ•+Ù¸qcJ$“Œ¹\Κ5kòæÍ›ÍÿñãǬûF*$rNÁÌAR‘†GÁv+% ¡T"å·ß~[¼j J¥’3fÌ \.gxx¸Æ&ˆÚ@¦……g̘a²zq¸sçók|;vŒ+V¤‹‹‹ÁJwêkTA#8++‹ñññz¿»ܾ}{±ç¼oß> ‚@©TÊ7ß|³PcüÙ³g &¥ëB-õûý÷ß{næàéÓ§ �( µÌ¼)5›&MšDGGÇ×ÊÃ÷é§Ÿ½æø/Rf€”R”J%­¬¬tVÂ.Œ3gÎP„"=ò3sæLZYYé½yªT*Ο?ŸR©”Mš4á£G�HêW9*,$A©TR.Y²Ä¨÷UXÂúÚµk èÍiܸ±Ay"�Äððp±Hœ1-00�­Z¶¤—»­--ieaA7gg¾ÇŽ;mll4j„Ìž=› …BLVïˆ999ñòåË*WgÏž% »eVV}||Š”ÌÈÈàíÛ·¹cÇÐÚÚšC‡e¯^½Äü FGG³víÚb ;;;¶iÓ† .äÙ³gÙ¤IÊd2.[¶Œ»víb�:u@§–<€b…¼ûî»ŒŽŽ6ùõ¯;©©©¢:Ž££#ÇŽ«¡ tìØ1Q:ÚÓÓ“3gÎ,Ôãô×_qÖ¬Y¬Q£†I†Ö¯_Ÿ_}õ•^©ÐôôtF׬E'©=�c¡Ñ†Gþ–ƒ$ö@Þ.ùÚµkÍpF ãܹs ¦••/^L•JE'''~þùçÌÈÈà°aÃ(ëÕ«÷JBË—/Ï1cƼôãu-¹\ÎÚµk¥Æ6iÒ$º¸¸h<–‘‘!Š9èjVVVFGècÞ¼y`p…òÂ*y9r„2™Ìäb‡%Á½{÷/y\�:\ÎÁ˜‚tìØ‘ 4(ö^&j¯�)ê‚ÿ%Ê �RŒ! ºèÙ³'��� ÖïÚµ«A‹º¤¤$:99±råʼ|ù2GŒ¡ó"_˜÷E-iÊ…ˆÔ�°>}útÚØØèŒQU*•tpp0º0УG� ÝEÓפÿüë ›¶Î�;çÂ�ãàÊ6‚Ý‘';ë]Þ“r¹œñññb¢{Áž‡ÒÍÍ�ÖÖÖ*W™™™�Ë–-ÓšûÌ™3)•JµúÈè×…„„èÍ-­üùçŸôç'•‘G™RŠiÓ¦�I‰[iii´³³3XŸ?44”}úô1¨ï•+WB¶mÛVç…¾°äbs^Ôò'¬+ :99iIß©‹ö³ë•��M£_’þmþ/æ"˜DˆÎ¦B0�À‡ï ” e[¶lI@3¿Ar¥Î¹È/@æí¨|ìÑ£GtrrÒÐlñâ§M›F/�<•ªêRk~G~ î@EîDEnD~W6� ÿ"þ~~\°`�NCöĉtss£»»»˜ƒðÆoðçŸ^C‡Õy®ªU«F©TÊQ£FŽuüøqÐ(Fö_æîÝ»LLL¤­­-­¬¬8dȱ8Ý�øÇpÈ�!´¶¶¦••ÈÔÔÔBÇT©Tüå—_د_?º¸¸˜dŒØÛÛóý÷ßç¤I“€+�hãCÝ2±‹!R_Ö�|éUÀøáºººR­ëfzz:?üðC`ãÆ�_Úè˜1cèááñRŽe’““H{{{“CŽ6lÈŽ;’Ì3fêÕ«Wè÷QŸ˜Š1¼xñ‚ݺu#Q}ëÏ?ÿ¤««+›7o^è½oÈ�!¬T©’Æc¹¹¹Œ‹‹£››[±êd”¿ýöÝ^vSh×®�Ñjm™™™”J¥&‰]¼j<==K…Lwi¦Ì)Å >œ���&½ö‹/¾ T*-292++‹2™Œ‹-2xì'Ožˆ f]­°�¿””0k"éÍ›7Å„C¹\®‘°¾råJ0¸¶�šÏ>ûÌ(ã£dL‚·^£C_K�#$Vþñ4¨‹8,,8pà@* �êÕ�5âÛo¿­1ï#FÐÆÆFL†LNNfXµj” {À‘gà[䜠gÀ�e–´±´â‚ 4n¬ß}÷ mmm €µk׿®]»´>w]…¿A`vv6?ûì3* V®\Ùà<2ïûªP(L®kòoåáÇ7n)—Ë)'Ož,>ÿàÁŽ?žÎÎΔJ¥ìÚµ«AÞƒ/^pûöí|ç�wheee‚GPÂf¨Eö™Õ!öóQ"˜^ã¦8üõ×_¢qèСZ¹�;w²B… ´··çÊ•+KÜ¢®=P˜b`i [xx¸V=cðññabb"=zTh˜¬£££Y6,ÒÓÓÙ¬Y3Êår-! µ|û´iÓô¾þ«¯¾¢D"Ñø®Œ=š‰„û÷ï/öüÌMrr²Y7{¦N�J;;;£ÔÕ¡ÆÇŽ3Ë^&­[·fãÆ�_õ4J5eH)fñâÅ”Éd&¹e³²²À&MšzóSÿÀóWø5„ÜÜ\Ö¬YSç¿0>L@wÂ{qÈÍÍ¥››ëÔ©£‘°Þ¦M=žº(aQ ,`Ôí‚9yáN]»veJJ ƒ‚‚´B®ªW¯ÎêÕ«‹^ƒ>}ú0<<\œó�7¨P(8~üx>zôˆƒ ¢T O`xlOQ™"/ïãíö홑‘¡¡©_»vmîÞ½[ï÷kÀ€ZçK&“‰ÏÿïÿóEúõëg°¢R­ZµØ¥K£?Óÿÿý7§L™B‰DBAØ£G�EÞ³gÏ8gÎQT!>>Þà�á'OžÐÓÓ“F%¯_Àrû™Žü�Ø5é  8ïi…WME/Æ"œ.°§2zÃ�ÑŽ�ðƒ–ÒQhÈ €Ê¯$ÙS&“±}ûöT( ÕÚìyüø±¸[Þ¦M›B%e‹Ëµk×@£ø]iãùóçìÞ½;�>ÞèzH/‹ýû÷@±¼Tùyüø1õù>œþþþf9þËF½~xÝå±K’2¤sýúu¦çK¨T*6jÔˆ•*UÒ›à7hÐ V®\Ù¤ñ¨½(—H }ÍêÕ« ]¬ÐÔÞuÁ¢çÏŸS*•2((ˆ€qÖÕ´k×NÏâ ‚‚™Å\Ü4BZÁ–2z“%gÍšELJJÃ.ú÷ï/îh ‚@™LFà;°§Ò ÆÂíð¢0ª®ˆº¢tþfee¥³ojj*›5kF|ç�w MèTõ2Tdá¿Èˆ#èïïÏŒŒ Ο?Ÿ^^^�o¿ý¶FÝ¥RÉmÛ¶‰Õ«WçêÕ«uëï¿ÿ>}}}µL¿ýöÇŽË€€­ÏûkŒÐ>õ[u JìÕééØŽ© p5Æh<®Â>zË<8|øð’9‘zP©T 2éb IDATªùeddˆ¿–-[Š‚jîÝ»'†‰vêÔ©D¾»±±±Z!™¥�õë×ÓÖÖ–ÁÁÁüõ×_Í6fa›CžžžZ8¦pæÌº»»300Р…djj*�œœøÖ[oé¼Nºººò“O>add$ýýýu*¥õÚœõ7*Uªd”ŒzãÆ�‹Ts,­¨UÄÌ!cüoE‚2J-+V„\.ÇÕ«WMz½ ˜3g®]»† èìsþüy„……™4¾��jÕªOOOÈd2X[[ƒ$Ö¯_¯÷5Ož<�\.‡¥¥¥IÇ,ŒððpT©R«W¯$''C©TbíÚµ8{ö,êÖ­‹aÆÁÛÛcÆŒAZZZ‘cΞ=ÖÖÖZ�ÀjxÂæû °°†€øV­pïÞ=­>={öDõêÕ�îÝ»-Z„[·nBCCáæì‚`©–£<$Ì2·–°Ã”é“§púôiƒ^ãåå…ððp¸¹¹A.—#$$AAA:ûúøø`ÇŽøæ›o°k×.„„„`Íš5 ©Õ7::pòäIÓßпœ   ܸq‚ `À€¸ví¾úê+œ9sáááhÓ¦ N�:‰D‚Ö­[ã—_~ÁÁƒáåå….]º R¥JX¸p!222OŸ>ņ гgOH$šßùÊ•+c„ ¸rå Ž?Ž�ÂÁÁP Á:ç§ý©æ!�N°Óz< €Û¸¯ñ¸Q¹•qæ¤aßIs¡R©R©`ee…ùóçcûöí8yò$BCC±sçN±¹råðÝwßaíڵصkªV­ŠŸ~úɬsŠˆˆÀÙ³gÍ:fqÈÎÎÆ€ЩS'ÄÇÇãÔ©S¨Zµj±Ç½uë ¤÷yooo:tHïµÆP’’’ooo=zþþþE¾ÆÇÇ+V¬ÀÖ­[uÞsCBB°nÝ:\¼x›6m‚““S±æX’dffÈûn›‹š5kâÔ©S÷¿páBCCÍvü—I¹råàããcðýò?É«¶€Ê(œJ•*qèСÅ£_¿~tppÐÚ•3—Û~üøñôôôdff¦˜8=zôh�®å)S¦ÐÕÕµXÇ+Œ)S¦ÐÊÊŠOŸ>å¬Y³hii©‘Cch…õüL�:U3�`o8’a:‚øœÙ6t…”Àñp-ÒÓQy‰çà¤õü¸SÎçÏŸóÖ­[\¸p!ëÖ­K©TªµÛWµjUà·ß~Ë9sæP"ÉÉÉ|ç�w(‘HX®\9Nš4‰³gϦD"1x7tÖ¬Y´äz Þ×ãÑ×V ‘þˆ)ZÏMFO:Ø:˜~²L ;;›€îÂriiilÞ¼9pРAZJoþù'[´hAìÑ£‡QÕä ã›o¾!þý÷ßf¯8ܸqƒQQQT(bÝspýúu±«®æïï_¤Ê›!¬Y³†r¹œÍš53)ÜYyaRu £2­)%‰–ò�\.gll¬˜ îèèH777Ö¯_Ÿ¹¹¹ô÷öá»p ÂݨÈN°§ä”t„„Í`Ã#ðÑ:æø²¬i !a;Øñ:´úíƒ7¥Ú2bÄ“Âü~øáV¨P�¶¶¶ZJ\Íš5{íê¼LÔ7ïï¾ûNçó¹¹¹\¿~½˜'˽{÷j|ÿ¯]»Æ¾}ûÒ‚‰„þþþK…Ž?žåå®z c �ÛØHw8±Bt>ÿ5òê½ÌXúŒŒ Ñè×…J¥âܹsiaaÁjÕªi‚j5([[[z{{›%‡åÂ… `–ZÅáǤ““ýüü´àÅe×®]”Ëå:��Ê•+›%\hæÌ™Ànݺ™\—#++‹5jÔ`@@€x<þ<år9%‰Þ¢¿¥‰eË–€YçªNÄϪ�½{÷€YBé^Ÿþ¹ÑÊ_ÿ%ÊB°J9���&‡`©quuÅ„ °téRœ?^|<99@^èRq AÈ õ}ô¶oߎƒ¢N�:¸~ýºØ÷É“'ptt,Öñ ÃÇÇ 4ÀêÕ«qâÄ 1\§ ŽŽŽøøã�qãÆ ¬\¹©©©ˆ��Ett46n܈ÜÜ\±¯B¡Ðp§×€%B‘Bæ #ûჩ(WäüRñ£q á¡·�¤H -$*233agg‡!C†`ß¾}HOOÇþýû±bÅ tïÞOž<Á½{÷0}útlݺ×ÿ¸‰È;¿_ão¤!ÁIðÁ7ðD&ˆ†¸‰ýx.ï2²‹?� à;TÀrxâw¼@}ÜÄäjÌ-Ö–Yc¡ž�>](•J1TÅâããqñâEtîÜ @LL ._¾ / ëĉ:C´ÊÈûÍ;;;ã·ß~Óù¼T*EBBΟ?�-[¶àéÓ§hÔ¨êÖ­‹;v€$üýý±hÑ"ìØ±*• wîÜ�ŸŸzõê…ßÿ½Ðã“„`†ð¿GxŠ6`¬Î>êã¼Ìï‚R©½ßkA0hÐ 1ܤfÍš˜?¾8GAгgO\¸phÔ¨ˆçÏŸëÏ‚ƒƒaii‰sçΙü ÇÈ‹Ù]ì‡ú `�xØa*Â2LÁCqœ±¸+ØŽŠh[´…~BE܇3ðHc^¼—kƒ?ý$.ŠB¥Ri}? ÅÁÁ_~ù%8€´´4„……aÊ”)¨Q£>|¨aÜ–ñÿ‚€   Ñ`Ó‡D"Á[o½…Ó§OcÇŽ€–-[¢f͚زe T*¶lÙüñÇøì³Ï°}ûv£C‡zã›íííñ·2*˜~ÝzŒt4ÆG¸ƒ‡ØƒðÕc´?ÂSØXÚ˜u¡TE jªW¯ŽS§N¡OŸ>4hZ¶l‰»wïŠÏûúú")) óæÍòeËŽ_~ùŤ9Éd2„††¾䯿þB\\fΜ‰iÓ¦aëÖ­%’ßpþüyL˜0‰DÜô Ã�àá¡S§(^¼x�®]»bÖ¬Y˜7o¦L™"Žo*Xºt)6lØ€† âþýûXµjàÒ¥KÅûe�™™iÖü°±±A•*U 6@ªV­úR׿&22ŒÊ{ù/Qf€”r‘���¿þú«XãÈårÌš5 ÀæÍ›äy@Š}¡U©T:Ç Á‰'‰Æ�cÑ¢E/Åyûí·Å‹VQˆAдiS$%%éMXÿôÓO‘ƒ<ˆ),ÅcœFf¡Þ55`‰˜˜Œ5 #FŒÀwß}§ÑgÅŠJ¥ 4€ T¡¬Åa7ȴƵ€APà6r¹ ¶ãÚöù.Þ�£!¬±éZcDà YYE.nÕ˜êÉOLL RRR0tèPŒ;£F�œ8q¢Xãþ› Öë)ˆ hÞ¼9Ž=н{÷ÂÞÞíÚµCõêÕEo›«««è5üòË/‘œœŒ¨¨(4nÜIIIˆÐÐPd¨²ð;n›4÷ÇHÇ›�›HÃLG5øéí{WZ½ºIÇ1C °´´Äܹs±cÇœ={Õ«W×H@—H$8p ’““áêêŠúõë#11YYYFÏëU$¢ïÛ·¸víöïß��>ú¨Ø÷]œ>} 6„——T*úöí‹èèhìÛ·åÊí}ÖÇÓ§OѲeKlÚ´ 6lÀÀ�Í6çŽ;â�7Þ@rr2&NœˆºuëÂÖÖöµ0@²²²Ìn€y^C³_çt5NNN ,KD×C™RÊQ»‹†Íš5C‹-0bÄdee!99¹ØáW€fVAœ��ñóÏ?cÀ€èß¿?Ξ= ;»Âwÿ‹‹úG/“Éàããcôë#""°zõj\¿~ï¿ÿ>æÍ›Œ7àãÝò"#pÓáw†AAÔÇHKKÃäÉ“ñî»ï¢k×®8räàÁƒ˜2eŠ¸Ë¨R©�õ"‘EGO Äid¡*ò<)×ðY R–Ÿê°ÀU¼À‹¾�ˆúºÐQ*•&{@òcee…Ï?ÿ'OžC#fΜ)*5•¡‰ÚbLh’ ˆ‹‹ÃþýûqøðaH¥R<þ7nÄ7ß|ƒÜÜ\XZZ¢wïÞ¸|ù26n܈‡¢qãÆˆŠŠÂ¦M› T*8 à  ü¨��T¤a7¦# …‡`œ–ÿŽšoD}œâ`Œ¢¦yóæHIIA­ZµÐªU+ 8PTòÔÄŽ9‚)S¦`Μ9¨Y³¦ÑÆDDD.]º¤1nI¡R©0iÒ$4nÜXô¼Ô¯_¿DŽuìØ14jÔAAA˜?> k×®8zô(œ��M7-- ±±±8yò$víÚ…:˜kÊ€C‡áäÉ“(W®/^ŒŒŒ ¿Hfff‰¨UFEE!%%¥P[©Tâ×_Eõ—¼±Pjpý)3@J9¾¾¾Á,Ìš5 ·o߯”)S�ššj¤¨™L†9sæ`éÒ¥¸{÷.öîÝ‹û÷ïëío,,,�››[¬ ½··7fΜ‰[·ná³Ï>áC‡2bÛ?D"`‰`XX‚ÚÄÉÉÉ� X¾|9j×®�6mÚà·ß~C¯^½ðìÙ3qqY©R%¼ÈÍ…gÆM¤!ĸ"o!å í…”3¤ €ÇÐ µr€6R>|¨õ]¨T*³ÇŸŒØØX3Í8�´´4$$$ ~ýúØ·oþøã 0!!!¯…RR�¨¨(äææj|ï ríÚ5dee½ö ïýž;wN#¯´Œx5¹ïeƒ��GŽi¶ñ†JKKK0Ka¨�?þ˜���õ-W®­­­éëëËóçÏûغP*•tpp ¥¥%G�m¶qÿ÷¿ÿåU‚†·Nu«û¨¤Së;T à øò1*‹MøGÎ÷oTÖª¦þ €Û¶m�ÿèÑ#†„„ÐÖÖ–X©R%QÉlìØ±y’…¨ W}ë¸R¸âcGáC௛‚r¦¡’Ös¶)ß{ï==z”W¯^åÓ§OõJm~ðÁŒŠŠ2Ûç fîܹT(¬[·.°W¯^|üø±Ù�óºréÒ%à¾}ûLzýï¿ÿN\³f ÉéxÝ#(!p*ày"C¥ÄÊ•+Q·n]ÂÞÞÖÖÖbqÊV­Z¡G�5jRRRðøñc$%%!%%iiifÙ ŠŽŽÆ‹/0sæL,^¼ëׯGÕªU±mÛ¶b�ýo 2™Ìà<�‚,[¶ NNNh×®€¼dß�7â×_Ell, ???ôèÑh×®�ÖuJ Æb¹øÿXöA…}Pb¯ÆßÞp‡/<´žËß–ãcq¬ßð¾•ìÁ‡úB&+:¬Ñœ˜êÉOÕªUqâÄ ôë×C† A‹-pçÎñy…B� &àøñãÈÌÌDdd$¦OŸ^¨øƒ••BBBJ$�$fÏž� ÀÛÛçÎ�C“&MÌ~5?ÿü3Z¶l‰˜˜üøã�°±±\¿~~~~&ç™ìܹ±±± ÄÑ£GM Ó-Š1cÆàèѣذaƒ˜ß­[7tïÞÛ·oÇ“'OLöL¾,J" È‹N -41ûÂ… pww/1¯ÚË$""‚ ”…aé Ìy 0«âè舰°0¨T*³Ü¨ U9ÊÍÍųgÏàëë‹#GŽ yóæh×®&MšdV MubrÿþýqóæM=zÔ,ãÊår„‡†â tÇW_ù'[bºðMq mîãH½t¼h‘÷†€K$`a›·5,òþ��5Àu¡y¡?ƒ,ØÛ؈9@k×®EDD&à&À#ÿ ½R¬ Úñ¸��JP@Q äìWdA`ûöíøõ×_±wï^¬[·_|ñºv튰°0H¥R\ºt 6lÀÙ³gqõêU4nÜaaa(_¾< Ê•+‡ªU«¢aÆèÔ© „I“&á믿ƶmÛpìØ1\»vM#Ô,?ááá�Ëå8uê>üðC\¼x‘‘‘xë­·��� ¡6ô_D.—Ãßßß`±€üäää`åÊ•èÒ¥‹Vx•*UðÍ7ß૯¾‚R©ÄŠ+4ä½ó£„ ßb~Âq“Þƒ>”Pâ}é4Tô®ˆ¡C‡šulƒŽoÈKPŸ5kvî܉óçÏ#44?þø£Fu.È Aƒ�˜˜ˆ˜˜˜Bïf7@ž|HüþûïIæ…JM˜0�Ø¡C³U\íÛ·/ƒƒƒ©T*éãã£U€±8 >œåd f!H GÚŠ | ¶üǦ }XcXØ)ìÂÿo�U`Û›`Ä´ÿSé>Be�§:R[6kÒ„ééébÑÁwß}—uëÖeµjÕøã�?R"‘066V ɪX±"kIl4Æ™øOØÕ§…GL€=Ý!ez¾÷t�T@à(¸hõ_J$>þÜ sÖµkWÖ©S‡×¯_çñãÇùÃ?péÒ¥œ|˜íÚµ£——W±¼ƒfÕªU‹ìwîÜ9à©S§´žKNN¦��ÝÜÜŠõ>322(“ɸhÑ"’äÅ‹ €›7o6yÌ‚4lЀ‘Rkž‡]¥:‚­.è74Šjmo�îu@K‰À$x³ìédkG¹\Îððp^¾|™999 fåÊ•éååEAØ©S'víÚUcÑ'ŽþÇk kJþI.Ø$€†Qq¾|6´�@HØv¼Ž-ããwW­ZeðùêÔ©ãââÌvþóóí·ßÏž=ËcÇŽqÛ¶müúë¯9iÒ$4ˆ111´°°  ´µµÄʾ¾¾¬U«ãããÙ³gOŽ5ŠsæÌáÚµk™””Ä””Þ½{—¹¹¹%ò>JŠeË–Q1YÜnݺE‰DÂ%K–�Ì[ÐÖ¯_ß`ÃÃËË‹5jÔÐz\ )`Ã5Cöm|¤á{¶òæQ¡B:;;399Ù¬çËPÔGŽ)±ñÃÃéP(8sæL�žŽÝ»wÓËË‹ööö\¾|¹¸°~üø1ðÛo¿5ùøÏž=¯-}úôaff¦ÉcŠú»Ú£G½¿³?ÿüSKœ£0²²²Ø±cGJ$.^¼ØœÓÕâý÷ß§•••Aâ*íÚµ£››ííí_Šag 111ìܹs‰Œ�““C+++Μ9Së¹ãÇ�Ïœ9S"Ç~üòË/ÿº÷d^næ^& Oš®N�:ÅO¯ŠéÓ§#$$Ó§OÇøñãM�&¡ÿý÷ß ³aXXN�:…öíÛ#66_~ù%zôèaô\Ôrwê„UªTAdd$V¯^�¶mÛ=ž.¦|ñêÔ®�zÒT(*�–¦×Á‚�Ð0 8O´Üÿ²Užƒ ´iÓ@ݺucù;uê„Æ�c÷îÝØ°aAI 8$±xñ R:c? O®Œ„öÀ»È~“ð.ŽŽèØ±£Ác›£¡>ÔŸó½{÷дiS�}ÒÓÓ1jÔ(,\¸ÑÑј6mÎè�ö IDATœœœpïÞ=ܽ{÷îÝÛÝ»wqáÂñï‚õA€«««˜ éææ¦ñwÁÿ«g_AAA ‰+W®,i¹bÅ XYYÁÛÛ 6Ä� z�——ÆŒƒŠ+¢}ûöZÏ+¡ÄS|8vî܉•+WŠùиqc\¸pC‡E�=°eË,Y²ð÷÷ǹsçÐ¥K£�}éÒ%tèÐ7nÜÀêիѹsgs¾5�|ùå—èÛ·/úöí‹ èÍ)¼qã”òäɼõÖ[8vì6mÚd¶ë¿.–-[†+V`åÊ•}«V­Š#GŽ \¹rHHHÀÑ£GaaaQbó3…’Ì‘ÉdˆˆˆÐ™ˆž’’‰D‚*Uª”ȱ_ê¼ÈÓ§O‹ÕÑË@YÈëBùòå9vìX³Œ5lØ0úûû‹ÿ9r$---M0`CCC‹ì·uëVà½{÷ôöÉÎÎf¯^½€C† 1:VWÿœ?vxÖ¬YT(|ôè‘Qcéãÿû ¨pÛÿeºç£`ëô ´)(“ÉxöìYΛ7�bŽÇ�!CèïïO æŒ3Äpkkk=z”®NNl'ØSU@Ú·¸m;¼€Ë—/7ê|µk׎M›65˹/ˆJ¥¢³³3'L˜Pdß#GŽ088˜r¹œ&L(Ò®R©˜žžÎk×®ñرcܺu+—,YÂI“&qàÀ�LHH`Æ Y¥Jºººêô®ØØØÐÏÏ�ÑÑÑlݺ5?øàŽ=šsæÌáºuë¸wï^^¸p�÷îÝ+ïÊýû÷óä™7n4¨¿R©¤»»;=== öxxzzrÁ‚ÌÊÊâþýûiee¥?DذaCúTð&†Ë*q,ºq&ñÖñ¶ò.6ó¾ä—ÆîhJk‰%eR»uí¦qíxôè###éêêúÒ%.“““ €'Ož,ñcíÙ³‡åË—§‹‹ ·nݪ³Ï¶mÛèîîNggg®_¿žíÛ·gÆ �>ÖÚµkiccÃ��^¼x±¸S7ˆÙ³g\dxÔ7ß|CE†NþùçŸ ¥££c‰ç �={–Få®]»–¸ÿ~Êår2¤gh¡¡¡0`@‰�?xð`�òý 0(§ôu#44”½zõzÕÓ(U” ¯ õêÕã»ï¾k–±âââ4b;Ÿ>}JvêÔɤñú÷ïϰ°°"û©uÐ Yø-X°€R©”Mš41ÊpHHH`ݺu5û믿4BJŠCVV}||€õ¿3Ÿñ¡nÍOƒ‚4/\H&“QúùùQJ$ZYY±[·n<|ø°ÆÍÚÃî®®ôóóã’%K€_æ«÷QÜ–Š@–—Y°yÓ¦FÇP—d2#™«lèø™™™3f e2«U«Æ'N˜m999LKKãùóç¹gÏ®Y³†³fÍâÈ‘#Ù£G¶jÕŠQQQôññëðäo‰„nnn¬V­5jÄwÞy‡ƒæ”)S¸téRþðÃdxx8]]]yáƒÏIqQ'¿¬�Šû÷ï³M›6bH”®ÏÿþýûìС°ZµjFÕšÈÊÊbß¾} €�;w~i¹QêÄðÄÄDƒæ:aº¹¹ÚçÒ¥Kôöö¦———Yê\Æ£G�èççÇÈÈH£ÂÔÔáÈ¿üò çÎ�kTXÙË¢råÊ1bD‰�¯Ÿ-x�‰‰aÇŽKì¸¯Šž={2""âUO£TQf€¼&¼÷Þ{ŒŽŽ.ö8êã‚ ’+Vˆy!ÆÒ¯_?ƒ~XsçÎ¥¥¥¥Áã&%%ÑÉɉ•*Uâ¥K— z�¯¯¯ÎäÔ&Mš°Aƒ[C‡¥DVh%° ÁF»AŸN ­(‘ƒ GгØäˆ¦aQãÿØ;﨨®®�ï;}è E:Ò,€RDAÅŽŠF�ˆŠ±b4±c[ì-v�&Æ!�1b‹=Ñhb ¨™™çûc¾™ˆÓ‡Ð7þÖºké½§ÍeæÞ³ÏÙ{?K6�¤×�oKpíBèpQÑ©3Jº BDàóù "ØÙÙaåÊ•*…öš5k†Î�;ÃÑÑ!!!¼8Bxº¹ãÑ£G:ß³ØØXtìØ±²·^%©©©¨Q£†N†Ñ… ШQ#°X,Œ5Ê`Ø´E"‘ ¨¨·o߯ɓ'±sçN¬]»3gÎĈ#УGDEEÁßß5jÔP:A755…§§'7nŒN�:aРA˜ÅÅÅX¾|¹<–©AƒJë4kÖ Ã‡‡@ €©©)F��(Œ?//���°³³3ú„SÆ™3g@DUƒ"‘H°víZ…BÔ®][¥ñ“––&ÏŒ÷Í7ßhl7;;�5�ÇÚ5kª$kœD"Á´iÓ@DHMMÕºÏ~ýú¡qãÆ*¯ŸZµj…øøxÄÇÇ£N�:Z¶¶¶˜?¾‚±vöìYXYY©¬×¿¥Ï”²²2¬[·ÖÖÖJëùùù�þ®§L™+++p¹\ôïß_aA"//°··¯סS§N�ˆªt×EÆõë×ѰaCp¹\ÌŸ?_齕­°UfeÚµk¬¬¬àééYe»9‰'NaöìÙ:ÕmÖ¬zõê¥ôÚîÝ»! Ñ´iSƒ¹ÛªcΜ9 "üúë¯zÕ¯U«–|‡!??nnnhÒ¤‰ÒÔÃÕ���¾úê+£µ/‹aaaQá;ðÏ?ÿ¼—»A†à¯¿þáÏ?ÿ¬î¡¼7|4@>¶mÛ"R¹®-»wï)]iùý÷ßA¤»�ÿ�!CШQ#�åÆŒƒÚµkëÔ6¢cÇŽ` ,P¹Z&ûlwïÞU¸öòåK˜˜˜èü“ñäÉØÛÛÃÙÙÞ zK¤ÆÂ'¹Š;½J &.„š­Ô»[uÉ–õS¯9µ%ð„\Øl¶Òtœo3{ölX[[233Áf³‘””$�‰áñàÉâ#ƒœñF˸�+ä‰^Œ4�ml‡xòä‰^÷ �ºHÅÅÅé]_²8}ÓIgee!**J>Y®ŠÉ‹1‘í®deeá�?þ@ß¾}Áçó1}út >111°µµÕÚðàr¹ Áøñã±lÙ2¤¥¥áÈ‘#¸zõ*Ž;&O­ìèÝ»·ÆØ™л‡@ ¨0¹.**ÂÂ… áää†aWÁ…îÙ³g¨_¿>píÚ5£Ý_àßg¥±ûQEYYÆ�/weûçŸÊÔ¬Y±±±077‡««kûÍ›77nˆ]ºt©ô{E[$ F� "ÂâÅ‹u®ïââ‚É“'+œ_¿~=Øl6âââtÊø¦/‡‹ÅR:miß¾=:tè ÿÿÉ“'Áf³1qâDC ±Ò˜™™éõ7Ò…èèè ï†ÌÌL‘Þ‹]ï3¥¥¥àr¹X±bEuå½á£ú‚LûÎ�;•jçÂ… dmmM®®® ×"""¨W¯^4qâD***ÒºMm•Ð •fÀÒ„……ýüóÏ”œœLãÆ�£ÄÄD*-UTî>}ú4ÙÛÛ“»»»Â5333êÒ¥ mÞ¼YgÕuÔ¿""á Ռɒ~ ì˳ùDµ‰ŠÿQß.ÏZõ5ÇÖDåoÊåý·hÑ‚²²²T–÷öö¦/^ÐóçÏ©]»v´zõjZ½z5‰Åbºtå y4kLÝé!¹PM §ô3½¤TN�@/IL¿S1}MÏ)ŠýÕ£l:lÃ¥M›6ѮݻÉÁÁAý‡QƒD"1Z¶ ""[[[òòò¢3gÎèUßÛÛ›>LëÖ­£;v�¿¿?ýôÓOeÕÁ0 ™››“··75iÒ„ºuëFeeeÔ´iSzòä |8-^¼˜V®\©³‚}YY=|ø�jÕª%?€fÍšE¤ÁƒSFFFÕtcððáCùo`úôéz·ãççGׯ_—ÿ?<<œfÏžMsæÌ¡ýû÷b¨•˜Y°d„„„TP¿|ù2™››+}‡èðù| ø¨ˆþ6Õiý|D{ž?®Ò½H4eGÉÉÉ�P(Drr²Öm8P+•ÏO>ù111Z·«Œ­[·B  ,,L!!&&±±±*ëÊVWÎ�;§SŸK—.IƒBãõêw6z¸–·nŠ×âE„ø7„Îwî={éNÈ»åbŽIW�Ç��Ï>û DÒ å(]u=wîœÂöîäÉ“+|gŽ;9Ü +ÍÌ[ÿæsyhѼ9ÒÓÓ &šÔ²eKôìÙÓ m©">>^­o¸¶<|ø]ºt!..N¯˜—÷ ™‹š²,]ÊKKKL›6M©ÛŽD"Aaa!8 26…ˆ`ff¦ÒµÊÜÜ^^^hÒ¤ ºté¢2Dv„‡‡cÏž= ;Ÿ"‘Û·o—kŽ!==�?F½zõP³fMܸqÃ(÷ôðáÃz¹ýƒ¼¼ 666˜5kV¥ÚðòòÒ¨ œšš �§õËuÀ€ZMþbbbðÉ'ŸhÕ¦:Μ9'''899ÉE Åb1,--ÕÞŸòòrØÙÙaôèÑZ÷uáÂðx<|þùçðò’Šðµ>¡Þ©Õ›ÀâÚŸS¼Æâ“\)ÝÔ�Ðá‚ò6º=‘N¾dв™ºwÇŽqôèQùK·¨¨D„-[¶ÈÇ.‘H����'Wœ=x𠈤�Ÿ»víÂúõë±víZlÙ².\0Šÿqtt´J¿mCñõ×_ƒÏçÄh’H$ÈÈÈ€½½=,--±~ýú* Ì547nÜ@||¼Ö†Ã0˜2eŠF´ììl¸¸¸¨l§]»v(-- �°=|øçÏŸÇþýû±iÓ&,\¸ãÇ�G¿~ýЮ];ØÙÙ©l‹Åb�ËåÊ —ÈÈHŒ5 sçÎÅ·ß~‹={öàÌ™3غu+¢££ADðööÆ‚ àççGGG£!²ß‘2wÏê@"‘`ýúõ011�¯¯/þúë/dddÈ'w"‘Hômee†a0vìØ* ˆ-//GŸ>}Àb±°iÓ&½Û‘Åàݽ{ÅÅň‹‹›ÍÆúõëunëÍ›7øé§Ÿ0lØ04 ƒ@hò¯�li…ȨhŒ;¶Â3�¦°çp8þã�?@¤˜ÈàéÓ§prrBtttµ ŸÊÔÈ·mÛfÔ~îÞ½ "ÂîÝ»HSÕ2Ĩ}V'ëׯ‹Åª²,sï; �ˆÐÐPôïß_ïú²Iª&ëׯ_ÃÅÅEk¿ýþýûkµjŠ�jÕ¦&=z„ÐÐPüðø~ý:ˆHc ñ_|�š5kjõ`ýú5êÔ©ƒ€€€ ŠãíþRm|Ô›"5.BV*¿Þþ¼´~³ ‚]ÏFzNÙ. QEý†‘#G‚Ãá 55õêÕ!$$ééé(//‡ƒƒ¦M›Vá3”••!::ÖÖÖòÀÝQ£F�ÏçW™vBdd$ŒÚ‡L=×�º ùùùHLL¡E‹ïÅj·6dee¡oß¾`±XZ¦¦¦àp8˜4i’ƶïß¿•mµjÕJgüÁƒ+´ÃçóáêêŠÈÈH¤¦¦¢S§NrC…Çã©L÷kjj*ÏÅãñ  ajjŠ””üøã�8zô(®]»†üü|�“m¼Í¾}û@DFÏ´¤+7oÞDpp08Ž<Æ#-- ­[·Ã0rý›ùóçƒÇãÁßß_¾ˆc Þ¼yƒ=z€Íf#==½Rm­Zµ OŸ>EÓ¦M! åWmyùò¥4•oM©Î ×±¨Q¨ÓBЧ@=׃ÚÏ5è Ž�ÔÈö­ã�5kÖ ==D„¥K—VêsÈ�y5(›ä=z,K+}#cðôéS‘JÝC!‘H`kk‹ÔÔT¼yóæ>FB¦dlmš…�ÈD||<š5k¦w}Yà¤6©#eBI‡ÒX611Mš4ÑX®víÚ3fŒVcÕ†’’¹aбcGiÒ—¥Ï|;õŸ*† ¡PˆY³fU˜ä¨Úi0Mj|ÎÑNó£W ÁÄYpþîµOrIáPVV†°°0¸»»#??{÷îEË–-ADððð@­Zµ”æOñâêÖ­ ”ï*;"##uÒ'‘ѯ_?…¶¬¬¬Ð­[7´lÙ²BÙ'N M›6Ò‰¡¯/–.]Š3gÎ`ß¾}Ø´i,X€qãÆ!..Ní. ‘4Ëœ££#Ѻuk$$$`̘1˜7o¾ûî;ìÙ³ÿý7rrrä;:2dnm>Ôùó›²²2L˜0DÒfff°³³SXœ¹rå 6l6›�””ƒï~–––¢K—.àr¹Ø¹sg¥Û;v,ÜÜÜàïïœ:uJ§ú‡†‹»X, GŽ1XÚ"Ë–¹oß>£÷%Óqº|ù2ˆH¾[ÿ¿Hyy9–,YRÝCy/øh€|@L�:UîÓ«+V¬—ËÕÊME"‘ I“&¨_¿¾F5ò¾}û¢iÓ¦ÛtppÐJM$ ,X"©ßyaa¡Æò¾¾¾'Ä;vì!%%EAÙ9ü[ÕÆGÀ Ý„c¤êçïžo}‚”‹÷ï߇�� bccå+¸çÎ�CïÞ½Á0 Øl6&Mš„Ç�+ÔsttDpp0^½z…‹/‚ÇãÔ TExxx¥vî´%$$Äh;-/_¾Ä—_~ †aRåÊÛê¸wï(OÛ¬é …3fŒÜ‡=88X£NË“'OÔ¦ì GQQ‘^ãÿôÓOÚsppÀ¤I“àâ⢴Ι3gЩS'‘\|SÙsíáÇ6l˜¼Ý: -- Û·oǪU«0mÚ4$%%¡[·nhÖ¬j×®­2¥°¥¥%|||�ððpÆŒƒ+V ##ÇŽÃõë×ñüùójwÙ“H$raA†aTа¾yóÓ¦M‡ÃAPP�ÁÒ —”” }ûöàóùسg�AÚŒ‰‰ŸÏ‡»»»ÖºP€ô^Ìœ9Sj�ù4M¾­ÞðPv|ñ¨†x|~úé'ƒ|ˆŠŠB÷îÝ•^‰DˆŽŽ†££#ž>}j°>µAosìØ1£÷5uêTØÙÙaË–-Z-"~脇‡£wïÞÕ=Œ÷‚�È„LI\_Ñ´�"00Pëò²¼Õ«W¯V[®OŸ>ZíÌ|ýõ×Z÷¯ ÞÞÞàr¹¨[·®FW™3fÀÌÌLå}|ðàlllЩS'…IÃ%ø«h,Ì�õ§êf|ô,"ðí.�¯5ZBàñ¹JW%ýõWæÏŸ_áüرc!`ff�§°~îÜ9˜™™¡cÇŽ(//Ç¢E‹@Døí·ßô¸ãÚŠµ>|8|}}�ÚÇ©S§àï)S¦(¬ŒW%9992dˆ3f æÏŸ��7"33ÿý7ƒÃá %%ÞÞÞ°±±Që:vçÎ~øá…k"‘QQQprrB÷îÝ•N¸Ì}H®Òp¡ÔøpjGhû'¡Í©Š‡,žÃ>’²B*`Øú¸4“–U}©aû³Šˆk'aá!*?Ä Àf³+ø’¦¥¥�H¤9oÞ<899ÉÝÓdÁ”{÷î•k„ˆD"´hÑÎÎÎ…+Cpp0l´öelÞ¼Ddt�ÒÒR¤¦¦‚ËåÂÏÏÏ ©ºðÏ?ÿàóÏ?�ÇÓÊèàñxøä“O”î¨ >ŽŽŽ*w9Ÿ?ŽÀÀ@•mVú»Ó®];…v}||äq=Úd­»zõ*Àb±P³fM,\¸Pa²ýèÑ#øøøÀÚÚÎÎÎ "´mÛV!ЀÆöíÛ·Ë¿k‰ÏŸ?Ç�7püøqddd`åÊ•HMMERRºv튦M›Â××WžDBÙ¯/š6mŠ®]»")) ©©©X¹r%222püøqܸqCíîŠ2W¶·w½†�@ @tt4†Z¡ýcÇŽáâÅ‹øâ‹/ä;Z·nÝÒxßߥ¨¨‘‘‘055ÅÑ£Gu®¯Œ;v€ÏçËãßtAöL Žsõ7<Þ>‰À4ЇËÕ9›¢2–/_.—«ÖË`ÿþý "Ì›7¯Òýi‹ì·W;½�=¡aÆtQþW‘-¬TfÑæ…�ÈÄ“'O@ôof$]�ùê@÷èÑ#˜™™aäÈ‘*ËÄÇÇ#**Jm;Æ j“fgÏžÅóçÏ6›�+V¨|Y7iÒíÛ·W8ÿÕW_�aŒ3Fí¤.æ˜ÔPpˆ"0,’g¶zû`XÿëQFðêO°¨M` ¥*é&®Ͼ„ØëŠÆG\�a1jwžÊËËѬY3899É·çÏž= ¢±ËÊʰqãF…€õ5kÖÈwPÆŒƒ>}ú M›6 „“““R·:.— ggg¡mÛ¶èÛ·/ÆŽ ­wÂÔl6 ÃÀÏÏ ;v¬|÷fïÞ½8{ö¬ÂîMAAÂÃÃaaaa0£|õêÕ`±Xèܹ3ˆtKCÿèÑ#˜[Z�i0b¶ä IDAToãCv,(Û%þõT:ëÞo¿ý"ÂÍ›7Õ–›8q"Ølv•-v=zD„¬¬¬*éÏÙÙæææ˜0aB•ôW�\½zDÿ¦“þ/óÑù€�H$033 t®+ûÒëÐ6{ölp8•«‚½zõR«-ü;94F@ÝâÅ‹!äîJååå9r$ˆC† Qú’XµjØlv…\îþù'Øl6  r’ o_O¸Å1:¹[érø�'˜š›hœÐ>|øvvvhݺ5D" ”îìÈv>ÞXoݺµü….ËÅ^™™êÀçŸn”¶ßF"‘ÀÚÚºJ3LjD",Y²&&&pssÃÞ½{ ÞÇ“'O0jÔ(­'�ƒƽ{÷*´ckk[áÞÈV‡•M2ŠŠŠÐ¤I•}Ô®][ž»¿²DDD(ý�€½½½Bf7m¸wï† �+++¤¤¤Èwjþùçx{{ÃÍÍ ÙÙÙØ³gš5k"©ËÒ»FW£F��‘‘QÁ-I–¤C_wXm‘í®\¿~ÇŽCFFV¬X�”” :qqqhܸ1ÌÍÍ b|èsXYYÁÛÛfffàr¹øä“Oä»+Û·o—ïÞ¼xñBëE‰D‚©S§‚ˆ0bĹQ¨K–»nŸtÇÒ4+ϰÈ€ÆžÃæ`öìÙúþiHŸáDšæÊËË777£îVË�¥<~ðà�Ñû¤ªðÊÞ]ÿ‹ˆD"˜™™)¸Pÿùh€|`ê•'{ëÖ­ ÒÏ=¥¤¤µjÕRºc={öTÈVó.²ˆ!¶­•õ¡p~Æ àr¹ˆŒŒTâËˡÃÁ²eË………ðôôD£F�àíí­òE{÷î]ùÄ­ù.Ã.XS§NÕê³>^þÿæÍ›+]8xýú5š7o®²///�³t!88X¡Ùï¹Y³føôÓOõnûáÇ5j„B!ÌÌÌ�œœŒÜÜ\J¥�ç!gÏžÕéˆD"ÄÄÄÀÞÞÝ»w×Jòí{ãààPA;bРA�ÀZÿE2}†;wîTIÊxüø±<è;66Vk7†üü|Lž¤ƒÇãÁÅÅ 6„ÐÌÔdˆz¢N�µhAÙ[™®^ƒ,Aµ"´Úa{„Vz%;11!!ªŽ¼Ë¨Q£Àår�* ¹aÃQ•iõíÛDŠ "ÿ«È ¼ªÚaz_ùh€|`|óÍ7`±X:­�K$ØÙÙ©<Ò– .€Åb)²wëÖ mÚ´Q[Wö@Ó¤)¢+»wïitzõê•<«ÕŒ3 ‘HP\\,OYÛ®];•+ˆááጮgÏžÁÓÓD†M°ô'tº©¿ñÑí Á© \Gé“6äææÂÉÉ °µµÕ©nNNåu‰¤Æ2…õÊâíí�qãÆUºmxöìˆÞ_â;v fÍš°°°Àš5kT¦Ñ|ñâRRR`aa¡ÕD‹aôêÕK'-àßÕÓììl888Tp‹{óæ�<ÐWÙQ³fM½²"iƒ›››B]ºtðïïÛоè˜={6lmmÁf³annWWW\¹róæÍCÍš5µžø  6Ì(»»ïrûöm�ÏçcݺuZf²ŒFoOXÅb1ž={†«W¯âÈ‘#X¶l<<<À0 ‚ƒƒÑ©S'„‡‡ÃËË«ZãK*uįހà›�BÏ7ìbÐôÇš��È/áVË«RÓyóæÁÜÜ\k#»¬¬ ÁÁÁðôô4Z&¥•+W‚Ëå¥me„‡‡kLvó¿DVVˆû÷ï¯î¡T+,úÈ…——I$ºwïžÖuž«///²´´üÏ|^U¼'OŠ�h‹··7ݹsGë:.\ "ª´BD4sæL@)))òs4¾t ÉÊʪÒý¿ËéÓ§),,L«1Ã04uêTÚ±ceffR�:u(//�Äb±JƒnóæÍäêêJDÒÏ9tèP:qâD…2IÞ�Cô‹‡.Ï$zuOj`(£ô)Ñ�åD¿øýOÓ�®_½I-Z´Ðå£+ЬY3>|8}ÿý÷:Õ ¤íÛ·Ó�(44”$ }òÉ'A£G�&777šµA™"*ŒÙЈ SSS3f åääдiÓ¨¤¤„Z´hAÝ»w§°°0ºyó&¥§§SPP�ƶÄb1ýðÃ@:t 'NdrX^^NcÇŽ¥¸¸8jÙ²%�={V«ñÈ011!??¿ ˆ2¸\.͘1ƒŽ;&ÿ®nÛ¶MÞ†»»;YXXÐôéÓÉÙٙΞ=K­[·¦ãÇ�“““;vŒž|˜ÒÒÒhÙ²e4yòd4huîÜ™ÂÃÃÉÓÓÓ¸“\k7õ×ü‰î�¬xN"!ºwJúï×ùšû°’öñìÙ3=(ÅÏÏ�ˆˆ®_¿®uOOOZ¿~=ýøã�ôÍ7ßèÝ·*JKKå¿AcsïÞ=zõê…††Ò¹sçH$Òaï…a ¦¿þú«º‡R½TçöËGtG,ƒÏçë„6{ölXXXÌ�zñâÅ`±Xr‘¢Î�;k9r$üýý Ò¿ ±X KKKÌš5Kçºëׯ—û “Š-üäää uæÍ›§²l“&Mpúôi 4BiºTS{œÛ1ðìGðL$¸v"X¸JU“Yl Cøî»ï t7¤ÈôLMMõ –Ý—.]º€ˆð믿âþýû=z´J…uM¸ººj�ÕË,]º|>¿Ò9ú Mnn."##ur#éܹ³ZÅn]ñññaݺu‹Åøì³ÏTömii©s<’>(Ëòõ¶pe�:uª,‹Ú�7`cc#×ßèÔ©Μ9‰D‚ýû÷#::Z§¿_xx8víÚ¥·Šõƒ‡ƒ%K–èý OHH@XX˜Öå_¼x�^½z�ˆ���€ÂÂB\¹rð÷÷ÇãÇ�HÝ{7nÜ 8;;ëäR’žž�‡èèh\¾|§OŸÆîÝ»±aÃÌž=#GŽD||<š6m "i@:‹ÅÒþþÏ{­Þ}êÓo¥®VQ£¥©zgä‚"†�Xéù~?jvÁqD¤Óóð]D"‘ÎïtIIIÏ5yòäJ%­Ñ…ŸþD$÷¼|ùr•ô[Ý$''ÃÅÅ¥º‡Q­|4@>@üüü0bÄ­Ë÷èÑC£R¹.”••Á××-Z´€D"A§N�бcGµuu ŽÖ†ëׯƒˆpðàA�êåççÃÙÙ 4�¦jTòòjÚ´i…ø‡�;wª,ëîî^AOäÅ‹øùçŸ1uêTtèØ�#ÂÖ$­ÛÄ`ܸqذa¬¬¬Œ¦nccKKK4nÜX¯I¸,ÿ~PPìííåŸíÅ‹*ÖÕáä䤗–ƒ¾œ:u Dºi“ׯ_cÁ‚°³³ÓzòÔ±cGüý÷ß‹ŸŸØl6 ‘””¤²sssüùçŸï_Ê&•o?ß:wî¬1ÆÌ�ܹs®®®ppp€——ˆmÚ´Á‰'Hc*”eîRwøûûãûï¿×)kÖ�`kk œ@bccuÒ:¨]»¶N‹6üúë¯ "ìܹ;vD§N�Ô–�‹‹CÛ¶m :†�7‚ˆðâÅ ­ëH$tíÚVVVpqqQ:Y°µµ­ spþüy˜˜˜(-kff&ß Ò–ääd˜˜˜àÑ£G:ÕÓ–Æ�£C‡àr¹*Ó«C"‘ OŸ>àñx°´´Dlll#C•ºª€õš5kÊuJª‚’’p¹\¬X±¢ÊúTFqq1–,Y¢“Bu»vípúôi£ŒG,ÃÂÂ&&&øòË/UŽÁÔÔT>Ù66åååJÇ0vìXy™äää*[�•qçθ¸¸À×׫W¯–×£¢¢pèÐ!ÌŸ?¦¦¦èß¿?¸\®Ö_777|ýõ×jÓ›ŠD"¤¦¦‚a´iÓÆ jó‡‘~iNwîÜ)Ïš•œœ¬òw.‘H°jÕ*˜˜˜ÀÓÓÇ�WZf„ ’fÔfgè»ï¾¡¸¸X«ñÞ¸qCz¿“j§ç±ð (ù*(%GúÿðÁR£dA©VŒÐÄ´ÒÙ¢zôè�æÍ›ëU÷Æ�055E¿~ý*5†·6l Öž:ºw¨(Ò’¤¤¤*é·º¹w^ÿU>Æ€|€x{{ÓíÛ·µ*ûúõkºuë–Aâ?Þ¦}ûöÔ¦M;v,‰Åb­‚Ð rúôiªS§ŽNí~óÍ7´cÇòññ¡þùGi™Õ«W“³³3=~ü˜bcc©¸¸X¡‹Å¢´´4ª_¿¾ÖýçääÐÒ¥KiìØ±äèè¨u=]ðöö¦‚‚Z¸p!-Y²„vîÜ©S}†ahýúõÔ´iS‰D´{÷î ~Æ<�úõëG—.]¢½{÷’………Ú€u±X\eAèDÒø�ÀÀÀj‹)--¥åË—“——�5ŠrssµªGiiij”qýöÛoTTTDÅÅÅôõ×_+-#h÷îÝÔ´iS£Œá]JKK•ž—¡IÑsrr¨¤¤¤JÆD$õ±?zô(½~ýš–.]Jûöí£�;wRQQµlÙ’V¬XA ÃІ (;;›F�M¦¦¦ÛÍÉÉ¡/¿ü’ÜÝÝiÆŒ”Ÿ_1ÎàéÓ§Ô¶m[š9s&͘1ƒ233ÉÖÖ¶ÒŸGöü×ò.'Ož¤~ýúQHHM˜0�,X@Í›7§»wï*”e†’’’èâÅ‹äääDÍ›7§±cÇÊÿnåå唘˜HsçÎ¥E‹ÑÂ… µŠ ËÎÎ&GGG­ãE|||ÈÄÌœ(GË_6—¨¦?‘µ+QÁ?DçÓ‰Âqøšë>ø›ƒ‚*ý|ó÷÷×)ämj×®MkÖ¬¡ï¿ÿ^çØ?UTe È¥K—äïÐ���ÿL`¶››ÙÚÚþ·ã@ªÛúˆî¬X±\.W«U™;Š1|¹¯]»6›�:uêÈÓfª¢Q£Fz)¸kjS—UŸk×®A(¢qãÆ*W(¼½½qíÚ5#44TeÙÅ‹ë<æ¾}ûÂÞÞEEE:×Õ–iÓ¦ÁÞÞ‰ݺuƒ¥¥¥F‘:e ^½zrñ6uzo+¬[[[cÒ¤Iò­å5jh¥ôkH†__ß*í³´´+W®„³³³Ö+â-Z´À±cǰ|ùr˜™™ÁÅÅ»wï6Êøºwï+++•cáñxUžR³ôîñöŽÙü¢êQIÎÊÊ‚³³3êÔ©ƒÇ�C"‘ 33Sž:¸Q£Fعs'Äb1òóó1cÆ Ô¨QCë¿¿©©)F�…àĉprr‚½½=:dðÏR«V-�ôxŽ= SSS4oÞ\þ¼úã�?P«V-XXX`Ë–-*ëŠD",\¸|>uêÔÁÑ£GѶm[p¹\�Sd'$$ ""B§:­Û´»V¸úÝ‹ñW@íg�†ì ?ê¶då r Õ?òÿš!lS+Lœ8Q§±)#==D•Ó…èß¿?LLLtNÏ­Œ^½z!::ºÒíh¢¸¸, ß|ó ©k�Ç{ïâ÷ŒEÛ¶m5ÆÏþ/óÑùÙ·oˆ4k_ÀêÕ«Ááp*Ž’/¾øl6[£K˜——Æ�o°~‹‹‹Ááp°jÕ*­Ê—”” îîîòSeÇW_}˜››« ÖG¬ïüùó`Fë1ëËÖ­[AD(,,DAA¼½½Ñ°aC½¾2�>Ÿ�† jôaW°nnnŽùóçëûqôbóæÍ "<þ¼Jú+**‚»»»ÖÏÈÈH=z´B÷îÝCÛ¶mADèÕ«—R_{}yúô©Ú^.—k4ÃG>T:žyóæÉËÈŒ”Ê*NëË­[·àää???¹èàôéÓamm�¨¨(êÕ«‡´´4ˆD"¼zõ Ë–-Sªo¢ê`³Ùr އåstíÚU®0¯‰ƒB(¢U«Vxýúu…k………èÓ§ˆñññjµ(®^½Š€€ùwL�£&Mš !!A§:;vì�ÞÛ1çT“n�<›�– 6dç j�šW¬�ëÖ§À0ŒAÄ9/]’ªªWÆõñÕ«WðóóCýúõµvWSE\\œ\ Ô˜üý÷ß "y¼™lÁÔ˜"‹ïS¦L�ƒƒƒA…?$>º`}€ÈRñjã†uñâEòóó3Úvjjj*±X,ºvíšÚr………diii°~ÏŸ?O"‘ˆÂ´*?qâDºví•••)Móçàà@Mš4¡C‡Ñ©S§ÈÑÑ‘Ž?®´­èèhZ¹r¥V©ß&99™|||hàÀ�:ÕÓ•·S5[ZZRFF]½z•F�­s[®®®´wï^âp8tîÜ9š>}ºÚònnn´hÑ"zðàÍœ9“öîÝK/_¾¤�7Ò±cÇŒ’³^²ïÅ™3gª¤?sss ÑX.""‚:DG�¥æÍ›W¸æîîN™™™´yófÚ¿?ùùùÑÖ­[ rÏ @‰Dé56›MéééÔ±cÇJ÷£+ÊRðQ…çU�5¨F�FKÅ« :räP‹-(77—$ …B:rä�8q‚œ��éÓO?¥ºuëÒO?ýDIIItûömÚ´i“Vi“Åb1 ³gÏÒðáÃ�â>DçÎ�Óø}ÊÌ̤Ž;Rtt4íÞ½›LLL*\·°° M›6Ñ?ü@¿þú+Ðü¡´-�@@¯^½"SSS@“&M¢Ë—/ë4î»wï’§§§NubccÉÁÉ™˜CsT²ó!qœhNÑÂ2¢I7‰ÚM'âiáê%zCìc‹¨u›¶:�M¾¾¾Äb±ôvÃ"’¦”þñÇ)++‹F�U©ñT•ÈåË—‰aùo$ €8ÎÆ +$$„rssµÖ€ù_ã£òâææFl6[+äÂ… `´±ØØØ�——Ý»w�Ξ=«´ ƒÇ€œ>}š�Vñ{÷K—’���R †ahëÖ­4`À:rämÞ¼™nݺ¥´-Ú¾}»\˜P[8@ ¹sçê\WWdˆLô.00�–/_N«W¯¦~øAçöhÇŽÄb±è«¯¾R9Ùx+++?~<ݽ{—x<½xñ‚¢¢¢(,,Œ~üñG£çz÷öö&kkë*‹yôèñxJDÍþŸÆ�Ó�èĉÔ¢E •Æ+Ã0”��@ׯ_§˜˜JHH :PNNŽÞc[¶líÞ½[é5‹E[·n¥¸¸8½Û¯ ª �·c@ˆ¤~îÕe€I'ˆGŽ¡/^PË–-©¨¨Hî÷ß´iSÚ·o�9s†j×®Mýúõ#___Ú¸q#õìÙ“.]ºD¿üò …‡‡kìíܹ“7nLÑÑÑ´ÿ~ƒíAAATPP@÷ïßWYæçŸ¦.]ºP»víhÇŽj®zõêE/^$WWWŠŒŒ¤ÔÔÔ ¿ësçÎQxx8±X,ºté�9s†D"5jÔˆæÌ™£Õ3 ¸¸˜?~¬ó$ŸÃáТùó2ˆ.é§f=»EsçÌ6Hs|>Ÿ<==+e€Õ«W�–/_Nk×®¥ôôt½Û©ª�K—.‘§§'™™™‘P(¤zõêýgâ"‚ƒƒ‰ˆþ3ŸW�êÛ|ùHeðòòª�)F"‘&&&X¸p¡QÇÒ²eKXXX ""BéVbqq1ˆH­Ï°®ôìÙS+¿à'OžÀÞÞµk×Véþ K[PP.—«ÒEËÒÒRm„*Äb1TÞc`ccƒ¯¾úJþ‰D‚„„˜ššêí#¼nÝ:¬­­QXX¨u=�@€¥K—bïÞ½hÙ²%ˆøúë¯ š:ò]Ú´ictÿÚÇ�cäÈ‘°²²RHÏ‚ÌÌL½ÿî¿üò œ��aff†+Vè¬'±víZ•ß{†a°iÓ&½Æe(Ο?¯tlïêãôïß!!!Õ3È·¸~ý:jÖ¬ ;;;¸ºº*-sáÂtïÞ ÃÀÅÅË—/Gqq1$ Ž?ŽöíÛkíšED ”»wU™Õš‘� IDAT»ÛŽ;”^OKK›ÍF�=tJ\^^Ž3f€Íf£qãÆ¸}û68333„„„Tp%,--Å„ Àb±†7n¨mûêÕ« ";vLëñÈ�H$èÛ  {ÐÔ{Ú¹Uis ?†Å6xjñØØXƒdŠ”H$èÕ«ÌÍÍõŠý€°°0 0 ÒcÑD«V­WáÜ AƒÐ A£÷ý¾àèèˆI“&U÷0ª…�ÈJ›6m4~ËÒþöÛoFKË–-å¾Ðiii ×=z"2¨�¹‡‡‡Æ³b±mÛ¶…½½=<==•¾Ü[µj%±ß¿|>_åD F�ziKlÚ´ DTé\þºŠþýûW8÷òåKøùù¡nݺ ~ÝÚ2bÄy ƒ¶ðx¼ )qÏ�;‡øøx¥ë†$%%¶¶¶F1úrss1fÌ…BXZZbÚ´i(((Àµk×À0 6lˆÝ»w¤ï‚‚ :D„ˆˆ­ HYúRUǺuë*=¶ÊòçŸ*Û»�ÊsçÎ…¹¹ù{á+}íÚ5˜šš‚Çã©�Ó¹zõ*Àb±P³fM,\¸�?– üùúúê$¬çåå…5kÖèÏ'‘Hààà TtÓ¦M`±XèÓ§�Ê4»š8uê<==!Àb±Ð¶m[• 'Ož„��„B!–.]ªÒ°–¥{ðà�^czòä \=j�eçJ¹_yããË“` -Ьy”Á¥Ç�o°tÓ………ðööF£F�PZZªsý€€|þùç‹:ìíí‘’’RáÜÚµkÁf³õ~G}hÄÆÆ¢uëÖÕ=Œjá£ò�2lØ0Ô«WOm™´´4‘AòÈ«#::½zõBçÎ�áææ¦' T–^rssU;o³xñböíÛ‡çÏŸ£aÆ^è5kÖ”•¾|ùR,©ì˜7o °uëV­ÇZ\\ WWWtëÖ­RŸYWd ÂïrõêU˜˜˜ 11Q¯v% """*ìi‚ÍfcõêÕ ç+«°®‰={ö€ˆ $*ãÙ³g?~>>àñx˜5k–ÚUê­[·ªΔ999£®;vLéØ~úé§ ådjÉÆÒÎÑ•ÄÄD°Ùl4hÐ@ãó5++  ›Í›Í�Ç“ïðdggãóÏ?‡@ ÐÚqppÀܹsÕ«¢mÛ¶ ¢±ëׯÃ00`@¥wYfÍš%g÷îÝÕj4½~ý_|ñˆ¤ú*ÙÙÙ edY‘ôU’€ãÇ�ƒasAæÒŒWú‹% kÁâ› IÓfFÉb([0P§£ gÏž�Ç×_~©s]___�•åÉ“' ’* ¿Í¹sç@Døý÷ß�ÚÿûÂôéÓaccó^,®T5 �”Å‹C(ªýÒNœ8ÎÎÎFKTTâãã‘••.—« :'[åÔU°O»wï‘ú,`çÎ�—ËÅèÑ£H'ÞB¡¡¡¡àp8`±Xò,D"‘�:uRù—=ÀKJJäÙ_&L˜ ÕKqÞ¼yàp8z¹nU†ÔÔTÔ¬YSé5ÙŽŒ¾Š³¥¥¥°··Ã08|ø°Æò Ã`íÚµ*¯ë«°®‰gÏž)]Mׇüü|Lš4 fff055ŤI“*•2S_Š‹‹‘œœ,Ÿü*˳}ûv¹pœ²cÒ¤I "¬Y³¦æ`X,0õ;ƒ¶‚&Þ-WTF{Ôc-©f”“«öîÝ«÷8´¡  D†�•”H$ˆ‹‹ƒ••îÝ»§u=;;» 1„Æ`Ñ¢E …JwÝÂÂÂлwo£öÿ¾ óèHOO¯î¡T9 �m‚ó1yòd£�¥Y³fèÓ§é‹ÄÞÞ¾ÂÃC&²¤�Ë€2bbb«òú Aƒ`bb‚7n@"‘ oß¾055UêÞóí·ßª|±{xx¨40233aaa•/þQ£FÁÌÌL>¹¨JdùÔÏŸ?¯ôzqq1àëë«·;Á–-[@DpqqQièˆD"�w[$‰ÁÖ{õê…Æ�ë\¯  Ó¦Mƒ¥¥%„B!ÆŒS-Gu¼yósæÌŸÏ‡——æÎ� �§òûü¶Ëœ¿¿?†^�£—²}ûv¥cU¦‡àãã£16l—/_†­­-‚‚‚ä;pûömB `Æ mäææb„ r¡Ï‘#GÊ”JKKñÍ7ßÀÇÇGkC„Åb¡gÏž8wîœÊqgeeÉ�!ÙnEeŒ�ÂÂB´jÕ <O©N‹H$ÂW_}‡ƒÐÐPdee©moÏž=ptt„••¶lÙ‚  ))I¯±ÉžOD„™3gÊÏ¿|ùkÖ¬AÝúÿºÜ²¦àÚ8ƒkå†#û 1àðøøñÇu ʯ NNNg?þîîî×ús˜››cÑ¢EÇ»$&&ªL,QB²Õ‰››Æ�WÝèr> (%%%`FåÄNæ_™‘‘aô±4mÚ}ûö•ÿýúõ ú7èzݺu`¦R[ü2Äb1,--1kÖ,¥×e™²ê† @Dؼy³BÙ£G�‚Ëåª|™÷èÑCíX®_¿X[[+(gggƒËåVxñU%2÷#uÿ[·nÁÜÜŸ~ú©Þ“�Þ½{ƒˆÐ¬Y3¥;eee "|ÿý÷zµ_Ù€õ¥K—‚Ïçk0ZXXˆ™3gÂÊÊ �#GŽ4J€¼!¹yó¦Bö­w�w'šqqqhÕªU5ŽZÊÛ“Ä·eÉ:vì¨Qð´ª2d6l(ÿÿ¥K—P£F 4lØùùùøé§Ÿ`aaooo\¸pAm[ùùùHMM…••x<’’’ä«Õ"‘hÔ¨‘Ö†¡M›68räˆÂïZ$ÉmLŸ>½RÆÇãÇ� �®q§OŸ†··7ÌÌÌðÝwß©í7??ñññ "p8¤¦¦ê<¶+W®@ €Çã¡cÇŽ*ß=yyy8pà.\ˆÔÔTLŸ>Ë—/Çï¿ÿŽ#GŽ€¨jÝþZ¶l‰®]»¼ÝS§N�Ãá 99Y«òºˆüêKÆ ñÙgŸ)½¶qãFƒ.Z¾ïtíÚµJ”çß7> 0®®®*Ó·ÉÜž4­8‚&MšTj‰D BHHÄb1,XKKKƒô%óW濞““kkktëÖ ‰—.]‚@ ÀÀ�ÊÞ¾}666J_Þ<‰‰‰°°°Ð˜qæùó爉‰›ÍÆŠ+ä/Ö^½zÁÑÑÑ`…º"‘H`ee…9sæ¨-'sÉÐ÷eSRR"W0`€ÂÄB–‚Y™¨ ú¬k«¬ûòåKÌ™3666àñx1b„Ñ© ͱcÇ  UNFG�­ðw™8q¢Ê4²U‰l�àÝC™kà˜1càååU £TdàÀ� «·.\@�5`oo"Â'Ÿ|¢Sºê‚‚Ìž=¶¶¶àp8øì³ÏäÏo‰D‚ƒÊwµ=°sçNˆÅbH$L˜0DTé4§·nÝB­Zµàä䤵çË—/ñÙgŸ�H þnò†w‘}7,,,T¦VFQQ||| P«V-�ý¨B,ÃÅÅ¥Jw ‡???£´½`Á‘FW²òòr)¦Â6$åååòôìÊ�yx¼»°÷¿Êœ9s`aaa�EÚ‰�ÈLTT”ÊUúùóçÃÌ̬J¾Ðááá )_�?._ùž2e ÜÜÜ Ò—leäÝì*"‘‘‘‘puuÅóçÏQTT„Úµk£Aƒ Y¹^¼x�:uê¨|ioÞ¼YžÂX›¤òòrŒ5 D„ÁƒãäÉ“ Ò.îÁ˜«\az›#F€Çãiœ¤«âÂ… ò çw žW¯^�È0�à€îë%%%àr¹Ò¿;¾ùóÿ�½ëŽŽ¢ú¿ofûfÓ{/�$!�P¡$!´ˆz „.½ ‚t„ÐK(Š‚JPD@Š"Ò$`�^BRvîï�œ™o6Ûfwg7„÷œ9vgÞ¼ÝÌμO¹÷.†››$ FŒa¶äguà—_~�J¥Ò{-wíÚUçwÃþŽª+@f±nÝ:�óÖå±aÃÐ4m–¬¨Ð8p Vk_^^"##AA@@€Ù ßgÏž!''žžž i}úôѶOž<‰®]»U9«¼Õ©S©©© ¤BB»víÚfö'NÀÍÍ uêÔ1‰WÀâóÏ?‡““üüü VNœ8B'ñÞ§O£ß)Ã0ÈÌÌ„D"�L&ÓÛ‚Ê£G�†���͆ëÖ­ƒX,¶JË—Z­F»víàææf0¹RPPB¶nÝ*øX°‰D}Fyy9T*Þyç«ÍáEKÈ7æ‹ó²áURƒ1xð`ÄÆÆê|¯W¯^hÒ¤‰M摘˜¨s¡Û­[7x{{cèСhР� ç>|8êÔ©£õú¼yó@Ó4> †aЫW/¨T*-õ©²²2îA¬k«\QŠ��GFFï¹}ðÁ‹ÅpttD�:u,"O �=zðòëxþü9âããdö¢)''‡û+Ë?yò„—L6¦Öããã9Ž‹ÂÂB,]º‹Å2dˆ`" ¶ÂÉ“'áàà ÷Z¦( NNNظq£VÂ*îâ ØË—/×9w] w¬dï… l?Ñ*èׯŸ†ê·ß~ WWWøûûcÓ¦MpvvF||¼AZc(**ÂêÕ«áç犢�™™©ÑÎuéÒ% >ÙÙÙ:ß›1chšF«V­,>OQQ‘9îñãÇ BãÆ�QVV†Ó§OC&“éTNY³f�Þ‡qLLŒV;Êÿý§×DOÊÊÊ�Æ�#::vvvÕºXÚ´i“Im6_ý5!f«ŸäååÁÑÑžžžprrÂü�û÷ïƒbR·¹ÐGXg}O/^ Ð4�ð’-}Áª.é»–ëÖ­ '''Ž¿´wï^øûûC©TbÅŠ\æÓÓÓÓ,‚¯�˜={¶ÎÏ «Çòš,XP 3ÕD�=дiS´jÕ 4McþüùZm:§N�‚““5jdVµ¡*ÊÊʰiÓ&„‡‡ƒ� ¢yeµ°‡bÞ¼ypwwç„(•JŒ=Ú`õ�a,\¸„ §ÒÒR®¢j 4H«òc ܾ}HMMÕH�±ü0}÷KÁ®[ŒI³³Õ Ù³g[e/~üñGBpþüù꞊Íð*©áðððÐ0*xÖ’òÓ…† 4‹ ‚��¢¢¢,Šî»wïÎU#®\¹•JÅù�°íU_|ñ…Îcoß¾�ˆˆ­‡­1n³gÏ`gggÔÏcÞ¼y�H$:•;vÀÎÎÑÑÑ6%:3 “•DnÞ¼ 777´mÛÖ¬ÊÍãÇ�ˆ˜˜®/ý›o¾1ysPVV†?ü�ë—ïÖ­Μ9ƒ ÀÞÞ„ÄÅÅaÛ¶mÕ.` þùç.�×µ¥¦¦¢¸¸íÚµC£F� ŽU\\ŒéÓ§sѶ"Øê‚.N–H$Ò»ÿüùóáìì\-AäƒСCB†¶mÛò>ö×_…ƒƒš6m*hTüÎ÷îÝ‹Æ�ƒ� ÙZ‰D‚Ý»wsïïÙ³III&"ŽŽŽ�H$6iŸ¬Œ[·nqÊW©©©=|víÚÅÍ—¢(¼ù曼=LAÿþýn“ëŽÍ„Û¢jþý÷߃¢( õBv!ü÷ß[圬J$…2c¦Ã/ž¼ÙþøZµjqm•3x3g΄››öîÝ+ˆÃº-qóæM. ÒµµlÙEEEÈËËMÓœ §1¬^½š[¸�;¶Z$yÙ¶›Ê›R©Ô»?k4jë¾ð_ý���pvvÆîݻѱcG“FÇ�‡ƒƒš5k&xT´1ÅÄÄ€¦iBP¿~}lÛ¶M#ésäÈtìØÑ¤@$22[¶l±iÀζ߈D"ÄÄÄè”'½víìíí!‘HЮ];Ì™3‰‘‘‘‚ €|óÍ7 Ä6 l{öì!DðV2}˜>}:D"Ž9 BÑ�b59òõë×C$ñ’Ó~óÍ7áååUc«Ö¦¢N�:×R/^ 5ýúõCãÆ�¹ÿ«Õj›ëgGFFê5kb4McýúõèÛ·/ÜÝÝÍR…ap¶mÛ†iÓ¦A,ãĉxô肃ƒ¯÷†Æú~„††âþýû˜3gúöíËû¦ÆöëóÉ5j�ªeݽ{Í›7‡D"±™GH÷îÝ‘œœlÖ±3gÎMÓf;O›6Mƒwc òpyy96oÞŒ°°0B�‘‘¡3³Æ>ÔÙ •¥ë¶B~~>BCCõ.›5kƳgφ��ïÅ-»ÈËÎΆB¡@PP�NƒOk¢oß¾ZŸÉÙÙYïþ,§ÈVA<Ã0X³f ¤R)¸Ea»víðÚk¯™<Þ±cÇ`oo�¤¤$Aß§OŸ")) *• ‡ÆÏ?ÿŒ´´4BŽM›6i,O� VølÁÁÁX·n�MZ{<Bvî܉ððp(•Jlذ�»g#::R©���œhÁ™3g ‰D‚yóæ 4C¥RaΜ9‚Œg×®]!Æ …BYYš5kÜ¿;wî!Úâ6BaäÈ‘ˆˆˆàµ/;}Í— }ûö5ZÁ~™ð*©á˜={6ÜÝݹÿ³‹ kJèUEýúõµH¯,Ø~Ï­[·âÖ­[P*•fI²¥öO?ý”+3 ƒÎ�;ÃÉÉI¯”*ëûáää¤A>6%£RVV///Œ3Fë½K—.A,óøJJJ0tèPB0fÌ«g§OŸ???³Ž-//G«V­àééiÖ⼤¤õêÕ!½{÷!Â霫ÕjlÛ¶�3”ìСƒA.ˇ©*;k®Ãº-pçÎÔ­[Wï‚°²ºRyy90hÐ Þã———C*•bÕªU¸rå Z¶l Bh¶Œ©`+d•7CòœÅÅÅ (Šw•Ç<}ú=zô!o¼ñ†FkOZZš^‚´1üòË/°··GóæÍ©:=zô‰‰‰pttıcÇ4Þûõ×_Ñ©S'.€Ø°a÷9"""зo_¼ñÆP(¼,X°À"�EEEؾ};&Nœˆ–Í“äwox8¹�&4Æ�‡O>ùƒ !¯½öîÝ»‡ììlÐ4 ™L¦åeóüùs¼ùæ› iñññ¸xñ¢Åó*TŠ¢¢¢ËÔj5 –-[fõs±¸yó&\]]ѱcGŽ÷h­ŠhRRoñ‹›7or�èÿ¬\¹2™Ì*m„/"^ 5ìÍ‚]ˆ°- ÿý÷ŸÍæP¯^=�‹sà7VÉbîܹ�H$&÷—Θ1îîîðööF«V­ V«±bÅ bXaiäÈ‘‰D8pà€I竊qãÆÁÃÃC+`èÒ¥ üýýMÎ ®]»"‘mÚ´Áƒ,š›!|ôÑG D¿ª�1ü÷ßðòòBrr²Yü¶œß©S' 0‰Ä j�1¨Õjlß¾� lÒÓÓy«µ„„„èÕY7ÕaÝÚ¸ôaP� IDATÿ¾AòpLLŒÆ�­ÒU]€C½zõ8¿ †aðÞ{ïqRÊúøTB‚]WÞ‚‚‚ bTAÇRœ;waaa°··Ç矮õ~›6mЭ[7³Ç?zô(T*Z´haÑBïÁƒˆ��…³³³Áü÷ßGff&(Š‚ŸŸV¯^�=zp„þO>ùb±b±˜w boo�I“&tÕÖ‡¼¼?B#""BïÂîÂ… äN²EEE 4¹:%%^^^puuÅ­[·püøqNåEXbúúõëM:—.œ:uJ«,Β錩yèÃÁƒáââ‚Úµk[-ë~äÈb™²Æ�?þš¦1cÆ “�ý믿¸ÅÂ×_�””8::šÜKÍ0 vìØ�ÈÈHB�’’b2yºgÏž튺PÕa½:ë�=â”�ôõäWm÷ËÌÌDýúõM˜ºté‚Ö­[k¼öï¿ÿâµ×^!²¾|”žÌÛ&Ty 7xLzzºU‰©7n„B¡@ƒ ôJ6·lÙÒbžÝ‘#G R©�œœlV‚àîÝ»ˆŒŒ„››oÎßþ‰>}ú€¦iØÛÛs0š¦Ñ¹sgܹsK—.…¯¯/ï@D*•";;›WR‰a¼ûî»°WÚÃE䈉¤;.“ÍùAïv™lÆDÒ."GØÉþ'-Ü A£<‚ÂÂBŒ;„4oÞܨš¡!<{ö …Â&íÍ={ö¬Oˆ &pfŽÖkrhŠ(IÇŽ�z†¼,(,,„H$²™‡[uãURÃÁ½±Yº:˜¤Î"êÔ©£7`#ú?þøƒ{íóÏ?!„·d"[’f«<@@@9IÞª`}?ôUfLÃ0¨[·.§ÏÎ0 š6mj±²×Õ«WQ¯^=888`Ïž=‚̵2Xg]KKØ ,0«/ù�?þ!¡¸rå "##À+sÊ0 ¾þúkÎË£U«Vf÷ÿ¯X±‚wy›�ú5ðäÉ4jÔHïb/""BK·ÿîÝ»�H$X±b…Éç{óÍ7áëë«õ:Ã0ؾ};<<<àèèˆ÷Þ{Ï*Õ aÆq er¹^^^HJJ2xÌØ±c9g{!QTTĵú 8Ð`PмysôéÓÇâsþüóϰ³³C«V­L Bòóó///�{+_\¾|mÛ¶Õhç«ÜvWRR‚>ø€3=ä³Q…ÌÌL½•˜gÏž¡C» ±Á¤=“]�ªÛc² Y$„(e ˆÅbDGGóJÞüðà ‚��Ö¯_oöµÜ¹sg$$$˜u¬)˜3g\\\l^�-))A@@(Š2‹«i æìgÏž]-ßEu!22C† ©îiد�¶¤ÉÊèùùùaêÔ©6�Cxx¸^^{éL"cIIIˆˆˆà•Yfù;vÃ0èØ±#\\\ôJÚþùçŸppp@zzº eäùóçC©T¢  €#Ç ¡;ÿäÉtìØEañâÅ‚Þh†�J¥ÂâÅ‹-G­V#==®®®ÈËËã}KÞ³gÜÝÝÑ©S'äååÁ×× 6ÔK˜f¥Cãââ¸ì¥¥>2ÇŽ!úÅôÁV„õ‚‚4kÖLï/44Tg5"''R©Ô¨‚.°^:úþ<À€¸àÏZí'hß¾=¯}sss!‹õ&ÌÁßÿ�¨¨(( ƒm=,š6m*˜!âO?ý;;;´nÝšWróæM„††Â×××lSÍòòrîïZ«V-H$899aæÌ™-¡jµ;vì@||<ï@„­PV5GLjÒ *‘{ÈB“�ªÛn²v´±Ñ1‡B¡@nn®ÑûæÓ§O1dÈRá"oŽÊÓæÍ›A1éhØVêªÉ[`üøñ ( ]»v|Ñ¿páB888˜4îÞ½{mÖúö" ++Ë&>0/^ /âââ0hÐ ®²uëV›ž?44ToOö–-[@ÑÊŸ>}EaõêÕÇ...†ŸŸ!ÈÏÏÇ’%K@á4î«âÞ½{ A½zõsfqýúuBðÑG!,,Lв°Z­Æ›o¾ Búöí«åän ¢££ɨܿþþþhÒ¤ ïÅßï¿ÿB*Üá¿þúkR!Å|öìY888 mÛ¶A(Ã0Ø·oWhÚ´©ÆBÆC"‘`Íš5foMÂzaa!G×µë\01 ƒ:uêh`š¶…Ó¨¨(A¡P ''Gð–´´´4¼þúë¼ö=tè!:¥YÍÁ_|{{{„……ñ6_KLLDVV– ç€Ã‡C©T¢M›6ùdׯ_Gpp0Ín'***Âk¯½‘H777Lœ8ÿþû/Æ�…B•J…)S¦h,~†Á¡C‡�ššjR �/¾ø�3:ÃŽVà²Æ¢àƒÝŽ’ÕPÒrtÎx Æ !<3>òÌß~û-|||àèèˆ�?þؤ{ËãÇ�Í®6š¶rliÒÅ̘1nnn „n@Ù«W/ÎË‹/X‘mÛ¶ :—ëÖ­ƒX,t ð¢âUò {÷îhÑ¢'](”ê_Ô®]“'OÖù^nn.D"‘ΛüàÁƒáììl0s;zôhÐ4�àà`=z"‘Hï¹JJJмys¸¹¹éUŲl冢(^FJ¦bË–-�ËåHHH0‹Ü© ™™™hÕª• cýòË/‹Å¼IÀ§OŸÖXà2J¥ÿý7¾ÿþ{ˆÅb <jµßÿ=š4iB±ÿ~Á3pqqqZ¾9¦BhÂzqq±Á…]@@®_¿®óX–ãc®ÈÂãÇ�AH…ºœ1`ìØ± ( qqq8{ö¬YçÔ…äädôêÕ‹×¾ÿþû/©àY‚’’Œ3„TVš’°ˆ��œ$üã�?B©T"%%Egrùòeøûû£V­Zfš>xðM›6…B¡À®]»Ð¹sg�{Ã�;w0uêT¨T*( Œ7Në>têÔ)tëÖÍ$ _B¾$³ >Øm;y›K¸}óÍ7pssƒ——¯ªôÇѧOB8î _¤§§m´%%%‰D6s ¯Œ & <<#GŽ„L&ÔS¥~ýúM‹õ!00Ð,õÌšV"›¯¸JMÆ«ä%+µºtéR( «¨WB­Zµ0eÊ�ï-\¸...:ßûï¿ÿ`oo¯×C„Uåð÷÷G�=àç燦M›ê̾3 ƒ�B*•r†JÖÀÊ•+AAff¦ÕÎqòäIøúúÂÇÇ¿þú«ÅãM›6 þþþ̬Ë–-ãø8ÆpòäIò?×ÛgÏž!44 (--ÅÆ�9Ž›1ýöÛo­Öï;räHÁøBÖKJJ8wm]›���ÁÖƒ $$Ä"…///¼õÖ[¼÷?vì""" ‹1cÆ ^†bÆÐ¸qc 8�×¾B´Þ¸q�5‚D"ÁêÕ«M¾Þbbb0lØ0³Ï¯‡‚B¡@ZZšFôâÅ‹ðññAxx¸Ù‰‰¼¼È�7Ž×uùå—_ÂÝÝnnn¼UßÞÿ}Peuß ððp½òöÖÄÈ‘#Åy­„…… Â}+))�X,ƺuëL>¶k×®hÑ¢…Ås¨ xþü9$ Ö®][ÝS±:^ /X©Õ^½zU‹‰Mpp0¦M›¦ó½©S§"88Xï±K–,�H$ÒREÊÏχ»»;Ú¶m ±XŒzõêÁÍÍMoßîâÅ‹AÁÇlþá�É“'ƒ‚™3gZõ<ùùùhÔ¨d2™ÅÞ|ð!‚ˆññ_aqüøqB4²å'Nœ€H$Bÿþý‘œœÌ-TÆ�ou¢!ËyÒçÂ\Âzii)^ýu½ 7OOOƒmF�?†B¡0Û­žErr²É’²ÏŸ?ǬY³ ‘HP·n]=zÔ¢9˜º ���5»jïÞ½pqqA@@€ÙYƨ¨(«9ÌQËчG�!$$qqq3�¬TqåóèÑ£¨U«!¨]»6vîÜ)ˆG\ºt „#  | ëåååœÞ¾®ÍÍÍͨTqnn.hš¶¸UoèСˆŒŒ4ëØ . Q£F ( £F�âíÂ^†¼„t¡wïÞ&÷’—••q<«öíÛ[ä¿cÈ|U8pr¹M›6…‹‹ ¢££Ív¦þé§Ÿàä䄨¨(­kåÖ­[ ĸJÞ³gÏ�““OOOÐ4�>}úhñŸ=z„… ÂÃûŽÅD„þ$� ~$Ë1†tÁ62GÉjì'K0�¤ƒ"æ‘AÜ~³É/¼N’Ð’4Mh�ÈèGRì¤q<{ö,""" —˱víZ£‹g†a°yóf899ÁÇLJó­Ò‡V­ZY=8˜6mšÙ&²– W¯^HNNæþÏz�}ôÑG�ûÉ'Ÿ€b–ºÛ^.ä3ìEÆÐ¡CQ¿~ýꞆÕñ*y �ŸŸ_Qê‰Ì*oZŠÀÀ@LŸ>]ç{UofºÀ’“Ymðœœn‘8räHBô*{�9svvvxýõ×-6š2†!C†ÀÅÅ…Ë¢ÛÂ1›a,]º4M£C‡fëÙëÃÒžùª8uê¤R©ÁLðÏ?ÿÌ}WÇ�ç|êׯ�°°0áéÓ§(--5Û#Ä0 gggÌ™3Çjç*Z|Æ�§“°®V«¹ÀR׿ììÌ«ï:66V?ŒåË—C.—›ýû)//ÇòåË¡T*`²T3`˜G¦ sæÌ�››ïýoß¾�äädÐ4�… Z|¯¨[·.Æ�gÑưzõjBàèèhv»Ï—_~ ™L†–-[ê\ø1 Lš4 0ºð.**ÂêÕ«áççÇÉîV½V‹ŠŠ�››Ëq¤Ž’ÕF[©š“(Oîÿ 9Äý{ ¦·òŽ�Uç©R…+**¨Q£¸€“ÏãÖ­[œ<ñàÁƒõÞo×®] ±XlUYc uÖBçÎ�‘žž®ñÚ Aƒ T*- &OžŒÀÀ@³Že¹jæznÕ4¼÷Þ{ iÚjnô/ ^ /†�\.!Äds6!àïﯷ‡¼]»vÈÈÈ0x<Ã0hÓ¦ BCCqüøqH$Lœ8wîÜ�\.‡ƒƒƒÎ¾úÛ·oÃßß111Vÿ¡þù矠iË–-Cqq1œœœô]ÖÀÞ½{áàà€ºuëjµ@Ã0°³³CNNŽàóÊÍÍ5¨PrøðaBТE RácñùçŸC­VãêÕ«P©T\©ùÉ“'ˆŒŒ„¿¿¿`|]HKKã-ùj)tÖwïÞ­×åÜÁÁ�—L0Kî"¨de.õÝùâÚµkhÓ¦ ©Pr3EØÏÏÏ$ÊgŸ}B¯à�?þ///xyy ¦*fU7ö#GŽÀÞÞ�Édhß¾½É\›uëÖ�¢(tëÖMç±¹¹¹ÈÈÈàž„T˜ûñAII 6lØ€àà`R¡@U•¯¶téRÈ))JÉ÷F� ÒT#©¼ @JÈ~H) V®\©s®»w»;<==yÇ Ã`Æ P©T ÔY•ÍÏÏEQW �åÏ Á4éééèܹ³Æk………ˆˆˆ@ýúõÍ2Í€¶mÛ¢C‡fÏ+,,L/_ôeÙ3gÌnW«Ix€¼$`�k­m”¦ ~~~z9M›6E¿~ýŒŽqþüyÐ4 wwwÄÄÄ ¨¨))) iZg[YQQàãã£á1b-têÔ ÁÁÁ܃<;;AAAV¯ºTÆÅ‹ ggg“U�¢¢¢¬Bše={ö„J¥Òò$8}ú47n BBBB°eË­62–¿Ä@oݺ???DGG[-ó7sæL¸¹¹ÙÔØª*a=** vvvÁ‡J¥â�@9r$¼½½‘ývíšÁGSÀ0 >úè#899ÁÝÝ[·nåõ=»»»›Äeaå� }_jµ ,MÓhÙ²¥ ¤aC–â‡~€��’““QPP€}ûöA&“¡cÇŽ¼‚†a0cÆ B0zôh½÷¨ž={jÆE"“ä?ËÊʰiÓ&ΰ0--�3 íÓ§‰"t 9„2r�È.¼O&AJ$XEÞ0+ùqâ:Ÿ3ÿý÷ÒÓÓ¹ï„Ïg¼ví—8=z´Ö»iÓ¦-¨�¡   Z²þúé.\¸…Ba¶ú›¯¯¯ÞVm>èÝ»7ÇMyÙQZZ ¹\nu¹çêÆ«ä%A­Zµ T*«åÜ>>>xûí·u¾W¿~}¼ñƼƩ[·.·¨˜3g÷P¬š]g=zô€B¡0ê_ Ø,~eö5s]¹ÍÅÇ‘šš ‘Hd’zO—.]ЦM«ÌééÓ§Gƒ PTT„³gÏ¢sçÎ „p�±¾ª Ã0èÒ¥ \\\¸ªÇ¹sçààà€´´4AÍæX°¼"s},Ã0ؽ{7¼¼¼*zäÅbB T*qøða^cÂÑÑÑ¢‡ye”——C&“ ú°»}û6ºvíÊU}Œ™¾988˜T¡+,,4Ø—~ÿþ}´kׄLŸ>]pòª!Þ›%øî»ï —Ë‘’’¢±àýöÛo!•JÑ©S'”””è=¾¬¬ YYY „à�wÞ1x`…;ªn¦u×жmÛ¸;99 #£Ñ“´Ö0 %A ¡ &",&Cõ|�n$­[¶28G†a°jÕ*Èd2Ô¯_çÏŸ7ú¹Ôj5V¬X¹\ŽÐÐP�€wÙ²e�J¥‚ûMU†¿¿¿Í�… yܰ‚&[¶l1iÌh=CMûw°Æ3áEDbb"z÷î]ÝÓ°*^ / üüü`ggW-çöööÆìÙ³u¾g¨=«2>ÿüsn!Ö¾}{Ð4Íe誶†¼ýv…þûöíÛ…˜¾A0 ƒ„„ÄÅÅidÕj5ª…ô_VV†qãÆ�‚ììlƒ S¦L1»ÿ–Î�;™LÆÉ醄„`ãÆ�\{�!ß‚û÷ïÃÛÛ)))Üw|àÀÎ#DèJklekÃN âºÉÊÊMÓX´h233¹ê_‡u¶7\Hgà ˜¥Ïo ;wî„··7ìíí‘››«7/“ÉŒš’VE@@€ÎÅÙ‰'£œsÁ÷¾f víÚ©TŠöíÛëÌÐïÝ»R©:ó………èСÄb1¯¬ù÷߯3y÷ÝwÍþ jµ;wîDLL D„F?’ª3`È#Ÿáy‡È2Œ%]!"4f‘þf }H ’š4ã5ÇóçÏ£~ýú�ÉdXµj¯ûË_ý…F��¦iL�:ÏŸ?Ç?ÿücÖbܤ¦¦ma†Þ†AïÞ½¡R©ð÷ßóóÇ´˜DÎz�>}Úì1jF�…ðððꞆUñ*y À0  (Šª–쀗——^R¯½½½ÑÌæ�7àää„ÌÌLÌ�;„$$$`úôéðððÐx@lÛ¶ „Ì›7OÐÏ l¯¹®>àiÓ¦ÁÙÙYsðá‡B*•"))ɨ0«]o�¹þùçŸèÞ½;(Š!YYYÜuøí·ß‚b4þÝwß�¢ÑǽiÓ&«ý­CBB0vìXÁÇ5†a0|øpP…O>ù„{ýŸþÑKX×…æÍ› f,É¢k×®‚�ÉâÑ£G}qqqèÒ¥‹ ߌi3fŒ`¾E|n�ßôôéS„††¢aƼŸ'«V­‚T*µh}RXXš¦M¾OÔT°YÖ¬°U7^ /®_¿Î=묌°ÐY×3fÀÇÇGÐ1«âàÁƒ �L&âE‹8þJII‰Y½î£F�BݺuT°Õ¤±cÇòª ZOOOÌ�;W�±¶nÝ ‘H„=zðZ íÚµ ‰¯¿þ:JKKqýúu„‡‡ÃÝÝÝdÂr@@€V"„—ÔÝ»wѬY3„Qþ¼�OÉtP„Âq²Ö¬$\hAyïÞ½ðôô„»»;vïÞÍ똳gÏ"** b±)))P(f³�aýúõ‰D6Mr`ÆŒ÷9sæ d2ïöêììlƒrü|Ñ A³9(5 .\!?üðCuOÅjx€¼عs'÷ð0GÓRè#�>zô„|þùçz��3ghšÆÏ?ÿŒ™3g‚¦i®7Y©Tr�M^^<==ѤI“H’–`åÊ• iÚ`¯pÆ ­šー¼<4lØJ¥R¯›/«÷ÏJ[‚Ë—/£_¿~ i¾¾¾X·n÷€,,,Dƒ P§Nà›o¾!„W†±¨¨õêÕCdd$7Ã0ÈÊÊ‚D"ÁÁƒ-ž;‹+V@&“Y}¡ T|†)S¦€ÂK&Û�ÃúäÉ“áââ"øo€Õè·¶ägaa!&Nœš¦Ñ°aCœ>}Ož<1¨¤¦kÖ¬�D"Á©S§ ÞnÖ–ÂÍÍ ,°xœM›6�¦iôë×Ï$žÊ7ß|‰D‚6mÚÀËË !!!f%Ÿ222´…Bagæùóçøâ‹/ЩS'ŽÛD d¯Ñd(é1á>ùÊää Ù Š˜¯Huçδoß„Œ5Š—akII f̘‘HBˆÕȬ‡¾ŠPðððà%±víZB°cÇÜ»wÆ Ó›­oÔ¨/1cÈÊÊ$�© (//‡��–,YRÝS±^ /fÍšwwwˆÅb“û¨…€«««Î‡1Û#»ÿ~�Ç=z"‘³fÍÂþýûAQp°Ù{öìAAA¢¢¢ÈKË]<~ü®®®4h�Áý–.] ©TŠG�Ùd^úPXXˆnݺ�‚·ß~[«×žmÓ[¶l™Ùç¸zõ*‘Hooo¬ZµJçBø¯¿þ‚J¥B¯^½°cÇBx›¨ýþûï�J¥-¥¥¥HMM…£££`âcÇŽ™M¸53gÎ!Ë—/7é8]ë*•Ê*\ VòÓß{¾ÈÈHˆD"®櫯¾2i –à •JeÓ꯳³3ç¾m.6lØŠ¢0xð`³ÔôæÍ›BœœœŒ¶8ê˧«ºñíÕgÇ�ÇðáÃáìì¬s¬/Él.XA2ð&é�oÈ|!«ð5™‡þ$ ¡0…ôäö»G¾Âvò6¶“·Ñ�¤‚"rÉ8l'oã0Y¡€l'Ÿ¡²Ã»©`kÖ¬�\.G½zõpöìY^Ç�8q2™ 4M#''Gp±ƒ{÷îMâ {{{,]ºÔè~¬€ˆJ¥âD5ºwï®Õ� V«[HçææB,ó _$%%¡[·nÕ= «áUò ##mÚ´Axx¸ÍûÚÀÅÅ‹-Òz�•Ê!:¦àôéÓHJJ!^!| ë|ÁV!6oÞ,ؘÆPZZŠyóæA"‘€‚Å‹ó>¶°°�k¹JMMµù‚ÄTÕ®ª`MG�eVðñÙgŸq�—X,F·nÝÌ’dfM`«nÆ®ƒ7n`þüùœü®¾MDh´$ ¹`á2 MH}8{ˆ gb�–¤!>%Ó5‚ŠÈrN%‹"hBsÿ®<ÈhEÇ ib“?».\¸p‘‘‘�J¥X¾|9¯¿Í›o¾ ©T Š¢�””$¨8PQmÓ'òb ˆÅb^•ÚòòrNî¹òV•£qåÊRa,l)ØDɱcÇ,«&`ܸq ©îiX ¯�—AAA˜8q"Ú·ooU]r}З d¥j«f¦X]GGG\¾|IIIðõõÕ R>...�H$ išw®¸yó&är¹Ñ>X)))hÑ¢…u'evîÜ ;;;DEEáŸþá^ïܹ3RRRx�“——‡¡C‡B"‘ÀÝÝ999&õ:�1‚kÅÐå¬jµ-[¶„ŸŸ>|Ƚ.´GH\\œ mú�““Bˆ`‹‡ôôtDGG›DX7>>>¼¯y!±oß> ´1Òå¥K—РAÈårH¥R^ÙZ¡agggv5‘½.&L˜`—måÊ• ( ½{÷FII vìØ±XŒ=z˜„äååé Æ�¯µoAA6n܈–-[r‚|·Ód/.ˆ©Û)ò.!øôÓOMþõ¡¸¸˜SLKK3Ê_;wî©�=†��rssã)&%%¡G�‚Œe eee „àÃ?4ºï¤I“tþ­år¹F²�­‚óáCII ¤RiµtzT>ýôS“x5 ¯�–g±yófŒ=uêÔ±ùu–WÙþÿª™ZVÝaëÖ­˜6mD"‘–ŸFll,5jÄõÀÛ €»»;oõ V­Éšª;¦âܹs ‚»»;÷ÝNž<ÁÁÁF�½uëFŽ ©T WWW¼óÎ;f9Í?þœsJ6Õ,2//NNNZ%}!=BFŽi5™C6Ãýæ›o ²ÉËËEQ\¥�aÝT´lÙ™™™ÏÕT°bl`åçç‡]»véÜ÷³Ï>ƒJ¥Bxx8Î�;‡èèh 2ÄÆ3är¹^çmC`+”Ó§O7ùoU™K4qâD�ìü—_~ ‘H„ž={š„0 777­EdË–-Td¹¿ÿþ{ôíÛJ¥Ò¤ ƒÝ”öˆ¤kñrD7e+!û)ª…¨z‘VáríÛ·^^^pss3È�c¡¡¡ÈÊÊBAA† BRRR�——gñ<† ‚¨¨(‹ÇáÖü��Dù�7ô¶ÝÕ©S‡{fÌž=[Pã×øøx«&Ž^$üý÷ßÛØk:^ 5¬ºÑ… 8©;¡ûP�A_;Kl­Ì¸|ù2ììì0`ÀÎ#¢j{JQQD"hšF³fÍô¶qYgÏžEQ&µæ<}ú … .´âÌLǽ{÷ТE H$¼ÿþûذahšÖû°ÎÏÏÇèÑ£!“ÉàììŒ X\iX¾|9!ÈÈÈ0ùĶqUm9pà$  dÑC�õÓ¨\eï¾û®En]˜={6T* 4^7DX7ÇGƒ ™¯)8}ú4!øí·ßpãÆ Î±ºG�竤¤o¼ñ÷:{]vïÞ½Zª�¦¶ï1 ƒ·Þz „³Ô³JKKѯ_?BôV|¾øâ ˆD"ôêÕˤg@JJŠvÐàà€)S¦ÀÏÏϬ £V­Z˜={6®^½Šß~û "Z„i¤· ÈÒb‘gΜ1ùûä‹»wï¢S§N „`øðáz+ÀS§N…««+÷»Û·o|}}áàà€�7ZtX¾|9är¹Mžë,焯²£¾>B  Â— h…ÀðáÃ9õ»—jµŽŽŽœ(€-Ô?m‰WH «æSVVÆËôÍP©T:Š«W¯†T*åþ_RR‚¸¸8„††ââÅ‹puuE»ví´úlYS¸¸8#** ‰‰‰6ùñµmÛ¡¡¡&g×{ôè�ˆˆˆîQZZÊeä^ýu�-qÿý÷Æ�¹\'''Ì™3G0íqv‘OˆyJ1}úô�ƒƒƒF+Yåq-‘Be%m…èMf±qãFP…Q£F v-”——# ƒÖ»�.ÂúÊ•+µC`�†m�Àøå—_@Èÿ”~†Á'Ÿ|WWW¸ººbùòåˆ��‡T*ÅÚµk5¾×™3gÂËË˦ó𦑛›Ëk_†a0yòdbÏ…EAAÒÒÒ ‘HŒÊ/þùç‰DèÓ§ï¿#;7K7GGGdggãÈ‘#Z×>Ëé[NF |,%ÃA±‰BÃ0ÈÍÍ…B¡@ݺuu<,7áÀ�Ük�=â‚ÆŒŒ ^J€ºÀ¶(^½zÕìÏÀlKÞ¾}ûx3vìX½×ĦM›†1cÆ6Ç?üEY]±¯ºQVV†ßÿuêÔApp0âââ‘È~‘ð*©á8p bccüoA%¤\)ØÙÙéTø™7oÜÝݹÿO™2b±ÇŽC“&Màïï�û÷ïkóøñcxxx€¢(î†ýÃ?èÌ„ VUÇ)OÖïšÙ8K°nÝ:N2’-¯ß½{“&M‚B¡€ƒƒfÍš%¸šÛn7vìXîoo ?~Œ€€4oÞ\kAÅšVšêÁ‚a.à[¶lMÓÈÎÎ6‹X¬ìäøñã¼ö?}ú4zõê‘HgggÞ„uÖ4òÚµk–NÙ$°¿ïª*VwîÜAóæÍAH…4¬®¶¬-[¶€Ó8F–ÂãD†a8•/sZ¶îܹƒ¸¸8¨T*|ÿý÷¼Žùì³Ï ‰Ð·o_£AHII Æ�ovÐ!‰Ð®];lÛ¶Í Ã0œ ÅXÒEdŸY�GÙ‡1¤ !˜6mšM>þù'¢££9ÞQåß8Ã0 Ô©P·sçNxxxÀÕÕÕ,5«7n€b$Ûòóã�?ò>†M,êº>ììì@Áûï¿/ØYÎ�)s¬‰èÙ³§Ö÷ù²)€½ @j86lÈIÅ–””T‹S¨R©Ô™Ýž4ij×®  ¢m†¢(¼óÎ;˜4iÄb1~ùå�ýËÊÊ�šš ‰D‚˜˜�÷ºté___³¸| V«Ñ°aC4nÜØ¬‡Zii)ÜÜÜ0aÂ+ÌN8p„¸¸¸ ;;vvvP©T˜1c†ÕHn|ð!xþü97nŒ€€­ Ó> Š¢´Z܆Á Aƒ ‹52�¦ 55U¯Ñ¤)`Û_ú÷ï/hðT¸”ׯ_ßäëòÆ�&ÖYCS[{ ±Vå~ù²²2L�:„ÄÇÇÃÇÇ*• kÖ¬Ñø~O�:eÓMà«ú %Y¨Õj :„¬_¿Þäó\½zµk׆§§'NŸ>mÒ±Û¶mÓë/Â0 Nž<‰Q£FÁÕÕÕ¬À#22K—.å­ÄöìÙ3Ô«Wîîî�Š¥àY†âx0ä‘e!>  ‘H„#FhUF­�çÏŸc„ ¤‚ãQY‘oܸqðòòÒùû¿{÷.ºt©œzôèaÒý–a›ùAœ={Ö¬ßÓ•+Wààà ÷zùé§Ÿ›cYY”JåKí�€óC«ºñMDÕ¼ @j0t)BcòäÉ6�‡\.ǪU«´^2dâââpïÞ=x{{£uëÖøê«¯@ˆî>æQ£FA$ÁËËKK…åÚµk�Édxë­·¬ò6oÞ BŽ9bö£F�‚···Í[XøâÁƒ¤ÁÌÌL“ƒSñÞ{ï�†a�——§·íΦN� ±XŒS§Ni¼^ZZŠ´´4888˜åòÖ[oÁÝÝÝ¢Lê7ß|±XŒž={ þ·¿sç$‰EFg| ëjµr¹Üd¿KÁö‘³|�üü|´hÑ"‘ï¼óÔj5?~̵6mÚ/^ð?ÒìÇl³ù²Îí7nÔ»Oyy9 Š2Ï ïÔ©Sððð@hh¨Ù)¶"7`À¨Õjܼy‹-BݺuÍ :<==1~üxüþûï&̓aŽÄ~áÂüñÇHˆ�!$ëÈX\"CMjjr—ÈÇXGÆ"R\ „(e ÄÆÆbþüùpssƒX,FVV–M=`€Šj¹··7\]]9¾Ä‘#G@ÑTaÁ0 ¶lÙgggxyy™Tш��EVV– s7„'N€ÂÛ¥2>ûì3½×Ž¡öQsЬY3tïÞ]Ð1_4:tHçwiméx[âURƒÁf+*ßðÚ´iƒ×_ݦó�Éd:eñºuë†Ö­[£S§Npuuʼn'àì쬓�̺ª²Q¿.WäiÓ¦A.— žõ*..F`` :wîlÑ8Ç�!„w«„­ðèÑ#Ìš5 ‰D@ZZW‘²fÃúõëAÓ4÷¶ÍÇTÂ~II 6lˆ:uêhAŸ>}Šèèhøùù™¬¶Å¶Î™»ÈûöÛo!•JÑ¥K³ˆßÆ�““™L&H…Ša=22Æ ³ø\¦€å|=~ü‡‚§§'¼½½qøða­}üñG„††B*•bÞ¼y(--…¯¯/¦OŸn³ù�‚O>ùDçûeee\ œ9ò°û÷ï‡J¥B||¼†4¹9øàƒ@Q|||L–Î%„@&“¡[·nسg�Ù×÷úõëAˆ¦T®Z­F§N�@‘ÿÍÉŽÈIBÐTÔ±’:p©@MÓÈè˜�ï¾ûŽã9n޼Ϟ=CNN<==AÓ4úôé#˜$5Ü»w�s’2dž>} ///£^\ÿþû/ÚµkB²²²xñíúôéƒÆ� 5u½`Emþþûo³Žg“º¶Ï>ûL°yŽ;ö¥öÇ*Ú�u}�,¹ÿeÀ«¤ƒ•­|6l˜Í$ûXH¥R�QyZZ¢££AÁŽ;���€   -Õ¡ýû÷C$a̘1صk!¸~ýºÖxOŸ>…···à™�%K–@$Yä¤ Td¸j×®�þýû 31 ñäÉÌ™3NNN�Ëå?~<†ŽZµjA­Vcúôé „ OŸ>:Í…ÀÚµk!‹5^›>}:hš6¹‡÷Ï?ÿ„\.ÇÈ‘#µÞû÷ßáïï�¨¨(“ȉwïÞ!üd'«âÀ��ËåèØ±£Ud@†Axx8zöì)ø¸úë™™™HNNô|ÆÀªåÍš5 4M£uëÖ »EEE˜:u*D""##�®]»Úl¾lÕE!¼¤¤]ºt�X,6‹K¶yófˆÅb¤§§›ÝnªV«qèÐ! 0*•ʬj»™»eqòäIH¥R�¨QQQZçS(èß¿?²³³±páBìß¿_+øÎÌÌ„§§'ÇW+**ÂêÕ«áç犢�™™ir•Æ\0 ƒwß} …áááèÚµ+Œ&u†Áûï¿•J…€€£¼ÍùóçÃÉÉÉêœ]í�¦ ¨¨‘‘‘:¯%ÁL_v ºŒ>ëÕ«WÝÓ ¯�ŒñãÇkerrr`gggSrž>çÔÈÈHˆD"Œ9cÇŽ…D"Á¯¿þª±ÏÅ‹áèèˆôôtÎYÕÃÃCïüYR³P=¥<€“““Nò 9xûí·¡R©L2ìOŸ>Åüùóáìì ™L†1cÆp&Pëׯ‡H$âT¾¶nÝ ¹\Ž„„AÆ«bõêÕ�Éd¯•••!99ÞÞÞøï¿ÿPRR›œ¹fÍB°gÏ­÷Ο?¤¦¦š¤bb4kY?ýô”J%ÒÒÒðüùs“Žå‹Ÿþ„XWT¢*a½Y³fððð°ÚùtaÅŠÜÃõ­·ÞâÝÆvúôi4lØ„¸¹¹Ùì7Çf&«ftŸ?ŽŽ;B*•ô�ÐÖ pÀ€fyÜ\ºt Ó§OG@@€EAGåÍ5¤ª¸ÿ>‘�� õyøð¡ÎŠ š[·nA¥Ri%"JJJ°aÃÎ{¨S§NZÏkáâÅ‹ˆ‰‰áŒWùöé_¿~-[¶!£F�Òt²f~|97æbçÎ� „àÞ½{f�qñâEŽ|^u‹��ä~É’å…T0|Ñ»wo­ï�¦i“Ô _d¼ @j0Zµj¥ÕnÅÞ@¬}£ª ‘H¤%IYTT™LWWWlݺ„h«ÀÜ¿µjÕB½zõ¸*NJJ :vì¨÷\jµñññˆ‰‰„ì;aÂØÙÙ™-‘X—/_6;£n) °hÑ"¸ººB*•bäÈ‘Z-I,½rfó·ß~ƒ¯¯/¼½½'ó®X±J¥Rëõüü|xzz¢iÓ¦HLL4ØÒR à ==žžž:ÛS<‰D‚¬¬,ÞAxÏž=Mjo8vìT*ZµjeUE’þýû#$$DpR».°„u¹\Búõëg“v–cÇŽÁÉÉÉìÅnii):vìBBBBpèÐ!+ÌR<!šjyEEEHKKƒ\.7™Ä¯V«9çmS�+>|ˆÜÜ\4nÜØ¬ÃÞÞYYYxÿý÷u¾¿`Á“>KåÏ”žžWWW�²ð¬ImÕ�¯Ãõ²eË@QNž<©õ^YY6mÚÄe�ÓÒÒ,âöñEII &NœBy·ƒªÕj¬Zµ …µk×ÆÑ£Gµöù믿¬žŒÀ=«-]àV–_¯º™šìÑÖcÞ¼y�õ"ƒõѪºéãÕ4¼ @j(†�‹‹‹–„èùóçAˆedjSAQ”–Ê˨Q£@HE{�££#ºté¢ñ`-))AóæÍáææÆõß󽩰¾ÆThŒáúõë�J¥˜={¶EãTEbb¢ ÊJ|QXXˆœœ¸»»C"‘`ذazK謤ãÞ½{5^ÏÏÏGbb"d2™ rÇË–-ƒJ¥ÒùÞÂ… 5nªJ¥üñ‡Ñ1oß¾ 777½æ†ìÃ�¯¼îòåË!“ÉðÏ?ÿ૯¾2˜ýûí·ßàè舤¤$«)²Yv…BÁPÙ ¬$®»»;Æa]†ÁŠ+ ‹¨÷á–W”��B*¯BËIWÛ¶Ç’�Ÿ={†–-[B©Tš¼@|þü9zöì Š¢x/¾YdggC*•šxøùùaóæÍ\Õ¨¤¤‰Ä¬Š„.Ì�;Eé *Ù…zÕíܹs¼Æ/++CTTbccõVÌÊË˱mÛ6Žó”œœŒƒZ½; mÛ¶‹ÅpqqÁŽ;xwéÒ%$&&‚¦iLžËã�J¥ðóóCHHˆ†N?Ã0ÈÊÊ‚T*Õ”.^¼Bø‘¸{õêOOO‹ óz÷î ///ÁË™kÖ¬�H$²˜@j EEEX¾|9<==!‹‘��m” ¯V«!“Étª–£ÿþ „`Ê”)‚(:-Y²ŽŽŽZ¯³U·ºuëòZسjjï½÷žÎ÷çÍ›gôwpçÎ,Y²„k�`7}í`¿ÿþ;œ��‘˜˜hu¬ÜÜ\ˆD"«´ÅÂÓ§OAÁ‡~(˜ÃzU<~ü˜“$7næÎ� 777³Çcåƒ÷ìÙƒÜÜ\ØÛÛÃÛÛ›·›³©¸}û6wï}òä š5k{{{“³’Ož6µvíZƒû©Õjìܹ±±± „ qãÆØ»w¯Õ‘={ö€‚6mÚpqå{š!¾Xyy9-Z©TŠzõêqª÷ï߇³³3'¹o-¬[·N‹³g.æÏŸ¯WøÀÙÙÙbÃä)S¦À××W�¹¾¨xöìhšÖúþzõêUÝS¯� ¶„­ëGìããƒ3fØd¬)»ÌÏχ››Ú·oB*ŒªªJ§.Y²„hKg²ü>¦byyyP(fK³þï¾û®YÇÂÝ»w!‹MÎhòEqq1V­ZoooˆD" 8Ð$—ܺuëâ�7ÞÐùÃ0Xºt)hšFûöí-vDç�wàìì¬õ:[ê×µõíÛ—×â ;;J¥R'Q–a <Ø GÈ•+WtžâĉZû^¸pnnnˆ��µjv�ELL :uêdõóèBeU)!Ö+ã÷ßGíÚµáàà€/¿ü0kÖ,‹¬|0+U|óæMtèЄtíÚUðvÔ[·n�� H£F�àèèh²6ÿíÛ· üðÃ&ÏáöíÛxã�7Œnnn=z4N�:¥ñ›b[®FŒÁ½ž••¥s SîyyypssCZZšÞFii©NžJFF†ÉßCvv6yý�†ÁÞ½{¹vµØØXìܹSðÇçÏŸÃÁÁ3gÎÄûï¿¥R‰°°0œ×ÖYukÒ¤‰Y\'_|ñ!¿ñe›ª¼………U÷´Á«¤†bîܹpvvÖ¹PkÞ¼¹àÊ9ú V«AHE;”Z­F›6màííÍK‡ ¢±ÿ×_ Š¢0mÚ4­±†Ž:uêð>÷Ûo¿ ©Tj²²Ã0hÕªêÖ­kéTèС5j$è˜ÏŸ?ǺuëàëëË™Œ™£ß©S'¤§§ÜçÛo¿…££#êÖ­k‘Æþ‚ ôf·GŒ¡w᤯²Q¨]»6t>ÈJKKѶm[888èlí`F§[RR’Æ~ýõ<==iÕ686‡È,Zµjõì}wT×ûþ�-°,KïUª‚ A�(X#ŠQQÁ‚-öÞK{‹XbIÔÄž¨1‰¦�ùhl‰Kl1v� [P©»;Ïï~3awgvfå{|ιç(3·ÌìÌ�û¾÷}Ÿ]ºt1ø»¹ ëÀ¬? …±±±:ïì”)S,¦Ô¬U«–‘MÓøüóÏáåå777lÚ´Éjo&Œ1""îîî8sæŒIõ¯]»†ÐÐPøûû›¤·PPP€�;w¢mÛ¶�J¥�Ëåœ,W -ô¾}ûŒ.ð�ž#F€¦i|øá‡œï¢XÂ�¢¢"ÄÇÇ#((H0‰™¦i6ܯE‹ åÔ†³gÏàé鉌Œ ÑuhšÆ¡C‡Ð¬Y3BP«V-ìܹSÇ`Òh4åÃedd fÍšJ~ïzõêA&“±†1³ˆäÊaaPTT„™3grî"ˆ¥ï5óçχ———UÚŠ��ÅÀ�±~ýzÞy~Ê”)f·Ï¼‡å5O–2339ï�GmEÇ[¤’¢K—.hÞ¼9ç±þýû£~ýúe2FøÓO?Å’%K@Q6oÞ̲`”ö>Ÿ?ŽŽŽHMMåô:Õ­[×$ Û¼¼<™ÊpÉÛrâÚ¹s'±œÆ(ù}üñÇ EQÈÈÈÀµk×ÌnoܸqˆŒŒ<ﯿþBÕªUáææf¶Òø¼yóxY• Ù°ýboo�sçÎ ¶ÿÛo¿A*•bæÌ™œÇ…4BÚ´icзR©d Ó7nÀßßÕ«W·yHƒaÆÁÏÏÏfƱ˜þ™ÅLUXÏËËcCûÞ{ï=Êç±cÇ"::Ú¢1wíÚ-Z´0øûÓ§OÑ«W/R¢\ÍEïm*N�:B\]]Mlûý÷ßáé鉨¨(QzF4MãØ±c¬§Ÿ‚øøx¬[·/^¼Àœ9sØç¶AƒX»v­IFòÇ BFŽÉo.VsÔ¨Q�Ëå¢î›7oEQ,-»¹!ŸLÞ‚9 ÚG�EëÖ­AAµjÕ°e˨ÕjvþnÑ¢~ùå“�W†µŠ™§‹ŠŠ8w˜d2-ZÄ{í�=bwýlö¼Ì‡3f 88ØâvÔj5ìíí±råJÐ4�=zð!æ2­Ñ4 ///›‰W0Ì�ú¥,7l�·H%Exx8ÆŽËyŒ¡`- ƒ‚™3gB&“aܸq¨S§‚‚‚@a½ƒ�=BPPâââ8·žóóóyé|�� å;k4Ô¬YMš4±i2b^^œœœŒÆA ¡¸¸7nDHH(ŠB�=¬ÂLÄÄùŠYà¾xñ­[·†T*ŪU«L¾g³gφŸŸïñ›7oò~`#""DyùfÏž ‰D‚'Np/­¢ß^VVgßçÎ�Ã�;wŒªU«–«\^^\\\0mÚ´2é� +W®„½½½à‚PŒÂúÕ«WQ³fM(•J^–³¡C‡"66Ö¢1OŸ>Ýh×?ü€   (•J,_¾ÜìÅîƒ^¢ÊmªÂù?ü¥R‰† âÙ³gFϽuëfÏžÍöŒ3f8îܹƒiÓ¦±Êðæ€ :t(§·]ŒSˆ™‡MI’îׯŸU4«´Z-Q­Z5³õxN�:…Ž;‚�’0À€�{���€üQôü———¥Rɲˆåçç£zõ꼋ðfÍšáþýûí0Ƴ±bŒ¾×TL˜0Á*á=W®\!„ /ÌÍÍeŸ~óšƒ IDATeýâååev®[Û¶mwó+;�cý²xñâòšÅxk€TBäææ‚‚-[¶pßµk)‘ž¢¢"BàãヺuëbàÀ�P(ìöþõëבŸŸ� ÀÏÏ�—šðøñã „ä‹�¦i$$$ fÍš¢ÔŒ·ÌÚt³\ÈÌÌDxx¸É‹vµZ�Í›7#,, „”0Ñ\ºtÉjã:xð !¢C×Ôj5Æ�BJ*MùÈÏœ9���FÏa¨£¹J·nÝïŸZ­F||<ÂÂÂx“Ã/]º$%%é„¥0 JúeáÂ… CXX˜Éêê–€að2%§ÇÚøé§ŸLŸÂúöíÛ¡R©eôùíß¿?âãã-3sߌ妼zõ #FŒEQhР�ÉïÔ½{÷___B8•Úù°yófH¥RtìØ‘W¯$777nD“&M@�J¥Bff&þ÷¿ÿÙœŠyݺu ¤$9Xÿ]¨]»¶ÑºW®\�££#ÒÓÓMšëÂÃÃysÑLÅÅ‹!•J-f�;þ<5jÄ;Õ«W{÷îu�]»vEݺu”$Ìóic0ÅÍÍÍ@¼òÁƒl>¥±ÂGßk*†n£�ÙA*mhÿñǼ¬mÍš53Ë)0kÖ,xzz–©îYY£  €Õ—Ñÿ6Vv¼5@*!˜­r>µW&†¼,D˜ AHIÈLvv6)aÄb•999èÙ³'ŒÆ»fggC¡P˜•”væÌP%¸{’——‡€€¤¥¥™Ü‡9`47Nž<)ê|�FƒmÛ¶!22„tîÜÙä1`XƒLÝúþôÓOagg‡ÄÄDùNNNFëqÑ÷šŠXì €iÓ¦Áßßßàï«V­âVV–Éý0Œ›Ö­¬Èàb¨ -ïaYŒ·H%ÄêÕ«!—Ëy?œŒRïgŸ}fó±0žÇ´´4¨T*ddd€¦ilÚ´ „”„fBi&»w„³Çѯ_?xxx°ñÄ\X°`är¹ÉIëæB£ÑÀßß#FŒ<ï³Ï>c…³:v숳gÏÚt\r¹Ü,–®ãÇ�ÃÇÇÁÁÁ¢r4¦N�*j¢,..æSWÎìn1ìJ\ضm!:Ú/ŒÁ§¿è*«ç„#6V"–¥¡Õjáàà€ììl“ëÞ¾}›M¸­_¿¾¨„õ®]»¢U«V�ÙÔ9¯  3fÌ€L&C�5Œ²Xýý÷ß BDDîÝ»Çj- 94 «‡4kÖ,/íÅ‹1qâDøùù��úéE‹q†á”%:uêÄùr%ÚÓ4�ž={B¥R™öÙgŸ�"Ú‘!¯_¿FPPÚµkg¶GüæÍ›¬0¦˜…mÛ¶qî¾çææÂÎÎN'¹¾¸¸Ó§O祧-½£¡ï@¼sçÜÝÝÇT£F “‰¤§§£Y³ffÕ-�: 99Ùàï4M#%%…sÜE™œ×ÀPb›Cc]™0hÐ Î{&ÊYÑñÖ©„8p êÔ©côOOOÌ�;צã¸s翈¨¨(Ös³bÅ v»UÌ8BBB0nÜ8³ÇòèÑ#¨T*Œ=šóxNNœœœ0jÔ(³û0&L€§§'çÎŽV«Å®]»ØØàvíÚÝ%²&ªU«Æ{¯„pïÞ=ÄÅÅA©T z0'OžŒððpÑír±RR¢,,RHÓ4RSSáîîn4¦X_#„+Κ¢(›°ÌÃĉáîîn‘ÓZˆ‰‰1`°Â7ß|WWW„††² 1 ë:t@‡,³¯¯//.\¸€zõê�¢(Œ3ÆÀ‹åÊøùù!**Š}¦ÎŸ?BŒï0 k×®�H$¬HkNNV¬X�¸¸8Bàáá�#FàôéÓ&„äÀ�œï+Úµk×.“û2dˆIŒ‡bÁ$›"¨�ÜÜ\,\¸žžž¢ ‘°°0lذÁÀ)ؾ}{NÇÚ‘#G8©ˆõ� ,ÐÙe;v,<==áàà X7++Ë䈂ÔÔT«äTT©R'Nä<öâÅ T©R…sÜ~~~&¥���fÓñW0dúå§Ÿ~*ï¡Y„·H%D½zõ�™™iôœøøx“¥L…Z­FBB;‰ÚÙÙáâÅ‹ìñ÷Þ{„vGÄžøà888 $$Pbœxyy¡V­Z:‹"&Ä•/ÜëåË—hÚ´) vïÞ�={ö C‡�Éd�Ëåèܹ3¾þúk³¦m‰§OŸr¾ ¥)ŽàäÉ“�Ëåf?¯ÑÑÑEPP6lh–Å8œvìØaÍa³¸yó& ¯ÞT`Íš5œ÷…¯øùù!;;÷î݃L&ãUk§i[·nÌïpuuÅ®]»X²– .@£Ñ`ñ⿉ÝL±³³Ã’%KD½OÍš5³Xeûرc¼ïGi,Y²„wÌ‹-ÕWNNúöí {{{´oß¾¾¾•â3EEE°··7¸O¦JT4¼5@*._¾ Bˆ zî¬Y³àëëk“1=z‰Ç‡R©!ÿmÿ~ýuêÔ�££#âââDµ7cÆ x{{[% �Ù‚/�@Û­[7"??ßâöÍÁÂ… !—ËQ§NBмysÑâ^¶“Gd ­‰½{÷ÂÑÑ1118zô(<<<àââ‚ýû÷côèѨQ£†Ií©ÕjV$L¿H¥R=zT°�Q£FÁÞÞÞ¨÷ïÕ«W¨]»6är9g_æ(3›‹6mÚX%ùÓZ`bô�‰]ýüóÏðöö†¿¿¿¨ß¤4ôÖU*•ŽÂúéÓ§„eË–‰…[¶l”J¥EŒQ4McÚ´i ¤$÷hóæÍóÒÉ“'9�ÅŸþ...¬g7 S¦L± uvY‚¡£-]˜¹B£Ñ U«Vðôô4;_…Q°¶e¾Ë¼yó “ɬjÐaãÆ�,;¡˜âåå…ˆˆ4iÒÄhÛ7oÞD||¼`{={ö!ºyb/^äLRÖ/�5•���7Jä!ëÖ­3J\À@«Õrê01ó¼�sŽÉçÓ/?þø£E㯨à"0b˜¬èxk€T2ìØ±„£ÉÖÀ/§¥ÛÐúxùò%‚ƒƒÑ¨Q#DGG#::„”$�iµZ¤¤¤@¥R¡eË–¢K“’’¬”, š7oŽjÕª¡¸¸˜åÐ6•³ßZcùá‡Ø�ªU«Vñ †ÉÇÆ˜ÒøóÏ? ©TÊNމ‰‰‰FEíøððáCøøøp~`üýýEÞý˜˜Þa~~>@Q§wÉ××·LbóïÞ½ Š¢°qãF›÷%Ì–?Wò¿V«Åœ9s@QZ¶liq"qµjÕ©“°^:ÚÙÙ'N¤Cþî»ï@aÃUÌÁÑ£Gáää„úõ볪Õ))):9EŒ‡÷Ê•+xýú56oÞÌæuP…ÔÔTEëÖ­AQ²²²¬ò^EGGcìØ±lÂ:³«ª_d2úôéƒ?ÿü“³�ëׯƒböâøÐ¡CP*•hÞ¼9^¿~ š¦ñÅ_ÀÇÇ...ذahšÆ/¿üBJvȘ±J$T­ZµLž[cïÞ½F±–ÎÕ111èׯŸ•FË�C‡ÙÔù¤Ñh°{÷nÔ®][´âää„©S§u ;vŒ7I›)EaîܹïßéÓ§� 2åÝwßå|V«U«†ñãÇ[t_ѳgOÑç>|˜wžïÔ©¯¨¸¸ … NÇŽ-EÃò¨_¾ýöÛòšÙxk€T2$%%‰ ÉÉÉ!Æ)IMó 2„”$™1: Ý$C9X¿~} 4H°Í«W¯Z´hàÃ�!CØÅAYmÉÒ4�C‡!!!„4hÐû÷ïMÓØ¸q#(Š2[ñÕÚP«ÕFc“MÅÚµk�~ð6lh–§fîܹ¼mΙ3G°þ’%K 苊ŠÐ¡C( 6Ñœ/ïÄÖôŽ�ÁÁÁ8p Mû1���:Šì'Nœ@`` <==­f¸@XX¦L™ÂþŸ™_Œ•Ö­[ãàÁƒ:‹µZ ¹\n’7ƒýû÷C¡P uëÖ¡šÏŸ?Gff&)I2f¨PCCC‘’’‰D‚ÔÔÔ Á^f ܽ{—×$¤„RØ\¼xñE•ÙŽtzz:<==mJWªÕj±oß>Ô«WO´!¢T*1nÜ8Îät $‘;==]°�ÄÄD­¢‚‚Lœ8Q�ê×ÙÙŸ~ú©Î;Œ3f˜}/hš†‹‹‹ÉùssæÌá§±\>®°5???³Ç_‘ÁÐëKÞÇòÆ[¤�¦ixyy‰¢š¤iÎÎÎX¼x±Uú¾víѹsg( vÁݦÈd2 8��Ì"##1aÂÁv7oÞ Š¢ŒÆš›ƒ‡B"‘  LÂh>Œ¦M›‚�’ÄÚï¿ÿ^§ß—/_ÂÞÞ|ð�ÍÇ"U«VÅØ±c­ÒV~~>222Œ~ðMæ§×jµhݺ5¯ðçŸ6Z_£Ñ Y³f Ä‹/ V«Ñ¥KØÙÙé12Þsý"æ¶L¼�“²FË–-‘šš š¦‘�� ™L†„„«+ðÑ/^*F—.uêÔÁöíÛYºÑèèhAÝ}|óÍ7°³³C‡ ŒˆgÏžaõêÕ¨_¿>)Ùé`Â\F� B† Vií¸@Ó4§Þ„B¡Àûï¿BtutLC8róæM+�š�=‚‹‹‹(g˜¥ iû÷ïgPbн½=†Î6¸}ûvÁuNí cÇŽ!<<\p íÛ·g !ooo‹v¸ãµ4ë£h4´hÑ‚s|r¹œ—ž~äÈ‘œu*Š£ÏšP«Õœ»Ã–°Y–7Þ •>!â9Îccc­2ñ¡nݺˆˆˆ@dd$j×®Íz F˜š5kê0¢x{{‹ŠÅ:t(¢££-£>ÞlŠ¢l¢&ÎàèÑ£ìÄ‹o¾ù†×àéÚµ«E,=ÖFÛ¶m­–{”|€/^lÔóæàà`2ÝrNN8Ûóööæõ"2¸wï\\\н{wôèÑ2™ ß|ó�Áع4H7nlò}0]»vE­Zµ*ŒDi >ÑÑÑHMMe�1SuÄÀÃÃe¨Ójµøî»ïXc^laÖÛ·o�¤¤$Ñ}ïÙ³2™ ]ºta篢¢"|ýõ×èܹ3är9d2:tè€={öàùóç:ù)#FŒ¨�¿�¥hÙ²¥Á=vvvMÓ˜?>·©� & 00°LïÙêÕ«AÁ‰'ʤ?&L�oAÍ·È8p §avëÖ-4jÔH°�Þ½{6¼yóǬëîîŽ�;wÂÉÉIG8ÑT0¦9yX>„··7çøÂÂÂ8�”[¶lá<ïÞ½f_CE—qëããSiç ·H%£‘ 6q¸[·nhÑ¢…ÅýNœ8r¹ÉÉÉP©T¸v퀒mâªU«‚‚íÛ·ëÔ±··ÇªU«Û®[·®ÕõJ^¿~ ___¤§§£ZµjhÞ¼¹Õ_Ð'N )) „Ô®]_ýµ`LluE¡Z5j”MÄÀ¾ýö[A¯ÝôéÓMJ=vìo‚e“&MÙ¼ò‰DÂ+žÈÅÈ¢T*­ÂÆ…'Ož@.— 1(OLž<™]x~ýõ×6ëG¥Rqª®Ÿ:u Ý»wLÊ-]ìííáää$j—æ³Ï>ƒT*EÏž=Q\\ŒS§NaĈ¬!‡+Vè$Ùççç³ú ¾¾¾�Éd˜1c†Y9N ½º~aÂ}úmS½åï¼óŽÅ4¯¦B£Ñ ^½zˆ‰‰±Ù»Ì‡ãÇ�ó2=q©TŠÞ½{hY©ÕjÌž=[0É<44”ÓÐ:xð (aŠ¢,Šš˜?>\\\ÌþÞ8p€×�•––fÐî•+Wx¿/ÿÁìºê[2ÊÙo �J„ °^(1˜:u*‚ƒƒ-êóàÁƒ ¤Dç��ÿèÿÔj5Z·nÍ*¡—N„*((![·n5Úv~~>d2Ö®]kÑõ‘••;;;ܹsßÿ=±L·4~ÿýw$''ƒ‚5j`Ïž=¢ÒEEEpww׉w/O|øá‡°³³³IøÈåË—·ÿ;uê„W¯^‰nóƒ>àmkêÔ©¼õáAŠ¢ààà`3Í ++‹³ísçΙ|ýb°téRØÛÛ *¼—5hšÆÇÌÒÛš¹M.—ÍEºuëF�Å›œÎU„Ö�¸´´4,X°€eóóóóÃĉ9�ÏŸ?GBBKXpïÞ=deeA.—#** ÇŽ³Ú=)o04Ìú¥´!ÊÄí‹�÷õê¤R)>þøc[ ›§OŸEQX¾|y™÷ gΜA�5D?¿Ì³©ÿüž8q¡¡¡‚FÌìÙ³ Œ­ÿýýúõìÛÙÙûöí3ë:{ôèañ®1CƒÍUôŸ­V •Jep^ëÖ­-CEÅöíÛ9Ö7e�·H%BZZš Ÿxi0‰Ïæzçrrràëë‹øøxØÙÙé¨áŽ9R©;wî!º1Ÿ�?!DpcD•ø…ÍÁ£G�àè註ߦM„……Yä¥:¼xñ"P¥Jüõ×_¬�^é9F£Ñ`ùòåP*• Ò™+hšfw¼õKûöí ÎgtC„Bw¦M›f5ÁYsðòåKøøøˆ¢‡·bbbУG\½z}úô ©*]Ú´iÊóõíÛááál_qvv6�JÈÒÒÒû ý}(,,„T*ÅG}dñ}ºwï'!QQQ:”å&Là<ÏZW Z­–3¼Y¬æZEÃ[¤’àÍ›7 ( Ÿ|ò‰è:Œq`Oô‡~BàììŒ7n(‰Ñ”J¥5jàþýû D—ê–IL ]éÞ½;L®^½ ©TÊÉ45zôh¨T*Á„eþù'›|Ž­[·Z%~˜¦i„„„TÚU†Šwݺu6ë#-- -[¶ÄúõëyÇ !&…â�>}šW·#>>EEE:ŠÖú´¬“'O†\.çÜy‹ˆˆ0hS"‘ eË–V5”™DEØ JBnQ½zuånkYðáßÿ!»wï6¹®¹ ëvvv˜6mš(…õ#GŽÀÕÕ111,³Î®]»@á¬ëÖ-67¬W¯^ì.IeÂòåËAAµjÕ î]@@€Áù4M³ìXK—.åm711]»vµåÐÁ„°”fÀ+KÌ™3*•ŠuæÝ¸q4:7ê—-Z`РAP©T¸}û6뤧§s:QvîÜÉ»Ð/]† &¨SÄ )˜‹Å7ß|Ã;žÒy£L†~Ùµk—UÆQÑЬY3ƒk­¬;>o �JFðÏ”p%­V …BarÜëŸþ {{{öÃÎ$í^½z...HNNfã í^é �ɹ}û¶Ñ~BBB0nÜ8“Æf )))¨R¥ 'ÿ‹/àáá!(€uùòeÖ3ŠM›6Y=qqÆŒpqq©º OC—.]ØxÜ_ý^^^F?tC† µÐg˜m¸Êرc1{ölB8½÷EEE¨S§¢¢¢�——§sŒ‹J˜¢(Èd2ôíÛ×*“üË—/áàà`2W¾-PPP€¡C‡² æ7oÞèïÑ£‡IaŸ¦Bl¸¦ÌIXRXÿòË/aoo�-Zè,Þ˜üý{Å€¦ilÞ¼nnnðòòÂçŸ^iÇŽƒL&ÃøñãyÙ“¸Dôhšfµt¸@ùùù°³³ELbKÐ4�æÍ›#<<¼\æßË—/ƒbÀÂw÷î]Œ1ööö&ÓÛ¶mƒZ­ÆÜ¹swSªT©Â™§ôèÑ#6¼ØX ÇÑ£Gy¯mëÖ­¼†¹¹7nïx6oÞ à?Q]ýbk õòߎOYQ[[o �J‚uëÖA&“™oý+W®@¡P¼L~€~avS¬!ú´víZH¥Òr窿yó&âââ`oo��?þ˜s‘œ••ooo›��q`üôÓOµS\\Œo¾ùÆ$Æ!¦p%¬3sE÷îÝ rǶmÛBˆà\üèÑ#tëÖ „”„.Ut¦š'OžÀß߉‰‰(..ÆÆ�9ïßoUz×QŸÕìÿû!6¥Dñ†ßq IDAT‹«W¯B.——›€[TT/óãÇ1~üx“êÕ«‡½{÷âäÉ“‚ĉ3gÎ4pªÑ4mTô•)Ea„ œÏþ„ bÕ{UTTÄjðè¥R‰«W¯òêÖ4kÖ̪c©(`v`õKeÜñyk€T <µjÕ2¹^§N��œœ,úüaÆA¡P õë×Gaa!ŠŠŠÐ´iSxzzÄUÞ¾}„èæ0.c¹ _¸Ð.‰Ð4�øøxÄÅÅ iQ«Õ¨Y³&ØÅÖßÿ�^½zA"‘ 00}ô‘Žž‰­P¯^=¤¤¤Ø¼!Œ1Õ«W·Yû;v4ˆýú5oŒ9SBBBxŒäææ"22’³¾½½=6Èf¥t¼þï¿ÿÎÙÞ‚ °`ÁBðé§ŸšCÄÅÅÙÔ能{÷ÂÅÅaaaFwU?ÿüsAg‚%øûï¿Aˆy9Q4MãìÙ³3f «ƒöíÛC©TbÞ¼y&-ä)IXgvÁF�Í9ŸlÞ¼„ÑН¿þ~~~prrºuë*LØ]i0Bp>>>¬aüÇpÞ#c ç4McÊ”) „èì¼Ïž=nnnæÚ§M›;;;üý÷ßeÞ÷ôéÓáææfôùÉÉÉÁÔ©SéÌK—ÚµkcË–-èÛ·¯à¹ñññsfîkР�`ýèèhG^ëÖ­m2¯Ýºu‹7×¥V­ZÈÏÏG«V­ Ž999U˜çÍšàÛñ™8qbyÍd¼5@* 4h€^½z™\oܸqˆˆˆuî¾}ûØ�¸««+nݺš¦1`ÀØÙÙqn¿2/áC‡Ø¿-[¶ *•Êh_3f̰ZB"³ãRz |øùçŸAÁŠ+зo_H¥RøûûcÍš5eÊå¿bÅ Èåòr§`]¹r%ìíím6Q·k×�:u2ø»V«å¥½eŠ£££ þÄùóç¡P(8ëÇÅÅõRÓ4�äädøúú²a%………œù%�:uMÓxï½÷ “ÉÌöØ3‹:sò²¬�ââbv ¿sçÎxùò¥Ñó™¸î“'OÚd</^4¹ý‡béÒ¥¨Y³&)â7nΟ?à¿yŒ¡MOO79aÝßßÛ¶mã\$~òÉ' „˜ôμ|ùƒ !%º5Œ–REÁ´iÓ ‘HtÈ !“É îMZZšÑ¶hšÆ¤I“@a5nZ´hQîFwiäåå!$$IIIewöìY"n×ïÅ‹ÈÊÊ‚«««èg7** #FŒ¬ãää„­[·²×äÈRBZ³fÍAã]*•bæÌ™¬ÃÎÏÏÏfúÌ7ž« <˜ ÿÓ/¥óÙþ¯€¦i¸¹¹\kóæÍË{h&ã­R  Ñh T*9ck…°víZÈd2Á<†þù¨U«ù�ï�Ñ^زe g=†Z°4›Ïûï¿�ÀÀ@£ý%%%YE…»¨¨hÓ¦�¨óoß¾�*Uª° —•+W–K,ðãÇ�­Æb �”ÒìQÖD›6mйsgÞã{öìüÐÍ�;×è"�/T„�’œcxôè<==‘’’ÂöÁåôõõMÓP«ÕhÛ¶-œœœØ¯)6lüýýË\ (yÇ!“ɰlÙ2Q ¯7oÞ€�ÿâ­­�3g΀‚³gÏ=/??Ÿ}ö’““!‘H`oo�´´4|ÿý÷÷²´8£`©Âzé¸öõë׃ó>�¿üò ÂÃÃaoo�… Ú,ÌÓ0»Ñ\ÌpuêÔ1¸'‘‘‘‚mÒ4ÍŠfggÃÁÁÁ¬ï—-Á\wY‡®Ð4�ÐÐP¼÷Þ{¢ëäææbáÂ…ðôôýì³BÁÆJ�=ðòåKìß¿„ü§b~ýúu^:ÜÒ%66–5^ly/‡ Æ;¾¼!-²Ê †è¢tqvv®t;>o �J†ûùçŸ6¹î�@ˆñ%­V‹-ZÀËË 2™ cÇŽPÂBAQ”Qá<†Êµ´çlÔ¨Q¨Q£†Ñþ\\\LVÑå‡~Š¢ÃuîÞ½Ëz¯=<< •JË]-599‰‰‰å:†2YÌî‘9hÕª• ó͹sçlô#×½{wƒ„q[¶l1Z×X^P"CÁ† ”hÜpµÃ|˜_¿~�¸¸8˜ן———ryî8///˜ÌRd3ñLF èòåËÇhšÆ¯¿þŠÀÙÙ„”°ò}üñǼ;7�†Õ1ዳ·4a}ݺu�J¥f_s^^&L˜‰D‚ØØXAãË–¸uë\]]ѱcGNƒ”O¸NŒÖIilBgî]y#%%~~~VMœƒ &ÀÛÛÛdJ÷7oÞ ;;~~~¢Ÿ]Ág=88˜ 1-M2 Ñh°téR^ÖA¦0,^—.]²ö­bQPP€˜˜Îþ¹Ä !&ÉT&ð‰5þõ×_å=4“ðÖ©`hæÌ¡t¼uë1¾Ý»xñbPooo–ÆôÂ… P©Tèܹ³Q«šYÀ9r„ý[ß¾}ѨQ#Þ:L¶¥ú¹¹¹ðôô4Êluÿþ} :r¹žžžXºt)Þ¼yƒI“&ÁÁÁ�]T–JÈòä+/**²©:qË–-C6€’X!:ɸ¸8ƒßk×®]�H$èÓ§¯Ò°£££ ÎÀ�¡T*ñ÷ßóªÍ~ñÅìù�=B•*UP«V-Ñ!Œ¡T–l%�YYY ( ­Zµâd0BRR’Ñ],KpèÐ!Btòunܸ�Y³f±ŠÏ!!!˜9s&®_¿n´­ââbôèÑR©~~~3fŒÑóoݺ…ÌÌL“Dád2ÞyçÈd2‹¯ýôéÓ¨]»6¤R)&OžŒüü|‹Û4ˆ‹‹CXX¯AÇGÊ`Œ ©4hšfßëòfÀâÂÝ»w¡T*1zôè2í—aµ4Wª  ýû÷ýÜBY²˜÷€+ßëÒ¥Kˆ‹‹ì£Aƒ6 /¼ví�A¥KÆ m6–òÄW_}Åy¸4_*2Þ •S¦Láä_Fë�OcáÔ©S�Édˆˆˆ`…Ü?~Œàà`ÄÆÆòRM2`vg~ýõWöo)))FC¢6oÞ Š¢,w›>}:8½Ð<ÀÈ‘#aggwww,\¸P‡Ç<77>>>HOO·h –àÍ›7ptt´ÊN�% ³Y[óæÍE«}aàÀ�F?p>>>8q‒� ©TŠÞ½{C£ÑàÊ•+¼§5jðî %»áááxç�wtBxJ}ZÇË—/ÃÕÕ-[¶E\иqc¼ûî…5�““ƒ¤¤$P…Ù³g›- 9bÄDGG[yt%øá‡@HI¬öúõëÙŪ““ú÷ï�#GŽˆ +(**Bjj*är9¾üòKtèÐA0,óüùóðõõE•*U0nÜ8‹ÖÍAqq1æÍ›;;;DFFê8rl�AƒA¡PÕkbØõ‹)ÆD›6mذW[j™‹%K–@"‘”éN”V«E@@«§e.\¸B¦L™¢#°ii©_¿>§±_\\Œ¬¬,μ ÒÅÁÁ«V­²Y8Ÿƒˆ«X[踢àÞ½{œ×+ät©hxk€T´iÓíÚµ3»~dd$§ÞÆ«W¯�   BðÝwß¡  ñññðóó^Â,ÖJ{Äš5kftÑ9tèP‹4ÿüó0mÚ4�¿?zôcÆŒ�B¡€««+æÍ›Ç»½Î$“ZK8ÉôêÕ QQQåªЪU+›1r5mڢϧi«V­2ê­³³³Ã˜1c —Ë‘––¦“°cÇÞz™™™Fû>yò$›XéááaP¿qãÆu> ;;;A�ÆPß¹s§è{a Ž;†€€xyyY¼Ó¸zõjÈår«ç­¨ÕjVÀÎÞÞ‰­[·ÆŽ;Œ‹ú(((@»ví`ggÇ&÷O˜0aaa¼u~ùå8;;#..�?fÛ1Ga½N�:ؾ}»E �«W¯²ñöC† ±yHÃä%$lûêÕ+Î"¡w‰�Z­†““æÏŸ�Ñ£GƒRîyoú(..FÍš5Ñ Aƒ2�¡1bÍî³  ‰6l€Z­Æ¶mÛL~vùŠJ¥Â¦M›8ç´?þøƒw·¹tiÞ¼¹UX.¹`Êî�� reMÓ,ó_éRÞ!ݦâ­R `)»D›6m8Húöí ¥R ‰D‚I“&�¦iôìÙ …§N�Õ6#¬Tzk4ù·nݺ¼ñÙb1`Àxzz²»(Ož<ÁøñãáààÌž=[p‡E«Õ"..õêÕ+·ä-&ñïÌ™3åÒ? >5kÖ´IÛ‰‰‰èÓ§�Éõ<ÈÉôQºDDDp†­ <˜·Ž…nVV¤R)6lhPW©Tr.£gæÌ™¼íNœ8îîî6gZ£i|ð¤R)yEöL#,j-ÊÒ .`üøñðõõeïíœ9sÌÒEÉËËC«V­ P(tÂL7lØŠ¢8 &víÚ;;;$%%qæ2X3aÝhµZ¬^½*• buÖÃ׿Qçs%2ÇÄĈªË� ;v 4M³ùUëׯ·ä¬f§ÇV¡¨\`´Q~ûí7³Û×q.j4ìÞ½[PkIléÖ­gHVaa!&Mš$¾èää„�7ZÝÁöæÍT¯^]Ô50¹}ÿ×жm[Ñß¨ŠŠ·H£\:þÜTŒ1 )œQóussCBBŠ‹‹1gÎB°{÷nÑm_ºt „6,( é™}ŠÉ“'C©TÂÉÉ 3gΤ- æÃc+–!¨Õjøøø”ëÖéòåËáàà`#¬aÆ‚êó|¸~ý:¢££�~\Z·nmð{p²÷R²%oL M­V#>>ž×øáó¦-\¸„p{”‹ŠŠàååeóßøåË—HII!“&M²Ú‡èþýû Ä2êàÇ�#;;›ý]<==1jÔ(V±Þí�ׯ_£Y³fpttÔ!Áþ{¯/^¼¨ó÷•+W‚¢(dddˆêÓ ëB¸{÷.+¨Ø£GÝlM�îÝ»ÃÏÏO³‹-0fÌøøø”›ç‚¡£´…Rsƒ 0`À³ëÿûï¿h×®�ÑLÕªU Ø?®_¿Î2'q�oì·¾qãìíí9ëòyHišÆàÁƒ!•J±ÿ~�c{öì±ù‡áÌ™3 …««+öíÛgÕ¶iš†££#–.]jR½‚‚ìÞ½íÚµƒT*…��ºté‚}ûö±áJ ¥­©ÒÜÜ\$$$ÀÉÉ ÇŽ38ž““BöìÙÃ^ÃäÉ“AH‰`—©Æö­[·0jÔ(“„ ¹ÖÅ‚¦ilÛ¶ ðððÐÑk04M#%%...‚"�¥±hÑ"Îë3‡wêÔÉ@Ÿ€¦i–RU(¬,‘““777‹wçMÁ Aƒföo;qâD£êã4Mcÿþý¢èt�Š¢0uêTÎ0Cca¯¥‹››vìØaÕÝcìL‰��µZ Ìw[¿lÚ´©¼‡&o � ŽÅ‹C¥RYä�þî»ïئZ­FÆ Yï�?þˆS§NA¡P ==ÝäÉ�I„ûý÷ß”LxR©”w‡#;;ۢݽ{÷‚�O¶R©ÄäÉ“Íb+�»wïB¡P`êÔ©µc.˜0ý…kY�ÉOÐ÷"[õêճإÑhЧO£üøã�:õ¾üòKÞó{ôèaôY_¹r%g=ca+jµíÚµƒJ¥ÒÙ)INNF||¼E÷€4Mcݺu°³³Cݺumƨ‡�ŠÏñãÇ1xð`V­AƒX»v-§ƒ`ÕªU°··7i,/^¼À;ï¼WWWvÞᇛ›æÏŸ�ââböùÉÎÎ6©/}<þ-[¶4iG„óÖŸø@g‘7fÌÞó�…2^ý:Æôm€’° ºuëÂßß÷îÝÃÝ»wAQ”àbͼ~ýšýø6̦ù%={ö4šàxûömÌ™3 ¤$bÚ´i‚¼ôK—.…‹‹‹èq<}ú±±±ðððôÀÇÇÇ#==­[·†\.ÇçŸ.ºc˜5küýýË4aýÛo¿E@@ñᇚì�:räK÷k*˜Ý$ý2lØ0£õ˜ÝñÒ"µ¥¡Õj1xð`PUn!°úÐjµˆ��G�5Ê„=©¨¨®®®˜1c†Yõ:_S¼Ž?Άø™SñÉ'Ÿ°óljj*Ëî—››‹¶áííÍŠ[ †LÇX–äÙTd\ë;ï¼SÞÃ�·HGõêÕ'z!‚¢(Lš4 ‰*• M›6Å¿ÿþ‹ØØX³L0¦âìÙ³ ä¿$ê€�F-.„„„p2rñáÕ«W˜7o\]]YžokM\¥ñæÍ K—.Vo[ æÍ›¥R©C\– Á¤I“¬ÞnLLŒE™?ÿüîîîxç�w�››‹ßÿ]P„«oß¾¬1]TTÄ©lNH ›–1q´®]»Ô¡(J0ɘÑ©Y³&¦L™•JeõßõòåËˆŽŽ†££#>ûì3«¶Í…Ù³gÃËËKço¹¹¹øôÓOÙdmGGGôíÛ¿üò‹èò¼yóàíí-êÜÇ�£fÍšðööÖÔ½{w8::ÂÉÉÉ,W>̘1ÁÁÁÊ6a=77C‡!�5•+WDÕ{øð!|}}ѬY3³Ã<¹:B {š1ï¼V«Å Aƒ@Q¶lÙbÖØ¬�sçÎA"‘`ñâÅeÒ_Ÿ>}Lf…Ôh48{ö,6lØÀ.:«W¯ŽeË–‰nãôéÓlΘ9¥K—.xþü9""" òÛ¾ûî;’ ¾Ò§O“r6ùpöìY£b‰QƒÆàúýìííÍÊ©+¼5@*0òóó!‘H¬Â'''¸ººÂËË ÿüóRRR R©Œ&å á�?þ!ÿÅsÑò2xòä !صk—`»¯_¿ÆÂ… áîî;;; 6 AAAœl^ÖÃ/n‹P$!0‚‘å%$”””„ÔÔT«·[«V-³Õh¯\¹///ÄÆÆê0±¦L™©TŠZµjñ~#&Mš©Tª#kfΜÉ9n¾ù˜¦iøøøˆÎ«Ójµèß¿?$I…Ps~õêüýýÑ©S'›÷UPP•J…¹sçšT�‹¹~ýúf�#)) þþþ‚Šé\¥OŸ>¼†ðîÝ»9u•ôË�!C,Ú)¦i©©©¼í‹qU609Dú¥¢Ñ\óá­R�±~ýzH$Ñt‰|(Í1kÖ,V„êƒ>°xŒŒ‘tþüyÀ�?þBçÂdÆŒðööæ\ŒåååaÙ²eðöö†L&ÃàÁƒq÷î]%I§nnnxëÖ­ƒD"1;Î,[¶ J¥Òê|íQQQ&…Ü% ¸ÀÀ@DEE]<Ò4�Å‹å¢W(lìÿ”)SxÏã ](,,äÜÖ»(éÒ¥ +òùþûï›tôqãÆ ÄÆÆÂÞÞ6l(áÊœœ¬Zµ uëÖe¯½E‹8uê”Õú=z´Ñ¼š[·n!$$¡¡¡¢DÍ8•J…úõëã×_!ÖO(?~<ªV­*xÞóçÏ1þ|›*¬Ÿ={±±±�H$?~¼N¸Ó×_mµyžiK¿ð…ÿ1ĦkhµZôë׉„7‡°,±{÷nBl¦ÇRÝ»w7™­©S§N¿‡“““Ùïf›6mйsgܸqdCžÅ–ÈÈH^ƒôñãÇèØ±£`¡¡¡½¯/_¾äÌÝ#„ÀÇǧÌ(–Ë OŸ>å¼ÖÊB=üÖ©À>|¸ÅŠáýõ “É •JqøðaÈår 0À*‹ˆß~û „6Œ‹ ÕàŠmNJJB‡tþVPP€•+WÂ××R© 0XhLœ8ŽŽŽ…˜‚>}úÀËËË*±©¦àÙ³g�ËåX±bE™ö ü`m®öÈÈH“xîïÞ½‹��DDDˆËwß}'''£¶iÓ¦¡¨¨�7æ<.“ÉtÄ4¼óÎ;çúúú ¾;Ož<�L&ÃÊ•+YSsÑ¿úê+¸¸¸ <<Üæª¾………øòË/Ñ©S'Èd2Èd2¤¤¤à«¯¾B•*UÌJb6†Áƒ#..Žóصk׈ÈÈHQ;-Û·o‡L&CÛ¶mñæÍ–\ÁÚÞÀ1cƘ4/ÛZa]­VcÑ¢EP( áC‡XêÔÔT«ÌówîÜáã„ 8Ï_¿~=¤R©ÉÔæZ­™™™�H$V# 04M£U«V d™²Œ±sóæMÑu¦N�Êù›˜K§Þ¼ysôìÙ“ýÿÝ»w1|øp£ÄúE"‘`Ô¨Qœ9`4McóæÍ¼ôèL¡( ãÆ�3Ûñ:vìXÞ¶[µjUn¢Ã¶Bhh¨ÁuVêá·HFBB‚΄`*  ¥R Bàáá�¦M›Z-I‰aá`B®>þøcPeð’kµZ¸¸¸`Þ¼yìØV¯^ H$dffrrÓß¹sööö˜5k–UÆ+<€£££Éž{k S§N¨W¯^™÷ËäîXÛ[†)S¦ˆ:÷ÁƒGhh¨É¡=W®\dB騱#®]»///Îã���á^Œr³~ßÒ¥Kaoo�çÏŸƒ¦i 2„S#ÄŠ‹‹1nÜ8B�ššŠÿýפ{"4Mã÷ßǰaÃØ\™zõêáÃ?Ô¹­ZµBJJŠUûÎÌÌädù»|ù2|}}ÍæòÃ|B233uìááá?~¼UÇd2®]»V¦ý~ñÅ „?¶ÚV(((° ]lHH¦M›&xÞãÇ�…   Q¡6\`4Œ}|jÔ¨�­[·ò†m%''ëÏ 1�~1FJ”J IDATÓ4ªU«†ôôtöo|!|¸ÿ>5j™L†åË—Û$äêÞ½{X°`ë™ÀäÉ“qùòeÎóG�…¨¨(«Ž¡gÏžBuçÏŸ‡§§'j×®-2¡ÕjY�çôéÓ îSÛ¶mѾ}{«Žyذa'µÚ*a]«Õ¢Q£F ¤$_端¾²hœ¥ñî»ïŒÉÝÝÝàžÓ4�ÀÀ@‹ ?�FƒÞ½{C*•Š"-±%²²² —ËMJ7�:u2I/ˆÉ¿Ô/+W®4«ÿ:uêeÜÌÉÉÁÔ©S¡R©D?³¡¡¡Ø½{·AN%MÓX»v­ Q#•J1cÆ “¦yyyFß+©TÊ)^ZY±xñbÎë4Çx+k¼5@*(®_¿BˆÙì¥Å£²²²X�âE‹¬:ÎcÇŽ�Â.Z¦M›†*Uªœ÷É'Ÿ€¢(�¢(¤§§ jœ={EaݺuV³ $$Äê‹1ý:;;›Í o ‚ƒƒEïVˆEPP�`þÃÓ§OQ³fMøùù‰J26µZ�Q£Fý¨¹»»#33“÷øüùóÙö˜÷P¿ Áarôõ�???6¿‰ ?ýô<==ˆ'NXt?ôñúõklÙ²ï¾û.(Š‚R©D¯^½pàÀAâ…5kÖ@.—[U!55U‡xáÌ™3pssCݺu%………èÙ³'(ŠÂêÕ«9Ï;v,"##­6^Àxؘ©°$a�‹½�É÷[¾|9Ú·oBºvíj•ðÕ &pŽGÿY¾}û61]ðP��J¥øâ‹/,jË ""Íš5³iî³£!6„êõëל¿‡¹ºKÕªUe4¾xñYYY&"U«VŶmÛ h oܸ�ÄÄDÁú111&±uÖ®]Ûh{AAAVuÄ–':Äy�kÖ¬)ï¡ â­RAÁxÂÍIH~òä ¼¼¼ —Ë‘””„‘#GB*•ÂÍÍÍê¡LG�!ÿy쇮æ¤V«ñé§Ÿ²1úiii¼V}$%%¡Zµje"Åæ7(k…ò $$¤L�KãÝwßE×®]­Úf@@€ÑgîÅ‹¨S§¼½½­ºë³aãI”R©”7&_"‘°TÌ4MóRøò%ÊöéÓááᜱÆ�=BHHjÔ¨a�c¤Ñh0sæLP…äädNö/s ÕjqèÐ!ôéÓ‡MÐlÖ¬6mÚdÒÎ"󡳿®`»víØ¤þ“'OÂÅÅñññ‚ùW¹¹¹x÷ÝwagggtqúÑGA*•Z•àÀ�± qÁ ëüñìííÙTš¦ñùçŸÃËË nnnØ´i“EsÊŽ;8ǰwï^�ó6oÞ Š¢xé­M�F£Azz:¤R)öìÙcq{æ‚qèÙ’&øåË—�Ëå&iV0$¥KÓ¦MÍê¿J•*˜>}ºèófʵZ�îÝ»C&“Y5¯ÅÏŸ?7¹oggg“(›{÷î­cˆß¾}ÑÑÑ&=¯~~~ÈÎÎfßûââbÌ™32™Ìh=…B�+Vð:jΜ9#ª¹\n±ÎZE@zzºÁµI$’2ÕŠ2o � ŠÀÀ@“ãñ/\¸À¾¸ãÇ�‡««+Z·nÍnYÎ�;žžžV'ãa¼vívîÜ ö£Ä(3¬b‰�’“'OZu¬æbРApss+Ó˜ÑÉ“'ÃÍÍͪ¡#BØ»w/!V¥;öðð0`ÉËËCÓ¦Máìì\&“ÿ›7oÐ¥K³Œ�3fà‡~Ðù›”È �Ê^9! ƨQ£°}ûvÔ®][´NÈgŸ}BJh'›4ib6rQQöîÝ‹ÔÔTÈårH¥R´oß_|ñ…Õ™PêÖ­‹X­½ªU«B"‘ 99Y�vó·ß~ƒ§§'¢¢¢ŒæÐ”MÓpvv¶jî[FFš4ibµö„`Í„õW¯^aĈ ( 40yç±aÆ}²Ç™]2[äl¨ÕjtëÖ 2™¬ÜvÆW¬XŠ¢l6oåää@"‘ˆÖ¡úè£�8svÏår¹Iy1114h�Îß´Z-²³³ ýâåå…… ²†óÙ³gQ«V-ÁzM›6åÜÑ+**âÔpâ*¡¡¡6c,+dggë\E(Ȉ‘!hX? ÀÚµkmi` Þ Ïž=!Ä$ô¼¼2ézhšÆ™3g0räHV�<66+V¬°©ØVFF†Õ¼ÿûöíEQ Eaa¡Ñs¿ÿþ{(•J4lØÐdG@ýúõѯ_?K†ªƒ=z0w•¬™°~üøqDEEA.—cÖÿcï¼£¢º¾·ÿ™F‘*(¨(6Š]£Æ^‚ˆØQ±F£Iì=šDc7jb¬±%ö(Q“Ø{�%ÖhT4v,`W¤Ã0çýcœ˜Ê0 ßßë³Ö]£÷Ô;̽÷â¥J•2ë�øüùsáìì,lñüò ©©©Â××WäÛN‰&™]~fd/Q¢„Yy;Ì…ƒƒƒ˜;w®HKKmÛ¶¶¶¶âÀ�Vëß\¼xQx{{}I_~†‹ˆå£Ä#û‘€Ÿ‚:iÛÇ�›hÝ 4Ú÷666¢fÍšÚ{&==]´jÕJ8::ê�‡ILLaaa"00PH¥Ragg'ºví*öìÙ“ï»XšŒÍ¹qG R©TtëÖÍhž•J%¦OŸ.Ñ·o_‹¯uêÔ©ÂÝÝÝâùfGHHˆhÞ¼¹Õú³iii¢N�:ÂÕÕUk}6÷ÈžaýÒ¥KâÃ?‰D 6LÄÅʼnzõê ;;;1sæL#úõë§Þmö’‰*Smn"º«=DÖ£›Ñê2¢Â7ˆ…äB&“Š1cƘmaÉÉõk\wìØaÕ¾ÍAß¾}…³³³YI2sЇ @üúë¯fÕwww×ù·hÑ"Gcj¼.Ì�¯Ñ¸�šC’víÚ%<<<,"" #GŽ&åÕAó¶víZ¡R©ÄªU«ôÖ1d™±µµ/^ÌÑ÷ö¶ðàÁQ½J5!“ÈÄXº‹döé%†Ž3,þòÒB!Ï™Û�µñž€¼ƒøä“OÌ�ŠŠÒJܶnÝZ€ñ$innnYò˜ •J%víÚ¥U©hÔ¨‘8zô¨V­êþýû"##CH$’,þ«OŸ>5›ô >\899‰gÏžåx~ù�íÛ· Ƚ¾½¹xðàAž$4†&MšˆÐÐP«õgoo/æÌ™#:uê$ …صk—ÕúÎ ž>}*4h`�|Ø!»(‘#â‘ý8„·p‘)D­5Äǵî)ƒÖY�%$$dÉ’‘‘!Ž9"úô飽¿4h –-[öVý•/]º$‹Ýç4ù€z÷î-”J¥(Z´¨˜D´»k>ñÈ~´ G,'…<ÜÌÎe.RSSEÛ¶m…���ؽ{·Uû6�XÊÁƒ­Þ÷¬Y³„­­­Yyzúöí«÷ïš$MÂUMþ#ShÙ²eŽ­,*•J,X° GyC² …BôìÙStéÒÅdÝÂ… ë D;wî4Ø®G�ïlüN¾K•*%¾úꫵ™;w®Ä°aò\S�²,¤_¾|)5j$ììì¬FX5¤ÉZ±MÁÁÁ¢]»vVé+§¸qã†prr¡¡¡F–¬{yy½!2uŒGçxËɇæèøá^I&Šó°ªÊžjÒ¦Makkkö¾5 R©Dƒ Ä|`õ ©;wîèlæ‚æÞÊ~˜«:)„:h§OŸ6«¾···ÉÍNC¸|ù²Y WÆ™L&š6mšã8( 1Q©TâË/¿4XgÕªU][^cøðáÂNj+þcU®ÉGfÒ]ÒL¸8ºè¨æå5¤¼Ç;…«W¯¢T*©ZµªÑzgÏže„ H$lllðññaíÚµH¥Æÿ¤>>>ܾ}Ûh�#GŽÐ¨Q#š5k†R©dÏž=œ8q‚fÍš!‘H²ÔB •J‰��ÀÕÕU[~æÌj×®­Ó.3þùç6lØÀÔ©S)P €Ñ¹½møûû3`À¦L™ÂÓ§Oó|¼��ìììX¿~}ž�êßG||<ÏŸ?ÏU?BŒ‚Þ½{Ó©S'+Íк�H$ <˜?ÿü¹DBœÅÙªcãHo\™9ã{?~ @zz:»ví"44”"EŠ0pà@\\\ذaàÅ‹¬\¹Òªó°Ê•+Çõë×Í®ÿÃ?0bľþúkæÎ�›åY�ššŠ­­->¤aÆ„‡‡sðàAÚ¶mk•ùÚÛÛãííÍ�7¬Ò_FF2™Ì*}剉‰tèÐ///–/_nô™ZºtiæÏŸOTTÓ¦MÃÓÓÓdÿJ¥’‡ ‘�CIhº޹Ÿ»]!h¼/ƒWÊúè§}oX666üùçŸÒ®];öïßoµ¾�A"‘°dÉîܹÃ�?þhÕ¾K—.MõêÕÙ´i“ɺåË—×{þÚµkf�—’’¨ïSˆ��%22’J•*™ÝfT¬X‘³gÏ2|øp‹Úƒú<|ø0ÏŸ?ÇÛÛ;GmŸ?Ndd$Ó§O§V­Zzë 4ˆ«W¯Z<¿¼À©S§˜?>ß©úàO)«õ+AÂ1„) ô`µ~ÍÁ{òŽáâÅ‹H$£7w||MPP�Á—�æE"‘Hˆ‹‹ÀÅÅ•JÅÙ³g©]»¶Áù!=z4*T W¯^&çÿ.`òäÉ( Æ�—çc9;;Ó¶m[ÂÂÂò|,Pÿ>nݺeqBFŒÁ’%K¨S§ŽUæ–—¸sçR$,¤HŽÚ-ç%R®á„ñÅíl<ÈHIaÊ”)Œ9’âŋӪU+®_¿Î´iÓxðà»wï¦sçΰf͘0aBn.+OàççgÖb^Á”)Søæ›o˜8q"3fÌÈòÉÈÈ ##[[[®]»Fݺu‰��åï¿ÿ¦^½zV�sNI“1¼ "„ ÿþܹs‡�7âäädV;777ÆŽ˽{÷X¾|9åÊ•3o<Ô[ ó†1 öEáÃ%J¶mÝΆ ¬×1oHH@@mÛ¶åÀ�Víß*T¨ÀÈ‘#™6mwîܱjß:t`÷îÝ$''­g ¢ÃÎÎÎdÝ+W®P¹re³ûÏ;;;æÎ�Ëž={Ì"ÇÆ ¨æâܹsØØØ°aÃíz%3’’’èܹ³ÞuÒÛÂ÷Ó¿§‚´4Ãé`´Þ)þ£9£)Hkl ¤ Ýø†¥$“j°MAœ˜­ìÏŽ];¸|ù²µ§nùjoy“:t¨øàƒŒÖiß¾½µ§��]Ž’"ýý÷ßÈ"¿vâÄ  Q¥J±mÛ6³]?4�Ù�?ÖúUjª]»vMFU�41"ïJp²¹X°`��H$yšÅ[Íw”]Ë?/�˜˜(À¸��1¨T*ñÕW_ @,Z´H€ue}ó¢lÉR¢.9r­z€�pA*¼� '¤&ë÷ÇUÈ_»Œ1B\¸pÁè¼fΜ)±téÒ|ú&ÌÃ’%K„\.7š×G¥R‰±cÇ À`\—æ·6qâDQ°`AQ±bE•'s:t¨(W®œUújÒD�ó"?¡‰Ÿùí·ßrÕ�9ëâƒjש�÷#JvA8–FHWD± Dàßz°Ò5f#\+"dvj™^÷Zˆæ'²Ö+ÑF"|Ëùä‰{¡FêÛÎÎ.ßÔöD‰%Dpp°U¯éúõë[¶l1ZO¥R �¿cHHˆÙceŽå4…E‹ ¹\nµ$¹Ïž=­ZµÊ•KVN�Ì÷ïÆ� ÖËžhñmáÞ½{B*‘Š_iÔ�*œÂ…¨Ey±•ïÄßü$¦ñ™°A!ÚRÏhÛ4ˆ¢òBbÀ€ùv]ï È;†† U!ÒÄh|{s*©ûäÉíCíôéÓ¢yóæ•*U›6m2C’Û¶m€xúô©øí·ß¼ ~[½zµ�H$U{ÒÓÓ…¿¿¿hÒ¤É;éën š¹7hÐ Ïçž––&ÜÝÝÅèÑ£ót ¼¼¼Ä¸qã,j;~üxˆùóç‹´´4æËI¾-œ9sFâÞ9" ­pípŸâ"Í ç)%±oß>³æ¥R©ÄÀ�…L&Ë÷[c8|ø°Äõë×õ–«T*1räHˆÙ³gìG# ®P(Dƒ Ì’ô´‹- …Â*²Å 6=zô°Â¬ÌÃ?ÿü#lll¬žÕXÀz›j²àÝ áÙQk1¢ÙQDãíÏFj2p8«ü®WK5A©:C]÷ãˆj? >>˜•€4ûK=Ff1k"99Y´hÑBØÙÙåI€¸>h¤ð7mÚdÕ~+T¨`Öo­F�:ÃòåË›=ÎÖ­[`–eÿþýE¥J•ÌîÛh$Êíììò�„ 6L$%% !„4h�ÁzææFÉK̘1C8Ê ˆxv%cé.$HÄþÈr~(!B‚DIJÃhûq|"œœó,ÉfvÈy�wB.]ºDóæÍõ–ß¹s‡¾}û"‘HHJJbòäÉ„††æh ìíí3f ׯ_Çßߟ?þøƒ:˜ŒÑ•J¨]°bcc‘ËåÚ8Ž3gÎP®\9½&N€Õ«WsõêUÖ¬YcÔŸù]„\.gîܹ4oÞœ�7æiŒƒB¡ K—.¬[·Ž3fä¹û‡���E.XÓ¦McêÔ©Ìœ9“¡C‡jýŠ-ù]å'Î�;‡\"¥¶0íÿ¬Aq'‰«”a,æÅËTÁ©œ‹/h²¾D"ÑúñwêÔ‰cÇŽQ½zu³ç˜Wиñ\¿~??¿,e*•Š!C†°xñb.\È Aƒ ö³|ùr>üðCöïßo–û‡¥ðóó#==�»wïâë뛫¾òÓ+::šŽ;RµjUfÏžmÕ¾k֬Ɇ ˜1cóæÍcùòå$¥$áÙœ?Pשµì<²¶+Û|àÊt(ÒD}îÆx´šŸ„B™Üê‹èŽëÑ –“³jÕ*š4ibÕkµ{ÏæÍ›i×®­[·fçÎ�4mÚÔêãdFÛ¶miÕªÆ #00Ð,whsСCæÏŸOZZšQ£òåËsþüù,çnݺEzz: …Âä8,sb@ÂÃÃså~¥‰„ШQ#ºuëÆ¥K—ŒÖ—J¥Úµ‡¥˜?>»víbÑ¢E|ýõ×=zTë^–_|ñÅŠ£dÉ’õ¦=III\½z•'Ož T*±µµ¥T©R”,Y@[O�J¥ÊòsÏeþÿ®�»øP|€#Æÿ>2ÔÏ%'²ÆÒ:Q)¤&¢.S•ï×róæMƒ®}ÖÄ{òˉ'8þ<ááἌ�C"‘`gkC\\$$$dyˆ¥§§™˜aâ IDATDzz:r¹œN�:1~üø�{áÂ&NœHrr2OžùDoÛŒŒ  Ä/¿üÂðáÙ7o^žw ¼¼¼pppàÆ�´jÕ*W}Y›€ddd�––Fjjj–Ïyóæ±gÏæÍ›Çýû÷¹yó¦Þz™?�•™úLLL$-%7ûAiq}î�u#1 ïCñ6pa,D¬€Ô5I©ð”é©Û‡[ 8µð.¯^½ÂÙÙºªsd&!-[¶d÷îÝ4jÔ(OÆ(UªãÇ�güøñôêÕËb•¨Ì¨T©>>>lÞ¼9ÇÔ�èæ�äädär9r¹ñ%áýû÷‰��·º$3lmm™={6Í›7§W¯^àÕ«WŒ=š¥K—"w+�²é·P­ J÷2êí ×P¨Tðü&ÉçcéoËX²d !!!lÚ´ ™L†‡‡[·n5ë¥}åÊ&OžÌÆ�)S¦ «W¯¦{÷îŒ7ŽßÿÝ*×–Ù+..N»0ºpáJ¥R¯ÖÓ§Oùá‡1„ÜÈ•Zg?ãåÿ ‚Œd¨ø­úÿIjå^îü Neá£`ã·–ÂÉOA•>ÙŒaί×Ä[¶l¡lÙ²f»¢XâÂÒ½{w?~L`` £F�ÂÏÏ/×㪓žžŽ››­Zµ¢OŸ>@îÝqœ�� C&“!‘HôÖyùò¥Þ¿Õ¤I“øã�?L^KDDBZµjetNyö)S¦0cÆ ³¯Esh”ï4ÿÎ|>s½Ìçår9J¥þ•|jj*4ø[•@iôÅ•º ¶8½vUR!¸C:çIa+ñlä*²0$2�ÙC•ÉP¦7ØêÙwR8�}(ú±štÇ^�ÿfÂݵ¼a>¹„-¦U¾þã.MIeʰˆa¸ãÌY®3‘ÕÄ’@ßšGbCZZZî'lÞ�<ƹsçhÒ�'Ï£¡Ã"”uú‚ÌÈ×.•‚g9žŠ2p<›Ï¦­ß‚T†\.g×®])b\*ôÚµkLž<™?þøƒ’%K²bÅ >ùä­/hÙ²e‰ŒŒ4éWj2»`ÅÆÆj- gΜÁÎÎNï.Д)S�Ëå|û­é›áãÇ�gÍš5Œ3†5kÖäÙ8Ý»wgòäÉìØ±#DZ?9Af)^cdõêÕôë×�¡C‡2sæLk‰µ, )))ÅÝÝ]§oxóîV©T$''#‘HxõêUÒ��<}ú©TÊË—/µdBß¡T*³üÛ�ÈKHlø Op@Šî³RŠlðÁ†Î83OæÃ�D#EM^Š@�P {‹®¡Þ(Ý]MÂSŸƒ0¾Ï`Ædt5øš¥Ø¢`? x½¼¯�?…q¥ßÑ‹æ4ãCããˆÔ|ÛÜzO@ò'Ož¤Yó R •G5ê¸çp×TnMGC…Ö°²=òäÇF«ß¼y“)S¦°nÝ:J”(Á/¿üB¯^½tH†��*•Š{÷îñÁäðª²Â� Ö™3g¨Q£†NÜ�7øå—_˜1cnnn¹û]�‹‹ Ó¦M£oß¾ 4ÈhÞ“ÜÀ××—Úµk–/äöíÛsx¬[·Ž>}úЯ_?æÍ›§w!lŽD¥RñìÙ3£Ö‹üHøx Ó~Ä/PòŒ fÃ,btÊ r“v8±™âû—¤RßßrßÚúõë³fÍ:wîL©R¥Þš c¹r刉‰¡U«V?~œ-[¶Ð²eK½u£¢¢ âéÓ§üõ×_Úû#5UýBÍþ²KNNþŸwÍü_F†�[!|2\™U§ƒßÀ7çmÜÕŸ+¿!k®n— ¶îoΫ^¯¥6mÚDùòå-^ìç¤]JJ !!!œ;wŽ�;wR¿~}�zÖÂ'Ÿ|ž={¸|ù2îîî&ë !HMM%99Y{$%%i?;uꄯ¯/=zôÈR–ù¸yó¦6° DGGëô›’’¢7äñãÇͺ>k%õÌ+H€1¸3�BØæ Ý�'r~ÀƒŽ8Ñ�‡DÚ¤SejÎÈGfk-/ÂÁ�áÕuËIˆ׉4YïQT¤´–|hPƒ´åÆÈsb‰QÆi×y�÷$�póæMš·&¥H5TŸïÛ\¨bx–ƒ¡'HYÚŒ¦Í¹xþÅ‹¿Yäܾ}›©S§F±bÅX¼x1½{÷6Èb3/0sK@2ïrÇÅÅi<Ïœ9CHHˆNý±cÇâååÅ�!Cr5>}ú°hÑ"† ÆÉ“'ó,î¡G�Œ1‚/^˜t�²-Z”Û·oë-ß´i={ö¤W¯^,^¼Øà‹Û ˆ———AßüÄ”Ä��†ÉRQäü…7’L;iÁ÷Ds”$öâM!#í“Pq]¤RùÕ«\Í544”ÈÈHF�MÉ’%ùâ‹/rÕŸ%Ð$@=~ü8;vì Y³fÚ2�ËSjj*—.]¢cÇŽÈårÂÂÂpppàüù󤥥qæÌþþûoþûï?­µ"&F—ܽGþ!á68dãÐá“ÕG•ÉPñ›¬eNeAîð:ø6;4ç²="^½ÙkÒ¤  æ<–Ê888°{÷nZµjE›6mØ»w¯Õ^j0kÖ,vîÜÉ7ß|òeËtÊ/_¾Lpp°–H"™±gÏöìÙ“£y$&&ž£6ÿë�¿QŒ®èWß45±çJÓ<#’£ÍR8.îÙ{B³¿`omHŒ4LBlll²¶¶¶ØØØ`ggǃ8ûÒt"ÕR!œ;¤’–ÅeëÿPãIÏs ß„�Þ�<@FFŸôú”»Â¨>Û‘;ò¡�ƒ_ì%nvU>ÿ¢/{vïâîÝ»|÷Ýw¬Y³æÏŸÏçŸnRÉÂËË [[["""r=­ìWWWž={ƽ{÷t,'OždóæÍ¬Y³&ÏUoò2™ŒùóçÓ¸qcÖ­[G�=òdœÎ�;3|øpþøãhº�…0$Å»}ûvºtéBçÎ�Y¾|¹QraŽÄÓÓó­‰DB±bÅðððàÂ… ì!�îF^Z¶Hi„®ûÔ*â�!¡¡ …‘$¢6oÞÌÕ«Wñ÷÷·xî#GŽ$""‚þýûãääDƒ ¬ê²dì3%%E€nggGïÞ½ º§Â³ñ›~.OU“�Jã ’áE©J´…û!ù±:ã9¨ ÉÃ=j‚b›ÍØsœ\ò] B#èвeK‚‚‚Ø·ouëÖµú8žžžLŸ>��Ò»wo�1¤R)<0Ðú=rƒ¥ÉùÐÀû2¼ù(᧺¤x¤æ‹f�]a¨¿öÕ�!C†0dÈìííµ‡���Ñ{aÞ¼y|3ò+bÄ+Ü0,Ú0‚Ž´æ[šó#è„Nœå:“ù• ”¢ƽ3pŽB®î”)SƲ Í!Þ�<ÀO?ýÄÙ3§að1°³¢Â‡ca”�–²oY+7nÌÉ“'qwwgöìÙôíÛ×ìÀd©TJ™2e îpçÙ󀸸¸pöìY€,DÁèÑ£©Zµ*Ý»wÏõ¸ï"5jDÇŽùúë¯i×®�Õ´à3£pá–§Ä××—Ë—/g9·wï^:uêD»víøõ×_M—k~ÉÉÉ\¾|Y¯‹ÕÍ›7óìœ��ñööÎr”(QBûo///­‹àÇ�›°äïstÏÈù‹K‚ί^,–ÄR´°)éé4lØ�–-[¢T*yõê•Ö×Û\•£ôô7R©]»vÍñœe2™Ù S[[[ìííquuE"‘pøðaÒÒÒppp \¹ré´¹|ù2?ÿü3åÊ•cܸq¸¹¹éôyäÈÌÕ«W)R¤ˆö¼J¥z«ö9�\.7û;4öÏêÕ«ñ÷÷§G�ØÙÙiË-íÓ”¢‘>ÔoX�û�”š@^� —&B± ðj ÏOg­_ø#õgå)ðp7n•&‚Ân/W«5Ȧw"<>ñ±‰øûû³dÉ’<“uÕvíÚEpp0AAAìß¿Ÿ�>úÈ`ýôôtw'CnP™Ëñôô¤M›6k]¬’’’ �¿‡aØÙÙiì ÀÆÆ†Ç�k¿KÐG>Ãz �®Èø-£µ/ßã¿ïÕ<æ"\ø â®AÊS�(ÔÖß~àkd/¥P-ð ?Ïý™o¿ýOOãÖ """سgiBɯìc†sŽó»˜ÁL6Г$“JQÜéA3¦Ð¹ }2©¬’íã³Ïûæ[lá{be¤¦¦2uú øè (Sn€3+áþˆ{6Pò#¥ ˜…€…�àîßPotXð¦Ì¿%TîÀß'wðÃŒ 8P›ø/'ðññ± Ñ—äÌ™3xxxhÝ4¶nÝÊÉ“'9pàÀ;!ËšWøñÇ)W®?üðƒŽ*”µÐ£GºvíJDDeË–Í“1|||زe‹öÿ‡¢]»v±nÝ:íâ&--�‡ê ×XØ:v|£_.—Ë)^¼8ÞÞÞ”*UФ¤$þý÷ßÏO&“áêꊫ«+...899áèèH�°··ÇÆÆ&Ë¢þéÓ§DEE\Ü¿|ù’èŒN’D]–ŒìXE1V™¨s‰ö‹<%¸»»ÁÁƒ‘Ëå>žÄÄÄ,ã) íbM"‘�»»;666!HOO'==ݨ«Ž¹Ð¸˜XcZ¡P°få*ìŸÆpIU».šB:‚Ú²(Ò}½9wñ¶¶¶|ùå—YmÕ­[—£G�Z´kýôéSêÔ©ƒ��'NœÈŸúçÏŸHTT¤jÕªŒ1‚]»vi­XBÆ�Ï´iÓ>|8³gÏ6ºÙ°zõjz÷î­M®šñññØÚÚ¢P(¬º€««+7n´¸ooo>ýôS¦L™’ëù!èÖ­;wîäŸþ1+gC^"11‘"Å<)ñE"5¬“KOÇ»@ä&Ý 666øûûãææFJJŠA"‘SB`l‘kccÃ?ÿüC\\­[·¦dÉ’¹Z<ëË:>dÈV¯^͵k×´±›±±±V¿OíííµÍ3£hÑ¢T©RÅèõ¬_¿¥Rɘ1c ^ë�?þȾ}û¸vívvvoM�/;’’’(æáIßDf¾ŽqåÏÉ g*`KÌ&†“$±oš¼v¥ý”GüÉ+þ"ë{Ú •xã&þ%^Ò[TüüGéŸÇþF�xÚ›H¡qê3H9P”È{ ’ª?þøƒQ£Fé¸éI�0†nLC’WKñˆT�õ¡M·öüºæW«öm ï- Vƪտ"õmŒÊóõ‹$d!8eK'[.¦ùÀÁéº$æì Ý×Â*ý’–”ªƒÌ«2«V¯¶˜€øøøpç΋’j©T*:ÄÑ£GÙ¾c-^‰&LÏóÇ/hÖ¬wïÞ¥téÒ,[¶ŒÛ·oóçŸZ4×w*•*Ëâ½gÏž,[¶Œþýû3cÆ «û০¦âèèÈŒ3ؾ}»Ñº™]u,AæÝíçÏŸóòåK-ÉprrÂÃÃGGGqqqÑîVÙØØ�ššÊï¿ÿNÓ¦M)[¶¬ÞÅTTW¯^ÅÓÓ“¢E‹R¬X1Š/޳³³I÷�.¾µÐ­[7ªU©ÊתgÌǸÔuN0‰ç„‹d΄­ÅÖÖ–Å‹³dÉ’,uNž<É÷ßoQ2ËÌ9BBBB¬ž#äÉ“'ðâÅ Ž9BÅŠµÖ‚ HKKC*•Ò¯_?V®\É�?þÈ—_~iòo“ššŠT*ÕKºœœÌËË’SøùùqìØ±\õaÍD„‹-bÆ üþûïV#ééé[’““ñó-Ç¿óÎSº¸UµÊ”´x´îHA•––ÆÅ‹)R¤õêÕ£pá¹ÞE×G²#>>ž   :Ä�¨Y³¦U¯ù»ï¾ãÏ?ÿdĈÚw`� ÉÑõ( :tè@§N�øæ›otb$ ¥K—æÞ½{YÆ/[¶¬ÉàõcÇŽacccÔ=úîÝ»T«V-_‡æ›6mâUbýxã °�"xd[Þâ€L'ZK@dH¨…ñk*„œP•3;½2H@l ª ˆ)”ì ‡W>Ö+ÎСC9zô¨Þ¶jÑ“u´¢u¨`z03�AŸKgaïæÀ¼ùó¬Ò§¹xO@¬!gΞEU/Ó/4;ù�ÛBa?ˆÕ„öûà•ÚH"!ÃçcNœÚjñ\}||HOO'**ŠR¥J™Õ&))‰Å‹³øç…Ü�¸�ƒ§×Jü[‚Â9T�ôð1)g`ß¡=”-[–€fsöÌ?ôìÙ“*UªX4W!yX››¶†väöîÝk–Å'³ÕÀœO'''üýý9|ø0ÞÞÞ/^\g±.—ËIKK#>>žøøxbccyùò%111DGGóìÙ3ÉFŠ/N‰%(Z´(?ÿü³vWrË–-”,Y2G þ7nðûï¿3dÈ4h`v»·æÌ›ËàÁƒ)ŒœoqÏ¢xe æÍt¢ù~ú÷Ze‘‹/êÝ©œ4i���Ôª•sóyæ!}úô!,,Ì*äìáÇ4mÚ”„„Ž=ŠŸß›,u~~~dddpåÊ&L˜À¾}ûX»v­Ù ©©ù§7¯�ŸŸ+V¬È‰ÈI[�ÕOßBÿܹsŒ1‚Ö­[£R©Xµj•U\‹rb!�Ëå:‹_[[[ì Øsò“dZüó&gGn‘úÎ~.í�31/ Ç@ Mì@DD¥J•Ò¾( -´OŸ>ͤ)xúì)Þ¡‚æk¡ÐGJ ­q”I‚{àÜO‰‹ƒ#Gþ"44Ôì`Û쟹õ4´›nh¡ïàà�k—ž!C† R©X¿~½6hNŸ?¾% ÅØØX|}}Q*•T¨PA'�ƃ²X?(Y²$ÞÞÞT¬XQ'8[£Œ¦ÁÅ‹ùå—_ðððàØ±cíH[+a~bРA¼|ù’ñãÇE:³ñÄÑw¬dTŒå9óˆá«¯¾â«¯¾Ò–Í™3‡¿þúK'+##ƒ=zðï¿ÿZ$`P¿~}Ö®]Khh(¥J•bÚ´i9î#3îß¿OÓ¦MQ*•;vL'ÞH³cßµkW>|È®]» 4»ÿ”””|WÃóóó#55•+W®àééi¶U sy\\›7o&<<Ü,¢`jA±cÇvìØ¼!ÆvõÝÝÝ)Q¢„Uüî ¹ü]¸p�ºõêðwhõÿÈrÉÓãáXKò$GÎ�;ÏÑ£G1b„Î&ˆ‰‰‰ 6Œõë׳bÅŠ\)Æ™ggg­K³†„XSŠ´k×®¬\¹’AƒqåÊ‹­:t`ÕªU\½z• twÀË—/¯cíˆŽŽæùóç.\Ø`¿¦îÅgÏžñôéS*W®lѼóçÏœáC¥é¥lœ#…€lJ†É¨ðä&/È rÚáÄ S0[Àv�×.YÑç¡x+8;n-U—Idêü8åÌÈ.`ëÎ%„‡‡ª�‰ŽŽ6ÚN*•2`ÀFŽI§�Ž4º2‚°Œ±´Ä°€‚1ÄðŠ¾’9lá8«W¯&((È¢~rƒ÷ÄŠ¸sçŽú~Æ+néÉÐ,S´RìCØ6 ÚÎ'3Ô<Ô/ÿaÃ†áææfÑ¢ eË–Ú8Sp¯ ÁÁÅÄåÈ €O(Ûî¬�sC"Ù¶ó1Õ*W§P¡BØÙÙáââbÿ}sÔ`Þ†¿êŠ+¨ôõyÊ IDAT[·.ÿþû/Ÿ}ö™Ùí”J%�=2˜˜/22RûâÞ±c»wï¦X±bZ2ñÑGé¨>iŒÌÁ•+WhÖ¬Ô©SÇbwsdxßEŒ7F Æ~å}+ „ƒYÖ�à0I ”?çéH2t“œ9::F½zõtv«oݺŗ_~É/¿übÑÜ;uêĬY³5j%K–´xÇ2""‚¦M›"—Ë9vì˜ÞX¦ääd¤R)>äÈ‘#9Þ5ÖX@ÒÒÒ¬²óo.‰¨ZÕ<ß"…B¡³€OOOçåË—¼|ù’ h]…Ì%666|ýõ×ܸqƒÝ»wS¦L“„ ¿Q­Z5¶lÞJÛvm8Ú:ƒºa*ìôóÍAÂ=8ÑIFÊ-{8@éÒ¥)]º4AAA 2Äh<ÎéÓ§©V­ß~û-ß|ó Ù“êZúHHõêÕ­Ò·D"aÑ¢ET®\™3fX?€³³3›6m2H@ôáÚµkF Hrr²QR¤QD¬T©Rgœ÷¸zý½0½s?ˆ'$#ø–7ù³j`G-쩌-àI|O4‡HäJã�ió©$ eâþo¿ß¾�¶ÃÅ1�‘•'™ž³�›úY_«V-³Ä6lÈO?ý¤õ"9|ô/ºuéF«½cèEsf1€BfJ Û8Áù݊عs'­[·†É�ÁÙ€ùîñppš:6¤~&Õå­!5ýõæÜH©þ t€ÇÿÁÌŠ”(Q‹çóçϧråÊtìØÑ`½5kÖ°víZ*O„ŠãAjáZ2é!o§~ 9|Ôjöw=zôàÀ�ܺu ggg„¼|ùR¯j”æxôèQ–]Ó‚ ê•‘MMM¥wïÞlß¾]ý»³nܸA£F�ðôô¤L™2ܼy“Q£FñäÉÆŒ“£¾ÂÃéR¥ gΜ±È­èm#""‚>½>娉¿ñ“ ¿Ò‰�)@yl‘g"#n�Æ_$ò³<ž+Ê$jø!«×®e×®]Œ5ŠuëÖéÈåN™2…‰'ê{Û¶mK“ !:t(K–,aûöí›n”©í•+WhÞ¼9ööö¬Y³WWW�Åüµkט1cIII”+WŽ6mÚðâÅ (`6Qˆ‹‹ËqŒ’>B�5;;;† F×®]騱£É¶ú�‹‹ &LàË/¿ÌÑÜ5˜8q"ß}÷û÷ïçã�?¶¨�üÂáÇéÔ¹#Éâ5eP2ƒVïì*¸õ \-¥°›';¶í¢Zµj:õ¶nÝÊÀ�yüø±Ñþ*V¬ÈŠ+òüYG`` ·nÝâСCzçl)Æ�ÏÌ™3¹|ù²ÅI€»wïΕ+W¸té’NÙ‰'¨_¿¾ÎùŸþ™~ýúì³|ùò3{öl½åóæÍc̘1$$$¼SJÈårVP”>FäwÇóœi¼`!Eh‚¬ì&�VD1O†‘Õ»¤˜â&…¾É ŠþxþK¸>ÚGB�bÆç½³‚„Ø«¦—Þ^^^Ìš5‹Î�;ël !X½z5#†Ž %)™ÎªÆ|F05)‡=YM–A$OÙÎIË·s]yŸ–-Z²tùRŠ31Ù<Ä»±ÝòÚÝeŠþ û&«ÉGðô¬äãÒF¸¾†ü ÉÙLÒÊTµË–�È2ý¹2ÔŒ-[¶Xl*ÖH>4HoùòåËY»v-Õg�¿eïZ- xA“CüÕ,™À f\ ÿ�"E¬èû® 55•hÉDÑ¢E‰ŽŽ¦J•*ØÛÛ™E9J¡PhI…��M›6ÍB4J”(aÐ!„`Ö¬Y¬_¿Þ*D³ë-„ ""B+“Ú§O@mmˉäóÿªDƒ²eËräø1Ž?ÎâE‹½iÊŒ ì¥2|dvØ ©ˆP¥�˜¡D*•Ò¶Uæ LÓ¦M‘H$øùùqéÒ%úôéÃ|�å^;v,{öìáôéÓ:cöÙg\¾|OOO‹‚Š *D™2ehÛ¶-mÚ´ÁÁÁÁ춙ɯ¾ÅLv\¹r…+W® “ÉðóóÓYÄ &>pà×®]ã‡~0‹DØÙÙYÅBðóÏ?S @‹ï™ÜÄ�ìÝ»—©S§2uêÔwž|4mÚ”kÿ]gÀÀlî²™«S唨¤Tgµ+‰>$?†;káÎÏrâî*éÛ÷s~üñGœ�õçÄj×®�7fôèÑ,_¾Üà\®\¹B�:u>|8S¦LÉ3¹böíÛG`` :tˆªU«²aêU«–%*§;v,¿ýöƒ bÿþýYæCBBX·n·o߯ÇÇ'K™1 ˆ1˜²€„‡‡k¥Šß%hÜ{U^ÌO~M>¦SØ$ùÆ‘‚È8ƒnœž�x¹ÕP“î¤(ãDHzbœ|ØØØ0jÔ(ÆŽkðw.‘HèÝ»7­[·fåÊ•,Y°˜5ö#“Ȩ +M e!dH‰—&sYz—ÊXä29!íCX2p5�5zëJfï ˆ¡ æ~~ ÜJe-Ü7Y}M†€o²–=ùTJ˜¯Ç—ïô2õÑg+TÌ´#úL-}™™WŽ?®·ìþýû 1ŸÏrO>4°q†F;3Ø]!Žþú³eó–·~äBž={fÔzñôéÓ,m<<<ðôôäþýûôìÙ“Ï?ÿÌÂE Ù>tÿ RáRZ�KõtlÜ©Ï ö_ñÒQØÈéܹ C6 1ËbáêêʲeËèÚµ+_|ñÅwælP©TÌ™3‡-[¶°lÙ²<#q®®®ìß¿ŸfÍšññÇ3|øp&NœH‘"E8räˆÅÖ {{{.\HË–-ùý÷ßéÒ¥KŽû ÂÞÞžM›6ñõ×_g)sssÃÓÓSç=dŠ€˜Š¹|ùò;ÿ!‘H(\Ð�¨—J½å“yÎd^0™B|“ÉõÊ„B“‚Š—Ê JpE|vL â䣿\ƒäG�c¸¼uëÖÌ�;×ì_… ⫯¾âË/¿äÂ… œ?žÿý—§OŸ¢T*)ìPœÁþm©Q£µk×6ꊗßxO@¬ 8:‘uüš½)Ø?UM>š�ƒÀñº k~ >Ùäx…€ÅM R{h8L�C$3œ§X‰’*dþM¥o¾«W¯Ö&þÊŒ~ýû"+˜Nõ9[»ÂPcqÛ:mcÓ¦MY’Ô½m$&&ê%šsšDvØÛÛk‰DåÊ•iÕªUëEñâű·Wk³—+WŽØØXFŽiÕ9wëÖ�1cưeËzöìiQ< I“&( >lÐ'õöíÛ9" šEu^¡kâ—ò"VÀÐa*¨83lll´ÒÄIII„……Q¾|yín¿‹‹ 5jÔàìÙ³:m322èÚµ«vÁaŽËQö…ñ³gÏøè£�HHH`ß¾}UNÎ�;G`` åË—gß¾}z…-æÏŸÏðáÃéÞ½;5jÔÐû[¾yó¦Ù.+oC Ôäĉ··„€¤¦¦Ò±cGœ��Y³fÍÿ”0ƒM›6¥iÓ¦Ú˜ŸóçÏs1ü"±÷c�J¥¸¹ºS½{ jÔ¨A“&M,z75mڔ˗/3qâDæÌ™cð^»{÷®VñmÖ¬Yy¢Þ£!!ÕªUÓæ[züø1Mš4áÈ‘#øúúZÔopp0!!!Œ1‚-Z˜TŸÊZ´h¡—€€Ú ’SbÌ¢QºëÖ­[Žæ™_¨þᇜ?xŠìœaêkò1ŽBŒÇüE÷â‰EE�lҼᤢðä�ÚÊQè#u,Gj4DmVǺVøÊ°ePƒº�z|}}™?>-Z´0{®™!“Éøðíªà–×xO@¬©TJÍš59q•ÆÊñ×lØ;Ê©³˜ßËænQê#p+©>ôÁÅ Ê6Ô9-‹ø‹ºåζlÙ²$%%ñäÉŠ-ª=ξ½û©¿Amµx|n¯„è3�ôäꛯâ8ðÈ”Ì=ÌÈ;ÕÙÚ¼~–ìR~øñû|# <~üبõ"&æÍ¶„D"Ñv—(Q‚êÕ«ë(G¹¹¹™eÁ±··gæÌ™téÒ…ƒ`²�¹ðöö¦Q£F„……YD@?~LÓ¦MQ©T9r///âããõÖͮڤ™ �æ%xçÎRSS­Tœ¹,' !0¶ Ï¾óŸ›<™ªgΜ¡Q£FT«V-‹Œ¦‚Ž;²yóf�ùnݺ• &Xœ#ÂÃÃC›#¤}ûöìÛ·OgÑêÔ)‚‚‚¨P¡{öìÑY©T*ÆŒÃÌ™3=z4ßÿ=Ð;Þõë×Í& oC ÔäÑ£G[ -! #FŒ <<œ“'OZ¤Zø.ÁËË‹îݻ͑h’Þ…††òùçŸk]AõaåÊ•ìÞ½›E‹bõ¹lÙ²…ÈÈÈ,ç=z¤%!Ù] Ìżyó(_¾<&L`þüù9nß¡CºwïNdd$ÞÞÞYÊÊ—/Ï‘#G²œ‹ŠŠ2ú{OII1H@"""HIIy'- ÖªÉÒ¿Ž¢T mlÞl¢™È ‚p %ŽœÎæNõöÜ'�/xL'œðÅ#‰‰¦"¶|ž-¦äÉHeP$î®�›K ý(œ¡`U¨¥ÍàhwV«-%âµÑÛÑÑ‘ñãÇ3|øð<Yxñž€XŸöü„£½{ÃóÛPØ®î$p}¯úÈ Ì1_³]‹ÈȈ&LõÔ…–-[¢E‹X°`�ÖX–”J¥FC =Ož<Ñ!†ªÊ|HÁ‚1nÜ8Œ1?üðƒÑNYš4i lÛ¶MóNª³  ²¨T*‘œœ,º s¢¬””)R1©IØ‹84EÚ÷kâ °ñØ�x­22JxÃrØ@†Ix‰gH… @a˜£?1 N°þÀA,3{ · xÏ´”â�wC³[ŒiÓ¦}RCðO‰äËÄ$$$ ¿›;Þútö^e ÖÃ-ú$"DdiB•˜˜¬X±]ºt�6À::;À­g,*Lþÿ|ÑÐqÁ¨Lvzö%�z‹¡€S]ÒV ﹊þw\¥v4C¯1cÆ ½ýLNNÆ“'ODw.>|¨µjoffwww¯Qz’2vÛÛ\¸p•*UÂܹsÑ©S'“¹}÷îNž< WWWØÙÙéœÏÌA\\œŽ]‚££#jÔ¨a° �‘#G"44TcœœÞ#Ñçl’Y† ‚yóæáÀ�Z:ìõłɓ'g©Ý?ÿüAAA9r$&OžŒmÛ¶¡]»vøöÛo±sçNqqqhÕªŽ9‚5kÖhé««T*ØÚÚ"1QÛáF›6mjPš7oŽäädìÝ»7K×e,±±±È�;7Ö­[gô*¾ÚëÎÊ•+5ßL}\¿~~~~hÕªV­ZõYÙ¼å$nݺ…îÝ»ãÔ©Szó988`Ö¬YèÒ¥‹Iîµ:JºX»îîî™BRRRàëë œ:uÊèoa“&Mðöí[;ÎC‡¡~ýú:ùW¯^-¸Kþþý{ØÚÚ zêÒ¼¶-Y²QQQFõïcqïÞ=„……!,, GŽÁ»wï P68ŒÌÛÄêã$Þ£"QçPÀðPGºõt"7>¥Ê`Ñ¢E¨^½zÆ…¾`¤cmm�ÆâçÑ£ÁJ݇,qçpa=Æ,^œåÉ›••ÜÜÜ¡9öàÁ¼y‹ ®òÿ®°LS«z/Ì]MÊ;àá _-máHsçëX-gÏÿƒ/^ˆî\<|øÏž=ÓšD;99i„‰ô^£<<<àêêjT¤bS«é;ÔYµÃÒÒ2Ãɾ»»; *„¸¸84mÚ4Ã�ÔÔT 0ÏŸ?Ç–-[4º>Ô~ð?ÄÎÎ;vì0¨ß4j+VÌ´ªÂ—È´iÓpýúuáìÙ³šÉKÆ ñÓO?aþ|Ý…‹©S§" Kå[µj…™3gbÈ�!xüø±&Zú˜1ct„�èèh4nÜ·o߯þýûQ§N­ór¹Å‹×Q�1väS¨`ÙÛÛ#þü™2D7Ƴ[ll,Z¶l OOO,Z´H>²€··wš7ºß׸ƒâÍ›7èÖ­6lØ€¥K—¢hÑ¢‚ù åÃ(é§OŸÖ9¯¶Ÿ;vì˜Ñm™››cñâÅøæ›o°lÙ2ôêÕ˨ò-[¶D·nÝ¥åQÒXOXêqIßȧT¿zûö-Ž9¢:„(Á{ìÂ;"óÎX„Hñ“" ŽÅ€üYО~´øwйsg,_¾ü«\|K�$€|†ŠM[þÄ�ÐÎHx°0Üu©^ÞÀls7|S»zôèa’*½¼¼´tû/\¸pÊ@S ù-ðò¼þòßP õ=àÕ]ø¼cEàï_þÖòÊ`aa�‚ jì/*Uªggg8::ÂÁÁ¹råI�É~xx8.]ºd´ `ì�˜@ðád?wîܢ璓“ñË/¿ víÚèÛ·¯^AÁ˜‚;v yóæèܹ³`€*5±±±hР¢££qìØ1Ñ�ÅËËKGyôè‘QzûŸ»Þ�…™™BCCáç燦M›âôéÓÕ§©S§âСC¸yó¦V’èØ±#®\¹’¥Ý»AƒaëÖ­X»v­¦ÞV­ZáôéÓA("" 6D||æææX·f5ªøU…jU ¨ºì̳¸Ò—øŠå�a«ŠÃ+W˜Ì‹Š——.]º¤ùÿÉ“'0·‘Ã*¯~O?çúÊ„´h bD¬,ò[ Ÿ·+’fˆåèè¨ÑCMLLDDD„Ö®Œ>Ò B“yµûQSؘ⾓ĨQ£0sæL”*U*Ëõ@@@òäɃõë׋ªêÄÅÅ¡qãÆÇ‘#Gô®j íX�Äýû÷ î³ÚƒÍçèñçc“'Oìܹ~~~èØ±#¶mÛ¹\kkk¬_¿UªTÑ Ò‰þýûcÍš5™nwøðá:ê$111À©S§‰F�!wîÜ8uê”Þ •�HBB?~¬c+ħ²Òú.4™ÌC�yóæáÏ?ÿÄÖ­[3í-IB˜B… aß¾}X¿~=ˆ—/_ æKHHÀ�!C°iÓ&,_¾|o޼ɸP:à5”hŠGƒ‡– GfÙ‰wøEƒR#çL*³¼¾ k`†¢Šcã†PIøøIùHøøø`÷®�hÜä{¤,ûª€Ü™44zõ/k‚`õê6Â4ú§OOOlÙ²EãŠ755r3ý/Èå1Àƒ @倣ˆÃ›77ÒÜÍ•è(DlgeÿoãÝ­[78::,|¸Cð9Nn €¥K—bðàÁøë¯¿LòA²´´DPPÖ¯_�‰'êÜ—„„âÊ•+8xð`†F�b“¦{÷î,€H; úñööÖ‘;v,~ýõW@ùòå1iÒ$ >\§ÌÚµkѸqc´iÓÆèöÖ­[‡™3g ž»{÷.jÖ¬‰ÈÈH”.]{öìÉÐ_¼˜g®ððpƒ�Oå H@Ö¬Ycðn�Cžéÿýï6l† òQ<3Iü©Aƒ0`€^»£³gÏÂ××£F�¨Q£2-ô~ PÈmvdd¤F1&>—³³3¦M›†=z k×®¨Y³¦Áe[¶l‰~ýúáåË—�ËåHJJ‚««« �äädgúv@®_¿Àôèqqq8zô¨F­êÎ�;Y®ÓÖÖåʕù³ç z‚íªÈ“…��P¼EG<…ÂV†Æ›J«”ÀíyÀ•Ÿå(í] úì=à™J|TNœ8A§¼ù¨°u :¬!f«ˆ94,ÍJ%ZýN¹•- ôàÅ‹MÞ¿-[¶_¼xA’\°`æ2vP‚ÁÔMeÇ���å§ŸW§’ƒÒò5¾"ž§Ú*L~]9�íÛ·÷ìÙc²:ÿþûoàñãǵŽ'$$°aÆ´±±áßÿmP]7nÜ Ò•´ÒÌ™3 îÏÞ½{ €OŸ>5ê:¾6¦L™Bܼy³æXjj*kÕª%ø888ðÑ£GFµ±|ùrÊd2véÒ…�7¬]]]kP�çÏŸ¬cþüù•÷ññáO?ýdÔu˜ õ³iT¹—/_·nÝ*xþùóç,P kÔ¨ÁäädStUÂvíÚE777ÑçZ�¼½½yêÔ©,µõúõkVªTI´�"EŠý\)•JV«V�ÞÞÞLJJ2¸Üõë× €>>>433Ó¼OS§NìÛõë×uê8{ö,ðòåË:ç–.]J¹\žå1Z©Tòܹsœ4ikÖ¬Issó +CRÅŠ£G�211‘$yòäI:ä²g~3Kî†; o£Ò+g0r¿oÒ„+ûR&=»€�.èŸ÷l—~ ºTVP&“qàÀ�Œ��ÏÒýûR‘�làåË—lß¾Ð̵Ñl.1Ṹà1ö1Ñd*Íœ {öìið¤ÀX.]ºDÊMÈø´t�*ëÏWj(èæ‘ÿ£\WNG¥R±nݺ,^¼¸QŽ>”J% *Ä=zhŽ%%%±I“&´²²âáÇ ®+!!�2™Lçƒß«W/ƒëصk0**ʨëøÚP©Tl×®mllxéÒ%Íñ‡2wîÜ‚o�:u¨T* ªáÂ…À>}úP©T2..Ž+VÔ‡ bP½ïÞ½,ß§OƒÊ+VŒÃ† 3(¯©¹wï0,,̨rÑÑÑÀ;vèœKMMe�:u˜/_>Ièþ¼yó†½zõÊpÒ*“ÉØ¿¾{÷.Óm½zõJï;T¤H>|øÐ¨:¯\¹B…BÁ)S¦”¿yóæ”ËåZíº»»S©TrçÎ�‚ýÚ²e‹N=Ç�'Þ¾}[ç\¿~ýX²dI£®CÍ£G�¸råJ¶mÛ–NNN&8 (ÀÎ�;sÆ ŒŽŽÖÛv£ï¾#~'ÏÅÝpg*Jê<Á‹càL…råâêÕ«©R©˜’’ÂÙ³g³€»+Щ‚œ%~ýWƒ N€ Oƒu�•æ‚E:‚¶®fÀê5ü ^ðûZ‘�läĉ jC…YÚjîX�ð $ªt!ªt¡¬tcš9äO;gaÉ~ø�gÏžý¨}Š��%®_¿žä+|Õ×k å&¤ eÆd¼PcKZÞ*‹õçËû-XÔ³(÷îÝ˸¸¸�z�9‘«W¯R.—söìÙ&«sÔ¨QÌ�;7˜œœÌ-ZЂû÷ï7º.� ^½z—WïòÄÄÄÝöؤ) IDAT×F||<}}}éááÁçÏŸkŽoܸQt0ž5kV†õΞ=›8hÐ ªT*ÍñgÏž±pá¢uº‹!´ê\·n]ƒÊzxxpôèÑå55©©©´°°0ø:Õ<{öŒ¸k×.�s£F�¢\.çÑ£GMÔK‰ÌpìØ1+V,ÃÉl¡B…2õ]TóêÕ+úúúŠÖ_´hQ£w*Lkkkþûï¿æíÔ©“`»gΜáÝ»wÏM˜0A§žÞ ¬Y³&ƒ‚‚ ê{||<ÿúë/4ˆ¥J•2‰Àaeeņ röìÙ¼~ýºÖ7,#T*7lØÀŠåÊ]Í,;N€3W!?×¢‡+{Ã�¾°¢2ÚYÛ°wïÞ|òä‰N}�=bíÚµ €–¶º;8–æ¬XÅ—äµk× îç׌$€|¢¢¢¸iÓ&>œõ4d¥*UYÙ¯¿û.€!!!ܺu«F%*;È›7/Ç�¯ù¿XI/éðŸ à;3M (~w&Mâÿ0¥, |šÙ�mbÅ…�Ö¯@…¥Œi/¯…ëÕ«Ç3fðêÕ«F}h>gz÷îÍܹsë]Í1µêÔæÍ›Ù¶m[š››s÷îÝ™ª«N�:‚ƒ¶¡lݺ•øòåËLµÿµñðáCæË—�5jÔÐÚëСƒààlaaÁ+W®ˆÖ§Ví ÑyŸ :ðËd2ÁUþôÔ­[W§¬›››A×›/_>þúë¯åý”.]š}ûö5ªÌãÇ� €{÷îÕ:¾{÷nàÔ©SMÙE‰Lòþý{Ž9’ …"ÃIn§N�2=Þ¾|ù’*T­ÛÓÓÓ(!$66–nnn Ì0¯Ø.ǰaØššJKKK�síÚµÓ©gÇŽ 3©T*æÉ“GôU©T¼|ù2§M›ÆºuëÒÂÂÂ$BG¹rå8lØ0Þ¾}Ë:uêÐÒÒ’&L�8X[[kT3ÅèÓ§�`YCTF8}út#îŽiiÑ¢…Q;z$IZ+çtpp`Ó¦M¿š…“Ï…‹/êÔ)o޼ܴiS¦~¿—/_²|ùò¢u{yyññãÇ×§¶Ëܹs§Þ| ´³³Ói¯hÑ¢T©T,S¦ŒÎ¹òåËëÔ*øÎª…íûñìÙ3®Y³†ÁÁÁÌ—/ŸI޼yó288˜kÖ¬ùhª‹û÷ïgÞ¼yéêêÊeË–iæmÛ¶åÛ·oEË………±dÉ’”ËåìÛ·ï=ùHˆ;vìHÍÿ/^¼ ¥•}~ÎXÝ*3©í{0w3¶m×V§/ïß¿ç�8xð`–.]š(—ËYµjUŽ;–§OŸfjjjvÞž�Îܹs)—Ë��%66–^^^šû Ó*!3fÌ0nݺePy±�MB?Ë—/'þþûïšcÇŽ´ÉÀ�jò©T*Ž9’uÉŸ>}ÊòåË3wîÜgúÔ¼\\\xïÞ=ѾΟ?_°Üùóç3¼N+++Λ7Ϙ[cRBBBX°`A£ÊÜ¿ŸxðàA’i“@___zzzòõë×£›Y$99™S§NÜHŸ�Ô¼xñ‚åÊ•­·X±b‚j=B¨T*~÷ÝwôððÈP5¹M›6‚í]ºt‰AAA‚‹ é¤þøã`JJŠÖñ}ûö×®]ËaÆé½>c’……ëÖ­ËiÓ¦ñÒ¥K™^ 3„¤¤$6ŒøÝwßiÔ[W­ZÅ?þøCTà¼ÿ>›7oNüöÛoõî4KdI‘àøñã™7o^­c£G�¦ÜLÆÆ—M/€xIÓ—4d"ûðáC._¾œ­ZµÒ¨kåÉ“‡­[·æŠ+25Xä4’““Y²dIÖªU+K+¨/^ô.Ò­[·LÕ§¶áHŸ UéZ¿~=H@2AÿþýiffÆcÇŽiŽ�1BtP £J¥âÀ� €sæÌÑ©óöíÛ,\¸0ÝÜÜxõêU­sÓ¦MÓ;y³ãQë�§Oj›21T*e2—,Y’‰»cV­ZEFÙŸ©uë�9B’ìÑ£­¬¬´œHäLnß¾Ío¿ý6à ²½½=—,YbôÄ8&&†eË–­·xñâ¯ðß»w�–––9r¤Þ|ê]æôiôèÑš]ÐôéþýûZu,Z´ˆ …‚dÚ{yýúuΞ=›Å‹7‰À€¥J•âÀ�ù×_eÛxpïÞ=V®\™æææœ9s¦A¿g||<ÇŒCKKKº¹¹qãÆ�Ò®æGD@$4ÅWªYʧ$�Ê*Øæ�é„�z‡A™ ™R½HIIáÿþ÷?þòË/ôóóÓ¬ûøøpÈ�!&ÕÍnÔ«Mbî=3B¥RqÀ€¢jfî˵k×ë3Ôh~íÚµ¾N7ËY%99™uêÔ¡³³3ýòË/^®Zµ*s7Èœ>}šŒÂÃà ¤¹ºV¯¯X±â#öR”(•J.Z´ˆ¹råÊpÒ\³fMÞ¹sǨúcbbUŸÔ©D‰ !ãÇ�§™™oܸ!šçÝ»wu¢“···f:}Jïú}öìÙ´³³ãÝ»w relHrttd›6m¸råJ£ ñMÁ† ˜+W.zzzòܹsæW©Tܲe =<%ááá433ãäÉ“�*7~üxi;êUÝô©iÓ¦™ê“»»»N] 40¨ìÊ•+ à£êø~é\»v�vvvZ“ÿ ˆNÒï(üñÇT( ÜÁHO\\œÞ kƒÖ)#´+S®\9½í¨¿9Û¶m3ân˜-€qõêUiñÊ—/oÐ=•È™¨T*nܸ‘...N°}}}�Ú){þü¹Æ†Q(y{{éàÁƒÀ%K–pÈ�!ôóóәܫwšÓ§±cÇêÄ À®]»j•=z4óåËÇiÓ¦ÑÙÙÙ`¡£xñâìׯwíÚ•#ìü.]ºÄ%JÐÖÖ–«V­Êpññõë×0` ‹+Æ}ûöeSO%ÔHˆU*D �?žE½ ÓÌJÎ ÓÁ¶ñ† �w@÷ÆiÁàŽÁÙ6`ÇÅÅqÏž=ìׯŸÆ'ü‡«4.\È‘ã�ÒÖÖÖàmzuÄ[õo§R©èéé©3X˜››gÊÕ¤P4î"EŠTvÙ²eðYíBåDÔn2Õeµ‘ªÐ¤ÀÎÎŽT©Tœ4iðÇ4j7**JoŒ�ô†ãB†°BÆ®òäɺîl³›5jº&ãâÅ‹Z÷Yâó'&&†ÁÁÁN¸ CBB Þ¡~þü¹Þx¥J•ÊPQ©T¬^½º– ñÛo¿iåyýúµ í_… Ç‚jÕªiy³²±±!ÚØØèšrçÎÍ–-[rÉ’%:v$Ÿ•JÅùóçÓ‚åË—gxx¸ÞüJ¥’Ë—/§‹‹ íìì8mÚ4“–0I‘ IV¬X‘Ý»w=ÏAƒQ&“ÑÊAÁ’ÁúÇuc}tP�Íþ¿ ݦ}4óåw Ü•�DDDð÷ßg`` Æu¡‹‹ ;tèÀµk×jû”¼zõŠÎÎÎìܹs†yÕAæÆŽ«u\ÌøpÑ¢EF÷§{÷î:õÈårƒ>Ø‹/¦\.7ºM ]&L˜ µcðï¿ÿŠºÏ­^½ºÆžCÈ ¯!ܺu‹yòä¬_&“qûöíš¼bÏ›¾`jÀC‡3LH÷îÝéëëkp~µ�•)ƒ‡Jä öíÛÇ‚ ´òâÄ ƒêŒŠŠ¢···h]¥K—{¢££cõØÛÛë,P‰-HÅrú06J… èëëË¢E‹211‘÷îÝÓÊëççÇqãÆñôéÓF-bd/^¼``` pÀ€ºˆ?sæŒf‡788Ø`ÏdI‘ ™¶ŠY«V­ óÝ¿Ÿ#FŒ £sšG*È@0·hï š;ü÷ñªT¥"W¯^�ãÔ’’’xìØ1Ž9RËG¼¯¯/CBBxüøñOj·°hÑ"àÙ³gEó,\¸�8räH� æ�;wD'¦Æ"æéöíÛ–ýý÷ßiffft›º¨T*¶jÕŠ¶¶¶<{ö,hff&:±1…‡©'Nˆ 9VVV<}ú4É4ƒO¡<ú¢Lß¼y“xòäÉ,õ1«Ì˜1ƒvvv iÇ�×LÞLá2["çË~ýú‰º¼þ0õéÓÇ µÞgÏž±dÉ’¢õøøø¢MLLd‰%Ë´oß^+¯z·9}ÚÀ… jŸîÝ»³J•*šºFŽÉæÍ›PôSqìØ1º¹¹ÑÉÉ)CÏŒQQQìܹ3�´X(Ÿú»#‘†$€H�$þùgº»»œ?%%…+V¬ü¸�5ê³ZYPoG·oß^£›+W.6mÚ”‹-Êöíæ””–)S†þþþ‚#õ`3hРщ“ŸŸŸàoc¬Úˆ:šyú”Þ“Š¿ýö---�jOBœ¸¸8úøøÐÊÊŠÖÖÖ.]ºDy¨ù˜ìÚµ‹2tçýôéSººº²bÅŠÀk×®eS%>ÿûßÿô êäîînзðéÓ§¢Â–)SFP9|ø°h™w£££í=Ä’Ú�4IvèÐ�5kÖÔj·Q£FlܸqæoàG$%%…¿üò år9kÖ¬©÷ÝUG1···§££#/^üÅÅûœ‘ ’ÿ ³[–éÉiNE©Tòüùóœ8q"kÔ¨¡Yñ,^¼8û÷ïϽ{÷f‹{>õÀ³aíãkÖ¬¡L&cß¾}õ®ÚþöÛo‚¿Í¯¿þjT?®\¹"XÏܹs3,;oÞ}¸½û%¡R©xëÖ-Î�;—šøê p›6m2é*KDD-,,8vìXnÛ¶� …‚;v4Ø{WãÆ�cÕ^ ( SGú3!fΜI{{{£Ú’ÐååË—¬X±"óäÉ£ùíÔvB#FŒ`žÅ}‹ÕªUc—.]4ÿÿöÛo477ÏdoÞ¼É2eÊÐÒÒ’‹-(T*ÿüóOMó����kLÂôÈ!!@&“ÁÓÓ÷îÝ3¸LJJŠàqsssSu+Gcee…úõëcÖ¬Y¸~ý:>|ˆ¥K—ÂÃÃóæÍƒ¿¿?\\\„•+WâÉ“'F·QµjU$''ÃÆÆG�EÛ¶m ®'00vvv:Ç7n܈ÔÔTƒûP¬X1�cÿþû¯èï¯F¥RA¡PÜŽ„6Ïž=C­Zµ�ãÇ�£\¹ršsË–-CXXœ��ñôéS¼ÿëÖ­ƒ­­­N=111èÖ­Hf©?¶¶¶Ø½{7Š)bp™Û·o OJJ�ö}jJ–,‰ððp­c hÕªò厕+WB&“”J%HÏõWЧ§'>ŒåË—#wîÜ¢ùâââзo_Ô¬YSðpssÃÑ£Gáéé)X>** ˜3g"##޽{÷jžÃÙ·o¶oßhÙ²¥A×ñôéS¼}û�˜˜kkk͹k×®¡T©RŸt'‰åË—£bÅŠHMMŹsçЫW/�ë¿qãêׯ�V­Z¡lÙ²¸qã&Ož,8îIä<$DBƒ———$€d�‚ ¢[·nؼy3bbbpêÔ)ôïß>D÷îÝáîî :Dbb¢ÞúŽ=Š   XXXàíÛ·ˆ��E||¸sç¶nÝ {{{M^I‘�ÉdèÖ­nÞ¼‰fÍšéÍ{òäI”+W“'OÖŒ—±±±Ø±c&Ož¬w!èÍ›7X³f råʨT©z÷î-˜wÀ€ˆ‹‹C‹- ¾µÐ��� µpõêU”)SÆàzLÍÛ·oѶm[ôèÑÁÁÁ8þ¼NÞ¼yƒAƒ¡\¹rˆŒŒÄÞ½{±{÷nÁ±J"ói7`$rC‡5HµFÍòåË·w?µg›œÈ‹/ÊÎ�;3þüÒ¢EpÞ¼y ×Ú^>yò¤^}ã3gÎÔ®Ze$}êСƒÁ}SµÛ·oŸÞrãÇ�gþüù nG"�°H‘",T¨�–Ûä””þøã�ÀI“&iž—Ë—/ÓÆÆ†mÚ´¡R©Ô`¦OÖÖÖ¼uë–Iúø÷ßÓÒÒ2CU�Ñ£G –W»ð6ÔžécròäI­ï–ÚÍõš5ktòªUÇL¡Ò&ñù£R©¸eËæË—/ÃwÁÕÕ•åË—×8ñòòbŸ>}¸lÙ2.\X´\¥J•øúõk’iÎ(ÄT±† B’{Äúã�?H’… âÏ?ÿL2Í ¤��§OŸþIîçéÓ§Y¸paæÎ�››7oÖ9¯T*¹bÅ æÍ›—¶¶¶œ:uj†Á%r.’"¡añâÅT(ë~ª aÓ'SMr¾TT*¯\¹ÂéÓ§³nݺ#ÁÂ… ³gÏžœ:u*íììX»vmQŒ~~~MÞRSS5Ï‡ÉÆÆÆ`=ÙË—/ öaþüùzË�;6dzÊiܽ{—ôôôÔ2Ð~ÿþ=›6mJ…BÁ•+Wê”S ‰“'OfLL ]]]3___ƒ¢Ø¦M›2œä´nÝZ°lN R™ššÊsçÎøá¶lÙ’fff¢ÞÃÔFéBîR%¾^^¾|© t—Qª_¿>¯_¿®UþßÿÕ+„T®\™oÞ¼!I®]»V0�B¡àÕ«W9iÒ$ƒú1lØ0’d¾|ù4îÙ#""€ýõW¶Þ?¥RÉ)S¦P¡P°jÕª‚6Vÿüó�Æ­}ûöÆî‘ÈùHˆ„†C‡€Æ«FFÌŸ?_ðÃ&yˆ1ޏ¸8îÙ³‡ýúõ£‡‡�´HÖþþþ1b„èNÈÚµk ªÈ�!Y*ÿîÝ;Áò?ýô“Þr£G�¦‡‡‡AmH�·nÝb�X¢D ­ÁõåË—ô÷÷§���Þ;cÆŒ¡L&ã®]»¸ÿ~щǨQ£LÖç3fè�äx{{ –›3gmmmMÖ�Ì���@+++�>;;;3!!A°ÌŸþI|õêU6÷V"'óîÝ;îÙ³‡Íš5£¹¹y†“///=zT«Žh\½ ¥*UªðÍ›7T©T¢†ðÕ«WçÍ›7 @š4iB’´··çÌ™3IþçÙ2; ?{öŒõêÕ£L&cHHˆÎhTT»téB ÍCØ×âäæk@@$4ͦ9ܼy“...ôõõÕ�’’’xàÀæÎ�[ð^wêÔ)C•9•J%8 ÉårƒÝ ~óÍ7:å‹+¦·Ìˆ#Œ²)úZ¹xñ"�œœX¾|y-Õžk×®ÑÍÍ�… 68ð]ll,K—.M///>yò„ÞÞÞ‚ÏM¡B…4*Y%55•���¢�† êLÆ�§7NHvQ¯^=�þêë׆ À$æ%>/žm� P @îØ±CSîþýû‚‚ñ‡òÛ·o"xÞÉɉC‡Ͱ]¹\® 4»bÅ ’dëÖ­Y«V­�~/“’’4;ó|þü¹ÖùƒjE1OœQâË@@$H’'NdPP---5Æ¥AAAzËüú믂6I?Ú8îܹÃüùó³L™2¢Z1Cpõ Ø´iS.Z´ˆ÷ïß,?eÊÁ²sæÌ1¨�ê-ð“™™SRRDË 6,C!åkçìÙ³tpp`åÊ•µl?~œ¹sçfùòå�è#""èèèÈúõëóܹs¢+¥�:u2ÙuÄÇÇë�k0pà@­ü!!!,R¤ˆÉÚÏ,ýúõì¯Xüµþ½˜Š–Ä—Ãû÷ï¹ÿ~<˜>>>Òvô*UªÄQ£FñرcÚS%%%qܸq©eiv?#""ô !þþþŒŠŠµiÑ¢E†í7n*y IDATiÎLpýúõ$Ó‚röïßÿ£Þ×»wï²R¥J477ç¬Y³´l{ŸÁƒ³dÉ’ÆÝ�¯ˆ“'O2W®\ô÷÷×zgþüóOZZZ²N�:™Võ9|ø0  ÄéÓ§‹N@6mÚdªËááÇõNv>vsʳ!¶ˆrþüyÁü«V­"€¤M´¨�ƒÌ˜1ƒõë××,Ĺ¹¹±K—.ܸqc¦×®_¿N??¿ ‚Nööö~zôèAwwwÚØØðõë×ŒŽŽÎ®5?"##Y¨P!+VÌ Uî‹/ŠêŸ8q‚oÞ¼á¶mÛØ³gO�1£……ëÖ­Ë3f°R¥J‚eoÞ¼™aÛb�ôÙ 8�¥K—6êž|-=z”¶¶¶¬U«––�ÄÂ… )“ÉØ¶mÛ,»—T;‰X¹r%kÕª%:áÉHÕÒPâããõNvd2·nÝJ’ìÛ·/Ë•+g’v3Krr²¨ŠÌºuëËä$÷ÁY'**ŠëÖ­c§N�4vnÖÖÖüî»ï8{ölÞ¸qÃdáÔÔTÎ�;—666  4àƒx÷î]½‚Ä7ß|Ã&Mšžsqqɰ�ÁƒHs©~þüyà?ÿüc’ëý�wïÞñ‡~ kvÕQÌ *D Ž9RŠbþ! $Óôõ…>P­ø¨‡lêé—Á“'OèééÉ"EŠ5ìÑ£‡àïT¡B-={•JÅððpÎ�;—zcЍ}ÀëãâÅ‹‚eÕÆ‹BôïߟeÊ”1øÚ¾ÂÂÂhmmÍúõë3>>ždÚï5jÔ(iêJ¦˜àªT*vëÖ�ܾ}»¨QݺuM6¡Ög@ €VVVëׯŸ¡p`kk˹sçj¼ã‰å«\¹²AB�PjÔ¨ðèÑ£\¹r%e2™Éí›.^¼ÈâÅ‹ÓÖÖ–«W¯Ö¿qãëÖ­Klܸ1ïܹcÒv%r>Ò—T‚äkútúôi½åºuëFwwwº¸¸dSO?¢¢¢X²dIzxxú;×ÇóçÏioo/ø[-_¾\´\BB·mÛ&8árppàÉ“'õzyûö­`› -Ó§O–/_Þ¨ëûÒÙ³g---Ù¸qcÍD'99Ycc3cÆ “ª$&&Òßߟ®®®\°`�èDdÖ¬Y&i¯AƒNzœœœÈ5j˜¤ÍÌ ¶©š3gŽ p.fÿ¶hÑ"*Šlî­DfQ©T¼qãçÌ™£µ“/_>vìØ‘k×®5؇©ûµjÕ*æÉ“'Ã÷¥jժܷoŸ`<'u*R¤ˆàñŒ>>,P €ÁñVÒ#{!oÞ¼Ú ©Ú©Sž>>,Y²¤F=((H§oÖÖÖ‚“ÔyóæÑÚÚ:[û,¡Ÿ¤¤$?~œ?ÿü3+W®¬õý4hÿúë¯lÎŒeûöíz…‹w,œœœŒ42JáááÌ›7/ÇŽ›åk9zô( (@gggîÞ½›dZó*Uª�¢˜Kü‡$€H�L ¬¤öúña Ö[î‡~ ›››I·n¿DÞ¼yÃJ•*ÑÉɉ׮]Ër}»ví])Ó·³’˜˜(¸íŸ'OÍj”z±K—.šAÑÚÚZÐÒÜÜ\Ôo·nÝèçç—åkýÜY½z5år9;uê¤Qs»ÿ>‹/μyóŠz\25¡¡¡À^½z‰ªf 4(Km:tȨ‰OóæÍ³-¸˜J¥bpp0mmmyãÆ Íñ_~ùE°oBUgÏžM;;»l鯄0*•ŠwîÜá‚ ¨ ÖêääĶmÛò�?þø,'¸¯_¿µñû0Éd²LÛ|ˆ%µúŸþ™éþ§¤¤pôèÑ”Éd¬]»6ŸÇ¨Ue•#GŽÐÓÓ3C¡A.—›LiÞ¼9ððáÙ²A‹ŒŒdõêÕ©P(8qâD&$$pΜ9Rs ½Hˆ„†ï¿ÿ^çÔ‘qypp0óçÏϲeËfS/?/âããY³fMÚÛÛkù=7ׯ_õâ£où÷ß –iÙ²¥ÞöÔ+èBa�58iÒ$­‰@§N�>©¡ñ§Fmôݯ_?Í=9|ø0såÊÅŠ+ê�ûò±P*•lÒ¤ íííE£¤(P@+(¢1¨T*A]ô&Mšˆ °€á13˹sçhaaÁ¾}ûêœS¯þ¦OóçÏ×É;uêT:::~Ô¾J¤­¦Ÿ:uŠcÇŽeµjÕ4“muŒ£Ý»w‹‹üˆ��çСCM*d Ìì¿¿mÜA‡² CÐ&ÿí+éÅùóçÏkëÖ­tpp ‡‡Ož<ÉC‡±T©R”ËåìÝ»·Å\BI‘Ð0hÐ Á�–¾Q‡˜?~ƒÚ}M$$$°^½z´³³ã©S§>Jb‘œK—.-ª¥T*#èZXXðõë×¢m‰MÔÚ¶m˦M›jT!\\\Ø¡CV«V�ÕªUû(×�Ó™5kpÈ�!šÅÐÐPš››³AƒŸÔ×ýÛ·oéííÍÂ… ÓÊÊJð7mÕªU¦½qùúúêÔçããÃÛ·oÓÑÑQxb$“eIýC/^¼`¡B…X¥JA£×ØØXÁ> +“&M’<þ}$îß¿ÏÅ‹³E‹—ÑlÕª—.]j´ÇÀ/�sçαlÙ²Y>d Â ,Ö¬w z S;µzÖÚ ’Qn&£�½-W¬X!úxÿþ={÷î­Y¼ºråŠÆÉÉ7ß|Ë/fóÝ’øÜ� bn:/\¸ Z¦]»vtuuÍPUëk#11Qãöñøñã­�/^ˆºr\¸p¡h¹ŸþY°Œ¾(¸oÞ¼,£¶HJJâ±cÇ *hÎW¨P�!!!999ñÕ«W‚enÞ¼)X&#רBÑu¿ÿþ{Á¼���,]º4;tè@ggg ��›6mÊßÿ�÷ïßÏê¥ç(T*ÇŒCœ0aÉ´ ððáà ¤y(ËIzê L&�!�+W®LýFãÇ�¬/""‚ä18ÄžYS$›0ae2Y†^Æj×®­Ó—‚ êä;v,ÝÜÜLÖ¿¯‰ÔÔTž={–'Nd�5hffF -†E¯^½¸mÛ6ƒÕ~¾Fnݺ%è‰PŸðaç œ7\ðHŸjïm\,Yª8£¢¢¨R©¸dÉZ[[³T©Rœ;w. .LsssŽ1â‹V‹“0=’"¡áÞ½{‚²É“'‹–iÓ¦ óåËÇ:uêdcOs.)))lݺ5-,,¸oß¾li399Yt%[Ÿ�oÅŠËè[)®V­šN~1­ZµbÆ I¦MÄÏŸ?¯™|¨mWŠ+ÆþýûsÏž=&�À›�¨T*� 1mÚ4’i;BÁÁÁ>¾�Cf™={¶F0zªW¯.ªÊ'ƦM›ëúð}‹Ê€žžžŒŽŽÎòµ………Q&“eèJœL‹Y#Ô—ôÏäèÑ£éáá‘å¾}-<|ø�+V¬`PP�Fý.W®\šEˆìvÂð¹£T*¹`ÁÑ÷U#|˜�>`«˜Ì êô}8h›_AoŸ’cõ   �ÐÞ¨Q#)йD¦� ÉÉÉ‚FÍ]»v-ÓºukæÍ›W3ÑüšIMMe‡hffÆ�;wfkÛˆ oÞ¼)XfΜ9‚e¦L™"ÚNÇŽuò[XXªJ4oÞœ‚õ¼yó†Û¶mcÏž=Y¨P!M=uëÖåôéÓyõêÕÏf_¥RqÀ€Àyóæ‘LS/iРÍÍ͹qãÆOÜCqT*øáš››‹Nf&NœhT�—/_¬göìÙš<ÎÎ΂¬:ùùùe)vÃÇéìì̆ ´ë$ö.¤÷ZÂ"EŠdº__:qqqÜ»w/  qr “ÉèççÇ1cÆðï¿ÿÖÄÁ‘È<‘‘‘ ~ä uþ4›Ž¬ êÔä(·-,ÌÙ¸qcš™™ÑÓÓSçCB"3È!!ñÿ˜››£páÂ:Ç#""DË0Mˆ…¹¹ùGìYÎG¥R¡G� ÅÆ�˜­í7hÐMš4Ñ9®T*1xð`Á2mÛ¶…\®û X»v-H –ñòòÒ9–œœŒÇ� ¶­P(ëÉ�;7š7oŽÅ‹ãÁƒÇôéÓaaa�±cÇ¢lÙ²pwwG×®]±iÓ&¼zõJ°žO�J¥BŸ>}0oÞ<,^¼?ýôž?ŽÚµkãôéÓØ¿?Ú¶mû©»)ŠL&ÃâÅ‹áëë Á<ãÆ�ùsç ®³X±b�Éd:Çoß¾­ù;99Í›7GÓ¦MëøçŸСC(•JƒÛý°îÖ­[ÃÆÆëÖ­|ÆÓS²dIÁãöÐÿL�¨T*\ºt Ó¦MCݺuáèèˆÆ�cÛ¶m¨^½:6oÞŒ/^àÌ™3˜0a¾ù曯~¬0Ø»w/Ö®] '''í“*À5`•×tí9ø¾Ó�ää:t&LÀ�7Ç C‘ -„&˜÷îÝͯR©¾z„$úöí‹U«VaÍš5hÕªÕ'éǬY³‡ýû÷cß¾}:Ç]]]Q¿~}�ã7oÞÄ•+WÛ(V¬˜àq¡gD¥R4ù“Éd(Q¢ €}ûöáÕ«W C»vípöìY´mÛ...¨Zµ*ÆŽ‹Ó§O#555Ãz?6J¥Ý»wÇ’%K°råJôìÙ¨^½:žT¥†ëÏÿ`p°`‘¨¾¨w(3�g OÈä€÷0๋¢ TÆ ZˆM0ïß¿/xük@HbĈ˜?>/^Œ.]º|ê.a̘1pqqÑ9~çÎ,\¸Pçx³fÍUo6lØ ¨þ"ö|ˆí€˜b²æîîŽnݺaóæÍˆ‰‰Á©S§0`À<|ø=zô@Á‚áããƒ!C†ààÁƒHLLÌr›úHNNFÛ¶m±yóf„††¢}ûö CÍš5Q¤HüïÿTeÌéT®\+W®ÝqX¼x1öìÙcP]B; QQQxûö­FVOø]\\°oß>]U’ÿgÈ�!øóÏ?3lóÖ­[èÞ½;Ú·o�Þ½{ÔO5 …BpwïkÜ!‰ëׯcöìÙhذ!Ñ A¬_¿*TÀ† � .`Ê”)¨U«–´ž¸pé<\¿•á´xž÷O€~Šõ¾Y¸5òV<|FfÜFÁ¦€]~3¬X±Ât—øj‘ -Œ™`_· ÖØ±c1cÆ ÌŸ?={öüÔÝ�f[1iÒ$ÁsãÇ�GLLŒÖ1;;;4oÞ\'ï³gÏpôèQ�ãyòäœ( =J¥Ò ,c033CµjÕ0nÜ8œ9s111 E•*U°qãF4hÐŽŽŽhÔ¨æÍ›‡Û·o­Â£�¤¤$´jÕ »wïÆ¶mÛЪU+¬[·�7FÍš5qøðaƒÕ~r"ÁÁÁ¢6CеkW<þ<ÃzôÙT$%%€Ö¤µxñâØµk—àD–$‚ƒƒqêÔ)ÑöâââвeK.\K—.ÍÔ ¼�ÐtçέççK@bbb°aÃtîÜnnn(S¦ ~þùgÀ¤I“píÚ5*• §OŸFþF*½ùî-RߥGd®¹9�·A*Nžþ;sHH|€$€Hh!¦ !&€¨w@ÌÌÌ>f·r“&M¯¿þŠ3f ÿþŸº;ZtíÚåÊ•Ó9þöí[Œ3Fç¸)Ô°„T°Lµ¢'''´iÓ+W®Ä“'OpõêUL˜0ÉÉÉ>|8J–,‰"EŠ W¯^ؾ};bcc3ÝVBBš5k†ƒbçÎ�hÒ¤ fΜ‰Ž;¢cǎرclmmMxuŸ†éÓ§£F�‚çbbbЭ[· …:1›ŠððpAüýý±~ýzAá!)) ���¸sçŽÎ9’èÑ£=z„­[·fú7ês\\ž>}ªùÿK@’’’pôèQ„„„ bÅŠÈ›7/:tè€K—.¡C‡ ëW¯pàÀ <>>>’ZUæÎ�;x—ÇŠúóEŸ,�€·7�½å�õæÀŸù€z)ï k˱"pýê A•^ c� -Š-*8ЈyÂ" •JõUí€Ìœ9£G�ÆÄ‰�Ò‹Ï. æÍ›'xnÙ²e¸zõªÖ±zõê!o^]—)[·nÅû÷ïuŽ P©´Wß>ƈ>d2Ê”)ƒ¡C‡âСC½ôÀÀ@9r-Z´€““¾ýö[Lš4 .\Ðé³ñññhÒ¤ Nœ8�½{÷¢Aƒ2d† †Ÿþ+V¬øbÞ…B�]»v!_¾|‚ç÷îÝ‹%K–è­ÃØ5-[¶Ä¬Y³˾|ùˆŽŽÖ:¾páB„††båÊ•¢‚�!bˆþ¹ $Žùóç£I“&prrB�:u°bÅ x{{cõêÕxúô)®\¹‚3f ~ýú°¶¶þÔÝ–0µ`®Oý HSÁJ�N¶<» þÊü@Jr "##³Øk‰¯I‘ÐÂÊÊ îîî:Ç%¬4æÏŸ�aÆaôèÑ…œHÍš5ѲeK�ã*• ÔZÁ633ÓxQù�¸¸8ìÚµKç¸�®üÿµwßqU–ÿÇ_瀠ˆ Á=¿î‘Û̽s›šfš#Vš˜3˲ÌÔ’´2ÍÊî•«÷VÔ4I³TÜ âEçþýA�È9€ˆÔ÷óñà�Üóºåæœûs®ëú|î߿υ œ+-Ö2gÎLóæÍùöÛoùçŸ bÒ¤I¸¹¹1nÜ8*W®Œ——¯¿þ:?ÿü³Í¡E·nÝ¢iÓ¦°víZjÖ¬I—.]øú믙Ξ=;[¶l±Ù³9pàÀó#äíí�««k‚åÇŽ‹›£ckÞÀ€l&S ¢eË–q�ñž={8p >>>tèÐ!ÑkJJrRñ>Mȵk×X¼x1½{÷¦`Á‚”,Y’!C†ÎG}ÄÁƒ ÆÏÏ�nݺáíí�ÖM–Šý{pLø'�a�è{Pî(Ñ<ªCñ¾PÑBwBð¦¤Ïåøï”A[‰iD’Kˆ$`mVRC°ž‡ä‡~ÀÇLJ!C†0jÔ¨´nN’Æ�oõ!oóæÍüòË/ñ–Ù†5wîÜË’› ËÞ= I‰ŠõË/¿põêU¶lÙ›o¾ÉÑ£GéÖ­^^^T¬X‘ádzuëV"""¸qã�7&00�õë×S¾|y^~ùe–/_ÎâÅ‹yç�wÒú²ž˜%J0gΫëÂÃÃéÒ¥ ‘‘‘V×›L&›™°b{@¬¥ü�Ýw„ ´iÓÆêú€€^{í5‚ƒƒéСUªTáË/¿LÎ%%êiŒdÇŽ|üñÇT«V�œ9sÒ±cGvîÜI»víâR\oܸ‘aÆQ¡B…tõ÷))ûþk±þçÇùßé{ÞMâ/ÏÝ4æûµƒIŸËÿœ")¥WIÀÚæ™3g¬Žù´X,ÏŬY³fñÖ[oáããÃ_|ñT|â]¨P! duÝ Aƒâe‹ªT©’Õ°µk×&˜¸žÜDéùaÍÉɉ:uê0fÌ~ÿýw‚ƒƒùùçŸ)UªÓ§O§nݺ¸¹¹Q°`A™={6  víÚ8p«=LÏšÎ�;Ó®];«ë8À§ŸÚ.`í~:~üxܧµ‰eNrpp`îܹ6k„¬X±‚ªU«rïÞ=-Z„““Sb—‘,Ù²e³:ììÁT¼éíž>yò$S¦L¡M›6¸»»S«V-&OžL¡B…˜6mgÏžåèÑ£Lœ8‘fÍš=s”$¡|¸Õ7ŠS§NÅ«¯[ÔêaQQQ,Z´(Þ²ä#Ln!Âô W®\¼þúëøùùŒ¿¿?®®®Ü½{—û÷ïÓ¦MòçÏω'øüóÏ©T)‰ÙžÏˆÕ«W³~ýz›ëÇŽËŽ;¬®³ÖÁéÓ§�Ä É!çÎ�£}ûöq_©ÁZДžz@nÞ¼ÉòåËyûí·)R¤E‹ÅÇLJëׯ3lØ0¸|ù2 , gÏžäË—/ÍÚ*öS¾|yÌ\;�øvùÿýÌäâoñ—_ø·N­»õx?žkû¡`‘üdÏžýÑ*ò€§ãé@ìêQ2a=ë“З,YB·nÝèÞ½;“'O~ª‚ˆI³;nÜ8«ë>ÿüs.]º÷³­"ŠgÃrss#GŽ ¶{šz@‚��&“‰C‡±nÝ:\]]quu%GŽôë×7776lÈøñã ±2�¥ IDAT LÕT¿éÉîÝ»¹}Ûvz‹ÅB×®]­f³5¤)6¡ErjGxxxðÛo¿Ù¬2uêT/^œäq’ËZ›Ïœ97ÞÝÞà £££Ù³g£F�⥗^ÂÝÝ�víÚ±qãFš5kÆŠ+¸zõ*[·nåÃ?¤J•*Oåßœ<žL™2Q¢t .'‘×»!äm‡FÀѯàòvøëk88ò¶Œ© ’”+Û¨V¹Fê4\žk @$[Cl¬eÂz–'¡¯X±‚Î�;Ó©S'~úé§§æÓü‡½þúëV«B‡……ñÁÄý\¸pajÖLø´gÏžÁErRñ¦õ$ô”8wîµk׿öíÛlÛ¶�S§NѪU+Ê—/ÏÉ“'9{ö,ÇŽcüøñ8991räHÊ•+GÞ¼yéÙ³' .äêÕ«i}©æ³Ï>£E‹‰nsúôi«“ÆmMê>u*f Gr‹×+VŒU«VÙœ3ÒµkWvîÜ™¬c%ÅZbFÜýo� úÌ™3üôÓOtèÐ�œ9sR£F &L˜@®\¹˜ÑöÈÓ¡K§×9·ÄÌýk‰oWk”ð�¿¿… àØ7PbÔNºÖ'WÀ•ߣéÔ©Sê4ZžkOç•ï$?”Iާçé@ì&K–,VëBX @žÅ��7Ò¶m[^~ùeæÎ�ûLY¬Q£]ºt±ºÎÇÇ'nQ‡¬þ.ýüüâ 3²6$<<<Þ�®§©äøñãÔ©SGGG¶lÙÂüùóéÙ³'½zõbÉ’%6k"d̘‘F�áëëK`` çÎ�cÚ´iäÏŸŸo¿ý–_|:tèÀôéÓ9þ¼�¯ìñeÍš••+WZv÷ >}úÄ»¾L™2Q°`ÁÛ�;w°�Ë–mÛ¶Ù¼Ÿ®]»fµFÈ£J*oj ‹…0f̘¸d-[¶dõêÕÔ«W�¥K—rõêUvíÚÅÈ‘#©Q£Æ3ñ$O–§§'=zôàègÜ9›úÇ¿¼‚fÃ��Cu?JªP"VÙú„ûaÏZȶmÛhÙ²% 4`áÂ…ÏÌuŒ7—ËwíÚÅ‚ €˜Êâ/¿œ°"Õ‰'ˆû99©xŸ–�¿þú‹:uê�9sf6mÚÄøñãùðÃùôÓO™:uê#½ÙÆÅZ´h¡¡¡ìÚµ Î�;Gï޽ɗ/eÊ”aРA¬_¿>^&²ô¬hÑ¢,\¸0Ñßçõë×éÞ½{¼^0k= ±•Å¥ÄÏÏ�ï¿ÿž)S¦àããcu›‡k„¤DÁ‚­þÍ?nráÂfΜIçÎ�ñôô¤råÊŒ;–lÙ²1qâĸ:5S§N¥]»všà+)òå_â–5'½ÍÉ«±š,Qw! ‡#UªUáÝwßM½Ës-ý?Hš°ö€Dttt¼eÏRÈîÝ»iÞ¼95kÖdéÒ¥�ô€ô4È›7/Æ ³ºnèСqn¶zJœŒžœT¼OCH`` uëÖÅÝÝ�µk×òÞ{ïñý÷ßóã�?òñÇ?VÒGGGjÔ¨Á'Ÿ|ž={ eÁ‚T­Z• иqcÜÜÜxùå—ùæ›o8vìXºžÌÞ¨Q#›UÊcmܸ‘o¾ù&îgk= 7oÞHvêÜ?ÿü“ÿû¿ÿã�7Þ wïÞ|õÕW´mÛÖê¶±5B~�J.GGG«÷vl*ÞäÞÓwïÞeíÚµ 8�2eÊ�7o^zõêÅÉ“'y뭷غu+×®]cÅŠôíÛ—bÅŠ=u .$ýÉž=;3§Ïæâzƒý 5^N¢ïÃŽfî_pdöÌ9éþ5]ž @Ä*kó@""" !‰}£Ú�}ûöÑ´iS*V¬ÈŠ+yxÈÓbðàÁäÏŸ?ÁòóçÏ3~üxZ´haubë‚ â Ï%'ozïùý÷ß©[·.yòäá—_~¡[·n¬Y³†åË—Ó»wïT?Ÿ»»;¯¾ú*3fÌàüùó>|˜Q£FÁСC)Y²$… ¢OŸ>,_¾<îA==ñññ¡{÷î‰nóþûïØžSáè蘬î[·nñÊ+¯P¬X1¦L™‚ÉdÂÁÁ???ªW¯nuŸ+VÄVø¨l¥â5 ÃfˆaüñÇŒ?žF�áææF³fÍX¼x1ÕªUcÁ‚„††ÀèÑ£©]»öSÿš)éS“&Møþûïù{ìý¿˜Êç)uÿlkeæòFVü²ÒæE‘”H¿O’¦’› +v¸ÅÓüfzèÐ!š4iBéÒ¥Y½zµÕaJÏ ›U£¿øâ Î�;G¦L™hß¾}‚õW®\Áß߈y˜Î–-[‚m‚•^?-Û»w/ 4 hѢ̙3‡6mÚÈÆ�iÕªÕ?¿Éd¢lÙ² <˜ 6píÚ5V¯^M«V­Ø²e íÚµÃÝÝ�Úµkóù石ÿþxC›ÒŠÉdbêÔ©6þ!惊.]ºpïÞ=›,ɹ/ àW¯^³dÉ’x—...¬\¹ÒæëÔäÉ“™0aB’ç°ÆZrëÖ-BBBâÝÓ!!!øùùѵkW¼½½©P¡#GŽ$C† |ñÅ=z”³gÏ2}út^}õU›©„ER[Ÿ>}˜1cgæ8²¶¢#W’ÞçaçVÀ¯¥¸�™µ¿­£Q£F©ßPy¾"VìÝ»× ¦>j¼¯~ø!ÞvU«V5cÑ¢EiÔÒÇhä̙ӨR¥ŠqãÆ�´nŽ]X,㥗^²úûíܹ³a†±iÓ&«ë;uêwœJ•*%X_®\¹¸õùóç7FŒa÷ëKÊöíÛ�,Y²5kÖ4öîÝkäË—ÏÈŸ?¿qôèÑ´nZœ   ãûï¿7Z·nm¸ºº€áááa¼öÚkÆœ9sŒààà4mßÅ‹�}:îg“†ÉüßzwO7£q“FÆ|`$8Çĉ ÀXºt©Ív?~ÜÈ™3§Í6¤äuiÆŒV�åïïo”-[Ö(Uª”Q¾|ù¸å*T0† flܸѸwïÞ#ŸOäI 4*V~Á0™0òµ4õÃè�ñºaý«ó=Œ—æax½ä`ÆËÍ›.\HëË�g”±êÊ•+Vß„‡ o»Ø‡ÐåË—§QKSîØ±cF®\¹Œ *×®]KëæØÕþýû “Édõw¼sçN#::ÚÈ›7o‚u3f4nÞ¼i†atêÔ)ÁzÃb±†ayòä1FŽ™†W™Ð¦M› £^½z†¿¿¿‘#G£lÙ²ÆùóçÓºi6Ý¿ߨ²e‹1|øpã…^ˆû¿~á…Œ÷ßߨ²e‹qÿþ}»·+ ÀpvvN4É–#‹®E0 ½ŽQqøà¶mÛÆÕ«WY¾|9õë×gõêÕ´hÑ7776lÈøñã9|ø0†a°fÍF�EÍš5»PâØ±ciÚ´iÜÏÇCƒ �9a²µ$ån -ÿ2ðj`¢k·×Ù¸qc²÷õññaÀ€V×�:uŠ–-[Æ?ÿüÃwß}G«V­pww§nݺüøã�+VŒ™3grá«“ìÿþûït�XADäi¢Dl²–aæÎ�;„„„Äýü4 —.]¢~ýú†Á¦M›È“'OZ7)Í 0Àj Ìرcyýõ׬3 ƒùóç'YŒ0=¤á�?>¯¾ú*¯¼ò îîî|öÙgŒ3†I“&=“’Y³f¥M›6L�:•   Ž;ÆøñãqrrbäÈ‘”/_ž¼yó2vìØ¸}nܸÁ’%KxóÍ7ST(ÑÁÁ�† Pu ” �SÒÂ)ÔYeàQ/šV­[ÆKíœ___Úµkguݾ}ûðôô¤xñâ 8�Û·oóá‡ràÀBBB˜7oo¼ñ¹sç¶š +((ˆÈÈÈgò¾±7 bSr‹ÍAú@._¾Lƒ gÓ¦MVka<�œ��ñõõµºî«¯¾âÅ_´Z¯ÁÏϲdÉ’`]zé™5k]ºt¡sç΄‡‡3sæLfΜÉðáß‹¢o&“‰âŋӿ~ýõW®]»Æúõë騱#.\°¹ß‘#G˜0aB\¡ÄfÍš%Z(ñäÉ“|ôñþ÷6üïíÔi»ƒ¼´ØBÏHzôêžìÄÌš5‹Ò¥K[]NóæÍ¹zõ*›7oæý÷ß§bÅŠ ekˆÅb!<<\ˆˆH*P"6Yûdž¾äêÕ«4lØ�ëׯ³iÓ& *”ÖMJWZ·nMýúõ,�ˆˆ`„ Ô«W/ÁºC‡qäȫðbï�´ìùñÇéÑ£]»v%((ˆ 6°råÊ$‹è=Ë2fÌHÆ iݺu²èÃÃÃY»v- °Y(±ÏÛÿGÏ(^°^^&Å2¸BÕQìØ¶“iÓ¦%ºmPPS§N¥]»väÍ›—#GŽØ¼÷Ö¬YÃ?ü�èñlP¼wïž‘T DlJN1Âô^ ýÆ�4nܘàà`6nÜhsÞÂóÌd2ñõ×_[}`[¶l•*U²ºßܹs­Þ#'NœH´jô“6iÒ$úôéC÷îÝÙ·oÿý7›6mâå—_¶{[Ò£S§N‘)S¦í{æÌ~üñǸB‰+VdãúM”ÿ"Š ®pi=lï ¿†yN°(lj—wÆ?ŽaÀ_`U˜—¸ÂÚáì²øÛåª :˜ð�ðe¼Þ—[·n±bÅ úöíKÑ¢E)R¤ýúõ#44”Áƒ³wï^Ž=JΜ9­^Ç�!CX´h‘ÍëT""òd)›¼¼¼¬V°$ö¡ = ·nÝ¢iÓ¦œ>}š 6PªT©´nRºU¶lYúôécuÝo¿ý†³³s‚åsçεÚKFHH‹Åî= ¾¾¾ôïߟ7ÞxÂÃÃÙµkÕªU³k;Ò³=zÄ Ç4heÊ”IÑq¢££9xð Î�¯m̲ã?Á½`(5$f"ú‹s :6ÔƒàÍÿí{èC80¼AƒuP{ 8»Ã¶öpvyüóü¯ŸÁñ¿Oòý÷ß3zôhjÕª…››mÚ´aݺu4nܘ_~ù…«W¯²}ûv>úè#ªV­JñâÅYµj•ÍD]»veûöíV×.\Øj qÿþ} ""©@ˆØd2™¬>`> C°ÂÂÂhÞ¼9ÿý7ëׯ·šÍIâ5jÙ³gO°üÏ?ÿ´ú�zîÜ9›CyNœ8a÷�Ñ£G3dȺvíÊ/¿ü‚§§'»víâÿûŸÝÚ𴈎åëëK`` çÎ�cúôétèÐ�9r$û8&G(ÚÌÿþùWýmŽ™ ’«6äm õ×AÆ\ðç˜ÿö š ^  òDÈU'&ûU�e1AHÐìøç𬙠Bß¾}?~<|÷Ýwœ8q‚'N0eÊZ·nM¶lÙ´¯zõêÌ›7ÏꜟˆˆZ·nÍßÿ�`�“““Õ×¾ˆˆ ""©@ˆ$ÊÚ›‡`¥ÇäîÝ»´jÕŠ?þøƒuëÖQ±bÅ´nÒS!gΜŒ9ÒêºØÌV;räˆÕå'Nœ°Û$tÃ01b}ô�:ubÑ¢ET®\™­[·âííýÄÏÿ,È›7/={ödÑ¢E„††²{÷nFŽIõêÕíÅ2¢À£æ?gôL¸�ƒ3d-wÈðkv„ å/0gˆÙÖüÐK‰ÉÌ/UŒ+W®°lÙ2Þzë-›sÔÖ¶m[¾þúk«ë®_¿N³fÍâeö‹emVdddšgvyè•Te-¹~ý:×®]Ò_rïÞ=Ú¶mK@@¿ýöU«VMë&=UúöíK‰%,¿uë–Õ¡,[·nµzœãÇ�Ûe–a :”Ï?ÿœ6mÚ°páBÚµkǯ¿þJÖ¬YŸè¹ŸUT¯^�O>ù„Ý»wÊÂ… éÙ³'¹sçN°½›õ)Bq"nÂÕý�ý�ÄT¥†Â…_!È"ÃàÞ8øÜ¿%ú'<†[%:q:Å×Ô¿Þ{ï=«ëbk„ܹs'Þr[™°îß¿ŸâvˆˆH  ’¨¤2a¥§$""‚öíÛ³mÛ6V­ZEÍš5“ÞIâÉ�!&L°º."""Á²Û·o[ Lb{Lždˆaøøøàëë7`À€øùùáääôÄÎû¼qss£cÇŽq… ?~<%J”Àd—„1I<ûúÆÌ)ó@ÍËâ}¡â°§',Ì K<áøT¨³‚Só ÒDp{á¿åG¾€ß‡Äô„4Þ 7BÞÖ°µ œ_e弎1ß###SÜv³ÙÌÏ?ÿL�5¬®_µjýû÷Ç0 ÂÃÃ9uê$|“Ü´i5kÖ$K–,”+UбcÇrùòå·KDäy¤wjITRÅÓCHtt4ݺucõêÕ,[¶ŒÆ�§Y[ž&LÀÑÑ1YÛÞºu+Á²ØûãIô€DGGÓ³gO~úé'Ê•+G@@~~~ 4(ÕÏ%¶¹¸¸amcDÒáOáÏÏ¡Â(þÎËÃCb²`•ð� £Á³&xÕƒg‚gm°RÌ0êvÌwkÁî£È”)+W®´ùº6eÊZµjE^ooÆŒC]\ðÅ“­ ”bÜ¡87ø¿Sˆ,žTøë"£F|DÞƒ2%Jâïv‰ˆ2°•LÁ›¢$o‘ Å�?£ RârÍš6cúôéÉn‹ˆÈóHˆ$ÉVµkˆùôÛl6[ͳÿ$†Á»ï¾ËôéÓ™={6;v´ëùŸ9rä`ôèÑ�uŒÔê¹wﯼò +W®$K–,dÊ”‰]»vÙ¬Ò.Ož‹‹ +WàÂÊÿ~ÇG¿‚?FÆÔõÈÓB÷ÄÿÈœ t„¿¿…ƒïCȸ¸v¼S¬°äÀøç¹.ï°Þ†#GŽ0aÂ7nŒ››Íš5ã›o¾áرcV{æT­Z5æÍ›ÄÉÈA Q‹„ÅW“£XgÉC#o¾ù&~~~):ŽˆÈóÀd$õ*-Ï=¾ýöÛËoݺE�¸}ûöcM}T†a0hÐ &NœÈ´iÓèÕ«—ÝÎý¼‰ŠŠ¢bÅŠ¦hÿ¥K—Ò®]»ÇjÃÝ»wiÛ¶-›7o&C† ”*UŠ5kÖàéi¥è„ØÕôéÓéÝûMZ�kAX_.okï*&tù7ÉTt§çCØ)0™![)(ÖŠõŽ¿ß_áÀ àß© (@“&MhÚ´)õë×·Z¨ðÞ½{Η÷+7ÙAA²ñø=v= f�Ó]>l3›–ˆÈóLˆ$iÒ¤IôïŸ09ÿ¡C‡¨[·.ááá�4üáq†Á‡~ÈØ±c™ì¤~ýú)ž_ó8÷Æ­[·hÚ´)»ví"""‚Î�;³jÕ*鈋‹ £>ùŒãS!ÄzMÊÇrð°\sfæÌ™ <˜2eʤè8ÑÑÑìØ±ƒ#FP¥J¼¼¼hݺ5_ùúò‰Å=Ñà# &ÇÉÄ1^ ˆ…$Ìüö Ì̈òdw@@Ü0/ù�IRbÅcç€ØÃ¸qãøä“O7n °Ë9%†¯¯oŠŠû¥ôÞ¸~ý: 6dÿþýÜ¿ŸaÆ1{öì4¯7# ½ûî»Ô¬õ"=¹šzǽð[Ì<‘±cÆÑ½{wÆ�O`` çÎ�cúôétìØ‘9r¤èØ¡¡¡¬\¹’̆ Üݶç™ÃM>!'kÉG2Ñ™ Ì'ñ”»/áB#s¦Lš”¢6Šˆ<Ë€H’ ,hõAòäÉ“†a—á'Ndøðá|úé§ 6쉟Oâ+\¸0ï½÷Þ#ï–ôF¹rå õêÕã�?þ ""‚¯¿þšqãÆÙ=Ñ�$�ÙlæçÙ~8ÝÍÆæÆ©„o‚¯˜iÞâåÃ?óæÍKÏž=Y¸p!¡¡¡ìÞ½›O>ù„êÕ«?RÀë¼Iv\yü•06p‡ïñ¦79¨Cf~Ä›Fdf—±$11åK6öìÛÇ¡C‡’Ý.‘ç�I’““ H°<¶äI “'OfàÀ� >œ�>²’×SìâÃ?$W®\�´ÏŒ3˜5kþù'QQQInB�:uøë¯¿0 ƒùóçããã“Ò&‹�*Tˆ�ë7cº˜�õ/:º;eÇ1,pllyÙLÝZõY¼hI¢A…ƒƒÕ«WgäÈ‘ìÞ½›ÐÐP.\HÏž=É“'O¢çŠ:’5Ñm–s›,˜é@–xË{��‹D±—ðD÷o�+™Ìlܸ1ÑíDDž7 @$Y¬ òǬiӦѯ_?È矮OÁÓP–,Y;v¬í Læÿ¾gõ†ذ7�=zP¶l€KFwFIDATY²»¹Ó¯_?Ž9bu÷‹/òÒK/qüøq2dÈÀÚµkyõÕWŸÀ•È“P¶lYöìÚK1·òø¿dâÀ ˜ªçÉuíwØXÏÌþþðVïwXµ2~�Žäpss£cÇŽLŸ>�sçΈ¯¯/ 6L0„Ð ”ObâùŸÜ§$N˜‰ÿºS–ŒÁFø9b¢‚)Ht;‘ç�²`I²¼ýöÛL�:5Þ2“É„³³3Y³f%$äž4’iΜ9tïÞ�¾}ûòí·ß*øH, U«Výï�ÊdŽùØ:{>¨ù­ ¹Ë�ÓµîÝ‚óáŸõ8L#êf¯´ïÀ÷S&ãááÀÙ³g©U«/^$GŽøûûS¡Bû_ <¶¨¨(&L˜ÀÈO>&2*‚üí!ß+n•bŠÆþ["áÆ‘˜âƒ§g9pyo4…Š`Æ´YÔ­[7ÕÛuçζnÝʺuë˜3gž7îò7Öç·Åú')J~%¼å—ˆ$'‹ÃHXQýAïp‰íŽ<ö×c_ƒˆÈ³Bˆ$ËW_}ÅàÁƒ,wrrÂÝÝ�‹/¦êù.\Èk¯½F¯^½˜:uª]3mIâvìØA­Zµþëéh?Jµ€äüŽ¢"à÷ù8¬DVg3§O£\¹rÔ¬Y“�� (À¦M›(X°à¿y²®]»ÆìÙ³™<õ;Nþ@Æl8e3cDCø•h¢îÇdѫߠýú¾KóæÍqtt|âmëÖ­§æ-g{t¾D·K�d—ùÙÛ™33—°ˆÈ3äÉ¿ÒË3ÁV&,‹Å’ês@–-[F—.]èÚµ«‚�tÈßß?æÕß„V¾�1Kâ;<ÈÑ ª¾AtÉfÜXü´mÛ–Ì™3sçÎ*T¨€¿¿?9s&þ@'O777Þ{ï=Þ{ï=.]ºÄ�øóÏ? ÃÁÁ�œ9sR±bE*T¨@æÌ™íÚ6“É„AÒ=ªî8p•è˯a‰[Ÿ `6«÷VDäA @$YlÕIíIè«W¯¦S§NtèÐ�éÓ§+øHg|}}ùì³Ï åPhʔţû2Xúa»~ lÙ²lß¾Ýî¢bÞÞÞ´hÑ‚-Z¤uSpwwg§9+±E<åpf>·°`Ä›HLáÕ2ÿÎILQ¸¹»?V{EDž5zº“d)\¸°Õå©€øûûóÊ+¯Ð²eKæÌ™£êÁéÌþýûöþûÐ`Øã±Ìfxe TèHÐé3\¿~ýñ�)’ *Tàdä]n&�´% aXXÂíxËgq“<8R-ÈÇ(^¨Rå±Ú+"ò¬Q"ÉâââBîܹ,O­dóæÍ´nÝš&Mš0þ|œKgîß¿O×7z`Ê]š}–z6›¡ãÜwp¥×›½Ñ”4±‡Ê•+�Dݦ¸ÒˆÌ¼M0Ó¸Îfîð\Ÿ;|‰'¦$†qÝÁ‘èp*Uª”jmyh–$[Ñ¢EL6O�dÇŽ´hÑ‚:uê°xñâUÜ–'ËÏÏ�c�AÁÁFp8¯;ìŸcû >{ @Õ„Ë3e'ê•ïñŸÞšÍ›7S¿~ýTi³ˆ-%J” pþü|ö�pMtÛeäåC.ó1W¸F4%qby’¬!0Ÿ›DcЬY³ÔjºˆÈ3AY°$ÙzõêÅŒ3,/Uª”ÍÚIÙ»w/�5¢råʬY³æ‘óþË“g*VâÏÈÜXÞ\m{ëAvåá½aZKÈ� >:ý_Ö„'Áq|iZ×,Í’Å‹S«é"6�?žï¿ÏyK<žÀgq•Α§IV­Y“êÇyši–$›­‰èÑÑIÌä´á÷ß§I“&”/_žU«V)øH§<ÈáC±¼øv⺎éáxð+òܹUºÛ>L&¢j¼ÃòåË MÕö‹XÓ£Gœœ3òÍ©c>·8}‡þ<‘㋈<Í€H²ÙJÅ›’äðáÃ4jÔˆ%J°fÍe?JÇvìØ�ÉÑ þ×èÑwÞ;=¦^Hõ^Io[º–èhöîÝûèçyD9sæä˯|ù�ëlàNª;˜(Þu¸Â«;Ò¨Q þnDDžq @$Ùlõ€Ü»w�¨¨¨dçèÑ£4lØ�B… ±víZ²fMz,µ¤�à�§\L �G~þXÅ@ŽüIoŸ£Ž®nÿUYyÂúôéCý:uyÝ!„D¤Ê1ïb¡ƒÃ%³eá»É“Så˜""ÏMB—d‹ÍLe€Ø�ãüùó¸ºd¦|Ù²T©Q�N�:Q³fMLV†ÜüóÏ?4hÐoooüýýÉž=»ÝÚ/ †AXX!!!Ç}ðß7o#ªT»G?øïó!êTKFï€É„á]–¿þúëÑÏ%’f³™ù‹RûÅšÔ;sÿ¨Ü”Ä9ÅÇ»E4­.rÐ)šõ«W©¨¦ˆˆ @$I¿ÿþ;Ÿ|ü1«ý•̘©‡ •ÉHiœqÁL$§"#9ðûqÖ>ÊäÉ“)[²C?N—.]â‘   êׯ�››6lÀÍÍ-�¯ìÙn5˜°¶ìîÝ»‰ÌœœÏdÕÞé�9'”k›ì]¢�²$Ý‘TäééÉæíÛhT¯>•�Ÿà ‹;ï�#^áÁäØÈz9^æFÆ ¬[»ž5j<¡‹ˆ<ý€ˆM|öÙgŒ3†ÿ™2òƒ‘‹×ÈFæDFîY¢ 6r‡IÇÎÓµkWæÏ�Ë�Ó¦MýúõqqqaÆ xxxØñJž/ãÇ�gèÐT(ËX’?Ä€‹‡áü¨=ÀvÚ^k§ŠŽ$CÍûòööfÏþ} :”w¿ÿžyæ0Z²Óš,dH$10ØM8“¸ÎnQ·Fm¦Ïši³p«ˆˆÄP"V]¿~�Í^& €� 7†“§d|"hÆD#\id¸²Š¬ôÙ°™²%Ká’5 ÎÎÎlÚ´ ooo;\Áó+Õ{–¢£àÚéGÛgïô˜ïÕß|¤Ýož%W®º�v.‘TàêêÊ”)Shß¾=#GŒ ÃîÝx;:Ó Ê™Jd¢4N¸`&ƒ "9@8Û#8u—" 2uø—ôîݳYS+ED’¢D¸uë�4 èð¶ù©NÊÒã¶$ 5£\xùö9„]dÙŠäÍ›7•[û|‰ˆˆàòåË6‡S…„„pâĉT>«g÷%ó¨û°ßòW¯RÉßï~‘ÁǨ\yð£7Q$•Ô¯_Ÿú»vqøðaf̘Áž;Y|ø0÷#ÿ›¤n2™(Y´•kTç«×^£Q£F ’rp!üÜ:þ”¼ô»±þÙß7âСC”/_>å Ie‘‘‘œ;wŽ{÷îáää„——®®)˜%""€yÈ‚ èܹ3‹ÈCR/=îE")íp†—;¶gî¼y©vÜôÊb±põêÕdM åá?Ã9rıßüwìw�¸ìd±ÎŸ?O¾|ù¬¶Ël6ãééióxþ;GŽ˜L&îܹC.ïÜܩ֚žôÅOm§wç—À9ùó9L?w¦ðíƒÿû/«ÔDDDäÙ Dâ„……Q0_>êß4XdäNõãÿÌMºqÿ§²8—aܸq#É^Šàà`._¾œ @c–,Y¬>è?Äö:¤TDD|ð�Õs¸»»ãààðÈÇôññaʬùD�8 ¿W,�[—0}V€‰¾ãñññIý㋈ˆHº¡DâüðüóöÛœ2Š�Ÿ ¬'ŒÜd/áœ'’̘©N&F�“š¸`ÁàK®²Ž;rŸ[Dã�#­É§x�ƒÿv ª8œÃ«qmVÿúkZ]f<±u0’“®6$$„ˆˆøÅÊ2eÊ”d/Eì¿]\\Òè*ßñãÇ)U¦ QµÞƒãRýø¦9¯’íÌFN�<¡Ú0"""Ï8 Ä<ˆW(S–Â�c¹‘€Žœ'”h:’•Ò8s“h¾â»¸Ë:òS�Ì„aÁ›ãt"+MÈŒ7ŽüÁ}>&/ÙOA2>�¶w7xÓ̉'žhªÊ»wï&»Fxxx¼}3dÈ�d/Eì2WW×çf¸Ð˜1cñÑGýwA�j©wà?–À¬ÌŸ?ŸN�:¥ÞqEDD$]R"œ>}šB… ±œ¼´! —‰Âó¡Di÷±P”“”À™õäÇ‚ÁM,ñz:Öp›–œçgrÓ…lqËïb!‡é8¾ß|Í»ï¾ûHm¼ÿ>!!!‰±ÿ¾}ûv¼}’=÷!{öìÏMPñ(¢¢¢¨þbMþ8~ž¨~Û“7!=)gp˜Ú€6Í›²xñ"ý¿‹ˆˆ<”†W8pà@¼”»Θ)Žç‰bê~<|”ÿ7{Vìv±\0SÎÁ%î|QQQ ÒÊÚ깸~ýz¼c™L&<<<â‡B… Q½zu›s”&óñ8::²zå ^|©6ç&×&ª×ÈóÙªþوìvT~¡³gÏRð!""òœP"n�«kžyúTªT‰… Ì¢E‹Ø·o»6qá÷YDFF�ÁÉ™ÂEŠR£qeªU{‡:(Í®ˆˆÈsNˆP¦L¾� ç2²ö§„ò)Wø”œ¼ocèÕu¢iÈYÎÉFòSÛÅêþ0GR¦ÂcL^–tÇËË‹þýû§u3DDDä) ´@Ä|’mÁà ÷â-ÿìßàc9ù«ûƧ‰ÄŸ|q°¬108`ºO¥Ê•Sµý""""òtPˆPºtirfÏÁ²·yéß*ç_q•‘\¡)™iŽ+{ˆ_°¯:™ÇBÎrˆ{|M." Þvž8Pø�¡X[¸ËõèêÖ­k�Ë‘tF“Ð%Îûï¿Ï¾¸]ÌÔã Û¸‹µÄDS’ÓDP˜“˜ÀêvÝÉÆ rÇýÜÁt‘£Å¼øóØ_ªû """òR"qN�:EÑ"Ec¸3,‘4»)u˜{T4�æ›I“èÛ·oª_DDDDÒ? ÏàÁƒùnâ×´ ¤•"‚)‰A5‡sDËÏþCqvN½c‹ˆˆˆÈÓCˆÄN…2eÉ|æ[£ó’…Ô)7ˆ¾1ß`o@•*UJ•cŠˆˆˆÈÓGY°$žL™2±péNf4ÓÂ|‘[D?Öñ FÊ®1aâD""""Ï9 ’@… øÍ¸˜¨îpž}e¿J®+DÑÉt‰Q\aܸqª!"""" @ĺ_|‘]{÷�©L1ª›Î0˜Î™¬}ïba×)åp† YaÁ‚ 6ì ·XDDDDžš"‰ŠŒŒäË/¿dÜçc¿N+²ð²áB%2Qgœ0a`pŠHp�íÜÅÏá7,‘´o׎o¿û//¯´¾ I'€H²Üºu ???¦ÿð#‡þ Äb±àh2õÀ-”×Ë‹Î]»Ò§OŠ)’VÍ‘tJˆ<²;wîðÇð÷ߎ““¹sç¦R¥JäÊ•+­›'""""阱MB»Q""""""v£DDDDDDìFˆˆˆˆˆˆØ�± """""b7 @DDDDDÄn€ˆˆˆˆˆˆÝ(»Q""""""v£DDDDDDìFˆˆˆˆˆˆØ�± """""b7 @DDDDDÄn€ˆˆˆˆˆˆÝ(»Q""""""v£DDDDDDìFˆˆˆˆˆˆØ�± """""b7 @DDDDDÄn€ˆˆˆˆˆˆÝ(»Q""""""v£DDDDDDìFˆˆˆˆˆˆØ�± """""b7 @DDDDDÄn€ˆˆˆˆˆˆÝ(»Q""""""v£DDDDDDìFˆˆˆˆˆˆØ�± """""b7 @DDDDDÄn€ˆˆˆˆˆˆÝ(»Q""""""v£DDDDDDìFˆˆˆˆˆˆØ�± """""b7 @DDDDDÄn€ˆˆˆˆˆˆÝ(»Q""""""v£DDDDDDìFˆˆˆˆˆˆØ�± """""b7 @DDDDDÄn€ˆˆˆˆˆˆÝ(»Q""""""v£DDDDDDìFˆˆˆˆˆˆØ�± """""b7 @DDDDDÄn€ˆˆˆˆˆˆÝ(»Q""""""v£DDDDDDìFˆˆˆˆˆˆØ�± """""b7 @DDDDDÄn€ˆˆˆˆˆˆÝ(»Q""""""v£DDDDDDìFˆˆˆˆˆˆØ�± """""b7 @DDDDDÄn€ˆˆˆˆˆˆÝ(»Q""""""v£DDDDDDìæÿ8pä>áIEND®B`‚ipython-ipyparallel-14e3c43/docs/source/reference/figs/frontend-kernel.png000066400000000000000000004537511520071063500270070ustar00rootroot00000000000000‰PNG  IHDRªÞÏçÉsBIT|dˆ pHYs × ×B(›xtEXtSoftwarewww.inkscape.org›î< IDATxœì�w`U÷°Ÿ-é½Ò€�Fï‘ÞDAÅöZÁÞyDPA° ¨tTš H‡$$¡¡Ò{Ùúý‘Ýuv¶„¬hòýÞyþ�ÌÌž=çÎÎ�{î=ç\™^¯GBBBB¢a"“ÉÞfÕ·ÿŒÔëõ›ë[ ‰äõ­€„„„„„„„„„„„„„„ÉQ•������������hPHŽª„„„„„„„„„„„„DƒBrT%$$$$$$$$$$$$’£*!!!!!!!!!!!!Ñ �U ‰…ä¨JHHHHHHHHHHHH4($GUBBBBBBBBBBBB¢A!9ª ÉQ•������������hP(ë[ ‰ŽpOO"@&«oU$$þ1²‹Š8WT„¾¾‘����¸cHŽª„„„ÄÿQ‚]\øÏã�ÓvРúVEBâåjj*ófÍâlQQ}«"!!!!q‡�B%$$$þ�ÒØË‹V=zÔ·ÿ8ÍÚ¶¥±�O}«!!!!!q‘U ‰E½†þ>÷¸«·w"Hi%ÿg‘U—•%]½úÅ�EEºúVFâ™L†LÊO•���øGëëëÄÕ·ÿ0?åÿÛ_ZoŽê­Zõï<~üçáݺ¹Õ—ÿ7ÒÓ>¼|y °²¾u‘øßF«Vƒ¾nó‚2¹¹ÒüU¡ÓjÑkµuþ~…³³ù½¾F§ºÊqr²(uÇlÓhÐëê8§$“Õè$äNÚ¦RÕYŽL¡@®P˜»S¶éu:tM�u’;9™Mšèõzt´‘\©D&—Â$꟱¾¾¡Q={îkqÏ=Më[ ‰’«Ç�çLŠŠzà›‹ÿ›ß[oŽª«—W‡�Ö­%'UâÿC¡ÓY½F¡P˜äÈ­8ÛV¯fî_Ð=!�ȈRÒÒøíµ×˜3{61�:ý%G©üKŽ §p΢E<4t(÷Þsöïgú¬Y|âïO”ÈéQÈå5Ïj-¶]ËÈ`ùªU\/*²êˆÊ�rÀªm™/réÚ5ÝwŸÙqß  ³k• …I–5'ìÊ™3¼óþûtŽ�ç?O=ÅùsçXüí·„6kF—~ýÌ®• tRŠlk…‹··Ùõ©IId—”Ô¤‰ÙµB}¬µ÷/kÖp,-�q#GâììÌšM›X¿r%/ý÷¿f×) ô9Öl[¾p!?nßΈ>}ˆ‹�eß¾},˜;—?ùQß,\}Ë©*+ã‹ pqqaâÓ””Ä'K—âáéÉ݆ikr$$'·nu¨ð™^§Ã§qc" {^ßHK#'#ñ‚az= Ç#W((ÏËãü8^¯ÕhˆJLÄ»Q#ôz=é?ýTçE¨±- <œf;Ôä¸_»f19w;(œœˆ2€âë×¹tð Ã¶E÷郻Ÿ:�†ôŸv¨­u !114Ž«)ø|ñÀÊnÝ‚ºÊÒëqqw§uÿþägfr5)É!B«V;p .žž¨++9µu«cr4BÛ¶%¸eË:öNSoŽª_hhTûûïwè³eyyÜ8y’¨ž=¹uö,�Ç�sX�dCžKîùó´¾÷^‚¼)Â<'ôzڜֺ’Ÿ™ÉÍS§hÖ¡ÅׯÓéoä9%¯[Gã¸8n¤¥ÑnļBB’“ºy32™ÌäØÅì�œk'NP˜•E`Te99tp0L¯×sbÃ##¹ž’B§±crxá¯ûVQP@`x¸Éi­+ ,'ÇfKÃ)‰úÆš3§ÕhXóŬܰ7¥²&ÊÀÊKMngeN¯Ó±ù§ŸèÕ©|þ9e<:nÛ~ú‰„nÝL×* Ó³`Íáù}Ó&ºÇÆòôÛoж{wŽOòÑ£D:>/”kMo�FÃW îíÍõ‚«m  Xsæ®]»FL‹<÷Î;ò…Ô¶¢ºmÓ&š…„ðúŒxøúr/PQZÊé¤$z&MŸÉÊýÔSf×Ûµ‹õ[·2ù‰'��5—#\uÙ®ª¬d÷Þ½ êÝ›QO> @uUßüð³³ LlÊårSEe±mU¥¥lÙµ‹{»taÊŒtï×�ñ<À/kÖ0éÕW­êd­�¶|ÿ=—oÝbåw߯ÀñãѼø";¶o§�è}!­¨J4$Š®]Ã+(ˆAWR7mB«V£pr"7#Ãá:¹.�}ò$¡mÛréàAÚ�íP˜¼qœÕöþûÉ=ž�èh“CVWRÖ¯79ª…W®ÐÁÁqíµ'ÈÏÌ$ "‚ËGŽÔÔpÀáÕ¨TœÞ¾�ø¡C¹’”DX—.ø7oî�NÉk×Ò8.Mu5UEE´w0?cÏÊrsñ âÚ‰·QuYöí#fÀ.þت=f!»6l(-(`éÒ¥ôéÖ�‘“&Yôá2;¶¹º»ãëéINn®éxAAN ^¢ö–Ëå H÷ž»zþ<9ååtêÜÙtÜ78˜öññܼyÓî}Ÿ»yó&í[·¦qd¤éXÛvíøâ›oP——ã*ZI–�hÈd2ªJJðEYÔWOOSr¥³³Ãr<ýý)¹y³æÙ×ëq¥nÕ¹!¦º´”€æÍÖÉIü=Û(ÍË«éË”JS~]Q*•èu:“m>!!«~ƒL&C]Y‰»�Ïß²MUQQkôSm(}}ѪTÈd2Teex9P1ވ𾙨‡(–úsTk)¤q1=�ï½ÇÓO?MwÃÖF”‚Ƴ•ç²ëV~þé'®^¿Ž·§'Û·ç¡§ŸÆÓÏÏì:{3Îç’“ÙµmI))øúøÐë®»þøãv« ÚÒÉÈ­¬,>|óMz%&2ú¹çÌÎ)Ÿ³*G¯gæK/Q(ÊÉìÒ¾=<û¬M�ijòe……¬X¸�Ô“'qV*éÜ©CÆŒ!04Ô¦ñ}Ûµn[¶nµjg·Žû Ù¦Püå [»ÿz=›–-c÷ï¿“_TDXh(÷?ð]úöµ*ß J¥Ò¬ÝlÝÊæM›È¾u‹¨ÈHzõìI+3]òZVS*JJøñ«¯H>q•JE§¶m™øÒK¸xxØ”#!ÑP0†ÆÚzù5 ç›U« gù§Ÿ–á˜ðW(ªµÐO/ž­6¦ýù'GÏžåùG1»VúkµS*qvqáÌñã¬ÿþ{Ž$'ó`Ÿ>ô=Úr%T(ÇŠmiðÃÆ�L›:•ÒÂBÀú3. !뤪¬äÒ•+”±{×. ««QëtL5Ч «¾&ÕáÑ«Žeeä!«¨à¹‡â„!¬oXïÞLž:OÑŒ·XŽ­÷ɺe˸œ�͇}„“•íbj ý}ìñÇY´x1/Mœˆ«‹ 23yîÉ'ñmµ¡P(�vb9�›7ÇS©äÚµk¦ãªŠ 2.]"ÐÏÏn¨µø\~a!Þ^^fÇ}ýü(Q©ÈÏÎ&LPýØŽ.!ÑP¨ÍÁȾt‰½[·š�‹ŒÜN€‚ìlŽìÙCqq1A��$TS³E¤ƒIŽ�±è•Ó§9´o—23 cÀˆø7ibq]]êä]»ÆîŸ¦ÿý÷ãÛ¨‘MÛ¬õCWΞeç–-2ûH˜`Wy¶•æçóó?p9+‹æÍšÑ-1‘–:X*lìó±oúúknææZµsÀСDÄÇ›éaÏ6�VËεkIMKC§Õà CzŸ�Û¹oGvîäà�¨T*âãã¹{Ð ŸÆÜDërŠrrØ¿s''Ož$ €{úö¥¥¨vƒØ¶ú¤A:ªç’’ødÞ<.äåY}ð�N‰­—oÊ޽̘7�¾]»2|Ȯ߸Áº­[©¨¨àÕ™3Í®5{‰‹¾K]]Í¢ ðóóãñ ¸qã_}ÿ=2™ŒQ¢ð+³<';¶éu:–-\HÊÕ«$Z³M¡øk`iEÎÍK—Ø}âƒñ &5kfs@`š}Wš7u*WsrxèÁ©¬¨`ý–-¨U*þóî»¶åˆtiÒ„QÁ”œ+WØ–”D¿>}Ì© Ã`ÇÚ”~à‹¾ûŽñC†ÐªuköìÙâ%KhŸ˜ˆ›(O×4�òMúýw¦Í�KçØX&MœHff&_.[†—··eˆ�`@hí¾­Yº”]û÷3jèP´ kù•ZÍdCˆ›Ð6»9S ä�—øßÅZ_ê`rJl9`¹¢joÀ’qâ³æÌ¡}Ë–<ôÌ3yœµM2ÜÌÊB­R¡×éÈÎË#óìYºv5»ÆÞ ª¢¸˜ÏæÏgäÀ�Ü5p ;üÑêubÛÄm³.^¤Yp0Ûµãñ—_¦ 7—Õ_~É¢~ eL }áyf Q_Rtó&ùeelÞµ‹1#Gòò«¯’tìKV­Âÿ³Ïxqút«í`Ë ШÕìÙ·�¾wÝeQ´ÊZY„lëõäçåQQUZ-Z­–ÊêjJKJLýª™m†Âwâûƽݺ±ý÷ß &:&†]Û¶QXR‚§�jÌÖîqq1ááfÇ=<<Ðèõ”™o(ƒ( #öœ¹Š’Ì™CNNO™bq^VK›vàÌš…V£¡e³f$�?ÏÖmÛ˜úÑGòÀk+X—}éS^y…˜ÈHZFEqððaŽ;Æ´Ù³-)þRÈ®®×ëY¾p!Û¢{Ïž6mj.§gîtj*ë·o§M‹fÇ-Æ�öÚ¨$/�÷^y…j�†n;röÌ6lÙ ˆõ‘öRGroÞ$óêU³ëoåær£°�¾ýúÙ쇬ٶiÅ –~ÿ=÷u놓»;ËÖ¬¡¼¢‚G^zÉì:…\nÚãÜjêȪUÌY²„„ˆbbX¿q#'““ysî\‹èC“NVäèõz¾øè#’Μ¡oÏžOIá�˜>m­Eé5 e¦ÞU[ƒ”5‹óõ�?ÒÆðC·vãkììýýwB||xuÆ \==¨¨¨`Óöí¼PZЇ`ÂÞŠêÎï¾#77—÷¦O§Yt4/^äÈñ㌯^ÞÆlÀ†/¿äòõë4óö¶i›½6ºtö,2™ŒÇž{ŽÆQQV¿Cl›µÁΑ�;9zêø! y™îìÿýw*‹ŠÌÂÌr¸D:uîÓ‡Î}ú˜þ./.fÊSO1¨[7F<þ¸Y8œ½ÁÀ»vÑ62’gÞ}™LFLûöL˜8‘}[·2øá‡­Úf|…²~ûõW¼]]yoæL| 9£……üøý÷ôå›…l‹Ú(3=�µ;v0ùÉ'þè£øùùñÉ—_òÀùó„ òÁ ä�–�°Em³ýÆ ©ÚU{q'â­·ßÆÇÃ>þØbe΢¿³!gàøñ ?ž’ü|&�ËŠ¥KYp×]fטú7+¶-�;g¹œ1'Rš“ƒÆ�RU\Œª¬ wÁ ¦Ù@Cdt§N¬Þ±Ãô·op0ÿyýuvìÛÇñ£G(¨� P*mæßzûùá¢TÃóÓ¦оwoN�9á£G™"Z¬-jª#Ÿ¾z•)S¦ØuMú‰Úèä¡C|°`¯NšÄc¯¿ŽL&cãW_ñæœ9„GFšå„Ö6@œòî»Ìùï™»d ®J%½:vdø}÷qíæM«+ØBÛ„xyyQU]m¾ª­Rá*—Ó42RrT%µDv$ïÙÃW_~IÚÅ‹„Z½F‘a­¨ÛÊeË âƒyóð æÜÑ£<ÿê«lüî;þ#ˆhNš[{V7¬\Iã  >Z²…“÷�8ÁãÏ>Ëѽ{6a‚Ùµââp¶ú™M_Í¡ädÓ÷Û‹¢°¦Óµ«WIˆŠâ3+ÕÕ…Ô‘³cÃòŠ‹™÷é§„µn�^§cÊ„ l_»–Eérã‚Û^üà³k¯ž;ÇK/¾ÈCƒ/zÙ‹ZÑiµìÞ»—a½{ó¢¡ß÷›;—]{÷2öÉ'q¤2È t6lÓTW³fÝ:ºÅÆ2çË/‘+• 9}šÇž|’¸•+-êÛÙ¸Z,ä×~`Or2‹çÎ%î®»¨(.æÍçŸç—õ뉷2ÜúÙzuT­å®\>}š'Ç�#¡m[ö¾ø"r+9Eµý=xèPúô틇��Õï´•3#Îúä“Ü;z´É±­(.æbVÑ­ZÙÍs’Û°í\r2«Ö®åõW^aþüùVÛÀ,ÏÉÊù«W¯Ò²IüCBØ¿e ´ëÕË"Œ@ŒØîäcLjlÒ„Î}ú�wõ*…99 7Ž!¢ŽªF ó#{9GßΟOai)3æÌ±EÏΈåx{yq#?ŸÊâb¼¸uõ*¥*®öòk­Ø–“›K§¶m „²´kßžCIIhªª,Âv…v å\Ï̤Z¥¢Ç=÷˜Ž'öíËœE‹8�šj¶ŠáPu> ‰S¤‡�¾Ox�ÕUÁ ÔVß�´go½ý6Í‚ƒ™¹`�Å'FL;Q_¢ÓjIÙ³ß�¢ ¡U~ÁÁ$ÞuùUy¹Ù‹]¬�PÖ¡C‡È¸qƒ†Âoz@£×óÄäÉ<4lo}ò‰…ãÿ…rŠss¹˜žN›ÄDSÔ´)Í5¢ªºÚ<ÿÖКÂsþMšÐØÏ�V¢wGTTgÏŸ�… ¿4‹±qßöîÙC÷øxz fsæ[fç¾¥;†·›#'N4 fF<ö_¯XAzz:ýÅ<ŒŸ³vßš·jÅÂÕ«¹‘‘�ÂɉF¼:i!!!Vu7êÄçüýüÈÏÏ7;^RRB³€BÂÂ,æ†0ˆ’�0bí7}ýüyÞz÷]º¶mËðÿøqëÏ„�:å……x¹ºÒ¹GSíØîÝi×¢W¯_·¨ ³! ÿÀ�ô:gÖŠZ­…\ŽF£±¸övÆ~'N°jíZF$&²|÷n«ï™Úä\½z•¨ÈHär9…ׯãפ‰Õ1•xA@,çÀþýÜÛ³'‘qq5Åß >üì3œ¬ÔOâÙ«sòÕgŸÑ8(ˆ'^}Õ®q{kU*Š‹‹qvu5÷pwçfA•¥¥fa»r¹Ü´˜XNVFssuÿý8rŽ#èOæå˶u²rÿ/\¸@ÇÖ­iÓ«P“ºÓ­[7ÖnØ€N£1ÉÛVŸ4¸Ðß·?ÿ¥‹ §°y]m³*íî¾ÛìïìÌLöÿôSÞw=fÁ‚vW‹mÙvåÊ Ëʘ8j•j57JJèÓ±#o͘A°hû¡Nâ�”ââbBøèÕWùuÿ~JU*Ú·hÁËo¼a1«b6Hµ³š’~à?lßΔ'ž y«VçͶ¸°"gĸq\¾t‰§'N¤uË–OMeüÀ�ô:Ôæ �qæÑ,§ÉLJ+W¯"S!­K/’W^NÖéÓÄvïn¡“ñÿB9…EEøº»Ш‘éx`h(~”——›‡¤fÕ$$"·³¢j-T¨µ2îñ={xùµ×èÇçÏÇÇF³ˆÌg{ur9ô�AA|ñã�¦géü¹s4 ÀÓÏÏæó%¶íÍ·ÞB+ØùLRs¾ûŽi“'×8�‚kí­ܹ“Þ{�¹ï¼Ãè§ŸàèÎ�$_¸ÀQ˜½UG¥RI||žùK–�í!áá$?NdX.¢½ª¥ÉA‰††µ>ÖËLJ÷^{�{G�f¹a�ÂjÔŠÈ™3{Vƒ‚øhÅ ³ë³/^$õÂF hÑ×±:>îÝ€œ«WÙ·c»ÿ�Öaaô4Èæ³*ÃzeuuU‹çϧß=÷»w[MY³—:¢Óh¸|å ­–ÿŒËÉK—ˆ c£�Ò{Ä39b'Ü,U¯ªŠœü|zzy1ÿ½÷H=yWWWúßw£ž|Òf!“YI�°qÅ ~?~œ%Ÿ|bQK@ØFFýÌî…—#‡ aý/¿ œ=g¶ýú+ôëgV0ÎøY�@¦PŽ»‡J™ µZm:®Ój))-E«ÕÚŽ¨ÁJ€‚üýýÍÓ7BBÈ++£äÖ-Bz5”ñlƒ ý53¾­=ø·›çpåÜ9Þyýu” ÿyåËÑNè§‘âü|òrsÑëõ—•q.-�¸Î�Í®©-4né§Ÿ¢V«yúµ×Lç¬énVL Ë™¢ºš¸ˆ^|óM……±cíZæ,ZÄ7Ÿ}Æ{†b(¦ÏÛédŠŠŠH:uŠÄŽùdÖ, Xµf ófÏæ«~0…L‹ÛÈ^Øßï;wäíÍÐqã¬^S[øXa^%hµZô:�†òÊJ*JKñ'Œ‹î¿PÖ]=zðÞ¼yÌŸ:•>p:-�ä¤$tÔla3¿@ÔF¥eeø¸¹áîãcº/J¥O77ªªª,rußaLBâßÃVXšcfõÙµ3Ш*/gÞGèîν}ûrp×.Ó9Oz�ù—vÂc† ÂôÏ>ãã×_'&.Ž#‡³zö  IDAT7%…i/¿Œ“8G “ضޢ­Ïª**�m{ô N´}„½AÔ}#GÒyÕ*–¯^MeU:�†Ÿ·o§]‹Œ{òIó> –âÃ�>ÊcÏ<ÃûÏ?Ob¯^>|˜ô øxÆŒZ�9ñùœ¬,.egó�(ŸSŒ½¾{ðرü°nÓgÌ`Bf&ªêj~Ùº•Æ 3æ¶�p”JºtañòåøâÀšuëèÃÄÉ“- Ý™ä`ù[ýØc|¿v-Ï?ù$£‡çÈÑ£üqäß,Yb7„XB¢^D,ˆ§Áaaô7L#æ¬:ªµ,R)+,dáÇãíéɃ‚ˆ¨yVííçläЯ¿²víZ.ää0að`¼E“S5fÙ^ìøjþ|*ªªxæõ×9`H‘°ÖB9â~è|j*· ˆ ã±Ç§¸¨¨&÷völ…†’ \XŒ�Å‹&ù¹¹äóëŽ4mÞœ¡ƒ‘žžÎGK– tr²�‡Y[m'½žÝ»wÓ³];ºŠöº6R[ÁºN={òǾ}lܶ …\Ž�‡½ú÷·Û+þ*X'¾oÍ¢£éв%»öì¡s÷îÄtêÄO_}Eê… ÄY©Ælïþ.úŒ——Õz=·n*Xdj(ëêÏQ­¥ê¯ñÅ(vàöóœ.¤¦òöo ×é˜÷é§„ÇÄXê!pælͪ„†2{ùrt:¿ù&s.¤W¿~4Šˆ°�cü¿PÎþ­[Ù¸m3Þ~mUeee5'4Êrsñ$ÂÛ›1øpùr³¿|æŽ;ÆÑ¤$³™z1âÑÍÍ µ^Ïs¯¼BT›6TVUñÎܹ¤îßÏ]†M•ÁþLŸ‘òâb~ÿóOúß{/�VªÇm3bͶ…Ÿ|‚‡»;KwìÀÕÛ—/óðØ±¬X¼˜wæÎ5»ÖÞ@nô“OrëæMVoÚÄê_~!><œá}ûrqÕ*"cbl;ª"Û¼½½)©¬D¯V£4„ɨ««)¯¬´˜‘’Ëåüµyƒ„DÃAfge†V‹‹^o}eçe¼gófNœ9ÀëS§š}®{\œEÁ!{/õ'Þx'~ùå~Û³‡¦¡¡|:}:£žxÂâ…i·Xœoooz%$àîéió¥nÔOxÞ/8˜O/fɧŸ²fýz í˜üöÛ‰ �( ³êÈâï¹kÀ–/YÂ7K—2áB¢""˜ùþû }ä }M#VŠü\»x‘ޱ±ÄÄÅÙwT_q{û‡„°èË/ùâ“OX±bjµšø˜¦Î˜AxëÖ–¶ÙD�öY*++ÙùÛo”WTеkWž4ÉbT¨X¾»}ƒ‚øü‹/˜?{6ËW­¢eË–Ìzÿ}zYÙ»[.“"X$µF­Èþʉ´8w›ë oÝbê+¯�–‘ÁôwÞ±×ÞîøxôÓOóÀ³Ï²Ë¦ÍœIÅôéL_´ÈìqJ„PÖ¡_eãÖ­Ì›;þµ¬�ý£;vdó† 6mjJ׋oßž~˜Ý;vоgOÓµöÆ�ÆbD.žžÌ_¹Ò4)P8z4Û¶mc¬½]1lÜ·ã»wsèôif½ù¦íUK;cÈë<ûüóôOLdÞ¢E(�œøvÑ"ž{å¾Y´ˆö†ð[£þ¢€¬Eä<7e ïÿ÷¿Lxúišùû#W*Õ«9%%v'ñÄç\\\ЈVau:N2ÁÁ6ÇÇõI½9ª¶ò8Mç ?lk×É Îœ­|€ÓÇŽñÆë¯ãëáÁsç&zñ õ0 RD².¥¥‘—“C—ûî«9¯Ppoß¾|³i)‡3DP¡Lú+”s`ß>rJKyQ°�A¥NÇç+WòÇîݬûóOÓq³�H�JÅùädü5¢‘!,  yóæMIA§V£ Lƒ&¹Ü"oÀßߟ–MšÐJ�`Þªukä@µZmê%¤Ú¸o»6mâFa!CFŒ°�,ÈáÛvùÔ)’ϟ翯½†‡!-4*Š{IKO7LÝ,ó  “gÌà‰)S¸yù2‘mÛ²iÅ šÒ$*Êjž“5Ûüýý)®¨ $?CÈG~n.ååZ´‘–†ó`KHˆ©-¿ü•™3yET݈x"N(gøã�3üñÇoKñ ­µzO¼þ:O¼þ:µÚî>yÂ'­6ÛúŽCß1c¬ËÚfENt»v|ZK‘°\u¶¦O¯Áƒé5xp;շÙWXËŸê>p ëEÛ¶YC<É(–Ó"!�y†ÉO{:Ù»ÿž¾¾Lž1ƒÉµÈ10ýk­�ºuã›Í›k•#õµ ÓXDf¿ üá`+o[8©díšœ«Wy÷å—ɼv�¹³fÑÕÊÖ}Æ¡NBt:ZµÚ”£Ú{äH<ÈžýûѪT8‹CìmØöåâÅ4fÏo¿±ç·ßÈ¿y�^ÏÆÕ«iwþ¼Y½³U‘N …‚ˆ„³ç9¦sgÚDF’oØùÃt­�±hP³f„øøÐ¹sg³ú(íÚ¶åçmÛ,ò/�zaç¾íÚ¹“V¡¡ 7Îæ}Þ7‹±ÿP­ÑðèþCÓ–-xêÕWùe÷nŽ>L'C6VÛ5šÛ¬õù}û²²U+Žýù'J…‚νz1Ö,‚ù¯ÖôŸóóó£¼¢ÂìxYY�||mÑ¢AÖ¨?GõvWTk«Œ‹åŒAÖÙ³Lž<™Vaa|0¾Í>°_þóºu¬Þ¼™M6n¨ðzöôi‚E3öB?ž^†ÊºP[þßéÓéÛ³'÷`;ÄJd›º²’žžÎíÛ3×0¸Ðj49r„˜¨(¼{Ì?oD÷ßÏ¢•+ùø­·èܽ;Ç�áxj*ËV¬°"!¾o‘qqŒìߟO—.%7'�NǪ�™ôàƒÄ`ág%$"2 ,ŒS¿üBfzz�‹Ðè4ôÎÎ&Ó% €u³g×Ziܽž’‚b‡ C&“Ѥ}{~üàÓ˲.TUTb˜…oË¡Ÿ~"í�?þZ­»M4*J/¯¿ú77Öô‘Ý•\kèõzÊJJˆ6 d2‚bbXóá‡VC_k£¢´”¦]º “Ém׎íß|ƒ�ŽªZ¥Â-$™L†‹»;ål˜3ÇT`îvÑëtTTVk¿ hÑ‚53gâbp\ëBYq1á½z!“ÉëÚ•�óæ9䨪««ñlÚ´Á ¤$$à6·£vGÕÚžÇófÌ ¤¸˜Ù3gÒ,"‚’[·j¾S©Äǰ ŸQÓSa%„´UBk¶o§Ëòåt¿ï>vlÜÈ®ƒyhèPÛùV>^½ÚìÚ-ß}ÇÁ·ßæµ·Þ"V\ÀÎ8«c¯^}ö«W®Ä?0�FêåËñtuå~Q½“ÚêÜ?j¯M›Fû¹söðÃüºi““yÉNQ7kcH¨Ù“5óúu† Vë=µe[¯~ýX²|9ógÎäå÷Þ£²¼œ•_}EµVËÝ÷ÞkÓ ·ØžH©D'—óÕ7ßÙ²%�š7gÉÇãæâÂ#¢½ÊňÏ�?žo×®eÖk¯1ñé§ùcÇ~Ý»—7'O¶l£2®­?GÕN >€‡§'½Û¶ÅËÛÛâ:a²¸ø‡¡Q©(ÏÍ¥K\/_6ÿN½žª²2‹'a(ªÙªc÷î,þì3¾þâ -Y‚�·7# â?¯½†³(„@šZÛj± ˆ ÃÏšmÊ¿*[“óÚÌ™xûúòûž=lßµ‹¨ÈH–,X@ïáÃ-¾Ç,‡K\�ÌÓ“%ß~˧|À²åËqwwgÔàÁL¶â «þÚ²ÍhYK¾TmyN¯Ïœ‰ŸŸ¿ïÝKn^Í›6eþŒÜÿÄ–m( Ùu2-Û´áÃ÷ßç×;˜?>mÚ¶å£Y³h#HÊ·f›µ—Ì[³gãüÞ{ìúãÜÜÝ™ðàƒ<#(ˆe’£P ³:g³U$$þb ³Õ—f�:Ý9>Mšàc'Ú嶑ɈµÒÿ9Bx�wDN@d$¢ªŽŽ tv&ATÊQ¢af‡ èh‚ &OÏ;vß$$ê[9î¶®«­€x|ôç–-lؽ…LÆý¢œöÄ„Vÿö›éo¥` imaá•3¨¨¬äÕ3p™9d2ÆÎËÓ§Ûû�íUG¡þ¶ÚÀÞî ±±Ìœ6�¹óæ1züxä2Ñaa,^°€˜ŽÍäÔ¶+ƨI“ÈÏÍå‹+ødéRÜÝÝydÄžzóMó­1û[ËQ=›œLeu5öï©(Ù,ÿ¶];f͘Á'óæÑ¯_?�Éh̬÷Þ£«!¥ÐÔ~µØöÈ3Ï�••Åc�=†^§£u«V¼óŠíVm³"'2.Žo¿Íì�?fãÎ�úú2zÐ Æ=û¬…cj­@}LÖkŽª½›ß&1‘ üaõœ½Ð¥RÉ AÕÉÚ6ºµkÏAƒè9hZ�ÆfõB¨½ê¯Xÿe;wZ=W[Á!O^ùðC^±)ý/Ìl³ÒÉ„FF2wÙ²Ús�n#ôwÑÏ?תÏíØ6僘BíyNf¡¿Vl»Ò$îŸ4©NyNÖî›O@€YˆŒ-†ü ‰ÿ=jÍ•8�ááV¯®:Šs ›EE±döl«2½¼¼¬Ö1b‘£Ì'ß}ÇK§Os%#ƒVíÚYÝóÚ¨‡IN-¶uLLdñ¬Y„µn]§½FŽ˽ÆqúØ1\\]‰îØÑêx[m­ÆÁsï¿Ï£/¼ÀÉcLjíÔÉfÚ„¸�IJºÞwIÉÉøÛÏ;þßJ 3†>Æq>%•JEl§Nf»j˜t¨Å¶°èh¾Ú¸‘›—/S^ZJTB‚X„Ð83ÛÄŒ~òIŽÍ©cÇHèÞ7//bÆK½9ªêÊJ�½›o�ŠâbSV=€^o׉´‡1ÏÅÉÍ�ò¢"›?ÈÚtÕiÿªùªQ©j½Þå8~ĪÊJ‹NçvÑj4f9\%¹¹ø5jä�NU†*ÅJ'§š#m++,4åpiµZ‡åTWT 3|ÖÉÕ•ª’\´MgÈOsru¥";Ûa�Jóóq¾«CwãÌjÁ•+dŸ>�^_·�”ä a�:áaxáW•–rùèQ4*U�u ŠŒ$ݧ×éÈ:~œ²üü:Ëq÷ñ!¬sg†ݼK—¸yî\�å(”JÂ;wÆÍP,­²¨ˆËÇ�›r;ëBH«VÒJt —�£¢¨¨Îr<üý ëÔÉ´pëüyr/^¬³¥³3á]ºàj„”p%)É,ö¶0„Wû7oÔlbùØ1ªJJꬓGPa:˜&?³OŸ¦ +«Îr..DvëfzŸHHÔ72…¢Ö÷ö={šU±¢ÕhLÏ…81º];¢Ûµ»==ÀÌQ±¥OT›6¦la ˜Ú³-2.ŽÈ¸8ë: ǰ6*Ë+½½éܧ�]}dü•(n#!>AAÜ5h�]YBÛô:�eŠ¡—î68!z�[÷_éåE;A…_[r„ޏ-Ûš Š¸Ú’clm…R‰¬¦{øÑ£–6ªëX២ÞÕ.\3sæƒör­"“QY^NË~ý�Éd4íØ‘µ³f9” ¤ª®¦Q›6Èd2‚[µ"eëVÎ9Rg9:�'ÓÃèìïÏú9sÊ[¬¬¬¤õ A5¹WíÚñã‡:” T]YI3CžSÓvíøsÃ’~ýµÎrt:nÁÁ5+ ..¨år‡m«V©ˆ0€ÀèhÖΚUç\0¨ÉOkÞ£2™Œæ]º°eÉÜÈsÓjµx7oŽL&ÃÍLJ녅lmƒsÛ²är¢âãm_Ð@f¦$þ7©*)áÜž=ÄZç‰/­ZMʆ ÜeØ"&yýzb À©®}®^ÏÅ?ÿÄÉÕÿ°0Nÿú+¾Í›.ʉ¿Êrs9¹mm‡§47—Ì£G‰éß¿î9ªÕÕ¤lÚD�Ç iýzâ‡5åãÞ6z=gû W//¼‚ƒIÛ²…�ØX‚­l‰VÅ7npæ·ßˆ0€‚¬,®Ÿ iÙ’ýkÖP|ë–i"ývQWU‘sõ*Á†Â–j�†?üWQ ZÑë9sè- {~z7mʶŋ lÚ´nr€¢›7q  8:š�ß|C\bb�åT•—› -r`íZ‹êµ¢×sêÀb ûr»øúòÛW_™åçÞ.9—/ãoHÍhܦ ?}ú)Ñ]»Ö9E«¢¤�Á™sõö&##ƒƒë×[T® �VËÉ}ûh÷ÐC(ÜÝù}Å <¨MpíìYÓ{§QBëgÏ&¼– k”�ãó‚zsT«ªªN„víú »Ÿßß’ãL´•=ÖêŠL&#F°wèß¡é�Êá ÅG´WŸ#È•Jb‡ »5¼.gw÷;f[‹;”Ã%!ÑÐ(ÎÎ&¼KÓ>uuÅ·iST¸xxàêååÐà *1‘ë'NàFuy9�päܽ½¹‘š @ѵk„wƒ¶¹ fÍÝ}}ñ rHNd÷îä]º„Wp0:�†�Zf¾máîíÍ-Cuù‚+WˆêÑÃ1Û¼½MƒA�Z�WH^éÔ¼cG ®^%Ô×�NG€�PÁÚpoÓ†75NkÔ]wá\×Á85m$­¦J4d€ÂɉöãÇSž—Wç•(…‡ £F™þŽ0€ªâb*««ë¬KܨQ¦UÇ&mÚ ®ªr(úÁ'>ž CÿáâáA›1c(Ïϯ³mJ//bÛC&Ü?……TÖ1jE&“ÑvÌÓ„]x÷î¨**Lu!¤KÓd¤g@±#FP^PPg9NM›-˜°k3z4åTÖ1jE&—Óþá‡M“ȉ‰T—•QUQQg�šß}7 à_³fx7jDEaa�å¸EDØ/þ©7GUBBBBâŸÇTTÁJvÞÕ«¤=Ê… ÐS³'ó=C‡ZäИí¥,—“•–FEY ¢p¦‹'NP’ŸOtçÎfÕ\s²²¸~áÇÔZa¶ëä\¹bÓŽ°ØXü7¶Ð Ì t¤íÝk±u‰o` �##ÍœRqûÿo”S]^ÎéÇmêÐ8"‚F† 7a±8¡mÙ/róòeš¶lI�!|VHþõë\9{–Ð-68€Âöæàg_ºÄÍÌLÚôìiŒɾp�ìË—iÛ«—éœxl[ád—RS©()!ÞFX¢R¡@mÜãÏF�‚’Ü\.¤¥‘››‹··7ízö´šûd,>‚LfV %÷Ê®ed˜]ëêæF“¨(«#ަÅHHüSÈd2<œèãêãCÝcé,qru5m-õw�Éåw̶¿»@eÄÙÝýŽLXÉ•J¼‚ƒï€F˜Rdþ..žž¸8)(FáätÇl«/êÍQÕ©Õ{÷‚!¤A„–²uZ-™‡S–—Wg9®>>DõèaÚf!÷Ân8�Ã¥P*‰èÚOC˜DEA—FãÀŒQHË–42 æ´j5—rh6ÄÝÏ�ÈîÝMa^7ÏœáVFFÝgÜœˆìÖ wÃÃW–—ǥÇÍrro™LF“ØX‚ « •Š‹PéÀLŸW` ݺ™f ¯¥¦’'ªð|;8¹¸Õ£®†uqv6YÇ�›rn¹\NhBááuÖABâßB\ècí_°|íZ‚}} kÖŒ¼¼<ÖlÛÆ/[·òâ”)f[0‰ }>x�õ[¶ð}›6xWéôz/\HRFS§Lá¾Ñ£MŸùeÝ:öüù'_|ýµ™NB}öÿþ;‹V¯ÆVÐÜŒ×^3ÛÎˬš Æç‹qáÖ-³—›pwgPŸ><öÊ+f9;¶ }ä]¹ÂÓ§£6ô™Æ^AøÆznÂÆ6r·U C®P0wáB"7æƒE‹ÌBou gÏæZn.ó>ûÌ2GÞà�ïß½›¯W¯fýºuøŠòò÷ÿñ+~ø�u:àePšÙf§ÊÆõ빜™É‚ý¾…Ø+b¢ÓjùiÅ V­]KqE~d—–þÍ7<8bà ûþ™>/ø¿°ˆÉñ?ÿdÖÒ¥¦ûo|Sxxpo·n<ûÎ;f!Ù’“*ÑàÐë)s`EU®Pà!Šv¨(,t(WÞÃß߬SWVR%½½]œ=øüs6~ý5ã^xÁôùõ_Í�“'™ùÖ[7kfa˜Wl7[±¶„ñœðúÛ­F/7¬pÚ:oV±]$gŧŸòÝÏ?3nð`�EpóæœØ¿Ÿí[·2÷ë¯QÈå üq�¢Öï›B¡@)“1ó…1¥ª(+ãDr2Ë6o&8$„‡_zÉjIHÔ'2™ �Fß_~I“6m,¶B© Ue%ÅW¯ÒÝ0©“´n®>>uëu:n¤§ÓeÜ8Ü|}¹’”DÎÅ‹mV–—‡W` -QUTp`Ù2BÛ¶­»mTäåÑiìXŽ~ÿ=žAAuù×iµdŸ:E÷ pvwçÂþý”æå9´Ê[’�MPDÍ;v¤²¨ˆ£?ü@“„„:ïª*+£º´”ö†°íCß~‹OÓ¦uοÕiµÜܸ‘»&MBáäĹß§ª¬ wR5Š®^¥YÛ¶4Љ¡øæMÒ~ù¥fñ«ŽýeUI :•ж ` ±zsT½BB<< •ëJX§N\KI!$:šê²29PŒÀ/4”ˆ™¯‚+WïØ'’‡•žžxfUÜ||l–{®�ÈîÝ)ÌʯY3´j5�®Ò†‡“}ò$YYDvïîPá"¥·7^†•b�Z�wp0n†#DtéBÁ•+x¢tvÆÏÁüÛÆ11Ü:s€Âk׈êÞÝn5:[(ýüLŽ¥ª²ß&Mpq0Œ$´MŠoÜÀõì/(!q'‡Çê46mÚD¯„þóþûfÓÛ÷îÍ«ÕÕ¼üþûìÙ¶�1Ï1‘ò—^båºuÜ7b>†ð3¹H¡®Íããi)Ø?±Kÿþ¤¤§sêìYó‰ +¡¿’ó*Q_äddвW/ÅÆ:ôù“[·¢ª¬ÄÙÍ ¹BAëZ*àÚ"¸eK®¤¤Ý»7ùYY&'ÊR6l çüyâ ÂßÁÜô”õëMÿ—+•Dß{¯CrüBC¹qêá�;Sœ�M»¿±ÇtÊúõ4ïØ‘ë'OÒfØ0¼Ü9Âh›V­ÆÕÛ›hQ)µáéïONF�cc)ËË£�£÷­[7Ò6o¦QL 7ÒÒèðÀ/ ¤nÚä˜w˜úÛGÕÊìîé#G8qü822((( 0(ˆ=zÐ{äH³™¥a@cܬ·øÖ-®œ=K‹öíÍöL*¸qƒ¬3gnÞœPCxÔTzLß¿ŸFááfƒ&ဠ¢¤„sÇŽÙÔß'0�ȶmM _šÂAÖéÓdg›}ÖÅÍ�¦-Zàdñb¾´ÅmtæÐ!»ÉÕnžž´îÚÕô·p³^〠º¼œS‡áéãC++«Ð:�†Ô½{ñðò¢•!ôÏl#j�NE99ìܰ�„N�ˆÉ*ÌÎæ·Ÿ~¢MÇŽ´6œ3Ëá²³1vAv6Y§OÓ²Cÿœ“))¼4}ºéÇ¡üèe@~v6S¦MãýÉ“é÷àƒ&™;6mâË5kz÷ݼ1k–éxê¾}Lž6�Yo¾‰«p°#,Z‘‘ÁKÓ¦!«%«GÜ{/¯f}å6¿nÙÂ÷[¶à,8¯Ü�œhÍKo¿m¶Ù²B¡°>°êÛo9h¨©§&gJ¨_�øx>ºë.³66üÇôP+¼½Ù¹s'GÒÓùdÎZ¶oof׆eËX¸r%Ó_}•XÑàHl[i~>_üø#¯z{“ Úb 8'‡EßÏ[ÞÞÄÎ Wn¬ 䌤=Ê{óæ±hæLÚÛ˜�2Ú,.6�º?_/YBZf&Ažžä——ãâäÄ€»îâ©×^3« )Îs3Ê©,(àÝ?¤B«5}—p–ËéÃÓ/¼`¶™£û¯JHü[óoÞ¼‰ ²ù» çÂ… åYZÉQLˆ�gý¦MèÔêš-lÒÓyêñÇi›˜H«&MH=q‚ö÷ÜÃùóçiAëN�(+(°ÈQ4"—Ë©Ôj™;mšEíO¥’7>ýÔ¦mÂU€ÌÌL¾œ3¨¤æçsäÄ |<<è;t¨Å÷ ÿoóY¬pZÕA¤³øºæÑÑ<5aïò þ“'³?5•ù³gãk'tÍèt›îƒÑY´²A½\04ž»ÝUÖ7™·e‹ñïœ[·hâïOh‹VÃæ¢ccQÊdÜÊɱÔÉð}âߨµ3gLƒ©¬ÌL’�çìõë 4È<¹  $$„ˆû�¤?þà‡U«8sé®®TT T(èß½;“¦LÁÛ­fü¬™LƪyóHMKããåËÍÒÈ>š<™3—/óÂóÏÓ¥Óñ¾ø‚ƒüÁÔyóþ’ƒù³»þ‹/Øbg›Â§žx‚žÂPOÑd QÖÛ'r£¸Øì³ÞžžЧo_î…‹Úª�uò$Sßz {OFÊýO=eÒA¨›ñï“{÷²háBÚµióӦYÈX2}:éiiL~ã ZŠhD}ìÆ/¿dǶm|òõ×EÜ6.]Êo;vðɲe¦š4fãc;}èâ©S¹uý:,_nõ¼\.7µƒµ¾øÔáìY¹’ó—/s«¤:·mËÈ1cÌêIˆmÞ·í«Wóýºuf—¸»ºHÏ^½0nœèã £�­WGÕô#;tˆ%«V1$1‘çÞ}×,�{ÅG±tãFš}ó cŸUû“ɈíÚ•V�sQ0°8}ú4]ÃÂH;u �JezØ3Ο'ÐÃNwßÍ©;L×+?Vã�ïÅ ½•P//›ƒ¡m2™Œ0??>ÿê+ÓùÂÜ\Ò’“ùæûïùzÁÞ_°à/l žŸ2…' +ª©©|°lo=ö­ A»yzZ<ÈB9ÆsO¼ð'_|‘åK–0sÉ“y)-�U6ðÀ}÷Ñ[RñÿØ;ïð(Êîﶤ÷Þ©Ôt"=º ]š€X `ÁòXÀ*Š¢"‚‘¢€TAšô^BK€�H!!=Ù}ÿÈî23;»ÉFŸ¼<û½®¹³3gî33÷™sŸ*õ8)M2 �þ~3UlD ¡åÞœÒh #¸Æñ¿ÿæõ)Sx Y3¾š1ƒæmÚ�yî»·laÁ²e1õóÏ Ï×”Õÿ;ºwo:èz’U”—s53“ïý•¯çÌá“E‹DüZV‚É +þo �±Óü4f¦k[¾õÑBoe|‹Ì^°€Óû÷S|û6¹EE´íÔ ;âbc9uò$jµš´ÔTbcbP ¬ûrá±ÂœSi>�4/RHC©0ÎQ½š“‡£©®&íÊì”J†ôéCÿ‘#i ‰¬Z�ÍЄ_9¨U*ÂÏ��O=ÅÑÇùeûv&ŒA[]_i)¤a¶FU˽\þj]«þÖ%ôW8.ýqeee8;:bªºoƒ¸ØÚRUUeŽŒØ3¬T*©Òj™¬ëe­¥FÑöqvæÙÁƒ1~¼Ñûr¯(RVXâ¹wrï^ÞùðCb#"˜9}:Í[·&+#ƒ½[¶ðͯ¿’ŸŸÏ{_|a(æ)5˜EDGóÝúõœ;vŒX]5îÜ+WØsæ ¾NNœ:}šv‚ÖŒ©çÎá„‹—×õ;%s^£Rq³¨ˆ±�>ŠRfΆ7o.µ õ`æ–•J² <ùzV‡ŽaúgŸáèèH[AÝS¹òÞAA <Ø0�<ȹŒ F b8¾qt´(�]ÿmʳÄ=h{ø0?­]Küºut,”÷¬[Çò-[ÿè£48TLE­hU*.ߺ%+cµj5W ÅuêµR¦Õ’WQaVÆê}ËÒïÇæe˘5oñ‘‘Œyâ <==9wîÛvîä­©S™òÆ< h¯(úž ž›V©ärAã 2H-//çØñã̘7[[[z &âç^ÀÝ[¨ è–�ñrqáéI“Œúü�~ýuÎ_¼ÈÞƒyTŸ;¤wµë>¾vööDGE‰ÂвÓÓ9––Æ Ã†1óçŸIÙ»—VºÇùsçˆoÖ __‘B ÊÒ}˜ÝLæ$‰ø1¡ìè÷I󥚵jÅåË—ÙsàšŠ C‰mQ.�ä¥�lÑÂð÷-�5Ë?<ÜäøL…5‡4mÊè#xoî\~›?Ÿ/½DuUßý5~^^<5q¢l.�4$Ah 7Ê—’ùMĵ+ErC ¼É(ršª*ÿø#¡¼7gŽ¡@L£øxÅÇckgǧßOÇß§‡.±_È›J8VÝ¿Î^^¢ûÛ¸‘›Ë·K—’sñ"�úŠŸ*šêj«âdÅ= ý| �ˆÀV¥"''Çäüºví 40Z éÿV«Õ´HN&Òߟ´³gÉËϧE³f4Ô…´ÅÅÅñÍÂ…\»FJj*}ûô©‰èP«MFŒ(•JT*Þþè#C^¼9˜ ýHn׎wt…�NíßÏk¯½Æ©3gíçgÄs] ée…I¹ULj‘–mÚ°bûvÚ%'›¾–L4 €‡›•Z-7nà+iuS^V†§‹ .žž²Ï­ÖÐ_s¼I<™úã5jÄßûöQQ\,Ûëõrj*ååxyxÈÒ)|J%j…‚�&NÄ/<àáéIpãÆ8ÊÔ³¸W”(+¬� kýõÇ ôòâ�Y³ ý‹Ã¢¢‹ŠÂF­fÖwß±å·ßè=j ÖiJ%‰mÛâjoÏ…sçh¡[„Û·g;;’;tà„Î5­´Îœ?ÏàþýQ«TÝO:ç•J%6*½GŒ¨S‘ÁL"c½|}é¥Ó£ôè•‘Áã�?ÎÑ#Gèзï:&êx0äÙg Ç]ÉÊâJVƒuT)Ôfê<1aÇO�⇤ERî~~ÜÊÉáûE‹HŽ�gØØ±F2Ú²+1t‚|¯Üs6•'{/±Ü˜{í‹/¦}\SçÌ1ðÐèÒ»7¯NšÄw �رcMh´dLR«Ú÷èA„`=1´¼œÑC†°ÿÀQІœ1ðnh¸wMÒ )œ:s†¨Æ�ñÑ)FÂÍÖÎŽ&Í›“–‘Aq~¾¬•C­VÍ™Œ neg£V«9¶?ŽŽô{öYbÃÃ9©›ÔÚª*Μ;GLLŒQ±þåS«Õ†y2ûΜáã7ßËyµZv.+—jŸÌbΜ|“ŽC$ßd¬ýjµš†!!Tiµdef�sãÆ ‚ptq©UvËñfnÌr UµZMóèhn–”°qùrÙóvnߎƒ��aQ.zn …è¹éïKó–-éЧI}úÕ®®ÞÞµ>+¬¸ Ÿ3ÏœaWJ õè�‡Î8&܆ŽK„¯/çÓÓï¼ÿÂ=…¿ÐPâ768`Ôj5§N�">:š¸ÄDŽ�?Ï]�±“û÷“uëq:¬‡T÷“FdÔ¶Éñ¦Ÿ{ròÄÓ×;;de§ž7³rÈÌøTjcÝ_¿¹xx0vÜ8®äæòÓ—_¢V«YüÕWܾ͸—_ÆÎÞÞ$or²N-#Ÿ ¿™�CªZôZ³2V-^Dë÷o[»–ŒœF�mÄCX³f<öÈ#MOçЖ-F¼ ófÍ}{ìpuq¡¨¨Hö}¹Û¸ë9ª•eeÜÈË£E|¼ÑË£GhXyee¤9B»Þ½e?š-Zµ¢tî\N:D×ÐPNžÍ¦¿ÿ¦}\ 7…ÛYa޹¨Š§Ÿ{Žç&Làõqãxé•Wpóòâf~>O=þ8Z•ŠžmÚ0꥗ óÀTÕ×øøxVýö©W®0æé§ ûÃcbˆoÒ„=�eÈÃ~°¥ÖþºDRÈñ%wŽ”v·ÁƒyrϾ^¶Œ¶?üÀ ]+1�3k.¤E5j9ÎTÑ é1rÖþèÄD|œ�ùcåJ:÷ïohƒpúÀ¶ïÝKO]eeé˜åî·Ü˜Ì}oäxëØ·/þò -"$"‚ö‚p¿ß.ä§•+òàƒD Z¬IŸ¿ô›[Ÿço…÷ôiH™/RVUE@` ¬n R© áÂ… òùä:yî�;Q*hª«9ž’B¿>}hÙ¹3>³gsìÐ!"ââH;{–Fþþ´HN¦TÐ3UOG¥BAEu5k–,A))¢£†Œ+Ú']„ iæå±kíZ4 y7o²{÷nnÞºE×4™O.“ÊZô©ÚÒÇZuïΨ}ûX´jAÞÞ,ß´‰WÇŽÕ‘“(}MðM1‡þ;!L¬#oBº–ð–}ý:�îî4ML”=7RWÜóòå˵Özµõû².\`ÇÚµJMeôàÁFï˽€»ú«R©P::âêäÄí’“°¨¨•B�—¯¯á¦KCv%$ƹ´4ºTWs,%…¡ƒ¡R©ˆ��eźuܸt‰³§OÓ8 €ÉÉ": žˆú cêc(}‰¥U…tŠ+*8|ø0Z­–œ¼<.߼ɀ¶mùâã�Izè!#ºRÞLÝ?=}s¹ž 3“.¤iSž{üqÞ˜9“vQQ<ýꫲ´D¡ ‚1ÙØØ˜,¡�™Ð*É=­MX™å_8Ý5ÊJKpqq1yž›³3W‹ŠŒÂ,„t„cýfõj¬^ ÔSrV«é�˜È¸I“Dí~„÷Hv¼²{­°âÿÂ<� à³ÒRfÏ™Cï�iDáíÛ•–âëáÁÍü|6¯XÁC#F½×ÂyÙ:)‰©3gäíMRÏž¢y—��Àç?ýÄëO?-Š1ÐÁ¸8Æíª*Æ=ñ„QŽ*@§¤$ž}óMÑñz¨$ŠƒœìxþÍ7Ù}àó.¤SŸ>ø6h`8^Ž7)j3J‰BQë ßÌÊnÁßBÙíÊûo¾É¤©SéÓ¹3M##)--åàÉ“4 eò»ïÖKAD¡0?f M¡Qaêðú„ ŒyþyÚÇÇãçïÏåK—Ø}â}:tàÕiÓÌ*gÒo®\¡(Ù!ß#Ö~+¬ÐCod©ÖUÖµ7QÀÅÕ•,] HêœèŒ8±±±,X²„K§NqûÖ-Î_»F˶mqõò">:š“)) S«IMK#.&;*KJŒŠMê¡/X·rÍ£ñ¸¸ˆz<ëÏ7ð&0*) þÓ^}•ÝG�ò°.&73ЧºŽ²;¢Iž9ÿ��zEà 3†€à`Ž>LjZþ��ôéÓ‡={ßB~êÂ[«ÄDÂLD¢èÇ`›„NDt4?­^ͪE‹8zô(Å%%tLNæ…—^¢}¯^¢wGÈ›PvC�g`ìðáøÕÉ£z¯Xû­øß†°€š~®Ôt¤ÈË3ù.gee,¨ ª)¢›cmºvÅÇÅ…SÇŽQpëÑ¡¡D·iƒB©$>.Ž?þøƒªÒRN§¦2æñÇ�P2 U7[[~]µÊ¢^ÕJrh�Œ›<™ªŠ výõŸ-X@HP݇ 1Ê;ÍF›(̬ӧ�™‹Zqñô¤÷C±÷Ìl²Ð›p\BÞ¨Öj)+.6¢_UUUÚììlö¹™»–¥Q+ 6ähJ Úª*ldÚÉe_ºDaE®º”ᵤ2V©T¢:wèP“£¬Pàâä„··7ûõ3 ­–u¾Ü¹{×C:wîÌ+Ó§³êûï¦ =xï…póñ!ºysVmÚÄàÄÉÕµfÐ&”�¸¸8¶ýý7'Ž!>2’f­Z¡P(ð &1*ŠsiiœIKã±#d­!BeG.tµ6~ôž£�L²c�³VÜk0|ødæ“«§'G�6:gÒŒ<óÚk†¾ÔÒ¨ !�ÿ˜hÓ¦[7Útë&Ú'ý�ŠÎ�>JÝâ±.P)å‹Å½n¦�̓C†ð  ¢¤p,ú¿MÉœGÆ�3?õ�Ð_sr9顇Œ"i¤0(ˆ’ðX=:öîMG™4 St„´äðÄË/›¥#,b"GÇÙÍ�G_|‘º>=½-üævêߟN’¶æ ªþo…÷ôr(±S'bCBؽg#Ç�G¡T¢ÕhXûÝwô5Š”8™žÎSC†˜5š»zy‘Czz:W®^%!!Á°ðjÙ¶-³çÍcÓO?q=?Ÿ6º°•êNe\©<“« nÂù%­¬®²µ%(2€�æÍ©®ªâݹsñôòG¾˜àMözJóëÌ:…°ÕÝ#}N§©ké‰dlÆ ©Ðj¹š‘AXt´èœüü|úû¾‹":˜÷¨J×R˜ò¨6�ŠâËÅ‹9¼};I2ºèñC‡ÐjµDëêî€ "G"cõ2³çÀ�4kÝZvBÜ+ëîÚ(„îó!Ï<ÃÐÎ�™6gŸ½ý67o¦�¯/nØÀ¸7Þ ØË‹ß|Óp¼Z­6¼ÐÂy»®]É/*bÿßÓ¢E Q±›„-8~à™ÙÙ´íÔɰ_®2®a²cY1%©"'Ü/<Ö+ €—_~™Ë99|ùñÇ¢ßä*ÉmuŸ4\×ÔqµÑµ8�—Ǫ-[X1o%·nAu5G¶mcŪU$ÅÄÐXP`Ed1ªåzu“à[[[0€Õ;v°ðÃEIûiGŽðÉ'ŸâïÏ`�åQ¤È Ž—.àkÛ¤Ö0év7¬PVX¡‡«Ÿ§þþÛ¬�n¾¾5òA«%;=Ý�Y|ëÕååu¦#ÜNíØ�Wh(*;;nddÔ‹NaN]ÃyWÒöî­MUņûT”Ÿ�F×JÅÒíôÎ�xè*ñj´ZCa?K·¼ÌLC+5×€ÎîÞ]/:Õåå”ëÚ™)mlÈÏÊ�Æb:*•ŠÔ}ûð  ººšÛ¹¹õSVZö:ƒ³[` ©{öÔ‹Nei)Å……ÿý‰c…@/_í�œ6h›÷ïçëiÓ@£!çÒ%¾ýá8�Ó§Èh]‡µZ\�S¨×ÄÅÅ‘~þ<ÇOŸ&QW[E­Vß¡�ƒƒÙµc-š4¡‘@×2ÐA\ø§Ö‚p’MÎ! §/ÕÏž˜4‰ÞíÛ3ïçŸ9ºc‡˜Ž Þ¤[mã3UpȈŽ~AnŽ7™ç¦V«iÔ¬¶J%$r·¼¸˜ƒGŽÐ@Rôµ®…¢„nSrVŽ·½zÑ<$„ß|Cžä›rþøq-]J×ÄD’t‘KÂç&½Gu)ägêùßMÜõU¨¹i3¾ý–Ð�>â·5køü§Ÿ°Q(hÚ°!ãã9xô(oMœÈ “'Õª•Q(‘žNPDñÍš±íØ1F>óŒèÁ?в%3çÏ'):šFº¾£ ñÌ)�û¨þ²t)kׯ7¿¯‹ Ÿ-[&KG¿0î—zܺ>ü0#7oæ‡Õ«é²x1}{ìÎq‚—¬Ö<'3ù<"«Š‰ã„y£æòAåxxõƒ¸qý:¯}ü13¿üg{{®ææÁ‡sæ`'ˆ«¯sÕ:äpIyÐ7zÒ$ndgóñ‚lÞ¾�F�s« €Ç�ããîÎ|@€NQ^Kz=¡! .c¸W,OVX!G\#"XGa§LÁÑÑ‘¬‹ /©)÷¿ BCyaäHÊäbÉòfb öNNŒ0€æQQ&éÈYúôpqwçË¥KyñðaRާ´¤„èØXâÚ·7ôt2ŒAÆ&‡ðF�xaäH‚ÂÂjåMh1‚KÜ”¹séÚ«[6m";;›ððp @‡ž=ñðõó&\„ xstqáÉÁƒi*i€m ÖÐ_+îUè?X>øDDüczŽDÕºZ¨llˆTNÿ'ðkÜ?A E}áâãCtBjkƒÚÎŽFÉÉÿ˜@`t4�’´úÀÕ×—è:¤1Ô[{{ šËÿ4LH aB¿B °F®XqW!Ò³Ôj^�5‹.=ÄŸ6píÊBÂÙѷ/^^^,ùé'žzä~ß´ “ÝÚtïNׄ|ýüð“ôNNêÐ�Œ‹i›”d8ÞœééêJ«¨(N�:%;~o]«Dáùº?Dúq³† ñôkÖ#ºukž=š-Û¶±ö»ïüüób:2cÂÇÝ�f šü]Ÿ^Q7WW:ÇÅá,áGQX³ÄýÚÇãéíÍÑ'X¹z5îîÄÅÆòZß¾´èÐADÇœ~,D — aÁ#)ofž[ç~ýø¹A~^¸��;vPX\L³¦M3jGŽ$0,L–7â�m7:ÆÄà(ȱ5‡{a‘ ÷HŽª®^^´–XJ㢘ñý÷†ÿë]Òr1ß�HÊk Ï™úå—&Ç"Ís �Žæ½/¾¨3?Â|!oCÍŒ¥ ã]ɘ„¼™›ˆñIIÄ'%ÕiLÒÅœÎîî¼óÕWféÈ…ÇJÇÛ¾½¨]�„#sÅ”ärÛÌ�K®1sr¿~$÷ëW+ ¹°f7ooÞûúëZÏ×CÈ›VXa…VXñ¿9R�6=zÐFý!D—AƒØ½f >úêãB�ª@Q«Õüð矲×øä“ |òIÑ>ýyR�à©×^ã©×^«3_¦ê|³n�ÉsÆM™Â¸)SDû„ú±¹ÕI}d~<=Ë\€�cÆ0p̳´¤^P-µšño¿mö|)�ÚôÚ·æÎ5KG¤Ëðݪµjˆ‹ÍÊÁp¿%ºÿÐqãZK­јþ×=ª¹™™·oçæâl¢Ò¬)hµZŽmÚ„»._ÆÖÙ™‹G�gñr22¨Öhð åØŸÔ¨‘Ù@e·oS�“cøan.¥Ø»¸XDG«ÕrhÍÜu ê µš+§NÑ Y3‹è\9s†*]‰t¯ÐP­YC÷§Ÿ¶8DµäÖ-n^¹B ²µ%çÒ%Ê ±wv¶ˆŽ¦ºš#ë× Kà.+-%'=_An]qáðalu×w âÐÐaøp‹'TQ^·u¡y¶\;wŽŠâbC.^]Q]UEʶmDÔaqm…w ¹—.qéÈ‹ÏS©ÕD´kg¨YVTĹ�;©,/·˜V@Ó¦è䙦ºšôýû)¼~Ýb:Î^^D´kgˆÒ¸qá™'NXLGmkKdûö8º»PRPÀùÝ»-kŽ�5x¬««ª¸°g·ss-¦ãêçGxëÖ†ïPÖ™3d�=k1{{%%¾C·ss¹°gÕUUÓ MLÄSçÍ©®¨àÜ®]55 ,„gƒ„<ðÀ=¡üXaÅ¿ 77ò®^¥QË–u>§ÓÃþ.)(ÀW¾YVTT'�—ò³² yà•h««�¢ÛêMu5:oëäDþµk4Ðõì´ÂoEUEE½y»uý:vÞ” …Åú:@Ue%�îoãèHÑÍ›øÕC ß ¥ZMyII½y+¼q]åüZï‘™ßÊKJ =r휜¸�—'*þd êó­øo@¡ÕZšùòï`|B»q½zM©O/4ïðpüš6@«Ñpùðan߸a1{77B[µB¥{¨¹d�:eñGT¥VüÀ5åž�²ÂB2 ÚBeG«ÕâÛ¸1¾�5‚"ãÀJë‘çäàáA¨ Ÿ7çÜ9rÒÒ,çÍÖ–ÐV­ ‚¯8/�Ë¢Ñ-‚ë ­VK@T”¡�Jue%PVeÇÙLJ†‰‰†œ¹¬Ó§É»xÑb:j{{BÛ´ÁÎÉ €Û7o’yø°Å¼)€€ØX<$­!„XöòËsæìÛ7ÑâAZñ?…Bñ:ða}Î�÷ñaÖ¢E(•J®XALÿþ÷Ÿ¬ª¨àÄï¿ÓyìX ;, Y¯^Øšèëfi[·Ö¢>ááûãÜ64 ²…ÙÙ\?uŠ–C†P˜�MÊ_Õ«—Å¡Ÿ•eeœüã:?÷ÛæÍ#ºÙ6f¡ÕrjÃbºwÇÕÏ�C+Và�‹$Õ .È¿|™Â+WˆëÓ‡éé\:vÌ�³j *JJ8»q#ÇŒA«Õ²ã›oˆîßß�7VWh5Rþøƒ–ƒáàæÆ�¥K JL4|ï,Á�sç¨,*¢ùɨ÷ÖÈ‘lIOÿ'$jµÚUÿÖx¬¸ÿ1>.nòÀ>˜éèáÁ™�QÔâí’CUEN~~„è ù×Nž$ïÂlë±À,++#¦_?J%ʹœß¾ÝdN³tJJOJÂÅÏ€“k×¢V*-vvTUVâÚ  t!þWŽ¥ðÊQúº@£ÑP­Õ¥KÍ(º~�Œ={ ­&-Ayi)á;âäå…V£áäš5ØÕã^W”—ãaHÍÈØ¿Ÿ’œËy«®F«VÓLMZpå ™Šj¼Ô¥ÅÅ4éÖ {WWª+*8µnvöö÷+ËËñnÒ?‰qbÙË//˜³o_í=;ÿEÜ5�ªÚƦ,") G =ªR(T*Buîð ï°0¼%±Þõ�ƒ›ͺwÿÇtôžŒÿV—³—Í{öüÇtÔ¶¶DÖº\WFEõ�鏸øü+¼Yaކ‚¬,>ðö:£Œ%°spÀ=(ˆŠâbìœ�qôðÀ¥=øäѾ=Ù))ø„‡SQR‚=-ô>aad?@Nz:ámÚÔë£nçà ê'èàæfq”�ámÚ�wù2®~~TWVâR/:þMšpCçAÍ9ž°¶m륌Ù98Œ ÅŸúûõº­+‚bb(ÈÊÂÁÍ ­Fƒ§.¢ÉR4ˆ�%eõêz�k…÷*ô!›Í{õúWèÅÄó�é8{{?xð¿0"ˆéÛ÷_¡Ü¢´hñ�é¸úû+ðH× •ŠØþ1€°6mþ:ÁÁxÿc:j;;âþ…{t·qתVXa…VüßÁT_⪊ RvîÄÃÏ�PE{êÒïzz:çOŸ¦¼¬Œ†áá„ÅÆ÷N–x„tŽoÛfÇprqÁ'(ÈÐE aÁiŽÑé={(/-•=Ï·aC‚tQ+RÞLÕ(¸~�SRTT„·—�ââpÓyô0׿ðì¾}(”JšÈUOïÙƒ�­-�x@v¼æúIë±yÉ´@�áÃEûM=·™™\IK£YëÖFi©PRTDHÓ¦†©¹BšêjNìØ�W` ÁºH'+¬°Â +¬ø7pתUåå.)7Ö+WÅ'<œ0Ý¿ºªŠ´;(ªG诣»;M’“ =뮦¤pÕD54sPÙØÙ¾=nº2ãE99¤íÜiyjr¸‚uísªÊËIݾ�âz„þ:yyÑ49•.ÌëÒáÃ\?wÎb:j[[''¼W¯r~ï^4õˆ]oK`óæ@MXZêöí”Ö£ž«Ÿ�;t@©®éñ˜¾?732,¦ccoO“N� ùiVXq?BX_nÁ³kÍÞ™5‹¨°0æþðCͼ’@i¦`„¦ªŠ_¾ü’E¿ÿNeu5j5·++iÅ‹¯½F  Ò°¹bq_}õg¯_G hu›³� ][·fèOª“"¾ôt$¼-úþ{ö¥¦Ê6 näHF òþf }T”–òã石vËò‹‹ ps#§°7GG<˜�O=eóS«T&yûùDZµ·ç=™™E‹ááêÊ[k¼”Nm Õ=ûöQ­Õò�°µ¦ }Þ¹“óçóý矙˜h8þÏ%K˜9>Ý[¶dbr²¨’¨B@Ot�**˜1{6½ºwgtª[‹ÎYq¿BSUÅ­ìl°0¥N¡Rá(ÚWxýºÅécPÓJÞ_VXHi=R¬ì\\DºQue%…ÙÙÓQÚØtc=neg£©G›,W‘ñ³¤ €ò¢"‹Çäàî.ª!SUQAQ=j%¨íìŒÒ; ®]Ckaú n¢�ñâ¼<*Š‹-“£§§!�í~Á][¨:zy kÜ­›a‘h Òwí"ëôi£¢8½y3aaëbû-Aqn.GW¯¦õðáåäpõìYš×£|uEG–-£‹®âðÑ?þ và@Ôõˆy?³iNžžx…„pbÝ:ññ±˜NaV'6l Å€äœ?OîÕ«õâ­²¬Œ£«VÑqÌÐj9ºf -† 3äõÖZ-'×®Å=0'ެ\IxÇŽõ ýÎËÈàì¶mDõèÁe]KœúðVQRÂÑU«H’TÍûoÀª–Yq·aªÇÛÞ={èËŽS§8°e íeZÏH½ŽB:-_Î×K—òÜÃÓ¡W/<ýý9²k ~ø�/?þ˜�.¬€Á;ÒgÐ òò¸rù2ß-[FNn.3æÍ:µ“ô‰V(tOLd¤®?µ^��âÞ‚’Ö Âß¾ž6� ûöñhÿþtéÕ‹ÀÈH®]¸ÀºåË™ûÓO8¹ºÒ[ׯL)¹¾\¯=Ù6V 㞀Òvgµµ¿RèèH�3EÇЇ[°oÃÏ?3û›oèÝ®Þ_¤ìš{nÂ}uêÍg]¤Zq¢º²’­_~I`l¬Å¹òšÊJޝYC²®Kľŋ±÷ð°\?ÖjÉZµŠv�>Š£‡éû÷““žŽ‹d¡X”äæââíMÓN�¨()aç·ßâe1oUååeeô¬Ý‹áìçg¹~¬ÕrhÅ ’Ÿy[GGR·o§(/‡zè�EÙÙø†‡Þº5%ùùì[²¤¦î�¥5JK)+( Íˆü½p! ŠÕZ-‡–/§ËóÏ£²±!eÃ***,.È 5ù­! 4øBÇïܵ…ª‹��£C=@ƒøx²SRŒŠ¢¬°ïzVë†nå^¾LPtt½*v©Õj¹?vNNõÊŽ‹#ÿêU¼BB¨ª¨À]×@ÞRxsåðaò¯\!8>¾~¼9;òœª*+qñö®W¾Ô4xÏÏÌÄÉÃ¥J…k=ྑ‘\×y¾ó¯\!´M›úñæêZ/c‚Vüÿ9�jöÅ‹ì>r„—ž{ŽR`Ƕm²m�fÂcSÓÒhâïϯ¾j0`õ:”YYüõçŸäffâ§Ëý×{Tåè( ì]\ˆ–䮇„‡3aÊ~ÿî;}é%Ññ¦xSP1!¥%Sá±6ofÅŽ¼4j#^|ÑpLhT㣢Ⱦqƒ=Û¶Ñï±Çjí�m®Ý˜cO®©>Ñ&¡P Ðj�Ž=7Á5ô<ëïÛÚ~`ÖüùôONf´iF^uo’±jtÏÔ\Û ñP­ U+î#è M×ÓÒˆìÐIäG]qúöm*ËÊ Æ¸&õìUìÛ¨WSRhœœÌ�ôtâþAþ婵kQ(\II¡i÷îxÖ3ïþøï¿æ½J­¦q={L»úú’}ö,!‰‰deý£ÜÒ«VѦ —�!¶ÿz‡ƒ;¼U”–âäåE¤¤Ïj]açäÄÍ‹ñoÒ„Ò[·ˆéß¿^tRV¯&86¶Þç›ÃÝ�ß÷\U€´ƒ)½}›8Õ\ž“%¤=JÎõëøúûÓ8!A´˜ŽC¡²“qò$ù‚P[[¼üýñ 3Ê»’Ò‘òvõÜ9r._–åÅÎÁ�æ‚p0}ˆ•=ª++9¾s'7rrptp ´Q#‚›53²™jhœ�žNÖÅ‹Ätè`T2ëüy²22ˆKN6(�R«|mÊÈÉ={8}ü8 †³`ò«U*Ðå  y«®¨àøßJ€®5�9—.qõüy\ÜÝE!jÁ¨�ê…cÇ(-*"ºÃÒ vVXñÿô!›r Õmë×£V©HêÖ�²’¾Z´ˆ1çÏÓP’k(ì§§”Ð nЀ%ëÖñìYtíÛ—H]ê¨ 5a‚ÈÓX[Ÿh¹}í{÷¦ñ×_“zîœx1g®O´% '¡¿öïÇÅÆ†¾Ã‡ËÒ™ðÆ¸¸»c£““jµúNˆ´tái‚7=Ï 0Z¨Zúkª‡Ÿ¨¢‰…êÚ~`æüù éÞ�ß_¶b©J¥B#—ð:Õ�j]ªÖŪ÷´ 6vv&ç@uE •ÊdE`•��!dT*c…¸�›KiQ>!!²@[;;ôÝ<¤2°º²òNX²BQkdœÁ`%Ûˆ–R>¥›â­¤ €Ük×ð •­*¯¶±1´Ì‘ò¦OG“K]©®¬¬‘‘‚ßô2P£Ñ`ccS«ì2E_Ï›¶ºZ¤‹j54UU5÷Xòœ4ÕÕh««E÷Imccxnr²´¶÷GˆûM¾Þµ…ª)%¢¬¨ˆiÓ§s½ €Ïœœˆ–Éé©MÙ9°e sçÎåbNvvä——ìéÉócÇÒ^WÚZ!áKöçš5ü²aƒ!ÇI¨ ##é7`�4âÇTžÓÎÍ›ùê×_‘{½Z5iÂìŽïðf&Ï `ûªUü´x1©W¯âçâBiy9¥••ôJJâ© ðx`E¼ „Þ­[™÷ÓOü¾l™Q¡’�[·òÓÒ¥,oÙ;]^ªR)߈ÚÒÓÒøú×_éܳ'î‚ø}•J…F«5â­4?Ÿ·?ø€'† c¸@A¾tú4ï½û.Z�†·ßyG^‘Ó�GøÛê+ÈÌÌdn,’ÿgJÓ}&8¬øÿRƒŽV£a×îÝ$·n�h(ÝúöeþO?ñ׺u<#É54çQòÔSdfd°à÷ßù~Õ*ÚÆÄË-[ÒB2kó:Ê~Ôj"Âù|éR�±Kïm”ЕÒJ»x‘鯼""Ìc/¿,Ú' ýÕÓÉÌ̤Qp0>‚ê‹U†¾y^ºˆ•R‰Bž+]x¢PpìÌž2)Î]½J;IÄ‹9o±ôÇË-ü Ë,Tw®\Éw›7£V©èÚ»·Év*•ÊжKº ®ЬSd‹UZqŸÂT˜þñ¿ÿæ“™3iΟ}fò\=äÂè÷oÞ̲%K8Ÿ™IiE¡~~´mÙ’G_|QÔ'UZÔMHçÍQ£¸*ÈétrpÀÕÍ�6-[òЈF…Õ¤rHHëƒqãH»vM–—~½z1dÜ8Y:r¼í\»–õk×’’–Fqe%þ®®D4lȰQ£ˆ¬Ì¥W|ü⋨íìxå“OŒÆ3}üx\\\˜8s¦Ñ˜ôtjK[˜5q"(¼&y~¦Ò+6,^̯˗3åÝw‰T9>{ð sgÏÆÏɉçÞ~_]D¨ôúÂÿW3ùñÇiݶ-#'M2;Né˜îÜU�ªÜ‹ñ÷ºuTi4$6mÊö-[ˆ“ñŠ™›Ð·óò˜ññÇÄ6i¤ ˆjÕŠÓ‡±zÕ*Þ›9“…áá¢Ê–¢‰(2M|}ùÏ›oPZRBîÍ›¬üãf~ù%~AAD·m+KG:&¥R‰‹ZÍìwÞÁNîlçà >ÖÌDܺbïú)]™üòË4IL¤¬¸˜]7òí/¿P9{6S>ýTž7ÁD4„`ÈLNƒ¥]p/D±yHBk½ô>èkz y“ËwJOIáýwßE­T2eÚ4#�¹ç&¼~m¸ß&´V˜‚tžìûë/¥¥1räHT*A‘‘tjÕŠÍ[·òÔË/c+è%ª4#œ\]yëÓO°w/{vîäèÑ£ü°t)ó/晡CyîÍ7 rMºP•Ë©”›·Î..”–•�Vkˆh1' ÕUU”JŠQT”•™Íã^¿¼¼;;;Ññß~ú)KW®¼s/€¹_|AÓÖ­Q™ù.) ü<=I”‰ É»}[öxouP¢ºÍlŽªàJ¥�VËwþÉ“°ýÐ!æ|ú)_ÅÆâêímD_¥RQ©[¨þãÕZ�°ÂŠÿ¿ çbÏÎ�x¹¸°íØ1†;FS™ ßB‡€Ôèsh˦|ø!ãâx®[7\ÜÜ8{ú4¿mÞLQa!/x§Í¶J­6Yø,·¬Œˆ�Ð#-**âjf&Ÿýø#—.]â•�>’L9; «ªðõõ¥³LodÓ¦¢cÍ9r~ûúk>ÿé':%$0aÜ8|||ȹ~�­[·òÚ”)|0u*è žæ9EÕըɤ?è³A>jEÏj3²•hµhdè›zn µšŒ‚Ñ};µoÓ?üowwÆ¿÷~‚PjaÁ:#O¸ZÍõâbª,H¯¸ŸtÛ»·P5qÃ÷ìÙCBt4M7fño¿ñTn.î’6æòœRöï'«¨ˆÿôéCk]óÜVÝ»ãîéÉ…óç9¹¿!4M¾ÂJ©kl,ÍqjÕ¹3“_|‘Ÿ.dvR’aR›kß PÔä04iÕJÔ³O¦<Uü¼d ­›7gêgŸB6\\èûÄh€¯.äRJ ºÆÊR‹‘©ü$!„–yéñr¼ÉA¸«R©Ð× >µ@‰U«Õ\8~œ÷Þy{[[ÞùðCHÂ�E¼IƪßWç04kè¯÷9L)Û¶lA«Õ2﫯˜÷ÕW••‘YPÀÖ•+é#¨ «*‚¹«Õj)½u …JEBr2 :¥%;#ƒŸ|¿üB‹–-IÒõàSÕ#ôàÆõëøûøˆòãMEÃ@� ˆnÚ”Y‚BN¦ ç ÄòÍÏÏ�¿÷¨ÈÐ[µ]çÎøè¾GNŸæûõë ç¨Ôêš\QÞ  ™øþûF×?>p ‘—ÒoPsßµZíÙ¬0–Ò†Üéù}nÄÆN�J‹5kxþÕWù⃘òùçFcT™Q«Õ–ç¨þ·”¨ûG5³âÿGÈéT%·n±sß>†=ü0•[·²mÓ&¢eúmŠ";¤ Õðwsãõ�>2ôBî6hÕUUlÞ±ƒ±·nz[«òÌHž*1ø™gD×ÿì3>ÿùgû��<"8\�>&µâãímDK¦råÏ;Æ·Ë—óp—.Lœ6Mä¨é9l/=ù$ëþøƒ6Ý»õŒÈÑñ-w¼�N]¢Vd®)åM(ǥߔ“{öðþôéùøðö‡â-‰f4Ç›ÅQ+÷î^è¯ÌO?q‚ÝÇ�óúóÏײ%ó/æ¯?þà]5]=Ì…þ6ŽŽÆI­fÝúõ¨mmiÓ£*š·nͯ6ådòœ S¡T¾ÁÁ$ÄÆòûúõݸ�‡®¤¸9‹‘þ¬Ëdñ& sð¯¿8uå ï>ü°l1£>#FЮsg­ „ �ÜÂS.÷InkÎÒ'S a¡å]øÜ„’‹))¼;u*®ŽŽ¼;cáá²×0«¤*•²J›ìXï3Ë“V˜‚p>åå±mçNuíJ{AêÀWóçó×æÍ TÖzTõt*ËÊÕ§’“™ 2W¥B©PÐ¥W/Ôj5]dôþýÌ[º”Øï¿gðÓO‹è˜S¢ªò»® U+¬¸_ �fyÏÜöµk¹yû6m““)..fí¦MŒ),ÄER¼Gh ”êÇÎ..\¿u‹#[·’f Ó§Nå»åËqÐWQšyþú¿7nÙÂ1I?ëˆÀ@¦}û­Éûm…÷¤rèÜÑ£ì:z”ÿ¼ð*•Š˜öíiÖ-[úì³b‡™÷ЦM™3>W¬àÀÁƒ,]µŠyK–ÐØßŸ &ÐIÐÊD´˜C>o]NùùûsñÒ%´ j}5`ÉbN*£N§§sýÇEtZÅÆÒuð`£kÊ]¿°°/OÏ;×£&Re×®]wNÖj™ðÚk„DE™­€BAaq1™™™F¼•”•/-ÆWk9mÄ›DÆjµZ¾þõW¢5âPj*‹.dzb¢lå^¥R º…ª~L†ß,¬À}&_ïÞBUr÷¯\IÊ¥KÜ*,d .ÏI£Ñ 6ÿù§¨·ŸR�t ’êX%%”É#‘‘<”—”°zÑ">ýæ–,\È+‚ÄsýXÐYšä IqýúuT  64 g•ãM¡P`¯RñÎìÙµöUêB¤ �¿¯/UZ-çSS‰i߀àF�xþ¹ç¨./göüùhU*£1)dxS£ÆŽ­)q.À7̾cÇŒŠ) CRäîIuU•aÁ©WØTjµX¡1¡ìèÿmËŒ/¿D¡PpjäH>�3‡f øÈX ¤tä ‘Xª¤ZaÅý ½Q¬(/�FaaÄ&&b#1T$vêÄä1cÐTV”sƪÆqq|·l«~þ™ŒK—ÈÊΦE‹<ñä“ô„‘fÃc{uíJ™ }•££#>ÞÞtïß_6@dˆ“«:%%áìêj¹GU2¦˜Ö­ùeÍ6,]Ê‘#G¸qãÍcbx¨Oz=ü0�‚q™ã­c»vØØÚÊŽ§KR‚нÚx˜üÑG´jßž³gÎH».]ðÒ¥¡ˆx3᥉lÒ„qÇãÛ �ˆv«®]yï�78sꇶl¡ó A€y�ª�½=ƒ{÷¦JFŽúJ½Þ¬°â~€P¾ï[6l ¢ºšCû÷sìØ1Šoßæð… Þ¶�6=zŽ•ƒ¤óÆ'(ˆQ/½Ä( /+‹}Û¶±|éR^™2…Å мuk ~-ÀòòòðñôÄÞT‡@ç6møðË/�èK[8šJ�óððàô™3h«« •‹]ÝÝñÑéÉ7srØ|èãuN¡ÚêÄ6mÊg‹ñöäÀ�ÿ¼˜‰{'Õ³… ð@L ï|ö¿ÿ=ïñÑ_|Áã2•{U*Šª*Y¯·þ™ÖÕ£z¿¥´Ý½Ð_Éß¶u+QÁÁ<=fŒè¸¿·mcó®]¼péAºüKs Áô×_çô™3ü²y³a²¨]]ñ :r„ .˜TŒB1ö¨jµZŽ>LãÀ@š·jUg�*Èç„JaŠ·ö]»âùé§=r„ÁO?�B¡À¯aC†�@q~>Ÿ/\(®:f£Z[Žª^ÐÔ5ôwòÈ‘¸{{ó–®lwyE^NNø×Í£ªÛß²eK¼uÊÖ+¯¼Â³&ðÉ{ï1CÇ—¦ž›þ7«GÕ +ÄÐ/x<|}ywÞ<³ÇNúè#ÑÿMå¨êááëË“’¶/²c0úû†Ls0'&|ðAÝéÔR,ÎÙÍ�!Ï<ƒqc1Tfx{þ½÷Lž÷â´iÆc2!»…è2p ]$!vR˜ KëÔ¿¿È #ÄpIM¨%ô×Ù™)eÕ +þ!\ÌUWV²íï¿i…�ÀˆäáåEFv6›6l I1fÊ`VQRÂä'ž uûöŒ|é% ¦VJ¿Ç#±];z÷íËшÕ90êSpèvAç/^$!:Z¬»Öb0S*•ØËô;•BêQÕÓ‰ŠŠbî]œÚ»—ta¾}G�¢¯®�ߊo¾aó¡CwÒ+jáͤާ�ém-ñ: »yíW®$©sgB›7@£ÕbgooÖð&]¨ª ž;WOO›8‘cÇŽñÕ�?ת•¡Ö�fe¬@ÿ_ÔkïZ‚žþ�ªÕjr¯^eëž=tíÜ™AO=%Ú†�IAI k—/7¯ÖYUà΃Óo-ZµâÐÅ‹|;c†¨"lúÉ“œJK#J7õ›HÙÑÅÐï—Ю*/gÁ°qï^îÛG�Å^­VËV5Óo†…¡€¾©MNÙQ«Õ4hÔˆ‘ýú±dãF>}ë-´UU†ß*JJXòõ×UTˆÎ1Å›4?It?dÆ*çMñgoÏîC‡¸tæ e……œHI!,(W//1o2Q¨„ ÷%÷íË3ƱbëVÏ�ktMSt ÖDÁ³7·ÝoÚ +„мÝIÙ¶­¦i¹FcÑVYZJvz:vÎÎ( rr(+,´˜Ž¶ºšc›6á^c ³·'+5Õb:h4ܼt ­Ž?ïðpŽoÚ„¶ºÚb:ÅÅä]»f¸O…7oRQ\\/ÞŽoÚ„GppMÈ—BAnff½xËJMEmo_Ã[X'¶l©oe……Ü.(@¡P`çìÌ�Ë—©,-µ˜Ž¦ªŠ³{öàXÃp+;»^¼]hê79c ~+ÎÏç½Ù³ù{ófÃøó Ь« oR=ÛÖÖ–Wßywf|ôEyyuÖ�õÏN)£Ëm÷îjè¯þ†nøí7òKJx𡇌nr‡>}hÅÆM›xþÍ7QÙØ˜mqÐÿ‰'H=s†™ß~˺M›§´´”cgÎÐ$$„£G‹Ž†[HsT/çåñ¨.禴´”«ÙÙÜ,.fô€Œ}ã }X+{ ¡ux‰ôù£r¼Mš6�²²2æ-Yªõë‰iÖ Mu5iééd0¼gO .âAhAîyK½>@:9 <ÈXã†=ú(»^~™~âloOqE³ß{Ϙ¶J¾Å�´=�/½û.ÇNœ`΂$´nÍ�:ÝS¹ª˜J¥’´k× ÏÎpŽFÃŒ9sh¨³� y³ÂŠûŽîîøDE±ú‹/,>W¡TÒôÁ ó$ºOþüñÇšE¯…ð ÁGÕ£Ç÷îe߆ Ó±wu%ZW·À= €Ò‚VÍ�k1¥JE”À«Õ»7¾ûÎPÔÂøDF⦫¯ýÐCؼ¹fAo!ÜÝi® ô�ŒäʉõâMecC´N* uíʺ Ðj4µœi ÿ¨(ÝÝhÞ³'»×¬¡\Ò£¶.pöö¦±@Ž[aÅýax¬~Á±uËš6hÀƒC†¥!õxðA~Y¿ž5Ë–ñ¬®¦ˆPïæ:<òØcüç­·xräH’Ú¶%00�ëÙÙ¬Þ¸‘Î té×O”J%Ô³¤y™gÓÒøø�7È/( ýÂö�>ÍøáÃé6h�Q®¬^Ï’öªF¿ßÂ+á˜Â£¢˜òŸÿ0eÚ49’¶‰‰„……q#'‡))JMeP§N4lÒ¤F7¤ýIyCnŸðú{-õ)iúXDL m¢¢X²beee\½r…”Œ F?ù¤qŽª°+†àúÂZ-ú}aÍ›3é…xiÊfO�ÊóçßY7˜« £u"%ÅðìôðqwgÌþcò~ÿÛ¸Úò=‘£ª^=šºt‘½¹£ÇŒáÈ�dœ>Mã-D Õ ~ùœœ˜úÅ´nßžÓgÎ�‘‘�§—ÉÉÉ yòIÜÌô1­ˆ�‹ÃNP.ÛÆÆ///âi¥ëé$åGŽ7€fQQ<1x0NNµNjsÉâN®®|ðÍ7ô4ˆÛ¶q%3µ­-#Z¶¤UÛ¶¢|#Þ“¥I³f<óÈ#8¹¹�§IÓ¦<öðÃØ ÆjŽ7€Ž}úð{H»¶nE¥VÓ²MšÈ4¶WJ„„žŽƒ³3O L“fÍD´��yëý÷Yù믤ìÝKë®]Eçëþ02´h�§¤ô; Nîî²ù¬VXq¿Ã72_™žÄ–ÂÑÝ�è^½þ1¥ZM£þ1€€fÍhÖìÓqöö&ÚD7K ¶µ¥±®ÖÂ?EƒØXÄÆþc:nþþÄŠÖ6öö4éÒåӱŠû †:¹¹ݸÁÃ}ú ’ ÑcèP^¾œK§NÝYXšÓèþðÃø°øûï9{ö,Û¶o'(0�A½{óÒÛoã¬3"éÇ õ:êÑ$8˜¼òrNž8�BQS I£F<óôÓô|ä£"?¢¨<‰c#Ìß7™t9˜K�ëÿØc4ŽŠbÅÏ?säèQö8€��aaaŒ;–}]ͅdžøúbçà ;žpœ]\ŒHú�ŠšªÕ¼óÁÌ�5‹U«WÀû“'3D¦g¬©þ·®..$ÇÄà$¹î�gž!õäIN�9ö¥Ké¡«ã âMr�llm‰�Œ¤¸ºš“'Nˆ®hÄóý¦×Þ½UÁƒxöí·Í;àñÇ ëc⪿¦b¶ûŒE£½Æ�¶½ÑÓþüóu8[@GðbH'¢0æ¾6˜ËsÒ#©woQ二Iè!í5|8½†—=§ÏÈ‘ô9Ò$SU›$$Ð$!ÁìxLåߺz{󞉜¹„¤$’’LÒÔmŽé‰É“ÍŽCk{+îwXÃ"­°Â +þûÐë�~~üø×_¦T«ùæ�?Äçš)êТCZè {Z�F¶�K iµÉÿ/ظ±N|rg|’Åܧ˖Y@ÆtûF¨)Z£+%,Ì)…Z²�Ò™ùË/&¯ÿɯ¿šŸ\taBRß™Ñ=õ-æúñ�çžcˆ®Ø©ï|õ•Ñ>³9ªnnæß§ûwm¡š{åJQaNŽ¿ƒ‹‹ÅçÛ´ Ï� îîd=JPÓ¦ÓÉ»v ­V‹B¡À7<œ”-[ð µX©«(-¥ðæMÃy· ¸�›‹]’Ì…Ðjµß´ ¯¨¨š0®�=kT™·.ȾpGG ^¡¡ûóO: n1oe·oSRXˆB¡ÀÆÖ–›™™”äçccoo­FÃÉíÛ KNF¡PP]]Í�‹q—i|\.Ÿ<‰³� …ÏÐPŽÿù'‰õð”RV\ü¢Ä[— VÜmd§¥‘yâ C?Uj5�Úµ3„µ–޺říÛ©,/·x ~ÿ�½ûŽoªú8þ¹IZ:iK[Fe–UöÞQ† "Š€*ˆ¢(¨àÄ…üDE@E\(.p¡¢È# …Ò²7"P@V¡-”BWrŸ?š„›ô¦KÚÄöûæ•—6÷æÜs’Ü“³OjZG[¨ ‡7nÌ™ïXH¾AA4èÖÍž�ÿûovì(|ÚŒFêtè@ˆu±“ôÔTüñ™éé…ŽS¥Úµ©Ùº5�“¶¿bbH9}ºÐáø”/OƒnÝð¶®¾™xô(ǶmCU�w½Î›Á` n‡„T­ €%;›üAJÞoOcòö¦QÏž泊¾ÅÎÚP¡O�¢^›6E &íÒ%¼|}Q…ìÌÌ"Ï5L>}ŸòåíÃZÕììB—×,f3YÖm]ü+T ùôiªÕ¯_¤8e[×O�œŠh^iËëØåÄD|ƒ‚P‹Å’3å®� Yö\¿�R/\ B•*…®§ÍË×—Ìk׊ü¹]:ß��œ´™ÍEçêå˘ʕ+¾r­½•ÂþøÝ(“Z¶|¾ÕàÁ3ôöÊOXíÚTŠŠr*w'¶oçJbb¡Ãñ "²M{ëÍÅ„Î8@aߣ—5Zµ²Ïá¹vù2 qq˜³² Ž„GEnÝòÀ’�M¶m\MN.dŒÀ?4”-[Ú‡rœ?r„Ä#G Ž©\9"[·ÆÇÚ �–”ÄÉíÛ1r~šBÎ<§ Õ«9+â�‹+Ò®ÀŠ©Ñ¢…ý†9sàI …ÇË×—šmÚà]È…¢øìá‡ß|}óæÇŠýB¢ÔQeðJ¾'êhQ±"ó?û EQØüÕW4sšƒTÙì\¾œ¾�<‚b0ðÛ¢E4êߟrEhdükÝ:ª7h@ÕÆ�ÙýË/xQ±…Ÿ+‰‰œØ²….cÆpíòeb>ÿœ¦·Ý¦»?]^Ì™™ìX¾œ¾“&¡ ¬ÿ}êöîmÏï ãXL áÕªÙ¢{׬ÁàïO¥"4 ¦]¼ÈÉØX:�Ezj*—-£ÙС…O[V»¿ý–žãÇc0ÙùÓOT­JH�…Ž“§ÉJOgß?ÐËi…⧆ ã7ë,E4DUÕïÿUäD™òp‹Sï˜;÷þ*°õj,™™…Ãb±X¥ µ¬½ŠÿìÝËÅ¿þ*ô=�m6Ólð`E!íâE¯[‡—fŸÒ‡“•EíÎ�)_©{W­rØç³ , Á5jP£eKNlßNʉEͦ 4±Î»¿|îG7m*R….;;›zݺኪªìþáŒE¨€Y,BëÖ¥jt4ÇbcI=s¦Hi3x{Ó¨_?’NžäD\\‘Ò–••Eþ}‹ôVŸMš´äõ˜˜Üc ‹‘ÛzT�^^éµ;tÀ_o.a!(ŠB¤Î|È¢�Œ$´½—Î|Ë—§�f>eQL&{Æõoݨùiþ*ÐÀºŒø¿aôò¢NÇŽÿ:¸qóÓ„(�EáÒÙ³Tw±oj~L&ÁÕª‘yí>” À?$¤Hq©Ó¡§âã©MZR�Š˜W©Âiëʸ)ÿüCD“&xkÖ((“ÉDpD„=m//Š˜¶ÈV­8GÍ–-IML´ïkXXA•*q‚œÏíòùóTnذÈi Šˆ ýòeü+TàjJ µnМ`w3àí×@†¸ 7²U4þ­ªÑÑöÊÏ¿áJ ë^ÈÿVô ˜ßP£eK{¥õß(_©Ío»í_‡£( Í\lÕUX7ª¼^¡zu{§ŽpcEdî”(Cä{.ÜÌyuìCqq\ÍcDCó=콯®øzé‡âã ®X‘ZMšä ã`l,Yéé4éÚsó§´’ÏœaïÖ­XT•ÚõëS]§!J»ˆ…mþ”j±°{Ý:CC©Ý¬™nØmÛFæµk4¶Î?Êk¡�ý11d\»fÿÛ×ߟšÑÑøè,�b6™îsm8Gwí"5)‰¦Ý»çúÍ;¾w/W’“‰ÖT"�´¥¥¤pxÛ6švé‚Q§Ña×`±Xhܱ#Þ¾¾Ž-ûÖyO»~ÿ‹‹‘T^ÞÞDwé‚9;›]ëÖVµ*5œÞ{‹ÙÌîõë©T£áÕ«³gãFݰl*Ö¨A¥ÈHöüù§Ësü©ß¶-W¯²óf‡cŠ¢P±Z5ÂkÔpÂh�}ìi;{èoÝZèaŠ¢P¿sg*XÓv59™}k×z~šj±^³&õ:w¶gè ;vpjß¾ÿ|¯Z,TmÔÈ>÷NOä¼ÆË–±~ÇŽ\çY€0__Vtíjï�uµ}@P«V­âÀÑ£¼öúëT·NɈ[»–§_x�ñwÞI ë³uO;çplÆÇóé°ëðaàªu®Ö ®]ÿôÓ˜4=‹z•9€ïW®äbR‹>û,W~—•žÎœW^¡uË–4³n“â¼¹6NŸ~ü11bû”�0??º¶m˃O?í°¢§¶îÎÊo¿eåðôĉÜb]åÑæ×äÀ�,Ôl¯W ?¶w/�>ÿ< 0oÆ Ú;õÞÙ¹“©³g£X,|þÉ'T®SÇq�kXó-âïÄDÝMÔ›ÕªÅÂ=ÈLMå™_$¢bE^_¸�Pë^€ŒŒ æÌ›ÇÐAƒè7x0ϼð׬sƒ-Ö÷Iû«~ßðá ¾ãžš=›LUÕ�¯ß³ukžïØ‘“ <>{6F®oòn{ß«†„0rÄú�‘óÉBxÂÃX²³söx.ä”:£ÉDX͚ϥœ>MÆÕ«…ŽC…jÕt®]¾Ìåóç Ž_p0�aaö¿-f3Š´Æ�sÚ.�9Cz¶· ©ZÕ>wrÖ¸tî\¡Ãñ r˜ß®Z,\8~¼Hi µ®—c“–”T¤úˆ§ñòõ%¼V-wGpcEÕ/4txÝ^½Š4ÉûøæÍœÚ³‡jMš°÷ÿþÿˆªa(ÁµK—غb�﹇«Éɉ�%zàÀB÷~Y²³ÙñÍ7ôš0Å``Ëòå40/Í UP'·m»ž¶5kð­T‰Í›:œôË—Ùúõ×t=šk—/sðÏ?‰¶Î[( ‹Ù̶åËé5a“‰ØåËiØ¿‘Òv">ž„mÛ¨Ùº5W.^ää¾}4º[Ax‚¿þJpDÁEœ�/DqÑ]YðÁI“¸'5ÕáÜ¿wîäí/¿¤C«Vøh†V:ìñ§ÙZÊh4òà”)Lž4‰%óç3{áBŒ&gŽcþÂ…ônÝš;|Ð^a4 öÅGl¯·9qð 3fÍ¢RHS~˜¶Ý»“šœÌÚ~à�åË1zyñÐÌ™öóµûÎiÓÖ©sg^\°€�ë×ÓÚišÂ†Õ«9š˜È”=¶ßrõ¡(ôiÑ‚»ÇŒ õÒ%Ž9Â’¯¾"tÉÆjV7 û2ëmƒµôË/iÙ©U�¦aäÚïP'§-¸*ûû³}Û6:9 ÅÛºq#¾&é™™ö=µ{ü¡¹ÆÝ»sË�!8ó*WÎáZŸ=˧o¿Í”W®O‘6Z÷24 „T©Â¢7Þ°û¿U«X·y3/ΞmÿÌêVµ7Œ0€Î:Û»ùØ÷˜4j= r~ƒöïÜÉš5kxõ�w¨Û õÛ´‘^,áQÌ™™¬Y°€#9ò|mV;W­¢÷CóÙgxâíï_è°v¬ZE‡;ïÌ™B°s'Çvî$¸ÃH¯í܉¯¯/Íú÷Ç’�Íš ¨Ò¤Iá×8ÈÌdÇ�?ÒgÒ$¶|ñ??ÊéŒJÉÏîÕ«i5x0ªUãÄÎ�ݱ£HsîÓ/]¢œ·7Í À’�ͯóçѬY‘Ò¶óçŸé=q"oÙ™£G ®V­Ðqò4ÙééÚ°�ΚWÜÅmÕÀðp?½ý¥ "¢I÷ï§zÓ¦¤%%YÄyN�¡¡öBÓ¥³g©…©“Î1™ ·Ïsòöõ¥(«CÎÜ„Sññ9iKN&²S§"…`�û«( ©‰‰TjذHê±ÎOKOMÅ¿BL>>EN[d«Vü½nµÚ´!õüyBkÕ*ÐfÑÿU6$ùÔ)ûê¡BxçU硱'ä‹Õ«©Y­“Ÿ{Î~äF† IDAT!¿pØÞixl�¨(&Þ?Ͼú*Ëß}—=ÄÂW_ÅÏÛ›‡¦Ow˜›W¯ãò¥KÉÌÊⱩSiض-*Wflƒ$œ8ÁîíÛIKJ"¨bEûëõÒÖgÈ–~ö±›7çêuܼe më×§u¯^×+”yl ¡( ^>>Dk¶)èì9p€#GŽ8œ›Wo±¢(4©Z•¤k×øhÑ"f¾õÖõFëõõöøƒœ_“Éd?¯]íÚÄmß§ª¿m�ëÕã·}ûì[v9 kÖÄÉ'0Ð!MÎl v¯W�ïÖ­£õÊ•ô²Îu³}†Š¢PÎ××!œM›6¡ 4îÔÉ¡§:åÌÃÂò¾®õ5>��TÖ´æGÔ­KåˆÖ=ò÷í£q‡RICQÎ:DíN�Š´€@zJ Y×®áíçGvf&�ºv-R8•êÕãÄÎ�4í×�“{öÐlðà"…°÷‡P…sGŽP£M"Š8o6ãòe2¯^¥œ¿?ÙYYDq�éÊõë“°};¡Õ«sjï^šë4¶Ô¾DQ.ž8Aµ–-©žÏöŠ®˜¯]ãZJ ~!!œ;r„èÙó¿aÏÊ•‘ÏzÄ>ªç8�Ǫ´‘�Ù—�Îk/¥}þIvvvΰ.§7øì±cœ9z”ºÍ›çTRq]ØÑʺv�}±±$ž;Gåˆwì˜kȲ«yNGwíâòÅ‹4ëÑC÷Oå˳zÙ2._¹b?¦( ¾¾¾„††Ò¸];Ê[‡Æ�F,…\åYˆ’ä*¸–šÊ›sæ�ž™É+Ï=G¨Ó¶Q®*<6ý}»wóÉ·ß’tæ q0綾¨ä”/d»Ø;ýʶlßN÷víh¢Óð8ý•Wðöõuöå*+J÷Î�‰Ù²…IYYöלKH`Ó¶mÜ7r¤ëJ¸NÓù¹ó'OòÏ™3tj×Îáùì<*áƒßÀ@î6ŒççϧͲeÜzï½.¯¡—6[%®At4«—/'níZºZÙñþ¡Ó Aü¶oŸ}>²óðX“Ñhï9.Èm{ôÀÀûL«.]‹ˆ°ÿFé}Ÿl=¸&“Éá7RÛ{�×umd½ýºÏ�< ªJ�zõtÓ&„;© &//‡ï­%;5�á¤Úyæ&ooûÐSƒæÞR-,ÙÙ(F£îT9‹ÙŒj6ÛÃò*WÎ~Íüîóä3gÀb!8"B·|jNUö5gfºŒ�=N Fk>k4†C;4ðee�æ˜ÁËËeåÈìåe?×9/q¾f^ñ±`Mšz=/SUûnzkhãkôòÊéè2®§Í's^ÓþÅ�¼ÞGû1ƒ!ßD ržb0`pJc®c¹¢êþJ*¸±¢êü%Ûºa¯/Y’ë<•œy/Ï?ö}† r¾äz…€ãÇ�óÚûï3mÂú�eþò… ¼0kƒ‚˜Õ³çõÄ<*ª©/²táBbââ8›’B �®^¥S£F<8y2µ4­K®æ9íÛ¹“×?ü�…¾¾4ÓYqñëO>!~×.ÞëÒ%ç žG«üŸ¿ýÆÂÏ?·Ïÿ±þ&�jÖä¡Ç§žÓaWiÛ³u+ϾöýÛ·çéyóÎ;´};S_~™·_|‘æ={æ¼ÖEAnñâÅìJH`ä-·0ñÙgs¥í�ùóÙ|èSî½—¡õê¡8eØF£‘�;wòÃÚµÔv±^óV­ˆ¨S‡Í±±ü‹Ùbá.ë›øøx.\¸À€{ïåÀŽ8~³ÙÌ�sç¨N9kÆέãÆKÜÞ½TÓYáÓ¨ªÜrûíT¨ÀþÉß§N©)¸'^¼HBR­êÕãÉgŸ¥Z½zM& 7»Aˆ’aï9ÔÙÔUeÑK/è¯ÎœIC�¹ÖF§a¶záLœ>�½‡ñéo¿ñø¨QtÐYÓ–w+Öx[8‰'NpæÒ%jDFê†líEuH—Ó0[íëzõíËg?þÈŸ«VqÓ�w°þ—_0( ý† ÉU‰t•6ØäOÞwéü}êÍëÕcÜäÉŽ›²[SrN[N@9Ïß6nÛ·mcɧŸÒ®{wªÕ«—s}r÷¨j‡Yk+~U¢¢èФ ñqqô´örnÞ¸‘v-ZØ·’°¥C[AÔ¦mûž=Ìš<9×{Ú©S'n¾ë.{c°ÑË‹‡§Nå� XòÆ<÷Ƙó¨tÚ†î:WTmçÅlÙÂQ�ëÞÒ¿?o¾Ùþ[³kÛ6’­ ‰ÙÙÙ\LLä·-[èÖ´)íúôÉùì5Ÿ¿žÀ9š3e {ÿþ[÷Üò^^Ìÿüsû4*£‹�´¤$^�2…,ƒ�o¼�oùòöóN>ÌËÏ=G˺u¹ÿ¥—ëÈåc€Ô¤$¾]º”°÷ï¿ÉÊΦAd$·Ü|37Ýu—ùzeHÕbá¥I“0úøðì¢E¹Ò¥ª*³Æ�§bh(�Ì�kO�^Ú^yè!ýó�ýoŸrå¨\¹2íÚµcàèÑak¬sNÛ‚Y³Ø¶g�M�𫬽äå—9qì/|ôÑõxè¤m÷† Ì�;ƒ¢ðôsÏÑÀ:²Ç&ñäI¦Oš„9;›¹ î4*P!çs|jìXÎi:8´jU¬È ~ÈÕäd&�EõêÕyöÍ7:`2ÒÒ˜:z4Ýzõ¢ç AL�0�¼V¼éß·/7Æc÷ß�«ªj³¨(žxýuŽïÙÃŒéÓÊ«Š¢P!8˜ð°0†�I}kÀS=¦¢Ú{à@š8­y-5•�—,á\z:MÚ´±Ÿo´¶(šE›Ûî»�ýû÷óÁçŸݪuš6EµXx÷ÿ#--�‡_z‰rÚVyM!E›ÉXÌfÞ˜=›Í{öpß]wÑ®kW«U#ö·ßx烘ó ,øè#ü¬™†ó.[8½ ⓯¾bkL ­4‹e@Î$÷˜¸8út5³Ñè0‡Ë¹ðRÞdâµY³ð)_žôk׸pþ<Ÿ¯XÁÂyóXôùç½È®Òf»±VÇÆÒúË/*ô¶/¦63Qò(ÈUñ÷'~ÇT³/Í�v(>žÃ'N`Ò^ÛbÉUS j‡‡óá÷ùl]§(ø |öôéÒ…­[;ÄÙöž?ñæ›öçw¬[Çø'Ÿä¾ûÓƒÁ@Ó:uxíÃó½n³ xI“!ged°qåJf¼ñ«¿ûŽ O?�Ñh$[æL f›·èì‹… ù|õj¦ŽKo[h¿×Îó)m®^¾Ìå´4 Àù tÏ1Z+ep}q__Œ^ÞÞž ½Óœç–¶éÕ‹ö�±9&†[î¾UUÙCÏŽ©ì´°‡!Ÿ´ù”+G¸µ¡*##³ÅBüþýü¸l£»¾5²«´iãjòòâá'Ÿdܽ÷òö¼yÌY¼8×üQ[<œÓf+È�FÚ·oÏ·+WbÎÌÄT®[bc¹}èP²¬û[Ûæ™ê-‚¥( Ð��eï½Õäý [·æ�»ïæÕ÷Þ£ã7ßЭ— Úa̺=ª®®kmD±]÷ï'HLJ"+3“= DU¬ÈC£G3tìØë |I^+<€‚f§û¸SÏž4vZ?%-)‰/W­"<, oû}¢-gió¡òáá 7Ž'gÌà“ ˜8céii,œ7oFM›v}Ýí¼tó¡+ÉÉÌš:•„sçèÓµ+o½•´´4¶lÞÌœwÞ!;;›AÖùøhÒå0ßh¤A›6¼÷ùçŒÜ»—:NSHv¬[džC‡xé‰'ì×vµÆ@jv6•ÂÂèn-_½z•cG�òÆ’%Å!>y­�üuá¾ÿ>¯µní°2{–ÁÀ¥¬,—ëh�%'ão2KãÒ¶ù÷ß9rñ"FUE±­  Ç–�'¦§S¯V-ZjÊ©6¾Öu F#'/]â`r2 ߟ�<â�γiiX +T`ðm·¡Xã·sǶïßÏØ#ìåýÚõëc0HHI¡ÇŽD5nœëº!*Øã{<%…;{÷¦�õ³S-Ž;Ʀ¸8fÌšÅÂ… ©\»¶Ã÷È�ÜWQu*X„U­JXÕªö¿-ÙÙ¼?üù'�Ü{/ûõËuÜÆöåÓ>ªÔ¬É¤‰Ù²?oϘÁ‡Ë—3zà@z–ë\½î“ÉÄöíÛ©Ì]'æzÍ�±cùú»ïè?v¬ý9‡‚œSœºõèÁ_gΰyõj‡ç7ÇÄйY3¢;t°?gÔÉdì×ÐhìñŽþõ ªW§ZTT�Òf»±Ý~;Š¢ðþüùöÏÃöÅÔž¯W�³Å'°JÚ6jĶøøëá l�‹£¹u(²6,‡ï€¦Å?¯ï‚-&__|à¶8ÀòÅ‹ß{�ï�¶¢í|LAÿ»“ëJƒ–-såC6ŠÎ½5æ±ÇèÜ´)K>ü�ߟå¿þʄѣiÚ©“nkc/{™ÍlÚ²…›Úµ£ßˆ¯ fÊSOñÔÔ©ø:äö´iòØêQQtkÓ†­[·:”å³®^eÓÖ­tïÒ߀€ëiÓVÂuòXç2³ÉhDµX¨’+mŠNÚLÖçCø{à@>ÿé'výùgžù¸nc õ3ˆªW�GŽpH“¿Ÿ=z”�û÷Ó°Q#àzÞè<ÚÈ—|óXëçÔ»woª„†²äí·QÍf‡ÏÐUëœöü^£›ëœ‚øûùåJ›;yÌÐ_­ß¾þš÷V¬`Ô€Ü9qb®E‘z]Ì—êuÛmܳs'ï}ó =›6eü3Ïèžç<ŒÀvNâ… DV«fÚëÌyñ ¼æ9u4ˆf~Hì–-ô±¶b�8p€�;vðÄC9œk¿©tÒf4I·XxqÚ4TEÁl±pþÂÒ®^套_vh�sŽ“6m¶/z•Úµ?f 3^�¶Ë–1dìX‡ž]Ûù®æ9Ùžëо=+ú 5+ /__v®_ω3gèУoZ{ L¦œ¡¿¹†m( �;Ç7Ý”ë=ŽªV�9K—Ú¯ƒ¢Ðó¶Û¸+6–�¿þšöݻӸm[ÝÖ2¸ÞЧפ( ÛÖ½n›èh¦ÏŸo?oï_1Ù:üD.''ó×™34ªY“~C‡:džrc áL{O_KMåùgžÁÌž;—`M‹¼ž¼zÿ\µŠ…Ÿ|Â}C‡r‹u�Ëé3g2zÌæÎžÍ»_~iIbû× §ßM71aÚ4þ÷Ì3Ì^´£É„ªªløî;Vüò �š7§ýÍ7_oÈÓÄI¯G5¢V-zuîÌÖØXNŸ=KŸ^½(§³Z^=zùpú•+l\·Ž//¢[´°Óþ°ç Gç¹)Ï=Lj;ïä—-[hX³¦Ã1ƒNÚœ+q�;wæË+ð2™¸Ü8ÇBŒN�ªvèo^¿¿p}Q#íÂY�Û¶åÁ{îá…… ñÒù-°]Ãö^èÍQÍoqƒÎïÀøéÓ‰Û¶�Å˖ѹO{¾/„'°ßS:ù�Í òåÿý�ß{¯}m-‡òšÎ}b2™xlÚ4ÆO˜À«K–p[÷î ›0!Wùؤ)‹he:ô(GΜ¡WÏžºqlâ4ÌU'È}Ovïу'^x�]6Ø·ÛðóÏœIN¦ÏÍ7;ægšÆ@ç´)ŠÂ™óçùhÞ<2239|ø0W32¸côè\åcÛh8ƒS|lq½êT¶ïÞÍ»ï¼ÃÛíÛãh/?æÊÛ�²5ÐÕiÑ‚Æû÷»iÍ­«/oúýw¢£¢¨T¯žÃûáð~kÒöÏ©S,ï½\ïiÃ&MhÑ¥‹=?÷ æÁ`ÊÌ™|õ™2Å!L½<Öž—kòw[Ü�9¢{ÝVíÛSßÚ89‹ nüé' g€ çÏóã/¿U¥ =vø­p¸~®�‹ŸÛ*ª®~°mßÎÿÞz‹ÎM›òØìÙºÛÅ8@7UUI¹t #p.%…´”üt¶Uq5|ÌËÛÛe%ØUz\¦Íd¢G·n,ÿþ{®]ºD`h(¬^M…€n±öòÚOÕôÌé.°„U¬F#³£—Û÷ìá›Ï?'²~}*hVñu•6mafè}÷·u+‹?þ˜ö=zèÎQuUHµÝ˜ÝúôaÁG±eÍz ÊæM›èغµ}{{X‹C¦j4æì›W%(ˆaÖ…²´‚¬-{ök[ß� O>ɶ={Xôæ›,úôS—/½J·ö3ªU©­{õiU®\ùúùŠBy??jÕª…ªª9r„#ÿüÃýƒ3zÚ4l[,9¯D-„§1¯ï�¹æ»ïXGÓ5˜1mšîùÏ<÷ÑÖxZ�5CéÏ&$ðâË/Óª~}ñEûó�Ú´á± xòå—YGÕþ·5œô«WÉVUû\Å‚È+�í=t(Q|ÀÆ hgmð�Ù´‰n-[Ú·+hÚNœ;‡Åš/¤§§sêÂÕ¬Éå‹§]å‘Çb­Œ3é‘GxhêT>š?ŸI3g:ŒÔ‹“}ßi[C›·7Úµ#.>ž Örnll,:t°7lÚÖÈ•6kýd×áÃ$h‰²¹Ýl¦M�åëÞ·ßÎ][¶ðáW_Ñ¡Gê4lèÐ+«¥5ãÜ  °u÷nö>œëº‚ƒiܶ­ý5KüÃ�?b²T•!!´nÖŒ‘ãÆÙëJž2ô×­=ªÎ_ÖK‰‰¼4{6Aþþ<ûòËö†œ´Ã,]ÜП/\È÷¿ÿΔ»ïfÉwß±à•Wxñ�wòÜÐ×öŨ]«¿ýþ;–ìl‡E‚lâÿïÿhÒ©åüürâ”Ï�xó�!¼ÿùç¬]¹’!ãÆ±qÓ&zvíJ�Ój·¶^F½´ |ŒF{æ‚4Òõß}Ç„§ž¢Éwß1ºa´3½9§£“—�L›ÆØ1cX8w.ý¬+udŽª-žQ-[Ò±Y3bccéqÛmlÞ²…»î¼ÓáõzsTm7yy__Æ<ú¨n¼µ×µ];,"‚I=Ä#O?Í'Öýóš£ê*Ó É÷ºµjÔàië|®ÌôtfLšÄ²_¥MïÞ´éÕ+×{$„GÑUY«“î¾;Ï—‡…]ÿ1Õ�ÕT"âÖ®¥gçÎ >œ@ëvV6£'O&5%…ËÉÉ\¹x‘àJ•ì­Àz£3¦Í›Gçž=ùý·ß8{ö,µj׿¦~ýñÀó°r’•{诳~dzgÛ6‚+T nÓ¦úo�‹á±Ý:w&úÒ%ûß^^^„…‡Ó²ukZYWE·±õ륭mëÖÔÕYÑøîI“HJLÄ’•¥ÛÚ×Ú""#™t÷ÝDÖ­‹Éd¢NÓ¦<6nåËlý©ÅýÇjïQuxŸL&õéCº«-3T¿òåññ÷gì°aD5hàXP4™6s&u–-£A£F¹òÕ&ÑÑ�‘‘«µß?(ˆû‡d“í½­R…‰wÝE=§ë´ëÝ›çœcÇŽq(>Þ¡·Çþ¾é§Jˆ¡—�8tˆ—_}•fuêðÔË/;ì+­•ç\y«·^}•C l׎%_}EëÎ�iî´Â­s>bû»nóæÔ®X‘3§Oë†mÎÎι§œâá*m&“‰žÝºñüÁcYYœKH`}|<Ó}4w§AiS€Í›Û¶T-Î?ΜY³˜9s&+;u²�lÌkDŽA¹>¼·c¿~ܳiû-�ºw×ÍÛ*á:£VºtïÎË—³/&†À  ö:Ä´3ˆÝ´ÉáýpΧìSëúöåÉ9sr½ÏÎçÙ~¿&N›FüîÝ,xýu^ç{<ò\@§¢:jøpÆN�šïuŸxàn¾ýv®¤¤ðÊ|ýóÏ´jÕŠ&íÛë¾Gîä1C-f3sgÎäèÉ“,zóM‡Å“œ™4…&½Õ�7òÖûï3rÀ&¾ô^¼²x1Í—,á.§Šœ«ÂN�:uxùrv¬_OÇ[nqxÍú•+¹ÿ±Çxhøp}åÀ± §—ÉÔmÚ”îíÚCd­Zl;tˆÉ�?žû†ÖôVêõ¨‚fÎ�U÷Áƒ‰œ;—#ÿírhƒ^�ª­0U»qc&ŽÇôW_%DQŽÙþßÕ°f‡ahË—³uõj“’è}ë­E“)gŽ„v…<£ÑhÏóë¹ÖÎ}è{ÇŒŒ‰áý/¾ u­Z óaÏttŽdøä²g àÉÙ³Ù?b/¾ô7nLxµjöV4W7¶gÜî¢,ÓKëÔ¯�t¶�qÅU!jØÄ‰ä qÝdë– 6F“~!J«û­·Òݺ?hžqÊ£ec2™xö­·ò'�BÔ£NñÏ‹Ñ:,M/œÑ:[²Ø4¯[—Í7âëçGë¦M©×¼9ñ›7缟¶éš÷H{�ü¦98—OëVeò#�ðð´i|aÍ{óµ¢­¨òº¾��T­[€©­Z‘zù2¯.ZDåªUéiÝ%Cw 07T^ÝÖ dûl�æÍcåï¿3}òdÝÅ“œÎÛ#-%…—_|‘:U«2eölL&LŸÎ-:ðÖ’%Ú¾Ýá|½#“ÉDß!C¨Á+sçræØ1ûóçXúñÇøúrów؟כçäüèÓ§›wì`ÝÏ?Ó¾qc:¸H§s‹‘ý:“¨�F#?ú)Ç.\ níÚJ›mH–IóÜ]'2¤{w¾±¿(ÐbJš¿{Ý|3§“’X¾t)];t ,""×Ð[íçf{Þ`®qùÜ9ÝGÖµkö×9¿�>÷Õ+Vdí¾}ºï¹ýú:“Æm�«ëš33ÞCík#jÕâчâЩS,~í5ÝV5!nߦ ¿mÛÆ§o¾éð|ò™3|ñÍ7˜U•ݺå[†´=štè@·V­Ø²y3[¶l¡w÷îöÑM›¢S¶3™L?z£¢PµF Ýrm®pœr+_¡Sžx‚ƒÇ�³aóæ‚-¦¤éÄñöö¦K—.l�‹#fófºtéâpŽQs]-WåFÝz Ž‹¯Þ4|8# àï¿&-#C!Pƒ!WZL&S®iù}Ï´Ÿ§——�ÍœIµðp^ã .'&æœ[Ö{Tµµþ´”ÞÿäBüýùá§ŸøÁ:ÁWëæ¾}¹çñÇ×­òªªòÚŒü}ò$½÷¡Ö½ïL&ÓgÏæî#˜ó |ôõ×øøûÛ_o£m1ªT½:3ž}–§ž}–[¤M³f˜ þŒ�Ç<ÿä“4ÕL>×ÎÇqÕ¢1päH½óßüßÿñèƒâ¥7ÿÖi ½6ƒÁ@Zv6� Š‚ªª\IMe÷ñãôkÛ–»|Ðá|Wi³ Ãpîi|bæL¶Ýq—ÏŸ×=ß9NÚÖ±z͛ӵU+~Þ¼™w¬-jÚóL&ªµGU'Å``ÏÉ“´uÑBÿôäÉ<ðÔS9¯sz?«VeÊc�ñÀã�çÙò¤»è‡ÁÀ;wº¼î/½Ä�±c]¶nÞ:f ~ÿ�e?ýDÏ›n¢~ƒºáánŠ¢àB­N�Xõî»…n5�´:Ԟǵ>œ�ß}GVzz¡ãR±n]"6 qŸ>��åÀ‚…Ç/8˜ÖÖUË}Ë—ÏIÛâÅEJ[³[oµ§­Å�!lüþû"§­ºu/ð†=zp,>žƒ :¿à`Z š“¶À@êuïÎO¶ýV Á`4Ý¿¿=m�úô!aûvþ¶.P÷_fòñ¡Í�wzÌÐ4!ÀqúØšåËùðÛoéÖ¸1q[··uk®óGŒC¤5?t^×NVz:/=÷^F#ϼôÞÖ©hý†gÜ–-¼÷õ×´jÛ–�Ö­] E¸gòdâããyí½÷Øwð M›6åÄñãlܼ™ä´4f͘��µÑr—!õä{õîÍ;‹sñòe&M™’ÿ:NÃYEáø©SÌ}úi g€³§O³:&†;z÷¦i§N‹¬¹J›¢ó\ç[naܰa¼¹l•ÂÃ]ÎQuµ@�^½x{éR‚|}yí­·Î1:½Æ¦­ àÐ!{š´T‹…ñ�=fÿ�Ë—�ÏšEÜ®]ì:vLŽª­lÔßlûöíº×5�½ðB®r¹M•š5yxüx&=÷ïÌ�ËÌ <&ußÐ_Í—ÕÛLJ»n½sçW®ZÕ¡‡ÌyHÀÁ¸8xáé§éз¯Ã룚7göŒÄmÙBüÚµtsêÚ¶UH´_ä>·ßNýèh¾ÿòKŽ;FFF£ï¸ƒÁÆѸ];Çô8uÿëݬ~L?ž¿æ¶Q£tϱUÞôÂiШZWÕ„œ/xpHGFrÓðá¹æÒj»íµi«Y§ß}7•ªUs¿vãÆÌzöYâcc‰¨Uëúzï÷M=zPEÆð#¨S«–}a߀€œyN b4±8 �6�Ü6t(ít6E¶ihm…}Ï=˜�æqÜ2b¸¨L6jÕŠ÷æÌ¡uçιŽ�9’7ßìòº­¬¯™0~¼}ÛgO½ôÝÖ®ÅÏ××>”Æå�í!7¼(»ÂjÖ$¬fÍŽO@Mò¸w J1¨£³ÒdQ„EFù¯Ã)çïÃÒV»m[pZT¤(BkÔ Ôi•ù"ÅIQ¨Ùª8 Bü ÖQaà4AUén]lmïîݺ/½–šz½gÍÅ\ùÏ.$3#ƒéOš?Ÿõ6ðé²eøx{Ó¸AæÜ{/í�ÊÍù ý2z4kù…° r•»m\ �¨Y© çÏÛß#///BØñè£ ¿ÿ~{…®/6ª—¶*¡¡˜tʈ�Μɩ„Ê9�¯-¯ÙÒP¾<=š5#к�gëž=Ü¥ 僂¨aíŒ ¤St4å|}í=”ÎïSãÈHR22t?wEUɼv ÿ€Ú7jDpùòå𰈦N™Â‡K–ä:Z¾«ûš ÐP÷�Ãs®ÊÇ6å+TàÑçŸçQ¬ (åQÑ›+ï,$<œÏ~û-Ï´9Œ8tŠÓë_}•çkµô†5ÛX½º@éY±aƒîóýGŒ ¿¦SJë¡Y³tŸ¯X£+Ö¯Ï÷š [·æëuë\å£�ìÿzïÞ|Ã+ n«¨^HH¸|ñäÉʶí= #þÇ ¯]€€ðpnÜHõÆ� Nò™3XÌ9ý¸a5k²óÛo©Uè Gvf&gŽ¡N÷î¤]ºÄ…„—{°æ%~Õ*ªX[nÂÂØ·nµ4[ TÊùó¨Ö•C""ؾ|9U£¢ ½:mvV {öPÃ:DöZj*ŽÇ/(¨ÐqŠÿùgªXÉ �ŒdÇŠT¬Q#Ï•˜ÿ TU%öÛoiR€`„(IŠíá��(çŽaÏÚµº[,ˆÇb±àH‡;ïtwT„(øpâõÚ´)Ò믦¤ØGÅe¥§»ììÈOÒ©SøYW`7zy‘uí¾:[3BÞ‹XªªŠÙ:W> 4”ËÿüSä8]½tɾ—¶Ål.r8—ÏŸ·—=�åÊ‘qå þN«Í„ªªö²¿_PÉGŽ=m—/aÛ¦°\92ÓÒŠT>öD¶µÜÍm%„¤óç?ßòóϳôöIÍOX­Zö9ôèÁÉ]»HpjU*ŸÀ@û<'Ÿ€ê÷êŦ•+QUµPá(­n¿Ý^ l{×]ìÚ¸‘쌌BÇ)´fM*GEРgONíÞÍŸEH›·¿¿}ž“O@ ûõ#æ‡ Ÿ6E¡Õ°aö±¶#F°;&¦Hs¸*T¯Në| ßÀ@÷ïOüÚµ…Çã( nºÉ¾h‰"{~û�ÆÒ¸SlNnßÎéìs‚…ÅCQBkÔ`÷ž=|7o^¡Íf3!5jØ+sÕZ´àë9sìF¶Ùl/û5ìÝ›ŸÞ~»H•0sv6Q]»¢( ÁUªpj÷î"§-("Â^ ¯ÍŠ9s(JÙßb±ÐbÈE¡Q¯^ü¼xqÑÒ–•E�Î�Q… J•8µsg‘Òf±XŠˆÀÛÇ€F½{óóâÅ¥bqMsv6Õš5óˆFn·UT�Fcf�¨Pá_…£( 5š7¿!q ©Z•�ªUÿu8Þ¾¾ÔïÖí_‡£( ՋЛª'$"‚�ˆˆŽW¹rDuízbA•*9ì+„(;Œ^^EnÅù çªfX!DñjÚ¿ÿ '¢Q#"œæ£…oùò´½A£*¢oºé†„s£ÒæxÃÒÖø¥Í·|yÚ ~CÂ×I)A!J±<ùr£¼æò‹Ïd4¢¨ªG~öB!DA¸¯”`ÝÇÒS~D³ÒÓ‰ùâ Ìæ¼ÖE¥( ­¤|ŊÂHEµx�FT™c$DiåÉëd¥§³÷·ß¸–šêJµ[µ²OÕ++Üñ-—R‚Õž5kˆhÝš€°0wG¥T²˜Íìüåºb¼ÈÝñBœjÎû¸TT…‰Ç�ùËo(iyOm`¹òeJŠ|¥ŒGÌÅ*¿.sÏ«"„n$C…£äÓ|(�o¥‘TTK?©¨ !D!å[Q•"‘B”$©¨–ARQB!œ¨æ|¶§1HŸB” ©¨–ARQ-ý¤GU! I†þ !„G‘Šj$ªBx¶+À9wG¢ÌQAµPIqÕœ«€bàœj)ÑX‰â•îî!\ʧùPê4¥‘|¨¥Ÿô¨ ñ¦ªêB`¡»ãQ L¬˜ x¹:ÞÿlxõÃÏg•`”„¢¬’Õ2H†þ !„ú¤_!<ƒTTË ©¨–~Ò£*„E“_ÁHfª !DÉ�Šj$U!„B_~=ªRQBˆ’!Õ2H*ª¥Ÿô¨ !DÑÈÐ_!„ð ’—ARQB!ôÉÐ_!„ð Ò£ZIEµô“U!„(ú+„žA*ªe�TT…B}2ÔL!<ƒTTË ©¨–~Ò£*„E#C…Â3HEµ ’ŠªB¡O†þ !„g�.e�TTK?éQBˆ¢‘‚‘BxéQ-ƒ¤¢*„Bè“¡¿BᤢZIEµô“U!„(éQBÏ Õ2H*ªB!„>éQBÏ Õ2H*ª¥Ÿô¨ !DÑÈbJBád„K$U!„BŸŒ„Â3H�j$ÕÒOzT…¢hdè¯Bx©¨–ARQB!ôÉÐ_!„ð RQ-ƒ¤¢ZúI�ªB� ýBÏ #\Ê ©¨ !„ú¤`$„žAË ©¨–~Ò£*„E#C…Â3ÈÐß2H*ªB!„>iÁBÏ Õ2H*ª¥Ÿô¨ !DÑÈÐ_!„ð RQ-ƒLŠ¢Tvw$DññNÂ�×ÇÕS”WªËw 4RUõ¬»ãp£(Šâº;¢l¹ùx˜—ÑÏu[^ê!s¨RQòOñŸ‘¨ªj~£þ“E©„4¼—j^¿dè›Ç ™ø*å$?.mðº-.»;"¢x%'žósuÜüTõ+æ¹U®–dœDIØQ^U3}Ý‹EQ”iP~&d¸;.¢ìhõ¡Ù¯Ê‹—«ã;&¯þó­!«$ã$DÑœ÷ƒì¦ªªtwLŠƒ¢ø¦BS)Ë”bJë4“wܾ ®Ž«»ý²3›E'•dœDqÛh‚*i[ÑÝQÅ$ó1àÍ<Ž?“J,>¢„D^tw n¼é>0ÍÇݱe‡%sðmg,òƒÛJ*:Bü �’ျ#QŒÂÓ¥,[Ê¥ïšäqB]“|J›údŽji§æ3FÉo «B”Q–¼"c©E)„ž';Ÿ)¨¦ü¦°Šÿ"©¨ !„:,ùŒ¤¢*„%D*ªe’TTK;éQBˆ"QÍy/ê+U!„(!RQ-“¤¢*„Bèɯ¢*#!„(ùäÇRQ-�¤¢ZÚI�ªB‰%¿ŠªÁRB1Bˆ2NzTË$©¨ !„zòkÁ—¡¿BQ2¤¢Z&IEµ´“U!„(’ü樤`$„%BÍoq;É�K%©¨–vRQBˆ"‘¡¿Bá!¤GµL’ŠªB¡G†þ !„g�Å”Ê$©¨–vÒ£*„E"C…ÂCH�j™$U!„B‡%¿9QÒ£*„%C*ªe’TTK;éQBˆ¢±äý)U!„(!CÞeZƒEÊ´¥�TT…BÒ£*„DzUËœ|>q�¼cŠ!*¢8X‚SPc:^BÛ¥*¨]7@‹%1Q4;›Ãœip%<Lrw,Ä rÎ?�ôý�PUrþ«y¤µß_ÞéîhŠ%1&-pw,DIxðè¶Þݱ…”µ¡kÎÿXó`œŸŽroEÁìo³gèÔÂWT;ÆÀð¯ ý2áªõ!J‰à©¨z2ÿ4ÉK‘TëC” ‘RQ-+ÚÅJ^ý$‚•뻸¢*C…B!„Bx©¨ !„B!„ð(RQB!„BáQ¤¢*„B!„£HEU!„B!„G‘ŠªB!„B�"U!„B!„E*ªB!„B!<ŠTT…B!„Bx©¨ !„B!„ð(RQB!„BáQL! 0;=ç�4å!DAe§ç|Ü!„(cJiþ[:*ªéÀñ"¼Nêߨ¨ˆÿ¨û€Oœžûè놸á)ÀÙ"¼Î¨yc£"þ£Ú;�ž;TvC\„ø/¹DνRXå€Z78.â¿©°Ýé¹€7Äå*Õ�ä|@E¡ÞȈx �À^§çnj¸!.BÏõ0¡¯kFîÊIi³’Ü…ÈQ€¿â"„(}V÷áuÑÀžOópÚ鹑@€â"J\騨 ×¾ÞvznRQBˆ‚ú°Éé¹�HEU!ŠÛ<`ƒÓs· Õ2Bfà !„B!„ð(¥»Gµ yWÅ•’ŠˆBüy�ò9Gæù !Ä�W�ü·nIDD÷)ÝÕ?� ž«’3™]ËÄõ¡YÖðŽYÏTtÖQræ œ·þNÎ<‚‚d()N€òš¿Ï“3ï4ƒœŠx}r23WádèKÓ¹Ž¿‹pŠ"ØFΜ‚  !9é.Àk ’þ?Éù<¢�ü[œ ÄGÈYÜ£»SØBGnþi6pÅé¹r€¯õÿSɹOZŸ¿Ëú_g`pH´žS hNþ C˜­×ÑòÂq˜îqr†òú‘“�Ö!wÃ¥6œl�ë\&÷ÐßòܸqJ§�À9À4&§Ðê—Ïë ’þcä¤?€œ|T/ý®$±äÌÙ�$'õ.àk…W‰Ÿÿzs=ϸBÎZ[þ{'ú«ÂZ€ýÀ!rîwok\Z�þk!'oÔrÎÈ)Çúq½l\”ü×¹¼x£óß�ä俊5ž7*ÿ=NNþëOáóß ÀÊZþ[ã¨j�_Wñ´›QAç‘Rˆ0þÑy}Kë±¥¨Tt:¶Æéõ™¨¼‰J q•j¨¼†Jº‹8d¹x�ŠJ*�uŽ×µsŽ‹«8¸z|Vèw=÷¿Õ¨tAEqq�(TVåñút�×DZ�Å¢ÒÈE˜Ûò‰×T†£bpz­*ÏX߯Ñ:aÿzÞ“ýoõM¼Wk\PU•Òò¦Á+ϧÜõ¨yÌÝß�¢ÿ{×÷_Aÿý¢ÆT̨ÌB%ÀéØY§×'£ò4*!:áØѨ,Ë#Ût^s‹õØ7ää©ÎÇ;£’àN\qpõØ[È÷ËùŸ•�ÐÏë!'ë€ÊŽ<ˆÕyÝ ë±å¨TÕ9Þ•ùÄí$*�t^ŠÊ{Ösšë?ó/ß“’üw<ÒýyH±=& Ü�—ßoDõÄB½ßãîo›ã¿%ä¾wª2Œ_uÂMNþ;›Üùïi§×§�S&ª ŽíÑ•OóˆÃN�×Üd=ö*ÕuŽwBå¸S8Û󈃫ǮB¾_Îÿ,ä”÷£]„o@¥½5n®þÅë¼®¿õØ×èÿþt!÷ï�ó¿Èù�ÒËßµžÓRçø?ÿò=)®ëºð^�J”9ªù™ÜÃõÞQ=ç€nÀdàDç�¦�ÉY2º ¾º’ÓÃàìÐØ]ˆðn4 ðÐ�œÞÕÅy‡�þÀÝänqÊËWä´íwfôßÈi¹ko Ãy©«ÀKäôŽg">BˆÂÌ"wk¿Ön %ð29£2\ÙKΊ�CáÿÙ»ï8§ªô�㟙�¡÷RTEi�b{EÔÁŠuW±­û[u]»®em»V,ذwÅ‚‚" e)Jé&¿?ž sçæÜäNI™Ì÷�W^07'7'™É¹ç9•�%ÈÃÍÀIX9ì÷°/±£jRi-p40œàò¬øØ¸†à²Ö/Üœ‚ûÚóöþý=!Q ÷/(°8¸,d^D$µÎþNüòw VþÞü'Ý/ØŠç'`u¨°nNÄzsý¾ö!~¹Ÿlë°ºà0bwʈ*ÀÊÂý€«ˆ­S‰`ןÁ¸¯?Ÿÿúó öù|áxl¶Zÿ¥!óRe÷Ðß1 9sÙëv2¸:ÁklÂVü®ùú«�D‡žÅ³8™ø’­Àÿa[(¤Ã5À¿Çë`ÞçRü =röŸç^€ Œ÷þ·`…ð+ŽÇ.$¸Ð‰O¶DJgðd‚4‡­â<þ66|,žXCWIö|Šmë�ÈûÀ; Ò,Ã&ÿQ‚<”—lž+��±ë˜·‚· ¸h \âüã�7¤Y Ü \ç;¾k\\’àùw£rT¤<­'qù{°SœÇÇ‘¸ü]„•¿%é@y Xã„Ï[ IDAT_&ñ°Õ�°}éãY܉Ê©V€Õ3ßr<æ*··cŸûÅ!Î_–ëÏ6¬a6Ñç÷‘µåo–¾­B‰.à·?P�¶îäa=z»c7o«Æ½Ä©¹ÀµXëI.@þû㎚„]دM�ÇèsöÎÿ>ô¥‹�]o\˜ß» �¿Ll+ø¹Ø¼Q¯}ä#È$lë¯:ÀcØû+üNñåãà4¬':žèÜ„X«`=,ÀýØ—îUì÷ÕÀsìk¬’ìwzá¹jïa3בÊnÖÃÏ8âªÑJRmìû¾+}äIs±Aj-¬l9ûn?<ìKó2€“ �ÑGceÑ6¬Räï¹|Œ¢ŠBŠÊÑû°†K¯ë‰]¡y‚|y†ØŠÌ.ÀS@ŸÂŸ'a=Þ|\�õÄ«¨BÑû?køÜ‚}¶Ó|é#6P}[wÁ+§ðµ�+¨üɆòw%EëÃ)mù;×q,Qù«@µ’išàqÿfïÿ�Þõä:‡Wйj‚祂+ﹸ[‰‚$ZÞ»´ï¿ V©õ¶”mÄz_\ÏÍÂ/·HF(ïrÔµ…AiËÑLØ(Ý•÷ª$^Þ+ÑöZ¥-G›9ŽÅk\U9*’Y2¡[-àx¶”¿‰1Rù[& TãI´ä¶«+|ùgÿFˆ�ëá‡É¦Êpl•·x¢-Gõ°/¹w~Xulîmº  šØïÇ»gUæâŸ—±óD$5\å¨k8Ø|Nÿ^€9”~µÇd¹[•1ˆ·‚âzÿ�‰�&’þyÅ`eêbËø•$ÞCDR«4õØ òw)ñV}O‡›pϧ�òF>®¼w"vÝ€tp•¿ €ÍÄÿ«I¼…M¥@µ,öÁ"ï¦ÇK°åºOð¥}›Øùœ5q/ŠTž\ãì¡øb^MIÜ•‹mÛãÝf¶]Ä Ï]‹ +sÍ-/‰Ý\ù¿Ø^U^ïR> ¨ˆHɹæO}Œ5ù/Ô�9Òv£øœ£dp•£S® µ-¼‡±Ö`é-«~f»Ø†ß"l¤È.!_«¤b “Ë=ÇÖÏc{Øz=Bì\/Él:Ž} üJl£þ㎴]ˆ?µ<•¿AósÛÄyÌo¬¬öÖÂæžÆ[÷,0\OâáÕ¥UëUõÆë�1Än[ô(Y[þjÕß²ÈÎt?Û[°ûÃù8Ç‘n(ÁC"Ê‹klüCØN`ÒWe8ÿ¹Ç>r[!m$Öòd^7Œ³ÇîÅö›Z� ×ø–ä|ˆH°=ˆ]0­ÛŸ.ºãVlEr×f𮲵¼¹*=×aeéÇX9vs9Á;ýû ‚}6cû¡¶ÅV=N¦³Ç.ÆöîÞ‚ÊO»ÿªˆd¾ŽÄ6F°ò7º+ÅVàYàFÇóSQþºê±×cûºFËß0«ïq•¿'b;{øŸ`û¡¶)|ídr•¿^ÇÊßMØïæÿ’œ�4R�jYýx�â›Õ/Çz,ë`Ã.\C%šKzîÜ+Ï¡øRÖMˆÝf'¬c±¥¾Ç{Žý À†¯íŽ5‡Ì(¼'ÚF¢<� ÜJñ äv¬’u)ÖаÉñ<I­»±`u³çØ4l›šFX¹áú®vÃÝ UÞº9Ž}Cñ•%Þ/åùÿ<ƒ•‘QS±m"z`-öë ŸMñÏ)Ù®ÄtñÎ�ZƒUdó±Š[ön4/’ýþô¡xû+6j0^ùÛ…Ôª®zìw…÷¨~w�$r)ðöž£¦cåoO¬×ué)Ga¹wm†5XCf%)Õ£ZVͰ¡®®á²kq©�°ÖèTŒëï •ä×x+äü~^*|üGR¤‚5<ˆ{åçŠ Þ]qï&"©±/¨¹�X�»’Ô+GS1þL’7¼l w¯QLÀZÌ_Ç‚×TV’ÀV½w³öŠ*IýHÀ·XÏ®K_¬.ì¼\IŽ“€¯�þ ÒU.ÂZÓíáZ^ò��3HÞŠë»bבKWVï†õ¸ö™.oÀ÷Þ‚á4lm†TTZE¤ü�ˆe¤«\|Oøy eU›ª6Œä•¿»`å籠+ÛceµkŽoy;{ÿAs�OÅm³´üÍŽ¡¿�°qê~% Ì;ÎQ’mVZÏwŸa½‰Ñá´M°Í�$þ;Ï‘‡ e­GGûŽc €Û Iã=�—G�Dàjà2¬²ù-¶8Ht¿ØgÔFçZ‰.Ÿðïÿ"lè™WÐûï€5|�ij°½Àb­P9À5ÄNNïp>‘lt,±‹g”tŸ»Ä~‡]ûG醄ӱ¹—3°•d«a�`ݰïl¼Å“:8ò”þNb—ô*GÚaÃÞÄʶß(¾-Œkö’ª‹Í£¿ø[ùw162§ V†¶À>ç †=ˆ}ÿAæÝÄn÷ãZi¬ÇtFa¾&`Ó]Úbåp´¬|IäUŸ‹H¶;ŠðõŸ û9ÎQ’=â»`ѯXùû+Vþæcåow¬oÏÐöŽ<•·WùŽu HÛ+{ÇV¾ý ëQŒŠ·�tXu°Ñ#7_Pºò·#á¯?w{ýqíJvÝ›Q˜¯hùÛ+£SSþKlùïwUAä@›å0/üš‰ÏŸ §¼�Ä,‰H wƒÃÇ'NGÛ‘ȼ,(¢LNNÎÕpË-Ö’ÁÚÍ…9;§;"RóÚÚw8+uZ ÓzG"‘ééÎI2ää´YóÃ_óž<†�N^†D$اÁÁŸ„HØq¹†þŠˆˆˆˆˆHFQ *""""""E�ªˆˆˆˆˆˆdª""""""’Q¨ŠˆˆˆˆˆHFQ *""""""E�ªˆˆˆˆˆˆdª""""""’Q¨ŠˆˆˆˆˆHFQ *""""""E�ªˆˆˆˆˆˆdª""""""’Q¨ŠˆˆˆˆˆHFQ *""""""¥J‰Ÿ1µ|zP²"" ýÔ%Ý9�x6UWù(RQ-nžîHªLß]eµHºLê:i´Yó%1;"’rmWD"ó§;å%''çj¸å¸:ÝY©€:­„i½#‘Èôtç$rrÚ,ƒùYsÍ€ŽËKÞ£*JÎ.ÿƒ¶ó 'â¾Ïè@dÎÎéΦˆHæÉÛN­Þ_;ËΜœ‘íy¬ÿD½2""É”Ón.9;Ï ¬ËFfµ'2{×tgS’@�j–Ë9çr¯¾5ðñ‚kn!r«z©DDürk­§íøc/XS—é-æ¥0G""•Oî°Ñä]}àãÛo¸Žíq—ŠK‹)e»HNüÇs"©É‡ˆHE£òSD$ýTWZ TEDDDDD$£(PÍvj…)•Ÿ""é§²¸ÒR šíôå)¥å'*?ED’NuÙJK�j¶Ó—[D¤tT~Šˆ¤ŸÊâJK�ªˆˆˆˆˆˆdªÙN­P""¥£òSD$ýTWZ T³�¾Ü""¥IP~æ¨üI>Õe+-ª""""""’Q¨f;µB‰ˆ”ŽÊO‘ôSY\i)PÍvúr‹ˆ”N¢â1Ñî5""RvªËVZ T³�¾Ü""¥£òSD$ýTWZ TEDDDDD$£(PÍvj…)•Ÿ""é§²¸ÒR šíôå)•Ÿ""é§²¸ÒR *""""""E�j¶S+”ˆH©D”Ÿ9*?ED’OuÙJK�j¶Ó—[D¤tT~Šˆ¤ŸÊâJK�j¶Ó—[D¤tT~Šˆ¤ŸÊâJK�ªˆˆˆˆˆˆdªÙN­P""¥£òSD$ýTWZ T³�¾Ü""""RQ©.[i)P‘Œ¢@5Û©JD¤ôT†Šˆ¤—ÊáJK�j¶Ó—[D¤ôT†Šˆ¤—ÊáJK�j¶Ó—[D¤ôT†Šˆ¤—ÊáJK�ªˆˆˆˆˆˆdªÙN­P""¥IP†æ¨ I.Õe+-ªÙN_n‘ÒS*"’Vj0¬¼¨ŠˆˆˆˆˆHFQ šíÔ "Rz*CEDÒKåp¥¥@5ÛéË-"Rz*CEDÒKåp¥¥@5ÛéË-"’< ŠXI2Õe³–U‘ ªÿˆˆ¤W¢NÉZ T³�zTEDJOe¨ˆHz©®´¨f;}¹EDJMÛ"ˆˆ¤™ê²•–UÉ( T³�Z¡DDJOe¨ˆHz©®´¨f;}¹EDJOe¨ˆHz©®´¨Vvúr‹ˆˆˆˆH†Q ší´¤·ˆH$*CÕØ'"’TêQ­´¨f;}¹EDJOe¨ˆHz©®´¨f;}¹EDJOe¨ˆHz©®´ª¤;’\‘…-‰|r°}É]÷©�Ò�E‘ŒµþË^äÖÚSvF¢ÿ߮˨ˆHR-nNAœºldÊ^éΡ$‰®°Y.2öX¶�=6ÝÙ©�~;éùtgAD¤R+8ãOw6$ ª�¦ÂЧ’˜Ihâ>ðÒàtç"³]ð ´™Ÿî\ˆˆ¤Î˜Óà§.éÎEæë0F<žî\ˆTn%¨Ë†T;Ì€«n+m–D¤<Œ¦@5‘¡OAÏoÒ� ‘Ô™ÔM�j»üOuY‘t+A]V‹)‰ˆˆˆˆˆHFQ *""""""E�ªˆˆˆˆˆˆdª""""""’Q¨ŠˆˆˆˆˆHFQ *""""""E�ªˆˆˆˆˆˆdª""""""’Q¨ŠˆˆˆˆˆHFQ *""""""E�ªˆˆˆˆˆˆdª""""""’Q¨ŠˆˆˆˆˆHFQ *""""""E�ªˆˆˆˆˆˆdª""""""’Q¨ŠˆˆˆˆˆHFQ *""""""E�ªˆˆˆˆˆˆdª""""""’Qª¤;RÎ~ò{h•†¼ˆˆd£ÉÀy¾c€›Ò�‘lsðƒïØ‹@›4äE2Fùª·÷úŽõ^ H? 8Xå;Þ ´(×Üe§_€o|Ç6—ò\S€C¤©‚Á;í€AÀ~¥|=)�–@�ïØ³XðäòWàqÇñ¿W•c¾²ÕbËÙ²T ÎÞH�¦.VÆî ì j—á5E$œ;€»|ÇöÞ H?8øÃw¼V—UÇAbS‰-c7–ò\Ó�ƒ¤Év¢¨Œ=Ø¿”¯'ISþ�ê:`‰ïØŠ€´S°JÕRßñ6À (HM‡mÄþþ\ßþÿ6à8¬‘b�$åKDŠ[Bl Ô@u9ð/ÇñQ(HM—U$.k—3=?ß\ \‚ÆC‰$“«.ëB£¦ý�žã;Ï£ 5ÂÖeR¼.{ p3Ö0(!}sT'ýˆ RÛŸ»¤:CR&oa¬ˆdŽKp©Wc½Rq,îLwFD°—ƒ‰ RÛŸ»¥8?R6ob¿Ïùi·ì�ž@õ¬õi¹ïø.X�Ú.Õ’„šÍ ïÕÒ,N¶§*S"(‚Íùù·ã±¿a# $³Ô ¨œm'ÝÝÀë)É‘ˆIÔá²kª3$ yë²ÕÒ¬NÁze%íR¨~‹ ÷õ¡h�}±ÃÎù‰`LÓç*«ØXù0ü6ÿ£ô�Úv¬Un:°¡”çH–Ÿ±¼-Ææ |‡{^êÀ¤ž{;ðáÞ÷`naÚåØß�ˆW€-²ö�ã±ë±!¤amƾŸ3)ß ÷V`6·«¤sêR¶rVVgZ«ù)•³Ë€µXPšçHû@)ο+;½ïHáëOæQúyb"Ùj"å×á²ø•ò¯ËþAéê²[ÈÞºì�•±°ßcOGº À÷%6Ëñ¼‘…�͆aßÿV•ûWcAo"3 ÏÕ¾ðµwÚb õþ�Ì«TÕþŒ ßöó—³oûÙEËÓ±Xe¬.Vv¶%¶bÁÊô#�@S Vá®…]¯äõoŽ×wõæƒõôûÓ>ƒÕ öõ?)àQGùÒ÷D�µ$×·Ø¢“eépy[¼'Z—Ý+ÓZ±ïC<ÿ&ö;4¶ð±ÿxη'V?�ú‹ãyS »«yë²½±à.‘-Øb}ý°rÆ[—m�-šúuˆó¤R°76u-ßñ¸¿Œ=‚ØÏnöwpVn¶ÁÊM×t›غ�(ªËvÂÊÚ†XY6wÐ:›Ø²ñbã)°ß—¿.{8V.Þæx9Îõº#ýÃqÒ'G›å‰$¼ÿZ„0·¿ßý"|F„ÚŽÇö ¢ç]A„#ÏwÝ�$Âü€óŒr¤Š§8ŽïéyÞ‘ŽÇ¿ ©qòQ�oÆyOSˆ°{ˆ÷“K„K‰°.à<½Ï™â3uÝ~ ÈÃâ€ô»8Ò^êKÓ" ;9Žßì{î#D¨â3‚‡a¹#�×;ÒžéK³ž|ir‰ðQáãß9ÎqjœÏÑÿ÷’C„Y ?ýÄ·'‡%þ®‰@›å‘H„l¹WÃ-áÞû„žeÿœ+Â-—ؿɱDâ8n yÞ׈P/àÞ{]"s¤ò3uÝNvœÏ_.Eo/ä×{ííxüJ"ü#à¹ÞßÛ"ôñù@„šØ5Ó[Nl™žO„ɾtO;Îyö7! Çã“>×ßKY~'ùvês ÊÆ=þvOwYž¼kDëe¡®‡� ÷yþ�Ø¿­^Dø+ûü�u ‚çýƒG;žïºN„¹ç¹Æ‘þ1ÜåÏóŽs<þ)N�“�|ìºt›F„N!ÞO.."ÂÚ€óäxÎôŸ©ëös@~HßÑ‘öB_šÖŽ43‰ÐÆqü¾ç>N„!>#°kÞRGor¤âK³‹«¼irˆð^áã“ççstý½”öwâ½…®ËvX–šÕYXKÄ:ßñ=���æ ž¿ë•òõÞÁZu½G݃­2\RÂVt ²ë t —›…µrMñ:XËøŸJšÁXé8Ö$Äóc=¥ñ<ˆõÜl ™—ñØß‰¿Wäÿˆ]¦üIŠo qÖãâõ7¬u¬%«—ïñ×p¯h½xßwì@4_E’ï2l‹¿; ·ºï«À‰Àêi×`=”þ-‚lÀzÇ\eF<“±Ñ-þ!v^ßO‰{Ð×`C㵪{m†ûy7ÆP|”ÍàŒÂÁzÓ/Lð¸Ôñ¼=°E`Ã*K~?b¦W.Vò:ç`_Î7±¡2^÷»Ø÷ófà)G^'¶@?Ë‘N¤¼Ír»[)6‘¥ØÐÚˆçXp>6Wg>Ö0çß6ì:,ÀKd%6'컾6ô7ÑUh)VQj‰]ìÏÄ]>ßé8ö!p»ïX-¬ ùû¼î ø¢¬l(í^ÔåmÖhç·;Á ÛEýHÑï³vm󗃣°ÏÂ+ûœǶjpULFb×@¯°!ã^?aei´ú+ùOR|ÚÏ�XeÊëYÜ•< ºv=I†Å¸;\>!ÜvŠÿ‡M1òj�•«s±ïë¾ÇÇ”0¼uÙ&Ø÷½^ˆçE벇`uY×ú#s°†L¿!Ä6"„[¿cC¡ý{“ާtu²<ƒ;Pó—C.ÑÏ<«Çv x]v6±�s`eêÍX{&öù{ý„Å>^¹…yõÇMçc›ãˆ]» pƒï˜¿1p+Vû�%ö:˜ž†À ýõßÛá¢éº-ņÐzŸß˜ iúÒåá_×Ð_°nÿ=é¶áÏÏ®¡¿9Ø�,ïss¤»Ñ—‡ñŽ4ûa«/Ýjl¸œ7]SGºT ý½æ÷nÆ ä8ÒU#v˜°kè/DF„5žtP4×Ðßhyö¶/í÷…ÿþF„*Žç<éK¿Š]éüÓ<"DØN„¾t¹Dø“ãù—|6�:Òú‡»†°ý­Ÿ¶Ý4ô7ùCý÷Ö¸‡hºn+ˆ�ÆÔ�¢²Ï{;Ê—.‡Ø!ô®ò"´§èûÁ¾�Þº¬k('Dã{Ž?~&ÞÛ‡Ž4û; c-±ÃcSü:!5Co¡x]v0îºl>±õ@×Ð_°á·«=éVbC‚#D8Û‘~o_úî2¯–9ÞÛûÄ^ƒ¡¹ïXCÜÓ ·9ÞKGºc|ijàÜW&ÈÞ‰“7×|¯/=�#ë IDAT¯ ¶âw^ÂO=üM�jâ»Õ¢ûžØüÃ0·=ÏšÏãŸ[ßÄ÷xP zz‚<ª_9Òúç”CQå ‚Uò|�· xÝ?ç:Η&�jØ{[bã‚Õñqòàªu Hû¼#íÎi¡Y‚÷àªÐFoˆÐÈ—þ_]#‡Ò_÷²á¦@5õ�jî:�ëæúþÕ žu¤}ؗƨV¡x躹Õ#é\u4—:ÒŒxÝ iò¥9È‘¦¼Õ°÷{çtª}äÃUÿëHW€{žì3ç½6Ä{p½Nôv³#ý'žÇWaÁº÷ñ ÞkIn%T«�lë„è ñ¸¶:y÷"×J®þ±Ú.'Qº½[9޹ö¾[æûÙµ‚Ú ÄQ÷ ‹S±a_™æ,ŠVèLäŠ8�-!ö3Nâ—‹ 7›í;>›;àwð9Á«Ï�ÂæS9[9u‹çØ#ØÊx`óVýs’5gJÒålžõGÄŸf±•ØáŸ¹Ø*„.þ!ŸË°ùÚ�ä'Þ÷>H b燃•µþyå˰¡t`C§üÛ+¬ÄVC #Ìœ«th„MI4? 3E«-»üì8æ*g!vž?ØpÀ5ÄÅn<]øÚÇóêaã1°ýdÏÆV¨ŒúÛÂ#: Ù?ì÷`l(¹HªD°a�lÕ×x\õ¾·p—G®9©aê²'PTþ•„«.ë*ËÃÔeoÂv×ð[ì86+£2Í0Üså]â]ÓVà®Ãì8–ƒM{øÕw|6¼ÚïlXuÐz މ“·s€P| ˜G(*ÿ_§x=ÒV—MM Ú»˜yç©F°qÕl‹’ ®}¥~'ñBËŽ—kÑ“xŸñƒ¸[ùç`+Fç¹`-mÞ@u¶XÓIÄ®œ©E”$•þ…ý-úW#Ÿ†]„?ƈ”Ç• QY tJ*ha»DemYßÓvì»�Ê@µÅ‰«CQ9ÛŠ’¿§D×¶’”µÛˆí¡:Xüõ€ÇÅzLãýÛ`ûL¾â9ö¶‰¿Uw¯�HyÚ[|íbëaaƒÑÅ(Õec…yOåí ~áÿó°Ž´¶¤®.»«úOwÙïšùîÕìçc‹„&*/¦x º [¬étbw®HcC`ê†þˆ­ôåߦ&:d¢÷Ð ×òÐWb-aÔ ‘&/q’Ð\|~®÷ô,á[Ú†ÏN¹J¸šÃŠ÷™»>Ÿ�Xë”k¸Û<DZ ÏèMlÔ #°—ÖqÒì‹õOð{ë1òû­Š}áER%»Ð仪âtІûW¨¬OloYMl¸eØò1ѰËò,g!qYë*Gz»Âw÷{¨Mñº@Âÿ�&Ajç¨ö¥è îm�Š7tÂÕÕü+á¾qK·¾Øræ^¿.øÞ@¸«"«�UØüá_$v˜ø:ìoÊÏ5ñw`¸ïXc¬2íaý«ô|JüBÿŠª?`-u^Ç�ž‚X*·è� \Š÷üCQ°ú1ŃÕ\¬ñÅ{ÁÚ€µð†ÒŸ‰åRw,OÞ}•§`#|Â4`n üƒëLãúݾÜGl�ÊËŽ´ûàÿ|æ;Ö„âsÜîÇöÇ=>NþÂ¶ØøÉsìJж9ŠÒÈI¥^À{ØlÿžÓ—bõ ÿöz®ºìtÂÕe7‘9S¼úÛóöႚL¼f”·ÚØÔÂ)¾ã/`=ð^°}~®ºì"ì3öŽ l„uæDWauÙωé]BñëþÏXùíu$ÁSBR 5û¨zõƾ஡a/¯~Äöä½�{ÏŸ¨™Ø\žV„ß`7•N&¶µêŸÄîëõ6¡º_²2•a\ !ýƒâó˶b-îþ ÅNÄnhìjáÏÁ‚ß¿øÒ~‰í ÏIÄöJÍõý¬Ê“¤K.VFžéxìWlðBßñSiÏ&¸Wl+Ö³Õ�ØýÞ2A>p¢ïØzì{4¼u5ÖË× ÷þ×Ùæb{D—`•o‹úDÜ­÷þýËÁaÿé;Ö§ðþ†Ø0µxüC)çú~îŒ�rI¥žX�VßñØŸ‰]Pè@bë ï`=XAfa‹õìDz¦|%r2±QÄÍÄîëõ֫鯣e« E='z~Þ†5løç´6'vá¥,ð6úåÏa£T¼&×&ÈßñÄ®ó2×÷sšçÿ§gÕßý±/ø@bƒŒ‹±_DtèD lqÿj²Ã±!‡bó%Ç&qOÃþ\s3Egì‹ú”çØ:lÑ�ÁØE·¶’í lA“™…驨è.þKñ•âb;ûcC{¿Æ½¨ÖuÄŽë¿�â­F`�ý°JÔG‚o)|l@@þªbCô‚ÚVÄ_mS$Ùr±…lòˆ]ÐfEsV£Ã ÎÆó.†ñ 6¤w(¶Rnáã3°ÊHt“ôL\¹ìûù*Å{U_À.àC°9gë(zO(¾ŽB¶« ü�ØÞŸÿb›Ç÷ÂÊà Ä÷mˆá²û\½C„ë`=û­±¹©ÞÔ•�` ª� ®"xQ-¢$é²ðVõ—aõÐË ®܈•³^çbÓ5beñŠê²ß“ÙuÙ=°ÆPï<Ç Xí$¬NÛ[˜n62":R®SÊr™^—S|JÅb¬Ón,�€»Áî:bG¶Ü„]·½.Áþ>¤x|¶àiP}´ 6íò¯�7#xõÿIO  öý‚¯ò=æ:q>Døç}BìÚŠâ!Š*FQÛ±EPü ¡TFõ°žóŸÓ¼«Ô9—Ø ÁÇÄ®æÛÕs,[€fŠzà °ù¥“ žïz^á9\½3ÃÈþaƒ’ùr)š?ío¹Ÿ‰]Ø>Á*HùØî¾o­]CìH—Š¢=öÝLñÂyXË¿X%g"ÅNÁ†ðù·!ŠŠ–ÏÞ¡{¬Üó÷Ôÿ›¢~�îç{ÿ –ƒ~5°­\«Xæ£u$½öÁ‚ƒCˆmL¹«KD{ºÎ¶tyÀ—î3b‡ÊW÷cÁç—žcØh5ÿ¢g•Q¬¬ìGñ^ñ-Äÿ�� v½‚ϱN¯=�[ ÿ_»ÞíMQƒkkhžDl�~”k«š¨¡¤3RÒ1ô×k_ì ÞÐñ˜èÄÃØj­aöŽ››z8¥[e2jbÄK ?÷ !Á=|Ù¨ð-v!H¤ö÷âoÌXFl ul¡ïç¾±Cuc=ßA-šÍ°¡/.þ¹°"é’ƒ}/\‹ôÌ‚ÕèÈ„Ø-Þ^Â~;“ÙC/�æN„]¬.›ßZ™öä|«ì„™»»?ÖÓÓÍwü_Äα: ^ýéüÛ݆5\¹wÃß±¸,I¥îب,×ÂbW`½ZQ÷c屫ÞëR ëm ³ o:ÔÀÞûe„¯Ë6ÀûÊb¬Ì ³UamìïÅ? j6}Í»òz>V—õ®ÅÓåµkÐs­ V†º¦q@FŒX)ÿ8y±ÁaÛ8é÷ÆþÈ_s<¶›4m‰]ô^ÂZ~Á†¦i� Gê�µ^¸&j$öbÜ%Nþ¢†`Ã<¼\­m‰ÚÑ‘¬à¹¸ëEý𱖅¯Ñë¶ï‰ûb}Ö3í6 ÷kŽ{8kíRž¬UÑ?¿"ÌŠr`šï±yÍã°y¼K°–ŸÆØgÓûý¸Þód¬—ÕkoÜ•Öó°[«èl‚7Ѿ¶ãu`œô"åå:b/<»¤ÍÁú:S4\×ëŠz¦ZbÇOØö"ßb�ìØ|¬h¹Ô[dawÇùr‰-G‚¶™ñjæxÞ®i]erÐjÝ=°E">ÀÊ’°†¨uØ"?Ñ÷Ô ÒÖí¥Ý·¬—×°u/Ãùº›¿xûÚzå`ÃkÏÆ*>_`åÞrì:Ú+7�®¯~[°²Óûú9¸·ê¨�]Ãý+÷Î"¸òÚkpxÕw<*Q’¥ú[O‰·@W¬u-:¶ú�fq.VÞ¾LQ]v„´ÀÊ£ÖØw­?îºìbÃ0åÇ©Ä62¹ö¢ß‰Øò$èú’Ü…-tæ­Ë.Çê²Ñ÷´+Vï…».{&±s2KÛÕw]6Ìu(È_ˆ�®vä\àìôE× �ÄÖe]�“‰]÷¤îé€gžw¹ïø¬Â|¸\<á;Ö÷õ=År Ír˜çj*îø×áµR�%‘ d.ÖóâíuMò–ò= Î|2D¶+"‘yYÓ×�““s5Ür‹µê$0aèùMò3%"©3’âC†w†p§w\XæøÓsð¼kE´¨N+aZïH$2=eyJ¡œœ6Ë`~âkÞáãa\I†ŒˆT¿a[Ùx¿%y‹‚†®Ëv\®"^¤´¼Û*EµÄ½Ê›ˆˆ”ÎDbçX_‚‚T‘²Š`»®xƒÔf„Û23Ò//'�sö9€ù«çóÎÌwJ”7‘Êè¬îgQ5¯j±cѺìšÍkX¾a9S–NaÍæ5¡ÏÙ©I'l{`‰òñ݂hbÂtûµÜ�}ZîÀÒõKyuÚ«¡Îßk§^tmÞ€—§¾Ìò ËK”?‘ÒHk zÿ‘÷“Ÿ—7M„3VÌàå©/óè�2wÕܸéûµëÇ}GÜW¢|\ûѵ¡Õ‡Ž~ˆîÍ-Pݼ}3-ïj*èPU]6#¤5P�Ú¼}3‹×-Þñs•Ü*ÔίMÝjuÉ!‡Ž�:rí×ruß«¹ë«»øûÇgóöÍ Ï»jÓªPéÖmY—0M×f]w©ÕòªqZçÓ¸ÿÛû>7ëí¶üå/й3ìº+4okÖÀ²e0>|ú)|ü1|ó lÙRü¹½{Ã%…•èÑ£aܸįwÒIv¸ùføé§â�Ÿz*¼û¹Û¶ÁâÅðÛo0q"|ñEÉÞ«TjK×/eã¶�;~®Yµ&u«Õ¥Z^5êä×áˆöGpDû#˜ùÇL†¿>œ/û2á9·G¶—ëD÷Å~Òy£ÞÅ–í[žQIäåÁ�!0h�•S»ìU«Z9µt)LžlåÔGY¹åwÛmж­•aC‡†{ͧŸ¶×˜3®¹&öñçž+ ˜ýÖ®µrjþ|xóMX±"ü{M³—?ÿœæ­Z;‰Dظaë×®eÕÊ•Ìøå~ùñG>ï=V†xoýŽ<’ï/Ùõö¥'ŸäÞü#aº‘W]Å�óÎ`íš5Û£[ý×*‡3FŽä¼+®à/C‡ò�®'•Ú–í[X´nÑŽŸýuÙ�:pMßk¸ªÏUÜ=ánþöÑߨ´mSÂó®Þ¼:Tº0uÙ=›ì¹#H¨š[•Ó»œÎÝîNøÜ¬·ë®V—íÚµ¨.»v­]æÏ‡Ï?·ëÄ ±uÙ=à²ËìÿÏ<o½•øõN8N9ÅþûíðÃÅ<Ø®W.۷âEðûïö¼Ï>+Ù{­@2"PýaÑô~,vh]ýêõéµS/Îèz'u:‰ª¹U¹²Ï•ôÜ©'Ÿ˜°âuÖØ³BiH$ZùÛ¼}3óWÏg·†»1¢ûˆÊ¨V©? gži•@¯zõìÞ¾=ôï7Ü`_â»}…a›6E_Ô¯¿¨îµWÑsžx"6PíÒ¥èñD¾úÊ ¦o¿ —^*µ³ÇžÍ›3Þ,v,‡öh²‡îr(#÷IÇFÙ­án|6ü3Nzñ$^›þZÜsÎþc6ïïX.ùkP½Çïn�4S–Na¯¦{ѰFCŽëx/M}©\^£BêÛ{ :tˆ}¬E »wíjèæÍP½zlºÃ³4›6…T†jÕ`Ò$w zÊ)Á�ª×ºuðÐCpíµ°5~O}&hظ1�š6�›fÿƒ`ë–-|ðæ›ÜsýõÌŸ3'0}µjÕžÓ¯vݺ Óäææròˆ;ÎݨiSúqï½ñFÂçÖ¨UkÇóò«U+QÞ$ûL^2™�ôˆ9^¿z}ößiNïr:'ïy2Us«ry¯ËéÙª'‡%ùÈ8·Þ çžkÿ_»Ö:@¾ýÖê²õë¯ËÖ«—ž<Žo׉¨ªU¡eKèÞÝò´ÿþVßÝo?˜5+=yL’ŒT½¾_ø=G�9šoÎù†UjpÎ>çð¯¯ÿÅÌ?f&ýµ�íx,�j4`ô¤ÑL\4‘[¹•¼œ’U¶l㪮¢qÍÆŒè>‚UjpýÁ×sÊË![EË(ÚZ>eé¾]ð-Ïþô,—õºŒ�»¤U�V,X» %ùÈ(8òÈÔç/‰*Ôö4?/ý™ÿ|o‹„äåäqþ¾ç§äu£Ã~—¬_»³ßeñºÅ¼;ë]†t’pA¨¬Ô׳²ò¨QñƒÐ�­ãÝw“Ÿ¯°Ö¬±´¥Kíç^½Ò›É*W¾%ë·®`ðžƒiV«YÒ_³K³.ìÓÂVr=yt±ssrÖmXÒó�‘úô±§O�¤L›fÃk3É×_ÏSïØi2ÕÂùó¹väHî(|¹¹¹üó�¨U»vJ^¿^ƒô/¬Ô½ýÒK¼ôÄäååqÜi§¥$RùDG߀•Í#÷KÍèÀh]vÅÆ¼=ãm–mX¶cѼ?íõ'ªWqLyÈvÑëب•  ¬.;fŒõ\fеk­sáBû¹W¯pÓI*� ¨<úCQ+êAíJú뵬Ӓ�»`ÌÏcØV° (ª6ªÑˆc;Vž¸®]‹þïW_QlÙR4¿µqãô é�¬³bã ^›fsSsÈ)ñ–Y¥­„l�lçÙŸžà§%?íXÑ|x·áIÏCÆiÓÆz"~L¼²{ÆúÞÓÓѾ}úò‘$�ß{/_|ðõ6äOÑaxIvÌ)§ì˜[úƘ1Ìœ:•©“&pâg¤$R9«Ë¶M~]¶Y­f¹›5Ê<÷ós;V¥=Éê²õ«×ç„ÝOHz>2Ž·.[Q¯[·ÕeëׇF�Ò›ŸrVáթ˦²rÓJº5ïF^N^`Úª¹U©^¥zÂ{<úÛñOM~jÇñ7¦¿ÁªMÖýï_e³RXçY]ηºc…Ò¢p{�uë`õêôæE²ŠwÅß}[î˜.7'7T9U%7x¦F~^>C:Û<ú÷g¿_låÉhE¤}ÃöÐæ€²¾­Še­gîŠ\N5o^ôÿßO_>’è?wܱãÿý�:*%¯ FgOŸÎ”Â×ןµFžvíÛ³÷þû§$RùÌX1cÇ–0{5Ý+îȼªye¯ËžÑõŒ×�hG Ø\ÕmÕmÕe³à±iS…Z!>Œ 3G5*B„y«æÑ yòròhX£aàþOÏŸô|¨sÖº¹¶np>�óõÓ’Ÿ˜´xÒŽã›·oæù)Ïsþ¾çWÎù_ÞE*îºËÆíÇ2‘‰Ž<ÒV]ƒÌÊ!YaÎʢŹšÔj˜®}Ãöl¼vcàãQ÷}s_à|øc:Cãš6ÓÛ 6Ä;éóùŸ‡É~vX¹Ò–ðoÑ<Î9}´bí�š—g+“GeiYõÃ×_³níZjשÃ^Ý»S­zu6oJ¼%GiíÞ¥ {ö¦¼>fÌŽão½ø"WÞ|3UªVåÄ¡Cùa„¤åA*·¹«æÒ¤frsri\³1 ×.t¦{ú„§yú„Ä‹ŒÕ¿µ>«7»Ü£#j¦-ŸVl.ê–í[xîç縨ÇEôß¹?mêµaþjÇö\ÙÊ[—½óN8î8»fT$Ún`‹ƒV¤ë[.PvôdqÕ²êÛ¦/»5Ü ˆ­ü�µJ�¿ïùäåä1´ëPnù"Áü§lòôÓpõÕ¶êX¯^¶ Òk¯9ª~¨ IDATÁØœªY³2c£ä½÷¶í!¢¢«þ|0œvš�åŸ?ßY)GÞr*º[²D[Â×l^ÃëÓ_/öXtÒq�c𞃹xÜÅ¡öÛË·Üb Lü÷¿pÑE0v¬í™úÃéYï^=+“¼¢«þžuVQƒÚ¿þUq‡§%PPPÀ¯?ÿÌ>½{S5?Ÿf-ZnW3àè£iÙºuÂs>z÷ݬ^¹ÒùØ ÂE” xóù¢Fí•+Vðéøñ 8æŽ4ˆ›®¸‚�ë×—â‰Äç¯ËªeÕ³UO:5±2$:ÂÆëÉIOrQ�‹ÈÍÉåÌngò�Oï=œ5ž}Öê­[­˜ûÚkðᇶ}áÌ™™Q—íÖ r=ƒ`£«þx -˜› X½<ËTÈ@Õ;D"ÞþSÿüìŸÅ†ß ÚH¹Øœ¯ŸŸ�y|ÂïøuůtlÔ‘á݇W®@uÕ* ôžÞ†Ôªe_–芙k×Â{ïÙFõo¼‘¾Ê`¼ â7l°U�~8=+KV«V¥¨�$Þfí Ö.µ=Á¼UóœÇ[ÖiÉaí३/±q[lïìèI£9®ãqÔªZ‹“÷<™Ç|<áëe�ûï·%ü‡ÎÑíÒÅîÑmS¦N-*§Òµšn×®8ùê+¸é¦¬íM�Zå²V¿Q£À@µÏ€ô0 áù^|â g Z5?Ÿ£O>€ Ÿ|Â’…Å„ׯŒaÀ1ÇP³V-?ᄸ+‹”Vt+1ˆ�¸å‹[ølžcÅWŸè~~ѺlA¤€g~Šý[ž¸h"¿,û…=›ìÉ™ÝÎäÆOo$BvõÊZ»Öê²/¾h�5kÂ�!v�>þÁÖ¸9v,üñGzòyï½Á�mÜ×_o{mGÍ"2PmT³¨wbù†å�é~\ü#ãg�|<žÚùµÜi0ïÍ~�Åë;Ó�ž4š›ÜÌn w£o›¾|1?ñÞnYãÓO­¥ÿºëओŠ�ï¯SǶ¤‰nKsÞyÖJ•IjÖ´Þ•HÄ*�Y6\BÒËÛ‹�ä²~ËúR—SC»Ý1�ÞÕZEó�ÕhĈî#*W ‰ØFîÏ?oµp€µFGuêd÷«®‚W_…óÏϼ†«^½, ÀäìÝ·{“g¨oõ5Ó-˜7�!*dAC‡uõ ÙŠÎIõútüxV®XAƒF�4t¨UIІ5îøÿŠ Á׈ɋ'—úQ£J NÝëT>œóaàµÑ“Fsû¡·³sý�9¸ÝÁ|<7NÃY¶ùâ ÛšìO†�v*z¬N›Úv °|¹­°ûòËéË«K�pá…öÿoÌŒàrTáÕÚùµißÐV=ücãIÂ6¸Ó`jçÛùùyùÜzÈ­ÎtÍk-r1¢ûˆÊ¨‚ÍûóŸíÞ­ôëWôothV“&V<ï<z—J½{ï%ÉÉ�fÍ`·Ýà’K,À¾ñFÛÌùÔSS›7ÉjÝšwÛñÿ ÞÐò�{´­`Gw8š£:¸¢Y¾a9�j4¢Oë>thÔ�+f$-Oé½÷ì^·.rˆ óêÑöÚÊ/¥s≰Ï>йsñ…˜’í³Ïà ßÊŸ5jX…iÀšvà�V¡:òHø<;ç×ñ¬¼4dà±{îá¹G)õëD÷N]¿nï;ölݶuëŽ=U÷éÝ›6»ìÂüÿý¯Ô¯'âW£J :6îÀêÍ«‹ .Oƒ: ¢nµº€-0T—�î¯ V—­T�*Øbš—_n÷®]‹×eÛ´±4�ÃK/YǤ6T|ÕœhÚÔV�¿øb8åëUíÜÙêµY¤Âªv°£÷ ™A¡wõ³;`ÀΉ‡ î4˜KÆ]R¹æyMšd÷¨}ö±…–¢°;î°�ëÌû÷SYöˆŠD`ñb»þ9<ñœy¦}É_x!óz}¥ÂŠnkÉ+«¢A'@•Ü*\ÙçÊPÏÞm8×|xMRò”ñÖ¬±†³W_µŸk×¶×o´ ¶m[aqÉ%e­²”U7Úü¨™3áý÷­'µvm›ªÐ¥ lß^öüeï¼Ó?–�–*‹f-[î6üá[o)( ZõØSǽü2gŒ´ý-O<ã î¹á†¤äG*§~;÷£j®�ìøê·¯’6ÔÖ[—=¸ÝÁÜîà„ÏÔi¾s!k6¯IJž2ÞäÉÅG®tïn -õïo?ßz«M Z�=UuÙ%Kìþå—v];çÅxòÉ6”9KT¸@õòÞ—ïøÿÛ3ßNÊkD‡ñ‚­Ê6ouüÞ�ºÕêÒ½y÷Ã…Ÿ˜ôDRòUáLœh½ŸnC×êÖ…#Ž€Ç+JãݦaÃØs¸xÓ•uK™;ï´@àÜs¨J¹èÛ¦/ûïd[[,Y¿¤Ø*‹åÉ[ ùlÞg +;{5Ý‹F51´ëPþöÑߨɾ`§ÄÖ­³Å–~ùÅœøÓŸbÕhYS½ºMØà^)~‡Úµ‹zjËZNÍž ¯¿nó¦:u²Mê?Kd‘ ¨6©Ù„úÝÀÈ}mNA¤€óß:?¥Ýj`ñºÅ|4磄ÏY¿u=¯O�Ó:Ÿ¶cK›™”CÅ$[x÷Wõ±š3§è˵ë®áÎM·j•Mn/‹ Š–üΡt’Z‡ìr�óíê·à›ßpÿ·qVž.ƒÁ{Í£w­Jî2æç1Ü4à&rÈaD÷ Tý–.-Ú Æ»­¯Hìºkâ@Õ[ž•µA  ‘g‹£,+«6nÌÙ—]¶ãç¼£nÊQt¾)Ø"J‰IªQ«¾ø"¹¹¹œ8t¨U)“Æ5sÝA×qQ�‹«ËŽ|k¤s¥ö²Šn5¶EÙ{³ßKøœ�Û6òê´WÖuûï´?{4Þƒi˧•{Þ*,o]Ö}˜?¶l±Q4…eLBÑkĺu6­,êÕ³z4dÝõ!#ÕúÕësxûÃwü\%· µókÓ¶^[z·îÍaíÛ±Œ÷æí›¹ðí ysFì~=Zõ  ’x¨ÎÒõKùê7kÁ¸ë@ZÕ±ÕkŸŸò|è¡qÏþü,§u> °Ù¿~èÞ—³ÿÎýÙ¥Aâ?âwg½›”Â+-zô(ú¿ÀmÛ¬£sg›Ëºçž6/HïÞ6Ñà§ŸÊž7ïYº?¡”Ÿ½[ì]¬w´fÕšÔ«V�î-ºsè.‡²{ãÝw<6qÑDŽ}îØ¸Û€-wüîLJzý/æ±c¥óè"J‘žûù¹PÏŸ·z_Ìÿ‚ÚÀ1Ž¡qÍÆÎ•Ó›Õj*O¿­þ�‰‹&†zíŒW¥Ší» °büö[ñÇþ¹èÿ^h 3Å]…Ê^Våæßgõ‡Êv¾ Ò¤ysþ=f M { ¿ùì3&|òIR^+ºw*Àè`zˆßË7Ÿ~J¯~ýpÔQÔkÐ î"OR¹Õ«VÏY—mS¯ ½[÷æðö‡ï¨ËnÙ¾…‹Ç]ÌkÓO7ڷ御:f–­_¶cKÆþ;÷§M=[è…)/°­`[¨÷ðìOÏ2¬ë0À¦–\ñþÎt·;˜Öõïeüþì÷·Í©pzö,ú¿w=°×)SìÒ·¯ÕSã­ÐÞ£컯ýß{m)­èüYȺºlFª{4ÞƒqCÆÅMS)`ü¬ñŒzoTèž«ú\*Ýûÿ{Ÿ�OÛÂ'Þ9_®ý¦‚¼7û=–mXF“šMÚu(ÿ÷Ñÿ9ƒÜ»»;ÔùÚÞÓ–ù«ç‡~ý”»í6ؼنBÄk êÜ®ðtß|›æºëla“œÛÐ~ð`›îרÜ~{ÑÏ×__êì¶ØÓÝžßG¢Š§Tz×|}Â4‹×-æž ÷p××w…ª´¬Ó’×N 77ºÿèþ|<÷cÚ7lÏ�mmêGs>bѺE¡žV9 Íäçå3¤óîý&v¶½[ì*OÏMyŽÓ^9-ôk§\Ó¦ðÜspÏ=ðöÛñ—íÿ÷¿m=¸Ë©wÞ±ã={Â1ÇÀñÇÛ¼Q—N€£ W_ž0Æ—~û!ªW·…žº®"½`AüƼ ''‡]wß�£æÔ³ÏÞ±UÌosæpù°aIyÍ螨³¦M ¤Œ}þyzõëGÕü|Ž9åžñÎKñèШC¨ºì{³ßcÔ{£øeY¸ïñ¨Þ£Ũ„é>™û ýFÛ�bo]6ìˆ(ºž´¨Ý‚3ºžÁ5^㼎Ý9ðÎPçk_{f¯L0ú$�¢[>ø`ðBŸ`#m®¾ºèg×5âúëm¯U°9£ƒ¹çž6h`‹‹F]w]©²¾C÷îÅ÷Y}÷ݲ�/ÃdD ê·~ëzVoZÍŠ�+˜¼x2Mäµi¯%\Ô¨¬Õhı�`úòé%ê)ØV°�¦¼ÀE=.¢U�V Üu ãfÅ/°*´&M`øpÛÛï•WàÛom¾çÌ™Ö3Ѫ{,œ}¶m³¶p‘«rðÚkðÑGÖ"4p µ.Ýy§ý;>ì¼³­ryå•мp; W^��C,Ÿ~ÁpÜqE?{·§éÝ»èø«¯_äI$�mÛX³y k6¯aΪ9L\8‘ÏçÎ;3ß Ýz]ZÑÞT(YƒÀKS_â¾#î#?/ŸÝG8Õ¬‘“cåJÿþ6üöÅá×_­œZ¸ÐÙÝwÿöÎ;<ªjëÃïJ¡ ÒEÀ¨Q/ØëEE?Qì"â v¬ˆz5ÑkÅvMTTlˆ½]E±w±bÁ†¢(F Jï½¥¬ï�=CÎ93!m2-ë}ž—ѱyGŽØöÞøý�ú25ñ´kç„4óòÜ:ð›o*Ö²n-{ôÑN ¨Y3wͽ÷:±Ð o¾éœÄÃsÑz¿üâÒÉ“aæLèÖÍ­e¯¼²"?õ�7œˆ_Uœwž+MÆ[ž¦wïŠö7ÞˆÈz&¡Žjö-ÙUª!÷}{÷}{_­®]¼vq�lúîP†¾;4¢}Ø{ÃöÞ°ZÏ›”¬…r4nì2 ª|¬ª+ýâÝ� rÊ)Nysà@W³jäÈÊçzòI¸¢êÝE bÁXkÖ8±'+=`Tˆ #1aDÌçÝâ®j .Dáš�¯áš�¯©ÕµKÖ.‰úœ[[º^¹üd¤´ÔE~dg»ôÿDOÉØÈ‚púé•çŸ~ó�sGŽtbI§�æ¾¢1k–sl¿û®j;·ÚÊmúmŠI“Ü3´…†bMãìlzí¹g¥ýkV¯æ“wÞáÅÇçÛÔ†íÔ¥ �ºt©r\XÝ è÷¤ª¼UEÌÕ«VñÉ»ïrøñǓ۫¹½zE=�ݪ{÷jÍ×4¼Ø5Ò†æ·5�ùœ£¾Ũïkwz¿lÝ2šÞÚ´Ö÷¾üý˹üýË#Ú¯øà ®ø šk¯T!¬Þž•åÊþë_•�U…±c7½þ<Ø9²'�ä6ïÝÄFðSOU-{r‘Kk×ÂûÓÙª6FSŒ¤ç´¢"SfÃúõ5v(½L™4‰)Añ`â„ Lœ0¡Ö󆑹¯1Œœ7®z!½›â‰'ÜW'£ê!†a†a†a†?ÌQ5 Ã0 Ã0 Ã0’ sT Ã0 Ã0 Ã0Œ¤ÂUÃ0 Ã0 Ã0 #©0GÕ0 Ã0 Ã0 ÃH*ÌQ5 Ã0 Ã0 Ã0’ sT Ã0 Ã0 Ã0Œ¤ÂUÃ0 Ã0 Ã0 #©0GÕ0 Ã0ŒzE�2ÕD›a†a¤æ¨&mÁVÙ�%‰¶Ä0ŒT'Þ#F’P¢Ê̵k™µ~=æª •–™°y£D[a©EýüÉ”×ËÌiKöh÷+ˆB·æ0¿¬h[Í‹7«Þ°[®…F¥µµÐØ¢pþ(è°À½^ÛŽ|~ÚÙ}o$![&ÚˆØÒltZ �WÀ‚0µ}¢-òЦzþÞ†ßP¿¦$3ÛN…/Cöz{üºSýÞoF·ê�›÷àz2VÖ|þòo” ×*ZL;| YWÚ.JUlèa.}Âé ÄhÍÔz.´ýË}_¾ ,ï›yÓŠj®eo¿ š¬«_S¢qØû°Ï×0eGxÿ0XQM{S�Y[&öþõç¨ÕFÊ óSÎÙÈ(ƒÎÓ EÌ?ÊšÄæ>·\›yŒHN{¦ÂIhº®½Î|n¾;Jm'5¹Ø2ô•&´�»¾SñºÓ˜Ú'aæÔš¯÷q_ ‘‹ï‡ën†Œ�SwÄ;pÛàÇ]kÀúj±û|;p ¾�ëÒ±Jé …ãce™aÔ½c3M›Ïaó¿*^·› å;ÁÊž±™¿¡qûUñ¿gÏÉpÍ­îû§ÀÖ3Ýóy¼ù;õŽ…þ& ´ed{Ë"èö84Ÿw“Œ¢ :D¶w™ £Î‡ßv€AÏWlFF¬YÚJW¼Î^ ›ÏMœ=FÍù¹”eV¼n¶^;ο –¬W]u2Ð/îFBh76ÿÊߦYPÖ<1öµãÁ ý‰‹ÚÁ÷{$Ξ†„9ªI@YS˜5æ8uk´ ¶|:|ba»I˳§B�éîuy«ÈþœbøßÉîdäÈ·ãoŸ‘þ”g‚nþ¶NÅ 1Ũ%ã€KFúÛºþ/€ÆcS�ùØx%ÐÞ¸xho£ #¾H9tx Zýào/φ9'š‰±Ë¨9ƒŸ†Þ_øÛ†Ý kì9ÌQM"–í3N‡uQr6ŸÝž‚ìùñ·Ë¨«›Ã­×8‡µ0/znêÎ?Á[GÁ½á€ññ·ÑHoæåø_w˜îLFê0ê|xè[ï/àþ‹cO�xØ ø-ÐÞø¸4îFÜ‘2èø´üÕß^Ö æ ‚ui”r’î´^w\éo{çxýØÄØÓ1G5ÉØÐþ:ï ô&/†­Ÿ�¶_ƒI'&/KÚ@~l3Í-8K²"ÇüóKøì@x÷pØõÇøÛh¤'K»ÀÏIÖzh÷wâì1jǰ{ÝóÁ˹�¸Ö¤¤¸è¬ôíL$í„Ë # óKÐ|ª¿½t3˜} ¬ï˜»ŒÚqóuþÔ‹uM"£^ŒúÅÕ$D3`Ñþð×)PÒÚß'åÐn£zÌí >¹EðÜ)P寭ß{0qwó/Øî�øÛh¤*0›…ÿ¦%YpÂØHEÞ»/ƒƒ?NˆI•³ 8 ¸…È Ôs€ñ¤•h™aTFÆ:Øâh:Óß^ÒÆ9©%ÕT>7’ƒ]„ ò·äôm¢�7êsT“˜µ[ÀŒ3`y¯È¾¦³ ÛÐjrÜÍ2jÈôpê³°Ë$xóèÈ~Q8ñE'yþȹ°å¬øÛh¤Áðßv3!³$1¶µgQ;8öu—R¦Q)¼x¢K/H &{ïÚ�Ùñ6Ê0âOæ*èòdìÖwpNji)e’.ˆ:¥Ì²Š¶é=£8ÜÐ1G5É)o óúÁìã]~ƒ—Œ Ðé]èò*d®MŒ}Fõ™ÜŽyöû >íÙŸYç< S·…—C»Eq7ÑH–w€µžEQf)´ŸYùx#yù¹—òPOHÛÅ.?ªÅªÄÙÀ À>À´@{à3`HÜ-2Œ„�µÌ9©�ŸÙë¶„9'G®ÝŒäç¬Ç]ÍT/—Œt¡¿F|1G5EX•ž«¢„´˜*c“,»ìÆ&™°/ô‰+=q÷Èþ&ë಻ÝîÝ�7BË•q7ÑHq‚§ªþ›º¼r< ¿Áßö�_à™ÓTîª ø70XèÛ—�Ú@ëà �Æ‹œ“šµÌß¾¦‡S÷-·ˆ‚”£Í’È“Ó×�…·�LŒ= sTSˆ²f0{Ì? Ê=�VÖc¡ã8Ȱ0¿”àƒCaÏï`àKP”Ùßr%Ü0Ü9¬—�p¬aT‡ £ÚvdÙû'e¹ézç°z9îµH¶ÞYôFDé | ˜XŒÑ@ÈžëœÔÌ@tê\˜7ÀÕK5R�Ûþã�h[Û.½'qö4tÌQMA–í 3Ïp9¬AZÿ[?MæFöɇ Œ=Á��œõ8üÕ5rL»Ep׿]Hð¹ŸýA#¬ ®±iV·†•m+^K9t´ˆ‹”EÅ…ÿÐ+¸îf·Ñ¾v> ´7žFâj¥F éL'œ”Ø\±3Ì?Ɖb©Çžß9…u/·^)lgÄûSJQ6lîT�õŽ| 6^]Ÿƒ¶_aelR„²LxâL§ü{é=°°}ä˜-gÁè'&0…ùcûå›ÀÂÓ‹ÕÍ�¸Ò¢vþö'ÏpBmõÊã@o Xê¨ð%pZ=ßß0’ˆæS] šŒ þöe{ÁÂ~D”4RƒŒrxà"÷o˜©ÛÂ�W$Î&ÃÕÔF`ñ~ÎaÝ�=—rh÷…sX/MŒyFÍYŸ ÷sªž×ß+¢(nËT^à$~`7��Û4 G°LMëyÐ$ÑâNT½ ½Ï­ËŒÄaŽj°®3Ì<–EY04�[? ­Š»YFXÕšîþ'Üq¥Ë‘² “x‡#Ïôæ‹øi$5ëZÀÒÎþ6;UM}>;†Ýëoëú¼<²b©O0茊җ¼´�ÒgiJ« Ã[î ÀË¢¾°tßÄØdĆv‹\nª——Àû‡%Æ£sTÓ„ò,˜ßf�¥Íý}%Ðñ}èò2dU�¤fIÈ+„œbxø<(ÍŒŒ)ÚŸÏùœýy›#Ù…úŽ4R ÿMOºF�ïoÛÿs¸ÿâÝà \>ê„@{ `,p;¶z0›íÆùÛ4ËwKŒMFì¸ý*§öfusW}ÁH<öQ“f¬î3΂UÛFöµ˜Ý‡¶XM9ælç�‚nëÏó B£$ÁÁ;üÀn<Ï r)ÉL€™F’± ‡?‡½Å÷e¤>—Œ„ñøÛ†Œ† ¬ãÄ÷óíÛßê8¿a¤m?†6ŸûÛ´Ìï+wJŒMFìØçk'féåæëàï­c�áÇÕ4¤¬)Ìîó‡òÆþ¾Ì5Ðåèô^¤€‘üwlÉÉü�]˜Ä[Ñ/('ñ“™Û‘‡é’3�$¡$oéo³SÕô $ ¼ 3·ö·ß; ú|Z‹ ×§ãÊÌCˆ�¾v¬Å¼†‘ª(txZòËÃÜ�°:'úeFê�Y^è¯I]” #.OœM†Ÿê‹É³7ôµM1bÍr`Mö|:o{/M[þæëkõ34û¶s‹/eíÊíc QsBõk~¦Gó&ÿäKnã?Àxß°Ðö`0"ÿEuq|�My…þžμΟÓn—ŠÂ—'t ø¿£0iÊÔgpl�|9ëjš—¹:�Jaìa-Ù³ÏüÙ¬šEM×,„oo‡eÁF¹'AÆ@8ÃÞ/IÍw{&Ú‚Ôà‡ž˜w¿ IDATݪµ–)¥Ã¶wÓ¢ÍW¾ö²Ò–ÌýåzÖ�7/5¸`ú;ìú³¿ÍEmo¢äÄž ²¨�­c%t]3M!�‘rÚö) mß�ÌÀVyy&‹?¹šÅ]�–YuêT¥ïq+×°?T6dp0Õ”Ó~‘«à¿ÿ…«mJÊ‘Ùx ÜÙ�ÌìÕÛ¾+ü’åÓöK UF,À˼Ä@_ɪÉôd?¾b-ª¸úCà$ ¸�Õx82¦¶‰bÇ¥ðÛ~ªZ”hKê‘® á¯vU�¬Æ\Ykè4¸?ͶýÀ×^ºb æ>:Ž ,´ èÀ~g{Z³lcÛ œÄ žO U†ŸíYèoC@3XüÉÕ̼ÿ6Ì<`3Êhû·Ðõ¢}iÜ>-?¿ïÑ�=øž1†?Ø.Ú�Í€áÀtD.EÄ×eš±ð§c}m�öú_‚¬1ꃗÀM\ïkëÉdžfpõ– �~D:©ÿ¾ÃœT£¡‘Ñt[œÓ7ÂI-YÒƒ9£¾0'5�¸ƒ+}NêJZòoîJ EF4ÌQm@¬Ÿ³+3FNdé——€úøšt™H·a»Ñzßd�QWáENdG¦pmVGÖ¸˜ŠÈÙˆ˜èR`Þ·'û^wÜýE$£4AÖõÁpnàUúûÚúó*7rc”Ñ«€�¸:3�‚�œ| Xh£Ñ°Èl1Ÿ.CúÐdk¸ï†ùÿ`öC_P²¤{‚,3bMo¾`0OûÚnäFæ°E‚,2*ÃÕ†–6aÁ÷2ë±÷)]î×Ù‘¬µt<îb¶<»�ZÎM�…F])#“Q´Xl \ŽKe ²ð(ð+"±´4fñ”C)Y]‘áѸåBÚìða-2b�" æi&ãÏ­ºŽ›ÀËž–©À>¸:3^2�;€1@ Æ™a¤9�ZÿE—ó÷§qgÑùuïÍì‡?£leçJ®4R�F”ò úÚ~áŒä’Ydl sT(«§öeÆÝ“Yùó‰}Í·{Ÿn—÷¤eÏ—£\i¤ ªëQ½è܈ËS ²=ð"ð="VÚ:MѲ,æOèk³ðßôc-8–×YDEªž <ÅéìÌOÀ›ÀžÀ¯�+ÛWÄÍVÃH²ÚÑå‚’Õnª¯}í´ƒ™ûȇ”¯i“ ËŒúàbî§'“}mñ¥5З5â‡9ª ˜²µ›3ç¹1Ì}áYÊ×µòõe6[̧ž@çO'£I4ÿÆHTW¢:ç°Þ…+Dd7à=D>EÄTvÒ�`øo‡]_%#km‚¬1ê‹?éÎ@^ò-ºš±šƒ88§ïew`"®xªa4,²»ü@—ó Q«Y¾öÕSŽeîïP¾¡*12#•èÌ\†sƒ¯íYNe<Tr…‘hÌQ5Xñã)̸ûgÖLïÑ·ÙîOÓíÒ^4í>>òB#µP]Œê¸�àG€hIŠ_"ò&"½âjŸQ¯,+îͺ%’ð™Ù«h¿ó› ´È¨/>¥øpnéÑÀ=,‡a¥3€/€ê— 0Œt¡I÷ÏÙbÈAd6_èk_ùÃ`æ=û2ZjšƒéÆ�\Áfžà²å´âJîH EFU˜£jP²¬+�þ˜…oßñpÎÚ|&]Ï;ˆöGä#™d¡3Tg¡:Ø—�Mô(`"Ï!²M\í3êæ}7È×Ôi¯çdŒQß<È…ÜÀ@öÞŽèÍžšÄÙ2ÃH<Ͷ‡-Î:ŒŒlÄØò¯†²à¥'¡ÜtÓ�>|ÊÉøS^®ç&æÑ)AÕÁU£–Œÿ73ïûŽõs‡iRN› Ùzè^dw æ7)‰êTTOÂ…ý¾e„'Eˆ<„ˆÉá¥8Áðß¶;½GV³¥ ²Æ¨_^ä&Þ¡8ÐÚèÏ%1Œ†B‹^cè4ø8$�ú°ô£ëXôÆÈˆªFê“E p‘¯í'vŽh3’sT�ÖÏëÉÌû¿eÉø+@ýo‘ìÎ?±õ%{°ùþwƒlª>Ÿ‘2¨NBõH`\`�FÀù@1"…ˆ˜²DвjV/VÏÙiãëŒFè°{PýÕHmÊ€<à_Àj_Ï~¸lÔ1Œä@>‹¿i†‘`6Ûk4�Œd–T4ª°ø­,wSâ 3ê•K¹‡™²ñµ"\ȃ”a'çÉŽ9ªFT´4›…oßÁߣ?¢d™?I­£ÃQ—³Õ9}#ŒFõ T÷Ž&EѸ˜ŽÈµˆ˜ÊD Å�¨fQÂXN 3âj�a$’ÖÒþøó@Ê+Ë3Yðò£,ûâ²ÄfÔ+]˜Íõø7!žä ¾Ât#SsT�M²fzfÜý3+~<5¢¯YÎGt¿¬'›íò|,3ê ÕwpáÀ'áŠ.iÜ LCäDLq"…æ©¶Þv<Ù­g'È#vLö> ´7ž`)ÿ£!�íXÄëKóÀ©«a¤#mû]MÛÃó}mZÖ˜yÿÃÊïÏJ�UF<¸›ËhÁª�¯—²9ù$Ð"£&˜£jTIùºVÌ}áæ<7†²@=±Œ¦Ëè<èd::™Œ¦Ëd¡sTÕ18Á¥!@´£óÀ½Àˆœ‰ˆÅФkugùô}7¾)§Óž/$Ð"£î<ôfÚ»â¢ùÏ`,'p3×ùz{ñ3O3‰ª§fi€”Ó¾ÿ´îs»¯YKš1ïÉ7YýË€făCø��¼äk»–[XHûYdÔsT�j³òç™qÏϬžÚ7¢o³]ž§ûe=i¶ÍÇ °Ì¨7TKQ}WÒæ \la�®ÀãÀ/ˆØ§~ `á¿éB p1®ÌL°<òÁ¸SÖÝ7¶ÜÈ�¼Æq¾QÇó 70¼^­4ŒD ¥t<éT6Û{”¯½|mkæ<:Ž5SM�eFC¼Ù~ÕòïZYòj\˜¾™jIüËÆˆì Üô«dD ð(p3ªÁ#¡ML+WA£›¡Q´“[£–ô:¯$«Ãne7,ÿþ8³ì÷1Y¥‰´Éˆ† ”dA¹Dö5*ƒFµþ�=BI£s(óÅ ?LfÙùØû ½XŸº“ª%Ú’ú qûÆk¶8G7j]ê{/¯›Ù´dî]V”¯Ë0ië@T~eFë”l|L¤Iéžt]fo€TäÏ–¢j¿:#¶äJ`4A%ÇXàü¢<]_«Œ¸"rÎaýg%#Ö÷¨.�›]†�¾£å8ðm=ϺŒ¢UÆë‹HK Ÿª¾TÕX£öˆÈÁÀ"Ÿ§+€ÓTõ�:Þ W|uÿ@Ï¨ŽŠr…a$9Ò xèèz8¡8_ׯß*#!ˆ\>ór`/T'Vr…‘äXè¯sŠòôU 'îC"È ÀäÜB9,¾VqEu<ª½�£€hªZÍ€|`:"ÿA¤y\í3¼ x wÂIÉV‡Ë€�bn‘±‰.ß S€=ë줨–€¿=#CN†‘´äȾÀ§D:©/Ç™“Ú€é\h}ØœÔÔÆU£^(ÊÓyEyz$.¡jM »3ð^n¡Ü—[(M#¯®="’ËùŒ:¢ú6°+p2PeDkàV`"#Ò8žæ5tÆ ÑõÀË�æSÂ߈H#Ù!x�ˆ4ÁÕ@éR¿6LD¤¹ˆT&ßû2°·ªþ³ª.ŽÅÿ¬Î•›Ú:f÷1Œ’S }�qÀæ�®‡�SŠóÕ’­#oêÙBàšÙbÄsT�z¥(OÂ9*ßFé¾ø!·Pv�ÒW[z‰ÈE1œÏ¨+ªŠêóÀÀùÀì(£:âB�GätDìÙT D$JÎb� Êýßw´d¨j)p”ˆ|*"½=cÎ=¼ß¨"R™|o9pµªž ª«b~cÕIÀ�ÖöÀëñ`ÔÉ‘ãE¤u¬çÎ)�ã�·p5™¼çëùÅùU§/i„ÈѸ./ù–Z”úØbШwŠòô\®âMD–1É&äÊ5¹…½ð_Íø ¸WDª¾hÄ ÕRTÆ•´¹ˆ–§Ü x˜ŒHÿø—²œƒ9>æx^·Žô¼¾Ø ø@D~· ȲÁdc‰ˆT&ß»—|{½àò�o´î }¦84ÏZ\y íý¥À¿Uud-ç¯;"=p§ÀÞðîUÀ~¨NNŒQF2Z»8� 5ÌCªza,î“S Ü\èZ ,Î×·cq#yÝöy@.ªËd‘cÌQ5Jn¡´Á)N™œS”§oE»6.·°Ð'ôokÜ©FxqµxFUM`)UpÊÍ7ãJfD;¡*Ç�4݈êŸñ4-Ù‘I¸Âõ¸è�ßj;WßÑr#n£ ̸qCôÐÀýšáv¯»‡š–mÓ}#HDvÎéW·ÜÄÐÕÀ¯¸üë%¡¯–À>ÀöøßÏ¥¸Í´ òù|` ª~ãë‚Ëõÿ¿ò'°'jµ°*"²/®¼Ø1DF¯¶ˆE4SN�d�á60½¬Ž.Î×ñu½‡‘¢ˆO¤jýi¨>›sŒúÁU#)È-”³q;¦ÑrG—åéê`‡ˆtÆ•Ó8§@º‘;»+q'«GEË3’‘Ý�Û€C+±·Éq ªóâfW!"_ûáÂìfÝU5(XV-úŽ–í€ß=Me@—qCt~àž»áòÉ窪¦ßbÑszz°G%ÃVã~Ÿ†¾¾S�^#*|#‘§B^¾¨j4eìÄ r1N‘Û˧@_œ*´Ñ@‰}åàž9•…º£ªoÖõ~9’M¨j kЯ8ßêc6Xܦéo@WOëxTL�EF=aª¿FRÊIÝ·è 2˜bò¡ªsUõNUÝØw"4W?+¼`o‰ þID¶©û�z@u"ª‡áNË'DÑ'Ü1 ‘Û¨‡)@8_T€­p‹ÈZ1nˆþ�L “Id‰TõÜßW˜Aµ½g2""ÍD$˜‰Û :©ë�çpy©›«ê¡ªz›ª~U™“  ®LÂM@Q%CF$•“  z?îç॑*›Fª¥|ŠˆLÞÆ †AåNê³1rR[„îtRg˜“Ú๿“ZŠ[i†9ªFÒP”§Óq;µ×âBâ¼ä_æÊðÜB ž˜ ª‡ŒÛ{·âB�Âä“D$­Öi�êg¨î‡ 3‹–× ¸˜ŽÈU¡�Ö†ÂÜÀëá",mR‚5UO®dÜžï��Q=ׄ""�Å�N ð‹F�Ë+ͶTÕSUõÓM9¦Qæß§þ›è*ÎUÕó’8âãbà‹@Û…ˆDÄ3ҀІÍP`:.ÕbÇPWeëFÅm`ÕYÄ&§@6>þ/ÐU ü³8¿ö)F ²=py u$ª¿$£~±Ð_#)É-”ÝqŽÁE8uÒSCõY7IHQóüÉöàr^.QÕ5uµÕˆ#N,k0§ì�yÀ-ÀhjàH¤""ò"p§Š+g²—Ö",³ïhÙøÿb4gÜÉ(qJ‹S=Mû¨ê75½_2 "™À`\4ÆÖ�îàM`ð¡ÖòSDNÃ)&óQžWÕÊ6’‘¸g¯÷£ø?’!ŸÖˆ "Ò·11 ·YSNõ5ªêغÜ?§@:㈬%ü3phq¾?Áh€ˆŒñ´ÌÁ (Y…‡4ÄNT�¤¤(O'âÄ‘îÇ-¾½ì ü˜[(T5�ª.WÕÃq²ùë<]gßÕñôɈ7ªå¨>ì€û�OÁÕú¼ø‘ÓBÎmºÜh`Wà?µ™lÜ�ËIDD ¨j1náf@mî—HÄñ/` ð8~'µ xØNU¨ê¸Ú8©"’%"#qåg¢9©àB“Õ¸0Lï{. x9¤Øm¤0"²•ˆÜƒËuŽ« Õ_'¾'µ;îä>ø¹<ècNª�ȉø�T€›“š¾¤óÎHqŠòtmQž'Ò!i<˜[(oçJ§ªæRÕQ¸p`o~ØŽÀ·bák©‡j îwº ./sI”QÝqÂψDS•NÖ™+¦Àu"²K-ç¬nø¯Wm1¥UÙw:øþÒ0Š«sº“ªž¥ª3êp�ŽÀGÀÐ(ÝÞh�ÔQLVý83ÐÚx½�…ܧ "²£ˆ<… ñFņJuÃùË�åÔ1?0§@vÄ9©ÁH™q@ßâ|]Z—ù�4À Ü�´~Œê ‰0Ljæ¨IOQž¾�Ûa�¶[{09·PúW5�ªþŒFyÒÓÜxXDž‘ÊN<ŒdEu-ª…@\Nr„24°ð"_#rp\í«ÖFiܳýii\‹9Çâ•ÃìÐw´ìeœ×QíÊÁLjD¤µˆ<ˆSß=Ðý°‹ªž¤ª¿G^]£ûìüìèZƒS)oâi«Q­è„£ú".´ÞË.À“¤A®rCB\y�ÜfÍŸ¸²J5U φi”×s d`<°E ëà¨âüHÅ£Arà­Û]‚ (¥=æ¨)AQž.)ÊÓ�¸Zj+Ýí€Wr åñÜBÙT�CTuµªž‰+PîZ: øXDÚÇÒn#N¨.GõZœÃ:¿£foà#DÆáNÔÒ�Êr¬3€ž8eÄ1nˆ.Þ 4Gœªªê¯øËÙ$õ©ªˆœŠ³÷üŸ}árl� mfÕõ>çᧃ‹î?q¥„¦àÏóŒZ':ɹx=Ð6'„g¤ªúŠª­ªûªêvªÚNUáʼuÃ¥œ Tvš©À{ªúTmmÈ)�>ÀÇTÔ>ó$pbq~Ò ŒñDdGàÒ@ëT+SQ7ÒsT�”¢(OŸzáv_ƒœ ü”[(½£ôùPWz7àGOó>À×âåŒTDuªÃp'Oýtàà[D^Fd‡xšWD;Q £ÀÕ"RY ÐM ÿ=©ï訧e¯x¾OJGUDv‘O€g€ž®9À¿Tõ�XA‰H¶ˆ<Š^ žd¿졪?G{ÚÿÐT\h¹|ÝÓ€_=à –1R U]©ª3�ÀÍTä«z)Çm”�WÛûäÈÑÀ»¸r^îÎ*ί]Mh#-yðV|ø÷Þ4ÒsT�”£(OgâjæyrÖø,·PnË-”¬MÍ£ªS�â_l÷&ˆˆ�NeTgâNÎ{âÿýz9˜ŒÈˆÕ^S…M9ªúzZD²k8ï[€WœbK\é¨ Þðß\I"Ç?T^£'úÔÇÓU†«š«.Œ5÷Ú ø'ÒæE�Û€#TuIHaøOðT2upâ%ÇàÏàL¤.å ©ÿ~€ûL�F�§ªÕfþœ9÷ln躱8_/+η’F‘“ñ?Ã.C-$¼!`Žª‘’åiyQž{ÁÚY¸ºšßäÊŽ{PÕµ¸�µ»<Í›„B�TFõ7Tà”¢ÇE‘ œü�ÈÈP ŽTbSŽ*¸¿…p*žÕfÜ] ¼hŽþ;§&X÷0îˆHK9X„«{êÝ…ÿØSU/Õ©DŠH`"î=æe%0@U¯QÕ°`Ò`À±ü§ªÓqÏOo)¤8q¥`(§‘"„6¶ÞÆå÷GCq3Õfþœ¹áàýÛT`Xq¾ÖèYe¤9"›á_Ÿ|€êËцé‡9ªFJS”§?á’î&²ŒÍ®ÀÄÜB¹$·°r‘U-WÕ+pIùáP£ÆÀ3"Rã?# QýÕC�ƒqB:AãÔY§#r ®þn*PÝ:ÀW†~jB0ü÷„¾££F)|êù>(D¤“ˆ\("ßâ껎À_fp!°¯:åÚXÝ÷2ÜH0·ýw\-ÛW=c³ño|¤ªbeKÂPý¸<ÐÚx ‘FQ®0’Ÿûq©0a¼ÏÅE2�]›’M9ò\§÷3¹ 8³8_GÖÂV#½Ž+9f=®Î¯Ñ@0GÕHyŠòt}Qž^ŽË=œèn‚ ó{?·PºD\ìAUŽÅ/²t“ˆÜK{�¢ú ªûâêAOâš×àÖ<’_ ºªU/O‹H0ÌnS|ˆËQ Óèeœ·îj´ðàzAD¶‘kEä7à'Ü®ûž@GÜ©¸Eõ[¸z¨yN6ëzïf"ò?œCtÆ^Ã9©ÁÜÓ �­Ù-ªj¡Àé†sBÏÅ9�*5W’ãybt* Däü¹·å¸Å_eeš8@U¿¨Îü}G˾ÀWž¦5@ÇqCÔu€ˆÌ¥âgw¶ª>^�ùc…ˆlŽS¾w¢º¸AUï�ñ}úá ƒ*¨K�STõÝ(×N”æ�PS)°cmN¤’—ãý='ÇàÂDÿ�j¾çŒÄ "qµÃe•Vàò¹ÿ‘#q‘ ¥Ànª:¹ºóæHî37¸I¼8¢8_£¥b ‘Óñ×¼8.´Él4 ìDÕˆ+"Ò¹–å2jDQž>�;]ý(J÷©ÀϹ…Ò§²ëUuNfš§ùZùO,í4’Õ\Ø÷68®h5{à[“9:J¢æ¨fàrz¼›0“¨È½à)iV�ÉÇ Ñ øOœ›áN2ƒxOUãþFU—âN—[àõb養ãœÀLÐIýWz&ÂI ‘G…“ ðß´tRÁ•‡rïïû²1ð2"]£_d$q›uc©pR�ðGèu›Ð¿·ÖÐIm¼A¤“:8МT#*"­�Â@ëÛæ¤6LÌQ5⊪Î.‘_E$_D¶¨ò¢ZR”§³p!›I ¹ IDAT¿—ëÝ]��r åŽÜÂè¥;Tu6ÎYõÊïßP1Ò Õ5¨ÞŽsJoÃ9è]œÝá ý½ ›[ð×¼^\’ [ŒcŽª‘†àvloþ‘÷Dä©ᚢ<Õ¢<½§ <)Ð��Ë™ù.·PzF»>Tôü`œf„ˆœk[�$Auª×àNXï'²V/À¾À'ˆ¼�ÈîqµÏ�×QÍnRÕ 8±pÉ�6À�ª:WnâàÂÔ ªÿÚw´´ ´yOT»‹lZ¸¬žØ¢}dmÔH£!"¹8Ç÷¸@W)ðoU=YU£*/‡ÜÏáüæ¥ÀɪZm|Z¡:†È\²]�'`�± Bϯ`Í8àÚÀ°VÀY¡gK•äHœxï@ל“:-â"gËQÀ.Õ¹‡‘¦ˆìJäFãíT²h¤?æ¨qG]‘渫 à0Ü ÐRyDDþë{åé¯ÀÞ8�œ`ŽaOœ³úïhelTuîdÕ+Èò HtçÖHTç£:—§ü4‘ï€C�ïy çÔį“4“�# ]ãé»NDZªj‘ªÂ-�ªNð¸!ú+.¼5L#\íL/¿‹=¯kZ §NˆH.¬yÿPmäXÌÙç¤nèZôUÕJeÄ•eywzælUý«’KÒ‘ëpaŸ^NÄ…PI@èïÿ1*JÅü Š¢Žý\uÅ¿r d+\�Õ Ãù=p@q¾Î޼ BÕ£©~É-#Ýpùüâ÷M¦áÖmFÅU#!¨êïÀ�ælœ,þ"2-Tz"fyMEyº¡(O¯Â…Έrï;��s #ï²÷œÀ¸Ãª›ëg¤0ª3P=·¡M�R€€_y,ιx^§ìFUõ*ß§B ·.WUýEU¯¤úªÁÁSU_øoèó'OÓvÕœ7VtNˆ…º¯ˆdˆÈ­ÀËDŠR}쮪ŸV1Í#ÀQž×zkª6Ü{âTÜ&†—›9&‘Ü‚‹ sŽª. mÖVIN�l‡ oþý \œ9·‡ÛqõˆÍQm¸œEä&ç%¨S·Œ„9ªFÂPÕ±D.€ÃtÇåvÍ‘�Ed°ˆ4�Å}‹òt<®4I´ºm}pBK§D±÷œ:l˜q!–FC@u ªÇãN棉teâ>hÿ@äDÚÇÁª°£9 —ƒº‘�`Ïަ˃!¹5‘}®æŸ}GËÖ�1Åžïë½D�U�£ªSê:�ˆ´ÞþCÅ)S˜Çq'¶W1GþM¸¯€×Õ¶”Du%N\i‰§U€gÙ)1F°±Í0OÓãª:®²ñU‘S »àNR· t½^œ¯+7aK.®ÜÓÌQm˜¸goP;áuTßI„9Fò`Žª‘hNÇ…Ï¿âœÊ"ò„ˆô •|¨5Eyº¢(OÏÀ�„wy[ÏæʘÜBñ)|ªê‹¸ð¤0çˆÈ¿êb‹‘b¨~‹ê!¸öo£ŒÈÆ-§#rõ+vTo¨$÷ñ&*¢šáö©6ã†è_økd ‘uD½J¶9µ¹O"‘�qÏ¢Ã]€ TõlU]_Å—ã9¹~ŽÒ†|"àNãN¤"gÜIõ¡Å©gD$·ñ^Î.¯í|9ÒwjÚ!Ðõ? q~•ïÿgq§©Pý(#½¸ ðj¬Å¿‘b4PÌQ5Šª–âvÜá?±ñ~Ÿ6Ã9¶ŸàNZ‡‹È6•\S-Šòôe\HçûQºO&çJß@û¥¸h˜Ñ"RYýM#]QýÕ½�ãq"!AZàòô¦#rõ rN&R™7Ü¿~Ïé"Ò«–·Ûdø/ „D�î$úÎýÀ@U�+¸çÌ‹ªúv`žÓp'TáŸÍB ·§¥ ò(pv õ>T­ôDœ—’ð'N¥ùŸªF¤ºT‡œˆ Ë tÝVœ¯UŠf‰H+Ü&_°L]9Nlq,pM¨¬�‘ޏÏÎop•Âüô¤š*ÓFzc'ªFR ªŸàvy«Òë·ð(.4øY9$¤Z#Šòô`7"C‘WÃkbn¡ì²w p·gÌy" {2 ªå¨>�SˆŠ_!:L`ð"ƒ¨cøzõMÓµ¸“Ý0‡J-ÄlÆ ÑEÀ�fï©ê4üQIþú{ý�èNêýÀÁa'5Ä�¸Ío4¡ºÊOQ᤮7'5*øùC :¯Fý‘G…“º‚Z†WæÈ9¸RWA'5¯šNjœÐ–7—¿]õ °½ªžeNjÚ3¿“ 0ÔœT#Œ9ªF2Q¼YÃkÊ©xg§oïH-ê[åiÎñ½æüí|“[(WçJÎQ Ÿ5ÃÕd52ªP½§¤y °,ʨ\í�ˆ'ËžÆ_bæa©]~`0üwPßÑÎá9ÄÞÒIþ+"{qùï^Ö§«êP¯‚²ˆäãrø~UÕežöÛ€Tlœ­ŽVÕ‰õiÊ⟀  ÕƒÔCY2ÃO(Eå"OÓ½ªº¨¦óäÈ8ekï²Rœ¯wTÃŽm€p›wY¡kãrU{©êæ 6DÚárS½ŒE5¸!j4`ÌQ5’†�é`\é˜h5+ƒlÀ�~>\‰sš©j¿Ú.‹ò´¤(O¯öÇ�yÉÂ=X?Û¾€Íp5¿Â\XËÅ¿‘n¨®Fõ6\îÕíDW²Üx ‘/9 ~ÍÑrà|*þ®:áN kÊkøÿ/Ý€}=¯½¡÷ÁÒ.I�ˆœŒ§":ÌLàŸêNƽãÏ¢B�r|¨-SD®ö ]¤ªŸÕ‹áé‚+!t~ÑœÆÀˈc�Ør©-Ëq›,5"§@nÅ¥Èx)çë#U]/"û¯jø8õtsP€W°r5n-g1GÕH*B§Çã>ø‚Îj0¡º1.d¤𼪾£ªÓ*Q?­1Ey:W´üÑ(ݽ�Ÿº c6î\8Õ¾QÆ Õ¥¨^�;a}�Šº¦^þ |†È»ˆ -¯Stp—§i�ˆ ¨Éã†èjà�@³7ü×ûÿKªÏi,"£q'AÙ�îqõQ\sLh|˜ÏCŠ©/áj>‡™�srí$µ:¸ŸóY�ÖŽÀkõ!:f€ˆlœçiá�¨Šœ‘œyWºÉËZàØâ|}±6 >Æîû°“ªÎ©®-Fà6,Î ´Þ„ê¬D˜c$/Iµ�0 Uýž| nAø¹§-§÷§ˆÜ'"]ciKQž®*ÊÓsqÊÄ Ý-³·àÞÆ|'=cy#MP�‡êE¸Ög‰1ИˆÈD¶«'K®~ó¼~Hj^ï5þ{bßÑ•[½"Q™55®¾Õ�O¤²$@!ÐOU®Ù.¾ÿÀ9µý=m“qNêTŒê£ú‘a»O$Àš†ÀP Ièû¥À=Õ½0§@áòF/ t--Î×w«šCDò€1Ê�KUõœPćÑPÉÄmÜzu~ïûa€9ªF’¢ª�áT4ƒtNþò´7.ŠEä1‰i~\Qž¾üW¼ÜGÓ­}¡+ÿˆå}�4CõOTOÃ…ý¾e„àÊ"MAä‘X‡B†ê€žNEþu{œÀSMxXâyÝWS’ÐQV=Ø;е 8QUóƒQ¡>oáBý3pÑó€wpÑa¾°Ó Zs‘ºÿB$xjgÔo½ï««�ŸS M€Wpú^ç뛺>&? ævLÖÇ«ê½Õ²ÜH7.ÀE«y¹�.€a„1GÕHf.~Âò›ôPÕ1@.pnW×ÛP$"/Ô¡fdEyº (O�Æ…O­·7öœGeµæ°ÜBiyµaxPýÕãp¡âŸD‘‰ -�ŠÈˆ�èDŒn­ßQ‘s p¼ˆ\]Ùø ã†h ®l„—pøoR9ª"2 øVêe*°�ª¾åšî8uãT|FJho½ä7€¾5 Ÿ4¸“´Sˆ¬C|3"G'À¢´$$æ­µîr�œi ¼ ûçë�UÜw3܆�7äx>®6q´�:#Ý鈫ôòª'Â#ù1GÕHZTuN!r%þPÉíCýkUõ&œ(Ã5øCs3p;È“DäC,"͉Ey:·ø5À�fbvÚ?æÊž±¸—‘æ¨~�êÁÀ¡D–E—Ky0‘‰•@ÑM€w‘yk óUƒá¿ýûŽ–¦ø?Söù""MEäY\xc£@÷[Àžªúk”ëÂ%kÚ=õܳèzà¸�Ò±QTWÇàÂQÃdÏáêUuÇ{šúk´÷~�œi‹Ûäéèúè]œ¯¿oêzÙ÷Œéçiþ ·Aô]uŒ6Ò’B •çõJàß ²ÅHÌQ5’U�œ†?—aûÀ˜åêV»áõÞü®Îá|yJDþ¯6uV½åi1л|=7¯)®8ñm¶ Û_åÊõ¹…’ðS%#P‡êž¸�™ß¢Œh‰‹˜ŽÈåˆ4‰2¦·Ó 8ç ¬°)ÀÓ5(é4ðŠ^´À�ºxsk"Š:ýŠÈPEnŽQÕåQ®k‰ kîNåŸ�‹pù¬7‡TÊ�Xàžó'â/ ÖxSR¯âê5ŸèiSÕ59²îo<¸á: w’úWäU¾{^|�S=ó °ŸªÎ¨†ÙF:âòþZoÄR'ŒM`Žª‘ô¨ê¸]¸0ÛW2n�ªÞƒûp<˜Ò÷�ü˜!"wˆH?iQ»~ÏG¦^ÏÎ%K*œèfË�€áÀ—¹…’S›ù�ˆê+8A®3qåR‚´Ã)÷NEä\D‚§…5¸•ÎÂ9—ár3Í€7BÂC›dÜUàoÛÚ…œ ´õ4M®­mµEDÂ'ÓÁü§å8ux43¤äû:°+þM±àO%bÊ´±GõC"OV¶Æ„ÄWŒÚ±þRL›tTs dœ“<ÍþèSœ¯ *»VDڈȸ²7�=]÷‡Y˜|Æ}V=hý™kŒÂU#U¸ø4ô}TG5ŒªnPÕѸÓ�£p¥$Ö†m\�Ë¿Y*"_‹Èí!ǵ«l‘"rn!~L¸=»3gwо70)·P†Tñÿ3 ‡jªOâ޿Àh Ã-�Ñ8Ñ¥áNMjq+�ˆ‹X;o[ïWÇY%þ»f{^®ŠkcSm åÙ¾ Oà~Å…úF¡…®ËÀ)1TÅ-Z➟ËEä+)‘£Edó*®5ªƒ× Šè‚¿¬’Q3¼¥‹Tõ�JÈ?pNj÷@×û8u߈H„0"Ò§)áÍg]ŠMª&”ÓÐJdU„‹P-�6Ø0ˆE/©‚¸$üI@¦ªv¨áµ­qy:§S½Z§å8•ÏYÀÜilœ J{"…bÆý¶/ n¡鲺ܸ³‹ò*ß‘6Œ\nõ¥À•øs{¼LþƒV]&"ú-$¿ÀÒßÀáUå²õ-S€þ|¦½¶±k¢ªîQJ(d÷I\ýå /gªêê(}áëίŭ•ŠÓWÅ } ¼¤îtШ "� …‰zÎF5š¼± Där*ý¯U5êç_N�ì�Ûè nº¼œZœ¯*™?¸ —÷îý\œ RÕh‘!FCB¤3ð;n³/Ì3¨À #;Q5RU�œ´9ž5¹v™ª>¬ªûáNª†ãòØ*ÛåÍÀ�.íôÅ•éD¤“ú p”ª®-ÊÓwq»†¯F™ó(à—ÜB9&JŸaDGu5ª·âBÚ �h>»ï 2w²QÃ[hð�§i+à‹Pi—Mñ?-ƒÙã}íkjCm‘í�oˆtRË€R§\kÄ'ìõ9®Fv˜ùÀ¸üj£ˆÈ«¸ÍV€BUÍ÷öçÈq¸|óìÀ¥wçë•ÌÙ ¸¸ÿÆíB`°ª¾ Û�4@ä XzæTïK„9FêaŽª‘’ˆHÕØ‡ÐŠíèˆËìú·NB}Áÿ³wßÑqUÇÇ¿clz ½; ,!@À`:¡‰zï�Ÿ ôº &ôº ¡$„$"”Ð!ô ¢wLÇ!,°B'tS\°5¿?F‚·wŸlÙ’ÞÛ2ŸsrNtïÛݱ‘ä7ïÞ;Óù¿O°ÿßw÷>]²EY»™Ž[åz Ø£”Ó'û&z×TD~Ží Ø™øÝ1ŠN9Õ7{þ¶òØêjôôUàU­êùºÒÑ2jÔ%ürÂûz¦xõÛô—=ý¼©Õ¹ÕðìÜzx6÷ìLÜdWrDä*W�ãD·öNÀÎÈß Ü«ªq•™]_ىꞟÏká­�zDD.íüòUÝ©k.S�=°£*á.¡Êy {]v½ßØŠiØ›¸ØSU?ª~•kJ"ÓaÇR¢…¹^Â6MŠ‘s•®Âª�>®_4Æ¥LdVài:+Lw궤›¶CÎtVÅ~“έºƒfçÓ…gîC*.ìXÎë�¯™Ø8˜Ê¬]îÇŽøƒUOäFì!G—/�¥Pý4¥ˆ\�òDÕ¹d‹²ÖR#®_å}ÀÞ¥œŸõqÓÈúªn‹<énî§Ø ìŨ†}†Ã·›X[­]K‚¿^^^zw>]pMN޼¤ÜÞªKôæ�Ðù¹±­cGÆL?l§ªöà}À¶-ÏŽ�¥ëZ5íÑVhWD2ÀH*+ÓŽVÅÏ O–ˆlÜÜõõ€`ö5að ƒ;v4G~y?ß`Ûz×ÂÄõf~8]UoJ$pWŸìxÅ¿‚ÑQ�R]çªx¢ê\J²E™+è²cÌôçÀ¥œß¸^°DoOà$`‘n®zÛxEO \ˆÈ À8íü¤¥MfÅV'£ë4ÃÛ[õÙi]æÆÎÉ®3ýà°ž®€ŠÈÎX»“§âª»:a7À÷PYü§ GõËt‚ª}™‚Lÿa£ÇŽŽ}0:%XðóUõá¾�Ì5{¨9ŠÊ8Ïc?£éåê™'ªÎ¥,[”]±³ƒ³ÅL_ RÊé˜d£r Ed0Ö/ôx`în®z8¸‰iø‡¡¥MnÂVq»\ÐÞªGLíûˆÈÊØ ÐÂÁÔxà@U½lZÞ×5‘ñ³‘QíÀ&^I´Z¦ 3·v|OËí0f¤õ=î�1Ø®Ÿ?¨ê[ý¢k$"#°â~]:€ÕP™RD®Îy¢ê\ Èeì¦ nõè¿X›G Ê5‘™�#€£©î?Úå`ª÷MÍ[·´Un/ÄÎ�.ØÞ:uOÑEd¬JiØ×ñ=¬õÌsSó~®‰\ìŒ^€NÛƒ‘F•)ÈÀÝÀj]c¿‚/îã›o_á �Äì÷À ØÏëã‘ÿ½¤žø»©!²(ð*k ´¡ºJ¹à‰ªs5"[ÁÎâ�AõMzp.pB)ç_\/‰Ì „ݤÆy«¬Ú£V-m2ÛþݰA{«>г�dz¬hÓ1Ó;ªâpе½ða" X§}P½<ù€jO¦ óbç— ¦þ lXÎÿTADù–x×k"·[EF>–Dõ‹”"r ®�œs.¥œj)§¿VÆŠÔDuõb™-Ê2‰ç‹êç¨,ükMZx‘; ov«´·êxà–`xמ„ÓYìèaâ“Ôó€ORÝ�ìlò6عã¨?w¶ijj™‚,ЭІ?·#�_G“TOR]¯‰lBe’ p¬'©®·|EÕ¹”-Ê`àtl…5| 48¸ ”ó`׬¢ê©ÀNÄWûTà:àD&s^­¥M6ÀÎ vù˜·3‰íæ£eMàÀ|ÁÔ÷À¾ªz}�þ ®ùˆ £rWÀÇÀJ4iEçLA–Æ~ÃÂI[–óÞóÔõ1«�ð*•=®ŸÁΦú=Šë_Qu®•r:¾”Óc°– ïÓƒ±U¦û³E‰ëqçÜÔQ-£º °v¦-$À.@ ‘¿`+ qÂ….³›v÷±"r0v&©o«z’ê&Kõy`ß`t>à6¬2uSÉd¶e?LRo~ãIªë'y*“Ô¬�'©®×‘)Ȭ ^k0õ=°u9¯ÿJ>*×tDîÅŽ uùXªsû½s}ÊWZœk¥œ>,\3½6ðJ¶({$•k ªŸ¡z4¶ju‰ÂÄ“�³ŸÅNËušmqÈÎ÷OR]2žÆŽ@dÏ4‚é­LA¦®¥:Iý hñ$Õ%Bd*“T€£=IuýÅWT�k0Ù¢l ´~ð&à€RN?O6*× DdöÙàÖ¯a€aGÁKþQ!ÃÅ IDAT4¿ëí°×?éÀn¸OBut*�ºæ 2ð°`dt<°ªa[³2™ûÝý›`ê`£rÞ·\ºˆÌ„¿[82úªë¤�k¾¢ê\ƒ)åôV`Y¬ Hh;¬�MøDÔ¹^‘_Ïv%©�¬¼æ±á€ý»³PBäbDæO,H×\T?¶¢²Bú`àDŒQmÉdVà>ª“Ôw�µ*×´DfJT${Õ RŠÈ5_Qu®‰”rú ¶ø¯1Ó«/e‹²_²Q¹z""{a«=a’ú¶ŠzIt°½U¿n‹Ž�ÌŽØuK`+²qU¨®F!²u_ÄîšœµÐØkéÒep-"K¥ÔO2Yx˜ê$õ`KOR] N¦2Iý88�P\3òUçšT¶(›a[4Û"€;€ýJ9ßb挈L\3ý(°ƒª~÷Ú–6Ù„Êm—_óµ·ê�o>+pdçÿfé&„g�¨Þ?M纈lˆ}?F�;¼¬‚êWñ/ê_™‚lÜŠ�ÙŽj~[Îû®—0‘e€—€A‘ѳQ=.¥ˆ\òUçšT)§wamln�™Þøwg2ëšœX ™‡ˆORÿ¬ß]’Ú©ø,òõœÀÆ?~¥:Õ“�¡ÀùX¯ËÐÊ@;" ²ÊTýœ‹RýžM]¸Iþ¬~¦ ÛwR�¤ËyÝß“T—’?Q™¤¾œžR,®Iy¢ê\+åôÓRN·öÂÂówf‹ò×lÑ+±6+Yx+È5Ø]USÕ‰“{�öV�Ü ïRu¡êg¨‰m ¾”êâ_ëO#rkç禞êyÀ߃Ñ�¨®ܯ2Ù¸‹‡�(ç5Ÿd,ÎýHdWà×Áèá¨~—F8®yùÖ_çÙ¢ Å -­3]vë<ãêš„ˆˆm÷�.˜zØFU_êé{µ´ÉØÙÖ.ßó¶·N¦r¤È’ÀiÀö€Ä\Ñ\ œŒêÛ=�Å9DcgBW föDõÊþþøLAŽÎ¥ò{»8¨œ×¿ô÷ç;ËŽb¼Ì½Õ�»y…sýÆWT�s”r:XøV0!*<‘-Ê)Ù¢ ªz±k("2DD.Ƕ~…Iê¿€•¦&Iíô$ðßÈ×3[Nöªo º#°poÌ€=€"!2_Ì5ÎÅSlƒ‹jëïí噂œ üžÊ$u"°›'©.e§R™¤ŽI)×ä|EÕ9W%[”aØJUØÇ¬¨Ín�ýY]ƒ‘E°Ö3Ãb¦ÏŽ×ilÓÒ&gÇF†þÙÞª›NEpkgR½ ¹Ë÷À…@1­¢8®‰¬ŒýX Õûò£2ì\wX9u°}9¯wõåç97UD–^ ²ÐØé¨ž�RD®ÉùŠªs®J)§Ï+áÓ¬•�³Eùmâ�¹~%"ëaçQÃ$õ[`;U=nZ“ÔN×_oØÒ&?ëñ«UEuM`sà•˜+fŽÞFäXDÂâ4ÎUS};§5?p+"Cb^1M2„�‹ “Ôo€�=Iu©àb*“Ôw°‡ƒÎ¥ÂUç\¬RNÇ–rz° ®*Ì\œ-Ê?³EßnÙDähl[o˜8¾ WÕ›{ûí­: øwdhvþtê¨Þü +ÈT޹bvà,à-DÂZë8×=Õk€b0:kÓk™‚ nv¦>Ö-çõ‘¾øçzaOªw«†zÿ^—OT�s“UÊé}X››b¦7Fe‹²u²Q¹¾""3‰ÈõÀ9T>Ië§»²ª¾Ö‡®ªVWÿí UEõ:`iદ€�³ºx‘ÝñóÜäGe¿_€Ý±‡8Ó,S�™;ß7<“ý°v9¯Ï÷æý�ë5‘Ù©®x}7ªw¤Žs]üŒªs®Ç²EÙø#0kÌôåÀa¥œ~“lTnZ‰H¸øe0Õœ œ®}ü�DK›,†U î¢Àâí­úߨô”È Ø–Êc±>­q^ŽG5®w°s 2ð °Td´ØÕ¸‚^“•)ÈœÀ=ØêlTh)çõ�iŒÔ¹¾#ò'*ûd�–AutJ9øŠªsn*”rz%°Vx$´7ðr¶(k&•›"²)V+LR¿6WÕÓú:IhoÕw° À?†ìÜë7V‹ê9ÀâXK›¸¶7Ë·!ò4v×¹Jª_[`?]×#²Tü‹âe 2?ö»2LRGky’êj‚ÈŠØ®”¨³=IuµÀUçÜT)åô¿Àº@˜L/<’-ʙ٢Ÿ ¬EbNîÄÎrF�ÂZÏ„ÛûZßlÿ�£:Õ�¡Xàñ1W­<€H{gÅWç~¢ú°0)2:p{çŠëe 2ë¼L0õ4ðër^?î‹P�땟 (Eó�·¨Þì\*)æª €‘ˆÜŒÈÒ}úù®¾©Þ‡=Œ‹Z [Y�ì½S¦ Ë`IêÐ`ê~`ƒr^¿ì³8�ë�}±wQ‡¢:.�`œ y¢êœ›f¥œ¾ ¬œOu›€ç³E94[”0)r ‘_#±Ö.Q“€£Uu'Uý.‰XÚ[õSì¦=ªïVU£TßEul‹óMTŸlŒBä Dí—8\ýQý=pe0º1“YmÊd8¶Ýwþ`êV`³r>™Ÿ1ç¦HdN¬7vÔmôÿŽçzÌ‹)9çúD¶(ëW ÇL·{—rúA¢A9Dd;lUqæ`ê3`GU}0é˜ZÚdw*“€w€¡í­ýü�’È0¬/à†Ý\1ø+pªŸôk,®ö‰ ¡zÕiwT¯Žd ²¶c!ü9»دœ×¸U}çÒ!òW 52ò=ð ´—…íœëC¾¢êœë¥œ>ˆZº.fºkc³C²Q57("gÿ úæù9`XIj§Û€h¾Å€ÕúýSUŸGu#ìœõS1WL‚õ`=½§g]ƒRlMuû£Kù±HR¦ [`-hŸ³ �}‡ÔÒ&7чjoÕƒ Bdsà ¬Wpœ/±íqôÆ÷MÌnì†DF?VÊœÍÀeÀ àU'—ózJB:×3vÆz$0,2ú°,ªa�DçRå+ªÎ¹>WÊéõØ�ÿ1Ó»¯d‹²N¢A5Y[1 “Ô°uŸ´“ÔNaõßZÚ$¼Ùï_ªw¿vâÚ1Ì��I| ‘ß"^ͺ)©Žþ/]à“Yyrú‰ü�Ê$U�Ã=Iu5j*“T€ƒ=IuµÈUç\¿(åô},Q:kµð`¶(çf‹28ñà˜ˆì<�m¥�úXGUÿœxPÝ»[±ì27V‰7Yª¨^d±¦÷Å\5?ÖÆ¡„È®Sªüê��I=7:4ï;ã–Š Ú“€½Ëy½0ÑØœë ‘¹±$Q7¡ÚžF8ÎM‰ÿCëœë7¥œj)§`•�_ ¦8 x6[”î¶]º‘éDäX�¢‚é'°ó¨O&Y÷Ú[ups0Ü?Õ{Bõ,‘ÿ9֚䋘«†W/unvÍ%�=`ùÑÖ/À¾�Ö³wûr^ÿžB\ÎõDÛ%Òå;ìa²s5ÉUç\¿+åôU¬jf覗Œգ³E_¥š"2/¶Íú�˜é‹�uU5n•°„Û·ni“0ÑN–êXT‹XRzv3Z¸‘'߯Þ,2g#«Ïç£ç®Ïß§ÞÆÉå¼ÞšNdÎM�ÈjÀ^Á詨¾ŸB4ÎõˆSrÎ%*[”µ°U¿Åb¦ö,åôÝ$cªg"²*¶*¹@058@µ¶WwZÚdð.°`dxÇöV½1¥�ª‰Ìü;Û5}7Wý �êó‰Åå•)ÈôX1¸íÿ n¹f©<Ôð° ªo¤Ÿs݈Õ-øUdô5`yTH'(ç¦ÌW/œs‰*åô1`y .�Z+´´[¢AÕ)Ù«D&©ïkÖz’ ÐÞªÀ Áð®iÄÒ-Õÿ¡z(°$Ö3®ÕȆÀ³ˆü‘l’á¹þ—)ÈŒÀÀvoÿ Û:¤â²Ù�Û½¥‘«AR™¤äIª«u¾¢êœKM¶(Û抙¾8 ”Ó/cæššˆ þì3ý°“ª~–lTÓ®¥M†aOû»Læko­Ñÿö"K§ÛtsÅ$l×Àɨï¨w™‚ÌÜ ¬L½óÀ9\¿èçŒÿØÕð˜ƒsɳ£!¯Ñ(סš^=çzÈWT�s©)åôfì¬ß½1Ó;£²E‰ëÚ´Ddaà1â“Ôs��ê)IhoÕ籩.ÓÓ¹rU“T_Cu[`8pÌ�½�7¹ ³Ò¦«C™‚̃I“Ô×€5ýL�® æ~œÕÿÑ9×#çP™¤~ƒ2t®æy¢êœKU)§•rº p006˜^¸/[” ³E’|tµE¬hÏóÀÊÁÔwÀŽªzŒªÆmK­×_×þÓ~ÕgQmÖž‰¹b0p0‘S™5Ñø\¯d ²ð8vT!ê9`ír^?èüº\“C¤¶¶°»æ#²°{0zµ[\Ϲ ¾õ×9W3²EY ký±RÌô€ÝJ9}1Ù¨jƒˆ�AÁTØZUÿ�|T}§¥M–¢Eh:€EÚ[LjŸÈ–Ø–à_vsÅÀÙÀE¨†e\ Éd)lµ|¡`ê`ór^¿©Yx–Êóâ〵Q}¶Cu.žÈ àE*�VDub:A97u|EÕ9W3J9}X »ÙW<“-ÊqÍÔÆFDf‘k�ó¨NRïV®÷$ ½UßÄnô» vJ)œi£z;¶ú¶ðvÌsbʈìßy#éjL¦ +bÛëÃ$õ.`ãª$@õC`k,9í2¸‘ùû)Tç&çPªšäIª«'Ms³çœ«¥œN,åô`-à­`z:àLà‘lQO<¸„‰ÈPà)`ç`J�S�ÍUõ«Äë?aOÕÚßþRí@õ*`)à à㘫þ¼†ÈΈHÌ5.™‚¬<„犯¶.çu\õ«:©ŽÄ¶G-Ü‚@s.¶Âr0zª�¥�sÓÌUç\M*åô)¬œþßb¦×^Îeïd£JŽˆl‚�…[.˜úØRUOÒÆ;»q¶å·ËŠ-m²TZÁôŠê¨^ ü8ˆ«`œÁ —Ù,Éð\µLA6î³Äv/ç{°e)~Œ®ŠU7w.)ç³D¾þ8&¥Xœ›f~FÕ9Wó²EÙKXãª§Þ ´–rõUé¶;b«k#°Óðaâ°ó¨oT½°A´´ÉýÀú‘¡SÛ[õ¤´âé3"³9¬¸ÒŒÝ\õ0ÕG‹Ë�)ÈŽXõÞé‚©³Êy1Uo&2Û–¿q0s$ªçOs�Îõ„ȺÀƒÁ表þ1�pœë _QuÎÕ¼RNïÀÎÚÜ3½5ÖÆæ7ÉFÕ÷ĪÂÞ‚�Ñ ?߬ÒÈIj§úßþGõ+TGC�‹°^±¡5€G¹‘�¯‰e ÒŠ}ß…Ijnª“T ³êÎT8‘ §)HçzBd:¬ÇvÔKÀÅ)Dã\¯ùŠªs®®d‹ÒŠš)fúÏÀÑ¥œ~ŸlT½'"Kc«ÃáV×IÀñªZH>ªäµ´ÉìØ¹Î虾áí­ V9Ud1à`7â+ðàÿáDj2ÉáÏVðÛr^Ûzõæ"Kam‹¢=,¿†£úf¯ÞÛ¹8Rõý¬À¨>•RDÎõН¨:çêJ)§mØÙÕ§c¦ ¼˜-JØg´¦‰ÈÖØ m˜¤~lÒ,I*@{«~ü3nŒUÕ(ÕwPÝ;ƒ|[Ììü‘¿!²p¢ñ5�LA΢:IýØ¥×I*€êëØÊjôÜõìÀÞS×õ9‘…€ƒÑË=IuõÌWT�su)[”�ÀñÀ T·m™œœQÊiØæ¦fˆ�e;8KL¢^¶QÕw’Ž+m-m²¶šØåc`ÁöVíèæ%õOd8VÑzýn®�mß;mŒóØiÉd¶=ò€`j,°m9¯÷ô銃µ%ŠºØ¢s›°s½'ò`»ÈÈ—À’þûÂÕ3_QuÎÕ¥RN'•rz*°:ÕgÁaÛ*ŸÈ%“xp= "sb+‡ÇQ�¤^¬ÑŒIj§»€1‘¯çÖM)–d¨ŽDu``d̃�#€ÑˆœŒÈ,1׸)Èdp5ÕIê×ÀF}ž¤¨žÓù™Q›b&œë=;û¼]0:“TWï²ÚÐÞªã°óºQ»¦KâT@u`¬Êshà$,a= ‘!‰ÆWÇ2‚m³û ¬[Î÷k�ÉÿÂsÖyDo[»K–Èô@XÑ÷9 ÷Û×�K™oýuÎ5ŒlQ6.ÃVàBwû•rúI²QU‘]�K€‚©O€íÕ²ÐÒ&b=-»| ÌÛÞªãS )y¶5|7lwÀbÝ\õ>ÖÊèr´}>›T¦ ³w¿¦ÞZÊy}½ßƒYK æ�ŒŽÖFõ¹~ÿ|טDFgDF:€UÑ+@çš’¯¨:çF)§÷Ëb-^B›aml¶L6*#"ƒDäl `˜¤> ¬èIj…°ä½ËlØvÉæ¡Ú�ê•X‘­C¨üûè²¶ròDvÄúðºˆLA~†õ• “Ô7�5IRT?ÄÚiE¶Ì܆HÜÃ5ç&OdQ¬VCÔß*è\%?/]�øsöÎųR[£Ç¢úEá8×-m2víy»b{«¾˜RHõMd&àpìæ7nÛ;À Àñ¨Þ›X\=�)È@¬ŠïžÁÔ·À–å¼>˜|T}ÈŠa=Lek«÷�•Pý$•˜\ºDîÅê'tù+ äŶ\CóU看(åt08— /eÇx–ÿàJ^ƶõ†¿?o†{’Ú?Ú[õsà_Á°¯ªN+ÕïP= �±1W­܃È#ˆ¬žh|ÝÈd0VY;LR¿Ö¯û$¬ìŒ.Ü‚HX,Ê5:;c¾Q0z´'©®øŠªsÎu#[”u€¿‹Lø>¸&To˜ìNÎTÿ…Ú¯ZÚdàšÈÐûÀ"í­þ÷Þk" 'ûR¹ju¶ÂšÊvÃLAfÂúÄ®L}´”óújòQõ#‘ó€#‚ÑËPÝ7�p\ lçÃkضü.� ºN:9—,_Quιn”rú0°ÜWOñÈ/ªNR̀ιç¨êž¤&âvà»È× ±…®ÜTRýÕßÒÕ%ØMÐi3à%D®A$“dx™‚Ì�µ “ÔÑÀš —¤šc¨ÞE°"‡¦ŒKÅ T&©�ƒRŠÅ¹ÄùŠªsÎuC¬‡á)ÀñTVeðü°à0Ýœ\XÊy/»þÖÒ&×RYñ·­½UÃm’®·D–Î6ïæŠ‰Ø9ÑSQý°?CÉd>,a[6˜z[I ‹5‘Ù�‘À‘ÑIÀƨޟNP."Yà*w8œ‹jXTɹ†å+ªÎ9CDæÀ¶:þŽ I�õW°ÈA?&©`‰Ó¨lQÂÕ×÷® ¾Þ®¥MºÛªê¦•ê(T·V‰¹bv޲ŒH‘9c®éµLAÃZ…IêH`í†NRT¿¶¢ç7 òót‚r ¹ˆÊ$õìÁ©sMÃUçœ ˆÈrX?ÃM‚©‰GÍ¿3‡ ˜ŽqÁÜB@{¶(çe‹2$‘@›Ó¿€Ï#_Ï lœR,�Oõ©ÎópÏÇ\1¶Eu4"¿Cdæ¾úèLA~<„ ÙCXá¤/úê³jšhÛ…ÊíØsw 2K:A¹~%²#ÕÛÜ�DõÛ4Âq.-ž¨:ç\„ˆì½œ×CÊyoS€ê8`+àã`ærDVL!"×·.Æ •uyÛRï\Sòö4ι¦%"û`7áyº�mUõé©}ÏlQ¶.~3}3°)§ŸÇ̹©ÐÒ&Ë/E†&ó··êg)…äD掦:Ùìò00Õ§¢ƒ™‚ˆ­š†+¯G•óž×s"«b—Ñß]ï+£úI*1¹ÞÙ ¸*ÝÕ[ÒǹZà+ªÎ¹¦#"Ó‹ÈŸ±m½a’ú°â´$©¥œÞ†µÒøgÌô¶X›�¦å½ÝOÚ[õeà?‘¡AX¡—ÕÏ;{¯ …çT×hióÂU5CµŒê.ØÏÀÝÑ©�Û2àÎåY:xÕ÷Àå¼Þ”T˜uîh¬\Ô¾ˆx’S/D–§ºªoÕrá8WK]¸ºs‹©«-§Ñßóã€CSŠÅ¹šä¿ô�s GDòÀ½À\ÁÔ›À*ªéj)åôn¬�Íí1Ó[ÿÎe³d£ª[aõß�[ÚüƼVd ²0Öö)|hô"°Öð·´ˆm‡?ˆëƒ»p0 ‘­û/Ò z6ÕEƶÀªÊºZ!²"Õ•çÏBõí4Âq®VùUç\Ñ™±ó>ÛÅLß ì®ª_'Õ”e‹²/Öfbæ˜é6àÈRÎÏêu§¥MfÅV§‡D†×hoÕ'S ÉuÊdIì,ø"ÁÔcÀæå|ðóhÛT�ŽºÛ²ú,0Õûû6ÚaçòŠâ;¢zc ¹([Ý~ X%2ú° ªãÓ Ê¹Úä+ªÎ¹† "KÏP�¤*p°e-&©¥œ^ ,Ä%V­ØÙÕU“�ª~´·êà®`Ø·ÿ¦,S�_a S˜¤ÞlT•¤¨~ƒê)ÀPàf.G$\ÕvÉÛ�Ê$àOR�«æ‰ªs®î‰ÈæØ*Ë/‚©¯€ÍUõT­ñí#¥œŽÖ~„½\3ÀãÙ¢œ’-ʠă«áößZÚüï*-™‚¬< ÌLÝlYÎëØÉ¾�êg¨…m ¾„êÖNëO#r+"Ëô:èF¢ú>° 0!2:#p"á—‘¹¨n=s+ª÷¤ŽsµÎUç\Ýs vÎs¶`úßÀÊjFêB)§“J9=«\ ¦'Of‹²dâÁÕ¾bmMºÌ l�R,M-S���Qý3y °K9¯áƒ˜î©¾�j+öêl‡Dh+àD®Ddñi‹º©>Eõ9ÈE€›™.…ˆœ%©ÑÚ ß‡§‹s5ÏUç\]‘Ù±s§'aáœ�UUµœx`} ”Óç��‹¨¾1_x1[”ß&X koÕñÀÍÁ°oÿMX¦ Ûw`«wQç”óÚZÎkGÌ˦LõMTwÂ~.âVŸ»c‚/Bd¾iúœF£z9pa0º&ð§¢in"ñm¿Q§£úná8W¼˜’s®îˆÈ/�[±-±Q“€ãTõœä£êÙ¢l\,3}°O)§áY´¦ÔÒ&ëÑ;ßó´·Na›©ë™‚ì‡õ‚�(ç5ÜîØ;"kgRÝî¦Ë÷X‚VDõ«>ýìz#2û]ÑÌ‚êE)DÔ|¬µÒH* \½,‡ê„ø9ç|EÕ9WWDdàiª“ÔÏ€�)I(åô>¬�M\K�M€QÙ¢·ìèôðQäë™�ÍSŠ¥©d r4¶µ7z_ÑØçI*€êc¨®l ¼sÅŒÀqÀÛˆ‡H¸ÂÛ<¬_ôŽ@¸Ãä|DÖM!¢f´?ÕU˜ñ$Õ¹ÉóUç\][88:fúy`mð-TÙ¢ìŽmž5fúrà°RN¿I6ªÚÒÒ&çSyæëŽöVÝ2­xšA¦ §ÇÃ�=Ëy ‹\õ=k÷±#p*V|)ÎÇÀé@:gd‰ÈÒØC¾èï�Ï�ᨎN'¨& 27¶z:Gdô¨î�RDÎÕ OT�s5OD~†RY/fúïÀªׯ¢ád‹²(p%V!8ô6°G)§�'Uíhi“•±-v]&óµ·ê—)…Ô°2ìÁÉ�ÁÔ8`ûr^ÖAýKd°7ÖŽjÁn®z»sþtÏËÖ3‘Ͱâsѕ﫡úm:A58‘˰ïË.ßKwVfvÎM†oýuÎÕ4†­˜†IêÀÁªºW³$©¥œþXÈQÙz`qà‘lQÎÌ›³ªg{«> ¼šžêÞº®—2\Eu’ú °qâI*€êDT/ÁŽ�­†Çô¼‚ÈVI†WTïÂZ`Eý¸ªseÚõ%‘Õ�½‚ÑS=Iu®g,ÄUYmÁÚØ4S•ÉðïÁ·ÿöB¦ �+S£°$õ�ăšZªï¡º¶í÷Ø bh`"W ²h¢ñ%ÍÎInCåY÷�Û:W¡Ý´;˜-òõ7ÄW¬wÎM†oýuÎÕ9ÛîzØVUŸK>ªú”-ÊNØÙ¨9b¦¯*åôëd£JVK›,ˆ}ïDÈf;W[ÝTÈäç@;Vˆ(êià7å|�VTY8ظ›+&Î@õ“n®©"û`+ÍQ�ë7m+ŸÞYÏi�ªŸMun*ùŠªs.U"2DD.þDu’ú °’'©S§”Óë±ÕÕb¦w^Ée�DƒJXçyÔðfÑWU§R¦ ¿Ä’–0I½Ø n“TÕPÝø5vö=4=pð"§#2[Ì5õOõ2àÁèZXë!75¬ERXäoþwéÜ4ñDÕ9—Y«ê»WÌôï� UõÓDƒj¥œ¾�mù=Û:µð`¶(çvcjT¾ý·2YKöç¦n6+çõ»ä£êª�¢º°9ðJÌ3Ço#’ï,DÔhŽÄ>Dµb;]\Ïеû‰:Õ‰iã\½ó­¿Î¹Tˆµ„¸øY0õ°¯ªÞ�|T�)[”e€«�¸")£€ÝJ9�»A¯k-m2ÖÊhúÈððÎ^«n22Y¸ ˜9˜ú;°o9¯q‰êŸõÝ +„“éæª�€Ó€¿5ÔÖX‘9�‘ÀÏ#£�/Ô" `ÕÆg‰Œ^‰êž)Eä\ÝóUç\âDähà_T'©o«y’Ú·J9}X(`­Z¢–Ff‹rt¶( õoB{«~ Ü ûªêd ²p7ÕIê…ÀÞ ›¤¨*ª×KÆ\5?v¼„È®Hƒüܨ~lAeßÙAÀMˆ„[¿]µßS™¤~ “R,Î5_QuÎ%FDf.âªÏþØUU¿J6ªæ’-ÊZÀ•Àb1Ó{–rún’1õ§–6Ù[¹ïò1°`{«† »2ÙûL�RÎëÉÉG”2Ûæ{0p,0g7W�~‡ê‰ÅÕŸD6ÇVÓ£ ø(`uT¿M'¨g;„š‡ êgS�ë…Æx 蜫y"’Áª„†IªbÛè6÷$µÿ•rú°<¶…3´Vhi·Dƒê_wÑ›ëù€uSŠ¥¦e r(p•Iª‡7e’ ÖoTõ¬˜ÔiT~/uY¸‘'‘(R¦z'pB0º,peçÖh%2ÕÅ’^Äú~;çzÁUç\¿‘M�g©.21ØJUOTõ®¤”r:¦”Ó½€í€ÏƒéÙ€«²E¹![”îV�êF{«ŽÅŠÿDíšF,µ,S�±­½ÑDd°O9¯¦U Qƒê‰ØùÍ �ñ1W­<„È}ˆ K4¾¾¦z&•;¶NN>˜šw$¶U¼‹¡ ¼EÞ¹„øÖ_ç\¿{ú~vs>‰ KRßH:.÷“lQæÇ¶zÆõ’üØ»”Óöd£ê[-m²1•gU¿æmoÕ¸d£©d "ÀyÀáÁÔ`çr^oI>ª:`ËOö z›4X²r3pª¥#ë;¶íùq`ÅȨÛ£zs:AÕ‘…±ËfŠŒ^†ê¾)Eä\CñDÕ9×/Äz^…µ|Ýì©~Þ©fd‹rp¶ÞPà�@¾”Ó°ÍM]hi“AXQœ¹#ÃÛ¶·6w–)È@à`ï`ê;`«r^Ãv%.$’ŶoKõÃ8°Ué+�“Ñ:<ûm‰Ø³À¼‘Ñï€5P}9� jˆÈMØû._K¡úYJ9×P|ë¯s®Ï‰È/°6a’Ú§ªÛz’Z[J9ý°ð\0%XoÀ²EY!ñÀú@{«Nn †›ºúo¦ Óc'a’ú%°�'©=¤ZBu{`e¬’yh öwü" 2O¢ñõ–ê{X"6!2:v&wîø5 ‘ ©LRŽ÷$Õ¹¾ã‰ªs®O‰ÈÏ€§€%ƒ©/€MTõìä£r=QÊéëØ9»Ó±• ¨¥�g²E ÿ»Ö‹kƒ¯7mi“YS‰¤6\lŒ} ¬SÎëÓ)ÄSßTŸGu#¬P×S1W ÞBäT¤Ž¾÷TŸ F®O!šÚ 2=Õ”žÚRˆÆ¹†å‰ªs®O©=M>7~ XIUãV\ )åtb)§'ka}m£®/åêöLñSÀ;�ÿ"ÖJb®Ô¢IßÙÀ§‘¯ßÖ*çõ•tÂiª£º:°%ÖÒ%43vnÿmDŽé<ZûT/ÅŽtù83¥hjÅÕÀØÎÿ߈t®OùÕ‰p6�O;€¹ç8Ž™‡Ü›v®�|òåÛ|?îkfža~6Ûˆ$÷\ì_øn솉}^͘ÿØõ7}övD™gæo˜mÈX~èÈ;_ÌE‡ÖowŠg‹ |òí~˜äÏišÈ³}ÁÄŽ�|ôõL쨱¿“ÿý®¬ßÈè`g®ãTNd(£c¯ù�8•¹”}™È ªùuyˆëع¿Cí±9ø’tð³3)¶†TsÈ$fá:Àêg‘¼Ëoøöî;<ªbÿãø{%ôŽQñgCÅŠ½]z­È… öví½^¯WÅv¼ņ€" ˆ ¨ HéiIæ÷Çl’=›Ý³%›ì†|^ϳœsfæL6È÷ÌÌwÆñ½'WVZzËZÎNu'$5Jþ«(•R¦ÙDf¦–UHò4k�Mî¶ êdgã¾—c*dΟÒËÜ µV'­¹`•…Ü��oó)È^“´¶Sayádæ[RÚ�t±X± òlù5ÿŒZ¾Üå6KuJ¥€ ^ã<ÞæLò·rÍYé)³+x–+ø'sÿâMÎÆådªÆš’¼Ÿédi„~_U£hpµâÈò,=I?iöøTDv…AªTt¹ù°MÚvK; _«ÊÔ.ªò®¤- ¹žØ@ýeöf¯s.³9�ø0½I? TEDDDÊØ6jð ÃiÃ"îáf¶RòA^gæð'2…C9ŒI)襈HúP *"""RN6Q—[¸›¶,ä)®e'Y%Êôb*_Ñ—»¸5=I TEDDDÊÙjš2ˆ'iǯ¼ÌEa“\b[c‘ÊC�ªˆˆˆHŠüA+.æ%:ñ#cB¶¶�G‡õJD$õ¨Šˆˆˆ¤Ø<:pïÒ�ï˜ÈQ¼Â…)Hêh{‘41�nͧte&�IÃmƒDDʉFTEDDDÒÌLº¦º "")¥@UDDDDDDÒŠUI+ TEDDDDD$­(P‘´¢@UDDDDDDÒŠUI+ TEDDDDD$­(P‘´¢@UDDDDDDÒŠUI+ TEDDDDD$­(P‘´¢@UDDDDDDÒŠUI+ TEDDDDD$­(P‘´¢@UDDDDDDÒŠUI+ TEDDDDD$­TIu¤bɬR…V­[û–±Ö²cûvr·laË–-Xkˬ?Íš7§Oß¾ä´lIƒ† ©[·.›7ofݺu¬\¾œ¯¿úŠåË–%Ôv�š5i¾ÇEÇ[ssY½jUBmµjÝšÌ*Å?n‹ÿ�‚‚5jD�zõj7V,^L~^´Þk¯¤´»fÕ*rssÃ^k¾ÇÔ¨YÓ·~Þ®]äææ²eófvíÚ•”>‰ˆˆˆHŧ@UâÒ¸qc&|ñEÌå·ææ2÷矙//�ß}ÇŠåËÙ¸q#uëÖ¥yóæÜ£‡§l»öíõÖ[üãškøäã�“ò5IÙèÒµ+ï¼ÿ>çžv¿ÌŸŸêîì¶Æž5–ž-ýG½wåïbóŽÍ¬ß¶žÙ«f3uéTÞÿå}¶îÚš”>Ô¬Z“Ë»^Î)ûžÂ¡-¥JFøÿ–rwæòÉÂOxã§7xwî»XâûÅpîÕsiP£AÑñ^OìÅ_»þŠ»¿·÷½�+»]Yt|ãÄyiöKtmÞ•�Îû(î6ãq÷¤»yú»§‹ŽG�:Š£Û]êv'ý1‰3GŸöÚ¹�ÎåÑ~�úÖ/°äîÌeóŽÍüºîWf¬˜Á{óßã÷ ¿—ºo’¦n» ®º*¶²yy0w.|û-Œ“'G¯3y² † Õ«ç‚Âx  ×__|'œ|2�<ù$Åù¿rssyüá‡;z4›7o.Q'»V-N:õT†^=uëÖ ++‹§ž}–¡×^ˇï¿Ï—ZfþýøãŒzùå¨åÚµoÏSÏ>[tý”Q/¿ÌˆQ£Ø{Ÿ}Š®_|饌xöÙ°f¨V­[sÏx‚Ôùóæqé°fõêˆõ¶ææòƨQ|úñǼ0r$ûuê¸5®÷<ø ?ÿô‹~OýÓþµk×ú’…²Cmûë/~OÂòyyyIi'š 6„ý¬,ùã¾™2…·ßxƒn¹… /½´èÚž­Zqò€¼ûöÛeÞ?‰]í¬ÚÜØûFúµíǯÁ¦ñ�rTͨÊK§¼Äy�Î+qÍb‹¦ûVͬJ³ZÍJQÝ[tçëK¾æïü�³F”êk‘²c0Óö~¸òNzã$&þ>1Õ]’tqè¡0c† î~ú)Õ½IžêÕáÖ[¡C8ë¬Ä¦*‹HªRæV,_Î?¯»ŽwÞŸ*�õ&5jÖ¤WŸ>ŒÿÈšœ1†GŸ~ššÙÅ£‹.äÂsÎaýºu1ÝíÚµ\xî¹¼ñî»ìÓ®5³³yüßÿæÔþý‹²ïJjåååqßÝwsP·ntêܹèüÑÇ«@µœ\?ñz–lZâ9—]5›ÖõZÓ®a;tà™š{Póƒx댷8öÕcc¾GVfïŸó>ýÚöóœ_°~�|ócç�eõVï¨ö Ûsæ~g2´×PêVs³#2M&/œô k6äÁ)±ÏÎ(K¿oø�+?º2zAàŽÃïðŒRÿt8[vn‰ZïÛeßú^xêÃ,ÜÿÚîe›cÏŽþá¯òÚ�¯yÎešLrêäк^kNhw9urЮՍRƒ±g�¥ó:³h㢸û&ÄÕWØ1ÞsÕ«Ã^{AûönÊmàÿ`êÖ…>pAÝöíåÛ×Xýðæß7cÜ´ä–-á°Ãà²ËÜ×SèôÓaà@xî¹òë«ÈnH�ª”‹Ÿü‘™Ó§{²ÀvéÚ5j úGEç(:ÎÏÏçŸ×]s�ZhÓÆ� <˜w>ø€ÌÌL:î¿?G}4ŸN˜W[Rvòóòx}äHî{øá¢s]:(…=ª\Æ/ÏœÕs"^o×°/œô}öìSt®_Û~ÙæH>[ôYL÷¸ÿ¨ûK©�}û7}vÛóÂÿ²ú˺_¸kÒ]Œ˜5‚Q§Žâˆ6GxÚ›³zãŒ�éþeiÍÖ5<;ãÙè�Á‡ öª#Y"@OÄ{óßcÊÒ)¥nÇÏüµóyó§7#^2a7ö¹‘[»µè\­¬ZÜqø\ø^Ùf8—Ú¸Â-Y¼>ÿ^x/¾Öº5\q<þxyõ2>»v…ÿšV®„Ù³]°}×]ðå—Ð¥KñõáÃ¨Š”RFô""ÉñÛ¯¿zŽgá‹à’Ë.ó¿ýúëÌùᇄîÿÓ�?2ú�7<ç‚§™JzýœÔ«_¿èႤ֯ë~eÀ[JTçu.9…7œ~mû1ø�Ážs÷|}C& ‰¤[±e'¼~Ÿ/ú¼èœÁðÊ)¯Ð¬V³˜ú eo[Þ6nûâ6^žý²çüéO'+3+|%ÙýíÚ7Þß„¬-?÷ÜÔô'™6¡»÷Ì IDATov£¨ÁëRÛ¶u#É"’0ªRn6mÜè9®Zµªoù–{îYbÎ×FŽ,U^ Ú GÏž´ÈɉPZR!ôs’‘‘¡@5�¬ýkm‰©¶ÿ×úÿbªûð1{’�_0ž[>¿%®ûoËÛÆ£Ï`ÍÖ5Eçšd7á†Þ7ÄÕŽ”½áŸ÷׬Z“î-º§¨7’ àŽ;¼çºv…ZµRÒ�¤úýwIÈž{¦¦/"» ªRnö Ù›lE”îÝzôðÏŸ7¯Ô[•ÌŸ;·DÝ9¤TmJríµ÷ÞžãµkײsçÎõFÂùa•wVC,Y{�i{ û7Ù¿èx[Þ6®øðŠ„î¿~Ûz†}:Ìsî’.—P;«vBíIÙøó¯?Y™»Òs®Eí)ê�¤�ôgd@óæ©éK²…&&Ôþª"¥¢@UÊE•*Uè|à�žsKþøÃ·N×nÝ<dzgÎLJ_f…´zI­®ì9^²xqj:"-Þ¸Øsœ•™Eõ*Õ}ë\ÓýÏñ;sßá�MþÿøyýÇ×Y•[¼v¬vV혧 Kù ý¬Ô©V'5‘ô±reÉäIõꥦ/É´»‹”þðCß:ûvèà9þ)ô)l‚~i'ô>•MÕªUé°ß~q×Ûš›õaC¼öi׎‹ôœ3ztRï!¥×º^kÏñ†í|טf˜ ú¶êë9÷Ò¬—JÕ‡¼‚<^�ó*ÿìU¼—ðmŽˆ9™‘”�ÐÏÊŠ-þ3i¤hÔÈe¶%zÆë´W˜Ý¸ÐÆ�°dIäò"•U)SuêÔáêÁƒ¹ðâ‹=çß|õU6nØà[·nÈÖU+WF(ŸË—{ŽÄ�ÔiwÖ¤iSÞÆÔiß|Ãùgž™”>cèÒI ¿é&²²Š“­¬Z¹’±ï¼“”{HòÐìÏqè¨Y¨ÎM;{FÒvæïLJfÚ/á T{ïÙ»ÔmJò4®Ù˜æµ¼S:£}V¤èرä9Ÿ=Ñ+„ºuá�wÜ4æB�>êH‰H¨J©4iÒ„[B# 5¢ENû´oO­�$ ?ù„‡î»/jÛuƒ÷$6oÞ\ª¾Ú’¬§^ýúIiWü]vÅ%¶ªQ³&-rrhݦM‰¤Vk×®å’óÏ×úÔ4Ó F†õò®ýðWÿÙ¡ t~Zó;óKÿ}�¹Â;�¿y­æäÔɉkOP);÷u¿çxᆅÌ_[º<²æý÷ƒŸ†(®S&+Ëm¡*xÕÞ½áâ‹¡vÐù¯¿Nß-wD*ªR*õê×�y‹—M72ò¥—xæÉ'ÉËË‹Z¾fv¶çxÛ¶m õ1ÔÖÜ\ÏqvÈ}¤lœxÊ)1•+((`â„ ¯Û¶Î¨6ªÙ(imWDµ²Ûæ#ÃÄž[qŸ†ûpʾÞO™&“œ:9´®×š“÷=™6õÚx®¿;ï]FÌ‘PߤËÌ„V­ÜÚÍaÃàÿB¶²Ú°{,5}K¶E‹`ÈøðCˆáa¼ˆD§@UJ%77—o§Nõœ«Q£M›5cÏV­ŠÖÖ¨Y“£FñèƒòŸ§žŠ©íM›6yÕÚµ“³õD½�µ¯ÑÖÊîîòóóY¾¬ìG ¦}ó�ç¡@fF�š4!''‡ú �¿à¢‹Ø¿S'þíoI›î-±y¬_ì¿0®Ø²‚kÆ]ÃØùc£–­WÝû3·yGò¾¯·{§ò7¨Ñ BII–“ÛŸÌÉíOŽ©ì®‚]úhŠ{XylÙ¹…[Ptœi2ÃN%½¶Çµì*ØÅ°O†a‰¾¡}hT·zÝ%ã×°¦7kw´iÈ»»q¿�KJFe?;òw”ØŽ¨vVíÓ‡;6îÈØ³ÇÒÿµþI[ÿ*Xn.|ó Œé2ä–Ñò‘¤ÊÏwÛÌ„³q#,[“'ë¯B¯^0a‚ `32àá‡aÆ øê«òí³ÈnD�ª”¹ÿ�C§Î�‹’.U«V�Û Î:Ë·ÞÌéÓ9ïo+:>¸{wŸÒ±ëÚ­›÷>ß}¶Ü¦�ÿœš5o¶\4M›6%#hDuÛ¶mÊdÆÊ+¸æòËy烊ޯ+®¹†1£G³léÒ÷®rèýbo欞ã9—]5›¶ Ú2ð � »ÉsîÞ#ï¥J†VIŒÖ…LãO4¡bh½Ðv“mÅ ïq»ve{?‘ݘU)7ùyy<ó䓞s×â;ªúÍ”)L�ìýåó�GõLß�E‹œɾ7uòd¦~ýu„΄qã<ÇçœwuëÆž¦[�žéÊÖZ>?>æú•Õ‹Ï=ÇÖ QÕ£ûõ£Ã~û¥°GìÚq×zFH‡ôB“ì&¾u^�óªçøâ.—*héÔ¤‡äâ9÷Ú�¯E,?­w”£eÝ–JFf0%Õ_Öý¡´Œ˜5‚™+‹ÌíÓ`.í>K¼H ³g{�÷Þ;þ6ªUóªÖº)Êe©�wa”¹^$a T¥\�}÷]Ϩê¾:Ðïøã}ë <سUMã&MõÖ[1.íÚ·çµÑ£=kE7¬_ϰÁƒ£ÖýðÿãÏ5kŠŽkfgs÷P«VÉL¨¡Zî¹'·Þy§çÜ—Ÿ}Æ¢… cêwe¶iãÆ£ª× šÂI°VÿÀ›?½Ytœ]5›á‡÷­óÜÌçÈÝYüð¡M½6 ëå?ëçÉã¼½&þ>±Ä¨m°©K½û=Ÿ½ÿÙqßóø}Ž÷dA^ºy)Ë6—ýÄU�-à–Ïoñœ»ù°›ÉÊÌJQ�¤B Ù£�‹/†¬8?;^5‚¶°úå—²�ú[µjÉ©¾J(’0ªR®òóòøÏSOyÎ]û�øŽª®Y½š¡ƒy¶ti¾ÇŒýðCn¾ývöÞgŸ°õZ·iðoäãÇ{ö`ݱcC bÍêÕQû»k×.î¾ãϹcû÷çÃO?¥Oß¾d…ùO3»V-Î>ï<>üäO0ý×Ö­ÜÏ=QïYÞªW¯ÎÑýú%ô Þ>(Ù^|þyϨê‘GÍþ�:•Ùý$>wMºË3ªzU·«hšÝ4bùM;6ñïéÿöœ»­ïmtÛ£[„‘]×ã:o}¸çÜ}“ïó­3ñ÷‰žþvÛ£G¶92®ûÞØçFÏñ„âª_�_0ži˧·¬Ó’˺,…=’ câDob¢=öp�g¬23aXÈð1c’Ó·H‡ìš YDb¦Å"RîÆ¼óW DNK7õ®]ûö |ôÁëLúòK.:÷\ž}ñÅ¢©·™UªpÑÀ�\4p Ë–.eÉâŬ_¿žú �Ó²eØéÁ›6m⊋/fÆôé1÷wÜÐå ƒ¸hàÀ¢s-rrxñÕWÉÏÏgé’%,\°€¬¬,öÞgšï±G‰6òóò>d¿/Xó}ËKÃF�x&8�~&}ù%—&°n77l`ÔË/sÅ5×�»nèP.»è¢2¹ŸÄgþÚù¼õó[œ³ÿ9Ô¨RƒzßÀ?&ü#b�Û¿¸�ãö>ŽÎMÝžÈÕ«TgÂ8fÔ1ÌX1#¦û^Þõr;ö1Ϲ'¦=Áç‹>�PÃùcÓ¼7ÿ=tPtî_ÿ÷/¾[þ[vn‰zß3:žÁ¡--q_‰îÎ/ïdÜyÅË(nìs##f�(±«ˆÇ–-n«—à·Ý³f¹ýIýT­ ÷ßï�.¼s'<ýtÙôµJ8B³ÔOœèöZ‘„hDUÊ]ØQÕ!C<{�†3ã»ï8ýÄùòó’¿�æ´lI¯>}8áä“9´OŸ°AêW_|Áé'žW�Zèž;ïäî;î ?Ï»ÅEff&­Û´áÈ£�¦Oß¾aƒÔ�6pñùç—Xï*Ñ�xî9þÚºµèøð#�¤ó�¦°G쮯¼£ªW|ÍkEÞoxGþÎy÷O`X¿z}¦^:•»�¸›ºÕ"¯ÿnU·£ÏÍOø¯g/Ó™+grý§±maô¯¯þåÉ Ü«e/æ\9‡¾­"'h«Yµ&Ïô†·ÏxÛsþµ_ó�jœ*µ²jQ¯z½„^eµGìÇ >æ»åÅÛ€µ¨Ý‚Ë»^îSC$àÞ{½�^N|ó Ü~;4 ³ÅTf¦ÛfÚ4o€ pç�°re|÷¯]?<ü«¸â ¸ç—é÷?ÿñîÙº}»ÛWUD¦UI‰1£GsÕ AESrÛî½7ýO:‰Þ{Ï·ÞâE‹¸ì éÕ»7ç_t½ûô¡FÍšËoÛ¶�©“'óêË/3yÒ¤Rõù•#øì“O¸üÊ+9ñÔS£®S]¹bo¼ú*¯½ò ›ƒ§/IÌ GUÿ~õÕEç®:´ÌFq%>óÖÎãíŸß.ZïY½Junìs#ƒ>±ÎÜ?çÒ÷¥¾Œ;oÍj¹}«fTåæ>73¬×0&þ>‘Ù«f³|ËrªeV£E�ÚòPzäô(H}¹øKNyó”ˆ[Ò„úaõ ™0„_<¹u½Ö|~áçüüçÏÌûssÿœËºmëhß°=wä€fа†÷âykçqŇWÄtÏò6þüÄ“µ5z°ë¶•MFÔ;¿º“�Îý¨èø†Þ7ðüÌçÙ–W†{ZJÅ·nœu|ò dg»sUª¸)¶wÜkÖÀ¼y°v­[Ú®]øu¬cÆÀ}þËÂjß>±©»Û·Ã©§ÂÏ?Ç_WDŠ(P•¸¬Z¹’}ZÆŸ-3T^^‡÷ì™pý©“'3uòd²²²8¸{wZääаQ#êÖ­ËæÍ›Y·v-+–/gÆwß±=tÓðRX¶t)·ÝtwÜr íöÝ—ýöߟ R¯^=òòóÙ´aþù'³¿ÿÞ“4*~œ3')ïýæÍ›“ÒN4çŸyfRÚyøþûyøþû“Ò–$ß]“îâÌýÎ$ø—w½œ&?Àò-Ë#Ö™µj=Gôdä©#é³gŸ¢óY™Y¿Ïñ¿�‚µ|›Ïs3ŸcðøÁìÌßWŸ™þ yy5Âk’Ý„Ž�;ïÈÛÁ7˾‰«�ÖõZsB»8 é4ÉnB“ì&ì*ØÅš­kX�»š)K§ðño³aû†è�Å!§N‡µ:Œž9=É©“Cƒ ¨Qµ¶m`ݶuÌY=‡¯ÿøši˧‘W�½ÁuoÑ�šU‹—-LY2…]»ân§S“N4¬f­^&/™ökl^«9íK6-á÷ ¿'t�ÃZæy00{Õl6nß¾ðªàÙÙá¯UÇ2ž�9.ÕÝH?Í›CϞв%4hà¶ Ù°ÁMþñG—liWü?O•MO¾á[‰^0µÞ²–ø÷“Ý‚FTED*©Ù«’¬Ùº†5[×D/ècñÆÅ<ý]eäô±ló2^ÿñu^ÿñõr½opr¡Ò(ÍÈr¬Væ®denœIh"˜ôGérˆ.)RYo5#")§¬¿""""""’V¨ŠˆˆˆˆˆHZQ *""""""iE�ªˆˆˆˆˆˆ¤ª""""""’V¨ŠˆˆˆˆˆHZQ *""""""iE�ªˆˆˆˆˆˆ¤ª""""""’V¨ŠˆˆˆˆˆHZQ *""""""iE�ªˆˆˆˆˆˆ¤ª""""""’V¨ŠˆˆˆˆˆHZQ *""""""iE�ªˆˆˆˆˆˆ¤ª""""""’V¨ŠˆˆˆˆˆHZQ *""""""iE�ªˆˆˆˆˆˆ¤ª""""""’V¨ŠˆˆˆˆˆHZQ *""""""iE�ªˆˆˆˆˆˆ¤ª""""""’V¨ŠˆˆˆˆˆHZQ *""""""iE�ªˆˆˆˆˆˆ¤ª""""""’V¨ŠˆˆˆˆˆHZ1ÖÚT÷¡Ò2†û�ëSÝ‘4ô–µœ�êNHjhDUDDDDDDÒŠUI+ TEDDDDD$­(P‘´¢@UDDDDDDÒŠUI+ TEDDDDD$­(P‘´¢@UDDDDDDÒŠUI+ TEDDDDD$­(P‘´¢@UDDDDDDÒŠUI+ TEDDDDD$­(P‘´¢@UDDDDDDÒŠUI+ TEDDDDD$­(P‘´¢@UDDDDDDÒŠUI+URÝ)kïƒ#\;¸¿û""ÅÖÝ#\Û˜TŽ}I/ TE$…~îó¹~7°w„k“�§ã¼_5 .PØèìgQ.ðG„këʳ#ÂóÀg®5ž‰±�€‰>׳p öˆ½k’yDþÙÌ,ÏŽˆˆ¤ª"’B+�·|®ÿƒÈ�êâ(ucÕ¸¸ ÈNB{Ét3‘É{q��T,ßùsÛ‚ØÕÇ€!>׳€Ñ(H‘ŠL�ªˆTrópñ¸Ñ®£RÛ�׈<Úr# T+£‡€á>׫ïý˧;"""eDÉ”DD7B{ð¿÷C$’ûðR«ãÖ#+H‘ŠO�ªˆH‘<à,à×TwD$Ä¿€›|®×ÞŽ-Ÿîˆˆˆ”1Mý‘ÝÔ�¸i�…¶ �­Qê톔Q¿Dâup—Ïõš¸ÏëåÓ‘r @UDvSïmÜÿ†ËÉGÀ* YôK$7áŸ;÷yí[>Ý)' TE¤’9øè Ì�PÆã�‹Ç¿S"”íHä}C},Špí(`W L¡\Ÿ¶ÞF¸v8Ð:Æ>…šŒ¦á9 9Ð8·­O¢–á¶fùX¬6µp_Kk\ß�"¾þ/´ÎÞ@ï ã_ð~}྾޸=e;Åqß²6 xØçzm`Þ¯/¹¸÷íK`îû±·Öµ)î{Ð8hG»?Ú §+Åï±Å}^ÇM·_Ž›q,ðxP�O×Â9.ÐWpS÷'à2ÿ¬ÀmGÕ6ð5œ�{Ïõ=ðî!×JÜ{µh‚{¨Õ7ªÝ÷s#""¥b­Õ+E/°÷ƒµzéUy_[Àçõ­OÝQQê.ˆrïhõo*»ÔB•åö�ñk-°Ð2BÕ,¬·ðF”>Åúz3ޝu` ÌZ çDi7ÃÂÕòâü>ϰpz ~,ý7N´0%ÆößôiëÂ@™uÎ�áë»Â®8¿¾x^}îß"¨Üà(}­caj‚}Xmáz õbü~dÞÇE1¶§O[÷Ê,´p`„2G‡´w´O{“e&YØ'Ê×ÑÄÂq¾W^³Ð%Æ÷ �-Œ�±ýå>íì•à÷W/½v«×›©þ}]¯Ô½”LID*©¢\_ô÷àÔåæ“b¸ß7ÀÒ×NêÇÐFY™‡åz#J¹àßÀßbl×àFšÞ Ô�µÞ¸‘Â[â¨ɯ@gàÕ(å €g�óJy¿Òºïˆb¨ºÀ'¸‘»x}†{/6ÆX'x·î{\÷ 5 8˜áz¼ßïÇq#¿¿E)·÷³öQŒí®NÄ}"�‡3'pŸ¿ãfIˆˆH"¨ŠH%µ%Êõ¬�ãA>eŸ‹á~oû\»4†úeenºâÊ8ê¼xEsp.ÐI„îÁMÙLÔ"àÿˆow'Xwn­b¼¢}}ea%nD7’¸ õàÚþ¸ÿ ©î3ÞÚ§L.Ðû1�>€[" ""qIõ"ÙÊüBÉ”ôªô¯²L¦4ˆ ×Ê@{÷Z—ˆÆ¯nu [ÃÜs›…Fêtôéë5ê럠¦•OÇñ>G{¯°pƒu‰c‚ë½èc¤:£"Üo�O� ##Ôc!˧îeêù%S*| ³�Rï]ëŸàé¥8ÞãX_~É”"½[˜SŠ{Žói»®u‰�ÂÕË·p°OÝ/"ÔóK¦TøªcáU [Bêþdáõ�s~É”°îgò«�:;- ð©S-P&´ï»,´ö©w¿ÏûüŒO½ó"ÔQ2%½ôŠòR2¥JüÒˆªˆì¦ºàÖó¾šã¶¦¹ ·%ŠŸ«€šaÎW.�Pg.á·°)À�V…ñæ( IDATs$‰o#“Lgáöê Ñ<7ÒI¤U¿ÑªS€ "\;ÿõ¨ñ$d vnÄ+ô¿¼øo-ôk÷* ûâFå·žø6`¯×2pk„i×O3ÜÈíy¸éÆÁöÃmƒ�W€ÃBÎUÅ�ÂG²XæüÜvGát†û´ùw"ÿ<�Áͼ‘X)Pñh Üêsý*"oAnMæ×DNTtIý*K~¿|ês-\ÖØŸð_ó:8J_ü®oÀ8ñJôëÛ”À½ÊÂ×À À_ Ôµ¸ Á‘œ¥þ�>×>�¿;€[³Ù6Áº¡:ÇG¸ÖÿlÚ᾿|Ê÷Çzznzy8Ûpû¯ŠˆH¬"ý¶%"R 5Ã%«©çS¦n$.ܨáhà‰�ú‘FëyË›òÔÿu�µ}®… œ~ò)oˆž­¶n4;RPöñ%j�ÿ¨iŸk[ã¸OYû(}ˆÿÚåP+ðnµêŒRôi1nv‚ß{ªpY)î*ÚÏPm"g÷ý�´e¸ÄM~A?À2Ÿks€£¢Ô‘B TED÷ ûS@ÓÊ"|º Eq¢™|"Oû=7•8ÕöŒr=Þ>®ó¹Ö”’Ûþ„ÓX˜@ûá´Šr=¾±ú7z8ŽØƒÕhï×¥éP ýxÕNÄöˆU²¿¿~ï×R"ï…‹µ¥¨+"RùhꯈTb{âö­œ… ̵ �6êmÆ}&GâÖ‡ón×Ëp™‰¯þˆÒŸŠª60Ôçú¸ŸùU®[\àÿ Ðè…µNשú""éKkTEDJ¥nºëÌÊ^H|Ï»D¹¾ ð v,ÉY[ûâFŸŒp};Å{ÍVÁM#�f .[reõ8n´úQŸ2ßGñN¯¨7€ðÓRÜgóÜÃ�=qÖãÒyDbwGCpû!‡ÛË·÷àà #îáSÜ–5Àü×X‹ˆH¬¨Šˆ”Ú Ü/ú~ .qM<Îîæ'Ò©{·Žö³(åb RÁ•Ý#¸û”™Mq°Ú(èü)¸ÏÒ�>uW^•]mÜÔúž„¡73`&±= ‘DhꯈH©�…ÿ¶‡{ÅÙn\PRŸ)Vþœ_ÊvNÁ%±‰w?×ÝÕCÀõQÊü€K šuúÜ”ñh{çŠËþ;7}WDDRA�ªˆH©nUã'ѽSûã’ �’`ýTÊÆM¡|ƒø÷Ÿl ŒÆâŸE¸2ºÿ‘QpŸ™#pÓQƒ]‰[Ïz‰=É ´ûÊvŸâtЗøë. Y‚mì…Ûo9Rp‰¤">¦‘ÝÆÞÀí>×s|®uŽR·AB=JÜ•ÀÀ®0×ê9;p,öÅl«€E¸äCKpÓC…ÛgÔï½êåÞÝKQ·ÐÙ¸Qç ¸)©“qëÿ6àÖ>fõqÉ£z㦮öÇE±Øß§�F©{p)ê&â$\¶èpêÄÑν¸ïu´¤F_g†œë¼�[›ú0¼þIñúJÔÂežntÂM…íC?ûù=í¥n8àÖ‚‡mØËp{'RÜC¨[€áÀÀ$`*îgp#ÅS׫áö¬m�ûyíès´Yµ‰ü^•÷¿a""éÅX«Lt©b ÷}—ˆT�€ŸÂœ¿7%%mjâ#I½|\²+}Ob³·eRÕTwDdwõ–µœ�êNHjhDUD$)>&|� .c­„—�êˆG&úžÄCHYÑU‘RÛ†ÛŽ%œ£ˆ}Ьˆˆˆˆ€FTEDð0nmÚN`5ð>°,BÙ[Ë«S""""» ª""q»ØC¹#�Ãʸ/""""»Mý)mqÛ²ˆˆˆˆH¼¨Šˆ$][\r¥Æ©îˆˆˆˆH…¤@UD$)êãöN|˜OøýLEDDD$Z£*"·_€à=¨ëâUIª""qk•ꈈˆˆìÖ4õWDDDDDDÒŠUI+ TEDDDDD$­(P‘´¢@UDDDDDDÒŠUI+ TEDDDDD$­(P‘´¢@UDDDDDDÒŠUI+ TEDDDDD$­(P‘´¢@UDDDDDDÒŠUI+ TEDDDDD$­(P‘´¢@UDDDDDDÒŠUI+URÝ�Jn,°8Õ�IC RÝIc­MuDDDDDDDŠhꯈˆˆˆˆˆ¤ª""""""’V¨ŠˆˆˆˆˆHZQ *""""""iE�ªˆˆˆˆˆˆ¤ª""""""’V¨ŠˆˆˆˆˆHZQ *""""""iE�ªˆˆˆˆˆˆ¤ª""""""’V¨ŠˆˆˆˆˆHZQ *""""""iE�ªˆˆˆˆˆˆ¤ª""""""’V¨ŠˆˆˆˆˆHZQ *""""""iE�ªˆˆˆˆˆˆ¤ª""""""’V¨ŠˆˆˆˆˆHZQ *""""""iE�ªˆˆˆˆˆˆ¤ª""""""’V¨ŠˆˆˆˆˆHZQ *""""""iE�ªˆˆˆˆˆˆ¤ª""""""’Vª¤º""²{0Æìtêskí’TõG’Ãs°gàð/kíÛ©ì�ˆˆTÆZ›ê>ˆH%gŒi T:µÐZ»+Î6ö²BN/¶Ön/]ï$VƘ£�O‚N�f­“ªþHrcÞN®²Ö6OeDD¤rЈªˆ¤ƒ1@— ã½€E±V6ÆÜÜrúßÀµ¥ïšˆHÙ0ÆdµƒN­±Ö¤ª?""éDkTE¤B3Æ<@É õ^kí5VSFD$½ýXôÒhµˆH€FTE¤B2ÆdàFM¯¹4ÜZûP º$""""I¢@UD*cLààÜ ÓÀUÖÚÿ¦¦W"»­«�ÏKeGDD¤òP *"Š1¦:ð6pbÐé<àoÖÚ7RÓ+‘Ý—µvyªû ""•�U)7�Q0}æ"˳Öj´Â‡1¦ð>ðA§·gXk?LM¯DDDD$Ù4Hyº¸=Õ�Hcww¤ºéÊÓøètz p’µöËÛ¬tÆ%0i¬–³’ýÐÀÓhìì¦[kÆX· pn/˺ÀZ`N²ö(5Æ4:Í€ZÀ`‘µvn2Ú//�ÑöN@ Ü÷s ð…µv«O�l eàÕ÷½Yü¤‘Ää3ÆÔö§x_Ö•ÀwÖÚÜ$Þ£îçº%îó¼˜m­]—¬{ˆˆHÙS *"iÏÓ ·?g§ Óë�c­µÓhïà /Þý[ m2ÆŒî°ÖþC{ÿ :u‹µöUcL&n‹œ�À~!Õžþ¨Þ‡ý­µ?é€Ë“ Ô3 ¸-‘ÑdcLÕ@¿.º& ¼1f0xÀZ»9Þ{$›1æ^¼ë’÷±Öî ìÃ{p&.�Öø.¨�L 'Ð?ðêDƘß�ç�g¢}ýƘó€{‚Nïè¶ïtúŸÖÚw¢Üg*îaÀçÖÚKüÊ'ƒ1æ9à˜ÀákmwŸ²o‡—ZkûηÃ=¨< ¨Rm§1æÀMÖÚ1ôçTà± SçZk§cã~ŽÎê‡TË3Æ| Üj­�Ã=:ã‚NÝd­}=Z½@Ý+�ëƒNüÐÃÓ ø*púyýÖ“¡é§¬µ�ÄÒ‘Ý�UIk�_ê&{�^ m­ý9ζšoâT?u�‹€³�1W[k_ŒR¾n´´PmcL ÜZÚ^1t­NHý¬À/öïâFŸ"é|`Œ¹ËZ{[ ÷ÀÓ xh¥h.¼Ô3ÀZ;5Ö{”‘†xß'cŒ¼HÉ_ø#ù8.Ʋ{÷WcNµÖÎð)û}HߎüF¤Z‡œëD T�1mpAv¡ù>í'SŠ¿¶Ð 3T³ ²Às6.௡NpÐÏs¢µvR”{dã}¯kczà~^ZD¨S÷}?Æs›µ6tK«p}òüLG)¬nHÝÐßµª†\–ãÓn½8ú "RáiUI[Ƙ}�ÉxƒÔE@Ÿ‚ÔvÀ·” R·³qÌ\ x4£:0Â38ήgcñ©øXr�pšàF�ƒƒÔåÀàÏ0åo5ÆœKÇŒ1Ç_P2H]|ƒEZr­)0ÑsD,÷(G=q‚ƒÔ¿€_€ ê„ZyÀÀ$ÜúçÙÀ¦�29À—Ƙ‘:b­�‡{€RèÈ(}w=Þ:ŸE)ŸrƘþÀk©y¸Ÿ³éÀ¶�âu€±Æ˜&qÞ¦îç·0H-æà~‡”Íî1Æü3Î{$S>î3¶ ·Æ>Øæ k¡¯Ð²""»5ª"’–Œ1]pÁCðÃ<\�ÓÚΠ¶²qSsƒG1æGXkkYk»XkO²Öî‡û…úN¼ÁäCƘCã¸å0ÜtZp�ß¡@km[kmKܨÓ+>õŸôu0hh­Í±Öö¶Ö6Á­' �¾øh`ZkD�`ým܈T¡O€}­µ ­µ½¬µý­µm€Æ¸ °P àucLS¿{”³×p£S;�áÀ¾@mkí¾ÖÚ¸i¿áÖñ®Ç­û­n­mm­ík­=9ðY¨‡ÝœT'ˆ6õ38p<<°¶8’pAiËÀ÷(–:Bú—ŽàÞ³ ܦ£�ZÖÚýÓ‡kã¦ko ©o.ƒÇpŸW‹Ë…P×Z{€µv@à³Üx/¤Îý�™åÎZ»ÈZ[/ð9»'ärÇÂka^¡eEDvk TE$Šõktn&pX‚ nÂ1…FXk¿-h­Ýn­½8Šâ`µ ðT÷+Ù¹8ÁZ;58YŒµvm”i´-�@wkícÖÚõ!}œ‡{�¾¹g¿H c .hž~9ØZÛÏZûKhù@ÏÁ€…š’^ ¿ZàÑ^ÖÚ‡¬µ¿Xk /Zk¿³Ö® ©sÐÂZûkíkmØÑmkí8à`\ _è@cÌQ>ý TkSü°Â#0-¼ðó˜L ºvT5ðý Ñþ"økMSu¯q?o­µ; /Zkó­µ£q3‚¿ç"Ū° ·VõžÐÄL�ÏÀiÀ“A§3qëÄED$M)P‘tô2Þéœ_ãF?ׯÛ�1¦9piЩÀUÖÚ]~õ™„ÿtª‹1æð8ný?kíÖZG�`ÿ´ÖÎñéßÜúÉ`~Ss�º¿g­}"†~<Œ›¦YèÂ@ætqM,Éq Yk§KQÊçã�F|¶O•Щ¸‘‚ÚàïÓLÜÚÊhuöÇM �t¯tµ ¸ÔZ»%R�@Ò©·ƒNÕÃûY�ÅËÖÚ7#] |/ÿütú@cLï8ï#""åD�ªˆ¤£à)¬Û�sJ‘uö2ÜšÑBƒü¶+ q nM]¡c¬g)ÝVLS­µoÄPn nMf¡ƒ|Ê^ô÷<àòX:´o :UƒÈÁTy›n­ý ,o`­ý·v·Ð!>e—¿�Š´æ4øügxƒÎÿ3Æ„û¿¹Â­O ¸ÛZ»&†r¯†w‰ãx4j!¬>rúoqÜGDDÊ‘UIwÕq™mC·›ˆÕÑA߉›RkíÜl¡XשΰÖþë}Âø$z‘¢_¼—� »~4°Mp©Y�,V¡[ų^·,�(§û/;¦áF@ö4ÆÔ S&4P��Kfn[•p‚ë,7];M��±Üâ�ãfqÜc¢µ6Ö È¯ÁSƒÓå³,""!¨ŠH:ºïšµ.¸¬³q«�unÁ{>~g­�7sfð#­c¬ó{œ÷õ[ô"E‚“EÚ¢¥+0EÛþÃÃZ» —u¸Pëxê—¡R½ÏƘƘ�Ƙ'Œ1c&c¾7ÆÌ~á¶**”�ÿV8Á�jpXÈ=ÛQœ l;0%ðÀ!øÊQ!uªà}Ððy,__°@¬‰Ï–†ǺÝ@ÌÀ­µÛð~nö $[‘4£}TEÄÃó.“j4­µ–Q7^Çe Iñ4àƒ€O�1GF:cÑï´ß.ƘÅqö%x=f¬�r¼÷O<:éû¶gÈñÅÆ˜Óãë’'±U¢£Ûɶ8‘JƘýpko�!±¶u��®}� Ð G]�Ä;ª<2:%èÁÉg¸„?…eî*× ï>žeÚïª@`•µvKÈ@u,ÿ r£Ytü=·öwQœmˆˆHS *"¡®ÁM·�f;.›g™°Ö¾˜bù ÅÁjW\°z”µ6R ¬^Èq6Þ­Yâ•eŒ©-n¯ÔÒˆ)ÙOBG§à Àã•.#Pq¿ÏƘ3(ÞÖ&Q·²Ö®3Æü8ºž7øø³ïmŒ©”ô)´�Ѝ&ûsI¸-ˆü„¶¡ÿNˆˆHP *"iËZûZ`”e$Å#_…ÁêÑ1«¡[\ìÀØ¥êV eÂny’B¡ïÃV¼I¢â1ƒk9‹ë}6Ƽ�7Ðü—”ê `-n­è†à)âÆ˜áÀqÜê3ŠÕŒ1�¬µkI’*7±ð/ÖÚ_�1ËpÓ‚«ãÖNNñ …ýÕZ[Ú!»›hŽBí 9öÝXDDRC�ªˆ„�wºl$¥I³@°Z8²Z¬ |V7ùT_rü¶µ¶2fù }†[kŸIIORë>¼AÉ�ÖÚû#Obp�êÐÀß ÷?}·Öºp${#nkšÐzþ~ðy SÏ�2âÕ2Îò¡Sác™�ýn%"’úÇTD<Ò1�³Ö¾Y V»Q<²)X Íl{pu1ÝUú÷!�ˆ+x 혃T€¶qÞnn”¯pzñ‘¸@5xdôË@¥`ŸS¨–í�÷Á‘Õ’BÏhBÛpû3‡ŽÖDz¢Ð^ñuGDDÂQÖ_©¬µ¯â²¯ÿrß 7²6Ch`ïÕ_ƒNµ7ÆÔ*³N¦¯™x§,Wº@èˆ÷áì×qÔÝ;žöé�tª0@T'RRpÚÕS/¤Nhv`qb~�˜~Ý&èÔ¢KB÷mÞ#Žþ´�£lèR¿­�DD*ª"RaXkGQ2XíL0ÆÔ‰P-x+� ଲé]ú²Ö®ÇíÕY¨£1¦s¤ò»©ÐäQ1eV6Æt:$p¿à s/cL{Üèh¸ëXk—…û£fâÖ³ª³ßKñêoŒ‰uzö)@àãiÊ­ 9nKãÆ˜ÚÀþ1ö%Ü}âÙ–GDd·¦@UD*”@°z1Þ`µnd5\°úbÈñCqüR»; ~2��1•)‰Ì!DZŽz=Lb£\¡�è-ïe»ÜZ;?†zgàÖµFjSœjÀµ1–ýgÈñëá Yksñ~fŽ1ÆÔˆ¡ý›�HÍ MŒÕ8l)‘JH�ªˆT8ÖÚ‘„VKŒ¬Zk§‚NÕFF>bfŒé\ÁÜ€UAÇ]�{â V�1Ç$µWåg>Þì°çc|“†c®Å›¥7ßâ²+:7èï~gðµ³ñþ?­@5²«£ßcâMLõ0Χʔ ¿7.‹ÒþÁÀà(ý ¨VÔŸ/‘¤S *"R X½o°z0>Lz9Þ„BÇ¿cÎŇ1¦�1æ"ç¸,ÇñfM�íV.À›$æz`†1¦—_]cLkcÌcÌàã2ìf™±ÖîÄ�…:/cJì'kŒ©iŒyx2pj[÷Û…wl¬ç¦ƒëì$¾uµ•ÉÜ^¨_cú‡+`Œ¹x>äôuÖZ¿-Ž^9~Èsu˜¶«cn¦âFwscî¹[CœÌéZcÌ cLcL< œDDv;Êú+"–µö•@6à)þ¥¾'ndµŸµvK ÜcÌàÜ/´Í�׌1�óp#nË€Ú@Sà \žÝæ�žµv¢1æ*àŠ·i9˜bŒYBñû°·VnO\â¥ÖAÍ„fª­H®fPœE÷àXcÌÇÀo@6n¤ù Š× ÎÞÅMÝ�×gÀÿ³wæavÕÿ�$„�@H! ì»ÙÙQ•§>7PDVY”}ß}"»Èö,ì{d?ï�SíÔ­éÛ·{æÎÜ;™óû¾úfºn-çVW÷íÓçÔ©OÔÉÏEUß‘ƒ1w«êû]�¡?ð?ÀO°ówµˆ<üxs�žHç-†ÎPÕ+ŠUÕÛÂÜØ!d N‘ocëK×ÄÖ¤fnÝ×?,#¸ª¾/"?~²N ‰pËø‰ª–j×qgAÀUÇqú4AYà j•ÕëE䑲ú�àšw µëþF‡´E£®¨u퓨êÃüÔ>¼/ÒÇ41»§dëiTõ?"ò}j×�ޤÖ-7æI``·.v™§�>‚&5ª—*ªîö[Ÿ‡00‹æø�êqpPɶ¿Œd[=ÊGíË›Œ‡�]�}J¶�q vÿéê_»®?„¹¿ <Ü¡ª]v]‘%°í‚VÆ–¼Œmst“»e;Žã4WTÇqÇé34RTÇqœƒ&Hˆã8Žã8Žã8޳`àŠªã8Žã8Žã8ŽÓV¸¢ê8Žã8Žã8Žã´®¨:Žã8Žã8Žã8m…oOã8Žã8}ÙX´‰MÎRÕ ›Øžã8ŽãTÆUÇqÇéÛOã½p«ðàŠªã8ŽÓR\QuÇq§/q;°[tüp‹äpÇqzWTÇq§os,0¼‰íÍlb[MGU§S[-‡ã8ŽÓ³ˆª¶ZÇqÇqÇqÇù/õ×qÇqÇqÇi+\QuÇqÇqÇqÚ WTÇqÇqÇqœ¶ÂUÇqÇqÇq§­pEÕqÇqÇqÇi+\QuÇqÇqÇqÚ WTÇqÇqÇqœ¶ÂUÇqÇqÇq§­ÔjÇqÇYp‘AÀ>QÖãªú¯VÉãTGD¶– ‡3Tõ’VÊã8Nÿ@TµÕ28ŽÓÏ‘qÀ�Åfïï¨êœž–Éqœæ "‹Ó£¬“UõÐVÉãTGD®v ‡ÓTul+åq§àUÇqÚ�K�õK–�+"�wVÕ»{N,§/!"�ÑQÖ»ªú~«äé*"²$¿Ï³Tõ­VÊã8Žã8­Àר:ŽÓ׬  üSDn‘[,“Ó¬¼¥¯¶Vœ.s'ßáo-–ÅqÇqZ‚+ªŽãôu¶ÆÖUZ-ˆã8Žã8ŽÓÜõ×qœvd`J’·°0ø6°|ôÙà¯"²¾úÂ{ÇqÇqœ>�[TÇiG^WÕ—“ô”ªÞ¬ª'«g&uÖvë}QÇqÇqœf㊪ã8}U� |x<ùèS-ÇqÇqÇi2îúëô:òY�y,Òj9Ú–Q<®‡ê¬V‹Ñî¨êL98!ÊÞ´+m‰ÈR˜KñÒÀ"À«À3ªúdwå‘…� 1WåÀTà1U}½»m·Y³^XÛ2èÿ­xû IDAT%à~Õ®Ï[lüÇa.Þ açá5àU�Ö=É»$Ó� Ë À²Øw}-¤)ªú^oËÔUÂ1KÃ�7€�Uun+eë Ddy`lN ^žPÕÉMîg(°6?F/·†—ieê/¬�íQ:;'÷”­_¢ý ؽgi`6y$iÇqú®¨:½Ï<.Ât�<ÞdðD«Åè#<š/U¶bP >�=ÀKN™ç�3€ªns""Kÿ ìŒH>ž+"×?QÕûBùÇá¿/pþ¦ªßªÓî'€S£¬}Tõ%e:.È0OUW.õe¬îG�#€m�Esм/"×G«êcÚ| X¼ ÜTà&à&U½0ùì*`m:ÿ¦ý@D«ÓäsªºU�¾¶¾lS ú\¹'Èt‘ª¦ÖýJˆÈ7�o„Ãe£�6 ó°[©êsín�}—­�…sм%"WbsñéjR÷,"òaà,`hÈšüOzþ£ò#°9ú`õ:eNNWÕy%dø K æªê*!<ð}`lý|ÌZ„{“ˆÜ޽|¸WU?ò7~ìHçyû�ˆ\üHU_l$cŽÌ+bç|gì…RÊ<ù'ð3U½®jûŽã8½…+ªŽãôeÞLŽ—©$"þŒY1Ї)›ŠÈΪúï’ío�m+²d�"ƒ€]�OŠÈªz2fµËÕzõÀÚWˆŽ«x',Õ�_¦‚ˆ Φñúß¡ØCûn"ò#UýY‰¶÷þ )!ÊX`?`_ UT–¡vL2F†”Çìy®¶,!Ï `³�†c RwAþwR'?c¡¼Ì` > ø\ƒ~G_ö‘cUõ§%díqDdì|7€‡±5õ‹ªêzªºvßø*µ×ÑJt¸„ñj•Ô˜eu˜ª®ÎùG°{ÏöظflŽ�¡ã8N[ኪã8}ÙøJ’}vAùA˜+©ûªênªú|Z^U_TÕ��Ø…uöðW�ïñºÏ»€MUõÁxWU�«ª×cn£Ïa®£i/Ž>ßLPÕËTµÆŠ§ªs‚ûòÆÔZÿN Á—j–Úxœ~ ªÇ«ê;iÙоªêßUu_ò×Ü5ƒÍ£ÿ§Û¨êõ «ê[ªzŠªn‚­5l ÂZ⃢¬™ÀgUõ§iU}ø4µÉ~/"©G@�""ƒ�ó©½¾&ªêêÔMí6Us°5»_Õœ`eañG¨uß Ø§¤˜0+ç3À‡UõDµm³âkû®¼¾c°—3g›¨êݪ:'ª;[UOÃÖ­Æ|¹H¨pÎ�Œ²¦k¨ê/S+i¸–nÂ^@ÅK‘5ŠúqÇém\Qu§O!"ÂÚÆ+©Uî&-¨º'fýÈ8KUÏ)Ñå1Ô·újˆô™Êµµ Â|lí×õV‹*ÜR7Ë<‚e8^sù:¦Ô¹ ÖÒý$ÊZ†ü5’%ÇW甩×G¡ Ý`ãèÿ{UõÕ²{P¦®phr|’ª^R¯°ªÎW Ü[Gbk�{…é:}ÜlÞ` éשuµ=ZUÿ^Ô—Z„ãÃ0WüŒªë‹¬§<—`2ðõ"7Û`=Ž_’¬¢×ã(j-Êû6rgVÕ7±ñËà›EuÇqzWTÇiG~("¿MÒ"r3ðfE•Ÿ|2µô%ýÿ%Ä`ñøQ”•¹÷¥|œÚ5p—©j¡+ràj ÛÛà4™½¨ èt”ª¾\²î Øzߌ�sÊ KŽó¢Ñö6ñˇv�§2a šx/á™t¶–Öã¸äxßfÈÔYøµkƒ/>^ÏÂê À\¯3žÄÖ©6$X<��²Ö‘¢€U1¯ç†\’ïj¹âç%Çä ч?e�¯ª·”DUﮊ²ò®UÇqœ–ኪã8íÈ~˜"§ý±íBÆFåæaµ-R CäÚM¢¬»TuzyÒJyŠêÄäø÷9e:ÜÿPA–Þ`»äø†²Uu6)#o¬Òm…ŽÉsîeâ-u6‘�Z&I×Ù„Úh¯TxÁp憞±®ˆ¤/šŠˆ¬ Ü�Êøðù0�ŠX‹È›qSƒU)e®é<þT¡�<Ê^KÏ'Çcò aÛEu¥ýŒxƈHé-«ÇqzWTÇéËüs¯}¡A¹�Pë&üû™LmŸq9eÖOŽKm)Ñ…²½A¼6õ…Fn„9ÄJß29Jè“Ô>ˆï<%"GˆÈjûj×Gÿ®‘ËEd—Þ^¯Ù R—ê‡ËV /Lây8�ÎsºiˆÈv˜{ë2!k>p¨ª¯ù, �h\õšN_–Œ+YïÙŠýļ‘®. ½æêqûhr\uÒ=�ÇU¬ï8ŽÓcøö4ŽãÔ "¿¢x¾Œ›UµôÚŠÜÄîqƒ° :ã€QQþ÷�MDd×ëÓýR‘4S#â½>óöjŒ-3Uõµœ2õ˜RQ–#Dû]&Ê#"ÏWl&}¨ üwͧªÎ‘ƒ¨µþ¬€¹c/"“±@Tÿ\Õ`�bSPÕ¿ŠÈµÀ'C–`{Ýî Ì‘{±í…®n+añkK%ÇUçUª�Î-Õ}¶ÅÖsg÷™0+êeÚH¯éý««Œj\èlé¬B%7�n]ïžœŽÃÿÙvª¥IÝÜíCë8ŽÓk¸¢ê8NÊ!Ô*eõ˜I… 89HUŸK3CäÞ=°µhYp‘m€KDdÇKLº·á’Ô®Á¬Ê¢ ú¨ª ´�¢ŠE ŽŸt‡`JdwèäBªª7†íkNÆ"©Æ,Òç€?ˆÈýØÖ4§„`8=Åç�_Ó9Êê l+‘M±-I¦‹ÈuÀÏUõÁ”§*é ‚ª–ð´|áž Ý ÝÿøŒŠJ*t–­»Ñ Ë¸9Ϻ³çqOìSšŽCÓ¯UÇqœVኪã8}† ¤üEDîðdV̰u¬¿­S5µ¼‡­oí*�öò¤ÖµxNÎçEÌÂÛa9F:Vs¨µnw…ܵƒªú7¹8ØSó¶éÙ0¤DäUmÊÞ¥9ò¼ú8ÛSugl?ݔŰ(ÒŸ‘ßßSÕzB¦Š¤cWu¦å{jˤû°=M³V‡ˆÈTU- )�î;ü.ñ¶«”™ãóKº%÷&ñõªØ8t‡vôp§ŸâŠªã8)—Ðù!0�7.Ò3¨êÓ"²7G·ü‰ˆü¥Nð˜7“ãƒTõ‚&‹õvôêŽ×ˆeè%µÌ=?«¨êÖ=! Ø~¤X�_‰È˜…|«ðw|R|à:YSU_éA™îÂ\�¿&"ë[‡´¦¤f Ķ:@çmaZÁÛÉñrT»NÓy›¶×,îÆ¶„¹†Žñü¹ˆ UÕ£K¶‘ÎÓmTõ¾f ؇ˆÇa0:Þ›Õq§/㊪ã85¨ê[-CTõV¹øLÈ |-§xº^t# ÙŠêëÑÿ‹‰Èˆ`¡+Cщ)©%¸Œ›vÆJ� ¨êlysØPD¤7,IaÏÙ‹Cʶ.9S3…f Ì=÷ =-O�é!,Šñ ÁõücØÚèm¢b_‘s{ÊÒ[�Ty«2¯òÊ×ݸ»¨ê"²-¶æ7[ù#YDU�,ÑÄëÉñF˜¥¶¿ßÛ†`”ªSÖq§OÑnfŽã8]åÛÔ®û:@Dò”±T�ذdI#¬VÙæ¡JÙÔµo™ÜRù”�¨�×p:[6{U�¢ª?6§Ö5³Ç,¼ 䙫ª·¨ê¶ØÚÚ Á¬ÀMë*i»,ézÙªç-.¯ô°×„ªÞƒ�ËXÙúŽˆœ,�#õÆ5ÝHÇ!�üì8ŽÓgqEÕqœ>KØ6åô(kðÜrÏQ­s“Ø/0µæP¡n•²©•+o e'DdE:-ªÇ­Éñ^%ëõªú0µ‚—‘¼è¤©•­Þ–Í �0»fn©®Ÿã*ßánj•Ü/ˆÈÐz…cDd3̵:ãIUM-´M'X¬·¤6HÑ×�?‰HÑ3Ê?¨]S»cØ/¹¿ÑVתã8N3qEÕqœ¾ÎÏ©µª~ADVÉ)wfôÿàôV›*\Mm�¥/‰HÃÈÂ"2Ûçµ,OqäÛ]KÖ«¨æ†­ÿ�£ïœÜ­óêÌþe}ˆÎ/úwa÷„Œ­EdÿV ã8ŽÓL\Qu§O£ªÓ€?EY�å= x':Þ ø^eUŒmëÈ1øs”µðÛzÚ¡½Å�Êöú™E­õvÙ¹¨ŽˆìJÇZÞ2}LƶƒÉ œ-"•öÕ‘•ó,×"2QDÊZw‘Á˜Õ-ã‘‚}s§EÿoÓÀ*÷±SØC¶,Û%ÇwW¨Ûˆø;,+"U¬µ¿OŽ�‘µŠ*ˆÈ��¢¬YÀiúì6ªú4¦¬>eï\ÎÇQQú+"²g•~Ed°ˆlY¥N;¡ªó�Ÿ&ÙÇ‹È:yåë!"#EdãæIæ8ŽÓ}\QugA µªî-"5ë1C`£ý©u�üp—ˆlPÔ¸ˆŒ‘ïO=šZ·ÍÏW‹ÈbiAY¸Û’eu¶p©ÃŸ’ãóDd·œ>†ŠÈI@¶GeÞ¶:õ8x::Þ˜$"_/RèDdQù¬ˆ\L¢Ö�4c/`ŠˆüMD>Q¤LŠÈlÌc…÷ö¹ïŠþœ#"ëÖqÎúà*ày96œ›ºˆÈöÔZèça®¨Íâθ;ìün'"K7R¼Uõràº(kilŽ2-^¼‹½”ˆ_ØÝ“Q•롪/`ÊêQönÀå"Ò)h˜ª>޶Êà"¹2¸º×EDÖ‘ŸÏa o_æ<àÒèxð€ˆü6¼ ËED‰È6"r*¶—óÞ=,§ã8N%<ê¯ã8}U�*"g‡¬Ìªúù¤Ü¥Aáüæ�ûDäyìù Ìòº80 NoÛQwÝžª¾&"b[üd ÅÇ�—Dä^Ìê64ô¹Ûü³Â–á\àp ³” .‘IXP§0qBÔÇUÀ«”tUÕ·Ddàf:6�À‚ý¯ˆ<<¼¾Óh`ý ÓB%ºìÒ›"ò ð,¦8¼ƒ)Xã�í©ý­zøŸ‚v�Ááì{ï‰ñü)U]5©;›7?ó!“çyÌ]üC˜"•Ö;,X›Å¥ÀýtZ¸1û0ù«©ê¤¤þ~Ø\Ž®‘€aVËõ€£’º7ÒBZU}QD¶Àæ]ö’cLþ]RKºªþ2X팲wvs*»¦gaówì¥Kì»÷9TUƒU|i`³�=Û[ú@yƒ§°ûÒ(lMõÀ¢½/±ã8N9\QugAá8,(Q¦ |ND~¬.ÿEU%"�cV¤ì!]€CÚ¡A?³Š> Êð~˜Õ3S؆a®«[æT98STK¡ªsDäsØzÄ1ÑG«ÒY‰ ¸òùÐOiTõñ`m¾€ÚH»#1Kð¦%šé´–4‡Q!5r=| رÀíU}^DŽÀæC'KvI`[ù4ÚÎG�Ÿ«êºØO~£¦x œ�)VUë¿""›bë¦ãh¸+„T�ó�ýƒ;iË/|¶Ähesbkàù¤ª¾›”?HDÄÜè³—=ƒ°(׫Ñxw™9ÚÖ¨êŒ0fLJÐñ"nì¥Äz%šéóãà8΂…»þ:޳@ ªS1¥/c抛WöjL)ýµÑFëñ6æ^·%¶üPÕs±ì» Š=|IUèÊ¥ªú(f™½¬ ØëØlÖÐVFU_QÕm°5ŒwÒØEy>æû-`eU½&§ÌÉÀw±=4˸#?‚훺†ª6<_ªú{ìüþsƒýÅ–pÅ,»'�–�gö¢c-U=ªDùÊ„­[&`ð˰mH^¤¤‹¸ª¾ŒÍ�C¨ Î”ÇƒØ €}Tµ-”•k[j]ª?Ü""©U=s?‘Î�®òx 8øDè§Ï£ªsTõ0`]Ì«cf‰j�c/u6¡s@-Çqœ–"½°‡»ãÔ ÇÊ`ü%I}Žf–âfo""07È¥0ËÞ , M–žTÕ9õ[(l{5,pÓ2ؼ S†þ+¨"ò>Ö sUõKúXس–-džÜÚU¹ ú‰¹¿®,‰Y�_¤c¬žÑg˶·ö`=s­]s[œ¥Ç»¢ÌwY X;Ȳ4æ&úV$Ï“ªšn…ÓֈȺtÌñáØZê—€ÛC𬆰Žw=Ìš¼$æðst*0©7çT+‘…1Wà XèÅ€W致sï8΂…+ªŽã8m@wUÇqÇqœ ·j9Žã8Žã8Žã8m…+ªŽã8Žã8Žã8N[ኪã8Žã8Žã8ŽÓV¸¢ê8Žã8Žã8Žã´®¨:Žã8Žã8Žã8m…+ªŽã8Žã8Žã8N[1¨Õ8Žã8|Û?l¯NÇqÇqœ~‹ï£ê8Žã8Žã8Žã´îúë8Žã8Žã8Žã´®¨:Žã8Žã8Žã8m…+ªŽã8Žã8Žã8N[ኪã8Žã8Žã8ŽÓV¸¢ê8Žã8Žã8Žã´®¨:Žã8Žã8Žã8m…+ªŽã8Žã8Žã8N[ኪã8Žã8Žã8ŽÓV¸¢ê8Žã8Žã8Žã´ƒZ-€ã8޳` "ËÛGY·ªêäVÉã8)"²+02¾®ªW·R§ leݬªS[%�ã8­ÅUÇqZŽˆŒ†DYϨ꜊m¬ N²ŸWՙݓΩÀšÀYÑñ§WT�vâ§Ø<¸pEµ½X—Ú{È΀+ªŽÓOqEÕqœvàR`ýèx%๲•EäûÀÏ’ì߇v_4Çi."²8°H8œ¯ª¯¶RžV!"ƒ€%£¬wUõýVÉã8}YŠŽ%}3UõíVÊã8ÍÀר:ŽÓ§‘_ÐYIý™ª¢ªÚ ™§^ é‰ËÒJV§c^ök­8ŽÓ§y„ŽkéŒËâ8MÁ-ªŽãôIDdf5ýjòÑ‘ªú«ˆä8Žã8Žã4 WTÇés—Ás€½£ìùÀÁªzZk¤rÇqÇqš…+ªŽãô)Ddp1d#c.ðEU½°5R9Žã8Žã8ÍÄUÇqú "²(p%°U”=øŒo3á8Žã8޳ààŠªã8}\leOvQÕÛ»Øæ"À:À‡€QÀ›À4àAU�Û-�;÷µ*°° 0 ¸WUŸ)Yw¶mÃòÀâÀëÀÃÍÚ£TD–Ö–^žSÕÇšÑ~O#"+`�yF¼LRÕg[*X‹‘ À8` 6WžTÕ§Z*TAD–V–Þâ�?ÔÌÀl"2X;ô±ð6p‡ª¾Þ ÞZØ=d4vyøO3¢F‡ûër!-…Ý[_Ãî…ït·ýÐÇ:¾÷»Àì>6»í'}­ ¬ˆE•€m“5˜Ruë³ÐÞtŒÏhLþ×€Tuzä…�ÛqtÜã_ éU�×Ý>§O¢ªž_x8)ó°qûÛ ¸ø i3Koc{ù­P²½u�磴OÈŽEcLû8-ª¿oRÍ�¿p,ðb9vêâ,| ¸˜W§ý)ؾ“ÃK¶¹]R÷œ3ƒÃØþ§Žì < )ÙænÉyذ‚<¿�ê=’óùÇ£ÏgD2ÎKúLÓŽI;Ã’Ï� ù€o`Q„óÆâa`¿ ßçQgW¨·r"_§>�ÃgÓß(‡ë›4oâkñÞ(WàŽ:c78¦Â<Ú?‘}BÈ ü’üëùKuÚêL®#Û<à.l½¾T‡aá;ÿ1|¿z×Ð<àžÐþÀ.Žù‡Ã9Ÿ›ÓþëÀ ÀˆPvÇäóÒ÷7ìEÞï€ ¾Ï{ØÒ‘=�am-ìŽEÏ}© ½¹aü÷T—E€C°—!õÚÏ~�.Åî×Ó6މæY|ŸAñ}eT3®'Ožz:¹EÕi"kc?–N>¡:³ÕB´š`-»X%Ê~ ØNU­ØÖÒÀ_€�5(º8¦<~ND¾®ªg6(¿0ö6^ÄŠÊ Ân¥.�/K´ÿ…¤üfd;?ª÷nƒ²Ee߬8‹%2¾‘œËå’òC1éÔ½ûÇ ú‰Ý'¯« ß„¤Ÿo”]+)ûõfΗ:}Æ®¿oGãò°‘ûl˜G;bŠC,ç� ú8<çÚTL98{AÏ×U‰î÷ؽoVÒÆ½a¼bù†_¢ó†;hà†ŠÝÓ&ßMçLTf!à`:»*ÿ®Ä8o¾o\ï\`tRn8f Í›ÏJ×_त|vÏ]‹ä~ˆ)q€ãC?‡×isa:~#Ž–)(w8�§Žk ó9Iù?Q°ÌSæ3—ñ‰åb9þÖÓ×’'O½‘Z.€§~œ\Qm”ú³¢ºöçÝG�’Ñ ý?$m�?(Ö©³%µÊêeSE5Kߥĺ1:+ªŠYÖ)¨³0f5‹ë|² ¼ÐY¹­«DDõ¾“Ô9¥ lO+ª§%í?L�‡ìP~YࡤÎYåû¢¢š¥3€AõvÁ,,YùÙÀ*åûƒ¢š¥»Šî-˜¢�®{ülAùTQUÌêUj½%æÞ×½ ZP~"�•¥¯5èã£Æl4µ/}fÖ”Ö)/˜’Ëó¿ úø¦<§ãVw±T1E IDATÌè|¿™Zò; ÆÖùl /&sÊ/“Œÿ[ Î×3QÙ«*ô3�‚uÒ¸¢êiLõÖ 8Žã´’³©uwºØZDÅÌCD>|9Êz8XD~Ts=-ÊZ_D¶¬Ðõªú UÕ ub¾­ªÈ7 8.ÉÞº ½OFÇ—«ê‰%äø5fÍÉøRˆPÙ«„u˜_H²÷QÕ)õê¨ê4àsÔº¹í¢�.HL¾ª‘ªUõJì…MÆBÀA=-X`>Ȩî½E-úõIvÑšÖ<~ª%¶Ð‘�ëEYo`ó¼®§ªÞ�#ß7DDòʇ:w4’%*ûðÅ(k(ù®¶Û`/,2îSÕB—^U=‹P…£’ãTõ¤2Uu¦ÖqßVÕyªzgY!TõEjcF`÷ÛN„{çJQVémÕ‚\ý>n…Ó¿pEÕqœv$ô0ØKU‹Öññj×c¦�Édü³ªfì\²žbÁWºÊ]ªza‰r—R»iƒ‚²ñƒõ\àÀ2‚E;~ \„â ==ŧ©]_vu‘"Ÿ¡ªO`�—2{5Y¶Vó»F/^'R;ŸSÅ¿?r…–Ûºç2Ì–ñY©^á„W�ß—,›ž“KÞ¯þ‚­yÍX òÓ,n£v�ðÄ‚²_LŽ]²�²å²-˜¶Œ²^~^¶~p=µë«ë�OÀjHn)ÇqWTÇi†`‘mGv±þvÑÿ³±®R¨ê[˜6ã#%«Þ§ªÿ.ÛO7–)¤ªó±5›¹–BYˆÚHÇ+IYîMŽËŽC3Iû<¡BÝß4h«/3‡ZË]‚õùŠ(kŒˆŒï©ú¥Èp­�šd—�G©ðr,ns6¶³!Ášž–mÚ</¬âCk�•´W€¿–ìãߨ¶HeH½GŽ×&í÷Ú‹¢Ç£¬5ë”›Jmð´o„àJŽãäàQÇiG~€ØÈ,«ëcQg· Êc)DdalýhÆ=]p�z X=ü?®d�g+ö‘RÆÂ“1³ž@ýè�Rû&ÿÿª£ªïˆÈ4lÍ'”‡f²QrÜКZP6m«/3­âú£˜u:c#ªÍ·�GºQv#,z}#JE(‘aÔºÌNQÕ·Kʶ§pL©y."ëbÁÇÖ®ñáØý"uŽ·ƒÊuÿ‘E©ÝJì U�WFŽÀ£X ¦F¤Jøƒú¨„ˆl€Yoפc|¡óøÄÛ}-�¸ÛlLŸ‘S1™û*Ž—ã,и¢ê8N "ò+Êíws™5W]äl+—séPV7ÀBÿoWAYC­Ûïú"ò|EYâ޲Vݪ}¤TQtß‹þ¯wÞÒ½÷‘=ª‰T³•BW­ÛÝ!îÿ}U}£lEU}WDÞ¥cOÏÉ‚1¹bùtMï‚¶^· ³0·Ü²¤c·tÉzÏ—,·$µÊOÝõ×uHçBá�"²ð3l››ªÔ{)6šæ~‡z¤cÿ\Å~""»?¥ãEeж”9Ø>*3ÛöHà-¹ø'h)}ùà8ý WTÇI9„rëffR!DUTõ‚ ä:”Õ 1euÛ’–†Éñ0:ïZ…Á"²P‰õ€UöXÌ£î|]$}hEñÿFtg »J|.«*gY�µÂÿCKžÇ¾@w�V¼th¦V v–Žuz©Ç´’åÒë´»/!êÊ'"'`[_u•�uòÓùÔÝïP�ø»Í§û/ÿKøÝ9…î«»´NU_‘­€3© œ6~;…ôSyÛ'ö¸ŠÖuÇY pEÕqœ¶EUÏ�+Ï¥ã‡?SV·+ñýpr< S°»%V‰2íæº•ŽÃ jƒêTezã"M'~0™ÖYPb4T‹uºBwÇ®ž²–RöZKÛ«*_¶�VfÑÌ•OD¾N­’:[p)¶…Õ›Ø+oÅ‘¤Eäjl_Ù"ÒùTõ;Ìn\¤S?óiî=÷;Ô*©s�Û±ñy›7�·“ñ¹�ÚOuQÕEdcl+¶Ý°ui %0×à#�}Eäð’Aög�ÁUÇqR.¡Ö]¶Ý Tš ¬f–Õìád#àÆ ¬­Ï{39¾XUÓˆ”ý�tŽTÕ?ä–l_ÞÆ\#¡³+s–‹þŸ¶÷i&­ú=]®q‘ÂòͶÒô¥çŠªc769nöØ¥íU•oYjÝn;ÉÖíÿ8Êš 쨪·–h¿Œ«sw¿CÙk;¾ïÂÎÍ ûꄈ,Ä[é̶WÕ»JT/ë ü7ÖÙÀÙ"²°¶Vxl©K¬Œ/œ/"/ªêß«ôã8}™¾ôƒâ8N/ÐŽŠœªž,«±²º1–ÕzÊjÙvA ¢S…aÞ CQ]\DSÕR–Ýð¸d”Uo}kj•©²uDÙ­JšMw�zû‡ÆcQeVl\¤m&"£T5}‘S�tìªDÎ.C*GÕ2iù¼y¾-µnÿß+©¤Bm° z¤ó©êw(;ŸÓ~V¢ Š*°°ht|x%UDÐ�¹¯ª`A–ní�Àö€þ>c(À™"²J7öçvœ>Evùq§¡ªçûbn^c–ÕÜÀaïÕIQÖj!*eã~j]–û¢¢šFõ¬²­JZ¶^„Ðt¯Þe*ô±j…²ñ¹H#‡Ve9)ã‘‘*eÆâCÚ_­q‘¶¢ŒòU¯ìCÍ$¼p‹ƒ-_ñܦóŸ7ôn¨?jT."½¾¾]²Þá”\’¦ªPë 0žj/¯êñ|ô¿PÂsCD–¾Û„¾ë‘nÇöA�rñ}eAÚ‚ËéǸ¢ê8NŸCUÏ%_YídYUÕ{ ë~#�3BЌ҈È:}\Áýðrt¼!¶ýA%eUD¶oªT%QÕiÀ•QÖÂÀ)"Rwýdøì4j×X^«ªÏÔéã]à‘(kÓFÖ ÙødñSÒíJº;¦k‰ÈEDdM:+´§TùGrü? Úœ\T&EUçc UÆvÝ´.w…!À‰"RWA‘‘À¯“ìž Fv µk-W£�’("Ë¿I²O©³ýRº/ç—´=ø=Õ^¦\¼ï "ŸiÐÏDàÀ }ü<9>FD¶,[9–J©:>C€S©}TT~¼ˆ¬QNÂÿßæ÷Ô)+ª« µãôi\Qu§O”Õý©UV'×ç(¡Røä“À“Aɨ‹ˆŒ‘}Eä&,ÊqŸýáWÕ™˜{ZlAû.pŸˆºkŠÈ89BD®ëA1ñmj·Æùp{Þ „`å¸�Z«èû@¡B‡)ô1‘rÚ_LDþœ²ÞkÐnÌÝÔž‡_‰È^"²\ܳèÅÇ‹ÈñyÖ7Ù¸“Z+ËYªz_Z6â j]s·‘ óÖx‡—�`‘J«ŒÔº§®�½DZ;(¾=M6v{׿ydˆÈŠAÆØšú:»c6…`á>8É>ZDÎÍS¬Dd=à_ÀšQöSÀ uºxˆÚõÇŠÈwòæ�ˆ¬ÜA‡ky=K^úæP»ý�‰H®å_DvÇ\y¥ÂÒªz1ð×(kp‹ˆü¬Þu$" ‰ÈçDäàk9EîÃȡy/ôDdìZÞ-d•Ÿ €GEäNùRô–‹ˆ ‘S»\å�‚ rñµ´6æ‘¥ZðÈqš‚xà0§eˆ­ª—–ùe‘ÏbÊaº¯êÃØ9˜‡½°X{XËPà˪zVƒö‡„¶b—?ž ùs°'«Gí_„½0Ù+OWÕÂ5«"r&µ.Éõølx Ïê-F­¢q:¶N;»—¾Ž=<ß�½XÙ4È?¨>LlíVD¬E1ocÊÎÓØ¼X‡ø}lçQùÃU5žÛiã�Çhìòùˆª®Ý LCDä:”ºû0{ßp<¸¿¡Ø[fåUµS€§pÿŠ]£ßÇ®¥çBz9È·<�8¾�¼ l¦ªO¦í†¶a×R™@sK©j³£V;NóQUOžZ“à!õT7­ÞòsÔK ÛD]£´bÅúûb JÜÆ�ÀbI¹•sú*›æcœyýo’”ýZEùKê¯_¡î¥Q½WJÖÙ sÍëÊ8|PÐîvIÙÝ{h¾ì‚YîJËŒ)|eÛßSøÊ´}-¦Ôœå½[¢�e1 H£ö÷Lê-–|þ;ìAÿ™’ò> ,[rÛç±L»ï`ž ’üo”èç›%Îçš4w‰Ú¼7œ»[+|Ç�–èãð¤Þº]”õ(:ß׊ҋØK®ª÷�Féj,h×UQÞÔ} ..ÙÇ `wLŽów*ÑϰŠß'K‡×iop}…vþŠí=~[”÷D�¶?Û9³¹·E‰±Ø soÔÞèf\Ož<õtr×_Çqú<ªz6¶–(vÞ ¸.vUT[›¸ö–¿ÌÖs€›0W¼±ªÚÔí(Z…ªÞ†)7Gb–ÔFLǬ†{aÖæ–¢ªWbA`Îf�…)�«©j¤¦¨ý0Kä5Å^¾쨪×Ç4UÝ {0¿SZ_Àæ\Õ¶žÆ”볩?¿Å™t�l½v³úNý½gç7©êµÄŽûù fíú9¦ Ûck«‹Æ lÇQt\•µ7³fîOñ^¹Ï_QÕ=TuvIqoÁ‚>]„kÄË„½TUµáV9áÞ>8sß¿?´ÑhL§-q×_§u¸ëo#ú�ëo«a·ÀöÀ[³ M‹Ò$µ; 4a­Õf˜º¦ÔÄã𤪖^;Ö›„5^ÂΌÆÎák˜{ëíª:£›í/l�¹â ÅÆã‰ÐöÜ¢º=AŽëïIªzXôùà˜ûæ’˜Â÷ p�ªV]?÷;Øs©^*È0‡©Euû á;n�y^,�¹eNnPÕ"…®7d…Íðy> StþÙÕ¹®Ÿµ1âU�ÙØK˜G€»´I‰a�ç–˜;ñÌ‚þ6rƒ›u£¯%±±Ê®�Y˜µù%àñðb§l[ÃèŸñØ‹ W€‡UµÛÛ‰Èì%ÍÒ!-†Ýc&‡ôX»Þ{§7pEÕi®¨6ÂUÇqjh¤¨:Žã8΂B©ýª§GP]¯Õ"8Žã8Žã8ŽÓ~øUÇqÇqÇq§­pEÕqÇqÇqÇi+\QuÇqÇqÇqÚ WTÇqÇqÇqœ¶ÂUÇqÇqÇq§­ð¨¿Žã8ŽÓwøØ-:nꔎã8ŽÓ.ø>ªŽã8Žã8Žã8N[ᮿŽã8Žã8Žã8N[ኪã8Žã8Žã8ŽÓV¸¢ê8Žã8Žã8Žã´®¨:Žã8Žã8Žã8m…+ªŽã8Žã8Žã8N[ኪã8Žã8Žã8ŽÓV¸¢ê8Žã8Žã8Žã´®¨:Žã8Žã8Žã8m…+ªŽã8Žã8Žã8N[1¨Õ8Žã8ŽÓ‘々ÃÇUõ­”§·‘Ó�…ÂáªzFAÙS�!áð.UýcOË×ß‘€Qáð!Uým+åq§3¢ª­–Áqœ~Žˆì,Ù Ølà]à ì¡â­ÌqYØ/ʺBU_Š>ßX¡A3s€éÀ›ÀêújÓí#ˆÈÀjáðvUݪ•òô"2X8ž­ªû”}ÏSÕ/ô´|ý ™Œ ‡×¨êN­”ÇqœÎ¸EÕqœvà(`ý*Dä1àÏÀéªúF�Håô)DdQ ~Ø|PUŸlBÓ[§„ÿgç'Ÿ|²Jƒ"òlhç4U�Öm §Ÿ!"›Òñ‚h¶ª^ÚJyÇi>¾FÕqœ¾ÊÀqÀã"²K«…qÚ‚FiÇ&µ»kôÿ­ª:½ m®üxLDömB{ŽÓß8ŒŽkýÌËâ8NàUÇqÚ‘g1WɘÅ0ED’üÑÀßDd7U½º7„sú""ÀÎQÖ%ªM>Hò†Ë“üáÀY"2@UýaÛÉx…×ßwZ)ÈÌkt¬ö¥$ŽÓ†¸¢êô[DdaU�Õj9œ\¶UÕçÒLŒ­mû°gôÑ à YIUgô’ŒNÿ`cLÁPàÊuöRÕ»ÒL„YR¿ìO­WÓI"r­ª¾ÜMy�U]¹Õ2,è¨ê­–ÁqœbÜõ×éϬ$"{·Z§<ª:[Uÿ£ªŸL>^ Ø·÷¥rpb·ßûTõÅ®6¤ªsUu’ª~øTòñPl­«ã8Žã8¸¢êôo&§ŠÈF­Ä©Žªž\—d¢²8 4±¢ZÆí·ªz�×ÕíЬöÇq§¯ã®¿N¿EUç‰È›Àu"²N¼Ý„Óg¸œÚ‡ûu«6 "#€í°àLK‹¯Ï׫ê ÝPD> l,�½œ <Œm‡0'*—}𞪾^§½¡˜õ8ãeU�YR–%°µ¾Zõ»‰ÈàÃÀG°õÂKb[½üðOU�W¥Í¨íõ�Õ�qX$Ï…°óð¶^ïnU}¦NÝaÛ~,›|4JDÆÕérN£h»"²2°f”Õ4E5p9朱NÕB¤ã­CÝ¥±óûð;§ ÝÝ“v¶« Ó£zó*Ô†E¨}½ÁX½„¹d,Ù®`Ë6h7KÏbÛ¹¤íÜ_²~œ&•�ü3å®IÚÞ¬ä÷_)G®êžÌjð=ÿ|´d›_Éû˜öDAoJö·u[ÎçËbÁÔ²2×uáúKíµ}YÕ6Jô±öÛQo\^�ÊÏŒ>;«AÛïEeÿ\PnPÒçéÑ5û{LyJ康 ½Ý0e´hNÍN–ì˜�þÛO¸Ñ5z?ð}`á¨þ®%êå¥ÏåÈ2%úüê ßaOàÉýM~,^²Í£“úãBþúØ5\¯ŸÀ�)yÏõ䩯%wýuú;W.i¥ NS(e½‘ïac»Ð9 kÊ6À½"²ƒrqûßnì´õX8QD. Ö…¶$X žÀ†–hP|ià4à*Ö ,À©˜UqbIqVÄ”©Þ¢GÜ~Ðp‡¹øðy`pƒâ›s¾2"rp#Ĭ£0¥èÒ0ª[¨Yºã UÛ‹È ›ÙŸÚkû´îÊ#"ßn& üND.Þ½B«û±—CKÖ&"W—ÒØ²¿ðuàß"RÚ‹ED¶žÂ‚á�lP`LÙ+S¶Ç‘…EäoÀE˜…ºˆE1%û)ú(êoì%Þ&ņb//éÍ9æ8½…»þ:ýŠp#¬‡¹/n‡Y$†‘cTõ˜ÖIèT$}x¾Q9øf’ý,ö`7 se] {8Èγ¨ÂóUõìí8!É~¸ ¸{°˜Òp`à˜Fr·™܀ə1¸«ç0W´u0ëvæf¹p�ˆl£u\�Eä@:ĺ¸³ÜNÇß±˜«éæØÃ_·cÖ‘a˜{\Æ#˜ w…A‘DdIì‘qyQù.²frÜÉ=1ED¾ü2Éž Ü‹�“×±ëb:\á8NDDU�« ß6ØÜ€)Ð`çè¹Ðþ¦Øý4cWlÝí+ôQ�S0ïBÿ`ä ÷ù¢¬ç1e»)„}o�d¿‚]ãÿ¢ó5þàñfõ߀Á˜"•Ý»æb/5þ�YBWÁ~ïþKp¾ Hã5܃YŒ'…:ë`×Äèðù2ØK��Uõ©"¡Dä3ÀÔ>w*¦¸>Òü ßx`ÃTÎÀKt¼4Úˆwÿ¹˜gC=¦É׈0§®¶O>šŒ]`K&b㔽$ Ü!"›©ê“ºÜ ó€„]{�bc4»¾'bË/2v±ý®BŽÓþ´Ú¤ëÉSo%ì‡ïZìÇ0v+‹Ó›À±­–µ¿%ºîú›º\^РüÞIùw�o�ã6…=Ü‹Z×ÊÀªí/ÚŒû¸„·rl Þ=¡Ìü�²:-wýŬd““¾þŒ­S~ìa<.L�²‚í[˜•{ب�<ð¨Î·”ŸôD7æä¾‰|u]ëræaY×ß?%õnkP~l­`VþÌepá:å÷Ãþ¬ü\`Ó‚öS×ßÌuöµzõ€ï%sW�O7ø…®¿Ñ™•› *9®;&òÕÕy�Óöòt¾Æ/&ÿƒ½@ÐpÞâq:«A?]uý�Ý‹ÿ Ë©³Drüç¤�'€mêô7¸0)ÿ@ѹÁÖžOOêðÝ:e7Ã^NÆåïm0FG'å?ÖÊ)?8;©ó0¸YsÝ“§vH-À“§ÞN˜•æìMñ«Ø[fMÒey?ðžzìœTVT©U$²4± üà�ä�níýì–ôQôÐxNRöT@ ÊnÉùí ¨¦JÔ/K´¿(f½ÊêÌFå”KÊÏ7i5SQ½,jçìe++ªÀÇsÎûîå¢öÅÁ<`«ýlJ­‚tsAÙTQUÌ‚µJƒ>¾˜Ô™L±bßPQ åŽHÚýTÉswETgu�.΋T©;¥Ä5~kθžÕ Ÿ®*ªYúJÉïóɤÞ(¯�Ú{‰{”½-){ %×n†ú¹ãK/)ªØ ‡t-øž Ú^‰Ú{¡”?:çÞÒè\äŒí.Íšëž<µCrv§ß¡ª/«ê ªºæüìÁ魨ا€Ãú<§M‘"2^DΡóÖW«êÝÕ¢Ö…õ(UýO£>Uõ2àú(ë³"²TZNDFbA62Þ¾§ªZÐöûÀ·ÉÐÛ„(º_ˆ²þ�]'…¨ê{˜r‘1ørNÑ ’ã{ªÊØ“„È¢±‹_S֧б¼ˆœ\�||/ÅîÅŸÃ,ö'¨êm�úTÕgEYÛT\3w‚ª>Ý �s1÷ÇŒå0¨»œ�½PÊH]Å;"ýîe]©ª/7ADdæÆ›1�r×øwšÑîÐQ}#ŽŒþŸ ì£å¢ˆó@Ê84¯�ˆlŒ–Ëxø²Vˆ\4¾½ÄÔ®¿VU/.ª ªÏÇ&Ù¹cT‡9À×Kœ‹Ÿ'Ç›UèÃqÚWT�~�ª¾¨ª¿TÕ Øƒ`¼Àxà_"òÕÖHׯ¹FDJÒ3ØCë$Ì‚#Qù›¨Uóˆ×¬½ ü¦‚<ñšÀ…€-rÊìD횪?©êÛ�VÕ±7çíĨ}0û‘–Ü~DU/¥v]è¶9ÅÒu˜+V¯ÇÙ–Ž 43©¾¾ñìœù; sç{[K¯Õ»ø¸ªÎ/h3ž¿³�U�']ÓšwNò˜ŽYÎÊ�®Ùlt=6DmÛ�‹¢¬�—ªôez.ˆÒÎØ6H§—Q¸Tõ~ÌòÕ[”š"² ð±(ëBUýw™ºj[àœem""ÃsЦë•Õ¬½ÈîÉñÏJÖ;�Úµ±ëˆHQP²˜³Uõ‰ånÆ\ôÿÛGÉö§OàŠªãTõFlÇs£ì!À)!jãâ-¬2 §•èÖ“ñf)ÝIU?¨×X°²¬eÝV{ŽIDATQñ-}jyÍ‹R›"9§BûUÊö[FÿÏÇöH­Â#ÑÿÎùüÑäødY½b=Ií÷fmà(‡ñtž¿ã©UrÀb¿l©ªoQB휻§h¾çð4溘‘wNò¸¬‚åë2̵¾j�øCô$©†ð&¶à?‡½Äj}៮ª·—,»erü÷¼BÄ÷ÅÀÆ%úømÅ>ZJØÓ7VþSÕ;ËÔUÛC7=ï›–ìúÞ’}Ì£60ܨ’í;NŸÀ£þ:NDx ý’ˆÜ‚= e[l|ØPD>§ª¥~@œ^á~l�ÅFÖ¾ôáà‰›Ãçñ6¶Îl�sÊÚÉñ³Ú®R¶7ˆÝÇžFˆÈˆz…sx)úqY$V¬Tõ9ù;ÖœñÀ£"r ¶~íFU}®‹²w‹ ììeõä¶4ÿ®)¡oH­…ûÑ.ÌßèØRãCE#JŸU�/"“é¸ƋȰ.(ùi»÷ˆÈt¸‹ï/"ǪêÜœâ;`ÁŽ2No²ÛèZÉq;^ãÏW(›º‰¾Pq^½›×܃ }ÙúeUMë´;kRû¬\/Šx=R·ù²ÏÂ(Ê Sé˜÷yVmÇ鳸¢ê89¨ê¹"ò/Ìí,Ûâa%àNù®ªVqíSˆÈÝäo �r–ªžØCbdÂg ®Çc£Ù½ësÀæ"²­‡þO×”þ�’[]Ô!ï­uœ÷nŲ)Ý�¥©ˆÈ` öO…¥#1·×˜¯`A´²-g2qç Ǣ%÷JL™kèFÝ$&Ò1_æWu¡�©UbYVÂÖOf××ÀDù„ª­ÓMçïA!u•²ûRN®Øn¬¨‚]ÝRT§ÙšËe°1Ì{�¯a�CçuìÝ%ÞGøí°&»,UDz«<_¡ìè主KÒy5’Ú%íöB® éwªzÓ{{Ùk¯ÊoBü¢Ö=%� WT§ªú¤ˆ|8ÛÜÌõô„déÀàÚ³ ±.åÕ²V™®pV=‹šˆ,‡=€fëìÆW‰ÈŽU¬�eH]8Ó>ª*ž/bJQ;‘ÑÀÉt¬á‰Íßu újö9É›¿yT�Çiù]h#� °5°Ù8D¢¨æQº¢‹ç®ˆî^ãJ­âÖ¼Z¡l³ï‹éïF:o[â%ÑMÒïÐÝk¢ìµœ»ÿ´ãô7\QuœTupˆˆÜŠŽÈ~Ø÷–‘O÷¢¥ÇTuŠˆ| "‘­Û�GúJ½jÉñ]Øžs]å᜼ø¥EE?f0í¡¤Bç±z‘’ë¥ x?·#S:?"ƒî‚YS×Í): hò ù¦ª– ðÓbEµén¿ªúšˆ|[V�)VKa/_v¬[±–èžX¶î"ÛMË7åEžª¾/"çÒ5õã"²‚ª¾Kƒ(õÄéî5ÞÓJ*t¾~Ë–UÌ{¡;¤îª©{öPúé®zM¤ó$ÏeÝqœ:¸¢ê8%PÕKEä~Ì 0smÛsÞ±¬<½É¡”»7<ØÓ‚ÔCUgˆÈ>XPžÌ:ôeù½ª>”Så�äø\Umf4P°5¬cED*¬�[®q‘¦ðÿí�y¼]UuÇ¿¿$™> $B@¤? HQËT"CU)È`WºD©Fñ:¬$i-3«j™Ñ«É¨vÈï«-é¬/í"Ü7½¶ 9ÒÒPU!O¥3”g¢¬½ Z0RLÍ‚`T�äìA=°ø€þ¶dŽô–oѨ î"©,Çé/i4sëÆ@?_á+3amF;eóþuÛ¨[5‡ß…ÏéѸg˜Ù,ܹ8ÙÐl¢!÷ëj÷7®ø _ßfÝÁð] ¨ �0ž3ÏiZ£WŠj圌)*tqP>¯IdÞ¡PLU³ž»úQº¼ÃýÖÊ3>ó[Þ‘}ïè}•®ÑW{UI5+?ŠÏ{·Æ³ÑÝxSIyš´Vl‘}o4-‚ŒPTƒ MÌìM3;8…ºò3 ¸NÒç‡O²å�”úâœl÷×KÊý�ƒÌ-$uzEîÎìûªT’4ø«6úÉgäß]±Ÿí¨È#Ï=ybÅz]!]¿bDÒÕ$•¥ÊW°×,)SJ29.æþìfZàíˆßÌvŸžLY‹åÞn+ìšœLß»Íôd]…¿¤1…Μ.È3“Æk|l ¢´gaßõfÖN@¡vÊ3þ¹ öž[ñ n5Ž”T5*mUnɾÿmÛ.¾ WIË;J²n(*ÛS€«ÔMï”âsÚGÿ{(‚„¢ƒÄÌΰ^M»ÆJúÌðIµ\r)�‘.w�4­¤Ü?dß/KÉÜ;Å,<Ÿ]�Ý%m\¡Þ>´ç»õ(�)?’Ô2°‹$áÁ¦ªò¯4¦:@Ò^Í ÷ˆb¤Úeô÷Û¬M\}ÀÊ”ÙfìEý7ñ9à®v$WÓ¸ªº1žv)'¿/�”§­é4N°�+¹ÒöÏ�&EY/º&ìŠOLƒ(uÚ÷¼ÈѸ²¿gEE~?`ƒ®H4Ìl!pMa×àÛîæi ¦¶Ÿ¤<¯õ`™Ÿ}oçyo‡|…þäôNˆãi ¦t½™uÌ>–BQ ‚!`f3p³Äâ�Ï%)PJÐÌlVUñÅ\«ï~”f½+!éÝ’Îh"Gpa±xj�ím�çܬLšá/Š™ üu‹>VÀÏOe¿Ü”æçï³ÝßOþ¢•�4QÒ)ÅS~ì`IûV5¡K«fÅð¹-ÌJ‹“Ÿ�´r“r9EÿÔJüD»BêçÌl÷ii®Xn�«”k×HÚ j_’&Kúf›¦‹G¶zŸIZWJ‹÷ù,3ûM}´Ã÷©›|æA”ÁW »Bºçògü*IMSuIúpA·dêgÒè÷~¸¤SÚ¹G$m+騲cI1»$Û}­¤*¶½±¤f‘vŸÎ¾T¥ÍA0“FßÝM€´:G’¥ÿ$O§'‚`ìcf±Å6"7xtÜ¢ Ç·�ûëYÙ‡pE~o<špmûp¡Î;ð /µ:{µyÿåçië6ë�ÃWU‹mRRn]<N±Ü2àôtŸŽ+©³p>Ø~5Õ™ØDŽc²¶ç>Ÿ L)”>`ÿyVç`£þßâÿ:{”Ü—œÔn[ƒè{"m¼ØïéžÊŸñ©?ã ñÔ$µ:—ÐÏ’BÙ+Z”›�ÉrÙ þ§cKÎåxʨ5›<—¾ Ü—Ê_Ù¢ý�»³öûðgc`|V~Uü¹ÿY*;¥I»kàïïZ›oà+ê‡;Óø¼¯]Rÿ©BÝ8GÓðwhñ˜�¿ ÇÊ­ü]Éù¼x€öOÏÊoÐÆõ›]¨÷`·Ÿ�Øbëå6ìÄ[³ }÷iyßpËSAÞ­ð@7ÅÍ~ƒôØJÏÝ�ÕÔÆIY¿hRnn6Z6Ð]’d™�þ¾XR¦©¢šÚßÏÑš×{÷OšGã€õ-\ñ\VØ×RQMýÌlò?<�+Çùþ3ðÕ¨·ŠúX ÷1+ë§7C¾7“}´d geÏuE5ߦst>^\Rf %~úOZ”mêì]Ø¿ø£6ï½!)ª©�ƒ³6~G6€Oå¶hr} WïO×d.õÉ‚|«ª¨î“®Iqßãøó±¨¤Ý>Jì’~†ª¨îVÒ÷kÀZÝzGeýoJù;¤Ù3Þ‡[Þ¼ZØwù}ôLQM휒ä,»_žÃ/Í~Cã¤Nmkª¨¦ö§¦ºÍîÛ¹x ¡²wg©¢šÚýJ“6ó­ßÄ1m(ª©ü)Ç-M×}A“¾o¥d".kûô¬Îm\»Ù…z¡¨Æ6¦¶0ý F,ffxê‘C€%Ý%é3)ºäˆÃ<=ÍÔý'WKÚmø¤Z®¸äÔØZR¿T5f6_ (˳ø\Ø!ý]#;þð«VB˜ÙoñAécÙ¡��âÑ?kf�Ë€ÃÍ,8R…Ãèµà�4¦Âx _e,3‡n‰™½„ûžN£Ÿø*à†¸âÿ‘ô9÷Ûz’þ©�j2•1?GÓq+…bð§7qÓc�ùe¬†ç«­jÖ¼W /ì{7þ|äïáeÀfvEŶ‡ÂÍÀï³}3­zª˜!anÖ¼3�çÊŸñ¥Àaæ¦Û#3û~­óó °° °->—ûÄ/Á-IZµÿtjãš’Ã+á÷ëVøû«¡*­ï×oã+˜KZõß Ìì|ܼ8Ï< ¿î¹ ¸á>º»š»¨AÐ&‘G5јً’>…Ïä~$m¥|zç7›ûŽÌìIÇWXVÂÍÄfHÚÒÌ~7¼Ò�hæÒ˜ mEÁÌ–J:•F?¥ñAm^öI`ç ÷³ÀǨç Íy_1œ ü¤Ê`ØÌæIú>ÛýSÈ,ÃMhÏ6³j¯I�ô±$ÿçéŸ#õ Ü\ù|3» @ÒC¸©&TTVÌ}(¿!éRÜ„v\‰, &ò ®lÝ€+y:�'âŠÙ4üÜoƒO”ñ<>¸=×̯(ó/ñ‰Š�ððTü¬Q�û)x;"k1jì`¢ýþšFùóBUdî“ôeý�·£$(‘™½ì›|œ�Ã'Fšåé\Œ?_3�O C;rÝ›ü,¿JÿÁø<•Ïif–OÎ4ã¿©Gl½¯y’LoIú�AȺD©L†{%mŠO¦F£�.¸‚úoÀYVÏÇ{;õÈÈåè�C=ÿh«w„Q¦¡Ñ¿-Ìì–êÜly\ ËéÃÍÂgá÷Õ,3{µ¤\ÞþKÀ_H:¾5�þ“)PŸP™\k-¢8§~O•t°/þ¬OůG1 pYwúo©hú»JÒÍÀɸÅAYnêŸ%ʹV=¿úã4^ÇÏg�û¨¿×:™7†ù¢UŒl$}¸¨äÐóÀqsÀnïhI»ã?àµÊ{€?3³×›× †“”fm\™YŠÄT€ Ðî8`#|à4÷1|,Ÿa—´ŒúÀô_Ìì°6ûY_íZ9Éþ˜yP¤Ž“RX¬‡¯~¬€¯šÎ7O#3Ø6WÇ• )øjÔ“ÀSÝ^ÝLywkÄ>Ṵ̈_Dᑎ¤©ø¹[7ƒ��_“Ê+9’ŽÁÍÃkl“”þÚññx²wá ÌBÜ„º§+Ð’&à µ(¯›YÕ4:Ý�§Ò3>ÚHÑœ7Äï©Õpsç§�g;1Aœ"çþ1þÞ]Ÿ\,4�ð<âI�ÞÖÅÏÑR\!~Ä:ŸC8–KBQ F ’fû·(r¾úpÕHhJ:ŽÆ”˜Ù‡Kž`d3TE5’Σ�sŽ™m?œò ')ª#Iûã«m5N4³ó†Kž ‚ ;„�j0š8�®ØŒÍqÅðI?–ô‰6Ó0t3»7‰«q¼¤=›•‚`X(ú§Æì7è=Søüs«Ac„ðQ F f¶LÒ.øÊé$úûÈÕ&^&àÁTö^”t%n|oÏ„­s$î#·~ú~¹¤ÍÍ,OTA�‘4‰F%çªá’%¨†¤ý€v}/ù>AcŒXQ Ffö0¸¢,�K‘Úñ5ðà$÷Hº_Ò ’šÍé8f¶Ï—YóWy'pZ¯ú‚ 9f¶ÌÌÎ*leŠƒ€¤•% \VØý:pþ0‰At™PTƒQ‡™]‡Gü­BQ¡Ý$Õ›/éIûIZ±ãf˜Ù�x.؇§À'AA$}ZÒbI//WИç+föÌðHAt›PTƒÑÊ—ñðýíD«Ýïµt× $]$éO;,_Îy@-"êD<´}AМ‰x´ÙUKŽ]”‚ Æ6¡¨£’ú}<=MÕäõ¤²�?ÅMÆNÅÓÈ4ÍÓÖ Ììeà;…]G÷Ò9‚` °øîNñéa–%‚ è2‘ž&ÕHÚ˜�Oº ä·º8ÁÌf P®+¤<‘OP_8ÅÌÎY‚‘‡¤Õ¨ßï�öŒÁè#åÍœTØõr'òevHž7ÌlépÉAôžXQ F5f6øåJªá© j¬\-é’öè…| ˜-®.ìÚ¬×2#3{Ȩ́-”Ô ç˜Ùë…{pñp*©%ò„’A°œŠj0êI~Jוž#ñŸhôeݸQÒ}’�4¾bÖ¸¿ðù=ì7‚ ‚ F ¡¨c…#€Gèﯺ–™…çÝ»3;¶ž7ñAIG'3³nó¿…ÏIZ¡}AAÁ¨"Õ`L�‚}x�Feõ}éøÝf¶5°pGVý½xn¾ßK:YÒ”.Š:.ûÜõô8AAA0ÚE53˜Ùo�£©ß×FRT en2³í€?nÉšX8xZÒ�’>Õ…<«Ó ŸçšÙ’·AA£žPTƒ1…™ý¸8}™¢Z(w»™M¶®§Ñ‡u<°p ðŒ¤‹%}TÒ�žI›Ÿ-ìš=”ö‚ ‚ ‚`¬éi‚1Gò5�ƒû¥.1³U*Ô©)‘k4)¶¸¸ ø90ÏÌÌášVe÷ÎÁ#ƒ+ÆÛ›Yn†AAË=¡¨cIS�y¸Ò¹Ž™=S±ÞDàãÀáÀt`B‹â‹�¹ÀSÀÓÀüô`2°6°°ý•ßãÌì¢*2AAÁòF(ªÁ˜EÒNÀÍÀŽfvÛ êO>ØAÑN2³s;Ø^AAŒ)BQ Æ4’¾ image/svg+xml PUBsfasdfasdf IPython Kernel ROUTER ROUTER PUB - Kernel raw_input - Requests to kernel - Kernel output broadcast - Request/Reply direction Front-end Kernel Proxy DEAL SUB DEAL Front-end Kernel Proxy SUB DEAL Front-end Kernel Proxy SUB DEAL Q W E R T Y U I O P A S D F G H J K L Z X C V B N M 1 2 3 4 5 6 7 8 9 0 ENTER Q W E R T Y U I O P A S D F G H J K L Z X C V B N M 1 2 3 4 5 6 7 8 9 0 ENTER Q W E R T Y U I O P A S D F G H J K L Z X C V B N M 1 2 3 4 5 6 7 8 9 0 ENTER ipython-ipyparallel-14e3c43/docs/source/reference/figs/hbfade.png000066400000000000000000001132321520071063500251060ustar00rootroot00000000000000‰PNG  IHDR°°ÈN0*tEXtSoftwareAdobe ImageReadyqÉe<–ïó¿vd2™‡4ƒÁ`0L†N> ƒÁ`c0 ƒ ŒÁ`0 &0ƒÁ`0�1 ƒÁÆ`0 ƒÁ`0˜À ƒÁ`c0 ƒ ŒÁ`0 &0ƒÁ`0�1 ƒÁÆ`0 ƒÁ`0˜À ƒÁ`c0 ƒ ŒÁ`0L` ƒÁ`0�1 ƒÁÆ`0 ƒÁ`0˜À ƒÁ`c0 ƒ ŒÁ`0L` £H§Ó¶p8ì-\�FÝÕ싞ãý SXø,3˜À FÝ¢¹8?? …|Æu«++ãåV"‘pâ9Ï?÷ÜÕ´-¸¾>ÒÛÛ[ä³Ì`c0 �ËåŠ^ GŒ ªˆ÷ mom êûH^qå•Oж½½=Ÿ@Èf³¥ù 3˜À FcnÌÎδÛíÞ!SY0Î�??ƒ…”Úææ¦ggG.X�uO>ñÄ x\^ZšÀ#Öãu|†L` £aYÙÚÚ �I�°¼¼<ÑÕÕ�>{vvêÌ™¹õµµ ¼Æï÷oöõõÉÛŒï—fC¬Çëøì¶¶··m_ùò—}ïßûF?ú‘�}ä÷w¾ýmïÙ©37`^óÿý˜øô}÷Õ}Rƒ}ⳋmÃqÐç×;ÿÄ †š€©ohxxqiqq*04´Jë÷Âaßäää<½„%T—/ù¬1Œ$qû¯¿a&‰Ø.›žŽbÝîî®ýÇ^úÒ°ñu�<ü°GZõÄäˆ}¿ëÝï^ÁÿžÞùÞ÷Ü5õÅ¿þÿŸ.öú뮿>ŠcO¼áöÛ«þ\&0Ca@-…¶·ý‘½=/Ÿ F%Ê �çÿãÛßzâÌe—%i˜ñµÿÏÿû®%ŸÏ—çÅk°DCû{ìÑGÝ/¼î:ù¿¸&m´OåŸ~øO&@’ ÇWÜ|søóŸûÜàÐÐP’ÞO¤†GzßËâÇCŸýÌgµ› Å12:º¿ýïñzCÁ`0€çzȽa}!Ú~Rà¶#ÖÃý_ýªÊëŽ;ß²b$¯b¸ã�ošùƒ»Þ;NDõÓ¯ü©«°î—~áÿºê·ßúÖ)¬yaÝ›nÿ7Ó/ºîúþ«›_yî7^ÿúil£÷>?7'_ƒç}ÿ!Ï ¯¿.lÜ'Þƒ…Ì•/yÉKÂxO-ß“ ŒÁPn·;êñxr…0øx<îF@Æü… Ó§�UDb[ÿÀÀF4õ`}©ý!Ç Ž|f­‹¥¥%¯¹öÚX%ï{÷»Þ5±¾¶æúþ£�<ö;oÿÝÅo~ý~(,ãk°íe/Yè{ßýžÛþú«_‘þÖyÁ Âçç/<ŒçâÚt‹ëT^“ù™ÏøAT¿ÿžÿojðÖŸÿyy-OLNæ\µß“Mˆ †bðz½a,Æu„ÀïE>°B€È.Ÿ™Éù®=wîáÂç¥ÇÂgÚºèííMáqqaÁYÉû¾ûÿ(•9”ÖÞÞžTò_ÿÛ¿õ‘ßìÆݸ×ßߟ¾âÊ+c 0¡ä‹ª}¨?zþ²—¿|ïÞ{>‘†O $÷¡?ùð<öAÛK탃Á`´!^}Ë-r‚rÏÝ%ßS9J?�DuÓ+nÚyã›ß´ZôQàÿ¢çðƒ=øÝ|ûúÁã�{ßóû¿?a|íÔÔT‚ƒa ªªbTš¤Üh@Ù!Ú&Kþ•Ì ø½~ñ—9ø¥¿ú«üNP>PT ¥ãéÕ·Þ²ù©¿øäȳÏ<Ó •_" ? ÑÓÓ“†Ù¡ñxýÐðpûÀ6D(~ÿ_þÅ;2š5)ÒãŸ|²ï;ÉGÇÆ`(„ù fl*› WïÕ×\óÿJæÇþñ-¾êg^úÒ¿è_]YuŽŒ 'A^ˆ.¡!„¯Ãó™+®�¾2�Ö?õÔÓn�”‚0 ߃GüOÑ‹÷}æÓ³qï½"­›_ysèÞ{>!ó¼Æ'&’KKËÉÕ•e'üj¿öë¿.£Aj/¼î…áZ¾cG&“yˆj£y êšæÐ::Ô±âg2YKÎeÓÓO³ cÔ�ÞM/ÿñsw½ïæ_óÚ׆ŠmG4㽟úä,ÂîY�1&CG‡CüUIˆe L5Ó&Ã|@�TY©íÈ#«•¼˜À ƒÑ“˜ ¿W-¾/G!2 Ôh+†è/˜G`ßovK |öö֖ߘÏÃ`0Ô %S‹#Ng¢ÜÂÈk««2 šùŒÖm¡ÀÐ>âÙgž9·±±@M¹Å;ÒVÛ7�wó%Ç`˜l–o·§{<ž0”íê´ÙRxÞÝÝã³Ã ¬¡@Í·­ÍÍÀÙË/ªª ex�ÃSØ®‚ÁhººœZW·S³uvjñxR‹DâZOO—\‚ÁÃà.ã:‡Ó®õzÝšÍÖ)&Nò=x/£:`Ü Ê(âÞOƒ¸Œ•R0&8…£r^Æõ…Uh2‹Ip±m &°|õ%TjÅ#/cB©1‰Þöö¶ÿ@¬ßßßwºººb(݃ׯ­®Ž‹u.Ô¡C‘ÕÝ�fdÛ[[C£ccóØO±}ò¥Æ¨Ã#šÏç“°=IF 2"°Sߣuýâ=x~I<Ç{°ŸÍÍ]mmu‹Oj��š“]b|X ‡Çüþ LŠ09ŠõW Í ,>F³!Æ…ççæfðZ>{L`'"‹¡-@Qµ´¸°0=199‚9ájÁŽžKBe=…Yu±ÅÅ).Æ%£�í„B~Rx0U–Ú'ƒQ @^[‚xŒDU è}Pa~oÓì¹ÙÙ«ÐQÏ‘°� ãþÀàŽþfV±` ¡(Å$y÷>ÆøËP|¹˜¿ î ":¾ÂkG[øÀŠåµ€\ìv{‚Ôñ?ù·qEÉ$ÐÓÓ³·ŸLºJíßëõîàæ Ü Î ÜšARn¶ 2ƒêÐï«$,õR?°–´ò7Bpu ê* 3tÀz㽯w×vs!e&°²ÑÝÝæÞG 3Ši?¥�� j3WŒK"ª×\;¥]yÕ¤æpØ¥9±U È[ºWWVÆi ËH�X‡G üXgœxâ½ B½i-/-M ìLúxÞŠï…cB`‘õá¤Á–q{{{C°ÀÐz˜¡Ìj "c´�ùƒ—.�ª ¨£T*å¢õxÄ ªU©:vµì“Á(¦ÀæÎ¯¥±&Í€“©¨ÊÅŸœ×žyzA ‡£¿·Þ€•"‹Éûf}²ŒàÞ„Y ìa�V$ñ’YnyyYšw—=44´2199�û ¤+ Lú­JMI&“¹*ïÔ`”î{|7ñ�öòÕ°-�c…_ÝøzFõ°¼Œä:f} ˜ôp!á&�¯Êp!.®‹e܈aD"a–8>11_¸½š}2Çæ?¨±©3Ã2*1¹/[=ÉhÃýäáób‘† ¾Ðöžô§á½Í4%–5ƒîìLЀu\�¦¾1?³ã<|Ì“§OÏFùµØ €0ø±Òi;T¡¯¿³W(,"6Œ‚˜Ó²¿�3aP¤õ1b³Ùù¨L`&%±bvgÌäh¶WHRÆ×Bg¬Ñ\P¸­Ü}2'al|PH ‘„0'â[¼SKh“BU!P£[ja!?° &G8è½­È j©�åpø‡H¥ƒƒƒ«´^òÒÉ'¯±¨ñþ§1¦Øxc Ú(5F0˜À Ë Kfý^=šTQ§'UõÜì’$&„ÌCyÁÌH…G·XJâ2¾·€_ëààÀ~Òþ!(¯Â×a=EóUÁh ÓíéÕŽ �\N†QÞÀ¿[rH¬Tx=,"­Õ÷Ÿž°ë�Ê"SÚq@ÎäòÒÒéÝ��=¨øÆ`^ÄzCÀ?†ˆF�î%˜â`²«…Üx¬0/,Ù RqaO¨z|â†\$»?£ý@ýÀ::`-S§sI&“>§§¦fk1wCÛ‹í‡*T€à‰„«0ȉ‚ ÊY�u‚ìRÕšA^#ª^+#££ó¬<ÛL�Á±*íZÆ®N eGê@ëLerÇÇ`X'‘m‡Ê*¡[*j·’×– R^ª��É­ã £—ʰ¸ dÊÕ©ÖÉNqÐÀ‚‚š2^¨€®îîh¥Éª�ŽŒ¯±¶&0ƒÑ8 º"U<¶Í��0Üfc0Œ#€ï‰È æ7UБK:“K–f0�1Œ†À¼ædc™§ýu†ø˜‘_ZL` £‘ÈdJ—>c0�) ·³Kó¸Üš½³SKh±ý¸ŽÞ¯Þ.·æuå›õ7";Z2µ/Ÿ;ím°§OKˆÿ7Åz‚_¬ŒëŒb@… UC·ql\Þ¨>cm'¢yï㱂 ¬jŒ÷4—Í!/\`£}ƒZú ­Ím,kÑd\^p#bÝêÎFñ\\|ïÀ‘ ÐïQë¢,–cC�`‹u�¥¤x}9^¿½µåoU!U3É©õJPEàÅùùt]à µÆ ls;º´nA„yæac«‰ô¾¶¢_t¶N›võð”6=8¦=±rX,`¥ÄEÙ×í•^ÀÛ¯ùÄóPLÍò†Ômš5$lîììøÑÒ!‰ÈÙ?ê±�¬0®,/Oa:Qï'“NÚvA¢•„Ê¿óq„Í`4r¬ÀkApÁð¶+ð?È�Q_t¶û ÀE… ¦A˜ ŽCö5.IZÑdBó¹=¦øŽ¨#²AghÌüAjèUDí*äLÆnO`Ûäää¼ÃéLš½‡ûüsÏ]�–î«++èP¬±)£1�8LhbÁóBÐ6Z ï=Z_lŸÅö§ÚXáëöä‘ýÏ`Vw$Óûú rÈç7L^™{þðÂ3úEèñ�4ì%¢¦¹(·67…•ÀQžæÙgž-6¨;Ž$*@™U\áÿD¨4îï]TAé ›Ö¡¼ÍW|c’™ LÊI€IüB‹ÛÁœÅÛ±.¡ß{1ñZ˜å²¯ï’Û(ò)a?X?\È3É)9V¸a�Ù“¤‡ó€sÂ&C&°†ÀisdÍâFñºò/ÄÂ$lᘅÑLŒn3óïyú©§^xÕÕW?ƇX ­K¢�bšèhÓ§ÆòÈz1ó›G|€ÿ “Æ`xË|c…øÑý¸+hò«i«|QÔ�| 4”�YÍôJ™D ¸¢û }Ƙ%-Š(2;@r0³Áä&Hh¶%…À Aqb´x7aäÕÕÕEKxTAG#TچƊg/¿ü)”)BóÂ��if…¹-?˜¼Š“>¨/X/ʹ_ð(2�˜j÷W9cÈ -¦+PD/âÿ,‰1X�Õ[GÖ–ŽÙ.H—PRsKGÔVn@”³­ìÿ‹Û빋ÑE 5¬3î7§fâj¤Óë§$y' ôP ÜÛ!Š $sœ/,&H&T(.R™¹kÂëÝ!’êïï߯q‡ww}èÈËÃÉñ$E«…‘¨<úý²¹·#ù™Ù‡A¯ieD5c|ãY“éz©a=™PU+˜ÀG(º'/$„¸&õ\.\TDJ¸1óÑ¥?Ý\¸‰6 9¹õ½Ù#̶ºÅ�g|_8¾ Äwö1Ø " “Ék}}}t``àØ–.ˆÞÉáõ¸wuÅaT:´ &D�×RáûBB ºaC1Û}hÅ÷A¿)úßø$yˆûŒüB Ê�Ò'ŠéLZ³é"L[á?ªv¬ÖÃÛyû‚”È[层 LqàB:Î¦Ž‹´Ü›3ͨŒ³-Õ ÷^Z]¸xq~�ƒƒÔÄI¹H ;�ж"HÃÝÓ6†Î#ì~qaaj߉íŠH€°/ƒ#‚È¢Åû8b ÕÕ]N¿¶þ��uJ?à¡äxÀW eµ¹}xo� •‚`j¤Áϱ®VíXQl�Ñ×§òXÁÆP†´Œ~ ¨‘R-& _kDaÒ- ìǽ§Õ ï¹´¸8EJÄDßã8b[„ þ@Ù¯Jl+Ef‚¸Bhœ:xê�HÇýÝ^Ä‘,¨^sD¡é~føËˆ8&ú‡ryT £=MaSÕ�gŸyæZÛÃŒXŠ˜AZÅBí‹©UqÀ¿ÈIÒù€jÂB¡ð0³!¤*ÄèË‚Ê2šÑæ.-ç,F5ƒifE€ö ÀWVªèƒ Œ¡000ú¥TÂÍ0Ò¬¨<ø·N ùïj 5a¬õ3­‰z†hù^jª*Ô†_—ɸöØÒññ@ÅBÏ‹­Ç¾ŒëJ½�ÁÆ0Ó,W Äó.ÌÀŸ¥âñ!2¯Q�ˆ®\]Y™jÕ÷<î³Ù‰p|¾Z &0F�ú:$/•8,#–ƒ¦5\_[›Põ7‚ï ê¬]•ƒÁÆ8*uuOk™LórZˆÄÑTQ¥ÎÀ®�}¾0 &°êa‹§åÂ`0Å€ÂÕ±XŒÇ “Â’¥¤ú6­ä #Ž ÇÇ—ƒÑz ‘Éc+0e€°fT"¯%Ú }±vwvüúþ¢…Åa«R„È+âví †2Àýxõ5×ADPV„Dz_úȰP¯*ô¤¦O�É€ (0ZÇhª “íp666¦˜øØlijn\_á_� ¬)äeå„A’¯ß#± ,„ì E!‘e”âöÞ‘ý`½·×�{¯�æˆPVÁÝíãgÒn¯P^ ‘ˆe~sUt «0£y@`)0 ÇLÍMQÌm~øWl,Ú* ±ÝÈKÎP@`Bq He%s ¢’þAL0 b" ‰¤ðz¼÷šk§ä6ã{Íø²<]nÍíè’ÍÑí×Qˆõ§',‰íÔ˜€fŒ¤Ì`R4îWV‚ì¸M|ý�{ù\ ƒKÁàP±¦¢ªU€ú×Äúúú¨•òH™À˜¼šqó¼ “"–b€É‹YñÄÊœæÊ €¢2v&²�‘¯™ .È×ç®±îéµÃqÛó®-“Ffšb28\Z\ônmmNëfOïïï—†EŒ7+ܱ› ŒÉ‹Q1�¥HM{ßq¯¥DhFã�Àˆõµ5Ìa†DfRŽÛ[[ƒf8f³Âò>0&/ÃÜ“ò*Ì,~%*ê‹c6‹ÿŽ ŒÉ‹Á`4HÑ IxueeÂ,ÇŒ43”#ÿŠL`L^ F›bdtT¶3ÚÛÛó™%ÇjðÔ©VaL`L^ F›÷o¿ ]Y^ž2! ·”TŠó¯ÈÆäÅ`´) A•.ÖVWMQ®‰TØöÖ›ËE!Î_¸0Ýnä•ɨW)½ÙmÚíñ´–éàÚÊ@=:–§Qù‰ÎªßßPaëkk ]¨0«WüaVP˜¡«í@^ª7*©ÓhP¹¡ŽtFCcEU"q§Ó™àa¦~@X=ýæËKK§Í`Jà"¿¬ÀN&/ª*�YšÕ•̤xD ‡á‘‘%ÕfÊÍ:ÿ““óõlªXK#ÅBˆ}„8‰µ1¿ù³Ï^$`#�ƒU؉䅪ò˜¥YùG3Ï 2“Š›÷b;ûøêÝT1‰x0РšwÖU÷77š1QPù·ÂñB…mllŒ@…1�Õ¦7!ƒÁ€Õ›Q�nÚvQš F1M‰fˆJ„ ãV+L`GóàúúD»�ú"Á!Œçƒƒƒ«VWš Æq€)Ñ,Q‰Üj… ìy­®¬Lá9üV'/Ì0á´FN ªp}5F»ƒL‰x«„êÊÆØj…UX˜Q‰€¼Ú¡eÁâÂÂü^HŒœ:sfŽ/]#kJìÕ•�ê¦Djµ"'à&iÒÉÖòš¿pa†”H;�ü|(¡ƒç““sfh)Á`4 ccc‹˜Ø™Á”844$-'¸Ÿ¹áe›˜ÑŒ†ðñvP" lòó††9hƒÁȇ™L‰Pa|‚†—üëµ�KD]6==ku%Â^\X˜Æs\ôõ g0¬„Ñ›¥V"štâQoxÉ*¬lA÷Q•�v0£Áï³Ì#ÜšœÁ8f©•Hía¤bÜÚä_Î↋‘r½àj3û½ŒÊPhJ„ù]Õcõõ÷Ë`nµbq …B>d°ã9r½Ú¡:û½Œ*‰Á�༺²2®êq[­`Œã_΂†�öl7ˆ×=öè£u­ŽÒrXaÁÚvñ{’6œ¹Õìç5¯}Íæ‹ô%®‘ÑŽ`b´0c‹ë1Ñ«X-TØÅùyïŽPa±W̓ãñx½!¨DADþj¢�ßý®wM|óëßðÿâ/ÿ²´ä<ýôÓn«_o-'0¨�v,Xk¬¶Q i¿áöÛ7wÃa*•bc4_û›ûµÕÕ©²Ìæo!À·‹ò-Uœ(A`XÄÄ~±R’y]6=ýÃ?þ£ÅbÛaÂû_ÿôO^¨ãWÜ|sŽ aüÞw¿ëyõ-·„Î\vY²ðõããã Œ3´æÀ¾ö5ßË^þò½bûÿÕ×½nû�\ZZr•ò…Òvãñ¼ÿ}ïÅÿb¢aëëëKc=>ïÿá¤*ýñŸø‰°ñ[jB„TFÑM�ýáx^sëmWßs÷ÇG±<þøãyª²¥Öމ»FÓa;‘6£}TÚ›n¿Ý�Pµcƒê"?“ª•ê‰dwB¡ŠÏß'ïû¯s 1� H$�õwìcCëëëÎ{?õÉÙ¿þêWf?v÷ݹIóÐðpâ{ÿü¿ŸxÇ;Oª6(+<‚\^õ³?³‰×Ã$ù¥¿ú«ˆðøG===é¿û�Oà}CCC»> ø ñ™÷­ÿù4TãŸôc9¢[_[s}ðO><%ßY$±½úÖ[6¿ö�¯?õš×¾6¤�‘élÒírƒM‡pÜÖº?ÌŒ0`Ì>û,�žŒšÉj Š�”þÇúBàzö¿ÿ΃yëab|ôáGl0 ©øág’*LÑÒM4&ÀBS)É !�ဨ@ �T¶͆¹óáñÈ ôÄä¤$¢ÝÝ];ÔHï?;uæ�¶!D8}ölŸEXéwüúßþ­$I(;ìª mÇþAT0¾õ·{¤ evÓËü\aÄcK|`emG‚_d:DÅìzìS $ÝbÆeÛ ïñÌ8DN@8œ?žÁDøðCiÚofƒ1`*„Éð†oÔn¹íÖÜë¾ð—Ÿ“ë ØöûwÝeŠïO~¦½pXÉÄaŒ…ÈW“Á[[þJ"²anà¢úæ7¾¹G¤0sÅ1¨2 þÅH¬/¼î:ù™/{ùËB·¿ñ�Aãz#ÌŽµTøþÅ…i†ÜÛÛ+2õ5×Èý#W°œhU�2Uãø³ÿò‘ãwh �--.Ji‹ÐÖz¨3@’¶n{GÎGµQ‡ F-øÍ;î¨ybò¥}åÞOhÏ=;+÷…ö+¯{Jå¿?cT^Åñ§··WF#"brl|¼ì‰.|EPT=O äàu×_ß1õõ�>-¨¯×“þoŸýìÜqJŽÌ†çŸ;ïÆþ°_Éo½í·WែÂ:#IÁä¥ó#üU¥ êêÏ?ú±(^ XdoÏa1r…ùó¿þ Rz7¿òæPK7�°Œçí”ûÒæ„eF­H§ÓZ4ÑÜ==˜­Ù.®1-�kv±­X%‘;~óÎÜsU¸R¹õþ'_q¢ú¤Jƒ:ƒjûû”†ÅÌ�™äK^òe}Ú0ß#xlwwWIÃ1 eS1ÉÞ÷™OÏ>ñƒȲtç~äGb /<‡*ƒÏJüFÞ§~øC÷ÏþÜÏ…H!Âϧ¦¦FE„HÆý+ÿzûçÉvÍµ×Æˆ|NŸ>ý4¢…(ŽÏ†` úœÿñío=¿>ø�ö‹ÏÁ#|_PU?|òÉnAØioá1Ø›?�âó.Òwj�­­®ŽëR~µ]T.ÂF‘6ç�µˆ´ÖWW5¡$r$•Ä&FeInXj¨x¾îw̉ÕX1x=Yׄªy`y c``‹F•­‘H$+þøË%0 î…¼QU�|ŒAÆðv�Oa¸{©ý®7*§ÂýÐ6<*¬bëÊ=BSƒ8J> S�Àz›Ì˜smRAÚÈÏø­·½-³N#�F•¯¦wwåúJ�ÅäBŠ�Q!YôöÊÚ‡b†®Eö²¾Ït*%ÉKÜ[ÚÀà`Uû“ ±¥ƒ¸ÿ^'}f:q™0#ª�’ÅãÞÞžOÕ†œ* ©F> tKm§œ/˜aw7s´%H1cÍA^ûÉÊùª Ñnonò]X�™i` èú�§¨i±Ürëmò¤„ü°Õ•Õ¢¯ƒj{åOüdΟö+¿fÿWžÂÑ£AxT%YÊ ãnÍ¥Ñ4"Ô…Í·‹úÂìΘ¨mæï‚Ù~·Û-I ƒ$ü,]]]ZJ¬×•¦ThAlB@%À”ui}]s8�’è@Z}>_N5@…á}¨�JêXOÊ ¯Å> ò@–xÝ€ßÏw¬�~:—r�Ý.ÏY1eeô}^}ë­Y?Ö 7æTÔg¿ðù¬?kæ AJ3Ú×î¿_Í{=Ì�T•ã'oº)�¼°þþ¿ùªûÖ[oõ«7¨†žžž0%„j…QIŸ´¸W6ƒëënqøÚ¥Äž²[n»©/1S•þ>س•¨�<°¹¹óîw¼ó� �ƒ˜¼ýý’l0pÆ"I:øy‰ï™SV ˆ&- ¸ ³}�ðôT¾ûÁz�µÁ~éµ™L†É«@VFU\Œ¼²6šçûÊ).Ch<×�ñ:2¾Ïøúbï•×¼žvÝu×)Ý‹F\«a}’©¬¬¯¯/$l‚̈\ôà(bB,´+ã bhõÅIíaê•óU ÈÀь<0øW0ËAáÑ�à‘”©z¦„ÏËøþÂ}Tk³üÍ+Î'T1©/·ÛÍ'¥LÀ ³>ÌûªúÁpŒlFl�a¶€mÔ€²Þ‘ ×³|ÿõµµ RœVˆ¶¤Y~Ww·T[0®±xtUØ Òøþj÷ÑŽðx½¤(ødTN’ÄD³[Õc„�0#ò/v 1!Â\&f‡©‹óó3È{B䡤ºº¢˜Iˆ™µüߪ%¤¬¸a™ó@\0û�pŒëÉ_• |`¥‚ ò.>‡C ùÀ ºÈ$‰ýãÿD"Áwé1€:ŹêVD}™!,7iêêŠÁ<·ŸL*;Sb3âñèÈd2 )- ÚêÊÊT©™ÏeÓÓ³Vü1Pqã¹ÙÙsx~zjj¶ÑEŠQ4uEæ­·Ýæ¬w(=È)£`˜;ˆ泆\·‚@Ašƒ:¡60�ƒ/T¾/ü›µž[»ÝîõzgU¿W1™^Z\œÆ${úìYe�WŒ'WAˆû{žƒ9š Àœh˜Ñ DÚ…¼c™¬fTØoT?0¨),*Ñ�Pl�"±F¦Ñ-ES@܈öôõ÷·Åàçt:¥i_Ü;JÛªÅ8²‹D"^&°&@Fé4Lž>=gUò²R™,‚Q"|ßiB™D3v‡vУŽ[£#Õ:™ï×. B¹HïQù8{ûúB(~®jbË¥¤ÿ'&'ç¬\>ŠÊd¡¿™Ù¿'gttÀ·¢N`&c�¶q›SKõžRh ¸$Ø5Ró~jÉ£&Ž…*]º»»c°hÀD¿··—§D(X „t)êØ û†HV.U” ûâuDh8”oRe¢m,@ŒïÚ.½ËACm0Æ�2JV>ñÆ2YÍ Üà~` •PK?0äŠnmnæõé’Ŷ¶†"‚´ð2™tQN©ÁZàÅ‘Àëë9g0úï‘©�ÈÒbýöm·Û¥$F$"Ö=õþAfªY‰�KŠG!X…5‹ÀpÀç…ÅÊM+qÓ´ªLV3óÀŒ&¨�=Rbzbað.· Ƙڠ԰L(�Åp1‰ mržŸ›»ŠLþ8Ã:Ü»*ŽU=zâ5¢ù*i�Ñ96>~ÑÊ'f È{+…Í3Í‚)0Psž0`Ã�ÇËÊÕ /"˜ j®˜/æDR4…@¯>}ôDÂg@Î|µ4‰À0 WÒUÔŒêkkk+@?_RŒvòÀÞ|ç[’åtÚ-g Ô”ó„0÷n·»âýÀ?s¾««+VÊ�ê8PgÆu˜€ªåG¤»§›SÇq@~ ƒo³Š‹ 3)ÕÃF¡¾(i¹ÇZi?0g4"üÜfëÔººœZ$Ïû?O ’?(ºϱϱŽqˆŽÔ¾Ö k™´vàèÒ2XìŽìyŒdÅCÚÅh\×±×l±ì¸Ÿ±9´WOî½�F=ú�a y!l�`•¾ï÷cý¾ VŠ‘Öa‰$a£úRùšp÷ô„Aî\Ü· ›p«ÈKhm¥¡Y}¢Ò~`‰x\&ÒÖ«HhæŠqmúì¨PÛÚ5×Nåˆjḛ̂|4¾–Ö>ùžSâqòt@»òªIÍ×Ïå�r„ iöÐZö&dä\}N³ïf«”tFvä’w#ÖÙ·×ÅóPn=ÞÛS?~Š‘`­È TØÌÑét& ó¶’0ß‹õtObâ�t�¾¾¾M1†L”ú<˜1ñ4ƒúÒ‰]:ºU.@¬ŒËÉúÁ®–˜c#®üÉ#õ…¤e³Ìˆ\z)(ä#‰Á@¶:±Û«Ï¦ðöJ5w~%§²Hq•ƒù ÙAzr2  h¡mF1"j/T³$¥2Cïsaú½bÐ_{^³…·´ƒnuÇ=DRmB�HˆzvÁAÁPNˆD¹6¸'Uˆ �±±±Eº'avÄëP8üüsÏ]}\è9&ž˜(ƒìT¿¨' ¶²k¦f–SB®Î–,ªÃ¨¾CC«¦ùÁÅ@â’3×dR&,ƒÐ ÊRU&±:v­§§K?/Õ+;îÎ|<:ª8?0'v¤÷µLWsj%" i(qV¹šïŠe'A¶4epp0Hÿc’H¯›:sf®ÓfKÍ�??ƒðùé³gŸ¢z{ ­Ðûà†8.ôO¨/䎙ápë>AUq*§À'«¯Væ·•Û 䄾Zéô¢ÀÿPdX:::d=¼r †$yÁ4ÿ×ÚêVEþ,¼ª $¸¸ä «p‘ˆj©¤f‹ìhéž¾ ÞÑ\‹Oe՘ݡ¥<M9Þjû�AMÅØøx^ "c­BÌ…ÉÉXr3®ƒš+4CÂLȦr#N&0ž|â‰jTuQI}!ì�?žËKë¢iÉçeÎÜ¡ÌPÙ$V.ö“)i>ôöºs~­ÙÙ¥ &!­SÞ ™"k”%Ì¢f¬•XÛÎ¥,ù†ò‚6N¶œôhû�Ó2ı±(–%ù?£8yšåXá ®¯³¬ëLh�ÉlÄé�£S;pŠ�¡Ó0ÈdÄvñš}1X:my&@[4k–J»íGÖ¸l¹çFdluû‚ RO#õ›}+Õ—Þ¦FÚÄb1Ù§ë"—‹ôw ‚BQÙÃrQ˜ÙUí ƒÙ¾«ðnTcôû<ÚînvL9åŽAžÜOi=ú:ŠZ<û€ƒš£uÕ’Ì¡½}}–¸A‹‘­³ ìSG:YÔÇ%k.º½’Ö [öƒUH`¨Ùd1ÙCI­##Š@—$�›c+!‰-ãèÈ=ßpJ’댦�­Ã>s¤¶»ŸûŒüxª¦/èÎ×õ„Õ×€ßß4 ¯'0ºãñ¸W ÒÝ⹗ȇ”ý�Q £#i€ºcÈ«Õe”T̆xN¤„ÿ÷QAY‘Iϱ ¯Ïû�œv�Xk8},•†jõVŠ#lÊ*íõk¶ð¦ô�¥=‡n§ŽƒtÖü˜ŒËŽt“ ·¢ØÂ”±æj+ÐÌV'ðƒÁŒ?X™±¤¼b`è±k®Õ˜ÖK R²e K(²}¿K'ªÍŒköH*ûúãö)�^Ë}l;©“œZݾ‘cÒŒ¼/�•XºAXXAÉóD•ü¹W¿:ú¢—¼Ø}ÙôeN4•,ÇlFÁ0ÖÚ±[‰‡ ä³¼¼‘SP.¬i#ÃÚ¡¬ˆœà## ìD�%¥¬š �7È‹HÜf7¿k—ò·Š˜¸'’×É\/�WÆÙ¥%}ù\/(1„ÍKó£ÓU±ù±Ô#¬ °Õä j²i¦ûÁĸàÖÚÕßébœ´ÅÓÒ|˜òŽ­¡¾ ¶:�iÞúÏ„1«5滑�Ð.Þc·sVI­¨¥£|`|€Õ�íܬbÔüSi�C;èᢠŌ×cÏ‘—ü¿Ë–Sg�‰ü BGê ûÞ*�g"ì´ 2uÉÇÜqÚC^¸P¨2üËUY‘H„…N;"!k¤U­Â*7Ìr® tdîΞgi6Ä#‚‚y´00…È,­“?°Hbûuˆu�Q *ÉS!øÂ´ÖÕ�!‘› ¬"É’H fD—}‘‰}hßÍ"é^Ý¡,^ƒPyÇfB’žmo_ª8<¯ 3ÇÖŠŒÄB´U#Õ×ÆÆ†Œ<ìíëÛ§ Ü€�Ì–HeI ?¸~Q ' !÷øÀÅ•qŠÿ}Î#?¼ñ3ÊEªï”æ ^Ì*M÷5¦E;ìÌt³Qy£Ê‚2a ¾€Êaõôô„¨p(£1É@y�¸(M %' M¼ˆ\:€@‰Iµ&öƒ}ÁdÉdÖ$&®®þ7ODs~ñŽ,•“ìr2�ÿ#Ù1Ï1ÙÆä:í±Éí.±î0%(}$�‡Öe‰PŒsûr¹qQ³-d§@=” ìXSØ`¾5€Bæs£3Ñšïh ä`3�Ä)U—¡DQWªH[=±³³3„°s1hÙ/\¸p¤´©¬F_C¥ýÀ*Ìá Ê §Ëœƒ4ˆߣš iJÄo.øÎÈÏF¾3ä�a ³ë&ÌrȌԛ±V¡•P�<0”¿B;äÁÁM€62q1Iíé«(Ÿ j – �ÙtóŸ4æ~Œi-¶” Ï5rWmŸ L5ò oÉ>I²Á_U¼H&“¨zá�Y�¢ÓÄ€î$•ÂÒ#[ª²éµû+É+ËDávËJõâ[+©° “• k@bÁïVIaârÈ ŸAd†ÏÜ×Z³}™w^£‘H.àDµóZ�óUÒšsýyùhÓ.e“²¥…¥K³o­%å<1×J‹LZ‹QuP¤jat4þ?0gÈ\zþh7X)–_V«R ”WÊ7\q¢f±â—0JSB2Ù ß•g:b>¿Ëé {{{7AXíàËêóù$¨Øâ„̃ ØR-`ª5#–3È‹™¯\dc"!ÉÈÍØq ™áý§††äû” ðï�¬2â’#ge¥�Re¤W(דLú«ìâ7ØNfë³vú×á»Ïóµ§2- Ĩh?w†˜L¹´6…éXç~¼ªªÚëëë3ePi1èDÞ.fÜÑ‹/Né?<<¼ÔnuÇ*™�×b®«Ú„ÒÕ¥¥…š)–Ì U£ýSø¾¨Þ�Eª1=”¿2sº¬9æÔš†ûµáφ¹F„uÐÝ›-JÜ{ü>È?%̓{Ù’vHë± µeôwA¡!Bš"¦)Mó™f'o”¤�uwGõ‰xÛF"š®#3L ²8i… ~ª#ƒœÓa¡Ã«X’°)Í�ÞyAq©J^*ä�aÀ†O¨ŠçØ‹W7B‰’‚-R_ŽY¯qÛt2‰QðŽ«efTÛÌø»ìÚaõ|øÀ²j©2³«ìv±—’D%Éú2‡Uª0Ý/†×�_,%ˆ ª ¡ó´]ª9‡šQ§bü’– T*Å ¬ôE Ö�âBnró�• â�­ô³Â»»Òc¬r»ñVç�a€Žê*(­û�š G!‰ÙõøV‘å¥Q’u)2£ ͘?Au@eÚÅ[Á[ÒÞ!Õ徜�òÿ!¤pe€Œ@X�‰%]yäS#BêAxØ~”¼ ?£• Iu;G"šÎ„§.lâ�‚À:R�s„#÷ öe<7K»ñVÀX¾Uþ2�Ô_6è$kZ$;ά‡¼®F®‘Ìdp‰Nf¹`±Äôï@k…R_µÜßÕæ…»[Htvéˆ�ו‹í#sÌù?ò-¬C °v�D4e=lâ�®:�¶)r0t¹¢fi7Þ ò2FÓ•* Û” Y"üpLFb³�ࣂ‹È¬ÑÄAIÓtôù”.HÚ¨<°rÈ‹ê f²V™Ãæž*žn$3(!#™!q ÈŒš€6C5b�Z¤<3*i•Ë;Ó¿KŽÐð�ÔTE£ú�Éþf‚Ø’C—1‰€HDTjךˆÊwd.6C£Fè:‹ú‡ºÏ L2g¤êŒÌ‡}}}!•ÀFå�•4¡è>¯RáëtA$­TØI9V¤„ }T 3�örÎdM4 '4Ê3ÓУMŸP�F<š‘;õGªÎo¤J¨†ãú Ißw4¤¥z‹—ŒkeÊ‚ÁZñ¹t—+°ã®ud>Ne�¬àà¥ÿÁ‹u9)d>„}™Í‡�¨AaêäwÂs ´©XŽ ÊDaÀ¾öa,…ïKu›ADHšjŸ31êU@òLŽßÝHf”ìÝ*ņ$[ ¬zž¥�˜h¡üZ5æfíFj†A�µy(½é:2#°C(-ù˜BHlRfí“KÕ¡� ä8=Oˆo‘£¾¦Gñ‘"€Bñx½9ŸX+͈µ~7�Ô¹é;Re*EdÖÄYv–Ðtbε…Aõ™É DA¿³ÂýÐï’GjUt«–dH] Ïÿ»o|SûÛðþô«^uÃOÿÌ«ê{yeœ¥ÓzÚ¥#s1Ö®0]Gæq;6W´·Wæƒ!k_–žÁqˆçõ°�“ù°ÇãQÞ¦ÜÊ<0ò7‘2A$ ™ºZ©Âjž$‰�˜T&…¾–Ž¢HF¼¦ÙAƶ0…¤Bé Drô˜#ƒ’n–——´Ç{L{Á _�+ €Gä\ó-Ñ_ïâüü‘⥂80Q…ï;Ù Žf…ÒS¯B&°“nžwdN÷žÒ:¶V¤é9a°‡ÛCëÒ–ªÃÅ�H$œÕãóù”W`­Ê£�]˜�¬¬–  ²8©t(U§oe)&"ÒR&C"-üv2£nÕ)�‚` ~¡kAÃêéÓ§Wê6qEaß_Ý u›¬ÀʰéÈ …Ui˜­Û ÙÓ͇¨yÈ·Giä:“y« `,UÉo‘¿¬¢›ÝHl šhÔJàÇq0Jžó4L˜PµíVîNùŽÌÍn9‰D$�õôôìñ­q �éÅhÍ^ÓOm ð¯»¸ÿDVšÄäíí=BÉ2§HFòAÅ›˜,­êÑ ¥£d¡11H÷ôÉâÝe©å6êÈœ7Fº\Q˜Û1ÑÔ™ËEo¥ bzÕz3ø¿€Vä�a€†ê ?�™��ùKÁ ¶ e••nZ³Ym{{[ú“üþc÷QØjä~ÄÄU&«ws®5LöÓÝRáGv¤Ù°UÖN™X+;2Ÿžšš­õK–›à‡ ù¿Ì’Øì<0Erià6{ ?J¿¶qé’Ìo#Ðs2–»/ò—!`Âè/‹‹s76s�K#�c�©.mœ Q�Y±:2!&FI¡À´vLfVÞ¶ÑÌ6d’ä<””V_ `•– øˆ 4’O�[5 „èBc®¦pH•µsíÃ#“A`š!’ ,‹E%–G†ÖîÈœ»~Û ?¡i ¬™ ü/·ÛÍþ¯2Ô—•Ìa½}}’TŒÑxð{Õã;æ™u³¢±„Œ¢Í®hkí–é°ÉÆ•Æ ôrR©ûÂ�xR¹¸véÈÌ0aGæF‚²ÙŬ8a–cnf˜Q}¡†Ÿ¥fþ‚¨Ð–%¼»›UPz¯±zΊbLêùeH�édgæÀ�Zû�¡}:S:2nmá±Fû¿�´l¬uˆÚmxl·\вÎU<ž‹<´Šï«˜B¡À”ØÕ$…Iµ± üÐsËZQ¾ª™hTªŒÕ;23N0!ÖJ ›››RÁùý~%+p®¯¯�bÖâ vëE1¥ùÈfKƒÜ�ÔŒÈÄ@ lç‹„ü5R}‰^E? ú“ªÐ— ø¤¨Hq­„ˆ@ŽrTaàLŒ)½Å 3„ã—›†±¥ÞVžvéÈLù^ÇUáÀø%®!—Õ£;2™ÌC�ÚùÜùó3ât]qå•O¨øåq!<ûÌ3ç�ÅNÙìzý¶Ô¢/›žžU¹\˧ï»Ï¿²º:zëm·9GFGòÌ© }½ýBõÀN(TÂi”ª WM8T¾J¶w1ÏUY•‰ë$ÜëõÎ6ã³Ð‰˜j*¶²˜/pí¹s7ës1¶b\òöö†ð¸´¸8�êA¾þþÍÐö¶ã×ôÙ³OY½›FÃ<ŘP�IUÛ]ã‡^\]Y™¢jÒxÄ�"¿¨z­±Fç�Átò‚êêv»•<D^˜-g:ÕQ‡˜éƒ€d‹™*Í®ÆòUÅÂñs&H±ÿvò•µ;¦Îœ™Ãä› �oiÌ“ÙùvhÕ0ƒyŽž¯­®Ž {ZÅ󿯥K£…m¹O�Ziw_|2q=lÞe‚À TG8p©sŒõŽà=)Ÿê0r’´õ�‰õÄää\±ŠþPbªºmLA`P_FÛ6 üaªžT�T˜ñhw¿ÌU¤l`¦rY4pÃŒ0†ãK%¦ÎÕaÔ“¤[¡ÊjÍSiÂPáoÒtKM)?b`hhµmî…F«¯Üºµµ U‹M¢mŠñŸ˜˜7ˈ<°7Ý~»{öÙgëN^x¤À†šÀäUDöOé øÝ È�ӆߑ:4”¶´´Ô” â­þàŠhÅçŽ��-Ç.L¾Û©œTÝü]Å"‹à[Z\X˜‚íVE9îñzC8nÜ f²7" ù^0’ßËìÕ!X•µV•5Hù ™tªÞ¢c×ÀÀ@pccc¤ÝÔWÝÖÊòòžgEâ¤."¢G ­W ƒƒƒÒd844´¢µ1@^€ˆC®Óg]UfŒjd‡˜tOÃ%¢ò1ž Öõèé$ó­¡PÈ×?0°_fO>ñ„$+ø“°àBØÙÙQ²[fY:ѶmaL�™›õfòÊæôdówJ• B(´ì2nˆ`DžÚsƒBŒë¨JÃKƒBA$…ª ŒI=·Ìس ª¬^¿u=ú�©X“ܵqéÒÐØøø¢ªÇI*ŒJJ1�U‰Â Ê­¢ŠX�ÏØÞÚ¬u?k««U%S¡~b+‚TêÕÌH^0Z!’ d-G{Üü†‚ÂÅT¶BãÒJA¾|ÂÖÖV¾&Õ 0�™z¶Ýub¯ †œÄÝKGú© PˆLƒÃ@ò²âŒ„Ug2-+cìvi�ûÙà…gþ÷Åÿ6m?·½]`Te¥ ƒÄìºò8´2¬^€¡°°&ÈXßH_ößÊI0:;#,ßL$Í -MŽJû��°(Ò�fá /«Î°xõ…:.ƒqXP¸K\'%Û¼SP¸Ö~`­Âæ¡¶ŠZz¶·ý›�«Gt6…· ±X¶‹”ž–ÀÆh<*ÉÀò¢ðé.=BÍÊ ]•‡ˆììÐ:ãà8œhwFSÙô®¬O,»ƒÌatâ�ù›V¢ÊŒ¥«¨ °Teñ¸\¨t•:IHZ^Z:-*l,’ _þ€ßÜÚÜ `{# |Ã.'˜âú:èiþ°Œ>hÒBa²žb–'0[$¤ÙCëbðIkG—vàìÒÒÞùܼ˜½x fGã:ÙÚ<¼•U.v‡lgžò ¡jÑÏBåýj£ 2¾îÑŒd "Õee“aÉsP@ZäïÊØtß×^*¯¹áA·87;Z6¨£Ï!ÍŠ²?”§ýæ|¥ †ã;,üc$'rèß?�{ Æ Ò•o?-p6ŸÄØ�0Ÿ{¯¡w#]ɲzGz_’WbâjháØXÔ:v.‰YùÄÉïM&$i�Ì:Qù^IT£¥޳f€zE3BiaæLyÛEu•$1g§Ö—dŸ–$@Zö�d¶áa¿SöŒ¢™0üe0?ºÖãRÉ�¼Z1¸¨„¼‚º‰ÑøqÅWjo¸ý7Ò/~É�&L7Ù-PU‘½=¯>©ÌEøQ:Û~Ú€ÀÄ`Cõ ’Ç­†TQnoU.·ÔÐï˜YJ�Q�ÕD3Ë#âBå2ÂÜSIsE+ 0´9`yŠdt !Aµ�”×e–ðùF¨²b�/xá °@ÚO---z{{ƒ===!3Gï9Žc «Á°Þ0)F`*¢#•æÃJHQ†I¡b2i-ÕWÚBXkd5ÑŒÆ<°bÍA\P\– �g¨ \ò:I‹k1-&­6AhèB1%™ y<žM±„¬ôÝ|�ÈÙäÁa’¼Óv¤Â ‚“à³Ò²-cçhä8¾‡ÖÉÉGòè\¢Ã¤�Mm3ªÁ·2ÊΚ'*~F¨«N¡Ž:‘¥j™àiÙ`&$UV`0š¦VœNY–­»«k^¨ßÞÞžD‹Å|XÄ€Ÿ™‰×„¬@f¹à Xwzª¯’‡‰ug"’%˜ýŒæØLdÍÙ‚ƒ[ iÒFÒ½œ0ìeÍÞdîvâ9ÌÛ}Y# |»Zo~Y³Ü:JIe²>_ìÃnÞœ¶!°tß)iÄ…V†}ä�¸lN-Õ{*·!é2/ÔŽý¸fß^/MŠN—–ò Wõ}Ðc-,”—$üÆ $TE�£0ä�yßpûíAŸÏ¤k5�úÒé´×,–­­­$ˆÌëõ¢„©›Çæ�U Ä—ÄMÉb‚\²fì´$4ªë òYQ@ÔÖtÙO¬Å™Ý_6•FŸÁAÅx@/.)ÔAw«¿(|XGÖu{e¤!ˆfE$øÎPbô‘!±+°îî�}L›;?§ýß¿û;ÚÕ×^Ëmå-E±<0�“NP‹¸†wvvPc¸†ÅõÀb³Ù,Cfyc`"*îy—ô�ã9Æ—´ÛWÞDúÈÎ:´Î½}©ÆŒÑ°Ù(Ú}™bL i4”Àº»»efœª�,Ó=}ò‚r®=/£ åÅåÈSX�‚Ô`~Ä#È+50Vþ¬ÌàÃÅ ÿ–ÑGæZ|êøãç f1@]6ŸQi!´¦˜¹çÎ{üqg2¹ÏäÅP §@ 0�çðÂd̪d†q“b�Ô&Ërâ*Æ�äÈå'’©3®eÓ7PöL|_µ?2Ö LZºýÚãXÞ΄ÙÈ©„DÌùÃH…±?8.ˆK/֪ϢªV€âý\̈bÔgc¥Žk?•r/--]ßAÞáê¤eôˆKv÷ � ³×0]ǥȬØ5oå‹ Æ—ÎXX’¬-˜ #Ç •or<ÈäºhZQ¢êh£$û¶"0ÌrÊ‘ëE#_ÄôXÝ� ±w­ž—�PtP€E�E(-"/‡Ã�–°;E¶’i¥!3ò¹:¹{t+Qm?°Rd«ùÌ"î�0ÈL�ZØqBx{k ,"ïo¸)°  È+kùñÉÿOä-Ý?…HC{(©%‡»e‚½};)ýayþO{²óXId©C’#Â;pXÏBÓ”DfؽùÖÎ*ºlH~BξJL(§N�ZÄMzRþL½ú�™è�–0ÒÉ­Ú@†ÀŸ6Š­G?0#™ "ó‚ÌÈïKÑŒÆÉ]WWHM½þcR‰U™$”Ô¾ÜVö$¥Í¢)IDˆD"ZÿP×T‹‘Ýô¨D”¢’Q‡öIZöÝìvÔe«Tô²Õ}ºT1)ÈsÑÝ«izH ̓Ş ­D¹æ’Zû�Y}>Ÿ,c”NÕÞ�V ”r? ÅZ}ŠT‚‰}“5�!DN2D�—d&ž£[2B°ŒÀÔu2¿½V[+ñlß¹”§´ÁùCnëö–~/D—Ë&åk]6¹HÕe³iÉA—ô‹Éª2 2"/ù¿×‘mâšÈ¾ÛÒnÛ±ŸÁ¦(é¸éŸ/}¯ÀþíØZÉú¾Š%®uèê0a>�JN6Ù|&>± �¢š�'4œ™!Èɨζ··µVZZT&0u,Á•ÜFMXs¯íȯøÒ™�B<®.§ì¼pŒâ*ü &°“~PqÁ5ªœŒ˜åFIš«Ö— ä••öúyR ¯Ý´ÞÝe«ÍꆱÄhj$u2ƒ:ƒÕ§�Ð`r„¶R¡5²¼UG áA�Á`Œ&ü8úL©aœã±˜>ÒÀÒ M 'éÑ –òƪ©üQ.*íÆ8Y}É W*%ÿ‡)‘Q>ZÕÌ�k,EhxÄ“£N‚I§ÓK ¤&.Q¯ÀD–šL#˜£ÚŒ)°æ SëèhŬµ�ßÎ4Á÷QI?0FiìîìäÔ*¬Ý [ÅM,ÝÉdÒ-HÍÿ™nv”¦G"5ý½a(¶x"!¥üËè4Q ¹•JßéH%e5D=«èƒú‡Ž�æòïHq-ÄãPE“™˧ٯŒ¼�R&ĺ…é3ªŸ~$Z4)ªÊBÛÛÚ€ŸÍ¿"´œYŽ '�šXºAj¤Ô°}?™¤×ù—––äE@¦H9xÚíIArEƒ§J¦ïè÷»Lp.: èEz[³u h8�¡¥ LˆÒÌçó…ÚíÆ�ùfŒ@2‚ƒ8Z �”î#‘ƒhAó!~â9�bÁ6ÆÉ¨6¬0„Þo'ÚPk ´KÁà�&ë;£��.�›‘àp}ÉUqá]�� ¾€âr:íZ2™Ê)*<Â/vù̸¶¿Ÿ’æÁåå m?y¥‚£üˆA�•‹ÔÀ¨–Á$.(Ù>3.lAfUµWÍd´²š� ¼èV-üâÛ”9.ÿW>˜�44 +w¨Œ3zïs-ù\3å�5”À2iIXvM�D”aõ‡ÅÆa‘)V‰ã8�é0a0EÎòL‡ˆ Á£º�,«Èº´h2n¹ólù†–ð}a!2¹]sçW¤²ê‹‘¸äÅ1»”‹bœ/#zñ¤jøö½­ãß_Å M•<0ulúe~÷ƒ&Ûýcg¸f"`ö<°¼k¨·Ü„Ñ'ò+¼Ph½ ¥¯�À†t‹ |a®“_›˜ ÃÌŠe] 1AZøÁL`UÂát&…CqT¯·EöI>/£ß‹B+$µc ¨NÕðq¾Ê}-ç�1�žU3faU�*;PS¶›æ÷ôI"ZÜJS"X·¡“<̆Ýzpüedrìê+ûÞõ¼ýž_¬9I_…[×z¢š Ý ¯±±±E> Ýû2çóbÕï‡õƨ,�Xòb‚’ZÝÙÈ©(éãÛ áÓ<ºÚJäò¾’3ãæÞŽfëí—ê ÛÃú~ K EÍœ)=ÍR`2”¾UÉÌÍÈkúìÙY¾�íŠfõSý[[[�ƒƒ´­3©Û~á× ÇJn‘Í®/”µ/D R"È͘ØÜT"0­ÓMb��BD_®æ‹½L&Õ²�û�1TB«ú�µpÒš“Ö§¶·¶jÊŽD"ºñ¤ �QAßF%3SGfØq‹õåj*ñ]Õ féæýþýÚàW>(óßcWhÉÑmç'^'ŸO¿ýzmûUwj[¯:ÌY2®ÿЯæ" ñúèµ7å½VEŒþÅsZ÷óÙß$1Ò­E¯öi[¯/ß?¥)>/9`­ÆrÏåàq!œ÷Qòî²ñdaT ‚ñ Ö®ãVÓŠùR.X+-Š!¸¾>BÏ!áU4qZ (7UH^‘ko’QŠä×B ­?rÁŠ×ØPÉßD-"v^ÐìÛIéçB”Ø©/]Ô:ãY±ï}dKuàuò{_å“ÿƒäˆìðäjŸòß•û�5k««ã{{{¾zŽ[›››~Š h&ð™øl5X BÌË™½CWa^^^ž˜œœœ7Ël…<0¨²S_x�vú}·ÈèB˜ƒ¿zWÑ�ààë>ÿ�ô�©FŸGÚz`FÏS!ù|íõ—IUvú�(Ô¨SsrƒZ#¿Xø†AvamüÏž‘áñYr;uÄo¦"Ú-¬•ЉFúêB¡�Ïï÷Mö™gÎÁŠñ >½‘ÑÑÅãÖBÛÛ~Œ×ÍjK&“.|v©ïÑR£ÈC•rŒê‹°»³ãĶé5‰Ú,y`»/ºUOÑ™×ØÚÒ;>/Õ–B…vñÝ_ƒ|Ö—´ò[Ÿ0Åà‚�ø}ßá$véß^yø}Gºµ‹ï¼Fª2G(y$ò¦B�©¯R¦ÅÂÏ`´ ¸Ö×Ö&rÖ£ÍÍ@©�.’+®¼ò 9æƒ�õõõQ3MÒ• 0cpN~«ƒ%ðC–"Ó•å婳—_þ”Ù:THé$¿Ì‚ÅLƒå¼WUÕe$­#ßK¨¯“;Žó‹qü†ªgḥ¦ŒyµPb°(�4ñ†²ŠF"ò&C¤åÆÆF`_|Wÿà`°XÆÉðî®�ò\é|,/-Môx<áMñ~D.à wÅ{Ä8�ýâ˜plxm§xÍÐÐÐ ©;:<ïêêª8½ª© -ÑŒº•?>l­—.�âx„œž§ãŸ˜˜ÃÿùŸ¿pašoc£2 ìÍw¾%ùc/}©©ÃèÅ îÒÕ˜jÇR�ß«pýöövIÿ*}€t@"õRš:sfîR08’)2fÇPßU�TØ8&ŠÏ  »¶!ˆptlø �>–7ì¾:˜.ûûû7Å~® !#ˆxëpD¬J*0ãl¦Õ¡ô°µ"d•fqââ�YW BŠã䪠O‚YóÀÖ„•ú�©�Ap}}¢Ø¶ãÜPKÏ@6ð�aœ¹@L2ô ÐD±vWx ½Ðb56>.+Ae‘;f'òOž>=gôŸ‰ãò‰ýî$õI�ø¬”ÐíñxBô™Æý(I`˜Í`æÐêPú©Xˆ¿ẎÜŒÁhÈ(=¡n„¼Yÿˆaccc$€±QÔ €bFëðˆ üc>¡€ŠÕqÅçA-õ ¬ƒñYe£»0ø¤)÷/R?†§Ó™aÖ:Î6—Àô¢»ª…Ò·K»ƒa^€`î£ÿ ¾£òÀà‡‚Z:Î&ÆE¤±#ÛÕ×\ó˜“ur1Šúúú6Avå†éƒL¡ðŒ%ÞÞÞP±JG E£â"¿£²F'N¨¥Bl)ÄŸš Fuh·~`­Ä¾>àƒh|-‰H°ÁS§$‘¸Ýné×B`öUXF þ/´ÑäfÆ“ŽI¨ÃUøµà–±‰×ãØpLøœ………)X»p0?‚dá·›;~$œ®¢Ø{S Œfª…ø7ªÝK#¡JÕ*TFUo5·0Ú£0¬“FֲΨòI�TýôÔÔ,ù­¨9øÀ„²KèÂBÈÈèèÖáõˆÆ†jƒz2ßÑ>éóñzŽ�}z-‚=`’„̨Îo,¦^i€_Ó}QH¤�5ª*}µÊ°ÑÕò…Vç�ÁiÿðCÉc,ªad¤±á÷âf„c]ÉB¼86Fu “™Šc±á“üHÇÌÇ:ÚOá:ú߸޸OãkŠí—‚*–m\WéØÛtCF8 öN•ˆ‚ªå#2ÆLÖjÜqg¶"Æ#=¬Ü±�\o¹­±Uëï¾÷Ú½÷Ü£©–Hîñzr¿ ÃzÀ8EãV;Ÿ‡¦ì¬ Šx,æÖª|œw\šÆ¶ûJI¬c%ü'@£I§ž€Ùö®oQa3ž÷k"zΔŠyj–&0U#þ(LTHsS•7°RØ÷›wàæóp¨z9¬ñHèã'p0�5 ªFü9Ì�ÀL°JL�ð¥Ñs „í>Š„Ð¥â8€ñ‰Ž¯ÝÝ�Íþ@rþ©ñ‡ •ìÉÅJª0 ø‘Š=çóÀh¨Î ŠA¯Ú½^kg+>”Út«Fâb•žøbI}Œæ¨ÏU áóp2¸XãAã“«Íý_-#0jÓ]Mæu#Aöd3ùÁ�†cöÙgM{~øƒ,k�Õa…ó@y`KKKܬQ¦W2B�]&°V…žñ­Gü)£y³I«òÀ0`¨Þ¬¾ð—ŸÓŠ‘/Öa[»€Ï£\P³§Í8ZF`TQµHDØ“©µÊ››A¾ÒÏ32:ªýʯ½.·ϱÛ̬,ù<˜Æ$aÕŽ�Ü.8¶fwLV-© ß­˜Š¥›Px34q«¤µ5£rüýƒj¿×]ÚO¾â¦œ Þþ{¿'—¿ÿ΃ò5­,‘Åç¡2X!Œªp�«C%�ÿ«Ûíæ4…VÍéS�J3‰¾¾¾úí è%÷k,Nª��u+ÃJç�óÀL`ìÿj=�é*,¬—nr«D`z½®(Ô!Z¨®Â¸ƒÑ>`ÿW>:[õÁTEµ@©Â|>IZ0#ò%Â`´T‹Ž&°ÿK%S´¹¥$°¾>Y£‘̈|™0åÁ y`ûɤL(ì�Õj ³®¾B|¥µ˜ÀÐ, �*r`vCшè.ªòh…<0†uÀy`�å§ö°ù°õF%Z(�Cµãëï—fÄ�PHi3{ƒÁ8Æú‡^�i=�é*Lþ1ý`>Ÿ/„&—¸h*íÊ`0ÌMªÊðÈõ"0•9p‘x¼^ikÞØØð¥Â`œ ä�½ùη$ì¥/5­J  ä§WÔÿK¨¯¾Êaoå‡Ë d{[É@`pp0¸»³ãß ‡•Í ³R?0†ùa¥<0•îwŒAxìÕÌ ˜Ê�üt”†`Ž@ Tí9ŒÁ°6àÂ@¬\íÞÿ«-5!âÇÀ�¢j 0à÷KÒÚÞÚâË…Á°>¨˜*È…Ïë. †"PIU‹ç¢H¤U©g0Z +ä�©í‡ûðÈå£$0U[«ä©°�©ÂBÛÛÊÝ”œÆP œV_ÃçÍgD1£H•›Hž Öñ(«Ô+ÖEšóÀ ë‚Ãç'0cIUO.œÞ¾>™Ø\_áˆÁ°&TóÅS=VªÏÊȇ½Õr@qJø˜ nTÍ2ZAH=©0Άg0ŽÂìýÀ’zD*²ÐjD£Qª>Ï& L^,nwx_�šµ©J ¨�ƒ Så89Œ¡¸Xýó!""1Áçðy… Ñ5 Ê€W*ª0Îc0¬ ê¾ÌÕçK£S…ƒ „f’˪‚Tž³/ŒÁ°ÄäTN¢NgËûm¡�“œàsõùÒ ììÔ™Œ+îýÔ'g_qó͹Öäí6±ÝÛÂÏ?qûÝŸ¸g~dd$§Â®;÷#3*pÃ�7jwßû ùüÅ×]¯™mû[ïxKK?ÿÚsç´�·ðó�0ãï×ÓÓã~Ç;Ïë€j÷ïIÛ?ð¡…/Ÿ¹\s:ÉjÞ~þÂÃÆÿ«ÝŽêˆ xÍ­·áßézïß*Û•0!‘L$1RvÆa·Ûó|a*£¸ðÃýý³4Þðöʶëƒð¬n"nÉçâ5›ñüE"ΫT}ƒq<:2™ÌC*H0 B˜€½wêÌ™9•OBmçΟ¿ÖÓSS³í‘ˆŠ ÿüÏÿìýØÝwÏ׺/šmβš ñ»Î@]·òwUá<´+–—–&¶··ƒƒƒ«Ã##+­:Žçfg¯BjÑÈèè<ªñ/S�ª…‰ªœF€/Œªs¬,/Oµó3Q=È‹ÁPHÖJ¿&È\}£<(cB¤0QØ}ñ‚$T>q¨Î±µµ ‰VŸ%ýô+êªëo¸aoueÙ¹ººæü£üñÅ뮿>ú�oÛûgÿå##ýկ̾ÿ}ïÅkúþCž½½=Ûm?ÛæÛþÝ¿“Dÿè#�¸ÿôà ‡÷l3W\C¼‡oÁãAçôÙgžéÆyÇoð‡üG‹…çÔëõ¤çío_Åobü½pžñÿ‡þäÃóg.»,)Ô…íÝïz×ÄêʪïK¾êg^2úu­ÅïõxB\}Ã$  äAU û� kðÔ)ibX_[›P±‹k=ñüÜœ{||,ñß>ûÙ9�×í¿þ†™b¯{ð;ö�˜þû—¾8{ï=Ÿ½ðüó2¼ÿmoý­i °Øö£?ö£á<þ¸—o¿òðÀý_óÿéŸýÙüß}ë>� ÄG?ò‘@á9Å#þ7þ^8ÏØvã‹nÜûà> ‰äuÕUWE±þ=ï}ïâ×x€ T+ª¾áæâ½æ"0*ìKÝGUúƒ!ɾ°KÁ åÛ­�šÂ,úìÙ(@áknzÅM²cl¯™ŸŸw�Ɔ‡¤^óÚײY¤¼úÖ[6q>ñüö7¾1øýù/νñœâÿ:ÏèŽ Å…ç�=ò¨—~G(2üF|†A¦;§Ó™hÅçc" ,ž÷qóJ“˜nwŽ)žfÄèØØ<766FTíiÖj€Äø,¨�õõu¾F�õk• ÃX¼Wu7 XõE½·ÌB8f2}.-.NYùb�¿ �˜å¯¯­¹höà_™;ÞMê€öÃ(ð)Òóû>õ©À+ê§B8÷ø èœâ~Ç“~“—½üe!2A†߅ϰ:à⽕A¹<0·ÛF:™0Ñ™á$ŽOLÌ?7;{Ò3(«F}óßôaE0ÁGïþóŠRîû̧gÿà®÷Žã9‚8øÖ«d’äIÿÆë_?MAˆüÄzüÆ ø&OÚ|i¿óoÿíÔ/üük|xÌŽ|†³ I3&Ñ­ø|˜©ú›˃2y`3僱¶º: 3"|bg/¿ü)«E!7©^yI˜ùßò3?{õ÷þù?Qøxä<°Ãó@Qˆïz÷»’“„hÅ{îýÄüam¯~ÂaïÅùùXT¦Ïžmz„,¢™WWV¦`>¼|fæi¦'*0äƒ S¾.b!V/T£æO�ÙØøø"_^‡€ÙJ(Õ¤˜Y¦ÿózÿ8ø¬4_ùò—}»;;¶‰ÉÉä—¾øE¿¸ßÒL^Š(EºÝÜ:¥Ltªv@ȃ„‡3õÀÌr"¡¸( ™üf:örðÆ7¿iµ–÷¿ú–[BK‹‹Î>ùd7L]�RV"±Ôk?yÓMr_ÿëŸþÉû‹¿ôK›œ‹wˆd2é¤{¹ŸO“öþ�žÜ™U�é$&ý`bñ˜©LN0}âØ——–N[É P+á`–OáÛŒòQïc„ã“�‘�}½™eWWWÓ}´ÜûË" LAooÈ(©Í„‰ÉÉy(Hä“À”È—ƒÁ8 »úXǽ¿,@`ÊÓú̘††‡¥ÿ AV3%2VEr¿e©;{á°$06Z€À�ÀçÐûñPbŸ™€ºˆ”S"_f †úØ×}`Í.äËæC‹˜QJGLP±�ƦDƒqØ|hA£Y%ö™ P‘Tì—M‰ †úH¥R-)yÆæC U³0SY©B ’› s`_÷�53��͇%0£¤Þ1q{mTaS"ƒÁ(6Z˜À¨NÔ$íUŠÁ˜à S"ÊÕðeÇ`¨…VÕAdó¡… Œ ZšÕF€9´·¯O^ +ËËSVo~É`˜ I=‰u›õ™l>´8�™=œÞˆ±±±E|ØÙ¦øÒc0Úl>´8�Ü]Vå0¦Ä‰ÉÉ9R”¨ºÏ—ƒ¡b±X7NgS à ³»³ãÇs6Z˜Àzu3bÌdÕé‹f‚ÁÁAYwãÒ¥Q­g0ÔÀA:-ëÂ:u‹O£A%6ZœÀŒ]š­0à�Œ¬ ´¶o„Ö³?ŒÁh?ä:/ë¾q†E ðx½Y3¢‰Ãé�0†Ö///OðeÈ`´‘HăǮî!cçåþ�� >ûÕÃn†ƒìéé Ã^‡û `Ì~ÒÉ†î¯ø^›››aÔOä˱r@•CÉb2PÏýâ·©if(&(A+\¯í„fô#ó!"¨ÆgÝâ Œªr`�2kUŽBÀ4Jþ0´gXuX\X˜®7yÕ0s 1ó¿W³>+g>ôùxÒÚ ³"j‰ª(Ñd…“�Ùy<ïÆ÷Â@|öòËŸjU7X³‚Êÿ¤ºlZÆÖ¡Ìq9")ùÈ>Ns€&A�.#e4Rž+Ãâ °BUŽb@LÊ›¿paš/Éêò:°«³0ÅÀæÃ6%0cU+ÍjÉŸ x./-qPƒÑD�™·e¤¶67eþ'›ÛŒÀ0[¡2/f¯ÊqD]ºÝQêâ¼½½ØÜÜôó¥É`44!nt)øïÉTÉA[mF`ÆYKØäU9Št¿ôí­¯­M°óŸÁh.�5ÔUþ|öu·#�YÔŒH_¤$çù f8€Áh<ⱘœ,vuuÅJ`¡�´¬x{{9x£N°›é`ÉŒ3¢e8’œŸŸ››ÁwÄãeÓÓ³<[«£}ƒš§++d“©}-šLh›‘-}�=�ýCZ·3¿ ïìúÂáoáÑœv‡¶´ï�çÖÏ Mj›{;r_ ë ‘÷,*d>¤´ F›)0©Â,lF¤›H(±‹\©£vŒq­îlÈÇ!o¿vntZs;»äv�—­Ã&·Ó’û:mš¿§OsÙòѯ˭¹±1¬�¤žŠÑi³¥õÛ[[R}±ù°�˜$°¾¾Pp}}‚̈V¸ЩyggÇO9MF RÇ“O<Ñ’ ¨]�©™‹�‚¸Âñ¨\ÖÃÛ’À@ls—–äöt&-·Â×íJí@ª,Øâö:�Å~2)ï»îî)÷Ë×ßÏÁí¬À¬�Ó*6#¯V  ÖV¹Øa:!�œrJK(0o—[.¤Ìä@ãöjáDT.0#·1¬…FWáÀ=ŽûV6¶¹“*ÌçÛ*Ì 3¢Ùý`Æ@�ýÀ”2ÇÕ‘ŒköК¦"±ÖJby"ANPd@,™Èùº@ró›«9uæq¹óü` ë€|S�²4ˆ ªÌý¢¢äŒv'0 šåLÐ¥Nä|§E/øn¡¤Ì‘›ïÇó7²ä•-öðh~OŸ4%ÂŒ oñˆaa4jÙ ‡³•çÙ|È㔜5[8©™Ñ8€˜ ¬vbÇ—»ó¹=Òw¶Z—�0;º�.iJdX ”oéhP#KŒO0Qbÿ�®³È ÌL*ÌBfDFã€0úQmP*/�W(¶§­¢ e8ª›� é#óJÒ"óaB�YÀÛ/ד £ýÒv©7'È„o·Û�Øÿ®-�èC>ÛL`‡fQ3"£~€‹ÂÝ‘·…HB(+Ö†ÃÛ;mÿ‡½+�n«:ÓÏ–,Û²e˱#Çkœ8hË–a™BᔥJË’B)Í@Ò@Ùš 4@ tØ3tÎHH ¥,IJRöÀ¡ÐB $’€'»ÛQ,[¶eKšû]ëW®Y²%Ù–¥ÿ;çùí÷=?Ý{¿»ÿ•$Õ¢î©9Øì»W ·gŒo8½ˆ#EŽˆ"Æv΄ ,d3�†:¨¹ãeŠFôJ+ì| ` ÕÿUÏ7èu:åHöŒŒŒŽh—­fžÏCQbãÚW?!7W’¥h‰g$ é_ßV¯¥4#×:Ñ¡&y5]§MW¡Kîqh)-5rkÜ«¹Yae0FtÊ<�äÜyÎe<¬˜z„†æ4MˆbúŒ;¸)3†‹‘ÄL©£²³³9xƒ lè ÔR]]]&ضã-tf¿¾¬‰Á51˜d´ʽ F¢A�Ê(Zåqê¨ÑEÜø½AX‰6&,aÄn·›°ÄZ‡5VÏ`DÝÝÝéRËÌŒJ–xNÅuLX‘ÈÇ@RiiiŽi»q¬¡¾¾X=2¤VÈœ S¡X$ြp Û´¦(VÜ b„BµxHä…ë 0a¡ûU‰¼©±±÷àÞ ïFç1fï'Ëd›ˆÃ?ƺNa­1`TÏL<ö‹5°Hé 4¡ÎC*Bç3n¤‰žØñû&9»cæ]às ÒPÍ=]‡É ´«Æ††B¹ï5ßà8i34g\€:"óÞUWW—åçç×&1û;ã›››-ŽÎND¹Ӝήš9[ÉÄ€ùêvíÜ9W-›ž �Bº£Üæ¢�…dHc¿xvx&°ˆ:4HE±N`ªù"¥Ùsï ƒ„é7´îß_M ¦a˜ Õè1Úîõ]¨o~Tyy%üWU{÷΂ß*”©F��1#Ã^"È÷q×1¾¡k¡wEZÖAoðRÚñ—e$ÿ©ñÌ ¢��-Zä…L1ó­�PǃÎB)é0íÑ"�gfÚ )aÛ!xDd!Žƒ°@Œâ—ô¤ªç=&iÔ+ÜGá×Áî�#�Ã;ñàÖØ Ã~_Ja‡”vüEY‹ ÆS0:Òñdê+rêš´ŸDÀ§„  tB 7˜é !A[ÇÍÞ Ž#¦É€¬¹©©À+@t�™‚ľªªŠ‰KƒÇfÉϯÁ9�ºª•æL˜ÐRýÍ7åÐÉŸÀ<˜?iR ŽKaÀÄÁ¿bŒh`QšÈ2ÂñQ'xì×è#Éãñ|�ÿœèC„íiã:´.2\#òm$ʆO(’ÎN-›rÖ{­û?�V™¢Ì,�<¹j<ýþ#ñGÖ hç“ËÊ*I{ à®€€Š¿ìè"ng P3s´8ó> î`æ+÷7[E«üºÚÚÉñ”1]F+¶¶æÂ±Ž ˜f9¬™ =D<ŒÇ~1��(h6TÕ«¨­©)É 9•�Î&´xúÍIš†¯,Güþþáí †ÚD"¼ñد±‡>žÿ9ø¾š�Ì+!®Ð(íLqI‰"$ÂÆ††âöC‡|ƒdÛZ[-°­'û52„Ž“ !Øä?ûrǎ㎞3Çgv¢} Úõ/ç‘9aäDfš› ¼$pˆÊ„‰‘ZÐi ®ºk¿9:$ef r‘Žã±_L`#šfE�Da¬tlઆnƒP@”Á¦ ¼ïÔiÓváV¯wî"›J Aµƒ=Ï¿|’BQ&$GtKÏIÁç}#(‘žÿ>ƒ1^5°H"yìب• d€ÊF�òX¿BÀA<*¡ø›&ÔA°ãD—]hM¹J¸.¶‘¡b¸�¤G&ÖŽŽ“^¯ïQÇ7Á‡wC„•êœöß…mŸ}füðƒ2kkëR+¿þzH~¼‹/¸°‚›fèïPPX€ÈFç¬Ù³§�~º=''‡gº»ºŒd½· ûÅ6* PH=:úX 0dŠ�ÔTW—cœ•ÿ;%ët}n—kD!…}C"E˜7 ÆÚ`0ôDиuO®^�¿åÕ͹MMMÃNçõÅ矛¸i†þâü€ýïž{Në-·ÞZ?娣ØÎ! v¥Á�öدýûö¬Vë€l-eee=‘üÖ7l0Ož<Ù9ïØc‘´õíÛ¶çΛç$@½»u«)Ò÷Lh“•lâÄ&åGk‡+4&H‚4W5mxÇ;•O´Xš@À4x€ùN%bl“&i™�pSùð€°HÃC•Ðúò)Ùl$ÿů—ßY&4F�WÊuÍ�7×>}ÆŒ.h âYƒ–Ý5×J�ãÿž~*¡/†úv~ùe:4ÛÏ>ý4s_U•ñ�×^ÏÅrÉ¥—6ßþ«;êY# 2LJ;ØXŒýzþ¹çòžþÃSê±k~zmòåËÃ?Švж¹výú°“@P}ïÝ÷²ß|çíÝ�οñúfX^^Ù´qDÚtB…ÔƒÀ„FP8–™¿A"4¸•²A`¦@Q€Ôp S‡ÐÀY Ò¥ûA|È›GÙÓa¡�Ú8‹@ Ajr°­ê¤VˇªJŽþƒnñ^<\2»ã¶ÛK^úóŸeŒüü|çõ‹~^ÕÂ…ÃöüûgØ5FÈï ž‡©ö‘‡*øðƒÍø @j/¼ôb%“Ø‘ úp…5Wa ÿúh¿;„šhµ��¯þe—9ÂúñÂó²\wýÏ%ÑË~xYë‚‹0õ3M/¡ Œ:pX{H}ÍX�}ÂsEï�„ÔŒ! *Õ¯¥ú�ËÚá_Æ`ç�ÖÈ_rì^5ª1Ð>á†E‹Ê ýcÀý¿}€ƒiU?÷¼óZ!Ü�ævögÎù·cޱC;‚¿Uô�ºiÓº>xÿofhf+î¹§†L$œÂ¢òË[o©�`вai9yþüzÖ½wßS Ó7Þõõ÷¼ö׿š™À"Ìj”¥Á ‰œº)Úž]³&—È뮿¶†£u1¢§µ­Y÷låÂ+¯ª ̼ë@ômKKKÁH•�a&áÞ‹¾d,„àû~³ªøñG“Ͻó×wÕ)@óFÛË4™\h‹¢MÚÑo\ôŸå ¦»WÞk}vÍÚ “Á¢¾{ÜqШyèá’ß=ø  D¸jåÊB�×ï~¨ê­7ß4ß³âî²SN=Õ¾ã‹/ÒIxÂÏ"-±¦ºÚçg;¦‘©­â–À )!º.Ð4mmm–±z/L®O9Óà\þï'繂dÇäÚ˜Jbè€"ñ•ŒUûIòŠ”�c´ ‘§^«I‡&…¶WRZê�ÕÖÖ¦¢m"ˆ ‘ /ºÈÿóu×\ô½Érk¨o�¤ƒ`,¸víÜéK„°eófs{{ûþÈÈÌìC}[óôÓ–¥7ßÜ ž£²˜À†Xù1M™ ™ƪqà¹Å%%Uñ2[´�Ò0¨Z‡4Þ:Éx'1’¤á§Xtà MãÉ”èTÏÞ¼´˜y¯¤^·¦?4v1`—,XÐ:TE-fe™"úÝ¡ÁaýÉ¿>É$²ÌÊÊ:¢L˜«Ô�ú¶àâ˜ßÚúÎ2AšL™#R÷â’À0ŽJ’Wr’æN‰�lYI}n-Éåé�ŒC-™ÿbIÓFláÆ%KšŸÿãsù�Âÿ¸n].öÇãÿáN��6<Öo‚ÈSÚž¢ƒÿ „‚àP&ÄÁŸübgœy†möÑGwýãï7AÛƒ¿•¬0x�ð„O°Ã“¦Íf¿8›S¿õíóGÄ2×>0�Wo^ìLt«·÷jºöÞ¸ù¾èiûñG+À�r£5�¹búô®Ñ &!v4ËŒæ€î¿lú˸%0Æa@£¦í¡„ÑÃ÷õàý”PÈ|8Ï\¹jUÍòeËdÏ7Bƒðб_8ÿ·÷ß7™srl—mË–ÜüI“z–Þ|S ¬dÆ<ñ¤“F$²8.§S!ç¯;U“p<$™½úŠ+Ê!iÅò;ŽVPÉ1³�žKcßbÿÚöÙöñbFÄxÆo¬VIà=EƘy¯ä·–ÒÒ-·‹È�5+ ýæO<ö˜ÍP|DwØíºÁÆ’á™°|øñG;XcÄ}ŽÙ¤$³XrbGûvâ٭Á™=Ï#ò²¥k}ÆØá±œ=‡³%!c�±K,Í©dûgÛL`qTy¹ƒ4§h™_0ÈZ%Ê#4¸ûVYGL)àŸ˜.Ð XŽXÊbæÝ’’jO÷èkÅéZ×CÌ|•À‰ L|ä~õ_Ëj£-ÀÀ÷ÌŒ9Òfk&0ƒ1®S|R�[n{R’4wš~@ Ì|ÉÝ}ZR¯Góˆã}¢›KNê¿×AØ—}XÈ c.£^l飯3ÔëÇ@0b‰Û¡-ɉVùˆ ŽpØ`×qÞÝÖ�ŽázÙpü–×3Œˆ?²G—¤¹L)ZRŸGú¤¨½ê:úú}T‚°\™z-¹Ë¥¥6uË6-Ûv¯G.Ú»÷•‰%¹ÇuxßÈr~Ì 3‰&¹¡ò#¸C†´{ ‰®  ýÁÃIØq¾7Ç $<�–ÜÛßP0&Å�Ú/Í©ÇHâ£PyÎÁÎΈ ýàdmæÌRmæ¬Rퟥ­}æ-­¨(O[vçåÚª{Ÿ×vï®–×á:Önwh‹—\ çÉs¸ï•—?Ôêj[Fí½]µ~ÝzË®]»�Ã�¦¤,·@ûÅ—is‹§Éýíµ{´ÏŲæ[|×¼{Óê÷àš›^|Ä·ÿÌUËe98†sÊ{xÁÒÇJòîìÓR¤™Þ%M…ДôN—�´ü5+6å³?ÿ´¨ø:GŸ´—£ò÷Kržþ¬jå÷fòð·™3†�«r¶¶lùå’¤Ö>ó¦f2µöv‡fÊ2jß9~º\Ôc 8ßÛo}&ï;óìyÚÆWWhYY£;6èû|_fò>ÿœsgaγáØRA`›>_{të òˆgÛ=«™ÓefíôŠc5kkƒv÷–§ä²V!7\³ðÄód9W‹µï¸Ñ$ïÃ:K üS¥}ÂgEÖ”�æ�ïƒ lÜCçõ…y’üÌ ŒÃYg«ÕÕµh„öôö[Û´U+ŸÖý»wÕôßwïŸ$yÍZÚhâÇW^)#¹�Uà–›n.G– J¥3@KÚ(H ÓE¿¿]jP Bú¦­Q{¯ò3¹¨Õ…sOÓl]ÚÚ�þª]xÌ©\‘|¶£~ÿT_VÀL‰0ùCèT³Ýà8„U2í#¢0¹W ®B –؇Ÿ›Á6. }`–4¤¡ïìOè,5DCPM ý‹.yÎC_Ê£HwÞm�ž¥»Pxåå¤ipÝs· íjưïŸ9«DÞ·ìÎJ-¦Ä¡™´ýS2aŸÌsDÇ‘J=‡}:÷ê¦Mfä•£}Ìy„™“qÝpýcDR(„4yÂ$©Qa�¶EÀ5Dl8N¦H†— É>« ÈKšýˆD쑆–~¿6 ª®Ì)¸š»ePÖ2ÚÐÈ6.å˜Ä¥î$Yù¥ãW†ÊêD…N’¾7·?y8È Œ5*º^Hw½ÞÀ ½7¢‘Í¡Í šÓÕ Ï$v›Ô¦nøùãC¾fijÎî’$ßÙP� ‹z äèZ›Í¦SÏaŸ¶14Pª(\OÙº‡›càxR•¸ m‘� Z×Ož]) Œ®KDŸ— D"hƒÚ±£å0QŒ6)µ2!€:ý©ÐV!¼&÷ö}éËI i8à &°˜”ÞDE‡”†Š.+¶¨ì %He² ÍË•›âó‹õNLÓô6§–r ÛçSƒ>ÁâÁBþ0�R]íÐÆXÂt­ ¶qó ©…�Cá»çžÓŠ)(ÔcÈGÛf³Ù§U!ÅŽzNM¹sù�~Ô‚¬Þ*‰!©)²ð#»fÅη˜[R1 �¤µbó\C&C�\}Â÷¤)~°G¼¾´D…ÈûÈ&s`7Ö¯Qéƒ ¯—"ïÿ XLT|µb¢â«•’i_�€†ì| g0kc 0hdïìÞ&�ÂtŸYÛðÀ¾¿¹~4`¨A˜üÏ?}Î`ét]8عÏ?ÿÜHä¥W8ÿ?‚8œ�ÀŽ`€ùÁ‘ˆ}„¨&Fƒ ŒÁa¬þýb¹þJhNˆ$D<ˆ DõÄc›´*_Ô*ÍìŽÛžpÿÅÒ„8O.tïhS©ÃöË[o© '»=4(˜ÿ@Bðc�”È,œ6mž¶âüŸúö¡�!€Z]2�A3#3"• �¯ŒÁ`c0¢DΜY"Çs‘9�ðø£›´·ßܦ͘U¢Ù¡=.�Æy�ðp/4.�Ý·==äŽh™1%úÆWÿ²+Ø‚�°½¦R’…»Ëq[âÌ�„ÎûÂîU3#icXSØ=ƒÁÆ`Œ0@HÁçE™U€´†´1€iñ•MÚ¿ DÊgåïû v\-k°ûŒDç9b0 k` ƒõNÊÞ;/ÓÇYy˜À #ŒF£#99Ùåv»ujf�XÞ�%&°‘­d½n9"?V€©V Fhèt:WaQ‘µµ¥Å‹ïWPXXË¿؈ #3ÓÞÒÒRÐ?ádì J<Ï;ƒf³Ù†…¿#¡Ìd2Ù§UTì8ØÖ–‹äŠ÷‹·oîñt‰¿±Ô×ô�ÉS í}ƒÁ`‹©©©ÎIõü��5Ê%ÖP\\<*6d rF¦Ž¼Ýí\Æ) ¹Ï_H˜0úžžƒÝn7a=ϯڻ·"^¿m~~¾3ß yÃÉš�¡CÍV3¿x§X|¯hµé];wÎmmm�ÊlÙÒíÀ` ,–àp8Œ5ÕÕåB#s¤¥¥uµvw[ k ¡…["¤†{_WWWÜÎ<øáÇíHô†¢-².0åË`øÇ3:dÎ4™löövsnnn«Æ` ,Þ$4�WIiiUÙ”)U0`.yûªªfrµa0b€Àl¶Ü¼¼¼f!Tš\.—o–€ºÚÚšÕÕÕeX°­ž³ÙlfëþýåØVï°k‰zÜŸÁبA™™™¶@*d]]]I¯Ó)MŠ¢%4SÄÓžÊʙ➎îîîtì—”XAzdÄÚœ“Ój0œíB Äuˆ,œh±4 V&£˜@²òë¯ÓÕc”¦ šÂ?ü�ù7nØ`þè™îÿí58‡I#7nؘk2eº^sMs¨Lðt½zì‹.”ZÒþ}û ¿{ðÁBä7üÖ·¿Õ±è†š�. XÞ{÷=Åt}Aa�ó–[o­ž~Ç_¤«ò#>pßý…ô~xß /¿œ»výúªÁþWz¾ÿsðË–/¯õÞêÄœCýñ,œºÝn=Ú6´0�iah�‚œ&U^^I!¸~�6,~7‹ËíÖA�mnn¶�´bZEÅn*áûXSyX˱hÞã &°QCggg¦%?¿!Ð9MZZš£´´Ô 2Û»gϬôôt*¹hFAF EÅÅ5pì655âºò©S+¿Ü±ã8¬Q|j‡Ê�¡ ÒÞ`erUë:t",tä�<ô�Ïï3×–Í›Í7.YÒ 2°Ûû'ŠD§þÎÛo›ŸZóL•MÇ—ÿhúúçŸû:Xb]L@©ƒ Ü¿ò¾UVtþ ™åË–•¬~òI+M`Iï‡çÒ³@**�mß¶Íh··û¤r¼¯èH% Î;öXý¯4í ï²KH*)-uªÏ¹aÑ¢2¼È0Ø{ãûìµîÿ”¾ÝÂ+¯ª'Áp\h_0 áÛBx´û›Ñ~A:ˆøÅu&Ñåù¢¢")tX,–fhq Cµ�B8¥òÚÅzBnn3·ÜØDÜq ¦úwØífT`’º²³³[Ñ(|•Ø«9!ì�4ª@€o�4¼PeÆ(xãÝ­[Ãò¯@ YqÏ=5ê1ÑaèÑÙ«ÇÖ¯[oYzóÍ Ð’ÐY_þã5ýïïÿ7?œgBSš:mªƒ4�ÆïÿÍìÿL„…ÙœñÌ¦ÆÆTÒª@;¿ü2}æÌ™Òưþéu×5¿ð§àÝOÿ÷Ó� üÏ�<_Û²%7Ð; �¤¤V«55Q͇д` BM® (³ÚÖU� Û¢ §:‡ŒN圴œâ‚YĆ6ÍVÖÀÆ0ëA‚â 8B6iR:øšêê!Gv’ÖñÄc�YÎ8ó ›¿ö�••Õ÷äêÕùßþÎwì[ßÙ*É_U•O«f}t� †OþõI檕+ ±}âI'ÙAZ»vî4NŸ1£K½D�J !:"ä—^|1÷’K/m¦ÿkÍ 'ž`¯­­Kýî9ß•õêÕM›Ìgžu– 祥�WcÐmyus.´¹@¤£¾C ÷¦ëèÝP.Þu(&D à(++뉇zGæCÕôŸ–jFt*B',1jæ Ò¸@x}}}©�ÆeBø¬­©)ƒy’͇¬�� r&Lh�…Ší6pÒÒìv»¨³ÙC"ºÁ´ºHÊ�a óÞpîƒ S¡ÿ¹óÎ?ßöÞ»ïeƒ¤"}?ø°@X†Úywvtèÿñ÷¿›–ÿjYÙñÇo'WÅôé]ÐÞ@d A˜‰<ðÿgeg»@.ðMAC£òvïÞm\óôÓ˜C™=‡òÞx·û~³ªšê /½rм3iËñbjT͇SV–ŒF¤}heÒ€†–b08U?xC}} \0ñçMœX?HßÑŠÈa¡9st#k`cHYðO575456–èõzÙ (vpøÁ(06ó¡øªòòòàø%»z.Ü2Ç+@6�<ôpɇ|h) µƒüåM7—Ýù뻤D MCÕ2PÆW^1€ØŽ*/w¨¾%h ”PÏ¿‡Ó_C™5{¶d¢¿—qî¼yRAÁÿMP5÷õà¾ï_ðýV�/™åd— ��dô 1.˜é]/Y° eÃÿeÎÉT’§wAzoÞíÜï}ÏMOt®!Ý>»f­¨N9í´¸¤yu�?‹+ ‚ªh¾o±ßCý€z-8Ü� +µ O.+«T…T¸â1kk`ã�¼Pa§Ï˜±ÁXP¡Qq)0‹jfÿÇçò¯ÿùõMá¼ó…]dÛ»g¯‘Lq Ðù§žbËñ#h‡ÐI›‚F¢>yþühYð£áø×­Ëá‚X°ÀŸõÙ§Ÿf�æEÙÿyã K/. ôNâ8÷¼óZs‚œ |;|C˜aƒ]‡ÿ‘̇á~¯XmÓþÂ#lø °ƒ ��Ê ûœ…ÈEÑÖ9a/#ž�(;¬Ñ¹ƒœB]¿k×ni~CH8ø{ÑËŽ„ÈÐ+Q»HË1ÀouúüSæ€(ŸxòªBi{H!5X)˜òàߢ°ô•«VÕø?xàÁß~CAЈð~ øçàóÂqøÂN9õT»?á‚hQýo ΂Â"'‘ŽÑ7€ÆE¦J¼3¾ �ÃBßUý>·ÿêŽz˜' üÀq˜A¥xé¥Í‰©ˆ„ƒù­ÒÓÓCjTâÛåbì(k_±�$�Çó F$@dÞKþ³)‹Ö¬{¶2˜v  q@"óšÿx*Ì“#õã²�àø¾6¿þÚ®¡jw #á@éŠ@bÈ 8i•Ð1_»ð'åýÍ…1›ºi,Íïúë~Vòi�‚Á`cÄ�Ôr!ŸËÉóO¶aŒW"²«ï�á/<ÿ' ²â3y1˜ÀŒaAOÿá)_v D"r/añŒ#�1xü± ƒ±A\8_¥äŠÇÿã¸Jïv¹ôYÙÙ¶p’k3˜ÀÆYÔØÐPŒ‘÷Èmf2™ñÜ?#Ê5øÆk¯çò×=Àßuý¢Ÿ×dziS§´µ¶Z�Þ �ï•ì�þåÀ×äU:y²/=òRRxÒË&2ä6D´çò w"Ɔݹc³¾þê«9£F"ù6BÞ5ˆ¶®Fúïcü—¸·�úšp°}*#PØ=ƒ lT€43©¯&ûDE­Ú»wÖ¬Ù³·Ó„xt>Ð>$=Ê8�ŠŒQþ­Oæ ue#°[48d¤çp\#:ÚWgg§É_ÛR�#Ù¶:æ’öA~è�•¹MÑ–!¼"#®#AVÝÙ!«=f¦Û™HLÀiéb 1 ‰>ý'¼órt@ºB¢O5Ù§º� �Æ�ÁÐ’¨êêä€]$USJѾ·¡LG LœY_WW6V³@3ñ´IXMü�¼¤Šü@Z”h³H„j—ÈàͳRÀzƒl>ü+Äôü ‚ù !yACfú«ƒ_­A®Ç´ R+C–ët£ÑŽyÉØTÉ`D(mët}½~™ã�)J©@p!´··×€Ä¾t�3@YîÁD™MM:™$Pq?ÿ L`£ H�VBƼ_0ïuvt :®éîêò%gE.Ä`ϵ(›Ê„ÄâãªÆ`Dä@¬©®Æ4:¦à�y.‚ä皘“s„ 0XÛ‡«–ö}ŰP“ÿ$"IŠRM ÈO’�S‘®h&fo£±�€ AÑB•›¦l i°�åÍ>¯^Ï>0#r@…E¾,˜ÿÐî`â‡fD.¤Š¢!à—¦{aÒ?ÐÜ\@fCZ£mÜèh mmm¾ü’˜R.r°+ ö [±bÅÏâ^rƒ–ÕÙ™ÙP_?¹¯·Wß$ÈÌãñ$#{|rr²'--­ç!¥Øl¶ 8§×ëûpŸ!5µGœ+šUºC”á댌ŒN�8ÿ–¨ÜÉm­­“’’Ü¢1tÂëìÚžh,“œ==©mB:ÇìxW·èIj§L™â u,@ºªG~dÒYgŸÝÎ_~ì�é‰\nwòÁƒóZ˜$„ÍÌܼ¼Fq*)%%¥y1àÁ¶¶\“ˆ8ÌÊÊj‡ÏÙé[ZZòÅ}4F´cw»Ýðw¤H3¸ ²ìBû‚©mýúôü+Än 3|T]‚„0£+Æ„a¢;2-R¸,¶QqÕPZ˜ I ¤c�Ìp¤3QÁ]dn s~}L-›rÜ^ëþOC‹„´($Äøø£�ÐDœÑ,›9ÔAÍìgN<$\È‹Åbi¦™YÕs>ÕÔ�t�öW§pðŸ¶!ÐôŒñ�ÿ`f´ÈÐ_KŒ&2úÛÚ2 &°„¬ü\âHg…¹¼°�y¸0• Uc*»½Cú3žZóL2´ƒTÞxý 3¦xÁ€`Le‚óHNŒ„Á%¥¥NµÌ‚‚IN5ÇãPŸeÝ¿?3)c"L”�èóŒh€s!2Æ`.¼æ§×ˆEþEhM˜;ë�·ß6¯]¿¾ nÏ?çÜY˜N×Д"˜–ÙA0ù$léâ%åjâ[Õ‰ó×]smÅ‹¯¼¼çqï¿þùOÊçY¬�1¬�1'žt’ÝŸÀ°FbÛL“É͈Îm߶͈9Ä@88¿§rOzff¦ÏD\>uª#˜6DYb353ûèÂpŸÅ`0˜À šÔÒv»3&Sö{ÝÜyó¤ Ýrë­õV«5šP¤ï0šÏb0L`Œ8Ç™g�eƒYš’z|ë;[ÍW-¼º¾+$UL‚d¬Ú»×Hû §ù§žb ÷Y:þ•Œè ™?#ž€©D¦Ï˜Ñ…@ ,wÜv»̺øKþç‰ÕW_qEy{{{PÁ þµË.YP±qÃI>çžw^ëÒÅ‹Ëþã̳fÂÿµrÕªšpž­æD\‹@þµŒÈÀA ƒÁ` ŒÁ`0 &0ƒÁ`0˜À ƒÁÆ`0 ƒÁ`0L` ƒÁ`c0 ƒ ŒÁ`0 &0ƒÁ`0˜À ƒÁÆ`0 ƒÁ`0L` ƒÁ`c0 ƒ ŒÁ`0 &0ƒÁ`0�1 ƒÁÆ`0 ƒÁ`0L` ƒÁ`c0 c´ñÿ –6`dò°œýIEND®B`‚ipython-ipyparallel-14e3c43/docs/source/reference/figs/iopubfade.png000066400000000000000000001143401520071063500256340ustar00rootroot00000000000000‰PNG  IHDR°°ÈN0*tEXtSoftwareAdobe ImageReadyqÉe<˜‚IDATxÚì} |[Õ•þÓnË–-[ޝqâĬ!$¡@ -¦Ó²ÃL7h3Ð@)”é>-ÿ-ô¥Û@ )¦´Ð(m�i ´…¶´@€”Nœ˜xW¼È–,[²–ÿý®t•gY²µë>é|¿ß³¤÷žžä§÷îwÏ9ß9G‰DžS�@Ðôt �@F �@ D`�@ #�Œ@ "0�@ ��@F �@ D`�@ #�Œ@ "0�@ ��@F �@ ˆÀ�@ #�Œ@ "0�@ ��@F �@ ˆÀB1 … �Ç–¸ÎçóY³9–xŽ÷‡c¢¾¾ž/ئ~O[{;wb=ö£³[˜šš2<ôàƒö[n¾¹õ›·ÝæÜõ Ö'Ÿx¶¾kíV¬Ã>Ÿùô¿v|÷Þ{ó>©Á1ñÙɶá{ˆÏÏFú‰ 9W_óêÕƒ]Îææ±ÞëñØ;;;ûÅ> ,fuÙ�N§‹ÎAMÛ/{Ïìì¬a]w·ëfffŒo~Ë[<êý^xþùÚØÓ¬'6 GûúnÆëû÷›?ãM]?þÙO_M¶ÿæ-[|øníííþ÷oßžõç�Ö’{jÊ1ëõÚèl2±¼@xþë'~»{íºu± ˜zßÏþÛõƒv»}Q\û`ˆFïÅ]»¬ÇoÞÌ_³kÒ Ž ¢üÆ×¾Þ’9ž±m›ç�ûïojnnˆ÷ Rãxß©o{«û{÷}Ï™ �‘ ‘@�-­­ƒˆk‰×µ6›Ûår9ñ<&¹gFX½[l_Iø�íj…#¡üðÈÃÛayí¸êÊa5y%Î˯èùÂMŸoDõ÷gþÝQX÷îøÇ£®¹úê.¬yaÝÛÿ¹ûM›·ÿömgnüÀ¥—vc›xïþ¾>¾ž?÷×çj�ß²Ù£>&ÞƒE¸+O:é$Þ“ËÿIF H«Õê«­­�dðóóóV2úè^åtŽ@qˆm ��ã>Ÿ¯ëS9fP8Ò™-_ Zðx̱ÇÎeò¾®¿¾cltÔò×]/¼øÑ�làñGsÀÂRïƒm§œzŠû™§Ÿ±cÛÏ~ˆÇ[�۴ɳ¯ÿÀóxήM+»Nù5ùýûîs€¨>wã¿÷Ã<ï‚ øµÜÑÙ·à²ý?É…H H›ÍæÁ¢^'Dâ^"–Ù†žžxÜáØ�ŸO|)=:Ó勺ºº 4gò¾§ÿn™ÃÒòz½Ü’ôW¿²‹¸Ù o:ÁÛÐÐ:âÈ#ç@`Ì’OjíÃúÏO9õTïλî!&’ûê׿Ö�cˆí©ŽA�@ T Î9÷\>A¹ëÎoµŠØS:`–~ ˆêô3NŸ¾üƒWŒ$Š>Òâ_â9â`O=ý‡Ý8ÖË/½d»ñsŸëPïÛÕÕå' Œ@ÐPUU12MR.4`ÙAí—%ýJÚâ^ïzÏ{\?ùÑ�œˆ;Áò�ERZŽ�Î9ï܉ï|ûž–×_{­VbYP& ?QSS‚ÛÒxìß¼zµÇÀ6(ÿú—¿ØZZ£.EñøÊßþV�÷­£##$Bÿ�=ápØ ãwcäj;ú˜c^¤_Iûøâ—¿4ðŽw¾Ãý“ÿØ12Œz<í�‡ .E¸Ùú#ÐæµÛãÂþ¾¾ìKg�lEÌÍÍ¡-@RkiààÁîŽÎÎ> È ¯E vô\bVÖ̪D[\œìbT[` °i·Û!,<¸*S“@È ¯IF,7Xg°ÜŠFRV602ƒÕ»¯ð\äËú�·¤”¿Ä¢+€¨®2CG¬Wßû±îÚV*¤L–6ª««=Ôûˆ EÀbZX*mmMJÏ휈2Á1Çv)GÕ©˜LFîN,„òV܇#ÃÃíb ÏH�X‡G üX§žxâ½™õ"Hkhp°e¯àÒÇóRü_øNf ²>èt:¹ u®@�©�÷÷ÃíØ�sçš5}‰*¿R‚ !C+ aÚ&ꘅ%ˆ c#æƃèïcö«,Ò7bcÄD±óQ‰À4JbÉüΘɉÙ^"I©%®‰ÁXµ» q[ºÇ$VB[{'�”„p'âµa^¯„V‡•NfUA¨Q͈ uðàba\Ž 68Ä{K�¬¥$ÀVÐÔÔ4"ÖË@^1òYÔXT}ÿ‹1&Ùx£m¤#D`BÙ`~.�{Õ(ÜŠ‚œ^XU{{91A2Ë nFAPx´²Rz—ú½¥âZápظÒñ!X^‰ûa½PÓUA¨‹ùÓkeû^P4R9BzÿLÊm ±TòzØ,#´Rß±„ÝZXY•¶�3948¸ffzÚ ë±1¸±bÄÇ hÉÁÂÁ½W\v¹��ÚEYöC€”]ز~?vC¿?¡ò ú�étð–ÉÓ¹$‰>kººzsqw«¥íÉŽ#*T€àü~¿%Qä$DPé¬Ç:FvÁl]Œ ¯ñññY¯•–ÖÖ~²<+ÌC`•?uJÄ(�ÐR +ú`$þý„rÄJä'¶ÃÊJ¦ÐM¥ÚÍdßt!,/ÙÆ } ¬èÂe¹üSB™ÇÀpA-z¹Nv�DG„ò,(XSjá… ¨ª®öeš,,ÛXa ‚Àè«h#…ªk@!(ãw›÷PÁm"0�@XÄžyÁý& t¶„"ñdi�@(´ëNV—yZ¨‘gAŒÙ4¤K‹Œ@ ‘ˆ_ÊïE¥ÏD`’Âj®Rj-VŨ×+ÁpX™[˜W<ó‡ïW[•U±Y»õÇg§•@p�?7MJSM½âg¯'Øz[¨×É€ ²J·ñݨ¼Q~Æ ±Ýã÷-z�D`Y£½Á©X &~ñàk­oRBá�Ò7>¤øóü‚kaëF¦Ç“ßàìâsÚ—\€ŽZ¹.Ê©©)Cÿ�–Í[¶øÔë^ܵËÚÕÕå_»nÝ¢¼™]/¼`u»Ý†ã7oö544¬8€aÿþà‡Ž/~ùKte$§æ+A*À7úû{Ðu�D r�Øf5U)ÕŒX-X¾ ¯ÄÚZP†ÙE×whPÙ=-ÐÝÔ¶hl‹˜QõÕ6~á¡Å»½ZÞ81ˆê 7}¾]¼¾åæ›[Ï}çYGÿé�´}âcïú‡ .ì¡aÛ“OÅ=ça30¿b·Öjâüî½÷:^íµêgžýóîëo¸aøg?Ô»íÌmn�•اyõj?¶Ýqç�ý-­-�G~XÓ=ÔPaaßÞ½G£¥ûÈðpº$klJ( ø[’ Þb›Xï=±>Ù1KE™Œ -Anê×"°¼#³¦Ã§ckç‘ñåðEicq˜»¼~ßÿ·¬øÞ}ßsn¿üòE¥«þé²Ë&žþýìÉ,­¶¶¶Ààà –¬1±>ñµ°ìþþÌ¿;ê—^Ú}`ÿ~),~E£Á#ŽÏ¢­+Ô3G-ƒ ÖVXWˆƒÝ{ßw{EÉpܦM!¹öºë\/îzQŠ» ¶‰õø ¬CßÄÎ܉€•VUUåCKxTAG#T± �×oذeŠÐ¼pzzš»YAhhùAê½äÀ¤o`ÊŽéÜ/ØgŽY- 1Ùî¯tÆ �È ÿ+æ¥�™k™fÐE}é˜Má‚´0Kªo|p‰$> ²‹U¸ 1S/ÔE 51{Ç�ÏìçåH§9åÔS܈ƒ½ûöxUk¸û@Z°Ì`uÁCl¬ì{F2ËYJs>ŸÍl2`qñתŠŒ§I1 v‚íÓŽ®ž™;:òÒp²<‰ùØ@®v ‚œjc÷Ë„wš[d"Î e}ìƒÉ#Þ¯•±±qŒj«ä…õˆŸË¯Š„¸ßnš=£â.@Ìü„ožïg‰Ž'T9⦃J Û0ÛÇ‹,@ü q0£BÜë+·ÞÚúÞ‹ß·lKÈíAr"Nöøc�Û­6±í›·Ýæ<õmouËðÿBR«(Á*3Ã2[)Iä†~SbAk‘dûÁÂC“F¸™UgË´xl¥Na…ÅmvŸ�¨°à9?¯±‰"î¥Ãƒ­¦Æ `Ì3µèX.ÏäáI’ÄcY`’’úbJ.Òtó30›3*õlK6ÀÊšžž¹jǕݵµµ!¯×k8ýŒÓ§¡:\î}p#‚äÞû®w÷´´¬ Î¥–ΟuÎ9ýÈGºFFFÍØþ�Ûoï—áÿEüë�ËÕˆ̇>Q ¥±±±ÖÆÆFNØf3¸ÌoÅzXT31W Pk³¹™ÕU�N¿¶†ÆÆ±á¡¡®úúz²¾Vb۬&¦ß[˜ &Z?€äÄ ŽçXWŠœ©lÇŠdë†U¹b2�ZCY6´MêBU¹Ú©øÃŠa>Ä«P§ÕÏž™61>îŒY_VSggg¿úaÖS½Éd XkjK(°BçÚºúz(ÝBFŸëg"AV>Z¾§:ÞJ�‰Ë(³ôâàòÆ Zr¾ÜzK½.ÕûD` â‰í—½¿gvvVÊÜ£'~û„½ªF$-� w•êÿ\î³!Û‡Ÿ®V�Œ �yét2aA%ñò$çb|ÚØè¨´Õ5{ƒuV©–�@FXzýfi¾K$âfË®¢}^8æ$ަŠ2u¶L/Ð…I �e(þ°B2˜ÌæÀÜÜ�Z�¼—ã?ÕÐØ8y´”7 û^ø~té¥GSS“K¯×KÉ\4VT¨Y3*‘ç¢6›ššrÌLO;bǃìz0g‹yEÔ®�@�¸�>æ˜ó1V õ3óñ½h¬¨`È6xe› /mmkk B­B K!–8,t‘⎂l0^ƒA vˆÀJ ´Ìp��uòJ–ÔªUuT§2ãñ)Cƒãñ×À«¯\´�z݉'E{ �ÇßG ` †gJKTŒ� °†ŠiÅÁÝ·°°`&Õ)XÉ€>PjË«\Èëú.V>ðÏoWþòìëÊ‘Gu(þôå–›P®ÿóí—]ò¥ÃûªÖÝwÿ¿òý_{u€?zf|Ê5úæ"“=Í�ñ⪨»‡V8(Q$Ê©· ¨eÑ„ÕÑQ!B]"Y¤Jĺîî^x+¡PÞÇ‘iv‚pš3Œgë † ú¿ó\ "ËÔÔ”îD"0"°’’ª+û(ÚÚ›8y]ó¡Û•ßü:*o¯«K¿;,È d†÷<ôÈ�ʵÿr?–&¬FN‚hPŸí0P†HMH(s„†Š‰ K±]݃pp�¥Sô80sƼÀîÇšš�îÅ†ÆÆ ˜hšJ!‡â€Z–1y©ñwoß'®™™ìcÞmÆ•auõä–X:í+P€û¢¥5",>ÐT�³³³š8ùp#Â¥Š¼ÄÄV>"°‚@´�/gòBÜê›·=¬\ô�§(¿ýÝ—•�0 *ÀuW"¬/®G-ÅaQÕ\Àb0ñ¶ïXÔÝñÖ——-h¬¨n>H(Èà�ËÕ¬…ÎĨé?Bccc­å”G*#t‘Hä9"/íáÉ'ž°í¸üŠž¨ëâ i¾ªÑ‡ÃQ¹þ¾þÏúóþ¶{÷V<&«F«ÉbŒ¶»‡E¥îÌHfQÁ=¨†?¸Àß“¸¿°¾@`‰‚ÄȱŲX5ú5]]½…Ì B¬å�þþ ôÝë×÷–Û} EßàÀ@7îY”‡Ó‚<]ü&x¾¡§g7uì& ŒÈ‹�1 ƒÇ’ ‰¤£~ßrûŠDhBáaÄØè(shŠÄEXŽS““MZøÎZEÙÇÀˆ¼m£µ­­�“““N­Ä•DQ_|g­ÄïˆÀˆ¼B�,$ � whå;# ß–#ýŠD`D^B…¢¥µ•·3òz½v­äX5­Z5LV‘�PáÀýÛÐÐÀ¥¡ÃCC]Z ä– + E�éW$#ò"*CˆJ£##š(×$¬°©ÉIr#e§Bì?p »ÒÈ+zRºïTSSST¹³q>¤DttC—3 ¡‡ ²zT~G¢³ì÷7¬°±ÑÑ�.¬°r¯øCX@a^HW+�¼Žß¼Yêÿí¬sÎ)Ê�*Ê éB�eYøÍÅ®C³Ùì§a&€¬^üæCƒƒk´àJlll¤"¿d�­L^¢ª ó÷]åtŽAÈAVØŠä…ªò˜¥•ó�ö™OÿkÇþ¾>+Üt_ºõËo‹,dD¾›*ÎÎÎÖb ihh˜ ÎºòþæjW"& 2ÿVø¾°ÂÆÇÇ[`…�åšw!º\.g¹7£Tã»÷ÞëøÉ�~Ä«sßtóú+™¼• µ+Q ªDXaÔj…l`Ž»ÆÆ:*…¼v½ð‚õ«·~…ÿ¿—ðŠ‘ /ºÈM—0¡RW¢VT‰Ôj…l y� wá9âåN^SSS†ýÔ§×ÌÎÎŽÛ´Ésý 7P}5BEC¸c÷‡SvËFÝj…¬° &0th…4U�W%´,øèG>Ò…¸Wsssàž{ÿ§�.]!êJ¬‹Y6²»E«>×H“N"°�Wÿ�=ÈnG}´J ¯oÞv›ó™§Ÿ±óçwþw_CCCˆ.]!ж¶¶T¼Ð‚+‘M@¹ç%±¨áe…fWÈýy±ÙŒ¯kíÚ²·D÷úÆ×¾Î­Í�~üc$Ú CK®DXaB|‚†—ôëU�©KD­ëîîÕBs»\€¸×µW¸ÏO9õ÷µ×]ç¢K–@X ÈèµR+ÑÑÔÄ¿'ÔÓd…U�!×K]"ªÜÉ‹[\ùH›¥™÷úÆí·÷ÓåJ ¤†Vj%Šö0|’:9ÙD¿\™.F‘ëÕÑÙÙW õ )îE d†DW"âå²~W{CsP«•2'0·ÛmG;ž#׫ª#PÜ‹@È’T Î#ÃÃí²~Ou«ŒqôË•!�a6žWB®WlæÈó½ðœâ^Bæ`ݸ‘o%s.Ñj…Šü–!�Á¬8x°»’äòÀ ×_¯sHq/!s@é'*À#_TV¬E³#+¬Ì }½ðÃÂÌ®¹<ðЃÚô1>cüÆí·QÜ‹@ÈtÝ!—KÊf’êòR”Ø\FцèëÑF%(á:ü÷þ_ž¿ë=ïq�±mUB'r@óêÕ¼Í bè²ÊÕÕå¥HRŸ9t‘Hä¹'Ÿx¶ãò+zÔöõx^üàCÝŸøØÇì4~e¾]Ú~`•"Ú^ùÛߪ³}/zƒ½ôâ®eÕ£±…¶—ïö]U’¿BÂÙÜ<¤.œ[k«Å8G1°l-0Y¾ fK0¥Q&ª*m�Ìo¿ìý=¨2É|¦ªÃ¸àž—_zÉö­�;•-'l¥+:GL:¤øý~¸v³Å"ý÷ °ï:ξ3»gûÎ¥ÆÎ»îRv~ë®E˜,ãŠÌ…¿Ña1F¸ùlÐZî�&¦Ž{µµ·¿Q ä¨[¤�dž@(˜&ué&!©Ÿšœ,šà®9L s�€ã8+íw`ÿ~3öC¬¿ì ù^"Y�×J¨´ÜróÍ­B2ÿÕ¯­_!4Ž­[OP>xÕ•�7¿å-Òˆ�Ô¥›˜µ*¥"Q-©Ï¶1ÈÛ¯¹úê®\zi7ªù,·?âJ_¸éó9%{ãýËÅ߸ÿþ&ì÷â®]y­ŽRò˜È÷ÂsdÐWJÜ 3øþħ>9°vݺ@6ǹð¢ 'N<ù$KKk )˜%ÜØìzô×IV1VØýý¶if…Ab/›‡ß§ÖfsÃJdDäȦârH‘†3^¿úê«Ör¿ÞJN`pŠ|¯Ž IVÔÕ6Þ¿}{Ö¤�÷Îx<Ž`0HF((~ñóG”‘‘anei-Þ B@lÁ‘4,ãD¹©©ÉÃÂ&ö™’,Èk]w·ï‹_þÒ@²ípáýé�´Á:V§é`2ýÌÓOמsî¹nõDZìßÞÞîW�Qpþò¿°Ÿrê©ÞdÇ¿ø’KÆqXƒƒƒƒ–T±P±]ý}à•Âk6Ñ0Ô×ׇ°Ÿ÷‡ßÿž[¥o}ÛÛ<êïXR"LeÝÄsᬔ¸—ÚuHÕ6…Æ Ï=¯œ¸y _Ô¸zÇ•|„éà—�<ÂÏ?ÿœ&ÏC£ÃÁ-YK7!t’ÅólJ`!ŽŽqÂ.u\ ®ÅSN:y#\xÏýõ¹ÚŸüøÇñc÷íÛgE˦�wÝÝúömgnYrûþÆ›º vÆz[À~ØL ä¯R¿%ºïCŽTéps~õÖ¯t<õäSõøë±ÿþÇ-íŸüØÇ»q<|Ÿ Ï;ÿè»îüV+–—^zi‘UYRuÑǧŠôŠÙŽøQoºù ýTmƒPnVÚÛ·[1ÊöÝ`u‰8“¬•êÉN»ÝŸ¿{îýŸ>�H¤’Àú;︣m™v~çžÞŸ=üPïwÞŸ47¯^íæÙ?ïFƒOR˜e…G�Ë;Îzçö‡Kò'?ú‘Dxë¿Ô�‰÷SOÿa7Þ‡VOÙŒ�°ñ™ÿ÷Ûß¼ «ñ¿¿yGœèÆFG-_ùú×ú`É!v‘Û9ç�;ñ‹ÇÝsáE¹¥ 0á:ÄŸt¥Üàj×aâ�‘ 03€Ñûúë4zr&Xc°Ø„å†×XŸ\oØö»'ŸZ´.Æ]Ï¿`€kHÆÿq&n…IZº b<ÂÕ™)Éb2 ÂQ�@ XQØž¬ºOmm-Ÿ@wtvr"š™™1Âziàýë»Önya Âîõë}bâ Ìô|ôW¿â$ ËLJՈElÇñ16ÂUxõ5׌�”1é?ýÔ·nLT<–$)«PV’ëª á:¼ñóŸÈÇ1Ù@RÍf\¯ÇK#0aEr<žÅã\„Ï?÷œ¢|(*Æ€«.í'œ œ{þyñý~ðýûùzlûÜM7iâÿq&¯Ç#eâ0ÆBä«q1Çä¤#E6ÜmôAT�?ö¸W�BÏGÌÁ*ÃàŸN‰ºã7oö‰IööË/w©×ƒávrxXK‰ï8x�»!½^oRÉüÑÇÃ��\ÁtÔª eQ�ãöÿº­Eý?”„À¸i i«˜q”;pqÁoŒç;®ºr8[Õ!�� >´cGÎÇhimUÚy·²÷õ^~ð§°ô¶�¹Í]R  $,ãy{GG¥ ŸøØÇ»(a™�+B¡�â›�U˜�Ùú’íápX™ŸŸWŒl[²J";>tUü9Wgî½?íŒÓ¡êãV¬3Xm¿{ê)N`P(F®ŠN:é$icÚH×�xlffFJÃwb–MÆ${ï}ßíÝýò˼,ÝÆãŽ›�p1YFÌŠýF¶=¯¼b=ëì³Ý‚ÂÏ»ººüj‹JÆ÷¾ï½8;O†cŽ=vN�Ïš5k^…j*Döý [ˆÏùõ¿Ý�¸>C½MŸƒGľ`U¡Œ#ì¾oâwpXlÌè1³Ï{#±¹oÑ ltd¤=fÊ� oO% :PصN¾–)¬² HkldDa–Dœ¤‚ŒØØ¨ÌÉ ëW5'Ï×ÝqÕaƒ;1K[m44!kØ" £±q6çóI[#Q�,ûãH—À0¸§êÞ« 䣎»«åí ŸD¹{ªã%®W[N‰ÇÛð˜ha%[—îw(ªˆÒP'!ÜXåtŽU€£n“‚ÙE¾]‡ÈÏøðµ×úáÖ)$|>”Q‹­é™¾>SÌÏÍñEX „ É¢®Ž×>d3teÖ�}†‚AN^ìÞR›š²:.›ʼn H% ‚pñ3ìÇcf1âÒ àF”]�’Å£×ëµËÚ�S•ÀDþº¥VŠpãKÿùÅV¸!7•¥¸iV®+6@²kœpðòZdÎǰ° íÔÄÝ…Ù¸™“®¯©­MêZLçžw>)!?ldx$é~°ÚÎ|ÛiñxÚûþIñ¯ENL�È¢VV’9aÔ­95ŠæB„õ%dó•b}AÂ*$¨7ÿç-ýZþ_0Û¯¶Z9‰a�Dœ¥ªªJ ²õœàB!n¡E±é˜+®¬CccŠÉlæDÒª·ÛãV¬0¼àQIë…e†}q Xy Kì×èpÐH ¿ƒ8—|�ÑÈÏY2ËJû8ç¼ó¢q¬­'Ä­¨ïýà�h<«çFJ=Ê/yDiii]´?Ü�¢*Çi§Ÿ¾ˆ¼°þ‘Ÿ?l=ï¼ó¹T˜)4jjj<J0«nD)cÒì^™p��YÙ=`¯”{Ò|¹•f}‰B™�£ªÃ2òÀúúöY?ñ©Ot b²54p²ÁÀ97;ËI¯�W-[/,+Ä—\�ÙBŒðb7(ßÇÁz�—h ‚ãŠ}#‘‘W€¬ÔVq2òŠXë¢ØWÜâRIãp ©¯#õûÔû'{/·Îby`›7o–º »Vùýè“8V__ïfÖ!܈•2nf‚‚¸ýÊx-”‡•b}¡„ùÌùJä�aÀ(Fâ+˜åƒ ð¨ÈG ð(,)a-ˆ÷GRļÔïOHUUù0“`3kþº\KH•‹pC áÎqÁíÂQ¯ñª[K%2Xtñ™LœE V—pIâøxí÷ûé.]°Nq®ª%±¾´�Ÿ4UUÍÁ=·H;S"7âòÐE"‘‚”–†hcdx¸+ÕÌg]wwo9þ¨¸�jÍxŽšd…Š} ÀU9<2ÒzÞùç›ó-¥9E$”¹ƒøà>+ÈuˤÙ#ÔB®QµøBàÿE|3×sk4=u6[¯ì÷*&Óƒݘdw¯_/í÷ÝÛÛ{Œv÷“˜£€=6:Ús¥�€ŠxDÅ�B“P¨~`°¦°È¨a±ŠÄ ¸F'%MqCíioh¨ˆÁÏl6s×>»w¤öUÛl¶iØìì¬�¬Hˆ£â5$ô�kÖô•+y¡4J¡*n2ZjËò}³cdÂ%1š”p�Ѩ}XÎ'±(Ñ*å_?û™¢ 7¨A&äÒ ¹¢“‹út�X¦&'›giáu °ˆœR•·À†„¡ÃØØX<<48¸F¸ ÙA!ÍÖwàØF£‘›ÄP"bÝžW^9"3Ù¼D¨�ˆGf�V,ÃE€˜–rnZ Ù<Úà9dóÅì²\Ì<0¡Ö†WXbüÞšœt`ðN· ƸÚ`©á8[¨‹ábÍ,´1ÊeΣD~*gX‡1KƱª&–x 5"]%E"0qA¶µ·¿QÎ'Q´ì.'Ù<�Pl@L��Z�ó„1 ùùù´rµ@@Í«W ç ¬¹d-›àNM"šV­–1F/HnD�3]-E"0Ìf2é*ªEë ×ðüª«?DäE¨h ìƒW]H§Ón"08c 9O�¹W[­ñ1¨ö,UUs©bî-­­°ÎÔëg’Yå'H×s§–qÀüN&ƒ/³²‹ 3)Ùe£°¾DÒr)Š—fÚ âŒBÈÏ ½RUeVfg罞Ÿ(¡P8é:<Ç:<Ç:Âaè‚ Š~Σè"!%lªR"XŒ¦èyœ�!•ŠQ½N·0¯æ¢ã~Ä`R–šø{ �|ôÃ@ ò‚lB°Lß�÷22ò£ß¬•d$†u°¶�$¬¶¾d¾&¬55�;÷MÃO¸Täh ©¡Éú:ŒLû�ùççy"m¾úp�„zŽhWº×·2k»Q9æØ®8Qu­]ÍÕûŠuN§�¿g{ì\ãTŽ<ªS±7P9¤8!ùÜŠÑ=½I™Gö*Æ™h•ýì4_ÝȪuÆ©1öÜ_�÷êçä×O ‹ˆ±–äJlæh6›ý‰y[f¹™ØzNàq°‰7Òuêëë'ØÒ‘êóàJ„Õ¥ë+Fì<Ð-sbi,°¸YßTU’/fŸ—þä ë IË2·ŽX4󌕂B> x«£1ûl GS· úö Ç­,aq¥ƒþÑAº³Ó©¬^ݨ¸§HŒ¢F\jϬfNJiJïã2ý:6è�îW žI%\-ï¸E ¨MÒ ‰ž]A±,'(GGFZž€ª¢�¶¶6^02z¸± ‡ïÛ»÷èå¤ç°º0QÙÉ~-ˆFœ¢q9‡fr¶Àâ–�E_’Ev¨­¯�üËu#šùÁÙ@ââ3×@€',ƒÐ`•³Lb5™ŒJMMt¢“ y%±º‰±–�.‹ów¢.´ DªŠS+y`Hë@ZIæÖ|Õ\td�Pššš\â5Ê=‰ýºÖ®íÓ Á¾}ûz Ÿï^¿~��ÐCìÑÜÜ<,Þ‡0ÄrÒsX]°¾�;¦…kÀ‹ ÊÚˆS: Œ°²õUŒ’Q©�n?0�új…C¡%D�װȰèt:^/]¸\nN^p "þ5:2™Q< ïƒÕ8è¢ +qÂá÷)º`@1ÌN+¡šú Þ7«XöD­1£I Ö6åûfÛ Ö„Ú¢hko_Ô‚H]«Ä÷_br2ÖƒÜÔë`Í%º!¡¥ "&s#N"0þ¶{÷Ö-޼‹Ad²¾�öòK/ÅóÀB1‚Q�´øó4gî°ÌPÙ$–.Aî>´ÕYãq­ÞÞÁ´ßˆ žÞ‹špEæX–p‹j±Vb" Ó‡¢do^$ÚXÙsR£,8×p1ˆi|€-ƒü5!9yjå»"æ£8X&¦÷‡} ª8 ›ôJØÌ½j� GØv¶Ï,͆E.@ƒ/ê– Y�KÖ…-†øs5"]ÞþA!É'� ëk]w·¯”ÖW¬M ÚÌÍÍñ>]Ë9_x¼‹ŠÊ.¥ÃÌ.ëX܆ˆ]yf|\ŒÑ`¯Uff¢cÈ)þbÏ A¥&¶N¨Ãì°Æ`͉uÙ’Ü¡uõõeqƒ&#š>¡ì“.Hãâ5­6N„„ò [ŠƒeH`T€l"Œ˜Œî€¢‹°�ÂYʼnäfšôsb‹˜tñç �fNrz_h �‰u8fœÔf⟱øîÊé4¹úózÂÔÖ×¥—]Z4>–Àh�ŸŸ·±Aºš=· ò–—x�Q #�š´ ºcÈ+«K X^°Âà6ÄsAJx½Àˆ –•p)â9¶aÿE¿‘ÙȈ¹Êéç|>N`¨V_Î@`ÈæaY…lÅà™àñ±Píá°“.Šºó\À*RáàRô;xð`—ºæj)PÌV'ˆƒÁ�ˆ8Xš±ml`¨1*–‘9E?b¤dˆ³È–Q…³k^1Σû/wLF€bXü3ðŦ1’“«Û÷#?l/FÞÈŠ-Õ ,,Œ –äy1¢ œ}Î9¾7�t¢u]÷:3šJ¦ã6b ¸ sm„X“Ä#†ò�[PŒ*-«•µÌ²ä„™°ÂÈîAtósËFòy 7µÚù[I ŒÝ�Õëx®È+b®RöÕñ\/Xb�Ís÷£Ù’±û1ä#,@aXjò š,�Åâ`l\°*Žìït6NæCÜ}´[#Ìú‚µ¥g¦Øò?ƬrÙÙi� OÔ<ÌwÞknn®dë*YžÅbñ0Ò™«ªª‚L˜W¨¾bÇ•�§'“~`èóA^DX’Z�ÌÒ:˜B˜—c®’yˆR�זصy�YahÄ)¬Jš°LµÎr¤ƒÄæ )yŠKÈÖÈ—Jƒ¿­øã9÷@ÁCUÄœYTæ�y*>–6�éØeT81ÁÕ’2zâ–Ôâ£ê�/R�/¼’K0в¡`U FÍCTœÏÕú‚K¹-©,,ø¹AX +�–5‹’:)t6 4ØK+�ð™E7ÏI,A k,éÿΈLs³–ƒÐƒPY9mC�:P®ý b�!þ6E +"â&Ì Ku,z�G¨cb 3õkãÔh4ç¥@öЃqW*Îgó~(‡ØÓ¿–]|ÖT„ÅfX^‘ÔYhÉYî€U…æ–‰$†w#²õØWf²îSu¾›ˆÙ{ŒFÊ*ɹô#¤ŒðÚ@ÈQÉýÁ2Ž�ÁÚB|*TkRÂÕl œ†ª�Íxk�qò⯫ qëLï_鯥qð” ù ߇OÊkŒqo‘iÜÏÆ+Ã"Å´XÇßë[z»æ3å'°qćó—n›™Š&0.o�ýPx 3ë  êÍ\¸�™ÁŒ’~ðØE�œ0Hî!øÀÅ1³×vó’^ýé"X¿J1»Þˆ* Õ¦E;¤ó�?ú¿Ù>¸c‡+ÑÊB, „•L|+ „USSã…C …H–ˆK¤ ¤cÉqBcï"—XbÜZcÇÁ±à²$2+ üGgÿ›û}ñ¸¸. FÇ$£ŽO¦ñÚßãñ“mL®Cµ¾ÝÂÖN -Iãë¢DÈÆ¹…0?F|܃j¶Bv!äˆå‚�-ë kZì ’y>cYæ4⇚ô}F:€Ëßv¿ˆ]‰ùÄ÷ï»�“—7oÙâ‹IXmÉbY…°²™rÛ²y*˜@ âhjâytA¸'cÖ™šÌ`¥�̲͟+W”",Ùxƒ‰s�ý6PÂêâ„#/‘ª`“iËØ«ªÚÌŠêIs€ ±AÇy;›qûþøô3ÝXÿÁ+w ÖÕÕUTݱLfã/½ô²âp4*íííÅs¡TU)!fÍ$KfFŒªÐñ) ö¨Þ�…[c1):df¶”瘓kîoÔzD<îB˜ ¬pu]´(qÝòÇñ)îôFKÚ!­ÇȬ-u¼ ÒB1-ÄhŠM�itò&R‚¤#°êj_l"^±JDÍud†+�'ÍÐCœjÉ g6Ï�°Ðá•-ø”Õî@TÞ`3u!Þ�ñ”!lbbR¹ï¾ï)W]µ£¸oÌEK,‘Ä ¶€¤>·^>€8›!Ff 1!þÀ÷JÇ2+dÛL Ä»ŒÊáêùˆ�E­¥ÌÜ®¼Û…7È‰Š ÉêM<‡•[a±¸öq± #2Xm�΋íÜš3É©:eã÷ƒA²ÀR_rýx .Tá†�#Y ,•ˆ£µµµ7ÓÏúío~Ã#Æçœw®´J�†6.wß½“?îÝ»OÙ°aCQ?Ä‘HbƘ¾Tä!òÒD’u*2@H͸x‚j‚•¥j£n³l}H£Ž[SxäÇ2ëùk3¤pe€Œ@X�ƃÄM–EäW#$õ <]Û—’Wâg”¢}%+5çBDP>q=#0]°p�pä~=óô3ün¹ø’KÆihIX^ƒƒƒ1K¬4<C¼+*:‰º‰-çÖC^W¡ËG©ÉŒ‹Kbdƒ°e.ö?‚-‡R_¹ÜßÙæ…©»[pèuK:b`u¢r²cD–9ÿK>£Ä@<V©JDMÊèá/tÕy´MÁ#r¿Ö®[G È)È ±/�ÁÁ¡Ò]ÈŒˆ ðƒ¼]Ml†bTˆc 2+4qˆ¤iñ}嘉ÄóóqëÌÛ_K„–kO‘™�^Jf ïwV¨J;šÀ�F?Y`+@¦ŽÌê.gyå«mºpžÁùR$-TX:äõç??»h,1¸««KS†Ì=˜Bž®&3XBj2Câ2�™hZ « ¬E‘g&JZÅóÎbÿKœÐðž©ÉŠBõãýͱš×‰©%"*UjMDé;2'›¡‰Fè:‹ú‡áXÌ &ž3’ëL¸Ï9÷\·Ì?`¡òÀRu×];•½{÷&Ý‹ìä“O*Ùù€¶RŽ•°„cT 3�Žë,uÑœÐDž™‚mJ4§MÔhÄc"¡© P{Õùµ‚` «a¹>h<öís+Áºä%ãJ™ò1X)>WˆÎÐV…,°ePªŽÌËYY +xÅk“ë�¼œ”‡|�ßAP’ûp1z{÷*==”3Î8]±Z«•o|ã¶(q0ËäöòË¥%°8¤‰DÁâh8†ºtÈNÔA,IBRbRû¸‹1Vd‘Ë1áW“™Hö.•ņ$[ ¬±/=ƒïÁžçÃ?þ‡ßýŽ�^'¿ùdé}ʥ̃µwÜqœ°®¼r'°R»sž$±�XôÒ÷ÄÒQBɈ}Š-²P·…I$Nn1·cüuÌÚQ[=©H.W */½ø¢²éøMñ¢xDÎ¥:ß�ßèï_R\ •ˆUľê8¡U)=â`D`éÜ<%îȪ[¥è&‡¹ë9að‡Ýc<ÌÃÅ}`ÿ~óØØŸê^xÑEÒ[`¥Êƒ•%Dj²ÖY¹d±Ré(ÄÈDuúR–bDšÊe(H ¤V‘™èV�‘å‘ vâSÌJdßadÍš5Ãy›¸¢°o£=ï…ºµ²ÀÒ�•JÒ‘V¢Ò0ØØš·ò‡ßÿžÏdŽÛ´ÉC·GjòBé¨b–�*%Ô¥£•Œó%Š—et³«‰­@.Ð\ |9!å9Á… «VXdD`)gBÅíÈ\ì–Ï>û,'°Þt‚—n�ÔxòÉ'ù#ÄZm ð¯5yü„WšgÄd««[BBÉ+L(E j¾ˆÉÒ2!ýÀP:Š*`ƒPM=/Þ�–µ\A™�‘‹.ÄJT"jº#sº¨«¯O[ºôâ »8�½ù-oÑ„VŠ<0HèQÿq/­» !™?är)3nwÔ²Š¹ÖØlÕXx<©ÑáXö‰­Vàf\âb„UÆ–rïæœkï Èý‚Û0«¬’:22 °Rvd^ÓÕÕ›ë?™n‚ÊG‰ø×Û¶i‚ÀŠ�üò—�òGľ´¨6Lty544(ã‡ñ>]â¹p¦{,/ƒ`B/›ŸŸç‹(•‰Ô¿’…1ÈJX]\mìg ‘�[±:2«Á&FĤ+1™YzßF1�wíâ4ŒòQ4”¤¶¾DógœQÿ¨¥¨&0AHvFnÙ@$D'ºã 0Ù€#¬²J®}¸dÀLQ)‰ÑÀ2™*1=2,ïŽÌñë·új–ÀЉ?ýñ�Ü}¸eëVŠ¥a}!ÿ«\PW_ÏIE­ÆCÜ+.¿E.Ƙ[Q] &TŒZ¯JŸk?°ˆÎÀWª+Ð"5âJåâ*¥#3Aƒ™ ‰×_{�ûŠÚÛÛüZùÎÅÌS[_gŸ}vyÍüQ¡-‹gf&jAÅz�åû3Pû‹P1bùe(B<#;- ?rí†jô¡Hjex$�B•Ò‘9~] Ü€ T`Q_ã23Ò‰™éiG‰gÅŽùFùp̱ÇÎiå,f*mçœsvYY_¢¯¬£DÕaÞo߀ÕÅËUÅz–©Á¼.fX!�\+ÈÒaÝ —u¹ÄáRCX‰• �/˜–Ñ)á…<± ¯ Ï;ÿh‘ËU* p}ý 7Õ™k˜l ÆH@käµ@,œTa™]óÑÚxŒ¤8ùBÑf†¦h£B3#%ãôʽ¡ÔD%ˆ,U?;éf¬ŒœDϲd… a•iÕú9U˜„r¹šW·´H^¨4â* � °¼@^¨dío;¢èŸošVŒlyî¯ÏÕjé¼�´î¾{g¼ÆáUWíàÕ6Ê̪Šõ¼DÈ DÆKÅ,'<†j�Ñb¯õ¦Ê¸ùU…ÕVYbAaˆ?´Þæ%c«>˘œœt"Ö$³F¦q€¼†?|wÑ?·ññ»”¶h pþä'?唯¼rGY 6@XˆWé!î&„›Q¿/„Í‹- ¼6( ñ핵U–ª 0H �¤W*]UÊ<°|atd¤u!¡5 ¬0¬/d, Çgñ’M‚ÑÙ²|-‘45´Ô82íÂJC,¯r•ÊCxað,ÄûB-'À .(\‰¤nó²LAá\û�•�ÍÃÚJ¶mjjÊÙÐØ8QY=ÔÙB _*`lbi D`„Â#“<0�ÈK\¨(uöÙg•õù10Qt•+!ôÐëý<‡'Úz_0Ú‚Þ�‰E9¬N k¿ùa&V™ºt•((Ì­²ùy¾ˆÒUåÐI@ÐÐààFPu‘\Äò×äÄ„Û×uw÷æÛJY8áãú ×XF4î¡ÐXO±²'0Û_QšúŠ¢Ÿópc µG™~Û%üyë_É÷Q»Õëð¾úßßÏ_[•¹î­Êø…Ÿä]c“altÔrËÍ7çT¾jFĸ~úÓŸÆ­®rv¦$²Òñ®ˆ!ûò57 WeZ‰Š:êMÜ­ÈûCÕVÞœ/UAáD9¾© j0ªÉ BŽØÿBj¨ý`¥*ß qZ4à,>,(Š_{ὂÞ�âB”�Õ!°yõ}í.´Xý?ŸàñªÑË¿¶â{ÍýÊÜú8™U÷=¯¬þÎÇùz×Å7%'°±1ów¾}OÎn€|©ai=ùäSñ‚¼•bu¥$1³ž] ì’¬WâƒHË8ˆ6FH³Q‚Yˆ(¦ Ô�­Ç$ÚÏ]ÚHºçoÔí-ÜÝf<‡{»>ê„AlW©[\Ö,¾N¤Ž#ј/ŽaÔ®§blêW) -Ü�¸"YUöÀm8ÉÞ+H ÂÏ›ÎKë3-Ìjs<œš,!(�($ìÝ»×úÄ“O9˜µå˜ŸŸ�'4‰Þ]dqJU˜íýÛ·»ìv;j Z=�ÃçóÙC¡�™›ËäädDf³Ù& ôÓòÿ1˜•`ݪâCŠ#°ø8ÄÈ%êÆqBu=A^ +!(‚õ…uá*㊵8£Ç‹¦’€ÀÄg�ˆ# DqI6À–<É1¬DÌ{:'$ ¬*Ý:xà€âóÍ*ïyßû”w½ûÝã"ȇdy` §A €Ì¦§§�°Æ@fŒØœX CÙ�Ù¢ûÞïSÂ& CþVVÈjç[æÓ)zï·ÆÔjبŠv�§�¨ÓB*%°êêjˆ‘µ‘%,)VûW/æjC<‡Ä^ma�Ôà~Ä#È+¹%ƒ:&#â[êY÷Ç·,ÿý<Ã3ü“ýÕW_µ½üòn»ÚÒªªª wÜF÷èà€mlzÚü¦N ò"H�“ÓéìÇs¼`••+™™G÷3«iž“¬3£{”¯7LR-V$1’~^‰¦o ì#.ľ µ_b¢LZ¨òÚ㔽 q†‘È)©9ÍIÈé…¦be–áhQmkOÖÖ—x?>–ŽBKõ½FFF¬Ÿøä§�¶ª× Ò:á„Üo=õ?øÃ“Oö ÀHÉ�¾Ë1‰w;PtJR¢ÒUP’}Eb^鼒 3@4É\�Ù@Hì×Ü|nÜ]™*–6ï÷yµ¶¶úŽ?~ÓôÉ'�èÞ°aƒO!¤¾˜‘Ï¥×щ(!²í–ŠÌPƒPÄÌ a™dÆHÍcZAÞ^Z›UB5õü¾Çb˜usòâ©;½â˜‹OAiht”Àêjž`oœ ðx˜P"ž…סÚè<–Yð0É Â ›ôåwÏòà"÷~oºµ£—ä3«Â�Tf¯¯|øÃW¿é8�Íf[6²š,¬ÒPS[Ë» ó ·l™^Ï‹àV ¶œ°Ua×£¿.‡Jj2cDf™ ˆP3b#0#³éªª*�š| 4Ãan‰©­2N(Á¾-]DPÚÌäDÕ Tˆhý#º& Z ï¦S%¢Wuœ´Œ3Ñí¨J–DÑKÌ¢*�¼à2f7žÁîÉd^CCƒ_¸WB®ýÀÊõv;/c æÞ�– ”ü8 ÅdÅj3%/”_Êõ8• SŒœ¸„‘W-ÈŒ=G·dB°´ÀÕë dƬ3o©cgƒ‰Ë¡E––ÉÕ¿È#“ò½0º,þÈ÷µøÂ­.ƒA 4Yx\ŒW•�—‰™ /þÚfŠ6qõG÷Á¶�Õ°ìg�I‘t\lTÅÈ)©uð·§çÿž²‚J\ò2ÐåaÂæ–¿–¢ùLtb%‚P3BšaN‚ÌæççmjëljjJ)5¡…AEœ]Ë\Êm¢ k|_ÝâŠ/ú¨ q¹ºœ¼óÂ2Wâg�­ôƒ² ®PådŽ>æ~qBæ.[_.�¬¬éÓþ‰F Éò Ç\;ž™"°,P¬~`KÔ®Fa��Ì`�Áë“Hhp92Bó‚Ô@h…,o¥Ká"’z‚F ÁÖØL©`œ÷¼òŠUü;:]ñûÁE"óìïüÒ“ËK§pp¶È´aeë‹O¸‚Aþ®DBú(U?0U®™+¡á \Ž1 ˜Íf[æ@jŒàüù†@e¹|Òɼ­‘+ ²ÀŠ�—^¿¹ÖÏÀKÅd÷é"“~`„Ô˜™žŽ[_°ÂPã�bXÚC2BcKu °2R«Eü,ævä®GAj±÷z`±A Œ×ˆ/£Cs&ä†då°¥fé (F÷˜1Uq5b"PÿÐ4^üBþº ÕB\þ•4™¹ ³ú�¡ K*b¾dú„ì�Jê¾ÙÙ¤V™{jJit8è$•¡ÅÝšP8‚œ@jl©© K Û±Ÿcpp�_ÂÉO£1ÀH.©x IÊI•-QgOpN:hÄŠô–ZëPpCK¸ççæ¬ŠÝî®´Òyô k½cGÒí$â(ñ$ƒ‘T,FƒlðâîCkM ή[¾`aed›V ¨¤÷ê‰6¬5Ú!—«Yáõ‰Í>�^o¹© ׇ ¹,.¼äÞt7ß⇦F4ghœÀd`ô�üËʉ'É–#”W_=¨Üò…(yö5åõ¾ï(ß¼íaåöÿz8¾¯zÝC¿¸Q9ê¨N¾ïûí¯w-Ú7 iù�~­Â1Ÿ7å�å†9ŸO±ÕÕŇE Œ½¶74ðWD`é#y`¥Æ+!ÝŸ‡�Ïìhjñ{¸ÙÂã{ 9·Ûmg�¶¥„°À+q,]u!¦ªÂY{ÐR|ãD¤b¾)Q*fÿ»·oV®½îå²K¾ÌI D644žÖ{A^‚Ì>ðÏoW®¿ábepp\yð§Ï¤ýùÕËHìÕUï³å�冕D&“‰/BìzˆXHŽMnŒ^�g �-'â@lLTå HN`l€ð á[©*Ò·µ7ñGÏL4 $– @Z °ººô¥Õ¼p ×!Ÿð4¶rëŒ@ ”R‰8�ÿ•N%z3ÛÇf±*–ؾ¿OñüJ(Šooª©_ôìã™÷-Úîg–àÄìt|[••wxz¼,ÎsÙ×BñÀƒ;ÏogÕÐ`ú?,¶�ü‹¢œÉ,¹¿<ûzFÖ\†p!NÄZ¦Øþòóè…vâùüq9r#´ˆbå�É.âÐëywÄ» èʤ… ȧ¥¾IaD2êªiQ zƒ205Æ Ä†íx.$}¿3få-"0F^x_¹XÁ�­f³™kBKUq†Y^gžöiåÿçל„zäFNJ™Â33§yT‡ÒÖÖ”ö{„‹JC,¢°0ž£:}>€<°+¶o·ö¾þ:�ž„’Cä� Z*ý\XFöñ\PT¢7�í�Ö@Ì šþ‰e÷p·°º-œÐ@NØ‹°¾€zF˜Øf`$j/B:OÙZ`‹…û‹KY$vËÍðx ñ¬å\‰33‡/ìnDE×þËÊ5º=­ÏUç± ³³í¯�ð’RX_³ûÉ”íT2A©óÀ r˜œ˜ÈKÂ|±+ǪUÍãB®q B ,F6°À-ë£×"#²ŒZ¨$¬/{u-'¤¹T2|%ê>´š-Ê {L©e—ÝZ«¸ç<åyž‹ùa¥r f•·ñ°ßüz—rÑ?œßbë“Çf�¿7íîMçñ†™kÿí4^ ¯‘2CóL­Õ*d$/A®êê…"0Y!ów+wèóJ‰Ê(Å–�Í¡èæs+Ç(\…FÕ„¬ÇÙ©lí<’/ˆo ¸P8Ì-2/#R›¥|K¢%VŒrR©pÑ?žÂň_µµ9”¡¡ ¾É,«ÿ¼õrå·¿û2W&Â=ø™Oß³(F‚|C¼7] ƒ3,-X^ ¯pŒÄ@féô)“‚¼PU œ¤²@É.ì©ÑÔÉ¢… ˦*¹¬Ïñù’|®–òÀ J`‘',£S"rY}@1ÎD_CÌÊð~®C¿ÊÙë:¸ÈuÈ-oFd{´Ö7ñ÷D-²*Ř/»ó\ö"ľ°€„݆ÈíºðܹuecK¢¸cÛiŸŽÇ¼ÒQ/®T ßþûû—}ÿrUíSAš<0v“„%šéEج·˜½ÁÂ*7h=lÑošCØ#lªRL�ÑûWxÒz.¥Ï�Àšc¢ ÄÂ,)!zÀÍèž‹zæiáµ£¦ž,ëÙ Ù`Ü96[‰.ì•b^3I\ƒ ´L‹ùª†ÏÈ(íô~Ê# !<ËfÌâØ;ŽÎù;Àš2è Š£¶žÑÀ”‹»�U›[þpV›¢ÚÄ˄˱šY_Ñ÷Ž-:®äù¼í3X ÓWâÖßùDMMM¨{ýúœÝ ¯›o¹e€†A;Ð/Ì+&×Y¿îE5`eÕ²’w,)Hê…Åc\l;v%¦vfD$ò¾ÔÒú ï´b¨kàÖ¶{bÇ)* š<ïŲÀ¸”¾TÉÌÅÈëg?ÔK·3¡RQiy` ��ã“““Îp8dÐûgóv\ĵ<óSn‘õŽLëXP "ÈM�VT"Ьf6óéE¡UˆèË…Ö&ÅF$2U²�ú�dB©ú�• Hb×=S““M¹gvv¶B7º‚$$0QзPÉÌ¢#3šJ&ëËU,d»Ê´ÒÌ0ëæEL•pˆ÷B ›«x=8<· ìQBõ«åȨיG÷Ç…ü½V[Nù4Eñ:Œûãm1о=\mP‚¶Ã�w£gAÑÏ…ØÿVÂȬMq!ˆè¥nù.Öa¿d C£ZÄk•ÄV·´ çrŒÑ‘‘V"0I Ìjµr‚)T2ó…]äÞóÊ+#Ïýõ¹’µÏ¥ØÕòà•¹y!°�ЦñE7}ˆ º+¿—‘— 3ƒg’W6ÈF†\L€¼Bu&NZoP1N”0ˆ¬Ê ˜&¹ÂÊB£…­Ó±m œ” Å_I͈íþ¶è<Ð2ä‹�@VÈZ¯�À� &-Ÿ¸þ†²žØ¿Ÿ+øÖ®[ K¢ð@M8XQ©ªu/‡PM='°Tý”dD¨ÖÈ Ýv#�¢Ÿ)Ásœ¬ð„gð.°uÚ¶¢(,Çq2QL³Å/  Ó¦±x†n¨0‘el˜öË_üÂ>33cÌ…K­öC’gÄT•ÑþH Õû<±šzÍü¯°À8‘Y�ŠÁwøù"˪†m›Ñ¦L�rÉÃD�¦")¨‹AÂ4–,jjj¼Zú�ŠF`"Œ-Õ6É.î¾³×ë5\}Í5c šêꦵ<0H�…d8÷áëMoà’e¸$ñ\jâb„$H)XoæÖA#Vsl¢m4ýEšàg-�º�ïsýUÕÕ>»Ýî&K‘ …¤Rl>ùͱ±1>øßyÇÍZ´Â450Ô¯J»'RDw˜ "UÖ¨p£Ná¢cšñ³’þ¯±øb^p•ˆ8þ+ˆ7 îˆ[˜þů“›¡tý”3²ƒx<,W‰VQ´ú7" rQ™NÀíÿu[‹xþÃ~àœšš2ЭT8 ÜT"y¡j�~ÖÍEÜrñLÆ×/=Û'’ÞúZDdµ&f1F=#)ˆ8`‰™¦Ø|.uÁ­ÈEµÑ¹öÁk�œ#;¼†’Qv  í}¾{ï½ºÚ �Ñ‘‘v¯×kÏghfbbÂá÷û‹îÑÁgâ³¥$0‘ &›õõòK/ÅGIF®†®¿¾CKp9ô 2«LaÖú'qëjæ/t¬&:Ü�hM1˜™u³J3ÿŸkèç£ñ¯‡…“—el^1»æ¹ Öšˆ‹…¬NbØù<An‰q3AýÀЇÑðX�ÛíN)É}ýµ×6öíÛ׳··÷¨þºW"'÷Ô”#ý÷Ãgâ³3yOÑî¡<”)×Am} <þècFlglÛ¦‰ ´VòÀRµX æ¬^Ç­+]8¼ÄB ´lˆÊð1ø[Öhbp�$>b<ìó 8«Tÿ¯žý¿ÕÜ*Ó#K¥óz]”äáj´¤õ„Ê,®±ÑÑød{rbÂép8’V>YXX0qä‘»ñÜår9ÇÆÆZ;;;ûËá<�ÀD2³8ùê×¥À7o»Í©¶¾Ô¸á³×wýâ±G÷hMÐ!3x‹õ•â^zCR×`Zï•ÔêR“Ö’ÿË [Qر\\Œ*àÔ0'Ž[2aààÁ.u^-,1ÄÃVÈÁæ›�åã”–ãããÎö¿:šš\É <ÏÌŒ"¼¶¶¶q>†;jjk=ìýP.®r:ÇÄ6Xƒ3ì=a6Îã¸øNønØWÏöinn�ŽÅwÀ󪪪ŒÓ«Šz /˜øÒ¥üñ‘÷µó®»[�Û´Éó¹ÿ½�Xÿ•¯­¯×oXï»bû?wÓmL dä�}ðª+o~Ë[4-£_ˆ¹Ðò¡îË7@*ˆ{%®ŸZÆý†J �H‡Êú)u­]ÛwÈåjÉ$³çº×¯ïe$å�ûQõYNtÁ6ˆHØû›ÅwÃg€¤ð9ð¼á¸ˆÕµ´¶0£`‚çaÈ0"îÆ:|A¬RZ`êÙL©¥ôýýý–‡ùù‘¸üì³Ï"¦  ˜¯½î:¤és`‘Ý Ój¡&ÇÈE ¶Ý^__?²KW¦2……§”ØêêÜ0ZsÕ@Šj‹KÄ¥%0q☵ •Ķ£³“ÏFFFÉŠ!r@¥õ+%b>ˆ@Œ¯©”ˆˆ��„àkZµŠ‰Õjåq-+p¬Ä2Rˆ  u + nÆ•¾³G×bFŠÍÀöÇwÃwÂçïÏ!ÙûŠï±\’ˆƒ©­CÈùE^,ÌL~E�E¡8&¬PUé³â]löB"ó®^°n޲ŧ•­Ôy`f‹n …w£ÍcGÚ¼YýÆÂ^âlVŠ6ARâÅw#dá2“± .6¼Ri9Áœz ÇI\'^«×«�©Þ'Ùq@P‰ñ1±~¹÷IE`(Ž ƒ¿S‹Í|È ÛýòËÕZ"°RÃVWÇ~ù&ª Wv�ô3«V)ž™%"Y{#/ñÛÊPðÅÿŠ«ŠN`ð³Âô�Ÿ›³*U>>áM'xA`{ö¼Š�|÷Y�Xf•b¦™ÿ�Í€•FG~Ëþiñ<P?°â`6–3%cžZY˜ð) ³,@âåw¾}OË Ï?_«¥°œòÀæfg5;pÓyˆ‚òÀŠlü"°"Aø”erh!�Y \òÀà‚ôÇÜ�xn¶Tf-X:’D¬H®Œ¥¤ŸßO¦0L)Pô(¯þ‰@€°Öuwó‹áwO=e£[¸¸@)Ùs:„R@Ô”‘ „€ñ/Yk5–-�¢Mw²Ú[¥Ä–­[¹”ïÏú3X‰¬ŽØäFJQ�‡•AýÀ ‘tl©ðøWÉL´éÎ&óº�8ùÍ'sëPKq°rè6ív§µ®ÜQç�ú��Àb•ŒP`—¬ß\‰(N;ýt~A †ŠõZø‘†Cö~`ËÌ&]²ë°­‚fÕtiA$0×V¸€£d&j"ʦDDL´VùÃïOnă3â/%EnD¡ò ›:Z€â_2˜¤Í-¸ñ(܈t™é¡òÀž�Ø«Ô@æ˜õå¦+­Ä†fix”QÈ7¢P#~ÿ¾û¤¾Ë!ŒP> <°ÂÁçóEã_ä>,=�‰-BÈ!Û‰�8�?øçR˜ÖóÀÂÊP×?´‘@¦ô³Â¤rç]p�M.‘ÔŒ&—t©•C²}'·ÛÍ݇TÿP"“YÈùü©o{+÷5{çN']*ÂÊ(‡<0Q`AÄée€èÿŬ¯iºÊÃXÊçÈÔ””Bàƒ;v¸ô1ÇÓ¿ÿƒ´9aåÔŒ }”S˜L–Ž×ãáX]}= 8d±Àdr›·lñ!'Œ¬AV1å�å ”¶‚V@¯×‡*½ÿ—T†?ЬBàÒË.uáñ�ïßßL— �Pþ½ÀdA\>o³‘õ%�Jr9VãKF bޱ±13õ8"–G9ä�ɦöóx<õx¤òQ˜¬­UÔxïÅïãVØC>$ÝMIy`™@y`ù…Z>o·ÛÉ“�À„ÒG$éɈ«¯¹f �/¿ô’íÉ'ž�ÊR¤<0¡|AòyÉ L˜é² 9¨ßqÖ;ybóíÿu[ ]6ByB¶X¼gf†X½Ý>A¿Ž„†Y…h'ŠUʈO~êSòZa‚,ÐzX VQY(5|>Ÿ¨>O. Œ_,±æl³’ 9ÔG”Ñ CŒ–V2 ¥òÀ�Öqƶm$8ÈpB‰ >Éç%&0¡®ðd…¥Ê#ÊbBOÕçe·Àb ÍÂ\&+Œ@ ”sss|m2›KÞoËëõòøUŸO ãú®µ[Õ+v~çž^µù_äí¶ÝVÂÏ_qûçnü÷~”—V؎˯è‘éû[O8A¹sçÝüù‰›·(´=³íÇnܨ|«ÄŸó-ÿ¡ÙóWSScýħ>é€w@¶ûw¥í·~õ«ž =s,.Ÿéû÷õx^ý:Ûí¨¾±°°`¾ð¼óñ²;ßÇ/—í%­…˜ 3 ig��Ü ‰Éj…± ßÓØÐÐ+ÆÚžÙöØ ÜSÈ–äó¶ÏóZ<(½Fy`¹ATß ,]$yN†/âr¹œ®±±ø{»Ö®í“ù¤Ø¿3££q£&ÎÈ* TÊîìììÏõXÛ½{kÌy¾TÿOß¾}=sss¶5]]½¥ªÄ Ãy¨T vLMM9›ššFV·´ —ê{ìíí= ©E-­­ý‡ƒ$ô) —å‹™¨Ìù`ˆ…‰ê7|öú®J¾€ps僼 „d¥Œ;!�ªo¤i\ˆB& ¿/~@‹Å�ùÄ¡:Çø�SÔH„¿¿œ/ÌÙoäÅ­½ý üfÈÝc–sK÷úõ½£##\ ‰ö8�ÿ"ùÒétr¢‡Oû¡4úÀa À{è\âœâ|á¼ã7`ç~ ñœ"ŸÒÙÜ<"î#ñ{‰¹½££÷öêXÌ"-:¨Ë¯<˜Å{kkÝT}C# ’½çƒ  :ÇŽ«®ä.†¯Þú¸ å|¡`Fh2›ýpúèI¶ �‚˜Öuw÷Ž:Ô** <Ø�Û0»…›Žn¿´4G³r7ôô¼ ƒ»=ñœâ¯Õ¿Î3?ß55^6ÑâDòbÖ·´¶àØt†å‚¨¾a¥â½Ú"0QØWt•×^w�«¹¹9€XØ�wÜQöíV„5…Y>j³ÁHÜGtŒÅÌû ²HÌh4ú…u@n‘ÌP__?!f⎦&—�Ý8÷êsŠG¼Vÿ&â<ƒÈ`qáùœÏg¿#,2Ñ ‚p˜øñhf“µR|>,d1¹«§æ•#°˜ßyNò|05nþÏ[úñø�oßÓq]RK!ÊóJXptRCô+UC]¼Wö0 ØÒÙ» .EL ' Äã6mâÄû‰�}¼«¬]±Z•˜åƒAKºåmð»bf+¬™k^ÊÄÅó‰ñq§­®Î�s�ß@œSѵw¥ßqá‚T·ê Hr�QñÞŒ ]»=È@G S¸:dÇW¿þµþ·o;s#’›zðAû…]T–¦?rS0€b‚ÑÑÙ™QªC×Úµ½#ÃÃíxÝzéîÃþº…ˆCȪñ¨EˆM®t,ÄÒìêÛ·Ïqøé G!&͘D—âóñ;Šêä>Ô*�ÕÔpóEã`š 0Èê/ÿà#p#ÞúÅ/uœvúéˆ<Êíbê·DëJ(ØófÔ*CXâµúF%¬ ~²œ$œÓT9“ÿŸ½s�n¬¾ïüµe˶lÙòcì±g<ãÁ`� �$§-4'I{N·'é–$º{Îf)”fÉkSBÂÒ&$,�@åJÓ�)y54ÛÐN MH6 ÝGS ™ÌÀ cðø9Öø-?eËÞûù[?Íßù)É–®~ßst$Ý«ûнÿûÿþÞ?;‡Ì¾G�–½ ÑŠ;åïÉ5ˆ©{§ü‚j>Ü<Šsí„$l:�ü`€°z:«¿óswheÝ$`¶âÅ|øJgg� zUvf’$ùœûÐíjbh:Yæч®–­W#O ©’‡ {~ª(·\—t|ç±ÇŸî9Où¨L�Îö˜D\ ×O±TL];Yå Ÿ@`S&“jE£Ò¹;f‡5o…æ-u'Ž/B{m]� wùJ`q“|°ª|º˜t\zÙ¥Æv}Ó�ßï¥�’.á åãÓ䥽�6G8™L2frƇÆýÔä啘�›wÂG«½¿áÞûï窱¬Œ½ÒÙ¸ý¶ÛÔ”¨P(ÖÅD|®ÓÞ_ °*ÉËÃj ˜?zãÇL°A^3%*^Etsä&#C`j>ô�an*�÷ã‘Èœ|u%7Ìk¦D…«�j%Û]ÈW͇#0[•žÊƒºˆ©@n˜š ÅzPó¡ L¤ |Í"7LŠýª)Q¡È}PÙd'Ž«æC˜"ͧ²RɠدšŠü€Ô‰ÜÎèL5z”Àl•z<�ÛkåàW;Õ”¨P(RA͇&0é‡3�'íUR�¨Ä[oûlŸ1%þä™g´�­B‘cØ©:ˆj>ô0�IAË|¯›Gqßßûýoè-Ÿ¼¹ÍëÍ/Š|ÃNÔATó¡Ç ,ßÃémÜvûí=R+ñ#úP›=…¢°¡æC�˜}s'ò°*‡ L‰<ô%SüÙŸ?zà¾ûuø)¹jtò^ê÷oKac:2LŒ�×›¹A͇Þ%°ê¸q&ϪӧÂë/¾xš¶+|þòÃÝ¢¡õ En`13­¥üq‹O¶!%5zœÀì.ÍùT�~5Ü|Ë-ý„ÖOMMù­W˜BQxHt^Ö¶BÞ&0P .›ó8œÞ†ZËÍ7·ê0T(v®@i:_”WTd]²ºÖÖÕ éÕß:Jòá$ÝÉ>‚½8‰Ôx¡�þ°{￯óºk®íxúOÕ?zð`„ú‰:7´ò¾ÞÞýsssÕÎOtuu¤%ÇêêêÂÚ÷,¿°½À´ór�i`R•ƒI*_«r$ƒÞaâû̧omSØÖÐÓÝÝžiòÊ�jö‚Ù»ÀýÚ®c%̇¡� ­… �!�ˆÚMUš"záâã;úÒKD%~ðú÷·?ñÔŽ �é°Ü8¤üÏB¹ÏYòåÌy•N-˜wÌEz—r"e»Œ”m>”~“u(Û1ónG©‘áa“ÿ©æÃ#0¤)ó’ïU9’A~˜tqþÎc�5>zð`½M…b{ q¶ËHá¿Se}}½X!˜-µDò¼*G*…xÅ{Þc|{_¸ëîV êP(¶—À² éª�?;¢•Àr�À«½}»êŠ+•ÄÒ@KMƒÓѴϼÚê›�Æ`�ã+>}9[k›ëåeƒmXð—¯XβúʽÀC6µ"ülb>”´ E�˜ÑÂÌ,Jòí„1#†[ÅŒè…Á@§æ'¿ÿD=¡ôÉë¨ÔqvÛ� ê@„L 2ÉÛÉÉ%®Èì´y FF �Al�§zÍúØR̬KF¨¢Ê‰-.:ÃSã†ÀzFu¶ð(æ£QóÜUTTdÍ„(¹_¡ÚZ Þ(d ÌkfD‚5èÔœŠ¼vh€$X{e°Çc†� §„¦åj`Áò€yÙ¦ÂP èDæ¦ÍËïj[ÉfD…w�í*˜I¸'L_͇®�-,vµ°fÄ|GuI8ñðôàË9s^þ¾£NÃãw;¹H¬é’Ø �È%'420�s¦£³ ¬kx ¡�U•ëÞ‚ø¦²ÕÖdhhÈä~IQrE¡˜͈fm¿DGd–QájRÓ.Q%¤ãùYçØ`÷Šß„*–‹½ôQ_UcL‰˜Ñ½€F¶æ‘ÉHd¹ò¼š3Žâ|<éBˆFTdšÕøÌÚåîB�*ã;ë4�˜þ2cJTx R…£4K�,™Ÿ0Q²ÿl×YT ,Ÿ´0™ÙCUyÀiqŒæy�ÍL:ýV´!Q†-q"2>² !-1ιdÖ¬5ËE “ýÊz~¯È?H>iIIÉ\6ö?�–&úP¯¶Øió¨Q‘9àÃ’p÷áÉqIˆf%`Yr8|I±Ï�Ô�EHlÓ3Nlk‡Û+òÑxb¶È‘>†|®­«S![ ì4ÄŒˆvxx¸Þ+-V™ÃzZÑjëSkØþ¯~%0Ï`>-ã½²²r2Óû¶+Ïg+@D ,�QW_èïo£D‹× ¬d¤ß©{úa§dtÀY¨mvæöœëL]ðg¡®Å þë÷Í«ÿý�ø½½¬¢óßœšÿõ §xvÒY,¯rfÎ~ƒyã8‹A}Š,AWfÅù|ò^ìÔ¼J]â‚� ­© ßj>ïùÒŸ.¯sÉ­âø/VþÞZÆ{å¯êŒþÞû̶áî¯~TG¿¢à155e’Ë+*2ª!1iãJ%°5!�šù<:2ÒP7,×¼†/ÿ˜ÑÊÊúŽnx[ÂôѼÆßüŸÎ <…¢�‘iºTž¯¨¨ˆhãJ%°U!•�ÇãÎÒBäb›0bJD«ùÙ7 ‰)…Iböûý�B”ÊóZ:*Ëó`¾ÿBèOžl¥T 9^w–ÿß÷œÊC?1&D´)|`EíÓ;Åñ(|h E¡CÊHeRKÒÊóJ`›%ZW¥d˾}ûº¼~Óæ]Ò"8c³$$Ah`�ßú”1)n†sE±¥ü7'(¶[ûZ®B_\œQó¡Tž¯®©Öô%°uÑÐІÀ¤d‹—yÓ8£ä”&BYWî~ÆW– BZ>W[ÈóëA…´ï’ÙÜœ'tË]Dã!ôRÕ'S�à�jm\©¶`6”‰Œœ°B«ÌQ¿û‘ŒYÑßÌwØaõÀ„á�ô?ÛxÁŒØºo_gOwwû|¼§S®©¾®®.¬ù?9M`3ä~iåy%°M£¶®n�Êc££ž$°ùÚfÏ{*H¾Uä •ŸkéHäyM¸¤&€èàðŠ ‚8÷5¯9¤�²bÓÏT’˜¥tTMM�o(�mRZjff&ˆmÛk¡«˜ýF\[ ˜SU´ßȶ E¡Aê frZ:j{á¿7„Uh9a…„‘H$ä•kÖNC‘ÌÎÎV ¬ª*#Uâµt”XZ(Ôœ0/ãåcÇ.œšœ º’mèèK/]˜‘ùåóתØ"­56KXö>×;†"w�éN̸/x×ÒQJ`[¾/œ§8QµO˜w°»¹¹ÏÞ½= »võÇ»ÛnøÊÖ2-¿ÒÙyÞf÷y*n²5þõŽ¡È)í>c�˜Zp_ÓÒQÛ†¯ý!œ§£££�HCä-Ø!éh>}}}­s³³-Í--½LD²|>õó{¢S«Ý …f‚�Ç�w465 𹯷·¿i;p “uì—wª'øýþ(Z¿ÁÉO­<Æ‘{œI•ˆWÑö©©×~öÙÇìc D á–ºûÛ³gOÇC‹tÇhý¢{®ì¯¬¼|¦òóa\m"ÄàÆPF5°-ÕÒy'CM9Þ¾�äÀ2Hª¼¼|úœŽŽY6Ðß¿×^™¸¤Ö“ÊœŒ©Ð}Â�¼XÆgy—(V¶…Ñ!$~Ëñìt &^²½-‘S!†mXÇ9qn²žœEÎÏìÏ%[ö§wz{Çï™Ê“qÔÜ/ÕÀÒÒ4Q瑊˜|òåÜ ƒÏø7Q$8ÛÀ�çy‰¹gfz:èwµ«“&+[Ì7,mFzÆ¥#¦î]www[SSSÿjs²3>7NOMå(�FgÖ™ÐB5V%Úý9|ø"{ßr\4< éVl³Ÿ�*�¡ä~iwx%°´� ˆ ©(× , % –¯Ë¹ós'ø7‡È=ìzõÕv41LØ íè1ù¼‘„fHå¬ööcø¯:�?¿Õzf¤—ì••‘V—ÙN§ŽüBï®f<“î¾FãÁ”´Ó+»ÍˆÿT>s¼þâ‹§¯ù“k\)<çJA^<ô¥Î\9D&& WH©À´'/³¼ªj M‰ÏñÁ3" YaAŒ¥¥¥îOæÊìu©Ž�IšqÅv~½Ö68ò dç¤É­¹‡tý_Ü_)aGI;½¢ª�eùÌqó-·ôóÒá¸6\ršt5!´Ÿ"ð)4Á$¹a¦CCB[r—‡âAg´ÉÀ4%MÈ3¡; ¼ÒÙÙ±«±q ybkljêaA!¼dym]ÝP÷‰íh‡âO˜›vïîa9ß%ˆCïbŽh`jd‰€L8>cBs¿¶EKKKžìlˆ�">ŸÓёסÍÏ?÷\àÛ÷íú;>gO6öíN¼sµµµ;®þúÐ!SFä‚ /̘3ÐçíÛ¿¿3Ÿî6®ƒâÌq�v¾¿­í˜hï[î (½²Û Ïv °+s �:•ó>‹W_yÅïjŒ¾U¤<ß±£G+²±ÿ›nüøþ\ ¯LÁD+×ãX'HS²†5+R¸iç€iî—XV!ÝPm_D®â£vCÛ Ï?ØÎý?þÝï†.¾ä’I/Ýs‘¦ñ•¹Ä|Fx»BaÏéøÀ4÷kçQâå?‡ïkðäɨsäJˆë£Ö?þÝÇMäÒ¾xO×Ãõ0Ñp�Ïý�Û÷>ýÔÓ“˜ ùÍ׿öõÆææÝѪ`pÅCvûm·µüâ_aløoxã&ÅvvÛ�KŽw½š0;É÷O|ü¦Öäý³þŸ~øÃÐÇn¼±_ÈìKòHã{¯¾zSÑ7¾öµúËßy¹ÙæŸö³`ÓîÝs=ø`ÂWø¿ÿå_‚œÛÔÔ”ïƒþpâxÉß7"íNNNV‘¨›~¾¤¬S¡c½ë@d#ÉÜDÒ1®µûóÆ0;3c4°tú€iî—ض€‡ZBê)E” öàCu¡5}äCn¿÷þû:“I¬ººzabb"«÷æ™?B ä³{,_sKs¢Âlkk›KGÂ%ÙËV:%‹c¼Ð±Þupׯø^íŽóµ*‹(–M³{÷Nä~a%éêêZQ­…g ÊV÷‰Û`ÿþýQrQÓ r¾õ‹^ÿúéTÁ`XrÒ=Ï‚&03Èví„À¤>âN?àÜt4¦#G^ þõ¯+„ÀÜ ß˜6.½ì²É^ÿþöë?ð�AÚ�lû;¿û»ch\² ŸßùîwMŠÄc ëœÉÇ•ý:aÉ€{û;Þ1ö­o|³é¶ÛoïI7"_c__›´ªÀÄ"T<@SXKK8ÑÕe4B› y‚Ýèu ‘Í–ºŽDÕÑL‘—{Ã$i«F–Ôž4Øû€íDîV™Gþæ++Ú±S!�üÑOÝòçm½þ¢nŠ­î«ÍOòÓ\©Ö?ýÔÓ¡lúË ‚À$¤lÙÉÊß�æC>ƒU±›>ù 3ß{õ Dqäðáƒò}×ÿ×þ«®¸²ƒ Ž7¾éM‰ âëíí-#˜‚ïq\þÎw3Æ�Ÿ¸©‡@ —Ô¢Í-{¢gµ·OŸÞîôþûúúürÝu Ééˆmíóº÷þû»6KfTxGP0æ-÷á¦ýÉVü¹ %çÖ»özIÎfŒs 5Êe)‰� ¡ßêµ6c\üëÛ‰/?ò•c©Ü[ÒÀ¾ÿ½#¡4Öoëï¯{ߟ®J¢WýÑUÃW¾ëÝç!4§£é­Ï&2'ÿ—H¶ç�þ …ü`?pß}�›ñcmä\%Ú©»íF6»MàMÿ:0Î{º»Ûш²SËìõµ $lçU©Ï42M^$ y5·´tiTÖÎŽó¶Žu½újšå¯hÙ’�ÿ…NCCCÍÙ&²­€¹d',,÷ÿå}æ¸þ©¿è­æÙŸ?ú‹Oª‹”›§ðTý£F \Ó­·}¶ëу»f3Xw¬È E£º÷ž/¶Þ}×]1ˆò„¼îþâ=�¤Þ|æÓ·¶ýö›ß9ô«_™ ,9Ž%Z¢+D%üŒD@cõÉÆõð,�!)¹7.˜ªMÅÈÈHãN�ͽT3Mú^ñ™Z‚J^;Æ—MbA¾ lŒ«l’WºØ©@#4$I« …B ²M ÂjÝ·/ �áf ðcppÐÅ{ÞÆÍPSS»îšk×$&HüêJ`%^ y9‹¥¹“«]´°èÅ–Âù½@`„‹éP:%+r—uŸ…&é �¯ÅfËrçÞé3!jY>¯žÑ᳂PÎík§×3!®|jøÅÞö;o{íÌ�¶'ÅÐô8�;?wGËoüæoDðŸaÒƒ_¢ƒ'O–½á�ïÈŠeÆÓ>0Èk¾!wÝ–Dæßļg®/“¢|&NZ”¤‹L%2º¿•`’­€(À�þþ½™Üg&ºÇÇÆêµZzþÓž|ÞH=¾/ªìHÈüVŽIzÍ-7ßì|ï¿Wï?€F45¹_¬§B¨¶vŒpù<ùd=E>rßõà3¦ä˜f\)ðb¢8Ë|9I`˜Û¼Pd–^W„mçò9nWPɑÇ/ZÍd�+ȧè[;jxnO gΫxnÑ)š5Ÿó!Z¢‘t¢�!ÀL†âàúëÛ&#ßj¹d“Ógÿïÿ9¤˜"§°²Ê†Ï)*Ê�á´´„¦»è¤ âÉŠ¶'¯˜¿ØÁt�+ðÍÆVh‰šcWXp5§Öž{>(ä†Šæ” P œ$k›(ÏÐà>w{WÖ”½ÅŠ­BB�*oÈËŸCg·°#GÅl½X’›¦(<@0˜øˆJ¤˜w¦4/¾¯µÌ˜™NÙQS(y LñEs‹Ëšvi‘³X^²"Ð3_ñì‚S4¿ä,¹Ë*KZ±D.Ôœ¶dY,Pâ~>ÓGÍ1ìßç ÷åÙÔ–âBüD2À ‡]ë7g¬_\ÞŽ÷TËø½yp’^+~¯P(Ò×*'æ�%_‘ –:E KÆ'%Ï«oraÙGåV¬ªÄ)ž‰9eƒ³æ™6Ïöü’y­xÞãËdŸ¼Šçb§¿TÎÏYa¦Ð$7?Á&¤} Iìô…pJFOagý|­ß•ð|NñüòƒBNÊbÙ²4g/‰OBå9†‘ÞÜý/å�OD¡ðÆÃ\d´®Å²2§¬oÚ˜Jcîs†6«.u\âQ±!0žû…Úu´(ÒnÊŠÎ8†B5°œ‘‰ÑÝ΢;¸%¬Ò)™3ÄÃ:^1—¸J‡çÒÛZÀÄÀ~+KÇàµTª@¾ƒ|7;e@‘C•¸æµè÷mË<‹•%+H)ð©/P50ïaÉ%°â¨˜æãDTj‘R©ø¬ÃήH¡Ú*§¼Üo^ÓS³Îðð„SZZâìn®sNŒ8³³Ë¾Ö˲Øâ¢ÓØ2¿l7:6éÌG·/HƒÐs*�Óq³mJü%¥NS°Î©ð/CÎDçœé¨ûß§Æ¿éhÚ·b~Ó3zºÐy[}³ÙOïhØl þrgomãŠe%yO-8¥ÆL3¦B4¥’h,AZÉš•šòUóΟv¾ozÁØËüË’ÜÒrÕ{ðÇ+y$ÛÌ›G}}µ³{w�!)ˆ«ØWìj6î}pß++ËÍûiÂ8½ÌïW(TåD&¦ÍvÁê€ÓÞÞ²â÷Û�šPÈ4E=þòËçÓj£Û•¹ÄÓ¬uƦ'�ðĨYÖZÛ䜷û€ã+^63ËNtaÞ2/›ÜøM}e�Sæ+5ï§—›íx/D`)Á?µd=Ÿø¬Äš²Ò<²”X§PË{øâ¾°¥¢$sƒ"k€xæçœ±ÑICFhW›Ä'ÛA^hiÛKÀËÉÐä¾õöô´S%ƒdÛ�n?3?ëŒÍDŒfÕ9ÔëjPe+ ‹ÌN›—­Q…*ªŒ ©ñY!¶£eÿÔBõrÀ¦DLþ�vµ–#¬ŠiŸˆÂây+¸Š@,÷;~nEƒBüÓ¦:‡;pqî–L-‡/Ø„Ó2°‹OKr<ø·–„ê—,é.þy©D¥»õ066éìÙÓà´Øíœ �9SS›3{ aaZ„Ì6ºýøøxýÔÔT•]ùÄ.Ñd—›J.ÕÜÒÒ+�кè.- ËT#?ÑÕ¤ªJ¨¶vSaÊË$5ç„UN8²L䘃åËius.™Ah†ÀA'27m^Í5 ÆtXˆ&ÃU51qª‚5³ÉhÔ<»�•o:f´5TcU¥ÆWæÏRÃi¢ J`J`y¥{™Áo¿&TÖ%°H‘ãšsæë—ýpˆ˜wz‰+ÝÍÇ3Jâ�jžØ�¹šæ®ú†jCbhSÝÝÏqĆÉ"Ô¸aaÅÕ˜VV Y½Áö:¾'ö�–¥*Åï·RB*¶´Ò�†9ÓãÎðÂxBë0¤ªÜß:�eHІ<Ç&G+.`QÌ3i´2—Ä¢I�T<«ÑÆrAŒv¶P[–2ÒpÅ1J`9)½•-k]FZc`»ƒRB:3ƒØÕÊbõ¥ �l~W¹S2uJOÍ&ücvЇbm@<¼Œ?ÌÕ¤ ¥�c`:Dë‚ÀÚÏn1Z¤¸ªkj†k“4¤ýmm mÌÈ@Û²×Ù}Ûjëê†hKb“ÚUø)Ï´Ùæˆ�Òò¾.>÷�­$íŠe.m Ö9õU5Æ”ˆÙQ´¶B…„È'Ȧjå4¶¬Q•¬-¼.¿Fˆ|ò1J`91ðí�ÉÀ·?’šh_©Àƒ±ÖúTÇP¤ÐÆÆ& �¡‘E⑇mˆY�Ïh[|çóJ�j™ð6¼à/-�&×ÿ[­ d¶Ú:WÓ yÙĵ•ÿOç�OlM­3PeL‰½cƒ B# D45…B L¡ØìÛ·ÜŠÍ)ÐáD…Ol¡òþåáHÔa__’6âjklWmm»�˜˜˜0>°¦Ý»{¶RÝÍ 3a�KBpôŒ†fAPUpZœ†Äw´1 ÍL~‡o c9A!ö~�ñ•ÍNë`S(�)™ÄÀÉcþ#,^Ì�‚°K`ÓNy…ßßÅ´áIä!ëúz‡6’.ð…ÍG£þö³Ï>RVV¶©v¼Ó&§+ì”Ä5F´)–ÅOûÀ’L‡Ë¦Ï˜ ‡,3#Úûâ}.v¯P(�)Y„´–¿ ¢’Dæ•䱸© �lÓâVû·ATëù¬úW!¢TËí}õ+�) ZçH¡P(ª�) EÆ'©È|îœÌ‚VåQS(Š5@ ƒ$ŽÛ•5rœ›Þ%%°ì²ùE§th.g·V+ …b}àwlÙ³§kxh¨1Ï�*-z—”À²‚ʪªÈÐÐPórÃÉÜ”*++'uè)k# �ñÒ+¡((#ÁôœŽŽC£## ¹H®[M€Íe,--:EE¹$,쌯ÂÔÏÔyE¡PKäëлIoñvaÞ%±ÜóU”úýÛbCM‰6NÌ[œhÑ9#¿P0ÂâÜÜœŸö¼ïÄñí è^Ciii4Ï‹:ˆ[©š±P¡#ûœ“Wx–�>|Q¦ºe·ƒB5°\-2zº»Û]�lšÖó³�Í--=›­¨`ïÏ.òºQ¬VÝ 8÷5¯9TèD¹]d¹áÉ‹ão||½oß¾.&£ã/¿|~EEÅ4ƒÜ}8î¤6ÀäÄ$ÅdÇï˜héû$.>5:þºÃ1$¤½Õö©CmL.rý˜\ƒƒ ¿f.ÌB���a&q‘z™Ô11é,,,ø\éù\™�V; (mb°Áöä1ùC2Œ¹g6¡r\9çcç³zƒ±¾8N‚"0ñ_¥í ûf²d9‚�}Æ çÁx[ë¼¹>\xá¿ÉñÝsëØJ�aOh_˜]á4.D’͈<¿Ò‡ßMºÂ�{�Ìú={ö¡ƒq†Ú×�AöG‚ºúú°>¹¹ Ïq¬¦úOF"f¢©«¦¦f˜‡"1ˆãšaï¢Q¥¾5™°ÖÛ§× ÁùV¶G Ái/[tµ�ä{62<ÜpM™hjëê‡N�jÚÊ1‘¨¹g¢¹@Ü·Tã„ ŒnÎÓ%Î2Û<…F†°b�1ÌY®ÖŸ2  >™ŽCPÉë O¡Í˜©sü�hŠýŠù­áÁ%¨÷ÐÖ˜øl_w{.É×0®%›€/ƆZQTÛ É"AéÌÒà))™c‚�®AðÉ­óM°ºz,Y{pµ˜…SápS .UÇÍE+g\­vFÖ­§�£A‹ iÍÎÌæIBÄO‚¹HyÔ�kkkÃò_ã’}\¨)«®©Rä¿p޶i0®5UÉŵõ£©HÇ>‡Tç-¿“sc¿œëFLˆÀáߦ”‚í2Ú¦?|Z¶Ñ“\O»r†h\Ü“T×á³·§§ ó¤šUÛÐ Š��¼Ž�É$*“‹;1¸c¶fCD·š¤œÎ>óLÚfRÝ™$O@l#ÚjÒÄ1Æuƒ¤ÒÖýþ(Àk£“7#¾·þ¾¾6LSâã‚ôG®Ö9 "ýËÄÇa’ƒ\Ä—&ûs RÜ?vt#澵ΛssÉm/š*>ž�hœ¢-{ÅÔh›í±h�C®7Ú2×Ó€\!£î]ý«Ìÿ+Àht£j`;XüSøYOžl)š@ìàø>Ä1ŽÍ|#xCCþ ±±Û붺Ï|dã^ÛVÌ7É~„µ€d+1‰­e°�dŸƒh'2 ÅÍwëœß�´“¥ëòŠŠéä Ñð8cÿš mv"!šíjB!ã“¢ivéj¡�Z\ƒŒaF”seä3cÆÝwl R7çA¥:oç†æ‡¦·Ûç[7éVj &Oøù ÷¿LŠ?K€•E|‹“³�ò¸Ä—ʽ–àY¾¿­í˜-¤Ú¦f…ØŽ€IÁŽ ³�ï!Õrq”ÉÎÀö f±ìö:†�ìÓK‚«)E�T‘jW»Î+&ÔáázÈg­\:Ì@¶_ ßBH«{m âp ¢ mf+çÌD‡0Ãþ¹wh*3Ú!Ѩ�çŠFY31NOM¡iMËÿ�pí¶³÷žfzº»ÛR]#‚80YmÔTÅùp ÑöSi±¶¹Q̇®¦1è¥g:y™l$�ÏÍì#¡Q»×MÒo”"”Àú‰®® Z“ùz ¥b~³CÂÅ—Ú’hY ÍÑ—^ºÐ�x"L,ëi{k•�‚üˆ,…ñ“JTš}L£QïÝ{B´)&7Î�Ïøç„lÐÒj’ÈÂE#e_ò;ˆí É_–É5°£EÓ³¯�„ÑÛׇߣí£)¤">–c�k�áBŠT´¯{2ìk¸ð}2ÆTûÊ}---ýB/ƒ"àk ¿†ˆ.I)ÈÆqÐ8ЄdbIΧ`žÌÖ9ä$d³$¾¯³Ï9çˆ"(”ÀŠU åŠ 1êf£´3Ñf¶V¢W~%ÐüºOœh‡¼²-P(J` ÏHý�‹ø\H§æ¤bóןôƒ‘‘‘FÂ땼J` Å&�¯Ê®êM$‘{™‹Wœ ò�¦¦¦‚¤‹,Æ+ƒàç‘’\^Õ2 ¥'•@‚lt$(�yD‘?#}›p´kïŸìM0ILŒ�×ëÕØ>àï"¯É˦U…¨ÌBä'~=)áµZô¯B Ì3äµoÿþDô¡ËäÛ(‰e_R&™w~Õ:›QŒ… ‰`&%•ö=vP i îsÜKp�¤GØÏ¾ý=º ó€ô\í»ìƒk«�0¹‡‚£'™‰Í”Tï<~ü|Lâ‰äšê;’ž]¹œÈ;²õeÒ°¿‹²è>p…\1œë½Vž’B±PU$UÎÏ6¡ïZªrHž}:Vð;díï�UíéL�L.Ÿ–¥Ë-DGfr”’Í*L®øg�®È屫.Øßñéàc�Trox'—É.)%ßãʹT` ˆ�\œ�ê­Px <“þÝ¿ýqRZSˆu…PHKºJP—r½ç’ñKϹÏíoH ÏP: 5ò S­ Kîc„`üehl`áÑa€gÁÔà’6-ìOƒ8”Àv|ò£]É ³ëæI¸,Ÿ©znG-J�§d3$Ë™8‘Îh—!D%ë4ü6óøõ¡C—$W÷Oµ,Ò²ÇÚ»4âÌä¾éÃNjV?sá¡à‚8¤= ÒWr«äÖ(Éæ‹ä}Ù-’«¤jï È¼ÒÙy^6Úßdš šª¡Vàƒ_‡€÷€_„èQ>Kî =ËÄŸ!ÎyHeb9ÙÚ˜|%J�âĘŒ¤I¢ì“jv�Ç�Ë]VF.Ñüü|û.ôŠù …˜¢ I*Õr|�Ñ9/B ´�GƼ+¹|ø½–6$�,ùŒ¹êÈáÃ-[=–B¡PS8Vó/}FÇd©~ÑA>hBÔd¤„ ¬Éi[ÁvK¡P(�)¼NlÕÕc„=';öYF]J|WD­­·L‚ÈC2»|‡œ$p+Ç’–' …B L¡Xòw(7D ßÉí!ˆ=‚(¨ÚÀ²µöAµ•W:;;Ê€´Èìéîn#a– ŽÖ¸ïl³ÇBktµ±¿÷r¿.…b»  - …B‘—(ÖK P( %0…B¡P(”À …B¡PS( …˜B¡P(J` …B¡P(�) …B L¡P( %0…B¡P(”À …B¡PS( …˜B¡P(J` …B¡P(�) …B L¡P( %0…B¡P(”À …B¡¦P( …˜B¡P(J` …B¡P(�) …"Ÿñÿ²o@{òôçIEND®B`‚ipython-ipyparallel-14e3c43/docs/source/reference/figs/ipy_kernel_and_terminal.png000066400000000000000000000671511520071063500305630ustar00rootroot00000000000000‰PNG  IHDR‰cÈ÷YsBIT|dˆ pHYs : :ðd’JtEXtSoftwarewww.inkscape.org›î< IDATxœì�wxTE×ÀgK ´Ð{‘. ŠŠvÅ^° ¾¢b�Ï®¼öÞ_{ÃÞ°Tl€ )"Ò{ï%´@Ê–óý1wÉf³é›ìæ÷<ûd÷Þ¹3³›Ý{fNUÅb±X,–h¸â=‹Åb±$.VHX,‹¥@¬�°X,K�X!a±X,–±BÂb±X,b…„Åb±X Ä ‹Åb±ˆ‹Åb)+$,‹ÅR VHX,‹¥@¬�°X,K�X!a±X,–±BÂb±X,b…„Åb±X Ä ‹Åb±ˆ‹Åb)+$,‹ÅR VHX,‹¥@¬�°X,K�X!a±X,–±BÂb±X,b…„Åb±X Äï X,KeCDÜ@'`½ªn‹Ãø��TçårUÝ\nc©jyõm±XpD¤:pp1›oRÕå9ŸX!"}€,àHU�UÁãOs^^£ªo•×Xv'a±XÊ“îÀøb¶}¸®ü¦Sz9S€@… ‰ŠÄÚ$,‹¥ä<¬ÂÀQñ�Jùbw‹¥àk`>0h\-"?©ê·Q.¿“¢ïi]�Çz`ÐÅ9^øÔy¾#PB¿»ªÀ�ÿ+áÛù/æw9h ÔuŽwáI¯·s�)@#l:×= \UÂñc‚ €ãs}fuÒó… bV'ß`nêªêöRöŸ éôÝxðŠÈF§ïŸ€/U5«ÔoÂb‰ ObÀÓªz€ˆŒþrŽßDÌ‚é6Ì�6XÀÿG«j¦ˆ<íôâSUè¨F§:Ç»DvRL®WÕ×Wà©FPíCU7ˆH[G=€ˆü…Q��ÙIÅ+$∈ÔÇè/¯šav#17zËÒ¢ªÀ/Ω E®ÐxxNDÞ^WÕ•±×b) ""亖Ì‘�êg�‰Yñw.¤›kTµ(o£wU5Óyþ+y…Ä7ªê‘_ÉMŠñ"Ù ¼ëô·[Dþ$WHäëOU×8 Æf˜ÝCJØéf¥?&X!DäHÌÖu�|¼¢ªó+b|UÝ‹ùqüȩ̂0 ‘0Ûß_ÔF[Z*ŽÆ!â‹ÚÕ‘zªº%ʹߋ1ÎÒ°ç«"ÎÍ{¾<ì¹»ýF²FU³‹ÓŸˆôÆØ%ú‘׳¯I)Æ� 6N¢‘‹DdÆÃá0`ÐDU‡V”€ˆ†ª®RÕ;�¦AÑ ,‘!ÎêÆb)ojF¼Î.äí;™£ª»‹1Nx›ÈEЪBΕ”ȹDíODzbl'bÄFà{$þ ‰ @DºˆÈŒal=p2ÐAU_RÕ]ñ�].ªš¥ªï©jŒ:j:ðð�ˆßÙY–“׎Ð\US xl,Ã8Ù*bMqǹ–\ÕÒ_@kU=“‰Ã°B¢‘"ò<ÆPV 8FUÏPÕŸ]�£ªSTõŒ—Ô`¢ˆŒ‘†qžše?Åqœ_ÉŸ­�c»ØŸ8(ìùïaö’ÒËcŠ儈\,ÂÝtWÕ‰ñ�UÉQÕ9ªÚ¸ ´HDnkϲ”Ï…=ADn‘"r˜ˆ\*"Ÿ'WÐrdmØó3Däp9�Ü Á¸b…DŒ‘Î"2ø£×o凞qžZ™PÕ��öÀÛÀÓÀL«‚²”ÃÉ5>WžÁ¨=§a<. ºa·2n{èŒQ9ý€É0»,êˆ1DDþƒù2Wú¨ê UÝçiÅ UÝ­ª·aR%lÆ‹Èqž–e?BUƒÀI˜”k"N€?0ñû ª:xм6Œ©CöÛq™T¶žD po^ÀD…¾ܬª9ñ�Uùâè…ïÄ6 *¦g‰ÅRlD¤FgŸ¬ Ó×ïw8ïµ°EU×Ç{>!¬�(#"Òø ³º¢ªÄyJŠˆœ|Œ‰t=WUÄyJ‹%†XuS‘c0žK�€Þš€PÕ1˜”YÀ49?ÎS²X,1Ä ‰R""7¿aò+õPÕJ“ ?Ö8%'�Â$cûRDþ'"ö»e±ìØr)‘‡0®zOýU5=ÎSŠ;ªš©ª—cÒ�Ü ¼c…ÅRù±¾î%DDîÆØÞˆ÷| U."k0v—ˆ\áx¬X,–Jˆ5\—y“³þZU}«¨ö2N0ÐHàKŒçS¥Ž±XT¬�(&"ò&!ßÕªúN¼çSQ8Éýj†=jò<S"Òë<bR ¤cª„y x¸?&#®¯�GäùlL éÀΰǎ(Ï3=ŠÅ’ˆX!Q œÂ$·W©êûqžN™‘ŒGV#Lzæhkcnþ©…tå#ïÍx7ùoèu�c09y~ÆÜØ#oþŒê3\À„? :ž‚©ºVÕ)ØÎ ›ëV`&Ùbäßõ˜ÚÈVEf±`…D‘ˆÈs˜¢éW¨êˆxϧ(œ ·&@çqæÆ.jG\æÇ¤'¿Y¦SøÊ|§S—¢8s:“zà` ªúKÿ G0B£¨]O}r?‹Æ˜:Éá€Mäk1u–KUuGy¼‹%ѰB¢D$Q½ãÿUí+"]€;€KB׈H`¹ö¡l'-Ì>D¤ ÆÓ KUW: ³ËÚµ?¦.v´…J¶ÓW ŒpÛ ÌpªçEÅù�wZ8ïua´ÝŠ£¶¬Tu‰s¬fñ”ü“PŽªjÎSÏ98¬Œý¤aôÔOaVLÙ˜•Ið ðpP5Þï9ŽŸu+ÌÊû[Šý�1�_¼ ÌĬt؆1úÿ8HŠ÷\KñÞÚ;ï%ô¨qþþ°sÂŽ7 ûÔù] {½H‰èkAØù·17ùiã‡Ë®û:ìøM˜Âaám—‡GyonL†ìˆö›�³£´Ò9ÄØ¿‰¸npV¼ÿgûæï $ÊSQ�ËJq­£:z ³†}I¾Æ¨zžx¿ÏDzÇbT �Ä{.‰øÀ¸óžâ|¯&8 uþŽ®ZÇ{žÅ|/¥5A:wF •vì”°ö-"Æ9ø¢Q˜�X]@û%Dé(Â$òqUDû'Ãέ*àš@ƒxÿßTÕª›D¤Fÿÿ¬ÓíÍ1‚�œ†1¸¥aVÆc�W0‹b8ÇdgŒ4Ì�$-âu °³]M�ò|§:ßÐDAUljÈ-ÀË"2UUŒ÷œ UÝŒq!WÝž•å‰#ìË"²øÉyLÔý«àÕ¥äué^¬ªÛEdf×p*ÎgD^#ùF`ÆÍûGŒÃGˆ1êÞ‚Š5F`X�ãm0ªãI"rpYØußbê« wŽ=)"_«êö(ã4ÇÜ3žÃÔ�¿ Zè¼WÀü*ŽxK©x?0Ѽÿb ŽîBÚ ÆEî^`2f ÄÔß}8p•a‚q§ò†Ë›2Ù�Te‘Ë›¼Y\îÈm¬ŠËô¦ÖήְuVív‡gÕí|Lv�æg¥Ôn˜åNªâ‹l�HÀåñît'¥¬r'¥Ì·ç{àŒÚ«zœÿ_aÜxkÇûûP™˜høs0*•õÎÿzfE<hï9†Íµ$;‰µÎ{ZqÍø°ö§†_v<\uóBØñN}y£Ì1|'±œÜ8²dòª’. »æµ°ã¿Dô·9ìÜ5aÇÃw{ S;cfBçŽ÷ÿMÕî$îÚ‡j„‘É ZëƒYEœ‰ ®Ú‰I/ñ&0ZKé’'"5�^À.oò1.�·WÐïKõ¤¤úÓÚ÷¢F‹Îž¤uHJM#©F¼ÕÓH®nþ&U¯ƒ·j Á¸¨ý9äìN'g÷¶Ð_WÎîô9»¶Õðe¤7Ïܶ¾ë¶“Nܳay2‚z’«.ädM�Š1*/Rç[[ Áð_"ïªÌRªš�¹)~ã|W»av¶§o`²ðþ‹Ÿhåñ$k‚Qÿ†³¸6ìõϘB# ­ˆä´9>¬Í§e˜Ãï¡ï¿ªf‹ÈlÌ.Œ ,D»°çÿFô1S¯;²]8Ó5¯ û,Œ7äßãÊ-$D¤'&«ë�ªº0ìø!Áp1fÛ¹ó…LÖR¤•p¼Žqåò&÷Z‰¸HmÚ>§nçc’ÓÚ÷"­ýToÚÁƒD‹;*.O)µ’R»a�S’}{v�¾xš¤/œÚ~ÛüI­ÓN¹ÂŸ¹Ûëòx3ÜÞä¿‚þœ‰¡ñ‡âÙQTu‹ˆ ¾‘‘ªúmyŒ³?ãÜÐf:�G�¸�S1.£w�ˆÈTààsUÝ·ÉŸí/¡±Àÿ4¬¾µªDäCŒ1Œjf6¹7ÖåªZ–€¸m¯ òÀkö|aĹyä ‰VD'rœŒ¢§V±°BÂÑñ€ñMÞqI¼ãn× ó‰ãµi+œÂæ¹¼)C€nI©µsêtêíJëØÛ“Öáj·í‰'%5¹¨~ÊoµZ48ô$z˜¤yd¬[Lú¢©©é §¿uî„Þ»×.Lqï—kªï¨ê?…÷ZrTu¤ˆ|¼."U5òÇc)jâ6>>‘TŒÁw ÆŽñ¼ˆü†Ñ�£‰ç‚<8M‹vŸ\!q&ëpˆ²ì"ÀÆ‹ÃFr@ÓˆsMžo)ã8qã€;B+ÌVüOŒkጫá�ÀX-…ÐÙö÷—{°¸ÜÜIU¤ùñ—{Zžt%µê^ z(‘HmÒŽÔ&íh~ÜR|{w±ö�ÏR—ÿôÚà�Ëg u'¥Ìú²_Çä·‰eLÇõ�ìpàÂö{@㨥>>v.`Dïc„òÎù"U®q"§8ß+U] "Ó0âÀªa§#…D¤ê´ìÛuÃB̽ŒÍ2œð×Kb4^…s@–—‘K0ÞÌV|+f•Õ@Uªê÷%"ÒLDîuy’VƒŒ«Ó©÷=o‘tÚ'[¼Ý†¼"µê^t' Š·j Z�r Ç¿43é„WfÓúÔë:z«ÖxV\®�.�÷ 9)¥J�ÝõÀ"2 ì3·D¢ªÛTõuUí‹ñ¬¹ã±ó-°BDîtI¬©ZÄëÒò¾ó·>& `¶ªÎ‹h·1âu?Øg, cÞ÷‘KD$YDnÆ|®`Ôïe'n0BBDÜ"r®“æ#ŒûÛÿ0~ægªê§ªº§„}ºDd€Û“ô+"«’kÕ¿¯ÝùÿmzòÛK9æÉ ÞfýâNJ)º£JD�–]èzÍ rÚÇ›½‡ ûÄ[÷à>g#2ÆåIZ'"9Ñ®¥FU¿Ã¨I†‹HýØÌÚ U]«ªÏ¨jwL€?1;ìµ"òŽã^fDä%`bÄáù"òX ºÿ ãy$˜Ú%EÕ¤Æýt}Ø¡Ñ"² ã�TjTõsŒ·#·Õ�0v†çÉÝ­|¤ª3Ë2N<Ùï…„ˆÔ‘;0.m#1Ò=袪÷j)óäˆÈQ.OÒLq¹?kxøé}{?ð£ôÿpCR§K¡ZÃÖ1|‰‰Ë›LÓ>Òçñß½§¼³BÚ_pWÔÚ�î·g©ˆÜã¤((-7bŠ=£éZŠ@U§¨ê@L0ÚSCðLùCD8)kJË @µˆc5�ÿ+CŸÀ¾›ÿ¨ðCl�¸/ì¹ í •ûE"ü½ŽÄDoWZöÛzŽ!únŒ!:”“éSÌÊã)U}¤”ý6—û .j|ÄY�®W¿à©Ú e¬¦]©Ñ`€?½ÎÜwû‚9Y›ƒþœTõ›Òô%"—aT ÝU5ÒµÐRÎ8Y‰`nðG`b^^Ñf‘ˆnÈRÕ'�6}1ø+µ EäbŒ×ïÃÞ…´í‹±Ç4Ĥ"¯ªŸ:ç.ÄdbÆ9>>ìºËÉ5Pÿ ªÓ#úuc>¯Ã0j¼…Î\FG™Ã ˜€H€9ª:2ìÜéäºÚNQÕ±‘×W4û��‘ƘÃU¥áÀªºQDÞÆ¸¶-Å=¸UÜžû«5líê6txRýCŽ/òº‘œÝÛ˜7âÞàÊ1oЏ=ý9ÿEG\(ŽÀt`»ªžP>3µÇUüFŒÝn ð8æ7•‘Ý"ò:¹17¨ê+ñœÏþÆ~#$¿ð;1[ØLààÅ��ÁÉ(9 ¬ª% u‘3]ž¤—]ž¤Æ�þó¨ç ÓþqÈŽaÅcçÊÙÌ>Ô—¾`Š[Ñá¨Þ¯ÑSDEDŽÅüNW›²#î8±>a<ÏÖ`ì”&n(sqc2œŽñPLº¶ÔDÊ ºPé…„ã�p&‰À ˜L;"Ú�`ÔÅŠy‘.OÒ+Á€ï¸–'^©_þ„+¹f½XNÿ€`íÄ/˜ýÖÍ99;·f¾»€7‹ëj)"ßctÇ]Ä=ó€GDº�`²,Ád5þ¬#ô‘-˜À¹ð8£{TõñŠšÃ�B¥N²³[0ùæS0j¥'� ¢È¶§`²fž¤ª¿³ÿÁ"®×kµí¦ý9g'`ND:s€ëUõõrŸ¨¥ØˆÈáÀ£˜dys€;¢éàËiìä­9þ&Ûj弡%0•RHˆÈQÀ[˜¤ao�ªêúÚº19UÖ¨ê©Åè[y¸£ó '¥Ý¹ÃˆEš ‹!cÃR&ÝwrNæÖµ‚þœÕ)ºR"òp.Ð&£ƒxDäŒ�¢7ð9pSisš•`Ì{1â�˜Äz‘.¶–Q©„„“æâ LB¸�}¡Ð"r f—ÑMUçÑ6EÜž�E\g6ìw“ÞçÅjê–0|Û™üð¾ôEejÀzQ?p'^b)ƳæîŠ™¥¥¤ˆÈäÖ�¾]Uß�ç|,±¡Ò 9S§! £}¾(ƒ™ˆT–ß«êÕE´­çò$ýäII=䨇~ò¦µï«©[¢ôç0ã…+k'|ªªÁAªúqaíEäLšö¶¥�m±”?"Ò“Í÷`<&Ev¥MIa©Át"ÒHDFbR"/ÄÁ=]L�ŠÁ½å}…5r Ô3ªÖoqȱ/N·¢py’8ìö�Ü.¾ß�IBw—<‡qi¾­ügg)-ªºIU/ÄdŸ=˜-"w;q–JHBï$È/0Âì¶Øx0*бªzm!íú‰Ûû]�ŽGU9ò¾o=ÞjµÊ:mK Y=î#f¼pEÕO4¸ª ÿ{¹  Ù̺9&>"Rc«ŠI]q~yÛ*,±'awN‚¬Ÿ19Ù;•D@8 À¶ž-¨�ˆ\ âúµY¿�ÕŽ~ô+ âDóc/¥Ïc¿ºÜÉU/ry¼¿8�‹Ñy7 ©¨¹YJ�ªîVÕ0‘Ôm�ébÊ}Z* ·“‘*˜ªZ—al·”²ÈÏ?ÀjU=»€ó}Äåþ½ÝyÃ<_þD™æl‰ »×.bÂíGú|™»Gý¾‹£µ‘0Á\-U5»bgh)-"Ò£2î\«ªÄyJ–b’P; iŽI”u!Æçù†R ˆã1¹ÜŸ)à|[—ÛûCÓc.rUv±òçwøöœ~VªTT Eõ¦í9ê¡Ñ^ .×C4{¨\Z�S‹)"2ÐIÉ�ï¹T޳ALµ÷EäÅ2& ´T óO‘>˜Œ‰~ ¯ªN-CwÀ©ªúgä ©ãò$ýR»ÝáU{ÜünÌ„döŽÍŒ¾¢yØ8.’k7 j½æ4èq*mμwr¬Rèç¢ÁA_6¨ðÌåBZû^vûÇºð>Y¦ª#ÂÏ«ê*ù¸MDÞ­¤ÁS×}1+ëtØ—�ò7L¥¸r3Î;ék†�›ÈnðZEÄŸ¨){™ˆÌĤéï*"çÛ*„‰MBì$D¤ð°èYáäh:™v.OÒGUê6i|ä}£<.O, Å)A_6.·—=N¡~·H©Õ€íK¦3øeH'rv—¾ˆÛ´§.díÄ/b8ßÄ¥ÉÑ8ø?�‰¸\ïˆHdµ/0ÿÛŽ˜¼=qéQrV!6”’Гe´s úŠŠˆ´ar.� œ‚I þ¯ƒT!¨ês˜D›Ý€Ÿ+rlKɉ»�pnê£1î­'9]†ab#ò¥¨‘+5è?©×]_y“ª—ÏN¿JÝ&yï·yÿwô{v*§¼³œº��aïæUÌ}wX©úÜ»yk'~Aή|Gö[Ú¸‹z‡œ€Ë“ô©“‚eª:‡ù_Ç“ã0Ýbñeúã6Zh‹�ËgáÏŒÐ8©Cv­žÇêq±aÚ÷dn-<æ,èËfÇÒ¬ÿ1Û—üMÐÝœµ}#;—Ï"ô‘îXö«Á¦é£ÉÞQ¦Â^…Òãæw=.OÒAˆ<åô3@'P¼¸ V©j@UPÕÕ±ê3 ¡JsÏ«j¦“0ñMçX§r7*ª: #{_ÙXŠÄ$n6 §Ìå¯@f ½äÿ;0ɾÂÇ—'éÃêÍ:z;\xO †)Õ›u2·¬UVýú ?Œ®×¼@›3ó­úûéKØ2g<}û�/^ÉÞÍ«Xôå,úÒÚ�zðGöì¿ïq¹ùëÉ X÷ç—û޹fGö¡ˆ ,n–fKÅ—�„ãÕñ àNPÕÈ"å¥éÓ…ùѾ¯ª™§hÐôaÃ>öÆ£Dæ¶u J•ºMA„æ' `ÍøOòµÍÞ¹…­ó&’Ú¸-u:õ¦Ç-ïÓâ„+hsÖÍôyb}žGZû#ò\·tÔ‹ì\>‹ž·}HŸÇ~£õ馿ÅÜ÷î`×êùyÚnš>šÉ�œ‰'¥=nyŸ¾ÿû“ž·~€;© “8•ͳ~�ú>&?|&9{vpøŸÑû‘±´8á ¾lf JVú†¨×”•æÇý‡‡ž¤.oòKáǃõkÀÙRöböûpŠ}�‰ð“y€ó0yÃã¥s(às.«‰¹ñÖ ë§1ð&B¼>¦ ÚyÀß@j”¡ëg‘{ÓÑ $"ÏcTCµ€]ΞÁT‹+.!£Ö£ÎÏÁ»mÄä7‹ ªú¦‚äù·wK¯�Ä«@càpU]£>Ošyü¯EÄíò$=Þü¸Ë¨Ñüà U2–Žz€P%»Ôþ§o1 IDATFm¨Óéh¶Íÿ“Œ KImÔf_Û S¿Eƒšõ½—7™z]ú±mžÉ—Ú¸-õºô‹:F {}_›Gr­Ô;ä8ü{w±ú÷Ùø÷�Ôhn´ ªAæ¼÷_¡Ïã¿S­ÑAÔéÔ›:�ŽæçkÚ1ûí[9þåY¹†9æÉ xRL ߇žDæ–Õlþ÷76ÿûÍ�-¯Ô.W>íþõ†CzˆHç†â3ŒKì…äªMÊJGŒ®üŒ…¾œDMœ×#�‘N,ΡÀyª)%ïÚ/«ê�N^Œ èY¥˜×@UýËé«'F]-"¨jqô~`*6ž+"3€îÀjàÔx{©ê—Îâñu«ª£Š¼ÈR!TøNÂIÔwp«ª.Ža×—3¢”ɼD5زãÀ*ä½ú33X?õ[ÖLø”Å#Ÿf°Þ,õIÕë“Ñ¢€ÝĺI¦ÜmÓc.*Ѹ zœºO@„¨×õ8önZ±ïØîUóصj.u»öÛ' BTkØšúÝOb×Ê9ìZ9'ßMްO@ì£Ûñùƈ55Zv¡é1©Ë›ü”³Ò@UÓ�ï1ÿûXQÛù»8ܽÖÉIThÆá"’‚É–‰I#êÃÜ^Êy½N_Ó�˜ÝxûböÄÈÁˆ™˜\hó ¾¤âPÕ70ÿÏ×E¤vQí-C… g¥ð0&–i„ºsÈ¿‹ð¸m¨«JÝf±®P2·­cê£çð÷Ó™ûÞI_8•&Gà„Wç�\«þ¾vMû\€;¹*k'ä ßžl™ý;5[w3vŒPµ~‹|ÇRê4ÀŸµgß±Œ�Fõ\½IôûJõÆíý\¬1j7(Ð+:]ò�K¾N˜ÿs8G‰H›(—•†YÀZà"yÉÙA””@àoUÍ?¡ªK1ö„’2!ʱ¿�¿�ŠºØ\£06’Y›D7Œ ,¼]w'ЯO)æ ®ÅT›{1Nã["¨è�ÄK˜O¬Ýü`TgŸF?Cƒ�&.¸»ÂªU©Ó„#îý†Þþĉ¯/à¬o2éu礤åý{ªT§Iïóؽv;–Î`Ã_ßôûhÖ·ävXO•êÅj—µÍx'Õ¨õ¼7Õä¯ÊÜšÿ>æ­?wöÔÆmiÖw ¸¼É‘n¯£1Ù˜ì&ÔÔDï�qɾX%"o9ÁnÅ%$M×p¾4.aÑ‚lB6‘â|¿_Äx�ŽÀT“KÞr Ç!†al/Ñì&厣¶» t×8‹¡Â„„ˆœ�1NÝZõ.~Œ,]*nÏ ÝOFªaÊO•Tq6 zžJõ¦(,`/d�^;ñsÖOþDhÚçÂ�+ŬžVá^Máø2LrÕÐ!b”Ï+–´8á ú²{‰È¾-�ãÙó æ¦“ ªêLŽ¡K15œsEd@¡æ²õT“;«ÓŠš·88^VWbR­RÕlG-{ °øXDN‘¶˜�ÚrŒkz\PÕ1j§7œ¹[âHEî$ÆÅºZ•ˆ´Ž&¿ª)�`°‹%Lê‘HêuéGÕ-Y?å[9™lšù3u:U­+BvˆŒuÑÍA!uT¤½"¨Ûµ)µúÉŸ·éÌê½o¬ÆRU¿S©+ÆØ›¼WÌèà�3FAj †1˜bIh‡\ ÃÕ_Ž]ãtL*œ¯17ædàf'†"ž\‹ñäº!Îó8à©!á¤VèŽQ7ÅšË0Ûæ#Ž_àN®ª�z�YCÆZ9ë—°rìÛ²÷Òì˜üª¦�jhïæ•e²F³NToÚž-³Ç±wSÞþ²Ò7°ùŸ±T­ß‚Z­»Eï Žˆ¸hq ¯Ë›28ü¸ªÎf[v¨ou6_cbÂ�9¡Õ}dR®•UPÏÈ”bJ±–ß* :¡v>á䔎½£n¼£ªßWàÜ¢â¨�¾®ŒÕÑR:*j'1ã‹ýC,;u¾<ÿ>qqÏMUÕ´¢îÁ&·SýCŽÏã¢^×cipèIdlXÊwöãçkÛ³åßߣôV<~½îúŠœÝéL}ì\~Ú™)�œÅÞ-kèqó»4ëwIYÞR¹R³E<)Õüä:û³¢/ëÖñ`�ˆL‘÷Dä3L…Ã.˜l©áäÐîõù\D¾ Û9<†ñ zDDfˆÈWÀ|àl`LçX"WÞ+06’'€•"2^D–Ó1ïíŒÍ°:0VDÚUä£ádq^„YdZâDE¬hÎÇèß)‡¾ÏÀüÿ?è䄪•Ö®âÒúxSÓèóÄ8<¥H^§ã‘l�;�¦…x5õ~x ›fŒa÷ºE$׬OÞ§憟úD;ªÕo™ï𴶇Ñç‰q¤ÔίoÒû<êz"Û—üMÆš…¤6iG­6=ˆ–ø°Åñƒ¨Û¥_T·Ù=N¡ÏãÊÕŽ’j·;\·Ìß � €ªn‘¿1߉H/·’ð&éÜQ�“…1ä>>žÃ 0#\`bPÕåNÀÛSN_Gã�{0¹Šªá~Ã;1n®‘q>sÉ�²Žd©sM‘ÞRª:FDqÆïæ<6ïÃ�¤‰¡ÝÎÕÀ½"ruvzxLDêÄ;àï@¥Ü+Ó‰È�@ U�¹ßµˆü‹ñEqü—7åý³FfxÄåŽõ°1ç—!�Ø»iý?܈·ZÌ2Lì·Ìÿð^–|óÜ<öÞ"¡Ži‡ÙÒÆi†ñ<‰fç8´V«®�Ê ¶ÌÏî5 hÖw ŤVÛž}Ù"Sˆc¾ iÀ‘q˜–¥pÒ�¬ÅÜG,q \ÕMNÒ½æ˜íz¬9 “M3Z6ºúUë·Lشû×.Ÿ¹›ŒõK˜ûÞq'U¡Ý€;ã=­JCJíF¨ݘl¬ûê�¨ê,Y‡ùnä«Jh©´¬À°-q ¼m�1þåå%$&D¦=··^Rͺ k´^öÝ‹,ÿé5ÜÉUé~Ó;¤6nçYU’jÔ =M#LH8üˆñý¿«"çd)WVbŒë–8PÞB¢¥ó7¦BÂÉCs&Óf>\nw½¤êu¢�JÚœs+u»ôÓR�Úm{æKÌg)œ¤Ô}Æõhá~®‘æå\ÀÇRq¬À8$Xâ@y ‰V˜üû±Nz,ÆÝ± ¸‹:a«Í„#µQ›<éÁ-%ÛZ DÕhBâ7ŒGÒi˜d’–ÊÏJ ŽˆTWÕÝE5¶Ä–òVÉø0 bmA>˜¯ª Ÿ A[Üj¿EÁq7Í{J÷bÒaÛäpû¡Ål¬ã¬,Å ¼…ÄJçoë÷{ùÓp„³­ v–Ê�/c;fƒ53*˜ïƱN §¥òÓØ¥â¤¥¨(!Q’4Ë…""crߘâ#ðoÉÞe…ÄþJÎî}²¡ !ñ&Xí¸ ™�¥¼iIî½ÄRÁ”«�pjWgÛ�D_L¤êäÇ ø7çìÚbƒ©öSÂv‰QWŽÁz11Ì k‰+­ˆ½]ÓRL*ÂMt±Gӊȵ9cÃ2«¿,»×,`Ì•-™ÿÑ}ñžJ�dn]‹¸\> “1ß•„CDþ'"cD¤i¼çRIh‰ÝIÄ�Šó‰íŠî(`Jm¦ïZ5ÏôûŠhvà²sÅ¿ìZ™&Èԙػy»VÎ�ìŠÇö%ãò$Í-b¡0è%*;88“zÜRN¶&˜ûˆ%T„�øèê$;+"Ò³õ,PÕä0U>×®•³Ë:ä~Ëôgÿê_ÞËw¼áa§qä}£è6ôÕ8̪xl›?ÉÈÉšXD³É@ ¦ŽI¹ "ÕEäùb"JDäXïy”€+0Õó¾‰÷DT*BHü€Éee ú © ÝI¨ê—7yKúâi1rÿc÷Ú…ì,@€ŠÛC£^g’’Ö¸‚gU<4`Dz\À_E4��ɬZž*§3€›©\;‚ÿçÆ{ÅÁIës9ðy´Ì –Š¡ÜS…«ª_D>®‘[Uµ4õ}C,.NÊ` &m�3þÌÖý‡”Zn˜ö=kÆ}Ď峨Z·õ»ŸDÛsn#”8зw3_¾ 8ôú7ó¤ÙÎÞ¹…™¯\‹Ë“D÷›ÞÆ“’[W~ó¿¿±êçwرl&)µR·ë±´?ÿލ…~üY{XòõÓl›?‰=–‘T³ií§íyèZ¯9{7­äß·n&­}/ÚÈ›‰"�½—iO¤J�&tbvëþü’ŸTeŘ7Ø4c,»VÏ£jƒ–ÔíÜ—vçÞžoî›þËòŸ^£ëÕÏãËØÎ¢/ž`Çò™x«Ö$­Ãtºä¡}÷JÂö%Ó äd¹�©…µSÕ ˆüE’ý‰ˆ“Zf‡ªFKÕ]¬Â"RHQÕ-¡é㚪@ÕȺíeÁ)¦t<ðG¬ú,gNšbÒ…[âDEå7z“ÿ¼2ös$E«šÐ€ÿÛõSG©?«t �…Ÿ=Ê”GÎbíÄ/HJ­MƆ¥Ì}ï&Þ}A¿©Zé­Zƒ-:³nÒHæ¾Gžëç¾÷_ÖOù†ZšG@,ûá&Ý{k&|Š;¥™[ײàã?¬7‘sÍX·˜_‡Ì‚O"}áT<Õj’¹u Ë~|•Pq1_æ.6LEúÂü÷Ì`Àφ©£Ø<+7âŠÑoJðeáËØ�/cAŸ)�½s ¦ŽbÇÒyú äd2éÁþÌ|uÛ—ümÔæUÌÿð^ÆÝÚ‹¬ô¼)”önZɆ©£Xòõ3Œ¿ý(v,ŸI•´Æì\9›å?güíGQ›ÑšñãNJY ªÅIõR*㵈´‘QϼUÀNÙ("/Šˆ[Dº‹È?@ç’…"²CD6EôÓCD¦;€Í"²PDN%o‰È±/‘yÀn`‹ˆ¬‘ÿF+á)"é"2§€~f9sJq^߈©wáú:çvˆHy”ŽWóTµÐ�¥|©�2ŠªºDD&7‰È§ªZâph§âWò~)ˆ‘ð¿±nÒHw‹ãKVúx×êy,øøjµ>”ž·� FóƒÑ`€¿Ÿ¾„µ?gù�Ã÷­²Û¸‹u“¿fåÏïÐòÄ+Iëp$ÛæObÕoP»ía´=÷ö}ýîݲš9oßFj“v6ìcjÔT™9|+F¿Á’‘OÓñ’‡öµÿ÷õØ»y>@Ç‹ç>±{íBªÔmV¢÷âèÇ~eÍø�ùû™KiÚçBº\õL±®[:êE6ÍC«S¯¥ÛÐáM¬ý:3_œw‡qØíç»nù�Ãézõóû>¯¬í™tÿ)ì\ñ/ëþü’fý{îð³zÜG¾@NVqë L‘ªºª88†î1Û×·ÀL Ð袪ñbŠ5ÂÔ�~ È ,"Ø) :sSþSö´0Š Àʱ¹÷(q{èyËû¸Üf¾r�œ,f ŠË“D�[Þ'¼¦Å’¯Ÿ!èÏ¡åIW B§K`Ř7÷µÝ¾x›fþLÍV‡ÐqàƒûäÖ¼®(‚~‹¿zwrUº\ùô>ÐêÔë¨Õ¦k&|Êî5 ò][½YÇL@ßÕªz¹ª>¬ªgaʇæKù+"-1U㇫êíªz?Ðø "ý#¯+.NÁžáÎËåÎ|TÕïJÛgyáìšÞÁÔ³ˆæ–r¦Â„„ªNÀ|I-eýÜ£0†Èb»Âi08bËÜ Þ=K–„vû’é Bõ¦ؽvᾇˆÛCÆú¥h07V¯f«ChÁÝì\9›‰wõcçÊÙt¼ø~j4ï”§ß� §FË.yúÍÙ½ ojm²¶oķר¾w¯]@£^ñO~¹wÓ |{vR§Ã‘xªTÏw¾aÏSA•Ëò/Jëv>&ß±PYÙHUQ¬ófÀåIú]U7Ý;ÂoþÆ8Y]‹¢f®%AÎ�ëþüÊ�¾¨¨ø+C�V]A5�ëha¬Ÿü5k'~AÞýéqó{4ìÙŸÕã>bã´¼‰jk¶ê ÀæYE/†C»žÍ3.´]r�z€IU©¾I_0)ê5.�Yݲ‹· ­Ö %ž”TÒNÍç¦ °åßߨѢs±ú+ ªAf¿}«ß±E”FýúΔØÚ¯ª«TõzÌ.v+p»ˆ.Ý !Oª‚t…Ñr6-sþ6�¸«Hki­ƒºÓñ’‡ÈX·„_‡vfÜ-‡1éÁþüz}W~º´!kÆçšFþ}ãF²wl¢ãÅ÷SµAKª5hEû ï!+}=sÞÎuHImÔ†.W=CÖö ü~s~¿©;“ìÏo7Ê—ÔgÅè7r'!B·¡ÃIª^‡™¯aìÕm˜tßÉüz}WFjÎÞ-köµkw¾ÑÂLz°¿éó�Sùehgª7í@rÍzùÞ_ÍV]©R·ÛOã÷›z0ý¹ÿ°ú÷ùÚ…ÓöÜÛ¨×õX–}÷¿ éÄ_OœÏ¸[{1íé�T­×œC®y±¨�µÄì^³€yïßÐ`ànçF]ZPÌ�„ˆœ&"ç;«÷бŽÀ ϧp¿Ý•Îß³Å@U}/&/ðŽã턳 )È¥s„Ó÷ ¹,äY%"GÿsÆ~8âš�;ÙÝ"ÒÊißx�èQÝk1Õ"yJ¸?s‘s€÷€€›â9Ktâúq\OÀèh‘ú4í,,ãX[ƒ~ßUKG½$[æŒ/²}‡‹î嘧þ ñgãÛ³“ôù“P¿�']EË“°kõ|²¶­£Iïóhsv^ïÄvç £ñg³gãr2Ö/Ùwü 3n ß³SirôÙ™¤ÏŸD kÍû]B›3oÌÓG­ƒºsâkóiÝž*ÕI_<�@ö^ZœxUêäæVjÁ]t»îjµéÁžM+Ù»imθ�Ãïü‚f}’Ö¾Wž~ÝIU8òÞo¨×õXölZÁÖ¹ìSA%¥Ö¦nç¾ToÖ1ß5G?ö+]?GJZ#¶ÎýT9èŒ8ùÚ§ÔiLÝÎ}©Z¿e¾Ï6©zu;÷%µ�x ø™öô@0ƒ’98Dc!ÅßIt¾¶‹È Ùˆq»® ‰¨Žºá?ŒYÕ陼÷<¦ŒêYN_[�6y·†ƒ90X‚"²T¸DUWF\v° ¸X&";0j܃{´1ÞÁØ"ˆÈJ d!"'Ÿaæ:Xµîn– Cáÿ""m1Ñ©Û�³TuqÄùYÀ8U½¥¬c¹Üž�¼©µ.8îżUëåSÿZ„¹ïß©K¾~&Kƒ�CTuIÑWŒˆÜ<¤ªµŠÑ¶ pÆm¶ÆP¼ø0ò{é´ïƒIBW³c¹'äöêì.wúªŒÇd 8S‚÷åȹ×Ý_yÂSz[*–u“¾âï§/ h0ð¹—•&SpaˆÈßÀU½±ÈÆ–˜âØÞV`lŽËЏĒ@$ÔN"Uýcð« Ô‘»£[,ǧÿá[f�Û<þÖ^9™[ׯ²{K1Y<òüõäôç< ø/‰µ€pXˆU7U("ÒHD¾Â¤( iDå#a…€ªÎÆT [ŒQ?Í‘^…_Uâ1æý9Ý3Ö/�÷ûMÝ}Ñ2™ZÊ øùçÅ«ó>¸Ë�ê '5vy± (]K‰pBF®Ã¨ˆûbQÎ-n]Kb‘ÐB¡ð#¦*�“Eä%1%!c‚ªn úszçdìøiüí½þJ¸ûû¾=;ùóÞ}«~±WƒÁUµðh¾²³S ÈRŽ8�‡�×€ï�Žª·X KÙ© B¢!°QUÿÆ½î®æ‹È™±DU35à;Gý9/Lyôl]:ê…Xum‰`秊Œ»å°œm &oÔ€ÿð ÊÕ³¨åT8´ÄIvҪϤ9EU/‹e�nK|Hh!áÄHÔÃIŸ¬ª>U}Œ´%"?‰H÷Bº)6ªªÁ`àvT‡Î~ûÖà¬áC5�c=ôbÉÖyùýæ¾½›Wþôçôp\Ÿ+‚P n»›ˆ!"ârr/ÍîÅ묪cã;3K¬Hh!�IDæ&"ǾùÚ“ï¿#0]D¾‘N‘”U}ÕÓVŒ}+ãç«ÛøÖOþ:ÝÐd¥oàïg. üqG_|{w}ôûŽQÕØä2/¡ïPƒB[YŠ�ˆœ‹)Ò4ã¹t¸ªÞbÓ|ï_$º�­ú¢bQÕ0é®ÇxBÍ‘�êVeBUÇhÀß:kûÆSŸ8_'Þu¬×êbWNµ8ý9,þê)Æ>È¿îÏ/Wƒöú}Å!ˆÊî$b„ˆœì¸�v`ê?œ ªÅK+l©TTZ!BUsTu8¦Ò×À©ÀBy³ˆÌ²E¢ª[ƒÿ`T{nV˜ IDAT[0yæo×w Î~óf Oÿm)˜�Ó~àçkÚùæ}xof 'óî ?§ƒªŽŽÇ\T5“ÞÅ ‰R""G‹ÈLÚtpºªöVÕqqžš¥© BÂl+ª¡ªfªê3˜2��bÊN¾%ß~‰PÕ‚þœ^ ZþÓkÛÆ\ÕÊ·òçw¢–ë´˜Zדî?%0ùá34sëÚÏ5ào­ªO'@7ëáTBDÄã¤NŸ€ñZª\tWÕã;;KEP„Ħ’¤VÕݪúFX<œ‰QC�‘óByúKŠ£Þú0èÏiíÛ³ãù™¯\ãÿý¦¾ðBA:¾=;™óî0~Ò)¸eθ9ÀQÁ€ÿ2U-p'XÁX!QLD¤žˆÜ�±5| $—`ŒÒ_Ú´Þ ›–@DžúªjÏ2ôáÁTûº“:y-&Ÿÿ[ªº¹ ý¶sy¼¯ý¾k¶:Ä×êÔk½ÍúÄ[­fi»¬´l�7‘•?¿­kÿø<ˆwý¾Û�÷íFâDÿŠªF«þfD¤æ·r¦ÎË瘔æÇub–¸‘èBâc ¦ªž£þºc~c~_`~Ó ½°ð>q ÆåºDÄ•ÜäèÒòäÁ®z�û‚D«w¿�µ}#«û€£ßÈÙ³iE’Ë›<=èË~ øÂÑÿ'"ò p¨ªöŽ÷\ g!5óÛ8Séuà�²,¤,û‰.$~V¨êà÷[�7S”~6&¿Ì§ªºª°k é³*0ÀåMº.èË9¢j½æ9­N½6©ùñ—S¥N´’Æ• Ø8ý'VŽyÓ¿qúO.qyvý9ïïT`¼C©‘{�+TµÌÞo•' ÿQ˜Ó˜x¤ÉÀËÀH§«Å’ðBb:0^Uo/§þ=›Å%˜âñɘÊ'À—¥õãw*í]éò$ Ö€¿Nýî'Z�|µ§~÷“ñ¤T+òúDc×êù¬÷+ƾ•“³{›Çåòü øÞ~¨L7¹xPUëÆ{.ñÂIÙ=£Nj�±Ó|Œ°.¬–h$º�˜ŒRÕ{+`¬À¹˜•Õñ˜UU·—þSKLDdFµâÙßVÏ"’ œ€ ý�Æ@0ŽÜÝpB:X›D›�Gb\ʲԈHc̰?p"� lÁD þŒ-ËÍUDj½€#€VâöÔs¹=õ�: Ö |5PÍÛâò$¼Õj\ÞdõíÙéògexPÍ£¿·'S\î�"®tÕàÖ ?gf74³KXPÙw ÅADêÞxϧ¬8¶¯ÓœÇ1˜X†Uä.`~ßÞ§%¾$º�ØܦªoÅ{.‘ˆHЇܕ[{ €Y‰�ÇD§NŽe¡Ç#¥�Ôqþ†ž'Û�tL„zzè‘‘Î �ˆœü ÔQýÿöî;NŽºþãøëM(!B U @B‘D%HGQA@)‚D)*H ‚&•A@ �� Ò[%ôÞ øüþø|‡›lvo÷îönvö>ÏÇc»;óÝ�ïÝíÍg¾Ý^.:?]%ie`‹´m¬ŽÏH0…ÌìÞârÚQ«‰w�ú`AšK“ îl‡·=,��»ð€1˜ÒB£�ûIŸ®V0³§‹ÎOgÒ Á:x@øDz\9ž‰ÿ�«ÌìÕB2ú…– ©Îþ=`óõ®K#÷žýsçÿÁÂïü&“ÍìÁB2ÙIÚ ø°š™=Rt~òRÉt:‚ÂÇ™ûFcJ¶µz€ í¥[óõ‘l±Ò­ú“ê÷ïIÛoÒŒ´ù ±�ïÖ,|5¯;ð6‚;€ûÊ4þ D²ïÒÀNSõ2Iƒñ…³66L�kãm oá�ìl<(L‹’B(R+—$–ÀëÔ·3³«ŠÎO³IZ¿[ÜœŽ F64û]à^æwÆÅ¢g$­ ÌÀg0½½�ι"þ·Í„UñiaÞKù¹ÿ;On�„ÐJZ¹$‘Ýíµen3û>öâƒé–% ¡#`¬lì,˜¤™xuÕCÀƒ¹í3›Ó§?@9eߥ¦–$R÷ÓÕ�5rÛ0|ÕÄlt÷,¼Úèr<(Ü ÜSÀâK!tI+‰ÒV7u—™½\›6àƒºêµèÃ�m�ÑtüýæHz”¹G¶=Öncz û.-Ôiª*ÒÜ\•� {½\.éëtñkð`p‡™=Úí\‡P V ¦Ç~Ý}3u_Íî�¶'éÑ»(ô­\’èvÕ@—>g¤­*IÙE²2xd�Ãé¸À¦“¿ƒ¤9xÐx ˜�¶wsÏg×Ùÿþ]\o©Üj툇Åè¸Ë¯æõ”¿·Òë7ñ©Uò� {ì%ªV† QhwÅvefoჲf6’>µ�dcs�ìõ¢Ô¾ gû…RºüþøÈáÊò~�¯`Þ^M[VºÉ?Ÿ¼–]ô% î¾ifwtå÷BA"4$µ�¼�¶²Ê¾Ký¦3D=5_ý$…é•_kënÕ!ô†– iÔò»D›Dhž~×­:„žjÙ ‘¼M”$BóDuS]ÔêAâ"H„æ‰ê¦º¨ÕƒD”$B3EI"„.Š ú“�Àìî,7BU†  סY"J!tI«‰h“Í4�h�¡KZ=H¼‚¯áB3,‰§B jõ ñ,0´èL„¶1ÿN…A"ô'$Bè¢VÏA"4ÏPü;BhP«‰g�¥Óz!ôT”$Bè¢V¿ø>‹O#½tÑ maY"H„Ð%eUN¡‡$ ÆW£‹ BD�ýEöŠ B´z�x_�,‚Dè©ì; ×!tAK‰´¦ÄóD�=70"H„Ð%-$’+ša(ð²™Í.:#!”IY‚IJEg"”^ôl ¡Ê$žV+:¡ôVÿK!„.(C�¸Qt&Bé�À¿K!„.(C�˜ –´\Ñ å”FìÇ¿K!„.(C�ÈîþÖ*4¡ÌVÁ×’ˆ’D]T† ñð$B÷eß�(I„ÐE-$ÒX‰D»Dè¾x÷׊ÎHeÓòA"™N”$B÷­E”"Bè–²‰û‰ ºo-¢="„n)K�˜,/iPÑ ¥4‚(I„Ð-e Ù]`´K„.‘´ °$Q’¡[æ/: zx¯6¸¹à¼t™¤ù�#�·ÌìŒ*ÇGÛà]5ßž&×™Ù{UÒ/|ØؘÜ L3³ûjäaY`¿ôòföR�tÛ§ÏkfÏtáÇlUѳ)„(E�0³w%ÍÖ.:/Ý´ p >õùA" òìZã}G§æwHZ3½gý*éMÒIÀ�ÌìýŠc+¤<¬ Œ®qÎ]€¯×í$ÖÞ-8!”RYª›n6+:Möm<@Ü ì > ìü›O,i¼Ä°>p ^ú‚ÏK´;ð0p,ð×:ç= }V°p{• Bh@™‚ÄT`³TuÓ.vL�?0³‹Ììe3{ÜÌ&šÙAfV9kéO€E�³€ÝÍìßé=�˜Ù`$p>/iëç¼ÿ»Ÿ%I½ð3µšÍñïN¡Ê$¡z5KY-“o¨—PÒ¦ÀöÀ«ÀÑi�á\ÌìE<�_㣦W¥£�¢-IZ X“!t[™‚Ä]x£îÈ¢3ÒD3ÒãÎ ¤Ý*=þÅÌ^ë$Ý¥xÛÇæ’W9¾pð.ðSI‹7šÙúXzŒ B7•&H˜Ù¼gÓæE祉ÎL�çJ:BÒÂ�¤]9=vÚ•3ýžM/‡UI²ˆ™=œ, œØxvKgsà‘*Õv!„•&H$Si£ af×á½ÌNž�tbê®Z) O5ðÑY¯¤j‹5-�Ož’ÔNUxyÑB•1H|XÒòEg¤YÌì÷ø Áóðª c€G$}­"ivq§��ÍÖqXå˜ÒyßÀÇn În·FìÔÁaS"H„Ð#e 7F{µK`f›Ùxiát`!àÒ–ç£G$-"i?IKTì_øazyeÅÛ²rc%}CÒÀÜû–ÅÇH|Ÿq 2³Yø ÜÚê"Ùo[™XtFBh¥,IHš 1³­ê&.€¤øÜH‹á­{��¦‘Î¥‘zL \kfSŠÎO=©Ôó3۴輄Ðʼ6ÃåÀ9’™Ù«Eg¦Š‰xWÖgñԳͬ‘)5ZJZ¬ç„¢óш4µÈø‚M!„&(sIbü¼»™]Rt~BñÒj{ÿ65³[ê¥!ÔWÖ6 Ììyü‚вí¡Ïí„wÑ-CÛI¥PÚ ‘\ìÐn3˜†nÛ ˜X’nº!”BÙƒÄ?�e)ùèëÐs’†áãGþYt^Bh'¥fv>Ëç¾g%oo|ÙÖèúB•:H$c�]%-ZtFB1RuãÞÀ…fönÑù ¡�´C�¸_�í‹Eg¤§$Í/é“E磄>…ÏŽÛð¤†!„Æ”¶ lž¤‰ÀÂf6ªè¼Ô“fk=Ø0m �ǃÝ��=Íì¢Ü{>ü5½| ïö[ó'é(:ÚiNIkiW¦Éî¾?‘ò±pÞ3è‚T•W ’þ„T\»è¼„ÐnÚ%Hì\¬ff�œ�š$m…—|†â˰>¼…/.ô¡”l°^¾ÚDÒ`à¹�ÚÂÌn¬qŽññ#Ùäsœ”fIü®;ë>üð¾Öö"ø:Úß2³sº÷“ö�@ŸN4³S‹ÎOí¦ª›þ�ÏåôÕ¢3R‹¤Í€«ññS`°™�0³ Ó¾é)é`|VØjîI�{vrªíðQuÙÎT‚¸w#Ìl)3Û숮ßKÝà�W¤]ðÀv~ÑéIGçÖêØ§èü„P©ÌÓr|ÀÌÞ–t1°ð“¢óSÃñ |¢™Wqì“ÀZÀ+xÀøpL•ϸŸN|7I‡ÕXšsOü"ÿ/|ý‡J;áëN|0%xú¼+$m Ü'iL‹O'²/ðo3{*¿SÒåÀ€*éß2³/¤4_bîžq†Æ{Ÿ±÷ê^Èo¥ ðÀ10´ ¶ÉXà@I[´ÚDt’ÖÅïÜß~Yql p&^Ú¸ 8BÒ©Uæ¤ú0ø0 _O"ÿY‹àAà2ü‚WM¶¼ééù‘gfw¦‹ìgñ)Â×À�Ùç$­Œÿöªrx;ª‰üÞ«Ñq�®öù“�=Ìì™äq üo.àë±ÆE(›v©nÂ̦âwÇ­XdÏí™hf¯T;¿X—æºoÀ^³Êç, dí ÕªœvÆÉ_RÚÎòR¯zæâôøÑ:éŠôU¼!ÿÒ*ÇvgÞ;ó©TYž5™�—äò>œ×“ â+ î‹/ëÝ”•¿�0´�¶ É`÷´ðL+Y9=>–ß)i à{Àíør¤ù4Õ‚Äf6-¥Ù%5Rçí‰7p_,PùfIKãÁcVZ׺3O¦ÇauÒ"Ma¾0ÞÌÞªªy6=®Ö@Ú"|`g4óCÍì¼M(ßÞ3¯z›žm©j/ïªÜñIÚ¯:Ì—ÄîHǯ­qú7%�‡ßü Ÿbþ>I«L(i>IßÇo n.ÁÛ¬ž‘´K•Ï><�ûI«Kú+Þ»n^mùp�÷…~®­‚„™½€·M.iž;ée }�'I»Ûç˜Ù͹´ ¥Ç΋«U9íŠ÷ŠúK'ïËî¸ê$M&+¥¼ß@Ú"|øWº¨7Û«ÌýûŸÏÜ¿¿»’´"°N.ý…x q³.ž÷0àkûV.HmWyÀ{ÉUþ-—þ*éÀNÎs Þ+,o `Œ¤åº”ãÐöÚ*H$§+àuÁ­bfz\>X‡ùWÀóx›D^öOúp­KÝf;çîh÷ž&u’�'òù¨#ËG·m{‹¤-ð�~ÞK§ø2Þ­6ó@ªžË·}ì�{žoü~¿3ÿ >X‘Št£¨ýÝ\ G³-s·­F.àHÚ¯jËüØ /¹dN‘4¤ÆyVÆ»AoœJG©i1à35Þú©¶ fö>zù»Eç%' ÙÝæñÀòÀ‘U²³¶ˆšA"¹o¤þŒ¤¡øë‹ÓJrU™Ùëxãì@I«Ôùü,ÖIW„ï·™Y­j›îXUÒ¹’îgî•í¦Ð1>eLn>HlŸ{>ÁÌÞ3³éÀ*Î1ÙÌ&™ÙMT÷8°wêzû5àí|þrÏ÷££êq’™}ÎÌ.1³‘tT.‰7ÞWó°‹™]ifGáKëV;Oí$’ŸëIªÙ½±�Ý…WÛl%é³À¡ø?÷Ÿó‰ÒÊjëáýôëU£ä«œvÇ»{^Ø@^þ•¨“nÿô8¡�Ïì3’ÖÂïv›]ŠXÿ™‡çö=ŒÎM�r  ú«¦íÀÖ¹÷tVÝWϵY�O]eóS£ Ê=Ïwj¸³â3n¯‘.ïÖtÃPí=­Öé#¬-ƒDºS›B‹”&Ììi|�¤ùðF¾‘O“ª�NI/O®×ŸÞÌîÇ/;àü‡+Ú6j9)�tºàÎCÒ¾xWÙ'ñžR­ä;xÃno¯ÿáÕ6Çã£Ñïˤ ø\=Ÿðj¯ÅÓëÇ€i=8÷K¯«Žcaî»ýéÇî©‘.ïåŠ×¯WMm$’ŸŸNõ·­àP¼ªgA¼úiˆ¤A’V�´3p~Gz+sWktæ"¼áò#4VŠÀÌîÅ=—¦I-iI‹IÚ\ÒiÀŸðq»·ÒÔÛ©Zm/àW5F›÷Ä�!f¶„™�4³›Ù›UÒ�Í=ß6m™‹z¸*^£#ÛŸË=_©âØŠ¹ç/ÔxÿÛ5ö‡0�vq]é2à~¼4ÑÙ\G}å:ꑇãÝ+ý8¤ £r/¢£ôÑp5‡™�–4o´¬6šúq|tpOîŠ{ÃaÀ›ô|€[5³Í¬ò{fö€¤©Àæxcr~Tw½¿A³–Ù½Ø"=ß âXþu+¶'…’iÛ af–îŠ'é3›Y÷M½ëSx�™�ñö‰mð^F³ðÒÃÓˆëjÞÆ«?Íï4³G%†²«¬vø?ü޳jÛ†™ýRÒ?ð‹Ý†xšÍ�¥ñ`¯êêØ›ÒL¸g›ÙõÒ'•caÞ*�îƒÿ®†à¿;€ûÌ쮊t•=Ã>…Ï�5¸�ÁŒ�¹’Ž6¥OJú*ÞEw4m*Fíñ!4ÎÌÚvëvÆ{ý´B~†�‡:ù‰¤W� ‹ÎOEÞNÅ«ë†4˜þWx]»å¶YÀOsiŽÎ»± yŒ—hòŸ}L�´�çÒ¼—¾�³é˜¦|îøIï½*wìЊc×Wœ¿òg½ "ý‰¹c*Ž�•;vfÑëØZkkç6 ÌëÓ�§ê˜gÔjùy¶~ªâ˜W/ˆ÷p¹BRKŒ¶–ôa¼ªéd3k´$p(ktd‡ô4?6ï˜ èèmV)?ãï|x‰­%ø¯àíX™üÏz)þó‡Ðcm[Ý”1³ ’¦áƒì>^t~Z�™�K³Ö~¸RÒÇÍìù‚³u ^uóë.¼çªwÌÈ7OÆ«ñÀïø»âïtLx³™U×bfc%=‚·‹-‡¶»Þ̲î @փꆊ·ÿŸ”*Æ\˜Ù“’Fáƒè6>Œ·UL3³‰U²r-0'=¿·âØDàÅjç ¡-V¦«GÒHüŸm73»¤èü´º4y^6)áË6ï”å}™—Mñ ×—­b…½"I:›Žṅ›YSç� ¡Uô‹  i<¾ØÎÚÖBÝ:Cç$Ý€wóý˜üeMçÞÇÇGü-åë5àÃ6ïÈùÚB[·IT8 ïSÞã:éÐ7$}_Óá;Eˆä)¼Áúr:&ÖûEˆÐÎúMI u‰ÝXÝ芓fñ½¸ÛÌv-:?’^Ä»½fÆûY'óe…Pvý-H,�¯^7ÖÌŽ(:?¡6Iß~�W>Tt~$�OÝý,p�™]_lŽBè}ý*HH:ïs¿‰™Ý]t~¼Òô÷ãÌìð¢óBփļ§ÓÀG-¦o9’.Ö>bsÏVBècý©áó‰áöÖŽ-67¡’¤ý€�€ý#@„P¼~W’ÈHú.p20ÒjÏ™ú�¤•ñušÏ7³è…B èÏAb>|͉ÁÀFfÖè4Í¡H¾¤æªÀzÖø$~!IU©›ævÝßëÐSý6HHޝÊu¶™µÄEý•¤C€3�QÍê5$im:Vt{ÂÌžª8¾00½üŸùBN¥•ÖNÏ�ŽfÅÏ~J®ßµIä™Ù ¼]âI1¯SA$ Ã{œ�Õän¥çà+ÅMÃÛ¡òçÜ¿AÈŽÇÚÎ!TѯƒDr:~‘“– }(Uû�Å'ð;ª�ι8pnn×™fÖjË´†Ðú}�H£e÷–Å× }ëûÀGñ‘ËÕ– í §ã >�/Êô½>:o¥Ó™=ˆOû|@ª}@ÒgñÅp3³)}tÎÏû¤—ïà³Ëγ泤Õ$�&éZIwH:_Ò<ËàJZTÒEiÛVÒü’Ž•t‹¤ûRc2’~žÒ|/½Þ[Ò•)ÍDI5§‘´Š¤_Hº&ååI{5åB=E¯zÔJ¾RÙl`«¢óÒî°ÞÈzN/žc ¹•ã€%�§sû«ñ¾/á³»Z•í |¹Ø,í�ܱóñuÊóéçOéîI¯_Ƨ©öÙ߬’—Ýðõª¥¿X0—v±Šã«ýwŽ­ü[¿îÝT�¤‹�­�ͬÆB2¡g$ nÆ/ØŸ¶^šº]Ò:š:X_'à_ÀŽVñ i%|ñžEð í•x°ÙX3%;ÒÌNËý,Ù‚=s˜w!¯Ìlޤ{ðÀ˜y˜äWLœ,“ý>$-ŸÒ,JGP¸ø*0"½çh3;%¥�ÞM¡é¢ºi^ûá«”ýSÒ z‰C×Hš_�m`×Þ U¬|==øze€H~„€ñf¶ƒ™�Œ¢cU»#kœc~|*ñoÃ�5ðu­+=¬ef#�/äöÆW˜Ë‡€KÍl;3;Ø_‹à;5òBSD�¨`Þxú9`ià/©÷Mhž_ãwÏŸ·¾]u7`@z>°K�tù;û›%��4oñhÚ?TÒR5Þœ™�if˜ÙC5Ñx3{.=¿Š¹É ¹çµò²�•r‡HZ®F^B豸Vaf�_¶Å×WM é`à`|^¦Û È“¹çÇKZ:0�ú–Ûu0=· Ï[F5g˜ ÂIDAT½Æ9®m L}žnJžË�{ž?ÇO+ò²N�t!4U‰ÌìàPà{’ú¤ÿ~;“ô|Dõ)fvaYø+Þ¦0#½^8©"ÍBt¬8ð.^ÅTm«õ¿óRyy­âõ<¥�´èR~ÜNwòB�Å—«fö{à0à”´àLè†Ô]sp†™õ{¼ÝÌÞÂÇedö—´qö¼+l¾´±¥™ ¬±M­qžFz‚Ô]ÉÎ| ûGs»¶é$/±øQè5$ê0³_ã%Š“$St~ÊFÒÞøˆê_šYá�¬fö`rz9ðëTÍ”™‘{þ¹jŸQ‘¾7µR^B?UÙ]/TafgIz8K’ÌìÄ¢óT’öÁÇ üÜÌZ©ÊîHà&@ÀæÀWð1à£î·NÏ¿#ip>~f°Þu÷‡}�Ï_;¤ç‡Izø^õ´Þfö">¾'„^%‰™ÙoðF×$õÅ¢Ô$틈S[,@`f7ãs»~&iÑtl"p^Ú??>ï&àÖôžý™»­ 7óy5ð»ôr>·Õ´”— x—ÞõE^BÿA¢ RÅhàÇ’~Tt~ZUZ]î<àäÛ êù~G°¹U Íì|Ôõ ænc0à6|€]Ÿ0³ƒñî»÷3o[ÆíøðzMŒ¸îIûÀï”±XØø`F×ãñ»ïŸ˜Yéišxuüý˜™UöLê˼,ŒÐ{xÜÌ^­ó–z,‚D7IÚ<€�~¬Ø+MOq°pxªž !”\T7u“™ý Ø ¯Ÿ¾UÒvg©0©é­ÀG€OE€¡}D�èóå.7®&¦)¢ûU—ÄTõv#ð¾Vø´‚³Bh¢=df¯›ÙnxÏ“ã.^l®zŸ¤…$�‹¯ðö|6×çê¼-„P2Ñ&ÑD’Fã½f¾cfœ¥^!ikà,|êíýÛõç !DI¢©Ìì:`C¼_ýEi%±uÞV’V”4_×à`“!´·MffO™Y6ƒì À]’N•TÚAO’HËnNÇñÙÓÌF¥6™B‹ê¦^$iAàÛøâ1¯G˜Ù„bsÕ5’¶Â«–VNN0³×‹ÍU¡¯DI¢™Ù»fv*¾Ôä4`¼¤[$í+i`ÁÙ«IÒI»Hº¸Ÿ«h}3û^ˆú—}ÀÌž4³Ý�Oâ]EÏž�tФ•‹Í]IK§)Ñ.Á×lþ¬™mmfÓ‹Í]¡QÝTI+á´ þ œef�¬jÖùÙŸ}|›1ÀoÌlFgï !´¿Jm»‡#�§€IÀõÀ$3{°"ý|fVwÁšλ°%ð©ô8 ¸88?ª”B™-BÒ†ÀÎøEûcÀ@¼›é$¢™M®þ)!„þ,‚D ’´(²‹úHÌo¡ÍE�hiäô®ÀLà$`œ™ÍÉÿlzú¨™]˜Û?øvÚö&‚D¡‰¢º©ul 7³?æDgÌl–™ýX¸SÒ½—ÅB%‰afS€)=xÿ+xUT!4M”$B!ÔA"„BM$B!ÔA"„BM$B!ÔA"„BM$B!ÔA"„BM$B!ÔA"„BM$JLn™&|ÎÐfä'„Ð~"H”˜™0FÒÏ%-ÝÕ÷KÚVÒTàcÍÏ]¡D�(¿K€#�™’N’4LRÍ¿«¤A’v�4¸_—âò>Êk¡dbØò›œ, �¶·%=¼”Ò¬!éZ`°\Åû/2³Ù}•ÙB¹D�(93{MÒ¥À—s»ɽ^>mÕŒí­¼…Ê/ª›Úøn¾ï~3ûoSsBh+$Úÿ�gºñ¾šÁEÒHII:·“4'¥4;vãÜ!„ˆ ÑÌì=à‚.¾í}àüNŽo|Ø_Òb•%m |Øx¯‹ç!”D‰öÑÕ*§IföD'Ç7&¥ç«çHð3ິë¶.ž;„P$Ú„™Ý ÜÞ…·Ôk°Þ˜˜ž¯Qql` ànà 3{!; iYIã$=*é!I?LA%;>JÒ$I/JzFÒDI+§ckHº$íQÒTIŸHÇ—t‚¤[$½,éI'ä3%iUIã%=•ÒÜ‘¶+si6’t¥¤g%Ý.i—ŠÏ8PÒ�’þ—Îqž¤ ýFChC$ÚK£¥‰7€¿Õ:(iy`(0 oëX#wlAà$àÀfäJé}·ãäPà\àx`Ït|]à_ÀÍÀ.Àw€‡€§$-Œ—\ì | ¸x }üüÀ0à§ÀŽÀÕÀq’ÖOŸ=¸˜l¬��#Ù'¥Ù¸!�s/à>`B.Hœüø ð à¾T�Bÿdf±•`ÆìÛIše€Ù)]gÛ¸:çÚ¿Ø. \ŒÉ;˜ ÀƒÍq¹cWâAC¹}O¿KÏü̼ªë2|6Ü™éÇg™Ùë„Ð�E�hCæmãÞ¼FºÈÂg†}#}Ö;’þ\—ÝÉã%�[ȵm˜ÙC’>�ÏB;xo?È ŸÄ/þ£ñRÂøú}IO¥c»â�È7#Ó=’¾�w½ï}õ:Í�ÞîÅ{w-€w»ý°RÊߟ% Ä»×<�w£}(uë}88ýüOâÝ|Ïià÷B[“—îC«“4ï￟™�i ýñ1 ™ÙÀòföb¯d° ’ÆÓ:Öш�íÿ…™}¨°Ì…ТM¢}euꙉí ’�›*Äà(¼´Bè�¨njSföˆ¤»�õÒ®îN'ÞênŽ‘ô'àEüçݸ ïÊBè�(I´·«ÒãàÿŠÌH/:ØoSÞÖ±ƒ™mef¯š³Ú@”$ÚÛÉÀ7�±fönÑ™é ©ËìßÓBh²åq°8>Ú¸!föJ¹ü§^ËU¡­Eï¦6'i]3»§è|„Ê)‚D!„š¢á:„BM$B!ÔA"„BM$B!ÔA"„BM$B!ÔA"„BM$B!ÔA"„BM$B!ÔA"„BM$B!ÔA"„BM$B!ÔA"„BM$B!ÔA"„BM$B!ÔA"„BM$B!ÔA"„BM$B!ÔA"„BMÿÃJŽd8þ7ÇIEND®B`‚ipython-ipyparallel-14e3c43/docs/source/reference/figs/ipy_kernel_and_terminal.svg000066400000000000000000000305101520071063500305630ustar00rootroot00000000000000 image/svg+xml Pythonexecution stdin &stdout TerminalIPython JSON,ØMQ IPythonKernel Messages ipython-ipyparallel-14e3c43/docs/source/reference/figs/nbconvert.png000066400000000000000000000565051520071063500257060ustar00rootroot00000000000000‰PNG  IHDR‘][é6™sBIT|dˆ pHYs O O­0nÇtEXtSoftwarewww.inkscape.org›î< IDATxœìÝwXVåãÇñ÷ÍH\¸Wî=p§æFË•¦©iife©í¬ü~Õ²ÌQ¶´ü–?³Ô´´iæ,-µ4g¦™{ãVœ¬îß� £€Ãø¼®Ëëâ9ç<ÏóAðá>çÜÇXkI 7§ˆˆˆˆHö£)""""i¦)""""i¦)""""i¦)""""i¦)""""i¦)""""i¦)""""i¦)""""i¦)""""i¦)""""i¦)""""i¦)""""i¦)""""i¦)""""i¦)""""i¦)""""i¦)""""i¦)""""i¦)""""i¦)""""i¦)""""i¦)""""i¦)""""i¦)""""i¦)""""i¦)""""i¦)""""i¦)""""i¦)""""iæáä›cšÍ�Ì�Å}e­Ýít‘k­sonÌX`Œc²¾“@kkí_N‰ÏÑ‘ÈX… &00ÐéYÊ–-[8sæL1`•1FERDDD²”,Q"Yºt©Ó1²”¿þú‹Ö­[sòäIIÉrtaMUµjUV­ZE±bÅb‹dU‡c‰ˆˆˆ*‘YšŠ¤ˆˆˆdU*‘YœŠ¤ˆˆˆdE*‘Ù€Š¤ˆˆˆd5*‘Ù„Š¤ˆˆˆd%*‘ÙˆŠ¤ˆˆˆd*‘ÙŒŠ¤ˆˆˆd*‘Ù�Фˆˆˆ8M%2›R‘'©D&ÃZKTTTšž‘#G2(QB*’"""â•Èd\»v�.]ºpéÒ¥Tm¿bÅ jÕªÅöíÛ38ÙßT$EDDÄ *‘)X²d Íš5ãСC7ÝæÚµk 6Œ   Ž;–yá®S‘‘̦™ ///5jÄÎ�;iܸ1¿üòK¢mÖ¯_Oݺu™6m�?þ8mÛ¶Íì¨*’"""’©T"“áááÁO?ýÄ€8}ú4mÚ´aîܹDDD0jÔ(š7oÎÞ½{©P¡?ýôo½õ>>>Žä½I‘¬äHÉÑT"SàííÍ'Ÿ|Âo¼�Ëå¢ÿþ<ñÄ4jÔˆñãÇ͈#ؾ};-Z´p:n\‘,X° ÄÉÌ‘O%2•žzê)¾ÿþ{ (ÀÛo¿Íï¿ÿN… X½z5o¿ý6·Ür‹ÓãT­Z•J•4)"""G%2 :tèÀo¿ýF�5ôÐCT¯^=#㊈ˆˆ8J%òº•+W2cÆŒ4?/öªìøÚµk§)"""9šJäuÍš5#222]^«téÒéò:""""Y•Jäuƒ bРANÇÉta�ˆˆˆˆ¤™J¤ˆˆˆˆ¤™g§Á–-[X³f {öìáàÁƒP¡BjÖ¬I·nÝpsS'‘ÜA%2Ž=ÊÈ‘#™?>ÖÚ$·©Y³&S¦L¡}ûö™œNDDD$ó©D¦àâÅ‹´jÕŠàîîN³fÍ(S¦ „„„Ìš5kرc�:ubõêÕ4oÞÜéØ""""J%2�=ö K—.¼÷Þ{”*U*Ñ6—.]bâĉŒ?ž¾}û²{÷î,uD‘ô¦™ —ËÅ_|AéÒ¥™?þM‹¡¯¯/¯¾ú*{÷îeÁ‚lÞ¼™-ZdrZ¹‘1&/P(  £‹É2Ë%àäõ­µ'Γmc|€jÄì·E�´ßf–+ü½ß¶Öu8�H–¦™Œ;vF³fÍR5²Ø¶m[,XÀÖ­[U"bŒ)tîÚÞÎ&cÌfà+à kí_NçÉjŒ1¾@7böÛ @‡2²cÌàK`¡µö§óˆd5úë6.— //¯Tmïéé @XXX†e’¤cn1ÆŒÿtF2+ ^þ4ÆÌ3ÆÜêt ¬ÀãeŒyš˜ýöbJ¤ dÖQ l7Æ|eŒ©êt ‘¬D#‘ɨY³&lذ�èèè§ðY»v-���™O®3Æt¦Åã/¯V¹$AmëR¶TaŠøSÀ?¯3s¡ÐÐNžáÄ© ¬Û°›ŸÙ…Ë`€>@cÌà?ÖÚ(GÃ:ÄÓ–˜?xÊÆ_^¡|Q:µ«Gù² ð§`�|ÎÌ…ÂÂ"9y:„“§Cøõ·=¬Z»ƒÈȸݳ;ÐÅóðŒµ6¹¤"YƒJd2¼½½iÑ¢«V­â‰'ž`òäÉIŽJFGGóá‡2kÖ,hÔ¨‘is'cÌH`<×GÕ½¼îݽ)ÆÜKù²¦’䄆Eðæ{‹yõ�/¹»x'ÐÒZ{ÞÁh™Æó1€.™üòªT,á`*IND„‹iÿ·Œ±>çÒåÐØÅ€ÖÚ`£‰8J%2~úé'{ì1vîÜyÓmJ–,ɤI“èׯ_&&»¹œ^"�1OS fç� ƒú@‡SIjmùý ÝûOâèñs±‹~‚¬µ.ce8cÌ `&€››áµÑýxnD7‡SIjýµ÷8Ýï�Ìî}q½q1…&ó4‘K‡³SáöÛogûöíÌŸ?ŸuëÖ±ÿ~Ž9B±bŨ\¹2uêÔaàÀ�øøø85W0Æt&CL�üöÓçèÔ®žÃ©$-ê×)Ïo?¼ÆmÿË�C§Úos¨0G2Æ4#æÜ]Œ1Ì›ñ½»7u8•¤EÕJ%Ù°r<­ºŒeÛ‡sž¯H®£™Jnnnôë×/ËŒ4æVÆoàCbÎMbÊ+÷©@fSÅüY4o$MÚ�âò•P€aƘyÖÚ_œÎ–ÞŒ1îÀ bÎå¥ç{«@fS~¾·ðõœgiØöΜ½p�1æckí§³‰d6Mñ#ÙÍ0  @¯nMþ�óçŸÊ?W½J)¦OÑ$§²d°AÄL N‡Öuøï³=Ž#ÿFÙÒE˜ñö#ñM4Æè÷©ä:ÚéÓ ,,Œßÿ� 0iÒ$f͚Ś5k8sæŒÓÑrcL~àE€ÊéÓ§�ŽšÓÝ ú@]…�ƒÜðANkY­€îiI­êeœM#éæõ—ï‹ÿ0§í·")R‰LAtt4�;wæá‡æôéÓxxxP²dIêÕ«GùòåñööÆårñþûïS£F Ž;ætäœì®Øîïs»“9$�µj^ƒ²¥‹Ä>¼Ã“ºÛDe]c?¸¿O+cHz«_§<µkÄÍ߯ãçd‘̦™‚ &°téR*V¬È§Ÿ~Ê•+W8vì[¶láÀ�\»v�•+WÒºukΞ=Kß¾}‰ŠÊ•7àÈPÆOàˆ9©^íò'’ôÖ펱æZ;%½u(X -šê®y9M÷;Æ~÷3J$·P‰LÁë¯¿ŽŸŸË—/§oß¾‰îXcŒ¡mÛ¶,Y²„Æ�³víZ¶oßîPÚ­8� e³jG‘Œp{³êñVv*Gz2Æø¥nk\w‡Iz»a¿­éT'¨D&cÿþý\¸p�æÍ›S¾|ò#_^^^ôêÕ €­[·fF¼Ü&îv¥Jr2‡d�R%|]sÊí[´ßæp7ì·E�Ê!â•ÈdÇÜ• D‰Ôý>+^¼8€Î‹Ìñ~t2‡d�J–J¤d 7üö0víÚµ3,S.æûAÁùœÌ!䆯«ïͶËfòÇ~ ý6gºÅÇ //ÏØ‡…�Ì"’ÙT"“áïïOåÊ•Y¿~=óçÏOvÛmÛ¶ñÞ{ïáééIãÆ�3)¡ˆdqÆé’©ôõ–\E·=LÁ´iÓèСýû÷gΜ9ôèу2eÊ@HHÁÁÁ,^¼˜… ÆÄ‰ãk‹ˆˆˆäT*‘)h×®“'OfÔ¨Q,^¼˜Å‹'¹�››=ôÏ>ûl&'É|:œ� O?ý4{öìaÈ�!T¯^ooo<==©R¥ ½{÷fóæÍüïÿÃÍH‰1æÉëSŸˆdƘƘNçÉ*4™JeÊ”áƒ>ÀZË™3g(T¨îîš÷-­ÜÜÜêæÉ“g±1¦­µ6Âé<"©TøÖÓÞZæt§i$ò0Æ ù¹»»»………5Ï“'Ï'FC·’½4fcô³SDr=ý GtïÞ//¯œÎ"’Ë�–ÀNqšJd*�ûì3ž~úi6l˜™Q‰ŒŒŒý°²1¦•ƒQqwwOpÙáÇsøða�wß}w¹1&ÐZ»?-¯Øz$QQÑq��14oR•×Ç  QýŠé”Z2YᬶßsìàØÖÚ�1¥�oŒ1·Ykÿr.Úß^}ãK¦´"Éuöü癜&m6mÝOƒzœŽ!"©¤™Œ]»vqùòeš6mzÓ«M›6<öØc¼þúëüöÛoŽ—È��Œ1øøøŒ’ïŸ�'OžìväÈ‘¼‹-úñz‘<›–×»³C}^Õ‡CGΰò§íÌÿò‚z¾Êë^§T‰Béš]2E#àk§C$afüÖÚÑ׋äcLSkíI‡r%òÓw/‘'Oöù¿å÷ƒ´ê2–+Çf;EDR)ûü„qÀÙ³1=¦V­Z©Ú¾~ýú žç´Š+²gÏw ËÏEdŒaΜ9mÚ´)¶eË–å×GvBSûüþy©[«uk•£û� )Sª0#ÇÎeþ—¿ð̰.„‡Gâéé�››áü…+>z†*•Jp‹�WÜëDD¸Øwð$åÊI° :ÚéÂËË“èhËžýÁøæ¿…ÅÏ?ÿ½.„\åБӉÞ+:Ú²ïàI ÈG¡‚ù“ýüŽŸ#äâ5Ê— ï-^‰ÖŸ<µkáÜZ®hÏŽÉsàði<=Ü)Sªp¢r»ÞÃÝ�²¥‹$Y>¬µì?x ßü>ñK´ÞåŠ":Ú’'�QQÑìÚsœüù¼)[ºHÜ6ÇOœçÜùË”.Y˜þy“û”¿·ÖvOnƒ,d°øÎÓÊZ{Åé@�+â�ÄiQQÑDº¢Ès}ÿŒm‰ˆtáéᎻ».WÖ‚§§;áá‘ì=p’’Å &ûu �dÿÁ“ÜZ®(>Þy­�ˆpáî»—¯„²ïÀI*”/†o~fÎýkc^H2ßÞ'(ZÄ¿„¬µ„G¸â>ßÃGÏpér(5«•Ö©E"HWg'£jÕª¸¹¹qàÀ�Tm¿ÌQØ5jdd¬+Ož<|÷ÝwyJ•*UÝËËkÁ¿™‹¯W·¦ì;ð÷ÀP�òƒ˜5o5“ßý–bU‡P¿ÕHþÚst2:Úòâ¸yø–½ŸMŸÂ·Ìý<òÔ‡q¿Ð>]¸–¼¥°~Ó^ª4zœj�Ÿ¤dõ‡ l=’ÃGÏ$xÿ€Êòá'+yóýÅ­ò õ[�dÇ®£qïõê_â[æ>ª4|œÂӸ݋ìÞÌ�/ßBÙÚ�RºæPjÝö4Êdþ—ëâÖÿµ÷8uZã^ÿ‚:-žåÀ¡STkò$µn{š^þ€í;S»ù3”ªñuZ@—¾9wþïó>7o;€Oñ{Ùµç8½½I¹:�Ñ,è?*�",Kÿ°sZÑ¢E¹ûî»Y´h›6m¢Aƒ7ÝöôéÓ|òÉ'”/_ž®]»fbÊœÅßߟ~øÁ+00°]HHÈ4`è?y�óbƒÊ–.œ`ù¬OWs,ø¾õ%Š zÕR¼òú¼>õ[žz´3ý{·d݆¿öÜLòçófòËâžM×~yù…{hÛ²&;våÁǧÓóþ7ØôcÂ)/ç.XË‘cgùà͇)Y¢ µª—bÎY{iÒ^z¾7=º4æä©FŽ�CóNÿeßæwñó½ˆùÅØµßDš4¨Ì;PÄ�õ›öÒ¤Ae®\ £å�c(Y¼ ?~š åŠòÔ>æŽÞ¯±gÓÛ”*Qˆ ›÷2rì\ЖáuÄåŠæÇ5;hxý¼³­ÛòÔ¨�دOxó!jU/ÃÊŸþàñ>âñf1óÝ¿¿5ï0™?wcöôaÖ¹•Í¿`øÈ™ÜóÀ[|ÿù ÞÙÛ8zü¯�@å Å©_çVªV.Éscæ°bÕv¶ü4€Å ðù׿òð“0¸†>Ð�ÃGÏðÀð÷øØ{,š72Ák?òÔ¸¹¹ñõœgã¾�D$ã¨D^Jxxx‚eÆÞ~ûmN�:EPPƒ âŽ;î D‰*TˆK—.qêÔ)V­ZÅÌ™3¹zõ*Ë–-#Ožœñ‹Ñ)¥K—fåÊ•^Mš4ìîî~(**jbZžôø9žõ1^^žôîÞ,Áº ›÷ò׆·(_6 nÙÕkáLyï;:¶­Ë„1÷P³Zi~øiï~¸”q£ú$8,xo¯<2¨=•*çèñs<þÂG¬^»“VÍÿ…þuãþüu •*Oð^oL[D¿»›3êéT«\’/g?CÙÚ�òúÔEŒ{ñF½2�üù|XöÅ(òå�™6ªiÃÊq¯5ý£œ9{‰oæ>·|ÆÛ�P¡þp¦~¸” cîe÷Þ˜ÑÍGw öõbX¿Nù¸×ˆýú@êÔŒY_¯öß룢¢yõ�/¹£}=^Ý/nùW³Ÿ¡xÕ‡xåõ/™6ypÜòаš5®Â›¯ÞŸàÿ}÷Þ`ú÷nA‡Öuâþßrkí cL'`�1戵öe'óÔiþL‚‘¸v­j1uRÌ×ê©G;³ð›õ n&›VM`èÓ3hX¯O?Ö%ÁkDG[þûLOzti Ä|Ý6mÝÏìÏfÂè~ñcõÚ�üüË.>y}zÜ·]D„‹û�ÆÏ¿ì¢e³jq¯¹~Ó^~YöJ‚}¹€^|óûàæf¨Z©d‚ ã&/¤R…âÌx'f:ÙÀº·òûÎü„…E&ÈíééΟ»�pûmÕɟχ{z‡)¯ÞOP›: ŠE‹¦Õðó½…û™Ê¯ÜÇíë%XøèNœº@ûVݼ·¿_^7¨” o¬ûîi™hYç úÌš·šÒ% ñ؃S:2Û²Öî2ÆtV\ßoCœÊÒ¡MÜÝÿ>#$v$ÀÝÝ�™S‡R¿ÕHšý‡‡O±yÕÄÛÇJ¼¿×bæÜUìÚsœ€"~üºqí['ܧƒÚÖböÓø%²â­ÅÈä\ºÊŽ]G¹»k“ûxì”^î>– Döíy› ¤H&R‰L…ØX)¹zõ*ß|ó >ø Jd:hÛ¶-³fÍr¿ÿþû?‰ŠŠJö6sE‹øÓºEM ûRµRIn¿­: äK´]üC¯±öî?À”÷¾cÊ{ß%Zãœ{E ù&zoˆ¹ø%¾¤.¸‰=ß,© iŠñcÏõ,/]ãì¹Ë+êŸh»¸×:p’K—CiÓí¥DëΜ½@ÙÒEøá›Ñ<8b:�z�§FÕÒ¼6º]:P²xA~üf >>�Î}&PµRIÆÿ·/wun”bÞbþlÞ–ø|áâI|Þ3§>J�ÿ|ÂË“2á­¯ú@Æ>ß;É‹„²;kíZcÌ`àØm='¿< É kbÕ¨Zš!÷µeÚŒe<:8ˆšÕJ'¹]‘ ÷÷Ø‹ªb÷÷ýOP¨@Â}¤H!_ÜÜLÜúXI}_ÜLì9Í ¿]ÏÂo×'ZöÜ¥�“Ú÷D$ã¨D^7aÂF�•.¯U´hÒWÈJÚµmÛ–üùóÛ���:Ém× Þ­‰¡&%©‘ßü1çN-˜õ�ƒ­÷ºáJå/Øèäõ×I8mQü+KcÅÛk¡á‰Ö]¹wÕiÞ[¼ððpçZèÍ/<ɟχ*K°mÍäDëÜâ�&6¬W�ß×LféÛøïøÏèÚo"ï½þ CèÄÞÞ²z"ËWýÎèñŸÓã¾×yûµAŒx¸ýož÷ò•Ð$Ï;sKâb†¼·x1}ÊF=݃Éï~Ë›ï/fõº?ùeé+xzæÈ‘£ÕÀ9ÀÙ¹¾’qþÂ~³ž|y½Yøíz^~¡w’,Üøu>p(¦Æ~ßÄß§ý<ÿÞ.4,‚èh›hqsKýõrùóŌ¿2ªOë’h½ç £ŽI}‹HÆÑwÜu… ¢\¹réòïÆ9培rå íÛ· [ dØ,ÉU*Å\H°{o0Þ^ž‰þÝx…gìÈe¬�[b®Ê/S*áELõêÕ©T©Û¶ms"fŽ1zôh;þü«­SsûÃÑÏÞ�àÊÓ›õt�WYÇW¥b ~_3™ÙŸý̦­ � Õm5è}WÓDÛ¾übo=Ë÷+¶Ð±m]ºLLtµõ OÞuÓilÊ— `óê‰|4w›?@µÊ¥xå?}½†·—'k¾™¹ ÖðëÆ=\¹F—Ž�tíø÷|¥ÿ}¶'�ÚÕeѲÍìÞLå Åyâ‘;èvGÌ©xÏ ïBÑ?þÚsœÐ°zvmÌ€{ZÆM£òäÐ;)\(?»vçZh8ÝîhÈ€{ZR½J©¸÷(àÏúå¯2kÞj~Û¼�*K0òñîqçÄjݼÆòÞp5yù²,œõ4?üügÎ^¢R…â-éÓã6êÖ*—è=·þ4‰ù_®c÷¾`ömÅÝÝš$š®gØ�ŽäÏ—ôèsËfÕX4o$_,Ú€µ6îNG äcí’qÌÿrë7íåì¹Ë4¬W�îwþ}ºi‰â3²õãMO%"ϤöÊã yscÆc‚‚‚Xºt©c9’³mÛ6š6mJXXîîî+VŒ��®^½ÊåË—É—ïïѧ6mÚ°jÕ*6oÞw D§T¨PwwwöìÙãhŽ´š1cC‡�p¹\-­µb—cÌ›ñxÜ|t™iÎçkðÈ»¬]2.î—¬¤Ÿ°ðH|Šßûð›ltÛCŒ1ý�€ÖÚµñ–w¾xÿ�!qó‹fÏŽžÍëSqùè'7�fJbx¿—ð˜»[m°Ö6q:�HfÑHd î¿ÿ~ÂÂÂèß¿?'N¤D‰´oßž•+W&Ú¶Y³f¬ZµŠ 68^"!æÞÏ?ÿ¼Ó1’ÔªU+:vì˜`Ù÷ßÏСC£\.W¯øRr¥êÆǦÇIÆzkí×ñcÚ3€ñ ¤ˆHN§™Œsçα}ûvêÖ­ËÇœâÔÅŠÅ\©œøÈ™ÍËˋ˗/óæ›on5Æt:O|.—«!P:~‰Ü´i=zôp¹\®ÖÚooþlÉ%nÊ9â  ®Dcj_/Xk8LDÄ *‘ÉØ¹3æ �5JÕÜf×®]bî\ã4___\.ÀÖÚéNç‰/Ož<³�þ±�cÌô—¾fZkßt&UÆ)[º�+i¹)•ÈdT¨P€'N¤°eŒM›b¦Ç¨W¯^†eÊiÎ�;G›6mÂCCC¿q¹\YóØûuÛÖ¥ãõ[¹IîfŒñ–¿O;'C Ò‘aC:¦¼¡ˆäZú3%K–¤dÉ’,Y²„Õ«W'»íÊ•+ùâ‹/ðññ!00åùBCC ?yò䦰°°ÖÉ«¼DRÉ“‡˜‹eBˆ92:…§ˆˆäH‰LÁ{ï½G÷îÝiß¾=ƒ ¢uëÖ\¸3qòo¿ýƉ'X¼x1Ÿ}öÑÑÑL˜0�Â…S¾sInÍ=÷ܹsçÎ#aaawZko~?‘¬ÃÅ�fÖÚ0‡óˆˆ8F%2]»veÊ”)¼ð |øá‡|øá‡qëÚ¶m÷±1†‡~˜áÇ;3Ûùàƒ oc­½èt‘Tê \šXkÏ;FDÄI:œ� O<ñû÷ïgøðáÔ®];îÂwww*V¬È]wÝÅÆ�™>}zŽš<9#]»v-4<<¼�µV÷.“ìÄ ¸ÓZ{Èé ""NÓHd*•(Q‚wÞy'îñ™3gðóóÓmÿ�ÈÈÈk@kív§³ˆ¤A$ÐËZ»Ùé ""Y�Jä?T¤H§#dgc­µ©»ä]$ë¯ýVDäo:œ�Œk×®Q®\¹Tßõeúôéx{{³xñâ N–½é±dGÚoEDR‰L†µ–ÇsöìÙTm_ªT)ÂÃÃÙ¼YG»DDD$gS‰LG+V¬b¦¯ÉÉtNä ._¾Ìo¼@dd$[¶laìØ±7}ÎÕ«WÙ²e kÖ¬ F�ž3ŠŒý <ÜådÉ áá‘ñFÞl»l&Þ~›S>%‰/:ÚârEÅ>¼æd‘̦yƒÐÐPÞxã ®\¹·lëÖ­lݺ5UÏoÕª={ǫ̈x¹ÙÉØŽŸÐô|9Ñ _ד7Û.›Ñ~›Ã�<BTTÜѧœ²ßФŠJä 8}ú4K–,aÆŒ,Y²„R¥J%;ºèííMùòåiܸ1½{÷ÆÍMg d€àØŽŸs2‡d�¾®Á7Û.›Ñ~›ÃÝðuU‰”\E%2 >>>ôèу;Š+ÄŒ3œŽ•Û�ý`ç_G�Ì!dç_ æ�Ï)“П¯>?É!vîJðóH?œ$WÑ�Y2¼½½yÿý÷iÕª•ÓQr=kí%`#À/¿íáBÈU‡IzûnYܬXå`”tc­�Vlßy˜#ÇR7Óƒdß-ßÿá2§rˆ8A%2]ºt¡ÿþNÇ�_¸\Q|óýF§³H::sö?ÿ²+öáÆv;Ìoc?ørÑ'sH:»|%”å?þûp�µöO'óˆd6ÎNƒØ+°÷ìÙÃÁƒ  B… Ô¬Y“nݺé\ÈŒ÷%0àÕ)_ro¯xzº;IÒëS¾Œ…ëNfÉ‹€÷÷Iï|ËCÛq‹�—Ó™$Lzç[®\ ‹}˜Óö[‘©D¦ÂÑ£G9r$óçÏÇZ›ä65kÖdÊ”)´oß>“ÓåÖÚÝÆ˜/€žûœäÃOVòèà §cÉ¿tððiÞŸ¹<öáyàÆIwÖÚƘYÀà§.ðÖûßóâSw9Kþ¥à“˜2í»Ø‡W�wŒ#â•È\¼x‘V­ZqàÀÜÝÝiÖ¬eÊ”! €��‚ƒƒY³f ;vì S§N¬^½šæÍ›;;'{èxüwügth]‡Š·s:“üC.W>>�ˆˆ¸¹?_µÖ^t2Sô|ÆOù’ÎAõ©]£¬Ó™ä²Öòè33¸»hеVWfK®£ã¯)xì±Ç8pà]ºtáСCüüóÏÌ™3‡)S¦0sæL–.]ʉ'xñÅ‰ŠŠ¢oß¾\»¦ùf3еv0àü…+tî3��‹ºÈ&»öÜL~üyGìÃÝÀ4ãdkíq`"ÀÕkáté;‘SgrbWÎÆLø<þyÙÁÀdãˆ8F%2.—‹/¾ø‚Ò¥K3þ|J•*•äv¾¾¾¼úê«ôêÕ‹cÇŽéÞÙï9àg€Ýû‚iw×8ÍÁ—͸\Q {îÿøß¬±‹.]­µáÉ<-»,8rì,mº¾Äþƒ§Ž$ia­eÌ„Ï79îôÇP »µö²ƒ±D£™Œ;vF³f͸å–[RܾmÛ¶©¾»�ü3ÖÚHànà0ÀæmhÐúùøW÷JvúÌEÚÝ5Ži3âfC‰ú\eα®O÷ÓØðçîc4lûÿúW¾X´�VÍkеc:¶«KÙR…ñòòt:n®m9u&„µëÿâÛ%›ønÙ–Ï_=BÌ×m»CqýjíÛ��€>ß|¿‘EK7ѼIU:Ò±m]*”/ª©€`­åôÙKü²a7_¿‘ÅË·pî|‚£Õ'�»¬µëŠ(’e˜›MY“)onÌX`LPPK—fÍ�ˆ6mÚ°jÕ*†ÎäÉ““•ŒŽŽæÃ?dèС)R„}ûö‘?~Òþ­I“&lذ`¨µvº£a2˜1ÆóËøàÖ$ÖS¨`>òçó!:Ú¹ý=7‰ŠŠæäé�øs?Æw x˜t}d.×2Æt^ª&µ>> È—¹¡r±èè˜ý622Éý6œ˜ ¿^µÖžÏÜd"Y“F"S0cÆ êÕ«Ç»ï¾Ëܹs¹óÎ;Mñ³dÉŽ9‚1†Y³f9^ só—мësH> êÄ[ÏÙs—9{Nç¾;ì$°xÍZ«skíׯ˜EÀÀC@ `b×_¾Êå+¡NÅK–»»;iÿwªP6q–ë7:°Öv:ŒHV¢™‚[o½•o¿ý–Ç{Œ�;w2{öì$·+Y²$“&M¢S§N™œPbYk#€w�w�1e�.@] Äõ~Äû-*Œ˜©ON{��¡†‚o`­�>>4Æ” f¿mÀßû­?Yp¿Í“'OÑ>}úx÷îÝ;ÕωŒŒ¤k×®³oDfT¶!œ˜}68,~¹þ5‘¨D¦Âí·ßÎöíÛ™?>ëÖ­cÿþý9r„bÅŠQ¹reêÔ©ÃÀ�ñññq:ª\w}Ä`ªÓ9DÒÂZLÌ{²ü]{òçÏÿSåÊ•[vìØ1ÕωwÑa[kí_LD2�Jd*¹¹¹Ñ¯_?úõëçtÇiŠI3•HI3ÎŽçøñã=zô_¿NÕªUñ÷÷O‡D""""Y“Jd<³fÍâ?ÿùÏ¿~�E‹ѹsçtH$"""’5©DÆãççGÙ²eSµ­1___òåËÇ-·ÜÂÏ?ÿLDDD'ÉT"ã6lÆ KÓs~ùå† W kÔ¨AµjÕ2"žˆˆˆH–¡ kþ¡S§Nqÿý÷Ó¼ys¶nÝŠ¯¯/S¦LaÛ¶mT¨PÁéx""""J#‘iär¹˜:u*cÆŒáÒ¥Kc¸ï¾û˜8q"ÅŠs:žˆˆˆH¦P‰LƒÕ«W3|øpvìØ@ݺu™:u*·Ýv›ÃÉDDDD2—g§ÂñãÇéÛ·/­[·fÇŽ(P€iÓ¦±iÓ&HÉ•4™ŒˆˆÞ|óM^yå®\¹‚››ƒfüøñ.\Øéx""""ŽQ‰¼‰åË—3bÄvïÞ @£F�˜:u* 6t8™ˆˆˆˆót8û‡¦G�±{÷nŠ)ÂŒ3X¿~½ ¤ˆˆˆÈu‰Œç›o¾¡oß¾„††âîîÎСC7nœna("""r�DƳcÇBCC�˜»×¬\¹’jÕªáëë‹——nnncRü÷Ýwß9ü™ˆˆˆˆd,�DÞÄùóç9þ¼Ó1DDDD²$�DÆ3jÔ(¬µÿú_çÎ��þTDDDD2”J¤ˆˆˆˆ¤™J¤ˆˆˆˆ¤™J¤ˆˆˆˆ¤™J¤ˆˆˆˆ¤™J¤ˆˆˆˆ¤™J¤ˆˆˆˆ¤™J¤ˆˆˆˆ¤™J¤ˆˆˆˆ¤™J¤ˆˆˆˆ¤Y–¸íáéÓ§ùúë¯�Ž‘£\¸pÁé"""’ƒe‰¹uëVîºë.§cˆˆˆˆH*9]"¯§Î�Ó]s:€ˆˆˆä<Ž–HkíëÀëNf‘´Ó…5""""’f*‘""""’f*‘""""’f*‘""""’fN_�-""Y�1¦0Pêfë}||òþ‹—¯jŒñ¾ÉºkíŸÿâµE$“¨DŠˆHRB�ñ@§$W††þ›×þ*©…ƘËÖÚ€J¤H6 ÃÙ""’ˆµö*ÐÕÓÓóc??¿ˆ 6`­MðïùçŸOÓkz{{'z�°°0zöìéååuÖZ{›µveÆ|F"’ÞT"ED$IÖZWDDÄÀ+W®LhÑ¢…kÑ¢Eéúú.\ U«VáßÿýáðððúÖÚ?Òõ D$C©DŠˆH²\.טˆˆˆ‡ïºë.×ûï¿oÓã5>LÆ Ãÿý÷­¡¡¡ ­µGÓãuE$ó¨DŠˆHЬµ3£¢¢ºŽ1"|äÈ‘QÖþó.¹uëVÃ�;¶844´•µ6$£ŠH&1ÿæ�ˆˆä.ƘÀúè#† õ´µöí Ž)"L‡³ED$M¬µÃÂÂ7nÜøG£F�ÂŽ;–âsÆŽ=dÈ�Ȩ¨¨>*�"9ƒF"EDä1Æx{yy}îçç×aåÊ•^µjÕJ´�ËåbÈ�!®¹sç†EFFÞa­]ã@TÉ*‘""ò�cÜ<<<ÞÍ“'Ï�E‹y¶iÓ&nÝ•+WèÞ½{ÄÚµkÏ…‡‡·µÖîr0ªˆ¤3ΑÌZùXhh訠  ¨9sæpòäIš6m¾nݺ}ááá�*�"9�F"ED$]cú¸»»Ï~òÉ'Ý?ýôÓˆsçÎýÞÕZ{Ùél"’þT"ED$ÝcZyxx,2Æ|9ÐZét&É*‘""Yœ1æS MŠfn@t&½— l­]–Iï'"×y8@DDRT(êtˆ,ìkcLwI‘Ì¥)"’M 0€=z8#K7n[¶lñFER$Ó©DŠˆdÕ«W§{÷îNÇÈRn¿ývÚµk¿Hv³Ö.w:—Hn )~DD$Û*P +W®¤~ýúÞÀ7ƘÇÉT"ED$[‹-’��� ")’iT"ED$Û+P +V¬¸±H¶w8–Hަ)""9BEò[I‘Œ£)""9Fì¡í €Š¤H†R‰‘Åßߟ+VÄ/’ßcÚ9K$ÇQ‰‘ç†"éC̈¤Š¤H:R‰‘IER$c©DŠˆHŽ[$6lɶÇÉT"ED$Gó÷÷gùòåñ‹ä"I‘O%RDDr¼$F$cÚ8K$[S‰‘\ÁÏÏ�+VШQ#ˆ)’ß©HŠüs*‘""’køùù±|ùrI‘t )""¹ÊMŠdY‡c‰d;*‘""’ëøùù±xñâØ‡>@ãˆdK*‘""¹ÄÒ¥KñööN—C‡uúÓù×òåËçt‘lÍÃé""’9¢¢¢ÿׯãîŸ_:$‘ìL%RD$—hÚ´)«V­J°Ìƒ··7Ë—/gôèÑT¬X‘>}úPµjU *„‡‡'Nœ`Ïž=Ì�;—àà`-ZDûöíú,D$«P‰É% ,H«V­-ÿå—_x饗èÕ«óçÏÇÍ-é3�^zé%:wîLÏž=Ù´i•+WÎàÄ"’•éœH‘\îÕW_%**Š·Þzë¦ÀÍÍ�×^{�Ë—/3eÊ”LL("Y‘J¤ˆH.·qãF .L‰%RܶJ•*lÞ¼9£c‰H§)"’Ëùøøpþüy.]º”â¶û÷ïÀËË+£c‰H§)"’Ë5kÖŒèèhFމµö¦Û¹\.F�;Q·ˆäbº°FD$—1b_~ù%Ó§Ogݺu 0€Zµj€µ–3gΰ}ûvf͚Ů]»ÈŸ??>ø Ó±EÄa*‘""¹\Ó¦M™1c?ü0üñÏ=÷ÜM·ÍŸ??óæÍ£zõꙘPD²"Î À¡C‡9r$µkׯ××7n]�¨W¯/¿ü2GŽáÎ;ït0©ˆd‰˜0a&LàÂ… ¸»»'(”""±T"ED$I p:‚d0cLàN  P(Üâh¨Üå2|ýßNà;kí_ÎFJ=•HI 88˜}ûöqþüy4h@©R¥œŽ$éÈã<Ü ”q8Ž@ÍxO6Æì>Þ´Ö^u(Sª¨DŠˆQQQ|ôÑGŒ3†ààà¸å³gϦÿþq�Lpp0³gϦpáÂND•Èã ^ Þ¸ÞÍÍP´ˆ?^^$3Ó“¤£K—¯q!$QO¬Œ3ÆŒfXk£2;[j¨DŠˆ `Þ¼y)nW¢D fΜÉܹsyüñÇ3!™¤cL`P;vY¾¼Þµ©Cç @Ú´¬IÉâqw×õ¶™-<<’cÁçYùÓv¾[¶…•«· P ˜ô7Æô´Öžv6ibÚ[DDr¹Y³f1oÞ<|}}yíµ×øã�?xíµ×’ܶ}ûö¬Zµ*3#Ê¿`Œiläz�ôñÎÃs#ºqä�÷YøñÓ ì׊2¥ «@:ÄËË“ å‹òðÀö,š7’ƒ¿Ocèððp�ݤ9°ÑS×Á˜IÒ#"’Ë-X°€… òüóÏS³fMòçÏŸä¶eË–àСC™OþcL=`P¯vyþ\ÿ&ÇÞKÿ¼Î†“$ ðç½×dÛÏ“¨T¡xìâ2ÀJcÌ­FKD%RD$—Û¼y3~~~´k×.ÅmÝÜb~m$w{DÉŒ1Å€o¹~µuŸ·±né8Ê•)âl0I•UKóÛÊñµ©»¨°È“eæÜR‰Éåüýý‰ŒŒLU1üóÏ?¨U«VFÇ’Ác€/€R�ƒùôÃøxçq6˜¤‰¿_^¾ýt$MVŽ]TøØÁH ¨DŠˆär�5âÚµkÌŸ??Ùí¬µLœ8€ÀÀÀ̈&ÿ\o @ÕJ%™ûÁbz¥d7yòxðåìg(Q,nÞÖîÆ˜Û�ÌK%RD$—6l^^^ <˜Ñ£G³{÷n¢¢þžQ$$$„•+WÒ¦MV­ZEùòåyðÁL,É1Æx3E ŸL†o~É¿U,ÀŸÞz8þ¢¤¯|ËdF絈ˆdmƘ¥@Ðk¯½ÆóÏ?Ÿ!ï1kÖ,Lttt‚åÞÞÞ„……Å=Η/K–,¡yóæ’#3………áãW®êYk·9™'½cîæÜݵ f=åp"I/­»¾Äêµ;c¶·Ö®t2�F"ED„�òÇp÷Ýw'8ì[ =<<¸ÿþûÙ³gOŽ(�9\ÏØþóLÏä¶“læ¹]ã?ìáTŽXšl\DD¨^½: , ,,Œƒ²ÿ~¢££©\¹2*TÀÓÓÓ鈒cŒ7ÐàÖrE©S³¬Ã‰$=µ»½6þ~y ¹x  ð¨“yT"ED$oooªU«FµjÕœŽ"i× È Ð¥£.~Êi<=ÝéTŸ9Ÿ¯(eŒ©n­ýÓ©<:œ-"’ËMž<™áǧjÛ“'OÒ±cG¦M›–Á©äŠzlP·‚“9$ƒÔª^&þCG‡šU"EDr¹åË—§ê¾ÙEŠaåÊ•Ì�;7ƒSÉ?T"öƒ’Å :™C2H©…â?,q³í2ƒJ¤ˆˆ¤Ú�ˆŽŽ&$$Äé(’´bqõw2‡d�þ8(v³í2ƒÎ‰É…¶lÙÂ¥K—¸pá‘‘‘¬^½ú¦ÛGGGóçŸòé§Ÿb­�»‡¶d9qW?inñœÉË+ÁnŽ^í¦)"’ =üðÃlÚ´)Á²Ö­[§úùO>ùdzG‘lF‡³EDr¡Ï?ÿœ &P¿~ý¸e^^^7ýçããC¥J•èÒ¥ ?ýô:tp0½ˆd‰É…Ê—/ÏÈ‘#9r$íÚµcÛ¶mœ={ÖÑL‡fÆ ìÛ·�3gÎpÇwо}{G39ÉSÜZ{Âé"7£‘H‘\î•W^¡R¥J޽HHǧR¥JÜsÏ=Œ5Š·Þz‹�7&Ø®wïÞx{{³r¥£wzËLŸcJ:BäfT"EDr¹R¥J±fÍGÞÛZKß¾}™:u*‘‘‘øûûS²dÒ½©_¿~„‡‡3{öìLNé //¯ŠÞÞÞ?c|�Î"’•H‘\®V­ZøøøpüøñLï™3g²téRJ–,ɲe˸páï¿ÿ~’Û6kÖ € 6dfDǸ»»»{zzVòöö^dŒÑ='%ËQ‰\.—#÷Æ^µjsæÌIñb�€€ÜÝÝ ÎŒhYÂ[o½åV¬X±Fyòä™åt‘©DŠˆär±#|[¶lÉô÷Þ¹s'Mš4IqÛk×®a­%_¾|+Ë(X° «V­òΗ/_OOOÏñNç‰O%RD$—{íµ×ðõõeäÈ‘\½z5Sß»B…Ùù–RªIDAT˜û;Ÿ8‘òEÈ[·n%::šºuëft¬,¥\¹r,_¾ÜËÝÝýcÌCN牥)"’ËÕ®]›uëÖaŒ¡fÍšLŸ>�­[·rîÜ9BBB’üš.ïݸqc^|ñE¢££oº]XXXÜç-Z´H—÷ÎNùꫯ<=<<¦cît:�hžH‘\oôèÑ|ÿý÷=z”óçÏ3tèП3xð`f̘ñ¯ßûÑGeöìÙÌŸ?Ÿ]»v1xð`Ο?@pp0ß}÷Û·ogêÔ©œ8q‚êÕ«gÈÝròäÉóº��ÏÅtá!22Ò/þãN�:1}út�Gyä cLskí¦›=7¾+WÃhÞéÿۻ󰪪ý�ão&qQ‡+ â¬(9æ<5¨™¦¦©•C™9$™¦iZYæ¸#�4ö)†ÊÅZ(DŠˆX¹Ÿþ™Ã‡[äØ...lÙ²…=zÂØ±cMmË—/gùòå¦ç~~~lذ''§"¯càÀ��*V¬XäãþU~~~¹ž6Œ¨¨(‡¹sçî²±± 0 #¢°1²²² 9E§v x´y-Ž�8ÏúÍ?òñš]¬\ò Ãu,Òšß™·™ åË0âEëÝ(ÞZ(DŠˆX¹µkך}yºtéÒEvü5jpâÄ Ö­[ÇÊ•+9{ö,±±±†�»»;~~~ôíÛ—Ñ£GÛ ò±cÇ>4s-gÍše{þüy—/¿ürÏí yí^Þ×¹]Þ÷4©iT©÷ §1t`lllЬ¾Õ_|Ï+C ­�æDŠˆX9¼½½Íz¸»»i ¶¶¶ 4ˆàà`¢££¹uë×®]#>>žýû÷h‘-ˆT«W¯vhÙ²¥§³³óN³OÍ:9:0°okn&Ü"æò Óëaçbéýü<ªÖ‰_Ó×5iI¿æþ㻽'hýÄtÜ}†R¥Þ+<Ùo�ž#â|mž|‹È¨+,úh;þm'ñò¸�ØøÍ~º=;‡Ð°hºôš�»ÏP:Lfã7ûs�½ì“¼<îc.F_£kïw([í…\}vì>F‡§Þ¦¢ßp:Lfþòo1 #×™™YÌ[ö-�Û½Ž[õ!øŒaþòoMíÉ)iŒ™¼šš�Œ¥ZÃW:æ#“MíYYÙ¼5g#5‹«÷‹Ôjú£__EZZgÏÅÒkð‡xÕ~™ 5‡Ñê±iløú§\5|¶~/�>>ÝÔ´q_®öȨ+ø·�DÜÕ¦Î^�G­—èýü<._¹ÉàW–RµþHÓ÷iùÊ�÷öƒ½Ït&RDD8ÎÎÎ8;;[ºŒ–½½=[·nulÑ¢E½ˆˆˆ/mllz†Qðʤüư³ÃÎÎ÷r9g•ÏEÆÑ¤Ýë4 ðeÎ[Ïq+9•¹K¶±oÿiŽÏÅÁÁލ‹WéÞÿ}º´oȲ¹ÃHLJæÿ¾;†KIGœ�K0æå'øñ?ÿ¥K‡†ôêÖŒ åsn¶-‰»�q6â2CvàÙÞ­˜·ô[ú[DéRÎ<Ù¥11—o°ç‡“+VíÄ·†'ƒûµÍõóxÐ(DŠˆ+V¬`Ô¨QÀím`ÜÝñòò"33“ØØXnÞ¼É?ü@‹-øâ‹/0`€YãGEEÑ«W¯"©µK—.üûßÿ.’±þêÖ­ËÖ­[KtîÜùC`GAý*yºñˆ ªV)Oíš•èÚ¡vv9K#23³¸OŸ§rß9ÈÁÁŽÆ «u� eÙõÍtFNø„¦�¦Ð¡M=ÞŸ1Ðtɹ0å\sßmÈ¿�7ßî8Ìõ¿šÂš½½rínd:~@£¹^hT[[Sû¹È8*W*—ïñ#ÎÇ‘‘‘E‡§ÞÎÓvåjÎO¯ëJJj:ïÎÿšeŸì`Ä‹�™ùF?ʔΙ^±mÝdF¿¾Š>/.ÀÏÇ‹™oô¥…‘n×韻Îf¾¹>Ç•½òÖ¹zéH&Lûœ—Ç}ÌŒ9›˜ø4#‡v-ÒÅOEE!RDÄÊ=z”ñãÇS¢D f̘Á�!CðòòÊÕ'<<œ+V°páBFŒAÓ¦Mñõ½·àP¢D ªU«V$õzxxÉ8'ëÖ­Ë,Q¢D|ZZÚÕ‚út,À´:û�ìíí(]Ê™˜Ë×ó´Å\¾Níš•MÏ›5ñåð÷°c÷1¦Î^Ï£�OgÏÖ·hÓ²N¡u&§äžÛw)æ:¶¶6”.õÛü×ü²Ò�€›»¾¸« dg¦vײ.ܺ•†³S‰<ã”)]’Ò¥œ¹vnu�gølll˜8º/¿Ð™~úofÍý*gžæî÷qp°£’§_>‘§/0óƒ/0|1£¯1iÌS¦�{Ýt¹ ævÝ¿?« ˜Büï¹–uaÕÒ‘¼9¡7snaÔ¤U„†E³ôƒ¡ùÖkIZ�-"bå–.]JZZ+V¬`êÔ©y$€¯¯/ ,`æÌ™$%%ñù矛uŒZµjqþüù"yÕGÿ[˜={¶”š––ÖH.ô ¨]³²éïqW8á*µý*çéÿx'~Ú1ײ%ùjÛ°³Í‰YùãÔ/æz~èè9ªTr/ô’­OuOìííøåpîúî<¿rý|s~w�žˆÌwœZ5+‘ôk ûöŸ¾ëñ çÒõëc{²jéHBNFqúÌ¥\í êþƒÍŸM౎�X¿9guvm¿J9u ÿC�á·ë¬Tèqï¨áíÁ'‹GðÒó�Lã?h"ED¬Ü¡C‡°³³ã¹çž+´ï Aƒ€œ³—byŸ}öo¿ývfzzú“†a„þ•±&ŒîNdÔ6›3'6;Û`ÁòÿÅÞÞŽWoÏQ|xVVVÖ Ã0~ø«ãõíÙ’7'DÑoÈÜ\K‘z;H­^:’š>9gøöþtšÀ7?£jewœ�Jyá ukU1­$xa@{}ô/þÑ`$uü*³ë›é¦¶Ö-jSÞwÜËwƒ¶­ê0aT�{ªïÝi¸}�ú­&PÉÓ�+ñ‰T­ìΦÕ�¦3™v}<†g‡.¤çÀ¹¸”t$9%�´ãÓe¯â^®4›V2hÄR:==‹²eJ’œ’À¹#ËpsuaâôÏ ;K�j$&%sùÊM¦M|/7=GóÎS)çVŠŠåËp1úNN|¼à·-†þgÑËô²�ªõGRÉÓ�ظø7ðfõÒÂo'z+9�νfãRÒñö{o’••͆Uãîé{t¿)DŠˆX¹ L\\\¡ó �?@Æ Í>Ža8p€:uêP¦LΙ•””ÒÒÒÌÇÁÁ³�ÿwrìØ1zö왑••5Å0ŒMwë[Êʼnï·Í †wásIßy³?/=߉ƒGÏQÊʼnGü}rmI3nd7Ú´¬CعX222©^­"­[Ôεècá»/Ðã±¢.æ½ >u|/õkCÈÉ(jxW¤Å#~¹.e¿ô|'ï”ÿ�ƒÊ–)ÉÖ/^çø©(N†^¤jewiì“gîcÓÆ>œúyÿ9x– —âñ¨X–v�Ö5µwj×€3sèè9"/\Á­¬ ­[Ô¦âíÅ<¿|÷{:MÜ•J•r" Q ªW«h;üðŽ�$))OWÚ·®—«†*•Üùaû,Ž�$,<†š>^4nP=×ç¬Vµ<ßo›‘kÞ$ä,~ºpb?ãfb2ÜËЦemÓ\Ï�B¤ˆˆ•kÞ¼9ÁÁÁŒ7ŽuëÖ¸ 4%%…qãrΈ´nÝÚìãÌŸ?ŸI“&Q®\9¢££qrrbôèѬ^½Ú¬q¬}uö¥K—èÚµkZFFÆÊìììù…õ·³³¥}ëz…u3©VµÕªV(°=À¿FžÕÇÔ±mý|_ÏÎ6ðoà�ï|Û«W«h liX¯Z¡—…��JäÚNè�Ê”v.°Æ’ÎŽ<ѹq¾m�3W±°@nggKÓÆ>4-` ¤’ÎŽþL¼<ÜèÝ£ù]ÇP(DŠˆX¹7Þxƒ 6°aÃNž<ÉàÁƒ©W¯^®-~<Èš5kˆŽŽ¦uëÖ 2¤ð�ÿ D‰œ³5™™™¦½ù-[¶Ì´µµÍ;‰Ï‚llll6nÜhß­[7Ók têÔ)511qWffæX –'¢)"bí\]]Ù¸q#}úôáäÉ“Lž<¹À¾¬[·;;ó7@;v,­[·ÆÛÛ›’%K0wî\¦OŸ^È;s+ŽÛ!¦¦¦Ž íx9::~�‘‘aº__zz:Ý»wO»pá©´´´~æÞæP¤¨)DŠˆÍ›7çìÙ³,]º”/¿ü’sçÎqýzÎêÒÊ•+ãççÇðáÃ0`ÀŸÚôØ0 fÏžM¯^½(Wî· –ÝÝÝqww/²Ïñ2 㘥‹ø=—Œ;_†ÁóÏ?ŸqèСØÔÔÔÇ ÃHµdmæz²Kc¾ šdÚ°[þ"ED'''&MšÄ¤I“¸yóf‘-b eÆŒ9r„-[¶˜^ß»w/¡¡¡ >{{ý—T�É“'goÙ²å×´´´Ž†a\³t=溗¹ŽòðÑ>‘""’/WW×"[}gK ?¿Ü÷þüóÏ9r$éééù½M€åË—³páÂŒ´´´®†aä¿‹¶ˆèÏ>)vnn9SûΜ9cáJ.[·n%(((+++«·a‡,]�Èï)DŠˆ�³p#((ˆ�;wšn1èàà€··7ÞÞÞôéÓ‡§Ÿ~úO͉¬Y³&%K–dÛ¶môìÙ“fÍšáââ©S§X¶l™iõvaªU«F¯^½Ì®áa´fÍ€‘†al·p)"y(DŠˆ»víbèС\ºt)O[LL û÷ïgݺuÔ­[—õë×›½ÙxÙ²e™6mS§NeÛ¶mlÛ¶-WûÝV„ÿQ—.]¬"D¦¥¥¥ÛÙÙ½›™™ù‰¥kÉ�B¤ˆˆ• ¥OŸ>$&&R®\9z÷îMíÚµñòò"##ƒ˜˜:ÄöíÛ9}ú4Ý»wçÀ�xzzšuœ)S¦ÐªU+6lØÀ… ¸~ý:áááÄÇÇÓ´iSlmïmš~�:uþÌÇ|èdee­4 ãmK×!R…H+÷î»ï’˜˜È“O>É×_�££c¾ý®^½J§N�8qâK–,á½÷Þ3ûXíÚµ£]»v¦çK–,áµ×^#88Ø´w¤äP€”�Vg‹ˆX¹°zõê$@… øç?ÿ™ë=Uß¾}ïù ¤ˆU'fJ¼óErrš%ë�brýƯ¿šXP¿ûA kDD¬\·nݘ;w.S¦L!$$„Áƒããデ‡ÉÉÉ\¹r…��Ö®]Ë÷ßÏ’%K¨[·.7oÞÌ3–£££.M[VÌ�/¢c¯Ó¸auKÖ"ÅàRL®»^ÆÔï~Pˆ±rS§Neýúõdee±iÓ&6mÚT`_Æ�Ϙ1còm5jË–-+®R¥p¦Pu±hæ­Êƒåbôƒ"u9[DÄÊþþþüôÓOT©R…Í›7³}ûvjÔ¨aé²¥†a¼|-‰æ]¦þ~{ylù×AÚuŸÁ¯·Rï¼´À0ŒÕ–¬é÷"EDwwwV®\É�?þH£F�8tèþþþLœ8‘ŒŒ &L˜@hh(½{÷¶t©bžáÀ^€kדèÒû¦ÌZGBb²…Ë’»¹r5�Q“VÑûùy¿�[�I,+…H1iÕªsæÌÁÉÉÉôZçÎ�™6m¥J•²`eòg†‘ tÖdffñþ¢-øŒaÑGÿâÊUóVæKñŠŽ½Î;ó6ã0–«vþþö"àÃ0²-X^Ú'RDDˆ‰‰aüøñlܸ€:püøqvìØA­Zµ˜?>ƒ ²p•b.Ã0Ò�!666!Àl Tüµ$ßüŒ Ó?§y@MÚ·®G%O7<=\)åâTȈRT“R¸w“K1ר½ïGB"ÿØå:0Þ0ŒÏ,P^á ÃÐC=ôÐã~;cΜ9FqÈÌÌ4.\h”.]Ú WWWcÍš5†aÆåË—�Þ½{äì;htìØÑ8sæL±Ôq¿¥¤¤˜>ào<?ëâ~Àr ãwŸ]�ï‘ |¸Yúwæn]αrƒ&00�¤¤$zôèÁ©S§xá…€œ»ÙlÞ¼™�7R¾|yöìÙCÆ Y½ú�™Û/f0 #Î0ŒQ€/9óë~"çÌby™À` PÃ0ŒI†aܰpMw¥ËÙ""VîêÕ«¸¹¹±xñbœoŸ~ýúÑ¡CF�ͦM›Ø¿?C‡½Ï•JQ1 # ˜̳±±)ON¨ô<7KÖfE r.W_¾ý8kÆMË–d…H+×­[7‚‚‚ðôô¼k¿ *°qãFúõëÇáÇïSuRÜ Ãˆâ-]‡<|"ED¬Ü¸qãÌêÿÌ3ÏðÌ3ÏS5"ò°ÐœH1›B¤ˆˆ9sæ žžž´oß>ßöíÛ·³hÑ""#ól5ÀúõëñôôdüøñÅX¥ˆ< t9[DÄŠdffGùòåómÿôÓOùꫯðõõ¥zõêyÚ“““‰‹‹#11±¸K‘œÎDŠˆˆˆˆÙ"EDDDÄl ‘""""b6…H1›B¤ˆˆˆˆ˜M«³ED¬Phh(®®®y^ONN ÿþØÛçý/"==½Øk‘‡ƒB¤ˆˆÊÎÎ&!!¡Àö[·nÝÇjDäa¤)"bEªV­Êúõëÿò8>>>EP�ˆ<Ì"ED¬H™2eèß¿¿¥Ë‘¿-¬³)DŠˆˆˆˆÙ"EDDDÄl ‘""""b6…H1›B¤ˆˆˆˆ˜M!RDDDD̦)""""fSˆ³)DŠˆˆˆˆÙ"EDDDÄl ‘""""b6…H1›B¤ˆˆˆˆ˜ÍÞÒˆˆÈ½ùôÓO ¶tÙÙÙ–.A䡦)"ò� #,,ÌÒeˆˆ ‘""ƒÕ@°¥‹ø›‹±t"Ã0,]ƒˆˆˆˆ image/svg+xml Notebook Preprocessors Exporter Exportedfile Postprocessors ipython-ipyparallel-14e3c43/docs/source/reference/figs/notebook_components.png000066400000000000000000000743761520071063500300010ustar00rootroot00000000000000‰PNG  IHDRye—õþÜsBIT|dˆ pHYs N NwŒ#tEXtSoftwarewww.inkscape.org›î< IDATxœìÝwx“å×ÀñïIÚ2ZöÞ{#nADQEÅ­¨¸ÐŸ¸ÐWÅ-âª[œu/TPAÅ�€¢(*Š"ÈÞ{:’œ÷�ûIÚÒZ:ÒÖó¹|®¤Ï¼’“{œ[TcŒ1ÆS¾øb]cŒ1ÆSô,È3ÆcŒ)‡,È3ÆcŒ)‡,È3ÆcŒ)‡,È3ÆcŒ)‡,È3ÆcŒ)‡,È3ÆcŒ)‡,È3ÆcŒ)‡,È3ÆcŒ)‡,È3ÆcŒ)‡,È3ÆcŒ)‡,È3ÆcŒ)‡,È3ÆcŒ)‡,È3ÆcŒ)‡,È3ÆcŒ)‡,È3ÆcŒ)‡,È3ÆcŒ)‡,È3ÆcŒ)‡,È3ÆcŒ)‡,È3ÆcŒ)‡,È3ÆcŒ)‡,È3ÆcŒ)‡,È3ÆcŒ)‡,È3ÆcŒ)‡,È3ÆcŒ)‡,È3ÆcŒ)‡,È3ÆcŒ)‡,È3ÆcŒ)‡,È3ÆcŒ)‡,È3ÆcŒ)‡,È3Æ”z"/"­£¬ï)"W‹H×X”ËcJ3 òŒ1eÁ Ài^!"7Ó€g€½¿�1Æx,È3Æ”=€Tu€ˆ4&­p�ÞÝ"R1vE4ƘÒÅ‚ "“€;�žduà’"ÜN„lLigyòŒ1eÁK@U¹]Dªeß "]€§�‡TuSLJgÊ UýMUOSÕÚ¸¾¦-€DU­­ªgX€gÊ«É3Æ…º"’ߌÿ»£õwÊND·e[5{?p�ˆlvµ€ª@:ð�ˆ$؈GSTTu°4Öå0fY�gŒ) ƒ½%?æìcŸ]¸Ù-ö´j�¿—g{~�›oÔcþólà…1¦PDd!.Øš�ÏC6ªê[ÅX$c LDæàR¨ä×UmY\å1¦(XMž1¦(ÌVÕ'b]c )—Bå_\Âíx@òØw}IʘýeAž1¦L‘8àràd %𡪎ô¶ ªúi ‹hʶ7€¡¸ù–›àfjyWUÅ´TÆ‚�®5Æ”z"â&cpi-ã]„µÞ‘øÏ”ªš¬ª­�®À—¸€o¡ˆü$"׋HƒØ–И‚³ ÏSX7‘{~Ú¢v>Ð 8ÓKmñÕÛg5€ÖÅ\SΩê,oz¼&À±À\Þ¼•"òµˆ\&"ÕcZHcòÉškMÌxùÍNÚà’Ù6*Ç´PåÓ.` °—Tx‚ªÎ)Âó?†KûkžsOÝ€éª:.�í»½Ç*EuAi :“uÙùMD:Y÷çRàsàU íí âæ]ÿ[à[¹7•ÙyÀÀy[U/�Uù¼šÅ�À!dÝŸÕÉ»¡Ù?™À:Üý¹˜|SVR5Y�gJ”—Èv07MPDåʉZ¹R¢}@±]»Su×®ÔÙVÝëóù–z#\-#s½n:í%ÞA¸©¨ææ""R×Lw){¤y©X±‚&UM²û³ˆe¤g°}ÛŽ¶ÙVÝ*"DäàUÝ3mN,„€4o Il$n‘ÁÕj_…ûá¹ããã©V£jI©Ü dضu{ël™Hn‘í"ò 0j_9?cÍR¨˜áõ•*"wªj­Ê•µwÏã¤oŸÜåpêÕm@båÄX³ÜJݕʺõkøcî¯|ùͧ|óÝ—šºk§ˆÈfU½xv™z)T>RÕE[ê×è |¤Ï÷ájÂ5,¯¿¨êÉ…¸Æù"2JU›%$Äk·žGHŸަ{¯®4lÜ€ªÕ¬¯¸¤íNcýÚ Ìùm.ßLþŽo¾˜¦›7mIóFm�VÕí%].9W{wP÷cc®{´’¬m‘¾ÀCÀA>Ÿ�úL¿}èÑûH4ªG�šÕq1 )j™™¬_·‘E 3åóoùò³otõÊ5""AU}¸[U£åõŒ9 òL±‘:¸Æž‰•õÊËn�+.¹ŽÊ•,¨‹•´´Ý¼üƳ<û⣺3u§?§íÏ•ä)ðW>Y¦ª×ïÇu®€ ®™/Þ[þú¨êêý8oe\ðxn||œ^tÅ ¹î–¡Ô¨iÝ®b% òÁ[óÈ}OêúµDD¨êɪº ¸¯íu#98hì>Þ¦¨jfq—a�òøqÁÝ0aàÙ¸ùÎëiܬQIÃìaò„¯}W².þw©ˆÈFU=]U§Çº\{² Ï+9@D>UÕ¦'w £ï~’ÚµêĺXƳyË&n¾ã¾øz""²Úû"-Pß:/ÈkŒkÊÊ�¿Uµ{� ë®Õ¸èÔ–àÔ×T5°çk L:ðÐóZ2M[4ÙŸ¢™b°{W£ïLæÕçßBD¶©ê9ªúEq\KD®Á5ÕwÄÝËŸájì>SÕüÞÛE]¦ªÀû@¿­›ë³¯%ËuŒEQL�@�”g_gô��i( ªêP¯f¯Ô(—A^Jrâ�¸Qvõ�Ù«àX®ÁM™´Æ[~½lXêºØ”¶ü‘Æ"2¨{ãÕ·rÃU·ZsB)¤ª<ýüÃ<úô(@7©êaªº4¿ÇWs­ˆœ€Pñ£ª¦å¹½ó'?œuþ@F?y7*V(ê˘"ðÁ[qËuwi 3�¡ªG«êOE} oÆ‹öÀ4àkÜôx{K†¼UUŸ/êrd+�7¥oïã{òìkÉÖe ”úþ»¹ò‚të–mœ­ªĺLaå"ÈKINŒŽN‘ÓTµ@\\%*Tª©UªÖU­Ö@*&ùR·¯nß¾†Ôüé[ …àšš~Ä�üä²a©ÅÞ$PÞ‰H%`:pèÝ·>Ìeƒ¯Šu‘Ì>¼ùîËÜvï ÝUug~Ž+Æ ï5à"\­Ê�¸‘ŽS�Ÿ ôyy÷>N¹pȹ<ðÄ]…+¬)vß|1�‹Ïº”uÞ‘•EyþÒ6­™ˆ<Üxl¿^¼òþü~q]Ê�þZÀ©Çœ«»w§¥©jwUý=Öe‚2ä¥$'¶n‘ÓUµjRÕF¡6úK“æGIRÕfÄÅUÄç÷ãb8¼G·h(D0 3};›ÖÿÉâ¿ -_úƒ/�¹ ™ïU¹>sÙ°Ô˜TÓ—u"2zÞ™óð}Ïĺ8&Ÿn½ûzÞ›ð¢ªþ/?Çc�×7û@wàH\“0¸Ú½™¸€o*.è+Р¹x¬{¯®¼=!…¸8û- ^|êUî»ía€ïTµwQž[D(XîØPq¥Ñ‘þÀç-Û4×O¿{_ªTµ¼²`ò„¯¸âüë©j‡’î¿M™ òR’ëw‚\Y¥j#߇œëkФIUãó Ü‚7 ¡] »ÑÐ.4”Šj"©R$ñ%á‹k T"�™Ææõ±dÑT�?ï3Q ¬VÕÛ€7/–ÓœMe‰ˆ´‘yÍ›µò}3ñg‰‹³IÊŠ@ “>§Áâ%ÿ�ΪúϾŽ‘Û�?UuBq–MDšà‚½pÐwnÆn\³ëTà¡}}°ŠH5Y’˜”X}ÆŸ_H­Ú5‹³Ø¦ˆ >ý|ûå4€“Ëã4v^-óïâ“&ÍO§.íc]$S·Ýp/o¾ü.ÀµªóŽ2ä¥$'&ârÔÜ’P¡Zå®=¯“æ­Oć7Ê\�ÖàúȆ_WÈ=×D5Aƒ ”hŸÔÂçoŠ/¡9â«Æ®�ëù}ö«º`þ$æªêÍ— K�£—^¦ˆÈXàìç“'œë☚üÕ.¿vÀǪZjÿŠHEà \N»£?P}_yÿDd4ð·Ü}#× ¿¢ø jŠÔ?- ï‘Ñ�þt)î4&"R­$sIŠÈÅÀ«g:•Ç_|°¤.kŠÈÆ ›èÑùxݽ+m“ª¶TÕ±,O™ òR’;‰È§>…æ‡t¢í:Ÿ#ñ • e.%”±4×?V܃B¤i–� ê"�AT  à=ÏD‚AðùêáOì†ÄÕcû–¥ü<ëÅÐòå3}¸ ¬¯¸lXj‘w//D¤°¢Sû.2iü÷6ТŒ:åœcøí�Ÿhº¯¾O"ò6P�|‹÷w¦ïþ:èã- q).¾Ãe¢³·Q¶"'"jשU퇿¦HÅJ÷§&Æ®¹d8Ÿ|ð¸´9ßÅ9E¤®ª®‘úÀH n_®¶x)ð .As�Sõ ?ûýþC¿Ÿ;E5±érË¢äQOóÄè1CT5%–e)sצ$'ž$"?Ö¬Ó¡É™ƒ?¦ó!—Šß·�ன„2æ ’¾ àKðž{�’€D–xð–Ès≉Gý~ðû רü!Á-ŸSµJ5ú¿ïøãïÁï¯0Xà»”äÄz±~OJ±S9íäs,À+ÃN?å\p?—òS“×—O,ûrpT”õÍ)@@è5­‘§Ed°x7[ÊË@O –—úå©|¤Q驪ÕOØ×¼2làÙÂOO-Šó‰ÈaÀ2ïË¿¸$Û•€¸4*3p5ÅW‹D䢸n”r4;²çáà•agœ¹-O�e9  y)ɉÃ�‰-Û�P¹ÿé/ù+UJ$¸{:¡ôßQÍð¹ ^_»„HŸ;‘Äç‚;$gÀ—3Ћâ¼@/.èá÷ÊXD`Ýè¶i4iÚ�SOyšJ•ë."³S’Šõ{SJ� зπ}ígJ±ã�=1ütŸAžªöVÕæÙܬkö\ï-ýòS…›aà#\íÝ׸¹:k©jU½KUg°só©ýô)À!eOzZ:_Lüš¯&M�uQòôôŸøbâ×lßVðÖ¬^Çv'©J¢ŠM�‡QþnºÅ$àVUm¯ªýUu�ªöUÕvÀáÀÏÀK"rh];»�}ËùýYÞ5oÙ”6í[!"ljHLGÍ”ê /%9qŒˆ‹ÔÔ]{=Ño?ÿÁÌé³È̈ùº\6oÚÂ�ó®áš‹‡Åº(yºkÄ 9ï–,\Zàc*$pdÏ#D•f"Rè‘3^JžÀ"`0ZDÆyɲ³ï÷ p2®Fù¶Â^7ŠÃŽê}d1œÚ”¤£z‰ª&°ÇØ%­Ôy)ɉ7‰ÈÐcú?D§ƒ/‚+îþ×4ëjá\M\‚÷wBÔ…5wÙŸ»š;èù#ϯ&ÏçŸÏ ø|húr‚«ß¤¢?Dÿ~û›5ëQAD>IINlë÷ª´ð&�¯Õ°~ã}ïlJ½F šTñ’ÇÂPàx`,®ù÷U`…ˆ,‘çEäloʼ‚hX§n-â¢�øþý—?8»ÿEœÝÿ"ºëñ½žèª‹oâìþ±uK‰õÉ7Ù4liÎlXD§ì¼«ª§âj|æ‰È�^bb¼AŸÅQ“× ¡5Õ–yÙšÛ‹êþÜ/¥2ÈKIN쟻®Ï�-W¾�?s#½Žá«Q£eUù,%9Ñ’9õ©_Ï> Êƒºu뇟ÆäCJUÓTõ+Uý?U=¨œ‰k¶=ü­‘9"ò¸ˆœì¥ŸÈ“ˆ4ªÛ n¾:‹¾ñһ̛;¿°/#ßž~øyŽìt\‰]¯¬«W?ßúþôÀ/PG` nÞØ_D¤k¶Cþš‰HQç‡jX9±’&&V.âÓš’V·ïÏÂ(uA^Jrb;ù uûþt8p�„2–ÊXè_^`æ5±f ¤Øs€E¸o^ÎZ<‰·g-žß{ô¹š<ɪÉsž€xAŸ¦ZóqdÒïØ»ý ªµx'%9±Ô½—1P f�Ú±.‡)5ªGZÁjIJaªºYUÇyóC¶Å à¸×oïZ\3[ž?¸D¤ªªV¬Q³ú>¯U³V ‚Á #oº¯ˆJ¿oÇO.±k•‰UÃO }ziXþ![Óšª¦ªê-ÀÁÀNàyNDªãm+†d·5jÖªa#ÖÊ�lŸ31ýüŒ‹åÅ÷”’œ˜("ŸÕªÓ¾r·Þ·ù$´™@úï‘@Œlͪ‘¾tâ¿¿æ­dìÓèܹ%§žÜƒ q@ÁK™BfVêT| >qÏ}âF‹Š@`'ºr,•›^Ä ÇÜ)¿¸y€†÷â†Ýÿ—Ù‡Sù´×ÿ¯"r¹ƒ«Ž@e97Ê![Uu¿"oŒÞÞÒ W{ °ø 7Z^òýCìÌóòéøIÌúa6ãß›Àéçž²?Åeó¦-ü5g¡Pˆ.‡t&¯óÛ/§1oî|ê7¬Ç‹ZµÉÝdë–mÌ™ý'þ¸8ºÜi¯ó™ÆÅ»�ø@ ȯ³~gýº ´ï؆Vm[îsôûÎ;ùë�ؾm]îD½u÷ùzƒÁ ç/fÑ¿KhѪm;´.ðt\™™,[º€&Må9Ÿp(IÿUTŸ;³��"2ZU#S[ªê_"Ò ¸x7)—N¥¨ÙghùÓÿ§¥*Ènòù+´êsÒÃÄùvÍôV{M©‘Z·l5qÄóÕ·2à´‘ANx4ï¿s7.ª I�'„p?Úüü<{1Ç�ôiéîÇØ›c[2á½³ˆóûpM¶®/Üe_Ò×Zõµ�I÷Æ0cÖó·¤$'¾zÙ°ÔE%û–sOâRšDón”us�|y"Òž¬ ®7N_´÷%û5ð•ª.Ìwió!3#“;FßÂÐ odÔÈGé; II‰û>гnÍzn¸üfLý1ÇúN9ŽGÇŒ¢Zõª‘u—ž}S>ÿ€µ«×qÌ!'E¶­Ø9/ò|Wênn¾æŽp~8À‚—½�Ûﵟa¥Ê•øyæl®¾x8kV­�¬oݶ%¯~øÍ[6ÍuÌÎ�©Ü~ý|4v"Ùó¨Úõ žy5™ÆM£·>}ðöÇÜ9|;wdMy\µZzæ^œvBÔc¢qõHƽ;�ðœ­%è\_¼)"r?ðŽª¦¨ªzIÞk�ྸ›ŠHUý·$ iLA”š /%9±ŽˆÜrð—h¥ÄºHýÚ%8ö%xͨ>ÂÁžûAîGˆcÛŽtι`T$Àÿñw¼ôÊ$®¸ìdPA#qtÈ;.Df@8gðK‘àÛi‹yèñ™Ü>ü\Re_îàN\Âe�í¡•šÓºuæüý‰oÇÎ5£€h5Æ”g—ù�€\òâ}‘ç�ðü¹»�éxAð{qÎt°{÷nœvo÷ËŒ©?òبg¸sô-ù:vÝšõôí6�Í›¶pü‰ÇpÔ1G †øî«Lžðÿ9Ÿ/ü˜p¿«N>Žö�ÛñôÃÏS£fuFÜy=@Žš¶P(ÄÙ'^ÄœÙrdÏ#8é´~ìÜ‘Ê{¯Hʘ7X¿nc^,WYRwîââ3‡Ò©K†\=˜¸ø8&OøŠ™ÓgqJïs˜ñç7âÔO IDAT—9j3Ò38¹×Ù,\°˜Ã»Âñ'KbRefý0›O>øŒ~GdÒŒq4mÑ$Çu{ààYjÖªÁÕÃ.§Y‹¦,]¼Œ÷^ÇÐ odíCërõà}¾w/=ó:ãÞ�@Û­yöµä׆ª.‘óp|^ž‘µÀz 6®Ö8X<Ž›iÅ’-šR­ÔyÀ� ªWn×ù,ÑÌåÚìúÙ!¸ ÎáçÙšo?ÿ#Û¶íÌu²—R&rÅ—‡PTQÁ�â‚|1e.«VoÎuÜ«oÿÁ­7uÍú€õ&ÑpAŸ[TÄ•KÖ}�¿Út?ì2ßSï?;%9ñш¥þR,ï�1¥�ªN/¦S/FႺ™^š‹‘žææ�¿/y$ÇwȫϽÉy�I›öûN ôăcؼi —½�{Éʲ1äêÁŒ¸úƾ1Žg“_âf/˜;ûÂÓùë�xúáçI¬’È…CrÿNütüdæÌþ“cúöⵟÃçs-σ.9‹�ûòéøÉ\yý¥t9¤sŽãvlßAß}xñí'#ÓEW ââ3‡2uÊt^ó&7ÜzUdÿ×_z—… Óç„£yù½g‰‹sÇ ¾ü<:ОÑw&óÀÉ<ÿÖ‘cÖ®^ǘÇ^&1±2Ÿ|û^ŽÚÁs/:“þÝO'ù¾§xÖIÔ®[+×k ÖNÿv&£n„ZµkòÚÏ‘T¥äu«êdi \�K´Ý¨‹K™2ø7«Jšˆ<¥eeÊ(óŸU* ¤$'¶®ìÚó*‰�¯H0}YÑ•[„lM§â~c?˜õœ¿þ6�…‹Vg¥E‰Ôº`ñýñÑã°U«·2sÖj"A]ö©ÒðºõE? � ëgаQ7êÔnW•oŒ)$U}TUGªêÔ’ ð7qFëv­¸tè…Aîvÿ>�Û¹ÓÕ®ùý~®ºiHŽm"Âõ7_‰Ïç㥧_#�¹¯É9²¤Œy€kG\ ðÀuîîêñ¨*_~½‹Øå×\”£FÌï÷GjÕÆ¾9.çuž}€¡7‰xa—½€jÕ«òÙÇ_°lÉòÈú·^KzZ:'ŸÙ?Wóo‹VÍxÎvîLå�—£µÜCåÄJ,_²‚«߈Ïïã¥wŸ¢IóØ¥aRÕݪú¤ªž©ªGx ¼�ô’"?¦nrt,À3eA©ò€Û«TkìkÖª/¡Œh({®S‰ò˜µ,\¸"Ï“þ39Y5€Ùƒ5áŸkòž!ç]ËÖ-Ûxèé{9üÈâH?gÌSÌ›kS’ãEäôΞáóûýRçä{,J($¬Y»!ÏíËW¬ËsÛŠy·bUîæß½$ÖM£VÃþ$&Ö ¥¦®;ø¡`')ûeiJ«²|&%%2rÔ®»ìfî»õaúôëMåÄJQ÷ ×pÕ­›w¡:õê°zåZ-XBËÖÍ÷yýM7³sg*ç ¸$ÏýÖEù,Œ‹óG-k•ªU¨P±éié¬^¹†¦-š°ÜÑZ½FµÈ¨ÜheXüïà–.^@í<^soýâÕªW¥ïIÇæùúŠSY¾?�Ù›˜yÀѪZµa“nh` ª»]Þ»H¾“h�nÉ „r ¸ØÓ®]i¸ÁYǸÓ(»vçÝú³kw€ÿÚ÷ü§¯Ùζõ¤Ñ‰´kÑK~ûëÃ3€áy¿ä¢!®íº7pðÑG2ÞýÙ  L^�m‰ößiçœÌ[)c™õÃlžzø9þïž›ˆ‹2( tŸG{KOÞ æoÜHš÷Yåóù¸c/ƒ?ê7Œ’âdiR‚!WŽü•Ý=fÿÜ §2ñù¢'^ór^ŸÕS>û†�Û1oî|FÞtO¿Rr=^¼ùgk�Ñ%vacJHiòNMªÚ(”T¥‘/”ñ.S�ì�”7pBCîQ%D… ~jժΦM[£ž¸Iãú Ao ¹Å úš4®ËüË£רFV9r‡Ù*5ÛUÈØ»VÑ´q7ùuîÍS’;]6,õ¯"xr‘v¸¦ pƒ—à’Âs"Ò¸Ð[šãrØ �e™ŠÂý�ÝAÿgðâÓ¯qö…§S5[”°æ-\Ÿ´ ë7æyž�Þ¶¦-ò×ï¬aãúT¬T‘´Ýiy^ÈK 3Àî]iTªœsèŽí;HOKGDhäMÖÌëO·eóV�`®>yÖoòöÍ]Û¬Eþþó6¬‹þš7¬s5ŒÍ[6‰º=ùùèÊqô9üd>~ÿSú�ܧ@)W JDâ>;�€]€MOiÊ¥˜÷É‘ÓÚ¶í#âBKÑpP§.xr‡r.áÀ-”AãFõò{nÔëÏñÖ·hÕ,êö¶í[‘T%‰Gžu[n»þž<Æý%"•Eä|ùX�›ª¬“·ùU]_¤4¥Ú¬fóæËï1sú¬X¥ØÅ4ÈKIN²þ‚KÏ!>!ž ~–+8Û´q3¿ÿ)~¿Ÿó/;'jùÂzõéÁ KÎbËæ­Ü|Í{Ý7?Äé-"¯àšcßú’û{¯Ìv#((Ueê”éL�2�­[¶å¹ßÌ鳘:ez‰ÎÝ\’>;‘Ûn¸‡Þþ8ÖE)v±®Ék �Tµ)š±Ú œ²šTÃÁÙkâ4ˆjÀ Ú\x~ô ½Ï=ûâüé‘O#�î\ç�uxÔæˆý¡z• „¨k"Žè)^y³}¦­ƒ`ukµDÚîï›""‡‰ÈSÀjàcàt !�Ý—”‡Z€8µkÕ¥v­ºÔªY›�©;X¸h>ã&¼Ëy— àžó—ŒÖ/9TDžVŸgÑçž*G÷'¸n½÷&€È`ˆ=�¸óz’’ybô†_5’I¦0iÂF\=’§y�ÄÄÊ ymŽcªU¯J£& PUn½în~˜ö“'| èÎ|:�º´gÎì?éßãtžM~‰‰ã'ñÞëã¸ûæÑôè|<óÿÎ=zµFÍê|þÉ— ½ðF&Ž›Ä¿fè…72åóo©œX‰ÿ]—s Ç�«Ó¤yc&|ø9—�s5��Èד¿ã�;eÄU·ã÷û¹mTÎîÆMš7fÈÕƒÙ¶u;Ž>‹Wž{“éßüÀë/¾Ã©ÇœÇ¦�›tÉÙQ§hÛÓ£o¡Q“|5i*cß·Ïý£‘¶ÞŒK€oqɺóšû-ˆËÇøŸÈ páiWpáiWð÷ŸÿDÝç­”±œÝÿ"†^xc‰&£6Å#Ö}òÄÅW&Î_2w@(~7í˜xA�K`ŒÌAž¦L½4ÉÚVãš«Îá™1c#'mܨ·Ž84%”U‹G¦;^Ô®©ÜqëÜu_Ö�¸š5’¸od”-Y5‡!èI([°ò‚ÑHÓm6™Û¨T¹&ªZ=%9±ÂeÃRó•ßKD:ãæFHÞSDE³Ò›ú©4h^˜ƒÛ·íĤñßGþ…B,^ò/O>ÿú>)oŒ¡÷QÇÓ»çñ…-§) é„û²,Ë÷gÞ“¼ÀYœÆ[¯Œ�4yî©A£úLúa<×^:‚±oŒË¬t>°ϼ–©¹ËîÎÿ�k.ÎÄñ“"©Z~[<ƒJ•+â÷ûùð‹7¹sø(>xûc¼+çì5jV§J”9lO>£?=zwcØ•·óéGY3ÉÕkP—WÆ>›«_ÅJ™8u,#®ɔϿ�L·иiCžzåïvH®ëÜzï0ê5¨Ëw$s׈"ëãâüŒ¸ã:®ñ¿\ÇD“””È#cF1èäK]ðÚûÈ<§QËNDãú%Ÿ ˜¯‹9+�–ûšÇ·Å´ ?ÿø+w ¿áÉ—¢m‡Ö±,Ž)±òêW¬XSý>Ÿ;½ *þ¬Ú;·ø¼@/à‚;ož2E‘Ð’¼„Ê•*ðö»“èܹ5£ïJÝÚ!¯Ö.”UûGÐõÑÓh&·ëM(àÕ׿¤U«úÜ;òtZ4ICCAÔ…ƒ9/ÀËèiV —CÆv*V¬þ«°too€ˆÔ^ÀMz½?ÿÀ�æís¯2ÈçóѺU;ž|èeþš÷ÿ.ú‡Y³° ¯ä=€Å]îïσëÂû“^§v�¼7ˆ/½ót$%HõÕríÓ¼eS>ùæ]Î_ÌœÙâ�óÓùÀŽ´jÛ"ÏÚ‘OíËÔÙŸ1sú,¶oßI‹VͨQ«zd{R•${a47Ý~-óþü‡¥‹—“P!�vÛpè嘻¶Víš¼?éuZ´jFý†õ8ª÷‘|=y*[·l£]Ç6xèQû†�}åý1,[²œ9³ç²+u7�º´§}§¶QçÇ ¿'—]5˜³Î?�9³ÿdñÂ¥´lÝœÎu¤FÍêQ�I~n©©»hÕ®eŽõ=�9’‰SDz{wîfé<\Šë°?ßgÍ(]÷ç–X]xíêuüïüë d>ò:úè«¢˜"ë ¯AR•:!P¿v¸¦ÑPõ#µwJÀ›ÝÂÕàEæ�Õl£nYÏ÷œÃ÷ qµw¡m in{¸Ÿ×LðСàzn~·ß|JE3— í\9\ ç{!W³'¡�WÎì}ô²ÉÜNB¥Hã†ì#ÈSÕ�"rp5nÄ׬ý'à‰}îU2šõI}>�:táßEÿ°dYΖ•ùÿþÍko¿À1=�§oŸÌ›?—g_JfÁÂyTIªÊ¸·¾Ì± àƒ�Þâ·9¿0oÁ\êÕiÀ��æÌ�çÓ ~£û¾ðÊ“,]¾˜£�êà Çåìb™žžÆ=þªÊñǞȱ½ú娾cÇvHvýІ_wµjº\a /àõw^`á¢ùlÞº‰ºuêÓ¢Y+NêwGÚ=júŠ�&Žeæ¬éÌ[0—Æ ›pp—ùð¼!Tª˜ûKúÉçdý†uŒºóq22Òyéõgøú»Éìܹƒ®º•ûžšÏw=‡{€ÏÙ¿ûsnžÏÒ 2�²·ªU¯Ê‘=�Øç‰ê5¨5Ùqv>Ÿ�¶Z¨6¤i‹&¹æ…ÝS㦠÷Y»•P!!Çë¨Z­J®þwûÒ¬EÓƒCò£jµ*ô<¶;=�Ýw>ø=§`Ëî Ãº䲯ゼ«€C�è‘ht+€› r±böT,.š‘žÁ僮cú�œ4°×Ýre¾ŽñÇù ܤ«ªlݲ�*U«Dí2 …HÝ™J•ª«€OOK'>!>ÇÌ0ÿe1òª%Õ$°Ý5­ú‚ò¹ÇHÓ¬APÂU áQ·Šü„‚ë!¸�œ• Ùúø© Ýà‹€7 #€ÖÒ•^à— D‚A/¸s5z¹‚=/ГP”Ž­ ¼¯®6 æD$&?Øo½á~ÿå:ОÇ^�g®DUåŧ^å“?gÞÜùÄÅÅѹK.½úBN>½®ý_|êUÞyõ|ú=â ¸ãQÞ}íCRSwql¿^¼>î¾÷I>ÿè žJy˜Zujqÿm3eÒ·¤§¥“T%‰ÃºÌÝßšg¿ÎP(ÄS=Ïä‰S˜ÿ÷¿$TH ó�¹ê¦ËésÂÑE÷F•A±ò’*T¨ìE»ÁD‚>� *‚Š7g-âRç˪^ÈBñ>DÃsÓBÖžá4,¡HM^V°ÈÖtYA`(ˆDšl£{Ù–=Óñãó% ¦¸�ª®!+à;÷e:÷aMñ•–©âðÃOÓøaÖ4*V¬ÄùgGÏø¿pÑ|®~)Í›¶äò‹®¡më9~a†B!.z Îã°ƒ»rÛðQthÛ‰µë×0~»<ýÂ#\võ9Lùä'Ú´r]ȺÑ‹”7Æðëï³PÕ|áà©v­ºÌœ5�ŒŒt²ÆüüëLŽ<¢'>Ÿ�`0Ȱۯtå8ÿ :ëš5mÁŠ•Ë˜1s*¿ýñsŽàÎQ#øtòGtjß…Ñ÷y‡ çѸaSƾöy$ k�T…›o¸‹ŒÌ ^xåIî}èVÞ|ÑÕœuó´mÛ·²hñZg ’¾™ö% ê7bÀ §óÒkO3ë×™Õ­wdû¬ÙnV»ÞºEK°cÇv*U¬ÌÈ£¨PÁ%§mצ#íÚtÌUÞ¥Ë3îãw¨\)‘×_G½º.am§ö]xù™÷èÖ§¿ýñ3“¿š�«–àãOßçågÞ¥_Ÿ‚5Ñ„ªÎnÊvÆu|Ïžy78 7J|¿‰H3`«÷%nÌ>©ê"àn¹8 wžìÙ‰òT ÙåEDê¹K–­|{?ÏœÍ=·Œ&.ÎÏóo=Aãfy7>½þâ;Lžðí:¶áµŸ�t˜<á+†¾�ž|…Oí™9»·RÞ㟿ÿåÎÑ·pÆ S©Y«Fd†•ìžM~‰�ÛñÙôiØØ NZôïÎì{!7lbÌc/sç³¾<ÿD Ó¾þž=€WÆ>KÝúnê½qïNàÆ+þ�Çx–N9þ?;ˆ$Ö�Ök¶ïXçú×ù*E‚* Á ¢fÍ^í¥?É2½ç^-\&ÊðþÎpsÈF–to}:ªÞn’Íö<à�` g¼`OBÙþ…HOòûÂÝÑ_Q|2Ò#}gWÅ›¤ªUýLUÏêÿ#çܸwÅe€"ò¶ˆô‘;¿aã:ö�È’òƾ�ö%ÇöêÇ«Ï}@÷®½özüˆîŒà¼7î N?õ¼5naƒÏÀÔéSX¹ÚÍ„RµJ5:upX¿üþcdß…‹°båR;¸+‡âÒÂ}7ã«ÈöÌÌ æÌý€]]SAÍ®OÞî´]üù÷œ}¼0vÜ‚Ž?öÄH€V»Vº~³fÏŒz|×Ãzk€—�ªUõsU=w^L'+‰ä]Røá‹`©ˆ¼'"'Æâþ4e“:ÓUõrÜýy0 7ªà‰^}•;p?È?‘³E¤â>�ˆ±í[wpí¥#‚œvî){틚šº‹1�¹î)�޹?GŸÐN9Ž“¼Jž~äù¨ÇÏ�3�;¸™Ë¯½˜šµjäÙ—oÌëÉ‘ U›\0ÄåXüãל ··lÞJÊ3oàóùxâÅÑ‘àŒóN¡÷ñ= ƒ<›üRž¯­¼‹u�·65u“_CŠHe/� "TUð+U™4ei®M5+¸ÓKº·dDÑô=ö Ÿ+3ò<XJ0àÕÞ…›l³‚;  dyâ£ÍغNôW_•ô´È4kEäe§ª[UõEUí´îê‰H¡æRÕe¸¹oájWˆÈ#"’Ÿ~�E¢aýÆ|/ÉÊ7,gÿ–•ý¯©öˆC{Ðõ°ˆS§O‰lÿóïßIKÛM�Úõ"µµkÕ‰ z8÷’“xä©ûظ)ïý‹—º2„B!¾øzb®%33#ÇëÚÓ‡î»ã{qPÕmªú²ªöÂåÁ¼—ºd¿F|d;ï*\Òïs€Ï€U"n26&_T5MUßSÕ�Ƹ9Æ×ã~8æ¼»pŒNÆkEäE9ª°e..÷ßþ«V¬`‡Ÿ³dѲ<÷ýeæ¯lÚ¸™z êFÓ½—ËÑŸWòäê5ªqáeçî³LÔ‘ÖírghêÐÙ}Ž®\¾*ÇúSg²sg*-Û´ˆz\÷^.pÍ+'àA¬›k×d¤o% à yâràyÿѱU5fü´�o¾[αG7Fˆo°E¤?^ަÚ=^DFØf›-Ülë ˆ—Á‚÷˜µÞ-�Œ×�YËug¶'ž Ñ_Q|vo^ ®æ!��Іª.ÄÕ’Ü�K×RX£pé¼ó †‹ÈïÀÀ;ªº®®U͵¸Ð«QËîæîâ´A}˜üÕâããóXîõI‰I$%Eï¹;më7¸–óºurç' «[§>[·mañÒ…ôêáÒtïÚ‹^y2GMÞ7Ó¾à¨n½©Y£ÛÀ_ÿüÁºõk¨W·?{µk=ºåìðûøƒ/R±b%ÆOx�§ž{ˆçSžà¬�çsÍÃr5C/[îºMœ4މ“òN »qcô@±A½|�ù)Vªº72÷o¾ÐÂ�«%LÀõ¼ ×\ün„å;ªZ¨.æ¿Ã»WÂýK‹âÌÜHÝ:¸&áË�ËEd1îóóMïßD©°fõZ{a4½7�éßÎdøÐÛùð‹7£ºX¶dà^Ü}óè\Û—.vâšUëÈHψL•Ö¢u³<Óïd× qô¯±ðÛ=g{Y¶Ø•+---j¹ü³Ð+ôyêÿ bä…B2Ó·QÑ_õÚè÷˜dleÈ C|ͧ,[±‹KÎo ÄyÉ‘½þx*Þ ‹ð‘YC4rŒ°õ¦I ÏœA¸Ö{ŒxA÷é“ ’–`Øóëiײë§CF”qñÕIݵŸÈ†KnÚY"óp©›¨Ðµ†ªºRDþöœóí oyØ›ûñ `‚ªæ;‘UaÔªY››®¹�kG\Êç_~LzzZ¤O[X\\Þ Á`Öÿ+¿/ïV¾póA¸– \m]œ?ŽE‹°}Ç6|>??ýò�4‰ÔÒõêч¿þùƒißÍY§]À¬_£y•+%òäC/sñùÿã…WždÒ” ¼ýþ+|4q,£ï~’ÓOÉú¥»k·›M¡ÏÑ'Ð¥sîä³a êG��ââcýO;'U-ŠûsU÷gÜ—õÃ"ò%.àû¤¤îOSöy5Å…=Ç.™†›&»–¸í»EdîóóýX÷/M~nÏ@×î‡r\×S"ó¹¾ü¼\û.]삤õk7�2æ�<Ï …HMÝ•+È«S/�–¯=DË9¹7áàmå²U{-×î]iƒÁÿä ±þ&øÐMæJãF‡"ë]�çFÕb‡Ä~ IDAT‚ ÐÀ§Ëyø®“9ã’÷˜ó×v3IU R“'dµ<ç®É‹Œ°Í6nx@Eö /Ô^í� ô6mÉäšg6’HàéSCê‚详jkðűtÕ¯¡�êŒâxÃJÀ|r‰†…;ÑŸl‘÷�7´^k8UH0dùÊ¥‘°ù‘”˜D�Úõذq]¤F/šð¶fM²†é'%&Ñ¥ó!ü:gsþœMZz�@fŽ„Ì={Ës)�3}æ·œuÚüúûO@V¼=Üåpžâ--ù—»Áw3¾bØíCiß¶Ûà½Þ6,Y¶ˆNä¦knË÷kýØÛýéú{Ë6ùð}¯6ñ±)ûJ¬|”·<%"p÷ç—ê²õ—¨pÿµ¦-š0|äuÜwÛÃŒ¾#™>'ô¦Q“œ5j¼ íÀCàöû‡ç:WvÑòÚå·G®ß_°dññ®\Ý{uå†[¯Úǹÿ{Ä8È»lXꆔäÄ-™qdã&=}ü{wgcùÿqüu�3›eÆ’}_j²&„PZ”’´+•¤¾RJ©~­Ú$RhWêÛÎEe ¥RD”}cë̘å̹~œ3cV34œ{Ž÷óñ¸gœ{9ŸÑéxŸë¾–°j˜Tß*ë_2ÌZ0ÖKµ2»˜4þ&î~p27\ÊÈÿkLƒèHp¹|·w­ñ¿“rΓ—ô²¬Zá=ÖÇ.c`EÖV»Ì€çIgý¶¿uˆ£©!|ôx[B’ŽÓi¾LS’Sرû/¾5= Å3�ü×þ<Ýòžž>·¬·#âñudþâø§œ¼Ø8ß76c Õª²Ø¼Ô­]Ÿ½ûv³fý?tëry®ý{÷ífÿ�xj×Ê>ÛB»6Y¶b «×®"~¿oöNŽ­™Üúü ˆˆ(Áâß²gï.öÅï¥FõÚÔ¬Qç¸5Õ¯Û€IoOáŠ>±òï?™·ð‡,!/š¹ `õÚUǽÆir�1¦mÁ‡�'òþ¼Ó¿Åc¾Ã×Ú'ÁçcLþý0N¯¼‡ÿç�o>¿>ÀcÌ"àñSVUúº•i_Ïä¯e«xô?OññÿÞɶ¿^t�$j²ðÓ¥^ƒ:=zÔQu9I [ò¦nݾäB�'…�’ ñ&mÃXr,æ{˜F•ÝL|ý:›Î]CWsY— \weeêÕ.áëËg ç*†Œk[‡öXÈóæò’�zø~I2c§Åí åƒÇ/ nÄ?�–ÏttÆe³wÇR¬7=ß …õ"¹‡õ'gá°QãT\ÜëõòþÇã_ø)U2ï´ÇÓó²Þ,Yº˜/§|Ì »Ê5úS>ÆZKÃèÆD×Ë>Ÿ\»¶ñæ;¯²nã¶nÛDˆ;„öm;gî� u‹v,üy.³çûþ³ç¼U›—ËEƒú�Xù÷Ÿx<Ǧ’ëÑýjßj?~ÇÆÍë©_·Á ÿÎEh P:�üKïÏü×*“âì2|ƒ|Š«H|¿C)NlµŽ"ãv»yuüó\Ö¡7?Î^ÄןN£÷�ÇÆJÕoèûâ»eó6öîÞGÅÊQf.Ñ }w]Öý³�#‡�œðêg‚@�®˜æIK"~ïߘÒ�0�¿_œÿÑãñÝ>MKæÄS·|,ï½Ú“reK1cÞú]ÏÐg7³ø·ƒ�š†I˲yÒ óÏÿŸ=þŸ=¾Ÿ=i¾ëû_'nw*¦'Ó{D£¦¦Æ[�\@tÄH;Îr¥ëBHI6lýÙk`aÿ‡Od ÂÚ@9‡lãO n€åÀ£@]`È ž›MJj 6­ËÜ–­XÂäéŸÑ³oçÌÁ O<òBWÉÛM×ßAÝÚõÙ²m÷s_L«æœÛ¢ž4¯½ðf¾×ðxrÏ}w*µïÜŽè†õHLLâ�‘oç{Üé®ËIÞ’×ÿ¡ÄõŒ*µvóÖŸV©|®1%jÃÑ-¾Ö7¯·¿5ÏåòµÀ¥ÇS³´‡·_ìÎà§dß�dV®M០{¨V)Œ‹Û–¤QÝp¢k…R&°þunmî[¶ ‰^Lgÿa/{÷§³he:K7xñx =ÝM™Ò!ŒùϹ4,¹R è#[¾%iž¶Æýî²'8ñk ;àf培 qÀ'øúãý“åÜòÿæµ×o\CçËódPªd)ü];å^:§0BÜ!Ló1÷ ¾™ïfOç»ÙÓ©T± î'--·ÛÍÐÿ<‘ky2€ˆˆÄ4o™9ÁqÖþx:øC^FÍ9§ßÞ}»ñêŒxõ *œU‘reÏâÀÁý™Ó¨\Ó³/µïšíœg•ƒ‡°hñ­Ëé)ëþ‹n¬OïK£™8y-¿¯Ü‡ÛíÆívãr¹H8ê&)Å…1&sË`±„„xñz½ÙöcèѦw^Z•’I+!µw]«÷ %%‘ßV|Š…×û?”Xä“ ŸƘK€:Yžò?âû`šl­M8¯ÛëÊëéuåõ'unLóV|5©ð+º•.UšG|æ„_ç¦>wpSŸ;òÝoŒá÷òÏö•*VáÁû†ŸðHYc 7ôîÇ ½ûêøQ#&œÐõ‹cL7²¿?-°ßûóë@.É'bŒ9ÈÙw)¾´ŸYk÷�þª²s¹] >€ZµóîBݺ] F½õ±[·¿w¶}�»wdîïßðÃ7sXµb5›6l¡d©ÔoP—NÝ:ж}«lÇ·ïÜŽðˆpä1QqVÝ/ëBÕêUhvÞ9yî¯]§C†¢dɼ&¹ìªî´nׂYßÎcÕŠÕlݼ�Ò¥KQ¿Q=.¾ä"Z´9/Ûñ_Ú‰Š•+дyããÖ òú?”˜üþ¨RÃ×mšûaÓÆ½([¥æÀJ¬7 cýÏå¯ë2˜Œ ç9ŒM]N�°²üß�õù{K&}³…Íq‰™A/cËä¬õµº\.¼^/éé鄸]\pny®h{ÑåŽÀ¡Åà-D÷ˆÈÙ€U~`ÓÓãDQ\=ï\ƒïÎO¬µ±¬G$«gý�ë8öþÌš~HMIeÕŠÕÄmßATT$µêÖ¤nýü`&$$òײU¤$§Ð,æœ\‹±gظ~3¥J•¤J5_ëöÊåÿ°qÝ&ª×¬J�ZÕILL¢RåŠD•É»#úöm;HNN¦Zõª¹¤�‹ÝÉß+þ¡B¥ œÓülÂ#rüOHHd׎ÝT©V™Ò¥K‘|4™%‹—²?þ-ÛžŸmÙ«3ÈÓøú¹oÇ·:K¶î,Nàv»ypø}wÝMW绯l¹2\ëµæky‡ÎСó×íò.t»¼K¾ûkÕ­Y`Ý*žÅ�·_Wˆª k�NtíÑ©PÇwŽy~cíÐ_—}Ðä’.ϺL¥Ž˜]óÀëź3nÕzý-y¾É�­1—Ï>HŽçœ yyP}VÇzY¹þ0ÿlN`ÛîŒÉ;äE–pѨf k„Ó*º4åBBÂ?p ¾€Rý\¡Pýr÷ð×êéÆÂó'8àÂ1Œ1�_�{­µ¿º‘¬Œ1C¬µ¿t¼Lù|:Ï?>’½»³7àÔoP—1ï¾”my(�'�žÉûã?Æë=v§ùÊk{ðÊ›ÏR:2ûàæ‹[^I› [òÉÔwÔï!¾›î[V¯Ûe�9»i#Þxå-nº£/�ÍÝj�’œB×VW’”t”%kçg†¼¸Ø� ¸y0+–®Ì<6¢DO½ô(7÷ÏþOú‚9?qÏÍðòÏÒ¢Íyô»n Û·ú¦¿zsâ«g\È3ÆÔ’�nqw‘Ã1!¯ÿC‰Þ÷G•z$nÇÒ™±[Q«VW8º­ö�|5ërùž1¾–ŸÎ7“¿#.vÓæ}žë5vÆíâéa/2ö"®¼¦5ëT§qÓFœ}NCÞxå-~øf./Œy*×tA æüDbb­ÛµÈl ܳk/—µ¿–ýñ¸¦oOÚ\Ø’í±;˜8áü4)))ô¿÷Ö\5lX»‘±¯LÀåvsË�}‰ˆ§YLÞ·Ü‚™µv3Ð/Ðuˆää˜�Ðÿ¡ÄïÞUjÜÜů êU�²uúº pt—oT¬;\þV¼¬!/³¿��´øØYBÜ”7¡” …(·ou‹´T8šéIþ%ÏNBÕ‹¡l3V,ÿÐÆÆýîµÐ§ÿC‰ŽìL+"§×�³‘žžÎÍý¯çùמ̶/ùh2%Ž-Ë·lÉ fN›E“fg3mÞç™KBÝzg_º¶î™¹ÿ²«ºg»ÎÖͱìûâ[¦Ìú$W°ŠnTŸ k7òÛÏäš$vÆÔYôì}Yæsã_{�ýñxpø}™}¶:wkÏ5Ýnæõ—&pý-×äjQœøÖ'´l{>¿ž@éÒ'>¥ˆœZN˜'/§¼é© gÎÆ›œšõn…�þåÈŒþ¼œsãenii˜ä#˜¤xLÂNÌ‘í˜Ä��ž„“xe›C•.lÙº€e«¾2)iÜ{çФbq IDN½�Pßœ¶Gò¸;�5à™kn|{¶5?Ã#¹öß„´³¾�›ë:^¯—þƒnɳå¬çµ¾©†fú]†´Ô4fÏœ�Ûíæò«}Ó%M擾 $4„{èŸíøV´ ºQ}ì?È’ÅËr½Nzº—Æ<¥€'âPŽ yÆ÷�C“ܬH¿åhbüÎÙ F¤§»KCý; ô8SdXK¶yP2¶ŒçŠrÙʲM¡voöïßÈüŸG“œb'ÜûXÒ—@ cL¸1æÌ\ OD2]råÅD”ˆ`ÊçÓ¹ïö¡™ ¼çeÝê ™?/[²"ÛæI÷-iºaÝæ<ÏíÒ=ï•U®ìí yßMŸMÖe{úñŽ>BÛö­¨PÉ7¨#vk)É)T©V™Õ«Öæª!ªŒ¯õnãúÜ5T¯U�g䤈Ž#n×c\øj BÞú8%á�»ÂonjV7ÑKæ¢ v…6º6 ‰ìYåb¨z1ûã×1cÞ3699mѯ$¿ˆoÝYwÆfŒñu¾93Õ‹®Ã_ŒcȀǘöÕ ¾™üÝ.ïÌÀîÌ5�ö-¾Ï´ÁwË÷z{víÍóùœ ÉgˆnX�ÆM±zÕZ–.YNË61À±[µW^{lRñŒº}kWué{B5Ô¨yf °)nòü-_!øÖìËz¡cÞMÙ8¸ømÖþúÎáï*}I—§Ü¥¢ï†m“áÀòÓ[¤+jõ†rÍÙºe>ó�!)ÉóËÛŸ¤=»o™0eÆêöèü¤©Pçzˆj;~€´Ã§¾È¨†Pý2¼áY±|¢]¶êk³w¿ýü¹ÑÉ/'µ©þzM~§c¬ZôDÎL%JFpû=7sË�7ðß¾àÙÇ^æÍWß¡E›ºöè„Ûí¦v�šl\¿™ÎÝ:ÓªyÁ-¤ž½{ðÊ3c˜3s>ÿ÷â0~ýéwì?H§n(WþØ oõ¢��ô½sPî´"R|¬OžñMZçâX ˜;¯mæ¼´]¯ŒO¾-~ÿ៧Ï~Œµk§“^¶94 U»ƒ+÷D�E¢DUˆ¾êßN’×ͼÏy—­úÚ»z}ú+�½pttÒQ›oÍyüNg /�­�_Yþ;Ë—æýâæ¶»oäîûûðË¢%™ûê7ªÀò¥ékÖ®[‹æç7eóÆ­lÙ´�¹ßÍŽ ÊÈP·~m\.;bwæšÓÏÉ\®ÌïÖÁòþðêó388åó3Ð/LŽÍ•×ã¦mÞäGF}tÛö´I?ýþvú×Óx·ÇýŠ·r'8ça¨ÔŠbíq¥jCíë Ñý¤„UaéŸíSïdã–%ñsy†Žz;å[²ß–ͳ欛ɺžZp‹ˆß_|þ¡�üí?6)x!gw6km‚1&ñ@ü©Ÿ¯<ùhržÏ»C|ßùÊ–=v[¶ßÝ7ðöëp`Þëdçw½‚dºs~â§%4,”K®ìší˜’¥JÐû¦«IOOgäs¯ç‚�&�ÜëŸJGeŽ\Š÷§_|ü¾JyA`|æÿË}:­C…ÍãÑ6- Ï3¯%¿{a«�®ì¶³BÂK]Ê—¯ïmߢ¿«Bµ˜ê—ù'Oþ­†¤¸Â½¢+ "£¡L(s6„”"5-™�«'³d夦$%­Ù˜þéûŸ¦N=tÄÍZS[ÖßãL±ðîÚ³#Ð_¤ìÞ³3ãÇ�Ç;®8±ÖÆíÚ±§ÇébQÞ:„Ò‘¥¹¨k{jÖ®NòÑd–ÿ±’·_ŸHHh�ºuÈ<¶C—vtíщ9ßýH·6WqKÿ¾Ô�®MJr ÖmbÖ·óxø©Á¹æÉ+Œ+®éÁˆ'^eú×3YûÏzºöè”çRgÞz€™SgñÙ‡_³uS,—\y1•ªTdÿ¾,_º’¹ßýÈŠ­‹ÿÕßIQÛ½kOÆ�År­ð|ìH>šÜôÈá#DFå½$�»w:ãý°�g­µÆ/¾¦Ì¼¶t|­bÙžûùwOìÏ¿{F\Ò)ôëî7ܹÿðóK•ªlÕíhjÕhKÙJ�qW¹¼©¾>{™ÛHO†ÐHßt,¡‘â4.’SØ»cë·þìÝ÷»Ë“–œ¶i›wêG_¦~¹c·÷0¾[=]9ëÌY»ÍúhÏ�öwk­ÇåríÛ·­R k‘oûŽm­µI�®¥íŒßß0ç„ÄE­bå |öá×LýòÛlÏŸU¡<ÏŒžkn»·?y�‘Ï�å�±yõù±Ùö•*U’Š•ò^ö ÕkVåüÖç²dñR û¨Ú¬*U©È÷‹'3ä®ÇX¼ð7/ü-Ûþè†õNêõO¥Ø­™_äƒæKþßeû¶4nÚ(еȿ°}[f¶ èûÓ2øocæxQ˜?gn=»‡žsÞ9Tt]F¥°ð(¢k]h+�Uß”,QŽðˆr„‡—%4¼ .wž´RS‘’|€ääƒ$&ícsÜ2ïÎݹ¬7Ý{èˆ]½-λøûùžk7¦ïÃâ<ùli…ùó™òŒ1S�«fOû�³žyË‹Í[7ÒñÒs¾·Öæ� Š!cÌKÀ°¾O·Ë:ŸÒ×Ú°n«W®eïž}„……Q½fU.èÐú¸árïî}üý×j6¬ÛŒËe¨ß .­.h‘¹¾l†_úk-­.hAHÈñ»ýnÙ´��q»ˆiÙü¸¯ïõzÙ¸n3«W­egÜ.¢ÊDÑô¼&4=·1Y{�ÄïÛϺÕ([®L@ÂÈѤdšÕjkS’SÖYkÏ>íœ"ƘÀ[�??4×ÄÔR¼´oÖ�m[¶µÖže­=¨:ò [ÐËèÜy“¯×Ë%½.`ͺ¿½@UkížO*&Œ1.cÌΨ2‘]=×ä\‹UЇ~½ïaî÷ .´Ö:«³à¿dŒùɸ̅?.›I½è:�.GNÂsÃ_á�±n±Ö~ÈZò2ä{ÙZê²l!/ët%™á޼GºæÅ›å1k?ºÂ†½œAO“Ƙ÷€þ£FL Ï5ùO®*Î4yúg<0ì.€�­µA7qš1f80âþ‡ðÈSº9Aüö'½.¾`‰µ¶M ë)jƘk€É=zvã�OÇx¼8K\ìN:žw©MKM‹³Ö6°ÖthºãB^ÿmÜüB^^/¿)M2^Π—slÖ —× �ô?gkÕ;ÓnË�1¦†1fC•ÊÕÂ~œ¹Ì”,¡ÅË‹‹¤£‰t¾¼…ݹ+.ÍZÛÐZ»5Ð55cLIc̆°ð°* þüÎä·4˜8�µ–k»ßÂï¿,èd­]èšNcÌ/@Ûɳ>¡u»�.GNÀú?Âÿ¾ø Ÿµö£@×ãØ©.¬�ÇZ›l­Mü[¢Kȱɱ.Äv$ÇÏY·¬×ÍõºÖÚDmg\¿»‚Xk·[kGïÜgv—&G.F|l;vn7ÖÚ׃1àXk“¬µO¤$§˜;o¸ï¤ç “Óïå§Gg¼o‚5àù= ØAý²Åi‚ê3Ýg~�ðV¸ÀÁ-yɲbFaZðr¶æåœ‡/ëÏy¶è)È�cL0 è|ÿ=�ðÈàÿ tIR€1ã_dÔ#~ºXkS\Ò)eŒ™ô»¢×¥Œûh.—c¿ó 0ù³é®?¯e3Þýô ªT«è’$ßLþŽïn“�&{�K­µs]SG…7Æ”.šrìýé´¦¼’@i`/Y“壾¹=�6gL ÇÞŸ[€™gR¿ÐåïÔ?ÇS¸_ËsÆû³,úâ\ÔÒ€ÝøÞŸ±Àl¯×{Ü1N”!ÏÓxh„)Ƙ-Àÿ€·rÎÿeŒ)¼ˆ¯ülcÌAàà kí’<®ÿÐè€oÊ–qøÂJð<ðä©ùÍ‚‹µv¾NÅ"Žc­=8zQcÌ£ø>»Î÷×{¼c_Ç÷…WócÄÿü›Hž‚nb(cÌýÀg@K|ßÿ�€G�ê9ޝ†o^°Á@M`¾äÞ øÉ“ײN5ý×k| \‹oõ�`c‘ÿR""ÿ‚pÉ=ÀÐSK‰H º�d|K}(矔° ¾Pö`‹Y�bð…µjÖÚ–ÖÚÊÀÓ@(0ÖS!Ÿ×z¨\”±ÖFà�Y®ED²¸ß�†øî@ˆÈ ¨Bž1¦�È>°Öz3öYk×YkGç8þ /pß:sYGÇ< ¬Á×§ïþ|^2¸ÊZûµé5¬µéEòˈˆ�[óùYD‚XP…<|��ù~ÔSÐï×ßßÁ¢œKäø;`g¬�Ø<ŸóZk:ÙbEDN5ÿ’žYžºÎßYD‚\P ¼°ÖZcÌCÀ{øúß]bŒyøÒZëÉ㔌¥jcÆä±ÿ|ÿct>/鸉EDrèƒoZ†(à*|£ˆE$ˆUȰ־oŒÙ¼‰ïvê�Œ1ÏYkßÏqxFÈ;׿å'¿i=?ŽˆpKÏ݆BžHÐsZÈËèwÜ[ Æ7¾Nĉ9÷[kÿgŒ™Ü ïc.zg™Ç.cØÿâkýËO~óJyóy^D$àŒ1õ€öyìêfŒ©âŸÆHD‚”ÓBÞ:ÿcƒޫɱÚóœ4Ó?‹ÿGƘ��ÀXà 0ÑØZ|sãkí�']µˆˆ3åÕŠ¾)ŸnF�ÆZDä4sÚÀ‹5þÇhcL~ýàÀ7ñ0@¾Y¨óe­õZk'úŸj—e÷Zÿc[ë ˆH0É/ä�FÙŠ=§…¼_�¥ø¾e¾‘×0cLCà ÿGg]BÌ?ág~2^ÈòܧÀ~|sÝõÏïÄ®+"â8Ƙvëwœ—æÆ˜ãõE‘bÎQ!Ï?¯Ý}øÖ`¼XaŒyÄsµ1æcÌKøB`%|k¾”ãWcæccšc*ccîð3;ËëàØäÉocÞò¿V+cLwcÌCƘ%@×SöK‹ˆœ…i©SkžHs\ •µöWcLà|}ó^Îã°©ÀÿÚ}Y¥�ý[N^àYkíìÏ�÷?¾‚¯ïÞ€<ÎM)dù""gŒ Ç7uJAn4Æ<¢IÜE‚“ãB€µöGcLs|s95šà»ÍºXšß kíTcL[ P¨ˆo‚äMÀ'ÖÚuyœc�qƘ™ÀåÀy@-|·qWÓ¬µ+sœ6 ßz· ÿå¯*"r*\”+ÄqUð >ûîÔ–#"�`²ti‘bÄó(ð"¾uºfy~ÙW¹8ž/¬µ}OE}"XŽlÉ‘“cŒ©ôÀ7ØìK` °xßÊ�â›;´5¾[ºWcÊXkå}E)®5ðBDDþµÞÀ'@#kíMÖÚ×­µ³ðõ-NµÖÎò?wp6¾ Ø+€õŠÈ)¢–<‘àò‘µö­Âh­ÝÜ–×tU"Rü©%OD$ˆXk�žŽsDÄùòDDDD‚�BžˆˆˆHRÈ B y""""AH!ODDD$)䉈ˆˆ!…<‘ ¤�'"""„òDDDD‚�BžˆˆˆHRÈ B y""""AH!ODDD$)䉈ˆˆ!…<‡3ÆÔ5ƼmŒ©UÈã»cÆ�êºDÄÙòDDÎZ»8XoŒgŒéiŒiȱÏð(cLkcÌmƘŸ€€u�ªWDœÁXk]ƒˆˆÀs/�³u.pçq¸¨n­Ý“åü�kmÛSV¤ˆ8ŠZòDDЇÏ�ÔÏåð¾ÏðDä̤�'"R Xk÷3 yøG§²)òDDŠ�I…8æðÍ©.DDœO!OD¤ø˜ ÄpÌ—ÖÚ”ÓQŒˆ8›BžˆH1a­M¾(à0ݪ@!OD¤¸9Þ-ÛõÖÚ_N[%"âh y""ňµö7òŸïãÓY‹ˆ8›BžˆHñ“WkžE!OD²PÈ)~>Áê²Zh­Ý€ZDÄ¡òDDŠkíV`Aާ 3½ŠˆœAòDDЧ¬·f“�¯Uˆˆ8“BžˆHñô�æÿù[kí‘@#"Σ�'"R ùCÝ?þ?~ÈZDÄ™òDDНç€=Àô@""Îc¬Í9@KDDN–1æà¶Óõr@3à¯BÛßûå'ñ:iÀ³ÖÚ½'q®ˆˆBžˆH2Æô&ºŽ¢ær¹Vy½Þ. z"ÅGH   F?üð;v tEâƒ>à¾ûîkêr¹æcôDŠ …<‘S ,,Œˆˆˆ@—Q$î½÷^Œ1 4HAO¤ÑÀ )ÐÀ�7nÖÚŒ W1Ð5‰Èñ)䉈H¡(è‰/ y""Rh z"ŇBžˆˆœ=‘âA!ODDN˜‚žˆó)䉈ÈIQÐq6…<‡úùçŸ�»?==�#F�ššzš*ÊMAOĹòDDê–[naäÈ‘yî[»v-^x!O<ñ�^¹HAOÄ™òDDꪫ®â‘GáÎ;ï$-- k-cÇŽ%&&†5kÖðþûïàJôDœH!ODÄ¡F�Í„ ˜4i—\r Ë—/çâ‹/fðàÁtîÜ™¿ÿþ›;î¸#ÐefÊz^¯·)0&ÐõˆœéòDDìž{îaΜ9¬ZµŠ˜˜þüóO&NœÈŒ3¨^½z ËËeàÀ�DFFz�R�®EäL§µkED®cÇŽüñÇ\sÍ5„††róÍ7º$)òDD %%…Ê•+ç¹ÏívSªT)BCCÙ´iåÊ•Ãívgîß½{·#ú剈³(䉈8€Ëå¢S§N׬Y³<ÏÉI!ODÄBCC™:uj Ë‘ ¢¯""""AH-y""·nÝ:¾ÿþ{Ö¯_�Çã!::šN�:Ñ¢E‹@—&"¦�'"â`�>ú(¯½öZædÈYõéÓ‡�>úˆˆˆˆT&"N§Ûµ""5~üx^~ùe Àï¿ÿΞ={ˆ��篿þâ©§žbêÔ©<øàƒ�.SDJ-y""õæ›o2`ÀÞxã�lÏ—/_žfÍšÅðáÃyýõ× P•"âTjÉq ´´4Ö®]K—.]ò=¦C‡¤¤¤°aÆÓX™ˆ y""Jåʕٺuk¾ÇÄÆÆbŒ¡Zµj§±2).òDDê’K.ᥗ^bÑ¢E¹ö-_¾œ‡~˜öíÛS¦L™T'"N§>y""õÚk¯±hÑ":vìH�5¨U«n·›¸¸86mÚDÅŠùðÃ]¦ˆ8”ZòDDª\¹rüõ×_Œ1‚Úµk³eËÖ¯_OµjÕxòÉ'Y¿~=õêÕ t™"âPjÉq°’%K2|øp†èRD¤˜QKžˆH1ÏîÝ»]†ˆ y""G¿~ý(_¾<*T J•*DEEѳgOV®\èòDÄÁt»VDÄ¡¶mÛFLL tëÖ�Úµkg¼˜={6çŸ>óçϧ}ûö�.UDH!ODÄ¡î¿ÿ~Ê•+ÇÊ•+sÍ…wäÈ.¿ürn¿ývÖ¯_  EÄÉt»VDÄ¡.\ȃ>˜çdÇ‘‘‘<þøãlذ�={ö :q:…<òx<$%%Q¶lÙ|�‰ŠŠàСC§«,)FòDD($$„¦M›òÕW_å{ÌW_}ETTÑÑѧ±2).Ô'ODÄ¡ž|òIzõêE×®]¹á†²­x1yòd¦M›ÆèÑ£1ƺTq …<‡ºúê«yë­·xüñÇ™;wn¶}QQQ¼ð <8@Õ‰ˆÓ)䉈8Ø€¸á†X²d ›7oÆëõM‹-ŽÛ_¯0víÚÅ‹/¾È‚ ظq#�>ú(�?þ8ÿýï9xð ƒ *Š_CD@!ODÄᢢ¢èÚµk‘^3c¾ýû÷S£F <�'sbb"ƒ¦oß¾œuÖYEúÚ"rzhà…ˆˆÃYk‰��eÑ¢EÌŸ?ŸÍ›7“žžþ¯®ùè£�Ʋeˈ��¥Q£FÙö·nÝšôôt–.]ú¯^GDG!ODÄÁÞ{ï=4h@­Zµèر#]ºt¡^½zÔ¬Y“W^y¯×{R×]²d  &&&Ïý·‚“’’Nºv ,Ý®q¨ñãÇ3hÐ êׯÏСC©U«.—‹ØØX¾ùæ† F||üðC\.ý3!R\éÿ^ £zõêìÛ·/ßcöíÛGXXµjÕ:áë—(Q‚Å‹óÎ;ïвeK*W®Ì‘#G(_¾<÷Þ{/ëÖ­£uëÖÿæW‘ÓíZ‡zì±Çx饗èÒ¥ M›6ͶoóæÍ<ñÄ 2$s ÛÂ]wÝÅ]wÝU劈Ã(䉈8@jj*={öÌö\XX)))4kÖŒèèhªV­ŠËåb÷îݬY³†¨¨(jÕª…×ëÕmUÉÅXk]ƒˆHÐ0Æô&Ο?ŸN�:ú¼””*W®|R¯¹{÷nÂÃÃ�{Ìo¼Abbâ _ûî»ï¦|ùò'tNTT”÷È‘#ßXk¯>á‘"£–<çàÁƒ§ìú#FŒ`÷îÝ'|^¯^½N8䉈3(䉈œæÎ�KZZÚ ŸW§N�¢/FDN …<óx<|úé§üöÛolÙ²…!C†d®c»hÑ"Ê•+—kPF^Î9çœS]ªˆ8ŒBžˆˆCíÝ»—:°víÚÌçúôé“ùó¤I“X°`ëÖ­ Dy"âp y""uï½÷²sçN&NœHçÎ�iÞ¼y¶ý]ºtá½÷Þ#66–š5k÷Z[¶laìØ±Ü}÷Ýœ}öÙ|úé§lÛ¶­ÀNfà…ˆ8ƒBžˆˆYk™={6O=õýúõ|«\dU­Z5öìÙS`È›7o£G�¦\¹r<ù䓼óÎ;,X° À:4ðB¤øRÈq ôôtRRRp»Ýù npÄ­·ÞJ“&M8ï¼óxï½÷HHH(ð< ¼)¾òDD($$„˜˜Æ�ÇwÜAddd¶ý‰‰‰Œ=šÆ�sÖYgx½®]»Ò¯_?Ú¶m @éÒ¥©T©ÒI¯–!"Χ)ÒEDê�7Þ 66–J•*Ñ«W/’““™2e ·Ývµk׿Ï?ÿd„ …ºÖ’%KÈ:ù}ß¾} }®ˆO y""Õ¢E /^L—.]˜>}:)))LŸ>�O>ù„ °hÑ".ºè¢B]+**Š… ’ššzŠ«§Ð²f""Eèd—5+HZZ±±±$''S¯^="""Nèü!C†0fÌBCC)W® <<œÒ¥K÷¼Ÿ~ú‰úõëŸÐkiY3gPŸ<‡Ú»w/‘‘‘DDDJ½zõ²íOLL$..ކ x­W_}•¦M›òã�?ÇÒ¥K©P¡B�£rÃÂÂþÕï "�£�'"âP­Zµâå—_æúë¯Ïsÿúõ뉉‰aûöíT¯^ý¸×r»Ýôïߟþýû0tèP*V¬È°aʼnq…<‘bj×®]ìÛ·¯À�—ÓÀ�3Ï‘à¤�'"â »víâé§Ÿ >>ž÷Þ{�ùóçç:nÏž=,\¸�ÈÈÈî3P¿~ý“:ODŠ…<)Q¢aaa|ùå—$$$0gÎæÌ™“ë¸��5jÄË/¿\àà 93)䉈8H™2e;v,£F�¢iÓ¦ 6Œk®¹&×q¥K—&$Dá"’?}Bˆˆ8Phh(“&M¢\¹r”-[6ÐåˆH1¤�'"âPmÚ´|sä­^½šõë×ãñxˆŽŽ¦I“&”(Q"ÀŠˆ“)䉈8ØŒ3xà�ذaC¶ç+W®ÌSO=ÅÀ�T™ˆ8�BžˆˆC-\¸�«®ºŠfÍš1räHj×®�Ûí&..Ž)S¦pï½÷bŒáž{î t©"â@ZÖLD¤å²fmÛ¶%22’ï¿ÿ·Û�kÿ€øòË/Ù¿?ƘõZEIËš‰8ƒ+ЈˆHn�‡åË—së­·æðn¹å<ÈæÍ›Osu"R(䉈8�Ûí&<<œ£G�æ{Lrr2§«,)FòDDÈC›6m?~<‡ε?55•W_}•:uêP­ZµT("N§�""5fÌZ¶lIíÚµ¹âŠ+¨U«VæÀ‹o¿ý–½{÷2kÖ¬@—)"¥�'"âPMš4añâÅ<òÈ#|úé§x½^Àw+·]»vL™2… /¼0ÀUŠˆS)䉈8Øyç�ǬY³HMMeëÖ­x½^êÖ­KXXX K‡SÈ)ÂÂÂhРA Ë‘bD/DDDD‚�ZòDDbåÊ•tèÐá„ÏÛ½{7ááá§ ")ÎòDD¢L™2\}õñ‰ %22’Y³fñ÷ߟ¦ÊD¤8RÈqˆZµjñá‡÷˜5kÖpÿý÷ó÷ßS§NF�­V<É“ú䉈 <òÈ#4oÞœŸ~ú‰§žzŠþù§À–?9s©%ODÄá>ýôS~øavìØAÏž=3f uëÖ tY"âpjÉq¨•+WrÑEqÓM7QªT)fΜɴiÓðD¤PòDDæÐ¡C <˜˜˜–.]Ê /¼ÀªU«èÑ£G K‘bD·kEDÂZËG}İaÃØ³g}úôaÔ¨QÔ¨Q#Ð¥‰H1¤�'"â+V¬àöÛo [·nÔ«W�×^{�””ÒÓÓó=ïÍ7ß$$Dç"’�>DDÂívS¦L–,YÂ’%K uÞ믿®�'"¹èSADÄ!š5kÆÁƒ]†ˆ ¼ B y""""AH!ODDD$)䉈ˆˆ!…<‘ ¤�'"""„4…ŠˆÈ)°k×.¶lÙè2ÂëõºA!OD䔸á†]B é.‘ˆ(䉈­åÀ3�.ÂÖº‘3�±Öº)bjR B y""""AH!ODDD$)䉈ˆˆ!…<‘ ¤�'"""„òDDDD‚�BžˆˆˆHRÈ B y""""AH!ODDD$)䉈ˆˆ!…<‘ ¤�'"""„òDDDD‚�BžˆˆˆHRÈ B y""""AH!ODDD$)䉈ˆˆ!…<‘ ¤�'"""„òDDDD‚�BžˆˆˆHRÈ B y""""AH!ODDD$)䉈ˆˆ!…<‘ ¤�'"""„þ�PÜ\>©C˜IEND®B`‚ipython-ipyparallel-14e3c43/docs/source/reference/figs/notebook_components.svg000066400000000000000000000603301520071063500277750ustar00rootroot00000000000000 image/svg+xml Browser Notebookserver Kernel Notebookfile User ØMQ HTTP &Websockets ipython-ipyparallel-14e3c43/docs/source/reference/figs/notiffade.png000066400000000000000000001113171520071063500256360ustar00rootroot00000000000000‰PNG  IHDR°°ÈN0*tEXtSoftwareAdobe ImageReadyqÉe<’qIDATxÚì½ |+gy&>ºÛ²dË–�||;Ç'>9¹��%-ÐBÃRÚ’h÷ß-iK³„K)l·ÜÚn–¥Ð²ü{ƒn[ÒRh–R`Ûn ·RÚ-¤-t $$é�\œã_�å›lY²%ë²ßói^�±,ÙºÏ7£÷ùýdÉ3šÑh4ó=ßó^ù|þa�Á`0 ‹Áɧ€Á`0L` ƒÁ`0�1 ƒÁÆ`0 &0ƒÁ`0˜À ƒÁ`c0 ƒÁ`0L` ƒÁ`0�1 ƒÁÆ`0 &0ƒÁ`0˜À ƒÁ`c0 ƒÁ`0L` ƒÁ`0�1 ƒ ŒÁ`0 &0ƒÁ`0˜À ƒÁ`c0 ƒÁ`0L` ƒÁ`0�1 ƒ ŒÁ`´®¯}õ«ÁÒe�~ç;þzöE¯±ý[Þüæ <ø,3˜À FÓñØ£�úßðº»Î<øÙφŒË~ó}¿1V a�öY/^ãùÖý±«iÝÿøÐ‡†_ö#?{ÿ>0Çg™ÁÆ`0Z‚Ë&'“üá{†� ªÜ{Ï=CŸþÔ§ñúÔe—¥¿ñÍ=Kë¾ñõo„^õêWÇúûû³|†L` £%Ùoºi„TNeÁ ø¯|Õ¿(Þƒe Ú‰®¿áùLüOûQþ�ýþ8ü¶?ð‚Äø–[âðà ¥i{"5<Óv/ú¡Œ}òÏ>iDù±c0Çûõ÷ÌïEÿãÆÇŒ—Ì®_që­E3ÍÖVÜuÔàfŒpdØ_øÜçB‰DÂõ†7½qÑH^ås"E¸âÚø‘—þ»«°ìÿû‰Ÿ¼ŠR.(2ö®;ÿãä÷Ýpãõ/»å¥×þüÏþì$ÖѶÏNOË÷àõÃß~8pý�7Ä�ûÄ6x�êºùæ›ãئ‘ïÉÆ`(ÌbðÅ/.ÂàŸ|òI?20 üâ[ß²Dƒüe0 ÑàRð‰ ‘Ϭ}A¾Ðç\sÍN-ÛÁ¿º|ñ¢ïÛ�~ç±_~ûÛæ¾òå¿ —æbÝ _ô¢Z±ŽüªÏ½îºø¹™ó�àõô¹sþÑÑQyMþùŸýYDõž÷þú Ôàm¯|¥¼–ÇOœ(*¸z¿'› Å Æe ×ð{!€£Ü¶ ²¿û‡ÿó$ýOŠñ5œêåë ûxž›�õÖ²ü«xÆÄh{{[*yøÍ`Äëç}ßó¶qý]qå•; 0„”ÛÔ½FàÈý÷}4 ŸHÿ¡c*G¥}°c0Œ™”ï»÷##ä{ªHßÀDõ’~É&"‰¼jü_F ÂC_ÿç³Ø×¿=þxð½ïyϸñ½)V` †EPpzh8ßv©t\Á` ûËoû’Ññΰ& ÄÿýOýT©ð;Aù@Q�”#$D´~üO>6üôSOuCeÁ—…P÷ÒÀ�Rôôôda6D$"Þ?tüx ûÀ:øk¿ý­o‡G &EzþÞw¿Û�íŽòÑ1�1 ÑaF‹JxìÑÇ‚�ï»�ñ¯d}Àìüò}yì¯þò/ÃK‹KÞááãi�¢ AhcccRùàõ™+®�¾2�–#¬ä%† ŒÒmðŒÿ)zñ�?ûÄÔŸÜ„Hë–—Þ»ÿ¾�ʰú±ññôüüBziqÁ ¿ÚÏüÜÏɨC�Úõ7\oä;:òùüÃüS3íUÇp8Ž‹G·2Ç•Ë�—Ïù×ÿûIVaŒFÒCÚûÞÿ›3åü­X�hÆû?þ±©R/+0Ãp8†ÅC¥hö�5âTg0i@•UZ�<²FÉ‹ ŒÁ`0-Áa*~¯F|_ŽBd0 †%ÑQ ,™Lú³Ù¬Ëï÷'].W¶ÝŸ½±¾ã^L †…�J¥¼âÞ,]îñzSáp¸ª2H—–d@ÃñááE>£ÍCG(°µµµðÓO=uíêêj$±½œ›��h”ŒjÝĹ»»ÛÍ—ƒa±Y¾Û�í âxô9]® ^wwwïðÙaÖRÄb±ÐúÚZäôå—?Ñ Õ%.à`tyyxòôinKÁh9®ºê„våÕãZo¯_{ò‰9í[ß|J{þÍWj7ÿÚýÁçŠï3.ÔþÝËn�Ûlm%µoýëÓÚ“OÎòɬ7‚Á  6÷~ÄEÿÓ˜àjÌçó¥KÇ ãûŒ“YL‚Ë­c°Û¯¾„ê:‰,•#/\D3çÏONŸ;wϤ¬páÍ •†eÏLM]5«+6¬¿¸´4–J¥üØFÿ$�"ÿáZlWiŸ F­¸ûݯÑ>ñ©_‘$†ÇOüä årÕ[é•ûÞk\†÷a["À¿øÞâÿŒæ÷8¬:³.LÂÒƒe09b<Àr2ÉëÙéé3étÚËg�Ø‘ØÙÙA[€²jinvvrüĉiøÄ@4øÿŠ+¯”-Ø·ãñ�PYO`V2ÂÅ {÷ñááy£ÛÚÜ mÆbaRx¸p+í“Á¨¯Dô‰þ~ŸÒª´TØÏÿÇ—ixÿ§Ûrܘô9�N9aÌår._W×Îèèèî îóssv±`Lœ:5�g1I^ƽ�1þ²@ +çï‚ûb ŽVë;ct¸£YO9õåv»S ü�güOŠIW’L===Û{é´¯ÒþƒÁà&nΣöÉ`Ô‚§žœÓ^{çË$‘Õ ˜Ÿ/ÔÙ·¾ùtÛŽ —Ÿ9ó¤K�T‡~_¥‡GF曥~`õ0ó7‚Â"k ÈšÈLÜó²ÒÐ{×××#87bBÍ…”™ÀªCwww~0þ©VÃ~óÓÚªö[¿s—öÕüéçªOO\ûö£ÖFGëVqÍEÞÒ}¸´¸8F“HX6@d~Ã3~,3N<±-™õAZ óóãb{˜èÆðÚŒï…cB`‘5-ÇdÄìí�ÁCËûúúÖ Ì "ct�…£«++#¥*ê(“Éøh9ž1ƒ"õth¦UŠFöÉ`”�¯ºõ½ÚÏÝñ;ÚV<©Ýó‘·JEU-®˜|�ö}7¼Uû‡¿´æm› X)vwväÀ¬O–Ü›ˆê{¤•H$‚d–[XX�Ä3|ÙCCC‹ã'NÌà~)ÂJ“¾Y©)F?ŽÑhÝÁwßiÛø~ŽuooÏk|?ƒ ¬" ׇŽŸÃ¬6j’ûX_üYX†gqq]¨âFŒÃ¾�m`Ï/]_Ï>ŒÃ€ÈÃüæg$]yÕ m~~UW6—R“ ²ÊEÂÿõ×ÿûÅm•€œÎL$‰Â´ˆõ^¡Z@SßÚÜ”ª >æ±ññ¼$ÐîN#ºººvèóáÇÂÿO¼^oºW(,"6¨,¤í`<À2äŒá¡+Ò IAÔå\ŒÚÐ‰Ì ±rvgÌäh¶WJRÆ×Rg¬Ñ\Pº®Ú}2G¦Ão òZ˜_Óîþo?-žW%™õ>Y�‡ªúð|N»êêÒOö–_ø£}ÛÃä8:–´­Y9A-•!°"Á?D* \¢å¥!êfÁ¨ö@dÆûŸÆ˜rã�1h£ÒÁ`c0l(ª›á÷ºYÓ>+T¤ª^úâ_‘ÄôêŸ|‘ö”xÌŒDPßü×§y=­ý§ÿüJI\ÆmÍüZ¹\Î}Ôþ!(¯Ò÷a9EóUÁèÓíéÕŽ �\N†Q þçŸþ}Åu ±J� ²Ÿ»ã)Óï?=a7•E¦´ÃZZ˜Ÿ?¹µ¹¹ ußÌ‹XŽ`øÇÑ’ƒÂÁ½3=Lv���L`JÒÕÕÕa� lº1ùòcØ''&Š&ör´¦4cH=þGôAÓQ�KYºƒ;– ²Ë4B^*�µÔ[d³ rÙ¬ü^9·C˻ՉSqdrš3“/ƒaGe*¤õPYå"t+EíÖòÞjAÊKµ±Â™ÎiŽ\^;,ÿ”as.ȌϩÖÉÎdùªcØ0"'Ëx¡ºº»“µ& «6Vx2 0¾Æ:šÀ Fë€êˆTñØÖVWã\p› ŒÁ`0¾'"/˜ßT�#/Ù|1YšÁÆ`0Z‚m-Ÿ·æ‘“p÷zÔFàcö$2|i1�1ŒV"—{FÉãºþ†¸ôƒ LEø½]ZÀç×ÜN§–Éå´�½]-¾{é~ vùµ o¿Y5±©¥3{òµ×íÑ{ú´”øM,'„Å2À¸ŒÁ(‡×½þ®¥�ÿÉdžU=¶þþ~Ž4jÂXAëã©ä¾íx¬`«cýÍçòÈ‹ØHß –ÍeµéÕ-™Þ•ܰX¶´¹Zv{�W$8pà Ôº(aâI¥R>c˜1u‚-×=– �âýÕÔšÃû7Ö×ÃfRµ2î~÷»ñhƾ¾öÕ¯ßðº»Î<÷ºëâý¹9hA¡±ëüž.­[á> 0�1�5€TvO[Ô/:—Ó¥]}|B›ÕÎ.^*°Xá¢ìëÊ /ì×BâulGÍò† cãM$lnnn†ÑÒ!šHÈÙ?ê±�¬ ½¸°0�uá½tÚKë#H´’Pùw>Œ°ŒVŽx/.ß�cþù1š g§Ÿ\T¸a„Éà0Þ㓤•L§´�?`‰ïˆ:r T3@õ�zQ» 9“q»SXwâĉ�×›¶z5ö¹gž¹mÝ—ÇÑ€«·r‡ M<𺴎¥÷-/·ÏrûSm¬uö‘ýÏ`Öt¤³{ú r‰Ïo:q©yà#³OéaP\Ä9iØN%-sQ®¯­EJ+�£<ÍÓO=5RnP÷z“œ’c…Ö™mIz88'l2dk ¼.OÁ\ n” oÿ…Xzcâ‚„-³0š‰Ñ�§¬$•ò—–÷�y K}‚¤Ðú\�Ôé#ÊØ ×µì Ü@P:*´‰8аKÍ«FbÆz]J ŠÐâûÁ/¢F Ë�õõ!ô—›Ÿ››¼üÌ™³ llóäO\ÕÕW?ff¯*Õ0[–DÅ4ÞÑ&��î# èåÌo=ðþ'L£ñuë�â;$÷våXA“_M[â‹¢Épò)ÐdPfy4Ó«d�âJî¥ôc�´(¢ÈêÉÁÌ“› ¡©j”Twwwœ‚DPœ-Þ­FØ¥yuuuÉ¢²¨‚ŽF¨´�O_~ù(S„æ…›››ÒÌ s+Z~0y•&}P_°^Ts¿à=Pd 1Õî¯jÆ �ÚŽ®@½ˆÿ $Æ`Ö \Ž‚-³)\�>¡¤¦W稭â€(g[…ÿç6–‹/¢‹@jXfÜoQÍ쪑NS®ŸºIÓ@‚Á½Jï€dó…í† Š‹Tfñš7‰¤úûû×Ä{Æ@Üñ­­PHüÏÃÉá$E«…‘¨úý²¶½)ù™Ù‡Aï13¢ž±¾ñ‚Éty©a9™PU+˜ÀG,¹-/$„¸¦õ\.\TDJ¸1óî»Ô®7n¢5CŽGqyo!³­nqã·‹ïÎ*ñ�ÃQ ¶‚ÈâdòZ^^8´¥ ¢÷@rx?î-]q•­ƒ 1 ÆTø¾P†PEÆ‚®DØPŒ 슭ø>è7Eÿ_ï´ñ/.,¸±/(Oî°[�IÞâ>#¿PŠr§ô‰b6ŸÕ\º�“D3üGõŽÀr|cß¾`%òVy¬`S¸�³©ã"­öfÁÅL3*ãlK5`°óÒì… “ðëär9ÔÄQÍò@v 9mE�†¿§'n �GØýÜììÄÞÞžëÇ �a¯D£Ã‚È’åû0b ÕÕ]M¿¶þ��eJ?à¡äpÀW eµ¶qéÞ”*?ÀÔHƒ;^c™VïXQn™Ñ×§òXÁÆP†´Œ~ ¨‘J-&JßkHÎHt4°¶�Ù ï9?77AJÄDßã0b�ƒ þ@Ù¯J¬«Df‚¸bÑååñÁcÇxD:ì÷èÊ ŽtIõš M÷3Ã_FÄ1Þ?TÌ£b0˜À�1h›ª†<ýÔS×¢µ=̈•ˆ¤U.Ô¾œZEü‹œ$½PMxP(<Ìl)‡ 1ú² ²Œf´é•…¢eèf@`0-¬Ð~øÊ*`0�1æR¿” @¸9FÚ•ÿÖQ!ÿ½B-áAMýLDk¢ýðÈÈL¥ý©ªP[~]¦wµÇæ�*z^n9öe\Vi;ÃJ³\1Ïœ?þ,�‘yíˆjDtåÒââ„Yßó°ÏFd'Âñùje0˜À%êëy©Äahp•k[CÁå‹ÇUý�à{ƒ:ëT%Æ`0�1Ž„Ã¡RW÷¬–Ï·/§…HMUê ìÛÜã “Á`«®Ý¬|0 F9 põÎÎ�…-KIõ ¬"°,öú‹ÛZhŽeÝÚ8|&í å•’‰x̬-É€tf´ŒÀ3FXᘩ¹)ŠY£ÍÿŠ­EGE!vyÉ L(®ãǤ²‚ƒ9QIÿŽ &˜±†DRx?¶}Î5r�q[«¾¬@—_ó{ºd3Etû5Fb9Âé ób=u& #)3˜�û•ƒ• ;nß|àÞD>È`%*×TT5  BÿášX^^±S)“WÛ� cžW)`RÄ£`rÄê8»8­ù„r ¨ŒÝ€‰¬@àFdÄ{¦¢³òýÅkG,{òâ¥që÷][�Ì´Ädp0:?7\__�‹D–­žÞßß/ 1Þ,rÇn&0&/FÍ@<•@jªÜv‡½—¡­#–/^”ÁVQaHd&帱¾>h…c¶*lïcòb0¬�‘ÑQ)¡Â¬âW¢¢¾8f«øï˜À˜¼ F‹ ’„—Ç­rÌHÀ1C9ò¯ÈÆäÅ`t(†GFd;£ííí�Ur¬�[dÆÆäÅ`t8pÿö÷÷ËÐÐÅ…… +rKI…¡è1ÿŠL`L^ F‡ÁTéââÒ’%Ê5‘ ÛX_g3b `»(Ä™óç';�¼òyõ*¥·»M»{7«å|CÛ¡G@ÇüÜÜ$*¿#ÑYõû*lùâÅq�.T˜Ý+þ°k(Ì‹ÐÕN /Õ¿•Ôi5¨Ü�#›×ÐXQ•‘¸×ëMñ0Ó< ¬ž~ó…ùù“V0% p‘_V`G“U•Ç,ÍîÊ fR<£…ÃñááyÕfÊí:ÿã'NÌ4³©b#�K!öã$ÖÖüæO?õÔµ°´À”8:66§òñ"�¬Â˜ÀŽ$/T•Ç,ÍÎ?š˜yŽ“™Tܼ:ÙÇ×즊‰D"€�Õ¸³®º¿¹Ñ”ˆ‰‚Ê¿Ž*luuu*Œ ¬y°¼ 1�FìÞŒÒÌàpÓvŠÒd0ÊÁhJ´BT"T·Za;0˜G——Ç;…¼Ð a¼\²»Òd0L‰V‰JäV+L`Èkiqq¯á¯°;ya† §5rJP•€ë«1:dJÄkX%TW6ÆV+¬Â:˜ÀŒJäÕ - æfg'à÷BbäÄ©SÓ|é2Sb¯®lT7%R«9·H“N&°�×ÌùógH‰tyÁχ:x=~âÄ´ZJ0íÂèèè&vV0% IË îgnxÙaf4£!|¼”›ü|‘¡¡9Ú`0öÃJ¦D¨0 >AÃKþõ:ˆÀŒ%¢.›œœ²»aÏÍÎNâ5.úf†‹3vÂè­R+M:ñ¬7¼dÖ 6«û€¨ÊF'˜Ñà÷‚Yæ‘qnMÎ` «ÔJ¤ö0R1®¯ò/gsÃÅH¹^ðu‚�ý^ Fm(5%Âü®ê±†úûe0·Z±9�Åb±2Øñ¹^�P�ý^ F�Ä`Hp^Z\Sõ8�­V0Æñ/gCÃ@{6^wB®@�*xÍ~/£vˆ‰îL‰È·R¹µZá"¿6$0 `è¤py`aa¡Xç�ý^ Fí@¤U€G¾¨ª&:¨EòÙ± ³�¡¯0tJâ..b£¯�ý^ F}@@™èV¢Q%›IËKqb³� AÔ׫SrÌÉ\Šp`®„Î`4†¡ãÇe›øÐU W7–—â�úÚáÈçóí«_ ¾áuw�1®87sþzmÆú¿ðùb�^�OõõF¼îõw-}üO>6Ìëí¹þ(˜q|Xv÷»ß½höý1}îÜ™oëÛÁwß}·¦êýû¹Ï>8ùŽ·½-ÄãWíë•íÖ)A@:•î®wÛ_û•_ü±GuT»Üîa^oßõGšª?¾V"24´$ž”.œ0α¬^¦ÊÁ`¶)�2Q�Pi0ÖvDÈ|­Q‡?ñÊW�ù·Ç~äþûµŸw_Ñ bmeEK¥R0íh^ŸOùãýÎÃ�h¿ð†7h7=ïyÚ½÷Ôôã¹ÿ¾û´û?rß>¦Ê¸¢ráot˜†Ï¿ž1 “¡ŒÌè÷B—áN `0¶Há —Áh™ Sºt…Ôo¬¯·-হG¿ó�†’½±=ösÔûÎ?û¬ïÛØØhjD¨BÉÊp¼vJâ.H›BæÇÆÇg4Ãâ¸é¦çi¯ÓÓ?ð‚(„d,Ý´º²¢dD¢1¤¾ÞbÄ ‡O<ð@ø-o~óÄÏÿìÏN~øÿðÐÈFø•~ó}¿ÑP²7¶?ÌÿNøô§>5ˆ÷=öè£M­Žbº¬´`m§ø½JI¹+õìçU¯~ÕÚó¿ÿfßðÈ0G01LÌØâzLõ*E vaf&¸)TBìU³ðàxÁ` *QQ¸ž(äwß}÷øW¾ü·áÿS?%-9O>ù¤ßî×›éÒ‰k�Õ6!í×ÞyçÚV<Îd2L`Œ–⋟ÿ‚¶´´(U–Õü­ øÖañ@¾¥ŠåÁÁÁ( 1±Ÿ«•dA^—MN&ëw~{®Üz˜ðþï¿üKêø‡o¹¥H�0~ãë_¼âÖ[c§.»,]úþ±±±ÆZsà—¾øÅÐ _ô¢írûÍw¬b?Pƒóóó¾J¾PZo<ž¼ÿý#ø_L4\}}}Y,Ççýó?ý“T¥?øC?7£©&DHeÝÄkáì¿—ÑtÈÕ6­=žÃ�òaÄ›ßðF¹ �ÕàK_ø‚ Ðx䑇-yÂa©LT-Ý× H¯ë)�õÜ뮋?;=íG`—Ñ/Óâ oþþkaÂ{øÛþê/ÿ²¸ïésçüo}ó/NÞßGG^vËK¯Y¹Ðûã½ï›@´3–?øÙφð>¼Û!€ŒöòB:ÅÌÌŒ¯ðÞÕÒ/`æüàïþÞøC_{¨Ÿƒýb9Þÿÿÿ÷Œ½ómoŸÄþp<¯ºíö«ï»÷##x<þøãûT¥©Ö‰‰»FÓa'‘6£sTÚ]wÞéǨڱAu‘ŸIÕJõD²›±XÍçïcüé4H ¤RI`ù½÷Ü3´¼¼ì½ÿã›úëÏ=8uϽ÷'ÍCÇ�§¾ñÍ=ûŽw½Sª6(+<ƒ\^þc?º†÷Ã$ùWñáïþÖo�÷ôôdúú?ŸÅvCCC5»> ø ñ™÷ÿçI¨Æ?þð=E¢[¾xÑ÷{¿ÿ¡i(9øÎ‰„ë·ÝºöÅ¿ýò¯zõ«cJ™qAÁ&Ý)7¸ÑtÇm£ûÃÌÆÔÓOóèÉh˜| Æ ØH¹á,/®7¬ûǯ=´o9LŒ�>òLC*~Gø™¤ S´t� °ÐÔJ²BdA8 *�Hd…õF³añ|r=~â„$¢­­-7ÔHÛŸž8uÈ ë€"œ<}:‰Ï"¬õ;~ùoþF’$”öÕˆ­ÇþAT0¾ù-oY)C™½äE?xmiÄ£)>0„²v¢ A�/2¢bv3ö)’n1ãrmÇ·yf "' ß?žÁDøÈÃkÚ/‚1`*„É9f·Þ~[ñ}ŸùóOÉå¬{ÏûÞg‰ïO~¦íx\ÉÄaŒ…ÈW“ÁëëáZ"²anà¢úÊß~e›HáÌWì@•að/Gb¥¸þ†äg¾ðE/ŒÝùº×E�ËAŒ0;R8<ÔRéös³³Ò ¹½½]6dþêçðgŸ˜:ûoÿ&ËÒ]ûÜçðª >+ñŸøÞ÷ü?öã?#„C¼ž˜˜H"ÿÃOÿ‡5ìOœ'×s®¹f‡ÈçäÉ“O"jQˆâø\¶ Ïùû¯þÃYø­ðÆu´_|žáû‚ªúÞw¿Û-;‹ã-=&û�bã§W|ÞúN¦ØÅ¥¥1]Ê/uŠ ÁEØ*Òæ<°Î‘Ö+_q«$ "©EAD¿ñë¿.I Ë?ù™O—Ýþ oºD`0'ÖC`å \ªæ�íSk °�dRÙ‰D²âO¸ZÃà^:ÀUÈÇa où”†»WÚ_ér£r*Ý­Ãs©Â*·¬Úc0…ÀJ> c‘Èr' 8Æ6)­ ívå�%“Im/�ÖúB—\ñ­-r…Y¦¦}íîÈÉ–ÖÕÝ­ Uª‰ë�™©€„@>P>¼#•Ùç¥2úÝ}°Nr.›ö&M«…“!LˆÒg¦—U3¢1QÅÊ?D²ÛÛÛ!Œ!­\m9È„n©�”óÓ!ìîV޶Ìf2š˜±JÂðL¤V+P$�t*¥m¬­ñ]XÞó¾÷–]þÓ?sGYÓb5¸õ¶Ûå3H ùaK‹Keß²|齸èOÃgZÁÿµOáèш‚ ª’,å„q·æÊp½÷½ï}c»Ôœ’˜ùœ8yòYñœ·ûÉÅìNÜìR}¡1g«L¦©t:,¥¥aˉímI:¹lVóz½hÀ§9-³·§ù{z 4µØÆ†–L$´ÝÝ]Ííñ ¢J[Y^ÖÄLWª5¡µ®®.m;—ć}bYJ¼ûÀÿñÍMI”ØŸ8_r;(6ì·ÛßúÔúlÔ¥ª€ÒŠoǵïž=kPP#B}}¨üû{ƒÒ_…‡g®,ø­°-ðo…µ×Üñ3Úk1a»Åz"(¼ÿîù°|/^¿ý�ïÔn½ýöâþ`ÂüÝßþm·øÍö®»þúUÏŸ¸î\ˆDt8ùPÿ†¢Ög"‘èÓòyMÕc4m»CaËí4õ%ÈKúû`ÏnU¢6òÀ¦§Ïùßñ®wµtœŠ+Øß/Û�ôÚŽ ”ð±cò`3Ã÷,*+Ï@8,Ék@ ˆF2#À‰÷a?X¢Âk9áû¥÷æÅ Œ}1ö¦Ä/  px£Ë�M¹uÆÐø"¡‰kÈx·3¾¿Ü¶òš×óÀn¸á¥{шk5®O2•õƒõõõÅ¢ËËãlF¬Œ–˜Kðð?1tŠï Š“ÚÃ4+ç«�†£y`ðUA•€ JÕ È‡úgá™ü\Ræ»\Åíóº ²ÆíK÷AÛ3ª°WèD’ªD*Œƒ€5f}˜÷U­Ê�cd3¢ †Ù´Q[ÊzG‚^'Ì"ðý—/^'Åi‡hKò}!ðj ¦ÀÒå 6Ͼ›A·¯w�ˆ×ÜqǾgFM!ÉAL4»U=ƾPH:‰ã[[L`eÐ"Ìeb¶�¹03syOˆ<”ƒTWW3 1³–ÿÛµ„”]7Œ sˆ f?Žqy°·W.Ï‹‡C(­ÐÀÀÑŸÇ# æÂ°Þ™L’Ø?þO¥R|—ò[½Bõe…<°â¤©«kæ¹½tZÙ™›‡#ŸÏ·¤´4LhÀPnæsÙää” TÜxfjêZ¼>911Õê"Å(šº(ó¶Ûo÷Ö}viU2ù™:ëÄתÐ{(HsP'ÔVaèŸùÔ§”;¯…Gxnw¼7œRý^Ådz~nn“ìÉÓ§•=^1ž\ îï™Né—hªp¢aFƒéòŒe²ÚQa¿Uy`PSx¨¡l¥b³bþr¬Þõö·+ylŸGˆ¼Uê6 ¯×+MûâÞQÚV-Æ‘MX"‘2�µ‰Àê0Jÿë!ôÓv%/;•ÉBH»ª€2Dø¾×‚>2꥕Ñâß§NÐE×ô#Z÷¹‡+æ~Ù”ÀŒ„f•�³·¯/†âçª ¶-�QQJú¿•¹P*€Êd¡¿™Õ¿'g8pWª˜ÏÛ£mÜž °õ—¿I™ãøÊ}’ÀòÀ¾ðùÏùo»í¶°±‹o5 &Ž¥*]º»»w`Ñ€‰~{{{Ÿ¡`1ÒJ4:Ô?0°J÷" ‘¬\©þ(ö5VäÀq |“*mcb|×Né�X Zjƒ1žh”Q²ó‰7–Éjgà÷c¨„Fú�!Wt}mm_Ÿ.ËÆúúPB�þO§Ó>Ê)5X ‚x€pdðòrÑŒþ{d*$²C„´X>Ž}»Ýn%„HD,{â{ß»AfªY‰�KŠg!X…µ‹ÀpÀç…‡�›Vâ¦1«LV;óÀŒ6¨�mRbzbaðÆ=VÍög`jƒRÃ~0¡4ÃÅ$Z(´eÔ|vzú*2ù#à Ëpïª8Võè‰×ˆF䫤MFäèØØ;ŸD˜- ïí6Ï`´¦À@mÌy€ ÐîînU¹Z  ¡ãÇçL5WÎ s")šR WŸŠ>z"aŒ3 g¾ZÚD`ÐU¬öÜLõµ¾¾¡‹Ÿ/)F'y`¯ÓÓÕtÚ-g Ô”ó„0÷n¿¿æýÀ?s¾¯«k§’/Õq ÎŒË0U9Ê�Hw[7§2 â€ü.ß6ffRª‡�B}QÒ²ÇZk?°Vµ/q¹œZW—WK$v÷ý¿»›$Ÿ+» ¯± ¯±Œa¸1×µžï>¤¹vâZjô -5rFF.ÁoA>£�Ë| OËm%)ˆmv&o*nÛj4£j�ÂÆVëöØVÜ�)ôû‚Z)GbX† '’„�êKåkÂßÓ¹C¡r8ý 6a³ÈKh]•¡Y}]"½~ñ­oMU›ÄŒÊï¨1˜kR‚2HèÌcÚäé¡¶´ç\3Q$ª‰SÇå³ñ½´, Émމç'#Ú•W�ÐBý¾#uô B|ð÷äëž³_ÓN¾ÿV)HdE„e$0ZþÜ‹¯ñŒm‰Ð”ŒtE$X+ò•6sôz½©Ò¼­4Ì÷b9Ý“˜x#]§¯¯oMŒ!ã•>¦DL<­ ¾tb—Žn• +£Àв~°Ë”ó¬î*òH}!iÙ*3"Ÿ^ Õ&ÐEÜø¨œP÷þƒ½RAMŸ[,ª,R\Õ`æüEù|âDD;~|@‹mp0ŠjŸëJ2ª6ôÞ¦?öÁ×h}ÿô)-qÍK”ýžˆ¤Ú„ -�õì‚ ‚‚- œ9ˆrmpO ªA£££stOÂìˆ÷¡pø¹gž¹ú°ÐsL<1QÙ©~-P#N*@lg×Là ¬¨„|NSªÃ¨¾"CC–Éþ„ùÄ%g®zO.ê¹…Þ\uM6°,çs_‘w9šö)¤™Fê 6{3Õ—Þ¦FÚìììÈ>]‡¹|H— (ôÛºT.Ê�™]ݾ0˜ Ịo%e0F( mmÆ�Sñô×齌֣/£¨ÅœØÔÔ-«—¼`ííë³Å ZŽt@hPfFÀLXÎÇõ•Ëûõ†õÉ–ý`5*@6yALîXZsäÅ@é’Dró¬§$±å=Žâ뽯$9g2{€ÀhöY$µ­½âgì›áG&ú‚žèLSO˜Q} „Ãm“ðz£ww7(énñ:HäCÊ‹þGc�‘ÃHZ% nÇXòªEuå³!^)áÿ=ATPVdRÄk¬Ãû÷ýF^·Œ@l4œ~'™”†jõvFüù·K“âñ�¿]Û|ñÏh}ÿøçÒ?f4â�œwáiÀÑ®ÂÁfô›���0Ö\5ílu?̈ðƒ1�U K&(†·æ[Ú7HV�’«@XB‘í…}:Qå4otWs'2…÷¶OA€ôXñ3p`i�äÔêö�“vä}�¬Ä£„…‡ ¨y^‚¨Ò?þŠW$¿ïæçû/›¼Ì‹¦’Õ˜Í(X&Ãncç·[‰‡ ä³°°ZTPçÏ_Ô†�h§„²"r‚�ŒT€°{ÝîNZúÀê yƒ¼ˆÄ]në»veþÖéç•'êÉ›´ùw|Z†Æƒ¼Ò£WH#åzA‰aTWzäLÍæÇFÐŒ<°šÈ<šM^¢&ÛF`ºLŒ ~­ÃQÿ�.ÆI×nVš3¡Kck^¨/¨-§ 0-Øü™°3uø„£Õ„G5›�÷ÂÚÙÙ €¬ ®Êåàù|¾¸ ��®®.„ Ë Õw½áõÚV<~¦–~`è›A^‚8ð(; ¥5[!0&ÇFC攂¼¶Ò®Í{B…¡'©J)S˨,A8‡‘ŽLn-´³)”Øf›‚6TBj´ýã¹´@ÁBÕÆœYTæ×-﫚Àâ‡rk{’˜`êI¹ã{E%µ¯̷͑ä€�2 ¦‡/×òîÖ˜�P�¦<Ø �ma?Èm©¤°ð ,�HË_GI�Š?ºÐ]ì¥UBøBÑíJ+GФÆÊ~wAdNÝÌj‡@Fg�üîCàÒ°kÅ–(0ø¿ržaåÉo"TXiPǾÿ›iZ1øÄ@fÆÿÝ5Gv¯eFmPq¾ží9$�þqñù+–˜amSRg+`%%rØw€ªBsËRƒLšÅr¬+FfŞ̌Æ|7òºÅ6n7g•4ŠFú�1ªÆXmÈÑÉýÁjö�AmÁ?• x´\·7U(f¼w‘¼äÿ]®¢:s¦öO™\aÛ:°ÏDèt 2õÉçâqºZC^¸P¨2ü«UY‰D„…NÍ¡2!k¤U¯Âª6Ìv® tdî.œgi6Ä3‚‚y´40…È,«“?ð�Ä(öëËò£Ô’¦Bð…e ¬«k†Dn&°š¤@ %˜A\îMD&æeô¡{«0ˆd{ D’ïA¨¼g-%Iϵ½'U^7 �‡³Á°æHï¶T}­®®ÊÈÃÞ¾¾µÃ$;©,2W*S 5üàúE�œ0„Ü#àWÞ+þyüðÆÏ¨™¾cš7z¡Xb'+þo`g¦›�ÊÛU”«\ðT«§§'F…C­HÊ ÄEiÕ(9Ihb ré%&ÕšØö“%“Yk�¿ºþß<•,úÅX¦0&¹r2�ÿSÃ…1¯1ÙÆä:pÉõ>±ìRJPö@-+¡çörrÅqQ³&²S ‡ž Êv¨)lp¿5€B拘jä_×ܱ‹’¤ò-P\Tñ"�N£êEfAŠNº—TK�4Ue!Òk+×’V•‰Âï—•êÅ·VRa•&+—րĿ[-…‰«!3|‘>sOWh»˜íȬ^qûmÚ¿ðø.•;¯bÔ~ú“óÇrYÍ»ü¬|vi+²�LÁÂÒ%ë:æÝÞ#s=¡´ˆÀ¤µH•ƒ"UK££ñΚ!;pIèù£ÝL`•X~A­J%P^™Ðq-¨i»rÅ/a”¦„tº¾+*ÏtÀ| .~Ÿ×öö®�°:Á—Õ IP±Å ™A°•ZÀÔkF¬†<ÅÌW>dc*% ÌÍè8„Ì@Ÿü̧µï<üˆrçõò+ÎÈã3õþd•ç8=|Zv£i!UF*11qu¦G˜ôW¹Åo°‘.Ôgíºä_‡ï~Ÿ¯=“7-£Q ý Üb2åÓ:–S`ν]qAŸ¬y»ååå3UPY1è$Þ.fÜÉ .L©üøñùN«;V‹ziÄ\W· ¥«KË&e“™á£jµ ßÕûñ�jL密Ì`j³#ÍÃý�ƒ™Ðé’æBV®»Wsm®hZïáû ÿ”4nJÚ!­Ç-Ô–Ñß…†iŠ˜¦`4-HdZ˜¼QJ�rÖÝ�Ô'â‰h¹ŽÌ0%ÀŒX«ƒŸêÀ çõÐáU<Ò°)Í�ÞyAq©J^*ä�aÀ†O¨ŠçЋW7B‰•’‚-R_�Y¯q»t2‰QðŽ«efÔÛÌø»ÜÚÊ¥ßyK�Ù«íºô D%Éú<2‡Uª0Ý/†÷�_,#ˆ ª ¡ó´^ª9�šQ§bü’– L&à ¬òE Ö�âò¬ÎÉ@Žr>°JA###Sµ~V|kKzŒUn7nv褮‚²ºß©�q”’˜[�7‹<(/�’¬+‘UáhÆýTTV*qé7Þ¼Df‡qÀl5…g¹/¯SþïB WÈ„…Ðx�Xzз�œ`jDH=Ï‘ÃúƒäUúf‚&Õ�‰h9"œº°‰;�9jœ‘ÕD”Ù¬ öe¼¶J»q3`¬o–¿ $õW:)˜‰Ä3ë!¯«Õ„k$3\¢“Y1D_Ò*íÆÍ /*ߤ“¾y² "DNâ˜ŒÄæ:ÂG?‘Y«‰ƒ’¦éxöå˜QâÝÝ¢:séï·¡5š&Sd›‰ÃëÓ²�pË*íXvw»S¬ÀŽ€J™áÔ=LyÕàQEóa(¤tAÒVå�UC^T?ÐH`0“™eC˜{fo¯¢J#2ƒ2’—ñ™QÐv¨F< )ÏŒJZóÎôïR$4l£“šªhU?0D»±¥‡.c3‘ˆ¨Ô©5•ïÈ\n††Gycç²²þaN÷y!‚IæŒ4A�‘ù°¯¯/¦òت<°Š&ÝçU)|ƒ.ˆÄ,@…íííU¥„J}T 3�örÎL4-'4Ê3ÓУMŸP�F<—š‘�ú3Uç· 2T|\•ü\Ò÷�Œi™Þò%ãÌLùA0˜ŸKAgpy°;là2©#óa* d/ýï‰^hÊI!ó!ìËl>,xô@ S'¿^c Í˜L`E2¨¥ø>؇±t¾/ÕAlI!iz϶¢‰Q¯²ÏäXòÝ�dFÉÞf)6$Ùb`Õó,ÝxÆD å×ê17£h·+ÎZö)°¥·\GfD:„Ò’Ï„ĦeÖ>)°LÚ©@Žã9Äø98àkz)(”@0Xô‰™iFlô»�$ ¾�ÈMß‘*{Pé("³6β „¦s±- ª�ÈLN Jú�•î‡~—}¤VG·jI@†Ôúü¿ûÛ¯hó¥/äå/¿éG~ôåÍ=‚¼òÞÊi=�Ò‘¹œëTX®#sN\ÀžµE-çÊ|0díËÒ38ñºöq2öÊÛ”ÍÌ#)D’©ËLÖð$I Ĥ2)ô½´tE2â=í²0¶…)%Jg ’£ç"é”t+°°0¯=þØcÚu×_W, €gä\ó-Ñ_ïÂÌÌ�â•‚80Q…ï;Ý¢ŽV…ÒS¯B&°£n“;2g{�iŽõEi:DNìáîØ²ô‡ešpq§R)/Eõ„B!å˜Yy`4°K3�•ÝtAG•Ž‚¥êôf¶Z!"­d2$ÒÂo—3�u«®Iy”»Pð ] â–Nž<¹Ø´‰+ û„š^¨Ûê`V퀥HGf(¬ÒHÃÌÀHÓNȶn>DÍC¾=*£ØÁ˜Ì[cé¨ÒHÆ]“üe5ÝìFbkÑD£Q?,ˆƒQñœga„ªí´rwÊwdöÍ=ÑÖ’H$$�õôôló­q�¥ ��¼>kW±‘A(üë/ï?‘•æ1{{�E2‚Ì)’‘|P»mL–V Íè†ÒQ²P�˜d{údñîªÔrudÞ7Fú|I˜;1ÑÒ™«Eo ¥ vôªõVðfä�a€†ê ?�•��ù•hTÛŠÅ ÊJ7­‰Ù¬¶±±!ýIáð¡û(mµr?`b„*»wsn4LöÓÝRá'6¥Ù°UÖI™5˜™™ONLL5ú%«Mðà †ü_VI lw€"¹4p[½†¥¿¿_[]Y‘ùmzM&Ãj÷Eþ2Lýe»âœíŠ [9È¥•@„1ÈŠT—Œ6N †¨Á¬Ø ™�£´P`Z'&3+oÛhç2IrJ*«/ °ºù°¨ Ä÷@¥‘Àˆ�B‚Üê%D—š‹ 0Å€Cª¬“k˜Ó ‘Äh`Y.*±:2´wGæâõÛý -K`íåùý~öU¡¾ìdëí들bŒÆƒß«ßqŸ‰Q7+KX�À(ŠÑꊶÑ~`y‡K6®4V —“JÝŽhÄ£ÊÅuJGf†;2·”Í.fÅ)«s;óÀŒê 5ül5óD…¶,ñ­­‚‚Ò{�5û3pÞð (Æ´ž_†$ð�ì¬øÑh?0T£Ïæ+G†ç«(TÐ)™‹×•Ë%oÊtõu2#]ÛÚÜ ›<+nkÝòuwwïXålgUzï°ƒ¨¯ÔQiÔaÓo:¤#3�Æ+1!b#œ8qb&7·ðX«ý_HZ6Ö:Dí6 �ˆ©¦¢™Å|�k®½ö‘v}.ÆVŒKÁÞÞžççæ&Q=(Ôß¿ÛØcüš<}ú »wÓh™§3*0©j»küðCÇ�Ï--.NP5i<ãÇ‘�Ž�]P½ÖX«óÀ`:yAuuûýJž"/Ì–óNuÔ!fú Ùb¦N³«±|U¹pü¢ Rì¿“|e�މS§¦1ù¦ÂãÆ[sÅdv¦ZAµŒÀ`ž£×—–Æ�=©â €ysuee¤´-÷à±c‹�î ƒOfW›÷Y pÕr>uޱÙ¼G…ãSFN’¶?0±?qbº\E(1UÝ6– 0¨/£mŠþ0UO*È *Ìxtºß æ*R60Sùl¸aEÃñ¥Ó‹ ë0êIÒf¨²FóÀTš0Ôø›´ÝRSÉ�Zê˜{¡Õ꫸ìâÅqU‹M¢mŠñŸ±Êˆ<°»î¼Ó?õôÓM'/0*º*#)èthÎ]p\šh;“™B z_Á'VØAþRtbÎúÍkQeÆÒUTPXª²Ý]ù ÒUvè$ ha~þ¤ ¨¸±H.|ùápt}m-‚õ­(ð ÿ¹œ`Šë+×Óþa}Ф…Âb=ÅlO`®DLsÇ–Åà“Õòž.-çíÒ²ÁùÚ½P¸x fGã2ÙÚ<¾^P.n�lgž ¡jÙÏBåýz£ 2¾éÑŒd "Õeg“aÅsPBZäïÊ»tß×vf_sÃ\·87›Z!¨£Ï#ÍŠ²?T óæ|• —†ã{lüc$'rèß?‹{ŒA¥µ*ß ~Z4àl?ˆ±!e=÷^KïFºÒ&²º#»'É+5~µ ´ð¬ÎiŽÍ1+?zÛtJ’ÈÌ™JÊm%Q ŒTR8Þf˜šÍ¥…™3äíÕU‘ļN͹#.É>­8H€´Ü›éBÃÃ~¯ìE3aøË`~ô-ïJ%ò2cpQ û ë&FcàÇW\©½öΟÏ>ÿæïOYn²[¢ªÛÛA}RYŒð£t ¶ýt�‰ÁrÕ7H› ©¢üÁº.r>¿ÔÐï�YJƒQ�õD3–Ë#âBå2ÂÜSKsE; 4´9`û3ÈèB‚j;*¯Ë*áó­Peå?®»þ:< í'æçç#½½½Ñžžž˜•£÷¼Ï¡„ÕŒà Xo˜Ž#0áØMJóa-¤‚(CGZ¨˜|VËôU¶6YO4£1¬\óC—mÃã*(—}�¤Åµ˜“V— 4t¡˜™��5ñˆÙé»·$ø‘³éÜ¥$y¯ë@…'Ág¥å -cçhä8–nCËää#}p.á°h`SÇŒjðm�Œ ³æñš·Ï uåêÈ)ˆ,ëQË'HË3!ù¸ˆ¸¨²ƒÑ6µâõʲlÝ]]3B•„¶··Ã ²���bÀÏ‚ÌÄ{bv ³bð¬;=õWÉÃÄÚ™Jf/¯yÖRs¶à ÏzJš´‘t/' Û³7™»½x óv_Áֻ߮¿¬Yq¥ŽdòŸ/öá¶nNÇX¶ï˜4âB«Â>r‰¸\^-Ó{¬¸!Ù*/TÇÞ®æÞX®LŠ^Ÿ– ¯ëû ÇZ\(/1H„�H¨Š+.†0ä�_{ç�ÑP(¥k5™L†²Ù¬×,ëëëiY0DK7�Ý7NÔ5¯ˆ›:±_ˆ r)˜±³’Ш®'È dEEP_X–ërY‹³°¿B* Œ>ƒƒ8Êñ€^\R¨ƒn³¿(|X–ue¤!ˆfE$øÎPbô‘!±+°ìÞ{îѦÏMkÿùm¿¬]}Í5ÜVža*Êå��œt‚šÃ5¼¹¹�Ã5,®ç.—Ë6d¶o L%Å=ï“þq¼Æø’õ‡ª›HØ™CsnïI5fŒ†-DÑîÉ4cZH' ¥ÖÝÝ-3ãTmd™íé“”÷â³2ÚP^\Á�} Ë)H æG<ƒ¼2£ÕÏÊ >1\¼ðo}d¾¹'?>qÞ`†Ôe •B{aŠ™~æ\ðñÇ÷¦Ó{L^ årŠD"3x�/LÆìJfW0)yA�a²,'®bH_~$‰��œ»Z!}eÏqÁ÷…Pûc ʤe;¯=ŽííL˜í€œ*HÄ¢?ŒT˜{ƒc‚¸ôb­ú,ªn(¶÷àbF£>«t\{™Œ~~þ*øö®NZFÿ�¸dÏà^á¡‘a5à¦ë¸™•»æ­¢¼`qÁøâ܉Kò‚µd¤ã¸’±êM޹|±Û�æÐÊ•£ƒ’ì;ŠÀ0Ë©F®—�LDX|Óc}Wt!ÄÞ·tN>CÑA–=¡´ˆ¼<ZÂn"ÙN¦•–\ÌÈçrr÷h3Qo?°Jd«ùÌ"î�8ÈL�ZÜsDx»¹–�÷7Üx  È«`ù Éÿ�ä-Ý?…HCw,­¥�wË{÷FZúÃ(òþ,üŸ æ±’È2—HŽ/籟…¦-‰Ì°{ó­]Pt…�ü”œ}U"0˜PŽ;6‡›ô¨ü™fõ³2Ð9-a¤“[µ� �? ÚŒ~`F2D™‘ß—¢�“»®®.�šzýÇr9©ÄŒªLJfO®«zŽÒfÉŒ$"D " ­¨kªÅÈn zT"JQɨC·C’–{«°µ@™Àj½4»O—*&y.º{5Mi�y²œÂ¤•ªÖ\Òh?0; /’eŒ²™ÆÒŠ�Rî¤Ø¨O‘J0±o²¡1„ÈI€ò €ÌÄktKF@Ã05B��ÌÄÄoÛlk"žÝ›+û”–':s‰Ûºƒ•·…èò¹ä³|¯Ï%Ru¹\ZzÐ'ýb²ªŒˆŒÈKþôš¸¦ ïÁº¬ßuèg0�)J:nûçîV¾W`ÿö¬/|_e€WŒ¦ tM˜0礒“ƒM!Ÿ‰O¬B hF„æ#À 'Afr2ª³�� ÍlBË ‚ÊG&%¸Šë¨ kñ½Žý_œ…(ÄÃêrÊÎ ‡(®ÒÏ`;ê\«ÊɈYn’¤¹j}¹@^PYÙ`˜G ÅòÊé¦�øÖXhW?0Œ%FS#©3�Ô¬>¥„“£ ´m�­•å­L„¹ƒÁm&0øqô™RË*8ïîìè# < fhb8I^°”7VOå�jQk?0ÆÑêKN¸2ù?L‰ŒêaV?0C®Y´¡á˜uL{½Þ¤xì€ÔÁ¥š‚(ÃJ“isÔ[À€a’kœšÃaƬµßηÁ÷QK?0FelmnÕ*¬Ó ÛåM<ºÓé´_�Zþ3Ýì(M�Djú¶q(¶ÝTJJ%ø—Ñi¢r«”¾ãȤe5D=—«èƒú‡žÕöòwd¸âá?¨¢ÉÌ­åÓÂWFÞG%bÓÂôõO?R)-™H”Ue±� m Ìæ_ZѬ‰G�HM<ºAj¤Ô°~/�¦÷…çççåE@¦H9xºÝiAreƒ§*¦ïè÷»Lp.; èEzM‚Õº´œÀÐR&Diæ …b�vãÀ|3F ÁAæ$¥ûHdÄ ZÐÀ|ˆ†Ÿx�F x`ãhÔ›f ¡÷kƉ6Ôm%Òd}boÒátú@nF‚ÃõA$WÇ…Wv1òÑ·Î æÌä-'4ZN`*0z$R—Ö#»»iíâÒº–HìjϹfB[‰Æ´hô¯—Mž\˜`a»øVrß{«L(ƒ—#×|™Îy`�a'™Ô‚½½Å€�µ••�‰ÿCýý²Â?XõhF˜™ÀxE¡ûk««°ñyÃó俇)Q<¤$‹ÅBâ9x�ö Ít,/˜+Uá@X{Æ×~“D�áb¾a³{ýÚ1A`3ç/j3‚´@bé½êò…@^Dfáp¯v|x@nÛ¨ÞßdLdŸ´›YäƒÀ�=0þ¬ÃL‰dn’â}¸�m¡Æfg£Õ˜Þ$S¶j30g"&U™¬F¿¯Ü楘�† ‡õµµ¦Ô!l6à» ;ÖÒ<.äŠá¡"œ‚Ãe ÈØôðéµ(ˆ¬¦*e0·±,È( ig¯òø‚ó{}Ú|lY ˆÉrÈÐb;q[žç¶&2·²œT%¸\Τ”-– Jj¡þ€TgXb¶âɲûÁc·ÆHB˜ ÑØŽ-Û”aõrðoa…ŽvÕ*T$/"W_+qUÉ‹Ž� ÌÀl˜C¢²ž Š×Jy`-%°|Vùvkz$¢ «¿Tl™l�÷ ™SS$‘Ö>åÝå—Á#º�¬ Èº´dz×vçÙö -¡®ð 2¹]Ó祲rЇ‘¸äÅ15_Œbœ©"zñ¨jøîíõ÷߭½`¶2y`ºoOäÅD¡�½Ár>.7X=lßoÚ€ÛnWj… ­—¡ô5Ø�z_˜¯Âä×%®{(®ØNÁ¥°#H ÿ#øƒ ¬ÞÙ ×› æœ`Ф û(Ÿ—ÑÄXœU B+%µC ¨IÕðq¾ª}/ç�1­žÕ3f¡ßW3ªì@M¹.-è“D4·•¦D"°nC'y˜ »õà0øËÈäØ-ÔWaÛå}û% <¿\1r&0’¾ ·þn&ôD õy�ŽŽÎñðÁ`XèÞ—9ŸêÞÖ# ²â��w”ÔÒæjQEIü[þ€ÒºÚJó¾Ò3ãÚö¦æêí—ê ëãú~ ó EÍš)=íR`2”Þ¬dævä5yúôßÎŒNE»ú�©‚þ��ÕõõõH.—u9S‰¦í~­øîlÅõ ²©åÙªö…DŠB¹›ÛJ–U`ºI¬õå¤Ð—«ýb/Ÿ7/ �û�1T‚YýÀLœ´¦Å¤õ‰�õõ†²ƒ‰D�n|)H`:ߪdfêÈ ;n¹¾\íB-¾«fÁ*ýÀ\‰˜,bªå²2� çí’õàðÚ7÷„–í;¶/GƸ iQ(·õʧi˵°š*¶Å@ûö\·KË/9ÞÝñ=͹“ß+§å|.q.<Å@êelùNËð¾r†Ø‡ZÄ[•ÄŽ/6²�‹KK#L`Š˜ßï—ÓªdæP(ÛÝÙYÂ,ÆLòbßUeÈÊÜ‚¼àØF° rá›+UåÂ�¼ˆÌ\ñuYÙ ž0ävä•íõHÒrmg4÷fZË�Ⱥ\šgM�[:§í øÄ2‡X·'I ¡øGE3b}j´0ô-$‹ŸÁ`0�µò†v:³ 0ä‚¡5�Ì€RzS:ªÂh-d�8¡¢ê‰ØD.LËY'j*pKC·Ý¼Ë¡9w³Z¦ß[$+¼á¹¶÷Ä2k«(ÎkpœÌæ5O¢ý. ‡5ƒÛG`p€DV±aÚææf(—ͺ5˜«öCÎ[ÞÓUÓû‘êLÆõš>Ë|W(0Id~·æJ^z½OYõˆu[Ö/îl—<0L´¥e¥MÔ—‚Ar.4–4 ===ÛVú�ÚF`” &ÝAÅ.î�õõ!ë±HdÙj-µ­–†Pc ®§””² “dÞ©vóX‘R¦Ï+ÕÃ"ªYŸh»Ýî¶8Õ At7:ß7z ˆ%€;† ¬ ( JG¥�ǃ貊×h!nEf©�¡ïXÕ=‘òŽK•ïò7z5Ôá®ÒfêwÕýSðyÁ<S"ü`øVÞ@pGQa¦öÿ_^†òõcgÔ ‚ñ Ö©ãVÛêßP.˜™�å]^¦×�ð*š8í„r=‘Pµ•ú5½Y5hùÁˆ÷ä³Ê«¯}DðŘל‚¤Ä%æÙó¹\ÁT³¢ úævxþÉi:ÙáD2ªîÖ^\\ZÛÞÞ5sÜZ[[ S\@;�ÏÄg+I`^BÌ«™½CWa^XX°T‰x;ôËU†âÆèŸ$ÕÕÖJ¡²�è@p0?úžàêæ˜e¾k8w þ¯½°O’—oyWóFwe"ÔùŲ~—$1¬Cø<žAn¥~3ÁýÀÚ�h¤¯.‹U É}ú©§®�>wîÌ3SSWÍœ??y9Å66Âétºí¿>Ÿ]Ë6m»#(òP¥\£ú"lmn†±­-â„¶JX¥ë‚9ÒÇ/“êJv±.QhéáË aøü}'-1¸ $>ï¾dóKGº ß×)¾o·TeŽLþ`è¼ÓQ 9�L�¾ª>ƒÑ9€âZ¾x±8Ù^_[‹„ÃᲕOà"¹âÊ+ÏÊ1/�,//�œ8qbÆç¡mf Ž0£/Øò?d%2]\X˜8}ùåOX- Ce€”Žô{9]eMƒUm«¨ê2’Ö�ïårØq˜_Œ+à·T xKÇ-•07;;aÌ«…ƒE騉7,aÉDBŽ{ˆ´\]]�ì‰ïŒ– àÀ8ßÚ Qž+��…ùùñž@ ¾&¶Gä¢1jpKl“ã<ö‹c±á½Nñž¡¡¡EJY¢cÀë®®®šÓ«Úz /´™?>$ôêÊÊŽgxdd†Žkl||ÿ#äR›oc£6 ìõozcú^ðK‡Ñïé&´fD÷µbò ¿Wéò�CÌo¨ôÒ‰ŒÔHiâÔ©é•ht$SfÌÞA}WARqã˜(>+‚î"X‡ Àѱá3@RøXÞ°_øêÄØ:×ßß¿&ös AÄ“X†ã bUR�g3f‡ÒÃÖŠ�Uš$ĉCˆ?f]‘H$ )Ž“«‚R< VÍcØvê¦"@Ñåå²~úÃÜPKÏ@6ð�aœ¹@L2  ÐD¹vWx½Ôb5:6&+Ae‘;f3 Ÿ8yrÚXBWHìw“üjâ³2züAw ˆÑg÷£$�a6ƒ™ƒÙ¡ô¥?R¹«˜¹ƒÑ�QzBÝy3'þmÃêêê0Hc+¢¨A化áA 0(2øÇBB•«ãŠÏƒZêX⳪8FiE#�¦Ü¿ Hý6½^o „Ùè8Û^Ó‹îªJß)í^ †ub€¹�þ7øŽv�?ÔÒa¾0A0>"�M¡Ø®~Îs“c²N.F BQ__ßÈ®Ú0}�)ž1 $ØÛ+Wé¤hT\äwT–ÀèÄ µ Tˆ-…øSB3ƒÁ¨�ÖÌLìé>ˆ€Æ×J‘ˆð��„`éó± ½FÈ>½—Ž Á0IÂfT‡ç7S¯5À¯í¾(Ç�µª*}½Ê°ÕÕò[³óÀ¼>ˆ_“Ýh›Ø‘¶i¿­»µ—¸¸n�¯d!^£>�ÉLÅ €±ØðQ~¤ÃæŒcí§týo\nܧñ=åöKA•ëøa\VëØÛvCqLì�*UËGdŒ•Ìl{{ås:¥ÞDä*~Ë–~FøØ1-¾µ¥åkïâäE¿ Ã~À8EãV'Ÿ‡¶ì¬ ŠÝ�¿¦Påã}Ç¥il»¯ƒÄš0«¤Y˜e¾»˜káæ–ý³ây p?°ö ¡çL©˜§fkS5â�ÂDÅà°Òh§<°�D²7Ÿ‡8¬=Héã'p0�µ ªFü9¬�ÀL°KL�)Ý ‰×^_gÖ‚åó Aè]*ŽŸèø:ÝÝÑv//9ÿT‹øÃ…Jöär%U­üHå^óy`˜ª3¨"APÆ«N¯×jJ˜µéV�(ÄÅ*CùÊ%õ1Ú£:ôÉ�’A!|Ž÷k=h|òu¸ÿË4£6Ýõd^·dO¶’ÌýÀ6c±ª–Ùv8ܬ ¦W2B�]&03ˆBÏøÖ#þ”�ѼiFGÒz€<0 ª÷;d6 è�åX†u4«æóÀ¨ ”ÀèðÓŒj"ª‰{2µVÙf3bË�Á~$ õkTÂrÖ•Ôù<0Z c’°jÇFn[¹¤àNƒ)Uá»uS±t Ob†ƒ&n•êŠ1š¡ÀµP?&4Eô…BZŸ¾äZñy°Æy°CUá W‡bJ]X·ßÏi fÍéS�J3‰¾¾¾úí è%÷kùdá(¥^Ôí ;�Îk1�±ÿË|ÓUX\/ÝäW‰Àôz]I¨C´&P]…q?0£sÀþ¯ý0­Ú'•@Q-�Cª°PH’̈|‰0�Õ¢£ ìÿR‰Àmn) ¬¯OÆ.“‘/£:Ø!l/�–)¥ý±Ì:0ëê+ÆWšÉ†fixV1�³ŠFDwQ•@;ä�1ìÎk(?µ‡Í‡æ•h¡@ÕNL¨¿_š7c1¥ Ìêy` ãhë9@Æ|ÓU˜ü!vôƒ…B¡š\⢩µK(ƒÁ°6Y¨vL(Ã3×?TˆÀTäÀE¥­yuu5— ƒq4�öú7½1ý/x�eUX ?½  þ_B}mòUv n3?\^ JrƒƒƒÑ­ÍÍðv<®lN˜�ú�1¬;å�©t¿c Âs¯`ÆP€ÀTäà§£œ0sD"‘¨jÇÈy` †½bàÒèôþ_¥0Õ„ˆ?Šª�À@8,Ikc}}ˆ/Ãþ ^`ª >¯»4Š@M$U-ž‹J Yt�V=¤žÁ0vÈS-Ú/�£$&—�R‘ÀTm­²O… HÛØPî¦ä<0†Jà<°æÂ>�Èh>#ŠEú¨ÜDòX$²ŒgY¥^±.ÒœÆ`Ø>¯8�›Hªz’páôöõÉÄæèòò0_6 †=¡š/žê±R}VÆ~¸Í>�ŠSÂÇu£j–ùÐÐÐ"BêI…q6<ƒqVï–Öë R‘³‘L&©ú<›XT$0y±øýñ=AhÖ¦*1 >"TH *L•ãä<0†Jà~`Í̇ˆˆÄŸÃç&0D×€(^U¨¨Â8ŒÁ°'¨û2WŸ¯ § A Í$—U©0¼f_ƒa?ˆÉ©œD{¼^Óûm¡�“œàsõùÊ ìôÄ©›Œ îÿøÇ¦~ø–[Š'¬Íë]b}ÐÄÏ?rý½½ofxx¸¨Ân¸ö¹gT:>à¦ç=O»÷þ�Ê×Ï¿áF�××¶þšk¯Õ>bòç¿ÿÿݲ篧§ÇÿŽw½3 ë€j÷ïQë÷ƒŒ_~ærÍëñ¤ëÙþÜÌùGŒÿ×»Õ7ðªÛnÇ¿“ÍÞ¿]Ö+aB4"�Jc¤ìŒÃívïó…©xŒâÂ�ô÷OÑxÃëk[¯ÂSº‰Ø”ÏÄ{±âùK$œÖ ¨úãp8òùüÃ*H4�B‡½wâÔ©i•OBm§Ï�»Ö“S�‘ˆê$¨”}âĉ™F÷õݳgoÒÈ#f}ñ»ž�º6ówUá¢ß‹ä±ññÜSxïÂÂÂø^:í¥L´èà¼Fu°IÅ{�Wß°ˆ(yPÕ¾FàÂiP¥ï¡Ž± x¼• @bn·;Eê€Í"µ¡¯¯o�fâáÁÁhRÜ8÷ÆsŠgüoüMè<ƒÈ ¸ðz'™ ÒïEFÝ —ˆÏ^1Y3ãó1¦É]7¯´�évçÅóÁŒ�Áóêêê°ª=ÍÌ•ça˜(8> •A½ÀÌra‹÷ªîFa;8{�Sï-«�Ž™LŸóss¶6mè•ø1ËÏd2¾jËÛàafKê@µŠþª>Ez½¶º ööÆpîñÐ9¥®½Gý&ð«� ÒØªƒ¡È=ÆÅ{k‚ry`âŒ#ŽL2u¨8ÈŸ™šºÒ3(»šÈ�›‚Œñ'jJu˜8ujjiqq ¯ÄÁ·^õ€ùpæüùI â €!üÆ ø&�Ú|is³³ÓçÎ…ô ŽŸáhÒŒI´Ÿ�ß‘ªo°ùЪÖÓ# ,YðƒY‚À õ‘73": 8ì=DÑo¥êŠ"ØJófŒQ†Pô¿ñFe ~¹œ$œÓJ9“Æ2ão„ëÒ¸ ¢Íò÷¨2u›ådó¡  ù`bV©|]ÄR ¬]˜%#ô¹Ü`ßÉ€ÙJ ”i  âüŒõé5%í$1�Ào±±±†ÚàÁR £…Êæ³Qœªf•¸©`Ï/å¦*00S@2ù­tìÕ ³‘ía3\/Š¥ÂÔef•+�MÍLª%%†Jçýýýkœ‹·O�yé^6ãóiÒÞ?0À“;«*0�ĤQ<VꃃÁNrûÂüüIäíØåBi”p0Ë·ŠOSµkªÙ-.MT{º Ñ -÷þ²‰“7mooÌ(©­8É¡ ÝEU ã0léc÷þ²�(Ì‚Õ0Ã:~\ú¿Ôa7S"ƒaW¤M̑ێÇ%�±ùÐs“GïÇC‘9VL4”S"_f †ú j%í.äËæC›˜QJ',P±�ƦDƒqØ|hC£Y�Uó…dn˜^ì—M‰ †ú@e3>—͇6$0ªfa¥²R¥@Ô› k€êD¶³µ ›mJ`FI½iáöÚ¨zÀ¦DƒQl>´1�Q?œ¤EÚ«”ƒ1Á¦D.dË`¨³ê ²ùÐÆF-­^7æÐ^½tÒâ„ݛ_2VƒuÙ|hs³z8½£££sø.°³£8_z FgƒÍ‡6'0ã�»eÁªFÀ”H-H (©'ƒÁ0¨Ñ‰g�×Û–ÂÆ°Âlmn†ñšÍ‡6&°^ÝŒ¸c±êôå3Å]]YáÐzC ä²YYÖ«[|Z ²(±ùÐæfìÒl‡EqZÛ7BëÙÆ`tŠ�—¹­�½ ƒ3¢…Ãé�0†Ö/,,ŒóeÈ`˜‹D"ÀsWwwËÕ�±¡kÿÀÀ*Ÿýúá¶ÂAöôôÄa/ŽÇã}vè#Eþ° 33gð½ÖÖÖâÜâ¢>@•CÉb2ÐÌýâ·ihf(&(Qî{f½{³ÕŸÁ�—;L�QU RV­ÊQ ˜Fɶ´¸8Áþ°ú07;;Ùlòj`"æbÖ~¯v}VÑ| ñ¤µfEÔ(U9ìÒ³óÝÝÝn|/ ħ/¿ü ³ºÁZTþ'ÓåÒò.‡2ÇåIdä3û8­šµºŒ”Ñ|Hy® ›+0ÀU9Ê 0)?læüùI¾$ëÈ+çVçÁ`”›;”ÀŒU9ì4«%|&hà¹0?ÏA FAfÞv”‘Z_[“ùŸl>ì0Ãl…ʼX½*Çué÷'©‹óÆÆFdmm-Ì—&ƒÑЄ¸Õe¤à¿'S%mu�g-q‹Wå(\ÐýýýÒ··|ñâ8;ÿŒöX«A]5àÏg_w'˜M͈„ѱ±9Jrž9þ 0­ÇîÎŽœ,vuuí´”Àb1iY öörðF“à¶ÒÁ’2fD;Êp$9?;=}ßÏ—MNNñl­>Œô j�®‚�Mgö´d:¥­%6µl®p:Çû‡´nïþ&¼S˳—~‹ð°æu{´ù�¨Øv·¸üÌÐ mm{Sî‹a´ò>ƒE…̇”Äè0&U˜�͈t %v�+u4ŽaA` ®¥ÍUù<ì×®™ÔüÞ.¹äår¸äzz§K ÷ôi>—G>ôù5Ÿ 6†=�ÖS1œ.W¦UŸ±±¾.Õ›;X�Iëë‹E——ÇÉŒh‡‹�š777ÔÓd*u|÷ìYS‚: vA¦V.6 âŠï&åc9¾! Ä6½2/×góY¹®¡î€Pj9©²@`s˶,;`vô{}ҔȰ(ßÒÓ¢F–Ÿ`¢Äþ[]g‘˜•T˜�̈ŒÖaô#Ú T^ ¯ØÎ¶¶hˆ6D”áˆnBV¥�,(I‹Ì‡)Af‘`¿\N*ŒöKë9¤Þš ¾ÛíNµbÿ[z´4¢ùl3�]"0›šÍ|X-DBY°¬4ÞítI’Z5¶™Ûˆ·5†Û3¬�´�Ø*rD1^÷ ð$› ìŒIͨh—+Œæá(UTi}¹` £ÿk‘ Ì6ØK§e&{OOÏv³÷m¬ÝÖê$ƒ�¬ÐçîK…¯*¦£¡%"�Uムn¸ñÆÓ:”»E9’˜¥tT[[›o(�íRZjee%‚m»ÚBW1û­·.¬‰a>ÌQÑ~'Ç*µ{)£Rµ§¥£öUã÷†°j-'¬€0²°°áå· ë Î¡( VWW›] ¬¥¥$Uâµt”ØžP«9aÕŒgÎ�»uiq1b$Ûö§ŸzêÖ½Ùùgž¹¹PÅ–bÒ0 ,»ÍíΡðJ½3î Þµt”XQ°sÂt�°êÁ‘£G/;~|¬ûðá‹3ÙÕm‹¾²B¦åg‡‡oÚm›—c±[ãßî _i÷%[‰¡÷…K`Z:jߨ¶?„ótvv6Š4¤Q@Õ;$Ígbb¢omuµ¡åhoï8‘lO&!~O„b«™PXLpøüù¡hOÏ$Ÿ'ÆÇû0!ñ›�“'‡ÙG»¼S=! %Ðúø N~jåѧŽÌy!T"^EÛ§¦Þàõן³Ï�%„4í;vlŒó¡Eš>Ú•6×J{�MM+µ�¿X ýªXˆƒCÕÀІ‘Ò§x'CM9Õ&|!È�m�TSSÓò©¡¡'Ù6yñâq{;dbHm,—9S¡y¹„y±�Ïò.Q¬ 1¢BHü–óA:�¿C`â%ÇÛùÔ¥K}Ã>®‰k“ýä,r}n{†lk1ýã ûï¥Ê“~ÑÜ/ÕÀö¤ h¢Î#1ùTŒ4±æ¿o]bÕ7ׂ,aHÃ6÷¬,/GBF»º49Ùë~ÏšoØ.ÚŒ¬—£�¸uïFGGzzz.擘½ÎøX,]^Z"Ê5Ü”H¬l3¡µ·Y•X¯îì™3·ÙmËyÑð$¤[±Ïc®U8 CÉýÒÕá•Àö L@LhHE~'0Û|Œ�øîúü�$,Ïpä¹çÑÄ0 c*´£Çäs2KtÛÝóëÏá¿>þfüVÛ™‘Æ Ù…Zè3äÈq:uT6Šx7šñÊ^ÛšÍoPÒNïì> Õø§*)˜ ŸŠ ¥®ÇV*ò¢Ò…oî•!™x˜,Œ�ÒŒiO^îö––8šŸ³‚×D²‚Í4?Yk´÷å:7&iúÇIøu¡cpä#@É>®I“[ý-@ž¯”°£¤�ÞQÕÀJ‚J æ`"­$SçAÁ�ӢфÐ~ƈÀ§DГ䆙 mÉloÏq\³L>°ØÔÔѬ±(fB‰g‡‡‡G£“Þ‰-ÚÓ3Æ>HÝÖJ;:;§G/\D;À<ØsäÈÛ]a Ä¡OÑ'X‰²D@&Ÿ>¡¹_û�ºL&óh5þ1œèäñùÔÐPE‡63áRášÈ·r´�OÈEgŸ8}úÞo¹õÖ_”ªMÓnê?qb¸’ž9îƒâÚ~�v~b`àœhïÅ w”ÞÙýEÕ®@aW显|Ù÷> 7ŸùŠí^³U©ÚŸ?QMÓÝhÅ™™.ëi`šÕ°fEŽñ°ç0ÍýR++d5TÛáWŒ�� ”sAÎ\í3ÙcB«¦g.Ò4¾²óü½áí …=ìExÓܯƒG šÿ¾¯©K—Ìá—W4);s¼¯o ‰ðÒääñù¹¹Í$Ù+33QlëõžAFè¸Øð Áÿ¦'Ûì$ßIÚõ¶Ï~*gF.dv9;š%�9i ‘Zh€’¨k÷Û3gBÒPfE!ˆ ·×0ÍýR+;d™C½~™ØHpµC·!A*8`šàz¯?uê,¿�°’Ùµ‹ 6›<�¤Ú|çó¶/R(m"9JÒ­œ’—½–0THÏû]¡¨T l/‘¿šû¥¶/ sAt6™”úš‡xlBñš&ì$XrœDãZ0ZS—®Ëg*TìvAzbb]\\Œ�5;¿ ×F„•íœö~߉´kÚo!Qw§~<)ëTëØî>ÙH27‘t<+]ýygX]Y ‹õ¢Ø64÷K l_À –�z&z?•" �±ÑÑAò¬¼×TßаžN¥Êúl B ûF"e2”d`ÞC¡ÐÚ^$\ÈËN‹½Çx­c»û`öoùÞjúy¡Ê"Š $Šè“Þþ½ß¹_Ï=ûlhdddKµ–���µ“×]Wô³þÊ—¿Ü~âĉÄí/xAѦT3¯6<þØcáÛn¿}¹££ãê‡?øAd¯×YÓæv²Ã‡§ 0©�xМ€Æ„$(ɸ¶i#›ï4x8�‚€%y`¾³‰˜Ï¢Iá/-3W·´�Va‰ÄN•Ñúz¤Øì^þç½811 KU`b ‡Ã øÍÐ µadÄÕ8m®å v§÷�¾ƒfK]GL»,¦ÈËL$1|˜ª‘冘ã‹]ì r¿>ÿ¹Ïu?ô¯Ÿ:jo{ã½iòž{ï-:ô½÷¾{à¶Ûo[øôg?[t±‚O~â=?úá�Ú¾ûýÿz2×þï|û;íçž~ºù?¿ú•²Œéš 0 ©‡À¦¦¦z²ò7$"É­R ‚Ϙ ¢€ÔØÆÒ!’8K’®ñ1i‰y 3ˆ$j“8K †!57ÙÖvRÛí#�Ú’£7é–ë"!x· Á" B¦ü‡bü~Ð’ý€í_’³éã<H�rYJb×BB苽7WñŽ}¿¯ý_úԹ߾뮒Œ�¯|ýkgÛshM»Á>ÿïÑ7ÿÉç%Ñ×ÿÁëgî~õknzì—¿ ïEÓ«i“ œÁ=¿R?vP›óæŠÞƒ„ìŠ!Lüöäoû�òUíð¶‘oe�¼’c¾c½É´ù’kɹÚ\NÝh䱿àybFG{g’FR»b(F{‚#è—à�ëNÞñ’;_âŽÝÇ{pÿý½�×G?öàð÷¾ûÝöûÞ÷þ�—¾ìe §ýk7(K®�s‰–h„¨M?£ØYJ¨,K[U-�!)]—k™Š+W®DêºX\±šj¦I>Ÿ©%¨äåml“Ä ‚JØÜT’2’×^qP�FhHÇŽKd­&ë²M ÂêëïO@`ããã�~LMM…^ûº×Å^ùªWÅÛÚÚRo~ã› ^÷‡þþî囼8é’Î#_ÿFWOOOâì™3›…ùÆ7Úççç·ðÇ¡––uHðá‡оý÷I[J`;ìü,“!¦‚\&„ƒœ÷x_ßpµ¬�O‘û‰Dª‰ýEbø É�D`“€ J¹þ„%x&»›|s]uÉ´˜;¸°×Þ}÷ÌN}`µØÚÙÓsGƒãýÑÿ{´EȲµµõš6¿ð¥ÿ8GP~±»_ýšöïýàû§Å‰´”¥ïU%�‘Gå’W}�“ú§ZVÝzÚ©Ke6"«€ÀHÓ¡¬”¬ð0]*+HWj±Ùt£ÆðA_É™'žØÌ¥Ü.<¢Ãÿ¡Üü¼ç-ogBÌ|jøÅîzù]ñçÝrËÊÿüç´=BäÙ�¦Çu|øƒê}á‹^¸€ÿ “f<‡_S—.5þæoý^Y,3U탼’ÝþYè6°�tæ“Us™å3p²DÉ^QªDfB÷÷+˜„(ÀÉ‹�—²ÍR&tÏÅã]Z-½ò�iO>ï$Œß×G>ôá> ™/æœ÷?ðÀؽ÷Üã|í«_ë2ç£�‘ÿEîûòãGÚ;:â„Ëë‘GºzŽY{û;þ| ߘ˜1_ôâ—%²¸*—Sçoº±Á—†¹­ŠÌvOd§Ÿ¯q¿‚JΞ9s[>“µ_pÓÍ7?^)fD¢)%níXØ7×U¿–v‚Ó«îçJXãþøÇ£`)Cñÿì-oX\XhÈ—KÆ9?ÿoŸëùÙÿþÏiÕÀ¾ÂÖ* N]�ºS&ƒ¦›vrñ”EÛÏ’W*Tï`ºö VS[´Dͱ«-Í©ïñ_>‘‹ë—Es*Þù®w]$ÉÚ&Êk4¸>0R6¥@±¢XH>Œ«Ê»äòÑÕ­ÈY1[§þ$0Eí‚ÁÄGTâßüí=ã¥Ò¼ø¾ ™1ßú¶·•Õl­¦P(* ˜âëÖÒšv°ÎI7¶z`æ«_]wê’'c¶¯ ljÅA¸ÞvUØ’m©pÀ|¾ÖGÍ9ìßW óªÚÔ–úZëüDÒÁ ‡-ô›kö§7Žã=×6~ïÏkËï ÅÞµÊù¤“i¨sR‘ S·žq}R2^×7|T†°R-§~%å4N­ºcÚÛÉŒûÚ2Þ³Û¤M^õk©«ßÃ*çûV˜©5É�ÎOp‡ÒžA»ÚA!œÀìÕ"ììOv„Œ„×àÔ'7 9)éÆ iÎÞ&Ÿ„ÊsWz3íg|äQ(ªc0×¹ZWº±ÑiœXvM¥)3ÎЦR­AgÝH„ê]cܯwl£E‘vÓXwÍ9ª�ù D&&Ž4;iÓ¹%¬Ò ^Ys‰‡}¼R†¸‚3k›Ò[!`b Ýô¡Àæ9xe‚:*ä»Ù) YT²šW:Ôàj[îX<ØBJ©pƒúU«>d �Õ'Äô�ÌQÐ"¥ ÛñÙ‡�]±7´w´8MM!÷µ¼´êÌÌÌ;Á`À9r´Ó¹4yÅY]ÝðE°_¶¥Òi'mw8n6¾è$û¤Aè9Èe¥€Ý„¢‡A§'Òé4‡6‚!WkÎrÂü÷¥¹Íß õôo9†ßŒÍ^-t>ÐuÔmg|6æ ¡&çxGtË¶š’¼—Ö� k¦O¹¦B4¥@"µIZ^ÍJMùª�UÏŸ6¿ayݵ—Óù7$¹ÌFÕ»óg+yxmæŠÝ£««Õ9r¤Ó%)ˆ«¾¡Þh6æ9˜÷C‡šÜ÷«„qu[ÈW{{‹³0¿ìi ;ƒƒ½[~¿hkowE=ÿÌ37çZk- ñD#N|yщÍϺÛú:zœ›Žœtê7Ì̑ư“XO:“sÓîË&7~Óu¨ÍilºïW·×»Çñ^‹ÀR‚*c�O|VbMÙjÉlîS(�U<²¾°L�ÇÜ ( ždr݉Ï.ºd„vµ@|rä…–¶¿¼‘ MîÛøØØ U2H¶Ýéñ+ÉU'¾²àjVÃÓãFƒjÜBHØÂê²û²5ªöæW …Ôø¬Ûцj½u#àS"&„N»Ú ÛVÅ´ODa}Ò ®"Ë|ÇÏ­¨ÀnP‹Ú­Îa:.ÎÝÀÒºëð¥»á´tìú«’ƒÿVF¨>cIwÙÏ™€JwÛ!_tŽëvNq.ÇâÎÒÒîÌ^BX˜!³�?77×µ´´ÔbW>±K4Ù妼堎ööŽËÊh]¬.- ËT#¿02¡ªŠ¬ˆ½Sl�ÔšÓnqb Dމ0Ò´‘V·fÈ Bs ,qÖ–Ý×Ѷn×tX‹&üšX¨~Óª‚5³`6áŽ]Ȫa9åjk"¨¦Z‚®¯,[uI S¤mVS«(ݳÎíü®ã× •5¶P焦לd׆¿‚qóNGé.™ Ìd#Õ<±3šæ®®îV—ÄЦFGwžãˆÿ “#D†)qÇŠј¶V É¿Áö>¾o¶“H4æ*Åï‹)!•Êlu£a„ÄÀÌâœ3³>·©��ÌLº¤ZÌïj�Àˆ2$hCƱ›£•0‰(fLºZ™!±„'�бšˆ6¹Ähgë�9# ·œC¡æKé­qCër¥5:¶éì�Ò™Û‰�V–ê njdÉÃMN žp‚—W7ýcvЇ¢0 ^®?ÌhR�ÒNƒ10¢uA`ƒ×÷ºZ¤¸ZÛÚf:<Ò‰��MmÌÈ@Û²÷Ùë¶utvN³,‰MVh_Tá§<ÓnG ›¶øºø|qnz+i7opi4Òétµ´¹¦DÌŽ¢µÕ*$D~“lZ¶NcU °ðJ¸|�yï9J`¾èøvǤãÛ�IM´¯\``ÚŸëŠÚX|Ñ%04²…lä!Abä3Úßù¼U£Ú ¼�/„‚Á„·þ_¾z€�Y¾}FÓ yÙÄUÌÿ'ˆƒëÇ'VPë ·¸¦ÄñøÔ&¡"ššB¡¦Pìúû7–"BsÚ è0DQá;L¨|h£;u81áÑFŒ¶Æq­Ö±û‰ùùy×ÖsäÈX1ÕíÑœ0¶"€cl6¶i-Ma§×éÞüŽ6a¡™Éïð�A`l'(Än¸¾²Õeíl %0…¢”˜¼tÅ5ÿ/æ@AÌØüü²ÓÔr �ïbZ„ð$ò�}ãÓ»Ù+ð…%‰ÐàõןmllÜÕr¼ËnNWÌ d5F´)¶¥ÒW}`“ÓᆆÙàš §-3#Úmñ¾– »W(”ÀŠ2B*ä$‘y+y¤w´Q`Z,vý6ˆj;ŸÕÅâýBÒ�˜ÿ|ÁPh_lÈ⯠艋K““½:gTjFX\[[ ±üïq~»zµ! &üx]ÔA,¦jF1 B‡û\Sµ0–Ïž9s[©VËvÝ ÕÀü–È4Ù2Kg̬®F�ööŽí¶¢‚Ýž]äu§ÈW½pÃ�7ž®õ�QîY#¹>®—ó! åû¯r~ïy¸ñ½ºnÛ ½ÓûPÍÂi:�0¶Ñ¸ÿò|¸çæÞŸ¸npðœX`Ìsyš~5;;M¥Ó <§X,5éЩ¡¡'íû*Ï“öxwsѬewJ`ûVâeÙ‹œ©!𦦦åþþþ&£óÏÉ„‹O�Í`8Ç@BÚËצvµ 0¹Èýcr‰MMmú0saŠF£1&q‘z™Ô11鬯¯7éù™�ò�‡(mb°Áñä1ùC2ôyf6¡r^9×cמ²Öc}–E`â¿Ê²+´ÍdÉvû<ô®ƒþV躹?·Üzë/äüæÚ†Š)0\ÚæC#œf€¯‘ñ+Ëãð»E# ™ûäî?vì˜+tÐÏÐâ Cû"0H{¬BÐÙÕÓ‘ëOT}G>ÕqaÁ�(Eêjkk›aPlvâ¬æDØ»hT¹€oM&¬íÚ¬6HðD^Ìñh!ø#ími£íxŸÙ•™™(DÀ=e¢éè윚¾|¹§˜s"QóÌDs�4xn¹ú «9sNCœ�¶y � aÅîc˜³ŒÖŸ3  ;™ÎAPÞ}�'‚ÐnÌTô9þG"G{µb>D@@+Ex0µåÚŸíûnï#ÀÅ{³Z²ðEßP+Šj`$Y$(í€eê<�À|¢Á{!Zæ›HkkÜ«=-fýr,ÖÎJÕYsÑ–À£Õ®È¾í4p4hD ­Õ••0Á<^!Dü$˜‹„�gÍÄØÑÑ“ÿš•ü»²BMck[[\H‘ÿÂ5Ú¦Á¬ÖÔ,$—ÕÖŸÎE:ö5äºnù�\ír­;1!JGhŸR öË|h›þðiÙfD»Or?íÊ¢qñLLrÝC„Ïñ±±Ì“j>T ì@À2ðHPtlï>:&“¨L.fb0}¶mGD—ORÞK›•&mwRÝ™x' ŽmÕ3qĹo�Ôž5ÄP(ðÚéäÍĈïíâÄĦ)ñqAzô#£u®A‚Hÿ2ññ_˜ä ñ¥I{æwaÊ!eýcOïÄÜW躹6CnÇÑTññìDãm¹ZL�¶ùÐî‹v?ä~£-£¡q?mÈ}˜ø»¾˜gî˜�ø�£Ñ�ª� °ø§ð³L]ºÔ'R4�ØÁñ}ˆc›ùNxww÷$¾ ±±ÛûŠm³RÙ˜{Û‡ùÆëG($[‘ˆ™Hl-ƒ6¼>ÑNdÊšï¶%¸�™´½ÒuSsó²7HB4<ÎAÁÿ„&h›�Hˆæ¸¶öv×?"&Ew±K£…BjY 2…Q®• �ÏôÓvª©»×Aåºn׆懦w¤¡aÛ¤[©%è�ð+æ¿,Š?K€•E|‹“³�¿·_âKåYKðŽl?10pÎRmS³B ì@À¤`G†ÙÀ÷�k»8Ê]ÉÎt`»3�Øv{ƒa'mV“€`4¥$U¤Ú|÷yË„:3Óùʥà dûÕð!„ô™{K‡!ˆ´™b®™‰a†öyvh.3Ú!Ѩ�׊FY31./-¡i-Ëÿ�p펳ۢm„™±ÑÑ�\÷ˆ LV;5Uq=ÜC´ý\Z¬mnó¡Ñ4¦ªiL{·IÀ†·î¦�M�ÚÜ7I¿QŠPST1˜Ð/ŒŒDИ̷K(ó›.¾$ÈО�DËB`€hž~ê©[ÍijÀIJ�¶W¨„äGd)¤ˆŸT¢ÒìsºõñãD›brãúøŒNÈ-­ÍC.)mÉï N´+$Ù&÷ÀŽ:MϾ?Foß~�¶�¦�‹øØŽ4«Æj)RѾï^Ø÷0ð}ÒÇTûò?ê2™Ì£z{¾òkˆè’”‚rœ�MH&o>•ód¹®¡ !û˜%ñ}]êÔY DP(�)y åŠ 1ê–£´3Ñf¶V¢w~+ÐüF/\„¼Ê-P(J`Šª‘ú!ñ¹4°—š“ŠÝßÒ®\¹%¼^ÉK¡¦PìøªìªÞDr¹Wаxŵ ßiii)BºH:[?�”äªV-“PzR $ÈF{‚XUƒÈ"ògdÝ&íºöOù&‚$æçæºônìðw‘×TͦU…¨ÌBä'~=)á•/úW¡V5äÕâÄfô¡ËäÛ(‰•_R&™7¹‹jŠÝ�(ÆZÐD0“‰Êò=vP i f�Ü#éöØ·¿g£@×e�õó}—6¸·ã?ÔD=ÉœHlv§¤Êøðùó7C`² žH®¹¾#éٕˉ¼#[_& û»h i3àj¹b8÷»Pž’B±PU$WÎc›ÐwÆÙ…‘‘!;çR¾‹�–ª² cŸ+ø�²öwÈŽªö¬L�L.Ÿ–¥ójbEfr”¼f&Wü3HWäòØUìïøtð1H*¹7¼“Ëd—”’ïÙ�rb ç V�V(ª ŒÉPŽÕ¿CYR*(Ä!Ò’U%¨K¹Ý¸$OÍŽrbXoH€×§ XE�º|H^Hc”<š6�Ù¦J,/êûò±PS RjéyM ØÓE²KXÒ•½Š.ùL�Ô@MŠN-K6Ȳ |–²Höïµ$�B±w¸5)Ãá|Y˜ÿdUl4#q�B +Bà—–c1é_ŽÅŽŠÙPÞÛ²ÛÈ£“c¨O)åºìcþAÍ„ÑÓ™ñ…Ñ)1#`r D$ÑMìc•]‚/¨§æuäò[ÈŽÀ)øÙÙÙÿ—¬¾+KÉcs‡å<ÚÝJodY¾m¥ÏŸzˆ²¬Šâà�ð‰_zÍŒ1–¿!u€!Ó6Á‰ŸÒvþãÿ´4ñåBÚ�,dÉgÌUgÏœé-ö\ …B LQãÈç_$úŒ“¥ú=Dù  Q“‘b$°zÓ*ŠÁ~žK¡P(�)ª�ØZ[ã„={ûl£.%¾+¢Ö¶k“ ò�Ì.ß!'É,æ\²ä‰B¡PS(¶€üÊ (Áwr{È"G� ª6°­PT[yvxxˆ  H‹üÀ±ÑÑf âèËúÎv{.´F£�¥ø}5¯×¥PìtAK…B¡PT$êõ( …B L¡P( %0…B¡P(”À …B¡¦P( …˜B¡P(J` …B¡PS( …B L¡P( %0…B¡P(”À …B¡¦P( …˜B¡P(J` …B¡PS( …B L¡P( %0…B¡P(�) …B¡¦P( …˜B¡P(J` …B¡¨dü¿ƒiIàÄ1øIEND®B`‚ipython-ipyparallel-14e3c43/docs/source/reference/figs/other_kernels.png000066400000000000000000001203341520071063500265420ustar00rootroot00000000000000‰PNG  IHDR‰cÈ÷YsBIT|dˆ pHYs : :ðd’JtEXtSoftwarewww.inkscape.org›î< IDATxœì�w|eöÿßgî½é! )@:!�HBé½)]lØûZv-ëZ¾®ëîÏÕu]Ëb»¢(‚H¤÷zo -’�zïóûc’�KîM�$7 óÎ+/qæ™™3ðÌ|æ9ÏyÎ¥ŽÐ\m€����AýÅ §"a````àC$ œbˆ„�����S ‘00000pŠ!N1DÂÀÀÀÀÀ)†H8Å §"a````àC$ œbˆ„�����S ‘00000pŠ!N1DÂÀÀÀÀÀ)†H8Å §"a````àC$ œbˆ„�����S ‘00000pŠ!N1DÂÀÀÀÀÀ)†H8Å §"a````àC$ œbvµ•#"‘@' vò«§�SN~7+¥v×¹ñ— "Ñ@G.éÏ&L¡‚4S¨ @9­P'lØÒê$öýy“Rj¯kîàêB”R®¶ÁàD$ èô-þoËâ]9@ÉÃRö¿'úÃRæ¿%nR||ð[ñï¥Ô®Z¾D¤%ÅýÙ„i°k(€‹ÕO«>âƒ�ÙoñFÿ„œ‹?*‹¬¢rÔ.˜ )4˜0�´a[ P‹Ñûó×Ýeãʼnz€ˆ˜€‘Àhô‡)ý¥¿‰‹/õeJ©ÌË<¿нøÜý€k �^|î9ÀwJ©¼Ë¼ƒRDÄ \Œ,…‚¨f4³ÆcŽ&šH"ñÀã²ÎŸO>G8ÂAr€EÇ9nR(1a:eÅ:øø^)UPƒ·uÕbˆ„ ‘àÀ½@°ž‹¢ð»Rê\-]× èÁEÑèdï*¥ÖÆu 7"Ò˜¬¡=hÃÒ‚…1ÄXJDÁ÷Z¹n¥¢±ŸýEÇ9n$Ó†í]ôþ|¤V.|•`ˆ„ ‘îÀƒÀ8 øx[)µÝEöD÷÷Àlà`¾2:ˆA%ˆH/AÆš1“BŠ© ]"È%öd’ÉZÖ²žõEhÀO õ–Rj¡K jà"Q‡ˆÈ-Àè“v»Ñ_ÄS•Rç]jX1"âÜ <ÄEßÞWJY]i›AýBDoÂô+Ö„@ »ÒÕ’Lr­�ªK!…le+«XUt’“f¦}V¬¯)¥l®¶¯¡`ˆD "‰ÀÛ@ô¯ô·¨ç_éÅ£�‡€›€íÀƒJ©e®µÊ > "L˜Þ³bíO¼­ ]´b\mV…æ0«Y­¶³ m›ëd¥Ô*WÛÕ0D¢‘&À‹è/ÛíÀCJ©ß]kUõ¸Dà>žTJ¥»Ö*W "þ‚¼ ÜBˆm#ÌD¸Ú¬j‘F?ó³õ(G5A>S¨'”R§\mW}ƉZBD&ÿ<�ç�w²ËFDƯÞÀ ès(E®µÊ .(v-Ý©¡½fÁÒdƒL�éŒ ®6í²P(6³™yÌ+Ê'?φíiô îû|Ö&†HÔ0"Ò˜ô>žRJ�p­U5ƒˆøÿüØ Üo¸ 7Å®¥­X;u¤#ƒ„^®6«FÈ#�Å,f k”†¶ÝŠõÃUC$j™¼‹>áû Rj¹‹MªD¤º ª7ðW¥Ô+.6É ‘{ù_3ši#a 'ÜÕ&Õ é¤—¸ P¨?+¥ÞpµMõ C$j± G=€>Šx´±/ä)vA<‹>²˜ Ü¡”Êr©Q5‚ˆ¸ òŽBÝÝ�n aZ#Oó¦P,f1KYŠ Óê.¥TŽ«íª"q…ˆH(ð=ÐÝýò©‹MªSDä:àKôÔ 7(¥v¸Ø$ƒ+@D"M˜f ’8šÑ¦D]mR�²‹]LgºÕŠu�ë(#Õ‡!W„ˆô¦¹è/È�.6É%çæùˆîTJ}ïb“ .¨¡}ß„&>·r«¹Í\m’K8þæë¢ 2òmØnSJýèj›\IãCÖ""ò(°=¿R§«U ”RÐÓ|ü|'"ÿ£o5 Dä)A~�%¶É}ÜwÕ @ �Lf²9�/`¦ˆü½Ø½zUbŒ$.yxxxÁX½yy}~æKànãï¦þ#"¯Oö§?}èÓ`C[kƒU¬bólÀ‡ u_}^[["QMDäïÀ3èóï¹ÚžúˆˆŒDŸ§ùÝýdE=ED^äO£-èàjsê%ÛÙÎw|§€�jòÕ&†HTùð4p¯RêWÛSŸ‘áÀtà;ôÈ'c¡R=CD^äÑë¹^’Ivµ9õšìà;¾³)ÔT…ºçj C$ªHñ�ü àJ©�\mOC@D†3ÐÅb¢!õyC�?ŽaŒ$‘äjs;ÙÉ4¦ÙêóâÙ«b„lˆD‘W�ÇÑ}ìS]lNƒBD®E_G1 o…ë‘·yðn�«-ÄõJÙÅ.¾å[›B}©Pw\ BaˆD%ˆÈëÀ#è¾õÏ\mOCDD£‹Älà6#ç“k(ŽÐy[�ûoäFiO{W›Ô ÙÍn¾á›B}­P“û‡�¦X"ò,zž¢I†@\>J©ùèåY‡£§-1p / rßXÆq´¡ ·r«&È­À]mOmcŒ$œ "£Ñýé�)¥}G¨ Dd úüÄ£J©7]mÏÕ„ˆÜ|;‚t¦³«Íilcßó=è�,ï»ÚžÚ gr]‰^LýNWÛÓ˜‘Ðs>]g”“¬D$E�•�èä6‚Æ"ˆd! YÆ2«BõohµbªŠ!— "M�µè¹ˆú)¥ò]lR£¢Ø/þ=иF)µßµ5nD$DCÛNxÈ$&™M˜\mR£B¡øš¯­{Ù{Ά-E)uØÕ6Õ4ÆœDDÄŒ×ï�ž‹Éˆ¦8¾|"p ø±¸F…A- "nÚLo¼ƒoæfC jA¸‘MMiêkÂô³ˆ4Žbe0Dž×Ñs]¯”Jsµ1�•âÌ£�æÀçWs^œÚD�w4´.ãoñÆÛÕæ4ZÜqç6n³˜1Çkh�. ´!ňÈÝÀÃÀd¥ÔZWÛÓØ)N 8=âéo.6§Ñ!"*Ô=ccjNsW›ÓèiJSnæf³BÝ "uµ=5‰1'�^¢X ¼¥”ú³«íq„ˆ¸M‹Êü¹äÿ=€L £ø÷Ò?Ÿ«�©Dä!à-`„RêgWÛÓ‘.‚¬èMoÓ¸Úœ«ŠÕ¬f.s0D)µÀÕöÔW½HˆˆúDu.ÐÓU cŠ].q@7 »s"X±ú)”›]{D¹ã^艧ò 3f¹À•K.y䙊(2_ÒÞ¦¡e rÈ´a;bö =Šk­+«Ê‰È÷èn¾vJ©LWÙÑ mkaÑwq—ÙÈèZ÷|É—¶ýì?aů”:ïj{®C$D^þ ¤(¥vÖáuý€®@7¦>@W+V7ÜŠÂ '„³'ú�^x–ùñ wÜ+<¿+¹är� ä–ù)ùÿ,²Ôad’é(3æÝE-J„cW]�­”úw-_« ÐG�&L}‹(j)�DíFá„DP�æóÏ#�cã(G9Ìá£%Ÿ|Kñ¨cµëïèGK•Ryµe‡ˆÜˆ;F)5³¶®Ó˜‘À²a “.tqµ9W5[ØÂü0T)õ‹«í¹®Z‘(öño@÷×÷©�D]"ҸŌùþ"Š:xâYA„I¤9œpB Å ·JÏSלá G‹r0ï4§Ý¹ PŸ)ÔGJ© µq]ùè�îv:S×h¬ˆˆ— Ó¶""&1Ép3Õ¾ækÛ^öž¶b�SJ�uµ=—ËÕ,¯j²ØyñÜB_Aîdœ³$“lîHGiA‹šºL�’O>ÛØÆZÖ¤“îfƼ½ˆ¢w�/•R5u ¶¡�Zn®©ó^ ˆÈ-X|�Mþø»Ú ›lÞæí¢|ò¿¶)ÛDWÛs¹\•"!"Ý€eÀã5•CHD"€I&L÷Z±†GUؙΖ¶´ÅŒ¹Òã '8Á6¨Ml** AfÚ°},¨‰Ñ˜ˆŒBÏ{“Rê»+6ø*@Dú‹G2R:ÑÉÕæ”!•T¾ã;€QJ©Ÿ\mÏåpÕ‰„ˆx�t ÿ•LΊˆܨ¡ÝkÃ6ÀïÂNtrK!…jÊäzIEìd'ëY_x�ƒf í„ëûÀûJ©cWrnù Šîv:Y#7RDÄÛ„iGQ¡™h,©®‡Lcšm';3lØâjrä]W\�"ñ<ð$�X¼ ërÏÓÄiŠBµoC[':™c‰½*‹ÈŸå,›ØÄ:Ö\à‚͆íïÀ¿/w¢[Dü¹ítW�ÛÈ‘X°<ñ0››ÐÄÕæ8àx‹·ŠòÈûЦl÷»ÚžêrU‰„ˆ´ö¯(¥^ºÌs„jh¯Ù°ÝO¼õ:®3>`6ֱޅ,,,¢è¤ëÃJ©—s.™L:*¥6ר¡�‰dï YzÒÓÕæTÀzÖ3›Ù6…j¯”Úáj{ªÃÕ&¢»1Z+¥.TóXwàq íù´á w‹!¦Vìlè\à‹Xd[ÏzÑЖZ±>¨”J­Î9ŠÖ™J©AµciÃFíK_|Çý‘?ZÓ¼WcĆ�ÿñ¿Â 2Z•u¨«í©W�HˆH"° ¸G)õI5�eÂô– S蘻ÐÍH{U)'8ÁÏü\x„#&à õ|uVT‹H`FÊŽr¯ñYs#7uª{ØÃ—| 0¨!ÕR¹šDbÐ Ý}Q¥(‰7azÛ†m@ )j 5#›fõI%•¹Ì-¸À…\¶¿ OnW)ý‰ˆüÄI�½–pu0‰iy3šu™ÌdcMDâS>µæð+ÖäÚX›U\"!"×sÑ“nͯâ1÷òn(¡¶á ·„Z»F6r )d™þcÖX±Ž¬Ê‚9i lRJõ±¹˜q'wE”«Í1¨é¤óï)…ºK)5ÕÕöT…F/"b6G”R•ú‹}áÿä©A ’ô¸*#–j‹ 2øœÏ Îs>ÍŠupU2ŠÈà Ö•‰ë"b1aÚKlÔ­Üjø< 3™©¶²õ”kËêÎ�º‚«¡“Ý ÄOTÖ°8ƒæ÷&LOŒcœô¤§!5LSš2™Éna„…jhëD¤w{ðþRËæ5î·a‹Â�«áÙm” `€ˆžX´ÞÓ¨G"â ì~RJý¡’¶Á&LsÜpKÏxK8áucäUŠ+³˜eÝÊV¥Pw(¥¾¬¨}q!—gÑ#ÓŽÖ�•õ ñÓÐu¦³ß0†¹Úƒ+`‹XƲ<¶h¥Ô WÛS�ýkäÀx®¢FÅÔëýðKžÌdC ê&nàS_úšÐK˜>_É!¯£'cüSí[Wo¹OCóéG?WÛap…ô¢n¸™�G]mKe4Z‘3ðð™R*½‚vý4´5D´˜ÌdKcO§QßèG?¹�DC{Aíóâ"PåPJå¢W°»§xEöU…ˆ¸ihêD'“^®6Çà qÃ�®t5kh‰ˆ�«í©ˆF+èõ“#§u"Dä&A$‘ä=� f<êÎ:ƒR’Hb"5 –[L˜æ/\tDItSƒKmPŒW¨ îtwµ5Dº ˆP¡+ÜÕ4f‘xøQ)µÛÑNé-È—=éiºžë5Fn4WM4“™lví»†6ÕQ›â…x¬@H""&LO'� Œ0�o¼I!E3az¢ØóQ/i”"!"�à5'û[kh³ÛÓ^„‘ñ¡¾Dãodœˆ¼è¤Ù€`àö:4ÍÕ ³bmÓ“ž�òy½šéNwlØšõ¶~JcítO«”RË.Ý!"�&Lóà ÷ºžëëý7X çn0 òœˆ”+Ô¢”:|ü©xMK£GC{:Ѝ"cAgã#�@ÚÐF™0=íj[œÑè^’Å9š®ÅÉ(„é‹&4 ½•[͆‹©~ÒŽv%±ä‰HŠƒ&¯m�ulZ�#"ר°õêIÏzëŽ0¸2zÒS³bm/"ƒ]m‹#�H �"öåRT‹È]6lCnâ&‹'žuo™A•éMobˆÁ„éëK#ž”Rë�ÅTa�dCG�§ ,lMkW›bPKDIaEZ½M4*‘‘pààõK“g‰H¤†öV_új µÖôÕÆhF›M˜Zs°û5 ·ˆt©c³ê ‰Æô¢—ÅXù߸éE/³ ÛIvµ-—Ò¨Dx8 Ø¥/Žù<˜`Kú¸Æ2ƒjÓ„& g¸Y�'DäÒØÏ¹À6ôµ0�•‡½ð²&‘äj; j™xâ  �z¸¸®ÑˆDq½é ÀÔâ…WegÃÖëFn´”­}<­†´ªK3 ªI2É´¢•2c~³ìöâÚäS€ëEÄÏ5ÖÕ"bÑÐ&u¦³Å˜;küBºX4´›‹Ó ÕÓdØ ø´ìF1™0ý#™dB±; Ó½�È9‘þ_÷9-|J¢FHž�Lvz6>Í}h=¬5;gîtØ´ï }é÷ýÈ=“ËŒ 3Ø¿`?ÙéÙÆ’pc[¾ØâðØ)‰S8ô¼Ý6k¡.Fý鯥’š€þïüC™&Ÿ?ŠH¬RjïÞi½@Dš 2"…” ŸÏ€˜âFűñã�5ûïmà2RH1íeo‰TJ9þʬc…H çi2__²}¤B…õ¦wihÈÈFb-°òa·ü¯ÁäœÈaæ3ižÒkþ•UÇLž »ýu£>Eû[Ú³ö�µÛ*›"õÛTÚßÚžö·¶gÛ×Ûªt��ÿˆW°K_ZÊâçÛí+È.`×�»®èÙ+ÿ–þüòÈ/ üÇ@’'&;‰€˜zÿ¥7ÙéÙ|pÍå^øgv�á÷üîô:ùçóÉ;›çp_ �$’(ÛÙþö"18‰>š¨0ÛoâV MÚÑ®ÂF!‰!\ûŸkÙ9s§S‘ˆChçPvÏÞÍÉmåG¬Îhws;Z¤´`Ë—[ŽtÜ›¸sÍ×°å‹-åþ½KˆêED÷¶}»�³Î:lcö0Þ=œà„`BÚ…àîçNvZ6§w�f׬]v#|Í¢ÑãO=(¼PÈê7W;½‡žOöÄâeá·':ÝÛ‰€–¬yg ç�8¶¿,¢‰��ÞͼÉ9‘Cƾ vý¸‹s‡ÎÙµO¼-¿HçSfëß_OnÆÅÉ8âpÃÍZ@ÁàåJ ª‹HL~VJ�.»QC»£­l>øhž�žø†ú’:-µ\ÇOßè4Ql•Iš�ĉÍ'ØüÙfþs É’�Š„hÂo/þF›mòÚvÿ´›‚ì‚ ÏÔ6ˆwv ëXV…/Ûš&yb2ʪØöí6"{E7:Ϧžv� ÿKý1¹›øý¿;}a\ )¤È¶t‘¨â•×(¥ŠDä+`‚ˆ<¯A�¦»ÛÒV*J8Ùr@KÆ&Ðëé^¤oNçð²Ãåúu›‘mèúÇ®dϪ²HˆI¸î�ëðiîƒW°?Þý£Ãv üç@ZtjÁwã¾sØ.öºXÝÆMéE"¬kc>C`\ Ãㇿ3œ7¢ß ë¸^”Ðìnfà?ráô…JEÂ3Г%/-AYËw �†þw(&w… Yò·%NÏØ&�ë§^OxwÇ¥†¾9”�{~Ì‘GJ·ušÜ‰¨¾ÎKÌÃî92c&‰$óF6Þ�!5Cq,y/ôò–e·7dX:”Þcî™\r3r íЇÍf|�ìI@L ÿ²[‘�Ôi©ty¨ �m9³Ûñ|FAVKþ¶„Á¯¦Ïs}XðÔ‚ ¯Þ5Ñ„MŸn²›ø­MÌfÚ�kÇ�ÅÈ9‘ÃÖ¯¶’0.�v7·cÝ”uvm#ºG€‚ n¨[¢‰ÆŸ¢l²oÇþú=t°/ð[­\¼Ž(®é�Ò�÷»7qç–™·Ý?ºt[§{;•þyÎCsœ~˜T•VCZáÓ\wY&ŒM`ÎCs(Ê­¸¿%ŒM fP ûì¯Öµ:MîÄðÿ GL†6°}úvÒ6¤aÍ·Ô6ˆØkcññ.ˆš¤ýÍí1¹›È?ŸOÒ„¤ E"vh,7O¿³§™�3w²é“M¤mH#73—¦±M‰Cx·pެ<âðøf�±7£ÜöKGèÀ:Öµ‘nJ©U—‡5Cƒ ô°× àçK¶ßdÁ¢â°Ÿ]ðÔF¾?’w< ,v<‘[]’&è±ìÛ¾ÕÝFÛ¾ÙF—‡º�<1™EÏ.rxŒÙÃ̪ÿ®"宺=Ú��WEUò¥•¹/³Fl® q£âp÷s'õ[=`ÏÜ=äŸË'yb²�H˜=ÌøEù‘u<«ÒŠ3º=Ö�üsön“ÔïR9•z ÐÃ;ÐÁ²ŠU÷PF$”R›Dd úˆò·Ëºxýa¢^…1Ä8œ°üê`¢ûG³õ«­]u”¡oeJâ<ü=h{CÛÒ§+!yb2(Xùï•ô{±ñ£ãÙö�swè�Eh9 %CßÊ”¤)Ø mNÛ–Å7Ô—!ÿ‚²)¦��VÎ…ylõ1Ž­>vE÷RI’(È.`Ý»ëèùdO"zDØ�J0{š1efO3¿<òK¹ÑˉÍ'8±¹ââr'¶VÞ¦„p  0“ÌI€ËE¢A¯“(Nð6øJ)UXvŸ ÓèLæKtpǘÚo*§ROáÓ‡ÄÛ¹kÙ]Ä Š¹l;Lî&ÚÝÔŽãk�—§�¬8¹ÃçHº= g‹eÅ$Ø mÌyx&7Cÿ;´ÂëÄè‘αÿúˆèÁ=«î±ûM—pÙ÷S–ä‰ÉØŠl옱k¾•3vÞ-œ¦­›–¶ó‹òC4)gÀ¨�FÙÙ6á× ¯ÕíÑnô}¡¯ÝoH;û°åD)¢(ZD.½ÁO�±õ-Ƽ:ˆˆfÂtW )vëyÊÒjp+¬V~~àgÎÖÿ® ² 8¼ì0óŸÇ…Ó®È÷&îÄ�ŽçØšclüDuNžXqî©ÔSlùb AñAt{´[•¯5øÕÁ¸ù¸±á£ N!j‹¦±M‰èÁÞ¹{Ù5KŸÇsvŸ½žî…_”ûçï¯Ð½U“t¤£EC»½>¤ÄoÐ"tb€/í‹$ÒáýZzˆÏ}ƾyûÈÜŸI@«&ü:�Î÷u¾,#âFÅááïÁ™Ýgˆ½.Vÿ½6–“[OâåGTç>I€ °ýûí´º¶ñ×Ç;mwá”þ¸ÔU&š`ö0cö0ãÓ‡°®aø4»òbWÞ!Þ´º¶gv�!ìš°Ò{+™o(™¨·³Í¯¼Ïäf*µ¯y‡æ„vvœÍtJâ^ xÅî·DœJ!7ÜŠ€KÓq|x£.÷~ë}­XC*Za]�]€h‚hµ“¦#alfO3Û¾ÝÆù#ç9ºòh©ûÉîMÜ™ÿä| ² èû|_|C}+¿�PÚ×—¾´´¦Ì¯2¥#ÿo¶qdåÎ=O»›Úar/¿p±í˜¶,ý{ÝÙ™D6l>àúbæ ]$Fi€�VDZY±ú‡VáÁJ)ÿ~˜·ãÞæôÎÓ ~u0bªþÃWò²LŸÈø¹ãK[ד²Uö%0ïñy^(äÚÿ\‹ÙÓìp­Bæ~ÝÍÔ$¼‰ÝöÃËón‡wy·Ã»,|faùû,9W·V’u»ì¼oû[Û£™5‚ÛÛÝWŸgõÔ&I.Ž’r3rÉ?—_Î6Ðý±%ö�=ä8º.F7•‚刻IDATý½Ôu!¡„* «Ý=ê%j×¢÷‰†ÊÈ&4)lF3§ ¶~½ͬqûÜÛ ïZóµØK\M©ÓRK¯'&!ñ¶D§ÇX¼,d§e³äoKpóqcÈkC*½Žo¨// 9'rje¾¡B’nO¢ «€=sö€ÒÅÂ#Àƒ6#Ú”kÛ4V1§mH»ìKºûºãáïa÷kñv¾Æ?B)¤ôç†>'1˜ã ¢¥›sQ0ÁUº¿üóù¤mL#¨m>Í|ªÕi½‚½ˆË‘GXñêŠrûü}@•&ÿÎ9Ïï/ÿ΀—Ðë©^^(,׿ôN=x+~t<«þSuWeÉäXE_x¾a¾d§eÛE�$OL¦ «€Ë%Ô%a\‰·%Õ;ŠCK•ÚÖ5ŒèþÑ\|°ÊöU—H"-G9ÚÛÁ®ÙÀc"bRJ]Y<³ 0aº>žø Ï-ÿ×rÜ}ÝéùdOºêAïéÈê·V“s"§¢C+¥dÔ{xÙa²ŽéÏ@ê´T®ûÏu$MHbåë+§YôoÍUÿ]EÊÝ)´¿µ=ëÞ[Ç¡%‡œ^+°µ>¿–±¯üdn@«€Òý%dîÏtR]"{êA&[¿ÜZ²íëmôøs’'&³cúÅÑk“°&˜=ÍäœÌ)}èÓ‡æÉÍí¶e§g“¾©|¤ä�¿ßYnÛÁßòiÿOËm/!žxËÎŒqeÔ^ƒ ‰’€ìNiF3«†fw�m ˆ `ÿÂýv_¨á݉GÖ±¬jÕ$ÞšˆfÖXÿÞz‡~Õ¦­›2ø_ƒ+�üXñÚ :ÜÑ�žOõt!´÷—½œÜv’¨¾QDöŽäðïU[ksjÇ)PÕ' ѤÜ(%¸]0>Í}8°ðâ$~pB0-:¶`óg›Þ×¹ÃçH¼-‘ä‰É¥"±âµŒûn}þÚ‡CK9 Õ¡„bÅ/"nJ©²Oîlà% ;P®àT}FDb�–mhSa;eU,|f!k§¬¥ÿßúÓáŽôþkozü¹‹ž[äðC¥ª”ÌŸ•_äœÈáÀâÄ Š!$1Äᚉ’Q¨­ÐÆÜ‡ç2aþ†½=Œ÷RÞÃVäxÛâ¥k¡£�¡¤Û“è÷ýì¶-e9 ž®8ú¯ª”ŒìËÞgÚ†4Îì>Cë¡­ñ ò*�Û©ÈΖZrÃvA•옾ƒic§•k»ëÇ]äeÚ¯:µãT…v¶¡ KYtÖUظi°"�>ŠÈõœüË}‘ù·ôgüÜñærbë [bñ²�<)™¼³yü0᧪˜¤ Iå•ó�—�úm*ƒ_LòÄäJEÂZ`eî#s?g<�&w*·_Ù ž^Àm³oãö¹·óã~¬Ò"¼¼Ì<6¶™äIÉ xy€žz£xÄàÓ܇Qènüe¯\|¯–ú“Ñå\EYdz˜u÷,B;‡’:-•‚,Ç áÎ>Ç‘•Gh5¤UéêÌŠØ;w/»~Üå4—ÑžŸ÷0sÒL†½3Œ¿º‘ïŽàÄ–dËÂÃ߃æ)Í·àé„v¥×Ó½HŸÄÉÔ“¸y»Ñ¼CsÜ|ÜXþÊröÏ×cÜEÇ'’s2§Â¸÷mßl£ïó}‰WzùõȯóùZ iÅŸÓÿLƾ N¥žÂVdÃ?ÚŸ¦­š:]�ÖÃZÓïÅ~lýz+9åŸ�Ì™ ô×s�Ÿ;žœ9NÃÚ2÷g:õ«æœÌ!´S(‡–bÃ?”kÞ^ƒ­ÐFØ5aìž½»ô¼Ž†°¿<ú îM܇m6¶™£«Ž’rw Í;4'¤}AñAäžÉÕcË×+—ž#;=›÷:¾G·ÇºÑ²K‚‚ÉÍÈeçÌ�lüx#;XÚ6(>ˆÌ}™ì™³§ÂÂÖ¯¶Ý7š ø »¿—/®û‚”;SˆêEóäæDöޤ(¯ˆs‡Ï±ñã�å²îžÜvÒaTPnˆP¦ª`Ór;u—Óäú”û¦2DÄG�ÞqÄ]v ‰˜ÔE÷Hu) ¾˜1qÛ¿Û^nÿ˜ÏÆ�0.�˜�1N³&—pîð9~ÿçïôÿ[ÿk°ÃlÖ|+é›ÓiÞ¡yµ…ÍZ`åì�³´ ÀÝϽÜÚг+¸ùºqzÇi»¯ÿ’ÑÒ§ý?å誣去ã·;ëFP|Péà±5Çð‹ôãšû¯©1—WUiC6³9YDšgÔ9 R$€þèᎳ�ì¬JyÒ¼Ì<òÎ9ΰñ£�•¦Åv–¬®,Û¾ÞfçZ÷î:Ö½ë|ôxöÀÙ '´Îì>Sé íK±XYþÊr–¿²¼Âv§¶Ÿbj¿©•žïÌ®3ŽÛ)ØøñF6~\yJqÀ.#lUðÀA”B9‰…@úHsJµNì:+”¹²ùÏ@O¼4€mßlãèê‹/¸À6�z%�}ó+~�;¢ÄÅR�]ÀŽé;®æßòåÆ%�<1¹R‘}‚½Ãtñqò�ñÛ ¿qˬ[èýLovÎÚYF]Ò7¥Ð*€¶7´eÓ'åÓí—Œ>Ò6^ŒHò ö"öºXÎ8ËÁ%ÚµåË-„u #iBRi¿\ò·%´½¡-×

Ú`—†¿¶‰% MÙ° å’bjuEC �lWJ9[.mSÎzf¦ß6�_ù¥F 3¨}”þ#@¹YQ¥Ô`zi(ŒhF³B_*^_ ™5:ßß™;–ÜÁ3ÙÏpýÔë¸}ÞíÄ�Žc׬],y±âüCŽ(ÉX¼sÆN§£Û½s÷’—™Gü˜xÜ|ܶ)‹5ßÊ/�þ¢gv¾ëÇ]^vÿ–þÜ»á^Zl‰ÉÍÞ…T2)~)Kÿ¾eS ~e0­‡Ù×ÿŽ¿>ž/ Àšoå·ÿû­t{I�ÉÖ¯¶:®Ôi©(«²[{rëI6¶7_7&¯�L»›Ú•±9³óJqÇ�H"m‚¸lýOCI ʇ\äL.¹—¿„Ú ^“GéèÏÙ'ÝÏÀk"âé Ja½¢¸´îèÊB_A�4z¿ÓûÄ Š!8!˜À¸@»…³âµ옾áû¤„QŽbäûåCî§�Ÿ^úÕ½åKç£bk�•íÓ·ÓñžŽ´½±-›?Ý\é½íþi7{æì)÷/˗þdÄ»#H¼-‘‰ &b+´qzçir3sñ õ% e€ÃãÒ7¥3ÿ‰ù ze·ý|9's8wèþ-ýñ ò¢ðB!?Ýû“ÝW‰XU4úÏ9‘Ã�EˆCt¿‹¡Ü?Mþ‰ §/ÐãO=ûíX”M‘±'ƒìôl¼‚½J×R8ãkþàP˜¦$M©4´7Ž8óaqÍW'48‘‘v@Î]Mذ�ºÀ•¥'0¨¿äRúÞw&³�wÐç­.ÍéUßèhÅX™«©„´ i¥‹ºâFÇqËÌ[XûÎZÎt¼H1coF…ëòÏåãæãÆž9{*Mηñã�¶,�à.Ê+âÐ’Cf—ýå‘_°xY‘rYƒAOrùÃøØ1}1ƒchѱAñAø†ú’�žÍÎY;9¶úÛ§—Ÿ'YùúJ,>@÷Ǻ’B@LgvŸaÇô¬|}¥ÝË×»™7ùYùlù|Ké\ƒ3Öþo-&7Í›•Š„­ÐÆü'æ³gÎâGÇÓ¢c BÚ‡àìÅ…SØ??ÇÖcç,ûpqGk&ÊR˜ëxäV–6´aó¼€ÞèîÔ:EZfeyxðSJ9\�&"Ÿ$�0á&n2Š7BŽp„�ø ¹RÊa\¡ˆìf)¥ž¬S㪉ˆ<î†Û+á/f©hI¼JDâ¿-ÿëT$ ÿæßYd½¢”z¾®¯Ýç$zkœ D1'3Ȩ›\ÚuÎyÎ#H!PÑ8}z_©×Ò3‚©®@ìšµ‹åEC ®¢ˆ²hh޲ Ô: U$ç¸Èº“œ´Xip™ ªÀqŽc´­’…•@'©|–Õ…hh}"‰4F¼A„]E¤ÎûJƒ i´DÿJ¬ˆU6lÚ ª·ÂÑ ap˜Ã…EUVšoàt¬¤�Ë‘h+Ö "\mŠA='‚lØ<�š[~^E”HpÑ}PáHB)uÄ„éÔ1j¯`‰�k°a#�4 ¨,±ÿvàõÛåÔCUY¶bƒæ4njي úsC‰ÝJ©JÓA*Ôòƒ¬Z‰,ƒÃqŽSD‘‰J*v)¥lèBÒ½N »éNå‘M(¥²êûMl2†eÐ,£?Mx÷òU;õ5oƾépÑS}`/{É'ß„^ª´*¬FOÝQG]Í ƒªR¦¯Ô©Ë©!‰Dô‰È* ê³C²d’Y#xzVXrðrð õ­RÉT1 ~‘~¸û]™ÿºõ°Öx6uœü° »€óGÎW`„^Á®ªõ•EšD4©1÷ÕzÖ[5´EÎÐ]ŠRê<�Jý‰žx6u˜ÈÖÀ <^xá�uÜŸRZŽÀªâ ɪ²@CÛý¿ÅŽaÌeÇ·»©ƒþß ü[ú£lŠô�éüø‡KS ´ `òºÉd§eónÊ»Xóõõ¢ w¯¸›�ö!|ÜûãÒöšEcÈ«CHž˜ŒG€… Ù5k??ð3ygí³Ò6‰hˆ)#ˆSšü,s_&_ ý‚Œ=t¾¿3×ýç:fÞ1³\Q£ñsÆÓr@K^iú … ùÁHRîL`øÿ†3ì-½Æúëá¯sáônŸw;Ñ}£ù§ß?Kïôì™ÃßNìu±¸ùºQ˜SÈÞ_öòó?—+*ôlÞ³¬zcGWeØÛÃJK¦fìÍ`Ö]³ª\MïRÒHc»LÀ¿ªyh½œ—¤§±>¢ö1{šñiîÃÙ�cÁaQ–óœ¯ÓEu i$‘B5«3)¥lV¬ÙÂí4çkqF‡;:0öÛ±,xj ž^€´?÷¬¼‡€Vzò±Ì}™,ûç2‚ÚÑëé^¥Çv¾¿3a]ÃXóö»œúã¾G×Gº’¾9�Ÿ&ÿĦO6Ñþ–öL˜?�² o=›zrïú{‰Ëöï¶óëŸ~å÷—'ó@fi§×L&w“ÃшÉÍ„ÉÝTzÎ °éS=­ò–/¶0û¾Ù̾o6ùYùvíËÎI¸û¹s߯ûh3² kÞ^ÃŒ 3XùŸ•Ä^Ë}›î+7J0¹›hws;nøü¶|±…YwÎbû÷Ûñ�öçæé7_öHh! ‹L˜V*¥*.�Vžu@¢ˆÔ«" íš0ÂÒó× ¹cñüqïKóM5tÂ…J–:œ8¬WŽ3Š‹ EŽk„V€Rj†YÌ[³¸Ý8ÆUëËÍän¢ÿKýÉNÏæÍÖo–àIߘ΄ùèû|_fNš ÀН al½žîÅ–/¶P�]À€¿àôŽÓ,~aqé9#zD?&ž nà§?üdw½k¼†¶cÚ²ãý6¼<¯`/fNšÉæÏ*ϺYÛ¾Ù†ÅËBÊ])Yq„MSËçá¿”žOöÄ7Ì—oÇ|kWëúÐÒCLøu}Ÿë˼ÇçÙãíog󦩛ûÍXÚÝÜŽ–ý[:¬™]G9Ê^öš�§ªu ÎÀÄ»/ãøGDšAAUÚÖ r|šûÐëé^ÌûÓ¼rE² s ±ÚœVClh„By@�Õj(_2mÐm­¶HX±>�Jªé(ÎS);"ºo4M›°ýûív�oÿ‚ýæÙ+²t›²*fÞ9Ñ„aocÈkCp÷ugæ�3í\7I·'”s •¼8Ëž3nT9's*Lá\Û$�O";-»\¥»ýó÷“¹?³ô~ÊR˜SXîþöÎÛ èå*«ƒBñ ¿™0-RJU¶ÊÚ%}&þ2Ž­-â‚ vµ�‚v7µ£ë#]Ε}6è3^ y•ìôrUŽ$eúL�õç1’Ú¢gcßUYCG(¥æšÄ4}:ÓG>Ànª6ù\2D�êÅí¿Ün·O3køGù#&)�S©§XúÒRú¿ÔЫs[m¿ê»ik}¢²×Ó½èùDÏÒíîMt7L‰ ËâmÁ7Ô—ÃËWZS¸¶0{˜iÑ„£«ŽÚÕ .!s_&1ƒcðð÷°›K9ô¼]Íb€ì4ý!5{V¯Ë­bÇ8¦ê¡Ë¸”R"r½ýx9ç¨Ú ¢šÒ´Îc�-^,^.œ®ÙTúf3îMÜËÍQ9ó©'&7Ù'²�ª ¢ íomït¿²ªJGo f3¹gªÕçÞÄ÷&îdÏrølÔ¾øbÁRTHa[à׺¸fC‰xà°Rªj=Ð6l÷�ç|ÿ…, ¸Žëªôp–LºÚŠÊÏ•—Ô„Mì^â{æì)‰=?ïqzÎK_üùçóÙ7o'·ê¹ù}šû\Q8jU£�œáä…hâô!+ÙîÝÌÛN$r3k&„ö§XÀ«B=£”º¬Qd1;¨g# ü L˜êl©ux·p†½3ŒæÉÍ“pîÐ9–üm‰]‰ÙžOö¤÷3½Ùöí6fßk_®eÜwãh5¸óþ4Ï®¤oHb#ßIh§P4‹FÖ±,–¿ºœÕÿ-Ÿ5Åän¢÷3½éô‡Nø´ÐûwAVkÞYÿèeÆMG«!­ø ëœÙeŸXaÈkCèxOG~˜ð»ÚMdïHF¾7’ ¶ºÛîÉSzVø¬´,Þiû“M¢EǼ“ðYdzìΗt{½ÿÚ›À6�ˆ&œ=p–Õo­fÕÊ/æäÀ#Y~„EÏ-bäû#‰E¹E¬�²–E]ä°ìkmD�-�4c$q m�ê9²/A)uZDî^ŪñÄMt¥Ç”¤`^ûÎÚ*ÕkÖÌ#ßIþ¹| s >e8ïu|ÏÎÝtöàY‚‚™~Ûô àüÑó(›Â;Ä»ò›s‚‡ÿ•…žf¥ea-°âèåp¿g '(½ð}McÃÆt¦�ׯðt;�WnUÍ HB!5K]1ƒb¸mömh�ݳwsrÛIÚßÜžQ�Â+Ø«´æùª7V‘4!‰NèÄ–Ï·px™îòn3² c8¼ì°]=é°.aLZ4 ‹—…}¿îãØÚc´½¡-×½q¾¡¾v5ØEîX|áÝÃÉØ“ÁÆ�7Rx¡�ðnáv%S-ÞÜýÜÑLå=áfO3î~î˜,úÔ¢fÖH�–J·ÇºáÞÄ�Õo®FÙìGn¾n¸û¹—û`ðòz?Ó›Ó;N³òß+)Ê/¢ÕàV\ûúµ´HiÁŒ‰3ìÚ{øyÝ?šI '‘}"›ßÿñ;1Ä�‰§ûãÝÉ;›ÇÒ—–^æ¿PõhF3·œp>|ªaŠHÄ‹+mU J©™&1}9�i7Ý˽?*ö�ŸLÕ¿êC;‡VI$z<у�Z0ç¡9\8}�±ßŒ¥ïó}K ªƒî’j=¬5¡×„²ožó‚òÖ|+çŸ#¸m0fO3E¹Ž¿RJˆ xûIP“»‰€˜ò¥mV}T¤™+ŸŽRV½DcP|/‹ÝÃlr3Ò>„³‡Î:µíJXÄ"u’“E6l·W3ìÙ;€[j®š@CK &¸næ¿:“›‰)ÉSJGª+__É÷ü‘¾ÏõeÓÔMäœÈÁZ`eÖ�³¸gÕ=úNÊ{h�¡ÿJQn³îšeçZôÊ ,Þ>éóIihóò-çÁíÒý±î¬=™ûô5JïéHx÷pvÏÞÍ´±Óì>œ.£”äà⃤ܕ‚{w–¼´[aå]%°M =ŸìɉÍ'ø¸×Çdëëm—¼¸„[fÞBÒ„$6MÝÄ�EìŽó õeçŒ�L7­ÔÙ;’;—ÞI§É�êL$‚B�„:¹ `âZD4 ŽËœ´¾¶{óÉßù9ŸæS±¯òÈŠ#_wœwt ¬‹}¦N1 þÑþ¥ÿÔ6ˆ~/ôãøºã¬›²ŽÔoSÙ÷ë>z>Ù“[”¶[÷Þ:¬V¼4@ÿ/ƒG€‡ÝB·�mÄÝÏ�ÞÏØ‡E›=Í×Lì×ÂÖÃZÛ½ø»>ÜÕa¸éù£úb¹æÉU[Ù¿ê�U¸ùºÑýOö‹<»<Ô¯ /Ö¼µ¦Jç©ØÀr–+¶›”Rå}vÕgà'"-*mYˈˆÅ†-²®&­£zGѼCsŽ®:Z*¹grÙ1co -û·,Ý~|Ýq–ÿk9!íCèöX7z?Óÿ–þ,zv‘]½è�ö!D÷‹æÌ®3vk_ ² ØöÍ64‹Fìµ±¥Û;þAÏØ¾èÙEöW4'q9t¾¿3šYcõ[«Kt·òÒ—õ}÷Ç/j^þêr;WñÑ•G)È. IXÌuóÍL0V¬MEÄqð¦!Œ$¢ÐëÔˆH(¥rDäºL27LcZàxÆ›5gZ©`΃s?wmQÚú4òÏå“rW f3Ù,u9ç9vmüd# ãèÿ·þ´Ð’S©§Œ $fP GWeÍ;5+ûØÇOüdS¨G•RNë˜W“²Ni5tÎË%V¡LuþZâ¯ÏÍÌ¥ó}�íöù4Óçãì×üöâoÄ�Ž£ß ýÐÌGWeÕö~ú’óf§g—;oI[Ùµ 1ærb³ëk¼”Øu|íñrûޝӷ'8ñ²B º°dìÍ y‡æxx”hÔ&eúNöýZÞÞy�Í+· t!ZýæjV¿YY�˜ÚoªÃíÇÖsº`;Û™Ît«BMS¨G+½P5PJ)ÙIýˆpŠ÷Æ»À÷:I^˜£Ï#-yq‰Ã¾Ž#è:MîtñÏ÷vâØûPî’ù©Uo¬bý{ëž7ïœñV”W„²©j‡?_Š›OÍü••ÌãY¼Ç˜=Í^(,7¿Q—¡®¡¡@@áÎÔIn("qE‘MÎPJ-‘.80ÿ>šÀ·&4©�KTÀr–3Ÿù ø‡RêùZºL½‰Bêl.ðÌn=ŒÔâeáôΪ}g%Þ–Hܨ8¶~µw_wRîJ!uZªÝ‡PIxª»¯{¥çµæ[9ô<¾¡¾å¾Î/¥dÔë(‘fIXø•’±/ƒ°®aøEú•F0–ਯߨêß•«hF3Km+oyåÔû‰kôåç‡jëäJ©íV¬3È•|= IDATH}�÷ Ó\î²¾z°ac³¬ XPÜQ‹zry^n ­euöqvtõQlE6Æ% Y*ܽC¼úæPòÎæ1ïñyÌyxŽžòý‘¸ù^ü’OÛ˜FQnq£ãª”9}c:šY#alÅA9%k¢ûEÛmw÷s'ª·c·V‰ È+Èq¨ö¥”„ö¶½±ü;¶í ú¶#Ë�Té\®ÂMC‹©‹k5‘h¤WÚê PJ�°bí™Kîœ�øÈºëòvTƒ<òøŒÏ 7³ù‚B VJ}VË—LGïK.E�Pj拸*œ=p–uï®Ã?ÚŸqÓÆÑ4¶)ˆÝ,¹þ> 4RôìÀž�ž,xz9'r8wèK_ZŠ_¤C^RÚî© ,u9^A^Ü2ó}"[ô¨¿àvÁôy®�]ôÞâç£¬Š¡ÿJìÐXLî&4‹FHbmF¶)mW2§—<1¹4E�gSOÆ|6ÆiôPæ}®£íý_Ù"Ò nÐ3(ßÛ™ö·´×“cŠžgàË)Ê-*�rª¯÷¡fuq­†ànªu‘PJåŠÈ…zõ¾yüZ®•nt«íË^•œå,ŸóyÁYΞ°a¢”ªwâ%¤þ"â®”rY¶7õÿÙ;ïø¨ªôq?ïLZH„DštAeÐuEìkYëºúsWÝU¿ëÚV]ûÚV 6ìQéU zï! �Rfæýýqî„I2é“Ü™ä>~ò3÷̽ïNî{Î[ÑVµ©$f>2“Æñ�éuu/ºý¡ž\îwáÃtîSæ�ØãÊtÓ�”E)$½sÜϰðÅ…&Éî¶ÓYûÅÚÂü�ùÏÎ'®uýÿÔŸ»×Ý�7Ï‹+ÊUX‘xùøå…çØ·j?Ýó¾x!×þt->�q âV}¼ŠM“MíÅï¯`ÀHì—ÈMón"ïp š5àÐŽCÌ|t&ç=}^‰ûKz;‰.£º0ê�Q }d(.·‹_(õûðøø|ÌçŒýr,c>Ã¥ï_НÀGL\ ¹™¹|5î+²öd•úùp –X¼xOWòˆÊ$¬•„•#Ñ’ZP`œÀßDdË/üòÆAÊ…\(Qáý5E;ÙÉ$&ä“¿Ò‹w´ª¦×Ò¥ýs(‘4_–…Õ‚7¶¶•DÞ‘<¾¾æk–OXN‡s;Ъg+<¹Ò×§³î«u…å$ŸØø¸ƒ;ÀGë+ðñíõßrêïO¥i»ã>;Ï1“o›Ìʉ+9åüSHè�€ÏããÀÆløvC‰pÐeo-cë´­ôÛ“„Þ ˆK8¸ù +?\YäZãÏÏé·�N›ÓÛÝ8š=Kö�ôn�N0þ‚ôõE§ÌÆ6òÉÈOèyUO6oÈÞäã�‹¤w’Ø|³Èšø9Ÿë|àI§¶½u/^æ3ŸWyÕ³–µ»€Q^õŽ«Ma¸“°‹D(\:8T™€9TãóÙQe ª|ê»°›Ý+ÞäMßÏü¬¹Ôöó-2ÙÄ&^㵂™Ì<æÁó°o7UýÙYT5ÈÁQu€F4B¥æs¸Ûp°¼�5‰ª.‘AÀuËXöÒJV6»€ ¢ûÑ©ju²:ÌAò?y·²Õe™–PU[}1ìŽpJŒ"ÊCŒÓÛÚ¡ZBcä�ãì$€}Ž5|äÅÛ1—Ü—'3Ùó6oì&¼ã©k“\r™Æ4Þà ßv¬†xÕ{}˜(%јƵÓtÀ¡ÎK¬³“ÀćËUÍ‘ 餿>� #H(À€èÞô¦!Õëá‰ìd'ËY®kYëSôˆß߀÷ÃA¹c/µ[^ qÄ9[O‡�G\Ô>öÕø|w%Q+9UAU7ˆÈûÙëÏü|íT¦6èIOéO×Éœ\§MQÙd“L2I$åg’ET’Ï[À–ý?Ù ô³ñú‰MiîsBSšº]¸N*dõ÷ ›l/w”�Xá”KDä>àʵ¬½c«7£YþÄô¥/u¥”›ÙLIžÍlv¹pöâ�L(ЂÚHˆ«.¶š›Ü¸ÛÅî&^‡!–X©÷J¢p¨ÜQa€ª>>‘.‡9|ólfß:“™ñ�èä=�Ó£:щÒ*͆3餳ŠU$‘”ŒcQ‚ÌPôm/ÞUµ ü3„ ‡ œv„5ˆ Íë£9Ò¡f°æR�ÏçpW òâM­njÿ‘G�QÛØvÛV¶Ž\ñÄçu Cö˜ÿâ‰+³T.¹ìa)¤°‹])¤�G^´÷n/Þ·�|êÛSî‰Â“\Ìœ²‹Nö¾C¨°æR�¯:Ã}Æ6„rzŒ†1ªê&“E¤0äÎÌ$óìå,èÃ×(†˜‚¶´¥=í£ÛÑŽ“8©ÖœßŠ’N:)¤°›Ýº“�yd4Ô�{‡ï`1°È‹wu:¢+KØ·”W´¡'ú5â: ë@|×x¼ù^Ò’ÒŠ”×p(‰7Š:J‚ÜICU3€­]ª^ùäÞÆ¶3w±ëw<§r'ä%’Ý„&®F”ý_ñ•©¢ä’˱rþ;Ä¡üTR]D¹på‹}ø`”Âb�z£�XhÉ¢DÄm)ðÚÆÙI¡Q|#n˜~‰ýŠº‹’ÞI*³ÙW}'Š(GI¡æ¦Š`Un\eý¼`56”IæàL2OqájéÂÕ ˆW´¹_SE‹8>ݸ½ ièuãÖ<ò\ùäG)ZÄ~åÂuÌ…ë0�¡è¾}ŠîV‹|øÖ×�]BEðÏ¥ÀÑÚ¾¸¢1Ž’(Éðg‡“Ø/‘u_®cÑK‹@àÒ —rúm§³ñ‡�lž²ÙnÃKI¸kºl¸ÏØ:³“¨ªš Lµ~J "4Zñ@ /Þ9äÄc|™@&C=ÃÿãUoí•§ oüs©!Ž’:œÛõ*?ÿåç¾ӳþ9‹+¿¼’ögµw”D)Ì¥�Ïá>c#Ú'j¬Õþaë'¬CƒÃÿ\ªu¿„e^t;J¢$þ–¥¹‡Ž¯·4]æü}²JR[J"lc¶­?ªhêÑNÂ¡Æ 47Õ6 €>$Ø:}+âN¿ítZõjŹ��K~V>k>[c³táKÀ\ªÑùÎ3Ö㎒p�æ¦Ú¦!8J"óŸ™OŸëú0â?#hvr3Ü1€/Æ|Áá]‡m–.|)¶“¨1Âv'Áñw”„C¨p”D’•šÅ¢—ánàæÌûÏ$cKïžñ.[¦n±[´°ÆQÇoÜñI8„ Û|þk:y%9ïéóöø0ã“PˆMˆÅ›_4B9®Mm·%®MœMR†s©Þ* ÇÜäjŸD˜1ìÉa }x(iËÓx³ç›üôçŸh’Є~½�fí�Wœ¸à… ¸eÑ-$ô±³ˆoxQ[>‰pVþ$'|Ó!Tøç’´bÀÙIÒøÄÆ ùÛòŽäññE“•šÅÒ7—òëC¿Ò¬}3nøõš$4!61–nèÆ‘”#l›±Ín±Ã†€¹T£ó9œ—5þ?h;kí8Ô-üsÉŽ…G>˜žß†„¾ D5ŒbǬ=p<‚sÁРi†>2”ë§]OÎþ¢E1럳ðÔXÎXÄ0—jt>‡³’°Ó4àP7±Ó„™ àÁiLWˆ•ãïÒÍuæ£3‰‰‹aÐ_°fÒ’ßO®M鞀¹T£ó9œÍMvF¢8ÔM쌘s”D1ö­Þ 퇶/ákhؼ!±‰±…¿7k׌èÆÑµ-bXS[J"vŽ’pŽ’#ަeá òÀnYt k&­áÈî#œÐñºŒîB£�ØðÝ<¹z�ëÅUß^Åg—|V"ò©¾â( {Ãê&v†Uç�£$Š3ã‘äìÏá쿟M¿›�w–=°á¿>ô+Ë',G\‚¸„žc{2æÓ1|yÕ—…¥<ê3s©F糄sñOÉþ¤ªí–Å!ò‘ßs€6ªšVË×Àw%WÒ“žµyéˆ!¶u,MZ5!;-›œý9v‹öle+ñ@ «8h�Î; 0Û(g'á*l37©ªºÄåñà ÷¿9ÛÈNË&;-Ûn1"Çqm°µ“X¤""ŠH®ˆœc·,a†­Yü‚ä;æ&‡PQ[æ¦pWa½“‘EÖÃ8ðçÇ€ãW;–%"Dä¹Ê2AÔјpÏpÿ÷­ml­æ( ‡PâÁƒ žšl8áÿ k%ÜÜÅñøûÛ�?w[ÇÒ0�„æaîi0 ø®ª‘f"²\D:Võõ�†@AMÿQ•Až£$B…¥$j<14”DØ&Ó©êfU}“”§ªªêŽ CQÕ?¨ê(U= èì~/"×Wñò°ÎÎJ4ܰµ® ¹Ž’pµ¥$Â݉V'}ªºRDžþ œ|$"}Í!]ì3"Òh ¬b�Û¬CÝDÄ_»eeñ^ÕVó¦!@' XªªGJ“MDša”O"� l ÖÿZD:.UÝ$"ÑÀP °X¢ªµÞ´ØÝéÐÙI8„ k.Õ{%‘‰éç\Yk½žl½¾œ%"§©êÊÀ�"ÒX�yÀ�¾Å( €¯†6¡hÖ˜}ï€÷ö‹È5ª:£Ø5\Àß�' Hºå"r•ª/î?£ †?§Û)"cT5)ø­ÛF Ìœ²Eã˜]—w¨cXs©Æçs¸››öbV´u‘vÖë.ëõ}ëõš c/Âì"¾V—`”À�aÖOqSÊ›˜ÝÃeÀ¥åÒ ˜ "ÅÍxÿžæc€s€�À91ˆ\ À¯ÀbK¦±ÀtŒâ{§óU%3§lÁ‹7%‹,§B�CHÈ&ESjú:ᾓØKÑUp�À2ÏÜeýê_Ñ�1?]-"/fâc½~¦ªû€}"â_A,UÕu¥\j;p‰ªúëü "»0ñ>ÀRKžöÀ½Àà"UõoaçŠÈ>àCà_uÊûIRÕBÅ&"ßcV7ý�“0J*\°UI{�p¤€0ö³9DYdy|øRkú:ᾓØGÝØIt‘?ˆÈ�"ò°8íô1€ªfav í0ö},ÃŘ©Ù•¼îG ÂÏLë5ÐüÅúüü ×1sÊ.öeã$‹Õ šÖ}=|„#^ja>GÂN¢¥ˆ¸l [ Z?~ŽOOÛ1|\�19͵Þ4Þ¯Âw°+È{þ•G“€÷:Y¯ŠVÕ|Ù ô‘Vªº¿Ø��A®á/yѸ2ÂÖ¶ï$Žr4äs=Çö䄎'°ê“UÙ]4&¡Yûfô¹®-:·Àí";-›ýkö³áû äîÃO<-‘6Ûк_k4kÀÞ{I]–ÊÎy;K­™4àÎ4lÖ�sv�²(øæ±ù)ÍéuU/v/ÚÍÎ9Á¦MåhÞ¡9톴#±_"-:µ +-‹Ô¥©løn·þv+)‹SøîÆ¢Qæ§þþTZöh Àº¯Ö‘±%£ÔóÇ&ÆrÚOàð®Ã¬þtuÐqÑM¢9yèÉ$öK$¡OG%-)�] v‘±¹ôóW—l²…Z˜Ï‘ $ܬ�+Àêò ð? cÒÙ]Êæ¡{¥ˆÜ£ª75}Z…ë–ÅTŒ6Öë�R޲^ÛaBw«r�p ›•„¯;—\†0h¯ßÍýèta'v/Ú]DIô¿µ?£Þ´_CêÒTÞ=ãÝ"ïE5Šbä«#éÿ§þEÞï}�±øî˜½ƒ¯Æ}Eξ’u•Î~èlš�܌ûóF÷7(8ZPb̉§žÈùÏœÏügçW[I ¾o0ßôÞ.~ûbÜ1n–¾±´Ä±^ãzÑëê^4iÕ„_îÿ¥Ôkô¹¾ç?s>;çî ª$ú&0ö˱´èR2¾F½ÊŒGf°à? {g„ EÉ%7GI~v› ªËU-7qNUUD>þ Œ‘_€ßÛTuI®[Ñ©é_ùÇ—r¼y±qU¹†­X¡½�°YI€q8†RI#þÔxF½1 õ)¿Üÿ ›&oâXÆ1â»ÆÓé‚Nì_ST×»¢]ܲðOK$cK3žAZR¹‡rIì—È€;ÐãŠܾüvÆÏ‘”àkƒfí›1ôá¡Ì|tfÐã¡à’w/¡ÿ­ýÉÏÊgê}SÙ5[2hzRSÎzð¬B%—šÜ\ï+ð‘{8—žc{2íoÓP_ð)ÜûêÞd§eÛ:6èñ“Ï9™ë¦^GTÃ(VN\IòÉì]±—Æ'6¦ÍÀ6ŒøÏ†?;œ–Ý[òÝ«œ7”rP´Vváî“Tõ…1ÞË€³€�Ïjøš[­×®ÅˆHÐc"«ÕÊ©!Æ?‡ÂBIÔ4‡wÄãfõ§«Yüòb2¶dp,ã)‹S˜óÄÖ³¾ÈøÓþx‰§%²õ~&œ9�u_®#s[&Ç2ޱ}Æv¾û%K^_B\›8†><4è5÷­ÚÇÑô£ ùÛZt®™ÈõV½[Ñÿ–þäÎ㽡ï±ì­eì_½Ï1[2hÞ¡yá²åÂ/„ ñu®h›&o"î¤8Úmô:ñ§Æ“Ø/±Ä÷Èðg†Õ0ŠyOÏ㻿cǬäÊ%cKk>[ÃøAãÉÜšIßûÒf`›RÏSæP½W@õHI¨ê6Œ?b”õÁ•„ß4 çð�˜¤œë-¥È€€ïƒ%ÕEþ9dçŽt? µ¡$š´2.§]ó‚¹¥ŠâŠr1ôæÁ?ë±YEúM¢¦¥hANýnéG³öÍJ f<<w7½zQõn ~÷èï@ éÝ$ö­,úOÙslO:ŽèÈŠ÷V�²(…“�D�+z=ÏæŸ7ÆüŒÞWÛÆ6=ÞqxGÚžÙ–œ}9ÌyrNÐ1Y©YÌÎÄp {|Xù7W æP�Ïç°VÖCi?a¬$D¤ƒõ¿Q"Ò®Œ¡•ጟ`°ZU×ãw2ß%"½D¤o�܇ a)¦×€S�É"r¾ˆô‘?ïaÈ#U9w‘ˆYcÚ¦$TµÀ…ëHm(‰ƒÐõ’›Ã4?¥9ÍOiNöÞl6~ü¡�w8�µ_®Åãæ”óK®M4mÀò ËI]šJ—Q]*tíÊÒñ|SªlÙÿ–y?&.† _¾�£Ž2ý¡é¬üÈä£v8§CÐó¤-O#kO=®è�+ªäc°×¸^ì]±—ûý¼ÿþ“?HÆ›Wz§¼U¯Â“ë¡ãˆŽA¯SU²ÉFp0d'-…°Va›P'"Ó1¹‚‰äÙ%"¡0 }dcòJ;ßëÀÌnc5&³º4ŸBEx“m=“ ·x3 g)’H&Ȱ‚lC�ýµ¡$Ö³ž¬=Yt¿¼;c>CÓvMKëßdlÎ(Õ>ïÇ Ô¢SIsRT£(PøéÏ?�ÂÈWGÕ0tnÏèÆÑ4Šo„7ßKæ¶¢‰ÆÃF\›8~}èWŽú®uìçbçóªêcÿÃåÀ�˜šOÝUõ· ç¹Ï:O0{Ƴֱª8Ûk »#›PtO5ßuÍ“ëáã‘sd÷z�ëŽÛîåŠÏ¯j÷?¼JsFâo tB§Jó?P÷,ÙÊ÷VÐü”æœõÐYÕ¹� rf¥f —Hè“À÷œÁ®ù»Xñ¾™òþ¬ø.Á×MâÖL2bÅMN½®îJáñ ²´«Äw¶·ôשׁXs¨Væs¸G7ìÆœ ;Ê«Md=ÈgWö¼"Ò“l·HU·—qþl‚ì4Tu=¦`°ÏlÇì~J;g*¦|G™¨jrÇ6$çÂf:bæ’­øðí8ÈÁLÏ�eÿêý¼ÞýuÞ9�3ï?“žc{ÒslOVN\É”;§†©º£ÍÃÝ“W~ñAo¾1­”·Cøõ¿Ò}LwÎ~èlV~¸’C;•9¾"ˆÛx¡‹˜wF¿5€)wN)TÞ3&ºqé_óž%{ÈÜ–I·Ëºá¾ÝmÎ+Ðëª^ìš¿‹#»�Ðè„FA?ëWˆþï£,ücbbcÊYq2Èðyñ–úwJ"a'±³b®O܆ù·yËnAêÝŵ!�ôZ (È)`á y¥Ã+|ó÷=p”¾7ôeäk# ÇÞmìîMÛ–n’òãÍÜZv]¹£éG™õÏYD5Šâ¢WŒ»+[õnE׋»’•šEòû¥ºÎ Y3i Ñ�£ùÚH·lÌšÏJwXûYûåZ2·fÒªw+ºŒîtŒ+ÊÅYÇýª�B÷ç0w%…¹©ã~ U]¬ªŸ©êlU­ùð—úE7Lø«=OæTÕëµ½¦w=¯êY"üS\Â�¿ ¡IBö&ï%gÿñiöÛãXÆ1z\у+¿¸’Æ-�×fŒjÅàûsÉÛ— ^-aÚ)�éL'?;ŸÓn<-èñÿÁuS¯+Ü¥”Åʉ+I[žfü¿½z<ðNÜB—Ñ]¸iîMˆK˜÷ô<<¹å;ãý&§>×õÁsÌSBéC½Z˜DwÕ×WqÚO+.Û´mS®›z'Ÿs2)‹Søíµ`‚UãpãN/«Ãd(‰„è&0+Àº¾“p¨9º»¼xW¥“Þ‘¢CÊ€ÛÐaX²R³ÈØ’�¸„�ZÛ:–¼Ãy|}Í×EÆçÊeüàñ\õõUô¸¢=®èÁá�‡ÉËÊ£e÷–ˆ[ÈÙ—ÃWã¾"uiåZd¥f1ç‰9ŒøÏˆ ÇûÞØ—&­š0û_³Ë=—7ÏËÆ6Ÿv=[2È;’GË-‰j…7ßË”»¦°ì­eåœÍ�±9ƒ´åi´îßš�?l$?»bVÞ•®D\Âè7Gséû—rñÛs`ý·l\è\ß³d_^ù%¾‚б>À-»""EIlÀ˜aªBX) `Ã>öy •’°ÌC�6ÿùÏÎ'+-‹Ä¾‰´ìnJcgnÏdÕ'«XðÜ‚ 6÷ŒÍŒ<žw ÍS*¼Ñ �ØüófÒ’ÒHz'Éä(!eq ÑMJ7]üÊbÚ iG£I„‹mK“VM8²û)¿•ïçhдgþ¿3I_›ÎâWÓk\/ZtiAóÍIYœBÚò4Vºš´åÁËŒ¥¯Ogçœ�%|K^[Âi<�¤w‹Fµççä³sÎÎRÍkÉï'“–”Fïk{Óº_kú&†ºnùy Ÿ^òi©åÕ«Ê>öåûð•íY! åxDd & ¹Ymm±ê"rø·ª¾h·,"r­ =Â#‚uÚŸ7ü™øSãy!ñ… e¼Ã™®wåêÉW3ÿ™ùÌxxFùâ»ÆÕ(ªDí¦p!¶u,·-½�ØÖ±|uÕWåFJUEyš§½<÷ªê!;q„½OÂÂo$¬Ó~‰p@DÊüŽ D¤Ђðˆlò³AQ9XŲ;Q�,Å"0ðî�ÄŸÏÁ�#NAœ4è$Ô§%VðeqpÓÁ°U`ò!>»ô3¼y^.ÿør: ë²sáGйi3àŘ BRêÁ*†÷ÿ€lU}=ÈñáÀù˜úIÙ˜°Ô9Àì` ƒD¤!¦íh?à4LŸç$`¡•�L†6À ˜<Ñ·U5hZªˆŒÆôú~/Hg¸J#"gbzP÷Ö¾pG IDATÃt½ÛL|ÀÏ"r³ª~Uì3a ùªZf™ ²~ýEUƒ•ADNÆ”þ8 “½ó�Í)í»¨áÙäg é¤KB*Μûع ¼{ "Bt“h<Ç<üpë¡—²H_›Î�wüX˜(WWHKJã»›¾ãŠIW0î»q¼ÿ»÷C¢Ø"›jm>G„’°Zhn‚×ý­�0u–öbŠå "nàL³Ÿ`ܼø†ˆt¾‚Õö‰ÈãÀ“AŠqµçx­§¶À=¥\óJàFL½¥*+ 9Sa6ؽ=€©öê‚yüž 8Ïürš ½€QB`ºÚ•P"r'æ{ V¹6ED®TÕÅe\£¢ôr1Š0,PÕœ(‰Ú—Nz• W¦.K%-) Ÿ×ǾUûXüÊâÂpÖH£¬úH‘ÎÚÏ×’w$�Ø„XâZÇ…LI¸påxÕ[¹è�jJÂb¦žQMó æ!šŒy0Nì¶{Yï8XDcª¦6Áã�y(6b”Àã@Oàª2®{§ˆŒWÕ•¡¼™9[Xrµ–OaVíG€>˜öª½€LuÙ`¤r¼„yP%!"]1 " š%/"/c ³^gcuF�sEdŒªN®Ü�–à `E¸õH÷á[œBÊÅTáopÝWëBjçv¨9¶ü¼%¤çÛÃÅüÝÖ‘â“Xœ¤)N¨ñ7úy@U?WÕLUÝ©ªSTõvU-àþ4FA¼¤ªW«ê UÍPÕmªú90³5+"¿+åš30‘.%Ì^!ä~Œ‚˜ œ«ª?¨êUÍÂTr=cöêü¹”s,Ò1÷RÚܹÚzý&ØAéd�ÿ˜%Ç«ªºRU³Uu©ªþ Ó×;xÁÚÙU‡!˜¹V(º`7»ÑÈèþê&ì`G�ß¼Ú¼f¤)‰Æ@ß¾N+ëu~yEä,à<ŒÿáŸÁÆX>„§­_/åT31Šâl¹®RÒViÎqSÖªZ<þñUŒ¢» £(þYŠ;evÆÿŒ«1»°ÒZ¢ý³zþ°4“•ª~�ùNºb²Ð«„ˆœh�#ì”°0Ÿü(»2¯"�#!›ìjy>G’’X…)Ïqf _Çßšë’ Œ=ßzý¨œ,é/1f�sE¤q�ãq˜‡xð| D À˜Ì–ªêòÀ"2 ÓOû3UÌØÊú9OcŽ÷·Wü ˆôÃÒûÌ ÿwö¿rdo½Ž*sTÙ ¶^ÃQI$ âI¡üÜk®(°¨6¯1JBU=;ø�¾ÔkÖë"ò+j©4üíJË G³ õùWÖƒ ilõ€ø/¦ƒÚ¿*.n…ðw{/"§uo¯‡1æ(¿±;XAšŒÙ\Äôw5fO²ÆÁ2Q�dýZzŸLƒß˜Û©œqe1Ø®ª¶7*Žªæ¹p­Øm‹ ‡a7»qãÞªªe—¶ 1£$,RÃJBU§cVõ 0f˜]"ò¸o_ÿ÷"ËA h0%áOU}mu�ˆô¬¸Ôåâ—³¸CúaKžG¤þŒ`JB¬­/€�á…D³»X ª»^&®5æ^ªjn92û¿¯ê*‰pÜEàÅ;w;œJ¿b'; ¼xçÔöu#QIœlåÔVÞDwL¸h3Œ¿a»ˆÜPl¨µ\‘?t€`;±®›…‰®ŠâøŽ&øWüy…éb]+ x3ˆœ¥™‹ ¸Éé,ÌÎêÓ2>çW†yeŒñãÿN›T`l ¬]Î@ÂXI 3ÉŒ9JÙe©ë}®ïÃuS¯£óÈÎþLƒf Š4ªoxð°—½nl˜Ï‘¦$cÌ5í—@U7«êM˜^¯cò*>‘À*e~RÛ œÒ¿­œë~,†‰ˆ?d¶ºá›þk†¤¾�yhßY,<Ô?fk2.±Îy™•”ÆÔäÁø_Jcæ^+¥æ—£ª¦¢¾EÎJbÚšë ñ]âéta§ uuSÝõž�÷pϦ{BÚ4’H%>Ž’(UÍÀØÕkÚ/xÍ4U½¸×zëþ€Ã~%Ñ¡§ò+’R¾ü“aþ¢ˆÄBµ—š~%Ñ@DÆ#€ÿ©êÒbcý~–òäüã e=荓.DU 0}WÀuJüªFû!˜Lù²ûPÚˆª¦¹qïqüå ¦çE~v~…úp×Ev³®#”ïË 9¥$,Q‹J"€‰Ök ­ÞŸ™|•e“Šˆœ‡ ­ÝX§“ª&ocœ¼ÿ‡yØU‡MÖë¹V²ÛËßÃ#Åäl�Qù˜œˆ²øÌz‡‰Xjð^Yø•ÒÕeŽ:nʪj2Ý`‰ª–ß©ÞF|øæîbWý|òUõ)¯�ú¯v|5¤%·#‰ÝìöaJüÔzbM$*‰…@ÿ3Gmá§ Œÿÿ Ô“V+ìAë×§*q½G�ƒ˜úRå­ºËDUS1yQ˜|Œ6À_ƒÔGºcV_^D�ª®ÆÜûŘüŠcÀwÇ_Þã+£"Ò³3ñP1ÅŒ°vZûQtÁöˆ¯ÚÅÒ‰‰‹¡IBp×Nã—z,ØØØÄØR;×§AÓÄ�‡¸Êþ€+ÊE³ö͈n\z©qož—‚£¥ÓT©iÛ¦4hZ±Gƒ+Úeî§¢ˆéiÝøÄ²Üu5ÃNvz}øÊÍݪ "©,‡ŸY‡ñ¹À/¡<±ˆÄ—ß>@­šGÿgýZxMUU«.ÓçÀ§ÖJüCUͳ>ט\ˆy Vø�§ª™"ò0fGQbÕm]Ëï$¾VUË+)úÆ×ÑSÇèû€sÅa”ÒƒÓÖ3A>ŒIÀ˜ïìKËñ^&ªºXD~Á|'‹Dä*«V+Dvæ{ŠTÕJÛbDäTLD׬Ê~Öfyð¸w±‹²Z–ÏMónB½ÊWã¾â÷ãOç‘�—pxça~ûïo,zi†uà¢W."¡�)0˜³/‡iL+Ñfó¤A'1øÞÁtº �âà9æ!éÝ$fücF‰·¸„3î9ƒ3ï?“fí›™ñ¹Ö|¶†ïoþ¾ÈXŸÇÇ9ÿ<‡Áÿo0 ›75u©&ß6¹Dÿ†{·ßKtãh^Hx¡ð½¾7ôeäG2qÄDÚ hù��[¨ð¬?À”»¦°cöŽßO‹Î-øýøßÓvp[Ü ÜäìËaÉK˜÷ô<Ôw|¡Þïæ~\øÒ…L2�¦m›òûñ¿§i»¦¤.KeåÄ•œ÷äyÌv>óŸ-ùì>÷_ç2ø¾ÁL{`Ëß-oS^6{ÙË1ŽEcÓ|ޏ�„ªnÃø%F×Àéa"šˆÈ™!"Ë0!®gaVã/~@U¿®Å˜hÞ²Dd¥ˆìÆÔ:‰©ítnLã1ÑGÁ–b}1ÚnP`ê6m¶þ¿°ODVˆÈLžÄƒ˜Ü„3Uµ¢žÔIÿ_VTSqÆXã»+E$CDüu¤~ń׾¬ªÏWâœ�Œ¶ÎU«å ª‚ª®sãÞ³¹ðŸ¦ú4ˆkÀIƒNâÚŸ®¥I«&Ìû÷<6|»�¦m›rÁ‹pÞSçqÝÏב³?‡9�ÏaÇì4IhÂe^FâiEk¶Іî—wgçÜ�Ì}j.sž˜Ã‘=Gô—A vx‰k_ùå•\ôÊEˆ«>ZÅo¯þFê²Ô ¾„A÷ bð}ƒY3i óŸ™OæöLÚ løïÇÕ°èúµa³†F‘àŽqÓ Y.|éB.|ñB6MÙÄÜ'ç²Í~Nì~"ã¾W¤ +À‰ÝOäOKþdÚŠþ–œ'æ�•šÅ°'†qÉ»—=׋»2î»q=p”ä’YûùZÖ½ž˜ØúÞ¼D¯«{æɛ‚¯ ›ÙŒ ×aLàN­‰; €)˜,á¿TãþoàRèƼs1æAz:¦äÆbLa¿‰Á Å©ê§"’ \�)¿Ýc*š‰)ï1¡”sG0åǃÎ$Uõ‰ÈÝÀsÖ[�¾ Ãಢ‰ƒ)2øF)ŒÄì*r€o1þ•7Uµ´r¢³)æÌVÕÍ"ò&rëçbã·aî­DµJ+;ýZùSÖ¤¦|†ßNp‹ª¾_Áû ÆhŒ½lûD˜àÅûÝ6Ü6‚¥Û[*ITÃ(òŽä1qÄÄB;þ€;0ú­Ñ }d(ËÞZÆ”»¦Ž¿è•‹tï N»é4¦Þ;µðýV°öóµE:Ù-ûß2îÝv/}oèËÏ9þÏÞetº_Þ�=¿íᣠ?"ïp@¤s�eΉÝNäíþos`ƒ‰u˜ñÈ îXq }è|Qç õšhv{Þú>»æKð¬Î⚯¡Ëè.ô׋%¯¯þ2ì‰a4<¡!Ÿ_þ9¾5çŸÿÌ|nKº�~7õcéKKtµ;ïéó˜÷ïyÌ~lv‘÷·NßJç‹:Óºë"ŸiÕ«ñ]ãÙ>c;Ù{«ëN„ l(PtŠ]E*#YIüUDº•Ö«¡œl½–i´2£_±~*…ª®ÃÔ%ªìgÎ-gÌo¥Œ9Ýz�äX°ó|!"Ç€i–9ì‘ò>SìóAÛǪjñÜÿûïï–sÎÏ1¦:¬�ßIÀc"ò‹åK©–él(p{e?k#SrðîC¢9AÝ4UbÉëKŠ8z·N;®ã½\´²ÃÖi[tï ZtjQä}O®OnÑ]@vZ67$¡O�âqìà1úßjªÃÏyrNQ«c¸þÛõ… Â?fëô­$ôMà„N'Tø>wÍÛU¨ ï§Ëè.Eî'®M=Æô g_¿?$äÉõ°râJ†?;œ®w-¡$2·f2牒9lÉï'Óù¢Îô¾¦w‘Ït¿Ü´0YýYõëŽr”TR£ý±Ú'«"‘ª$æcVᣩD‡&i¤ªÇD¤Ç‹îÍ­ùjƒAÀ"Ë�\!BPv»FQÕÏ­LóÿÃ4?ú];›Ò¸3¯ ¹€5Ç,Aò6±©Á!¬†Ÿ¾®hñÀÌm™xó½¸Ü®"}¦Áô~ ýÅiÔ¢'t<�¦íšÒ ®1ML¾B YÈÿ@Þ½ bn¤ýkJ¶F9°þ@áõ*J°ó»ŸøSãAàðîÜ~ÛéEÆÇw�/òÈŽ9;‚ö©Þðýr3sé5®Óœ^èÏè>¦;Þ|/ë¿©~_ -f «ÀÔr†Ö©$Tµ@D¦a”Deú¯µ"jâ0÷¾’€f:‘‚•—ð1¦×E]ã1ŒYìrà{¹ÐPAFIª¾ý-‹¡ª¹.qÍØÄ¦ ÏàŒê–F/äXæ± ƒ¼¬¼’½R+[ölɈÿŒ Ë(ù­^%/+¯PIÒü”æxr=ä*¯âŠ!7³bãÊ£´û,Ž_‰µІ6‚m¦œJ3yó¼¬þl5ïÈÉçœÌŽY;hѹ }ØøÃÆ�Üß&6© ×�zjµ^S ©$,¦ïˆHSU=RÁÏü„1Ó¤avoZ&¦ˆÂ*vXZÙñˆÆŠ»^,³`…¼V®ÊHLAD¡èäíl¿¨€¢ �k"0R§*4iÕ„ë§]Olb,sŸÃªOVqhû!|7Ï¿™vg�Ì.8Z@ã#n ºò.ŽÏ{Eï3?Çü©'�Ì‚ç“]òqPÖù“?Hfà]é}uovÌÚQhjZóYõ;îùð±™Í^/ÞïË]sD²’ø #ÿ˜墪¥5Óq#,Çö‡Uøèé'ºmöÛj0Å‹÷­íl§+]í–0Žè¸6q$�ÌìÍ.r,¶uÉü‚Œ-4iÕ„¸6qÙ]Ñu[íqp“ lؼaQ_H5H]šJúÚtN½ôT~¼ãGºý¡9lü¡ú‰Ñ)¤�G^6Ïçˆ �õc5óYJÍ„Â:D&£1™äµÚÞ1¨ên7îõ›*¶iªüyGRŠ>ð›whÎ §”t,ûsz� ÖêÝ~¬?À±ŒctÑ©DhluHþ ™&­šÐeTÚnËÆ6–›øW6± 7î4UµµxÄ* ‹)ÀȲJb8Ô+F?ÙQº xñ~·‘�acþô¯¶{ŽíY˜¤Ö´]S.ûè² &˜yÿžGANçüóz]Ý‹èÆÑˆ[ˆïOϱ¡¬|_5 Ž0û_³‰nÍÕ?\Mâi‰ˆ[@ŒÃzÈChÞ¡òÑe«>^…Ïããw�þ$4QM`B_½x+RÅ F‰ds»õã˜ÑHÈ®u¨!¬ÞÙ€Û-K5ø!‹¬ìf7íªW‰%$løvûVí#¡OÝóWï>Ló“›³uúVæ?7Ÿ¡í`›µ'‹ïþø—¼{ c>ƒúõ)®(;fï`íkmº“ã,{kÍ;4gð}ƒ¹}Åíxó½ˆKpE™õò–©[Ê9CI²÷f³eêº^Ü•ÜÌ\¶þR‘že“N:8�yÆÙJD+ UM‘ÕÀq”D}ç ƒÈ }-‚ª.Ž’¨É$w¨Ž’Xö¿eÄ&ÆuÂÎ}j.Þ‚’‰ÿ¹‡r™óøï>qìÍ÷2aÈθû Ú hƒ'ÏÃܧæ’üA2ñ]ãñøÈ;R4ðlÝWëØµ`}®íC«Þ­ˆnÍ¡í‡XõññrÛgmG}JZRÑ|€´iÌy|;çî,òþüçæãŽ.ø•¶ÜŒÝ1gG‰ódnËdÎãsØ»²hyŸÇÇ´¿NcÍgkèta'û&¢ªdlÉ`ãÙ¿úx8mê²ÔÂŒôòØðíº^Ü•u_¯Ã›_ýš’É$ãÆ}ЋwzµOVM$Bwæ…ˆÈ_1»‰DU­~z£CÄa™·?ZeÝ#y$†˜ÇäAwTd¯áê—¼{ ýoíÏÄó'²}æöj�ˇ�yÑ“CÎ+ªú@ˆD¬2‘î“øÓíí »©iDd‚ˆL‘ g‰È)•¡œƒ)£R¡ìó0ç£|ò]*ž#ê`31±1ô¼²'[2*´ë(�ml#‡œ(Âd>G¼’°JZOn´[–Z`(¦¨_…–˜"2³Âþ e nÖi q¨ê.7îù+XÖ}0ê;â6±2 š5àâ·/¦A³,|~aµsS’IV7î5•©¦P“Ô•ýì‡Àg"ÒAUwØ-L‘‡iš ð0DDš`v‘•éÕÖxñNØÆ¶³³È"ŽúÛ×9œ|ï`†=1ÌôÀØôã&’Þ­~äu.¹¬g½zñŽ�˜!¡®(‰ï1µœ®ž´Y–°AUç‰H|�æBu‰Ë1½¬?¶[�òµ ÿ[Ū†gq–ݲ8a×ü]¬xêUö,Ýc2¬CàÞ]ËZ|ø”ʕޯQ"ÞqíGDÞÎWÕÎ!‘CÀ SDöˆÈ¸ ÃãEä{L_ˆ�ÀQyÇ*“xÎó¬{z³Øûß‹È*i*"ZçÙa�çKI(EÆkDd3&Ôô°uŽs‚Œ›""‹ÄðŒuþ­À]"2[D2E¤KñÏYŸ]%"E¤e°ãÅÆ¶Çt²«J �°FÑr0*µd;‡:ÊA’BJ”_uz©„œ:³JQÕ…ÖƒýFL)ñÊâšar.ºcú5‚1gœLƘµn²Þß\ƒé¥ü¥ˆôñ7±šÝ„i¡ù Æy|’õÙ�Ed—ªV³v,«1»‚Ř² €ó1 )/&ÁÆ <�ÙŒþ„é3}oÀØhëžŠ× ˆzcr Z¯a"Ä®ÆØ÷ÝÖ}""÷/[ט€1ïÝÌ‘‹U5°”q,¦’ë?0Mœf{�E˜¾ÕçXß]‘"…"ÒÏ’k¦ª­sœë�,LÓ¤ºÆ,7î´d’[·!xÅR‡ºÅJVâÂuć/¬j�Õ%añð ˆÜ_QÓNúQÕ׬ߑ٘Û�À9ª:ÀÚUìÆ<a‚~®X[±Æ¯ÞÄ<ÜËPþ£ SÕ'Ê‘Ï�ézwQ@/íç1=´ÿ$"÷U¢,Es` ¿gƒu?éÀe"ÒÒÿ ÓOûqLõÜ^ªša½? ø xQD¦ëœü ø�ª¶³v"ÏDI`ºçAz�[f¼›€/Bm ¬j¸V²òï#ªÊ°á‰ËY^àÃ71Ü*S×%sÀ;˜ÕóŸªqŽlLoé@üY�I~fÇ€Y%t ü€ªî T³‹�µr®ÅD =GÅx)°Ç‚ª®Ç˜¨A¥–�EÚ•Z>�eÅeÄìΚ_û„5~ ¦'G�bãý¼¨ ¬Ï¤cjnu‘ÅÆ�Áô ÿº²ÿÁºæ«©¼•O>É$Û-‡C ³–µd“…ÙÕ‡uJIX �ûD¤ªK¯íAV¦ë¬×`ÝêýÇZ?`ù&Ú‹È9"2e ìè~ ¦oBR%šë‹Ÿ.UŽ2V]2Øyü>—(¹#ð‡ãsèÔ ç*­TŠßæz�ÿ ét~QÕŠ4Xy˜jw…ÌšÄjßúÉ|æh(Bg–yÌ+pᚬªáSØ¢®™›Àtª» ¸Šª…E–õ€ªp(©ˆ\ü‹ã+ì<àh�¡­×’…lB G9T´Û•_Æ;ʬ)qi÷ôƧ3NDþfíÈü>�Š˜šÎc|6uEŸ?ÌáÖ³žô°[‡`ÛØÏþh*nI¨UêÔN@U·`œÎU­yRV(i…–s"r%ðF �ÃÔ•jô 2ÜB[™Ò¡ÊÆ­èyüÊm,fWì'X÷¬ ­Ç,3ÜÇ@kŒ¯Œ©)‡ŠU½|X®ª3Ëá¨êZ®ió˜WÜtéPG˜Ç<¯ ×U]h·,Á¨sJÂây �ˆØ;«õz›ª~Ðo¹u�±þÚÄmk^¬*ão³åRÕ ¥üT¶ÙÖëå"r2p0¹y'Ý�‹1ÿÆõ¾gÓH‹ÚÁ»Eq1{ÙËv¶»}øž±[–Ò¨“JBUcÂ`íª ØÞzÝSìýaAƦ`œÖƒ­‡e8â�ĺ¦ÌQ•ÀªK“„yàû» –kjþŠÉ ù2T²„;ª:Û�;y œzNuŒ,P7îm„A߈Ҩ“JÂâyà|éoõý%IÇ8ká¸é&�w­Ÿþ˜�Òcûü,ë½pà:LÈ@šˆÅÈ8Â[>Å„¼¾©@|ø½ÿÈ„*^/’ùÚ�;e! �0§:Â"!H&aR¼4êbtP˜Œô"ð?yDU·•ó‘tLrW°Ž!ë­cÁJQϳŽýpí¥"Ò¸8cvúÔÊ ?ˆÉH”ÕÜ&"�‹0¡ G�ÀC_Ã$Ý •ý³ÚÌÐÞbÉV<ÐþCKî`YÍßc‹„ûªêvŠq0Ÿ�©!•i�ûóbçx£à9à93Dd0‚rLM"Ò ]õFy~‹ºˆªzEä¹U¬zõ<Γ¦4µ[$‡jp”£,c™×‡ïeU͵[ž²¨3þ‚a™zÖËTõ*»åq(Šõï³£ôN*kË-"ÏaB›;«j™Ê§®""�ܸ·õ¢WÂe\&vËãPu~æg–²ô�_‡À„Öp¤.››°ÌÆŠÈ`»åq(Á¥˜üŠ÷ÊQ'cLMÿ®¯ @U�yñ>¸’•’V©´‡pâ YÊRŸß?Ã]A@ßIø‘… ”SœßfDÄm™NzcüFñÀ©VvqiŸù8èV‰¬ô:‰ˆˆwr[Úö¼‰›ÜvËãPy&1É·™Í;½xO­Hi~»©Ó;‰þ ‘:ß;˜o9½WarCî)GA Ä$$þ£¾+0+/Þ{w²Ó½‰°«ààP;ÙÉ6¸¼xï�õd' "_`"…z„[•Åú„ˆÜŽùw؇Iž+³/µˆÌÅ”M\‰ê¶u·¸§4§ùˆ?óçhW½YëE6Šòïxö±o‰W½cÕ¨OJ¢#ƉýwU}ÙnyÊGD.¾†ªjUz„ÔYD¤› kF1Ê=ÛSi*ÀjVó5_+0¨¼ÅQ8Qo– VìëÀÿYý«Šïs˜ü GACU7(úöLfzò‚FD;„|O-d¡÷ìÇ¡s˜ÙÌö(ú²ªî´[žÊRo|~DÄ�ÉLŽÆØ#" >!"“�^@oUͶ[žpFD¢Ý¸—'�ÐíVn�rœØáÇD&zw²s·o�Hlµ[ïf”Uî�˜ŽÙ)Ì‘›0UaoqDù¨j�ïµi¤É‚"mÓÂ�$’ØÆ6—ïu‘¨  * (ì ýOàá }–lBDÚ¯oÕ‡†B¡BUW)úø,fùö)Ýå`'‡8ÄT¦z1U‹#Vƒ×;s“qazN4ú;‰Zö""LÇôüîS‹øU‰ráJ:‘,å È IDAT{ÜÎíQnœdl;Q”øÀ›BÊN/Þžá^į,êåN +¯Þ„y(=e³8ppp³£ *�ªz|ø®M'�9̱[œzÏR–²“�./Þk#YA@=Vªºã—¸_D"&²®!"�09¯«ªó„«"ªºFÑÇæ1OS)µÒ‰C “AÓ˜æ^°ºdF4õÖÜäÇ2;Í€¾ªzÔf‘êÎ÷ZDÄíµôNè}'wFEÕÝ–1a‰¢¼Ç{ÞTR·{ñöŽô]Ôó�1;%N¹ŽÚç!Lgº›Q}TÕëÃw]ÞéL¯ß+@˜Á RHѺ`fòSï•€ªn®n‘»í–§¾ "—`üA÷:¥7B‡ª®SôÚßø�å,·[œzÃjV3Ÿù(z»ª.±[žPá( Uýø?à9Ïnyê:"Òø˜ ªoÚ-O]CU¿žú‘}»Øe·8užTRùŽï¼‚¼®ªïÙ-O(©÷>‰âˆÈçÀpà UÝj·µ¢oBÇ�ÁÀQó¨j–ïè8ö ßøgQJ~äGM#ÍãÅ;ª.*p”DPTuppðŒÍâÔDäNL ð[TÕñ¨ÖªºÕ‡oÌF62›Ùv‹SgXÄ"’IƇïZU]m·<5…£$JAUç÷ŠÈßí–'Ò‘k�×€gTõ3»å©o¨ê¯ŠÞ?‡9,b‘ÝâD<+XÁ/üð/UýÆnyj'Ó¦ Tõmi¼*".Uý·Ý2E""rð!ðŠª>l·<õU}UDüÂ/Ϝəv‹‘,g9?ð˜ÏvËSÓ8J¢Tõ¿"â^QÕ§í–)’‘€÷�—Tõ»å©ï¨êDÄ÷ ¿<¯(Cb·HEILf2ÀSªúvËS8J¢¨êë–¢xÝRNAÀ "7ïÏ«ªc² TõñNcÚKŠrNÙ²Š  žPÕÇì–§¶p”DQÕ7EÄ ¼e™žêü6³:ˆÈ� Àsމ)üPÕ—EÄ7�鯎¢(‡e,ãG~x¬¾ýí;J¢X> ð¶µ£xÜn™Â«»ÜxàßõeK‰X> ït¦ÿWQ9›³í), P�ÖGs³“LWDäà]Œ)ån§a‘ÁÊ)yxx²>mÉ#¹ xc õ".§a‘Á‡�ÌÀj û°ªÖËpxGIT¹øØŒQÕ�öJd/V©�O0�ƒîsê1E"2Î…ëýD£Æ1.ª)MíÉVrÈá ¾ðìb—*z—ªŽ·[&»p”D5‘nÀ7@+àZUýÅf‘lADN¾¢�+TÕ Ä�@D¤—÷1Ä´ËØ¨S8Ån‘l!…&1©à(GÓ}ø.UÕevËd'N2]5PÕ ÀÀ,à'yÔêÕ\o°Lo €�˜^ᎂˆPTu�o¿<ò¦Nd¢Zf–zÅR–òïùŽrt¾_ßú® ÀÙI„ ySÂãgàzU=d³H5Š•døp ¦YÓƒu­úe}ÅZè< <Ù�nz—¹ÐÀn±j” ˜Ìd]Å*žÅ8©½vË8J"„ˆÈ0às ø«ª~n³H5‚ˆ ^Úbê0ÕÉû¬ïˆÈ.\_6¡IãQŒŠêNw»Eª6³™)LñáH¾ßuªú­Ý2…Ž’1"rð*0˜‰‰~Ú`¯T¡ADÚ/W³�;ëʽ9GDÚ»p½áÃwq':yG1ÊO¼Ýb…„Cb*S}ØàrášéÃw‡Õ¥Ò!GIÔ"2SЮ#Æó„ªæØ+UÕ‘hàÿa:÷Áì’&Ù+•Cm""£Ü¸ßP´ýÙœíÊP¢‰¶[¬*áÅËB2‡9^¾ý>|÷X�ü‚à(‰DDb8þpÍîWÕ/핪rX­\_Ç4 z£ì²í•ÊÁ,?Ô‚<K¬k4££»ÑÍn±*ÅV¶ò#?â�(ú<¦ÓQ»å g%Q 3Ó$aº“T5×VÁJADܘÆK÷ç3€{Tu½�r9„"r² ¯*zikZ{38ª½×$<>Ö³žÅ,öìfw” ×t¾»ÓRÅp”D-""C�û0àLL銷¬&G¶#"-�?w`œÒ3€WUõG[sKDd˜ ×ý>|£ÑÈ3��Ñ@¸$âe“MI,aIA9Q.\¿ú𽬪?Û-[$á( °vw`ÈñÀÀëª:Ó&y`v Wy˜Lò7Uu£ò8D"r2p‡ ׊6ëF7Ä W:Ø"O )üÆo¾µ¬8êÃ÷.f>o±E ÇQ6bù,®îÎþ{çoWQíñï/7 iôÊ#T„¤ D}QäƒJ¤¨wï™5{¯sî>{ÍÌš53ƒ0kè!`l¶;WŸ]Ò÷]‡0Œ´sü»>ð!îá:÷98�}ûµÐrt+­[aÈ¢á ï;ŒaÆ0Vb¥6ò†!Ú{:‹YLc¯ñ“™¼psú·ÐòR+­¿®wŸCûp#ÑM�´°᥽-0x‹²Ñx‚0­öt«ñŸ&i°10ø/ÊFa=`10>^ÿ.3{¤£>‹ãÄÞéWZhùâ–Œ2¬ß`l4Öb-&1‰]Ø¥fC±�…Ìd& YÈ,f•ŒÂ¢¹Ìí'ÔÚ‡>O·Òzð73{¼S?à'7Ý�Ø"Û–òK};‚Ñ€ðrx˜Ó»À`Õ˜VKþ––ƒ_DÙ(Œ÷ƒÓH@x†wŽFcÃúÙ@.Ä Â�–! iÌ`„˜Ï|æ1¯uóZ°@ XÐ×0Åz‹ûÐgB+­÷S~ž½ÇÐ ¸‘èD£ñ8°%pð eƒPJ}€÷(Ž™ÀŠÀ±À³ÀŽ=5NÃé]D£ñ$0¸x‘ø÷¡ÏêBk} {k KÞ¡ü<¯Œ>ïF¡kðM‡zý€Mãñf¶o-•$íB0³Ý@8݈„aP€õÌìÀZ*IÚ�`$f¹�è:|ØžÁ>” ú¦’Vi¦2ŽÓNö¥üîÙZÒòÍTÆ©Œ‰žÁÁÉq °³qœ }žûfø9Ý”B#!icIÛÆ´ZNù*IùÚ9åC’ò­:ZñO qºêèLö!ÍÐÅqÚ‹¤õ�2Ùþ<ç ©¯¤M%­ÐL=*õ$~ü3¦csÊ�NÊ/Ì)ÿjR~IûÔüDsKÿŸ¶–Ô;×mvz;çäí ix—k‘44iÐn+éÓrk%2«w�jOÏÓ%}¦ î—K%#‘Λ•S¾sÁq‰m ®åÔGÞ�ªR¾ãtKâfFßÊ+*Èï*¾E¹AûOàII+æÈ}'‘Ù§½7•4PÒ0Ikä”-lO'Ç]N%#ñpr¼uº-§¤�Àg“ò5â~Ï)©‘x§n$�‚Âe6’ä>%§'±#nœÝL#‘eyàø.¸Ï ÀTàÏÙ3ûˆ°CÞëÀ½Àß»@Ÿ\ _2qIˆwâér@ÚÛè�KËD|Ü›ˆûl‘”?ó•4FÒeñ| I·JzYÒ‘Iýõ$�!é6IÏIš é&I{dõŒ×ÓhIËIº@Ò3’î“ôƒœ:Û'u¶“´’¤_KzVÒÝqßæ\b×ô9þR¦,=¿ÅÌ>ˆÇ§ ,„÷ÎùÀ儆ëಊÓl«XØ>ënÀ‹}4e+tá%Y:ÿ^¬÷b’·Fr½´'ñ&0¤Êý—' ]mGhé—êþ(‘I{K€AIÙEIÙC­š€~IÙIÙ�IþIþ9‡r)=–”�Hê,Nòϯ£e³2¡S­åeÀý®³ Þ“ðÔ䬑ù-TJwV¸NWô$¾ #Œ.XÔ{Ã(WØ“ˆåëdοžÈ¿”)KGi.Ð+¯'1�Ðú/åKä_Iòw‹ykgÞ%›%ò&ùG}?{ö.x4ž$´‚wJD&,a]²X;ILyFΫfövÁ埴œUH% –tº¤7 ê9Ââv©S«hmá÷­íš./&ÇëÔyËÌÕPçSÉñIÀ¤$mŸ”mPpŸz6Ú�*>‹„Ñ1àÎqº+ß„š÷6Ý­‹bŠXÆÌ¦ZÚôþY<¶JÍì I-qZëÖ„wf‰¥ŽÁBïà–$ëKðq�béõp<Þ‚ò»d𑤠ãlÔt¿š‘E÷¬e eã°Yr±f6ÙÌæ CpÎn’\·R|ÄûùWºxC ÿ”Ç ]¬×jÐ5ûOL Æ@ò©µNº¾ÌB‚uÎKEßé{ùyR‡lBÀ�ãtWêyžûŒJ³(ý~Ï¢Üøýš¤- ¿ï\â,É¿Ç:S ~‡kr®Û¤CN{Æ¿éPӟ̬5§�ÖµhÛ¸½4)+jÜÖ¤xêSØŒòj¤iþØäFéÌ¢ºâ#âòéû>f¶ƒ™DÛ~+ÄY%F$ÇEü•Ó� uR«»¯™ (H·Ö g!ѯ³MUÁ¶x`�Ó-‘”¾3j¥éϳ™½Eð-@¹8›#¡°aØÇq?BKþ ]ï‚ ÜOÙ§9:ÎKÃnHŽÓÆíŠ·…;^Öb$&P¶¨[Q†y(‘ÿö¥íb]õFZ¯ŸÁ#OŒA‘[£-ýˆ±ñÅŸFŠO-¨³<ÑiÉñËÉñWó.”16�ÒÈdÃxç8Ý�FžçÍ%t!çÆÿ!øC6+�;œò¨Ãx`¸™íEíNﺈ½„?ÅÓ�À(Ç©M6³q‰xÚ¸}¤Bãö E÷«j$âpÒñtGʱ©‘GÙ�|.þ�afS¨�éɱ³…F¿…šwU¿RÒ õÅ$L�<À�’Ž'|Ží ê\LÙÚ*é"I;HÚ\ÒÞ’~e&™F‡ŽšÞúrœI-4>tÔôçÙÌÞ~™dý6ÓÆíØÄ/ZÉÐ}˜¯\(ULÚ[8œr<Å ¹t¶ÔÖ’Ö¬÷FµŽ“•z%ñŽ™}Ü²Îø%Z2uêa*019¿ ž¸¯†ú³¾Œóhëè~ ¸­ Î¿ êó�­“ü§ÌìÞÒ‰™=e 0‚Sÿ‚#釴íÚ5ÂhB _#P0ýÖqšÅn„™M�p`42Íæ—„w„‘Š<ÒÆíž’>W‡8·@ÚN�!ég’¾“®‰ŽFÒª„e:0³óš¨Žã8NS©j$$ý�Ip»™½”” &,lWê‘<ƒÂz2CIæ’t¾Å0EÇqœÞ€¤oR^Lô~3_$[KOâd ´¼ìë„UKœO0Ö6¹Çqœ„¤Ï÷¡Þ4³k2å{QÞÏfpI/h8þå=(> ,8˜KÃÃM’F?ˆ§baýu§‹ˆûO¬jfïV®|�5¬x/rÇéâ¦_+›ÙÌv^gu3{§Ž*;S=x’dÛQI›7QÞ'úˆ^` ê¢!ǵ¤!À„}~ef…û=H iÙ¢ò õV�´R™þÑ�Pë5—iD—îH|X¯’ôóz¾ƒ’v•ô8°mÇkç8õaa«€%�[íwŸ‡¤/IzØ¢#ô‰[!_MÙ@Ünf—V¨Ò+itvÓ…”wŠ{8)+ À‘’^ ,û;[ÒIçÅ=YSÙÍ$½Óž’6”4ž°WÂÄDnJ”ù…¤5%Ý ÌÞ•4KÒ©™=®Ó{!éù(?GÒTIH”'߃ø p0EÒÙ’Ö�-²\$-'iI�÷ŸþÖEº:N5nN¦J:SÒzUžçå%}YÒ„çxmjÛ ¬N"¬– aï‡ïT�EÒ*õÞ@R?IC‹Þ[éµ%õ¯$“#ßÛ)W_*˜AyYíovA*�/FÔ»•¶ë–§i"m—Þ*)»�A½Ôòß„(iÞž-¸öOrt¹©‚./‘ìYAØ´=-W3—NôºŠüý$–�ÿ‡Tçâwü`<ŸAX¾äÍœÏÿ›f6OŸ¼Dñ~+ežÑñ÷þP<=>ÛÙ= ¸°]Òý$ÆÅ¼ÍKö”öyص îF„ ”þegŒÔæ9²·ŒÍ-„úÏ Û˜°O”99ÊL�¿í£(¿ƒÇßñ§ t)5øJºÌ¶Ê‘›|æ£+~?5|�©‘8x99ÿAA�t¿†ÀÀNÅNLäS#QJ­ÀÀøDn~Fæà„�3JyogtùZRöÁÑþ¹øå•òOMä{”‘ˆe×ç|µ¦QÍþlž>y‰ ûIvNkôyÙ€.mŒÁW›6BUPoO–n •Ò"àËùÇbÙ‡ñ½•Ê—ŒÄ9IÞ]×þ™M‚[Åfß�¥´Ø;#?6)ïP#ñTrüo’Þ@¦Îó‰Ü±IþZIþóI~ÖHLÖ͹nú%Ü–ä5SÙ¤ìé$ÿ„$u‚!2àå$¿'‰Ýêø¥©[l¸äé“—¨l$²¿çZÓ3 ê’5G'çÏe_ȱÎ@ÂÃ%¹?ŸÇSÞ¡n mG)ËÑyV”ûr”9'SþZÌ—Éß/¹î2„-KeWå?&+#ô¾%uÆ&ò�D½³›¶NŽW~D°ˆ7/ÿL’µ‚¤ï'ç Û~ZR_3Ë[¹õ3{­Š.7'ÇÙé[«sã˜ÜFIþr]æºtHêof=uEØû ½¤¡uÖ»¦ºˆãt9wïv§«‡ŽxžW¢ífG›ÙG9rQŽ3˜ff%Å#’Fö¥_ØŽ04–e ¡Áwm]–£Íl €¤iÀº±lƒDîÂvÏõ‡Y°KÚ*–¯C0b÷T¸_.õ‰E„ñ·ÒfݧIºÎÚN7[è—œŸZp­þ„}WßÌ)›˜“—%­W4tmÂ~×%N.�k!¼`«¦n‰™µJºžàÀ®•%Àu�¤’ã4Œ™-’48²Žj‹ þÌö²AæüDI׿4 G$Ç32�Ïô�³1ùFbLð\É@D&P6élÆT—7€ï%>ëA¹N7Ç—†“6–ÎKd,Sç> )�< ÝjfÖ Ë‚d²ºÜObÊ£–{vg®¡>#1ÖÌÞè,e§�\C}Fâ^«/6¢Þo«ŒÆ±„÷\JjLvˆ)�u òkÙæ4Û€N?_:s)Õe[Ч´éR‘z�Äb«õ‚§àI—šÙ¸xþá…[²¦ßÏXÃŽ"k–0›.i0$fifÿ× º43{^Ò3Ô>GüêÎÔÇqÚƒ™=%im‡‹+ÑQÏó$àó„É6—ļS$]cféK;}ÿ¼Bñ>Õ¯äÏ«A—Z÷¼IuùÁ?‘ÇË5^¯ ÅI˜Ù„éh,ÚÅ¥9¹b^HÄ”­/©EÒê�Ü»žïFºt6µŽÉΧ­OÇqº#µ>ϳ)7ZÛË\3k%Œ˜”^ðC€ 2ricón3Û½ ý±ƒôªDªË}t¹¬‘‹·g©ðã([°mÓcKœ�ÿ¯¤;%ýXÒO$ý�ÐÛøz;î]'PÖó‡’î’t\L—b2è"]:›¨m כͬ––Œã4“ë(ªNùs�CÔ5'Ôœ˜d(iûä<.: /�NÒšÙ¼N"Õe_I«u¤. ¯Ýdfã%ÝH°8WÒ_ÍlŽ™ýCÒ§u a>ñž�Þ«=˜Ù#’N%ÌXè ìS¯ÃÌÞ•tÕ¿kŸÕät{âpñƒÀªˆvÊólf·Ä• vŒY—HGKÆ|[&à<+é*Â$š¡ÅjÀ†�¡[†¿ÂF+G]®$ø0Ö¶'LâÉ:åk¢#ñ8eOzvÑ)„bKN”¯»0³3%ÝJ˜«»1°>ÁQ=™àÌþKr�¹”‡¯ŠË�PöuÌNò-©!â¸\hv¶¤Û£.#]¦œÙJÄç§×ŠSÉzWSÙHL'Dm:NOàj*‰)Ö¹Û<�·$,Íq¹™-–t(pa‰¢µïÔ"D‡ýć†Ü†ŒTv&ç´F¯_ÕH˜Ù7*”M£¼Än^ùsÀÁ5Üã`—äv/È_\­¾™=OÛ!±"¹ÉµèÒ�¹ƒ ³BAùu±%ä8=�›�߃ Ê;¢ñ:å†á¤´ÀÌÆIúå±]%]af­f6QÒB�b4ÁÉ>˜Ð‚ŠÔ–ò !ŒBê2$ê2�¥ûÏ&ÇÓ tb4±Óý‰]ÙC�2WU‘ý=a½ø Çq§7Žã8N!n$ÇqœBÜH8Žã8…¸‘pÇq q#á8ŽãâFÂqÇ)Ä�„ã8ŽSˆ Çq§7Žã8N!n$ÇqœBÜH8Žã8…¸‘pÇq q#á8ŽãâFÂqÇ)Ä�„ã8ŽSˆ Çq§7Žã8N!n$ÇqœBÜH8Žã8ùa¥ IDAT…¸‘pÇq q#á8ŽãâFÂqÇ)äÿ8 )ËûgÄ�IEND®B`‚ipython-ipyparallel-14e3c43/docs/source/reference/figs/other_kernels.svg000066400000000000000000000337111520071063500265570ustar00rootroot00000000000000 image/svg+xml $LANGUAGEexecution IPythonJSON, ØMQmachinery WrapperKernel $LANGUAGEexecution&JSON, ØMQmachinery NativeKernel ipython-ipyparallel-14e3c43/docs/source/reference/figs/queryfade.png000066400000000000000000001125641520071063500256710ustar00rootroot00000000000000‰PNG  IHDR°°ÈN0*tEXtSoftwareAdobe ImageReadyqÉe<•IDATxÚì} x+gyîÈÚlY²eËG>^�Ïñ‰³“�’BRH½eI¡…²r�R¸mii{on 4å¶…B/…† )Д–ÞHÂÒ[ èFVYœãÇ»u¼ÈÖbKÖrÿ÷×|:cY²µëé{Ÿg,yF�F3ÿû¿ßjI§Ój ƒÁ`˜ m|  ƒÁÆ`0 ƒÁ`0L` ƒÁ`c0 ƒ ŒÁ`0 &0ƒÁ`0�1 ƒÁÆ`0 ƒÁ`0L` ƒÁ`c0 ƒ ŒÁ`0 &0ƒÁ`0�1 ƒÁÆ`0 ƒÁ`0˜À ƒÁ`c0 ƒ ŒÁ`0 &0ƒÁ`0�1 ƒÁÆ`0 ƒÁ`0˜À F=�L&­¡PÈ“».�ºÊÙ=ÇûgffưðYf0�1ŒªDóÜôôD0ô×-., CX±XÌ�çx<ñÌ3çжÀòò@WWWphhh–Ï2ƒ ŒÁ`ÔN§3z*0*¨b ÞÓ¿¾¶Ö§ï#~æYg=NÛÂá°W hµZ“|†L` £67f[[Òår…AHùTÌ€S'NL`!¥¶ººêÛØØ� ÖcÝÏü<ÎÏÍ�àëñ:>à &0ƒQ3XX[[ó“I�0???ÒÞÞ?~|rìèѩ奥¼Æçó­vwwËÛŒï–fC¬Çëøì¶Ö××­÷|íkÞ�ÜvÛà§>ùIÿ#?ìúþ÷¾ç9>vô¬ÃkþÇïÿÁÈﺫê“ìŸ�oŽƒ>¿Øø'f0ÔL}ý‡ÏÎÍÎŽùûûi}8òŽŽŽNÓk@XBuyý~€ÏÃH×ÿú['"‘ˆõØøxë677m/|Ñ‹BÆ×=üÐCnýiÙ�#ö}ó-·,àÿ“Ï>ëøð‡nûê?þß'ó½þ¢‹/Žâ؆‡‡co½þú²?— ŒÁPPKÁõu_$öðÙ`”¢¼@xþÿ¾÷ÝÇ�;§mP`Æ×þÏÿuóœ×ëÝåÅk°DCû{ô‘G\^t‘ü_\“VÚ'ˆòÏ?þ‰�$ÈñÊ«® ýíÝw÷õ÷÷ÇéýDjx¤÷]þâ_ ~ùK_öWB`lBd0ÇÀààüZô¿Ûã ?žë!÷B„uiûA�ØnŒpd4îýú×½P^7Üø®#yåà oÇÄÞúáa"ª_~é9ë^÷+¿zö{nºi ëA^X÷ŽëÿÛø/\tñ…ÿõª—žÿ¶·¼eÛè½ÏNMÉ×àùƒ?yÐ}áÅ…ŒûÄ{°�¹òÒK/ á=•|O&0Cq¸\®¨ÛíÎÂà···]Ș>yrü�ß¿ˆˆClëéí]‰F£n¬/´?ä˜!‘ÏlóbnnΉÇsÏ;o«”÷ÝróÍ#ËKKΟ<òð£¿ý;ï›ýη¾íƒÂ2¾Û.»ü²à�ôc/¶ýã×ï‘þÖç]pAèÄôɇð\\›.q�Êkòo¾ô%ˆêúà4Ô൯~µ¼–GFG³ ®ÜïÉ&DC1x<žã: Âà÷"X.@dgLLdýç�þC¹ÏJ�…Ït󢫫+�ÇÙ™G)ïûÑ¿üP*s(­p8,•ü·¾ùM/ùÍžÿ Ï÷ôô$Ï<ë¬-˜PòyÕ>Ô=¿ìòËÃwÞñÙ$|b ¹?ûÄǧ±Ú^h¬À £qõ5×È Ê·f�|OÅ@(ý$ÕW^±ñöw¾c17è£ÀÿEÏá{àG?|ûúéc�y>ô�Œ_;66cÆ`˜¨ª�ª¥&)×Pvˆv„É’%s~¯×þÚ¯þáïÿÞ¿”Hi?BºúÚkV¿ð¹Ï<ýÔSPYðe!²07ð#���I˜ �×÷>Ã>° Š?ùÏÿô fLŠôøóŸý¬ï;ÈGÇÆ`(„é“''R©”UÅcäê9çÜså_Éüøã?ý“Ù—½üeÁøêW}‹ ‹Ž��Ãq�¢ AhaÇëð|âÌ3¥¯ äƒõO<ñ¤ ä%† ŒÜ÷àÿSôâ]_úâäçî¼ÓO¤uÕK¯ ÞyÇgež×ðÈH|nn>¾¸0ï€_íÍ¿þë2ê¤váE†*ùŽ–t:ý ÿÔ Fý@Õ14Í®Y,êXñÓéŒ%çØøø“¬Â•¤wÅå¿tþ­·ýáôu¯yM0ßvD3Þù…ÏO"잃a2X,vñW%!–!0ÕL› óAPe…¶#�¬Ròbc0 FM`LbÎü^•ø¾…È`0 S¢¥¢¿`�}¿Þ-%ðÙëkk>c>ƒÁP(”L-jŒ°;±b #/-.Ê€hæ3Z=´„Cûˆ§Ÿzêü••?jÊÍVØ‘¶ÜθÛÛÛ|É1&›åÛlÉN·;„e»Ú¬ÖžwttlñÙaVS æÛÚêªÿøgž7â{ᘘEd}zÒ`M‚¸=]]AX`h=LŠPf•‘1ZˆÀ|}}�•S§sUÔQ"‘pÒz*˜II,ŸÝ39šíå’”1Ä5×k4än+vŸ ÆAî“„’B$!̉øßºÝ¦%§´Q¡ª¨Ñ!ˆ 53³;° &G8è½�È j)�epø‡H¥}}}‹´^òÒÉgWcQãýOcL¾ñÆ´QhŒ`0�1Mƒí­xÆïÕ©I…pzRUÏLÎIbBÈ<”ÌŒDPxt‰¡ô .ã{øµR©”í  üCP^¹¯ÃzŠæ«‚ѦÛÓݪ"¹œ £¸�³à6�X¡ðzXDZ£ï?=a× •E¦´ý€œÉù¹¹#›a¨øÆ`^ÄzCÀ?†ˆF�î%˜â`²«„Üx¬0/š²¤âÂQõøÄ 9KvFë�ú�Y,°–©Ó¹$�Ο#cc“•˜»�¡íùöC*@p±XÌ™äDAPŬÇ:Av‰rMŒ ¯•••U¯•�ÁÁiVž-¦ÀàX•�6‹–¶©hiI¤´¶D:{| F3â ò£íPYù"t Eí–òÚbAÊKµ±¢-žÒ,©´¶_þ)£É}`¸ Î6µNv‚ƒŽÍ((¨)cà… hï舖š,¬ÚXaO€Àøkic0µªk BPÅc[]Y qÁm&0ƒÁØøžˆ¼`~S–´X’él²4ƒ ŒÁ`Ôæ5'Ë<ítª3ŒÀÇl�$øÒbc0µD:Sò¸¸ôƒ LQ¸íšÛéÒlmmZ"•Ò¶v¶µÐöéûÕÓîÒ<ÎÝfý•ȆOìÈç›]ëëìÖbâÿU±žàëã:#PaBÕÐm—7ªÎXAÛC±è®÷ñXÁV6†{üšÓj—.°Áî>-™JjS+óZ4¾-/¸±nqc%ÿ ..>¿§wÏès«uQæË±¡N°ùºÇRR¼¾˜ ¯__[ó5ª�ª™�äÔj%¨" ð¹éé t]à µÆ lsÙÛµA„»ÌÍÆVbÉmA¿è¬mVíœÃcÚxß�öøÂéb .Êî�¼ðüžÍ+ž·Ô,oHݦiPCÂæÆÆ†-‘ˆœý£È ƒàÂüü¶¡õN<î mû$ZI¨ü;‹ïb}ô‘G\ccc±£ÇŽÅùvgÔk¬ÀkAp�к+ð?È�Q]´µú ÀE… ¦A˜ öCæ5NIZÑxLóºÜ¦øŽ¨#²AghÌüAjèUDí*äLÆf‹aÛèèè´Ýማ½‡ÚGn»mðš—¿âœû×õ|èù•W_7Bã[¾>�8LhbÁó\Ð6Zrï=ZŸoŸùö§ÚXáípï"7úŸÁ ¬êˆ'wôä4Ÿ_2zVöùC3Oé¡G\Ä)iÇ¢¦¹(×VWý¹•ÀQžæé§žÌ×­Úa·ÇQĘ̂ârÿ'e‡Jãvñž�ÁÁYª†ñ®»|â»uüø?þýqZ÷©O~ÒËÍ7�|úöÛ§ùН-@2þQ9É0éƒ_hv=�µX`;ÖÅô{oK¼f¹ÌëÛåvJ‡|JØÖOfv™ä”+\°Î„%éá<àœ°É�XMà°Ú3æýF¡ ‘ã�‰ ¶pÌŠ™‰)a‰Å\¹å}`DCÀÜFŸ )´>ïéí]9h¿Èµéêî¢û¬«³3´¸° DýÉ/éËþëßþö]µ&ßü뿾ú£ù¡*ìûßûžŠŒ¶ÿÇö÷ÜtÓØ/¿ô¿œ�u�<ü°‹Hð²Kñü{¾ö5ïñ±£—œ|öY½ÿ³ÂÛ�¹à²öäÒIíѹgd Ãø¡¡]ª úäòŒ\f×—³ëÝzàˆ “FSŽN—$9Œ4ùe0�ÕÊÀÍ7\”ùL"P\Ñ�˜>cÌÌ)¢ÈìÉ¡Ig$FGÜÉb”(HʼnÑâ]…ïòìÔ”ëÊ«®ÚEØ===I¡£ð‰í÷^¨´³Ï>;úOßýç'ÿûoýæâÞúáaÚö�¯Ãwß·¿õÄu¯yMðe¯xùêý÷Ý'ͬ÷~ýëÞË.¿,ˆÏà»i/0éƒú‚õ¢˜û¯�"‰©v3V€¬@^[ºEô"þg«>ZÒ„hµdlé˜Má‚t %5µ2·Ç ’ÜÅÅJᲘ)ÒÅ‹è"�Íi¿Y5³­F:M¾~J‚°¤Ì º ÆZ!ŠÍëõ&ƒÁ`A¥ôèÃ�x†††âP\øÿ§�=–u®¸òŠ "©×¾îu«ÿû�>2üÞßüÍÀwÿùŸ½¯ùÕ_åŠá�XT ä°Z‰Ê­ß/«á ©ÈÈÏŒÈ> úxM# Ê+àϘL—w‘Ö“ UÕ±‚ Lq£ay!!Ä5®çrá¢"Rˆ™ß€.ýéæÂM´jÈñÈ®ïÊDa¶Õ!n<ãûBÛ3J|g___`iqqXYÊ ~¯åååÁÞÞÞ}[º Ü$‡×Ã丹±áÍUm´ -lÜOP…ïû¼ .ÁÌ¥Dë`î ÓuÑÅGa2,ôÞp8l}á‹^”UoÆçF@áÝò?o¶a_�>ò¨ç¯¿üeî°[�IÞâ>#¿™äh¢˜L'5«n Â$±þ£rÇ `9´¾k_�ÐZ–¼U+˜À.$,…€‹´Ø›3ͨŒ³-Õ ÷^Zœyî¹q4L¥RV±nã \$�HE[¤?—1ta÷³33c;;;l�Váû¾õú·þòSŸ¸à‚ ¢Ÿ‡oêcýèàëßøIØ«™a=Õw¾ý�,1_þâ_ þüg?뀲:èsÞøæ7- {ÅÕW³ú:ðCY­®Ÿ¾·@¹ÊÁ05ÒàŽçX×+w¬È·Îj¯òXÁÆP†´Œ�h/Q¨ÅDîk�ÈMº¥Fœû½§Ñ åõ»ïû�1<‚¬@L7ßr‹ü 5�Ùë_ûº‰��Ãñ_xÁ B“O?-‰ù¶�|d~0px<î$¶"³«¯¹&øçÿÄÈ�ムG¤}óÙH�?«b *4ÝÏ ÇHO6�ŠÁÈESvd¦.«Év«ZýÀb)ͺ�”åz¸Uxý€H¿ûÊßù~øƒx?uû_NÁŒX�ý"*ñ'ÿùŸ 56ª}.žÇºí{ÔÂÝ)Ôf6˜Í BÈ—e ='L�š—‘Š»CçÛµ³�Ém0+Rx=¾2£º1ó=ïüó:è{ p Ñ´ª�øø.×/¥Ú¬ÖFêUSþ­ééé};×¾ìå/ bAÇ~>°b�é/|îóøÐ§ í/7²e®Ëø¶öèÜþ\j 9ßo=öe\Wè} &0†‰€à‰é“''àÏRñøB››Þz($-øC·Ž5ê{î÷ÙÇÆÇe8>_­ F�&Ë| Ì«¾N“—U¡%sIÕ«¡àŸ}ôc#ªþFÈG«†Úc0¬Àš‹J]Ý“Z:]¿œ–H$"I|áÒ^m«×¡ÌYÿÖ_˜ Xù@ÀƒÁÈ®ÞÚÚâ±Â¤hJ"êø!/IÉFW1u FíÑ××@n$�¬À”pÑ:¡¾åî}±676|úþ¢¹ÕÜËR„Vk’Ûµ3ê÷ã9çžûh5Æ ¤2øûû«q\¨ùý^¹/3äDDƒç¿uÕë%i dvå'Þ³ç½ .,Øþê ^¼‹Àš~Y“T³ÚrƱ#îÇÎÎÎ�îÅžÞÞUX8òR‡¾BjNdnbò2¢«Ë•%®d2Uö~`‚4#@D .(±^óÎ_� -¼ö낸®»ð%|“Ôííír¶‰DL‘3"Lª(. ½ü 2�Õ˜)5;yÁou*Ô¼^·vÆÄ°TP¥ $iJ„ú`z43þúß¿©]8|Æ.¥õ!AhX®áÕÙõoÏAzXP!=×ÔȨ-Ünw�[Štù.½>ŸT£+§N ò/ÈVsòBŸ+�ò@šUyA`S'´P(ª64ÜW<îdûçI¾¿ÙÂÉA}ÁoÜ K3"£¾Š†#P6Í×�×ÄXBÁü+Ö-é#ò’Tâ‚;zt²Ùs.àËšŸ[‘æCøÄð<%žÃGfÌŒÆ ¼ÁZDÓv›$03«0q0æc�Éðkïþ“ÓëÄûÞ÷Õ?磾*LF¬¬¬øÍP¿š¼â˜ËËÌÁ ŒÉ«â›ªMóö¸å#„ÅKBØŠ &B€G¥¸Þ³¬÷t¹²ï5#>ñºß–Ê ‘ˆ‘”"±ü·/Þ&M�FÓ#£ö@`)0 ÇÜwè�lnŠbÖbŒqð¯È ŒÉ«’ ÌëÖî•æ@¨+˜š‚˜ ¬° †DRx=Þ{îycr›ñ½fÁÛ~ñ•ÚKθH»pdB FCRE# ±‘‰lÏU[÷<úí¯Þz‹Tf 6ã~¬cuV}àÞD>ÈàT Ðo†ÆŽ¨„и&–——›)�” ŒÉ«î@‡1Ï+««›rɘ±˜Goù©œ$ÉÌNJ_– ¯k·«¯AX=^o\wѽ5ûnØ=ˆ‘Qøúús³³žµµ5ÿ!¿Ù áé===’À°ˆñf¤Æ¿$“£$À¿…¥HMå{ß~¯5úе#–—–d0‡YT|_¤××ÖúÌpÌfEÓûÀ˜¼ scphh�Pafñ+QQ_³YüwL`L^ £FŠI‹ #f9f¤à˜¡ùWdcòb0Zƒƒ²�Q8öš%ǪïСVaL`L^ F‹÷oOO�¬t±0??fB@aRa(zÌ¿"“ƒÑ¢@0UºXZ\4E¹&RaëkklF¬š. qúäÉñV#¯tZ½0îz·i÷=ÒR6 ßÑM „Ð# cnvvÕ.�è¬úý ¶¼´4Ò… kÖruL`U ó"tµÈKõ:õøœË.¿,øãýØëÜÜQîtvv&ÇÆÆb<ÌT«®¯á ›Ÿ›;‚ždªç†õööVVVPä— Œ ¬ yQUyÌÒš]yÁLŠG´p8<00§ÚL¹^çÿÏÿâ/¦ÿæK_òmnnVåZ¾ÿÞûPAÁñ²W¼|uhh¨¢ÔW¼ò•Á£ÇŽqk•12::ýôSO�K L‰CÃó*/°ÈÁ*Œ ì@òBUyÌÒšùG3Ï2“Š›÷¹Vöñõôô$ßû›¿Yµ¦ŠþäA7쵯{Ýê•W]Å%6D®)±«»;¨rá\/«°ÚÀôA�@ÀßìÍ(�À 7m«(M#0IEµz<7CT"T·ZaÛ3˜–—GZ…¼Ð a<ïëë[lv¥É`ì˜Í•H­Vä¤{yy€½'0�×➣ús³“f˜pZ#§U ¸¾£ÕA¦D<‡UBueclµÂ*¬… ̨D@^­Ð²`vff ~/$FŽ=:Å—.ƒ‘1%véÊFuS"µZ‘ð•?ÿz-H` ¯é“''H‰´yÁχ°a<�2CK £^šÅÄÎ ¦Äþþ~i9ÁýÌ /[ŒÀŒf4„�·‚a“ŸÏßß?ËA Æn˜É”FÁ'hxÉ¿^ ˜±D”«Aس33ãxŽ‹Þï÷ø’e0öaôf©•ˆ&�xÔ^² k›Ñ}@Te£Ìhð{Á,óÈ·&g0ö…Yj%R{©×Öúø—krÃÅH¹^ðµ‚�ý^ FiÈ5%Âü®ê±z{zd0·Zir ƒ^d°ã9r½Tθ¯ØïÅ`”I †çÅ……aU�ÓØjcÿrMH`ÈaÏÆóVÈõ(PÏÙïÅ`”1Ñ�…)ùV*÷á¢V+(/Å¿Z“0´R¸<0??Ÿ­sÈ~/£t Òµñù¢ªšè ÉgÇ*¬É }½(€¡Uwq}}ì÷b0Ê:ÈDw*P²™¤±¼'67�!hƒúzµÊ@ŽY"™KÜ ¾>£–è?|X¶Y�]Õpucy)©/–t:ýà÷¿÷=Ï oÇ„qÉé“ÑóFl¿çÞod ôªx|ªo7âíï|Çâ>÷ùÞÞœÛßð¦7j_¹ûo5•Žën¾å–…FßS'NLüä?â¹åæ›5Uï߯ížñß}ßû¼<~•¾]Ù~`­´ÄcñŽrßû?~ÿF{ô‘}ÕV›m€·7ïöMUŠ_-áïï_JÎu{ÜçØV®Så`0[‚”F™¨V¨´k;"d¾Ô¨Ã_yõu?}ì1Ïgî¼S»øù—ð]!nºá]ÚC>¨™å|Æc1D±!pAó:Ôðã¹óŽ;´;?sÇ.¦Ê¸¢ráot˜†Ï¿œ1 •¡ŒÌè÷B—áV `0¶Há —Á¨™ Sºt…Ô¯¯­Õ-হG~¸¢do¼û9èu'Ÿ}Ö�×­¯¯W5"T ƒ ¡de8^[%q¤M!óÃ##Óƒar\rÉóµwÞø®ø _ô"e‚�Œ¥›„ZU2"ÑR_n1b�ÃïºË÷ž›n{Û[Þ2þ©O~rßÈFø•þðÖW”ì�÷ïç'üíÝw÷áu�>òHU«£4Ü–[°¶Uü^¹¤�Ü•rösÝk®[}Á/^êà&Fó«¸c]ŠEÑB…=7=íÙ* !öªYxpïe—_ηÿ7¾éM+ØÔàÜÜœ³�/”¶�ç#·Ý6ˆÿÅDÃÚÝÝ�Äz|Þÿå_¤*ý¥¿8d<Ɔš!•QtÏQ„³Uü^FÓ!WÛ`Ô?ø�ö‚‹.–‹XÁ:^ƒûï½Wh<ôЃ¦<½>ŸT&ª–n‚ë$‹çå”ÀzÞ„ž�šr!°Ëè—‚iñ²Kñ|˜ðüɃîøêW³ûž:qÂõÞ›~cüÎ;>;ø_¯zéù "zý‡?të¢�±þž¯}Í‹×áõxÈh_ /¤SLOO;3¯½ÇW(ýfÎ?ûèÇFøþÝøìëñúÿýG~ÿû~gûÃñ\wí«Î¹ãöÏ byì±Çv©Ê†X+&îM‡­DÚŒÖQiï¸þz@ÕŽ ª‹üLªVª'’ÝK>Ÿ¿ë¯¦@b �Hëoÿô§û———w~áó“ÿøõ{&?}ûíÙIsÿáñÿÇ¿?þ»¿÷~©Ú ¬ðryÙ+^¾Š×Ã$ùÿ÷~áGÿøOF:;;“üè‡�ã}ýýý%»> ø ñ™ÿôÝ~ªñ/?õé,Ñ-/-9?ö‰�OAÉÁw‰D¬W_{Íê}ßþÖ×½æ5A%ŒL‡¸ `“n•Üh:„ã¶Òýaf„còé§yôdTL>PcPl¤Üð?Öç×¶ýàûìZã#=l…iHÅï?“TaŠ–n¢1šRIV�$DRI€, ¢°Ýh6Ìž·[N GFG%mnnÚ Þ@xÿñ±£—€¼°  ÂñãÇ£ø,"ÀR¿ã·¾ùMI’PvØ?T#ÚŽýƒ¨`*¼é=ïY)C™]qù/�ŸñØBY[Q… Ç™Q1»ûI‡˜qYá0�ÀŒAä„B»Ç3˜‘§½;ŒS!L†—<ÿùÚ5¯º6ûº¯üÍÝr=Û>pë­¦øþäg ‡BJ&c,D¾š æX[ó•‘ s}Õw¾ý�0‘ÂÄ™gnA•aðÏGb¹¸ð¢‹äg^vùeÁëßþö€q=ˆfG ‡‡ZÊ}ÿìÌŒ4C†Ãá¼!óçœ{®Ü?r‹‰V)S5Ž¿ø?Ÿ0~‡†ØÜ쬔¶m­† 1$ië¶wä|”uÈ`T‚wßpCÅû“/íž;?«=óô¤ÜÚÞô& ”Êƨ¼ŠãOWW—ŒFDÄäÐðpÑ]øŠ ¨:ÝîÈ &À‹.¾8*¾câ[÷ß/}ZP3�;ù×_þòÔ~JŽÌ†'ž9áÂþ°_Éo¼÷=‹ðOA a�‘¤`òƒR‚ùþªBuõ—Ÿút¯…,Û`"ÌG®0þÝß~ÅOJ流^l¨Cà–ñ¼•rŸ@Úœ°Ì¨ÉdR‹F"𫳳õ=ÛÅ5¦mook6±ÍáÜkÅ»áÝ7fŸË¨Â…Ò­÷/¹ò DõI•uÕöƒ�†Åô�éø¥—^ª¬Oæ{�mnn*I`8&¡lJ&Ù»¾ôÅÉÇúSY–îüç=o ä…çPeðY‰ßÈóÄÏîzÅ+_$„C<‹"_ÿ†×¯bâçÿ}ï»�Ão…Ï0n£ýâsðßTÕÏö³AØIoî1Ø›?âóž£ïÔ0[Z\Ö¥üb«¨\„µ"mÎk-i-/.jBIdI*!ˆMŒÊ’ܰþPþ|Ýn3�¸Ì˜U�FÉâ1{UmÈ©êJ`äB·ÔVÊù‚évw3G[b€3Ö,áàäµ/��¡° íúê*߅嘙z{ó®ït»óš‹Á5×¾J>‚”�¶¸°˜÷uPm/}ñK²þ´7¼Ùþ¯] G�FáV•d)'Œ»5FÝLˆP_6ß*ê ³;c¢¶™¿ fû.—$1 ’ð³´··k ±^WšR¡¥±Y„ €J€)ëÔò²fw8$Ñ�´º½Þ¬j€ ÃûVO�’•Ô±ž”^‹}@å�,ñº^Ÿ�ïX )üt.å:›Mž³|ÊÊèû"\}íµ?Ö%ÏϪ¨/åo3þ¬‰3)Mh÷Ý{¯600¸ëõ0CRUŽ—\qÅ.òÂú{¿ñu×µ×^ë3VoP ���!JÕ 3¢’>iq¯¬–—]âð¶J‰=e ¶ÜVS_b¦*ý}°g×*Qy`SS'\¿û{¿WÓY0ˆÉÓÓ#ÉçV$"Iÿ /ñ=³Ê ÄÂñÁ¤…d¶£ž~ƒÊ×a?Xò¢– Ø/½6�N3yåÈʨŠó‘W†Àwù¾²ŠËOÀ5d¼ŽŒï3¾>ß{å5¯ç�]tÑEN•Ï�¸VCú$SY?XwwwPØ™¹èÁ^ÔÄ„˜kWÆÿÄÐ*ê Š“ÚÃT+ç+�†£y`ð¯`–‚£  (À#))R ôþtŸ—ñý¹û(×$Öô7¯8ŸPŤ¾\.Ÿ”"_4Ìú0ï«êÃ1²±†Ù´Q[ÊzG‚^+Ì"ðý——–FHq6C´%ÍòÛ;:¤Ú‚ù0w=ˆ À£ÓYÚÜøþr÷ÑŠp{<¤(ød”N’ÄD³CÕc„�0#ò/¶51!Â\&f‡‰ç¦§'�÷„ÈC9Hµ·G1“3kù³–�j–À #Èœâ‚Ù„c\Oþª´Xà+d°ëâ³Û%’ ª‹L’Ø?þ�Åb|—î¨Sœ«EÔ—òÀ²“¦öö-˜çvâqegJlFl�IåáóÆÈtà‡ ™Ï±ññÉf<¡¨¸QÏÀ�Zæ��œÈä×'†ROOOö¹q½Q j‹q;ùhHY!~0£â2ª.£ 3ª3ÌgfL£Æà‹j Ñœ˜0À¿Yɹ5C˜AõK‰D”•¯dFT¹ LSN4ÌhP"¹²äÕ¬3 c™¬zTدU?0¨),*Ñ�Plf$1ñš¢©P»ˆöôŠ J+ÀápHÓ¾¸w”¶U‹qd&ˆÖÃV'“3r½Ã(ý�€†Ñ#G¦š•¼š©LVµBµ•!ԛÄ>22‰¦mv-Õ©Ž[òÕÚb©š[T(é=*gWwwÅÏU-@Ü´FE)éÿ‘ÑÑ©f.Ee²ÐßÌìß“‚3,øVÔ‰L§›£m\ÚêÐ]‡N v�T¼ŸJòÀ¨‰c®Ê@‡ŽŽŽ-X4`¢‡Ã»”‹��Ný=½½+tÿ!ÂÉÊ…ê�Ra_¼Ž Ç�òMªL´�ˆñ][¥wb1¨© Æx¢QF©™O¼±LV=7¸C%TÒ ¹¢k««»útÉbkkýAZø?�;)§Ô`-ð`áÈàåål]5ôß#S!‘"¤ÅúìÛf³IIŒHD¬{âç?¿AfªY‰�KŠG!X…Õ‹ÀpÀç…¥™›Vâ¦iT™¬zæ�1uPaRbzbað.¶ Ƙڠ԰L(�Åp1‰ m�VÏNM�M&œaî]ǪN=ñш|•Ô‰Àè‚~®™O"Ì�÷Í6Ï`Ô¦À@mÌy€ ÐöövQ¹Z  þÇgL5—Ï s")š\ WŸŠ>z"aŒ3 g¾ZêD`ÐKé*jFõµ¶¶æ§‹Ÿ/)F+y`ï¼ñ]ñb:íæƒ3jÊyBØx‡ËUò~àƒ9ßÙÞ¾UÈ�ê8PgÆu˜€ªåG¤ÖÍ©Œ}‚8 ¿ó…Á×�YÅÅ…™”êa£P_”´Üˆc-5 Áµ?·ZÛ´öv‡‰lïú{;.H>•wžcžcã4,‰­m+¤YÒI-eo×ÒXlöÌyŒdÄCÒÅh\gÙÙÖ¬[™q?mµk)ggö½µF5òÀ0Pƒ¼6Ž@°Rß�÷Šû1†~_P+ùH ë0á¤ÜT3L@]��!�;÷-B�Á&Ü(òÒZ+Ž�Õ×þ(µXl{[&ÒV«HhâÌamüø PÛ½Ú¹ç�e‰jìèaùh|-­óû½ò=‡Äãè¿vÖÙ£š·‡Ë!e )ÔlÁ¥ÌM*ÈȱøŒfÛÌT)i‹lÈe×�lXg[_σÙõxoÛ–úñS¤ˆkA^  Üfއ#–›·‡ù^¬§{o¤ëtww¯Š1d¤ÐçÁ”ˆ‰§Ô—NìÒÑ­rbeXVÖ÷µ7äÀì+ÛÊŸ’ d«›­ül __—TPS'²*‹W1˜>™¤GGýÚáýZp�ƒQŒÈ†Ú Õ,I©ÈÐûl˜~—ô—žÕ¬¡5-աˆ@ªMÒ QÏ.¸ (ØÊ ‘ƒ(×÷¢ ´1444K÷$ÌŽx ‡Ÿxæ™sö =ÇÄe��ê×5â¤ÄÍìš©X�e•�³­!‹ê0ª/ÿ¢i~p1‚¸äÌ5— Ë 4¨²D™I¬v»Mëìl×ÏKùÊŽ»3ïKçæDKrGK·×§V"òÀ�ÖñÅ»î*¹ÿ jf&AÖ$¥¯¯/@ÿc’H¯;ztªÍjML�81�ðùñãÇŸ z{ô÷÷/Ðûà†Ø/ôO¨/䎙ápé>AUq*§À«¯Fæ·Û 䄾Z©drQà(2,‹EÖÃ+�@P’Lƒð--®•äÏÂû Ú@‚³3¾°r'±¨fIÄ5kdCKvv—ð¾ˆæœ}"£Ælv-áî­Ëñ–Û j¨(††‡wµ $•­� b‚ù/79ëAnÆuPs¹fÈ\˜©ÀùÁTnÄÉfÀÏü’ GÕƒATR_Èûéc�eóÀ’:A�¨@Zòy‘3w(3T6‰‹�xBš=]®¬_krr®„‰@Pk†÷‡F¦ÈJe ³¨™ þfå�Sòöï Ú8ØrÒ©íø�È`ûʬXæäÿŒüäi–c…,°¼Ì~°R¬-–ÒÚ♈Ӕ½MK9ÄÀÐfäRi±]¼fG –ë. 5š1K%]¶=ëRNkö¹i«¥j_�‚AªI`¤¾`³o¤úÒÛÔÈ@›­­-Ù§k"—‹ôw ‚BQÙÓå¢,˜Ù•í ƒÙ¾«ÐfTcôxÝÚæffL9e�AßIh�ú:ŠZL‰}@�AÍѺrÉ æÐ®îAó‘­-§ì“%Ïëã’5]I„Œæ [öƒ•H`¨Ù¤1Ù‚qÍ’…¿] È;“Ä–¶[²Ïwz’äÚ¢É=Fë°Ï,©mîd?c÷ Òk@`ÙÏÀ�­Çu’S«Û7rLê‘÷²K ‹ ¨=y^‚¨â¯¼úêè/\ú×±ñcôÛ*ÆlFÁ0VÚ±C‰‡ ä3?¿’UP'O.i‡{µ£BY9ÁGF* @Ø=ˆn{+.}`å�€¼A^DâV›ù]»”¿•—ÀÄ=?|Læz�¼ÒŽv-î=œÍõ‚Cؼ4?:œ%›+A½û�!°Ñä j²n¦ûÁĸàÒZåßébœ´n'¥ù0á==¶¦…ú‚Új¦yª?ƬrßÙi� �jV;ï „µµµåYA]åËÁs:�!A:[ííí–ªßqÃ;µÍPh¢”~`è«A^‚8°äU�BiÍ̀ɱÒ�y¥ ¯-·kóŽPahÄIª„FÊÔ,áìG:HlNØó§¸$=½ri5Ćê?žK ,TuÌ™Ee~ÝâÐò~°¢ Ì"~(›¶#‰ ¦>�”-´“UR»÷jÑ,ÑtMø “`|àŒšU@u˜ò`ƒ®t¶…ý ·¥�ÂÂg€°@V -W%u þèb@·š°—Vá E·-I,A“ËûÝ‘µéfÖfô`´ÈïŽ1.�fí¯XÿWÊž!¬4ùM„ Ë êØõaô‰�ÌŒÿÛÖ—29/5"0j《ó弑Cb�ôw‹‹ÏUˆ°Ä +LI�µ€™”È~ߪ Í-sI >0iFë±-™)˜O�ùnä#´‰÷ØlœUR)*éÆ(`µA G+÷+ÙµÿTÒm×Rb Ü@T¡˜ñºmYò’ÿ·[³ê¬-¶{‚`I¤2ï-»L„mVA¦Nù˜=NkmÈ  U@†±*+‰€°Ð©Ù›ç"a…AZå*¬bóÀšîÂdƒŽÌ™ó,͆x@P0�榙%u#bCàRoôZFé(%L…à ÓX{û ‰ÜL`%H†,@J0#‚¸lˆLLËèCÛffIvéeñ„ÊÛWc’ô¬á©âð¼R€Ììk 2 ÑVµT_+++2ò°«»{u?ÉN* K®YA:Y‘] 韛ÖŠ€âÂ"²··3„‹É²Y»&N‚ФÚ �®’ÈÄòyq‰‰‡…d©-ì›M�ÕE-‚/,Étf|ÙIg'Ý£Œ.™´��¯‘“òN[ÖZd_‰‰ñʺ+bšÖÉ÷F÷Þ®ÕLù)b‰âüÛf¦¥ L†·ë?SB]áb‘@·CnÀGf�%2¤†\¿(�†�{|àâJ;Äÿ^ÇžÞøÅ"Ñ}HsžË*MvצE;ìÌt³Qy£Ê‚2aå ¾€Êauvv©p(£6É@y�¸(M %' M¼h4¯Jµ&öƒ}a=“Ym9§üß<ÍúÅ- X"3&Ù,r2�ÿc™1Ï1ÙÆä:é¶ÊíN±îtJPrO­Ë¡çvRrÙqQ³ d§@=” l_SXßnk…ÌgotÌXö9�ø¡ö¶’>£ +6t¦¼ˆsM‰Õuˆ…Ýyz«'Ÿ/«*‹Q:‘!·­œ÷‘ÙQL8$&`žÔÕ™‘Ì`¾™•›?׬hDX¾ñç„øm!Õ% M'/JÕ‰‹É´sy[¦ð$zöâÁI’ËùŒ¶Xc¾£1�ƒ Ìd@§T]†ID]‰ž~IlÕÄÆÆF?ÂÎÅ e;yòäžÒV¤²j|‘¥ö+e0‡"I§‘ÓeÎAăïQNÐ ˆIþæb�Y‘ülä;CÞ¦À 1›nÂ,†ÌH½k6ª‘†òWh'ƒ<8¸ ÐFƲ-&©�Ý%å³A-Á„ 3«nþ“&Ãì�a‘Ö"lK˜ð\S Ç~Õö™ÀT#¯Ðšì“$üÕ@qQÅ‹x<Žªn˜):M èRY ,=b°¡* ‘^›¡�¯”<°¢LB} R½øÖJ*¬ÜdåÜ�Xð»•R˜¸2Ãg™á3wt…¶�Ù¾�Ìö;¯ÑH$p¢Úy­Æùª©¤æX~V>ZµS™¤liai×lk BI9Ìõ„Ò"“Ö"AT ÊÉ�ŽÆÿ)sìÀ%¡ç�v0�bùyµ*•@y%¼‡KNÔÌWüf@iJˆÇ;໢òL{Ìââw:!OW×*«|YÝ^¯$[œ�y[¨L¹fÄby1ó•‹Œ`ŒÅ$£-û�Þ¨¿_¾O¹Á@ÿÈ*-Ž!>p\Vi!UF*11q…r=ˆÀ¤¿Ê&~ƒõx¦>kûiÿ:|÷»|í‰tÃ1*ÚÏÀ�!&SN­Ea:Ö¶³]VUíååå‰"¨¤t¢o3îèsÏ=7Žª‡žkµºc¥ÌÆ+1וmBio×’BÍä y‡�ªÖþ)|_TïÇ"Õ˜Ê_ ™9œÍ9æTš†ûµáφ¹F„•êèÊ%îÚ䟒æÁp¦¤ÒzlBmý]Phˆ�¦ˆi FÓÒûœÿ=ŸÑ`À:kÕHDS†ÑÃ&^ëªóh›"C§3j–vã� /c4]¡ºu¹�!ÂÇd$6ë>*ø±ˆÌjM”4Mdz+ÇŒ oogÕ™U½™­Ò<0™"ÙØK§ìwV«J;¦Àm¶+° RGf8u÷S^Õj›ž5z½J$­UX1äEõ�3Y£ÌasOO7’”�‘ÌPÙ Ȭ^$,�G,P‹”gF%­²ygúwÉÞ£“šª¨U?0ÙßL[¼ÿ“˜ˆDD% V­‰¨|Gæ|34jô‡®³¨˜Ò}^ˆ`’9#UPgd>ìîîªüÖ*¬  E÷y _Ç  "i Âʱ"%”ë£Ê$ngüh[¤V�ÒQ”g¦¡G›> �xÌ%4#¶é�T�ß,HP ûõA“¾ïhPKtå/×È”ƒ5âs)è .V`û \ êȼŸÊYÁÁKÿÛÏUå¤�ùöe6æ ±Fš+ýnD`N½Ö¡Thº¢ÒQDfuœegM'æl[T1�™œ@äô;ËÝý.»H­ŒnÕ’€ © ôùÿôíïhß¼ÿ~Ï/¿ìe—üòË_VÝó È+í(œÖÓ*™ó)°V…é:2§Äl_]ÐR.�ÌCÖ¾,=ƒãÏ«a'óa§Û­¼M¹‘y`äo"e‚H@2u5R…U‹Ìð}(ô=·tE2B‰Ö;ÈÂØ&—T(��H޳¤cPÒµÀüüœöØ£�j\xA¶(‘siÌ·D½ç¦§÷(Ä�‰*|ßñuœ0+(”žz2�tó4¸#s²ë�fY[�¦Cä„Án .KX¢ w,sPT�×ëU^�5*Œv9ØȪÙtA•Ž‚j£êô�,ÅDDZÈdH¤…ß.e 3êV]’òßÓø]-úÿt-ˆcX#&Œþ²mqζ Å…ÍäR+ ÂdEªKFÇC”`Vl…ŽÌFˆ‰Qy‹­˜Ìl3ÁS·6d’ä<”V_ Ð,-A `B4‘Û¹•ø‘T�kbÌ6À©²V®}¸g L3D£�e¾¨ÄâȰ¹;2g--П°àõ·ÌiPþ—ËåbÿWê«™Ìaï{ÿû%a¿Wq®’ïéêBéyÞ ˆJáPH. ¹|}ÍÌLÞqýõ®/Þu—¯œ÷§-ViB„ï‹=0-›XžþÿàbPZ²˜‚xÜéq4mGf† ;2×”Í.fÅ1³s=óÀŒê 5üš ª7¼ùMÚ�Ÿ¹Cþ?08(ÿ¯êl&FqÞ°Pc\Ï/Cø–Nvfü¨´ªÑ'Ó…#ÃÓE*h•ŽÌÙëÊj•7e¼‹úœBw)ЫÞÇ@þ¯ŽŽŽ-³ü€ÈÀQ�<0ªôN*¢Ùð†7½)«¸r£«>sÔ«ç‹k\>’„†ò\¡ÍM©ÐÕ¢¦Q@š r; -ÅsHÿT»5Û‘Y’Z{&°Ìºyºž$udNéfÅlGfïÈL ñJLˆZŽÀ NóFGG§C¡Æ«µÿ IËÆZ‡¨Ý†ÇVË¥(ê\mog#›Å÷•O…!`ãß èÀ�JAµ±ì üÐsËQ¾ªž¨UªL³wdf`B¬”@VWW¥Üçó)Y�syyy³___ C/Š »䆤fD&úýþ@+_$ÔrDª¯Ž%#A:““OWe_0~åî»+'D·G†éëGË ü€‰1¡·X¡Bê‡ã›†±–Í� _µ>»U:2S¾×~U80~‰kÈÙìQ‰–t:ý`­v>uâÄ„¸�gžuÖã*~y\O?õÔùÈb§lv½~[ j ÑˆÇÆÇ'U.×gùÂââ൯z•o-“U¡ït»•;ÿØÇdB²ªªîžûï+;„ÊWåy¨¬ÊÄuêòx&ëñYèDL5YÌ8ïüóª×çblŸäéê âqnvvÕƒ¼==«ÁõuƯñãÇŸhön5óc@&Umw�¾ÿðáÙÅ……1ª&�Güø ²¡ááçT¯5Vë<0˜A^P]P*‚È «å–(«:ž ãÚמyzR†ê—5@ÊWå ÇÏš �ΦO’fœÆØÑ£S˜|Sáqã-�¹b2;Ý ­ jF`0ÏÑó¥ÅÅaA`Oªx`Þ\9uj0·-wß¡C ­î “=±ô°y§ 7V¯Ö¶Žª£Ço~¤ªûÛUñC�`4v”¦:Œœ$ÝüÀÄzdtt*_E(1UÝ6¦ 0¨/£mŠþ0UO*È *Ìx´ºß æ*jV 3•³I7Ìc8¾TbzQálF=Iºª y`÷~ãë®k¯½Öë@=?»Õ:2ò#úûû[æ^¨µúÊ®[ZQµØ$Ú¦/Àá‘‘i³ü€ÈCâ(ŠÎV›¼ðH� 5A}Ëò%I#¿#u¨(lnn®.3Äý;ÀшÏš5Ž]˜|·R9©ª+0ø»òEÁ·4;33Û­ŠrÜíñqܸÌd;®E?0ä{Á|H~/³×;dUÖXUVk åG<ÔdÒ©z‹Œ]½½½�•••�VS_UW`PX óócxnœ‰“:‹ˆ>8)´^5ôõõI“aÿ‚ÖÂyQp"¹N_óª²f(]UkˆI÷8\"*ã!¿Y�žŽs1ß  ½=½½Ëðuafð³Ç—d\Jv«Ã,K'Ú–-Œ ò"s¢Þš�¼œ‹[ZÛvRÛñ: Vï8ÎD0*. áÕŒï 1®Ã{òžC…‚HrU"ãzn™±gTYµ~ëjôS°&!¸kåÔ©þ¡ááYU�“T•”b+¹A”[E/°Ô*8Ÿ±¾¶ÖWé~–ËJ¦BýÄF©T«˜‘¼`6l†H¶ÁÏ=£9¶´Ø`‡|DˆýÒ[ŽI²©õ~wQëþñ)më˜[†¼GÎéÖ¯="‰¬ëá5­GlŸúÈEÙý×áQäB¦ê>CžÇwž¡¬*ÃBáø¹=Ë@` ²J;IWÚL%–—¥YNLº}‡TN©Âa¥'Ý5­J�B‘^Keòš:qâÊåjvÄ÷Ä…^ÏϬ4Œ6àój&òÊ^‚X©€°Fþâ)AXIR /ÏCkÚÜ?K”Úà�Ïh}÷ÍÉíaA'*�¤ñÕr¢žeù ×B•™U}QNÆ•S�@½ïíÇÚ–´5E¯s(/I^mV-e¯•tK2.;ÉF"·™Î­h$’­q¿‰Y« ¨*´Ö‘a�òZé@¶[/7.óKeµrÍpkÜüâ·ÆRH•ÉÒU‚Èš¡qi© _>ammÍ_“ê… ˜ÀÌ®ý0§ ·‹ë×ÈL’šQ•íSP¸Ò~`�Âæ¡¶òZzÖ×ý=½½«µ«Gt6…Â7 [[™‰›ž–Àƨ=JÉÀò¢ðév=B­™A>0�|\x‰Á¤ØùDpWÔ ç¡U¹ëzpÌ��ض�(ÉØŒªÌXºŠ KU¶½-*]Uià‡*@ÐüÜÜAP!c‘\øò{}¾ÀÚêªÛkQàþs9Á´Z²ýÉêú{ÇR²J¿ÙzŠ5=�Y#AÍ\Ö´TRKÛÛµ”£]KzzåsjOn4;×Ù‚Kš5´–Q.6»–rvj o?Z æý,TÞ/7ŠÑ ã«ÍH¦ R]Íl2,8»Ì!-òwíx�âù!éó<¼&ýbÔZßýs2¨>1˜ô�÷µ Î Ç·7Að�‘œÈ¡ÿ$îI,ƒJ«U¾UÚÖ¦%<õï0`ÓÄØ3Ÿ{¯¦FB¼�¬nIîHòŠ�œ#-ì+³šeã”¶Ó7rð{ã1IZ ³¶XT¾WUï`!…㨆 ZÑŒPZ˜9SAÞVQ]Iì˜[؆¶rõ°¶öÒÃÕõðª$*q ú0tqoæ7J þ2�Ü‘?ý¹Tr /z_«bWAaÝÄh ü8ó̳´·^ÿ¶ä .ýŘé&»9ª*{ôIe6Â�Ò�ØöÓ&Ë-Tß yÜhHåò”p‘rº„¼Gs¼}f)FA–͘/Œˆ •È\H-ì[©åFnh;rÀŒíGHPjåu™%|¾ª,_àÇ^€Ò~lnnÎßÕÕèìì š9zÏa·ïKXÕ¾€õ†éH1S–í¨4–B*ˆ2´Ä…ŠI'µDwa a¥Q�åD3óÀò5?qAq5kx-T‰7û@d[[[^,bÀO‚ÌÄk‚Í@fÙà Xw:˯’‡‰u[,’!˜�´f_�iI—MV«µ¯ÅdpGÜŸw¬á„fÛˆg¶ãœã¹Û&&×#ŒuSŒ]Ú.Ë®ÓILK¤5k4‘هͼ8-C`ÉîCÒˆ ­ûÈiâ²:´Dסìz„$‹¼P-;Ûšm}¹0):œZÂ[žO=ÖBBy‰AÂg¬@BUXq1C˜ç­×_ðz½ºV£Ñ¨7™L:pÍbY[[‹ƒÈ<:@˜ºyì®q¢¬�ø”¸©#»…˜ �PÊ™”„fŠÌ"„È dÒ’Ÿ-ÔÖ¥Úm{”Úq'÷×&È2% Œ>ƒƒ8òñ€^\R¨ƒŽFQø°ö¬ëðÈHC ÌŠxÄ,¨P�üSé2}Hð�! Äè#C„c)–;`ÝíŸþ´6ubJû­÷ý¶vÎyçq[yFC‘/ ä¤Ô,®á�� ?Ô®aq=û±X­Ö¦!³]c`,*îy§ô�ã9Æ—¤Ë[ÜDzÏÎ,Z[xGª1"/99Ï­b}ÉÙZݸkJ`2™FÕF–ÉÎnyA9–ž•цòâòôîRXm‚Ô`~Ä#È+Ñ;Tü¬ÌàÃÅ ÿ–ÑGæœ}bÿãç f1@]6¯Qi!´¦˜©gNx{ì1G<¾ÃäÅP '¿ß?�çðÂd¬YÉ ã &Å /¨3L–åÄUŒñ�3$1R›x»5šÔ’]vI\ð}!Ô~ÏX#Öa[«¡éíL˜í€œ HĬ?ŒT˜;}¸2ÑÀ;ú,ªl(ÞoÇÅŒ(F}6Vè¸v ×ÜÜÜÙðì:\�´ŒþqÉNà^á¡‘a6à¦ë¸™å»æÍ¢¼`qÁøÒ¶’äk &ÈHDZFƒÅ›Si1~è¤eÑò•E¼ÇÖdÀ,§¹ž72añyL�å]Ñ™{çâ ùE˜÷X„Ò"ò²Ûíh »�Päf2­Ô¾ûædËFãPn?°Bd«ùÌ"î�ÈL�ZÈ~@x{c ,"ïo¸)°  È+cùñÊÿä-Ý?…HC[0®ÅwÈë}éà£ÈCø³ðÒ�™ÇJ"Kœ&9"¼”½ù,4uId†Ý›o팢˄äÇäì«�Á„rèСYܤåÏT«˜™ñ†7¿IûÊßÜ­d^�Ç£�qæDËüÕèf$3Ad�ù})šÑ8¹koo©©×,•’J̨Ê$¡$vä¶¢'á‚Ä,Ñ„$"D " ѱ"Æ�îÌÄܶ±#ÉŒ¢QŠJFÚ,’´l›™íƆ­L`E€Š^6ºO—*&y.:º4Mi�y2ŸÂ¤+Ö\Ri?°fÀï¼ÿýÚÄÄ™2€ R ŠnqaA’"ȧ"òr{´—\yEÅûie€˜tr’ ‚¼Ü 3ñÝ’‚e¦F¨3�™˜ø…m­@ijmãÔ.¥eLŸæ¶ŽÂ×D¢Ëi•�òµN«\¤ê²ZµxŸSúÅÐi‘yÉÿ=vI\ÈÃk°-é²îûL` €’Žëþ¹Û…ïØ¿ík ßW Ä£r\óªk+ÞG(’J!VcŸŒê�¢š�'4œ™!ÈɨÎÖ××µFZRTÚ?¶/ÁÜ&Èg§Ïix­e×ÿˆFDä¡1q�øjk?Å•ûL`ý â‚«U9™öŽŽ(IsÕúr�¼ ²’�@Šã+wß-I ¸óŽ;˜ÀÊT°õ膱Ähj$u2ƒ:ƒÕ'—Ð`r„©�ÐjYÞÊRÀD˜ª0ŒQgƒGŸ)Õ¬‚óöÖ–n‡CN#41œ¤{/XÊ+§òG±(µã`õÀŒˆÿaJd�Fõ3äš ±À䨓`ÜápDŲR«V`¢ M¦ÌQnFƒX}ЦY,�ˆAíÁ½Å·ÓuÈË*¥£0>ñ±�eÕ*ìj¡Â؇e>ä#4±tÄãq— 57ügºÙQš‰Ôô÷† Ø¶c1)•à_F§‰RÈ­PúŽ%—Õ|õœ¯¢êÚWê_Èß’àZˆûÿ Š&3×–O3_y…LˆU Óg”�‡|Hš¾ò©²ðƒÚG?þq>IÍChY³&"AN 5±t€ÔH©aûN‡¯¯oŽü÷0%ŠEú÷@rÁ`Ð+={ a'ÓLwÏúŒ ±P„µ'œõ'0I .æ[�bvO—K;$lúä’6-H $ßI©Y2óùº´Ã½ò½ÁõâýMÆDƽkå*ç�U†ƒ‚4ÃÁ1 ü`ä ÉmomÙ¡ÐÛ/ˆ¾1ªÊÁPœÀ:Ýî¾5ª"½ÃnÓ 4£~ ¼ÊA0–f-�t,²ðta³Ù¥:c0Í…BAŶtrˆ×xœ.Í©¿6$&ÂÑxLKêù¤ØÞ—Sɯ é9©´=&”àjdãô„¾Ý%÷»°±Òç¹éË—ƒx@^0 ÷ivGiœ Ó#L�cGKòÃþŠ&°TJ¯H?&Da¡ÿeI£‰€`˜w\½ë‹wÝÕÒ‰�²Á¥Ý)M†èæâBÀV±mT@>c¾�,�õhçŽk>�´@lÝ}r[¡÷û…Êééßµä…÷5 jN`‡CÆ„6ª"Èë™É9muuSóx\Úøø 4#–³˜íöâ �L„¸pe´!.6[æB– �UòÀ0`ÀWÃ`4”677çlõs�ÂݶµY‰Þ±ülYV(¥éÕEíñ…)©°@jFÒ‚ºÂk°„ �º;Èçe41fgÕ‚ÐrIm_ªR5|œ¯b_Ëy` Fm@�gåŒYè÷U�*;PSV‹Uó¹»%Í®¤)‘¬ÃÐIfÃ=8 þ229võ•yïò®ýžŸ¯9I_…[Wz¢Šú�¼†††fyø`0LtïËœÏçÊ~?¬7F@e¹Å‚�w”ÔâÆJVEIü[.·æÕܺڊeó¾â3ãjxC³võHu†í!}¿„9�¢fΔžz)0Jߨdæzä5~üø$ßÎŒVE½ú�©‚žÞÞ•µµ5*•´¶å˜ +üZ¡í™‚ÛAd“Ë3Eí ˆ…r3&6וL«Àt“XíËI¡/WýÅ^:ݸ(<îÆP �êÖÀIk\LZŸX_[«(;8‰¸èÆW�‚F¡óµJf¦ŽÌ°ãæëËU/”⻪ÌÒÌ Ê"¦Z*)Ó RŽvYÏ�³OhÉîC»rdŒë�†@…ò½.OEù4u¹VbÙ¶hßžê°j ÏiÇ»-´£µm%Å÷Ji)§Uœ {6„úA[¾Ó:¼._„!öÑ -âÍJb‡*ÙÇÒââ ˜¢ær¹$ÁÔ*™Ùëõ··¶1‹i$y±ïª0denA^pl#عp–�SEåÂ�¼ˆÌ¬¡5YÙ œ0äzä•ì²KÒ²†šm#®¥@díV;*È-žÒvz�b�ElÛ‘¤„Püƒ¢±=6”™:ç£ÙÏ`0˜ÀjyC·µ%A`È#B«&*™Åô¦tT5„Q[È:qBE•±‰\:˜–2OÔTÒm“†n»i«EkÛNj‰G–¬ð„g ïˆuæVQœVá8™LköHý]s!Ö�Àà‰¬bô�� o*™´UjhÌÚ 9oi{{I¯GRh[4¤çÐt›æ»B�I"sÙ4kôôó]ʪSlÛ4qçfÉÃD[ZVêA}:$eEcÉF¡³³3l¦ß©nF¹`béð(vq¯¯­õƒXùýËfk©m¶<0„SÈp9¥´� Œ�e˜$Ómj7�!)%ºR}1L¢šõ‰¶Íf«‹S½’`Dw£ó}¥Ç€X¸c˜Àò€rÁ tT:¡Pȃ.«xŽâfTa¦ºÝ)m9MPévW&p£K“A¶"ýg ý®º >/˜aJ„ ß ÁîÈ*ÌØîÿóËP¾~šåƒ`ü�µê¸U·ú7” ÖÈ@‹|,/ÐsHxMœÍ„|=‘Pµ•ú5½Y5hýވפ“Ê«¯]Dæ¶ Å˜ÖÚI!ˆJ̾.æs©Œ©fEôáÎÌíðü’Ót²ÃÿˆdTܬ¾XZ\‡ÃÞjŽ[«««>Š ¨'ð™øl% ÌÑ€óbf/ÆÐUØŸçççMU"¾ú�%„*CqcôO’êjóT¦²�è@p0?:çŸàêæ�i¾k´mgü_;>§$/çò¶ælË(D¨5ò‹%]VIb؆ðy<‚Ürýf*‚û�Õ:ÑH_]0,’ûôSO�?uâÄÄ3““gOŸ<9~9××}ñx¼î¿>Ÿ]Ê{êvGPä¡J¹FõEØÜØð b[õ˜Ä m–<°B-ÖsÄ“êJv±ÎQhñ�32aøü�GL1¸ $>m;mó‹ûÛ ß·M|ß©Ê,‰ôÞÐù6K†ä425:‹ú FëŠkyi);Ù^[]õû|¾¼•Oà"9󬳗c^ à_^^�n†óP73G4¢/Øò?d!2]˜Ÿ;~ÆO˜- Ce€”ô{µYóš‹z¯¢ªËHZ{¾—Õr``Ç~~1®€_S5àÈ·TÂìÌ̘1¯J ¥ƒ&Þ°„E#9î!ÒreeÅ¿#¾«¯¯/�/€ãdhsÓKy®t>æçæF:ÝîЪx?"�pPƒ›â=)1Îc¿8&^Û&^Óßß¿@)Kt xÞÞÞ^rzU]ïô£ƒnä� ½rêÔ Žg`ppšŽkxdd ÿ#äR›oc£4 ì�7¾+þ½ÈÔaô;º ­Ñ}µ˜|Ãï•»~}ó*}€t@"#õR;ztêT 0’É3fo¡¾« ©�qLŸåGwlC àèØð )|,oØ/|ubl�íééYû9“„Œ âq¬Ãq±*©ÀŒ³™F‡ÒÃÖŠ�UšDĉCˆ?f]~¿?)Ž“«‚R<fÍc4'š©˜Š–—óúé÷s@-a<ÙÀw†qä1!ÈÐ�BùÚ]á5PT ô\‹ÕÐð°¬<•Eî˜�`Ð7zäÈ”±(„8.¯ØïùÕÄg%ôøƒ·Û¤Ï4îGIÃl3‡F‡ÒçþHùBüÍb>ä~` Fk@Fé u#äͬøÃ †•••�ÆVDQƒò­Ã#‚:@`Pdð�y…ÊWÇŸµÔÓÛ» ÄgqŒ®ÜŠF M¹A�ú1l8޳Òq¶¾¦ÝU-”¾UÚ½0 óÄsýoðm! ~(¨¥ý|a‚`œDB±�sî¹�Ê1Y'#P¡¨»»{dWl˜>È ÏPâéê æ«tR4*.ò;*K`tâ„ZP*Ä–Bü)¡™Á`”‡VëÖHìè>ˆ€Æ×B‘ˆð��„`ë;tH‰Ëå’~-V`_¹e¤àÿB@Mîaf<蘄:\„_ n«x=Ž Ç„Ï™™™ƒµ Çó#H~;„øƒ„“e{¯+�Ѭ@5¢ ÿZµ{©%TéFµ UAn‡ÛZíQÍÓŒ¬1d�Qä“:¨8ú‘±±I"8ò[Psð� eÓ……$��ÁÁ9¬Ãë� Õõd ¾£}Òçã=ô!ûôZ:6{À$ ?˜Q"œßXL½Ô¿ºû¢PV«ªôå*ÃZW˯�æp:AüšìF[ÅŽ´Uûmmµ½ÄÅuƒx% ñâØå�Lf*`ŒÅ†ò#í0gëh?¹ëèãzã>�¯É·_*_ÇãºRÇÞºŠc‚À`ïT‰(¨Z>"cÌD`�†§«K>ÆcêMTA®â·¬égøÒB››ZZ±ö.A^ôÛ0š§hÜjåóPwƒ�D±½µåÒª|¼ë¸4�m÷e�Xf•4 3Íw3`­×Wݲf<îVDôœ)óÔššÀT�ø£0Q1x¸Íô6SØV$bÚ�›ÏCœVÄôñ“8˜ÀêU#þŒ�fH`&4KL�1Ý ‰çgkÖ‚åó Aè]*ŽŸèøZÝÝQw//9ÿT‹øÃ…Jöä|%UµüHùžóy`4TgPE‚ ŒW­^¯µ!aJÔ¦[5¢« åË—ÔǨ�êÐ'7J…ðy8ܬö ñÉÙâþ¯†µé.'óº– {²™ü`ÍÐl#,j]³£Î÷«�镌P`— ¬D¡g|ëÊÀhÞlDGÒr€<0 ª÷Ûg6 èžõX‡m-4«æóÀ( ”ÀìnñކÕDT-ödj­f3bÍ�Á~$ õkTÂr¶åÔù<0j c’°jÇFn[¾¤àVCCªÂwè¦bé&žÄ MÜ ÕcTB�kÞžLh²*èözµn};äZñy0Çyh†<0ªÂA®Å”º$°—‹ÓE`4s@¤Lu*Í$º»»ƒè·ƒ¢—ܬ擅ƒ”zvPof4Óyà<°û¿O`º 饛\*˜^¯+ uˆÖª«0îÆ`´Øÿµ «öI%PT ä�*Ì땤3"_" FkAµèhû¿T"0E›[Jëî–±ËdFäË„Á(Í�¶�Ë€ÜþX�:0ëê+ÈWZƒ ÍÒð¨b f7�ˆî¢*ÿ€Í�ÆhpXí@ù©�l>l<�Q‰ äPíÄx{z¤q#TšÀÌžÆ`0†±þ¡‡dO`º “?Ä–‚~0¯×D“K\4¥v e0æ& ÕŽ exäú‡ ˜Ê�¸HÜ�´5¯¬¬øùRa0òÀÞyã»â/|Ñ‹L«¨ÀùéUõÿêkƒ¯²Ó°5òÃå²¾®d Ð×רܨð…C!esš©Ãüh¦<0•îwŒAxìÒÌ ˜Ê�üt”†`¿ßPí9ŒÁhnÀ…�X¸4Z½ÿW.jBÄ��EÕ@ ×瓤µ¾¶ÖÏ— ƒÑü ^`ª >¯»4Š@M$U-ž‹J Yt�V=¤žÁh4š!Lµh¿P(„’˜\>JESµµÊ.ÖÛ+UXp}]¹›’óÀ*�óÀª cø<"£ùŒ(F`é£rÉC~ÿ2e•zźHsƒÑ¼àðyÅ ÌØDRÕ“„ §«»[&6–—ø²a0šªùâ©+Õge솭Ñr@qJø˜ nTÍ2ïïï_@H=©0Άg0öÂìýÀâzD*²ÐhD£Qª>Ï& L^,.WhG�šµ©J ¨�ƒ Så89Œ¡¸Xõó!""1Áçðy… Ñ5 Ê€W*ª0Îc0šÔ}™«ÏF› A Í$—U©0à’ç?_»ýÎÏÊç/¸èb�·—¶ÝˆF|þy矯Ýö‘?2íùëììtýîï½ßë€j÷ïAÛ?úg:câ Ía·ÇËyÿ‰é“ÿ/w;ªo .àºk_…Ç«½ÿfÙ®„ шx,Ž�²3›Í¶Ë¦â1Š ?ÔÛÓ3Iã o/m»œIYÛ&ÅkB�ú|@¼æ!3ž¿H$Ây`‚ªo0ö‡%�N?¨Â�¿ „Ø{ÇŽ�Rù¤!Ôvêĉsà`=266Ùʉ¨N‚JÙ£££Ó•îëg�?~‰®@jÔ÷ù•W_7ñÓÇóäδë ÎC«b~nnd}}Ýß××·xx``¡QÇñÌääÙH-œF5 þeò£M•¡0Q•óÁð…QuŽ…ùù±V¾€psUƒ¼ @�d�ô;a‚ÌÕ7Šƒ2&D …Ý? HBå‡êkkk~ª‘Øì³$ÌÅoÆ÷Å24<ü~3øaJ?~|riqq¯E{¨S$_RØôñ:”ÆA8 xß‚ûƒÎ)ÎÎ;~qîgsÏ)ò)ýýý‹tÑïEòðÈÈ4î)¼v~~~d'wP&Ztp^£:Ø â½nw�«o˜D�”<¨ja_#paõ:$M ËKK#*vq­ò¬Ðew8b0¦OžœÈ÷:1Ÿ\9uj�*ÌÎÌŒc€Å6Ìn÷_ÑšoD¨Ü3&&ž‰ÁÜž{Nñˆÿ�¿γ<ß��áååeI„ /1�ˆbýÀàà,öÍgX-Põ ï5�Qa_ê>ª: .0ƒ…Ú84}»RSÔ' ÷5Ô1�× ²HÌf³ÅH°Y¤4tww¯ÒLÜ×׈ŠûçÞxNñˆÿ�¿ �gžoE£ú¡È¨ã4ñãÑ!&k�ø|L„ir×ÍÍ+MF`ºÝyKñ|0#‡†¦ñ¸²²2 jO³FƒÊó0(8> …A½ÀåÂ0ïUÝ�¶wö¢Þ[f!3™>çfgÇšÚ´¡WâÇ,?‘H8‹-oƒs„™-©Õ*ú«øéùêÊŠßÓÕĹÇo@町öô›À¯B&Hc«†"÷ï- Êå�‰0„ t82ÉÔ¡:à frò|HÌ šÕD†Ü  ˜`ŒŒŽ–”ê0vôèäâÂÂ0ž#ˆƒo½âóáôÉ“ãÄACø ŒAðM´/øÒfgfƦNœðêA1>ÃФ“èF|>~Gª¾ÁæC³Xg§$°hÆf ƒÔGÞ̈è€âhÆè!Š~ËUWÁ–›7cŒ2„2 ÿ�7*ã`€ðóå$áœÊ™4æ�#\—Æ÷ Z±QþÕ@¦îFùÙ|؆|01«T¾.b.V�ˆ.Ì’úœo°oeÀl%Ê8Pq~†»õš’Œú’˜@à·X__÷Amð`©²Ñ‡BeóÙ(mªf•¸©`ÏÏå¦*00S@2ùÍtìÅ ³’÷Ã$"f¸K…©«‘UÌ6U3©–”*�÷ôô¬r.Þ.æ {¹ŸO“öžÞ^žÜ™U�é$&͈bq›©8ÉqìóssG�·Ó,J¥„ƒY¾Y|šª]SÕžhqi¢üØÑMˆ�ðÑrï¯&Q`ò¦íê %µ™'9$¢»¨ŠƒÁ`ì‡M}¬ãÞ_M@`nÊ3aµÌpû–þ/u4›)‘ÁhVĘ#…$�±ù°  æ&»Þ�‡"s̘h(7 ¦D¾Ì õAÕJê]ȗ͇MF`F)1A]Ä|@n› ÆA`óa͂̚/$sÃôb¿lJd0Ô*›4âsÙ|Ø„FÕ,ÌTV*ˆºcS"ƒaP�Èz¶–aóa“˜QRo˜¸½6ª°)‘Á`ä››˜À¨NÔ$íUòÁ˜à S"²e0ÔC£ê ²ù°‰ Œ Zš½nÌ¡]z餅ùù±fo~É`˜ �¨ƒÈæÃ&'0³‡Ó1444‹ï;;ª�ó¥Ç`´6Ø|Øäfüq7MX•Ø© %õdb0�jtâÑîpÔ¥°1¬0›>lf8ÈÎÎÎìÅ¡P¨»úH‘?ì¹éé |¯ÕÕÕ·¸(�<ü°ë~ï÷�<;5UUu~ÃÛß1Qá5›|ý߸ù–[¸ï™ÉîÍZw^n1FU9 XÌZ•#0�’?lqaaŒýaåá½7ýÆxµÉ«J3zë>÷ù,ÿJê&ýz}VÖ|èõò¤µfEÔ(U9š¥1"Ôäööv¾×ìÌÌøñ3Îx¢QÝ`ÍŠååe9¡Y9»K‹w©s9þÇͶÙÇi`rLËZ~ŽÑ|Hy®Œ&'0U9ðÃëU9š¦³/`žxæ™s¤2}òä8·x/ ¯­^Ÿ†Ò`óauÑf–5Våh¦È=ò‡!¨ <ççæ8¨ƒÁ¨#È|_�2Rk««2ÿ“͇-F`˜­P™³W娣.]®(uq^__÷¯®®úøÒd0êš׺Œü÷dªä ­#0ã¬%dòªù€ º§§GšF——–F8¨ƒÁ¨/�ÕÔUþ|öu·"�5©‘04<Ôq ”ò¤fEþ1ñùÒ¿�u?̇à÷"°³#&D Ü(=È|Ë@ž Y2>a¢¤ý|çYT ¬˜´°2#*òÂè §Gó‚¼¾hÈëÝüéúvH‰íë#»ñ¥ö[̇�Ù[�6Æñ¢…I»²]Cê‹bÂ÷ûýËùh.-Mô¡Þm%°ËV¢fDEî€K´¦O‚A£‚lD¦jU„ÏØ�”KH¢�ɱn¸½¢¸MF 拉"f¹¹¥E…l%°Ëp'5“;°TJ¬(r‡Í´¢LÛÓk¸þ/WƒS7bÑhßuuuó¹nÛÍ<_ÌSQ Eí«oimµ¤%)ZJ+1Ï?}Þ Lœµß¾È´]| a»Þ…»®ryÑ LŽØß|s¬—P…U¡È'´p¥XV”b¥æŒ�YRJÔ„ìÇÔÅ¡õm•Ë Wì/ëø®¼ñâ�ì±þ¹‹†ÈFµ÷+Ê õ|W×ÔäTCb<Ò•J`Y!•šYž™žn+‡¶¬¶$´Ò|Ðj`±¥-K˜~¼®É‹‡Z® <…¢œ‘kºdž'9·®TËÉì<›t–– *V’ïDÅÖ“`JDĉ)å™Ä s…(n M¥–„Г¢…ŒåPC«r!l3døÃãV›Zõ¶.eÎ^ôüæc5¹@µö~EÙCÒHåRKÒÌó{)ü R´®JÊ–žžž¡Rh«¾ m?²mŠ™c,‘ Œ@�DUݶ°�œ[Ñ·Y±]ík- ½€sÙ®džohlœÒé=J`›¢­­m“”-%-1­+5åTÂb$&BÙV±´h}ei PHk•w«¸ ¬££#:>>l{r® ¯ÏHà:€(¢ÉzÉê“+HðFƒ®Ì;J"ås,HÕ‚9€9aåömd¢Ñ¦‘ǼH¸|elÉ[i<°QZ™»¸Š�öeŽ)3âüBb…v]uuuñßøO¯{ÎsŸ«ó —Àr¹ÌÜ/Í<¯ضÑÜÒ2NfŽðÌLk)¦–Zõl<ßé€y Œ,ò‰Æ/¨¢BŸÝ¯½¬˜® -j)ñ½üþ)}•ÛE>&1Kê¨ÆÆF ÞPÛ:$µÔ¥K—BضK-t³ßJÃ�ìšæÃ4í·r¬BQnpKåª=Mµ·(™ªV¹Í +<ûÌ3Á¿ûæ7C|vÛÖÌÌŒ/ß×»çPäKKK5V«¯ÏI–xM¥¶+”뜰RÆÏÜüòëÿáïÿ>ôµ¯~­éEÿò×ï†Èný¹Ÿ? !fÚþè#�l{„å¶¹Ù9…ƒ\WbÆ}Á·¦ŽÚ;øKéÏàû¿p¡'*Ò�:QKï|×»Îó}ÿ}÷-Þ÷ÉO¶ÿ«›oޑìöWþÒ‰3CÏ>¼�6?þ±�u¸×¨þ¸âA.+1ã¶À}a LSG)�í8O�TÜŽ4¤VZhhlŒ»šÏ»ÞùÎî§ž®©¯¯�ÿî]¿7J@‡¬;? …êã�]‡¢?ûs?†ô^ù‹·õ¿ù·ß2Æòïü×wt<õT û|êÏþl�m´Ë÷m¯¸mª»§'ŠÖÇ>Ï{þóæO^{íâþê¯ZÇÆ.Ÿ{ÓMóïÿ1„ÚúàW°R÷þùõý¥/¸çøâ¾Ðtÿ}Ÿ²åä;»:£wßsÏHsss-òóŸûÓ>|´w¼ÿø¥�}üãCú„÷¹˜«%n Üš:J lÇh;p`c.F)s”#ðggg}�DÅ:Hêĉ‹ ülÿý÷¼÷0â®Ç”wÛ/üÛ“˜Û¦ÂG~¸þëßøOÊ:Ž=Ö{ô&¾åœ=ø`ë}ÿ÷þ!ÆÛ^ñ ÛÎk~õWû ¯ÿøÚ×N�ŽŽV¹˜€sðýè~à«�†´þø#içÚ„¨¾ûíï4}ñ+_>}ôª«¢�ž´§O{o‰D¬¶”«9`â¶éÜ/%°ÝÂ"�&êÞߪ˜ƒ9(Ï@†ëC‡�ä£mso– !köã§NÝÄ÷u×_ÿp®Úü×/ÿéÿûOþÏ`&?W!"÷A±fl8Aý‘ÞÞ�P(´ã‰ÌFÃïÇ]ÑÞÑ1ÒÞÞ®˜j`¹�dæ qòâÅŽ| þ¹&\¿ßOG$˜)$k@®Û?7:zÄü“¥òÜñ‘ÍÍÎúƒ'T�ûb"/Åž½o»ž¦s¿ö•¥üç¤*Á¹Î{–kŒŽŒôæ³ gºö1˜x¾”žùK_ö2+M¹øªÛoŸ’°x…Âey7–�û¥X~ ¬©)<~áBT‚9 %Ä•’/’væpw÷"á…±±ÃF{˜G[dŸé©©vlë•)/™Ù¯KlødÒÿ¦'×ì$¿�–Õ�Ú>ÛÉœÝÑÑq^ÈìâÄ„õ …B¡Yi ‘Zh€}ÇŽ ¤þ.´gN�…ΧRdƒr»�¦s¿”Àò? %ˬ’è*#ÝÕÕ×\sJ¤?BhïèÃ�i‚ë=vüøiö�°bÉÚE›KCÏ>ÛǺlÿ-µ}‘BiÉ‘óqMr>Hй-Ék©åÒKý­P«¶›È_�û¥¶' sAt6”÷ûš˜/ñ¸„’jšhtÊ‘“-[4®ˆÑšZ�p]–§&'Û·ûAzbb�ŸŸùýþe£�­Ïobž ×F„•ëœNý½i×´_Oí¥­úñ P}57¿�`04:‘t<+-_¿5,]ºT+Ö‹�¶¡s¿”Àö¼ÔRÏ@_ÖÓÓ3�Œ ÷1Ï*õš*}¾•D<ž×gö=:()ƒ¡”•à; .ïFÂ… 1± 8l÷xqŒ—;6»fû†ß ¦ŸcVLvDwÐ'Sû÷^Ïý"5ÙÐÐІl-½½½Ë» P"àéÈ‘#ÑÝT gž#ÓRn|ÎsÓ% %Ûn¯³¬ Ìv²Ë�È €Æ„$h¡׬g¥ºúúyÈí@{û8,Yæ;—ˆYM ™h™é&pKûhE–HìDP­¯ãСC#»•â9ïùsçz¥T&–ÚÚÚ~34…lퟲ¡Íå<Ànõ>ÐwÐlÍó¬Ç´K1E>f ™À‡©Yzˆ9~§uÀöcî×g>ýé¶Oþé':ÝuÌ[LÍÁ¹Üõ®ßí½ñ97FÜù‹ÛYi¾õwßjtóŠº�„Øù ¦* sCêÇÇǻЀö“¼0Šv(Á˜ ¢€ÔXgH÷ü3ƒƒýö%©«[Ñ >-1/a‘‰ÚލaH-Êq®“Úm Ô•¹?ë^—Ñ ‡¶;,‚  dÊ؉ ´äBÀf÷ÁÝŽP21>ÞIç@jWõõ (‰] ¡ßé½!¸Šoüë{}íòÉO ì´œÐØW¾|ºi“j›á³Ÿù‹ö×ÿÖof$ÑWÿ»WOQ¦ˆÚ»ÑôÊšÀdçåž[ ©Ù¯›ó¦‹Þƒ„ÜŒ! üîàïú�2eíHm#Ó¶‰‰‰öTÉ1Ó±©“i3M®î]/§n4 òØ[ð<1 £�£½3H#)‰] ±ìD{‚#X(ÁTQ …Ë�=úXˆ4k’Ðâ¸÷Cêd=©Ì>ÿ—Ù.šÅbÿÅ 7D¤ ùE)íC¥4³w¿÷½#bú£üÇ�9þ_î|û‘¾´½°°à#CŽœ‹ª$ÖæzÐì -Žyèoþ¦I l—Ò¬d©Ç?SΩ›r�1ž�WgW×�Feío?7D6`´é~!±b�¨Nôíäädg¾Ú—Œ';cÉ~ïûƒ{ôñç•x,“«ó÷Þ}×P}(ÿÚC_m½ÿ¾û"�Ì›îxCÄôž»HjÓe‚é+µ¤VC£º÷CÔý‡ü`"¤âäõ‡ô¡Á¿ýú×›Þûî÷ôþÔK^9õ£Ù ,¹Î%Z¢¢ÖýŒT^�jJ`Û�”ˆ®ÃÜv… `zº}¿®«¡±1\J9Ó$Ÿe’+yŒ6¶NbA± lv*IÉk·Ø¯@#4$Ê%­&+²M ²…X �Qž‡Àª3¼ê—y‚ ä÷|ýo¼.ëuS¨•oŒ¢°,“”º££#zú‰'Ö!P.hnnnÔÕׯ@‚TMëÛÞ6æn“¶”À¶ØùÏœ9)¦‚t&„ýz98ïáîîÁR©�O‘û‰Dª ‰ ‹ÄðA2�M‚Šåú£Žàk«.˜ëªˆ%<ÿìþÅ€‘]f«>0‰Zlhíê¹£ÁñMÕq!ˆ††+Ú”EøÅnå/5ýí7¿qJL�$ÖVÛ"˜GeÉ«²ÂK '[VÅJ«ˆ¯®E–��"¦Cæ´)m0]ÊT̼Śl6QU8ïð~_ %„dy³ðtˆÿ„ròÚk73!f>5üb7¿üæðµ×]w‰4mh{„ȳM�ëøÀûÞßõ‚¾ ‚ÿ “f8†_¢ã.T=ïù·æÅ2SÒ>0È+ÖV8…ný‘˜ç›‹•ÌýeP”e"àøä¢Ý\Md&t¯‚Iˆ;þp.ÛÌå„îÙp¸U³¥?0íÉòVÂèñ}}ðýè–�ù�œ3YºÈûò—¾ÜjÎ_‹Æü/æ~±ý;ßþv¨©¹9L¸üC>ØJ #Êá3¦[|6§JA)–Sço¢ÊW�†¹­ón„ÝÙYÈ׸WA%§ŸxâÆL&ëBÁ‰“'+3"Ñ”2nùPmÁ\Wår L.Ùåb(w#Å[Y¦¨*˜ËPü7ÞqGï|$âË4—Œs~æÏ?Ýñ½üþ)ÕÀ…�Y6|^EEát§ÕU4Ý„—.ˆ'/Ú~’¼âÁJÓu¡À·ß %ê»òE_{äÑ�X\Õ×·(šS.ðö;ï<Ï$k—(¯ÐàÞwÏPÞ”}ÄŠ�BæÃXUÞ’W°€®ne_ΊÙ:á/LS” L|D%þ·ÿþÎÑ\i^|_Ù̘TIÏçÿSS(ELñˉ5M;Pá%ªý=0óU.­x±UoÕ¬_©ó¯kÅA¸ÒxYØ’uñZ¿Y¾ÒGÍ9Üý‹ Œù”ìÔ–ÊrëüDÒÁ ‡Í¶ÏÛkÇñ�nûÛ'å³a…B±{­r.æ­ú*¼x(àU¬¬ZŸ”¼¯¾ù•5•!¬x½ß«¼÷ªÆ—ì;mßíØªýlxß“ë¤M>•ËñË¿kUÎ/Xa¦Ü$7:?Á6¤}Iìr…pü3—“°³=Ö4žÏ«Œ­½(ÌIIT­Isî:‘ø$TžsXéÍ´¿Z@>…¢4^æ «u%ªª¼ªs‹ÖT7ïÚT¼!à­âÑ`¥%0Þû•æM´(¦ÝTU\q…j`"£k¼„éÜÖ馗-ñ°�OÜW`jy]zËL ´›¨ó¯ŸƒÏj@_€bóÝÜ)в¨$5¯DÐgµ-û.Öù7�R¼Ö§¾@ÕÀJ«†À*£bzˆ%‰(à�RÀv|¶agWìMÍõ^uuÐ~–¼©©9/ð{;[¼ cÓÞÒÒš/‚í².žHxííMv?Àq3áy/Ý» BÏÉ@.•¶Šô¼ŽP‹W\ †¼]ö£æ¿/Ì®ïÓßѳáö™¹œè¼·µÓ¶3:3a�µÁjïpsû†ue%y/¬xk¦�[S!š’?_'­TÍJMùª�•Ο6ß·¸bíåtþ5Inu-k‡Ûù“™`}eÁ‰%Kj˜"m´a­˜XQéž¶ó[ǯ •5©ð‚“Ë^¬uÍ_A‡8�ù¦£û�tKfø“�jžØ�Í sWk[ƒ%1´©áá­ÏqĆÉ"Ô¸eaÅhL3†d.…A°†»�ßëíD£UéRE±ÿNRHÅW7ºÑ0Bb`j~Ö›Z™]×À†¦Æ,é�z³_¹Q†mÈ{lçh%L"Šy'­VfH,šHÅ»m¯¶Ähg+ÍUi# 7œC¡V�Ò[ÕšÖe¥5:¶éì�Ò™íÄF+‹·Ö5²Ø�jÏŽz�‹Këþ17èC‘ë3š¤´Õ` L‡h]Xß±.«…AŠ›¡¡±qª9EC:ÒÛ»®�¹h[î6·n[sKË$eI\²Bû" ?é™¶[±6P½Á×ÅòùÙÉ�¤]³Æ¥í¡¯µ¾Ñš1;ŠÖV®�ùu²©ß8Œ­iTþìÂ+áòYBäSÏ¡P+ˆŽïvL:¾Ûù‘ÔDûJ^ŒlÛÓ�C‘F Ï[C#‹$# Ú³ Ëh[üfy£FµFx[ ^ÑÔü™òBf™¶M«VÈË%®�ü‚8¸~|bYµÎÚzkJ �¯!¢©)J` Å §g­šÓz@‡!2ˆ ŸØBåƒkÝ‘¨ÃsçR´£­q\ƒsì^bnnÎúÀ:ÙIv{4'Ì„�†„à™™X7 ‚úêZ¯Ëk[ÿ�6a¡™É~øÆ 0Öâ¶ ¬¯liQ;›B L¡È%Æ.L[óañbL››[ôªk‚–Ðø-¦EO"ÙvntrÛ »¾°X4ì;vìtUUÕ¶Êñ.Ú9]ž?©1¢M±.ž¸ìK1®i˜>k*œtÌŒhc´Å÷r2ì^¡PS(ò )›¿ ¢’‰ÌÉ#±­ �|ÓâNë·AT›ù¬Îg ¢tëݶÎ+�)ÊšçH¡P(ª�) EΩH¬p.fE³ò(�) E0…A&Ž»™5 \›>%%°üv²X L.ÌõPjE¡PlüŽ]‡ MMN¶âõ‘¥EŸ’X^PW_™œœì\+8Yx‚R]]ݼv=…";šššÂ|ôN(ÊŠÀ˜`z¼¿ÿÔÌôt[!’ëN'À2VW^EE! ûã«°ù3u\Q(”ÀvæëP»Iñ^!fH¬ð|�`pOlÈâ¯ñkáĢұ±.3Š e#,.//)Á÷~œßÍ€^jÑB¼.ò î$kÆN@†ŽBtìsM¥pÀ»|ú‰'nÌUµlëvP¨VH DÆÈðpŸÑÈ)�1µ´ÔÞÙÕ5²ÝŒ n{n’×­"SôRÀÕ×\sªÜ_$ˆr¯Èr'ÂS)ö¿ÙÙÙ¦úP(™›k*Ô{¯P lWäÕÝÓ3Ø{ôè æ¾wJ^à™ÁÁÚmŠ °p¸µ­­m•!·ô͹ÑÑnÍááá^>,»Û¨í6ôì³},»Ç~CøîúÔß ÕÀöqÔ×ׇÓiLtÈsçÎu“ãÎJÐæE�ˆ§§N˜cæ—––jø}¸»{Ò3 ß1 ƒÑ9#²‘…ÚÛÇ3µ©¸<€È}Hš&î«Ük™…ùù�›ÄLž™i%¼šûºY Œìï®ã™!©#ØŒ��wñœä¹ÑnjAË€y¾çM_ñ ¦Æ•òé?øLäú¸^·€”é¿ÊùSÏÃ5ˆï%Ûu»fè­Þ‡RN‰„Ÿw-Œû/χ{nîý‘«úúÄcžËSô«™™™öx"áã9MLL´�´ÿxÿ“î}•çI{|Û¹hNÙ…Øž€J¼”½H;�¢©®®^ìééb0:óôÓ'kjjéäæå¨5ƒÚƒƒƒû1ÐR÷I\|jTü5/Ã/Ò^¦6µ«­�ÁEîƒËÄøøºß3f¡ööö q‘zÔ11謬¬øŒô|µ H™ÎCJ—\p†9Ëhýi ’ƒé,•º òDÚŽ™Š>Çÿˆ¦i¯\̇h¥† 6tMø´\3¢Û'¹Ÿnæ Ѹx&&éî!ÂçèÈH/æI5ª¶/  <;u“AT30˜>Û¸%¢Ë$)ï¦Íbƒ¶T·@&©Lj¶š2p„¹o�Ô®5Ä`0 ðÙêàÍÀˆïíü¹s½˜¦ÄÇéÑ�ŒÖ¹ "ýËÀÇa�ƒ\Ä—&í™ýjI‡”ô�=µs_¶ëæÚ ¹FSÅdz�S´åR15ºæC·/ºý�û�¶Œ†Æýt #dt# `âo;pà|†±c â7ŒF7ª¶?à…Å?…ŸeüÂ…n‘¢ ÀŽïCãØÌ·ò‚·µµ�áË»»m§m+ so»1ߤú²ÉV$bWË �TŸƒh'2%Íw›\Ð Ú©ÒuuMÍbj�„hxœƒ>‚ÿ MÐ5;1!šã›š¬DLŠ¶Ø¥ÑB!µ¤ÇŒ(×ÊÈ2}Æ´ÏBêö ¨t×-àÚÐüÐôú|›Nº•\‚©~1Ãü—yñg °²ˆo`ròOí—øRyÖ¼#ë�ôö¸BªkjV(�í ÜÈ0øÒ­G¹•ìLv;1ˆë`w·ñ2l¥ÍRŒ¦AREªÍtŸ7 ¨SS­�O¶¹t˜�\¿¾#„�nso â0Ñ�6³“kf C˜¡}žšÎL„vH4*dÁµ¢BÖ Œ‹ hZ‹ò \7€€ãܶhafdx¸7Ý="ˆ“ÕVMU\÷m?�ëšÅ|h4�ñRz§S×IÀFjÿÜNëµ¹o2ýF)B LQÂ`@?;4B c0ßlB©˜ßÜ�pñ%A†î€$ZDóÔ�|½x" ,›i{ÙRHA~D–BŠøI%*Í=§Õ¨>+Úƒ×Ç2þ9!´´Ær€pÑHiKöƒ8Ñ®�üe�Ü7êP4=÷þH½{ØmM!ñ±3hR œ(§HE÷¾§Â½‡™€ï“>¦ÚWá£buuõz»¾æ×Ñ%S òq44!XRçS 0Oæëв�Yß×±ãÇOk ‚B L¡ÈIW‰‘0©}˜‰6sµ½ó�æ7|ölä•o�B¡PS”ŒÔ¹ˆÏ… �ÝäœTlÿþ3ý`zzº�ðz%/…˜B±Mà«r³zÉEä^.ÂâW‚ùN !¦‹$’™AðóHJ®RÕ2 ¥g*�ÙhOP+iYÄü©Û„£]kÿäo€!Hbnv¶UïÆÞóšJÙ´J ™Yˆüį')¼2Eÿ*”ÀJ†¼zŽY�^#t™ù6Jbù—”™ÌÛF¶Åö@c9h"˜I‰D¥|�”´ó�Ü#Ó#Üwßý�Œ]‘q@êfú-mpo5¦ðPaôLæDbs;%YÆÏœ9 �IA<‘\ÓýFÒs3—yÇl}4Üߢ�$Ì WÎùßÙæ))ÛYEÒÍÙãÝ&ô�÷ììÐP¿;çR~‹�–¬R…€wŸŠì'‚¬û²#«=•)€™Ë§ié eQ‘™9J©fWü3HWÌåq³.¸¿ñéàc� ¨Ì½á›¹LnJ)ù�|Q®&A ÌÅÙ¯*Ð E)�w2˜¦úw0IJY…X#„BZRU‚¼”›½—ÌD³#�Ö&ÀëSP ¬¨@^>$/¤1RM‰Î¬ʲ?e¬VFÒÖšÚÚR�š*Š]JÛ)é½�'�T:�=…”_$ö•c6Ëäo eŽ�û¤äÇëSPÛs¤æÒ“Ì\ÌdHÈt,ûHž;@.Älçb_Ú–6‘!>íj Åî@Ä‘áaÊèl(Áƒy_Kg!¿ø�ææ+L€ÙÞ}L•X^Ô÷UÀBM9üIÉ¥—jRÀž.’]Ô‘®Ü*ºÌg‚€$¢hRtj)Ù eX–´Hîþš’F¡Ø=lNÊÚÚ¾,ÌRÍH\L!�Šø¥åXLú'&:Ål(ß¼ÛR‹�uÌ£“cÈO)éºÜc…ƒ² £§3ã £SbFÀä@<ˆH¢›ØF•]‚/ȧ–êÈe_ÈŽÀIøÙÒÒ2!þ/©¾+¥ä±¹CŒrín¹AjdY¦u¹ÏŸ|ˆRVE±ÿ@øÄ/½lÞ1Êß0u€y†RQ`rr²�w˜l-hXòìè#{à/Cc“#� ¼ó ¦n—”i¡= âPÛ÷Á�rTteN˜›7OÂeY&ë¹µ(5žRÍ�¬gàD:£\†•lÓðÛÜãñS§nJÍîŸnÝnHËíhïRˆ3—m+vwR³ú™ËeÄ!åQ�¾RkX¥–FI5_¤¶å–pHÍz�®¼ƒ¢8ðÌàà‰|”¿É5*tª†X™w~í¥ü"D�²,swV¨Y&þ qÎC*sk“­­ÉW¢ÔHNŒÉHŠ$J›d»ps Èèxÿ“eãÑ„1ïÊ\>|8ç%ýN|7ñ-æHÑ’¤($„ƒ‰Šc¥xçvÏÅœ"ÕÀ %0E™#uj‚$ƹOÈ´Kpâ§t�ÿø?M|1›6$…,YÆ\uú‰'ºvz.…B¡¦(sdò/}FÅdÉ~ÑA>hBäd$…XS§Uì{y.…B¡¦(ubkhöœêØgy)ñ]µ¶Y;˜%�‡Éìòr’ùƒ;9—”\‚‰î2�Œ@  šCÕÕå&“É _×P__ä aÙl6 –1¯Ü¿ªØÖÜÔ”Ÿžžn*,,¬¡»L #!�V«µinΗ[P¾@:&·­µ5{àöI“'ïÛ:;; LjµÚAw˜@F BóbªT�N× BòdeÁ XUYYŽIXj---Æööv>a=Ö}³k×\Ìëjk‹1ÇzìGw˜@F B†¼üüúÖÖÖᨫ«+NNN¶”–•U”Œ_ÕÔØXŒ}ŒFcKFFŸ°M~LaQwb=ö£»hkkSo|õUê»ï.x䡇r¶mݪûðƒôe%ãçböùÝÍ·?ûôÓAïÔàœønOÛpâûA"ýÄ‚2W_n^^MmMMINnnƒXßi6ÆŽ[-öaIV—!''§™îANK.ûyyWW—zBi©ë:::OüÞ÷Ìòý¶~ýuÚÀâ¨;6 GœûÖÛn«ÇçƒhîZygÉËÿze�§ýgÏ™cÁµÙ~¾dɨ¿—Œ@P0`-™ÚÚŒ]��zº,/–ÿýÁû»ÆO˜`Û`�É÷ýýÿ»µÖ`0 Š‹b¬шómß¶M7kölþYz&Õ✠Ê5«,I‚O=í4ó Ï?Ÿ�››kÇ RÃ\wÒ)'›Ö¯[Ÿ�‘ ‘@P8ò jןÓôzSsss–$÷’–aÛG~`»\áHˆ=¼ñÚkX^K¯¾ª^N^ž°ôò+Êÿpç]E‚¨~xú÷§`ÝÏ~òÓ)Ë—-+Áz�Ö]±ä—¥ß™=gÖN;}Æ/.½´Ûıªªø>XÞòÕ–´Ysf›åçÄ1˜„»rÞ¼yfÈÿIF (:�Î’––æ"(Èà»»»udTcÆ×îË�Òc¢;»HOOïżæða�?Ç}úßO¸eK«³³“[òï¼ý¶AÄÍŽÿÎñ�™™™ŽI“'[A`’%ïÑÚ‡õ'–çŸtRçÚÇÿî@L $÷çWWãb»·s�F qˆEg�Å;(�?ö·{ò’¥ïÀ¢ZxêÂö˯¼¢Á]ôá ÿˈƒ}ôé'»p®�;vèWÞ~{±|ß’’Y`B”U5PÃß$åP–ÔŽpYÒ¯Ý@ÜëüÿùŸæ ÿügâN°|`Q�”†#¤E‹Ïjyê‰'ó÷íÝ›+ ±,( Ý…îHMMuÀmi<öÏÍ˳áØ…âW_~©Ï/pºÅüÛo¾IÁq#ÅèˆÀ¡úàÁò¾¾>µ¯M"WýÔiÓ¶Ó¯ý¸ç¾{kÎøÑ¦ /¿ll¨oÐäççÙA^P‚Ð aÇ~X.Ÿ4‰ÇÊ@>X¿{÷È –DîÇ`ŽÏB½øôºg+žX»6G�Öi§ŸfZûøßyžWQq±½¶¶ÎÞP_§A\í’Ë.ãªC�Ú¬Ù³Ì�ü� ýýý[è§&ÂQƒ±$–� /~¿Ó“3¡´tYa„@Ò[xÒÉ3î¼ûÕçžwžÉÓv¨×>õdd÷d�Q†„„$鯒 1'�)͵Iˆ>@¤«ÌÛvä‘J^D`�@ äIÌî@Ü+�Ø—© �•ˆ+ sÈ9@9yB¸¾û¥_2"°J��=€ ¥‘Ü×ûSÇO®µ ÁA\X`(]2Þ 3 ’ùü³Ïô×_{mI däï1 Ί}ûRè‘#¢ ©³ õ¦�>ü(IÂXžqÜqVº;d�…(ç�‚‘o¾ûÎî`X]ȇxø/å‹ò)B(‘œ¬aÉ)¦V©Xw·�uuu³ÔÔd>57wÉ×%iYº^ÇÔjs8úø18–0: ÝbéÝw <“\|€6ɸî1¬÷$R…q0âÀ{öégr~}ÍòOäK )rÎ¹å˜ Ë ŠXbŠPŠ‚–Øþ§?®*BÂŽcÚ QŽóvNÁ_äåg±’ñy.3d¦¹ÈjLÎàZ¼òu™†4~,'@é¸Ò²×gBp�w^�«—^U*ŠÔÂåˆöëÝǼy]pþÏÊý-ñDˆS ¥KÎ=ï<�ÖÒ5Ë~]úÈc­‚ZDƒÏ›6Á‡`GM°�o¼¾½*�Nø»1ô€ÜC�°×_{Ý(,<<¸ÞÎI øƒDD­-ƒ,- Žƒf4¦³Æ†Ö°\7:}(G„eT˜X>Ñz÷ªU5x?иÿö†%±âÁxfýú*Ì—-_Þ„¼'´ˆ—�¼`�ÉS¼ á‹K/»´9�!Dqd�‰^�'ë åN„Ôs|SiY™E¸��.ª;{ʳàå霂?€Û/K"ay�p#Â:ƒ1\@åq¦ÿ{ÿ?{ôút¬lÃ;õ¿wÜ^,ëg¤G¡,,tpQüV°™a�Há¥û¾ô‹9•û+u¢;�lD Ü ÆÆ¡Ÿšm€ÅÔÓÓË ³Yù¤"NDþ`Úô6yÊX–””ÈŽ4G®ÍÊ[1¼¼? �;< á~à ?ÖÉ;ž8V¸õAZ¿»ù–âíÛ¶ëáÒÇr$þ/\J' ²ëÑ™q£œ<0bý™‹µÀ2 TDFˆ#ûù’_4£"³»ëãÞˆõ˜ÃÝ1\ò�€fÀ�œ“@ðd�UUÖ³êƒ�Ü X<6‡[T¾âÛoªÙÞ=‡™ÙlñûØ`^ŠÝß~Ëß ¸õ1‡2ï&T}'ŸrФµyófý“Oÿƒ»å06æˆ1#–}ãM7Õ¯yøáj¤Á€á%�K?R©)µ55®8®QîÝùbùþééz®µ¡¡Q#ߟ0zÄ| LÔáB¯ä—ž^Ÿæ€ï±ª5«Wç›Í�j¬»÷þû�t>(‡ DB/ãÚ¸oÍ9 „á÷¬1!è°÷𡞸ڰÇ~lÙ“ÒÄgjëäñ4NW¢/HMKë½æºëš± ‰:WPèA¦>0ºo5bÌ�¯ý{U0*7 ½lQ”¶££#Váy?ýiËgþˆÇµ:¤A�¦×;Ð`�(‚  MÀv‰äZÂ��k b¾B˜!Šù&$À ñ^v°°(›H *BXPûjù|byw/B¨‘"ˆ‡73s‡…åHËø Ë Ä‡8v8ô÷;UÝãJJ*ÜÔôe%ã犑y 쀵„ Øîž’‚õ3J~„žÎ yío®k 9:Y`Aaè¶Ú�q¯TÆ­(“©ÓeUí¯¨åÄÉ<,/�•°®0×IH $'?6@\««³3q$¢Á0õ°¼Ü÷Ãz¡¦§‚:ƳQÚuAÑHåd¾ ¥¥Ãë6�˜7y=¬K"´H¿f5Ôx�Ô WÚp¸~ÅŠ†[nºyÜ{ï¾×‰xbcp/b=Ĉ�AÑx‰'˜À» 9U��µÑ‹˜t!"@ºfõƒÅJ½> ê&üþ„øƒ¯.Äp#X.D¹´Ý“Õ%*T@èP}ð Ö]ä$DP¾¬Ç:ƒÁÐ;ÚøÈ #+õY¹}åÕdyÆ™†À*æÖ, ë6*'á=¹ÅÎRZí®ë#b#¹ Åv¤iˆB×›j×Óú@¾ÂòRZ[¡¯µ²D«ƒ —JˆñÈÖ2åx²X''0! êã�>Ò y¼R0uÚ4‹§Q€£©­@gFˆc#¡ªk ê†¯íÙ§Ÿ1SÁm"0�@ÄžyÁý¦¨zû™¶£Ç•,M #!AôºˆPEC,×ÏSN¥{¸è 6·Ò£EF B‰þ~›"¯K§ÓQé3˜1«h"[X>‡tzf²˜ÙöÚý죊­®í؆Iާ?‹U·8 ”óÙ’ñÏX/€ub_a8dgg7=z4_©×¦V«I=„¶BlÇ1ò㨭 5üÙõœ„žùâm¶@z¸î8ëJþpž÷·[øŠîŽEW°;ßzÒãñxø~sÚCÀ_œðcE=”‡Cm³Ù´òÞ4ÖY,�F£±iµÚArH¬ÇvìïK†ýÛZ[�…EE5ôù‡¼üüzLÁ8—ÙlÖª®.OII1—–•‘hAAm¶Í*.g3%"”˜ÒÚ "°(zH+ß|‚/RÒØ¶ÿ÷,{õW÷²ñ·ýĵ�ØîŽsfžÂ¼ë%;WZ޸㿊üA0ÍMMù¢Qklh(hoo7fdd´4wuñÞÉøñU +4‚õuu%ØÖÖÖfì±Û5bÛpÙÝÝ�¢äßy8Â&BÙV`_Üš^âm>›¬�tCƒ U¼ß5¬‰‘r‘@v ¹UUåi Î%—ÎCv_søpIOO�Û‹"�ainΗˆÌ≰‡#f�°du¥À²é{2³²šDú5%à 6¦gdïÖ¡ÖÆ! ÷9B)ѸcY¤®DK[ái�\j¯ä¶‚Œ Ò’Ç�`�È-’áö•Ã=éV4ìÃñžþÀÿY[SS",E“ø?†#æÂÂÂÄÁ¹a›72“ˆËÔÜÔTœ=fL=qÞ7;’‚Ý«× ùÝâDhàqà8‘GE �ârÂUC  ”¬Ä*¸½3HË“ÔÞ“µ â‹”$=PêÂrRxXYðT ®%�eÁÊ’»ÑDlI^à™�¢p-ŠcÅyäey+:@ #(h˜ÝãRJ€J­î…`$\ª<Ä·ìvû°#×Bî�IÈèýN¨5QÏ0¿  ÚÛù”j¡†ˆñ@:?ä’óáÖã\òuÞŽ#�¢hˆ«,Gš››«He® ×G��y\¹tisjjª"K€Q[§Øø ì›6±ëÃ>ufÃË/ß{ç]#–'”–Z~ÿÿn­ ôº ƒcöœ94\;� à}Üñí7ÛƒÑV7s¦ùÚß\׌뢶"Ž LàÔÓNUðüÙ§Ÿv‘×gþ¨åîU«j233©P+�à›[s-ªÞþ°¶‚lÐ^456j9�,`<òÐC9kV?X,ÈëÑÇ«Ž•ÿ-9YÃ}}¬ÇÞëú twÛí#_—ššÌçöž^×qjx&TUéRZ•ç­‡5N+¦& ,9"1"°ˆ`ù²e%rË+VÈ+/?‹�鬫«›”ÉÔÉZùz ú`ã }ź’ñy|�æ}ù>Ô<ˆð”ŒòܱL¯u*4í½=ÌÒccÍæVfî¶ Ù.ðõá½®å¥L“˜ÄªŽÔ1“õX›4wìdÖÐ~”Õ·Çwx⥠/W<·n�±££#èíÈ[o¼i!à=,,,ôë�KOOï½ä²ËÂZŸòä Lþùϸ‰ÀˆÀ"J^·¯¼£úçK–ÄD�Ö$M"'¯Ã‡›™¹ÃÙp«Õ¾kw@V 3SZVÀrr ü\Ñ�“ }²Žåè³XyÎØA„d¶YXEÓá!Ç‚¸0a»A—6ˆÀNÀ­~Íu×…äa¨««Óà}œ7ož9ÞÅ .¼ öé?1´µµ©)äЀ–1L^ƒ{¥:q9}£>\�ÑX]UGj¹%–Ÿ‘=âþ†=ß×déäË„ðbÊ”)¼·µy󿍏ùp#Â¥ÚÕÕ¥~ãµ× ô �…è)Å:y!nu¤ÙÄ †46±¼ˆ[Pþ®C¸a}p=F3ZºÚ™Ns¬l¢V�Ä $BÃdLÍp­Ç2¬¯NiR«TÜ‚#„óO:‰'emߺ-jz—^v)·Fìoô �…œ¼.8ÿgå /ä�Īå4KVUYÏÌf #XaQ¶ÏÇöô8 çPI ù˜œØï\ªUjNr°¾,önnu’~‹F#¶mݽ‡ÅçœcB["Äô+�…”¼  Â÷ôºg+b•¼˪«=ÊZZ:¸5ô9ú†ÄÃð¤%w#Ħ¶NÖ*‹xZ4#C""XV6G�‘a‚uˆ±§JÇrÁ,0�*ü€0ó'͉֮†ëEÜëÌE‹x;òð_ʧ_�,,äË ƒ $CfŸc‚,„tH\„‚”0ç*Ŷ¡%u°^Ÿ®s�(ÎÌå–UsGÛ°ûa({‹ÝƉ˜0#:M2µa„˜ aD4\óÕ¿ºšnºsÇýÁ4ô+�yòƒÀâ_ˆeqK¬Î)ÿQ!¦bš7U€ ýÇò÷ßO±°#ndôñH^œ„콃ò¼Ü—"&O€ËS´bW}ÓJ–‹ÊÑ7XÙ\+‘܃rôJûT4æû à¸=�Õ®ÏØ.G´*3£?_ò‹æoX¡é…s–-_Þ òôóö³ÄÖ1IVX=H�~I²Àˆ¼~2xÈç1¹“—“Ôº]ÛÅ$ŽqßûbÜ�ë Áǹç�g‚˜#š¬0$2‹J /<ÿ|6ýŠD`D^Bœâî?­âæ/¬°h‰+‰¢¾¸æh‰ß�y„Y4°ÂVÞ~{q´\s´YŽD`D^!øß;nçÃmút“!Zr¬®^ö«z²ÂˆÀˆ¼„8Þßóÿçx¥‹Û~kI4rK…†¢Çô+�yqŠ[~ÿ»zQéâÞ?Ýua…½ðÜóäF$W,ùei¼‘W¿YA“óv«Tª°Ê�»,©«W1!ø€„þλÿP�eT~�†S°Âéb \ú‰À¼…y‘ä¥Óéý¿edd„¥4WZZ/7”àèç£ñ*e$®ÑhlÔÌ�ÕÏ?i>ÿÍo¹éæqÑàJ¼à¢ ©Èoˆ�Ðßß¿%VÈKT•àÁÕUxÐcù‡Û_Q1Åf³é´Z­%/?¿VIצV«á"X‡Ã¡nii1ö9AIÊooo7öôôhÒ%Ö$%”€*�Ãêû`6›õ‡ª«ËSRRÌ¥eeñÐh�´žtò Ä–»ç¾{k¢åzc¹h8XÈ+�ºÚÚbé¥ÈA¿düø ¥[cÑ„ªÊÊr«ÕªWRR¡×ë?Še<°ñÕW 7Þ°¢ËkŸz²Bé£ ¯ºûî‚§žx2¢ŽM›¿ØEoZpõ.ÄGz('žÈ ÖÈ Ë……ÕD^„x„Ü• ªD”Á¢¡VˆÀAÑ5«,Žò²X,º¦ÆFþÿfgg7 =„xÅš‡®ŽU" µB6„¼îZyg –Qý9ÖÉ ±žºÚÚq}}}j¸‹òòóëéñ%Ä3ÜU‰J·läC­�ÇùìŸï X�×£�=Vë?TÍáÃ%m$%%ÙKÆ�¯¢G—@pºÅð%Jw%ʇZyú©§rè׋Cy-¹ìçåPô >Z<�WsssNgg§ËÅcÇVAåG�.�àÄÝ«VÕ@ ®Äoº‰{NP‹¼Œ3Cï ¹ ¯ ¥¥–'ŸþGÌ["ˆ{575qk3'7·†DÂ`À•(*Ö+Ý•+LˆOhÀË8#0y‰¨—6¼\ ƒÛĽjæRa$ìæää4Ó#K dôÑR+qÉå—óëð’¬°x 0äzÉKDÅ:yˆ{!©q¯â±c«éq%¼#Zj%Ò€—qF`H¹^k~¨*êRÜ‹@ðÑT+ñÜóÎåbj%Æ ÷È`Ç2r½”žq PÜ‹@-1KpþÃ�w)õ:åC­¼ñÚkúåb�ÀЃºã¶ÿ-Ár<äz"ß Ë÷"üÇÊ»îª�+ùVJ®/†Z¡"¿1H`0«¯YöëÒx’ËuuuÅÈ÷B�CŠ{þJ?Qù¢JuÑ->瓈ÙÁÓD¿\ Æõ 3;äò€Éd2t´·ó#Ž„ÑãÖÛn«.ºÇ}T‘ƒIÊËK=ûô3”Ø+ц×ë‘ÇþZŠC¸ëëêJìæh¨„N (7ýî>Ì bèJ•«ËËK‘¤ÞðáT�ø·ôò+Êå*«~-–#±z•x}Jß.ÇåW^Ñ „0´=ö¶_xñEìÅç_`Jº>¬ƒé÷ã'çœ[rp¿f%½¿¿¸ôÒRTæ öËÿíŠu!Æ‹h°Ûì)£=öw7ßR|ß=÷”·�:11Ÿ¶Çîö‘ ôë %®ýÍu JÿÏûéOi€Ë@,0¥\Œè-¡LTx°Uæ!™÷Wu(îÙßÖ®esŽŸKOt€h9r„Ùl6–=f ÓhµQÐù±±£Ò5k¥k5J×i¬}üq¶öo�²À”Ò®(¹ð÷üy'Ì@Ìÿú7Ô\sÝu¤<öбÀäq¯{ï¿ïP<� "…$óBè¬0%—n’úž{>l‚¸æMöÆñ¾ÔžÄ}Ç~ÁV„*‚Àp„ý·7ÝX•6€Æ††!™/*.®fB”cîÜãÙ•W_e?ñ{ßSŒI^ºéñ¿=®HE¢\R?ÚbÄ 佡ìâj­~¸ýW 4ÙÇ@É,ì·}Û¶ VG‰8�‰|/nFŸ4ß/q/¸�=ÊI;7/¯F«ÕÚGs”¤Aƒ‘_@ƒ¼"¸±}Í56¥UÌVØ;o½eTb^Ý‘¦×;öìÙ£‹õç-1Ò€¢›"ß C„ÇË‹.¯¶a4GMÚ ü³ÙØÛÛK\BHñæëo°††zneE[¼„ŠØ: ‚£t“;ÊW.]Ú 7'&‰dkü £à8ü�÷Üwo�§í°ì>ÿì3=¬cy°MŸ~š¶è¬³LHwß¿¨¨È&¿_p¾õ曆ù'�Ôééü]|ñQœÖ`mm­Ö[,Tl—_BIøÜÞÞ®ÎÈÈp`=¾ï“ÿþ—[¥'ŸrŠY~�µÀð£è&–1žO¼Ä½ä®Cª¶A5¶nùš}wö>ɱléU|„¾à­7Þà�¯¿Þ•÷áÒË.å1f¥–nBè„åçÖ­óÛ ƒ› ÑŠÜ ‹"¸ð¶|µ%MnáUUVêà[ûøß ~pÚé3DŒä"ö‡Uµ3Ö£böÃþ8Nž¢òB(¨ººZëÜw£Ñ[úÜœ¨’òчeà{D%ìÿ§?®*ºñ†¥8®çÜÅgOÅo†iÇŽƒ¬ÊˆÆíÁãøÄC‘^@î:,(,¬¦j„X³Ò®X²D§Ä„°"DœI©•êɾþÚë~ß?T,‰�T@ ¬G%üÏkŸz²â_¯m¬�+1sóòl›6± ÚÞI‘,+ÌA.Pmb´Ï04@„÷ßso1îáGŸ~² ÇÁsæïuâÞÃZÄwþßûÿÙÒþë#�ºˆ®©±QûÀƒ««`É!v†j*‹ŸÕòæ»ïìF±fELEÜTÜ Œã//¸Üuh0L�ž=#4ûöQëI˜|`�Áb–>c½;ð¼aÛÇ~4h=\ŒÛ¾Þª†kH‰ÿ£ˆ3=±v­"K7AÌ�9,)I,ˆ ¤’À9`Ea»'#Aj‡xºxìXND‰°Þ@8¾¬dü\á%ƒmviY™ExË@€þþ�ï¼ý6'IXv8?þWLb;΢‚«pÙòåM eXf O:y†»À%"10˜…Â´Äø=ñâ:Ä_Âu˜_PPŒsJ IŠÔãRwš;©&ŒAN€Ù<¸=ƒ‹ðë-[û•SŒW!\†s�?ž�uöb×~/>÷<_/€m·ßygTüÿ"Îôé?Qdñ\´…°|p�/½ø’ÑE6ÚU4ú ª÷Þ}¯S�Bù¤IVXehü}ñtÍš=›'Dubôh±Ä·£ÂÀZr?¾æðaî†ìììô(–™:m??r}Q«‚”E5އÿòP¾üˆ�ýö†Ü´³º›„± ‰¸4G�á¾÷ì1cêG«:$Á¯–. øRç‹m\ûw¶_?,´ /¾ ¥âÿÜ^¢¼ÛŸüð‡&“Þž€X,ªÔ´´^�ˆÿ¯Á`èŹ@hsõú4Ç3ë×W G¢ÂmX¹¿R‡óá¼ ’__³¼ñ)XCX'')¸ü`˜Àýˆx•7Ã=ÿë#�Z°/b`]��‰pz"W¸?1è§°ôN;ý4SD-00©üýùÁÕÕñÒpÔÖÔ”PÂ2!P8féêbºÔT¦Vm¤gŒuww³Di›§J"Kuµk™« ëý÷Þ/8u!ÓëõÜJƒu«íã�>â…bÿÕýöyóæ)6¦}ò‚&4Îÿþ¿ÿS$�ášî¿ç^¿IöéuÏVìÚ¹“—¥›qÜqVa½Á*CÌJú�ô»¿ýVwæ�l†X.))±É-"ç^Ђóutt¨§MŸn×6nܸ=P-B…h2™Ô[ˆïù÷ïïBÜ ß!ß&΋ïÁ±/pÁ·ß|“’žžîÀõº_€óÀb“ÚO�ô}‡Ü-Ò°&âBårÈX†I±Z­ü‡ vÂ2òÀ¾{ÂÉèã‚´šXRR’‹¤z%b3µµqrÃú1¹žóu—^}ŒÀàN �y‚>Íš©IÏ£-]Á£) a�mߺM¯Ôk$ûê+¯}%04îÞ\ްªpù¹äòv´Åîrwoçs_/·œÜÏ#¶aînayZçë5„UÄeL[7œ‹“³k˜”ììì†`»¡¬Bâ(Ü:¡zë«x`Ð:oþ‘€À¿þ»Ça>�Ez:¯}ØÓÓú:�±OGo/'/•JŲ²³Gu^‘ /âdÞ„Aøíð»a?3 ®hD¥«A²˜£J½RäTÂJ`"ÿ£¥ÆSÎ\‡R¯Øž—ŸµjK¨ËÞ’ÈJæ ¯Š ÿÕ�hì0¡¼yÅoé- YY×§¦¥yt-ú‚³ŸÍç %ä‡5Ô{.ä«íôS¸âi^ñ/9„®0¥’¬È Câ5=ñž6"¬/!›�ë 9_Rï‰KP‘óÍÿ zã‹Î^ÌI zህ �/5XhPC¦éÓ¸« �Ú¥^$ÍË¥ã+8i­¸ñFöâóÏ»zò8 µ�­ý;W·!–"H瀕²Ä~÷¯^Moì@R +a�ñu‰‰Ü:ódYÉc_‹/vƱæïºçë_|ÁÏ*ŸÄ·7ßxƒåç Ú¿‹¨Ê±`áÂAä…õo¼þšnñâÅF%—…CŒB‰¯¾ünDEƤÏ>çì–5«Ô½ÿŸÿâ¥Äžb YÙñf}I�.�÷!ç+T#,#¬ªªR÷Û›n i/Ä„† dƒä¤ƒÏÈ뢋/qYV ˆïþÕæÊ5�™Ü-2Ã~8Ö£áÄ2€óV,Ü7ðÝf"/YY-.ÜŸ=÷^ûrY\2i¼ž!ùs$?N¾¿§c…¥Ž<°Ù³g+z,”$Â|û¶íŠ�ƒ¡´“D`ÅÂ�/í¦?‰ ÑݯŒÏBy/ÖWKK‹Â�`æ|y±ŒRÐ`„# Ê3ôæAPîŃaM‰8æòWŸÃñÞ®ä%�£ðs Xc¡ŽïEíË«R±�Îe}ét:º)>bÈé‘°«Ô8®‘܈ 0È'Q{KdM‹¬wä%ÄC/Â�¦ÆF^;,++«9r¾DìkÁÂS¹µ…ù õ§.TÁòjW”<É–Ÿcîñô†Ž€4½Ó€�¬|º~¢lb'!=W"àFÄnDúÅÂD`�F"ù ‰s(,)²Þ§L™bA^ÊHaŠÕ›+ 7KÏET -Ìåëájzáùç¸ëóÛï\9â9'N*ççÂ1p[ÁêÂ2&�0=2 KNIqYb‘†Çó†I“'óÜ#¥–½àFĜԈž‘Ðßß’ÒÒm Ö•§m0‹_ÚðrE,Zc¨¸±¿¢b–Ç•”TèCœƒû\/æâ³ÏÖÛÕrRb‰*Ÿ^šÐEË‘#ø Q-Åc"p0Ðmµ_(ø! �k2$&&šÓõú ¥¿«èL£ªªS Ê„R¯ó‡§ Ò�n_yG5‰9ÜžµP�7%EàcŽòâ½¹šNÚ¨¸¡C2g¨Æƒ¸B^ïNI€µ±G¨H,”°KäØÚ¢Ì6Ä�J†Ì̸hüÆ�Ç]ûžêù) O]ØÛ¼y³ž,L ×RUñúÇ×þ½*VÉËl6ëCUq#Ü€¤]©€e¸@–…:Ÿ÷'&±¾Tå„5º-Leëâ ÑñQáé=J¾N”SBÝ@¥ ŽYE)Åç5?TË壸l^"è¨nq†J5›%$(ç½q8>Œ‰g¥_­a½écÔ‘ص+àó’&Æs?ÊA->ùè¼ò}„X ÕÒQüUŒŒub´ák®»Îc®—(ì‹ý¡á:0¬‰R:ÚòľV”�„´Ç‚… ]7µcùÆC6/†J §pƒÆ#( �Œ†\ÑõëÖ§ ÄòÂsÏ犢°íWä” `&NG‡YýÀý÷»‚Á·Ütó¸¢âb»œì �Æ{ƒs‹*çP"bÝÌiÓgíÞ½G§4/j#bþÞ»ï‘.ÃC€˜&÷"�±ÈæÅP)�͇s”åpæ�¡Æœ¹s;å£9cL,4Þ &_ŽÇà¸pµÁRÃy0䇼€-:Ñ]rq åþì'?�"òS!8Ã:ì¯ÄvO8ñÞùÿäã�‰ÀÂE`â�¼÷þûÅòM<ÒÜœÛÓÓ£‰%Ù<�n@L�†Zžó„ûŒ�aBGÍ×N3†ªÇ˜ƒ°æ< Ùw"kôtüÕË~U¯Ä½ a¸AÎô´„‰ÀЛñgTÑh´¾Z[[¹ÛUÒ#Eˆg’†Æ µÈy‚Ì}ÖœÙ~Ÿñ1Œ<±|¢Õ[Ì}å]wÕ@T&_‡8“’U~‚t¤'Í ¯"˜ßždðá.ô¤”.…õ%’–�FcدÕßñÀZZZ™Ñ˜ôëHO×±ÉSƲ/7ïôyïžÃ¬£ÃâqÝiY/­3KË{¤u„cHèía*«™%ô;X_R2ëÇ”˜Ä·©»œÆƒC¦b”¯Kèéfj«³ÝïW'±>mªëØ�{\‚0j”N‚lB0�ñ!¶…ñ¾`­x"1¬[zõUõ¨5(·¾”üL|ç»ß5ƒÜ©¸¯|‘"/ßí-š¬¯Á½MÆ{ûí·Ù† ¯p" @B||ÛøÆJvëÿ^ÈöU=å"ªuÏßÌçòu×þæ¶ñÍ•|þèß®a_m{„�÷ÓùôF B²˜X¢©Ñù’Jd¤iØÏ;Ž8?wµóiЋ,[—ØÖ$-›\ëq¬Êª|ý”°ˆNÿþ÷M /�û`ŽÑ×=o«®®N#Fñ…åvÿ=÷#]ÃÔ¯¼ýöboßW"¬®h°¾œÄ~t+¹±b,0�ú¥#rak÷+þæ ë IË‘°¾FƒÿøÇìöÛï`~ø;á„y|š8qô¿ñ/~ùÖa¶°sÏZé²²„Åå .»ø^>ôoײ[o»ˆ½úÊ&z+epIíU*')ù(½wÉôÓÓ4`js+ëKQn»E`i™³6!$ìðþˆ1» �b ^„W²®PŠÂ0¨ !Ú¸{Õ*^02z¸± ‡Ÿõ£3§'=‡Õ…Ž2ÈNéÏ‚ˆS ŽåÐLÐÌ:žŠ„Žd}åäæ6DËuÃ}Òúâ‹Í® ëŽ;î86sæq£"³ÂÂlöÝy“¹ûÐòr‡¹ÃBÖ0H6ůczºY‚£‡õéÂC^�ä�•OšÄkBDqæ¢E-bTb|F¹'±ß“Oÿ£ê¹u댨³züwŽïÜøÆë»±¬¯}{÷¦ ¾%Ž»éw·Ô@zî�Àp�h¹cÑð Ìš=‹»‘ÛFÆñÀb rë+%£¼Á×ñÀöïßÏ,+Ü-C܇ø ‹ “ôÿ°ë¯¿Îçïø¡×$òšÄ]ƒ_nÞÇVýá¿âYëž¿…éÓS8 .ÿÕ#ô`¹Ae³°„^;Swµ3Gj†Çu1mÍn§5–˜ÄzÓ²Âr½£ �±¼A¾ç¾{ A$¯Ub‚ûÏ=9ëŸY¿¾J¾.Hw7¤;yì¯QS`AÄÁ”<'˜ e%㪠1ˆ’¬/È‹wîØáÊ«­­å„¢ª¨ØÏZ[[|ŽwÁ2;ÿüŸróuµGÙ¹‹W²Ó0›]{�3®uÚ‚›}'À¿¼ÆÒ%»æ7çðšpEX•°$C!V 7ÔíGœdÈ$Ú nôäŒãb�¤£5ÒTË?<“g´\+â`kV?Hq0,å`'K9àl mù)Ì:!�õ%Ów¨º|»¶ÁÊ·ÉÝŽú­ÎÆÓ<'kÈ:ì—¾uhãÚ“¼4! &� ëK«ÕZ"i}IV•®»»›ÿf<ù�§½î‹Æ<+ËÈÊË'r‚úðÃ]ĆÏW_½tÔ±0¸ »zÿßÛ¸ã'?�ÏþóÛø6�“€X®«ƒ·Æi- ÕbG‡•[qÂyá^<ðÀ}1ñ‚z"šÊ­ìS‚Ãî1ÆÅk.êôœ ±A¶ó“À ¨1u�׳ì·j™Êê`5×Nf½Ñ€ÜòÖ`¶‚f—ÈM,7^:�“œ~k‹kq˜Ëü¿ÁõrÔ/_Ð?XðèÒ Þ0¹õ•e4†Í„ohhÐTVÐíÞ½[_SS›RUUÅoTC£S©V[WËôéœŒŠŠŠ8QeeeqâòDLhälyùcuÉñ}Éòª«mánCXaÀæ/öñϰÎ`YíÙãôanF¬—£°(›“ˆporúuëÖsC,/–�"À�Íòrè�Lmnáñ1GÚ± K }§ûÑÞÍŽ0FXÿÕýöyóæ…­c·|Ù²yÍÕH œC�PÌO@,­§ç1Óü1lü];Yêîvfž›Å ÄÂr•‘=¼—6áû Ø&¾ƒ»æ68‹wXK•UqÜd2‘÷ëªêÀÁ”={öè÷ï¯Ô·µµ 1K333í .´äååJ=±¹š ¥¥>¹Íà2¼ì²KºÎ)SÇrbB k¯DT¿»ùI—uÙ%÷qeáºçnæJŽ»kت»_pî‰AvBÉ!6ܦëÖ=Çç‚”£"Ë#�iuÌž7�çz�¼ú5ÉÌnÈsåzÁƒlž»5Z¿Ý�� y`þ ÃH“Õd¸LÄÁ¤¶AÇ⣎�õ¥¨9‰Á}xtQ‘k=\Œ°¶`e�D`£AJÕ×Ãn5ቚ‡ÁÎûaíÚõMÚÞ½ûôû++õÂ5(Gii©¹¸¸È:uêTsYéK~~>hfYï;ݰ¸@RYï7º,©Á–•–%nm É�äÀ’ÚBF`¦¶6îª@ÅùÑ¿mÛvý—_}e¨¨ØŸV__¯óFX3fLï”×�ù¶£ÉîÈÍËc;vìBb"Ÿ ë- ·8…îSáBåÏÌ@ŒypˆC y`ß�>0JóömÛtñ<>˜ß10(Ÿ2}/‡uMÍà¢ý×­¬}þ™á3¶qkÌàzÈ‘Ôfwm÷Ûm$sÂ×o+(¤¾êÉÌÉ�’B�myLNN“¯VÖçŸa€[p×7ß ñÁ%8iRyçôiÓÌ£µ°|Í‹5”K¤ƒxËe—1Nb›7oæsép�º S@h°Ì$‹—ï#RZZœ Ý@II ›XVÊN<ñN�= ¾ç�)A|­@¡bÆA#ó‡@”ƒ %¸A\ 1µD\ˆAŒ´žî$ó\#—Íç­? í›Ã265s+(@f9/ÜÁÚ\Â4uûXRk}Ȭ¯£G�ò NÏÈhn¼/aeI�©ÁÝ-ÑÅĉeæã�?Þ4kæqH€ØôwÏ‹GÀâÂ2B­G�âb?þñ™ƒö¡ÁÚÂ$¶9-²JN~ ´êêj>ýû?ïs+±BXgäj .B!¾H”:ƆϚ™¦ÁêêtwHm”<Ä�v+u·‰ïƒí¥ oQÁû¹M®˜롞–ôH`Ê”)Ü?T‰ççÈ'CÌKäfáa€õ+Š7싊$âÒ±”f'ãÀÜ,×C«½v2|€¼ìÒ¾8Æ=n&ÿ_ÑvÆÕ¬à¯W±Ôo>r} �ïhoçOqvvv³»•…XÖÖ¯·<‰/`eÍ™=Ë$õèMBtA @2°¼Pïñ•W^ñ­'+#4àömÛØ7ß~ë²Ð6l¨å)Df¡CÕê­£>¢.O2Ù¥6戫}AgmÎÁÛ�i؆Îv›Ô¹n—:Ðb»+%è@ç�4±N¡¦ÞÊÏ�ï°¤pÒÔ‡(Þ?„�£re\+}"°ú+Ç„d^=y¯Å°Ì0ùó¾ÀV8‰üãÇü!vw%o`ŽÄe�NgùäÓMäcyŠe…ÂÊ"øOdW]µtTÇI¿›2yÓ¥¥±½{÷±�;wº¬39™A«o´ùs±ŠHä�¹Ä‚Ž3”ÒPÂêê‘,%A^B�Nó¸û¾eY‘5Ÿ?|•�—¼Ó-¾#…EÆó!r�Eô_½ÁRw}ÈTÝCž–s~ˉ-˜Ø¶m[î�YMmmâÁƒÕCtúÂÊ µøÂüÌç{¬×3³ÙÌúû÷KSt–Ìñ€”F#ZÑIÄ$ªõ#v†sÁ5 —£3ïl½49Ý—¢²/d¦R9G0’×*Œ%#,±µž¥K︵ìx&Èzïq–,uRÍßYÌ'_k ž tž—Ló�UóÇ6x‹Ä¶hƒr WmŸLaÈøïó,{㜤Baq‰ŠÕÕÕº}û*ÒDÅ ñN+Kj°LÈÇŠ´•¥W‡Ùlô'Ì,:{1{ñ¹ç%òR^l ä*ö uî5 A4p úS˜Ø«›JFføXe 3|'ˆ Ó† )ƒÈÌë¹t:féêb===Š»¯ ×Ô´ÈŽ>�ìâ?_Äç™quM_èô°Hï;â݈q�”ëi|Ó™B�Òv¢"bô‚´äèKNä³hD~~žöí7ߤ�yAé­ÛuÁˆw=÷FÖ~ÊÅ~ZQC‹_~óí·|]Íᚋժv#«c¤™‘ÁÊÊJÍÓ§Oo™yÜ s<IJVÜx#+È/`æNå½g-^Ì}}lÍš‡Iâ5b’å…YÁÎ ÷!&gÿ9¡aY OÂóFf ‰1¹¹Ìn³)¯1HJrYˆ‘È Säsâ]i!U¤…ŽkJå– qøÞµ4H 1{_GÌJî Ll³ ‰ÇG &MžlEEŽÚÚ:-‹SD�¦­ÛÇêýw¿�»ïþÊ}ÙùX………ÈÛKJJ,*Ö_ “ÌõZÄ¿âéá¸ðß; °(Ðø©ÕáÄ{Ñ¢3Ùã�×zLf>õÔSCŸ™¡z?&Xc /_ÉL£�Í6'Ð<0¼ßp‚Ä0� Âêšq*·ÊF‚ˆOÁ=‘b^ 1X_òxÈ Œ¶Å4\�¢1挑‰ôŸÑ¦ü„S§Mãí”ÈD`^ ´™áJ€Ñ_ q*÷u(Ë$‘’c̘1¶Üœ»deYäî@ˆ7êëê*•¼”�Ö'YCV‹…éRSÃú½ÂEKÌ�Ä ¶@™)_ÜzÁâlçŸ_ÄÉ .E!þÀuùb™Å F;Ø N¤d…eɈJ,#6æ¬ãõ\y¢9=«ˆ[e‰&;/<ŽØ„"."ÃvHçÅvˆÓF E ãÆ�ãž ¦ÆF²À¼?ʑĕ÷Ô .äðó&â¸ûwVøû]掞|,Y`Š­(é<°þþ~ÓÁÜÑÛËÃkÔƒ8ÜI Ä‹(Rä!òÒD’µ72Cå ñ¼»°²à*�[]É8 4 õ äf�œðYĸ@F\9(YVHBç\NN°´ ©ááóRãòrÿŽHBT¢�g%bÔ¹Ô…O\ÿåë,±-tcI"÷«³³“XfVÖQjZ¼tp$ËKºW.K,‰!ÞàZ$6œ[¢ŒPW®—“âu‚Ðp=B5#þ'ÁΈ‰R_�¼ß£Í “�nÁŸÇdõ�‚âØÇœ™5ì9†‹‰¹G¤‘››k�Å«1*õÑð‰‡ºê<†MÁ¹_ÒD È^ÈK®¦D €ˆ�Ä y»œØ„[Ï™!Ž+djâIÓâzvîÜåÊ1ÜžÂ:sî_U„h<+˜Üa/(g¦S.Y¥�hEn^ž�,° ¤™ÔÎò�ÀÃ\îCƒAÑIC•æ yÙívw«•»"r/@B (oVš 3XB /�‡SIøŸ@feeelÆ´i.'äV#&TyfÂBŸEmGAhÎ úeŠï,Tã�A‘b«ùí Db2”Ošdݹc‡>^k"*~DfO=4$8râ´šyýCó‚‚ 2Ü`XgÂ}˜‘‘aRòª<0o1/éû$÷¡Ûo6 Ô€ –VW§Ó2Ç2È­7Â&ÈÀW¸ .¾úê+ä *²Ã9Ã%¶Ö™³Íé^¬¨R7ÈåÈØæAÿ» 4 æ kMv$€AZ;;»ÔLé²X‘oÙÒÚªAù5sG»ßçCÑîŒ�Ÿ£—P†x—ÒG݈̰¶`iaY-,0Xb Æp*R£ÌÍÀ´´4½"ƒ!‘:þ¸¬-n «T,M¯wÅÄ"éF  ¨¢‚|vÚÂ…¬®¡�íÙ³ÇåÚÃ$JGÍ›7/¬2xAh‚˜Å°0ÇȬΥºtïÌý<‚€åcŸ9‰¯Ð¯kÂwÊSðý‹•=ÒÌ>ß´IŸ=&gnvNNPïÈË>L™¸x‘yÐ=ÉȈëZ«Q7"3‚¹c^\É,Óò|0HéQzÆIªú øÇ…û05-Mñ>åHæ�õH „…<0X¤Ýˆ�"9YËæ}÷;ìä“O$}——ŽJFXIáYȇ…L*‚Ä*]y ²ÛeÖQH®­¾¦†™ÛÛYzz†«(€.%ÅQ<¶Ø*Ï·ÜòÕWº¥—_1¤¸€7:ªè°†jĉhŬٳ¹†8˜ˆôˆÌðçH×!rÂð%f`…ãá¶Ùl©æ­¯Á`P¼©<0XYBÄ‘$#«¤ë,V²©t”³¼Ô©jE©7—¡ -XJ¨)ÐÒâ­Úàÿ4� ç•••Å×½òòö¯šÃìŒ3~Ðpëm·ÕëC\Û|Ñ�A/ÔíÈÌÌ$ Ì(eDfXXîJÃféÁ:܇RÃe¦×cKx€¼P:*œå£" yé(w%#be‘ˆ—ù9±…Ê(�û[qžà�À…¹mëV�Hn&óÖ óˆÌ¥+æ„õ†H‚~à¡è¤Wc(Fí5ý BIP©¸èÁàí¶Z™>=}%£È/“ÇËDuúp$K+ Á ¥£àF„Wd†âÝ>5fq4"ó 6²¬Ì¢ÉdŠ;%bT�Èì+Î8óG>çrY-'�EAü ˆD”ˆ¨º�¸W´» 1¼É‘æfÖa2±dÉbêHÆF ©­­�—ÇÊ’¹Ê<Á}¨¸Ý]Œ'œpÄúhÎ�æ�!Î%œ4$"ƒÛЫ,žFd&øA`‘‘yíSOVúOúšà‡òQ"þ¥r"f¨î<0þ{vw;­/�&*Õ†r@A™™™ÉŽ9ÂóÛÄ2H-ÙGW |¨&�-\Œ¨°!/.ì�Ô?ž ­¯du�¼PÑ·b<ŒÈ,‡ÔyµK‹ÇdfÅ—’ ç"õº¹ 壨)ñn}‰$æXÿ”räf�Èm4€ IÕî.Æc`¾â²Üâ¹öá«Û7HIŒåÑÖ<�õ™ ã6W5‘^™cù_:�Žâ_>X_‘ü0˜HÏÈà±.yAbĽ‚ñ?Ê]Œ›7íøÅ V"i9ªÒ:˜#EÏUÅîã~‰X8ªðŒT..^Fd&DáˆÌ¡Dww7o=’4[´\s8óÀäÖ—699¦~{UjZj`òÏêÄDþ9˜€‹µ1 £È/Cb$J ²‹VáG ã�¡½ÚêÝéÒãCžg¼ŒÈìê|¥§ó—²®®.îŠúz%0Þ{ç]c$/ÎñE0 â_R/Ø-?`8óÀPiH–È+–¬/T‰°ÂÜU‡Á†¼2=\аÄDÅ|%å–…p¶˜Ï/#2 L›>�·W õ D`�>öXõ‡|ÑJ졎!iY^ëPúÌc`J}9’€ëP(c%öåÉ ƒ`®Ää0Y˜òB¾î‘[‰òUáD¨Reb}DfÂ.Ä@ äÙ§ŸæÜh|áá@SSSA�Ý®1fg7K ‰‹´Ôjµ䆤f(srršãù!qÙò¾ÐÀ+QyÒ‘�M�˜-ŠJˆ�éûj­º ?0‰!V0Eƒß×<0´-ÁöòÄˈÌmmm<�7\Žƒhª««µ±®JLèïïߪ“ÿäœsË›µ›6±K‰ÿ<ÈißÞ½3¤Z-521OJJ²ÁƒqBiiM©? : õ ‹Ï>[“_šq’И‹*ôÁŽ í&SP'TV]N^Þ¨]®¢|ÈL^øu¸¾m«^Ÿæ8ýûß7¥gd8n¼aEéq3gš‘ºñÕ�ƪÊJÝÆ7^ß=~„˜V(†ŒÀÐøÁi§ÏÀ2r¹”Úhii16Ô×—xhx%ãÇWDƒ;±Ãl.—&$Å<á:ì–&X]¨8¯ÄØWý@‘Úþ$ëW)Ç:TÙœý Ž ·«\Žïj@\�ˆ—)Å*# �¶ð¤“gx«‚ûÊ;ª•êù 곪?pÿý.sàO\U$Ø%Þ£ÑØrôÈ‘!à��úx�…a„åîÙ¼6 „½Ö§UÎ5jë‚ûøŒ$Çu)I:ö÷ᚇªòTÑ–X<�WÈ Ö—Ü·} ªJW—Ro*ÈJn…¡�o¼Ç½Pm^¸åP.J£Â�h„\Žk d6¸ã+³ÊÍ ñ6"³·8⵿¹®!^Þ…�tWåÖ—ÀŸï X• ›—¡ø\T\\-? òÀ®X²DW±o_ÐÉ sR¼º%Dˆ�]uÕRv×]w²E‹~Ì ±2Xd·ß~[³æ!îz DXmmmXz<¢�ôïðÛ›n¬‰Ä÷Þ½jU�œD \‰\taóSO<™oÖWÐ-0XX·ýþÖ,Ë{Eׯ¸¡fBi©eÓ§› BZ¯4dggs—annn=‹c€¼ GiAq/c}Å£U&W5<ãše¿.EHDÉ׸lùò&XaRÛe§b¾à�×^3\tÉÅM—\vY ze%ã9Y]sÝu͘ð ¼õæ›%Þ6rrsk¢Éú y‰�*‘ï ä•ÐÓÇúëOL`ýjÏ–¤ÊÖÇú’¤m2c‚£Ÿ%ôö…È×áOP’ˆÄÝ*ƒ‚Qä–ÉÇ,CÆ`Æx`J¼IMMMšÇÿöxî=÷Ý[£ÔëV˜()OiØÌiÓgÁuøïÞßê|$·µ¶fGêF¢~"�áþÞ`å�ÉÉ nCë�}Ovò I:jcª�“ŠÏû%~ê1j¹Üžõõ³DsSwöJǨ¹ä¥†xÍ<‰Èø¶Žf+<ÿ“¯Ã¹9ùõ8‰ ßἆc¡¡B –Œ>(�Éꉉ1Ë‚YP8œ2úP¹V(ÖÍGŸ~²k¸ÄáHCX‰±ž÷V@¨óÀ@^U••S‘ˆÉ›™��Ý�—Ÿvd y`B°áÈ1ÚÈk$s‘ŠDXšænNV(ÞšØngj‹ƒÙ³�„KM#íïHØ>�yü7(‘Àä�yj•Å�Éóˀ˯¼¢áÖÛn‹ëð‚éÀòâä¥RK=áðWIOpØYBo„*iÑtß@ZKÔ8ĘX¨¶“�¬ªþD‰¨$"™Áòr¤'9­1æL‚v¤%r‚êÍHŠ‹—_^PXn•¹†ø#Ú‡yñ"–/ðÒ /æ Ö¤d+Œ,ÊòêÉþ›Øq„©Û�DÕ½‚»õa�!Aä‹‚ âU*»ƒ» a¥©zú�Ï‹Æml(鳚õ¸¶Ç @NÞF’…Ab¨Œ?RéªHæ� «î¾»±/ù:„BîýÓ=¡Œ…á{·|µ%b�`Œì Y~4‘4 håðw<0–Pò@²¸@^±*•‡ðBmîqÆÂ’Õà 0Ç Ÿ¾Õë0/Ãt<°H²yX[ž¶møç?s.¸ð‚–PÈêËRøHaçŽ|>�–@F=üÉi�¼@b† ‰µ�)‡Zå*Ÿi%ív*'S%0U7Ç:Ú*K/_�í â ¸]êDiÙ›’1­2yé*QPËo½õ6ŸDéªXI@Ð-7ݰo¼–âd"V& »Ëñc¡£œœ äÀ<--Íw(&¨ý¶oÛ¦ •( *X Ànd½Ï8�EBú6¢Ü?æ5‡GŒÕ=œ¼lÅS¹Ð"éh Kh?"õÊ‹G>Önã¤2SÙ,üXNT^†5GAà£G�ìè±ÛµÁP3ÂÒ²Ûl®‚¼ñbuy%1�Š©¬Ò#™!ý†z'Q�´ H„ˆ½_‡ÎùJÀÒB¼ îGmS7·ä@^â¸x…Ü*‘¹ ?Ìí¬tâDGiÙD[´ýoîVÕçŸ}Æ ±!±2õx“ªÇ-�Mš<ÙŠê᪋6bƒ+J§•à¢O«“µ$–Ð7Œç @ähÔŒÿç»'ÌÓJ/™Æ�¸0¥p"ÖåÏàŠ±wi;rÀYÌ £a V[ßòwOòùx±Ê< ?„ãcãëo”|¹åëœüàûÍó¿w¢I¯×G­z¯°°pX †øã&)ŒÀ”ˆ„n wúC*P&Ø%+¦ßÁz3¼{UAŽFÍ·F‡ÙlìííÕÀUâ‚ÂPN\°¸bVOˆ8ÜG’–ˆÌ!YgêúúzÝ3Ï<["MlÆô馓O9¹å䓿›bé…ø£AÃ�‡‘¡Œ,�‘¤µmv>< ÝÒvùÈÑYï79F¬<¹ #S0Û9{ÍÅ~ß/YW*É:RIDæHR– N"-5Ü„"Æ%ˆ ɳ …@à^<é¤ù–®ÎÎêÏ?ÿ°é³Ï� ²]ß|cÀôÔSÿpwÜ ÓñÇoŠ2s‰/² ˜ù;‹G}žäª¯YJ¥³¦ˆ+oýfž“Åc±yëðØXíµ“ùöŒMGXö[µ|;€åöùcØÑEÎÄóÌ÷QÏ7�¹Ö �Xb›�é·¶òsôfF¯ñ7æÈÃ]€p#ŽÜ:æfëWkXoú×zB©¾•sLèé–”&廊Ѳ^Ãè¶6›Mg–,¯®®.£¼  ÄE!�å�é¾dIóO~r^óþýûu|ø‘Q²Ì mmmš/¿üʈé…^´Ïœyœé´S¶Lœ81ª�푬õŒ«G}|Ö{�»LÀ<×ÈIÈ:^Ï Äë „²iñ¶ _Ç×uM5 ±ÔÜá<_·Þ8� |‰8<@—Ü·woÄ5¶ˆa Y—¢çJC ÜŠ˜«l]^EˆOõ�2†„Ø%òŽþ˜ -‹Åbp8<æõØ£�²ªÊ*ö›®gS§O�«Ayð”r ¨�Ù›o½�³sç.Nf}ôq¦ÌÌ̘!39R$ËÊVPÎÛš”+«C²Ô¼µ1Ãv“ՒõÕÌÅF‚¼,>kfú¯[F$°XCH lÚôé܉k6w*R¯íHÍà„¥i<ÀÕ†X†Ä^na©$Rƒûs�WoV¡Ïçï—ÅÄ bD|K#ÓÖìþúµdaº»»õV«Õ ·´0gJJŠ©j¥~ÇŽ»½‡È‹ x€œn¸þ7ÕXþäÓM†-[¶b•ÌŠþ|ÓÖíãäë,{ã|}¦dmºíÍI „”ºÛ$Í[YÛéùÎ�&»³à´»8°-Þó~&‡ÎÀÉÉ#TjW ­Åbáç)SÄñÙšb“´!1 �€ìÚõMÚÖmÛ UUUzÈó1½ýö;ùp5Â:›`´y`‘€Lzï"5ˆC*+«tLyì‘Gr¥Ušq%%uR’ä&'8iî"9¿û¶^bd½)jf. ÿ³–Übg)­vÅVMŠ�¥§G~ œƒÔ %³TiêƆVÖÕÕͦM/aGšM¬¹ù¯Êו–H=.g Ç™;,ƒöõH�¶çOä•>úú‚þ¿QX`°Z,LŸžîl´9â$0é³!3“Wø'óÁÈ‹$ ìÒýõÏ<ƒ|3Í/ù‹Z¿‡+±±±‰Ç÷@r¯oÜh¨«9Ë%ÖÀ€•5¿}ÁïqÀä–Ò«¿º—™°²€g¾x{Ðg�sfžÂ-¯ë%;WZÞ¸ã¿1y�CN`ã'Là­}$ë!‚| Ü82 Ì@�vGä{£),¤g«™VÖ€‘Ëê¥I|FµzO‰ÌÃA:‘§>¸|ˆ q�DX&‹™­<ëJ~Œ°È†³ÚˆÀŠ––> ’¹]U•õܲRI“œ¸€ŠŠZ—Š±Ú‡˜ÙHÕð;[‡?¾Ûÿ‚ÙŠÉ“ÈXIUEú¥ŽB8ÇëÓR¹) ÚóÀäèì}R/JEAF��-åÒz(ý%0ˆ2– ³!ö”´A1¯iáó/N\Ķ¿¼†l4�W»d�±Ï?ûLn L`¤˜—<îåêUK„æNjÃP�ªá'i4>gR�¨ªâ=²Ñ´YN¥jõÖ€¯î?�D„¸,0A`°¬`uÍ*.çËb?`¦´�8V~^Èó%º&ó†ÂÂB{<<ð*•Ê¡Õjwä%ݯj>„èbܽjôï=Æ ”VÖ‚‰³¹äñ,XRw¾ù„Ë ²Â>h`âD$m;4�÷%w3>#}6HÖˆëqœ\Jb;̉À¼¡¨¨ˆKé÷íÝÓõx@^¥eeô:âáL)¸èâ‹�¾ô‹9]]fµ»»0È“’=d…ø—/€;Q¸AnòÄf�h•“……ÀŠÇŽåXè Eb\®ð{ýý‘SáQAIˆ·<0¤ m|ãõÝ/<ÿ|v çÙòÕ–4Ýè R � žµªdf1"3•ô4.W¸àOì*Xˆ–ñÀ�6�hjâ ÜÈ�ëÓ$ó4,kkv3GÆÖ›~lˆtù:¤!E!?V§´¯‘tÔÆT6ÇÀ5«X_Ššõê�©NÍ=LeuHÿWëÓª¥{‘ä‚àX '[;è|öó¤0Ä9äûÂKb·Þv[} çXu÷ÝD` %°Ùsæp‚ U2³D�¦n«µA:ĆϥØÕðHpôpòÂð1» .¡ýˆO£Uƒ¼™©Í­6òÄp‡‚dûîy9Ò“8i©;{Yb»�õ�È’Õ,©E"7{ëÉÒJë¤m=œ” ÅI͈í¶Bg?P[gq}�@B¤¦¦:@`Û¶nÕ B &òòóGݲÙl\Á§ÕjíôH„ȃ5Å&ré@`,CÓ„ Ž´DN`*ÉÚêW'ðA {35.²Â2OÝÙ#­‹n+ŠòÀƒÖÜË 6·†¿nuDåý �•–•Y`"›L&Å ˜ÖÞÞnès8!ÁH!ZÇCÎÜ�þìŸÈŽ0•ÅY‚‹'…G `�q"Ó%2µåØò Ë*UÚÖýÅ�c% mÌsssÃÒ©=&éRGr\®ã¿s|TééÃF`"ìÛo¾I‰T.˜7´µ¶æ:õ˜œœ&µZU]‘hËKj>ľ_܇C¬7•Z²dº¹KËŠ&.‰�)õfh¸õEˆˆŽvn^^X‚ê�ˆA îž4y²5Ðk˜:mšåÜóÎ3EÓï6¹`Šªþa6›õ===¼ñ?ÒÜœ�VX4±,į|)£ÕŸpŒ ú“uNáF:㢎Dãgý_âSˆyÁ=W"â`ø¯ Þ€¸ÃeaÚöl†ÒóË�äÃ>ЃÀ‘D+ÂVÿFä‚A.ª¤ÐÜÔäªÉÒÚÚšKŒ^¥Ðå¦ÜÉ ÅNQ©_ 1¡†X?ôÒ>ýÅ[_ƒˆ,-I²û™J")ˆ8`‰%µIý¹¾~çÿkéuŠ>Òœ};ìƒÏ 96@vø %£ÒAã�…ú㪢MŸn2³P:~»ƒ„Ý£ƒïô÷¹ �‰\0¥Y_V«ÕÕJöõõ©ëêꊣéFŒŠ}û¢ö%앬27Ö6T:­«Ž#Î"È2¢ÁÁýˆŠýj�dÝŒ‰šÿOˆ5TÝÎøW�QËÉKÛÔÍ4ÍÝ\…kMÄÅ:5'1lƒ|s�›{ÜL‰y`µµµ¤é1ÐØ‹rWo¼öšWIîüy'ÌøÉ9ç–ÿðôïOùÅ¥—–ŽDN_Ýh¬®®ûï‡ïÄwûsLØÞˆY³gså¡’räÖ—@G{»Q"¶}”¡£%Ì¡3xÿ b{Þn]ñQ¬Ý,4{þD§ �¿v\T4.�Ä÷'óùÙs’eÿ¯JúS¸U–ÐÛ?T:¯Jp’®F­OßAˆÀâúóý¸:Ûë×­ÏñVù¤©©I³ió»°üÈCåöXu,܇°Y`™™™ùÍ�8y57çÈ­/9êëêJÈ•\ôûR­^åyˆq¬’ªÝûbuÉE -÷¶�”÷5\\Ìý;ÁCÍáÃÜJÑëÓ)êºþÚkKäyµ°Ä鸢âb{§ÙÌ�ƒÒrù²e%°Î6¾úªG „‡íØOÞnÃóƒc° IØòmX�ýaí‰kŸ±^nŠkÀ�Ÿ¿÷!¬>‰HŽ &ò¾Ž9R�’’b6df¶˜ÚÚŒ 3éÇ­q™;: Õ–R]CÁ?ÄJ˜p�CÝl€T÷r_¿áå—�ÞÚU�LG‡Y �Í“Oÿ£J¬¿{Õ*^|á‚óVž‘‘áp?~ÚôéÖk®»®îÊ+–ü²ô_¯mämâ†þ3s|1=ö裹’àÚ>xÿß\]m0Z@^ˆÕ=¾öïUp^zÑÅ“`‚ô®YöëÒ»ÿ´ª:�²b-0yof4LLØív­DN»APF£±E”€’Ökð¹düø*LÑ`…!ìÊ«¯²çäSëIˆ8�öëk®±)-U&V2X³úA�qú÷Þy×èÍ ;ñ{ß3Ÿpâ ü7ynÝ:gBA ©£®Åç´´4†»r?Ä‹ „îþ¹ç¾{9ù-¹üòf!Î{ýµ×� /(*áuÃô޻°]ÄÕRÓÒzq�øÞ“,0áYÁ~8�¢ Lôf"-¥G|K^uC“”Ä—‘Ì,Ö!,rÂà÷Fƒ‘_P@o7�Àëí駞ʹ~Å 5/ÿë•=—_y3eþIóMXFµ£‡ÿò�Çž,H9^°¾Ö>þwÞXÀ ¸fõê|¸‘§ëéûÎúÑ™Skkj4 @_®®L�—|¬¾ºº: Ȭ¤¤ÄHO×ÔÆ†•H�(‡¹Ò¤ô’Æ%þÝÝÝ)ôš%ÄðÌúõ.÷ßk׿Ãî»eË—7A�ëÆ› ‹ Ö–ßyë-ãŽo¿ÙŽå/>ÿbˆõõÖ›o->«.D_u S¸å‚’ÓN?ͲrÏU)Ê WÄK`ð±bÞÔØ¨(‰­fÀ…(š Âèoã�E õ A˜Ã çíž‹Ø'l¸zÙ¯8‘Ìš=ËŒøUš^ïÀ¹ÜËH!þuÛïo-Á2’¥aá�tMׯXÑ€¸ÖæÍ›õz}ºnËK.»¬ñ35PÐ×÷#Hq;AÊ'M²šÍ~‡lÂJ`¢WY§’�NÇ-C›Í¦‹¶‡X)ã�‰Z…J�(W.`xBìŒ&ß”“)JÞ°ö©'¹ðÃZ‰¸k*À’ñãùÿh°²þ÷ŽÛk±„øæ»ïì†ÕëIÔ‡”ŸS|?ŽÁ2âjhˆ}Eávˆ=à’DLnBÎ/T‰°0åß¡8Pªªô£b]*•Ê�Df‹Å¢„ ˆt˜F«ñ3•­Kêt)îþ¨CûˆKÏ àYˆ×FÄà»J,ÀÈ‹ ËS”†3&Öwœ²,/Ï;tè�F)hµZ ¤ôÒ”MièÓÓùÜnS^Gä*ý–!ýã˜1ÌÜÑÁú6¼K‚D^â·!ÄvíÜÉ-IJ‰eqÝV…�Ààg…é»ûÛouJª|œššÚ ë¶ZÑâ‘ï~$($ë—ÏCM:ÁDRRË2·ì_4Þ,<@Œ s%æ©Å4� Ÿ²ð1+†ÀÒÒÌG�Í—�´hú£u<0O°vuEmÃM÷Á‰XLéØ_±Ÿ·Ÿ¾ÊÛ‰À‚áSnhhT¬� ÌÑ2.X´�æ pAÚÜ�XÖhã³,Ýe ª²’÷ |PÚµAÒ.ŠøŽ$àˆu„=Ê+‚âP @XˆƒaUêé/Gò´L÷� ˆ:ƒJŠÓ  æJK-# 8ˆÀB1L·/Å'Ãl…q)_Wg'X„¬Ž+X‘¢º#ƒÆ =Dɧ‰å­ñ~/"C`Ãt�&ó:”@ óhŠƒÅÂx`í&“Oëb±ph<°ÐCT2"¡L„Ld|ïÞ½GQnD1â`¨X ? òÀÐ`(}<0o�¬]T@²ë°-^@÷�à+DóɧœB‰/5Ñø*éf †!V°ÜInÄ��3⊲ÂÒÓMÈØ`Z…^çСÛje†ÌL–œ’â²B€ ƒ�e lÇ„\+ºÑqb!Ìd2q‡u( "þ5kÎlJSˆ�‰ž”>¨ƒ¥¤žDFF†©¹©©X²À Ñ §�æ<°‘ Ñ ‹F=–K÷�òÀB Š FÄŠ¥atfÌwìØ¡(+ ã„ 9½Ô3(ý¤ñÀ„øÅ¿B`(Ÿ�9JJ)í¦d Üu7"="B|AiêhŠ)ˆÀ¦N�¢ÈÁ-9�edpí²p#ÒcB ø†XÈ)îãcEï½ûïPŸ¼`�‰ž´ØŒãŽã˜…p# 5bKK‹¢_ÄXÈ#Ä(,tØúõ×¼³�A"énD˜ÀD‰!äPÚ�1dfr7b»É¤h‹ö<0�02þ?{_ÞFu®=±eÙ²%K¶yw¤,¡¥%a)P({RàÒRèågi/-åïF{›–RJz�Òr) ð§�[Ö6�²”�²´¥š„‚'Šw)–-Y²eËÛÞcÎX‘mÙÚF£ï}žñŒf93žå¼çÛÕùO<é$&°t UGI`6›E.ÔŒ"—üª0Ù”¼×Ú5ýñÉ'¥ú�ójˆÀ´ìÈ÷y³Å"uÍ]]]~UŒÙ�8°+¿òåp&—ù  ”pA  ú_'}ú$?¿eûaHçɵìÈ”••yzý~{0ÐlL˜žê�12zгZ­šùÞß|ý )��qæ™ìÀ¡Ó²#€aˆ ƒÎ‡Ã£µkÔK=0ƒHm_�¢¢¢-–wI'ÒªBÄÃÀCѪ#Pj·KÒêéî.ç×…ÁÐ?‚Á ¦l`Ï=û¬”¾V�pД¤Èq` †~Áîó'0 Ê£Q†ïÃb«U6{ÜîJ~m }Bk¶ø—_zIعç�Ë¥�´H`UPá8JV©EˆklתÆ`h™ær¹¤ê“’,¤[·l•}ÍÊU«XÅ¢E¨8kÓ"�Q‹RâÀÐaTV±`ÈH?†ò>Zq€ÈdlÞ´Ém ðÙ}^ÃFÞ5}ø¡¦«öiQ ãz` †>ñ·¿þm¼ögŸ×6�Q@3‰Ë,…1Œt`Çöír]YU™öz[oüùÏÒþÅÙ秇a‰sñ õŠõÜߨÿS¹â2ì`é:,Ûïùͽ®ÊÊJ;IaG-ÿXƒ–®XqÌ1Ê=ë#—?qÔÑ oŸÛö×/W~�æóßrë�2öþ~ûºïØ¡ÐÚ÷;Ûv²}UWW‡çsü.מwÕ¿ç»Ù7Ün·t(ùÎ7¿U/¦„¶¯—íiM%5ÝHËúsƒÁ ¥0äHÔª644(-)i¤þ†·ÏmûD'ÜhÏç—–óbŸw3ñþa Êq`ñ�²o0fÆ‚±±±w´p!¿ºë.Ç�·ßQ»rÕJßo7nlÒòM46íÚuèèèhî"§“:º¬²“ˆËRWW犷­íÛ¶­˜�@ÞM×ÿ#žk¤ët>W-܇l<ñØcŽË¯¼¢cíºuí麎ÓN9uB‹n¸éF$Y~2Ñ‘£• !7Ñ];wi¾öla”�£½­Í™Í/Rm%‚¼ -€J©¤3 ±hœ}#6hF…Hn¢Ðûâ.>è °–o²stww;(G":r=¿(;—ñÿbª®©Ù‹lý°B•Z¿dIcgG‡t…™Ò©ÕfóRÅ~(KSPP0áþgÝSÜ/Üw<qï["ï)‚íååx&êç…ã𻦶օ�ömkk« ‡�8&//*q_6k´†gž~Ú6>¨_éãì"�d@Õjb_5ðñ—-\(U îÎÎZt z~QPR&Ïht.^ÜòríÙÓm?AhVÓAõõ�]ûöUAÝŠõ-ÍÍõè`±­Èl@MÇŸ_lðûýöZ!åÜÐð/�˜ÇãqDÞSÌñ[ý¼pŸåý.* Š�¡$B�—@ôc}eUU Úæ;¬-¼òò+’À>þ‰Oð "“ŒûRõQ­ÒF°�6öy<º/·BÒÕIƒ¹�Éû‰à±O8Ή †A’l6«Eæ«Õê¥bªö²2O_Ÿ÷^}O1Çoõ3¡û "ƒÄ…åP¿…ž#$2<#¾ÃûAµ �Nç`:Î�ä½ÿ|ÿ}Ùÿ�uöÙü�d�‘Þyë{[2ft^U]í¼«««’¤ ÆT€Äø.h�àø.LxPbž.†:y¯ÖÍ(L`€û< \’,n l&“IokK‹SÏ/ eÁ(xx8ŸFÿ±Ü#¨´H:à\’sîT'+5x»º–âbî=žÝSÌ¡ ˜í™˜Íf© ¡öÆsá;¬pòÞ &0àÈ£Ž”d@†ÌL ä˜Ã®ãóùt¿Ñë÷Û\{öÔ·µ¶.ª­«›S¨ƒsñâÆŽöö¸©£þôbÔ‡¸ïp̀ʚ†ð àÄ�{Š9l“³µ[T�8¦¥¹Ù)Úä;<4c�ŽóC}øÖ›oÉoƒÕ‡±As�Ì0\â!þãïÇ(Ý“ 7¶„²²²¨áЉƒlzy¿EJWäÁVQY9%nFíeÉ€~cä ™Äb¼6#ï-ÝS8ÕD;FC¦~Fx/ÕÇ€�F#“˜²?=U‰O5X}¨ ŒâÁ´ž1p«Çè6r}fìÔV�N¡>ÜÝÔÔ`�È)ÉH-ð ö�çÐ,$°œœ8Ûpg©�úðè+¸tJ¦âÁ ÂØŠ|`™r#1²%‡ŽžžG4½L$ÌxŽ„å ‡ÃÆP(d‚ª+šDÁ8ð Ä”¨öHë -%%%^ŽÅÛ�–æfãø=2§E{Bƒö‹>î2•À²ƒ½õæ›æLº™è`$Ç2ìDzzQâ%Œòá¾�)VçÆTõ_¢Z°¡áyrðòTPþÆ¥‡Jõ¹¹ö—Žì”SO•$@}™É¡–�w« F,xñ…d_ǵ¿t@`ÇŸp‚R@_&#ÜòŠ éì§½© ½¢­­-m¡;o¾þ†$0Vê€Àà�QšDëL»©PÑPl˜ÞT‰ †^ÑÑÞ! ,Õ‰|Y}¨3S‹ÒTV;Ó€Ø0V%2ŒÙÀêC•Ѧ²Ú™6‘ì—U‰ †öáîìLKÊ3Vê�ÀV¯Y#G#™”V*ð¸cU"ƒ‘!&úÌSYžÕ‡:%0õp0Ϥ´R‘@ÖV%2Œh`õ¡Ž ŒêáL¤•ÊH¨œ¡JäD¶ †ö�®<ˆ¬>Ô1�QBKJp™©@]¦â‰ÔIímmN½¿d02 éȃÈêC�X¦»Ó«Q]]ÝB¹‘œ_=#»ÁêC�˜úáÒÃÎT@•H%H�‰�j21ŒôcÇöí&Ì+«*S’Ø¥SžîOv,³úPÇvúgO—–IUš§rRRÜ®}ûªØµžÁÐz{{ei©êêꔕNaõ¡Î L]¥9“²ÓO$Q…k=ªçµžía Fö�J§œuÎÙ,}é™À€U'/¥°çž}VEÕ®õmmmµü2éÅ;ÿxGV¾8ô°Ã’. ©+/áâ‹»øîφL¸Èc�=6}ñk¯¾f]»n]Æ×‘"{Ø^—«¡×ï·{½Þ•‰gÌ PÃB’Å` ‘íâÙÄ52”ÒÒR×=Ë,X­Ö¤»Ñsåå,“ÀÎ9ï<)�ínj*ÌÔ¬‘@-&²‡u´·;Ù6?´47×'š¼¨ˆ9…Xæ  ¦L•OêÃsÏ;—­Ù@`%%%#zÈÊ ŒÎ©&:b¶‡ÍKÀ|¸ W*2hf"ð3Í `pŒy²ÓH©Õ‡çÊÐ9�zÈÊ (€Iña®={êù•œÆr(£íL F4°ú0K L�•£½<²‡Áf …,m­­ìÔÁ`¤äÝœŠ4RÚ(ã?Y}˜e†Ñ F-êQŒ^€ø0ªâ,ÈÙáõzíüj2©�Ïç“âd§‘‚ýžT•_¼ôR&°l"0õ¨…Œ z¼KJJ¤° F– g5"§!‰íåLñ£RXxxHéðwÉy¹¥DY^U?IH&c¾’» Wn§iò9¢Iåçæ@V–üB%ß�Ç7X'ߘqœÀЇ“uŽGyTJ_¬>L, ™vÁP#Þyûµ¤FÔÃË€JÍ~¿ßN1Mj SÇömÛÒâÔId '“L½· ®À@¿œÜ�I` ¶¦}­rûÈØˆÜ ›É¬ŒŒŽ*Þ>¿$°–7÷:EG{‡üî;üð¤©ßøóŸå€{Íùç³óF6K`zS#ÂY¢‘Wº ÖzyÙGFG$!�œ&%-!�Y å¤VÚ -J`°_NF!mEªúA²³p@}ˆdäpÓ_½f «³Y FRX!Ôˆ_ºì²ŒѨm\C§f®kAx@1ø:-k¼$6EÊä‰ …•~ñ“æòvLJgæüÂÉm }�lSGuTR4 ÷­_/c¿()9#Ë L�jD`4_;žó9:}áMB’êD5) (�îæ)ûØLãÉ^àôa7[¥*jDO ›{ #YýÈ›¯¿!5E\x!«¹ŸÊoDFâb‚dåÍœîÎVh–¶³VŸ[:v@íXhÌ—ªD†¾@Y8PX2íoÞ´ÉÖ××—‹ö“�g‘ ,ƒ woDFb`.(”îôõ kÄT­øBA¥]åm/Cl§ $¢Ã~û�?º§Hfêv1±K}悲p”WT &£ý_xAöOÇŸx"«™ÀöCïAÍŒøVp†å ú•míM“Þ‡´Ò•†œ\©*t«Ô…�ÆZz«“C¦^8©a€ý߇²_síµ~œ 5"É)ÖíÑœ5Ôö/µÇÈl´¶¶æc~ÌÇ� &ºmuæù£Ž>šG<,�MÅ%—^"I‹R´è ÄèßÐÝ®äyöÊy®èPLH¹}>¹^ õºœÁ~%¯«EþÆÇ*£KÉ`$\¸’ lFè±Ró´62$IiÔd‘“$¨}®Ém9ƒ}ìOë0Ï ”ëBy¬¡wŸ ²V~ûY�wþñŽ <ô°Ã*!¡?â•L`3B]©ùáßý®,ؘ±@’ÐpI…”À Å›7ý‘"›2b)=€ðŒl†ÕjM¨J‚2Ïìˆ#\¸’ lZPfçgþøtVÕÐZ0<ñM,ˆÝªDHbP!‚ÄŒlGÓ®]Ò�Þét&Ô ‘̫׬fõ!Øô@&¤hAªŠéÐõëóÉ Ÿ[JScsˆMÊõïS b’’\§Fb0£…y"¥$Î<Ï6'PŠJÙ¢wŒå•°c‘2\Z5§ã†Ä1ኃ”áâ…Ò„œ@t!‘ŽŒ)9ÃÚ™ÚÙÍ1Nd»”yþô3>ëåÌóÉ…AÿÄ•W]åA¼¥lÑ3F…Ô™rjTHSFBEHÛ ôK[YT$©m ßVfg—ÈËË #_£a@›ýÊãp7£M¸\.éB_¿dIB8(óügN;�¥/–Àfb,�ªê€7l°gÛC”ž‰ùEÒEêE¸Ëç (ÃÖ…SG+½ûÆ]ñÅ„cô F¬­«k‰iîÃÊÉ)++ëÈäR4zG2‚˜‘:Š3ϳ6g|á‹»‘àwó¦ÍöLÏPUjÊÍ“nð˜GÔƒ�À�E~ÔZ¬ å‰ÁåDõá‘Âý‚é˜�ЖRÝØÀ@K9dÊŒ¹"AÌ”:ꌳÎbç –ÀbÅZüóý÷-zŒ ƒÚ¶«™œ6¤›¼ '©FÌÉ=àXLÒñƒ8 ¥·7�Ðtœ:Š lÞ€Q¶Å„e��@À‚)Þ¶Ôµ×’…Tœƒ‘4~ô‘ óOw\B²Äsê(&°¸�­1azÆÎÆÆå}Á ¥×ï·}ôá‡Ëã!²];w Bœn;ªcχ°ÔmÎv†v�èJÌ0_`Ω£˜ÀæuLŒ©üxõ�ŠÊÊöêšš–²… Û½]]ó•€­,??Z‡�ÝMMËæÚæ>�§¼§»»,Ös0´ƒDVb†Ùæ ,sê¨ÔÁ ·ÆÓ'{̱é÷¿·³�¾ vI‡äÓÖÖV;80`‚Ç_eUU+:hýP8lÄþðP,¶Z}‹%дkWƒ£¼¼Ëm­­µâXìã\¼¸ ÛÐ.æ¶’¯Ñh CêÃ>bP,0™ú}==v¸ì‹óA¨^¯×î÷û娻¯¯Ï\¿dI£ú>ŸÏF„›'Ú«®®nÁù Eöˆ¶Fŵ¢½ü‚‚P]]�‹Ÿpz�ˆX-2[ÀŒÁ©£X›7¾ò_qcŽDšzOð›-@‡OdrÀ:�TAAAÿÁ ÿºŽööõz�‰ µ"5 *“$�Öa™æv»]ª€p,ˆ  ûâ| �ö³Z­r¢ã P#º;;kq ¶ášpm´=Øp}²=A¶h�Ÿtêðê+¯Hi‰*»Ç 2[�ƒÁؼ€ÑhBœÇ¨híºuí3šÔŽÝwAx@3×XX�–)®*Ôßo1 骳£C¦# …BZOÒ Tyb:ঊu2ï]ss³³¼¼¼}:•ŽUÇqy<G_ŸE�SaA8šéšùÙ@l$5:Ï;v©n›Î O�X>wG©‡ÙlŽ[úRì—Cx˜ÀR $Ð�aT¤uS«Åò<.Í]Ÿ‚„!aîÚ³§’˜€ªÂ"³yÒ{Œ–‡&ˆn¶{.FÞ�°_5íÚu(ìV³eÌhdWXT¨äˆã¸ëÈlüõ/‘ž†¥KCñ¶õÄã�Ké‹RÚ1R8è×ã?•IÎá#cì8Z$/dºÐ̽iLŽœ-Ÿ�ºLPíÑ41¢öARÂò„‡àž…XÂ1ŠÿQì2˜¯ÞíÜÁ`Е!Žƒ],²½Èý…ôåƒ ’¶áš ‘q—£-[âúîûE)ì�ÒŽï(K` A&9s #%)ƒ1=9…$é§°)Ái¤rƒš¤%±Þ6áÄq@™ ØÀ GL‘Ç€¨àˆA¿Õ瀪Sä1j‰‘ÎË]QjA1`ñ²¤Ø/¤²ã»šzäèõSgæ¸÷×÷jÞf¯µéÔWX©¶JTûm­­‹ô”1]z+z½vx.ÂIªYŽËbD"1`ûÅ–T¬9ÿ|isxî™gìÐUkùZ[[ZœóÉOûèì¡BÓÓ3'ɶ²’’’ÜÛ u_O Ç~1�%°}Q™ÊS¦@B€í$#ÕÂÙ ³££Ë´Ô_°¡ èU}<\Çéxr#¶oÛ¶B½ýŽÖ>ÐÛÛk+[¸ÐMd†óaR·‰sàu ¯ú·Öiλş8#[·l‘¹xcÀ8ö‹ ,é Ýô½÷üºJ+פp…z ¶-ĉN·Ë µ®}ûªàê�ýŒ*§Ô‰8–g ‚�lë ND-ÎOA·8ì9È*A9A|yFã I2‘¿ŒLƒßï—X<1`û¥ ôþ~ñÒK½ëïýM^6¼tŸ>ùä´�ÊáÉŠR âèî.SÁ"Æ ¤‚å€�šìee“ÎXF† Ê1))“° -ƒaPß®mtt4Wí¼ù{6@m)Ú7#P7V;žV¥»Tc¶ûÏF n�æ ÏŠ«?džvì�Xõ�-ÎLü�>üˆãª¯|yZEeê ?wþ²-ï½W˜ ²7dËK{Ùå—{@`(ù->ð–D”P˜СDs€ˆ zEǯîüÕv§é_§ œ�܆´Fê$µ3«$Žö›€˜«Þ‰Ìï�’t͘xžP C‡ô‰  &±é óùt¨ÐàP ìëZø–8¯ ˜×­[¶Z`—£A:ˆãÎÛo¯Äz2¥�äö™“OYŽÄç�Ž>wÞêwÜppêQHf7Ý|s i«þó»ß«Å±pZùöußi�ã ÚÆ½\¹jU�ÎõÃÜ\ƒØ8\$;ÜcóܳÏÚ˜ÀâF-”¥bo&e©O4æâ„ `Ï#òª¬ªrÍGêb$NjDÖ(¤é"1u¦�L­·ÜR©6KtÇ?ßcÑ—¤cüãÝZóË_Ü%Ï{ý�7´)`p~ÃM7ºÌËénØÉ\sõWëAL?¸å‡®7üvÆb° æ£W¬B¢ºóö;j~Ûm# B<�×Ï︽éÅ^°Ý|ӜǟpB`Û?ÿiRp.’Å jÒÎ(ìýñÚ³ŽÀ0Rzãõ×-­­­ùÑÄÞt]×gžéÓSÎ4rÁÇ2r 2yiF›$1ÄõeZº*|¿É$¯xA8R HHÕÕÕá ­É°šPAXµuuaú=ÜCx__ðoÿæAL,Òf]uù3^÷O~öS©9�‘­ñn°÷‘÷¦\÷ôÓ¶ÞÞÞ)üQd6ƒá,÷�o}«C½�Úb‹ñå_}ι‡’ª š !]΋‘Œ^ªE‹¤ &“)À9ý´Eb°AzÜîÚîîn9eÊõ«=îÚ¯:X3×el)eÏ´¦íü\x¡7VÝÃx3îSÞHJ€ ²,..> ÍGŸx¼Ú-~î|Û‹¯¼¼�T�‹9)ïž. ; ©Ñ‚\e°Ê¤™ëÊë +1A”×�Á!…T‡T)™¡@U ïRª �hÕqªZlæ‡9�Û·Ovh³¹§ƒè`¡ ëþl*Äé›ìb'Ÿr²ï°Ã¡–¤=ªjMžÝ?ýñOª>ù©O`?ƒJÓçó�_ÂîÎÎüc>~vR43º¶��¼Ú¯ÔÎè­ôåN¥äeýôóê ð€£%ñ"Q�ÌpÝO•3 ¼;ÚÛkÙf"ºý>_Æc? Ú£åXÜèaûºí'?­%—ùùœó–[omY·v­òÔ“OÙÅù !�!þ‹!ÃTc+)ñÁ]ygË+*¿ñ­o¶ÀTBjÌù†,d5�1’Üi÷õMêÓ|œ¨¶ÐbÏRa—ƒ½‰bß´vä`np°� yò››yQMGV»\{ÞUK]êß'žtR`õš5²ѯîºKÆÂ™¨÷‹ŒÓRoƒ³Êt¡G§ŸñYïË/½dƒD-Ö ¶2ØÏ’•@‚ Œ1oLͲ‘«,X �×illHüU3—Šóy�s%g�fîCîÀÈ)‘cì² BrªÝúÞ 9X �q<%d"ñ�ë®k‡ÉÙt^™·üøVW²þ?&0F\£zZ'/£†®n8-gÍËQF Ú$0FöCÞØßÿ¯µ­‰–„`ûšI�y͵×&UmÍÆ`02 °%ìï‡Ã•&¥ïPÛGÓž Rô�O1v„”�ÅÅ·r¡‡.€<»ÎÚo®¤u�£íŠ=Ї!ΡÞ?“‚“nC[r²íå‡ ^ðüŽÐŒûDnÏ#Y—£Ѫ×a,GN9<f0 8B ÛŒJÏ)•ò[­Z¿sò{µ¾µOþ-0(þãJ¡ ²E?Û!÷@jƈo›Ö •Œ·‰É´;8yC£ýy¶�Üðò‡2K—öœÐˆÒuv�xAK'GnŽ'öî'(±ÝsÁ"1³ÊbRh´§^G#>r•Ç9¯¹ VšøMc0ˆá’|ùbª_»E|~eDHY�¦@:ݧTÈýð‚ÀJÅw�oy&@JSKrt˜¦@®õwËÒ©xh·$+zÑAfØgïu‡ÍÚ&©ˆ$µä¾ÏˆðÞC–}Î2¢=�䢉PªI)°¢T±¼ÛÍ7‹ L_WJU`û˸­Ù$)‰e|Ø=;#>ØJÌJA�QNý}Š×Û«ä唊ÊR¥³£[Wó`;­U›ÜÀq=¾ 2N�“\Ï»½^U ˜‹+ºÑ�§”[J“qÜ2TúÃâïóOîÓP^7åìÓÒ³?ѹÓ^)ÛiíñÈc�Bc�RS☲.›`yÏ+í`ø~ý‚° )Ñ·Lö®ý$f`U¾N‘“�ÿ4T…–÷ºë[ñò�§Cý‡ÀgõËO™<Œ3ØË±Án/V**J%I�¸rrs„d3*È!G)**�óý„±�Q—ÍfV½ýò8Kq¡R__5eÿTÀj³yQ¦d×Î�‡F«µ6­„ ˆÇa)Q|ýAÅÓÛ#×Õ–”+Ë*+¹9ãïš%¿P )þ.9©É ûØ‹¬J~nžœï_Ÿ#�Ã<‚ªêyú>aÃ’£òž©É) =ƒÊp‰‘?B&0}*>¨GM¹SÔ Œ$Ž˜ñ +¾ž $#HWsˆ�ŽyAJK-�«ûÖÚÒR�,(]s‡;4 øB)Y5uµ * !�ÀýrRKT6“YJ¡ 5,3ÆAö)r¸€*ê :KUÙn°ƒUrÄ€Ga~{hR"“Xâwß2Ö°d"²Ö†Æ]Û[û¤Á/0 ÀXOR˜ôXì[´Ž“ì?±4Põç�f�Ú_~(I ªHHn°“1˜À2ÒãH¼Øp³�áÆÈ ^…�—4ÞYnÜ=iÆjHoäUH�¬žˆ�À„äu—½¬X’¤©ææØca?ƒÊDUb¬€Ä45cÈô)šà¬¡Þ†ß“í„ÃùÑREaÿù¤�›j“�:$xƒ~Å;쟔À\ÞIz€Yì—í©‹ˆ ߥ`𯲤=lOPzÃCXíŒoµåë‡HÉ ™åá°ÍÓP}˜6Go‹-JÙ­RÒ‹�—¤„ѕȌ¤¯6!¹AJ«¾o§tÙ•Žg×ð[#@<˜¤=LHR ¥X�1 :„Ô«_R%¥0�âl(¶Z½%Ò"§sRS;d@ÚRoSW­.)-íBY5YAúB~¤gÚ¾mÛœŠ#æL±ua¹Ýß5•´Mã\ê°”*v³Uª¡v$©-[A.ò“Rv„ßr ¤tæÁë„ ~¬ç`0�iâÅW¿˜xñÕ/?Fj$}E>Œ™¶G;#Š4æ JƒD˜ð<„Ó©± i ¿±ÈÏÏÏåØ~ÓåQ #¤)¬ÝoëˆPŽK˜¹RUØ¥R3BC[˜N¸Ý3L` F’BšÉÞ¢¢@æ©ä1:'§�dªEµãœÈOÕl6«öiˆ(Úzu[íL`Œ,G߃Á`°Æ`0 ò‹j¦ÃìäÂÆ`0ÓUƒ‹ŠŠFúúúrKT™5´\?%&°¤)bªîÛ©™ëÉë óÇ`Ä”§ÿÁ-?t=¸á·-^ßõ7ÞÐÊO‰ ,)øÔqǸïþJYprwPs×wÌÇ� ò«Ç`ÌŒÕkÖø0ñ�`d�}úä“/¾òò¶‡÷»2-’+®Oo÷|llTY°@KZ•±´œuÁÈ{F1L`ñañA…×®[×Î�8U$6¤¹«Ê3Sbu§D¿®;•±¸õ–[ª¸ÏÈ,dÍ`qÏîÝÆW_yÅ‚y:Îÿ¹óV7èõÞæååiÒ¸‡<ˆ©ª¢Œ  1Í}àâš´x]‰ú¦�8ìð#ܰÁžˆö`v`J` LSØòÞ{…×\ýÕú%/é_zÈ!¡ <à¸éæ›[ ¡Í·½£Ž>zÎùzþùþû½Þcq_·eû‡¢LYÎ(3]þLÆ3O?m[uÂñ¾—_zÉö¥Ë.ó* –Àô6ByýêžÿiúíÆ�MP`>_ò.üÜùËøµa0Ò�§ž|Ê~åUWy¶nÙjéé陬ðŸßý^-š_»új'&,«·mÞ´Éöï—\R�eõq~C[¢^ù›ÁXJ'ŽãO<ÑMb ¹níÚÚŽö©RüÒeÿî!�§ÓN9uÙÑ+V?úHúï;nw�ôH ˆùê5«½µuuáçÿô¼ ûÁ³ðê¯}Í=]›Œq´µ¶Ö ˜Ôë(M$…šÚZò ¢€d_0h¡b“^¯×îëé±#­“½¬Ì3[&xÚ_½…'!% Ýnwò:n´YÐ2Ïh ———·�ŒŒ„cRKXÈ�ØÙÑQEׇëÅùœ‹7M÷¿Òù#σk¨¨¬lŸíºÕ…8c½zœŠ÷ÀoRØŸ|rR Ã÷ø½ë¾»èÑ'oܺe‹ÔÀl|øwá~â±Ç�@o.²¿ºë.ÇE\ØðÂË/ý‹Ú…û>æÔÈ. æÒzK`)Ã;ÿxÇ|úgO�J šeË–õÿáÉÍ�÷oøM·ýä§µdÛÝÔTøÉO}2€m ¦Ÿßv[Öã7Íécyî™gìˆ �t7S›Œq CaaBÅcu=.¨¹ü~¿¬íŽNœ:tê�Þ^ÈAÓÒÞÖæ Ít 1й0¹öìYŠaX"jkk«%R"BÅ$Ž`_q�ѤQÕÃöœ Tÿ¯(»‚¶píÝ^¯ÿKäyÂCCF�Ýl×�ûCëÐnKssýl÷A¯€úƒS,{챨ÕÛ¿zÍ×:@:ðøÅ~o¼þú¤ õ–[o•ƒŽk®½ÖCd¨>ƒSjïÅ^°]ré%þr™ÀÒÑ!Fýß|ý ½ÀxÑÏ:çl/>Šý/ñ¸ä·w’¨¢At&ý$áÍÖ¦Þ@Î�@`^öH! $õºQ!í¨+!èøÑaƒì �•”–º»öí+ŸÏ9!)‰6úIr� l‘ç@¨æŒsç“T’‚DVPPЯ&¾2!õtwGu(˜¨5æAEn«««s‰÷Ôí¦ŠmâÿGi/[Ô‡�´  Ù¼i³ý­7ß²©Õ|V«ur`T\limmÍ�”²³Ù<âr¹¦ÜC N¡–±á›>ç¼óX‹Â–z@zŠsr`0¤‹ºèDc–H]èñx–âb_dy!Å ïóxÊ …ôCë„”Q¨®Žl2™B‘jÈhèëë3C͇‰Hv *ÄRï" É ®ðØSss³Stvõÿ ¢Áÿ "Âu)âÁ5F^ˆma‹ÊÎÑ®U} Ñ®›@׆û‡k�E…HÆ…¤J}MM+W­”jDÚGH§Fµ&æŒ3Ïô©�Ç„çîìÌ�—yÆYgy¿ýÍo9¡ždõ!XZð…‹/î zìÈmx1¡§ùµW_³žuöÙ1�´¦3èÆÓf&�¶ìT{{ç4H€Ú Ç8ŽT3bäì´•È!. Ñh ™ÍL±vÞ‚ °½AM "Ù¸@z !!u‚ATDø_ a�XrT#z»ºö±�b©'6ÓuãÚ±Õ@R=¨¾~Ö/¸f’–çZËL«P« §œzªO­F„T' Hh•U•aµü¦n¨EÌ×ÙŸ=ãЯ\ýQã¾.úüE^x_pá…ìݨåA´žÿ9m7<ô`ã�·ß^ {TyE…ì à”=8lVä˜�y,Þ‰—_yE ¿Ø_­¦æÛf¦dãq»kƒÁ  ¤kÙÚÒâ„ý Ë�2ÐQ �R»ÝM:!)lB}7+ÁE§)¡˜Lý‘ö,’ðpHZp¨€$¨V÷! ÇYm6/‹TвØåÐ�¤6!AŽ@�H× [–w755ˆ¶Gf uy ¨h×MÀµ‹ûõkEnî¬A· Ï U™nR+W­ ŠÁÀb�šNUôûëÿ÷Ú§Ó9Hý€z_8pÀ3NWjéjý÷7ªˆ?W úõ˜5‡ ,ƒ€‘^ØhÛî¾çW´õ»\{Þ¥e¼Àê—Îêh}õ6| ±´©€l„¤€ŠJt¨µj¼i;T¯×òQ«#Û“ZuÛ‘ ÊJÑA¹qä ‚(‡43Ÿk¶Ùl>wgg-ÚI€@Í‹OíL@:ÜÙØ¸ d�k…D²†-®¿¯’V?ý? \µ‡"ŽS·…¶:pºpF»GPUŠÁ€7ò¦®÷jÄhR¬ZÝHêò… Ýzú¦#בÃFäv.mÐñHxð�¯_[ç/ïjRL` ýú^—Ë) �ùlÁ¼¤~S»„ƒ$0ª;}’² u€h>úðÃå¢ó"kšMÚ›)…Ènô ExüUWW·Dž¨®©ÙKÒÈׇeØçˆl ¥Y#È„ ‰mÑ~ NHW�òhݵ=IzêûCnôêûƒýá= 0ña=Ô �»G/êÃXаtiHÜ糖��qĬÕ�?ny±ô¥},{‡o#À3¯§§Ç�”E‚g’®â$HB¤^‹Œ§"@=™¬kÈ€¼ ²„Z¶¯%üA¬ÒƒÁÆÈ:Pº"�ò&#­:fמ=õj©„ïüT@òkÞ»ña…ÉP0L` ÝŒúA.ds�Ób¼²Iu•îû�ðƒîîné^ÏäÅ`c0æتººº&³zÞ{‰p‹gĤõõõYŒ=:‘¶2JÉ¥Çÿq\p¥ïíí5 ¾k>ɵL`xýøG·Ö ò¹ÍNúôI~®ý“P®Á^¿ßÎw#u€½«láÂv=«VQ:eãCHïTlµŽlúýïíf‹eZï_˜nÈëÞõ¿™ÌD�,ÕÕÕÕ\ô2ÉD†Ü†æšC¶ÆÜ/Fr÷×óÿ‰ä'­:~ùko¾±M¿…äÛßÿ¯µ­ðÄ·®öŒü�ø/›Í6Lýeå˜î7µqäQGõsF&°´¥©¯®„uõ9çúþŽí[© m�ö‘ý”q/2¢ü­Oê õo´�ÀÁ@ ÷²Ë/÷°;.ƒ‘éëí·ß¶DJ[êõKœ‹W¨c.é7ÈïŠËþO=²r ·)¾e ^‘‘ûÑ@Výd‡¬ö¨Lñ޻˜€«Kh YQ‘‰># Þa„…D¼]!ѧ:Ù§ú7^h|È.�ßÈ´�9‰"ZŸŽ¡ßøP.ùÂÅK‘‚…3×}­“3Ò3ñß$´&‘ë‘�c¦„ÛÀÿ>ô�€‚ä�;ñ™?>mŸí»DHv?ùÙO[ ½A6~ Ú2Ïä3ÄÈ u…�™þªË¯@€©kºýÿüÚkTÆ2²\yôQÔ%cU%ƒŠ‹‹‡[[ÛȾ�Š�¬f:öÿ»¥££ÓˆÄ¾ø ;xdúH #ý/qW®˜¤S’Ûíæ�(Xê�œfP¨½• )5íÚUõÞ_ÿò—iË� 6Ø;vL&gE.ę΅}�`.µ‰#ˆ�_5#> â5Wet¦”à�#L3 G�¯žþ*À™¾}8|Aó¶/í"+Tˆð8„: R¥€ìñ4²kkk›]}ôᇦýÍJˆr ’$e±˜G¨d•eÀ2•mPïÏ60#~` �lÚPÿểŠ’™�*Š*BÀ.MÇB¥ÿ?¿º»’Ô†4Ç· u"ÚºG~ÄAÇ žLT}‚MÚCîM7Ýôe½ÿ“ÇŸpBàí¿½m¾qÝõ‹ÜîNÃÿ}{åÀà@²Ç›L¦±ƒn¾ñ¦E{÷îÍÛô‡?”†Ãᜲ²²a‡ŒÖ7^CÝŽ;Lûmóû[·š>qì±}ðdí9{zºs.Ì3G�ýä±AñAômÙ²¥P|,MM»òyøaûq+W"�Þ¿n‰’ÔFÆ8E[— ]•Çí®ƒœ^¾óéÊz{sì±²{ïùuÅŽíÛÍ—_qyçèèè‚ÊÊÊ¡†¥ ¡žÞöØ#�Ø?sÚi¾b«uøÔÏ|¦wñâÅášÚšÁûÖ¯/¿ý}Žáá!ß1Ö‡BýÊ/ *Åk®ýz‡26¦qä‘!|ÿÞ®®Ü{î¾»b³èJJK‡Y¶l€Ÿ‚v�u�ÌpÚ/½ ]¡"¸þÆZIµHî²Xö‰Q—Ú•*HÒ:ŒÌ`ƒ„…Ñ™­¤d„Ô ´�Ýo�íÛ¶­8|ùòwg[i‘Kº,évWR!ÎD¶Íˆê f¶33�eÝ˯çz]L`ñ·ŸHK42ÙŽ¬öBdòÒ'�Î U�±Œ:\(e‚ jÔ,CÎ@¬G].ª¢Ü;lmB@p__ŸôRCrb$ 6�au›Èv¡Îñë¹Äº|TRÊGÛÙž1ŸÁ`cd5IE[�šd £ƒþÙµsç¡(¿‚jÈTLeYPK«®®Î…ß~¿ß®N| Œ¤$* ÂA .KÅ;çz.q|+K` #ËQd6Oñì¤ÂHl›#$+5ÁÁîbá`û  dk§íH8<“4D…,±Œ ÈìØQ5ßs1 &0F–ƒŠZFbTHB¨˜LÙïAt HBÈÉX^^Þ‡ó! Å{ ©<ƒÁ`cè�ØŠ‹áfmƒ¤¤^�uö²2lWH0<[;P Rc‡¤ß '³Åâ›ï¹¨ä ƒÁ`c0¦¥D†„ÔG ü.((U×Ô´8ÊË;àDáëé±cÝLm”••uìnjj€SHËjµz[š›�CCCF8qÔNØÎæz.H�BÁþz®×Å`¤ \Ð’Á`0‰¾ ƒÁ`c0 ƒ ŒÁ`0 &0ƒÁ`0�1 ƒÁÆ`0 ƒÁ`0˜À ƒÁ`c0 ƒ ŒÁ`0 &0ƒÁ`0�1 ƒÁÆ`0 ƒÁ`0˜À ƒÁ`c0 ƒ ŒÁ`0L` ƒÁ`0�1 ƒÁÆ`0 ƒÁ`02ÿ_€à÷�6³¥IEND®B`‚ipython-ipyparallel-14e3c43/docs/source/reference/figs/simpledag.pdf000066400000000000000000000120531520071063500256260ustar00rootroot00000000000000%PDF-1.4 %¬Ü «º 1 0 obj << /Type /Catalog /Pages 2 0 R >> endobj 8 0 obj << /XObject 7 0 R /Pattern 5 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] /ExtGState 4 0 R /Shading 6 0 R /Font 3 0 R >> endobj 10 0 obj << /Contents 9 0 R /Type /Page /Resources 8 0 R /Parent 2 0 R /MediaBox [ 0 0 576 432 ] >> endobj 9 0 obj << /Filter /FlateDecode /Length 11 0 R >> stream xœ…WËnÜ0 ¼ë+tl/.E‰z\´r º@?ÀmSI�æÒ߯$;»$e«‡}Q´9$‡Ãµ³Ïíƒuö©¾î X°¯–R¬Ÿ/ý3x¬ß`ÿüeîÌÛ¼ÞÏÞ~Øoöw5<Ô×½AmÂzÁ¶/æëÍXßÞmïç¯ý½ý’V‚pµî—I×G{ $Ø¿ŒÇ`]…ÆAÞ­ Úæ.c„˜w+‡Ó.}'x\?x{ºV(ₘJ()ºÒï“*ŽRI#ºRªqê…~AJTBDç ".JÎXr 6ÒœKàªëZ/ K €|ÊÅÆ¸Äè«'"-)! ÏÎIJÈ]ÉžÔa+Ò:؃kTœ”®pÀ”ù¯•gf2ð{¨‚dÇ£· JËZ«êyú¸¦®â@a53@H¬Þ"3ˆ¼Gª ê°WPÚTÉeœ[§Œ8¶˜e&¸aeAŒ¢ÔÀÁµ�v ´Íò^¨sß í=Tiø–Ç­œ*•µžgÙók.H‘ ÝN·»q£Q Ò±ØLi˜’³«aê‘Ò¥‘SÒ«)'­Â¤46O� ©ŒEžSUìçNôŸgH »ÏKc†Ó^Mm” ± g¡„yÐtž¡à‹Ñ¥ÑD¸¹‘¶©¸æ¬˜ÇaXù rþìZ£˜ª8ɽ©õ[)›èˆŠÃ:©jÜ2D9LˆÚ*(-ë|'ˆU"— MIª4Šo6œPtT¯u¸@”\káMY¤‚-æ™)Qæ9�øCnö?r”†m¯G�-Åa¦E9Õ¨ Ÿ�štfªBuÔôÎ7ƒÖ)%¤³­¯ôµîj!¾y²÷„^ÉüúßÝÀ¤IÅ’»_ÃÔýjiÂÉúß«©ŒZë”r‘›.ÄWé²RíAè•i#mÿ¯«IKÿ9i©�<&-5|Ò’Ã3ÒRÅNZ}ÚË,�š´:k©†©IË2ÔDÒ¥‘ Üži Ü„´¡ä3ÒÖzOI �‘6”0!íp ýnaBZK�V›.2”¤Õ¥ÑD¸¹‘vòøv{òº»ØO_œuh/?ëlT‘J‘"Öm‘–è1»úõòÝ|€�öòl?_ä-y_ ùW˜KÜ�Ý¡síg•²´¹R}ŒL›7z·9mÁ=‘â½ `ÉW÷Ý5¼»>š†="Z endstream endobj 11 0 obj 865 endobj 16 0 obj << /Filter /FlateDecode /Length 90 >> stream xœM�AÀ ï¼"OPDÐÿtzÒÿ_«Ô½ÀN‰E‚ô5jK0î¸2kP)˜”—ÀU0\ Úî¢Êþ2IL�†Ó{·ƒ²ñqƒÒIûöqz«ýzÝÒ"X endstream endobj 17 0 obj << /Filter /FlateDecode /Length 210 >> stream xœ5PË C1»g ¨�džV½uÿkmÐ;aÿBXÈ”y©ÉÎ)éK>:L¶.¿±" ­u%ìÊš ž+ï¡™²±ÑØâ`p&^€7`èi�5tႦ.•B�Å%ð™|u{è¾OxjrvCÉ` jºMX´<Ÿ�Nâÿ~Ãî-ä¡’óÊžùœíð;³ná'jv"Ñr2Ô³4ÇE> stream xœ5R9®Ý@ ë} ] €vÍœç©~î߆”_ C´VŠšŽ•iùe!U-“.¿íIm‰ò÷É ‰’W%Ú¥ ‘Pù<…T¿g˼¾Öœ K• ““’Ç% þ —Þ.çck?�#w=z`UŒ„Ë£kY:»Ãš�ü<¦?âr®X·cH ºqÚïCóyÈ f˜–Š ]V‰~Añ G­}÷XTX ÑíIpŒ�P‘€v�ÚH 9³»¨/úY”˜ tí‹"î¢ÀIÌœb]:ú>t,¨¿6ã˯ŽJúH+kLÚw£IiÌ"“®—Eo7o}=¸@ó.Ê^Í ASÖ(i|Ъ�c(še…wš 4LJÌ<‡3”ô}(~_K&º(‘? ¡_£ŒœosÑŸ¶ŠñÙa¯`…ÒÅšä}@*z`úÿ×øyþü¶€T endstream endobj 19 0 obj << /Filter /FlateDecode /Length 248 >> stream xœ-Q9’AËçzBsÓï±Ë‘÷ÿé ʃ†C :-qPÆO–+ÞòÈU´áï™ÁwÁ¡ßÊu9HÒTM¨]¼½vfó¤5,ƒë?c 7zqxLÆÙíu5{×kOfP2+qÉÄSuØÈ™ÃO¦Œ í\Ï È¹Öe¤›•ÆŒ„#M!RH¡ê&©3A�£«Q£�Å~éË#�aU#j û\KÛ×sÎ4;«<9¥GWœËÉÅ +ý¼ÍÀET«<p¿ÛCýœìä7ÞÒ¹³Åôø^s²¼0Xñæµ�Mµø7/âø=ãëùü¨¥[ endstream endobj 20 0 obj << /Filter /FlateDecode /Length 80 >> stream xœEŒ» À0D{¦`~&fŸ(•³ JÜpOº{¸:2SÞa†‡ž ,†Sñ™£`5¸FR��죰n_u�æzS«õ÷*Ovvq=ÍËô endstream endobj 14 0 obj << /FontDescriptor 13 0 R /Name /BitstreamVeraSans-Roman /FontMatrix [ 0.001 0 0 0.001 0 0 ] /BaseFont /BitstreamVeraSans-Roman /Widths 12 0 R /Subtype /Type3 /CharProcs 15 0 R /Type /Font /FirstChar 0 /FontBBox [ -184 -236 1288 929 ] /Encoding << /Differences [ 48 /zero /one /two /three /four ] /Type /Encoding >> /LastChar 255 >> endobj 13 0 obj << /Descent -236 /FontBBox [ -184 -236 1288 929 ] /StemV 0 /Flags 32 /XHeight 547 /Type /FontDescriptor /FontName /BitstreamVeraSans-Roman /MaxWidth 1342 /CapHeight 730 /ItalicAngle 0 /Ascent 929 >> endobj 12 0 obj [ 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 318 401 460 838 636 950 780 275 390 390 500 838 318 361 318 337 636 636 636 636 636 636 636 636 636 636 337 337 838 838 838 531 1000 684 686 698 770 632 575 775 752 295 295 656 557 863 748 787 603 787 695 635 611 732 684 989 685 611 685 390 337 390 838 500 500 613 635 550 635 615 352 635 634 278 278 579 278 974 634 612 635 635 411 521 392 634 592 818 592 592 525 636 337 636 838 600 636 600 318 636 518 1000 500 500 500 1342 635 400 1070 600 685 600 600 318 318 518 518 590 500 1000 500 1000 521 400 1023 600 525 611 636 401 636 636 636 636 337 500 500 1000 471 612 838 361 1000 500 500 838 401 401 500 636 636 318 500 401 471 612 969 969 969 531 684 684 684 684 684 684 974 698 632 632 632 632 295 295 295 295 775 748 787 787 787 787 787 838 787 732 732 732 732 611 605 630 613 613 613 613 613 613 982 550 615 615 615 615 278 278 278 278 612 634 612 612 612 612 612 838 612 634 634 634 634 592 635 592 ] endobj 15 0 obj << /four 16 0 R /zero 17 0 R /one 20 0 R /three 18 0 R /two 19 0 R >> endobj 3 0 obj << /F1 14 0 R >> endobj 4 0 obj << >> endobj 5 0 obj << >> endobj 6 0 obj << >> endobj 7 0 obj << >> endobj 2 0 obj << /Count 1 /Kids [ 10 0 R ] /Type /Pages >> endobj 21 0 obj << /CreationDate (D:20110217120817-07'00') /Producer (matplotlib pdf backend r8851) /Creator (matplotlib 1.1.0svn, https://matplotlib.sf.net) >> endobj xref 0 22 0000000000 65535 f 0000000016 00000 n 0000004423 00000 n 0000004307 00000 n 0000004339 00000 n 0000004360 00000 n 0000004381 00000 n 0000004402 00000 n 0000000065 00000 n 0000000315 00000 n 0000000208 00000 n 0000001255 00000 n 0000003168 00000 n 0000002953 00000 n 0000002604 00000 n 0000004221 00000 n 0000001275 00000 n 0000001437 00000 n 0000001720 00000 n 0000002131 00000 n 0000002452 00000 n 0000004483 00000 n trailer << /Info 21 0 R /Root 1 0 R /Size 22 >> startxref 4643 %%EOF ipython-ipyparallel-14e3c43/docs/source/reference/figs/simpledag.png000066400000000000000000000245341520071063500256500ustar00rootroot00000000000000‰PNG  IHDR Xšv‚psBIT|dˆ pHYsaa¨?§i IDATxœíÝŒœ÷�ß÷ÏîŒÃ½žÎ<]Îý' h—·b §‚ýÏU �š)©sªþ:‰wgGB6')bÓöàÀ6«�@PÓ”ÔQN¶9IOR倇bªka)‚¸PaU¼W€)l“þ@;u·•]ò´ÜéKÉ$EîÎìÌ|Ÿ_¯°�vùÌ3�$`>zïÌìÎ ƒA ˜­ú€î @1(F€Å #@€bPŒŠ @1(F€Å #@€bPŒŠ @1(F€Å #@€bPŒŠ @1(F€Å #@€bPŒŠ @1(F€Å #@€bPŒŠ @1(F€Å #@€bPŒŠ @1(F€Å #@€bPŒŠ @1(F€Å #@€bPŒŠ @1(F€Å #@€bPŒŠ @1(F€Å #@€bPŒŠ @1(F€Åô«¾€Í\ºt)ËËËY]]M’ìܹ3óóó™››«øÊ¨3ûQ_¨�•••,..æõ×^ËÒòrÖ®\¹îÏû½^æç³ÿàÁ>|8»víªèJ¨ûÑ 3ƒÁ`PõE$ÉÅ‹ó—�É™³g³sv6÷]¹’»“Ü•äW�ùA’7“¼‘äÕ^/«ëë¹÷À�ü�ãÇsÇwTuéTÈ~4‹*·¾¾ž“'OæË¿õ[ù¯\ÉW×Ör’n‹Ûý$É+I¾ÞïçŸôzyò©§òÈ#�dvÖÛÛºÀ~4“*õþûïç¡Ì‹/½”G’<™ägG<Ç{I¾œä™$¿þk¿–çO�J¿ï¦mf?šK€•Y__Ï¿ð…¼òòËyq0ȯŽy¾o&ùõ™™ÜèP^8}Úw²ZÊ~4›»@eNž<™_zi"ã‘$¿šä÷ƒ¼øÒKyæ™g&pFêÈ~4›g@€J\¼x1{òÐåË99ás?œäÔÜ\Î/-e÷îÝ>;U²Í'@€J|þÞ{³ôúë9¿¶–Û&|î÷’ìí÷³°¾}æÌ„Ï@•ìGóy PÜÊÊJΜ=›¯n1ÿs’Ï%ùIþH6Þ\ø¯%ùÛ[œÿ¶$_Y[Ë™³g³²²2‘k zÃîÇ�~7ÿÓûs[g?Ê @q‹‹‹Ù9;›û·8n5Éž$=ÉŸäï$Ù›äp’¿ºÅmHòñÙÙ,..ŽyµÔŰûq­ÿ=Éœä�%™âxû1}^‚w×�w殥¥<·ÍÛß“äIò�¶8îÁ$oÝyg¾wþü6ï €:ÙÎ~üJ’~’ŸOò­$ÿï·±Óå ¨K—.eiy9w�qŽÛ‡<îî$KË˹|ùò÷@lg?^Lò?dã÷|Œòwû1](jyy9kW®ä®n3H²–äÿNòl’¿—�§Ó·ò©$ﯭåÂ… £_(µ2ê~üŸIŽdãþ±ïË~L—_õµººš$ùÄ·ù‹IþË«ßKò×’<:Äí~ñ†û ¹FÝ�‡³ñ>Âÿ`÷e?¦K€µ÷•$!oJÿv’¿’äÇI¯ðš¨¯o%9“ä­ª/„› @Q;wîL’ü ɰ¿âéO\ýH’}Ùxíè׳%›=­þÃî€æv?ÞKòH’¿”ä_ÈÆËw“ä¯þu5ÿü³›œÃ~L—÷€EÍÏϧßëåÍ1Îñ§“¬'ù_·8î{I>ÖïgÏž=cÜu0ì~ü0É?ÍÆ�pÿ…k>^ÉÆ³ç·'ù�-Îa?¦K€EÍÍÍea~>oŒqŽ¿Ÿ�÷‚ܱÅqo$Y˜ŸÏŽ;Ƹ7ê`Øýø—’œËÆï�úàã\’ýIæ®~þõ-Îa?¦K€Åí?x0¯özùÉÇ=œ�÷üÝ$ÿ ïÿøsÙxCú”ä�nrÛ'yµ×Ëçÿ‚¨…aöcG6~_Ô¿~ÍÇ=Ùx9Vïêç›=¯a?¦O€Å>|8«ëëye‹ãþt6¾SõÅlŒÇŸKò�³ñsÝŸÜ⶯$ùÖ×søðáñ.€Úv?nf&Ãý&tû1}~:P‰Ïß{o–^=ç×ÖrÛ„Ïý^’½ý~öïÏ·Ïœ™ðÙ¨’ýh>TââÅ‹ù¥ùùüùµµ<3ásÿf’çúý¼ýÎ;Ù½{ØŸµ@Ls?Nrjn.ç—–ìÇy P‰×^{-¸¶–o$ùæÏûJ’¿™äòÚZÎøî@ëLs?¾‘äɧžSæ ¸'NäÈ‘#~ÞËÆû:îó¼¯$ùõ$W®ùÚñãÇóØc��yfê`šûñ33¹ÿС¼pútfg}�~šüÛŠºq<’�`x O}¿·�s¾—�—]=�ëã#IŽ9’'Nlã¬ÔÉ´öãá«ç¸ÿС<ê”ø(À¿a ˜›�ǵží÷³·ßϳɖ?¢7W�y6o|®ß¿åq" Ù¦¹§ææòôÓOç…Ó§ÓßdK˜±Õx?~ ­­ã!B¦«­ûÁö`(m0mßF'@€-ue"`{º¾lM€a<6ˆ€Ñ؆!@€ë�ë‰€áØ†%@€�›!›³ŒB€IŒÇVDÀÍÙF%@ã1$p=ûÁvè8ã1°Á~°]:Ìxl�ºÎ~0e<Æ#B€®²ŒK€@�É!@ר&A€@Ç�É!@WØ&E€@‡�é!@ÛÙ&I€@G�é!@[Ù&M€@�2DÐ6öƒi ÐrÆ£,´…ý`Z´˜ñ¨†šÎ~0MZìG?úÑ-ÿÌxL×V²Ù€ªÙ¦if0 ª¾`z>ûÙÏæÜ¹s×}Íx”s³ï"îÛ·/ßùÎw*º"€áئÅ3 ÐbÇŽ˹sç²oß¾¿f<ʺñ™�}ûöåܹs9vìX…W°9ûÁ4õüñÇ«¾`òŽ;–£G�æ‰'žÈsÏ=—$¹ï¾ûŒG>ó™ÏäöÛoϧ?ýé<ÿüóéõz9zôhz½^î¹çžª/à:öƒió,h¡kÇãk_ûZÕ—ÃMøoÔ‘Ç&JèW}Àd�føà¿ÍÑ£G¯û *öƒR´ˆñhÔ…ý $-a<šI„U³”&@ ŒG³‰ *öƒ*h8ãÑ"(Í~P f<ÚE„¥Øª$@ ¡ŒG;‰`ÚìU Ð@Æ£ÝD0-öƒ: Ð0Æ£D0iöƒº Рƣ[D0)öƒ: ÐÆ£›D0.ûAÝhãÑm"Ø.ûA ¨9ãA"B€ÑÙêJ€@�®%B€aÙêL€@MnF„[±Ô��2lF„·b?h5c<†nd?h 5b<…>`?h5a<ØØšF€@ Æ!B »ìM$@ bƃI!Ð=öƒ¦ P!ãÁ$‰èûA“ ¨ˆñ`D´Ÿý éTÀx0M"ÚË~Ð 3” B }ìm!@  ãAI"ÚÃ~Ð& 1TA„@óÙÚF€@ƃ*‰h.ûA ˜2ãAˆhûA[ ˜"ãA�ˆhûA› ˜ãA‰¨?ûAÛ ˜ãA�‰¨/ûA˜0ãAˆ¨ûAW˜ ãA“ˆ¨ûA—˜ãA‰¨žý kL€ñ ÉDTÇ~ÐEÆdûA× ØãA›‰˜ûFf<è“g?`ƒ�ºD„À䨸)C2t‘�ñÙ¸ž�!ºL„ÀöÙø([0 B`;ìÜœ�Mø)ópknÁxÀG‰Øšý€Í ¸ ã·&BàÖìlM€À ŒlM„ÀGÙŽ�kž�Ÿ²0<W�û£ ãã!t™ý€Ñ :ÏxÀøD]d?`{�f<`rD]b?`û�e<`òD]`?`<„N20="„6³0>Bç˜>BÙ˜ B§(G„Ð&ö&G€ÐÆÊ!´�ý€É t‚ñ€êˆšÌ~Àä ZÏx@õDMd?`:­f< >DMb?`z­e< ~DM`?`º­d< ¾Duf?`ú­c< þDud?  B«hB�Ø(G€ÐÆšG„PöÊ ´‚ñ€æ!TÉ~@y„Æ3Ð|"„*ب†¡ÑŒ´‡¡$ûÕ 4–ñ€ö!”`? Z„F2Ð^"„i²P=Bãh?Â4بB£èÂ$Ù¨BcèÂ$بB#è.Â8ìÔ�¡öŒ BØûõ$@¨5ã|@„0 ûõ%@¨-ãÜH„0 ûõ&@¨%ãÜŠa3öêO€P;ÆØŠáfì4ƒ¡VŒ0,µì4‡¡6Œ0*Bb? iµ`<€í!Ýf? y•3À¸DH7Ùh&B¥Œ0)"¤[ì4—¡2Ƙ4Ò öšM€P ãL‹i7ûÍ'@(ÎxÓ&BÚÉ~@;Š2@)"¤]ì´‡¡ã”&BÚÁ~@»Š0@UDH³ÙhÂÔ j"¤™ì´“aªŒP"¤Yì´—ajŒP7"¤ì´›a*ŒPW"¤Þì´ŸaâŒPw"¤žìtƒa¢ŒÐ"¤^ìt‡abŒÐ4"¤ìt‹a"ŒÐT"¤ZöºG€06ã4�©†ý€n ŒÅxm!BʲÐ]„m3@Ûˆ�2ìt›a[ŒÐV"dºì @™ñÚN„L‡ýˆŒÐ"d²ìðÂÐŒÐ5"d2ìp-ÂPŒÐU"d<ö¸‘aKÆè:²=ö¸¦ŒÀ2ûÜŠá–ŒÀõDÈpì°ÂM€›!›³ÀVa<6'BnÎ~à \Çx G„\Ï~à |ÈxŒF„l°À(IŒÀvu=Bì0*‚ñSW#Ä~Û!@:ÎxLF×"Ä~Û%@:ÌxLVW"Ä~ã e<¦£íb?€q �2ÓÕÖ±À$�Ž1e´-Bì0)¤CŒ@Ym‰ûL’éãP�¦Gˆý&M€t€ñ¨VS#Ä~Ó @ZÎxÔCÓ"Ä~Ó"@ZÌxÔKS"Ä~Ó$@ZÊxÔSÝ#Ä~Ó&@ZÈxÔ[]#Ä~%�–1ÍP·±@)¤EŒ@³Ô%BìP’i ãÐLUGˆýJ 5péÒ¥,//guu5I²sçÎÌÏÏgnnn¨Û€fÛn„Ø ‰HEVVV²¸¸˜×_{-KËËY»råº?ï÷zY˜ŸÏþƒsøðáìÚµë¦ç1í0l„Ø ñõýïð+fff?ßë LßHÿ0\¼úñ¯~íÁdðó½Þ`fffð+¾ÿýï_w®'žxb�dðÄOTôOÀ¤Ýê±Ý~m!@ ¹råÊàĉƒŸÙ±c°«ß<› ~œ [|ü8<› võûƒŸÙ±cpâĉÁ•+WŒ@‹]ûo?€¶™ ƒ*Ÿ�é‚÷ß?=ø`^|é¥<’äÉ$?;â9ÞKòå$Ï$ùS{÷æ­óç=mÐb¼DêƒÇ|û´…™²õõõ|ñ _È+/¿œƒüê˜çûf’_K²°wo¾÷æ›™���ÀUP7ëëëùÔ]weéüù¼”Ø 5<úLÙÉ“'óâK/M$>’�z1É[çÏç™gž™À¨£“'Oæ­ ÅGb?€úð È]¼x1{òÐåË99ás?œäÔÜ\Î/-e÷îÝ>;U²@› �)úü½÷féõ×s~m-·MøÜï%ÙÛïgaÿþ|ûÌ™ Ÿ€*٠ͼkJVVVræìÙ|u‹ñøo“<�äO&ù#InOòo&ù[œÿ¶$_Y[Ë™³g³²²2‘k zÃîÇ{I~+Éç’|"ƒþÛCœß~U S²¸¸˜�³³¹‹ãþv’’ä?Iòß%9�äÿK²/ɹ-nû@’�ÏÎfqqqÜË &†Ý�fcCÞOrßÕ¯Í yö¨’—`MÉ]wÞ™»––òÜÇýÓ$ÿü _»œäŽ$ÿj6ž!Ù̃IÞºóÎ|ïüùí](µ2ì~\ëŸeãY�Ç“ò6ö¨Šg@¦àÒ¥KYZ^ÎÝC{c|$ÉŽ$ÿJ’ÿmˆÛß�diy9—/_娡QöãZÛùN¢ýª"@¦`yy9kW®ä®mÞ~5Éÿ”ä—†8öSIÞ_[Ë… ¶yoÔŸû1 ûTE€LÁêêj’�§Ã·ãál¼ä+Cû‹7Ü'Í5î~ŒÂ~UéW}\ïkI^Nr2)ò0(É3 S°sçÎ$ÉF¼Ýo'ù«IþZ’ßò6?¼á>h®íîÇvØ *d æççÓïõòæ·ùík>¾<Âí¾—äcý~öìÙ3Ê%PCÛÙ�í²@UÈÌÍÍea~>o yü±l„ÇW³ñ¬Q¼‘da~>;vìñ–Ôͨû1ûTE€LÉþƒój¯—ŸlqÜžä?Mòg’LòÝ>6óã$¯özùÜ�ã^.51ì~$ÉßKò­$÷êço_ýü[Ùøa&·b?€*ùE„S²²²’Ý»wçwƒ<´Éqû’üýÜüg¸Ï$¹²ÉmŸMò¥™™¼ûî»Ùµk×W @] »I²+É?ºú÷3ùé–Ì$YIò/ßâvö¨’™¢Ïß{o–^=ç×ÖrÛ„Ïý^’½ý~öïÏ·Ïœ™ðÙ¨’ýÚL€LÑÅ‹³wa!]¾œ“>÷o&y®ßÏÛ3ݻwOøìTéâÅ‹ù¥ùùüùµµ<3ás?œäÔÜ\Î/-Ù Þ2EwÜqGž|ê©<“ä›<ï+Iþf’Ëkk9ã»W­óÚk¯å×Öò�L~?¾‘äɧž@e<2eëëëùâ¾�W^~9¿7äþ1Ï÷J’_Ïõï 9~üx{ì±1Ï @œ8q"GŽùðó^’“‰ìÇoÌÌäþC‡òÂéÓ™�õ=H }¦lvv6ÏŸ:•ûÊIÉÆëoGõ^6^võ@>úÆô#GŽäĉc^)U»1>’�Çü²ñÒ©íîÇÃWÏqÿ¡CyþÔ)ñTÊ#Pý~?/œ>�§Ÿ~:ÏÏÍeo¿Ÿg“¡~ÄâO²ñÓJööûy®ß¿åq" Ùn×z¶ßßö~œš›ËÓO?�NŸN“-(A€2;;›G}4ç—–²°¾43“Oözy0¯Çýn’‹W?¾{õk&ùd¯—/ÍÌdaÿþ¼ýÎ;9~üø-ïC„4ÓVñqüøñ¼ýÎ;ÛÞ�óKKyôÑG=óÔ‚÷€Tdee%‹‹‹ùý³gó.díÊõ/¬úX¿Ÿ…ùù|îÀ�>|øºŸÓ>ÌPyO@3Œú˜>Î~Ô�©�Ë—/çÂ… Y]]M’ìܹ3{öìÉŽ;nyÐ|ã>–og?ª&@L„4—Çp «¼´Á{ì1ï h ñt™i8Ð,âè:Ò" Ä€i Poâ`ƒiPOâà§Hˈ€z× -$BêA||”i)P-ñps¤ÅD@5ÄÀ­ �–!e‰€Í �!eˆ€­ �Ž!Ó%>†#@:D„L‡øžé0Yâ`4¤ƒDÀdˆ€Ñ �Ž!ãÛ#@:L„l�øØ>Òq"`4â`<0$ñ0>B°ñ0„‰€›“#@¸Ž¸žø˜,ÂGˆ€ â`ò7%B€®Ó!@¸%t•ø˜¦DÐ5â`º[!@Wˆ€é E„m'>Ê M„m%>Ê ŒD„m#>Ê ŒL„m!>Ê l‹šN|TC€°m[EÈ�~ô£‚W0šÍ£ÄÀôÌ ƒAÕA³Ý컈ûöíËw¾ó�Š®`8Ÿýìgsîܹë¾&>¦Ë3 ŒíÆgBöíÛ—sçÎ娱c^ÀæŽ;–sçÎeß¾}~M|L_ïñǼꋠù>ó™ÏäöÛoϧ?ýé<ÿüóéõz9zôhz½^î¹çžª/à:ÇŽËÑ£GóÄOä¹çžK’Üwß}â /Ábj®ø¯}íkU_@�MUëW}´×Ã~ôèÑë>¨Šø¨žaªDPâ S'B€ª‰€ú !B€ªˆ€z #B€ÒÄ@ýŠ!@)â žʼn`ÚÄ@} *!B€iõ&@¨Œ&M|ÔŸ¡R"˜ñÐ „ʉ`\â 9µ B€íÍ"@¨ ŒJ|4�¡VD0,ñÐL„Ú!ÀVÄ@s jI„·">šM€P["¸‘øh>B­‰àâ µ'BñЄF!Ð]â ]�!B {Ä@ûE„@wˆ€v 4Ž�öí%@h$í%>ÚM€ÐX"ÚG|´Ÿ¡ÑD´‡øèBã‰h>ñЄV!Ð\â [­!B yÄ@÷ZE„@sˆ€n ´Ž�úÝ%@h%õ%>ºM€ÐZ"êG| @h5õ!>H B zâ€:A„@uÄ× t†�òÄ7 tŠ�rÄ7#@èÓ'>¸B'‰˜ñÀf�%B`òÄ[ tš�É C€Ðy"Æ'>–�ˆ‡ø`®!0:ñÀ¨\C„ÀðÄÛ!@à"¶&>Ø.7!BàÖÄã p ">J|0.›!ðSâ€I °â€É 0B—‰&I€À�D]$>˜4#!t‰ø`ŒH„Ðâ€i ° "„6L“�m!´‘ø`ÚŒA„Ð&‌I„Ðâ€RL€¡ÉÄ% ˜B‰J 0A"„&TA€À„‰š@|PS B¨3ñ@•L‰¡ŽÄU 0E"„:Ô��)!Ô�ø . B¨’ø N"B¨‚ø n$B(I|PG !” >¨+!L“ø ÎTD„0 › P!Â$‰š@€@ÅD“ >h 5 B‡ø IÔ„a;ÄM#@ FD£4‘�š! C|ÐTjH„°ñ@“ ¨)Â͈šN€@�‰®%>h5'BHÄí!@ DH·‰ÚD€@Cˆ�n´��!Ý">h# #BºA|ÐVH„´›ø Í4”i'ñ@Û h0Ò.â€. Ðp"¤Ä]!@ DH³‰ºD€@Kˆ�f2ÓÞÞòIDATt��!Í">è"-#BšA|ÐUZH„Ô›ø Ë´”©'ñ@× h1R/â´ž©ñt€©–ø€Ÿ Ð"¤â®'@ CDHYâ>J€@Lj�2ÄÜœ�!Ó%>àÖt”™ñ› Ða"d²ÄlM€@lj�É0ˆ�1‰ž’ˆ�í0|H„ŒF|Àèp2ñÛ#@€�!›°}¸)rsâÆ#@€[!×0>lJ„l0ØR×#D|Àä`(]�ñ“%@€¡u-BÄLžFÒ•0YÛ#D|Àô`[Ú!â¦K€ÛÖ¶0}K["D|@[Ó#D|@9˜ˆ¦Fˆø€²01M‹ñå `¢š!âª!@€‰«{„ˆ¨Ž¦¢®"> Z˜šºEˆø€ê `ªê!âêA€SWu„ˆ¨±Ý¹téR–——³ººš$Ù¹sgæçç3777ÔíÅÔ‹Š6BVVV²¸¸˜×_{-KËËY»råº?ï÷zY˜ŸÏþƒsøðáìÚµë¦çP?3ƒÁ`PõEÝr«0¸xñbþò‘#9sölvÎÎæ¾+Wrw’»’|âê1?Hòf’7’¼Úëeu}=÷8�¿qüxî¸ãŽ-ï¨VïñǼꋺåž{îI¯×ËÑ£GÓëõòË¿üËù�ßù�ü;÷Ý—Ÿ|ÿûùëëëy~0È¿›äî$<É/\ýøãW¿ög“ü¥Á 2É·VVòŸý­¿•ŸûøÇs÷Ýwçë_ÿºø€šò P™ž¥øS{÷æ­óçóH’'“üìˆçy/É—“<“|x.ñõ$@€Ê¬¯¯çSwÝ•¥óçóR’_ó|ßLòkIöîÍ÷Þ|3³³³ã_$0QÖ¨ÌÉ“'óÖ„â#WÏñb’·ÎŸÏ3Ï<3�3“æ /^ÌÞ……™äg²ñãx¿9ÄùoKò•µµœ9{6+++ã_001(nqq1;ggsÿÇýÛIN'y<É“�¿û@’ÿjˆûx ÉÇgg³¸¸8Î¥æ%X@qwÝygîZZÊs›s6ɽو�kß ¾?ÉÛIþq¶þʃIÞºóÎ|ïüùq.˜ Ï€E]ºt)KË˹{‹ã^MòsIþ½¾þ`’ÿ#Éÿ8Ä}Ý�diy9—/_ýB€© @QËËËY»r%wmqÜR’ù|ôAêΫ}{ˆûúT’÷×ÖráÂ…¯˜µººš$ùÄÇý³$¿p“¯ÿÂ5¾•_¼á>€ê  µsçÎ$ɶ8î�ææÏrü_×üùV~xÃ}Õ @Qóóóé÷zys‹ãö&YN²~Ã×ÿàê_†¸¯ï%ùX¿Ÿ={öŒx•À´ ¨¹¹¹,ÌÏç�-Ž»/¿ˆð[7|ýT6~1ᧇ¸¯7’,ÌÏgÇŽ#_'0(nÿÁƒyµ×ËO69æÏ$ù7’üÅ$¿›ä\’¿�ä÷“<•df‹ûøq’W{½|îÀ� \10)~!PÜÊÊJvïÞ�ß òÐ&Çý8ÉW’ü×ÙxïÇ|’¿’äßâ>žMò¥™™¼ûî»Ùµk×Ø× L†*ñù{ïÍÒë¯çüÚZn›ð¹ßK²·ßÏÂþýùö™3>;0Tââŋٻ°�‡._ÎÉ Ÿûá$§æær~i)»wïžðÙ€qxP‰;î¸#O>õTžIòÍ ž÷•$ßHòäSO‰¨!Ï€•Y__Ï¿ð…¼òòËù½Á ÷�y¾W’üÆÌLî?t(/œ>�ÙYßc€º±Î@efggóü©S¹ÿС<�ä‘l¼cTïeãeW$¹ÿС<ê”ø€š²Ð@¥úý~^8}:O?ýtžŸ›ËÞ~?Ï&›þˆÞü$?íjo¿ŸSssyúé§óÂéÓé÷ûÓ½h`Û¼ ¨�wß}7ÿác�åÌÙ³Ù9;›ëÊ•Ü�äSI~ñê1?ÌÆo8#Éßéõ²º¾ž{Èqâ„÷|@ vVVV²¸¸˜ß?{6páBÖ®\¹îÏ?Öïga~>Ÿ;p ‡ö{> APk—/_Î… ²ººš$Ù¹sgöìÙ“;vT|eÀv oBŠ @1(F€Å #@€bPŒŠ @1(F€Å #@€bPŒŠ @1(F€Å #@€bPŒŠ @1(F€Å #@€bPŒŠ @1(F€Å #@€bPŒŠ @1(F€Å #@€bPŒŠ @1(F€Å #@€bPŒŠ @1(F€Å #@€bPŒŠ @1(F€Å #@€bPŒŠ @1(F€Å #@€bPŒŠ @1(F€Åüÿ:é….&ãIEND®B`‚ipython-ipyparallel-14e3c43/docs/source/reference/index.md000066400000000000000000000001721520071063500236660ustar00rootroot00000000000000# Reference ```{toctree} --- maxdepth: 2 --- mpi db security dag_dependencies details messages connections launchers ``` ipython-ipyparallel-14e3c43/docs/source/reference/launchers.md000066400000000000000000000141511520071063500245450ustar00rootroot00000000000000# Launchers The `Launcher` is the basic abstraction in IPython Parallel for starting and stopping processes. A Launcher has two primary methods: {meth}`~.BaseLauncher.start` and {meth}`~.BaseLauncher.stop`, which should be `async def` coroutines. There are two basic kinds of Launcher: {class}`~.ControllerLauncher` and {class}`~.EngineLauncher`. A ControllerLauncher should launch `ipcontroller` somewhere, and an EngineLauncher should start `n` engines somewhere. Shared configuration, principally `profile_dir` and `cluster_id` are typically used to locate the connection files necessary for these two communicate, though explicit paths can be added to arguments. Launchers are used through the {class}`~.Cluster` API, which manages one ControllerLauncher and zero to many EngineLaunchers, each representing a set of engines. Launchers are registered via entry points ([more below](entrypoints)), and can be selected via short lowercase string naming the kind of launcher, e.g. 'mpi' or 'local': ```python import ipyparallel as ipp c = ipp.Cluster(engines="mpi") ``` For the most part, Launchers are not interacted-with directly, but can be _configured_. If you generate a config file with: ```bash ipython profile create --parallel ``` you can check out the resulting `ipcluster_config.py`, which includes configuration options for all available Launcher classes. You can also check `ipcluster start --help-all` to see them on the command-line. ## Debugging launchers If a launcher isn't doing what you want, the first thing to do is probably start your Cluster with `log_level=logging.DEBUG`. You can also access the Launcher(s) on the Cluster object and call {meth}`~.BaseLauncher.get_output` to retrieve the output from the process. ## Writing your own Launcher(s) If you want to write your own launcher, the best place to start is to look at the Launcher classes that ship with IPython Parallel. There are three key methods to implement: - [`start()`](writing-start) - [`stop()`](writing-stop) - [`from_dict()`](writing-from-dict) (writing-start)= ### Writing start A start method on a launcher should do the following: 1. request the process(es) to be started 2. start monitoring to notice when the process exits, such that {meth}`.notify_stop` will be called when the process exits. The command to launch should be the `self.args` list, inherited from the base class. The default for the `LocalProcessLauncher` ```{literalinclude} ../../../ipyparallel/cluster/launcher.py :pyobject: LocalProcessLauncher.start ``` _ControllerLauncher.start_ is always called with no arguments, whereas `EngineLauncher.start` is called with `n`, which is an integer or None. If `n` is an integer, this many engines should be started. If `n` is None, a 'default' number should be used, e.g. the number of CPUs on a host. (writing-stop)= ### Writing stop A stop method should request that the process(es) stop, and return only after everything is stopped and cleaned up. Exactly how to collect these resources will depend greatly on how the resources were requested in `start`. ### Serializing Launchers Launchers are serialized to disk using JSON, via the `.to_dict()` method. The default `.to_dict()` method should rarely need to be overridden. To declare a property of your launcher as one that should be included in serialization, register it as a [traitlet][] with `to_dict=True`. For example: ```python from traitlets import Integer from ipyparallel.cluster.launcher import EngineLauncher class MyLauncher(EngineLauncher): pid = Integer( help="The pid of the process", ).tag(to_dict=True) ``` [traitlet]: https://traitlets.readthedocs.io This `.tag(to_dict=True)` ensures that the `.pid` property will be persisted to disk, and reloaded in the default `.from_dict` implementation. Typically, these are populated in `.start()`: ```python def start(self): process = start_process(self.args, ...) self.pid = process.pid ``` Mark whatever properties are required to reconstruct your object from disk with this metadata. (writing-from-dict)= #### writing from_dict {meth}`~.BaseLauncher.from_dict` should be a class method which returns an instance of your Launcher class, loaded from dict. Most `from_dict` methods will look similar to this: ```{literalinclude} ../../../ipyparallel/cluster/launcher.py :pyobject: LocalProcessLauncher.from_dict ``` where serializable-state is loaded first, then 'live' objects are loaded from that. As in the default LocalProcessLauncher: ```{literalinclude} ../../../ipyparallel/cluster/launcher.py :pyobject: LocalProcessLauncher._reconstruct_process ``` The local process case is the simplest, where the main thing that needs serialization is the PID of the process. If reconstruction of the object fails because the resource is no longer running (e.g. check for the PID and it's not there, or a VM / batch job are gone), the {exc}`.NotRunning` exception should be raised. This tells the Cluster that the object is gone and should be removed (handled the same as if it had stopped while we are watching). Raising other unhandled errors will be assumed to be a bug in the Launcher, and not result in removing the resource from cluster state. ### Additional methods Some useful additional methods to implement, if the base class implementations do not work for you: - {meth}`~.ControllerLauncher.get_connection_info` - {meth}`~.BaseLauncher.get_output` TODO: write more docs on these (entrypoints)= ## Registering your Launcher via entrypoints Once you have defined your launcher, you can 'register' it for discovery via entrypoints. In your setup.py: ```python setup( ... entry_points={ 'ipyparallel.controller_launchers': [ 'mine = mypackage:MyControllerLauncher', ], 'ipyparallel.engine_launchers': [ 'mine = mypackage:MyEngineSetLauncher', ], }, ) ``` This allows clusters created to use the shortcut: ```python Cluster(engines="mine") ``` instead of the full import string ``` Cluster(engines="mypackage.MyEngineSetLauncher") ``` though the long form will always still work. ## Launcher API reference ```{eval-rst} .. automodule:: ipyparallel.cluster.launcher ``` ipython-ipyparallel-14e3c43/docs/source/reference/messages.md000066400000000000000000000334531520071063500243760ustar00rootroot00000000000000(parallel-messages)= # Messaging for Parallel Computing This is an extension of the {ref}`messaging ` doc. Diagrams of the connections can be found in the {ref}`parallel connections ` doc. ZMQ messaging is also used in the parallel computing IPython system. All messages to/from kernels remain the same as the single kernel model, and are forwarded through a ZMQ Queue device. The controller receives all messages and replies in these channels, and saves results for future use. ## The Controller The controller is the central collection of processes in the IPython parallel computing model. It has two major components: > - The Hub > - A collection of Schedulers ## The Hub The Hub is the central process for monitoring the state of the engines, and all task requests and results. It has no role in execution and does no relay of messages, so large blocking requests or database actions in the Hub do not have the ability to impede job submission and results. ### Registration (`ROUTER`) The first function of the Hub is to facilitate and monitor connections of clients and engines. Both client and engine registration are handled by the same socket, so only one ip/port pair is needed to connect any number of connections and clients. Engines register with the `zmq.IDENTITY` of their two `DEALER` sockets, one for the queue, which receives execute requests, and one for the heartbeat, which is used to monitor the survival of the Engine process. Message type: `registration_request`: ``` content = { 'uuid' : 'abcd-1234-...', # the zmq.IDENTITY of the engine's sockets } ``` ```{note} these are always the same, at least for now. ``` The Controller replies to an Engine's registration request with the engine's integer ID, and all the remaining connection information for connecting the heartbeat process, and kernel queue socket(s). The message status will be an error if the Engine requests IDs that already in use. Message type: `registration_reply`: ``` content = { 'status' : 'ok', # or 'error' # if ok: 'id' : 0, # int, the engine id } ``` Clients use the same socket as engines to start their connections. Connection requests from clients need no information: Message type: `connection_request`: ``` content = {} ``` The reply to a Client registration request contains the connection information for the multiplexer and load balanced queues, as well as the address for direct hub queries. If any of these addresses is `None`, that functionality is not available. Message type: `connection_reply`: ``` content = { 'status' : 'ok', # or 'error' } ``` ### Heartbeat The hub uses a heartbeat system to monitor engines, and track when they become unresponsive. As described in {ref}`messaging `, and shown in {ref}`connections `. ### Notification (`PUB`) The hub publishes all engine registration/unregistration events on a `PUB` socket. This allows clients to have up-to-date engine ID sets without polling. Registration notifications contain both the integer engine ID and the queue ID, which is necessary for sending messages via the Multiplexer Queue and Control Queues. Message type: `registration_notification`: ``` content = { 'id' : 0, # engine ID that has been registered 'uuid' : 'engine_id' # the IDENT for the engine's sockets } ``` Message type : `unregistration_notification`: ``` content = { 'id' : 0 # engine ID that has been unregistered 'uuid' : 'engine_id' # the IDENT for the engine's sockets } ``` ### Client Queries (`ROUTER`) The hub monitors and logs all queue traffic, so that clients can retrieve past results or monitor pending tasks. This information may reside in-memory on the Hub, or on disk in a database (SQLite and MongoDB are currently supported). These requests are handled by the same socket as registration. {func}`queue_request` requests can specify multiple engines to query via the `targets` element. A verbose flag can be passed, to determine whether the result should be the list of `msg_ids` in the queue or the length of each list. Message type: `queue_request`: ``` content = { 'verbose' : True, # whether return should be lists themselves or the lengths thereof 'targets' : [0,3,1] # list of ints } ``` The content of a reply to a {func}`queue_request` request is a dict, keyed by the engine IDs. Note that they will be the string representation of the integer keys, since JSON cannot handle number keys. The three keys of each dict are: ``` 'completed' : messages submitted via any queue that ran on the engine 'queue' : jobs submitted via MUX queue, whose results have not been received 'tasks' : tasks that are known to have been submitted to the engine, but have not completed. Note that with the pure zmq scheduler, this will always be 0/[]. ``` Message type: `queue_reply`: ``` content = { 'status' : 'ok', # or 'error' # if verbose=False: '0' : {'completed' : 1, 'queue' : 7, 'tasks' : 0}, # if verbose=True: '1' : {'completed' : ['abcd-...','1234-...'], 'queue' : ['58008-'], 'tasks' : []}, } ``` Clients can request individual results directly from the hub. This is primarily for gathering results of executions not submitted by the requesting client, as the client will have all its own results already. Requests are made by msg_id, and can contain one or more msg_id. An additional boolean key 'statusonly' can be used to not request the results, but poll the status of the jobs instead. Message type: `result_request`: ``` content = { 'msg_ids' : ['uuid','...'], # list of strs 'targets' : [1,2,3], # list of int ids or uuids 'statusonly' : False, # bool } ``` The {func}`result_request` reply contains the content objects of the actual execution reply messages. If `statusonly=True`, then there will be only the 'pending' and 'completed' lists. Message type: `result_reply`: ``` content = { 'status' : 'ok', # else error # if ok: 'acbd-...' : msg, # the content dict is keyed by msg_ids, # values are the result messages # there will be none of these if `statusonly=True` 'pending' : ['msg_id','...'], # msg_ids still pending 'completed' : ['msg_id','...'], # list of completed msg_ids } buffers = ['bufs','...'] # the buffers that contained the results of the objects. # this will be empty if no messages are complete, or if # statusonly is True. ``` For memory management purposes, Clients can also instruct the hub to forget the results of messages. This can be done by message ID or engine ID. Individual messages are dropped by msg_id, and all messages completed on an engine are dropped by engine ID. This may no longer be necessary with the mongodb-based message logging backend. If the msg_ids element is the string `'all'` instead of a list, then all completed results are forgotten. Message type: `purge_request`: ``` content = { 'msg_ids' : ['id1', 'id2',...], # list of msg_ids or 'all' 'engine_ids' : [0,2,4] # list of engine IDs } ``` The reply to a purge request is the status 'ok' if the request succeeded, or an explanation of why it failed, such as requesting the purge of a nonexistent or pending message. Message type: `purge_reply`: ``` content = { 'status' : 'ok', # or 'error' } ``` ## Schedulers There are three basic schedulers: > - Task Scheduler > - MUX Scheduler > - Control Scheduler The MUX and Control schedulers are simple MonitoredQueue ØMQ devices, with `ROUTER` sockets on either side. This allows the queue to relay individual messages to particular targets via `zmq.IDENTITY` routing. The Task scheduler may be a MonitoredQueue ØMQ device, in which case the client-facing socket is `ROUTER`, and the engine-facing socket is `DEALER`. The result of this is that client-submitted messages are load-balanced via the `DEALER` socket, but the engine's replies to each message go to the requesting client. Raw `DEALER` scheduling is quite primitive, and doesn't allow message introspection, so there are also Python Schedulers that can be used. These Schedulers behave in much the same way as a MonitoredQueue does from the outside, but have rich internal logic to determine destinations, as well as handle dependency graphs Their sockets are always `ROUTER` on both sides. The Python task schedulers have an additional message type, which informs the Hub of the destination of a task as soon as that destination is known. Message type: `task_destination`: ``` content = { 'msg_id' : 'abcd-1234-...', # the msg's uuid 'engine_id' : '1234-abcd-...', # the destination engine's zmq.IDENTITY } ``` ### {func}`apply` In terms of message classes, the MUX scheduler and Task scheduler relay the exact same message types. Their only difference lies in how the destination is selected. The Namespace model suggests that execution be able to use the model: ``` ns.apply(f, *args, **kwargs) ``` which takes `f`, a function in the user's namespace, and executes `f(*args, **kwargs)` on a remote engine, returning the result (or, for non-blocking, information facilitating later retrieval of the result). This model, unlike the execute message which uses code as a string, must be able to send arbitrary (pickleable) Python objects. And ideally, copy as little data as we can. The `buffers` property of a Message was introduced for this purpose. Utility method {func}`build_apply_message` in {mod}`IPython.kernel.zmq.serialize` wraps a function signature and builds a sendable buffer format for minimal data copying (exactly zero copies of numpy array data or buffers or large strings). Message type: `apply_request`: ``` metadata = { 'after' : ['msg_id',...], # list of msg_ids or output of Dependency.as_dict() 'follow' : ['msg_id',...], # list of msg_ids or output of Dependency.as_dict() } content = {} buffers = ['...'] # at least 3 in length # as built by build_apply_message(f,args,kwargs) ``` after/follow represent task dependencies. 'after' corresponds to a time dependency. The request will not arrive at an engine until the 'after' dependency tasks have completed. 'follow' corresponds to a location dependency. The task will be submitted to the same engine as these msg_ids (see {class}`Dependency` docs for details). Message type: `apply_reply`: ``` content = { 'status' : 'ok' # 'ok' or 'error' # other error info here, as in other messages } buffers = ['...'] # either 1 or 2 in length # a serialization of the return value of f(*args,**kwargs) # only populated if status is 'ok' ``` All engine execution and data movement is performed via apply messages. ### Raw Data Publication `display_data` lets you publish _representations_ of data, such as images and html. This `data_pub` message lets you publish _actual raw data_, sent via message buffers. data_pub messages are constructed via the {func}`ipyparallel.datapub.publish_data` function: ```python from ipyparallel.datapub import publish_data ns = dict(x=my_array) publish_data(ns) ``` Message type: `data_pub`: ``` content = { # the keys of the data dict, after it has been unserialized 'keys' : ['a', 'b'] } # the namespace dict will be serialized in the message buffers, # which will have a length of at least one buffers = [b'pdict', ...] ``` The interpretation of a sequence of data_pub messages for a given parent request should be to update a single namespace with subsequent results. ## Control Messages Messages that interact with the engines, but are not meant to execute code, are submitted via the Control queue. These messages have high priority, and are thus received and handled before any execution requests. Clients may want to clear the namespace on the engine. There are no arguments nor information involved in this request, so the content is empty. Message type: `clear_request`: ``` content = {} ``` Message type: `clear_reply`: ``` content = { 'status' : 'ok' # 'ok' or 'error' # other error info here, as in other messages } ``` Clients may want to abort tasks that have not yet run. This can by done by message id, or all enqueued messages can be aborted if None is specified. Message type: `abort_request`: ``` content = { 'msg_ids' : ['1234-...', '...'] # list of msg_ids or None } ``` Message type: `abort_reply`: ``` content = { 'status' : 'ok' # 'ok' or 'error' # other error info here, as in other messages } ``` The last action a client may want to do is shutdown the kernel. If a kernel receives a shutdown request, then it aborts all queued messages, replies to the request, and exits. Message type: `shutdown_request`: ``` content = {} ``` Message type: `shutdown_reply`: ``` content = { 'status' : 'ok' # 'ok' or 'error' # other error info here, as in other messages } ``` ## Implementation There are a few differences in implementation between the `StreamSession` object used in the newparallel branch and the `Session` object, the main one being that messages are sent in parts, rather than as a single serialized object. `StreamSession` objects also take pack/unpack functions, which are to be used when serializing/deserializing objects. These can be any functions that translate to/from formats that ZMQ sockets can send (buffers,bytes, etc.). ### Split Sends Previously, messages were bundled as a single json object and one call to {func}`socket.send_json`. Since the hub inspects all messages, and doesn't need to see the content of the messages, which can be large, messages are now serialized and sent in pieces. All messages are sent in at least 4 parts: the header, the parent header, the metadata and the content. This allows the controller to unpack and inspect the (always small) header, without spending time unpacking the content unless the message is bound for the controller. Buffers are added on to the end of the message, and can be any objects that present the buffer interface. ipython-ipyparallel-14e3c43/docs/source/reference/mpi.md000066400000000000000000000105151520071063500233460ustar00rootroot00000000000000(parallel-mpi)= # Using MPI with IPython Often, a parallel algorithm will require moving data between the engines. One way of accomplishing this is by doing a pull and then a push using the direct view. However, this will be slow as all the data has to go through the controller to the client and then back through the controller, to its final destination. A much better way of moving data between engines is to use a message passing library, such as the Message Passing Interface ([MPI][]). IPython's parallel computing architecture has been designed from the ground up to integrate with MPI. This document describes how to use MPI with IPython. ## Additional installation requirements If you want to use MPI with IPython, you will need to install: - A standard MPI implementation such as [OpenMPI][] or MPICH. - The [mpi4py][] package. ```{note} The mpi4py package is not a strict requirement. However, you need to have _some_ way of calling MPI from Python. You also need some way of making sure that {func}`MPI_Init` is called when the IPython engines start up. There are a number of ways of doing this and a good number of associated subtleties. We highly recommend using mpi4py as it takes care of most of these problems. If you want to do something different, let us know and we can help you get started. ``` ## Starting the engines with MPI enabled To use code that calls MPI, there are typically two things that MPI requires. 1. The process that wants to call MPI must be started using {command}`mpiexec` or a batch system (like PBS) that has MPI support. 2. Once the process starts, it must call {func}`MPI_Init`. There are a couple of ways that you can start the IPython engines and get these things to happen. ### Automatic starting using {command}`mpiexec` and {command}`ipcluster` The easiest approach is to use the `MPI` Launcher, which will first start a controller and then a set of engines using {command}`mpiexec`: ```python cluster = ipp.Cluster(engines="mpi") cluster.start_cluster_sync() ``` or on the command-line ``` $ ipcluster start -n 4 --engines=mpi ``` ### Automatic starting using batch systems such as PBS or Slurm IPython Parallel also has launchers for several batch systems, including PBS, Slurm, SGE, LSF, HTCondor. Just like `mpi`, you can specify these as the controller ```python cluster = ipp.Cluster(engines="slurm", controller="slurm") ``` :::{versionadded} 8.0 The `controller` and `engines` arguments are new in IPython Parallel 8.0. In 7.x, these arguments had to be called `controller_launcher_class` and `engine_launcher_class`, respectively. ::: ## Actually using MPI Once the engines are running with MPI enabled, you are ready to go. You can now call any code that uses MPI in the IPython engines. And, all of this can be done interactively. Here we show a simple example that uses [mpi4py][] version 1.1.0 or later. First, lets define a function that uses MPI to calculate the sum of a distributed array. Save the following text in a file called {file}`psum.py`: ```python from mpi4py import MPI import numpy as np def psum(a): locsum = np.sum(a) rcvBuf = np.array(0.0, 'd') MPI.COMM_WORLD.Allreduce([locsum, MPI.DOUBLE], [rcvBuf, MPI.DOUBLE], op=MPI.SUM) return rcvBuf ``` Now, we can start an IPython cluster and use this function interactively. In this case, we create a distributed array and sum up all its elements in a distributed manner using our {func}`psum` function: ```ipython In [1]: import ipyparallel as ipp In [2]: cluster = ipp.Cluster(engines="mpi", n=4) In [3]: rc = cluster.start_and_connect_sync() In [4]: view = rc[:] In [5]: view.activate() # enable magics # run the contents of the file on each engine: In [6]: view.run('psum.py') In [6]: view.scatter('a', np.arange(16,dtype='float')) In [7]: view['a'] Out[7]: [array([ 0., 1., 2., 3.]), array([ 4., 5., 6., 7.]), array([ 8., 9., 10., 11.]), array([ 12., 13., 14., 15.])] In [8]: %px totalsum = psum(a) Parallel execution on engines: [0,1,2,3] In [9]: view['totalsum'] Out[9]: [120.0, 120.0, 120.0, 120.0] ``` Any Python code that makes calls to MPI can be used in this manner, including compiled C, C++ and Fortran libraries that have been exposed to Python. [mpi]: https://www.mcs.anl.gov/research/projects/mpi [mpi4py]: https://mpi4py.readthedocs.io/ [openmpi]: https://www.open-mpi.org ipython-ipyparallel-14e3c43/docs/source/reference/security.md000066400000000000000000000404341520071063500244330ustar00rootroot00000000000000(security)= # Security details of IPython Parallel IPython Parallel exposes the full power of the Python interpreter over a TCP/IP network (or BSD socket) for the purposes of parallel computing. This feature raises the important question of IPython's security model. This document gives details about this model and how it is implemented in IPython's architecture. ## Process and network topology To enable parallel computing, IPython has a number of different processes that run. These processes are discussed at length in the IPython documentation and are summarized here: - The IPython _engine_. This process is a full blown Python interpreter in which user code is executed. Multiple engines are started to make parallel computing possible. - The IPython _hub_. This process monitors a set of engines and schedulers, and keeps track of the state of the processes. It listens for registration connections from engines and clients, and monitor connections from schedulers. - The IPython _schedulers_. This is a set of processes that relay commands and results between clients and engines. They are typically on the same machine as the hub, and listen for connections from engines and clients, but connect to the Hub. - The IPython _client_. This process is typically an interactive Python process that is used to coordinate the engines to get a parallel computation done. Collectively, these processes are called an IPython _cluster_, and the hub and schedulers together are referred to as the _controller_. These processes communicate over any transport supported by ZeroMQ (tcp, pgm, ipc) with a well-defined topology. The IPython controller processes listen on sockets. Upon starting, an engine connects to a hub and sends a message requesting registration, to which the hub replies with connection information for the schedulers, and the engine then connects to the schedulers. These engine->hub and engine->scheduler connections persist for the lifetime of each engine. The IPython client also connects to the controller processes using a number of sockets. This is one socket per scheduler. These connections persist for the lifetime of the client only. A given IPython controller and set of engines typically has a relatively short lifetime, such as the duration of a single parallel computation performed by a single user. Finally, the hub, schedulers, engines, and client processes typically execute with the permissions of that same user. More specifically, the controller and engines are _not_ executed as root or with any other superuser or shared-user permissions. ## Application logic When running the IPython kernel to perform a parallel computation, a user connects an IPython client to send Python commands and data through the IPython schedulers to the IPython engines, where those commands are executed and the data processed. Via the client, a user can instruct the IPython engines to execute arbitrary Python commands. These Python commands can include calls to the system shell, access the filesystem, etc., as required by the user's application. From this perspective, when a user runs an IPython engine on a host, that engine has the same capabilities and permissions as the user themselves (as if they were logged onto the engine's host with a terminal). ### ZeroMQ and Connection files IPython uses ZeroMQ for networking. By default, no IPython connections are encrypted. Open ports listen only on localhost. When no encryption is used, messages are signed via HMAC digest using a shared key for authentication. As of IPython 7.1, all connections _can_ be authenticated and encrypted using [CurveZMQ][]. The key (whether the CurveZMQ key or HMAC digest key) is distributed to engines and clients via connection files. TCP connections can be tunneled over SSH. IPython supports both shell (`openssh`) and `paramiko` based tunnels for connections. In our architecture, the controller is the only process that listens on network ports, and is thus the main point of vulnerability. The standard model for secure connections is to designate that the controller listen on localhost, and use ssh-tunnels to connect clients and/or engines, or connect over a trusted private network. To connect and authenticate to the controller an engine or client needs some information that the controller has stored in a JSON file. The JSON files may need to be copied to a location where the clients and engines can find them. Typically, this is the {file}`~/.ipython/profile_default/security` directory on the host where the client/engine is running, which could be on a different filesystem than the controller. Once the JSON files are copied over, everything should work fine. Currently, there are two JSON files that the controller creates: ipcontroller-engine.json : This JSON file has the information necessary for an engine to connect to a controller. ipcontroller-client.json : The client's connection information. Similar to the engine file, but lists a different collection of ports. ipcontroller-client.json will look something like this, under default localhost circumstances: ```python { "ssh": "", "interface": "tcp://127.0.0.1", "registration": 54886, "control": 54888, "mux": 54890, "hb_ping": 54891, "hb_pong": 54892, "task": 54894, "iopub": 54896, "broadcast": [ 54900, 54901 ], "key": "7e99e423-c437d4daf7cf23ee84cae803", "location": "mylaptop", "pack": "json", "unpack": "json", "signature_scheme": "hmac-sha256" } ``` If, however, you are running the controller on a work node on a cluster, you will likely need to use ssh tunnels to connect clients from your laptop to it. You will also probably need to instruct the controller to listen for engines coming from other work nodes on the cluster. An example of ipcontroller-client.json, as created by: ``` $> ipcontroller --ip=* --ssh=login.mycluster.com ``` ```python { "ssh": "login.mycluster.com", "interface": "tcp://*", "registration": 55836, "control": 55837, "mux": 55839, "task": 55843, "task_scheme": "lru", "iopub": 55845, "notification": 55852, "broadcast": [ 55847, 55848, 55849 ], "key": "70bc97ac-e66ac5143885ca8b376d4cb7", "location": "mylaptop", "pack": "json", "unpack": "json", "signature_scheme": "hmac-sha256" } ``` More details of how these JSON files are used are given below. (secure-network)= ## Secure network connections ### Overview ZeroMQ supports encryption and authentication via a mechanism called [CurveZMQ][]. IPython Parallel supports CurveZMQ as of version 7.1. To enable CurveZMQ, set ```python c.IPController.enable_curve = True ``` in `ipcontroller_config.py`, or set the environment variable `IPP_ENABLE_CURVE=1`. When using CurveZMQ, all connections are authenticated using the controller's server key, which is distributed to engines and clients via connection files. This key is all that is needed to connect to an IPython cluster and execute code. Additionally, when using CurveZMQ, all communication is _encrypted_ using the controller's server key. Each client typically generates its own unique, short-lived key pair for its side of encrypted communication. When not using CurveZMQ, messages are not encrypted. ### Security without CurveZMQ When not using CurveZMQ, all ZeroMQ connections are not authenticated and not encrypted. For this reason, users of IPython must be very careful in managing connections, because an open TCP/IP socket presents access to arbitrary execution as the user on the engine machines. As a result, the default behavior of controller processes is to only listen for clients on the loopback interface, and remote clients must establish SSH tunnels to connect to the controller processes. ```{warning} If the controller's loopback interface is untrusted, then IPython should be considered vulnerable without CurveZMQ, and this extends to the loopback of all connected clients, which have opened a loopback port that is redirected to the controller's loopback port. ``` ### SSH Without CurveZMQ, ZeroMQ sockets themselves provide no security. SSH tunnels can be used to encrypt traffic across the network, but _at least_ loopback traffic will be unencrypted. A connection file file, such as `ipcontroller-client.json`, will contain information for connecting to the controller, possibly including the address of an ssh server through which the client is to tunnel. The Client object then creates tunnels using either [openssh][] or [paramiko][], depending on the platform. If users do not wish to use OpenSSH or Paramiko, or the tunneling utilities are insufficient, then they may construct the tunnels themselves, and connect clients and engines as if the controller were on loopback on the connecting machine. ### Authentication IPython uses a key-distribution model of authentication. Whether you are using CurveZMQ or message-digest signatures. In both cases, a single key is used for authentication, and the same key is distributed in `ipcontroller-{client|engine}.json`. There is exactly one shared key per cluster - it must be the same everywhere. Typically, the controller creates this key, and stores it in the private connection files `ipython-{engine|client}.json`. These files are typically stored in the `~/.ipython/profile_/security` directory, and are maintained as readable only by the owner, as is common practice with a user's keys in their `.ssh` directory. The key distribution model is the same for both security implementations, however the level of authentication is substantially different. If you are using CurveZMQ, _connections_ are authenticated using the server key. This means connections attempted without the key will be rejected, and no messages can be sent or received by unauthenticated clients. #### Authentication without CurveZMQ If not using CurveZMQ, connections are not authenticated, only _messages_ are authenticated. This means that _clients_ with access to the controller's ports, but without the key will be able to connect and send and receive messages, but the requests will be rejected. To protect users of shared machines, [HMAC] digests are used to sign messages, using the shared key. The Session object that handles the message protocol uses a unique key to verify valid messages. This can be any value specified by the user, but the default behavior is a pseudo-random 128-bit number, as generated by `uuid.uuid4()`. This key is used to initialize an HMAC object, which digests all messages, and includes that digest as a signature and part of the message. Every message that is unpacked (on Controller, Engine, and Client) will also be digested by the receiver, ensuring that the sender's key is the same as the receiver's. No messages that do not contain this key are acted upon in any way. The key itself is never sent over the network. ```{warning} It is important to note that the signatures protect against unauthorized messages, but, as there is no encryption, provide exactly no protection of data privacy. It is possible, however, to use a custom serialization scheme (via Session.packer/unpacker traits) that does incorporate your own encryption scheme. ``` ### Encryption Messages are only encrypted when using CurveZMQ, which provides perfect-forward security by issuing short-lived keys for each session. Knowing the distributed CurveZMQ key is _not enough_ to decrypt communication from another client. ## Specific security vulnerabilities There are a number of potential security vulnerabilities present in IPython's architecture. In this section we discuss those vulnerabilities and detail how the security architecture described above prevents them from being exploited. ### Unauthorized clients The IPython client can instruct the IPython engines to execute arbitrary Python code with the permissions of the user who started the engines. If an attacker were able to connect their own hostile IPython client to the IPython controller, they could instruct the engines to execute code. On the first level, this attack is prevented by requiring access to the controller's ports, which are recommended to only be open on loopback if the controller is on an untrusted local network. If the attacker does have access to the Controller's ports, then the attack is prevented by the capabilities based client authentication of the execution key. The relevant authentication information is encoded into the JSON file that clients must present to gain access to the IPython controller. By limiting the distribution of those keys, a user can grant access to only authorized persons, as with SSH keys. When using CurveZMQ, the connection will be rejected without the key. When not using CurveZMQ, _requests_ will be rejected if not signed by the key. It is highly unlikely that an execution key could be guessed by an attacker in a brute force guessing attack. A given instance of the IPython controller only runs for a relatively short amount of time (on the order of hours). Thus an attacker would have only a limited amount of time to test a search space of size 2\*\*128. For added security, users can have arbitrarily long keys. ```{warning} If the attacker has gained enough access to intercept loopback connections on _either_ the controller or client, then a duplicate message can be sent. CurveZMQ prevents replay attacks. To protect against this, CurveZMQ uses nonces. recipients only allow each signature once, and consider duplicates invalid. However, the duplicate message could be sent to _another_ recipient using the same key, and it would be considered valid. ``` ### Unauthorized engines If an attacker were able to connect a hostile engine to a user's controller, the user might unknowingly send sensitive code or data to the hostile engine. This attacker's engine would then have full access to that code and data. This type of attack is prevented in the same way as the unauthorized client attack, by requiring the authentication key to register the engine with the client. ### Unauthorized controllers It is also possible that an attacker could try to convince a user's IPython client or engine to connect to a hostile IPython controller. That controller would then have full access to the code and data sent between the IPython client and the IPython engines. Again, this attack is prevented through the capabilities in a connection file, which ensure that a client or engine connects to the correct controller. It is also important to note that the connection files also encode the IP address and port that the controller is listening on, so there is little chance of mistakenly connecting to a controller running on a different IP address and port. When starting an engine or client, a user must specify the key to use for that connection. Thus, in order to introduce a hostile controller, the attacker must convince the user to use the key associated with the hostile controller. As long as a user is diligent in only using keys from trusted sources, this attack is not possible. ## Other security measures A number of other measures are taken to further limit the security risks involved in running the IPython kernel. First, by default, the IPython controller listens on random port numbers. While this can be overridden by the user, in the default configuration, an attacker would have to do a port scan to find a controller to attack. When coupled with the relatively short running time of a typical controller (on the order of hours), scans would have to be constant. Second, much of the time, especially when run on supercomputers or clusters, the controller is running behind a firewall. Thus, for engines or client to connect to the controller: - The different processes have to all be behind the firewall. or: - The user has to use SSH port forwarding to tunnel the connections through the firewall. In either case, an attacker is presented with additional barriers that prevent attacking or even probing the system, because they must have access to localhost on either the controller node or the client's machine. ## Summary IPython's architecture has been carefully designed with security in mind. The capabilities-based authentication model, in conjunction with CurveZMQ, ipc file permissions, and and/or SSH tunneled TCP/IP channels, address the core potential vulnerabilities in the system, while still enabling user's to use the system in open networks. [openssh]: https://www.openssh.org [paramiko]: https://www.lag.net/paramiko [hmac]: https://datatracker.ietf.org/doc/html/rfc2104 [curvezmq]: https://rfc.zeromq.org/spec/26/ ipython-ipyparallel-14e3c43/docs/source/tutorial/000077500000000000000000000000001520071063500221425ustar00rootroot00000000000000ipython-ipyparallel-14e3c43/docs/source/tutorial/asyncresult.md000066400000000000000000000116671520071063500250530ustar00rootroot00000000000000(asyncresult)= # The AsyncResult object In non-blocking mode, {meth}`~.View.apply`, {meth}`~.View.map`, and friends submit the command to be executed and then return an {class}`~.AsyncResult` object immediately. The AsyncResult object gives you a way of getting a result at a later time through its {meth}`get` method, but it also collects metadata on execution. ## Beyond stdlib AsyncResult and Future The {class}`AsyncResult` is a subclass of {py:class}`concurrent.futures.Future`. This means it can be integrated into existing async workflows, with e.g. {py:func}`asyncio.wrap_future`. It also extends the {py:class}`~.multiprocessing.AsyncResult` API. ```{seealso} - {py:class}`multiprocessing.AsyncResult` API - {py:class}`concurrent.futures.Future` API ``` In addition to these common features, our AsyncResult objects add a number of convenient methods for working with parallel results, beyond what is provided by the standard library classes on which they are based. ### get_dict {meth}`.AsyncResult.get_dict` pulls results as a dictionary, keyed by engine_id, rather than a flat list. This is useful for quickly coordinating or distributing information about all of the engines. As an example, here is a quick call that gives every engine a dict showing the PID of every other engine: ```ipython In [10]: ar = rc[:].apply_async(os.getpid) In [11]: pids = ar.get_dict() In [12]: rc[:]['pid_map'] = pids ``` This trick is particularly useful when setting up inter-engine communication, as in IPython's {file}`examples/parallel/interengine` examples. ## Metadata IPython Parallel tracks some metadata about the tasks, which is stored in the {attr}`.Client.metadata` dict. The AsyncResult object gives you an interface for this information as well, including timestamps stdout/err, and engine IDs. ### Timing IPython tracks various timestamps as {py:class}`.datetime` objects, and the AsyncResult object has a few properties that turn these into useful times (in seconds as floats). For use while the tasks are still pending: - {attr}`ar.elapsed` is the elapsed seconds since submission, for use before the AsyncResult is complete. - {attr}`ar.progress` is the number of tasks that have completed. Fractional progress would be: ``` 1.0 * ar.progress / len(ar) ``` - {meth}`AsyncResult.wait_interactive` will wait for the result to finish, but print out status updates on progress and elapsed time while it waits. For use after the tasks are done: - {attr}`ar.serial_time` is the sum of the computation time of all of the tasks done in parallel. - {attr}`ar.wall_time` is the time between the first task submitted and last result received. This is the actual cost of computation, including IPython overhead. ```{note} wall_time is only precise if the Client is waiting for results when the task finished, because the `received` timestamp is made when the result is unpacked by the Client, triggered by the {meth}`~Client.spin` call. If you are doing work in the Client, and not waiting/spinning, then `received` might be artificially high. ``` An often interesting metric is the time it cost to do the work in parallel relative to the serial computation, and this can be given with ```python speedup = ar.serial_time / ar.wall_time ``` ## Map results are iterable! When an AsyncResult object has multiple results (e.g. the {class}`~AsyncMapResult` object), you can iterate through results themselves, and act on them as they arrive: ```{literalinclude} ../examples/itermapresult.py :language: python :lines: 20-67 ``` That is to say, if you treat an AsyncMapResult as if it were a list of your actual results, it should behave as you would expect, with the only difference being that you can start iterating through the results before they have even been computed. This lets you do a simple version of map/reduce with the builtin Python functions, and the only difference between doing this locally and doing it remotely in parallel is using the asynchronous `view.map` instead of the builtin `map`. Here is a simple one-line RMS (root-mean-square) implemented with Python's builtin map/reduce. ```ipython In [38]: X = np.linspace(0,100) In [39]: from math import sqrt In [40]: add = lambda a,b: a+b In [41]: sq = lambda x: x*x In [42]: sqrt(reduce(add, map(sq, X)) / len(X)) Out[42]: 58.028845747399714 In [43]: sqrt(reduce(add, view.map(sq, X)) / len(X)) Out[43]: 58.028845747399714 ``` To break that down: 1. `map(sq, X)` Compute the square of each element in the list (locally, or in parallel) 2. `reduce(add, sqX) / len(X)` compute the mean by summing over the list (or AsyncMapResult) and dividing by the size 3. take the square root of the resulting number ```{seealso} When AsyncResult or the AsyncMapResult don't provide what you need (for instance, handling individual results as they arrive, but with metadata), you can always split the original result's `msg_ids` attribute, and handle them as you like. For an example of this, see {file}`examples/customresult.py` ``` ipython-ipyparallel-14e3c43/docs/source/tutorial/demos.md000066400000000000000000000166571520071063500236120ustar00rootroot00000000000000(parallel-examples)= # Parallel examples In this section we describe two more involved examples of using an IPython cluster to perform a parallel computation. We will be doing some plotting, so we start IPython with matplotlib integration by typing: ``` ipython --matplotlib ``` at the system command line. Or you can enable matplotlib integration at any point with: ```ipython In [1]: %matplotlib ``` ## 150 million digits of pi In this example we would like to study the distribution of digits in the number pi (in base 10). While it is not known if pi is a normal number (a number is normal in base 10 if 0-9 occur with equal likelihood) numerical investigations suggest that it is. We will begin with a serial calculation on 10,000 digits of pi and then perform a parallel calculation involving 150 million digits. In both the serial and parallel calculation we will be using functions defined in the {file}`pidigits.py` file, which is available in the {file}`examples/parallel` directory of the IPython source distribution. These functions provide basic facilities for working with the digits of pi and can be loaded into IPython by putting {file}`pidigits.py` in your current working directory and then doing: ```ipython In [1]: run pidigits.py ``` ### Serial calculation For the serial calculation, we will use [SymPy](https://www.sympy.org) to calculate 10,000 digits of pi and then look at the frequencies of the digits 0-9. Out of 10,000 digits, we expect each digit to occur 1,000 times. While SymPy is capable of calculating many more digits of pi, our purpose here is to set the stage for the much larger parallel calculation. In this example, we use two functions from {file}`pidigits.py`: {func}`one_digit_freqs` (which calculates how many times each digit occurs) and {func}`plot_one_digit_freqs` (which uses Matplotlib to plot the result). Here is an interactive IPython session that uses these functions with SymPy: ```ipython In [7]: import sympy In [8]: pi = sympy.pi.evalf(40) In [9]: pi Out[9]: 3.141592653589793238462643383279502884197 In [10]: pi = sympy.pi.evalf(10000) In [11]: digits = (d for d in str(pi)[2:]) # create a sequence of digits In [13]: freqs = one_digit_freqs(digits) In [14]: plot_one_digit_freqs(freqs) Out[14]: [] ``` The resulting plot of the single digit counts shows that each digit occurs approximately 1,000 times, but that with only 10,000 digits the statistical fluctuations are still rather large: ```{image} figs/single_digits.* ``` It is clear that to reduce the relative fluctuations in the counts, we need to look at many more digits of pi. That brings us to the parallel calculation. ### Parallel calculation Calculating many digits of pi is a challenging computational problem in itself. Because we want to focus on the distribution of digits in this example, we will use pre-computed digit of pi from the website of Professor Yasumasa Kanada at the University of Tokyo (). These digits come in a set of text files () that each have 10 million digits of pi. For the parallel calculation, we have copied these files to the local hard drives of the compute nodes. A total of 15 of these files will be used, for a total of 150 million digits of pi. To make things a little more interesting we will calculate the frequencies of all 2 digits sequences (00-99) and then plot the result using a 2D matrix in Matplotlib. The overall idea of the calculation is simple: each IPython engine will compute the two digit counts for the digits in a single file. Then in a final step the counts from each engine will be added up. To perform this calculation, we will need two top-level functions from {file}`pidigits.py`, {func}`compute_two_digit_freqs` and {func}`reduce_freqs`: ```{literalinclude} ../examples/pi/pidigits.py :language: python :lines: 52-67 ``` We will also use the {func}`plot_two_digit_freqs` function to plot the results. The code to run this calculation in parallel is contained in {file}`examples/parallel/parallelpi.py`. This code can be run in parallel using IPython by following these steps: 1. Use {command}`ipcluster` to start 15 engines. We used 16 cores of an SGE linux cluster (1 controller + 15 engines). 2. With the file {file}`parallelpi.py` in your current working directory, open up IPython, enable matplotlib, and type `run parallelpi.py`. This will download the pi files via ftp the first time you run it, if they are not present in the Engines' working directory. When run on our 16 cores, we observe a speedup of 14.2x. This is slightly less than linear scaling (16x) because the controller is also running on one of the cores. To emphasize the interactive nature of IPython, we now show how the calculation can also be run by typing the commands from {file}`parallelpi.py` interactively into IPython: ```ipython In [1]: import ipyparallel as ipp # The Client allows us to use the engines interactively. # We pass Client the name of the cluster profile we # are using. In [2]: c = ipp.Client(profile='mycluster') In [3]: v = c[:] In [3]: c.ids Out[3]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14] In [4]: run pidigits.py In [5]: filestring = 'pi200m.ascii.%(i)02dof20' # Create the list of files to process. In [6]: files = [filestring % {'i':i} for i in range(1,16)] In [7]: files Out[7]: ['pi200m.ascii.01of20', 'pi200m.ascii.02of20', 'pi200m.ascii.03of20', 'pi200m.ascii.04of20', 'pi200m.ascii.05of20', 'pi200m.ascii.06of20', 'pi200m.ascii.07of20', 'pi200m.ascii.08of20', 'pi200m.ascii.09of20', 'pi200m.ascii.10of20', 'pi200m.ascii.11of20', 'pi200m.ascii.12of20', 'pi200m.ascii.13of20', 'pi200m.ascii.14of20', 'pi200m.ascii.15of20'] # download the data files if they don't already exist: In [8]: v.map(fetch_pi_file, files) # This is the parallel calculation using the Client.map method # which applies compute_two_digit_freqs to each file in files in parallel. In [9]: freqs_all = v.map(compute_two_digit_freqs, files) # Add up the frequencies from each engine. In [10]: freqs = reduce_freqs(freqs_all) In [11]: plot_two_digit_freqs(freqs) Out[11]: In [12]: plt.title('2 digit counts of 150m digits of pi') Out[12]: ``` The resulting plot generated by Matplotlib is shown below. The colors indicate which two digit sequences are more (red) or less (blue) likely to occur in the first 150 million digits of pi. We clearly see that the sequence "41" is most likely and that "06" and "07" are least likely. Further analysis would show that the relative size of the statistical fluctuations have decreased compared to the 10,000 digit calculation. ```{image} figs/two_digit_counts.* ``` ## Conclusion To conclude these examples, we summarize the key features of IPython's parallel architecture that have been demonstrated: - Serial code can be parallelized often with only a few extra lines of code. We have used the {class}`DirectView` and {class}`LoadBalancedView` classes for this purpose. - The resulting parallel code can be run without ever leaving the IPython's interactive shell. - Any data computed in parallel can be explored interactively through visualization or further numerical calculations. - We have run these examples on a cluster running RHEL 5 and Sun GridEngine. IPython's built in support for SGE (and other batch systems) makes it easy to get started with IPython's parallel capabilities. ipython-ipyparallel-14e3c43/docs/source/tutorial/direct.md000066400000000000000000000565731520071063500237560ustar00rootroot00000000000000(parallel-direct)= # IPython's Direct interface The direct interface represents one possible way of working with a set of IPython engines. The basic idea behind the direct interface is that the capabilities of each engine are directly and explicitly exposed to the user. Thus, in the direct interface, each engine is given an id that is used to identify the engine and give it work to do. This interface is very intuitive and is designed with interactive usage in mind, and is the best place for new users of IPython to begin. ## Starting the IPython controller and engines In general, in this tutorial, each step will start with a fresh cluster. There is always a choice when starting an interactive session: Option 1. starting a new cluster ```python import ipyparallel as ipp cluster = ipp.Cluster(n=4) cluster.start_cluster_sync() ``` Option 2. connecting to an existing cluster, e.g. if it were started via {command}`ipcluster start` or another notebook, or a JupyterLab extension. ```python import ipyparallel as ipp cluster = ipp.Cluster.from_file() ``` No arguments are required for the default cluster (e.g. `ipcluster start` with no arguments), but `profile` and/or `cluster_id` would be typical arguments to specify a cluster. For more detailed information about starting the controller and engines, see our {ref}`introduction ` to using IPython for parallel computing. ## Creating a `DirectView` The first step is to connect a {class}`.Client` to your cluster: ```ipython In [2]: rc = cluster.connect_client_sync() ``` To make sure there are engines connected to the controller, users can get a list of engine ids: ```ipython In [3]: rc.wait_for_engines(4); rc.ids Out[3]: [0, 1, 2, 3] ``` Here we see that there are four engines ready to do work for us. For direct execution, we will make use of a {class}`DirectView` object, which can be constructed via list-access to the client: ```ipython In [4]: dview = rc[:] # use all engines ``` ```{seealso} For more information, see the in-depth explanation of {ref}`Views `. ``` ## Quick and easy parallelism In many cases, you want to call a Python function on a sequence of objects, but _in parallel_. IPython Parallel provides a simple way of accomplishing this: using the DirectView's {meth}`~DirectView.map` method. ### Parallel map Python's builtin {func}`map` functions allows a function to be applied to a sequence element-by-element. This type of code is typically trivial to parallelize. In fact, since IPython's interface is all about functions anyway, you can use the builtin {func}`map` with a {class}`RemoteFunction`, or a DirectView's {meth}`map` method: ```ipython In [62]: serial_result = list(map(lambda x:x**10, range(32))) In [63]: parallel_result = dview.map_sync(lambda x: x**10, range(32)) In [64]: serial_result == parallel_result Out[64]: True ``` ```{note} The {class}`DirectView`'s version of {meth}`map` does not do dynamic load balancing. For a load-balanced version, use a {class}`LoadBalancedView`. ``` ## Calling Python functions The most basic type of operation that can be performed on the engines is to execute Python code or call Python functions. Executing Python code can be done in blocking or non-blocking mode (non-blocking is default) using the {meth}`.View.execute` method, and calling functions can be done via the {meth}`.View.apply` method. ### apply The main method for doing remote execution (in fact, almost all methods that communicate with the engines are built on top of it), is {meth}`View.apply`. We strive to provide the cleanest interface we can, so `apply` has the following signature: ```python view.apply(f, *args, **kwargs) ``` There are some controls to influence the behavior of `apply`, called flags. Views store the default values for these flags as attributes. The `DirectView` has these flags: dv.block : whether to wait for the result, or return an {class}`AsyncResult` object immediately dv.track : whether to instruct pyzmq to track when zeromq is done sending the message. This is primarily useful for non-copying sends of numpy arrays that you plan to edit in-place. You need to know when it becomes safe to edit the buffer without corrupting the message. There is a performance cost to enabling tracking, so it is not recommended except for sending very large messages. dv.targets : The engines associated with this View. Creating a view is done as if the client is a Python 'container' of engines: index-access on a client creates a {class}`.DirectView`. ```ipython In [4]: view = rc[1:3] Out[4]: In [5]: view.apply view.apply view.apply_async view.apply_sync ``` For convenience, you can specify blocking behavior explicitly for a single call with the extra sync/async methods. ### Blocking execution In blocking mode, the {class}`.DirectView` object (called `dview` in these examples) submits the command to the controller, which places the command in the engines' queues for execution. The {meth}`apply` call then blocks until the engines are done executing the command: ```ipython In [2]: dview = rc[:] # A DirectView of all engines In [3]: dview.block=True In [4]: dview['a'] = 5 In [5]: dview['b'] = 10 In [6]: dview.apply(lambda x: a+b+x, 27) Out[6]: [42, 42, 42, 42] ``` You can also select blocking execution on a call-by-call basis with the {meth}`apply_sync` method: ```ipython In [7]: dview.block = False In [8]: dview.apply_sync(lambda x: a+b+x, 27) Out[8]: [42, 42, 42, 42] ``` Python commands can be executed as strings on specific engines by using a View's `execute` method: ```ipython In [6]: rc[::2].execute('c = a + b') In [7]: rc[1::2].execute('c = a - b') In [8]: dview['c'] # shorthand for dview.pull('c', block=True) Out[8]: [15, -5, 15, -5] ``` ### async execution In non-blocking (async) mode, {meth}`apply` submits the command to be executed and then returns a {class}`AsyncResult` object immediately. The {class}`AsyncResult` object gives you a way of getting a result at a later time through its {meth}`get` method. ```{seealso} Docs on the {ref}`AsyncResult ` object. ``` This allows you to quickly submit long-running commands without blocking your local IPython session: ```ipython # define our function In [6]: def wait(t): ....: import time ....: tic = time.time() ....: time.sleep(t) ....: return time.time()-tic # In non-blocking mode In [7]: ar = dview.apply_async(wait, 2) # Now block for the result In [8]: ar.get() Out[8]: [2.0006198883056641, 1.9997570514678955, 1.9996809959411621, 2.0003249645233154] # Again in non-blocking mode In [9]: ar = dview.apply_async(wait, 10) # Poll to see if the result is ready In [10]: ar.ready() Out[10]: False # ask for the result, but wait a maximum of 1 second: In [45]: ar.get(1) --------------------------------------------------------------------------- TimeoutError Traceback (most recent call last) /home/you/ in () ----> 1 ar.get(1) /path/to/site-packages/IPython/parallel/asyncresult.pyc in get(self, timeout) 62 raise self._exception 63 else: ---> 64 raise error.TimeoutError("Result not ready.") 65 66 def ready(self): TimeoutError: Result not ready. ``` ```{Note} Note the import inside the function. This is a common model, to ensure that the appropriate modules are imported where the task is run. You can also manually import modules into the engine(s) namespace(s) via `view.execute('import numpy')`. ``` Often, it is desirable to wait until a set of {class}`AsyncResult` objects are done. For this, there is a the method {meth}`wait`. This method takes a collection of {class}`AsyncResult` objects (or `msg_ids` or integer indices to the client's history), and blocks until all of the associated results are ready: ```ipython In [72]: dview.block = False # A trivial list of AsyncResults objects In [73]: ar_list = [dview.apply_async(wait, 3) for i in range(10)] # Wait until all of them are done In [74]: dview.wait(ar_list) # Then, their results are ready using get() In [75]: ar_list[0].get() Out[75]: [2.9982571601867676, 2.9982588291168213, 2.9987530708312988, 2.9990990161895752] ``` ### The `block` and `targets` keyword arguments and attributes Most DirectView methods (excluding {meth}`apply`) accept `block` and `targets` as keyword arguments. As we have seen above, these keyword arguments control the blocking mode and which engines the command is applied to. The {class}`View` class also has {attr}`block` and {attr}`targets` attributes that control the default behavior when the keyword arguments are not provided. Thus the following logic is used for {attr}`block` and {attr}`targets`: - If no keyword argument is provided, the instance attributes are used. - The keyword arguments, if provided overrides the instance attributes for the duration of a single call. The following examples demonstrate how to use the instance attributes: ```ipython In [16]: dview.targets = [0, 2] In [17]: dview.block = False In [18]: ar = dview.apply(lambda : 10) In [19]: ar.get() Out[19]: [10, 10] In [20]: dview.targets = rc.ids # all engines (4) In [21]: dview.block = True In [22]: dview.apply(lambda : 42) Out[22]: [42, 42, 42, 42] ``` The {attr}`block` and {attr}`targets` instance attributes of the {class}`.DirectView` also determine the behavior of the parallel magic commands. ```{seealso} See the documentation of the {ref}`Parallel Magics `. ``` ## Moving Python objects around In addition to calling functions and executing code on engines, you can transfer Python objects between your IPython session and the engines. In IPython, these operations are called {meth}`push` (sending an object to the engines) and {meth}`pull` (getting an object from the engines). ### Basic push and pull Here are some examples of how you use {meth}`push` and {meth}`pull`: ```ipython In [38]: dview.push(dict(a=1.03234, b=3453)) Out[38]: [None, None, None, None] In [39]: dview.pull('a') Out[39]: [ 1.03234, 1.03234, 1.03234, 1.03234] In [40]: dview.pull('b', targets=0) Out[40]: 3453 In [41]: dview.pull(('a', 'b')) Out[41]: [ [1.03234, 3453], [1.03234, 3453], [1.03234, 3453], [1.03234, 3453] ] In [42]: dview.push(dict(c='speed')) Out[42]: [None, None, None, None] ``` In non-blocking mode {meth}`push` and {meth}`pull` also return {class}`AsyncResult` objects: ```ipython In [48]: ar = dview.pull('a', block=False) In [49]: ar.get() Out[49]: [1.03234, 1.03234, 1.03234, 1.03234] ``` ### Dictionary interface Since a Python namespace is a {class}`dict`, {class}`DirectView` objects provide dictionary-style access by key and methods such as {meth}`get` and {meth}`update` for convenience. This make the remote namespaces of the engines appear as a local dictionary. Underneath, these methods call {meth}`apply`: ```ipython In [51]: dview['a'] = ['foo', 'bar'] In [52]: dview['a'] Out[52]: [ ['foo', 'bar'], ['foo', 'bar'], ['foo', 'bar'], ['foo', 'bar'] ] ``` ### Scatter and gather Sometimes it is useful to partition a sequence and push the partitions to different engines. In MPI language, this is know as scatter/gather and we follow that terminology. However, it is important to remember that in IPython's {class}`Client` class, {meth}`scatter` is from the interactive IPython session to the engines and {meth}`gather` is from the engines back to the interactive IPython session. For scatter/gather operations between engines, MPI, pyzmq, or some other direct interconnect should be used. ```ipython In [58]: dview.scatter('a',range(16)) Out[58]: [None,None,None,None] In [59]: dview['a'] Out[59]: [ [0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11], [12, 13, 14, 15] ] In [60]: dview.gather('a') # This will show you the status of gather. Out[60]: In [61]: dview.gather('a').get() # This will give you the result. Out[61]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15] In [62]: dview.gather('a')[3] # You can also direct call the result. Out[62]: [2] ``` ## Other things to look at ### Signaling engines New in IPython Parallel 7.0 is the {meth}`Client.send_signal` method. This lets you directly interrupt engines, which might be running a blocking task that you want to cancel. This is also available via the Cluster API. Unlike the Cluster API, though, which only allows interrupting whole engine 'sets' (usally all engines in the cluster), the client API allows interrupting individual engines. ```ipython In [9]: ar = rc[:].apply_async(time.sleep, 5) In [10]: rc.send_signal(signal.SIGINT) Out[10]: In [11]: ar.get() [12:apply]: --------------------------------------------------------------------------- KeyboardInterrupt Traceback (most recent call last) in KeyboardInterrupt: [13:apply]: --------------------------------------------------------------------------- KeyboardInterrupt Traceback (most recent call last) in KeyboardInterrupt: [14:apply]: --------------------------------------------------------------------------- KeyboardInterrupt Traceback (most recent call last) in KeyboardInterrupt: [15:apply]: --------------------------------------------------------------------------- KeyboardInterrupt Traceback (most recent call last) in KeyboardInterrupt: ``` ### Remote function decorators Remote functions are like normal functions, but when they are called they execute on one or more engines rather than locally. IPython provides two decorators for producing parallel functions. The first is `@remote`, which calls the function on every engine of a view. ```ipython In [10]: @dview.remote(block=True) ....: def getpid(): ....: import os ....: return os.getpid() ....: In [11]: getpid() Out[11]: [12345, 12346, 12347, 12348] ``` The `@parallel` decorator creates parallel functions, that break up an element-wise operations and distribute them, reconstructing the result. ```ipython In [12]: import numpy as np In [13]: A = np.random.random((64,48)) In [14]: @dview.parallel(block=True) ....: def pmul(A,B): ....: return A*B In [15]: C_local = A*A In [16]: C_remote = pmul(A,A) In [17]: (C_local == C_remote).all() Out[17]: True ``` Calling a `@parallel` function _does not_ correspond to map. It is used for splitting element-wise operations that operate on a sequence or array. For `map` behavior, parallel functions have a map _method_. | call | pfunc(seq) | pfunc.map(seq) | | ------------------ | --------------------------- | --------------------------- | | # of tasks | # of engines (1 per engine) | # of engines (1 per engine) | | # of remote calls | # of engines (1 per engine) | `len(seq)` | | argument to remote | `seq[i:j]` (sub-sequence) | `seq[i]` (single element) | A quick example to illustrate the difference in arguments for the two modes: ```ipython In [16]: @dview.parallel(block=True) ....: def echo(x): ....: return str(x) In [17]: echo(range(5)) Out[17]: ['[0, 1]', '[2]', '[3]', '[4]'] In [18]: echo.map(range(5)) Out[18]: ['0', '1', '2', '3', '4'] ``` ```{seealso} See the {func}`~.remotefunction.parallel` and {func}`~.remotefunction.remote` decorators for options. ``` ### How to do parallel list comprehensions In many cases list comprehensions are nicer than using the map function. While we don't have fully parallel list comprehensions, it is simple to get the basic effect using {meth}`scatter` and {meth}`gather`: ```ipython In [66]: dview.scatter('x',range(64)) In [67]: %px y = [i**10 for i in x] Parallel execution on engines: [0, 1, 2, 3] In [68]: y = dview.gather('y') In [69]: print y [0, 1, 1024, 59049, 1048576, 9765625, 60466176, 282475249, 1073741824,...] ``` ### Remote imports Sometimes you may want to import packages both in your interactive session and on your remote engines. This can be done with the context manager created by a DirectView's {meth}`sync_imports` method: ```ipython In [69]: with dview.sync_imports(): ....: import numpy importing numpy on engine(s) ``` Any imports made inside the block will also be performed on the view's engines. sync_imports also takes a `local` boolean flag that defaults to True, which specifies whether the local imports should also be performed. However, support for `local=False` has not been implemented, so only packages that can be imported locally will work this way. Note that the usual renaming of the import handle in the same line like in `import matplotlib.pyplot as plt` does not work on the remote engine, the `as plt` is ignored remotely, while it executes locally. One could rename the remote handle with `%px plt = pyplot` though after the import. You can also specify imports via the `@ipp.require` decorator. This is a decorator designed for use in dependencies, but can be used to handle remote imports as well. Modules or module names passed to `@ipp.require` will be imported before the decorated function is called. If they cannot be imported, the decorated function will never execute and will fail with an UnmetDependencyError. Failures of single Engines will be collected and raise a CompositeError, as demonstrated in the next section. ```ipython In [70]: @ipp.require('re') ....: def findall(pat, x): ....: # re is guaranteed to be available ....: return re.findall(pat, x) # you can also pass modules themselves, that you already have locally: In [71]: @ipp.require(time) ....: def wait(t): ....: time.sleep(t) ....: return t ``` ```{note} {func}`sync_imports` does not allow `import foo as bar` syntax, because the assignment represented by the `as bar` part is not available to the import hook. ``` (parallel-exceptions)= ### Parallel exceptions Parallel commands can raise Python exceptions, just like serial commands. This is complicated by the fact that a single parallel command can raise multiple exceptions (one for each engine the command was run on). To express this idea, we have a {exc}`CompositeError` exception class that will be raised when there are mulitple errors. The {exc}`CompositeError` class is a special type of exception that wraps one or more other exceptions. Here is how it works: ```ipython In [78]: dview.block = True In [79]: dview.execute("1/0") [0:execute]: --------------------------------------------------------------------------- ZeroDivisionError Traceback (most recent call last) ----> 1 1/0 ZeroDivisionError: integer division or modulo by zero [1:execute]: --------------------------------------------------------------------------- ZeroDivisionError Traceback (most recent call last) ----> 1 1/0 ZeroDivisionError: integer division or modulo by zero [2:execute]: --------------------------------------------------------------------------- ZeroDivisionError Traceback (most recent call last) ----> 1 1/0 ZeroDivisionError: integer division or modulo by zero [3:execute]: --------------------------------------------------------------------------- ZeroDivisionError Traceback (most recent call last) ----> 1 1/0 ZeroDivisionError: integer division or modulo by zero ``` Notice how the error message printed when {exc}`CompositeError` is raised has information about the individual exceptions that were raised on each engine. If you want, you can even raise one of these original exceptions: ```ipython In [80]: try: ....: dview.execute('1/0', block=True) ....: except ipp.CompositeError as e: ....: e.raise_exception() ....: ....: --------------------------------------------------------------------------- ZeroDivisionError Traceback (most recent call last) ----> 1 1/0 ZeroDivisionError: integer division or modulo by zero ``` If you are working in IPython, you can type `%debug` after one of these {exc}`CompositeError` exceptions is raised and inspect the exception: ```ipython In [81]: dview.execute('1/0') [0:execute]: --------------------------------------------------------------------------- ZeroDivisionError Traceback (most recent call last) ----> 1 1/0 ZeroDivisionError: integer division or modulo by zero [1:execute]: --------------------------------------------------------------------------- ZeroDivisionError Traceback (most recent call last) ----> 1 1/0 ZeroDivisionError: integer division or modulo by zero [2:execute]: --------------------------------------------------------------------------- ZeroDivisionError Traceback (most recent call last) ----> 1 1/0 ZeroDivisionError: integer division or modulo by zero [3:execute]: --------------------------------------------------------------------------- ZeroDivisionError Traceback (most recent call last) ----> 1 1/0 ZeroDivisionError: integer division or modulo by zero In [82]: %debug > /.../site-packages/IPython/parallel/client/asyncresult.py(125)get() 124 else: --> 125 raise self._exception 126 else: # Here, self._exception is the CompositeError instance: ipdb> e = self._exception ipdb> e CompositeError(4) # we can tab-complete on e to see available methods: ipdb> e. e.args e.message e.traceback e.elist e.msg e.ename e.print_traceback e.engine_info e.raise_exception e.evalue e.render_traceback # We can then display the individual tracebacks, if we want: ipdb> e.print_traceback(1) [1:execute]: --------------------------------------------------------------------------- ZeroDivisionError Traceback (most recent call last) ----> 1 1/0 ZeroDivisionError: integer division or modulo by zero ``` If you have 100 engines, you probably don't want to see 100 identical tracebacks for a NameError because of a small typo. For this reason, CompositeError truncates the list of exceptions it will print to {attr}`CompositeError.tb_limit` (default is five). You can change this limit to suit your needs with: ```ipython In [21]: ipp.CompositeError.tb_limit = 1 In [22]: %px x=z [0:execute]: --------------------------------------------------------------------------- NameError Traceback (most recent call last) ----> 1 x=z NameError: name 'z' is not defined ... 3 more exceptions ... ``` All of this same error handling magic works the same in non-blocking mode: ```ipython In [83]: dview.block=False In [84]: ar = dview.execute('1/0') In [85]: ar.get() [0:execute]: --------------------------------------------------------------------------- ZeroDivisionError Traceback (most recent call last) ----> 1 1/0 ZeroDivisionError: integer division or modulo by zero ... 3 more exceptions ... ``` Sometimes you still want to get the successful subset, even when there was an error. Like {py:func}`asyncio.gather`, {meth}`.AsyncResult.get` and map functions accept a `return_exception` argument (new in IPython Parallel 7.0), to return the Exception objects among results instead of raising the first error encountered. ```ipython In [89]: ar = dview.apply_async(lambda: 1/0) In [90]: ar.get(return_exceptions=True) Out[90]: [, , , ] ``` ```{versionadded} 7.0 The `return_exceptions` feature ``` ``` ipython-ipyparallel-14e3c43/docs/source/tutorial/figs/000077500000000000000000000000001520071063500230725ustar00rootroot00000000000000ipython-ipyparallel-14e3c43/docs/source/tutorial/figs/asian_call.pdf000066400000000000000000000311001520071063500256460ustar00rootroot00000000000000%PDF-1.4 %¬Ü «º 1 0 obj << /Type /Catalog /Pages 2 0 R >> endobj 8 0 obj << /XObject 7 0 R /Pattern 5 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] /ExtGState 4 0 R /Shading 6 0 R /Font 3 0 R >> endobj 10 0 obj << /Contents 9 0 R /Type /Page /Resources 8 0 R /Parent 2 0 R /MediaBox [ 0 0 576 432 ] >> endobj 9 0 obj << /Filter /FlateDecode /Length 11 0 R >> stream xœÅXÉ®5Ý÷WôÛåò°$"eÅðëxáÝ „HÏñìÛmßûv¬Úv»ëÔpª\nµ¿ÛôþjWû»Ü?ãùr“]vvϧô4¤1’åùçö{^nNïl°Óè T?Õ1y/<¦®ãWöü ±K»ÈàÕÇ7û¯û{HµGd)œg-MJí£V ‰´>¢a¬�ä-“—qÓÓ®´Îz¥¼—ZÕ½X·Jh¿6©´Õ2ê¢|V:)Ù훊yûLù¦Àö3~ÜŸaˆÐ¬ƒQÊYÞGC4c¯/†(‚Þ앵Ø5`-Ø[ë¤ÁbÝÛ �þ‚˜9mMÀº¦ Øy¯ØjOÝpÍR°…^Ÿ9 Òj†£6’Vhe={L3¯n¯~¸åž‰7ÞŸEª;àùŽtl‚TÁlt¤òN�  glð”OŒ /H;bOÞ˜º·Ù Lr‘fÌrð¼˵3ÎY“×á0ö1ñdºîùÁ°aØ 6‚i-L6FÙ "O2zuéV·ß Ï1š«èŸØ²b—ÓÛ‰‰ÝÁÏ TT ta²p7¦Ö…`!�ǘ]Ç)ÇN³Êbovõ•ñ‚™$k´nnØ¢Zp,\[8…DJ’aPR¹ëâ\�P™z¢’Qô¹%A$�—˜÷�¶Ò%BG¨Až˜‡õêÝ<ßjpæ‘]áš8Û�±S¢-‰¹"òŠø“$yf\-‚r�S\µce4)ꥀu)œ°ßI/}D‚)µð ¶öÚ¥Xj\V„ÌöEÀÖÌU¿µQCÝàNpSXR^3[GqÝ:ÁpV4ÙúNÙ4�-áñä…º|'æKŽÌ)µbàV­92vÅðY6 9‹{Ÿ°#¯L T•C˜Òi,TBÉ`:åC»¨c%‚tr�z¶…€/RÉb_;”)\ }�+á3 šŒë.V¾rp�T¶G¨t±E€ Üv"ÄŠ@S ytàç™ÈÙÏ�¡ø) ;†œ|©¾çáÔNãHI郇„€‚ûá²Á#(ñl¶fè¹@@ÿR@Á—4¬WSKá:Fb¹U¤K¾æÅŠDgº=³ì8ÄÓœ"*µ…Ńg·\ªþcÿÉ·ü²pãÄãIÕ܆^0ä1•â3žâ/¶Ö*^r×hD^�ß©ýóöâaÿú{îo7øªY”mBÂàá÷í xN~¹?¼Û¿{Øà™Ì°Ž³ð2«Àmz\© $N�:OÐö˜‚^Æ=Ïz�ÞFw(œvj»žØÞâÒ’#K¿êX/½�½‰˶RSÛõÄv¤/Q8VÆYz™Uô6½�PÉäÔvšØN…°€çaÁN“]f7‘S’ñÔnšØÝs¨ßí²ô«ÛÝ¥_ön¢£óèàgè¦Ù}í)\(<§4Z–üiüâ—¿Ÿ^z|züôïYë–”¹€vm‹\ëÂ2-�Ð�4´„OI{Å 5L¢OjBÓ�ópÀ¬ï l¿Bf•�žc€ž„'^¡Ð5[óp€®ï t?˜‘ü¬Pü`œ\Sd4+Beä<iQÞäþ~…l"H¢Ö_!ÏmnõµÝ‹f„äáïÃ=›#o͈¬æt”ñU<…ŒÎ¦&$ìá—åTåèÏŸ>>þõfÿáããooª8½¿M¸þI²ý<˸þrò›eXuãÖrT5õa_Ê'{ʬ0Âæ¨è7ÿ<¾~¿ûú驪ùaǵD˜TîU¼+\ŸËí?‘�ªü*êû/õÛÀÈÝxúæ)+Â8¯×&‹ZÜþ-luÚvçy–§ùXo˜1±•¸©õüŸÒaí§ƒ)#ÜA“©•­®Ì~ûÖ:VrY[ŠF…8LËæzþErXë ­4PÊÔÁƒa§yܾ%Ø;þ¯e²øË>ÏKõªè×Ó­îNÚܼ¦®ßv]Zá<@—)n„zpÄi·'ÇÌ.`§µ6 ºœ�JJä2ÚòçjºÕÝ÷xé8­uÜV­0ÇD\¤qÜ^x0éÔ�klt9]„S¹ÈæÖÝ)ñcUý¿ P«¹µwjû¢…¦~³>Šâ‘rl8&Gï•:MôXÖÒÑ™Sï¡ôRx¯ f¨ w„§Ž¥èmÖ¢{ž›1Ïï w`™ïޱK€ž¼fHÞ;â�M�_‹ïIjÆ$½À —{›%BOG3¤ãù±w²¦…V­c;¤�y~-Wéëð¶Æ¦¿×eÙÇö«Ewû÷^]û endstream endobj 11 0 obj 1705 endobj 16 0 obj << /Filter /FlateDecode /Length 49 >> stream xœ36´P0P040’F†@–‘‰BŠ!HÄÌå‚ æ€Y@¢8®&‡+ Æè & endstream endobj 17 0 obj << /Filter /FlateDecode /Length 80 >> stream xœEŒ» À0D{¦`~&fŸ(•³ JÜpOº{¸:2SÞa†‡ž ,†Sñ™£`5¸FR��죰n_u�æzS«õ÷*Ovvq=ÍËô endstream endobj 18 0 obj << /Filter /FlateDecode /Length 90 >> stream xœM�AÀ ï¼"OPDÐÿtzÒÿ_«Ô½ÀN‰E‚ô5jK0î¸2kP)˜”—ÀU0\ Úî¢Êþ2IL�†Ó{·ƒ²ñqƒÒIûöqz«ýzÝÒ"X endstream endobj 19 0 obj << /Filter /FlateDecode /Length 210 >> stream xœ5PË C1»g ¨�džV½uÿkmÐ;aÿBXÈ”y©ÉÎ)éK>:L¶.¿±" ­u%ìÊš ž+ï¡™²±ÑØâ`p&^€7`èi�5tႦ.•B�Å%ð™|u{è¾OxjrvCÉ` jºMX´<Ÿ�Nâÿ~Ãî-ä¡’óÊžùœíð;³ná'jv"Ñr2Ô³4ÇE> stream xœ36´P0€ÃC.”ì endstream endobj 21 0 obj << /Filter /FlateDecode /Length 317 >> stream xœ5RKrC1Û¿Sp�Θ¿}žt²jî¿­„'+°-@B./YÒK~Ô%Û¥ÃäW÷%±B>�íšÌRÅ÷³Ï-¯GÏ·- Q=ø2'"ÔÏÔè:xa—>¯N)x“¯á_x”NƒÀ;2Þ“‘$ÁšK‹MH”=Iü+åõ¤•4t~&+sù{r©j£É X¹Ø¤+)$=‰H²r½7VˆÞ�W’Çg%&Ý&±M´ÀãÜ•´„™˜BæX€Õt³ºúLXã°„ñ*aÕƒMž5©„f´ŽcdÃx÷ÂL‰…†ÃP›}• ª—�ÓÜ #¦GMví²[6ï!D£ù3,”ÁÇ($‡Nc$ Ò°€�9½°Š½æ 9Àˆe�š, mh%»zŽ…ÀМ³¥aÆ×ž×óþE[{£ endstream endobj 22 0 obj << /Filter /FlateDecode /Length 338 >> stream xœ5R9®Ý@ ë} ] €vÍœç©~î߆”_ C´VŠšŽ•iùe!U-“.¿íIm‰ò÷É ‰’W%Ú¥ ‘Pù<…T¿g˼¾Öœ K• ““’Ç% þ —Þ.çck?�#w=z`UŒ„Ë£kY:»Ãš�ü<¦?âr®X·cH ºqÚïCóyÈ f˜–Š ]V‰~Añ G­}÷XTX ÑíIpŒ�P‘€v�ÚH 9³»¨/úY”˜ tí‹"î¢ÀIÌœb]:ú>t,¨¿6ã˯ŽJúH+kLÚw£IiÌ"“®—Eo7o}=¸@ó.Ê^Í ASÖ(i|Ъ�c(še…wš 4LJÌ<‡3”ô}(~_K&º(‘? ¡_£ŒœosÑŸ¶ŠñÙa¯`…ÒÅšä}@*z`úÿ×øyþü¶€T endstream endobj 23 0 obj << /Filter /FlateDecode /Length 88 >> stream xœ5Œ» À0D{¦¸ø8€÷‰R‘ýÛ[.¸{Òç9ÀÈ>GèÄ-dCá¦xI9¡>Q4Zo:¶Hs¿¼d3ý3Ü}…íæ€d4Iä!ÑåråY)z>—Ú~ endstream endobj 24 0 obj << /Filter /FlateDecode /Length 232 >> stream xœ5Q;r1ë} ] 3æoŸg3¯JîßF°“fa ç=؈ėÒåŠoY�f~'‹¼øY)œ¼Q�TEX!íàYÎj†Ás#Sàr&>ËÌ'ÓbǪ‰8ÎŽœf01�ëh9fš=!×#nì4ËU i½[ª×÷ZþSEùȺ›åÖ)›Z©[ôŒ=‰ËÎë©-í £Žâ¦ Òác‡÷ _ÄœÅE'ÒÍ~3å°’4§ð#1”êÙá5ÂÄÏŒOÙÓé}”†×>hº¾w/èÈÍ„LåÊHÅ“•Ƙ1T¿Í$õý?г>š0TG endstream endobj 25 0 obj << /Filter /FlateDecode /Length 165 >> stream xœE�;! C{N¡#€Ày6“нË;I,Œ%?¢+:öÊÃccÊÆk´±'ÂîR: §©Œ¯Š§g] Ëa2So\Í\`ª°ÈnN±ú|¡òìæ„¯Už—L 0•;¹‡õúQœ–|$» ‚ê”�ÊÂ0GÒ÷@LM›§…�ü�/yjAP™æ�k–•GkS4g˜*[ ‚õ� :¥úÓÿL§½?Üô=€ endstream endobj 26 0 obj << /Filter /FlateDecode /Length 338 >> stream xœ5RK’[AÛ¿Sè®jþÍyœšÕäþÛ쬠��8ÈÄK Q�rÅy‚ñ:�¿ëåiü>Þ…Ô‚§"ýÀµiïÇš5Q°4b)Ì>öý(!ÇSãßè¹Hfd2r ˆûµ>Ö›L9ü¤isú(Iz-ØÝv|Y�AÒ“–ìä‡u-°ºM˜k"9µ25ÏÇžá2ž#AÕ, IŸ¸OŒH3;g-y�áxª/~½�×2�©—U2¶ æ`;™ §("¿ $¹‰»hê(ŽfÆšÛ…†’"÷Ý=œœôº¿œD^ á,ÖŽzÊ2'; J jå˜a½ö…qš6J¸SÓí]±¯ßg&aÜæ°³R2 Îqp/›Ì${Ý1a‡˜÷îŒÄ¼ù]l\¹Ì¹&Ó�ý(ÚH×ç\M™­(áªä‰×øÿüÞÏÏ?�7}± endstream endobj 27 0 obj << /Filter /FlateDecode /Length 247 >> stream xœMQ»mD1 ëß\àëkyž R]öoCÉ� ¡/)§%öÆK á[¾ä‘UC?1ì3,=ÉäÔ?æ¹ÉT¾ª›˜Pbáýh¼t/"+Êß�e sÎ÷ࣗ`&4`¬oI&Õ¼3d‰¡ŽÃA›TwM,®Í3ÈíV7²:³ lx%âÆDÙ�Í`£Œ±•�År¨ ’Z`×éQ‹‚+”Ö t¢ÖĺÌà«çöv7C/ò਺x} ëK°Âè¥{,|®BÌôL;wI#½ð¦fR™�‘•:=b}·@ÿŸe+øûÉÏóý (\* endstream endobj 28 0 obj << /Filter /FlateDecode /Length 248 >> stream xœ-Q9’AËçzBsÓï±Ë‘÷ÿé ʃ†C :-qPÆO–+ÞòÈU´áï™ÁwÁ¡ßÊu9HÒTM¨]¼½vfó¤5,ƒë?c 7zqxLÆÙíu5{×kOfP2+qÉÄSuØÈ™ÃO¦Œ í\Ï È¹Öe¤›•ÆŒ„#M!RH¡ê&©3A�£«Q£�Å~éË#�aU#j û\KÛ×sÎ4;«<9¥GWœËÉÅ +ý¼ÍÀET«<p¿ÛCýœìä7ÞÒ¹³Åôø^s²¼0Xñæµ�Mµø7/âø=ãëùü¨¥[ endstream endobj 29 0 obj << /Filter /FlateDecode /Length 70 >> stream xœ3³0Q0P°b3s3s#K…C.# 3 @.—X ‡ËÐÐÊ261R044²LÍ�¡b0�@YK�A9Pý9\iOT/ endstream endobj 30 0 obj << /Filter /FlateDecode /Length 304 >> stream xœ=’;’Ã0 C{�‚ÈŒø“äód'•÷þí>2ÉV€I‰(/u™²¦< i& ÿÑááb;åwØžÍÌÀµD/Ë)Ï¡+ÄÜEù²™�º²:ŪÃ0�[ô¨œ‹†M“šç*K· žÃµ‰ç–}Ä74¨u�K ÝÕhY Ípuÿ;½GÙw5<›TêÔ�Qæù!O¢‡éJâ|<(!\{0FäSÑ@޳\­ò^Bö·²ÂAjIç³'<ØuzO.nÍd¹TøNQìíÐ3¾ìJ =¶áXî};š±é›8ì~ïFÖÊŒ®h!~ÈW'ë%`ÜS&EdN¶Xn‹Õžî¡(¦s†s êÙŠ†RæbW« ;o,/Ù,È”Ì 2F§Mž8xÈ~�šôy•çxýlós; endstream endobj 31 0 obj << /Filter /FlateDecode /Length 230 >> stream xœ5QInÃ0 ¼ëó�â.¿ÇAOíÿ¯Ò ``hKœÍx‰ÁÏAäÆ[ÖŒšø›É]ñ»< ·‚'Q^†{Ù .o—ý8Ì|ð^Z9“O2 ÙôðDÈ`—@èÀìÔa›i'ú†„ÏŽH5YN_KÐK«(OÙ~§ J´­êÏí³.´íkO8Ùí©'•O ž[²—�WLcôDå.ÅôAª³…ž„ò¢|²ù¨!]¢œ�'£@;°ç¶Ÿ‰W… uuŸ¶�¡)Oÿ645I"ä%œÙÒ¸[øþž{ýü¦TSŸ endstream endobj 32 0 obj << /Filter /FlateDecode /Length 245 >> stream xœEP»�C1 ë=`ý,{žwH•Û¿=JFp…!Z?’Z˜ˆÀK ±”oâGFA= ¿…â3ÄÏ…A΄¤@œõ™x†ÚFnèvpμÃ3Œ9ÅZp¦Ó™ö\Øäœ'Îm”ñŒBºITqTŸqLñª²Ï�×�¥µl³Ó‘ì!�„KI%&—~S*ÿ´)[*èÚE°Hä�“M4á,?C’bÌ ”Q÷0µŽôq²‘GuÐÉÙœ9-™Ùî§íL|X&™Qå)�ç2>'©ó\N}î³Ñ䢥UûœýÞ‘–ò"µÛ¡ÕéW%Q™�Õ§�¸<ÿŒŸñþŽ Y> endstream endobj 33 0 obj << /Filter /FlateDecode /Length 68 >> stream xœ32·P0P°4†& æf )†\@¾©‰¹B.H Äʳ €´%œ‚ˆ[B4A”‚X¥f&fI8"—É´å endstream endobj 34 0 obj << /Filter /FlateDecode /Length 81 >> stream xœ=Ì»€0Ð>S¼B|€ìã±Òý[ÁD¸|Õ!Ô n‡´¬Kw“}êzµ‰¤È€ÒSj\NŒ¨i}©}jà»æKÕ‰?ÍÏç‡Çk endstream endobj 35 0 obj << /Filter /FlateDecode /Length 45 >> stream xœ32·P0P°4†& æf )†\–V.L,ÌÑ–p "žŸ} µ endstream endobj 36 0 obj << /Filter /FlateDecode /Length 214 >> stream xœ=P»C1ë= äÎ|í7ÏË¥Ëþm$œ¤B6B”šLÉ”‡:Ê’¬)O>Kb‡¼‡ånd6%*E/“°%÷Ð ñ}‰æ÷ÝÕ–³C4—h9~ 3*ªÓK6šp*º ÜÃ3ú mtV‡±[ Ф`×¶ rÇ Á™‹" JMÿ­r÷RÜï=o¢ˆ”tð®ùåôËÏ-¼N=ŽDº½ùŠkq¦: DpFjòŠtaŲÈC¤Õ5=kµ®Þzù7hGt€ì‰ã4¥CÿÖ¸Ç뇊Rô endstream endobj 37 0 obj << /Filter /FlateDecode /Length 161 >> stream xœE�Kà C÷œBGðG|žtºJï¿­!M³€§±@w'©µÑ/mKº >[ ÎÆxè6n5äu€V¤ãh”R}¹Åi•tñh6s+ ­fz”£ :Þí¢är¦îÎùGpõ_õG±îœÍÄÀdå„fõ)î|›Q]ÝdÒcnÖköª°´¬¥å„ÛÎ]3 î©íý©s:„ endstream endobj 38 0 obj << /Filter /FlateDecode /Length 332 >> stream xœ-R9Ž$1 Ëý ~`ëòñžLÔûÿtIUªlË<ärÃD%~,�ÛQkâ×Ff Âð¯«Ì…ïHÛÈ:ˆkÈE\É–ÂgD,ä1Ä<Ä‚ïÛøù¬ÌɳÆ/Ù÷Vì© ËBÆ‹3´Ã*ŽÃ*ȱ`ë"ª{xS¤Ã©$Øã‹ÿ>Ås‚¾#hÀ/ùç«#x¾¤EÚ=fÛ´[–iG•–ƒíiÎËäKë,WÇãù ÙÞ;BjW€¢0wÆy.Ž2meDkagƒ¤ÆÅöæØ�¥]èÆe¤8ù™*ÂJšÌl¢ þÈé!§2¦®éJ'·QwêÉ\³¹¼�I2[÷EŠÍÎë™õw˜2«Í;y–¥NEø{¶ �ãêÙk™…F·9Á+%|6vzrò½šYÉ©HHÓº N£ÈKØ–øšŠšÒÔËðß—÷ÿ3â| endstream endobj 39 0 obj << /Filter /FlateDecode /Length 157 >> stream xœE�¹C1DsUA °ê±ÇÑwÿ©ùJ´o-‡¯%Sª'"¦Ü×hô0yŸM%V,Ø&¶“rAJ1˜xN1«£·¡™‡Ô븨ª¸uf•ÓiËÊÅóhW3“=Â5ê'ðMèøŸ<´©è[ ¯ ”}@µ8�IP1}¯b�£œv"œà>G™)#qbn ì÷f¾W¸ÆãÝ7y endstream endobj 40 0 obj << /Filter /FlateDecode /Length 320 >> stream xœ5Q»qÅ0 ë5ð�ø•4�s¯ÊÛ¿ @;a@ª¼dJ¹\ê’U²ÂäG‡êMù>`¦üõ�ãèÙ!ºSÖ–{ËÄ<¥ŽXM–{¸�/ M‰¹…ó÷è+£0�ºÅß?@³$0ipðS�k­Zb‰<,X³+Ì­)TÈU|;6¹rq³Ð§š·Ü‚ðeˆdGj±¯Ëe)ò»õ „æˆO‰…ç�f"ñ'b{öÙbWW/ªÖI‡RÒln04E²êƒØWÇ5?OGÙÁÉA¿ŠÁø68™/Iy_¡�þÏÙȱ’C$ò}µÀˆ#l€¡Oí#e 4E÷î™R>&UŠïF!}ªW2¼‘Ùj†Íÿ]Ù* UYŸFp&ƒI8ód£ ÓRµÓ¿ûÜãóccz€ endstream endobj 41 0 obj << /Filter /FlateDecode /Length 131 >> stream xœE�Ë ! CïTáò>©‡ÕžØþ¯ë0šABøA";ñ0¬óò6ÐÅðÑ¢Ã7þ6Õ«c•,ºzRVé�‡¼òPi0QÄ…YLCaΘÊÈ–2·á¶Mƒ¬l•T­ƒv<¶§e«~©maê,ñ ÂU^¸Ç ?�K­w½U¾BS0— endstream endobj 42 0 obj << /Filter /FlateDecode /Length 138 >> stream xœ=�A1ïy…?)vBXÞ³UOÛÿ_KšÝ^ÐŒ1BCo¨j›‚ Ç‹¥K¨Öð)ЉJÈ™`¥¤Òg‘zb8Ü´Îâ±éú»’V}ÐæFº%h‚GìSiÜ–qÄ5ê)ê\£¼¹Ÿ©WØ4’Ý´²’k8¦ß½ç©ëÿÓUÞ__ß.Œ endstream endobj 43 0 obj << /Filter /FlateDecode /Length 392 >> stream xœ=RKn1ÛÏ)¸@¥ðMrž©ÞîÝ[›ÌTª /¶1”— ©%?ê’ˆ3L~õr]âQò½ljgæ!î.6¦øXr_º†ØrÑšb±OÉ/È´TX¡VÝ£Cñ…(-à�á¾ÿñ¨Á×°…rÃ{d`JÔn@ÆCÑHYAaû‘è¤P¯láï( WÔ¬…¡tbˆ –)¾« ‰˜¨Ù ‡„•’ªÒñŒ¤ð[Á]‰aP[[ÛxfÐÙÞ‘�3íÑqYk?=é£Q2µQMg|ñÝ2RóÑè¤ÒÈÝÊCgÏB'`$æI˜çp#ážÛA 1ôq¯–Ol÷˜)V‘ð;ʽýÞ’�Ï{à,Œ\ÛìL'ðÑi§­¾býƒ?lK›\Ç+‡E¨¼(~×Aq|XÅ÷d£Dw´Ö#Õh% ÂÎí0òxÆyÙÞ´æôDh£DÔŽ=(²Å地§ü¬Í±ž&{o´�”Į̀„Ôvz¨¶ÏcÔwžûúü.¡ endstream endobj 14 0 obj << /FontDescriptor 13 0 R /Name /BitstreamVeraSans-Roman /FontMatrix [ 0.001 0 0 0.001 0 0 ] /BaseFont /BitstreamVeraSans-Roman /Widths 12 0 R /Subtype /Type3 /CharProcs 15 0 R /Type /Font /FirstChar 0 /FontBBox [ -184 -236 1288 929 ] /Encoding << /Differences [ 32 /space 46 /period 48 /zero /one /two /three /four /five /six 56 /eight /nine 65 /A 67 /C 80 /P 83 /S 86 /V 97 /a 99 /c 101 /e 105 /i 107 /k /l 110 /n /o 114 /r /s /t 121 /y ] /Type /Encoding >> /LastChar 255 >> endobj 13 0 obj << /Descent -236 /FontBBox [ -184 -236 1288 929 ] /StemV 0 /Flags 32 /XHeight 547 /Type /FontDescriptor /FontName /BitstreamVeraSans-Roman /MaxWidth 1342 /CapHeight 730 /ItalicAngle 0 /Ascent 929 >> endobj 12 0 obj [ 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 318 401 460 838 636 950 780 275 390 390 500 838 318 361 318 337 636 636 636 636 636 636 636 636 636 636 337 337 838 838 838 531 1000 684 686 698 770 632 575 775 752 295 295 656 557 863 748 787 603 787 695 635 611 732 684 989 685 611 685 390 337 390 838 500 500 613 635 550 635 615 352 635 634 278 278 579 278 974 634 612 635 635 411 521 392 634 592 818 592 592 525 636 337 636 838 600 636 600 318 636 518 1000 500 500 500 1342 635 400 1070 600 685 600 600 318 318 518 518 590 500 1000 500 1000 521 400 1023 600 525 611 636 401 636 636 636 636 337 500 500 1000 471 612 838 361 1000 500 500 838 401 401 500 636 636 318 500 401 471 612 969 969 969 531 684 684 684 684 684 684 974 698 632 632 632 632 295 295 295 295 775 748 787 787 787 787 787 838 787 732 732 732 732 611 605 630 613 613 613 613 613 613 982 550 615 615 615 615 278 278 278 278 612 634 612 612 612 612 612 838 612 634 634 634 634 592 635 592 ] endobj 15 0 obj << /period 16 0 R /one 17 0 R /four 18 0 R /zero 19 0 R /space 20 0 R /six 21 0 R /three 22 0 R /A 23 0 R /C 24 0 R /P 25 0 R /S 26 0 R /five 27 0 R /two 28 0 R /V 29 0 R /a 30 0 R /c 31 0 R /e 32 0 R /i 33 0 R /k 34 0 R /l 35 0 R /o 36 0 R /n 37 0 R /s 38 0 R /r 39 0 R /nine 40 0 R /t 41 0 R /y 42 0 R /eight 43 0 R >> endobj 3 0 obj << /F1 14 0 R >> endobj 4 0 obj << >> endobj 5 0 obj << >> endobj 6 0 obj << >> endobj 7 0 obj << >> endobj 2 0 obj << /Count 1 /Kids [ 10 0 R ] /Type /Pages >> endobj 44 0 obj << /CreationDate (D:20111127165114-07'00') /Producer (matplotlib pdf backend) /Creator (matplotlib 1.2.x, https://matplotlib.sf.net) >> endobj xref 0 45 0000000000 65535 f 0000000016 00000 n 0000011672 00000 n 0000011556 00000 n 0000011588 00000 n 0000011609 00000 n 0000011630 00000 n 0000011651 00000 n 0000000065 00000 n 0000000315 00000 n 0000000208 00000 n 0000002095 00000 n 0000010166 00000 n 0000009951 00000 n 0000009458 00000 n 0000011219 00000 n 0000002116 00000 n 0000002237 00000 n 0000002389 00000 n 0000002551 00000 n 0000002834 00000 n 0000002923 00000 n 0000003313 00000 n 0000003724 00000 n 0000003884 00000 n 0000004189 00000 n 0000004427 00000 n 0000004838 00000 n 0000005158 00000 n 0000005479 00000 n 0000005621 00000 n 0000005998 00000 n 0000006301 00000 n 0000006619 00000 n 0000006759 00000 n 0000006912 00000 n 0000007029 00000 n 0000007316 00000 n 0000007550 00000 n 0000007955 00000 n 0000008185 00000 n 0000008578 00000 n 0000008782 00000 n 0000008993 00000 n 0000011732 00000 n trailer << /Info 44 0 R /Root 1 0 R /Size 45 >> startxref 11883 %%EOF ipython-ipyparallel-14e3c43/docs/source/tutorial/figs/asian_call.png000066400000000000000000000562011520071063500256720ustar00rootroot00000000000000‰PNG  IHDR Xšv‚psBIT|dˆ pHYsaa¨?§i IDATxœìÝytTõáþñgÊ"˜€„% „€XdQT@YT@ »ßÒ‚ X)Š"T´ô÷]¨â– õ%‘UE\wl-•"-‚!ADŠ` [DÉï$%&„,sïç~î¼_çä3sgæIÎiÍÛ;K(???_à�(ÓD€gž!@x†à€gž!@x†à€gž!@x†à€gž!@x†à€gž!@x†à€gž!@x†à€gž!@x†à€gž!@x†à€gž!@x†à~–••¥¨¨(�=Úô#ºwﮨ¨ÂÿZX½zµ¢¢¢”œœlh hÖºÿþû¥¨¨(mÚ´)l÷ …Âv_á´cÇ%%%©wïÞjÒ¤‰jÖ¬©6mÚhðàÁZ¼x±òóó+ü'ûÙýú;ا²éPùùùš3gNÁ÷sæÌÑ#�\Æ Ó¾}ûô§?ýImÚ´ÑÞ½{‹}Ü/¿üR—]v™Þzë-õìÙS±±±zç�wtñÅkÛ¶m¥úYSRR´gÏ 8P�:u*ñØ*Uªú~ܸqÚ¶m›ºwï®ñãÇ«E‹úøã�Õ·o_=ú裥z|Â�§`°Îܹs•››«Q£FI’Ú¶m«víÚiåÊ•ÊÌÌTÓ¦M ŽÝ²e‹V®\©:èóÏ?/r_ÙÙÙ§|¼‘#GjÒ¤IEžÞõÌ3Ïhüøñº÷Þ{õØc�¹Ýk¯½¦x@'NÔé§Ÿ.Iš>}ºÇÑO<¡'Ÿ|ò”�½aÃIRçÎ�Oylq·=ñw!I999jݺµ’““5räHÕ«W¯Ì÷ @Ep€UŽ¿ø¼R¥J9rdÁå£G�V~~~ÁS³Ž«^½º*Uª¤ØØØbï/&&æ”�WìkKn¼ñF5hÐ@«V­*övÑÑÑš4iRA|HÒ�!C$Iÿüç?Où¸’ôïÿ[’Ô¼yóR¢_Ƈtì÷1yòdåääè³Ï>+ó}PQ«¬\¹R[¶lQÏž=Õ Aƒ‚ˇ®ÓO?]))):zôhÁåõë××ÕW_­+V¨mÛ¶ºï¾û´fÍååå•éq—.]ª«¯¾Z ªV­š¢¢¢TµjUíØ±CÅÞ¦ÿþEÂ¥eË–ªS§Ž¾ýöÛ2=~yìØ±CwÝu—Úµk§:uê¼eñ­·Þ*éØÙ!¼F€°Êñ×y\wÝu….¯]»¶úöí«ÿüç?Z¶lY¡ëRSS5kÖ,åææjÚ´iêܹ³êÖ­«;ï¼S?þøã)súôé8p þþ÷¿ë’K.ѸqãôÇ?þQŽã¨I“&Ú¿±·kÖ¬Y±—W¯^]GŽ)Í�«V­ZI’6oÞ\ªã�Û±c‡:vì¨GyDÕ«W×o~óÝu×]r§àw·oß¾2Ý'áÀk@XãÄwº:t¨†Zìq/¼ð‚Xð}õêÕ5vìX�;V_ýµV­Z¥gŸ}V�<òˆêÔ©£É“'Ÿô1srr4}útU¯^]_|ñE¡³.‡ÖO<¦Ÿ®xmÚ´‘$}òÉ'eºÝÌ™3õÝwßé¶Ûn+òZ“‡z(lû(+€5æÍ›§#GŽè /T»víŠ=fñâÅzûí·µmÛ6�}öÙE®oÞ¼¹š7o®þýû«qãÆzá…J �Í›7+//OC† )’ôÆohß¾}®~Jø¨Q£ôðÃkñâÅúôÓOK|'¬C‡©jÕª’¤�7J’n¿ýö"Ç¥¦¦º3€Rà)X¬1{öl…B!Íš5K/¼ðB±_cÆŒQ^^^Á§¤gee¼“Ô‰¶nݪ#GŽ(??¿ÄÇlÓ¦�Î>ûl­X±¢ÐÓ¦¾úê+×Ï~HRlllÁã 2DË—//ö¸—^zIÝ»w/øþøç…œøt´Ÿ~úI/¾ø¢Ö¯_ïÞ`N�`…Õ«WkóæÍjÓ¦�.¼ð“wà 7H’þüç?+//O_|ñ…Ú´i£Ž;jÔ¨Qš2eŠúöí«>}ú( éŽ;î(ñq£¢¢tã�7jÇŽjÒ¤‰®¿þzõèÑC­ZµRåʕաC‡SFLE�9RÏ<óŒöï߯ÄÄD]pÁ1b„’’’ ÎäŒ5J•+ÿï¤ö°aÃtæ™gj„ êÖ­›ÆŽ«F�éæ›oÖ¸qãNúXnÿ, ¬0gÎ…B!�3¦Äãš5k¦=zè»ï¾ÓòåËÕ±cGÝu×]ªR¥ŠV¬X¡gŸ}V999ºýöÛõÉ'Ÿœòþ$)))I¯¾úª:uê¤Å‹ë§Ÿ~Ò”)S´|ùrÕ¬Y³ÌOÁ*ÏS¶~ÿûßkãÆ�š4i’êÔ©£>ø@Ï>û¬222Ô¡C-\¸P}ôQÁñÕ«W×gŸ}¦©S§jçÎ�zë­·Ô½{w-_¾\¿þõ¯OºËͧ“ I¡|þs�pDÒ�4eÊõêÕK±±±ŠŠŠRrrr‘ã>úè#�3F\p�ªT©¢¨¨(}óÍ7'½ßùóç«K—.ŠŽŽVÇŽKõ©Ç~VÚ¿›Ž›={¶.¿ürÕ®][µjÕR—.]ôé§Ÿz¸~C€HÚ½{·fÏž­#GŽhРA’ŠŠÄÊ•+õÞ{ï)>>^]ºt)ñ© 3fÌÐu×]§ /¼P ,Pbb¢’’’4iÒ$×~·•öï&éØëÑn»í6uíÚU©©©zùå—uõÕW+''ÇËÉðž‚õ ?üðƒbccå8ަM›Vèºüüü‚ÿ�=öØcš2eв²²Ô¸qãBÇýøã�jÔ¨‘úõë§”””‚ËÿøÇ?êÁÔÖ­[‹¼�'€mJú»)55UÇ×Ê•+ ½KÀ�_(©ÇJûâÌeË–iÏž=ºþúë ]>zôhåææêå—_®ÐF?(éï¦ääduîÜ™ø@ˆ ¶lÙ"I:ÿüó ]¯5j(33ÓÄ,O¦IjæûÞ*iú �QÇÿÖiРAA|HRTT”ú÷ﯔ”åää¨zõêaZ › .hÞ¼¹$iݺuêÖ­[ÁåYYY:xð н]ÕªUþ§xI-Ýjˆßcõ¸¸èe•c¤š¼ßDü.KÇ)Å15b¤ü.+,À¿Ç>]J*þß·nù߿ǽ×Dҹƽ¨ºuëªfÍš%SÚ7÷Aðð"tôíÛWµk×.ô¼’”’’¢ÓN;ÍóÓ³@©€×ÓÇâ&…B!�=Zß}÷�>û쳂ËsssµdɵnÝš×»F0΀ülùòå:xð`ÁiÆ 6(==]’”˜˜¨jÕªi÷îÝZ½zµ$iýúõ’¤7ß|SuêÔQݺuÕµkWIÇþ È´iÓ4aÂEGG몫®Òš5ktß}÷i„ ª_¿¾÷? Pâ~à˜€ >¼Qš¿›&Nœ¨´´4 < ˆ$„üÂ1=A@|vâ )ˆø…cz‚€øìE€‘€ø€_8¦ ˆÀn< :â~á˜Û@0p2â~á˜Û@p @Pð ÇôØŽø‚…‚ˆø€_8¦ÀvÄ<4ÄüÂ1=¶#>€`"@€ !>àŽé°ññ¿pL€íˆ Ø ˆø…czlG|ÁG€¶#>àŽé°ñD°ñ¿pL€íˆ r €­ˆø…czlG|‘¥²éÊ�ø€_8¦Àf„™8؆ø€_8¦ÀfĹÀ&ÄüÂ1=6#>€ÈF€¶ >àŽé°ñ€l@|À/Ó`3â€D€þG|À/Ó`3âÀqàgÄüÂ1=6#>œˆüŠø€_8¦ÀfÄ€_âs@¿!<à'Žé°ñ 8œü„ø€Ÿ8¦ÀfÄ€“!@¿ >à'Žé°ñ $< ðâ~â˜[Jƒ3 €iÄüÄ1=¶">”˜D|ÀOÓ`+â@Y €)ÄüÄ1=¶">”˜@|ÀOÓ`+â@y €×ˆø‰czlE|(/” ñ "ÀKœý€Ÿ8¦ÀFÄ€Š"@¯ðÇô؈øàâ~â˜Â…ÜF|ÀOÓ`#â@8U6=4â~â˜ÛÜÀÀ-ÄüÄ1=¶!>¸…Ü@|ÀOÓ`‛ ܈ø‰czlC|p„ñ?qL€mˆ^ @€p!>à'Žé° ñÀ+ÄüÄ1=¶!>x‰€ qL€mˆ”Õ�4eÊõêÕK±±±ŠŠŠRrrr‰·ÉÏÏW×®]¥ñãÇ{´~E€ÅÙø…czlC| ¨â~á˜Û(¯øøxíÙ³G«V­Òƒ>xÊã³²²4uêT=óÌ3¬ƒ  ¼ˆø…czlC| \òóóOyÌ�7Þ¨^½ziÀ€,‚ *›X‰ø€_8¦À&„¼6gÎ}þùçÚ¸q£é)ð(+â~ᘛðÚöíÛ5yòd=öØcªW¯žé9ð( â~ᘛ8•w$½û‹ËTð>ÇŽ«öíÛk̘1¼' ”ñ¿pL€Mˆ�ÈЮ·Ô¡vùoßEEÿ¯eí¥ V”ïþÒÓÓµbÅ }ôÑGÊÎÎ.tÝO?ý¤½{÷êŒ3ÎPåÊü)‰x:PÄüÂ1=6!>`ʆ ”››«K.¹Dµk×.ø’¤Ù³g«V­ZzóÍ7 ¯„)d'p*ÄüÂ1=6!>`Ò¨Q£Ô£G�B—åçç«G�4h�n»í6�wÞy†ÖÁ4( ñ¿pL€Mˆ¸mùòå:xð öïß/éØ�ôôtIRbb¢š4i¢&Mš{Û† ªk×®žm…ÿ ÀÉð ÇôØ„ø€Æ�§­[·J:öÉæiiiJKKS(Rff¦7nlx!üŒ?sL€Mˆx%33³\·ËËË ó؈¡ÅáìüÀ1=6!>Ø‚~‰ø€8¦À&Ä› À‰ˆø�czlB|° ¯Ž#>àŽé°áÀVœ$âþà˜[lF€ÄüÀ1=¶ >ØŽAd#>àŽé°ñ D.â~à˜[‚‚Ad">àŽé°ñ HDâ~à˜[‚†Ad!>àŽé°ñ ˆð’czlA|*‘ƒ³0Í1=¶ >‚È@|À4ÇôØ‚øt•M\G|À4ÇôØ€ð)8‚`#>`šczl@|ˆ$‚‹ø€iŽé°ñ Ò &â¦9¦ÀÄ€HD€ xˆ˜æ˜"‚`!>`šczl@|ˆd‚ƒø€iŽé°ñ Ò â¦9¦ÀÄ â¦9¦ÀÄC€@E8¦ÀÄüŸ„»qö¦8¦ÀÄF€À^ÄLqL€ (OÁ‚�ˆ˜â˜prìC|ÀÇôØ€ø€’ ° ñSÓ`âN��=ˆ˜â˜P:¼þGxÀÇôØ‚ø€Ò#@àoÄLqL€ (;ž‚ÿ">`Šczl@|@ùpþD|ÀÇôØ‚ø€òã ü‡ø€ Žé°ñÃø ñÓ`ƒ�?0Å1=6 > |˜G|ÀÇôØ‚ø€ðâ5 0‹ø€ Žé°ñáG€Àâ&8¦Àĸƒ§`Á â^sL€-pg@à=â^sL€-ˆpg@àÂ&8¦ÀÄxƒ�7ˆxÍ1=6!>À;ÜG|ÀkŽé°áÞã5 ’8 )S¦¨W¯^Š��UTT”’““‹=6##Cƒ R\\œš6mª#Fh÷îÝEŽ‹ŠŠ*öë‘GqûÇñâ^sL€-ˆ |JówS^^žüq]y啊‹‹ÓYg�¥áÇ+--M4´~A€HÚ½{·fÏž­#GŽhРA’¤P(T丯¿þZ�:uÒwß}§™3gjúôéZ³f�:uê¤ììì"Çÿú׿֚5k }�1ÂõŸÇ7ˆxÉñ�R#>€ò+ÍßM999ºçž{Ô¨Q#=ðÀúÿïÿ©víÚºñÆuÅWèÈ‘#&¦Ã'x –¤øøxíÙ³G’ôÃ?hΜ9Å÷øã�ëèÑ£Z±b…bbb$I�:uRË–-5{öl%%%:¾^½zºè¢‹ÜïWļ䘛·ÿÓkúÄô•æï¦êÕ«kÛ¶mªS§NÁe½{÷VÆ 5uêT½ùæ›0`€g›á/œù…üüüb/ÏËËÓüùó5`À€‚ø�¤æÍ›ëÒK/Õ¼yóJ}_�G|ÀKŽé°EŸ® ‰„ÝX=oz‚Q'û['**ªP|w<:233]Ý#@Jéûï¿WNNŽÎ?ÿü"×µiÓF[¶l)rùË/¿¬êÕ««víÚêÒ¥‹-ZäÅTsz\L|À;Žˆ”á7Dz|”Ç| IÅþ=…ÈA€”ÒöíÛ%©Øš���Õ¡C‡ ½dذaš5k–V¬X¡É“'+''G×\s�üqÏ6{Šð€—Ó`âá6VÏå�••¥;ï¼S=zôÐå—_nz â5 .ùË_þRðÏ—]v™¦N�ªsÏ=W÷Üs�n¼ñF�yæ™%Üú)I5~qY¯Ÿ¿|ˆø€—Ó`âáÖ:ÕÑ}©ÿ)tÙÁlû_P�ºõØ×‰ößýÿ÷¿ÿÕ€T½zuýùÏßÃJH)5lØP’Š}ËÝ]»v©Zµj…^RœßýîwJJJÒúõëÕ¥K—Žœ ©eÖzˆø€WÓ`Ân«ç¥¡ ÔuhƒB—g¬Ý§‰¬1´êg£$µ*ÿ͇þüu¢µÿ–.øå…åðßÿþWW^y¥vìØ¡Õ«W«I“&¿SX�)¥ºuëªF�Z·n]‘ëÖ¯_¯„„„SÞÇñj÷¿V">àÇôØ„ø€xÊUùìÙ³G={öÔ7ß|£÷Þ{O­[·6= >@€”RTT”FŒ¡W^yEÙÙÙg;222ôÑGéá‡.ñöùùùzþùçUµjÕ`¼ðŠø€WÓ`âáFx”_vv¶zö쩬¬,½ûî»jÛ¶­éIð ägË—/×Áƒµÿ~IÒ† ”žž.IJLLTµjÕ4qâD¥§§«wïÞJJJÒ�?þ¨éÓ§+!!AcÆŒ)¸¯Ç{L_}õ•®¸â Õ­[Wü±,X -[¶hÆŒªQã—¯ï°á¯8¦À6ÄÂ�ø8¹SýÝ$ûÜ�üãš1c†~úé'­Yó¿§©Õ­[·TÏA0 ?7nœ¶n=öê«P(¤´´4¥¥¥) )33S�7V³fÍôé§ŸjòäÉ?~¼ªT©¢®]»êÉ'ŸTtttÁ}µlÙRK—.ÕÒ¥K•��­ØØX�wÞyzüñÇÕ«—O_H^ļâ˜Û7â£d§ú»)//OûÛß …të­·¹ý¨Q£x1z#@~VÚÄIHHÐÂ…%ÿ‹®oß¾êÛ·o8fùñ¯8¦À&„Ü@|œZiþnÊËËó` lD€àÔˆxÅ1=6!>n„à %#>àÇô؆ø@¸€wø$tœñ/8¦À6ÄÂ�ø¼ÅExÀ+Žé° á7€÷F|À Žé° ñ�p#<sx þ‡ø€Ó`âáF|f 8†ø€Ó`âáF|æñ,pŸczlCxÀ ÄàH¤#>à6Çô؆ø@¸€¿ ‘Šð€Ó`âáF|þC€D"ânsL€�ˆ„ñøiˆ¸Í1=¶!<àâð/$’p›czlC| ÜÀÿ�HA|ÀMŽé°ñ�p#>;ð9 ‘€ø€›Ó`#âáF|öà H�p›czlD| ܈À.HPp“czlDxÀ Ä`$ˆˆ¸É1=6">n„`/^4ÄÜä˜7â°$ÄÜä˜7â°OÁ ânqL€�¸�ø‚� ânqL€�ˆ„á b3ÂnrL€�ˆ„ñb+ânqL€­ˆ„ñb#ânqL€�¸�ø‚‹± ñ·8¦ÀFÄÂ�ð‚�± ñ78¦ÀVÄÂ�ø"Ÿb ânpL€­ˆ„ñD΀øá·8¦ÀF„Ü@|‘…ñ3ânpL€­ˆ„áD&ž‚åWÄÜà˜[7âˆ\ˆ]ØÆô‘czlE| ܈ ²ñ, èÓ`3âáF| @€ sL€­„áà8ž‚•czlE| ܈'â 4Žé°ñ�p#>üg@€ qL€Íˆ„ñ 8œ‚Â1=¶"<n„€’pÇôØŠø@¸N…3 €ÍÓ`3âáF|( ΀¶rL€Íˆ„ñ ´8ØÈ1=¶"<n„€²"@›8¦ÀfÄÂ�øP< °…czlF| ܈åE€6pL€Íˆ„ñ "ÀϨâá4VÏÐ�4eÊõêÕK±±±ŠŠŠRrrr±ÇfddhРAŠ‹‹SÓ¦M5bÄíÞ½ÛãÅðð+ÇôجO×xí¤c IDAT…ÄŠðÀq»wïÖìÙ³uäÈ 4H’ …Š÷õ×_«S§Núî»ï4sæLMŸ>]kÖ¬Q§N�”��íõlø/BüÈ1=6#<nÄN¯={öH’~øáÍ™3§Øãüq=zT+V¬PLLŒ$©S§NjÙ²¥fÏž­¤¤$Ï6Ã_8ø‰#âB| ܈”$??¿ØËóòò4þ| 0  >$©yóæºôÒK5oÞ<¯&‡8ø…czlG| œTÄ÷߯œœ�þùE®kÓ¦�^|ñE«ààŽé°á�p#>PQÛ·o—$Õ©S§Èu±±±:tè�²³³ �Aä @“Ó`;âáF|D¦ÔåRê[…/Û»ß̘â˜Û7âÃ^ï·¸Dß¶=³Ü·?£­4æÎ—e¬Ý§.XS®ûkذ¡$û–»»víRµjÕ8ûÁÀÇôØŽø@8·ºuëªF�Z·n]‘ëÖ¯_¯„„«àà5ÇôØŒð@¸pCTT”FŒ¡W^y¥Ðk=222ôÑGéá‡6¼& €—Ó`3âáF| ¼–/_®ƒjÿþc/Ù°aƒÒÓÓ%I‰‰‰ªV­š&Nœ¨ôôtõîÝ[IIIúñÇ5}út%$$h̘1&çÃ0ð‚czlG| ܈Tĸqã´uëVIÇ>=--Miii …BÊÌÌTãÆ�Õ¬Y3}úé§šnÄ¿ @78¦ÀfÄÂ�øà'< 7ÇôØŒø@8üˆ3 @89¦ÀfĉøàW�9òõ×_ë¯ý«¶nݪQ£F©AƒÚ¾}»jÕª¥êÕ«›ž‡ sL€Í„ñÀÏ ·Ýv›fÍš¥£G�* ©wïÞjР�ÆŽ«öíÛkúôé¦'"¨Ó`3ÂáFx°�õOÁzê©§ôÜsÏé÷¿ÿ½Þ{ï=åçç\×§O­X±Âà:–#âåÖ§ëBâaG|°…õg@RRR4xð`Íœ9S¹¹¹…®‹��WFF†¡e$ÇôØŽð@¸lc}€ddd(99¹ØërssõÓO?y¼�ä˜ÛpñÀFÖHãÆ�µjÕ* 0 Èuï¾û®š7on`Ã1=¶#<à‭¬�ž={*55U#GŽTÛ¶m .ß¼y³–-[¦aÆ\k9¦Àv„ÜBx°�õ/BŸ>}ºÎ8ã ]xá…ºôÒK%I7Ýt“Z¶l©Ê•+kêÔ©†Â*ŽˆTñ·‚Àú3 gžy¦¾øâ 9Ž£·ß~[ÕªUSNNŽn¹åÝwß}:ãŒ3LO„ Ó„ÜBxëD:!O<ñ„é°‘cz‚€ð€›ˆAc}€>|X‡V�5Š\wàÀ�~úé:ýôÓ ,ƒ¯9¦ (ˆ¸…ðTÖÈ�7ިÇ+55µÈu7Ýt“ªV­ª_|ÑÀ2ø’cz‚‚ð€›ˆAf}€¬^½Z>ø`±×õë×OwÞy§Ç‹àKŽé Ân#>�õ²k×.�uÖYÅ^£�;wz¼¾â˜€ !>à&Â@¤°>@Î>ûl½öÚkêÝ»w‘ë-Z¤† XãÓ$„ÜF|ˆ$ÖHçÎ�õꫯêî»ïV“&M .ÿæ›oôꫯû é0Çô á·"‘õDxÿý÷+ )!!A�;wÖ]wÝ¥N�:©iÓ¦ …B'}}Æñ�°">à6â@¤²þ H\\œÖ®]«[o½U«V­Òš5kT­Z5%&&ê©§žR\\œé‰p“cz‚†ð€Û‘Îú‘¤„„½þúëÊÏÏ×®]»«P(dzÜ䘀 !<àâ Ç…B!Õ­[×ô ¸É1=ACxÀ+Äce€¼ôÒKJLLÔYg�¥yóæ�òlÇÈ‘#=Z×8¦ ˆˆx�ð€Â¬ �Q£FiÍš5:묳4zôèSO€XÌ1=ADxÀ+Äee€lÙ²¥àÅå[¶l1¼®pL@ð á'ge€ÄÇÇK’>¬M›6éÜsÏ-ô °œcz‚ˆø€85+ä¸J•*©ÿþzã�7� pL@ð ñ¥c}€´iÓFÿøÇ?tÅW˜žƒòrL@ð áecý'¡_wÝuzþùçuøðaÓSPVŽˆ¸‚ø€ÆêyâÊÁê3 ’ôÓO?) ©N�:ºâŠ+Ô¹sgUªT©Ð1'N4´ÅrL@Pð áåg}€$%%üó’%K´dÉ’"Ç >ᘀ "<àÂ*Îúámx-à˜€ #>àÂÂÇú9þ–¼ð!Çôá/~Ö¾=55U:tЙgž©Ö­[ëþûïW~~¾éY�xq9\Õ§ëBâž >ÀVžY¼x±†.IjÑ¢…6mÚ¤?üá:tè�î½÷^Ãë"˜cz‚Œè€Wp—•g@žxâ µjÕJ7nÔÆ�õí·ßª_¿~š9s&gALpD|ÀUļÀÛê€7¬<òÕW_)))I-Z´�$Õ¯__·ß~»–-[¦íÛ·«Q£F†FÇôá/à-+d×®]ºì²Ë ]Ö¥K—‚ë—9¦ èx…ø@Eõ_÷¶Ön2½°‹•"I¡P¨Ð÷QQÇžMÆS°\䘀H@|À „¡ÿº·MO¬dm€Lž>^{öì‘$ýðÚ3gN±Ç=þøã:zô¨V¬XQðøN�:©eË–š={¶’’’$I?þø£¦OŸ®‘#GjÆŒ’¤Þ½{+??_>ø &Ož¬ xð“�‚cz" á·'ÂãäÒÓÓuðàAÍš5KÝ»w—$õë×O™™™Z°`�^|ñEU­ZÕìHøg@~ádoã›——§ùóçkÀ€…Þ}«yóæºôÒK5oÞ¼‚Ë–-[¦={öèúë¯/t£G�Vnn®^~ùewÆ—–#âžá¬¼@| \8ëqjõë×—$ÅÆÆº<66Vg�u–N?ýt³`¤”¾ÿþ{åääèüóÏ/r]›6m´eË–‚ï�ÿó/����W�5”™™éîØ“qDxÀ3„¼ÀÓ­N„Gé\sÍ5jÒ¤‰&Nœ¨?üPÛ·o׋/¾¨´´4ÝrË-ŸÍœ OÁ*¥íÛ·K’êÔ©SäºØØX:tHÙÙÙŠ‰‰ÑöíÛU©R¥BgJN<öø}yÆñöáÙˆx�è@8e£ 6¨G�êÖ­[ÁåsçÎÕu×]gpl˜Ù·oŸ¾üòKmݺU½{÷VíÚµMO*–§ŸÔîx÷P€D|Àĉø(»ÌÌL )Çq´ÿ~…B!ýíoSíÚµuùå—«gÏžºë®»*ü 6”¤bßrw×®]ªZµjÁ�† êèÑ£gD~yìñû:©Í¤Ê¿8{Ro豯ÒpJw.„¼@x Üʩ˥Է _–½?Lƒ* ]×(Z å¾ýw©jGêG….;²7§ØcŸ{î9­_¿^YYYjÔ¨‘$éꫯVLLŒ|ðAýþ÷¿W\\\¹· ø¬�—_~Y“'OVbb¢\è…ßýúõÓÂ… à uëÖU�5´nݺ"×­_¿^Íš5+ø¾yóæ’¤uëÖ:5™••¥ƒ*!áÿqÎSRÍåê”ïf@yðá�p«ÈY�¡}Ž}�hí¿¥ Jùßý*nèeŠzY¡Ëö®Ý¢O.H*rìÛo¿­víÚÄÇqýúõÓÃ?¬·ß~[£F�rs.,gý«„f̘¡>}úhéÒ¥ºöÚk ]×¼ysmÚ´),�¥#FhéÒ¥…>ó###C}ôQ¡ÿ¡õíÛWµk×VJJJ¡ûHIIÑi§�¦áLJeS!ŽˆxŠø€Ûx�9ÜÀS®*®I“&úâ‹/ôÍ7ߺ|áÂcÿ^8ûì³MÌ‚E¬?²qãFÝyç�Å^W¹re8p T÷³|ùrï#!!AcÆŒ)¸¯ªU«jÚ´iš0a‚¢££uÕUWiÍš5ºï¾û4a„‚·¯ '|w”á/7Â#|&Mš¤7ÞxC‰‰‰ºöÚkuî¹çêõ×_×+¯¼¢‹/¾¸à³A€“±>@êׯ¯µk×¼êD«W¯VÓ¦MKu?ãÆ�ÓÖ­[%ûô´´4¥¥¥) )33S�7V³fÍôé§ŸjòäÉ?~¼ªT©¢®]»êÉ'ŸTttt¡û»õÖ[U«V-=÷Üsš;w®Z´h¡G}T·ß~{Åh‰ð€çx�ð€ˆ�ðºì²Ë´nÝ:-]ºT¯¿þºžxâ õìÙSsæÌQbb¢*Uªdz"|Îú¹ôÒKõòË/küøñ…Þ"wïÞ½zýõ×Õ£G�RÝOi?›#!!¡à㩌1B#FŒ(Õ±¥æ„÷î€Ò >à6Ân <ÜÓºukµnÝú¤ÏBJb}€<ðÀ:ï¼óÔ¤I 8P’”œœ¬•+WªjÕªrÇìÀpqL@$"<à6Ân!>ÿ²>@êׯ¯üãš0a‚Þxã IÒÊ•+uùå—ë™gž)öƒ­â˜€HDxÀ ÄÜ@xþg}€äää¨qãÆO‹Úµk—êÔ©£P($éØ[߯ÇÇ\XNŽéˆD„¼@xÀ-Ä`ëä·¿ý­–,YR±±±×mß¾]W\q…222LÍ+Ÿ›L@$">à6Ân!<»X Ÿ|ò‰Æ�¯§Ÿ~ºÐå»víÒ•W^©*UªZØ�ð€Û¸‰øìc}€,Y²DW^y¥âãã5yòdIRvv¶zöì©Ã‡ëÃ?4¼ð'Â^ >à°—õÒ¥KÍ›7OÇW||¼®ºê*]uÕUÚ½{·>üðCÅÅÅ™žøñ·pñØÍú‘¤!C†(33S#GŽÔyç�§o¾ùFï¿ÿ~©?„ˆ„ÜFxÀM„ �IºãŽ;´eË-X°@«W¯VË–-MO|ƒð€ˆ¸‰ø‚ÃÊ©Y³¦B¡�òóó . …BÊËËÓáÇuÙe—I’òóó …´oß>SS㈸�ð€› x¬ �k®¹¦ÔÇ{^ Òpá·@0Y )))¦'¾ExÀm„ÜFxÁez€ð!>à6ân#>€à³ò È| öíÛ«fÍšúàƒNy|×®]=X˜CxÀm„ÜFx‘ÃÊéÞ½»Ö¬Y£‹.ºHÝ»w/ñØP(¤£G�z3 ðá·ðñD+dåÊ•jÕªUÁ?‘†ð€Ûx…ø"�•rü¬ÇÑ£G§ØØXÕªUËì(À#ÄÜF|À „¹¬ �ãòòòô«_ýJK–,QŸ>}LÏ\ExÀm„¼B|‘Íê9í´ÓÔªU+mÛ¶ÍôÀ5„ÜFxÀ+„)oÃ;pà@Íš5Ëô ÀÄÜ4VÏð ñà8«Ï€HR›6m”ššª-Z(11Q�;wV¥J• 3xð`Cë€ò!<à6Â^!<ü’õ2dÈ�‚ž1c†f̘QèzÞ†6!<à6Â^">ÇúámxÄÜDxÀK„€’X §ú BÀï¸�ø€—ˆ§b}€$$$hÑ¢EjÛ¶m‘ëÖ¯_¯hË–-–%#<à6Â^"<”–õ’••¥Ÿ~ú©Øërrr´uëV�%#<à6Â^#>”…õR’µk×ꬳÎ2=�DxÀ}„¼Fx(+dÞ¼yJII)ø~ܸq:óÌ3 óŸÿüG_}õ•ú÷ïïñ: 0Â^ >à5â@yY Ô®]» ¾ÏÎÎÖ¡C‡ £ßýîwš6mš×óI„¼AxÀk„€Š²2@Æ�§qãÆI’âã㕞ž®víÚ^CxÀ „L >„ƒ•r¢¬¬,ÓI„¼AxÀÂ@8Y 'ÊÍÍÕ’%K”––¦† êæ›oVBB‚éY8Â^!>`ñ ܬ �É“'kÁ‚úæ›o ]Þ¾}{mذ¡àû—^zIŸ}ö‚°#:à%Â&Üez@y|òÉ'úÍo~Sè²·ÞzK6lÐÈ‘#•‘‘¡9sæH’üqP}º.$>à™±zžø€Ä7YydË–-š0aB¡Ëþô§?©Zµjzê©§£¦M›ê‹/¾Ð;ï¼ch%‚„耗ˆ˜Bxð‚•g@8 :uê|øða½ûî»êÓ§�bbb .ïÚµ«¾ýö[œñ€×ˆ˜B|ðŠ•g@.¾øb}þùçºüòË%I~ø¡Ž9¢K.¹¤ÐqÕªUS(21–#:à5¦¼fe€\uÕUZ´h‘ÆŒ£Úµkkþüù’¤Þ½{:.##C 401–"<à5Â&L°2@úöí«©S§*!!AõêÕÓæÍ›uå•WªM›6…Ž[´h‘:vìhh%lBxÀk„L#>˜be€´jÕJï¾û®yäíÝ»W'NÔðáà ³mÛ6íÞ½»àÓ�â0�ø€I„Ó¬ IêÖ­›ºuëvÒëÏ>ûl­_¿ÞÃE°ÑS˜Dxð k( ¢&0…èàG‰à€iDL"<ø‚À :à„L!:Ø‚�ÕˆøáS¶!@`¢~AtÀ¢~ðå—_*99Yk×®ÕŽ;Ô¨Q#�9R÷Üs�éið9V :à'„L!<à .Ôˆ#Ô³gOÝÿýª_¿¾222´cÇÓÓ`¾EtÀo˜@tÀoöíÛ§›nºI¿þõ¯•’’Rpy÷îÝ�m‚]ø Ñ¿!:` Ὶ5k–~øážj…r#@`Á¿"<` á¿ûûßÿ®*Uªh÷îݺᆴvíZÕ«WOÔ½÷Þ«jÕª™žŸ#@à9¢~FxÀ¢6ÉÈÈP(RŸ>}Ô¯_?MžGt hˆøáæ >Ô¹ÃJEwÈ2=+Â~@x€yWðÂüƒvDü‚ðÿ!@„ á¿ <À¿FxÀOˆð7@¹ðÂì@€(Â~Cx€]¥BxÀo° D„ü†ð» Š :àG„ á?"< X„|‰ð€5RLìB€Šè€_°Âæö"@€CxÀ¯X�ð*Œ"á¿"<à{DV`DüŒð€ï€+ €øá_#:× @€ð3¾Fxž!@Ëð;¾Fxž#@Kð;¾EtF €eøáß"<_ @ °á_":ß!@#<`¾Dx¾E€>DxÀ„|‡è¬@€>BxÀ„|‡ð¬B€†°á_!:k €DlBxÀWÀzà‚6"<àD(ࢶ"<à„H&lGxÀ7 Рœá_ :€ˆA€¥Dp høáD8 ‚AExÀ8¢ˆhð3‚AGxÀ8€D0‚‘‚ð€QD€_ˆ2=À6ÿþ÷¿Õ¿ÅÅÅ)..N пþõ¯"Ç�5JQQQE¾Z·nm`5¤cÁqâtý×½M|Àœ‡E|D�9sæ(**J5kÖ4=à HlܸQ:tPãÆ�5uêTåææêé§ŸVçÎ�µråJuèСÐñÕªUÓªU«Š\oˆd„Œ 8"ÒöíÛ5yòdÅÅÅiß¾}¦çÀHÜyç�:zô¨>ûì3ÅÄÄH’~ûÛߪaÆš>}º/^\èøJ•*颋.215"áC�ˆ6vìXõèÑC111JOO7= @Êà¯ý«:wî\’T¿~}uìØQ¯¿þºvíÚ¥ØØØ‚ëòóóMÌŒð?„¿ È¡»wïÖ÷߯Ç{L�=öX‘ëkÕª¥�jáÂ…n­…å�rŠ��—$}õÕWzå•W”œœ¬ÓN;­ÄÛÌ™3G¹¹¹¯ :‚(?ž!ª�;wêôÓOWBB‚þøÇ?êöÛoW¥J• þáEtáAxÀ„\ …Nù4s@"@ÊäœsÎѪU«Ny°µÉ§ IDAT\LLŒ^{í5y�à‹ð€ëˆxdîܹš;w®é°‚€;¸ŽðàS !8wpÑÀH„#8opáÀ"H„!8ïpÑÀRHÀ€·ˆ¸Žð`9$`À ®":b9‚0‡è€ëD€X†àÌ#<à:Â@€ >Gpþ@tÀuD€A€øÐÿé55Ó™¦g�è€'†€_ <à:¢@#@@DBt ðÐ+L/ìB€ˆ„èãTÓ ; €Gˆ D$ÂCtG€aDd?#<0„>P„P ¢DxáG€% 4€R <0DGÉÞ{ï=½ôÒKúä“O´cǵoß^ÔàÁƒÕ´iSÓó`�Èʉð@À¥óÜsÏiÛ¶mºùæ›Õºuk}ùå—JIIÑÝwß­?üP;v4=>G€ b@˜¢£ìfΜ© |ß«W/ 2D zà�´hÑ"ƒë`�Ch.!< „Gù�Ç5jÔHíÛ·Wff¦�E° +€GˆÑáž={öhýúõú¿ÿû?ÓS`¾Fh†ÂÃ}×_½$éž{î1¼6 @à „à„‚èðÎ=÷Ü£%K–èÙgŸU‹-LÏ�x†È|Œð@@Dlx|¾^Ò‘ ÜÁÛ?�èÀ)oå8Žxà=øàƒºé¦›*ðøˆ$ÂŽÐ,Bx "6<¦×Ï_'Ú(iÔIo‘œœ¬éÓ§+99YwÜq‡‹Û4Ê�Ð,Et ˆsî»ï>%''kÚ´iúÃþ`z,C€ DD „‚ð0ë‰'žÐ´iÓÔ§OõéÓGkÖ¬)tý%—\bhlA€@¡á� :ücÙ²e …BZ¾|¹–/_^èºP(¤£G�Z[ †Ð"á� <ügÕªU¦'ÀrH@„#<`9¢6Äb„€D€ð"bBÀIˆ,ˆuÛ´F*™^À×XŽèþ{÷Õ}ÿüµ+*¢ˆÜl Æ¢8ŠÆª`¤*Ú\D£‰—‰×8(`Ê$Ƙé8‰¦ZC¢_c§c›jhbQ©F�4ÞŠþLã¥þƒMj5$NÅ[ÕX±)L:J*ðùþaÙoV䲜…åù˜ÙüìÙóùœ·o…çìÙÖ‹- Á-ÁZ‚Z0B€ï"€@sEè@ Gðà š‚Z0B€û!€@sAð@ FðPWð4‚Z(B€† €€§<ÐB<4¬Dè@ Fðà°Á-¡€»@ )8ÐÂ<4¸�^€ÐÀ h¼Á€• PxBO!€€+x)‚O#€€Dà€W#thN Z'Z‚€æˆ u p !xhÎ ¼�­ ¡@KAàh¥Z€–‰À�VŒÐ %#€hþ€$‚ï@Ðü8BoCày ‚oE`=à¡@k@Ðô@­Z÷#puBðÐ@4�¨3B€ÖŽ þ@½<à.€û#p Bè€ê ª#p�Bð€š@87 t@Ý@€ÖˆÀ¸ ÁꇴÀ­ÐpÀ8€&Að€Æ#€Þ€À4B¸h‰@“#x@Ó €-�°¡šhŽ€¥`Ð8Ë:À3 €@³AðÏ"€�A°Z ‚4à^„ Àk: ù±{z-Í_|¡§žzJaaa ÓÓO?­ÂÂB—ÛiÒ¤I SDD„fÏž­›7oZ¼âÖkÛÿ»gà­:>àdÛ%O¯À{PK÷¹_-ÿÿ6ÂG]ðôÐb•——kÉ’%êß¿¿õè£�*77×ÓËB Á�zøòË/5hÐ uïÞ]K–,Qyy¹Ö®]«øøx}üñÇ4h�cÛsçÎ)>>^zûí·uûöm¥§§kذa*((P—.]}ºÂÃÕžž®Ý»w;¶ýÅ/~¡ŠŠ åææ:¶6l˜úôé£õë×kÑ¢E9†ƒ3êˆàXëĉÚ³g�6lØ 9sæH’ÆŽ«¯¾úJK—.%€à¾ õðÉ'Ÿ(>>ÞéìÅ< ØØXåä䨸¸X¡¡¡ª¬¬ÔæÍ›5uêT§m£¢¢4|øpeeeµÎB¨à&__%xž’••%???M›6Íi<))IÉÉÉ:yò¤† â¡Õ¡% €Ôí[·Pm< @•••ºté’BCCuãÆ ÝºuK ¨¶mÿþý•™™iÅr­A¨`!BàyçÏŸWTT”:tèà4Þ¿IÒ…  ¨¤úöí«�>úHeeeòõõ•$}óÍ7:tè�$éÊ•+2dˆ®^½*I ©¶�ÐÐP•••©¤¤¤Úû@ÊÊÊ$I_\hƒ¨«Mž^@ã•üGúôkO¯¢å£ŽîC-æ/.Þ×úoIg-_‰÷¡ŽîQuO„Û·o[>÷­[·þûUSüM^t9zõêU}ï{ß«6êx¨ ¤-Z¤)S¦hÆŒzå•WT^^®U«VÉ#Iòñi\9/\¸›<ž]Òè¥â¿sC· ŽîC-Ý'ÅÓ ðÔÑ}.^¼¨þð‡–Îùå—_þ÷«ÿi²9üýý›lßh� õ0iÒ$½óÎ;Z¼x±öìÙ#›Í¦Ç\?ùÉOôÖ[o)**J’.I.o¹[\\¬:¸¼ Ö˜1c´eËõèÑ£ÚiMÐ<•••éÂ… 3fŒåsOœ8Q’Ô§Oùùù¹}ÿþþþêÕ«—ÓXxx¸¾úê«jÛ;žjC©§´´4¥¥¥éâÅ‹ T@@€æÎ�«ÀÀ@õìÙS’ÔµkWuêÔI§N�ªöúÓ§O+22Òå¾CBB4kÖ¬&]?p¿øøx�Ì¢ÔÔTK猊ŠÒÑ£G�.I—îþŒ#©ÆŸs€*|aõèÑC:{ö¬¶oß®W^yEmÛ¶•$ÙívÍž=[{÷îUII‰ã5EEE:zô¨ã–u-MRR’nݺ¥>øÀ1fŒQVV–bbb4xð`®-�ÍT½�÷õùçŸ+;;[±±±*++ÓÆ�•››«„„íÛ·OíÛ·wl[TT¤øøxõèÑC‹-r|¡ÍfSAA�Ë»i´“'OV^^žÞ|óMõîÝ[ï¿ÿ¾²³³µcÇÇea@M8RíÚµÓáÇ•””¤¹s窤¤Do¾ù¦8 öíÛ«¼¼\K–,Qÿþý5dÈõìÙS>>>zñŵtéR 6LÇ�¯>®\¹¢… *!!A]ºt‘ÝnWVVV�ë8yò¤ÆŽ«ÐÐPEGGë…^ðÈ�7šÒwk¨G}T¹¹÷÷n}j9jÔ(Ùíöj�qãÆ¹ûp<¦¡uüðÃ5uêTEDDÈßß_cÆŒQFF†Ëk~%z²6õ©ekèI©áµüè£�ôøã�+<<\:tÐàÁƒµxñb;vÌåöôeÍêSËÖЗ ­ã½~úÓŸÊn·;nG{/oêÉììl½ôÒKÊÌÌÔ¬Y³týúuåää>P7n3qâDãççgÖ¬Ycöïßof̘a|||ÌÎ�;k}ÝÁƒMhh¨yâ‰'ÌÌ™3�Íf3YYY.·=vì˜ñóó3‰‰‰fïÞ½æÝwß5¡¡¡&..Δ——7Åay„µLHH0QQQæÄ‰N�³gÏ6Å!yDCëk{ì1³nÝ:sàÀ“žžn"##MPP�¹pá‚Ó¶ô¤ûjÙzÒ˜†×òƒ>0/¿ü²Ù±c‡9tè�ùÕ¯~eâãã�Ýn7»vírÚ–¾t_-[C_6´ŽßõÙgŸ___óÀ˜þýûW{¾µô$P7ÉÏÏ76›ÍlܸÑi|Ô¨Q¦_¿~µ¾¶²²ÒñõÉ“'ký¡911ÑDGG›o¿ýÖ1öñÇ›ÍfvìØÑðhF¬ªeBB‚ËoÞ¢1u¼~ýzµ±ãÇ�›Íf.\è4NOº¯–ÞÞ“Æ4®–®Ü¸qÃñCÝwÑ—î«¥·÷¥;êxçÎ3pà@³páB3jÔ(—õj = Ô—`¹IVV–üüü4mÚ4§ñ¤¤$êäÉ“5¾Öf³9¾6µ¼%çÿø‡òòò4sæLµk×Î1>zôh=ôÐCµ^¶Õ’XQËúlÓR5¦Ž®>`ê‘GQhh¨ãój$zÒ�µ¬âÍ=)5®–®¨sçÎ rŒÑ—î«eoîKwÔqÕªUŽË²]Õªµô$PW79þ¼¢¢¢ª}~GÕu ®~Ш¯ .È£T{.&&FçÏŸoôÍ�µ¬RTT¤àà`ùùùiÀ€Z½zµîܹã¶ý{’»ëxöìY;õ=é¾ZVñæž”ÜSËÊÊJݹsGZ¸p¡þýïë¹çžsѶ9ª¬¬TJJŠN�:¥�;w*88¸Î¯¥'�ݯ–ôdݬ]»Vÿú׿”ŸŸ¯={öhÔ¨QÚ°aƒ&L˜P§×Ó—ÿ§.µ¤/k¶fÍ)''§Qû¡'ÑÚp –›„‡‡«¸¸¸ÚxÕXxx¸[æ�¤›7oºœÇs4VÔ²&iii’Tïk§›#wÔ±²²R©©©Úºu«6mÚ¤'Ÿ|²Ú=éŽZÖÄ›zRrO-£¢¢«_|Qyyyò÷÷×믿î4‡D_º£–5ñ¦¾lh/_¾¬eË–ég?û™|||TRR¢’’•——«¢¢B¥¥¥*++sÚ‡·÷$PW7‰ŠŠRQQ‘ã?›*§OŸ–$EFF6zŽˆˆÙl6�:uªÚs§OŸvËÍ�µ¬IÕ›½á·Q�­£1FóæÍSVV–2335cÆŒjÛГî«em¯•¼£'%÷ÿû¶Ûí?~¼>ýôS}óÍ7’èKwÖ²&ÞÔ— ­ãùóçUVV¦ (((Èñ8v옾øâ jÉ’%’ZOOuæ�;oy¥O>ùÄØl6³iÓ&ÇXeee�·ã«IAAA­·Ž7nœéÓ§�Ómü|ØéqèÐ!3pà@i>lÎ�;çØ¾5ô$PW7š4i’騱£Y³f�Ù·oŸ™9s¦iÛ¶­Ó‡:%''sùòe§×fgg›ììlóÖ[o›ÍfæÏŸïû®ãÇ�›Ž;šÄÄD³gÏóÞ{ï™ÐÐP3tèPSQQaÉqZ¡©kyäÈ3vìX“™™i8`222ÌèÑ£M›6mÌ”)S,;ΦÖÐ:Ο?ߨl6“’’bòóóÍñãÇ�O?ýÔizÒ=µl-=iLÃkùÔSO™eË–™?üÐäææšåË—›¸¸8c·ÛͶmÛœæ /ÝSËÖÒ—�ùžs¯„„Sm¼µô$P7*//7K–,1111¦K—.æG?ú‘ÉÍÍuÚfΜ9Æn·›K—.9�Ûl6ÇÃn·;}}¯‚‚“˜˜h‚ƒƒM¯^½Ì /¼`n߾ݤÇfµ¦®å¹sçÌ“O>iºuëf|}}Mpp°:t¨ÉÈÈðªO¤mh{ôèáT»ï>"""ªÍCOÞÕ˜Z¶–ž4¦áµ\½zµ‰‹‹3AAA¦}ûö&""ÂLœ8Ñ9rÄå<ôå]�©ekéËÆ|ϹWmgNZCOua3Æ‹?]@³Â›ÐX†À2–!€° €e ,Cà•&Ož,???•––ָͬY³Ô®];ßw/^”ÝnWVVV½×ríÚ5-_¾\§N�ªöÜòåËe·;ÿW³²²ôÆo¨mÛ¶ºråJµ}$''+$$Dß~ûí}ç ©@x­äädÙl¶jgA UPP ¤¤$]½zU?ü°òòò4cÆ ýò—¿Tii©ž~úi½ûîÿÚµk ÒÊ•+µoß>Íœ9S»wïV¯^½tíÚ5IÒàÁƒµqãFIÒÒ¥K•ŸŸ_írªº^ÖUµÝøñãµråJIÒ;ï¼ãØçøñã•––&Ÿjkÿú믵}ûv¥¦¦ª}ûöuš€¦àãé@S‰ŒŒTBB‚¶lÙ¢Õ«WËÇçîy6l�ÍfSrr²–-[¦ÒÒR�9sF}ûö•$%%%)66V‹/Ö¬Y³Ô©S'—û9r¤FŽéøóˆ#4mÚ4EGGkݺuZ±b…üýýÕ¯_?IRÏž=«]n%Õÿ2ª��EEEI’úöí[mŸÓ§O×úõëµlÙ2µmÛV’ôÛßþVÿùÏôüóÏ×k.Ü�3 ¼ZJJŠnÞ¼©½{÷J’ÊË˵eË�1B={öÔŸþô'EFF:ÂG• &¨¤¤Äåå[U***ôöÛokàÀ�êÒ¥‹|||¬›7oêìÙ³Mz\µY°`�nܸ¡ììlIRee¥2224~üxuïÞÝcë@"€ðrS¦LQ@@€ã2¨ýû÷ëÆ�JII‘$]¹rE�<òHµ× :Ôñ|M–.]ª… jôèÑÚ¶m›Ž?®‚‚õíÛW_ýuMÝüà?ÐðáõnÝ:IRNNŽ.]º¤ùóç{lMTá,^Í××W3gÎÔ{ï½§ëׯkÆ êܹ³žyæIR·nÝtâĉj¯«º5îƒ>Xã¾7oÞ¬áÇkÍš5ޱþóŸ:{ö¬ºvíêæ#©Ÿ hêÔ©úË_þ¢µk×*::Z�=ö˜G׀ĭ@JJŠ***ôóŸÿ\û÷ï×ôéÓåëë+éîû8ŠŠŠª]2•““£ÀÀ@ÅÄÄÔ¸_;�íÚµKNc�;w–$§»c5Öýö9iÒ$=øàƒzùå—õÇ?þ‘÷~š ΀ðzƒ ÒÃ?ì8SQuù•$¥§§kçÎ�6l˜ÒÒÒÔ»wo­Y³FgΜQFF†:vìXã~SRRôꫯêµ×^Sll¬¶nݪÇ«{÷îNo,ïÞ½»´}ûvEGG+<<\áááúþ÷¿_ã¾ï÷Æô¾}ûªM›6Z¿~½:wî¬��EFF*((H’Ô¦M=ÿüóZ¼x±:uê¤9sæÔ¥T49΀hªBGLLŒbccãáááúë_ÿª'žxBï¿ÿ¾.\(íÞ½[Ï=÷\­ûüñ�¬U«V)77Wiii*++ÓÁƒátk]___ýîw¿See¥ž}öYÅÅÅiýúõŽçï½ ¯«OB¿W·nÝô›ßüFÿûß5yòd :T999NÛLŸ>]’4{ölùûû׺?¬b3|Œ.x¥Õ«WkñâÅúüóÏÕ§OO/I\‚^ç³Ï>Ó™3g´råJM™2…ðhV8^&""B¥¥¥;v¬~ýë_;Þ@s@`Þ„À2–!€° €e ,C`Ë@X†À2–!€° €e ,C`Ë@X†À2–!€° €e ,C`Ë@X†À2–!€° €e ,C`Ë@X†À2–!€°ÌÿÕgÎ(™Û:˜IEND®B`‚ipython-ipyparallel-14e3c43/docs/source/tutorial/figs/asian_put.pdf000066400000000000000000000307321520071063500255550ustar00rootroot00000000000000%PDF-1.4 %¬Ü «º 1 0 obj << /Type /Catalog /Pages 2 0 R >> endobj 8 0 obj << /XObject 7 0 R /Pattern 5 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] /ExtGState 4 0 R /Shading 6 0 R /Font 3 0 R >> endobj 10 0 obj << /Contents 9 0 R /Type /Page /Resources 8 0 R /Parent 2 0 R /MediaBox [ 0 0 576 432 ] >> endobj 9 0 obj << /Filter /FlateDecode /Length 11 0 R >> stream xœÍXËŽ\5Ýû+¼„ÆUåç’H)«@F°Ž`¦ƒ2 Šø{ªl_ß—ÝÓK¤–ÚïS�SåòýQ¡~£Aÿ®­þÂÿ¯•åÖEûøÿ±ü;BnÙöÿ‡úÀk^«ˆÚ;^é0(íÇ¥M)™Äݸ6e×g]÷��e9žzº×¿èO|ú-ÈÖ$´Éû^?‰P+0˜*zk|¨m² Cp.§wó9›Dà€(:–B!&ã<Øì¢OYZ“/oGCBs)& ¢+øÀGC²ÖYŸ¢ÉXSè�¡„ÐQŠUÙÍüzvÿ‘õÿQß`C.ZŸødÏîh&8«xáͬœÛÙ}ÛÁ„˜mæ <2lV .:¤U¼v P49²ÆH,É`ðÙ¢ºjªY-š @>$^$¦ŠÎäè ¯ˆZÌ“ÒjZ h‚·ØfP¹¡ØÜùL1WSõ}­½3ñÄjæ¾™»'ìé6¯‹ÈL):îdŒÎÛœlé8¬³.�j¾ú§‡Q—qé³ÊÖzáDqWb·p„¤@ªÓ­ùÁÂÄžðâÖ31�(’‡èÙèݶU%.N66(û øŠŒõ™ b)€&9¶û��O¼jQ & ø|hÌïÛ¤}tñ„jFŸÝfôœÑyFÿI´Üæv—-ä`£J7Fï|Gí}½wâêëÅ­�$ºæ6¥ÂÇl ¤”]ÊlÂÕ&‹»“7ž˜l!Y_¼Ív�#�×ݰD,‘7�ÉjiãÕˆœs�%‡žJ2Ÿ1XV-o’¹Úæõ£ã'™Pª§‘#g”�P\mâádÏCìÜèÔ5b¥“ØÖS ì5ʱ¼w\÷o~ég2ä9¡q<„âàÄ ŽIO™~X§)K.Ì�sÊ9Ò ”8 ò^¶B 1:gÀ#ËKº¸iqÉÒûµ®R'Ìh3¡YZY9#ñ„ó·ø¨ÄZɰ”yèà�½™»;º¤KßeÃáî90‹Ä,›³È|®6-ÞhÝî„ÖÚ^M\5uí„ �nåòZKÙ“™ê_ŽÅÛÄu•:Oª% £ÏÅä¶v“û•ê5ᥖ‡ÎÔqÙú‹zu§¿ý8Aë»ÊgÃxÌ>¯0qãî7õSÊ~­ï>êïïTT@`üR,¶v=¼õàÞ½ À* �è~€žy�kè­ÝÐk¯£/Ýëè‘k—0Ôº¯ñ¥Çõô_/+}¯¢#%0Ôºs*06µº´µëé­· ÷îuô Ç÷�ºSȦ©Þš »t:të]E.¡ä‡zÓ@ïµî^ßAõô]0mbë*:—?Æ»¡Þ®ë½·ò�¾lÀ Åoj;~þëñýóÃãÃó¿g©{PÖÔ*mÓÃ/o‰iX:©½²”lS¹�±¢æ�wä-ÄÕX¬€µ¹Á\æì:?CöP�¹¢àBa=p�¼!8‘6]ks½Ì5èu~ìfF±3Dc7À`ÇJ“åS+rmniÑæò:?Cv²ÖÄòXçž_û-5"¤ß$û—tÞº-2Œéhùˆo@>`ÝXJ²ê°»‹|Z(ï·ÆÑwÏOÞë·O¿Þ/Ç¡~³Ua'©w£ˆ['Ÿ$6£q»´]U]|Ö¯Ä;©†ñ�›Š ßýýðþ“~ûÏó"ågÍÏJãJ¶ç˜•{{ùöO*ÆBûª²®¿,{¹|â Zž Sy‹Ôqr\w–A™ÚŒ7á9;±q× ¹uO»êø¥Žã¬R ¤¢¸ª×ðÍ~觃ª+Ø\ ±9Â�?�ÆVôÃi——Ì’Éüb¿ý8>•–%¼é3@‘{¶RíVn´ÙKq™IÝÇùui™Øhs×-‹6×_·W¦7rïñ.3ù–qtü¼[8L«ÜÇq=ѧÈ}Ë®ª0Y¹÷äªÍAŠËLê>Î dÆ¼Ñæ0®'ZJé8xêœÆ6îO¾Ì$™% õB :i$ö>?2C«|‡s//%¯žãÊvµïž¥—&Èÿ?Ùö h)$û:±‰ë{¦÷²Ü¯ÇêkP‡Œåê£,v�£�ëÇ›eµ@âòœ²Ü0Ñ^‡Ž L¸,L7Ç<§7L‡/` Ë!y Q– f˜b’‚¦²ë˜(Œâ«,‹®T0Óóæn˜p^ÀdRsÖüʔ嵤œ‚b× sÈuP"~ã@"Key�³¨×� ë¥rµBHµºTª�-ê?�[oB endstream endobj 11 0 obj 1675 endobj 16 0 obj << /Filter /FlateDecode /Length 49 >> stream xœ36´P0P040’F†@–‘‰BŠ!HÄÌå‚ æ€Y@¢8®&‡+ Æè & endstream endobj 17 0 obj << /Filter /FlateDecode /Length 80 >> stream xœEŒ» À0D{¦`~&fŸ(•³ JÜpOº{¸:2SÞa†‡ž ,†Sñ™£`5¸FR��죰n_u�æzS«õ÷*Ovvq=ÍËô endstream endobj 18 0 obj << /Filter /FlateDecode /Length 90 >> stream xœM�AÀ ï¼"OPDÐÿtzÒÿ_«Ô½ÀN‰E‚ô5jK0î¸2kP)˜”—ÀU0\ Úî¢Êþ2IL�†Ó{·ƒ²ñqƒÒIûöqz«ýzÝÒ"X endstream endobj 19 0 obj << /Filter /FlateDecode /Length 210 >> stream xœ5PË C1»g ¨�džV½uÿkmÐ;aÿBXÈ”y©ÉÎ)éK>:L¶.¿±" ­u%ìÊš ž+ï¡™²±ÑØâ`p&^€7`èi�5tႦ.•B�Å%ð™|u{è¾OxjrvCÉ` jºMX´<Ÿ�Nâÿ~Ãî-ä¡’óÊžùœíð;³ná'jv"Ñr2Ô³4ÇE> stream xœ36´P0€ÃC.”ì endstream endobj 21 0 obj << /Filter /FlateDecode /Length 317 >> stream xœ5RKrC1Û¿Sp�Θ¿}žt²jî¿­„'+°-@B./YÒK~Ô%Û¥ÃäW÷%±B>�íšÌRÅ÷³Ï-¯GÏ·- Q=ø2'"ÔÏÔè:xa—>¯N)x“¯á_x”NƒÀ;2Þ“‘$ÁšK‹MH”=Iü+åõ¤•4t~&+sù{r©j£É X¹Ø¤+)$=‰H²r½7VˆÞ�W’Çg%&Ý&±M´ÀãÜ•´„™˜BæX€Õt³ºúLXã°„ñ*aÕƒMž5©„f´ŽcdÃx÷ÂL‰…†ÃP›}• ª—�ÓÜ #¦GMví²[6ï!D£ù3,”ÁÇ($‡Nc$ Ò°€�9½°Š½æ 9Àˆe�š, mh%»zŽ…ÀМ³¥aÆ×ž×óþE[{£ endstream endobj 22 0 obj << /Filter /FlateDecode /Length 338 >> stream xœ5R9®Ý@ ë} ] €vÍœç©~î߆”_ C´VŠšŽ•iùe!U-“.¿íIm‰ò÷É ‰’W%Ú¥ ‘Pù<…T¿g˼¾Öœ K• ““’Ç% þ —Þ.çck?�#w=z`UŒ„Ë£kY:»Ãš�ü<¦?âr®X·cH ºqÚïCóyÈ f˜–Š ]V‰~Añ G­}÷XTX ÑíIpŒ�P‘€v�ÚH 9³»¨/úY”˜ tí‹"î¢ÀIÌœb]:ú>t,¨¿6ã˯ŽJúH+kLÚw£IiÌ"“®—Eo7o}=¸@ó.Ê^Í ASÖ(i|Ъ�c(še…wš 4LJÌ<‡3”ô}(~_K&º(‘? ¡_£ŒœosÑŸ¶ŠñÙa¯`…ÒÅšä}@*z`úÿ×øyþü¶€T endstream endobj 23 0 obj << /Filter /FlateDecode /Length 163 >> stream xœM�;Ã0 CwŸ‚ êãÏyRtjï¿Vr ƒÁÊ�(usfà !¼ÞÀ‹-eÇ· ¬Oãø'庉}€ù‹º ’*†³©Æ€F ;tõ’³™{�MÃXp¤¤ï¶@'<,›ÙVµQ•°{ì“î"I­Ú£Ó Œ�g í° °»›O㵦¦_š)雨3˜·ðH›BdˆZÊ÷qêg{ÿ?ë83 endstream endobj 24 0 obj << /Filter /FlateDecode /Length 88 >> stream xœ5Œ» À0D{¦¸ø8€÷‰R‘ýÛ[.¸{Òç9ÀÈ>GèÄ-dCá¦xI9¡>Q4Zo:¶Hs¿¼d3ý3Ü}…íæ€d4Iä!ÑåråY)z>—Ú~ endstream endobj 25 0 obj << /Filter /FlateDecode /Length 165 >> stream xœE�;! C{N¡#€Ày6“нË;I,Œ%?¢+:öÊÃccÊÆk´±'ÂîR: §©Œ¯Š§g] Ëa2So\Í\`ª°ÈnN±ú|¡òìæ„¯Už—L 0•;¹‡õúQœ–|$» ‚ê”�ÊÂ0GÒ÷@LM›§…�ü�/yjAP™æ�k–•GkS4g˜*[ ‚õ� :¥úÓÿL§½?Üô=€ endstream endobj 26 0 obj << /Filter /FlateDecode /Length 338 >> stream xœ5RK’[AÛ¿Sè®jþÍyœšÕäþÛ쬠��8ÈÄK Q�rÅy‚ñ:�¿ëåiü>Þ…Ô‚§"ýÀµiïÇš5Q°4b)Ì>öý(!ÇSãßè¹Hfd2r ˆûµ>Ö›L9ü¤isú(Iz-ØÝv|Y�AÒ“–ìä‡u-°ºM˜k"9µ25ÏÇžá2ž#AÕ, IŸ¸OŒH3;g-y�áxª/~½�×2�©—U2¶ æ`;™ §("¿ $¹‰»hê(ŽfÆšÛ…†’"÷Ý=œœôº¿œD^ á,ÖŽzÊ2'; J jå˜a½ö…qš6J¸SÓí]±¯ßg&aÜæ°³R2 Îqp/›Ì${Ý1a‡˜÷îŒÄ¼ù]l\¹Ì¹&Ó�ý(ÚH×ç\M™­(áªä‰×øÿüÞÏÏ?�7}± endstream endobj 27 0 obj << /Filter /FlateDecode /Length 247 >> stream xœMQ»mD1 ëß\àëkyž R]öoCÉ� ¡/)§%öÆK á[¾ä‘UC?1ì3,=ÉäÔ?æ¹ÉT¾ª›˜Pbáýh¼t/"+Êß�e sÎ÷ࣗ`&4`¬oI&Õ¼3d‰¡ŽÃA›TwM,®Í3ÈíV7²:³ lx%âÆDÙ�Í`£Œ±•�År¨ ’Z`×éQ‹‚+”Ö t¢ÖĺÌà«çöv7C/ò਺x} ëK°Âè¥{,|®BÌôL;wI#½ð¦fR™�‘•:=b}·@ÿŸe+øûÉÏóý (\* endstream endobj 28 0 obj << /Filter /FlateDecode /Length 248 >> stream xœ-Q9’AËçzBsÓï±Ë‘÷ÿé ʃ†C :-qPÆO–+ÞòÈU´áï™ÁwÁ¡ßÊu9HÒTM¨]¼½vfó¤5,ƒë?c 7zqxLÆÙíu5{×kOfP2+qÉÄSuØÈ™ÃO¦Œ í\Ï È¹Öe¤›•ÆŒ„#M!RH¡ê&©3A�£«Q£�Å~éË#�aU#j û\KÛ×sÎ4;«<9¥GWœËÉÅ +ý¼ÍÀET«<p¿ÛCýœìä7ÞÒ¹³Åôø^s²¼0Xñæµ�Mµø7/âø=ãëùü¨¥[ endstream endobj 29 0 obj << /Filter /FlateDecode /Length 70 >> stream xœ3³0Q0P°b3s3s#K…C.# 3 @.—X ‡ËÐÐÊ261R044²LÍ�¡b0�@YK�A9Pý9\iOT/ endstream endobj 30 0 obj << /Filter /FlateDecode /Length 304 >> stream xœ=’;’Ã0 C{�‚ÈŒø“äód'•÷þí>2ÉV€I‰(/u™²¦< i& ÿÑááb;åwØžÍÌÀµD/Ë)Ï¡+ÄÜEù²™�º²:ŪÃ0�[ô¨œ‹†M“šç*K· žÃµ‰ç–}Ä74¨u�K ÝÕhY Ípuÿ;½GÙw5<›TêÔ�Qæù!O¢‡éJâ|<(!\{0FäSÑ@޳\­ò^Bö·²ÂAjIç³'<ØuzO.nÍd¹TøNQìíÐ3¾ìJ =¶áXî};š±é›8ì~ïFÖÊŒ®h!~ÈW'ë%`ÜS&EdN¶Xn‹Õžî¡(¦s†s êÙŠ†RæbW« ;o,/Ù,È”Ì 2F§Mž8xÈ~�šôy•çxýlós; endstream endobj 31 0 obj << /Filter /FlateDecode /Length 230 >> stream xœ5QInÃ0 ¼ëó�â.¿ÇAOíÿ¯Ò ``hKœÍx‰ÁÏAäÆ[ÖŒšø›É]ñ»< ·‚'Q^†{Ù .o—ý8Ì|ð^Z9“O2 ÙôðDÈ`—@èÀìÔa›i'ú†„ÏŽH5YN_KÐK«(OÙ~§ J´­êÏí³.´íkO8Ùí©'•O ž[²—�WLcôDå.ÅôAª³…ž„ò¢|²ù¨!]¢œ�'£@;°ç¶Ÿ‰W… uuŸ¶�¡)Oÿ645I"ä%œÙÒ¸[øþž{ýü¦TSŸ endstream endobj 32 0 obj << /Filter /FlateDecode /Length 245 >> stream xœEP»�C1 ë=`ý,{žwH•Û¿=JFp…!Z?’Z˜ˆÀK ±”oâGFA= ¿…â3ÄÏ…A΄¤@œõ™x†ÚFnèvpμÃ3Œ9ÅZp¦Ó™ö\Øäœ'Îm”ñŒBºITqTŸqLñª²Ï�×�¥µl³Ó‘ì!�„KI%&—~S*ÿ´)[*èÚE°Hä�“M4á,?C’bÌ ”Q÷0µŽôq²‘GuÐÉÙœ9-™Ùî§íL|X&™Qå)�ç2>'©ó\N}î³Ñ䢥UûœýÞ‘–ò"µÛ¡ÕéW%Q™�Õ§�¸<ÿŒŸñþŽ Y> endstream endobj 33 0 obj << /Filter /FlateDecode /Length 68 >> stream xœ32·P0P°4†& æf )†\@¾©‰¹B.H Äʳ €´%œ‚ˆ[B4A”‚X¥f&fI8"—É´å endstream endobj 34 0 obj << /Filter /FlateDecode /Length 81 >> stream xœ=Ì»€0Ð>S¼B|€ìã±Òý[ÁD¸|Õ!Ô n‡´¬Kw“}êzµ‰¤È€ÒSj\NŒ¨i}©}jà»æKÕ‰?ÍÏç‡Çk endstream endobj 35 0 obj << /Filter /FlateDecode /Length 45 >> stream xœ32·P0P°4†& æf )†\–V.L,ÌÑ–p "žŸ} µ endstream endobj 36 0 obj << /Filter /FlateDecode /Length 214 >> stream xœ=P»C1ë= äÎ|í7ÏË¥Ëþm$œ¤B6B”šLÉ”‡:Ê’¬)O>Kb‡¼‡ånd6%*E/“°%÷Ð ñ}‰æ÷ÝÕ–³C4—h9~ 3*ªÓK6šp*º ÜÃ3ú mtV‡±[ Ф`×¶ rÇ Á™‹" JMÿ­r÷RÜï=o¢ˆ”tð®ùåôËÏ-¼N=ŽDº½ùŠkq¦: DpFjòŠtaŲÈC¤Õ5=kµ®Þzù7hGt€ì‰ã4¥CÿÖ¸Ç뇊Rô endstream endobj 37 0 obj << /Filter /FlateDecode /Length 161 >> stream xœE�Kà C÷œBGðG|žtºJï¿­!M³€§±@w'©µÑ/mKº >[ ÎÆxè6n5äu€V¤ãh”R}¹Åi•tñh6s+ ­fz”£ :Þí¢är¦îÎùGpõ_õG±îœÍÄÀdå„fõ)î|›Q]ÝdÒcnÖköª°´¬¥å„ÛÎ]3 î©íý©s:„ endstream endobj 38 0 obj << /Filter /FlateDecode /Length 332 >> stream xœ-R9Ž$1 Ëý ~`ëòñžLÔûÿtIUªlË<ärÃD%~,�ÛQkâ×Ff Âð¯«Ì…ïHÛÈ:ˆkÈE\É–ÂgD,ä1Ä<Ä‚ïÛøù¬ÌɳÆ/Ù÷Vì© ËBÆ‹3´Ã*ŽÃ*ȱ`ë"ª{xS¤Ã©$Øã‹ÿ>Ås‚¾#hÀ/ùç«#x¾¤EÚ=fÛ´[–iG•–ƒíiÎËäKë,WÇãù ÙÞ;BjW€¢0wÆy.Ž2meDkagƒ¤ÆÅöæØ�¥]èÆe¤8ù™*ÂJšÌl¢ þÈé!§2¦®éJ'·QwêÉ\³¹¼�I2[÷EŠÍÎë™õw˜2«Í;y–¥NEø{¶ �ãêÙk™…F·9Á+%|6vzrò½šYÉ©HHÓº N£ÈKØ–øšŠšÒÔËðß—÷ÿ3â| endstream endobj 39 0 obj << /Filter /FlateDecode /Length 157 >> stream xœE�¹C1DsUA °ê±ÇÑwÿ©ùJ´o-‡¯%Sª'"¦Ü×hô0yŸM%V,Ø&¶“rAJ1˜xN1«£·¡™‡Ô븨ª¸uf•ÓiËÊÅóhW3“=Â5ê'ðMèøŸ<´©è[ ¯ ”}@µ8�IP1}¯b�£œv"œà>G™)#qbn ì÷f¾W¸ÆãÝ7y endstream endobj 40 0 obj << /Filter /FlateDecode /Length 320 >> stream xœ5Q»qÅ0 ë5ð�ø•4�s¯ÊÛ¿ @;a@ª¼dJ¹\ê’U²ÂäG‡êMù>`¦üõ�ãèÙ!ºSÖ–{ËÄ<¥ŽXM–{¸�/ M‰¹…ó÷è+£0�ºÅß?@³$0ipðS�k­Zb‰<,X³+Ì­)TÈU|;6¹rq³Ð§š·Ü‚ðeˆdGj±¯Ëe)ò»õ „æˆO‰…ç�f"ñ'b{öÙbWW/ªÖI‡RÒln04E²êƒØWÇ5?OGÙÁÉA¿ŠÁø68™/Iy_¡�þÏÙȱ’C$ò}µÀˆ#l€¡Oí#e 4E÷î™R>&UŠïF!}ªW2¼‘Ùj†Íÿ]Ù* UYŸFp&ƒI8ód£ ÓRµÓ¿ûÜãóccz€ endstream endobj 41 0 obj << /Filter /FlateDecode /Length 131 >> stream xœE�Ë ! CïTáò>©‡ÕžØþ¯ë0šABøA";ñ0¬óò6ÐÅðÑ¢Ã7þ6Õ«c•,ºzRVé�‡¼òPi0QÄ…YLCaΘÊÈ–2·á¶Mƒ¬l•T­ƒv<¶§e«~©maê,ñ ÂU^¸Ç ?�K­w½U¾BS0— endstream endobj 42 0 obj << /Filter /FlateDecode /Length 138 >> stream xœ=�A1ïy…?)vBXÞ³UOÛÿ_KšÝ^ÐŒ1BCo¨j›‚ Ç‹¥K¨Öð)ЉJÈ™`¥¤Òg‘zb8Ü´Îâ±éú»’V}ÐæFº%h‚GìSiÜ–qÄ5ê)ê\£¼¹Ÿ©WØ4’Ý´²’k8¦ß½ç©ëÿÓUÞ__ß.Œ endstream endobj 43 0 obj << /Filter /FlateDecode /Length 392 >> stream xœ=RKn1ÛÏ)¸@¥ðMrž©ÞîÝ[›ÌTª /¶1”— ©%?ê’ˆ3L~õr]âQò½ljgæ!î.6¦øXr_º†ØrÑšb±OÉ/È´TX¡VÝ£Cñ…(-à�á¾ÿñ¨Á×°…rÃ{d`JÔn@ÆCÑHYAaû‘è¤P¯láï( WÔ¬…¡tbˆ –)¾« ‰˜¨Ù ‡„•’ªÒñŒ¤ð[Á]‰aP[[ÛxfÐÙÞ‘�3íÑqYk?=é£Q2µQMg|ñÝ2RóÑè¤ÒÈÝÊCgÏB'`$æI˜çp#ážÛA 1ôq¯–Ol÷˜)V‘ð;ʽýÞ’�Ï{à,Œ\ÛìL'ðÑi§­¾býƒ?lK›\Ç+‡E¨¼(~×Aq|XÅ÷d£Dw´Ö#Õh% ÂÎí0òxÆyÙÞ´æôDh£DÔŽ=(²Å地§ü¬Í±ž&{o´�”Į̀„Ôvz¨¶ÏcÔwžûúü.¡ endstream endobj 14 0 obj << /FontDescriptor 13 0 R /Name /BitstreamVeraSans-Roman /FontMatrix [ 0.001 0 0 0.001 0 0 ] /BaseFont /BitstreamVeraSans-Roman /Widths 12 0 R /Subtype /Type3 /CharProcs 15 0 R /Type /Font /FirstChar 0 /FontBBox [ -184 -236 1288 929 ] /Encoding << /Differences [ 32 /space 46 /period 48 /zero /one /two /three /four /five /six 56 /eight /nine 65 /A 80 /P 83 /S 86 /V 97 /a 99 /c 101 /e 105 /i 107 /k /l 110 /n /o 114 /r /s /t /u 121 /y ] /Type /Encoding >> /LastChar 255 >> endobj 13 0 obj << /Descent -236 /FontBBox [ -184 -236 1288 929 ] /StemV 0 /Flags 32 /XHeight 547 /Type /FontDescriptor /FontName /BitstreamVeraSans-Roman /MaxWidth 1342 /CapHeight 730 /ItalicAngle 0 /Ascent 929 >> endobj 12 0 obj [ 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 318 401 460 838 636 950 780 275 390 390 500 838 318 361 318 337 636 636 636 636 636 636 636 636 636 636 337 337 838 838 838 531 1000 684 686 698 770 632 575 775 752 295 295 656 557 863 748 787 603 787 695 635 611 732 684 989 685 611 685 390 337 390 838 500 500 613 635 550 635 615 352 635 634 278 278 579 278 974 634 612 635 635 411 521 392 634 592 818 592 592 525 636 337 636 838 600 636 600 318 636 518 1000 500 500 500 1342 635 400 1070 600 685 600 600 318 318 518 518 590 500 1000 500 1000 521 400 1023 600 525 611 636 401 636 636 636 636 337 500 500 1000 471 612 838 361 1000 500 500 838 401 401 500 636 636 318 500 401 471 612 969 969 969 531 684 684 684 684 684 684 974 698 632 632 632 632 295 295 295 295 775 748 787 787 787 787 787 838 787 732 732 732 732 611 605 630 613 613 613 613 613 613 982 550 615 615 615 615 278 278 278 278 612 634 612 612 612 612 612 838 612 634 634 634 634 592 635 592 ] endobj 15 0 obj << /period 16 0 R /one 17 0 R /four 18 0 R /zero 19 0 R /space 20 0 R /six 21 0 R /three 22 0 R /nine 40 0 R /A 24 0 R /P 25 0 R /S 26 0 R /five 27 0 R /two 28 0 R /V 29 0 R /a 30 0 R /c 31 0 R /e 32 0 R /i 33 0 R /k 34 0 R /l 35 0 R /o 36 0 R /n 37 0 R /s 38 0 R /r 39 0 R /u 23 0 R /t 41 0 R /y 42 0 R /eight 43 0 R >> endobj 3 0 obj << /F1 14 0 R >> endobj 4 0 obj << >> endobj 5 0 obj << >> endobj 6 0 obj << >> endobj 7 0 obj << >> endobj 2 0 obj << /Count 1 /Kids [ 10 0 R ] /Type /Pages >> endobj 44 0 obj << /CreationDate (D:20111127165057-07'00') /Producer (matplotlib pdf backend) /Creator (matplotlib 1.2.x, https://matplotlib.sf.net) >> endobj xref 0 45 0000000000 65535 f 0000000016 00000 n 0000011570 00000 n 0000011454 00000 n 0000011486 00000 n 0000011507 00000 n 0000011528 00000 n 0000011549 00000 n 0000000065 00000 n 0000000315 00000 n 0000000208 00000 n 0000002065 00000 n 0000010064 00000 n 0000009849 00000 n 0000009359 00000 n 0000011117 00000 n 0000002086 00000 n 0000002207 00000 n 0000002359 00000 n 0000002521 00000 n 0000002804 00000 n 0000002893 00000 n 0000003283 00000 n 0000003694 00000 n 0000003930 00000 n 0000004090 00000 n 0000004328 00000 n 0000004739 00000 n 0000005059 00000 n 0000005380 00000 n 0000005522 00000 n 0000005899 00000 n 0000006202 00000 n 0000006520 00000 n 0000006660 00000 n 0000006813 00000 n 0000006930 00000 n 0000007217 00000 n 0000007451 00000 n 0000007856 00000 n 0000008086 00000 n 0000008479 00000 n 0000008683 00000 n 0000008894 00000 n 0000011630 00000 n trailer << /Info 44 0 R /Root 1 0 R /Size 45 >> startxref 11781 %%EOF ipython-ipyparallel-14e3c43/docs/source/tutorial/figs/asian_put.png000066400000000000000000000551041520071063500255700ustar00rootroot00000000000000‰PNG  IHDR Xšv‚psBIT|dˆ pHYsaa¨?§i IDATxœìÝ{œÎuÞÇñ÷u�œÂ ͈Æ�ÐM¥”CN É)µÙÐ0lÊZÊar[+¥È²›l¦bÕªf¢VÓ •mÝ[)§]ʘ¡Ô–‘Ó84æpÿ¡™u™ÁÌ5¿ãõ{=�G®ë7×|ǽ�;¯>ßïïçËÏÏÏXÀo÷xÀ2Ë ,C€° À2Ë ,C€° À2Ë ,C€° À2Ë ,C€° À2Ë ,C€° À2Ë ,C€° À2Ë ,C€° À2Ë ,C€° À2Ë ,C€° ÈÈÈ�ßï×СCí^ !‡àzO>ù¤ü~¿ü~¿¾üòKÃ>×çóöYF(ø ~U¨PA±±±ºûššZæÏïÔ©“ü~þµ0W9»e‘ŸŸ¯¤¤¤Âß'%%é™gž)Óg^sÍ5Ú½{·ÂÃÃ˺<Ãù|>=ñÄ’¤¬¬,½óÎ;z÷Ýwõî»ïjÖ¬Yš#1kàj‹/–$=üðÃ4h�:¤Õ«W{í‰'´téR 2DõêÕSÕªUÕ Aõïß_[·n-¼îbg@¾üòKMžŸO´/·�ªàýêÕ«ë‰'žÐ’%K´ÿ~MŸ>½ðš˜˜˜2­ €  \ë•W^QNNŽâãã%I7Üpƒn¼ñFmذAéééjРAáµûöíÓ† Ô²eK}úé§E>ëèÑ£—ý~ƒÖøñã‹lïzþùç5zôhýîw¿Óœ9sŠ|ÝŠ+4kÖ,�7NåË——$͘1CÓ§O×sÏ=§y󿕿Ç.âõ×_×áÇU®\9Ýxã�…¯—t‡mxx¸žxâ mܸQдiÓÊ´.…-X\©àðyXX˜\øúСC•ŸŸ_¸5«@åÊ•¦¨¨¨b?/""â²ß3::ºØ³%ÇWíÚµµqãÆb¿.<<\ãÇ�/ŒIêß¿¿$iûöí—ý¾çËÏÏWbb¢¦OŸ®„„5oÞ\C‡•ÏçÓôéÓU³fÍR}V#@¸Ò† ´oß>uíÚUµk×.|}РA*_¾¼–,Yp˜ºV­Z…·«½á†4sæLmÙ²Eyyy¥ú¾kÖ¬ÑÝwß­ØØXUªTI~¿_+VÔwß}§´´´b¿¦OŸ>EÂ¥I“&ŠŒŒÔ7ß|Sªï/I‰‰‰š1c†,X “'Oª{÷îzûí·5eÊ”RV#@¸Ò‹/¾(I2dHÀë5jÔP¯^½ôŸÿüGk×® xoùòåZ¸p¡rrr4mÚ4µmÛV5kÖÔäÉ“uúôéË~Ï3fèž{îÑgŸ}¦Ö­[käÈ‘zâ‰'4}útÕ¯__'Nœ(öë6lXìë•+WÖÙ³gKòãòù|ÊËËS^^ž²³³µoß>­[·N=zô(Õç`΀p�óït5`À 0 Øë^|ñEÝsÏ=…¿¯\¹²FŒ¡#FhïÞ½Ú¸q£^xá=óÌ3ŠŒŒTBBÂE¿ç©S§4cÆ U®\Y_|ñEÀÔ%;;[Ï=÷œA?�1Ê•;÷ÿÞO�:Uä½½{÷Z½  \géÒ¥:{ö¬n¹å–€C×ç[½zµÞ{ï=}ýõ×ÅÞeªQ£FjÔ¨‘úôé£zõêéÅ_¼d€|õÕWÊËËSÿþýâC’Þyç?~ÜQñ»æšk$I|ð�š4iðÞ믿^ìלQÉÎÎ8¯€‘®³xñbù|>-\¸P·ÜrK±×DFFêé§ŸVRR’•‘‘¡“'Oêú미nÿþý:{öìeïÕ¼ysÕ­[W©©©:{ölᙎ={ö8nú!©ð–Âo½õ–†ªòåË+??_ï¿ÿ¾>øàƒb¿&::ZùùùÚºu«Z·nmår®²iÓ&}õÕWjÞ¼ùEãC’~õ«_I’^~ùeåååé‹/¾PóæÍÕªU+ÅÇÇkâĉêÕ«—zôè!ŸÏ§I“&]òûúý~ >\ß}÷�êׯ¯aÆ©sçÎjÚ´©Ê•+§–-[–ø¶·VèÝ»·n¸á½û[·®~øa5nÜX={öÔðáËýšnݺI:w»áQ£FiæÌ™zõÕW­\6À®’””$ŸÏ§‡zè’×5lØP�;wÖ·ß~«uëÖ©U«VzüñÇU¡B¥¦¦ê…^ЩS§4vìX}üñÇ—ý}Z3fÌÐàÁƒ5þ|IR÷îÝ•ŸŸ¯§žzJ Enã à%ý{S�ŒŒ M™2EË–-+ x� \êHLI‹}íÚµ:r䈆 ðúСC•““£×^{­Lkp‚’%>|¸ºu릾}ûZ°"¸Œ[´hðzLLŒªT©¢ôôt;–`©¤¤$}úé§Ú½{·ÝK�ƒ &8xð ÂÂÂQ佨¨(ŸOéééªW¯žvîÜ©þýû~�ÏçÓÈ‘#%I�:uÒ†  ß{ôÑGU½zu-Z´H¯¼òŠ7n¬gŸ}VcÇŽµös9b¡$§©OÇg_!‰©ŒEˆÀj%ù{p1ÈÏJòlŽN�:)//¯ÄŸ§¸¸¸², ç)mŒüâÎ-�?GãœÿgÉö¬²ÐÄî8SiC¤‡yKAˆ ö™f¥ù{BW*IŒüâ�0«–Òøs4Nq–„Hp�K+iˆ ì@€ÀõÎ�‰­Zp'Bf`k'"@r877+<°.bÆ!D8 ‚�FŒÀ͘ŠÀh„' @àÄÜŠ�Ñv"@àIÄ܈�Ñx˜!; ð_À5§N�ÒÔ©SuÍ5×hÖ¬YúË_þ¢5jhøðáêÒ¥‹Îž=kÇÒálÁB™qVnÂö,Ø�3"%111:räˆ$éðáÃJJJ*rMåÊ•õõ×_+22²ðµîÝ»«N�:š2eŠþú׿ªoß¾–­ÎB€À0œ�›phv Djòóó‹}Ýï÷ÄG�¾}ûjÊ”)JOO7{ip0¶`ÁlÏ‚›°= Vck¼êÃ?”$µhÑÂæ•ÀNL@`*¦"p¦"°ÚñÙ噆À32224yòduîÜYwÜq‡ÝË��X†�›pVVa[œ`ÝϿΗeàçÿøã�êÛ·¯*W®¬—_~ÙÀO† °×ᄬBˆ ,®}Pjquð_ßBÒ…§·~/ÝüjYVuÎ�?þ¨;ï¼Sß}÷�6mÚ¤úõë—ýCájlÅTnÁö,X…A(9r䈺víªèý÷ßW³fÍì^€�c0�[0�¸ÝÑ£GÕµkWeddhýúõºá†ì^‚�ã0�[0�8ѺuëtòäI�8qB’´k×.¥¤¤H’zöì)éÜs?>ÿüsÍŸ?_?ýô“¶lÙRøõ5kÖTll¬õ ‡# p4¦"p ¦"0wÌ‚“Œ9Rû÷ï—tî)èÉÉÉJNN–ÏçSzzºòòòôÉ'ŸÈçóéÑG-òõñññF÷0®ÀTnAˆÀLLCà%y�`^^ž+� p¦"p¶gÁL„7#@àZLEàLE`B€ùí^`„Ù?N À‰æ„%LF£Ÿ]¾0FÀ阀 ¤0�°= fa"À „,bnÀö,˜�;fp2¶`ÁØ¢§c{ŒÆ¶,NÅžÂTNÇDFc[§!@àYÜÎNÆ9�à<�©œŽ©ŒDˆ°g@€ópVNÆ9‰ó!ìÂ(S8…i; ÀepVNÅ9…`%(!¦"p2¦"0!À œ‚ÀY8çD`ž!ÀLL@€2`*§b{ŒÀD€À ÄœŠíY(«ã³Ë! Ã,ÀlÑ‚±= eÁ¶,Fa˜ˆ©œˆ‰Ê‚mYÊŠ,Âí|á4œAY"‚E€c*'b*‚`"J‹3 €�8+§áœ‚Åù%E€@ˆÀiƒƒêJ‚„�Ó!!àRÀ�8 Ó‹Pp0"NB„ LC\ˆŽiœ„i‚E„(@€.AˆÀIƒi‰\‡�“!x¸!§`‚`0 ¼‹\Ž�S!!x„¦!p ¦!x„BNAˆ LCo @€DˆÀ)ˆƒB„0BNÀ4Á`„.Ä�rfW±{ 1„œ€A0ˆ ô •=ªš²GU³{1DìÆ4Á`„Äá�iœ€A0 4 ’²²²4qâDuëÖMQQQòûýJLL,öÚ´´4õë×OÑÑÑjР�âââ”™™Yä:¿ß_ì¯gžy&¨5!0!' B "p·rv/À 233µxñbÝxã�êׯŸ’’’äóùŠ\·wï^µmÛV 4Ђ túôi͘1CmÚ´Ñ'Ÿ|¢ˆˆˆ€ëï¿ÿ~�?>ൺuë½Î‚)ÿÇãAp¡‚™Tc¶Í+�WDHBî›W7)ˆ�j“²m^ €Ò"@$ÅÄÄèÈ‘#’¤Ã‡+))©ØëæÎ�«ÜÜ\¥¦¦ÆF›6mÔ¤I-^¼X&L¸þꫯ֭·Þjøz ˜��Ýæ„%!(µã³Ë!€Ë°ëùùùžž——§eË–©oß¾“ŽF�éöÛo×Ò¥KKüYFá|ÌÀÖ,؉³!gCw!@Jè‡~ЩS§Ô¢E‹"ï5oÞ\ûöí+òúk¯½¦Ê•+«F�j×®�V­ZeÊÚˆ˜���ƒÜ�)¡ƒJ’"##‹¼¥3gÎèèÑ£…¯ 8P .TjjªtêÔ)Ýwß}š;w®)ëc30 �݈”ÓÀù8b’W_}µðŸÛ·o¯)S¦èºë®ÓÔ©S5|øpU«v‰XØ:F*x ]õœûuœ�8;qHÁ0ë�úòÝç~�ïèO†~ ä %T§NI*ö–»‡R¥J•ŠÜëB?ü°&L˜ ;v¨]»v¿°åï¥-Ë´^Bf D`'©#FRÐäܯómý^ºùÕâ¯P[°J¨fÍšªR¥Š¶mÛVä½;v(66ö²ŸQp(½¸[üš…­Y0[³`Ά lËœ…)!¿ß¯¸¸8­Y³&à¬GZZš6oÞ¬øøøK~}~~¾þô§?©bÅŠÅd73!° !‚`!€3°ëgëÖ­ÓÉ“'uâÄ IÒ®]»”’’"IêÙ³§*Uª¤qãÆ)%%EÝ»wׄ  D«‡z¨ð³æÌ™£={ö¨K—.ªY³¦þþ÷¿ëÍ7ßÔ¾}û4þ|U©RÅ–Ÿ‘mY0Û²`'¶e¡´x€!`?äg#GŽÔþýû%�Û"•œœ¬äädù|>¥§§«^½zjذ¡þñ�(!!A£G�V… Ô¡CÍ›7Oááá…ŸÕ¤I­Y³¦pZ¥ë¯¿^sçÎU·nÝìú "0!»pHÁà†€}�Ÿ¥§§—èºØØX­\¹ò’×ôêÕK½zõ2bY¦"D`Bva‚Òb؃3 à :LÁAuØ�³!‡Ôk (D„À „ì@ˆ D` ˜†À,Dì@„ ´˜†æ#@P,Bf`;0 A0ˆ�‹ËÊÊÒĉÕ­[7EEEÉï÷+11±ØkÓÒÒÔ¯_?EGG«AƒŠ‹‹+ö¡Îð—DˆÀ „ì@„ ´˜†/33S‹/ÖÙ³gÕ¯_?IÅ?dyïÞ½jÓ¦�¾ýö[-X°@3fÌЖ-[Ô¦M›€gªÁ{¸ J${T5î–ÃqÇ,X�[ö"ܲ7PLLŒŽ9"I:|ø°’’’нnîܹÊÍÍUjjª"""$ImÚ´Q“&M´xñbM˜0Á²5ÃY˜€ Ä˜†À,LD`5¶e¡´˜†/??¿Ø×óòò´lÙ2õíÛ·0>$©Q£FºýöÛµtéR«–"@Pj„ÌB„ÀjDJ‹)™~øA§N�R‹-м׼ysí۷φUÁ)��˜†ÀjLC "äÒ<(IŠŒŒ,ò^TT”Μ9Ã9#@Pf„Ì@ˆÀjDJ‹i¡Ã0T‡8¨+qHÁÈz´œôjŽík8Þ2øÿ®œòz®R^Ï xíØ1I*þŒÇåÔ©SG’нåî¡C‡T©R¥€³!ð†*˜„"0!+"ðš_<¦_<ðÚ[óÔñÖàªfÍšªR¥Š¶mÛVä½;v(666¨ÏEh` LÁ¶,˜…­Y°Û²€àøý~ÅÅÅiÍš5g=ÒÒÒ´yófÅÇÇÛ·8ØŽ�©˜…�U8¤µnÝ:¥¤¤híÚµ’¤]»v)%%E))):}ú´$iܸq*W®œºwï®””-[¶LwÝu—bccõÐCÙ¹|ØŒ-X°çC`¶eÁJsÂØ’üläȑڿ¿¤sOAONNVrr²|>ŸÒÓÓU¯^=5lØPÿøÇ?”�� Ñ£G«B… êСƒæÍ›§ððp›؉�e8³"° gC€sÒÓÓKt]ll¬V®\iòjà6lÁ‚娖³p>Va[��m˜…�Uˆ(=¶#D`BV`¥C€À1ˆ˜…�ˆ(ŽÂ4fa+0 €Ë#@àH„ÌBˆÀ „\G#D`BV B (®@ˆÀ,„ÌÆ4 p"f!B`6"Î!@à:LC`¦!0Ó @àb„ÌBˆÀl„/#@àz„ÌBˆÀlD/"@2ˆ˜…�™˜†ð!…iÌDˆÀL„¯ @’˜‰�™ˆ¡ŽAH#D`¦!0Ó¡Œ�'"0 !3"BO!B`Bf"B„žÃ4f"D`¦!BÏ"D`&Bf!D¸Ï#D`&"f!B¸üŒ�Y˜†À,LC¸\€�Y˜…à&P ¦!030 àp „ÌÂ4f!D8”!³!0 À© ˆ˜�iÌÂ4€ @)1 �Y˜…à$$Bf!B`"€ @"0Ó˜…i» €A˜��‘…bý IDATYv!@ƒ!0Ó˜‰`50Ó˜��Y˜†°˜ˆ�ј†ÀL„+ €��™ˆf"@ !0³0 `°Ó�iÌD„0Ø„�ш˜…i# €Í‰iÌDˆ08!#!0 ,Àaˆ…iÌÄ4@°À�˜†ÀH„ÌDˆ(-p0BF"B`&"@I € "0 Ó˜‰i€’ @!B`"f"D\ ¸ Ó…iÌF„(¸!£!0Ó*g÷Œ²wï^ýóŸÿÔþýû¯ÚµkëàÁƒª^½º*W®l÷òÓDHù?·y%p³‚™Tc¶Í+A¨*ˆ�„Ü96¯€ÝBbòØc�©iÓ¦zðÁ5uêT}÷Ýw’¤#Fèé§Ÿ¶yu€5˜†ÀLC`6¦!\ ¿ÿýïµhÑ"ýú׿Öû￯üüüÂ÷zôè¡ÔÔTWX‹mY0gC`6¶eÞæúY²d‰î½÷^-X°@íÛ·x/&&Fiii6­¬ R¿’–o·{p1"F B`6"ð&×HZZšxà�bßËÉÉÑO?ýdñŠ D„  ˆ�iÌÆ4ð×H½zõ´qãÆbß[¿~½5jdñŠ F„  Ø’£!0!x‡ë¤k×®Z¾|¹¶nÝ*ŸÏWøúW_}¥µk×êî»ï¶qu!BPFDŒÀ4V B€Ðçú™1c†®¼òJÝrË-ºýöÛ%I�<òˆš4i¢råÊiÊ”)6¯Ð Ë·"(¦!0 ³1 q¾]»v)11QmÚ´ÑÕW_­�jÙ²e:sæŒÝKƒ ¸>@ªU«¦/¾øBcƌщ'T©R%�:uJ£F�ÒÖ­[uå•WÚ½Dc!(#"F`+!δgϵnÝZo¼ñ†ú÷ﯤ¤$EDDhÈ�!úÕ¯~e÷òà!ñ ÂjÕªé¹çž³{ÖY¾]ÐÂîUÀÅxx!ŒÂ a6`è<))):yò¤.\¨N�:I’z÷î­ôôt½ùæ›z饗T±bE{ Gsý$;;[YYYž—••¥ììl‹Wd&!0Ó…iÌÆ¶,ç¨U«–$)***àõ¨¨(]uÕU*_¾¼Ë‚‹¸>@†®áÇûÞ#�<¢_ÿúׯÈBœ �8£°- V Bìwß}÷©~ýú7nœ>úè# ôîÝ[yyyzï½÷lZÜÂõòä“OÊçó)66VmÛ¶Õã�?®6mÚ¨Aƒòù|zê©§ì^¢=ˆ€ê0+!æ«_¿¾¾øâ 8p àõ•+WJ:·;¸×Htt´¶nݪ=zhÛ¶mš={¶¶oß®ž={ê³Ï>óö��Aˆ…i¬À4Ä\ãÇ�—ÏçSÏž=5{öl­^½Z=ô�-Z¤Ûn»­ðÙ ÀŸ>@$)66Vo¿ý¶²²²ôŸÿüGYYYZ³f�bccí^šýØ’ƒ0 �‘ˆX�1GûöíµmÛ6 4Ho¿ý¶yä�9sFIIIzï½÷f÷áp®?„~>ŸÏ§š5kÚ½ gâ€: Âu…;eÁ R7G³fÍÔ¬Y3Mž<Ùî¥À…\ þóŸÕ³gO]uÕUZºt©|>ß%¯ŸO111ý…‹àp: Äu…;eÁ*RìáÊ)¦>}úhïÞ½v/Žˆˆ;eÁHD¬À-{ë¹>@š7o®Ï?ÿÜƒ!0 ÓX…¬ãꑤ!C†èOú“²³³í^Š»ñ¼Œ�‘ˆX…ÌçÊCèçûé§Ÿäóù©.]º¨mÛ¶E€3nÜ8›VçBÜ% â€:ŒÄ�²`©ær}€L˜0¡ðŸßzë-½õÖ[E®!@J‰�Á¸]/ŒÄ�²`nÙ ˜ÃõÂmxMB„À`LC`$¦!° ÓÀx®n³k"ž0 �‘˜†À*„`×B_¾|¹Z¶l©jÕª©Y³fzòÉ'•ŸŸo÷²B‡Óa0n× #q§,X‰Cê@Ù¹2@V¯^­Aƒé‹/¾Ptt´¾üòKýö·¿Õ´iÓì^Zè"B`"F"B`nÙ ”�+ä¹çžSÓ¦Mµ{÷níÞ½[ß|ó�z÷î­ 01·ê… ˜†ÀHLC`%"Ž+dÏž=:t¨7n,IªU«–ÆŽ«'NèàÁƒ6¯Îˆ˜€�‘ˆXeNX‚–… ¶{€«¸2@:¤öíÛ¼Ö®]»Â÷`"&`#1 gre€H’Ïç ø½ßîGa –…ˆ˜„�‘ˆp×Þ†7!!A…¿ÏËË“$�;Vááá×®Y³ÆÒµy ·ê…I¸]/ŒÄsCÀ9\ õêÕÓ×_­y}ÿþý¯]8)�Ixp!LÀà a4žöse€dddؽ‡�I˜†ÀHLCÀ^®=b¤¬¬,Mœ8QݺuSTT”ü~¿‹½6--MýúõStt´4h ¸¸8eff{í²eËÔ®];…‡‡«U«Vš7ož™?†3p.&á€:ŒÆÙ°")33S‹/ÖÙ³gÕ¯_?IÅoÝÚ»w¯Ú´i£o¿ýV ,ÐŒ3´e˵iÓFG� ¸vþüù2dˆn¹å½ùæ›êÙ³§&L˜ ñãÇ[ò3ÙŠç…ÀDDŒÄ�²Àz®Ü‚e´˜˜9rD’tøða%%%{Ýܹs•››«ÔÔÔÂðmÚ´Q“&M´xñbM˜0A’túôi͘1CƒÖüùó%IÝ»wW~~¾žzê)%$$¨víÚüd6cKLÂÙ�³!`& ¸Øm|óòò´lÙ2õíÛ7àî[�5Òí·ß®¥K—¾¶víZ9rDÆ øŒ¡C‡*''G¯½öš9‹w"&!0Ó‰iXƒ)¡~øA§N�R‹Eÿ‹~óæÍµoß¾Âßüó…ׯÄĨJ•*JOO7w±NC„ÀDœ �ш0RB”$EFFy/**JgΜ)<rðàA………LJο¶à³<…s!0#1 ó„L€?~\ü±–/_®üÑîå\”çŸÔN„ÀDLC`4"Œ‡ÐçÍ›§éÓ§ëĉòù|úä“OT£F ÝqÇêÚµ«üñ2�:uêHR±·Ü=tè�*V¬X8ñ¨S§ŽrssuôèÑ"S�C‡~ÖÅ=#©ê¯õøùWàp:LÆsC`$ž‚óí\¾K»–ÿ+àµ3GÏØ´À�\?yíµ×”�� Ž;êå—_˜0ôîÝ[ýë_ ù>5kÖT•*U´mÛ¶"ïíØ±C 6,ü}£F�$©Èµ:yò¤bcc/óÝ&JZpÁ¯‰�lɂɘ„ÀhLC Iÿ3àzýrÍý¿ºý¾«ÝË\Åõ2þ|õèÑCk֬у>ð^£F�ôå—_ò}ü~¿âââ´fÍš€g~¤¥¥ióæÍŠ��/|­W¯^ªQ£†–,YðK–,ÑW\¡Aƒ²¦�@„ÀDlÉ‚Ñ8eçú-X»wïÖäÉ“‹}¯\¹rÊÊÊ*Ñç¬[·N'OžÔ‰'$I»víRJJŠ$©gÏžªT©’Æ�§””uïÞ]&L(|ÞGll¬zè¡ÂϪX±¢¦M›¦1cÆ(<<\wÝu—¶lÙ¢™3gj̘1ªU«VêÖ,˜Œ-Y0Ï €à¹>@jÕª¥­[·êÞ{ï-òÞ¦M›Ô Aƒ}ÎÈ‘#µÿ~Içž‚žœœ¬äädù|>¥§§«^½zjذ¡þñ�(!!A£G�V… Ô¡CÍ›7OáááŸ÷è£�ªzõêZ´h‘^yå5nÜXÏ>û¬ÆŽ[ö:!0/„Ñ8Áq}€Ü~ûízíµ×4zôè€[ä;vLo¿ý¶:wî\¢Ï)é³9bccµråÊ]§¸¸¸] ýw;!1 �ј†@é¸þ ȬY³tüøqÕ¯_¿ðlEbb¢®¹æýðÚ>}º½ Déq.&ãlŒÆÙ(9×H­ZµôùçŸëî»ïÖ;ï¼#IÚ°aƒî¸ã}þùçÅ>8.@„ÀDŒF„Àå¹~ Ö©S§T¯^½ÂmQ‡Rdd¤|>Ÿ¤s·¾�‰‰±q…çB`ΆÀhœ €Ksýä�xöGTTTa|@Úµk§¥K—êñÇWJJв²²t×]w)33SëׯWtt´ÝK„‘ˆX„�ј†À9®?„.Iýû÷Wzzº¬ë¯¿^Ð|Pâ‡Âex^,Âu˜�Cê¼Îõ�“&MR\\œöîÝ«÷Þ{OMš4±{I0ÓX„iÌÀ4€W¹rRµjUù|¾€»_ù|>ååå);;[íÛ·—$åççËçóéøqþëeÈâV½°Ó˜�i/re€Üwß}%¾¶à–¼alÉ‚…²GU#B`¸Ù?N"Bx†+dÉ’%v/NÄ4a30 à!s�ĹXг!0wËê\9ùðÃuÓM7©jÕªúðÃ/{}‡,XƒI,Ä4fa[€PåÊéÔ©“¶lÙ¢[o½U�:uºäµ>ŸO¹¹¹Ö, ÎÁ¹XŒ³!0Û²„"WȆ Ô´iÓÂ.Ši,Ä4fa ”¸2@ ¦¹¹¹ŠŽŽVTT”ªW¯nï¢à\D,Æ4f` T¸úz^^žþçþG[¶l±{)p:§ÃbP‡Y8 Àí\ W\q…š6mª¯¿þÚî¥À –o'D`©ìQÕ˜‚;ep3Wˆ$ÝsÏ=Z¸p¡ÝË€›!°³"ÜÈõÒ¼ys�:uJ�7ÖØ±c•œœ¬•+WüŠ B`1¦!0;ìܹS÷ß¿6l¨Ê•+«qãÆš9s¦ÝË‚ ¸òúùú÷ï_øÏóçÏ×üùóÞç6¼¸(§ÃP‡Y8¤+­\¹RqqqêÚµ«ž|òIÕªUKiiiúî»ïì^\ÀõÂmxQ& ¡wïÞŠˆˆÐüùóõ÷¿ÿ]íÚµ³y•p2WÈÒ¥K=�9RÕªþ×Ãÿüç?Ú³g�úôécñê2ˆØ„³!0‡ÔCÓ’cCäÿñÆ ¿>wEŠòV¦¾xìX±×Ö©SG;wîÔ=÷Üðú½÷Þ«ùóçkûöí.É•ròäI:t¨ð÷G�Õ™3g®‰ˆˆÐÃ?¬iÓ¦Y½<„"6a31 Á…Âîû…ÂîûEÀkyÛ¾P΋\{íµ×*55õ¢Ÿåóù _B‹+Ï€Œ9R;wîÔÎ�;U¯^=¥¤¤þ¾à×Ǭ^xAµk×¶{¹p;Î…ÀFœ �™8‚` 6L’´jÕª€×W¬X!IjÕª•åk‚»¸rr¾ŒŒ »—¯`›0 �™˜† ´n¼ñF 8P/½ô’Ž;¦ûî»O«W¯Vrr²¨›o¾Ùî%Âá\9¹˜œœ­X±B<ð€Æ�¯}ûöÙ½$„&!°·ì…™¸e/JcÙ²ezâ‰'´gÏÅÇÇkÛ¶mJLLÔŸÿüg»—pe€$$$¨^½zE^¿é¦›tÿý÷ëÍ7ßÔ¼yótÛm·!0›!0‚’ðù|úßÿý_}öÙg:qâ„¶oß®I“&Éïwå_-a1Wþ¯äã�?Ö/ùË€×Þ}÷]íÚµKƒVZZš’’’$Isçεc‰uœ �͘†ÀLLC˜É•²oß¾"œþð‡?¨R¥Júýï¯ hذa0`€6lØ`Ó*á DlF„ÀLD3¸2@²²²Yøûììl­_¿^=zôPDDDáë:tÐ7ß|cÇá%DlÆ4fbÀh® �Ûn»MŸ~úiáï?úè#�={V­[·¸®R¥JÜ‹Ö BàDÌDˆ0Š+ä®»îÒêÕ«õã�?J:w'IêÞ½{Àuiii<Öá\€iÌF„(+WH¯^½ôÉ'Ÿ(66V×]w�þüç?ëÎ;ïTóæÍ®[µjÃ�õˆ831 P® �¦M›jýúõj×®�¢¢¢ô /håÊ•×|ýõ×ÊÌÌTß¾}mZ%<��0 �ÙˆÁpí“Ð;v쨎;^ôýºuëjÇŽ®¸ON‡Cd�ªÆSÔaž¤ ´\9\ƒI‚IÌÆ4@I €Ùˆ8[²`6Ά( °!B`6"À¥ €Uˆ8³1 p1`%"–,X�p!°‡!B`6"ÀùÀD†�ÙØ’ ØeùvBŽÂ–,X�@€v#Bà0DÌÆ4ð6p"C„À DàMàD†-Y°ÓÀ{ÀIˆ8+!€w €Ó!p "V`x8bK¬B„¡�œŠ�C!°„.p2"E„À lÉB8‡bK¬B„¡…Ü€�ƒ!°Ó t €[!p0"V!B÷#@7Y¾��c!° ÓÀÝÀ�ˆ8çB`%"p'p+"F„À*Dà>àfDŒ�UØ’¸ ¸cK¬D„î@€¡€�Ã!° ÓÀù T!p8"V"Bç"@€PB„ÀáØ’+1 œ‰B  B`%"pED\€�•˜†ÎA€¡Š� °% V#Bû @([¾��+!°Ø‹¼€� !°[²û €W!p¶dÁjD`=ð".A„ÀJLCk €×!p "V#Bk €!p ¶dÁjLCó €W!p"V#Bó €—!p"Vc˜ƒ¼Ž�‹!°‹@„ÀU8;!€qç!p"VcK` À!p"v B€²!@Z¾��«°% v`�P<".C„ÀDPz€‹#Bà2Dì°äØ»—¸ àÒˆ¸ [²ÀÙ—G„À…ˆÀ:IIIòûýªZµªÝK�  J†� !€ù<¨„„EGGËçóÙ½¸ äˆ¸[²s�1B�;wV×®]•ŸŸo÷rà€Ò!BàRD`¼W_}U}ô‘žþyâ%F€(=".E„Æùþûï5fÌ=ýôÓŠŽŽ¶{9p@pˆ¸[²cüæ7¿Q³fÍ4bÄ»——)g÷¸ØòíÒ€v¯Jö¨j*ÿÇãv/p„Ü)Ê[™øâ±c½>%%Eo¿ý¶¶mÛfòÊŠeS0 !DàBDBEÎì*R�²Lö†IÕ‡¾”¿UÒÍE®ÌÊÊÒ¨Q£ôè£�êꫯÖÑ£G%IÙÙÙ’¤cÇŽ©\¹rºòÊ+˰„2¶`0[²àRlÉJ'33S?üðƒæÌ™£5jþzýõ×uòäIU¯^]qqqv/Æ€qØ’c”LíÚµµqãÆ€g~äççëé§ŸÖ| wß}W‘‘‘6®NG€0#B€Ë«P¡‚:vìXäõW^yEaaaêСƒ «‚›° €ñØŽc;ŸÏÇ“ÐQ"s!p1Î…¥÷Ê+¯èøq&ˆ¸<€yˆ¸Æ#@˜‹�Ë!`,€ùˆ¸[²À8H)ýûßÿVŸ>}­èèhõíÛWÿú׿Š\/¿ß_äW³fÍlX5àDBeÇmxKa÷îÝjÙ²¥êÕ«§)S¦(''GüãÕ¶m[mذA-[¶ ¸¾R¥JÚ¸qc‘×Ïâ½ܪʆ)…É“'+77Wÿ÷ÿ§ˆˆIÒ< :uêhÆŒZ½zuÀõaaaºõÖ[íX*à\DB@Á$„€Òc V)üóŸÿTÛ¶m ãC’jÕª¥V­Zéí·ßÖ¡C‡®ÏÏÏ·z‰€;,ßΖ,„¶d@é ¥pêÔ)…‡‡y=<<\yyyÊÈÈxýôéÓª]»¶*V¬¨fÍšiòäÉÊÊʲhµ€ !D”R Íš5ÓúõëuæÌ™Â×Nœ8¡M›6I’ø@üã•��­-ZhæÌ™š8qbÀ¶ªððpÕ¬YSÏ>û¬¾ÿþ{•/_^±±±zâ‰'4vìX………ÙøS.A„ Äðu8‡)…k¯½V7n¼ìuZ±b…+B‚C„g@8gBbxf¯#@8ßòí„BÀ«îA„ Ä0 àEw!B‚ˆ^B€p"!ˆi¯ @¸‚E„u÷"B¢˜†ew#Bˆ¡ˆà~DB Ô B‚Æ–,¡„:ˆ„8"@( @„"!Ži·#@„"@„p+@hZ¾�AÈcÀ�¡��!Ü„úˆxÓnA€ð"A„p:€w!ð¦!œŒà-D<„àDï!Bà!D§!@x!B8 À»ˆxÀ)ÞF„ÀC8œÀ  Bà1D; !ð"€](@„Àcˆv @à|D<†`5.D„Àc8œÀJ‡�!¬@€ÀÅ!¥¥ò¤ÎIDATð "€Ù¸"D„0—³|;!Ï!B˜…€’"Bà1N`Jƒ�!ŒD€@i!ð "€Q"B�€`!ð "@Y PD<ˆÃéÞöþûïkÈ�!ºöÚkU¥Jµoß^sçÎUzzºÝKƒK PVD<Šñ¦E‹iÏž=úÍo~£•+Wª_¿~Zºt©š6mªO>ùÄîåÁÊÙ½ Ë·KZؽ ÀrÙ£ª©ü�Û½ XhÁ‚ª]»váï»uë¦þýû+66V³fÍÒªU«l\Ü€ …I<ŠIˆ·œ®¹æÝtÓMlÃB‰ `$"Źo;räˆvìØ¡-˜ãò0#B¼iذa’¤©S§Ú¼¸f BàaDˆ·L�:Uo½õ–æÍ›§Æ�Û½¸‡ÐÀ,L‡‡q8Ýb©_©l­[÷ó¯óe]ö«¦OŸ®Y³fé©§žÒ#�w"¢×Ï !ª“RSSagg‡ &µ‡‡‡#77çÎ�³ÐÌèuÁ¤ ?~ “vèõzܸqpÿþ}<~üÝ»›~{×­[7Ôú\‰ˆ¬‹¢:§  Z­Mš41jïÖ­àÚµk–˜½F¸« <==qôèQèt:ØÚÚ=z„ãÇ�nݺ…Þ½{ãöíÛ“>Ôj5t:ŠŠŠŒŽŽ€N§û÷qåñÀ/–ž„`åÃXVËŽc6¬ómÿϛߞ*�q”Çÿ=ÏÑ'Ož(>ôãÇ�ÿ}V[Ìazûöm´jÕʤ]­V^'ª �*˜7o‚ƒƒŠùó磤¤«V­‚`cS³pþ÷�Al gJÿ ±ô¬ã(ƲÚ^¾ÀNF/‹LÃê0޲¹~ý:Þ~ûmEÇüõ×_ÿ}¶¬Öư··¯µ¾©~bRcÆŒÁúõë‹@’$ 2~ø!V¯^ ­V Ðh4`ö’»………hÒ¤‰ÉÑ6l¶nÝŠŽ;šÖ$""¢ºI§ÓáÚµk6l˜âc�=àáá;;;Ùû···GçÎ��Ú4 îÞ½k²mÙ¹°eŸƒˆÊÃ¤Š¢££�ëׯÃÑј2e Ñ©S'@Ë–-ѬY3\¼xÑäý—.]‚›››Ù¾]\\0qâÄZ�?ɯÿþ×ÅÅQQQŠŽ©ÕjqêÔ)£%éÀóÏ8ÊýœCT†'¡WSÇŽáàà€¼¼<ìܹóçÏGÆ *• “&MÂÁƒ�îù‘ŸŸ�S§N.YGDDDôº ÇãÇ�±k×.C›©©©ðòòB¯^\ÖG“DÙ ôJW®\AZZ¼½½¡Óé°iÓ&dddÀ×ׇBãÆ� Ûæçç£ÿþèØ±#æÍ›‡'Ož ..’$!''ÇìÕ´ˆˆˆˆ^cÇŽEff&V¬X�.]º`Û¶mHKKÃîÝ» ˈÊÃ# UШQ#œ8qááá˜2e ŠŠŠ°bÅ 9r�7FII .\ˆnݺ¡wïÞèÔ©lll0kÖ,,^¼ýúõCVV–IñqëÖ-ÄÄÄÀ××-Z´€J¥ªð^!çÎ�C`` Ôj5ÜÝÝ1cÆ ‹\y£6½KGGG¼ûî»ÈÈxù TSU‰¥ŸŸT*•ÉcøðárïŽÅT7Ž{öìÁøñãáêê {{{ 6 ‰‰‰f×üÌÉŠT%–õ!'�êÇòèÑ£2d4 š4i‚^½z!66§OŸ6»=ó²|U‰e}ÈËêÆñe}ôT*•ár´/³¦œLKKÜ9s�œœŒ‰'âÞ½{HOOgñA•#H6£G�vvv"!!A>|X„†† ±wïÞ ßwìØ1¡V«ÅСCEXX˜�$I¤¦¦šÝöôéÓÂÎÎNˆƒŠ 6µZ-|||DIIImì–E(K___¡ÕjÅ™3gŒyyyµ±KQÝ8z{{‹Áƒ‹uëÖ‰#GŽˆ¸¸8áææ&œœœÄµk׌¶eNÊËú�“BT?–»vísçλwïÇ�kÖ¬ýû÷*•JìÛ·Ïh[æ¥|±¬yYÝ8¾èÂ… ÂÖÖV´nÝZtëÖÍäõú’“D•ÁD&ÙÙÙB’$±iÓ&£v???ѵk× ß«×ë ÏÏ�;Wá‡æ€€áîî.ž>}jhûþûï…$Ib÷îÝÕß�:D©Xúúúšý'a-jÇ{÷î™´eee I’DLLŒQ;sR¾XZ{N Q³Xšsÿþ}Ǻ1/å‹¥µç¥q|öì™èÙ³§ˆ‰‰~~~fãUr’¨²¸K&©©©°³³Ã„ ŒÚÃÃÑ››‹sçΕû^I’ ÏE§äüñÇÈÌÌDXX5jdh÷÷÷G‡*\¶õ:Q"–UÙæuU“8š»ÁTß¾}¡V«�îpËœ”/–e¬9'�šÅÒ4oÞNNN†6æ¥|±,cÍy)GW­ZeX–m.Võ%'‰*‹ˆL  ÕjMîßQ¶ÔÜ�ªºví„èÞ½»Ék^^^((0ÇÒ×�±,“ŸŸgggØÙÙ¡{÷îˆ��dzgÏdëß’äŽc^^ �ò�9)_,ËXsNòÄR¯×ãÙ³gÈÉÉALL þþûoL›6Íð:óR¾X–±æ¼¬isssññÇ#11M›65»M}ÉI¢Êâ}@drûöm³ßtªÕjÃërŒ<¿æ·¹qNž|8233<ÿÖ>;;]»v5`^ÊKÀúó²&q,--EDD‚ƒƒPá€õç$Qe±±"/.?¢W[¾|¹á¹¯¯/¢¢¢0uêT$''###Ã"w´­‹ôz="##qñâEìÝ»ÎÎΕ~/sÒØ«bÉœ¬œµk×⯿þBvv68???¤¤¤`äÈ‘•z?óò?•‰%ó²| ÈÏÏGzzz�úaNR}Ã%X2Ñh4(,,4i/kÓh4²Œ<0;ŽcÔJIJ<ÑÑÑPåµÓu‘qÔëõˆŠŠÂöíÛ±yófŒ1Âd €9)G,ËcM9 ÈK­V oooÌš5 ™™™°··Ç²eˌƘ—rIJ<Ö”—Õ�ãÍ›7±dÉüïÿƒ�� ŠŠŠPTT„’’”––¢¸¸:�ΨkÏI¢Êb"­V‹üü|Û2—.]¸¹¹Õx WWWH’„‹/š¼véÒ%Yƨ ”ˆeyÊN´†o£jG!¦N�ŠÔÔT$''#44Ôdæ¤|±¬è½€uä$ ÿï·J¥BPPΟ?�G�`^ÊËòXS^V7ŽÐét˜={6œœœ �Ó§Oã—_~�££#.\ þä$Q¥YàÊ[VéìÙ³B’$±yófC›^¯/÷r|åÉÉÉ©ðұÇF—ñ;vì˜�$I|óÍ7Õß�:D©Xš!$I™™™Ušs]T“8êõz1uêT¡R©Drrr…Û2'å‹¥9Ö”“BÈ÷û]æÉ“'¢eË–B£Ñµ3/å‹¥9Ö”—Õ�cQQ‘8qâ„Ñãøñã¢gÏžÂÍÍMœ8qB\½zÕ°}}ÈI¢Êb"£1cƈ¦M›Š„„qèÐ!&6lhtS§ˆˆacc#nÞ¼iôÞ´´4‘––&V¯^-$I3gÎ4´½(++K4mÚTˆˆ�7 µZ-úôé#JKKÙO%Ôv,Ož<)Err²8räˆHLLþþþ¢Aƒ"88X±ý¬mÕ�ãÌ™3…$I"22Rdgg‹¬¬,ÃãüùóFc0'å‰e}ÉI!ªË÷Þ{O,Y²DìÙ³Gdddˆ¥K— ¡R©ÄŽ;ŒÆ`^ÊËú’—5ùŸó2___áååeÒ^_r’¨2X€È¨¤¤D,\¸Pxyy‰-ZˆwÞyGdddm3yòd¡R©Ä�7ŒÚ%I2ÄÎ�;…Æ�Wj<""¢Ú`cé Õ777øúúbëÖ­ˆ��‡�Íó?y)))�$ X²d Š‹‹qùòexzzÂÃÃáíí�ØØXLœ8Íš53Ûÿ Aƒ0hÐ ÃÏÄ„ àîîŽuëÖáã�?†½½=ºví èÔ©“Ér+ ê˨\\\ Õjžžž&}†„„ )) K–,AÆ _}õþùçLŸ>½JcÉ�G@ˆÈªEFFâÁƒ8xð  ¤¤[·nÅÀ�Ñ©S'üðÃpss3eFމ¢¢"³Ë·Ê”––âóÏ?GÏž=Ñ¢E ØØØÀÙÙ<@^^^­îWEfÏž�û÷ï#--  ×둘˜ˆ   ´oßÞbó"""X€‘• †ƒƒƒaÔáÇqÿþ}DFFnݺ…¾}ûš¼¯OŸ>†×˳xñbÄÄÄÀßß;vì@VVrrràé鉇ÖÂÞTΛo¾‰`ݺu€ôôtܸq3gδ؜ˆˆˆÊp Y5[[[„……aãÆ�¸wïRRRмysŒ7жm[œ9sÆä}e—Æm×®]¹}oÙ² @BB‚¡íÏ?ÿD^^Z¶l)óžTÍìÙ³1~üxüôÓOX»v-ÜÝÝ1xð`‹Î‰ˆˆà"ª"##QZZŠO>ù‡FHHlmm> stream x+TT(TÐH-JN-()MÌQ(Ê X(€ ¹¹ ˜NÎUÐ÷Ì5Tpɪ•Ÿ ý endstream endobj 5 0 obj 53 endobj 2 0 obj << /Type /Page /Parent 3 0 R /Resources 6 0 R /Contents 4 0 R /MediaBox [0 0 930 774] >> endobj 6 0 obj << /ProcSet [ /PDF /ImageB /ImageC /ImageI ] /XObject << /Im1 7 0 R >> >> endobj 7 0 obj << /Length 8 0 R /Type /XObject /Subtype /Image /Width 930 /Height 774 /ColorSpace 9 0 R /Interpolate true /Intent /Perceptual /BitsPerComponent 8 /Filter /FlateDecode >> stream xì½ù¿mYYŸ»¾‰iÌåæª˜D¢¢ ˆ H¤+ì;JEOl�Æ.jI[Ô)i6 ¦“’¦ªàŠ]D�4jÑXŠŠŠ&)b¨1�±ÊàýêŽöïhçXÝÞkíý¬Ïüì5æxÛñ̵÷üžyæZëS÷¬Oeƒ @€ @€ �C ð¡?ù}6@€ œ×\s�¿]Á,çn€ @8|ÇÇÇ…Ê=Ò�U@€ \d¨Ü‹|ôY; @8¯z*÷ÿúôë¶²ýƒÏ¸î|ÆÉö?ó‡Üö„ø™n»÷>!lOü„{?ñ>ë‰ÿHoŸý¤ôÙOúDzÝçIÿø>Oþ'²Ý÷ÉÿÄnOù§~ûœ§üS·}âç<å?穟ø¹aûgŸûT·]ÿÏî¶ÿû~×Ûíóžæ·{|ÞÓìv¿Ýp�ûßðÿ˜íóe»üÏ?ÿò?ÿ½Ýøÿ~a¶}ÒÝøI_ôtÙ>ùOwÛ3>ùn{à3>%lÏü”Úíž_¬·gÝóAÏúT½ý›þzû’þ_òì)ÛƒŸý/üìe·çØí!aû´‡<çÓòÜO{hØîõÐçÚíaÏóÛ¿~Øóìöp¿ÿ뇺߮9þt»=ÿ3üöˆçFØ^ð™�xÁg~iÚîý¥/¸÷—½PoŸõå/ü¬/ÿÙ>û+~Äm?úÙ_a·û|¥Þ^tŸ¯zÑ}õöÕ?ö9Åö5/þ\½}í‹ïg·—„íë^r¿¯{ÉçÙíÇíöõv»Ø^zÿG†íóùR»]k¶—™í üö /û»�|¡ß¾ñä Ãöò/úÆ—Ñ7¥íßôò<êz{à£^ñÀo~¥l_üͯüâo1Û«d{Ð¥WÅíÕºôêóoõö_ò­ùöm¯y°Þ¾ý5±ÛMaûŽ›ò7=Ôn?i·GÛíaa{íÃýÚ‡}§Ý.Ûc^÷ðǼîÙûºkûúGÈö¸×?ÂnoøR¿=þ _ê¶/{ü¾ìñ7Ùw¥íË¿ëæ/ÿî[dûŠï¾å+¾Çl·Êö•ß{kÜÞø•ßûƯ2Û÷Éö¦¯ú¾7}õ¿ÓÛ•¯ùþlûÚ¸òµ?ðSiûÁŸú:»½9l×½ùëÃö–¯¿î-_ÿCv{¤lOøéG>᧯•í‰?}íÆlß Û“~æžôÖo”íÉoýÆ'¿õ›ìö³v{JØõ”Ÿ}ÔS~îQO Û7?õçìvýÏËö-×ÿü·<Ío¿ð-Oû…Kf»A¶_¼tÃ/þÛËzû÷ßzc¹}ÛÓIoßþŒ_úög¼M¶ïxæÛÜöËßñL·=ë—¶_yô³~åÑ?ü+ß©·g_ýÎg_}ŒlϹú˜çüêce{î¯>Önoœßž÷öǹíñÏ{ûãŸ÷ŽÇ‡í»Žßá¶w~×óÃöÝϧÝ^ð.¿}Ï Þe·úí׾煿ö½fûÙ~ýû~ä׿ïGõöÿîEÙöý?ößÿc·Éö/¾Ímïþ�»í%ïþÁ°½ç_b·ë~\oï½î¥ïý!½½ì}OÐÛÉûžpò›O”íå¿ùÄ—ÿæ“ìv»Ý^¶'¿âö'¿â·žüʰ=å•¿e·Wý¶ßžúªß¶Û«ýöþ§¾úý×ûí'Þ½Ý~çi~{Íï<-l¿{Ãk~÷†›Òvù¦ß½ü“¿§·_û{7¾ö²=ýupÛï?ýuv{ÆëõöÏxÃðñŸþ}½ýýÏüA¶½õÿ¿=ß¼nGå¢rQ¹^ë¢r�ÖEå¢r�ÖEåZ­‹Ê5Z•‹Êur7“¸Fñî¹Ä5í¡r¹–ë.är-7\ÎEå¢r�ÄEå¢rår.*•k$.*w rWzwšyتþ^K¯5£r_ñê×®´Õ79pÇÂ'sÇÂWrÇ‚»uAß®`ÆÜ±`î[àŽîXð÷-èÛ̘;Ì} ܱÀ æ¾…ý¾cÁèÏÉzý�«ú‹Ê]©Š�šT¹ö_þª·ýÀ3_eLòÓèáCQ¹·Üaÿeð¡7Ú[s/È ÷ºòvÍ~—¹)—ûrÝ­¹Ü—kïÎå¾\sw.÷år_®»5—ûrí ºÜ—kîÎ�7åš×rýݹí;¬”šûª…BåõZ�ž‚ÊýÃ?úãÉM«Ü£{½íCVTÅÇoóo@Û“wŸ5Tî?{uÏwýþõ_à߀¶›wŸ=èNhì–M½ûìiïû{ÓÖ]ï»Å¼õlúÝgïr%þâ–‡Ú·ž¡ry÷™yï>3ïAãÝgæ h¼ûŒwŸù÷ ñî3ó4Þ}¶ö»ÏŒ29e•ëÕ±.ªg¼–^éZn_n—Q¹Qâ~ü¶Ì,ìãg,tU®·÷»á^ñÞñ«î“öBå®õ ¨\÷1 |Æ‚ù˜>c�ÏXà3øŒû1 |Æ‚ý¤>cÁ|ÒÂV>ca•«•ªŒ�²ôc­W‹*ZÖê± ÔQ:�þî3?ïï=0µԲý}Q¹×¿û㦥;ßýJ“D«ÜëßcçýãÎ÷¼Ú|˜ØÑåÜiöïú¸ýi¹ùÖ�øÑÝw}àúû>éèÆÜeöïú¸ýi½åÖxÑÕ:<ù7þ~4Yó]ï¹É|’Ø=¼�DYíj?FÌ‹[ëçÙ ^Ùz•ût—ÓŒÃஓ)úÑ[¾à²^Â]ïy�ùH±{<ýò?vË›> Üõ‡O{À3îùŒ?ÔÞm&ôŒ[>\Ü“½¢›>LLŒ˜»O»ç—óÃï¼ç0ÏöÁzË»íÔß¿ûÙöcÄîõlçp×ß�•ø‹[ü wý}¿ë�np#vƒ»J컹ë}o2Ÿ$vï7ÿ¥Ýý»èùw|Ù|ŒŸ$f>FŒOã“ÄìGŠ•#f>XLŒ˜óIb?À'‰½žOs)¦?FÌŒù$1óybçè“ÄŒXð¢qñg}ÇB3ÄhL?¯õj]EKQ�GGé<‹*×Êž»ïÖi‹]c•{³¿ëõû‰»¢r�¼|½ãm榅àpëƒÊ5âöÞO òŽ_6™¢Ê½û#·Ü÷Iâ`>27\Œ½5}^î=î{ÓmVÀ}ü¶EåZq/Û^¯Ð^5–'Õ}¹JåúBw½çµ÷*×kì�ÞbµîÝwßñ«F܆ oŠ*÷î�Ýò€§?í½NÆøíæór½Ž½ãMQå:Åû´÷ºÞûú{®xÇB©rïúà ~ލæ6¹Á¨\?yÇóy¹­k¹&ðšãÐÛOßë§þÒ®èÿf>/÷V§Šïx³¨\+nã$*×~j.*—ÏËuœ‹ÊµœËçåšOÍåórù¼\÷Á¹Ù‡åšÏν8Ÿ—k„™ƒñvU®)äiQq=•kVá³ù�þ©uïXåFáj¿"*Þ_Ž×r?p}T¹æoCåºëºQ|¾¦P¹Aýš¶ìC©Ü;®šï†ˆ‚V”­ýJˆ8Y©\ŸÃüt·+•ë®âš/†ek/áú ¶wüj¼–k.Û•{×{_ßS¹÷ôQ~GOå5kÛøûw?Ë}=DóZ®S¹Qܾó^}g¼÷Vw]×Ü‹ÛQ¹îÝg¢rãÀ~+Ľ£â ×r?üëæ[!P¹ò•¨\#qQ¹¨\ùnT.*×H\T.*·Ð™½Ýíª\->uÅ U®Nëõ ž•Û¼caG*7Jߛ̟9º™Êuw,ÈwŸÅk¹p½ûî³SP¹ö¾…™;r•k¾-\Âý°ý …»Þw«ûî³Öµ\T.ß}ÆwŸñÝg¼ûŒï>‹_Æ»Ïx÷™yëÙ™¼ûL«SUéÇZ¯a#fà•§ŸÑc3££¼ƒŸß±`òû<~Pìz“ù)*·ùî³xý¶uÇ‚¹T»îµ\¯<Íí¸�;òk¹¢‡G×r‡*÷ƒ;ì Ë×rõÓ+Ïè]Ë]IåÆlöK~Ãí¸æØ¸t'Uî莮嚯÷å~¿G¾Þ× ¸–ë¿ç—;¸c!|É/w,p-—k¹^LšŸ¢e &3ðjÓh?i|´UÆ2¯õªD7Ÿ\ü‹å}fT®ÉiÕSÔº¾„ŸÔ&Q¹ævÜ(t}œ¹À~’˜¾µ ÷Ùú*÷÷ý•ø‘e¿«¸/7W¹÷¸Ÿ¿q7¶dPëÏËU÷åö®åš›ôòwŸ-©\)knWøâgšÍߣë¦7x÷Ù‡ßi$®Ù>í!Ïñ¢×|"®}šÛÔ;Ëâ»Ïòk¹æ»Ï”�¹¬Þ}†ÊEå~Ï­_�ʽá/ÝàÅ­üDå¢rQ¹zÑÏ™�;þ•+‚SÄ¡ ÄdµÊ·b Õé)|^nQ}°«U®ÿˆýî³½ú¼\s9×½ï)|+DøŒ÷î³Oyà3ÍæUnü9õy¹òIbá3Ü ÿêÁVßúí^á“î6ï;•{/ó1¹n3Ÿ—k·‡û�o…8á[!Ì÷Aø�o…à[!ÌWBð­|+„ù>¿ñ­|+Ä[>ðq³¹/ö•Ÿ[þV-€›c}UÖ\lúÔ“:Ê['¯åÄ­˜P¹ŸôEO7›yë™ÛžñɰÛ)©Üøb7<•ûÒÏ¿öefû¿ñy¹|^îS~öQ|^.Ÿ—Ëçåòy¹ï°–ËçåšËÝâçå9ù¸æškŒ^�t6nÆ_®å®5©r�v�ßä® ä“Ä.ìµÜO~à3>%löBî†×rWùî³çr-× ]T.*•ë%®ùù‚wù�ï>ã»Ïøî3ó¾3¿ñÝgk¿ûÌÑ�>¼Ê]µÄüwŸ‰X]{€ÊEåÞç+_tŸ¯zÑ}õöÕ?ö9Åö5/þ\½}í‹ïg·—„íë^r¿¯{ÉçÙíÇíöõv»Ø^zÿG†íóùR»]˵Ü×?âq~{׉‹ÊEå¢r_ýþ§r-—k¹\ËuWq·x-×ëÉýü9s-wmq+�¨\T.*÷K¾õ'ìöm¯y°Þ¾ý5±ÛMaûŽ›ò7=Ôn?i·GÛíaa{íÃýÚ‡}§Ý.Ûc^÷ðǼîÙûºkûúGȆÊ}òÏ~ÓSÂö(T.*•k%.ßðË ö^Tn}C/3€ @8 þþÞúórçoôÅ€ @{B@>–ÁôcnëmªÜUo÷Å€ @gHÀ\jžT¹ò)a @€ pÊVºA¨kTî) ÊA€ ¬AÀ«VsyvñáïO@å®™@€ �S& U«6Tî)ÊA€ ¬M•»6:!@€ö–*wo �A€ ¬M•»6:!@€ö–@SåšnÍ|±q_îÞDƒ @(Ô*WP¹‚‚ @€Àa(TnѼº\Ë-à° @€ °·´Êm6)B•ÛäÃ$ @€ÀÐ*Wms€ÊÝÃÃGK€ @M¨Ü&&!@€š*÷ ÍC€ 4  r›X˜„ @8hFåšn'×\s�VÅ&ÊÌ|êãže¶zþ ±Ð< @€ÀA02u¥G­fQ¹ý y@€ p. Ü}÷Ý"\gÆâl\Ë=—/ @€ÎQ­3Wû rÏÁÑg € @à¼ÐÂuf,ª•{^_¬ € œ¢Zg$®öA垃£Ï @€Ày% …ëÌXT1*÷¼¾$X @8DµÎH\íƒÊ=GŸ%@€ �óJ@ ×™±¨bTîy}I°.@€ pˆj�‘¸ÚçÌTîƒŽŽŽãvãô0žuítԒ㥓«·ÇÇ•ËKÞlw =­ÚbWO.�9®ËWâ±½ýö×^+F�ùŠG ,Ñ8‡KáÀ@@@ ×™±¨â)•{�Ò–Çnlf6|x•k~6·Ý}tô¡¦íèÈÇnKåÚóþYª1­;‚ ²*(ŽuDš ­ÔY{¶CyÓi[ì,¹ý¯³vsÖ‹X§ñbíõn7é–—Ü­S·Ä  @ M@TëŒÄÕ>S*××ëÒv_ýÙ^¶ë�¾5*÷ÎSR¹g-r#"« Q˜K¯?*åãóç<4ÚڳѺåg[¬XЖ+¬”îT×¾Rg Î;i|'I 9­:�ÒLA€Ày! …ëÌXTñÞ©\s ×]ó8M•;)wúj±z …¥Dpû…O§§2Ô»µg;)6�¶ÅæšÝ´ÒTü©®}ª£I§�4¾“¤��V�Fi¦ @à¼Õ:#qµÏ¦*×Ü(û·»;æï°í]Ë•#²†Ê5�˜6ÌÏUöZn­rͬUhéníâNÝñ>1øabƒ“˜—z²þ…(¬$‚Mn}œ!w޾î9ö–ž}Á)ù4rĘԸu7޽¨ÞÂB˜7‡`U/¡Íù{Œ òKmô†þ\iQ½®ã|/›oÏ[”„7Í�j¹&o`àëN|ÎjÉ™<,9¬ØmëY­ ïÃ:·h¨€öo„ô�š·yšKÞ°ùÖ‚˜ƒ � J@ ×™±¨â-¨Üã£#¹M׌'E晫\}N—Ó·È�hMò%žøs}àü¼“ §ü«W¯^¹œ».¼4ƒ^Ð^e¼Ú·Å¤YSî+W•Ñ͚ņÈ,(�p‹ b&F…Ý,J%/‡6Ìò B¸s³9d_×ò+±ÇÛUWÃ6 C_*SÙé`¿ŠrÍFaWåØaÀ›Åf;^ÐæZKv�呃^•Éu™^—NNŠ7U’¶L]¼ÎYZ¯^†M5­úd@X& ªuFâjŸ-¨\}ýÖÈ]Q¼ã®w¡rÇ;Öì.>N&ˆ q'k/*w;áLâÎü2•’HòæÀF%]â\r½‘ÒZ£”užUWy¨ó1?ò>Iè¯Ê� ¢bâÖ³ 3 rÑIÒZÏ`‘ ç9ÙºÊ=ù:/EHuœœ|Î,a(Óš“ºƒ*JÚs–ü(§©ª Õ¬·Ù‰¸ə¢ÉÌT-x¯Áωˆ�Km²3ª!Ý‘sV¶r�u²Aߘ @-Z¸ÎŒEoAåjY{®TnÔ]¸'~^Îãb’'E[YtÆ8¶QJ.Øi—Èh¾øÈR¥*™Z é´5V¨SÒ$Ò¼8§ iä�)Jœ[æZÏú6®6AõˆNÝìƒ6† Coex«åz®Š²¥ÜaJé8M…Dâ,© }%�Xõ@{êùþxœÏÅ ’Ö&›¯zøãU:—¥K{¿i,€ �Q­3Wû rËó²'Üž-/¡Z_9�Û�žþé6=mó´TnTÚ×�¥°U�Edê* K!~:­Ršÿä›Fe”8·6Ì´e3í¥²�¸®qÐF7Få/Õi0¬¢l©ÞQî;K””Ò¾ãöµ§„�3ŸÚ4è¯t.]Kû¨ol€ �&-\gÆ¢ŠQ¹åyÙómÏ*M+‡A<í §Ä»?°z ÐªK!”6O•n‡–³Ò{C÷mÉÒ_�±È‚\UÝbÙF–¦›½ŒRŽ¥)Kvf|ê¸*ÊVíåÒ9í§Q,¡º_¸ä_ÇÆ½g›[ónø ’Ö¦zF2–&½,ëTÚ%� @`–€¨Ö‰«}ΕÊÝîg,ttB.!ì^Ц2Lgöòœ?:œ6jE•+ÿõ_‰ÜpW@9Ÿ:ó�èþì8-YcGQ)�Žv³zA.yÊî2¦]Ÿ$üÔ=e†Q£„!IžåîîTQ&Y¤ã4eó¹=9¢Ž€Éâ K‚vyhÛ'Ÿu¥ßMß}VæKÕò%7î�Y½ù”œ @ÀÐÂuf,ªxJåš»m�óMîÅ5o=“±écóûrÍ÷�™�Ì-6ÿ ºv¡îáß¹V÷Ù©¨\Ó�;sUg"cܬÛKgþùâW£³ùœQŸ¤DÞ³þég¬r�WüÆ4sƒ„1?ë;Îßqí¬(þo4·èl¦Q¹gÃ�ª€ p¾ há:3U|f*÷|V@€ ° ¢Zg$®öAån?9 @€vB@ ×™±¨bTîNŽI!@€¶A@TëŒÄÕ>¨Ümà' @€ÀNhá:3UŒÊÝÉñ ) @€À6ˆj�‘¸Ú•» üäØîÜ÷&̾šŽI_L±‹Ùë_ý°×ýÒ 6-\gÆ¢Š'Unüè*+"ʯ/R¶ò“­ú&-/Ê„ÃC[1S/¥jp•uõÒ¹ù…6BÉÖšiU‹%^㯬S•¿„e”r(MÍöòŠõQ.?ÙW*¢ô¢JS¯3o‹­àžer�ήw%ç¬Ì9Ù±‡nÖ9Y2Ë€ �3$ ªuFâjŸ•›�Ôœ8I§8½ëÎþIgôMÚ’¾w_ÈÙ¨™ò$;0õÓÚ6d%YOA=c±®~Bÿ5¨WOZ†(—ËêK)Ž��7S¹ölΨjtÂI¼›``r'ætâ]Qb Ý«Ô+@U«a¹®©„í6RV;ÒlRÁú*) .Zðµj=£9Í„&­Š0�ª ß“2W }SÙOëýü¢S‡±ƒØ 8fWÆ‹¨q¬vµcSÅf*ã„oãò‚W0÷�s‹ƒg¦Ì2*šEùƒ:‹aV\;ÆÂͨ`Ô¸‹å-Gícƒ l�€¾6;¾¨»¡Êu'¿¨%äÜgϱnRN¶“t1G�wZp-ð�µßÀT;g3³ëÊ‚z;­6ôœ-&"¤—DÝ'acs¼A­J�½Ÿ0·¸˜¨’ÖK8:ʾ˜/â”®4;ˆ˜òæ{B©a[šZ‰_×¹:®²œð�%‘Ñ“½.%”_¢øÏ W L®úuC¥ ,D© ÷Z‘£¹„; @`C§£rí9Q®™ŽýIüÄÌÆs œP&»TŸÉf3¡—£ˆs\ g æKn:ý�i*Žš¦Å„¡›¸†áºb¥ásÝF>cW?¡F «Þ¹d5l3ûçÆ8a‡á¨Ãx�íBc¸_ô j`/ÅXm‘t •{¬^T-ç2qH\Öž³o^婆�Ìr¹QÂ,Ÿm+9ÛQõðÕÊ(ëúèG•A®Ôr÷ê0„ l@àT®;×å2ÂOÅÓ¤m_NµSµLuª­l�‰ê¤›|¦äTŒ|§™ôY¥ù"›Û­Ú,Þ{rÁ£6ŠŒŠ|«¡ÞœÊ¢†©ÉŒJ#ÉR‡åKÃFù|ÊÆ.5œG¤=WwV¸õœ+„ú nXYTŸSµF «&’³uò—QÊU 7*ƒP¹ v!@`·v®rí9°>w–ç?»„ÆÀT èŸ^ ǰ[fV^“òÒÕץƒ{ã² _Ä,1—yìþoOÚôÚtj%µjE[7�–qÎIuh­E§* †eÔÀÔïÂ[Tí%×Ê^–­ôDϹžO/mkl]!Œ—êŒÊW ˤ¥)5XJZJ»«K+O†€ �íØ­Êu§µöyMŸñŠSèÀ$\ˆÖBbéŠ2Úq`Ònq¼Þºbtÿy© [·”<.&“…6ÿ€¡5 ¹lÇ7ÖN¨šÖ¹c­QBª†:K¶n__–©ý×éd UÑæÐ:KÿM�þäÊ…b‡yÊz‘±¡• ¤¤³ ]úXË Öf‡e6:Loµù­& ‹êÐðG¤õGh„BPv«r}¡�.U�Ì{ÙŒÄ5›‰kän-tQ¹‘PW &‡-�V=iú3_*AkNŸ ;õ:Ó£EÚÊÓeG‰vg+ÔÃ¥“+Å?NÖXöZÝ.Ôq}ž K[iq¹°€•¡¸|ë4²r%°Õæ·š,¬¦OcÕÖAH  pN œ•[ ;•è*WPl÷̘ÒV£UOcF¦\=9¹õåå+WO.›{(¦%R§^gºjWMXÁ4]VÅ�ÚpBÑ­±ìµÚÖ×*×Z÷ m»Çmçë¯ØX¶Zl«ÉBÛ£œöˆí÷ïÙ�=F@`¿ œ™Ê57Ê>ÆmÇîN†ù;l{×r Î+©\Ó‰iÃüœy˜¿Êæ�ûÛlîxögڛ̟îÖ_oeÜù•ža­Ö‰G4Î;m«Í“0˜%Çe0ƒú±¤M“ÁütŽVä:Ä.kÙ³í¨ÌWú,´Ñ^”{´²;ƒMÚò sÍÉkG§ÌìÚ�µ½�ð¨hgóÊÒ‚ JÖÐÎCÚÖn‡®€_¥þ©—×ì³›0th–ZÑ鲊ÚàV`cªI•©eµ�.ë:�®êÌÓ™Y”_“„eØ’n˜ɪ�Ä¢qÌ+ïj9%•Nˆ„Žôa´cEG©i‹·¼ÙÔÝ/†à@`’ÀYªÜã£#¹M׌'Eæ¤Ê5w,ÜV1è]Ë]Uåš¿ýáu¡šM“Ùá7i”S�ÔÏèàöLžÄùÛµEà:q�ÌZm‚êiäÙu²¹q»ä\,^€FΛÊ5â¶y¯‚gp**7þé/°Ÿæ_ò™ZŸÚ48�•Î¥ki/°”»Ö½:÷Æœe®8¯“”>Á֙ޑ-s+»ó/�µ£³%9Ðz1”áµÄR Õ0öªWT¡j9µš¨‹õTÙsÙViOmt,Õ´ÍWSf�Ù´�Ÿk¦i¯×TÞ1qËÔk"Ŭ6’æSºD6AŒ{–ú)6N•3ºRæc_ªªZ·`+AL4#ÄÅ·5°ÝæM´¼˜ƒ °:�s¥rýˆÉç‰Õ4v®rË“‹nÁž'ê {Ú£1v í™({tOã1ÃD­A«µ©ž‰•*åPž¡’C ¬{u‹9‹\Å®ÏÒœl©U´mŽU3G»S–PŽÖ´ttÊðÅ„�Œ.OÅ*ï¶®%öÚTÏt�Õ’�Ï ÔºÖ]–Ù~™=¶‘9¹Éʳšˆ±ö¹Žkmªgrçì7Òî,wá�ç͆=ó”e²ÓùŒô)cg¦vˆŽ5“¶o{6dÉ×!©gÃܳIðƒ Ð"p~Tî¢Ä5Ëï©Ü•ß}æÎÚé�sú+ïæ:ç¤ÒV¿‹¤u„Ö›[®•º¯*4Le¾S:'Ágt–v¶ì^…Û,2©Šù޲XWP¹„üÓ¨�¶þ‘ªY³S–PŽ¥© µûµO9£zïéWÔ Ÿ—[��5k•κC·F;ÑŒôG¯’¹yB·—|ªì®„ý‘—±{)JúÈD¢„šA^T[Z&çÝYS;·#ͦ.ŠuºÅÕË>ê¿)£´¢¦|üüÑqmT Ë.¤’ëЦ‰±juÂ@«Ø­Ê5wÛç›Ü‹kÞz&cÓðæ÷åÞ¿õL¾þ¬þbˆÝ«\³”xR1§+÷ÈÎñDf-Åùy•Ã6åÛ®U¶§:˜úë*ÏQ�3^–Wãˆ5×ÏtR qøìNŒMGÝýÈ g!,› �1Jóó¦`qA±®!“õ\GEÏ~­aµ^QýZÕëÓ.-.¹[k¡CûzÌJÆ5[C!MÝTîm:¨² ãjÀ©ïè‘‹8™µæe\òÀd¢Kk·©Xiðl;sýº¤.SÙ¬³Ôk2IÛ‹.Û³K“ðd4Sv'6Ÿ …¤Þ3�6 Q®#eš¹b©ÈD.€¦ ìVåN·±‚£Wªæç�žÊ]#!¨ ¸3v&8‡[JN¤eJ.õ«Ç‰êìÕÓð9gS¼ÎÙe9Ø7¨Ü};"ôsÀ*•[Mðâ6j½�º©pÚ \0�{—\v& ��8T•{¼â7¦™$|ˆùyíN‰’übp—-ÝûL· ¾%#×sQ¹‰T|É\´—Jö‚H8AØ�ÃS¹Û[;™ @€Î+Tîy=²¬ € \d¨Ü‹|ôY; @8¯P¹çõȲ.@€ p‘  r/òÑgí€ @à¼@åž×#˺f ¸·û‡OE˜}›»ŽI0[ñ`ý²å“v· ˜ƒ²;Îd† p® ìZåÆɱ"¢<7*[yë›ôÙ¯L8U¨Jh]×<(s ËÏíGéoˆ*:l.(LÚîWpÏR¹•O’ÕºE³¶½3\‘?ЧÑ÷à  ^Æp ÛæE>@Ø_;U¹öt$ À�›d/û6$wVJ§Ní™›´ÅeHA#Ä!Ée£fR?>``êg\s]ý„^&^=iu¢\£Ó‚t„·hÃ.f£F ]ò™´e…ƒ¢Ãò„nO^)ÎOìG­°ä‚€­' ÛÒnÞë’w¾sÔ¯œˆK‘§g_mE;ë«wP/éeO– ý0€ �3"°S•›¯IŸ{ôØzÙsW“õõ® ªý¼œì™(ŸºÌìÊöL¾8Ðiõتu ò : Q!o ›r¾�Ò³“²tSë*z*=WOXfPûjèòª6¦N 2mCOCåªn¥öþ J�gÔaû ”͵‘–^g´ÊB€ÀY8•[ž†ìÉ*ÈÜS¦F¬o61¦Y¦VÞ“òjU¬:_µ®vl1[ÆGs<™ÛçRÖ»˜C™¦ßFL ÙçÕZïìT:w;tíÊ2•«ºDj]S¬Ù}¶±Ùºžµ¡¬[{ÈL‹µ#vû{`²zw4Ls®Ž3¥NCß-“Ëëñ¸ •0”TÆ�1åñ!áglEäÙÚÐq>eZ�Z~9 Yói×blȘ|î*_é–'a€. �ST¹ö”NHjèEÕ•£4ÜÉs`ªN^ÕÄø° ܦqNcU«a¹®Å4Ö¡ÝFÊjGê$ïrº˜ÖWI1¥àõá§ mk„é„UËÕDV2ìŒ;ôK *K^4éï8a«…4gËU’y8šZ­Ë0ôÌ�v1ñ8;KÚ­ÖÙ6yVòRÑ M3n7­øÒÉÉå´È¼•4FµyÐaþ‚.º¨Rg6kj1˜ªÕ§¿:¸îQ[C€À…!pj*7;³ÊÙJÎerb˜ü9SN}.DÔÀÄ“µïÀT;g3³ëÊ‚z;­6ôœ-&Ò¥—D©Aëxé$ל«lý Œú®9#áÌCV<ˆ˜ôBšc¡Ô´Ž'Wc˜–’gµÝË*­I–S¼æ3õêj˯CeR–Lm.´¼²y¡ µ0ë©»Ê!ä{M_Á"VW»Ðxü¢QSsEzÒIÇPYbõð¢jùäÇGÅVC·¨öÁóÍë#‘Ò¦‘Ïh}C–�É mËSSª&ÍD™µð©ÍåŒÎŸÙ\SmE‘ÐFÜf¸z²øû•U­S3@…À)¨\wÎÉe„ŸŠgkËÚŸ¿Ì‰~`ªŽ‰>ŸVÆzbpò˜ê�¦æn™Y9 LÊKW^—î�Ë6|‘¤ÒH�èÉÊzô¾ ú­ù³oçßFÝUr„Ûß‚°J¢è»õ„1ñô³þø…ÖºN«C}øù¸ŒìðÙCÔ:4™ÓpÇÂíüNõMîˆôê.½l†í4Œý6JçÍi”«}·òM™WYOqÂ0Êwïð(ŸbË[/Õ_òr©SylŸüšKÞöïr�ï®UîhÊ–ÿfd_bU˜ÂËÀ},Qïas±ƒ×ÏÀÔLe&UïÕy@ÙŠæ{ÙüüB!íô¢Ûm¨ÙðáYöi*© -ÖµæA™KXüÙÔè‹6F¦zÛ}™)aÆv[» ò®hrU½,Ü^­üÖfmk§Ûå:K4Õ­c¢c|ö úߢՎL̰ãç•WTöc_ò½WdéÛÛäè™fúžñéµTÌ÷Ú(ÜÜ_—Mi”9‹}ÿ’ÚËSÑi{×ö_vßûÅ#Ønæìf{K^îhË/€6ãöìrs#�õ—\Gü¨Î¢­µ¸�ªÜlåvGýÉÔ»®±ôËÑ7i‹û£“‚F«ù/›_AÕ�‹˜úmòç.ë)ˆ£`,ÖÕOè?ôêI«Ãår‚©ð Ý*mØþ'0êeæëÒ–ŠËº½œ¯4Ø�òweò†¢­'„ª­tÕ55HÒ1Íô=ã3Õžqê´Q†Oº•acßÂQýªépÛæÜ7Æ�%Ÿz›mÆíÙ ›Û`É[í§•l§*7ç¦Ëë±õ²ˆÂ)c`*@–žy9Ù3Q>uí?0Iøâ@§Õc¨Ö5ȳÜFÈkÓ鿽œóm”ž�Œ¥›ZWÑSé¹zÂ2ƒÚWC—Wµ10uZ�išôJœvë:9I2W‹>[}.W°qò­'ܸ£V‚Óêr±Î¢ƒê~ׯUjƒá*+j–q¿—›¦&°Ú¦™¾g|¦{l·Q†o‡F™õ<ì[2îÄdõ_ÒÎYp«Gpß(ν¢vÞu›q{vÓfÖ_òVûi%;•[vâ~KüïÇ‚)û²¾ÙÄø@•©•÷À¤¼ÚC«†ÎW­«[Ì–ñÑ_@ö¹T¹.&ÇP¦é·ÇBöyµ„Ö;;Õ„ÎÇÃ]»²L媆.‘Z×ÀkvŸml¶I~å²±ESÁÊ7ÝÍCš•H?ÆÙ7zI”ë=º¦ç˜´_ÈTËbcD6¹�„r½;e–%u±&ƒZAæRÆÎCŒ JÍtÊjó˜ìu‡i&¡0£¢d@Yͦ²jdû«W"YÅ”±Ûá2Þ!e Me ¤U§Vœðˆ5m— ÒY�Üê3Ö.Ô ,\ÍȰirEÜï^h±Q/øH¢úøÙuèæõºô¼MÑlÃåÖQ9 ×Ah02þ¦[eÁ)ÕkG™RºPrO½¥ÀDÃÍ)g›Cíf93C¿œï_Eê|jZ³°e]S¶ŸÌß!ìà Í·ÖeÃ4O9¬{ØaʦŒÇ7YÃa­¢½¶a�%ÛZ݇^°.ÔoÞ-'_‰›2Ñi¥ž]øéó§äÓÈÃR'ÖÝ8ö¢ÆKV‹Ë‹Y¡E¦œ±á©“âÅ ©±Ø»{¶ÖST¹¶Ó°B5 K4Íü:¦ré : T=¬â“ËÀ”œ:#Õ±–ëêçÓí6RV;ÒÛF»˜Ö§Kñ$x³z.´zÑ­–°j¹šÈJ†�q‡¾y­J‡ƒ¨�©U?›³å¤†XlFËÚ<{äºD4:o»#‡%[~f)^®¹Í$Ê"¥ ´Ì—¯¨¾mBµ»N¼†îÐYÒ2«ZÒf9pIR[—NNŠkƒyÍ,¼e²ùäW`•[É«e²3L•';tA=¼Ý%›†\þÞ¼iß5ú|)]VÙÅûF“GJ:õ11-“/"¯fÍPªÔqåLÖ|µ“^D.eìëØ¨´V�#÷·õWÂYsÃSë÷øÖÍËŒäw/öT:ë™ü¢ÌÏÌO5L¦XXMV Û‘\fà 6"Ë[yÈKÎ[|”ÎÚÈJe–ð’owØÅkÉa�²ñF-i;·¹½vn}Ù4‹…q›G];Ø&â‹Áæ-÷µoª[$Ì‚ò·È FµúÜy¬ÔsIR—3§€2“M!Ç¡4J!7hYOMåfKµ;nÙ¶%¸u Lþ·Ip¹å¨Åç‹mìµÖܦF"=5».Ó·ÚÐs¶˜ìn–ôZ·±9^¤3ëùz¼õƒ2JèË»ænwYñ j`ª—SÌ¥lÞft•Í >‡¿(e€©†6›ö”„±Œôì'ŠÐèŸÌÆ­,°Q›Ëé…TüêÕµb—Ås]£p(N2¹µŽ¶3òÀ8+7T¶r1Ê5¯÷¢£ÃÒû=,ËÎ14oMjYzÉÙXºKƒöŠ KSµ˜”{ÅÑ Smr}«5·ÖQÏ•3*¯5©|MnÊ=¬­ŒRjè�í„«`îµáÚ‘)ù¦¹UYŒ±\E˜QÝ«¨ÒY™jÅ#•ËueY¤ï®}­Iõ!ùìÀ…™•r®¬Ê§ÚPC›\7J¥T¹ÑºÇ‡¢áªZ¥©�®Lí²DW·â¸SöèZPEbKÏYç_6¯=l�´®ª¢vMµË„*L ½*0ˆ’ÔUxë-ÞqPwYÎdySK1�~.C­ítT®í«<WONÔ’Þüš&Û¯Ïd³™ƒ{9ûãåR8K0_²ê!5Ô\6M‹ C7ù«¬³®ºfc¦n#Ÿ±«O¿X�~j�aˆó^%¤fÒ…„Ö“eœÐç³ �‡À/z505W¤'m‘t £Åf”²vàKX^vT=¼o~–rŽÁ�Âc…üØæ‘Ñ'=ÞÁP¶Š9k;B2VæQ‡¥³õÕµ$k>˜p+3«µ©\®; ¾�Ò¹,]ÚU?\t�×E{õÖ”¿–RÚ4ò™T‡“+V¾ÚBq•AšSƒ2k*[æóDzò_ȯJ-©*S³�œjã·¥ŒRií°z”Pù»Õ”ùܯ½²®y?â,&™Qq&oÙJÙE ‹HËÕçÀd¢�Õ.;oµjÁ‘‰}¨ì±yî%Œb/+Z‡*qÙ¼ó­f6‡,ö×HËÇ*n=áGËòÍd¶¬–ÛÑÙì86R­G·áÇ.uPÖŽ3W36o<¦ÚX×ÓÖTªœMq:³÷O¾iä-)*e®�rcF¹—5¢i\ËYí±ˆb˜}.CíÜ)¨\ßSÖPh3¾`L‚w`²ýf�&çÌ#Ûi­?8 LY ½ã;�]—ŽìŽ«6‹™\°ïL~Ml‘ÇÌT¥ºMEçô ÞLã§zuh”½«³pesG`”0vÖ{¶±ÙatŽjÆÁØCeªr†Fìï }¤—x �1Î59»Ñ+>7Ì6eQ!¥[<ÄUÂQ‡¥óAìx±çXfNÑ�×è l™§t-íªŽ.:H„ó¬_1Ö¾&ò¶j^ ¥�0(£æìý„U¾¾kYjyß&o3sÇY›fú¨|ªW‹j^ �VR;Ò «Wº˜Rx7ø…µ½¥°Øi9“ÒUÎÊ£½�ù;‘ny‰ûÐè¼\?YÂlb-ï ÿIœ†V®Kë!©aëè¿q&S¿Ckiã-kéýZÚ+®Qž‡ÆàeSë%Kð`P¶ÚxIØÒ’6ù›i™U ("�Ù´”,³óNéÓȧIQ!­øë.Ê(íǵO9Óªå|Ì/]†Ú"FåO?®¹æ­ŠMœ™ùÔÇ=Ëlõ|X‚íO¿ôütÙŠÝl¦�2>µ–m­ç2³ò˜”—®¼.Ü—mø"`ù¨þ†d)ËBøÀÔIf¦U’O•´\W'©Š�Œ­Z¿2¥ï¦á­’1ÎRÌ¥ÎVM¨p4ºHyëQ·C•Òð(:íFù_×°ª‹§[­îÜ–QI|Õä–·¨\U{u+Ú˜rI+YÒP<› c¨²™)»§:¶Y•ƒ´˜Í 3„Š RÉ :ª”r ëj/zÐÆÀ¤ …Öã’—;lÒ=Ƽu÷É¡µ×e¼:†A‡“­ZɺìTóÝf‘),›6 [3gÝ’)u_¾ÆüOÛjžOb3SÑž)LîE í$cýë�lþ…£“JîÐ)K 2“vGÙÚÜí¬ëÇ…:wµ´”Ï:é„Êâû3?ýºR"ߦJg&RÜ8¡Ï% Ma�<»øg•\HJXæêã\O©Ö]B…6ÿšîPgÌi Ú%çÕJ¹81õAihÅ’�)¦”TÙ¬îÄ3ŽþÑ’ÇÙ`瑈ËdÑ>ÔM©,ÅR4•t!*Ö3ÏE¾0ÛO)³Ö‚Y¬Éh¦ìNl8\ˆ¤2&ªuFâjŸ •›Ê2‚Àþ°¿�ß•uv¿_Y.7A×Iy81î¯c¶øÃéÝtz�ŽÔ™ûé¼B¦ÓlwOÚ8Í%o©–ýýYüC7…÷4ÿŠî¾ÖÔ’GÇ`ù“õèüZ�ï̶ñ’·Ü™®3cQŨÜ- Ò��-þ�¨þfVgµÈ�×u+]>Íí¼�µ ¸,ž¦×NO %`!wÎÇÓi²Û“6NsÉÛ©e¤MçÈêü3x­O–«šÐ7W©«‰Íò›h›q‚L·Žëhð‡iß4å–Üe±žATëŒÄÕ>¨Üõ€µwÜ_‘ò?LÖîÒþÍÑ�Mþ¾­ÝÄ逺R}øY¥Ÿî1§vHà4ÿŠžf­u�uUnlü@ÿð®Ãb½-\gÆ¢ŠQ¹ë' € @àˆj�‘¸Ú•{ G‡€ @ëÐÂuf,ª•»p¢ @€N�€¨Ö‰«}P¹§pt(@€ °-\gÆ¢ŠQ¹ë' € @àˆj�‘¸Úçœ¨Üø6Eû®øÁ‡uœÂ‘è”°o°<„÷P†wªoƒáâ’·X«CýÔ§¯Ã�éÔÛÜEÁp4ÝçRlôò9ï vŸœ€Î7-\gÆ¢ŠÏ‰Ê G×�i7:Ū—ÉV“µ¾IDÕÚ›¡×* =¾ «WG£[ë4i¬³®ÅþI¦Å´{ì`uãU³AÇçÔD… pa ˆj�‘¸Ú•Û}Ílû4» ùº}ì‡a-°äµÖµtHI¦¥¬{lß¾Èå;ÌöøpÓ �S& …ëÌXT1*·{¤¶®Gv ºÍoݰ�ý_òzëZÀ;H:0-$Ýgóþ9s>AíóA¤7@{K@TëŒÄÕ>³*מÆâCÿ'´™·ÿQ™ÌÚØÆåC|„‰ug3ÿ?Ûn˜ÿ¿gu®K•ÿCZyWW„l¸nQ¥Cè(.7>«0¥¦-† ›8_^$¤fýù;-øH'‰KÖGšt¨r%ÿņ±¾z¶]%©ë:*‹w–Ü©%_£èÒ¸jyzSC…f¶bâd½ñ{“5¥µª9U0IµâѬ^ub¡uˆZ•jÞ­Ö6œÌu¨JsabÃ:U\J––+I”1’[`£Tçè «ÉÌÇì,¬« ïÇ@眀®3cQÅS*·ÙN³PÞtb€.Q­3WûLªÜxÒ­X.Ÿ­š!½³°qNg7“;ž¹³ù*£L¤Ø8Uδúu>V-¨jÝ‚­±ØŒwëË …ðº�A­r]Ò‚è'³,ÙŽ JÃNæÎ´.gr7¶°äìµU•± û¬•IzN>q*ù¦‘·•J{ÌPúéù|•� �©_›z•\ÄÐsæÏ6Äu˜JIä!v/y×¶Å™VÞ2aæ“í4Ó—áM'&!@à"ÐÂuf,ªxBåO7Ëg« ¿ é�…�sÈiž2d§ó™*uÝj1Sìê•©špÞíÙ�(t®ÓÖc›!×IÚGç×cícÇ}ET¾»Üaî/e;Ó±s¤LêìxI¨WP­%×I˽ß]²vòUÓ2K[²xÏÒ».ýâ|íßð¬�bxCLœËÿÎ�,£�í§÷û5ªeãºGpTÐØ Ê•æ¥[y�Ü?·±@Š€¨Ö‰«}&T®?]uÎËg«ê8Ø�ÞYØ;[û(D“;ï©Éôæ£X£qfTS>¾J‚¥­˜¬#$Ë.ÄÝ æh¨–t°gmŒj•¶DCå÷NjÉ˪è¬;©àk›3u­Ö³“´žÎgÜ^’ÇnWõ�–œ7g÷bTž°qˆòPY–�.^Á–èZ\C“D¹,å=ùŠÒ.¤ûû5ªUÚ^Ÿß-¼M¥IKQð©Ul3 [†ŠÎæÙ� � G@ ×™±¨â•khƳ”‘2î!çÿå³Uu,lH÷,ì½]¹¨S²68>’CÙžõk2š)»›O—QRÁÌ#†m�FF-+¢úV(âŠÍsêÂØÛ4tƒÅ’ª©h£�$óÈúp–¿D2/œe ‹óá¥%+cÓõ–Ü3¸„*K†Þ÷—ÕŒ® ¿´š^Y¦l]Õo�µ&be`ì"Ç–�ls.sZz¶˜n-›´·2cŠqÒ›j"+�æcˆkÈîHl'@• øÜS•r3‚ � C@TëŒÄÕ>“*÷”AÚâ¹>³Ù“ü9ZàÌñš[²ÓE¢…NùeG9@€ö�€®3cQÅû¨rçôÐþ„U:šÑ…«ä;KßÉã5µdTîYIjC€ö�€¨Ö‰«}v£r­îé=êbØ9ºÊ¹‡¯•íµ´ƒã…ÊÝÞá! @à\ÐÂuf,ªx7*÷\0e€ @gM@TëŒÄÕ>¨Ü³>tÔ‡ @èÐÂuf,ª•ÛeŠ€ @ଠˆj�‘¸Ú•{Ö‡Žú€ @]Z¸ÎŒE£r»L1@€ œ5Q­3Wû rÏúÐQ€ @ K@ ×™±¨bTn—)@€ �³& ªuFâjTîY:êC€ t há:3UŒÊí2Å@€ pÖDµÎH\íƒÊ=ëCG}@€ �.-\gÆ¢ŠQ¹]¦ @€Κ€¨Ö‰«}P¹g}è¨@€ Ð% …ëÌXT1*·Ë @€ÀYÕ:#qµ*÷¬õ!@€º´p�‹*Fåv™b€ @8k¢Zg$®öAåžõ¡£> @€@—€®3cQŨÜ.S € @gM@TëŒÄÕ>¨Ü³>tÔ‡ @èÐÂuf,ª•ÛeŠ€ @ଠˆj�‘¸Ú•{Ö‡Žú€ @]Z¸ÎŒE£r»L1@€ œ5Q­3Wû rÏúÐQ€ @ K@ ×™±¨bTn—)@€ �³& ªuFâjTîY:êC€ t há:3UŒÊí2Å@€ pÖDµÎH\ísf*÷AGGÇq»qŸñ”¨k§£.¤ã¥“«·›Ç•˃Õ_¾²àЈ-cÊýFS€ @`]Z¸ÎŒEO©Üë”¶©-¼µ-þßè(øÊS4wëµ²%wm-––™ŠBÖ–NéÂh¨�+o& @€À-\gÆ¢Š· r��Žä6]3ž™3*÷CGGw¶Öß»–»ªÊ5/èÛ«W¯^¹¬…šÕt"óœø“=/"“à»tr2z‡—_€Îíäùd¯¨î¯s Go.«œr­š­²åžRç�i^Fãpqc@€V! ªuFâjŸ-¨\}ýÖÈ]Q¼ãþ*W¿­¾)פí©ÜqÅÂ*rÒÉ3'ZEôÙ©$cs¥¹–š+‚t~=¶-®Õ~±ŒÁn™ÉçÖë’Û,C[çª — ©˜€ @+ÐÂuf,ªx *WËÚ­¨\Y½¿cÁ¼­xlMå:Å—œˆ>;¨ázª8M�wSãçÒÇ˳£Z6g9.RX«Èj"_‹3Ûek!rZ[cZW¬²k#c@€ °Q­3WûìµÊ5(š7-œŠÊ�*´8kj9Q�^<«ä¹Ò,ª™Ý5 ¶"«T­ÚÒi&j«Ðv£YLí  @X‘€®3cQŨ\%#Eô�4�uJ·ìN'›P)[5ªeý–ì:W>®#mïJˆ–RÅ¡y%»WEÔ.Ì@€ �U ˆj�‘¸Úg¯U®¿Awþ“ÄV~÷™S|IžY%絨›ëèÒÒV¾ûÌiǘ(ÈT£>²e¾Òc EK×|¿QTiÕÐfg‘Ê1$­g²j�b™�@€ °-\gÆ¢Š§T®¹Ûö8ßä^\óÖ3›Æ7¿/×Ü¢ ¿û¬ £wÇÂöT®)ëŧ¹nÙ¥Ø(­M]µÝƸÌ?ÿt/ŸQ9ĘPªTž™Y…5á¤b6û,M¦\&‘݉ù’ÁÅI€qkŽÞ2.ºg,�Ù‡ @³DµÎH\í3¥rg»XÅÏ+Uós�GO宑êtBœÌtãAªÂ®Î=È՜Ρ§  @›ÐÂuf,ª•»ø¹èJåVsyÎÜ«Ù÷½ gÞ4 @€ pÀDµÎH\ísÆ*÷xÅoL37HøóóÚƒ:^ú‡ì‚5VQær·„;¿kÀ×EÊý5ÖC @èÐÂuf,ªøÌTno%ÌC€ @ Õ:#qµ*7"ä€ @`ïhá:3UŒÊÝ»cIC€ @‘€¨Ö‰«}P¹!Ï€ @{G@ ×™±¨bTîÞK‚ @ˆDµÎH\ís†*W^Âäçæú¯}8v´ ¿Œ"bXýÙ}4Vøx‚ìmWOE �óI@ÿ¡Ì>cå|.—UA{F@ ×™±¨ây•{?Ä˨ÓùGñÝh:ИŒj­ú«Ïn«Ínf�¶Ñ™¶¼;êV}^WÇ£“³?Núƒ¸ú΋Õà6Î;:]�ÉbOM‡�yãegÚšlœÑµ«Òn–P% ÿpÚB“™¼ØÆ Q'Ül½é`w_Ø É6z·»µ†¦Ôë*£^-µ¬-½{ÍëJÛû­ì­+° E[¯Ù2¬‚_@+Õ:#qµÏŒÊõ_5&ŠÔ\D=žno G{*Wr_ï¾ì·)ti%|j`ÿh·N¿îï|øcîþ°·œ¦*§�䲩·•ó¢mPN6ºÛUšêùneÅ1¹K¶¹ç¿%YÖÓoö¼mry76ûF/ÇN–ìšÝ(ßQ¶Þ�Û³« ¯•Ë�¶.Ü.å€VÜÔ˜V,Üû í²òc"{ë•1T·‚p¢–«Óû…uÆM׫Å€À -\gÆ¢ŠgT®‘µFUêÇqç2¬öñã�]T¹&ÇܶRÚÚy4cÿh׺¡üS¾±0 |•2ó¨·l[O›�ÉWh¤r �m%ßV’è·žP'÷zb#APÖr?+7³S,xã|V5÷^Øer[»þU›é:ø j L+P®ó Ëeª$“ÃùZÆ3éëÉì¹Ûr­°ž^©Í—›7Ä �¢Zg$®ö™Q¹Ç•¦5º×ßëo”•Íבgóð—͸Øô÷•ͨÜ;WQ¹¾h!Èm7ƒ‡ý£]�zË¿äö/þ†gèØB™:Îoø¼í´[ËgÑY¾½“æJëÞJUÑ䫎½2o8ŒKß$�Í‘tÍÆGÅ&ÈV\M¬ÝlÕ[9á–’W_·X™Zå˜”× ÃÅ„‹óÅ–R-Ùç+…Kð�‚ÅW­}n˜·ðO·UºÄ€€' …ëÌXTñ¢ÊõÒQ«SSш[/&{*WŽ‹qózXfd°¨rovw,˜ûêG3íÖTnüKoëú3ËIãÿcë®&f¶y¢RåtÇjzÝá¶Ò¥?•¸©M~øN·tâËÙtÅE|酪Õ\m§¨°Z°õ®T«çt[;ȶ!­5Êý5ûKa6aKË$�ÙQµfÿÒÔÙ·…w¤«6fûïùuúõmõW¯[KšÛša‘º÷ÊXîQše@`k´p�‹*žQ¹µ¤<Žº·P¹Å®Y^+k6&ã?~œ�Ê­NöOûvÎg[=IØ3ѶTJyŠ“^i^Ú÷­ÙöÊÇvD•רZC-uTÛËcQî×s3ní[Yfy¶Õa\‡Í¿•F[×!ËfíþΉʢq¥k?wú×÷–ØÅæ:µ¢Ù<—/eZqXÖò *Yí~¾È2nŲ¸CX‹€¨Ö‰«}fT®¹�{¬©Q§fóýÞ4/q�§~˜K¾ÅŒXgT®¹A×|˜Xý0±þb²6míÝg&©û£þ¾·þ°û“Âê'íV.·†•ú€ü¤i¬œ° .roœ°Èç¯)|\3'´Yäf;Æ:KvGX’j¨f¼bB—+É �/zÅ„ª�NŸë&l½°u¿]{:ª¹ñ°•+DtM[_W:,U³Û¬¥“kžq~—µò—š¯Øâ€Àhá:3U<£rM¿^@;ÉZÈK·Fyz·b}fÞšŸú·¦ÊõoåÝgf·ùعÊ5UýùÃ]ݨÿÜ»?öÕ…Žf¯nR%sí�L ­˜0ºK27Ð}F=×ï/[®ÉÕˆZ5aVÌ®¿Ì¹jÂè_-5VŠe¡ho<Ç›3;Î7ZWHèt×õ„1Â-ºBèÿ×Áغ‹5«tõr­ot˜M¸ðÂVæ:ãk©:žTy<·W+f’:n W=ô\q²ÝA󹩑p‹µªžåªÿæÊ‚Ø� °#¢Zg$®ö™T¹»h»©r' 5UîdlæfOíÓ}æÖØqçŸõBÙÌ Û\V™…á*´Ú¾[gØ.ãf©5€3i:M†­;S&ÛÄ €À´p�‹*Få®§rý%”ÖÅŽ5�" ×§Â`¨`¬9Ü:ÃAÔÀ™4�&CÛ’«·Å¿{“ËÄ ¸àDµÎH\ís¶*÷8ÞÌ`nu˜yÈÝ&°¸qb&¼áãOþ?'/̆�IïFÍrŠ„%‘Õ÷a¸:³2bë ËjŸZ ÆšÃÓd(w²T·g¬Ùn!j…&Vp�_Ôùõ4¸zGi`:¿S*×·±¨K§»µŽ‹ÙîÜk•;–«=Ã(§œ¢ëe(æ÷B`îE½ëÀ^½böê»–¥}“[ÔÕ“Ëö‚}qPô� n«þkG·Ç€ �-\gÆ¢Š÷TåÞæ$®¿œ[¯{®åZ¥SˆŸºÏjfµ®TÔ’«ªw:ë¶~:Ý…*ƒ&&CÕ‹áÚVÎØ …󩮊b€ �óO@TëŒÄÕ>›ª\s£ìcÜvìîd˜¿Ãv|-×Ü«`„îª*×tbÚ0?çN$†ÿ{6OZ¸j“žwÉ­±š\,Û�²–R+9=¥Ëø‰Â­T]±‰¦s4¶žM 6µíÄ?²õ¥éÔQh0úÇgWöeHÆn-eºH™‹Õ¶�wHKö0C]ëæZîUó0=&·#¿Ø¶ÉW*WáS«žK,Õl�I@€6  …ëÌXTñTîñёܦkÆ“"s r?ttdnW0�]«\«P’>±{"_ª�`ò¢Æh%ýH9\Ûõ�Å(ëÐÊâDV0è±.Q 1otÓͤ:X�c“žA–Õš24iÏ$È\%a9[ç0«Z¾ëhp*´ÅEªÄ�‹k‚2uݼñ°Õ¬c\ÊÀ”å�þvÒ.#väŠ^9iÜÔÃy† @`S¢Zg$®öÙ‚ÊÕ×o�ÜÅ;^SOå^ïU0᫪ÜqÅÒj5JÔ+Ö¦dXiòrÆh$y(g™[ô¢êü)W�UöIäY²ÚQÙmn�Þ+*¤¬iäs•Ý–ûm¯líÃZú¨dQã¥XWs<‹ÔcæµZ•y3˜ªµ…*Šzå¢S3† @`CZ¸ÎŒEoAåjY»¹Ê½óèÈ\Ëõ��ªÜJœXýt�V�L#)çØíÄs/Êö¢wž*v“5 \ª•(Û Ã^sNþ�h´ë—³YúlG÷8ŒÒŽ­ñ¨VÌÂ\ÙO¸–{r¥¼¢«ÿ ´�3 @+Õ:#qµÏ~©\/kÍå\ÿ8S•ÛÓ”¾µ®L‹½7Ÿ{Q•–ÒÑÎhUf¯#ëÐ×È:ÕpÜkN_än&hw_Îfé³�t¥c;ÕˆYš*ûñ·gdÇ®e ø—:Á@¸ ´p�‹*Þ/•k®âúÏÈ­ê»�ÏX(Ô‰Ý�B²Ò6ººweZå©'ºQE/*&¶âÚkŠ©è¡‚Öv›[*ж³ùît­®cµÄX ª ™˜ˆY“k9c÷›Ç%…0‚ @`}¢Zg$®öÙ/•[XõZ±`õPÐ'N%•®Øõ.žš6çÕ—^S?JõRDéíz¬õT©ºb¸›�ë‹“£ç~s>UŸ†ë¬2«Æ|ùGÄŸ r½ö›Ê—¢[pãT0¹WöcÃt­–}25n€ ÌÐÂuf,ªxJåš»m�óMîÅ5o=“±iÔŒõî õÞ»ÏtÈŽUnøt#n�þ²‚EI5§_œÍÿP&Óã¬úÒËFié‚Ü”n©š0Ž]™åû_Aì —4¦ÿ¿ •‚LvGvk¹qKh+.ÕDò�ù êð›¡b©ÌªÙÉܸA€ °Q­3WûL©Ü™v�Q¹½dÛ¹c¡—ý¬æ�rZQ3•¢ð¬z§. @Ø -\gÆ¢ŠQ¹»9 keušU]1\Jbuñ îKé°C€ �½# ªuFâjŸ3V¹Ç+~cš¹A‡˜Ÿ×îÝQØBCV¸N^Ï]Áu �‘€ œ-\gÆ¢ŠÏLåž%jB€ Q­3Wû rë@Ó- @¸P´p�‹*Få^¨× ‹… @‡E@TëŒÄÕ>¨ÜÃ:Ðt @€.-\gÆ¢ŠQ¹êuÂb!@€ÀaÕ:#qµ*÷°4ÝB€ � E@ ×™±¨bTî…z�°X@€ pXDµÎH\íƒÊ=¬M·€ @àBÐÂuf,ª•{¡^',€ Q­3Wûœ+•û÷Íhæ'@€ �sA@ ×™±¨bTî¹8þ,€ œO¢Zg$®ö9W*÷|[V@€..-\gÆ¢ŠQ¹÷EÃÊ!@€ÀÞÕ:#qµ*wï�- B€ �‹K@ ×™±¨bTîÅ}Ѱr@€ °÷DµÎH\ís–*÷:÷‘ægýXÏÄg,Ô$™� @‡L@ ×™±¨â³T¹7öUîz&Tî!¿†é€ ÔDµÎH\ís–*·^3€ @P´p�‹*Få*Š !@€ö‹€¨Ö‰«}P¹ûu é€ @@ÐÂuf,ª•«(2„ @Ø/¢Zg$®öAåî×�¤@€ E@ ×™±¨bT®¢È€ @`¿ˆj�‘¸Ú•»_’n @€-\gÆ¢ŠQ¹Š"C@€ �ý" ªuFâjTî~Hº� @P´p�‹*Få*Š !@€ö‹€¨Ö‰«}P¹ûu é€ @@ÐÂuf,ª•«(2„ @Ø/¢Zg$®öAåî×�¤@€ E@ ×™±¨bT®¢È€ @`¿ˆj�‘¸Ú•»_’n @€-\gÆ¢ŠQ¹Š"C@€ �ý" ªuFâjTî~Hº� @P´p�‹*Få*Š !@€ö‹€¨Ö‰«}P¹ûu é€ @@ÐÂuf,ª•«(2„ @Ø/¢Zg$®öAåî×�¤@€ E@ ×™±¨bT®¢È€ @`¿ˆj�‘¸Ú•»_’n @€-\gÆ¢ŠQ¹Š"C@€ �ý" ªuFâjTî~Hº� @P´p�‹*Få*Š !@€ö‹€¨Ö‰«}P¹ûu é€ @@ÐÂuf,ª•«(2„ @Ø/¢Zg$®ö93•û ££ã¸Ý8 ÓxJÔµÓQçÞñò•Ûo¿r¹Z楓«·ÇGÃ\ùÒDgÉ+.a�e`Z±î€ l@@ ×™±¨â)•{�Ò–Çnlf6|x•k~�›�ŽîÎ73S<|,*×cqZöêÉ¥Ò‘•i�éÒí÷;Kª¾ô–CöÐv¢g„ÇÀ$> @Ø5Q­3WûL©\ß}O—®·¶^6¯rÇ9Q¹‰�Óp-•v~EnkÉA÷^¶W¯ Ö½˜JøÌÈ…¶¦,;€ 쌀®3cQŨÜ�“ÓH<�aKâî4ÚÛE�Ö’ÍZýUëŽq¨r�ÜUïŽKKQïbUä„ @ C@TëŒÄÕ>›ª\s£ìcÜvìîd˜¿Ãv×rM'¦ ósæá•‘S1V"9}”]ôó&ÿÝÕ¥>eœ¸+`©V(^Ö²Ó©5c-KÙ.ʹ¸vk«ÚŽÆŸ}ÿ^ º&uâõš·íå�´mÓ•l×Ö–<Ëu¸^ŠQLÍ„ŸVÆ2œ}@€vG@ ×™±¨â-¨Üã£#¹M׌'EæXåÊ­¹õM¹bUU®QYF09-yõê•ËZÐdÒÈ©®$”ÜnRZ—NNê7~å‡ÚE j¥d™Šs ù&m>ÝŸËoÓªP_Ó×2QúQyyßÙŸ1§g�õqùŠÊ­ŠÍnÚ”¯Ä%ÏéÊ^a[¹yâ°:—C`HêlíÙ’2K3eîÁ @;$ ªuFâjŸ-¨\}ýÖÈ]Q¼ãåöT®ŽºÍ½ Íü,=•[¸�wE@9…㤚�r*ÈN)ñ–)�� êÕ*ƒ¤‰ kUEéb·H¤ò–Õw¥ZâI UQ×�j¾4%¹©Óé±Më²ä®£ ³…{jÌ�œ9;²Ñ£¬çÍóÀ¤¼B€ °Z¸ÎŒEoAåjY»]•kXÝé¶ÚÖT®aI‰sªN.ÿ…AÐZâT45Úµ1½Z6®¬J¥ÎBrÉãöÇòk�>C™êi˜k²y�#[˜‹�B¶LæØGã²âÌWË0ÎAiïè3˜b4Ï€ 쌀¨Ö‰«}ö]å~èÌTn’VÙQ[KóXíÖU¹™ÊóŠw^åö/lÚ´�5d šÙéçšo^çp�€-T¬Óûƒ®—è/Ù»·<ØÀ†øµp¦vø@€ °-\gÆ¢Š÷]åšt�Ð-;¿–;K…®+ZkïÚ˜žÊ-ó)5X¶QîKÚVU•§e^i®›Ë´–VŽ­f•zïHÙ2ªlÓè¨Qëº׵qSÙû€ lŸ€¨Ö‰«}öZå}kTnýè©Ü•ß}ÖSž^-iù¦šp²GÙÊwŸ9å—i¿ô–²$™Dº©(ÜòØämËg޾Ÿ‘擪õ0ôUbÍÚ^Ítse=ù´‘LÞüøµ*èÂb5‡¶H¿ó²hŒ Ï®ÃZãŽÄñBÆ¢»€ l›€®3cQÅS*×Üm{œor/®y뙌͢ÌXï–镪ùY<ü;Îüg,ÔWq½óîU®©ãå–¹T™8 ‚Ι Íã´¿H³¤™ìTp‰&›Ée÷jƒ«¤Sz=Ùf¬ª€÷M?cÁ:_òÉF¹ÚÍ« Y×·[Sü¡ï–•ŸYhjc½%§øb4(>0IØ… @`G´p�‹*Fåîèˆl#íœÈr^™h\ªí"âã%çíÛ«†«‰¥š+ôZÉÜ�70õóa� @`»DµÎH\ísÆ*÷xÅoL37HøóóÚí"ÜÃlN̵ÿ'=ïÖê±?¹££ëò¬;Üs—cã æyõ~æ—¨Üóør`M€ @àœÐÂuf,ª•{N^,€ œG¢Zg$®öAåžÇ—k‚ @ç„€®3cQŨÜsò `€ @à<Õ:#qµÏª\ýy õ·C4�’ÿr³c÷A “ß>ÑÌÃ$ @€ÀAÐÂuf,ªx^åÇñ2êtþQ|7š4&£Zë‡ÿÞ3ùÙü´AÚ:!3€ @J@TëŒÄÕ>3*×Õ˜(RsõxÓ@ŽTîÍKùi—B±C€  -\gÆ¢ŠgT®‘µFUêÇqç2¬öñã�EåÖ¸˜� @ÐDµÎH\í3£r�+Mkt¯¿-Öß(+�˜¯#3Îæá/ÿšq±éï+ÛºÊõE An»á@€ p˜´p�‹*^T¹^:jujqëÅdOå Eãæõ°ÌÈ` rÇ7åš Í´¨\aË€ œ¢Zg$®ö™T¹F@êÇNU®ºþèÈÈÝ;e_ š*WÙB€ œZ¸ÎŒEOªÜÓ¼–«�ÇmNè¹[há:3U<£r "/ ��d->3AÄ­QžÞ­@jæ} ù©ï|hª\ÿŽ3ùŒ…"•ì¢r@€ pŽ ˆj�‘¸ÚgRåî]SåNjªÜÉXÜ @€…€®3cQŨÜC9Äô @€. Q­3Wûœ­Ê=Ž73˜[frw„ ,nœ˜ Ç€ @à°há:3U|†*÷°Ó- @€ÀéÕ:#qµ*÷ô!@€& há:3UŒÊ�$Œ @€ÀéÕ:#qµ*÷ô!@€& há:3UŒÊ�$Œ @€ÀéÕ:#qµÏ¬Ê½trõöø¸zréôWHE@€ �‹G@ ×™±¨âUTnGÝ^¾åïí�‹w[P¹ ‹p"˜Û(a† @hÐÂuf,ªx×*×_Ë­¯ñ6Öðÿ·w÷HŽ+Y{€{#Ú‡ÌYÁç]S!_¦"Z†¬»�ZÁçÌÚ•5‹Ð*´‰2œL€ìdd³X££*�<ùƒe¼ƒá%�"@€ Ð Dj‰¸¹æ–”[ß”0ý|0»¼Ya°º½G @€~üÈÁu¤©x4åB&@€ ðt�H­#7×H¹O¿W$@€ÈÁu¤©XÊ%VG€ ðt�H­#7×H¹O¿W$@€ÈÁu¤©XÊ%VG€ ðt�H­#7×H¹O¿W$@€ÈÁu¤©ø””»|f˜OŽ]ê @€†"µŽDÜ\soÊ­÷×ÇÏ�_ÿò-¾C·J @€À°@®#íHÅ÷¥ÜéÛ{ç/}¨a׳Üáû¥� @`D RëHÄÍ5÷¥ÜØš” @€§ äà:ÒŽT,åžvLD€ p¶@¤Ö‘ˆ›k¤Ü³o…ù @€NÈÁu¤©XÊ=혈 @àl�H­#7×H¹gß ó @€œ&�ƒëH;R±”{Ú=0 @€ÀÙ‘ZG"n®ytÊ�>klzÍ7vöE›� @àÍrpiG*¾3åÎ!¶ÙíÕDÚúcSŸÏÒ}ó¿@—G€x„@¤Ö‘ˆ›kîL¹×Rƒp“|)!@€ ðãG®#íHÅ�N¹ó³\Orý‘ @€|B RëHÄÍ5L¹Ë›<ÆýÄý4„ @ äà:ÒŽTüÀ”ëÎ @€¸O RëHÄÍ5Rî}ðF @€

𮘚 @à>�H­#7×H¹÷ÁM€ ð@�\GÚ‘ŠOI¹Ëg†í?7}5Z÷�b©çÂ÷¢-ûIÈhj @€�—ˆÔ:qsͽ)·Ü_??~í¾Å·ÆÔ%¤.eÍh¥'Òk.ÛL—àœê¶>- @€�o"�ƒëH;Rñ})wJ¨ó3ÚJ#¸ôþL ³ÝóÜåÞô•Ûà& /Õ~ @€|�H­#7×Ü—rx—Tûõ‰íqÌíKüX±”À @€�o)�ƒëH;Rñ£RîTËݘcìÇÁ›ê½Ê¥åÄv,åV ? @€ßV RëHÄÍ5O¹%âÖw*ìÙÖ»U’l~ƛˤÜoûí  @€U בv¤âǦÜ�ôfÜ_×»V#;?ÕmÞ컎ó› @à[Dj‰¸¹æQ)·fÚæJ¢mþ󳹤9ÕÕx–û-þx]$ @à¢@®#íHÅ�J¹»ÏX(™6'Úù1nû¤v>7½ƒa÷jë.2è @€x+�H­#7×<,åÎï7X?·{»ÂQÄ=¸GÏrç¡9/ tŠ @à-rpiG*¾3å=}M 4u§§±Ë»º¶©`½%G)w|P¾ó› @àM"µŽDÜ\sgÊý|5:§(ý'ö`M @€�gäà:ÒŽTüåRîü,דÜgüUYƒ ð§"µŽDÜ\ó•Rîòf�qÿô_›õ  @€ÏÈÁu¤©ø+¥ÜgaZ‡ @àE"µŽDÜ\#å¾È´  @€�½@®#íHÅRîÓ @€�ˆÔ:qs�”û"wÐ6 @€ö9¸Ž´#K¹{Lg @€^D RëHÄÍ5Rî‹ÜAÛ @€Ø äà:ÒŽT|oÊMßn6—Yþ$Ûõ{ÊJO>_öŸ4ØRÐŒ»6áÅ @€�/.©u$âæš3RnD²¦Ôµ«¤0›ûjrM}ó‘g×–\¼vƪ @€o$�ƒëH;RñÃRn‰¡k$� kj]Žs»Üƒ}b]*š9šƒvÂ7º‘.… @ Dj‰¸¹æQ)·äÔæívâ(ä6Oz#öæ`»�_.{w"qh @€¼…@®#íHÅg¤Üò¶Ûùµ=¼í£lz˜›ÝÎeS$Þüný}ÊÝj¦›¶[á-n¤‹ @€H‘ZG"n®¹7å¦=ÔØpëQ<Í�ûæ”)¶œ¬µ÷àí 9åΩöp´M @€�wÈÁu¤©øÄ”»<^� Ú~ŒÂÏ5Ò.ïGøøçö.…-ån­rwš”»/O�}l¾Ó�t- @€I RëHÄÍ5§¦ÜxCmÚÙÚÜkM²é é??‹Ç¼ó¨mÌ:Kú}µ3Õi @€|Y�\GÚ‘ŠOM¹%x6ï�ÝpM]MÂ]€çHZ‡¶ãÒ hSîo&\Þ<Íxq¾4µ& @€ÀˆÔ:qsÍ�)÷Åhjt>ÊÔ/¶OÛ!@€ÈÁu¤©ø�Rîü°×“Ü¡¿E @€�¯ ©u$âæš7I¹Ë»<Æý ¬öH€ÈÁu¤©øMRî0”B @€�/$©u$âæ)÷ Ýe[%@€|7�\GÚ‘Š¥Üïö§âz  @€_H RëHÄÍ5RîºË¶J€øn9¸Ž´#K¹ßíOÅõ @€¾�@¤Ö‘ˆ›k¤Ü/t—m• ðÝrpiG*>%å.Ÿãµÿ¤ÚôgÇòµ4#Ówœý«ù¾Þ4Ûüukë°]Çþ+ÕRÉ:ê»ý�¸^ @€À׈Ô:qsͽ)·FÒ_??~í¾Y·Ë%R.eµ²‘g·àYOÅa�"òq9Š®v¦î¨Tưy#]¡C @€�WÈÁu¤©ø¾”;åÇ9L¶á´HõgÚà™*JGd×~TsÜT^¹Í šqcþ+£t @€¼œ@¤Ö‘ˆ›kîK¹áÐËét¢$Ôü|õGMŸ%"·ÙµÖE(mgi+cí¾QÊš¹ÛA_ê˜ @à¥rpiG*~TÊÍQsΪÍ›¶þ.»Öâ’ˆçWN¨¥r{EnoL¿�šgO#·®vœ# @€�׈Ô:qsÍÃSnI�5YÎY÷gµËí.å–þÚ=çÙkY6=±�;’g.'ç|³ôÝ1Nƒ @àrpiG*~lÊýøçöæ�-`n­"Ù¥Ü-–Ö²)ëFDmÜkïîÁlÝœìfßÞ(ÑLæ€ @à%"µŽDÜ\󨔻DÔ”P#€Fc–lrh9ȱ¶?NøÝ4¥§�ϵvWµ;‘¦Ô$@€x-�\GÚ‘Š•rw‰³$Ðú”µ×)Ëî_S$î3èAn]àë4)DO§Nn#Çè׺�vC€ ÐDj‰¸¹æa)· �—ÓjûŽ…Z·¥Ð£ÜZ¯û £mÞ­0 •Ò8Ýlý©¢au@€ ðGrpiG*¾3åÖ´Ù=•�H¹ݹ»}우ʹsºëœ©§éHçç¹êNvgk_˜6·ìaí=›6ªI€ ðl�H­#7×Ü™rŸ}�Y¯ä}ü}ÈZ&%@€¸A בv¤b)w~–ëIî mJ  @€ÏˆÔ:qsÍ·N¹Ë›<Æ}ÖŸ©u @€7 äà:ÒŽTü­Sî�ÈÊ  @€ž,©u$âæ)÷ÉwÊr @€ã9¸Ž´#K¹ãÈ*  @€ž,©u$âæ)÷ÉwÊr @€ã9¸Ž´#K¹ãÈ*  @€ž,©u$âæ)÷ÉwÊr @€ã9¸Ž´#ߟr×ï+ßV–>uöè[Ñš‚ ߌ¶—欩 w¥ÓyÍ*óªåQãÂ*  @€ž/©u$âæš;SnÍ–kl,—?{¶ímf¯Ò±N˜Ï×ö¥QÍ ®¨éÛÍè @€À äà:ÒŽT|_Êíd}¬{QÛ®n\†ý\WžáÇðZÍ( @€/'©u$âæš»Rn‰“ÍÃÛ݉ªd×­r:ÚÖ’å÷å”{mT3‰”Ûp8 @€|]�\GÚ‘ŠïN¹ÍÛ Ú|œõô–kç [~.¯­«mz0|uT,U¥r›2­3-—&lÆ8 @€xA�H­#7×Ü•rç÷D ¬aö HöÙwÎ�‘7ûîà�ç[§UëÖA1Wm´¶}Ž @€^O בv¤âûRî‘•þúøÙ¿…¡H•Š&u–‘q+ÊÉòª±t;4jÞM³Ú<Óò3OØt8 @€xA�H­#7×Ü�rŒ]]‚j“i�cïq2-¦”Û¥¾y#�jwƒšý; @€x)�\GÚ‘ŠOM¹!·œjÜîƒoM§m^pó辪?®µýRýMÊö}Ž  @€^M RëHÄÍ5§¥Ü:›g­“ÑáÉé| ›QÛdØ>’6…ÍÁò¾‰Ã¤œfì'¬]õä¶›T®I€ ð‡rpiG*¾3åÖ;=­�^‘Z7ŠÃT9w§�ÍÈ|~ÿ`6÷¦õòéy3åçœy›¾£¼õm—¢E€ ð"µŽDÜ\sgÊý—zþ’5Œ§Ð|þ f$@€ø”@®#íHÅRîü,דÜOýÝD€x¬@¤Ö‘ˆ›k¾uÊ]Þ¬à1îcÿ8ÍN€ø´@®#íHÅß:å~šÛ@ @€�§Dj‰¸¹FÊ}Êý± @€ÀgrpiG*–r?Ãm  @€ÀS"µŽDÜ\#å>åþX„ @à39¸Ž´#K¹Ÿá6† @à)‘ZG"n®‘rŸr,B€ ð�\GÚ‘ŠÏI¹ó·äÖ¯k>x6�?þ¸®¥ T®? ìû.w- Ö HÕÛ·¢µ_ª–Jš¡Ÿ¹Æ @€œ)©u$âæšûSn ‰Gñ0wÔº ºK,]¿ŒwÉã:£‹]Ëü??~u“uÌùyÛÈÅ w㜠@€x¾@®#íHÅ÷¦Ü�"î�š;SO)ÜÒeZ*ººÃLy±k꘧îÍ£k»-¸8ánœ @€B RëHÄÍ5w¦ÜÈ—ýE·qr} B޹%b–ã6j^œ°N‘Ç÷+–ã~Õ¾f]s>e­~ c @€�?!�ƒëH;Rñ})wN¨åçòŠšóäœ=?šwlýó Ú|P~ö.iø°+į§ÜÚ;š0fÖ @€ø‘ZG"n®¹?å¦w,¤�YÒh ”å\4Ö77¤ÂöYîbã�}ÝñZ›w®ßÎ.­¾óÊZ»±N @€ü �\GÚ‘ŠïO¹IËuG¸�kÖ�º¶�¹µÖ!1GkïüøõJW)¬¯væõìü;¶¶ž™p­õ› @àODj‰¸¹æþ”»½`ºðˆ’5o6‰5º¢1C5a³ëKnS¯¾»Úœ¤×¢õ÷AþÝ�ß�XûM€ ðgrpiG*¾/åöÙ1§f%)Ç5—,yüšâ�Zî^é ó¾&:ê¢ÍCâ}$¾88fÑ @€x®@¤Ö‘ˆ›kîK¹ùYëtÁíÃМ,¯$ÈR–òg3GsÐNßv-Ú–©§›gÎs}3Gs°õ÷Ÿ¶¬ä @€ÀrpiG*¾7å.�D—‡³}’,Éqy¥ Ûz”š¦³fÒeT7᥮´ÎºÞüà¸.U{›%b—&œ ÖÞã±1‰ @€Àƒ"µŽDÜ\sÊ}нƴ5 wQû5vf @€�ï �ƒëH;R±”{åÏc~–ëIî"] @€�‡ Dj‰¸¹FÊ=¾/Ë›<Æ=æq– ð�\GÚ‘Š¥ÜçÜ « @€|B RëHÄÍ5Rî'´ !@€xŽ@®#íHÅRîsn�U @€>!©u$âæ)÷Ú† @€Dí¦™jvØ®µÎ~µs-ò› @àl�\GÚ‘ŠOH¹%îÓh"wÿÝ×Ѩù\™­mY·Öl‡G�»’Ï®µN^Æ__r­ô› @àL�H­#7×Ü›r�d½°ùéidÃ6y^ÕšìÓe�5=ímëëQ»Òú�±‘ƒ1ì¨èŠó\ßÉ¥¥œ'@€ÈÁu¤©ø¾”;GÙK^ÛÞ-B¶ç×Ñ[\ó.åö v­lfl&jzÖ¥Ž̶k¥aÇIv-h[·ã7 @€À9‘ZG"n®¹/åž³ù¯9KMÜÇøk^�] @€^O בv¤b)÷s7s~–ëIîçôŒ"@€ Dj‰¸¹FÊÞÊ–7+xŒ»‘h @€$�ƒëH;R±”û ;bZ @€�û"µŽDÜ\#åÞ�o @€� äà:ÒŽT,å>莘– @à~�H­#7×H¹÷ã›� @àA9¸Ž´#K¹º#¦%@€¸_ RëHÄÍ5Rîýøf @€x�@®#íHŧ¤Üå³µöŸ[¿9aþƱôÁ[él|Ù¿Öï#k:Ó MGŒë×\ªúÓ—v¸œßmqºMy½~ºù.^XëA·Ø´ @€�o(©u$âæš{Sn�‰¿>~~üŠœºò׸äå쯵¯ý]*s ]z¯ª1´UG”Èšbé2ËÏýkOTÖí®ó•ƒ¶'ŽÖ­­µöùM€ pŠ@®#íHÅ÷¥Ü) ι° Œå’ú3’ìAeiÂf:s^ØÁö0·]ì(âîö7_c¿Ö<ô7›<˜Ë) @€�^ בv¤â;SîœèÚ§š)ߥî. Öžî\¹¨4bšµ/¸4ªá(EÛÀvÂy§±Ã}c÷Û öüZ°õÇzíZóéuðAyŒÓ @€ˆÔ:qsÍ�)wdo߯¦&ëˆÒßïú]1 @à,�\GÚ‘Š¥Ü³nAÌ3?Ëõ$7@4 @€ŸˆÔ:qs�”ûióƒ�Ë›<Æ=°qŠ ð �\GÚ‘Š¥ÜOhB€ ð�H­#7×H¹Ï¹AV!@€ø„@®#íHÅRî'´ !@€xŽ@¤Ö‘ˆ›k¤ÜçÜ « @€|B בv¤b)÷Ú† @€!�ƒëH;Rñ½)·ùj± Ÿ µÔ4Ÿ »~AXý^±ý¸4í:,�Z¿Œlú½öþøÍ„“éÑ6êî´à~ƒËr±üµ�»Û`/ç\z<.÷u�6gÏv�<(ê¶è†”; L×–/,�^÷¹µÝEín®`íÏóu[tH€ ° Dj‰¸¹æÎ”»í@kH fä&ù SD€øž9¸Ž´#K¹Ïüƒ™Ÿåz’ûLsk @€_Z RëHÄÍ5Rî“îûòf�qŸäm @à=rpiG*–rßãÀU @€ÞR RëHÄÍ5Rî[þ=¸( @€À{äà:ÒŽT,å¾Ç€« @€¼¥@¤Ö‘ˆ›k¤Ü·ü{pQ @€�÷ÈÁu¤©XÊ}�?WA€xK�H­#7×H¹où÷ࢠ@€ï!�ƒëH;Rñ))wù”¬ýçÀ¦ï ë?Bë»uU£½Ð{üù¹  @€Àƒ"µŽDÜ\soÊ­áí×ÇÏ�_»ïÕ­9vÉuKÙ_ËåÃ.)÷Aú¦%@€ÞZ בv¤âûRî”Vçg´û ן)Ávyžû »~üè/ú­ÿ] @à$�H­#7×Ü—rc÷» ן¨Ooç˜û »&§þªƒNƒ @à¢@®#íHÅ�J¹éÑíð>Ö75|îé¾I¹ÿxu @€. Dj‰¸¹æá)·¤»úN…ˆy‘r¿O×tßâò/ÞC @€½@®#íHÅ�M¹Û›q·˜7§ÜoÕ5Ý.)·ÿ›uL€ø½@¤Ö‘ˆ›k•rk¨k>v¡y„û¯ïÕ5Ý@)÷÷Å* @€½@®#íHÅ�J¹»TWRÞ…ÏXø]Rnÿë˜ 0"©u$âæš‡¥Ü?ÊÃÛåÏËݾávýîYn%YÿwÀÈ-WC€ø9¸Ž´#ß™rçl6¥ÙôZžØõÔ½EÜùv|·®šr“ÒÔLP˳Þédïô þx]" @à¢@¤Ö‘ˆ›kîL¹7¤ãf�šû›ä{ó @€ÞL בv¤b)÷Eþæg½žä¾Èí°  @àE"µŽDÜ\#åþù;¸¼™ÁcÜ?+ì€x5�\GÚ‘Š¥ÜW»•öC€ ‘ZG"n®‘rÃPƒ @àÕrpiG*–r_íVÚ @€@Dj‰¸¹FÊ C  @€�WÈÁu¤©XÊ}µ[i? @€!©u$âæ)7 5 @€^M בv¤âûSnú³ö‹»rGýÒ¯üa°ù«Àòùüuií·ƒí¦ÛÍYnÊRuqʦ#îâѨ4[Y©˜ö²ÿü¯åÒšËw›uçb}  @€�C�H­#7×Ü™rKÜ‹èV³_ÕÀ¹åm7…å`Ky�‹Ç]¥û``dçmÝRGÍÂeŽú:5�?®í:º-.‡??~¥EÓ"±‘ùœŸ @€×rpiG*¾3å¶»ª!/’\“/sa×ÑŽÊ…W‚ò�c­:j™¨›¾™ð`­ãQ'ég(…KŸšs«¯)[8:×lÍ @€ÀN RëHÄÍ5 å–¼×<¡Ý�X/ïJ2Lár­^O•ßmü]+޲æñ¨él³Å˜¡ßR1w­ê‹Êù£sk½ß @€Ç9¸Ž´#Ÿšr×Ä8ïq€%–×–;wyowb¹Ævº|áuDC·âÒÚVËÃöïr¸0jž¢ü\^±Ö6` ®û·']ÐѹvoŽ @€z�H­#7ל˜rk(Œ8Øì°F¼x:ÚfÔ¹/çÒ-]Ïvð\4gÈ2ü8åö;¼8jÞAL’êJOÝU9�n½T Gç¢Sƒ @àP בv¤â³Rîœ /¤ÒiË5ämÝsy}PúëãçûKë­Ý‘4×m‚,ÝP×’õÓ¶-tY¹Õ”)bɹñ±fÝ©«]¼®wpꨬÖúA€ pY RëHÄÍ5§¤ÜšêâQíñ.#'î»w™r+9µ��]ÑÑt;¼6ªëK)wž(§è]íað•r·›ªE€ÈÁu¤©ø„”[bÞáÓÓ¼ûZtð„uª)]Ç=)]Æ\û‰æõËú×:ë\±ÍS]Õ'étœšu¢rœǹþ’úqqA @€"µŽDÜ\soÊ= �û]Öª6eÎE5ûõ!1Æï‡]¯Ÿ–Qi­±öY»ŒŠ}5µr]à8»�=::5æmÆ’¹K› ðmrpiG*¾/åÖèÖ?A]`Ó—Rçt�RWëæ°·NÙ[¢`²¿éeЍIK­“N¿£{ÛŒ*§óÈ+»ÌSµ›Ÿ×[‡æé–�¬]ukžoÛ� @à{ Dj‰¸¹æ¾”û=±tÕ5#7É÷A ™– ðerpiG*–r_äÏÏr=É}‘Ûa @€À‹Dj‰¸¹FÊýówpy³‚ǸþVØ ðj9¸Ž´#K¹¯v+í‡ @ "µŽDÜ\#冡 @€À« äà:ÒŽT,å¾Ú­´ @€�ˆÔ:qs�”† @€¯&�ƒëH;R±”ûj·Ò~ @€B RëHÄÍ5Rnj @€¼š@®#íHÅç¤Üô¥_Ý'¾.Ÿ’Õ�m¿Yl×¹~ïXÓ‘ÖØ‹YÓyô‘\© ™u¾‘KoÓ“Fôß•v¥kùÃØOX!š^íoÈ~ @€¯'©u$âæšûSn tGñ­æº_??~õ_©Û ))—^Õ«w×îe‚¿Öãß/pQ’óveî8j¶ûãJ׺äÁ„sp�)×J¿  @€® äà:ÒŽT|oÊm2_ÞáÔ1g×ùšx×�ÉWFåɧvÕuµó·G]é6ѵ²+kt-§º  ÷{q† @ ˆÔ:qsÍ�)wŠré9l³¥õ`ïʉfÐîÄ4t7j�nù]2d3ÉÖßýÝ׉Êï&‹o^ÛL»XsaÂ}aZ@“ @àP בv¤âûRî ËÏåuáÀ¶ç™ý$@€�\GÚ‘ŠïK¹}të�ËþŽÎžK£¤Ã>_^Uª÷åÍ„ù‰r¿z×y¦©ö¯u/sÅzÔ¬pÔõ› cáf" @€×"µŽDÜ\s_ÊíÞ¢P‚^óh·lùj¼«�»!—G]¬O85nná´ÙTs�Æì²v�ä8M_éÊ3–²mצqó¬GyRm @€À÷ÈÁu¤©øÞ”»þßúó#ÑÒæØÖ>*]úkVÝ�(·ìʨµ7EÇõ&·£ú‚´Ü>„ç)b`±]Aí¾ÒµN5ÿ.{Š [¦eʬ5§à©# içsD€ø†‘ZG"n®¹?å~CíÇ\r�êMò}Ì:f%@€|�\GÚ‘Š¥Ü¹Éó3bOr_ävØ ð"‘ZG"n®‘rÿü\Þá1v@€¼š@®#íHÅRî«ÝJû!@€�H­#7×H¹a¨A€ ðj9¸Ž´#K¹¯v+í‡ @ "µŽDÜ\#冡 @€À« äà:ÒŽT,å¾Ú­´ @€�ˆÔ:qs�”† @€¯&�ƒëH;Rñ))wù(¬îÃ^›/$Ë“ÕtÄW‹ÅèæÛŮދ!Óí¸8*nÕ²lÔŒj:ê¨ãë:}­ºÌ~õظ @àÛ Dj‰¸¹æÞ”[Ú¯�Ÿ¿®}9íRõ×…ûSòçgÛÄWƒiÝrt¯�ZÖ¬%%Ro3ÔÙ×ô‡2bÙñÏýu=h­uˆœ&@€|K�\GÚ‘ŠïK¹S4œ3hýnÁå„:Ê%äõó4Ççhª¦Åûã8ÓÌÐDIÝûÔuéºú¹û㘨™¾9ˆ’Åi?Å S @€�ï(©u$âæšûRnPÿ.¨]é/0×þ(GÛãÖvXcñWG•²u�z  @€ï"©u$âæš{SîôFÙÿVÿý]ßÉ0þÛKÏr§¹ÿçwwåRÊ�v2mcúéE€ ð9¸Ž´#Ÿ�rÿþñ#Þ¦;µC楔;½7¿)÷ÿÝ)÷HÅ9 @€Àû Dj‰¸¹æ„”›ŸßNq7ïuå+)w ºñšRîôt·{]J¹]™C @€�/.�ƒëH;Rñ )7ÇÚSRnþP…ù¹îÿlo�”Ûz8"@€¼«@¤Ö‘ˆ›k^1åæ÷åJ¹ïú'ëº @€9¸Ž´#¿\ÊíÞ¢0%Þü†™Â³Ü�? % @€�7ˆÔ:qsÍË¥Üîáíqó£ÝùV]J¹>cá þ”] @ äà:ÒŽT<”r§wÛþÝþ‹÷âNÿéY´§ýLí|˜vØ7ç¤:ýÜ¿æç·S¾=Œ¸S½”»Gs† ðŽ‘ZG"n®J¹�»’r»Ü¥”ûÛ�  @€¾”@®#íHÅRî—ºÏ6K€ø^‘ZG"n®ùÃ)÷ï¿1mzƒÄ%läõ�ü#§âiÈtæ¿ü÷ÿ=ýÛŸÿê2öO€ ðu¦˜zÓkŸfSîTæ @€�/$ðïÿ{Þí¥g¹S� @€�/'p=å~¡Än« @€:�KÏr»2‡ @€¾�@—r§C/ @€o 0ý—kó}vÓ¦˜ @€À‹ Ì)×O @€ï$ðÿ$F)¬ endstream endobj 8 0 obj 46750 endobj 10 0 obj << /Length 11 0 R /N 3 /Alternate /DeviceRGB /Filter /FlateDecode >> stream x­“ÏkÓ`Ç¿i‘ V†N©^„þØ¡Jh‹¬Ò­íF]¨¥MñxH“´©6iLÒªÓÃþñâAÜañ&Ч�DAÄ!»{Ÿˆ [|Þ7&ÛÁáÅ'$ï'O¾Ïó¾Ïó¾’ßUÇé'X¶ï6æÄËW®Šcë˜ÀA¤‘À¸ªyÎl½.“dûñûôé4ËulTÿºú`ãܳ•éwç7®Mì¹']š2ä8Ô ¹È¸²Âø–ïø¤1k¦ªß#θJ£D¼J<Ù ù%ãvÈo�´.‹ýB,ÙzÏãÄ3ºáiÄEâŽîi1˳mYÊŸd<­9.Å&?g}¡‘l°@áÛä¿¿ãSiÏ© GvùN.SG�ÂŽn3Í{%¤ßz�\–§R.°ïgl’vì°åÁ¯GA°µBs¬k7µ¡;âZ*Dxüë=¬9Ì|¤Èøý�þp•> endobj 12 0 obj << /Type /Catalog /Pages 3 0 R >> endobj 1 0 obj << /Producer (Mac OS X 10.5.8 Quartz PDFContext) /CreationDate (D:20091120221508Z00'00') /ModDate (D:20091120221508Z00'00') >> endobj xref 0 13 0000000000 65535 f 0000048190 00000 n 0000000167 00000 n 0000048057 00000 n 0000000022 00000 n 0000000149 00000 n 0000000271 00000 n 0000000360 00000 n 0000047314 00000 n 0000048021 00000 n 0000047335 00000 n 0000048001 00000 n 0000048140 00000 n trailer << /Size 13 /Root 12 0 R /Info 1 0 R /ID [ <529b7a100d039d6ee28fa5da384a7825> <529b7a100d039d6ee28fa5da384a7825> ] >> startxref 48332 %%EOF ipython-ipyparallel-14e3c43/docs/source/tutorial/figs/mec_simple.png000066400000000000000000001430701520071063500257220ustar00rootroot00000000000000‰PNG  IHDR¢g®(*iCCPICC Profilex­“Ï‹Ó@Ç¿i‘]°,ºJõ"äà¯C•ÐÙÞºÛv—º¡–6Å·4I›j›ÆIZuõ°ƒ7‚ ^Eñ´'APqÿï+"Èn|3c²{°xñ…Ì|òò�7óÞÌéï¦ïSF^ÈZk+êµë7Ô¹mÆ1d‘¼iþr³©“d†ýø…ÿú|�Çš!šå^`4! äHp¼/¹Ì¹+Ùà|'ôCÒ¸œ-×´‰ç˜Ñª?'^èK~͹+ùç©Õçc¿kž=ð€Ô<ñ’íq™¸gÖˆ˜ÇÙ�Æ?Íù¼å3›þH|š×…z²ñ ß#ÿÃ}ŸIëxIU8yÀwvX<¼Röu;YQ+%û>èò"œ’aÀ¡ŸQ´CÚ¹7À.‹¢_�£h÷ͱ lݶ&l*´”ˆòø×·ÌYF>Qdb�þβ.B¥O·cЩDý¹ÀÑû@ä/#U(į¬!¹�Lµ¦ëj;_ÔJW…ã6£á„öJØ"µ¯Û¸B}–Þo~Ø4b¦íZ̽Áj=fÛ¬Ò^Hý†[iÄÜc«­˜oš—y‚"¦ãuÚ1ûCqöÿ̵’è� –h6\ƒ'-4lÒêÄ|k¼žèm§š¬Í6ø}úAXOÖ�*jÐéQÑFEh(�"Ë3I#päðd©P¼Ôy›9³É=-t®Œý{lÐwCu™n¤“Sëžu1§æ5­„ß/¸§jw?*@ pHYs  šœ IDATxì½”e×Ußy¤xñ‡V¼5ÕÖ´“<¬b—ˆ½x²TNz†þ�ÉÔ†PYÃLµ-=‡È.JØ"�Ò@‚PQÆ$.1^¶ @5 ˜Ò2n‘kllY•P6.#¯tËJð kpO«›¢Í³ gïóãÞsœsÏýñ~U}oW¿wïù±ÏÞŸsï{ûí»ï½7Ývßà €€€€œ,7Ÿ,s` €€€€0�—) Ÿz᫅    'ƒÀ{ü€vsÉžù×Þ}2¬‚    §™À#�IíËŽ¢zÙ9ÝÜõ#ßf·+\ÿñóŸ Û €€€€À xß‚§>ùŒ2¶lû:½"¼N7—Z¼é»¾;j—ZÙܺػp>zýÖW~]ªÁÄn>úk÷¿F\þå]ü…‰Õ±aÅn¼ó¾îû&ñ•OÍýð q    LàŽ×-¸Ú^znßUU¹Üçæþ¿uÝ%÷�ÿøÕF¯ÿñ?ÅþÓKó¦K/|ï|ÔóùßüÛoûl´5‰+?òÃWßq{¬ØµÏ¯|×SÛ7₆×nú‡ÿçïv_#þø‰7<± úûzåçîùúkÏ>qç¿4WM~ëw¾û5âOžø~åg‰äÁÐ@@@&†€ò�mW8[’UÖçæÞug'Û!·äçÿÍ/ªrãã}fõ_|ïE*›'‹¼Û7>õäƒÿôê;îÞxòêöòȵtô…Oý‹�§Ô¨ÓÃrô”0"€€€ÀT°]ÕHaO”Wµ¡^Ô†þT÷—:úÜÜhìð•÷t‘â¸/þö¯¾í“궺ë{~ñ§6Þ8£6^üì¿}Õøµ{ÿ—«�-¼âÚÑ‹gf^Á‡ÿ%ñ®wÎñêµý•Å_ûP÷^üÙ…3׎®�™9Ã¥/<ñKâþwʰ+7øõ'»ÿÓó?{·¬’�>ûø·>øGë}½«Ô&êÅÎëÿñ+Bü¬ÌUàvþå¿\»&n?së­Ëoùþ>z÷™k_Xùw³Ä��>ÿØ#®}ö£ßöcü×oúÇÏ?z—¥á?±%î¿ð*áÚïýè?úÄo|ç÷ýþϼ>Ò� ¿ç¯þ% åÒòªû÷_Ý/cº�ð¦sùëzǽïUâ+ÿþ¶ÿýÖßÿé;-i_\ý¾/×'îÓ™¿üíùó?ô;â¦ïøžÏÿÔ�g®}ñ·_¼SñM÷ÿ‡µû)¦KöÓòŠ7ìï~7w¿v°ºôï(µûm?ñÏ×ïùzY'®=»õ~êÏn~ÇþÁÛÛâú_^›ýznyýKý“þÓª^A@@@`|"OW©�ë.§´+¾¡Ø ¹ØÝ¨ÀÞ´×_ýwØ—½ú§hþ?x�ÄçóåßúÞ�?/^ñƶÿc&2yæúÅ¿÷#+Ÿ=bî] —Z¯þj Î,¼óýF5¸ãŸË·ß¿ðŸgæ|Â4øÿú¿þ-w¼ï¿¹ã}·Þñøg®‰3oü�_ÿG¦—øÃŸyíŠly÷;7?øåãŠçŸ~…*ŒZeVÞþæo!÷îÚ—ÿI]õͼ ëöiÂo½òÎ#±gÞøžß~¯é|æèâ]øÑÏ‘ ¯ºÿîçÿî]xâ+dÂëßù€i@Þí]üÑÏý%~à_}ÓÚ;ûd�`÷Ço{Ã~׈°Þ¯}qõÜO¬>KÒîü±GÄ{ú"Ä׿éæL—ïûÎ9Rþùþo½ç=Ÿ’CPÒÂÚÜwüʿֽöžG¤n�w¼CüÍ;îc÷+Ï|Ë=ÿë/}Eœ¹çÂ'ß�òÇ�½ñ§¨PÌ~û… Q!V@@@@`œ"×6ZñkSàæ’GK÷¦E¹¶×3ÌÇ8F{yŸ3tß½H¯ó ß©Û_»FÞ”Z^üê5«ÖûµkÒcã’k_ý¿¬ ^}Ç/üÄ_\úù«—x3Ç­åêÿ½eùâ?s7»ª—?ÿ;V‹Ìê™»7¾¼®|ÙùÕtõ™¿¸Øyèlç£â.)á {TþÁ/ü1½ÎßuN·¹v=2áÚWÿ\fÞ~ãÏþ‚ÊμòïfjtÁ�zÿŸý§ŸþSþûÑ'îqµÒåŸø3òªÅ™³¯O|…ù¼úïý¸øÆïú6 ÍþÉï>áèûâ‹¿iýõ¾{ç_{·z@Å]ßÿ«TBOA{ß�üpÔοB7Ë>M¥9DÍùxé†QéMQv€,‰7e�tgî`zFy¦ÄT¤ÅÅñZ,\ª 6å«T‡šÆzÄx“ëÌ�ª‹Ò)najuÉÍo”wZ�w]øuYg˜3VDz´&q�¿¾ç<ßi�.A{ÛÓOéZ–sóMßøQ¾ß‚xþW~ò|¨oúi�Ö›µÊR’›¦D—²|^5­x[oÅ-L¥‘×p[ùOvS/i„,.ÓCvÔíùM6H½ÈbÓS¿ó›ùoºñ´oòšÕÈÔ˜V¼­¥è~fS¿su,”W“›r+îJ›Ü:Q çÝ”É÷¼î)»G/¼’VŸ›Xòe�¸DoAf“ûdûÉ"*VKJhª’ÚX ä–%ÜÔZE«M�|�_äàR´i ue™²’_xÍ?î¯éVÔÔtÓï©~¦ÔH¥wµp…ÕVnQº 7HÉ­¸ÄTš’”.ñ¦”—îœ_ËÈŠäfi³%©~FšìÌÌ’R‚ëMWÝ$ÕÂÔ]LÕ�«MSY’ÏuVÙ4õÂ-¸k,HnÆýÌ&7RmS%ÉMnÃ%º4êcmgZ�¤d[K5––A˜)Ѧ)ò=ï…eEzêÖüfþëU9$½ð»zã5«‘©1f¨F²�Õ�;éÿºAª2ÞäfIa™‚R6šaãRêKŬڤ‚¦B¾ÇÄ´TKQ)Æ &eø+¹©®›'6s(kdkâišÇŦD‹¶6y4ýßtOŒŸ’azêâÄf¦Ÿ®å7ó?w ®Oš¬·é1¼áO5ÛÝÝ¥‡ý–j=ì·B¯¿ÿu@zÓÓ×hÜ‚h®2¯Mà;^ûº3�ýâ/».>›hí¡€€€Àôˆžâ¨zÙöJlµ^‘J>77zèCÔ+¥üÍç>ñº»?Á]R?…JI1�ÿÖîÅ;Ï]”?Àô¯0UCI wý÷¿ýB4Íñ   C!pÏ=÷”’[¶½^­—­˜ÓÍÍ&!ØÝ°    p: ¨¤‚aÛ^”Ð;- ÛÈ� äDs¿ðÔ68D�€€Ài"`=‰G›�-9M<`+Œ�@Ž›[3Ûw|¶`d�ÓKà'ò'í›3丹ĆnÁpz Ár�i#ð‘?šR9ßÍ¥FðtS¤°     02!€ˆ”y֣§›µÀ €€€€Œž=¼,dÐGy$·ÜÜ\,(?;×¶¬6¸¡XYbh    0àæNÁ$AE�²àæ–%†ö    S@nîLT w¼n!œÜÜpVh     06ÊÇ ÷táæŽmª00€€€€@ Û»µ×=Ýáæzà  @@@@`ü²~m¶$«%î››e‚� "Pê‰h‘ÞˆæF(°    prÀÍ=9s K@@@@"ps#X89�›{ræ–€€€€ÀI"ðÈ#�Ô1nnzè     0ï}ð5åÂÍ­ ÝA@@@š'ðì³Ï^þòçç_{wàkVäæf™ @@@@`̽ÛÈΪ 77Ë%    c&ù¯�þnV]¸¹Y&(3�@ï6ò†³êÂÍÍ2A €€€€À˜ Dþk ¿›Unn– J@@@@ÆL л�¼á¬ºps³LP    0f‘ÿèïfÕ…››e‚�1ôn#o8«îÈï›» Ä[�/ ñ˜Y÷¿?$Ä-¦Å—„xÚ¬×{_Ú¸Øë´”ŒAñÂz=q“Û[z4" y°¹ÃÍó+;㲺µÛmkJήÞ1Jö¯¹£Ñ8�&A5€€À¤ˆü×@7k�×Í}@ˆ[“]® ñx²¤ÚÖ3Bìçõü´oâ²w$k“›¶‹œ¬¯²µºÕ눃ÍÅq¹c¶ã¡õ×~•v9b£Âý-ÙuTm¬à$®­_Xäß-’H%ýޝ*õk¨S³SF£1“›U¾!¢  0]½[ÛNèus•G«œK—cš’WyóýBlñ!^¬,¢\ÇÕù¶8>Ø_ÈÑr<ò‚Ÿ‘kËCwwKœàhs¹™~ë�•óãÛ/†o^Þ§Ðä< (˜ ¶ÿ²žU}brsÉÇ]â-Y ‡Yrte ¼™�•íƒcÑ>·±4L�    “D l47«»7š›m•P²ìWåÆíòõ¥à,ÛHBjå¦Ôv™Í· Aj¼ Ä“ezå¶¥L‚s×7Ï_éš¼Î(¨JÍå™X�Ë+¢ Õeo¶×åððæ¶Xæ„ߨ:w˜r…;WŽzbÆ(@‰VÞ«9;Ü?ç·º»»]5DB�XÒ3-#c—4—âÌÚ ’—ìdƒÒêiçjØÚ9ɳŸ.�Aúe¹¤)õòg¹@Ã;�`²ÝÞ5•½ãË {\ŸY³:$ÔS ók�&×T>£ @@N/��®Ý&KªF4—<Ë— ±&ÿn‚|Í©Xèk[.䔊6ùƒr¹h…J[�9‰ýEZ6ŽÛÝ­Ui—üþ¦¬WµôÔW×A]È9¦Ö­¹ååÙ=ZíyÕ­ &KgÉÇåÈóÎÊÞ@´æâ¸îj·Ó:>è¯SÕy­±t¥´šv¢C»ËÞ"Wô­Î²±Øg—´¬7»'¥%z™¥\rì�OÍ>“B+Õ°’DyU“¯†_`�–ÉF”J OazñÎ2U¼›¢Ó3û†o®ÉÅS™Ö,Úæ�»;C çjÙ {¡Çd/^69³oÔP>²+   ÀêGsk¸¹ÁUÉ»¤ÈUéòŽkR(ˆ»ÊÕ_êäëYþ qÔQÄmgÿðXÌœe¯’ýÉA?ºÃúêo% öÔ•l-qØ_§è«ÔÈëÒÆ²veIÜúå„ŸË Æfè¢ÁâО2Û– ìâ®6ÚîU4ÕG>nÄŒŠÎµ¥O®º¯÷3?òÈËÆùj P´Dƒ:o–c¼r¯Ñ?sŠðZá]kg+¡’Ý”qP<6Þ™wVVÖí%׋ðæOJÉAÐ@@ìHmÈzVLÕ¤’ôµ¬´“Q2¸ùÑ…9ꂵ�eàà:…lµ¯(â+Ôeºo@Í’”¿Ê‘æœÌò Ïõ:ÝU±CJJ/—B¹AKn"r�]*ˆ$>ш}–§ëÚ³-¾Ü¥ºh±ä‘W s•'þ£QYñβ¥¡J2á_Gmúr|0°FOì6Tî6Ùê¸Ê8{�»C€Ì"¼–ÉÒÐ@@Ê(Í¥ö©j¸¹)IØl–@ØL‰¥ ßr§Ã)ëä£R@­9·&5R�MR‹ÓX»7qlQÊs™Uy°ÆVÖdÜUnKÃZoÃ@!@@ ˜@H×n“\#i!+ì—p®eb·ÒN:‹ã¾£³]&èò9qòrÍYôʣϮõ œ«'©’Š2’Ù`Îró+sLtŒr©¥‚#Ûmd®L“9á�ÏW‚6@@@ÀO l47+íD¸¹tõÛÚ�¯�S¾¥¹�Ò¶ºvšiì0K8K–rºm댷¯¬«SÏ.¾â‰s¹UÊfÊøèKEM½JZ�!¦Ú—ßl\`y²=ì\ê:xËN%…÷e²³Åwic£NþL ¼å•Ï‚D €€À)'`GjCÖ³¸¼I XOA£'ôÒßUë²³¬°:%—„˜7ý_!Ä ¹NwÒý�)÷;]º&è>&a6¾â¨ªb|{[w¦›;pÂjèb• +ø é…‚¨tk±HÍb‰5ì’QË´‰m¥MÇ<Ý‚_!va²ŽÃMNˆ�6<Õ%pº¥¾/Wñ¤9{ECºV\¹ÔÕw›ÒSÉ·ÛØáÝÊÞI•¾N»v’·ÉK‚òàua0åå•7=ñ  Š@Ùhn67WÜvßÃôwé¹ý7nÐ+ý­­­Ñ툆…˜ž©¶&½VXTß{+ô¥Ž/7—ѧ'¢ñÒÐÓL·VMwé¬�?ÄËæ�èôâgr¹«¨¦×!?A.,0îdäæ½“{±»»,öŽ3µžªLÛ¨ ¢]QÿìJ±KçÚÙ~Î7CêB•ÖÄ„×ôt)üvH®Š@·†Æ4Óܲvw/åãæïQNL¨8±êGs}n.Ý¥5ö¡Öûäe¶ç•Ÿ+�¶A_»J;+{Ñš[XbΞªÕù6…N�Å[�nä8»&‰ù5w¸¹x~e�iá©Ê´µ *ÙeõO¯«±´±Üi úýAºkþ¶‡!;¹Ý6yƒc¾„2¥Uz4\Z˜k‰Áesb[î7­Ù6käëÅ?¢�#±G•±mA@@N � |}ïƒÈÚ]�´�íÀ%Ê“Ù3žŒ`ÿUösw„trò«ÎΈãõTËÎþárgî,9ÇÞ{ë{‰à©2ƒ”z÷ØåS±P�Õn§u|°½.ºÝŒ>2öIµ›ç£g÷zÕ ÖÔ8BŸ‘§ÎÃ'fY%…­¶fÕ§áΕ£žú=$•´šZ«RPØnã#oô™€w5�Z‘äÏÂN¨˜˜îDM¼áÈÅô³o[,÷:-n�’e«Q­—TÆHYˆ  膌óÈ#�ä6óEs“Ú³-q|}À…Ö*{Utý€B½2dç©âž:¬Ç«jÉ˜Š‘½[[«i»j¨ÃÑRrr#/¶P”O v �®´)mA/ayrLÊ:ÑKœ|"¢”èÓP¨¸¿«×›*ôìéå©*Ä5 ¤Kj²q’ù=T%£ï:Q‡”%ç3þIãPÞ#�zPˆ<ÃA2eÂP4�ì’ Gš‘ì5»§õhu–7äÙçéÅU3›²'.9ÔE1€€ �Es ÿ\ƒ‡º¹ì«Q,v?[ãocÎ(¸�}~o¶Š¢·”öpÎ|»Êù.µFV^Ú®²š©õ{N'—KND¾ß“e(Gowç/kÇ#éåÈÚ|�œ¨õ9&‡×v�ý}çjÈlƉÔGW’;�ºð+x·ñ ?!u­�.„X¿@þ ÞÑUÛ¤pÈ_3|ÿxÊŽqWT*—ˆwµãƒ¾ ¢S3õsC§q7ê¥S]Ö/S–‘J$‘™$Ž^J`‰hR9¼€€€À¤JZPç-ÓÉ…­ÝEz¤‡–úâί"÷‡Â�ÝÞîn�̧¯ÖƒãÓ6{Lê4¬d“WEU,°´]¥UÑI¹ç�ëQB@>C`yT”ÄÚÝíÒO‡u§�rge{�PË债zº4TX9h9à9åKEœKìêEzzª2Vx•èÚ„#ìÇ«ùà:ý “n¤ÌÌ鰯ɻ»¯b�qû­žrÕ'P6°~9Èé9ïpHœ½êð22�ÌŠ ³jºã^s÷’.z~§¤l�€€Àd(vsÉYà@®�<*¿Å;|Ïã¿É“Î2ï–¿àUD ‘ÆJî�õÕKNpÞ·pulKÚUI�()·To^¤œšR"“�•k—¹:ú4”ñq“Js*�^éçùzùw›XÕ2kåˈh¨-§‹t¥,¦!Á1ÕäWë•   0YŠ’è.€ê'ΪË3¥ÖÕôbI^]Æ žª´á³Š¯ÈO×y»¬]•Ôa U|MåÄÒÏ¡d£lÊ<¹>†ì*šÓÍÜ—É[¿òÄeˤ^:LWI OCNçpË‘yµxzyªtç ~K#TRµksD”œÈh ºA†O`šƒµp7s/”t3÷¶»ýÒ¿©To¹Û¸¡@@&�€×Í�Î>§¿œå ŸÚ]í¬©3ó:ýÔSeÙN¡TymKZ°Õdˆ«Uìª¢Ž•+ýJÙä �h‰íf»‰LYú­Àwhóá�œU¸8JÇd%ó&”×áV­‚Ë'0ÑYox4”>Z|£8už^%§zzyªòÆŸ¨²¤îê–oV¶kyÅt  IDAT׳H`l½<ôÌXò·B´ÛÄ�ükž^2…Wß(P3iQTÊ‹÷W[º¶A@@`TãÊJéó›äÁ ʳÕçb'=ÝUä�™ô[J‚X L'M|Á¶Ô�:‡ÂSåXÕ.·ÄJj¸ÅQ�›!Umž½Ø3˜‰d·H‹¼ò´×ã¶•º5¤TAólv�h�‘zírîQ±®ã_K Ò,;Ǩ˜Jps§rÚ 4€€€€€ŸÜ\?Ô‚€€€L%¸¹S9mP@@@@ÀOn®ŸjA@@@¦’ÜÜ©œ6(     à'7×ϵ    SInîTN”ð€›ëçƒZ�©$7w*§ Jƒ€€€ø ÀÍõóA-€€€€ÀT€›;•Ó¥A@@@üàæúù @@@@`* ÀÍ�ÊiƒÒ    ~psý|P     0•^6j­„x«ó%!3ëþ÷‡„¸Å´ø’O›õSø¾ºµÛmk»ýÅ ë)K{�–È«Jµœ¬Í"»<ÚŽÒä�UDcDjØÐY%‘³ÃÙmšXצIQö^œor¨Š)±öðy» Iyï˜U*óipé(vˆ*£€h^7÷!nM’º*ÄãÉ’j[ϱŸéyIˆySøq!ÞmÖéý1¹n»ÈVåéZ]¿°Èž­üÒw[~|}à®,S#Ç9 ÷n”3r|°y~eGŽ“ÿ™UÁoW€i“mB gi•¿TIz¬R��/Udéç§a$4¦F!^jÐm“~éUF“ÆÞW·zq°¹¨÷žŒÜ´Éa 2b‚ Òcu*ÓhÊNeí¶ëýƒs½îî–ÈþÖ¶ûa@ÆIÀëæ*�V9—¹Žiƒš“�KËMòõcB¼K®Øž®,ÀK!��•óÊ¿,l9Ä­¹…%±Ãz¬Î·‡8Ží6¹ùpœ{¬ fJOœœGíÔ-mlm,í¸¼„üFÕHHÎÛ`ß³E,ƒTË\Æ»ËñÁ~ÞD�ùF%µIo9MV m‘ªD#±+ ŠüŽžÀeZãÄv¾4Ó$¿Ö©a^–ºÚíÐ/—íu3‚|w ”=ä!vþJ×d‘Û´ìsöÒÄ(f#ß(Sëy¯Ü1:&QŽÏ�ïÖ”hÿ^Q)EÖžnïæó¨�éÏvØGŠm—�hƒÍ?`í^ö”(ÓóÅjfiÄÊËÔ…Ž<ÚãB¬�€À¤¨Í%ÏòåB¬É¿[„ _³ÁåBüyƒâ’¢Z�}cm·æ–—g÷hE´ùsšý}²(—þ M©gªBÕívgè³Z¶ÅBT%û6ùBz”‹Rýxa{Ò‹Ï.A'-�7-a™Èž1Üäå©ÞDF§GLP•{¬ îù�ä¾Xœ¸¡¼¹‚À7+˜t™e¨Óäˆä+PµÔC£ÚQéWDÝr€>;ÈË�¨K#Çrî‘BÎ.í§”ùÜâ0rÁâ¡Qг¸ZfúX‘ýâh ##01n®ºW.ù¸ÑmÅÂÐÕok�\']�èz™¤2QÓ®[ÚØ(üvQ_E‘פW �§Jc%ÕMlùìJ4Ìnx¿¦õ…CVÎ+û-Îo<¥†ú!cQáÙ©^5²Z×))ý[Æ7˜‡üÎÊ6»(Ö•[ò¾¹>iþ:ÏXþŽ^g,•wš+iic™ïÆ�¨ÏmÄÙ {‰»O©;ªõr+*öШxTŒÈ è<]Á˜ðÛ+ËáG p‰Hjþ‘â¡Q`Vau2Ÿ½°9€€ÀH x“°ž‚FOè¥?ºÔ,ºì¬Y=ÏKqóBܰ䦞…fÕ i•¾å ÏÍIk&:ÕGu;|¹²©ãĸ!©!szóÇJ¸‡ú¾A:EÏS峫À†õ ›géðÆêuË 29Ä©Óó+Û F)½I7s›Õí=ÊËùjõŠÓXˆæ¤GÌ{#GŒ•ÈXÙÄX\4Vž<™˜Zj�R ž±ìHÉÙ©ó�”¡ÑP^nÙ‹Bx¢ €4@à¦Ûî{˜Ä|ê}÷οöîË_þ<­?õÉgÔmŸQç™jªï—„x:+% P›€ô;w@•%ö Pk�1�øßf-> .9óÈPèkñMrÚœ°"ì'lBaL�KÏíGÞ©_7å»~äÃ�FíUÉÄ$-øÕG-Œƒ€ U%Î �C‹±�IB¾ùmtÛ±+4‰ ð‘ÅÁv@tzµ¯¤“2ÙÜŒ°’t�áð&- oh•þì´‡„¸exÚ@2Htf·M�K¾|Ý)Nt0-Oô»&C×:ñ-³°Ød¬› Nۮ©Õâ?M~½=íX˜#ws÷… ¿²Ëce; =T"@Ù£ðãrÉ%ÈpÂin«SX˜sŠì?­vŸ¢)†© p iá$Ì"lH€››‚M�“@nîI˜EØ    �"77›    '�ÀÈ/A; Ð`Ã$�·îÔÏS ½ØÝî?d’¬Š.ÚìÄp‡2�°cR†ÃRA@ ¸¹æ^9,'ýåhÕ¥¿ÈÜUö×_Z WYÏ7´§Ê%ÒR°Œ].q²¼@ =d°Ñ–Š^«ÔR&H¨ÕÕÈR*NJ˜Àô}–ܽ„§Ê26o5eP^“D™¹Q€´À>ÎY®<)Í�ƒ�“GÀ—´ÀßG¢¿¨–þ€í¹µjÈï*ò®xÙ<�^|ëxwÕô:ô,w2róÞé›{wwYìgj=U™¶QAE»¢þÙ•b5–6ε³ýœ%N†tŸäÒÐ ;¯Ó‹q d߲ʤ¸GKéÙ´¬�ÃÝKù¸ù{”ß´ÑÕJTô�4=Û¢»±4ºÑ‰IÒ}œOéòì Ø   � àssÙ¥ŠïIl?íyåçJ§mÐו;+{Ñš[�_ùžªÕù6…N�DØêÐýæ zÒ=@“¾›™†žªL[« ’]Vÿôj±KË�Ö Ï.iÈâa˜ê®ZîÝ¡Ý#°Ú¤xªgÜ_67Ÿ•ûMk¶ÍŠûzñÏ€hçHìQ)“ǶÉwÃO(wV.�›²“9°g˜L…¡€€Àt(HZÈ7Ny2{Æ“ì* Á~îŽX˜k‰A~ÕÙq|8ˆDîì.wæÎ’sì½Ñ¼ç&䞪h”2+»|*ª±Úí´Ž¶×E·›QGÆ>©v3ޱ…« ¶Ä–(*MŠOÃ�+G=õ{HîVSkUê¶ÛøÈ[f}•µ=>Øw©£°k-â$.¦_iÛb¹×‘ùÃñL{ª:™ÒÎÔ2*ªÖµD[�Vw—NÄÈŨbuH¦é¨a÷KŒ§6J½zvÖRòÑ@@’|ÑÜdËölËœ·V9¯“¾Q(Ô+Cvž*§Ãz±äLA\5¢5Kck5mW eT°Ä³îCÕ�±±ãC§çé\ 03™‚H’^ñ Tqr´äÒëÐY~Á÷ôòT¥ÇÓöýGWòÝ1ébšlœÅT~� ¬�ÞìžÌtàŽe+ÓÁYÅÞ¥p' ívg¬Ü‰>%¢(ƒˆR{tî�<¡S3´Èê B—d—|ž«ì*ÏE�äø÷XFNAÁäÏr�¨˜2¡n.ûj‹M¹T:´x!ûüÞlEo)íáœù’—'òÇN«´]e5VçiÝi¾tÉ,C{tKŸ7/'°æ¤äjÈXîTÖ7Ìí¥LóTÙ¶�~�]4×ÂAõ(áBˆõ äÆ;:åNG_¬_¦ô•Á¡„åWñNs|Ð_׿% ÅÎæÎÊŠièR°°Ü¡†<5còO¤3|ö¥ö2±³\Û2˜(AI êÄ%�vO¸T [»Š)ÉïÛÔw_~¹?m Rõvw{Ä€¾ÆŽ»sךõ©óº²€¾xãorݤÜ[±ÀÒv•S€Zë¤Üóü�|†±y qmÎZ¾À“’/Pè&pÜoÀsÊ—.Š(ª(\½HcOUŽ=…EÅ;@¡ˆ *�a`µ\§t±7›uô£¶ùUìSS„U(¦í‘Zá:++ÈÔÖ{ÏWC¦u8Ÿ÷_ÞáÄÀÏ.1|ó\bd48mŠÝ\r8�k{�ò[¼Ã÷L0þ›<)ónù ÞQEli¬äeZ§�ÉßÚi”~�À’vUR­´+*Gñá5jè‹y¿;L]æ½@`ùIñ ”ñqòqåÙršSù[BºJ¾^þÝ&cQPAÁ$#j$•—±Ìf÷Òh€ôŠA˜*Wɩ¡nÒÏ�èëP)xtß, A@@ ˜@QÒÝE€c8ýDdUžés6“‚–òB&ÎhðT¥uâ ˜%#]=Üí²vUÒF^c%£r*O•~.vv­;³å`¨"kñäH±ŠšÖa“R$оÃû6jñôòTÍÆü.54·IêÂ&2(’KÇLèì$…É-é껚¤ªé ?Ú‰òëRMkorZ ¹¶Ñbò|« žüY®jú�€L&¯›«NêçÄpä ŸÚ]}]uf^§Ÿzª,J•WÑÔýâ´D–X­bW ñQS “&JÙÔWÅv3‰ÝÝä „‹ªkÏâÜÍh@^©"P (1) ¥Óß(ÎvÈ=½5Ž[`µIqkH©‚æÙìÑ#õp«á¨ ˜€WN‚à©6çðy'T I³’>•Ï@´0æ©a ²~aó¬…_šÖ,ÓýN” ‰D$KB´J^iw·Ù+ˇzÔ2x%Iª¦°àQÑ@@à”¸é¶û&Ó?õ¾{ç_{÷å/žÖŸúä3êû)E³§‹{ptkÚDZM¨Òûó?7TÔÉk'áÐíàb²á¸0)'o€E  0r—žÛ�¼SÿàÊwýȇ�Ú«oÒ‚_$jANy ;;ïú4[A@¦�€'ia ­�ʧ”€¹ûVáyxÍG†%Í�põ�ºN):·Ù”aÝP¶ å+cRÜlQ  0psG‚ƒ �窖•^¥OÙ1NB{J¥­v%]ÀUúœȰ@@`h�´04´     0>psÇÇ#ƒ€€€ �ÜÜ¡¡…`�ñ€›;>ö@@@@`hàæ -�†Ý5AÝç9ó4¹ÑŒ2ŠÖ1~tYH'_›ÆúË­£eDKž]£ÒО~ÿC´sÍ8É…¡1êë®’3â·h·‰ä®¸ÕH ¨O#-1³--¯Ë<#u„Ä(9Ýn¼ÞY¡Ê�å6¹x¨‘ìÍ“¯hrÓÇr1ߪ- î´@†tÛZvú‘EV]ú>Cî*j„f¨¦ºî˜V‚;{ª\²-3jXui»\âdy�Zlž¹bóÕ°J­^AB­®)»*NJ˜Àô3ÁܽìçÝ¥4´lÍ]Í6WÃX`¸`Æ~ÖA® ê…¢ÿIån9Û¸Àê¶åõÔ7a�ZæÕ«²r&»å¨ƒ<¯¹?C�"YѲƒ¾©\vÿɶyIÀ0l�ôsðVÅN憞*ŸVa»�OB²®¢I!Ín5¶Ï7«V€´¥³3B\·N ^[½a¬×7¹±`TŸMnúXæÙŽÉ¾h.;¢¿¨–þ€úÿD—^9¼lˆN/þ订š^‡¾ªäÂãN¾ý•,ßÝ]{Ç™VžªLÛ¨ ¢]QÿìJ±æ ÃÙ¾¹%N†´g%—þ@ˆ€ÃÊ)�}Ë*“âhvT¥g@·O�æÙÝKù¸ù{T.¢€Âãã™sK ‡Þ„|1Â?N¬ö€� ¬­QZÀdk(÷zz›>˜¶Ew2v”4űo¯_ˆöüjžžª¼æÃ*›5ؼÉÞç}@Ç-�’w»Ž¿èÅáõÐd]u“§v¨nr“à‡&Ëçæ²KuÁüŠ_ï“—i>ï¤Ó6èëJú-0­¹éPxªVçÛ:5Y`«ÓÍýµÍ]ÝâG¹’‹0°K座*ÓÖ*¨d—Õ?½Z¬ÆÒÆr§5è³K²x¦º«–{+7Žõ¬6)�òQYƒË‰ý¦5ÛfÅ}½6ÎY;Gb�J™\bóèðPèݲD/4=ñV·ºíDwgåBÑ1tâ¡8 ”_€ù¿=UaC)ž5†bÛH„FÁú‚¢Ã‚~ú™/iþâ…É#ÙïF7HAÒB¾"Ê“Ù3žŒ`WIH‡bG,ÌµÄ ¿ŠÎˆ"‘;û‡Ë�¹³ä{�4�ºY+ž*«UøªÇ.ŸŠ…j¬v;­ãƒíuÑíf”‘±OªÝŒC}ájD‚-±åŠJ“âÓpçÊQOý’û‡ÕÔZ•ú†í6>ò–Ù¹«Wöç–éç×NVˆüh×�¬Ô*±kTƒhvÛT/»°ÕÝ¥3 r1Bmq¦LKˆòm’=¨Æ¡‹ÛbY§ E&Eª¸W, ºY2)AI¾16:WÃnµÝ5¼ãìgw ÕÅÑÒß©a1^/«RãµÈÙ£HK«�¥¡Tß®¢‚�,4/JrØ,š>�8×ã_‹Ù£ÈSeïÛAãIÕ¬¬¶Côc‡Ë¶+Þm¤’5ì^Ôv`Œ²Õãr3µ?w}so¶G¹z¤¶>`¢j“ §ÄÄÅž)Ømøì¦q*}&Ç*ʱm»Rj�þç¯tM²¡]™Ømb�êp诓q3âèræ°ðàµ1&gÙVPÑÒõаCC{Ï�”Ôs?”dçXTm×Ù,¼j¯ÉjÐô«k ·òÒX:£ó«Ý‹öˆþÙ8·3ÿÀM¾C¿É–qÉiNSPÛR…’;¶­vÊäüAÊ”ú¢¹I9íÙ–9;n­òÄÐÇÑ…zeÈÎSÅâtX/–œ)ˆ«F´fil­¦íª¡Œ m‡G‹BÕ�ÁÑãCç×u¤s�ÀÌd "IzÅ+�>"(îOþž\z:�Õ縧—§*=v©m åœ1à£Vèä™ÅD:íÎÝ6}ÊEFßiC}™c×Ô™$u¢ŠRw(§Æô´"|î€Y�Ò}ukYlËZz‰“x* ti¨†¥³‘½Ù=9g’,�¥'R2¥Yk¹- O¿Püç‚lžo²‹<)™«a�Ò�M™�xt%óu.ûVf˜«<‹tïl².o�É�\5¥b„ž=*€Fñ×y7wU»+OÂÑŽ Ó–¬³à£åV{Læö5Ü4|³LIž"í¼­¹ååÙ=Þ‹ÍYLÇË*xöyǎͽ< ©Fã S? Òßc¤{»kÐ;®Ó—7Jò§pÞâÀKM³œ*ù)Êò]zðºúƪŠUt›ÌµyKáÀç¤i‘)žrN²ç,UØŠ~p|ÐøIòч9шS“_mÔÉùŹL&ˆö‡JØW t,‰ ‹wìb“òBŠCÝ\öÕ(›r©*ÏÞ…ýÌXÙ*Æ(ÚÑé/y"?ÓmÔ¥í*« :QïN+P³ký ³È2´*…ަÝçrkNJ®†¬�åâdŠÜ^Ê4O•m{ø:�2_R¦OÉñ}˜¨E¹å*ýP15²f†Ï7ÐÂAqÊ }­ÑÇw¼7+Q%_×/XóÎ'Ê _x(Ò�~‡ëïÊбt–I¬åÎÊŠÁæUÅQé!/{”×Ð1�·ØõmÎ�j0ÌWÞgr%¼�ªÊ÷ƒÚ÷áàf&¿�ÓG‘jî¬"z·±�/÷¾�ɺ[ž³<Ð×-qØ_§³S‘n•Øü}#’›·bÿòOÔÓ Ûê@—ŸîæÌ)�v þ,“àüË<òðJ�ògÙó)ª-É×Ð�7Ÿ¡g¬ª ¤ŽN“s¼ƒR߸êëF~ÇiuV7û^‘äX ýa^°có ÷W@®É ‘¢7�}�ƒÇK‹Œl¬>(i�ñ9œäèÂÖngF˜)O Ò*¿Š§6IêQª;µ$Gãà¸;w} {±ƒCðf‰§Ñ””}/XÚ®²*PLX&垯àä3Œ5à=ZfBÄEþµ|�5&%_  6ð¡±x~ÀsÊQO#\½HyO•ß4_-} ìªÓŠ�3(ÈÝЪï2ú Zît¸9Ï#öSg¸ÃÎ# IDATö¦9½s¤=Û¶Jʯª=0î7ˆWK¯j˜ý½Q4“²2�ŠšÖ{È˾å5,²\ƒ: ó•÷™\ ¯[ üÆÏ×¢…lk:ˆº]sX$«U–2�I:[;É®¡[n“c 5<4 f9võ¤‰ÓX‹F¬²�~œëÉO©ÔWa!�øÂŽ FÌ�I ErÎ}Zç�È òwË.k–ÝŸ¢Úd‡†æ«#3ˆW…5–Uê«*(-Ýa²5v‰UKy ”Êà@:ßÉ„wËA})n Œ[ìØÂÁ0�c2Clò+€v%׎©ÑüJ±›K;¿ôqÍ�sÒA~Áw8«Èøo CåÝòw¿£ŠzÊÃÉXAwûˆ4-j½,iW%UJ»¢r^£†þ‘•åšêä{�Àò“â(ããæ×:}ÊÊ/ù éëåßm’æ”Ü¢Ãê"�ÔÙKt3 & Íg\t冷™i^õ]’‰Gàͪ¢†ÓO�ÝoXvlpƒÅÉý°ŽÛ<’nè0¹:^‡À²z•h/¿›èLÜzöÇSe �ûµlÕ­š¦FÑ0ÞúѰêûKúžü“<áìÒȳÃ'�ÛÓ—8²¿@ÞnokuGÇý”¨0¼ö,—þ­�×9V%P^˜ÉºqÅ7ËK'•ð“»;Æ%crõÏ(·Eûa^ÏGy$¯8´¬(i�î"À-+hM’in8ќۥlhy!g4xªÒ*É/±Œtõp·ËÚUI¶PÅ Už*ý\ÐI«&_*WlCg … Ð(6)EãxˆúM¤¤{zyªŒfÕßI8]y6 Ýv¼³ ‡€è“1ZâOzî”Ì)�¿sC§ ;”ºpÓ:ˆrš”*j^Cy¾6ÿdu)Í¢ÆòQ›á¯È�ÍÜ&9\ó =&WÃë(å™SÔd—üøIÚW}‹¡å3SI}ñ©×ÌòÛáú Sî-�߯º…Ûd[DJC�г,y6xÀÚÊóºmrTG>�L茳£ÃhDÒ+Y�ºÏnª<<Ò½têfØ,»?E³bã’jx=cÕUlr¬{™59ÍÑï�(S€ÌMXpŽVqǶä¥"Qí3ÊÈ«�;vªW¼ùÞ? ¨�׸›µæusåÏ+>ûÛ«®jnLr»:3¯ó™¨|“ÕG¥õ�¤þ-y8$¾8x?¥h4]o˜‰™ä¸¨¸cÛÓ&|FÙ]ãuE¾ìŽ-ûç™üì³Ï~äÃ�†¿ÆŠ˜5OÒ‚t¦¨]|B€;i§—<8A'YõÉÝ„'쮲e Ï/fÏ­ï‰l}« }ÇS•‘بjWBHb£’ é 7Cj©>‡ú�ø”h·Àj“Âé'ù;E }K™]#Úc¤Î^2Ÿ%_`šM…m:üés„òjTßŒŠ‘’ªa¬;·7;wRwÊ-·Òx¸Ýú…Mº LÔWw³ðRd_Õª®;+Ûòô Ì¦¢Íë˽Yd–²Ss’ÕÐÎ{ç/™vKú1Ö¯ˆ”Ì:1I¬¹êí¶Kåø™,û„Éœ+˜Ü9b¼yJÙeù4ì%Öóì¢sQ´Ír‰ATSŸÉyjXä›ì¨:ôäEûï�‰=Ê’]~U2ý(Ý9YE_r”àÑĽ<»�:¢#d“n~g”÷˜l«’TC�¹4*Ͳï€õØek˜Z÷˜œÈW²ÄŸ6�4Rc9Úm¢å<$“x=³¬Æ;kb>ESZY›>¼V³Ôªo¬j ì’&«šÜؤoÇæn–•!!3è†DVÌÄè�ÿ `jsÞ+íØ 9i“ bù¯€j;¶Ô#ÇäË_þüükï.õš0‰6n»ïaú»ôÜþ�7è•þÖÖÖ(Þ˜n‡m˜Lô1�ІWÖ“E%eÉ’8êWYòt”AŠèyuS pRÅS4SIÃG¸Å»ˆcñT�PA¾×–KÃQª1…cññSøA„w”Ÿ¢Ã+Èdß|0q Çaå<´ºÚ&7¬™rMÃ_³Þ¬7i¡am!¦Œ€¼\ÛÎ4ž2ýÃÕUç8N.‡‹DË“F€Ï`:t=U£¤0!jŒÒ䆯29 ^qÕðŽòS´ñ±ª™ì¥˜¬äË„Dê.VÉ£ÞºÉ% *Ç¥¸oVüMÊ¥ÒO½ï^¦õ§>ù §éñÙ , 0ñè·p”ÈgŸÛ«¦8ý’å+£¥¾ÄHÔ¤®h€Sj©=ý§F'u œ£üåXUfH~@Y�‹dŧôƒ7²cè+Ç-åé’B)oI CŸ$     P–@”„ž· ZF)¸HZ(ËíA@@@†N îõgBÀÍú$a�²Je,äææÂÍ-ËíA@@@†NÑÜ¡#Æ    £'P?šëy<ÄèÍ)?¢¹X‘{fn»\^\ó=ø2Ë¹ÃøÖÞÍ�ÐŒD}½z Mnp¬fŒ¯/ųzªê�;ôlJMjí>'ÔÌT�)#p꣹ôÐ^6除�-ô½½[|£ìÀáè™"Ç#2%Œ²YÎbËÓ49g¬QšZÞ.ŸvžýÐSå“8%uê¦�›ò(´Ÿa]Aý“ ªt�SOàÔGs§` GVw»¹�Èœ$åù‘~�éS`r£c5¦4U °:ߦç�î7·ëTÐ]@@N*�SÍ�†‰%§O´Ïm,Mƒ® éx MnˆÜŠ9º/w § *ƒ€À~4ו0Gåç®ož¿Ò5ÏŒ*NËS]öf{ô”)zðǶXæ‡Wq¿?ÇJج2ãÏ~tˆ¥HÈSCÒý¹» ¡Öõ¬Z⢬^Ù§¥´º»ÔA.–ev/«˜Ÿ¤î¡AÏÎ;×›[X;À˜J.¶«ì±¤NVeDÃk²GCK–­‚‡Fñ|¹LvŒ%�F9Ìz§ #³Ô$flO–¨³õ´ôw ´Ûç̲”Ò’öYµd&ÅhZæÝ²ÊR^ZëÙ£rGPšç_z§w�%¥Y• ¼¹Cy %`ëÐeÉÂzJÉRŸÞÁP   p‚ 9š«¿ Tâ]Ðî&RV[�žüþR¹±íîÖj!iêB_Þ”IÛš[^žÝã”Ú6�ÏçlN‘xVúj·Ó:>èÇßϻݙ“¸-ЇòéB_ÄÝ6y)fÑÎ/�Lç™è›­•~}]«¥��ýÃãœ]‡¬¹�<ÕU¢áš/GN¤‡FÑ|‘“c©É"ÙÕUs :½x‡ršl\ªüIa�³{²®OÒË2¢î±K©! ücé¾¥Þ|³,\jøF ÍóŽ/îâˉ×9÷à…xÐÇ‚Z.†�±pàuŽ… �ÓJ ~4×sßÜ¥�síØÕ SNi ›|Aå!²S#fΜ—ì­È�fKö×w®ia|–Ûòs9åÏ´¤@ß9ÚêŸW©ÃÎÊŠöcUJ­µg[¢ìPµhH¿�úÄâTÃ7Væ+¡p¼á›/Õ*ßäXBÞZF”;”æ6™ úQˆ~ýB?™Bu¥Tx¶�7jNY¨¢±rÄø‹|³¬zæ©á—5©ãË7–¯{,ýse‘xsZ-ñêî(k*ØU Õ  '‘@ýh®ç†bì…qäe·g¡3~) .GÞfèUE±s)3úb¿Ožåît)²K2¥—kB¹‚õìECYÊT]Uƒ±e±cU$«& r³2¢9Õð�UƒF…ùrRñÌ—é“g²©Ë·²<éPOýpÚqïê¨�%lp�~ŠÅÞ¬%ÐjT¸šªp¬B©é¾Y–móÔà V6©Éô×ñ嫯•6)lÛeWXo´85ÊFs©}Š�ÇÍå–QÜ%Õ­ùMŠß-w:òŽäQ�ûiüÚ¥³3BØÞuc+¯\º eœÝ:4¤_H¢­GAiKóí òÕpŒ5 •€:ç+––gr\¼61&kÞÐ1Ë~¡¿)SRc�d¼)ؘ.õ£¹ž¤KŸhŸè,7y¹Q '3ÌùëªÃËïòtgrèl+g s¹`©MƒÏÃ[yñpY5§Cm«áËM#Üäïf> ÙÅ1_–8¿ÉVÃÔêÒÆ²u ¢ÓdåiÇ{èêV×Î&O MnzìJ6Ô[uÆÊ(¯ÒÕñUm�ÒzëëÍB?†³æ3D)€€ÀI&P?šëKZ 0£ û<Ñ…Ô]ÑqâÓT×|—g¹éÎbQZ®’Ç'iùBq£'Ôªš„«ï¥ÓmwV¶ŒîT´I·/›Õê%z%se‹õ ›gMW*Ð6×§Až9ñ2/ƒÇñ¨áËMÃc²´+ÿ%¡F’¡ì�OCUñ�Ò²óe�ã39;_³¯wµÄŽæ6™.…©=ÃJ ±É®zìÊ6æÏX†ž*ß,ç«P½Ô7–¯¯t8v8ûauÛÑ@@`J ”�æfssÅm÷=L—žÛ¿qã½ÒßÚÚ�Ë ò voK4ýjÊ�±d`È|…™Ì’·««�@@@¦š€rMÃ_³Þ¬'iaädV·84¸Ž¹~ Èçßst�=raóu¢L9c   §–@Ùhn”/i!Ûº¨„S ÚŽF‰ÓÐÉ6¦›Î7HVž¬->A<õ•›¯aòÔÏ �i#P?7w²’¦�?ô �( !ˆæNßœAc�Bˆæ"B�é#€hîôÍ4($€hn!"4˜>ˆæNßœAc�Bˆæ"B�é#€hîôÍ4($€hn!"4˜>ˆæNßœAc�Bˆæ"B�é#€hîôÍ4($€hn!"4˜>ˆæNßœAc�Bˆæ"B�é#€hîôÍ4($€hn!"4˜>ˆæNßœAc�Bˆæ"B�é#€hîôÍ4($€hn!"4˜>ˆæNßœAc�Bõ£¹/+£á B¼Õˆ|IˆÇ̺ÿý!!n1-¾$ÄÓfïK{�–ô/¬g*uÁêÖnWøätL÷IoçtA€€€T%P?šëusâÖ¤jW…xdm*oØv‘­Ê“¹*ÝÕ£’¾h„âøú Zo`…”é¶�6-Çy½p®×ÝÝwº�‘!@@@àt(Í¥ö)P^7Wy´Ê¹Ì:¦)I57ß-ý©åÓBlÈ5ÛÓ5•x÷ØY9¿ãoQºvu‹âÃ^I¦�EŽ»[«ëî¸qé±Ð@@@˜@ýhîÍ“ò-R©WO¢j§P§¥�smÊ�ÈsewVö¢MŽî)Ä“A@@†J l47«Œ7š›m•P²ìWåÆíòõ¥à,ÛH‚gåýžº¼ª· Aj¼ Ä“yµ©2Ê)=w}so¶×m : ¿-–S©¬œtÚÖ�2®V%u>ŸŒo¦FÒ›V]÷´ëÌX:¹V¶muw)‹V.¦ZËÈ{Ë“·³k©t׈DUj Õn§u|°m¥+X…L]èÌ“Ÿëh`7Æ:€€€„k4—<Ë— ±&ÿn‚|ͦ–w ñ¢•ÃДØHN«Ó#Owóà¸5·¼<»G+¢Íž-ìð‰þ¢Zúƒ6%ŸF¡JªÛíÎlêÚm±UE¢Ó+2©•G¹ôTMÚ;vŒEÉÜšµâÆfÉ‹¦¦F[¿ Ëž©*+V]*bZ$T$É�Vçé×ÀáþŽi�~ßÙ?Œé¥+±     Ô�æÖHZ ®JÞ%å¯J—·¢¦]…vCþÍ ñ¨) y§ îZX(×Hì©8lKö×w®ér>?|Ð7�I UÆ.œ>wpwVVLC#6ó¾´0G7=¸¬ÛIy3g—d3ßX95 ÔXÛù±çölK8¯X[:;#ÄÑ•·ÒÏ5F¹›¡@@@Êk4÷ke4 iK— Ý$ÿè6 t ]ˆ6¬%öê’{|êÝ5 §3˜…ë"‡Õ½'c�|þ?ò}c‰-Y/�í¤¥–v¾•Ñ7”nUòjL+Uo¶fÛñÖ@@@@ 6�úÑܪ¹¹µU÷  ,PÞÂë|M†WGyÉÓöj(Ö¬6,¥>è Û”ðÔf5éµ{©{3È”`òð{qæ°–àÃxµՄ�ÓD`¬ÑÜzp=NRH™'3LoªÎ½ÉqT+¿Öv =c¹åU«‘º[yœo›YTJ0åõ¶:Ý8ç8Ý5ÓMøCÅÙö(�õ£¹5rsô«Ø„’t煸ܛ®~[kä8•c�ƒ,•¨kÕ-mlÄî éÊW¨Ñ_²¦õwøÆ¾±¸g5¿Z�™z[¿<­¹™’À£µSõñf&Q×î7‹×’ÙÇq9Ö@@@@ �úÑ\oÒÂÖSÐè ½ôG—šE—�ÕQ<Û÷’tm£rJÒÇby`’ H‡(±€Ïí³�hêøä¾¥£Ìj°¶å*ÝX¶»Û�ºÈ2#Ð77\¿°y–ž¾`†3ݤŒÜûNdBߊLg (Yœ’ bÁ³ZF¢%â¦o“F~n·ËÞ}!]blååîåU%Úa@@@J(Í¥öiù·Ý÷0ý]znÿÆ�ôJkkkt[©t»¦¶é™jkBÐk…Eõ½·BÏ1u!rw7qa—,É|Ǥ^è°2N�§ôTZj5Ú�€€Œ“€rMÃ_³ÞìD&-ŒépÇ–ÁÏ©»^‹bÁÇínÂ_'Nü `q°™wÁÞp)B:€€€ÀÉ'P6š›%âMZÈ6oªD¥@„?;í!!nijìÊ¡¼„6¥9¨d5n&) „:¾´Ú✆ešjCìÔ…Õ­n›Í¿oF @@@@ �ú¹¹bÔI ¥ìCc�SI JBÏ[H¥à"iáTî80@@@&›@ýh.ÜÜÉžah   §’@ýÜ\¸¹§rÇ�Ñ    0ÙÍ�ìù�v    •Ô�æŽáN ö]žb?ÀrzÌÙí¦Y3O¨°ŠPçæF+¼ƒ€À‰#`PÆ�Ê9qf � %P?š[ìæ®ÛÃoÿE=È—ýšû‰i/ñ¤½ßˆÖ„øŒo±6£Æ$¶¹ÅáÞZ·ír´(­‚þ®hè¦_–‚M|ñØâ²A+m«ÕAK®mvBC–_[¢TÒ[O %Ȳ¾žL‘ð/šØm�5u‹¬tîØ’&tç�cy«"UK­¸Æ²Ìjh't)o�ÔÜQé²KÃуÚ{?û‘keÏR Ñ@ê(Í¥ö©A}¹¹ê¡cä’®É?r[iex =ßWý­ñf!>=¼‘<’å=}Ìó²y :½ô3<}s«èëawwYìçV—.d…Òoq±?hwwóOVFìúimc›±—6εÍzýw='JÕúO¤ ŒÇÅz-‚J¿þ€žš|�^ª.Ò©8Ч¹UwG${{#�w›ºû5û=®{”‘G�jðÝ›?ôÜcÑ£¾Õ®D¯�|ùæKƒjö€­F½@@ A ~4×çæ~»Á�"©�Ë¡)`ØË‡„¸,Äßö09òåý ¯�ž�•½�hÍ-,å´ ,¢…Ín.ž_v(lÆ_‘S¶Þ'ï¹=¿ZØ+°�²x¶ØÜ×lic¹ÓôÙ᛼E?Ú"âØ¬†j/Ú«ñà ù°¼Áåu­—œæV�iY�oSôÑØËòZzÖGõųc�ò ò¨QÍ6ŸÀ¦=ßX¶öM•ÅcMôkãÀ:€Ài"P6š›eãKZ¸U åÚ åž\n“³{»ܽWò‰×„ 0=àL-·X ¾$ÄÓ¦<ä�†¦±5(yä�vp5SÞÅžñ.;B°Ÿ»#Oܹú¹Ëé›1’æn595Kgg„8j@ŸÕn§u|°½.ºÝ¤5,‚æ•Τkb"Ó«k½s娧~¾H%ÓûeiÁ<­Ç‡ƒ¨ßÎþárgî,ý~Û‰ÊÊ­¸wì´²C=ˆÜj”3'jݸÀHrv%x¬ŽÊ±¢½vØ,;”€œõ£¹N7—|GZRgÚÿJˆWzÑÒõdê’²‡¼¹¹^âcB¼BˆGý�†QÛžmEÞ�O¤³¼Ç�N�0Ú0Ô´dÚ[ÅUW£ïºªt?Ž–’#IñÌÕ¦¼\ÊΠ,^ìÌA=^¹7v¼Ž.ÓS˜wÛªcSÙ£,MÆ2�ö«ú�J#Š·žëu"“99Ó„bUƒò¯™hp¦ ¼Ì¼ö.9QžÅe¶�Å­ë´hê¨ôè0„Ö3ª@@ ”@Ùhn¹Ü\Ò"<¤ª²·]…Fï’— QêBàBŽõZýP®==s²Áå³ÛU“´Î_Nä—×t©È"ÎTå…�Óí'Ûœú'íS�)e–̓crxk'–Švwþ²–)Së&8�u,³6Cºò‡r2£_™GWj¹Í½¥ä–s¾åEžŸV«C|�’ƒ¨�Æ=ÏðÍ•ž�?`=c¡ @ʨÍõåæ’&”<0Ê%º íu#÷°c3èjòqÏ×vUb‘ÃX“×ùP˜¯¾[*âë]6çz5�H�ãW7øè@¶³²MÎ_½„i'ª ™úû€Ž�ÊUà­¿ÖÚÓŠ]u͘tvë^iH^s@×±É3úŠÈZ×ÈyT—USr™‘_ßä¡—?‚,�~Ý5pTz†îëU  PH l47+ÐéææÆ1)1—î·0‚å¢Ì[xÿF²‡\'ªÓ¡Wž™¼>°MÄ:EÊ8�{д3^ÿª»Æ=gÊ[uU•(ŸáÄÔ¦—Æ¢b2V¨“38®ÛˆÚWFNÓ"íÝ‚ÒsjFˆ]ð¦ç rYà/Ö¡çµþQé>ôÖ36ª@@ €@ýh®37—F¦‹ºþ»¤Ü¥‹É²K+[4�%òÊœÎQt…»P—îÔO h]6ÝiQ@Ò8ã ‹¯#N]pÄaÃ^,Fæ˜ÖN©Õòäƒ:'ñÙk[ ×ê Ÿ:•jì0ˆA|c  Êšl•Wâèà  ÄœóÄOËA”§{qÙzÅÊçµþ›7*Ê@@ Œ@Ùhn¹ÜÜ?�I ÑÄèª2r|Ÿ–šý‘|¥,Ð¢îº Wã ú’O\y¡ôÜËB¦çÒÕrkò�•‡3Õùë®NÔTgó’7†RùrõsC͈:-¶„@uÆÔí4ÖÒP…k˜lÅ eê+Ç!IWZâ,†:ê8g,ŒA–˜ÊRÈ g•('S_{–ï<–¨"¢Ñ¿”ÿÿú*o²ÔP½P4r·;“¹¤­¤†–Àôꢴ ÖvsvÉýŒÎ¡ éгtN¯Ö>*Ó­í�ÖjŽU)�áFsÉ£½*o¶&�¢õÇ�u”ÒðÍò&bß.}ßg¬ûˆ©&Ôò¡27£»+�k-âÝÑÆ(WèS_ÐôUýÙo4WkÉ›Žî„d`Ò·,}3ꥥä&r J ”Ή‹o<À²m=K d1ÖPº¤)»Ê ÔÆºßÊ äk™(Nªö™S в)yóìÅž 9'�gé2 IDATæCŽRZ ¹@2”Ûw$t—H‰ ‚Œ6»ar‚+ih1$s³j–Ô0¹Û¤vìD‰½7¥F%Pn�C>ô’Ê'Ôhâ¨LLŽ¥,¼‚€À¨Í·Ý÷0ý]znÿÆ�ôJkkk|žµäþFâ²£PßÊöÉmÏ1­!TK}_ìVìjI±V!ЂQq +‚³º5ÎÐ’�^ÅXi"å·GÉP>ìw·öˉ §œ€rMÃ_³Þ¬ó´SNÖe¾ é ’§õ]�CÊ!0„’¿ úù„Ô6ÎÐ3(ÆòÀ ¬%Ã@•Ð @'P6š›UÀw Z¶uS%ÑÔ(Û!÷–©�ìôßænõ o°DWJeOZ§†W›ú¼oþ9ßÜ…X(   4iœ¡g<Œå�X5J†t�e+c¨‰{œ‰f  ÀêçæŽ!iS    ~QBxÞB*I ~¨�úÑ\¸¹c˜6     à'P?7n®Ÿ0jA@@@Æ@ÑÜ1@Ç�    Ã&€hî° C>€€€€À š;è@@@@`ØÍ6aÈDsÇC‚€€€ ›¢¹Ã& ù    c €hî cH�a@4wØ„!@@@@` Ít     0lˆæ›0䃀€€Œ�¢¹c€Ž!A@@@†MÑÜa†|�1@4w Ð1$€€€€À° š;lÂ�    0ˆæŽ:†6Ds‡MòA@@@Æ@ÑÜ1@Ç�    Ã&€hî° C>€€€€À š;è@@@@`ØÍ6aÈDsÇC‚€€€ ›@ýhbZþ‚o5e/ ñ˜Y÷¿?$Ä-¦Å—„xÚ¬7ñ¾ºµÛýÅ ë�–6.ö:-Õxܯ W %J4 ´èD7#\ó—óg×Su¢‘À8˜õ£¹^7÷!nMb¸*ÄãÉ’j[ϱïèù1!Þ%«n²(oØv‘­Ê‘®®nõ:â`sqe§Ì°þ^äwÛÇ›aŽözÿà\¯»»%ò}·2jÕk+=÷£`G¿Þ`¥{“{îúæù•ÁõãyêÌÊÎî)dž*5ŒþM’ýC=»mÕ†æë|¹�@õÃ+€€€@�²Ñ\jŸ’{sj;±Iíšä’ÒB¯´Þˆ�+å9_Î;k&¡bu¾-Ž÷Kù¸Bx{± ÜôÃ}¦�•ó›ÇíîÖê$™TÖ/ô�:½Ý‹ÝÙ#1q—œôõïO»Ã»»Ëbïà8c˜ôqÉõåeó@tz7–2�P   Ð �úÑ\¯›ÛŒ’e¤|ZˆWññ2]FßöèJI/Wªèèµ´q®-ýà” eîÎÊÞ@ÀÑõÏýúòG·¯Ï´Ûb�Öìß®*úÉ1w¸IMÑɉ’К[€Ÿ›…h†@ÙhnvToÒB¶yTò�_•·Ë×—‚³l# ¹+oâ3¹Þ· Aj¼ Ä“Þfv¥uö™‹V�]•=mm5lbuµÛilë0£’˜9e® ’gÉeêBgžº‰¾êì<Ë >¥NöòÙý+]s>>at ­ Ô¶ÕÝ¥Ôf¹¨~²ÒJe`Âd68Çâ^ä`n‹e�÷b€Ö#ÖW˜®RõãÁàøxæ)7£ð:'äT‘û›Â©L#¬ s-1Ø‹j9@/û¹;;¦ ÞA@@š#0Öh.y–/—™ kòú0ò5k.—„xQˆ·Ô”Ð��œʯUK`uá*rÊLM›r`É“”~Ñ./œ™I…j)�õäM®2¿5Ûvö@€€€@ã‹æ’ÖÁ�Ru¯J—·Ž)ïb¾jºBx—5ä³ÏðË»|HW™��15a>íøæõZ:;#D^69pmr¸ÉÓkÏÊÌÝœKÞÈÏ]îÌ�¥Óæ‰p"uMl‡MJê´¤ºi„ÉtµÊK¶¥YÑ`×/ºÝÒ *bOþébdañT¹tŽËuÜyqEl\ìÄÅXh–@ýhnÕ¤²ãk�Úò!. ñîFeæ “gŸó\KjÍ!;Ž6îö¬®GÖúVMˆ0-š®“šßíöº0u{Õ …—×Íø±?8$¹cÉѳb4s¼€"ŸÖÑQxª]¶v;t@¦ùÒï ,   C#P6š›½ÓB 7·A«è&b¯âÑ%VÅ«‹(ÕÓé¨ÊPo‘(—“\Ô/´~Ô4Bõ²Û�²;TY§û’‰v§CIÇçõ/™Æp8¨" }@@@ Ô�æNÆ�Þ -Ýâ†ü{—ÜTë… Ê6عBáÙ>ׯu-‘Z—¾L3é®F¼÷=­‹ÕXfä’“I™Ãínn°/,m ª¾Ú�¡û Å ª°zÊThaE¢Ù°ò·–³$b@@@ÀG l47+k2ÜÜ;„ ‡ADê†bj3«r¶„®~["ô8ÊûæVPœjÛŽªËº¢K•âŠa­ÙºØcè{éR²�’'us®ÇR—þÇɦ;_µ»›ë›&�ïE4¤“ž¹NõR¿Ô�‡«Ô,T%¹ÙNÉ{¸)çz//Á;Û%   å 9šû€tÕ³yéuM*™þeý‚¼¹?ß�o/ o ­¢ÄTy«yõ2܇0H?·Ó]µ©*ß;ÊÈÕŽn/©ˆË˵Õ]/¢Á é1–VpgeÛ”ò=Âl¼uJõ•êS°I"å"ok¦M3?(•·?Ðe=N_p§LŒ‚j�Bõ£¹â¶û¦¿KÏí߸qƒ^éomm�néT8vÅôÀÞ5!èµÂ¢úÞ[¡ç$w‘žUÒ‡-TW†lKö)Š    01”kþšõf'#iab€ŽC51ÃøL½ˆn¾ÐM@@@@`ÊÔ�æŽÉÍU)ô(µÀ…Z® ¡Ò'»LQ3Jàç!$SœúÓà ڃ¾ýèZgST€€€€À”¨Ÿ›û²Q[¾/ý•]+ÛaÚÚ›'è]¢i€44�I$P6šKíSfŒ)š›Ò›     `¨Í…›káÄ*€€€€Àd(ÍÍj 77Ë%    c&€hî˜'À€€ ƒ¢¹Ã  ™    c&€hî˜'À€€ ƒ¢¹Ã  ™    c&€hî˜'À€€ ƒ@ýhîÈ1 oâv!^âÉaH‡L�Q@4wÔÄ1€€€€À š+!#ˆ;‚} C€€€€À š;BØ @@@@`TêGsñ´QÍÆ&€hn0*4˜õ£¹ã¸ÓÂBÜ*ÄU!Ï�®V…;-d@¢@@@¦šÀtFsÿ¶›yµ*·<Ô€€€€L#�éŒæ>æF]­ wZpE €€€L#�éŒæN#iè     0Bõ£¹¸Ó§ C�€€€„@47ŒZ�€€€LDs§jº ,€€€€@DsÃ8¡€€€€ÀT@4wª¦ Ê‚€€€„@47ŒZ�€€€LDs§jº ,€€€€@DsÃ8¡€€€€ÀT@4wª¦ Ê‚€€€„@47ŒZ�€€€LDs§jº ,€€€€@DsÃ8¡€€€€ÀT@4wª¦ Ê‚€€€„@47ŒZ�€€€LDs§jº ,€€€€@DsÃ8¡€€€€ÀT@4wª¦ Ê‚€€€„@47ŒZ�€€€LDs§jº ,€€€€@DsÃ8¡€€€€ÀT@4wª¦ Ê‚€€€„@47ŒZ�€€€LDs§jº ,€€€€@DsÃ8¡€€€€ÀT@4wª¦ Ê‚€€€„@47ŒZ�€€€L�úÑÜ—�ÚÞ!ÞjÆ|IˆÇ̺ÿý!!n1-¾$ÄÓfý”¿¯nívEñÂz’ÃÒÆÅ^§¥ÊÙêdã)Ûr˜\Ò �OUÉAÐ@@@ �úÑ\¯›û€·&µ»*ÄãÉ’j[ϱŸìù1!Þ•,ù¸ï6%ʶ]dSszßÉ™í¶�6S>®XÝêuÄÁæâÊΉcã0Y»õ)�žýÕ¶�Àª_ïœëuw·Dæ'‚ðTÙ°   0\e£¹Ô>¥�×ÍU­r.³ŽiJR#›75"å4ag¶EŽ[Æ™]�o‹ãƒý“çãJÿ=m²ôpÅAÿà¸ÛÉ™v˳MÖóîn­®§cឪ¤ l�€€ ‘@ýhîÍCÔ¢‡F`iã\[ úiÍŒwtåäy¹y&“¯?w¸¹x~e`,/ñ¾³²7mrt³}¤¤8OU²!¶@@@†A ~4·jÒYóµaX$e¾Eúͯš|q|} …Ko1 ʶg[‚×»=klísÝ`/ȱµ:SÂ�c,nÄ̶Õz`­[~,ùá=!ÂÓ –jJ†õ¹¥á\9)¬¼¥yŽË�(I€ÓÄ@gûÈk 5LÞYÙ^ {¬Í-,‰Ë-8ñëÂR—V=UɆØh˜@ÙhnÉ;-4¬mq¾µLûæÚFÁˤHOL–ÕÛ’>n<šWoêø1K7rµ¶‹Vu¾¨J&Y›×—{³V§øÜ~¬‚©&§¯ÛítWÅκ) y—!ÓV«|ÇŒð"å3dÝŽ–nM”e¯�<7Ì7YæNH9ôÒR’õµ{éû�-fQ)W67ßÚSe†Ã;€€€À0 ”�æfssÅm÷=L—žÛ¿qã½ÒßÚÚ�V–Úÿ{wKÛvüvpe0ƒ8Ä(!°RÉEð6r8źH0,X•ºNãM‘XìKxëí‚…LŠÈ�],øt›"2,yÁÍ*”bÍx"Ã9$ÄãV¹î�™¹çS;;;šÕîÒìÌÜó›S\\çš{ä�j×JÉï >¶íïmÐò}5‘íÕ¬°ÉÌ®›9N.ß´ÚF:7é±Á†¹¬Ìàë\h:Àf—œ¶ÏmÕ ^s(× _@@ #š®ÿ»ÍîdÑBGZ{ÕíÍ¥Y%+5¾v�fM4Y.â•—Z¼ÖÍÖŽ›”éúOymrÉ•sÕ/KVË;¯<89µæPr € б@Ólnq:µE ÅÓ·µÇ–@¬ÿî´Ÿ)õ+Û{_ú‘ÿ楆b½ÒÉOê—½Éè{ rÝ„m™†½ ®À`Ý[Òè’ë:ÕźR.QFQs¨®GŽ!€ €ÀvÚ׿¾yÑÂvè @@`’"„õër%¸-ìã¿ ® @xçí³¹„¹ïüŸÓG@öQ }m.aî>þ»àš@@�w.@6÷�ß@¦� € P&Ð>›ÛÃJ þª ¿Pê±ìÂrûä5g¿ïêî ñüE@èY }6÷õ0÷:¾Æõ—ÿ’Ëþ]õÓþF©¿ˆ»Mþ¾$[fC^…–¼î79Yºåƒ € °÷M³¹r~Τ®6×¾tLBÒkó#a«ltúùsó–ß_2¿“·Óé@@`ÚgsëÂÜßRJ2¸I&õO €ÔðA@@ S�¦ÙÜâdêŠ~M)Iåú©‹ýUó]‚])–½Ž�ýžRËWIË ÎìG^[&{ì篕úËx{ëí ‘ÿñÖ»¦C@@�>Úgs+Ã\‰å³Ê^ÕÿSêe÷ä¾Éódö‘²ŸÕÖææZ%__)ù‘�_˜›e@@à@šfs‹µ¹•a®”ôí›}¤$×~þP©[¥dhI'¯óIbëuNæ@@�ÝhŸÍ­«Í•ë_3Ðܮԟ(õWJýC¥$Þåƒ € p€M³¹E¢Ê0×ÖäHa®¬·ðŸ¿}ƒ1@@`WºÍæÊC]ÿ${å’Üý_Ù=ö[P¶³Í¾ß6�%­Ë@@à:ÌæŠæÿ0E É b?3ë‹Ùþ§Á–äcW]0›é/Iún\ððgJ�*%kè®ù‘§å®Í )Ö<ŸÓ@@v\ }6·î4‰hå9°ß�דí?�=¤¤áŸšEÄ~Ëľ¿ðÖ³§È™_Ç翺 ˜”áÊcgÉ'y-Ùà € €Àá4Íæ6^i¡fƒäµ–»XËûÇMîƒÔ'l\¢P3É&Sà\@@�]hŸÍ­|mW.‘y € €ž@ÓlnQ¨®h¡xö¶ö$oP“j‡b¸8Š_þû6K=çÀ@@�7hŸÍí!ÌmTÌ`)soæË@ € €½4Íæks)ZèåÆ1( € €@�@ûl.an�/Ç@@zhšÍ-N’0·hÂ@@�žÈæö|@@  �öÙÜ×A»¸½Ü»|WË»ó«Y×AŸ € €xí³¹¯…¹z°Šðv2]ŒB;™Š3ìA~#€ € ÐL i6w{+-˜7šõçn©ãûÛ‹fsçl@@*Úgs7{íâöc¨¢ùå�™×ìê!RÁÉqnÅmb7 € €@3�¦ÙÜbï…¹g'�Š¾Ø Wúœœ†Š8·ˆË@@�ÍzÊæ†µú™9Ë3j‹‘Z.W*ønv´B@@ #ÐS67™ƒ^‡áäénxù˜ìb@@�¶=esí´Ï¦ ã²ÆXÛ»H{@@�œ@ûlî: ŠåU*ú¶Rá`ð<ž»ú\SÆðÎd € €ÍzÊæÎŸVì¦Ï ]©ÕÓ#¯Žh~ i� € PhŸÍÝh¥e– GÓ‰™ÒÅí§A=d^�&ëêʇÅt‹÷Œ= € €¯ ô”Í•yÝ\çQ8Ò±ìb¬Ëܺñ”u]ƒ,26ÙH8ÞÍ_@@^hŸÍݨ6×NL"ÝdåÜÂT%ß;’wÇËŽ޳@@�J�þ²¹•SrÌ{ÒT®’áµFG@@@ ¼M67Œ¥2A©Õr­ÕÃôbºyÄòn˜)×å–!€ € °ž@ûlîkE ³«ó¦ë'lÐd½«å,@@�hšÍ•ós2›­´�넯 € €lS }6—0w›÷ƒ¾@@¶"Ð4›[”0·hÂ@@�žÈæö|@@  ²¹]¨Ò' € €@Ï=gseé0ý4÷Îßž-@@`oúËæš÷“zXêwúòA@@`›}es'ÓñÉÓÝðü*ÚæÕÐ € €F }6÷µ×C”Cß\oÊ�°@@�Ö}es[Oœ@@¨hŸÍeÝÜj]Ž € €ô$@6·'x†E@èR€ln—ºô� € ГÙÜžà@@ K�ÝÍæN¦úÅ÷·]^>}#€ €ì§@oÙ\Å.ãA T8Ò!m6¦�¾é÷FƒÑd?å¹*@@�Úgs7[7W½ºpîìêa´…«oQ‡—O× € €û)Ð[6÷U΋Û�¡RÑÃÕìÕS9@@�¬@oÙÜì4²ß.nïu-Ãjy7$ÈÍÒð @@`-�öÙÜ ‹êf7»:'…[Ä1@@�Wšfsåü\�¼-ÂW@@�þÚgs sû¿‹Ì@@ 'Ð4››k._ s‹&ìA@èY€lnÏ7€á@@º ›Û…*}"€ €ô,Ð>›Ûj¥·tX4^Þd$ä%i£Ðî‘uÅνuż#ªØN7qg”´}ò@@`¿šfs··Ò‚D¸‹Å'õ°ÔïôÍ~Lœ*QªþÜ-Õ`|{aÏÐG”=0Î#yIð4ÿ.`ûZ‰l‡|C@80�öÙÜÍA›LÇ'OwÃó«¨nâÔhîÒ»òÎßH'g6ΕW§yß›¹„Èái&ν¸ý4¢ù¼Ømav € €ì¯@ÓlnQb³0WâU¿Áëöâì$PÑ—¤†arª4ÎõN,ÛœŒÁj9O—�Ã>@@�ýè+›[-~�×ü~‹Ì º°a¤–’´ >„Å&þ©úèd: WËÏ^!o± {@@A ¯lî¶úñ4]ØpùX~²jSšŠ$ IDATÕêé1~/°-vx È-çb/ € pP»—͵ügÓ…Žq+ âÕ¼Ô­+ÊÍ-ØpP÷’‹E@HÚgs[-(–Ì#݈¾ÉseƒÁó|xîJlMmÂS”ž"y^�Èõ³E¹Ÿ)ÊM•ØB@Y }6wÛaîìñé“D¹é3hÇG~m‚TàŽò�ÚÜÏôšçÔdå±ÅbœÞÍÑB {Y=7a @8�¦Ù\9?‡³í0WÉb£Åh4�Üè WŒWÜÚW?bWY¸!“ÈuëëfJlÓL8w)|E@Ø�Þ²¹6ètŒ�I¼&e´*y„NÆÊÇ‹iãW?Èk!ì1ÓÞ;ÁõWúÇTCÁ`4Q³LL\z6;@@Þ³@ûl®úîûäç§_^^ä·ü\__ËûËv�EBëÅ"y£ÚîÍ�!€ €lKÀ†¦ëÿ.F³›½b[óoÐ�MG¬8ÖÀŒS@@�÷*Ð4›[¼Î­×æ‡h½G/Á+�­I]î0.òmÝ' € €ì°@oµ¹oj2»:Ÿ½é€ † € Я@Ólnq¥…wS´Ð/4£#€ €¼¥@ûl.aî[Þ/ÆB@XK i6·Ø)anÑ„= € €= �Ííù0< € €@ds»P¥O@@�žÚgs7]P,ó4­à¿ÌÌ­fpüýz‡×°üͽî„L»ºÍ(üB@Ø'�¦ÙÜí®´ ‘hú¹ŒßÀ+aêxðìÍ£p佸̄°®ÙÝR ÆÞ1{_â{w©®Cï46@@öF }6wë� MNCÉìÆAïÍ|¹ £‰7!lrlvõ©àäì»·ŸA4ŸGÞ¾š½³ØD@Ø#�¦ÙÜâ¥o;̽8>R«oQ2Ðìñi¥ŽŽu,{qv¨èKœõU:~ÍÆ¹“Ñ X-çɺ—šõa> € €{(Ðo67-ÜgjÓµN8øf­íŽðƒ¼°×EÀRl»©år¥Ò“'ÓQ¸Z~.yŸozNÕÙñø† € ð¾úËæÞ\&e¹wË•¼®ÊÖdoÃ�·®ÁT!ä�õe'OwÃËGhx(¹ëtèuÃ& € €Àô›Íu€³«Ï:+ëªlgWçó(Œmž÷“z�cqW78“'Ô$Æ=ÏÆ³®(7.éõoÍkúç²� € °í³¹›.(–á›}}«£d—dzÓòZY'A=�ÉÁèÛJ…½ù;lÊž"YeÌå~N[%}™�г'ñ @@`ov"›+Qª~˜ÌƲyZ³N‚}ìÌ”øÏ ™§Ëžgîa´8¼XŒ¤;[ø›-úÕ�{æÇâ; € €ÀžìD6W?:æ­!–Òš—:¨å]œ¼•%ÄF‹Ñh:¹ÑÅ ®NÁ/øé_i¯—×Uóa¡„!ß¡ʬƫÊ_6‘Ά-@@�w#Ð>›»aÑ‚ 8ç¤ß÷�Öx‡$òfjp¥ú@I+ùZÝTÚ"ÙúºÍé¦"0ËóÎÒy”ôÄ.@@�÷!Ð4›+çç/ì»ï�ŸŸ~||yy‘ßòs}}-«(äÏÛéï’Ï]Äk=ìôD™ € €À:64]ÿw1šÝöë!Ö™õ¶Ï±/ŽŠ‹‘m{ úC@x�¦ÙÜâ¬6,Z(vÔÏWÐP¨Žèg6ŒŠ € °�Þjs·3ýö½È¢º³ö½Ð € €Àn 4Íæks÷¡ha·î ³A@h-Ð>›K˜Ûú&Ð € €À¶šfs‹ãæM؃ € гÙÜžoÃ#€ €t!@6· UúD@èY }6·Õ‚bn9¯âÛÌìëw Nù;xÝ ™–ÞÛÎTæÕ½^oÖ;nV8`ÇGÍï”Ì~Û¿@@vR i6·¸Ò¦a®‰IÕr¾\�9Yº˜RŸ6¾¿Uç™wþÚ÷9dš™þžçÃsó¶^ÝE¶YiŒ*ïξÜW·;ú¹žã‰äNÊŒË@@�hŸÍÝì´Ét|òt7<¿Š (&„�æ—6þœ]=D*89»ðλ¸ý4¢ùÜo{qv¨èK´ÞHø¬‚¡×j�M;tü2´Ét–ÇkôÄ) € €½ 4Íæ'»Y˜+iÔl~6é8¯ªÉi¨²qîd4VËyÑÚ–³¯ÏJ…§×O¾—¤ûº�lÇ2pa”ºÖC@Ø�öÙÜM‹ª Â�Z=Eæ°-DX.WƒA’˜Õ9V)ו†ÉÈïCò·ǃÑbáöÊ9.!lÏ “CZ“Ê]-gö|^? §‹Ehw”×ÛcüF@Ø-�¦ÙÜbmîfÙÜ5tŒ« .½“³eޥ䵽Ã;)UpŸç¯.^•ï’;Ž?r†¼÷·~„iaó¿qÁ‚í$�~q ï–j0žÆÉb7@@vT }6·›0÷lºÐ1n®°Áåf²´ ¬ëªÝl±¯ô‘-Xp�&Â:ˆ–áðc1›»íÚÜÙãÓ§Áà9Y3A]I±®”ÌN¦¡Æ’´M-MÅ­„·_d×JÇÂå0þ’ùkži‹¼’?«èáÆ?Ït�TK$,ÓP~%„2Û € €»%Ð4›ûµ¹¶<`ä*l�‚)™õ*lMÁ¬NØJ€+©b°IàQ\<«¿Þúb)ºËúúuîÙ³üÒ Ù*…’L²®’X”•ù¦£±… € Ð�@oÙ\óæ…øš» B¼–�ijJ^ÓàMp•ñ¹¥PAÉ3kq#DZ¬Y°!p u`œIÛÚˆxžyý„9÷æòîXÞMá’ÇñäÒñM¾7[Ï2=¦§°… € Ð�@ûl®úîûäç§_^^ä·ü\__KеŸ zÓQM>·dÕ†7�ƒ!€ €lhºþïb4»íGЊsÜÕ=¦ØAJz‹yà]�1óB@F i6·³íGЊ#ìàW!… C‚ܼ?L @è­6÷}ÓK%ðì}_³G@ö[ i6÷ VZØop®@@à-Úgs·6÷-îc € €l$Ð4›[„0·hÂ@@�žÈæö|@@  ²¹]¨Ò' € €@Ïí³¹›/(濜Ì{ÕYæýh �w‚RÞ)é~o§m•²ß½üCÞnýîàøÕi™QÊ;L&Ç € €ÀŽ 4ÍæWZØ0Ì5Á¥D•çú5¹úËýmtnÖ •Wýf_�«�}‹œ\Ü0w’=š S]󧪕ޯâ×ÿê/‹©ò"ÝlÜëwÈ6 € €À. ´ÏænöÚä4”2ΜÞÌ—«`0š”I™w�%¯›LGae,[ÖÜì«n%1uÕêi¨ð´t•}s@@`šfs‹—°Q˜{q|¤VI‚V©ÙãÓJ_»ŸŒÁj9wù]‰ŽÓ/Å“+ölÖª¢3v#€ €¼�öÙÜ ‹” >„Y Â¥L*wµ|t¯Ó9àç/át±pMåm»¶ÒÁõŽR„ ?^Ê÷ÕV®±Rá‡@­ž¢ä»ì)ëÐ;Î& € €ÀN 4Íæks7ÊæšìmøñÖ¥o/n? ‚Ÿ‹³“@% ö„ptúeh?wK5Oã]à>w˕ħ÷q÷Ò°²•7ª.m�(7Ž©Um‡^;6@@vN }6w£0WÍ®ÎçQ0/Ìç“z�ªX¿ŠÁ@e œ]ZÑ+�—tî[q3 € °¾€ M×ÿ]Œf7~mýIîè™6œ[ïlGçÊ´@@�hšÍ-òlX´Pìè=íq %åïé*˜+ € °¿½Õæ¾oRYö7³øÙû¾f� €ìŸ@Óln±6÷p‹öï_W„ €ì�@ûl.aîÞücàB@@�ýhšÍ-^9anÑ„= € €= �Ííù0< € €@ds»P¥O@@�žÚgsÛ-(fßµk2/Üõöû¯:KµÜ ™Fú¨×0¬ú�[,ÓÀ;;Õ½ ÍíðNÉ4õÎg@@ �¦ÙÜâJ ›‡¹&J”øÐ-¯Aˆ\Ê+tu:¾¿Uç™ÿÆ/éÍšÅí ºè·l,áªå|¹ 2½Ý\æºÑ½}‹ÜI5ceºá  € €@í³¹›>‚6™ŽÂÒ¨ a£¹Žqå3»zˆTprváé\Ü~Ñ|yût$[ÑaÍ¡Ét|òt7<¿Êv•é×~±³zpÁvÍX%mÙ… € ðÖM³¹ÅùmæNNÃÕrnCÙL§g'�о$GäD•�s'£APl[Ù¡D¹Uc)IÙfÓÄ™©x_²cVwè5a@@ ?�öÙÜÍŠtðúü%œ.¡½ø¤7ü¨ÕSdöšŠ‚çår5|p癤­œ,iÕÉÈ65¿«;ÔQnÅX^ûÚM“Ê]-gö¬öÖŽÆA@@�ÖM³¹ÅÚÜ ³¹2óptúeh?wK5O'™ËÑ1®®(¸|ôvgk¼z³¦ÃšC¹NJ¾Ús\°`OhÕaÉìB@ئ@ûlîæanRë*pÃ�·IîÙt¡cÜ\E�+Êue»‡škºÉïÈ,¸£m:ÌÀw@@�m 4ÍæÇß<Ì=:N¢Z¯ÛèÛJƒ�š'U³¦ŒA/qPozMË;4'Ôò:(Û¬ÈoÞaÙ ìC@Ø®@ûlîfµ¹:˜ “z[Y7ìøH©ç¯ºøõñéÓ`ðœ>ƒ¦­ž¤.v2 åð`¼XŒS„Ñb1Ò«ÙΫ;¬+í§jK‡Ö*z¸ñ�·êÐïˆm@@�Žšfs·U›kÖ K«ü<­=4r•º¶NÁÔÅʲ™�^PL/…;Jë&þX¯©ºgÏr+BÔŒå:”UuåsŸa¼6Ç@@¶*ÐW6WÉZ^wÇòæ—šMZÐW'ñ¬’w1è<­|J×ÕrŸÚ«Æ2oyˆ; ì�é\l*wžy3…9¹f,sÜä{ƒ`0š¨Y&Å_@@�NÚgsÕwßÿ ??ýøøòò"¿åçúúZR¬�Î{ç;7ù\Ò¹;Ÿ˜  €ì«€ M×ÿ]Œf7m_MåºL±ƒ”ôóÀ{|Ñ\ € °CM³¹Å©oöZ±Ÿ}Ùc^i!o¸XÞ r÷å¦r € ðþú«Í}VëÍxvu>[ïLÎB@èL i6w[+-tvAtŒ € €€Rí³¹Ôæòï@@`çšfs‹@˜[4a € €@Ïds{¾ � € Ð…ÙÜ.Té@@ g�öÙÜÍóß@–{Õ™[•Ëâ¤o%ÓßkZ9KwFÒ¥ßÂ�"ÜáÂÁ¤ÙFcéþýÉû½éc|@@ÞD i6·¸Ò†a®/Õ|84¯ÂÕ_S5¼4ßL˜ø<ž'ÇÆ÷·ê\¯B[Ó*æ²ofˆ¿é¿òî`ÓS²O÷rô-J¾—Ç¢�e£péÐL^wq™©'£±� € н@ûlî†� Iìé¢Z¹È›ùr¥ÂÓ‰¹Þ‹³“@E_âÈÔ >„æXu+sXgR? ‚h>�Ü÷’?&^ãe�59 %OlÃu{]Á`d¯«d*ìB@èH i6·8� ÃÜbGñžÙ×g•ļ¸f£Þø¬ò¿“Ñ X-çqˆ\vÒ§”5+î+ëèâøH­¼<ñìñi¥ŽŽ/Š­Ùƒ € Ð¥@oÙÜìE…äõ¸qxhs»£…ýŒjy§GkZÉ¡Ét®–ŸëÞ±kR¹«§G)€H?a<ÖbZ™xḬ́v¬8óœô_Ø‘a@@ #��ÈæêðTy±§¼/wx'e îóü5”Æ»ó­Ö)F°©á/Ö¥ î#CJÀ{[’{]w,“½ ?Æ]˜Šx¾üE@x;�þ³¹ú1- rý$¬ìZŒòš v%ö,dY ­\QnyÚ7ö,«3ˆ�)5»ú,±upr–‹s›Œ%ú< c›‰þ¤¤Ç$M�Å € €@·=gseQãÞy‹˜Ì©[ü@çuõãdñãi£¤U}7û(χù©Ü¼­) Îîl>–—>¿RR�Q‘�ÎŽÃ7@@�m ´Ïæn¸ ˜¾ˆÉt<�Eæ^Œë®ÍO€Fßd·_ÿ)k¥8PJ'QÇúû‘ŠÛQ¼<®ìÑ‘°D¹µ�§én"¯Fb ”]x¡nÈøLþ"€ €lS i6WÎÏ ¿i˜kKJ–¬5a­^…kfÂÃltZÑJ2¨™XRŸ¦æéŠez¥1IåÖ/ÂàÒÈIÝÃÆcY!³ü¯<>g—ÿMÔl¯ÙW^$Ù@@ØŽ@_Ù\uÊ%èEFÉ¥˜ W Ôíý8=�†Â5­’>Ê7l°<÷ž=³ç™X4pmd 4ZÞp,¯C e‡…•‰â³š®�ãË'Ì^@@�6í³¹ê»ï�ŸŸ~||yy‘ßòs}}-‹´™Ö^·•|î¢|A‡½¾l.@xKš®ÿ»Ínýõoyù=Œe³ÄµOÂõ0+†D@öL i6·xù›Öæ{Úû=® ¡¼˜aﯞ D@ÞR ¯ÚÜ·¼Æ�KªŽg;3&‚ €ìµ@Ólnq¥Šöú‡ €¼O�öÙ\ÂÜ÷yç™5 € °×M³¹E ÂÜ¢ {@@z ›Ûó `x@@�.Èæv¡JŸ € €= ´Ïæ¶ZPÌ-±•¾ç,æ°¯Ä5ß¼÷âz{ãå¯k�9è5R™I»ü˜î¬üîªzo;Sòá»óô}gþxùîìðc%sc@@ ¥@Ólnq¥…MÃ\'ªå|¹ ra¢@ êÓÆ÷·Ê„‘7—éËxM}æÑ·Èl{3�”wÀä·²{Tüj_÷Õü©ž¡9ò<žßèuwÉõ¿4XYLÕðÒœ÷]6V|Œ¿ € €[hŸÍÝì´Ét|òt7<¿Š —a¢ÀhîBÃÙÕC¤‚“³‹ÂyÊÆ¦eï³�>„%mJ[]Ü~Ñ|y êfxv¨èK»ÞH¨®7šÄÔiTkŽ„§¯[™tq,ÿ8Û € €[hšÍ-¹Y˜+Ñ ÷ßü~¯ÙRMNCUçNFƒ`µœÇÑf¦“ã#ÿ«¿]Òªd—Ò9àŠªÙ×g¥Òè5?c´ÂvéX…³Ø� € ÐN ¯lnõ¬Ã�Z¹:)�€¥—,MÛ™¤ïêéq–îJ¶ªcÉ’V“é(\-?§µµI7•6K;ZØÏx –wÙº„¸¥1zßcÅ]ñ@@ �@_ÙÜ5¦¨ `uaÃåcÙÉ6…ú� N¥Ö|*ãÖb+["‘ë§lÀÌ>ymïðN¢o÷yþZl› Vy‘øfcŃð@@`}�ÝËæÚ¹ŸM:Æ­*PåùZ]k>wO'ãÅým¾ ·ÐÊÊ–§bku<=ÈCh6Ø åA³L®4Õ�Ÿ…²C’&Þt¬šip@@ B`÷²¹Ñ7yžk0�Õ â7ÿ?ÿ¥O‘e¯¯ôÁµb2µöf{©ú¦KâeÌt^W?º––êêV’‰61®§o8VÕØ� € P'Ð>›»é‚bU³š=>} ž“u Ô…fá†WÇŠë¼pÚ[ € € zËæÚ�ÎÍ40)Ôäeb~*ýb :å“‹mP9÷"XÛI¦CÝ(ÂVµr(û“é03C)TPò|\>A@W�È~@@�WÚgsÕwßÿ ??ýøøòò"¿åçúúZ{ed—Hh½(yt®äLv!€ €Ô ØÐtýßÅhv³×CÔÍé`�ÙTpÙkÝ–„ G@6hšÍ-³õÚÜâ°G/,�­­–wÃB9Æ\>—ˆ €l[ ·ÚÜm_È;ïOÊ}gïü˜> € °KM³¹Å•(ZØ¥ûÉ\@@Œ@ûl.a.ÿ”@@vN i6·x„¹Eö € €ô,@6·çÀð € €]�ÍíB•>@@zhŸÍÝtA±ÌKÆd!­ó’…´Ü9™—ˆ¹¥·¬[±�×mÜÌÛåiÇGåuÂf-¯ªeÙ4\O¥‡¼‹tÃ%ÃÛŽÌÞç5^4ìÆå € €@­@Ólnq¥…MÃ\y£ï�›šŽñÆ÷·*éÆ/Îõ. ŽÏMSNúíLx)ñcÒ±mé�dwèó޾EúK}‡æô’i˜ý¦õÇ0ÞŽÿÆ“¸”)æ.Ì ¦–óåj4ˆOç/ € €@í³¹[xmvõ©àC˜¹À‹ÛOƒ šÏ#oïÅÙI ¢/qx|#cÚn2…¹©×4Ý4a«{ÕXm‡¦IÙ4\_e‡lçsãÊÇ^ØÉÙ…þ2™ŽOžî†çW‘þÆ@@ K�¦ÙÜâ\¶檋ã£|Ç“Ñ X-çqDkϾ>+žNÜÉ™ urÎÏwª¿g:®ëÐ4Μ�í®ìPfFz°ÓP©Àƹ’TÎ¥«³ýñ @@`{;‘Í-Œ:3»Z~.”ëšüm8ZØÏx –w.qªÊç¯áÔZ,îoM5Ge²­«§Ç™Û_Ý¡>¡j•‡ÂòÂ^[¡+#µôÎnPþ € €t-Ðk6WÊXÍ'Òúe9y)îðN"G÷yþÇ«zG8:ý2´Ÿ»¥Œ§qÚ7>]Ùlëƒ>×tX3�šCv,]†«K.“±Ù@@x;�^³¹òßø.(}:'éWWòê²´9 �²$� v%±ëŲQ\ëªbÃ�¹Œn1m¬WQ(ï°f5‡ÌtϦ ãR¢�»y|E@ÞN ×lnr™þ£Z%¡hrž."Pî13�†Õϧ¥¥ºê踬N!i]’‚­î°f5‡¢oòLÜ` æI®_Æ�Ì„ @@�ŽÚgs7]P¬âÂÌC[Rp 9Öô )Æéðö‹ìŠK_õQU†zÃmz‹5˜§Ú ¡ IDAT25 ::UÑCö¡6iYÚaÍ4¢(”V3œ?} ž“µ ÌÃu^)°4äƒ € ðM³¹r~nVÛs]RՔ̦Ëéš�ô2´’µ% ·ÖF53Áª¸JBx´I•Â�éÅf\?§1­Iå–b0qri‡uÓÈ df¨”žÆh:¹Ñ3vÕ ^)p¶éúßô ¡*¾lbý8@8(�Þ²¹6n‹­%S;LCÒxoá¯*(y¶Ë$wÍAi—ÔðÞ\ÞËk&\8Úˆxž8k;, ¿Ö)8V“êü³|ü f.9°gd¦©—�0­Ì@™C&‚4"_k.œ„ €¬@ûl®úîûäç§_^^ä·ü\__Ë£ekÚÍ…K�\µJZ7Ò+ € ðžlhºþïb4»�×C¼gÁ·™»©¹�Êâ|:úmFg@@àÝ 4Íæ/pµ¹Å^Ù“è%xåá9©aä&*l € €õ½ÕæÖO‹£©€ÔÏÒol!€ €¬#Ð4›[\i�¢…uœ9@@àMÚgs sßô†1 € €À:M³¹Å> s‹&ìA@èY€lnÏ7€á@@º ›Û…*}"€ €ô,Ð>›ÛjA1·X–ÿ®0 â½1,ó609zh‡ŒÑ³÷º·žÿÉ0< € ðšfs··Ò‚Do‹Å'õ°\œL «ßÿ+Ÿ»¥Œïo/ÜIx¨ÀÃ@@�WÚgs7{m2Ÿ<Ý Ï¯¢ÂÍ ¿¢ùå�92»zˆTprfâÜ„Jà¡j'Ž € €Ôô•Í­™R|H?z¥ .ã=Éß<”\; € €kì^6×NúlºÐ1nYaÃZãFr  € €€/Ð>›ÛjA1*n;ú¶Rá` +h�»ú\S«ðÉñ›K˜Ûÿ]d € €9�¦ÙÜ\sùJ˜[4a € €@Ïds{¾ � € Ð…ÙÜ.Té@@ g�öÙÜÍWZð^g¦2¯ðòÿhüÒ/}À߯2­ü÷„e$Þ™¶²×�•Ùí·ÌHz)k¥z-3 ½ýþmîÒ2 Ü[ΞçÃË›dT6@@^hšÍ-®´°a˜«ã=5M즿,¦Ê�är±ž» %Ê¡sÝL¹¿�ÎÝ’±7—¶39¢ãÅñý­²‡¼¶Ýðè[d¿Øßö þÓ}Ý åä’V²7žd2�¸Ûø€X³S´oìUËùr5ħó@@`c�öÙÜ A“Ø3�jo$¼SáéäµË˜œ†’ÁÕQ¢þèVÁ`TÒjvõ©àChNËÿ2±iö¥a·ŸA4ŸGþ¹¯Î°´•¹£°4F·ãƳ·S<9»ÐCN¦ã“§»áùUfþdØF@h$Ð4›[ì|Ã0·ØÑë{.Ž�ÔÊËÂΟVêèØDŠÙÖúÌŠÏd4V˹ •ÍI%»*û»Ë[I$žëݵ¹8; Tô%W‡ì*°q®DÔqNÚ�m@@�MzËæf'~2¬Ráhá>ÓLº¶�£-ì�žË#P=¤I©®žgéø:ýºZ~~åm¹ùV´ÒÁëó×pO~që¢p¿©X�’�¥¤°ËfŸN�-@@� v"›«CFåÅžº\À}î–+ x]¬h²·áÇ8p4E™ë–âWó©Œ[mJõÁ iKJ2]Ú/ùÖ¶ G§_’é«Á8§›2\]¢pùX2»@@¶"Ð6×<—¥ªÒ©³«Ï:çéjXgWçó(Œm0ûI=È1¿Š!‰�ïžNÆqpì9²¼®¼6®öõNõ6 3|¥UZ=¬Ln˜+u6]è2\J<_6@@�zÎæÊÿÞëDî²&î›}}ö¯;‰d‡RΪ¤Öáù«W€Ÿ™yÀ+ÞYLÁÂÞøÔôoÉ _kUZ-¬¢o®²vCãúe é€l!€ €lA }6wÃÅôÜe���<–5�ã¾Òë1�jEe±¬Ò‡¢ÌÃd¥=¸�::UÑCò ˜Œ/í•T,ã´¡Ô�¤W» DÙ k[Í%˜ ½%̳p6|ú4<§Ï ™ê2UÂé$ØB@h'Ð4›+ççÜ4̵¥q<™ë4ùjŠb½*€ä€^wv $ ì…­ÉA³ª—ĪùÜÜ’δÖS’lk\ÂP1ÃWZ=Œ#)¾1cÛÄïg3Šd˜åÐh:¹Ñ¸Âo†éì›mÅ55ñfr6 € °}esM�øéF‰£ zM¸�²Ë‹E½CRé0ôƒDíÅ]e›Ùµ²qo|fÕߺVµÑûo.ïŽåå.Cœ©Ç�YI$í®Ø^¬í*3ùÀž‘išuÊÒÕa`že¢öºYr @Øs�öÙ\õÝ÷?ÈÏO?>¾¼¼Èoù¹¾¾–•ö\n‡.O‚äEÉw;4C¦‚ €¼µ€ M×ÿ]Œfßðõo�ó>ƳiçìkÝÞÇÌ™% € Ð�@Ólnq&›Öæ{bOSWѯßhÚ ç#€ €û'ÐWmîþIöqE²Žð¬�q@Øy�¦ÙÜâJ -ìüMf‚ € €Àá ´ÏææÞ¿®@Øy�¦ÙÜâæM؃ € гÙÜžoÃ#€ €t!@6· UúD@èY }6·Ý‚bÞë¿ü·‚‰Š[,+·7ÙoÜ K[ycxÚ®mæ`æíbî\ï„âpòVáÅ(Tò~µäÁòÆ5»¯l†5‡²Ãyˆgw*@@*šfs‹+-l暘Oâ9ïe¾vž&°SËùr5dg79×oµÕ_îo£s÷ÊßÊVòŽÝìKpuão‘éÚ;¨;ßߪ¸C°–ÍÐÍ*~!°ûªÿè¾U|MúËbª\\s(î ¤Ãø@@´ÏænúÚd: ½œe:çÉt|òt7<¿ŠÒ}nkrJâôÒ­7ƒÑĬi•ëÆ„’e/ ›]=D*øÆçWÎÐ�pqûiDóy7Ð%lN»z†*<µ3¬;d{(íÐïœm@@�5šfs‹ÝnæJĺZγYVÛ¹Ši>53ÞÅñ‘Z¹,¬>0{|Z©£ã ½]ÝJõ>“Ñ ¨Y÷Ÿ~ªghÏ©é(í¤ÉÖÖ;l28ç"€ €û%ÐW6WçeŸ¿†ÓEü¹¿5Ñ꫺^¶Õž[ØQÛ…I实g%geÃÌWf¨S½«ågW0QÒ›Ù~2�¹w^þÐzz°‰ € P-Ð[6W¦ŽN¿ íçn©ã©ûÏýÊÙšìmø1ˆÍÿñWž\zàâì$Pù‚©™5ŸbÜZ9Ãʇ̨:rUå1uþÐzfzç  € €@µ@_Ù\=£´ÊV™²Ø4€­šïìê|ƒ± K?©)}õ«ªÚÅû³ùÚx¯.§5Ÿ»§“ñÂO+WÌÐÕÐÆ5Âq?Ù¿ú�3 r˾…Cku˜ížo € €u}fs]UmÝôŠÇ’˜t(¼Jjž¿– ê¥È>ÊlÕuö´“³¤|¢|†åÁrfDY´ÁĸwÅ*ã’Ckt˜é�/ € €¯ ´Ïæn¶ XôM– H5Pæé¯õ#V{Yº|6*}Œ­ì²u0)QnÙSoe§WÎp2 å|�R§íF YG,^8BV}ÐCÍ‹1®¬7V<¤/£¾Ãt¶@@ÖhšÍ•ósýnæJât´I™í�I®Ú|æçuCP™‚[%÷ά ››RÙWûìYùÚñù¦`6šÛtoõ sËðºåpã[‘G¼q׿oÅ!IPg.<×a¦‹’/¶×²7[”œÌ.@@à@úÊæêÀîŽåu .'êGi6ns7 0yR©q5ÿÿo‚ÛÀ’=C¿þ ¦•œoS¹.‚õîm¦•NÇzgõ ½r›&š–}¡�¶;j‚ÞšC¹NJ¾fûóµ”I;fáY&\.é†] € €À¡´Ïæªï¾ÿA~~úññååE~ËÏõõµ<Òu(„ý_§Äê‹Ì£sýO‰ € €= ØÐtýßÅhvÃ×Cô|Ý{4¼Í×=Z·GË¥ € €k 4Íæ»Ý¬6·Ø{š ¸Ž|ýFóŽh� €ì›@µ¹û&ÙÇõÈ:³>ÆeL@@`çšfs‹+-P´°ó7™ "€ €‡'Ð>›K˜{xÿj¸b@@`çšfs‹D˜[4a € €@Ïds{¾ � € Ð…ÙÜ.Té@@ g�öÙÜV й±r¯ÆÍ¼šÌãWæ@"—´öÞ‘¦â÷¦™³ í’&r¸²U2€kî7Ê´Ê0­Ê¯këc™ažçÃøEÃÉŒÙ@@] i6w{+-Hˆ¶X|RËUáÜ\ÊKÔìçn©ãûÛ {ŽwÀžGÏ~“_.‚”�/>xíôq‰EÓOÆ�bU+ÓñÇPwà}$îâ±æQ8JfhæQq]ÛË›› € €¾@ûlîf� M¦ã“§»áùUäϦ¸=»zˆTð!,‘=æý_îõ_g'�о܏oæ>WµK;{½ÕÅí§AÍu<�|&§¡DÍq¨¬‡ £‰9\s][+™ € €y�¦ÙÜ|{¥6 s%/{~µÎ« .Ž�ŠcÚ=“Ñ X-ç6²�}}V*<µÁ¦DÀÙ¨·ª‹W[eÆp½è)¹²Ù3{|Z©£c“q®¹®­�UuQìG@Pí³¹­js_½6Ìü'i½óM*wµ|ŒceIª~F‹ÅÈž$5½q¾Õì“C~)m}«ÉtJ?�O\¯ñ ‰âÂŽøÌôï[Ž•ŽÊ € p�M³¹Û«Í­ç–êWóÑaæç²´¯M×>x‡äͷû´Ò÷ùk+åÕôÊ𦵴5­üš¶&{~Œ †MYƒ¼rû-Ǫœ@@�ƒhŸÍݬhá5Ü$0½{:{QiÜ®¤˜@GÆöÁ0ìJ0;�KâVòwvõYWížœ™¥*[¹¢ÜLFØõ#áê<’GÜl$n£ó«¼á2›o9Vf`¾ € €'Ð4›[ê&ÌMƱϠ%Q©Ý_’gÕõz5–ꬩ~f,-ÕMº“ S#ëvT·*‰£ýN’0|(5ÆêC üä±bºý–c¥£²… €¦@ûln·µ¹¥wE‡ *z�€6ûñ3ªÑ·• ³‡Ý7½N‚ŠÒ’†ÒVæ$YËLÄi'¦º×¯ìµ‡ì …Ù¤íÒ­·+•-@@àðšfs‹µ¹‡¹.êÕàºgÏÜ ñ-3a­^ÖkfâͪHXŠLÖ×Õ"T·ºfâV©7©’÷0˜µpÕòî ´ÏænX´�Å ?jõÙ�’Ûý8ŒRÕ`>R›'p•ry]{Dÿ.ì0‡2Ú=I‡¹ ­Î–ÊR1qšóuòõùK8],Bó]eK„%oØ¡ôR˜ka‡Kå®–�3;ê«Ó°§ñ@@ #Ð4›[¬ÍÝB6Wš寑�~zjx'e îóüÕ…|&{~¼ué[SŸ”ù›ïP4¸�ô+ñé}ÜG®@ Ó‹ŽdO¿$íÔ`ŸÔƒÄÂ~ƒi^Òaܱü�]}–FÁÉ™‰•] mš,öΔʹXÚ=D* ±ÓóÖîp½É—ÕO¬3�tBl!€ €(Õ4›[4kæÊ¢ :‘»¼sË%èîM*Öè¼®~0,~ ̶T: Ór^$Ê�’mHl[™1²Á­í¹ä÷ÍåÝñý8Îõú•Þ4tèµÊM^nÃù¹wInJÕÓ°'d¯ØŸ¦ë€? € €À ´Ïæªï¾ÿA~~úññååE~ËÏõõµÐ æ.^²׋ø¾]œsB@:°¡éú¿‹Ñl«GÐ:¹&:E@8x�¦ÙÜ"ئµ¹ÅžØ³M¯DB�ÛfÏô… €¼�¾jsßÍ;Ÿ¢”8ÏÞù%0}@@`s�¦ÙÜâJ -l®OK@@�ŽÚgs s;º5t‹ € °¹@Ólnq$ÂÜ¢ {@@z ›Ûó `x@@�.Èæv¡JŸ € €= �Ííù0< € €@ds»P¥O@@�žÈæö|@@  ²¹]¨Ò' € €@Ïds{¾ � € Ð…ÙÜ.Té@@ g²¹=߆G@èB€lnªô‰ € гÙÜžoÃ#€ €t!@6· UúD@èY€lnÏ7€á@@º ›Û…*}"€ €ô,@6·çÀð € €]�ÍíB•>@@z ›Ûó `x@@�.Èæv¡JŸ € €= �Ííù0< € €@ds»P¥O@@�žÈæö|@@  �öÙÜ_îbZu}ž)õ»ññ¿Wê�ãíú¿?SêWâ3þZ©¿Œ·ù‹ € °�í³¹µaî(õkY¶ÿ£ÔŸf÷löíJ=–µü3¥~?ÞÿçJýëxÛFÃ~ˆá/ € €Àþ 4ÍæÊù9„Ú0×F´6¸¬ Lsýµùú“R§JýR›.h‹ € °í³¹ÿ`W$�KŒ»+7ƒy € €= 4Íæ§[›Í-žžì‘bÙÿm¾ü†ùý÷kWÙ&=ä6~[©¿ÊíZûë¿RJ¦ñ7JýÅÚM8@@`‡zÍæJdù«J]›y>LbÍ6Iåþ­R/ñ�óA@8T�þ²¹".\[¼+Û•JÈÛò#Ÿ%…¹Ò¡”êþæz=’Ä]ω³@@�÷"Ðk6÷ï¶­$K+$Ÿ{Sªû‡Éw6@@H }6wgA“»öëtç¸T@@��^³¹5óÚàÐÿUê{ÍlÈû'Þ6@@F`�²¹¹*…Ñdáyúíºõ3pó�† E@v_ ãlî˜ðѾ›W~_+%{:úÈ ÏdA±Ûx¥Ùþ—�D· € €».Ð>›ûËu—˜,¤P<é�³»jÎÌžX÷m㸖•êX9† €¼?�޳¹ï„#€ €ìƒ@ÇÙÜB~dåÝ\V¸jÄŸ)õ+UÇØ� € °oí³¹µE ]p=*%?M?kFÃM»å|@@��hšÍ•ós×±Këææ¦ÆW@@�ChŸÍ%Ì=Ô;\7 € °ÃM³¹ÅK!Ì-š°@@ g²¹=߆G@èB€lnªô‰ € гÙÜžoÃ#€ €t!@6· UúD@èY€lnÏ7€á@@º ›Û…*}"€ €ô,@6·çÀð € €]�ÍíB•>@@z ›Ûó `x@@�.Èæv¡JŸ € €= �Ííù0< € €@ds»P¥O@@�žÈæö|@@  ²¹]¨Ò' € €@Ïds{¾ � € Ð…ÙÜ.Té@@ g²¹=߆G@èB€lnªô‰ € гÙÜžoÃ#€ €t!@6· UúD@èY€lnÏ7€á@@º ›Û…*}"€ €ô,@6·çÀð € €]ë-<lIDAT�ÍíB•>@@z ›Ûó `x@@�.Èæv¡JŸ € €= �Ííù0< € €@ds»P¥O@@�žÈæö|@@  ²¹]¨Ò' € €@Ïds{¾ � € Ð…ÙÜ.Té@@ g²¹=߆G@èB€lnªô‰ € гÙÜžoÃ#€ €t!@6· UúD@èY€lnÏ7€á@@º ›Û…*}"€ €ô,@6·çÀð € €]�ÍíB•>@@z ›Ûó `x@@�.Èæv¡JŸ € €ý H¤+“Xç÷ïüÎï§ûËÅ]ìA@@ w©[Xg?ÿùÏKO#Ì-ea' € €@ÿ6•»Ù<þÁfÍh… € €À. æîòÝan € € ænG3@@�] 6w—ïsC@P¿ùÏΊ ?ýøXÜéï!›ëk°� € °sň¶¸§8iÂÜ¢ {@@vKÀ�kýíšYæÖàp@@`Wlt»fŒ+“&ÌÝ•;Ç<@@êÖ�q¥ÂÜzLŽ"€ €¼KÂÜwyÛ˜4 € €@½an½G@@Þ¥ëæ¾ËÛÆ¤@@�½øùÏÞæ sÛèÑ@@ �óoÿ}Ë~ËÃÜÿôÿCË~iŽ € €@�%aîýÑõ8!†F@@ ½@I˜ûå¿ÿ·öýÒ € €= °ÒB�ø � € Е@šÍmù,[W¤_@@š ¸0·ý³l͇¦ € €] ¸0÷o~ýŸw5ý"€ € ðæÿç²–ì*�¥IEND®B`‚ipython-ipyparallel-14e3c43/docs/source/tutorial/figs/parallel_pi.pdf000066400000000000000000003720751520071063500260670ustar00rootroot00000000000000%PDF-1.3 %Äåòåë§ó ÐÄÆ 4 0 obj << /Length 5 0 R /Filter /FlateDecode >> stream x+TT(TÐH-JN-()MÌQ(Ê š(¡…�˜NÎUÐ÷Ì5TpÉj¢?& endstream endobj 5 0 obj 55 endobj 2 0 obj << /Type /Page /Parent 3 0 R /Resources 6 0 R /Contents 4 0 R /MediaBox [0 0 1314 806] >> endobj 6 0 obj << /ProcSet [ /PDF /ImageB /ImageC /ImageI ] /XObject << /Im1 7 0 R >> >> endobj 7 0 obj << /Length 8 0 R /Type /XObject /Subtype /Image /Width 1314 /Height 806 /ColorSpace 9 0 R /Interpolate true /Intent /Perceptual /BitsPerComponent 8 /Filter /FlateDecode >> stream xì½i´uÙUÆßÛqâ(NlHbƒiŒÁ˜ÆCÑcz0˜Ö46`Z¢ïK]I*IH*U©T’J*•Jê»’©T%ƒÕ�à HBlã8Ià2Ⱥo}߬ù­µö>ûìsï}÷½7߸ãhî¹æš{ŸùîWß]u^=}à×ÿè꥔€PJ@ (% ”€PJ@ (% ”€PJ@ (% ”€PJ@ (% ”€PJ@ (% ”€P—:�÷ýê{ôRJ@ (% ”€PJ@ (%°—nºé¦+þŸ'{Œ¬/% ”€PJ@ (% ”€PÛ¸ùæ›5ecÊÞË¿µ�‰PJ@ (% ”€PJ@ \Ù4eÛs|ÿîÛ¿®¸²oݸPJ@ (% ”€PJ@ ì%MÙyʶLŽöõØ©¯ÇM}=~êë S_OœúºeêëIS_OžúzÊÔ×­S_O�úzÚÔ×Ó§¾~zêëS_Ï\ÿõ¬©¯Û¦¾ž=õuûÔ×S_Ï™úºsêë¹S_wM}=oêëùS_/˜úº{êë…S_/šúºgý׋§¾î�úzÉÔ×}S_/�úzÙÔ×˧¾~fêëS_¯œúzÕÔ׫§¾^3õõÚ©¯×M}½~ýצ¾Þ8õõ¦©¯û§¾Þ<õõ–©¯Ÿ�úú¹©¯ŸŸúzëÔ×Û¦¾˜úzûÔ׃S_­ÿzÇÉù�nã¤~bÜ£À³ì£�ضÑÔ�ýØ©!ûqSCö㧆ì'L ÙOœ²o™²Ÿ45d?yjÈ~ÊÔ�}ëÔ�ýÔ©!ûiSCöÓ§†ìŸž²Ÿ±~È~æÔ�ý¬©!û¶©!ûÙSCöíSCöSCös¦†ì;§†ìçN ÙwM ÙÏ›²Ÿ?5d¿`jȾ{jÈ~áÔ�ý¢õCö=SCö‹§†ì{§†ì—L Ù÷M Ù/�²_65d¿|jÈþ™©!ûSCö+§†ìWM Ù¯ž²_35d¿vjÈ~Ýú!ûõSCö¦†ì7N Ùoš²ïŸ²ß<5d¿ejÈþÙ©!û禆쟟²ß:5d¿mjÈ~`jÈ~ûÔ�ýàú!û¡“²ß¡)¿óMSvg×”Íó¸¦lžÇ5ec$×”Íó¸¦lžÇ5ec$×”Íó¸¦lžÇ5ec×”Íó¸¦lžÇ5ec÷){Õo&³gÊkõs»x—¦ìþ”ýŒÛî\õš{®gÙüÔ[ϲù©·žeóSo=ËÆƒo=Ëæ§Þz–ÍO½õ,¾õ,›ŸzëY6?õÖ³l<øÖ³l~ê­gÙüÔûB<ËÆ!ûHÛ¹úOn¯ÕcÊî8sÉwÑ”�ùÚ�G„ð}^¶û×~ã·[¯oý‘gY W_”)û¾·îþÏÁ¼·óøú†Òex–}ß›wßâîáŸ-ç'Ôãø°Ï²_ú–³sÞë³vœ²ïzÍÃvï~Íóbᆵ~bó¸~bœçqýÄ8Ïãú‰qžÇõãÉõã<�ë'Æy×OŒc$×OŒó<®ŸçyüÈ?1ŽÁÍç¸Î5LÙï×þrž—×î¢){pÊ~ø—eðuã”ý‚·Û4„×[_ÐÀ�ÿ,»˜²ï½ÿ‘ÓÚ±ßõÊ;hÎ>À”ý¢wá¼ù>~Œ}†ËgÙw¾þA;Þ�¬ɳóu|�oñ2_kÊ^š½ùçÀDZ~b\?1Î?(¬Ÿ×OŒã§Äè'ÆõãüSâŒõãú‰qþAq`ýĸ~b?%Î`î)3æåö�ý~ý)Ûyhb†gsö SçU[z߇bœ;ß…P¢)ÛGì_ÿ¬ÎlýH鄦l®}â~ë 1gŸû”Ý®Á_Ÿ¬ù5e/ÍÕ7ÖÇ'kVjÊÖ”�Éš�¦lMÙ<\kÊ͓֔5cMÙš²1Y3Д­)›‡kàíS6OÊÀ6Üñt\îÂc5ckÔ”]þ �t/Söm¯Ý=x}ïkŸùÈ }†œ÷�®UŸõŠ÷Ú#Ýw>¸»î^÷¿äžëÏ”ßùŠgÛø}[GðÊÛí÷Œ?û•×{wï}Ý3w¿{üÅg&°}ç™òq�{ÉÙŠûìzÃOŒûdíS¶{ØUï¿ï O¸ãu»[ó×ï»m7}ßþÊÝÏ0¿ëÁÝõìîÃcñw½ò9öxúŽ3Áõ.{Jnä}o»frÖrÃm Î7ý¶{nyΫ®otæð®WÝyËío|—á‡ÞtçÙˆ}ç™à]¯zÓ7lñ2wx×C×Ú­ñI»ß1þÜ7<ôȽáŽÝÏ�ßwö3Û�(_ýÜš¼þ‰ñ;_}ÃÁÞýê»X«¯¹ëÖ;ï÷îØ÷?÷ìgß{íGÁïÂOŒ;s=·‡ßxçî‡Âý'Ư“­¿qz]ñì<Ž5ekÊæáXS¶¦lLÖ 4ekÊæÉš±¦lMÙ<\kÊÖ”�ÉšA9ÿâ#}>ÿbÐÃ4”ày^FÄ>\‡ÛªÜåbgÊÙóê�b´Lì ϲ�·/Ž4,­„gÙ÷ž ³o¿çÌŸÏ~tü�OÙ6\?ö±Ï>›Íß÷Ö»m¶öqøí÷\Ÿ²‚_Ìÿw^Ï|Ã;mj{ð ÏÆ”½®Ýj§ôÑûì uó'ÆÏ¦l¥ßûºg=þÚ”íôý×Æç·½Èfk“¼÷ú”Í38 ^r}Ê>®Ÿs6¤?üºg?ñ‰ë~bü–0eï†ë[ù1rúið;_¿›š¼Ï&îêYöÙpý²³Ü4×êî±1ÚɇîÔ½®!iÐæéùìsôÙp}×Ùäþ𞓪6\ßz×w'´©ùV Ô×ɇ^z+“6~ŸýçÖ×çñ»®OÙgÿ]öó®ûÜðŸdŸ-Fçêuã“5+5ekÊÆdÍ@S¶¦l®�5ekÊæÉš±¦lMÙ˜¬hÊÖ”ÍÃ5ðùNÙöI>�ØFÚØg¿ÉÜÏfK0Wg .ïÔ£°Ù™XP>ec vÀWž»ûSö#“µùbâ¾ö,{÷ØÚ§l{Æ]LÙgϵ³À§ìÛéùò Sö[ï¶!Sö5pöÏšS6’ú�‹_{P¾{Š}Ãdm `mõµgÙ¯¼ãú“nÆ}m ¿qÊ~âKÎ~ÙÛ^Ôœ²]°;ƃo|=Í®¦ìGFï[0Pßþ¦Ýsí7Ÿý·Ø ÏžqÓ$Ž)û†!ÚaÛÄ ÐŸ²}FÞõ¡ûï|ÊShÊ~ʵñùÅå”Msô½íÚßòòkϵ Ü0eû<îoÈÝ.7NÙO}ٵߓ¦)¿ë,ýö3ýö3þ�gŒõÛÏôÛÏðÏè·Ÿé·ŸñoŠßóÐKIqmßýÄøõên¤¾õ‘ÿøúú }ýÇÈ]vöŸc×?1î‚w¼,?Ê~ê�? >ºâŸÇú‰qýÄ8ÿ 8°~b\?1ŽŸg Ÿ×OŒóO‰3ÖOŒë'ÆùÅ�õãú‰qü”8ƒüãüè3 ¿˜1è™À'¾poc`ù,;;3Ã]˜(ͧ5~^Þ£@ø»ûú”méo_#®ÎœUv%<Ë>k-þŸ¼Ú¿ýlËOŒß}öÿWeÏ:|oøï²oœ²÷8Ãù¡ˆæo?k<˶Úíß~¶4eã‡1v?.¾ûòÿFû,ö ¿ýÌ~ÚÙ—=¼öÙ™ÿ±ý·oqí·Ÿ…)»óÛϬ=øßeã6 ·iÛ§ìGª×þï°mÎöaù}\g®OÙ·Þê?O¾{Šý°ÿž4üÄ8ù3öS5e?òˆ[ϲõ,›Ÿ_3Ö³l=ËÆókz–­gÙüüš±žeëY6?ÂÖ³ìy–� À‡;¿ÚtfÓ®Mm¾„&ÖçYž=3ö]ôße‡{àA!ü³IùÚ³ìœÉÜ8e»ÁÐõøÿO^£ÁÙŒ¯¾ø4}íwŒûï¿FõþǧææÕÇøÙo?cÍ“žäÿE¶ÿÞ³³¸Ðè¼Ò#j‚üãD_ƒô,ûì6.þœÚ|ƒ¹”Cô"9úôúFÝøókVêY¶žeãù5=ËÖ³l~„ ¬gÙz–ÍϯëY¶žeãù5=ËÖ³l~„ <7ÿbÐËr`x^žërC÷ SçU[jÊîLÜ«쳆£NÙ×ÿ¼üÿÎk`ÂÞIVŒÖ$Í3ôŽ™›²ñàuÃlýÈbq .7NÏ£+ž�DZ¦lMÙ<\kÊÖ”�Éš�¦lMÙY³RS¶¦lLÖ 4ekÊæáXS¶¦lž¬kÊÖ”�Éš�¦lMÙ<\û$kƒóA¿ævÑ”=2eó,|8¬)›‡íñÉš•a|\®­Iº4O×õ5³õ#ÚÅ�ºÜ8=�®xvÇš²5eóp ¬)[S6&kš²5eódÍXS¶¦l®�5ekÊÆdÍÀ'ÙS¾ê'Æ1k—ϲ7Y³³¦lMÙ�ÌÕ7¢rˆ^$Gçêuã“5+5ekÊÆdÍ@S¶¦l®�5ekÊæÉš±¦lMÙ˜¬hÊÖ”ÍÃ5ð)Ï×z–�ùÚA˜²}©«PJ@ (% ”€PJ@ (�µ ØsUû™ö0u^µ¥‡†_"ÇÏš…•€PJ@ (% ”€PJ@ ,&À¥¦ì¯ö¯ 4eóˆmXSö¥ÿ3¢TJ@ (% ”€PJ@ Œ'àS³=ž^ü²Ÿ$×”FlMÙãï4)•€PJ@ (% ”€PW!~6í�e[WMÙyÄÖ”}þŒè•€PJ@ (% ”€Pã hÊ.gçqÒÿ¥„ý$€ÿwãùK©”€PJ@ (% ”€P—)MÙãu©Ô”}™þ8è^”€PJ@ (% ”€PД]ÎÎ㤦ì�ï@µ+% ”€PJ@ (% .Så”m7èÃ#_õße—£·¦ìËôÇA÷¢”€PJ@ (% ”€ؘ@ž²aÈ#¶aMÙš²ñÞPJ@ (% ”€PJ@ (�2�0e Úš²5e‡·‡–J@ (% ”€PJ@ (%à);”|‰A[S¶¦ìò"R (% ”€PJ@ (% �OÙ¨K )[S6Þ6J@ (% ”€PJ@ (%P& )»œ�ÇIÿ7úÿË.ß]"•€PJ@ (% ”€PW-MÙãu©Ô”}ÕþÈè~•€PJ@ (% ”€P�4e—³ó8©)»óîRI (% ”€PJ@ (%pÕ°!ÑþƒëÁ¯›nº‰§rë2f| ½”JMÙWí�ŒîW (% ”€PJ@ (%ÐIÀÆäU_š²Ã¿+hMÙïè~u¾#¥r« µôPÎý|ö[L;ÈÊ3ŒhÊF�î€åéƒ wàSŽCê{1—›º”€PJ@ \è|H¼Ú<®)ûÈS¶}B[|ƒáC`‹�—F°ýsìñs>Ι÷õ-Ég_{™�‡S^±KYur•âÀ^Í‘KáNÃîýjkÙO`ãw_ß‹~¼ª*% ”€¸” øÔl¿"{ñË>\Söà”]¾[&>n�´d�3v-�qùÈœÀÚ{qÈgìºv;Óg·µ&ÛòŽ-ÏŸÆ™–§óv V�/Û–nX’a¯¼ô.»æR`æüƒÉⲿK¿ºh.AH`Kž[zÃ1´TJ@ (% .J<5î¼4e‡ùÚ—ž˜ý; žRë»?ñqË[ìÚò4¾´-ÉŽÉ….m¿Yw°k'‡r—’옠4Ýúg†x´Nåü1÷*ŒãŸsDÚûK6ï([ûvZ&Jý]úÕ‰í®xË–<·ô^ñØuûJ@ (% .n6bBìŒØVÒ”½qÊî|Öò’]Ë7R¿j-.Ƚ->+/:³—;u»¶ÒhíÒâ[>ÎÏuO7±kà±<Ú^­dø¥–ÀˆfmPØbmãÞõåÝa—~2�Á¶ä¹¥wðx’)% ”€P§–€¦ìrv'ý_MàßT´že÷?hyÕ®­·G_Ð2Ï<|òŽ(°ÆIf3oØÈÀ8]Ã×EAðá^à`‚Ã@L ‡ ¯2ã8óða€F&�Qe€*F)ð¾D5€¾¸¬ “R€j}qYÍ$<½äK–�ɲ\2ƪàF#{#óŽ;U”&^e20¡=Tù†YÌžÀ,èXÚ÷ÂX®Ý�¯2™T;%Óx5\soK¥€PJ@ (%piД=>P—Ê‘)Û?\uÞ3øô5§iù»À›†–Ð8ƒ%óèÊz¹êÌ*Miƒ¡†`òñ¼x8dÀúPÅ.AÀKh‚aàmÉ]wĹ&`PÊhÀt@;ƒ^¸Œ—ÀÊ+Ì3€~®„vöq²Ã ‹ë s‰ñ„ŒÛ«íK6x•yèå%û8ßgPÍâPâ]€]ƒe0PJ@ (% .Yš²ËÙyœÜË”=ø¦Â‡´ w>�¶d¾ì dXÂ0û �5p À[@Â�y�lËã¡1�eãUV:v·°Eg—þîìÉ{�t±¾åÃüà™}ë,6+/å}™iµ—½-ñà^�™O>ƒ3a_,`”´®Ð}à} óP-ùÒŠ•ŒÙ°ÅóLƒ×÷·dð)5\ma8½óX:€8ð�å¸+gó~µ¯÷^»²¬$Y ¬”€PJ@ \è4e�Ô¥rqÊ^ûñ¬ÿv*?›µ¶`ž1oÁï.F (% ”€¸p hÊ.gçq²?eâs>ËáÍÖÚ…yÆh4Àp.d,s’ÝÀ° x¤Š�  Ñ@Ù›IgòuŠ[æ0ŽγÖm­ôåFá0¶dY®2ãJff+a% ”€PJà2% )»œ�ÇɽLÙßQá“›/KϬ̲ �™ð¦#Ø÷]Ü‹­pÔ Cˆ7 úr sYÉÕ€ƒxU•ÅÁ§³ô®Ž%öïB»�ñ®þ^¹˜¼)\FÕxÌ´p�q{ÀîÀW°?ó%óF†Ù§lï�lÅ>†;]A¹qYn4á¹ÊgQ쾆#q)`WËࣥPJ@ (%p™Д=>P—ÊÖ”}™Þ$º—‹›€¤?Îù�¹×qîh¿»¬Êg•x¿çÀ¨fhŽ:‡ î(íØ#UÎÝ&Ú+.Mé]}Í9V;7…À9žÓ·^<É¢À| 8÷ûÒæД]ÎÎãäÚ)ÛþÈL|§üZ«±_mu”Ç?2ß7÷fÜŠ•lÂü*ì&¹…Í3v}æÁÀL ‚О—ƒ>,ƒ “ãíd×d~-³Ñ'ŒŸËÈfe®2lb]�ÏKWf ¬:¥¬q1ø=#€=n±Ê*ƒ—îÃL‰Ç·+Û�„É15Øt_‡Ï†(e�Å# |:âÍH;|Ð&h\ƒåèï‚*;gLÜe8T}4Ç_âTyk”2èˆ;¥ŸÜ&·ƒY¥�¸ܶU]ËÓ �¬=­ë÷xæÁ“ôw„ ÀÜ}©ëÜД=>P—Êþ”¾¿Ó^Fþ<†½ÎqÙºÍß:jÿ®[]}gØhÞjoñ|ªRã¤]]™5AÀ†œ}:âÅΰŶì-I;O‹_<* ÜÄ®LŽãV;óŽ'<×6ò|æ;˜·kµg ·ç] Ë¥}1å%¹¯û>­­™wÜ÷©²'ë_nȰt7&Û•72Üâƒlb gÁÕA>ÈÂnå^.ÑÛ¼,ý™Ä.¡w-Ú;KÞ=ËÊ}–n’É&à  Žä ì…ê"eécí%_’a/^ºÞ®Lfž1ËZîëûÕ¾s¨ÞÈö·;ðÉGÜoÍlGÜxwá“J@Sv9;�“«¦ìé?/ý?eýêñßo�ótJùœ«Ä¹=3nhW+m4oµ·x>LKÃoU69nà{�x¶Îã¼ÒÒŒø³¦å³¸ÌЗì %€ ƒ2óûbÊ­K‡±*ïîâ@²¸e ��¾Æ«våÇe#ôÞRj°©k‚3?¸líèí0ÇÖ-¦¿]—~ïªk�×Ò—|‡,K÷ €`â¼]ßZ¶|Zú>¿/·ñ»Ø¾ãvÎdÐmðÝøÂ§“€¦ìrv'7NÙù�O`ðÇ�Axÿ ¥£ñ ‹Ý²ÀLc8�; %ƒqWÂ�Î`¹´Ú[<û·4Ì3ée c÷)¯,[‹[Ç[ôÉ�`ؤ$Y°ˆÝÁ®-%¶€L«Åxˆ]ƒel‚*Hg°ÈJ” ´ºX“qèjmÑâ;ûç¼õ¾˜ÎÙÂP°d¬™Æðt,3˜Þ�ðä½P5à‚@ÖÒ�Wf>ȶ,q˜E“ÖaZ|6Ù«¯éì•Áä#ãU»NTË&G¶6=ÎàÇà.”Ø6`Ö‡Òªe˧Åš¯jw±]³yé“I0Ùjœq»¶Z¹C/˜–Ø�ûdÙ “EýÈiáf€ ™f0ª(à‚@æå¢�· ºe1§�€¦ìñ�ºT®š²óŸ©üÇ'0haÞ9\b^ˇi ùñ½ YÆæŒM–èrÞ®`2Ñä.0­­]ÀÕf%Ãb„%vŸÙ*3kmû^åkË¿ôa’±™„eË6ðÞÅ× À0ƒ l,I7ôR˼_mue¾s€ îì˜K¥m–ñe‹ Z]-ž=ÑnâÀ‡å [èÒòDД=>P—ʵSvþ¾óŸ Ƭlñ®)«� K˜>,;þpè7´k_¶¶Zž³e‚3´@«±Ã·ÐâÙjä-ŸÏþƒx‹Õt/pÚÌX©$Ñ2ÜÁ®-ñª-Ýò.ðGo äÞ’A{¨¶x“y)è[ËŽ¸,9i×`Øâƒlû2l„e |;/å­[|VfÛåR‹™Þ®µ °5˜ ²Lè ü—‹[¸À®Û7]Ü˶Ñ”'A#d™ÁFV‚¬Þ»(+{�ôö‘*+—½.°«Wõ¥IIf«Ì”�r•CG\–@à$™Ai´Lœ·ë¸”}OÈZzô«0Yîc×Ae)+“Ḛ́›W[WV:î»AC0%t+{Ež{š²ËÙyœìOÙƒß_üY3P¶ôÿ”•Õ@†%v |Xº¬$áÐÞh׎f®´êH8F Lœ¡u€Ï[lÑŒôò^¼Åjº×Ëöq²sS¹„sÉ™rßR¼hÕé²Ú[ lϤ·g[äR§%ˆq¶Àû²ô)ÉŽ¾tÞHòp `Öƒ4ÐâYSbìUV[äÜv�½P26Å^#šÐëK4–Õ}‘8gi¸ß3ô÷â».Ó'qTA™÷…8(ór\™{�É[³¬Umñ­Þ=÷ö1»1îwuªkMZú’w²Sêl°”ͱé C�eC¬åû]aÓÅåøMµÎi[”¥Lf†�çÕòÊ2à¾[�™L ÝÊ^‘瞀¦ìñ�ºTjÊn½‡ñO¤–`‘ïü³¥SZ´uÁF‡V{‹çSMkFy#Ã�–N)˜äåt¯7ÚuÐsz#öï›ô«ðq™]Á0è˜tJæÐª:oWÞÅq«¥åÖÑóΦ�­;þ�RØzpÙ2džqËÖ5veAI² …û�^-{;¥RoäÈ^¦ÉíØ«ãM«½tÎâ-Ìö3tn0¬³”}Mg¯ÅRØÂô`: žN£—úí­*óŒy»À‡åÈîìÆ˜­³f.MJÒm[¥’wÒ®ùH¥>Ëú›Z5øøÒ®-«E>B¿–÷ÆVlÇÁ UGV–2™>d¿ÊJǃúýÊò1ÄœBš²ËÙyœÜË”mï„þ·‰jhñ¥]ù]—ÉÐåâ’dŸŒ³sÖ°¹é³ eRò%™=Á¸˵ ÕÞâÙNã]ve«EÜê*ù’,·peY2²ïSö–$¬Z òç Î}œÓds�¡«cØ)µé|Þ"0­v–•V­Æ’/IÞ¢�Ëö@†eiM¥¾C¡¥i Z|ËÇø‘ד@†¥‹K’K&¶#Õ²¥C¶Žá|ë l¸Vɽ·ÎãÊþ^eo ûá<«Ä¡—\–Œ gƒŒùò ™aà¿àf %†¦%ïJ,´Ú[¼u•>-¾%ÇÀ²µoàÃí«@y¶Žs©ÇŽý*d# snïìX–2™™ìo&;¸ïæ�®ñqëF¥óM@Söø@]*�9eãOeøƒYþÌ$·3æw`î²jIrWÀl^bÖCÀ$0ª@ã‚À·–®oUùV;ŽQ·mõò¦e»‘¬Ä-«ìeË‚‚ÕÀûÕ ²Þ5™_Ët|:¥Ås¯ãòÚ9-;° >L£š4Zþ�ð ‚KhÀd�?¾„CìJXBãŒ-QÍíyé&™3²Ë¢‰»-ʰvÏ¡Ê%Æ�1¹Ã$÷ d^òv¨2É‚ÖjLîF5×d>0°b} W-ƒ¿-¹Ý«Ì8|6 î âl>°IKÍ¢JО—Ð`ž14L ͽ¼ôvfJ<²‹iÊ^'ƒCVAé–5ãLy ´/ž§lÏä Ï„ G Ÿ�‹±Xø”Д]ÎÎãä^¦ìþ7ÿ„?tü¦*Û;$[±�áNWPv–ì_bî…€IÆ0`�cTs©d\_–FÈV;ŽQwnõò¾�v– âA7ÈZ¶ô¨ž—Ð8àã~••‹;åâhl–TK°¸{Ùeäà^‹þì³j/kd=û³Àq§”Å-&Y‰kœdfü`[ P¥“l¼a./jX€® Ë¥q&¸C ór|#SævgØdDÃúV¬ ¥¼„%0s>ìã$3Ž3�v€Üe ªJÍ ¹è€½Z†ÀúPò% —#û²P\–{¡·¬2 ep ãÜÅUÇYcL�•šqn¹%€ q~œlù˜JÁv­&·ƒÁ( \¬4e�Ô¥²5e¯zøŸ£U-+% .b§ð�»S8ÃEü޵ά<[ɈWJ@ (�+›€¦ìrv'·OÙú|reÿô鯕ÀUKàDþqw"Ǹß}…y9¾�º % ”€Øoš²ÇêRÙ™²ý³G¾î÷;(·£% “‡‹ZÙ([üóç@þWÄ1¸"·|²·©ïÅÉ~kt0% ”€à4e—³ó8©)›ßN—û§»‘{Wޏ]Í\bs]W!OÜ£GdW0k@†z¿­�nïú ÷½Ð{fïï*% .Jš²ÇêRÙ™²ñ¸XÏòiãv.4ØrGã½#JÖ0>D¼ìÏø{Íy¶NÕâ}—~uü$ìÃxÜáøJ>'ã|’~Õõ#šì|Ê ßãµgö^»®m”>$°å»àVñ{1~×ãʬ–J@ (%pš hÊ.gçqRSöi¾±[§ÚòIf¼wDÉÆ­“oáÙŸñÏýö¶NÕâ}÷~uü„ìÃxÜáøJ>'ã|’~Õõ#šì|Ê ßãµgÞÒ»v¯Ë­ßžäv‡ã'<~æqåñïB;*% ”ÀDš²ÇêR©){â]wA[Æ?�(YÃøá°?ãCì5ç9wª¹®|Böaœ•§Ãð9çö«Y9¾kÆkïnKïÚ½¤ï'p¿ñÌýJ@ (%0˜€¦ìrv'7NÙù¯àÀø2_ó÷wD“»2Ã`ÌÊ‘½úš\-÷Êd‡ ž|`ÇäR@ÉÛs5Xq 8hx¯ŒKñF'7Æl‹Óp•!(­BÕ–ÁVP‚ J´JÐŒlTjÂîn¶\òaJ�A9èÏ2Xɘ5ŽûU´›,÷²ƒû´Ü¸Zj²À˜°cÖÁÚó°¾´Z$Ë{ ]‹Ç†IPŸþÒzM«€¹7ìâ�YèY“«Ù'è;ËÖÞ‚*ƒìæÕÌ3Ã¥dPÂÄxÃ� øŽO(Ù’ÛCÉ$c¸j<ƒ ÑR (% Ž™€¦ìñ�ºTž×”m“òû„ÿbeÌš}aögÌþÌ3††É€¡1à¥&˜äF¸Y‰ �Köi à` Ô°à4qyl#ù´- ËZšµ>®‡·‡4|ŒŽ&˲ùÃ'aÌnÌ̲ýbߨ㉓”T`q(a¹Jƒ®ØÄp¨bdÛ—pf�m¹Ê˜•Ì̲>�¼äFæ�hL÷2†`€CÙ…jÞ—¨”2#!0ÐÒ@¶(p·EY)à“0†˜I`T€À@(aÉa% ”€8fš²ËÙyœÜ8eÛ÷Úÿ6ôo:ンK'!Ãr/ÀOØß«ÔÒ—áHAãUV2Fïb”JðVe1x'óF™ae°:Ùåà]”2'ù®� wÚ×À67š÷Û�Õì¶…Á]°I&3³xl8‡ûºgKS8œyDZxSkç¥ãÖup¯Vû*{1(1ŸÉ̘ÞInìc˜”À{Qb«LfÆôNv|‚†·Áìô¹äŒ]]‰%ƒÒ-¡b8€1àdh�’weÌ>ì–•™É½ì`UnÁ‘@æö¬�X@ (% Ž�€¦ìñ�ºTžË”mo þ+™–`¿ï"Þ·åÜÒ0Ϙ}2Ï ct•$ª´Ä#|©'ÃINgYÞB>ޢ̭«¶LÖò}7®†óäûÚ 3xþ–l/gh™ŒlÚÒ´xÞË5­+”¥“¥Ú”�A¼—%Ÿ0¶ª�Ëì3°ÉfOÖ–¬tì‚Ö5ëG˜Î¦e)“™á}[ÕÀ‡%;8fA ³Ò5|eOv`>ã–r�/e%™·£”€P‡H@Sv9;�“Û§lû¶ú_…å_ˆ%‰Kp{À{Ï´Îõ4Ì3^ìuñªödÜ7±jƒ,{ÇIv>)\ÞB>á¢Ìån-“µ¼¶ºÂváH¨î´Nø°Üã:V#›¶4-ž·sMyÍ2f ÿA“EYØeË2œ0Xµª�Ë`2¸d“̶¬7>,YéØå5‹™Î¦e)“™á­[ÕÀ‡%;8fA ›ÒKå•=Ù�ùŒ[ÊA¾”•dÞZŒPJ@ "MÙãu©<ΔmWòwßÿêyÌ¿IGöji˜wl×Î}¡qлÀ«÷AGÌ»ÜÙ¨4,ÉþÁα:xÚEÙ¢Àî±¥YËw¾#�$[»tZK-çÀ‡å ùFÙȦ-M‹ç#�hL_ÊJ湚ˆú;¶ª�˹£²Éæ]Xo|X²Òñ¢ ·,2ϲ”ÉÌð¦­jàÃ’³`³ë³+3ν}‡ Ë~oÞ]ŒPJ@ ì=MÙåì¬liZæ-Þ=ûUÞwNŸZLy_™\{àÖv«ø‘M[š| ¾5ë[špHnA©$;ÕÁ½à°ŒœÐ4¼Q>dß„{;˜Múتìãb&¹�•À¹¥iÐÙ´,e23|¯ÚµOöM¬—#8o×g¸Ê˜÷ʼUûdÙÞ!ƒ!› +% ”À^Д=>P—ÊãLÙö½ö¿.q ß}ðÙ^–a ,ÙdÐ8oË–JЙLØÈ–AP.y_ÆwH/•´/˜,*·°Kì9r#¡Ë샃¾Œ«Ž¹×1kr5kX¿�lwÐäóç#Mh²I¾‹qM8[�˜Xû ,l4½ä–&#çY4)�É&-l-^ÊWvãvæg‡‘.vÎV(9(�3™™Ò§¿Ý I>7æ-˜áS1Ï«4Ù$[eƶè�Vâ3+% ”ÀÞД]ÎÎãä^¦ìò¯Bÿ^wJáÍàJ¾Á—¼Kë„}M««^/úðíÀ'“™�`n/´à]Z²¼�1ì–•¡šÙaDÃGŲÜ�J@ (%°=MÙãu©™²¿Må_…ÞÕ)-Úž²`Õ}­Oߵӆûj<Îíïë´òQJ@ (% ”€PW<MÙåìP—JMÙÛß„rPJ@ (% ”€PJ@ \š4e—³ó8©)ûÒüYÐ�(% ”€PJ@ (% ¶' ){| .•š²·¿ å ”€PJ@ (% ”€¸4 hÊ.gçqRSö¥ù³ QJ@ (% ”€PJ@ lO@Söø@]*5eoÊA (% ”€PJ@ (%piД]ÎÎ㤦ìKógA7¢”€PJ@ (% ”€Øž€¦ìñ�ºTjÊÞþ&”ƒPJ@ (% ”€PJàÒ$ )»œ�ÇIMÙ—æÏ‚nD (% ”€PJ@ (%°=MÙãu©Ô”½ýM(% ”€PJ@ (% ”À¥I@Sv9;�“š²/ÍŸ݈PJ@ (% ”€PJ`{š²ÇêR©){û›PJ@ (% ”€PJ@ (�K“€¦ìrv'5e_š? º% ”€PJ@ (% ”Àö4e�Ô¥RSöö7¡”€PJ@ (% ”€P—&MÙåì’ØáœGv—F (% ”@H@Sv9;�“‡˜²íÓBø6�,ûŸ1úÕÿ½küHåun/XuÚG4­vïmUOŸïÜ;Jà¾r Œk°lX�&ðcŸæÙøTåœ|æž»—ükù÷ù¹Ýûž‡®^¬3ç ú÷Þ¯Nl§% ”€P[Д=>P—Êþ”íßšÖßþ%ï¤]×~[K7˜ô«�”G*ÉÅSy®¥Õ¹-Ìsº±<Ï1Éþ½£Žøòö™d¬N‰›5pâ§½Ð9‡l·ÜË–^?Æv‡p;GXŽŸy\y¸c—gpÒ®k÷-Ý`Ò¯B& ”€PJà8 hÊ.gçqrïS¶}ßç>-ô»úÕã¼Ùx—Öyœ·+‹1ºZ¶æ0¢éoÔ1ï7ž{µï�ûB Ü œ�oiBËi.q#Nó„8Õ…Îwá`˽léݾ{¸‘£-Çïz\y¸Ã·ÎÐâû'éwõ«}gU•€PJ@ ì=MÙãu©Ô”=÷ž,?9Y–wéÑ”ÛM7–nçB–·P’v<çí Î AGZNvîådÏió£žò Ç϶å^¶ôú ·;Œßé¾”ëÌ­Ó¶ø~Jý®~µï¬ªPJ@ (�½' )»œ�ÇÉ#LÙùÃC`|®á­‚–�/Y€.Vf�1,ÁÙ ÀˆOÐŒôŽh‚­/ÑèWƒÌ ËŒ 2ÖŒ`o÷�~Ñsen,nw¾Ü‚ƒ1NÅ÷Œê*€v€Ðžkœ7¦%€˜À¨‡Ràb”ØdZƒd·ÆS*qN¬d˜À¨ äÀyÀae¨jÖ:@�íÀ”[[5ó0€É ÈžÞø°Ì‡Á„3À¤£áÝ;2.‡í´TJ@ (%ÐO@Söø@]*÷>eç¿Ó�áïc`Ѐõ†¹ÄxBÆíŒƒUé�Ðð’1ƒ`¤wDSnç�åú²j$Z²¬ �a¹ÖÇõÁ$/a‹RhäeÆhg«ùÂ!ùFÙâ’{s#óŒ¡a’1¸0”�Ç Ø—ÆlÙjûyJ}8*–ƒa€*WC`€ù€! Œ}/gÊ+fgçN oWÊúne5�a‰]–.+I8(% ”€ hʨK¥¦lG­ýâz»†7¤-×Z±ÃH=�[�™Ï L, ‚¾µ\ëÓÑ{É®å^�*<²C§”ÅGfpkð1Êó—$w<¨/eL2Æ� ËU2îe “¶hFzÃvXvzËR&3sý*”‹²–€yÆp.Á¾”ìÃØ7ÍLy˜Er•�‹;-�’�¤¬2,qþÀ‡¥ËJJ@ (% Bš²ËÙyœ<Ú”m߸þßòÕÐâK»ò›$“¡ËÅ%É>—-ÒJÙ$0eû*�;”{•æY_ÊV��ÅÙ?W™éãÖÙú»¸gÙËdˤÅ÷�zœ*ŸŸw |Xva“€sXÜkQ`û–šÌ—2&Ûµ¼'[niiœgå8îô–¥Lf†w÷ª]™Ì¸obú–€yÇv þ¬ñRfB –‹J”2”à6JóŽU_?Q -¾´+Ÿ!“¡ËÅ2²¹°PJ@ \Ù4e�Ô¥²?eã¯o~§•k³ à¾[p{Ù›Iô0aÅ-%[ð2èQ <–��PÂ’5, <—Ð 1˜  �3- ŸRàÕ²Ä$LpM órQ†½r/hN øñò‘–®/ÉlÅŒ·äkÖ0c˜÷b Y }Ùº¶ºœ´‚‰�Å�:ëe«œ· ].X$}ú²r/Þ:·3%“Œ!pÀ%ÇA`ËM��˜´¶Ë½`Ö¶ôõýû*{3™MZÜ…ƒ,3nA¬¥PJ@ (MÙåìJ@ (%pî Ø�xóð×M7ÝÄS¹õ3>�^Jåª)Û?$ØõÜ¿ïWöûúlÿ¼·ÝaË7ñp»ÎyËýžW¯Ò8¯äGöÝïw§å¶–åæ]ýjßyKõ8ûg—óMrËwA½J@ (%pR ؘ¼êKSvøw­);—ý‚]sIÌ1ØË7¢óyþ ø™f�c/† ‹CÕ–\u4F:ÃÕVóÁÇ–ýj”b&÷÷2et¶c猭îd8dÞ±Ï[²Þ«Ì8Î|ßǺД0‡Lk/¸YKcv JÞ«…aµú{y;ï²h¸(h¹ òY_†k8ZX4¾dºX™ư¸lUvCi-èoän¼QKŸ5Æà0ý*ï‚€°#–ÁzvcÍZAÐk©”€P§�¦æ?þã?^…M¬gÙ6qNÙø ô¾é:Ãöo‡;”IÂ<ˆß²*eAÜÒ`/-�ñ.s·”|Ë�¥Õ ¼/Q €Å¡„%kF03@{.9��–Æx–-â–]€%@à}¬±¥1Þm]€-Jn�1@5hس…!–èÃÕ9àV¹·ä±/ôY´0@».1ž�q;ã`Õ_r#ã~W®r/ð Ìô¬D{.Ë|p0™kØ–{Á—V¡·¥Y4�@@ (% N3�‰áÚ[4eûCí‘)�žæ{࢟ ñй/(;š~ÉJM.•ÛeYp[ìê¬änY&hÂî¶teˇyîå.æ3n)�·+·d2·g ;¬ÂÁ<,Í*ì–,°ÒøÖÙ‡­àã2,¡Sú Ê‚yXflÚ)�œ‡7jaÞ«…˽‰%ƒ–á ïVYÌ[ÄìÀ˜e-Þ5ðGËcâ– >¥†«%vÛ²´ŠÄñ”J>�a™Ï™niUïK»¶zK�‰�÷.Æì#¬”€P'ž€ ‰kmMÙüCããSö‰¿.îñðA%€ÖAÖŒð�O>e)“™ ûN ¸‘1û3Ïx­†õŽ[nãÊ–CàÃríî|·ÊWh÷*ÖÞâá@Kø°Ì¹ uŦÙ%€¬ÉLGì¥ÖIØjc£`–e>3¬_‹[nÎçkögƬlñ®)«� K˜>,;þpÈÀMÂ5Ë™òHè »„%dB ˬa†±·0ã8ðaÙÒã°gYʆb”€PJàtX;bc*7 Ÿü‰ñÅ¿jOçýpéO‚Ï*ï´ó=-K™ÌL8Ò´€³?óŒ×jXï¸å6®l9>,×îŽó¸Oy ,ó^åaLÖ⃖-}æ™aÌgs>\±—�ÜÈU`–1† Uu¾¼–½ìÃâhé3Ÿ™Žíb©åÖâKCwZ:%3,«� K#ðaé²’„C ¼%\Kå"Ùß=lÁKvf>à,c†±72ã8ðaÙÒ‡cä®EAv£”€P瞦æ‰q[S¶¦ìs¯:>«¬ê*Åùƒde)“™�ƒƒi72fæ¯Õ°~ðØhÙbA–kwïëƒyXæÞR�Ïì��ë¸+ç³MlZØŸq�Ù²Umñì�ƒ°de£1È2Ÿ™Ð²jÙrkñ¥¹‹;-�’–Õ@†%Žø°tYIÂalqè÷ö«ýóçÞÌðݵª�KvèŸ'+™Y´e±°PJ@ œWõ~b|íOŒŸ×7WûrþÉÄ®LNãÎ眲”É̄à LÆ�Þ2,¡tÞ—¥&�aYú°Àg`Y¹W&Ëö’dó€[úÀ‡¥›0騮ƒþA†eéS’ÖÞ ø°tY Ë% ó^¬o¢�ÅC@Vvô²¦C²l ö-²C‹ÏJgúú‰jhñ¥]ù™ ]#gcÃ.m[âÀ÷{ó-„v[¶2Ÿvóª]ûdßç >ìY⎭—Ö–»ˆTJ@ (�� èY6�ÌØD†üù~ø¦tþN J-”À?{À œ¹üvgí#>¥,™d¹fQ�4�-Qð°ÌKÌÀ9��eðK4Žìzy ŸÀ�Œsïxµ¥t>;g¦å% JÛ,È2hÜ6,±×"@c¡Ñ«�œX†]lÉ&kwéë'öʆ٤¥á1œeA–#…–Îrq÷ÅíZ‚윕á`YÊl‹º@i&L +% ”À¹$ gÙ“5·hÊ>—÷íÚMý³ÇÚ®R��1AVîÕ!Wù„½l‰v€�‹Y‰v” [¢Ä ȸä8JŸE� ‚yIMXæ�À@YÚf�Àg„v[¶]Ù¯²[PöÛW‰y—–í †÷µ^ŽãÁ½¦ýù$ý½¼Êú‡íØ­lï�lÅ>†;]AÙ_ò¥g¿�«#í‹ÛeÞË0x¡Z ‚2,³ƒ3a#[å¢z(Á(% ”Ày%€ç°ã¶þ»l·G¦ìóúæj_% ”€¸@ ø”t�¬£*% ”€Peõþ»ìµÏ²ËäE*% ”€@±…€PJ@ (�‹ž€žeóÈ<�/Ù³ìsù˜‡r3p ?Pû½¯#x0‡ýÞ×à¦#²Ó‰hä´Ò(% ”€PJ@ (�=& gÙ“5·hÊÞønäqÌðF·V;vi ÆyXŒ÷î]égØ»íFC$sšÇÛxwjWJ@ (% ”€Pýô,›Gæ <7eÛôÑÿ¾LW7Î5Û×Û·;\|ž½ìLÂ’·Äî0(β�íÙp;³=“íg�ƒPJ@ (% ”€8Çô,{b²æ–ΔÝ7:m4ߨ¾ö�|.ÛÙ¦kÏ }>pf çÛ>rµš�w´v;é•€PJ@ (% ”À©% gÙ<2OàµS¶Ï v=µw‚ŸçÈ#Ò‘·³{ôí:‘ë´-~b‹µ-ç¸uë¨'x¤ÖQÅ+% ”€PJ@ (�C$ gÙ“5·¬š²}±++Aà'Yßáá�õÜ™�  Û…%›ö*®¥ª‚™?(ƒ#­ÝÅsóŒYYòNÚ••Œ!àªaçA†%øE€F¸†FðA`K/ež´p•M (mCÕ–¥O� ¶cÙœ&w‰QJ@ (% ”€¸‚ èY6�̸3e‡·>Ã32—9Ï-&Yo ª°ØK¼…1,0Úy %“ŒûT p¤UyWnaž1+KÞI»²Õ 0à%g cÁ FopÈ%gúT}LÙÒ¿˜töZ«a½°PJ@ (% ”ÀUN@ϲ'&knœ²15ð›­$Mà¼+ç^fFôæZ‚?–²ÞÚË’“|†Ü[jà–õᨭ%;0né�‡¬£É%ïêó#vèë­ÊbÃA�¥»ýà²l‡9öÍþ¥n-}‹Çiágp¦M^‚ÁF|F4~*]•€PJ@ (% ”€% gÙ<2Oà‘){í§t×ûû“1¿c÷ų§a·Å5T}ÙÚb´—2‹V,nár#õ-A‹o�–yÆì³/ž= »-®¡:¾lØ¢�è[•í áÓ7Á.h  ïÃæŒÑ@0Ë ÖR (% ”€PJ@ èYöÄdÍ-‹S6>“ç7[ë>óŒÙa_<{v[\CÕ—­­!F{Ð Zýö%Ž4anKódÌ[ì‹gOlçæv ÕñeëxpÀ@ã o•ÛÁ°OßÄ”èÊ`чÍs#ã¼– +% ”€PJ@ (O@ϲydžÀý)»ÿi¼¬Ò—ùíº/>8Ã6ƒeÐ0ÉxQñ¸-[@ç¦mùÀp3€v€4°/ž=ÙÖýíƒËÖñо(Tú,Ê~žRÆ$cÜB#šÐ¢¥PJ@ (% ”ÀUN@ϲ'&knéLÙþáÜ®xƒu”¼+,;$—°#@écUçƒÌ—ƒ-èh5Bv0~ªÎîÁ$,­13-Òwq}Þ±ô�ôÜÞj�¸ا”�›÷­}ú&vÂ->lÞòÑl ªl©”€PJ@ (%p гl™'pkÊ.?½÷I|°ð7º2àw`¿jÊ,p&›€A ø0“1Ê|€ Ø×ÇØn«àx^Bc€yÇ\-Yx«Åeð)õ0 ˆ­B;–ì³hbb4°èÌC;–Ù%Ö8XŒPJ@ (% ”À¥L@ϲ'&knéOÙá=3ø ÜeÜ‹F” [¢°¨iÙÂÁ@Öpxq¯q+xNƒÁ3úó­•wÁÃ#—…Ÿ¬qwe†«-<Øå2¾fÃ+v(õ%ÙÚ‹Ý‚¦ôÉ$;äª{ŽhL Y8‰–J@ (% ”€PW'=Ëæ‘y·¦ì-o¡Öçü-žêUJ@ (% ”€PJ@ (�#$ gÙ“5·hÊ>»T[(% ”€PJ@ (% .Jz–Í#ónMÙ{­ŸDÝògj/ß| Ør°Vï^Ü2oñ¸¯–àòñ{Ïù fxùÞº#% ”€PJ@ lL@ϲ'&knÑ”½ñxœö½Ì>0É`â.ܤը¯¶º6ò¸¯�>¨}ï9_Ê ÷žÒz‡è¨J@ (% ”€˜H@ϲydžÀG›²í›«Ïºïp´lÊü§mK·pZ,�¦ïå8Ç;Ä.ýïÂÜŽ‡ðœ;ɾº.ßí+ù(% ”€PJ L@ϲ'&knÑ”]¾¯N“Ü8E¶f�ß¡ßÕ¯ö�·TÏkß-gÞÒ{ˆû=„ç–{ÜÞ{ùîh{&rPJ@ (% ”@'=Ëæ‘ykÊî¼»N°äó‚]'ÎÖš5Z|‹~W¿ÚwÞR=¯}·œyKï!î÷ž[îq{ï廣í™ÈA (% ”€P�ô,{b²æ–Å)Û? v>¦² #³ob«šZÊÎ;áê”×Ú[n¥ø°Ìß8€A8 L:oaºØ- ŒapÙªì†ÒZÀ&ySfZØvôR¸Î�$¸•&a#[–2Xåjvp&+™l•[²y‹a·àÃ%à ñ%ª,3Ò–^b=k„•€PJ@ (%piгl™'pÊÆN€ðÎ@�ùÒ5¹zy™Åb,D´* ï -Ù*˃-[Öž�,ƒU‰®ú]e58` ±3¾la«¢1øŒ€Ð‹eè@�ùÒ5¹zy™Å†‡/1îeœ[¸j˜ŽƒK(Ád�€PJ@ (% .Mz–=1YsËâ”�· >^v/¹2€U|Þ>— àNèÜ&”M.¡+ƒ v�“ŒYÖâ¹Ë4hq}Ÿ1qKŸRÃÕ»mYZEæãY{ y¯Fï|¸Ô¹e„q7>û¯âóvlUâ–³’±+3“F”îc×ÐÎþД 4j©”€PJ@ (�‹ž€žeóÈ<�ûSvx{ðÇN+•8A†^è·óÙáB3H,€ÖMAÖ´x4�õ.pž1+[|§+´„%Ì–8dà&áše‹Lyëb~‡ì˽ ; ÔÒ—­k6í¬åÑ@y’ ñ%ïȘ«ÁmÑ' ‚CXò^}œ�Å(% ”€PJà‚& gÙ“5·hÊ.ßNùs²ËÖò¥ù!1LÜo+çÒ èÊ’‘å^� KX>,]V’p(�·„k©ì�­}™Á¶˰cI¢šA©¤/Ëk64&´C³–GckÓß:¸µ¶Ë¼3¡�—há´0ÄJ@ (% ”€¸è èY6�Ìxû”=þâO§Ü…�µ‹$ ® .ƒÏ¡•逽 teÉÈr¯@†%¬–.+I8Œ€9‡VóÀÂgÆ@I² àRȰ yÙÒ;oWn)IŒàÖŽÖ ‹V-Ÿï†ýjÖ°žñâñ$PJ@ (% ”ÀEI@ϲ'&knÙ>eÛçÌÁwKë©óåuÐù*È�ÏôͶòoöõÕÐâK»ò2º\\’쳈çòñl£L‚ €Oå%f`ÈÎrÄgèøp©ô4|2àö ÜÚÑ­úUÞ®¥lñìo¶ ˜Z-.èB, ”€PJ@ (�L@ϲydžÀ[¦l{?àódá­ª¶d�W³k®8F€[r@΃&}=ŽÀ¶eo&ÑÀ„·dü±ÌÊE½p#JN†%“ÜeØ•�ì,K}&�É×àÜÀ6È‚Éâ2´cÙjľA€Æ‚Ì–A`Ë Ég ãe ±ÉÀ(% ”€PJàb% gÙ“5·lœ²íÝâŸ9ùšßB\uÌšÌpUØØKD«LFÄ®Á•¿Se{‡„‰öiÝ{iÃ’·˜hg·+Ó„^.ÏP’¡‘—¥¾Cz©àH-M«‹Ï3ˆy‹¾íH•ÝZ`�á, ‚ ñªwµ0”°dÍÅ~/ôð:¶PJ`{z–Í#ó>þ”}迹úþåg€’ÜþæÜ¯ÃöCæd¶xf·-÷;â6¢Ùr†‘ÞãŸa�;º•]Gî4kæN2וwo1ƒþ.³kËg;_nQ’ý½¼¥¯ÉÕ¹®ìÓbíŸ÷=þŽù GfNê–ý0vå–®,I69öclÙk»Ã–ÝÕ«”€8÷ô,{b²æ–«9eç÷í…øûtã§—òK2ç“™éÆlëۈ¦4ß#yü3ìwÇ-ns½s]ãß²qÿqåøî¬lù·xîe¼Vï½s]¼oÚ?ï~üóŽÌœÔ-·Ãþ”}Ð÷ƒ™÷ÿf,«NÚõÐgÛî¿å¨å½/&Ö:sË­¥ßÎÇ|æãŸa¿;nqÛÒ›“Ü3~ªqåÜÙJ'í:îYúŒ·HyüSÇE7n{R·\ÆI»úM�hÆoÿÔ”åÝ�Ú!u% ”Àáгì‰Éš[úS6þJào%þB ËCɤc”ÖjÐÈ ›âÀŸìrúÀÞ˜ï+óØ€»@2`0 €Qè” 1à2f€á€ÒZ0qÒ–\5 @�W!`>;t 6/[òŽ,C{�±&`(oK”ÖjÐÈ ›8ãšVõ@<üÁ°GE ËCɤc”ÖjÐÈ › 2l\özµSB»�-²²×I>C ³²s$´³Æ0ï {²ÀphA¼ß%¶îØŽhr;ºJ¯Ù—± 8ø2´ÃâEAËãÀö21Ÿ�1û8ÏW®² k —2Ö�–J@ (O@ϲydžÀ�)›ÿ!Ìï=&†&ÈZ<XJXB†ª%€²¬ž,9wlïÊ7x˜€ÆÀ‡ö¾¬Ã½%({M‰öJ“>xé�ÌÌΡ„%4Î` À<º@¹wÀ»0ÆFL M�µx°,”°„ TÏàTá$à€,ð¼„&hZ<XJXB†ª«;œ}\ÐâC»-ƒ2 Z†¡‘—ÜÒ¦÷R¾f«¬12¯úJT € €5ÂØ±ã?¢)Ûјës Ë ·x—¡LïKTM‚¾µ,÷Ê;¶dlÛÒYK�€PJ èYöÄdÍ-­)ÿ(FÔ–®,Él’kdÒ°[9Ù²e +ƒU¹ly–âÑ8F�¡ìhrÉ»ú|Ë9÷f&;g¦ÕÕâÙ¡¥iñÜ»³¿c»²a ÃÒ•�ô%›°Œù–’5Ûq8ÆJå²Cz‰™�-J|§åyLÉš–? ÏôÏoU>[‡¥+K2›d&ìe·êÛ²†•ì¿/œ÷êïØÒóy\c×E’ó^}¼¸—·—2ì‹-J±É @Ëq@ë<¼ûˆ†õŒËûʆ™1“²·Ã—¥UÎ~òÖ¾^¿bëð^&`[èAfÆJNº¦ Ü”€Pz–Í#óîOÙù –ÿ‰Ý׌TñOþ¸ï›=™9„’ý÷ŽË»6²µô-A‹o%Ã<ÌKÀÎÜÅ<ãÒÄHÖ8wkõ†½²l� >XöÏÉçgÌ›2ϸ¥éïÈ]ÛñÈyF4ù$¹Ë™Öuí]gÿ|†ã3­S�ð#š|G¹Ë™Öõ¼rï+ߟ9øp£á~ow–ì3‚ÙŠõ�#åo´+—£Ä ËöÎøv}ÛMË¡Õø°l¹9ß—¥Lf†wôj¸²`ó.#˜mYo|X²Ò± Z׬£”ÀO@ϲ'&kn9ñ)oïÅ¿>ª„ù¹üý8q’V†ÌÃ?ƒ°#w…’/³˜¬_t³–ŽÎ ò.‹ ·ì½Nfæ³’yÆ-MGîÚŽGÎ3¢É'É]ΔW´ç.”W†Æƒ.[§áG4ùð¹Ë™òŠöÜ…RãÊÐÈËò0-ço†¥OÞˆÇÏ,6†õ#˜MX¬XÆØ[på0ª P=ð½úæ#š–C«7ðaÙrs¾#.K™ÌLØÑá4‹KÞe³!ë�KV:vAyÍb1J@ (=Ëæ‘yŸÎ”Ý3/þõ�öC(a~¾9ΣL&�aÙÙ¨¯lU×ò|€V/k�+¹·ÕÅ<ãVï¾4[î…Ï6‚÷{fÞ1;g†õŽG4k•y—Ã1­ó�ð#š|òÜ•™‘®¬qfÄ­ÕÛwh9·ø¼KVf¦†ìôn[“1fŸÀ‡%+�¡q`W”Z--Á^ø‘]F4­Ãx¯]Y�ÉU[tÄe)“™áãe¼VïÜ5‚y_Ö–¬Ì{åª% ”@H@ϲ'&knéOÙömÜÿ²üGzÐp»ãܵØb�-MË-ï{Ñ™Vã÷ÕÊÊx˜Œï’Ý`b U]Ë�x²Æqk—¬d¦ÕÅ±+‹K’%FWƒc “ΰ&cÖd‡¬ÇF�’ù”Õ“"q³ð9½ÊLwÄe)“™élg¥µzwã®>¶*ÀÅLr;+�s J¬çv1J@ \‚ô,›Gæ Üš²í½�Æ€·Mày M. <÷2fóŒYc˜KŽƒË~²S¸©-‡�IÁ3T±\”±]%è+¹ê8›°&W�aÍnù°[GÃ[´d#ëí˸ºG¼xæ– 8É»J2²,W­ØdÆŽ«ºJqyTWb—àx^B“�ËϽŒYÆ™ìûäjvû–KîjakôR¾²'·3Ï8;´º äva% ®Tz–=1YsKgʶ7þ1 Àï.�°Æ± 2fe0±%W¹—•Yc Jv+N�ô;ÚxªKÇ3+Ë­ƒ,hB•—¬dÞ1W/jÙ³d²˜ÖI\�Ýа¨1A釲šm§™°‘-Ù*W[çažqß�«ŽóŽYcL�•š>#â¾Æ­ZlÀJ�°Æ± 2fe0±%W¹—•Yc JŸ²‹ÉàÀ˾Œ«†¹ÑqørPVö2i>�¥—÷êœæYÓbx;´Mà'–ùÙdD“»œì]%sqÙ²–„U8?x€ YòaZ˜SÂ^‚?·‡/Ù¡Ó÷ +%p¥гl™'pÊÞ×{ ÿ¸Ø—³|”€8µðÇàÔNx9΃x.Ç}é.ö•€¿1öåv8Ÿ‹rÎÃ% g% ”À & gÙ“5·gʶw>8Á7’ޤ”ÀП÷=†Ù±RÎ�p®xÉß"„ tÔ ‘§©”€ØKz–Í#ó>Ú”½—o·L”€PJ@ (% ”€PJà  èYöÄdÍ-š²úþ”¹PJ@ (% ”€PJàb% gÙ<2O`MÙë ¯Ó*% ”€PJ@ (% š€žeOLÖÜ¢)û ïO™+% ”€PJ@ (% .Vz–Í#óÖ”}±Þð:­PJ@ (% ”€PJà  èYöÄdÍ-š²úþ”¹PJ@ (% ”€PJàb% gÙ<2O`MÙë ¯Ó*% ”€PJ@ (% š€žeOLÖÜ¢)û ïO™+% ”€PJ@ (% .Vz–Í#óÖ”}±Þð:­PJ@ (% ”€PJà  èYöÄdÍ-š²úþ”¹PJ@ (% ”€PJàb% gÙ<2O`MÙë ¯Ó*% ”€PJ@ (% š€žeOLÖÜ¢)û ïO™+% ”€PJ@ (% .Vz–Í#óÖ”}±Þð:­PJ@ (% ”€PJà  èYöÄdÍ-š²úþ”¹PJ@ (% ”€PJàb% gÙ<2O`MÙë ¯Ó*% ”€PJ@ (% š€žeOLÖÜ¢)û ïO™+% ”€PJ@ (% .Vz–Í#óîOÙïH_ùí‘$ï`M®:Ú}áÃ9÷Oxœ}s’ýSåjv8ÎÉóI®&£´¯æ÷]w­.hþñ@W% ”€PJ`1�›nº)LâÞâ?`øæ›o6 >ä¹ %€¾&WÁÀaxoK߯¶º¶óÇÙ¹¬=93Xk%ýDûD£Z”€PÇOÀ>Øg})% ”€Pý|‚ž˜²GþroM%�)oÄ™5¥ý*dû¸ûuî¸ÍÝiÙ…ów¶;B©<Ûö=懾ÇCû3+í¥”À¹'àS¶ÿ«x]•€PJ@ (�V§3eÛ‡‡¹‰ ßÕ¯è‹ozä­ç¶kuµø%VÚžÂʃí‘<ô=Ú�QÈJ (�ÓOÀ>KØ¿ºo}¢¯”€PJ@ xš²ñ©ÆG›#8sÛµºZü!âºÊžÊù*÷/Á½ûØ®—à^t # Ø'LÙïÿAß¾ñõþåïðןøàïøü�»×‡|çŸÜ½¾ëOþ•ïúS×^�þSúèÿÈ_öÝÚ_þÝúÿç?¶×Gì^ÿÉG|ïîõW¿÷Ïì^�ù3¹{ý§öúkßg¯GÙë£ìõýöúÏ>Ú_?ðg?úþì_÷×þçsíõ_ü�òןûØúsûÃþúó÷Ãþã~Ä^ðñþúÑø„ý@ýÍû/ñú[?þ_ùëü¿þğؽ>i÷ú Ÿô“áoï^Ñ^ŸüSöúKþú”›ÿÒ§ÜüAöºÉ^�ýËöúT=îƒ?íÚëC>íñòé×^å3žà¯ýÌ'|èg>Ñ^öYþºåÃ>ë–ÿl=é#>çúëï<ù¯úësŸü‘Ÿû”Ýëóv¯¿öy·î^ŸëGí^Oý¨/ؽ>Ú^_ø4{ýu{}‘½žþ1þúâ§Ìÿôß°×—ì^û%ÏøØ/½öú¸¿ûL}ü—=óã¿ìYþú„/Ö'|ùmöú›Ï_Ïþ[_qýõ•·âõ×'}Õ×^_}Çßþêçì^_óœOÞ½îüä¯Ý½>e÷zî§üýçÞ䯯»ëSýõõw}ê×?ïÓìõ »×§Ãó?ý¯½>ã_ðÿ`÷úL{ýûýõYßt÷g}Ó íõÙßì¯}ö7¿ès¾Å_÷ü�tíõ¹ßúâk¯o{ñç}Û½þúüo¿÷ó¿ý%»×w¼ä v¯û¾à;ïûB}×K¿ð»^úEöz´½^öÅþúî—}Éw¿|÷úžÝëK¿çg¾ô{w¯¿k¯Ç¼Â__ö˜W|Ù÷½Ò^_n¯ï·×«ìõ÷~À_¯þŠÄë5_ùC×^_õïõ×WÿÈk¿úG^·{ýèë¾f÷zý×üØë¿öÚë _ûãoøûþú‰7~�¿~ò�_÷“oúz{ýÔîõ ?uÿîuóý߸{½ù»{ý{=î-öú‡öz¼½~Ö^ßôýÜ7?áç¾ù‰þúùo¹åÚë=é­þúÖ'¿õ[Ÿü6}ÛSÞömOyÀ^ß~«¿ÞþíO}ûwøëi~'^Oè»üõÓ=ú§ß±{=c÷úîgüãï~æîõ=özÖ/Øë{ýuÛ/~ïm¿ø{=Û^ÿäûìu»¿Þùýw\{ýÀïú�ç\{ýà�ïö×=÷Ý?ôÜ÷Øë‡ïò×{ø®÷þÈóüõð�>ÿúë¿ôcþºû—~üî_Þ½^¸{ýÄ e÷zѯüäîõßüä=»×OÙëÅÿ­½n¶×½öúÕÇúë%¿úØ—üÓÇÙë¾Ýëñ÷ýw�éµ×^ökþzâËí‰/Ÿ¿nù™÷Ýò3¿n¯'½Â_ÿý“_yýõªÿá)×_·¾úŸ]{½æŸ=õ5¿±{½ö7ž¶{ý�O{ÝîõôÝë7Ÿþúßüi½á·žá¯7þÖ3Þø?=Ó^oÚ½žõ¦ÿùY÷_{ÝvÿÿrÛ›w¯gÛë-¿í¯Ûö·oÿÙÿÕ^wüœ¿þù?÷ÏŸóóþúßî|ëµ×sßö/®½øw=ð/ýõ¼·ÿËç½ýwv¯çù»×ï>ÿ¡ß}�¿Þñ¯^ðŽu·½þ±½þõ ýõ ÿúE¿ðov¯_ܽîùÅß»çŸì^/¶×;ÿ­¿î}翽÷]ÿ»½^b¯wÛëßÙë¾÷øëÿxé{¯½^öðÿyâ¯ÓŸ²ó|Àc>' ¥£ñ ‹Ý²À°OÆÌd+öÉUgX“ñˆf¼‹Ý³Cà}®¬7ª¾ _BÙ¯Bf +¹Ê8+û ÷:Îú �™d·Ÿ¼{ÉÀª_…Ì@©ì�Þ›�ç-B‰{eè J6Á¡¶¡·/³ªé¹—1[9ÏW®Âd•`|/S®ÝnäHî‰3‡-´¼¬ hÊþ€�×”½´5ekÊÖ”½´5ekÊ®FþS›²ó§µü120ha>Ûp‰ñ„ŒÛ—VNºŒÜ0d�ç%4¸,ó}¦ìÂŽÞ[j¬xtÀ%,YÃ›š —ŒAc,%^²ls#cndžñˆÆô�q/cV8”]¨PŠ[¤÷æ*óÁËÐ>–…/Y¶ˆ¹‘172°ËÉËh¸‘1˜x­,´c9âÃÇe{–‰¹4 ä)û±Oxòà볿üGßÿƒ¾�ëY¶žeëY¶žeëYöµÇÙ×dÛm=Ëy–ÝÿÍc¡j¿Ç;0ý¥éýqy_ªè:÷)Ï„�"^r’1ËZaÙiD©#>¥&�ai{�1à[ƒ 'q>�ƒËNo.µÐÙ+›¸˜yÆ-«ÖÖ¡·”Mk æsKéÌ-޹-%`½ ‚Uö ‚°d=JØL ¸·Õ²VSn$ò*$�§ìw¿÷—Ê×{þå‡ùWÞûK¿òž‡Ù6Œ¿ÿ_üfMÙú‰qýĸ~b\?1®Ÿßþã6áú0»xõÿ>z­Sö¢¿ |ïbæ\~Ç8>ïä�(ù³__3Xe[k K˜>,]È°ÌæY�}F48$@« ‚xW¾²¸åø°t‡@†e©ÁÖ¥¸ÓÂzÆ04ÐâYÃxDßÒ0ϸåïšÖ•»Æqk_s(K%ÙÙ®¥gÞq¸ÏP Kˆ�Çr”>™ ÇÀÒ÷e}£1ö)K¸Aöi óÁKÞ‹2FK ²^Ì•JÀ>9àƒŠÏË¿ÿïÿßÁ—MÙÿ�¦lýwÙ_y»¦lMÙš²5eŸã”Ýù[›§ã =ewî‘KüI�y``@Y dXÂ!ðaé²@ú2_[ž%f7W:cWn dîâތيqˇ5Àá à.köélüYöÿw6e?úŽû¿÷yoú¾½þî{í¿âU£Sö¯¿öx¿cü#ßø>;ºiÊÖïÿýŽqýŽqýŽqûãøwŒÛ?Îyàíàþ!¤ÿ©o¢ZÊŠ™ ]~~&óÝ1︼¢¥¬² ” ,Î]Ø=hŒc %c d ½ K%™{¹«lɤ3¸ö=Ù˜{AŸRȰ„•ó¾li žìÚËRI†F^–g.ÉÜ•kd2ãµÇËΔ>L2fæÇ±)Ùd³³‹�)¯pË]ÜËØ”èbžqÖ„– qé òb%`Ÿð‘çìÿëÿù}{–ýS/ýù/zòó?÷ÖÛ¾à™Ïø’ç<Õ§ì?üÃ?øÃ?ø}{Šý%w>µ~–MSöûÝ}ötû×_gϲŸÿë> _»¾ïîG?êzÕþŸ¼^pV}ßÝßó¨ôÓïyÌÝ¿õÇü[/øÈÇ<ê…®ýÞ{ó‘ñÿÉëQ/:hÊÖ”­)[ÿO^úòz‹¦ì÷ø8ìWû똧ãÖOŒóßÚܾÇ)›?ïñv޹ê˜5™ájÆ}ýÄ^Ù0›´4áx,cÌ2æ�àZêQEË �-ƒ`qY:Ãí`2,ÿ°,5Fvviµ Ë­ky€–Øù|˜l²Ec½8ÀˆÄ}�­‚Þ#dЄeÞŒ+± `ЇeîÀÌ.}˜ G Kß4ë3oLèÅ'0€2kP ÊÀc AÞ¥Ô¸¾SbCáK“€}¢°!Ö?Wø”ýŸMÙŸsËÿÏÞ›ÀÙU”iãÕ��l@B ’–,HÙ¾‰,²CØ ‚ › ;4²…}g؃¢qa ‹£ŽŽ:£ã‚ŽŸÿgœq[AÐïƒþ?·+ýö›Ún�{Ͻ¹Ýýô¯~'o½õ¼oÕyîMŸzºêœsï‡o»ëÐ{n?ü�›�zì¨ìwß}WvŒ/øÊ9a•Ý#ˆóò]¢²ÅÀû²­Ü®¦²ÿPÙ•ݽü·/߇—e[¹ýÛ—ïwÞ—M•Í÷eó}Ù|_öÊWfSeSeÿK-*W@{M×v_TÙv—ž¢ÈLÏû¤J8mSàŒD#µ­aÚ¯m�ÑvÆâ-Ruž;Ö—ï×½ÀFrãTmïŽÓ©1’Ù‚3C$Êæ %a°5á”@1|°4‰‘ƒ±`�”p1tk¾-áb8±ÖŸãt0~Uº�œbX°@ÕOOU˜c 9ƒy§?ñؾ4>fk¤„ÃpF«›t*��Ò*†ŸG<‚�!N1t«µ¥I CÏd We¿ýÖ²¾ãÎ�ÜwëÝtÌã×ÍýLTößþÚ«²­ÜÜ—ZËîQÖ‹rU6ôõŒÝòü ºïìîîÝÿ¾þ,UöV.žuàM•òáJ¡Ê¦Ê¦Ê¦Ê¾ç+ÿa wŒk¥Œkº­j½,—µR^8õšJ9 å_A™‡r-Ê2”Ó¯³åÅ3®{ñŒëmyiþ +Ë™7.·å¬ÅËÏZ¼Â–7­XpÓË(gßlË+gßòÊGm¹õÕ…Rn{m‘-·¿Æ7yñM^å¾ÉË¿üY!l�VÿÊÅ `Ý*¶øµ^–(Àl/‚w<:Êb¬§•ײ}ÞèÑ ˆŠÔÎÙuöE¥Ð Ï…iÉ Ía3™rصì·ÿòî§žø6�ë¢UöÛo½õüüþ÷™*ÛL¿{y÷�ÖèÈþTîËÞâÏ©ž~Ö­²ÇnuþÊuõ®r_¶~Æx7àÇKð/¾Éë–­曼ø&/ªl¾É«o¿ÉË¿j-ì«lo=ZײuZǰ*»Õô]‰ã©SùÚ/Uæxêì+³—Ø7Ÿ~2@ÈX½ `R…j§VeÿïŸÞézï¯]]û}»ë½w»ºÞƒýþÿý ž.þÎ_þòç?ÿé��ÄZöŸÿÔ©U¶�µ¯ñÂqÔ4”…•2}¡¼/»Gnÿüá-ÎYkóî2ó\ïÑýNGyŒ÷eŸÌã~ûÒ‡lùÎÊ›²þÎe|Æx߯8dlæÏ{ì�‹W&0àe-»†(ªìÌIE#`åêÍú³ågÈAÆ01#fN2@È(�_e�Øô¬á›œ‘Sº%ö‚ª*[Ö²q_vw¡Ê¾vúÞ×ÎØç:[¨²÷:ù¡½N©”½OyxïSW–}N}dŸÓ*e_”y�ÚB•}òUÏCbSe_B•ýå¿ûËoÜýB¥ÜƒÒ/ž1!ÜЫ²‹va£êTÙ¥_»š°Õô]¹ã©?[~†|¤ÿ�Öëg£‡ �2@šÌ@@eov¶Î…ìôŽqªìé{Uôµ-TÙ{žôàž'£† úƒãÑÙh“2@È@‹0@•˜QÑEÈ d ‡�zT¶È"1ôÕ_+©ª¶dÐHÉæ´JU0‚�`m‰ÃǤ=º£´-]8†Îï4¡ê·ÂãÀ4ÆÚÀÉãg¼“Jüb8€`ª¢Iî~*zÈ d Õ Êî™Fñ_2@È ZDeW�?T•cP5Nªœ�ÑÅl¿Ý©Îæ#u«Î¯ý¾­óÇ¢r0éñØ~sò¤1~«õøçE d€ ´ TÙ�]d€ �2@z¨Ge×ݧ¶JsH~Òü°• �2@V TÙ=Ó(þKÈ d ÀUöj™ŸdvJ•�Iad€ �2ÐL¨²3*ºÈ d€ ô0°zUv3§ì‹ �2@È(…ªìžiÿ%d€ �2`€*»”ù“�2@È8 PefTt‘2@Èèa *ûœ4ÓàêË´d€ �2@ò Êî™Fñ_2@È jVÙVðú‚º¡B¸¡ÉógD’2@ÈÈ PefTt‘2@Èèa \•“Þy*Âs'd€ �2ÐÏ Êî™Fñ_2@È JTÙA‰-Nǰó ëôçA¿dðñåz¤#mêB�?Ç–ä,Nd€ �2@ZŠªìÀŒŠ.2@È = Ô¬²�˽Rí§oXXLTý’DwQº-½øF~_züi­’Vz 2@È -ÈUvÏ4Šÿ’2@È0PŠÊÊàSë·smëYDQ¿ŽMØ6­L„ئØxb�³k›ptìXZúÉ d€ ´TÙ�]d€ �2@z¨_ek©¨/ýÖ¯=ÖÖ~mkdQ¿ŽMØ6­tB|@lf[°Ó—d AÈ d e Êî™Fñ_2@È êTÙ"ý™@°ÉqÚj,6ßï#köÈ}#?§>¯˜-Ù¤#ñÐ d€ �2ÐÊ PefTt‘2@Èèa •]U À7ìäÁúý‰DQ¿Ÿ¡6OYýJk8U=6 €­›h“2@ÈhM¨²{¦Qü— �2@È@€�šU¶ÈC™ø4‰Óâ±QÒ*I€&í´¶$ñ›JñÄòÇü‰NmˆÔ!Ò §¶5†6 d€ ��Vc€*;0£¢‹ �2@È@µ©ì $ :ý‰�…‰_¢|C00Ò­Y�í÷¢=…2K �rªpæx õH0 d€ ��æ0@•Ý3�â¿d€ �2@ Ô£²�K¹/ªAŒ8­!0î`PÕ­%Ú~Gâ)Ú‹3H¿êx�üíˆx2@È Íd€*;0£¢‹ �2@È@µ©ìÌK¹ÕŒþ13œ02@È d  Êî™Fñ_2@È š¯²[p¶À!‘2@È ù PefTt‘2@Èèa ¡*;ÿz]RÖÍËJ˜ÈSg_6<‘¿õ›Ò ¤[[ÿìb#¬z^U±Ìô“2@ú TÙ=Ó(þKÈ d À@+¨l«JJ™Z”"p2ÇSg_™½”BK#’T�ü4bÌ¥äÌ<¯ªü”2&!d€ ¬¨²3*ºÈ d€ ô0ÐÏT6&õ«›ü 9È&æ_-ó¥¢�ÚÁã˜ÌÁ$Â[¶)ó¼2a-{š d ÁUvÏ4Šÿ’2@È0@•íÏ"¬>òý¾'ÃÄü~/-èÉ|&¬O0=¤ÌóÊ„¥ûb+ d  Ę̂è"d€ �2ÐÃU¶?{ÉGùÈzzñcW¯Çž5ŽU‡Q?U“¯F@æyåµÏ…]“2@j`€*»gÅÉ d€ ¨Me[…¥µ†¶õõZ„†6 �bK«5ÄïLª&UÇp’ ª~«Ð`Øï8uUj§µ%V0âñÁ O,Êñ;½ Ì™L0ƒ8-LªÚÐM9¶Äj°ã´Mr”Vkˆß14Ìi’ªÆÀ¶~ǬÆ2Át’2@úTÙ�]d€ �2@z¨Ye‹‚p =IpštÕ´Gl�¶ø}ÃA꜉¦D¿ ž`ªª}i@0I°/ëLôè7ÅB´?Ö—“­(Ì Ï¯úc³±¾I+à qú†Àü&ñÂ8Óð{É $Œ �2Ðâ Pe÷L£ø/ d€ ��¥«l(‹ôÜÀJ�ñ=U[ú%–-’pê1ÄìX_Ã$ºF“Î�¶Óùml £3Ç€Cêli[çŒÙÒ5Ž�N.` ‹�Öï×v¤“kŒögÚ±®3à #d€ ´,TÙ�]d€ �2@z¨GeÛ«¿V"ÚÖ­"7ÄÐ3?*§5U¿?–A�JŸ�ïמX¶¢~�SÛ9y,Æ9ê$°�V§ªÁÒ¤�…l›Á†ÄlÝšîQZCgð‡—î7ëg zd<ÁV:É }—ªìžiÿ%d€ �2` ¡*[T†oè©…Ö;ÚoíXkãü±ÌùcÓÈX¶¢~�SÛ™y,Ì9úy@0¹`tx![§�Ù’0Ý�´ú†Í ~IÃq:ÕD NRÕ¦­E d õ Ę̂è"d€ �2ÐÃ@ãT¶•þTÁ÷û”*A§�ŠeË÷Ç�zTé¾42–­¨_çÔvmyü(ߣ{qìB`'U ·†SÕx €­›tž´ßI¢«¨�Ž-˜¢†ÍS4Šx2@È@ë3@•Ý3�â¿d€ �2@ ô!•íhTƒó�˜´‘p•pjXÌŽõ¥ñ1LвÅü±¦ÞŽÍüq¯�1»jþX ø%ƒc†49¶`,@ªbø~I%Mb8Q‚„ßǸª¡óT@Èè[ PefTt‘2@Èèa Ñ*[´†cèé„Ó„ªß �Ók;'�ŸAðN*ñ‹á‚©Šb$¹o$RùMÁÁHN‹—ªc8ÙœV©:0�3Ø”ãt’;Ud(ä°6ÒðÈú1± 9ùc±ô“2@Zœªìžiÿ%d€ �2` q*3-yÛ™?$Zm“ƒV�$¨ú° ¢Xmyœ$¨ê<~«õhŒØ�c@’ˆa‘U'C!˜¦ªêtÆàWƒ�Ùz‚G slÁ;~]ÍÁh¼Ø5Jd€ ��g€*;0£¢‹ �2@È@µ©ìf^ý­fif�쫟1 ²×1ôi:MRÕÚd€ �2` Êî™Fñ_2@È ¨²9eê÷ ˆdÖ†sÖºIlÃ* d€ X¨²3*ºÈ d€ ô0Ðú*»Ð”¦™ú¨Î¾lx¡³#¸o1û†ˆß1VãÙÉHVãØ5 }ˆªìžiÿ%d€ �2` T¶�á—2»(E,dŽ§Î¾2{)…–ü$­9ªôø[s̉QÙ&ÿ˜>Í&´&ÆÜ„ÞÙ }ˆªìÀŒŠ.2@È = ô3•�)JýJ!?C2†‰ùë™eÕŸ³þ õŒ¿¶Øü1ç#k‰DÙŽpOÐhÚx‚½ûÎÌaû�ô�20РÊî™FµÊ¿W]uÕ.»ì2nܸÁƒãøáøK_úRþàN>ùä &Xüg?ûÙ¶¶¶;ï¼3'|ÿý÷ßzë­-òóŸÿüM7ÝôÒK/åî¸ãP½téÒØxðÁ<ðÀM7Ý´½½]>;Éc3#¹þ‘Vø˜Ž;î8|U†:mڴ믿^·–k·þ·ëøã�3f ˜Üf›mŠž»þ/P4–øþÍU¶?5Ê×>9È&æ÷Ç“ï©?gýòG[2ÌùÈ:Ç–ÙQ&¬ÎÁ oÁ!?Ád€ 4‡ªìV›Μ9sÏ=÷¼âŠ+î¾ûîóÏ?Í5ל8qâ²eË2Ç ´þúë[ðòåËï¿ÿþ^x!'ö3ŸùÌ'?ùI‹¼øâ‹¡éjÓŒ9}õ? HÕ ¼†S;÷Üsñ‘áC‡Ð–ÏNòX•�oòË�´ÂØgŸ}† †$@" æ-·Ü¢%Ú-þíºîºëð½]¸pá}÷Ý'_æüÓ×ÿò£ˆ Peû’|¡‘�¬§?¶qžzΨq£Jgnµ1Ûñà˜6Z[mä2¤œÁW=;ÈèÇ Pe·Úñ™gžÑCêèè€p¸ôÒKµ3aëÕÆ,ÝdU6–ÂÓ0¶–ÂÀ«¯¾jó`-5¶–Û�ððÃãë1þ|›á•W^™2e V´K˜Ÿ¤Å¿]§žz*Ø>ýñÓCjc 6•m'áZ#h[Ï+¬ß9 Àñ“1pJÇ&ŒŸMš`ø­ðh€c[¼ãÔUI¨�Ö–XÁˆÇçx$O,­ÚÐHí[Ä–V1¤ÉÖ[âÑH§5S4ƒà¥;ñˆì­¾_’ˆ!IÄH4 Æ~~H“dO:Ö�ìd@Uzñ ûMô�2@„ªìÚ&]M‹Â’œ–Q~¿ÐY³fÍÂjæzë­wúé§ŸtÒI¢Ôœã/¿üò 'œ0vìX€·ÜrËx™/¹ä›S¶ËZ‰�&ù .jcÝj»”‡ ‚ÕöSN9EƆ!í¼óΣF�BG[mµÕ=÷Ü#M0-Z4~üxn¶ÙfØ—[be ‚Ÿ={ö Õ'Ÿ|rï½÷^{íµýÝÑ€ð#�Xš´aWœ…( 1lœ)Ö¦Áˆú»¿û;�Ú •�üAñhuåç>÷9I2ÁÃSO=e=°ñ•ÀÉâsÇYàìž~úéOúÓ0FŒ±ÖZkÍ›7Ob}£iß® /¼WøÎÀ¸à‚ üÁXÏÍ7ߌý€á 6gΜ‹õƒsùÆÂþ]Â~.gžy& û¹€XéÈÿúI�Î@Í*[fãŽ!—`N“®Z˜öˆ­3ä$ â§­JŽ!`Ço«Òê™Àb±E{ôóˆGR‰GÒê‚qü¶*­bap F £aõ`¤¯`iu ;~TmSU¿dp 'PZ¿_�õ ¤$ñ ›'ëøýpàŒJðŽŸU2@È€f€*»Åg�Ø* É5'ÄÔèÑ£íݸP�ŠÐÚ²ëØQÙGuÔ AƒN;í4(GÀ 6Ø™µÊ¶·²b1º MÐÑv‹²¿Ú;“?ô¡ÝvÛmÈvÑEAäÚâ.c¨¹í·ßþÆoD+t1ÄšmÅÆfd>üðÃ!‚…ÑŽ9R«lçvZÜ*Ž^l,´$ôõæ›o~Í5× ü ƒÂЋmµ* ŒaHЕèè†n°­ Šrã�7¶[ñ/»ì²C=Ô6!ò@€c£õâÅ‹¡ë±Kw¦£õù矇Å_ À-þVpùå—qÄ6Ê9:**7JCž#9b1fT}�$ •mï5ÆÀöØc�'žxB±E#”*Œ«¯¾'.›Æaã{íµ×í·ßŽñC™î°ÃØšŽmÕ` $»•»iß.|O0 |d Ÿ,¾$ž>)±A&>¬ÝvÛ !øàã3_üâÀw 1@û¥ Þ(�Ïm�ÿ/Ûn»-¾œ�>ú¨Íþ�¯ŸôKc€3PºÊÆ,]_ˆ}ÛŸäûlµN5ÒÚA<š‚! §ŸÙ÷ÄúÒÈ&Ñ5št†|;Ö2øMÖƒ£ÎïÃüV'ÄO^CfÛ‹î=˜Äï+è±Ùü£Îï´úMާèx€wºð«NìNãµíZO0 šb±Ò€ÍÀ# d ÈUv+Ï!s +±îäÑG�XÙdþâ‹/BÍU60X¼Ãc²$•¼ZeËÓϪޗ ½9¼[:*[—mG06ÙdÈ"T±˜M�(c°7Òj•-c°­²!·×]wݯ|å+ŽYôe«Vecƒ½´¢ ºÉV÷Ûo?0ùÜsÏI«øk7'UäÇ A,_hm¬ËÛ Ûm·þR¡³Ýzë­è ÏгNØS§NÀܹsáùèG?j=X‡–f�¦}»°žŽ¿�8½«Ó§O—Oü�L–m ö; ´N|.þÿùB‚çë—HŦÅ@=*Û^yõŒ]ÛºÕúõQ_µý¨œÖXTýþX=*}v¾_{bÙŠúuΘË |°ÉwúÝ—m�™NâÀül�™àR�~Çc«±£œ”ŒHí ÚN“h²°@û­;êîİxh�2@|¨²[v®ˆÅ8 èJH‰Ø g̘¥©[±¥9¸c‹ª�Wzß2Vá©MeCxbI]CÕ~á _�@æc¹[µ!¨åkè�œÀ =Š„,|gªlÌ�|ä#’V<1 tŠTVaYÛŽÊúø€µ±‚‰µokë#Ö…í�tZ¬¿cõ0üiÃÃþd¬}§ïR÷U¶h7äArô‚?Mè®};¨²v³ƒa<“ÜúsT¶ˆP„`ÿF¢·ÄcÁIœ^lµiß.lÕÀ¨°�«êÏ>ûlp0pâ ø¸�0xûa`¿±pø¡²ýÿ/öˉVªìu¼©¡*[f쾡/Ù¶U{´kmœ?–Y�ÊÚ9Ȧ¨ßïÝ÷Ärlò�¾G÷b[ƒG¦=¾L¢{×¶®=e!umÛ¾¬'xÔƒ�-ÇïW-Ò÷K’`“uÆbµ_Fâ±Ì‚Œè'd€ €ªìÖœ=B-bY |ZùCÝpà ¡%µw^U6t"„ îk°•~µ©l$�l‡@ÃÝÊH‹FlH†@Õÿ�0D+¶(£É"eø3B¦ÊF?3d—ý+„¯°´hÂ8± ^:ÃÉO b-æÞ{ïÅîwÜ ÌäÉ“±[bµá¨l|²ÑÝÂ.Të@mç¨làñ·ì”¶�Ø1ŽÅY�Äß1.ôæïRÀùØ6éf~»@Î Ÿ&~0¹Å@Ÿšýv}üã×Nkp®†[ËÆ×Ï"ýkÙþÿôeaú ã²:ÀèC*ÛÎÿõ18™‰É ÔQ §†ÅìX_ÃýÁñ [̯;˜ã´ÕDw„  þa$ƒ&Ý{¬/�Ig“a‹áÇJ“N„ÅÆãdpò[ÅìHg¤oÇã8�ªŸÄñÅ;ᬒ20p ÊnµÙ#ÄÅî»ïŽ�ÊUoãÅÈqç,�xj´= ¬€§ïËÖ›‡÷eÛÛ®õS¶Ò,Y �‡Ã<Ôh�SÃî\œ�´:÷eC% ò ›´q/¹¨l<µ�í’VIb _aiÑ;x_6nLÆmìò$4'§SõÿJ €²T¶ÜS/™c€Ò—Ýïx¦:t´l¢9XæÆÖ‰ªGe¯®o—ýfÚgšÉ‰X›Ãñ‡yÜ:þ˜€û²q³¹mõ¿N8T¶ÿÿû, _’ز¾“‡Õ�Æ@£U¶ÌÛCOEœ&TýVx˜ÆXÛ8yü ‚wR‰_ LU#É}#‘Êo²žªI,À ÷�™yÒ0?m°_?‰X�yî€ù©œ!ù©|€ŸÄz|$<‰&Á'0‰&'Ü"�cUŒ´‘Ó©ÆÓ&d`À2@•ÝjÓÅC9ÊèÄO„h•ŸØ­Ùðã©Ñи¡7·B#`a.¸–�Ó„h¦k�V ç‚Nmø9眃NñŒqÈRÜ# Q©Ÿ1ŽebHHìéE+’c„H+oòÂ3ÆQÅg¬†#3žާf!•Íì+,}FòŒqü±8вF솖Çß ìé€(û&)üÏmÃff0†Ç•c-øY8*jNþ8`‡‡³ŽíÇÜÞŽü�dŸ°åNœ>NO?ÃÀøs�¾I|ß}÷Ũð‰`+>ž%Ž�@“ ýV]ËF¿‚×FÓ¾]ø†àŽ{œ¸ýh°–-‹õz<°±qßÜ8x<4„ˆ÷¿N8><,Nÿ�HÇ·ÝÂôÆ du€3Ð8•�¹‡3ó×Ugf¢›`ëVÛ¤=1ÛIâä±Q9 ˜ß£@µ(ÆÏ`=~xlÕ€2˜<áŒå©¹/gä’ß742Ý*H&~1ªÒäé8¥šŸ!–pÇHô•hÒI¤ Á‹!0ƒª4‰!ñÐ d€ $ ÊnµÙ#42tÄ‘þÑBÉ0T-vYcÍ›¢�9æÜ},ë¡ÐbH%/Æã¾íû²!Êð#¢ y‹Ôœ^ÈC�XG8~ä5ÐÒ5Ôö´CóBÓá‘×»îº+¶^K+"žý1ˆVˆ �vÚI^, Y±uƒ ÉȃóÕgý‹‡~ãt ±!£ µ\…îîr ºýâáfã¶_$ÁPe 0œ3Âs¹!B…XtŠmíÆ°þŽw¢aÀ¸OƒÇßЊ� ƒ.ƒ Àƒ¶€”(m@ek¢�_HPSÙV¡Páºû£ÇQ8Á;Ð!9ñ‡ Œ'Ž´ÎÇ�Mûxt<š@)ô£¼¼Ìi%<¸/Éu0¬?w}R°›óíÂ_30<…cÃf‘ïÎxPŶØb œ,>|:ò¾l4ùß'Ü~.øŠýŽ�.�/ç #~d 6•�¸ò–Þ䫆һ`B2@È d Ÿªì;�„´�¨ ®Ì6“Ge7³köÕ8ZäÛ圠ÿ×À*2@•�?© ’ �2@ÈTÙÁ9U¿tb#ñgœ�#öã�ÉXÕÅ»“Vû™b][/¶®öñpµ1Кß.ç\ü�ü€U2d ~•-{Mƒ;Q9©Ê€XY? Î¾lxýÃ`†&3PççÞäÑ6¿;òÓ|ÎÙc_g€*;8§ê—NìvÆ ÔØ{l·Lc›ñòåËWû™r-{µ¥  5¿]Ω­ÞµlÜ;�ÿ€¸_ÃpæW±»ý±‰]špÃV[m5bÄlªÇãäi xô:n£ÀÍ�y³Í6Ãs$$f,[¶ O]À]øm€Íó·Ýv[ I¿e N•-³Ó�¦¿J<_á°žIWæxêì+³—zN¤Åcû(u~îöCé£çžó�ªÊO?>÷~ˆ!>TÙœF’2@Êe�D€Fvrâ9x$ žeWUe?û쳿ÐÔrwÿsÏ=}æ™gâùêxÚî(?âˆ#l~èe<w²ãÁ xèîX——8°UdÀ ð¨ C ž+DÒ) Ô£²«NMýër¿ñ”;ë®?[~†d ó×ó±6"g=ãIÇö­Ñês©äõgÐãi5;}véÖV;އ 4�ªl™GÑ d€ ”Â@PeÛÌx]U•�[9,X€…lYˆB‡Ê–±á!�X¹¶{QðByCÖµ¡îí³ûÆ6Úh#,£Ç�}ìc6��C,–³%�ª Ô¯²›p5oÁ.Ê�uן-?C2†‰ùëù€‘³žñ¤cûÖhõ¹Ô?òú3èñ´š�>»tk«� ÇCšÀUvÕùd€ ��B Ô£²¯½öZl,ÇÂ4Þ,SÙ—^z)Ô4^žŽQ�wÞyx ?ž�·¥ŸuÖYXÇcçáǺ9ÛŽÇøÃ~â‰'ðê¼ì6$9–Â;ì0ì<Ǧq¼·N6Ÿ£•?A¨²k›�”;ë®?[~†|¤ÏL=±~¶¾èé» Ô?òú3´ò'ž>»tk+ŸÇFÄUvpNE' d fjVÙxy:ѶdÉt ‰­wŒ�5 ¯uƒ”Æ{¦N� •}ï½÷Ö¾Qµ/Îó í°ñr´SO=ÕÚ8bq|Ÿ}ö��›¸Æ;ʈqâíä°F#È@CU¶LM­!Gç¢/~14NTm“õk[#Óv~›ß9JrÇo«Òj� N&Õ`§Uç”&Ú/¶8¶Å8N]M$‘XÁˆGgÈ·%�‚&8u~m[¼õøÇ`6æ`$y æøïä©Z æ�Ó ôó;žÌ<’Ö ¿5ülà·Â£…ìªÙ|@¡üì'±žXªXk0O, ýd`à0@•œSÑIÈ(ÊÀ¡‡ -Œ¼ËJÖÚ8Ο?_R¥wŒC/Ë#÷õZ6Âñ|¹Y³fá­îØŽ›»‘+Ôðãõîxo8n²Æ ×xôº{øá‡áßpà ±3\Æ€}ãØ[?îãÆûè!±aã·roºé¦Öæ1Æ@m*;sæ„9³ÙFæ*1ü‚É12óT…΂ët�¶ZµÉO(yü&x¤Õ7}Y°$ŒÅ @>8Ç#|°4ù†€ý&ñ†8#ƒ sbmUgÈ´ƒyülU=™ydT~B§ÉO˜Hk!ÃïE<6�T£P/;áºLe~“Û‡ÑCTÙ±iýd€ ��Ú¨y-{¼¡£qÄžc†ŸuÖYÇn²^o½õ¬’ù–[nÌÌ™3­¨ßzë­±~-~1.¹äªla#ÓhŽÊÖÓ=› ÎZ§Tƒ†Îœ¶ƒáẩÕ¨=Ú¶&ú â‘0’pê1ÄìX_Ã$ºF“Î�oWíK:Ն͌˜ÆÀ©‡ä`Ðä{ÄéjOQÛväDUíÝ�ò=ÈÌcû âc!Á<± ιÔPÕ™µ]C* æ±N&FŸÙ*0d`à0@•�9Ë"Œ �2�É@PecùwLC cO8 üøÙðüp<ô?ØŽEê=÷Üó _ø‚…á.l„`ÁúŽ;î;v,€fý3fÌÀÃñXrÜÊ�;¯!Ìíý×x`n»Æ}ÙAÂíSÑð„4(÷“O>ãA/“'O–Õs<ôXjSÙv"‘ž—S3@æØ9›ü<éu/:›ö[;ÖÚ8,sþØ42–­¨_çŒÙ995&fëüE1ˆÕ!:•cgœ(]�eðýÚ£m›Í÷4ÚëQŸ]ŽmóøG=~§5'­ƒ‰�¶¨_�Êé‚U20� Êæ4’ �2P.PÙíííNN[lóÆšìÑ —ñÞjŒª¾/U¼#�7ewttþ3ŸùÌÎ;ïŒ=êÆ ›8q"v€KÓUW]0öŠcßø–[n)KÞ�>ú(6ŸÃµ>wî\hp ¡d€*Û™u;Ó{]Õ*'J7Á޵6ÎËì ,16�Œe+ê×9cvNN�‰Ù:Q buˆN娙0'JWc‚~ëL4éÌÖ‚ÑT¿?–ÁCÂc“�•nXÚˆ�¶¨ßö‹J��­d 3@•œSÑIÈ dÀ2@•­çÏÚÖ³#ßï{|<0U�Ë–ï�!õÒ}id,[Q¿Î³srjŒoã“[€85Þ‡‰'€52aN”®Ú 8Vu `¯›rò^ƒ­m»ÈñÇ�~lÌËó§GëEG!³†ÙާÆk°¶Ó#ÔHÚd`€0@•Íi$ d€ ��­ ²�I¯3ÖóÛ˜�3«‰ÅÆü:§ÆX¿ïññã5LìX6‰$Œ„SÃbv¬/��a‚þàxt¶´̉íOÛ¶Õ9J§â�$G“8-Lª1# ‡ßfƒQ±ƒb`é×ïBò覄SÊڱáÅü6º569߆¤{I·ÒIú7TÙ‰™›È d€ ¬^•�Iˆ?v&´º³s&3±Xßo=þQ÷’ÓêŸ�Î`ít?ƒà�TâÃSÅHrßðSUõ¤“ØV›¤ªí¤rºvZ¥ªaº íwl‰ÃT­JG’A<ÁØX«ø«æq¨:ùë© sU«±Žtw1LÕä@r: ªÕÚ0~=d 3@•]â·7üñ¸Õ7<î°ÃK—.-1y+¤:ᄦL™‚×áþP¼rOjj…Q5h x;nž½óÎ;”5¦½ýöÛq—.îäÅã¬wÛm·Õ8’u�o&Î 7#㻊3½ÿþûÔQ«¥ÅãѾ\ëOðil­v‚«k<«]ec’žåÚV;W‰Ù93™X¬öc8:½ˆßÉ I|°ê$ñ{‘l™“ÊÇè Ö.Šñ3Äòø™}�ŸMctæ[Çúvº/àu~¸ö8©tSŽ�ß²%À‰&g©�@:Jc|˜Ÿ§ªGwáØëøQ•¦|Ã&ÉÁgvçÀr2Cú1TÙ%NÛÎ8ãŒI“&}îsŸ[±bU„·Ðâé¾%æ_í©ð–^<7 Ãxæ™gðî]¼*hµ©A¸âŠ+¶Ûn»~©²ñ„jˆën¸Ôá)Ó=ôPƒ8\�iwÝu×m·ÝöùçŸÇÿÄ£�>z̘1á_�Ƀë¸VááäÚ±/m=*»ŽÏ¤Ÿ‡æÏðû9 >½¾Ès¡1'À‰¦³Þ7Ò“Ÿ¾ñ9q”}–ªìØ´ª?^ÐsñÅÛÀeË–á‘¿wÝuW yúDÈâÅ‹ñÖÝ>1Ô¢ƒÄJ(>Jû2¦þ·–�÷)ãa×E9é[ø�6Úè¼óγcƬð×ü]¨o�B £Å"6.Dsiñ‚(ü C ý„ªìî/HÉÎðK&4’®/òœ?æ42Ý!l¹ÉÏú°yª«ƒªì²¦ˆX8ÃdÞ.õÚœ›m¶Ù¢E‹ÊÊßjy°D¸ÕV[µÚ¨JÏ.»ìrî¹ç"Uÿ[ËÆ»’ñ)ìüŸ6mV´±›úÞ{ï-…´–Jrì±Çb£”5g�8âœfK ¯Aƒ±*ûrc®-^®hkÃõ‡*;öÑÔ¯²íl–sÚš§9B`Íòëì«OÊuž{>ÉD’2@ú=TÙ±iUQ?6ŠC”aTñFZl±–j2®¹æ¼·÷á‡îO'eÏ//Ægíþ§²Ÿzê)œVê?õ©Oáv†3Ï<wg?ûì³ýìsĶÙfœé Aƒ6Ø`ƒÇ¼Ÿ�`ðt¬Ê¾²­íúöö¢åÊîKUv�X8ëTÙ¢\ú´þªa:Tâù ‡5 CB2ÇSg_™½È¨ZʨóÜí¹ôiêü8ò¹×IÃÉ@ÿc€*;6­*ê·kÙØž*�XË>çœs¤Úo Hl,ƒâ ZýæŒäD°W|ܸqP ð@„B¦á.fií†ý–žrÊ)r.x�ݵ×^+Õ~`àƒÛ|óÍ=ôÐ^x7žã&œãç?ÿù~pjéS°*ûmm7··-×t_Û¨²c ×£²K‘-}tîQ®â¨?[~†d ó÷•±þñןAsUn6�¹vßm#`N2@„ªìØ´ªÿ„ ä¾l¬¦á¾ì»ï¾»†<­r饗Bb÷×ûÍñL°Áƒ¯Õó•�¥Þ£Ž:ª•?‘¢c[ýõEeC�ö?• A�î‰'žfðØÿ«®ºJªýÕ°*ÛÅo)^®ãŽñä×¢~•-×Üe”«8êÏ–Ÿ!ÃÄü}壯üõgÐ\•›Mgn„]Êh%‰o4bÌÌIÈ@ƒ ÊNέŠ5Ο?òäÉØ:¾|ùòÃ; Ï/ßòhÜ­ Qvß}÷µüHk nã…F³?vs5î±þ[cº– ;묳°cüÓŸþ4»½`Á| ýì±~½Î:ëà!ÿøKìK.¹·¢/Y²¤%?�2eUöõÆÜV¼ ?\ËŽ}TÙµÍ@D#ÔîDÕŸ-?C>Ò$ªõÄúÙšï©üõghþY—Õc)ç.I|£¬q2 M`€*;6­ªÁ�•A¼/¯ ê¯ïËÆ!ž+Ž;²íN³–úPηÿ=cüŸtÒIСøøðX°x }"™C}ðÁq_6¾¥x_6þØuå•Wföi˜UÙ7·µÝÓÞ^´ —ªìØ ¡*Û™HÛ*ŽÎ@übh€ÅÛ&ë×¶F¦íü<6¿s”äŽßV¥ÕA œLªÁ$N«Î)M0´_l pl‹qœºšH"±‚�ÎPÕvÂ¥êúÉ�:†“GªN¸ø­á$AUüV Á9¶$ôÁ6³ØVmk�$#˜MZý<À‹3sü‚÷ûÊñøÙr¢ˆ!d ¥ ÊŽM«è'd€ ô!¬ÊÆvñ{‹—[©²“Ÿtm*ÛŸ'ÃãO‚0ëp SìQ¢|#Ö‘“§*,pº b¬ÓAÚjÕ&?¡äñ›à‘VßHôeÁ’0+møà„G:¶Ž²M �««:Jl?¡Ó¤38`¿  ¯Á�„~¬4ù†€ý&ñ†8#ƒ sbmUg(jë„Ec‰'d  ÊNέØHÈè X•�íâ÷/ˆÂײcŸtsT¶žè)ºL¶}š¬S0AC¦í`¸8sb5Æj�¶ƒ­‰¾‚x$ †$œz 1;Ö—ÆÇ0‰®Ñ¤3¤í`þDr›Í�ò=@óÄ2h?mµªSÃ걃ãGB9… ¡‡çô.x��Sà š|�8ý@í©Á–¾£†T !d`52@•›VÑOÈèC X•}—1/ww_„¨²cwm*Û^Ùí<9q•¯ sìĤ)?�EúGICgÓ~kÇZç�eΛFƲõëœÚÎÏ£‘Ú¶Ù|O£ý±õÙåÛ±lÚŸcëcø~¢aŽ� s¢‚U›ªÄ„Á^è$d q PeǦUô“2@úVeßcÌ#mmE ¢ðC•û¸©²�©¾žÿ;¶ž®8Qº v¬µqþXfg`‰±id,[Q¿Î©íBy,8t&α~|,ƒ>»|;–MûslÝc ÃÀ¯C4̱3aN”_µyôÑÇÐCÈ@‹3@•›Vá ÌxÊ4¿Œ™'È  b¿dð«¿pb¿‹2ý.7Ø.¾¤xA~�!³¯�£ÊÖÚAÛÝ_œ•ßï{|<0U�Ë–ï�!õÒ}id,[Q¿Î©m›ǪNìàuSNÁk°µm9þÒ�ÍñIJiÚF«îȂũc}˜xb0X#æD9UIâ’U2@Z™ªìØtóÞVþà862@úø…û]”é·*ÛÅŸ(^âÓÏ’,·‚ÊÆ|[áíô[œ2&fëð˜‹�ùu�±~ßãã-Æ9j˜Ø±l+H §†ÅìX_ÃýÁñÄÆi{‘ßÐÃ;د<Ò£Nî;µ§;}^6³Æø¶âðÈ�¤U<0|§õhLÐ΄cÅ)I|C04Èh}¨²cs+,0U>¾MþÓLí,\Ö>»pHw/¿þoÓä2¿óšÊVgïTCB:O2Í.g™ÎšÊÙ³j ùßÿÖäbLGMeÇš¢l_—Ó¼Òù]S[9û¸ÍâÎæ•ŽÿÄošúßZnUöÃmmŸio/ZƸ–»¼öÚêUÙøhìdÛ?vn•ƒm²Õ˜-à„‹õýÖãuòœVà˜Î`m€ªƒñÖSæPõSÅøÄ“Hkò‡ä#­Çöâ·Š_†!ìP­ ¦ªšÇI«¦ó讫ÚN*§G§Uª¦»Ð~Ç–X1«d€ ¨²c+;e­ˆå]…˘ó ‡t÷òÎ[¦Éea×M5”­ÏŸSCBºN7Í.çš®šÊùÛÔ8ê­ß4¹³¸¦²kMQ¶¯«�i^éú©©­œr��æÎ®æ(ú2®ý•õX[ÛÒöö¢å±îk2Ä~pÿjWÙø|dÒ.†ž¨X§õÄl��Ù±XíG¬­�Nf£[m“öÄl' ª>2ƒ(V[' ª:�ßj=#¶€Å#F"J0b$À‰& ·† F €ª4‰ác|XSÕ)]ˆ¡C¬ÓzrlëÛÒ…Fwá49UÉ�âd`• ��þÁUvlöH•�ÐÑTÙ åÞd‰�îjËTÙQ Þ<‰ 9_ªÊþ¤1Ÿ/^>Åã±+A·¿•Ý?¦ �8 j�4«…øI€MéôƒÖ�|îýàãã)��¾ÎUvlnU—Êžøbÿ^Ë>äÅy žhjöB6–ÎkZÈFÔ‹©1¶ï¨ìÓj•çXÎnÞB6úªm!Q/>ÕÑéœ}Weã¦ì//ˆÂײc—ªìFLu¨€Ò¬æó“F¦[Ócèë­ùÜûúgÇñ“�~ÀUvlZU—Ê®a“yŸÚ1žÐÑé¦>¤²k–ç}Ge׶ϼ/íOKéDkßUÙKÛÚžko/Z–v_̨²c—ªì~0Ûá)�2@Èh&TÙ±iUvZ/×ÖJ•Ý ^Ç’tÍB»o¬e'ttº©ïªl¼/ô*ZžâŽñØ• ÛO•ÝÌi û"d€ �2Рʎͭ¨²kÓÑé(ªlªìv›§q#Zû®Êþ‚1_)^…®eÇ.TÙý`¶ÃS d€ �2ÐL¨²cÓ*ªì´^®­•*›*›*Û•ð¥>ýìic–/ˆÂUvìr@•ÝÌi û"d€ �2РʎM«¨²kÓÑé(ªlªlªì†ªìg�y¹­­hA~¨²c—ªì~0Ûá)�2@Èh&TÙ±iUvZ/×ÖJ•M•M•ÝP•�;²_+^…ªìØå€*»™ÓöEÈ d 0@•›VQeצ£ÓQTÙTÙTÙ UÙ/óõâåE>ý,v%èöSe÷ƒÙO� �2@È@3 ÊŽÍ­¨²Óz¹¶Vªlªlªì†ªì—ÚÚ¾ÑÞ^´àVnüp-;v9 Ênæ´„}‘2@Èè PeǦUTÙµéètU6U6UvCUö+Æüc[[Ñ‚(üPeÇ.TÙý`¶ÃS d€ �2ÐL¸Ê~å•WŽ?þø±cÇŽ1b‡vXºt©Ì²¨²Óz¹¶Vªlªlªì†ªlÜ”ýÝâå5î—_ý!ƒ*»™ÓöEÈ d 00ÀUögœ1iÒ¤Ï}îs+V¬8üðÃ7ÝtÓW_}ÕN²¨²kÓÑé(ªlªlªì†ªì¿7柋Dá‡kÙ!…]ñQe÷ƒÙO� �2@È@3à*{üøñ_|±�Y-[¶lذawÝu—­Re§õrm­TÙTÙTÙ UÙÿÐÖöƒöö¢åº¯:TÙö—¿¤Ênæ´„}‘2@Èè d•ýüóÏ·µµ=úè£2§Úl³Í-ZTLeOϬs©4Á´�6#0›¾iftUʤfØ,Ó>Ê �f6xj¥Ó6Å�ï¼eª–·ÿd.ºÐLoF�6ûíkþÏO+!oü›9ø 3y²ÁÆÏ‡¬žDz©*–?úÞ�¸tÏF=lòÓO~ó„ºâô ÷ØdؘáCF]o»‰/;­j ÈQÙïÍ3—Î6†›ÑCÌÍ›ÇDýý‡Íì±fÌ03|�ÙlMsãögV9×tU+ï�c.ÝÎLaF5ldÞã�è︞'’yÜÖìv÷!R…qìÎkÜ~üÏ.ÔΘ�’ÃÝ;ÀÿxRe�ó‡‡÷*è­×1wï´²ºÖP3´ÝŒlžÜ³P%g5•ýdzº{<¾wCøÖëš{ö¨TŸ>È|p‚Á~ò“7/Me�üåÿJ‡û«²ZÝ>kË¡·Þ0|Ù3fèÐÊ6òuÆÚgÏá_[.€ªF5™ÜѽjŒ=Û"“!o1f–1Ó�™mÌHc ÃPAÆŒ¨"îÎwÿ:K‰h¬ž#¿D]nÌpcVi  9l›þø�Êÿ‹>Û« ·ÞÜÜs…ùþ—ÌÚkVä6ö“¿ú¸³Ö*˜DÚ¨4¶JùÆ?Vú³kÖÖ³áÖæð»Í–‡˜ÝÏë��º—™¸moÕQÙR-u-ûûÆü¼­­hA~êWúýL\ËéPewAx d€ �2@rà*{þüù“'OÆÖñåË—vØaxƸL«ìÂ�I«ll‡DÃþpÎÃç˜q×™{W–³Å9á3d³Þªø=#±QÜ6a£8f÷ÿúz¯¬ÞesÍÕ½ÕrU66Š£¿“Þ¸XTós6Þñúý¥:ï7W®=uÜ.ÙC½²Q*û�czEôœ æúíz«¸kû³{š‘ƒÍ7îu¦ÒVSÙØ(^éQÝ‹=gsýÎæwóÍäÑæõ*r ÙeíÇFqP:âõíܾˎC¯¾lį�øÞ7áù«7†^þqÜ�mï×X¨¦Žq6NÊW$ócö3·KÃ�møÏíÖÚG(Œ€ƒF@ +É E�äØdcpS¶TÑé0c°Æ-ž”‘�ö Åñÿâ�—{UöœíÌõçUªw]f† 1ƒWŽÐÝUSY@iŒ�âèïª7za›Ì1^gŽ}ÔŒg.ü^e÷ø¼gÌ !•]墦cF©*û‡ø2/ˆÂU¶üþwŒ:Uv‡1R*D7ì§Cudm¿«.cüâÀrò8!eU¿ÚýSV6æq ½!-^µŸW‰ŸZ0•î%hM–ô°�ö¡³pF^n5AQ¹µZ69ñÆ Lºp §Ç®²ñÞ.¼/{̘15¾/Û®eoü£^Ý”µìúN¯¬ÆZöí·õVËUÙ+ײt¾hçÊZö=‡Úê©ÿsÅØ-Æo¹`Gi­j¤ä°ZËþѪkÙ÷ô¬eKø!“+·lK5eTSÙv-ûG«®eß½»Á^ñŽ®\à.-û;/ª¹²–}Û�RµFûæ3†Þ|�ãŒU«IãŽÈZöÝ;ÆEDãae›WK%à”(îVôøM³@‰h¬eHU!º·WÕt¶êO?³kÙ?z®WDÛµìû®4Ó76?ùrÅÿúóûþ«z1 Å]EÛµì‹Ô ÃZö÷Tª‡ÜlÖÙÄŒkfh>p¼Ùxç^LST6nÊþÏâå'ø£U¶#­Uµ•�ÿ~NÕ5üttçIZŒ>:x__‹G#ukëÖÆÙ2]i\<³ex€“ÐWN_þ;”õ©IBÍ€8CcZÐvF‹ª¤mÕžV°›<*‡¢Úhò˜k¤%çî7•å‘.|Cw1ÀU¶šF¹fÖZ6£‡LQ÷e¿Õ}_ö×͸ŽUïË>Á¬5¯W‰{KØÒTu-èh¹/ûw¿®Ü—ýÊòF©l¨æÑSÔ}Ùouß—ýõÊ}ÙxØ8žŠ6û¼]«*k HÉážg†OQ÷e¿urå¾ì¯«û²m†O2Ãý¶=!)£šÊÆRõ”5{ïË~«ç¾ìqÃ+�4Çe�A•²þÈÞ]刊•˜?žrÖ{_ö¯ß¨Ü—½üyiµF©*ÒÂ�û²Ï2f_OeÏ,IeC5¯­î˾´û¾ìS{duå6dc0€*âZ 9,MS6ì½/û­^y_ö~»˜ËÎì•ÕŸnößµ·*±¾Q]ãAâr_öMoUîË>çënÔÆ»˜}/w�¾Ö.u-û§mmÿÕÞ^´ü´û# ®eÏ™3O‰¼óÎ;ñ+òÖ[oÝzë­G�½ÆkLŸ>ý¦›n’ß›O>ùäöÛo�?WŽ;öÄOÿ+¯¼‚¿dÂéÿ%S0­oÔ¬²;z$v7Á½rÛV mªtHÔHóÛ¾Ò9-¦”£ÌUJÉÆ$>Â0 ¿•ž–b@>¬²FL˜ï͙̆�¯é Û©"amc¨-*ü�ίGbûÂQ;k°›9æ† )ëôcùá2ã÷K•›àåªìu›¡3ºŸ1þW3f¡6»"™7ù÷îgŒ®bOÂfV`Çÿë…£&­�7|CΔî‘Ì‹·73ðÄïcÍ_O5 gV^à…'ž}y?ó³£*²ÿÔîÍûíCJSÙ‹w13ÆTž1þ×…fál3{\EAÿÏéæ—ó*å¿æ™£§šc¦™ÿÆãâZš½ìW‡~âʶéS+Ïÿà 9s^ûV[Tž1þâ³v‹øÈß¾‰ äšäGßñcƒž i|@÷‹º°uüºî‡Š¯ß‚=äx v‰ãhçw¿uK”8„yºTÈxÆ8žjŽ­ãòŒq ù 1“DAç¾ ö=‹?fflRyÆø_`ofϨ Ã¬µ¡¹þwÕS•ª²Þf~ÕÞV´ü¼ûZâ«ì+®¸b»í¶•}Í5×Üpà /½ô´ó\0xðàOúÓøúòË/O™2åðDZtéÒI“&-X°Àþj=ãŒ3PÅ]9+V¬wå`Qì·nËúëTÙúJÝ‘±$­ñbç¦1VMKBm$šÒ9u’zlrRO6Æ’at¶öÃ*k<òÑ; c½ÄüNx°ZOl0¡ïô»pr•·ý%lñ”ª²ÿ½Íü¶½pù÷Á�ã_üâÇ��wŠÊv~[â^›«®º Î;î¸�Ž„ú¶€�üãl°�µ‘Až0¹lÙ2Àîºë.'OëWkSÙAó§ç9QiLW÷²µß‹õãü鈜À¶ Ç:ì´Ç:ó0<Í€ðܪ¥¯ô�ØcÀk-äO|%öRhHõ€ccÖ~m×ÓW¹±ÍUY}••§\&s²5zä±üŽŸ*;6ÁËUÙñí߉5ëXSbѹAM¢›cä¨ì’1«Ï² ]Š uQÇ"“ë4VQÁ…$s `_S7ÚS}Z4rýF©*û?™ß.\…g-{—]v9÷Üsñ2¨²yä‘Aƒ}êSŸ`áÂ…S§N•ߥ?ü0BðÖû¶ÄG}Tšð¶ÄE‹Iµ¯�SÙ «ýÖvŽ&ôc1¡–¨/-±–Èi›p¬çÇÎIp &Ñ3–[’h°8Ë2lr}ô3ëÖà`Äé �TN+ª ³*ݯmn=þQ'÷[ý<‚°x îN@LctI’vú0ߣ3$l=’X’˜?‘6Ø$}ÕÐjCôHb¶$Ow˜C2T5l Ó~±ó{d,³`ÅèX±ý$™É †h›|¾G’kÃ÷;r<:\Û±TiŒô8cÐÝ”cK¬ÃéTc0ªìØ4�*»º»dݳÉ<•–*»ÊÞïÚä6UvWiJ¼T•ýŸÃÛ:G´-ÿ‰ý«ªìË/¿|Ö¬Yö×£¯²Ÿ~úé‰'Î�;×N=õÔÙ³gËïRl#GÈç?ÿyl‡�ÕpiBÎyóæIµ¯ýUeW•ØøVtDþ MÔüc'*8Æ2è™LÚÖI,R{bùkðKrÇЩœ&©æ`˜:†ò ›Áâµ­=N/,Øê`d<O!CÂ}Cçñ[Å#0ñ8†HxÐdÃôèÖ˜í Cª‚�6¤µ�!Q‚цÆ[¿õÄlÁKñhCZ}CÃÒ¶ƒFj¿Ÿ_<:DÛ1€ø#Ã8~[Õòí`*8%C ­ùFf ÓiO0�ƒAx ¦3—bë®Ó6Z¥Gžã‘ª5|UvlšG•M•]ÛÒvC—­ƒÉ¹–]úÒvi :g¥»T•ýË5ÌŸ‡ç–§‡š…ƒ+åŒÁ•K„¬ec¯ø¸qãì:5n£†RÆžpùU‰VÜ…}衇ŠkÙÓ¦M“ª³–ýØc�IÖ²Ï9ç©öcõªl{ù] À1#à‰]4§$Ï4ü9‰hֳѪóhÛÉV5–Üúõ8áÑÝù�¾xëLäq0º‹´ígÖxÝ*~ëÄÑzr0[§‘Ù—3Bœ šd�¦mÄ2;€ªÕ`rÇ)UmTÍH†`«8¦ §ÕV-À· Cc|?Zµ3�w`RMç·0‹qú :%- ð=NK˦óµƒ}9N©j£hG‚·I¤44FÛì{à·N5FªÖ)0©–bØ®mª˜-]Û!Y˜µe âô ÁÀ ÊŽM󨲩²©²ãú�kÙ-º–ý«æ/# DáGT6q†'›­Õó•=räÈ£Ž: ¿-íÃÍŽ<òHý›OñÅ­ó¢‹.’û²'L˜ ÷ec9î˾ûî»ulŸ°ûŸÊÎ”ØøVtd¨ûÊ·§Ö™¢ØVÛ³uk:[°‹BN=†X` ãø�ªŸÍbGŸðø}9§*©´_Û€ókLQ;–Óñ;U¿—À÷[�ýTðè(mÁAg,Ê÷ûž`ªN›ǪH8!z$1[bahL=~«íœü9�ÓÚ~”õÄŽ±(?sQdÑ ±‘ÇòäûýÌ~¬ÆhÛ"}�ï·˜ØÑï±�OÌÖ#”Q9�Šß1UvlŽG•M•M•M•ÝŒEíRײ;ÚüuÍÂå·kU® ¢²ñ3ì÷¶?O=õT6ž.Ž›¬?ùÉO®·Þzx3—ók�Çê6¤·ÿŒñùóçOž<[Ç—/_~Øa‡áãNlŸ¨ö3•�/±ñ­èh°ÊF2K�íüØ&ëŒÙ’È#˜: =†XªÆñ;U?›�>8í &�S¢,@ªbh¿¶#æ×˜¢v,§ãwª~/1@Ðo�8úyÄ#˜4LðŽaÃ'ª¾ß÷øQ™› ÇL<`º÷[gÖxß�ÖªN ðít~‹ÏÁäd¶y‚G �õ%1ò‘â± ¾ß÷8©2«™y,,:Ñ»ö[;xÌg>Ìïׯj¿d“!‰GŒ ^ZÅ ÊŽÍñ¨²©²©²©²ûœÊþýóǶ-ˆÂ�¨lç·"T¶}_öÐÞÞŽ¼Ë^õeÁ¸ùÚ¾/×ïËÆ†s¨r8òû²å‚ £cUÑêTéû}�€ÅÈÁ’ØÈœÈi›p¬ÿ'6™‘™Œ` ;ñK×`1ÒT¢á÷ë'�a¿SÍÏã#«zl_þQ¥I<0§SµÈ Ó�Õisì`Zßi=‰„1€ï—ä~“ίaÚŸiÇ’û~ß“ÙE&ÃvZc½h¿Ø’òˆ?3§„è)Uªlªlªlªì>§²;ǘ®u Dá'¦²å·â€5j[Ë¥=¥Âo�ÝÑmÛl[”Ï�ÒH óíŽîl¾_ÇCnþ nJÛ1Elý㞺cØœíÚF�ÄYhä˜Û/4eCø‡ÌÜlݧïÑM »d•½·éÚ¿péÜ»r¡£ÊŽ]¨²û÷D¨ÅÏ.Gùæ`rN³¬<9}CÈèß PeǦU9*jzé‡Ícû¯¢²ß8ÝŒ\ñCP¿v´9Ä|{n®Ð®ª‹Ï\qð‰K÷=æ±=¡˜Üñë“�¸΢8líI£Žûd™*‚úÔ¥{ÿØt' zÞ÷>óù}oçä»Þ;íØw4¤ýªŸ%­i£ª(¾mÅô«–nzñc£G?ó›m¾ðË­mõžol­}ó‹Ó¥5mTWǯ0·,5×>VQ¡¢”­ñ¿771Ûîj;Õmr�ºÚ«�ƒºøyc>iÌžÊÞ¨�²Ö`_kÏŠÏ›¥šÇŸøßyÓl9Ã,œgþôoç¿}Çüö'½­‹iQÆ|]/UWµµþ�ÙŽÊ>úPó¡½Íq‡™që˜)“Í�—“Û19¬ý1•=çÝg¯³æ´‡ÏÕà´-J9m8*û¢ï>|í¡‹¾vðíï�ñÑW1fØÇxd:ƒ´&D±4¹*û�½FŸw’´®±×ŽC·�)Õ„Q²Ê>ÐtÚV´t~¨ru¢ÊŽ]ú³ÊN/dãkÑÿû€m‘? f Gùæ`r†YVžœ¾ˆ!d€ ôc¨²cÓªšUöÞ“ –³EM?²ŸÙlíÞªøƒ†¬J§�Y˾á7s×�ºæ¾—ÌŠijß_U[@Pe£éÕ÷¶¿ê³›Ù~ß77ÏLU£ÊþÆïÌú“ͳ¯W±�]æŽñàZöÆ|¿[MÿÚ˜+ºïÎþתâZ1e­ýŽÊÞ{NeiûÁ[+âú¯™uÇ™Gn/ ´Ó¢Ø¶ÆTöŒO_4hÍ»¾ýtN‹ñ›6• ðáwíŒ;ð‡ �¸gçt¸nMˆbirTö:�^×>nÌúßûâä÷²î3÷š!CO›"à„Q²Êƽ*)\:æŽñØ¥ âo¬ÊîèQ²Ú¨mÚa3Š]­*[�5ä(g ñXÃñK 6œ�ªU«m?P·Š­aÖ �´ŠÇ‡¥1 ש¤/Ç)U§T¥É1b}ùbH$°“<³*áŽá„ÛVíô=º•6 d ™ PeǦV5«ìÃÆZöõÿsÜú[ŒÙuÁ _J'<™Ò8¦²mø.‡¬}ø¢ñ™©jTÙØ+~vÇÊØf¬eËÖqkÌ4æfÑU ­¦c¶£²?ò!³ñä^Y}Þ|s™õëÜ’#�c*FÛàìƒr2Fëß„í¨ì#ïÛe½ék]ò“£rÉëGÁ>òþ]áº)!Š¥ÉQÙð¯}ó…ƒ7™Ô>v­áî6òøƒ‡í¼�€FÉ*û`ÓuxáÒypå²ÃµìØå`5¨ìŽš&ˆ*XUbc‰œ¶©P�H¨~ ¥«MŽ_j[uUÝÔ�Ž­ƒ�&]˜v:v!Œ–jа%šœ‘ šûM~¸x`¿)Ç#™}C‡ÛÖ´G·Ò&d€ 4“ªìØ´ªf•ݱê}Ù'lnæõ»û²¯yó˜õ¦­µÇy[$u°)S§UöN^û˜�MÈLU£Ê3ά9Æàˆ2l�JYwýÜTUž~\Ën¶Ê¾æã®Ê>ô€\‰ 1.ú7aUöv¯?€EôüðþD ß¤õoÂvTöô}7Ü÷²m¿÷ųgì?Qªi#!Š¥ÉWÙÒcØ.Û®uùYÚ³KVÙ‡µuÝ^´tV¹ìPeÇ.ÍPÙúÂߑԶéØ6Ðq&ªuªìDæ¼&ÑP®¥“¶cø}˜õਣҶŸD2WÍãÄÚªå`‚ƒ‰ab~�$†±~5vï€cøXòÞOôÇìK#µLK' d ™ PeǦU9*û½ Ì;çš—Ž¨<ýìÝs+6ö�ÛgŒ®û^¯UyÆøwŽ/mÇø-ï�µø�3æ¿TyÊÓMï·m÷–Ã@3yÔQïã–ÿwfzϹ´µ°8ñq^ñæ �Ì«8ÛÌþ×l/::m¤òñK*ïðÒÝ]óÇ|ð”©è}ب!RN~r�ti­*�/YRy‡J{ûÊãÒÿ˜}ÁSðšìá£Úñí-wuÓW¦UÍ#€êÒøº%Ýg¨º\ñæ*Q%ß—ý`·¾®|_º jÌ�ÆL4f¤1k³»1/‹‚Î1Ò*{É]îùAb#ä«O›m¶ª¼G{òDskG‰�Ø´:ž¾ä§Ë¾ùI„ìú—g�5ãS¦ÃýÖªÒxî’Ê;¼ôõê7çÞü—Óv={暆YcŽ»~t «¾«f ­Ž×Yrƒs‚¾ùÊÄß~sȬéxYvû˜µF¹ÿ†o¼œN"­%«ì#M×q…Kç‘•+ײc—ªìÍLªÊ¢Àñ;U;Ú 3q"1¼ã·ÕàQ’;!â×F0C,0æ÷j�µ u„�X_eùýúžB}Yp,ÄON d 9 PeǦU9*;ø³zœiE܈VÑ¿Í1Dü6ÍXE/ë·Z7ή²–íl/¡šVÙ�hõ…pC=9º¸\ŒHà&%«ì£M× …Kç1• UvìrÐUvæB6¾ñUuÛ„c­?U•Q àø�ªNЙ©Åã¨1Ž3–Óñ;U�ÐÚ1@Q¿Î\Ol~ôâƒ§ÄÆ£Ãc¶�uÒ�È ~KN? d 9 PeǦUTÙ�ÐÝM×ÒU6Uv ¼ âZº(YekºNj+Z:�«\p¨²c—ªìð„¤#©ÁÃ1«x­>ZŵjE”vûÎ`ž SçqlI낌åtüNUÂňŠú%!Œt,Z58aWÍcúÌË#`É 1¤É7£�ª}i0m2@È@s ÊŽM«¨²©²kTè\ËîZVîÒv 2¹Î‘ÀM0JVÙsM×)…KçÜʇ*;v9¨KewôHQ1*d«ŸŽÐbqЩ‚¦�ÒÇ ®êB¶Î`í`�[3œ9âÈ×Yâ‘‚y‚N ñ ÁK~ñØirªLª¾á:U�wšPÕ­Ö®ŠñÖã¤òa !Lc2ÇãÀbà¯Ú—Nå硇 �2° ÊŽM«¨²©²©²cëàåŠèªÙê”Ì5„7A\K%«ìM׼¥ó$>ý,v)¨ø©²4Ká–ÎïK-'ЩÚlAg¢£L¼…�’<'U0ƒèä1šƒñÇ&pŒœñ D`N¸4ùþ '`Áp:É  b€*;6µ¢Ê¦Ê¦Ê¦Ê-Ü8£d•}J[×üö¢¥óäʆkÙ±ËA]*»Ao¦-›е4£Íä§P_…Àésd+ d D¨²cÓ*ªlªlªlªìƉkÉ\²ÊÆBö‚¶¢¥ó´ÊU…*;v9 Ê.qÖѲ©(ÖÒM3ùÉï+™>;¶’2@Jg€*;6­¢Ê¦Ê¦Ê¦Ê-Ü8£d•}ºé:»péœÏã±KAÅ_�ʶ*À9ú—òª„TÅ8[õûÊ÷ädÈÁäô˜“Çbr�±uØAX&t&Fët”@3‹33�“ð¢FNžfbªŽß ªUC‚€úóØ ÁätÖɹ­“@†7‚ªìØÔŠ*›*›*›*»qâZ2—¬²ç›®……KçüÊå…kÙ±ËAÍ*ÛŸ–‹G.èâñ�Ò1’0Ç�ñ$À9˜D¸4åäŒ5$6ÓpÂuU2h§c ¦�!Iü(iò œðøáâÑQâÔ†äØ:Ö±u¸Ód«U,˜ÄÁèœ ÛO•'šêÏSÛøCb“0@n… ­ÃUvlZE•M•M•M•-Z¸qFÉ*ÛÅÏk/Z:T.JTÙ±ËAm*[æäÎßñ'‡ŽÓ©Ú„ÚimÓ}9­±ªdÓ]8àŒ¬fæX0IŽ3x.ŽÓ©Ú´AgÕm”|Q¿.ÕÌ<>Ì÷H΄a£€ãô3Ç<9yÒ§5VuFƒò×–³¶¨B°`r;`?úV>qªìØ´Š*›*›*›*»qâZ2—¬²±]üüÂ¥ó£«ìŸ;wîøñãGŒ1|øðÙ³gßsÏ=ö÷ä“O>¹Ûn»­¹æšhÚtÓMŸyæë衇¶Øb €µhÑ"ù¥úâ‹/ôÿ³÷&ðrUUÖøyS^Þ”y„�2“�!!#ˆ€ s@ATF (¢†àÄ 2F@”Á�EmEQÛÛml£Ðþ©¯µùü·Xß.öc½Í>Ã=·êV‘—œüîïºÎÚk¯sê¼gÝ»¨á­ZEúîîî+V|ùË_F©�ZR¶ó7„JÆ<�‰¯EhW3Ê!f÷M [(e{. ‡˜¹r9K±Ï³“8F#=ÃÎN['Ɇ�’=c@,KÃÄI¢jŸžy:s‹S&I‰å,ÌÓ™È�ì cŸ[¸+\­Î³º®ðJR•w ímúMØ w ¥lßÍ^JÙ)e§”�R6²pý@Á)›Þ.~zî£tJåê„ײo½õÖ‡zˆž}ôÑÃ?|èС„ï»ï¾áÇŸp DÒð¦›nzøá‡ P N:é$Â7ÞxãàÁƒ/¼ðBÂôïmo{ÛN;íôÀ�rÉ’% .d¾ß�‹MÙ|7HgÚsç�!5j*?TÏ\Ê<;—§ºb4ªÅ9ôù0OggW$é4‡3›Çh0zÁø€ÓÖ'&ÞÖæ²Åì¬Zœ2'™kaX­´’n’”X P€À9—¬°Ó- �)UçY]WÌz’&ímúØ w ¥lßý^JÙ)e§”�RvýÂ5œ NÙ§™òY¹�Òû+W'¤l<+R:^»ví¬Y³ˆ¡¸éum”Î>ûì±cÇbøŽw¼cÞ¼y4¤²ÛÛÛׯ_Ï%z¼©©éž{î�²�êR¶óŠÏ·‚tæª}gÆ0´KÌÐéoóJæb"Ÿ€øM %Ÿ��Gc °MÀ؆™%@ì0ñ $Ïbeë$e—¶>†Q&ö�M$€ªŒé ¥bxˆ*Zœ2t ” ªh©“güJX)Ïö’dUb[fd/c©·«¶†õ¶Rú¶Ä(�S–©A—­LLÚ�7qRÊöÝéqÊ6ç•ÌÅ寷•Mc�ò=¦‘Dzòà >n.ÚàcVùû >N,_ÕàÃìZnäQ~Ô4ú ¬Ú¨£tRå `'\ßS“�ïýƒôvñsšò¥è5¬[·ŽÞæM¹xâĉ÷Þ{/M:cÆŒ•+Wî¾ûîôðí¶ÛîÌ3Ïä•|ðÁô:5VuÑE‘€†×_=µõ«_E‰ ?ö±�aØ�@Q)7™¸è3ã¢À29´13öSäÒß×£ñõJÞéc?0²7+s9`79”XV‰Ï;µÒ³³:û4Šwa¥ªà%Pšð�¡‘C‰IÀCuv6BÌUø(^鹚yVn™úAuž‘],³ÏravŒ”ebt)€FÅË!4$/q#54¯œ.á´oú¤”í»ÓK)»é»Á›¦kpĦé±iºGl𮑛æjtĦPߨˆMœ²éíâçæ>J§W®EvÒ§O^ï½÷Þ“'Oþæ7¿¹Í6Û´¶¶rL¾òÊ+éuê+®¸‚ž?÷Ýwß}öÙO¤D¶´´Ððꫯ¦” žÀ¨Q£(¼K¦¿àBR6î<åuŸIf$&CIZX¯ÎR¯J4äª}f¥ÍKƧ±gñ)ÙÍYõ™8ÅrU K½Ä$Ã@’ì#KÊ9sîåª ºàƒÆÒ¼¹;�R¶ï6/¥ì”²«Kè)ežÁSÊö=MI¾÷µlz»øù±Ç#Gš,¨ïݵr!²S6ùÓW–QXþìg?;eÊ~+8OºxñâÕ«W¿–ÍŸïæ–­ùµlܪ+>î c[Fô2ÏCû¬º0Tíà%ðiìY|JvsVa"g$ìã• C˜J ºâ�íèÍ%V>ÜKçêx´+7æià+‘%ÜÂ<Ú c[&Àͧd�}öé‰ÏôtöÆtù4’—XNäã¥FbŸ^òûzYã;£Ëi%IŸƒ­�'€Ô€L íÀ›»)eóíŸ}N);¥ì”²}¯’ž£Ã†)eÛOP6Ó›²?ÔT¾ 9ïQ:§r!r¦lz9›R6}×½f­Röš5khçœsΘ1c°ž£�>zç�w¦¡ú\öm·ÝF>wß}7”ýÔøZ6níË=JT7�1ÕËC4:«1$ÖÇhí(9}œ$·Jð`±³dŒ†ñþ‘-yõl‹ÅÛ³ %Ÿ�³$€¯�xÖ8• c4ö>¶>A|už1]>�äÓY®ÜIJ��¥§¬J^â° �À×^úËF…�z�¤�äN;ð&î@JÙ¾;½”²SÊN);¥ì¼u¼àwŒ¯3勚ò¥s+W!¤lúÌõƒ>HÏ�7n¤¿ÀE´‹ðu×]×ÖÖöñ�œ0½|àÀ�üÍfôÉkúŽñ“O>™ÞUNß1>dÈ|Çø0{ölúŽqzE{+üŽq¾²ã^Ñy¡TqÓ£±Í]¶ØÇ` >ñ1š@;JN'É-�<XLg0ð‰Ñ¨.§!4 à/y'éÓ&[|‹É5—\¤Â�e` ÕKC”йF�Ýîc0µOP_�gL—O£x:ÏñGy¢Qò˜UŠ”z)SØ)“¤ÄªCŸÆÇ£1�´�ß�”²SÊ®Gšöy¦Ïe×ãýä¾,\?>üÒsáÕôZ¶ïiJò½¯eŸgÊç>J~Ãß˦?¹Ea™r4ÅgúÌ5emžè‚ . ï=£¿‹MçsÏ=³Ó�ñß˦O^Ÿzê©àéo~ñßËîêꢴÎÉÕ~ª~-›oü踸;o©†ìæ$e‰�ycJ�)У�8œ>LÒY5úx%“À?d1Ç/ àI%L° Ï®’­OàãÕ’ä�[$&}žŠÏôQ¶˜ÑÙˆªT×åsc¾:Ϙ.ÖÐY. LÂ@öpØ–¡±œQã,S%IÆøø4ÒSøÄ$�v ®;�R¶ïN/½–íKʵð)e§”]EO)Û÷4%ùÞ”ýaSþXî£ôáÊu¯eKÛ„iªKÙ¸Áó¾¸ûªÄ³€Î1[†ö¼À7�ô‰ÑH½gúøÄû<�|ŒOŒ†Í¡tÎE$ @¯x9„†JЧ!J> l™í`ìv0ècƒÂ50 ƒÀJÂ�ªZ»�í L'I‰!ðûªN^úK 1J¿áã¾gÅ­–¯.e×éª�lÓ¤H;€ü¨@á;Ãþ…Û&ô[ä”í»oL)»–4íëM);¥ì”²ë›²/1å+r¥K*—»ôZ¶ïr�RöÖp;”cÚ�~´*\×/ ×ϹívZjÚ�êv ¥lßmUJÙ¾¤\ ŸRvJÙ)e×7e_fÊWå>J¯\@RÊö]jIÙ‘7ÃJæ¼ gj”€‡N«H2Æ!F3]Œkb”¾¥a§,Fãlt’�Õª‰J§3ÈH%C{^ãÓHMæúÕbh˜ÙâåCæÊÊ9]"°êACç¤Jfk”Àçc7&fËÞ�”²}·U)e×’¦}½)e§”�Rv}Söå¦|MSÞ£tyåB—R¶ïrPuʶo½ÀàÖŒ ×À0`=qŒ&ÐŽRŒ4 Ð T»ÂA’ C“ ÀÄîBɶ8ÀØí`dH ¤ Ë^…e»*ñ0S dN¥‘žl[Ä�Rý|È90o)U÷Óys]æÏÔ€‘+ « oµ;�R¶ï¶*¥l_R®…O);¥ì”²ë›²éCÙr¥OT®�)eû.Õ¥lßí–ây¨nB©†,–$c:;}l^ÉÔn T•‡1g£"#} SíñCçcQ¤²¹“Ìœ—»pVú¼¼jÇ0ÒÇ–Ù <€»”@‘¶³�‰ñ kTÕ7T+ôÉrñU{úvƒø\ Ø Åñ{¯¬÷ÃÌ\‰Sà$±Ôp²¶†H)Ûw[•Rv-iÚ×›RvJÙ)e×7e_iÊŸÎ}”Ö§o?ó] *|-)Ûy#�Û0%cžÎÄ×¢ ´«å³û¦†-”²=†CÌ\¹œ¥ØgŽÙI£‘ža g§­“dÃ@Éž1 –%‰aâ$Qµ�OÏ<�¹Å)“¤ÄræéLdŒFö†±Ï-Ü®Víélt’ál†ÕøG¯¬÷à ¯ÄWežÎÎåùºœâDnÙ;°5§ì£Ž:jâĉ4hÐ^{íµqãFy›•R¶/)×§”�RvJÙõMÙW5•?Ûœ÷(]U¹Ð¥×²å%@âbS¶¼CsÞ�A@€~.Uk*?TO;—2ÏΩUWŒFµ8‡>æéììŠ$�æpfó ¦C/pÚúÄÄÛúÀ\¶˜�U‹Sæ$s- «•VÃM’+J8ç’Õvºô1¥ê<«ëŠYÏæ é��.¼fg•Ig‰ �ÒæðcJkhälÍ)ûøã�¿ñÆéVêþûï_°`ÁܹsåmUJÙµ¤i_oJÙ)e§”]ß”}­)ßД÷(][¹ì¤”-/W—²�—rÜ¡qÕ¾cÚ%fè �ô·y%ó 1‘O@|Œ&ÐŽ’ÏÇÇ£1Ø&`lÃÌ ö˜ø’g±²u’²Ka[Ã({È&’@UÆt†R1™4J`›0�S€ª¶RV%¶•a†{}» Àî ”lqb¶ìØšS¶¼‰ºì²ËÚÚÚ$“R¶/)×§”�RvJÙõMÙ×™òM¹�Òuéãòé_ã¢R6ß}Ñ÷ê~L�¸KmÌŒ}ÆŒ¹€ô÷5Æh|½’wúØŒìÍÄÊ\�ØM%–UâóN­ôì¬Î>�â�CX©*x ”&<äFhäPbðP���s>ŠWz®fž•[¦>FP�gdËì³\˜]µÍ¦qN$W+1Ä’FU¨’JY æ^ŸRUåPbÕ()enñ;�R6ßNzè¡;í´“¼µŠJÙËÖ™Q3Í€.Ó1ÌÌ>œ³É\\î=½Ã Ÿlt›1sÌq�õñ8Áme>\gÆÍ4í]¦{˜Yx„¹nS¯þÒŸš9ûš!cMS“Y÷x†‰˜"™×­63·3]ífX·9b³és†õwžfvŸbu˜î�fÙŽæûëåÃnTÍLÙã×Þ9sBs×ÀÖa=£ŽX¾pÓܲã=çvÎß2¸«¹£�So|¦ n.>Þ¶nƶ3µwµv °ûã¯Þt€Ò¯½zmêAÌT¼oÎÑ#×½³}æÍ]-à >â-Ó7=Ìúm?ÿaÓÜÜÜÝÉǰ“ׄ}dõÄòU�cÞº•CgŽiíÐ>¬sÒ;µé"ˆÿ÷ó·_3‡ø¶žöás¶}Ç‹£Iyì:3p¦iî2-Ã̰#ÌœM½ú‘ï6ÍÝ}‡i2ۭϰڵL‚ò£&|¬;ÂÌœ`ºša=æˆfÓ]½úÿ}Èœyˆ3Ìt´›iãÌÍgdøôÍršQYX×Í73‡›®63l 9bšÙtB¯øïï3çÎ7Ût™žf×Q柙À°tRå:SûëÈü”Uú”)>÷A]…¬A>…nI¸�”Í·^t®ìõëÿäý˜ÄTÇ@’l K¨2©ÎR¯J4äª}f¥ÍKƧ±gñ)ÙÍYõ™8ÅrU K½Ä$Ã@’ì#KÊ9sîåª[)}úE3w?3cy¯ì¿4ïºÁ\ôÏ•”}Þî^—y8_r¸yö“•ýâ f¿yfùÌÞ4}ÓÉæ±›ÿ½Óüísþ3¤Ë”nŽ Ú™Ñxâ%Çìòì§H¶èÅ»†í7ðòÙܲû ·Ãxæ—Χ‡9ÿŸËt#�/ ƒ_sÉN=» ¯}ñÀÙû��¾|$J.ÿ·ýFîÐ5~Î�·_XLÊ}ÉÉ“Ÿ½ƒ2òô¿Ö½ß]ËwAÊîZ±«ÌÎñ8œˆç_²ÿÁÏžE ÑÛí·ãØå“YôŸ.î;h·KW÷Ê'ˆ9øgg÷×ËÃV¨fDãm/1;>[ÑÌyÑ ÞÏô,wè§~Ý4µ™9p”^KÖ’ï ¿ž¸}ɱæÙÏTô‹÷˜ýv3Ëg÷¦é«NªDì_ÞXn<Ÿþ3†ù }3˜Çä |0e_²È<»¶’ _<Ñì7Ñ,×›¦/X`¦1¿}gexý^¦»ÍüÇqÙA»à”ý¹¦ò­Íy�Òç*—»Ú“¾| Ý’pí)›ï»è¬î+p?Ø0  —yÚgÕ…¡j/�OcÏâS²›³ 9#a¯d P hÐl·@o.±òá^:WÇ£]¸1OC_‰(1àæÑ1Ø0™n>% ì³OO|¦§³7¦Ë§Q¼òtŠTC[ÃßÙÖ;Hçt¨JP:K’”8ÒSÊö¹± U´ÛLL š¶’H)›"vOOÏ•W^©î {Sönï1‹>P9Žy$#&¿ã!ÓÚÞ«™wŒ¡ƒ"6—š½>Ú7oƒÛ²^Ë–‚32mí:Pš²eèC¦½Í¥ÿç¶J²úGI¶3ŽÉÅÐìôÐG›ÚÛ0d°ôï_™õà­C»º•@ edÎÄ|hI[{3d7½zÈÔ%#NÙ¸ˆ¢wQ)[fç ]ÕÔ> /e¿ž¸¥&#üf‚·>tbK{+Ëæž³÷Øe½‰;³Q dÎÀS2MíÍÐ5†+P;™7ä߬ŒüÐůý¢¾&;y•9di_¬9ØÜ{^ß0dLÙxšÀCšö–Þ(½Ópsõ²¾X=yˆ¹haßPv~ä ó�y•ã=³+W›Ú.?e•®7åÛs¥ëÓ;ÆÕà ÃS6ß�ÑÙ¾¯@É®r‰Zb4¶³ltVcH¬! ŽÑÚQrú8In ”à Àbg È ãü#[òêÙ‹·g J>g H_;ñ¬q*AÆhì)| l}‚*øê¯•Ž)/ïqº™°¸Wrh˨aƒV¯˜ò«�1ùš5*†³O_1fñ,¹Ûø)Gí:~ÿéョ�Zzãá�FUrfa79útÓ½X—è%lz!›^ήCÊ>}�Y<«7Jõ"3v˜ùÙgÍß2w�kF 6¼»à”}úÎfñ6½Qzös…ú×úƒÍšÉ}Cð üZ6½pgî£tcåBW{Ò·ŸH· ¦–”�û4ç½D Š[µ�mè²Å>kð ˆ�ÑÚQrú8In ”à Àb:ƒ€OŒFu9 ¡aÉ;IŸ>°0Ùâ[L®¹ä",S¨^¢Ä€Î5jìvƒ©}‚*øª=��’”X.LñjÈJEª¡­q 䤄c4¶³2QÀ§³¤H:Ïj¢Ì¡rVzL¡x%Û'1[ölÍ)û´ÓN£¿áuÝu×9ïó¥ì#6V>‚ýÞgz£ô°Ifõçûbõòó̤½û†ÈÔ6ÈLÖœ¶Ñ ì6—<Ó˜”½‘¢Ò@óÌå:e?wµ5Ø|†>—zOÔNIJºãÆóZº;vyfƒ$ /ùÛ—'­?‘> ½Û¿^•œCDæL@¯Yìnýè3+YyÙsû×qÍ+Ó®GÊÞnãÇé#Ø“ž¹�“òÔßÜ?õùOÿ¯¯;iuë6#gü÷ã‘A[E`ßpåÆw¶u·¯~æL š4¢¹­å-ž@ÃU�½·¥£mÿo¼Ç׫øÈtl&m¬| {Çg´~[z½y²&ý‰;ô¢ó_Ú¦·…ww˜gè³É¯ógRy¯EkKåSÛTŸ^OÊ*«áÆý+o æÈÞ(}þnfÊóëc }@ûÓ+ècçfŸñ OÙqÿ½Ký–>ñAÿRÊv^ ˆ¬:enÒpká¼%S¤r¯“”%`–ê@` Æh §“tV�>^Éä0àYŒ†Åñ xR SlÃs…«dëøxµ$9äÉÀŸIŸ§â3}”-ft6¢êÕuùܘ¯Ú“é Ũ¡œÎ”�d+ m�s.§^Nmûøe…¡sa[�•£€Yb@f—Sà$1]¸ Y[ÃlÍ)»©©‰¾Wœ>‘Íÿ:;;å-VŽ”M»cè¾âŒ^Ë^um_¬^x𙹦oh‡k0Ña@»k¨9÷1±©«ï§ˆ=´«òAlugþ‹õfÛaæ2Šq›dÎ l“±é=á�¬»fo¿Ã'Ø�6“®Y@»k耳[ÎÃÏÿãzQû]7ïÆÃéËFõígœ)b· 4ñ±O9sôÌ¿·yp÷ø>é¬Ú¤ŠÀÎ!Eìö¡�”¦Q>oÜ6+¦`8ñ �f�ºÃ0ˆ ȱ[†š©�iñ.¯š̸Ë5_sʦ=´ÇïIGÄ&AÑ)û–S*ûÉ u”þñåfô`³þ͇·�‚mfú-gT"ö“Ÿ°K`èkÆ'_{2†“²O¸e7ŠØzrÄŸùï·ÓFöŒh磥­y@gˤà ;+fÜ-PÄÞþÉÏ*ÃÞ”}ÿ'À„A8Suù-k)b¿íÉ÷Iå´w.Ð)û´eRÀÙyû[*{Ú“åä¯V>©=÷%GÉ´)øõ�Ò-gV"ö“ôe}¢4uœùÜûû˜Ã—›wïß7”J�³Rö-ûT"ö“þo§—³Ç÷T¾ÍŽÕŠ)8eßfÊ_Ê}”n«\Sʶ/ÌÔ5eóíîÍ8ïI25Ràtˆ$¥�IJ]òKM –½Ë^ÉKA‘kVÎX¼â3‡hp¶ ÊÀÖ( mMb¶ÂH)Ûw[•²Wm¨ü ¯w?­ô‰ß©|¯ø»ž¨ðÅ~Çø1*Ãë‚§û¦WÌMÿSIÙg;åU‡ÆJñáP¼á¸Êßð²¿Ùì©‹*ü§ß•/bǼ–=yÃ{èc×óž^¯‚óŽ_\·àw·¹ø¯÷ípùñôfr*™= Äa.½agú^ç?½—R®ÿýÛz�VM^8œ>²ÍïW2{NÄc7œIÃk‡§oR² �^ÃÕkÆË� {ï!ôéì¥Ç”Æ7 Äa*í±a }òú §? dÄÐ7¡íû𻉧ÞÚ9`Õ·NQß0# �ßPù^ÓŸvˆ`†é.U›²7¼·ò7¼ž¾Z'húê³%³Ì ôm`�šï]mèÛÏ>ý>­ÑùšCz0eoX^ù^O¦ôK'šç_û‚ñ?¿Ûœ8ËÐÇ´ÿvŠÖ¨ˆMÂS6}(û�ÜGé®ôíg¾KA…¯.eo…wé!§H;�v Þ;`GZ_ø­÷J’Ú�ð¤”í»µŠJÙi[T>‘ÍG{O_Ü>ôN3|J%kÓßË>þ[}<åîÀa¥`�”iÆÖ•Od÷=½‚õ¿©äëÊÑÜ ÞýÝë2§lòÐZùD6ô-g¬_1Ó´4÷ñTý6½7â}ãv V -¾i@…èÞ£§“.8ª}ü(ú;Úô‰ì¡+wž÷½«T£oh§`ż¶£Íô‰ìÞ£§U hXàç²ùâïb7÷tqv¦oBk3¼òhCõ¬Z<ùçwù2µÍû²0ó4có€úDvïÑÓýÞ÷Kß{Füà©#WÜzøL�‘‘éÉMúþ.vsOŸ~ö ¦©Õý·'bS¯;‹×¬+¿¨m•OdóÑÓÙ¥é{¹Â Tù{ÙãG™óךW. eS"ÐRùD6ô×±9;ÿì¨Ê_ò"rd‡9nGC¡ÛÎÔ6Spʾ»©ü`sÞ£twåB‘^Ëö]RÊßH¤jÚ�´i¶ΔݰÙÓDiâw ¥lßmUTÊäåêJ® –«ÖÄDã5¾,\?ÞŽÌõfì\o&3.èKÍþh\ &3e/¾–m'åZ˜‚SöMù¡¦¼Gé‹•‹FJÙ¾ËA-);ò†PÉœñL�ðÐiIÆ8Ähb¦‹ñaMŒÒ7£t ì”Åhœ�N2°Z5Q@étã£�a(+§¸‘ç$©CC»*ÆÜeó‰éG;€}Y3 PõÊáÀ jŸ­¤±N»”R¶ï¶*¥ìÃ5¬ê—¦}ÎõÎÔ¶½3µí_xˆÎ4,0AÇX¢Åëànóþ›²7šò#¹�ÒÆôŽqߥ ÂW�²Õ}ŽâÖE’ ®�a ÀbâM ¥h 7¨v9„ƒ$†&€‰Ý…’ lq€±ÛÁ  Œ  ‰v;ÙR‚L‹!“½ C T; e#ª’$̼"6läì�œ«aÈñC£sƒçuN³ÏX0€Ó*“D»™]›¿€N=ÖYgòL)Ûwk•R6¢q�À—…ëÇÛ)¸ÞŒ�‚ëÍd†âÂ1Ѹ@�;g&åZý7eÓWŸåà¥/U®Zéµlßå º”�ÛuK xçÅ]‘jȆ’dLçð\ªêÂMN¡Ä1ÕâFú@æ4‰!��E‘jȶN2sFîÂYéóòªÃŸ À­”F‘öt>&Æ'¬QUßP­PÉìå± Ü¥L ÆÏ¯ô-2Þ!^雫ñ|Ìšc4µ¯<ï,yõX!7Ò9À Ô¿@Õ{’ù0ëáLž)eûn«RÊ.0\ê~iÚç\ïLmû×;SÛþ…‡èLÃtŒU±±Ö–þ›²¿ÜTþfsÞ£ôåÊ%(¥lßå –”í¼¸ã‚ dÌÓ™øZ4�v5£bvßÔ°…R¶çÂpˆ™+—³ûÌ1;‰c4Ò3Œáì´u’l(Ù3Ä(äj�³?�¹Å9�$%–³0Og"c4²7Œ}nÜÅU[c3áYŠ­ÆÏ¯ô­0Þ!^雫ñ|Ìšc4µ¯<ï,yõX¡³ÑI¢¥¿€ú=Šz8“gJÙ¾Ûª”²� ¾,\?ÞNÁõfì\o&3.ˆ‰Æjj�Ìù_Û­åsÖy{ þ\öWLù[¹�ÒWÒ;Æ}—‚ _lÊæ«9�鯆±ºÃ� F Û:§P3ú†1½1Ÿ¿ä}>ÌÓYŠób§9œÙ1ñ¶>0—-fgÙâÓ8çʵ08È)$†›$%V” pÎ%«ìtƒU.©!ô��œ½‘s5f÷ä,›Ï£Ë»’¼z~ÔÕuÉÛœqý�Ó™I:W½')eûn­RÊ.0\ê~iÚç\ïLmû×;SÛþ…‡èLÃtŒUJÙ¾§)ÉóSVé!S~"÷A]ô/½–-÷SâêR¶óº¬®Úö•Œ `h—˜¡34 |¼’ù†˜È' >FhGÉçããÑl06€af‰ûL|ɳXÙ:IÙ¥°Ò«!Ä>X/I0TeLg(ÃCTÑâ�¡ ¥LnA€ Õ�HfäÙžZV%–JÉ3WI#ÃJ’C ’FU�x�O ^5KäP:0ö5†«Ô«°d”R–€¥¤RàÄ,v–d|—\Œ³Ë£¦ŽÑP‹-S>™Û�Û$Ó‡[”º”!dŠ�¦”-o¥$N)Ѹ@àËÂõãí\oÆNÁõf2Cq႘h\ &¥lùÔäý)›¾úìŸr¥G*�”²}{[Tʶ/ÙÌà’-‡À,“C3cŸ1E. ý}�1_¯ä�>ö#{3±2—C`v“C‰e•ø¼S+=;«³O£xçV² Ò ¤2€¹9”˜çzgjÛ¿Þ™Úö/�âÕÐ韩a�ïìôtîFŒÒ7‹\¤Är"/5Uà”²}·U)e®aU¿4ís®w¦¶ýë�©mÿÂCt¦a� :Æ*¥lßÓ”ä{S6}õÙr¥o¥o?“{©q�)—~û�UÅE?F£zyˆFg5†ÄâM %§�“ä–@ ž,v¶€ŒÑÀ0À?²%¯žm±ø\³PW¤žd˜Âîâ4NO¥ÁPŠA2ÀЩ‘d;}Тª�’±ó¬|HF62ÉRàã}ʘ^hœ ¶�m ø”‘¼Sæ$Õ¼rX½Ï“yç9sI¶§ÍHçÕ³CL—O£x5túgjXà<ã!;MP• ¬t΢ZÔæ>‚ê@JÙúvêõqJÙˆÆ_®o§àz3v ®7“Š ÄDã5)e¿þ´úßÞ”ýDSù‡Íy�Ò• 9„&ØŠkµ¤l\÷�×è@ý�mè²Å>kð ˆ�ÑÚQrú8In ”à Àb:ƒ€OŒFu9 ¡aÉ;IŸ>°0Ù³˜êô™]x8Ü"Ï(1 ³¬2Î¥±Û} l�»ÊŒä%vš0)–ÛÁö·»+¯§Oß°¹œ9I߃%¾zŸ§�WËsÊlÒf”�æÕ£ÝÙ(I‰ÑE@ñjÈJEª¡­q ä¤ö¼ª*‡a·p•}|'Ï$�årᔲ}wŽ|˺Gé‹õ €¶³¹ªÜà£üœiäa–—|Ì(ÿ°Áǵåã|4xKiº#Ê76ò¸¿¼Oƒ�–g4ìx¢4•ž´kO¸½)ûÛ¦ü㦼GéÛ•ëFíkð=�öw¾ê”s�\Üq5�Ñ@L f^©÷aç¼J£Q-ΡÓÇ÷@|¼Ó™É€?ºb4Ò�ôèõ�€§ÝÎbÅ;IL®B�W�FÜ+EúÌŸé£l1£³Uw9«LÒ™=ÕÐ7ñP2ðA‹´E»$�اŒç}J{:Ÿ’y:Ë›t¶HeÈæ¶­äå¼T:×@ß\²²LÒ7‹jÄ0¯^5R»�q>.›t.@‘jÈ3J’1�±ø4ÒÇvŽ÷‘Êø¹¨Ë'–†aœR¶ïö/¥ìz¤ïÆçÁGlš®Á›¦kü®62bÓ\ ŽØ4]Ã"6MTpÊþŽ)?›û(}'½cÜw)¨ðÕ¥l\ }€¯Î¾*ñ¸|ÇhH¬dhÏ ”†Ò¤RƒU;†èchb€Ýí`l �! d H 8(ž†(ùZ”|. Lä>’T¸p Ã@-ƒ†RÏUÉF x0 @à¬GUµcðJ@C”¤¤„•²ÊØ6Q[ÀŒ”Ù U$•d;0·Øgd H–©±ÌȹlζLÊ*cYuÚÚ-NÆö!F*�§FvæF�jȼ"yhŸaÛ°Æ)“&N�ZL@CJŸ›âã‡)eûn­RÊN)»º„žRvá<¥lßÓ”ä{_Ëþ®)ÿ4÷Qún墑^Ë–û)q]S6_¯ÕÝ…ó"ž©‘§C$)}$–í’—Xjb°ì•XöJX â1Ú8c4ÎFI* 35R�‰aëp��ÕiEØ6QfÊl1ÊÊ©É$• e W%ÃØæÃ>¶1h‘U�² Œ*ðJ@C”Ø0a¥ªÒ�Uh¸W5H*)1†XJ( €J( Ä€ùxÒçC((Ûø!Ø�J@C¥q6*R ÙÁ&™‘g5 e•±­±e¶&ÆÇÖf´§ˆgRÊ–·R§”�RvJÙ¾WÉ ÏÑaÔ²åS“÷¦ì4•Ñœ÷(ý rÑH)Û··Õ¥ìø qR¦H;°ì@ÃnÝ·€½Ê|uJ=™ó&AÚ�w ¥lßmUJÙ)e§”�RvÞ:^ð;ÆhÊ¿Ì}”~˜Þ1î»Tø”² ¼ëHVi¶Ôp¦ì-õÁÖõq¥ˆ]×íMæ Û�”²}·V)e§”�RvJÙý/e?cÊ¿Ê}”ž©\sÒkÙ¾ËAJÙÎ{d g5‘iÒÔ²1ÿÿŠÑÔ²†- [D ®Õu–dÞ¿v ¥lßmUJÙ)e§”�RvÿKÙ?6å_ç>J?®\¸RÊö]RÊvÞØ4ì®’'r®¡@²Þ7á.µNVµï󖽇µïO®OÞÒM®I·01ö‡A]æªë,ɼí@JÙ¾Ûª”²SÊN);¥ìþ—²é ÆÓ”÷(=[¹p¥”í»¤”í»±iÀ½+M½%ÍâÛÉÆðá� WcV˜×!¯>f õÓ4~µ13Æhê·'›³3ï �¶Èô³hØV÷—‰RÊöÝV¥”�RvJÙ)e÷¿”ýsSþ]î£ôóÊ%+¥lßå ¥lß-Mcî*9K#ïÉ}»Z?>¼“áj̪Ø!~kŸ1fUEi¿Ú˜c4Eí@ÿòiüÎ4~ÆþõÙ W›R¶ï¶*¥ì”²SÊN)»ÿ¥ì5åßç>Jÿš¾ýÌw)¨ð)eûîŽsWÙ˜Yè1òDtö=Þ-›/dŸ·à=,drý ÅÌ£É5é#nüÎ4~Æ-懵¥>�”²}·V)e§”�RvJÙý/eÿ²©üŸÍy�Ò/+—8¼–}ä‘GŽ=º³³³££cΜ9×^{-?OžwÞyÛn»-‘“&MºòÊ+ñäyÇwÌŸ?ŸôÆ ;úè£Áó›ß\»v-‘TÚm·Ýîºë.”ú¨%eó}—<«Û ܘI a% Y+KŒ^›´ôrÉ)rÉ×¥x9…*I%Ãì( e•0  wÊìvÈЀ’¨È*c”¤†IÉÈ.ð�Á 4²‘ªŠ§¡ê ;Èv§nRi〠%&PV¡A¯ÒGòÀRÀ˜K„¡#ŪJCY•ØÙ.„îʳ¯]j+YxÈzv`¥Ä²—yy–UÙÖØ]6ã[ƒœ%³ &r=„íFb vV¹î@JÙ¾›½”²SÊN);¥ì~—²_þµùÇŸšòÔEÿ�²o½õÖ‡zˆž}ôÑÃ?|èС„)k8pýúõ„)n¾ûî» ãߘ8qâêÕ« PŽÞn»íN>ùdâéß 'œ@C’}ýë_'eóÇ{ŒKýë\uÊV7fÊ› �6�²0¶{ÁÈF&c´È.`Û�K1<œ€9Uâ¡Èél±TÚU0RFØÇË4 |™*a+§3Ö dh—()ž†(Ià“Ižõ’a »& AÉh'`W™)\ãœHÎÂØ)SKòil7bTo^MÌ\> ñÎéœd¤‰O&=c4RïÄN¥d�"i¨x§•ÒÀÄÇC�ÀÖ¶)eûnöRÊN);¥ì”²û_Êþ�ùÇK¹�—ã~ÇøÃ?L/FÏš5‹ž'ßòÚ?�œË§Q¼²ƒMÚŒœ+ðp ó9äåa˜”=}g8ø¦†SØVÐH“0¶M|z˜W ¤³mâ«*^ mÉäËÆ„·ÔH)Ûwƒ—RvJÙ)e§”ÝïRöKÿÑôÿ—šó/ýGå'S6?1Þÿý{ï½7¥cú„5½B�¦©JŸ¿Þe—]Ð+Úôº6žHo»í6 ×Ìé�âî¼óN”fÏž}üñÇcØ�@á)[ÞQrc&M|“²@ÊT ÃLà4¡®HžeêlOêsc¥j—Ci6‘J`X�!R‚L‹!SCðø4ŠWCé`ã°8\…ËòŠÑ.�Ï$†÷iªðwZÙ¤ÍȹW-ð5úx9¯OüóÓ.5™X®!ŒÃ둽™“f Ân¾ªâÕ0þø‡ÊÍ™²éål~ã÷[ßúVúd6ž0wÚi§ãŽ;ކô¹lú&´Gy„Kgžy&>—=f̼üMï!§Ïe_sÍ5pèG –”M÷]á»…Bn̤‰ËeH�ÍSU’„Ãz%†^ù°‰"eoÞY¸7ÓVÊät‘8ìo¯9¬—‹!¥ZƒtsúؤlQnö0,W¥[¼’»XOgiBØç½ à€ÒÓ©±IÙ7›´ˆí©UI ÈGVÙV‘R/Å6ö­*`+M|íR“‰¥IS5àÆ½¶Fz¢Ý'V p¶Û¤sje…a.1ºØ‚w ¥lß�^JÙ)e§”�Rv¿KÙÿùGó—WšòÿùÇfºÌ!eSR¦OUÓsãÆ�W¬XAß NxÆ ”¦¯ºê*Âò;ÆéÍäôÙmú˜¶ýã'žxâøñãé­ã_ûÚ×Þþö·³�ï)wsæ«KÙ´¥¸gS@ÞTrc&M|8rRµT e»ó¡e ”† (ŸZæ’V<‹dâ1zÕR1TVà�2UÂ0FCbȸC€?€­D ÀÖ0Ã_ÕÉ«L » FŒ-SV§‘]„íÃ9[”'4‘VRc¥4²]b)c^2U`iâÃdË%û,g´«ÌH c(í’øªÄÃÁèâ†>pðµ$~kØ�”²}·v1){»smŸ0ª¥§³¥»cðÒ�æ>uŲòÃt̸ãìŽÉÛÙ5g‡9�]ÆdÌÙ\UÎ8ö>Ç ›`Ú{L{·™´ÔœöTEöOÍŒ}Í ±¦©Éœòx†Ã§GésÞm&lkzºLw—Y:ߟ<=à`—Â;`œ[J›¶àßÍÈ5¦uXe·»ç˜=^Ìðû|DùÆÀ±ã9ûuMÞÚ3°µ»}äÒ©{?õ!O~÷2â ]ÝyýáYº¿¼OøXsÎö£& ìèiØÝ2séÐËžÚ�ôÿwï·Ÿ9qè˜:š·�ÖyêͳÂ&²×Çž3|ì„¶®žæÎîæ�—vÞôÔÒÿïÓ�;wøÈmZ‰ßq×�7üS…Œ9ž(M¥k ®ï)“秬^lù?kÍ{¼ðb«\ÃÂ… ‡ B™šþ†×>ûìCY›g?ÿüóÇ�G<åeþ“^ÌÓ‡¯ùïe“^þ½lú»]ôåD¦¿—-ïÁÔ­Eä]œêRCiâÃh‘�°@že•±¬ú •†•R hhOäœÎ–eZ©©m‡H&s"ç‚�-ÆJiÈœ¬V Á+ |h¨Ìzíï@~0Eúi¦H;�v Þ;�R¶ïö/&e#;/þë}ãÏ=lТ‰}ÌÞt D¯qOüèцAŽ€|ù_ÍÊsÍö‹ÞÐRtÊFÿëO̹'™E;ë4ý?ÏV’ýÓ÷j� Äç¸Jè®´è -Ëþnvzдí Ý"ú½Aù:ŸŠ!˜ö×o?÷¸ŽEs˜™þê:–ÌÛvã':—ïZ`ÊF|¾â¯Çìsîœí�êMÙËë–²_ߊ7l)½À=d™sÇbH_Vü!ýÔŽçî?bÑdÅo·f:Ú)ØÇÜý×½>wû鋆�à­'�Ûã�ÑP9à¬{ç`™Ñ˜ßþë4zýz΢NÞ©ýŒ«G£q»Ém'_4Ã(6e?ÿrûŸÿ10ïñüË�t­I)Ûw9Ø’RvÊ/õ¾­Ú²ýóûÓ˜Y¶ìŸTztiÒ¼é;�R¶ï¶*2eO¿ý¬Ö!Ý5;gNØý÷·Qˆîž7iò5'#MoûþƒF¬ÞÃ0xCd¯8¿�?úvÓ1¤nÇÌ4¼ð†RRöíWT^­&ã™SÌ ÿ¤ÓôƒŸ­¼Ÿüåj^…k cœ™q»iRyÁšÞN¯bsHÜý·²©µòç9�Eù¼ÖˆÛÜ~qó�z�í3'M~áaVŽ^zÏÁ{.iúàm:?ùß•w•G‘[aä–vL2Mm•7Ðîѵ ¼ÏùF¬ODÊæÔ¼ú¥«'¬Ý}èÜñ‡¿z=rôì‹ßÞ=y†1 2“ì–—–/[;vû¹=_zu% éÝãôÿ‰–Ö¦�]-ô¦ñxŸ˜tLšo¾4eßµƒ¦ÍmÿÁ«ÓßuþˆñS<ðëIôí}z Í»û>]1>Ŧì_—ºÿTîÉ{ü{©‹.)eû.¦lû¶!p�®GÉyãQ�‰’g�v –Ÿ`L/kè\§õ÷wÛÀþ dƒÆŠ¶ô¬$É«ÿþÎŽÁN|`oI†qäVˆ-ý¡éžg†¬èkq�ÙöÔ¾¡g3!ˆ‰Æ¬YóçkhKßò£ó�â6}1ÚÜˉw e|:&åm^A»zÅw§¯>›±Ç�뻄È�w7úŒöy_™i“ŽYó­?O¥énÿÑößûßéôí1ÛµÑòÖ#-|K�c|ŠMÙ¿*õl*Ê{üª4˜®)eû.µ¤ly ÆÅZ’À\Űjö W«ž456lªþ r#�}K… ê)|Î[Ÿ¹?Î}s’uÚß\>>ï2Â>ájus‘gÞÆÍPÏ;c?Å«!=�êìÚ€÷)C¯ûx%ÃPz‚TÀç)y‰e»Íƒa ÅìW熉RÊöÝVåNÙ/ÞEib—g?5úØ•oø\öâ™/zrtôå嘔}ñ‹•ÜK_01 ëóZ6䟮ÌöÓ¯Tbõ�¨|ÚúsóEìü)ûÅJÊžÿS„»^@ï$Ÿr­&=Á0«Uuʋߠ¹ý³•eˈ!|˜¶Ö¦Î�ÌRbß0œˆeõÒ×Ò–~è§o—$§ìî¯SÊ~}KǼS§ìq§En)Éâ3òꯢÍÜ÷§å–e_=­¹½•^ãŽwÈ›²oyq9íêÕÏ.Üfjç{>·#bõ’ÃǼåÝã0 ƒ˜tÌšo¼8…¦»û§ÛËz9{ÌøVú4Iúp±)û—¥AÿYœ÷ .º(¤”í»•²i“}—òp —옢ÀYbV’4õØ�ðÏ70cf# pXm�%ìŒs'�$mº°iá5Ô¾Ÿ?;‡«UÌ^¸ak(¤%ð@dIbÌ«H5dY€¤iœL eCÀ PRJƈ”2§`%ζÞÉ8ý¥‰Sà´’dJÙ¾Ûª˜”=õ†÷ïñò)8/ÜtÇÈÖÒßí"<÷;WÒ÷ŠÏyârÂÅÇ8}—ø¥/WbõE›Ì¼Ã̶sz#6}åøåÿCqÆœüµÊ×�Ë·‘#ƒ»%ßÀqÃ%½Ÿ¹ÞôsØ~fÎôŠ˜þž×°!æÓ†}žÙ9nÚ fñËÙ¢MfÔa•¿0µìfæ½f÷ßUHúJ´.¯ü‘/z’µœÅ—…Á�½áü©/?NÃ)›¾6è°}èŧÿãŸéÓÙ“ÿHåxáᎅ³‡�~¿{] #³��¼añå/Mü%›ŽÜù°¶�3ìš÷žGßBC"©´ô½3èÓÙ——*šÈC>^¶·”ömç§Ms»™ýpE?÷IÓÜiæ~ËÑëÙápFÞí†c×¼|-iÞ¾éÊñ‡Í2g;è·=`î„#` ‰˜ªï½aÇÛ_^AàæMË6fû9=÷ýc%}õÙŽK†ðg´/ÿÞúö³“>=#ÓŠ¾DÌüù7Œ}üå©„¿¶iÊ>‡ š:§�0½{ü+ÏW> M¯n¯>q}Lûé¿Mg}ø\lÊþEiø å‘y�_”†Ñu!¥lßå À”Mû\ÝÅZ^¸kÁoî쵬<õòT÷ä.:ÇlcuSÄ8oçþHg©[Ѱ‰œ‹/|v6¤s`:_ÕÙ²’rÓ$ÆR©†,³IfèìÀ@™¨!d%)c#hPˆŸ"ТLœJ&éÿ@”- SÊöÝVŤìa«´�L™ºmÔ�ÑGïµð·óKÕ3î<§cʶÄWþ^ö·*Ò+òè{UÚ•ˆ+Õ™«L÷H3€þ‚õ(³ëÑæ£¨�þM%_WŽæ^°ö ÙV¯Má‹Ã̯ZaF3]�•Ï_}�ùÃS•d½bwÓÒRùcÙ8¾}glâÎÎqÃW™¶‘¦¥Ë´�2£�6‹þPi™x�i_!éÙCWš�¿—íóz< Äa.u¯ZÒ2rhSWG˨aƒ�ÞÊU-Å~ûÙ¬UÛÑ·œÑw�Q”žôäKþpEé=OŸ5hL‘�C�àÜŸ¯ŽÌ×,ËØ ç–Òþл ï=£ÿdÑ1Õ̸5ÃäõýdY8o³jNûÈžÖ®ööQƒ&½±‹¾­©µe¯'Ï·ÛÕÌh¼ëª‘¢éÃ׃G X~ôØÏÿ¡ò-gô¢öÒ#Çô o£¿—=rüÀCÏß�?¬�éF‚p.^²ª{èÈ–Ž®¦a£Zö?zð£˜Bú{~¶ý%/ú^T:ð¸ÁºÃ&¨›²^ö»òˆ¼ÇÏK#èr�R¶ïrЀ”­.èöÅ”UÅÓ% bd¶&“‘SHl7Ê*c¥©”J–9Tí4t¶ÄÈ ÑØ&Î%)­™çâ$|”ª›BµcF(Ȫs:�J ªJC%¨Çk“æ6 FjÁPaéƒÙgŸ›8m!P@‰QU<æ…€AŒÌÖH†’W!Ûœ�zjH+/– oÏ�=5—|<€ÞP¢†�ä%–2O.I±ÛJÛÖÖøÜ$ŸR¶ï¶*&eGfçxYd4.PNÙ…WsE¹BÄ*27`˜+ ".d£r™ØA¸®LL..VƒÜPlÊþYiÄoË£ò?M)Ûw%x�ÓS6®ø6�tÂ(^– ! d²$±’ee¯Â²W•0ŒÑ�XÊÂÎ ¨.UÅPÊ@*ÐH M-§‹ÁXm¼8Fik0‘R©JÆhH € N€§S抔C`γrË:M0‘l‡R’À¨Ú(ž†(I d²$±’É!d’W!Û¬Ö,�\¡ä�¥€0x   -’Q˜»œ$ PâÀP5Ê!º$ic–Ù¼d`ÀU }À–ÁV¶Ø2Yõᔲ}÷V)e±É0W”+DÜ€X­¦($8ç2)d£r™Ô5SÛæÅ&è·„kLQlÊþIiÔ¿—Çä=~RC׈ôZ¶ïrЀ”Mûﻈ;¯ø™zßEß7 ëÃUŸ§Í;}ÔQC˜¨^§LiÐë1zçDd({«ÖØ�Ò–—­4jˆ•Ø�¾G-yÛMV®n 2ñÍ" �›´øój�¥aeágžZÙJRb¹$¬Ù ”a`ˆvhÀ ÀU ІAX¯ÄúºÂžh·�oy¶²¿0xDrå m™]ÃB ¥ÆÙE˜Û@¶W�aˆ^06È¥Qb }€§“U›¡ª“”]NœR¶ï¶*¥ì”²U|Žæ È…ˆsäBÄv®+“‹‹Õ 7›²Ÿ)�ý·ò¶yê¢ DJÙ¾ËÁæ�²í+¸ï¢ïãÙ!¦Êœí©3ß,’‡¿` Ù2/OÁnN H© Ïî[°âÕÐöw HæãcVE½aW«›‚zc}Å«¡½løÎ¶¾@ƹ6�˜ •|] {¥ìÍây ¾Ùe•58ËÅÛ8Rf7öFî˜ïÁJ^bù%첑1+mÞÉä;@fZe È*  ”ÂkàÆÀí™ ¥lßmUJÙ)eGÆj%+$8ç2)$8ç2©k¦¶Í‹MÐ1n ט¢Ø”ý£Ò6Ï•Çå=¨‹.)eû.›Cʦ+¾¼ ã@’Œ¹dó1UÒÀYŸ›�÷­AòÒ_ai+[$Ÿ«)l[§@ÉÔйŸFñjÈV’”XNäã¥ÆÆÜEg»d3ÕMA>1�>�âÕзH–©³-.–q®M®AM= |Xõ:‡²W ªã©Ë6Q$ |þ1UÒp»:Ë©†Rñ[Ò�#="ûÑ¡�©a¥óèµKŠ�¡â«ÆÌÖ„ýyÍN l} þñ¦”í»­J);¥lŸ#‡¹r!â\¹±„ëÊÄäâb5ˆÀ Ŧì”Æý¢<>ïñƒÒºj¤”í»˜²�×ôÀå^–œW|ûr˜‚Äáj^7[Ï –*ŠŒ\I¤LNƒm[›±}jѨ^5ä¹$)±\‰�—'ŽoŒWª‰b}Å«¡šˆ†™»¥(Æ95“t¶g�€4>l·ÛŒì•Õ¼<–Á�ê,�ûücªyÝH3ilçÍ� <”ìÅ£ÐØ%bªn”nlBgIfâꦎ™+S˜š—�)��.—�)eûn«RÊN);2V+Y!Á9—I!Á9—I]3µm^l‚Žqk@¸ÆŦìï—&üKyû¼Ç÷Kãé¢�R¶ïrPTÊß„/âè… t>>¦ª¬hv³õrîUg´€ãÕ-Ài%IÛ6f=>�tsjlR¶`a’´[X&5hŒ>C»·ð)¤¡s6)[ìc·8eLæ|¤›-s®Y’1ضµßÑþ²Ëdzn�HÂ>^ú¨–À0Æ�4>n|��ç}K•¼Är…’—ا‘<07b(A dËH,I`ßÂHà+ùø@ ¦Ë¥‘] óéæÃ$¥lßmUJÙ)e«ø9Ì� ç È…ˆí \W&&«An(6e?]ÚágåÉy�§KÛÓE!¥lßå –”�{ \P@)X,h�UÆ(H H¤&s;)Ã>ªŠ¡œ‚IÉT�ᬀ²RU ¥ ¤Õidaö©¦�Chrå¯z¥¿ÄJÊF‰e—ä%¶5’±±ì•8 ´KñŒœBb8HRaÖ0Æp å/‡²Qòrv©±±­Œñ kìª=‹\I¸JJÊ®Ícµ6Àší˜\ˆØC¯ö2 ` j飪²\…-0aÀ¼"üz¶J)Ûw[•RvJÙ‘±ZÉ Î¹L ιLêš©móbtŒ[Â5¦(6e?UÚá'å)y�§J“éŠ�R¶ïrP`Êv^Äqà”IÒ© [€Qež�ªÒP b†NggcætñVN�™±2FVˆÆù¸lÒžËÖà1ÆÚb”°•aFµÓÐÖgjX`7*&Ó‡õ�©ö\C˜( LU.É%ÙX¹†j" e HYub§$@¸—eJƒ^%àa¸êlé$—jå²\…ÆÙ¢Hò6k Ò�Ù%f �@‰%(ójz.Á9äÕ³aJÙ¾Ûª”²SÊVñ9r˜+ "Î� ÛA¸®LL..VƒÜPlÊþviÒ�ËSóÔEW„”²}—ƒêRvæU;^ o$Žwh°²º’/2M·Uí@ú�tþ¸åó‰ÄNq"Ó¤ȵ)eûn«RÊN);2V+Y!Á9—I!Á9—I]3µm^l‚Žqk@¸ÆŦì'KÓTž™÷x²4�.)eû.›gÊÎu­o°8%šoxš.¼éÒ·?2YûĉO;�v פ”í»­J);¥lŸ#‡¹r!â\¹±„ëÊÄäâb5ˆÀ Ŧìo•¦ý ¼cÞãñÒ ºp¤”í»T—²qË*A® t§°w€�l>’Áo£S�j�³8Í·*Ò¹�j{í¡Ü"U•¥zcçâë=iáþØÀÂ�«3Äz$€•$�˜”N^’a7TmU/�Ò`È ó9°2/�Ò`ÐÈ0`�"#‡)eûn«8eß\zË=åU ;>bLƒ�£ÊŸkäa¦—|¬)ßÚà£í¥Rƒ�bfŒÛÆò¾�/ÃyægI’$“C'δr.OZI�ä–25©]Ša”¿¢]’ C¨’¢U0¹@JÙ¾Û¿”²ë‘¾±iºGlš®Á›¦‹ÉÅÅj±i®Glš®a›&*6e£4ë»å9y�o”fÓ…£ö¤ï{:íï|-)[^‘Ã×k®J}u8ì®V7cêjäTýäF:;WkWmÆÙ˜H¹Ø4²DØI*�OÙk»UÁøæòñy§û„«ÕÍEžy Ôó#²×àãåÔ¬aFb©‘Øç™É+óL=&…R9@� à ”’—XÊœ¼“ä._ÉæÁ0�“Æã”²}·)e§”]]BO)»ð žR¶ïiJòü”õµÒì§Êóò_/Í¡«FJÙr?%.*eÓ&®×�Rü5=O5E!ÃðjŸÂçÏÎáj³n˜w �JöndŠ©% ±KÌÐÙn´Å¼ŸRZA bæŠÑðtá•TáhÉ|€)eË[)‰SÊN);¥lß+à…çè°aJÙò©É‡ù)ë‘ÒÜ*ï’÷ .ºX¤”íÛÛS6ís-—ìÌkz¦àÍ�=syI�¹Õý¹‹Î>§­“ô9$^î€s뜤ì"ìÔ0é,©öB† ›È¹ÚÂgÇî¦#�³Zé{Dá…ÑÔªQ �kói˜§3º£Õ]|%/{�Ø×È<�“ª’lÉ5—ò‘½¾åI�§”í»­J);¥ì”²SÊnÀ[Ç‹}ÇøC¥�Ÿ(ÏÏ{8ûܤÀé �JŒªâ1/ bd¶F20”$p¸ Yá f^µh±AxyÐCæc.Ù�ªÃ�šH a®x¢j¥‡ÀÇ“ Ó&6H)Ûw[•RvJÙ)e§”ÝïRöWK»>^Þ=ïñÕ”²}W‚×ø7=eãÀê²�âiˆ’J&K+YæPö*,{U à ‰¥,Œá¬€êRU ¥ ¤�ÔÐÔrºŒÕÄÐHÐ;K²Wb)–¼Ä1ÒC&{%Ž@Y8àõضr� ³X5Ê!°j”C{Æ0#{V�¨*ž‡¨Ú@é!P< Q’@ÉdIb%“CÈ$ ®BV,ˆ™”5j^4Ú@)1„2ÀP‰eЀA»RÉØv°5‘ æ’z�N@J'Ïd.)†­"#‡)eûî­RÊN);¥ì”²û]Ê~°´ÛcåEy�Kóé’‘^Ëö]�²—rÜ9¨Ëº}óÀ_{U- 0t®A=5„›êuÊ”½>£wND†²·j�Ý(myÙJ£†X‰Ýè{Ô’·ÝdU™Cœw.4:Í™tjlÒf°È€�SÃúŸyý‘“Ê+%– z'ˆœ†d‚i€«  ƒ°^‰1ôu…=Ñnßòlec˜Èõ„÷A.5`è,9�$L$� `ìt°e™ f±•(Ù€Ä6)é&y…¥Œ1 l>†I)Ûw[•RvJÙ)e§”ÝïRöý¥_/ï‘÷¸¿´�®)eû.›Cʶ/è¾K¿�g‡˜*kp¶§Îd|³HþN€)d ȼ <»95 ¥&<»oÁŠWCÛß) ™��Yõ:eìiW}¼Ó„HÖûªÌû4ŠWCÛ“¾³œKil«z0™ëW“Bo(�%�$“]àÓ¿Y�âÕÐ7ËÔYŠU)ÓVöÖ‚óN½\°Z€Òp$ %V½Î¡O_O]r6Q$ |þ1UÒÀY9µÂ�)¾ñÃø•°2~…¶>0J>à›z§€«ÎR$ö·M”>°€@‰l•�š(Ü«Äj¸Å¤ìŽŽuƒÔÓÓ£˜\Ô²SÊN);¥ì~—²¿XZúpyϼÇKKèÒ�R¶ïQ`Ê\¯3K¸�@]Óiðɬæu³õÌ`…R Èð:Ñ)ƒ>ض6c[Õ¢Q½jÈsIRb¹/5Nh¬®dÏð�اQ¼¢ S¥ÕuI‡HìœÈI²!J èlO¤4ª‘†ؽNƧÏËcjnTg{jŸ?+ÃÕ¼nX›Ý(§£I}‚¢xlK¦¡o|<ªéœ9Ê<@¦g¦¬œ Ó_uÙúÀ2K$Pþz¡ñ�-5eßvÛmƒöÝ2Åð)e§”�RvJÙý.eß[ZòÕòŠ¼Ç½¥et�H)Ûwi(*eóÅÚw5_ÊÑ €º¾ûx–…«ÊІyõrîUgLŒT·§•$mÛ˜õø4ÒÍ©±IÙ‚…IÒna™Ô 1ø ©×Wòñ¾é|zæ¹Ë©±IÙâœÎnqʰ­ÎPùcèœÈ7…â½ì/>Œ•€šJé ’€�g Ü �&‘>ª%0ôÍÂ-X•Ï!SàkÌÅçšÅ÷ˆ|&ŠWÃÈuú&åöÏZbüåqê�$uùøp Óq;†¹À�²gÍšÕdýknn>ꨣ|·L1|JÙ)e§”�Rv¿KÙ÷”–}¥¼WÞãƒW…ZR6®ïö5%[c3,–<Úd•1JRR©‰ÁÜNʰ�ªb(§`R2U`8+ ¬TC)©@uÙE˜=Aª)äš\@ùË^i®°”ebÕ‹¡l©€­‘Œ�U;†P‚Q  ‘d^ à£x9Œ×pë}na  °lT%ʪs—¬Æø„5v՞ŞQ2 ÃPñ1…ȹbŽÓ‡Mœ%Iʹ$vÎ+ K=°Ò`OU”|VJ@ ä’',KÀJƒ!1` HÙ7n¼óÎ;Hgü«ýE™”²SÊN);¥ì~—²ï,­x ¼2ïqgiOº^Ôþ´Œªý¸X`Êv^—qùpÊ$éT‚�-À¨2Ï@Ui¨1C§³³1sºx+§?È̉X#+Dã|\6iÏekðc m1JزLF¶3¶[25¾Feé#eÊChÀT`¢€´R%Jc%“ÙâÃRÆj" eHYub§$@¸—eJƒ^%àa¸êl©‰•ø€œ—5’QØi�³*I(pÎß(•a+5/ í^Å Eò �à€F•0D¯Ä€- e×éÖ-¥ì”²SÊN)»ß¥ìÛK{ÝW~KÞãöÒÞt½H)Ûw5©.eÇ\‚#5ê*�ad{ãe¼ÂÆÏ›fL;PˤßÛªwOJ Tm˜Ól;°¤ìóÎ;�n�ÎqýóÝ2)~É’%ô–󫮺Jò)e§”�RvJÙý.eßRZùÅò¾y�[K+ér–R¶¼H¼y¦ìÍù$¥•Íù§“ÖæÜ�ôKëÜ–HR…ë´™‘û–d[öl){Á‚t;4gΜ¹Ö?y›äÃÒwÝu×”²ë‘©mO3½Üࣺ¤\KWÛK¥¾,\?~cyßF«Ê÷4øh@¸Æ¥G+™Ún-ÿað ¥} Yƒïi¶¿óµ¤lûæss»©èï÷Ãö+&ï†Ç´4ªd±»D ª b4ha1†i«ôªËYm¼&°ŒTJ;�v íÀæ¹[@Ê®åþ�>Ó=zôhú4wJÙv"®ÓàˆMÓÕ’—«ëmpĦéê—¦}Î�ŒØ4Wƒ#6M‡ÜPtÊÞïžò�y�ϧ”¼�T�²e–‘x³ºpF³Íj…áÅÈ�uâp»¬:ÛíýqÊàã¬J’•’Q8Æ ˜€aÞ”ž†RiWmÛzk|þ‰O;�v íÀæ¼[yÊÞc�=N;í4º½ª=e/X=¦©É\ðøÂ{Ê«è8ïë &ÌîØÝ2vj×îÙ™ÉÌóGŒ‰?f¼ö‹uìk-4fš1ƒ_cÌc¥·[=Ï45­|â jÙëë½|Ú€¡�­]íÃw�°ççFúäKÙÝ«�i2㟨tѹ}Žijš:LÛd3òÒH«\Iy›Õ»Òc\úÄ:Ùµð�9áØ%’ àø”Ý´êrnùòCÔÒòÀW›®n>šVîïãËÂ6¿põ(šäâÇwåÒþ´|¯wn3xÔúE7½ëšŸ-²[œL|ÊÞ}õhšñ¢'PË‘—L¥‰p¿ÿ©b¬r¥ì1«ÐN.|üîšþñµF6w  óŒË�Š´Š׫—U~n�_k¸åÊ÷™‰cMO§Ùq¢¹ïc½dØ­Ø”}ciÕ�å·ç=n,íOOµ¿žŒªý¸X]ÊFTy퉹÷ä$¥ ñ˜—Ôøyë=c�ËÙ¢HÒëWŒÒC&�jAIòC@ÀæÁ0�âö‰cÜ© <„TJ;�v íÀæ¼[Lʦw‹Ï›7ï'¼Ë.»ì³Ï>—^z©ïÞnݺu³gÏæj�)ûÔ;æÍ^9‚n¶/x¢’²7üfÏöΖ÷ßU ×ùÖÂö®–�}o�̈]GdÊŸ;¼ö‹uìk-g³Ÿ1Ç3Șƒ¢MhºÈt¼øŽw�]¹#Å NÙK7ž´üÁSŽx庵¯~fÁg�jnk9ðWÇXEFãŠl›;L'}Vôõ”=ùOfÒï{ÛÇ»’µÇ=ãˆÃª´Ûïµr=F™²ßö_ŸîÚaÔðÅS'¼s©Òû†‘é¸å³76-_AÓõ¥ìñ"{•Ì„mòƒwì4wåpú-½ä‰ùT½ç•½ÆÏêÞï”íîü?{Òð3¿^|Ë‹Ëí.'�Ióþ;æÌymFNÙ²ëÚç–67›�ÿ`‘$}82“lÞ§ŽX9›vuá•”½ëýg¶t¶ïñÝ‹ /úöG)kÏÿòY1ná\Œê1+çÓlæ‰ •@}ó:3rˆyö üÕO˜�Ì?ß�´‹MÙ×—Þv[yuÞãúÒôt’R¶ïbQKʶo|éÆV6†ÙÜÖSÔ£Îû¸|zæéÌ sÊ$)±ï±4(Ø&ªÄCœm½“Q&¬‘&NÉ©q®<‘iÒ¤è;°Å¤ì£�>zĈïxÇ;Î8ã :�9’Îk×®4hЩ§žjß;Ñ{ÅIË-·Pé±Ç£”½~ýz)ã9îóž û`{:Î}d7_Lþܦ•#'t\÷üžHÙ‡|dêŽË†C¿ìãV·†™²OíeëÓ^û ;ö�™zHRöšMŸìš0ü ç/¥8Á)[ê�£-¾ëE:‡1¹¸¢™¼É´M0“žïKÙDò1ífÂÓ¦yˆÙþg1n¾,¬øý7mèœ0â­Ï¯§Ç(SövG.œ}Å‘ôBv±¯e·þ˯Ìvã[Ÿù)Mט”}ó¦e£& üÜóôE½)ûäÏ̳CÇ}ÿXéÌÑaÒ‡%ã¦=éÿŸy~9Íh§ìNß~Ò®ƒ¥>€cr1iVnú½`½çó×Ñ®rÊž~Ù‘CæOB;ៈz99:6}ÙLcžÿ"ÍÖ›²ß¶‡ùÀa}±zï]Íñ«ú†Êê‘+*b:ÞCÿɬˆ„ËOYŸ+pkyMÞƒº Yƒ| Ý’p±)»òóÞœþùÂT!k”‰¬ÃH“*”³ë'ÀSd�Z¶Ó„4ÌÓX5ò0ÜîlQ¤ÓAÎNú7]£Öœ†iÒ¤è_;°Å¤ìY³fÝxã�¸¯»é¦›èål^sÍ5cÆŒð±�}¬µµuðëÿ(ewuurÈ!ð-ëÍ¥·B1—æ8ú¸ ³#eÏ?h̪î€ÆcÖï¸ý΃1 €È”Mo§ï*"1ý;¶þ){Ü�sço8‚R3Å ;eïÿ“7µ¶ðË‹œ±Z‘1¹¸¢é>ÐŒÞPx-›#vó`Ó4À4uV^éf&ë¬Ò´o8öÀ�çnxUé1"e/¼ïýÃLZýê&SpÊnÚwÿæ�’^’¦éúRö€fôh3lXÓž{µ|ãqõ‚u`NÄ\]pàÈ7L'Œ”½Ç¡£wÞwÄ’#Æ Ñ6jbÇÑ—N‰ñaM £´Û�£ÞµaGÚ)û®ÿû–žám'_? â0@LƒÑΟµá8ÒЮrÊ^òÌåmCº>yáþ¯ÞµûcnÚµôÙO†M¸ª±sxà³áƒ•�”}ÀbóþCûbõž»˜�§õ �&DûZö§K«o.–÷ .z2¡'=<& w –”MQ…öÖ÷�ƒŒ}¶õuÒÐDìÌ3J,× yÆöYê�!Ó 9£Ý€¬Ó¶ŠÁÐhq蹪†hññ$à”`+mÛ7WX|*¥H;�v _ìÀ“²;;;åMaJÍÌ 8P•høè£�Þûú¿{Rö…^øàƒB™²ßwÛÜK†qpFÊÞi¯ôr6ÒôI7Ì3¹ÈIÙo7füëÉš~ÇŽ}soá¯eïqÛñ£–Lá°LqB¥ìƒÿtEÏ”Q3Ïy«JÓ¾aT4{›éXÒ«T)›2õ´WÍ6wš¦.3á;1n¾X-ùù·�s}ÓÂEœši:NÙ­¿ø·Ö§ÿ™ÈÖçßüÿØ;ø*ªë�Ÿ÷ò²ï ’!ì» ²#‹¢ì ûŽì« ‹"ÜEWAD@EY´¶um]Z—bi­Uê¿.…i±VQææMrßdÞ›y3ɼ'/ùås>é¹çž{罟éÌùrïÌ,½‘ïÎö¼÷� Yk»‚Òñu;›7é’¦¦ ÊnÑ3ƒý™7áø=ï_–š3ûÅ·bæP̽ów¶lÜ%]Mã£èÖ²¹7!ųë»>AçQ¬pq«�s3º4V3YU•²¹ÙtãDWtÿCÿnºIap+fDÄ"¾s%uiYJÐüÕã[—QV½ó(]ø5í¿ƒ¢=T\'Ü”}¿4ôQy¤]»_Æ'AÙcÇŽ-,,ä3'ïêÙ³'ïü'FÕ™3gŸ3'Nœ(â»víj×®Ÿ‡322xg‘ˆ?~œ÷q�»Ú·o¿gÏÑANÅ(›%ä¢u8.~´q�/rØÑu‰¦S9<¡:•:³vZÿ¸8º¿c4PÌˆÑ·0?–n”¶©õyµ©û­�\×¥mjÓ´¾È ½ZG›©új¯\ñOÓj3uiáÌÑ~ øP @�U ÊPv^^ÞªU«DÙÆÈÌnîß¿Ÿ E7r¸b¬Àû²y¯xz^Ü='»38?yáj.¶Õ§ŸµªµlÞ+žL4ÇKÖ+½sBIÙ¼W<>/M]§sáa…²_Qž~¦ÚÐ/ïNmšW<³›ˆu‚s1ï÷äQ½“J&oW(û•£’PúÜq¿¥m-Môy¯x\^zŸ“k¸wÈ… e¿r#û¼W¼qÉuˆƒkÙÊ^ñÜšž7~¯õ×gÊ~î ™UŸ5vßv§<`Äœ‹y¯xF^ìý';qïç¿Rõég—ª‘S7^Œí¿ ¿ý€lÑ4wÌé˜÷Šó7�ìÊiO_¸’�xó+ÊÓÏ„1€_9+_4ƒ:A¹˜÷ŠóÄî'ïáÌ«/<©P¶÷égÍØ0¯ÛGë9ÞíÃõì7{àÚ ³q‚ é€ïÏË¢“»‚f æ/(ž~¶fÕË£Œºê2Ó‡:67eß']³Um×6I×ðéDPö”)SÔ­A|þäW%òó.´gÎ�;wòÙµ~ýú‚²�;VXX8dÈv˜£ëÔ©3sæLuÈÔ©S¹ùä“O=z”xß¡£�-"ü S6«*ØD눂A ЦêˆÌ€M‘¬«b1GŒbG{,1\8þÇ]Ú�b]o˜›ÚOkýÐÚQZŸgÐ6U?àoóc‰!þiVºDŽpŒæñ�ë"ê Ú „{uA]S® êšÎÑ~6øP @�U ÊPöÍ7ßÍ»Äù‰g\²Ï Íõï ×î·^ÑYYË^z ]T´+9+F5.¶R=|÷5%åîËî2¶ÖåSœ¹/{‘›(¡Ìø¯.–è2 h;»–Í�8ã'›Åf%©Æ8�ßxao¦éÁŸÝ‘RœÓhAÏ d­MÎŵESTV©1eó.ñô…ú�‰WSÆ"}б9! Ykƒ,äUΘ¬dÕ¼ß1¡èº+¹ÉŒÕ ;.š-®fšv ‘„E0ê‰'):š23K�ÿhRRݳæˆÕq�²—hí‰vñ¶pÕø€‰©ž×ŒZ]_GÙ¼«Ü®E¯9ßp ­îˆüÿ‹þ ÕQ÷|¨Ü¾þ�Í'Ñöåâv–êþ#zRê^wuvŸ–E7 Ãë/˜}EKÑ4qµ¸KY§æekÕøë¤&Ñ‘z îÔœ–�×Å$ÂqvÇøFiøfy¬]»WÁ'AÙÚóä�wÞɧSáµi~h$Ÿ]ù4+(›j˄Դ%K–¨ÿÈÉM~UâÒ¥KÕø‹/¾Èi7n³EŠSÊÖÕ*†ðo5�J¸KW}£ßÚy¬ä¨ùÚßþÇÒöjç÷÷µ™Úy´ñ0ûþb pÄ'ÕáߢKuŒâÓýçÔ¥‰¦z,ÑÔ:&]"-`Ž4ùÍÃMzÕ.sħ… ˆ\ª esµ¶mÛ6Þ©xÕUWñsÏØ¯dýf…²Ÿø_߇N÷*µ/zr±½ðé¶ÛÏ^QúŒñ'•gŒ¯<ÑAyÆø[�M6Š‹® ;Æ—-,³ë¼v¼µÔKÙÜÅÆ/óêïuVhÐÛdZ-ûû£þwÿ�ÓkJí‹»˜@»>=cøÙ{úÿéæ„:Moèë?Ä<œ‹‹ÿ§ÿ?÷ò•”�àùÝ{º±FM¿�½ÿëõè鮪mý¢+ÿ•.yºåg{lù¬ ? Ÿw‰ó7¿Ã+-'fÞöfgðjØßçÛ®·œî¡Úæ/zð¯ºõ޳½ÔL~{WÃŽiþ£L"&8¬võýß½N?¤ZÏ/bUÛ>½ðŠ3Ûê/�Ô¨–ºÆÝýã ‰Å5´ƒÎÆ �:ÿ;A§÷—ÚÏòÑèé[éìaúî}ü„‚ÕçŽRÉdª•Mß 7eß#�|Xo×î‘øðSöðáÛ7o.N§³gÏîÖ­7µ”ÍÈ4h r¶lÙ»ƒ:Ä÷à°£}bFQQÑܹsEf¤8R6ë,�Dç{Ï西üsԈ‹k›ºÑŽš¬6µ¾H`G×úF9Úx˜}£�ôc¨AáøÏfÒ%’ýsÔÿ9æŽy¾ÿüþ³ÌÓ9<�Q—ˆ;˜ãÿ±�P DœU‰²�-جP¶ cÕáb[}“7WëÀïËf¾Ýû²™�ùgbM{[ ¥¥?ÝËâ&ˆÍ]æP¬ëeœPïË®7±£Ëíò$Å ãW}é’6­pq¹eǸ÷}Ù9)¯Év'‘;™â;RíCåÒ­b« ZþµâówO?ùÎÞ—­…e>œz_¶ûæÛ¨VmJL¤äWç®Q�hÓÌ} 6‰ð_©ú&/Îá­ãõZ'Ç'GeçÇM\[l2J×eBÄþ]|Dq_ö®ÿöIJ�ž·£…šIÄ ksXUõ¾ì¾ÿÝY0ëŠØÜ4ÞŠÀ¿ g_Ñ÷û�ÚL#? \ù ª÷eýµ¨¯¼,;=™†õ O÷GlžÓÙµìõÒèå‰v�Gñ‰Ã-›×¬ãã㙚ճëã�?ίoxæ™g¸©¥ìI“&µlÙRœ�yK9Ã5?÷‚7г³{÷nÑÅëà¼]4#Å©e«ôQvJöý¯6®%‘¡ jóEŽÎ©LŽv¬Ö×BW}þퟠ rBÀdí@g}õp›Ó䣊i…ãÑ%“µKÍäßþ™#AóM­=bÀÉýƒAgã!áÌñÿ„ˆ@(.fªeßtÓM\ª- ôS™®”­ƒî 4͉8½Y8tA‹hì`š å°9æDŠ^‡¡iBÄ¡è2báÐÅ�€:qg)ûniì}òd‹6ëpŸ×5eë:»1_§t”͈�œœ¼~ýzõDÊ÷Só¢6ŸhÕ&cµØ1ÎkÙÅÅÅâ|«[Ëæ7>ˆ.^ËøjE‘pq:•¡lÆm  R‰Ц¿#F‰.ñw*“£ŽUç 8�.(šþNÅ>˜ÿ¨ GÔ�d2\|æ€9‡kƒFõq­¯=Š.®kj3úVòÕœ€ÃÕ`ÐíX+ÉáÌÑ~6øP @�‹_�*@Ùüp.̸äãµÝOe 6Pv(XÛA|¶8UØàZ(m>g°ZwˆP ´Éœ¡£i£™CAÓFs:MÙî“§Úµ5Òx¾Zi)û†n`ÄÖÞCÍ;Àyaºì凩ü&D~yãÆ�ù4Ë÷e³øðaõ”»xñbq_6¿HQÜ—Í3ð}ÙüvÅÊœ™‘±£l–Teÿߢ6�¢Ë ª£ëMmšê+9o饗ÌÏ×ÍÍ S6«ªbˆö·¶ °)j¾v£QËñŸM7�øÚO¢ý‰ïÿEü?˜øjþ]""rŒ&Ô%L3Ï Ø« ü0"¨s´µ~À4]Ф©Ne’À]áÌ1ÿ$è…P \l €²�j ·Í‘)l6MâkAå W=e-‘®_!/·k‹¥ëù F§ÓH�ƒ²/†rŸ @( @)Ê6*ÿ@Ù¡¡ïð"6}x›fÄæÃ…±ùpáDl>V¸›¡>lˆÍr”²IKn”WØ5Å*Wžô�N§‘eGPUƒ�  €PàbP”mTþ�²AÙ#tP¶ã Ê6:Miãê)k�´l©¼Ê®-”nàë([«§Öe_ å >€P @�R ÊPöSO=¥-ŠØ÷�èÌ› lP6(Ûh•ÜqŽ6Ÿ”m~²R{Ë(û†¥r‰]›Ê6•”AU >*€P @�‹A�*CÙ º*)99Y±Õeƒ²AÙ ìplwtÇø\é¦ëå[íÚi9_�°–mt�e_ å >€P @�R ÊPv||¼¶@:qâDbb¢6b×eƒ²A٠숣ìYÒŠëäÛìÚli%_¶@ÙF— PvU5ø¨P @(.ªe_{íµW^y¥ÇãéÛ·/;êOË–-›7onT2Y‰ƒ²AÙ lPvÄQöLiÕù»6CZÅ×#P¶Ñ¥”}1”+ø P @("H�*@Ù‹/ž0aBttôĉÙáßü3þügŸ}Ö¨d²eƒ²A٠숣ìéÒê¹ò]vmºt3_¶@ÙF—PvU5ø¨P @(.ªe«uÑòåË� ¤ŠÅAÙ lP6(;â({štËùn»6]º…¯G l£‹(ûb(Wð €P D�U†²}ôÑ}ûöq�tðàÁ1cÆŒ?þСCF%“•8(” ÊeGe_+Ý6K^g×x_¶@ÙF—†JQv ‘ÎBW"èÄÍ€?2‘ÖüsJÂø™ý�Ž€P @�ÈW ÊPvaaác�=Æ5Rÿþý ŠŠŠø6m£’ÉJ” Êeƒ²#޲'JwL“7صIÒ�|5e]ªekùZøºb¦”­SM( €ö¨2”­¾É‹-ž’’²sçÎýû÷§¦¦•LVâ lP6(”�”}×4y£]›(ÝÅWP¶Ñ¥¡R”­^“K¼Üjïúl?;èQü±Ú?¢;lÐ9uùhB( €DU†²ùM^G�å}ã999j¥gT2Y‰ƒ²AÙ lPvÄQö8éî)ò}v�Gñõ”mti¨j”­+~TÐÖE³$,ÿ>  @( @•P ÊPvëÖ­ бcÇ~ýúq¥ôÔSOeff•LVâ lP6(”q”=ZZ7Q~À®�•Öñ ”mtie®wJÊ6–îF @( @õU ÊP6ïïÖ­¿,[}�?r\Åm£ª)h” Êeƒ²#�²×O”´k£¤õ|e]BKÙ%e¬ªu*V•¨3˜ŒõßîÑ 7™Síâßø�P @(Ê+Pe({Ù²eGŽ1ª‘*eƒ²A٠숣ì‘ÒÆñòf»Æ£øÊÊ6ºRü”]RþRm±Å£‚X­uLæ7™Sí zD“ÉÑ €P Š*Pe([}ú™Q�T�8(” ÊeGe—î#o±k#¤M|‰e])ÂAÙÚ£¤lu[´â«M2µd­ó�F�Óh âP @(ª±U†²›5k¶mÛ6£©q+”í3‚bb()QµØm%�ûJ5ö]õërÜݼiÜ¡gDÜÜi/¿bnY®tÅD»“âU«¿k…šßì�ÛRû^]3“\®F¯Üc>‰¶7J_CC”Xf÷•å³Ó†(ÙïÀåyYüó`Î"s›à=b‘jO”å?IÔ˜(•(ž¨)Ñ#eqóÙ.'å¢ äŽ!OR©uÝ¥Òž—ù\ÔªDŸ(Œl’§˜Ø¥xbܱIѪMØÕ]M³­‹ËíñÎ3™L¢ë2báÒxó C1I¥6`—/Æ_©áPŠË ˜dªÑ’æ}íëZ&›ør™Ø„xå�&ÉUj»ÒJ“§'ø‚Üë"Ú�b6�8Ñ'Ál0QtÙ_)ÿ¹òþguÈGD×eÅÕ#â'i�Ê›0G6ãëFÞ¿™è$R­Ï®ÒäY?QÛ)1�¢YÏKhȯÍ&‡˜&ñ%¨ò„«ž²®‘î-oµkÃ$þ´Ÿ¡gÚˆnÊæÿ%V¥9M÷Sb:J`µn”Q\M3ŸS7šP @( €W�*CÙcÇŽå§‹O™2…·Ž‹ŸÊÔo–({ìȘåKüÁ9þØ ”�ÿâ~îbܦĄ„?½ëŸæÑòo@?k╵VOòïj~òñº�,nú»‡ÊþÕFÿ£H0(N´(PÎZ"ÆÞO‰þB4ß ¿Œ3A›‚A1Mô–‰þi<ö«²áûì%>¢š_Ä€…}€\4‘Z­ö5uùCNQr=Êhi–S~ˆ�uÍK'6¸ju]�›LÙ zÔô�[‰˜à°ÒÕ|"u^ gÞW”T“ºÝAׯôNù€} -n þ èLŒ§ÕÉAðùh¦BÅ_æISç·€ÆCˆæJ[îEì#Þ.I7Ñó�ÒüÐ[ p@§ÑDj¿:A·/¡´bšð™ÒÕc‹Âà?�¦›ÓQÊ,=0\Þf׆Hò¡ò¤_™SîÅ<¶JQvÀâGí€]%¦äp‚P @(ª½U†²[zZ•ÿ©LÙf•²o\ì˼ÆÍ&âîΗÅÜ´T4M#q…²K&Ц¿Ê^ Ÿÿìe^†§({•)>Ÿ÷‚RººýÈZKßå8M+”m°N=ágÊéB=öQnw')»¤µ?;+”Ý=t”]Ÿ;,£ünâ�°Z—®E�)»$e�#61ÄܱÀÅCˆæJMÔWÏ ºWÓôƒk±Ò­a]S¡ì’øœÙœºlôÅS‹èÒ[|MÝ$¢é(e’ºF~Ì® –â‹!(Ûè’Ê\+•xœã @( (¯@•¡l£ê¨Âq‹”M锞æÊ¯=sjâÿ}ª´»e󘵷 šŽž==jàÕ¢iâøS³.”íÉH‰JOŽ)ÈÍ™7´í^Ô%„€²Ó¼KÕµ‰&ý)Joóîîþ0P—?w›±Blj…¢ ¼«“ÿÖ÷߈øÃx¼ Ç5qÓ9­Pv,o™N§¤j<�ÆüÇGâí7PÁ0¥é(e'dÄ&¤Çd$u›×díÆ«Ä=v{טDORv\r�¸–C Wþù7ŠèXßäµlÞ—N©tÉÙ™Ô©yZ¿Ët9NS6oµýÀ‹Ï¯µ#êå‡ÒÏ"ºÃ/îÏ×jÄ”ˆÊf>ú—— Ou"êçGÓÿóÞuË<śՃÎfá¾ìïÑè3 Jù„jt¢ÚýJ)›› µiÄ?�¥ìeï ºëÌXæåŸ «×)§Y¿:*;—|:|õßF°ç·c;Ïh”š— Ü®E<Oz�œQr¦}Bµ;QQ¿Òü´ú䎦a”æ¨䉧‘Ç‚LUÆÝ‚:ïeÓ/YRƒ:ÅP¿X=MßšLEQú`À©Ô .~ŽèwÞ´—ˆÚõÐ ™êÝkÁÿ8“@Ä›ÆMáZô±ùM=£àóØO¨f'*ìWŠÒíVPZ÷â´»ólÕéfʾZzd�¼Ë®õ—¶ò•”mt9¨e—”-ø §üU8ð-Øj².3hS¥ý­"€ÚßÑfjgP}m¯ðEšˆÀ�P @(¼ TÊ.,,äÒ(×ï§fÍšF%“•¸ÊÖòrü«/1á&ž>ÅAe-{Ý¢7zÖ´¨AýDÓÄÑ!³y³éÛÊ]ØmÎ*Ð-ÌiÊÖÂò ^ZÑ®Y¿L”KtƒeÄæÙ,p±/ç-ïÏÕ‚ˆï ·0[еlmB¿·•#Ž>K.P�ÎÔy{)qçv3ÜU®îõüu¿=Àå¢5gÇé27þ4)>5fÚs½tq£¦E4VÒ&x¿à‚³ŠŸÓšò{øÆ6¤¬t—q´¹cBĺ®·³”[èÏj–³®©¬q¯±öÜ3Ë”­egõ¶ýß{�úZ/t¿âõŸòÞ£½Ùh›S¶¶w¸WÒ©gšžužÚ,¡¤:—EÅ£)ÿ å·69 ïèZv?éÑÁò»v5(ÛôªPu(›¯ûþ|ÍÝOI°Ðå£  €P ”W  Pö½÷ÞËõц@?¦uS�Î R¶wiÛ3vd¹û²;^³b™ \‹.ËVœRÊö.m‹üÐS¶º´Í¼ÌËÜÙD«ì vÅ([]ÚÖuSï ¶º` ¦—‚sÀx)eŸQö�3Æf•¯ùz(ûR³±e±°\¥lui[Û«RöÔý¡£lïÒvóI~”=ß®E¯¥Mš*e«KÛjÚAÞjMô�†»M†«]–¸X,C“JÙêÒv]¢[4ï&©ijÙ¼¼‡K)Û»´­Màåìä|åhÚ`@ßQʾRÚÞ_~Ê®ñ(¾2`-ÛèªP)Ê.ÍE @( ¨ TÊîÙ³§(�Ö¯_/üJ:V(;î‰m‰ÿTîÅNøðwF]^º-<þøA~®xüáç¸ËÙgŒí»¹í9å^ì–ŸîIêÜ<¥÷%‚¯/ùþ¥Kþ{„)»áKkÙo÷ó Ñeâcd^øã�ÛLǯµ'êZ–ÿ¬÷6ØÛËšœ`Ñ�p¹%駉˜p9í¯D�‰z—-Xï%úÌëŸó¾�)©¬lÂ2ø5d~¸Ù˜sJï°O•õë¼Þ¥™ÃO“j×|AÙ—QÓE¥»ÇƒM¨åeʾžkÏ)÷bóñú�sõ®¥æÌ:rÅmÿ7š}^Úî:»1ß�½FÒ¯qûϦFüv甮™ŸRíÎTØ»4müKÃ_Tšc^¥èýràü¸Í¹x_:�óBô§5¨s õ.¿c|@�Ž·±]œ�e�‹ï#zÏ›v»xÍ÷¨ÔÌ�>»„è×Þ&ÿiñ-ÿ«ËºÊcµÒ½ñ€8,‚}÷Ñôs >�ÿ”jv¦:½KQzÊ74þoŠí¿¨é4âÛ´gþfÊî-í¸J~Ú®õ‘v°Ê l£«(»:”CøŽP @(T  Pv||¼(�’’’„_IÇ e»;uàGŸñK±]95ã—eGçfdO ¶‹3t3_+æv«N½Çn:'£c&k¾:Ñû©±Db»xG¢(Íë‰9á™`S© Š©‹÷U Ѽ}:‘Ø.΋æùÞ#òçaô~£Œ¾ƒM Š•§ˆó£Ïø}Ùñ¹Ôpº²]ÜH®cϯß%‡}ÆïÅNÉ�ï4½‘Ø.~ù¢fá q/߬}ã‡CŒ˜Ú?�ëtQ}ÆïËNÌ¥VÓIÝ.®‚ó ½Êsϸ+£˜ú=d k›Sv—åÑgüFì\7ñ;²µÛÅ¿ÈQž^÷ªåçžY^Ëf”VÿPy¯V«ÛÅ™—ù錄÷/Šß—�G4Ûû?Ž3Ô�¼.Ê£ÏøE] ¹Ôt:©ÛÅ9sÔÊ›¼8ŸM�'CwÀẠ£kÙ½¥ÇûÊûìZ/éq¾¬€²�® l«L €P :(Ê6*«¬P¶92W × ;›c �U@väw0(.·®íD²?2‡8âOÁ¡ŽX§c§2Í)ÛñÞàP”ší&è@8¤MG)»§´û ù9»Æ£øzÊ6º€²«C9„ï €PÀA@ÙFe(;4î8Û"ñ3µÿÂw¨™Ú~§ØÙú<Žs´ù„ l£Ó”6®ž²ºK{zÉÏ۵˥'ù²ÊÖê©õAÙV˜ @( @uP  PvttôIJŸ˜˜˜2Wù_m™d×eƒ²ý ÚJÄŸ‚C±NÇNešC±ã½ l+§/õ”ÕMzª§ü‚]ë*ñØAÙ†2ƒ²«C9„ï €PÀAªe·lÙ²UÙ�ðUǰf²ÐÊe[ajÿœP3µÿüN±³õyçhó AÙÎX/«§¬ÎÒÓÝåCv­‹Ä�†eÊ Êv°êÀTP @(ªƒU€² £Êu€²AÙþm%âOÁ¡ŽX§c§2Í¡Øñ^P¶•“™zÊê$=ÝM~Ñ®u–øõg lC™AÙÕ¡Âw„P @(à  l£º ” ʶÂÔþ9¡fjÿù�bgëó8ÎÑæ‚²�NSÚ¸zÊê =ÛY~É®ñ(¾¬ð Ú á @ÙV˜ @( @uP”-ê(�Êeû´•ˆ?‡:b�Ž�Ê4‡bÇ{AÙº³SÀ¦zÊj'=™|Ü®]*=Ï×;AÙ«V­jÑ¢EBB‚ËåÒkÚ´i999±±±ü{úôé¢k×®]íÚµãüŒŒŒqãÆ‰øñãÇÇŒÃAîjß¾ýž={DWd9 ìêPá;B( pPP¶Q±Êe[ajÿœP3µÿüN±³õyçhó AÙF§)m\=eµ—^è(¿l×ÚIø²"({íÚµ+W®\²d‰–²o½õÖ¸¸¸û￟zï½÷2kßvÛmì;v¬°°pÈ�!ì0GשSgæÌ™ê›:u*7Ÿ|òÉ£G�rBýúõOœ8¡ý̑⃲¬:0€P @�ê (Û¨Ìeƒ²ý ÚJÄŸ‚C±NÇNešC±ã½ l£Ó”6®ž²ÚJ‡.•e×x_ïe«ÓnذAKÙ¼�ݨQ#qDög̘ÁMNcâ>räˆÚÅlž——§ú¼ä½téRÕñÅ9mãÆ�j3²~ƒ²«C9„ï €PÀA@ÙFÅ(”m…©ýsBÍÔþó;ÅÎÖçqœ£Í'e�¦´qõ”ÕJ:ÜVþµm“óeÅœ²·lÙ’””ĘÌûÀׯ_Ÿœœ¼uëVþsæÌiР�ø$œÆl~èС°£æ¨½EEEsçΙ䀲¬:0€P @�ê (Û¨Òeƒ²ý ÚJÄŸ‚C±NÇNešC±ã½ l£Ó”6^FÙGÚÊ¿±k­¤#|½3§l>µÇ㉊ŠâßóæÍS�>iÒ$~s¢ø$;wîd¸Þ»w/ogg÷îÝ¢‹ïõž2eŠhF�Ê®å¾#€P @eUz lP¶¦öÏ 5SûÏï;[ŸÇqŽ6Ÿ”mtšÒÆÕSV éXkùu‹Vÿð†ìëF²eÍÊ—sÊž?>ßd½}ûv>è¶mÛØ_°`ûŒÞÅÅÅâ“èÖ²}ôQÑÅkÙ‚ÍE0"P¶ƒU¦‚P @(PeÕxjÉ*=Cò‘ð“Ãlò §Q–n[&[‡Gg2se ¯Å�ý6ÌÖXþ}8m�|{˜íc¹ lö¶T‡¯5:Â5:/™ÄÕSVéxsù Û&�ðÿ ºû²/¹ä~`¸ø£F�âçŠs“Óø©h‡V»/^,îËÎÍÍ÷eór¾/››&fˆ ”]Ê!|G( €*Ê6ªô@Ù¡ ïp#6C=(; NÄæc…±ùpaCl>�³”ÝX:ÑL~Ë®5*OÙ|ç5?ÍlÍš5¼å›þáóäÈ‘#óóówìØÁþc�=ÆkÙ Úìs2?c|ذaþÏç¦ñÞ:þÒK/ <˜Ÿ1nt¾½Èã l«L €P :(Ê6ªî@Ù ì zx²yÝ<Ì Ù|8P¶ƒî,eK¿ªÀ�FÒ¯øz'ÖÓyšùšÜn·ú›_ÑÅ«Õä—_ÇÄÄðïAƒ©ôͧP¾ùZ}_vzzºö}ÙüÞ.^þæ Þ—]Ê |G( €P@(Êe‡‚¦�æÄZv(6“ƒ²_ìv¢ƒNå,e7�^m$¿c׊¥Wù¢ (Ûè¬XmãXË5( €PÀŠ l£ºkÙF¤\™8(”]�•VÇ!:è„AÑØÁg)»¾ôÛbù}»Æ£øzÊ6º€²­”È�P @(„ l£² ”]š6 Êeƒ²u„î,eו^¯/ÿѮՓ^ç‹(ÛèrÊ5( €PÀŠ l£² ”mDÊ•‰ƒ²AÙ ì�Rv=é�"ù»VWzƒ¯ l£Ë(ÛJ9�( €P@(Ê6*«@Ù•¡i£± lP6(;¤”�/½](l×êHoóE”mt9e‹š€P @(`EP¶QYÊ6"åÊÄAÙ lPvH);Oú}mù¤]«#ýž¯ l£Ë(ÛJ9�( €P@(Ê6*«@Ù•¡i£± lP6(;Ä”ýnmùÏv-Oz—/  l£Ë([Ô p €P @+ €²�Ê*P¶)W&Êeƒ²CJÙ5¥÷kɵk¹Òû|½e]@ÙVÊ ä@( €BP¶QYÊ® M�eƒ²AÙ!¥ìlé9ò§¶íìø¢Ê6º€²EÍ @( °¢(Û¨¬e‘reâ lP6(;¤”�%}PCþÌ®ežý€¯ l£Ë(ÛJ9�( €P@(Ê6*«@Ù•¡i£± lP6(;¤”�~æ£ÌŸ?·mÿúˆ/  l£Ë([Ô p €P @+ €²×¯_߬Y³ÄÄÄäää®]»Š* ”mDÊ•‰ƒ²AÙ ìÐRö·gœÿ®¥û1_/@Ùâü¯s@ÙVÊ ä@( €B�jNÙ6l`¸¾ýöÛ¹¦:vìØæÍ›EqÊ® M�eƒ²AÙ!¥ì”¯>Iýß—v�GñE”-Îÿ:”-j8P @( €ª9e7iÒd„ º‚Jm‚²�H¹2qP6(”RÊNüò/Iß}e×R¾ü _/@Ù¯e[)'� €P ª3e:tÈív�;¶¸¸˜W´yßø}÷Ý'ª,ë”}b ulB) ”žLC;“|D±]˨(�’â©e=â5ô7“-ÙÚÔ´#%¦Pr:uª ÙòGjß—2k’ËEë^±4‰÷XV�ùÄ"êXŸRâ)=�†¶!²{*u¨§D’b©[1½u£´bV);åy:’+…\é3T•üE5&W*Q¥§Sr’«y³Ø¿|t5Á )çŸx(¾cKwJ’;=%yX/’6}¨;)Aÿ­ælXdeªòíVlè‰)5;æÇ¤ÄƦÇ mÊCæ�¿¥íâ. ¹Éžøèô†Y}¶³2çè@8`sû‰œÖc“R\©éî>C8烟ò§ß˜R#/*1ÙÕì’˜�¿Î 8P|[ªÃ'äÊ®zÊJ:ý×äÿ|m×OÿÕ‘Ï ÎŸUÌe‹š€P @(`E�êLÙO=õ”‹ëüœœ;vœ8qbúôé|wösÏ=§Ö‡)ûå5 \¸Yáèó‡è�ûç·(!–^¹»·ãèï;-�¶%:^÷²×·P’�œ§‡ÞQœí'iÑ#ôÀïÊ^ÿ+KóX£ì—¯WàúÀ¢Ï?Dï¬PœG'£77x�Vô£´’îu޲S_Và:å€ÂÑ™ç)íÅIÿ‚2¾.%ëägìMûØh›à°èý²×Ã(½äörÃõƒ²¹ë�çó÷½S“�9%©…ÅžãŸÕbÿ–- I®—?W|ss–²ãÿþ·„³ÿ²kqÿ_/*OúU ®Å×e[)'� €P ª3e8p€){âĉ¢”JII¹å–[´”=«?]7D±Ã·Æä�iÕX}ׄÞÄ&V®»6§›Çûš"îïX¢ãÆhü*ÃL§)›×¬Wõ7#èÿÞ¯�ý7˜åˆenK\ìé@ « 33Rœ1\@73¸‰a]0¯u^¢—þLuºÐà}”ßÝIÊŽî@I«´˜\FÙÝõAÆp �]í.ñ,[¢K‹ºn�»s']Ðb3 kƒñšg­š¦�èüä¡=ÙtA£¦.ÎíP§ÃªžºÌ3/mpMsŒÏN¼zïhÑ4q̹˜{[vˆ™½*U—VÜ<úÆ�é"XPä™w‹>Gôn9\cÂuÉl£f%ñ ¹ò„«þÃ`ôßþó¯³v-îowä3ˆsis@Ù¢f€ €P XQ :S6×�5kÖ”ÍËÙþ”-=cFÇ瞣(7-EmŠ”mÞ7þÚ%¿uÝ;Ë7pÁ`ÒÉ×ô‡k1dgﺳÒ{๣hÌrjÐFYÑæ}ã÷¾Vn”£”}î>:Úä++Ú¼oüµezšæeîä8:»Qd­uÌpX%åÌsDQ¿œ¢Ú((ÍûÆS_+•þ¹Òˆ<äÊ ÞRnBÖÚ.Pû7ž#Wu\N9m”mÞ7>îµRâî¹�S|)»†÷ &.'�÷ ò¾ñŒ×J)Û•Hîlr× Ø!”õg+|­æ˜£qìé¿STTÔõ ]-[òŠ6ï�yé0qµmã1Ü}EÞ1îjÐÀsß½æóh{�pX�7<÷>bæò)qmñŠ6ï/xm›v/aóB6/gkƒ&¾ «]³Ï•¸¢Üí—w¯Ñ&�W´yßøˆ×fp×Àƒk&�û`þ¼Ÿní»gd|V´Þt6N,Ðùý¹:QQ4cyj“61¼¢ÍûÆw¿–Ë™ [Dßp��²ëÔó¨;ÉN"‚ήeGúyÌ7’]ó|ú9_/*OúU ®Å×e[)'� €P ª9eϘ1ƒwŒïܹóøñã3gÎdÊænµ²R†Ì)ûó�Ê2nA�ÜJÓšk)5‘¾ÝKõóhÛ"Vß4šzµö5Sû;åxY�µÖÙý¹rÈœe‹øÑ 4m %¦Ò3ßú:JÙŸ¯ñ~ÁL:y ]ØLk†Qj<}{�¨?¹•j$ÓC¼šïÔ}Ùé\í»È]@é')ó%ð'H¥Œo}L�ù%nP‚éõµX­óý±Z™å=bjM;IK/P�5›J þEÓ>¡äÚ4÷ŸSv¶÷pQ”u’r.P²÷ Öø–²?¥ì¿)ÔÌ~ü rçQ�ÿXm-ÿúû±þ‘ÿ+ºòëÄüîÍØ3ßxn.¡Ô”ØOO¹êÖ¥èhu9ßµMññÑÏ=ã?<`Ä„ˆ¹«èóC|Ä肚õN>ÓèÂïj¬™ïNM*þö„•}ë¬è¢:¢Ô ÊÅS>_ÊGL)HãÍáó/ÜÖyÍ•±©q3þµ‚^²¤+w¹=îèÄÞ4t*5A p@‡÷�óÿÏò ¢^<™÷Ñ…üëפ%§º^ÿ¶öÌ© Ãõ;­ç#èŒdzf¥~-{þ ßSÑüÉZñÁ²–¬µþþ³Ê!'¬öe&gÐêg}Mîuî¾l^¡V¾àDg$Ò³¼Lïeê�o¦Zitç_oPÖÎÅgÊNXíËä•ëäg}M¢£ZPâ:}PÇ×jSÇÔþÍÞ#jo»ŽËPv‰×îLWo/]ÔÎïæØÓÏjx—´ÚGÐüÓžõ5´s~Rþ!í¹rAŽX@ÁØÏ>åÿŠž–‰/^GïÜájÑÂÝ¥‹º¯¾*jÆ4Ñ4w̹¸øì+|ĬÕ3DZTFjígתÍF?¿ÍÎè-zƒ:AÑxæÙ•|Ä«{‰Ì¸Œø~ÏŒáGŸåu*˜üÙŽ�x}ߣ=ðåÆí ¦¥`ÿ­³uøÿsWûvƒ§f¸7=›Í7hOY’R³NTz–»ßèÄÎWÄñoÿẈ³”M'ÿ�þñ_»ææQ lqö÷s@ÙVÊ ä@( €BP¶_=U°BÙ Èus}”ÍËÙ*eOìSî¾ìÎÍè– >×bµÎ÷Á²–¬u~n]eórv()›©¹n–�²y9[Pö{+)'…6Œ°�Ø<›%.v×õQ6/g¦ì¦”¸ÉÒlË,åîl~®ø¯Ö*dͯôrøãÓîVvŒï8E/ýL3Ö)”½ÿŒ‚燾§ƒÿUÖžïzIñ¹W‡ç�šAWŸïF™tê6úùaZw�BÙg6Òo—*΃–7Š‹£Xââ„»½;ÆOQæÏÊ‚5ChÆJÞKéW†g~çÝFžTÚ ¸~­ š±ÚÛãnâãü8q~ÜÙåëÊæã³O—ÙTë2j¿¨t÷xÐ M‰Xçä»IÙ1~Šr~¦dï¬q†Ò�Pöÿ)½¼Ø�0[¹;»†äe{nY­ì÷w±ÿúÚsÛ-LÙ±Ÿý5æØKýôS Î1‡^ „~¹S”]ãî¼`]ÿÔ~^¹®±î:¦ìâ3¯¨Ôœ4 [Êè+A[qLpXtu¹»/ïŸxjÑüŸoíºî*¦lÞ1Î�>«Õ¥ðÚ/–rÚÈ7gòÓÏ.p bâÄampñÝi¼cüÈ©¼Î_º.�)ûÍ3u^ÿ¦ö±¿)ã_µ‡OKâÛ´ßÿ!_;* ï0eð }ö£mãQ l£‹Þ—m¥˜@€P @( Q”mTXY¤læè•c¨&ojN NMéíM¥kÖ»o µ¾æ÷eóÛ¾tkÖFM+\¬äŒ[©¼;!™šu¢ûßV";•]Áйù�Ë^gÉcVfükâ¬ìG5S•Gœu*¢·—+‹×=*OEã—e ûÍRK‹Ú–(›9~%¹ùÝßÉäéD©o+£JÈ�O”¨l¥ŽîM©oZ�*(« �VRRMŠI¦Ú�hÂÛú5kŸ~ÆÍ–Xö£;QæÛJ$a¹s‰€ÆÏ|‹íGYZDlN³‚ÆQKó{»”÷bw¸4æåcê�èǶñsÏ()ÉUTýðƒVæQs¬ qÖÊ©žšYîäÄøN­ ß~\RôÅ‹äñ¼úˆ•DŽ k».]y9?ë,&9–w‰�z{wMÿzyÃÑ-ã2ø}ÙÉùi—®èÁ ®bäÄa]pÖÊÔìšÊ«±ÛtŠÝû¶òô³ç?¨Éoòâxed»‡NNdèÖ Øt˜²ÿð-}zÞ¶ñ(P¶ÑÅ”­©àB( €VeVÖ)Û™+·ÂÅÎæ˜Àu(º¬¢±v1º’¾ ÑáüÍÈ^³NÇNe þ �cÄ¡‹Äá¦ìwÏÒ© ¶�G�²�. l+År €P @� l£Â ” ÊÖ¯h[Dõð"¶Åµl§øÚúZ¶ƒ:š6š9D@pZ‡)û÷gé仿âQ l£‹([S3À…P @(¬(Ê6*¬@Ù lP¶›;HÐV¦2báÐÅâpˆ‚ÎR¶ëw’ûO²]£·%¾^ðIÏè|XÍãxú™•r9P @( €P”mT=‚²AÙ lPvˆÈZ;­³”MoJ®e»Æ£ø¢Ê6º€²EÍ @( °¢(Û¨¬eƒ²AÙ l-‡Èw˜²_“è²]sñ(P¶ÑÅ;Æ­È�P @(4 €²� +P6(” ÊYk§u˜²#Ñ{²mãQ l£‹([S3À…P @(¬(Ê6*¬@Ù lP6([‹Ã!ò�¥lׯ$÷ïe»F¿e] ”8vŒ[)'� €P @ÙF¥(” Êe‡ˆ¬µÓ:KÙtB¢·d»æz”mt)e‹z€P @(`UP¶QiÊeƒ²AÙZ‘ï&Û5z”mt)Pâ lÔLP @( €-@ÙF¥(”]1Be;Îà l£Ó”6^zÊzFr‘í=ÊÖj©÷AÙ¶ê $C( € l}9UÖeƒ²AÙF«äŽs´ù„ ì²Ó’Ùÿ–ž²ž–è�l×\< ;Æ�Õe£X‚P @(l)Ê6*¬@Ù lP6(; [Ç�Ý1NOIô‚lÛx(Ûèb€㶪 $C( €D l£Â ” Êeƒ²#޲]»%÷s²]£Ý l£K�ÇZ6Ê%( €PÀ– l£Ò ” Êeƒ²#޲i§DÏÈvÍõD9Ê^µjU‹-\.—8C®]»¶U«VÉÉÉqqq 6¼ë®»D×®]»ÚµkÇùãÆ�ñãÇ��3†ƒÜÕ¾}û={öˆ®Èr@Ù¶ê $C( € l£b” Êeƒ²#�²—hŸlÛv”£lê•+W.Y²DKÙ«W¯¾ýöÛ�9Âì¼páB�dzsçN>;v¬°°pÈ�!ì0GשSgæÌ™êyuêÔ©Ü|òÉ'�=Ê õë×?qâ„Ñ)÷bŽƒ²Q,A( €¶e•v lP6(”y”½M¢'eÛÆ£üîËÞ°aƒ–²u§Êôôt&qrZll,Ó·šÀlž——§ú999K—.Uý_|‘Ó6nܨ6#ë7(ÛV]�d( €P”mTì�²AÙ lPväQöV‰v˶�GÙ¡ìGy$**jÇŽ|þœ3gNƒ ĉtË–-Ìæ‡:pà;[·n]EEEsçÎÍr@Ù(– €P @[ €²�*=P6(” ÊŽ<ÊÞ"ÑNÙ¶ñ(Ë”ýì³ÏÖ®]{ôèÑêÉsÒ¤I-[¶'RÞFÎp½wï^Þ(ÎÎîÝ»Eßë=eÊÑŒ ”m«®@2€P @(Ê6ªô@Ù lP6(;ò(û!‰“­Úõ‡éŠëë5›¯†|ÒÓžîß·oß…=pà@‘ÉkÙÅÅÅ¢©[Ë~ôÑGE¯eÏ›7O4#Èe£X‚P @(l)Ê6ªô@Ù lP6(;â(Ûõ�ä~L¶kô ¥µlõáfÆ Óž6Æù©ã‡Vƒ‹/÷eçææŠû²y9ß—}ï½÷jÇFŠʶUW  @( e•y lP6(”q”M÷I®­²]ãQ|5kÙüq~šÙš5kxË7;üÃçÉÇ{¬F�üf.Ý9““yu›ÑÛÿãÓ¦MËÏÏç­ã/½ôÒàÁƒù㺱‘Òe£X‚P @(l)Ê6*ó@Ù lP6(;ò({£D›e»æâQÊæhækþq»Ýêo¾½úÊ+¯äf¼æç¦›nRÏŸÜ«¾/›<®}_6¿·‹©œƒx_¶­ë2’¡€P @�HW” ÊMÍ)o£pÛß©b°\áQ4C³±pèâCåÇÃiä‘Ãla€kqˆ™ÒJ¾Žˆud£3RÐxé? Þ#ÑòmÛP޲ƒ«º%`-;ÒK|~( €aV”mT.ZZËÎjB1I¥æ‰'rѤwi™L#�R�J<£˜=¥D¬™|�Ì­I>%Å—Z|,¹\ôî&úr' ì@5”æöë‚Ì ›ß‡Kãµ›P\R©ÅÄ+¸û]Zy”šv§¤tŠK¤ú—ÐòƒLò´,‚"v“ þöT/Ÿ:·£IÃ}Am~@ß ·¾‘2š)ùLÙÉ…6Ú¡l-g/ŸÛ¬>Gš|ÿkv2æ oüï—¹Yü—g}ý’6ÓÜüÔi´|@J³Úº´+>¹›Ü®Ëß^­‹5­Ó±’麑¨™±÷%PÔëŠõ…µÝÏ[œÊŸ…�"ínìžÙ,‡{ûlŸ�8öóØxpBTœgÔïf�ÒÆ�¥lZ#ѽ²]sñ('ÖÓ�N§‘eGz©ƒÏ €P Ì €²�Ê?{”½ä<%æRïM Mw^EùÝ|XÝl<µ˜ìkr‚±i!ÚÜ?ÿ<å¦Ó¦嘺0'd”ýäyJË¥)›@tZ]·'@\Kèe¾U4ÞFç¡ÜTÚ4¦M_x”Þ¸‰Òèƒ[ËÅͦµLÙçÿJ¹5hÓÍ> =ˆÖ­P²�\Ë€<í<%äRçMa£ì¦ç_óäfÖÜt=tÞCËbêÕjzáMsš6ê5Âa]|ðùíq¹©-7�×Å,ê›~I]]Фi�½4}ž(—Ü›ß}'Q;ßXöÝwûšeËÖ#Z 6ñç�¿%!7¹û¦þœS¯£Ö×uÉù½ŠšN¹D4M‡)û.‰6ʶíNP¶Ñ¥@‰ƒ²Ã\™àpP @("]P¶Qie�²íUÖ¯¯“‚n0ˆÚ-ô¡tÏ ”ÓÆ×4FlÎ1'kmïÞ(!–¤½á¢ìE{)6�vHzš^÷>EyèÞ“úxVëâf8\~mzï,Jˆ!éM§ÆSŒG îšî ŸÐ2eï}�âIú°”²ŸÝB—¶¦ŸÿF†…†²{ï%OM–J)Û£@w\&Õ¹‚†¼mk]Ûˆ…uñ:{ïp%Ä5–Np?€P @�°+Ê6*¬lPö¥‹Ëí ï\Rî¾ì¦c©Ågײ¥6EzÄáZöÀÅT¯M9š~ð3Ê+¦«” ClN@ÁåùZMXÜ—ÚrôÕ-iÑ•†½úCX£ìÅ3¨MóR¬f¸ÎÊ ôTå7[\¬b5køz>ôL-ÑqËŔկ03”�µx\\›FŸk¬ž¦§ì�ÝDoPÇ /¾:­M¡.³÷‡wòz¯?Ü®‹›7üq\‹‰Úør\½•'¡ ˆv-%×¾¦ˆrL Xtµ]ÜÅdOx^§‚öË»‹dÇaÊ^!Ñm²]s­e] ”8îË{m‚B( ˆl@ÙF¥•UÊ^ü%dÓ•›}=S}Æø“JdÔ åãb™;Ð.qß@k÷eÿ°Ÿ²SióÜr”ýý³Ä–ŸM[æ)ÎOÏ—ë5Ù|“wÿ@)Ù4c³/sãŸ(« ¾Á±À×j²�!ö[(;™6OôqôÁëèäJóÇ-´c*ÅEÓ›+|½Aæ´@Ù?œ¢ìLÚ|§�£ÿï÷túmžx‹†÷£ýéoûzPt ÙY¬>Oý�ⲩëf_æÀWK·ˆ_û_j›r¿öè¿øzÅ@'(7ùá·ÊžðÍ7ŠÌâÏžç{´y—8?�ßáåÉɨµ}•è ê˜C1÷þa[lvJ›Í“u™üö®ÌŽ tÁ MKhõQ6¹7û’ènDQ'•HÔÇDÅÄ ˆ©ýƒ&P¬vÍýáf~¢xÏ̓EæìïJÆ|7gŸ+éPÒ3©VÊôon½&޳”íZ!¹o“íÝÊ6º€²#»ÈÁ§‡P @(ð‹(Ê6*­¬Rö€Ý›J‹¾ÓÂ2�<¦¼/›ùÚé÷e3/ï^B©‰ôݾrÍïtfãmݪ³šÍìÕÛjBpR^°›Ré‰ï|™=&)GïÑfgÁ._¯)q!b/tó�×ü ³ïòqôC”×dó;–“ã¨câ½Ü�ðé�«ykÙ¿H}‚ƒB( ˆ\@ÙFÕ£Uʶ<]޾ƒ%[DcÓ,Ò±Si�AØ:2W Óe\’®pPË¿áñƒB±ã : uÓ";˜fÎÅÎö:LÙK%Z)Û5×2P¶Ñ¥@‰ƒ²#·ÈÁ'‡P @(ð‹(Ê6*­@ÙN‘µvPv(¸Ûqˆ:a¨±Z7¿ƒølq*g9Ú|6‡){‰D+dÛ¶”mt)eÿ"µ   €P ²e•V l-;僲AÙ:‚¶Ò´ˆÆ¦™s±³½ÎR¶k‘ä¾Q¶k´”mt)eGv‘ƒO €PàQ”mTZ�²�"kí< lP¶¬Öå8ˆÏ§r–£Ígs–²i¾DKd»æZÊ6º€²‘Ú…P @(Ù €²�J+P¶–Ž�òAÙ lA[iZDcÓ̹ØÙ^‡){žD‹eÛ6”mt)eGv‘ƒO €PàQ”mTZ�²�"kí< lP¶¬Öå8ˆÏ§r–£Ígs˜²gIt�lÛfƒ²�. ì_¤6ÁA¡€P D¶ l£Ò ”­¥c§|P6([GÐVšÑØÁ4s.v¶×aÊž!Ñ|Ù¶Íe] @Ù‘]äàÓC( øEe•V l§ÈZ;(”m«u9â³Å©œåhóÙ¦ìiÍ‘mÛtP¶Ñ¥”ý‹Ô&8(€P @�ÈV”mTZ�²µtì”ÊeëÚJÓ";˜fÎÅÎö:LÙS$š)Û5×µ l£K(;²‹|z( €¿ˆ l£Ò ”íYkçeƒ²­`µ.ÇA|¶8•³m>›³”íš"¹gÊv�&ƒ²�. ì_¤6ÁA¡€P D¶ l£Ò ”­¥c§|P6([GÐVšÑØÁ4s.v¶×Yʦ ’kªl×x_Éø¤gt>¬æñW_}•¯•l%%%Ý»w¯3áF­©]²,ks"»2À§‡P @(*§W¢6`‡k‰j^M‰¯ÊvЬµó€²AÙV°Z—ã >[œÊYŽ6ŸÍaÊ+ÑdÙ®¹Æ�²Å¹?€Ê®\¡�ÑP @(ª� ì•7TJÙC%)‡Í>�ë…Ù&È„ÓÖÉ3Ãlo…Ùˆä0Û+rû0“Ãiò}f£µrøìVg·ô”5F¢I²míÌg0:�Fz”]íj#|a( €•S”mTþ�²CAßaFl>\˜›fÄæÃ…±ùpáDl>V˜›>Äfœw”²]#%÷xÙ®ÑHP¶Ñ¥@‰ƒ²+Wh`4€P @�j§(Û¨´eƒ²+Fè lÇ”mtšÒÆKOY×H4Z¶k®á l­–z”]íj#|a( €•S”­/§ÊÚ lP6(Ûh•ÜqŽ6Ÿ”]vZ2ûßÒSÖ0‰Fɶ�o�ÁÓÏŒÕeW®ÐÀh( €ÕNP¶QaÊeƒ²AÙáØ:îèŽq$Ñ5²]s e] ”8(»ÚÕFøÂP @(*§(Û¨´eƒ²AÙ ìÈ£ì •mÛ@P¶Ñ¥”]¹"£¡€P TK@ÙF¥(” ÊeGe_-Ñ Ù¶õe] @ÙÕ²6—†P @(P9@ÙF¥(” ÊeGe_)QÙ®¹®e] @Ù•+20 @( @µT”mTZ�²AÙ lPvÄQ¶ëJÉÝ_¶kÄlާŸ] p_vµ¬Žð¥¡€P TFP¶QaÊeƒ²AÙGÙÔ[rõ•í�âëŸôŒÎ‡Õ<ާŸU¦ÌÀX( €ÕPP¶QõÊeƒ²AÙ‘GÙ—KÔG¶k®ž l£K�eWÃê_ @( @ee•V lP6(”y”ÝC¢Þ²mëÊ6º€²+Sb`,€P @�jª(Û¨´eƒ²A٠숣lWWÉ}¹lר+(ÛèRÊ®¦Õ¾6€P @�Ê(Ê6*­@Ù lP6(;â(›:JÔU¶k®Î l£K(»2%ÆB( ¨¦ TsÊÞ·o_×®]“’’âââš5köÀˆJ ” Êeƒ²#�²/“¨‹lÛ:€²Å¹?€ƒû²«i…„¯  €P ¢ TsÊîܹs›6m8pôèÑáǧ§§?~\­±@Ù lP6(;ò(»�D—ÉvÍÕ”®E”]Ñã €P TSª9e,X°@-¥}ôQ—˵ÿ~Pv(øZ�s�<3ÌV1R®Ì("9ÌfÄ¡‹Ó19œ&ßGa¶pÀõZ¹ô(·:C¸¥ÿ0ØV¢KeÛÆlŽ7y ¨ös@ÙÕ´BÂ׆P @(PQª9e�9²U«VLÖGŽ:t(oå•Õµì�_Rí¡�FžDÊêH½ß¤‘²b—í¢¤"ò$QZKêq¢4¨vÿþ@®Ô^ù2¿÷ÐÄ”4w|¢«UÇØÝoæñ�gÿX»KßøìšQ.m{¥fÐIDBP þåC[ǤÅ{c³;Ö»êÍ%<¤ëîÉÙêF§Äy’bsº5¸ú-%hŬ öª/'´Z/>-&&ÑSØ1wþ›CxÔø§úä4N�K�‰Ž÷ä6ͱµ»•©8Ç /$êA”LOÔ‚h+‘vÔB"ѵåƒÚ�o±¿$J”F”HÔ‘èMï�mDn¢¤2›iažRœJÓÏ|ÙªÛÐô¤´¨øDw³ŽI¾ÙD²û¯-9ž’áIHvµLxîëÖA§R‚#öS_R—¡””Fq‰Ô´#Ý÷¦2¤ßtŠOòÿ±ÎÜ|ªc²ÄþòvÚŠÒâ)1†:Ö£7¯WÀüüFZÜ‹rS(>šæÐöqVi=8e¯ü’š¥ø4ŠI¤ÂŽ4ïMeÈšŸ¨ç�”’G±ÉTûšýëàóð(g)»µD—ȶ­ ([œû8 ìŠ– €P š*PÍ)ûСC­[·æ%쨨¨¼¼¼íÛ·‹Ë*e×D9=iÈþ#5\Dq94âgêõ[ŠJ Ë_)Åmð·Ú~Mœžƒ:ôŒíLÁ»?Ö�¸(53'êýŸê¾p²öÍ�d=ù»Z .Ûå$eçjY³gÃQgÖŽûqSÓE=ãrRÆýt_§GÇõ91ÜùMc¸·ÅоÌࣤuNQv³Auô¬uë™Ék~œÖmQËäœø»š¾ò‹q«¿ž¨’õÄg®à¯¹äã‘V@[‡À›ÝˆÚ%ú Ñh¢ ¢×ʘúi¢ZD ˆ¦–EΠ Z ãAD=‰ÎýH´ˆ(‡è'"¦lfýRp¶åEã΃ÒÛöLyáL›c?^2bQnFNô‰ŸÛíÿªufÍèiwÔ~éûKx†m4;ü]Û SY¥ìNƒ¨uOÚ†ÿH×,¢ôzéçr@½æ(y¢‰aܲ¸ÊÔ‚z6¤3kèÇ�´¨'å$ÓO÷Ò=CÄ>¹R�ë}×’ÛEïß` ´ƒÓq³AÔ 'Ýr†îú‘º-¢ä±û”Pv1-ÿL~ÍŠM¢›>>•³”ÝB¢Ö²]sµ @ÙëׯçxLLLLNNæçW¨çÆ›nº©V­Zñññõë×çqÂܵkW»ví222Æ�'âUÃeWÓ _ @( @E¨Î”}âĉÆ�8ðàÁƒÇŽ[ºtiJJÊÞ½{Õ²°”²‹fQÃëëv80&§4¦¶”võý@YöôÕ� ˜X³ÎîJÍoö5EÜÏ1�kÑU¯qôŠ²Ôæþj3oþúëÑë8e§6ÎíðÀH• ~p¹\#¾^£ê1ÿ½‡ƒW½±X4ò­p1¯Y} ‹š¹øƒü�_s�‰{Ê�¾ñé±Ú É´Zþ5ò ‰—Aô.ïÊõao“Y»ÑDm¦ìÆD”q´÷o†¾öRv÷² =ÖŠÆ�ã®{ @McšfI±G/«Ùª[rб‚£q~cš÷@iÚ#ð_íûºÜ(^éf³€Øœc…²çÒ#J úƒåÊ¿ºƒft¦kZû°:;‰öNñ5M¦ ŽÆ5Ó�JÓ®÷~Á’¯¨fs¸Ñ76«ˆ®¼Å×[ÄUgêaêz�bgñù›O8•Rõ”åj)¹ÛÈv�˜Íˆ 60\ß~ûíü©øô¸yófv6mÚÄŠä.ö·ÙòÉ'Õ„ÂÂÂ!C†pæž={êÔ©3sæLŽW™P6ÿyà @( °®@u¦lj^Å~üñÇE)È«0+W®T›Vײ-¡Ýið×tÍ÷T<Ÿ²:)4�ÖŠÚÜëÃêâT{ˆ¯é×¢KÀ²‰3yIj»îq¿þºà÷ߎ�ŸÒºS¬6™áÂÙµìfKzçv/f²ûýÆÆó{ÔèT_GЗ˜�7ê¬ckÙ=–´ªß=�!úÎï§v™ß¼n§\¢oúl,o#w{Ü ±3O 0!km—Ykãc½Ídý+¢ÞMãjï¢Ë½¸í4e/!êN YO4Ÿ¨“®y-›7�gÕ BôgëÄ„µÁQKj¶êžÌÂyÙzØüœæ�’¸·qûÄÞc3/»:�wŒç7Œ[²µ®vˆ¹œŽG,¡–ݲ>ô= ™OÍ:•ÂKؼ�ÍËÙÎQö’^Ô½}}'}¿�æw§Nõš>8“j¦C7¯kï™DYIôÏ;¢ìK¨~wþ ºã{ê2Ÿ ;)4]³ ¼Ç‡Õ™õ”]å:¸öo:»–ÝDr5—í5ÑSv“&M&L˜ Î�ªs…÷G[¶l9iÒ$n2wÇÆÆò}7j×’%Kxk�H«(ÛzQ�L( €P€¨Î”ÍË.™™™¼þÂûÆÙ_¶l™ÛíÞ¶m›ZZ¥ìaç(‡QÌE.%Õ£«>V�9©>]ºM°35¹‰rzùš•£ì·Î^zyÓ´ÇCµëyžÿ¨vH){ô¹ ¹—7ä¥A—Ç�T/kàG+´”=ø“’¸É¥ šøZþ5òo?wmÑåÊÖwêÌz)K>*·3ü®¦ ÜЉoоñ¯cŒfÐÆµ4mä¿Lt‰w ;Ê»?|·—¬÷zq÷PH(ûœßùnoQ=¢�¼@ý)Ñ߼ηD3ˆòˆþc´Í‰˜{_<×¶Íå),i”Ç•W/vÇÇÍ9X«~¬'ÚuÇ�ìo8Ñ(6Þ½îXàS© ÁéøÀ9j}¹²¢塚õhëGå†Lº•j•‹˜â¶É¢³è:·Ž./VèqS½,úè¦RšfúVƒ|¿6oùæNp4¾íy¿ ÛCLÓ‹?R†ôZAY 膿(»Ç‡>¨¸¸O𩜥ì†5‘íš«q9ÊæS"Ÿ ÇŽ[\\Ì+Ú¼oü¾ûîãcƒ æÎ�+¨yذa]ºtáæœ9s¸KÄ·lÙÂ' žDD"Ýe£^‚P @(l)P�)› ¿‡~˜ïËæ{ yë#ßf¸bÅ Q Z¢ì(£=ñ®ò¡ÿ¦á粎ɤ�§)½5µÙäÃj^ãæ'¤õèÒòr@ÿ�ê6o;rVÊ›ÿ.|ï|Ý[·e§eºOœÎÉ\×;¸–=þÂýYí Îê:úßëù.ìNÛÆÅf&^súv•£}¼2¡VZ›;™`µ®KË¿ýµfä·¯ÑqVÓÛþ=eÍùé#·õHÌŒ[yz¼.¹f‹Ìë:ê‚›Fd-â¯5ñ>Œì¸÷¾ìD©DˆZ±¯¦ñZ¶sO?»@Ôžˆ7 ÿ›è¼w£x&Ñéò@Í·ió§x®|Ðp¹9¿|¡/[šUãпÛ?ßnÙ¶º©™ž§O·*j•к‡oÇ8ß»=t^ŽùT¢7 ½@�ÚÓ€Yôü¿éÈyZ¼�R2iÏéÒQ|ƒvNM[d w›1÷^ØDí hVú÷Zå‰gÛÆRf"�¾Uyô/jv³ׯ/RîÑ~a†%ЂÆw_ üöÊNï[ÿMw�§Û(!“VœV|^ãN«C‰YÔz45¼Bùí¿x­‹8KÙÅ5–m[ƒr”ýÔSO1&çääìØ±ƒï¬™>}:ß�ýÜsÏñ 5ßY#N’|ÿuÛ¶m¹É+Ú¼®-â;wîäáâî�\”m«®@2€P @(PÍ)Û¤ê³DÙ Ô¼Š}õ'“).—.ÛMu'–»/;«35¿Å—cŒÛ–�jæèƒŸÔ Y¹Qwï©!šÎR65¯Çñ‚µ€åøÜ”®{¦p³ÿ{7ò“ÐÚm&º¬8AXd æ¯°ì“Q"˜œ›0nOoÑT~ÌøàM�uÁ€MAÓF5/*óʵH`è-ñù!àªñ’sQSMŽHöw‚¡±÷o†>ѤåíÑ4™¦UÊÞ_>XAÊf fIw~ÒB0rFnôÊÝõûNÊÒQ6o&9æN@f Vþ?ñ¥eäÒM{J›·¤èXzæ_¯¨ƒR65ðïSÎÔdêÝ“¨¸måÃê‘mÿ¿½ó�¢èð\¤zïEDA¥¨@hÒiJ EPÐP¤�^�"¡(Mº4�Ð; ¡J‘OÅ‚…(‚þ¿Oóÿ]–õ.»w›\â%÷Þ3OžÙÙÙÙÙ÷’Ýß›™ÝU¯<}oÑ¢Yj,B-ûxñ^µ,ùU»å÷Å£e8;{Qç3Ð\œÚ}ѧ–í(ô`¬—ÉQx«ÊÑÇ™²½&WC9éi§Ä�7Š&wìØQ?CÊ3+F�å2–-ïeОŠ&cÙ2ê­Wf,;$$„è€ �@&€eë‘¡KÆ+Ë–ñë ÔaJæ�·úŸª®÷©†gU݃Î{ÕÞã4ky¥—ïž1.ã×òº®¶aYeÞ¸Z<¼ƒã¾ ¦gßlx _úœ™«Îöv¢¸¾—xEØX(ã×Y dz:¬œÌ—�µ ¯-óÆûŸmúñ3o^i/5ßùýåg'TKœV[4noÞÝ‚]Jö+•[©–JíRê@ÜøµÌ—g ‰}kiƒRåâž=®ÍwÙÜ}Ñ“Ëøu¥Â”’yãbÓáqóÆÏ*µM©ïã¶½¡”(O^¥dxÑÔ¬�«¬�XƯåYâÍÃòɼñ�ÿ{bPx ù� ?[nÖá2éÒ;&l)-›ÏØûp†LAÓv=dÝ”¾6^¾W(ã×¹ ¨çÔÌßö?5 \ݧœ½SáÉ&ªöK÷*{Rl©i¡ÃÚ*¿–û¯Ãj*™7.·`Ë»dÞøÙ¡ÎGŸU¿_}3ÚiÖòn/yúÙì»OH³nÓƒ˘uÖêé0%óÆÅ¦ÛÄ`ÿ³ê­kjè—ÎmGý¢ªvsÞ¦=îOMIeŸZ¶*£JÆÚMŽ’ÿË–“a�tË–álͲ4h wfë§ÊråÊuîÜYå¾l™´uëVmUÿþý¹/;�ã Ž€ ,[�]2^Y¶Hô3‘*o-ç{±åÕ]ÙË;²µ¡jÉdyÀé×ò¾ìÚ»¼È–::¬¯ZY¨r­ ™‚39J—O7q™s {ÛEį%9J»(�¾‰EF÷_³Ì³‘ƒò×*-ïÅN“)]Žò…äMÙRSJD·�…wSÃý}ÍZ0–Ç+Â.…}"[”ªUH<:]¦423¼Ý²ºR¡þÈÇs –7hËÙ¥ëÖ^¢í²a¼‹îì^®ÔcJeа.¥ÔÛncÖ2c¼«[¡{;Z‰ÑMò‘q/í’WcË>åÝr#¸Øt_¥dP;³R9”zV)ñn¯[ªéòk–™YV†­3‰Jß_>£ dk5ßZUJž{&åEJgº¤¤Ùæîåžyv¤z´–óÕØ2©’åÕÐew6Yþ�óNí©{=·`°ok#ÖÖFTµJ«àô*S:U¾�s [Êåah/=îœ=.ïË.šC½Ù@ý5Ãc٢ƽ#U©ZÎwu¥Ëä´é¶Ëœ6Ý÷´óM^RœGUîì”n)ô˜|kÙÅbT‰XÛ©¨«e¿úê«2c\æ~ïܹS.–-Ürw¶Øô´iÓäli|ƸÔ)^¼¸Ü¦Í3Æå’:räHƲ ® @NËv‘k}Ñ[Ë6Ÿþí¥Y«Yèp­2*p2äãá$-4sá¤+÷ÞŽ}UÓÝ‚“ºÄ–#'¾²7–íÛ:žÕØ£;{_Á·–](F‰µ›E\-[΄:t�çCÊ+°åégsæÌÑÎ�òðŠÂ… k²Ð^饕/[¶L{_vŽ9x_6–à‘‡@À²u­vÉ`ÙI!ÝI*Ôñ6žt6mÖ²¯ÜÙûv’Ú©ÝÛO¼8ÛjÁ·íMk)ز ĨB±öS<–írJ äEž~F°@€€-X¶YèˆecÙfm]î½ûª¦»'u‰-GN|eo¼Ø·uR°eç�Qùcm§|X¶Ù¥ÀYŽeÛŠ+¨ @€–mZaÙX¶µM›­õ•;{ßNR;µ{û‰g[-øÖ ½i-[v®•'ÖnräÁ²Í.X6� @¶ `Ùf¡–�e›y´u¹÷v쫚îœÔ%¶9ñ•½ñbßÖI¹–íÈ”7ÖnRâæ†7y™�¶œ±lÛ±@€›–m7bÙX¶µM›­õ•;{ßNR;µ{û‰g[-øÖ ½i-åZ¶ÊãÈk7©ìX¶Ù¥ÀYŽev ÄÑC€lÀ²ÍB+,Ë6óhërïíØW5Ý-8©Kl9râ+{ãž­“‚-;KŒÊk79²aÙf—,Ûv\Á€ `Ùf¡–�e[Û´ÙZ_¹³÷í$µS»·Ÿxq¶Õ‚o Ú›ÖR°eÇ8²ÄÚM*3–mv)À² ” @°MË6 ­°l,ÛÌ£­Ë½·c_Õt·à¤.±åȉ¯ì�û¶NʵlG¦˜ Ì±v“ʈe›] °lÛq@€ €e›…VX6–mmÓfk}åÎÞ·“ÔNíÞ~âÅÙV ¾5hoZK¹–­Òƨt±v“#–mv)À² ” @°MË6 ­°l,ÛÌ£­Ë½·c_Õt·à¤.±åȉ¯ì�û¶N ¶ì41*m¬ít–mv)À²mÇl@€–mZaÙX¶µM›­õ•;{ßNR;µ{û‰g[-øÖ ½i-[¶ŠQŽX»É„e›] °l%@€lÀ²ÍB+Ͳ»Ç ï;6Ù’RÿIî«’1]Œ-œÌ)ö¢Jæ”?ör2§ØoUr§�*6Ó±ÑÉœ–ľ�linL9qË Çì\äeù� Še«XÛÉ�e[aæM^¶c 6€ 6,Û,´Â²“¾“Y±ewɬز»dVlÙ]r+¶H}2*¶ì+™[v—lŠ-;ò Ëvº¹LßìtšÒ˱ìÀ”8z@€€mX¶Yø‡ecÙ 3t,ÛçŽe›�¦Œå‰Ëv0–mDé–DzmÇl@lX¶[ ðr,;°%Ž€ `›–m=bÙX6–�e§@˾ápüm7)…e›] œåX¶íØ‚ @�MË6 ­°l,ËÆ²Sœe;?ýi7)õ“\ Ë6»`Ù�(qô€ Û°l³° ËÆ²±l,;ÅY¶R?(uÛnr8d+,ÛìjÀX¶íЂ @NË6‹«°l,ËÆ²S e¯Ô-ûéª\ Ë6»0–à‘‡@°KË6 «°l,ËÆ²S e÷Àð[?Ù Ë6»0–m7² > @ Ð `Ùfq–�ecÙXv ´ì¯”ºn?ÉVX¶ÙÕËôH‰ã‡ Ø%€e›ÅUX6–�ecÙ)в¿Pêšý$[aÙfW,ÛndA}@€@ À²Íâ*,ËÆ²±ìhÙ—”’[³í%‡C¶Â²Í®Xv GJ? @À.,Û,®Â²±l,ËNq–íp\ úÎnRê‚\;ä¤gv> ðrž~f7´ > @ À `ÙfÑ#–�ecÙXvгl¥Î:Wì&¥ÎÉ¥Ë6»`Ù)qø€ »°l³° ËÆ²±l,;Zöi¥¾´›Ù Ë6»0cÜndA}@€@ À²Íâ*/-»Û�CK·.Ÿ!gÆôÙ2Üßôá—¿Ø;v¬¤æÛ;ç.Ÿ?mpº¥s7Zù¢Vèñ§Rÿñ"SêY¥²+•E©zJŒÛäH\¾�R¥&zÑÈÝEÇz°éˆUýÖ*[N•%›ªÕT}ú�³þœíêñ•5‡Ê˜Y•}\½·ÅC#w÷r1¶°ÇtøÇ�ZgÌž3(K6Gݦö}S@6ùpOž‡*¤Í–Ñ!££X©4}ßÉê±­‚7¦üãaÕº‘Ê™]eË¢šÖUßìSÆ­ÖÏV‡êØü…Æ .ùü±—­SÞ�fhÝØ‘3»#[–ôMëåùæ€ÔϹëCÙ�#8³–Ò7 ±nĸÖÔ…¿UÚªO©ÖMâ0«jZ_}sü^y§Ö*onœY=TJ�‰¸Sî±ÁØ�Ê:ý¸ZµQ9³ªl™UÓ§Ô7+œõÇtVÁï%¡Ú³™‡v´½<í1•ø1"¸uý œÙ‚²eÉÜ´V‰o>Õ6É5¾wšb3ÈÏÜz{lG«àQ®ßûñÙª­ çL—)[ÚJM Lÿ¦‘¶IÛ)åóÏ”!KšBe²ô^[Íc;RanL¹%~Y;e)uÒáø�Ý$[ù¤f§Ó”^ÎXv ‡J? @À&,Û,üóÒ² ‡”| Å#¯Ýùúí·Êv~,OÅ‚½þÓù‹þi2¥m¸¼�hu‹]/§Íœ®Í‘î[*xgÇU•j¨Ô¥>Sª¥Re•º¬ÔQ¥F)µJ©‚JMò®�8Ѿ뿦š,6]¯…:tS¹­žï¬ª¨Nü­&¯V36:K¢þRo¾¯Ò¤U.™¶`Ø…7j\%$}ƒ£o<}»P‹Î™ÊTL{áïB¢Þû¾u궤eûóˆk/ØšÛ›Ö\8ÞÅ�*ªEu3ZÝ>­:·P˨¿/ÜqêŸ�ª’EÔÓ�©N/øÌ²Ó…TMߢaÞ›§óÝ>—±sË4Ëæûûs±ìûŠ6º³÷y�Rò¤jñ¬ºyIݾ¬:·QqÚ´äyH½ÞIý*û­º|PýtÚg–RAµ¨¡n~¢noQ�ªŠ¥Ôß;þ!Ô©  ulÖ? ÍÌÝ5Îòxp‹z÷ßQ`ÝTG¦ …-– ï×.°aº7­y´ã‡CòTnQhÞͦ n?_³sñb³/þ»y·ðdzæI?öT]ټ獵Òfu¼¶Ç¦|kÙGTPÐE»I©(¹t$ÞôÍN§)½˶YP€ è°l³ðÏË~õça2þØöd˜fÐ2�-‹-÷u«:¢Náš%t­~¸CEp}Ñ"ã…K0,£Õ›ïÖ”�lY\qwQŰ/-{ÏÏÎqÜ•'ï´ dËâÂ}®B�+Ÿ¿ÜµÐ ×ú*�^|ô炲‡ 'ój5e [?Ú—GßPŒ{ÕáËY®T]Õn¦öÇ8'�7 uúRØØ{B-wm}@ut¯Äįµ Þ¨ñãÕÓÕk–!*¦ LošIvøÆØ{waŸÿ«ÐÔe93ev¬8xo€Û¢ÙxÍÚ¥°úãªY=åœ4.B-{û†û.ZP�ÝìÔmÈöáŒñ´ÕŸHß왼1Ñ2i‡´Ë=§^:Xeͬ~ßt¯$‘–-^œ¡z¥ÌÍj—ŒÙ/“Ƴ„6‘]æ&åy¦PiÓ8ÿ”6�x·7ŠíѲE�¬žûñfE�eÒxõÐbB²åز//x,KîtoGÕ‘Ùã½×U»/­#éàd·ìq'¹ÏÚFr8d+,Ûìj€ez¤ÄñC€ìÀ²Íâ*/-»ëÕÁ¥[•˘'sp¡¬UGÖ‘L�÷ŸOʱl±luj¬T.¥ò+Õ+.c¼¡Û×–½ãªz¦•Ê‘Gå-¤^é̼9÷ŽS˪û˪VݽTl©f¡ÃúªW 4j•1gž |…î ™U2oϽ3–­×©Ó$Cû°`}Ñ"ã"Ôñ.^= Z5RyrªBùÔÈ0gæý·•Ì—¼V߇cÙ"Îy®ÎЪqPžœA…ò�ì%™¬sǸuš²d™ö¦K¡Ù¢G˾zBµzÎéÑ… ¨‘}�‘kñîEïiuﮪÉ3÷=´éɲ¯®R­BTžìªPn52Ô™™ûÆ=§ïÑäÞ¢µb{3–-^\âêŽàVÏÜ—'GšBysŽ|U2yç¾™ç½Ái,^ìÜ©PôìjÉç™5ÄÑö¨Æ3¯6®Òª°Ü…�£PÆæ#–L繕d«6Êå-™YžŠV¡Qþ'ÛyàÉ\›òõXö>¥NØO²–mv5À²íFÔ‡ :,Û,®òÒ²�Ó¡ßp9ä§è¶ñ¾ì‡Ú=Z¶ËãÆšfyÃ�´ÅX¶qÕN¥‚”’Ÿz¡¯-Û86½þ¢ó‘UòS ·|¥Š•Vm{{¯Ø^Z¶Q™?½˜Ov(?�…’iœ¡s_ŸY¶Q½/~ê<Ä ÛTî*G6çOIÒ;S�¼w¤ÛXß=oæÂñ–羸Sö'?]ÖúÖ²�Ê|qŸóåç[ý\-[?n¬i•÷dÙFqÖt&?µÂ³ œCÛ§îÞµm¬i–÷Æ‹�uŠ]\/YìÂúLõªæÒE_•c`§LõŸÔ-2ÕØXaâÅúŽ %?�…’/ýT®&Cr)t_ôµeïVê¸ý´G®…rÒ3;x9O? ôP‰ã‡ Ø$€e›E�^Zv§Ëýº_S¬¹ã¥¾ª}¤ë’מ1Þh…óã/Dtq>cüh3³6–dY·f÷Ìn¥¢ãjF(UI©6w·Òžw$Ï'îÙG—î–»·`(1Jt¼ùO.«}×�*-O¯PM5ïê̯;¯òQ]ÛRl/-{çåüǯ•Þ~)ÅjéZuÍ,ù¹ŸäÚvÁéÚgÿ¯Ð„Å9ÒgP¹sï¶Z$w v/¹¼S]——[]T—¶«jU×Vμ p»Ï™äyh2Ò-¯úún¿o,;÷å]y¯Ÿ­Î}igÚj•2vm#ùœ{–iSÄóÝ:<¦¯#SF©æ¢Þf‹V:÷È2y~øõsNƒ¾´_U{LumëÌuTeÊèœ%.@“wxåË£ÂåeÆGœYä=Yöå%êºÜê¾S]Z¬ª•Q]ß¹–·w=YöÞ¢™YË-tX_Uüò'%¯ï“Åb—6d¨V!k׿’ÏÑ?4íC%D·�埭M[º˜ˆ¶¾‰EÆÝ…]J&_®?çúsR8éRýRÕr†t-!ùù¿7ÿÙ3’‘iä2À-ÃÜr·Ë†î‹¾¶lùŸÛa»Éá�­°l³«cÙ6 ªC€ž–mWyiÙõ—´Ì\0«¼;kñÕFÕ•×xiÖÜ|GÜû²3'Åû²§(•O©Ìq�ï÷/Íšåaã’dh[Ëôö�e�Y¢òT™‚UÁâªÇ(çk¼Ä²›vrˆJ¡žÞùÈã¶Ða}ÕÄ%9ò Êì(\ü¾^£²ÊCÅeÕ¨9Ùå5ÙR˜9‹£Ò“éæmöê5^²¡»S»—,™¨ æu¾3ºxa5ª×½×xé5}{_v¶%“ƒ æ“;¯åÕ]Á£úÈk¼DŸ³LT¤€#s&GÖàtµªæÜ¿ÒÌ©ÝË=ªñ’ª`þ¸,¢Fõ¿÷\ñÝ;ßê•%X-¤&Éß,´Úe•'Ë^2XÌå|5vñüjTÇ{¯ñºµYåÈ¢ò½eç[2澂yÁ™Ò/˜sTy�—Hôý·gëÑê¾ü¹ÒËÏl¯µ–÷|Yȵ¾ÊÝ…]J^]òDŽ‚2§‘·c¿0ªŒÜˆ-fýôl‘òÙäeÙ™s¤•÷|Mù¢�ËVñ.úÖ²ŽAA‡ì&¥vÈÅ�±l³ËcÙ+€ `�–mVyiÙÆ‘èÄç½òâ{“à CÒ .Œwü:É u•N¶ŒnÊÉ–q·à¤.±aÇ.²œàEO–m‰N|^—ßdËÄ«ÃITè[ËVj›Ã±ßn’­äÊ�e›]°l{�µ!@OË6 «°loƦíÖI6¹Öw”lr­ï(©�Ú½},Ûçö�DBo³¾¶lyÍßn»Éá�­°l³«3Æ>T @À&,Û,®Â²í´7õuùM¶Œ.¿É–q·à¤.Á²±l9�i§,¥6:v“l%—ƲÍ.ŒeÛŒ,¨@tX¶YX…e{cÍvë$›\ë;J6¹Öw”ÔNíÞ>–�eë–íp¬ Ún7)µN®…FËÞ¹sgÛ¶msæÌ™)S¦Ê•+/_¾ÜìTåXv ‡J? @À&,Û,DIJí´7õuùM¶Œ.¿É–q·à¤.Á²±lݲ•Z­ÔV»Éá�­þaÙ]»v-R¤ÈŠ+¶oßÞ¼yóûï¿?""Âìl™ê˱l›‘Õ!@�NË6‹±lo¬Ùn�d“k}GÉ&×úŽ’Ú©ÝÛDz±lƒe¯RJn²¶›d«Xv¾|ù¨�·lÙ’>}úéÓ§›�-S}9–è¡Ç@°IË6‹±l»íM}]~“-£Ëo²eÜ-8©K°l,[ÎcÚ)K©åJm°›ÙêžeoÜ(7w;,X ŸK•*¦/Z˶YP€ è°l³pËöÆšíÖI6¹Öw”lr­ï(©�Ú½},Ë–óØ]ËþP©µöÓGr-”´ó¡LË^¶l™~z,_¾|—.]ôÅ@Ë`Ù�*qü€ ›°l³p11–ýüÖŽ {wvŠy_ö¬­výZ«¯Ëo²etùµ›Ùº@ÙÝD«ïnÁI]’0ËÞú¡J؆έRÈû² n�•0�÷•[ITèë7y-Vêc¯Ó0¥ž�K äÒ¡[¶6–ýÁè§GËîÙ³§¾h»–-V @N 66V# ‰%-|2;ÞÄXvÅ>O¥rËn×'Õ[vŸN©Ü²ûtMý–�½O»À³ìâ&�Ë pÉáXh´l9+æÏŸ_¿/{óæÍr_öŒ3ÌΖ©¾Ü–eË•” @N@üZ`ÙîQ"–måÑXöESOê‘k÷ö6$�e[x [ÇÛ¬oDzåvê  ev“R \,»[·nE‹•©ãŸ~úi³fÍäãî'ÉÀ)±eÙþ{€ �–o¬(s&%ììòõÀî1Ãí¦ò=ªØÝD«¯ÔÉäNûcTR« ÙjLTLÁdN1Q*a©GÛn˜7&:™SÌy•€Ô#4![ÝÙÑ“Œ©dÌþ„¥l=Z%lC1ßdKÓ¿n(§9áÄ{"ò¾PûÇ RóŽ¥v“låbÙòÞ.y_vŽ9x_¶|X6ñ @v `ÙñƱ+W®”°“ �d 'œxODÞÞµìÙJ…ÛMÇ9FiÁûÝTMo,{$@€ p—€(9–o¸¸sçN‰{e€I"O>€’ˆ€œdäT#'œxODÞJ÷âþ0Kn²¶›”z˶@mmÙ!| @€À? `Ù‘« ¤še;3‚‚æÙMJÍÀ²-¾hkË.:„@€Œ°l‹ÈŠU€R �»cÙS•’éßö’Ã![1cÜô«Æ²�ay@€<À²Mã*V@H9îZö¤¸éß2ÜV’­°lÓ/ËöKP€ #,Û4®bE '°hÑ¢*Uªg̘1oÞ¼r«DòвeˇÇýÖ¯_¿cÇŽZ5é­ÇaéuÆ�×¼ys�íS!ܵì qÓ¿e¸�äpÈVX¶é¯ –m ÈC€ à‘–mW±"%رcG¾|ùZ¶l¹yóf9ŽÕ«W80ùÈKËnР�nÙ¶:)õè£�ÚÚ„Ê©•À]Ë~G)™þm7�ò-~1°l�± @0À²-"+V¥\«V­’Aä… Æ{C† )V¬˜¼8þü}ûöÕë¼óÎ;=ô�ŒgÍšõ™gžÑÊe¼øþûï—BÑö=zh…S§N•Å×_]FÉ3dÈðÔSOmÚ´I[%;-[¶¬/^¼ÿþfcÙ¢ÕÙ³g—5jÔ¨N�:ºeKýåË—kM…††J�,Y²H…Zµj¹Ô™>}zºté‚‚‚¤oò™1c†¶?“À]Ë­”Lÿ¶›Æ`Ù¿6X¶1l @€€GX¶EdŪ”K ""¢H‘"eÊ”4hÐ|`|MÒ¨Q£²e˦9é’%K (0~üx9Òwß}W¤uذa²íöíÛgΜ)…áááR8tèPÉÏ�;W¤X”¼Xvš4iÚ´ióé§ŸÊ›˜D«Û·o/岡4جY3ɬY³æ‘G –r—O¿~ýDŸçÏŸ/åÒ 4åbÐR.úŸ3gNé¼äß|óÍ´iӺבmËva°‹w-û-¥ÆÛMÇ(,Ûâ7ËöKP€ #,Û"²bUŠ& ³ÄeƸ C‹ÃŠwèÐAôYލbÅŠ�:uÒ­{÷îuëÖ•E™¶-CÆz¹–w®P¡‚^Ø®];mQ,;sæÌº¼÷êÕ«råÊRmòäÉ¢ÃÛ¶mÓ6™4iR¼cÙåË——þèÍŠŒ»t¹råôB©)ûÕõñnfŒë Éh–íp¼4ÞnRj$–mñ+„eÃò€ x$€e[DV¬Jd¸Y£E~ûôé#GT¨P!™Î-OEÓ>2o\’&å�?þ¸Ñ|µc—éÜúÔq)‘1èÂ… KF,[f›kuä§n»2]æ�ëåK—.�ײ¥ ЫիWÏÝ ½©£ïWoŠLÀ¸;–=Ìám7)5 ˶øÍÁ²=ÆT€ @ÀH˶ˆ¬X•šÈ ×Mš4‘#’)Ö2~í~h 6tËï–qg½²q,;^Ë–±l™a¾uëVm“ÄŒeË~uõ–ÖŒ‹úX63Æõ¯†ŒÜ¹ ¦¬ÔJ ¶›‚‚úbÙ¿BX¶1l @€€GX¶EdŪ”K@-.�“Û®e–¸¹ÜÇ-·ik…b²Ú3Æe*¸>.–-O9Ó—Û½µEÑvíã2·\î׎÷égRSFÉÅÙåùáò"ïÚµkëÃÖR_ƸԑžÈGŽEž1Þ¥KmzÑ¢jÕªiSßµ è]"hä_F"Ú2¢-SÇðA±-~a°lcØ@€ �°l‹ÈŠUðbîÆ[¹ý§cô©ž–í1–  @FXvª�9À”K@ÆÜe„Qf°Ë sy—Wƒ¥Üc¡çH¹°lcØ@€ �°ì”øÑóTO@ƯE®eûƒ>8eÊ”T¼ ü“–í1–  @FX¶uô €ü„–m ÈC€ à‘–í'QÝ€ ÿ$€e{Œ%¨@€€‘–íŸA½‚ ?!€eÃò€ x$€eûIG7 @À? `Ùc *@€ `$€eûgPG¯ @ÀO`ÙÆ°�< @ `Ù~ÅÑ @ðOX¶ÇX‚ €  `ÙþÔÑ+@ðX¶1l @€€GX¶ŸDqt€ü“–í1–  @FX¶uô €ü„–m ÈC€ à‘–í'QÝ€ ÿ$€e{Œ%¨@€€‘–íŸA½‚ ?!€eÃò€ x$€eûIG7 @À? `Ùc *@€ `$€eûgPG¯ @ÀO`ÙÆ°�< @ `Ù~ÅÑ @ðOX¶ÇX‚ €  `ÙþÔÑ+@ðX¶1l @€€GX¶ŸDqt€ü“–í1–  @FX¶uô €ü„–m ÈC€ à‘–í'QÝ€ ÿ$€e{Œ%¨@€€‘–íŸA½‚ ?!€eÃò€ x$€eûIG7 @À? `Ùc *@€ `$€eûgPG¯ @ÀO`ÙÆ°�< @ `Ù~ÅÑ @ðOX¶ÇX‚ €  `ÙþÔÑ+@ðX¶1l @€€GX¶ŸDqt€ü“–í1–  @FX¶uô €ü„–m ÈC€ à‘–í'QÝ€ ÿ$€e{Œ%¨@€€‘–íŸA½‚ ?!€eÃò€ x$€eûIG7 @À? `Ùc *@€ `$€eûgPG¯ @ÀO`ÙÆ°�< @ `Ù~ÅÑ @ðOX¶ÇX‚ €  `ÙþÔÑ+@ðX¶1l @€€GX¶ŸDqt€ü“–í1–  @FX¶uô €ü„–m ÈC€ à‘–í'QÝ€ ÿ$€e{Œ%¨@€€‘–íŸA½‚ ?!€eÃò€ x$€eûIG7 @À? `Ùc *@€ `$€eûgPG¯ @ÀO`ÙÆ°�< @ `Ù~ÅÑ @ðOX¶ÇX‚ €  `ÙþÔÑ+@ðX¶1l @€€GX¶ŸDqt€ü“–í1–  @FX¶uô €ü„–m ÈC€ à‘€‹e€ häÊ(×JI#GŽ ñxa¥ @NÀhÙ?ð� @À…–àÁ‡@°EÀhÙ±| @p#€eÛ -¨ @pFËÖ¢~B€ àN@¸™1àQ‡@ð†€Dò?{÷X‚@€Œ°loâ ê@€ ñƒnÙnSä|V ÿü÷Y[n Ѹg�`1‡Æ|¼õ}R˜Ôß…ñ(ÈCHfX6Q @Þ�EôJ TôŒoã-,¡qªÉ€Åe�úbÊý.ôC @ ù `ÙÞÄÔ� @@¢ݹôŒoC—dÐIzîò•iÌ] õÅ”‹K?2€’Ÿ–MÔ@€€7$JÑ�KÏø6tÁ²ãå™ Xâݯñ7«�°òñˆÖa¶‚ `‹–íM\A@€$ÀÐåZÏxŒ:ŽlZ׳DѽŸ|챦TðF¾¤ŽÅÇb/²•v/°u�¤k\ßïɨC-Þy?òøA½Ä:ãMÏ­[°X«5nVÁû/Ú¬…xËÿÅ#Š·?Bð-í,Gä@€¬ H¢;—žq K¦vx1<,4<¬ýô¶�eÕ¡u«-±¨RÝþ�”Ù¿e­Ke÷E�ò%<~Ü›ÕJdCkËöزTHpãÆ {Ï^R:l\û‰ó�…y�=·ØÖuÕŽ�.LnrvlƒÓÇ÷j«´Æ]«EÖJ̾h÷ú¯tíT³ÆÓ[6®v_å^âË#ºÛU}/ÖG¤W#@ éh'"ë«*k!@€€D#ºsé—eV�—ÿ{yãíè)óºÔ;¼zÅ€"Å×=õüŽêm>~¬Q¿Gö(Úò%«l}\:&‹²¹™eÛjY*ÛjÜ¥òÜ5š�™�µÃð²=ÇO_éù?Ö=wiÜbQ´úÜœ®ß„wùãtø�«»ŸY9F«¬a1ÛÐý‹~¾IãGyä©§žR.Ÿ:Jõu)º³X§VÍÃûwwañ]«%,o}D k“­ Ø" �ˆˆ @€€5 0tçÒ3.Q‡fÙ¿¬,9¿í3¢ØëŸj&нññf+4ZT²Z¿²DÛL¾¤<—¾I ñZvZ–M¼lÜ¥ZľÝ'/ÈÝi¤X¶¤j¦nÝáRÇ}Ѭçî5ÍJέŸ~iÊs7ÏþóÌû·� ¿¹»ÓÙaåµÊZãfºѢؿþúë͸Ïo¿ý³bÅŠ§Û<Ýà|ƒ6Ÿ·©ÿný^½z]»û9÷3fÌC–6î"ñGdlÍ%o}D.•Y„ �´‘õU•µ€ @@âݹôŒKp¢Yö…‰�ôÍ_puµ&;k¾´¹ró�¯| ÖÊÕ«*¢mq�¶™|Iy>.�”|hÙ^6î§L¯ñ…»½�£ãQìì¡# ¼<ªd�±r›¶K5—E³žkÕNž8¶?ò쾨;é@Ô™SÑGõNØüÙ´V?¬øçg‹ÿ81áÖÁ^7w´¸òq»“o×Ñêh�ëõ]2.‡)kŸ|òÉ'NlÙ²eÛÝO•�*Oîy²óÙ΃/=Z¡CÑêíqŸ½{÷ˆûäÍ›×Ø²û-\ÿIåÞì>f`X›¥oÖ–´DÒ°�%Ck."©FøàáƒjtìôâÃÝFµ;ÛØšKÞúˆ\*³@ )h'""@€ `M@âݹôŒKp"–ýõÚ1 Z÷tÓ­Õ[*Zz\¹'&W®1¼ì£sŠWÑ^\Ô9¢m&Úîò%íKa‚?ÆîI#î–�à–eC��+ó•úNË.ýú;ÆB‹|¼=—ú§OÞy.âXôâ= ?plÑÁÈ¥{D;s(ê”T8»dÐÞkuëä¢?OϾ}tØï{:^ÛÚòÜ´Æ'çö²gÏ*Ì+ú„.ÚñÞ£í._Ò¾&øcì§4â[Ëöظ }±r¿É‰·lÂÞy~Éþã+£Ïo9ujsTÔÆãÇ×=²þxäò¨sëö>øþ _¶�ú¿óKþˆwë@د;Z\þ°Ã©ñMOï\©÷DÃ+XŒ%Ƽñµrqê£G�†‡‡wûa³©Ç[½{¢íœ“œéºè\��.ôZy©ÿÚÿ ÙøÕˆ­_Oß÷ý’¨ŸO|wKæ�{´ì>³—Tï6ì¹7ƾ±`;Ó"Nœðþ²^S¾6qÁ+ãæv3«óÛï¾2i^­~“}©?–müŽÈC~H@»â9@€ kÆèÎ¥gŒ±Í±õkÞÈ_h]�æ;BÚv-^rþ”Éû÷ï—[wE²._¾|pÏž° 毬OwmwN°_ëê=LæÆõýºgj™–HË–Q콑çì;º6úÌŽ“'#N�ÚqòÔÖÑŸDF®>rdù¡ƒ?³býê‹K^¿}dðÍÝ~ØÐìô„F§–�>uÀ¥?—B}Ñý‹®R¥ÊáÇŲ_÷Q«™Q¢ØõûPéù×oþz•aÕZ÷|úÅÞ5Úö¶8bõ™ë+N_?õým/-»Î É †Në·píÞSvEžymÒüÐÓÛ �òÒ�I­LhÙÿ�ޣ߭Ýwb®f}ê6Jï¡{ÆúˆÜëS@Àç´‘õU•µ€ @@‚ݹôŒ™Z±¬¡¢k«7ßY¯ýËŋϞ0~çÎ�çÎ�“šò ¬ï¾ûî³Ï>Û³cÇ«åÊ-| ºS´ã{ZRˆ°ÞÕdn\##�;+þê�§yë¬Ì,»äkcã}š{Ï÷G�]|àèڧLjœwê҂ӗ矺4ûÄùéÇÏN8|rÔ¾ãÃ÷™qèäŽå“¾_Ñpï¬æ›&·{o÷®éGOIs Zï‰d´Æ�%ƼNO/|â‰'æÎ�ûè£�VkÞã¥9'®Ó®X±båË—/P @™r $åÎ�[&�—*UªÍkƒÖ|ó\›Ž/½ô’7cÙÏ ™ú܈™®Ý}nû±S­ú�¯Øqp…ÐAåC–k7à‘vý[_«ï,[ÿ.È@~K@;µ9@€ kÌèÎ¥g´GSì�µZE4ìôÊ#妽=jÓ¦Mr÷®Tû믿n\¿öË/¿|ñÅÑÑÑŸnÚÔµÌà ¬qW´2Þ£í®“R’È�ÞUiÇeÆx"[–Í-2c¯º¿ÇØ\�Ft�¶Ð˜J¼:&kûáEº�–Â×ß]$“¥µ”«ãÈGz�ÿ¡ë+§]z.sÅå^ìÑçdðzÆáÿ¹qëÊÍ?¿ˆ¹uþç_OþðË‘oÜóå·Û?ÿjéÉÏ6�8wrnï_Ïîùë¿éiΩÏ�q©Ö¸±Ä˜×P/Ì—/_Å&+}Z鑚ÍBçŸ}=zôÇܵk×^o®�ÔªU«•+W¾ÿþû™³dÛpñ·';×®»¾®Ê¨–„ÏÕq9")õ‡Nk2r怅kvE�Ùv8jã¾£«#,Ûº{ÑÆísWoywùú)‹?éƒeßy•¹“  à‡´³œõU•µ€ @@ÂݹôŒ]³j`‘â›ê´ÙÓ¨s·‡ÊLõÖêÕ«åÁÒ»>^õñˆþ᯵™òB�-ÓGýå—òZ'¹¥wÓºu]|0üa§hÏ.üh�ÂõÉ]¾¤$‘½«ÒN²Y¶<6¼ÁÈwóv¹óÆ.™î’rÝ}™—K¹,zyTó±s"�4Ã"O_´çÀ†'uËþ:>Ë^þÒÒãg?ÿá¶î×Z&1–ݾm›àg‚kDÖhÕ¶|­æ/‡ŸËž}:*òØ´)“ûW(7»Tå°¬9#-ÐÃ$wù’’D~ô®J;ÉfÙí&Îk:zV¾.o¹K´VbaÙòž¯g†Ïl?q¾yiWøÁãëŽÝ5õ`Ô…_~»tý÷ Ö?;}ù3S>¬;yIíÉ‹ž·`ÈÆ] ��¾üÃ>´ì'êWʲ KóSÍœP¡ö Ý—ž•aò‘UŸ~u»ñ+/Lýqj‰E%žXWI$];(÷ïB,»f¿I"Ú2¢-wgËìq¹M»Fß Õz�«ÔctÙ®#Zô¥Aù^xËÖ1È@~K@;ËY_UY @€$˜Ñ�UÏHáÚ“çÖi<⩪2÷;lð�E‹ýøÃ÷öí÷è9ÿ½¼ñ�Ó³o~sïËW×5¿{·ëב·-ÏZøÁ¡m^+QdÇ{ïc$wù’’D~ô®J;ÉfÙrPK>ÙÜmúÂ'úMÎ:üÅñs�©@×QYC‡ì:JfŒw˜4O_%sËK¿öŽ,ʶXIJ8¶úÈay¨ø„}ÇNÿxýìO7Îüt#ú‡_Ž}÷Óþ+W#þóõ–‹_¬ÿìÒGOýçG_Z¶ÌúÎ,3À»Dw©Xç…žË/ŠJ áx?²jç7VéRsâ³¾”õ…æM¶l¼3Þý»Ë®ÖkÜÓoL¨Ño¢è¶øõS}ÆWíõÎc¯�.×mäƒ�†—h7¸`«¢ØX¶ñwƒ< àŸ´³‘ @°& ‘ŒÈ”Ïèmñ� e´Û«{ *–-kõnÿÇéY~¶ô�SïÞ:2ìæÞÎ7¶6^Ú¿‡< M³ìxã"wù’’D~ô®J;ÉiÙÚŠ/?6Îå`ÍÞ—]¦çøùk?q©,‹.=wŽe8¶òðÁ5GŽŒÙ}øøÕŸ¢®^{åÃ-íæ¯k3wõ ³W6ywYýiKmرèØßZ¶tFžuöì³Ï>úÖ£•êµÿékËÞýÝÿU}±f½�õ¤Ú±CwÞÐí~DR"–]±ûÛ�½6¦JØØ*=Ƕï?î¹Îý†¾ñÜËtìW·]Ÿ�ÊÔë„e + àÿ´ó¶õU•µ€ @@¢ÝXõŒK¨3päˆ;–Ý«ýí“Sÿ83çvôäßúmwÇ[ e»ðÑÍ,;ÞÊRèbÙ£N/Ý{`ͱc˾sÿ�¯¯úúûÙ¢gí�š±çøä]GÇí8ôö¶}cvì_zì´Ï-û±ÇÛ¼ysXXX»“&îø¦@á¢òoù}pùHaþ"Åöþð¿÷–®’»¶Å²�GçrD²J,ûá.Ãef¸Œ\—{eäŒÅk­Ù²H™:K6휿fËŒ×Lüà£âMz`ÙFŒä!¿%€e5A€ à  fĤ´�FϸD8÷,»gÛ[‘cnŸ˜tëøÛ¿ìóÛ®v1›ë‰eËë³j,Û…�¶˜HË–—eG?µ,òÌ’ýûoßñÅ×»¾ø¦×ªmÝ?ÚÜmé'�¯o¿pm›ùOØyhÏù¯bnþŸïË–þ‹eïÚµKn6ìýu“w};ã£Mù ‰vùˆb‡GDî¿ö÷W¿Ç^¿~]ÖQÄkÙ2'üþCè0ô�ƒ§/^S¡F‹"ej‹bÏühíÄ–�žþÀó¯aÙFŒä!¿%€e{WP€  ft¹Ö3.ŽX¶ø—¬]Ôó¥ß� ½uläïG†ÜÜßý×�-c>©•Ë–ö%VIðGz"­“҈ˌñ¤nÜ޾˜HË–vE�\wðÈÒãgúoÛ³õÒ—’ú­ÝÑsÕ¶×WlyuÙ¦—?Ü8h}Äô]G.}ïú€q1îÄ¿øø™å‘g¢¾¼ñÇÿsÈö¡e¿µ`ÃŒý?l¿ôkãÖ¡�V­^±Z I•ž¬ñT½F‹wEþùïƒ?Çî½ûÅï±7nÜð8–}øÈ¾Ê}&äŒ{¸Yžú//ÞѲëÀæ�û‰b¿3wÉÈ™óOzïÁ¦ÝŲ ´è×bô¬xAi….‹ ¬‚ �Ô°l눂µ€ h$&ÑåZϸ*o ¦�e‡÷ •çŠßÜ÷Š<÷ì·�­olipcÝKûw·;c\k_•|¤“Æ~J îcÙÒ~Z–M¼lÜ…OľÝ-ÆÎÑ_ïUsÈ´M;w¸Ôq_4ëùñQ3ö�ÛrRÞ‹}fÑñ³ Žž ?zúÃã§v}öåÅïÿˆW±oÙ �ã[·n½zõª¡qËÆMO7úýÐy7æ º:(¤wÈ–-[´UÚOo,[ŽZD»ÙÛ³^7'$´_­ö½C$µëUSRÛž5âR­Îýem·© Ž=àNI/Ñpé‹d $?íDDü@€¬ H”"Ò¤Å*zÆ%té9xÈ]Ënÿ[D¹[;fÛs7>©y}M¹[¶ìE"[ÍïŒÝ“Íãµì¤nÜØÉÏ]³¡Î›3D´Ëö?}åZ—µñ.Zô|LľŸûïç?Ü–÷b˃δtý7×{±�#Ú‰œ1^§VÍI“&ÉÍõã>—.]Z¾|yÕUŸ;÷\ÇKëM¯7`À€/¾øâ˸ÏWqŸ+Wœ�"7šÅ«%,¯5ž°mÙ €€Oh'"ë«*k!@€€º\ë—häže÷l³íY™(îü¹©î�u•YUZ³ì¨¨(y_¶Ë†Ú¢µ|ÉZ/?îŠ-í˶f–­­MºÆ]öõwÉ{±ÛOœïRn¶hÑó!Û÷ÍŒ<ozïÄùYÑÜÓø£çŒ;Ò7–óî_ôê•KòåËçò¬3çb5åè눧\©ªU«>ñx%c³Gd¬–°¼õ%¬M¶‚ `‹€v""r€ @Ö$ÀÐ�KϸD=]³zÕÍßb†‡T�ül%-MjüèÄÆæ´­2§[èO?~"êø”¹s]6Ô=Ê—ìWêX|¤‚öqo_¶²°l©/Z´,«î¶}g@߸ ��+Ë�Ø/Œ™yü ±Ð"o«q‹vâ]¥5ï*)”C6[åRþJ×N5k<½gçf—òxÿÅ#Š·?Bð-í,g}Ue- @�Dw.=ã–´2lÀäÉZzy䍯Ǜ†õqÙP[ôR¾tÛ�7oËRè�›õͺÜËž[7b¶VkÜl­ÙmVßËòñˆ¼ì!Õ $†€v–#r€ @Ö$ÞÐ�KÏ$&qß6䋞»`Dz]€°@ ñ°l눂µ€ h$êÐU2B$ÅG›Ô�-K›4/XÁbR¦Ü/Úìˆ(‡ � ´+ñ @°& a‰nÙâe|R³˜3å£ÙQ@ `ÙÖk!@ÐHX¢[v2„(ì€ �B `ÙÄN€ xC@Bݲã�xL! ð¯àó_ÁÎN!àNÀøÇ(s�¼¹¶R€ �@&àbÙ)t|�nC õ0ö©ïè8"¤ Æ?F,;�C&Ž€ à%‰sŒñC {è*R7þ0S÷÷ËÑ¥ Æ?F,ÛËè‚j€ �@& qŽ1~HAa]…@ê&Àfêþ~9ºDÀøÇˆerÈıC€¼$ qŽ1~HAa]…@ê&Àfêþ~9ºDÀøÇˆe{]P € È$Î1Æ)(ì¡«HÝøÃLÝß/G—Rè‰Òay0–È!Ç@𒀄 z!ñCJ {è'R=þ0SýWÌú?ù34^±l/C ªA€œ€9óþéÑÃ$Àf~é²_ÐËð0‰Ã‡ $€€„4ó~×ÑhøÃä7ÿ"wÅ–Î0–�€0ƒM @H@‚ù1�c×0#À¦Ê!�ÔŒŠ­ÿ%ÊN±ì “8d@€@HØ ‡ÆyqIÃÐ> `M€?Lk>¬…@pQlã•ËN@˜Á&€ �$ Q Á|…j4 �Äà31ôØ #à®ØXv†F2 @ ‘$!˜OX0ÆVHRüa&)^‡€;kÅ–úŒe'2ä`s@€@€�°�`Þ=Ö¢ÿ:þ0ÿõ¯€3ÅÖÿ…– ¡‡ @H$ ôÂ8/. ‚+~H€?L?üRèRj%`¡ØÆ+#–�È�ƒÍ!@B@B&‚ùÔ7r\)š˜)úë£ó)ˆ€µbcÙq˜€ �@ˆ`>Eƒt5pð‡8ß5Gú/ð^±¥“Œeû0ü )@€@*& aƒÌK† à?4õðŸþФ>¶ËNÅá‡@ð!£eÛ 6¨ @(X¶Ãš‚ ¤b ÉØD@…I, @ °ìTqh€ �0CÂ>€ x$âÃK0MA€ �* HÀÀ€ / ¤Ê`€ƒ‚ @€ @€ @€ @€ @€ �Àÿ9é endstream endobj 8 0 obj 126057 endobj 10 0 obj << /Length 11 0 R /N 3 /Alternate /DeviceRGB /Filter /FlateDecode >> stream x­“M‹ÓP†ß´Èˆ–Ñ)RÝ?QBZdºëLÛê”ZÚ?vi’~h“f’´êèbþw.a\¸p9¢¸êJDAð¸Afâ¹7“Ì,ÜxBrŸœ¼çÜ{ν’?4Ç$X¶ï6çÅë7nŠS8ŒC8‚Ó8¥éž3W¯WI²�ýü�}ú|‘åZW×$§ŸV&ë“åÎÌ·‡ûEîi—&‰Ǻ!·CVßñŸ4=ÆzO3ˆK®Ú(?'žî†üšq;äwŒÇz—Å~%–m£o‰ƒÄ³†ééÄâŽáé1˳mYCÊŸd|Aw\ŠM~$>ÃúB#Ùp‘·Éÿh×§Ñ:^RNìñ�[Ò'�W®n3Ã{%dÞ{�¬ÂÓ )8ð+6I;õØrƒà÷“ ØzFsl“e}䎹– >ÿzk³Ÿ¨2¾Gç°/\%k@]ª4>¦ñüq`æ>Pù Hd³Ñö�Ü@ªT®VŦ’“ó׸ã>¬ÁˆöŠ[šž)»]»Jc†îïŽ_W#öÆÍrÄ�þB%bC+Ñ^„ú•^±qÇ]hD|K»Â ä9M»ÕŒØð³¿3×|¬7½r¬Y马h®qG�VÄ·‡K±Þ0KñÚìA�ýO\ß÷+ñúQBUºD4¡ yPæðLR޾žÎfs—[oSgW™g¯ùæ]¾×Å¡sÏíw{¾8G¤)‰[¿$‰Š,çñ�º¯ endstream endobj 11 0 obj 560 endobj 9 0 obj [ /ICCBased 10 0 R ] endobj 3 0 obj << /Type /Pages /MediaBox [0 0 1314 806] /Count 1 /Kids [ 2 0 R ] >> endobj 12 0 obj << /Type /Catalog /Pages 3 0 R >> endobj 1 0 obj << /Producer (Mac OS X 10.5.8 Quartz PDFContext) /CreationDate (D:20091116081639Z00'00') /ModDate (D:20091116081639Z00'00') >> endobj xref 0 13 0000000000 65535 f 0000127500 00000 n 0000000169 00000 n 0000127366 00000 n 0000000022 00000 n 0000000151 00000 n 0000000274 00000 n 0000000363 00000 n 0000126625 00000 n 0000127330 00000 n 0000126647 00000 n 0000127310 00000 n 0000127450 00000 n trailer << /Size 13 /Root 12 0 R /Info 1 0 R /ID [ <58cb235ae3ee76ade361f26797033340> <58cb235ae3ee76ade361f26797033340> ] >> startxref 127642 %%EOF ipython-ipyparallel-14e3c43/docs/source/tutorial/figs/parallel_pi.png000066400000000000000000003421611520071063500260730ustar00rootroot00000000000000‰PNG  IHDR"&n h\+iCCPICC Profilex­“Ï‹Ó@Ç¿i‘-«.R½ª„¶ÈöÖݶ»Ô µ´)þ¸¥IÚtmÒ˜¤UWû7xó zðàUO{E÷?ð¾"‚ìÆ73&»‹—}!3Ÿ¼|çͼ73@ú‡îyÃÇ ýÖò¢|ãæ-yf‡qGp§u#ðšM•$SìçWHì×—K,ÖÑ4÷¬ORŽÇû‚ËŒ»‚5ÆwC/$�ÍØ°u“ø!qÎ×Zâij}Áow¿g<1úlì7bÅ5.�:HûˆÇ¥”cË}ÒËNÜ<¹÷š�]~ÇØF›Ù<[Žÿ™ãž8Ùyã¿}ö®™õèÃøÈãþñ‡OvÞü‘/ܱ;äé/9éÈ�íŠOÝúÍÈ2S$@$@$@$@$@9Ç�ø¢ÔòµÛ¯L-1ߊ@ó1ûáo#åø¿ð㲊¯—_ñ£<êů>nï£ð{¯=÷НšÕñ…ÛžÿsÇoÚ;Ö®;?yÑM÷ï½î=zê�¾ê9›'ߨþïÛKNú‡=÷E/~ÚÆ]·îã׫x”#Nzå1Òâšó¯)iQlK! � � � � �ÀÊÐó¹=Ї™•ƒ’Øpó1û…/øáD­O¿óݵžÒ3ö®[>yéöÖs ñO=]O�Ü[_rÒwþõª¯�dꮿòC×�dŽA$@$@$@$@$°ÀìQÛÈ<åV�T‰Fþ§åë¿ô?èµ{íe·$ {iãCšž¶¾ó­½‡¬éêÓ^0=cËO�ŸwÁî�øtù)èizú:p×ÍüèÅ·îšL6=ÿ©÷üË?úÅ{%¹í¹Ût9%Ø:þ„ÃÖ«&;?û¡ ׬֔Û~hzƾ÷úý·�mÿôëð£6ɹý¡{îZÿ¡ñM?¢Çæ­'NÏØ÷ÝpÞ‡?¾ý¾ÉÆ£_xòÖu—�»nþðÇ?yÛt 'qŸ &·�œ®ÿý¢KE°që ž{ÈŸ¹amù¡ñ‹>Xösãë�Öþ)‡ä�|â²ÛÅmË?wrí­òƒýýÌ#díÐ#6 ý{o½åÚÏÞ¨-®9ÿâÛûsã;?þÅ×ìœHá³·LäD==cï¼ñÃ\"É�Û~ø¤£Ðç_XKN6õì½I¬&9]ô“—ßñð䀣žÌÁ^$§è /½üNY=òùÇL®¿Uð´|ŠÈžðÔÃeìûnݱ÷O\kÇ%^zþÇ.;ÿc_¼ýá)Ëç²î'§ë�]vŚωÏ>h=Ë’ � � � � Ì–ŽÖfÛo1Ý‹žfˉZÿèà²Õ–ŸþÔé3ê{¾>ýÚ·~}çmÞôä§5ÑCÕCáDþÐw¾±Í Þ�Ÿ²þ„ù1µ}[ŽqOXO}Ät€{ïÎþøÆ­/ù™µ“ñ½×_x­<©ž\'Ó#ô·Ë¿(8é¥S‡»¦·ßµóÄ'mÚ|Ä‘ý³Ò»vá|¸+º©‘'ð�‡ÅnãAé“áÖOÞ×´»n½bíéôÚEôË·š\ß½Ç=qó¦'m›|çàÍòhúw%Z!±§¨ÁdëSÝ}wOÿ²±;ï¾ÿøM‡?é)O™è_=¶ë;¢ÄÁ6bwÔó^%WÙôõðíŸþÌuFñàt›lò[‚ély²­ÏÆ×žlëjÉ×mO™>©¾÷ˆ5Ûž¼ævÏÔíÁ»vÊö6o’ÌÃ÷Üy†u“'Ø’Ÿ>ÁžLì“í¨¸<¹õÉkÉï‰ý¹&“-fõ›_¿_Æ~Ò&Ñ?|ï×3ö!ñû ƒcwö¨ÍÓ.;ï•÷_$@$@$@$@$°ºôÄk¿Î‚…ø‹-~V\M΢ÝB{=Í–µ=Z»¶]ZgñÕËΛÈÐë_òS?¨©éÐësŸ8Dþ ´ã~ñÕÇINþ ´ËnŸLÌ9|½¶Ý?o»òº#O?vóÑ/úù£w=$qYúuÿ—®Ù±ùEÏ8ú¤Ÿ;:-ʯܹý“Ë_�öœWÿôsD(ÚwʆÎ׬¯nÜú¯Zûqôûnø´TM¾~ãmÛ6]üW ­ÛìùçÆ-/þòG«å¾o¼rê&çì[nÙ¹eúGÈwÞ1ý‹Ð¦¯»ô÷cþ 4]Áׯ^ó©ƒå¯@;æ§êÉÉ_�v•< .ÿ“ØðApÀQ?öеú�7}F¬Üë€#ìåk?¾óæÏêïkÇŽ�GNŸTïüŠûO•}å 7?ååÏzÒÖç¿rëûäÇÌí |ì*c     �4�º³1Ø03XZñ`¿Âý»£µVi2º4™ÈIÛ³î¿æÒs¯ylÃn8ÿ¼ö8|é²ùÒžÕ[?ýÑ[÷„7^ðÁ÷„�ܶA¸úkŸúPðÇ­øÂÖlú¶+/¼mOý·®¾èÂköTíIíýÇ_ü×õ’½Éoºðßn’Kìñ�ë®8Ïþ)dY{ðæ ?|óž³zûU¿C{é9\ÿÖñ½Ö“®ÿô¯7×ùðΫ?¤ÇéCŸ9Ê_�vÉ—ûßJ;øàµçú÷Þ}œ¼áÊ»WüLöŸ½X÷*>xÃU6š©ú«×|xýÖÝù¹K´í^—|äþ‚q'–¿í2ó—œMWÖ'Õ÷áÑ÷×®ýÈúýüì…wƒüºÓ­ŸüØú[c=Å’ � � � �À*huÜm%^eª]ö^zÌîÒƒµC8ôÉO–cö®¯Üdÿ|ó�»õ8dóô¯l{øk7¯­»Ù±šH€H€H€H€V…€ü'œZmµ­^ÍëªZ ¶|âæcö;ßýWË·íAwôà—?öï_î­ãƒ_þøGbnÞrÑù·ôÖ¥Âè[;.þèŽdÝô¿Î{ =ͧ«’v\     �•&pê©§¶Ú[½š×Uµl)Å ÇìoÞÏ¿_j)ï;7E$@$@$@$@$°ÀÞüæ70ý0]ØÈÀ-ö¸Û‘ � � � � � �ÀH>ÍþÅWÿÔo›[#      �YH³ù'Ýg�›ž$@$@$@$@$@$°ÄþìÏþ캫¯Zâ –l-yÌ–âK.¹¤Ä‚      xï»Î!!�;fË2OÚ|—� � � � � �ÀjhõÙ~Ýëß´š”Â]7³ÃfH€H€H€H€H€H€V„À±'œT²Ó³Ï>»D¶"³WäFs›$@$@$@$@$@$PC€Öº-5þ½Ú£žH€H€H€H€H€H€’xÌN¢á � � � � � � ´%Àcv[bÔ“ � � � � � �@’�ÙI4\      pŽ;ñE.ÃKG€Çl„—$@$@$@$@$@$@qzÆæI;Ng=Ëcö: þ“H€H€H€H€H€H MÀž®mœ®XѳWôÆsÛ$@$@$@$@$@$PN s—$@$@$@$@$@$@ƒà1{ÌlB$@$@$@$@$@$°xÌ^�ûÌ]’ � � � � � B€6{ÌlB$@$@$@$@$@ Hàì³Ï^À©ç<2�Ùs¾lO$@$@$@$@$@ã$ðº×¿iœƒ�|ªæcö%—\’ÙÃ)§œ’Ym»íÕo‹¶#-¥žœ‡¼­…´�,ú¶/Ñä·¦Qó|á¼Vnày�*é‹÷OÝ€÷¢25$@$@$°dÞû®sÊwÄ39X5³!íÈG´êÏvu…žKy÷²ÃsžãÌ÷¨šOE/)Q8a­#ªÑ$Þù%š°K*c»§4ƒåÝNëËF$@$@$@$@%Ž=ᤶÜRj>fヾ-«ûd\øáÞvÔF……vÂUŽ q�ŠsáÌå·Uß9v�¨¬—Î }ÝšwcD5˜Yƒ�+q—âíîdz©J×4ªdr!àî/Ä´’H€H€H`<®»úªñ ³“ ý7�ë÷r4üˆ_ÎÊ*‘sÛ™í~ÛÆCö ßÃ6£“،݋®–hlU>F¯!!äGâ* � � � � ,�šcvæC¿,é+dTýá^ Å6ôd&$°ˆœ«g·�ŒxÂI �ìñ5íÔæ/)hlÝ(��”hìÆmŒió&kÛ:Å2&    h$ÐüCãÎB?—ãcº[Í_J•–Ë×:ø«.% ó]MUi^ç´JÛîš·ç ÜÌV€Ø™H –Ð+ÔHFeò5\EaI¶“*xÚUÄXµþXµI«”X5òÕæ¡�:Øa ”â¨Õ`½¢Ýó³ax i÷…XM¬F2¸”Àú Êk¡]Ò83'–\•öERe6é2Ö±ÕÃJ$Žj¬@ �,¤¬´¼úk´QE¯B•Ù͆™Â½D;Zgõq²PPØŽ2   XVížfWz>| sÔ ( ¢µ.é.Õ6šÌwD‰6¶UÈ7&­@âh¡ÓØË¨>šœç¾Æ}êfŽnßB‹ÆCö²`Z `W%VAjUÅ) Ì%°±k�Kt�KuA_>awçì.EfRIg-tš¾.ûêÕ—�ÛWÊÖåÝ¥˜„çÌK   X5­Ÿfçáƒ{F&ýX&_KôÎ él­3ŒjÄGòò²…μü>h•³�v zY�¬J!4º¤I+Ssû5¿ ¥ÈÔ -°TD©§:¨@3Q±•¹¦ÖK�3».j"_]>phÂr;Ï.½ÔP$vΘM©Uk’×À%­ôZ%%ØB`ó*–¯è¥Ȩ«R«q˜·¶ˆQ¨zØŠ@30Ô’P¦yø ÐZ©&ÿíœÌ:Ë’»LÍãLÂËFˆ¹¼T)AØ=´ 3®‘ Ô͉­Rè$   �Õ$Ðâ˜]ýé-$+ŸÒ:~8³Ÿóƶ—Ó¨Ì cõ±Ûר•G“Nc/£3[A*v�Âm¢-¤$#ƒ> \¯PP˜)÷i53Ä…c8ÊKø@ìL /A@|¢%*H­jI£FË­ }æXÊ7 £1�aTÐ%i'L5²é•’Ù1J4Vß%î«W_>ѽ”ÜAÀÖÎtÛˆ1 � � � ,�Ò×�_îV—}ªäƒ]—Fs¬Åûš!j˜ˆ’¼,:aEI/>]fŽ�IÓ $ÑÎ�¤‚ÔªŠK4Î6sÙ8R¦¶|Iw$½´]~ƒå¶óUÊ.¢¯9N%óH÷5Ì—H —´zé=jUB1 � � � �@”@ÑÓìò�Èø Vò9O4ª—¯½j2‚èÆN6žk¤pò›••ÉWWn U�»„Ró¸l ê|R3‹&”Öm‡‰N;ë^ÒNN’_U}‰&t3…#……6#&vxZÍ*Ç}ñéË'/ôöÙªzÞÖ<7®’ � � �@”@éÓìhq÷$>Õ¥>Ì棲0)—Ì_–oÐù”£¬æ<ÌxÑ.©™§·pý¥…PF}J’pc«_ï3ý§æ¡´²LÜX˜2ÔB]-ÑdfpK�#9}æR¬ðRY8*22†]–d[î.íÒ`1à`˜:%>pF0Ì6±µaÚ± � � � ,�æ§Ùø…Àn¬ûG:qpÎîRÚÙ.Ðgd5vƒ�qI¯F'°[³{·yWÒx‰9¡ Ýl/•…”»À*»øXÛpæhÆ–Hl'Ñ8œÇ•ÈeÔÙZ©ÆZAØ+\uåv0+v2\–h Žp°­C%d²¤q¨� ­ 3¶cØ+o‚I¬‰–´µÊ7jµŠ©PU7L_>NêžZ ÆvATS·5çÌK   XÍÇìV[­û°•¯ W%~Ôs²:M´ª‘@´ÊÍÓh¢‚¨j£«å�òJ·í…Il�WæW­O4vS‰&ÌD +’¡s˜©°m,Ñ.î-íZ—hAàÌ‘o”øè¾2JYr{o;†è£&™¦-*Jú Ä§‘s~þ(À| VKƃ˜ � � � ¬� [Î8K÷yþ™§Kpì ']wõUœ{Þò¹M?º­îqäô­8Ìú!{�{t¼V|Z‰£í.Ù×–[ù´/RL$@$@$0/×n¿'Äü z~|ï»Î�^3;¶�œ/\ÊÕ9ÿÙì¥dÊM‘ (žý†y'�ó0œÙ…H€H€H€ 4ÿи~€ ífñ\qœ£Zm?ê`‘¶r³…pîè–ÃÙ¶C¬ú”ƺE5VÏ’ ꦅužjèjÝe~07Rª6Ú(ïœZEÇT¯T¡æQne°Š®:%ÄÈ£Ê-¹Kè£Ld…6­Ê+±êjÕ6µªbÛ:¯tæåbÛBMl­�] wY®t…î2œG0�®Z(m2GÝB' âߨq)j•š¶"¯M£]zŸ'Ó “—h ŽnìpkN &N�ËG;f’ð�ÆêªÍ¨,Ìç}`îd¡3”CávÐÝ ¬ùÔØ)tV)´ŽÎ$:O‰&jޤ:ÔM“ÙØ`8!–Ð=Ô`i˜#¥&iÈœÐ`æ” H`™Ô?Íñ”p‘ªºÂóYhRÓ¦ò³˜!å9†¢³5Ö(ˆÚöžì8†”‡Ñd�“kGùFU÷½*XgKåK&ïR ÿŽ&©òh>šÄ$Ý�8«ÔetŒh2åÐo>Õ:•ïÒ=åióÛKmç’î2¥‰ŽšGeuÉŒyj)•o ¤°D“i$塃K†5tyüÞåò™îÕK®…»Û0M†²0S=duaf†ÔR4MêT²®F“ù]„&ðGa‰âa‚Š�fÓ âýŸQvYêwæü$ØKêÞå˹J«@ ùi¶RpŸéõ•|uù%C†ß;Ü6ë¶ïL:²Âl}òå%3;MŽÕDù1°j}�¬z¤çFêÑ9ÜWGs”Gg–Uä„3¸ <]¾Õ%L¾aF�µDWSåš—¯0�2?d(Ìë+V£-4)_g×75jt‡#uŸ­¼— àÚ¡Ön$£�>ª‘U—·¶u1:F˱êúj¾í²*ùMc£ �öuƒUø4–`ƒ)¥Î0Ø<©1lÞÞ›�Æ2y£M6Bˆ:3I M òi¶ý•³Ðû/>Ül˜)ñéQƒß­æ>I¸©Æ‘¡ç3ùo‡¸A³˜¼#À°<ÌŽ�mV;H£^LÄ'œ!̔쫯yJz¹ Ýe‰C¿šp€0ÓWÇÐÙfô.ØŒí««%­ }ÂŒõŸuv3³ž¡ÜœÛ¯/›Eà6î&q—Û¼�![fò3—ß÷¼�®†Ýë2%½F« ·<ÚQË[ÊM•oŸJÈ(}š�wYµÕÔ7ìa8 ûâþî&“Ë.ä5¯- ¯ÌÐã]ë×Í 6;ó:gT¦X/ó²üjÔP’Z•ï­E ú:òP:Á¬/çÕ7µ/I zÌ7öjÈ0%šg­p[M# O×y(�@.K4"ƒô¡•Í@o“aÜ(AaÇÐ|F;�Îo3Ú4ÌÌh˜¨-ºGñb5Zk“PF}¬q¹%è‚LyPÑ®Ü\”]f+o4ë]”O2S¥lsž3ÝÍI _½³õ÷ûkÌeìo4ˆ­Þn IF5V …N RV¶¯‹�§®Â9ºêì% m²Ú¤m¡mº¸q/ g´}�MîKtÈ5µ¶©ðVAVIÆ®F·ؤµm÷b"3;Ÿè.Js>%%ušpæÐ'Ü…/\U« =ÃLTs»Š¤5±›�ÆQ1l£«â£Y…24Oi$ïl3&¡m�7†:c˜èj�Ýû² 9G'Ÿû¾d*™A^ºq½td5:¼“u¼ÔÂF©|ÇvÑrpˆ®–$1mw+igMB2V]ÍlÍEu€&\ÅRÇ1òC¶Zµ#¡ÐNnˆ­UXE&*Ã* �j•ÇìðWiõa¡3—K÷[€¨C(‹:;«P“Ï u+£Ðù—Œ�˜´êŽòŠQÛØ:,Am— /†]fÈÔê®ádúZ ùK&5ÄH€¤ > Ê) /Ⴥg[f}`X ªl;$»©™]£pi*I' ')Ñ„U6ƒÖè%’V)±ä!sK%—°M™¨ µª-¢)Ѽ~-f` Ëïnà©2ítàÆiÇ¿¯Ô{£qk8£ZÂ-°SUï®ð¾Û^.n5Ä£H¦Âå£ *ö‘ÝUøŒ– #�Q(=fGeÚß¶$�¼4)�ìScÝp*Å�Bõ�­ˆ5ãÌC™mªqJ£«%_£­K EƒY}ÝHQ+k;p ,¶ï,†ŒzÖ1´£v�u†èxÝÍ+ì$Ñ»£žX²zYr—V,%XE�Ÿ°PæLl#·½”.ØNTÐ1Ùvž’vÑ™m#ìÈ1”¼¼lÒÆÒZVõ«Ë—L¥u�Ø9¸K+v#uï&ÚºD#…Øô# 0XtwÑäŒ&/ìUr/dÂü¾f´…¨-î~tƒXµµ2|Tl5mcm䜕Rï½2³U÷šÑ¨©y´�l$%ÈìQ—l¡ºÉW›Ts4r†ªÔUWå”_ÚaܾJfÆ~­�lAòòrÉ�·Æv$°”J�Ùáæg÷ Ò:K,¿ø»§d¶°Dcõ.Æv<§i{Y7&±í4Ùãlj^gXWe·S×1,÷oTΈ|cß”ÀÁw—¨Â»(%€Rƒ�3¬²Ž†›AMä«ËK£Œ+±�9Œ�Ufž°¶U¦°‘Pî,¶mK¬9jÝxVcã.í{© ?I£&,o,±œQܸ÷õ­¶-„¶Xûrï ^¾º|5´9º-Ȧêö%U² çV±/ç°6Î%.)¶Ú®KGçPoÁF IDAT)—ð¬{´%]öµ”@F{§8Ø*(=f»ß¶¢Èô×<~õ–”D}F˜\ÊMõÅy™nt[&úÆX8£z?‡ô$ƒ ÛÞè«f4Ëå‡ÌضZ·ÙµÀ<�½T�Ÿ¤DƒŽ ¯Ëy‰ò»r¤|¯BÎ#ÜW+Â"Æò@Ú®ª³˜ë<ÚEã¶Vuz7@¡ÉìæŒÎøC’)D±Ü2_îûËÝÍ‹@é1{^ó�¡o÷ß÷ûúFý}°/ó!QWÌ\Q2ÌŽ¢7e­¥‘Bèh“èä%œ[æÛµÚKÉljØcÓV–‹Ë÷¥í‰›•aûNÖx‰B놪ò™Q’ ò½P�«”hPRØúY…3Êz™°¤W#ç7m£§Ó÷x©Óæ�U‘ÉËÉ$#“¸d�³u±ê}¶ŽÛ,ŸG•£[}S ¶VmÒcaÇššdF¶©vÌ“ÀB¨üïf§ö†_fRÊŽy÷{–»ìhnËáܸ#QêË–ÛXVí¥ÄaF“yg²p—Ñ]î"¬ 3=2Ôm‘z?¨8µZ¸Í¼,:O¾«¨ÍOYXˆL_Aï½`˜ßcj~”CfdI’ú‚¬"[å.u)š´U�é<зÝ~a!d˜!Ì`) $5d*¯…ºZ¢qäûʪ¾\U¿—ÒB Só÷Û®»[jNÝV[í âîãutp“¸K˜Û¼�!( ”•”«йZ¨Æ-•_†åa&ï–O S«)ϰ»Ëಭsª#òpFf^ÁH&éwŒ~ÝæukØ—fD`>O³í/˶¿¥Š^Ë­‰ÒikÕÈÔ¶°1 ;ff«B42ˆîºbæÐ§í®ûeèæÁeÛ©j¸/€P×ËŽjc¸‰?Z¤wZõÒy¤$Õ× U: .UÜjžÔ…ùL/L^¢ÑvP¢;L�É@!2£J å¥K)ÄùÀ–ÛUÒqT€U 5N`ý�U÷K× —Ú—ÒÈÆèÛj6ç€Kk‚¤¶À¥Õ {>@m(³K6†2Ú.šDII`{µu½–[mj­R2«)µG�—:Rjàpk(Ô%\º­!_·…’yl ££ ùhPâ`5§ZXeJÃ&Á&ml»äç±U©ØºÙ™1†¨‰•IÆ 4v×:µj}\ /I`ôü4»ñWcê—b+ÖQ“h²•íLÅ©ñRù™3wóº]§ªRùYoSú†­£É'ÑŽò M­õè «pSº”Ê£0(�TmÛ|´E˜LÙ†J—I¦ò®¼ÕeÔÓ%Ý¥ú§’’Ç«Õ$åbñ�ŠSù¨¸0©{qb—t—*Ž&á#«ˆGèF†8ßKW®hÒiÂKüÞ5̾Âl&:C˜,ÉXÛL +qõRÊ<•O5}XM¦4šäóy·ŠÕÔy«ºª”§ºáýŸ’uÌ7ÎD“�“`/uå�þ�Àذ匳tçŸyºÇžpÒuW_%Á¹ç]€_Båû”ó—\91*I€”À~»à zû¢c“g “$@$@«LàÚíW℘ç çÇ÷¾ëè5³cÛÉùÂ¥\íói6? ,å[„›" ð·»�É¢gxOýr~  �¢?›­>¡ÝSkwê™ ~šœÝ� Û±ÅïB#ù}fAÇF¹M#ÙÂŒÞ0¶Ὠ¸G,!  �E!ÐçÓìEÙ3ç,' ígÁòB*[ çV¸(®#À_ËuÜfQµp÷‚¿GÍâm@O  �%&Pô4ÿŽ_?àrä\ì´6ùØ…ã�gGvn¤•ÌúÛ¸•É\ÄÃLk»Øx.[.ljç´±+—ßvtÕåÝeÆÁ)åÒîÈÆmç½Eù ¼íÓw¹ :ärß‹î|»•lD$@$@³#À§Ù³cKg ž±Çs?x/Æs/8 � � ôN èivï]iØ�?¢ug8¤ï×0´ÉyΫ܅ï±üÝ'Ÿ<®’ � ¬�ÞŽÙáω¹ ~LΑ ¿%‡ÊPãLª/Kzå5áªãfV™Mf2ÎÓV©9á’82N‘e– sg>’KL‹yÜØ*�¤SFe0‘À $“w@-dy‡B™Ú†Vh×=À$°ríT I§t2”`˜Ô`žPÙ¨ âæ|B�è…2L;ë qÈ^œ2º»Ô´R -„­+q]dUõ�¡Ð)£2T…>v)£‘k¡UXµ&Q¥DãÐÊù¨@’N ™ä±ªI”¸ŽÎAW­ôPbK” Pè¬à�Nc—“ � �À8 Ìÿ‡ÆÝ÷Tw©Ô¢ÉF ò�ß›mŒÂ¨­KºËòy¢…h� ÂÂ0“)—¥B½“¹Ë| »jÙÚØjúŠ­¿�áÝEaÒÊlœ25aµ]‚¨m4i™Ø¸U÷¨sa2*Ëw·sÚ8_U±�Í%Ý¥v‰&ÝVccÈÂd˜q˜´Ll çÆ@Œ6å=-¿kÝ•Ñ[�²�ŠËïW´<Õ‹ùjä¬èÊߙըYH$@$@+H`è§ÙòÝ~¸‰~ƒ·‚E¹%%ûf/BO©FÙ3ÃrtÕûРÛ;»÷˜C]×È™¤î—“ÕõbU#rN!ÒwfÈ'õŽMù0O$@$@$àôù4[¬ñÝ�ë'—òý/]ubY «f” {él¶�Ó¸K(µÐ–»}‰(ï1ÍÃL�í ­À§P_- o�½)å¶¡OX[¢ «ÆŸqûr—ãŸ?5a¸ɸ¤»LYõ’²WÉÀnwYâÐ¯Æ à.Ë{U–·è]éfv—½·ÌÐmÄ]¶CjõÕªŠb  †ÀÐO³å¼'ßíÞì «N#z+³åÕqI¯�%æé}`8[8‡½Â Ê+Û±_çŠa2%2›ŽjV}«±K|27¡FãÔ0Vi56ïÌ{¿ÌìËŽÔ{ß¼¡%�b˜×”ì«D“ŸSWí$)}_½RþmóË:O¿û²w6õ>lK>Ô÷;sèfì¾ÂU›±J™Ó.IlW5¶šá÷åÆã% � � I ç§ÙáwÖp3ò½Ö¾œ@–\F.£ÉPÖ6µuIw©-RIÉ㦄O´°cÒ~úie%Ûi¥Ÿ»8:p4™5Zâ’î2o˜_Í[EW£É|—ÂÕ¨s4Yh8Yt .é.uòh2³©¨>L†ñŒ&3½z\жŽ&{lš±Š¶Ž&3&²-‰&ó>C®FÇ‹&;NUîY®ÌŒ5‰&3&\"  �… °aËgé çŸyºÇžpÒuW_%Á¹ç] g³¶Ç3ÕG¿kf–‚TjÈVûj%NulÌk—P½/¡lv™a¶?»ùéL$@$@$@$@+EàÚíW℘߸žßû®s ×ÌŽm'ç —rµÏ§ÙnÉNÊÂÍZ�­MÅÚ®£O´)6]•yR­QhgN™XÍcìE÷%—nà7ZU÷²VÎDaZðZe£ åcMª5¡ †ì4îË GçÁ*Fr2HÒ)£2˜hШ±ë�Ø ¬yF Kaa˜‡ œÃ*,u R­ÑÎN‚«®5’�j¬@k�,¤¬\k^’ � � t$0Ã�~ƒï8.Ê�¹»Y˜I%á©A´Ði2—Zî>ëdôs\ wfÂñ¢[ ÃLhfª0Ve2(�Ž-…*p«îÒúÃÐ&=®ØT´$štpB�˸K)3ê™Ê££¸Ë¨I�&Z…1z*ÚEK “Vfc»/›·14Ñ$VgD[G“mÇèÅ$ÕÔ™»K© 3©¤k-t^’ � � t$ÐçÓìè7o{b‘X4òÒ¤2½Æº�T>ºIªlE¬gÊlS�S]müªå¬Q?w�ÕíÝ.Éœ�[³z×í®/Ì,�õ´Se6-Q½|�®ZgÄ)Ö¡DÃ^‚°{ݦ¬� &&òrI{)«*³IÉà2*Àª(ñR%.5°Jg½ÕH•äå¥I BŸF ª´v_íÌÚ3ÛÉ­ÌŽ� �@òòrI)´X+»„¼Õ vJÉËK“úU.ÅAcX…�T™Z‚­ œ-j]#ÉËË%Ã.#%.#—ÖDâ©ïº³¡@2a^’á Ϊ—¯.#%ÈHÊÔ³Dvg†H€H€H  �>�Ùáö»{¸Ú%c�%Ö�ÎÐjd)%³U%«·±ÎàšZÁØb7jfï�[ ­ê6Û—�tÇ[Âyb°ÆMA‰ ƒš9nG:­$StÔ.›äÂ]G{Ùñ¢1oÛHJ¢V¶¶ߨÎúhÜXv©ËD÷UhU2¤ÝšØºKÉT˜D} gîKV2vE¯�O…I´Ä:K�ßjÄ$%³þ%«gL$@$@$PG Ïc¶û–H¿ÇãCIIÔglIÝÑÒlÇâ]Ä­5¾ÁÛTÉ[¢DcïH>ÆÞó²­ö»r¾;Òf±¯Ý‚V¶m÷5†{a7(óËHòÒ�H «[Y4.”ÙÚ’ÑLZî]Rb[0&  X}³—ƒHõ.–òã”~X\¬­~ÀÍljw]ý¾­.̬ö S÷w9,é˜f_‡¬(ᆵáïEÅ6£%Ý÷µe’H€H€H€RføW ¥Zâ‚”²cÞ}w—ÍQžÚEô#©$õ…òÙë­.)l!z§ÔLjƒNÜxÙvžFè»H��ʇ›……,Í=Àü²Aû’Áf4öŒlgJ2œY2.é.£ó”h¢…sL9sØK2a²ònŸ5ûK$ÐK ìkF­m cvµÇØíË]¶j¤»8´jG1 � � ,=�Ò§Ùö»¯ÆC~€hÛKô:¤[ïe[«òw@Ø«¼Jg‚K;6’Z…K«�a&@¡ÕÀ« ƒ™Á7 .u$\Ê<6Æxvò¨@•"ÓըƚÀy¥‚ ŸÁ‰ÞˆVÌKfî¨i5�Ší¾4îкYŸ’}•o»„Um{Y7;s_|ÚÎîhv™üÞó}Ǽ¯üä\%  �!0‡§ÙúÙ"üDâ™%hƒ¨I4ÙhÕ(ÛÐ9šl´š¯ ÜÅ|ç™Q÷è­qÉŠT~F£ŽÖ6Ê!šì¸…=£V.é.ux—t—7ØKyãHQA4™™§P•…É0“i�_‚«/OÚª.ñò}�ëBƒµ$@$@$°š6l9ã,Ýùùgž.Á±'œtÝÕWIpîyÈgý¸Ð/õŒ~ôé·ÝH€H€H``ü70p¶# ˜)�k·_‰b¾‘žßû®s ×ÌŽm'ç —ruè§Ùüü±”o#nŠH€H@ð{ß$@$@$@B æÏf+¸ºÇÑuU¼U Ðãg8µ‚³‹xwzbQ0vÈÙá¥ý]÷kÙ:è­O¸júÂ2—÷6hwÝvGåµh'-Ê«ÚÎC= � � �À\=ͶŸ0e4‰U3%0*ø2̨æé‹ü²î«/>ô�9þ¬k½â¿¾ê U¼åVœs1–� � �@/šŸfãÓ€ý×íš”¯6ÙË@4Éà}Á×{§n¼�yìùU2ÌóYÄÕź§:­pîø ¹ä÷×B[ËW—_Ä›>ØÌ}ݯÁf#   �¶š�Ùêè>BÉ%>(´mI}G€Ï�¶I²œ–‰€û]z˜­á·£aÚÍ´ËÀ{™Ëýš)@š“ � ,+�³Ï>{Y·6»}•³Ý"³Vºj3¶»Íç}¤ VN ܨыX1ã¶€×Η¶í®ÊWMêWMZ™›—Vc7‹8 W¨Aþ%ªl/)”¼¼4©_åRògœE ÊPƒ¼5Ѥ|µI×(¥ [ØŒ3Ô%Ì�Rº^Ðà ëУ >R¢IùªIù*±¼ôR=åRdôÒf s…šG¡\¢VËåR^¡Àf`"J�ÝWä]ÕÔú±æ®°âR µÊöÒdï½ÊÇÃT¶ÄN(±hä¥I D©±–¤òÖ1 Õ¶"ЌРiejU¢Qeæ«5ÉÈ:.E÷%ž’—f@`Û‰—*ÐLT ey`}l/ÄV ¶’——MÚ¸¼/•$@$@s$pÝÕWÙStI<ÇiÇÓºÝ1[çæ·É‘Ü?ùø2ð‘[�¦m!¸·�»7—‘˰—ÕhjJ³>³fèzÉeãÌ%šè6�êh/;³ÆÎÒËúèe��Ô–†íÂýö•)™§—^á¦lk]ÕŒSöÒ½Ädv}­³ÄvãÌj$™’A_¨±zÄnײL %…÷˵ maI—ŒÛ¯»TçÆ‘œ jÒeHÖ’ � ôN ä\m5½° †5ÇìÝêøÇnõ�VZU�'¬&€·DµÃð…òå¥oc d�‡)”ÁGôÓNU½`’ ÚΓ±óRÉ6�Z7RR2æ-Ëlº#7$ÞK.?»KKRºÏ®Q�Θy$ {Ü­H€H`EðivÝ�æ1»ŽÛœ«ð Ÿ`æ<ÛÏ›€¾%Â÷Þ*ó°Sÿp_�ì:Îø–t�³"àî nîŒú¹v®‹v5³žÊ�á.Ãyò‚ùNëfã% � �@Š€}R]§|V-ßî¯@“o¢�ßGW�àðûÅG“%»Ø—"u—™¤»®Ð]¦|DU:óŠKgë.+ (ékHçã.u#ú6–%]�¾«u©ûÆKz•tÉσ.Ö*³;+ c×Ë]†ú‘dpÌh0Ä]Ψé¶CnÄõr—å›­. [ˆ•¾Â%fH€H€&ÐöiöÀã�¶]»§ÙòmOv2ë�M£…5†Áôôr`%nÝï¬ukû½–[¥ «Œ÷¥£½`2nìÀ[“̼eØýžêf­gù$cÛ{ùäåJK¦ÕCZ ÉÇÎY¾»:eù¾Ê§²JË9Ó«Õð´³3´2§˜H€H`¾Jž`[Í|§O÷vO³Ç3÷ŠO‚.càÐË0Q—t—ѽ‡š’ŒXÊ¢M3ÉÐ6Ú+ãP¸mTXëd}YE}òÉüª�3ª´‚TŒB)e*-tI½DÒ]¦œÃ<ìR4icˆõL•5³T>Ô$š,÷Œ*£žÑd´¼m2êl“6Λ7*CA˜É·ÐÕh•MÚ†Ñ$V� � Œ�Ÿf×Ý… [Î8K+Ï?ót ô_EHpîyÈç$ý¨TgÍ*  �Õ$ ß;xˆZÍ»Ï]“ � ,�Ý»w·:iËÞ݉rǶ“— Há^ø4»e$@$@ExÆ.ÂD � � ,�Vgl9`/ž†˜±ÝŸÍb¢žzÌåsž}ø?£Ç8ýîk€� ïg¿û*lZ"¢’i©!�1˜Ñï~cØg   �U#`ÿÜuI¼j|RûåÓì™Öy{k]ܲ —^ÎÄ]¶œh9åd²œ÷•»"   (#À§Ùeœ¼ªë1{vçqž�¹ÇÐù£Êc}u¶Œˆ¹. c\×”E¹�ɦêȺÔv)�8Î;…íì¹£ëäç=û“ � � � �À@Jž`[Í@c�¾MÑ1{í9Dá2úm4 ÎÀ3í‡.Ýùà ÁL'_Ds’YĻƙI€H€H€H€z!À§Ùu‹ŽÙQëîg¼¨-’r¼á 4\2uwA«`¢æzYg(R./7'/I€H€H€H€H€—€}R]/îNû�¼ò¯@ÃaÌž¬�t#ª&z´e4+ëom!@2¥TA¦‹:7gåVÅÐ 0Ã�Æ–ñf1�î:tŽæ�(Ô[þ–OJiõy�uCŒñ0’.9+·*'€a>hôékž°QtæPî«D“ß5WI€H€H€H€V„@Û§Ù¢_2ùm=Í–OêúR/|L—$Ü‘DfvA´W4©3d–D®ÚŒ�±#›”—ãúà?XǺ�DÇ‹&Õ?³T8@è`36†¡MJŒK�q ½]’¶ÖÆð�&±ª�Ó¸Ëj�ëÂK    �•%PòÛjV”Ûxë§Ùø(�3ž8F“6ïº6^Š9<�y;€ö’%—Ô¼:„Kp¶KðÏÔŠF^¶ V]ñŒ–÷Þ(Ú¥KÒ]” IDATR&L �¼Û…äåå’2ƒ$u’p©Õ„¶žÑÈËVåÛ‰X®dÍ&âce¨m;Oh‚™ái5êßJ£›âW    |š]÷6hwÌN}”×Þîó}Ý@…Ua¯0#Vù�£cç}ÂñT¯�¢µaI_™’ÝõÕ«£OH&ÌH‹¾väÌÝ¥î½Â­©^ÑZ[’ñ�Ì™¸ËÆyàc1 [‡ÎaFLÂBë̘H€H€H€H€”€}R]“›hqÌÆGóè÷U: ­<{¼jÕªûRÞͧäfõ5sI/jH€H€H€H€…Ÿf×Ý©ÒcvÉ¡N4öÃ:Jê&ë¥JæÑ1Ül­Ìí¦ZÎN ¶u³)ÇD=ë ûÚ©&nn¶¾üáÓ×6Çæƒ f‚¾fδà � � � �Àr(y‚m5˱ëî»(ú+Ðô&Íð]2úÒ Â¼¬F‡syw-‰&ÃBÉ„I©µ³E­“QÛÆªÙ 0¶VÝK­2>è¥-Üeyß°P2aR 1Ltµ¼c^Ù—ùø}dB7¤»L�Z«óµ)1ó$@$@$@$@KI íÓ쥄P±©æ§ÙøPŽóO´�¬B©—Á¥“…nV ±m�ñ±2kkKR«Gl ‘Ô •�«ír 8HmMüÕ9%‡ÇH²¤±:¨2ãceÖÖ–¤4Vß*¶æ®°U¯EôékfÇ�—$@$@$@$@ËJÀ>©.‰—•CÛ}=ÍÓ’ˆhì+EV]2Ì8Aô2ZM¢<¿ YD £É°vv™^p&îR†/É”ì1ô‰š[«h‰t‰£æÑd¾K´$š�Ot¼h2?3WI€H€H€H€V�Ÿf×Ýå [Î8K+Ï?ót ô_QHpîyÈ“I}8Yg-UZÎñÕYH$@$@$@$@$@ó"°{÷îV'm™Ó�(wl;y^ÃϱoéÓì9ŽÈÖ$@$@$@$@$@$@ÃhuÆ–öð޳céŸÍ®{"­Âòèê81�gª^~@·Àíkw¤—�Ýœ�—Øà,vÔØ}.‚Þ9¯ ùÜ86%   �1(ùóØV3æ½ 9ŸfI»·^8õæ¸fTg+Uu…ýO7h$À÷j#" H€H€H€HÀàÓlK£<žÃ1{u0–߆r%èu?ÙŠ•}é ÝmË÷Bå˜ È{cÌãq6    �Ø'Õ%ñ#-D‹9³‚˘‡Äù§ß#1lǼ÷ÂÙ–i/…[¦ŒH€H€H€H€z'À§ÙuHyÌ®ã6ç*#û=iÏyWlO$@$@$@$@$0&%O°­fL³Ïs–æ¿ ÓÙŽyX•À 4•Ù‡u>Îv)/…­â’¯m9Qkî2z©nˆ­Þ6‚@’Q�h¡“…‚¼•+Ç0¡OJ‰’T�·ÒU5OÅâšH²—‘¢&a»¨,µåÔÀu3— £;d*cg¶z73š:�–cnV&«r©ÍÛ% H€H€H€H`9´}š-úåØxÇ]”>ÍÖ�’hæ.%fRI˜”QóòòeUâÓ/|z1I¡væîRªÂL*éZD … à”è£&®0¼ŒVE“amc¦ÎÇU¹KifRÉÆ CAÔ<”!ÕG“(‰Ñ’h2Zn“Ñ*—Ä¥6¶>ŒI€H€H€H`9Ø'Õ%ñrìºû.Z<ÍÆ¹E?YÊW—‘i�ÑɦB�¬pÜÐD +| Û�G&{Œã€D5Éh;ÛKbÑÈK“H�µ]*…ê[kÆ™‡2ÛTã”FW3_1LF“_j5sÞJWíHÕû+ø„&Ñ™¥DòòBaÉ´¶‘êÅA‚î>êf¿Ê`b+/�PYÕØÉ쥋óµ*Vg‰�ù´÷zwgk/K4VϘH€H€H€ÆO€O³ëîQé1Û~î”X>PFû¥òQqa2Ó®ÐaYe mïN—ÍöåÎ`�S7ÔjÄ!%³æ%«G tšq­!k \aõ<®Qµ��'câ¶ïº×]fÚå Ý0v ùB·Ú—�Ø:+×H.uH•Ù8T2C$@$@$@ M ä ¶Õ,ôf{¾ô˜]ݲúCsuÇÅ-lÅ '�VUNI¡h¤‘¼´°¤Ä¶a¬;rƒÉ—`knS­.ç²ýò{¡ÊÔû°Ü§+ž ;c   ˜ >Í®ÃÞç1»¯O¢î̃ÏÖu;\Ê*0é‹ùRRJmÊAÌ”¾{-$pÝ»›·uèk·ì±ÕdÔ$š,÷Œ*£žÑd´Ü&£U.©—HºKë6LŒIl»hÒ R±ÚWJ–ÊKm¸MŠ,ó>Œ–”'í uUÖ�1 � � � ,>Í®»›¶œq–Vžæé迊�àÜó.�ϵúѶκ¢JÛE?éV¸±¤¼)½`\&“¹¼%æÒt™î÷B$@$@$@vïÞÝê¤--܉rǶ“+ú.zIoO³ç�àÙ&Š…É� ð}80p¶#   %ÐêŒ-lrSýüÙì¾>ÿ['·ï†ág°Ýã^P‡»–¾Ñ�G“�CÎT€áç;[/7b¦ 2æ#a˜™Ð-õx¯Û;a/mw±Ðï1ìºcŒméuì;ßòÞzÜ� ïH‰å H€H€…€ýs×%ñ¢ìkÖs.óÓlù–~×·@£«Ñ¤­C<‹!«=¥°ºv 0erÎß©Qñ‰þŠˆ&ó›áê¨8��ÏRŽ}뺤»TÑäÂ!’],ÇFŽ<& >Í®»ý<Í®ë­ß·Â#^çÖ¶ ß5íš”¯6ÙÖy¦z¬¯!íûòì¾w�ÄÎæÙtŸžÝ­è0~«|»Û»kä.Çÿ&á„$` ¸7°»T¥KºKëÆ˜H€H`�ðivÝÍšçÓì~îñàZw? «�Ž*_û¨ž=îÅÉúÚŽ³ååÜ ¬ø�Õ_°Ü…ç<a¶%ïçÍ0ù+bÈlA$°Üì“ê’x¹i”ï®ô˜~¿Œ~ër²¨F‡ƒ2Ô` Ûh«±ˆ�‰»”^)%ÆU óëÀò5ÜK_£‚ m/»ŠØ P…Ud$•�…K¶0Ú­ò3kǰ]~$]MUiÞ: K°åÆ Õ…è‚L´�“E5êe¨ÁR¦W^cW‡�ì$©UÌÐ%ÍSS!�va­,9YT£P†,ezå5vqØþùVÖÖ-4‰:Êì$.V5OÅZÒØ åN�Üz:�+¥¸-T_†¶h�%èj°” På4Î_e’tz'Â%»jÛY%Ê­Ø ´ÐÊ4jl‹h,&R¥VZnc[¢y›qíPè”QYÆÇ.1&XemŸf‹~•qaïE?4î~§Öâ0Y’AãTšˆÒ%ÝejžT‹hžîûPT<’$FÅðýµ�&ó}S%©|Þ-³5Œ&3&º”ªryw)µ.ã.óæ�Sõ%�wÞ<¡gáÌ¡,Ì„æ.-qIw©Ѥ3�^æ÷-é˜Ä¨Ž9òÖ?L–d¬C4MDæ’îR}¢Éh‹VÉ”m*5�ŠÃd˜·h2Ú¥U2j[˜ŒÊR£FÅÑd«ùKÄèâÞ϶¶Dcõ�1 ­2L†«/ŒÛšDõÑd㨒ÀƶùФ­µ1¬¢I¬2 XY%O°­feA¹�7?ÍÆo»ö{ª&å«Mе½LitQªÀ„Œõ�äå¥I ààj¡±JgeK§²$yyÙ*ëÆ˜H`e ðivÝ­o>f«¯ûmW.å÷bײDãJR—¡¹Sº^²f\Iãew‡Æý @i¦“£K—á{1)Àõª†ã|¢Ý�¹\†U%š¨ù“%3—h ·Bs…®—¬†W2ªËÔ´./—!ŠMáfCsWèzÉj˜q%Õ—�Ã:;ŸèÀ.)—®ª°W‰¬°W( Í1¤C �fR2èû J•h ç+·Óè~{é˜êÕ8ª›°z-T7Ûœ¹\ºîå|¢…¶c öIuILhJ è‡ÆÇË}_ÃH½Ï {Œ¾¢�ðÝQJ¢‚Ù%ÛvĨ³I�£ƒÕu¯«šõWÇ?z+Wgûƒít^œ{ùõ¾çÁøW7Zå½WC›Qá’Ý‹èvf„޶$@‹B íÓìEÙ׬ç,}š=ë9¬?—·4¢1>JöÈJ=�¡»Œ“OFm¥[È—·]u×uxæ¶{\2½»eK¶»ñlg<œ{üõå6U÷ë½Õ=B \÷V>%bñ×vÑ^®»*KlǯqûÿÖô^¸±ÇÿÆà„$@ó"PòÛjæ5çØú–>ÍvßçÜetW%šêÂÐ\2a2ê&å›Í}¿Á6{œžN*ïd¼TQ\.é.£…QÍ��Ýî2:I‰¦º04—L˜ŒúW$Õ¼ÿµßZNIÍàZ¸ËhU‰¦º04—L˜Œú�9é¶à.K&×ßl]¡^ºß‡£š’Q Ì�mTœJJ­¾R‚ò|þý¬>%šÆŽë#Oÿ ÛÆª€‰î×]–C(,™¾Ê�©$X2|š]wC›ŸfË·LùVÜõ«mƒOš ’w[Æ%½J4ÖÙN•F5©Uë6÷Ûé>-¬°)ë)± ò2ÔZ™õQ�]E‰ ¬Fã¼O¨±μâ²Ä-ªÁØ% 3šè̶#E•uÉÌ<®��½œùhPÒ«DcÍíT­†±&=Æ:O8Iù¾ìŽ0Xhˆ¥0(éU¢±ÎvªVÃÀÄ: é«ÑØö²«®—m÷…ÂL 3„ÝgÑKư¶ÚZ’a÷ÌÀ=.i_Œu.ÑD ‘Ä–mqy`)uŸÊºY6_>[�d¦v¤Fó¾|Q@$°ì“ê’x9vÝ}EO³£¿}G“n P#ßÂo¶*,‘U—t—Z&ÃŒm´Ðñ,¶z†™ð^D3–mÔÄ zŒ£½¢É|ÓŠºZw©2—t—¢ 3©$úöTw ùë=s_B\…w9,\,ÎáüJ™¥¨O˜ 3…œ]kõ�›»T1Vmm4i�qèfÄ$šl4§@öb_óR&É ]�&3&åKQçh2ï-‰&ó>\%X|š]w—7l9ã,­<ÿÌÓ%ÐE!Á¹ç]ÐøÑ­¢exÆæoëYB A€¿Þ‡¹Mä< çÅí¢ï�ñ·]”9÷�ÀÉI€H ‚ÀîÝ»[�´¥…;QîØvrEßE/)zšÝã&Ý·ywÙc#Z‘ Ì�€ûî.ç>ÞÒ àÀºË¥Ù&7RG€g×:n¬" P­ÎØrÀ&7%Ðüg³{'Å�€½#¥! Œ–½skÈy΋Øe�Þ 4ê"¾83 � Ô(ùóØVS×eùª†~š½|¹#     XJ|š]w[yÌ®ãÆ*     XröIuI¼ä8Š·Çcv1* I€H€H€H€H€H`•ðivÝÝæ1»Ž«H€H€H€H€H€H`É ”<Á¶š%ÇQ¼=³‹QQH$@$@$@$@$@«D€O³ëî6�ÙuÜXE$@$@$@$@$@KNÀ>©.‰—GñöxÌ.FE! � � � � � ¬>Í®»ÛÍ®»Û­ßz¼G¶§ÌvB�•b¶õÀnkïh{wγwÍԮ͸>¨Uì�!‰Î³ž´;ˆÍcx¬YOõë�Y{L³õõir¯ú±_»6ÇT?]X+t1²{9Vë�™mO�×®MÑ´—üßÚ?²óìQLÿ�Ùí�Çz ÷ž¶ÔƳ…ó¬µ]Ò^áÉN§>íA â¨Æ �“…‚¨•Ê´VbyY¹Ts÷µ­Æ•ÏôRg¶j;—�nÍU•h¬¹ÄÎÁ­ê¥~ •Ñv)OkåâЧ¤W£&Hß’^n¼Ô%¬ ‰OT™ò—¼¶«\“À*,�48l�¡“Y‡hìÊUšäe²*%ªÑZÛ¾š·׫BP7³V5¶Y‰Æîˆ1 � � � �@”Àœ�Ù᧺è”uIg.—�s¥Q( »—hª0SâS¢ �+2Ò¨¢*ZR2s‰&jî’Χ¯]D}Jz5jBç0#{t>n×ý^΢Wᦠe Äíº—±�ItíŽß= AàÑi�ÆÖÊ’¾$‰.ë¹È?�,j%eVÕX�êÃfN ˜YMoüµ­…¿âêo]öÅôÉIa e$@$@$%ðË?ò„h>š<õÔS/¾øâèR4)ú×¼õNùOS«m[}—*·‘¡�Ù®½\Îî›u–Ÿ#í V£ÃDe®ÄiôVÚK’ÈØrÄ*Ãe4(ÑD ë’ù� =Kf.Ñ”´‹úô² éú4fDàÞÎGB�È¢É5Ñ™;z¢Üm*¨J'C¹ \­»´Êò8º÷òaT©“D«¢I;ž”lªã̶{´�Éꓜp≈óÁ…»h7Ÿeçq•H€H`ÆŽ;ñE©×n¿2µÔ1?ô1;úÁÎíA?GâÓ^I‰s˜Ë%žK÷Ц c/ çÆ�ÊŽì^°ÁÆÂ± ì.Æ6[ã<2|HÞÝšŒÉ¼öΜ²b ûêÈǶlfÛ”ñŠxܾ.ùäuÿý“7ï³ß÷÷Ù÷>�{tßÇ=ú–_xéá‡2§½á^ôŽÿ„K v½éÌÝ¿ùƒ{3;¯üÛ«Ÿý[§vßEïyÆkoÞ›ï;Úýò_¼þœ“6íü̽âÜÿ·osú‘ � ,1=ŸÛ£x˜ImècvjŽUÈ»3FôÃq‰¦_Vø¸ïZ÷Ûe7»—a:öÕ§¯¾ Çàã6}ÃËœN6ÇÉuÂpžÔäùQC§w‚TÉ[¥“é¥h's­S—¡OT óB}Ô„É…& óëO>`_9cïÿè>ûßý-ÝÑõÿzЫ/±þ­´gN#ù¿Ù¼¾ÿ_ý3ÇÎÆ›®$@$@ DÀ•1væ)·j¤J4ò?-/?cKùœÿ»Ùؤ ðé �ôu‰Ï‹jè.Kºh‰Ìé^RºI/5—*× RWÒñ3 # ]Æ]B6ž{ÁHaKù ܬd\2©þNmZ¢‰Î1éfv—åƒU–·˜‹²Ç}‰^º—Šwµ88êi“¡Æ®2&xèÿû®Ä‡ºÿ­÷ß}Ã}w޸󎛾q»®Ê�ˆËŸË–øIÏ»O3™¯ßyã~û¦÷|ûÓ?éý޼û[7¼û›{þ÷—Wü—ÉãþËø¿N‘Õ¿ø_ïzàÚw}ê “ý^õŸoþÒ;ï¿ø?ÿÚ™¯ýÆ—^ûVùÃàg¾vç5oßyõô÷]ôuÚ|ýµÏ¥§>ÿÿÚüþë×ü' � � ´#€v«3¶ôh÷4Û~ ?çÙU�CM»m5©mǶ½D¯åÖD¶µjsÏ::B6*Ñ„ð:@_1שl¦Ú¶U¡Ý—Æ:I+×UÙ.™½Ã¼£íJ| n úb˜o”™…v$]�ñ‘%'ì²dòü0%û*ï74 áäÝàÊ`U¢Á H@>_uÇ—÷ý�G÷—Ÿßÿ‘}÷ˆ`Ù=}D½öe2yʶ¯ÄA=÷ç¾sóÏÉÒ}½{ó{$ßþã?ü­çN&ן÷„_øÄÛÿåÝÓ¸áõ¬ÿúòê;&¯ü�×ÿú3v^ôߎyÃŽ}^ÿû÷þúIÿõ_ø‡?⹺—I€H€Ê è3mÑë‘»°p¤O³õã >†›É,…âT&jM¦ÚæÅܾ¢åV qT3‹dØ«$3‹Iúõ �%þáÞ¥Ê%Ý¥Úº¤»Œ¶Žj¢Éhù\’áx.ã.£p$Y(f�ÑaêZG­lÒÆhM*%Y z]²—©XjÃ%—t—ªO%%] »0³œÖ~à{ÿÙÿñßÛï¾·ÿã¿»ÿLŸoïc~øû]?ù–øÞ凯Ÿõ:ùßÓïŸÇþ›MÿÌöuW~"^f7ÝÿÁãþè‰Ï{ßõ/{Ö¦ÉdÓi¿/�²ïýõgˆpÓG†rfH€H€H š€>Ç–r%V¥O³K>Qå5ùÕ’Y�&c]*OÚF�UQ�8¤òÖ¼.îîœró�™Pî½DV…pJ|R‡êhmØÂfJJ†ÔØÙRqã9lÓi¯xË俽ѭñ’H€H`y „– O¿­�Ø3¶êO�ž´ÇxÌ^¾CQÉŽJ4x[à™m«*”· :öø_š Élj IDAT¤=ŠI šßÌÕèX8kûlØðõ¯ïxÍÖŸN5ztúú¾üeh)�Ë¿ãµÿÏO}ê^vÚ|ó³òŽ >vúë^¶éEo¿6ùß;}ô�ïÛ|Ó’ÿ^×o^ýöß\+ÝyÑ_=6ÛþMã›^øöÏ¿ð7Þÿǧ½Ç´`H$@$°Âcyɾã{˜IùŒñ˜�šµm~à^ãxœ§$@$@ã'ðÝGvÿ¿ò*ù£Ø�~÷{ûî·ïdŸý'“Gw?òÈa‡*'ëG}ä{�>²ï¾ûÈiÜîeã9ï<ðù™î½ÉƒÞò—ËŸàÞ09x2ù…ÿ?%øöîg^(çíM·|ú“ï~ÿË¿ô¸·`ÏO„ÿ�g}äˆ-|¾ÿ‘ÿyÌGþYÿ›`{$è:ý›Æ/]o¸öϽÍ!b@$@$°xÊ�»²·Vâ¾X´;f�í Ø……ó‘Ç\z/˜¼°ßÜ ¶  �1xÛÛþâ~@ŽÖþµÿþûmذï÷äÇÅ×W.ÿ½%ÛoON»öÆW¯ÿ®øØ¿ç�äOy¯›ðŸ$@$@$ Î=ï‚V(ÚêëºDGjwÌŽZ0I$@$@$°:Þõ�_Û½ûÑ’ýN�Êû4Ò8xrÑ�ó 9X¯­÷F%]¨! X§žzj«m¶Õ«y]U8Xó7?[Ã?+hi0¶øÞ°4“ �À2Ø ?>Òÿ è2cçÞH€H`µ ¼æ­ç  ¯.-ŽÙø)åð@%K’´?6lcÅ¡™MÔÍÉœæÎ2›GŒUgž¹”Z©R-·±-Ô¼ÍH¬%ØUÄXÕ*äS&.Ÿ¿ Ýl;»ŠØ òæáj‰ 4ZÞ¥]83$@$@$@$@$@$0-ŽÙù‰qˆB z‰OSNcËÑÑi4*£2˜Ôè‚@|\#»d»8™]*�+L¢óTø”Ù¨ Gšï<�S@$@$øÌ¹¿&™! �‘À_!sÙxdcrœ¥&Ðâ˜-æð°ÔÇ�¦Ü©[ ¡�¿•9�íÊtUóZh5¶¶cŒ™Å'Ú{� dg¥%¶WãØèk­œ�.iÒÊÍS1AߌKnä� � Œ™Às�!þŠï1ÏÉÙH€H€H`H×]}•k×â˜í*ÃËððVrô 5îà—:Â…²p¤^2%û wÑWë:çN�O/»“±ÍÓ×¾èC$@+E@ÎØŸþô§yä‘•Ú57K$@$@ûí·ß!ý_YÒç1;Ó{¹—æ{‚]n¶Ü � �À¨ÈûÑG‹þšñQ�ÍaH€H€H`–ç̇>fˉÔ>Ø\‚ªnÁnJ×mmùø¸7/I€H€H€H€H€H`¹ }ÌšáùÓ�QWü¨Ùȧä9r†áK6E � � � � � ŒŸ@é1Ûž‹4vgã­J•µ’*ëƒU§q²Â^*³V¶W+“F±í’[e8À$ÔX�­V¦nV+ v5ì¥&m5h¶Ã     XP¥Çì·—?\ɪ=¶iß|Ij¶¨UJ\�/ïR¨¬Û¬�?Ú(´�ʬÏLãpž™¶£9 � � � � � C ô˜�?ÙÕT\¾ë­j ª\‰ØòT,z»dËø\Ö"SbR¢ÃFY£ Ñ¤Ä[c@$@$@$@$@$@‹NÀÿÍ㋾ÎO$@$@$@$@$@$@s$Pú4»ûˆ|ª™gH>y>\%     �… À§Ù q›8$ � � � � � �ÀbèzÌÿº²¾ö-γ3ïkHú� � � � � � �€%PôCã8îºlFÞ:2&      �•%PtÌŽÒ™õÛé£30I$@$@$@$@$@$@£"PyÌÆÛ†‘t;T�®Z½Ê¢yX…zgÞñ�¬O«¦vþ’�¬I$@$@$@$@$@$@ M èÏf˱S_ºUM%‰Í#‰ÌøƒÔÌ©|ÇY[w´e9 � � � � � �Àx´~š�óaôŒm“²IˆÛnX|ªkµWªÜNhcL˜*„ "ÀvıøH\áÆ      �ÑhwÌÆ4z>Œ&G»s ;šõœG{¡ã"âš5%ú“ � � � � �À¢hqÌn<ŠÀ¡Ÿ #;Ij€�'”‘бd¼ÔØÌ“ � � � � � Œ–@é1;>IJÑnƒé¨áq·z (” ´•¾hÕ`<$@$@$@$@$@$@‹H è¯@Ãù'CÉè {ÆR&#KRAxi—%Ö�G÷e™@€$2‹²SÎI$@$@$@$@$@$ÐH ùi6Nƒ8¦LóYU+¦|¬@ã¼sʧ$o{•èó�3ôDFÅì¶–•«$@$@$@$@$@$@³ Pô4[Wœq¶ÄÜ¡I˜�xÖA�­Õ †î�@26†€ � � � � � �À¢h~š=†ÉðP­hœÒ]Ц$3#ÊaëêFÎ*%SÝš…$@$@$@$@$@$@ã!Pú4»nbwÚ¬3a � � � � � � , �æ§Ù…;þD�çç´îØK˘³ðfUÈòò«íFRÒ¸¯FÁH6Â1H€H€H€H€H€#0Û§Ùá6äX‚“I¸:|fló O ¤£Þ2ù× ýo JvÚV&£zW·Ýõ$@$@$@$@$@=ú˜ÝãèCù {-å¡�ÈÂ7-A‚¢ŒH€H€H€H€–›À³—ûÆŒmwùÑ�_Û^Êç)ÜW¡¬¼/•$@$@$@$@$@‹K€Çì>ï�·–ìÄÅ'´­ÞÄÕ Å$@$@$@$@$°”šÿ 499ÈÑQÏz†´±…¢y›‘XK$°«ˆ±ªUȧL\>ºÙvv±äÍÃÕh´¼m;-«\Þu‘^a‰$ eáNÃŒÀ ìRIŒZ+vI\jàv§…N#—VV¢‘’è ¡33$@$@$@$@$@$EO³q&‘ÀÆp‘y›Ìä�,™2ÏTEK¢ÉŒI¿Ka÷0Ó½cÔ3L†iM–Œ$'X{ˆ-) 5¶»�¡Œ&eÕæmŒB”h´¤—}¹î¼$    XnÍO³3û—ã W¬ÞžgT ™¨…nUKl/(SúZ+çS>Oª‹Ë‹!úº%\fæ�¦—À6 1§“I^^.–÷ž‘ŽÒWlµ»Æré&q—:ÄZ®I§l«Q~%     � ¥Çl=·èqÅÆ¶¥=ÌØ|ÇXÚÕ9»³VµOÇùQ>ä<Ž˜k�‘œ ùáÜŒ�«™ £…N_¢q%¼$     �E?4^bTrþ)ñ¡¦#�è²üîDË;ŽTXn[Ûå…»p2w©n.é.Ñ‘ � � � � � ´%Pú4;ï«§”ðhTwz‘*kUg’x¹W-=Ùi  “E™ˆ&UÕg’ð‘ Ú�ÙitÕ%U‰¦²ª2k…U J4®¤ü2¯¼–J     �å ÐÛÓì~qÈ1 /u®8Àˆƒ�Ê]Ú¥¹Ä©yÜÆÃÙ\¡» õ©L«ÂVbÛQoœ+×K{O!@ëÖ£ʺ ÊK‚ºQKœ©!    X8ý<ÍÖm—6¬2z ²15V ±ÕH¬I+Ó!­ wËÊB�]Õ¸»­C+,…�ˆu;’“e– Ìø„ó@Œòê@Íà ‘Q:J^3è%2aàJB�dJ4ÑÂLrž™v\"    '�~žf—0 •"³¯ vRV…É0VÍ.SÑ=,qw©Ã‡É0#Êhy9â–œrC\j sw =舥hÆ®fâ’™K4ÑS"k?4a‡�*™$    X¶œq–nõü3O—àØNºîê«$8÷¼ p„ŒO,ƒ¡^ÖFú wg�Á%šÐ� XM×n¿Ÿ $¸ì²Ë}ôÑÕDÁ]“ � �@H`ß}÷=ü�ÇI^OÐ;¶�,q?O³ÃfÌ�ÀxØ3vjªMª–y     �>ÿl6L«ƒVG<“lUU7[Ç^Z>Àœu»[¦ªÈ%š¶LRïä�á,fp-R—iŽ3¤fcžH€H€H€H€–€ÀÐO³å#>>å�ߨæ’É"î}œ3ë[ZN­ qpÅœ:ö�o9ö"    �U 0ô1»G¦Ci { y²W�wm0«Áøä«z¦ÅûÇ]F#Õ(?|ªŠy  �9¸øâ‹ÿäOþä—~é—^ö²—É׿ø‹¿xà�ÊçyÿûßÿË¿ü˪¿ûî»ò'òꫯ.)?çœsÎ<óLUîܹó3ŸùÌw¿ûÝ’Bj„ÀöíÛõ=÷ÜSAãæ›o~ÛÛÞö[¿õ[§�vî|ÔYÌí «Èmúë¿þky«¼â¯ø�ßù�+®¸Â®ö�ÿÝõ·û·?ÿó?/$ßð†7´Ý»ý%ж–ú$0®_ÁÀ-/¤e;20ÏØ‹r³8' � Xçž{üäßýÝßݼyóm·Ýöw÷wrNþ›¿ù›Ç?þñV–‰7lØ «O|âß÷¾÷mÛ¶-#ÆÒ¯þê¯>òÈ#zù¹Ï}î­o}ë?ýÓ?É$0ÈxÖ³ž%¨?üðŒ&µtýõ×ñ‹_<æ˜cD°k×®¨ìõ¯ý3ŸùÌè’Ñåo.”7ÌÓžö´}èCú§ú–·¼å/xATÜ=9æw×å—_þ�ÿø�¯}íkŸóœçtÐAm7k ´­¥~ ð˜ÝçMò¬5d¯> å5 Ÿ%8©Ê†a5Ô�g Xrþçþ„'ûÒK/}ùË_^¸óÝ»w«rÿý÷—óFaÕSŸúT§„�Ëó2$°qãÆrÔ®ügög_ýêWKRž¦¦~ô@þ]IÔÿ–[n¹è¢‹~û·[Ž?þxùW3ò/efwÌÆ»b„ï®;vFyš�àPç/Ã_y=WWœ@ó1[?…ëqB?ŽÛØâÓ¼ÍHŒOðv1Vµ ù”‰Ëç/C7Ûή"¶‚¼y¸Zb�–W·ƒOÔ«vH«´ÄV€B¬"ãd*�¤SFe0Ñ QcÖ±XóŒ@—ÂÂ08‡UXê µëˆv¸.aÞ9ˆ&®–—$@$@ Jgl�ÿè£�–àßøFj;rÐzÏ{ÞsÓM7Iáé§ŸŽS�è凯åW~å�ï|ç 'œ —òŸj“úýÈG>òÐCÉ£Ñ×½îu¿÷{¿÷Æ7¾Q~ØXVåŒ'?ó,â .¸@eKFj嫼¢�µåÉá?üÃ?Ü~ûíÒQz¿ô¥/=ãŒ3T/#ýýßÿý5×\ó½ï}Oó¾æ5¯9î¸ãtI¾~àøçþgùIø­[·ÊùðïxÇ+_ùJ­Å ËSÜ#Ž8B†ÔÌ]wÝ%�÷?ÿùÏËS_yx+U'Ÿ<ý/ëÈK¶&óÈ óÝï~÷ÿÏÞuÀIQdï·�]X`%‘Œ òGå0‹‡˜EôÌé<1gÐCTEOôŒœ3œžŠ(AÄ D1! r*éÈ™Ýÿ7S죨êé©îé��^ÿæ7¼zõÞ÷^}Ý«ý¦ª«Á&3û÷ﯯÁþïÿûä“OΘ1cõêÕõë×Çÿ@±ÄZùba6|¿ûî;4Q©‚^0kÖ,¬CƺnLõcuÀ¾ûîë¹Ð3QìÖ­HÆÚ¬ÀÇIÄ‚|5_­"êß.5!HÆa[ª%âX#­óóó1®§Ÿ~zÉ’% 4€KÍÏ8ã ,,Ÿ4iHÕpà 7àÀ5ƒ¡¡T>餓N?ýt=]NÛÕ5qâDpµhÑ" g¥ò±Ç«gÂò'Ÿ|‚s�ŠɃdœÄfÍš¡œ/^¼‚bƒ/{vT6pÁÉ?~üòåËq^p®»víªlìËO÷Y0H^fÃ�ïÝYPJý^ïÒc@¯›é]îrÏ|Bà¸'™ÔÒN)�ù„ˆe'Œ1zâØ–º™Ý«¸Jj£$¥7ZÏœ+5;bÐp6B¢ó-W‚& €0P…  ~Cô6mÚxæ€j ÕÊ’¡C‡¢ê@™‡B¯xõ4=z4J\”¦¨+æÌ™së­·fªŠëÙ³' ³gŸ}ö¶ÛnS« íµÐ ,@Dõ00â.\¸PU8DEzùå—cþÆo,**B=sõÕWcAuÛ¶mÑ‹æƒ>د_¿ƒ:©þå/Aɧ§aT’h²!.¾øb %+~Sxï½÷°@úöÛoßÿýaøðáÇsΨ?Qr£ÇpЋ_à‹�`E1Vã£ùõ×_+¯ÿûßHõÐC!ø%^vÙe(æQНY³E)èBW�5à¥Jq—H@ÎXx�ÂP8øÑ©b=3¸Jäâ¯G+W®Äoûì³Ïyç�×¼yse�Ÿ9�FÄîꂟ~úI•ÙУ‚Eu�þñcÍý÷ß?bÄøiãøfÂñÓCëÖ­ù× Æ��¶« ¿}àJ8å”SöÛo?P‡ ùDû ÆÆ9à€@Έ½ôÒKñ;Î,N=®.üŠ„‹ Éó%úˆŽM~øáœœ‹qãÆáœGy (3¾Øt/‘…OœÊlOO(õ2À³–Öïû•�Òxs£W¹è±Ø2‘Àqu(Ç=ŸDQ =9®ÑÅMŸ|ØÆEH1–ËØy,zÎÈ z†z]}zëu– Kèq(¥úFJf([€�²LÔŰÊÀ€e_#ô8 ¥"´FGF @8l¯ƒz†2² €0 d,¨sPHtêÔ “¨žIb³¬˜|Vsà˜‰Å̤g™�" EÈ€PB e0¦ 1ñ«Ãb¾M@¡”…€Â8ѳ٨¥aŒZE=14ÆyôÑG1M�‰AàC‰SÖ(Ú±ôE,&�>ø`”FèBí‡X¨?Ù‚ÊA×°Œ9L”F¨ÇPXB wÅ�^fŸ}öÙÀG/RBñöÁ¨24¢‚B‘Y»vmÕ‹æ2æuaƒ*T5Á!êÏ—^z óœ(bׯ_�üQ®£sò˜´Wfþß‹g¤?˜Gå�ž'NýÝõ^”ÖXV€ÁÖ¬YS¸ ¿ 2T+œ13o<„¬=ƒ e’QÁâwü
~`DÓ§OÇ# ževÚ®.<�^ZZÊ‹ 0XNÞðó.K\KJ�…ô¸àq²à =~�Þsu½²ÇyÁ 5þ^pqÞ|óÍl ù’2àZf«ÛtܯQ—õªW×D"#\8d•'ç‡Rª0ŸTÆîB¾=4ƒ« @0` Ì44]ÒŽ* c°FÓ=J:svÏJ,…a@"gK|Qû¡°Ä¼q"p,ÌFY¨jlØ£bÄŒŸmÿí·ß¢ Ç2wA6ÊlîJ* ¤AÕ:lØ0LŠ¢TC©\6n܈”0Ó¨êL¥ìÞ½;fž!cÒ{ÅŠz¨�‘sÒpÊãÂ4&fÈQÁ*M�=~øae½äFmŒÛÊsËðU%¨îçŸÆBtÔÀŒ |Œ ªaÖ¢E c�1<ùŒº½qãÆº¯¿ŒZ‘w­S3«œŒ¿£Ñ ªq(åž{î‰Ó zŸþùk¯½Ö°LÔÿÜ¥ÖWƒ7¥ÁI„&Ñ# i»ºðdÁªU«0�%î %7'¬ ¨�± '‹•˜±!‰hg3]°ÿ^ðCƒn ²0àÈ€k™�Nnî“R”3A+ÀL»6�?R¡§FÉIÏ‘£YRœtdcÎéäGb €0��  tÄJf<,� X^ýk“–˜:Öõ\rëJÈjzSïÕeÃ8i,Vkc^¥ T”I˜NÄS¯(–ÊÊʰZ‡¢f¶UuëÖå.L¼Û¥/÷ç~-~èzŠÊq½ tqñ LêêŽJV/KÃòx£K̓"¼P �:c ˘QuŸsÎ9.ÿÛEh5å®`ÕúNƈ¨‰ŠO`úWy�=}âJÕÔYåj½êDè�%#@¥çêÂb ,ÞÆ jÖ¿P`¾�\ରJ?ßè׺ÐÄb~¶ñ0Xã²GÓ ÐAz…f š2;Q¡¢ôÌQàúGÙ‡qŒ%fþ ¸ü¯Â!ÚkÃ?V´½.c‡MF]Ÿ.9,…p1¤) €0�f0íŒU¬˜¸C�çùˆ)çƒj óÃÜ„`4¹KÕ]X:®„C™{C˜7Æ�âsžX’=xðà¿ÿýïXÀŒJ�éSÖ ®–7ë¢òÔ‹”£¨ÒÙ‚þ‚+TD˜†ÅæXºäzõê» _Ï9[Uta78L¢ê^ü5Vìc�1òDe‹‡«Q�£òäGyu—´É(5UµŒˆø½7*xj�ÏÆSÙJŸz>鼺ðœ?œn¼Û › êÆ>yÆãêêÒ¯ŒÍD³ß6 .wP4;3±§b2ðÀøPé…(€ Íhê]U"'ÊÇx•äÆA%É v,EE„!J]NŒïyuÙù°»-2¶Ý]4F£©<•žàa@¨*PÑaŠë`ñ�hojÎ +`Qårå€9plè…B— XÀ«………xV™5x"—eC€%4Ø'ÜÐÛM,±Æ»£Ô^ÖØÒ S¸H �c~Û8à‹s�zÈ93,&¥±°œg}1K‰g‰¹sžØøs¹²Ê–Í<$‰­Ñõ’^™a‚KÁ±£›�©6xg(Ô{X4Ž-ÓQ§©:–»¢<Ï�„€^¬WÊ^½zAÀNfª êp€±¨§”uÇrú¯.¼ #Â/)Xe`ÿ „««C‡ ΂ÖáãúôÄ»ý÷¢? ž”ÿ4ŠK®2Íl¶bÇýÆ]·´+ht€Û6º�’uFÐÍT’ºŸTÝÌ6Ð{íXöØ]l8´Ž» .ù$òµõ:šž dÕ¥(wÝÌôÔØ ºYÐX:š�ŒÞ«dÛF�nË�òac'* ‡Ð‡f€ûØ Ë0æ¦OÛˆ €0�Q àyiÀØØ ,¯ Fý‰ÃÎocÂÖʘúÃþá¨6±s2fƒ¹Ñí1m‹-¸±Y*Ô¨W_ýuð¼¨n¬ŠL,ÐÆþÛ¨0QÙ¥,vSÃK³0·Œ¬P!.¦”a,÷ÅNãxª““(ªQÙbwnL£¾±åŽ<q?÷ÜsȇCcûQaö�|ã}K�1¡ÊÃÁ‚mlK†}Ëñ¢i”‘˜ùÄ„?¢« ÕÄSÀÖh(é‘¶þnX�ÿÕW_áma(«T¶˜–Gtl3@ìU†­¼ñB)Tæx¶Ã숎QcQº1ïíŽsöì5”¨'Õ~òÈjÆ 8ûpÇ4µZÈ€}Ôðø4ÊK„F� N0y‹MÚ8Ç®lØ %(ìßxã üN#„3Q¶i»º�?®ب�j'd…9y^é�R? Ú8–^c©ùwÜÁÙ* – O™2µ%êêW_}•³Âºhlcdl{† |ÔçˆuÔQGÙùÛLYà ûT£ÂGy†*�ß5�—Háx”¯È]¨î°P{qÅ6ê.¼ò Îñ<3Và!mÏß;`Ìy²JÆçÔjël…€S áÌ3ÏTg9¼ÿþû8ø!U(êC¯ŸŽk®¹ÃÁ¦h¨QœcY»¾ç™WÏS¥jhØ%mW~Dxùå—qÒqÁ¨G°»;§¡ X•€Mìñ´ûì3¬ôv«u IDATÆÌ!¦ñâkÌßbMxÕÖØ`L–éføeã˜^f^]Fòr±„H3‚•ÙúäveÌ9Wf*ìDî˦a¤)Æ’•‘Ÿýô¦xÞÓ“dF~ª�| - ÎßÅ+‚±{›a™ñÑG�UÙUžs¢ËUž˜$ˆ�̼ºŒ!Tíņç5ð¨?žÀžxž‘›ÑÄr¼Þ àIrÕ…ßȰÖÏçãé ü@†} ÔŽ x�8ÁŸ6+À#x¯8žƒ0ÐŒ&¶À¸eÂŽxû`-½a#ͤ (³ùö4)hލ�§¡0vä-ÓòqL;ëÌvfžeì™ó÷žu8’°0 d/xÏ'gZþIë�LKXòñd 3¯.#Õ´]lØ$›íá¡z=<ö�UëØ©~âĉºÞ–ñ˜=þT±Ùÿ.€§Ö±ÖîØG»ôaSìS€ÑÁ{|ûí·(›��½ ð$^­‡JÞ†ULéc‡B¼ /·‡vk7Þ¢—ÈQô®/ôR·ÝpÆÝ§: iº0ê\Ì"±qŒ…3Ë'7’¸> éŒå“Fnw9ž÷Ü&ÁgtÂ�9Ò% €0 UŶ²ÇûXH’4¼nÛéc@^åŽ×‰ÃkàÀ�(¼QNŸ|òɨÕÕ+÷°·<¦¯‹·`G@(±[» �ݱÇ>Ö­ >ǦƒJùé§Ÿb/}ìY¨Jq8òKד&&:®e¶ò‘;T�;‘…a@„a@„a@HXþ�wÝámj\cÛ¡1ÿŒÎÿüóÏèêÙ³'¶ýGi�Ý+'L˜€—Ï©òa?K,2Ç‚päwß}76«Ç[ `?cÆ ¼ÁþoûöÿG¹Ž÷lÙ²Å!š¤ X4žK ²‘�tþt’ÎXÙx.$ga@„a@„a xC´ÆKË05�‰kʤ£´ÆkÛ0¡�WÊÿãÿ€ïŸÃ÷1Ç3kÖ,ÌWÃïÏà áðÞ>è±€…4ÞðÏlŸp ˜ÜÞwß}±"/œÇ8Þ«‡·ša-:öÆ Éa&G "+³ÕÂcÔQJà$ŒÊÊè…™n€^4•�Òë2c&Üq¾È)é½,s¯òb}"Cïß´Ñôpz/˺�?¸ÝëÂ6Ê=t8ƱÐ¥2P½º¬â*�=O4Ã̰ap“Ít=ËÜk€û4Ù×°1 ”™®44Ž8F”DMÍ­|ÙR7Hë©g½WG³ ô^ÝËG¶A”qP(‡å  >yJ—0 €0 ìÌ Üwß}“'Oj"úØc�Ulà9m”Á.Ìà½î}ûöÅûÏDyÕ®]¯ø=z4ž»Æ¢ñÞ½{Ï�;ïGïðáÃ1��WÜ£‰ùj¼Q|Ô¨QmÛ¶]¼x1žEG-­P¥«’/œÇÞix…^R…÷Écuú[o½%e¶b)Ðwò2›o7�Ër¢[O6à$ ac»Wa²�B7ÖAÙ_`w|bP!Âv,ÛÀÖè©ro$É0ZPÁN©’òá@, U—X†�î΃5l”Þ¶ô4c�…¨…À±G�q…ÀqaÃ3–ÎÓ Âd"„r¯Ø€0 €0àÃÀñj ´×_ÝÇØ³ N£TÆD4z±…8¾?ùä5w�Mæ°ÿ™òƒÖxæ¨ÑÄžäwÜq‡zÐsÔX”Ù08î¸ã  \ø],‹� ÉËì èž53@ø–Ú6p¹v±qIUÇÑ3a_Îe 4žÆìeô*=[&8®eà¸ç“(Š¡ Ç5º¸é“Û¸.±l¤§' Ë0Vɳ�jB¯›6zÛLõ*½rÔmt_wÙ@°ó�”8”%€+Y�bh”{é–‰dåb€8þ9$BöÔ +Î�]<͸×]0pŒq¹àD8v—pb# €0 Â3€9gxsÝxùôju7@À¶á˜v†l6ŽEムRx6EÃKï¿øâ‹1cÆà…^JߦMTÝíÛ·Çæá¨Ò1Ë�™jtõë×sã{ì±v,v8GÐ:`'6ì1þì³ÏžqÆXŽÇ¹;ì0%ß�H^fºõ4ît�&234h&ºíVzeoÛ¸ R÷ÕeÝ7²Žà){ŽËÓÒPªóÌ3h¢ëÈ#�Ä·ZaþÞ{ïÝ{ï½o¾ù&º° œí«W¯›]wÝUiPKÉcû²Ë.;øàƒ•¯×ÆVgX—Ž3Ø^x!ÀFÊiTõ¨´-Z„Ƕ±]•ßxÃùÈ‘#11Žõä�LPosPÜH^f»ce�¥qŸuùKÂ9Àª ù‚ŒªÔ¬Z~x8‰Òð¬„á•ÃO4jÑ €0 ÂÀNΞyV%´ÎÞ­…C×(Zã°õ×_½®¼4~è%7mÚôöÛo·õÐ?ì®Ö­[óús»W4Ž ì¼e¶ªìú¤µ�'³FmÄY”:ÙÈsT9G…£óYy²úHú÷e(¯pYe?áÆ(^€0 €0 YÁ@ºËì¾¶+£„p¹ 2œ{Œ.ƒŠÖÆÎÁà99Lš3(Â(”™1�=ÝÞSˆÂÆôôÊ ¥=}¤Y1IR„a@„a H_™�û]uœQ·Âv2‰Nªniß»óèØÝ¶Ñ”¬Û0‚n¦Ðt3Æ×Íl½×Ž¥@‚Úph;w%\b%òÕõÌ+õd¸W§,u3öut¨p œ‡«<=[%ë±8Ý̇ÝLÇá�$tÛØ¿×¶÷×ðèØÌÎY�¨dÛF¹ë–‰l8�€0 82€½‹°ƒÞ޳aÃl;tÕUW5jÔÈÑ7+Ìžxâ‰éÓ§celÝÔ£G�‹/¾X”4+†àžäСC1X¼iï½÷v÷Ê ËÏ?ÿ*¶ÔÂ#»x!ó-·Ü’i»'‰�½°(zÆŒx\kãBÅN`îîÙk‰MÎððv¸ü±¹š½%[8¨�Ä+}e6Åݪ~óª(®ª[XÏd<Ϻ£eêñ dÃzšyf^J;ŸÊˆâƒéŸ€'9þ.‰byB%2ö×»$à_õ)|œ¤™¸ü ¦>vO›TƘŠ/óæ™÷Š Â@* Œ7nÚ´i�<òŠO|ã¶ØÑ×Þ )•Uë[\\Œý–ð`çÊ•+GŒqÛm·¡ ­Ú”*):¬U¯Sª$ü*„�9sæÍ7ߊ… âúÄ ® ÄNÚØR{õêÕ¸hu›Ü“1��û*¢âàcÛHto|&\Êlwòrügw"ÄR¨B\¦²«0= - €0�:kÖ¬Y¼x1Þ^« 0�Ö¢E ¼Ã6uäÌDÀŠÜŽ;ffn)f…·+ 8›E§ˆ“�ÿî»ï0‰ýÇ?þñ¸ãŽÃÞÕ_ýuæ™bJø·^Xs� Þ‰'vêÔ)çklf¬QIˆO^#ˆàÈ€ël¶‚Ó—›Ê„�â$L` /Çsi˜¥K¹§!O#íDÍ@™¤8öD9Õ»çìoéß4«Ü³~rïœÊˆ„�œd‹T1®’Üân; +e…"wþÅÚx¬/ýë_ÿš;Cª ^MŒ™O¬D¨PäÔ¿ø1¨¼¼üÝwß½ûî»ñúå¿ÿýïxkÔ /¼PZZšKã<óÌ3±PÚX(Žýî¸ãŽ\�ÿXòóòðñ·±{óÊÊl¥hü0›Í¥‹?bîõbà5öLË'÷θÑÎÌóÎ<ö\½že\€0På ¨[ 5vÍš5«<±È@�}Ï=÷àU½Ø\*rðªÄrñÑ£G_sÍ5Hå(WmVF¯Q“�Ô·o_,µÀ®˜´Çºñ/¿ü2ÂU…wõÕWï¶Ûno¼ñÆ;ï¼sÆg\vÙeK—.­òÄÒ“@5¢Ÿ`³éIÆGq-³¹ÎÄÄ‘:2~h™˜ ¨K[Zޱr² r{ÚÎå$Ïé$Pb €0�í àAP̛͞=[ õ6ͽBtÒ¤I¨±‡Žª³ý”Ùùãô­X±K©1›�¹PÜtÓM?ü°m™¥\¥úbxõSB–Ž%QÚË–-ÃÂø“N: ¿|áG<›]XXˆ]Ùç˜>¯¼SÓA?Á'ÀsŒ·à öÛDV/!Æ,.€0�Ôosø�†-¤!º„„a ÀîØÜxŸ}ö©W¯6šÂ¢Ü.]ºd`ž¡S?~ü˜1cî¼óÎ=÷Ü34H&;vïÞgPeˆô”SN¹îºëpB39ç ¹üñ¯¾újïÞ½›4i‚ý·áÞµk×  ™l�¿>lõ�1žþùØÐ Oà§“V­ZerÎæ†)V×YV-*Šs­%¢ÁÊl'H1Ê*ä§“ôœ.á9=l“TÐA`lŒ • ôÊR(Y746Žnì)+‘ ÿØË] Çu÷‚‹>^]ˆdÕ„^73lôж™êUzå¨Û辎2§Äö‘À2š€0 €0 �@í¢üÃæäre 9Ï�n»�ûr£‰ä šö½¸²ÑïÈm—qºà„CNÝs\I½ùqÁ‰ÊFqÈh¡ÇÅJ¨rœJ—1L÷¦Ê'Ð5ïÉ¡ã¸l3÷TÝ-õA)/#®;”X €0 €0 ¤Î@l;ø³Ù2›‚ùäevÐlq©¤;[†Ÿiy¢ÃÁ¡“’,ÓNPˆ|øl*_4å´† Q\„a 3(++Û�ðža d˜¥ãÊn%a@‚2€yì˜Kë…TPÔ—– ¦#{ýöA�^©¸ü¹æ-!Üÿ5øíž#Ž áx÷¥7‡ðJÉ¥$¤÷à҈߅ñm:t^·|Ö6}6”÷ÛDaNb<Ö†PC:­üäÎpžƒï¥W…q­3ye·p>VѰÛþƒAóÂê›0‹ÆËÊ4 �H_™ÍTÒRÁ)ñˆŒìdë–Fm»Û6:‚’uFÐÍšnÆøº™m ÷Ú±HPm‡ã®D�Ž B€À×Ç\Œ ›©¬ŽQ\Õåáoéßë’ \®CO3üʳñ»gÂþ.‰Rõ„Jd,za@„a@„�¬`f‡x6[�‡8¹®evÒ›õ¤*93½7‘ì2ÈD¾º8FÓÙÝ2EÇ@IÍ’$¾ 6�1{U’à’Œ‹MRŠó÷�¥÷&’¹$¬‡ð‡u·ôÇ‘^a@„jöñPæ�j·>ísh4ÞCéÓÒ[ŸCÚ�à$�C§Ëm(ê�Ùn¶Û­d§ñí\8K®e¶3  !p™Ê -n€0 Â@F1PKÊìŒ:a’‘2; kæÓgç+³«ååáôAó‰íšÜ+h”³—Ùì;¡2a@„a@„a@<·hN»N%Ýbßw?M¬mñÞBC›Ðõ¥4º/ý¯âê(ºµULyg'š5>ºx®Hx6ö3 ü þªmׄr×NÊìÜ=·22a@„a@H��uëÖÁ»¤¤„1 +%k’ ËGÒê—i÷�©Ý2*jG?KX~¹y>ý|<í:„Ú¯¦Æ£é—shýÇÉ¡Ü,îEã_£? E ¨mêr,`~>õ>œž~’š5£ho˜gŒü`Þ˳Nþø’ó—Ý\·Ý®oû4ÖÕoZµ±ëÕ�óß/\uËžì;ñ¸§WÌ]ê–~r«‘_ÒËóéããiÙÔ®”Ž�àuéÍ>´ü Zw=uÝ:ƒÞ‰§Ñ#?¥—çÒÇiÙ…Ô®.ûz,¢:–o +§Q¯¦”M¨ÊæQnyí�¼SsÁìü6­7œ|ºzT!o·µ~ýQ}j¼üBt�4�è+¢Añrº>ÑSqðÍD�U#º–èV¢³‰jÅõ‘|}Dô-ÑùD×íB4–œH4¸âs!ÅHÝ+’`ù½<‰>~‘–ý‹Úµ¤c/Ž�Ä×&Ó-Ó¸¿ÐºÏéù»éæéõ)|$}ñ2]ù1ݱŒê·£Çâø?Mï� ó'Ð]«è¸»é™SiágÅs…Áffa>|Å»Æ;’2[.a@„a@<Pöúõë¹5vÍš5¹– ¦ß®Š}Ö¼³ƒž+¥]Sµ”W�ÜI›æÐúé´ò)ªÑƒJO‰Y•BµûÓŠÑì‘¢ðØtíÕÔ¼9U«F·ÝJsçÑ?ÿI Ð…ÐþûSn±#=¾zô?ÝZ»EÝ‚j=ïì»rÎÒ_¦ÏosbçVÇìQX½Z^~~ç ÷«¾K�%Ÿ-Š*ì£ßÒཀྵE-ª–OwîKsVÒôߨA j?3( 󩸀šïx¢R‰þè,܃ZÔ¦jtg/𳂦WÌ…^:•íEmëÆjĨŽÍO<]tõåùÍ›åU«VtëMeó~,ûç¢O€üC‰êÆK°#‰–ýH4%?ÑqDÅq¯]‰¢ã”>%:€¨N¨ýS?Ö¯Œ­o^‘Q 5ì@‹fÆV’èÓÂx¢äçÏFëØ‡N¸7ö9fDB›à¨ý°mxàOð@â!e¶\€0 €0 x3pÜqÇ�;OhoÞ¼ù±ÇÃfã]ºÄg¢¼Í-mYü)Þ‚ÚÛ;òk”øØÊíFá¥Õ«c¾µµµ½µjÓš¸2ä�C*~gGz³ë PçKåÉ…ç G‰0VeS­§m�ã9ÌÊÎ'ñ}(ÊÀl#L‰n\•ÂÀ¬¼ˆF ¬h8píÚµ]tÑÆ�ñÞìÛo¿=XÚù¥1û2íNºl5A‰ÏV­öUÊ`ÐÞÖµã7ökÖnïE�];žÅvUtRQi¬RÚ¼f{�„»¨´ºŠ°ö×Õ¯õ~¬yï¶=Gô�*fi¼Ü]SQW5v©Vu£èØ".ÿM IDAT†ÆÎ‹}z6Š ì¶ˆÛ‡‹ˆJû²èÜ=iÏ]c!b3”ÆmhØÈyñSX¾V;…«×Piíü Ä©U³hð5[^™°åõ7‹.¾0lÝO�¯í?Ža´PâäbIÀ~qÓ&DX#�ê·‡îVV¶Æi,¢^u*[;¯a#)¿Òø¯kð»Aűz-Aùð ôðXúâUÚ£ }3—N¼Œ òéO§V…þ·züON/¡7®¦uhÿsiÝ2s­_A»ïO]Ðò¨©»æŠÚ/@ùW�ŠýÉw˜‡¯ÐË¿> ¸ÎfÛÃhîØéׂch_Æõ¬±Ñ›HÏŽéøÞ(=á$Š0�É Dþçà è®Ì(®Œ´�fF¥ÊÉ ÉtæI¬xÊSy"$e Ú“FɃ¼¼¼óÏ?ÿ•W^™8qâ]wÝ…5äÁ2/¨CÕZÒ†O·y•­¥M³cKÄ«ïMQHT>‹)£8êÔ¡Ýv£3¶a¡Xû~íÝ% h/Œâ:5j·¬»øÓŸUçæµ›VÌ^R¿+J2–ã¯üh‹#Úòp?/×�º:EÔ²}ºt›ûÚÍ4{u�׺:âÖr*Šh®N1µ,¥OkÿG]ФtÿLjð·ØçïßÓ¸ÙÔôq=…�r^�RluV6ã å�z»lμ‚.�CÂ9¹¡¢®K´¨Âï’øCÑM+4üoD¿%ÄjxDüo."âŒ6®h"ú‚WŒ¶NmjÙ”>ýj[„µëbÏ`ïÝ�^{Ÿúÿ>VcãØ³-�pxLÁ�Šº^KZXñ‡¿q--žMͺÆ�»–þѰP0À;zÄ>úñÇ=ŸJ:b{Å>‰Ž1G$ê £¥ÅÃnÄGw.ºôOøèšHeüJ€ÊÖ.n±ÿÙe‘b0D<<þa�ª]o¨"iÆN╱�~Ô¨N �}¢?ï˜;bý¨UŸ®«”¿z=ˆ¿œŸÛ´/è‘ïµhüÞ{ïÅî�ójÿPçÍ›·jÕ*õjÈ»í¶[QQ‘²h×®ªnLƒc–L¶oß^é«W¯Þ¢E‹¹sçî,eö„%h ‹ëÕ·n¢ëõ^–Y çÃóÂàÛ³×;¼!³ç=®êU].2硳2*�sf@;ù¤6œ¡ai@½ˆhpþ‡ƒd:šžîAm V·TfJϲm€.¥Ä·2S%Ã]õrÚÊLÙ@©Ì 6N$x‚+%¾ƒ¢%ŠH¯Æe¸„NÆM�{Ž]¬7rˆ¤©Sªá[WrÏÌ97ÃzJ A�øØè–†'à"xÆRJÎÇÇÅÆ1g˜!4{ÕËqaÙð‚Æ6cöMƒ€4�Tt%£i¤§ ðm¶™a Ma@„�ldo,+pžÌî“O}âƒ\UN�i•öìÙ³1_}饗27ÝtÓQGuñÅc«pìp¶ß~û 4ˆ{Û´i³`Á¼±¸8öÚ6<°Ý¤I5§�Gµ�ÖªU+èQo/\¸P­3gßìÒWfWG©×Ø‘deÜÍ„ÆÔqH¥ÞèØàI5œ¡1FÃÑh*c¾É3|Ý› �ÁU2êÒD™ù ËÅÆÁ½7Q,èu£‰.Cƒ¦A)kXo¸èø©Ë8GWȪWebX ÍÈ@ó�2ºTh— ™°½‹õ•!±ÐTC +©£ !lMˆ¸ž.2šzzªWi KO´*Q9sú@XY%gÈ)9’éhV%ƒ’ Â€0 ©0€÷ ¸—ÙÈpÁLõرcU/æ±±8/ëÂF⨥QcqÄx"ûBÀ³Öx„/îÂ[¾°Ó8v?þøã•Þþ(øÖ«Wª5oÞ¼K—J{¡žSåËY\fgH�­Î‘~7“Ê ã6œÊ¿r"ˆn€|¿A9árý(¦1ÜYH3s<.¤í˜0»TFªFLfeĪTLG2+5‡ W ŸÊh™‰-cj\Ê%Q‰ô�‰±0 Â@V0�_ˆ-М§³+†dl�†ÍÌêׯ_Ñû·N�:xG×C=„*ú•ø¡z¯¾úêÃ?¶½­q„‚§Ä‚¿¯£™ ââhÛ@c+mðÖh†LÝ…Ï# 6fŒŽŠCõÆè´½"ר F,ÕÔóaV²&ò”P„a ;@ñâƒ÷fË��ä³ÙV1q �CVM]É–¶ ›é²n©ëu™klë2ûòU {qoe ¸›Q÷1øæ;=¨RÚ÷:¬QøV|+�’¢¬ƒPËÅÆðõlF…ã î©äˆÜ˃Ò5L¸RÚ6lœ¢à’�F0r†§Í]J£»°�÷^ÜðŠ<–�¯FŠoŽ4åÈŒ!t½’9[Úîr<Ó¶‘õ|Ü6ã.[ð ¤ÌÇÅFGÖ³bÝÀGË*PW*9«@œ9ÇÕÇνz vd—È•ƒ”5Ê@OOi"ÏD…a@²€†½ÝôôõTÚ¾)j<£¸(• [ÍT²âz&('£�f"4Û øç`»ÜPÍD)yš%J5‘ÞÄS™!�ÞYqèoŒ^ý0Ò@—¡AÓSi›Õ(X7šŒÆ•— ÇA„a ((§0Ÿ,Y¦¥è4›­’–,wÛÀÖÃS =ÃXòx²Ú«sݰZimèw6ØPú7•—a“Šõüï¶aÀ˜,èÔ&©�LÝ,B"½1�Ln:Áß̳×S.à.6!òñ„õTà†�ÑTÆžJ'ÑŸXRG„e/Ÿ.v×…D‰)4 9šé¹Ù² ˆ‹��쩉ÊŸ•i „ˆF,ÿ¦ÊÐņÇ"‚0 Â@2€R*ø³Ùxž;Á2âd(ª!(³£ )8Â@¶0 êãÆ4[’O”gN*Ñ`Ó¦¯Ú‹Ñõ»j“IçÑ’¿‹hùÜ©ÐVö©S{lšŽ{kþ)M‘*Ât ï+ÄtüûÁcû¦#Œã�¯ÿ£µÒ"ÖZ—–0Ûƒ”ÿvÃöFZ¤C¾•–8Û‚ÜO¦3bµìø]Ú"–­Z³0¨̚}™ç£ºAQv.{)³sí|ïÌwØ.cw±ák"�1{±�¢;ãD+dfVÑŽ±RÑ2“ÀÌ̪ROD´àþú÷F›‰  €0 •È@‘<›]‰ìêÐRfëlˆ, €0 €0 Â@Ž2P^Nø=b¯Úî4JnÙK™�[çSF# €0 €0 €'¨—]·ÀÖü·J�­±á&J™íÆ“X €0 €0 €0�Õ áôQ™ ‘söRfçÜ)• €0 €0 €0`3+³1£ð�Ù쀄Á\Êìàœ‰‡0 €0 €0 YÇ@l§ñà+Àƒ{d1‘',evä”  0 €0 €0 ™Ç@¸zÉhÁϤ”ÙÁ9a@„a@„a@²Ž¬±h|KYÖ ´Ê–2»ÊO�$ €0 €0 Â@å3PPf 4Y4üÌH™œ3ñ„a@„a@„a ëÀögyÁ‹æØxp¯¬#'Ò„¥ÌŽ”N„a@„a@„a 3÷Þì2©±ŸN)³S&€0 €0 €0 d…y„OàCžÍL™”Ù�)a@„a@„a@²�¬±h<_�>ÕRf¦L„a@„a@„a@È>½ÐK�?ÓRfçL<„a@„a@„a@È: (ÌNã!–™g3Q',evÔŒ ž0 €0 €0 È@¬Ì^4—Ëh�Ï¥s™=Ì‚¶5–IH…�¬k’že¾rt/•Š­Qzù®|¦N�ª‚rÈ!‰¢¹Ø$òÕõQáè˜" €0 Axi6=ð9Í\Bk6QÙÕÛ½ßû‰®þ€~XAMkÑð^tr‡í])J_¼4oú³Í\ºiÍæ{Êþ¤ÐVýºîå‹>X4sÙŠ«OsX�³"‹÷ùK?~ðÀ׋f.߸fó_ËÎSá¾{oѤۿXôŲ-›ÊïQ÷èÛºïydóÇÅîS_ZþÊ¿Í�¹výš²)eû*ýÓV=pÙ‚ßlÜ´¡¼~³jGŸ×à´š²KªÂ;/Ñ Ðw3iÝšem5e]v “j mþ¯=Jô%ÑšøGi§ET³"D/"˜Es¼4�x‚f~EkÖRÙ¯Û1—,¥ë‡ÓÄwiÝzjÞ”þñ8u긽7iÉK.z`š™?l]³þà²7ÔOwŒ[8âE†ÝºvC³K�k{ÿE¬IE˜ùÒÓø ø»Uv!CM9󣇿Y½x}í†5Ôé°k÷æ®T„µ/½½ú�ç7Íü¶|ͺ–eß0ÔªQO¯úë³eËV¶hR÷öËKNèÍ]éb‹Æ“VSV:ð’# Îev@\1„a@„a`'g ^uÔ•Öm¡óÞÙÎÄü•tüxz²�Ò‘¦.¤c^¥–¥´o“í©H5ê÷ÔyÓº-/ž7…qòò©CŸ‡^×íÙ�ïæñlw§ Ô¨WtР=î…ó>d˜ «6vuç½›üëñÙ;îÝ¿éß m)¤"Ô®Wp †ו�<ïGÆi¹G�;ßl_¿i4³>Z}ͳÛv«¹oŸ:l�’PZ�¢ ëhè¶ß¶£­\Nw]IÝzQ”´Ö%B¸žhÛ¯$áv#Ú^°U(#ø·^]tN¬–>ïÊíh6Ðaýé�^4÷?T»ýð•ÖÚÞ›¢TX¯VÓAÇ”­Û8û¼ûªå��ø¨æº9‹>éxa£3ãÞ\¨ê„ uÜy0Ô¬×æ¿sËŒ‹'½ûþ�~øè×GŽ˜Ø°cÝÎǶdƒÐB~½ÒÚƒN-_·aÙy71Èš§Ç¯ñ·F“Çui¿þÍ–ô¿¼Ñôç‹»wbƒ4 ±2;x(yovpΜËìaqlý;x°`*–í“èêw½WGÐeS4•Ï&±y’9Q4›D¾º>*`ªœ}fàõ¸" €0 :½ãw쨥õ㩯©GãX��ã�Ô¿�þ2²2»}ïØ¼ñÜ©‹ôˆµ–üîO�¡É±XT²ä޽›A7gê/zO×wçf¯ ;N:cágK£*³»÷ŽÏ3§®âê6¨¦šååå…yÕŠó4ߦÑÍBÊ=ãSŽŸLõp¿ãR:uÍ™EQ.©Uµå4�p•£ê}P wêG; ?ýb¬ðþëíÛ~@hAí¹¿^ïnh¬˜Š{ïã—ÑoÖÞ§MíÿkïÝ\ÛaÛßÅu×Åß­hÜ©jl([÷jܤó.‹g¯ (Êì½Ì S?Öí{yRÍÓ�E� e�£.>`Ÿ5�Œ-~|¸n“{†‡øïÀVkG:rÍî!~ÍÈîKö€0 €0 T!_,¡î±ûmG·†4sqE#çþ]ôåòµË64ï¶kFvLÝÏ~_ýÓ«ûîʇwoÕ©¤Ò#NO çÑWDZcûd�ß2ZaNûx¢>v‘t½?�:´¥?ü‰ìI­zÐ��Õ ¤lã¦_Ÿz¯É�r²NÁ¨cŸæK欜÷á/eeås¦üwéÜUû´H/™+–<è?Ç”•oúüÛd>•Ð_PNa>•�I®C:Ïfg8öT¶{ÂÃ*LY¨Pȿ€ÌcË5 €0-«7Qí¢í��WmÚÞÌ%iõ’õOœ4ùðkº4lÑúm_vÞXÑõÒÔ—ß}þ��w/êÔ³¶¯yj�+–Ñ�—Ó£oQ~~lÂ7ÊE㞉añÈ0ж êKô)Q%Ö„Ë–*íG殮/¿¡Þ'Sƒ]é¼?xæ±rÉ?¦—oÞÒð´C"Ƶàšu­ß÷–ÿ{øð‰X‘——w½û7í²‹e™¢äøÃþwý_j�y|µ®{¬Ÿðþ†?+l[ ’î+C¼7»nªÜJw¾Ù/º2{˜ žJ/ìÖñºbcQ4Whl` ÓÐîʘA ßDMOÛ8ž–º§gXê6@6zUb†M¢lƒêíXAÙ> ³qÐ( “Ý�ahÊLWÚAšÂ€0 ÙË@i¡Òæ24¹w`ßµ{¿�'´�Ñ#m£ËÏÏ;lஓÇ.›ûm{R�±n<ÇŽå ÖÜð›ŽhzÊÃØ;ÝGÙVªV¤ïÖS üs=w?Ø öyûïôÖ8:4º½Í+!ß �ݺ˜•>a¸ö›ŸVNÿºÉE•¾bÑf�Ÿ¿wÿÖ¨±!7Þ³^—vÿêµùñ,*ë«Îµç5›7©Å²7œ8zËüEÕݯ²"ùàb^º0?øÇQº¼ˆn6[áÓÂ(ߺRëÏ1ºôì Éc´AP•éJLÃ^Õu:Ža 0•º±a£wqb† ëSÓˆ=C™4�a¸Ø80S]I} ’ÆRQ8ºŠhxùàK—0 Â@Æ2PVN›¶Æ>86n‰­¹¬^Hgu¢‘ŸÐ‹³i@š²€^�KSD6¬šÞºiëÖM±ýжlÜŠÕ°Õ’hó†-ø./+ß²i+ä‚jùù̵¨pÀŒ…ظóº÷Ûìñv�ÓÛ{ÇÿAí�ˆ[6•oÞ›cÙ´± œUÏÿ÷›+šµ-nѾƖÍeï�[þÙä•g�®è-+£Í›bŸxÈØÜuquzõ+B5�Í»¯Â2\º~T¬Á�s‡X›ãHã+u1¯‹ ÊðTv‹øäÍ�¿ß+‚`€Àø6m¢Mñ€7ÆT½:�} Ýõ =ñ<�{}3›Æ¾Jwý9šp@)ÇYÜ´¥,Obã$æWß¶¢SÙ¥=÷¨Õ¥UdÁâ@êX4þå+?ö8«]ÃöuûnÅ—¯Îß«ßî‘ÄÅAhy|€å±–çU/.[·~ë‚_ªul]¶vݪ{Æ Ì®}åY‘„ ‚ã!�cã4Y4ŒhŠºÌÖÃKK��SÙ·QM�w ©—y*7ÇÖx&f ÄhÂÅÇ<„²2ÂEųËpÒË%±„a@¨<žùšÎ�¿Ê 3�5î�=Àûãù´{šp]õA¬«Y-Ó'¶ñxTÇgÏÌþû¹Sbhyy7Ôø¾oüñõv«=¸ä1¥ü²y…è IDATÇ…àóûa=~?4‚øãgæ¼pnüU^yyW×x á†ý0àÝ;¿\±hÝ|ƒ�×À¿õú¿SÛ(9ÅïIÏ,½ëÜ2ûÔøß/ü°÷â…›¸ü§å¿nF³u—’Û^i·Ç¾X\Ñ1áúó¹1, w¯û~çGj‚¢·â¨^S6ˆè�lôÑEqh6Ø:ß_}F„þGT@„mº±b<²Bô™éÜ+b1ˆ-cß?~B»5§7Ÿ§+‡Æ>xã×µƒè¬S*Æ›ò¿¿=3yö¹ñ_%òò>¬qBî÷ã˜ê»5ܺ~ãoÏNŽê]ÙzšŸ>óýØs?ˆiòò®­ñ¾‡þxê‘·tß´v󃿾~Ŧu‹öêßúÈaÝu¯ÐòÚg^[vî�*Ü‚]®Ù�ïæ•ÔXrÊUX(žWXXýðýO¾`W¼¼-í~^ ñ [ˆÊ<í#Ë´€•YfgÚX%��¨ŠÕ¨p´Ô‹v墪TíÍdæÀˆªšQ‰/ Â@F0pvgÂÇ>oI_œi«#Ðô8»#>6Ð=eÆK˜m“0šýÏn��áyú˜ƒð1”Q5�<»>Úqlˆ�¡Œ¬yÂÙ„�Ï1|ŒOgð®Ó‰ð1ŽËˆð©”ãì�„�}ü;šñž­Ž@Óøì#ð±� j÷Zþ’­O]³ïÙð±qNzè|l}ŠšZg÷ÃÇiúÅx[™n jlüVôˆ­�#Y^fG2•=¬‚2*Ùû/ 6½TãúM�H5u]ï>ê¨pÜ#Ú9»ûê–þüè–©Ë錕z¶‚ €0 €0�³ Äf³±D"à‘¯Š®€^;·y–—ÙYuòÒ\n©Xg(ªUÇL³lp˜Jô¨øazÙ†¶�¡Qfv{‰ €0 €0 „g Vf¯™ƒæá3ÌOç2{˜6b%ë­32QÇ×e�t*ÛÓ‹ÝÓ(pe—[•”Gd|»x‹*ÝFÉþùØ6<"J�Î€Ò lvÑÍ 4@ Ñ á(4ÿoΜÍìXÜ%‚0 €0 €0PY `ÅxˆEãòÞìàçùÌ�5ÃÒ‘©g­¥r‘'áSËÙÉ„‹ŽctÏp>Ãô‡ íèëÙë+•JÞ3¨(…a@„a@„�(È#|‚[äáì ”¹ï4>,´§�§29z%½Bq’æ“ÌÀ¥ˆ†mfhŒ¦ ë©L–Qò~بl<Çn§U8;º­qÄq4³ñE# €0 €0 ¤•�‚ò0³Ù!&ÀÓ:ªL &³Ù™xV$§��™ÊÞÙθŒW„a@„�*`ó”!ÞÎ%‹ÆƒŸ*×2Ûsy³=�g˜ÙÈ0©�a å å8^è�àbãÎG V‰"ê°ÑAXö±Ië£÷—H�p>˜F—#Ža4Û»à¤hã‹- Nô¦‘ º\¼t%§Ž£ÂE·ó�΀p«³!²0 €0 DÌ@l ´�ÁwM $·\œÊlû¾\‘=ßj{Ú·Œ¡m¾+Ð)ð j ¸Ø.žMOp¥ôtWJæÇÅÆ'„Ýå 蓺àÂùØ€¶&QÇ63 ld[cƒÀF)õœm3hü lͱ3�0 €0 €0=x0;65ðØ*ÏfdŒžÍæ:A/0Géñ­ëu™mŒ¤|lÅ2`í&£Ù]¬q±acÁ‡Í |�=» w†Õ�]lt{OÙ™-¹×3z =;‚#Žm¦4î�ô¸Fn ®l¸Éf‰b±�áèK·L*á’ÚÛ:Ó6�0 €0 Â@®1€ã!�Ç^µ½}Bû±Ç›úèÌ™3·lÙÒ¤I“¿üå/uêÔ�~Μ9÷ßÿ?üPZZ:`À€OþøãQœtÐA˜Êž4iÒ�wÞ‰)ntýéOúÃþ°dÉ’ (ÇlÿN^f{E\*xö‚e€^¶´™Jd½ëbÃf²ÆWê©&âPGv±ÑíS—ƒž/OZÄè…ž5l“JÎ ˜64î±|p8=6ÎÁ¦”ùäÑÙ6ªË¶dOÁÆÑìÞDQlK^¶”†�§YRÛ@%)߀0�É Ô©»’ªÇîÓt<Ÿ¦8¦¼(øcœì\8ää·‚;¥äñT§ØÝ:�{ʯIg8Äú#Ý—æˆô82�§ÞÞ7�áëò7ÿ–¶ˆ«6RláuTGl;øõ޳ÙÈå½÷ÞÃ:pÌT·lÙòî»ï†æóÏ?G™=xðào¾ùkÅxÔQGA?oÞ¼¶mÛrúíÚµC™�æÂ… 7mÚ„5çª ‹ÌkÖ¬9wîÜ�¨ÌfRXà»ÌD7…Ê Q¯Âñ´�‹Ò«oŽ˜í‡‘?Klæ)(4Oð@J{\p÷OÌŸuÈJϽ D·ñ‡µ{”�4V"=¢‹�nŸí²qšÔp ÔÙö´ 1pO#–'¬a“N;–­ñÌY”€0 €0 „d VfoÊÚ^;½ãÇÊ•+ñp5JëÑ£GCÆ3Ø·Þz+Ö~£ä†²qãÆûì³Jñ5j°wII 4h®[·ßhÚ]¬Éj!ùl¶1<¾Ôï•ue�¨WYúØÀ‘Cè°ºœÈÀ?¨Žà.Wv,à‡K[%æï›ÔÆßÝ�%ÛÒF¶5¶—Ò0ç† ë GèÙ2‘ è¾ÊاK7æÜl{Fp±aãpB ±‡ áîÅÉèt)%¾•ÒÓ!XïŽí}b)(Ý€Á=i>lÃ)éP*¶QMXê6*œ� {q„a@„a@ˆ˜� ‹Æß™GøàØ´Õ; ÌZ_vÙeXŽYhÌEwéÒ¥gÏž0íÖ­¶4ûè£�PfCÿÛo¿±?ªkhÐTöúõë¹ç.6Îj!X™Í7‚Æí#S  õ*³¤6¶{RN Ãchj\ø6ôIGáBˆ‹MÒ@ŽFþ�ÃP:BÁQYîþúá E…ˇ‡ìbÃÆ¹$ô¢ÉÜò0 Ö ÏXf";IÃÑh†ÆÑsVrÐÐF&Ò„a@„aÀ�¼Ð ·£O{ÂǪ e}êíƒÇ³ÑQ­Z5¬ ÿõ×_u£¼¼X è§OŸÎúï¿ÿ^­!oÑ¢EQQÑìÙ³»víŠÞE‹a–»M›6l™íB€2›ïÿô[C}üÊ Q¯²t±Ñ1!s\Öû‡`³H„cÙPÐØ£Kš¶r±ÑtGÝ>ZY� 9ø'ie69ÚzhØ €¶�åâol÷B£ÇrÄq‰å™dP¥�pP„*±?zæÃU’’TÏÐîu×D…ãQ,…a@„a@ØÎVŒcB;è±ã¢qìŽ=ÌjÕªµ|ùr,ÇÆfØðì˜c޹âŠ+>þøã}÷Ý÷Ë/¿üôÓOÕÎáØcKÊ_|ñÅ“N:iþüù¯¿þ:^Ü…øØ‡¼OŸ>رü¶ÛnC•›ý÷ß¿aÆASËX{×2›ï}ýoý{ .6Ì—c\¶ßI]lR¤W¹»ÂyI+©A´'×1í¤A]p\l’Ê=ТN:ŸúÊ#éçÂ3®n�J>Qᤒƒø €0 €0°˜`¶ö3ÛÁÀ³Q·íOtcv¯ÎÞ°aÖ{cqøÈ‘#á´çž{â%^¨º—.]Z¿~ý«®ºJMScq8 î»ï¾§žz ¯Å>óÌ3Q¢« ƒ zà�Î8㌭[·¢8¿îºë<ƒg©Ò©Ìæ›ÑD7ŽÐ³�N„R*/Ý2c&ŠkØgxÃ1ÂtÌÜ…CÇpŽf©� �˜ ƒ"#‡Ôc¹óãËÇÅÆ`Ž5 ù,ó0mŠl û Ic)wÏtdGï $»à¸Ø (ÌTh�£ù„a@„a ±-ÐBøm¯±áŒ×_{B?ì.¬Gùmë±hüêøawå€&y™Íwx­.óàõ;?O¶TBRÃ@Ç7 ü›7u@V¹é6þQ G£©pð­á”qÐXðòÄQhüíbÃÆ‰„›ÑŽ‹a‘†.sV‡Cu%2`cGÁGùŠåƒÃ™¸Ø°±¿ C!OcÏ^ÁÓÀQ™Geåá‘¶ÑtŒ®›Še¤­GwÇÑ£Û² Ž�� (a@„a@¢aóÒ±©é€GAìl91�¼Ìv„Sw«>·°Àq±1Â)C™�M Ä G�"è]8t± ÝfÞ}\AGšJ,ÛW׸ðã2.G„6N}êTèÃÉXٓäc7¸r�{,ÿÜqüsÁñ´ñ‡•^a@„a@Rb+ÆC,�횶ÄvJ9ìÎÉËlÿ»Rƒ%ã¤6I Œ ‰š.8.6‰ðu½ Ž‹�Žé#»@¹Øø„P]. .6þ�ÜÜ-ý#¢7)TRƒtRä’pÒ!»'ìåÈŒKΉŠj÷œjöÕ…¤8ž¶ÒÖèQ”ìbKG3_4€0 €0 ìÀ@¸Eã!*ó¢îŒ�äeöÎÈŠŒYªŽ©*«Ž{‰, €0 9Í@�÷fo'BJÆí\¸J®œyN:ÙwÆ™m€¼’Új(žPŽ£T€þ.6.á\pôúg•(¢ŽO›Dø¶Þg\F åë™’ «kq ³�TPœtÚèTxÊF2° 7ö¨p�€"Ÿ.žä$U¦-PÒL*ÃÀ8á9^Ã̶1 áTÆS„a@ÒÁ@l6;ø³Ù2›üÜ8•Ùö½— =ߨyÚ(eê6§Ç 4LÏÄ Ãųé‚ãbã ®”žîJˆgŸv—gPŸ|ÐÎÇ´5‰B8¶™a`#Û6J©çl›Aão`ãØ ¶��aVhì¡üdÅ(ì$Õ¸ômÛd�Æ>YBNŽ4ëN�$, €0 ¤•”ØxuvÐ#xa4BîÙ'/³ùþ̸ïTz|ëz]Yì«çcÃöž6F,ÓSf4Ï^¥t±ñqç.G63È8Ž‚áΰº»‹�nï){"³%÷zÆB¯¡gGCpı͔Æ=�×È�Á• 7Ù,Q,60Ýcé–Ie#\R{Û@GàaÚfþvd´Düøãdu¯23PåcIš‰aÀ'‘3× ì^6A„a@²•��‹Æe ´À'Üõ½iúí— ¢küo7U¯‹��œHx àÀ·­:u�òráÐÅ&PФÆöplMRØ^¶Æ0ó4ð�ˆ_—ÂÇÅÆ?Û ïÕ9Ñå O{gK/ç¯Ã�í„ÊxÓÉÀO|øòåËÓ]b €0=X1žŸø#‹ÆƒŸ‰ä³Ù‰0Õ­[¢^è“8Úø„ðïâû~ŸL\lü£¨Þ¤8œ[ºÀºØ0²�q"Ö'ÊŠõl©Gá^]™Hfw/vI„•>ª@.8.6Q�«’pÔìóhk*)� �ÍêñæÀu˜!—�¤‘Û ÿùÏnݺõÊ•+GŒqÛm·�5*·‡,£„�g  œ0¡ôá4DÎÙ'/³=o%ùͳ,ñ�8[ÚÔ%²�Þ€õ±a3YcŒ+õTq¨#»Øèö©ËAÏ—'- bôB϶I%gL ÷X>8œž‹ ç€`SÊ|ªÑÙЇ°�— eà$µÑX¶AŒÌ= Ø]«oÛÒÓ Æ¶¥Ž“º¬â"J¢R!Â@n0púé§«�Ô©S§_¿~(¹sc\2 a@Øyˆm�üÙìØ®iÁ½v^–c#O^fÛüð�Y¢{A¾‡³}Yãi÷}‚í³Zàá°ÀÃIÄ!øžö.6†Kˆ¦=.€¤>4$Ñå‘z !h,ž]lB�Ÿ±.žW”6ÛÆBظÄr±12‰¶iŒË3Ÿh#z¢©¸IÏ‚§¯(…��™�3ftìØ10ïÞDߎ§ó© ˜Úõ¡£FQ­FÛ@¾K“‡Òê_i—61}ëCƒ{:¼t}6ž–̧jÅÔ¥�>ŠêÄ#.üŠÆ]G?ͤ•¿Ò�)´ÇÁžÞA•7�£ñŸÐüÅT\�úìM£Î¢Fucã>¢ûߤo~¦²rêÞšî>�z´ ŠímÿãMO/ÿ¯ óË/®¶KŸîmF]XÔ¨L—¼ôáü›ŸÛøßeå›¶ToݸùUýšœÛÇ" öå›fÍ¿héüu…Åù]ú4>uT×:�ªëïþuÎ W|~üÍ�N¸¹“®'ÿvÓ#«Æ°yþ/yÅÕjõéÙdÔ…�vÔÿžzcÑyÃóK¶…®{Fߦ_.„áõÉMç�Ÿµzþò‚âÂæ}:öÕ¯¤Qme³êÇeÿ¹v§Ì)Û¼µ´uý£ßûSõúµ ÷0ÍE7ÑÿÆÓ¦ù”WLuúP‹QT-~•þt-{~;`ÙZjq/5ºb»&¬tÓS4þŸ4ÿ·ø…ú4ê�¿jhËV2†ž�L+×Òn hð@:눰14¿›þIã ù«¨¸€ú´¤QQ£’X÷Ö2úozêZ½™:Ô�éh¦¹¥GD½ŒOÐC�e,D™Í·†‰îÒ\îá|lË! '‘A¢”á¸è+;ðÃ¥­ó÷MjãïîÂO"ÙÖ$òeΠ֎гe"6Ð}•±O—n¬d=÷úà²aãpB ±‡ áîÅÉèô*%¾u%0õfÏX€…‡‡ ’×c6º¥a¦|õo0¦®×eDã[)ÙW·�/ëuœe…o�_ „�\e`Ú´i¯¿þú_ÿú×À,*¡c©qZ»”^>‹þ>�ΛYðOzõ|:óMju0¡Þ~îXºü[ªÓ"0¾í€ˆƒÆR‹.´z)�>‹H7Æ#Q�þtÒm4´典˶#Å4%E4örê²-]Eg=Dï§)7Çôë7ѧÒ�{ÄÊìá/Óïo§Ÿ¢Òx¥ëNáÈ/)Þcìõµº´Ú¼tåwgýå›�wv�rðJ·G×i#«Õ¯yé«ÿüºÿð:¿Û³¤c”•^4vÿ]ê®^ºñ±³>~dà¿n˜²ý7‘ÅóÖLºÿû{Õ�ŠTÒ-Ưޥ향+~>ë–…oj5åEX̓÷iõþÃ)�çíZXRtøØ3wéÒtÃÒ5SÎzaòÀ§��r L×/Y3¡×ý�/;èÐçN/¬^mù׿ÀÒ"¨6¿„Z�¥’.´y)Í?‹~HâWiËG u¬z�æE» Šíi_RLcS—V´t%�u ¼ƒ¦Ü3|hB¬Æþànjßœ^™N'ßNÝÚÐ^­=1(KªÑØ#©K}ZºžÎšDߢ)ýcîÃ?¦Ì¡  ÝJéñ¯¨ïkôíÔ|ÛoðS2-Ì#|‚…eA=Ä>Øl6ß&ºKs¹‡Kjcƒ'uÉ–i M� ߆>ép\q±IÈÑÀÈ¡qJG(8*KÃÝ_"œ4¢¨Ð�bùàð�]lØ8—ƒ^4™ÛDÃLÅÆ܈kdhôFØôWÚ¢«�ì´×a„çQ vNPcßsÏ=·ß~{Û¶^²“SaqŒLVãcÙ¦¨YŸö¿„^è·­ùÉߨóɱÇ^§ÒÇ�ÒŒ§èÐ(¥_±v}:⺯"b“ö„OÔÇ�·!Ö/¥Kޤ~÷lkž³½¥Áýhø+ôí"Ú¯]á[ÙVw¡¢nvɱ_õ»M�7«¯„ò­[óªÖ­Y 9Eq;dS»~qïKÚ>Ðï#F-++üœ�O¹{ï÷˜ÃÊ…CÎQ…õëîzÉÉ ú]·°¼|»�Ômȶ \ÌTwºä€wû=©°gÝ;µNû†]oè­š»tjYÌ&WiµúÔðš[q•ê–&MxL0&¹J‡ƒ_nʸЃ*θÕ\\y½ «r‰Oo$n£J—DnGÇxV  LŸ>}òäÉ�=öXëÖ…SÏiVLƒEãàÆ‡ð®MéRÑ”t@�¿Û¢iðÅ8x 0£¿äÛ´ïaÜg°à?jÇï›á†±¡{³«øqŸ̾}Ú7›ÇÍî° |ío¸£BÃZ]w¿<œ»é¥Y¸Ê}âÏ/VlâÏZ¨Èûã´ _�ûãÞÝEsËïûæ<ýÛƒ‹ý¸—WX¡�5íËÝã>l²`¼p¤u;¡ùŠ·SÕ=²+kÛ}/ÿÙíæ¿½—˜î§¬N[ºjÜ·ç/¸Cd<´óÀÚw~>{ZÿsgÝ„·gÏî=¾r£êÇô8úw�ÂJ£øw÷4Ø>ZiGéŽI�Ò2 Ò£H †â•áã>†Oø{ý®îmo†Ä„ÐmÛ¯…Zᇠ¨a^ÛÓÖÀ¸e°à’‚ø¾MaÌ/p~ShT&,‡?³ yè.‡øn‰ÀO��âFÍ A»³4;¿½&eÌó*øÞ¤áP�º‡º,  M0–äž�ú(tODr ±«_0ŒuuYvü‚GîÕ™e�Œ”É<&9¶ÔÙ² ²MQœJ“`¾&ä:=ºÓ—z"’臇î‰Hb°£·ë5af +PæÀ›±¤(J�sìÏÁÌQ@GͰ‰ðÍJX÷:ä~ Ÿ?ƒÆÀÿ¾/E çØ>‡™çC‡Ì–�á¢fpÆPg",Øç4‚š£Hà-4´š�¯Îv»{KV®£"¯fËç ²M²Égi–B #"FÈü •sSᡦLHN¥6ãœE Tš‚?E"%�»Í…Q–<‚�>M0¶3jú;.¢Å2d›ªÂt¸‰.;� Kë*—Ub‚!°³!Sa�Î`Ë^™Á`â´“ˆJ² 9aL™`Lr™`ä\²JzÁr¯°uŒÌfg{‹²c“«²d––$–Qìdʰ_|ñ…£[2þ7þ5Ÿv”­n{Ø(Í‘6-¶¸¯û(Ú¥õõ˜2îš­¤Œ.9ÌáSæÃMMt. IDATàÉ0cXè�gò¶tô|î¹îôú× ™M¶·N™»fðØ63FVÅÛjm¶ü¼`BJä³\›hÕýÍ”uo ^rÇŒ®ÇžV0a:”}ä÷ovlþuß;w/Eô�¬Ü?íZ6{óßù°»gÊÇ›?ÓpÆ“i§� –"·åë�e¿{{õ”E xÎŒêžvôÏ8߯Ç�!óë9oHºs ü=šÏ€ÊÚQš5ð¢ñšý‹¤Žº1ås<fŒ„Ó¤ËÂg,„»ÿ k…ØO>Îh}½;G� `Ê*<fœ§I·K$%À㧆vÜð©ãM_…lnÌö¡;ŠÐ4Ûý]ÖÅ›K|ûHœÕ)giÊ©ž F©_aPzKQ¢ˆ#Šw;@ M0޲낛�ËíH£É¥ÇÊ}LÆeȃ©•¯>z)äá—­K¤ŒK`© ƯâMr™`D…Ê÷åW‘yb—WÈ®ðÇ軈8L°åK�ïÆ„ÞÚuÍlhPôÌý¤›àÕ³áÄþÐøôГÆ7ÿ —¾å�2Ÿ��FÀÐÙмhFd?œSð£ÜC!Ÿ=ží¹ó˜90â]˜}¯úx³oƒó‡G.‡›ÏñgXIJqÌGëFLi;û¡ŒÎEÞ¯¶ýƒ¯+ÿãØ 2óäl3ëÐ_Ûjô=…¢¢1æŽY3mÄò!³OkÖ9ôb-±UHO~fÃù�üü1—,lÞ¥F¯aEJ*ĺûwç˜÷¶�×hös•:ù#¾O¿«Ø¾¾Ü+/kÿÖû^¤¦¤u?ѵ zŘ?Ž˜}Þì�µ:‡o.„7°ËGÝF¯Ÿ³ªÁ¹Çm^°vç¿�û?ŸV˜·���# ÅlH׎R̾cTëIGÕ.¬Èû¿øDñ¯Ã쇡èQí›N¿{u|‚Þ¿Þ¶ýŸk¼g¡È1KC/îš}!t.z×Â΃°?eÀî¸ç¨š ×ýã1ÄÐðvÑxèáäî'ç1F) 4¸¶àY³ïºëmӾ󊥡«%ÞŸ>ÏɔӲR0 .‘`X�Ò €Ýÿ®<û- ß^ùªqù’ïèÜ� äåå•/ lF›��ݧO¸?Ëéh$@B2$¦pàbà…÷`ÿòvø½Ù› zsèý49Ã&OQwã¢M½uu$&‡¦Ð[&†3n_Cš†}…§Ë7½ §EžRä§ ÞvK¸ ’�–�q|{_ �ÏóWAEª`νÐÕ`zÆ%³m“…;æ%ô $']©NÝûö¬õæ–W>Íݹ7�”˜ñ�c?| ~:S‰Þëa²3ìú„w“’R ÿ$€±{/VBëþåqÝkõº¾:âöÜí€YžÐHI.À­÷~‰ö滟ÏzsNpßìªÔµ>­Bkñ…:�tu�o@ãîJHNH<ú-Âõ{ø?Þ_²èþ�l̪T/£ã=[\u’�Ü5¾Ó`¹©Ú?&@ t| cáÏÅá�°¬1´üÂb•[e9ÚÎÄé(E\¹�œTô@ý0Žï÷ü2|²‚Ì*¡—f?x•Ù_ŸŸÎ–ð|øç‚ü¹¸%”nÅN¸xlʆŠIp~xŸm^1äwÞðhUÆÂ¬Y³ÒÒÒœ‘ν⿬¬w•"È¥óì=¬r™5èÌeÓ˜˜X=#t<‹ôÚF]Ðöm5»lhÄ£`XV à9v1ŠÏ©Y�˜(ðPЖ¶Ý倻ïÛ›Œ™�Á®+Š‚ïX1ÒÚ½·[Ðz~Óxä¿p�ž_g˜¼Tw*ùMÚJ—ÛæñÁï-Cê>5wË®(�7ŸµchúϸÛõz÷Ÿds”"cÊ1pb®wf›Èàë|¿×›÷XwEã Ú|QmjÀo×FCìGlb>?Í#s˜N³-^ô3B¦°¢ˆ aIy|a„ tf0Á˜¤3á‘è\•]F™1–$&;~Ýï0.%‘ˆµ,I§•=&<&™ÓÁV¨, Ž'Æ¡TÑ¥ƒN¹fÑ+{ä(Ý1b­€ù—B_½yH¬‹wæ§‚ æ¹r…Ê3UR¶ »ÿÊö¨yt¬+À °.À•l÷f‡nËÏw‘…¡(³‰ʉ…È~´å¦À(N¥i‡!~ÙÐÉå^Û$Ðã�‚ºLxL0D¨®3(N¥)H,�:¿¥GÏH0».;?*†^ö˶nç—1²�x=DwZbÜòè´È`é”™=ÛzÍž©| ŒÝHõòâ™KÏ^~<ñÔY?žuOiT>žF¯OÙÐæÒ©Ð£�.bÙ&š`"&ò ãÂô!;s’†�„'ZW�Î`½=JFÑÔ‘T&_,¶2¬Yöˆ!Ka$`qe/Ûyåo¹l�4v£‹§†ñÌ;Ř™`XV 8WŒ»­NΛKL§ÙtžíükÞ¹WÔf‚¡Qæ%|91L44ÁD)¯7I„ßKÄ\ʗ믄–­DéMŒÎ�3¢>¸é$Îň@Œ²ŒÕÙbíeè5—�òb=|ùu }$÷�J‡ø-+eÛ¾`I¨c‰ñËéc.úañ‘Ó¯a– ž®C?KÊH‹ÛXæ=nÜr$êׄóºÇ{€Û¾¬×Ü /Å9ãíÝ'Æ9ã‹^‰gÆpN<Óa®ç¬�[Æý{ó`ìjßÒáãV³=„øVqi%2zZÄ_Òv¿¼åS"Œ¢bļ ¾„7i8T§î¡.KÃDCŒ%¹g§> Ý‘œBìêWÜâ)ÜŽ_ʽ”‚be�Œ$2� FŽõ×vÎî�KÔ=4Râ‘Å!gi4”�(MW#ÂX±ÙEa¯ÒåŒWÀ®šz.WáÅ–Ë–mªGq*M‚ùb˜�ëôèΈõ˜„˜`"&b+À °¬@ùR ô4|u¶Û�ß›íú0‰¼š-ÿ"—mJ%Ÿ‚[)Œˆ ó+TÎM…‡š2!9•ÚdŒs%Pi ü‰”tì6FYò6ú4ÁØÎPH¨é︈Ë�mªŠ$RzÉOHsC¡’‘VôZb”¤–™ mŒb×”©”JìBÈï0.…Jiƒ0ÌyÞ¹f¹WØzv££4e¤3�žËí¸”Ô®šæ¹äé5‹¤Îó\æC�3:ëlΩ íʦtvä!ŒÂé¹i’Ë#`§¡ �FNÁ6+À °¬+ *€óeSæ€û§¦©‰Ë]Ûh5ÛDü­�›‚TœJS€-�Ä£sRWé2ìbç·�¥\ŠSi *'vÙ¥‹è·‹Õý¢Ý1…À3•¨D¡Uœvä²_ „ŠSiZb”J|lÊÕRj�_‡)y>àŠ'"³’Hoš3˜#õ,ä±$±tRˆgÃ’ÖÒé9ZÒZ:)ÄÎðeÇæì×s)¥)Ø,�ΉLz-i§Ò´«Ç&×` PœJSWlDŠMñs“`XV <*�€¤÷{y”*Ê1\{¯ ˜}×h´ißyÅÒïÑxú<·ÖO¯£ÌÇá¬+P°û©Ç3õ^y ,OˆÉÒ•À¯†K2W`ù’ïèÜ� äå噇—advvvŸ>}ºf½_¶ïÍÎïåaåËû׸)Þ‹fÇ}ù“÷r=E–‹{³¿Œë½Ù—Á;ž¾ ïA ®÷fw«²zÖ¬YiiQ=Bü—•µ2Ò]|ïþ@•ó£¯ÁuâR�˜˜X=#‹3èµ�º ù¢ñR2:.“`b¨O=ˆËsl¢q+À °¬+À ÄP¼”w·ÞËÍ›Kxš ´vÇ —Ã˦þþ ˜ü|™`J£Ö>*I¡>ÒêªR¢˜fÑó²‡`XV€`â¡^žâaš׋Zâ!Crx�9U•ÍxþJ§°±aRÄ®x_˜Ã2 UÙÖ0z}¢Ñ–c=(P¶H‚p+À °¬+À xT ´šp¿{ÌVžÃxšÛ¥¡b9¶ÊüIy&Š®4ŒC=År ù’ÔdQÔãK1¥‘„ETIl1¦ˆ)?“³¬+À °¬@q*€oÀ½:Ûí^œ%—ÒÜ<Í.¥_\„²éÔ<Ž»í` íµážx+À³ßx+ÎùXV€`X�2©@hšíaç«Æ] |o¶kÉJxžŽ‹ù!~–ÕSóX�Ë­†±®§„r\+À °¬+À °¬@éP ÜÝn� 1a„¹sçîÛ·/??¿eË– 8þøã€ÎÉ“'ïÚµ«^½zƒ :á„DÔæÍ›Ÿ}öÙ+VT¨P¡wïÞýû÷þ`0øÊ+¯Ìž=;''† R»vm9Q©¶M§ÙúÊž2µšŸ�( Œü–†˜bd›Bt§î¡XŠBÃU1Ä G)éDÓ!‘ [§¥Œ©0–xXf£^ÄÈ~™V Ç.K¤ Ì#zurÅOM…Í.в`9–l;ÙOÙI"ìNü”‘ CÀ"ÖCxC¤ž”•‚ÑJ.@¶B‚!¢ ý„¤Ò«ä!~}FÌ%kv®IˆA –h•Àˆõ Þ£Ðzh:W(FAÅÐè(ÈÃ+À °¬+À ”aò“òóMçGePBÎ;K®ºªbÅŠ‡Æyõˆ#¦M›¶|ùò§žzêÑGíСηï½÷Þ×^{­V­ZøH´;vìˆ];vì:thzzú¥—^Šìo¿ýöüùó_~ùåêÕ«ãç}÷݇ø€‡¿­´YF�ëç‹8C§%ÌA£!Û!–]+÷Z:e€Û’ÓÒ‘Ü2ÊЩÀèìYñ‹ �&0LÄ�@gÓ=޵á¬a4Ù•A)MÁ¬8•¦%Ʋ$Ë@K¤âÔe�lS ¥“z=–´†NK˜C%„GC¶åò;8M0r¸¥ªà«¯D—°©i‰�èÔÃuOD°¬+À °¬@)V'øv.×{‘ðúõëãEÀåh|eô1ǃ6¾U»[·n8ÇF»G�Ç{ìœ9sÐ^¶l®f8‘¸X}ÅW̘1ý¸Íœ9óÊ+¯Ä©xRRÒ�7Þ¸aË®2ðù¯tF³1lôã¦8±Kö À/�ä\˜›¸‰\hØå•‹AL(¦0ʯÂ�’H!·«S†aa–Tá’¿ÒùeÅÊ„~ü”Á„±tR/q*0ôã&œh¼† ™ŠøåXXú#bE¯Ì#‡ bp‹ˆGÂ0„À ±é~ò(•(„¢)x( ôã&W¨`°WÀ~¹©`d6†<–›ŒTF¶À.ÙiIëÊi™ Ð�›žKö @Î¥4©K!§bP."Q¢Ð�›p¢!Â0 ÜšrITgܲs"V€`XV€(^ò€»Û-? ¾7ûóÏ?þùç³³³5jôä“O"áüqî¹çs‹-Ö¬YƒÍµk×6lØ0%%Et¡gÝÄUîmÛ¶á5çÂ�ד7hÐCÚµkG$¥Úˆ<ͦᙜ“Éçp¨4‰ÊÙQ"�l;Gé½zvÝ£Gyó(âD“H¡²¬GáWš‚~Á†Ÿ:FI¤�#r2ô@ÝC`gC TšÎ±1êÅ„øéK=D(¬3GôXòÈœh›`”j*(MAN`ÑŒx¨Èx·¶ ¹R¤Ò4Ì(¢D:ÙVÂ#Ö£g×= §Ò”³»�U¨DS!Qš–!ìdXV€`X�²¤@^b /Éõ<;/±È½Ù(ÈYá-++ëÅ_>|ø¸qãpÊ]©R%Ò —»8€MÝ/œ¸ކ‚¶!’Rm¸˜fëã,Ƴ4L�§¹¸‰ªŠ½E,ÌÇ’¢¡ÂX¡’\9å²e€ì×íhêÑÙŠÅ#Ê`Î#`„™KT,ƒ*oI�¿5] ·x�ÁÙk~çìÜË °¬+À °¬@Dòòq�€O?‡Ïæ†ÌǬ#ªT©rÇwôíÛW¡ÓÒÒäI2ÚèÁ0üĵkŠ6:q5�r…¸T¦Ól>ƒtøšqhòæb×¥PÙÁ\ù‘S”$Ï•Dv5+0WyËØRCÃʲcˆ�Ô†låVÒŽÃ’VOù<*xÔ¬+À °¬+àV�üÀÝp;ûÀ·¬½0v‚u�X”Æ›«›5k¶zõj¡Ý©S'l¢ÿï¿ÿ>tèPjj*6Ñ_·n]qk7ÞªýÛo¿5iÒý8ß^¿~}óæÍ‰¡´¦2—À¹�é’¡|zÍèÑ�J”ÞTB”¦Ž�Æ#r’È-¿ ^Ç Gq:7£QÌs,iB†3Á”±8G‰Þ�…›ð—�èqhÊ]ñ±ãY�’+>tÈbR�ŽA��S÷;d×»”p¥©ãÙà °¬+À °åS�# p$!àvÏK(2güøã�÷ïß�â»»ðí¦á­OŸ>óæÍ[ºt)úñIã¿ÿþ{Ïž=ÑÆ{­ëÔ©3qâD\¾Þºu+>]W¿…ø\pÁÔ©SñíÜÜ\|Æ8>Y­mÛ¶¢« |F^ÍÆù€8iÓOÝ”©BɑüfyP–åÀCƒ•Èé`ÈxÃ\2Ì�Ù¹‹Æ‚0¹»(Âë`ª'JŒ]j¿\Œ°©%JFÚa”�ˆM/!å,võèQr=Ô+S ~‚™`¨$CCNG‰ cÍ둳ØéãŒ1ÏeX|”0“zL0Q–Aá¹cn8æ<ŒdXRà�á“·MýêÈ®ý�ŸŸÞ±y“G¯«Ò¥5ö¢s݈)‡·ì®Ð¬nógoªÚ½=…DkÌ?M…ì]ùP¿#ôyšt�ÍËaæ0ظöm�A_BónÑf)Œþ4L�»ö`2èØý7téoÿž V®�`>œØž�||¤ÑÃQ>È 0½#4}ªt�mïÁº‘pxCŦPÔí_Xc´ÿn>zïÔOòvíÅ/±BÇV™�ÞV©ËÑïk× S·ÞùtÍ‘7e޼)ÚLáø™Ã-žúÇ�]‡òó¡AÇç?zRÓ.µ¿{uõ[7|�R©à¼½ÓÕÍ.{©«/éB$–’¢ÿàŸðÇPØý%äç†Tmÿ9$×ô%éÒáü5õûC»²QÒjµ´_f—æ‹n~}Ý›ßÿ‘ìß¹ìØ;Ï&O4Æ”á¿/˜ºyß®\TµYÇŒ«mѪKÕ¼#Á7î]óÕ”MÙYG2Vè7¼é™×Ö‹& ÅŽ¾í“©{÷îÊÃt­:V¸íÑÌö]*ååå�±ý£W³ì 6:6eȳµO8õè�Ìk#˜�Lp}ov04Ë>z{ö×_�³b|Ù5.Jã’õO<�ÝmÚ´Á—uá;½ð­]øìq|}>Bý h?óÌ38©Æmœ�‹·ya×å—_Žwnß|ó͸Ö�ïÍ~ä‘GÐYf¶ÈÓl*�ÉÉÃF§ÜŒ¿mwÖ.*ñ«f�Gñ(MÊ® b‰”a–tʘhl¢2Ld󆱌Šfhr¬!¹óñ#Ê6’ËMCÛ9ʲ`%Äc^Œ<›2ŒR`>Ö£0ëÍxæÒ³ë“zL0:³7�žK÷xcæ(V€ˆ^�:ýÏitÿ‰i‚9‡×�|cÅÅwÙòVÖ·+ð\Û�ÿSµ[;œo/;ÿÁN«ÆWh�}ºCçþpöý�š¹90{$¼r1<´S }?èõ<Ó |}'mÿ~pÿ-�V rÁÈàâÛ`Ë·p0þ;N; _ö¿ çô‡¿¾‚ŒtÆuúC£û!1 ‚9ðçHXq1tÙšiŸ0¿`¸ýCXÑ/ä©ÔÊ—”Uû÷­yÿ€„´ŠÁœC;FŽÛpñЖ[>̇׮ßõüÛ©íZø¨êÉý[ö¼¿CjZrnΑ�Gþ<ñâ¹ÿÝr%¦kÞ­Î_ôòeD*‰¥¤‡·ÃÏ]¡þpÜ�P²W@‚os¦ýOmsŸ¤´Ô¼œÜe#§}ñ˜‹¶<Ûiì5¸‹Ú¶|¾r^¯ç^þµT¯íýë]r“ iI‡sò¦Ž\ûØÅK^ÝrÆÇcÖãûáy�Ži™¶pÚÖ'/YÚô„Ê�ÛUöšäh\ßþUÜ_³bZ¡œà¸‘;†^¼áÓ--'=¼cîûû&/l\·aò‡wßqÞú÷W5­]?ùhX\¬`bB0Ñý4;±ÈíÜÿýï-‹=3¼é]¸š-¦âJ¾"{@xSüe£i4ÍÆ¡ây›ó€#"žÙ#ƒLbg;—!÷Ê ²_¶½a”(¥)ó+vDdô%£]3b"hó†Q¢”fʶKáÊoXvDNžˆK€¹“Š´ ¡^2L`qØ$¢Êí ™Äαr¯ ›ý©",I”(¥iW�!Ì.œý¬+ +P©Eèu²¸åƒ�¤„ŠÍꢽyüìÌKNÃ96Úµ®8cÓØ�·¾úY£BS)¶Ì$ùAHL‚šÍBÍZ-C{ ¶� HqF�”͆š×÷+pâ?ÃÂÃ/ÁªµÐùèðÑ^/V%i€�$¨`j�Î�Ÿ É�TÕ¯uW¬0¥ExTh…™Ò¬¾(¿ÓM×�ªõäàÝ£ßñ2›˜Z-ªòCBR f³ÂY_‘iŽM°7·¥¤ž�J-¡á=”im¼q[FUnQ[øÃ?‰éÍBkžò¶fìWÇ\Сb�)ä.ov½¡gqáþ±Ôiú“ÁÆ_³[ŸV çØhŸrqíÊ5R6­>àË4»a‹”P²ð!ƒ?…õ›…šs?ØwÉ j8ÇFû¢Õ^{|'®lãl<„‹ãLHð´š��Ç2ËB*ÓivI«·¥È’6 ®§¸à㧸”缬+À ”7¶¾õåšA/ÉʮԺa»OÁágÿòg�ëÏ!Ò;6Û¿äjú`,~ Þ9YP»5Üü‰„Žo}ƒFAÖ>hÝ>yE…Î]é• USÕU{ë[ðû 8’i­¡]ásþ†ÛCÞ~HÌ€6ø8ÍÆR³Þš½eÐãÁ¬ý©­›6øäEQüîÞNª]#ãâ3ý�f#ù�o­}wз9Y‡ë´®6èÓÐÝ­¸è÷×¢íÃk½‰×"4=µN(� ^ IDATßÇ;e6ÏeøóYDÒðZýî/BÓìe} k!¤dBƒa>^‡�5¯{뻽™›u°Jëºg|2DÅÁ-Yg.éöñ�²3z{þ[›Ç Zu ëHƒÖé#?鈄�ÎÏ|qÀÊ¿Wì?¦UÚÂ÷·æçç·>½jô‰Ãì·²´eV°iëÔ1Ÿ6@gè:éo%8á_½$ǯt.x‰ù.i ]¤`hX�ÈÓlËUh‹B¾#ÙqWŒˆr¢K‡¥Ã‘à�Â!ÊÇñÆ'‹ç‚ôANRXðÇs,Î…yoœIÀxJ‡1Ò¸ä\ú˜Àp e!0Q‘‡0ŠáŒ¤^%ʲéo.K6»zXéµd�+W𢋢,{åp¶ýU ö•ÝqÏݹwÍà±Ë{�ì¸ø…#{$V®HYÓ+¢‡š>'^ ¸gï„iƒaBø÷b¼9ÒZŠ+ÏÜwî†Á�@Ÿ›`ñ‡G³ý¾n¸žü?¨R¸"kÃáÒ]ûJÀ=w'¬šž¸ P¡!œº;toö¦—`ÅEpâÏP1ôøb_¶*Wž‡û‘�{¶~j}Ÿ;›,~#wí†�O¿�†/ü ÉIW6Ã={gÎûƒ¿ÛûÓ¡‹/Ä+Æï[ѯz£ôì]‡fÝ÷ãóÝþ÷ÀoÿLM­‹ú³‘´wHÒ#;aÛ;pü4h;+t{ö²ÞP¡TëáO:€ÆWžŒû¡�ûž:¿Ï =?($Ÿ_FR�ªuF;´tuÎ’ß6õ•ùð-Iµª‡Èñ9W¸û½¥Õ¨pÉèS6.Ý…{�Æ•qŽ�Òª§^òâ)‡³�¬þb“ß ŽJº$tQ@•S¡FŸP–jÝ¡zOØ1Ó÷Œ©5ÒO}åî¥ëqäxùÚ ó›ßÔÍ÷\‚0£FÊ�£[­[ºïÏ%û^¶ú×oöŒ_wÚ¹g�úüÄñƒVýø¿íþæ­Z#iØè:«—ÂýÆ5»_Tyà�Sç÷Ÿ8ùœ´ª5ýMgÂ\˜v½çAä¥Y“ìå c*™<Ÿ¿­ñSv’j¢×²‹0&†_<&¹SІCÁ±å¡ËPåGØ0*¦Š”Â=Œ°°T|À8šIøÄ€¤À�×›輠éšÄûÆlL-æØ…Õ™þ”¯w7 *ï8/«Ùú¯ðò®"�?î ðA#ÉíNÓE:>Yw+{Ù;PõéTIvʶ, ì—mC‡œ@ÛÙz¬î±‹uë×™½yÜæuÀû¢¡?w9+°yÒ'xW6boÝýûm/¥µk’Þ¶IÝ›ÎÛþþ×{æ/C?>i|ßÏkk_{–3�‹Þï&ÁÁ¬~ßVøà6¨×êjâƒÇ‡—Ð� Ùø4/?¶Iï…îÊÆmë¸í?ÐîX8¾%|ûœy-›´!;+ô¯=[�¿íW|ÎYÃãÓ›´¯ŒOß¹1tƒôê²~™»«Ino˜>iϾ¬Ð,vn=òÄm[[´Km~|¼€|ó_¡öîÎ{ìÖ-•«&ö¹Æ·[Á‘Öp BrRÜï¦K³†e”˜GÉð¼sãfráMG�ÙG•%ð�‹8:rLÀÙÊÀƒ>%DIª<Ê/Å/WeXþo‰ ¤m±Tåjñ¯Ðƒ8"$þ¥ºRÒLC "FYŽ�‰0"üU`Çô…Ÿœwà¾Ó«zÏÛÍyù«œrܱï\=àùC›vVl^¯í¬Q¾½Í Ù—M|uöá�’­zÂÀð4i×:x¨ixhz¤\ù*tº&ì‰êcú瀯Î>�i¡çi0gRˆíþçBsï¡O„v±Í™]ýZ°ß1=ôžçàHH ]ÉÜnNèÑRøº©5ÿÝNŒÏ¯üh?*4(Èõ?û¦µmø‹Á9øN¯ôž§4œ3H–|ÌчcRS2Ò . �:Ý/Óÿš9üÇÃޤ¦%µêYÿÖ9=1ݯŸn|ãÚù9ûr“Ršv­}û—½*fø·\¯KŠ£Èèz•ך;áÐFH©ÇŽƒªgD=¸‚ ÓÆWgç8œ˜–Z·g›3æÜ%:lܽéãeg~q·_‰ˆçûéÛß¾æÐ�¼Ô´ÄzÖ1§#ª:ð¥ã&þõÎö Ñ_%3¥çÍõϹ©à1òèÍøjú¾‡oË9Äwz�Ò3}ôœ†È³sK¾Ùkû¦#©§ŸŸ>ö‹†É)×)xËh…ëÒ–¦ƒàeiÖ¼ª2‰ô8ͶÓ"âot( ÊÁ?FQ—l;ÃD.£Ô 7å\r¯N¥#Œ SA*09‹¥­„#Æ’Áæ F'±,I�YÖl9Þbt*5›ŒKǯ¦( ôê<Å®ƒ<¬–šb ¢~a»-U» Á"”¼u!ÙJ¸ÜE‰t u•ƒ´’‹N’Å€`g E�ÌïÊ–‰@"wË£ã•òLr™`ôD<4L¥HTâY�¶=h[ëòn¸[vEë¼ñ# †ê�áY–¯ò�Æ)ŽPó‹×-œ¾¹ÚZ °ñHÀ=6[ƒ�BW†;l�¾´RÁ!À±kàGçèý=ÕwÝï�ÇRR¤Îügh�ÁÖí£;,Y+SíòÜñ–]Q:ïÿè�!£fÊ�7CïÕó}{î#‹¿ò4k“:í·f¾çrK˜ ¸»� âÅæ¼¹TÀµÊ.ù‹ÀéW~o –‰,�Þ’+TJSp:-avUY‚u§îABÅ©4-k6ÁX–ª*M½K’âuê5ëe›`Ä(t¤ì‘mµ¥“zãfˆ2ôst* Ùv[ÅR î¡.Ã[”¡]—e"K§CðãxåMŒˆ2£°ƒ±z”ð8|Š("G$ÙTŒ0H,»ˆGïÕKuÈE<=…‰G”Aü"}ºf½Ÿ”‘·ïnÞóçÆ-—H”ß+®OÜï³ùã¾ü)Î’Þ /Å9ãíÝ'Æ9ã_¾ÏŒ—Á;ñL‡¹Àú¸eÜ¿7¯[•Õ³fÍJK‹ê¿ñ_Öü¬Vé®—¦÷ï=rz•ߢ¯!n¢Å9QbbbõŒL*fÐkuAÛô¢ñØÕÊ“ØØiËÌeLžc»úBùÿWr1˜`XV€`ʼy��»ÛazxÕ¶Ûeyšm¹LäíüÕ[T1Š^ê .F­Ü¦ŽrÆH‡¥åwD½¢*KŒÛ‚K>þ±üšyueä:°Ü¥zöXÒZï9Eq’€–cŒUT�œšj³ìU�&b‰¤\2­‚W0®xXaÐsÙyLr™`ˆ_+UÉ]„W0ä`»^‚±áA�aB%ˆß«nθó<EFrõàñÑ„»ŽÝâ:"Ê€Ö°2J·áCv>ã6$Jüô/{FÉà6<ηòN„n+ŒÿÑ7—FÉ`¾7Û‰�÷ð¤ñ ?i<²´*Âã½Ù–¿ÝUîX¶±€b¯!–ãcn'ÄW�ç‹–§Œú�¡{œØ¹¯P�(uÃp�ÁÒY˜°Lýë×Hé8×ÅŒ¿^v5Øù£©ÐŽ3¦~;rÃ�Ø…Ë~Ù–i-ý–Ne×eé·tÊÙÙfXV€(' à3Æñ� n÷`ÿ˜Xf¾ˆÈ«Ùb¨ò|FüÂÆOÙIŠˆ^Ë.˜~ñ˜äbL)R@vS/�ƒŸä±‹e?)@2’G7 õT`&Ìz.=¢¥0)üâ1O�£/Û<�‚¤ïN©AøEmJ1ŒÜ+Û#Ã$�Ñ ¼ì”ýJ:�ÇOòÛ1(„Mb N–s™`(…v]Â�ŸT!‰– V€`X�ò¬^þíá ð|–gѼ�ÝËj6ýþö–’£X�èp>å^ÙŽ>/3* NîíÄçSC f§$âfè•迊љuæ¢Ãɲº_÷ijf=»î‰8¨8�Ë/}˜‡`XV xÓl·ŸÞV¼Ã, ÙMW³•ZñœOpÓOt�kØô‹Ç0ÃJ…xÈ•Š:K{‘ôÓç¯àþ²y™Fç™AúÅ㪠Ëÿu‘�´�U”Ún àKaz.òDÉOáDh7·~„BU¹MJxb Nêbƒ`XV *àm5›×²=*§Ùv™è9ýjW�Pü ž`Š£¨K¶�a"—ŽQjЛr.¹W§Ò‘ FЩ ˜œÅÒVÂcÉ`ó£“X–¤À,k¶¯7'¦£JjsB=�8‰$"F0PA*TJ/ò»PIq3ôšõ²åb^–=Ôã%Œhh+õB=–`J¬‚wà¡.d [ —»(‘Ž¡®’`X–ç0@çš)P†Q 2ä^ ¡^Ý#ãÉF…'&zCI¡$’{ ë‘C,Ë3䱌e'+À °¬@ùT ü4×/ôâ‹Æ=-^.÷�F„ÄâÌÆ²ËD–NËðˆN…Ji: VGê‡ì–`Ý©{�Sq*MËšM0–Õ*�JS/Æ’Ä›“NL1©Øù i1VG*N¥)ð†N&Û”Tvʶ%€œñ1Ä´,«~=�ðhȶÛ�P,êêr0¼E9ÚuY&²tÚ1”?¬³TžÀÈÙ&˜0ˆPñc“º(\÷èQ2ñ´éÈXx0� ¥2È J„!g§(C~›ðÈœl³¬+À °B·—‹žt«€Ï«Ùø»_>�«!?�ˆ^òË`.¢*™mç^ìÐTxDjü~ª_‡F&—a+"Ú2ƒ&N†~Ü„ è#‰‡²Ë< FÏE ÷Ѱ#G¿\¤sF"QBÐ�›p¢!HdŒpF΢ÃD¯%v¡79J¶eæb±-‹Á‚EåJ¯ð+N粕±G ¥-£c×K~â ä— xD¸ˆR¨d´�{°sÓG*çDÔK²xHm"ñSïuÈ¥ƒ©Ba €Â•®˜6)©Ra4õ '±EÃÓ�39+À °¬@IVï²öp£uø‡Nï,#=8íNXNÛ¾}{êÍÎÎîÓ§Ï«Y=+eÄïá@+³¨€økóÇÇ'‘ÈòÆq7Æ3æê·J}6^¬ ˜¹3tÊÏí½—Ä3æÊ‹ïâçd¸>Îüè›Kã–qo6Té ³fÍŠò�ƒâ¿¬×³Î®”az93�ñàÞ#WWù,úˆ°Œ‰‰‰Õ3RpPb½¶Q´]«ì»(<‰õ]R&,Ï ðÛ÷oŸÿ�ò]R&dâ¬ÀgŸ}†Ól\ÍÔר˜L³q–~ðàÁ8×ÌéXV€ˆ…áEl×W€ó½Ù¾ Ói¶¾ÈãáÔÓCˆù�b1»ˆiÁÊÐt…€ÛbBËpŒÒ¥ƒM"´DR¯4ÁP 6a ¹ÙIy¶âÂÈycd;Œ4FË-«W–¾M +@ <öØch?÷Üsä17víÚ5aÂŒUÞ¹mÎÀHV€`J’8Çö0Í.e1•Á�îͦ¹Š\±¥S°]\ àW£;ºÓã¶f�D0È~Ù–ù-ý–N9ÊÜ6¡Š'ƼrF²¬+À ”žyæ™Ë/¿ï莾ž§ûýxY¬•óv ª_>ß>´ý¼k*Ï|ì— ßÛ=¿Îð.À(€¿ÂûÞÆ¿5„=Kt¨žyý^~#aàÖù«‘lóç«>ëþô»Õï|;ýöÙ�Ù4g¹4Ž ýà×80?Ô�Ÿv€ÕÕá·J°¶ì ýmÅ÷ma¿ç?H¸fûü_eæM3Bç�×ûuý‘ë®ÎͬüöLüfÚ¹�Žû‘+brøãý–\”ðéòy»Ä³¶Ýùµµ¿º¼òÜÛŽûæïûå�ûb?Ùï§&Ì^9?”ñƒÿ®ýWåOiGÿ+ƒWú’E&ù±ßÓ³.Û9¯€yÍ3æ6ôq¥«ðsí“3e¤/v¿û á4˜÷sÙ³ï@“K ãhsL¹¾d1'�@sû‰kàæ))ˆ¼šMóy�G8ñSv²¦Ñ(`§¤�Ú®×!£Bߣ¡&Á„?ɃHÙÖsé$2¹ 2ÁÈQzᱫDð뽔׎ýñÄ8”Á]¬+À °qPà®»î‹ÆóóóE.´ñ½Ù5jÔèÞ½ûÉ'ŸlYÀ矾oß¾ /¼Ð²×•óë©î; _·¾mÝ�'ûþxË+í»\VoÅW;ëóCf£ŠÍÿQͧ3xÀ! �çÈͺ⭃%H}~˜ë¦þpdßÑ„¹{÷ï³ëžu\BJ⚉_uÁ˜óWŽªÜ¼–© 9öN… þõ pK9ê ÉõBíßÀú³!õH7º÷¾�"¿ë§.<²/GÞµ:'Åy IDATÿ—»Þ¬Ñµh·$(H·ÍàïÃ~i€ß aòO¿¸å1ÇÏŸºùà¾Ð¢¥¸½âpNÞgþxüÕÆ®9µbå¤-ðpO¯söS7ü\„qýîm†»Ùô{öàVóO¿úg·½§~}d_ø�ðOâ–‹~õþÉs¨vrË]ßüúÝÙ§·ªWûü“ÜÒÚá§~û„:ÅÑñÚlxt Ì}Ú6ƒ�ÎÀ¿~ Nleyâ¿!7ôü¤q7j`Mÿ2¡Lc”¦‡Ä#ì¦�"�2±”¿GÙvU›èÍã*©3˜†©WB�ñÄPR6XV€`ŠK�¶mÛ®_¿¾]»vg�u~nذ¡M›6™™™�>úè‡~¨W…—‹�7îî»ïÆ.19§)º ~kø¯¯ Y�û’O¶É~ÙÞ³õÐÔ῜Ўœó^ÝЬSUœc£§Í5NîW÷³qSoô®9Î�_ Žï.ë„Ó4ˆÉšÔÁ­{þaç WSå /îX¿O»Ä ÉøÇŒ7�žR=mçb±¬N�èŒ#[aûp¨;á(KRfÁÿ’H‚@*$×?Úµ•³5kùðw;N¸AaZrûëÍ�•Þ¼6%JW4ÍümÛò•øì Ñ�¸ŠÅ£ô�á¿ß:¡5E}ùÚ¦Ãòn|¡αÑY§i¥Œš¡‡<ùµaÆ7‡¯¾eB[KÂÏÆ­oÒ±Jó“ªXözsÚºç×áSÛMHáûÝX¹M}œc£§z×VÇ7Øÿ›o—–lÝÃÇÁ„ÿ£lðÁWpUÏз^§À©íàåéG{ë“ïaÈèÐŽ$>nøãái÷±„òBy5ÛN ‡ Œ]Héõ›LÉb1:‘7z©©þX©szKGÃ4·Ô‡Â‰Ð¡Â8`ôììaXV€ˆ¿?ÿüóã�?Þ´iS‘ÿÿ=z4^Þ¹sçÿþ÷¿]t‘RÒo¿ý¶gÏžÛo¿�ü÷߯^½n½õVò q壭">i|ÂÀ_ÎÚ,³Q% \·toÓ�Ο�1ÊFê�ޘРjôDf ß|£õÐsÒÕ°„ïþeá�ÙÕOhhÙëѹe T É�ÔðÕU!×*“ îDHm£öFÑþià+-‡öJkTSæØ4}qöÚm�¦Ü¼¸ÿD÷ „2“jçýû΄Ûî4(*ږ͹mZBnn Ã ÷>�Ðá5,ŠöËW^8´q­F‰ã—/vÕ;6í™-[úÙÎ éI=ÖïwOê�Þ7pyß¡Mð:�*÷PðËW7\õرzW4ž_Nh6ôüJ�2‰$³g‡µ�ÍØ¹`Uõ®ÇâeäÙk¶ ‡z£4> C¯„FÒ'¸¦-ÿ5&˜?ÿn›¤ggÀ7|ÒøKÓlan;ò w÷Q~þÉmöRŠ7U§.&E=„¦@„ô£�Xξ0£ì×+%)TTgé5hÔú�ÑCãÕ{I1eìB† ¹WN$À“c£·‰VÎ®ÐÆ£¤æ&+À °¬@q)ðÇÐkhÒ¤ÉêÕ«ÑÀUnœNëU�xâ‰S§N~\Ǿì²Ë† Ö±cGéìYðæ†ý»rÏÔX†åì;"V…íƒ{se@46^UŒÍDCá&öÏ7¿?¼+ûØAÝ-ƒr¶ï›ÿϱ­ï>;£emK€gÖ›�· ª ²ˆm¹òƒ°ï]Ø<’CÅS,0î]¿ùmî®ìfƒÎ–CíÜ·tð”®³‡âŠ}hŽíßEãÁ÷ß…=»o(òn³@ËVIó¿ 4o‘¿ðå1y}û¾ù.P/Pða›÷ææ}»r{ *2«ß·3wÙ»nÛúßoµ[÷˾‘g-ÎÈL>û®˜ÿæ&ÌxÞ í%áÑ,|K^nþiW†oða|!Š o.Èݵ¿ñ se¾*·uÉw=þ8‹ @ëg®Íh[DìÊ~óSص]\$¨ï©ðcášs¡C ˜ù5,X MêÄ¡��ãî6‘roö¤I“ð‡[¶lIIIéÔ©þñ±zõê2ç|0f̘kÛðoÞ¼߉¸bÅŠ *ôîÝ»ÿþ _yå|DNNÎñÇ?dÈ�Úµýû¿B®)îv䋯iº‚“y3)ñ2LiŠ.Å©4 1–QrjsÛG*ó¤–HQ éo‰‰è´#!ZˆMP‘Ÿ =âu§ðP…“Q�¦ð;s¿ÈEü(ì�vC—‹~‰!ºu/}²î¥OO_údïÜ©§/yrÝ‹sÖ½üiy Bñrña/ÁÄÿ 5Åq!>û÷�aWÂ?½aüL¸ôL¨·kN G• vefžššúÀàÜøõ×_ß¿ÿC=THúwãÆ�Ó¦M“ÿ¬™——wï½÷6hÐ`æÌ™/½ôþWüî»ïŠ�·ß~ÿ7~ùå—g̘Q¿~ýûî»¯à ’K§m´š�“ù7“)z”ÉŒÒ!#%†˜=|z1HBõ¡# 7„2–ÅÛ‰&�Ý!P†‘Ä©b“º;CÉn™(žËØÉ °¬+gn¾ùf<Ä“<œ3oÛ¶ Uð"p¬aåÊ•&oÏþâ‹/<¼vÑž½Û=Ðõ[Š}¢ï¢îý4jŸ±âË�äücqV“2¨�± à‰0ÞàÉ㣹sѺCÛ÷}Òõqâüªï˜æ7œzâÓ—dÿ½sîÙÏÕëuüIÏ^F½>9‹àÈvø«ëQª }¡Ê Pû飴òñ1O=)‚1kì^ôÇ¡í{¿êzt"±°ïs�úŸ¾õÓå[fÿ²öÅÏ�æÈþУѶ~²¬÷¦Ðô8š-ÿçŸ`çŽ#½�~cyW_™ÕÕ‰ÿy$Z‡ØßíÝ»ýðð®?æÑ¾Kzô?¦é •×--ò 6¿ì×,ÊÂŒ÷u]Hë»¸Ç õ¯{ú8ô¬_¹ÿׯwß8ÆÏkþ÷,Z‹_â·] Œ‹ú>Ñ ÷ý+6Ô½¸såãBJ¨Üº~� ;m�±¨ñ-GÅ'¼+cÑ*ؾºÞz4¨ïp¸¡<}[è2rÜÅvê-ÐÝÏ ÿ�¦s°ð3î°ì™¹ì¿êª«DÿøˆwÜà”›zquú‰'ž8p üÌ‹eË–áj6:q±úŠ+®xã�7.½ôRŒÂÿ“¯»îºZµBÏG¼ñÆñ‘“ÆÇgaé5Œ¦Ù8ž¹ ¶YV€`ŠK�ÓN;müøñ8[Þ¹s'žÃ <¸qãÆXÌ)á-FUµ;»æ˜u= Èóóoi0÷æIíÛ�UsÿîÜ™O¬ýöÝM].­·üË?|¸eä—þ\ÞÜàÎÂÁà ë³á•mtâv$ü‰Î¼°�gÍENœÃ½n?êž}Ü…ë-ˆÊÏŸÖàžS&][ç¬VY¿mÁ9v“«:Ÿð_õ¦w·)T|¥³¡ÙºBg>¬mu'A¥°ÿcHi)-!?ö¾ æBÍ…°¨þ­uöñç­C!Ã[~þÇ îùyÁ�7?ÿ—!oáEãížý—@Eó8£{ÒÏË òó�´k�øüèÀéÝ‚ ¿ 4h€W‰ç<ûüýWBÏ"×?{NÚáìã×�&ÂqÑu@ƒùƒ&µiVõYG¦=¾î³IÎêÌú•Ù ¦n¹æñ–ž³È�íÏ®ùòº3(ãÀ_Þ:©m»³j>°å)Uµ­,‡Di×<»]�uc(ãÜ·´ŸtsÍm×ü÷Ã-þPÿºné-ëáãÐЮs‘÷[œÝ Öá3ýÃJÚàb˜tœuÈ�¿·B«F�}žš ë¶À]¾þ ª ¥ã?b)ÛbÑ©\4.#~úé§V­Ž>-×±«U«vúé§ËÓìµk×6lØ�®jÑ¢κ<ˆ«ÜøGÏ–- Ž+¼žW¼×¬YS¾¦Ù²šhãìÈr¢¢À ›&s-ŒaºòSf•–CÖ%õüµÒÁ sZ¦&¼e/;YV€`X�X(€ójº!0ü:grjbõzE.|ÍÈL©T%÷a3;½>dÅËý—V?¦Â­“Û7ïäÏÅ£¸~¢ÌNÒ*„+‹¡xSæGáý €nzÅ.=‰©É•ê©<53=¥J¥ï|÷àÆÝ¿�þwAyòø«_áÃR!¡è-»‰™�Xr×ÃÖÁ�·%t‹mj[8fTô#ޱb½j²0)™•Sª¢®G·ÄJ)8Í®X·ˆG»ÝX�ÔT¨Sô†Ý5Uªþ)ïæñžmHH ´ï�øÞ‡�ÆMÜÛb“Sª×ÇH¦JfJZ•dÜøø„Wîú ÷ôjÉø€´3¯-ª¼-e„»Œvè`Þ¼)›ú?ZÖöqÃ/1±^‘›‡S23’«¦µué‘ìC »=˜»'›uûunùà%ÑçMM�zE–™U¡J:ìØ—�€?7CR"ô8)ô6¯¡;Wâºá„ÙaÎlWŠrÑ8Áðzï�>úè…^|ƒ^ Žïh €0²³³+UªDΊCϽC'.}£!w¡}àÀB–j#òj¶É„MH€Hy–e9•’v™`ìbÝúMjFNK|jé¢Ìe¸y nÅq‹×¿S»Ú,‡¬€ã‰Ñ+g+À °¬@ü˜;wn�=>ùä=µÉåâz”gÏ;Á>Û¶GÍ'—F?Ï%>kc¤ä–mÉí§yU°àôºËäëp÷“ÚŽ«Ux={« í±ßú_דœ4ù&Ýé‹'/>o‰·Þ†»/œÎ$�^2}|·êÏütŠ3>úÞ÷ƒçIjÅÄ×v�EÍ}‚ïæÄŠ)mÇÜ€{Œ Úà‚z¼{ék1M™¯7¿h|å'V}²Ióþ IpŽýÔSO=òÈ#Í›7G7ÞS�—‹ßpà ¸š-š„MKKõkj �¸š�N¹ çØè'd©6"O³Åðp®"ÏOh¦¤ ^÷ËQVx”pË\~aôÚ(�’B©Yé- M‹^*z¨W.U8eÃi6>­' ÝZçi¶‡â9„`X_ÀëkŠ\bã@Þºg#Üp`ï¡ùcVÉÈO?ýôÅ_|øá‡éo|TøòåËÿþûo|ž"q±_‹øý÷ßã3Ïš5k†þC‡á³Ó° ßòP·n]±¦�·j#¬I“Ð¥8ß^¿~½˜´Ë¹J©yš�Ó'15¢  U™YÒ@½óÌ38©Æí>}úˆÇŒ#çá¸î�Óo\ëÆ÷fã%èÄPÚ�"’9 Ư©‘ Oì0&Ì"ħˤH_0Ñ“˜0ÑL�&d3„Ñ—e‚�'† cƒ`XV > Üu×]"ž ÒYÅäxÚŸ8 +À °%C�/PîÌ6yÁá³Ï>Ÿ?fÜÃŽ—š—qü#¯fû«'³±¬+À °¬@ITŸdûÐCÍš5 _ÓŠ÷f¯Zµêþûï/‰…rM¬+À ÄLo«ÙÊ ½bV]™"æiv™ú:y0¬+À °¬+`©Ài§�†/eÅEl|kk‡ðñã�7¶D²“`X�²ª@~èh®—¦=\g^V4O³Íµb$+À °¬+À ”b5jtýõ×—âpé¬+À D§@$àî–ÃÃÌÜmв‡çivÙûNyD¬+À °¬+'e¿H¬§d­óWÆ-—HôC Y|3æÇ7|pýUqÎ8zò€8g¼pø'qΘÿz\Ÿ˜ÕoÓóq`à¶8¨‡÷Tño€ÞÞ›×/Ô¿Á'O³‹S}ÎÍ °¬+À °¬+À °¬@|ðºšíz<>Ã)ÉYxš]’¿®�`XV€`XV€`Xð6ÍÆ;ºýI_žXø/åéÛæ±²¬+À °åU�íÛ·+C×= €›¬+À ”9ðòo×{^™S!âivDæ¬+À °¬+PÌ \wÝuJ7Üpƒâá&+À °e[�ùQ ¶Ì0žf›Ñṯ̌11z\?6/~õr&V€`XV€(F¶mÛÖ°aC¼7{Þ¼y/½ôRzzúµ×^[ŒõpjV€`ŠC\—v½4�ϳ,÷_•ñ4ûÁ0·üé>™»‘Ë2†æØ4¯e¦-3ȶ%';YV€`XV ì*€ì#Gެ_¿/?æ˜cp ‡*»Ã呱¬+`¡^þíaiš/·�2’Ëxš‰¨úiŽ�¹Ñ¦¹w1”Â)YV€`XV D+ЪU«Ñ£GïØ±£S§NX(^1ž––V¢+æâXV€ð[�ð4ÛÃj¶ë¿ /}|,Àƒ…{éûú¸bV€`XV€0RàßÿþwVVVFFÆ 7Ü€K—.=å”SŒ"Ä °¬@ÙQ']ïüÞlß¿«ÙZe·tZ½øäKÄy)Û‹‚à °¬+À ”–/_~ï½÷¦¤¤ˆã˽øý^åå»çq²¬@¡AHĽ°eú/¿7ÛT) ãÕì¥T>št¹8ήÅ.ÈÉïc.¦bXV€`X�Ò¯À /¼@sìÒ?+À °^B—¦Ýîø¶m/ÉÊwŒ«ÙBÇ%9…�Ÿ²Sê÷nÚ­]£ßÃLÛ÷ò¼Œ#YV€`XV & 4mÚtݺu�7Ž » iÎÀÛ�¼÷!¤$‹þÔÑO'_r±°sß›vøáÇó·nKhÒ8åñ‡’N?Õ†Ã�û�ëÛ9un ¥à¯Éø»k\Ñ),ÿsý°±–¬Éݲ«Õ—ÏftëàŽ×=`@ÁèÆ¢ó€ß‚mîhoËá®ãz€©W%Œ¸"Lð^øŒsÀa€¦wôwGl‡þú:øc*$fì2šŠŒ…+_€î„#C{ÔÛ×Í_ õüùÁ/Lù_œ0{˜3óEã‘•Õ~O³åÆ`‚�ü4Ç.üá,È)üø©øå’ØfXV€`X�r©@‡î¹çž>}údff’={ö$;&F �2ôΔáw+äyßýphÐ�м•xZœoç\rU¥Åß$Ô=ÿ<Ú-õî»ê˜×*<8ñ®Þïôúõ_Ñéføxª„T·Ü©¤ÈÀ‰Í?ÂÓìþ° ²óàÀŒ÷ŒÐ"»Ì“Àþ €žṼ#íîƒzÆ0ÕÞµ°êy¨ÞηМs_‡óFœ Ú¼[�;¾è¥û£öà”ûàTm€¶Ã]áÄ;àü7 ©l_ÉáÙ°ùà¾Ê0B;ÆVÜÅöù!èµ.¯u²m8§Åy{Føõ‡èªâ¿:ìw½ïç4{Õ °òyHÉ€}¡ã#�\˜ýjC£‹ý�fõÂʯž_Q!#¥m߆ç?rRjzèšü@ ð×¢íÃk½‰×"4=µNßÇ;e6G|Ú~|~|R3 E_8ýH ð¯/BÓì÷úÀÆ…P)Ní|º¿¿ýðü~ÈH€¾à‘Ê�žPd [ò`f|\£ˆ3êÆ€×ÃGK�ð=â@=#|GÃïá æ„çÆ¡þù°ýò, 3MúÂÉ…’*¯ Æ?ÓìXâC.7Þ�æáUÛnŠ*›Ø¢u)£þ"ÝSŠ†Ã¥²¬+À °¬@™S yÐÀ´_~H_¿ºâÌ÷ò–,͹ïü mùûöÒ §jØÆ¹÷^œú°Õ¹óÿÙ;ð(ª®�ÿw7=¤¡'º4iÒ‹(¢4,X@DŠ‚¾ˆ `ý,€¯yQDEQDzWº¥÷"! „’Þ³ÙÝïÌn²Y"�ÌîMøßgžäÎ�{ι÷7“}röœ{§£Èï›Å¯¨ûËi{OEš¦�Ò©x/Z¾#ø8|½¤\‰N&Y]ß)*òµ1ÖÀxœ5ÅWrq” a¼ÕÍ–ð`_@LkQê�E¿H<�{AÜ^lÉû~$ùOùw}ª…�|�Ç6x-ò¡ÿ‹ü¹_î;¿7nÞ M¶k’1>éh¿w.?:éx¿¯�:®ÊJ5拹Rk>#"16ÿ‚ؽXž7ÁŒ8ÿMG`lºÍÂúQ8»›ñœÌ IDATÁ;vYYnYññK0ö1(Á~%·òe:ªÐÕ³`» çO¿»�¯€£À yª:Y¿¬éaÝA@žÒ7-œû&cñx$žŽGï_pe/Öç!­Ñ‡?EÒÈ"í#Ÿ#9JY¤]¼Åºù™Þööì¢ÿtb9wñNëßh­ÈÑì×Fo«;¶8\Ô¬ê¨ß±nO·\Ï”c2¹£Ôõú²�H€H€H Ô:tèW_}5hPÞºy–ðà÷ß‹sx ‹¡a›v}D Ïÿ{3£c7KR².À_‚Û–´´|Ã)©øÛBÕüË*j>�#l½½jU©>sÔÑ–#r’RÝ\zÊŠÒµ~^§pà5 '�ìàQK¢¸`x,¯›ë¿í[©Õf­€$ ÀA¯‡u­ø<`‰ƒ7åp]mµlžEÿZh9+["; îþømî|Þ!V}ò_éuÿ1Uk •çºy!µúÍlõAËåIÙÞÁa¹OˆoYχ>i½wÁ™S/4ìU]µ�¿ TÈ›`ÙZ¸{&¾n‰Ì$x(Áí*í!.(P½3»áôr„I(ØÕÒX Ï+¥–fú£åU$™�û3[0'Ïý=+Â&ãäOYqm+aÖµýýñoé{À~`“uÿ3 ,?gÝ&­Sn_§•ËCX ígbaKd%Á3-¦À”…%��“�j÷*‡—^½šqÊÂl§Öf«±Á¾VEv³ÿU¼ìžv�Q9úØ.Ýàôõ\ã%   �’Mà…”ÈÕË/ËŽ\ÿ‚b]v«oØÀ¼/?YTÝnww¾UƒÓÆû+úèìöŽY½ë‘ÀSEvª§Ý¢£´¬Ðû rÒpy;’N`÷xņ1 Ww#f Ø¥¹IK!Kµ iÖľiH$�½V�sÿj_«ãzgŽ·pm$i|˜6»­]ÏXn›Í¦Äç‡Y}li•-��@§ˆ9{ÉjNï†6ÿ§R$ ým 4Ÿì¬B'åœÛ�IãNà.²›ýúÍ”_·Ãuo¦ E‘*ÊŸyQôÜt0ì@$@$@$P’ ,[¶¬aƲӸLbÿþýM›jµ×Í¡ä,[eèÚIçëk>�õŸÉ†Ît�"æ>ôñŒ^™ÄЮµì4n>xØmîç7WW„ñ‹·tkaðõÎ:{nÜ'þ]›¹憲͙ٶýØ,YF©ËÞã:}^±š é²èˆKt˜´Ï ,ï†Z—j?^ˆ ÓÍ‹�nÖÅÞg­Áê®Öm«DÛÏV©ª¼¼ �Dîsy¯sÚPžà¹Å¨Ô î¾H=‹?Æ¡RWx*×ü•ÛCüÝÍ!¤ îx)OÆùߟ­×­²§¯{ÜÙ”Åã~¯Óµ²O ’<}|ý_èö¯à-Áí•“ö¸yêku®è¼GÉ“‹•Hµ‡¯âTo‡°®ð²N°ép|×gÖ¢Æ}8¿ g×ã¡UŽrN×g ›'|õ8›ƒqÉJrx Ã“8;ý¼ìÐâ´!AÙE¼�õA•»ö¶uzÛÊvÙ‹~™Õ¯®²î‡?ÆAÊÙjäbT³>3Ég±mªv…§©äáeIzud&`甩î`gm8)'‰âzgv×ø~89ú%æV¢FËÁ’ � � �€:;vì° L™2eÅŠöÓ[]Éþl¶yÔ8�âizt÷œ–¹2´jáùéŒÌQã,cõ5½}§ÍÛ¼€K3E=õ¾Å˜#;ŸönWõÿž±ÍQ¼îƒ¶·=ët'»M�ÆóþSn°ø«.–/¬K¯s¬~ï½ÀÄüE �n%&ù+ .·åØLlJyq´ì|V­7šYC‘¢Ø§R¾vƒ§’Fž›@žßìDmóÌ# žÚf2Z<˸5ì]]¶:³)9±>fþ[3SŒnúm+<¿é~o'ô_GdÏL¬É› l�Ö)o‚•Z)¯òúu,RcP¦ºÍFµN×Wß43 O%B¹…:e ´ÿsØÊ-Ƅՙب}&õ<ëò ÊWB’÷®ü XËkÖG´�”µ®qx8ï’ ¿ÎÄÆ<¤²š-|-úÒc±¦/Ò.ÀÍa=ÑgcþëÊ]°¦RTçĶáf¾0Y%eéN7[=3J� � � �@ø¬[^X/÷þÊQØU§Ûëmýïue=ÃB[š7]÷’k�C¾nùñº­Z4n)D‰øKrÜ‚Ò}ë͕ާÛ±[­k¡ÿfòÁZÉñ·f--|‚uûC­ËÖr…j¬l€Ñáë‹Bû©¾ð}!âZXÈ%šû‚4¸;é‚^ DÍp“C­"‹zµ&J_Õ”KΈH€H€H€H€H€J=Ùi\§>4Í�Æ�x0èf;�"$@$@$@%†@NNÎ×_mnvv¶½.-O<ñD‰™J$@.‡Ù Ÿ9G½gîòHK¼ºÙ%þr$@$@$@7 P¿~ýØ:Ô«WÏV—Ý›å…^t³oÀ�—H€JÙ͉z9á™—>tjgD7[-1ö'  (IfΜY’†Ë±’ �À-#`QÞð®S«Þ µ&J_ºÙ¥ïžrF$@$@$@$@$@$P�€¼[CÁÖ›�ËÛ¶oÖ…×  ›]�ÏI€H€H€H€H€H ôpÎͶ\ë™oÞ¼yÉ’%§OŸÎÈÈØ¸q£�Ò‚ –-[–˜˜اOŸ�Ú.]¼xqÆŒG�õòòzà�† fk7›ÍsçÎ]³fMffæwÜñ /T¨ /0/%…ßL”’Éi� � � � � �À ÈÂl'ŽïÍöóó/zÔ¨Qކ¶oßþÍ7ßL™2eíÚµ“&Mš7oÞŽ;¤ƒÉdzå•WªV­º|ùòÏ>ûL\ô… Úøá‡­[·Îš5Kœó*Uªˆ”ìšá¨³D×éf—èÛÇÁ“ � � � � �@‘ÈhNæk£ÙÍš5ëܹsÅŠMFGG‡……É–“ÒØ°aÃðððóçÏKýðáÃÍ>|¸Á`�`õ AƒÄ©¶ ŠãýÈ#�„„„¸¹¹=ýôÓýõ—tvÔY¢ët³KôíãàI€H€H€H€H€H HÄÇ–…Öjamv‹-ÄO>tè�¤‚ïß¿?&&FZdL‘‘‘ÕªUóðð°�¯V­ZâuK¶yjjêåË—k×®mk—|r‰xK"z‘¦Q:qmvI¸K# � � � � � ¸J@¶W½Ó¸©"C† yñÅm¯K9rd�5d°iii>>>öQ{{{ÛÅ—Šã%©§§§Û{–ô Ýì’~9~     ¸9Iÿ.úNãÉëv%¯û]”Z²�7U½téRÉÿâ‹/ªW¯~öìYY¤­×ë{÷îíëë+±k»¸­.�²f[/‰�-íöž%½B7»¤ßAŽŸH€H€Hà#paWMÿbü·Pg(îý�,sT¾\¹º‰Å=A„º2^gdŸ¯ø…3b.Èx�ˆwAÚÑúïìuFÌY™±X䬨“rÃ1ÛIIõb©ÉæÿS/VˆDtE ¶O·Ör(š’Ó¯~ús!*s›e ´:ˆ�-ç²H»]»vÒ"nvÍš5eÙvVV–§§§\:uê”,ê¶Å´e©öÉ“'e·´‹¿-k¹%$ž«®äÿâÚì’9     ¸ñ±-Ы= IJ%ß;;;ÛhTš¥"E*â!oÛ¶Í¶í™øÕ¿ýö›ÍgnÔ¨Qhh¨D¹%|}éÒ%Ù]\|oÛ0{õê%ï“Ú¢jΜ9²Ù¸ì�v³”˜ëŒf—˜[Å�’ � � � � �€Óä½Ù¸vÛ𢩩ü²~ýú÷Þ{OÎu:Ý}÷Ý'?¿ÿþ{Y˜-é±cÇÊÞfeÊ”‘ȶ´HIç�w¦OŸ.Nµ´{ôè1`À›.y±¶¬Ü1b„ĺå½Ùo½õ–­½tü¤›]:î#gA$@$@$@$@$@7"`�f«^ Rà½ÙâZKù»ñ±¥ü½]¢Ù6·¼À%ñÏŸ²–í¥ã”nvé¸�œ � � � � � ܈€ª-Ð슬1pû+E"@7»H˜Ø‰H€H€H€H€H€J4³òlÕ›sÉZî=ëdðt³ÿì4J$@$@$@$@$@ÅJ@'ë©‹ðìc*�4^à*O¯K€nöu±°‘H€H€H€H€H€J�ôê·@cÒ¸Ýl' Q„H€H€H€H€H€J�Ùù[}¸N½H ãr †K7û@¥J     ø×pfm¶‰n¶úûH7[=3J� � � � � �@I# ›™YÔ'�[7N+iSý§ÇK7ûŸ¾´O$@$@$@$@$@·ž@tzõ[ Á¢úUÛ·~*ÿv t³ÿíwˆã#     × X£ÙªßÎŤq'ÈÓÍvEH€H€H€H€H€H „0™õ³j7Nˆ”00Ú—n¶öL©‘H€H€H ÔØ¿ÿܹs£¢¢ôz}Ó¦M§N�Zj¦Æ‰� ÜvÌ:‹Yu¸…IãêºÙê™Q‚H€H€Hàö pàÀ�×^{mâĉ­[·6™LgΜ¹=æÍY’ ”N&“Ag2¨�›E½ˆZ¥¯?ÝìÒwO9#   mÌ™3§oß¾âc‹:ƒÁP«V-môR � üœs³õt³Õß,õ©ùêmP‚H€H€H€J�ŒŒŒ'NH{øðá½zõzþùç�=êÄ,6DÛqxeû£ÿ¹ lB­¡ðëƒ&ÏB:h\l˜¶è€ËbjEyÔ¼r?®„{ô8¸E[s›N í»�²cЖ¢û‡?Ðú¥Åo:½�ÝQÚ²7!±-âWÉÖ fý„„úˆ ÄU$Ü�̹›<· ß¶ÅŒÌ,‹%V‹v{þ‹wõøMÓÕY›×—p©,¬æ2æ!Ö€K~¹GÒH»}M*¦mÛ²ºuϬ–V3{ð›Nó¹sRÏ �ȬZ=«}GK\œ&¶lJÒ6í>ÛvØÉ€Ž'Ëvþë¡—¥ñ∷Oúµ·ÇõÍãg~¯¡Åó›"lûùgSg•}ceÿïD³9Ç´í¥5ÿ«øÎ'>¯}]wú±¯÷ihî÷M™�´�m}WÙócú_Í&“eæ¤„Ž•ÿjîýP‹‹{ËÔÐ\UéÌ:'“ú<ó"ާwc4»ß\N�H€H€HÀy©©©‹å—_~yÿý÷«T©òã�?¾üòËßÿ½¿¿Ñ•n>ˆ~oà› èÑ 9&¶:œ;Žá©Xý&:6‚øÛ=§àø¨Z¾èZoØóàfL퇗¿Á]=`ÊAÔa¥·»Ú÷Ã�7ð\ èT¯Ì¼�½Í'Ño¾†�­ŒQúfñöƒh_ f Þ\…{gâÜ»ð÷¾�5—Œ›‘Ò~ßÀ£,90Y'èÖ[¡/§(ÊZ¢t�·ºjôÞ7z3–ôC�oÑC<3\±Z´uOˆÄž�ÒN¼$©0ƒÙ›‘ØßÀË:ÁœBôÔa£èùüͤu‹Òì ­TÍmÑ)Ït¿¼êx¥Ð*ÅꎙLz'’ÆÍ&†fU?D¦H€H€H€nÞV§¢{÷îU«VÕét”¼ñC‡9Î}âWxa¶r¬ÛãØœ_—£{+>¶7šF(•ÿ­ÆC[Ê ÎhV óÖ+umÊñàhÅÇ–bpCDS¥R¥6º?‰ÚÍ”º¦eâbŒ¾[ñ±¥(¬¦T†¶EçºÊ©‡&vGRŽ_TÚµ)iá=Zñ±¥èÜàf� ¡r®�m1Aç]`î©&&7ODóÑŠ�-Eï† V‹R·˜±z(:¿¯ Mìä*I™ßÑŠ�-E&èžg-­8è2N}ÃmÄ3âc[ ºé)�fΧ³ô5ÝÆ�[Nõõêê||„\ª^™øIÙÑÅÇ-:77¯¦¿Iøüg¿^ÝB­ß›¸d*Wø·‰ëšŽn#>¶œëÝ !M+I%áäÕÊíÃÄÇ–zDß^Á>‰§´‰ØOŸ˜ðØh?ñ±E³››®~S©¬ÿ9ý‘çüÄÇ–zÿ§üʇ–ÌK•úuËoë2Þ}!^QuÝÎ5æ˜õNÜiÜ Út³�€F   �ÒO L™2¡¡¡öyJdÛ^·WÞŠéÕ£[s{[~%-»O*1ÞfÏ)ã’:¾S âP”âZÛË�8i?s­’‘†“»• ö³Í”ŒqI?¶Ó5�7’NËÂî³È1£ÙJƸ¤ŽïüÛD6GOÔÍy#…7¿fICÎn%ˆ�ÐLÉ—ÔqcÞMш BœRž€ßÏš¹ÙÙi¸¸[ bÕLÉ—Ôñ˜<‹’.îSuúÞ|ØEïaNƒÑ:Á«Í”ŒqIÏÎ3'í—Cp¹ú!G ÿjR,ii–}û•�rÇ.’1.©ãæ?v‹fóÖ­¨\9ûáA’4žÕ⮜ùJ–µ&Åœ–‘±û˜%ÇÕìQÉ—Ôñô�×|{•{5eù– ý41'JŒiÙ—vÇHûûfŸHƸ¤Ž_Ü-íá=ê^øílÜÑKf“ùä�‡`±TîæºÑô4ó‘ÝÙòWدÙEÉ—Ôñ;³D­ä‘8~Š˜Í8q@‰r_·´ëæýŸéeåxáM¿Ä‘=Ã%\å‘Ã�Ư{“nØH7û†xx‘H€H€Hà6&лwï5kÖÄÄÄ˜ÍæŸ~úIH4iÒ¤è<R”¬éù±`"â~BŸ6èþ*â“‘œ?‡ôÛ2ÞJ‹6%5A ±þ:“`qÚöQ¢ÉÉñÚ(ÿ›–„tëwaÁÓˆ›‰>MÑý#ħå÷ûóžüï÷G€VqP³DöÌÈšÿ(�>Hî³u‚†jN@p|&#åA˜¬ úùcq¶–iEzt>z/À˜8ÔÝ!�ñâ�qï§Îê-DÎb�`æ|.@H¼ú Á:A�N(w!—Qî8ô!ˆïs¡�ÐBTÒœ˜y¾þäþåÿ<£N¸?û¡–™`‚yñÃÐ!^Q§Ý¦¿Ÿ3áeÓmVõ›’ÅbòüÕ•¼];n£_ŸNç»?oŠO²�/ñËeîÕ+úvµ&�Ø[]¨d&dXÌ–ót_0pDÜ«5ûÔ_Ú}ž4†ß_§ÞãM¿møßO¼¦üúäâ»g?èRÆ;¹¢É Ëç§~¸ Üθ*w÷ñ~¦û¥ÄxS—Þ>ßšrþŒQiÿðyÊ_Q9i)f×Í©Ò`6œ;TYag!@7›� � � � \ŸÀÃ?Ü­[·1cÆôìÙsÛ¶mï½÷ž„¸¯ßõz­~Vßrؽ¨]E dMx=¶†¿R2òRÒà›êRÍÛO¿o˜’%.&L€Þ€Ã[]ÒY¸°Ÿ§rmX[ÔµN°›2Á­§rN\DçðÂ=Þ±pj¯è¬ôƒu‚>$3F‡ ê<à=úêÈ^¢V÷õû{X-6†²V‹­&@g€ìˆ¶z:¼ ß«”d:È¡E±MÐ{ܬæ|­ÌÞ C Õú²ðÿÕÏÖh�¶õ‘6<ú¨>"BG¸�~^žóöðóÓßu—-“Üо½¾KgóšµZÌzëFÀ°Þžµ«‹Åà ƒuCúÖ}6å³9qÎ’ g´Ìð°>©õ‡5—üp±Ø|B�A'«µeÿ³ ÛÏ ;;a´ñ;¿ÛøÜò¨U'\Ÿ£¯ŸâaõV&¬¶»˜{rB€Þ Û³5k䔀®ú<ÑéRûпönËj{¯WP9ÕïÖrqx²6;Gý®ÍVϽX×Ü«%H€H€H€HàŸ$0ÔZœ�8ÏaòEíù¢�k`ïŸùí{O£›V‹¦Ë BX¾j»Éü&-k£ ÎWèhíàyt›‰ÿtÇØ®ù4¨é Ë×ãh2¿Uj&@Y «Añ @@X¾›EcþÚŽ¸Ø8^¹”•¤$–ŸYƒÁ»ò{:W“ ŠGm/…NPzhãØëüuÕ¬Kê­FsGè ox‡%ú¼} JE£Íó ~îaÊÒh[)°#m펜ظ€a½ò®kðÛ3ÀË?,ЮÈnñ̲ãwŽoï_M¹Tñ®jU:…ŸYq"ü�‚ Åí‚E¬øè+‡å;Yvs²H{üÿÉ!z$ }o�˜g'k•æQÄ¡ÉS£W•ÅlV-¢ÒB)ìNd¥ð¦rJ$@$@$@ÿ#{bîzD^�$YÌX¬ ªsc<Ó‹¶aëaåTvßOÜ£Ôµ)½Fbí\\ˆTLþ¡%éïÃ|½µ˜ŸUÇ�#qx.dSq±¸ÛjQ¶C{î/ ;h= bs4}ý–kcÑg$2æ"Çj.ÝjN2ƳÖälŽ sRÆ@ç �ÎÚ˜“|€§†™¾ûÎ%‘dÓg³D­¾];ÃÐ!æ?þ0ýºA±¹c§yÓfÉ'×ÊbÐȇ’æ.ËŽ¦£H{æ8ëÞã-ῆªv W+­Æ#;ßµGvªò×)[‹;î.n§×?/�ÜUkðs â­tk„²Ö Š›�ô„2q‰Ò{´EÙMÐû»l)W�Ûó£,©©ÙÝ{ -U× �ÇâŸtºæÍäU^9'‡ Ó…†ºÏøP|o­,�Üœ’v®ýSæÔ ÏFµª®ûĨ$çc.§®Þ^}ãçZ²ëi6¾}vJÖOíÿgLÍ.×(ôÁuC½‚¼»|Ökó˜•óœ“nô.ïÛhDˆϴ°‹¸R6> -ÅòXûK驿:�<¾Xâ¨ÿóhöè¾W._0yyë:÷ôž·±‚‡‡–o×+Ò€m›Ÿ©«C'¾7ÛF«ºªO¼bëºfœ’›Ñ q«£—Ê¢¥k7[K± � � �@é#päÀ.ûÿR‘õÉ&“¤ã² --­G�I‹á¯Õ²ê"@Õ´É.‚©Ü.–¨but‹{‚xªè04ê9O#=EVãu"¾È}µépVEEÓÒ ëŠÖQ³^Ã1[3]7S”šlnp~åÊ•¾¾.}ÖØ>²°?~ê¿ IIFÓ@×Çp³¹–Ôëò®Ç²þÊ*›Y½�ÔÍ.©·“ã&     d±ˆúoJuf�vP1Ðß•nv‰¿…œ � � � � � Ü”€Î¢“ã¦Ý t03i¼‘"œÒÍ.$v!     �NÀ"¡lõÑlyW=‹Zt³Õc     (�LPQ½�kF×ÄÕHg!˜¦Fâ†}�r³ùÞì2½þEºÙ×çÂV     (MtÈ¡¶˜Õ‹¨5QúúÓÍ.}÷”3"    ŠÜåý IDAT �‚”·y9‘î„HAË·Ý9ÝìÛî–sÂ$@$@$@$@$@·#y¶zŸYÇ÷f«Vèf«gF      (qœÚiœïÍvâ>ÓÍvEH€H€H€H€H€H „�ÍÌäP[ÌêEÔš(}ýéf—¾{Ê‘ � � � � �@A’1îzÒøæÍ›—,Yrúô錌Œ�7ÚlìÝ»wþüù‘‘‘F£±zõêÆ kÙ²¥íÒÅ‹g̘qôèQ//¯x@.ÙÚÍfóܹs׬Y“™™yÇw¼ð *T(8â{®/±#çÀI€H€H€H€H€H€ŠL@ö WðÌýüüúôé3jÔ(G«iii X´hѪU«Ä—ž4iRLLŒt0™L¯¼òJÕªU—/_þÙgŸ‰‹¾páB›à?ü°uëÖY³f-[¶¬J•*"b±”ž=Íéf;>¬“ � � � � �@)%�8q\›4Þ¬Y³Î�;W¬XÑ‘Q‡Z·níáá¡×ë{öì)®ø©S§¤ÃáÇ%š=|øpƒÁ ÁêAƒ‰SmÇû‘G qss{úé§ÿúë/é쨳D×éf—èÛÇÁ“ � � � � �@Ñض@sâgÑÔÛzIêxrrrDD„œJ½Zµjâ~Û.ÕªUK¼nÉ6OMM½|ùríÚµmí’O.oID·�–‚Ÿ\›] n"§@$@$@$@$@$@7# öµ¡é› X¯‹T‘Kbbâ믿þðËÛ,B’Lîããc—ööö¶5ÊÂl©8^’zzzº½gI¯ÐÍ.éw�ã'     �"»ènöáu�CŠ)»ª•.ñññ/¾ø¢d•K¸MÄ××Wb×vq[]eͶ4:^[Úí=Kz…nvI¿ƒ? � � � � � Üœ€�£¨¥a7Șӓñë§7•ºtéÒ„ ZµjõÜsÏÙ;׬Y3:::++ËÓÓSeÁ¶,ê¶Å´e©öÉ“'ÃÃÃ¥]üíóçÏÛòÌí²%ºÂµÙ%úöqð$@$@$@$@$@$P$–8q€K¾wvv¶¼¸KLJEŠTÄ—=z´l„æècK{£F�BCC¿øâ _‹.»‹÷îÝÛ6Ö^½z-X°@Vh‹ª9sæÈfã 6´]*?Í.7‘S      �›pî½Ù"å xýúõï½÷ž4ètºûî»O~~÷Ýwâ0_½zu±µØúJöøÝwß-�¿óÎ;Ó§O§ZÚ=zô�÷~Ù: 8PVn�1BbÝòÞì·ÞzËÁH‰¯ÒÍ.ñ·�      �›°½4ûæý®éa¹v 4q­¥\ÓxÙZ 4ÚN%šmsË \ÿü)k)Ð^:Néf—ŽûÈY� � � üû|ÑÉѹÃ2›�“‰¡ûP¡ ÎþŠ�/"ñ ÊTB‡7Q÷!­†ÞàYD_ÉUf2#3ûþ‹Ð ŒøÎ(—¾‹'ºje ÛW&hÌÄ{û�r?¿…s‘“�Êõ0ð 4-ø¹Ó#h0 Ññ4bßëHÎÀèï”öL#*âÉøÏN[((ØànD_ȳhBfö­F“¹-ËAŸ§ðD|õaAA'Ïl€Ô<¤ë3Ó²±¼ Ü}suVì€ûW9©ÿob6xØ}ÉÖl1™,™Ù5÷}ëݤvΕ„Ø—?IYµÝ’žé^%¤ê¢w½Ôø›´3 ëü'#:.Ï¢Ù”i¼{ï´Ø5‡N¾³Â®.'-«æó÷4ùèq{‹K•¹ayT•èLöA׿÷`þ ¸ „@ÿô\²’'üMƒ™)щ¶3‹É’“™óè¾çÊ7©´oÆoþ»33.½LÕ€¶oÝ[³Oý<‰âû­Ë�j‹|z±¨%@7[-1ö'   �¢xêh~¿­¯âÏeŠ��t?÷ÆýsQïaDoÆO=à_•Zæ÷t¡vtV¾ð«ß`Ù.4©�ˉèv'^ê‡�ïI’g~ j3&øý$ìYŽð&ص=_D£®póÀ†/ð½0ã*Fh`8ê�Uúêb,Û‡&Õp%«Ç¡R�baûŸ¸ç4­†n­ñ<º!௾�eëó}ìøDŒ›Š¶Í5¥ú°Òß'áÜr”k‚ ›áW�FåE»Z­£?Ú•]zuVò²­âc›3³¢ºŒôíÔ¬öéŸ ~¾ÙgbôþyN¾½·³•{�¾k=úêO–í l&GÝWzÙÚSÿŒ]W÷¥ê�·µwsµâæ@Õ4 –åV{ÌSaØÝ]°l‡é .ô=]µ >:Ö®dû¤õg–ûØ×ûv¿³¥ß†'Ë5 �Z}re¿ïü6¼B³ÊöžÅS‘¸´|{£¶èDJ­Ìmß_Û    ¸ÅÌ98ø%š WÌž‡Š-[JµN¨Óf+uMKŽ _®ÇðîŠÒ�@<ûÚÔ‡áÖýßgÊÁƹ¸Ç:Á»ú¢yxxA¯Ç=Ï LYœÙ«éäeÊ·bx'¥^Þ?×ǶXই§ª”UÚµ-99øòG 4_ëóSð܈ƒØÕ¾È3sr.ê[‘j¯ý:-99 _./;üA¹–øõ* bWüï‹âcË©G�Ênå¯#ãZ“9ÇtöË-áûPsföÆ ;š×(ЮÁ©²ý×\èmTO [ŠN\ú;€“˜pP!<:woÃáÊ—h§>R÷±&âcK=üþ:•Û…šõ»CßâªÚ’ÆUþ,�4^\c-ÙvnÝÇmÉæÂÑ“ � � �€fN-Ev2î¬(¼tšåk®Ð—äŸjT[ºÉé|·Fênªæ�¥ÈHFGë;Ÿ;„”8„7ulÓ¤¾tŸ’+>Ø!Þ8^Ï Ë{øìq4¸1Â¥ë�œ‚Áýr‡/§‘ç0öÉ[ãc‹‘(ë3S;iÚ|SóÊaÕ}¸¼G†”$/ÝbJN |¿´§nÜãQ§ú_�N9^þÞ“á}®¼ûu�Κœ^Xº×˜œY}p;Gm¦,ã¹yÛþî{;öq¾nY $Cg¥ªëü Ë6ˆiÞ$Ž0”-KäÒãÙÉ™õ[ŸÉ$qø:Æb¶\ÙŸ·AK›7Ó%ãN曩åõ¿ ›ý7$l    m H¼ºÞ@xú+Z³Sàé—¯ÞÃOñÀµ.³×``øûh­·0}¿ÌFÛ�ð±NÐÞ'é >è�^ãQ©¶½M«ÊìÍØ þÞùú?CÆl|9 OÏÃÎÓùíZÕf‡�½ào½uq ó:澯ìÅ{Ò8ß6âã³1V¤Aõ1à_Ä£gQ¡ VtFJ´Vó²ë‰Ÿ½$pà½ÿ2ÒbŠKJ]»Ó·Ó�õ®¬¯¾ìý«Ó¿�ÿr™½§V•¨Ù«¼ËÝñ.1‹v›�¦ª�´ÖÊÊ5z,³¡�•ª¬ÍÖO…én˜6G6âí¼ ÚÄb1­«²BûÑwŠª§Èý"/cãqìš\P@œ^ñ½ü®­µY žkB×w`Wž§9ú5 €úÖonIÆxR$b6âÁ<¤Þ!�CŠ{4Ÿ‚È…ˆZ‚Fc Îß…ó¬È¿Ò6î©°k®M‡ÞÏÇ=¬bÙg”S¯Fµ½/eù¶²Oæ¾îØ;ù¢©‘—.o<Öy×ëùMÖšøÞÕkëæãY ]ƒSK$,aÈ£*›ŸÉa8]=XŽÁÔ0@ÿ¬†¬*#ãÎoŒ|xW®ÂÚgÄ¥¯êÿ}VbFè]Õjh˜¯•-zda¶úµÙJœE%ºÙ*�±; � � � ¨" ¡ì�&Êzl[ iŒhÉPÍ+±{!yãš eËÎg-´!2J e‡5ADޥוh¼qšÞ�¡3 ‘q©YBÙ²óY‹ðë+‘-Ö=´þWBÙ²»x‹Æ¹×oÅšMøÄšI�š¦4®Û‚ ¦r›�à&q@zý¹jÖš0{‰W“Ú>-r÷¾önZ'óàŸ×h×:d5{S`“êe[\³;ùXÌÕßN5ùô‰kLkub–Mš@—GUÈuý[Š®>t}`‘ïQ4s³%”]¾IÅÐUìÃo>¡ƒ¶Ó…ífWí|ÍÜíÝnmÅ)7›[ 9qS˜4î4Š� � � �@ј²•=ÏšŽÈïÝð \Ü�ã •–s›pj šÏ¿êr-Ûˆy¿bD÷kÉ›½ä0›‘�£TLN„³®ÑçpbÌÆ¦y¸×a‚1'1¹Zõ»E>¶LaÞoÑ9 «áT¬rjÌÁ·;°áäyRù�\¨egcÞOñh¾Š#¿àȯ8¸Ö¢×=è}/ö®Ê¿êjMž™“óPßéÅm¹Yâ9Ø÷6R¢ÖÓU+òælc¼•eGH87·é‘s)^Å%Ã9ó虤ëüì”wQƒßæìY€]cD—ºdó³àÖ «h×àÔ’ Ë<訊ËmY Ë)E¹å,K'\£bÊÎ96o_íìúŒéÙñ'®È©1-{×Ô ÉgšŽkg¿Zl îŸÚƒ[ 9qƒ´þ®Ï‰!P„H€H€H€J+�“‹!^S- ý–cã X= ~•ñÀWù�n- ,Þ¡øÒ�vºF—�Õ�’xä3+Çë�`Ê#×tpþä÷ÅÊû±Û;Lpéÿ!>k>V[ñ?´伉k%ïµNк?´íÊùxŒù±²³а �BË×ʸv¶x-äË‹G•êÜR¡|^ ðñVÖfW¬�ßâj-j1ÌÙ¨å€ôònlx™ñÐP®z¬‡¿–3L^¼É’m”ÌpûÈ=ª…†­žyqÜŒØq3 A~å&<ôÄö«®WbïO»ê£mU™2²£¿ÝÞø£Ç5«‹G�lè¨ÊÂlsLecu P‰lë_×ÊÜéÅGÍÙ¦º�æå?ȾcéÆÕ/HŽJйé«Ý]SÞæå\l{'äOK¶Zw&\Ã/æòÇRÊkºªO¼b›âšq½¤Ò q«£—Ê¢¥k7[K)Àé‘ � � NàÈ�]öÿ ¤²mÛ6“–‘Рÿ믤¥¥õèÑã’r76+–[Ú‹#Y¬E—a)N{–”âž Šm3ö<Žº·‹©˜½cÖî<ãÅô»ŽÖoƺñ¸v¿5žyáVǵßq 0kYÉ™³¦­\¹Ò××·°>EiÏýÈzÙ™�,]v²åÝ×ÇP”q–Ä>ƒ¡¬¿‡ŒÜæAGVW¾?b4»$ÞJŽ™H€H€H€H€H€T�/yÔÏca4[%féN7[=3J� � � � � �@I# 3AµÅ¬^D­‰Òןnvé»§œ � � � � � $ k³-†‚�7=çNã7Eô÷t³ÿ΄-$@$@$@$@$@$Pê0i¼¸n)Ýìâ"M;$@$@$@$@$@$ð��ÆÕG³aþG\RMÓÍ.©wŽã&     ÄavÂgvBDŘJgWºÙ¥ó¾rV$@$@$@$@$@$p q˜�ØÏŒnö5‹tB7»H˜Ø‰H€H€H€H€H€J6ñ±Õ»Ù²9¹ú·€•lN®�žn¶ë ©�H€H€H€H€H€þít€j‹™ÑlµÈøÞlõÄ(A$@$@$@$@$@%�€¼Ð zõÃVWo£´I0š]Úî(çC$@$@$@$@$@×! éßê}f¾7û:$oÖD7ûf„x�H€H€H€ # ¸vMûö£ïÔÐ^é 5>�Y7¼®ñÅéxVc�7S×VW¬¼ÙpnÉõOf�º%z WÚiÃï…_ÔþŠe¦yÐ. C÷a1.UÎL¦¹4\Ga¾7Û‘Æ­¬Ó;•t©›H€H€H€H€H€þd339Ô®ÍVKLúÓÍvEH€H€H€H€H€H „�Œqey¶Ê¤q•À”ît³�€F     (i˜4^\wŒnvq‘¦     ø H([ýJvF³�¸ct³�€F     (iä Øê_‚mQ/RÒ¸h?^ºÙÚ3¥F     ø×�ýÏøÞìb¹+t³‹3�� � � � � �À?KÀ)7›IãNÜ4ºÙN@£ � � � � � ”0².[ýÒlð…^NÜfºÙN@£ � � � � � ”0òB/gülõ¯Ú.a\nÁpéfߨTI$@$@$@$@$@ÿ6òÞlõál&�;qéf;�"$@$@$@$@$@$PÒð½ÙÅuÇèfiÚ!     �Ž€Î�úh6×f;qÇèf;�"$@$@$@$@$@$PÂXr ñlµ…Iãj‰IºÙN@£ � � �ÀmA >>þ£�>Ú·o_NNNDDÄÈ‘#ëÕ«w[Ìœ“$(•œKÏ)•,ní¤œx=ù­µ“ � � �À¿„ÀŒ3RSS,X°bÅŠúõëOš4ÉÌìÉɽá0H€œ ³úC¢Ù,j ÐÍVKŒýI€H€H€nçÏŸïСC™2eÜÜÜî»ï¾ÄÄÄ”””Ûeòœ' �@é# ³úÃâD¢yéC§rFLW ŒÝI€H€H€n­[·Þ¼ys§N�¼½½W­ZÕ Aƒ€€u³ÏˆÅÞQ¸´#£é ·T4œ[€ÃS�‹25•Æ �Õ©-¼÷ÕØœ·FÅý¾!Ãh´ÔiìñòŒà†-½þ<’=ý¥¸²¯ÆšænªØ¢£wá Ô]ɈMú}Ô‹N˜�æ Æ•[Ìè_¾eXÔ{Ž´)ñØE‹ÙܬZó÷,×"L�ÞÂ{'Ǧ/µíÏ ™ŒæJ�ËõžÑ¦ZË Š\÷Úî¤ i¦lsp ÿŽ/4j9L³ôþ8à`�5 X 4pÞB`ð$ð”C£kÕX`°0�­êå™™g5â“§ùqà³¼º«¿ãc³?unï†d“ÑR³±Ïs3ªÕkYF”^ŒÊú|BôþM)9‚º†×‡¿Ö (çîª1›||,>…ý�cDÍÆxvê¶ÄÌØð]¾þÌ4Œ˜Ž~có[\¨Å&cÔBl8 £ �«`F_´ CŽ ¯¬À· )ÕÊbâ½x¢• 6E“c±dNo€ÉˆJ�Ñkªµ„Ù„uS°{²RP¾zÏ@x;G¡â¨‹�íÄK°ÍVoÍVÏŒ$@$@$@·�Áƒëtº|ðþûïß¹sçøñãUÏ{ϳ0&¢gú& ¸5¶õ‚ÅŒ«;ðÇShùú§ ÞËØÖéçUk.Dà�g¯¦$š×FUݑ֤µ×¨^—L&‹»îéçûÉŠPrbŸáBL)Í»žý!;1½_Ôƒ>i¾±×çf“Ù”alúv¯�qïËQ¡CÄ/÷~œ�œq%ª.ýüì֌ĬIQ�½™0¬zë s{­‹am*ŒÜÚû­Ä'ßMú¾7Z,|jó¥ ªÔÞ ó{@*°ø¸˜` ÚúÿüDÕÈ«¾ô,�D2…Ö@¯<Ǩ# ɶC3[F7ýÙs©‰¦¢¯H¸³Aë2“zýi6[¯Gµ=V§¹ï¢˜&«“›Oú®†§�vŽÃGÏ"5ó£°4õ[cr/ÈrŒ±ŸcEJî1u nèÅ"¯¶yñ³ÈLÄ+Qx#Õ[ã+™  ¿¾‰C‹ðüN¼•ŒÖÃñEw$ÊT¼E|lõÇu“Æ÷ïßÿüóÏ÷èÑ£W¯^¯½öšm6lxì±Çäó©§ž’ö¹]¼xñ¥—^zà�úõë7wî\{{)®h÷×RŠ!qj$@$@$@·‹Åòâ‹/V«VmåÊ•ëÖ­{üñÇG�}õêÕkHœˆý/(ÇÅu×´ÛORN¢J?xBïŽC‘yYqˆüª=„ñš€êƒÔ Qóì.V¢NÅ£ö4¸»ëú õ‹¿lJN0‡Õöèû¤ƒfž.*ÿ»xÒÉKÕû5õôÑ»"†¶Î¼œ’��.•Š�ëèÝ ·†»e'e&—­6åÊÉÄFýjxzÜ -‡ÖM½œ‘ž�P¹L™rJˆ^\nƒ»Þ+ÐÓ·œ—6ö$óèøY·îaõ}“­ª%Â÷¦5î,—4-'�~@ ¡ã¡Àe«M±`ÑÔJ¾²ó'3:ô *èææ®¿oh¹„ËÆä¸œ…Óc«Öözä?•<¼!¼��—�!_ÆÅÚù“hßeáæŽnC‘x)ñר\ñ9Z÷BYå‹!MÊÉËè×�>p7`è]¸œŠø4œ¸„ö5Q;D±Ð· ‚}qJ`kR.ŸDÃ~ð„Á-†"õ2Òãqøg´yAÕ ­ž‚_(öÌ+ÔÚÉuXþ‚r¬žXhõä[6½úC¾,P8 ®õ#�<"�K–,×Z:9räƒ>�¯#W¯^=hРW^yåòe¨Éd’zÕªU—/_þÙgŸIŠÐÂ… (,}§t³Kß=åŒH€H€H€4 wâĉþýûûøø Y›-+´>|�êÆï ét卨íšvûI¥ž8¿YWaÊDä”k¯òH8¨¸Ööt'ØÏ\¬têé³vajÂUSV¦yÑœä&m<ƒÊiçýmpU{6<»p_æÕTS¦ñÔœí!mjx•Sò�íå↓îe<êjæ/ÕïYýÀÂÈÔ«ÆÌœ]sŽ…µ µ9Ø Ñ)¯}ù²×œOlòs7[£}®T$¯wƒ5¾œ,Z=`Q(ŽBY@³tÿü!ö´ê–/t2�9@ œõân@< V'üt~w—kmzmZŸtÕ˜�i^5çÊmÊ–wß¿1¹|U�‰=Nõ Þ7¸î¡Õs¯¸lÇAAëžØ²IW‘�‰ÕsР ls´ö‘”ò�ËÑs„ƒ€«Õžw`á>\ME¦s¶£M8Êû¡gCüvG/*‘í÷*_ct�ÌMJƒž8¸iWaÌÄïsP½ Ê”·&=8|W"ÎkLáøuº¡×tå¸ÿMFdS"‹Wœ8”]Ó®-sæÌéÛ·¯,«‘fùx¬U«–TÄåîØ±c“&M¤~÷ÝwשSgíÚµR—�M‰f>\zV¨PA<ðeËä/©”ºÙ¥üsz$@$@$@Î *[¶¬j222$#mÙ-<<\�¶;¦@§Ç’,òÃ…J¢¸”œ¸;D@ÝÊÀh‹�ªÓ}ÝÞ#¦éõèr®•ßÙÍ+ҧΑîoai4å~‰Žýòòw~ãί8ÜzÎ#ŽÆ’ÿ¼¼ãÉùÍÞÐ#@ 5kRî™Ò\§×½2ï¿/�­8÷МN6µAÕüÞLxò�´§î™Üü«ׯEi†TÖ]ËÌÝ�.Ào€-¶(YþßêW…Á«Añ¨å!Yaõ´EJ¦yÔÙ>nu¶%B2Ùµ)ƒ§TÒëu}Böw÷Û»cEâ„/”‡\Ú›~Œï5¢üò¸;ÇÍ ³.ÞNÒÆžhyl ä1킞~عãäÛ‡²æKT¨Ž;»:4¹Z�Ò]‰â†L„ß‹Xq¶çôþx¼¾ ¯±xò;̈‡¿K—Lvµþá¿‚I~8¶Y'Ø 7¶Џ3JùÎÏ¥,Ò.æb‚Eý¡sør@Æ+‰ò¤|*Šç,ã’:~ô¨<œ8sæLíÚµíßûôiåû ÈÈHI òðð°]’vñºE‰½g©¬ÐÍ.•·•“"  p•€^Þ~ûí¨¨(YL(ëúé'y¡WXX˜ ½²?ïÆ.ð«‹~Ix( &ã×vȸw|$ÅëP¡¶ð®’èþd—‹áu=v%…íÉ19hpû —/ü-U¸UWÄÜú.Ô­ðHÒ‡�e|Ôxr÷µí§§_H´)I:»®óÌú/Ü]gx{UjoÐY,~ÞeyHÝÀ7“ž|7ãé{&7û´ýRÙùÌ.âæaè0¶QPu¿#K¢ì�®TÄ¿xNRû�_�-À0@b¬Ø•tñáÖh¶Mùµnˆ‹Å�¯ ˆO+~Èd@è]¬£ÍAÿ�)otÅŒ]V�¾ÐåDµº^«’š­Ïh>xr¥çÛ¿z!ÛÛÏа]™Ö=‚¤gÓÎþ-ºìXž{gí²NVäïbBT­‹eIX��Ç&c\{\•9Z‹,Ò–øöÏ8©üzbb°ËQ·’ÞGÆ L¾íg@žÓ—–bûœ� ãñëóxn!V¹ž¼Ú6±7» Bêâ�$¼“�®“ñi{$]À=SÐð¾û.l IDATAÌê„©¡8³ µï…o9µº]í/OªúÃríGˆ¼æP›_~ùåÕW_•¸tÛ¶m_~ùåäää´´4Éý±�PvŽLOO—Ó¿·Ûí=Ke…nv©¼­œ � � �€$23}útYg¸fÍš/¾ø¢KñԔ̋ˆß�:c•ØµÞ áC”Ú—·*[Ž'ìÉW¿AJš¥ëåÊEÓ‘ÝY�� ðõÓ»¹éú ñss×íÝ&¹Ç·¤d\Lººû\ý±]Üý¼d%vÄ�Ö²BûÒ¶H1ð¯µ�f6ßµáË÷jh;ùbúùÝ—Å‘öòó0¸é[ ©«w×Gm»XÀ„Åd1xhó_®¤nKøx àk]›ý€õç^àð1pŸõ�ú|ë>à†áÔ©Ìe706o1øë ím×S¥�kwÑxbwZÿ±¡>~ƒ›î¾!å îºC[Sj5Í÷—lÖ5Û¿}|$+Í(w}2íjfhò‡~ŽL<ŸªÌ.ݸéý çRîèî(èt]‚¹ÁÖ¥ÒY6«¬‹´kË�o­Ç7@=Ù@ xßi×J®x¨Õ…—xµüO¿!°¸dí(Qî1€§V«ÂƒB܈º/þøRFšd[Ö~}%銱F#ŸžÃCŽîHýc­Á>´-eÏú¤v}”ȶ%(DÙÛléÇÈH“ݱ°þk$^A¸ÌÑZVÍVvGóêšIõÇÇ[�–¥,Ãþúwe‘v£Jh\YÙi<Ƥÿã¬òº¯&•µ0Z&DÙÞlûÇȲþáïùiWP±!Òâ�pN1�ž€Å#• Òš Öž —6‹zX<º!hººà·m”)S&4TžÒÜ"‘m[­fÍš§N�Êk†Ô#""äTÚ£££³²ds¥H{ÅŠm¾º­¥Tþt+•³â¤H€H€H€HàŸ' ì+q`<–†*ïñò‹À]óP_X‹/°û)%�¼L„Òǧª&£•ö§+C?×)ôœ¬áþîü�šõ=bÎï«!«‰•·y ï+•·æ•ï5ØÏE£Á¾{å³{Æ/^ú˜-~åÛÏX¿âº.3³“2öLX,‡ÍÄ=kG…´­é¢9—ö“+ï_1~çÔЯ•—rG<òm—Ðúeý¹ü…iq™z7}µ–!#6ô ¬ZÆus¢AþWþÀêõJ[¾¥¨¼Ô¸Vµl.1;kLôÚ Îœ‰Á•ÖEßâÆˆÁ«//ÏÌ\@¾‹‘¥¼ò¥I[`àïŒú¿ÉHû�•µg��îº_ž™Êž“æ× «¯„+¥òÉØè+1§ËUòxqvX“NÚXT‚ºo®Äìñ`ý»¨�‰óQÝúwq5¿¯Æÿ6L—$‚½rÆ/Aè+òœ"¢<¾}õ+ⳇ1fdÃôl”/ƒíðŒ u½È‡­ÄÊñ˜f�`pÍG…ú¸xßôC²,ñFýž±nÊW`ÅZÄ#ÎuŠU˜•åÜJïÞ½eߊ®]»ŠÃ¼hÑ"¹Ú´iSÙÌB¶—(wãÆ�åÍ^þù§d•Ë¥F�‰[. A#FŒ�—5üðÃ"^@aé;ÕU}"7`͸^2½�[=ø»T-]+›­K)}sæŒH€H€H€ŠHàÈ�]öÿ ¤²mÛ6 xQ¶tw“Õ†²`[Yt- ­‹«Y �§ªj°ïߢM¾ D#.äÊ­jn«›u«T¢÷.'¼œBT±y³¥U{jÕ­ÓÅ›(¶b9¡+6[6CºLõ®ªÓCÌLÆ«²‰·‹YÖ¹Y•“ Wý‘¥C²å|Á1|õÕW«V­’ ð5jŒ5Jö—)nܸQÚÅ—®\¹²4Úv—öØØXY€#;¥yzzÊ'ç°aÜæñ/”œù²þÊ7&6:R6–·~C÷/*‡D$@$@$@$@$@$ )É�P_®û¥ÂPk) L6°�R QN%šýÞ{ïý½½·H^ � � � � � �@i' ÙH×ušomµÏÝlµÄØŸH€H€H€H€H€JÙщ³É{XÔ ›­–û“ � � � � �@É# ìîÄòl'DJ�GL7[c TG$@$@$@$@$@ÿF9°¨ß—]àLW{7éf«%Æþ$@$@$@$@$@$P X ÞËÆßß›]g^ÜC¦›]ÜÄi�H€H€H€H€H€ŠŸ€ÎìÌÚl “ÆÕß*ºÙê™Q‚H€H€H€H€H€J‹Ñ©¤q=“ÆUßiºÙª‘Q€H€H€H€H€H€J§ÖX‹s΢–ÝlµÄØŸH€H€H€H€H€J �8±8›[ 9q§éf;�"$@$@$@$ xvþ^ÅÆâݯÅf+×Ð�ðâ´xªqÕâ4'¶j�*fƒ­u¦˜Mv¼ðG1[´8ñjf†Xû¹.H;#ú-ú;#æ”LF²ñ™W�’,LH}@[½Da¶o£vým4WN•H€H€H€H€H€H@úÙªpY;ÓÍVÏŒ$@$@$@$@$@$p{(Þì„R”Iã¥äFr$@$@$@$@$@$pâ0;á3›ùB¯0-äÝìBÀ°™H€H€H€H€H€J Ó¿‹ënÒÍ..Ò´C$@$@$@$@$@ÿ('ìTh ¿Ú¨×GO�sþôJ"¾�àØ }¦ 檢êíïà×#ÿÐwŘOœ7Q@2çJüÅ�/GwŒ l¡Ï¸œ˜Ë¶ñïÍ‹ »ÿ´Ï]ò3áýy¤œ>M¾’õéÀߟ ^1;âc2lªÖÎøó…ð5Oû/ûOƒõ{—^pZ¿ ‚JÒ¸Úƒ;�;œn¶Ð(B$@$@$@E"°zÀ‹ÉüdôËOÇNô öYÖó[‹Å’|6ayïo[¼Òé¹”×ïžÝç—¡?Çþq¾HêŠÔéyk†çoÀ@ ð4`t€øØ3�ŠÖz‘©ÓK`6am4~�E@0F÷„„½Ò’1øEürÛ“Ñ÷iŒé…èÓEÒV„NcÄ‹ÁÍÑ¡;b+ë‡÷¼*HkÖs›³ºÜîøÊ‡Ò+¿;/èÓi)ÛÖeAY‘º “Ñ›»Á�è9\™¢­Ä'bÜÛh{'tX£’8`´<3壷…Äþ®LèùŒLPtªW®�rÈv­úR#kŠš#¬Ü�ØýBÏ!Jcf&º €¯NoGÊ)¬úÊ+횔Ӭ¿Gì"û£ç$é+�"eeî±ïséã÷hbMQ;à%1½6<öWCpÀ…ž£…jê²MñS?ýá݈ô]¡ß½÷Úç©+¶hbò“¿›M–ÑÝ?Ž}À/ØszÏbnÛ×çV¼srÜò6s’{|¿Ñ§ƒ~�Ú› ‰¹¢+ÑéL²Ÿ™ÚƒIãE'lïI7ÛŽ‚   Ð’@f|ú_[¢ZNîìîëáæåÞzZ×+.^Ø~îØ¼}¡-ªÔy¸‘«Ò©FD¿‡g‹K¬II~ÄÓö<�qÀ1`Px hhú¿_R<önÁÓ“áí O/Œœ†“p`;îî‹=”½ýžA@Yß«ÍôâÍlÉ9ÙÏÇWïé¥3-àøãÞíÙeË*T2ˆ qfÜÜàá‰Ð*Ê©ëEé-`òHÅáôòÄ´18pÛófóüxîQDTÏw¼]´hŽOÌÞò{™É£ô¾>:/Ï2ÓÆæ8f´ÛsQûõÄã°e'&�±NÐ ÓÆãÀQüö¾þ éøïð+£ˆÕ¨Žre¯'¯¾->[aòãðõ†—¦ Á�Hl?r�¢Ù+qg-4¯sM£Ó'¦ø¤Œ-{ËN~Zïë­÷ò ž62ëÀÉÌí²OœõhPÓû.å/Ñ»m�;jOžuÚŠ]05>ûÄ–+½'×óòuóð2ô�V?ú@â©íq»ŽióXÕª ¤g“ûCk·+·aÖ»TñT,òŽYõ!Îyñ ¯4YÑô£¶4�á\H€H€H€HÀ5¹1ϼȧŬԮì¿påÐÅ�f•íºCšV÷Û~êZÅf,Ï$lûwMgáÒ¶æÎ°mG,ž¶c9uIq¨ÛÔ±Íéº-®ë`P™é‰F›BI#¿Ã+fp—«¯T«�»ÓV¯;Å'”.KAd4ÆÑÌÇV”^ÏžñÀ1‰íš.\¾\ñ®KåšÇß7Ô¸G³…¹OLÞ#c}H±ÿ6í@�šxtÊ7Dø]xW»üíëMQñ´í%+óÖax{ƒË•kMZ¬ªxÚ¾ÝÚÿŒÎضOZÒ7í6ž>ïÓ­�ËÆ”ïz%¶ŸòÛÊôÜþD‰ÏçµY¯›-Òèº9•ä3AõÁ¤q•�•ît³�€F   ¸9ï`ŸÊíªïšº!+9Ó˜–½sò¯"“�’��œåá'¡æÜâîç)-yg.þšÿR€t`†U]š‹J  FÓv˜=©ÉÈHÃg“•žib:¯ÈÊíñý1x<ª×ÎkréwP°¡Y;�O¦&§&›ÓÓÌ3'+k°SSlß&`obåÕßþ2èÕ§öïÔ©$Q·k†©Ÿ 9ié˜,y÷7q óæ¾£ìÅ}Ò*i\äÞ®yêÔÿš“SÌié©“•;hII3Ô‹(whUÈÅ]åÏnñhsg|çGMÑÚ¬ìU&ØSg 9Å:Á÷ò'¸v:µÆ•ÃX6Óÿ‡/(—\/Áhw¦~ƒä4¤e`òWŠÊyZóÊ¢­0šðH—¼s—‚½Ú5�›:Û”œjNˈ›ü™¨4§¤y6©<õÙ¿î~æ´g˘nÏJ”Û³a-—­A²Ä%R½dêñŒdcfZÎÏ“%£™©9wö®´c~ôÙý‰â‡ï]váä¶«Òèº9•Ä¢êC’ÌUZawºÙ|H€H€H€Hà–¸á ƒ»a^ć²Õ™x�w99<ü=³Sò�@cJ–´h7 ;Ê«dÄGé*9é€dúŠï}ËÊ{ áæŽžè]•ÂXN9låj,žîŒ»ºbô;šÿha°»»®kDl·:—ª„»•ÓËaׯ×ëèÓúnÏ• r7�²_rº²ð#¸»#¢+êtCx” R0�~Ãú¡~„¢UB”ŽQJ§ Ù~¬sw¿Ñåj�{ áUõå‚ä0„»Õ©!ôe|ËLyÞP½Ræ’õ.²‹/üînˆh‹:^MI—CrÅêâ™Ç”^�êãѾX®™A,œbµ8u† ¼"Ê(‡½HÆøcwÃÇËÞ A¥âÂ÷tînç"zž«ÓÛ=¼’¡\ ‰Ÿý˜øÙÂêÖ2î©vàÇÄO~HœµPcÀ¨…­ îúñë^ª³¾|¸�_9O9: {à¥:÷ß5²ÜÊMÿ‹j5 Š4jbN�Õ¡lùF‚Ñl5„sûʧ0 � � � �À-!àêwÿ�ƒlªþ¼úû´�U:×H»˜òצ3v{—öÆ”oZÉ~êrE6ªú8OI”µÞ*ïôü.Š÷~ÌÕ{îOüošwRN/FcÄ=hw?&Ø"ê¹]\ÿU>Ô0óÇ`›ž³?�–ܪSA_Åd‚ûÿ·w'ðQU÷Çï,Ù’�„ »BdQ�‡¢DD\m}XP ”çBU­¸!Õ¢"¶RµV-¢�Z1Z„ MÁDBH„�@È6™Ìþþ7Cœ$Cf2f2¿ë|Â�sÏ=Ë÷˜ÿœsÏ�lyU'JÈHSVÖ bËû½ùÊ‚—•QC•GžWÖ}¡,}[ÍS]7›½Y)Ú|â”–ü¡ËHKZ)óÔͺ7¿zÁK‘£†;ßègFº²ò�'ÊÞ›§,øƒ’5B).UoÒ®¿ùkÄ^ÊÌHQVÖM}�ý½•o)£�¨ê‡|eó÷ÊËwׯÙûúŒÔŽ+ëFêeFÉÞ‚²¯Æ\zA鬧ãoÙGýþ"ªï9ñã³ nLš1©åõ%eDÏZyâï]ñÞêÕ ~ì3J]Aîš2åå,áÅûd©‰­»É]Öòòv;1aÄÛÓÂ9ÿ©/ÿÂY�¾#€ €�¨È+3•«Ãªå¹Ç>�òA¿i$÷Jí;eHñW÷¼·CÒ 7ìÛ·ú‡¿ê¿Ú(Š:•ZQòåYFZQzÔ½•ñsyɯËr'³ìøð«v]1n?æ)Uu÷—ÊZâ�MQÆOSºõRòR~u±rùM~�±¥òÂkn~Å”b¦MÒ÷ênþâKç,q‡±¶ú©e¶ý£®»Ì?õ)J^�R^¡–»_™r¯2í¥×ÙÊí“”#¥êDq¨—Gy­X£Üp•¿*TòŠ”òêº)S)Ó®RzÉÄ‹ºM†²ÿ§¯2@�|ý¹YòÚÊÕÛ̹ŽLy,qÚøÈÌn2i¼zÕçæ=júîýÕ«?—¿ÔZ’Wm(7KQGr«ÿ4å«K§õÈèoª±íVÛ 3ÉWÏÿ¡4¿æÊûzú¥:o ‘¿øVo_L÷FøD^F³}@ã@@ YE9›çd›+kcRãúM=è£YrZb÷äqkoûböÇŸM]ß)qÌ7ÉÂãÍ*®Y™¶)Ê"a­›+>Q¦¯ž<©oÝŽFQæÖ½î©{¼öɃ>ÿù]޲dŽú/™+.Ï\¾óQµ¤7©Ð^ñ’úrn¿{U¹êĨþ‰_ÿØ–cZ<§ÂPé�¹â7M�›ùh‚”T|Ðöä½G‹mòä²sD,]•:p¨ß†³s¶)s«7Ëtq™(þèLµé2ÄíÚdz³ŒôvLw%´hÇ’³­jγŽÊj™+3ubÜ£¿‘âdͳò_Îv”U(:mÄùý“?}Sv×USï䜯•9O©÷fË\ñ©“•G壡(];)¿¥Ü÷¸úJn§<0C™"Ÿ&?m9?(s^U*kÔ¹âS¯Týå‰r�&å­)/¨=öófÌùîèœ%öJƒÌOœ:>åQyÐ�’2†Üª}ðÒiöò*mR‚Œl§<>Ý/ïÍ)[9g§±Òš�yÉÔî×?Ú[Š5ר–Þ¼µt¿A§×ô�þ»Í—Ê]Ü~©®ù…h4y5?¿3§Ý¹2ž·§…w~M—)òO­º­»oœüì7hØ®ïä9Êk>ÙX·©ÇØ@@ ,¾ß¾Åõ»�ìlÚ´É&óqÙd�/ƒáÚk¯�QñXT¢_o!õh»D3ÙãñÜî @É�¹gP—Æ’˜ÖK¦,·îÖ±×¾Ö­P9\tN+רԭÄÞj•f^¶½ÕêrVô˜²°Õj”uÔîj·ö£�>Š‹‹kI¥Î²%[£ñº‡Ã (c[Þ†–´?˜ÏÕét)‰ê÷zÎz_·²Ïhv0_2Ú† € €øKÀêpȤqï6™4îÇEþ¼«;dsf‡ì¥£á € € €€v�ÆëõÌXiÜ à“Y ³OJð' € € Ðv4›¼¼íŸÃá~ŠÝnýõ××­[W[[Û¿ÿÙ³gwèÐÁÛbÛv~VoÛ×—Þ!€ € €ª€Ìv»×¯†‘ù»ï¾ûÅ_¼òÊ+~øaçÎ�yäÓÊþ#Ìþ¹ï@@@�¶) 3ÆehÚ»WÃIãk×®½õÖ[ÓÓÓõzý�wÞyðàÁ�;w¶M0_{E˜í«ç!€ € €¡$à]€í ÈÝF³«««KJJ233�ýŽŽŽîÒ¥Knnn(1¾­Ü›xcj@@@μ€3Ìö®n£Ù555r~ll¬«Ùw&ºRØa4›Ï € ЪùÙ{Zµ¾Ö¯,'»õëlå³7µr…­]]öÆÖ®±õë3dç´~¥gºF¯F³¿Q”×ê^­ßlg€m4]‰c·ð±Þ®¢ÚÌŽ§Ñì¥Kži3ý¤# € €@�dïí>öÄ|Ë i’Ÿ›!aöˆ±~.3ÈŠËÞ¬Œdmòks$Ì;ʯ%_a5Ù9qcG_»Ú"yhvóŸ›Ý_Qä¥h4F‡ãW³âããe]ñŸ~ú©G�’(ñvaaaÏž=]Ø�&Ãìyóæ„ €a.°ë»­a.@÷@�6# Ñ8äåmwäñ]n§Œ7nÅŠC† INN^¾|¹,6>`À·}ºÉd’çf?ùä“Þ–Øæó7f·ùžÓA@@Àgç}‰¯uYä[ ;–ù6M`�oÕù~ÖžžúÞ2ÎâÃ9gî”eïøV÷`ßNóù¬v¾ž¹ìM_Ïlíó|þ˜*ËÞó¡±wùpNËN‘pdªvËÊpžmu8š?iüD…²Ò¸ÛS±5Íu›?šÔ6Ëp³çÏŸß6;J¯@@À{� ã¯ôþ¤°8£}ûöï½÷^LLŒüº¦“ p&d[blùÇO•û2iÜáðaÜOí ÙbN…Ù³î}(d{AÃ@@ „ÙM±jµÚ´´´¦Ž’ŽøKÀOãØjs4«¼¼ma¶·b’ÿT˜½¯[¸­³ç§ € € €!) ³1sÃIã!ÙùÖmô©0»uë¥6@@@�Ö�éß^Ï÷!2oÍ.g]Úàl­B@@ px衇®»îº«¯¾úæ›o>#ë_vÙe§íã3Ï<óæ›'–#“Ö–––z>Å•gëÖ­/½ô’çÌ 3Y3Üi{ñS£q_i<ÌÐ|é.£Ù¾¨q € €@è Øl¶|ð’K.™7ož¬cWVVöå—_mwê/³÷ñÇŸ¶�®<Ç�ÏËË;m~2„“€o£Ù„Ù^F³½&ã@@���ø³¤¤DF}%Æ–Ž¤¤¤\yå©Eõ?ûì³wÞyG�ñ‹_\{í,�ê IDATµÎÎnÙ²EF• """†þðÃKºŒ/_¾¼¨¨H2ßtÓM'N”ÄíÛ·Ë´ìËrô•••çŸþܹscccåP~~þïÿû}ûöedd83; wû)­Y³Æn·_|ñÅË©§4Ëè÷Š+:tè ùÿò—¿|øá‡ò•ÁСC%g·nݦL™"éÎúÈYÈÚµkGŒ±yóf×!玜8{ölù)m“�ÛÍ'\ßz1WÜ5½\–@ W.ßûM˜í»g"€ €„¢€·K–,éׯŸÄÀwÝu× 7ÜðÆoÈŠ¥/«W¯¾ñÆ�A©„âãÇ�—ÁmI—°väÈ‘£G�–sõz}ÿþý%qýúõ}úô¹üòËe¿W¯^ãÆ�“ÈYöe‹ŠŠºóÎ;eÜ[žÆ$~úé'Iܱc‡ÄÞÓ§O—’““o¿ývg¥ugœúñé§ŸJQçœsŽ$�;¶wïÞ§Ž�ÜsæéÑ£‡$Èðuß¾}O9õg£…Ÿ:Ì^ø h4ŠVëõËá8õ=Tø™ùØc&�ûÇi € €¡+ ÅgΜ)í—)Ù2\üì³ÏÊ··2™\feKøíìš t;Cn �†²2d휿íÌ,óÀ7nÜèÜOHH�‡«;÷£££Íf³ìK~‰®###�é’ß¹ãöS²Õ?Ô±cG· òVî'OOOw¥×ßw%²ƒ€›€Ã!7 èÜ›ñÖëGm7£Ì6ž…0»�_`º‡ € àA@œe´Yæ�ËýÒ’---M‚íI“&¹�"é‡rKLMM•Û°]‰²r¸Äê®· wä¨L 7™L2Ö-G%Ã<’"Ùê:|øp§N�ÜrJùFÀ•(wb7ÌÓèŒt×)ì„•ÀÉ© 5><�K«5×»¯"¬Ø|ï,“Æ}·ãL@@�P0�²~ØÁƒ%ö�%ÄrrrdEnç`µL —¡ì�;wÊ!Ê–;·�󽯹æ¹mûóÏ?—ü2þý÷ßKdz²²~üñG™:.™sssåféúK©5”‘�qEõÕWå&mY†Íõ˜.·œcÆŒ‘¢¤IR¬LYß½{·[yëÌ# ªÉþ† ¤ ó´k×NBñú+¨5ÌCJ˜Èg¾®§Ï+ÊÓÞ¾ìöçd †|!&V~é&£Ù~a¤@@���[£%þ”çfËÔki´Lü–;´å.hÙ—§|I -�›–±k™õݽ{wçòÝr#÷ã�?.Á¹¬‹&!‡¬:&·gËÑ üùÏ~î¹çd–ø­·Þê ³ë�$˾ó­*O=õ”d–Ôd$\V&—•ÕªÉÚæ²Î¹,`&q¾¬R.Mråq–#o�yî¹çٿ袋dAr�îÄd`Wž!C†Èòãr«¹äyúé§�÷“»Šb'¬dúƒ¬{/Kë»>^u_>º®›¼:1l3kºL™¶�§ã € àY`Ý}ãú ¶ë»­’Mvd4O"ϧpZ_`Ö¬Y2Þ~ÕUWµ~ÕÔˆ@˜ È7\)‰ê‚ ¬ùDVgØ×m„ì3i<Ì?t@@ $d®¸¬¬&ß|É*è2¹]å’Ý Ñ´E&�·Å«JŸ@@Úº€,Û&ÏÖ–‰å23ü‰'ž�5ÌÛz�é!#@˜2—І"€ € àXºt©kŸ*&�Õå 1 € € €¡-@˜Ú×�Ö#€ € €•avP]ƒ € € Ú„Ù¡}ýh= € € €@P fÕå 1 € € €¡-@˜Ú×�Ö#€ € €•avP]ƒ € € Ú„Ù¡}ýh= € € €@P fÕå 1 € € €¡-@˜Ú×�Ö#€ € €•avP]ƒ € € Ú„Ù¡}ýh= € € €@P fÕå 1 € € €¡-@˜Ú×�Ö#€ € €•avP]ƒ € € Ú„Ù¡}ýh= € € €@P fÕå 1 € € €¡-@˜Ú×�Ö#€ € €•avP]ƒ € € Ú„Ù¡}ýh= € € €@P fÕå 1 € € €¡-@˜Ú×�Ö#€ € €•avP]ƒ € € Ú„Ù¡}ýh= € € €@P fÕå 1 € € €¡-@˜Ú×�Ö#€ € €•avP]ƒ € € Ú„Ù¡}ýh= € € €@P fÕå 1 € € €¡-@˜Ú×�Ö#€ € €•avP]ƒ € € Ú„Ù¡}ýh= € € €@P fÕå 1 € € €¡-@˜Ú×�Ö#€ € €•avP]ƒ € € Ú„Ù¡}ýh= € € €@P fÕå 1 € € €¡-@˜Ú×�Ö#€ € €•avP]ƒ € € Ú„Ù¡}ýh= € € €@P 胪54@‚Y@¯ç7‡`¾>´ @ µý?#ÿ³líË@} €„¨ÀüùóC´å4@�À L¥[á„Ùn ¼E@�ÆæÍ›×øR@c�]ßmuë=a¶o@@ q�†¿F4ž�T@Â[€%ÐÂûúÓ{@@@¿ 0šíWN C@ í ô4,@�ËÊÊÚ°a…» šeé’gÜjt¾ Ý ÝT�í&‰ €@à³gKÉ €´5�@Ìÿ`Í'N& ¯ÿqi–ú5ÖßÝkQ¿ì#€gJ€IãgJžz@@@Ú av¼¨t @@@àL 0iüLÉS/ €mVÀp¨ø�YwOxéù”Î�ýÒI× êFKkøÀÒF³5•ÐÂ]•Ú쎅Ù;3 JÏ ‡K…@ m ð}Û¼®ô @�Vøìù¾~핯_{yýâ…RiUþ¡U3î;?9ó=V~øpË›á9 –òO›ÁCN{îi3x(¼þ¡7¶æî(:¾dÃõ[iÿh^Äú§4?î°šý[ãK/ÿé7wß_XxÈ¿ÅR êŒf‡ú¤ý €œa�¨ø¸_Ü{½µjïÛ/­«ÞW°úÞ9#ºŽ×FÇi"×<0wüâ§’:vô­‰Íq�9½ÖhánýÍÉ+)(«.®¨ÙVxlýžÃ£3}q+ö´o%®Ö}ýVb´=õŠ+÷l-ÉÛ¤dŽ>íY 3<úØÂܼ‚víÚýç?ÿùÙQ)ìBåß×mþYbÝ›ÑY—>¹ðwñññ ‘‚´yF³Ûü%¦ƒ €´†€qÏRM­fÕ½s.êzžÄØF£)ʪ ¨IZsÿ\߯´›»º×üSšŸÓ‡Â]§8wJªjsö—nÊ="o Ë ï~�°¼Æ-O Þj ¶F±¸ëà!i uÔæÅ¶¯ÕìXé[EcçäädggWWWWUUUTT¬\¹òâÉ_ùò•“gL»tì=÷Üsôä¶»n»ìò+nŸ6Ó·ê8 uF³Cý Ò~@‚B ´ öÇõß�èqA¼>Æd¬U,fc�1Æ¡PÝN"íq‹úë>mϽ•g>âaTÎJ}+|Ö[+�f›Ã!…h5šü²ª™ïmY}G–N«ñÜGm]•=Öq²­âHÐÖh»ó‡¡LÿÕ_RºöHºj¢£¶ØVyÈ^s¨¬<Ú•¦óPhÓ‡÷íÛW\\¬Õž¡yþ•çuóugÙÎê í5*jã—Óÿ”>tèP)#**J§Ó�5ê…^hºHõÈWG_ÙðC…É2^¿s@R‰¤¨F»â�­nO~:”�G:m�èsA÷´9WŸ'©l €@ð fÿ5¢… €»@ñޝÿáøÈžFk¢?ÛÿuR»v11Öʳ,Ñ)Úˆ�UIkçüΫHÛ‡Ñf§ÑüùóO;u< …7¼TïýêRIüß·6å–V¥'D¯º#«ažæ§HüYnO´ØÍkÊí‘…j4Z�µö¬˜v1:»Ûš�kb+ó2²®ÑikìU{ìÆƒF£¡d·Ñ{–nì´æWT?§D½v»½¬¬lïÞ½Ît™¹P4¥¨H)r¾•Éá…±…‹ÅuÖ-·ÜRR¢Fζo–¥:Ì—ž{–¶øxJç>v‡Ýá°ÙlŠ]ýé�EãlV«Íf7UÞ9ªÿ²nR³=hr‚I€0;˜®mA@ Õµ/ßóÇç\¥D®ÉßrñÜ9ÃÇ\!CšEyy+ï¾»Ïq[;]´3Òÿ{ßïÓn>ŒocÎÍ,ßçÂõ?Ü©'ƒØÇí …Æê¨øø´d­C¢P»Ýj·j#£K´ÚèšjÇ®5½»ÇÆ_x� _ÛªY�‡K�Äš5LѵïÚÌ>6Ì&a¶¾EEö*�97"BwÎí7ôŽÐEèµ²/?#ÕŸ:G„6%.B^ý3bÚGž~b¼ŒçWkw(îÕoDÂÐ~«õ“/wÈTé•^ÛÔÞEÄD§Wü5û¿ [E  ´„ÙA{ih €! `,(Ú÷é†K2‡ÅicVæÿwØ}ww0°C‡&“)µsç /¾¸âî»Th’tQÎÙã͉´}mvzyÐhá.XL¤oóµO)ãØö¸}5•) ± “VÑØuz«Æ®ÑhLV«b)¯‰N,̸0µdCL’Ñf|dJ²E'gk¤w»ÃPe¨®2¨ñµC¢l»ŒgÇi9Vh´¦¥%Ÿ²`nÂìà¾>´@� ¨úiÿªÙsFö–·bï¦ógÎè1hpJJŠL!–ØÏl6'§§Oxî¹÷Ý7¬6*Î1À¨®ˆÖœH»…�öy̹9õž¶pYólê;ÿùhúèæ”6nùçË&ïœ{ÚÌŽ„üÚê”ø˜Ÿ ¦ö ‰Þ:»E±™6“ÃZkµX͆ÔôžŒûó×ï9SeŒËz·5¶½bUª-öëãjO[ESdÆøŽ;–-[söˆWôÛöþâšÜM²ðxiiirê 9«äð×ïnýGîØ “f=üȽ3´Ízx˜DØ2 .ß8ÃêÒ#Çö––ËÜq‡ÜŸ­ÞÎî裕nž¼½©ö‘Ž™av�]šƒ €@ˆ8cìK2‡ÇEÇ­,üºÿ´©]ûõOJJêÓ§�DeVKmtt´Œi·KM½ñ™gÞàþÚ´8³¾.Ò~xÜ¢'ZgE´Ö·\»£ðµ-{«Læ6þX¿öe¹�Z–B“ô(Ö�˜C^a0ß¿ú«Û†ö¼¦_§úùÝöeº¸Ùf‰Š‹�q˜cuÚÑ];éõ:™È-ãØòª•—Åb¶Z�jLç^}䫃ƒ/½!.óbW!ËܯØ}³8ðÊG¯hŸÕV=yX†²\ÿöO<Ñ»woY{<6ãr©åðO‰&L8~üøìû¼õžGŽÅ0^¯UV+ßnßqÞà�®f4Ü‘¯c4�Qïý–ñëÛÆe™¥#f‹ü4™­ò§ì¯ý6¯á‰¤ €Á,@˜ÌW‡¶!€ ¤5y…kîxTïñQ±ïämɼõæ.}ûIŒ]¹?ïïkß­>ZXV\Úç’¬þ×ÿR‚í¤´´ñO=½jΜ‘ÑbkõçTD¿;ýî™­ Ò¾ùÚ,™èKq111GDDdé)oËÄȬqI4TUèuÚ}¹ƒ»m}vë‹kþxëщc.orÕ7¹ÛªÕlË-Ü™_$+ É6¢ç…QÑŸ—ÿ sY�¾}“““�ÿøƒ¶øÛëné°t·‹÷nûò¯w¬¾|ÎÓ±;vé4à×wízó/g[b~8v`ÂK‹CßÀ½‹×/A²ÜJì~ ïk¬¶êZË’ ?ÌÓ¿Ñìòì.GD”Ýbrèõ6»b±K0êX¸ê_eÕ2@®ÞÉl—Ñj‹uT¿³{e¤úÖ†Fë•ÄÝG÷hnÖ¤F¤vÒuú^³O¾,�ÄÊÊÊ]»v¥¥¥•l_+o»wï¾sçNg z½V¯Ñ÷ˆé‘š˜ªÜ®l{ÿ;a¶Åª~%!wgËrnê\qé‡Å¦Hì-ë¡ÉËl1YlVS³æŸ;kç'  „ÙÁph €!&0lúG>üüPUáè¹÷¿ÿŸmÕ†š‘#G~¶îïã1Po³”+Šæœ¾éSgé×®ú`ÒSÏäçD&'ßøì“oOÿÍ O/LÔ/Ä:ÜŒæ>4f€<¡ªCBÌ·…e{J+®îÛ¹þIs‹ fk|”þš~]dš·Å¦>Z¶Owj}~×öW÷ë|^çgb£?Õå¾²®¸]ΕùáòîÇ]Z÷V�:.)êO›õX•Q¦aûq»û–é3œ]¹¼òX·cò-‚3Ì~üñÇ­BÖŸ“˜ù¨õ¨Õa=–}lHí€[5±ÑœÎD³E–;S—O«[éÌ®>ÄK:h•1lÙd½q»úÓ~ÂÊC9B‚J€0;¨.�A@ 4z]rѦ×^ÿä¹ÅZ«ùV�–ÞÁj©ÔédÖo…â°ÉͶŠb�‰6ÅÅë#äñÎu[B‡ô«ß�úÔJ‰“å%ÁöSÙ;û³{’*©�çfÇGEÜ3ªOý²¿;t|vV¿á=Rë'6º/±³„Ù2ŸZÂl™P-+�ÿéó¯ F“Õ.)êKÂìóÎîØ§cF£§ûœ(7W·�i½<ú› eiñž�R¢=%ËŒkj”OŸÿ´òo•ý÷>™Iî!­Ù"A¶s@f”¶üø1y”—|b$Ò–§•ÉûŽW+ñIJà „„ÙAxQh €! 0õÍ×�­ŒŽ<ù넺’•I±UËO‡ÃªNVÔ)Áá¶I¤ýþ´QÍìõ{S/mNN�b×ÛÌúÈHum0›]"j ³wï(Ó¬eÈ×¢qK¤mUŸ­% Šù{KMM�9sæºu뎟×M¢âŽ�»nß¾}ðàÁnõHbF—nZ�ö¶kf¥E:>S>ócËéÎ0[Ée®ý… |ýµÇJËžZ<×d2×�&SíËk6»ÕÂ[@ øNþ1ø[J @@ ÈÔ5¬j»Ía3*o;ä¡ÎVi²úx&¶– $h gÅ&Ñh­v“ÕfË,ëÝEGÌ^˺îꀶiéÑ©KBbûØÆ×QkI$`¾ð ÷%’øÙW®ºîúâƒÜ ”û™7WI˜}í ÍrãÀé·Z“Œfkä+ùFF>%u‡ÄØÆÚZY¦^v"Ôœ 1Âì»`4@� Pʤn2†]£h-»Ùa¯UG¶ëÂloÈ«nÓŸøh¢7”‰J€0;P²”‹ €@ø èêfŒG¨a¶Õè°J°}fÖˆÞõÝÖÀá{[ø¤×ÿ]a4ËúgÒ¤âJã¥/d·‹‰X}G–„©^52Ak´GÇ™++ÏŠ�+©4ÄGGŽìÝݹ.šD§5&k¤FÉlß¹KR„WÅz•YÚ,+œÉËÏýÍ¡‚<ç×+êWqñ¿ž»0sàyE#‘²ÄÊ'¿yñTüŒ‘çþx¨,7ÿ°@hM&)çÜ>=Õ‡�K�}r“§i+ÚˆH�®×Óß¾î©2Ž!€­(@˜ÝŠØT… €@[�ÕªœÝ’ñL‡Õ ¨w[›±n4[ÂìfmþŒÆç1gÏCÙÎ:ZøÏºQ÷féÄaË6íþtw‘óPÿŽíÝßÛÛyn;­!ª]tqutš>â˜ÑdS4²·NÂP­£K\b§äŒ®Iú�wÑ{Ã7L)*RŸžž>fРŒŒtÙ_b?ÚmyJÿ´þÝ£»ï3îÛ²hKZmɰ”SUWT4,Æ=E„{qòÿ,útgt„öð�¹o¼»Vý¬8kÿ•ãœ>.ïÎj?$󜄨ˆ;/êí~>ï@�` ÌÖ+C»@Y‚ëdKåÞìjE£WdM.™=®FÚµ'yý§Á°3ÆnÎhs@ wëjzBô½Ï:n4Up´KRÜ�ƒ»ukï–§ùo£5æ*‹aèÙÃ�ר·g»¦T'Çh£5W¼oïÌo¾ùfôèÑUu›ÔzÛM·-™¿Ä¾À~(âС� �Ú»wï‚‚éÈÉ!îS!·‡ÞI¤½ðº!j†+ÝTóp‡@�  Ìò Dó@YöÚR-7 Ë“§k­"óÆm&gë}[Í«`¸ù1¶³I-Üíš�8;}GÑñÂ2Ã�.íGgvt;êí[ƒMùÛž½�žU÷êFâÛ*³M9ñTµFÏ;MâÌwÌü¿ûesÏwHÑŒÐ8žSöÙgë>|ø…ÔÅÏõSÙGÂC€0;<®3½D@ `VEc¨®ÌÛ‘ûç¼7cKÄ-·è&$%+q5µFƒF±×ZÔ›“½Ý$î7hØüùó=œèš(Þœqìúå´ðúÉþ�#2WïÍêë–îÃÛ[ÓäîëJïNlAŒ-�›Ùk}ö‡ k|éå?íþjï‚õsÛ·Oix”@ l³ÃöÒÓq@ü#P¡ÑlÉ?°åÕ?+×M,ª’¥¾ÜÃ霗IM¥UW èC•<;ãaçz`»Š há®ZdGnÆžM[›ý¿ùuý>²� à Ìæ“€ €-xxÒµ-:¿y'ûH7§ø€Þœ�@ - f·¥«I_@¬@Kg}Ú–Qx£Dei´FI h¥-¼©‘Ž´¦avkjS €!,�••¸ÖSx£¶ei´FI h¥-¼©‘Ž´²av+ƒS €¡*°tÉ3¡ÚtÚí�Ú-ò"€�f7‚B €4`®oCR8S²À¾sMþbž©K@½8\ëƒf××`@< ÈŠßžs ΄1Ï„:u"àI@ëé Ç@@@@ÀÂlo´È‹ € € €€GÂl�<D@@@ÀÂlo´È‹ € € €@�@¿AÜ‹ºyf»�ð@@@�ÓHŒ=þüF3f7ÊB" € € €� xˆ±åÂìÆÕHE@@@ ¡€+Ænêqz„Ù ÑHA@@@ �ú1¶ì7’ƒÑìFQHD@@@ÀMÀ-ÆæÞl7Þ"€ € € Ð\�fÆØR“Æ›kJ>@@@�ðh4ÆæÞìðü0Ðk@@@� 4cKz£å2šÝ( ‰ € €Œ×¢DIDAT €(blîÍæó� € € €€>ÄØR:£Ù^“@@@ LNc7uo¶>L€è& €´P`Þ¼y-,�Ó@ÀïüÅô;)"àØõÝVW ÝÔ¾+sýÂìúì#€ €@“òF“Ç8€gH€¿˜gžjð$À¤qO:C@@@À+F³½â"3 €a'ÐÔ2ªaA‡@hžavóœÈ… €@X ̺÷¡°ì7�F@ÀwÂlßí8@�6/°¯Ûˆ6ßG:ˆ €€¸7Û¿ž”† € € Ö„Ùa}ùé< € € €€þjw„Ì®ÁIEND®B`‚ipython-ipyparallel-14e3c43/docs/source/tutorial/figs/single_digits.pdf000066400000000000000000001215071520071063500264170ustar00rootroot00000000000000%PDF-1.3 %Äåòåë§ó ÐÄÆ 4 0 obj << /Length 5 0 R /Filter /FlateDecode >> stream x+TT(TÐH-JN-()MÌQ(Ê X(€ ”NÎUÐ÷Ì5Tpɪ”1 í endstream endobj 5 0 obj 51 endobj 2 0 obj << /Type /Page /Parent 3 0 R /Resources 6 0 R /Contents 4 0 R /MediaBox [0 0 800 600] >> endobj 6 0 obj << /ProcSet [ /PDF /ImageB /ImageC /ImageI ] /XObject << /Im1 7 0 R >> >> endobj 7 0 obj << /Length 8 0 R /Type /XObject /Subtype /Image /Width 800 /Height 600 /ColorSpace 9 0 R /Interpolate true /SMask 10 0 R /BitsPerComponent 8 /Filter /FlateDecode >> stream xì� ¸MÕûǯyÎ � � $Là•W^�sÕ°aÃþùÇZÈ�–/_n½ãܵËþ•]ŠC@¿ýö›]ºYޝ…wë"  �ôë×þÕÿþ÷¿èY25Á KMM­T©R¾|ùÎ8ãŒÇ<¤œ“'OŽ?¾víÚùóç¯P¡Âí·ßþ×_E\2?ˆ!‘;î¸óz(¹dÉ’W\qźuëB �øq„ uêÔ1«ÛµkWÈü`¸.(gÉ’%Mš4Á¨]‰%®ºêªo¾ùÆð@Ìy¨�õW€’¬K¼" 6{öìK/½“°yòä)_¾|çÎ�×®]kægΜ‹.ºÈ@Ú½{÷­[·†¿k½c¶ &¦7n\¨P!°ºæšk~üñGk¶�v±>â5 � � (B³�è ï»ï¾èò„1¡G†¿Ô´iÓ³Î:ëþû…;( Ý«µ(ëX±â=÷܃<è¯Ï?ÿüÓO?ݺ *¼ðÏ?ÿ>ü8!=ô )]º4­E‹Y ¿¾ûî»!CuP ._ýúõ³­îµ×^Ã[èб¼jðàÁpKŠ+7Cü+sýü”Œ @7üTzæ™gÂå1îÀÉ4¼‚2eÊôíÛ“°7ß|3à=#Ñ#GŒêà_=øàƒp,‘…0À,Óð¯ÌWÌû½G¸%ð0áÕ€ÞÕW_�yLܹs§ñVVÂÿñÇpiòæÍÛµkW¼8pàÀ.]ºÀá´úff½æä´®¿2ü«nݺ.\k¥P¦›‘§V­ZPÓ|+üÂ0¸‚hwH>dÈ\ãEX&Íü éßiYS ^� � èM`Íš5¹råB‡…ípÀ(MD}Ã] tëèûÐ�Ÿ8qÂx£ð Š-j®�ùøã�‘>ƒ¹pëèÑ£ÃÁÍ(þ^¯Q£Êùì³ÏLaÒÓÓq³\¹r‡6o†\¬\¹%ÃßÛ³g�ñ™ ¿%Juûöíƒ7çjýúõf�èÜQ”µOf}ûóÏ?�Òà‹¢.³ \ìØ±Ãø8jÔ(d€3iÂÄ#ÈŒ›Ÿ~ú©‘'.ÿª@�«V­2ë1bŠ3fŒy'â(\Ddƒ´f6\À)ŠÂðJ¸wÎ:îtÓM7!Û믿n-9äÚ°10_¼x±ùè¹çžÃ‹­Zµ2ïD”Ü|Ê   P„Ü*Œð 3† 0â2RÑ¿BWˆ«–A!æp‡Ñ«Î�;ךç‹/¾@ž(ÏÛo¿� C‡µ¾…ëÉ“'ãþÂ… Cî›�ÚC:qÌÁE¯ÎX�v×]w™åà~ 8Øå_ÁÃDQ›6m²Va½†ëˆù¸�´W_}’cÓ�‘3.ÿ £dÖòÑL( £RæÍˆ^ʸqã� ›IÍl±\à•pÿ £õ]Ãõíß¿¿õfȵac�:u ¹�Ù^Ta$F”<ä~$  `Èèý÷ßÇÌ–9a#!º3$xG¦lý+xefã3_xÑrÁT ü =Y³a² 3GQü+LŠ¡¬‚<ÖÔ«W/ÜòÉ'­¥Y¯�ê¬[üðÕal*Ju˜ÜD±o¼ñ†µ(\“Sf·žðø6 ü3Ï<3¤|ó#µ�ÃnæãCX¸Þyçãò¯B|$ ‹¡¨Ö­[›UDôR~úé'°Âü`�=¦N�úí·ßšù£\ äpÿ æd}åçŸF68ÀÖ›!׆�=ñÄ!÷�)æùóç÷#Jò ?’ � �€jà�`�1¦ÌÐ!š�ZDÿÊê´ZÀÂ[+V¬0>bXþÆ‚BtÄú(ë»!…ÃP('<¡´G}4¤4ócbÕƒl!þʼîºë @òþF¥Pl›r†\`%?2`u}È}8½¸_½zuã~\þUÈf”€¢¬^PV^ÊW_}…5Wp€‘©råʘ¡ ,ä#²YK±#s¸wR>f0}úô�GÆ\íË/¿lÜÏJò�·ø‘H€H€$0räHô›X%nÈâáfȲj#[Hߊ±—ƯŒ%÷ï¾ûn¼X¿Âuh>~uùå—ã~òþ•1~……ýY©ãø¼VȾã�QœU³R¼kõ‚¢{)ï¬×ÂÆ¼8iÒ$³œð‹�’ClÀÈ»Åñ«p¼C$@$  c©3¶ã%æ_CCo¾ù¦ :nôÈQ\äG†èku¬š×Xt„CÂ`ôêŒõWwÞy§Y.°¨;ÛõWX…’c‰uöÙg#§u½·µ.\cä » BÖ_»ÍYZ,¿G!·Ür‹õÝßÿ=ºvffd³úW1 ÿÉ'ŸàED 5Ë ¿)9IÿªcÇŽ!U`ý¼thjÜ�Ë�$@$@$à �Y³f}ðÁ˜´ÖŽ�üÆ¢bÓ5JÌ¿2†\pÚŽ¹~ zyôÈQü+Ì‹!®â&-[¶Ì*®1{…8Q!7Í�Æ"jÄؽ{·q™±k/zuÆþAT÷õ×_›E!JÞB·eü  ò Ró­¬.°– 9±“ѺÌÍýƒˆ|… ØV`îD0Ëì©Äh•� w°å/F�iŠ„lVÿ*¢ðp}ÿþûoó\`/"Z‚õfÈuHÉIúWPÙº·ÑÌP>÷†0çG  Å Ü{ï½è¿O›ËÐç¯ÀÂrô㸉¾Û>1ÿ ¯ßzë­( ÓL ÃĦÉ.¸à,ŒÇˆM”Â1V‘ÐÕ"˜ƒ!")a8Š2}óuë…ÿ åc? ®£– à£?™ÃuÁN=ÔeÄ¿4h�5þ•yòKø ×{ï½y:Ð!ú:%DéDfįÀê2,(ÂPd3'û°DÍŒ}�øW ¨¬Ú!ø �.P ž$N�Äb¶èÚ%àE«QxL#°F«P8âVõìÙA´p'--Í*FÈuHÉIúWW^y%â_!|¢}ûö(¼T©R!ñ¯pÓô{C„áG  P�¦]°#›âÑG#€'öŽÁÁÒ#¸VñÂÏDF~ë°‰‘¼s};nb”æé§Ÿ†k„Âá ÀsÀà‚#a­”Y~xáx„]‡ð.Œxæ� ­V‹Ÿq`¢ùbÄ ø9ðyŒê0뇡³Q#V‡˜KFüvØDE1‡ý¸9âî_¡ö§žzʨ 9Ãi„ˆ¤ðÜà»"N”�ñ"3bLñÛáÏDŒßnä;v,3Áú7l´bßwýúõü'üÐ[#FưÄ< áw,(züdýÀR#   �ÀÀ¨Tˆ…+°_¿~V&íÚµ3Ow]¾|9^1Ï‚·f3®±Ù Q‹­÷‡w˜gXñšH€H€H€4#î_mذîÓäÉ“­š¦¦¦"¨5N^ÃÍG}0o' gO`…Î3Å[F~DcFNs°Ë¸‰xÔx%Êá°ÖºxM$@$@$@¾&î_'̾þúëV½ŒÃ[·oߎ›Æql8#'w|úé§8?›Á1¸mÛ6<ýã�?àJ�3Æú:NàÅM]a½‰ªgΜ‰°–ž‰H€H€H vè=ч¢'µv¬¼V‡@þ•±$œ™Z`=<Ƭ~øa܉ݿ‚a¤0‘ � � $J=©ÙóB)áþU¶óƒ8²ƒQ!ˆˆ�YB¨ûü Ê`P°�ØÝuÅsb§¤âÆ%Õ‰ —Ë™uj�t�P—ÿâªN§Ö1Æ(Г*åTP“@¸…õíX‹¾¾½V­ZÆ[³gφ5iÒ$³\T©RÅ �…•ðáëÛqœ}ÈúvüQÀ¿Â¿Ör|}mðµ¦ðTÇD¡à…N­£“.0ª£àß‹)’N­£_j6“áþôB,œŸaРA†Êÿý7œ%«•~ûí·ð¸FŽidÀâvÄgزe‹ñшπ“ÑŒ�æ¿úÙ†•‰©¦/¨ŽÊm§Sëè¤ l†êðÇúõ¡îps¡Dþœ3gÎôéÓááä2\#avUcŠ0$¾hÅŠ­Åâü5¼uÛm·}ôÑG1Z½zu|¶gÏClølˆ/zÎ9ç¼ýöÛ¨å’K.Ábøðø¢úÙ¿W]°Û„«`ë$ŒÎéÙ4NN¦|¶N2ô}W¿>ÔQ\n�>–¦›%jÈ€†kݺ5Æ©àE<gÚ´iˆÐŽq*œ°Ó«W/,k· oœ�ƒwQÎÇùòË/­OÍ*8?ŽE�;ü^U§-Â%Ñ©utÒ-EuÂÍU�;:µý+uìJ5Iô³ „¡P r2òP�dè9ý®N­£“.hwªã´ñ'S¾N­£_šLËò]+Ú†•¯I€H€H vìCcg´œ´� µ8õ% °‹ûP»HêWmC¿6¥F$@$@î`êg?ÖBÛðc«Qf  °U¡Ô”�¶¡f»P*  õ °U¿�¼’�¶áyÖK$@$àwìCýÞ‚ÎÉOÛpŽ-K& ЛûP½Û7íhÉÐã»$@$@A&À>4È­]wÚFt>|J$@$@Y`šÞ§mÐH€H€H 1ìCã„·hAheêH$@$àö¡NPÕ£LÚ†íH-H€H€Ü'À>Ô}æ~©‘¶á—–¢œ$@$@ª`ªZ‹¨#mC�¶ $$@$@þ"À>Ô_í妴´ 7i³.  �°Õ©5íÕ…¶a/O–F$@$ìCƒÓÖñjJÛˆ—ó“ � �€A€}(-!+´�¬Èð> � � D'À>4:Ÿ ?¥m¹õ©; � �@2؇&COïwiz·/µ# pŽûPçØú½dÚ†ß[�ò“ � xE€}¨WäÕ¯—¶¡~QB  5 °U³]T�ж¡B+P  ?`êÇVsGfÚ†;œY � �€~؇êצviDÛ°‹$Ë! ö¡AkñØõ¥mÄΊ9I€H€HÀJ€}¨•¯­hV¼&  �Ø °��UÐrÒ6‚ÖâÔ—H€HÀ.ìCí"©_9´ ýÚ”‘ � ¸C€}¨;œýX mÃ�­F™I€H€T À>T…VPSÚ†šíB©H€H€Ô'À>Tý6òJBÚ†WäY/ � �€ß °õ{ :'?mÃ9¶,™H€H@oìCõnßd´£m$C�ï’ � ™ûÐ ·~tÝiÑùð) � � dE€}hVdxŸ¶A   �İMŒ[Þ¢m¡•©# � �€؇:AU�2iz´#µ  pŸûP÷™û¥FÚ†_ZŠr’ � ¨F€}¨j-¢Ž<´ uÚ‚’� � ø‹ûPµ—›ÒÒ6ܤͺH€H€t"À>T§Ö´WÚ†½ÁÊ•±0íÔÎALbÿ`ZÁ‚-wì`ˆíŸ ÚC€}¨=u,…¶¡c«R'ˆ•Àµ×¦çÏŸzÖYÿÆ¿ºôRì(LŸ6-Ö×™�N€}hÀ Šú´�(pøˆô&ðã�"W.1~|&-o¼Q.,~ù%ÓM~ ˆH€}hD,¼ ´ š –Àõ׋òåÅÁƒ™ìÝ+ªVÍš‰ãÇ3Ýç �pìCÙðŽA€¶AK �`ذAäÌ)&Lˆ ýòå"G1n\„G¼E$`%À>ÔJƒ×V´ + ^“@p\w�¨XQ:YãyóŠo¾‰ü”wI€ ìCi Y mdE†÷I@cß/G¨&MÊREø]uëŠsÏGŽd™‡H€؇Ò²"@ÛÈŠ ƺw•+‹Ã‡£©øÅ"wn1xp´<|F'À>4àE}ÚF8|DZÀ¬¯¦LÉ^¹‘#å­´´ìs2 “ûÐ`¶{,ZÓ6b¡Ä<$ �k®‘;�Í^§cÇD£FâŒ3Ä?ÿdŸ™9H €؇°ÑcT™¶#(f#=|õ•<Äù…bÕfÓ&Q° è×/ÖüÌG�"À>4PÍ—²´�¸p13 ø�@ç΢F�˜¯LM'N”.Ù’%æ ^� üK€}(M!+´�¬Èð> èGàóÏ¥§ôÒKñivò¤h×NF"ýë¯ø^dnОûPí›8ai £ã‹$à;�:‰3ÏXUoÚºU/.zôˆ÷=æ'Í °Õ¼�“P�¶‘<¾J~"°n�¼š93A™_{M¾Ž™H€LìCMê\ìß¿¿ÿþmÚ´)UªTŽ9† "Z­U«V… .V¬X—.]~Éâ¼Õï¾û.oÞ¼(á³Ï>³–°cÇŽÞ½{£ð‚ 6nÜxÙ²eÖ§æ5mÃDÁ Л@‡⬳’:UQ³0Š…±,& ƒûP-á×_…ãÔ¢E‹¾}ûÂ;>|¸UÈ~ø¡H‘"Í›7_¼xñ¼yóêÕ«W¡B…�;wZóàúøñã 6Ä£œ9s¢•ͧ‡Æ+•+Wž5kÖÒ¥K¯ºêªTÛ¦MZ1ÚFÒY ¨EÞö bY”;ƒW†òØš\²¤èÜÙÕJÕâNiI€}h ›=&¥i1ab&ðD»Âà"_¹œÞ|SÖûòË.WËêHÀKìC½¤¯vÝ´ µÛ‡Ò‘@|pÈ Â~"f»'©W/qÚi"c�Ž'"°Rp•ûPWqûª2Ú†¯š‹Â’@6æÎ•ƒH^¤Ú³GT¬(.½Ô¶³¤³Ñ–�IÀkìC½nuë§m¨Û6”Œâ$€Á«³Ï­ZÅùš­Ù—.•Þ3ÏØZ( #U °Uµe¼—‹¶á}P°‰ÀoHßæÓOm*.Ñbî¾[äÏ/¾ÿ>Ñ÷ù ø‡ûPÿ´•Û’Ò6Ü&ÎúHÀ¥^§Žh×ΙÒã)õÀ�³R/¼P=ÏkÌK>$À>Ô‡�æ’È´ —@³p˜Àk¯ÉÁ«Õ«®&¶â×®¹r‰aÃbËÍ\$à[ìC}ÛtŽ NÛp1+ ç `ð CF:8_SÌ5<òˆt±àh1‘€Æ؇jܸIªFÛH _'¼òмZ·NYþ•“ƒ˜"„×wêÈz…£($`#ö¡6ÂÔ¬(Ú†f JuHàØ1q晢S'åTÇw,tÇrw&ЕûP][6y½hÉ3d $à-�—^’ƒW_|á­‘k?^ʆ  L$ %ö¡Z6«-JÑ6lÁÈBHÀ+˜†«^]ü§fBH.„EÐQ„e"ý°Õ¯MíÒˆ¶aI–Cžxá9@ôõמTS¥8.‡æàè&Ð�ûPýÚÔ.�hv‘d9$à>�#GDÕªâškܯ9¾gÌ�N €f"ͰլAmT‡¶a#LE.xþy‘#‡øæ—«�»º“'å fÉ’bÛ¶¸ßå $ 2ö¡*·Ž·²Ñ6¼åÏÚI a‡‹Ê•E÷î àê‹éé¢Lѱ£€¯ÅDÚ`ªMSÚ®mÃv¤,�Ü!0i’¼òÑ1óçËYÂiÓÜÁÃZHÀ ìCÝ ìÏ:hþl7Jt‡‰ Äu×ùŒÃ�7ŠÂ…Å/¿øLlŠKY`šÞ§mÐHÀ�&L9sŠ�}&ûÞ½rA~³fú0‘€؇jЈ©@Ûp,‹%çàÄ™òåÅõ×;Wƒƒ%/_.§5Ç�s° M®`êjßUDÛð]“Q`xúiytò�?ú•Ĉ¼yÅúõ~•Ÿr“€I€}¨‰‚!h!@ø‘'pà€([VÜpƒâbF‹ÇêÖçž+¿‹‰|M€}¨¯›ÏQáiŽâeá$`;�'ž¹s‹Ÿ¶½`W Äi‰yòˆÁƒ]­”•‘€í؇ڎT›iÚ4% �þ¥K‹¾}uÐuÔ(¹DåJt¡�%À>4°MŸ­â´�l1 ¨C`Ì9ìóÛoêH”¸$ÇŽ‰F�D�bÿþÄ á›$à-ö¡ÞòW¹vچʭCÙHÀJ`ß>yÄÌm·YïùûzÓ&Q° è×ÏßZPú `äÖ�®;m#:>%u`B Ûî~ÿ]‰l�QèÔ}ñbŠb$à>ö¡î3÷K�´ ¿´å 8Dæ,^\Üq‡npa»v2œ×_é¦õ ö¡AhåÄt¤m$Æ�o‘€Ë}TäË'¶nu¹Z7ªƒRp{ôp£.ÖAö`j/O�J£mèÔšÔEW{öˆ¢EÅ=÷誟xí59Kˆ™HÀ_؇ú«½Ü”–¶á&mÖE‰xä‘?¿øóÏÄÞöÇ[Ý»ËQ,-èüÑ”2!ìCˆ—h�hf*égX˜tÚiâþûý¬C ²CM¬ÂÂZ,¬Èb"¿`ê—–r_NÚ†ûÌY# ÄE`ÈÄ`ûö¸^òefì"Ä,!v2‘€_°õKK¹/'mÃ}欑b'°k—(\XôïûþΉè^p&‹‰|A€}¨/šÉ!iž`g¥$#��E¡B"==Æì¾Ï†€ÑqÝÝ�‰Ô'À>Tý6òJBÚ†WäY/ dKnœ«Aƒ²Í¨UœHˆs L•‰Ô'À>Tý6òJBÚ†WäY/ dKÓ‚EŠL-Á¥Ì�[|ñEÐô¦¾þ#À>Ômæ–Ä´ ·H³ˆ�´( z(¾·ôÈ}äˆ8÷\Q·®8tH…¨…¶؇jÛ´I+FÛH! GÜwŸ ˰{·#…«_èúõò°ÅÔTõ%¥„�&À>4ÐÍUyÚFT<|HÞ@(QEXÑ §±cEŽbÅŠ 3 îª`ªz y'mÃ;ö¬™²$p÷Ý¢X1�cq‚œŽÍš‰ªUζf"5 °U³]T�ж¡B+P°À18ÊyÄë½€^ÿü³ ÿuÓMUŸj«O€}¨úmä•„´ ¯È³^ÈŠÀwˆ%8hó/ž©SeP÷wÞÉŠï“€—؇zI_íºµ±�ôôô>}RëÔéP³f'ü‹kÜQ›=¥#�6o–ëº{,£`ÞÂq„;Š2ed5˜ íS­µéC}Ê_e±õ°�;vÔ¨Ñ2%eUJÊIüÔMI9�kÜ¡‹¥²íQ¶ˆn½U”*%öí‹ø0 7·m%KŠÎ�yôs@ @eµõèCU&ì_Ùô° ŒV�r®ä<‚å¿4Ü÷oÓPòøõW‘'�3&€ªg£ò›oÊ?í3²ÉÆÇ$à2=úP—¡¤:=l‚#WVÿê¦n¾Y”.-pS8�^½d@0ÌŸ2‘€:ôèCÕá©“$zØÖ\Y†­þs±Ê–íôÇ:5uÑ™ÀO?‰\¹Ä“Oê¬c2º!ZEÅŠâÒKʼnÉÃwIÀNzô¡vaYô°�¬Æ¯RR0®%Î;O "ph,Âé0‘€²úôeËŠ”Ð{Á–.•¿žÆ�÷^J@=úP¶¦ô°�¬Ö_]{mꫯŠë®“‹cñµŒ=ï={Š™3ÅÎ�N°d™$�8�M›äà=‡l "ò*"Ûÿ}¶™�Ü  Gê©àÕ¡‡m`Ÿà©ýƒi§v•ÂþÁ4ëþAŒ\¥¥É£rÏ?_:Z8t£qc¿ñóϹ#)xF¯¤ÆX\túéâàA%…SI(ŒïÕª%.¼P=ª’X”%¨ôèCƒÚzÎê­�m,_žž’’Z¹röñ¯°"ë…D—.¢Hék•//n¼Q`wÏàpÖÔXzÖ6l9sŠ ²ÎÁ'k×ʱ¾€ÎháÁK/ hÓ‡z QÓºµ± Äc,TH:G;9">üP<ð€¨][:Z¹s‹–-Ÿqrê! ™HÀ5˜¶ÆÊí¸¬×5ÙÔ¬Î\,8ZL$à-múPo1jY»6¶Ñ¤‰¸êªÄ›è—_Äĉ¢C¹´¾Ž”½ýv±p!'Ž”oÆHà»ïä„õäÉ1fg6I“ƒ˜"ÄD!gTiÞЦõ£–µëaX¯ŽjÚ4š_×p«p\,8Zp·Ú·Ï='à€1‘€ºu•+ Œ¦2ÅEãÌøóÄrw&ð�€}¨‡5®ZÛxùeé ýù§� …)B|�?ñ„Œ·ƒ©C”ÖYâþûŲeì íäð²Ö¯—? ¦L 8†ÕÇvKüa"h xE@�>Ô+zz׫‡m`“Î%,}Ÿ;WÜt“\ �ïóÂ…åQh.cðR瘤䫯ժq+\‚­�@£øùƒ¥k=ÊDžУõ�ö•j`X‰�S3† s£­0¨õÅbäHÞÃðµê×gðR7ÈkYÇ—_JÂnV¦„ à¸üù#º xB@ƒ>ÔnA¨TÛÀ@tRŸ}ævsaÑ‚—bç–B/u»ü_vdÔ¨ÁÁ«d‡>ã!V˜HÀ}ô¡îC H�ØÖDaÚÎÃ#ÉÌà¥8ˆßó×bðÒ€üù$£&~ÀZà0%I£Êg‡3¶mK²$¾NqР�[g¾ l£fMqóͱië|./už±&5tì(ÎÔA4�/Ú×¶ñ÷ß2ò'††|—0E%xéŽ;jÔh™’²*%å$:â””¸Æ8]¾Ó”‡hÛVÔ­ËÁ«p0ÉÞÁÎé§ó'YŒ|?.¾îCãÒÔG™÷ïßß¿ÿ6mÚ”*U*GŽÃÂâ7¡ÕZµjU¸pábÅŠuéÒåË-6l¸ýöÛëÖ­[àTºð _|ñÅÝñUÓ»wo^°`ÁÆ�/CØñHÉ×¶ñÆrà×_#)æŸ{áÁK+WN=å\Ií,ÿ¥aDË?jQÒÈ>ùD¶éœ9‘Ÿòn2ðÂ?œdòÝøºM@__¼ò믿ÂqjÑ¢Eß¾}á_ >Ü*ö?üP¤H‘æÍ›/^¼xÞ¼yõêÕ«P¡ÂND\:•&L˜P³fÍ#F|ðÁ~ø¡Q£�>j–pøða¼R¹råY³f-]ºôª«®Ê“'ÏŠ+Ì æ…¯mãúëE½z¦*¾¿À –¼´@�#WVÿê¦ }¯dàÀŒö9çxNDãÀÿp4n_5Uóuª&R¥ÚµkW¸Õµk×2eÊ`ŒË¨hóæÍyóæ0`€ñÑt´L1®¹æšB… E(óSiâĉ(sõêÕÆÇãÇ�c°«aÆf~ó¿¶�µÁ¥J‰�MUô¹¨Y³“eØê? ÷õQ2�š,_.[sÞ¼@*ï¼ÒüÃqž1k%àß>4T?ÃY ñ¯Ž;†y¿~ýúYÕm×®Ƭ¬w¬×ËB!Û·o7n¶nݺvíÚÖ £G�F†?ÃŽ@ö¯m‹„W®´j©É5†kÒ�™ÕÀøä%—¡Å“ø‡ãU–�€ûÐèzéñ4Ü¿Âò*øB“'O¶*˜ššš3gÎ#«)až±lÙ²'3¾¸Ë•+×½{wkÆ  LÌ'ZoâÚ¿¶1x°ŒØ¬åw.# ±R=>b $¯æÏ×CµàŽŠ­¢»LþíCuo©_¸µråJøB¯¿þºUýÇ{ 7Í*룩S§âe™71™2ü•––†<³gÏ6óþµ ,bÑõPWì<µ0íÔÎAtÊØ?˜Æýƒ!¦ë¯�øéÓ´©¸à^9ØnüÃq.‹Î‚€ûÐ,Òêv’þÕ¢E‹àMuëÖÍ %^ÿªY³f�, «â­¥)x½y³ Èì�*(fâ"™ñ¯N?k±:\ye*ƒ3$NS�7ß_ZìÂ… ˆ¢µæÖbåÎÝ¡V-þáhÝÞ^(‡þÑÒ[vBï™’’/Ë YXg6Âý«Øç—,Y’?~´5–lY«)_¾¼Þóƒ“&ÉÈW{öX•ÖóúðaQ¢„ÈØÙ §ŽÚk…Á«F�ö—dLàk¯± ¦¦ÊC 35*!…ЉǯTnÍpÿ ΂V…Lða}{­Zµ¬ŠÎUûöíÍmƒæÓ¶mÛF\ß¾-ì€yŸÚΚiÙÒTWó‹Ûo*è¹ÒLó–ËPoñb9xµdIÆgþ߯!�K—ºR+ *Ÿö¡i®pÿ Šcô ëÕCâ3 4ÈdòÞ{ïaä ~TÄïX�ÕVkÖ¬1òÃaC|D5_7/ühÿü#Ï|òIS Í/V­’½3» Ÿ63Ƭ.ºH4iÂÁ+·ä«U·Üâv½¬/Pü؇¡�°tjΜ9Ó§O‡/„T¸F:ˆ3ê„ÀaH|ÑŠ+"R–�å“O>A‡jÕª}ôÑG«,iß¾}F8]f|Qììܹ3Vd}üñÇáTýhï¼#ý��õÑóº‰3ϦÊäGï¾+Í5lç®UñŸÌ˜XÇ.㌸€þ“Ÿ«OÀ�}¨úT“—°jÕªð¬�xÁ¼@(Q£d´ÂX!jhÑ¢ECÎÇÁa:Ö·Ìw­Ú�óqJ–, O¬I“&:��ƒ¤ð7•FŒ… ‰Œp³�RÝßÊÂ7>ÿ|Ѭ¯¼iG,:†sûÞ{ÞÔÎZƒ@€þUZ91}gè°N?]Üw_bêúõ-œ±ˆnâå—ý*`å~ûmÙp}X+ޝ‹3Î7Þ豬^c¾ëC5n ÕTó�mà„>tXYœV­];åiÞ\´nmg�,Ëi'NˆsÏ-Z8]Ë�F�ˆ‹YfŽö"Ÿ‘@,|ׇƢóØBÀw¶�S¬O;-ˆß–/¼ rä[¶ØÒì,Ä sçÊß‘ŽUw£vÖaøúkÙ Œ]Α¥§GQHçG‹É.›ç0¨ßÆ8vžp»vêK ¿ýVþá ®  ØNÀ_}¨íê³À(üe]ºˆHAR£è§Õ#œôQ¶¬¸ç­”ÒRà‰}õj-•ó¥RuëŠÿû?_JN¡'à¯>Tq˜š‰ç#ÛÀð~áÂbÔ(ÍZ >uî¿_”.Íx‰ñAs97¯°àG81©C`øpQ¤ˆ8tH‰(‰&|Ô‡jBÜ?jøÈ6Þ_Ž `7P�Ó—_J ™�꺿òŠl£uëT—3Pòýðƒl”·Þ ”ÒTÖ >êCÝÀÁ:,|dwß-*U úênl†:ûlÑ­›¥ y©Ìá" åW¨$e9Eàœsvˆ0‘€½|Ô‡Ú«8KË–€_l~Žjí×/[…ôÏ0nœ<ÞzÏý5õ£†/¾(ÇI—I5#GÊC¦PM.Êão~éCýMÙŸÒûÅ6¾ÿ^v[ +ûã‘3§˜2ÅŸ§µÔ8G¸zuѹ³ÖJúV¹M›äwÈœ9¾U€‚+IÀ/}¨’ð4Ê/¶1v¬(P@<¨ysĨ6þ7mc^fs�À´i²øA÷pÇ_Óyç4:qü¨øF¬ü҇ƪóÙGÀ/¶qÉ%¢S'ûÔöyI3gÊ~üçŸ}®†^âã„»*UÄ5×襕^Ú<þ¸ü™öÏ?ziEm<%à—>ÔSH­Ü¶ñ×_"W.ñüóm£pµÑA T¶œ3©Cö‰à·ß|£ŽD”$”~’à‡ÉìÙ¡÷ù™ �žžÞ§Ojµj§¤¤ 'M ¾¢7_øWF´Æ­[õnŠø´ëÓGÔ¨ôÝ”ñ!s27‚³as+·§9ÉØž²/ºH L1 $I`ÇŽ5j´LIY•’òý«$aêúº/ü«ž=N0Y |ø¡ü%Îãí¬L<¼ž8Q^a“â°ýç¤ïÛ§¸˜Ou¹:å\á{øsúWª·–Gò©ï_! Pñââá‡=¤jµ'NÈ“[oUU¾ É…¨à*ˆë® ’ξÕõ·ßä“W_õ­\ uêtHI9 [¢¥Fƒ¨(…úþÕÇËïÃ5kT¤ç­Lƒ‰bÅf¦˜¼%ðì³2bÆÆ�ÞJÁÚc%ШÀÆÊŠù²"P³f§SÎý«¬ñ¾Pß¿zðAQ¦ŒÀp S#&Ø›o†ÜæGW fH¹râúë]­”•%Cà©§DÞ¼âï¿“)ƒï�ǯ‚n1课U§Ž¸á†4 d,ÖåQ,Þ¶üÓOËÍ­?þè­¬=[¶È!ñ3âx…YI „×_…áÇpŠûWÆ~ê¹sÃçI`‘;·HO' o PWo¼Ñ›ÚYkÂ.¾X\~yÂoóEÀ·nú©ýƒi))븾�‘€âþV¶äÉÃÍ>›NÞܹSúW Ää&#î &J—ÆŒW_�Š;n Àº’$`|±ìÞ�d1|=ÐvìH/X0õ´Óÿ*ÐfEyÅý«¶mE›6QÄç#q啳„L®°Ä½1v�À6mü’¥‹åZ$_ñD<�éÓ“/‰%—€1½òôÓŒÏ\ˆ®¹ÊþbÔ`ê3ÏD× èO±¾‹IyÉ5;°¬»�ä3þKÃ}×d`EÉhÞ\\vYòŰ„à˜:Un^±‚þUpm ºæ*ûWóæÉÎë§Ÿ¢kô§ˆÏ€( ˆÕÀä˾!Ó¹ÂÅ ÜwGÖb „„ÅÜú®]¶ÆB‚HàÚkEƒ>؃ĶQCg•ý+,®][ LjKqÛm¢bE†°p©‘,qo¬þ•À}—$`5vؾ]>`‚‰ pò¤ Ì2p ý«àåeý+¼*[VôHFÏ´4ÙÑ/[–L|7V¿Š•”òù.½T´n­¼”PIFøÁ÷ß§¥dó¨!”²þÕÚµÒgX±B LjK�_Rgœ!pâ3“ ¸þÊÈîTñ¿ÿÉ!,nýt‡¶fµ<÷œÜÛ~àý+ÍÖNu”õ¯†•ËŠpø S,†… „cbrš6eçÍÛ2%qo°sP®¼Â5÷:�݉òáY!6ìäÉN”Í25'Ð¥‹hÖLê¨lªyøA=emãüóV2ÅHÀØ)$€å+%JˆG‘¢+Û‡ú�«n"«i[·ÊÉAžq—µáÇÂ…19Mq¿ëÕ˜“eÒ€À´irŠpÛ6 T¡ îøòËÿ–¯¨Ù‡ºÇ‚5eM@MÛ˜2E~éýõWÖróI# \S&ç|÷�ü^}é%çj`É®À— ¢4`-  ÄNàÉ'E�±q�ÔìCc×…9�# ¦mtêôïÔ¶sŠëWòß‹|ùÄØ±úi¦�F7Ý$N?]9¢�H%IíÛ‹K.I² ¾,Ä6wžªÙ‡«=TÕVAÛ8xPþ43FUd ËÕ­§®lÌ"á@�Çw° í>�_”gåàÄ&ˆ…ÀÑ£r3Ñc�ý›WÁ>4-˜Ç ÚÆÂ…r 1LñX°@¢ÃÚ&' "¿W÷ìq¢l–é4(6Úó.ÏÀo¯Z%¿fW¯þWnûP¿ÕV^m£_?Q­×'brøaU¦Œ¸ï¾DÞå;Ñ öEñââÞ{£çâS_èØQ4iâKÉ)´û0rU¤È±ƒìCÝgÂ#PÍ6°-«R%q×]…åÍì À€‹Å¸aÙ“Š3Ç„ 2VÒ¯¿Æù³û�ÀË/ˉß÷ƒ¬”ÑkXy‡ÜLªõ¡¦`¼ðœ€j¶ñõ×ò‹î½÷<ãW¾øBÄ+“�Ž—cª=zØX$‹RˆÀÞ½ro6…1‘@tØ3˜?&SQ­�.?ŸºI@5Û5J*ôï¾W79hSëÖ¥'`s{Ι#½Öuël.–Å©CàÊ+EÆêˆCI%°|¹ü*°®qU­U\ ÅRÍ67�;²%ìS[/ñ á˜l!—µAÑ¢…-…±E Ìš%ûMÎÿ*Ú<ʈ…ƒÛ¹ñÛͤZj Æ Ï (e8 ¥_xÁs*þ!F��©™l!ðÉ'²çÅÞL&� ìÛ'•0|œÆMl‹j8&ãê«3•¤TšI2~ðš€R¶1c†ìÈxVEòF�SÕ21yŒF ˜9ª];Ó/V»Jf9J@¿yá…JIDaÔ"€MÄå1qb&©”êC3IÆ^PÊ6ºv]ä5-êåNvØÓ�6p0Ð’ê—òúëò¯æ§ŸÔ—”zC¯`!ߟ©v¥úÐL’ñƒ×Ô± œ9rÚibøp¯‰hQ?~ga›ÀˆZ(ã©·Þ*Ê–‡y*+w…þj £G»R+ñ!�D¹r¡±ÕéC}HTs‘Õ±�eËäOƒÏ?׸kê]½8óÌЯ×j×£¢;äšœ‘#õІZdO'LÕ¯Ÿ}6æ&L¯ô쪺:}h¨düì5ulQÇqr.öj1ÙB`éRé¯â(¦„ <òˆÐص+áø¢Ï¼ù¦ü«Ù¸ÑgbS\`GvΜö ©Ó‡º�UÄE@ÛÀ`Kß¾qÉÎÌÑ $fÅŠ‡ 1%FàÀQª”¸óÎÄÞæ[¾$€Ãå9±îË–s^èwÞ‘¾÷/¿„Ö¤N*?{M@ÛÀF˜îüù^ãЫþ�å‘y8Ì”�É“åÏU®vN�¯_¹öZqöÙ¾Ö€Â;BG�U©¡dEúÐ’ñ–×± œL�ó)°¾”ÉFß}'½Öyól,2(Eaôª×\}©§Iàí·å_MÈ1ó)/KàœsÄ 7DÐ^‘>4‚d¼å5El£eKѾ½×,t¬ÿ‚ ÄUW騘Ã:½õ–ìdW¯v¸¯ìÅFæaÃÔ“ŒyG±¯ñ…€¸7áI‘>4\0�îäÈ‘cÍš5!­[·.'æN*ØÆž="wîРm 3ó“hÏ<#âíÜé'™U�õâ‹EÓ¦*B< Ы—¨SǃzY¥²ÞxCúW8#<©Ð‡†K¥Ù�ˆþÕÚµké_eÛÐFX¿ß~Ë6#3ÄMà»>÷\Ü/ù…´4ù]Šy"¦`x÷]iß|Lí©uØ(T«V„û¸Eÿ*2[ïFô¯^xá…âXa¬pRÁ6ðk‘ J�³‘N�äñÄL±À9)X|e=Â5öw™Sˆu\´¨xøa T¡ ö€suÛm‘‹R¡�,™ÿïŽ?¾jÕªÕªUƒuúé§ãÂLøˆ›]qè‹ÂÉsÛÀBâ’%ÅàÁ 3ò¹hsæÈã8ç…)Ø0ˆÓ±ÿ÷¿Xò2�¶úô5k2Ÿ¶í—b˜ÄW(¦#&ÏûЈRéqóÕW_½üT‚+Õ´iSãÚø·K—.Æ ÛƒÕE 'ÏmcåJiº˜‘arˆÖëâÇø�!¯[±wÜ!Ã^!S� ,Z$¿—¾ú*È ¨û¿Œã\±Ä=bò¼�(•f7›7oþ½÷ôznƒÉî £XLθåQ¹2'¼²ŒPí pïXö ´Ïqô¨Œ‡o'&@XgÈ*yÞ‡f%ï{NÀsÛÀÊ+œ”Çä(�O?•?Æ?úÈÑJt('bãÀÁ¬~¨ê !uˆ™ÀM7‰58E3/}3V­*\4«äyš•`šÝ?zôèòåË1c8#sRYMom{£Ìk«ÌÍ_²áTÇêÕ#Çó—"ŽJ‹‰Ô2e²\ÅêhÕ,\Aï¿/¿�>ûLAÑ(’{p Ì ÊÙ"Þö¡î�𴦯¾úªråÊX…ž<•+›Ê½µ�‰eôœ›Éä4ÄK,RDàL=¦¬L�*W¶ól߬øíþ±créƒMoꛉÀ´iòœ¬(˨½íC3ɪï,n¯Q£Æüùóúé§_3'••öÖ6³ýÒKUÆ£�l؇_a³f飑½š ÃYg1Ö½½P}_Ú­· Ì aø—)°zö]M{oûÐh’iô,_¾|ó|xÒ›‡¶�ÓqæàSOidj«‚˜ä—]¦¶ˆÞIg„”ÄB5&0 ,[&•„�Ëa>ç…æàZ—+' ˆ¦¦‡}h4±ôz†hW~ø¡ïtòÐ60£�ï®M›|Ç̯?ÿ¼èþóO¿Êï¨ÜÍ›‹Æ�­�…û�ö5cIÞøOrJl �~��Ô{ïE+ÌÃ>4šXz=4ºT|ª¯l;^»uS@àd¸ûn¹#±}˜@kÒ ?L$�%ãøƒ�?Î2hI{ÛqšÃáÃÙ(çUš�XÁ~¼ÿþþýû·iÓ¦T©R˜IÄIÐ!<Ðj­Zµ*\¸p±bÅpTô/#›9=ûì³µjÕB\¬û>|ø±Ì]æŽ;z÷î� ,ظqãeØi)ybÛ¶Éß/¿I Þs˜âQþâÅWã“âG�–kþ·o÷‰¸Ó ˜'ªPAÜy§u³Nïtì(ZµÊ¾zOúÐìÅÒ+G‹-Z†%ãfDE‚Ž2`×!ü+8HÖl?üðC‘"EpfôâÅ‹V«^½z*Tعs§™gäÈ‘XÙ5dÈ�+VŒ7^Ö-8Ä7#>|¯ žü¬Y³–.]zÕUWåÉ“93žÿ÷Olã…d l‹6ÿÉÃ+§ `gA�:âÚk�®Çåã—)–ÖøpׯØj&â}÷ÉQ_î€Ð¬Y£¨ƒá x1jT”,ÿ>ò¤Í^,½rÀ‚³„�tÁÀ¥AP,ÜŒ®è®]»Âý«®]»–)Sc\Æ»›7oΛ70gx%þü·Ýv›Yòc�=wëûï¿7îLœ8e®^½Úøxüøñºuë6lØÐÌo^xb�;‹&MLxá6�Ç ˆ½{Ý®Wµú^|Qå!Ä  D'°j•4ž��’NOÑy¢ÅÑîÙ&OúÐl¥Ò>F¨Î9çœø]SŒJ…øW˜é+P @¿~ý¬/¶k×®fF¸¨™3gâ•5–°ÂÛ¶mÃxYÆ+­[·®]»¶õõÑ£G#ßaÁ%Ý· `ÅK†¤Vyí�-[äøáôé.U§f5Ç«[Wtꤦt”J-°–Ê•Eæ¯dµ$¤4ö@…ñ«Ì‹n"×à~YŽàÝ}õÕW4h]ïpÿjÆ ð…&Ožl}155#TGŽÁÍ�"ÃÁƒ­J—.}Ýu×wÊ•+×1},iÁ‚xåƒ>°Ü“—îÛbáâwÁúõ!‚𣫰® »�UWåq¿²E‹¤Fš3w_Öè©©rïm,®”¡ˆÙhÓF\~yv™N=w¿�I¬dÂ’'LäEW4Ü¿Z¹r%|¡×_Ýú"Ʀpsû©•¸X²^,F·.Ë8^“‰!Ã_iiix}öìÙÖ2qí¾m`³3~ â÷ “‡fÌ�ÞÅo¿y(‚ÇUã`qlb¥zÜ þ©Þò¿t©$¦¤‰À$ VPÄxÔ…û}h¢jéöÞ½÷Þ[+h£&ü«fÍšu²$¬Š�*râÑ�U«&pä“·°²¯`A1r¤·RxV»Þ6ó/Ï„až `|wq7„/+I!1¬�ŸŸ_|¹ô�–Þ²zÏ””xY‘só®úôésƒ%]ýõç�w†ŒÂ/„Ôî_Å8?xèÐ!kQÅ`ΩSs~ð»ï¤Ýbj†És½z‰Zµ:€Ó³§¨Z•s=žÛ ÏÀ#„¢eTdŸ5[üâ>òˆ(^<Öˆ²¿ŠpÜoT©R¥ª%�qÆØ9øüóÏg[P¸…õíZ2Á‡õíˆve”ÿž[øúv,b72´mÛ6âúv,ƒ‘ÇeÛ3F›dv C$âG—¼ÿ¾ôu-›$\ª×ój6o¹r‰gžñ\ à3ÐÀŸÌ’%>›âÆK Y3Ñ¥K¬/¹Ü‡Æ*ó�"î_á6FŸÊ–-ŸaРA³Ý»w‡l0„g…ÕedÀÚx«‡ ñeÔxjý×eÛ€Ý^q…µ~^{FÁ|pêÇwx&€WãTñbÅDF쯤`½þ#€)Â3Î7Þè?É)qìpTVž<â¹çb}Ãå>4V±ŸoÑ¢EsæÌ™>}:|¡nݺáÉØˆ)Â�ø¢+VDØ+“Ù¨Q£Œø¢ˆÿ€ø¢Xî~ë­·šO±ÍÐŒ/Š=ƒ�;wÆŠ÷�#ðà¦müõ—ÃÖ­[q <¥úõëc­þÅ5eýñÇÉî\ nÚÎd9ÿ|çTaɉ@‹Ä¾Ò ‘ TzÃ8Hî†T’‰²øŠ¦Ï:Kôîí+¡)l<±2®ãÃÜìCãÑC«¼Ø0X©R¥¯ñó&#­_¿wp?ㆊÿwÍ6—ãêC‡ª!È2=ý´ÏÁÔmŽÇà÷ßAWêè|‰-*"‰I?ÿ-±L�‡f®õ¡qȤ]V8A3§—_~aÕ3ßSë“k¶aDAŒ>&¥ `-6ÓMš¤”PŽƒ‘‡sÎíÛ;R8 øçðÒßy'8HÓwß•�ûóÏq¨ìZ‡LÚeÍ—/¢µ‡¨…ÅçXXrS©�®ÙFÿþrRûÄ ¥´§0’Ž�hÔHƲÕeËô×”:M'WfœEætU,ßU÷Ý÷ñ"®õ¡®‚P¬2§€ðs™ÓàÁƒÍ U™Ÿ¨òÉ5ÛÀqÓÜ׬J«g–aÌñ“mãÆÌwµûÔ¶­8ï¼8–­j€ ÙF`øp¹ 5ó°¶΂<$pî¹¢OŸøêw­�O,½r�3 Úq 3–]¥§§ã_¸[¹rå‹ K 'wlã§Ÿd>ožÂ ,º ¬'yøa�Û¾°ƒ•‰’'€@ƒüBK£j%ìÜ)›«4ãJîô¡q‰¤_æ'NÜrË-F˜ó_Ĥ:‰e 'wl±²1MºoŸÂ ‚-NUÃy1ÏÞb—I¥J<Ù$ØVn«öXË×£‡­%²0¯ Ì™#ý«-[â“Ã�>4>™4Í�ê“&M1bþÝè‡wl£M�Ù&e ô,¾XÂÖ*+o|‚á 3wnñä“ñ½ÅÜ$…À¨Q¢P!�XßLÚ¸ývQ³fÜÚ¸Ó‡Æ-–/ Œ'¢£/X° \›wß}qA­A×Ãóx~ÇÛÀ°"<û¬çºR€, `äªZ5qÓMYfðõ„©?í4±w¯¯• ðjøñGù“#LÚ@d3Ë)(±ªåB«(Úå:thõêÕqÀ_¸fG�Å)ÏÆ ¤Îlcî\ùE׎WuøGDõ�¢ß’]¸UÐ ÛW™HÀ^ˆÍÛµ«½E²4Ï 8ú)lö‰7¹Ð‡Æ+’6ùÏ?ÿ|œ­œ•:XÜ~ÁdõT…û.ØÂeש£‚®”!ã÷øìÙÑòøñÙSOÉÉÁx×TøQSÊì2�Ç ð p—©;UÝ̙ҿڱ#îò]èCã–I— .¼téÒ¬´ÁÙÊÈ�ÕSî;m˜x*SF`‚†I}MšˆÔ3 �•ÑlzõŠãf%� `L=²~?IbT_³ltöÙ‰èätšˆLº¼“?þ𰢦rˆ/Џ£æG/œ¶�5käW–O3©O`òdË}Û6õ%�UÂY³¤ù}õU¬ù™�â"pÑE¢sç¸Þ`fE `ê=÷$"›Ó}h"2éòNµjÕ&£[Ê"a!ŽxÎâ¡·�¶ DU*^\DZž¦„úÂJ§"Œ&ÔôHˆŒ‚2Ø»ÊD7Nà4#Ï8„×µbùEþ{ûíD*tºMD&]ÞéÓ§ÏÙgŸ�Õúv�þÀÑ>4zÕAx:eÊœƒƒsœ7nÜóTÂ<+ø]S§NUœ€£¶ñüór=f�˜üBàÈQª”Ñ ¾ýV:Š3fø<åô+�§Ÿ–³ê‰ }øUg½äÆO°òåß„åhªéµIKKëØ±cÁ‚�“q *tÅW¬Zµ*Áâ\|ÍQÛèÔI\r‰‹Ê°*;Üy§ü¶9~ÜŽ²¼+»�N?]À]d"G ô=yG ;]ø† ²—,I°GûÐeÒñµãÇ�o?•páýœ³ DªDpµO·öK+¹*çÚµòÛÆ×Ë–þüS)Œã*7VXM›ŠË/¬ö¾W|Ò$"oÿþq®MP ¾¦ çlcáBÙMÿ½2ªR�Ø`´çD`A‚ÓàÁaç8eãßô—ä8ü G€íÞí/©)í¿®¹F\|qâ4œëC—‰oªAÀ9Ûè×OT¯ÎÕÅj4sœR<ö˜(XЯ»Îñ;!Aî»/N�™�%€£UräÓ§'ú>ßóŽ"`—,)G(áä\š°H|QÙÆ@*Uwß­ˆ–#>›7Ëþ⥗â{K‘ÜLÀ® lœg"×4o.Úµs­6VdÆ<ËG%^ C}hâñMe8dJ£}ÿ}eô¤ qhÙR\ziœï(�‘l‡™!×hŠ`‰0q¢ôêwí –Öh‹íŸùó‹C‡WÅ¡>4q�ø¦2²�Q£ä˜Ã‡•Ñ“‚ÄIàÅå²ü•ÞxC:öŸî/©)­ï lß.TN™â{E‚¦6¹'ùCÒ¡>4h ¡¥¾ÙFãÆ¢K-�E)ù�íŸXˆå£„Yiœ—ä·¥�ô¥¨J€áµn­”D&î>í41rd6Ù¢?v¨�^)Ÿú‚€¶‘žÎÕž¾hül„ÄBl$„Óâ—„cÄ1xµh‘_䥜Z@8e aíØ¡•Rz+³f�üÆHKKJK'úФâËÊpÂ64F‹s&_@,´ãºu¾Qǔԩã'‡Ð7d)h vî”K°&OŽ!+³¨A`ôh¹ŽåèѤ¤q¢MJ ¾¬ 'láD4PFC ’(DÉE ÷»îJô}wß3‚0s�¼»ÔY[&mÛ l aò ´N)M29ч&)_W„€í¶�IŠ�>ªˆ~#)©©ò8B_œ2sË-¢\9n©Hª¹ùr’¦M“S„Û¶%Y _wƒ¾Ö°Ätܸdë²½MV ¾¯ ÛmcéR9©ôÅÊhHA’ °~½lÍùó“(•W±è%_>Ÿ­Æw +q•βÇI+Ï=çj¥¬,1ÆrÍä÷ÛÞ‡&¦ßR�€í¶qï½ò\]-ŠV°Q”©~}qõÕJIA˜¡CE¡B½ xK }{Ѭ™·"°ö˜ &zHþ¬`ÛûИ¤g&?°×6àVÕ¨!0Sä �§ž’g%«|¶Ú�ò„  �ÉùZ#pÜÖ­¾V"Â_r‰èÜÙMííCmˆE(CÀ^Û0Ö¿óŽ2êQ�¤ `1 vEýïIäX“&ÉE/¿üâX,˜b&€SÅqÖóøñ1¿ÀŒ^À�2ülœ0Á†ºííCmˆE(CÀ^Ûxâ yÖL—I'˜òhÒDQ…0¼�!ÓnÝ�b�@ÇŽêþ½°9"ªüÁreé·ßF|ßM{ûÐøêfnµ Øk-ZذÝUm`A”îµ×äwÑ�?ª¨ûܹR¶µkU”�2“À+¯H›üý÷`jï­ eÊØ³NØÞ>Ôø(ell´ Œc" “5Lš8xPž"�5ä &œÄ„uL$ �½{ånÖ'ŸTG"JJ aCÑ£GèÍÄ>ÛØ‡&&ßR–€�¶1{6µ)ÛÎÉ vÓM¢Z5{~î%+Šåý•+¥Éq½Ÿ /• pÕU=8“šàc(À®Ã¸mìCÕÄE©&`£müßÿ‰sÏMX¾¨4�+¤'óÉ'j ‰í?µj‰'Ô’ŠÒ�À¬Yòïå×_IBE ÈÖùé'{d³±µG –¢ »lËŒK”C†(£±•|˜*UDß¾¶š\a›6ÉcÄíúšœ,|›2Ø·Oîô;6ÓM~P„Àý÷‹J•l�·«UŰ‘€]¶ñé§òÁªU6ŠÆ¢Ô"ðÐC¢hQ�µXФ~ýä ÕC‡‡b�@&ˆÊ{Á™îðƒ"3¹woÛd±«µM ¤ »lcà@Qº´ ±p•CAB lÜ(]è×_½ïÉçôt9>Àc.=�ÏJc!€¿'¡b©‘yb!°k—l—3bÉS»úИ*c&_°Ë6êÕ³ó�¯HØF�bû¨�†—g³îÜ©‚,”�"øçQ° ÏÄŒ@ÆÛ[o¾)ý+£gØÕ‡z‹…µ;AÀÛÀ2NXìœ9NÈ2"€àØwƒÃ”½M˜£Ä`éí·{+k'�l ì-¦¢˜”"pÇâÌ3í”È–>ÔN�X–2l± œ�Sã±é•IoZWáì�矗+ÛÕŒwª·P»¸Áo1±Î¤�Úµm>!×–>T>”ÄF¶ØÆe—‰V­lŠE©K!Î?ßKñ°“±fMÑ¥‹—2°nˆ…Z #FÄ’—yÜ ðçŸrª¡mL¶ô¡6ÊâÔ!�¼mìß/Ê|úiut¢$xë-ùe˹]‰I9¾ --±·ù ¸J gOqöÙ®ÖÈÊ¢xõUùí±}{”,q?J¾�»J¾àÉÛÆÛoK‹åd�OúH)�(Œ³ÐS`…9z —ÓÏ?‹œ9bD0‘€�¼û®ü’ü扬§¨Ó§Ë}Ç»wÛ¬]’}¨ÍÒ°8•$i÷Æ™)G�ª¤eqžÀÈ‘2v"¶6¸™îºK”,)p³NÖEÉÀ’E|Iâx)&o üßÿ9rbQ’}¨·LX»£’´� /Ý»;* W‘Ào¿ÉŸä/¿ìžlý%=º¡CÝ«‘5‘€]úô‘C¾œ"´‹gåþé§‹þýx5›W’ìC³)��ýL Û0b‰¼òŠŸõ§ì‰hÑB´n�èËñ¿7j”È—ÏûÐññ Î7H@,^,�|ù%QxF`ÃÙhÛS2}¨í°@¥$cÓ¦Éõ0<N©uMc1Ö-nTxø°([Öæ¨ËnÈÍ:Hଠ@T“AƒˆÃ3“'ËCFœXÒ�LêVì �dl㪫ÄÅ»"%+Q�ŽCÊŸ_<þ¸’½ð‚üí‰_ L$àSˆcƒàœ"ôªù°õ¸IG*O¦uD ª �„mq] £G+£ q�Àµ×Š:uï2ÛÛ¯¸ÂuõX! ØGàý÷åol¸frŸ¾CJ•rj‹AÂ}¨ûX£Ë¶�%Kä×7»Ü^JUg¬*qºËX¸PZÚÇ+¥:…!�ø;&»øŒï-æ¶…À×_Ëï�?´¥°ÐBîCC âgí$lwÞ)ªTq|ìB;ÞZ)„.£\9qÏ=Î*Õ²¥hЀ–æ,d–î�[oU«Ò’] ZŽÇÅî̹8‘îC�†e*E 1ÛÀ*|Qàœ¦€@èþÒ¥ €f°}ã�€c¦ú:X¶LŽ¢¬Y£ƒ.þÒ« ð3Í¡”Xê�0,V)‰ÙÆ·ßÊ/ 'öº*‡ÂdK૯¤% BµC K¼ªU(c"¿8~\”)#î¿ßïzøL~|{àÈ#œ;±>Ô)iX®J³ ìC°G‡†[UÂCY²'pÎ9{sœHˆbš+—xöY'Êf™$à�Ûo•* ,·fr�ÀÚµò7àÊ•NU˜Xê”4,W%‰ÙFÓ¦âÊ+URƒ²xGà‰'äÚ†={ì—à¾ûDñ⎄¬±_V–H1X±ÂÙ¾>—£ØêîÜ!n‰õ¡�k†@*œ€mìÚ%ÊN�H^T:ŒÂøÃ¦L {�Ü 8l… ‹!C’+…o“€J0EX¾¼ã[BTÒØ{YÚ¶íÛ;(F}¨ƒÒ°h•$`3gÊŸ`ü¡’”ÅS—]&0¤io3FäÍ+¶m³·T–F¸ûny§Ýi®�¥,cÇ:X[}¨ƒÒ°h•$`=z8r ¹JT(K|^}UºÜ?ýß[Qrã[}ÐM7EÉÂG$àKŸ~*ÿXÏÍ�ÆûäIÛÑ} ô¡îèÎZ<'¯m`»X1ñÈ#ž N"pà€œË6Ì6‘fÌ�ߊß}g[�,ˆ!€‘« â2¹@`øpÙaaZÖ¹oêœ$,Y5ñÚÆòå²ã[·N5=(�Çn¸AÔ¨aOìDDW;ûlqùåkÄêIÀ!ظ�À¼ŽvúIî»b›78'×Ñoê¨0,\)ñÚFjªüfàâ¥Qa>úH:Þ¶l‚~ï=Y d"- ¬ZE w£a”k8�ðoê†æ¬#;kÖ¬iÛ¶m‘"E .ܲeË•™»®C‡=ôÐC5jÔÈ›7ïi§�ÖªU«åZ²¤£G�6¬J•*ùòå;묳&L˜`yøße¼¶qÖY\ó=^™àrW®,pHò©M¹À£XL$ %Ø6þXn»MKåRjéRéÇ:}Hn¼}¨B€‚*ÊÚµkáÁ¿Z²dÉÂ… [´h‘?þUøÙ“‘®½öÚܹs?ú裟|òÉüùó›4i’'O¼•ñ\Ü|óÍxå‰'žX±bÅ AƒræÌùØc�™OÍ‹¸lãÇ¥¹¾õ–ù6/Hà?ƒË¥IF�5¿öÚÅòŠô#€‰,Ń mY|#²Ó¿ÔâêCÕ—…ÇH ]»v•+W>‚mT§Ò�Ê—/ñÅ1x ”YÚ®]»p瞌£v¿ýö[||�Õ2Ò-·ÜR°`ÁÝ»wgÜø÷ÿqÙÆøñr¸uÿþ�2ø‘$�~�î÷œ9IÑèÕKþ´g¿“D¾¬<,aÅË(/¨ŸlÔHtïî¸qõ¡ŽKà b €9Á>}úX3bÀ*GŽÛNÅ:|ø0¦ïÃ*ÉŒ�+W®\©øQt*�9™wìØ‘ñ\`ì wfÍšeÞ1.â²�Ö­E»v!ð# üG AÑ©Óã½Ú²EäÎ-pØ= èMƒ*Õ«‹¾}õÖÒKíöî•§k=ÿ¼ã2ÄÕ‡:. +ˆ�&1âdÍØ»wo8Hdüàéß¿ñâÅ-Z„¡­­[·Þpà %K–ܸq£ñJ�=Ê–-k}ýŸþÁëCÂÂaÇn0×"0p (QÂÁs[|„ Q,�#„XÓâtнuZ–#�óÎ;¯^½zfæ'NÔ¬YÒìٳ͛<ð&q©bÅŠheóQ›6mj×®m~4.à³Ý¶¤2vÛxóMi®¿üR*?’Àvî”NxbvàÀã˜ûþ+�W$ 1�/¾�ߨK–h¬¢—ª=ð€¨XÑñÅWÐ0ö>ÔK¬ÛB`úôéðšî¿ÿ~,¬Â4ßí·ßŽÕì¸óÆo¹úõëW¨P¡qãÆaâoñâÅ�:uÂp–¹¾=^ÿªY³f(ÁLáÓˆ¨Ó•uëZDä% D"€h3^éAv÷pN4|³­[³ËÇç$ Lžq†¸ñF-”QO‰óÎ×_ïˆXè;è=SRR¬ãŽÔÊBm%0fÌg�ƒS9r4mÚtàÀ�¸0¢4¬[·×Ïa2&#a€«N�:ØEhÜÀü`™2e2Êÿ'9?ˆÝ÷؈Á±+R^G$0w®üUoèuœ €›½{G,’7I@OX¯�-·Û˜ôÔÑ­ví9rˆ—^r£rŽ_¹AÙ�:Ãê»ï¾ûý÷ßQ6–cÁÝÂÊv\Ïœ9þÕêÕ«­uöìÙ³¦óO¥Q£F!ÃöíÛÍ Æúö×Âö½Çh¨ �&Îrb"�è`¡Å‹ ¬-‰+‡†¯_×KÌLþ&ðõ×ò{uáBk¡ ôƯ¼Í›Ý-Æ>Ô QXGB¶lÙR´hQLoúé§pŸžyæ³°cÇŽa�ÖùçŸoÜ�W†¥Y33Üzë­˜Oܳg�yǸˆÑ6zH.Åä®ùzü‘@¿~r0*ö ÿ˜(©_Ÿ[S#²äM� Àò±Ù¡i,�Áe§ÛwȹWwRŒ}¨;°–X €b,¼÷Þ{üñĉ+UªÔ Al4Þ=yòdãÆ�Ï !C>ôÝwßE¼,8T¯¾úªYxß¾}�ø¢ˆë>xð`<=z´ùÔ¼ˆÑ6Ðý]w�ù/H ãø�eË¢å±>3Â,gl�µ>á5 hN`èP¹­ãÔ¼„暺©^�:±uS}Ö�À¦M›°jcVˆs…�©¡C‡ÄYJ–´wï^Ä¿ªV­¶#XhÍÅ�¨%aDËz>Žu±–%WL{•ƒØaS‹ÖbxMÿÀ¯ò3ÏŒc1Õe—‰sÏuc§Ï"òŠÔ ðí·òÛuþ|5¤ÑB ‰t³Ã¢¥…Õ8¢D,¶ñ¿ÿÉ@ma¡ß‘‡…êAàÑGE¡BØU‘½68 _†¯¼’}Næ - `_6gllYDÑÆWŠeõ±�eG(*–>4Âk¼±ØFÇŽ¢yó° Šö@œ´½&Äý¨P�QíCÏ’üF?F ™'(ü¦ƒJòâà87C ÅÒ‡ª„‡²¸G [ÛÀš¯üùŸqî‰Äšô pÉ%¢mÛlTùãóŠÖ• &>Öš€qpç¼yZ+é¢r8x讻ܫ/Û>Ô=QX“b²µ ã”|0‘@\¦M9sf/aŠÿWÁÌLº8çÑ£‡nJy¢Ïo¿É‘s7�ÕlûPO8°Rdk8Q§F ®=V¡­|&¼&Œ|Ž›¥Ø8gÁqŒ œÀ¨Qr½bÆñ€ÃHJý_”‘Eÿú+©Bâz9Û>4®Ò˜Y'ÑmÁÈèž{tÒ˜º¸G {w¹V1�/ƒ>=7âsÞ$� À1Äu™3'(ú:§g¯^"# ¤s•d*9zš)+?Œ@tÛøê+ùWÏÀD3 ÛÔE`jØα OˆU[¥ ·M…ƒá�€€WpÍ5ÕÝ.µñS›eRSí*/¦r¢÷¡1ÁLšˆn#GÊ�-<KÓÆw\-8Q8ó¾û"T4{v–®W„ܼEºxüqQ €Ø¿_w=�ÔoãFù­²h‘“u„•½ ËÎ"Ý65W_ TÕvp®àb…œ¬„Ÿ™\ Zµ²½6H~%`„4açdÚÏÕˆ…�n¦è}¨›’°.ÕD±�;äBA,d"�„ |ù¥üEr‚íòåòæâÅ —ÊI@C]$:wÖP/×TêÖM4nìZmÿV¥u[Ö§�(¶ñÒKÒ¿r- ®b`(Ž=0TU¯žÀBwkBÄZÜÌjÝ»5'¯I 8žxBäË'öî ŽÆvjŠåK—C†ØYf,eEéCcy�y4&Å6°Ø²aC�U§j.@ˆô{öü[Ý÷ßËÁ+Ž‹ºDŸÕø‡€»iæLÿH¬’¤ë×Ë/–Ø�•·Kö(}¨]U°ŸÈÊ6°¦�GŒð©Z[!ÒŽ@£S§þ+N¯(_^>¬�„…!€%¯W\¡ˆ,>ñ^ð;Îýc†²êC}†�â:@ +ÛXºTþÀâ&HžÊÁq9H8Ú>o^1ztòE²Ð�ÀÓOË?s°WC SéÊ+E‹Ž•žuÁYõ¡Y¿Á'A!�•mÜ{¯ $Â2A±‡õœ4)=%%õŒ3:”(Ñ)GŽ={¦¦§§;\'‹'ÿزEþ°�1Ã’{+ññã¢hQ�“²ÝOYõ¡îKÂU#Ñ6àVáLœ[oUMXÊãK;vì¨^½eJʪ””“è;RRNàºF�–t±|ÙœÚaM›Š®C»â×­“~é§Ÿz XÄ>Ô9X¥z"ÚÆ† ÒVß}W=q)‘ ôé“zʹ’Feù/ ÷}¨ E&g <û¬<7j÷ngkѬô1c䎞„Ž؇j†—ê$F ¢m`›0Næåa£‰!å[!êÔé�1reõ¯Nà~HN~$øóOç…H"íÚ‰Ë.‹#¿�Y#ö¡6–Ï¢üK ¢m`•àå—ûW'J®�š5;Y†­þs±p_-A) ¨A ys‡�)F¶Âà†°Ô39X±zBlã“OäDöêÕê J‰H€H 0°ø K°&OŒÂ‰*ŠÑgáðA¯RHꕬWA!¶1`€<‚‘3‘ � xH§Jyrà‹‡*'Põ�!÷Y!}h*ð] „ØFݺ¢O]u¥^$@$àÓ¦É@X8²“) �Æ�E·nQž;þ(¤u¼>VàVÛøå9Ðúæ›þ‘ž’’ �€¦þúKrŸ0ASõìPkß>ï£ YûP;tbú°Úþ�óä{÷ê£5! ÿhß^4kæ_ñ—|áB9&°i“ãE©ÀÚ‡FÉÆG$`µ D nÝ:€ ¨2 � ¨HॗäáÖ­*ʦ‚L©©¢Bqò¤—²XûP/å`Ýê0mcÿ~¹ËuüxõD¤D$@$H8Ms üZΪñÏ?_ôê•ÕC—î›}¨Kõ±ÿ0mã­·ä@ëO?ùGtJJ$@Z@˜¸ŠS `à¸ÍŒõiÜ{ñÅ�ܼeö¡nVʺ|AÀ´�›ng�å ‘)$ � èO`ÇŽ§>X•’r?~O|°Š˜ ?ožøí7ó†7fêMõ¬Ua†m¬[÷y¹rsÙL$@$@*àÁ�Ñ[áÎ;E�ѳ¸ñ”þ•”ýY‡a¯¼ò9~,_îO(5 � hG'IeŒ\É�šŒÿNà¾vº&¢¢5Þ|s"/Úûý+{yêTša·Üòy±bâèQ�4£.$@$àc8¬3ç2�+y�û>ÖÊ&Ñ·o—(fͲ©¸$Š¡•<Í_5l£víÏ{ôÐ\SªG$@>"Àñ«(�õÚkÒ¿R!¸=ý«(ÍðG†m¤¤|>sfÀIP} Pˆ×_EiŒ¾}E�:Qž»÷ˆþ•{¬ýV“a9r|¾k—ßD§¼$@$ /g8µ0íÔÎA לHII+X°åöíéú*«fXÙŽõí*$úW*´‚š2¶‘/ßÅø­„?g5…¤T$@$@øNÆ73& ±æ ÿ¶n�š’’>vlIdRyóf998wn¦›^} åyõë5l#%e]J #«¨ß\”�H Ð �'¯\hƱAŠÌ¹Ð¿ ´-FU>ÿ’ñ0øŒßJQ³ó! � �€g°Ëûâ‹EÅŠBïÂ×_/Î;Ï“š#TJÿ*Þ:E ³ÅÈ*4  PšÀï¿‹’%Åå—‹'”–Ó!ápš3ÜËp¨ø¸‹¥7²À¼�Ù¿bd•À4<%ð-�… å¤qã|«@‚oÚ$uEý+EBA12ûW¿R°‰( � „xðA¹+--ô¾öŸŸ^*¾oŸ*ŠÒ¿R¥%Ô“#³ÅõWêµ%" �0XˆÕ¤‰¨TIüõWØ3­otï.5RHCúW 5†b¢døWØ?˜Æ“ÙkŠC$@YÀB¬%DÇŽK’’ iéÒbð`…Ô¥¥Pc(&ŠaÕª1þ•b CqH€H ; ÈÅHO<‘]>]žó�ÔwéR…ô¡¥Pc(& mC±¡8$@$�þýEîÜbÕª8^ñoÖgžyóŠƒÒ€}¨B�¡˜(´ Å„â� �@°«qcQ¹r b]u•hÑ"8.deêdŸVAÛðiÃQl 0༘âÅE§Nš/Ä:~\+&†W«ÙÙ‡ªÕ*ICÛP©5( � $Bà�wä¤'ŸLä]¿¼óÙgRÇO>QK^ö¡jµ‡JÒÐ6Tj ÊB$@ HM• ±V¯Nðuõ_ÃÁÖ Š#GÔ’”}¨Zí¡’4´ •Zƒ²� �@‚° �¡ªTÑv!Öe—‰ví„ãÜkìC�cë÷’i~oAÊO$@�ß~“ ±®¸BÃ…Xð cÆ(×ÔìC•ke¢m(Ó„H€’%`,ÄzúédËQíý•+å⫵kU“K°U®I”ˆ¶¡LSP °�Àý÷‹Þ÷ÜÈÏ>Ô Êþ¬ƒ¶áÏv£Ô$@$� �ûî“ ±\ž�Üa�zH”*%Nœ{ À ö¡ 4‚¢"Ð6mŠE$@ÉÀB¬ DÕªbÏžä òúí&MD×®^ ‘EýìC³ÃÛÜ[J  m üúÿí� ”Åõ‡‡EvÁ‘È„=ˆÃ:T‚(IH$Fã a‘5�b<Á$ˆ&H0â1²F„D6—DÁ ¢‚¨Á \Š€ÿ² (ôÿ×tÒvæÍŒÃLw¿ª~_§^uwÕ­ïÞyu_Õ­ªmn V¯^bíßïîK?}º¡:¿2T1ˆ…m D€ �Çsƒ—î»/ªò£.wéRWþ÷Þ‹ºžR–OZJpð¶‘J¦‰€@F9Òâ@,�«X¿¾¹ãoô¡ý§Ulã±�bñp€€õˆõ­o9MšXˆuÁÎõ×›«úPsu“nɰ�tk€ú!DNà_ÿr÷?ÿáÍ*�¶H-WΙ=»Ð›FdÒ‡¡#…À6ŒT BA™À£�º�L“&…\l¤ÅyÁcÚ.ÕØ‹>ÔXÕ¤]0l#í*@@ñ1©TÉyå•xj ¡–ŸÿÜ9ûìʉ®úÐèØFWòúõë»wï~úé§×¨Q£K—./êøðÿ½<8f̘ÜÜÜÊ•+תU«S§N›7oö9pàÀˆ#êÕ«W¥J•¶mÛ.\¸Ð¿L`A¤!$˜€±Úµ³)«ukgà@£Bj´z îå—_–×$ÿjùòåO=õÔ¥—^*7iݺuþ³rŸÚµk× Aƒ)S¦<ÿüózlìØ±oÎèÖ­[vvöŒ3V¯^=hРråÊÍŸ?ßÝO`> €O`ëV7몫,ÄÚµË�М7Ïh�Ї­žÂ„»üòË5jtT?6N^‡ª[·nÇŽýg56¥¡­mÚ<®°K.™ªà˜•\µúõëO9`Û(Œy€K`É×o™2ÅôjÖErîÜi´œô¡F«§0á4'د_¿à�üü|¹L}ô‘2ånU¯^ý†n>L8°fÍšAojÁ‚z}íÚµÁÇ”Æ6 á# �ÄP\“±^}Õè†ì´li´„Ž>Ôt ¥È§ÉÁÁ²­ÀÕ·o_9H+W®TÞš5k”?~üСC5 X©R%ÍjÌʼC‡^x¡ÿQ‰�7ê•™3g3•Æ6 á# �Ä8rÄѾR ÿôSsÛzÎ9ÎðáæŠçIFjº†Rä;ï¼óòòòül�D5kÖL’7åç F)¦½k×®ò¸žyæ™+®¸¢|ùòO?ý´÷Š‚Þ{ôèá¿®ÄÎ�;õú„ ‚™Jc€ð€@&P VÍšî¹É'N˜ØÜíÛÝÉAMe~ч® TñfÏž-whÔ¨Q{÷îݽ{÷°aÃ*V¬¨œ‡~XÏ›7Oi­ üì³Ï¼w©Õ¸qc-!ô>žª¥{®B#áS…$€ì%°x±ëÃL�jb æÎuwÝ»×8ÙÔ?zËžê=³²²äe'(Mà®»îR»ü(]_|ñèÑ£•ðviÐjA¥üãßV¼–‚²¼Í¶oß>x—ùÁ Ò€ ?û™ˆe wз¯Ó¶­*büÊ%&â±cÇ6mÚ´]㤎£p,¹[G4kþßɾk®¹&ø’´ô€—ã=œßÜáÁ{Û2$ @ £¨K9ÿ|§iSgß>ƒÚ­)ˆ �Q£ ©(QèC‹"cKþŽ;m¥éB_`íÕ�““søða/G… 6T8–÷qÙ²eàZ´h‘ÿ¼6|ÐfY'R&Ú±  @H`Ë7K¿×Sú‡´Áøç?݉Ë'ŸL›%¯˜>´ä¬ yRÓyãÆ�S¼º– N�:U¾“æû´-ƒ/žvZÐCí;ºtéRySò¬ô18<¥ ¯Î<óL-\µjû‹úÜH@€@�<âú3Ó¦ÈNÛÇûïw*T0kH­(øWE‘16_'Ý(jNcVÚ{A+o»í6¨Ê—ù…^�¥˜+]ò¯‚ΕžÑé9ÚƒT»’ÊïÒù8Á±,¿%°� Ò€2“€vBP Ö† F´þÚk�ÿÝaÈ© ‚>´P,dж�@€€£+K[N¥=KÓ”uê8·Þj‡NèCíÐS:¤Ä6ÒA�:!G@QOZ#¥…éé ÄÚ¸Ñ�¬<¹—¶qˆR¢MeBŽGÛÀ @À# EQòm¦OO'�I“Ü™Ê@¸q:…ùʺéC¿QÆ>€md¬êi8 �TÆ9•+;¯½–z'¦œ+¯t.¹$¦ºÊ^ }hÙ&µl#©š¥]€JA@�XÚØ377=�X_|ádg;·ß^ ÁÓó }hz¸ÛP+¶aƒ–�€@|6ov±´ˆ/þ@,í$¯ Ê5kâklk¢-#À¿Žm$X¹4 €@é,\èú9Ú‡*æëî»�ªU�£Gc®¶ôÕч–ž]ÒßÄ6’®aÚ@ 4†u±^½4ï–ú�=œîÝKýv^¤MtKªÄ6,QbBˆ•€±Ú´q±öï�©ÞcÇœêÕ� bª.”jèCCÁ˜ÈB°�Dª•FA(;bÕ¨áäçLjµv­;)¹~}Ù�¯úÐøXÛV¶a›Æ�€@|,p}ž3â¨qÜ8÷¤éÏ?�£®°ê  ‹dòÊÁ6’§SZ@ DC†ÄˆuÙeNÏž! GQô¡qP¶³lÃN½!5 �˜>ìb5km –½Nï½15*¬jèCÃ"™¼r°�äé”A—À{ï¹�X½{Gˆµj•;ùÆá yiô¡‘#¶¶lÃZÕ!8 �øÌŸïú?3gFUã˜1NíÚÎñãQ•Q¹ô¡�M@±ØF”H Ä@`ð`§J•¨†˜:vt~ô£rô¡!MPqØF‚”IS DH@�Xßü¦Ó¼¹sà@ȵ¨ÀŠ�iÓB.6†âèCc€li؆¥ŠCl@ñx÷]w Ðë¯9kÙ2wòQ…[wчZ§²ØÆ6bCME€@ࡇ\_è�ÂlÊ-·8õê…ì³…)_ÑeчÍ&Óï`™n´€À)4È ÄzóÍS|­èÇÛµs®»®èÛß¡5X9i ÛH³¨€€mˆuî¹N‹áb}ò‰S¾¼3k–mNÊKj¥ÚbÛˆ3•@H�wÞ -ëñÇÝ ÇmÛ¬äCj¥ÚbÛˆ3•@H/«ìãN7Þè4ib+úP[5½ÜØFôŒ©€@2 àT­ê¼õV™Z——ç¨K/úPKƒØØF �©€@" :äÈ;*K ÖîÝîä †Â,½èC-U\ bc1@¦ @I%àbõéSÊö-ZäúW~XÊ×Óþ}hÚU`¬Ø†±ªA0@VøóŸ]éÁK#ì�!îð—½}¨½º‹Zrl#j”@ ñn¸Á ÄÚ¸ñ”š›ë vÊo™ó}¨9º0MlÃ4�  ë(«uk§eKçàÁS�}ÇwàkñâSxÅ´GéCMÓˆ9ò`æèI ØKàí·�jÕœ~ýN¡ÞÄâÇŸÂ+¦=JjšFÌ‘Û0GH@ÀjsçžZ –œ±6m¬n±Cj·þ¢”Ûˆ’.eCÈ,ýû—4ëÄ §Q#禛ìæCj·þ¢”Ûˆ’.eCÈ,Š¿jÕÊý÷•�X[¶¸ƒ]û›Ý|èCíÖ_”ÒcQÒ¥l@G`Ó&7KYÅ_3f8*8ûöÿ”éwéCM×PúäÃ6ÒÇžš!$“Àœ9îØ”þ/æÊÏwÚ·/æ¾·èCíÐS:¤Ä6ÒA�:!$œ€b×5Š¥±¬B/_åä8£GzÓ¦LúP›´¯¬ØF¼¼© €@Fð±´)–¶ÆJ½äwi€kÅŠÔ;–åЇZ¦°ÅÅ6b„MU€2ˆ€¶sצîÚÚ=õš<Ù9í´Â]¯Ô‡MΡ5Y;é• ÛH/j‡ �`:”PãTÚG´ÀÕ«—Ó¹s�<+?Ò‡Z©¶X„Æ6bÁL%€2”@Ÿ>n –vw÷¯ãÇ�ìlgìX?Ãâ}¨ÅÊ‹Xtl#bÀ@ £ (Kçæå}9¸aƒ;¨õÜsIÀBš-FÓl#®” @ÿ!ðÖ[n Ö€ÿù8q¢ûñÈ‘$ð¡M‚£i¶ WJ… �/ Ìš¥1«=�:ý¢U«ïT¯Þ³zõïôë÷‹={ö|ù„�)úP;õ‡ÔØF”©€@fصkw�]²²Öee�Ðä`VÖq¥›6íb»‹EšÙv]\ë±�âèp€  Ñª“Εyø·VùaŸ¶2èCÓ†ÞøŠ± ãU„€€¬' iÁÿŽ\ý«ãÊ·ºmô¡V«/Rá±�HñR8 ˆ@³f=ÃV_ºXÊ·š}¨Õê‹Txl#R¼@"Àøf�ið¯2Mã´€@üˆ¿ŠŸ95¦—þUzùS; �L  u‚Z-˜•µöäÊAÍjýàZÖf‚ê3¶�øW«z@ Nr±4Š¥‰BÅ\é¥mßœAôèCã4!»êÂ6ìÒÒB€€9èCÍÑ…i’`¦iy @Àô¡¶h*~9±�ø™S# $ƒ}h2ôE+°�(¨R& dúÐLÐréÚˆm”ŽoA€èC±�¢`E‘!€ P<úÐâùdò]l#“µOÛ!@ ,èCËB/ÙïbÉÖ/­ƒ �èЇFÇÖö’± Û5ˆü€ �.ô¡é"o~½Ø†ù:BB@0“}¨™z1A*lÃ-  ØH€>ÔF­Å#3¶gj� �ä MžNÃj¶IÊ� �L#@ši/y{±�’³âI@€@�}h�é l#Hƒ4 @ äèCKÎ*ÓžÄ62Mã´€Â"@É䕃m$O§´€â!@çpkY¿~}÷îÝO?ýô5jtéÒåÅ_,´üÇçææ–+WnâĉÁŽ;vûí·7nܸråÊ-Z´˜ê›M/üã}�ÿô§?)çïÿ»Ÿci¢]»vfÔŽÓ–Ê/çJò+ÔAÑ¿ Ô×¶XéÇ£¥Í)þ;K…Ø¡Ðü Öq‹b~0HÃ�´Lbïê§¢0j›\¹XŠ\*ê“óµHNNŽ69y2•û_~~¾I4}cõ²;Ÿ¹`9$Þ9~¦- }³IøwÞyÇøý÷ßWÎĉýÞ h7Ýt“�Â{2÷»ßÕ:� èýjM±¥�*æ;K[„Ø¡ðŽÚI�o׈z(å§±�ÄÌzÎÕoûÛ4ÂŒ¨jÍC©ËÓo؈Ê�´Xo¯9ÉŸzõêÕ+Òªã)Üó¯Ž=OuáÖ¢h+éåí·ßö‹õôuÏ=÷ø96&¼¥v:•ÃFá=™Ï9çmå”_{ÐݶzÿþýzXÿ{Ï>¼ä¾Y «à1@€ `2Ï¿úÇ?þrûöíÚËZ›ZïÞ½;˜_Š´ü+íü_Šy€ XJ PÿJmÑA™wÒ¡ÞJ˜Ôy¸£F�ÊÉÉ©V­ZçÎ�ux�Î_Ö‰<�àü w°£Êñ/‡²T³ˆ @€@ºå_éh¹Š+víÚU‚É¿ ŽAåççë°6�$«ó—ï¿ÿþ¦M›j>±ÿþ^‚þÕÖ­[¯¾új9Wš1ô®£G�¦«¥Ô @€â!P”¥Ú5BÕºuk%‚ãW›6m’¿tÇwøâ=ñÄÊ)Ô¿Ò3Ä_ù H@€ �!Šñ¯êÔ©“ê_M›6MÞ”¼,ŸÏ_|¡‰Bü+ @€2œ@Qþ•æ+T¨Ð­[7ñ Ž_ýîw¿“ܽA4hÐÿ*à ‰æC€ à(Ê¿Z´h‘ü¨;ï¼SOý«BǯªV­Šå#%@€@†(Ô¿Ò*¿† fggïÝ»W|‚þ•¥ŸÛc�=VLü•Vêî±cÇüçI@€ �dðü«9sæ¬[·Në—,Y2räÈZµj�uÖY«W¯öÚô¯”Ó»wooýàš5küõƒ ð®TŽJöÆÁ´~ð•W^ÁÑò(ñ? @ &àù?r�tU®\Yku>΄ ¼‘+¯á:à&¸?ƒöX¸ùæ›õ¤¦/ºè"9NJ+Ç{Xþ•öÏÇ‘C5hÐ …Ê+Sû_%Ø–h @aذaƒ|³ „U å@€ �L#°råÊñãǯX±Bó‰S§N­W¯^óæÍÙ84ÓÌ€öB€ "�—^z©C‡:�P¼×­[W+wíÚbù@€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€€9þe÷F endstream endobj 8 0 obj 37194 endobj 10 0 obj << /Length 11 0 R /Type /XObject /Subtype /Image /Width 800 /Height 600 /ColorSpace /DeviceGray /Interpolate true /BitsPerComponent 8 /Filter /FlateDecode >> stream xíÐ1 þ©g ˆ@aÀ€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€�ÏÀÜu endstream endobj 11 0 obj 2117 endobj 12 0 obj << /Length 13 0 R /N 3 /Alternate /DeviceRGB /Filter /FlateDecode >> stream x…”MHaÇÿ³�±Ñ—ÅÐÁ$T& RÓõ+S¶eÕL b�}w�g§™Ý-E"„è˜uŒ.VD‡ˆNá¡C§:D™u‰ £E^"¶ÿ;“»cT¾03¿yžÿû|½ÃU�RŽcE4`ÊλÉÞ˜vztLÛüU¨F\)Ãs:‰Ÿ©•Ïõkõ-iYj”±Öû6|«v™P4*wd>,y<àã’/ä�<5g$©4Ù!7¸CÉNò-òÖlˆÇCœžTµS“3—q";È-E#+c> ëvÚ´Éï¥=íSÔ°ßÈ79 Ú¸òý@Û`Ó‹ŠmÌÜv×Ulõ5ÀÎ`ñPÅö=éÏGÙõÊËjöÃ)ÑkúP*}¯6ß~^/•~Ü.•~ÞaÖñÔ2 nÑײ0å%Ôìfüäý‹ƒž|U °À9Žlú¯7?ûÛ‰j`¨‘Ël7¸òâ"çtæœi×ÌNäµf]?¢uðh…ÖgM Zʲ4ßåi®ð„[é&LYÎÙ_Ûx� {x�Oö¹$¼î̥߬S]œ%šØÖ§´èê&7�ïgÌž>r=¯÷·g8`候ï 8rʶâ<©‰ÔØãñ“dÆWT'“ó�<çeLß~.u"A®¥=9™ë—š]ÜÛ>31Ä3’¬X3�ñßüÆ-$eÞ}ÔÜu,ÿ›gm‘g…6ï64$Ñ‹áÀEzL*LZ¥_ÐjÂÃä_•å]½XážÏy¸[Æ?…Xs åšþNÿ¢/ë ú]ýó|m¡¾â™sϚƫk_Wf–ÕȸA�2¾¬)ˆo°Úz-di�âôä•õ�áê2ö|mÙ£Éâj|5Ô¥ejÄ8ãÉ®e÷E²Å7áç[Ëö¯éQû|öIM%ײºxf)ú|6\ kÿ³«`Ò²«ðä��.> endobj 14 0 obj << /Type /Catalog /Pages 3 0 R /Version /1.4 >> endobj 1 0 obj << /Producer (Mac OS X 10.5.8 Quartz PDFContext) /CreationDate (D:20091118223113Z00'00') /ModDate (D:20091118223113Z00'00') >> endobj xref 0 15 0000000000 65535 f 0000041199 00000 n 0000000165 00000 n 0000041052 00000 n 0000000022 00000 n 0000000147 00000 n 0000000269 00000 n 0000000358 00000 n 0000037750 00000 n 0000041016 00000 n 0000037771 00000 n 0000040080 00000 n 0000040101 00000 n 0000040996 00000 n 0000041135 00000 n trailer << /Size 15 /Root 14 0 R /Info 1 0 R /ID [ ] >> startxref 41341 %%EOF ipython-ipyparallel-14e3c43/docs/source/tutorial/figs/single_digits.png000066400000000000000000001075671520071063500264440ustar00rootroot00000000000000‰PNG  IHDR Xšv‚psBIT|dˆ pHYsaa¨?§i IDATxœìÝwxeÞÆñï B‡ Ei麀TEª ôÐQu×}…µ;‰ºŠ*R\VDdA�rQI�`�Þ¤®5@è=ɼ<&’`€“3§ÜŸëÊ×ÌdÎ=C89¿yšÃ², 7°;€ˆˆˆˆˆø """""â6*@DDDDDÄmT€ˆˆˆˆˆˆÛ¨·Q""""""n£DDDDDDÜFˆˆˆˆˆˆ¸� q """""â6*@DDDDDÄmT€ˆˆˆˆˆˆÛ¨·Q""""""n£DDDDDDÜFˆˆˆˆˆˆ¸� q """""â6*@DDDDDÄmT€ˆˆˆˆˆˆÛ¨·Q""""""n£DDDDDDÜFˆˆˆˆˆˆ¸� q """""â6*@DDDDDÄmT€ˆˆˆˆˆˆÛ¨·Q""""""n£DDDDDDÜFˆˆˆˆˆˆ¸� q "â¦OŸN@@ÿùÏüêµ*V¬H¥J•r%Ó¡C‡`àÀ�·t¹1´hÑÂî 0€€€Ž9bwñr*@DÄ#¥¤¤ðá‡Ò¬Y3Š/NPPEŠ¡V­Zôë×�… f8Þáp¤ÙÅ“^ÛÕ÷ãÚóøó‡Qw]»�?OY±ûÿ—ˆøŽ@»ˆˆ\+%%…:°|ùrJ•*Exx8åÊ•ãüùólÛ¶�˜˜>L—.]Ò¿'<<œÆ�Sºti“{WÝ�Ûo¿�Ý»wS¤H‘LûüùÃhn_ûîÝ»)P @®¾Æ�zóÍ7yþùç)[¶¬ÝQDÄË©�3{öl–/_Nƒ X±b!!!öŸ?ž 6dØV¸pa .ìΘÍU÷#00�»îº+Ë}–eaYÖ-¿†7ÊíkÏîžÛ©téÒ*ðEÄ%ÔKD<κuë8p`¦â @�4kÖ,öìÆ<¤��8þ<Ï>û,åË—'þüT©R…·Þz+Ë×·,‹ñãÇS£F ‚ƒƒ¹ýöÛ:t(IIIYŽ·¸žü‘aÆQ¹reòçÏOÉ’%éܹ3ß}÷]ŽÏ‘fâĉԬY3C¦ãÇ�gyìõÆ€,_¾œûî»���J”(Axx8Û·oϲkQVc@˜1c•*U" €€€€º/Ÿ~ú)­Zµ¢xñâäÍ›—²eËÒµk×L…åÅ‹yóÍ7©]»6!!!)R„x€O?ý4Ó9W®\I@@ÑÑÑY¾æŸ�•‰‹‹£yóæ.\˜"EŠÐ¾}{vîÜ™áøœ\ûž={xä‘G([¶,AAA„„„PµjUú÷ïORRRŽîOVc@¢¢¢`ÕªUÌ›7� ¤ÿöîÝ›Ÿ~ú)Gç¾öº.\H“&M(X° Å‹§G�üðپǟ»Ý‰ˆk©DDÿüsÖ¯_Ï•+WÈ—/_޲lÚ´‰6mÚpúôi:tèÀ£�>ÊñãÇ™7o÷ß? ,àá‡Îѹ†΄ ([¶,�=ö���,Z´ˆuëÖ]7Óµ÷cΜ9<òÈ#(P€^½zQ¦LÖ®]KÓ¦M©]»v¶¯õyF�ÅÂ… Ù²e #FŒ hÑ¢é^�eY 8�3fJ÷îÝ)]º4¿üò +V¬`Ù²eÔ¯_€Ë—/Ó¦MÖ¬YCÍš56lçÎ�cîܹôéӇ͛73zôè?½æœìs:�8�N:wîÌðáÃÙµk ,`Æ ìܹ“’%KæèÚþùg7n̹sçèܹ3U«V%99™½{÷ât:9r$Å‹ÿÓût½¬“'OféÒ¥tïÞ�¶mÛ’��ÀgŸ}Æ÷ßÏÖ­[É›7oŽÎðÙgŸñÕW_ѵkWZ¶lÉæÍ›™?>qqq¬[·.SKŒ?w»²DD<Ì·ß~kåÉ“Ç °úöíkÍ�;×:xðàu¿çã�?¶‡õŸÿü'Ãö *X‡ÃêÞ½»•’’’¾ýøñãV©R¥¬"EŠXW®\Iß¾zõjËápXµjÕ²N�:•¾ýòåËVË–--‡ÃaUªTéO_ûÊ•+VXX˜U¤Hë»ï¾Ëp|bb¢f•.]ÚºxñâŸÞ�µk×Z‡ÃªV­šuâĉôí/^´š6mšãL§OŸ¶Š-j…„„X[·nÍpü‹/¾h9+ À:|øpúöƒZ‡Ã8p`†ãû÷ïo9Ž ÇæÄ”)S,‡ÃaÝÿýÖéÓ§3íÿí·ßÒÿþÏþÓr8Vxxx†»ß~ûͪT©’åp8¬5kÖ¤o�‹‹³‡�åkW¨P!ÛûlÅÇÇgØ÷Úk¯Y‡Ãzë­·2l¿Þµ�?Þr8Ö”)S2í»téRŽþ½-˲‡Õ¢E‹ ÛF�e9+44ÔÚ·o_†}ƒ¶‡õé§Ÿæèüi×`-[¶,þ‰'Z‡ÃjÕªU†í7ûo."r-uÁ�Ó AæÌ™CéÒ¥™5k={ö¤råÊ”,Y’îÝ»³lÙ²:ŸÃá`üøñüñ–W¼xq:uêÄéÓ§Ù»woúö´.KÑÑÑÆP1vìØ¿æ’%K8pàǧ^½zö…††òÌ3ÏðÛo¿±bÅŠ?=×ÇœžéêV†|ùò1nܸgZ´h§N�bРA™Z;F�•ã'ó·b„ 8¦M›F¡B…2í/UªTúß§M›FžþLXXk×®åÕW_Åét¦–¿ãŽ;ˆŒŒdèС“ÜwED®¦.X"â5]ºtá™gž 66Ö寑Öí*íÃòÕ,ËÊñ²´BåóÏ?'555˯””^~ùåŸ+«”,ËÊ2kV®wm×Ûî*i…Ov3w]íz×|õö« ´áV6Óã^¼x1çaoÁ=÷ÜÃüùó9uêß}÷£G�&55•'žx‚>øÀ-rêFˆ«¨¯“6v »š·¢nݺX–ÅêÕ«3íÛ¼ysŽZ,7n �åynT½zõ°,‹•+WfÚ·aÃΟ?Ÿ£óÔ­[7ÛL—/_fýúõ9žå(Ož<À�ý„„„P«V-öíÛ—å4¯W+T¨•+Wfß¾}YN/›V|¦]üÑ‚óóÏ?g:þÿû‰‰‰9Îz=9½ö€€êÖ­Kdd$³gÏLAêI²ú™Xµj‡ƒ:uê¸7�ˆø "âqfÏžÍ×_�å¼cÇŽ1eÊxà—¿vDD`eŸ>}:}ûåË—Ó[^r¢sç΄……1iÒ¤l[j¶lÙ’£§ò HÏtuÿ‹/òôÓOßP¦"EŠ0mÚ4¶nÝša_tttŽ×¨(Q¢À ­=ðä“OfÐô™3g2ì³,+C‘0xð`RSS>|8©©©éÛ�;ÆË/¿ŒÃáH| P½zu .Ì¢E‹2\Krr2Ç¿¡œ×s½kß´iS–­di­KžÖ¢°téÒLã~&NœÈ®]»hÑ¢wÜq‡MÉDÄ—i ˆˆxœ„„Æ�OéÒ¥¹ÿþû©X±"AAAHóæÍ©W¯AAAüüóϬ_¿ž={öð믿’?þëž«I“&<ñÄL˜0�ZµjÑ­[7‚‚‚X´h%J” L™29j‰(T¨“&M¢_¿~4iÒ„ž={RºtiÖ­[Ç–-[¸ÿþûY³fMŽ®¯uëÖŒ;–!C†Npp0ÅŠûÓ1C† á›o¾aæÌ™Üyç�têÔ‰Ûn»�ÄÄDbccéׯ£F�à™gžaÙ²eÄÄÄpÏ=÷ððÃsþüyæÎ�˱cLjŒŒ¤I“&îùSO=ETTõêÕ£k×®€™‘ì¶Ûn£lÙ².i5»ÞµÏ˜1ƒÿûß4kÖŒ5jP @8@LL ùóçwi!ä ;v¤sç΄‡‡Æ÷ßÏ_|A‰%˜Ý È´HÅŠ3­ý�&**Ê °V­Z•a{jjªõî»ïZÕªU³òåËg•+WÎ:t¨•””d…††ZuëÖÍÑk[–Yóã¹çž³jÕªe(PÀÊ›7¯U¾|y«K—.Ö´iÓ¬äääß—‰'ZÕ«WOÏ4lØ0ëÔ©SY^ãõ2-[¶ÌjÒ¤‰U @«X±bV—.]¬;vX=zô°G†õ9²[IJ,ë�wÞIÏ“ÕZ$×3kÖ,«Y³fV‘"E¬ÀÀ@ëöÛo·zôèamܸ1Ãq/^´Þxã «V­ZVpp°U¸pa«iÓ¦Öœ9s²=÷˜1c¬°°0+oÞ¼V… ¬‘#GZçÏŸ¿áûdYY¯Çq½k_¿~½5dÈ«V­ZVHHˆh•+WÎêÝ»·µeË–ߟ¬^7»ŸW˺þ¿SV®^'fÉ’%VãÆ�­��«X±bV÷îÝ3­3bY–5`À€LëĈˆÜ ‡eåB'jtäÈ*V¬HŸ>}˜5k–Ýq\ʲ,î¼óN.^¼xÃݪÄûLŸ>�Aƒ1}úôôn‡""î¢1 ""×8zôh¦mW®\á©§žÈ•®_îrúôi.]º”iû{ï½ÇÁƒ½úÚDDÄ;h ˆˆÈ5Æ�ÇüùóiÙ²%¥J•"))‰eË–qèÐ!:vì˜>¶À­[·Ž¾}ûÒ¦M*UªÄ¥K—X»v-ß~û-+VL!""’[T€ˆˆ\£uëÖlÞ¼™E‹qüøqòçÏOÕªU6l˜Ç "¾QÕªU£U«VÄÇÇ@ùòå1b/¼ðBú OâÛGާ\q5�·ñé1 gÏž%22’6mÚJ@@ÑÑÑY»iÓ&Z·nM¡B…(V¬ݺuãàÁƒY{øða D¹råÈ›7/eÊ”¡S§N™Ž;pà]»v¥X±b*Tˆ6mÚ°yóf—^£ˆˆˆˆˆ7ñé䨱c|øá‡\¹r…ððp€,›œwïÞMóæÍINNfîܹL›6�½{÷Ò´iSŽ;–áØíÛ·S¯^=vîÜɸqãX¹r%“&MÊ´XÓÑ£GiÚ´)?üðü1Ÿ}ö/^¤yóæìÝ»7÷.ZDDDDăùM¬ãÇ�JTT¯¼òJ†}={ödÕªUìß¿Ÿ‚ fºÍ*Uªð�üƒÑ£GfšÊºuëÀúõë Êöõ"##yÿý÷Ù·o_zqræÌÂÂÂhÙ²%sæÌÉ¥+ñ\>Ýrµìê¬äädœN'ݺuK/>À ÊlÑ¢ ,Hß¶zõj¶lÙˆ#®[|,X°€–-[fh)T¨]»veñ⍦¦Þ≈ˆˆˆx¿)@²³ÿ~.^¼ÈÝwß�i_íÚµùᇸ|ù2` €‚ Ò®];‚ƒƒ)T¨;vdÏž=éßwáÂ8�í9Óö‹ˆˆˆˆø¿Ÿ†÷øñã/^<Ó¾âÅ‹cY'Nœà¶ÛnK_xàÀ�ôë×�_|‘_ý•矞¦M›²uëVJ—.͉'°,+Ûs¦½î�wÞ™aß±cÇX¾|9+V$88ØÕ—*""""·èÂ… :tˆ¶mÛR²dI»ãx%¿/@nDZ·©-Z0a„ôí5kÖ¤fÍšLž<™W_}õ¦Ï¿|ùrúöí{Ë9EDDD$w}òÉ'<úè£vÇðJ~_€¤-º•”””i_RR‡ƒbÅŠe8¶mÛ¶Ž«V­*THŸb·X±b8ŽlÏyõ¹®V©R%Àü@W¯^ýf/ÉçŒ1‚÷Þ{ÏîE÷$3Ý“ÌtO2ÒýÈL÷$3Ý“ÌtO2Úµk}ûöMÿÜ&7Îï �°°0‚ƒƒÙºuk¦}Û¶m£J•*äÍ›€¿üå/@ÖÚSSSÓ§ø æÎ;ïÌöœ  råÊ™öåÏŸ€êÕ«S·nÝ›¿(S´hQÝ�kèžd¦{’™îIFº™éžd¦{’™îIÖÒ>·É�óûAè���tìØ‘˜˜Ξ=›¾ýÈ‘#ÄÅÅѵk×ôm=ô `Ù²eαcÇŽ9BÆ Ó·…‡‡Ë�?þ˜¾íÌ™3ÄÄÄЩS'üþÖ‹ˆˆˆˆòùOÁË–-cÞ¼y,^¼0żyó˜7o.\ ::šóçÏÓ¡C¾øâ ,X@ûöí)UªO?ýtú¹Š)«¯¾ŠÓéäÿþïÿX¹r%sæÌ¡S§NT¨P�¡C‡¦ûÌ3ÏP¢D Ú·oÏ¢E‹X¶l:tàòåËDEE¹õˆˆˆˆˆx Ÿï‚õøã�søðaÀ¬‚>wî\æÎ�‹ÃáààÁƒ”/_žªU«²råJFŽI÷îÝ ¤U«VŒ;6ÓX�§žzŠ"EŠ0~üx>þøc *ÄÃ?ÌèÑ£)Z´húq%K–ä›o¾á™gž¡ÿþ$''Ó¤IV®\É]wÝåÖ{ """"â)|¾9xð`ŽŽ«[·._}õUŽŽ)99´|\+à÷ý""ân*@DDÄ'¦V6{Sß/""î¦DDD|Rƒ5€o³ÙûíïûEDÄÝT€ˆˆˆO3&’òå_â�Ôß·¦ñ(ð"o½i_8?¦ixEDÄ'…††rß}Ÿ’˜8†Š_'5Õ¬Rºt bc?eñâP¶;¥ˆˆÿQ""">é‡à³ÏB7îm†ϸoð`1Z¶„J•ìÉ'"â¯ÔKDD|Òk¯A©Rð·¿eÞ÷î»P²$ôï)‹."âV*@DDÄçìÙŸ|/¼ÁÁ™÷. ӧÚ5¦÷Q""">çµ× lY2$ûcš5ƒ§ž‚_„íÛÝ—MDÄß©Ÿ²kü÷¿¦õ#þëûúëP¥ ôí —/»'Ÿˆˆ¿S""">%:î¸ úócó燙3aÇó}""’ûT€ˆˆˆÏؾ>û ^z òåËÙ÷Ô©QQ0z4ÄÇçj<Aˆˆˆø�èh¨P ¸±ï94€ˆ8w.W¢‰ˆÈïT€ˆˆˆOزæÍƒ—_†  ûÞÀ@˜1~þž}6wò‰ˆˆ¡DDD|Bt4„…A¿~7÷ýUªÀÛoÃÀòå®Í&""P"""^oÓ&X°àæZ?®öÿmÛÂÀ��”äº|""ò ""âõ¢¢L Æ£�ÞÚyøè#¸x†uI4¹† ñjß}‹èQf,Ç­*W&O†9sÌ—ˆˆ¸–Ï gÏž%22’6mÚJ@@ÑÙLò¾iÓ&Z·nM¡B…(V¬ݺuãàÁƒ×=ÿÎ�;É—/lܸ1ÓþÄÄD @hh(!!!4iÒ„ØØX—\›ˆˆüaÔ(¨V z÷vÝ9{÷†^½àñÇá§Ÿ\w^ñá䨱c|øá‡\¹r…ððpG¦ãvïÞMóæÍINNfîܹL›6�½{÷Ò´iSŽ;–å¹SRR4h¡¡¡8ŽLç½té­Zµ"..Ž÷ߟÏ?ÿœÛn»�‡zˆÕ«W»þbEDüÔúõ°t©)Bòäqí¹'O6  –åÚs‹ˆø34V{¦Š+râÄ Ž?ÎÔ©S³<î•W^!88§ÓIÁ‚¨W¯UªTaìØ±Œ=:Ó÷¼ûî»üòË/<÷Üs<ùä“™öôÑGìØ±ƒøøx6l@óæÍ¹çž{ˆŒŒdýúõ®ºL¿5kB�®?wñâ0m<ü0üë_f€ºˆˆÜ:Ÿm¹š•Í£«äädœN'ݺuK/>Ê—/O‹-X°`A¦ïÙ·o£F�bÒ¤I¾çj , ZµjéÅ@ž¹úº""ÞbÔ(øË_ K÷¼^“&0r¤y݇†:uÜóº"b¯Ù³g3{öì ÛNžùä5jDéÒ¥Ýpu""¾gÅ X³ÆŒýpgëGšÚµáõ×aÜ83EDDnœO·€,[¶ŒsçÎqæÌÀ´bÌ›7€öíÛLtt4õë×§C‡<÷Üs\¸p�W^y…R¥JñôÓO§Ÿëê)uÓ8p0ë†\ÝejРALš4‰=z0zôhBCC™±;�ˆˆwP"""+5ÕÌ|Õ¼9´hawš¬uëýúÁ°apäˆÝiDD<Ÿ ñX š©n££íNr}ï¿o¦ã8ÐM""’= ""â‘RS!*ÊŒûxà»Ó\_Ñ¢fjÞØX˜8Ñî4""žMˆˆˆx¤ùóaÛ6ÏoýHÓª<ù$Œ »vÙ�FDÄs©�“’bZ?Ú¶…ûî³;Mνù&T¨påŠÝiDD<“ ñ8sçÂÎ�ÞÓú‘¦@˜96o†7Þ°;�ˆˆgR"""%­õ£];hØÐî47®~}xé%xí5ذÁî4""žGˆˆˆx”Ù³aÏïký¸Ú‹/B�:fzÞ ìN#"âYT€ˆˆˆÇHN†W_…ŽáÞ{íNsó‚‚`Æ 8|ž{Îî4""žEˆˆˆxŒY³`ß>ïnýHS½:ŒmÖY±Âî4""žCˆˆˆx„+WLëGx¸é¾ä žxZ¶„àäI»Óˆˆx ""âf΄Ìt_ §O›5BDDDˆˆˆx€Ë—ͬQÝ»ÃÝwÛ�Ƶʗ‡ L�5¾ÝiDDì§DDDl7}º°=j”ÝIrG¿~¦kÙc�Á¯¿Ú�FDÄ^*@DDÄV—.Á?ÿ ={B­Zv§ÉL™yòÀ_ÿ –ew"û¨[M›ÿûŸï¶~¤ …?§Ó\³ˆˆ¿R"""¶¹xÑ´~<òˆ™¶Ö×uêƒÁˆpð ÝiDDì¡DDDl3u*üò ¼òŠÝIÜçÝw¡dIèßRRìN#"â~*@DDÄ.Ào@ß¾p×]v§qŸÂ…Í û5kL1""âoT€ˆˆˆ-¦L�ÄDxùe»“¸_³fðÔSðâ‹°m›ÝiDDÜKˆˆˆ¸Ýùó0z4DDÀ�wÚ�Ư¿Uª˜)z/_¶;�ˆˆû¨·ûà8~^zÉî$öÉŸß,N¸s'DGÛ�FDÄ}T€ˆˆˆ[�;o½BåÊv§±W�:eZƒÖ­³;�ˆˆ{¨·š4 Nž4ã"#¡AÓíìY»Óˆˆä> ""â6gÎÀ˜10x0T¨`wÏ3f˜éˆ##íN#"’ûT€ˆˆˆÛL˜`Š�^°;‰g©RÆŽ5cc¾øÂî4""¹Kˆˆˆ¸ÅéÓæCö_ÿ wÜawÏó÷¿CÛ¶f¥ô¤$»Óˆˆä ""âãÇ›éwŸÞî$žÉá€�>‚‹aèP»Óˆˆä ""’ëNž„qãÌSþråìNã¹Ê•ƒÉ“aÎó%"â‹T€ˆˆH®{ï=¸t FŽ´;‰çëÝzõ‚LJŸ~²;�ˆˆë©‘\•”ï¾k>P—)cwï0y²Y¨pð`°,»Óˆˆ¸– ÉUï¼ÉÉšböF/Ó¦Áòåð¯Ù�FDĵT€ˆˆH®9~Ü >:n»Íî4Þ塇̘™gž�}ûìN#"â:*@DD$׌kº=û¬ÝI¼Óر¦ÛZD„iEñ*@DD$W=j|òI µ;�w 1«¤'$˜äED|� Éo¿ ðôÓv'ñnMš˜ÙÃF�‚Í›íN#"rëT€ˆˆˆËýöLœÇC‰v§ñ~QQP³&ôëg*ñf*@DDÄåÞz ‚‚à©§ìNâòæ…™3Í`ô—_¶;�ˆÈ­Q""".õË/ðÁð�@±bv§ñµkÃ믛åW¯¶;�ˆÈÍS""".5z´YDoÄ»“øž§ž‚ûï‡þýáôi»ÓˆˆÜ ""â2?ýS¦˜�çE‹Ú�Æ÷äÉӧñcêÞ&"ÞKˆˆˆ¸Ì›oš©cŸ|Òî$¾«rex÷]øè#X¼Øî4""7Nˆx¤£G�2pà³Ô¬ÙžªU;Q³f{|–£G�ÚMD²qä|ø¡Y¹»pa»Óø¶Áƒ¡C2Ĭ·""âMí r­ÄÄDš4éÍþýoc�ÊÎ� |óM/âã?%T«š‰xœ7Þ0…ǰav'ñ}‡)öjՂǃùóÍ6o ñ8#G¾ý{ñÑS|€ùQmÄþýÿ$2RË‹xšC‡`Ú4xöY(TÈî4þ¡ti3ÞfÁ3E¯ˆˆ·P"'!a'Ð0›½ ß/"žäŸÿ4ƒÎ‡µ;‰éÖÍ,NøÄ¦ œˆˆ7P"'99´|\+€ãÇóðóÏîL$"׳?|ü1<÷œ€.îõþû¦ëÛÀ��šjw‘?§D âqÆŒ‰$,ì HëO� Äö"ãÇGòÈ#ðÉ'ðÛo¦äñÇa÷nèÛ×#Mš˜§²›6�•]cŠˆÜ²×^ƒÛnƒ¿ýÍî$òæ›P¡DDÀ•+v§Éž ñ8¡¡¡|ôѧ@ åËwä®»:Q£FG ˆÉ4ož<и±ù´q£Y…yêT(SÆŒ�zõ \93gþüùpú´}×%âköì1­ŽÏ?ÁÁv§‘LkÔæÍfRO¥u@Ä#­[JHÈÛìÙùóçüûÊ–…AƒÌ×å˰v-,YK—š)B¡iSh×Ú·‡jÕ4w¾ÈÍzõUónÈ»“HšúõÍØ¸×_7ïqõëÛ�HD$3µ€ˆGr:áÁo¬ø¸V޼ТŒ ;wÂ�0~¼yRûòËf IåÊfÚÐ¥Káüy×åñu;wÂìÙðâ‹·öÿT\ïÅ¡N3=ï… v§ÉLˆxœcÇ >:tpíy+U2cE–,�¤$ógûö¦øhßJ”0-#“&ÁÁƒ®}m_ wÜaZųÁŒpø°”."âiT€ˆÇY¶Ì o×.÷^#8ØœâDÓ2²s§é²péŒaZFªW‡§Ÿ6S[^¾œ{YD¼Í¶m0w®éê“7¯Ýi$+Õ«ÃèÑf��+ìN#"’‘ ñ8N'Ü{¯HîÇÅÆŠpü¸°~ß}¦‹I«V¦u¤kWøè#´¢ø½èh¨X °;‰\ÏO@Ë–æßéäI»ÓˆˆüAˆx”+Wà‹/\ßýêF.lŠ�©SͬZ›6™n ¿þ ý«™U«N-‚(þéûïM�þÒK¦«�x®€³BýéÓf�O¡D<Êš5æ—¥�ÈÕSl¼ø¢)6I_ñƒ´¢øŸèh 3œÅó•/oVGŸ9ÓŽ""ž@ˆx§Ót½ªSÇî$Y+Yyĉ‰,‚¸k—Aß·q#,\¯¼¢ÖoÒ¯ŸiÕ}ì1Ó’+"b7 âQœN3#U€üd^½â¦MZQ|_TT©bŠpñüë_æ=ë¯Õƒ±Ÿ|̱w¯ùò”îW7*mÄùóMW¬ØXóA->ºw7Ù[¶üc]}o²aƒy@0j”YÐS¼Kh¨y@âtšEYEDì¤D<Æ’%�/Ÿ™uÊÛeµâ{ïý±bÍš,‚¸d‰AÏ7jT«½{Û�DnVÇŽ¦EvÄóž$"b=Ç�átší Ú�Äõ*U2ÅÆÐ¡feâ¸8³â’%0y²YIºE Óý¬];süµŽ=Jdäv’œœ‡ÀÀ4¨Á˜1‘„††ºÿ¢ÄoÄÇ›õyfÏ6ÝxÄ{½ó|ùåQ7C‰;IIÑ{‰ˆ¸Ÿ ñ§NÁêÕ¦•À×¥-‚Ø®�™�f÷nSŒ,]jžLfž4·kg ’û'iÒ¤7û÷¿Œ@*;w&ðÍ7½ˆ�ÿT$×DE™V»=ìN"·êâÅDRRz“˜ø‰‰z/{øl¬³gÏI›6m % €èèè,�Ý´i­[·¦P¡B+VŒnݺqðàÁ ÇìÙ³‡¡C‡R«V- (@�¨_¿>Ó§OÏòœ‰‰‰ 0€ÐÐPBBBhÒ¤ ±±±®¾LŸñå—�œl>pû“œ.‚X¿þÛ¿�0Àü÷mÄþýÿ$2rŒ}!>mÍóÿ3*J­¾`äÈ·ùùg½—ˆˆ½|¶9vì~ø!W®\!<<‡Ã‘é¸Ý»wÓ¼ys’““™;w.Ó¦McïÞ½4mÚ”cW-êðÕW_ñõ×_Ó»wo>ÿüs–,YB�:u4h¯½öZ†s^ºt‰V­ZÇûï¿ÏçŸÎm·ÝÆC=ÄêÕ«s÷½”Ó µj™Õ•ýYv‹ =ºh˜Íw5$!a§;cŠ5 î¾Ûü\Š÷3ïz/{ùl¬Š+râÄ Ž?ÎÔ©S³<î•W^!88§ÓIÁßÔ«W�*Uª0vìXF� @ïÞ½6lX†ïmÑ¢'Nœà­·Þâ¹çž#è÷‰ñ?úè#vìØA||< š7úæÍ›sÏ=÷Éúõësåš½UJŠé~4dˆÝI5oÞ<Ú·oOpp0ÑÑÑÔ¯_Ÿ:ðÜsÏqáÂ^yåJ•*ÅÓO?�~®5kÖÐ¥KÊ”)ÃóÏ?ϦM›2¼VÍš5)T¨ƒ bÒ¤IôèуѣGÊäɓٷo_ýµ›®ÞóÅÆš®D*@nNÆP¥Šé:Ѫ•ÝiÄ,Y6ÀW_©õß8¦dêT˜8²y¶&"â:–«X±¢åp8,‡ÃadøûáÇÓ�Û¸q£Õºuk+$$Ä*R¤ˆÕµkWëÀ�Εéû¼––•Í*}âviƒš6nÜèóƒÐ- n¿zõ‚wÞ±;�÷:tÈt�˜1ÃtɹY‹™ãâ ys»Óˆ»YÜu<ð|ô‘ÝiD<›?}^Ë-~=Dìóý÷ðóÏê~u«*V„fÍL"r³RSͺÍ›«øðWiݰ,€?YWDä–©[8�P¸0Ü¿ÝI¼_D„Ìÿã�v'oµp!lÙbf¾ÿÕ«œ8aÖ�ÉM*@ÄN'´m ×Ìr,7¡{w3-ïÿkwñFi­­[›î7â¿j׆ªU5–ˆä> âv¿ý ê~å*… ›¾ûÿù�éÇ-r#æÍƒíÛÕú!¦V¯^¦EìÒ%»Óˆˆ/S"n·t©ùE§U–]'"vî„Í›íN"Þ$%ÅmÛšµ?Dzö„S§àË/íN""¾Lˆ¸�Ó �Ah¨ÝI|ǃÂm·i0ºÜ˜Ï>3…«Z?$MÍšæKݰD$7©·ºtÉK÷îOÚÅë©·X¾Ü¬;о½ÝI|_HˆyÂ=c†ø/f ž×_7OµkÕ²;�xƒÊ•¡~}uÃHLL¤qã^LŸÞ�ƒÇÛÇë©·p:MâråìNâ""`ÿ~ˆ�·;‰xŠ�>‚„W^±;‰x“ž=Í@ô3gìN"b¯‘#ßfÿþ7€F€¦ò¼U*@$×%'òeê~åNÍš™õV4]À¬hýÆf–´êÕíN#Þ¤Góó³x±ÝIDì•�°hhw Ÿ¡Dr]|<œ8¡Ä� o_³�Ø¥Kv§»}ø!üò‹Z?äÆU¨�iQB‘ää<¨åÃuT€H®s:¡T)­¸ìnýú™ 5€Ô¿]¸`Z?úö…»î²;�x£ž=á‹/àÔ)»“ˆØ'00ÐÀJWQ"¹Îé4ƒÏôÓæVÕ«›¤ê†åߦL�£Gáå—íN"ÞªG3…ó¢Ev'±Oƒ5€oíŽá3ô‘PrÕ�°s§º_Ù%" =zÔî$b‡sçàÍ7¡¸óN»Óˆ·ºýv¸ï>͆%þm̘HÂÂ^â�T»ãx= ’«–,�  ³:·¸_ïÞæÏ9sìÍ!î“6O}Íší©T©‰‰í9uêYŽª •[Ы|ù¥Ï'â�BCCY·îS ˆ¡pávÇñz*@$W9�м9*dwÿT²¤éþ6s¦ÝIÄ®ž§~çN'G�~,fþün4nÜKEˆÜ´nÝÌŒ† Ú�DÄ>gφrþüÛDG¿ow¯§DrÍ™3°r¥º_Ù­_?ذví²;‰ä¶¬ç©±ÿ?‰Œc_8ñje˨–ø·ØX3žµn]»“x? ’k¾þÚ \ÔêçöêЊU+ˆ?¸þ<õ ß/rszö4ïëÇ�Û�Dı±fFÏ‚íNâýT€H®q:ÍLLaav'ñoùò™± 3gBªÆÍù´ëÏSðû~‘›Ó­›yY°Àî$"îgY-[Ú�Ä7¨‘\‘šj «û•gˆˆ€4]âÄw]žúÔß÷‹ÜœÛn3cú´(¡ø£Ý»á×_U€¸Š É7Âo¿©ñ�™iXÕ Ë·]žúoß/rózö4ÝP4Ÿ�ø›ØX3«ç}÷Ù�Ä7¨‘\átšqMšØ�D3}Þ<³6„ø¦·ÞŠ$oÞkç©Oâ {‘1c"í '>¡kWó~2¾ÝIDÜ+6Ö<Ì+PÀî$¾Aˆä §~íN"iúö…³g5�¦/Û¹3”Ë—?åÁc¨Q£#wÝÕ‰5:2`@ ññŸjwDñr¡¡¦ ŠfÃ’šjº0«û•ëè㡸ÜO?Á¦MðôÓv'‘«U® M›ÂŒðè£v§‘Ü0v,ÔªÊòåoãÈn,ºÈ-êÕ þö7Ó¾ti»Óˆä¾­[!)Iˆ+©D\néR3OöCÙ�D®a¦Ñüé'»“ˆ«íÜi&~xæT|H® 7ïñê†%þ"6‚ƒ¡av³œË S".·x±¤U¼¸ÝIäZ=z˜Atÿý¯ÝIÄÕÞyÇ,×§�ÝIÄ×/>¨nXâ?bcÍçš|ùìNâ;T€ˆK]¸`ž°kö+ÏT¤tîlºaYÙÍÖ*^ç×_Í gO> yóÚ�FüAÏžðÍ7ðóÏv'É]W®ÀªUê~åj*@Ä¥ââL¢ÄsEDÀöí°e‹ÝIÄU&N4…Çc�Ù�DüE—.f’‘yóìN"’»6n4¸¨q- âRN'TªdV@ÏÔ¦ ”*eZAÄû�;“'Ã�!fêkw(ZÚ¶Õ¢„âûââ P!¨WÏî$¾Eˆ¸Œe™¤C ‚õdAAðÈ#0k$'Û�FnÕÇÃéÓ0|¸ÝIÄßôì ëÖÁÿþgw‘Ü ÍšiYWS".³m›ùE¤îWž/"áË/íN"·"%Å >ïÑ*V´;�ø›Î�ܹ͠síN"’;.]‚5k E »“ø â2N'„„˜'âÙþò¨YÓ \ïµ`<¨5wÄ… ›éÖ5–øªõëáâE�ÿÈ *@ÄeœN3¾@ÓÔy>‡Ã´‚,\§NÙ�Fn†eÁÛoCóæpï½v§Õ«|û-:dw׋�5ÓNß}·ÝI|� q‰£GÍ“u¿ò�>jš—5‹�wZ»̃"véÐòçW7,ñMqq¦ûU€>-»œn©¸Ä²eæ‰l»vv'‘œ*WZ·ÖlXÞjìX3ÛÜÃÛ�DüY¡Bо½ºa‰ï9wλ“ø�-@Z´hAË–-³üJÛw=ÇŽãÿٻ󸨪þàŸaIMÃ%5ܵÜÐÔÊ ¢’$ÓD3õ‘Ð\2~š¹f™Y=fšKDšúä¸V3*Šâ¨™Zæ‚ *Èr!4—aÎ�¹Ÿ÷ëå‹ç¹sçÎg&–ùÎ9ßs–.]м¼<ôï߀è¹Ó‰'àçç‡üü|¬]»_}õNž<‰gžy—/_.qîûï¿�qãÆaРAرcF�…Y³faôïrssÑ­[7�F,Z´?üð<<<ЫW/üòË/�øÊȱe‹Ø!»woÙIÈÜÚ´¼¼Äž T>rs�E‹D±çá!; ‘iÙØˆfôuë¶n’šäç‹U9ýÊüT;¡B¹µuªrÛª™™™8zô(ÜÝÝÑè_¶öôôÄ•+Wiiiøò.;z½ûî»prr‚^¯/^i«mÛ¶xòÉ'1þ|Ìž=»ø3gÎĈ#0sæL€¯¯/òòò0uêTŒ7O=õ`Ù²eHNNF\\:tè@L)kÙ²%"""°wïÞ‡}Y¤ÑëŧXÕ«ËNBæ¦Ó‰7Æ‘‘Àµk¢ˆL+*J,ððŸÿÈNBT>�… �ØX€3¬I-€ë×Y€È Ú�˜˜�FÄÄÄÿ;pàNž<‰êÕ«ã½÷Þ»ïkÝ^ÄÜ.??z½,±Ìoݺuáïï� 6Û¶mrssZâ¡¡¡P7n,>¶aÃ4iÒ¤¸ø[[[¼òÊ+ˆ��Çy ÛÙ-7WlHÇéWÚõòË@Nðý÷²“XEöë4i"; QùèШ[—Ó°H] ÀÙh×NvíQmr7žžž˜8q""""ùZ§OŸFNNZ´hQê¶æÍ›ãÔ©S¸yó& ))©øøí{ì1T¯^ÉÉÉÅÇ’’’îzM%ε;wYY,@´ìñÇÅ'Dœ†ezÛ¶ÉÉÜx�¬›N÷Ï4¬2Ú&‰¤0__.°"ƒÅ ðøã�ãèÑ£�|�´´4€««k©Û\]]¡(J‰i\ŽŽŽprr*u®‹‹Kñµ ==ý®×¼ýq-…^/>¹jÖLv’)$ˆ‰Ξ•�ĺ̟x{su ²~��@jªøP‹H¶Ü\`×.Àß_vm²ÈšoÆ pqq‘£ÜŒ7ÕªU+q,88Á¶ /Úý¼o_ñ i×€@X°z50eŠì4ÖáàA1 :š?_dýÚµêÕßïݺÉNCZ·o��ýïýQQQˆŠŠ*q,##£“iƒj �ÐÐÐR«V 11‡ÆôéÓù1ÜÜ܈‹;¥§§C§Ó:nnnÈÍÍENN*T¨Pê\ooï×½Û5oÜ»ùè£�ЦM›{2åäøqà÷ß9ýŠ€Ê•��Ŧ„“'ó ³),XxzŠâŽÈÚMÃúòKàÓO¹§Ée0ˆ�_ÿm“ݲ>>xð Ú¶m[Žé¬Ÿj £ÑXª±³³Ãã�?ŽÏ?ÿ#FŒxäÇhРœœœÊœÎ•˜˜ˆ'Ÿ|PÜÓqôèQ´oß¾ø¼ . -- Ín›ŸÔ¼yó»^@‰sÕN¯›¢qˆ’`ÈQ€ìßÜöc@áÏ?Å'Á~ÈùǤAAÀœ9âÍ_@€ì4¤eƒxocc‘Í–Oµ/ûü�ßÿ½Ä¿ß~û F£Ñ$Å š~ýúaýúõÈÌÌ,>þçŸÂh4bÀmKöêÕ *TÀŠ+J\cÅŠÐétxá…Š�õïß'Nœ@|||ñ±üü|¬^½>>>xì±ÇL’ßôz {w±K(Q×®@­ZlF7…�?«¯¼öšì$DæÓªа!WÃ"¹nÜöîåò»2Yõçn[·nEVV®_¿@¬>µnÝ:@Ÿ>}àää„ÈÈHx{{£oß¾˜4i²³³ñî»ï¢F�˜0aBñµ\\\0uêTL›6 ®®®èÑ£öïß�ÈÈH >Mn[?óµ×^çŸ~ŠÁƒcöìÙpwwÇ’%KðÛo¿á' ÚN:=ؽøüsÙIH-lm�W^S(>ü¸5@H(#øï�1cÄÔ6"­ÐéÄ(ȧŸŸ}Æß!$ÇîÝ@^gwH¥¨ØåË—•)S¦(>>>J£F�”N�:)Ó¦MSÒÓÓïëþžžžŠN§St:�bccSâŸ={¶ø¼„„¥{÷îJ¥J•”ªU«* PΜ9Sæ5-Z¤4nÜXqttT<==•ÈÈH%??¿Ôy/^T^}õUÅÍÍMqrrR:uê¤üüóÏ÷Ì›�� Pîëù•·5kP””ÙIHMÅ÷ņ ²“X®¹sÅÞ^Qþþ[v"ó;rDüÙ¼YvÒªI“ÅÃCQ îþj{¿f‰tŠr—]ú$;wî:uê„””´hѸxñ"Ž=Š:uê`Ïž=¨U«–ì˜&UÔÔ”�� Š&ô—^~ýUìJt»¶mEó47&|p7oõë={_}%; ‘ù) àå%6'¼cV3‘Ytè4h|óÍÃÝ_mï×,‘j{@&Ož EQpèÐ!:tÛ¶máC‡pøðaâ�wÞ‘Ѫåç[·rõ+*Û�!À¦Mbš=˜èhàÜ9à¶žDšR´ÖÆ�b/"sºz8p€ý²©¶Ù¶mfΜYjGñæÍ›ãý÷ßÇÖ­[%%Ó†={Ä}¸>6Ý]HˆXÆðäIÙI,Çüù@ëÖ\y…£ ÿûŸØ�šÈ\ 1úÁÍtåRíÛË×^{ óæÍÃÛo¿�ÄÄD¤¦¦"11“&Mœ9s0lØ0Ù­ÖéÓbtN¿¢{éרZX½ZvËpô¨˜nÎ?|D€(@23�mÛd'!­¸|8r„Ó¯Ô@µû€„‡‡ãôéÓX°`,XPâ¶#F œsÊÍæÍbmöîÝe'!5sro V­Þ{�£eÿfÁ N`ð`ÙIˆÔ¡I E ±)aÿþ²Ó�ÄĈ¯…–Oµˆ�� ¾øâ Œ?F£iiipssC·nÝШQ#Ùñ¬š^øù‰]š‰îeÈ`éR`×.À×WvõJIË=ΙØÛËNC¤AAÀ¬YbgêŠe§!kg4��?.; ©ê3ËK—.aÀ€ؼysñ±&Mš ,, S§NEXXNž<‰�"--MbRëuýºø„€Ó¯è~tî,ùØŒ~oŸ|"Þ\½þºì$Dêdewiù$2)ƒ�£j¡ªäÓO?Å‘#Gp×spôèQ,^¼ØŒÉ´ãÇ�¼<Ñ€NôollÄ(ÈÚµl$½›k×€Ï?Þx¨REv"uiØhÓFLÃ"*Oÿ œ8ÁþµPU¢×ë1|øpØÙÝ}f˜½½=FŒ�M›6™1™vèõb‡Úúõe'!K1dˆx“ýò“¨Ó²ebzÉ[oÉNB¤N��âoOf¦ì$dÍŒFñÕÏOj ºEUÈÉ“'áííý¯çµnÝ¿þú«iKa¡h@çô+z �:qVYòò€�>7rÎ1QÙ#¨·Í¾&29ƒhÞ¨QCvTV€äççÃþ>:4ííí‘——g†DÚràpé zpC†Û·.ÈN¢.ëÖþ L˜ ; ‘zÕ¯x{sSB*_F#§_©‰ª �š5kâØ±cÿzÞ±cÇðØc�™!‘¶èõ€‹ б£ì$di[[ *JvõP±ñ`�@Ë–²Ó©[` hD¿~]v²F¿ÿ.þ±]=TU€téÒK–,A~~þ]ÏÉËËÃgŸ}~™œ^ôî Ü£‡¨L®®bcBNÃúGL pð Øx�ˆîmð` 7—½dT>ŒF±hJ—.²“PU ãÇ�ÇñãÇñüóÏãܹs¥n?wîžþyœ8qãÇ�—�Ðz�;:ÄéWôðBB€Ã‡�ÄDÙIÔaþ|1߸GÙIˆÔï‰'®†EåÃ`«­U«&; QÕgÝ-Z´À’%K†úõë£mÛ¶¨W¯à÷ßÇ� ( >ûì3´hÑBrZë²y³˜Bs��‰î©W/ zu±3úܹ²ÓÈ•œ,¦“|ý5 ÓÉNCd‚‚€‰�Œ ¾Q$ÓQQ€ "; ÝNU# 0|øpÄÆÆ¢gÏž8r䢢¢…£G�¢wïÞˆ��ÅëÜÍËäôz±©œ««ì$d©€_V¯ d§‘ëÃ�ZµÄëAD÷gÐ àæMNÃ"Ó:y8ž èj£º:vìˆM›6áÚµk8þ<Ο?�«W¯âÿû|||ddz:ÙÙÀO?qú=º�ñ‹þçŸe'‘çüyQ„�+Š2"º?�?<ý4§a‘i ¢·µsgÙIèvª,@ŠØÚÚÂÃ𵵕Çj�¢aB�ª]; Im7£/^, �#d'!²<��ÀŽÀ•+²“�µ0€€Ê•e'¡Û©º!óÐëÅ:ìMšÈNB–N§£ 6hs9ÍÌLà³Ï€áÃ9‡�èa äç7ÊNBÖ °�û¨ �SQ€ôíËfY2�—_#jë×ËNb~Ë—×®‰éWDôàjÕ|}¹)!™Fb"�–ÆD�X€h\b"ð×_œ~E¦S·.àç§½iXùùÀÂ…b%Ÿ'ž��†ÈrоĴ4ÙIÈÒ�@… b‰gR §×‹y‘¾¾²“�5 ¿øÿüSvóÙ°Aì´;a‚ì$D–mà@1:¯ÅQT2-ƒèÔI!¤.,@4N¯zöe'!k2p ø…¿f�ì$æ¡(À¼yb˜¿MÙiˆ,›‡‡EåjXô(òó��;9ýJ­X€hXj*°w/§_‘é9;ˆiXŠ";MùÛµ Ø¿—�„È:‰O¯/]’�„,ÕÁƒ¢'�ˆ:±Ñ°­[Å›ÃgŸ•�„¬QHpâ�� ;Iù›?ðò»ÁÑ£0@,ŒÂiXô° 1ż];ÙI¨,,@4lÓ& }{1ÜMdjݺ5kZ3ú¯¿Š�›Ãù’‘©T¯.~‡p=,£Qô·ÚÛËNBea¢Q7oÛ·sú•[[±$oT”ø~³V~<öðÒK²“Y—À@1‡ÿÂÙIÈÒܼ ÄÆþþ²“ÐݰѨØX±Q *O!!ÀåËÀ¶m²“”�K—€¯¿Þz‹ 9™Zÿþ€� ðý÷²“�¥Ù·OìGÅþõb¢Qz½Øð©U+ÙIÈš5o.¾Ç¬uÖ§ŸvvÀoÈNBd}\]�=¸)!=8ƒpqZ¶”�„)Šèÿàîçd!!âûíÊÙILëÆ Q€ &Þ(‘éŠUæÎ�“�„,‰Á –r¶µ•�„�< œ>ÍéWdÁÁ@A�õ5“~ýµ(ªÆ�“�„Èz½ð‚e\·Nv²7nˆ-8ýJÝX€h�^/6‰ëÖMvÒ‚Ç›]ZÓ4¬‚`Á`Ð  ^=Ùiˆ¬Wµj@@€õ}€AågÏÑ„Îtuc¢Az½ød bEÙIH+BBÄ…S§d'1�ÿýOŒ"rãA¢ò$~üõ—ì$d  F ±7© �ÉÈ+`qú™ÓóÏUª«VÉNbóç‹õå½½e'!²~Ï='V™[»Vv²ƒø�•=®êÆDc¶oÓGX€�999ƒ‹DQd§y4{öqqý 2—*U€Þ½9 ‹þݵkÀ�ìÿ°,@4F¯ËÒÕ©#; iMHðûïÀîݲ“<šùó�Æ��>}d'!ÒŽÀ@±·ÃÈNBj+>de¢~,@4¤ Ø²…£$ÇÓOOÎÎbÔ‘›Ò½°ÿÃr°Ñ½^¼ybã,É2dpõªØ˜ÐÒ¤¦Ë—o¾)>‰%"ó Ä tDwJKæô+KÁDCôzàÙg¹3(ÉÓ¨àãc™«a}ö™øT-,Lv"mêÓG,Ïft*KLŒøÊý?, �øã )‰Ó¯H¾�`ëVàÒ%ÙIî_v6°x1 T¯.; ‘6Uª$þ†±¡²�À“Or‘KÁD#6oììÄŽÔD2Š~�¨(ÙIîߪUÀåËÀøñ²“i[P�˜fsò¤ì$¤6G?, �Ðë�.]ÄzêD2¹¹‰O1-e5¬ÂB`Á  aCÙiˆ´­wo reŽ‚PIçÏÇ�³ÿÃ’°Ñ€ÌLñɧ_‘Z„„Éɲ“ü;½^|ÚÊ�‰äsr;£³¡Û�⫟ŸÔôX€hÀÏ?7o²!õxöYÀÕÕ2šÑçÏ:u:v”�„ˆ1�31Q|âMˆY›5<rDv’åäIàï¿Y€X" Vl˱ãt¯^²“Ý]HˆX*:%Ev!7X´HL½ªQCv"º›nÝÄrÞ\ K»ŒFÀÎxúiÙIèA±±bz½Ø» zuÙIˆînà@ÀÑX³FvaÍàâEÑ|NDêeo ÀÕ°´Ì` šT®,; =( V*'øñGN¿"õ«REÌå^¹Rþ›ˆÂB±ñàsω½sˆHÝÅŠuÊNBæVXÈý?, +µs'�•Å„,CHpì˜ü7Û¶‰¥=¹ñ ‘eð÷£üœ†¥=IIÀåË,@, +¥×‹ߦMe'!úwÝ»�=¬Z%7Çüùb8Ÿó‰‰,ƒ��˜ÆÉÕ°´Ç`Ów;v”�„ +¤(¢éÛWìµ@¤vvvÀË/ß|äåÉÉ�� †óÃÃùsCdIÅnØû÷ËNBæd4�:*ÈNBƒˆ:vLü2æô+²$C†©©ÀöírÁ ^=Ñ�BD–£K±b7%ÔŽü| &†Ó¯, +¤×‹ÍÓüüd'!º-[-ZÈÙäìY1…cüx1CD–ÃÖ4X»V4&“õ;t¸v�ˆ%cb…ôz GK’å ~øÈÈ0ïã~ü±X�+4Ô¼�KD¦üõ°w¯ì$dP©àí-; =, V&- س‡Ó¯È2½ô’èY»Ö|�™‘,] Œŵä‰,UçÎ@Íš\ K+ À×WìC–‰ˆ•Ù¶M A?û¬ì$D®fM gOóNÃúï�›7�7ß4ßc‘iÙÚƒs–ܼ ìÚ%–`&ËÅÄÊèõ@Û¶@­Z²“=œ!CÄ—Ó§Ëÿ±nÞÓ¯† Ë‘å þþؽ[v*OññÀ�ìÿ°t,@¬H^žáô+²d/¼ ¦B­^]þ�õí·â ËþSþ�EDå«cG vmNòvP­Ъ•ì$ô(X€X‘={Ä|v dÉ*VS)V­*ß�ÅEl<اàåU~�CDæac#FAÖ­ d§¡òb0ˆU>mme'¡GÁÄŠèõbI›6²“=š�1+.®üãÇ�ÄD±ñ Y‡À@à 6Vv*ÙÙâï§_Y> âãã€*UªÀÙÙ]»vÅž={J�—““ƒiÓ¦¡aÆpttDÕªUѽ{wìܹ³Ô¹yyyˆŒŒ„§§'*T¨€§žz ‹/.×ç¡×‹Osmø_•,œ¯/P·nù6£ÏŸ/ú¥ºt)¿Ç "óêÐAüî঄ÖiÏÑ»Çt˧ù·ªû÷¯/`íÚµˆŽŽ†¢(èÖ­öÞ± øk¯½†Ù³gãÕW_ÅÏ?ÿŒU«V!;;=zôÀþýûKœ;jÔ(Ìž=cÆŒÁŽ;пŒ;|ðA¹<�S§€'8ýЬƒ� ðÊ+âMDNŽé¯äˆ t:Ó_ŸˆäÐéÄ(È÷ߋݲɺ €»;д©ì$ôÈ� PêÖ­«äææËÊÊRjÖ¬©tîܹøXvv¶bcc£¼þúë%îùòeÅÆÆF;vlñ±¤¤$ÅÆÆF™={v‰sGŒ¡T¬XQIOO/3KBB‚@IHHxàçñÑGŠâà (ׯ?ð]‰TéøqEeíZÓ_{ÈE©[WQòòLm"’kÿ~ñ»ãÇe'!SóñQ”  Ù)íý šÙ½{7ºví ‡âc+V„ŸŸöìÙƒ .t:ìììàìì\âþ•*U‚N§ƒým»álܸŠ¢ ôŽm•CCC‘���mÛ¶™üyèõbH’©‘µhÒhßÞôÓ°RR€¨(`üxÀÎδ×&"ùÚ¶ê×çjXÖæÚ5`ÿ~öX Í yyy%Š�"EÇ’’’ŽŽŽ;v,V¬X�­[·âÆ�8wîF�…jÕªaøðáÅ÷MJJB�5P£F�×lÞ¼9 99Ù¤ÏáÚ5`çNN¿"ëlÝ ¤¦šîš‹•*Æ™îšD¤·OÃÊË“�†L%6V¬nÆ^Þ IDATÄ:h¾ñòò*Õp^XXˆ¸[Ë拉¥Ÿ;w.^{í5ôíÛ•+WF�:uðã�?bÇŽhÔ¨Qñyiiipuu-õX•*U‚ƒƒC‰kšÂ�?Š_²}ú˜ô²DÒ‰7ß~kšë]»|ñ0r$pÇ`&Y‘À@ =]ô �u0�Ç4��„LAóÆŒƒaÆa„ ˜žõòò°aÃ0}útØÚÚ¢]»vرc–.]Š÷ß¿TÇ£Ðë�Þ½¹œ(Y·�à³Ï€˜˜‡[Å` 6‘6­†õÑG@n®ø0ƒ,“ÑÈÑk£ùlß¾���èÞ½;>þøc„††"&&+V,>O§ÓaÛ¶mxã�7°téRtïÞÁÁÁÈÊÊÂÚµkñÒK/•¸î’%K0iÒ$|òÉ'Àúõë±hÑ"Lš4ÉdÙSRÄ›*N¿"kסðä“¿'Èüù@Ë–@·n¦ÍEDê(V¿Û¾]vzX.ÇŽqù]k£SE‘‚„ƒ¢mÛ¶HHH@›6mþõü/¾F�= ..fH$ÑŒÀœ9ÀÅ‹b�û•”$¦b¬Z¼òJùå#"ujÖL¬Šµzµì$ô0¢¢€—^…ˆ‡‡ì4ƒ¾_£Ò4?bÉôzàé§Y|�6¼ò �•lØð`÷[°¨][ì)BDÚüïb n²<ƒØj@-Å™  uã†XÙƒÓ¯H+êÕ|}l5¬¿ÿÖ¬Æ�ìíË/©×àÁ@f&°m›ì$ô0Šöÿ ëÂÄB�@N Ò–�QxŸ;wçò P¡0|xùæ""õjÒhÑB,ÅM–åìYàÌ6 [# J¯47–�„È| €o¾ù÷s¯_>ÿ1¨Zµü³‘z›6‰Ùd9ŒF±šY—.²“�©±±@Š" �¾}Å&‘VT­ <ÿ<ðõ×âçà^¾úJL»;Ö<ÙˆH½EÙ–-²“Ѓ0€Ö­Å~gd]X€X £Gżœ~EZ$'‹%¨ï&?X¸P|êY§Žù²‘:5l´iÃM -‰¢°ÿÚ±±@z=P¹²hÈ%Òšž=�5îÝŒþý÷bîð„ æËEDêlÞ,FFIý~ûMôû±±N,@,�^ˆ¹ðDZcg¼ü²XÝ*?¿ôíŠÌ›'6lÝÚüùˆH�ÅR¼z½ì$t?ŒFÀÖVl7@Ö‡ˆ…¹t Ø·�Ó¯HÛBBÄÏÂŽ¥oûå !7."R¯zõoo®†e)  }{ÀÙYv*,@,ÌÖ­âkïÞrsÉÔ²¥ØÝxåÊÒ·ÍŸ/n 0."R·  ш~íšì$t/……b„Ó¯¬  £×‹O¸#(i™N'FA6n22þ9~ü¸ø™0�+ÄQiƒ¹¹bI^R¯äd 5•ˆ5cbAnÞ¶oçô+"@ô�äåëÖýsìÃ�š5�à`y¹ˆH½žxðñá4,µ3GG cGÙI¨¼°± ±±bs5 D@­Z@÷îÿ¬†u႘’õÖ[âQY‚‚€mÛJŽž’º�¢øpr’�„Ê  ¢×µk‹ùïD¼ðB*~ùåm<ùd4múòòú 1ñm¤¦¦ÊŽFD*5h�˜Qðò“PY €˜N¿²v,@,„¢ˆ9«ÜýœH¸téæÏ0§N鑞þe¾ùf :v bBDezüq±´+7%T§C‡€«WY€X; âäIàôiN¿"*2qâ<œ93 €€¢ªÜ€NŸ~så…#"U Ëx_¹"; ÝÉ`*UK&“õbb!ôz B~"@T$>þ€w¹µÃ­Û‰ˆJ4HLõÙ°Avº“Á<ó 7[¶v,@,„^/vv®XQv"uÈÏ·Å?#w²¹u;Qi5k¾¾\ KmnÞvíüýe'¡òÆÄddˆ°úõ“�„H=ìì (w¹µðÖíDDe ~ú ¸|Yv*²?�•ÅÙZÀÄlß.†Šûô‘�„H=Ú·÷°ï.·î»u;QÙ  ¼p–z @Õª@ëÖ²“Pycb6mZµ+w‘0wn4˜ @á­£…âРÁÌ�!/©ž‡àçÇÕ°ÔÄ`ÿMl9ƒÖê±Q¹ü|`ëV®~Et'wwwÄÅEcèÐõðòê‡F�žƒ—W? ºqqÑpww—‘ˆT.(Hlzwé’ì$”� ìÙÃéWZa';ÝÛÞ½@z: ¢²¸»»cùòy²c‘…05 X¿9Rvm‹‹Mèl@׎€¨œ^¸»s=l"""S«^]¬0ÉiXò âýNÓ¦²“�9°Q9½^4ŸÛð¿‘É;w.ÈN¢mƒýàûmàfûýw 9™Ó¯ˆˆˆÊKÿþ¢éyÝ:ÙI´ëúu >žýZÂDÅ6oìí�=d'!""²N®®âï,7%”'6Vl7ÀD;X€¨˜^téT©"; ‘õ ;pŸ;';‰6�@íÚ@Ʋ“�¹°Q©ÌLñÉéWDDDåëùç;;NÃ’Å`£:�ì$d.,@Tê§ŸÄrt,@ˆˆˆÊW^^*<<ÞÆ;ïôAãÆÏ¡iÓ> }©©©²£Y½ôtàÐ!N¿Òî¢Rz=Ф Р�ì$DDDÖëÒ¥KèÔéE¤¤Ì0'OêâØ±xÄÆqcÓr¶s' (ÜÿCk8¢B……¢�£DDDåkâÄy8}zEs€løàôé÷1W^8 0ć­OʲaÃ8;;cðàÁ%އ††âï¿ÿƾ}ûLþ<ˆˆˆÈr Œüç?@B‚ì4¦g0O=Ô¬); ©‘æ �¼¼¼ÅG‘¢cIII€„„ܸq 6DXX\]]áèèooolÙ²¥Ä}“’’ðÔSO•åhÞ¼9 99¹<ž Y�yó€æÍE?ÈÕ«²Ó˜û?è^4_€xyy•j8/,,D\\ -- pîÜ9Àœ9spêÔ)|÷Ýwزe ªW¯Ž~ýúaÇŽÅ÷OKKƒ««k©Ç*:VtM"""Ò.GGà»ï€Ë—�áí§䯿€S§X€ÐÝi¾d̘16l&L˜€É“'£  ‘‘‘8sæ �b*Uª„M›6¡B… €gžy�5ÂÌ™3ѳgO“d7nªU«VâXpp0‚ƒƒMr}"""R‡¢~�Aƒ??`Ô(Ù‰�Ñ(v>ïÒEv’GUj¡ k_¾Ì 4_€„††"553gÎÄÂ… �;wFxx8æÌ™ƒÚµkÜÜ܈‚£¨øÄT-¬]»¶ø˜››[™£ééé%®u7}ôÚ´ióhOŒˆˆˆ,ÂÀ�À›oãÇ>>€¥¿0€–-�y»cÊúøàÁƒhÛ¶­¤DÖAóS° ""iiiHJJÂÙ³g‹ôôtT®\¹ø¬E‹¥ŒñQEQJô{´hÑÇ�/5)’˜˜hÖ¬Yy="""²@óçÍš‰~�k×d§yxŠÂþúw,@n±··‡——êÔ©ƒ””DGGcøðápttÔ¬Y�:uÂÎ�;‘��]|¿œœ tèСøXÿþý‘™™‰uëÖ•xŒ+V víÚ%Î%"""*êIMµì~�Ó§E ºÍOÁJNNÆÆ�áíí '''$&&böìÙhܸ1f̘QâÜyóæÁßßÏ>û,""" Óé°`Á\ºt ß}÷]ñy½zõB�=†k×®¡AƒˆŠŠÂŽ;°fÍèt:s?M"""R¹ €eË€ÁƒE?HX˜ìDÎ`lm�gž‘�„ÔLó# ؾ};ѽ{w|üñÇ ELL *V¬XâÜŽ;âçŸ <ƒ ÄÄÄÀÇǧĹëׯÇ�!Cðî»ï¢wïÞØ¿?¾ýö[6’Ñ] $6&78tHvšg4íÚUªÈNBj¦SÊjj )ŠššØ„NDD¤Q99@ç΢$!ÁrÞÌ+ ðØcÀ°aÀ¬Y²Ó”¾_{tš!"""R“ €èhàâE`ÄËé9v ¸t‰ýôïX€©LÆÀ—_ŠBä‹/d§¹?ààtê$; © """" Ž>,;Í¿3€Ž�;Zh‰JaBDDD¤R O=¥þýA €�;ÙIȰ!"""R© Äþ .o¼¡Þ~�#G€+WØÿA÷‡‘Š=ù$°t)ðí·â« €“À½–é~°!"""R¹  `äHà­·ÄhƒÚ bóAÙIȰ!"""² Mšˆ�Ò¯_—�æyyÀ/¿púÝ? DDDD B`íZàüyuõƒ8de±�î """" QÔ%ö QƒAìÖÎMÁé~±!"""² /¾(F@ÆŒQG?ˆÁtéØÙÉNB–‚‘…)ê ”Û’“ìÞÍþz0,@ˆˆˆˆ,Œ““Øäï¿ÅêX²úAââ€Ü\ ô`X€Y F�€ÿþøæ`Ù29ŒFÀÍ hÖLÎã“ebBDDDd¡‚ƒ�#D?ÈÑ£æ|ƒA¬~eÃw”ôøíBDDDdÁ>úHŒ†™™æ{ÜÌL`ß>N¿¢Ç„ˆˆˆÈ‚õƒ¤¤aaæëÙµ ÈÏgBŽ‘…kÜøâ `õj૯Ìó˜P«–}!z,@ˆˆˆˆ¬ÀË/Ço¾ $&–ÿã�¢ÿC§+ÿÇ"너ˆˆÈJ|ü±Ø-½¼ûA®\äô+z8,@ˆˆˆˆ¬DQ?È_•o?È/¿……,@èá°!"""²"MšüÓ²|yù<†ÁÔ«xz–Ïõɺ±!"""²2/¿ &úA’’L}ƒ�£ôðX€Y¡E‹€ €ÁƒMÛré’(jüýMwMÒ DDDDV¨bE`íZÑ2z´é®#¾²¡‡Å„ˆˆˆÈJ5i|ö°r%°b…i®i0ˆëÖªešë‘ö°!"""²bC†¯½Œ$'?úõØÿA�Š‘•ûä ~}Ñ’•õð×II~û�= DDDDV®¨äìY±2ÖÃ2Å×.]L“‹´‰‘<õ”èY±âáûA  eK zuS&#­aBDDD¤!!@hèÃõƒ( û?È4X€iÈ'Ÿˆ]̬äÌàÏ?Y€Ð£cBDDD¤!•*‰~�?þÆŒ¹ÿû €­-àë[nÑH#X€iŒ—°d °|9ðõ×÷w£hÛ¨R¥|³‘õcBDDD¤A¯¾ *úAŽ»÷¹ìÿ SbBDDD¤Q‹žž¢äÆ�»Ÿwü8pñ" 2  DDDDU©ðÝw¢Áü^ý `otîl¾ld½X€iXÓ¦¢䫯€U«Ê>Ç`:v=* DDDD7t¨Ø#däH1Ýêv……@L àï/#Y# DDDD„%K€'ž(Ýräpå û?ÈtX€Qq?ÈéÓÀ[oýsÜ`œœ€äe#ëb';©C³fbe¬aÃRqòä\¤¥ÃÙ³¶°±)ÀÈ‘^˜;7îîî²c’…cBDDDDÅúô¹„Ê•_Dlì,sèbÅŠxÄÆ!..šE=NÁ""""¢b“&ÍCfæ,>Å Þ2úàôé÷1W^8² ,@ˆˆˆˆ¨X|ü1wkøèpëv¢‡Ç„ˆˆˆˆŠåçÛ⟑�;Ùܺ�èá±!"""¢bvv”»ÜZxëv¢‡Ç„ˆˆˆˆŠµoï`ß]nÝwëv¢‡Ç„ˆˆˆˆŠÍ�� &ˆPxëh!€84h0sçFÈ GV�ËðQ1wwwÄÅE#"b.âãg"?ßvvhßÞ sçr ^zt,@ˆˆˆˆ¨www,_>Ov ²Rœ‚EDDDDDfĈˆˆˆˆÌ†™ """""2 DDDDDd6,@ˆˆˆˆˆÈlX€‘Ù°!"""""³aBDDDDDfĈˆˆˆˆÌ†™ """""2 DDDDDd6,@ˆˆˆˆˆÈlX€‘Ù°!"""""³a >>¨R¥ œ��ѵkWìÙ³çž÷ÉÎÎF£F�`ccƒ ”º=//‘‘‘ðôôD… ðÔSOañâÅåõ¬ZTT”ìªÃפ4¾&¥ñ5)‰¯Gi|MJãkR_25Í û÷¯/`íÚµˆŽŽ†¢(èÖ­öîÝ{×ûM›6 7nÜètºR·�5 ³gÏÆ˜1c°cÇôïßcÇŽÅ|P>OÄŠñ_i|MJãkR_“’øz”Æ×¤4¾&¥ñ5!S³“@¶iÓ¦ÁÃÛ6m‚ƒƒÀÏÏ 6Dxx8víÚUê>ñññX¼x1Ö¬YƒÁƒ—º=99_}õfÍš… &|}}‘––†™3gbäÈ‘pqq)ß'FDDDD¤BšÙ½{7ºvíZ\|@ÅŠáçç‡={öàÂ… %οyó&BCCñæ›o¢]»ve^sãÆ�P¡¡¡%އ††";;Û¶m3ý!""""²š/@òòòJEŠŽ%%%•8þÿ÷ÈÉÉÁŒ3 (J™×LJJB�5P£F�Ç›7o@Œ�i‘æ§`yyy•j8/,,D\\ --­øøáÇ1oÞÀ[o½ðññ���ÂÂÂ`0еkWÉ)åZ¶lªW¯ŽþýûËŽ"Err2üýýÑ¢E |úé§pssC||<¦OŸŽŒŒ ¬^½ZvD³3f † † &`òäÉ(((@dd$Μ9šœ–ö¨X€HäææVfÕœžž^|;Ñí"##ñþûïcÖ¬Y¥VmÑ¢:uê N�:ØØØ`æÌ™1b„æ¦effâÍ7ßÄ[o½dddnÞ¼ @L+±³³C¥J•dÆ”®R¥JxþùçññÇ#77ŽŽŽ²#™•››N�:…€€€Ç{õê8tè�¦ �£G�"!!ãÆ�ƒ½½½ì8RLœ8ŽŽŽØºukñkСC¸»»ã¥—^«¯¾Š=zHNi^¡¡¡HMMÅÌ™3±páB@çÎ�Ž9sæ víÚ’Z–lµhÑÇ�/µ”obb" Y³f2b‘JEFFÿ»s?Ú¶m‹ÂÂBüõ×_²£˜ÝåË—qéÒ%ÌŸ?®®®Åÿ¾ýö[deeÁÅÅC† ‘SU´¸¼w«V­”^à£èÿkñ5¹Ý²e˯¿þºä$òüúë¯hÖ¬Y©¬mÛ¶Å·kQDDÒÒÒ�””„³gÏ"66ééé¨\¹rñkC÷�ˆDýû÷Gff&Ö­[WâøŠ+P»vmtèÐAR2R›3f 22S§NÅ´iÓdÇQ­_~ù¶¶¶eöVY»š5kÂh4"&&¦øŸÑhD@@*T¨€˜˜Ìœ9SvLé233±aônݺ̦Rk7pà@ÀÖ­[Kß²e húïNnn.V¯^�:ÀËËKvi<==qôèQäææ–8^ÔïðÄOȈ¥ öööðòòB�:u�’’‚èèh >\s#©¦À)XõêÕ =zô@XX®]»†  ** ;vìÀš5k4ýIÔÖ­[‘••U¼*Krrrq¡Ö§O899ÉŒgV ,ÀôéÓÑ«W/ôéÓ{÷î-q»7@=z4ªU«¸ºº"-- ëׯÇÊ•+¡Éé‹ŽŽŽèÒ¥K©ãË—/‡­­-|}}%¤’kèС¨_¿>Úµk‡*UªàÌ™3˜?>Ο?�¯¾úJv<)ºw}ûbêÔ©P¥¸ }êÔ©èׯ:wî,;¢47nÄ•+W4=úãÇ�G¿~ý€ñãÇÃÕÕñññˆŒŒDÓ¦MÑ»woÙÍ.997n„··7œœœ�˜˜ˆÙ³g£qãÆ˜1c†ìx–IÞ$¤(Š’™™©Œ;V©Y³¦âè訴jÕJ‰ŽŽ–K:OOOE§Ó):�N±±±)ñ¿Ïž=+;žYùùù•x nÿgcc#;žË–-S:uꤸ¸¸(¶¶¶Š‹‹‹âïﯬY³Fv4Õ:t¨âìì,;†³fÍRZ¶l©T®\Y±µµUjÔ¨¡ 8P9pà€ìhRegg+“&MRêÖ­«ØÛÛ+žžžÊ”)S”›7oÊŽ&UÏž=ggg%33Své¶nݪøûû+UªTQìí핺uë*aaaJjjªìhRœ¯‹ûüŸÓÍ�ó ŠaP(ŒF #€…@€Â ü §§'åååŸêêê455eýúõéêêÊ›7o&½ßÑÑ‘òò_ûK¹wï^ÊËËóàÁƒ‰¶;wîäôéÓÿh ÌNîà===Ù¿zzz²dÉ’Œ��çõë×yøðáÄíê×®]ˆ ’$ÃÃÃΚ5k¦Ý×èèh³téÒ”J¥$É¡C‡ÒÝÝ�/_¾üÖq0óþ3Ó0{-[¶,+W®œø¾}ûö>|8­­­Ù±cG^¼x‘†††477§¹¹ù—ú(•JS—²²²_®€ÙË,¦eÁ‚¹páBFGGsùòå$S/ÁúðáCŽ9’ÆÆÆÔÔÔ¤­­-OŸ>Í¢E‹ÒÞÞ>ñÞ÷K°öíÛ—îîî|ýúuÒ2°¡¡¡â Àc€iÛ¼ys***&íÛø~Æ¢½½=}}}9uêTÚÚÚ200�]»våíÛ·?�Ý8yòdÆÆÆÒ××—Ç�O´766þþ�P8€i«©©I]]]^½z5Ñö¿[ rõêÕtttäøñãI’ÖÖÖ466fÛ¶m?ýíÅ‹§¡¡!I~iO ³›%Xü’Ÿ�arÿþý$ÉÎ�;'µoÙ²%ÕÕÕ´.f7€i{÷î]FFF2þü)Ÿ�ŒŒ$Iêëë'µWTTdÞ¼y¼>f/€i»}ûv¾|ù’uëÖMù¼®®.I~¸/äóçÏá€'€iÊÑ£GS[[›ƒNùN[[[’äúõë“Úoݺ•÷ïßÿmsæÌI’Œ��ÿÃj˜mlBàÿzþüy>~ü˜OŸ>Mºˆ°ªª*7nܘ˜éø^KKKöìÙ“3gΤ²²2k×®Íàà`Î�;—¹sçþí­éË—/O’œ?>7nLyyyþúë¯TVVþö1P,€|;&÷Û}UUU©­­MKKKŽ;–L eee?­{åÊ•455åÒ¥KéììÌŠ+ÒÛÛ›­[·¦¶¶vÊþ¾Ù»wo=z”‹/æÄ‰I’—/_fáÂ…¿}¬«ìëÏŽ1€ßèÙ³gYµjUz{{³{÷î™.€ €ðGܽ{7Ož<ÉêÕ«S]]�þþþtvv¦T*¥¿¿?UUU3]"3À,þˆR©”›7o¦««+ccc©¯¯Ï¦M›röìYáà_Ì PÇð…@€Â @a 0P(ŒF #€…@€Â @a 0P(ŒF #€…@€Â @a 0ÿW³*¥ ø«IEND®B`‚ipython-ipyparallel-14e3c43/docs/source/tutorial/figs/two_digit_counts.pdf000066400000000000000000002220251520071063500271540ustar00rootroot00000000000000%PDF-1.3 %Äåòåë§ó ÐÄÆ 4 0 obj << /Length 5 0 R /Filter /FlateDecode >> stream x+TT(TÐH-JN-()MÌQ(Ê ˜(€ ŒNÎUÐ÷Ì5Tpɪ“õ ë endstream endobj 5 0 obj 50 endobj 2 0 obj << /Type /Page /Parent 3 0 R /Resources 6 0 R /Contents 4 0 R /MediaBox [0 0 600 600] >> endobj 6 0 obj << /ProcSet [ /PDF /ImageB /ImageC /ImageI ] /XObject << /Im1 7 0 R >> >> endobj 7 0 obj << /Length 8 0 R /Type /XObject /Subtype /Image /Width 600 /Height 600 /ColorSpace 9 0 R /Interpolate true /SMask 10 0 R /BitsPerComponent 8 /Filter /FlateDecode >> stream xì�xTUÚÇßô^I!!„¤JÒ;‚é(EWD¤‚ ‚HqÁ.REEED@pwDWVÝýÖî"–Q�ùþ7'œœ¹÷Î�É�É›çúè#­ãàØ±c¤Þú]ÁAÀN>ŒÞTt‡~ÿý÷§OŸFû¼{ðÁe’1cÆ ‡Ù³g£×tëÖ­õëׯP¡Â‰'�®sìÓ§ÏÒ¥K³²²ÐÌ—,Y"Ó²‡`XV€P8äf >üÂ… ҢƄßËö à…¾Ð»ï¾[$×q£u ²’™/X° J õЄhú¨´€€˜3}útX¾ûî;„¢øÃ˜à�n»í6XäÍÈTìaXV€`DC ˜p÷÷ÕW_©*yÉÁ[n¹¥F�¿ýö›H«ãà©S§Ðí‰^Í?üðÿûtèÛÄ \ýõ">&·€kýû÷G£òÝwß%Ť ¢ÿ÷¿ÿ•°†G,"üç?ÿAVˆðÁˆøøwРAhQž={VZØÃ °¬+À @4Ü—þ0¦aƘ‘rÉ ýÿûï¿«ByÃAôjC/½ôÒO—þ*Uª„¶¦ÍH2"Ÿk¯½VÀ3QŸ|òIøÑÛ)ʪU«–<¨å¢=ˆÿú׿`=z´H¨û·Zµjì`ÇdT59zÀˆT�ìgXV€`t øe|P@M)q‰QµD46?þøc´æÐèC„gŸ}V„†……�?^�¹sçNDxå•W`¼ë®»ÐS ¨©¼†ÿèÑ£" Ö–/_^M.n qT#ûYV€`X�~áàñãÇ1}Eþa¤“XZ´hË·ß~«+Q\öíÛ+,äB ´ìÐ2UcΛ7üûßÿ#†ü$Õ8Ò�ŽSDP©‡.Öøøx™¿ŒÉV€`XV@UÀÝúAÄÁr<üÝÿý@ >ˆK™¶}ûöh£ÉK�G7>ˆPLõDû÷ïÇàà 7Ü€Ñ@àR¦Z³f JéÝ»7ÖÂ~Ï=÷`v(VñËX&� ¥°cñ�wÞÁ|˜©S§Ê™3?þø#JÄßsÏ=‡PÜ-rÃôQ™œ=¬+À °¬€©íA DüaìOzd&H»¼Ôytëè �¡tbp�5Ù¥)®_¿¾Y³fà#ˆæ!úB1£F†Âƒ®ND щ ä ùä“®]»ŠÃÇu¡eûrΜ9øð`Ñ·|L{Ÿ%Ý'Yæ0vàÄNeØaL¬tÀfž¶‹þâ‹/ ‚éÑ„¶ó,VB4ý€Á>Dã|pHŽ?u}}±î�#³îÀ–¹�<òËÈÈÀBÔœ­ZµÂ1ÓòàNw ÝÙQ{¨ ‘±›„»øîìøÚ¶k×N†+7Tú=¾y7€½ú±³ñĉ¡<–N»“K¡±Ho§¦Bð¡C‡cŠ*¡º?l}lŒŒ} ±±¤8Á?cpš¹1NI[ŒjãÎÕÏ’—7 [Rgû�—Å£á?Ü9¶jÁÏH¼GlóbŒã¥E¼Dë£ ½ÌÊ^4ÁA@pžÉ™ƒöôçTÖ ˆ�*V¬ˆ:ÛaW@,Œß>ë„îBuÄ®¹8¥ú‡~pß�©°–V†+7Tú=¾y4ð8�ÊàÈÄÄŽU5kք禛n2&Uèu×]‡ªXý{á…t‘ÿô§?!œwûí·ãÀ,‚ÆåÊ•+uÑJúÒ¨¶î³äå |ýõ×ò€u$±ý‹ÎËâŒÑpˆCíÚµ�vlŠgñ…¤6 U“N$ZàƒCræ ª*ûý¥NHÙ¶m›ÚúÃÑ™Øÿ5ØóÏ?o£mä`šDTnêÞM¦ÑJ§1À7•ðú¼é‹FÝþïÿ¢‰$ôØ”›FV¯^§ˆ·ðå—_…h–ÂÈ÷bä _J|{/ÑF3Ö/ë÷Lo%ZäƒCræ ß_ gèN�‡zßÁI“&¹‹ í8iºAƒ8 ûãE‰ýçu4­=Þ{ï½üü|ôž¡%Ò±cGl0h¬»pr|Û.áR÷'ïÁÔóÆotëÖ m[töâ_œóúë¯Ë˜üñǪU«5j„{ÀÖOð¬^½Zý1àn<O‡Û�ùȧ;rä_C¯rtt4NRd‹›ÇQk8Ú (ì=^dggc‹ªÏ>ûL¦5õàÈì܈‡Â–SÈ|„ ÇŽ“1u*áÒK "¦/ÄÛGºý¯°�$ŒøWÞž‡ÁˆÎ[<8žZœbý—-[†cïðʰg>ê‘9è<ØŒ«sçÎò³´oß>ëÏ’HÅ0X ñÑŶ]�¯R毾kn‹Ñý‰!Hlþ|ï½÷â¤!d…;Ç–Ôølãã'ó1õàÕãÅáõAÜ^(^«Œ)ŠV‹“ßGz� ö=ÞœÈ;ø áD¤+VÈð¸û<«qJÔ/88™è~’3Kô5qæª>ø ¾ƒèÝR�F¿Àerr2zS± êœSV·n]ëñAÔ¨ÀñõÇzb14‰KìÁ‹usä�áåË—£@´Jdלñ~¤ET¿€,FXfÍš…ú5ƒÚ¢8p rCí�£®ñ˜ðàRðõ†šDdŽ Êøt.êa<(PÃL‘ÄÝÍc»E ¹a›â3f -¶XD-úÚk¯É1zp**[ÔuàÎÌ™3QåâÎQû}þùç"2¨‡F¨'´RU5f(,‚DA¨Zq *6C§è²Âø2ž‹«vqò8~H£¨á{öì)Ä¿ãŽ;€<Ü-~–àS„9!èPÅgIôÓª•9¨üÞôÁ …€ø)ñ…&êS 5dBܤøq‚4Ä[Æo!¼Dƒb2šú®!»NUÄGÜ0 ñkςݧq¸n~Ú´i2£?uÒÓÓ‘ ·ŠÀ«߈—_~YDÆ0+Þ#"à‚‚ð§û�¡æ %ñÀ·/''÷€Ÿ¯¸DZ()£¹û<Ë%íœJ´Ä‡äÌÁ’~Sœ¿P³,À2|�¬Óâ›… Í@Q -~½‹:ÁH |‘Eæhˆ¡Ó5$$ç‘IÁ×­[‡â�Ê¢î2þÈ—ÉuÜ6rC³Bm%!Îwß}'bb{DÀ¿òxk ³;`D�ˆã®ÞPëFÄøÀ�c×}‘ÿâ6døJ‹éÍ£ÒC4PFƒúàdUÕ¢ú„_¨3Áià��jTiw%5—v �G¢õ�Åð™ÌðÌ™3Åiž“'O¸K»à`ëÖ­ýõWaÄ(0ј¨ƒSçä822ѾÆÀ–L«óàó†· ñÕÙ8ŽD‰ÖŸ¥›o¾qðIfˆUÜŒªh¦ïZ�€äèFª–-[ʬ„Øê,ê¥ µz€nÁñrÕ·�œ¡³šÐÔ/™.�ÜEÛÊ 9ZÇ"‰»Ï³i†%a¼�h©É™ƒ%ñv8O£wÞy'¾AèH4©4 M7¬ãP ɘº:] H…¦“Œ <‚¼~á Zg(ç¹èŠ�—:t@œ*-ðˆá-œ>#Œîê ÓºQe’ã‡ÚkêyܦÄ\MÜšêmXûaÑ•ª‹††²’?Htšë"›^ZpãÅ8Lm@t¢¦ÅaåBa ÊÐˇ@o€.sćjH»à N|Ѱaà œh€´ÿøÇ?T£ê;ËCT#ü袄ÝÝg 'ª£ ‰�Ka'OžŒT*æLßµe Ðc­î,.Á}Néâ`‰ìÏ<óŒ´ãÒKâÐÈ„ðà$#$—î>Ïj’õ N#ZáƒCræ`‰¾&Î\(€|}бƒõÖšôéÓ1:¤‹†´DßR¡ £K…þ°»«»Ù%ºLÄeJJ *:4¬LCaįnôƒéB-ÌÐvwõ†iÝhdˆ€f¯,ÂôæÑ”KÃð«­ŒsYÜ³È ]¸PiÓ¦M2gáA�"ì²WͿԕ…K4Äðƒ%ÊÓÉ‹ÅA|Ì:“¿ tùËKLKà à•I‹ðàµÂŽŽziÇ¥—4¶ÄÑ÷‹ä˜å+rs÷y–e•´‡9XÒ sþþR#Yøîàç´n”Ç4ѪÒÕ]ˆ‰>" bFŠX»v­.O îÀî®îBdS”è2—8 ƒ/¦Aˆ+PŒ0Â… awWoxY7¢« #;²w7�A=Œ`‚Ëxvü¡“Õ,š“2¡Î3jÔ(DS»”E¡žlJ”4Q(æGáNúõë'n Xý¢êÇC$³Pd{V݉&Bñ¯½Ï’è‘ÀÙv2áAžHÅœ—ïÏŽBbˆ9à7�h]þòR4ê�¿�Ä  ÏVÆDn^rS­d*áAkÉ1I\ºû<ëR•Ü¥àà]D«}pHÎíÁ’{Gœ3scÐ?‰®o±×D _Oc{cú°û…ƒh¢eg1Õд=ˆøh$Êö êdܦFè¤hÚ´©Z�»#Ž—”™£÷»`€ …¢_ZÚuwíAÑ X{w%aÕ>I1OFŠ;Gÿ'žH7OFPD³ÇA{íA±¸ÒØÝÔ68(ß:<1¾,Æþš4i"í:�»öàæÍ›¡UÙnÎ$zÔ‡äÌAÝlj/ý¨ºtðÄœ79QÁcæ .D]¯¦¦x3>ˆ&]þuêÔAnœ?>"x³~ÝŒˆ¹k×.]ò+5A7D%f6¢‘+¢ýòË/ˆƒ./™ tya^¨Z�{ÉA/o^Œ�†j¡ªg|㮌ãƒH‚»BrÙÝ]©Yéü"‰é|Q]Lq)žH�‘(6?Á!ãj|ÌŸÄ « 7t�,ÙÅ�®q sƒQ¨»ÏºdÑdÃ�%]ß,¦Y"•1çD÷,ê“J?~Paä1Ý-ZÿöÛoj|Ëb<­E™¢yÙDLõ0wä ¨*[—¥¤=8‹h�É™ƒòãÁÿ* ê4Ìë°žä¦+‹£1à KŸä*i oyœ/ŠZg¨´Õɨè&ÅFwuŠÆ¼zÄ‘ó9u7£^¢Û11L©k›Èz ó1¡E‹ê|ÑæÍ›Ã¨NÕ@uŠ b™¹È_T•68hzóhÊ[ùôÑG¸49ÕÇQýè‚ÃÌÅdiCº*²ýËAôhéׯ€tP§­Š¦^®ü¡îEÓÐQ;<ýÈA( ZÐê|Q4«¡¡õg ³G�ÉRC4qŸ0Zpï 0›E¦‚�'ºU$øPa¦+¦R«3?Õ$ð‹!E¼8i‡¤ø6áåâK#ŠóžƒX‚)@"-~ÍbêD@'°°”ÞCô¸É™ƒòãÁ?*€ðøºaL 2‘Qÿ°ˆÉº ±~}‰ôGo6領تK&4ÖÉhÓ�/¨(°^£$hÊõƒòk‹äºJËñÐÒÄü„�!ÌV•E=¢"Ö¢ºÃ$´7ÕNN±~w;uêT<8<(Ë÷Ô¬°b FŒÙ(!Pëb•Œ2šñéD�®_ÔôæQ BvT_˜©ˆ9üøéŽ ±a±ÞÆ�Ÿ¨0¡�aÍ…¨Q1܉ŠÎã]ÉÒóâ‹/¢-†?,EÇs]sÍ5âËÐd� }žC† Á²>ü¡/T4ùÑ! ã�ØW ïªBsÔꨊñ@�†ÜTE …QÅ%ìø(¨þ4Ró~4 ÑÑð jàÞ  þÕ%Ä¥ uý Ráƒ�.q1 -YŠîVñ3�\¢ŒhøÃ cÿdŽÏ<éx‰x•’ƒ™�уqa±~¯7 ÖâÎÑeªFÖݶ¤úñaÃ=±h‡âàã*2W7Ö+%œCô¤É™ƒê«g¿¿ËuQ_áK§ûS«wʼnýdÀ5ð½jh‚¡bGn2¾))МÁ0 –ŒáÌ Äºc”®þ´Æ¥îÐ+ ‰ßíj²,Õ³}ûvô˜¡=‚Jë×PË©=¥hà`l#ƒZu ØOFM.üø‘€YC¨ P±€õø™íÍÓ!-fM¨ód`1ÞüÇŒ* }Ñà5n¢G×›Ž_¹Ÿ €ˆ:Äѵ|M57>,òíCOñ'>êÍcu'( @ü¡Dü€q7�Sì³ IñPÐʸ'€N@qW J×q÷£5‘ÍU¼hùYBÃÊ˜ÐøYÂWÀWì'ƒI•ØODØ£Êx«P=çXÕ(´Â½aÒ/浂˜È ?ä6õ2wã~2ºŽM$4Þ¶inâGzòhübÁ;BWÚÅjäRÂÁùDÏøà�œ9¨¾Vö—1€<´eGe{:~œÒ¯zDÁã\ÜÒ炃¥ü>Å|Ñ{‰Öûà�œ9XÊ_4ßž— `#üvU#ãäTAÆÅõjö³~T@72‹³0sm:9ÄæÇ²J:«+ˆƒ÷môÁ!9s°¤?Nœ`À`f]bÙ›0&ô2a,ɸ10÷Ã¥\…  ÿ[` F¨1¶ˆÎvtMcŽå•(ÅÄA6±É‡äÌÁ+ñ#Ê÷lTó 14ƒùl¨|Ķ&V§y“°…ð¯˜I…aAŒ*bPÍÀ=zÈ­8ý[Pr3F Ðâ!úE$zÁ‡äÌÁâ*ÏñYV€`Jƒ‚ƒ8lb«É™ƒ¥ámò=°¬+À WÁÁeDÛ|pHÎ,®òŸ`XV 4( 8¸œèU’3KÃÛä{`XV€(®‚ƒ8ti»É™ƒÅUžã³¬+À ”W½áƒCræ`ix›|¬+À °ÅU@p‡.½éƒCræ`q•çø¬+À °¥AÁAº´Û‡äÌÁÒð6ùXV€`Š«€ààŸ‰ÞöÁ!9s°¸Ês| p(Ì”)S°M=¶ÈÆæÕ›6m²ˆ|Åa—Hì�Í¢±g)qÀ>Ìîö…¾âMwÃØ[Òa�ýJ¿ÄÉ#86G™à â l�}¥?‘zÿ8£ 'Mà“‰}$ð)�>}z™ßYWp‡.í÷Á!9sPý ±ßGpÊ*ü‡p¤êRõè=3¿ìÉû÷ï�Ãp¢NÀY68ÕéîÝ»/û�ù÷p¢+8ÀaØÅ¿9_ÞÜpÊ$¶y¹ñÆq° ~Àà ‹E‹]Þ[òcé8TGBà˜¤—^z O‡ã«@Þ={ú±ˆR˜s°¾”«ü–pÀ§¶ñëÕ)NX+Êà€9õAÎ�;‡£Qq ½j,~&Õ«W/ZT–Úƒ€;ŽmROº/oJ}ìhŠoSqX!,8ÂIZÊžGpð)¢C>8$Dz*{úð^ìç‰ãáTêáA|Ñ]ø› L‰ØÍ§è¦¬À”òì³Ï¢1(ÎÑ+KG"~ýõ×�‘1ð¥ˆC¢ÿûßÿÊ¢qT4Ú¿ºCXdhÙðâðÁ÷|pHÎ,Ÿ‡ÒðÍš5kÚ´©z'G�1ؤËŒ¿´�Œ¾}û–™'±A8¡cÍš5x"lZ^–8ˆc pÒ믿ŽCÞÅñÄ8¹,1[ÊãÌå!C†|óÍ7Ä“âyËpûW|éqø Ã‡äÌÁ2S‰]ö©^½:&!¨·qìØ1ppñâŪ±ÌøQç`æý÷ß/3O¦·nÝZ8$gz”š#x©úE1]M�\VûEÅ`SYšmˆ/iiiÓ¦MÃ1ŽâoðàÁh1¡ï÷Ì™3ê;½Býøp‚z8¬YÞÿ—_~ Ë’%K¤åŠöÜpà ˜µõûï¿Ë§£óXì#-eÏ#8ø¢£>8$g–½ÏÆåz¢±cÇb¦½qž º¡.×-•D¹‚óçÏ/‰Ì/Wž]Lÿz÷î}¹îÊ�åb4O÷ñÇË<Å#/]ºTZ®hOµjÕ° U}„ýë_xäGyD5–1¿ààóDûà�œ9XÆ>—ñqvìØ�ïÝæÍ›å=tîÜ¿Q/^¼(-WºøÃ3bnÞ•þ ºûÇ,ùĺHñ?*U ¨áòÿø‡.ò•xùæ›oâÅ©ÔCŸ6,ef'¬ßÁþx�òí<ýôÓx@,t•–²çÄ!¼ÿôÁ!9s°ì}6.ãaÁ`rr2&ˆbuyÙ[G�>4T,˜ „ñ4råße¼äŠ.cリ{÷î ;^â¾}û–-[†å„=zô(9œ3†ƒƒƒ±·ÖÑãñ˜èœ©]»öùóç|'�,NpðE¢ùà�œ9È·VæËÂXöUKOOÇŒ 쫦¶ ËÀ³c3T5@¡úKx4ã#`}ÛOæ×_½ë®»²²²° æUby�:šfTàŠ³ C¦]»vXËÄcN˜0áäÉ“WÜSë†_!ú‡äÌÁbÉΑYV€`J‰‚ƒ8ŒþK’3KÉ åÛ`XV€(–‚ƒ;ˆ¾õÁ!¹GêvžÇl@LGö�­ïI“&ýøã�º›Çê,\Eç¶=Ÿ7ož®�û4bôÛDGG7oÞ¼Ì,áщÀ—¬+À °%§€à £?æƒCrkwžÇ:#¬*ÂN’Xu‹©V˜s ÖªU }ïòa,X€At¿c²Ùƒ>bF½ ÅŒ&ŒÞ¢û'ìÚµ ;ú‚§ˆ)#°‡`XV€ð¨€ààN¢ã>8$·æ qçy´u­?b‚iëׯ÷|êÔ)œ=‡Õ:òî»ï>`Q®ÜÓ•1ãND¸pá0ªÛ—R¦e+À °¬+`ª€àà[At2ؾCr z¹ó<¶uå’".>,oû»ï¾ƒ4¬s©Y³¦ …­ˆ€½(U#ûYV€`X w‡Ð¡ö’»ã ÷;Ï?ùä“ Ø+¯¼"î3“q©;ßÉ�î*T¨0pà@õÑD‹ ]U#ûKƒ˜wMéë)k?Uqƽ»Ÿì8&Ò9zQ@Ý`rÐEíß`G4)°n,Qàœã °£?9ä&ï§¡ë}\Ù!8¸7Œ~ްï�ܽÜyˆØ–PÝU«§Ñ/ª«Ãsrräž?Ø¢ [Ô8ŸèTÏoUCÙ@ë^ûˆð+À °% €P³WËr0œþY ÷xu .r-Üô‹z¹óü?üP·n]´ï°SŸ| æ ”¢ x8 }öÑ$´ÑŒjm#U€ƒ(Î^c0½u{ ÚDÛÓVc°uE› ÜDqvƒUì& \c O{�ÁÖ�ì·"ÔD«s¨ö5Œ/õ¤àà�H:cß!9þ�•z'^î<�Ù2 4@‡çG}¤&ý¢êôQ„b‰„ìÅf#Ü/ª*Všýâc¦á,×YlÛ½ØIr�¿ž¡»[�÷ÛpUº×´‘ Iœ£) n 9‹ïºgÛI…‚bÏ|`G´Ø–«i+ÊšHçü„l¸îíì¤Ñrg€Ph Oq+ÃBFÑÙXûî@” ½Ùy^@+&>øàÝ�c5:9�ódä!5Ø‚Òtž ¦Óè²âËË®sÐ옃¦x 0Qœ]œ1ÍY ‚¶þãàáXú=Á¾Cr#‘=î) r—³Gœ�==¿Þ”–1ãC"CSêWì¼éF‘ä–?5_Ô%#¯jd¹èà°�¸¬Äº“ZŒþqŽu†9xz8M©E£)2„ê—£Mí‹öa[ÖŒ¦Pb8…QJ$õªLö) 5ÏÙÓº‰Óh ÞXLAq©´©«ÉЉ‹“ ;Žb7â[뙄ª“K½a\Ìñ/Â&Ž J¯€÷\·vÄÓkeªÐ!µ×¦¸ ÜjêñbžÌ<¢–DñD¡D‰»&YHtºÆNT‰h‚kÝŒ�ë&f5%Š+È-�¾ õ´úÖð‡Ynóô8xúo4eU,O‘T¿&mZZ4ûåâÇ´t:ÕªFáMÍëÓ +ŠBÝåìa|ðþÓÔv %T¤°HʨOÃ7¹Ä|ÊנЊO§–hÑO.¡º¥~ìÍ$ç5ö�#S{'¨ëtµ_–y^{í5€Omb¿»ŒŒ œ³¬>»·ŒÎ§à$ª°–²öPÂB•)fBÁqÝ–2wPÆVЍM¡Tí¤;º£•jïО’’hÕ#´sݢ܂Ð.DãˆFu%m™§[f]ÂYU¢H¢nDÉPE‹TÈYu(­/…šäìŽVÒžß‚’hí|Úó �é¯}äâÁcµË©Ã´ k©[žv¹Õ ­È�Õȧè$¸–nÝCÍÇh9Þ´¡0IÞíJ]æÒäwhÀŸ)¦UjDKÏ»ÍÐ�Äà`uûÎ�ß>ÌAµÞ¿jü£G�Ž��W©·qãF�g`©xÅÁÌ× À§´c:i°«qQƒ]\ )Oh0Švß5_QP8%O·ÍÁ_о|j°cʨHÿûECáÙÓ…@\´P‹æ{{°Ûkhe€«Ô©zLF<ƒpºÖ_·WG rþúA¶9øZg­šVÛ€�2(#šþe»ÏÑx"ºç:“ "ÚZrðµÅ)mÀNYòþ˜\Ôîûb$Å…ÓKÝ´˜¾s0ò… �Hm†tÈ ª˜súЦq0.V2Î�%³�(ŸÚÑ6\T�´ &ºÅS&ÈG:Z) »Q«R]Ú€×´ ïQâÈêÜÛd³ Â8’w¦ž×Õ>äj°SKÊH#´�ÄŽÍ‹€¿ÿ�R’¨g‡"‹ižn±Ž}M+OmÖèD ´ì"Íý–‚C¨ý�EÉoÞªE¸®ÈRríA ְwÆíAµæ¿JüÍš5kÚ´©ú°G�×­[§½â`Âh ާ¡­âFí ^ù Õ8OAQ”8¡(4ŒéLá9.¥kTm÷™úGŽ øøBê‰Ï<¥}áö¼åÒê/¢¹ äI´uÚ8åõ}w¢´Hψof"¨ùâ®ÒbôJiJãèæB½�í4¡(ãHÏOhKùÆÁѵ(>Ü…z»7 ˆƒ+QßjÚ¥_8:b(ÅÇÅür\2.â©?C´¨ÝÛ 9�À¢ŒcáQ%Q¥zE¡Ý'�`"eb�+¨Á)ä�GRÌÔƒ ŠS©‡~QüÝl€Ý]DaDÙ»K¶¦¨’ÆÑý(?ZþQ„¶�K¡%ܨY²*RïŽEA°‘ý:»XdVÒã[ X³ÑOýQgØF­¼)ïÒÈç5‰vKÎi–š]Š,2HxüجBΚö�£Šö†˜ƒjÍ•ø«W¯ÞµkWõa�;.^¼X5zÅÁÈfÙÔ…kÙGµª¦Â:ÊþTó¤­q M¾Cû^ã7ã%š²O56iBM» ÏñWí ·z¥‹Ñ_¬Ð,+­i%gƒ�Þ†òÚ­ë«…¿Ã“ZÏÔ ¯Œ0I‹¤˜©§Yyjšê‚¼£}µZ{]«"ã…›é÷›é³4 ›ÊGZ…¦Y-ÛƒÍ*PS̵SâZPZ Æu(1‚Ž�ñƒ›4 nÜPåZÔ_÷A´ˆ•Á¨µCB‚RSÑ©”Q1lܨ˜oþ¥F6ú=Q,«`ÈOÜmD_%Hi[åÅ4 1J8ÀS†.œ2P CM˜u¡ÆÁh#þº»MQüÉ.S5I‘_âÉÔÓ¬5­çµ£Û´ïº{5ãÊÙÚÈà³÷ÆO¾Kè&�Ž¢}ϺÄ7fë[€W•fT¹©K„éGµòÐè“@”°{èk­EiÑyüÈAL’©eß9ªjo‚9¨ÖüW‰¿xĉº8LP:9ö'àV�bºº@­Ú1­†I]LY4OÅÍ.¡©øqDÕŽ»½æ`µjÔ¹“ ò>ÿ·ö]\0ßÅè/&VO©Üµ†¤<#�Ý�òŒ�¾ßÎŒN‹MkâM5¡ð[1k4U�§®ôWšŠÇnÔ*k JcDˆf�ËŠ¥zÙe�Â8•wÂ_=‘ºâ·´çØè‚âZjÆoGQB8…"Jô½_4¨ZÕ�NTœEÿû#è>6ŒáKî‹xèþ¨�¯D½ùjø=3(6ódbN|¡Æ×ù=a ³Pj¸Æ™Y ^—‚&!ž)²€\à Æ¯+›TnêüE�2  AÉDÕ\í·k•,up5"&p‰QËY»KþFN©–ê•©k®Ó~SÐâ?—Ï °0͇aÄ7s‰¬f%ýn±Š¥V§š]]"Ì;¦eÝ}1Ýù¡æéñ`QèäýšÓi$þ0’X«{‘«Š�Q_é#~¨;Ð_QǾCrßïä*G{Lô‹6iÒD}(ûý¢¬ü®V±\ýÜruÓ£+Ä ûbº‘}ªÅR ï„ÝéMíI[:P‹4JŽ \Zå©0Nå�ð[s°[6åÊ—ruŒƒ‰á,ÐÙÕKKfaDK Ï„ÎÉ»•LÐ~Äñ:ö©—.œ2PÌKŠF"&íXç6GâÉÔcÍAм{<íŽv?E#zST$m[í…EØ’ü’ "Î5m(*‘ƼJœÕÖȧÕԦ̈́G»ÍÐ�íAL’©gß90bì3‘Õº”ýWŠcÇŽ�‹‹3ΓÁZê#xÝ/ÚÄ¥q'ûE«þS«jüÝ/Ú¸‘KÓ¯ÄûE]›xÆ~QÌ–Im�•3ø£ÛTä™ú­˜5šÐ/ÚÄS¿¨Ìá×Úš.®íGZè¹D1‰3Õƒ~Ñ&Ø‹C‰#ûE·\OaÁtx ý4¾Ð�ckÓÏãéü$—$jr•P¦~­_´Q5HíUíÂOÉI¡ýûíÒbÉ,ðË¢_ôOÄdAs Œ³]�jkryÙ/ÚL«yi¼�D¿h“º.\“ý¢ÇßA3Ýq³KhçVÚ¡)R¥Ñ-¶@:ô‹f5q‰ ûEºà{ºöz­ ‡¥ghóE�N‰Q�Ç�Ì!g}ûΑ£½ îUkþ«Ä¿cÇŒnÞ¼Y>oçÎ�333/^¼(-ðxÅÁıÚÊ·ód¢ÍæÉÔpáæ¥NQÕ¡@Sÿ¨›).ÎlžÌn8ú«_´ÖئaqÆy2ýÞ"0' ˆƒ>˜b >�QÏ)×&áØ\Š3›'s°‡y£‹,rqèŒk&.— ãT` ?¸†¹ êìP1OæàšÛTk,™º—1iÇM¶Oî<¡7ÃŒPwódŒ©°ÂÂ7¢Íånž úçà £‡‚ƒ˜è¢²Oõ[s°aAžH.£‰y2£ úB£ V2Ê8n=O¦ž±(.Æ|ž Ú€À‘:•9̧1\hš›0ºÅ(Ö|,Eę̓™z°(Õ‚“4ý#Zü -ý]‹ÜlTQPÉq“dÙwŽšÌAµÖ¿ºüX0˜œœŒ ¢»wïöi}æ­¾T;?1#44óÒº Ì|HÓ¯›(7Ã6_~Qû.¯¦ˆzù)#£hÅ„ §¿8Ø}ÇÍ(¯óæÂµó€ZVçœØÌ„[..†¿‚ÉÑ“u¼swé)¿°6èÙ¬¬�ïœI™1tq” ì~F©‘Ô#Ë$¨¨7À Ûѳ 8eÝDçÊ”KX8ÿåHÚÛ¯Èau!n¬Ï5šåÔXûŒ|qôŒxf�D^HÇv˜c:A4ò/Ï"2 ed£Ç=°¼FÀË$Ëðë=Ÿ‹ ,X¹J„C #š‡å.]Ê$ªÇ-³ H7D«R©ŸB=ÌGÅ2 •Œý â`ñ¾uVZ¨°„U�ø.l~¨ˆkhñeVÐÖM|ó¶tÛð¢ ÄoߌÊáWÓ'VÎ-¶@±q;´L‡o.Š“Û™3µu:Æá²ÏÃÚJŠiGL‚Dd?¶¯%'Ðí:æàÕE>×§=sæ öUKOO�ˆˆÀ¾jjÛPFôª=ˆÖ 'kD+í6¬£ÿÔ°Ž>“ªŸ²ÍA` ““µ ¢¯oׯ£ÿæKzîYÍ Áô’ Z±\ó¿ùz4�mLwÀ’v,ŒLŽÆÑ^»ÇªëèÇŸ]P¾qfPpP›=Ð<”î¦Ïî”i�ž"B (‚°`£~˜ ºûz—uô?£6he zëzÚ×�kMu ÖÑ;zÙç hˆƒÉ‘Úd˜Ý}Ü®£Ð}Ÿ'�…tÈCo'&ˆFnߪ®£�þØ�%öëë_DPøÌiØ%¸Öµ1'¿2âOZ,™%ø…á´¿0ûe ‘ný´‚É*éDC V¸×+˜5 –©àÓù= àÃLfXG/ÒV+h3b¶ªÇ¬^š¢ªD�ž°¥kÍù~鿼ĜÇh±å÷à%Z…~ù×�¬GN¬ô±ëèàö ®êçKEæ ßÉèg̹é\-*…9hÕÉi‹ÌA§XéGbkÁÖö�ËF™ƒJµÏ^�ÌAæ`±Zˆ%Úô3͜ۃþmú‡qÞ4ýÈÁälkß90u?_º(Àd2]QËíÁÒ×ÄLQL±¶ë؃–Ûƒ.?_¸(Àd2™ƒ%ÒHôc{ÄîvsÐ¥Òç ƒÌAæ s�9XÚ9ˆ™¢8Gîs4çö ¡êgƒ¢s�9Èd2•J‘½W�ÌAæ s�9XÚ9ˆ×ÛwޖܼêÐV¬f2™ƒÌÁÒÎÁVä¼Á¾s´b W]dæ s�9È,íÄ!ŒØˆÞ®s´a^uh+Ö :†’'{Ä-uN°{Ä9*�n�³I uÔÑÿ(°Îy‚éÚ:wÒ-wŽ °«ìü$0®‚ãà5L±j$]ä *�œØe×®sä1uºò¥‹ÌA¿#2�DY… ˜X¢¸@Be‚(+ÀDq�� Jñ'Û‘³�}çhÇt©öùB§s�9X<’2ýÚ`dêj$Ýea…•ƒØpÞ®st`êtåK˜ƒÌAæ Úääö ¿Œþlv$gûÎ�³—}î¡u©7ù¢l)Àd2™ƒþbŸš�?9؉œƒì;G'æ`Ùâ–¿Ÿ†9Èd2U~ùËïOb'™Áö�£3sÐßä([ù1™ƒÌA栿اæãObýMö�ãzæ`Ùâ–¿Ÿ†9Èd2U~ùËÏôwmÍù•”ÌAæ s�9è/ö©ùø“ƒÝÉ9¾stçö`I¤läËd2™ƒ*¿üå÷'±“ÌHûÎу9X6xUROÁd2™ƒþbŸš�?9ˆ�dFÛwŽ^ÌÁ’"HÙÈ—9Èd2U~ùËïOb3™±ö�£s°l𪤞‚9Èd2ýÅ>5r°/9ÇÛw޾ÌÁ’"HÙÈ—9Èd2U~ùËïO ç-ö�cs°l𪤞‚9Èd2ýÅ>5?sðVrÚuÌÁ’âGYÉמžDÓS~eJ‰¢ ¢¹Íõ'4áØ¦YF‰Ô§:}Žm÷G8y/w»Q1¤À»t¹®ôç:©�2úONÓn¡ü¶”RN»ý¹Óô‡4ýþ--�Gµs)2’bc¨I:ðª>Žš­õþ¢­No­4­_R~ƒ°””WyîP5¾v�[I�£ó[ï³}ÿé‘í§Õ«‘Ÿ!¾ ]æ6Tã/»8¦çÒfj%…F„„Ç„Viž6ò…|5‚©_E•Î_éôßâ§�ŠÌoœ’„I˜{«.BÒò¡5²)"<$=5vÂàJ?ÖEP/ýÉAl&3žs æö`Y!VÉ<‡7üb´¸¼J4¦ŽVyÍkႹOFR\8µÍ¤}hkª�B±tr¢K‹¦¨R�w1$*1üš¼ŠÍÆÔD¥Òy^c5—ÉUâêô©Z­]FPp�ïœûÅصSÅ]?¯�¤Ö|t�›·´¿m·«Zˆéµ’úu¸ŒcôQ¥Z6}Q˜«Ÿ×mL*Š9Ï…ƒ¸»8ó�9«Þ­9ë¹k²kEEÅ?ûÏ:j:¿l½ñÅ'Rã<ê7F«¢o™gæ#”–¡E2ÉY»Y®˜£‰ö*î°k„âqð‹¿Rb嵤1CµÛŸw§ ã.£òµ‹î¦½/Ñ›[èþÙ´ëy—8*á×qJwÙô‹§Bcòê¦�é‚ò*Ïsáàu‡—«îš‡Ç#NÖÌ�ºLÔKSTIã=_ Ƈ³Z^zó1¹xº®ó\8ØqF}ÛN­sëžnãvt­Õ- —7oõ€BU:Æ»‚ã#òšÄŽé�;O˜7I�wû ÓÞYŸüçyÁåÃÕÎ:ÿ‘Gõû“ƒ7’sª}ç¸Ñ„ƒGŽÉÏÏÏÌÌ ‹ŽŽnذáÚµkÕZö÷ß_ºtiíÚµ###ccc›4iràÀ¡sçέ\¹rDDDnnî#�<"ƒ„ç³Ï>ëÝ»wbb"Ò¢ ÷ß_�/K�ÞpPRìÔDöÏ¡òÑ„6£ˆöÕ ¡é�ísPRoþ©‘ø^ë8¸äâx¡ûƒÍê;%ÈŸ‚ U¢=¨ký�{5q†­o+S=:N¹»|ùÔuÈJÇA]ä�Ÿ×Cœá÷TÔÙÕKØ’üÚJã„)Áʘ8Zñ’Á” ûÚ ã¬Á§ ÕqÊÝå©O´Û×qpÙ½B‡wX�O—¡ ) ‹S›QžŽƒºøi#ò)8¸ÉgOèìê¥Džµgá©ax:*FçtÌ� —þ>ÍÆ:=+K‹©GE•;橃x:•ƒßî�”ñwŽ’IR·®@œäu÷J‹ÎãOúvP8:¬ð‡ºN­x÷ìÙ3eÊ”M›6�n;wî9µMЂ Dœ .Üpà  Ø¢E‹öîÝûæ›oÞÿý»ví’9Œ=|\²d Bg̘|ß}÷ÉÐï¿ÿ¾bÅŠuêÔyñÅ·oßÞºuëøøøþóŸ2{J•Åâ ZyºöàùÛ(*”&Ôs¡^ç*”“äb‘$…GbΣgÞÉøîë8(Sù�ƒ‹Nê9hdÜüoá–z,nd ’Rþ—Ozæà«?5@qþáà;'Qk™s°yGÊï«ñüÉÁ¯Üp0¶€tgt¼sw©ã”»Ë“k·¯ã`•,jߪDæ*¤,ü-NnBylùË Á1‘‰íëYd‚ ST� Nšp0)+¶nï*j䄌˜zý²U‹Ñ¯£•éeæÉwñt*Sž–´=ÏÈøYç>„%²KkiÑyüÉAl.z‡}ç¸É„ƒÆz¸M›6YYY¾lÙ²���Ç£ÁrôèQ€oñâÅ2tìØ±hTþøã�Â2mÚ4´¿þúkqùË/¿¤¦¦8PÆgO©RÀG~:R#㜦 Þш‚ƒè7ôc(Fé— óè)…òdkT¶ã^É—Ô3z,اYpð­ �wýÞhÃguÛ HN*ŠV¡šPç÷¶=莃óÖi§{Ž�ƒ!D剂‰2ˆÆ}뎀Âî|:»‘ƒ_¿�zš&�¡S¨| ºô¨V.=ýˆ,ZcK†zä`ÎÚÉ(¾æ†é2‰©ÇÈ)S‹)û®l‰‘Á¡Ï¶Ã0"" ›4<:tÒ¾î¦9H£ŽV¦—&ܰ�SáÝ�2~Ö…£hí†d¤I‹ÎãO'çtûÎ1Ü+öìÙSr°J•*íÛ·wWW£ÙˆÆã‰'d„ƒ²aÃa©V­Z×®]e(<ãÆ�(ÿøãÕÈþR¢€�<0Hãàæn.È»¯•f<Žõ>e‹ƒ÷~;(.-ªr“T#ûT‹ŽSî.-8�¯”V‡§e…?ö�oódd¿¨)ßú–â(ÑPd‰·—-#z“hÑ"´ 1Oæ{ êxçîÒÈÁƒÛ5 â©A]zåYÚ÷2 í§YÖ-µB¡)­ŒF�Œkšš×ú·mÆ´ªEâÉÚcÊA$é½¼9fpá¡à¢“"Æ¿q½u>ÕÑÊôÒÈÁôµnóħɸiûŸƒ%(2BZtr›‹Þeß9F¸åàŋϟ?ÿÓO?=öØcááá+V¬@ÍŒvžlòäÉèð,_¾|hhh­Zµž~úiYi4(--M^ÂsæÌ$¹ûî»á?{ö,Z‹Ó§OW#¬\¹þïÿþO5²¿”(À”³î]üÃЊu“ã+Da^�Lbêq>�Ý‚ƒ�©õç¿Öš·¥Zí±ñÉ¡¸Ô¥U/}j¶í¦M¡‘¬DeZ┣‡Â³µ ïô�’à æ…â�¢¢èøÑ"ð5oD•2Š.�TU!eá·æ`££�¢ìŒI=,rA±%"˜r°ûâ&€`þÝ×MÞßã–ÝÝšŒÈ ‹ ½­³už:Z™^9ˆhmaMê«�V:{Œ «y ÚØAÑQ¦9ÀèOÞLΙö�ãf·D3 xÂ`÷ÀˆjY4î4hðÊ+¯ìÛ·oèСˆ³nÝ:ó^jÖ¬©«ÃÑ:~üxÿóŸÿ 2ÆÕh*ÂxèÐ!ÕÈþR¢€�¼JúE1[¦Rƒr±©‘3>êmÊ>Õ¨BÊÂoÁA™jç¯�R3štI�£§ˆbg¦c{ð¡-FÓ»?:`£ÿX:ø3}pÞm¶ž×MHÒ™ŽÊPéI&Â:gy©÷Qej1¶?= q°iêaaŒ˜Tcš ŒÉ%"Xs0ó¶Þ(¦á‡«=æfÍ,jäà½Ç‡‡µ»£®ŒOnçL ª£ß¶T»)3¿?u}M>¸ˆðøc1_4´ze5¡ê÷'±kv1܆ÞÔ=§ÈµÉrËA4ýPîÞ½{êÔ©œ3gjfÌœ³¢¢¢Ž?.+êæÍ›WªTI\2¥,eÃã#1O&ÚlžL�24OF@+&îú —Ê;w~#ªL-Þp ±Ò0+7Ò4at , �ÄZBQ§ÿ}äe·Ùº–�e^r0©„8xþ?… Uä͹C{è>-A¢/« ãçx„ "9ej1rm@<ÈðMÔøù3µÉW.T�:¿Š*w~SŠÈJÿh[¥_þ–õû߃âbbGõu—‰?98†œ÷ØwŽ1n9¨Vã·ß~;PxìØ±O?ýlÚ´©ŠU0ž:u Fô‹¢¿T å~QU�+Îï#18°¥ÖMÌhb>8ˆø§ÇÈ¥ažŒ€`trÄ�ŽžîÀ§³[0K ò†ƒÛi˜˜Ú²G¢šPçw ,�Üù%=µ·È=¹G#DÇ>š‹,tÉ奟9¸¥ _ƒ†úf ´¨³ðÛƒˆ<¤/EDб¿Rïâqm}µl·Doà…8íÁk·Ì„’Õ�äMV:H¹»4rpî77âuåÝVGMR½}Eü`S-F¿;l©v ÊhIÏÄJŠô#[¥Eçñ'Ç‘sž}ççŸ{î9Ñu‰EbÁ ZŸ£©ˆÐ~øÆ… ¯¶EWêÆ�E’œœã<™˜˜ž'£JZzü^rp{ÚÒ�žè¬M€PCóÃ��¬Á]£ºuô™q„•†¦“d¼äàèí7 ÛÒiàíðM¯7àøáŸDŽâ²Ñ°„ö]Ó—÷ö”ô4ztœ2^NØÞ +å‡<¡Í½n@6üpKχ«Ü8«õû­hvûÁîÒÍù¬¿1iÑqÊxyÿöŒýM"ÅaF(üpoœmôêÏ êµ‰›²²òCo宨WsÚcÙUëhëè×:|\³�Ðzïæº Ðüp;kB:DðÏøà‹Dë‰-`ö8†îÑ'û̬$ÚA´½`«™¢ÚAö9¸}myŒžX®=߀žšîì—ì>{�’©^-Úú¤¶|~Pom9áó�ûÄÁ:Ûçƒt5ž¸ å¥h?\«³/Iê%ui…uÒbá1rJg»½Ëˆ-?ÑOW@Uøá8{3¢]7ðt�v˜^ïÖ·»�½kƒÁ× Î ërÐ]êh¥»,¿ýÏ)[–—{b!ž.z@Wøá0 ˆhå»·Üã Òö=[þ�Çâ&ß„ÁÁÄûÿ¤K®^ú“ƒ˜t7ß¾s`V²aý ±ÆX!F E‹oÈ�!ïCÛPDÃt¬£Ç,Pqù�ü3aÔ@¤æ0ßFDÀ$$ÿæ›oÄ¥X71xð`qÉÿ–6¼ä`•x�€pX!=X2/`‡eª³(&Œü±¯@†cð�Ö¦Â]òˆ%óÞÖºƒ¤Qx°·ŒÒ" åΓ\%V—!Ê�÷Õ@L‰Ñìò.•ÛlduwYÁnŸÎR¡J¸(.8¸ðAàÙüU½7kÔudJV�Ȉ¨àа ò•Â;Kyæ«Íd�³ ÎdÛMx2ª# ~ó+“„õ+|X´Ï‹âù´`‰D7"ŒÖ„Eåý 3‹eÓÏÔcÑAX$(Kz¾rÂîè^êÖ‰âã´ 3-ÓkÏYAЛö`d•4cyM¿zZÀ®é×ÏPH0VÐ[°O ÒAÊxiú]˜óÕ�ˆ¹ä·QXYŸ–›ˆÕ˜!S©aÊÀµ­�9è,*ªŒþ�*Û AGåÓ™ñÕ[ˆ™üèÜÐܪDwhDÛÆ©ÛV“«r›lßgß9n1áàĉgΜ¹mÛ¶ýû÷¿üòËÇG]#'yb7˜¤¤¤zõêmݺËçÑŠ.ÓçŸ^VàcÆŒëè±ù‹Xq/COž<‰uôuëÖ}饗°Ž+1ë†×ÑK}J›ÇKºkÜÙ°K<ÌcÁ¬’ÒQ¯¤/Mp¦ã /Ýw`šRÌw£Gú7‚ ©øu� À¥Šªõ—r>þøã-Z´ì8üÛ®];ô‹ªõ3ËwëÖ ûÀ` b¾öÚkj(V[¨ûªaY„ ¿ØW øC;ój°�›._–˜ƒ~GaIƒO—?s�9X,z–(ûÔÌýÉA ÁÜoß9&›´KO%ÌwrÙ`2‹GRn:wø±�X,„ù%²Šªõû“ƒ8lâAûÎ1…9xÙQSªo€9Èdª-J?2Λ¬ü‚¶beR¢ìS3÷'o#'v²ë·1K5†.ûÍ1™ƒÌAæ Ê/ùýÉAìи̾s`6–óE/{mÌ7p¹`2™ƒÌA±OÍÇŸÄaÛwŽ;˜ƒ—‹0WF¹ÌAæ s�9¨òË_~rÇ+ã »Îq'sðÊàÑåºKæ s�9ÈôûÔ|üÉAº´Ò¾sLg^.Â\å2™ƒÌAæ Ê/ùýÉA6ñ¨}ç˜É¼2xt¹î’9Èd2ýÅ>5æàåªÕ¹Üâ*Àd2™ƒ*¿üå÷'qèÒcö�c6·‹K†«+¾à MtÐg€Üz'Ö9ÿB�tÞ¬ócœ§œéj;ß °ë\HG�œ�tÎ7(ÐkÒâƒý@ŸÂê8t »£ÛuŽ{üp'W®²§eú‘~dœ7Y‚(+ÀDq�„ Ê $QV !ì‚(ÅŸœCÎ'í;ÇæàU¶b>.s�9X,’2ý Jæ u�UØÄáƒOÛwŽyÌAk™¯öPæ s�9¨69ý‹9�¹1­«àBÞKÎgí;ǽÌAk™¯öPæ s�9È,‰ÎRö‹.$çûα�9xµ“Îúù™ƒÌAæ s°´s‡ðn´ï÷1­9pµ‡2™ƒÌAæ`içàbŸ¦|;3¯vÒY??s�9Èd–vâÞ-ö�ã~æ 5®öPæ s�9È,í\Bέö�c sðj'�õó3™ƒÌAæàÀÁÉi×1­)À¡ÌAæ s�9XÚ9¸ŒœÛì;Ç2n2ë¬`2™ƒÌÁÒÎÁåä|Õ¾s,gZQ€Ã˜ƒÌAæ s°´sp9·ÛwŽÌÁ«”u;wî4hPvvvXXXbbb—.]öïßoÔ‚9Èd2K;qïëö�c%sÐX÷_–þýûçåå­^½zïÞ½Û¶mkÛ¶-€¸{÷nÝÃ{ÅÁ;©Î Jʦ�0ŠL¤ê]hÌ~—Ã)p\Å5(áa)“õæØuw.LÔ62»BPXhhblR—Fõ÷/‘I®Y66¶au؃BCÂRÊõjÞðÃÕ2ÔÔcM±;v¶i:¨RjvLHXptbX�.îÞßÞ˜äÉ‹ýsZ§@ÎŽ·V3†ª�û‹VÙùH NaÙñ€Á‰q±]šgï_'S%¿A{kŠ‹¨™-CM=*¤ŒþëwN¸fPƒ¸ìrÁa!á‰Q•ºÔì±²môïK›-í™T;=$2,,6"µIV�SÔ:¿‡�Ъï¤äAžMAa’Hñ](wQ "£‹Ì-Š`8ÌÂz_µ�‹hPeW °PJŒ¥.�hÿCEçS\|�–Ž¥Z•)"Œb"©yMzçy<ÀÂý>Û;{Ó ÊŽ§°`JŒ .•i—}¹—·¡IBé14¡ý4Þ%TSî'z|.÷˜ƒºjÿê¹rPå�ð_Û¡|znœjõÍ„Å/4r-¦CãˆÜ*EŒ�†¿ÖÅÃÆ˜¦klC3:ä$æ¦ {\•äŠí«ãXX,˜e×�L{>¯û…‚c(®½yªK¬4á”ek®Ãu” 0ÄÉ*O½[ºP/#…úµv±˜ä:�á²C%ÊMÒH÷|õöô-¢( ¢ïÔ˜JXüÉAüXÝkß9Ö1uÿUz9dÈ�ððð÷ß_÷üv88ëgŠL Z}5ÒMùTC�5.Ôku‡Öc9÷7£Daq9¸ögŠN Æ}ÃÁŸŸ¢„hêÛÔœtONÔ÷•éæ¡68ØòççCbRú¶R9ØæÂ«­¥ÉgO¤hV>­B5TçW‰æÑ¿úç^Ñ a‚z"òÈu�0nøðq­ÙX¬ùóîà„Øø¾í%)$$¤|2£�˜|뀚?î2ÅŸ4Z0Ë4âçEá QÙ}ë!èÆ¯çàm՞ܦþŒŽQå1äœT«BÞÓCŒ©T‹5¶ô¡õ¦�Jê«·s•×j�¢ÙL‚.AA&œrÏÁŸ·RB õmUHº•·h#ƒÏÞI§_¢“!t“FGÐ>l½â>-Èkþ<ž©o5-Ɇ.õÞP”üÂ$ ¢ŒØ"‹.gæ ®²åËË«À¬Y³‚‚‚V­Ze¼ ;¬7Dëùœø¾†¹±40 Ü삼üû4ã]Ç]Œ¶9Øbˆ6%fÁû�áà�ÖJïc?CCÏç·�RZ5Aµ`R-:NY_–Ò.(<¬Áû�¨Ñ‚P»AÀ  ˆ¬ò ?X¥ýÙ§Fh>$+44y…Óµïëí ]LS I¦¿™Ùåà�öFï¯*"ÝòñÚˆaÁ‡…’âè œË` ÁâppH ¡÷k¤ûàF�ƒÁ—0Š)4°D†Yd�ðø“ƒ�“s¿}çxœÛƒÆºÿê²Ì�;\´h‘écr°JkÊí^äl0GX–7KûÖu_U¡¤9Ø« ¸«ôD£²úEgõÕóaT® ÿOPÝÊT!‘¾ÀÔ5?q0kÖ`”WmÕ-:º5<²²Á_¾vËÌø׆&ÇáRA½T1gíï1«&žî¦U d´úÝÒ1‹F^"Ô÷ñAd©³nÆ|ªQõW~m"TX~»jÔù-˜¥ ºnV'äÖrU?aǼP\†D… =^4†˜Ö¼JL¥D]BõÒ[.¡é³´_Ö*£`\­£ZPùI&A ê[—¸6 $‡óÖ"Ò-¥AðîÁÚ$ÒÝЈN¡M§ñ�ç%�é°¥»œÕDÃܪvE˜k“¡M"}µ�½…À¸šÉÚ´™èТh3vÏ.r­+ú�>¢‚r`’öûÉñ‡¬Lë@6–yçÏŸïîI‹×l?Wû*vZTDÉííSPÜÀE&,ÎÅïÛ m¡„s˜-Ó ›Rãé#t:YB¡*¤,ü•çEyÙ‹FZÄiýëËá)X[aGRÌÚÓkn-<]ÿEud´[¶4ÇÜÑ{wXýS/á!olUô�>~¾ŸŒ¦óè eqY~î<`Ú¢[,â ($9>apg‹8*¤,ü ç¢ç.óBeœŸÎ„¥|ÓÊÒ�ˆ6ìÔBÕ¨ú=’«0BŹé2™ÇO»M ½öCóP…˜u ‚so£Т›‹w|…ÓýŠ,Ȫs#¡‡<½à &…‚‹Z1”ü~ ]_E³ÃaéÄŒFÚ|Ñê‰.qT˜ú³=ø9Ùwާ˜ƒîPöíÀZ‚³g϶xÔbpP@°Ãü"¢y¨Í“‰6›'SÃ%bJ„yãûÎwÙ¯íAÁùþ0`N@+&>xÀ$Ôß‚Y2H@°Êü›¤Å�')¿�»Y4"‰ŽS¦—‚½ç×VC…µ«ÑMy¹¥Sõ[K ,?œj4õ‡$ù�ƒ‚n�æwU‰6úüR±`P56œ£árؾqP@°â|sÌ¡/44…¢›‡*DÌ*à €àüa.€C/nÓLãÌ‚•.´ÊÖç73ÜɱôÑúeý~+Å…Ó¨ZæÑDrðr¾gß9žaZ@ ,-Y²ìÚµë¡C‡*ºgö–ƒÀ¾uy³‹p&¹Vg Ŧé×M´™aS$ñ‚ÀŠë5Û-‘‰ÿ8ü¡´Ù˜ ç‚ɱ„£<�¡¦wD“vàåUžmµBDnùË a© åz4“i�R¦~àO×cöµºÐ%_Þ€E…Òݵ'ÑöÉ€e婞ºÈòÒ”e:#ð‡L�=Jg7^b�!bbÐÐ$-*ÅLýÀ2i0»“1Ã…!¡C�ÍAc..Ã:úøj)ƘÒâ^ÀšDé³ÝƬºE‹PùQ·Z«‚ÀŸöá¢GÛ7ë5ûmXÜw©ÍOûúT.ÞÅ¢†ú-9ü¡¹7»‰[ºÉßÃX×DGÐâ&Crp=9ÿfß9Ö3uÿÕr‰Íd‚ƒƒ�BõÝó{ÅÁ.K´¯\NWwˆÆ,r‚kèÕ¯£Ï¤™§ìsðÆ‚âêu¥¹‡hîÁ"'ºæ$MÞ¢¹VÄÈ5š+îÝãÕ”VÒ¸¤ Ç©ëuth!\Päáìzj|�6)nÅÈ";â|öˆ�¨R-U—Œ†˜É]]whÙu’q0w4¡M�j+'Ö}kQ½}æ<65¦N¬£oàp™E£æ¿$”©gÐ’zxuu»V˜}¨ÃìƒEÎ42bú>>Xa‰6*ÛµEÕCOT=ø¸tàZΗ/Çæ7­¸vföÛk°²mÆà˜¨ˆ:Õ®=»ORÏè‘„2õ4[ÒÅUêZ³×¡Û01F:yÐg³"’¢ËÕËÈßz3–Ïcç,'ìøüHÓ¬„Ѽ2q”]%t¥ÜC”{°È)hÓ6™ Ž%¬›P�nü&œR¸¶DëZ¦®�éÐÃtpy‘©‚DÁ4}½ý½¾�cc‰ Z8Â>—´Ö ص H9AºÇ:Òãi_?z£M®¯ Þ�Un »?9¸�œGì;Çæ ®âçK¼â 6“Á:|Ç\\pé´}Õ:RxŒ¶žÂ÷}Õ°™Œiq‚tw¿­ÜÆ¥»ÂÞ2v9ˆÍd@:—' Ò,à ¦ÄÀn ‰É†–£´è8¥»Äf2X2`(/ÑZÿ¶­ÂÈNQ52ƒ£"°KD¥Ô´a²V—ƒîÒ”hÒˆi0AÚ¯!׃ƒdÕƒh¾s›É˜> ‡%q=Û†UNÇ Ò ˆðð•Sî^ó—·�ìS-ÌB6“Áº>^,2U¿£Ó³ºÕ ‹�Ä„™´Ù]^+ƒL=à…Íd°4^Ã…ê‚‹RÕýš(„°‚Þ øtvkºù°’î·WiÞMÚrBÌ/Æ ™†ÕiíTOdÝ“ ›ÉhZêž ß…‚$�¶×ÖbdÝ¡ØjÎXdågn$çö�c#sÐ¥Úç �^qp�2ºç»ß=°,XæK�$T`<:N•ô¥ ²øUBÆoJ«’3ê8UÒ—Ö,‘P÷´æZqCýÙÜDοÛwŽMÌA]ÅÏ—. 0ýÇ’Ÿ.ÿ°O-"0ìSK)9䙿\ÒàÓå_"¤SzVMò¿9ˆýå>²ï›™ƒ.Õ>_è`2UÌyô«„ Œß”V%gÔqª¤/M8eM1ßC¯D¾@ÎOì;Ç ÌA]ÅÏ—. 0™ƒÙ§F ûÔRJy¦9—4øtù3]ê#Ã…¨ 2ç§ösР+\`2UÌyô«„ Œß”V%gÔqª¤/™ƒ.õ‘á¢�ƒXùö�ã%n”eƒ¢s�9è‘}j„À°O-¥ä�gšsIƒO—?sP©�L¼…|™œÿ¶ï/3M´e“T€9ÈT1çѯ*0~SZ•œQÇ©’¾dʺÈÔSÈÁmäüܾslcšªËÆB˜ƒÌA�ìS#†}j)%‡<ÓœK|ºü™ƒÖuq!_%ç—ö�ãUæ µÌW{(s�9¨bΣ_%T`ü¦´*9£ŽS%}É´®‚ 9ø9¿¶ï¯1­e¾ÚC™ƒÌA�ìS#†}j)%‡<ÓœK|ºü™ƒÖUp!_'çì;Çë&}>ÿüs5þ+VÔ¨Q#""";;{Þ¼yçÏŸW#œ8qbøðá)))ȼyóæo½õ–ÊþR¥s�9¨bΣ_%T`ü¦´*9£ŽS%}É´® 9ˆU“Çì;Ç&ܳgÏ”)S6mÚtàÀ��;wŽ9û.X°@ÜÏ'Ÿ|×¶mÛ;vlݺµvíÚ'Ož”w‹˜Ø®ùî»ïÞ»wïƒ>ŽÅŽ}—þÎ�;‡$YYY6lصkW¯^½@[ļÎÿ—.ÄÇÌz'gÝ&>^Òrg€�ó_HGy8­8p®¦ÓH÷ˆsT€] ÅDYƒ��Ò½äì`çpÖ Œ[ï¨ü †ñ¥Ê+äà.r~oß9v™pÐxWmÚ´¹„½ÿþåË—?}ú´¸üꫯÂÃçOŸ..O�:9~üx™É}÷Ý,~üñDzjÕ*PgýˆË .ÔªU«iÓ¦2>{J•ÌA¿#2Àõv !ˆ² A`= A”`¢¸À@¥ø‘ƒÛE¿·ï�Ü"÷ìÙSp=œQQQ&LPëêÎ�;çääËúõë�¹Ã‡Ëß}÷, ¡°tìØ±fÍš2žE‹!±cÇT#ûK‰ÌAæ`±HÊô/(™ƒÖ5¡¨ þº›þøÁ¾Crw¼xñ"¨÷ÓO?=öØchñaÈ÷óé§Ÿ‚YkÖ¬QïíŽ;î@‹ï·ß~ƒñ®»îB„³gϪRSS‡ ",*T8p úꫯ"É›o¾©Ù_J`2™ƒj“Ó¿˜ó˜sк&Ô{oÓ…í;$wÇÁqãÆOø }à�ÄÍ`Ä–Í›7«÷†¶ŒÇ�‡q̘1èUCáGk±K—.¤ꚓï¾û.’c8R—Š/KƒÌAæ s�9X�¥~ì=¼—Îÿ·îÙÇ©[×"׺…[~ýõרwïÞ=uêÔ���9sæ Zf–6ò˜ƒÌAæ s°”sðÐ;ôÛiûÉݵÕÊööÛo 1„çe¿è¯¿þª&Ç Ù/šžžÎý¢ª8¥ÜÏd2™ƒ¥œƒйÿÙwHî Ÿ{î9t]b’'F ±èO×±‰y2X-(ês¬†@Lã<L†:uêd:OÓiJ9®ÎÛc2™ƒÌÁRÎÁýïÒ™_ƒl;$÷†ƒ+Ä(!ÖD€hÍ¥¥¥éÖM̘1C`âÇÔM(1‹«E̱QA °bÝVÓ_�”)ýOÍd2™ƒ¥œƒï :}.ضCr#'Nœ8sæÌmÛ¶íß¿ÿå—_ÆÞ/ —\!ˆ®QÝ:zì<#)jõ… ŠuôX��uô˜6ŒÊ ÓJå:zÌíÝ»7fÎìÛ·OF`O©R€9Èd2K9÷¾úß á¶’9øøã�·hÑ")) c‚ø·]»vèU+gÔ�X“��`½¯Z•*U°¯˫ɞjåÊ•CËñ¾jª8¥ÍÏd2™ƒ¥žƒa?_ˆ°íö¾fä`i«Šù~.£ÌAæ s�9XÊ9ø¶#âGg”m‡äÌÁËH™Ò_4s�9Èd–r¾åˆ<匶í�œ9Xúatï�9Èd2K9w9¢¾wÆÚvHμŒ”)ýE3™ƒÌAæ`)çàNGôqgœm‡äÌÁÒ£Ëx‡Þp°á‘•Iù "2S‚ÂBƒ£#bVÏY;Y=} Ç6%v¨š›Ò§e“ÏŸTCu~χ.M;B5ò)1“BÂ(<š*5¤�k‹RM~‡š�¢ÌNAA4ç«¢ 7':Y“îÈ˔ߒ2+PXEGQÃÚ´öÞÂsšþø”ý‰òšR¹$-4«"Mº‰~ü«‡SœÔJÕÄßè%åSD&…Qp4Å5¤œµEѪ-Ó,¡‰Ja)”Ò‹}Xjvœ“5Ų�lˆÉÿöξŠ*ûãçõôÞR)Ô¡†zè½+  tiÒE:RAŠ‚YW¤ Ò‹úÖ² º».EpQYñ®4åýó&™7™™7/¼Ì{d×û>ççžsϽ3“—ûÍ­SϘM&£ÎÏÇ'»bÌšgä!™>ömTÏ3td/¹WlqyÎö¤O:g¶ŒIð7˜ôf?c¹ìˆ>kQuóÓðCKLÅÁ«¨¨ß>©?O<±Æ÷(u1ùW!½(°Õ8©R¦ú‰ yŸÌˆiYÉ/!To2üÌaÙIµ×ä !Ån¬è&ƒ2c… rEý|Ñ%ŸÔ«Þ2<<Áb4é,~†Ôì ák* !~ÐrÀâôÄÊ&‹ÞÇß�Q?xÒŽ,ÁëLQAÞÖORêµô�N0Mäã§«˜íóÌšqþñK£“3Ìf‹."ÖØ}XÈ‘éb¯D×ð\µýÖ€Ù‚Ý„3>BÊ”ýªKÂÁ¬#óãGw®¸mrõ“‹«x!f@+ü¾'ÏÎçWûüC _p“ªU÷>_ùíéþU’Íñ9?n“àOHºÄ�ºEζ!-NNiz`\ù ñЪÍîÂçiuvšXj.ëo¥©íÄ%Htg´âí³�Ôê0:qü¶jóNÖ™y »ù€8<Ì~³+ðÞnSR�ì0&ÙžÝ[³VûH$'¿í…Z‰“kŽ$ö:w[ü«'“V(×q@0 >;’Ïóظ0£‘†ÌŒXwÏz—¹¿"âGQâî1bÊãÌ™QJOU ”ŠÒûÁº^÷×t»ñR�uz³1{y_yfÌâ»’³u°Ü%¶È9%·`pÇý[n4±®’Ѭ{ry&ŸgðŠLÌ ŽÙTå�[Í^ÿ1ä˜Cœs¬¶¼±EB+yòã™íÄÜßôu±&³nÂòhäya+7$ûÚ©$!ÿ‡¿eêõÏõEC^´E¹-g|„”)ûU—œƒ±CÚr À|FCùƒx®aÆ–Šš"`JÊœë_Û*6 ºgBÿN¢ä á«#½‘:.PˆÒ”ƒCzÖ†�•1wå8EGP�jÊ^¡ó¨ÞÌzã†pM4�sùÒ=¶ýÚ½/­õ©Ô[¼õˆ¦¢„ ±ÏzâÇg4F--ä¬pe¯>8(ä-xZ�‹6’iÿ²à§§ë´ ¶@7±çÊœ1ÇÛ�=Ñ“†èb�Ì¢_ú äŠúí«=Ïš§¹Çh ¦€šTõ]ª~Œ¢ã,kUÊCÊ™^aHþë‚ß…ê z(f ¯[Þæßóî+Š^Á(&”3½õnb0êò¤‹³ Zš�%4¼7 Ô8cM±WQWd–ØØmH_ ~F/ˆâ]Û>ãæ"Ç,,L¸þD,�8V¬kÈÁ]ÖˆÚbÝ„3–}=Â+,9ë^~ëB³Ï‹Ó™ ú¤ý€6rpÆezÚJ#S“1¤7PÞ ) 5åàå£dý3~�ÆæAf<%…Ý¿?¤j™IK]¢?ˆ®J¶•²SÂn+yF±–k ³?¢ÊÛ)(‡ŒaÜ’Èâì'¨©(.ïI¶nN<¼:lL_Ü^ÄŒÁ|æ€ö�ürk �rð¹Ë½&Z;=u¸Mî˜Êè¶™QC8X†îi…¶´ÛÒÂÞ¢bñÍ:ÕŸ'V"�zz_ʹæ ªO–rޤìÁ „RQ:^^ØÚúl³Ã2Æ´ÔôUft”dnûÅsx˜éO5—ØåIETIŒë.7^l­÷üáZXƒ‡Ù{F*Ÿ¡ÿ¼4@°Ç´”¹'jÃÛ¬ Î쫟¶«º$\’£JQßs¹¶úpbß1aø]<#‚φ¹ÂÀýÒÝ 'Í@†”Šf€ËJ �QCî´F|c‹u[Î8ø)Sö«.9…”„q]�Âzßmñศ¸{˜;ŽCᬫÅP¨)Å,7€CáÕãÞaµLÍÊFÝí0ŠCĺJ«ìJÇ¡°þUoãÛd‰§°<WQ.P¬„JظÇp{®î‹ß>›)’ÏnÄx)/hºCwMÿùQ�•¦ˆ*uc³qUÐzϾÚ[1›_˜%»OyEoT¹weWáóüŽê|Åq0¨n±lÉ39cƒëÅŒEF9ªÔ-ãZ…�®.gËÛ³Íg3ÅFE])—ÉNã’ð0_ý®É†kM tŸ$©Ñ:S„b‹\w†-E;ÖˆâwaßÕ ð¾ÿCZö|W['L ÇzÑÄ4³b ŒrðkÔßm n ÂË>ŒáºÇÁÌ-ñk^ãÌn�ŒŸÒ:™Œ17Åz1–‰a§¢?¾ÕÑØ3Åb=ÆÁ-ÜX/�Ù^ˆ<‚Ø1ñéN×�5°NíØ�–¹æå Ølè—©ì²·Þ΀åÌ·e6n/ùô†ˆ™E#Ï|Ó&ú7aç‹ÎÂU€åÌ•¿%e?}¦ƒb¿P³Æž'¦Yù ƒ"Ìq]oŽƒÿvöHi¥b¬¿åI<Ï–g¦ y0j‰«�"XT9§Ô-ã¶TÅÃ\p¦ú€P°¥Bœ¿ûTnôÓ…b£Dw†-Eûì-Ü´à†3É‚÷ýÓþô×”c7ÓÏÜËôÔw"¸$І|Ûýµ­œÛ‚pÆÁGH™²_µ{Ä\!fFr®ÿ €‹ìÕØ*Ù7‘8¥—˜}b½ËTØ'va®³„/\/ë1b®>×ÏrÔã!Â�šŠ;}*º³Ö©s…˜%Tì¡4¼I¦H ïè46׿ XÎìÜ\¡Ñ˜výP…‹»“Ž®; Ñžvm ¼ÎÂY¦nÄ\!f ç]ï'Ï6xWK4³Â*yXTî]Ù%~žÑý“­õ¿+̉å4ØGï[A9ÐŽKf)º0Wˆß…®×— ÞÛ‡áIÖ^ý¸`QQ$�r™Ä\!f _¿ž»îÛÆxtÇëVknR/DB+õ$æ ñ»pèzš<ÛøeÑè*bë½ÜÅ[4äàkÌy[’Û‚pÆÁ²£Gx…%á`Üðö‰S{UÙ5£ú‰E•wΈÎo�_sa‡ †F%ûèqò �H1þ½Ëİô†Ã©åTzb�:AOì¤:ܺ;j>©0pö�T°�“Úý9{�UœþÔQ•bU˜×ð~4u(íZÍí”ß¹Šò»p¥NÌQï×Ï©vU,}å–�ž~Ó!ßRc¢J˹â†SâTª²‹jœ *;)&Ÿëž$Nâ\ &ì}K[AY‡¸EXJê_•ëÑ`&QÜ£)®;oÞ#|êÀ„]K’N¬G//8¿=n/|R�b\¥_'ÓhxÅVS³8¬„¼³€L‹IÕ@´Y{á¨/3ꃶ˜:l;³†ÙßW5tñ¯ùŠä�*÷îâyâAaÍ­1”²¨òÛÜöù(,‡2På·TÊTa\iÛb_|ã]Oµ81¹ÑΧRòsðÐ*Nj#ŽŠÍ«b °`ß„ØèLWgV›áåÐÅÔzSwVo–ÏõκNJæ£öŠÁÐ(’³?¨5c_ÍF}bà}ì…Â]öÎJv†-Ø{ 85|É®¬�yqgBû|n}Á¤Â=ƒX>úìúØuÇ’Vì/×{T(ø8j¾cÙŒ¼X 9¸Ý÷¥-ÅmA8ãà#¤LÙ¯º$L_?&(§’14s‚ø7¤iÆE®AáÎUkQCïïcö×à\µÞë)%‡üB¹9Aü‹sc0.*Prä¨ E_¨ ��A¦¨spýÊ©I¡ÁÜœ þmZ�0.ʇ`I êÚkÆ™3*eª´±œ+c½}õK(× £‰iÊ�ã­ñ]îx¿ niN]ÃrŽèþTç¼z�ŠDŒ±ëŸõÍÉÒ‡áöð¯_ÓZ¼÷Yzö]ß(%' £�h¢ñoZÓXŒ‹òDà ì% K ÀN £Å•Ürrµ…7W� \ê·¯ö<ù§Zû oO† î©bÝQÕ=ê:o¯³¾ "§‚9Ôs‚ø7ªi&ÆEÅ!XBvЋ�*º3Zñö‘ë+gæ„`!(&þ­Ú4 ã¢BÈö»-úÌJMÈôÇî ¬�‘œº&d“(r` `.+Ç7(T�ßü[«©ÆEïÔÕ1əܡjÍnâ\ .EEC¾iMøÂ–ê¶ œq°ìÃè^aI8(F^éu`yÈ¥Â,O¸Ô›Yͽ–y:©Î,Ox5bêª0Ë. ¤¼�Td–'Œrp›µÜg¶4·ጃ��2e¿jÆAÍQ¨ÞÌjîõ4ø$å{‚têejþÄÔ ôìTÊôø$UxyŠejÈÁ7¬‰ŸÚÒÝ„3–}=Â+dd”�N=©Î,OxÕ±¥¹W…YžpI å…¤"³IùÞ„ êò2Q�w ˆZ4äàjkÕözn ÂKƒ‰G«ÈÁ3gÎ  ¯Šq�qð¡HÊ8¨-(Õ[3¾�ÈÙê»-Œƒê¹ zþùçK—.]¼x|ç�w  Ÿ¿ýíoO=õT||¼†—Í8È8È8(îj‹9—¥1ª·f|µÒZý€­¡Û‚pÖTÎeÍ;sæLPå3uêT ¯™q�q�q�qЃ¥Ž‹®°ÖØokä¶ œqPCjx¡¨“'O.´€ÂQ£Fñ:ÿïòåË�9¢í50222–q¾dÍÞkËu[Î8¨-8¼VÚŒ3®\¹âéêË8—Ykí±5u[Î8èi”üW—Ï8È8È8È8XÆ9¸ÔZ{·­¹Û‚pÆÁÿ.NmܸñÇÄ5CqöÑðŽË8_´ÖÝiké¶ œqPCjx¡(L òÛU–ÊhxŒƒŒƒŒƒŒƒežƒõvÚZ¹-/Zë1jH /uáÂ…»wï¢"(Î>^ã ã ã ã`çàBký¶<·ጃRã¯(ÆAÆAÆAÆÁ2ÎÁÖœ·lmÜ„3þïÁKÃ;bddd,ã´€ÜáM››‚pÆA ©áÍ¢rss›Ê>Í›7ïÖ­Ûܹsøá‡’_ÌÚµk1Û addd,ãœkmô'[·ጃòÆÿ¿ÂÒ¤I“¸¸8ð+##£AƒéééÐa©[·®��OTTŽY+É�`bpp0Nc ”çgddd,ãœcÍ}ÃÖÙmA8ã ¼ñÿ¯°8pìûôÓO…«ýä“OÒÒÒÞ{ï½ï¾û.33³G�‚KEiß¾}çÎ� ´êY[M§#Ÿƒø=My¨Ú<FÿSÝ®1+þÙLìëûÒ¥ø™Eok@„c’b‰ vבK±ð‡"]½µ�“Ng °ðQý~_]}n—èÜ Kx€ÞdðO ËxªY�Ÿ–¨”ùpYK¤#}€#*j ùd“>„ÈH† èLÉŸ9¼²—:=Åj®d¿;yTׯG4Ê€7udK¹W°<ì9Û†%ËQ&ù�ºÞ}9‹XÒ3¯\CÊ¥>bm%þË)ÎùÖ½§'V 0ûèñM«<ïdq±îòDPq†ak«ðÕ Fñm z|¦¿�A¢<Ôù¢ÕÖÁs3øQíü©Òâþ�•Ëé-øvZBë§gïxZð**%GÞÚIÜO)À·Ø{š–Ž¦ŒD²˜)6œ†u¡{‹yÅ…kx®ÚlkÓ-¶.n ÂÑTào~•v’¹Êæ¨U«Ö–-[$×¶yóæêÕ«ÃøÚk¯EDDH¼òä¦M›Ð¼zõj~~¾&\}¥¹_°1,ÞÇ7Ð(ÐmÉù\$+5 Ÿº·Îø·³ËU D†u?¶2ˆET93Ž%²ç`. �7L's! 9ØõÊ|S°¯_|ˆ)Ї']¯[ËÁÄ O4l´}H«k¯ì WŽës{¥3ª0KêJ½Bú`2Æ“>ÐኘE‘ó(a/%�¢Ø-d®ÌQ²ü׎ ÅQ(Ê¥ÒöÊ2S°Ÿo|¨1P�ƒY/õ‡ _êS­TŠ’sJÅbüëy ¦Ø8 ²qôó38,ˆñØ)Á+WÄ�R××_iìl �·ø„œ;~kY«]„ˆññ¹i/­=ë`vÿùi³ÞÏ2H §T’k®4µÿ.pÕ Ùæ�­/–�Ë*%ݦ¦ $Š"ª�ͯ¬6ûùć}… ¦tÁ�,eL»úGfÖÙ;5ª}6’Ùo�2È1ªTô+¦àŠ�¤@?éÆõ&£�f¤ã/Ó+(<˜jeÒý#Ž â5äàóÖf›lÝÜ„3Êéð_aÁà§ü•»8_Ôb±àúOœ8áòL×®] _µjòkÅÁìöQµ;Çä$ˆûƒõ{ÄG™_¿•ÇóîåKÍ�f}§I©bü º3ä)ÚÓ‰2‰ªçà³EÀ–ørkÊÁøöÕÊu®^¾ GÜ”ôþšî‰¦¦ÁæAp0 =×Ý .(Ö,Ž9*ÿOŽöáÏ–žƒ1íkÄuÎN*hd �r0ï‹€cýwÆhËA]«<]Ûöº>ý¤ýAåà“X$œRIÖjY·sT³‚8|9…lƒ–dè ºgë uEÂ)•$ª«Ó9ºiA<ªs– ^½ž^þ¦‰³ rN9³€q1�k'äŠûƒ>q¡-ª !mïm5GFwª-XäŠU*zûêܘ Ú:úƒ £Á@û9¨÷ö ø¾º�ŠåhÈÁYÖæmÝÝ„3þWPO~‘‰‰‰ãÆ�“Øa)W®Œ •x%I¬¨iÔ¨oÔ„ƒ#7UÇÀ«¯¶h’ïàà÷Ûš}õ­†% ¤ƒ’Õ:26Ý_ltEÞ)»Ø;ƒãˆ²ŠsPȬ-s6 Dg°ëÕåóë ”î˷óñË_c^W¹‹·8–Ô»‰ë ¦^¥à|5¦ÝЄƒµ7 Eg°íÕåIù ŒjQ9¾[mt5ä aÕt�_|Åu%ã¢ö¤ñÇŸ%ÈSLªcKðŽÙT�ÁW¯6n–_ŒƒQɾ՚… Ù\*΀%±�ÚT ¿ k¯6ÍÍwÊÁÍ7[úøª6 —ÄŠ“rN)Zªo‰Î`‹««ò›ˆ9è›Ó¥Ž8ÆØîõĉ®È,‰qÓt®3xõÊoãàà[³9êyÉA½;‡9K^]‡E\ކœim¹ÁÖÓmA¸œƒ˜xêÝ»wJJŠÉd ÉËËCçBÒ„"ùàÁ´¢X›1räH‰/>Àâ tLPȬY³îß¿/Îðý÷ߣÕŨ�ŸŸ_ýúõ:$ö2½„Oà…^ÀÃ0`Àž={>üðCü‹§ ì(á™gžÁ‚R•¢¶oߎÐW_}Åç)=×\knzbUUMÌÁ¥_åâw�· °ë0¾¼NO[ï¶,‚"PL]yšÈ—¨�½ëçv»¶žuVõËÔ9Xÿµüòç¾;²T¬p� Ὂƒ£"3~£Œ{Tþ ìI†(®W(é'%UÆ0W»k+Ìá5VÀ"ç & M!~È£!�çþNaaúEK€6¢_Iè)ÅÅëŸlüÇEEòF—äB† ךàË9tUEèb®»Ü_Îö£»MIÁ�…Á¨K¬0zc•2Å�r¦¯¿Ö Õ ^UT88t 7{8fk–³r`—@J1ÙòÚSx`ÕUOÀ+á`•13JæÝz½Õ�ë0Ljð³Ô?6K±Þ(F•¢~m7à¹jkm½ÞÖÇmA¸œƒX_�&ôå—_ưۮ]»°.@<|ø°¤Q}饗°È /Þý*vÍž=[¯×O›6 áxÛÁƒ îܹS¥Jôe¶nÝúþûïc… —�ï ù™¢ò¦L™‚Ç‹ÿÁH©ðòÁÏ?ÿüÿø‡³Ø[·nEGGO˜0áFѧOŸ>˜ÄK~ùåq¿^´b£°ìÑ‚ŒÚZCÀ– Ôíƒl|RÌÁçOæp¿ìª)ä„ÒgN&Œ@§ØÈëêø¼˜þK,ÿô»ÕŒj”Æ£M…ƒ˜@ô‰ ¯“â ‚°;V1{`7òmThQä ó¢˜üÔ‘1‘’?-[D@Þ(ÀNEA_k`ø ò“†@!ïEK§Éü ®C']ýdêç.Ð/Xlؽϰg¿~êtt)=Ãxé;g(Ta–àªß-ªR£>)æàüÓuð=D?1µfà´wkÌ9V»Éc±°`9�+QT˜%¸êu‹®Ø(”Oªp0­np@˜iÛÝÖB \Q–àŠéV7¬QE>)á Œ•—èLQ:�)Ô¿îþiB ¢¢È,±±[.5Ê*D›˜ƒŸmà*Y8ÂA½/ss¡ ìÐÀ!(DNqãS�o žµæ­·õu[.¿ô×Är%$$´hÑBlĉ^Xf�÷¡£sðúõëh�‡*dž3g°xîÜ9Þ²råJ„œ9s†OþöÛo•+WÆR!?Sê üôÓOÅrüûïÿ»„±øñ²Sö_—.]Ä…”pßĸíÙ&‹]?žežæ`ûZÐÞâ ÖÀè-Æ_=§ÎÁÿ^R-Á'&¸ó…9¥â`ÜvæR¾Rã`ò'”ô!§oéÃÉâø’*øã]u·?….C«¯(r“†‘¹…BЮ•žƒ†W7’Åb<ó±"%¼3¼�§¡Ó¿0Ob’NÉ“·gá˹ò«¼KÌA¬ EC�q{t…ÀŒúÁå|„¤D‘£Jb¿½ª[þU#ÞK¾hˆªÛ>•$ —$Q%6fo‡_îWKy£„ƒ™óú‚¦uÍ9ñ\½ÃÏböPïk®½k¢¸‰.Fž\ßþ<·ô«­ DæÆÕ)$�v/ _º{“¹e3~>2Š Ô°?8ÍÚv�í1·árŠ›A^Çîl¬ÃÛ�EÌ.Á"á Ö+ÂÂÍçÿ׿þ hÈ'X±bEqQØô� Xê/62Ý£OÛ`E ºáü:F¿}}}‘üòË/ÅU—„ƒXmé8!õµ­yiЇ›‚Ùðsë×ÉÓ|\t ‘?BšT$UìóƒHÂ%t¡h2?ˆ¡èâUšÐªç�¥¼$÷©ƒùÁž?/íýËKï°Z&¬f¢%2°ý_gFEE ”²’~‹ Ñ6�0ñÇKPn~0ígJÿE!$ý6· Ô?OÁe'£€0E¥Ó­µ–èàô í:ÜXÍK¹>˜ýôéøó+�~Y D¢mzv¦à’R7…·Ëý Š xr¦/^¥¨(ýÈÑÆo.ñ¢ëÚ�>ã?/;ëôQh(ò8+PÂ)Iò�[ÍB¢Í]&$o¹Ñ”—F}bðåÜòsÓm¿4[ùuÀ(½n°8ª÷ÌT_¿ž+6 º„S’äæ[-Q]§ )¯ßhÁKÃ>±¨îõŸ[lù¥¥8s‡±É¨eñg ÄF¹.�”$‰ÑNüøR'tl}ã5^âú4Àü`ëŸ7´ùÏ&Œ—ê úòã;ˆ£"[gaŠPl‘èbTIô[(:Œ&ôåvCðÒ§7?øó>úå »Þ¥¶õñḜò8·^4­œ78øŠíq·¥$ÄX–ÖóÔã[H?‚yC¬6DRÂÁÉ“'Ãò믿ŠÛÒÈÈÈ~ýúñ–˜˜˜^½z‰½»wïFÈÁƒÅF¦;{—.]âÏÙ†âìã,VÅ^šùÁšñß|ù¿uºÄlû­�ÅÏ _'—áæ:™ÑÜhŠòkG5ç :w…¿Ø²Û+×¥OºB†´ûtº"ûÄFgÀ*´§^(ðä‡=ÅÿtQŽõkIæLeW¦M‘V‚ A�ÝÖŽVœÙÕ™·þαB!bÅ­»ñ/Ÿ;+S×®ƒ�M¬PHˆÛ\sk”+¬×% ›&°RÌAé=ƒãà¦7]Ž*±eÕ…&Ϊ«Û%Zȉ±Ð S…ÚÁ‚Å™"�”$Ùì å{Óé°<&çäóðÖÜ6FUa*·“ź„}âä®k®,];`÷ãnúëëtóÝ;ÂíªÔÞá—¦apеÃ*[�Û‚p4(ø›_¥…ÂÌfó_þò>üPÈ'%|òÉ'1.*) Û½ÑÝà�(jذaâ §N�B!Û¶m™îì àY©¿w £ÐÎbUìØGïöy2[î´™y¤þÌ£Er¤~õ¼HŒ5Áòâ—M0RšÓ+Fɾ‰.S*È'aƒLQŸF”OTP$Ð+p[Ê9Ëpp°Ï�•-�Œoy´HŽŒ�Ë«lð5ÃÒþË™As˜[ë41ïœé΀UhO¿C‰G(ñh‘áúz:_.™ò¥BlÚM2DR@GW úƒ�ï¼ÚøÈÔÆG§Ê‘©ÑyÕpwH¶ür^ÞÅ%ò™ŠF0®k-Û_YŒ?AóKQ7^ýÁ°s�a×{…²s�®y òõEÒxò¬<İe*Ť¡ÜÅ[B)*Ûï´˜}¤6ò½f^8¾œH¾ôeBšô‹Å0æ«ßŽ‹þùAK`1¶‚Ÿbi0:oßv§õsGê>´P ×È‹@u°,ý²p¤91v   YÍ-¤Q1¡äz›;[°1°þÑ"9232¯:F>aiò勨QˆG—2¶�80¼Y,ª[$ºUë?±ôèŠB�޵ ¾.ùå&Ø-Íí¤øä5JÖ�ƒ“¬WÚ”\lmRµC9A*4ŽVç –¢áŤžÐ„âøñBDxÅ󃌃ƒò�‚ òü{x¡8ûhXuIÆEå8Ï‹¡QÉ>úðŸõ×5ØGσR²Nf&!öyxnM)tPR‘ª0:–3»x�Lï_W„×NÖéuµ–÷n}z² �¾yÁY¸3`9µ‹×É`tÔ·1E¯ r‡(ñŬ#KUnÔ4Ùê,\ T É:IÚÕÒÏJˆ&^'cü䯺ܦ†—vî6¼ó®~âò÷§J•�ß^“D IgÀrfÏ"Ïêo„S²'¿�…íó�zÇ`;áÄ·²œ…«cKîUœ1XŠ}òü‹R.“’ùÁ¸^9M�Ô©þ3ê웊QSü3^è­RŽ„}êIñ:ä\7™ÖO¦c+iÿ‹4ª;798˜2µæ`§¶AnË$k'Μ9˜Ãü�Юb±=–w¢?R´Ìð2`9(ÆNùÍü¸èíÛ·…(Ø"!Œ‹ÆÆÆ²qQñÃ)ãº{Ä>zñy2@!w®Z‹‹¿›ª´=W “ì£ÏÇwºèƒ%•ü'YCäçÉð£¦à š±¤ÈÑŽƒØG_tžLÆ] @fœo†]#&2–£ þ”rÞa—€Ìe’ÛG¯tž ˆ{ÔžƒØG_´q[$tmÚQ¹D2›±–†*¤éG�5^¼"PO®8–3;öыϓA¶å_ä`Ï»_�·Ìœ�é{j8‹…]Â)—I씟'ƒü¯\Îjaw‹ *ÀRta%Œø<™¶w·¦Ïê��µ4è'g—¯¶f°b `TŸÄ‹}ôâódVO Ì$nfÆ&5h×|§Ô–ƒã­�—Ùžp[ŽVBq\”‡àsÏ='n¨y#Ø'ÿìܹ9qÒ\òu2L[µj¥¸NËiÄ1½Œ<÷8(ï!–Üâ¬×æ9»3`yÈ®Â,O¸\‚OÛ rNyÚ¢Â,O¸J/ óxòš"!�ç’Ž‹>míºÔ6ØmA¸"�?àlúôé’ÖøâÅ‹Ek ¹ÿ±ÎÙºví ;&�Ëø±ìP<bÆêüùó|Q8ÅK Jô"±o»é%±¤³'€?Ep4�úÇY¬vÆAÍiè Ø©”©-æ\–æiêÉË÷ìTÊÔ�q%)Êkø*òø$%kÈÁ±Ön‹mCÝ„Ë9¸hÑ" ªM›6ØåwZôQlE‘SIÉrp´µçÛH·árºlY†²ð°eÁ‚’+™?~ëÖ­%ÆÒ$]²OœAÎ)O[T˜å WIà¥aO^S$´ò\RC޲öšo{ÊmA8ã`i0ñcqèñãÇ%€‰Z‰±4IÆAÆA1æ\Ꞧž¼|OÀN¥L W’¢¼†?¡"Ï�OR²†ií;×6ÆmA8ã`i0ñc1°¼lÙ2É,]ºÔåë–$!êIÆAÆA—ìg�sÊÓfyÂUxi˜GÀ“× ­<—Ô�ƒ#¬}çØÆ¸-gTA™õ>ñÄèú­[·/�ÀEâ_òË Aƒ4¼fÆAÆA1æ\Ꞧž¼|OÀN¥L W’¢¼†?¡"Ï�OR²†f}ìyÛÓn Â5¤†7‹ú¿ÿû¿¦M›òË™°âˆWð’,Ø5¼ ÆAÆA—ìg�sÊÓfyÂUxi˜GÀ“× ­<—Ô�ƒC¬�ϲ�w[Î8¨!5¼\^…¼wïÞ‰'¢ˆ÷íÛ‹¶×À8È8(ÆœKÝÓÔ“—ï Ø©”©!ãJR”×ð'Tä9ðIJÖ”ƒù3m“Ü–!Vî *´uÚ6ž¬´ÿ™'À8È8è’}â rNyÚ¢Â,O¸J/ óxòš"¡•ç’rðIkÁ³¶Én Âÿg˜å‰á9è{âý€_~ðŽÔ±ñ²}ë]y@äE)°‘å%Û / M¶ySlqäM!ú›·e¤�¼#=­¥§ß@=a8Ý6ÕmAxé¯ÄÍ/+³Œ<ÆA Ò‹p½AÔåe¢:oBuy‚¨ËÛv½AÔ¢ZMµ=ã¶ œq°Œ§l^ã ãàC‘”qP[P2ª7Œ|5ÐúÄTÛt·ጃêÏùîeddw9µÅœËÒÕ[`¾�Ê·žd›á¶ œqPý9ÿÁ½ŒƒŒƒŒƒŒƒ,Õn\´¿uÈDÛL·ጃÿ¥¤KIIùôÓO%ÿùçŸÃ.1–&É8È8È8È8XÆ9ø˜uØÓ¶çÝ„3–�0çÅï;æ¯ä£�>‚]ëbddd,ãìk>Ö6ÛmA8ã †ÔðfQŠܱcGPP�†—Á8È8È8È8Xæ98rŒm®ÛÒ×:’qPCjx¡¨ 6à‘ø€ƒÙÙÙ8ZMøäääøùùyâ½Klÿ ¦4dû&´Üc(†”t—+[´ÍÀÖɨ7ªüê½­O�²Ís[Î8¨þœËšwåÊ••íp055•×ùkÖ¬YPPpéÒ% ¯™õ5% ¿aŸq�q°¤›ñÕ[3¾�êeý”m�Û‚pÆAõç\f½IIIŸ|ò‰§/�q�q��‹Š»™Úv÷\–Æ8¨ÞÄñ Të˜á¶En ÂÕŸóÜË8È8È8È8XÆç{XÇ·-v[Î8ø_J:lš8vìñx×FDk×®ýÌ3ÏhûÊ ÆAÆAÆAÆÁ2ÎÁ®Ö§Û–¸-gü/å`£F�¦OŸÎ_üСC�F#–Í †ùóçkxGŒƒŒƒŒƒŒƒeœƒ]¬O?i[ê¶ œqPCjx³¨°°°={ö Æß~û-88xîܹÐgΜ‰53^FI8è»÷ϤÓIÄ÷È>áý>ïn×שE~~n|¬·ÿ…s‚K®¸|ÙDæK%u!Yéì*>0íݹá�·ò­’¢3`wY2¸"Ý›D:™¼k�:O4Š(›(ˆÈL”lOþÝU�êëdËêBígŠ^Q1™¨ª½:#Q Þ£ýÏ"—“bÕÏÙÎû@¡ºvg¥ì{ìW JãrÖZ$u/ßåù¢£>h+û²ÐÓg;ò�šÄH¼•Ú$¨—)†”‚ÞWéûŸuä÷ 5˜N¡id°�%˜Ê5¢Ásxe/³PŸÑû \á»r6‚[s!JÁ…mžEmÍŒ«ùÁM ?>z«(ê¯DØ—Hd" ªO´¹Èåü5*çlwQz˜=ÎRrØ]ª=�“Io¦À$ÊžBCo«T»ód:Y' ²­p[Î8¨!5¼Yº~§N�B�ùË_°vô›o¾�~äȋŢáe”œƒæç¦ƒ}‚ø�gœïÞwÈh4tlë³û-Ë««tñqúÊ•üº"' oqI.žƒ óƒ}‚dÿ²—ŒÔÎ'#1¬w3ÿZ¤×»,­ÄœBö òµv‰ÂˆpXýz¢D€”/Q#-88×Î>à�—[E°v_$ÚOt‚h Q9; ¯y•PXœSRŠñÌžG`Ÿ ý~‘f«ü4ùÅsMníÅRWñòÕ™/ÏÁŽój�}‚,ú¥¿ÀÁÈ A‚Êô¯»«—©Â,ÎÅs0w�}‚€}<àÆÝ¢˜Z˜@-WP¿ãÔs5œA?W)³$œH`Ÿ ¿Äp¤»ë°ð®É×—žƒã‰cŸ ŸÁ®=þ^ÂbÈ­D«ˆjÚ�ˆlÎ!¨þ¾ žƒõçØ'È�_ a—Ú•LþÔh)u=N ’Ñ—R:z‡ƒ­“ÚV¸-gÔ�Þ, ýÁmÛ¶¡ÆeË–EEEñUðÁ>>>^FÉ9è³å5E´é³kè+Uô¿y­‹‡ö ›fYº@13Œ.ÉÅs°ÂŽçsÖ~ðo�ÑEÓþ  Ãïzÿ‹öDÒû›mÿûüm¥ÌB ­o$¡d0sc¤=öHK(ŽE ø$Ižƒ‘zŽ7A:jm¡öÉAI6$§ÚEO9ñ ùE+N«Bêm²ß08� ìcòoˆBž &ZKô™ý[Ô�(Ô>¨®XT‘QB+q’ç ¯ýašƒ(±5u;Qˆ¹zs¸+ð�ƒzýí_˜Ø‹¸(M9ØÖ:íqÛ·ጃRÃËEa‹ÄÕ«Wÿýw¡ÞÏ>ûì‡~’¥WJÄÁÓ˜žØar3€ú¬ª˜ôÙù&è†$8(^3£q`²XÄìër¢I,U>];¹oúÞ˜LÝòŒ_�4,‰ÉØ¿P’M;î'AÜÞï½DTÅ>ç²Y‰tˆ|ˆÚ*¹¾E�RÏüÄ>Ïøž}fµÔ°W·ODºïìMh ÁÅ ›¦Z œ}bKÇO©êdj¹—›l¼…Âj�ÎH-÷¢°ã'Üš‡V¹¤Fœüiç–“« ÛÛsù[rj„yÃ÷·æ×vV;ëŽ;ÕÓˆ-&V3˜ô £zßP[4àSª7™zîå&;l¡è¤7R¯ý\TG CÇ­�InA½Rï÷©|éô…Þâøj¥¨|I˜õÛÆMn ¡&n~n˜´Ó÷[,Åé©’Qj——)‚Z§Šõûv !ZgŸ\LTÉþmyU5Ð>Ê[°°êÏ"—b�ªï£ïý)eO¦{¹ÉÁV[(Òþ0;îçH×W¢£¼íêµÄ·WG¡™‹Ç8ØÆúL?ÛZ·ጃ¥‡…÷KøÏþ˯õhí%á ˜bбBF—œ¤¯VºSúøH¢„¤g.“X!cI‰õ«^A’S;Š£=‰D•E\ã3œ"г÷Î0% ‘$U±%…Ú-¢¢ê"ØÝ'ú˜s=íí.æ’È++\L=—:VȤPXu|ýïsJjÿB&jÄAIŸ+dÂSª‡Iì|²çÊ,}ò�Š^Þ(ªD VȧPTu.3°ˆ†: ŽÆß.Œ�p—‚“¸%£N »U*¬�I1Puïv‡¡bZTzJX†2 D‹`×—È�‹@Þ´³²™½{øV‘W[””ÐJ%‰2A)Q�#ݰ{’F�‰\q评ž£÷'GX%/p0Ïúl_Ûz·ጃåˆç  =~ü¸çÊçKvƒƒ šiÄtýÿý­ÓqѸX|E‚³’$£ÇtGuµîgöµ'¸ö“þ!âÝiûÒÍ$¢�DF þ„¤ URöI2àÐ'Tw[ vßÛW¨Urâ’}’ •ìÕ=~›j-$suýõ½ÁIÇϸ˨1›Óó/„£$¶À¦,g®Ü1•»ïÈ3,øùq¸ZMÉ’»‹ ³”]µì78þ·:wT±W±lU ¸IC�8DŽñç~xwŠOvñ! ÑuÕ2<^]0«Xß�Y�ýÛ‚?Æø©j´ðE€£¯ì§aÕ¨`QRTÀ'weÙæ°;ìÿÅÔ·×®#S 5~‰0‚Z®¥8ØÒ:£§í5·ጃžF‰‡ÊïÚµëóÏ?ï¡Â…bKÅÁŸ®8]'Ó¢©BR̲ê…¼{Pœßóü¦y<í}4v*J¡\àOÈÆsðŽØa[_ž—½ªœ!¬Ðblðñ;T�oQÑŠËLtR¬€§’+<—Üõ.ÑõiaÎìYŒzUó¹¤Zs›&„nã÷ÑÜv¾>‹à’+.˜¥@4üÔôDàà"û ®Ä°ë@RÜ"öÚu9ìT,…Äô ¦û|Áí„‚oNÝç.!¯h·N¦…ufÛ·ጃB›ÿߥ`Û`ùòåçÍ›÷·¿ýíßÅ?Þˆô¿vA—XN_½�6}ílnà°oâð{è»Y–/À'QÄ,+‰ž}k¯9)Ưfº$³Ç8ˆ?ª1ôTµ‚ØßWÎnÁ¸¨ ûÄ.p%Qn¡›‰¿á3_´¯ åÄûðìw‹’(¼&‡¹._QÞQ‡4ÙÆ5k™Ã9‹|ƒaKŽ?>ç¢[ýÃ’ÊÕ W ì¾¼úƒƒwµTôòFf)¸°a#ŸÑ5 ] È?šžþµ0‰Ò rÜt¡FÄžˆ$Õ4CÞ î‹}²IC9aqÁ¬bŒÅ0¹o´‡¾ÕÎAÌ|ÙéÆý{Î>ÆŽ!}Á¢¤Hh¥’|‹Û/YS™tÕÇq½BñÊIQÚq°™õùn¶Ín Â5¤†7‹ÂJQÅ�^¯×ð2JÂAc¿^æi}vlõ=ð®eÍ P�ÌfŸ=;xÀqûèM&C§v8U†ÛGŸ¯¯RÉÿÆU þ„¤gòdD~^ü¬é{æU<þRù�S|«–×™M™‡^äsf]ÜVaû,Hp^·Â[œ^ùãWäåWüêAô´}2MKˆ2íGÇ @š@ C\X?ƒu‚¨�Ž*M0æÍ$ÚM„ÕŒìÀ5½o'ݧDííËÿ> ‚ RÔ]ªùÁ ùT}µØCmŽSÃ�Z•[Óú�BwO£ùÁºùiX 3tO«1ÇÛ=¾±1v Íú§µÔFk—Õ5ùñ×›Œ>ÚnÄ�¼¦c«`�LF‹8Â¥Â,Î…þ]ÃYÜ*Pl“o·‘"«rëBû*Œzü·521—z¼Ç­¥‘|ü´J™Š´Œù¾4+�ö„ÑñpÚBU�Ü1C‡Â‹q0ÓÈÁQQW\0‹ºØ�0Zc§Þ|¢ ûßEíQ˜È®a6G„™ÐWì«IÑU\ì¢L ­ÄÉÌ|ª3‹ÚïávÊ·ØHáöoKçC…ÄÖ ¬��«ýnÊìÏM¶zC‘|™e†ƒM5d†w‹šá䃣Õ4¼�’pÐÀÕ£BC»5c.åµÉÀ_¡èõ¼1 �³Ò`wÅA,3À2<ûÒôûrÐ=E!X~€?íѶHFÁMqP¢ ÈST^ ʲ¯�7Eu³Ï9ò9¯õ&*o'/à›j?5 …+–Sd,ê©)  ®šs(,‹ŒXÄo Ÿ(JêFí?VΩ;Ì©Ÿf 0aßD`”OõnÉ>îÄ“îÙ¿÷¨˜—çü™| ÈÖqn­¥÷”ŠƒØ•Efû úEQF7*ø¸æ°�Äœ T… Õ±5'�²Œ ã¶1Dé©›}\|gÄÉî»23P+‚qøÃŒÿr†ÛwÙ`S�ÐËû Ñû`b‘'›h…È+d+®ˆÁ'ѱ9""‹Lö‡éE©Ý¨çÇÒÕ™IAåIo"K(%µul©�"$µã`®uNgÛn ÂYPCjüïUJ@Vʤ °<äRe(£¹J�_ZyÕ9¨µW�YžðƒšóñL­²©sPs¯kl9¨WgnÛNyZÑŽƒ�­s;Ú¶¹-gü߃—†wÄ8È8¨Ü=tPO�N½L­WÂr4'�z�Œƒê­ß@5²Îë`{ÓmA8ã ús.kÞ�7^¿~WµaÃèŠ ¯™q�q�qPŒHuliîeToÍøª�u~[Ûv·ጃêϹ¬y±6æìÙ³¸*ÅE2¼QÃkfdddtLj8XªÝ¸hŽuaÛ·ጃRà E]¼xñîÝ»¨è‚ó�†—Á8È8È8È8XÆ9XϺ¨•íÏn Â5¤†Šš0a·ß~+T$>\T0j¨0222–y¾ØÊ¶Óm©g}‘qPCjx¡(a\uÝ¿I Êsõ2222–qÖ¶.mn{×mA8ã ç ≒5ß=áÒ©oµ`û&©/}(¯R^Ð5_ £^ ['£ÞŠò¨Û9¸»¹ÍMaTÈeÐË8È8èbã¼dã¡“ ÕË+yæ‡B˜&™½À>qêØÒÜË8¨Þó̶¾”kÛë¶ œõÕŸsYó222Š*†”tÍI§^ ã z Ìs°†õ¥Æ¶½n ÂÕŸsYó‚ƒØ3ˆŸ>>Ø@�äæÍ›ù¤ð¯†×Œ2ñ ñ=ñ~)O‰)y¸æ˜sY -ywÏeN1¡¼£{�}â*Ô±¥¹—qP½5ã¨êÖ• mÜ„3ª?ç²æøÔ?ž8gÛº‚lû½$ô¾ÍËb[KÞаyU<Ô˜có²øüüooJE›Õ›2Æ6ÇËrÞ–äÙa�)=}xV³¾œc;è¶ \~%·nÝÂâü–-[FDD É•œÛüàÁƒÅ‹W®\Ùb±øûûׯ_ÇŽX,_¾<##RRRfÍš…e�â ßÿ}~~> ÷óóCø¡C‡Ä^¦«?�×JðQ/᡼ü׌qPCPz‚`.ã ¦ ô&Q——!ˆê¼AÔ¢!«ZW×·v[.ç ög‡„„äææ>ùä“à @&n9§L™ã˜1cŽ9²wïÞöíÛ#ùöÛo yfÏž�.É´iÓŽ=ºpáBÐpðàÁ‚÷Î�;UªTILLܺuëûï¿ß¹sg“É„œB¦”©'À8¨!ù¢µí0z³3ˆºµ¥†¬b}¥®í·ár í0α”s0..®E‹Bž{÷î¡gשS'Þ‚Ÿ¡C‡ æÌ™,ž;wŽ·¬\¹ež9s†OþöÛoèZÖ­[WÈÏ”2õ®GÉÆE58eýAõö�o *[×Ö±u[®ÂÁüQÎAtåºté"¾¶øøøîÝ»ó¬Ù@&où׿þ hÈ'ÁЊ+ŠÃçÎ�‹ ß}÷�ØÈô2òÅ]NÖ,ƒýÁŠÖuÙ¶ãn –ƒ+V¬ÀPç¦M›0�Pb˜Ó|ÇŽãÛíÉ“'j¿þú«¸�ŒŒìׯo‰‰‰éÕ«—Ø»{÷n„/]º“z€>¡¡¡û÷ïmL)b\THòJzzz^^¯›ÍæaƉ3œ:u ålÛ¶MldzyŒƒŒƒŒƒŒƒb~i¥kÈÁtë†ê¶Ó%—¤­³‚:4Ä¿qõ‡åà¼yóA,ƒ9qâÄáÇ |}}wíÚÅ·ÛŒƒe„_Z]ã ã ã ã Vì—ó9(!fšuÃCqðÚµkƒaüøñâf¶uëÖ˜"ä-ü¸èí۷Ű�F���eã¢â‡SÆuÆAÆAÆAÆA1¿´Ò5ä`ªõõ*¶Ý„?Ñ”�aN�:FL¢IÇnèòu2X Ã7ø­ZµR\'ƒå4eœÌËcdddÔŠ}âr4ä`ŠuS%ÛGn Šƒxó07vìX1š5kÎ[~úé' “ŠgA@ì›8þ<ŸaÕªUbPb‹=öM`7½¸@¦—�'À8È8È8È8(æ—Vº†L¶n©hû‹Û‚pE¾÷Þ{Û·oõÕWÁ¬ž={BLJ_ŠQM �Nš4éƒ>Ø·o_Ÿ>}�ç…^šnèü>zl´Ç>z,›2dˆàŻԅ}ôX#Š-X9#,7²1¥Œ<ÆAÆAÆAÆA­Ø'.GC&Y·fØ>q[®ÈÁäädÐ MP.]º„Æ à 3™™™Ø=�®_vvöš5k$�¶p®ÊAfl–gàÏUCá999ì\5ñÃ)k:ã ã ã ã ˜_Zér0Ѻ-Ýö™Û‚pE–µÖ˜]�‡žÀñãÇÛ´iƒÍ/Xœšš*9K•2222jÅ>q9r0Áú§TÛ_Ý„3z1e¿Ø-[¶`ˆ»oß¾8Ê+ 6lØ ,g.¾ä<¾˜ÚÔ¦Ð@2)5Žf>îx?ÅÁ¹T¯"ùY("˜ ZÑr¸ä¯±(éË&–§:m(0”Œ&ŠK¥þ3 g¿K-§”*d0’NW’ÒJBºã©M õ#“�R#ifGî7_¢gÚQýT ö%³‘*DqÉÛ/»x{E‰Î >N¦6¤ %2‘>•üfFùN&CUÒáîbÈò…^pQ`IÎÙîwœÊ·!ŸPÒ›($•Δ²ïé_)4�HGÍI]’òKx®ZØq2Ý !•f:jnÂÕ"dS-S )gºyï}ËBØøœ’bœ4¿ ¦Ô„ˆ™C•zá]î )ÿ¼•2Kr®Z�ビۤ[B}õ&CpjX½™Íù¨‘·gÕy¦),³Ád)×<µû‘'](F•¢¾ùxtã6>Á¡z“‰S�#góÙ>»›8lzp|²Ád¦¸$Ãà)AŸÞNT,�7jÊÁ7Sm_¸- Ö7…6ÿ¥\¹r¯ 1b„ú]—�ƒ[&‘AO}›ÒîçèÄ‹´a<ÍX»# Éh . èýy„l T5…îîvŠÂ’�‹¦l!½�šõ¥Ù»ié š¸�Í- l3ˆÊePÓÞ”^‹ôú’”æ’ƒ[ž°ß]]Úý�˜DÐÜ®ìþ :Ðèæ´s”0ú™©EÅRs0³ö²ô¥ Ý|‚6�ßÜBØùŒ"ÿ%t€‚ORÀZÒ—ãhöo5J8%OvØB:UêKÝwÓc'¨Ýj2W »:OS`¼�ƒ‹¥.I�ªÌ*$Z°ý}úRÈn ;AÁ(`®ƒƒ† vÖ!_—’ƒ¦µ¯�Á ïÑÝô§7ÌûÞ3½¼Ò8c:8Ë•Kº5(>θp>XiÚ±Ý8y¢ùäq9þ‹ ³xWÜ–Ù¨.¨o^Âî¥I'ÖÇn˜9w$\™wÏ$ŸÝ(–ðÉÀbÌšgTÊt‰­¼-=u}F߬N»û÷<1¤Õ†î æ¶æ£2údé�úúϵ(;ì|<6' ìýápõ2UÈ×Â-µïë¿zwä–Ñs7„�›‡´ìêç篛²4 œ°0ÄÇW׬£¯Jir0ÆúV’íœÛ‚pÆAuü¯z1Š™ßË—/«ß`I8xe ùûÐt‘”ÞQX;ƒª$Óï{ ½§–p¯zJ93JpM®mWÈÇŸ:�PÎyðA¡´è^Y@þÑT�nÿYA¿®,f_Ñ—«¬Ta«³ðš¤Ð+Dþä3ÂE6þ%†A‡96¼ª–YÂ)IrÄ2ùSÍjtë– ê‚¶ýÁRs0ò éüÉo„2ÝÐ4VUv9!¬@(EÅrî ò÷7<9HÑk6„,Ÿ¢èU4ª0 ® Wöêü}CGôTÏÆ{ýrkéý3nWɬά'®L2ù›³FÔ“gCgP§×Uy¢–àrýXjŒÎ,ŠŠ ¹Ž\‰éúŽ”çyãt ¾ùϾ&¸&¿ ËúƒQ‚E¢hÊÁI¶ónKŒuã :þW½Øí‚ó °â7++Ëh4FEEá-!7oÞ”ÜoI8ˆ!P|á/oV@ ×üAÅ\ Ô*»˜E Peº‰_΋!Pºõ²‹œqC ÜÝÍWC›@=ô ‘yÛ`µÌjÌÝ0 Ü„^v‘�ç`È'¥å †@QÝðËN98á.ET"ô‡]är–žƒE9‘—•aÇq° çŠ~ œAFCEZ F �âGbùâsÁ"(–ï¾åùX?ÁRE…YpaÕU¸¼G=¼©ÿx9ƒvRÏ©ˆ*Áˆ!P2èòDÁ"(#ï<‡áÐc8, £AŸ=¾‘`QT$´'1Н÷áËñb#¯O\ÄQïý‹×Þ¯ã`é=4@ž™·hÈÁ(ë; ¶¿»-'"´u’Ö�%ÿçŸ^”ŒõºxÑä²eËNŸ>�ãÓ6l(¹ñ’p°Yunâoß ”Už� ¡¡íèæŸ9ÒÁˆß…½³‹Q¯{#Š /fy8ÖhFÁ4w¥fq“€!QÔa(íº)Å¢Fl–É ~îCYåìwHC›p3ƒûÄÊŒÜýb¼Tl”è.gjFº ÚG†,û$`ù ¥°›Å¢ÂïSø] ù‚L¹¤Ç(âÏż<"…%@I2©ùFPÏ}•Ez#ùEQ�¡4ö¦‹9Ó(¤2ÚoPE¾C)êf!õ¸ùAÒ…p÷ŽyCÿi}[ˆêðÒ7nLááðÔU­BF#EF°|{Qæ÷vã§e|öX¸©C³c¤¦7·©¨Ž-¿fµ !åö­°d¥£:CTXÈÐîé7�ɣ§DíI§^“»ÄET ÆrÍR}#ü:ï+ˆÌŠÅ¨_T@Õ¡u†ßœÁgȞГ†�ßËñŸ™è9V�íî—ÿõ8!\Qq†-Øë5ó �ЯÝ•™e³ �Òsß,ר9!øæûÎÁÁ÷/ÄÃR³�ÅY�r0ÒúN¼íïn Â%-ÿ$™––†qQ™.ÜïêÕ«a‘lcá9ب*u¨ç�­“‹Q ý;_ …вatz)­A¾Ô° —‚ø]8»¬XþÁmÉb*fy8búÏâK!4b-?MO­ ߪÒÐC̈!_3…øÑ²Þtz aä3ÀB +(�î³\În5\bª1 ð2dùr ð_FÁ§ÉéÈØÐö/ŽG¼°vç’Ã%°O¬HÀ'I†e�Ñ—,!Ôb=~šZ® s%4,äà€OÈ`¦Þ¹¤Vn0p…�¦@û šÂ.`­£°SöùOä– �Œª}CuléÒÒÈ×—‚ƒ�óæšîÇ< èê×C”iýZîÛ¤ÏmbzçmÓηõ-šcNÙôö[*eŠ!%×ÍÉ:_}H`ô²ñɧ7D¯˜¤ðómX]’3ó·�q‘æJå%vyRU‚14#Âèk²„ø4YÖ¾×é¡MWt0˜ã& j>Ýc¡Ümêt Á}­#—3Ŷ`OÉ0bÖ/(D?uY(B§¯ó Ðe7äH·â�HT²t{„¾`s8,å3�‚eÑÖˆ¦|©ÕÈRzúð T„uW¬íŸn ÂK%BCÊ”ÿ¢'P¯^=PO8çW~ñâEX-Z$¾‹’ôÓâ¹ß³¥Ch[=гšï”ƒ>fGf1¡Kq&åõø4®ôáK9Ǭæ, 9,È©Q0-Ú~w½t[ý˜ýîžvX€¹ s©\eÆÐ @­š¸À–Þ¾,Ó©#›ÿjŽzA‡ -á¿Qˆ•‚?¤€×ÉP‰ô‰.Q%à“$ùU Í—::€­íÕõ9LïSTuªÒ¿Ð¥í7¸ÔÑË ²×zÈa‰±êA+¹{yGÁU”G…Ypq AÑé›;GÈf\²Ó®?sëgðµ‰�±\»Ê{-?üK—XKF…ÌrEŽ*±Åœ–ˆ2£—ŽŒ1«§Â’xhµ`�‚%40F-+6*êÎhÅÛCÒÂQN“¥í„lÍVw†¥ÛáA°TV³‡�¶";ï-(ß!ÝÃÒ¬“IJ3â�a%Œ€¶™«Ã`Ùp8úó{‰ðÆ%°xæ“_Ëmü :*΀>c…J&!³DѰ?f}7ÚvÁmA8ã ¸Ùÿãè˜ õÎ�;'Üò… `Y¼x±`�RbO~ίs íâëœeÑ“´§ÈÇEã#™šƒëq…¾zÞA½-9Ë�E‹v¬Wž+ûüs´]œÇYõ(fIçöS\]è0:£¡pâ^› ëÙ[þóŽl¡9‹ÿ"‡EÈö×yÄÀ©`‘+ðI’qöêž<ïà ?Øt!AÐOòsƒ“�Ÿq—Ñx6§OúÝ‘_R`žœ’Ëd¯1â¼#C¤ý9,B!Q?Ûï}Š‚«(�Ub‹®v-ü´ÌžŒ–Ï?…Å8û9ôû è»v\P }û`ÒPl‘芴Œ¾õ°«EWþü[‚¥ÂEnô5jÑÁ%°KS�Åœvý�ب¨ €STbêaÁ°®ÿù±‚wàÅ °4ZÔ¦ÏGá ‡(¸Fÿ>;¬RV� EEB+q2«žßü=çã#&aÁä ,ûÿW½¾Iˆ î™—BÃ"õ9-}„ÌEC†Z÷DÙ.¹-g7û‡ÚI¨·råJX°‘PüJÂAÌâ›� ¢õ¢6r–ŃéêVN‘¯“i]Ë‘Yˆâ•b,“waÁl ]ΑsóÎ2t±Ã¢1ˆ²Ï‰8ˆ®,‹‹8,‚)%]K£Æ,P Pãz@çÙ°C�ãàb‡E ;ôMyÊ.>›„S’$fQøç\ú}U 8—¢€‰’r„dLQWΙ‚Ù@”qÎ�¶Hû .vX„ØRsÐ0p~Zæ³b~‹ñ…ç-_Ÿƒ¢ïÒYL:CßÞXA*¶HtEZ FÌ¢Ìòçä· Š»~ißľÂÀ-„(EU‚³�¨®ÿ¹1‚eàŽƒ�·ÍÛÜJ¯3Ãl¯ð ó[亄Vâ$fñÍß}NÄAû$à¤ÅŽ"¦w}‹�ƒP�yÔó…» Åå𺆠þè½ðß¿u[Î8(nöÿPz‡°T¡8ßuÉ’%ØNرcGÉ( ±MžãIqpåH΂�„°ÔÍä6 û&0�×+£™…¨’rpÁA®1õF­ä,ØH(æ¦Fã¢Çre ÔC/o¥hsÄ%;“¹qQg@‰]�Y WÐAbêùÛDZ‘PŒ?^Çä fа©Pî,¡Ìý¡:ñ*ÐVöê°‘ðɯ¨ïQ‡tÚÆå¬9œ³ŒûÅ}†ÚkS�üÄFB‚¸œ«4d—‚«(�„S’$&þðóõ»qÑX°‘]½ºeù×Þ‹RJˆÇt¡�Y®¨0 ®Äƒ/£p1õbVN† …À¨…c`ÁZÁ¢¢È9%¶t=È-¶õcÓ•Üúfl$„@Á¼¡àuÿùÐôˆ¨šq‚EQ‘K°`~ÄÔ›¾’ÅX¨�GP Æ¢W(^9#¸xESî ÿýŠÛüÑ^ÆAIËÿÇIâ5‘x_dbb"UKNNÆ»•ïÝ»'¹ý’püÂ*,•Á@è±E´d(·�°cýBÒa=N˜éÚ€€K,›)IÕRèÞžRp°«ß�[*ƒ�Ð%ÇhØn;aNÇBbŒôÙíœÔÎC;@3Þâô—?.†H1.ß·I8%OvÈâÀ` ôØDZÒ‹ÛNØ1‹£Þ÷‹©|$ù˜í±„Fl9”"XÔ˜ÅÃËÜ�íÄ@hð1n×<¶š;rQ!Ÿ‘¹=¬£à#œ` �>‰tÑ¥š+tà–Êà ˜~Ǩùn;aZGÌ ýD„¨HžTÈEû b 4ìbC©?Y:rù‘´t¥à×)ì(… ¿±öu2-ÔŠŠ±ÉQ%±èÛäa© B±@Ô8÷ {êÛ¶áó˜ìÃ12ú† MÛÿdzëMI,§‘” Nª0‹wthŒ¥2M:¶.zÉÓØNб‰8Êœ™lJŠ[TtET‰�˜õÃR „ö86¸É’v˜,ß±"2Œ~ðBlýD£Ÿ©ÁœVÝ�>ÙñÝþI­Ó°fûîÅár]B+I«\°T¡›ŽEO^Ší„Âfy±6›è±Å¾SL.~ñlFR’r0àÌþà»ß¹-g”´ü,)~%äàíwir/JŒâ�—MÓú#X¿"Êð î\µßt A UX×{·©÷dŠJäU‹I¦~Óhß½Bï„×8üñ‚ódx¥õGlqÂ.Ê™‚£Ò&·¡Ä0îP5 �NkG÷Vq¤û`v–+o„G®5në«ØI¥!ýOïºó/·ጃâfŸé’'PBJÆ6K“T–‡\΀å!» l)²¬4Fv^û× ­œQ¬ôv�hÞQT˜å —œSž¶ˆQåQ]Cúž<ðŸÝ„3JZ~–?ÆAÍiÈ8Xzö‰Kðþ„Z<;•2=M=yùeŸ¸p-9xâPÀ/?º-¾'Å­>Ó¥O€q�qPaŒT¥wÉúƒ6« ×Ö%ç”§-bTyT×�ƒ–£øþü“Û‚pÖ”6ý,-zŒƒŒƒŒƒBgʬ”ù=M=yùeŸ¸p 9h:rÄrã†Û‚pÆAQ«ÏTé`dddóK+]C5]ÿ?·ጃҦŸ¥EO€q�q�q�qP+ö‰ËÑ�ƒú÷�~¸é¶ œqPÔê3UúÅüÒJ×�ƒºƒ'ôßÿâ¶ œqPÚô³´è 0222jÅ>q9r�ö�¢«·Ý„³÷Šš}¦Jžã ã ã ã ˜_Zéšrð4]½ã¾ì;Í8(iùYRüµbŸ¸-9¸ç,]ºç¾ œõÅí>Ó‹?ÆAÆAÆAÆA1¿´Òµäàî³tñ¾û‚pÆÁâ-?K‰ŸÏA*°>\c¨²Ïڕˆ#¸½+ô–Í›b{�¼*—ÉæE¡¡6/KÛ‡Þ”n¶MÞ2Ú¼,ò…²ôµŽ(=} ¨�Ó7Ü„3ŠÛ}¦Œƒš#Ò«s½AÔåe¢:oBuy‚¨ËËDu¢ž¼X-9øÎÇô÷î ‹·ü,%~ŒƒŒƒERÆAmAÉ8(nŽäzaµÃJ_ÙÜ„3Ê.³=ÆAÆAÆAq—S[̹,�q°¨)Rþ¿°�zËJçlî •0³rO€q�q�q�qP>ªYz‹–ã¢Û­ô¥Í}A8ã #žó'À8È8È8È8XzêÉKÐ’ƒÛ¬ô¹Í}A8ã s 0ã ã ã ã œb¥·hÌÁÏlä¶02Ô©>ÆAÆAÆAÆÁÒSO^‚–Ül%«Í}A8몂àîdddd”S¬ô�9ø±�ÜÆÁ?8ç\Ý>ã ã ã ã`é©'/AKn´ÒY›û‚pÖtÅ‚?²Ÿq�q�q�qPN±Ò[´äà+�±¹/gü#sÎÕ½3222–žzò´äà«V:is_Î8èŠd?ã ã ã ã œb¥·hÉÁuV:ns_Î8øG末{gddd,=õä%hÉÁµV:js_Î8èŠd‰8X5ŸH§ ýϾ¥¯«HjN沄PzWúO•·W¸|ÙD~sÒéäì‹Ü‹*Ž/ A­¨f2¹<—pд«·W¸ ]n¾Be(zîYzówê7—*çR`8M‘Hmž¢ ?©¨~Îv~åÚÎNçÞR±¤e'Sˆ H�kÒgϹz{…ê9ÛùÝ�T·«ØÝ.Q£:\ΑÅìrDº>_4ÃÉ·¥ëY.Vî ­¨^¦Rr=$¿�â–?ûŸ¹ò½S1‹ÇXª¤ê|,ú?ß:•ËŸ\'/G°¨Ÿ„–”ßH±º¦gg"Pј§R¦‹sÕtN¦á,hø�ô‹‰*Yˆü‰þ¿½ó€�¢ÚþøÉn’Mï½!@B/�‚”R¥#-4Eš"<é tA¤ÈÁÒ•^ôí³�…÷ø#ÅŠO(ûÿÍNvvvfw6»!!‡Ïýè™sϽ3óËf¾9·Ì6 ÍÛ…th÷=ÛUûÕ¶z =NåsOÜ�ÑlaÛàÔ0­ÎÝ7Ú¿F^½¼ßžSãOò8“ƒ+ôô�Áñ‚æÌÁò̹Âî½HvŽ€á�@ãï ¼üyúSB3ê¶‹:¿CáéäK£¯ØBa¡Ø:·Š€<©œ|‰Â)!œîî�7­%ER熔Yƒ4gppÙ9yær’Âäm¹K¯ÿA^~Ôr=µ…¦¥AË ÆW£ 7í Ð>ÏÍ! O*'Ÿ¥pˆJw×¼›Ö‘fw¥]céødzc(U‹%?/úf–]Úåà¹#tj»¹œÜFá¡”KŸœqKþA±QÂ#pÔ ¿÷"�g.'Ÿ×…ø$„v¾ûOÔšýƘš‹zCÓÔIìôY¶´çÈ3—“DáD ¤½+4t›(üuêö$i’f¹µ5ïØïSâ”Úpîi O*ÝOæy‡ûú'�€®=¶±Æ]SjË®G†´|¥£W¨Od�ØÑw^P÷#zœÌÁr¸0 A9¯/_)øØAá×­Ñ”ÒUéJ>4ö�‚ü ¤õ¤úãæ ”g Ïç)= ò>‘†ˆ™7Pð;!T|;á´ƒB¿]§¤C>¨Èþ&îjG¯w˜ƒ Jo¼»ÖI÷síÕte—ƒ �ÜlìðI Ø�?Fþ~´u•På…òÒÁøiyxJ�ù ‡¿E€<Øšm‡Yêªäƒ+páS‰UQ Æ�V+å†êxµÇ³ÔUMNÂéÒ¦tTWÁ“Ø¿ iÜ€N«µ¢Ó>³”µà�¾)~Š!·,sŒö6Q¹åš=Ö¾ÜжÔþ.ãîêMi�ªA—Ç»i5uži*…µ{§j³^í$y†39¸TO{ Ž4ç|°œ£Îîí;ÂÁô>ä¦%ð||æ¹{S­< ê%·¦�ÊI˜+ô°O ÒZËû\ÅÁf}H£¥å¬“î•KøÝ§Þ³­×‘ª �ýÃ> �w7ß:[&œmŠ J:ÀÁ>��ºp‚ƒY�éÑG�K8XÙøiéuAÆA?ÁÓCkàSPR�*;ž >�à+_Ø.Æx$Åø¶¨c'^]e‡Yꪄ>�@‡6¨«:\[©õÕ…·¨ª®’{ì3KYëÖ‡HKÚ ~$†n�,b(–ܺXxT(TÐÊÎaZŸZ¸»�žALÛ·Ãçd”âGæÿžÄœÊ’Ga0í>z¹²)pÏ|òª¾äìÌ þZøµõr êeˆ?¢¼#„Oˆo¥�¤¿šk­aQ�*[ž´«¸yëü²ë‹©ßÃ+tt÷°‰ýµ!˜sÕU«»îy[ÍE¿RöíW_Ñz{FfW·V{¥0`‘±a¸ÕZÉiŸYµÚ«DÞä–mvj– 3ƒš×Iûi¯‡I}H{Ø ‚ ª´²u˜wuŠ»·Gbv%1 Í†î¸�îLJIñ£ÿšî¦qó‹ �< Ù\¤§�Ç šs>XаSê.åž9ä|¹o0®÷1‹CvÍf ÎQ?ŸƒËGØysBIqpÈrá|cߴ޹W.SP$¥dX¯5�¯*9…•<6Êò¾Æ»ËSèŒK€p!˜7ütš²VÙ[‘9¸|¦ñt/›9xù#  P>Å�<.ÚÄøiiõ¦™t�Sãe”{„:¥ŒéäáGX'óøus€ …ö±%¯�Y.Œ2Ç¿9StV8±‡š@?¯ÚUÞ{)ùð+�½ÛÀóêdy+…-ªP£Öòþè­Þ›#­F†Ô«èâ×éÖZ«µ’Ó>³,j5F15oZ:y¿nB &Í‹Úbp°Åò\ÜÝ#oöéÖë³Q8l2¯�»nG‡Â£õr—< Ù\¨§Ç š3K|JÑÝ3£ê‹dÆÝ.Ö©$,’¹½­¤8X±Ž°HfÓm+¤[û?J¬AAQôòy+µ&¢JÉ)DX�$a‘ R?E“O¦ÑÇShËpj˜B!¾„CE€Åa‘9X§†°Hæö93Ûµ¤æ ̇Îç`xa‘ÌàÛ61×f§ðo¸ÐfÀ0ƒ‚Sv½ë¤a‘ ˆŠ1XŠ52Ä*?î’Zy7¨î)ª ‰P…Áu’±H¦Óm+¤kuzN]qTv¡�Š-sÕÉ`P¢›f¶A·É¤=JšÈ­¿�0j¶›¤H™¡ •­C¬�Á"™Q·ÍË`b›&邼rwôyc’Že3î>¶zp&_ÒÓ6ƒãÍUüã�?Æ�תU«°°0|L¦N�*=—ÿþûïY³f5oÞ<44ÔÃÃ#!!aÔ¨Q¿þú« ‹/NMMÕétÉÉÉÓ¦M»sçŽ<à§Ÿ~êׯ:÷ññiРÁ�äµl—*î�ƒ?žZuǘ=WŽ‹~¶ÏÓÑ 1vêüqÑ?Î×nŒÌaµL…Ú"_úÂJ­ ‚Eç 6Dw—m�q7WRl0åT·£X cëð³=ÆÓ 2SoËròð–’þöEAÁõ yŒ0|zçÿÌaŠíKYÕÕøi©1FéWd|ºJéi'F�*«ž”ÏÞÀ†Žé)ÕVúz <ÞõÒ%Œˆ©ÂÚ�*¿ì“;åv¡ä²>›�~RÆäX�‡µˆ±Z+wÚg–¹VkÓmŒÌó£0Wèö´Ùعµ&Lʨ§¶maKZcÉ�C~žœôH*î ['êNlVU •ÇÈmgrp¾žÞ58^Ð\ÅÁóçÏvƒ2éÉ Dúùù 4hË–-G�]¶l€X­Zµ›7oJ1Ó§O×h4“'O>tèмyó@Ã!C†Hµùùùéééè† öïßß±cGð‘R¥J�{ã`�Ñ�1sëd<|¬­“I5ǘfE�|úϾ=ºƒð;wfyIqð‘ÑÂùœQ’N„ vLÌÿTYeI@±Ö"Y³� ŽÎ2ÞÝt»Œ[K­ªQ•h»1EËG0žn¿pSÇ«eÛjs˜ã¬nü´t;c‡qB•.Ø)Ä< n&åÌ& jÕî7 JÏ9ø¿âr°âèlœ®Õ™Ùr¨‰6ÆB=ÃüƒëVPW©=jNY÷¸ÅÔž1×"Ä/£f“Ù#pp’àÄt¡mÊQeË~htCÜ]Ÿ3Oª†^™Üû‹Ñï=�TÑÓ_Wíñ:êÑãLÎÓÓÛÇ š«8(=‡ùå‘*²¿;v fýúõb+4ñòò6l˜ÔÉÌ™3�Å/¿üRô�ˆ?yò¤xø×_£õêÕ“âÙ(U ÜŸÎ'¯Š©¯\Zwò�Tî›h0Qf¢¡}öIµù[)ÄŸêW±A„99ܘO~!T¹¾’t"Q5W¯¬²AÄ…ƒù+…Ïúín-]{Y8íPËnX8˜ÿ ¢úXn$ þö8Úb.â–ŠÎmÏ/ŸYDÊ[5)לOHô"럳]xncÒPj¨2ä³eWÍ?ª ð®o‘ú!8°WŽ›Î3õû÷ņØTˆ}ôž)ñ¶ú�_�*µ§cþÌý…ÔOQWÁSo‹0•VkÅ«µ §`™«´ùD!DõÍ`N{I�Nž! lA„w>ì[Ø’üXêâU?^òX5š-j‡Õ¤½>iµNgrp¶ž6c“£ÍmsðÊ•+ ªÑ—.]BÌìÙ³Å*‡§N�’"øáx@CÑ“•••––&ÕÂÀ@+¾ÿþ{¹“íR¢À=p0w“ð{×f•pUî£�£'~Q†Ý#7 KhÕJ^Ù@[& ¥¯ñµ3XHûVzØ~«L‘ø5f“p¾¼UÁoÜ ”ºÂvý�‹iæ sÁÖ{,"7 3Þ6­ËF,mšJK{Ó�gèðDZ5€ªÇ ûèõÏ[„É›¶ m¶ìMÆý«°îÔn0pÚ:™,ã§¥Ù* Àõú–âZQÓ•ÔáCjÿÕ™Jî¾R�ݰ³D¡fIUñ›„QʘUÊ0Øe¯ ðªY)á�¹Ø>Ø#»*âßš-5T NY=ÌØ$¬ßª½êq«µ‘95Üý¼°oÂj­ÂiXæ*$}øÕÓ¬2{DÒ¹u7�Ž'퇤ÙMn=�a3”a–X´…-ÉßfSÜ]֪ΒG4àiµºs×ÃC:퀄“ƒ�çä(bä‡Îäà,=½ip¼ yñ8¸víZPì½÷ÞŸÛ&LÀá�7ä�ñððð^½z‰ž¨¨¨îÝ»ËkÅŒrß¾}r'Û¥D�{à öJ€wc¯[\=%e‘‡/é‹ÿ^5‘hØ+áïM×ßVîCaBA Dï–).±WÂÛŸÖ_·–ÄàÒi¤g°³d¢’S2ÒIUØ+áïE×WXîÖ«4 1¥F ›)<´B}ÑW3-b¤̆]´‰àÃ^ 씿þu r{%°_^±[$’rÉ?‘4ž¤ÕQP*Õš@¯Ù� ªÔ¨R{°WBãï[õú!uUÊéMþík|±`Ƨa�Ä� Ô1r�‚SV±WÂÝß+÷ú«êÚ6"KÂzu•U�}fÔb¯ù“öº2X{‹4Óˆªß«æMô0iV*c,!ˆZ9ª¬ÚØ+�Ï×§*j[¬è\%3ƒ¨�k–Üa{E€âЙœ¡§ Ç šƒƒ—/_ŽŒŒÌÈÈ�Ú˜Rĸ¨t(•+WÎÉÉmOOϼ¼³\Q+‡T ØViå:g¡Ørz€‚V®;t&§ëé ƒãÍåàÿþ÷¿5j ¿Ãºé¡Í”¤x0 æ ÓQè|ÒÙç)sÐð‘ùè:äYíÙé˜+´C×�Oѳ398MOë ÷Pò6P­öæ’ÚÔ1bµLíÚµ1àùÅ_Èøâ¸¨|ù(j±EB�ŽŽæqQ¹b¥Üf29”cÔ*­\ç,[NPÐÊu‡ÎäàT=½fp¼ ù½çƒ"±câÓO?U<Ʊƒœêu2X #Ffgg[]'ƒå4Š®ø°4(Àd2™ƒ® ¡398EO« Ž4¿GŠ ÁRý F­···|ľ‰¯¾úJ ^¾|¹”Øb�}ØM¯îŠ=¥Aæ s�9È,í|VO¯/hn�ƒï¿ÿ>vʯY³ÌêÖ­lüÃ*Pü«[·.¸†7Æœ�ý;wîœôО1c†¸�þàÁƒØG�e3C‡•joݺ%í£ÇÑN�:aåÌáÇ¥6J•ÌAæ s�9XÚ98YO¯/hn�ƒIII þ�h’qáÂ,‰‘;Å*üwÀ€ò§·ô^5ôƒ×Ñ`³¼¼V|¯†U‘96lØ�ß«&§´ÙÌAæ s�9XÚ98QOË Ž4·ÆÁÒö4æë¹_ 0™ƒÌAæ`içàx=-38^М9x¿SÎËd2™ƒ¥�ƒãô´ØàxAsæ`YàÑýºFæ s�9È,í|ZO‹ Ž4gÞ/Æ”…ó2™ƒÌAæ`içà=½hp¼ 9s°,ðè~]c³õÔÃP2å´¡B —~†—K²¼hÈ+Ér’¨$ ‘¡„ËACFIÚo(ÉbXJ%\h¾¡„Ê“N OÁŠ9x¿Q>ÎËt:"K‚8WIBç*aât% Aœ«$!ˆs•0qº‚ hëDŽÖÓƒãÍ9,Dsì.™ƒÌÁ{")sй dÚp< Féi¶Áñ‚æÌAûB—ïZæ s�9(O9�‹¹B{cÚ< Fèi†Áñ‚æÌAûB—ïZæ s�9ÈtÉ`©ÇEóôô‚Áñ‚æÌÁòM:ûwÏd2™ƒ¥�ƒCõ4ÍàxAsæ }”ïZæ s�9È,í¬§)Ç š3Ë7éìß=s�9Èd–vÒÓsÇ š3í“ |×2™ƒÌAæ`içà@=M28^М9X¾IgÿÌAæ s°´sp€ž&/hδO‚ò]Ëd2™ƒ¥�ƒ}õ4ÎàxAsæ`ù&�ý»g2™ƒÌÁÒÎÁ>zzÚàxAsæ }”ïZæ s�9È,í|LOc Ž4g–WÒ?~<;;;((ÈÓÓ399yüøñ7nÜPˆÁd2™ƒ¥�ƒ=õô„Áñ‚æÌAÅ£¿|~þùç:�.##cëÖ­G��1ch˜››«¸{æ s�9È,íì®§QÇ š3�þòq8iÒ$77·Ë—/K·;zôhx®^½*y`•ƒYÇ)*›<‚HãI¾É”6žºÜ0O¾¶)²%¹û q�©Ýÿ™«T_çT”/]Z<¦a¶w@�ÆÃ“â’Ýø¯IbÉéü¸ÕÚž¨rs£} í°PÒµ9þtLvšg�·ÆÓÝ/94}|v¯ ѪïßKkÏÊ�j^Yê«ñÐú&„TռǯóíwXè÷MŒ:Þ)5;Þ;ÈSë© Iöo1¾ÖìƒÅV¹ Å=Ž*�»Æ7Ì+½còSŸu³ßa¡{•¨‘?‘Q Q¢ƒª¯j:Aô‘QWU•¢ÿ¢½gû8Q6Q‘'Q2Ñx¢¦†ýŒçÁ©¤’fª²þ�NrHYµ—O«›à¤õðt‹NÖ=6>zÏ�:RäþÛu†¿Ÿœîíéåæí§IËð]z,MªU…¾”§:ÙäDøF%S�ñ´óFA+|"Õ%¡Š�> }¿èñ§(;�‚¼ÉÓ�’Ci|+ºñRÁW5Ý]B/v¦jѤs'_Oj�Lo*ü[œ AÞÈãT9›¼ƒHëI!É”9žfÝ07É]Há©ä®£€hj�G/üf®R�“ß«ÖMO# Ž4gÊŸûåÆ~î¹ç@½ßÿ]ºãÉ“'kµÚk×®IEâ`Îç¤ÑQH5ÞJ-�R� cs `÷ÈWäîOͨÙ.jü¦“w,uºb ……bë�Ï㟬ѹ‡e$enÚæèSµft ãskv�ýñ’»Ÿ®Ò FͶ BU½eÝÄ jѽo.²ƒBûØzúónî:mBFÄ€­9#�vl3#4LÏM[µžV·íìúƒwµ+{½‘U-Dçç1ᛞvúTpJq¸Þˆ¢ªDs‰^!f¤aSìž" w?'Òem%:J4Ãx ¹&Ø�ƒ>D§dñÖ (úÕ¨’{Ö|žŽO è6}k¥%GÓ͈ ç‰1þªÛ m9dVÜ¢CU^Ü—:tNü‹ûSå=(l;̪V~N:ª’AÓ¶Ò£4p†@ƹ­–ž"y±HÀâc“ìôiŸƒŸO—‘H[‡ÐÑ14£½@Ãܰ›˜-tÿd&|‚v §véÂá;ƒ A¡=r=õ¹À¸„ ê¿•F¥63VË-hÒt,iÜ){*�8B]^!ŸPŠ«CsîØìЉ좧<ƒãÍ™ƒòç~¹±ÏŸ?Ñ«W¯K—.aZp÷îÝaaa#FŒPP$V�$<#;\6£­òhÁÓùªà‰ïJºzô�‚ÚöJ"aTe‚¢§Pž„_ç—͉^¯Ñðœ¸*¤„_ÜM{xj^œÅÏ«OÊÁã£Ëå™ÚÒFgÂÓóê‹ÈÙ_ËÃQÕd})XmØaªZNª�Ëžr¹�Ödtux¦_(y$cÒÿõBU«)u$�ÚP€OqØßH·í2ðu3zöË<ïÉP:)4~Z貌nÆO ]5zÀAä¦öÀ§¨UpJqØ{R4$Úrù!ÉÿèèHxv\­ ÏÈ Z--?UUª-Ô°Ã,¡ PCï›.›Ã:�<[¯š=Ò7ù¶îOø[íõsVªL1ö98©µÐ÷åéf´�n.x®Î<1�”•j®º½ˆÂüÌ”´Õ³Ml!¡ki¼»ç.›cïî…«§FK™Ï˜«ú½#\J×WÍEJèDvÖÓƒãÍ™ƒŠG¹9<}útRR²BñŸ‚P¢H¬öœðŒ|ôw3ÚªN&7-=z�ºÝ!­7¥ä™«€¿¨Öä_ÙÂ#cb¡öœÀÁ“¿ „"~Èä <ÍN]3{àtk<׿Î=Q"Z�É9nZÍc×^’<’ÑåÒ מÝQò¨ 5ªäžVÏ=Œ»›ñûã’3krm�ÖmÆ5³GªšþÛ@‡ƒ�t; £Ȩ%’{êeœÄAã§…~—ál²ñœ×Lô3weö°hŸ\}Ÿ‹�D;X ë39Ÿ–÷¯ ž¨$ÏÚ-¤ª¢v˜%Tõ~NxøoûÝÖk²ˆí×Ì‘qðxùR­J¿‰€¢ß­DÿsÂßhô»‘z¢grkÒjèÚ| ÁÔ©¦™ƒðÄQ—Z±•ü¿6±Šeïnúïæ˜–Æ»›~�ú¾%\JÞAsÕì|Á“šcö¸Žƒ�ô4ØàxAsæ`¹ŸüFÁððð–-[îܹóäÉ“‹/Fz(�)*ÛŸ2¾Ä^Ôá’0-Øl7é¨Ò�t�|-zþ¯ÿ ½ê‚q˜ÌÚ=RæWeD35àài´¶~÷[¼—gµVtJ³jL>ßË/»v¯JÏ]êƒiÁÁ»Ûb°Ñˆty𼿆ν=dÒ¹^5»UD0²By­ÂV$€ŠCäzÁD­‰�$Zhœ´ë"ÃâDczö¾39xž(‚¨Ñ%ã´àn¢0¢&ê!‡ !Š#Iô«©Ê: íÃkÓùšÁî­z…n¹ô¦çîN sï4"­6_¬‰ç4ÒÃ^££uwK®æ=q]ûÚÇ­?OAÔ²m¼$L ÎÚM�a”;ÂJ«1+LLÚ`¥J†B9¡ÔöùiáO½êÒ¥„iÁÝÃ…ŒoDÓÒ-í&Œš¾Þ—þx‘®Ì& “úxÒá'‹ÁÁIçÉ/‚j÷¢g/ Ó‚ƒw“o5!�®×áv0{(Ánî_¯y`¬Ù#U‰†óÁz`p¼ 9sPñè/‡mÛ¶�‹‹»}û¶t»7nDb¸wï^É£  kB1íÍ¥Á%ÂÚœ&ß$cna\Þ BhË:&8¾i_c¦àìø£…³Èï¶žŽÃ$ ~íÄ¢† óAÀ+÷ô³~I¡'ss³AŒ�zE`&ÑQ¥à”úpÜéî!IþÒÝ) ˆxL еÁ ~O}ÚU݃ܣŸúpQ´ù'GrŽÈÍ€B±•“òAàì4‘ìÓb† ª-#:bœ:œn-Ö!ˆ°´zäB»nÙïPÍ>…çôd’}6ÍÃ>JÚ‚k ö¡=# � ZÙÄ–¯§OSˆìîD¢jìgÂiÚÍ37Ç"<î^fXYµ½¹$7)>} PíõÔßàxAsæ ü¹_nì”””œœùíž={\²d‰ÜY¤qQ@P.¬mº“Z�¤Ú‹É3XH]ÃA@0$\S¿¥÷Ë;£6œŒ™¸84 XƒôÐEù èîÝ2µåÎá�œ—±¸›g°ÒCìzüo^p�Xï¨ä�Š*Å¡Rjô ÷®Ô2vÐÎGFŸìÜqqcï`ÒCyäØOº>ùñ£}·d'5Œò ÑáP^«°Õà“{Aäƒù|‰h5ÑX¢cz(Æ4&ªm‚ M‹»`‡ôP ›�+@#¥XBóÁhê_Ÿ¼=hûÐBPhÆ–"}Ã! èN•ZÒã;iÔI긘¼ƒ…ôPŒ¬ÐTXG:p‡�*"׋H–ÍxúØìЉùà#zêcp¼ 9sPþÜ/7vVVVLLL~~¾tÇëÖ­·oß.y`‰ƒ1mÉ;ŽºÝ6çw 6 �¯æ{]1.Ú´­OTœö“Ûëa€¿y#ðPY¹7JŽBg�‹ÆµM÷‰ ês{‰„³¦âÝV{GI¬– ©\vøâYÉiËPpJq˜Ö610ÎÞ’¿÷Æ,ÜÝ�½í$�d̾980Ö·JN¼äQrê©íFÆ!H¬Ú”ª^0‚pBÒîn„ã>"±H‰°„F/5 ;À2Uµ5xÞ6‚eÆO í•yäÔ !êi£ªpb9hxœ'6GHD›²±"ôœ¿7õõo„HUëùJU0úO�…sÛ/f2ÊkaB®zm)<Žvß6‡MÞ(¤Esöš=€Ý£cçÊÏ,œ*¢V>ÅaÛjDX#ù7:Þ7’~œ)L>ÝÒ\…˜Öi¡lÕ°‰-À.­-ÆÑœÛæ˜^Æ»²WðLý™ÒN�‚e¥-& ëEÃ*™ƒE\Jÿu.{crÖÑ”?ôË“�iA�FÓ¬Y3ì£?|øðüùóýýýÓÓÓïܹ#—¡HôK¡è3‘¶=+ ¤+€`ˆo;ý[àSøÕ¨’{*gÅÄøÎÉ7çƒ=×µÀÝ ÜÞF&ÚXDŠAÔj vªà‘CJmcDc”‡e\›bH‡%4Ëeåe£¿¹Ñ³G¯èÓË$¨ÁÈ2î×Ï—E?-ÂRy˜hà /¶VUl•V’óᬀ°�½ùæ|+a çÌ핃Rì.|ûû‚]Þ­ ,�RsµQ¼jgQh ½Ÿo{f�¤¶›=S¶ž'W˜=ŽrÛ"°9"�™kë„…ZÂà'6SÀ“i®òZT¦P_ Ͻq°RÄ‚JDëa¼»ÛÍ©*w‘°PvÌ'VªœÎA¼©£»Áñ‚æÌAÅ£Ÿe ‰ƒ˜ÄÂ0ì”öѦ‡æ ç±_›&À8,Uî£�£N¿8ÌAL bÓUÝf^ØG¿îpôÓóC|ýÝ*¥{|zG ã‘+‰/m‰@éÐ×Ï�ç–‡Á~íP´‘ [Á)Å!¦Ý4n‘Í*a}Îá±uæwöð÷ J�ésg –�†ÕMD-& 91N*�ÏýCщüÐ*­$'¦ÑaÅf1ØG?âpnûù tþQé!sï Å M£;/m2ì@{Tu[Õ<ºº°�~Œ¾‹Ô\m(8¥8Ä´ ÖeÖ6î£_A4Ú¸U°¢�‘O©«mŠ=Û–© S~8g3ã>zx¾qEj:Ñ¢o‰Z­$ú�袩D¾DÕeo›)`Ÿ©+áP�*¹Ó‚ø´<ÔÌûè±&o~¼�¿o�9p§.Â6œ«�锚>/¼“‚íó-z„`KÅ´·Rä=(ìBà…iAœ¯f3aý‚Ã4t>ùøSr:í¹cnˆ„ÑÛÏÊN k4TsJîÁ´ Æ�šUöÑc!èüNäïEé1tÇ8RÚ½¶04Š7Ì|ø„°”´g�ŒØk/ïAmÛÄà…iAü¦Wl&ì£~˜ÚÏ2¾¨ô‚Íò]WQ·Õ‚ð¾BL¶�c¯7'æƒYzêjp¼ 9sPöØgS¡@‘8Øá]1™ä@òIBåoŒÁŸ[ÈÝ}É#Ð)ïU[±+ ¯‹ñ ps÷ è÷îyÀŸH·µ û¦Å‚’h XÁ>ù¡RVí¬]#¢2+{x‰/OKÍkÚýÊ\DbI NlœÆtâ” ¬ö#:Õ¨Rx𺘔ÌX¯O­‡+BæU›v¥?bæÜRw@•ˆÔ owTÅûÕé[ù™¯z(š+àS. zØÈw¢(¢ÎDØÉ ƒÇI¼v·$bIÞå–@”Gtň¶_‰r‰�o˜Ñ¥M º&§žÚVpJ}8wWåZ™þ¾Zw·ÈÏܼˆmWÌÓXMÚ ]j±`&½¡¸©îAî1ã̶„ÚY»è¡Lò |:#¨}½}ÅÜjÃE!KjÝßì±Õ�ѯ攃ÅdV¦/aI 6 æ5¶Hˆ1·Ò´¶T%RØ=�2'ÐÊž…@ í‘ (´‹R2É+€´” ¼< ¡b~÷è Š¨"Ì Ž`¥Õ$QŒÿëDfꩳÁñ‚æÌAÅ£Ÿe •ƒ–c›¶r½¢øå„*Û³\Q¥à”«­ÍuN5§\í‘Cªì"òËYa ê•Àa!”ƒ¬˜¶s9ØÉ@æ ì™Ï¦Zæ ÓQèjð)úwò¬öìjê©û/öÉOá,À±ŸŸâe’ƒMôÔÞàxAsÎÕOö˜`2­òΖSÍ)W{ä�*»ˆürV˜R%pÈ4=üøÿ¬@�ÌAæ -äYõ»šzêþK€}òS8 pEì§À§8E™ä`C=µ18^МóA†žm˜ƒÌA«¼³åTsÊÕ9¤JÀ."¿œ¦€T –G6`Úf×ñ}2Î[$ƒ…4%³6F~§“Î~‡Šù;WÚ–‹ü®¦žºÿ`ŸüÎ\û)ð)NQ&9XOO­ Ž4ç|�yg[ÎíCÍ�ZWƒOÑ¿‹xg«[5§\í‘Cªì"òËYa H•Àa™ä`]=µÄ×#:ZМ9h›\Ãt€tö›(8åêC[Àr‘ßÕÔS÷_쓟ÂY€+b?%>Å)Ê$ëè)ÓàxAsæ ÓζÌAûPs ÖÕàSôï"ÞÙêVÍ)W{ä�*»ˆürV˜R%pX&9X[OÍð6G š3mS€k˜ƒ�Î~§\}h X.ò»šzêþK€}òS8 pEì§À§8E™ä`-=518^М9È´³­sÐ>Ô¨u5øý»ˆw¶ºUsÊÕ9¤JÀ."¿œ¦€T –IÖÐSCƒãÍ™ƒ¶)À5"Ó�xÒ0³d Ñÿ•tùÔ@%XÎâJ²ÎRI–(ù.†ï¨DË2”`©dø´„Ëë†GK¦¼ oQ|úü¡^]O Ž4g2íl+Àt:"K‚8WIBç*aât% A0·!ˆs•0qº’� ÎâLVÕS]ƒãÍ™ƒ¶)À5ÌAæà=‘”9è\P2í?„ òÁ4=Õ18^ÐÜ�9Ò¦M›àà`|IkÅŠ§N�*]Ͼ}ûêׯïããÖ¿ÿŸþYª‚qûöm'&&êtº*Uª,Y²D^ËvÙR€9ÈdZ¤œœ:iàÔ™ù`ªžj/hn�ƒo¼ñ†V«}ì±ÇvìØqôèÑ×^{mÖ¬YâüàÁƒîîî�:uÚ¿?ÂâââªW¯~ëÖ-éñ>hÐ //¯ùóç:thâĉ�fæÌ™R-eKæ s�9ÈtÅ`©39XYO/h®âàåË—}}}GŒaõ‰]·nÝôôô¿ÿþ[¬=~ü8¾‰tùòåâáéÓ§¾Ù³gKm‡ ‚Ìñ×_•sæ öMÈA9tèPìÂøí·ß¤ÞØ(C 0™ƒÌAæ`iç`¤žâ Ž4WåƒxJ·oßKe0zøðá d:tŸÞØG�7ÌtîܸÄta|||�5ðéÙ>xð`q="'Mš,J{ð¥6ÊŠÌAæ s�9X>9xóæÍ &$$$yIIIØõ 'Ø A€244ïU»råŠü©~çÎù{Õ°ÜT^ËvÙR ˆìq*/1»’§¿ÎÃÏ3.³B·cC_NÑyßÀ¨úñî>Þa>Uû×òódE€tX´/›x—¨ ‘‘/Q¢-–­Vu"J%r'r³¬²öe…~ÙÄúSÔ ›|ýÉÇ�êfÒkÇÌpò¦žÊ¬žéåïîåç^53|ʱæòøµ·:u|®Jx’�»§&,ѧýÄÔÕ7;Êä¶3ß'¦§hƒãÍ­åƒeëYÍWë:ŠÂÁ ×êÜÁÁŽ»ûçîì×¼‚Ö˽û‰aÚº¬q×TìTµóþ�9otó‹ «5êÖ?¤¹Q8¶h+‘§‘ƒ¯­&ªO¤#z[Ö°Q¢öDÕ‰42¿5âkžT¨²ð¬ÿˆT?Ë¢ËþœR¾õQή޶rgh½æ:œmó 3 ûŽö›´ píÞ0ðqú«ÁÑñZÐð£ÿÅ(ú‘ísð£·Hç)pp÷jÚ¹’š×#/�Øl…tO ¤ØHáÑýbñ8úÑ»8%8¼{mðÎÕžÍëã”!'Þ’èjSÁJ©„}³_ªUfBYƒàG;º�ƒ»ß �ÿ¤æ ÉË‹Nl7cî�³T§&ÅEÓÒtä]!ìù±ôù~s€²»ühé<îžM;gRóšäåI'–`îÖn%åeBOAÒ•cä`üGëÝtžà`Ìî—cv.ñn^ÇÍKwâŸÝü{¶!w÷� �;²6zÛB¯†5Éí¤µ!G•žöQ¦‡NŽÛÝè©��Òš‡{xiž?aFa�Î1:_mï…5Ÿ=Ò¬ç¼êžÞÚÚ¢�H‡Îä`ˆž" Ž4gºŽ"e¿ç¢p0±u%ÿ„ ‰k#þœêíÓ(Q¢[dݸÐôÈ'þž.zº†_þËs¥¹Q8¶‹œcˆ¾6Ež!Š ªc:ìΙì>Nȶ¦èúøVÚNüIáÑôP#óáÉÔ›¸Tx´½vÔÂ)C¡D(«F“Öº˜íé[±bígÆDDknäi5Î~†³ÍZl+À>[7¡„ºuº|~FÑÔèa%‘3—o-q=[7Õ$ÄDÞúJ$Z䟧5Ñ�–ºWO• 5”œ²¤aëæ”K·ÎpíÏÿRt$5Bþe {b��*ž?iöHUÖ »l]—"¼Óº?wRt(5J·‰9€™ã;l¨9%÷ø´nèž�rëcÑYñÏÚèp¯FÞˆ±Pïþ�ÊéæÕ³=ú ÿá¤è8˜^väÝÿÊÃlÙÖieœpƒÝ,׳£ñ?œÀ¢¯ ìa`¿CŸ¥âc¡ý[[@­g ãé¶X8ÅVÿ}]¨ØÆJ•Ô­šSrÆBúw�{„ÐÍ-ù‡ýpVÌÿáAczK&%­6èé~’GmÈQ¥°1Ú¤¢ÜÙ gèïµ}arç—wb‘3î<‰�ÓÄwýUÇE‘å énF’Ç~�„Ëß÷šÙ99�*ÄæÏ T“ƒH,½‡ô�CÍ»_gô¼w�èæ½tnAÐÓVLô�<"òæ—òx…m[ÒÛsýºoÓ ßÑáw{æÖ‡‚ƒÈÓS#Åð©½>íæƒÒ΂ký²�§›ká17é1¡ê¸lQŸd¨9%÷`P4`È£r�¿è4vß Ñ<®Ÿ&8 æý¥H“/ï �« Jüf›¼‰Â–£JacP4sH²ÜÙ¤_"nAÌøºÎ¬{É÷�H/�Ï�GJ%¿h8“ƒþz 68^М9Xöiåº;( ÃkÅ`ØSÆ?ƒ+‡á—±Í¦pbB6ÒH0ÀMÐSî‘lËÔ¬f\#ùÿK”läàbU[gäƒUjQJºjÿþ›+㎬g|›?#/oÊzÔo Aøå8SÛUkyTNw—ü_ÿ›\Ùg[°)Dr"7„G,>xÁñu2µªRze3òþþš*' =oZPàüdyz`Ñ)t¯UML÷DœEþý­ñ”�›‰¿iO¬šr|Kȇoø>3„<<@F;¹¡=f}GµÒ)½Š™k_¢ÊŒ7¸\pn|Y°±6&« íÛDûߤœL Òž æ&Êþír°V ¥'›‘÷÷>ªg<ݳf§È¸¿öRL(UMTú%ІRŠC]­*žé)’3åï{TNÄù¢6Í‘œAOõnÉøqq�‹Œ×o”ª¬ ZÉkÅ¥HžuwŽªì‡ŽGlÊ€s̶°Gm©'ä­¯ OLÉ#7œÉA_=/hÎtEÊ~ÏEá`«5�â·¬öØÆCyvÈO“j ¯�U1ð<²¹'èf“ƒ^spŽ‘z�ã“KôQoӺХ.áà´5Â3¤ÏX:ø }ðuŽÞM¼½¨ÍsEÆæusóõ›7‹gbv-ómß é¡Ãëd¯y×Üfl¥—i·ô§¶YÃ+hñ7š�Ü,°oííNQ•ü0�øÜÑf«otœôaÓà/ÄVu=}ôäop¼ 9s°ìÓÊuwPv˜þæ áÛÍ-¦qb� Í`ˆ»'l�‹úÅ:<.ŠLp¼qÓöD `…Ì0£¡Ø=�0gäƒ@Ø“s„MÆ»£Z�iàÁ–ïž@ÌûßRLÅW¤½ßÙ�`¡ù à8nN 6Mˆg{¸±'6JÀVìž�zòçh/o·žÃ,†R¥Zö9ˆÚ9ã„Mâé?L† ¶¸{bÞxÂðä÷ÓoÿÊgÛ…ªéc™£ÕžmÑJî÷›3›&ÄSz4®ã;AX7¥Ø=!ÅG\ýµ¾ó$�° ,çLVÂÜ`M)Øâî ¬…ݽƒõ0ŸˆIC›ÝÚå (6g°°ô¥àtÕI\*ß=!’®Scae)p©ŸâÐjÊ&w†Îy›&Äóy5®gž|üâ3°1ì ,ŽÌvFØ\'ÓºjÕE•ÓI㟠ã¢=DG�ñ˜.Ä^¯Tm�ÄA`îãÛôöÚ}Q`¦ �Å�òͼ!›\€ÛE)[ö™Û±ïŸ‰³ X|‚h·¿¥3ÒÅ�ºaºXÌÿ?Áþþß vkoA=L "Àad·÷ЙÕtq£À8L‹ù»,x‡TÑÃ�º6³p*(ª9¥ö¤Üþ8áÌÛIw£ Ó…À"VÈÀŽ\?·òuyÿÇÚhBå…m•Yr'ò¾ÙgZ-¼ØNL‚wkò-6 bŠpÖéVØ9òvy¡ª¼¹d;“ƒžzò28^М9Xöiåº;(:%¢=~i¼.Рä’'ª^<6 š÷MœþþoùJG)@n¨X¦ÀŸúð‘?†IÕUÎã Äµ=—„-ó&•<».™`L"a\TrÚ6l˪ÿð¥(ÿ@7 “Z­…“ƒ„M…¶¬ÒÊ–óÒa ô†IÅ€¯wÓ¡7Ì“†x¬aìÎ럋ƒÃ/u ôÇ0©äQþ‹§à¬AÛW*üÒ¡M`™òAyÀ¥�…ÙÀ±C̘ÊÈpºñßHãc„éBy+ »°|P޳K›(ЗÆvQònž1éÆCy°U[)û‡I—öhýƒÆöÃ⎾éÂ=#µJ¹ó/L êj§Iµ!qªPcÑ¥6>�&µ‰*PR¾rFéLºëÉÃàxAsæ ë(Rö{. ûœ~¢áôV�ö èzxHæ²þñ�QqØE(ÑMØGï¡Mé\ +H1]ˆ€°QÈ¥¹a g Àí&zŠhÑ›Dÿ0î%¬I„]„RØ¢eÆÒÌ8^ú²ÑÞ& �"�†mf \{û4�œNË÷КÃ4q™0˜žAØE(¶ÂŒa\agýÌ7„ÍõRÙ{ÙmKôc è˜ékö„m8þü² l“¯‘á‰]„bíöÏ"2ÛyÍX¼þ`8Ê”¥A±‰Ú°H�Ãóƒ§w ãœ{ÖÐá ´ìyŠ�¦Œ„]„VAé”ùÁÐÓ»ü¦� ÞóZÈáM˜ûÓÄG{dÔÄ.B‘kpê:·üçü�C±‚ÔgÌ@a�LV#‰zjÃR*ö�þ€¦?#¬{ÁÒÐe3ÆeÔ¶KH­Žo6Úcýû¯Ó®õq(ßh/Ev9xz5MH{æÐá´l4ÅGPFÂ.Bãª$Pb¤Ò©ˆÕœ’{N¿:}dÌžåq‡×„/›è¥ËHÇÒP1&åî'^ jºùx…ÎwhuÌ{‹±ßkf"ߘ)ïDaËQ¥°‘åu™^í™=�Ÿ=ܬ߲‡Bã½+fc¡†­XƒMôOíhظo&‡o–ÐX-Îä VOîÇ š3Ë>­\wEá`¿³cc›$!Ôzj±R´Þ”#oL“£ 6Ý ÁÝÛÃ+Tx¯ÚÐ+Åy¯Ú¢ºÆ(’‰F}iɸ¹Füaêï“ Å–C íspÛYªÝ¤àµiX):t É7ίúPÈ‘Lëñ[,yÓãàÞ³‘ušx"ÄKÚ°RtäÿÏo˜GD±r¦mïø Zl¯@I¨¨ÅBš#—­o-Ñi•h’óì^jRGȱ(Ë6§ŒöGHµ Ã) ;{À£I]䀨¥€•¢¾SFEÞ8#Ñ-ì?TsÊÕæ s3Ä{Å™ÃñÌA'=¤¹—+À´…3‡ýN'�ý] >Eÿ®¦žºæ s“{ÅÅ€*�‹º%eúÌA‡yg«¡}l9½VÁ)Wª9åjs�9È,Ó”)ýÏ´…3‡ýN'�ý] >Eÿ®¦žºæ s�9XúQR¦¯°8l³¡»kGËÌzÑYC¡}l9½VÁ©"nxÉæî û=¨9åj�c̼ܰ…ðÞz( ëd¢6ÌrŽÏ÷ÝkCž,Óh(W_Vh_åAæ`³ö0Û·xÀ9ؾՃÌA¼O»œqð_Dw‹QМ÷–+²ÝÛÍ2mÂŽ9xÖ +]�ý©û¿·lδý�9h ”÷šÖ9ïÔ|ð$Ñ­b4gÞÊU4s�9h TQ«æ”«=ÌA5ÑÊ_>x‚(¿Í™ƒåŠl÷v³ÌAæ ‚tö]M=uÿÌAæ ^¶ÿg1 š3ï å*úØ1á²~ýzñ^ÿ5iÒä^›”¡x¾»2ôÃR_*ÿøÔš”°O<[Ž=Zœ'*®�áÕú£ 9s°8?‡¼­øY5~Òø?¬+À 8Y.Ú¯_?ô#ÿ'¿HéjÙ(ë ˜8ø.ÑÙb4g–õÏ_¹S wïÞxÈ `У¾ÿ3f 9rä�ÞÿýÌÌLÐðË/¿#wïÞ ü�q[¶l·3KC—D^;†¡×={öäææ¢Ÿ7ß|Sl(r°&LÀLöAƒ† ­tæ+§M›˜®X±"99€“:—ÂDãÆ�iiiàÚš5k>Œ¡]p ÷%ç <§ëÙ³'®múôéèü•W^©X±bPP�Ô¹œƒçÎ�^Ñ@,þ»uë–âì|ø(`âàÛD_£ 9sðø8ð-”/~úé' JÌw<==±HæÿøÇo¿ý&ªpñâEÀhüøñ’(7oÞŒ��GÂ%z@�5jX( !^Œ¼{÷.:G[ñPäàSO=%õ¼hÑ"\†˜m}õÕW°Ÿ}öY©Ó—ðH¨’ü¢±|ùrÔîß¿_òc©+FAsæ`ùùÔð�>˜ €TAÄ­9„­þ‡$÷�·Å¢Jê”+réÒ%TÍ�;Wîܸq#œ œ"ñð‘äôyá…ùóÏ?Kµ0âââlq°eË–ŠÕ>ÿùÏЃUÚ¹üJp^Îå?…Õf>¨?Y¾/VÀ0ׂ`Õ Úbb6Ö·à)¡ø‡Z1D–§> òA­V+öD 2GôvöìYØö9(¦lÈC¥žhooo[D>ˆéE)òJ[´šÊ;gÊ•,'6>ÞHåðÕpÈçŠQ„o€BWåD4¾MVàÁPàûï¿WÜȧŸ~ ‚ <~ìÂÃz’%K–(b¤C,t±5?ˆÅ3Xቕ™bðßÿ�ùÁ„„ñÐ>ÅùÁÉ“'K'zûí·qU¶8(òzß¾}Rü¨Q£lqPœÄ R)øÝwß•w®à FwQkuTê��²®€Œƒÿ"r¸0Ëú�¯¿<*P½zõGyëL>øàÌÖy±±±ÒÜܬY³°~æÉ'ŸÄbQ „“&MÂZQ,,Em£F�°^k/7lØ ¡ ½¡ªyóæâzÑŽ;"Cܼy³ØÐ>Ó§OŒ¾âE.è—¤b½¨­÷É ‡MMM�ˆˆX½z5Ö©b *âmq�?öØcâzQ,.•Ö‹>þøãâµ)8ˆ—Ò +¬›ÅzÑ�?þ˜�(ªô€ý×ÄÁ׈N£ 9çƒØGƒoçÁWsvØP¡B�Nla…'6,|ýõ×ò;ÇrJl†¦˜˜Mžyaÿ HŠ} è#'¸‰™;ì³°º iä#H <ÒÊàæé§ŸÆ‚ŒX"µÄYйYùå‰6övéÒûqÜ‘bÿ x*ß7�½³•:à`K£¸ê+Av È¢üãýƒjñ�‰ƒk‰Ž£ 9sðø8ð-°åN�ÿûßÈøð'A¹»s¾a“&®":RŒ‚æÌA“¦üV€(Å Ÿ�9sæÞ½{1–»lÙ2$¹Vå ò¥ø'æòK3qðU¢CÅ(hÎtù‹OÀ °ÅW£¬Øæ�TŒôFGGc¸õÇ,~·ÜCÙUÀÄÁWˆ>,FAsæ`Ùý𕳬+P~0qp9Ñþb4·ÂÁ?þøã‰'žÀ°ƒ——×C=„ö–_¡ùÎYV€`J¥&¾L´¯Í­p°U«VøfÏ•+Wb13Ö\a2+«K¥ |Q¬+À °åTá;å.h®ä ^CðÉsÀììlìNÂŽÚrª5ß6+À °¬@éSÀÄÁEDøNy‡ š+98hÐ ÌDË©'Á`éS‚¯ˆ`XV <*`âà"|§¼Ã͕Ċ¬zõêÉ5ÅK*�!â%ör'Û¬+À °¬À}TÀÄÁ‰¶£ ¹’ƒøªë6mÚÈo /3gÏž-w²Í °¬+À ÜGLœGôv1 š3ïã�‘OÍ °¬+à &Î&Ú|/e4Ñò’¦æ ÆE322ä—Åã¢r5ØfXV€( ˜88‹ߥëpAse>8dȼöV½N¯À- 7Î×À °¬+À @§½QŒ‚æJîÚµ ³�ò¯«nݺ5¾TúîÝ»¬<+À °¬+PJ0qðãWñâk+h®ä nCBB°@ßnÆûèKÉOœ/ƒ`XV@®€‰ƒÏồ.hn…ƒ×¯_Ç{Õð&[|»Þ«&Ï å×À6+À °¬+p¿�qp ‘ÃÅ:ï×MñyYV€`X�"*`âà³Døî$‡ š[É‹x Æ °¬+À Ü/LœL´²Í™ƒ÷ëgÈçeXV€p\'á;#.hÎtü§À-YV€`î—&Ž'ZZŒ‚æÌÁûõ3äó²¬+À 8®€‰ƒOá;#.hÎtü§À-YV€`î—&>E„ïŒp¸ 9sð~ý ù¼¬+À °Ž+`âà"|g„ÃÍ™ƒŽÿ¸%+À °¬ÀýRÀÄA¼7{N1 š3ï×Ï�ÏË °¬+à¸ÌAǵ㖬+À °e_‡á]Ù4ç|°ìøXV€( ˜8˜G„we;\М9Xþ>=|Ǭ+À ”}Ž9„u ZŒÒ™9Xö? |¬+À ”Gð¥HF:á?gÏž-� ò=³¬+À ”e®\¹"+Äiqþ1Ëò§€¯�`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€`XV€(\�ÿ]8Kƒ endstream endobj 8 0 obj 70693 endobj 10 0 obj << /Length 11 0 R /Type /XObject /Subtype /Image /Width 600 /Height 600 /ColorSpace /DeviceGray /Interpolate true /BitsPerComponent 8 /Filter /FlateDecode >> stream xíÐ1 þ©g ?ˆ@aÀ€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`ÀÀk`íØ endstream endobj 11 0 obj 1593 endobj 12 0 obj << /Length 13 0 R /N 3 /Alternate /DeviceRGB /Filter /FlateDecode >> stream x…”MHaÇÿ³�±Ñ—ÅÐÁ$T& RÓõ+S¶eÕL b�}w�g§™Ý-E"„è˜uŒ.VD‡ˆNá¡C§:D™u‰ £E^"¶ÿ;“»cT¾03¿yžÿû|½ÃU�RŽcE4`ÊλÉÞ˜vztLÛüU¨F\)Ãs:‰Ÿ©•Ïõkõ-iYj”±Öû6|«v™P4*wd>,y<àã’/ä�<5g$©4Ù!7¸CÉNò-òÖlˆÇCœžTµS“3—q";È-E#+c> ëvÚ´Éï¥=íSÔ°ßÈ79 Ú¸òý@Û`Ó‹ŠmÌÜv×Ulõ5ÀÎ`ñPÅö=éÏGÙõÊËjöÃ)ÑkúP*}¯6ß~^/•~Ü.•~ÞaÖñÔ2 nÑײ0å%Ôìfüäý‹ƒž|U °À9Žlú¯7?ûÛ‰j`¨‘Ël7¸òâ"çtæœi×ÌNäµf]?¢uðh…ÖgM Zʲ4ßåi®ð„[é&LYÎÙ_Ûx� {x�Oö¹$¼î̥߬S]œ%šØÖ§´èê&7�ïgÌž>r=¯÷·g8`候ï 8rʶâ<©‰ÔØãñ“dÆWT'“ó�<çeLß~.u"A®¥=9™ë—š]ÜÛ>31Ä3’¬X3�ñßüÆ-$eÞ}ÔÜu,ÿ›gm‘g…6ï64$Ñ‹áÀEzL*LZ¥_ÐjÂÃä_•å]½XážÏy¸[Æ?…Xs åšþNÿ¢/ë ú]ýó|m¡¾â™sϚƫk_Wf–ÕȸA�2¾¬)ˆo°Úz-di�âôä•õ�áê2ö|mÙ£Éâj|5Ô¥ejÄ8ãÉ®e÷E²Å7áç[Ëö¯éQû|öIM%ײºxf)ú|6\ kÿ³«`Ò²«ðä��.> endobj 14 0 obj << /Type /Catalog /Pages 3 0 R /Version /1.4 >> endobj 1 0 obj << /Producer (Mac OS X 10.5.8 Quartz PDFContext) /CreationDate (D:20091119193919Z00'00') /ModDate (D:20091119193919Z00'00') >> endobj xref 0 15 0000000000 65535 f 0000074173 00000 n 0000000164 00000 n 0000074026 00000 n 0000000022 00000 n 0000000146 00000 n 0000000268 00000 n 0000000357 00000 n 0000071248 00000 n 0000073990 00000 n 0000071269 00000 n 0000073054 00000 n 0000073075 00000 n 0000073970 00000 n 0000074109 00000 n trailer << /Size 15 /Root 14 0 R /Info 1 0 R /ID [ <7d8f57750ffa456caaeb46e4a5e6402e> <7d8f57750ffa456caaeb46e4a5e6402e> ] >> startxref 74315 %%EOF ipython-ipyparallel-14e3c43/docs/source/tutorial/figs/two_digit_counts.png000066400000000000000000002177131520071063500271770ustar00rootroot00000000000000‰PNG  IHDRXX¾f˜ÜsBIT|dˆ pHYsaa¨?§i IDATxœìÝy|LWÿÀñÏ�DVC $ÖXc¯½ÖK<Ö–n–§J­OEÐV[T-mŸµ´¥Tk§‚Z+ö¥¨¶(‚JBDöÌýý1É$“™�p“Lò|߯×}‘sϽó½3wf¾sî¹ç(ªªª!„BÍè :!„Bˆ¢F,!„B�I‚%„B¡1I°„B!4& –B!„Æ$ÁB!„И$XB!„“K!„Bc’` !„BhL,!„B�I‚%„B¡1I°„B!4& –B!„Æ$ÁB!„И$XB!„“K!„Bc’` !„BhL,!„B�I‚%„B¡1I°„B!4& –B!„Æ$ÁB!„И$XB!„“K!„Bc’` !„BhL,!„B�I‚%„B¡1I°„B!4& –B!„Æ$ÁB!„И$XB!„“K!„Bc’` !„BhL,!„B�I‚%„B¡1I°„B!4& –B!„Æ$ÁB!„И$XB!„“K!„Bc’` !„BhL,!„B�I‚%„B¡1I°„B!4& –B!„Æ$ÁB!„И$XB!„“K!„Bc’` !„BhL,!„B�I‚%„B¡1I°„B!4& –B!„Æ$ÁB!„И$XB!„“K!„Bc’` !„BhL,!„B�I‚%„B¡1I°„B!4& –B!„Æ$ÁB!„И$XB!„“K!D‘uýúuFŽIëÖ­qssC§Ó±|ùò'ÞßK/½„N§#$$Äb݃1båÊ•ÃÉɉ€€>ùä ƒEÝÍ›7ÓªU+ôz=ŽŽŽÔ¨Qƒ™3gZ­›K—.å™gž¡xñ⸸¸P¯^=~øá‡§Ú§x2’` !„(²._¾Ì·ß~‹““]»v@Q”'Ú×æÍ›Ù¸q#%J”°ØGJJ AAA|÷ÝwL›6��;wÒ§OÞ}÷]F�eVwÛ¶m„„„P¼xqÖ®]ËÎ�;éÖ­&L`ôèÑOv À›o¾ÉСC â§Ÿ~bëÖ­ <˜äää'Þ§x ªBQHµnÝZ8p`¶ë ƒéÿáá᪢(êòåËsý8÷îÝSË•+§Î�;Wõ÷÷WCBBÌÖ¯ZµJUEݲe‹Yùˆ#T;;;õâÅ‹¦²^xAÕëõjBB‚YÝîÝ»«%K–Ìulªªª6lPEQ×®]ûDÛ íI –BˆBKQ”G¶He^§ªê?Θ1cðõõeøðáV÷sàÀìììèÔ©“Yy×®]1 lذÁTfoo�ƒƒŽŽŽfuõz=ÅŠ3+SU•Ï?ÿœzõêáâ₇‡}ûö寿þ2«÷ÙgŸQ±bEúôéóÄÇ(´% –Bñ»víâ›o¾añâÅètÖ¿6“’’Ðétë8s挩lذa$&&2nÜ8þùçbccY½z5ëׯç�wÞ1Ûþ�7Þ`Ô¨QtïÞ�mÛ¶ñÕW_qùòeš7oÎ�;wãåÉC‡Q¯^=æÌ™ƒŸŸöööT®\™Ù³gkùTˆ\°/è„BˆœJII1ûÛ`0`0HMM5kY²·×æë-66–×^{�qãÆQ»vílëÕªU‹äädÂÃÃiÔ¨‘©üÀ�DFFšÊžyæ6mÚDŸ>}L ���Ó§OgìØ±¦z‡fñâÅ|ñżñƦò-ZP©R%æÌ™ÃÌ™3¹{÷.IIIüüóÏœ|øP]¿~½êîî®*Š¢véÒÅTw÷îݪ«««Ú·o_uçÎ�êÁƒÕ3f¨NNNê„ Lõ&Nœ¨êt:õþýûjrr²Ùòì³ÏªMš4QUUUoܸ¡*Š¢êt:õäÉ“fqõë×OuvvVãââr|ÌBÒ‚%„¢PhÔ¨ááᦿUUå�7ÞÀ××—)S¦˜ÕõññyêÇûõ×_ùâ‹/X¿~=qqqÄÅÅÆV³äädîß¿�³³3xzz²mÛ6 @½zõ(UªsæÌaðàÁøúúšö;|øpjÖ¬Éwß}g*kÖ¬vvvL˜0��RµjUnß¾�ªª¸¹¹Y�¯råʸ»»àååEݺuÍê³fÍΟ?OÆ Ÿú99' –BˆB¡xñâ4hÐÀ¬L¯×ãééiQ®…óçÏ£ª*={ö´XwýúuÜÝÝ™;w.#FŒŒ à¹sç¸ví>¤jÕª=z€gŸ}Ö´í¥K—ø÷¿ÿm±ÏôèâÅ‹T­Z•R¥JaggÇáÇ­väOï$ïììL@@QQQuԴ˦O:4…xr’` !„VtîÜ™={ö˜•©ªJ¿~ý¨T©~ø¡©)³ *˜þ?{öl|}}éÛ·¯©ÌÏÏÏ”xevèÐ!Óz€��>úè#"""èÖ­Û#cíÝ»7|ðÇ�7K6·lÙ‚^¯§V­Z�?`¡)I°„BZªª>vø…uëÖðçŸpôèQ\\\̆5hß¾=ûöí3 ÌYºtiJ—.m±?GGG<==ÍZ¥&OžL`` >>>ܹs‡¯¾úŠ={ö°yóf³!ÆŒÃСCéÕ«¯½ö...ìÞ½›™3gD�:uhÞ¼9¯¿þ:ýû÷gôèÑ´jÕ '''"""8xð Õ«W7u~3f +V¬ W¯^|ðÁ”-[–ï¿ÿžuëÖ1kÖ,‹!!DÞ“K!D¡õ¸q°ž{î9³ú .dáÂ…(ŠBjjªi]ú‰9yLkîܹèQ£¸uëîîî´iÓ†#GŽX´½ùæ›èõz,X@ß¾}INN¦B… Œ=š÷Þ{Ϭî—_~IÓ¦MùïÿËœ9sHLL¤lÙ²4oÞœ—^zÉTÏÝÝ�ýû÷óÎ;ï0bÄbcc©Q£Ë–-ã•W^yì1 í)êãR!„B‘+2ШB!„Æ$ÁB!„И$XB!„“NîB!„�øý÷ßyðàAžì[¯×SµjÕ<Ù·°$ –Ba~ÿýwªU«–§�qéÒ%I²ò‰\"ÙjÓ¦�ÅÌð{öìA§ÓúÔû×ét´mÛö©÷#òÖ… èÒ¥ nnnèt:Ó´âÉL�:�NǾ}ûÌʵz?X{ßÚª˜˜^ýuÊ”)ƒ��:�ŽÓ§OkúW®\A§Ó1hÐ M÷›Ò[®zoh¼ôÊò"ïŽw¡0‰ŒŒdÁ‚tïÞ�råÊáàà€››­ZµbÉ’%�p/·²ïE«i²î'»/Ÿÿ¶xì©©©tíÚ•°°0^|ñE¦N�Ê»ï¾ûØíÖ­[ÇðáÃiÕª%J”@§ÓñòË/g[?ýK0»¥ÿþÙn»|ùržyæôz=nnn´mÛ–Í›7?Ññ4-ÞWÖÆ…Òò‡‘–†ÎâÅ‹iÙ²%“'OfêÔ©VöÔBaš*Æ («ñ╯G @.:k×®eĈøøøÐ®];üüüˆŒŒäûï¿çÕW_eË–-¦Q‹óB“&M¸pá¥J•zê}]¸pÁ4š²°MçÎ�㯿þbذaÌŸ??ÇÛ͘1ƒÓ§O£×ë)W®.\ÈÑ\½zõèÑ£‡EyíÚµ­Ö;v,sæÌ¡|ùò¼þúë$&&²zõjBBB˜?>Æ ËqÌM«÷Ã×_M||¼Õu¶–düôÓOÔªU+O?³ÒÏ¿’%KæÙchÍ.mÑzŸ"I‚UȰqãFºuëföa9mÚ4š7oÎúõëùþûïéÝ»wž<¾³³³f}µŸÿåñom騣££r�PÏ�;—òåËS¹reöîÝ›ãK_õêÕcòäÉ9ª{ðàAæÌ™C•*U8zô¨é tܸq4lØ�±cÇÒ­[7Ó¼n¶N«÷Uùòå³]gKçÀ½{÷¨W¯^ž>†½½}ž÷kÒší"¹\•ÿä9/dÚ¶mKHHˆÅ/Q///† ÀÞ½{sµÏÕ«WÓ°aC\\\(]º4/¿ü2×®]³Z÷Q—Ž=JÇŽÑëõ”,Y’   öïߟã>'þþþL›6Ítœ™/åÔŽ; ÁÛÛ¼½½éܹ3Û·o7«g0øüóÏiܸ1z½žâŋӸqc¾øâ ‹/¡Çõáx\_µ“'OÒµkWÜÜÜpuu¥uëÖ>>tìØ‘;väø˜oÞ¼ÉСCñ÷÷ÇÑÑooozõêExxx¶1¦GNû ùûûS±bE¢££:t(¾¾¾8;;S«V-«­¬…©V:]-"I V’>§V±bÅr¼Í§Ÿ~ʘ1cpwwgÀ€¸¹¹±mÛ6Z¶lùÈÎÌY¼}ûöѱcGTU¥W¯^T®\™Ó§OÓ¡CZ·n�£ýŒ5Š~ø�½{÷2pà@üýýs|S¦LaúôéèõzzôèA… ˆŒŒdïÞ½¬Y³†N�:™ê¾ð |÷ÝwøùùñÚk¯¡( ëׯgذaìÛ·�U«V=ö˜s².<<œY³fѶm[Þzë-®]»Æš5khß¾='Nœ zõê9:ö¸¸8Z¶lÉÕ«Wéܹ3/¾ø":�Ž?ÿü“°°0.\¸@¥J•ûmܸ‘¾}ûbggGŸ>}¨P¡G�åË/¿dãÆ�ìß¿ŸŠ+šžÏ+W®°|ùrÚ´iC›6mLÿæ…ëׯ3þ|bbb(UªÍ›77M|›UXXŠ¢l±®sçÎLŸ>�={öXݶoß¾œ:uŠž={bggÇêÕ«9r$öööœ9s† 6ЧOôz=7ndÚ´i¨ªšã>L¤C‡¤¤¤Ð«W/ªT©Â‰'rõ~ãÜvÍš5ãÚµk´nÝšæÍ›Áˆ#L¯ƒµs/sYÏž=QÅâuLçÙ+¯¼ÂÚµk©_¿>Æ ÃÙÙ™ˆˆ8À®]»èرãc�ùÏ?ÿ¤e˖ܺu‹:ðâ‹/ríÚ5Ö®]ËæÍ›Y»v-Ý»w`РA´mÛ–ÐÐPüýý8p Y<�¢( III´k׎¸¸8^xáùþûïyûí·¹xñ" ,xäsb뤫ˆPE‘�’’¢ªŠ¢¨Û·oÏÑ6ýõ—Z¬X1ÕÛÛ[½zõª©Ü`0¨Ï=÷œª(ŠªÓé̶ SEQCCCMe©©©j•*UT;;;uÇŽfõ-ZdÚÏÞ½{ÍÖ)Š¢¶mÛÖ¬lÊ”)ª¢(ugûöíª¢(j@@€zóæM‹õ¦ÿ¯\¹RUEmÚ´©g*øð¡Ú¸qcUQuåÊ•¦ò¿þúKUE4h�ÕÇnݺu¶Ï“N§Sׯ_o¶î›o¾QEQ‡ bVþ¨c߸q£ª(Šúî»ïZ¬KMMU^~ùålë¤?ÇÖ–¶m۪׮]3««*Š¢–(QÂêþþùçUQµL™2få­[·VEQ[µj¥ÆÇÇ›ÊÿþûoÕÅÅEÕëõjõêÕÕÈÈH³Ç*W®œZ²dI599ù±Çk0Ô€€U§Ó©›6m2[·`Á‚\½¬*Š¢Nš4ɬüÔ©Sª‹‹‹Õ׿Q磵×ñÞ½{ª¢(j‹-¬Ottô£8MPP�ª(Š:{öl³òýû÷«ª‡‡‡Åyjí˜ÇÏÏOUEmÓ¦�š””d*�ŠŠRTEQÔ}ûö™Ê÷þµ%ÇŽSu¨³5^F� ¨ÇŽ+èÃüŸ!Im1aÂΜ9C§N�rôk`åÊ•¤¤¤0fÌ*T¨`*W…Ï>û,Ç—æ<ÈüA—.] 2[÷ꫯR§N�<ïû‘~i`Á‚øøøX¬/S¦Œéÿé—�æÌ™ƒ³³³©ÜÅÅ…¹sçðÕW_iWûöíéÙ³§YYÿþýqtt´¸lò(III€õ_á:�ŽâÅ‹?v?üðÑÑÑ 0€¦M›š­7nU«Ve×®]Ù^ÎK®®®|ðÁœ:uŠøøx9|ø0]»veÏž=´oßž¸¸8Sýû÷ïdÛq9½üÞ½{V×ôÑG899™þ.W®-[¶$66–É“'ãááa[×®]‰‰‰áÒ¥K�=–ƒréÒ%:uêD×®]ÍÖ 6Œš5kæèý�””ĪU«ððð`Ê”)fëyõÕW»�œHNN²oáqss{ì>®_¿Î®]»¨V­£G�6[×¢E  @tt46lxú€Ób�={¶Yk½»»;Ó§O`éÒ¥šùäªW¯ÎŠ+r¼ÝñãǬ^²(S¦LŽ;†ž8q€V­ZY]ß²eËÇô¤>Œ“““©¯É£œ8qš5kf±®iÓ¦8;;›Žéi5nÜØ¢ÌÎÎ///Sòœ ÂÛÛ›™3gÒ½{w.\ȱcÇ0 9ÞGú1e÷¥—ŸTíÛ·7«÷´Š/Nƒ ,ÊÓŸó‚8‡…ÈJ¬Bî³Ï>côèÑÔ¬Y“={öàéé™ãmÓ[2ÿZÏ,»òìö“Ý/Ýü˜òÞ½{¦�0çþýûÙ¶|¤¤£I\ŽŽŽÙ>NzŸ¹œ(Y²$‡⥗^âÀ� >œÆ�ãããôiÓr´¯Ç½ÞéçNz=[ ( ¯½ö€Yñô×/»XwNZ맘~îX{ÍÒ[w´xžmñ}µ~ýzÞ}÷]"##™8q"íÛ·§T©R 8�þù'DZæ×¹•Ýs’þø¶t? ;Œ-NZ.2LCþ“«›5k£F�¢N�:ìÙ³ooï\mŸþ%eu}våY•(QÈþrLvåZrssãþýû9ºôR²dÉl?€UUåÞ½{¦c‚Œ/Þìö���ðç^ÅŠY¾|9‘‘‘œ={–yóæáááÁÔ©S™0aÂc·Ïéëmkã¥i>|øÐTæêêJÙ²e‰��åÖ­[Ûüþûï€vCäFa|_¹ººòþûïó×_qíÚ5V¬XAË–-ùúë¯éÖ­Ûc·Ïïs+»c·Õs8·ä.¢AžóBêÃ?ä?ÿùõë×',,ì‰þlذ!€Õ;­"""rÔß05Õg7ynF&·³3þÎÊmŸ­fÍšÏîÝ»[·AƒÄÅÅqèÐ!‹uGŽ!..ÎìòCzKÁÍ›7-êÇÅÅqîܹ\Åš�Ü{Íš5y뭷عs'?þøãc·I?¦ìž£ô»ò¬]z)HGް¸K²}ûö¨ªÊ¶mÛ,¶Ùºu+�ýåмô¨÷ä|•5jàääį¿þjê'•Y^½¯Ê•+Ç /¼ÀöíÛMcŒÝ¾}û‘Û¤Ÿ3Ùsú9§Õ¹õàÁŽ;fQžþøõë××äq Jú]„Z.òeŸÿä9/„¦OŸÎĉiÔ¨?ÿüsŽ/9dõâ‹/R¬X1fÏžÍÕ«WMåƒ�‘#Gæ¸O‹-¨\¹2[¶l±3gÑ¢Eœ={6Ç·H§_J¸qãF�Âhøð᦭µhdþ‚þøã³ýŽ?Þ¬eåi<êØÏŸ?oõK.ý—|N~±÷èÑ–/_ί¿þj¶nîܹ\¼x‘:P®\¹' ÿ©?~Üê—ÿ‘#G˜5kŠ¢ðÒK/™­{óÍ7xÿý÷ÍZ4®\¹ÂÂ… qrr*�±�š7oN@@Û·o·˜²gÁ‚üöÛo9z?+VŒ~ýúi1<ÄéÓ§sÕ'íQçÖÝ»w9sæŒEyBBñññØÛÛãêêúÈýûúúÄÅ‹M7Ф;räK—.ÅÃÃÃâ†�§1vìXÓÍ`l½zï½÷P¥P�ye�´` rcA!³lÙ2¦L™‚��-[¶´ø0㥤øà8@³f͈ˆˆ`íÚµ´oߞ͛7[}_e=ÆêÕ«S®\9V¬X�ƒƒƒé®ÚW^y…¨¨(4h@`` Mš4ÁÛÛ›˜˜6mÚÄ�7>|xŽîRýòË/iÑ¢£G�fëÖ­4lØ�¿ÿþ›µk×¢( K—.}l¢–S>>>ÄÅÅQ»vmºwïNRRëÖ­ãÖ­[ 6,_n¬ÉK Ú'D…g°"¤@‡OlêÔ©¦qt5nPn¬ZµJmР�êää¤z{{«/¿ü²¡¶iÓ&Wãé9rD Rõz½ª×ëÕ   uÿþýê¸qãTEQÔÓ§O›ÕÏ.Ö+V¨õêÕS���­ŽÅõ([¶lQƒƒƒUÕÞÞ^-S¦ŒÚ­[7u×®]fõ ƒúù矫�5R]\\TWWWµQ£FêçŸží¾—.]ªÖªUKuttT}||Ô7ß|S�ŒŒÌõ󤪪êïï¯V¬X1ÇÇ~þüyuøðájƒ Ô%J¨öööª···¢îÙ³'ÇÏ�ªªêÑ£GÕž={ª^^^ªƒƒƒêçç§:Ôl¬°œGv2Ÿ§™—ôs4ë±/Z´HíÔ©“Z¾|yÕÑÑQuttTýüüÔ~ýú©û÷ïäc-[¶Lmܸ±êêꪖ(QBmÓ¦�ºyóf«u­½Vé¨êt:³1á2�µ±«娱cjpp°ÙûáðáÃÙî+»÷Ã�7Ô¨^^^ª³³³Z¿~}õ«¯¾R·lÙ¢*Š¢Î›7/GÇxôèQµ}ûöjÉ’%M¯ÇÞ½{Õ{÷î©“'OV[·n­zyy©vvvjÉ’%Õ–-[ª_}õUŽ�7=Ö!C†¨~~~ªƒƒƒêåå¥öìÙS ·ZÿIÇÁªX±¢£6LõõõUÕš5kªóçÏ·¨_ÇÁšê×/Ód¬|§¨ª�MN%ŠœvíÚ±ÿ~îß¿o6î”âÉM›6�©S§²}ûv‹ñçŠ2Ó,EÍñãÇiذ!Ó�Šïû/à=ŒS8ÙZ?Ë¢J.Ë M$$$ðàÁ‹òõë׳gÏ‚ƒƒ%¹â Xë{wéÒ%æÏŸO©R¥9õŽ(œ´îàž¾ˆü%}°„&®\¹BãÆ�騱#ÕªUÃ`0pìØ1ÂÂÂððð`öìÙ¢…RÆ  ^½z899qùòe~úé'’““Y¹r%¢Ð˜‚ö}¦¤Vþ“Kh¢L™2ôîÝ›C‡±uëVRSSñññaðàÁLœ81×7 !Œ̦M›X´hqqqxxxÄØ±c³�=¡(+L“6?©ô©r´Þ§È_ÒK!„°é}°f•[;wþÆ"}°ò“$µB!„ IŸ*Gë}Šü% –BaCd¬¢A,!„†äÅÈë2d@þ“K!„°!ésj½O‘¿$ÁB!lˆ´` ’` !„6DZ°ŠI°„B"� ’Ô±±±Œ9___œ��©_¿>kÖ¬)è°lÎÎ�;éß¿?•*UÂÁÁwww:wîÌ� :4›¶xñbt:z½¾ C±Iû÷ñså7 IDATï§K—.xxxààà@•*U -è°lΡC‡èÔ©îîî8::R©R%Æ�O|||A‡Vè¤4ªå"­)ùO¬B W¯^|ýõ×L�:•m۶Ѹqcú÷ïϪU« :4›²hÑ"nݺŸqãØµk_ý5ñññ´mÛ–°°°‚Ï&ݸqƒ±cÇR¶lÙÿ‰²sëÛo¿¥M›6¸»»óÍ7߯{g££cA‡fSΜ9CÛ¶m¹wïË–-c÷îݼúê«|úé§ôïß¿ Ã¢@ÈHî6nË–-tëÖ�U«VñüóÏ›Ê;uêĹsç¸ví:�äÉwîÜÁÛÛÛ¬,11‘*UªP½zuvîÜY@‘Ù®��ìííqsscݺuV'ìþ_uãÆ 8p ,(èplÚĉùðÃùûï¿ñõõ5•¿ýöÛÌŸ?ŸèèhJ–,Y€é#¹/ªk¼ï À@d$÷ü$ßÌ6nÆ èõzúöíkV>hÐ n޼ɑ#G (2Û“5¹ptt$ €ëׯ@D¶mÅŠüòË/,\¸ù�eiñâÅÄÅÅñÎ;ït(6ÏÎÎØ%;ëef½^�N§“�¹¤Ë£Eä/yÎmÜÙ³g©Q£†ÅT�:u8wî\A„UhÜ¿ŸððpjÕªUСؔ۷o3räHfΜIÙ²e :›´oß><==9þ<õêÕ£X±b”.]š!C†HK_ƒÆËË‹¡C‡rýúuâããÙ¾};ÿýïyóÍ7¥_.¥ßE¨å"_öùOú½Ù¸ÈÈHªT©bQîááaZ/²7lØ0âãã™8qbA‡bS† FÍš5yóÍ7 :›uãÆ >|H¿~ý å™gžáرcŒ?ž³gÏòË/¿tˆ6ÃßߟݻwÓ­[7*T¨`*:t¨\^}2VÑ –(²Þ{ï=¾ýö[,X@ýúõ :›±nÝ:6mÚÄ©S§ :›f0HHHàÃ?dĈ4mÚ{{{† ÂîÝ»i×®]GiÎ�;GÛ¶m dáÂ…xzzò믿2eÊîݻNJ+ :ÄBE¬¢A,çééiµ•***Ê´^X åý÷ßçƒ>`èСŽÍˆ��å­·ÞbĈ”.]š{÷î�””/©ÚÛÛãêêZ�aÚOOO._¾L§N�Ìʃƒƒ8qâ„$XiÞyçÙºu+ÅŠ I“&xyyñ /0`À‚‚‚ 8ÊÂC-ä9·q���üöÛo ³ò3gÎP»ví‚˦…††š–ñãÇt86åîݻܹs‡Y³fáááaZV¯^ÍÇqwwçå—_.è0mB½zõ,nHÿ[†µÈpñâEj×®mJ®Ò5lØÐ´^äœtr/ä9·q={ö$66–uëÖ™•/[¶ ___š4iR@‘Ù¦éÓ§ʤI“xï½÷ :›ãããCXX{öì1-aaatêÔ '''öìÙÃŒ3 :L›Ð»wo¶nÝjV¾eËyïeâïïÏéÓ§ILL4+?tè~~~V¡%�Ü‹¹Dhゃƒ bÈ�!ÄÄÄP¹reV­ZÅŽ;X¹r¥üŠÎdöìÙL™2…àà`ºvíÊáÇÍÖ7mÚ´€"³ŽŽŽ´nÝÚ¢|éÒ¥ØÙÙñì³Ï@T¶©C‡tëÖ�I“&¡ªª©“û¤I“ ¡E‹¢Í5j!!!têÔ‰Q£FáááÁ¯¿þJhh(µjÕ¢sçÎb¡"Så ’`ëׯgâĉLž<™¨¨(jÔ¨ÁêÕ«yî¹ç :4›²iÓ&EaÛ¶mlÛ¶Íl�¢(¤¦¦Pd¶OQIÖ­øî»ï eÞ¼yDDDàëëËÈ‘#™2eJA‡fSºtéÂæÍ›ùøã�yå•Wˆ��ÇÇLJ—^z‰iÓ¦ao/_5¹‘>UŽÖûùKFrB!l@úHî›­{מº!#¹ç'¹,+„BØ;Œ-NZ.¹½+ÑÚ$ðƒ�™3gÒ¶m[J•*…ƒƒ~~~Œ1‚èèh«û™?>Õ«WÇÉɉJ•*1mÚ4RRR,êݹs‡�âåå…««+Í›7g÷îݹŒÚ¶H‚%„BØ�‚¾‹0»Iàãââxÿý÷©R¥ _~ù%aaa¼óÎ;|ûí·´jÕŠ„„³ý¼ÿþûŒ9’>}ú°cdžÊ|À°aÃÌê%&&Ò¾}{˜7o?þø#¥K—&88˜}ûöå"rÛ"—…B�~‰p¨ñ¾OÉÙ%Âì&�7 Ü¿www³ú›7o&$$„o¾ù†_|0Î2R®\9È_|aªûá‡2iÒ$Ó4pŸþ9o½õ‡2Ý�›ššJݺu)^¼¸Å K……´` !„6ÄN;�ÆKïayÔ$ð:�Î"¹¨[·.ׯ_7•mÛ¶�ÄÄD dVwРA¨ªÊ?ü`*Û°aÕ«W7úÄÎÎŽ—^z‰_ý•ˆˆˆœoc$ÁB!lˆ¢�Æ‹’ƒoû'�~×®]ÔªUËTvöìYêÔ©cV·L™2”*UŠsçÎ™Õ ´l³Kß6sÝÂDîÜÌwïÞÅ+p;ó�sA‡crpEÂÁª¹Î# : ïLŸWÐ!X²�Sɤå°]‚Uñ-7tV$>¾J>;öýÿtV5Í3ϱ.}øÌc^©ªÊÌ™3Ù»w/Û¶m3õ7KO®®\¹ÂÎ�;MwfŒ““Ë–-3K°–-[†¢(ôèÑÃTÖ³gO†ʯ¿þjª›’’Š+hÚ´)eÊ”yŠ#/8’` !„6Dt·`=jw9�>>>žN�:qòäIæÎ�KRR’ÙUÞÞÞTªT 0¶zMš4‰÷Þ{‚‚‚8zô(¡¡¡¼öÚkT¯^Ý´ÝàÁƒY¸p!}ûöeæÌ™xyyñùçŸóûï¿›îP,Œ$ÁB!lˆ��qÑtŸO0¤xÖIàoß¾Mxx8Š¢ðöÛo[Ô8p K–,1ý=aÂôz= .dÖ¬Yøøøðî»ï2qâD³íøùçŸùÏþÃðáÉ‹‹£~ýúlݺ•V­Zå>p! VaT"k÷EaMµþ6ÚÉÌÆô(è ë—C„¹þ] :‚B.Ÿû`egéÒ¥,]ºÔô·¿¿?ƒ!Wû>|8Çl=ooo–-[–Ûmš$X…‘$X9" VÎH‚•rNå„$XOIAûaÀµNØÄcI‚%„BØ»´EK¹kx�K!„°5ÒâTèI‚%„BØ’¼hÁÒzâ±$ÁB!l‰ôÁ*´~ ÿ'ÄÆÆ2räH|}}qvv¦~ýú2“BmØåÑ"ò•´`=�^½zÎG}DµjÕX¹r%ýû÷Ç`0п¿FwøbáŸIð`-¤F�Cuð%ž7¯—pîüŽöàÒ¼g�ƒöódÅÆBè4X¿¢¢! Œ}2M{ð |³N�‚sç!9.ž‡òå5€¤ØDŽLÚÎåµgHˆŠÃ½º7 Ç·¡êóÆÛéUƒ�ãïåÚöKDž¹ERL"®>z*þ«&Ï„áäî¢yL±É0)ÖþQ‰PÝ Æ×…ç+eÔ™{V\†?bŒõÝ¡eim�–“Ê?}LI0é¬ý¢ ºŒoÏW³^_U¡õ:؆Յùm´� @�}HÒ´IÙð#jô=tÕªPlÌŠõÎå9á�á¤|k9ݶP×ðýyU"°8ÄÞ@k,‡hHbœ†'ãïÕÒ@7ÀO㘒€ÝÀyŒSì”Z™§ }Äö¥€ašFû&̓µÛ ê>T¯ã_…ç»dÔQUøt9,ù._{{¬cC¯ MÃ1JŒ…-“àäZˆ‹ïêÐa<ÔÏò¹¹÷38ðD]¨Óº}ÎnyÔ°‘aÄÓ‘+—¶lÙ®]»XµjÏ?o|Ó¶nÝš«W¯2nÜ8žþyt: ¯÷‚„pðþªÁý•p³?`Ȧ!ñ\kcœ—°ìZPãáîd¸Ö üO‚½¶èõ{ŽŸ€Ó jXý¼2 x®¯±Îž½¶Ç8Ïa‰ðK^|ÿe²µ×7Ü ¿Nó�:ãVÍ‹K+O°½ÿ*TƒJµþõHŽK&üýÝTíW�:Úãê£çLÞÁõÝð\øpì�ŠiS¯]~>j ÕJÂÊËÐ7Tè_ÙX'& úV„ºPÒþzœ‚?Á±Æí4�i3„߆�ZB57XyúoM‹ÉÊ0 Oß1Æÿçåçr I=q Çiï¡«R™äï¾'qà`0P¬o¯ŒŠÎÎ8oYo¾±s^Í·¸tƘ˜œV*Ã4€o€«“/? ¸ $çALkÒöÝðĘü}ŸS�´:¯ZÙî:° Ð`’ù,z�€ðsðѨæ+‚þcÓΩ´a&Î…™‹àí—aádˆO€…ßBŸ·áûÏ §ÖIÖ’^ðw8„|^ÕàØJøº¿ñCªaÚçæc`ß<è8 ªµ‡[çaó¸vF;øZ”K„E‚ œI…ˆ ÐëõôíÛ׬|РA¼ð 9r„fÍš=݃Än�¸]PvUF‹•KkH¹ wÆ�¾(Š1™Rœ¡Ü&Ð7ÖsjV…¨Yà=óéâÈdÛvØ_/Ëh±jÕ ®]ƒ �e:¼;&¼k\?÷3Ø÷‹f!X¸²åïºL§UýM-V¾­+s5šã6Sõù@йcÀµwÍZª|Zø£÷scSÈrþøþ,/Ö×,¦-î°ª]F‹Uk¸ ãŽËt LÎ2wm³ÒÆ¥òcBÚP³�Øò캫:g´Xµ.Wc`Ü~cYæi9®ÄÀ„ƒðMGè¹I»8²JÙ¾‹Ô°}8.û¯©ÅÊ®Usâ¯ýMÒÄPìûôÌEÚN‡]£ü˜ð÷pèGF‹U% Ø’V¦`l¹º 27ÏV̓˜~þz“ÑbåÜv¦•)XŸ„:�~]ŒQË€öMáÓw3¶mßʶ†å5N°Îo�K»à•U-VUZCÔUøq4è÷o¾ϠÍžb¬S©%÷‚¥½á×eÐÌZ¢šÏthŸ`I‡ |'Oy.�={–5jX´RÕ©cüyîܹ§�@§½yGÉA�rÓx9PM�ØM ï�‘\«.m!vÃÓÇ‘É�?�^½zš—¿ò2ÜŒ€£G�+ùø+éÏ çpÐ;R¥o³òƒñðænùE§³z°TݲÄ^¿¯iL®€¾˜±u*³AÕàf¹“ý¶îš†’Ó w€¾Y¾ûÕ„›±pä–yùk» cøW弉']ÊO[@_ûžÝÍÊí_î�q ÃÑc…ªšöÏÌ÷‘+ç2Z…Ò5§ý}¨ˆyr•W.Ž@­,åõÒbºžÍv‰�Çp×4¢ »@ï }ƒÍËõ‚›wàÈ)ãßööÆz™+ŽPLëŸ÷§7€£êfùÜl2bn•Ãpõ0¨¨ÙżNúß§¿×8¨'”Þ‚¥å"-XùN¬\ŠŒŒÄÃò“LzYddäÓ?HâYp¨J–—DZNÆú¤?@MÇ@Ëíë@ÒeP“ž>–4çÎCõc+UfµÒ>óÏÿ¦ÙCåXÔÙ[¸×ðBÉ”gãÌëQçng»íß»~À£ViMc: 5Ü,'j­“vÊœ‹6/O5@²Áx9î�ýàå³éõÄ1EB +1¥]A>—é”]|ÂïÀÂ¶ÚÆ`�áütÕ,^?]­¦õ&ñ <¬X‹‡%}xP�Ä1ï¢Fß˃¨ncìs•õ£±LÚ¿·€{iKiŒ—ßf€O�ãyÓŒ—*³~Cz§ýûO6Û�Åx¹RÛÖ+€³¿C�Ê–ŸuÒ’ø³—�ÿþçß°e¬øÑØgën4Lø¢c`ÄKuë,”®a”OÚçæ­s�švùÖ.˯�= ÀÍ3õ„´N®ò¢EL<–\"ÌO·G‚]–N”%ú[N}“ U,··óÈXŸi^fQO…Ôh°×&�ˆŠ‚Ê•,ËÝÝ3Öç·„È8JVñ´(wòp1­·&öÆ}�ßJéÆå¨ØMÛ¾)‘ P¥„e¹‡cÚúDór×å�”jüùâ°£3TÔk’1&+}w=œ2Ö܈…±¿À¬VPZû¾ÿÔ¨(t•,oÆPÒN*5ʘ�êê×űatµk‚¢�úË’æÌ#eï/¸ìÝŽâêj±�'‡±�SVΙ֧uNãxZÝÞ€ð+°c_¬g4ŽÉÚ�™c²æDZ�šÆbyªXéÇïá–±`Ø �’ƒ'Á+ã�en%`Ã|hÕHã FB)+Ÿ›.iÏ]\$ø¥½.€Š™ºr\9 ¨Æ:™[ÇW™—ÅçEbŸ…\",$ÁÊ%OOO«­TQi†§§µç4¥ç;¤k!?¯Å! QqüÔe)( �Ö¼PÐáp¸;¤àJ,|zÚm�Ÿ»@½GœFyåÍÝPß^­ýøºùÉáMó>1vÍžAW· }^$yùJ†¾žÏ¥_¦LéqEŒwþŒ¶ Ö“¸ÜH‹£àîÏÿh1¼7ÏØ’Õ¹$%ÃסÇ[°f„äCK©™²�P©ì|ߨÚUµÜþ Ö¼Š�åUƒ†ý3:ǧûû8ÌÖ°“¤5ÒɽH�+—YµjƒÁ¬Ö™3ƦåÚµ5øv²óÌh¡Ê,5*c½�§y™E=ì´ëwááa½•*::c}~sòt±ÚJ•gZoVÇÆ ÅÄEÄÐc÷ë”ð×>hO'ËV*0×àéh^žžH5ò‚nå¡ÊwðîQØš¥oËSÇo%¦„Œõë~‡íWa_¸—%þÄT¸Ÿ®ÅÀ^Ã}ÅÃÃÔJ•™švR)ÙŸ¿ö�:€»†£Z_’sÁz‹P|¦õéçU2’«tÕ0&X­ZÖ\2=~v1eu"íß¼¹1ÀÓ-£•*³¨{ëoß5ÞE8jÌx;£NÛ&ñ Õ8Árõ4¶be—öÁå’öf´¾‹CŒÛ9@›Ñpq'$hÛ'ó‰É0 E‚4æRÏž=‰��eݺufåË–-Ã××—&Mš<ýƒ8BÒoÆÎ˜™%¦õp¬ Å*ï Lö¡†Aù[£²‘ö¹é“öã·¸¼¾¦ß�ÿœ†ÿ@çP¸s*?«a@OÁcó‡–‹ 4šï$ÁÊ¥àà`‚‚‚2d‹/&,,Œ×_�;vðñÇgÜVþ4Š÷44úÀ<‰ãþ2°÷§& ØCñx°ÞX7]ò5ˆ }/´Ô=Ä8Ðè†ÌË¿YeËÂ3�5}¸©Ô³ɱI\^gÞ1õ²c÷-Aé&Æ;¼LÉÕ•hºïxÕta^èég8tÝ_æåË~_Whâ•ý¶’àd$T³Ò‡ë©bªlhtÝïYbú |‹C“20°&ìéc¾„õÎØ~Ohá£m\ö!] ö!)?üdVž²b5JYt�³¿ “²e;Ü»�®‰ÖyjaÔól–òc@ Œw ê0ökŠ £? ‹ûKiÙ‰­zZLç³”ŸL‹)ëð 1¶Âiß¹=]Ïë¶›—/Û¾¥¡I]ðK{›±òðð)ð( ŵì>Ø’báT–ÏÍ_—AI_ðËòã·x)cÒå¤7:š­ÞÒ0 § äÁ"ò�\"|ëׯgâĉLž<™¨¨(jÔ¨ÁêÕ«yî¹ç´y€âÁà·†€!ŠU†˜Uðp”]™ÑÿªT(\m ×»�ÇøŒ�Fí¼ÁcŒ6±¤éíÛÁˆ‘•*Áwka×ϰlIFHwïfŒ}u6­ukÛvðôo/hÙR»˜ü‚(T…½C~ )&‘’•=ù}ÕI®íø�Ž+û¡( )ñÉüØé+îž¼I«¹!’R¹uøšiÎÞ®”¬¤]‡§àòä C­\Vý;®ÃʶÆçé~tßÏU2ÞqXL—îÃgg!>¦h|U'Ø‚*À�°´˜JªK°ã*¬ 6ÆäW¸Xã[žµ6ÄÒS²j‡]»Ö$ŽüÄ<@©äOÊÚ ¤þ¼Ç%_ ( †k“øÖhì{vGW¥ªªb؈¤Ï¢«Yƒb^Ô8ª  ð�€±µêƱ¨ž'ã›*c"³h�±“ûQŒýž4šÍÁ¤ PØŒqèwŒ à@/,¿=O`}¨ í·‚ æÆË|1¡ryXµv€•ŸÏ©reà¹`˜·Š·IL2Ž�vÄü²¡&jCµ X;b Tecõ‹;à¥LŸ›‡¿ðª Éñp~3ìÿº~¾õùù&/¦¶‘oû|'OùpuueîܹÌ�;7ïÄw=ü3ј0¥F‡m(»JdJâ Â¸óÜèclÕri¾³2úhihõ·05¦Ï0N•S=¾Y½35–�ÿ ^z%ãoE�·Gÿÿl+ضEÛ˜º¬…÷qdò£âq¯áM§Õý©úœq�ȸÛ¸~E�}oÿd±}�� i¿¤¯EùÓXß&†ÃäãÆ¾W5Ü`u;cBàlgL¼æŸƒk±�¢Bgh[¾koœZGkë»Áă0ù°±ïU XÝžÓxHˆÜrúv)I¡’4ã#ãT9Uq\þëõ/½\\Húd.ê­Û ((~å)öæ«8Œ‰âìü˜Gx/Û1â�ñ\ ó�(žÀ›ÀVŒw0^’{c‹“ÖžÃ8UNXZL^@,ÇÆº�1ñª‹q쬼³~Lü &Ï3N•S£2¬ž ÏuΨóõL¨YŘ|ÍýÚ8‚BÍÊðßPxMÛ·�Ñàõ°e"l�lì{Uº¼²êgúÜ4¤ÀÞ¹ù—±ÿUùÆíj‡äA@OAZ� =EÍû‘ûþç?~œ† ‚ÿ1íî"Ô@|¸m¾ƒÇ¹~TÐ!X˜ÿÚ;‚%-/¯hDÿþ#FR-@±Å—tVXë¸^°Ôß5ŸaÁQ¶ÛÐ×TÚ]„ÇŽ£Am?ÏÓ¿+ŽÕ…Å_?WûŽ…†§È“¸…uÒ‚%„BØ«H�K!„°%2V‘ –BaKò¢“» Ó�ï$ÁB!l�´8z’` !„¶$}pP­÷)ò•t{B!„Иä´B!„-Ñ¡}Ÿ)iNÉw’` !„¶D&{.$ÁB!l‰´` ’`å£c-Ò o&·"s\‡tVp© C°°wÑ3‚…6çŽt–ŠÇtV©·ÇtÚxo-è,|Æë‚U~Õ/t&‰Ç¯pkv?ˆ 4Z$H‚%„BØh´H�K!„°%Ò‚U$H‚%„BØéä^$H‚%„BØéä^$H‚%„BØiÁ*$ÁB!l‰Ú;ËdÏùN …B!4&-XB!„-±Cû'iÁÊw’` !„¶Dú` ’` !„¶Dî",$ÁB!l‰ 4Z$H‚%„BØ™*§H�K!„°%ÒɽH�K!„°5ÒâTèI‚eƒb“`Úa8yNÜ�Èx˜Ò ¦4·¬{ü6üg‰{´«³ZCÅ’ÚÆ”›ÌŽiáÜ�Í[ÖR©±ñ\�ö-±'ÿ$öÄ$GÆà7åEü§¼hVo¯®K¶ûp (GãßþO³˜c“Ù>í87NÞåú‰Hâ"è4¥!ÁSšÕSU•=ŸžáÈ’‹Ü½ƒÎ^¡l 'mÇR·WEÍâ0Ä>äþ´/H:ùI'~Ãy�’S†á6e˜EݘϾæÁ«I¹r;�’8÷è€û#ѹ•Ð4¦'&-XE‚t{³AwãaÑiH6@Ï*Æ2Åʯ™ QÐæ;H1ÀÚXÒ .EC«ÕÆ}héáÝxŽ,:Oj²�:=+fÔåÝ7øýçë¸û— b ë�k$ön]$5Ù@`O?«1%Ç¥°ýýS”ªR‚ç¿lÁˆ°.½S—ðoÿ`n«Í$'¤hÓý»)lZô)É*­zº[ €‡1©´îëÁäU•™·¯:Ã?óãÆï ¼Õâ<_ÒøÅ‹¾ ß/‚”dhß“lƒÊlÕB¸þgÎê>±H`�„¤•e÷XÎÀž,ËrÍ#º ‹V@r ô윑•�RS¡ç ˜>^ì ÛWÆeл+Ä'hSòÝ"mÃ�œB©žÍÒ‚²¬Wÿð§Kå¹oPª—•_gOááÝ-ú-í½ço ÉJL›'åDZ‡ *Ç›Û;3h]®žŽ,볓ÓþÒ4&ÃÝ{Ä.Z‹šœ‚KÏdTÔ˜�ˆû ®ý»Rz×JN}‹¸ï¶r;èߨ)Ú~<1%�–lœúÞ"_&šeï�²d«:* «c‘6…ìó¥eÁâo«.÷E{Ÿ­²ÜáeçiÙ§1C>é^¾®UŸÆÌð_ÁáeçéXöcM6�� È>€.ó6y‹×˜”Ñ^¿IîgßàöΈòš-‡GÂPùxpkè[ä-Ý€ëèçd‹é¾YxšµZM»ví5jäçç³råJÆ�Gzz:111èt:† Âþýûyï½÷èÑ£ÅÅÅ$&&¢Ñÿ0œ0a+V¬`Ö¬YtëÖ�-[¶ðÖ[o‘››Ë”)SÊËݺu‹^½záååÅ×_�½½=}ô½{÷æðáôjÕJæ'ÂrD‚eå Õ¬×êaÓeR‘\4uƒÈXQÞË(&CuQ�ÂŒ5VwS]HJ¥¢ÊfÀÆ�¼¸�’oÆ jWÜÕÃuøwyíʽ?zôƒÇž6<åî—áŽ-ó»ÛSõÙ"ˆènœ\YDM^¿RÚÜn­þ÷ÞpláW'!)m”8¸Ú­SÙ*±±W¡´5cJ5A8z=Ž#ŒÖ—ý]°v›u$Xžh4""‚ˆãç¤oß¾\ºt‰… –'X_|ñ[¶lá·ß~㡇*/ûøã�í{êÔ)–,YB\\ï¼ó�>ú(™™™Ìš5‹7Þx©†ÿßÿþ7™™™8p€€€yä‚‚‚˜1cßÿý_þ¯×ÑDø€ºt µÐÑÇt[o¸xŠu–�ëAqî©æÄ/Ä£NãÐé hKôܸ\ȼqI¸ûØ0`D/ª¥¬] §Ž@Ì—uC•4@sÀ h¼d×I$×®ÃÕkо-L�ƒ†!`ÛÚGÀòê$¤*Ýú~ú‚"üF¨³‹îÄéÍ×8²âEy%äe²iê!4ÙE<ú÷ö–¨¸…�qÒ‡�  JNœ·|LU)«Á’s¹�«}YTæ³Ï>#""Â(¹ªÊ† 0 ¼þúëFë_ýu4 [¶l)_·~ýz{ì±òä ÀÕÕ•gŸ}–Ÿ~ú ½^_ûÀ­„¨Áz@e–ÖÆz:˜nót�~ÀeBCgËÆõ ¸}=Ÿ�“�д›íŸlZ§±<á|„’bé×¶o€ÿÞÖ¿æòv¼¯±›×aî»ðî\ðnX71T© Ró`{¤Ÿá¿ó�úaí,û&¿ž&ý»lBü'ÐÀ ~#þÅÅ0ú‹†T¥ÔømØx¸à=´g�ÅÐ+*½VÏÊ‘{øöµ]8ºÛ3r}?‚z™¯V­:¶!Rw€Âý‰Øwï\¾¾èÀq0ÐgÞ¶xLUª£[å t:yyy¬]»–„„æÎ� Àµk׸zõ*O=õS§N%>>ž¬¬,Z·nMtt4¯½öZùqNž<‰¯¯/¾¾¾FÇïС Õph4._¾ÌСCMbéСCùöà`ùºqX’H°„ÿ)ùYE,¸ …^_Y×áðÕ�vè´�–TÄêOÒøçcgùÏŽÖw®ƒÌøƒ7 M:Úò羫ñ•þît†"õÛ2%fNe?¨‹K`ówа´Â±W8\J‚þS÷ Vþ©«ä:Gã7£¬\[cA;þuŒÍÓ�ðXt'Ú>€®XÏáåç‰f+[õ8í7³h(O°‰µ|[ µä.� ü³ŠAj'2 ¥;؉yOÊd1ÿñ²®æ1qÇø·¯Ã«_5ì”4kçHZR‘åO~ñè´0<ÜtÛšEÒòùˆ|Êò±U«–£dÎNUŸ½¬ou�õ@_\ÂÍovâÚµ%.å�kª6n]ÌÁ 7д«iŸÂ€0ÎmK¡(¯{ËÖ°©|<ñýù¿è2²Ñ¥e`ÓÌ…ƒ׿‹ó°ºKH�üÅ&—:HË�S!ÌtÖ#å}¡"##Q*•Ìš5‹qãÆáå% êØ±cyrU¦ÿþÄÆÆ’™™‰——^^^?~Üäøùùù—ËÃÃ…BAVV–IÙ²ueeDVR*Ô–�Áº ÒĤe’s`×5x¶eÝÅfmÊ’«Ì¤<¢¶ (Ahm ru\_ƒ!Wš~¥äÔEò×HÍ¥Žƒ"P::�¿ lZ6à)Bóór¿Z‰{ÜÛØun+{L÷¥Ž:¹W¶wï^T*ÁÁÁ¨T*ž~úiÖ¬YCjj*~~Ò ƒÁ@BBAAAåý¦žyæ¦OŸÎ²eËˆŽŽ.?ÞÒ¥KqrrbÀ€ŠšÂ!C†ðé§Ÿ’’’B“&Òü¹¹¹¬[·Ž§žz ¥µô‹» ÃÝ&5d‘˜˜HXXG_�ÐÎj¾®æH� 㦇+£¥ù®@ºUÎ{{á÷Ò[åô©Å­rþ3·rçá»›Ý|ÙWs« *æÊËx4uåâîëüßc+vº£\PïÆŒßyï&&;ŠïY¦ÌÌæ«È¾šWeLï_†Ao ¶ÅÆÛîððˆ–¼¼äÞÉCª™íµ /6?ÆÍ«ÅU…ÄÊ+�ðldËÞHâÔoyÜL.F§5àÙÈ–.‘n¼<Å�¦mktžÞ§Ö8&ú7‡W+¹3¨­WÀ¯šÑ””0üM˜òyÍÎÓ¾ æ1ÐH.}¬ ¢áMœ\€7�n¥“Vº¾ÒÌï“€šõ£3ܬù �æÝ¤i ŠÏÞahZ:쩳0y6ìý]šù½K{ˆy>^õq+ëí›Pã˜6AáÕô*ƒzøÊ×84•Fk^»ÅÁæ#højÚ|ýÏ¿Ì�òäöÞ>h¾²ÚïƒW^£© Úb;æ#qå%2¯ä¢PB£vô×–îcjžÌ|Â?jT.¥ùãè®Þ¨2¦ÆW¶cÓÔŸÜÿ®"çÓåh¯¤ °³Å.´n.Óàš z)J4ìÑ]±–ŒÄtšyƒÊXÚ[Ðh8†€N 7çÁ¹Hh¹ÜJ?{m˜î›w®½ îÏÊÒ¢¸u&=!Í@�óÖBd4l�ƒÒ·91KaÎ*xëøòMÐÁ—?Ás³`ítÒó®§©]L'á–&…Aˆ¨‹`^"D®…­Ï@d€Tî�½ðùq˜Ö úÀé,˜ú¾ ¿¿6ÖPÓ#:¹× "Áª¥ÊÉ€½½=­[·&%%Ež“<9\*�'¸ü'öÄU$X;f€�#¼² ìK«büÃà“–°o.ôŸ#O<¯Í‡•bêÐÞ †�q Ö3ÓaÈ éñÏsáÌnùb¨dþHðm`¼®_'þ;Ä­—,';Hþʸ¦ªghæƒÿkÂ˽ä‹)xþì|Ý�Öyô åPð(®Æ­*O°g¼lT¦A÷¶¸uoË¡ ‘¤»‹ÀØWe‹éÕù¡¸ù:­k߯!ïofSÜ“+#)Ÿ5SO0ö›‡ùbˆùš¾ýçOÂÆ×Óh�K¿‡9ü,·â–'X*N…T>„ìzΊ£¯«Ñº&ýÚð}ð,þˆÛ^ž`�úâW®m9ËÓ¿½…ïCÍ*Ê>ÞZþ šÎÛJŸ=·~p"Òâ*,ç‡L÷M_(Àg”¬!Í�‚Josú…Bðë·²"ÁZ¶út†OÞ¨(×§ ø—¶É™`Íï ¾N•bj ÁË î°”`]σώÁ;¡03\*óHcðq„¡?ÃÒÓ0º½|1Ý71Ñh½` ¹úO­VsäÈBBdºTN®lìÁ§µÔd Ó¹M2´"¹po*%`gÖËK™ÊÉ€­=øµ–š Ë(,÷)®œ\ØÛBkHÉ’þV*«nìTzMLÉ”7¦ÊÉ€ÒÞÇÖM(Nɸ뾶r·W–ªœ\ØÚ«hÔÚ•¬”“m_�9Bû~�}º±Yâ)S9¹é¹²oÝ mJºñƒ¡ôƒYcªœ\¨ìmpoíK~Šº|ÝÉÏöàd”\™Måä @i/5ûßåG�.²Wƒko°oQ}¹ûPÅÛ{;h 5–±Q�k¥¤ÇÖFúœÚÊüó¾rr`o­=¤&C€i 7ÀÀ@ãre¯½(oL÷M…Tý!ç"j°,N$X2ˆŠŠB£Ñc¾“ªáúð-Mâ².�¶u4-Û°d^m±ùâ©™ðÊhlþš…šRÀ‘KR“áÝürBú7$Àü1iÕùä¹€SˆéÅØ Ó¡/Ñ¢¹œÊùq_`ëÓ€†#úš=¦u1IG²ibœ¥îY|™+G²xõKùû\Õ„N�‡æÈìC*õwÒq¦áNÙtçlÀ“ܘ8]vŽEb*Vk¸uä!�È»–MîÕl<Ûûqhê&¾i8�E¶ÿduû9œ_~Ø"1¡UCÁ©É°:Y߃¾¼G[$$u>9/5–‰~6‚; Oj˜ú5dçÂߟ¶@LEpä¦ÔdP¬“þµ«”lØ(¥ß†'dþÁ%üoM„ÑôéÓùî»ï˜?>]ºt1߉~Š‚ D”&qšÒoGÓZi� ³Á¥¡ùbZÅxÚŒ‰e-EѦbîÒåäzLþºÁ“aæ�éBÔ—è5Å4�yÁdÛ¯ÎC0k°ð¡ã¶Ù86odö˜¾‰J¤X£cpLÛòuÙ× Xõîq^˜Û‰ Mk½,áFÔÇ4EøÄ¼^¾Î1¬ Ž…àÐ1 òw%cÎròw&èðR”ÎŽf�i_Ô´šbºÄH‰oþu©&ëü²Ã¸yñhüKØ5pàìÂßÙ=â;ôÅZÚŒînÖ˜H޽üîòÙˈ•x 5o,¥¢æ—~ö^ºcÝS ÕÁÈÿÀkÿ–Ö¹»Àú™Ð«ƒbÚÄt“þnWúu¹ÿt÷«(w Mª$ÍÔ˜?¦7{®D‚õÄÆÆ2{ölâââ˜0a½wØü68Tª[ïø’´ÜÍ/ÓáÏ菉YþfLâjcÍtøý;øÛ|´Ž˜¦¯‚ïöI}³ºT3ˆ++~$ýZ]õ¶ùcº2}9éßí&xþ\»›l=𠭎¤›¤|²�ã�M¦ÓŽ�péd¶˜ÖM?Á�ï’ye~(ͺx”¯_öÆQšvq'b´¼ÍI5usúÿ¡þn+~ó'áØ¥¢/“×DãÄÔ¹g'»´æê“ÿ$kñ�x¿õ¢Ùb:<}3¿K¤çü¡xw‘ªE z©™RW¬eÀæq85”šýz‘s)ƒ£l5o‚u}:d}'õÍrªæ³§9ù‡À÷MPÊ8Š£Ó—Áw»¤¾Yw¾Íÿõƒ´-úyx¢kaù/ðL,¬š ƒÃÍÓïðÝ9˜ ]J[Y;ù@¯Æ0û0´õ„ÇàLŒÙ*%(+õpXyNZît»È|1—}°ê‘`Ý§ØØØòeòäÉ5Ûià§Òˆ¿ÚØ {fCß8xøŽ$α´Î[“eº�& P€ƒ‡é69¬‹…gð8x¼‰¥Ä®–F ƽúW]&;ú~©Ù°sVѵENI±ß’<û{šÇ� ñ„'«,S–H¹vm…דs0x—§,¥c‡f‰iCì)~š}†çâ:ÐgBÅ•ððškœØz“˜}‘Ü6nZÖé)PcïlƒÊLC¬Òcqkö×4Œ›€×„çîYÞu`OT®hž2K<Gc·ðÇìí<7ˆ� s 8x9àÕÑ¿<¹*Ӥޯn¥03¿¼œ¬nÄBêlh¾wùìeÄKÿZ yËÙH IDAT0vÌ^ q¯Ã„ÁëofCÌ×ð�gaÖˆŠõ‘� 5 Æa¾+öÌ>q=`B¥^kˆí0x£ô·� þÙEšæA]©WÅK­¥åN‰é¶Ò”’«ˆiYE§²�6ƒáô:èÿqÅHÂÛÉpyô|Gž8î´þC)¹zz 1cbY ®‘’«iÏÂôj*>Ê’«¤[°}t 4oLW?üŽ«±ßÒlÚK4›>¼Æûis È;v ·îmï]¸–~üð4?Æžbð´v<=½�ÉöGFšL×`0øWänB‡4¦ß[­hâ&{\鯓»Ÿi#ñ�^ó©r~úÝí\œºË?¦>ñí�ÝJè´¾„N7­UÚ¨höt{®¬9NAª'?i €Á` 9á4nA^8xÊ\{uãC)¹ò›þ÷øìÝÞÚLh#¬zA$Xµ´iÓ& [¶laË–-FÛ :�dß<Ø9Z€ÖƒàZ¥ J“¸ÇbáÿºÁŠ'¡×䊉F�}ᙬÍó`ÝLè8:‚‹•b .�)7£bî«k¥CõŽoWopó…6�ÊÒ¼Ÿ`æjÐ…Â�óÆÛÃ[I�nûφcIðé©È�å|@ Ç\›·–¤™+ð†ç nä0ž=Û-¼-Zu>'ŸŠÅgX/œÚ °µAsþ:×?Û€^SL³™U\­þ‚-óαaæI: hD§A~\:`À­…7ƒ�ȡɛ¤‘ƒ%:¼»4¡ÿÆÑ4hZCø—¨K?{ê-Òbt½ãG]ñ5ÈÙ^¯‚ÊtN/¹l:(=[ŽH‹QD Ð%H�—O‚vMaånøt½4/]»¦ðß·`Ì2Çt¥4¦$i1‰éïÒc­>ý®äHý¯B}`Ý \7c;ª&:¹× ƒ¹gîHLL$,, &­}'ws ¬ëªf°³¾o‚ÞÏ'Ôu&^çëºÁÄ\Þ­ëªÔƒßê: »½U×!˜0̶¾Ï¦·¢¬3e�Ü�=Jh¨¼ßçe׊£ßC¨Ìyzâi{ÑXõ‚H°AÁš(�Þ*‘`YœH°AÁšˆ™Üë‘` ‚ ‚55Xõ‚ÈiAÁš¨Ì´TãØ±côë×�€€ìììpvv¦k×®,Z´È¤lbb"�?þ8®®®xxx0tèP®\¹Råq¿øâ Ú´iƒƒƒ-Z´àƒ>@«Õš”KOOgĈøøøàììL�=عS¾»~Ô‘` ‚ ‚5Q˜i©†Z­¦]»vÌ�;—Ý»w³aÃ:vìȸqã˜={vy¹³gÏÒ»wo´Z-«W¯fÉ’%œ?ž^½z‘‘‘atÌÙ³góöÛoóÜsϱmÛ6&L˜@\\QQQF劊ŠèÓ§»víâóÏ?gãÆ�4lØ�°wïÞû}­‚¸UŽ”Ýþ ô踆×u8åö|6 ®C¨’a õÕe+ÆZßǤí®ÄºÁľªëª41rq]‡`â¥]Kê:/°ª®C¨R×ê:„rg5¼–dÞ[åü¡e=4‰BØãµ»UNDDIII\½z€aƱgÏ.]º„‹‹ ÉÉÉ´lÙ’üãÌ™3€ÌÌLš4iˆ#X°`Aùñ>úè#¦M›ÆÉ“'iÛ¶-_}õo¾ù&¿ÿþ;?ü0:�ŽN�:áââÂ�•nnþ5X‚ ‚`E fZjËÃãü±V«eÓ¦M :´<¹hÚ´)‘‘‘¬_¿¾|Ý–-[(**âõ×_7:Þ믿ŽÁ``Æ åëÖ¯_O›6mÊ“+•JÅ+¯¼Â¡C‡HMM½�È­ƒH°AÁŠ”`PɼÔàjo0ÐjµÜ¾}›øøxx÷]éî—.]¢°°�ŽM«Ö:tèÀÅ‹)..àäÉ“åëïÔ¨Q#¼½½9uêTùº“'OV{LÀ¨ìƒFŒ"A+bPH‹ÜǼ—ñãdzpáB@ªEŠ‹‹câĉ€Ôìàééi²Ÿ§§'ƒ�ììl6lHff&ööö8::š”õðð(?@VVVµÇ¼ó¼"‘` ‚ ‚)«Áº_߯�UkŒ×©Õ÷Þ/&&†±cÇ¢V«Ù¸q#S¦L!??Ÿ÷ßÿþƒù&,AA°"%èÿBžaäåNƒð^wß/ €€€"##Q*•Ìš5‹qãÆáååH5N•eee¡P(ÊûlyyyQTTDaa!&e»uëVþ·——WµÇ,Ûþ }°AÁŠ”æYj+,, ½^Orr2AAA8::ò矚”;qâ-[¶ÄÎΠ¼OUå²iiidffÒ¾}ûòu:t¨ö˜€QÙ�H°AÁŠè U*d]t÷ѧkïÞ½¨T*‚ƒƒ±±±aðàÁ¬[·Ž¼¼¼ò2ÉÉÉìÚµ‹gŸ}¶|Ý€ppp`éÒ¥FÇ[ºt) …‚gžy¦|Ý�!C8{ö,‡*_§ÕjY±bááá4jÔ¨ö�[ ÑD(‚ VÄ P`PÈÛË]êä^õd QQQ¸»»ާ§'™™™¬[·ŽåË—]ÞLK·nÝxòÉ'™|˜ØØXÆŒC›6mÊËŽ9’/¿ü’矞9sæàããÃW_}Å… øå—_d},M$X‚ ‚`Eô*zy˜ô*=`z›�šãããY°`999¸¹¹Ñ¹sgV¬XÁðáÃË˵nݚݻwóÞ{ïñÜsÏaccCŸ>}˜;w®I_©©S§âêêÊ—_~ÉܹsñóócÊ”)ÄÄÄ•³³³cÇŽDGG3qâD èÒ¥ ôêu�NcVN$X‚ ‚`Ud¿;sõÇ9r$#GެÑQBCCÙ¾}{�ÊNœ8±|š‡»ñõõ5iN¬D‚%‚ VD¯R¢WÉ]ƒ%ëá„ – ‚ X= ô2×`É}<áÞD‚%‚ VÄ€½Ìƒü ÷u7Bᯠ– ‚ XQƒU?ˆË å»Äåè%œI¦øæm¶*œÚ6ÅÜø�y¨lnâE.GÇ“{ð î�u¢ÅÜÑ86—yî�ëÇ`c4Ü<¹7Ae ÛB�qÐ}LE¹ËûàÐRHùRO‚¾f$�GSyãŽ��è�áÌ%¸™ ¶6Ð6ƽc^�Êèõðñ"غNœ‡œ<ðó�§û@ìßÁ£�ÌAåƒKÑPpŠo‚œۂß8ð¿ãyJùn®Í%Ðå��;4xcÁÅôƧEá±s¤GNÑ™+hof¢°µÁ¾msÜÇ ÅcÌ�*÷1 \�ƒfß1<¢†Ñè‹hYcH9–É�чI;s›Ü›T¶J¶uç‘q­é1¦b÷Š{9´ü‚Éþ Û¸sz¨¼AÕôõé½}ý Hû4AaNí øhÐC¶�²�%s,z59gR)¼™ƒÂVEƒ¶~�ëMð˜GËË­TŽ®ön­1èÌ,Ùbºr,‡eѸv&õÍbT¶Jš´u¦ÿ¸&ôÓ¤¼œÁ``ã'WÙ±ä© PÙ(hÖÑ…gÞ ¤û³ e‹àܱB>�NçÊ™"2oj±±Uм­=Cǹ3dŒ‡QÙ•Ÿe±fA67’JpóTÑûÞŒóÅÕÝ::*Pb5X<‘`Y!­:§vMi4ªö>èó I_¹‡óã¾ 8]M³˜(8{�ã½ßÃ%4ˆv«§¢×“4ãŽõšD×có±õ–1{Ш¡Q;îPœ‰+á‡q�›ýJ‡Þ^Ø çw@“Ppl÷ÈC%ê\h £žƒ?È×ÀÊM0n¤gAÌx(ÐÀìÿƒAÔËRruü,Ìøv€#ëÀÁ^Æ ´jpn~£À>tù�¾Î�ƒ’thVúyç&ߞŨiÞtëãÌ•ÓE|9õ§òõï�ØØÔ}M�:™,=zY�'Ü›H°¬�{DGÜ#Œk1<ú†¢¹”Jê„ò+iÆ7(íè°)•‹t×r—°`µ͵¹ki1§fÃnk$8BZîÔº/d\‚ßV$Xý¦CÿÒã�sáânùb¨$â!i¹Sßžp)®’,'GHÞm\SÕ3 š5†Áã`íVxù)ƒr��–;yö•jªn,¬¸@Î0.Ó ;¸u‡ƒApó[h+[HÎa8G„­séNÉ¥²®3I°Š“npkê—øó)CÞ•-ŽÊZFøÑ2ÂÏh]›¾�ɸ”Ëþ…g�,¥JAàC>f‹¥\M_¿ë_@Öèò¸Ýñ&ôx\ö�|#ZãÑÚh]£¾!ä^JçâÂ½å –×C-Lö½°`7 �’w>¡öž´�ð4Z×¹¯i—4l[˜Rž`íZvƒŽ}<õIE�dÇ>žŒôßîe7dM°Â"œ ‹p6ZÞ×…”K%¬[˜Í¨oÒ¯—°ò³,^yÇ‹±3¥÷S—Gœðð±aÒÐ~Zz›!£=ª:¼…)‘ÿF+âÆ-–&žñˆ�‡KùcƒVGæ¦Cø íYž\84õÅ=²#ë³LPN•¾ŒÌTÛQw&SJeÕÍ€�J¿ïSÒ,¶5øÒ®I)=ܪ\Ÿ6fÎýÂq}º·Eã)ãèag²Î`(û·Žš9*¿6)ŸAƒãäÊÂì<œïº½$·�k«�àÛ» .-,�œ.Æ¿ÙU6 ]�×ÙØ*±µW¢²µÌåÇÍ£â<'hÐë¡ç@ãç®ìï�ks-Ó½”Õ`ɹˆ>X–'j°¬˜Á`�]ž†[k÷“•p„ ¹R? Í¥Tô…Å8wln²Ÿs‡@²·ÿ�¾¸¥�­ÜA�^Åyp|-œN€§çÊ{ŽûI§ƒ¼©F*aÌ�|÷}~)Í?CZš1(tRÿª[k!3‚ªxž :0è¡è\ž¶>Ðh„™B’ž(}ž†Üµ;ÈOØ�ïÜ·�Êd/^�æÈi‚ή5K ÕÅ¥×(Ê+áøÚ$Î$¤ðÌ\ãÄ¥D£ejÃoÉË(¢�¿ŸiÆ Bqò�³}×((ª}ý ¯AáUðz .O…ÔxÐf�Skˆ†F¯™)$�m^×Ö%5á]æ«¶üÕï¡-(&h´ùfÃ.{í ótü¶ö&G2x}nEmÛ�è@¾~ç<»WÜàág|))Ôóã®’—­åÉ¿Ëß/³,&�4yzv¬ÍeB>oÏõ ¤XJÐm팓 •�….ž(2KLµe0ÃD£òO\*Ü‹H°¬Ø…ñóI]˜€B¥¤yÜO”Ú³J2s°ñt5ÙÏÖÓ ´ÙyØ5”¹Vdõx©IP žŒƒGï=S¯9�Ÿ)5 ¨T÷O˜øjõå¯ß„És¡[x2ÒLA]/5)�ô<5�ƒ&U{í$Îî6L^߉v½ÌScûÑø4Ö-¼ HßQq¾¼8QjÎ ‘òãû5tìîT¾Ï‰ PgêÌSméQ¡GÞ>†¢–å‰ËŠ5�y¿±O S瓱ñ—§|�.¿�À÷_©» úÆ@÷±P¨†“aÓ©Ãû€÷ë,¤˜ñ0ö©ÓûÆ�0ežÔáýý*ò™¬Û0pŒÔ’¹êS3Õ4üÆJ�¦37•) Ï‡À÷�Ë…ƒ “àÚ'pì1è¼\:WuÔ¿Ä;f$îc‡ Wç‘·q/éSæ£Ï×àóþ8ÒވáKOï·Bª:ì_s·×ÏPz¡ÒCÇÍ`WÚ�Ƚ—ÔW+é³$Xíbž$hl%j ×7ãø”µhó‹èðþÓ&eÕ§®“yè ­Þ| •�ù¾æŸ�iA¿±M(Pk9´1�o¦\ (_Ç‹ï°î_WønúE†Dú„7Úb»–ßà£gŽ1iUGº ö•=¦‘1Þ ëNžZÏÞ�yÌŸ’Ž&_ϸ÷}hÙÑ�.½œˆŸ�A`[;º=æÌ•3EÌ“ŠJ +é4c ºÛ2ÿµc –%,+æàƒC€ÔwÂ=² ¥’«³Vâ7n ¶^Rÿm–iŸ�’¬\P(ŒúlÉÆ#@ZZFJßHÛfIIWùÏW~ÒJÌú Æÿ;úÐf«¡ïë�š;—C`“ª�' ‡iðˆ”pu–tѶ¿ãy*K¤\»‚דp0Xj*ì˜ {H¶�° �¦ïpŽìJ%³âqû,šßŽ“·õw÷Å£»müž2£Sç¢tvDa#ÿW†G€ Ò{µU¤?J¥‚­³ŽÑslkøWÝÏ(d`Žö$LÌ�`Uûú�ÛÒÚ=—ŽÉUÏþ� %™ådâà‰s€TÓ0² (œšµ‰ ±8ù»•½ÿ+€Y›¼ðp C¤'J¥‚f]¦ß¸&(•Ò(§þÑ”—gU´Åwˆô$;µˆÿÆ, V£[HµšÝ"�Q*!~VÏŽuÇÇß–�×4æý©üc°Tófk§àåzrp{>yjë¨å1 ”½Ë€uÔÎý/ ÖÄ%,ôŠ’Óq k‰ÒÑŽü?¯˜”Ë?‘„cKùû_U% LúEûZ�%X•…µ—濺–V‘`e«áñpõìX í囡f\Ã*úZÙWó<)¤y” “,’CXÐëÑ&§Qtê2hu$…�0)w{Ñzn/ZO“ óp}*Âô@2 óÆ 7�}-¿Ú ¨èùn å¯_²” «œ«9Ù:ó÷wñ k†Ao àZ–Q‚¥+Ö’ôÍïxv Ľc€Ùã¸SP˜½�Œd :­ƒÞ@pWÓQ&AanÛ–‰&O‹£‹y/CmÂÐë!íš[<|løìç²3´d¦iñkf‹�ƒ’ægÓwXÕ?,ML4Z?ˆë¢Þ{…J‰c°? ^ƒæÖºßhññ¨ò‘„…ÉéÜÞõ'ïJš•Ý-\ºÈ–dBÆ:H[M£¥f#­N<¾ÃÀ©­4[¸æ¼4ô_¯�À™2iQsPº»âÞ•§ºL5¹ëv¢^þ3^ÑÃÆË¼Ü±mæWåþ6�}qzTÞ‰*~ˆú Gw;Ã}qö´'?³�ãë®rhùúDwÄÙË�¬«y¬³�.ÏâÓ²ƒ�K{Óøåß'ðkïA÷Ñ­ï}¢Ú¨Éëødn†O@³™`ã©‹!ï(´[%kHG¢V`ëî„wx ì<�)ÊÌ'eÝQ®,ÿ�¶Ñ°÷2î p9þWlœíh6<\Ö8îôߨ38»ÛÐ:¼.ž¶äf–p`]:»–ß`Ht n^ÒT=‡5bÓçÉØØ)àMI‘ž�ËnpbW/Ï’÷GÙœ¨4\Ý•twÄÍS…:SÇÎu¹ü¼\Íߢ½p÷’.wâo£P@Ó–vjôìû9�5_eçKëβÆt¿ô(eO°ä>žpo"Á²B.aÁ¤ÅoãÆ‚ŸÑæ`ãæ„Kç Ú¬˜DÃáÃÞœZ7¡Óîqù½%œzn6 }:Óbîèò$L6MÂà`<ì_…9àà�;Ã++ lxE¹´“°ìΡã X3AzÜ¢vÊRXį�+¥[ู@ç¶°b. ,•¹™GNJ�ÚߪâN!#ž…%É’Ô””7€.TnR?«¶+ aéó¤t”j9®…ÉR'w»Fà !?€S›»Ÿ£–ÂÚr;þG²¬AŸ“�Ò͇έð_ñ! †?qï˜I@˜7¿ÇŸcß‚3æ”ààfKãÎ^¼¶¢7]‡K�¤Ül±uR±uöqrR @¡À3Ð…ˆ‰íè7µvŽ2…Õäõpl]~…Ë“KG–€Kh¿¼V{øûáÖŒËñû¸¸`7%9lÝqï@÷£ ¬”Då_Ë"mûi_펭«ù’… 07~‰¿Î–×(ÈÑá䦢yg7þ±¢�¯HÔßZÞž€vÎüº2�Ÿ>MF¡„€v.Œÿo;£[êÈ¡m˜?ÆßfÍ‚lòsô8»)iÕÙ�WøóÄðŠfJ�ÖÀwŸfqãJ ¶v Ú„:ðïuMxt°éˆìºbž[åˆËÒ†:›¹ïGbb"aaa„ý×PëiJÛóÙ€º¡J†�ÖW•­k}“¶»ë:øª®C¨ÒÄÈÅu‚‰—v-©ëL¼€¼µor àZ]‡PîL¢†WÂ’8zô(¡¡òÖì–]+¾?@ÛPyä3‰…¼v‘ÄÕÚ IDATÍ,q U5X‚ ‚`EÄD£õƒH°AÁŠèÍ0Mƒèƒey"ÁA+"j°ê‘` ‚ ‚Ñ—Þ Yîc –%,AA°"b¢ÑúA$X‚ ‚`EÌs«Qƒei"ÁA+"ú`Õ"ÁA+"&­D‚%‚ VD� �ÜE –¥ÕëkïÞ½téÒWWÓ[ äå员˜È£�Êwo¼{Æ´ÀôÎòu¥÷Ûuw›”»yõ­…u‚©´ºÀT;N×u&þ™ùŸº¡Jvõ¯ëLèdîc#‡ÅŒ®ëªôÓþa÷.d)ç,qEé"÷1Kª×u†½{÷æÌ™3Un;{ö,‘‘‘UnA„º¢+�¦AîE°¬z]ƒu7:�…Bdô‚ ‚õ�Ò|õ.ÁR«Õ¨ÕjÊîa�ššJrr²Q™¢¢"¾ýö[5jT! ‚ Bµt¨doB¶Æ&éú®Þ%XŸ~ú)±±±å2¤Ú²S¦L±DH‚ ‚Pcbš†ú¡Þ%X}ûöÅÙÙ€èèh&NœH@@€Q{{{:vìHDDD]„(‚ Õ�Öõ.ÁêÑ£=zô¤‘‚cÆŒ¡qãÆu• ‚ ÔŒ¸UNýPï¬;½ÿþûu‚ ‚ ÔŠÔD(÷D£"Á²´z—`-_¾œ�âííÍòåËïYþµ×^³@T‚ ‚P3z3L« M„Wï¬#FpàÀ¼½½1bÄ=Ë‹KA°.b¢Ñú Þ%X—/_Æßß¿ü± ‚ þo¼Add$}ûö-¿÷¡¹ìXœÌ ÊM¼æš`²ír¢š?Àk® ¼î±•yC��~¥À¬ñ$±ÀG•Ö'�…À¬Ò2j³G#¹¸øWV(Çñ½ëÄòu½ž“sØ9�ÕÞÿä;»ñ¬o6™Ãÿž¢ì|óu{1œUÂyWãõYŸBRW8ïgmႤ �Â?ÍÒ•Å»Y«|�]ÇT[Æ`0°çÑY¬U¾Æ±‰÷žòDúo–QâãNI3ãÉ�µoŽ—ÖW^z\ŸûN jÅW 3’{þ?{çŵþÿ÷Vz)**j슢ˆ1vc°EM±ä&FM4ö˜fEý’KÄk¢’{{‰ÆÄDc¬×‚=DÅŽšˆ]D‘"H[Øòûc–…eë,~ó~½æµÌ9gf>œÝÙ}æ9ÏyÔˆõ 6‘”“�ʹO×ãàïN~FN‰í®Dí!ëj’°SÂP»˜ï ›1 |ýÀÚp»ƒŠÍ[ÍŠdöö6Õ”’�ËÊOÿÆÓߎìb÷žNg`NßÓ\<ò€×&Ö¤Þ‹îhóô\9™�&GgSM«>½„‡¿�Å÷Áì˜ÖíÿŽyÀŠñ }Ív‹Ûç$¤ráÓ5Øû{ -ö™úkê�ÄÏÙLÍ»Ó(ê=t9y\�ÚEìÿ&ø—Oðëk#9á>|þ• £ØsÔ'‹aáÏþ.tn®Á”ïáøEøã¿ ,ã_F2ÑóVIAî¥O…6°ÎŸ?OÕªU­ÖU­Z•‹/P§NÒÒÒžø¼÷îÝcüøñÌ™3Ç”–,qކ+áä®$fc¢YÝOÓÿBí gÒÖ–Ø; og`°;ãêDó{äþ5§¾M4mjöÀ…bu퀂U�×m¢À’?Gü€oǺ¨Ü¹¹1ÖT®tTÓ÷æì<œLe•ÛÔÆ¹º'ѽ¢¸ùËIjþ«•mDÝŽAá7š×Ušn¾ïÐZخւôÀ;[prÄJ¼;ÖGåîHÂÆãVÛd]¿OÜ”Ÿh¹fôýÆ&:Š£ûä#d/µ77 [~³l W o\*Z øÏˆ‹4ê艓»’£ï™Õm_t““;S˜s4„BÜLåM»xÙTÓ÷#ÎÓ¨£NîJþØx׬®Nˆ»Eû]ÿ¹‰L�ß³þ](çF,¡Rdž(Ý�HÜcVw{Õ~*unDÃïšÊ*unÄÿ¸½ê€Í ¬ó cspw†�Ñ…å ÷ïÕ'`ÆP¡ì¥&àí¯‡ÃÊð~/›Hzb¤¥r*zˆ°råÊüö›•/j`Ë–-T®\€ŒŒ \]]Ÿø¼£G�¦AƒŒ1B��âàÚÛ\<”Ê{Q�(> ©Óê‰Ýz�V¯û™Œ+€J4ìèűMw±g¼Rݱ8Y·ñÕµ1$ºL˨·(ÞQ2¹Ü̸*À½©°xöí'7®ŸŠôµ�}|¢xâS…‡m´¹¹ö)‡þ"(êÝGJ:9l>]ãß»t ýÏ0Äü�â«H‹÷Ï„±ÜÖÃñì_{‡‹‡Òø ªžÕ¾úý››4jïaf\Ùšk¸p(�aQ J즢ä<ÔòÇÏwiØÁ Ÿ@G›hº½ö ©‡.Ò(ê=«ï�L©@éâ`V&W)‘Û©�«l´v: Q[JЉ½º‡š—w7:ÿ~ÙoIO…¹M¶’ؽ{7$00µZ�‡‡ݺuãÈ‘#%k4h×®r¹œ±cÇZm³hÑ"êÕ«‡½½=���|þùçhµZ‹vIII <oooœœœxñÅÙ·oßÓw\9£BX|ð ,`èСlß¾�ãÇ�³}ûvÌ‚ LÒÑ£G-†KbãÆ�lݺ•%K–ØR:îiX5>Ž·æÔÇÓßr(äÞ•lòsõ4±4»p7> mž^TM™ÀN  Âð`y ç^±ã¢Ùœ×pô·|‚/‰»{¦[Cx!µ÷ iÃðÀ6Æñƒ{–�ÿ‹wæÔ±zï%ßÊåþ�9³fÊeÞõÙÏëªÝŒkt”èÕwl¦iÅø‹¼=§®UMÖ8üc"šl�ß·�÷JsïqãWQÎ[Øû{ZmSk«$m?ÅíµÑfæ’—œÁ¥)ëÉOˢƸn¢kº— ãœÂð`qòò…Wu±¨¥B ?WòS Kå(DÝ5ä¸dÉîÞ½ËgŸ}Æž={X½z5999tìØ‘èèh«ÇDEE™’y[›­ÿå—_2~üxÞxã þ÷¿ÿ1jÔ(fÍšÅèÑ£ÍÚi4:wîLtt4 .dË–-øøøÆÁƒ¶�´5zˆpÊ”)dffòïÿ›•+WšÊíìì˜#&&†””¼¼¼hÕªžž…O[�7~¢s%''“””Ddd$‘‘‘õôéÓ‡_ýÕêñï~Ý�ÀæOö£³1‘“[“˜w¦Ýµ/ .¶}rnlŒåöÖ³ô83ýñ��hR³Ø×}Èd´ÝPò,ºg&c#dn…gž¬}õ0h!ÿ:¤-€›� `/؉&éöÆc$n=M—3_>²ÝÉ+qoV�šïwíÚ�B¿e3†ÿíDy ä¡ŰÌ Z…"kÜÝ[ýЯ]�⃑¢i:ºñ'¶&óõË€ñ FÇp~žžiÛ››b´õàî•l6|~UTë��w‰ÝzŸùgÚ<ñ17ã,�ncª£R‹?X‘¸1†¤­'iwfÞ#ÛÅÏÝÌ_Ó6PkBo*w BŸ§åöêƒï3�à ãñé%ÞãÚÆhØzά,¹M“Úж)|¹êW‡NÁpñ: û r�éª�/ [QNþÁï‰&Ù*:,öü¨ó7®@pDÔ­[—Û·o[Ô 6Œ®]»Ò»wo«çÛ¹s'�†!C†˜•2„©S§²yóf“�µiÓ&êÕ«g2® o¿ý6S¦L!11?¿Gx¶Ë1ÞÀLãÉÏ‹ŸŸÑÑÑfîPƒÁÀœ9s8pà;wî¤R%+>é§$7S˲1çé6®&n>vd=|ÚÃ}ÙéùÈ•2\¼„‚™©ùçÈLÍ8{ˆ3;.Á{Õ p æèÌ•ÊEo¶ÍœEëägær|Ìzê�넃�+y„ÔúƹÆó¿_fè3áÞðJЧëx¨té S‚¼ˆÇ¥À�rhÎ=ájm¸?ªY¦äx´™¹œ³šÚãºbçãJÞaJ•>Oˆ…ÈOÏF¦”swÇYîí:K‡ÃÓLmLÿ–&ŸüôlNvÈ•âÄÍ23ÑMú ù°àí�!ÝØWF�°!#ʽSò—»¢swÇ{B=9™Z¾s‘žãp÷Q›î½|ã½—•ž�B)Ã¥’p_Õhâbá!nöJ%6D\!#%W¯ç¿#r2µ,G÷qÕq·ò}P ÉÞÉüë|ß2á‡ÑÃÚÌ\Î�YFÍqݰóq#ßÊgJ®R }˜Ã_S¤æG=¨7s€éøJ¡ILãÜÈ¥¢X™Ù0fŒ{|< S. ¦g ÀN°ñ < zMêÔ*ø¸?ì>é¥�¹åI(ëYéééœ8q‚.]º˜•/]º”'NpéÒ¥�=þ<`é¼ðõõ¥R¥JÄÅÅ™µmßÞrô¡àظ¸8ÉÀ*/ܼy___Ôj57oÞ|lû€€'w·ÛÙÙYý ¬X±…BA»vâx›2’óÈHÒð{ä~�¼bQ?Äc-ûøòñÏÁ¨Ü>Løµð}ÉÏÓs`MµZ¸QÃJŒæó’—œ�&)ƒ+‘¿s%òw‹ú]CðíÓ’ÀO{aÐpoQË¢�[p ÷ÿwmf.JççO·‘œIi¹^ØŠãÑ ú´…_g�·l›Éàn*T÷{5,þúuzn)Ï�Þ‰FŸö|£G�&''Ç,GdAríÈÈH|||J<6%%;;;,ê<< M“3ð.’8‚�†ámÀ6s”JÆÁÏ�—£?±7g÷\¦ÓÎqØUr �«Ìë)tÙ=�¦Öckž…Dc!*ed€j;Añ¯™î!hN éDÂÞÏ�vÑ“ÍsY ü5g+É.ÑfçgØUrAád‡wÇb11;ÎÆ¿o0µ?|׆"¥>¾B^«bºô `8zņ_�y•œò@¿k¤§#k)Þ4?;¾ˆnaá¥þuÎ5ÎHcÆÎ`\+©P(d´êS™£¨ÁÓÏÎÔ6vG2¾µq±ùlšì‰ˆnU¼›Ø4ç qR™¶³%.ÅòÝ�Ø’ÄÔ|δMp»�Ÿ­£gX|Ìãçl&åÀZ휂º’+J7á[!íÏËø÷Ñìi1—Qy:‹b\øyAôB‹�sÖÂ�Ó°s>T*¡QÉ]Ø@È‹•­�1¯‹"ç¹xÞ4 'Ö_åÄzóhýœô¼'>~Ú´i¬[·ŽÅ‹Ó¬Y3Sùˆ#hÖ¬ï¿ÿþ3kûÿ‰ g`-_¾œÀÀ@ÓߥÁŠ+X±b…hçSÙ)hÐÞò‡%zÅ-ä  ÚÖõ‹x�É-3§çqúLªeJ4êVYMO ,%PÃJùi„¡Á¢aøÙæ¾2¦©ä2‚æT¬íó °SáÓÞ2ç•G�)dø´ê´9yì{åÒNß"øëþèòtÜ�)üò±¯ì‚Kà³­Ei�Ü­Û§¯™�^N]:Ü~\û�º>ÈT�÷7¤}†¨4C=ýäÝÞ2˜øÆŠCÈr¼ÛÕ3•9U·nü9Tñ4k'2;;dm^²(ׯÿAÈyõ¢od¸uÝGã�¿ÚjÕƒÃÑ£‚׫~äo²8dz¢²“Ó¨½åÓô¾w�+d4lW8ûrà絈Ý~Ÿ/º�¤ÿŒ@\•ìYšÀ•Ø >Ý ÞÄ •�œ†V5Ý6~XÖí]v ;'mß²Mž>…� ¯ö ,Êo­ˆF¦�ãÕ®°Î¿_k®/Ü�\­¤rX:M>·W %:Žº3ÅóyÛ©¡}3ËòۅتvEB—mlÃ:Õ Gێ·›`ÖpzºÓl„ì‘iGðÀÚ¬mVvëd2sƒ­§-*JDD_~ù%³fÍbÔ¨Q¦ò�7²k×.>lšàU€F£!=='''”J%^^^h4rss±/– 855•–-[šö½¼¼HMMµÐQPæõˆ‡¬òN…3°ŠÎ|’™�ÿ$d2ËaÿºÎÌØßš&^dþ±(”2w®Ä;‘ L1Z6Õd¥, ø¹X›mÆ¿k xÂlJ1�bî½ RNÜ@&ƒn°h^kpkZ/lkQ˜õ–ÜÔµ mä߂ܕ¾BRRÿŸÀN\cæI$•„zᾋ 88¢[0îÝêª 8ò�>AfeB|M–Éì}™u(„Õ“.³ppÚ|=�Í\™º%ˆàî"ì�’dE@ò­ÎìN¡ý;þ8¸”òW¼o~Ðê187¨Ê�õG¸öõv�ËpiP•&ß #`X—N$ª$‹~ÒêàëŸàZ"¨•м®0tØëÉçØ2t"ßœOr¾ˆˆÓ6iÒ$³º¸¸8´Z-¡¡¡Ç-Y²„%K–°yóf^}õUSüÔÙ³g )ô0ß½{—””5*œ¾Ù¸qcΞµ\ìܹsfmÿiÈ ¥•µïÿcNžñ,ÂÒ N¶õñ�Ê€+†ïËZ‚këÛ`¶ásòúÅGÄ&•[R^-k VùÙëͲ–`�®.¾»‚!�oTü~¤_YK0Q0‹066–æÍEŠG,8·ñ·â“Ø×¨Ö\Ü 8·N&3?ø×uñÅ̘1ƒððp>ÿüs‹ú7npã†ùÂgƒ�Ž;Ò·o_>üðC6lˆ——iiiT©R…Áƒóí·ßšÚÏ™3‡©S§G½zÂCäÿû_F�e íÐjµáêêÊÑ£Ö¢~ÿT8VDDÄSÅCMŸþäÓû%$$$$$l�™èiÓ5þ|f̘AXX=zô°È=JõêÕ©^Ýz€G•*UÌ&yyxxδiÓðôôäå—_æøñãDDD0lØ0“q0tèP¢¢¢xóÍ7™3gÞÞÞ|ûí·\¾|™={öX»Ü?† i`= ’�%!!!!Q¾�#þB+%ŸoëÖ­Èd2vîÜÉÎ�;Íêžu2Ø”)Spqq!**ŠÈÈHüüü˜2•ùûûóñÇ£Õj7nœ…µ.!!!!!Q–�‰žh´¬—þÿH…^ìùðáônm=ŸPhh(‡.eE�¦ Ѩ؛DéR¡ ,;;;Nž§Di"XårÑ=XbŸOâñH–„„„„„D9BZ*§bP¡MÚÀÀ@Μ9cµîܹs–²" ‰GS�hTÌMJ4ZúThÖõë×Ñh4Vë4 ׯ_/]A�AJÓP1¨ÐÖ£¸yó&...e-CBBBBB¢R¢ÑŠ@…3°V­ZÅÊ•+Mû£F�ÂÕÕÕ¬�F£áôéÓ´mÛ¶”ÕIHHHHH<ɃU1¨pVVV÷ïß7í?xðÀ´þ`vvvôë×�ˆˆˆÒ–'!!!!!ñH¤D£ƒ g`�5ŠQ£FP£F 6nÜHPPP«’�����x2¤D£ƒ g`E b—����øç!%­ThŸá™3g8tè�i?##ƒ!C†´iÓ0ÊÑúVIAµ"oR¢ÑÒ§B÷øØ±cÙ½{·iâĉ¬]»½^ÏìÙ³™7o^ª“�����°Ä@a²Qñ6‰Ò¦BÆÅÅ1iÒ$t:ëׯç‹/¾`Ò¤IDDD°zõj&L˜PÆ*-Ñ:BN÷׬Ö9Dï@Ñ¢¹i_}€¼/æ¢?P†½ŒÝÓ‘yWUSÆþÓ\êô‘Õº1ßâR€´­�úS4Ù§.“{é&�ž}´¨Z ùè_BÝ Èþ.¹€?ð*0°YÓ~ s u!Æ¿§Û€@6P è|ÔWÒÝý°³“õº1àbY®Í�-M!#Z̃FŸˆ« ¸¼?‘E�¶[­û8æUj„xðM‡m\9x×¢Mý°ªŒÜþЏ¢nî‡u%ôÕ ð/ÒWyYðç\¸ð#dÜ¥=TnÝ–�gÑ$í×@§ëu1• D ×µ˜Tò9^±ƒ^¢Iþ•P÷3ÐÄø·áþÛ $v@c`4…÷‚H$ì‡M%¼woÆ€�ñzº<81.­�¬;àä/¼-§ ïa9@�½È?ÏbŸOâñTèOOOÇÃÀ³gÏ’‘‘A¿~ýèõŽÊ› IDATС³gÏ.Ky�EŽ¢]³2yýº¦¿u‡Ž’Ûw Šî]±Ÿ> CÒ}ò¦}ANÏ7p8ô?djµèšªÎ†kÇffe k˜þ~°ù0YÇ.áØ¬6r{5Y'/‹®Á’IÀ‹ÅÊ^0¾ÞÖ}�Q€;pø8¬³‘¦Y@Çbe ‹ü� 1–9€/þ�ó€§ø’‚gƒo1Mî ­·=5 ´ÙÂß2ÛÆnôšÝ‚:ýÍÊüº›íWªåÊ :˜•9º‹ÿù6Ña6ë«JEú*/Öu„¬»: *7…ü,¸óhÍg-‹Ålèhg^ÖÐø ­âlÊ…¹™ðšÍì†O€Ðbeµ‹ü=؉`PµÒ�%Ÿýõb"Òz6T-öÞyyïþ7nî‚Ð/Á;îÅÀŸÓ!5zü&¾žgÀ`ÜÄ>§DéR¡ ,777nÞ¼IëÖ­9tèÞÞÞ¦åq 2ÿp X`$&ÚDѳ=ƒzØBH!ƒ°= ]õÆ@¥¶ÕSD×ã&œT—ÞÄ”GôU~6œY õÞ47®l¯è±o_Q®há@¼éÎ6û¦Ôç\(<´Eq4ÖÙèùþQŸóÄ#ÂkõîæåÕ{¯W~±�¦§¤ Ѩ؛DéR¡ ¬¹sç’““Ø1cP(LŸ>ÝT÷믿Zܵ]¾ÐŒŸ@–»?™þµÈéÓÝÇLuú —�7j`qœ¼a}S½Ø\¹€ãª.ĺõ௰ <ƒ k¯^ADíŸØ~‚ü\­íDí _©`�lƒÛEúên¬`dyÔÚ}í óì`eK¸b£`d:¨Á-ÂRàHÞ£Û/7Žð¾ïh3IÀ „û®9ð[¤N ¼ ü r€{Àÿ®@?ÛH:0¾UÁ÷n°%¬Ð¨á@QÌÝW°ŸR¾Ï Üå"o’�UÚTè!ºuërõêUñõõE^ÄÓ‰ŸŸ_ª{îî¨>‹â¥‘y¸£¿z�üo¾%§[ìY‡²s ©©È<Ü-—yx`HMU’Òÿ‰qi„ÒÓM|‰‘¸Ôavv€.Û ŠQSêi8?O(SÚlLÉ„£‡š.›P»½Žžv$Çg°7òßtØÆˆm]©ßµ*/tò'ä�Úø6pG«ÑsaÇmö|uŽ+‡ï1.º»¸^S;�íÁÞÒâáX$¬ëonƒš]áa‚Ð6f.øµ„>?2¡ÝÆ^Ðo‡ÐN$<ä0ÑÚ«ÁSñZˆÌ‚ɰͺZqÐê °2ê+¡µMBÕ\�áÃëî“5–ïß/ÛMôÀì>Àr„‡"±ó€à‰ào|ïÒãáT$lê=·A@Wð2Æb%�Úo[`„å–0› ”1ØÀã$X¥O…5°²³³©]»6K—.¥{÷îõMšØ`ì_$�¢h\”©hÑe�0²[u oÚç(;wxüIDªslZǦ…Á«Î!õqï݆ó�‡rkâwed`50n!0/³±n`ÝU�¯l ©©q+ è�k2 sËÁÛ¦.s ³C@5ñ$y66ÓeC Zoø­1ÄN ,½�šÀ¿tbPª4õ¢JÓ©m5B¼iÜ;€Ù�7±eâq“�Õmºù¤Š:üð¬îÌÏcŽrnËMšô®.ž(Ÿ¦ÂV€Ôé ËCôDÁp2è…:•¼ñ{á̳jmáûàèLQ ¬¦*a+ D ½í¡ñ}!ÆÊš�µS‰zøÄY4ŨOá0;ŸïÎ@O`…Öÿ›�Ï€` abÉ`ƒLÄïáJM…­Ÿ¨ÙÖ7†£+ ¸×†#Ÿ³½›Ã½?áè�+@V>u¤¥r*¶ÇÉÍ͵XèùŸŠÌÉ e�0ôçâ0h4È<…Yf†´m iiȇpŸ}Š0|„ðñ-ÂÃÅ,ÛKR9 FVòÐi@¡‚^;À© üÒþë[_…àɂ̩ÊãÏY è�٠ѨäÁ*m*¬  cÇŽìß¿Ÿ—^zéñ�ÿIÈdÈC[úóàeóÜ/ú¸‹¦úÒÔTþ(ªé6ÂС ø ð-E�^®ÂÁ³v½t¤€ñ}“Áƒ8ÈK‡_­äo:5MØ^= ž¥çù-Ÿ)™�ë J¤6”º¤x7%é`k.ô±¯2y„.PtÍøÚ¸X½ÁûuˆÒŨ˭¼q²!7UØ×¤ÁÁqàß®”5Y§ 9¨Øç”(]*´�Îo¼�J¥âµ×^ÃËË2Óž§§ ò ÙCfÚß·#oÚ™Z�Ìßy‹æh܈êÃQ¦™„ºc'0\¾‚rÌ›kÒeæ�¶é0ŽÍê W«@©�…�w§Â3<@‚qe6 $-M2�M@³"š¬qÁ¸êöˆ6"‘Ÿ 77�g(ì ñ$¨],5DN"õFB�þàRËæ²4™ùœÝtƒªÍ¼PªKž¦~lµ�_­FëÊ6×D^&\Þ>Í/•³T}n€üPãÕ´¹pcø·²¹¤L½�㪙JHÑP”Õ9ÂÔ‰÷JÕ{½·ÁxRSxŸ�Á|Ø\‹�ë­¼Ey™pux7³ lwò6€˜HP9Cƒ÷l¯é У°A¢QqÓ>H<ž m`0yòd&OžlQ/“ÉÐéJ†(+r?‹¼Fuä̓�¹¸ ¿~ƒüo¾Åp÷vÿ)ÌŸd÷ù4r^}“ÜwÞCõþ` ÷“É›>yÃú(ß(ª¦«ƒç`è‡S‹º(\�Ð\½CbäòS\^˜ _sã.YÇÿþ¾"§þr `WÓ§àºVÏÿl|  Äq8#(ßI@¤±M2°`AÙ}ãV€?âz³† ï¶@¾Š䞈spG6,ˆk;oÔç‰�¼QDç@!í‚Ê^…¸HÈN„6Ë…6nu…­(™×…W—Zà+þ“ýÚÁñ t! E%ì]U¤\}ÈÞÈsd$fó¯åmˆ?t—ý_ÇѤOu<«;£Õ踰ã6_à…Îþ4î%rª•mƒÁ-üZ€Ú\‚×3¡ûòÂvç ‰Fî­&ž­có!+ zÿ$ª¤Ái¨„*p•ÁUDfB¢–[ÎqaY6(à›&%Ÿˆ'ØáÞ»…¸žDáÐ_0°à|„ĺÁk‚âE^ªlÏ`p „ÊÆ÷.ãªäž•�‹¼w§æƒ£/¸T¼¶ñ?Áßë ËšBƒ«"%-}*´�U4-ƒ5Êk¢Qy�ÚhÙŒþ›(ÈÉEæé‰¼M+þû Šf…O‚ж/bÿë:òf~En¿AÂR9ݺb7s2•¸%ûºÕHÝMâ¼Ñçä¡ôrÅ¥mWL43š2¢OsmèÜÂe2âßü?* #pùDU"$+ü/Â8Aåó) ž½Œ`xÉ€qVÎñ10^DM/ AF"LK÷Ú"üøÛø"ü(ÍFð®�04Ø!óµÈOö®uáúa† .ì¼À§-´Y•‚¼�¨\×�“®²wÞ9òs´8yÙQ«­/ÿZÑŽ€`!-¹›Ÿ#yÙZ¶L:Næý\äJ•_p£ÇçÍéôIñ¡'ð¬ 7À±y‚wÊÁKˆµê±|‹ôU•Ö0p¯�ptó›…eoí‡*⦩«„ 90/r °_[5¬p‡àbN™£yð—f¸ˆ*Á 5’ˆ.C¸÷Ü*f#] ÜsË€E÷Ä"ÏV=`!æ>DÀ½.Äo€Só„¸A{/ðo �W@å"ï]~¦�¹=ó–àµòm }÷ƒ_›O]ÚèQ =ѨäÁ*md†ÒËÜ÷ÿ-'Ož$88‡Ã{P•ŸÙ‹ œ.”µ«“Ù~(êé)Á¯f .‹V¼_Ö¬2vòÒ²–`�auù{ÿdwJcå…g`Œxk;>7I'á§`bcciÞ¼ä•6ž…‚ߊv±³qo.n‹'¯q0x²MtKX§B{°$$$$$$þi$ûœ¥K…3°V¯^M�=ðòòbÕªU�4¨¤á%$$$$$J=2ÑÓ*HKå”>ÎÀÒ�Þ?ÉÀ’�����(GØ"Ѩ´TNé#Xå½qûœ¥K…4°.]º„R)ükZ­€‹/Zm+e´•����(O�‹îq’Ò4”>ÒÀÝ…æY¥v¹Ç"S”ÏU’ KÊ_ì�lr9ì+1ר‰±~åoIûK©e-Á‚³cËZ‚ãÙXÖ¬òß•µNjx]Üõ¼-Ð#=­Â£Î—™™ÉçŸÎéÓ§9uê)))̘1ƒ3f˜µ3 ,X°€åË—�R©¤I“&|úé§¼öÚkç]´hQQQ\¿~Ì”)SL�’’’˜0aÛ¶m#;;›¦M›2sæL:uê$Î?_FT8kùòå�o$!!!!!QN�–ž+99™%K–Dß¾}Yºt©ÕUP¦N�Êœ9søðÃ‰ŠŠ"''‡¨¨(Þxã ~ùåúöíkjûå—_2}út&OžL×®]9vìááá$$$ðÝw…³F£¡sçÎddd°páB*W®ÌâÅ‹ cÏž=´k×NÔ~(M*œ�eÍ{%!!!!!ñOÁ`Ö£Ö"¬Q£iii¤¤¤°t©uOôªU«èܹ3 ,0•uîÜV­Ze2°RRR˜9s&ÇgæÌ™´k׎üü|ÂÃÃ?~<õë×`Ù²eÄÅÅñÇЪU+:tè@Ó¦M™0a111ÏÿÏ—Ò ¬„„„„„D9¢`©±·'º¶¡äp¥R‰‹‹‹Y™J¥ÂÎΕJe*Û¹s'�Æb¹º!C†`0ؼy³©lÓ¦MÔ«WÏd\( Þ~ûmŽ;Fbbâé.�H–„„„„„D9¢`©171/£G�F«Õ2tèP €»»;›6m¢mÛ¶¦v)))ØÙÙáàà`qRRRLû©©©xzzZ´+(+ÚöŸ†d`IHHHHH”#ô(ž+MCÚúÿ‘¶~·Y™.=óye1wî\¦M›Æ„ èÖ­yyy¬^½š>}ú°aÃzõêõÜרHH–„„„„„DÂc`W<v5+Ë:ù—ƒ?ó9ïÝ»ÇÔ©Sùè£�L�ë;v$11‘‘#Gš ,///4 ¹¹¹ØÛÛ›�'55•–-[šö½¼¼HMµL£RPæååõÌšË)KBBBBB¢¡CŽ…¨›þ9îãããÑëõ´hÑ¢.88˜;wî�™)xÉ bªÎž=kÖîîÝ»¤¤¤Ð¨Q#SYãÆ�-Úœ;wÀ¬í? ÉÀ’�����(G${{ªW¯ÀŸþiQƒ§§'ÎÎ΄……aooÏÊ•+ÍÚ­\¹™LFŸ>}Le}ûöåÒ¥K;vÌT¦ÕjY»v-¡¡¡øú–ÃŒÊOˆ4D(!!!!!QŽ(íD£;vì ++‹‡Âì½�…Ìþ=zô jÕªôë×�… ¢V« C£Ñ°jÕ*¢££Í† =<<gÚ´ixzzòòË/süøq"""6lõêÕ3µ:t(QQQ¼ùæ›Ì™3ooo¾ýö[._¾Ìž={DíƒÒF2°$$$$$$Ê¥�h`Ô¨Qܸq–‘ûùçŸùù矑Éd\»v�€€V¯^Mƒ X¿~=_ý5r¹œ ðÝwß1lØ0³óM™2¢¢¢ˆŒŒÄÏÏ�É“'3uêT³vjµš½{÷2aÂÆŽKvv6Íš5cÇŽf3ÿ‰H–„„„„„D9âiƒ>Í9ŵk×{µZÍôéÓ™>}ú]sìØ±Œ;ö±í*W®l1œX�b°ž‘ÇÓ½{w<==Q«ÕÔ®]›ˆˆˆ²–%!!!!ñ§¼&•x:$Ö3°nÝ: DÿþýY³f îîîÄÇÇ‹žÒÿðy˜õ#Ä\‚̨ ït†o¶Ùs¦­†³WÁÑz¶‚¯ÞowQ¥rî0¬Ÿc '*@—w`�qÕõ˜­pà'ˆ?7/�^»õ6#pø2ÌÚ1W!SžðNk˜Ñ æÂW;aï%¸prò…ú-aj°W=þüÏDþaÈžÚ0d‚<ìßGc?eM†¼m ¿†l�Uupü5l£éÖaøc܉�¼Lp €FïÀK3¬èÏ�åM!-:̓�Ol£ ï0d΂|c_)Àáp6êJíy-�S‡�çv›HÒÿƒöß Ð?YYȪVEÑ¿ÊILm YYh¿Yˆþ—Mnß{;d ¢Zô òZµD×”}øɳV�s}f6ª_ÜÞé�÷Œáä]¿Ã•ÀWK<Öé•ÖìX$º¦„Ã×9>k?‰1·ÈÏÌÃ%À�úï4#tFg´¹ùûr?­?Cæ­töJ|ZV¥Õ´NTm_St=±‡sù~V:gbòÈÎÔã äÕwœ=CøRÌË3ðß™élY“IÒÞ~ z¾åĨéîØÙ—#DfÜÄ>§Di"XOIBBÇgĈ,^¼ØTÞ¦MQ¯³n šýÛÚÏÀÝâï@b‘t!ÎB·pè 3ß…{i0qt¾ '�Zlãaï:˜;:ô‡‰kÀÙîÄCJÃòÈf¸t j7•=ÄŸY„9ëþ„AË¡KXó¸;B|$¦ õ7Rà¿à_­`Rx:Ááxøb«`�íþØ¢r×Aæ °ë.k@æºxÐé'C6ØEC�9�îdZƒGÈ-3?që`ë ¨ßz®{wÁxÊ,á¡àÐ4ÐfwløÅœ³Ò�}p[rc_éŠéRÔ·ÌËä¶yŠÐý¼‘ü£�¿ÖÕwÿAææ†áê5 ÷îšÚ23ÉëÕCÒ=”ã?DÞ¨†ìl Ç�C®FtMéëvpgÐ \û¿ŒÿšÏQ¸»� mb2*ojĬ´8îá¦hRæ®ÂåµN¢kº´î4»mä…þ� [ó&vî<ˆO!+ñ¡©Íî¡¿rùçs´šÞ‰ªÉMÍáÄÜüúòrúùß–UEÕ´u]“%Ó­¿s×xáâ.çf¼–û‰:S›O&sdW~éNÃ`5gb4,šžN|\>Q¿UUϳ¢EŽBä&­4`UêHÖS²téR²³³™8q¢Í®‘� ÿ�=añèÂò6 ÍÛ}¶êUƒ�á 7Þ;5}¡Íǰ|—p¼h$'À‚áÐkŒ-4,iT̰üx ÈŒ?È‹ÆÀåXE˜“�Ã×Àˆö°ø­Âò6µ ÿ¬7炃º°ì¥:àbc×ÑxóöÏ�.2‡ƒýp.ÒOªbýäü�ù¾êE�ׂŒÎ�÷Ø›/’ú\N§c4ìٔʹ(OŽ-~É…BÆÜOÒ8º'‡»X.ïRúH¬Š€dÒ>%ÄËË‹ .„J¥ÂÇLJ‘#Gš¦·>/KwB¶&ö+¹MB2œø[2”y[7€ªÀ¦£¢H)dûRÐdCÿÇ–²Ò»‰—†ì<˜VrG;s㪀¦ÆïõÛi"‹Ò,²Áá p¹‡ÈbŒœY ùÙúšty°}�_Ë„‚¢’³Tðä9=I_Œ/›JÒ­^ÙÙ(?ü°d%ÙÙèV¯EÑ»·¹qe#,ÝŒ!;¯‰ï>ÕqyWn‘} —7» wvUÓù¥'ÈÏΧÅÄv%7’É�+å¨\ìÌŠUN*¡N%n‚�K3ÉÉ6ðþD×Ûœ:"xÛu77¢Ú÷öwÿ’mqLY G�¥¨Ûó,½#ñlHÖS’��@VV `èС:tˆéÓ§³víZºwï.Ê5ž/W¸p‚F‚ª;øô‡‘ á¡ñþ?]xmb%Œ¡qÍÂzÑ8w\½àÆø ^QÁ>ðÍHÈǰ|Zþ ^Np!‚>ÕðùF®b¯Åž‹ÂkC‘Eå™—0ä—É*Hñ�Ì‘ ·ÒO-ò@Y ^,õkâjºu¼ ù,‚¯T°Ðv�M1MG>m.´ý“Qc+òŒ}¥½ÉApWI>�n¥¯´ñpÏî©á~mx†Ç¼ÉÏ€þèàé‰þ¯¿Ð´mOn%rëÔ#ÿãO1  §Ï@v6²Àšäü)¹5j‘[ÙMÇ.èþ·û1Wxz²žDá冿Â5® 䢪û¼LâÈÙèf•x܃å[p¿O‰mž•„ƒ×qðr åB?-b¡*œï}f±wäfò FŒÒNIЇ/raåI®ïø‹üì<2ÒÙ7j vîö4Öò1Wy:NÔàî%çÊ…|úÝ¡±ê/ùÜ"bd Y…8Ðü<á3­.öÐ¥R †ŸËUÓ³b°Ñ&QºHC„O‰^¯'77—Ù³g3nÜ8BCCQ*•Œ9’}ûöÑ©“õa‚ñß�»“yÙÀ0°£yYB2då€Ùñ„Ô…ØË0i9œ¿‡æCJ†ÐÖÓÅò:ž.…õ¢‘œ¹Yðåx7ê†ÃK'Áµóðõ!‘/øx@V ø"^…�š{&ýçàP Ž‘³·á«]ðZ3hTEdQú0dÁÃàÊÐÆBö$О÷"ý¤¿ ©E,À!¤9±¹?išóñÔ8´ÌòÿÐéH_ù;êú5qlÝD4-d&¤“Ÿ•ÏŽ?Ñß�ª$Å&pxÒ.RÎߣߡhûU7 z¿õ\mr>:Wqåµÿ Áã…J¢jº— %'ËÀ'’áFã;.Äæ1R—Ïç³ö�/µ�©'�hxå�Ÿ¿“GcýAŠÎìœÛÖg±m½¹ûð�m'í€�RAl�“Øi$�d`=%^^^ÄÇÇóÊ+æ1 aaÂ8Õ©S§J4°¾þš×yü5ôÈ̓ÙC`œñá3´>(0rì;ýøsˆ>R§×C^.¼7ú}Ré% IDAT †% BA¡¼X§öA3ñãO)ɹù0»/Œ&-J9Œüö]‚NõÌ�¹ž =AuOXút#.O†Aä‚ãlp0ö“*PBÖHÈÛ' 2op?è.AÎHo n‡AQM\MÚ\h?Z5U ¹Rðb݈†jmaÛ¨?jtïÚ�ÄØWγÁɨK 2%dŒÍ>°ëÎÅrî¨;€¢:dŒÍ°ï-¢$=俢œ> åˆáÈ[¶¥íÇŸ¢;xPhàèˆêÇuÈŒ‹ÙÊ[·&¯EÚÈù¢Xèõr5Tž=ÏqpmŒL©àîÈÙdí;ŽS'soPæÎ£h“©üÉÛÖÎøÜô´¹ZÚÌîJ³q/à€L©`ßÈ߸}…jk±oÔo\\}Š—æ†áÿRu4r9ûm ¿tYNß]CD�ÁÒëA“kà£Ùî¼3N& µC¡„ˆ‘©ü�K»îÔVòÕ'ixû)hÐ\ÍÙ?óˆœð…äró/Î�è1Ðü©øÂI ¯ßÅ–ˆ±´�µsJ”.’Iû” �¥†b± û2,/cÁ+ÅB`ÂŒû§â¡’ÑÉ‘jeÔ)õaá9DÃÕ¸¢y‹bÁ²-�Pñ§D¾àãñ2~ï½R,ø?Ìë{ê¦yù�è jìýD˜q(:rc?©Šõ“ÚØOº"ý$S€²9¨Z ·ý ¿9³ÄÕä`ÔXLS QÓÝX8þ5¤_‡6Ó!÷�°iŒnPmްoùɽ ¯ìŠé²3êÒ>â3eÿ/á5ßr]´çÂSˆƒ“w67�� Þpöx ºå­[›Œ+™Z�ü¥—0œ±\¸öyPx 7»Ó+¡fåÎa‚a“{ê’Å1éË~C¦Váö®˜3] ±÷nžê¯¼`V^#Lx‚L:y‡{'nsö¿Çxiî+Ú¿Ðj„½@¯ÍoãäçÂ�ñ[EÕäî%üœ½ôй÷õ¥0aÿÂÉ>ÈZ… ?rCNŽ©�!7ÝÁCȃƒEÕäúº0¤œ¹ãˆYyÖvaß¡•yz†ôÕÛ@«Ãý=ñƒÛ ¨óºpÍë;þ6+¿¶ý/|[Uõ†à ¼ûç-³6z­Ž¤ ¦z±xùuÁ«vhGŽYù�íÂ~“Væ‘íÞ~Jê4Tcg/cydŽÎ2ÞxÏYTMÏŽÌF›Di"Å`=?ýô,\¸�ÄÄDªT©Âøñã™1ÃJFìg Ks!#{ø*ái,¤.ÄÆCøJ!©hA>¬¹ïÁË“áÍ™0²'$=á×€!]E‘RHó.ÚV„ ¢ê…Àß±Â~ë^…ù°îÝ€¿Œ–à�+Âë¡_„c|k âýøti=›@øo‚ñTä¾z5ò[%e@Çùp7–½+¼Þ-2 šTó{^ÝÔ=!+0¹g…ƒº—�K{²§‚º(ŒI¸´ç!gÈ<ÁáS!ÄTÕî �š ‚܆C�^…ù°¼êš—~]xu¯�˜Žÿ¬Øu»žÂŒ@ E‚ÜÃÁ®¨Û@Þ!ÈúìûqWc�{öbPwû^¢JRth�.ì´3g�Á€¼ysôgΠ�9 y·0äÆ|XªÏ#ÈëÕ›ü7 øp,ÈdèGÁýd”+–‹ªÉ©K+œ{¶å~øÀ`À!¤¹±I ÿç^íÌòa…WÖˆ›cíÅ.tèéÀ7á0 qˆš¸Ø<†? c/š·†sWÌÏ ’¯ÿêJ2Óõìø)›m벘»¦Þ~åã'Q§“ƒV\ÿ‡N'ùSJ™¡x0‘„èœéá_“½~…)éXx¹S㕸…½®£)çÐ .u‹kظ…½QåíÓ��Un[˜W@tø^N¯?ÁÝ”ÛØ{Õ Ù+­  ÂL›ã*ÿVÑîáüÖSܹz 3+3ÜÚxÒnrW=ç{Ÿ=”ò&+ªÔ.?Oòð›ü±þ.7RŠp÷2#ø{B±°�®+ËÂoòëwwI½Rˆ­½’Ö�­xóý%Øý(r���¥]»vUþU¡ø^aµ³¶òÎþ,:ÇÝÎý ¢[P1ÂÀ2b`ƒjXF¢:–±¨–�e,ªc`‹5�Z@ÅTÇÀ2Õ1°ŒEu ,cRUËÃÀ²9¸³62XÇãÈ –1 ¨@  Cd5ÁgÄ'a` �@`B¨‹”P(oʵˆÁ2:ÂÀ�À„Pk ‘9ѨÌÛÜa` �@`Bhв{œ4EÂÀ26ÂÀ�À„Pk(dN ª,£# ,�@ L�F ™=X2oOp„�%� ¡)R¢‘9Èänt„�%�IaˆWÛˆ!Bc# ,�@ L ¼*Gx°Œ�0°�@ 0%4Èž¦A$5>ÂÀ2"í�ÄÂUÓyE�¦›iºŒN¦w%Ð|b‚}ô¨裸izÇ ‘ãùG-A�¦œ~ÔôXhñÞ£–P1�Z@)i$Ë »“"3i‘{›£" ,�@ L  6À6FEX�@ ˜E i‘{›£" ,�@ L áÁz"–@ ¦„ù "a`a` �@`Ji¹·)0*ÂÀ�ÀÔ§Ça` �@`Jj¹·)0*ÂÀ�ÀÔ¬Ça` �@`Jˆ¬'a` �@`JˆY„OÂÀ�À”P#¿ÇIî¼Z‚û" ,�@ L 5òDÂÀ2:ÂÀ�À”™ÜŸ„�eŠü1 â¿«¼þµh¨ÝQú;õ(ì›)ÿ€Âê÷‚^ŸBͲJõ9|··òúèÏ cS8�kvñ p2 Š i5Ôs—UŽÄÒQy�~š ;À¯Ãñ�p9roAMOð^ {'Y%�ú¾;Ty}ôLèè wÁº(8Ÿwò¡¦-tm áƒÁ¯®¬’õðÝÏ÷Ðô+tl£[¦ÑÀS/Â�ÃðöHX2[^Mì§ïqüž‹÷Ž•·sj/�’UÒÕQáÜün{¥õ>Ñ«±íè €¦ �Œ%?‘õío¨Î]Ean†U‹x~1Û.~²i:2êk.}w ÒúžÑa8wlÈÏÊ×*mãÐÔ“¾ÿ~$›&ŠF�æÇÎ,A£ÍBP¯Î!Ýrü@9”ÏɧØ5j3§¾;Viý°èñÔêX�FÃñŇˆ[þ·’nbílCÃÁ-œ×«š6²jz`D�û�0°L‘ÀYÐ6¤\¡6ƒ¹ xúKE‰°¾Ôjƒ7Aa.ü= ~è£�ƒ­«l’f½ !Oë)"8l,Á¿‰T¶÷ì9í‚£-Dž”M‚>/΂~ôÓü`°´�Fþ�w~ž �àÿÛàä I'`ã,8¹>:–Ö²Išõ „ô*§HÁ‹´ý¤µ{oå‹þк.8ÚÀÅt˜÷;΃Ø0hRK6IÌš!åî½ �kðo­¿Î²µpá²ô·ÂPïˆm? |Ë?�"´ç¹›i¹¹ <³O·­™ü7C÷YãpyAOÓ¥à)(m¬°ño!qyȸ{0·é¯aÛÅ�ª€Ü£‰¨sóeÕÔlÖ`|B‚ô4 þ3 œü}ÉÐ*Ofô9NLú�ÚÏu�UÊY@¿½¢`ÀÐ;õLÐ,ÅDP.M.h–�úàgP‘MRÀ¬^ø…è*ÒÀ¶àï0·±ÀÿO�àøâCtœÙ“ºA É<•ÆÁ÷wqýðU^Š�ÒÜL6M…ð8=öË©é#-e¹ 9éZzÇû{–tãyáw°´—Ê<ÚÃ×�!æSè±@6I>žÒR–ÈxH¿¡ÃJ%…¾ ³†Kú3ü/›}<|¤¥, ‘p;^Ðö“•-|uY×SÕ,ÜêÂ`ˆþº¿"›$wi)Kd"¤ß�ÐàÒ~šõ¬n›Î� sCh8~ˆ‚pùî;øÔ—MÑ�ž ¡õ ¨¤+ðþÇðýBòº|:ô¨á#-e¹ yéÐ>TW˜ÂLòfK/,}¼tÊîF¥(ý&ΡcQh5e,ù‰Û;¢ñ9ôM‰G À¾·üí+8©nDþK~úmš‡>[¢É¹cC½u/,ß ðû”¼¢>@¹c§‰ÒAQæØiÖ‚"̾Юh‚ ¨¶T‡|'º£�3Ž>Î:eW#/’›žC@hO w’³9¶èí§t¥S˜d´zuõÆÆÍŽßŸ_Ï©5Gi9ο¢Í‘hô‰@ù¨ªHÜ*P(Áo¬ô¿ºÎýMŸ/5®ëA½žpæƒKZµ ” Û·´Ì`ÞŽª²WÛO½´ý¤TV< è­uÛd^5¸¤Ukû©û½Û9Ù\J «~”ºfìKúu¯O‡¾ÝáÙ¾úu'Q{üš�-W¡}œ×ÿ±>kÕ6P*qûLIYÆ¢�Ø=ÕVǸ2&I«"Q(÷4œ nçruS n=šKFš¡Q¯” ,{ìÌÝv À °0¸¤„UGP(øŽ•ÈËzÒ¸mÁ•ë\JÁºeCRßÿ’=úsÒ¢3g[#ë»? ®© ;‡ä͇qòŶ^åaWŒ¦(GEƒq= ® M6h6KÞ*E™c§œší ^š; I‡¢÷�,P¾kPIùÙyœÝ|’zA ©Q¯&j•ˆdf©; ¨4W¢P@F|ªA5U™"J½Xr-"Ëèˆ!ÂÇ�7HÆ”_™'ÃÜ éÓÚY¿½�³ô¤Ÿ—v‘´!òTºÞ«GÎÁ P�Aå½åÈH†f@Cè0È ’6üy0¶[Åõvo‚öšO]gØ5¸T¶A^>Œ¦[žœ Sç§€‡�5TÈ9íyÞ¼ÜñsmnÁÅOr‘^û Ž-€ä=ðÜa°0œë/{ÃN4y*ïUArYkÿÀ²a¼VÍÄÌю̯·’�•³þwoƒJŠ»±—`DçÊû©M=èÐ^ð‡=Ó¤™†ïm6 ¦!6F ‹2Ý´ùع>znf—.ùùÒ°b×EùȈƒ±Ð¤Üy^õ‚•¤ýc0IyqgÉ�M¤æˆþ(Ê@3G¬ýcî¡;îëЯWÓ(ÌÈ6ˆ¦ì¸ËdÅ&QwD”÷øñ]\ @ƒq2·W„&ˆÅm|UqùuP Í 4›Š@Pö³oAÑÔoLÒ�¸®Ç^£Ùˆ6˜Yè>½ù<»Ôç×àïYj÷!»¬ áีñÄÞ«†Á4U µ�–JHOOgåÊ•0dˆd$+ÊÔæää0wî\5jÄW_}ž}û˜>}:ëׯ§[·näååé´Ÿ;w.“&Mâ…^`×®]„„„0oÞ<Þ~ûm�vùùù±oß>/^̶mÛððð ÿþìß¿¿Ú]gJ˜ÊíQPq«¤ÏÖãtË�‚…�d€•çF<853KƒHZµKú×ïÞíŒÊm?�«¸þNÌî 7.Aب×Òà’Vi¯ ãîÜ^Œµ´¨ IéÔô£VS¹áÁ„3’Õ©‚‘­•¤eë7ðL KÔ¿f•¿ 1ì˜GÖªm8•î³lè…ÒΦâ€ûâ"9BJ §•¶Q« ¹üýAœ:4ÀÑï>±ˆr Ö;eùcwPƒ¢¢í�]R\–¾‚ú‡#aU,@…3mÝìüÇHrÓïr7õ65ê;afmΉ¥Ñ4ÚJv-„‘�z{{—x¡222øæ}/¬­­-—/_ÆÉ©ôÁ=00�úõëÌÏ?ÿÌ+¯¼R²�9sæðÆo0gκwïNAA3gÎdÒ¤I4oÞ€U«V‘��@TTRš�=zкuk¦M›Ftt´,_ÿQ œ\µÀµ…n�ÒÙ- ºSZž}.ò&ñ+&¿Ö타¦ÐÂ×î*Q�û×Aã¨ÛB¿¾Ø¸JK‚Ð]¥3 H~�”H4ÀZxÝ¿=Àí\ixPÎX:šòaÝ/ÐZ4Ñ­õ"üõ“î²O;‚:¤¿ô Ì©”J(ʇ3ëÀ#œ+8~‘ôäßÃŒQ«óUÜ\�M€/Ö-tÓ(ÌÍqx¶;y'ÎR�Rj k4nG²aÌ�e×T”_À•u‡phH�{œT×¶E•qGþÔ ¡ÉÍ: å��67ˆ¦"/c4àlãª0¿�ÄuǨP—•ÏÀ±qµÃµe-,¬ˆ[þ9´y§“ìz¹‡«‘¸TSÉL]¥R©c\Óºµt=½zµtFöŽ;ÈÏÏgôèÑ:mG��F£aëÖ­%e¿üò Íš5+1®ÌÌÌ1b111¤¤¤TM¸ "PÎ1ˆ¤ó[O‘—•Wi>«“«Ž P@ÍÆ®æpñ�ÓÄ}M༾¸µ©mMÕæ1 rß½[š‘íë[ëvò¤”aºU+]�`­Zµpuu%!!A§íSOéŸÓÅë&$$àéé©Wÿ8 ,S&nµ”ãªywD—¦0ü/øk:üò‚äÕª$½*Ǧ‚œ2°úO°·†a• {�¼CËä7U( äKéï­`ï|ˆÚ»¬í¥líåɾç�HB¾�¨_ßc¼½ZvI«€½ «À0±±„†n°d7\΄Â"¨å=›ÃO!ÐÌ@×’ÕÁކȀ{`Wƒ…=4ªàøYÖs[86î¦HÇÑÁ[ |oû¾”h×d­þ ¥½-5‡Uø@g=KKKöìÙôiÓ˜0a999´mÛ–ˆˆºu3ìû* �0°�@ 0%�ëâÅ‹÷ß„ºz¢&L˜À„ îÛÎÝÝ]o8ñI@X�@ ˜�ÀÀÈ�0°�@ 0%“D£‚{# ,�@ L‰Ç ѨàþK Sâa�V¶M�Q–1¹ä=j¥$Ì—ÿ%Çr0’å�Z‚ŸóÖ£– G ÂôúÉTYºÒç5É IDATü�G-A�{þyÔôÐ,Tj‰�@ xœ‰FŸ„�UM~üñGT*[¶lÁËË €ÀÀ@®_¿Î’%KÈÎÎÆÑÑñáw”'?„Œ(Ê/¨7|ÃÀܦ´]æQ81 2þ…9xô‚6Ÿ‚}ƒ‡×PŽãQy|ùa'còÉÍQãáeN¿¡v¼愵�ä =z �­kn“x,Ÿ³'UÀ®¤zxÖ3Ì©–u�þAzL…9Øz9â=´=­Ãbnc‰F­æäÇrmç¿dÅ'Sp+OGê>ëG›ðAX9ÙÊ®))*•]árÌuT9…8zÙÑfh#ú†uÀÂFê‡ý ãˆ]w†ŒóÙäß)Ħ¦% ºzÒ/ÜŸÚ~.²kоNy€Œ¬+h¯ÞN/SdWTLð!ä^ÀP (>ÏGßU°n3¤o$/ Q·Yóa2ÿÆÜ%?G�«—%=‡:32Ì +›R§a�š-K®ñm:Éçò03Wà݆·¿¨GË.òŠ:ß}‰1�Ÿ.^Ðc(¼VÚ~ês�‰ºMaõ¿²JŠºn‡˜$È)/GÚ€�¥ÔF£�/öÁê(8wÌ•àçSƒà¹6²Ê‘HŠ‚]•P倣´ }ÃÀ¢ÌuóïEph9d%�­3ø†�óÀ¦¦D=Å,¹·)0*ÂÀª&fff88è^@P*•(•2ŒºÞŒ‡½=¡fkXV®p#N†Ã­Dè¦õ’ÝJ„½=À¹n‚¢\ˆŸ{ºAÿãÒz2q&^Řž)4mmÉœ5n8¹šq82—åáY\L,`ñÖZü³7—öäÒ¼�öŽJŽDæÉ¦¡Ýß.öª4œ9šC~®ÌwÆ ñ0¥'4l ÿYŽ® ߇ÃåD˜­í§%Ñúëþ _N‚®ÏÉ*)>z.‚Ö^°æUpµƒÈs‰×aëR»~ƒÂİl(äÀ²ýðÂ*øy i-£¨”xøª'Ôn /­;W¸ »Â!-FkûiÛ8°zÏ„ÆApýl®† Q`f·EáÁz"0�3éñb̘1¬X±‚��,X€‹‹ û÷ïgÅŠŒ?^Ïðz .ÿjtݶ’— ·@È»g–€*,%cÊ̺ýöR;§öðGcHüZ/xx-Z"~¼C�JÃÂ-xxI§MÛ@k2®±~É-ng«qpT2>´&oÍràÛOorø/ÃXŒE­*¢Ç–7°ó’ ÷À†ä]¿Í¿KþB•�‹…ƒ/\ž«ã©rlˆ}}ö/çÒÏÇðy¥£lšŽýxŽ"U£¶ôÃÑK:& =¹s=—KâÉÍÎÇÆÑŠ¾³:è¬çݹõ;{0¿áÄþp–þáþ²iÚ  wmYk ØÜìË´O–#ù•¦Ë¦¢"~TÀ$Ï@ pXd#™ƒf€|Ç©2öþ˜A�JÃì-�qó’Ü0­Ⱥ^À–%×¹“]ˆ½£9¿,¹NÌŽ›,=Ô‚æK{¯}o¼×åùëG(TÁ‡[ÀUÛO-!ë:l]w²ÁÞšUÐ?¿-…Œ•UÒ�GAU[^íO�À†pý6,‰„ì\p´�µÿ@PøâùÒuƒšBí¤:Y ¬ã?B‘ Fn‘mÊõ“­özP™×<ç6Dn‚Ö=ÀÓGVIÚn¢ÜO+P*¤¤!A‡rcÐf`e.}ÊJñuÓª\?Y•¹n^Š�š ÔmÓ\ûÜÏ2‹z@4ZFEXÕ$!!�ž={Ò°aC~ÿýw¢¢¢X´hëׯgĈòìÄg X¹Á‘ȹ …¹�²ί€Fã%ÃëÎy(ʃš~úë×lwÎIOs21dŒÎnfÌ I'õj!y¹jîÌaÓŠ[ _CÏð2�ÇtÁÚÍžB~äîÕ, sU$ï<Åéh:¾å¯ìeHÙ�@M_OY5uÓ ;7~ÙÏÍ«w(È-$qçe¢Vœ¢óx_¬Ë^ê"5EEd\¸Å¦7#±s³ÁTSY55‘†Ó�b°¢‘à† kxýŠ48÷YTƤh°à*� ìVãÑ5¼r$§{]`�%»¢�cܨéfÎÂ�$n\U‘Ÿ«&fg6ÛV¤ñÌxwlÌH»’ÏõK*´´aåûWâq” ‹ÃŒnÏÎïÒe×Dÿ1àè‹CàÆUÈÏ…Ã;á÷<^2´*bß�R¼Öù=2c:ƒ›=„üW³ W;OÁŠƒ0¾k©Q5­lO€u1p'ÒïÀûÛ +Þ}JfQÇHž¨-!pó*äÂé�½:�k‡Òk¢™îï¥9 €Ôx™E= ʼnFå\Dš£#†«ÉôéÓ±²²""" )v' 777†ÎÈ‘#éÓ§OÅ+�–åbkê¿,-e±ó†^{aÿ ØV¯´¼q´×zÉTÒ§¥³þ~,�¥èÒ‚,0ó¨þ—¬/o VíõäíA©ô©w¹¤|XH >X*_¬Wu°÷v¡ßމ촜Íõf–”7 éNÀÒ—*]ïnòMbgüŠ«}êj%«&gï¼µ÷V ÚΜzß—”w iÉsK»éµÏîŠTÒ•¯f]{ÞÜ5—5dÕä ,C T¶LùóÀÔ2ÿ§! ÌM*8« €7°”9Ï ÊzƒÛ# ú!ùÛþBðÜFß7÷àÔò¶âó½ÍxoІÖ;^R>8Ä�‰K½HO.`çÚtj7´bÚªØ9šóÛ×i,u�B•š§Ç¹W´ùŸî…™ƒ`x™~z&&ÜÃk¾cØ;A·ç+oó€x»ÀÞwaÐWPoViyH7X:´ôÿ·»CaŒù^ÓþjÚÀ/¯C·F2‹rö†ñ{aõ ˜[¦Ÿº„Àm?yøJŸIÁ»si›KÑ€îfènóØi)K®¼^ï ‰FŸ„�UMNŸ>MË–-KŒ«bÚ·o_R_©�Õn¡�~?²´Aî~Ð~X¹H³ O†�ê&t^÷°_£ÚœKP1¦ç5šøYñÁ2Wjº(‰�ÉgYX·oªY°NÆJ¹™p��=âäçEÀ²—°r±#=æÇÃ~Gu3‡nëFë­“Ÿy—=—¡PÀSå�KHMÈdyÏmxú9óܲnغXs9&��a‡É½™Ï+ëzë´7ú9Ô…j2“n³ÿ‹8–÷ÚÆø=ÏàÕF>£õ¥AîÿAŠjJ@šUx)¤$Wt�0Ã’€äî‡dº Í& nÅçù„rëm‘ ³o€‰²)º˜  r÷³eÒ2oj¸˜“s—oîrçf¬kˆZ-Ý© Tloг‡t-ðëæÀµóù¬�}M^+)¦ö„~0aÔp‘f~wnÂ{\’¤6Ͼ–úõIBŠäîç%¯»ØI³ öÃÍ\X7Rj÷ÑŸú;Lë ZHq[ßÅÀà¯aã–óù&5A r÷ôƒ!ËÀÖEšM¸3L2І¯ƒÚ~Рì™ îÍ¡q/¸þ/lz]b,?ÜÚöei)ËÕ£°°½ŒÂ+@$}"V5ñöö&..Žüü|¬¬J¢¢¢¨_¿þÃïäÄtPZÁS Ôr.Ò°aÔph0lµOhªLýõU™R`«…ÓÃkÑòùôL,­,�¨………`á`�³›Ó†§ñÌH{ºô‘?åÁ½ˆ�¾¥•9½#ÞA© èp h€µ›=û‡KÑ�¨Ý§yIûü¬võYLnJ6}÷NÂÞ[þt¿O�ÆÌJÉëOc¦ÕT?À{7k~¾›#›Ò´OÝ’öņTÝî´TŸù�Ö³ý½h^�$›¦e€ð¥?x_À ˜<�è�48w»ÜúÚzkä¾`L¬€­B�¢¿Ü€áÀH ’‡"}ƒdUôõô«XX)ù(¢ æÒͶE€=5ÝÌùïðóôéŠG}É`iègSb\ãßÏ‘µáÉdgàè"ÓìÔ•ÓÁ æG€¹v›Í ¦Ì}GBûrý±Júh˜€íé[¥8ªˆ�ÒXªops€ák`T´ª-Í"œÜæ—®Û³ ¤dÃ[e6°þ˜fV0.Ì´ýT?@6\?:Œ„&}àµÍ°q|«ef ÝÿÎü yÙ2 zH„Çé±GÄ`U“É“'“ššJ¿~ýøõ×_ùûï¿ùì³Ïxç�wðõõeÀ€¿“[§¡fËRãªçö¥õö�¤„7ãô׿ö�õã ‚¤Ó*µ´,1®ŠiÑÞJ[_ Û¾ªJöéë8µ¬]b\ãÒ¾^I}1ùY9ì꽈»—2éóç»8µ¬mM7Nßij¥s‰qUL�ön%õ•aamŽG '2“Ê›8Ç% !úÆQ3íg’—«ô-³€—Õ)c•¼œZRj\Ó¾Lý½�ÿtùt. ZÚ”WÅ4i/ C^9�Gí†ÖXÛ*ÑT´{m™¬“=®žï–¥ÆU1�µýt¥\?¨`÷÷ФøT£)§Ó emý@õöÚg‡ÄëRÞ+µ:ÔÓ_¿}=¸–-ÅeÉÆ�ÓP«e©qULm?¥iûÉÞ Æþ¦ÁÿÅÁ‡7 _¸´¾�á§vT‰"-£" ¬j2pà@þøã”J%¯½öAAA,^¼˜#F°oß>ÌÍexÆ·ó– §¢rWŸtí-ή¾4³È+®n�‚;¥mî^†´}PGÞ¼7^Þœ‰S¡Ê×½«œˆ’Ò0Ô®o|g¨½· YqÉåëw7¢.Hõõ¥H¢ã*)“>»&àܺŽÁ49{;p-.“Â|ݫ٥(ÉØsª_y�¼Û*®Ï�5H1Xç�"”%¾LýÓÀ—å–eÚú§´ÿË«öâ€òwÙbSî^Þàß�†;ߣMõ©åmÅ…¸TùºsÚ¢¤ß˜G}KÌÌtìÄù9d¤”öªF£áŸˆ›ÔnhE gÞp!Tåúé”¶Ÿ<ÊõSÔ6¸•!{j†²x;C\2”ûéuQú¬ï,Åiü“¤¿~ôEp¶{9'Î:yCJ–ë§KÚ~r*×Ov®àÙR ~?´ r ð=âU9Obˆðèß¿?ýû÷7ÜšN†¿ƒ!²4™ VÎÚ¬ppôO­—¬e8ìò‡¿Aó¥‰F­Ü¡™¼¹·_�ìÈ;Á©¼Ù/…W';âè,Å`-Ï¢‘¯]HÃYéEþKz'ãÙxéæ³{N®JœÝÍèÐ]¾ä�-&÷boðrþì·”“{aålGzL'·SÓׯ¾æªØÝo Yǯâ¿ðEÔª"nD_,Ù†µ»>òÅ;uŸìǪà¾î÷;Ý'ûaëlÅå˜4v…ÁÃ×™fê‘›�Ïêg"h3´îÍkbf¡äÆ™lþ^GAn!}Ã:ÜGÕàe¤`öIÀ0 Rþóo$ÅÉЪ7¤ˆ'ù™Œ4DZŸöog¤¬p¤AÌHþ·×��ÆHw‰ýÀ'HÞ/y‡À^œ\‹÷ƒÏ0­ßi^˜\‹Îæüs‡µáÉxûÚ0@2~GÏö"zûM¦8ÃÈ°ÚØÖ0ã�onp&ö.³6ʽýüd †÷úÁs“¡†³_õ}8xûBÇr^óˆU`m½†Ë«£ “{AðWÐïKiÐÙb.I‰F}=¥x+s3ÚG‚¥9ôo!dkc`ßY˜#ß(¸D÷ɰ:Vöƒn“¥ íWb¤D£¾ÐLÛOÿ¬’B(\K3 ÿý} æ�—!ÒË?"Ñè�B£©ÐÑ-�‘£G�JAð}c«ä�²þý²b%ÃÉÚj? ­fëfhÏ<*ÅleDi_•TåWåœÜаZßãÀŽV|“S±ùäåjpó4§ûÓ¶¼3Û 'Wi¬àð_¹Œé•R²ŽBAÉPŠkVï½ÿÐÜ':sÛîMòŽN~ü'±—)Ê-ÀÆÓ‘:O·¤ÍìAX»Ús')ƒŸ}féè(K£Q�\ýê}÷ãGÕ§o'î¸Ì¾��s5ö¹…Ôð´¥ùÓõé7Û{W UEl¿ŸK‡Rɺ|u¡‡Z¶4êY›^ïµÃ£YÕbçË«¬) )d<É_ä tÞ@JáP�©Þ«r:Uû1yRx},R*†bÚl­Ê,`4p)ªÉó5xýZó—& ÊŠbvÜdÃÇ)œ‰•²²»xZÐé隌™í…£kéðÓÅ„¾žq•¸ý·),Ðи­-#>¨M§�Uó@öØS�ø±Ã;`ãÇp6VJÓàì OèÙRf÷bÒ®ÀˆÐçUøÏ·Uß¾MbÕ‡6wœ‚�wCìe)C»g xº%Ì~\µéÁT…R&÷ Gàb†”«…'¼¯V]—"¯ŠçUâøëc¸+OžÐüiè?[òXD­€¿BæE)Œ¢N;è>|ƒï½íb´Aî±±±´kWÅëy)¹WôŒ'y·MÖQØgÝ‚Š–x ËT×À2Õ1°ŒEu ,cQËXTßÀ2Õ1°ŒEµ ,#Q˘TÙÀ2Æ2°jÊ|¯¸) ,c#†�@ 0%Š“ƒÊ½M�QAî�@ 2#þ¨%TÈ÷¼ð¨%”�t4‹Ð…Þ‰ù=Nƒet„�%�)!�>ˆD£�@ ˜-÷áÀ� 8ggg,--iÔ¨ááá:mvïÞMçÎ�±³³ÃÍÍ�Ñ£GsãÆ ½mŽ··7ÖÖÖ4oÞœ¥K—>@g<¾K SBMi–\Ë}‚æ×¯_O�=prrâûï¿gß¾}„††beeUÒ&22’àééɶmÛX´h»wï&((•J¥³½��,XÀ„ صkC† aâĉ̟?ÿ!;çñA  �@`J9+99™7ÞxƒñãÇëx™uÚýç?ÿ¡Y³flÞ¼¥RòÏ4hЀÀÀ@V¯^ÍøñãHHH`õêÕÌ›7�)S¦Ð½{w222˜3gãÇ�ÇÉÉIæ/hz–@ ¦„‘=Xß|ó 999LŸ>½Ò6ÉÉÉ9r„W_}µÄ¸èܹ3Mš4á—_~))Ûºu+�†Ñ£GëlcôèÑäææ²cÇŽ*uÃãŽ0°�@ 0%ÔZ*aÿþý¸¸¸pêÔ)Ú´iƒ……¼õÖ[ܾ}€“'Oàçç§·~«V­Jê‹Ûº»»ãîî®×$×ÿbˆP S¢Øƒ%÷6+!99™»wï2lØ0ÂÃÃ騱#±±±Ì˜1ƒ“'Oò÷ß“‘‘€³³³ÞúÎÎÎ%õ¶³³³ÃÒÒR§í“Œ0°�@ 0%ŒüªµZM^^óçÏçÝwß S§N˜››óÖ[o±wï^™Åüo ,�@ L‰‡ r¿½AZÊR”]isÎ�;G¿~ýtÊû÷ïÀ±cÇJ†÷233õÖÏÌÌÄÕÕUg{'NœÐkw÷î]T*...Uþ*�3"K S¢8Ñèƒ.6/ƒû6ÝÅù‹JwצM4]«®ø…BAË–-ˆ‹‹Ó[?>>¾¤¤X«7npýúu½v€NÛ'a` �@ð?ÌóÏ?@DD„NùöíÛ víÚtìØ‘uëÖ¡V—Ž7FGGsæÌž{î¹’²Áƒ£P(X»v­ÎöÖ¬Yƒ­­m‰gìIG  �@`JùU9½{÷fРAÌœ9�FSä>sæL‚ƒƒKòa}ôÑGôéÓ‡_|‘·Þz‹´´4f̘A«V­tR2´hÑ‚±cdž™™:t`×®]¬\¹’¹sçR³fM™¿œi" ,�@ þÇùé§Ÿgñ⍤¤àååŤI“ +ióÔSO±}ûvfÍšÅ3Ï<ƒ­­-ÁÁÁ|òÉ'XXXèlïË/¿ÄËË‹%K–�ššJƒ X¼x1o¿ý¶±¿Ú#CX&JjÌ¢Bw“u�Fƒ‡ºÌéCí.õõÚ^Þ}ŽC¡’—Š…­ 5£ëǰu³“YÕ àsàR¦ð@ûríö§€óH�NçeÖ¢åd , …¸(ÐhÀ×Þžmº”¶¹{Ö| 1{àÂ)ÈËÏzÐoŒû¬¬e•£bah6Ç¢T �Vþ–LšSƒv]¬tÚ}ö^6ý‘Gò¥Bòr48¹*éÒÛš‰ÿ­Aoyš1qº¢ŽIGοÌ™]ÚU¾Nn´~Î]‚O¦Ã”1²J@s‚;¡_Pu 4,ü[a?çÿ°ì¢{NeöŽjŒÞú–ý»ã¼}µ¬šbŽAè'+�Rþm`Î4èÒA¿íÝøhüø+\¾ÖVà×V} �}dÔ”¡ßBÔ)­¦¦0g tñ-m“” >#*ßF¿±@>My1'É]F^T�k_\æ¼�M—6:íÔyùdÍý†ÛvPx%…µVþ¾8‡¾ŽíStêCp>&“ŸCOq6*4àãïÄ s|iÜE7¨ºP¥æ×9ÿrðûËd]Ë£¦§5�‡×eð¬æXZ›Éªé�x/{¶¶¶fþüù÷}•MïÞ½éÝ»÷}wgnnNXX˜Ž�ö¿†ˆÁ2AR_eS÷• Üô27¾ ø9h)Ñ—uÚ^�¼ÈÖk°ótà™m¯òÔ¢A\Þ}ž-A«(RÉù �^Òþ½XŒt«�dp•e’1Öh(dÔQ†“‡aLwéïO6ÁG¥»Ï›A]Ú.ålþ Zv„ÿ~_ï�ÁcáûÏab°¬’â«Þ= €Å›\øb£3 Œ ºÁñè|�¶¹9žcË’Í.¬‹tc≉Ìç¥ÎiÜÌ”oŽöá8è>\ú{ÓbØø…ÔMA#!úxåë….„œ\éoCÁ‚Ãqdv@ÍMK¨¹q1h 3èUTÑåÏ)0kXçèŸu– CeÕtø8t—ÂQØ´6.×öÕK«ÛöÎ]èñ|»&ŽƒÝ?Jí{B^¾þ¶XS"tŸ¤Õ4 6†j5M…èS¥íj»@ôRýeºÔÅ<×M>My‡Orµ»dq×Úô ž?�†ä 7É�Ö ‚Nó!™ ¾Åad0^{¾Æãû9hróHî3ž¼Ã'+Úüqáp&s»G0aSoo @£�ùAû9­›wiÙËÿñùYúMjÌŒ=ÝèóNCv.<Dz—þ‘MÏCaäD£à M¡_bæáBíߣÐвéÑ�¤FÏ�>õsêXHÞ«ÛwRcÌ`\Bß(Yß&° Ü{qû‡¬ýå™Q¶9ô5<¬ù¿ßº`n)] ›÷pej£�l˜Oè�œ‹Î ö—kŒ\Ö† ·д«+J3ë§Äqr÷uZöö�EÓcä{™4ÄõßI%6�AÐT"¬ø¦]Z§¼ðÜ%®;µåºe3ÉË5ós4rŽÅ…ºÆU1%}¥•'Y�¼á­àì V À lß#«$ISEÇOk›œ¼Xùº«µ³îÇ �WS墤2ÕÉs(­,©9q8·ÖlãnÄÔ9¹&§q#dÊš8¾þœþ6�¢µŽqULqÙ•x)Ñf¡J­S^¾ÝÕøÊr ���QC„&ˆs w®Ò�µÒ¨Õ¤DIe¹9äi?­�õoÆÖÎ6%õòÐ8Z®L]¦,KÆ}UŸ’§ª,j5œˆ’þξÇû®ÎÄI�ïAÏA#ùÜ4�ZXpì�îM_­ÖpïÿôŠó,ÚÙJñZ½»APWøu5Ô­ sÉ&‰ C ! ¦,‡ŒlHË‚ Kà‚Ö./N³ã0¤dÂX¹½W€ã„—Q%œçÆ”Ï(ʸIaZ&7&, àB²VTéÅ'-dÙ_mÂõ£‰Ô9´–ÚÛ—bÕ¶ɽߔ5Ƚ$'Übý”8ngä“�–Ç÷ŽsãÂ] ôºé7 �ìY?%ž3ÓQåñï_7øqZ‘MS÷ÑÞ ]Ð’}+/ò¶ÛïL¨õ—ã²8µ Î^’§ßÜBÉÔˆ@œ¼¬™Ó-’qv[ùü™C¿×;'Kœ¼d V{PöU9-r{Ä÷E š(¦u§íä@nžÍÀÒÁ‡º5Ùóæ/XÚ[âÞ^2\[J7 ô¸T¼û7ÑY?=>—–r=oc€$À¨ | ýû½[jÔ´ÿoïÞê¬=Žß ›‹°ñ†Š#Å(jESddŽš· ‹ž´‹×éÄLdÖLƒccŽ�ZyR”æIOÓè©)³2¤‹™šIyíæ%˜ÒÔÔcÞSÍT@¹¼ç�-;PÓÅÞ;ü}žç}Ôåz×»öæöc½ë] †Ž„][ÝOFÅÀÄáÐ(:ž¶>WáN¸ÿ&÷½œ—CËKê¥Ki£]Ü72œ�[Ë sY´Ž dÜðC4 ·¸2±– >§hÖ"€¨KسÃì"8£Ó`ä}°u'¸Â ¦5 á� ñä‡nÃV8|Úö©yþ¸iîãË÷ ¡–'ÕÎWøè™JÅÖX®0b.áððDZÂÃp&úæsjôC02 ¶nW¸{Djøc‰îýnIèàþ³¶9j¶]÷¨Òy÷iŒ¼ ¶€«Ä´„áϺ'®'¶­Yÿ!X´ îèÍ›íK•f£ï£éÈ¡œØº ‡+ gLû†OÄÞˆàÄŽœØ¼€�ë:V;×r8þU<Ç–|V£Ý qûèxRF¶eßÖ£„¸iÓˆ—‡çHlâ�¿LµŠ gÂg=ø~o G–Ñ2.ŒâC'x푯hß­ŽÄêMõ1â¤,¯SÀòcΚwtÿ&x¤à0[²×seZ'ƒÝ¶ðèÆD])ß¼þ%‰�þÚsKeïª]ÚRĵúu=ôʉ{>À^`îõ±‚ë<£Þ9�wòø¾ø0¤AÐ)}ڻˮ°Ýá*ª~ýr:-~ÙÑ=á÷»‚rgsOZAÁg¾o[¸«œ=;Êév‹ù PN§{>@Áw�½Òî�à“™oÌîÑ®Sí݃ÿ#†ÀÀ[!îÆ»…åtØÑý9UQ°—Òì÷ Mˆ|æÏ©’Wçàì|�ñ>9�Ðñäï,…�½Ò†@U—Z·r/<ºb””@èÉA�ÒRXö)$™ïÎ@è{²O {9¤ÝúãÇïT¯~åõs{ðT–ÓIpG÷Reû8šý!ipœì”3ÖýKLéêõ„$]å9Ï./§ô‹�žÿ7)Ðé º£{”ÿ`A1«³ è‘vÎàš5iJ“ÖîÞÛÏl%8<�î¿‹5Þ§Ÿ¬¬@ËmØÇ¶ùiÕéRC�ü{ýw|‘±‚¦ñ‘tžX}Ý_OIa^Ÿ—yÿî,F$Q¼ÿ(ŸŽÉ!òªVtL=}…õ ±ø÷êí!Àf`&p9îÕÜOµ÷¤U“õ—àþ ¿¸ #¶m€åóÝ«·‡ÂÖõ0+ÚÄÃC¬wp?¤õ€¢ï`ÂKî媖pwتívâyغ¡Œ¥óK¸ªS!¡›×—ñBÆ.‹w’>1ÂSï›u'xöñè}G(m~éþ2Üòu/e¡q3¿{4ÜHÀ=25©{õöÐX¿2^€øËÜO V‰¿Ü}œjÇÉ,âb ['c] lÃŽÏÿg§¬ÐÊ×oæhÆLã/Ç5q¤§Þ‰�×rlÚ,BîèC@›hì““Ü‹ÿþA½n$¤o/c}Ú°æ/q¯Þë¿�Œ¿C|L]½næ8èq7Üz/ŒáýÛÿ¸ç¸½9ÓX—ذæê^½=4Öo‡Œ¹Sk?ç¥à-!ÙðǬÊñ Û869Á�®ÀÌñõ[9”1 g|šO|ÈS/䯫 ¹!�ÿå¿©œ;'VA[ü·-4‰ ¡y›F”.cõ›|þÆn†¿Öɸ|ª>Â�–×)`ù!GP;s¶’—ù1å%eDÄ6¥cj"�Æt'0´ú£Ñ—v¿Œ;ÿ'Ÿ�_Ê‚~¯ØÈÉå}ÛÓ5óœ&·|p+�€ã@4pð îÀuªÏ�ÇNù·Tí?u'0ÕL—ƒà³˜�éÞþæ’X÷¼¬Ô1Õ×½úv#ìÙîþ øx-{‰<ø o¤KÎ ø8§”f¡´ÄæÒØ@îLmÄc" ýqôªET�Â-fNú�}{Ü“#¢. à¦ÛBxplD�¹Z"È 9»Ÿ,)…ØKÝ#Uc¨ÿ'ÏÄ âxÎÇË|»ä8±Ñ„¦ÞEø˜±N阣u ìâRŽŒÉ¤òÀA °Ýe„?•NبßíS�rV@æÌSÞ«�0æáG©ªtN„ÿÍv/8z÷ðËrß‚ þn9k!3JN@l+HM†1ƒ!´–A¾Ï6ÀæÝ0á^s}8�ȱœÏ8”9»¤”ÀØKˆHýšŽIÅqÊÇβ,.Yò<Ÿ˜ÉáçQ4aVpÁ¿Š§õ[™„0Žƒ¬ÏÙÇâÌ-œ(© 2¶]Scé;&ž Ðê_OÇ�–óÎø�í.&$<�_vnÎØÜn´ëâ·Á=_Êôr‚ X^gÙõ¹jŸ�ŸŸObb"Cò¦åµfFJL˜f òuj÷åe¾îA [®®çÕ$ÏCÛ­æH5¥uÛzÚsòí-ŒóujúÆ×¨©]Ï3ì�äCã™xöJ^²#ÿã—‘——ǵמa3ÏóPõ³Â½x³Ù¶ÝKê$ÖK¿¥vzŠPDDDÄ0,ðDDDD SÀ1LKDDDÄ0¬Ÿ¡ÍYæ¶iÐ>Èòu~²ùº?Yó}݃Ÿ‡#Yøº ">§€õ3¤€uŽ–(`� ¬s§€unŽd-ñu~æ´ÛsC …FEDDüJ9PVmŠ7)`‰ˆˆøíöÜ(`‰ˆˆø•JÜûå˜nS¼IË JKK¸uSg:Ðá‚ÛËûþ~“Ÿ|Áíü&ïзQ/*Ìô+½ò{¦UäiëHþ{FÚ1ÉÌ+ƒïËÒÉ?2ÍH[ïço¤ÓòÉ3ÒÎ÷¥éägæ½¢‰™fLš›oæ‡zú÷•L3Ô–ÛXƒm]kÓ&`%%%õx•JÌ",oSÀò‚íÛ·0lX- Ÿ'÷~Ur6zŸÎ�Þ§s§÷êÜ4ô÷iÇŽtéÒ¥žZWÀj°¼ 99™×_�ØØXBCC}Ý9O¥¥¥lß¾�ää ¿‹P7Ý"l°¼ 22’¡C‡úº""bÀ�7ÞXÏWÐ$÷†@KDDįh™††@KDDįh«!PÀñ+˜q2=§KÎF[åˆø�ÜÜ\n½õV"##q:�4k֌믿ž?þñ�¾îš±±±¤¦¦ž×¹;vìÀáp0{ölOÙO<�Ãq~ß¾rssq8¬\¹ÒS¶xñbž|òÉójOÄ<›Ÿ$4uhËÛ°D|ìý÷ß§W¯^8^|ñEV®\É«¯¾JïÞ½Y¼x±¯»g„eYX–uÁmTIKKcÕªUçÕNbb"«V­âšk®ñ”)`‰©¨§C¼I·E|lêÔ©´oßžE‹ªïº|ûí·3iÒ$õÊ¿EGG}^çº\.®¿þúåEÌ©Á2ݦx“F°D|lïÞ½4nÜøœëgggÓ¹sgÂÃÃq¹\¤¤¤ðå—_Ö¨·zõjúöíKdd$AAAÄÆÆòûßÿ¾Z�O>ù„^½zAXX]ºt©1jöÊ+¯àp8ÈÍÍeĈ´hÑ‚°°0n¹åvíÚU­nYY£G�&**а°0ºvíÊš5kÎùµrÏ=÷A“&M4hß}÷]�zµÝ"<~ü8£F�ò\»{÷îäååÕ¸=yú-Âûî»�üãض�Ãáð§¿6ï1}{°>.•³QÀñ±¤¤$V­ZŨQ£ÈËË£¬¬îdz'MšÄ�!C¸îºëX°`o¾ù&'Nœ k×®lÚ´ÉS/''‡®]»rðàAfΜInn.O?ý4ÅÅÅž:+V¬ gÏž”••‘••Å»ï¾K‹-èÛ·/o¾ùf�k§¥¥Ñ¤IÞyç^xá¾øâ X£Î³Ï>ËC=DNNÆ cРA:töí�JJJèÝ»7+W®dúôé,\¸�Ë/¿œAƒÕZÿô§ÔÔTž{î9þð‡?�““ÃСC8p ‡>ãèÔøñã¹ë®»Xµj•爊Š:kŸEêGÕB£&,¯³EħöíÛgwíÚÕ¶,˶,Ë ²;uêd?õÔSö¡C‡<õvíÚeÚ�=öXµóKJJ옘{àÀ�ž²¸¸8;!!Á>qâD�×½á†ì6mÚØ%%%ž²ÊÊJ»S§NvLLŒ§lÖ¬Y¶eYö¨Q£ª�?}útÛ²,{çÎ�¶mÛö¦M›l˲ì¿þõ¯ÕêÍ›7϶,ËNMM=ãû0cÆ Û²,{éÒ¥ÕÊyäÛ²,{öìÙž² &Ø–eyþ½aÃÛ²,ûÉ'Ÿ¬vî{ï½WãÚË—/·-˲W¬Xá){øá‡«µ'â yyy'×gxÛ†�†�·mÀÎËËóõ˼hhKÄÇZ¶lÉÊ•+Y»v-ôïߟݻw3aÂسgà•ª¨¨`ذa”——{ŽÀÀ@zôèAnn.[¶láÛo¿å·¿ý-N§³Ök;vŒ5kÖpç�wâ)·,‹!C†PPPÀ–-[ª�Ó¯_¿jÿ¾âŠ+(((`ùòå5FœúõëwN[D-_¾œÈÈHzõêU­¼®¬S­X±À3Uå¶ÛnÓöTò3TµÐ¨ÉC �z›&¹‹ø‰ÄÄDϹŒ7ŽŒŒ ¦N�ÊôéÓÙ·o µžÀ�hݺu�×:tè¶m×z¬ª¬¨¨¨Zyxxx­×+//¯V¿eË–5ê5k֬ξT)**¢E‹5Êk+«íÜÚêžëµEDLSÀñCž€U5’ À¢E‹Î8?¨*dÖY§iÓ¦8Oh;UUYÕõÎUóæÍ=çŸt***j„µºÎÿꫯj”ïß¿ÿœ¯}àÀ�󺶈)Çüˆ“F°¼M·E|lïÞ½µ–W«˜˜’““ äÛo¿åÚk¯­õh×®qqqÌš5«Î óaaa$%%ñÎ;ïpüøqOyee%sæÌ!&&†¶mÛþ¤×Ñ£GæÎ�[­ü½÷Þ£´´ô¬ç÷ìÙ“¢¢"–.]Z­üôöjÓ½{w€“ó.\xN×8ã"Þe>ÄÛ4‚%âcÉÉÉÄÄÄзo_âãã `ݺudddàr¹<«¹ÇÆÆòÔSO1jÔ(¶mÛÆÍ7ßLDD`íÚµ„„„0nÜ8žþyúöíK�=HOO'**ŠÝ»wóÑGñòË/0yòdúôéCJJ �>ú(N§“3f�ŸŸOVVÖO~íÛ·gذaL™2§ÓI�=ظq#S¦L!""Û>ó7ù{ï½—gŸ}–¡C‡2yòdâââX²d .<ëµ;vìÈàÁƒ™4iN§“nݺ±iÓ&¦N�JãÆ�Ϻê{Õm×ÌÌLz÷î�Ãáàꫯ®s›HýÒVC ,;v,aaadffrË-·Ð§Ožyæz÷îÍš5k<“ÉÆŒÃ[o½Åºuë|˜²²2 yùå—iÕª•¯»&òy«œ£G�’žžNtt4¡¡¡\sÍ5dgg›i�`‰ˆˆø•úXZáÌí 0€/¾ø‚)S¦Ð®];æÌ™ÃàÁƒ©¬¬dðàÁ†ûrqPÀñ+U[å˜n³v‹/féÒ¥deey6pïÞ½;;wîäÏþ3<ëR'R“Þ1¿bz‘Ñ3�ˆ½û\®˳¤¦¦RXXÈêÕ« ¾¶‹‡–ˆˆˆ_ñ¿þš:Ô¥ºêª«Ø°aƒ©vQQÀñ+¦=óS‰EEEµnŠ^U¦ý<Ï�æ`‰ˆˆø•ª,ÓmŠ7)`‰ˆˆø•ªÛzçëàÓÓÊŠë¬Ý¼yóZG©<èùùé°DDDüÊ…®ä~ãÉãTÛ�¿ÔZ;!!�¬¬,*++«ÍÃZ¿~=W^yåôåâ¥9X"""~Åô÷3�ˆõïߟ£G�òöÛoW+å•WˆŽŽ&))Éàk»xhKDDįxw¡Ñ””úôéÈ#øá‡ˆ‹‹#++‹?ü�9sæ`Y–á¾\°DDDüŠw˜7o�?þ8ãÇ�çàÁƒtèÐ�¹sçrÏ=÷îÇÅCKDDÄï˜Á:³°°0¦M›Æ´iÓ¼z݆LKDDį\èS„uµ)Þ¤€%""âW¼¿Ù³˜§€%""âW*8Ûœ©ókS¼IKDDį\è:Xuµ)Þ¤€%""âW4«!PÀñ+Áj°DDDüJ%æ–6{ö6,¿¢Iî �ö"1L#X"""~Åû[åˆy X"""~E �6 X"""~ ¸¸øäßö`~RúÃíÉÙ(`‰ˆˆø�o¾ùæäßÔÛ5\.W½µ-Õ)`‰ˆˆø�;öíÛÓ¨Q#ãí»\.Ú¶mk¼]©�eÛ¶nÌŠˆˆˆ¤eDDDD SÀ1LKDDDÄ0,ðDDDD SÀ1LKDDDÄ0,ðDDDD SÀ1LKDDDÄ0,ðDDDD SÀ1LKDDDÄ0,ðDDDD SÀ1LKDDDÄ0,ðDDDD SÀ1LKDDDÄ0,ðDDDD SÀ1LKDDDÄ0,ðDDDD SÀ1LKDDDÄ0,ðDDDD SÀ1LKDDDÄ0,ðDDDD SÀ1LKDDDÄ0,ðDDDD SÀ1LKDDDÄ0,ðDDDD SÀ1LKDDDÄ0,ðDDDD SÀ1LKDDDİÿvн±ätuIEND®B`‚ipython-ipyparallel-14e3c43/docs/source/tutorial/figs/wideView.png000066400000000000000000000442011520071063500253640ustar00rootroot00000000000000‰PNG  IHDRde†û²tEXtSoftwareAdobe ImageReadyqÉe<H#IDATxÚìÝ �]gy'ø×ØÆRƒc[;þºÆb’ØÁjH±¯]ëëÙ v²’䲸=I ¶,™L±·“©0Ë®ÂLB>$³�0‘¼TX̰«vÆÔP‰Z&†I"¡¶1YÙ¨%$ccŒö<·Ï±®ÚýqÎé{»ïÇïWuª[­sÏí~ï•οß÷9ÏI úÔI†Öh¶mʶ«óÏG ÉP˜Î¶Él»?Ûv柰ÌƲíÖ�}~cÕk^›^|ÙéôÆ¥)û³‘ÏL}==ûäcéèWïKG¾úÅô££‡#�Ý™mÛ�d@÷5³m[¾#?ÿkiMó�F„txâžôÝÏl��ÁìÆdÆ 2 k¶ž¼jÍæ³Þ´%�üü¿3¼Àôçÿ4}' f?:zxKöÇ;Œd@gÅ¬ØØ¹ïøýÖÒ$Ì'–3»í—"”mO3³e@�8Å@ÿ‡±óoýTzÑ9jÄXØ©#g§‘û«é©=÷�>7ýd\äqŸQ�Þ`† úרɫÖl»ø#¦ìc¥Î}1}ÿá/?_Îà‹÷I1‹úý‡¿®O3WbPC#ÛvŸ?þ©‘_ú3¥ôý¯¥UG!lu\�yé̘–:‡Cïxí#ˆG Ïþ-2nK3W`N!È€j¶­i¾±U7VFœ„Ÿ¼û¶ôÃ'K/{Ó–V«:«Æà)ú÷þÊTöÇ(ö7[PRÔþlÜõ`©ÞbÑö ÂØKþײ0¶Ùèñѯìñ�¾[±?¬ “ ô�M1ÃU%Œý«ÿGÂóŠ÷SÔ"Æ"Ùw%wu� XÔÆè¾_6ŒÅ˜UêÌÒ“Áª5­÷JÊšÙ·È€…�.V„5c±•Ÿ`�UCYÜu܈ÀòQCýçØ+>ýÈ‚;L½óÊ4òº_ÓµŸZ"Ð?úžŸ‹O/Ž·“�eø…ÈÀ`‰¥Ê˜éƨ+fUã6\ÉÒ%d@=q#é—ÍœL¡¶ôY°o¦™žw€@”KM!®šƒ%�V­)ÞGcF2 ‚è¾þâË\QIg¬z͵ñáj#PÁ3S·n‡�pæL»”¦‘� ¨à¹§§�s¾� 3'·×� @ @ ÈÈ22� � @ @ D§`)~tôpz摯·>?ý¢KÝÿ@ –Ãá‰{ÒѯޗžúúWZ�l¶Õ¯ymZõškÓšæ<ΓÛok…¹5W¿iÑ}óØm¿Ôúxö ·¦Ó—.¸OUó³8^ѳÇn­tÌg¦¾žž¼û¶Öççßú©ÆöðýŸYòkÔ~L@ H„ˆÇ?úîÖÇð¢³ÏOg^ú3YX¹,ÿû‡[wä«_lmÓŸÿ“V0˜oÖ,ÂØ÷þJvŒ+–ü½ÅqÂ�ž:¼è>UÍwÌâxññÅ—]Ñ ¢UŽ9×÷óÃ'«ý}0a,f„bF,f‹bFèÅY›KÌòÄìOñ˜…BÙJ8üSó~ïuEP=ó#.ùç|Ù›6·¶ùÄxF`;ëM[Üè/Šú�EE+ÂX,-^øáÿ{Á@ûKfʦ?ÿ§=>/¾ìgZcóÏÿÇox³Ð1ÛUÌŒ�ûŽß/õ˜Øwäçÿ]ëó#_½o Ç'f«âç�™«AŸ€@¬€gŸ|¬µª®�¼î×Z˃U×�Š ú�Ïlm�€@tÌô_ýIëcÌU­»Š¢ÿxL§ëµzQŒOÌ”ÅLbÔ“d@Ç|ÿë3Wü­i¾É`,"Šì-]ÐqE‹‹ùz{q¢bé²Õc-;� ¨­½éë0,;vBÑ$XºÊÒ‡ ˜WqK¤AóØxùŽýÑÒ¢j×û¸º4®,�¥Ëï~æýÂ� `¶˜Å*ÛÀ5n‹TG,]>úžŸk]u¹ê5¯µä d@='Ÿ9˜7 _è.�W˜ÆU—QKK—½v· Çþ¿5À|ÚguôÖª.–.cÉ3Šûc¦ @ êý'‘Ïê¸b°žXºŒ1Œ6E � ¨äÌ|iïè€ßþ¨[bé²h…ñø]ï>áÊU� (eÕk®m}<òÕ/ 5­~Ík[[,ûZº2 ²5Í7¶–Ü"ŒUí>!îŸ~ñ¢Ö6ìa®}é2Æ@ *9û†™F§1»S¥–lúó3÷ÁŒÂöa¿Â0~þç—.?úîôœÙF@ ªˆY²ØÂc·ýR©žÑ5‚Hè†]±t³…ÿ²ý63d@-íK•K9F§” 5�ªK9^ÝŸÝ=1a0)êÈ22� � @ @ ÈÈ2 ·MÕ½'#ГqƒiXF Cp¢{¿ÿð—�ËéVCp¢�G¾úÅôì“� –˦l1 �ÇMgÛöï~f«‘`¹LfÛ˜a� 8Ñ–Ã÷L+îg™Ü�m7È€Å,Ù–þ�¿‘~tôðó_<åÌ5éÙ',eÒmï­íifɲiT@ N´=;anì¶_zþÄyzã²ôý¯+ø§3žš™��h e7È€ºñ™©¯·BY´ÂXõš×¦ï?l“Î8úÕûâýùïL3udŠû¡ N1Ð÷î}núÉ“¾÷7Ÿk¾èœ ÒÓÿ´;�š}<í¼KŒ µÅ¬ëü¿§cÏ>ó[if‰<¶¸ÚòPš)ò:È  †ñìzÍ“Ûo›Šv®Àd©¦?ÿ§ÊvfŸNµ}9fÉ÷ƒ@,`"Û.N3˘ÓqB…:bùû;3¡~ˬ¿Š€6štî� XÔöl‹Ù²äKTK•�ôÝñéméÄÙ±0�‡²1#°¸¨ñ¹±(ö‡²a,ÏD¨Ÿg·èIæjKÈ€’¢-F+”i K…0¼w�]c†,®´5jÐ9®²„Á6yìÙg9À6gÛþlÛ‘ãþ)@=#ù‰¹i(B¬±ûm˃x±$¹{‘}ÆJì,pbÞaÆæü5]ÌXÞʆö˜Qk,q`Í43;æ$:8béq‰ýy€*kGZ|æmG*?ëäb‰iÜ0 œ²!{*¿T½9->“Zf`ÖÉSÍÏ`*3›¶¦Å‹õ £yÐ[H„Àc†ÊQÈ?øa»LY™bývefÔöçÇ–À­“`8ĬH4ýœ0i²dØŽ×4è©äþ‹7ÞWW{ `aqB=Xá$L*{ÅcÌ�•�ÑK‹_™ÇÚoø`aq²t%Üà+Û�,fKÇK³‘ÊÕˆiKdÉ[œx§Ó o�Ãà¹?Û6”ܯìãT¾5Ùo"©O€9)ä.ñ:ï.ù¾¨red™[$�§rÀÐÙæ$9t¼lЪÒ�l,-^GV¶9- •8Ù*ä>»K­*7o” zîK † Snß–fêÇÑþb´Ä~eëÍÂTRGPY\Q3c ù‡ÏžT®`¿lß²*a«ÊÅ0Ðò·xÝËÖrUiU1–¿ge•ç€�¶5¹Ùó°;–ÊÕF¡~Ù±eîkY5äÀ@uB$•/ìOå ûS*W´_¶9-0‹2E!ÿ”¡jeëÃb¿«;|Ü*  œXzj$…üÌö— EU ûË„­‰¤~€!ÅÔc†�T¾cˆeÈÑ’ûFè_¬AlÕ»ÀÀ/q¢d¸” EU ûˆ­²5l@K–Ðßâ$ySš©ƒBÙåÈX†,;CM†§Jì_u)È ïE!ÿÎ4S»…N�’Á­jaÿb�¬l ÐæTC}+NŒ±Üô*CAÍPTöVKUŽ¿Üä%`XDýϸa`ÍT¾®°JﺲÇ-Ûœúþ„{ÐI�y4R¹ÎúE°o–Ü·la•cI ô«mÙ¶%ÍZÃlSyx*Ø«áOç›Â~È`è�å· 0‘ÊÕ‡=’mU8n„­Æ"û(ì� ZÌxÄ••7 1U2�• XíÊ´Ê(ûÜЗƓ&°”¯l-ò«t×ß”ÊöÀÀ‰gj7 %4+„÷x_5Jî3_ûKì§c?T`Éú‡&°T1U!dMvaߪ=Î@ z^œÇ’[$ѽ@Ö¬pì2ûW½X2 çÝšf®ªœ2t88Õ OeÂÞD2C¥¹uô¾8ñE!õņ‚Š¢gXÙ^d+wO‰@6•Ô�AifÈ ÷EØ;“&°TW¦EEȪÌf•¹)ùTþžmx@ ƒ~×ÌO”w jˆ@tQÉýÊvö/ÂV™ UµÇd@OŠÚ1³cÔU%M¤ò³dU®´lz@ ƒ~ÖLfÇXš© !«êòb™eÎCÙ¶ÖËô3³ct"�•]†,S¨_5ÀM$WZ‚@}¬™ÌŽÑe ö#¼U¹!¸{Z‚@Ïì�R¶õÅT*?›V÷¢zF3ÍÜ[ЉŒNˆ[n�—د¸Wj•÷i™{eîJ ûaQfÈ ÷˜£“•ܯìLZa*•[ŽÔ‹ 2è;ͤvŒÎв ömVde\Õ‹@ VœÙ1:­ÊÌWÕ÷]™7•ª],°¢âÄfvŒN«r[¤ûSµz¯2n*©‡� úÈMÉì�Wµ6¬Š2N·~È o4ò“–Ù1ºa*•¿ÕÑÕ~n¿`€@}#jÇv:y±Â�¬êûo¢d€›HfÉ`A§Xqq¢˶‹ ]RvÙ²J½YUêÈ`fÈ`åEÛžff1 ö¤ò=꧉TnæëþäJ° 3d°²âäÅü× zDübÐèÂ/k -ÌÏ ¬¬Mif™hÒPÐE©|±~Ȫ»Yb3d �AÏ*ÁB¯èf› @ ƒž³)ÿ¸ÓPÐeSBVÙz³B™ &’«,A ƒU4‚…ådÝZ2<”̨�@}ª‘Ÿ · zL•›‘aï¢ûM$³d �A�‰Ù1�`Yî Õ�ÖS©ÚE€@=c,Y®dy• ZÝ*êïfÓYÈ€Zal*iuAoªœ&R¹¥Hµf �AO¹!™cù­t·ü˜yÓ2è �ü¤¨Õ+¡ì ÕTªVVfK– �AÏPÌO?èF 2èÑ önÃÀ ¨Ú΢Ó&’2È GÂXqb‚åVåêÉ©TmÆ«ìr¤¢~È`ÅmLfÇè�T de¯ tŸLÈ`ÅÅ ÙvÃÀ ™ê�0¤°2XQcù qÊP°‚�l´Â¾UZTL¤•­O� (År%ƒÞ #%�kÉ2XqŠåJ½Çv�$K– �Á ‰06™,W²òâ}Øè£ã‚@tÌÕÉr%½aºdpšHÕf²Ê7~)qû$È`EX®¤u£Ök*Y²� V@3ÍÌL œc �AÏŠ«+ÍŽÑ+&»šÊôsWÈ`EÄr彆�q(•_2œH�_^ŒÐÖô2€@Ë©‘ff#& }Ê$dÐ÷šÂCdJ€� zQ´»¸ß00$Ê6}Õ³ 2XVÍd†ŒÞa¨l°©Ô�¯²=Ë@ –¬‘ŸÌ& =$ÂPÙB}·9� ú^3™cøÂ �AOÙ�m{ C$fƒ¯.¹_Ãp�@Ë¡™Ì�Á\ d �ÁrMêÇÈ`Å4ó0¦¦†^Så=9‘f–Þ� úR#¹™8½©ê­‹4z� ú–‚~†ÑD*×&c"™y� –ÁhRÐÏpéð~ �µ5’ú12Xñ@æ K2X!ͤ � Vœ@Æ ¼�»usqè¨F:±�ÀælÛÖö瑤€™•5ûÊÇc³þÜ\à±Ç*>WÙýzYàDfÈ`i¦²mG¶mm _�ä7–m» +¬™¿›s|}w*ת¢¬‰’ÇóK ·5ŸØŸŸøvåŸÇׯ +,ÂÏÁüý¸mÖÇc‹„£ª3ds¿N5Úvr›½™  l›çý¹mÖ~�‚ÓHZ|öK ƒš,YÂÒE‹‹©9¾¾=)`¦7Ü6Ï×ï�õç›òP5;˜mJ�_Þ€ŽO/œ}hzÈ®YïÏýsìÓH'ΞÅÇùǃ%Ÿ£Yb?3dtE#-¼+mÓ¬÷èø<ûíHs/onÈè»ÛN^–vèEûÓâ3¸ÍyÙ\û�åÁndŽ@6–æ¿ÊX  k6ç'­.èõ÷èŽ ÁíXþËÆ|æÛæü½_|<–‡²ùŽßðrÀq§–¨1kfå§“v�25kci¶gÛ­Ùv÷"ûÅEíËîw.rÌaÅ’f³íßÁÎ^׆׎;ÉPÃHþ›ï Ù6zÕÈš´ö”SÒ+WŸid訯y*zî¹ôÀôáâ$AâŽäêÕªÿ^£~lCšYJ�m2ÃûÓL3×É9³?ÿû]¼À˜7ÒÜDP»1ÿ|,߯xívå¡o"ÿåem¶mñR!�Ayñ›ð­YùÍóÎM¯;ë¥F„eñWß9˜þàÛ�G8›ÎOæw•EŠÙ°±+¯¼*­_¿>m=^Ú¸wïÞ´/Û|ð�täÈ‘É<M´=~kþï½=XÍgGúÚ½ª-è¡m*ínÈÃà ùß]3ë¹A ƒ~ËÞqá§7ïúñ—§«Ö¾Äˆ°"8ô½ô¾}�ÄìYœÀ¯OfËæýÅéÚk¯yë ciݺu î|ß}_H½ë#Ìvæákº-Dµ«ù4Ó‰µ““ùãÚÅèØ���v±— � Ê…±]¯;륣ÆÖžzŠaEúásé�ÿð͘5‹ÿ5BÙ‰ÁgõêÕc·ß~GºdýúÒÊÂXúÀÞŸöLNNæ�*Y±¼¡iOš© ›šçí…úê¶/Ú 1c6îeC ƒÅí¸jdͦÏ]þF‚žò«ÿS„² ×�–­YÛa, e¥K—wß½½µ|Ë›±´¹¾-ÌÍZÞœHÇë¿Ú�¥ã¼tž�ðÛïoÍšE˜[wîºç—9'³¿{< mYp›Î_“;ÓñeÉñ4sõgüY1?ä4†e!ó¼uF�žïÓwþÃ77q Ûø fÆâªÊ¨‹W5ŒE‹0�,fã^{íu/¸Šó­ùÇ}{÷Ž|ö³÷lΞo,eãéxsZ3cÐÆ  9¸ç¿ß0rá§ zÚ£O?“6ü×=ÃüÚÁ,\�,ÖÞ¢Toyó/§ßùÝÿ�6l¨vËÕ(ì�¥ÊK.YŸÞsË{K‡¹x܇>üÁø8‘ýñÞ4³´Y|^\Å CÍ óid›0F_ˆ÷i\trè‡Ï5†ðäÞÈ‚Q©0bv,–넱›oÞÜš‹ÞfeÅLÚgï¹§õøìy›ë/Yß̿ױÉ=“cñõ,$Ækæ. d0×òqK$è¯\½*ºøe «R��ì† �ª3\×^{]é0…ÿž™k…¸¹fÔÞz<´5î¾{û­{&'cæÌ]J'€áË•�¢×XÑ#¼ã�ï*µ<ÇÛßöëiý%ë[ujâZތٺ¸¸àö­wÄL_ܲi›W � €�´oßÞîgY6ÄEß±wVc±´á-¶* D0ûÃ�ýq,mŽ ed�‹«1ËÖœEx‹03b±¼YG¸˜-[·n]„²Í^2²(®âåܪ4§�/”ýÎïü‡ø4–/^2†Z,sF-Øb¢ˆ?.([g¶˜˜•˃à­^2†Z­2WqÆ=.¯�£IìRäWtnJÇoµÌ'n—tåUWuô˜î²0a¬i„È`queÕf³eŒÎsÔ#�ÀbY3Ô¹Iùbòc®5Êd°€Ç?P¹¿YYùqÍ�!� �ddÀ@:Õ0h>ùø¿¤?϶ð{/¿0½rõ™µ�õµ#O¥÷}óÑÖç¿rî�¥7gÛr?ôÜsK:V<¾8V„˜åzÞP«Óû¶ïÿ¾,Œ½ùܳÓ-�'˜d@'D¨zåêU¥ÃÛ¡>—þÓ·¤NŸ»ü'…2� XªcŸ»ü'Ý/–b?ÿ�ƒ­0¡,þüú‡¾‘þúÕ?eV€¢~Êàvfk™²}V,BÙ‡ù¶ÁÈ€åfwýøËŸÿó'ó‹È€eWZ^xÆé­Ï}ú™Ö€@,³"�µBÙ3?0 °’ÖžâJK� XvÅ2åLÛŒ3 À2Óö†Ü_}çàó�,êÉ ÛöíÝ›öîÛ›?p õçU«W§õë×§ F 0|¢ÙûöÍÜ*fÇ¢ÆjdÛX¶m̶WyÕWÎ}÷}!}üîíé@Äf[·n]zÇ;ß•®¼òªN?õ±üã5Ù6ѣó+ÛšÙv[¶�wøØq¼[óŸýïD� è!Ñââ}ûi…²ð{—\tBqÿØ”m7äÃõ^õ•óá}°ÈÂ%ë×§«ÚBW´| õñ¿ýþôž[Þ›®½ö:ƒ†@ƒâÏ<™¬xŸÇvýÖ"¾ßÅš»>pè{ékGŽ>Ä"„ýÙ¥¯”Ú±‘|6 ‚X£íë13°Ó¿ˆ•±gÏäóal¾°uäÈ‘Vh‹`öÑ»>Òš%[½zµÁC ƒA0l�N#�}°d·ýb¿yÞ¹é·Î[7HC°cž¯ß�f–ƒÊؘﻥO~æž/¼ºï 3a,‚Ø|3_¾"¬mü_þçV8‹`f– � Šðõcž…ÖßÌBÙ›Ïý±Aþqoʶéþ~vX›H357ý`¤×¿Á˜! W^µpmX„² ££iÏääóÿ �ÁøÜ†ŸLW­}IíÇÇòÞë÷|£o~Þ«FÖ,xsñÖ�Ä�>Õ c±”WXÆ=,ßùßl³Xº,îmÙ§îH33Fs¬Ù3^�4SìÓ¬¯o϶ûègŽŸuW/ƒE™%ÈÑ 3�l2 qoõ_0ˆ"lµj¶ÅŒØ]Ù×¢æ,–9ÈÚëúÆ 7ïC÷æÁ«‘­\1ƒ´9Í,[ÆTÍìbÿ¹ŽÑ¬Цòm¹�Æ_1 µ�½{÷öü 3d7d/Û¹ëÖù‹@ �hu±& `±|³eðíƒÐþb*f[òPlkš¹ÒòêE×MBXûóM­ÐÏ:Ë{wß½}Ñ#¸­D¡|\U½Ç|à�E{�Åß—èG6’�ÿhÛøÇEÓeÇ,ä�ü1yX/£‘?¶X*žÌ?]òyÛ¿ï�žw¹,åç;á…ü8Ûçø·±Ô×O SöÿÁ·o-eþ§Ádí¶çÛhþ~{P»)½°(þþ4¨b¶í†Y_¿fY3 <»n¿ýŽEwŒY´2Á­ÓÖ_2ÈâJË·Þ0¶ÔP8–‡ëÙµsñµèáµØ@DHØ6Çã#ܸ@(ˆýw,æïH _2×÷]ô[ì’2}Ô–ÚÇl)?_û÷7�§‘mbÖ¿�­ù¿¡4Çë·%ÿ·:”Ü: h)jí¢Î,jçÐäAíUù¶½íD|Ó'ëf~?˜ŸDmw[É0Ö˜'H ¼"„Å ÝÛßöë­p¶„0V„©;òpMþú�äã»i¡ðš‡…�m�½£-¨m] ¬ìÎ?™·Ù�ßœæ¿Ê·=no{ì�ùûb׬÷Ôr[êÏWmûYæšYÏ�3�ÿ»)žcgþ=lK}pÕp·˜!ƒ¹ ­©jÌ/õb‚Â…§Ÿ¶,ß{SØèS¶”ᅢÚ�ùoç›ò@¶5/ìß–�ùÜšª]‘¹¹Ó?@ÁÿOÿ¦Yzÿ*ûvBtà�¼›oÞÜ*ð[ÊÞð†7V�-i L[Ò‰3aqâ$¶¦ù{ÎÝš¿®ÛçxìÖüuž+`oÍCÆDza§ûøÚ½yÙ”ŠÉ9_„÷ñY·3C+È–úóµ�ïTþúLÌñ÷7µ½~³_ƒmÿþnLCH ƒ®š§–t¬Dsw¹ΛÆ™étâòfáÆüDzk:±¶¦0×RN#_i;þÅ©óu2Í ££•–,ËìÛéðudñ¼øÀû[¡ì³Ÿ½§µ„½ÇJÞ*©™�åtš{Yr{:>{92Ï8O¤¹—ÄîÈ;’¿ö³Ù¦¶ ‘æ9îÎtü‚‘öÀ2šŽ×ªÝ1Ïûî¶<ø¯”¥ü|³]3ÏØ7Ûþ-ÌõÜ›¿™†”%Kè�˜Q*®N|àÐáç;á×ñùïÿÿìç—é†ßíßïƒu ¥:fŸp¦ò`vqþ±ýï7·¸MùoúûÛNð©mvd¨‹–#”ýáÇþ¸5;b 3n•Û�ÅûŽ�ÎóÚ´¿F³÷�뤿Øk>º@\(ˆÜ¿Àã‹ãÏ÷úo_Á—e©?ß쟣ìÅ s�ÿDZ¹ZÌg† :èuYxŠ»D¸©{µb,W>�ßî)fÇ–ë–FÑ“¬ðÊUgz1ç6{í¦t¼öh:-\¿´5Í_£´$Ý^²,³´«(#–([7¿êªt×]™¹úòÁZ³w±„Y„µ,tÂ>©bÐ.£Qò±“ó„�‘Y�f>ief‡–úó• ¼mŸ�¥ÎÆñ‡úÆçtЯ¬;ûùÛ5ÅÕŠ1»U%PE�‹~–«{~|ÏÅ};—3ö¹öÚ³8ÁÄ’Îméxÿ³Ùê^ý¶è G·—,ÿŸÿw¢Ôq«ˆÖûØ·–-ãÞ•1[öÑ< Å2æ®Î?>²B�¥¬Ñy¾ï^µÔŸ¯ŠíéøÕ¦Å/7dÐy±l³d1Ûáê�ÿøÍt׿~y©€ÓÚÿ¾ù|ýÙ̽&»ß3ÂX{Œû[RÉìÚ ö�vSÛ ï¦|¿iCv\ܯ2jÈ¢¶,fú" ³h=\ ÔõùK±?ß–<ÐÅ5s7俨Lø— �AÇÝõã/O�>ô�V°Š-ºßGŸ¯WóuÀ�Pó‹YªØ¯›·1ŠeѸp jÕŠåÑÁqÀn6¾Ò!-¶f~â)fn4<'ŠÖ*øÿí÷·–/£àÿÞðÆÖÕ™=Xnà—a9~¾øwqMþ<›óÍt¼Ûä0ÿ;È Ã"DÅí‡^Ÿ‡²˜ùú`~{¢¸×d{;‰øûÙ�¯³láê¥ý_k}ßñ½E¤ã&ÚN8›óß”ay¡Xª|Ë›¹µ|ùż‰l™L‹7pígËõóÍ™ï̃ÙXÊv§¶$Ȁ΄²(ì�Z²"pE`jŸ‘š-jÆâB€åluÁ/fï–«^mˆÅ‰h|Ø~èWûöÍ4‚½ä’õ ö‹¿‹åËX¶ìÁûn·Xä÷çrþ|Sy‹{ÌÆÌq±ŒßÇN� À•#kRQ¼Ô¦ªñø÷æWJÆq«†²Wv¢¦,šÅ>úÌ^°Dxáé§gÇž©=«ÄÞ[ãjÎøyâç»P‹ º(ÂØÍ[fzáÞ¾õŽEïSY,S9zdP†`Ê»`AcsWʶ d0 bI°S]æ#¬,õ¾ŽÌbö©›3PvïIÈêU»™y,©5Ù§Ù¶o§/žXì–W�tüêÚñ¶¯WÌlèñ—ªîÏWÖhþSs„Ôx­b¶¬¸cAcƒ¬Æ°tM4ƒ-ÄU”‹)ÄŽ¾p&íPþq¡6»Òñ™–N™˜( ƒQµqްQš2a²[�ª[?_Y[ó×fl�À�JŽ•@U·FzàÁÜ/êÍÌ÷ir³NØó‡ÑyNîK5ÕöùB�¯žç¹w¶}ó�±E¾‡ùî"Ð`FWèç+«xÜE¿'� :áÚë®k}Œ¦¯þÐç cÑ‹,>FÙ÷·Œ`3�‡±¹nо©íÄßÉåÊùç[ç ƒÍ¶Pu÷�/ÂÈMs<6Ž·X»‰‰¶ÇÏu'€+øó•µ§íuY ”N k SC@WE¸Š["7�ÎþñµâŠËX¦Œ™±cažNý!Ú%lk 0E�¸¡í„~[~„xÞ]y�Ø�?G6¶Äíiî+‹ÇoÎ�qoGóŸ¥è[·yžç¿3ÿùùqŠû¢6Òñ{¦îL Ïpuóç+c{(GóçÚ’k$¿ýXñ½ %� €®‹Îû± ùñ»··X„³ÙâïoyÏ{çZ®l?©§üä}k:qf©èoÕ�+ôŠû,nKÇÛ3ÌvÇa0‚Ç�ù÷=–N\¢Œc_ßöµ¹–ô¦òÇÏ¿cŽÇoZB [êÏWÖõù±›y(K³^¿Ó�^a)�°lâ6I±ÅÒåäžÉt4Ÿ;wݺ´þ’õ ±Ù¡lg~Rm iþ¥Ê“Jw±[Çs¼*Îxî‘’Ï=ûûŽÐÔh jùçãiá«wæûÎ÷øÉ¿Ø±—úó�Tò-0•�s#ßšéøåİÿûÈXV¼J†¯ùÍCWb6e2Õ/l_ê µ—ã†ÜKùùÊÂæ ¨@ ÈÈ22� � @  ¿L?~à€Q� €4÷†,nÌ d¬Œ‰|À(€@À º÷¾û¾`@ `mß399½gÏÂ÷„>÷ÜuißÞ½F 2º`:Ûnûð‡>¸`-ÙºuëÒêÕ«…2Èè'‡~øCƒýãŽLD([È•W^•>ûÙ{Œdô‰‰¯yÊ(Ð7˜>&‡|®ðÁ&o¾yó¼3e¿ð†7¦¨7;P²UF̪™Q�Œ•5%”Ñò÷éTšYºfñó_³grrçÛßöëi®BÿX7Ü0–>ð�÷—:à%—¬O“{&½É@ cMüùãÿbèyùûtÂH<Ê®?pàÀ�þЧÞòæ_n-Q¶üÇ,YXly3\yÕUi±+8#´e!°+?L~\‰��wª!`w~òñ'Çn¹è¼´öÔSŒ=éПKÙû4>½Ûhœ`{lY0ÛôÑ»>²1û¼™m�öà¶oïÞo�w¼ó]­bÿ9Ù•W¥ìñ­@·aÃèœû��eÒùŽSW¾ôzÈËÉ 3CÆB&³“ÝÄ|ÛmYè]ñþŒ÷i2C6Ÿ�Ùvc¶]œm'¥™¥ÝWeÛKãã}÷}a"–7çk™ë­7Œ¥»²P¶� ££iO–6óåR¯-Ï´‹¹ÿ�Cß»jdÍžqºÑ §DíØ¯ý·}ñéõÙæ7‡Å�åÛÙvo¶=�mw9räPÌ~æÁ8ã?øA:ý´ÓÒË^ö²çþËÏÞ“¾õ裭%̹ÄLV,/Î÷÷uÄÅ¿{{Ìâý–—ŽAw’! ÌâkO=eÛç.ÿÉôÊÕg z&Œ½þ¡oÄìXÌþl7"¥ìζXwŒ�sqzáEÖ6æû4Ú¾>•fê¸×^{Ýè{nyï WmF½Ú'>ù­ :!jܲ ¯í�^:2h evÙ¿NW­}‰Ñ`E=pè{éWþGa¬šf¶íjûóbc7’móà6Õöµ]FGGßóž÷¾ xE­ÙÞ}{Óí·ß±äo6–?oÞ²y¾àÇ’%eM>ó£c�üùãÿÒüÖÓÏœ3ekOuMËëѧŸIïÛ÷hlÓÙûñ·„±JnM33_í�k¡ !Þ›‡¸(¨ŸÈ¿KœŸzüÀ�3þò³÷üLö±ÊŠåÍŸ¼ôÒô¹Ïý_éàw¿Ûª)«+–?ÿ·w½#ýà?ˆ×ø+^:†�2ªjäÿ±�½ùÜKWެi͘©/£›!,fÄœ>œ>9ÓÞ"BØméø¬ åþÝîŸãë/0ŽûóÇMåûÍuÌ›²mÓêÕ«—¬_ßúb„´X¾Œ+7ß�·×¨"=Òöíݯ³¥J2(ñü¦t¼ÞdÄ�Ð%±\õKQ„¾S«e<ÿEj¶X[Ü2Ç×Dzm[ÛŸ¯I _éØhûeíþüõÚzå•W5¢Þ¬l+Œ| å÷ãœïû� ˜×Ž4s•ôªƒù/MSéø¬W#»/�cÿ¨5k¶ýy{Z|¶*Ž¿?o³Þš…±±k¯½.ÅVÌ¢µ‹åÉbÑ|vÏääTÄvzɨ"f�Í:yA/ËÙæüÏÇò°4ž¾iž÷ôìm±YðÍóìNjٶƒëÖ­;¶atô„-ßwþ}@-ÛòÊCA�Ú4+ kû¼ÑÔf¿§go›yžý%öÍy)X3)w`‰Š¶ÅI¨aHèÇyO·ÏZk{�ï^$ô›õØù4ò}¶z)脱Y'¡qCBü±P ‹÷ðþt|ù°X~Üš>_/‹]é…3jóí»µ-èÀ’ížur‚¡×5Ó‰Íagk_ÞM'¶ÊM/¬7+¾>×ç¶yaû¬ò˜—€¥˜ï$äC?²:ûÎWsv0½°>ló¬}Ô^°$ó�„v†(�K 1“¶)ß,_œý Êþ9þÍ4¼,�ÒɆ*IÇ—nnË?Fï¤éü$6jˆ¢€ïýèä_ô›J3�d£7߆¶}7Í¾Æ #u3ÅÉåX[P‹‚åm†ˆµ¹Âû³™ªÏøîNó÷䛫ð¿˜]€Êf×Å[äï¡WŒ§òWÇ/Uk¼æ»‚³‘Ž·Ãh¦ãWaÆ4½4 ;K–PÝôÿúA„¨=:V,WÆí”^•Žßs2ÿs,yn4Ü »S ÀÐX›m‡Vàyï¨ùw04Ì� �X&œ0 �Ðâ É© û«�� €‡¦‘Š�¬ìì›àÀPë…%K˦ �PR#¹b2:j´bÀŠ@6YñøS†2æ7R1`Õ9þ#%÷2€¡ deus¶+Ž}¿—2€aT%U½Â2D› 5g �Ð!#53iè@ ƒ~;�ÁrººB`êæ²b•ï2 ´‰ü½®›KŠÍ AËÒ&dC©J`ª;‹%h�@ÀdÐy�ºä¦T­××X¶mOÕ{ƒÅ¬W™[,�äûîôÒÐkâ¥õÝPµ—XÕ[+ïß²K�cÉr%t„2輘�ЭŸN‹ð3•ÊuÍÍücÕÙ«¸@Ù�×¹Y9,­/è´ªÅùuj«´È(öõË=«Îmj`>�T­˜¿nï±(ÎßÑ…}`Eh}A'mË·n«vUj΢vlÌK@/‹–ã†�¨Ú™¿j°*T¹UR•}�õCwʶ‹ 0–f ù§Jî_±ªÅüÑRc{É}oHZ]КIë :cª¶üK•UµV�…S# @_h$K:,ÝX* £â}WçÊÇÍ~�ˆïIï1ú†–,UÕÂù¨]ÜVãyöWxž]É­’è#®´d)â½Se–µNññNÌ6’‡«M]p)UŸU«ú}@_PØÏlã©Ú,T�×°Æ*„>3º $·ž¡]#Íò�v1Àµ,µc�tìçD;Rµ =–Ò‚¢êì˜Ú1ÖhÒ±ŸÍT½ÍEÝÛ�WXúŽ0Ü‚†”ó*m.Fk¾wª¬*á úVœì\¹6Ü"ôì®ñ¾¯ñ\[Sùer³c ÕÉx«aZ�¡g,Õ[êŽç:–ÊϪU oÐ×âD¬�ÀðÚU1�³V›ºü\UÃôµ‘üÄÇðÙ”ªòoMõjºšŸkG2s À�Ñ v8ƒxÕ™®º…ü¡J›‹ªá BÌDŒ†¡²#U¯ÏÚ]ó}2žª-‹ïö~`�%­†I�¥ÊÍ©^­a#U»h Þ‹zã0”⤩Žl8ÔYª¬ªÚU©Ó怡³£†aàÕYª¬z%f¡êLœ6 ½¸ÎfÃ0Ðê.UîOÕ ìGòÇ•�‰[Ê00Æ’Ù‰A¶ÜK•UÛc(䀶“/ƒ)ÂѶ�©³TÙLÕf»ŠY8 ?)6 ÃÀ©³ì¸Ô¥Ê²ËßÅ/Þw�‹”qÃ0P¢6ëXªvÁF�Ǫ.UêȳŒ%ýÈIÕÙªBÝz®fª¶TYç"Џ~dƒ£N‹‹­©^تáo)7)€�·ÛIr Ô©+f¬5ž¯ÎR¥«z`�«šžþV§¬‘êÏXU]z´T ‹h¦zKVô†b)p¬âãv× âU—-U@I1»Ò0 })‚UÕ~cEÝX�«ªýÍêôC€¡µ=c†¡ïl«¬–R76^ñùêö6€¡´9)¸î7c©z]VqÿÈ:ˇÍü±£Ÿ«é¥€rÉm”úI„œªEüÜêö«Z§¶”瀡æ6Jýa4Õ+â_JÛ‰ªu`Û’†ÃP‹ö½¯îÌÓxª_Ä_õ€±¤ÅÔÖL3³dôv«zÅb�êܧ²êcÕ�@Ô½úŽî+®¨¬¢h[' U½@Ýtð¤¿Ù0ôl«sEåX�ç+îS9^ñ{T70–tíï5[Sõ^^ÅlUÝšÀªK£ú�@Å õ˜kOäªõ_ukÍ Ugãš©~�0]ûû7Œµª:6§jWH6RýeQ`‘  k‡±‘exÎ¥.‹ h$Ë–ÃÆê\�¹”F³@ »“e¨~ cã©~W�«1—þ€’Ül¼ÂXÝÇ…FþØÍ5ž¯á%€îŠ“­eËÁcu®Æ\Êó5X¶ÆÚ-¥ë?P“eËîï£0¦½¬€F²lÙMÛ„1 Œ]NÄ] cu®R¬âÚÃØîŠ�‰çÓk VP„1Ë–�ӊꄱýc#³ÍË+ bÙ²a(–l´-àÔ cuû~Áj‡0ý+Nä› Ã’4S½¥¿¥Ì¨Õ VÂô ±TÿfÕ̌߱T½¯‘êϨ c0€4­§n~qecÝ`�ß/ŒÀà WÚU7u–ÇÒÒÚLan¼âc„1èqÅŒ ‹k¦ú³[ãùc7Õ|îM5ÂÜRgã€e´ AaXŒ§z³[1‹OìNõ—†Çj„¹"Œ¹húDœ´Í¢Ì­‘fšèÖ TÅra•¶³Õ©U«3›ô@èp+¥ùƒÍÖT¿^l¼æs�´ÁF�çÆ éIvb*f¦6ÕxìÖü±ÍšÏ_wf­x^WÍ/p’!€®‡‡âÜ\Âq6äǹÛ�¦Ò̬ÔÙv¨âc7æã¸=Û)±ÿDþq*ß6åaðÎT~v­�ñ¼7fÛ¤—È ûƲíê<€5V]~Aë‹/:gM:íܵF§OvÁ6 bCèè×¾•¾}û" M¤™%ÉõbQkvMR/dÐý0vÆËÏk|èSÊŒÆ�zîè3iê–OÇ2f¾Ô‹•�b –ñ,ŒmÆ8ù´SÓÚ«"ùÛ©u?”½ä§/Žš²uÇž}îþ4¡?ÀœN5PÙMqe7¯ ŒÚ¤(�­½ý}!ŠùcùrOþçÉ|Ò€y©!ƒêv7>ô‹£�.â�v ‡¿¼7=õзÒÉ«Oo¾ç¡ïÌËÏ7ê}dv˜Îû˜E ‹w g€@Kwì²Ï¿»£A,Z(„³6þtZsÅúô¢s×åó½,lGàŽ�Ï}f"ûÒ–ä*L@ ƒ• dÑhôÛ·ßךE9ïæë´ÍqUæwwþ]£±ì¸Q2X�@³$Ñ¿ê¬M?�¢™,çäÙlj¤M ½“ ,ÿ‰øÑß½7­{û5ÂØ‹Áh›’}lfÜaD@ –IÑDtÝÛ®Iq¥&Ã-zص…²q#° ¢vèŒKÎIgmzµÁàùPvÞÍׯ§·¦™›ÔÐM¿ô÷–)y�X¾|ÉëãÓ1£ÐEQ;ö£#ϸš’9­™ d�d@EýX,WÂ\ôž� � @ @ ÈÈ22� � @ @ ÈÈ2ºìTCýáéo>‘ž;úL¥ÇœñòsÒ)«N?ákqŒ8VXõÊ j}sw>ßûòÞìqO¦ïg�ýQë±gg�=#½äŠKZÇéÄóÚ9kÓ‹Î]Súç)Æ"Ž9×÷òìã‡Óž8TiŒª~ô‘›HGúV¥Ç4>ô‹/]@¦nùtëó³6½:­{Û5•¿‡¹Ž;Û“ŸørúÎο}>D¶ÂÔêÓÓá, EÐyâÓ .ç¼åH#?{Ù’ž·øûV—|ä­¥Q1«.¿ 5>ø‹/øûé/=Üú>«ˆŸçì·\á d0È"@�qÉÙ¥ö]lê;;ÿ.½äŠõ•gÊ,BN„�xþó²pÏÑ.Y„�lß¾ý ­0uÞÍ×u乿½õ s†«¥ˆÀ8òo/+µoÌ�d0à"Œu"@Å,Ò�Ž<“¾õ;÷¦Wlÿ�ÒK�‹ùÖïÞÛ cbæ YñÜg·‚Ú%­ðá,Â[ÌØ-il²cD¸‹Ù¹NÎR�vîÚŽ†V€ÙõÃ�Š��©5«tû:rÌBˆbF¬ÌŒ×LûéÖçß¹÷o—üüëÞÞl3–‹:9� èiœb&+ ïcùr©b 2üwêÒâù£îê¥?ûSù™Î»ùÚÖlߣ¿{oå‹ 2`E¬{û5­%Ä'—8«ËŽ€"äU¹Ê°X¾ìÔcÌ���¼¨S;ð‡»¼À€@ô¾˜Mºð·7æK—÷Õ>NqèšYü+!jÑ"FHŒÙ?� èy1«ˆ1Cvàcõf•ž}âp~¬³{âgж›Q³e½ÌU–ÐgüáD«ŸWUÚ?Ä’áѯ}«UKW¾¤âLW1CV¶Ùk·E»àqF=Ù%ù_këà—þ¾56e¬{[³gÆÈ€>tÞ–ëÒ¾w}¼5«ÔÉV…™¸‰e 3,cù2Bf§[ad0Ä¢µC·zbE�},õÅŒRôëtƒÕyƒÚ¾™[uãªÈh¤{ô¡ÇZ­0μüüZcW€ s@7©!NP´Âˆ%È*­0Š™­…®ÔŒ}"äÍÞ褻K|E+Œ˜ùÓ È€¾P´Âˆÿ²­0ŠVq#ñ^ÓÞ £SMp2 «ŠV!Za”™U*Ú]D«‰^T´Âˆ6½ú=À Ú[aDÓØÅÄ2g¹XêìÕÛ­0¢a¬V€@ô…(d_uù­Z²2 VcY0ôêm‹ŠVñ½Å÷ �}á‚ßÞø|Aü?´à¾±,.fŸ¢ÿW/ΔÅU–Ï7Áýà /0д½€>3ýŸNO=ôX©}£Ð>–—"ÂXÑ £Ì¬W¸o1£¶ï]ÿg«n+êË¢ƒq%f'ÑÓûžl5\�¶Ë)fþgß_ÙÀØj û‰jÇÈ`�Y…‚ô˜­Zj ªŠ«e\\�ì‰O|¹õq±åÎj#—Ÿ¿¬îã{Œ&¸eBfÔÅw"È€n8É@eÇ.ûü»+?(fY¢[ür5[íÅlXû¬^ÌÜÅáÍm†Ž¿?¦nùôDöé5F†�2 «"tEÝV·î.0õd€@€@ � �ddô´É¸4d°r&¦ÿóÃF� VÐ�Ó_z8=ûøa#€@+d*ÛîxôwïMÏ}Æh �Á Ùòô7Ÿ˜œºåÓB¬ k²P¶sß»>žù �ÁʘζëŸ}üð–©[>=ýíÛ¿ ® €ZN5°dwdÛÎé/=|k¶mZuù##?{YZõÊ Ò‹Î]ctÈ`™LeÛ�Ù¶åèCßÚ”m³Ï›§¬:}äŒKÎI'¯:=�–…³ìë­š³ìëFŒ<õÐcÅûB'èªF¾�fÛH¶m\÷¶kFÏÚôj#à þñÆ?Š%ïë³Ow È€îŠY³]¯ØþfÉxÞ“Ÿørzâ3™}ú*£ÃéCËjêØ³Ï5ŽüíÔèÚ«"�|šª�aWèÆ!™ŸË¶F2`yÜÿÃG¯ËBÙ:¡l¸Åþ9 cYH�úÃ/È€åót¶}* eë~~Ïèé¼,ÅÆðˆ ;žØþ_ÒãÛþËtÆ~%ûÒ_njÈ`e�eÛÖh•qÖÆW§—\±Þˆ xûîοKßÙù·ñùDš¹2wÊȬ¼¸úrs¶Ýð¢s×4Öd¡,z˜�ñòsô1Q#öô¾'[¿÷å½ñ¥¸ŠòÎl›0:€@½)Úclʶ«óÏG"”�vîZ#ÓgžÞ÷DqŸÓ©<|ÝŸ‡±i£dК† /M%Ë‘0dþò„!ã'·_IEND®B`‚ipython-ipyparallel-14e3c43/docs/source/tutorial/index.md000066400000000000000000000002401520071063500235670ustar00rootroot00000000000000# Tutorial ```{toctree} --- maxdepth: 2 --- intro process direct task asyncresult demos ``` :::{seealso} [Tutorial example notebooks](example-tutorials) ::: ipython-ipyparallel-14e3c43/docs/source/tutorial/intro.md000066400000000000000000000220201520071063500236130ustar00rootroot00000000000000(parallel-overview)= # Overview and getting started ## Examples We have various example scripts and notebooks for using ipyparallel in our {file}`docs/source/examples` directory, as covered in the [examples][] section. [examples]: ../examples/index.md ## Introduction This section gives an overview of IPython's architecture for parallel and distributed computing. This architecture abstracts out parallelism in a general way, enabling IPython to support many different styles of parallelism, including: - Single program, multiple data (SPMD) parallelism - Multiple program, multiple data (MPMD) parallelism - Message passing using MPI - Task farming - Data parallel - Combinations of these approaches - Custom user-defined approaches Most importantly, IPython enables all types of parallel applications to be developed, executed, debugged, and monitored _interactively_. Hence, the `I` in IPython. The following are some example use cases for IPython: - Quickly parallelize algorithms that are embarrassingly parallel using a number of simple approaches. Many simple things can be parallelized interactively in one or two lines of code. - Steer traditional MPI applications on a supercomputer from an IPython session on your laptop. - Analyze and visualize large datasets (that could be remote and/or distributed) interactively using IPython and tools like matplotlib. - Develop, test and debug new parallel algorithms (that may use MPI) interactively. - Tie together multiple MPI jobs running on different systems into one giant distributed and parallel system. - Start a parallel job on your cluster and then have a remote collaborator connect to it and pull back data into their local IPython session for plotting and analysis. - Run a set of tasks on a set of CPUs using dynamic load balancing. ```{tip} At the SciPy 2014 conference in Austin, Min Ragan-Kelley presented a complete 4-hour tutorial on the use of these features, and all the materials for the tutorial are now [available online](https://github.com/minrk/IPython-parallel-tutorial/blob/HEAD/Index.ipynb). That tutorial provides an excellent, hands-on oriented complement to the reference documentation presented here. ``` ## Architecture overview ```{figure} figs/wideView.png :width: 300px ``` The IPython architecture consists of four components: - The IPython engine - The IPython hub - The IPython schedulers - The IPython client These components live in the {mod}`ipyparallel` package, which can be installed with {command}`pip` or {command}`conda`. % TODO: include zmq in install_index ### IPython engine The IPython engine is an extension of the IPython kernel for Jupyter. The engine listens for requests over the network, runs code, and returns results. IPython parallel extends the {ref}`Jupyter messaging protocol ` to support native Python object serialization and add some additional commands. When multiple engines are started, parallel and distributed computing becomes possible. ### IPython controller The IPython controller processes provide an interface for working with a set of engines. At a general level, the controller is a collection of processes to which IPython engines and clients can connect. The controller is composed of a {class}`Hub` and a collection of {class}`Schedulers`. These Schedulers are typically run in separate processes on the same machine as the Hub. The controller also provides a single point of contact for users who wish to access the engines connected to the controller. There are different ways of working with a controller. In IPython, all of these models are implemented via the {meth}`.View.apply` method, after constructing {class}`.View` objects to represent subsets of engines. The two primary models for interacting with engines are: - A **Direct** interface, where engines are addressed explicitly - A **LoadBalanced** interface, where the Scheduler is entrusted with assigning work to appropriate engines Advanced users can readily extend the View models to enable other styles of parallelism. ```{note} A single controller and set of engines can be used with multiple models simultaneously. This opens the door for lots of interesting things. ``` #### The Hub The center of an IPython cluster is the Hub. This is the process that keeps track of engine connections, schedulers, clients, as well as all task requests and results. The primary role of the Hub is to facilitate queries of the cluster state, and minimize the necessary information required to establish the many connections involved in connecting new clients and engines. #### Schedulers All actions that can be performed on the engine go through a Scheduler. While the engines themselves block when user code is run, the schedulers hide that from the user to provide a fully asynchronous interface to a set of engines. ### IPython client and views There is one primary object, the {class}`~.parallel.Client`, for connecting to a cluster. For each execution model, there is a corresponding {class}`~.parallel.View`. These views allow users to interact with a set of engines through the interface. Here are the two default views: - The {class}`DirectView` class for explicit addressing. - The {class}`LoadBalancedView` class for destination-agnostic scheduling. ## Getting Started To use IPython for parallel computing, you need to start one instance of the controller and one or more instances of the engine. Initially, it is best to start a controller and engines on a single host. To start a controller and 4 engines on your local machine: ```ipython In [1]: import ipyparallel as ipp In [2]: cluster = ipp.Cluster(n=4) In [3]: await cluster.start_cluster() # or cluster.start_cluster_sync() without await ``` ```{note} Most Cluster methods are async, and all async cluster methods have a blocking version with a `_sync` suffix, e.g. `await cluster.start_cluster()` and `cluster.start_cluster_sync()` ``` You can also launch clusters at the command-line with: ``` $ ipcluster start -n 4 ``` which is equivalent to `ipp.Cluster(n=4, cluster_id="").start_cluster()` and connect to the already-running cluster with {meth}`.Cluster.from_file` ```python cluster = ipp.Cluster.from_file() ``` For a convenient one-liner to start a cluster and connect a client, use {meth}`~.Cluster.start_and_connect_sync`: ```ipython In [1]: import ipyparallel as ipp In [2]: rc = ipp.Cluster(n=4).start_and_connect_sync() ``` More details about starting the IPython controller and engines can be found {ref}`here `. Once you have a handle on a cluster, you can connect a client. To make sure everything is working correctly, try the following commands: ```ipython In [2]: rc = cluster.connect_client_sync() In [3]: rc.wait_for_engines(n=4) In [4]: rc.ids Out[4]: [0, 1, 2, 3] In [5]: rc[:].apply_sync(lambda: "Hello, World") Out[5]: [ 'Hello, World', 'Hello, World', 'Hello, World', 'Hello, World' ] ``` When a client is created with no arguments, the client tries to find the corresponding JSON file in the local `~/.ipython/profile_default/security` directory. Or if you specified a profile, you can use that with the Client. This should cover most cases: ```ipython In [2]: cluster = ipp.Cluster.from_file(profile="myprofile", cluster_id="...") In [3]: rc = cluster.connect_client_sync() ``` If you have put the JSON file in a different location or it has a different name, create the Cluster object like this: ```ipython In [2]: cluster = ipp.Cluster.from_file('/path/to/my/cluster-.json') ``` Remember, a client needs to be able to see the Hub's ports to connect. So if the controller and client are on different machines, you may need to use an ssh server to tunnel access to that machine, in which case you would connect with: ```ipython In [2]: c = ipp.Client('/path/to/my/ipcontroller-client.json', sshserver='me@myhub.example.com') ``` Where 'myhub.example.com' is the url or hostname of the machine on which the Hub process is running (or another machine that has direct access to the Hub's ports). The SSH server may already be specified in ipcontroller-client.json, if the controller was instructed at its launch time. ### Cluster as context manager The {class}`~.ipyparallel.Cluster` and {class}`~.ipyparallel.Client` classes can be used as context managers for easier cleanup of resources. - Entering a `Cluster` context 1. starts the cluster 2. waits for engines to be ready 3. connects a client 4. returns the client - Exiting a `Client` context closes the client's socket connections to the cluster. - Exiting a `Cluster` context shuts down all of the cluster's resources. If you know you won't need your cluster anymore after you use it, use of these context managers is encouraged. For example: ```python import ipyparallel as ipp # start cluster, connect client with ipp.Cluster(n=4) as rc: e_all = rc[:] ar = e_all.apply_sync(task) ar.wait_interactive() results = ar.get() # have results, cluster is shutdown ``` You are now ready to learn more about the {ref}`Direct ` and {ref}`LoadBalanced ` interfaces to the controller. [zeromq]: https://zeromq.org/ ipython-ipyparallel-14e3c43/docs/source/tutorial/process.md000066400000000000000000000740171520071063500241530ustar00rootroot00000000000000(parallel-process)= # Starting the IPython controller and engines To use IPython for parallel computing, you need to start an IPython cluster. This includes one instance of the controller and one or more instances of the engine. The controller and each engine can run on different machines or on the same machine. Any mechanism for starting processes that can communicate over the network Broadly speaking, there are two ways of going about starting a controller and engines: - As managed processes, using {class}`.Cluster` objects. This includes via the {command}`ipcluster` command. - In a more manual way using the {command}`ipcontroller` and {command}`ipengine` commands directly. Starting with IPython Parallel 7, some features are only available when using the `Cluster` API, so this is encouraged. Such features include collective interrupts, signaling support, restart APIs, and improved crash handling. This document describes both of these methods. We recommend that new users start with the `Cluster` API within scripts or notebooks. ## General considerations Before delving into the details about how you can start a controller and engines using the various methods, we outline some of the general issues that come up when starting the controller and engines. These things come up no matter which method you use to start your IPython cluster. If you are running engines on multiple machines, you will likely need to instruct the controller to listen for connections on an external interface. This can be done by specifying the `ip` argument on the command-line, or the `IPController.ip` configurable in {file}`ipcontroller_config.py`, or the `controller_ip` argument when creating a Cluster: If your machines are on a trusted network, you can safely instruct the controller to listen on all interfaces with: ```python cluster = ipp.Cluster(controller_ip='*') ``` or ``` $> ipcontroller --ip="*" ``` Or you can set the same behavior as the default by adding the following line to your {file}`ipcontroller_config.py`: ```python c.IPController.ip = '*' # c.IPController.location = 'controllerhost.tld' ``` :::{note} `--ip=*` instructs ZeroMQ to listen on all interfaces, but it does not contain the IP needed for engines / clients to know where the controller is. This can be specified with the `--location` argument, such as `--location=10.0.0.1`, or `--location=server.local`, the specific IP address or hostname of the controller, as seen from engines and/or clients. IPython uses `socket.gethostname()` for this value by default, but it may not always be the right value. Check the `location` field in your connection files if you are having connection trouble. ::: ```{versionchanged} 6.1 Support hostnames in location, in addition to ip addresses. ``` ```{note} Due to the lack of security in ZeroMQ, the controller will only listen for connections on localhost by default. If you see Timeout errors on engines or clients, then the first thing you should check is the ip address the controller is listening on, and make sure that it is visible from the timing out machine. ``` ```{seealso} Our [notes](security) on security in the new parallel computing code. ``` Let's say that you want to start the controller on `host0` and engines on hosts `host1`-`hostn`. The following steps are then required: 1. Start the controller on `host0` by running {command}`ipcontroller` on `host0`. The controller must be instructed to listen on an interface visible to the engine machines, via the `ip` command-line argument or `IPController.ip` in {file}`ipcontroller_config.py`. 2. Make the JSON file ({file}`ipcontroller-engine.json`) created by the controller on `host0` available on hosts `host1`-`hostn`. 3. Start the engines on hosts `host1`-`hostn` by running {command}`ipengine`. This command may have to be told where the JSON file ({file}`ipcontroller-engine.json`) is located. At this point, the controller and engines will be connected. By default, the JSON files created by the controller are put into the {file}`$IPYTHONDIR/profile_default/security` directory. If the engines share a filesystem with the controller, step 2 can be skipped as the engines will automatically look at that location. The final step required to use the running controller from a client is to move the JSON file {file}`ipcontroller-client.json` from `host0` to any host where clients will be run. If these file are put into the {file}`IPYTHONDIR/profile_default/security` directory of the client's host, they will be found automatically. Otherwise, the full path to them has to be passed to the client's constructor. ## Managing `Clusters` The {class}`~.ipyparallel.Cluster` class provides a managed way of starting a controller and engines in the following situations: 1. When the controller and engines are all run on localhost. This is useful for testing or running on a multicore computer. 2. When engines are started using the {command}`mpiexec` command that comes with most MPI [^cite_mpi] implementations 3. When engines are started using the PBS [^cite_pbs] batch system (or other `qsub` systems, such as SGE). 4. When the controller is started on localhost and the engines are started on remote nodes using {command}`ssh`. Under the hood, `Cluster` objects ultimately launch {command}`ipcontroller` and {command}`ipengine` processes to perform the steps described above. The simplest way to use clusters requires no configuration, and will launch a controller and a number of engines on the local machine. For instance, to start one controller and 4 engines on localhost: ```python cluster = ipp.Cluster(n=4) cluster.start_cluster_sync() ``` ## Configuring an IPython cluster Cluster configurations are stored as `profiles`. You can create a new profile with: ``` $ ipython profile create --parallel --profile=myprofile ``` This will create the directory {file}`IPYTHONDIR/profile_myprofile`, and populate it with the default configuration files for the three IPython cluster commands. Once you edit those files, you can continue to call ipcluster/ipcontroller/ipengine with no arguments beyond `profile=myprofile`, and any configuration will be maintained. There is no limit to the number of profiles you can have, so you can maintain a profile for each of your common use cases. The default profile will be used whenever the profile argument is not specified, so edit {file}`IPYTHONDIR/profile_default/*_config.py` to represent your most common use case. The configuration files are loaded with commented-out settings and explanations, which should cover most of the available possibilities. Additionally, each profile can have many cluster instances at once, identified by a `cluster_id`. You can see running clusters with: ``` $> ipcluster list ``` ### Using various batch systems with {command}`ipcluster` {command}`ipcluster` has a notion of {class}`Launcher` that can start controllers and engines via some mechanism. Currently supported models include {command}`ssh`, {command}`mpiexec`, and PBS-style (Torque, SGE, LSF, Slurm). In general, these are configured by the {attr}`Cluster.engine_set_launcher_class`, and {attr}`Cluster.controller_launcher_class` configurables, which can be the fully specified object name (e.g. `'ipyparallel.cluster.launcher.LocalControllerLauncher'`), but if you are using IPython's builtin launchers, you can specify a launcher by its short name, e.g: ```python c.Cluster.engine_launcher_class = 'ssh' # which is equivalent to c.Cluster.engine_launcher_class = 'ipyparallel.cluster.launcher.SSHEngineSetLauncher' ``` The shortest form being of particular use on the command line, where all you need to do to get an IPython cluster running with engines started with MPI is: ```bash $> ipcluster start --engines=mpi ``` Assuming that the default MPI configuration is sufficient. ```{note} The Launchers and configuration are designed in such a way that advanced users can subclass and configure them to fit their own system that we have not yet supported ``` ### Writing custom Launchers TODO: example writing custom Launchers (ipcluster-mpi)= ### Using IPython Parallel with MPI The mpiexec/mpirun mode is useful if: 1. You have MPI installed. 2. Your systems are configured to use the {command}`mpiexec` or {command}`mpirun` commands to start MPI processes. you can usually start with MPI pretty readily without creating a profile. ```python cluster = ipp.Cluster(engines="mpi", n=4) client = cluster.start_and_connect_sync() ``` This does the following: 1. Starts the IPython controller on current host. 2. Uses {command}`mpiexec` to start 4 engines. More details on using MPI with IPython can be found {ref}`here `. ### Starting IPython Parallel on a traditional cluster For cases that require more extensive configuration, IPython can use "profiles" to collect related configuration. These profiles have names, and are located by default in your .ipython directory. IPython supports several batch systems, including PBS, LSF, Slurm, SGE, and HTCondor. Many "PBS-like" systems can be supported by configuring the PBSLauncher. Additional configuration options can be found in the BatchSystemLauncher section of {file}`ipcluster_config`. We'll use PBS as our example here, but all batch system launchers are configured the same way. We will start by creating a fresh profile: ``` $ ipython profile create --parallel --profile=pbs ``` And in {file}`ipcluster_config.py`, we will select the PBS launchers for the controller and engines: ```python c.Cluster.controller_launcher_class = 'pbs' c.Cluster.engine_launcher_class = 'pbs' ``` IPython does provide simple default batch templates for supported batch systems, but you may need to specify your own. Here is a sample PBS script template: ```bash #!/bin/bash #PBS -N ipython-parallel # set the name of the job (convenient) #PBS -V # export environment variables, required #PBS -j oe # merge stdout and error #PBS -o {output_file} # send output to a file #PBS -l walltime=00:10:00 # max runtime 10 minutes #PBS -l nodes={n//4}:ppn=4 # 4 processes per node #PBS -q {queue} # run on the specified queue cd $PBS_O_WORKDIR export PATH=$HOME/usr/local/bin /usr/local/bin/mpiexec -n {n} {program_and_args} # start the configured program # program_and_args is populated via `engine_args` and other configuration # or you can ignore that and configure the full program in the template /usr/local/bin/mpiexec -n {n} ipengine --debug ``` There are a few important points about this template: 1. This template will be rendered at runtime using IPython's {class}`EvalFormatter`. This is a subclass of {class}`string.Formatter` that allows simple expressions on keys. 2. Instead of putting in the actual number of engines, use the notation `{n}` to indicate the number of engines to be started. You can also use expressions like `{n//4}` in the template to indicate the number of nodes. There will always be `{n}` and `{profile_dir}` variables passed to the formatter. These allow the batch system to know how many engines, and where the configuration files reside. The same is true for the batch queue, with the template variable `{queue}`. 3. Any options to {command}`ipengine` can be given in the batch script template, or in {file}`ipengine_config.py`. 4. Depending on the configuration of you system, you may have to set environment variables in the script template. The controller template should be similar, but simpler: ```bash #!/bin/bash #PBS -N ipython #PBS -V #PBS -j oe #PBS -o {output_file} #PBS -l walltime=00:10:00 #PBS -l nodes=1:ppn=1 #PBS -q {queue} #PBS -V cd $PBS_O_WORKDIR export PATH=$HOME/usr/local/bin {program_and_args} # or ipcontroller --ip=* ``` Once you have created these scripts, save them with names like {file}`pbs.engine.template`. Now you can load them into the {file}`ipcluster_config` with: ```python c.PBSEngineSetLauncher.batch_template_file = "pbs.engine.template" c.PBSControllerLauncher.batch_template_file = "pbs.controller.template" ``` Alternately, you can define the templates as strings inside {file}`ipcluster_config`. Whether you are using your own templates or our defaults, the extra configurables available are the number of engines to launch (`{n}`, and the batch system queue to which the jobs are to be submitted (`{queue}`)). These are configurables, and can be specified in {file}`ipcluster_config`: ```python c.PBSLauncher.queue = 'veryshort.q' c.Cluster.n = 64 ``` Note that assuming you are running PBS on a multi-node cluster, the Controller's default behavior of listening only on localhost is likely too restrictive. In this case, also assuming the nodes are safely behind a firewall, you can instruct the Controller to listen for connections on all its interfaces, by adding in {file}`ipcontroller_config`: ```python c.IPController.ip = '*' ``` You can now run the cluster with: ```python cluster = Cluster(profile="pbs") ``` ``` $ ipcluster start --profile=pbs -n 128 ``` ### Starting a cluster with SSH The SSH mode uses {command}`ssh` to execute {command}`ipengine` on remote nodes and {command}`ipcontroller` can be run remotely as well, or on localhost. ```{note} When using this mode it highly recommended that you have set up SSH keys and are using ssh-agent [^cite_ssh] for password-less logins. ``` As usual, we start by creating a clean profile: ``` $ ipython profile create --parallel --profile=ssh ``` To use this mode, select the SSH launchers in {file}`ipcluster_config.py`: ```python c.Cluster.engine_launcher_class = 'ssh' # or 'sshproxy' # and if the Controller is also to be remote: c.Cluster.controller_launcher_class = 'ssh' ``` The controller's remote location and configuration can be specified: ```python # Set the user and hostname for the controller # c.SSHControllerLauncher.hostname = 'controller.example.com' # c.SSHControllerLauncher.user = os.environ.get('USER','username') # Set the arguments to be passed to ipcontroller # note that remotely launched ipcontroller will not get the contents of # the local ipcontroller_config.py unless it resides on the *remote host* # in the location specified by the `profile-dir` argument. # c.SSHControllerLauncher.controller_args = ['--reuse', '--ip=*', '--profile-dir=/path/to/cd'] ``` Engines are specified in a dictionary, by hostname and the number of engines to be run on that host. ```python c.SSHEngineSetLauncher.engines = { 'host1.example.com' : 2, 'host2.example.com' : 5, 'host3.example.com' : (1, ['--profile-dir=/home/different/location']), 'host4.example.com' : {'n': 3, 'engine_args': ['--profile-dir=/away/location'], 'engine_cmd': ['/home/venv/bin/python', '-m', 'ipyparallel.engine']}, 'host5.example.com' : 8 } ``` - The `engines` dict, where the keys are the host we want to run engines on and the value is the number of engines to run on that host. - on host3, the value is a tuple, where the number of engines is first, and the arguments to be passed to {command}`ipengine` are the second element. - on host4, a dictionary configures the engine. The dictionary can be used to specify the number of engines to be run on that host `n`, the engine arguments `engine_args`, as well as the engine command itself `engine_cmd`. This is particularly useful for virtual environments on heterogeneous clusters where the location of the python executable might vary from host to host. For engines without explicitly specified arguments, the default arguments are set in a single location: ```python c.SSHEngineSetLauncher.engine_args = ['--profile-dir=/path/to/profile_ssh'] ``` Consideration of SSH mode of {command}`ipcluster` under Windows: - After installing `OpenSSH` server and `python` (including `ipyparallel`) on all cluster machines, an SSH cluster can be set up via {command}`ipcluster` without limitations. - Although, Microsoft provides a specific `OpenSSH` installer, it uses an quite old version of `OpenSSH`. Therefore, it is highly recommended to install the latest version from [Win32-OpenSSH in Github](https://github.com/PowerShell/Win32-OpenSSH) #### Moving files with SSH SSH launchers will try to move connection files, controlled by the `to_send` and `to_fetch` configurables. If your machines are on a shared filesystem, this step is unnecessary, and can be skipped by setting these to empty lists: ```python c.SSHLauncher.to_send = [] c.SSHLauncher.to_fetch = [] ``` If our default guesses about paths don't work for you, or other files should be moved, you can manually specify these lists as tuples of `(local_path, remote_path)` for `to_send`, and `(remote_path, local_path)` for `to_fetch`. If you do specify these lists explicitly, IPython _will not_ automatically send connection files, so you must include this yourself if they should still be sent/retrieved. ### Starting the controller and engines on different hosts When the controller and engines are running on different hosts, things are slightly more complicated, but the underlying ideas are the same: 1. Start the controller on a host using {command}`ipcontroller`. The controller must be instructed to listen on an interface visible to the engine machines, via the `ip` command-line argument or `IPController.ip` in {file}`ipcontroller_config.py`: ``` $ ipcontroller --ip=192.168.1.16 ``` ```python # in ipcontroller_config.py IPController.ip = '192.168.1.16' ``` 2. Copy {file}`ipcontroller-engine.json` from {file}`IPYTHONDIR/profile_/security` on the controller's host to the host where the engines will run. 3. Use {command}`ipengine` on the engine's hosts to start the engines. The only thing you have to be careful of is to tell {command}`ipengine` where the {file}`ipcontroller-engine.json` file is located. There are two ways you can do this: - Put {file}`ipcontroller-engine.json` in the {file}`IPYTHONDIR/profile_/security` directory on the engine's host, where it will be found automatically. - Call {command}`ipengine` with the `--file=full_path_to_the_file` flag. The `file` flag works like this: ``` $ ipengine --file=/path/to/my/ipcontroller-engine.json ``` ```{note} If the controller's and engine's hosts all have a shared file system ({file}`IPYTHONDIR/profile_/security` is the same on all of them), then no paths need to be specified or files copied. ``` #### SSH Tunnels If your engines are not on the same LAN as the controller, or you are on a highly restricted network where your nodes cannot see each others ports, then you can use SSH tunnels to connect engines to the controller. ```{note} This does not work in all cases. Manual tunnels may be an option, but are highly inconvenient. Support for manual tunnels will be improved. ``` You can instruct all engines to use ssh, by specifying the ssh server in {file}`ipcontroller-engine.json` This will be specified if you give the `--enginessh=user@example.com` argument when starting {command}`ipcontroller`. Or you can specify an ssh server on the command-line when starting an engine: ``` $> ipengine --profile=foo --ssh=my.login.node ``` For example, if your system is totally restricted, then all connections will be loopback, and ssh tunnels will be used to connect engines to the controller: ``` [node1] $> ipcontroller --enginessh=node1 [node2] $> ipengine [node3] $> ipcluster engines --n=4 ``` Or if you want to start many engines on each node, the command `ipcluster engines --n=4` without any configuration is equivalent to running ipengine 4 times. ### An example using ipcontroller/engine with ssh No configuration files are necessary to use ipcontroller/engine in an SSH environment without a shared filesystem. You need to make sure that the controller is listening on an interface visible to the engines, and move the connection file from the controller to the engines. 1. start the controller, listening on an ip-address visible to the engine machines: ``` [controller.host] $ ipcontroller --ip=192.168.1.16 [IPController] Using existing profile dir: u'/Users/me/.ipython/profile_default' [IPController] Hub listening on tcp://192.168.1.16:63320 for registration. [IPController] Hub using DB backend: 'ipyparallel.controller.dictdb.DictDB' [IPController] hub::created hub [IPController] writing connection info to /Users/me/.ipython/profile_default/security/ipcontroller-client.json [IPController] writing connection info to /Users/me/.ipython/profile_default/security/ipcontroller-engine.json [IPController] task::using Python leastload Task scheduler [IPController] Heartmonitor started [IPController] Creating pid file: /Users/me/.ipython/profile_default/pid/ipcontroller.pid Scheduler started [leastload] ``` 2. on each engine, fetch the connection file with scp: ``` [engine.host.n] $ scp controller.host:.ipython/profile_default/security/ipcontroller-engine.json ./ ``` ```{note} The log output of ipcontroller above shows you where the json files were written. They will be in {file}`~/.ipython` under {file}`profile_default/security/ipcontroller-engine.json` ``` 3. start the engines, using the connection file: ``` [engine.host.n] $ ipengine --file=./ipcontroller-engine.json ``` A couple of notes: - You can avoid having to fetch the connection file every time by adding `--reuse` flag to ipcontroller, which instructs the controller to read the previous connection file for connection info, rather than generate a new one with randomized ports. - In step 2, if you fetch the connection file directly into the security dir of a profile, then you need not specify its path directly, only the profile (assumes the path exists, otherwise you must create it first): ``` [engine.host.n] $ scp controller.host:.ipython/profile_default/security/ipcontroller-engine.json ~/.ipython/profile_ssh/security/ [engine.host.n] $ ipengine --profile=ssh ``` Of course, if you fetch the file into the default profile, no arguments must be passed to ipengine at all. - Note that ipengine _did not_ specify the ip argument. In general, it is unlikely for any connection information to be specified at the command-line to ipengine, as all of this information should be contained in the connection file written by ipcontroller. ### Make JSON files persistent At fist glance it may seem that that managing the JSON files is a bit annoying. Going back to the house and key analogy, copying the JSON around each time you start the controller is like having to make a new key every time you want to unlock the door and enter your house. As with your house, you want to be able to create the key (or JSON file) once, and then use it at any point in the future. To do this, the only thing you have to do is specify the `--reuse` flag, so that the connection information in the JSON files remains accurate: ``` $ ipcontroller --reuse ``` Then copy the JSON files over the first time and you are set. You can start and stop the controller and engines any many times as you want in the future, as long as you make sure to tell the controller to reuse the file. ```{note} You may ask the question: what ports does the controller listen on if you don't tell is to use specific ones? The default is to use high random port numbers. We do this for two reasons: i) to increase security through obscurity and ii) to multiple controllers on a given host to start and automatically use different ports. ``` ### Log files All of the components of IPython have log files associated with them. These log files can be extremely useful in debugging problems with IPython and can be found in the directory {file}`IPYTHONDIR/profile_/log`. Sending the log files to us will often help us to debug any problems. ### Configuring `ipcontroller` The IPython Controller takes its configuration from the file {file}`ipcontroller_config.py` in the active profile directory. #### Ports and addresses In many cases, you will want to configure the Controller's network identity. By default, the Controller listens only on loopback, which is the most secure but often impractical. To instruct the controller to listen on a specific interface, you can set the {attr}`IPController.ip` trait. To listen on all interfaces, specify: ```python c.IPController.ip = '*' ``` When connecting to a Controller that is listening on loopback or behind a firewall, it may be necessary to specify an SSH server to use for tunnels, and the external IP of the Controller. If you specified that the IPController listen on loopback, or all interfaces, then IPython will try to guess the external IP. If you are on a system with VM network devices, or many interfaces, this guess may be incorrect. In these cases, you will want to specify the 'location' of the Controller. This is the IP of the machine the Controller is on, as seen by the clients, engines, or the SSH server used to tunnel connections. For example, to set up a cluster with a Controller on a work node, using ssh tunnels through the login node, an example {file}`ipcontroller_config.py` might contain: ```python # allow connections on all interfaces from engines # engines on the same node will use loopback, while engines # from other nodes will use an external IP c.IPController.ip = '*' # you typically only need to specify the location when there are extra # interfaces that may not be visible to peer nodes (e.g. VM interfaces) c.IPController.location = '10.0.1.5' # or to get an automatic value, try this: import socket hostname = socket.gethostname() # alternate choices for hostname include `socket.getfqdn()` # or `socket.gethostname() + '.local'` ex_ip = socket.gethostbyname_ex(hostname)[-1][-1] c.IPController.location = ex_ip # now instruct clients to use the login node for SSH tunnels: c.IPController.ssh_server = 'login.mycluster.net' ``` After doing this, your {file}`ipcontroller-client.json` file will look something like this: ```python { "url":"tcp:\/\/*:43447", "exec_key":"9c7779e4-d08a-4c3b-ba8e-db1f80b562c1", "ssh":"login.mycluster.net", "location":"10.0.1.5" } ``` Then this file will be all you need for a client to connect to the controller, tunneling SSH connections through login.mycluster.net. #### Database Backend The Hub stores all messages and results passed between Clients and Engines. For large and/or long-running clusters, it would be unreasonable to keep all of this information in memory. For this reason, we have two database backends: [^cite_mongodb] via [PyMongo], and SQLite with the stdlib {py:mod}`sqlite`. MongoDB is our design target, and the dict-like model it uses has driven our design. As far as we are concerned, BSON can be considered essentially the same as JSON, adding support for binary data and datetime objects, and any new database backend must support the same data types. ```{seealso} MongoDB [BSON doc]( https://bsonspec.org) ``` To use one of these backends, you must set the {attr}`IPController.db_class` trait: ```python # for a simple dict-based in-memory implementation, use dictdb # This is the default and the fastest, since it doesn't involve the filesystem c.IPController.db_class = 'ipyparallel.controller.dictdb.DictDB' # To use MongoDB: c.IPController.db_class = 'ipyparallel.controller.mongodb.MongoDB' # and SQLite: c.IPController.db_class = 'ipyparallel.controller.sqlitedb.SQLiteDB' # You can use NoDB to disable the database altogether, in case you don't need # to reuse tasks or results, and want to keep memory consumption under control. c.IPController.db_class = 'ipyparallel.controller.dictdb.NoDB' ``` When using the proper databases, you can allow for tasks to persist from one session to the next by specifying the MongoDB database or SQLite table in which tasks are to be stored. The default is to use a table named for the Hub's Session, which is a UUID, and thus different every time. ```python # To keep persistent task history in MongoDB: c.MongoDB.database = 'tasks' # and in SQLite: c.SQLiteDB.table = 'tasks' ``` Since MongoDB servers can be running remotely or configured to listen on a particular port, you can specify any arguments you may need to the PyMongo {py:class}`~.pymongo.Connection`: ```python # positional args to pymongo.Connection c.MongoDB.connection_args = [] # keyword args to pymongo.Connection c.MongoDB.connection_kwargs = {} ``` But sometimes you are moving lots of data around quickly, and you don't need that information to be stored for later access, even by other Clients to this same session. For this case, we have a dummy database, which doesn't store anything. This lets the Hub stay small in memory, at the obvious expense of being able to access the information that would have been stored in the database (used for task resubmission, requesting results of tasks you didn't submit, etc.). To use this backend, pass `--nodb` to {command}`ipcontroller` on the command-line, or specify the {class}`NoDB` class in your {file}`ipcontroller_config.py` as described above. ```{seealso} For more information on the database backends, see the {ref}`db backend reference `. ``` ### Configuring `ipengine` The IPython Engine takes its configuration from the file {file}`ipengine_config.py` The Engine itself also has some amount of configuration. Most of this has to do with initializing MPI or connecting to the controller. To instruct the Engine to initialize with an MPI environment set up by mpi4py, add: ```python c.MPI.use = 'mpi4py' ``` In this case, the Engine will use our default mpi4py init script to set up the MPI environment prior to execution. We have default init scripts for mpi4py and pytrilinos. If you want to specify your own code to be run at the beginning, specify `c.MPI.init_script`. You can also specify a file or python command to be run at startup of the Engine: ```python c.IPEngine.startup_script = u'/path/to/my/startup.py' c.IPEngine.startup_command = 'import numpy, scipy, mpi4py' ``` These commands/files will be run again, after each It's also useful on systems with shared filesystems to run the engines in some scratch directory. This can be set with: ```python c.IPEngine.work_dir = u'/path/to/scratch/' ``` [^cite_mpi]: Message Passing Interface (MPI) [^cite_mongodb]: MongoDB database [^cite_pbs]: Portable Batch System [^cite_ssh]: SSH-Agent [pymongo]: https://pymongo.readthedocs.io ipython-ipyparallel-14e3c43/docs/source/tutorial/task.md000066400000000000000000000402001520071063500234220ustar00rootroot00000000000000(parallel-task)= # The IPython task interface The task interface to the cluster presents the engines as a fault tolerant, dynamic load-balanced system of workers. Unlike the direct interface, in the task interface the user has no direct access to individual engines. By allowing the IPython scheduler to assign work, this interface is simultaneously simpler and more powerful. Best of all, the user can use both of these interfaces running at the same time to take advantage of their respective strengths. When the user can break up the user's work into segments that do not depend on previous execution, the task interface is ideal. But it also has more power and flexibility, allowing the user to guide the distribution of jobs, without having to assign tasks to engines explicitly. ## Creating a `LoadBalancedView` As always, the first step is to start a cluster and connect a {class}`.Client` instance. For more detailed information about starting the controller and engines, see our {ref}`introduction ` to using IPython for parallel computing. ```ipython In [1]: import ipyparallel as ipp In [2]: cluster = ipp.Cluster() In [3]: cluster.start_cluster_sync() In [4]: rc = cluster.connect_client_sync() In [5]: rc.wait_for_engines(4) ``` For load-balanced execution, we will make use of a {class}`.LoadBalancedView` object, which can be constructed via the client's {meth}`~.Client.load_balanced_view` method: ```ipython In [4]: lview = rc.load_balanced_view() # default load-balanced view ``` ```{seealso} For more information, see the in-depth explanation of {ref}`Views `. ``` ## Quick and easy parallelism In many cases, you want to apply a Python function to a sequence of objects, but _in parallel_. Like the direct interface, these can be implemented via the task interface. The exact same tools can perform these actions in load-balanced ways as well as multiplexed ways: a parallel version of {py:func}`map` and {func}`@view.parallel` function decorator. If one specifies the argument `balanced=True`, then they are dynamically load balanced. Thus, if the execution time per item varies significantly, you should use the versions in the task interface. ### Parallel map To load-balance {func}`map`, use a LoadBalancedView: ```ipython In [62]: lview.block = True In [63]: serial_result = map(lambda x:x**10, range(32)) In [64]: parallel_result = lview.map(lambda x:x**10, range(32)) In [65]: serial_result==parallel_result Out[65]: True ``` ### Parallel function decorator Parallel functions are just like normal functions, but they can be called on sequences and _in parallel_. The direct interface provides a decorator that turns any Python function into a parallel function: ```ipython In [10]: @lview.parallel() ....: def f(x): ....: return 10.0 * x ** 4 ....: In [11]: f.map(range(32)) # this is done in parallel Out[11]: [0.0, 10.0, 160.0, ...] ``` (parallel-dependencies)= ## Dependencies Often, pure atomic load-balancing is too primitive for your work. In these cases, you may want to associate some kind of `Dependency` that describes when, where, or whether a task can be run. In IPython, we provide two types of dependencies: [Functional Dependencies] and [Graph Dependencies] ```{note} It is important to note that the pure ZeroMQ scheduler does not support dependencies, and you will see errors or warnings if you try to use dependencies with the pure scheduler. ``` ### Functional Dependencies Functional dependencies are used to determine whether a given engine is capable of running a particular task. This is implemented via a special {class}`Exception` class, {class}`UnmetDependency`, found in `ipyparallel.error`. Its use is very simple: if a task fails with an UnmetDependency exception, then the scheduler, instead of relaying the error up to the client like any other error, catches the error, and submits the task to a different engine. This will repeat indefinitely, and a task will never be submitted to a given engine a second time. You can manually raise the {class}`UnmetDependency` yourself, but IPython has provided some decorators for facilitating this behavior. There are two decorators and a class used for functional dependencies: ```ipython In [9]: import ipyparallel as ipp ``` #### @ipp.require The simplest sort of dependency is requiring that a Python module is available. The `@ipp.require` decorator lets you define a function that will only run on engines where names you specify are importable: ```ipython In [10]: @ipp.require('numpy', 'zmq') ....: def myfunc(): ....: return dostuff() ``` Now, any time you apply {func}`myfunc`, the task will only run on a machine that has numpy and pyzmq available, and when {func}`myfunc` is called, numpy and zmq will be imported. You can also require specific objects, not just module names: ```python def foo(a): return a * a @ipp.require(foo) def bar(b): return foo(b) @ipp.require(bar) def baz(c, d): return bar(c) - bar(d) view.apply_sync(baz, 4, 5) ``` #### @ipp.depend The `@ipp.depend` decorator lets you decorate any function with any _other_ function to evaluate the dependency. The dependency function will be called at the start of the task, and if it returns `False`, then the dependency will be considered unmet, and the task will be assigned to another engine. If the dependency returns _anything other than `False`_, the rest of the task will continue. ```ipython In [10]: def platform_specific(plat): ....: import sys ....: return sys.platform == plat In [11]: @ipp.depend(platform_specific, 'darwin') ....: def mactask(): ....: do_mac_stuff() In [12]: @ipp.depend(platform_specific, 'nt') ....: def wintask(): ....: do_windows_stuff() ``` In this case, any time you apply `mactask`, it will only run on an macOS machine. `@ipp.depend` is like `apply`, in that it has a `@ipp.depend(f, *args, **kwargs)` signature. #### dependents You don't have to use the decorators on your tasks, if for instance you may want to run tasks with a single function but varying dependencies, you can directly construct the {class}`dependent` object that the decorators use: ```ipython In [13]: def mytask(*args): ....: dostuff() In [14]: mactask = dependent(mytask, platform_specific, 'darwin') # this is the same as decorating the declaration of mytask with @ipp.depend # but you can do it again: In [15]: wintask = dependent(mytask, platform_specific, 'nt') # in general: In [16]: t = dependent(f, g, *dargs, **dkwargs) # is equivalent to: In [17]: @ipp.depend(g, *dargs, **dkwargs) ....: def t(a, b, c): ....: # contents of f ``` ### Graph Dependencies Sometimes you want to restrict the time and/or location to run a given task as a function of the time and/or location of other tasks. This is implemented via a subclass of {class}`set`, called a {class}`Dependency`. A Dependency is a set of `msg_ids` corresponding to tasks, and a few attributes to guide how to decide when the Dependency has been met. The switches we provide for interpreting whether a given dependency set has been met: any|all : Whether the dependency is considered met if _any_ of the dependencies are done, or only after _all_ of them have finished. This is set by a Dependency's {attr}`all` boolean attribute, which defaults to `True`. success \[default: True\] : Whether to consider tasks that succeeded as fulfilling dependencies. failure \[default\] : Whether to consider tasks that failed as fulfilling dependencies. using `failure=True,success=False` is useful for setting up cleanup tasks, to be run only when tasks have failed. Sometimes you want to run a task after another, but only if that task succeeded. In this case, `success` should be `True` and `failure` should be `False`. However sometimes you may not care whether the task succeeds, and always want the second task to run, in which case you should use `success=failure=True`. The default behavior is to only use successes. There are other switches for interpretation that are made at the _task_ level. These are specified via keyword arguments to the view's {meth}`~.LoadBalancedView.apply` method. after,follow : You may want to run a task _after_ a given set of dependencies have been run and/or run it _where_ another set of dependencies are met. To support this, every task has an `after` dependency to restrict time, and a `follow` dependency to restrict destination. timeout : You may also want to set a time-limit for how long the scheduler should wait before a task's dependencies are met. This is done via a `timeout`, which defaults to 0, which indicates that the task should never timeout. If the timeout is reached, and the scheduler still hasn't been able to assign the task to an engine, the task will fail with a {class}`DependencyTimeout`. ```{note} Dependencies only work within the task scheduler. You cannot instruct a load-balanced task to run after a job submitted via the MUX interface. ``` The simplest form of Dependencies is with `all=True, success=True, failure=False`. In these cases, you can skip using Dependency objects, and pass msg_ids or AsyncResult objects as the `follow` and `after` keywords to {meth}`client.apply`: ```ipython In [14]: client.block = False In [15]: ar = lview.apply(f, args, kwargs) In [16]: ar2 = lview.apply(f2) In [17]: with lview.temp_flags(after=[ar, ar2]): ....: ar3 = lview.apply(f3) In [18]: with lview.temp_flags(follow=[ar], timeout=2.5) ....: ar4 = lview.apply(f3) ``` ```{seealso} Some parallel workloads can be described as a [Directed Acyclic Graph](https://en.wikipedia.org/wiki/Directed_acyclic_graph), or DAG. See {ref}`DAG Dependencies ` for an example demonstrating how to use map a NetworkX DAG onto task dependencies. ``` #### Impossible Dependencies The schedulers do perform some analysis on graph dependencies to determine whether they are not possible to be met. If the scheduler does discover that a dependency cannot be met, then the task will fail with an {class}`ImpossibleDependency` error. This way, if the scheduler realized that a task can never be run, it won't sit indefinitely in the scheduler clogging the pipeline. The basic cases that are checked: - depending on nonexistent messages - `follow` dependencies were run on more than one machine and `all=True` - any dependencies failed and `all=True, success=True, failures=False` - all dependencies failed and `all=False, success=True, failure=False` ```{warning} This analysis has not been proven to be rigorous, so it is likely possible for tasks to become impossible to run in obscure situations, so a timeout may be a good choice. ``` ## Retries and Resubmit ### Retries Another flag for tasks is `retries`. This is an integer, specifying how many times a task should be resubmitted after failure. This is useful for tasks that should still run if their engine was shutdown, or may have some statistical chance of failing. The default is to not retry tasks. ### Resubmit Sometimes you may want to re-run a task. This could be because it failed for some reason, and you have fixed the error, or because you want to restore the cluster to an interrupted state. For this, the {class}`Client` has a {meth}`rc.resubmit` method. This takes one or more msg_ids, and returns an {class}`AsyncHubResult` for the result(s). You cannot resubmit a task that is pending - only those that have finished, either successful or unsuccessful. (parallel-schedulers)= ## Schedulers There are a variety of valid ways to determine where jobs should be assigned in a load-balancing situation. In IPython, we support several standard schemes, and even make it easy to define your own. The scheme can be selected via the `scheme` argument to {command}`ipcontroller`, or in the {attr}`TaskScheduler.schemename` attribute of a controller config object. The built-in routing schemes: To select one of these schemes: ``` $ ipcontroller --scheme= for instance: $ ipcontroller --scheme=lru ``` lru: Least Recently Used > Always assign work to the least-recently-used engine. A close relative of > round-robin, it will be fair with respect to the number of tasks, agnostic > with respect to runtime of each task. plainrandom: Plain Random > Randomly picks an engine on which to run. twobin: Two-Bin Random > **Requires numpy** > > Pick two engines at random, and use the LRU of the two. This is known to be better > than plain random in many cases, but requires a small amount of computation. leastload: Least Load > **This is the default scheme** > > Always assign tasks to the engine with the fewest outstanding tasks (LRU breaks tie). weighted: Weighted Two-Bin Random > **Requires numpy** > > Pick two engines at random using the number of outstanding tasks as inverse weights, > and use the one with the lower load. ### Greedy Assignment Tasks can be assigned greedily as they are submitted. If their dependencies are met, they will be assigned to an engine right away, and multiple tasks can be assigned to an engine at a given time. This limit is set with the `TaskScheduler.hwm` (high water mark) configurable in your {file}`ipcontroller_config.py` config file, with: ```python # the most common choices are: c.TaskSheduler.hwm = 0 # (minimal latency, default in IPython < 0.13) # or c.TaskScheduler.hwm = 1 # (most-informed balancing, default in ≥ 0.13) ``` In IPython \< 0.13, the default is 0, or no-limit. That is, there is no limit to the number of tasks that can be outstanding on a given engine. This greatly benefits the latency of execution, because network traffic can be hidden behind computation. However, this means that workload is assigned without knowledge of how long each task might take, and can result in poor load-balancing, particularly for submitting a collection of heterogeneous tasks all at once. You can limit this effect by setting hwm to a positive integer, 1 being maximum load-balancing (a task will never be waiting if there is an idle engine), and any larger number being a compromise between load-balancing and latency-hiding. In practice, some users have been confused by having this optimization on by default, so the default value has been changed to 1 in IPython 0.13. This can be slower, but has more obvious behavior and won't result in assigning too many tasks to some engines in heterogeneous cases. ### Pure ZMQ Scheduler For maximum throughput, the 'pure' scheme is not Python at all, but a C-level {class}`MonitoredQueue` from PyZMQ, which uses a ZeroMQ `DEALER` socket to perform all load-balancing. This scheduler does not support any of the advanced features of the Python {class}`.Scheduler`. Disabled features when using the ZMQ Scheduler: - Engine unregistration : Task farming will be disabled if an engine unregisters. Further, if an engine is unregistered during computation, the scheduler may not recover. - Dependencies : Since there is no Python logic inside the Scheduler, routing decisions cannot be made based on message content. - Early destination notification : The Python schedulers know which engine gets which task, and notify the Hub. This allows graceful handling of Engines coming and going. There is no way to know where ZeroMQ messages have gone, so there is no way to know what tasks are on which engine until they _finish_. This makes recovery from engine shutdown very difficult. ```{note} TODO: performance comparisons ``` ## More details The {class}`LoadBalancedView` has many more powerful features that allow quite a bit of flexibility in how tasks are defined and run. The next places to look are in the following classes: - {class}`~ipyparallel.client.view.LoadBalancedView` - {class}`~ipyparallel.client.asyncresult.AsyncResult` - {meth}`~ipyparallel.client.view.LoadBalancedView.apply` - {mod}`~ipyparallel.controller.dependency` The following is an overview of how to use these classes together: 1. Create a {class}`Client` and {class}`LoadBalancedView` 2. Define some functions to be run as tasks 3. Submit your tasks to using the {meth}`apply` method of your {class}`LoadBalancedView` instance. 4. Use {meth}`.Client.get_result` to get the results of the tasks, or use the {meth}`AsyncResult.get` method of the results to wait for and then receive the results. ```{seealso} A demo of {ref}`DAG Dependencies ` with NetworkX and IPython. ``` ipython-ipyparallel-14e3c43/eslint.config.mjs000066400000000000000000000033211520071063500213230ustar00rootroot00000000000000import js from "@eslint/js"; import { defineConfig } from "eslint/config"; import tseslint from "typescript-eslint"; import prettierRecommended from "eslint-plugin-prettier/recommended"; import globals from "globals"; import jupyterPlugin from "@jupyter/eslint-plugin"; // workaround: plugin recommended config doesn't enable itself for (var cfg of jupyterPlugin.configs.recommended) { cfg.plugins = { jupyter: jupyterPlugin, }; } export default defineConfig([ { ignores: ["node_modules", "dist", "coverage", "**/*.js", "**/*.d.ts"], }, js.configs.recommended, tseslint.configs.recommended, jupyterPlugin.configs.recommended, { files: ["**/*.ts", "**/*.tsx"], plugins: { jupyter: jupyterPlugin, }, languageOptions: { globals: { ...globals.browser, ...globals.es2015, ...globals.node, }, parserOptions: { project: "tsconfig.eslint.json", sourceType: "module", }, }, rules: { "@typescript-eslint/naming-convention": [ "error", { selector: "interface", format: ["PascalCase"], custom: { regex: "^I[A-Z]", match: true, }, }, ], "@typescript-eslint/no-unused-vars": ["warn", { args: "none" }], "@typescript-eslint/no-explicit-any": "off", "@typescript-eslint/no-namespace": "off", "@typescript-eslint/no-use-before-define": "off", "@typescript-eslint/quotes": [ "error", "single", { avoidEscape: true, allowTemplateLiterals: false }, ], curly: ["error", "all"], eqeqeq: "error", "prefer-arrow-callback": "error", }, }, prettierRecommended, ]); ipython-ipyparallel-14e3c43/examples000077700000000000000000000000001520071063500235742docs/source/examplesustar00rootroot00000000000000ipython-ipyparallel-14e3c43/hatch_build.py000066400000000000000000000025141520071063500206710ustar00rootroot00000000000000"""Custom build script for hatch backend""" import glob import os import subprocess from hatchling.builders.hooks.plugin.interface import BuildHookInterface class CustomHook(BuildHookInterface): def initialize(self, version, build_data): if self.target_name not in ["wheel", "sdist"]: return cmd = "build:prod" if version == "standard" else "build" osp = os.path here = osp.abspath(osp.dirname(__file__)) lab_path = osp.join(here, 'ipyparallel', 'labextension') if os.environ.get("IPP_DISABLE_JS") == "1": print("Skipping js installation") return # this tells us if labextension is built at all, not if it's up-to-date labextension_built = glob.glob(osp.join(lab_path, "*")) needs_js = True if not osp.isdir(osp.join(here, ".git")): print("Installing from a dist, not a repo") # not in a repo, probably installing from sdist # could be git-archive, though! # skip rebuilding js if it's already present if labextension_built: print(f"Not regenerating labextension in {lab_path}") needs_js = False if needs_js: subprocess.check_call(['jlpm'], cwd=here) subprocess.check_call(['jlpm', 'run', cmd], cwd=here) ipython-ipyparallel-14e3c43/install.json000066400000000000000000000002671520071063500204150ustar00rootroot00000000000000{ "packageManager": "python", "packageName": "ipyparallel", "uninstallInstructions": "Use your Python package manager (pip, conda, etc.) to uninstall the package ipyparallel" } ipython-ipyparallel-14e3c43/ipyparallel/000077500000000000000000000000001520071063500203655ustar00rootroot00000000000000ipython-ipyparallel-14e3c43/ipyparallel/__init__.py000066400000000000000000000056511520071063500225050ustar00rootroot00000000000000"""The IPython ZMQ-based parallel computing interface.""" # Copyright (c) IPython Development Team. # Distributed under the terms of the Modified BSD License. # export return_when constants import os from concurrent.futures import ALL_COMPLETED # noqa from concurrent.futures import FIRST_COMPLETED # noqa from concurrent.futures import FIRST_EXCEPTION # noqa from traitlets.config.configurable import MultipleInstanceError from ._version import __version__ # noqa from ._version import version_info # noqa from .client.asyncresult import * # noqa from .client.client import Client # noqa from .client.remotefunction import * # noqa from .client.view import * # noqa from .cluster import Cluster # noqa from .cluster import ClusterManager # noqa from .controller.dependency import * # noqa from .error import * # noqa from .serialize import * # noqa from .util import interactive # noqa # ----------------------------------------------------------------------------- # Functions # ----------------------------------------------------------------------------- def bind_kernel(**kwargs): """Bind an Engine's Kernel to be used as a full IPython kernel. This allows a running Engine to be used simultaneously as a full IPython kernel with the QtConsole or other frontends. This function returns immediately. """ from ipykernel.kernelapp import IPKernelApp from ipyparallel.engine.app import IPEngine if IPEngine.initialized(): try: app = IPEngine.instance() except MultipleInstanceError: pass else: return app.bind_kernel(**kwargs) raise RuntimeError("bind_kernel must be called from an IPEngine instance") def register_joblib_backend(name='ipyparallel', make_default=False): """Register the default ipyparallel backend for joblib.""" from .joblib import register return register(name=name, make_default=make_default) # nbextension installation (requires notebook ≥ 4.2) def _jupyter_server_extension_paths(): return [{'module': 'ipyparallel'}] def _jupyter_nbextension_paths(): return [ { 'section': 'tree', 'src': 'nbextension/static', 'dest': 'ipyparallel', 'require': 'ipyparallel/main', } ] def _jupyter_labextension_paths(): return [ { "src": "labextension", "dest": "ipyparallel-labextension", } ] def _load_jupyter_server_extension(app): """Load the server extension""" # localte the appropriate APIHandler base class before importing our handler classes from .nbextension.base import get_api_handler get_api_handler(app) from .nbextension.handlers import load_jupyter_server_extension return load_jupyter_server_extension(app) # backward-compat load_jupyter_server_extension = _load_jupyter_server_extension _NONINTERACTIVE = os.getenv("IPP_NONINTERACTIVE", "") not in {"", "0"} ipython-ipyparallel-14e3c43/ipyparallel/_async.py000066400000000000000000000060651520071063500222220ustar00rootroot00000000000000"""Async utilities""" import asyncio import concurrent.futures import inspect import threading from functools import partial from tornado.ioloop import IOLoop from ipyparallel.util import _OutputProducingThread as Thread def _asyncio_run(coro): """Like asyncio.run, but works when there's no event loop""" # for now: using tornado for broader compatibility with FDs, # e.g. when using the only partially functional default # Proactor on windows loop = IOLoop(make_current=False) try: return loop.run_sync(lambda: asyncio.ensure_future(coro)) finally: loop.close() class AsyncFirst: """Wrapper class that defines synchronous `_sync` method wrappers around async-native methods. Every coroutine method automatically gets an `_sync` alias that runs it synchronously. """ _async_thread = None def _thread_main(self): loop = self._thread_loop = IOLoop(make_current=False) loop.add_callback(self._loop_started.set) loop.start() def _in_thread(self, async_f, *args, **kwargs): """Run an async function in a background thread""" if self._async_thread is None: self._loop_started = threading.Event() self._async_thread = Thread(target=self._thread_main, daemon=True) self._async_thread.start() self._loop_started.wait(timeout=5) future = concurrent.futures.Future() async def thread_callback(): try: future.set_result(await async_f(*args, **kwargs)) except Exception as e: future.set_exception(e) self._thread_loop.add_callback(thread_callback) return future.result() def _synchronize(self, async_f, *args, **kwargs): """Run a method synchronously Uses asyncio.run if asyncio is not running, otherwise puts it in a background thread """ try: loop = asyncio.get_running_loop() except RuntimeError: # not in a running loop loop = None if loop: return self._in_thread(async_f, *args, **kwargs) else: return _asyncio_run(async_f(*args, **kwargs)) def __getattr__(self, name): if name.endswith("_sync"): # lazily define `_sync` method wrappers for coroutine methods async_name = name[:-5] async_method = super().__getattribute__(async_name) if not inspect.iscoroutinefunction(async_method): raise AttributeError(async_name) return partial(self._synchronize, async_method) return super().__getattribute__(name) def __dir__(self): attrs = super().__dir__() seen = set() for cls in self.__class__.mro(): for name, value in cls.__dict__.items(): if name in seen: continue seen.add(name) if inspect.iscoroutinefunction(value): async_name = name + "_sync" attrs.append(async_name) return attrs ipython-ipyparallel-14e3c43/ipyparallel/_version.py000066400000000000000000000011641520071063500225650ustar00rootroot00000000000000import re __version__ = "9.2.0" # matches tbump regex in pyproject.toml _version_regex = re.compile( r''' (?P\d+) \. (?P\d+) \. (?P\d+) (?P

((a|b|rc)\d+))?
  (\.
    (?Pdev\d*)
  )?
  ''',
    re.VERBOSE,
)

_version_fields = _version_regex.match(__version__).groupdict()
version_info = tuple(
    field
    for field in (
        int(_version_fields["major"]),
        int(_version_fields["minor"]),
        int(_version_fields["patch"]),
        _version_fields["pre"],
        _version_fields["dev"],
    )
    if field is not None
)

__all__ = ["__version__", "version_info"]
ipython-ipyparallel-14e3c43/ipyparallel/apps/000077500000000000000000000000001520071063500213305ustar00rootroot00000000000000ipython-ipyparallel-14e3c43/ipyparallel/apps/__init__.py000066400000000000000000000000001520071063500234270ustar00rootroot00000000000000ipython-ipyparallel-14e3c43/ipyparallel/apps/baseapp.py000066400000000000000000000166001520071063500233200ustar00rootroot00000000000000"""
The Base Application class for ipyparallel apps
"""

import logging
import os
import re
import sys

from IPython.core.application import BaseIPythonApplication
from IPython.core.application import base_aliases as base_ip_aliases
from IPython.core.application import base_flags as base_ip_flags
from IPython.utils.path import expand_path
from jupyter_client.session import Session
from tornado.ioloop import IOLoop
from traitlets import Bool, Instance, Unicode, default, observe
from traitlets.config.application import LevelFormatter, catch_config_error

from ipyparallel import util

from .._version import __version__

# -----------------------------------------------------------------------------
# Module errors
# -----------------------------------------------------------------------------


class PIDFileError(Exception):
    pass


# -----------------------------------------------------------------------------
# Main application
# -----------------------------------------------------------------------------
base_aliases = {}
base_aliases.update(base_ip_aliases)
base_aliases.update(
    {
        'work-dir': 'BaseParallelApplication.work_dir',
        'log-to-file': 'BaseParallelApplication.log_to_file',
        'clean-logs': 'BaseParallelApplication.clean_logs',
        'log-url': 'BaseParallelApplication.log_url',
        'cluster-id': 'BaseParallelApplication.cluster_id',
    }
)

base_flags = {
    'log-to-file': (
        {'BaseParallelApplication': {'log_to_file': True}},
        "send log output to a file",
    )
}
base_flags.update(base_ip_flags)


class BaseParallelApplication(BaseIPythonApplication):
    """The base Application for ipyparallel apps

    Primary extensions to BaseIPythonApplication:

    * work_dir
    * remote logging via pyzmq
    * IOLoop instance
    """

    version = __version__

    _deprecated_classes = None

    def init_crash_handler(self):
        # disable crash handler from IPython
        pass

    def _log_level_default(self):
        # temporarily override default_log_level to INFO
        return logging.INFO

    def _log_format_default(self):
        """override default log format to include time"""
        return "%(asctime)s.%(msecs).03d [%(name)s]%(highlevel)s %(message)s"

    work_dir = Unicode(
        os.getcwd(), config=True, help='Set the working dir for the process.'
    )

    @observe('work_dir')
    def _work_dir_changed(self, change):
        self.work_dir = str(expand_path(change['new']))

    log_to_file = Bool(config=True, help="whether to log to a file")

    clean_logs = Bool(
        False, config=True, help="whether to cleanup old logfiles before starting"
    )

    log_url = Unicode(
        '', config=True, help="The ZMQ URL of the iplogger to aggregate logging."
    )

    cluster_id = Unicode(
        '',
        config=True,
        help="""String id to add to runtime files, to prevent name collisions when
        using multiple clusters with a single profile simultaneously.

        When set, files will be named like: 'ipcontroller--engine.json'

        Since this is text inserted into filenames, typical recommendations apply:
        Simple character strings are ideal, and spaces are not recommended (but should
        generally work).
        """,
    )

    loop = Instance(IOLoop)

    def _loop_default(self):
        return IOLoop.current()

    session = Instance(Session)

    @default("session")
    def _default_session(self):
        return Session(parent=self)

    aliases = base_aliases
    flags = base_flags

    @catch_config_error
    def initialize(self, argv=None):
        """initialize the app"""
        util._disable_session_extract_dates()
        self.init_config_from_env()
        super().initialize(argv)
        self.init_deprecated_config()
        self.to_work_dir()
        self.reinit_logging()

    def init_config_from_env(self):
        """Load any configuration from environment variables"""
        if "IPP_SESSION_KEY" in os.environ:
            self.config.Session.key = os.environ["IPP_SESSION_KEY"].encode("ascii")
        if "IPP_CLUSTER_ID" in os.environ:
            self.cluster_id = os.environ["IPP_CLUSTER_ID"]
        if "IPP_PROFILE_DIR" in os.environ:
            self.config.ProfileDir.location = os.environ["IPP_PROFILE_DIR"]

    def init_deprecated_config(self):
        if not self._deprecated_classes:
            return
        deprecated_config_found = False
        new_classname = self.__class__.__name__
        for deprecated_classname in self._deprecated_classes:
            if deprecated_classname in self.config:
                cfg = self.config[deprecated_classname]
                new_config = self.config[new_classname]
                for key, deprecated_value in list(cfg.items()):
                    if key in new_config:
                        new_value = new_config[key]
                        if new_value != deprecated_value:
                            self.log.warning(
                                f"Ignoring c.{deprecated_classname}.{key} = {deprecated_value}, overridden by c.{new_classname}.{key} = {new_value}"
                            )
                    else:
                        self.log.warning(
                            f"c.{deprecated_classname}.{key} is deprecated in ipyparallel 7, use c.{new_classname}.{key} = {deprecated_value}"
                        )
                        new_config[key] = deprecated_value
                        cfg.pop(key)
                        deprecated_config_found = True

        if deprecated_config_found:
            # reload config
            self.update_config(self.config)

    def to_work_dir(self):
        wd = self.work_dir
        if wd != os.getcwd():
            os.chdir(wd)
            self.log.info(f"Changing to working dir: {wd}")
        # This is the working dir by now.
        sys.path.insert(0, '')

    def reinit_logging(self):
        # Remove old log files
        log_dir = self.profile_dir.log_dir
        if self.clean_logs:
            for f in os.listdir(log_dir):
                if re.match(rf'{self.name}-\d+\.(log|err|out)', f):
                    try:
                        os.remove(os.path.join(log_dir, f))
                    except OSError:
                        # probably just conflict from sibling process
                        # already removing it
                        pass
        if self.log_to_file:
            # Start logging to the new log file
            log_filename = f"{self.name}-{self.cluster_id}-{os.getpid()}.log"
            logfile = os.path.join(log_dir, log_filename)
            if sys.__stderr__:
                print(f"Sending logs to {logfile}", file=sys.__stderr__)
            open_log_file = open(logfile, 'w')
        else:
            open_log_file = None
        if open_log_file is not None:
            while self.log.handlers:
                self.log.removeHandler(self.log.handlers[0])
            self._log_handler = logging.StreamHandler(open_log_file)
            self.log.addHandler(self._log_handler)
        else:
            self._log_handler = self.log.handlers[0]
        # Add timestamps to log format:
        self._log_formatter = LevelFormatter(self.log_format, datefmt=self.log_datefmt)
        self._log_handler.setFormatter(self._log_formatter)
        # do not propagate log messages to root logger
        # ipcluster app will sometimes print duplicate messages during shutdown
        # if this is 1 (default):
        self.log.propagate = False
ipython-ipyparallel-14e3c43/ipyparallel/apps/ipclusterapp.py000066400000000000000000000004171520071063500244170ustar00rootroot00000000000000import warnings

warnings.warn(f"{__name__} is deprecated in ipyparallel 7. Use ipyparallel.cluster")

from ipyparallel.cluster.app import IPCluster, IPClusterStart, main  # noqa

IPClusterApp = IPCluster
launch_new_instance = main

if __name__ == "__main__":
    main()
ipython-ipyparallel-14e3c43/ipyparallel/apps/ipcontrollerapp.py000066400000000000000000000004061520071063500251170ustar00rootroot00000000000000import warnings

warnings.warn(f"{__name__} is deprecated in ipyparallel 7. Use ipyparallel.controller")

from ipyparallel.controller.app import IPController, main

IPControllerApp = IPController
launch_new_instance = main

if __name__ == "__main__":
    main()
ipython-ipyparallel-14e3c43/ipyparallel/apps/ipengineapp.py000066400000000000000000000003621520071063500242020ustar00rootroot00000000000000import warnings

warnings.warn(f"{__name__} is deprecated in ipyparallel 7. Use ipyparallel.engine")

from ipyparallel.engine.app import IPEngine, main

IPEngineApp = IPEngine
launch_new_instance = main

if __name__ == "__main__":
    main()
ipython-ipyparallel-14e3c43/ipyparallel/apps/iploggerapp.py000077500000000000000000000043341520071063500242220ustar00rootroot00000000000000#!/usr/bin/env python
"""
A simple IPython logger application
"""

from IPython.core.profiledir import ProfileDir
from traitlets import Dict

from ipyparallel.apps.baseapp import (
    BaseParallelApplication,
    base_aliases,
    catch_config_error,
)
from ipyparallel.apps.logwatcher import LogWatcher

# -----------------------------------------------------------------------------
# Module level variables
# -----------------------------------------------------------------------------

#: The default config file name for this application
_description = """Start an IPython logger for parallel computing.

IPython controllers and engines (and your own processes) can broadcast log messages
by registering a `zmq.log.handlers.PUBHandler` with the `logging` module. The
logger can be configured using command line options or using a cluster
directory. Cluster directories contain config, log and security files and are
usually located in your ipython directory and named as "profile_name".
See the `profile` and `profile-dir` options for details.
"""


# -----------------------------------------------------------------------------
# Main application
# -----------------------------------------------------------------------------
aliases = {}
aliases.update(base_aliases)
aliases.update(dict(url='LogWatcher.url', topics='LogWatcher.topics'))


class IPLoggerApp(BaseParallelApplication):
    name = 'iplogger'
    description = _description
    classes = [LogWatcher, ProfileDir]
    aliases = Dict(aliases)

    @catch_config_error
    def initialize(self, argv=None):
        super().initialize(argv)
        self.init_watcher()

    def init_watcher(self):
        try:
            self.watcher = LogWatcher(parent=self, log=self.log)
        except BaseException:
            self.log.error("Couldn't start the LogWatcher", exc_info=True)
            self.exit(1)
        self.log.info(f"Listening for log messages on {self.watcher.url!r}")

    def start(self):
        self.watcher.start()
        try:
            self.watcher.loop.start()
        except KeyboardInterrupt:
            self.log.critical("Logging Interrupted, shutting down...\n")


launch_new_instance = IPLoggerApp.launch_instance


if __name__ == '__main__':
    launch_new_instance()
ipython-ipyparallel-14e3c43/ipyparallel/apps/launcher.py000066400000000000000000000003751520071063500235100ustar00rootroot00000000000000"""Deprecated import for ipyparallel.cluster.launcher"""

import warnings

from ipyparallel.cluster.launcher import *  # noqa

warnings.warn(
    f"{__name__} is deprecated in ipyparallel 7. Use ipyparallel.cluster.launcher.",
    DeprecationWarning,
)
ipython-ipyparallel-14e3c43/ipyparallel/apps/logwatcher.py000066400000000000000000000060051520071063500240420ustar00rootroot00000000000000"""
A logger object that consolidates messages incoming from ipcluster processes.
"""

import logging

import zmq
from jupyter_client.localinterfaces import localhost
from tornado import ioloop
from traitlets import Instance, List, Unicode
from traitlets.config.configurable import LoggingConfigurable
from zmq.eventloop import zmqstream


class LogWatcher(LoggingConfigurable):
    """A simple class that receives messages on a SUB socket, as published
    by subclasses of `zmq.log.handlers.PUBHandler`, and logs them itself.

    This can subscribe to multiple topics, but defaults to all topics.
    """

    # configurables
    topics = List(
        [''],
        config=True,
        help="The ZMQ topics to subscribe to. Default is to subscribe to all messages",
    )
    url = Unicode(config=True, help="ZMQ url on which to listen for log messages")

    def _url_default(self):
        return f'tcp://{localhost()}:20202'

    # internals
    stream = Instance('zmq.eventloop.zmqstream.ZMQStream', allow_none=True)

    context = Instance(zmq.Context)

    def _context_default(self):
        return zmq.Context.instance()

    loop = Instance('tornado.ioloop.IOLoop')

    def _loop_default(self):
        return ioloop.IOLoop.current()

    def __init__(self, **kwargs):
        super().__init__(**kwargs)
        s = self.context.socket(zmq.SUB)
        s.bind(self.url)
        self.stream = zmqstream.ZMQStream(s, self.loop)
        self.subscribe()
        self.on_trait_change(self.subscribe, 'topics')

    def start(self):
        self.stream.on_recv(self.log_message)

    def stop(self):
        self.stream.stop_on_recv()

    def subscribe(self):
        """Update our SUB socket's subscriptions."""
        self.stream.setsockopt(zmq.UNSUBSCRIBE, '')
        if '' in self.topics:
            self.log.debug("Subscribing to: everything")
            self.stream.setsockopt(zmq.SUBSCRIBE, '')
        else:
            for topic in self.topics:
                self.log.debug(f"Subscribing to: {topic!r}")
                self.stream.setsockopt(zmq.SUBSCRIBE, topic)

    def _extract_level(self, topic_str):
        """Turn 'engine.0.INFO.extra' into (logging.INFO, 'engine.0.extra')"""
        topics = topic_str.split('.')
        for idx, t in enumerate(topics):
            level = getattr(logging, t, None)
            if level is not None:
                break

        if level is None:
            level = logging.INFO
        else:
            topics.pop(idx)

        return level, '.'.join(topics)

    def log_message(self, raw):
        """receive and parse a message, then log it."""
        if len(raw) != 2 or '.' not in raw[0]:
            self.log.error(f"Invalid log message: {raw}")
            return
        else:
            topic, msg = raw
            # don't newline, since log messages always newline:
            topic, level_name = topic.rsplit('.', 1)
            level, topic = self._extract_level(topic)
            if msg[-1] == '\n':
                msg = msg[:-1]
            self.log.log(level, f"[{topic}] {msg}")
ipython-ipyparallel-14e3c43/ipyparallel/client/000077500000000000000000000000001520071063500216435ustar00rootroot00000000000000ipython-ipyparallel-14e3c43/ipyparallel/client/__init__.py000066400000000000000000000000001520071063500237420ustar00rootroot00000000000000ipython-ipyparallel-14e3c43/ipyparallel/client/_joblib.py000066400000000000000000000043521520071063500236210ustar00rootroot00000000000000"""joblib parallel backend for IPython Parallel"""

# Copyright (c) IPython Development Team.
# Distributed under the terms of the Modified BSD License.
from joblib.parallel import AutoBatchingMixin, ParallelBackendBase

import ipyparallel as ipp


class IPythonParallelBackend(AutoBatchingMixin, ParallelBackendBase):
    def __init__(self, view=None, **kwargs):
        super().__init__(**kwargs)
        self._cluster_owner = False
        self._client_owner = False
        if view is None:
            self._client_owner = True
            try:
                # load the default cluster
                cluster = ipp.Cluster.from_file()
            except FileNotFoundError:
                # other load errors?
                cluster = self._cluster = ipp.Cluster()
                self._cluster_owner = True
                cluster.start_cluster_sync()
            else:
                # cluster running, ensure some engines are, too
                if not cluster.engines:
                    cluster.start_engines_sync()
            rc = cluster.connect_client_sync()
            rc.wait_for_engines(cluster.n or 1)
            view = rc.load_balanced_view()

            # use cloudpickle or dill for closures, if available.
            # joblib tends to create closures default pickle can't handle.
            try:
                import cloudpickle  # noqa
            except ImportError:
                try:
                    import dill  # noqa
                except ImportError:
                    pass
                else:
                    view.client[:].use_dill()
            else:
                view.client[:].use_cloudpickle()
        self._view = view

    def effective_n_jobs(self, n_jobs):
        """A View can run len(view) jobs at a time"""
        return len(self._view)

    def terminate(self):
        """Close the client if we created it"""
        if self._client_owner:
            self._view.client.close()
        if self._cluster_owner:
            self._cluster.stop_cluster_sync()

    def apply_async(self, func, callback=None):
        """Schedule a func to be run"""
        future = self._view.apply_async(func)
        if callback:
            future.add_done_callback(lambda f: callback(f.result()))
        return future
ipython-ipyparallel-14e3c43/ipyparallel/client/asyncresult.py000066400000000000000000001222041520071063500245720ustar00rootroot00000000000000"""AsyncResult objects for the client"""

# Copyright (c) IPython Development Team.
# Distributed under the terms of the Modified BSD License.
import concurrent.futures
import sys
import threading
import time
import warnings
from concurrent.futures import ALL_COMPLETED, FIRST_COMPLETED, FIRST_EXCEPTION, Future
from contextlib import contextmanager
from datetime import datetime
from functools import lru_cache, partial
from itertools import chain, repeat
from threading import Event

import zmq
from decorator import decorator
from IPython import get_ipython
from IPython.display import display, display_pretty, publish_display_data

from ipyparallel import error
from ipyparallel.util import _parse_date, compare_datetimes, progress, utcnow

from .futures import MessageFuture, multi_future


def _raw_text(s):
    display_pretty(s, raw=True)


_default = object()

# global empty tracker that's always done:
finished_tracker = zmq.MessageTracker()


@decorator
def check_ready(f, self, *args, **kwargs):
    """Check ready state prior to calling the method."""
    self.wait(0)
    if not self._ready:
        raise TimeoutError("result not ready")
    return f(self, *args, **kwargs)


_metadata_keys = []
# threading.TIMEOUT_MAX new in 3.2
_FOREVER = getattr(threading, 'TIMEOUT_MAX', int(1e6))


class AsyncResult(Future):
    """Class for representing results of non-blocking calls.

    Extends the interfaces of :py:class:`multiprocessing.pool.AsyncResult`
    and :py:class:`concurrent.futures.Future`.
    """

    msg_ids = None
    _targets = None
    _tracker = None
    _single_result = False
    owner = False
    _last_display_prefix = ""
    _stream_trailing_newline = True
    _chunk_sizes = None

    def __init__(
        self,
        client,
        children,
        fname='unknown',
        targets=None,
        owner=False,
        return_exceptions=False,
        chunk_sizes=None,
    ):
        super().__init__()
        if not isinstance(children, list):
            children = [children]
            self._single_result = True
        else:
            self._single_result = False

        self._return_exceptions = return_exceptions
        self._chunk_sizes = chunk_sizes or {}

        if isinstance(children[0], str):
            self.msg_ids = children
            self._children = []
        else:
            self._children = children
            self.msg_ids = [f.msg_id for f in children]

        self._client = client
        self._fname = fname
        self._targets = targets
        self.owner = owner

        self._ready = False
        self._ready_event = Event()
        self._output_ready = False
        self._output_event = Event()
        self._sent_event = Event()
        self._success = None
        if self._children:
            self._metadata = [f.output.metadata for f in self._children]
        else:
            self._metadata = [self._client.metadata[id] for id in self.msg_ids]
        self._init_futures()

    def _init_futures(self):
        """Build futures for results and output; hook up callbacks"""
        if not self._children:
            for msg_id in self.msg_ids:
                future = self._client._futures.get(msg_id, None)
                if not future:
                    result = self._client.results.get(msg_id, _default)
                    # result resides in local cache, construct already-resolved Future
                    if result is not _default:
                        future = MessageFuture(msg_id)
                        future.output = Future()
                        future.output.metadata = self.client.metadata[msg_id]
                        future.set_result(result)
                        future.output.set_result(None)
                if not future:
                    raise KeyError(f"No Future or result for msg_id: {msg_id}")
                self._children.append(future)

        self._result_future = multi_future(self._children)

        self._sent_future = multi_future([f.tracker for f in self._children])
        self._sent_future.add_done_callback(self._handle_sent)

        self._output_future = multi_future(
            [self._result_future] + [f.output for f in self._children]
        )
        # on completion of my constituents, trigger my own resolution
        self._result_future.add_done_callback(self._resolve_result)
        self._output_future.add_done_callback(self._resolve_output)
        self.add_done_callback(self._finalize_result)

    def _iopub_streaming_output_callback(self, eid, msg_future, msg):
        """Callback for iopub messages registered during AsyncResult.stream_output()"""
        msg_type = msg['header']['msg_type']
        ip = get_ipython()
        if ip is not None:
            in_kernel = getattr(ip, 'kernel', None) is not None
        else:
            in_kernel = False

        if msg_type == 'stream':
            msg_content = msg['content']
            stream_name = msg_content['name']

            if in_kernel:
                parent_msg_id = msg.get('parent_header', {}).get('msg_id', '')
                display_id = f"{parent_msg_id}-{stream_name}"
                md = msg_future.output.metadata
                full_stream = md[stream_name]
                if display_id in self._already_streamed:
                    update = True
                else:
                    self._already_streamed[display_id] = True
                    update = False
                publish_display_data(
                    {
                        "text/plain": f"[{stream_name}:{eid}] " + full_stream,
                    },
                    transient={"display_id": display_id},
                    update=update,
                )
                return
            else:
                stream = getattr(sys, stream_name, sys.stdout)
                self._display_stream(
                    msg_content['text'],
                    f'[{stream_name}:{eid}] ',
                    file=stream,
                )
        elif msg_type == "error":
            content = msg['content']
            if 'engine_info' not in content:
                content['engine_info'] = {
                    "engine_id": msg_future.output.metadata.engine_id,
                    "engine_uuid": msg_future.output.metadata.engine_uuid,
                    # always execute?
                    "method": msg_future.header["msg_type"].partition("_")[0],
                }

            err = self._client._unwrap_exception(msg['content'])
            self._streamed_errors += 1
            if self._streamed_errors <= error.CompositeError.tb_limit:
                print("\n".join(err.render_traceback()), file=sys.stderr)
            else:
                # single-line error after we hit the limit
                print(err, file=sys.stderr)
        elif msg_type == "execute_result":
            # mock ExecuteReply from execute_result on iopub
            from .client import ExecuteReply

            er = ExecuteReply(
                msg_id=msg_future.msg_id,
                content=msg['content'],
                metadata=msg_future.output.metadata,
            )
            display(er)

        if ip is None:
            return

        if msg_type == 'display_data':
            msg_content = msg['content']
            _raw_text(f'[output:{eid}]')
            self._republish_displaypub(msg_content, eid)

    @contextmanager
    def stream_output(self):
        """Stream output for this result as it arrives.

        Returns a context manager, during which output is streamed.
        """

        # Keep a handle on the futures so we can remove the callback later
        future_callbacks = {}
        self._already_streamed = {}
        self._stream_trailing_newline = True
        self._last_display_prefix = ""
        self._streamed_errors = 0

        for eid, msg_future in zip(self._targets, self._children):
            iopub_callback = partial(
                self._iopub_streaming_output_callback, eid, msg_future
            )
            future_callbacks[msg_future] = iopub_callback
            md = msg_future.output.metadata

            msg_future.iopub_callbacks.append(iopub_callback)
            # FIXME: there's still a race here
            # registering before publishing means possible duplicates,
            # while after means lost output

            # publish already-captured output immediately
            for name in ("stdout", "stderr"):
                text = md[name]
                if text:
                    iopub_callback(
                        {
                            "header": {"msg_type": "stream"},
                            "content": {"name": name, "text": text},
                        }
                    )
            for output in md["outputs"]:
                iopub_callback(
                    {
                        "header": {"msg_type": "display_data"},
                        "content": output,
                    }
                )
            if md["execute_result"]:
                iopub_callback(
                    {
                        "header": {"msg_type": "execute_result"},
                        "content": md["execute_result"],
                    }
                )

        try:
            yield
        finally:
            # clear stream cache
            self._already_streamed = {}

            # Remove the callbacks
            for msg_future, iopub_callback in future_callbacks.items():
                msg_future.iopub_callbacks.remove(iopub_callback)

    def __repr__(self):
        if self._ready:
            if self._success:
                state = "finished"
            else:
                state = "failed"
        else:
            state = "pending"
        return f"<{self.__class__.__name__}({self._fname}): {state}>"

    def __dir__(self):
        keys = dir(self.__class__)
        if not _metadata_keys:
            from .client import Metadata

            _metadata_keys.extend(Metadata().keys())
        keys.extend(_metadata_keys)
        return keys

    def _reconstruct_result(self, res):
        """Reconstruct our result from actual result list (always a list)

        Override me in subclasses for turning a list of results
        into the expected form.
        """
        if self._single_result:
            return res[0]
        else:
            return res

    def get(self, timeout=None, return_exceptions=None, return_when=None):
        """Return the result when it arrives.

        Arguments:

        timeout : int [default None]
            If `timeout` is not ``None`` and the result does not arrive within
            `timeout` seconds then ``TimeoutError`` is raised. If the
            remote call raised an exception then that exception will be reraised
            by get() inside a `RemoteError`.
        return_exceptions : bool [default False]
            If True, return Exceptions instead of raising them.
        return_when : None, ALL_COMPLETED, or FIRST_EXCEPTION
            FIRST_COMPLETED is not supported, and treated the same as ALL_COMPLETED.
            See :py:func:`concurrent.futures.wait` for documentation.

            When return_when=FIRST_EXCEPTION, will raise immediately on the first exception,
            rather than waiting for all results to finish before reporting errors.

        .. versionchanged:: 8.0
            Added `return_when` argument.
        """
        if return_when == FIRST_COMPLETED:
            # FIRST_COMPLETED unsupported, same as ALL_COMPLETED
            warnings.warn(
                "Ignoring unsupported AsyncResult.get(return_when=FIRST_COMPLETED)",
                UserWarning,
                stacklevel=2,
            )
            return_when = None
        elif return_when == ALL_COMPLETED:
            # None avoids call to .split() and is a tiny bit more efficient
            return_when = None

        if not self.ready():
            wait_result = self.wait(timeout, return_when=return_when)

        if return_exceptions is None:
            # default to attribute, if AsyncResult was created with return_exceptions=True
            return_exceptions = self._return_exceptions

        if self._ready:
            if self._success:
                return self.result()
            else:
                e = self.exception()
                if return_exceptions:
                    return self._reconstruct_result(self._raw_results)
                else:
                    raise e
        else:
            if return_when == FIRST_EXCEPTION:
                # this should only occur if there was an exception
                # any other situation should have triggered the ready branch above

                done, pending = wait_result
                for ar in done:
                    if not ar._success:
                        return ar.get(return_exceptions=return_exceptions)
            raise TimeoutError("Result not ready.")

    def _check_ready(self):
        if not self.ready():
            raise TimeoutError("Result not ready.")

    def ready(self):
        """Return whether the call has completed."""
        if not self._ready:
            self.wait(0)

        return self._ready

    def wait_for_output(self, timeout=-1):
        """Wait for our output to be complete.

        AsyncResult.wait only waits for the result,
        which may arrive before output is complete.
        """
        if self._output_ready:
            return True
        if timeout and timeout < 0:
            timeout = None
        return self._output_event.wait(timeout)

    def _resolve_output(self, f=None):
        """Callback that fires when outputs are ready"""
        if self.owner:
            [self._client.metadata.pop(mid, None) for mid in self.msg_ids]
        self._output_ready = True
        self._output_event.set()

    @classmethod
    def join(cls, *async_results):
        """Join multiple AsyncResults into one

        Inverse of .split(),
        used for rejoining split results in wait.

        .. versionadded:: 8.0
        """
        if not async_results:
            raise ValueError("Must specify at least one AsyncResult to join")
        first = async_results[0]
        if len(async_results) == 1:
            # only one AsyncResult, nothing to join
            return first

        return cls(
            client=first._client,
            fname=first._fname,
            return_exceptions=first._return_exceptions,
            children=list(chain(*(ar._children for ar in async_results))),
            targets=list(chain(*(ar._targets for ar in async_results))),
            owner=False,
        )

    @lru_cache
    def split(self):
        """Split an AsyncResult

        An AsyncResult object that represents multiple messages
        can be split to wait for individual results
        This can be passed to `concurrent.futures.wait` and friends
        to get partial results.

        .. versionadded:: 8.0
        """
        if len(self._children) == 1:
            # nothing to do if we're already representing a single message
            return (self,)
            self.owner = False

        if self._targets is None:
            _targets = repeat(None)
        else:
            _targets = self._targets

        flatten = not isinstance(self, AsyncMapResult)
        return tuple(
            AsyncResult(
                client=self._client,
                children=msg_future if flatten else [msg_future],
                targets=[engine_id],
                fname=self._fname,
                owner=False,
                return_exceptions=self._return_exceptions,
            )
            for engine_id, msg_future in zip(_targets, self._children)
        )

    def wait(self, timeout=-1, return_when=None):
        """Wait until the result is available or until `timeout` seconds pass.

        Arguments:

        timeout (int):
            The timeout in seconds. `-1` or None indicate an infinite timeout.
        return_when (enum):
            None, ALL_COMPLETED, FIRST_COMPLETED, or FIRST_EXCEPTION.
            Passed to :py:func:`concurrent.futures.wait`.
            If specified and not-None,

        Returns:
            ready (bool):
                For backward-compatibility.
                If `return_when` is None or unspecified,
                returns True if all tasks are done, False otherwise

            (done, pending):
                If `return_when` is any of the constants for :py:func:`concurrent.futures.wait`,
                will return two sets of AsyncResult objects
                representing the completed and still-pending subsets of results,
                matching the return value of `wait` itself.

        .. versionchanged:: 8.0
            Added `return_when`.
        """
        if timeout and timeout < 0:
            timeout = None
        if return_when is None:
            if self._ready:
                return True
            self._ready_event.wait(timeout)
            self.wait_for_output(0)
            return self._ready
        else:
            futures = self.split()
            done, pending = concurrent.futures.wait(
                futures, timeout=timeout, return_when=return_when
            )
            if done:
                self.wait_for_output(0)

            return done, pending

            # # simple cases: all done, or all pending
            # if not pending:
            #     return (None, self)
            # if not done:
            #     return (self, None)

    #
    # # neither set is empty, rejoin two subsets
    # return (self.__class__.join(*done), self.__class__.join(*pending))

    def _resolve_result(self, f=None):
        if self.done():
            return
        if f:
            results = f.result()
        else:
            results = list(map(self._client.results.get, self.msg_ids))

        # store raw results
        self._raw_results = results

        try:
            if self._single_result:
                r = results[0]
                if isinstance(r, Exception):
                    raise r
            else:
                results = self._collect_exceptions(results)
        except Exception as e:
            self._success = False
            self.set_exception(e)
        else:
            self._success = True
            self.set_result(self._reconstruct_result(results))

    def _collect_exceptions(self, results):
        """Wrap Exceptions in a CompositeError

        if self._return_exceptions is True, this is a no-op
        """
        if self._return_exceptions:
            return results
        else:
            return error.collect_exceptions(results, self._fname)

    def _finalize_result(self, f):
        if self.owner:
            [self._client.results.pop(mid, None) for mid in self.msg_ids]
        self._ready = True
        self._ready_event.set()

    def successful(self):
        """Return whether the call completed without raising an exception.

        Will raise ``RuntimeError`` if the result is not ready.
        """
        if not self.ready():
            raise RuntimeError("Cannot check successful() if not done.")
        return self._success

    # ----------------------------------------------------------------
    # Extra methods not in mp.pool.AsyncResult
    # ----------------------------------------------------------------

    def get_dict(self, timeout=-1):
        """Get the results as a dict, keyed by engine_id.

        timeout behavior is described in `get()`.
        """

        results = self.get(timeout)
        if self._single_result:
            results = [results]
        engine_ids = [md['engine_id'] for md in self._metadata]

        rdict = {}
        for engine_id, result in zip(engine_ids, results):
            if engine_id in rdict:
                n_jobs = engine_ids.count(engine_id)
                raise ValueError(
                    f"Cannot build dict, {n_jobs} jobs ran on engine #{engine_id}"
                )
            else:
                rdict[engine_id] = result

        return rdict

    @property
    def r(self):
        """result property wrapper for `get(timeout=-1)`."""
        return self.get()

    _DATE_FIELDS = [
        "submitted",
        "started",
        "completed",
        "received",
    ]

    def _parse_metadata_dates(self):
        """Ensure metadata date fields are parsed on access

        Rather than parsing timestamps from str->dt on receipt,
        parse on access for compatibility.
        """
        for md in self._metadata:
            for key in self._DATE_FIELDS:
                if isinstance(md.get(key, None), str):
                    md[key] = _parse_date(md[key])

    @property
    def metadata(self):
        """property for accessing execution metadata."""
        self._parse_metadata_dates()
        if self._single_result:
            return self._metadata[0]
        else:
            return self._metadata

    @property
    def result_dict(self):
        """result property as a dict."""
        return self.get_dict()

    def __dict__(self):
        return self.get_dict(0)

    def abort(self):
        """
        Abort my tasks, if possible.

        Only tasks that have not started yet can be aborted.

        Raises RuntimeError if already done.
        """
        if self.ready():
            raise RuntimeError("Can't abort, I am already done!")
        return self._client.abort(self.msg_ids, targets=self._targets, block=True)

    def _handle_sent(self, f):
        """Resolve sent Future, build MessageTracker"""
        trackers = f.result()
        trackers = [t for t in trackers if t is not None]
        self._tracker = zmq.MessageTracker(*trackers)
        self._sent_event.set()

    @property
    def sent(self):
        """check whether my messages have been sent."""
        return self._sent_event.is_set() and self._tracker.done

    def wait_for_send(self, timeout=-1):
        """wait for pyzmq send to complete.

        This is necessary when sending arrays that you intend to edit in-place.
        `timeout` is in seconds, and will raise TimeoutError if it is reached
        before the send completes.
        """
        if not self._sent_event.is_set():
            if timeout and timeout < 0:
                # Event doesn't like timeout < 0
                timeout = None
            elif timeout == 0:
                raise TimeoutError("Still waiting to be sent")
            # wait for Future to indicate send having been called,
            # which means MessageTracker is ready.
            tic = time.perf_counter()
            if not self._sent_event.wait(timeout):
                raise TimeoutError("Still waiting to be sent")
            if timeout:
                timeout = max(0, timeout - (time.perf_counter() - tic))
        try:
            if timeout is None:
                # MessageTracker doesn't like timeout=None
                timeout = -1
            return self._tracker.wait(timeout)
        except zmq.NotDone:
            raise TimeoutError("Still waiting to be sent")

    # -------------------------------------
    # dict-access
    # -------------------------------------

    def __getitem__(self, key):
        """getitem returns result value(s) if keyed by int/slice, or metadata if key is str."""
        if isinstance(key, int):
            self._check_ready()
            return self._collect_exceptions([self.result()[key]])[0]
        elif isinstance(key, slice):
            self._check_ready()
            return self._collect_exceptions(self.result()[key])
        elif isinstance(key, str):
            # metadata proxy *does not* require that results are done
            self.wait(0)
            self.wait_for_output(0)
            self._parse_metadata_dates()
            values = [md[key] for md in self._metadata]
            if self._single_result:
                return values[0]
            else:
                return values
        else:
            raise TypeError(
                f"Invalid key type {type(key)!r}, must be 'int','slice', or 'str'"
            )

    def __getattr__(self, key):
        """getattr maps to getitem for convenient attr access to metadata."""
        try:
            return self.__getitem__(key)
        except (TimeoutError, KeyError):
            raise AttributeError(
                f"{self.__class__.__name__!r} object has no attribute {key!r}"
            )

    @staticmethod
    def _wait_for_child(child, evt, timeout=_FOREVER):
        """Wait for a child to be done"""
        if child.done():
            return
        evt.clear()
        child.add_done_callback(lambda f: evt.set())
        evt.wait(timeout)

    # asynchronous iterator:
    def __iter__(self):
        if self._single_result:
            raise TypeError("AsyncResults with a single result are not iterable.")
        try:
            rlist = self.get(0)
        except TimeoutError:
            # wait for each result individually
            evt = Event()
            for child in self._children:
                self._wait_for_child(child, evt=evt)
                result = child.result()
                self._collect_exceptions([result])
                yield result
        else:
            # already done
            yield from rlist

    @lru_cache
    def __len__(self):
        return self._count_chunks(*self.msg_ids)

    @lru_cache
    def _count_chunks(self, *msg_ids):
        """Count the granular tasks"""
        return sum(self._chunk_sizes.setdefault(msg_id, 1) for msg_id in msg_ids)

    # -------------------------------------
    # Sugar methods and attributes
    # -------------------------------------

    def timedelta(self, start, end, start_key=min, end_key=max):
        """compute the difference between two sets of timestamps

        The default behavior is to use the earliest of the first
        and the latest of the second list, but this can be changed
        by passing a different

        Parameters
        ----------
        start : one or more datetime objects (e.g. ar.submitted)
        end : one or more datetime objects (e.g. ar.received)
        start_key : callable
            Function to call on `start` to extract the relevant
            entry [default: min]
        end_key : callable
            Function to call on `end` to extract the relevant
            entry [default: max]

        Returns
        -------
        dt : float
            The time elapsed (in seconds) between the two selected timestamps.
        """
        if not isinstance(start, datetime):
            # handle single_result AsyncResults, where ar.stamp is single object,
            # not a list
            start = start_key(start)
        if not isinstance(end, datetime):
            # handle single_result AsyncResults, where ar.stamp is single object,
            # not a list
            end = end_key(end)
        return compare_datetimes(end, start).total_seconds()

    @property
    def progress(self):
        """the number of tasks which have been completed at this point.

        Fractional progress would be given by 1.0 * ar.progress / len(ar)
        """
        self.wait(0)
        finished_msg_ids = set(self.msg_ids).intersection(self._client.outstanding)
        finished_count = self._count_chunks(*finished_msg_ids)
        return len(self) - finished_count

    @property
    def elapsed(self):
        """elapsed time since initial submission"""
        if self.ready():
            return self.wall_time

        now = submitted = utcnow()
        self._parse_metadata_dates()
        for md in self._metadata:
            stamp = md["submitted"]
            if stamp and stamp < submitted:
                submitted = stamp
        return compare_datetimes(now, submitted).total_seconds()

    @property
    @check_ready
    def serial_time(self):
        """serial computation time of a parallel calculation

        Computed as the sum of (completed-started) of each task
        """
        t = 0
        self._parse_metadata_dates()
        for md in self._metadata:
            t += compare_datetimes(md['completed'], md['started']).total_seconds()
        return t

    @property
    @check_ready
    def wall_time(self):
        """actual computation time of a parallel calculation

        Computed as the time between the latest `received` stamp
        and the earliest `submitted`.

        For similar comparison of other timestamp pairs, check out AsyncResult.timedelta.
        """
        return self.timedelta(self.submitted, self.received)

    def wait_interactive(
        self, interval=0.1, timeout=-1, widget=None, return_when=ALL_COMPLETED
    ):
        """interactive wait, printing progress at regular intervals.

        Parameters
        ----------
        interval : float
            Interval on which to update progress display.
        timeout : float
            Time (in seconds) to wait before raising a TimeoutError.
            -1 (default) means no timeout.
        widget : bool
            default: True if in an IPython kernel (notebook), False otherwise.
            Override default context-detection behavior for whether a widget-based progress bar
            should be used.
        return_when : concurrent.futures.ALL_COMPLETED | FIRST_EXCEPTION | FIRST_COMPLETED
        """
        if timeout and timeout < 0:
            timeout = None
        if return_when == ALL_COMPLETED:
            return_when = None
        N = len(self)
        tic = time.perf_counter()
        progress_bar = progress(widget=widget, total=N, unit='tasks', desc=self._fname)

        finished = self.ready()
        while not finished and (
            timeout is None or time.perf_counter() - tic <= timeout
        ):
            wait_result = self.wait(interval, return_when=return_when)
            progress_bar.update(self.progress - progress_bar.n)
            if return_when is None:
                finished = wait_result
            else:
                done, pending = wait_result
                if return_when == FIRST_COMPLETED:
                    finished = bool(done)
                elif return_when == FIRST_EXCEPTION:
                    finished = (not pending) or any(not ar._success for ar in done)
                else:
                    raise ValueError(f"Unrecognized return_when={return_when!r}")

        progress_bar.update(self.progress - progress_bar.n)
        progress_bar.close()

    def _republish_displaypub(self, content, eid):
        """republish individual displaypub content dicts"""
        ip = get_ipython()
        if ip is None:
            # displaypub is meaningless outside IPython
            return
        md = content['metadata'] or {}
        md['engine'] = eid
        ip.display_pub.publish(data=content['data'], metadata=md)

    def _display_stream(self, text, prefix='', file=None):
        """Redisplay a stream"""
        if not text:
            # nothing to display
            return
        if file is None:
            file = sys.stdout

        end = ""
        if prefix:
            if prefix == self._last_display_prefix:
                # same prefix, no need to re-display
                prefix = ""
            else:
                self._last_display_prefix = prefix

        if prefix and not self._stream_trailing_newline:
            # prefix changed, no trailing newline; insert newline
            pre = "\n"
        else:
            pre = ""

        if prefix:
            sep = "\n"
        else:
            sep = ""

        self._stream_trailing_newline = text.endswith("\n")
        print(f"{pre}{prefix}{sep}{text}", file=file, end="")

    def _display_single_result(self, result_only=False):
        if not result_only:
            self._display_stream(self.stdout)
            self._display_stream(self.stderr, file=sys.stderr)
        if get_ipython() is None:
            # displaypub is meaningless outside IPython
            return

        if not result_only:
            for output in self.outputs:
                self._republish_displaypub(output, self.engine_id)

        if self.execute_result is not None:
            display(self.get())

    @check_ready
    def display_outputs(self, groupby="type", result_only=False):
        """republish the outputs of the computation

        Parameters
        ----------
        groupby : str [default: type]
            if 'type':
                Group outputs by type (show all stdout, then all stderr, etc.):

                [stdout:1] foo
                [stdout:2] foo
                [stderr:1] bar
                [stderr:2] bar
            if 'engine':
                Display outputs for each engine before moving on to the next:

                [stdout:1] foo
                [stderr:1] bar
                [stdout:2] foo
                [stderr:2] bar

            if 'order':
                Like 'type', but further collate individual displaypub
                outputs.  This is meant for cases of each command producing
                several plots, and you would like to see all of the first
                plots together, then all of the second plots, and so on.

        result_only: boolean [default: False]
            Only display the execution result and skip stdout, stderr and
            display-outputs. Usually used when using streaming output
            since these outputs would have already been displayed.
        """
        self.wait_for_output()
        if self._single_result:
            self._display_single_result(result_only=result_only)
            return

        stdouts = self.stdout
        stderrs = self.stderr
        execute_results = self.execute_result
        output_lists = self.outputs
        results = self.get(return_exceptions=True)

        targets = self.engine_id

        if groupby == "engine":
            for eid, stdout, stderr, outputs, r, execute_result in zip(
                targets, stdouts, stderrs, output_lists, results, execute_results
            ):
                if not result_only:
                    self._display_stream(stdout, f'[stdout:{eid}] ')
                    self._display_stream(stderr, f'[stderr:{eid}] ', file=sys.stderr)

                if get_ipython() is None:
                    # displaypub is meaningless outside IPython
                    continue

                if (outputs and not result_only) or execute_result is not None:
                    _raw_text(f'[output:{eid}]')

                if not result_only:
                    for output in outputs:
                        self._republish_displaypub(output, eid)

                if execute_result is not None:
                    display(r)

        elif groupby in ('type', 'order'):
            if not result_only:
                # republish stdout:
                for eid, stdout in zip(targets, stdouts):
                    self._display_stream(stdout, f'[stdout:{eid}] ')

                # republish stderr:
                for eid, stderr in zip(targets, stderrs):
                    self._display_stream(stderr, f'[stderr:{eid}] ', file=sys.stderr)

            if get_ipython() is None:
                # displaypub is meaningless outside IPython
                return

            if not result_only:
                if groupby == 'order':
                    output_dict = {
                        eid: outputs for eid, outputs in zip(targets, output_lists)
                    }
                    N = max(len(outputs) for outputs in output_lists)
                    for i in range(N):
                        for eid in targets:
                            outputs = output_dict[eid]
                            if len(outputs) >= N:
                                _raw_text(f'[output:{eid}]')
                                self._republish_displaypub(outputs[i], eid)
                else:
                    # republish displaypub output
                    for eid, outputs in zip(targets, output_lists):
                        if outputs:
                            _raw_text(f'[output:{eid}]')
                        for output in outputs:
                            self._republish_displaypub(output, eid)

            # finally, add execute_result:
            for eid, r, execute_result in zip(targets, results, execute_results):
                if execute_result is not None:
                    display(r)

        else:
            raise ValueError(
                f"groupby must be one of 'type', 'engine', 'collate', not {groupby!r}"
            )


class AsyncMapResult(AsyncResult):
    """Class for representing results of non-blocking maps.

    AsyncMapResult.get() will properly reconstruct gathers into single object.

    AsyncMapResult is iterable at any time, and will wait on results as they come.

    If ordered=False, then the first results to arrive will come first, otherwise
    results will be yielded in the order they were submitted.
    """

    def __init__(
        self,
        client,
        children,
        mapObject,
        fname='',
        ordered=True,
        return_exceptions=False,
        chunk_sizes=None,
    ):
        self._mapObject = mapObject
        self.ordered = ordered
        AsyncResult.__init__(
            self,
            client,
            children,
            fname=fname,
            return_exceptions=return_exceptions,
            chunk_sizes=chunk_sizes,
        )
        self._single_result = False

    def _reconstruct_result(self, res):
        """Perform the gather on the actual results."""
        if self._return_exceptions:
            if any(isinstance(r, Exception) for r in res):
                # running with _return_exceptions,
                # cannot reconstruct original
                # use simple chain iterable
                flattened = []
                for r in res:
                    if isinstance(r, Exception):
                        flattened.append(r)
                    else:
                        flattened.extend(r)
                return flattened
        return self._mapObject.joinPartitions(res)

    # asynchronous iterator:
    def __iter__(self):
        it = self._ordered_iter if self.ordered else self._unordered_iter
        yield from it()

    def _yield_child_results(self, child):
        """Yield results from a child

        for use in iterator methods
        """
        rlist = child.result()
        if not isinstance(rlist, list):
            rlist = [rlist]
        self._collect_exceptions(rlist)
        yield from rlist

    # asynchronous ordered iterator:
    def _ordered_iter(self):
        """iterator for results *as they arrive*, preserving submission order."""
        try:
            rlist = self.get(0)
        except TimeoutError:
            # wait for each result individually
            evt = Event()
            for child in self._children:
                self._wait_for_child(child, evt=evt)
                yield from self._yield_child_results(child)
        else:
            # already done
            yield from rlist

    # asynchronous unordered iterator:
    def _unordered_iter(self):
        """iterator for results *as they arrive*, on FCFS basis, ignoring submission order."""
        try:
            rlist = self.get(0)
        except TimeoutError:
            pending = self._children
            while pending:
                done, pending = concurrent.futures.wait(
                    pending, return_when=FIRST_COMPLETED
                )
                for child in done:
                    yield from self._yield_child_results(child)
        else:
            # already done
            yield from rlist


class AsyncHubResult(AsyncResult):
    """Class to wrap pending results that must be requested from the Hub.

    Note that waiting/polling on these objects requires polling the Hub over the network,
    so use `AsyncHubResult.wait()` sparingly.
    """

    def _init_futures(self):
        """disable Future-based resolution of Hub results"""
        pass

    def wait(self, timeout=-1, return_when=None):
        """wait for result to complete."""
        start = time.perf_counter()
        if timeout and timeout < 0:
            timeout = None
        if self._ready:
            return True
        local_ids = [m for m in self.msg_ids if m in self._client.outstanding]
        local_ready = self._client.wait(local_ids, timeout)
        if local_ready:
            remote_ids = [m for m in self.msg_ids if m not in self._client.results]
            if not remote_ids:
                self._ready = True
            else:
                rdict = self._client.result_status(remote_ids, status_only=False)
                pending = rdict['pending']
                while pending and (
                    timeout is None or time.perf_counter() < start + timeout
                ):
                    rdict = self._client.result_status(remote_ids, status_only=False)
                    pending = rdict['pending']
                    if pending:
                        time.sleep(0.1)
                if not pending:
                    self._ready = True
        if self._ready:
            self._output_ready = True
            try:
                results = list(map(self._client.results.get, self.msg_ids))
                if self._single_result:
                    r = results[0]
                    if isinstance(r, Exception) and not self._return_exceptions:
                        raise r
                else:
                    results = self._collect_exceptions(results)
                self._success = True
                self.set_result(self._reconstruct_result(results))
            except Exception as e:
                self._success = False
                self.set_exception(e)
            finally:
                if self.owner:
                    [self._client.metadata.pop(mid) for mid in self.msg_ids]
                    [self._client.results.pop(mid) for mid in self.msg_ids]

        return self._ready


__all__ = ['AsyncResult', 'AsyncMapResult', 'AsyncHubResult']
ipython-ipyparallel-14e3c43/ipyparallel/client/client.py000066400000000000000000002640101520071063500234760ustar00rootroot00000000000000"""A semi-synchronous Client for IPython parallel"""

# Copyright (c) IPython Development Team.
# Distributed under the terms of the Modified BSD License.
import asyncio
import json
import os
import re
import socket
import time
import types
import warnings
from collections.abc import Iterable
from concurrent.futures import Future
from functools import partial
from getpass import getpass
from pprint import pprint
from threading import Event, current_thread

import jupyter_client.session
import zmq
from decorator import decorator
from ipykernel.comm import Comm
from IPython import get_ipython
from IPython.core.application import BaseIPythonApplication
from IPython.core.profiledir import ProfileDir, ProfileDirError
from IPython.paths import get_ipython_dir
from IPython.utils.capture import RichOutput
from IPython.utils.path import compress_user
from jupyter_client.localinterfaces import is_local_ip, localhost
from jupyter_client.session import Session
from tornado import ioloop
from traitlets import (
    Any,
    Bool,
    Bytes,
    Dict,
    HasTraits,
    Instance,
    List,
    Set,
    Unicode,
    default,
)
from traitlets.config.configurable import MultipleInstanceError
from zmq.eventloop.zmqstream import ZMQStream

import ipyparallel as ipp
from ipyparallel import error, serialize, util
from ipyparallel.serialize import PrePickled, Reference
from ipyparallel.util import _OutputProducingThread as Thread
from ipyparallel.util import _TermColors

from .asyncresult import AsyncHubResult, AsyncResult
from .futures import MessageFuture, multi_future
from .view import BroadcastView, DirectView, LoadBalancedView

pjoin = os.path.join
jupyter_client.session.extract_dates = lambda obj: obj
# --------------------------------------------------------------------------
# Decorators for Client methods
# --------------------------------------------------------------------------


@decorator
def unpack_message(f, self, msg_parts):
    """Unpack a message before calling the decorated method."""
    idents, msg = self.session.feed_identities(msg_parts, copy=False)
    try:
        msg = self.session.deserialize(msg, content=True, copy=False)
    except Exception:
        self.log.error("Invalid Message", exc_info=True)
    else:
        if self.debug:
            pprint(msg)
        return f(self, msg)


# --------------------------------------------------------------------------
# Classes
# --------------------------------------------------------------------------


_no_connection_file_msg = """
Failed to connect because no Controller could be found.
Please double-check your profile and ensure that a cluster is running.
"""


class ExecuteReply(RichOutput):
    """wrapper for finished Execute results"""

    def __init__(self, msg_id, content, metadata):
        self.msg_id = msg_id
        self._content = content
        self.execution_count = content['execution_count']
        self.metadata = metadata

    # RichOutput overrides

    @property
    def source(self):
        execute_result = self.metadata['execute_result']
        if execute_result:
            return execute_result.get('source', '')

    @property
    def data(self):
        execute_result = self.metadata['execute_result']
        if execute_result:
            return execute_result.get('data', {})
        return {}

    @property
    def _metadata(self):
        execute_result = self.metadata['execute_result']
        if execute_result:
            return execute_result.get('metadata', {})
        return {}

    def display(self):
        from IPython.display import publish_display_data

        publish_display_data(self.data, self.metadata)

    def _repr_mime_(self, mime):
        if mime not in self.data:
            return
        data = self.data[mime]
        if mime in self._metadata:
            return data, self._metadata[mime]
        else:
            return data

    def _repr_mimebundle_(self, *args, **kwargs):
        data, md = self.data, self.metadata
        if 'text/plain' in data:
            data = data.copy()
            data['text/plain'] = self._plaintext()
        return data, md

    def __getitem__(self, key):
        return self.metadata[key]

    def __getattr__(self, key):
        if key not in self.metadata:
            raise AttributeError(key)
        return self.metadata[key]

    def __repr__(self):
        execute_result = self.metadata['execute_result'] or {'data': {}}
        text_out = execute_result['data'].get('text/plain', '')
        if len(text_out) > 32:
            text_out = text_out[:29] + '...'

        return f""

    def _plaintext(self) -> str:
        execute_result = self.metadata['execute_result'] or {'data': {}}
        text_out = execute_result['data'].get('text/plain', '')

        if not text_out:
            return ''

        ip = get_ipython()
        if ip is None:
            colors = "NoColor"
        else:
            colors = ip.colors

        if colors.lower() == "nocolor":
            out = normal = ""
        else:
            out = _TermColors.Red
            normal = _TermColors.Normal

        if '\n' in text_out and not text_out.startswith('\n'):
            # add newline for multiline reprs
            text_out = '\n' + text_out

        return ''.join(
            [
                out,
                f"Out[{self.metadata['engine_id']}:{self.execution_count}]: ",
                normal,
                text_out,
            ]
        )

    def _repr_pretty_(self, p, cycle):
        p.text(self._plaintext())


class Metadata(dict):
    """Subclass of dict for initializing metadata values.

    Attribute access works on keys.

    These objects have a strict set of keys - errors will raise if you try
    to add new keys.
    """

    def __init__(self, *args, **kwargs):
        dict.__init__(self)
        md = {
            'msg_id': None,
            'submitted': None,
            'started': None,
            'completed': None,
            'received': None,
            'engine_uuid': None,
            'engine_id': None,
            'follow': None,
            'after': None,
            'status': None,
            'execute_input': None,
            'execute_result': None,
            'error': None,
            'stdout': '',
            'stderr': '',
            'outputs': [],
            'data': {},
            'label': None,
        }
        self.update(md)
        self.update(dict(*args, **kwargs))

    def __getattr__(self, key):
        """getattr aliased to getitem"""
        if key in self:
            return self[key]
        else:
            raise AttributeError(key)

    def __setattr__(self, key, value):
        """setattr aliased to setitem, with strict"""
        if key in self:
            self[key] = value
        else:
            raise AttributeError(key)

    def __setitem__(self, key, value):
        """strict static key enforcement"""
        if key in self:
            dict.__setitem__(self, key, value)
        else:
            raise KeyError(key)


def _is_future(f):
    """light duck-typing check for Futures"""
    return hasattr(f, 'add_done_callback')


# carriage return pattern
_cr_pat = re.compile(r'.*\r(?=[^\n])')


class Client(HasTraits):
    """A semi-synchronous client to an IPython parallel cluster

    Parameters
    ----------

    connection_info : str or dict
        The path to ipcontroller-client.json, or a dict containing the same information.
        This JSON file should contain all the information needed to connect to a cluster,
        and is usually the only argument needed.
        [Default: use profile]
    profile : str
        The name of the Cluster profile to be used to find connector information.
        If run from an IPython application, the default profile will be the same
        as the running application, otherwise it will be 'default'.
    cluster_id : str
        String id to added to runtime files, to prevent name collisions when using
        multiple clusters with a single profile simultaneously.
        When set, will look for files named like: 'ipcontroller--client.json'
        Since this is text inserted into filenames, typical recommendations apply:
        Simple character strings are ideal, and spaces are not recommended (but
        should generally work)
    context : zmq.Context
        Pass an existing zmq.Context instance, otherwise the client will create its own.
    debug : bool
        flag for lots of message printing for debug purposes
    timeout : float
        time (in seconds) to wait for connection replies from the Hub
        [Default: 10]

    Other Parameters
    ----------------

    sshserver : str
        A string of the form passed to ssh, i.e. 'server.tld' or 'user@server.tld:port'
        If keyfile or password is specified, and this is not, it will default to
        the ip given in addr.
    sshkey : str; path to ssh private key file
        This specifies a key to be used in ssh login, default None.
        Regular default ssh keys will be used without specifying this argument.
    password : str
        Your ssh password to sshserver. Note that if this is left None,
        you will be prompted for it if passwordless key based login is unavailable.
    paramiko : bool
        flag for whether to use paramiko instead of shell ssh for tunneling.
        [default: True on win32, False else]


    Attributes
    ----------

    ids : list of int engine IDs
        requesting the ids attribute always synchronizes
        the registration state. To request ids without synchronization,
        use semi-private _ids attributes.

    history : list of msg_ids
        a list of msg_ids, keeping track of all the execution
        messages you have submitted in order.

    outstanding : set of msg_ids
        a set of msg_ids that have been submitted, but whose
        results have not yet been received.

    results : dict
        a dict of all our results, keyed by msg_id

    block : bool
        determines default behavior when block not specified
        in execution methods

    """

    block = Bool(False)
    outstanding = Set()
    results = Instance('collections.defaultdict', (dict,))
    metadata = Instance('collections.defaultdict', (Metadata,))
    cluster = Instance('ipyparallel.cluster.Cluster', allow_none=True)
    history = List()
    debug = Bool(False)
    _futures = Dict()
    _output_futures = Dict()
    _io_loop = Any()
    _io_thread = Any()

    profile = Unicode()

    def _profile_default(self):
        if BaseIPythonApplication.initialized():
            # an IPython app *might* be running, try to get its profile
            try:
                return BaseIPythonApplication.instance().profile
            except (AttributeError, MultipleInstanceError):
                # could be a *different* subclass of config.Application,
                # which would raise one of these two errors.
                return 'default'
        else:
            return 'default'

    _outstanding_dict = Instance('collections.defaultdict', (set,))
    _ids = List()
    _connected = Bool(False)
    _ssh = Bool(False)
    _context = Instance('zmq.Context', allow_none=True)

    @default("_context")
    def _default_context(self):
        return zmq.Context.instance()

    _config = Dict()
    _engines = Instance(util.ReverseDict, (), {})
    _query_socket = Instance('zmq.Socket', allow_none=True)
    _control_socket = Instance('zmq.Socket', allow_none=True)
    _iopub_socket = Instance('zmq.Socket', allow_none=True)
    _notification_socket = Instance('zmq.Socket', allow_none=True)
    _mux_socket = Instance('zmq.Socket', allow_none=True)
    _task_socket = Instance('zmq.Socket', allow_none=True)
    _broadcast_socket = Instance('zmq.Socket', allow_none=True)
    _registration_callbacks = List()

    curve_serverkey = Bytes(allow_none=True)
    curve_secretkey = Bytes(allow_none=True)
    curve_publickey = Bytes(allow_none=True)

    _task_scheme = Unicode()
    _closed = False

    def __new__(self, *args, **kw):
        # don't raise on positional args
        return HasTraits.__new__(self, **kw)

    def __init__(
        self,
        connection_info=None,
        *,
        url_file=None,
        profile=None,
        profile_dir=None,
        ipython_dir=None,
        context=None,
        debug=False,
        sshserver=None,
        sshkey=None,
        password=None,
        paramiko=None,
        timeout=10,
        cluster_id=None,
        cluster=None,
        **extra_args,
    ):
        super_kwargs = {'debug': debug, 'cluster': cluster}
        if profile:
            super_kwargs['profile'] = profile
        super().__init__(**super_kwargs)
        if context is not None:
            self._context = context

        for argname in ('url_or_file', 'url_file'):
            if argname in extra_args:
                connection_info = extra_args[argname]
                warnings.warn(
                    f"{argname} arg no longer supported, use positional connection_info argument",
                    DeprecationWarning,
                    stacklevel=2,
                )

        if isinstance(connection_info, str) and util.is_url(connection_info):
            raise ValueError(
                f"single urls ({connection_info!r}) cannot be specified, url-files must be used."
            )

        self._setup_profile_dir(self.profile, profile_dir, ipython_dir)

        no_file_msg = '\n'.join(
            [
                "You have attempted to connect to an IPython Cluster but no Controller could be found.",
                "Please double-check your configuration and ensure that a cluster is running.",
            ]
        )

        if connection_info is None and self._profile_dir is not None:
            # default: find connection info from profile
            if cluster_id:
                client_json = f'ipcontroller-{cluster_id}-client.json'
            else:
                client_json = 'ipcontroller-client.json'
            connection_file = pjoin(self._profile_dir.security_dir, client_json)
            short = compress_user(connection_file)
            if not os.path.exists(connection_file):
                print(f"Waiting for connection file: {short}")
                waiting_time = 0.0
                while waiting_time < timeout:
                    time.sleep(min(timeout - waiting_time, 1))
                    waiting_time += 1
                    if os.path.exists(connection_file):
                        break
            if not os.path.exists(connection_file):
                msg = '\n'.join([f"Connection file {short!r} not found.", no_file_msg])
                raise OSError(msg)

            with open(connection_file) as f:
                connection_info = json.load(f)

        if connection_info is None:
            raise OSError(no_file_msg)

        if isinstance(connection_info, dict):
            cfg = connection_info.copy()
        else:
            # connection_info given as path to connection file
            connection_file = connection_info
            if not os.path.exists(connection_file):
                # Connection file explicitly specified, but not found
                raise OSError(
                    f"Connection file {compress_user(connection_file)} not found. Is a controller running?"
                )

            with open(connection_file) as f:
                connection_info = cfg = json.load(f)

        self._task_scheme = cfg['task_scheme']

        if not cfg.get("curve_serverkey") and "IPP_CURVE_SERVERKEY" in os.environ:
            # load from env, if not set in connection file
            cfg["curve_serverkey"] = os.environ["IPP_CURVE_SERVERKEY"]

        if cfg.get("curve_serverkey"):
            self.curve_serverkey = cfg["curve_serverkey"].encode('ascii')
            if not self.curve_publickey or not self.curve_secretkey:
                # if context: this could crash!
                # inappropriately closes libsodium random_bytes source
                # with libzmq <= 4.3.4
                self.curve_publickey, self.curve_secretkey = zmq.curve_keypair()

        # sync defaults from args, json:
        if sshserver:
            cfg['ssh'] = sshserver

        location = cfg.setdefault('location', None)

        proto, addr = cfg['interface'].split('://')
        addr = util.disambiguate_ip_address(addr, location)
        cfg['interface'] = f"{proto}://{addr}"

        # turn interface,port into full urls:
        for key in (
            'control',
            'task',
            'mux',
            'iopub',
            'notification',
            'registration',
            'broadcast',
        ):
            cfg[key] = f"{cfg['interface']}:{cfg[key]}"

        url = cfg['registration']

        if location is not None and addr == localhost():
            # location specified, and connection is expected to be local
            location_ip = util.ip_for_host(location)

            if not is_local_ip(location_ip) and not sshserver:
                # load ssh from JSON *only* if the controller is not on
                # this machine
                sshserver = cfg['ssh']
            if (
                not is_local_ip(location_ip)
                and not sshserver
                and location != socket.gethostname()
            ):
                # warn if no ssh specified, but SSH is probably needed
                # This is only a warning, because the most likely cause
                # is a local Controller on a laptop whose IP is dynamic
                warnings.warn(
                    f"""
            Controller appears to be listening on localhost, but not on this machine.
            If this is true, you should specify Client(...,sshserver='you@{location}')
            or instruct your controller to listen on an external IP.""",
                    RuntimeWarning,
                )
        elif not sshserver:
            # otherwise sync with cfg
            sshserver = cfg['ssh']

        self._config = cfg

        self._ssh = bool(sshserver or sshkey or password)
        if self._ssh and sshserver is None:
            # default to ssh via localhost
            sshserver = addr
        if self._ssh and password is None:
            from zmq.ssh import tunnel

            if tunnel.try_passwordless_ssh(sshserver, sshkey, paramiko):
                password = False
            else:
                password = getpass(f"SSH Password for {sshserver}: ")
        ssh_kwargs = dict(keyfile=sshkey, password=password, paramiko=paramiko)

        # configure and construct the session
        try:
            extra_args['packer'] = cfg['pack']
            extra_args['unpacker'] = cfg['unpack']
            extra_args['key'] = cfg['key'].encode("utf8")
            extra_args['signature_scheme'] = cfg['signature_scheme']
        except KeyError as exc:
            msg = '\n'.join(
                [
                    "Connection file is invalid (missing '{}'), possibly from an old version of IPython.",
                    "If you are reusing connection files, remove them and start ipcontroller again.",
                ]
            )
            raise ValueError(msg.format(exc.message))

        util._disable_session_extract_dates()
        self.session = Session(**extra_args)

        self._query_socket = self._context.socket(zmq.DEALER)
        if self.curve_serverkey:
            self._query_socket.curve_serverkey = self.curve_serverkey
            self._query_socket.curve_secretkey = self.curve_secretkey
            self._query_socket.curve_publickey = self.curve_publickey

        if self._ssh:
            from zmq.ssh import tunnel

            tunnel.tunnel_connection(
                self._query_socket,
                cfg['registration'],
                sshserver,
                timeout=timeout,
                **ssh_kwargs,
            )
        else:
            self._query_socket.connect(cfg['registration'])

        self.session.debug = self.debug

        self._notification_handlers = {
            'registration_notification': self._register_engine,
            'unregistration_notification': self._unregister_engine,
            'shutdown_notification': lambda msg: self.close(),
        }
        self._queue_handlers = {
            'execute_reply': self._handle_execute_reply,
            'apply_reply': self._handle_apply_reply,
        }

        try:
            self._connect(sshserver, ssh_kwargs, timeout)
        except Exception:
            self.close(linger=0)
            raise

        # last step: setup magics, if we are in IPython:

        ip = get_ipython()
        if ip is None:
            return
        else:
            if 'px' not in ip.magics_manager.magics["line"]:
                # in IPython but we are the first Client.
                # activate a default view for parallel magics.
                self.activate()

    def __del__(self):
        """cleanup sockets, but _not_ context."""
        self.close()

    def _setup_profile_dir(self, profile, profile_dir, ipython_dir):
        if ipython_dir is None:
            ipython_dir = get_ipython_dir()
        if profile_dir is not None:
            try:
                self._profile_dir = ProfileDir.find_profile_dir(profile_dir)
                return
            except ProfileDirError:
                pass
        elif profile is not None:
            try:
                self._profile_dir = ProfileDir.find_profile_dir_by_name(
                    ipython_dir, profile
                )
                return
            except ProfileDirError:
                pass
        self._profile_dir = None

    def __enter__(self):
        """A client can be used as a context manager

        which will close the client on exit

        .. versionadded: 7.0
        """
        return self

    def __exit__(self, exc_type, exc_value, traceback):
        """Exiting a client context closes the client"""
        self.close()

    def _update_engines(self, engines):
        """Update our engines dict and _ids from a dict of the form: {id:uuid}."""
        for k, v in engines.items():
            eid = int(k)
            if eid not in self._engines:
                self._ids.append(eid)
            self._engines[eid] = v
        self._ids = sorted(self._ids)
        if (
            sorted(self._engines.keys()) != list(range(len(self._engines)))
            and self._task_scheme == 'pure'
            and self._task_socket
        ):
            self._stop_scheduling_tasks()

    def _stop_scheduling_tasks(self):
        """Stop scheduling tasks because an engine has been unregistered
        from a pure ZMQ scheduler.
        """
        self._task_socket.close()
        self._task_socket = None
        msg = (
            "An engine has been unregistered, and we are using pure "
            + "ZMQ task scheduling.  Task farming will be disabled."
        )
        if self.outstanding:
            msg += (
                " If you were running tasks when this happened, "
                + "some `outstanding` msg_ids may never resolve."
            )
        warnings.warn(msg, RuntimeWarning)

    def _build_targets(self, targets):
        """Turn valid target IDs or 'all' into two lists:
        (int_ids, uuids).
        """
        if not self._ids:
            # flush notification socket if no engines yet, just in case
            if not self.ids:
                raise error.NoEnginesRegistered(
                    "Can't build targets without any engines"
                )

        if targets is None:
            targets = self._ids
        elif isinstance(targets, str):
            if targets.lower() == 'all':
                targets = self._ids
            else:
                raise TypeError(f"{targets!r} not valid str target, must be 'all'")
        elif isinstance(targets, int):
            if targets < 0:
                targets = self.ids[targets]
            if targets not in self._ids:
                raise IndexError(f"No such engine: {targets}")
            targets = [targets]

        if isinstance(targets, slice):
            indices = list(range(len(self._ids))[targets])
            ids = self.ids
            targets = [ids[i] for i in indices]

        if not isinstance(targets, (tuple, list, range)):
            raise TypeError(
                f"targets by int/slice/collection of ints only, not {type(targets)}"
            )

        return [self._engines[t].encode("utf8") for t in targets], list(targets)

    def _connect(self, sshserver, ssh_kwargs, timeout):
        """setup all our socket connections to the cluster. This is called from
        __init__."""

        # Maybe allow reconnecting?
        if self._connected:
            return
        self._connected = True

        def connect_socket(s, url):
            if self._ssh:
                from zmq.ssh import tunnel

                return tunnel.tunnel_connection(s, url, sshserver, **ssh_kwargs)
            else:
                return util.connect(
                    s,
                    url,
                    curve_serverkey=self.curve_serverkey,
                    curve_secretkey=self.curve_secretkey,
                    curve_publickey=self.curve_publickey,
                )

        self.session.send(self._query_socket, 'connection_request')
        # use Poller because zmq.select has wrong units in pyzmq 2.1.7
        poller = zmq.Poller()
        poller.register(self._query_socket, zmq.POLLIN)
        # poll expects milliseconds, timeout is seconds
        evts = poller.poll(timeout * 1000)
        if not evts:
            raise TimeoutError("Hub connection request timed out")
        idents, msg = self.session.recv(self._query_socket, mode=0)
        if self.debug:
            pprint(msg)
        content = msg['content']
        # self._config['registration'] = dict(content)
        cfg = self._config
        if content['status'] == 'ok':
            self._mux_socket = self._context.socket(zmq.DEALER)
            connect_socket(self._mux_socket, cfg['mux'])

            self._task_socket = self._context.socket(zmq.DEALER)
            connect_socket(self._task_socket, cfg['task'])

            self._broadcast_socket = self._context.socket(zmq.DEALER)
            connect_socket(self._broadcast_socket, cfg['broadcast'])

            self._notification_socket = self._context.socket(zmq.SUB)
            self._notification_socket.RCVHWM = 0
            self._notification_socket.setsockopt(zmq.SUBSCRIBE, b'')
            connect_socket(self._notification_socket, cfg['notification'])

            self._control_socket = self._context.socket(zmq.DEALER)
            connect_socket(self._control_socket, cfg['control'])

            self._iopub_socket = self._context.socket(zmq.SUB)
            self._iopub_socket.RCVHWM = 0
            self._iopub_socket.setsockopt(zmq.SUBSCRIBE, b'')
            connect_socket(self._iopub_socket, cfg['iopub'])

            self._update_engines(dict(content['engines']))
        else:
            self._connected = False
            tb = '\n'.join(content.get('traceback', []))
            raise Exception(f"Failed to connect! {tb}")

        self._start_io_thread()

    # --------------------------------------------------------------------------
    # handlers and callbacks for incoming messages
    # --------------------------------------------------------------------------

    def _unwrap_exception(self, content):
        """unwrap exception, and remap engine_id to int."""
        e = error.unwrap_exception(content)
        # print e.traceback
        if e.engine_info and 'engine_id' not in e.engine_info:
            e_uuid = e.engine_info['engine_uuid']
            eid = self._engines[e_uuid]
            e.engine_info['engine_id'] = eid
        return e

    def _extract_metadata(self, msg):
        header = msg['header']
        parent = msg['parent_header']
        msg_meta = msg['metadata']
        content = msg['content']
        md = {
            'msg_id': parent['msg_id'],
            'received': util.utcnow(),
            'engine_uuid': msg_meta.get('engine', None),
            'follow': msg_meta.get('follow', []),
            'after': msg_meta.get('after', []),
            'status': content['status'],
            'is_broadcast': msg_meta.get('is_broadcast', False),
            'is_coalescing': msg_meta.get('is_coalescing', False),
            'label': msg_meta.get('label', None),
        }

        if md['engine_uuid'] is not None:
            md['engine_id'] = self._engines.get(md['engine_uuid'], None)

        if md['is_coalescing']:
            # get destinations from target metadata
            targets = msg_meta.get("broadcast_targets", [])
            md['engine_uuid'], md['engine_id'] = map(list, zip(*targets))

        if 'date' in parent:
            md['submitted'] = parent['date']
        if 'started' in msg_meta:
            md['started'] = util._parse_date(msg_meta['started'])
        if 'date' in header:
            md['completed'] = header['date']
        return md

    def _register_engine(self, msg):
        """Register a new engine, and update our connection info."""
        content = msg['content']
        eid = content['id']
        d = {eid: content['uuid']}
        self._update_engines(d)
        event = {'event': 'register'}
        event.update(content)
        for callback in self._registration_callbacks:
            callback(event)

    def _unregister_engine(self, msg):
        """Unregister an engine that has died."""
        content = msg['content']
        eid = int(content['id'])
        if eid in self._ids:
            self._ids.remove(eid)
            uuid = self._engines.pop(eid)

            self._handle_stranded_msgs(eid, uuid)

        if self._task_socket and self._task_scheme == 'pure':
            self._stop_scheduling_tasks()

        event = {"event": "unregister"}
        event.update(content)
        for callback in self._registration_callbacks:
            callback(event)

    def _handle_stranded_msgs(self, eid, uuid):
        """Handle messages known to be on an engine when the engine unregisters.

        It is possible that this will fire prematurely - that is, an engine will
        go down after completing a result, and the client will be notified
        of the unregistration and later receive the successful result.
        """

        outstanding = self._outstanding_dict[uuid]

        for msg_id in list(outstanding):
            if msg_id in self.results:
                # we already
                continue
            try:
                raise error.EngineError(
                    f"Engine {eid!r} died while running task {msg_id!r}"
                )
            except Exception:
                content = error.wrap_exception()
            # build a fake message:
            msg = self.session.msg('apply_reply', content=content)
            msg['parent_header']['msg_id'] = msg_id
            msg['metadata']['engine'] = uuid
            self._handle_apply_reply(msg)

    def _handle_execute_reply(self, msg):
        """Save the reply to an execute_request into our results.

        execute messages are never actually used. apply is used instead.
        """

        parent = msg['parent_header']
        if self._should_use_metadata_msg_id(msg):
            msg_id = msg['metadata']['original_msg_id']
        else:
            msg_id = parent['msg_id']

        future = self._futures.get(msg_id, None)
        if msg_id not in self.outstanding:
            if msg_id in self.history:
                print(f"got stale result: {msg_id}")
            else:
                print(f"got unknown result: {msg_id}")
        else:
            self.outstanding.remove(msg_id)

        content = msg['content']
        header = msg['header']

        # construct metadata:
        md = self.metadata[msg_id]
        md.update(self._extract_metadata(msg))

        if md['is_coalescing']:
            engine_uuids = md['engine_uuid'] or []
        else:
            engine_uuids = [md['engine_uuid']]

        for engine_uuid in engine_uuids:
            if engine_uuid is not None:
                e_outstanding = self._outstanding_dict[engine_uuid]
                if msg_id in e_outstanding:
                    e_outstanding.remove(msg_id)

        # construct result:
        if content['status'] == 'ok':
            self.results[msg_id] = ExecuteReply(msg_id, content, md)
        elif content['status'] == 'aborted':
            self.results[msg_id] = error.TaskAborted(msg_id)
            # aborted tasks will not get output
            out_future = self._output_futures.get(msg_id)
            if out_future and not out_future.done():
                out_future.set_result(None)
        elif content['status'] == 'resubmitted':
            # TODO: handle resubmission
            pass
        else:
            self.results[msg_id] = self._unwrap_exception(content)
        if content['status'] != 'ok' and not content.get('engine_info'):
            # not an engine failure, don't expect output
            out_future = self._output_futures.get(msg_id)
            if out_future and not out_future.done():
                out_future.set_result(None)
        if future:
            future.set_result(self.results[msg_id])

    def _should_use_metadata_msg_id(self, msg):
        md = msg['metadata']
        return md.get('is_broadcast', False) and md.get('is_coalescing', False)

    def _handle_apply_reply(self, msg):
        """Save the reply to an apply_request into our results."""
        parent = msg['parent_header']
        if self._should_use_metadata_msg_id(msg):
            msg_id = msg['metadata']['original_msg_id']
        else:
            msg_id = parent['msg_id']

        future = self._futures.get(msg_id, None)
        if msg_id not in self.outstanding:
            if msg_id in self.history:
                print(f"got stale result: {msg_id}")
                print(self.results[msg_id])
                print(msg)
            else:
                print(f"got unknown result: {msg_id}")
        else:
            self.outstanding.remove(msg_id)
        content = msg['content']
        header = msg['header']

        # construct metadata:
        md = self.metadata[msg_id]
        md.update(self._extract_metadata(msg))

        if md['is_coalescing']:
            engine_uuids = md['engine_uuid'] or []
        else:
            engine_uuids = [md['engine_uuid']]

        for engine_uuid in engine_uuids:
            if engine_uuid is not None:
                e_outstanding = self._outstanding_dict[engine_uuid]
                if msg_id in e_outstanding:
                    e_outstanding.remove(msg_id)

        # construct result:
        if content['status'] == 'ok':
            if md.get('is_coalescing', False):
                deserialized_bufs = []
                bufs = msg['buffers']
                while bufs:
                    deserialized, bufs = serialize.deserialize_object(bufs)
                    deserialized_bufs.append(deserialized)
                self.results[msg_id] = deserialized_bufs
            else:
                self.results[msg_id] = serialize.deserialize_object(msg['buffers'])[0]
        elif content['status'] == 'aborted':
            self.results[msg_id] = error.TaskAborted(msg_id)
            out_future = self._output_futures.get(msg_id)
            if out_future and not out_future.done():
                out_future.set_result(None)
        elif content['status'] == 'resubmitted':
            # TODO: handle resubmission
            pass
        else:
            self.results[msg_id] = self._unwrap_exception(content)
        if content['status'] != 'ok' and not content.get('engine_info'):
            # not an engine failure, don't expect output
            out_future = self._output_futures.get(msg_id)
            if out_future and not out_future.done():
                out_future.set_result(None)
        if future:
            future.set_result(self.results[msg_id])

    def _make_io_loop(self):
        """Make my IOLoop. Override with IOLoop.current to return"""
        # runs first thing in the io thread
        # always create a fresh asyncio loop for the thread
        if os.name == "nt":
            asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
        loop = ioloop.IOLoop(make_current=False)
        return loop

    def _stop_io_thread(self):
        """Stop my IO thread"""
        if self._io_loop:
            self._io_loop.add_callback(self._io_loop.stop)
        if self._io_thread and self._io_thread is not current_thread():
            self._io_thread.join()

    def _setup_streams(self):
        self._query_stream = ZMQStream(self._query_socket, self._io_loop)
        self._query_stream.on_recv(self._dispatch_single_reply, copy=False)
        self._control_stream = ZMQStream(self._control_socket, self._io_loop)
        self._control_stream.on_recv(self._dispatch_single_reply, copy=False)
        self._mux_stream = ZMQStream(self._mux_socket, self._io_loop)
        self._mux_stream.on_recv(self._dispatch_reply, copy=False)
        self._task_stream = ZMQStream(self._task_socket, self._io_loop)
        self._task_stream.on_recv(self._dispatch_reply, copy=False)
        self._iopub_stream = ZMQStream(self._iopub_socket, self._io_loop)
        self._iopub_stream.on_recv(self._dispatch_iopub, copy=False)
        self._notification_stream = ZMQStream(self._notification_socket, self._io_loop)
        self._notification_stream.on_recv(self._dispatch_notification, copy=False)

        self._broadcast_stream = ZMQStream(self._broadcast_socket, self._io_loop)
        self._broadcast_stream.on_recv(self._dispatch_reply, copy=False)

    def _start_io_thread(self):
        """Start IOLoop in a background thread."""
        evt = Event()
        self._io_thread = Thread(target=self._io_main, args=(evt,))
        self._io_thread.daemon = True
        self._io_thread.start()
        # wait for the IOLoop to start
        for i in range(20):
            if evt.wait(1):
                return
            if not self._io_thread.is_alive():
                raise RuntimeError("IO Loop failed to start")
        else:
            raise RuntimeError(
                "Start event was never set. Maybe a problem in the IO thread."
            )

    def _io_main(self, start_evt=None):
        """main loop for background IO thread"""
        self._io_loop = self._make_io_loop()
        self._setup_streams()
        # signal that start has finished
        # so that the main thread knows that all our attributes are defined
        if start_evt:
            start_evt.set()
        try:
            self._io_loop.start()
        finally:
            self._io_loop.close(all_fds=True)

    @unpack_message
    def _dispatch_single_reply(self, msg):
        """Dispatch single (non-execution) replies"""
        msg_id = msg['parent_header'].get('msg_id', None)
        future = self._futures.get(msg_id)
        if future is not None:
            future.set_result(msg)

    @unpack_message
    def _dispatch_notification(self, msg):
        """Dispatch notification messages"""
        msg_type = msg['header']['msg_type']
        handler = self._notification_handlers.get(msg_type, None)
        if handler is None:
            raise KeyError(f"Unhandled notification message type: {msg_type}")
        else:
            handler(msg)

    @unpack_message
    def _dispatch_reply(self, msg):
        """handle execution replies waiting in ZMQ queue."""
        msg_type = msg['header']['msg_type']
        handler = self._queue_handlers.get(msg_type, None)
        if handler is None:
            raise KeyError(f"Unhandled reply message type: {msg_type}")
        else:
            handler(msg)

    @unpack_message
    def _dispatch_iopub(self, msg):
        """handler for IOPub messages"""
        parent = msg['parent_header']
        if not parent or parent['session'] != self.session.session:
            # ignore IOPub messages not from here
            return
        msg_id = parent['msg_id']
        content = msg['content']
        header = msg['header']
        msg_type = msg['header']['msg_type']

        if msg_type == 'status' and msg_id not in self.metadata:
            # ignore status messages if they aren't mine
            return

        # init metadata:
        md = self.metadata[msg_id]

        if md['engine_id'] is None and 'engine' in msg['metadata']:
            e_uuid = msg['metadata']['engine']
            try:
                md['engine_uuid'] = e_uuid
                md['engine_id'] = self._engines[e_uuid]
            except KeyError:
                pass

        ip = get_ipython()

        if msg_type == 'stream':
            name = content['name']
            new_text = (md[name] or '') + content['text']
            if '\r' in content['text']:
                new_text = _cr_pat.sub('', new_text)
            md[name] = new_text
        elif msg_type == 'error':
            md.update({'error': self._unwrap_exception(content)})
        elif msg_type == 'execute_input':
            md.update({'execute_input': content['code']})
        elif msg_type == 'display_data':
            md['outputs'].append(content)
        elif msg_type == 'execute_result':
            md['execute_result'] = content
        elif msg_type == 'data_message':
            data, remainder = serialize.deserialize_object(msg['buffers'])
            md['data'].update(data)
        elif msg_type == 'status':
            # idle message comes after all outputs
            if content['execution_state'] == 'idle':
                future = self._output_futures.get(msg_id)
                if future and not future.done():
                    # TODO: should probably store actual outputs on the Future
                    future.set_result(None)
        elif msg_type.startswith("comm_") and ip is not None and ip.kernel is not None:
            # only handle comm messages when we're in an IPython kernel
            if msg_type == "comm_open":
                # create proxy comm
                engine_uuid = msg['metadata'].get('engine', '')
                engine_ident = engine_uuid.encode("utf8", "replace")
                # DEBUG: engine_uuid can still be missing?!

                comm = Comm(
                    comm_id=content['comm_id'],
                    primary=False,
                )

                send_to_engine = partial(
                    self._send,
                    self._mux_socket,
                    ident=engine_ident,
                )

                def relay_comm(msg):
                    send_to_engine(
                        msg["msg_type"],
                        content=msg['content'],
                        metadata=msg['metadata'],
                        buffers=msg["buffers"],
                    )

                comm.on_msg(relay_comm)
                comm.on_close(
                    lambda: send_to_engine(
                        "comm_close",
                        content={
                            "comm_id": comm.comm_id,
                        },
                    )
                )
                ip.kernel.comm_manager.register_comm(comm)

            # relay all comm msgs
            ip.kernel.session.send(
                ip.kernel.iopub_socket,
                msg_type,
                content=msg['content'],
                metadata=msg['metadata'],
                buffers=msg['buffers'],
                # different parent!
                parent=ip.kernel.get_parent("shell"),
            )

        msg_future = self._futures.get(msg_id, None)
        if msg_future:
            # Run any callback functions
            for callback in msg_future.iopub_callbacks:
                callback(msg)

    def create_message_futures(
        self, msg_id, header, async_result=False, track=False, label=None
    ):
        msg_future = MessageFuture(msg_id, header=header, track=track)
        futures = [msg_future]
        self._futures[msg_id] = msg_future
        if async_result:
            output = MessageFuture(msg_id, header=header)
            # add future for output
            self._output_futures[msg_id] = output
            # hook up metadata
            output.metadata = self.metadata[msg_id]
            output.metadata['submitted'] = util.utcnow()
            output.metadata['label'] = label
            msg_future.output = output
            futures.append(output)
        return futures

    def _send(
        self,
        socket,
        msg_type,
        content=None,
        parent=None,
        ident=None,
        buffers=None,
        track=False,
        header=None,
        metadata=None,
        track_outstanding=False,
        message_future_hook=None,
    ):
        """Send a message in the IO thread

        returns msg object"""
        if self._closed:
            raise OSError("Connections have been closed.")
        msg = self.session.msg(
            msg_type, content=content, parent=parent, header=header, metadata=metadata
        )
        msg_id = msg['header']['msg_id']

        expect_reply = msg_type not in {"comm_msg", "comm_close", "comm_open"}
        label = metadata["label"] if metadata and "label" in metadata else None

        if expect_reply and track_outstanding:
            # add to outstanding, history
            self.outstanding.add(msg_id)
            self.history.append(msg_id)

            if ident:
                # possibly routed to a specific engine
                ident_str = ident
                if isinstance(ident_str, list):
                    ident_str = ident_str[-1]
                ident_str = ident_str.decode("utf-8")
                if ident_str in self._engines.values():
                    # save for later, in case of engine death
                    self._outstanding_dict[ident_str].add(msg_id)
            self.metadata['submitted'] = util.utcnow()

        if expect_reply:
            futures = self.create_message_futures(
                msg_id,
                msg['header'],
                async_result=msg_type in {'execute_request', 'apply_request'},
                track=track,
                label=label,
            )
            if message_future_hook is not None:
                message_future_hook(futures[0])

            def cleanup(f):
                """Purge caches on Future resolution"""
                self.results.pop(msg_id, None)
                self._futures.pop(msg_id, None)
                self._output_futures.pop(msg_id, None)
                self.metadata.pop(msg_id, None)

            multi_future(futures).add_done_callback(cleanup)

        def _really_send():
            sent = self.session.send(
                socket, msg, track=track, buffers=buffers, ident=ident
            )
            if track:
                futures[0].tracker.set_result(sent['tracker'])

        # hand off actual send to IO thread
        self._io_loop.add_callback(_really_send)
        if expect_reply:
            return futures[0]

    def _send_recv(self, *args, **kwargs):
        """Send a message in the IO thread and return its reply"""
        future = self._send(*args, **kwargs)
        future.wait()
        return future.result()

    # --------------------------------------------------------------------------
    # len, getitem
    # --------------------------------------------------------------------------

    def __len__(self):
        """len(client) returns # of engines."""
        return len(self.ids)

    def __getitem__(self, key):
        """index access returns DirectView multiplexer objects

        Must be int, slice, or list/tuple/range of ints"""
        if not isinstance(key, (int, slice, tuple, list, range)):
            raise TypeError(f"key by int/slice/iterable of ints only, not {type(key)}")
        else:
            return self.direct_view(key)

    def __iter__(self):
        """Since we define getitem, Client is iterable

        but unless we also define __iter__, it won't work correctly unless engine IDs
        start at zero and are continuous.
        """
        for eid in self.ids:
            yield self.direct_view(eid)

    # --------------------------------------------------------------------------
    # Begin public methods
    # --------------------------------------------------------------------------

    @property
    def ids(self):
        # always copy:
        return list(self._ids)

    def activate(self, targets='all', suffix=''):
        """Create a DirectView and register it with IPython magics

        Defines the magics `%px, %autopx, %pxresult, %%px`

        Parameters
        ----------
        targets : int, list of ints, or 'all'
            The engines on which the view's magics will run
        suffix : str [default: '']
            The suffix, if any, for the magics.  This allows you to have
            multiple views associated with parallel magics at the same time.

            e.g. ``rc.activate(targets=0, suffix='0')`` will give you
            the magics ``%px0``, ``%pxresult0``, etc. for running magics just
            on engine 0.
        """
        view = self.direct_view(targets)
        view.block = True
        view.activate(suffix)
        return view

    def close(self, linger=None):
        """Close my zmq Sockets

        If `linger`, set the zmq LINGER socket option,
        which allows discarding of messages.
        """
        if self._closed:
            return
        self._stop_io_thread()
        snames = [trait for trait in self.trait_names() if trait.endswith("socket")]
        for name in snames:
            socket = getattr(self, name)
            if socket is not None and not socket.closed:
                if linger is not None:
                    socket.close(linger=linger)
                else:
                    socket.close()
        self._closed = True

    def spin_thread(self, interval=1):
        """DEPRECATED, DOES NOTHING"""
        warnings.warn(
            "Client.spin_thread is deprecated now that IO is always in a thread",
            DeprecationWarning,
        )

    def stop_spin_thread(self):
        """DEPRECATED, DOES NOTHING"""
        warnings.warn(
            "Client.spin_thread is deprecated now that IO is always in a thread",
            DeprecationWarning,
        )

    def spin(self):
        """DEPRECATED, DOES NOTHING"""
        warnings.warn(
            "Client.spin is deprecated now that IO is in a thread", DeprecationWarning
        )

    def _await_futures(self, futures, timeout):
        """Wait for a collection of futures"""
        if not futures:
            return True

        event = Event()
        if timeout and timeout < 0:
            timeout = None

        f = multi_future(futures)
        f.add_done_callback(lambda f: event.set())
        return event.wait(timeout)

    def _futures_for_msgs(self, msg_ids):
        """Turn msg_ids into Futures

        msg_ids not in futures dict are presumed done.
        """
        futures = []
        for msg_id in msg_ids:
            f = self._futures.get(msg_id, None)
            if f:
                futures.append(f)
        return futures

    def wait_for_engines(
        self, n=None, *, timeout=-1, block=True, interactive=None, widget=None
    ):
        """Wait for `n` engines to become available.

        Returns when `n` engines are available,
        or raises TimeoutError if `timeout` is reached
        before `n` engines are ready.

        Parameters
        ----------
        n : int
            Number of engines to wait for.
        timeout : float
            Time (in seconds) to wait before raising a TimeoutError
        block : bool
            if False, return Future instead of waiting
        interactive : bool
            default: True if in IPython, False otherwise.
            if True, show a progress bar while waiting for engines
        widget : bool
            default: True if in an IPython kernel (notebook), False otherwise.
            Only has an effect if `interactive` is True.
            if True, forces use of widget progress bar.
            If False, forces use of terminal tqdm.

        Returns
        ------
        f : concurrent.futures.Future or None
            Future object to wait on if block is False,
            None if block is True.

        Raises
        ------
        TimeoutError : if timeout is reached.
        """
        if n is None:
            # get n from cluster, if not specified
            if self.cluster is None:
                raise TypeError("n engines to wait for must be specified")

            if self.cluster.n:
                n = self.cluster.n
            else:
                # compute n from engine sets,
                # e.g. the default where n is calculated at runtime from `cpu_count()`
                n = sum(engine_set.n for engine_set in self.cluster.engines.values())

        if len(self.ids) >= n:
            if block:
                return
            else:
                f = Future()
                f.set_result(None)
                return f
        tic = now = time.perf_counter()
        if timeout >= 0:
            deadline = tic + timeout
        else:
            deadline = None
            seconds_remaining = 1000

        if interactive is None:
            if ipp._NONINTERACTIVE:
                interactive = False
            else:
                interactive = get_ipython() is not None

        if interactive:
            progress_bar = util.progress(
                widget=widget,
                initial=len(self.ids),
                total=n,
                unit='engine',
            )

        # watch for engine-stop events

        engine_stop_future = Future()
        if self.cluster and self.cluster.engines:
            # we have a parent cluster,
            # monitor for engines stopping
            def _signal_stopped(stop_data):
                if not engine_stop_future.done():
                    engine_stop_future.set_result(stop_data)

            def _remove_signal_stopped(f, es):
                try:
                    es.stop_callbacks.remove(_signal_stopped)
                except ValueError:
                    # already removed
                    pass

            for es in self.cluster.engines.values():
                es.on_stop(_signal_stopped)
                engine_stop_future.add_done_callback(
                    partial(_remove_signal_stopped, es=es)
                )

        future = Future()

        def cancel_engine_stop(_):
            if not engine_stop_future.done():
                engine_stop_future.cancel()

        future.add_done_callback(cancel_engine_stop)

        def notice_engine_stop(f):
            if future.done():
                return
            stop_data = f.result()
            future.set_exception(error.EngineError(f"Engine set stopped: {stop_data}"))

        engine_stop_future.add_done_callback(notice_engine_stop)

        def notify(event):
            if future.done():
                return
            if event["event"] == "unregister":
                future.set_exception(
                    error.EngineError(
                        f"Engine {event['id']} unregistered while waiting for engines."
                    )
                )
                return
            current_n = len(self.ids)
            if interactive:
                progress_bar.update(current_n - progress_bar.n)
            if current_n >= n:
                # ensure we refresh when we finish
                if interactive:
                    progress_bar.close()
                future.set_result(None)

        self._registration_callbacks.append(notify)
        future.add_done_callback(lambda f: self._registration_callbacks.remove(notify))

        def on_timeout():
            """Called when timeout is reached"""
            if future.done():
                return

            current_n = len(self.ids)
            if current_n >= n:
                future.set_result(None)
            else:
                future.set_exception(
                    TimeoutError(
                        f"{n} engines not ready in {timeout} seconds. Currently ready: {current_n}"
                    )
                )

        def schedule_timeout():
            handle = self._io_loop.add_timeout(
                self._io_loop.time() + timeout, on_timeout
            )
            future.add_done_callback(lambda f: self._io_loop.remove_timeout(handle))

        if timeout >= 0:
            self._io_loop.add_callback(schedule_timeout)

        if block:
            return future.result()
        else:
            return future

    def wait(self, jobs=None, timeout=-1):
        """waits on one or more `jobs`, for up to `timeout` seconds.

        Parameters
        ----------
        jobs : int, str, or list of ints and/or strs, or one or more AsyncResult objects
            ints are indices to self.history
            strs are msg_ids
            default: wait on all outstanding messages
        timeout : float
            a time in seconds, after which to give up.
            default is -1, which means no timeout

        Returns
        -------
        True : when all msg_ids are done
        False : timeout reached, some msg_ids still outstanding
        """
        futures = []
        if jobs is None:
            if not self.outstanding:
                return True
            # make a copy, so that we aren't passing a mutable collection to _futures_for_msgs
            theids = set(self.outstanding)
        else:
            if isinstance(jobs, (str, int, AsyncResult)) or not isinstance(
                jobs, Iterable
            ):
                jobs = [jobs]
            theids = set()
            for job in jobs:
                if isinstance(job, int):
                    # index access
                    job = self.history[job]
                elif isinstance(job, AsyncResult):
                    theids.update(job.msg_ids)
                    continue
                elif _is_future(job):
                    futures.append(job)
                    continue
                theids.add(job)
            if not futures and not theids.intersection(self.outstanding):
                return True

        futures.extend(self._futures_for_msgs(theids))
        return self._await_futures(futures, timeout)

    def wait_interactive(self, jobs=None, interval=1.0, timeout=-1.0):
        """Wait interactively for jobs

        If no job is specified, will wait for all outstanding jobs to complete.
        """
        if jobs is None:
            # get futures for results
            futures = [f for f in self._futures.values() if hasattr(f, 'output')]
            if not futures:
                return
            ar = AsyncResult(self, futures, owner=False)
        else:
            ar = self._asyncresult_from_jobs(jobs, owner=False)
        return ar.wait_interactive(interval=interval, timeout=timeout)

    # --------------------------------------------------------------------------
    # Control methods
    # --------------------------------------------------------------------------

    def _send_control_request(self, targets, msg_type, content, block):
        """Send a request on the control channel"""
        target_identities = self._build_targets(targets)[0]
        futures = []
        for ident in target_identities:
            futures.append(
                self._send(self._control_stream, msg_type, content=content, ident=ident)
            )
        if not block:
            return multi_future(futures)
        for future in futures:
            future.wait()
            msg = future.result()
            if msg['content']['status'] != 'ok':
                raise self._unwrap_exception(msg['content'])

    def send_signal(self, sig, targets=None, block=None):
        """Send a signal target(s).

        Parameters
        ----------

        sig: int or str
            The signal number or name to send.
            If a str, will evaluate to getattr(signal, sig) on the engine,
            which is useful for sending signals cross-platform.

        .. versionadded:: 7.0
        """
        block = self.block if block is None else block
        return self._send_control_request(
            targets=targets,
            msg_type='signal_request',
            content={'sig': sig},
            block=block,
        )

    def clear(self, targets=None, block=None):
        """Clear the namespace in target(s)."""
        block = self.block if block is None else block
        return self._send_control_request(
            targets=targets, msg_type='clear_request', content={}, block=block
        )

    def abort(self, jobs=None, targets=None, block=None):
        """Abort specific jobs from the execution queues of target(s).

        This is a mechanism to prevent jobs that have already been submitted
        from executing.
        To halt a running job,
        you must interrupt the engine(s) by sending a signal.
        This can be done via os.kill for local engines,
        or :meth:`.Cluster.signal_engines` for multiple engines.

        Parameters
        ----------
        jobs : msg_id, list of msg_ids, or AsyncResult
            The jobs to be aborted

            If unspecified/None: abort all outstanding jobs.

        """
        block = self.block if block is None else block
        jobs = jobs if jobs is not None else list(self.outstanding)

        msg_ids = []
        if isinstance(jobs, (str, AsyncResult)):
            jobs = [jobs]
        bad_ids = [obj for obj in jobs if not isinstance(obj, (str, AsyncResult))]
        if bad_ids:
            raise TypeError(
                f"Invalid msg_id type {bad_ids[0]!r}, expected str or AsyncResult"
            )
        for j in jobs:
            if isinstance(j, AsyncResult):
                msg_ids.extend(j.msg_ids)
            else:
                msg_ids.append(j)
        content = dict(msg_ids=msg_ids)

        return self._send_control_request(
            targets,
            msg_type='abort_request',
            content=content,
            block=block,
        )

    def shutdown(self, targets='all', restart=False, hub=False, block=None):
        """Terminates one or more engine processes, optionally including the hub.

        Parameters
        ----------
        targets : list of ints or 'all' [default: all]
            Which engines to shutdown.
        hub : bool [default: False]
            Whether to include the Hub.  hub=True implies targets='all'.
        block : bool [default: self.block]
            Whether to wait for clean shutdown replies or not.
        restart : bool [default: False]
            NOT IMPLEMENTED
            whether to restart engines after shutting them down.
        """
        from ipyparallel.error import NoEnginesRegistered

        if restart:
            raise NotImplementedError("Engine restart is not yet implemented")

        block = self.block if block is None else block
        if hub:
            targets = 'all'
        try:
            targets = self._build_targets(targets)[0]
        except NoEnginesRegistered:
            targets = []

        futures = []
        for t in targets:
            futures.append(
                self._send(
                    self._control_stream,
                    'shutdown_request',
                    content={'restart': restart},
                    ident=t,
                )
            )
        error = False
        if block or hub:
            for f in futures:
                f.wait()
                msg = f.result()
                if msg['content']['status'] != 'ok':
                    error = self._unwrap_exception(msg['content'])

        if hub:
            # don't trigger close on shutdown notification, which will prevent us from receiving the reply
            self._notification_handlers['shutdown_notification'] = lambda msg: None
            msg = self._send_recv(self._query_stream, 'shutdown_request')
            if msg['content']['status'] != 'ok':
                error = self._unwrap_exception(msg['content'])
            if not error:
                self.close()

        if error:
            raise error

    def become_dask(
        self, targets='all', port=0, nanny=False, scheduler_args=None, **worker_args
    ):
        """Turn the IPython cluster into a dask.distributed cluster

        Parameters
        ----------
        targets : target spec (default: all)
            Which engines to turn into dask workers.
        port : int (default: random)
            Which port
        nanny : bool (default: False)
            Whether to start workers as subprocesses instead of in the engine process.
            Using a nanny allows restarting the worker processes via ``executor.restart``.
        scheduler_args : dict
            Keyword arguments (e.g. ip) to pass to the distributed.Scheduler constructor.
        **worker_args
            Any additional keyword arguments (e.g. nthreads) are passed to the distributed.Worker constructor.

        Returns
        -------
        client = distributed.Client
            A dask.distributed.Client connected to the dask cluster.
        """
        import distributed

        dview = self.direct_view(targets)

        if scheduler_args is None:
            scheduler_args = {}
        else:
            scheduler_args = dict(scheduler_args)  # copy

        # Start a Scheduler on the Hub:
        reply = self._send_recv(
            self._query_stream,
            'become_dask_request',
            {'scheduler_args': scheduler_args},
        )
        if reply['content']['status'] != 'ok':
            raise self._unwrap_exception(reply['content'])
        distributed_info = reply['content']

        # Start a Worker on the selected engines:
        worker_args['address'] = distributed_info['address']
        worker_args['nanny'] = nanny
        # distributed 2.0 renamed ncores to nthreads
        if int(distributed.__version__.partition(".")[0]) >= 2:
            nthreads = "nthreads"
        else:
            nthreads = "ncores"
        # set default nthreads=1, since that's how an IPython cluster is typically set up.
        worker_args.setdefault(nthreads, 1)
        dview.apply_sync(util.become_dask_worker, **worker_args)

        # Finally, return a Client connected to the Scheduler
        try:
            distributed_Client = distributed.Client
        except AttributeError:
            # For distributed pre-1.18.1
            distributed_Client = distributed.Executor

        client = distributed_Client('{address}'.format(**distributed_info))

        return client

    def stop_dask(self, targets='all'):
        """Stop the distributed Scheduler and Workers started by become_dask.

        Parameters
        ----------
        targets : target spec (default: all)
            Which engines to stop dask workers on.
        """
        dview = self.direct_view(targets)

        # Start a Scheduler on the Hub:
        reply = self._send_recv(self._query_stream, 'stop_distributed_request')
        if reply['content']['status'] != 'ok':
            raise self._unwrap_exception(reply['content'])

        # Finally, stop all the Workers on the engines
        dview.apply_sync(util.stop_distributed_worker)

    # aliases:
    become_distributed = become_dask
    stop_distributed = stop_dask

    # --------------------------------------------------------------------------
    # Execution related methods
    # --------------------------------------------------------------------------

    def _maybe_raise(self, result):
        """wrapper for maybe raising an exception if apply failed."""
        if isinstance(result, error.RemoteError):
            raise result

        return result

    def send_apply_request(
        self,
        socket,
        f,
        args=None,
        kwargs=None,
        metadata=None,
        track=False,
        ident=None,
        message_future_hook=None,
    ):
        """construct and send an apply message via a socket.

        This is the principal method with which all engine execution is performed by views.
        """

        if self._closed:
            raise RuntimeError(
                "Client cannot be used after its sockets have been closed"
            )

        # defaults:
        args = args if args is not None else []
        kwargs = kwargs if kwargs is not None else {}
        metadata = metadata if metadata is not None else {}

        # validate arguments
        if not callable(f) and not isinstance(f, (Reference, PrePickled)):
            raise TypeError(f"f must be callable, not {type(f)}")
        if not isinstance(args, (tuple, list)):
            raise TypeError(f"args must be tuple or list, not {type(args)}")
        if not isinstance(kwargs, dict):
            raise TypeError(f"kwargs must be dict, not {type(kwargs)}")
        if not isinstance(metadata, dict):
            raise TypeError(f"metadata must be dict, not {type(metadata)}")

        bufs = serialize.pack_apply_message(
            f,
            args,
            kwargs,
            buffer_threshold=self.session.buffer_threshold,
            item_threshold=self.session.item_threshold,
        )

        future = self._send(
            socket,
            "apply_request",
            buffers=bufs,
            ident=ident,
            metadata=metadata,
            track=track,
            track_outstanding=True,
            message_future_hook=message_future_hook,
        )
        msg_id = future.msg_id

        return future

    def send_execute_request(
        self,
        socket,
        code,
        silent=True,
        metadata=None,
        ident=None,
        message_future_hook=None,
    ):
        """construct and send an execute request via a socket."""

        if self._closed:
            raise RuntimeError(
                "Client cannot be used after its sockets have been closed"
            )

        # defaults:
        metadata = metadata if metadata is not None else {}

        # validate arguments
        if not isinstance(code, str):
            raise TypeError(f"code must be text, not {type(code)}")
        if not isinstance(metadata, dict):
            raise TypeError(f"metadata must be dict, not {type(metadata)}")

        content = dict(code=code, silent=bool(silent), user_expressions={})

        future = self._send(
            socket,
            "execute_request",
            content=content,
            ident=ident,
            metadata=metadata,
            track_outstanding=True,
            message_future_hook=message_future_hook,
        )

        return future

    # --------------------------------------------------------------------------
    # construct a View object
    # --------------------------------------------------------------------------

    def load_balanced_view(self, targets=None, **kwargs):
        """construct a DirectView object.

        If no arguments are specified, create a LoadBalancedView
        using all engines.

        Parameters
        ----------
        targets : list,slice,int,etc. [default: use all engines]
            The subset of engines across which to load-balance execution
        **kwargs : passed to LoadBalancedView
        """
        if targets == 'all':
            targets = None
        if targets is not None:
            targets = self._build_targets(targets)[1]
        return LoadBalancedView(
            client=self, socket=self._task_stream, targets=targets, **kwargs
        )

    def executor(self, targets=None):
        """Construct a PEP-3148 Executor with a LoadBalancedView

        Parameters
        ----------
        targets : list,slice,int,etc. [default: use all engines]
            The subset of engines across which to load-balance execution

        Returns
        -------
        executor: Executor
            The Executor object
        """
        return self.load_balanced_view(targets).executor

    def direct_view(self, targets='all', **kwargs):
        """construct a DirectView object.

        If no targets are specified, create a DirectView using all engines.

        rc.direct_view('all') is distinguished from rc[:] in that 'all' will
        evaluate the target engines at each execution, whereas rc[:] will connect to
        all *current* engines, and that list will not change.

        That is, 'all' will always use all engines, whereas rc[:] will not use
        engines added after the DirectView is constructed.

        Parameters
        ----------
        targets : list,slice,int,etc. [default: use all engines]
            The engines to use for the View
        **kwargs : passed to DirectView
        """
        single = isinstance(targets, int)
        # allow 'all' to be lazily evaluated at each execution
        if targets != 'all':
            targets = self._build_targets(targets)[1]
        if single:
            targets = targets[0]
        return DirectView(
            client=self, socket=self._mux_stream, targets=targets, **kwargs
        )

    def broadcast_view(self, targets='all', is_coalescing=False, **kwargs):
        """construct a BroadCastView object.
        If no arguments are specified, create a BroadCastView using all engines
        using all engines.

        Parameters
        ----------
        targets : list,slice,int,etc. [default: use all engines]
            The subset of engines across which to load-balance execution
        is_coalescing : scheduler collects all messages from engines and returns them as one
        **kwargs : passed to BroadCastView
        """
        targets = self._build_targets(targets)[1]

        bcast_view = BroadcastView(
            client=self,
            socket=self._broadcast_stream,
            targets=targets,
            **kwargs,
        )
        bcast_view.is_coalescing = is_coalescing
        return bcast_view

    # --------------------------------------------------------------------------
    # Query methods
    # --------------------------------------------------------------------------

    def get_result(self, indices_or_msg_ids=None, block=None, owner=True):
        """Retrieve a result by msg_id or history index, wrapped in an AsyncResult object.

        If the client already has the results, no request to the Hub will be made.

        This is a convenient way to construct AsyncResult objects, which are wrappers
        that include metadata about execution, and allow for awaiting results that
        were not submitted by this Client.

        It can also be a convenient way to retrieve the metadata associated with
        blocking execution, since it always retrieves

        Examples
        --------
        ::

            In [10]: r = client.apply()

        Parameters
        ----------
        indices_or_msg_ids : integer history index, str msg_id, AsyncResult,
            or a list of same.
            The indices or msg_ids of indices to be retrieved
        block : bool
            Whether to wait for the result to be done
        owner : bool [default: True]
            Whether this AsyncResult should own the result.
            If so, calling `ar.get()` will remove data from the
            client's result and metadata cache.
            There should only be one owner of any given msg_id.

        Returns
        -------
        AsyncResult
            A single AsyncResult object will always be returned.
        AsyncHubResult
            A subclass of AsyncResult that retrieves results from the Hub

        """
        block = self.block if block is None else block
        if indices_or_msg_ids is None:
            indices_or_msg_ids = -1

        ar = self._asyncresult_from_jobs(indices_or_msg_ids, owner=owner)

        if block:
            ar.wait()

        return ar

    def resubmit(self, indices_or_msg_ids=None, metadata=None, block=None):
        """Resubmit one or more tasks.

        in-flight tasks may not be resubmitted.

        Parameters
        ----------
        indices_or_msg_ids : integer history index, str msg_id, or list of either
            The indices or msg_ids of indices to be retrieved
        block : bool
            Whether to wait for the result to be done

        Returns
        -------
        AsyncHubResult
            A subclass of AsyncResult that retrieves results from the Hub

        """
        block = self.block if block is None else block
        if indices_or_msg_ids is None:
            indices_or_msg_ids = -1

        theids = self._msg_ids_from_jobs(indices_or_msg_ids)
        content = dict(msg_ids=theids)

        reply = self._send_recv(self._query_stream, 'resubmit_request', content)
        content = reply['content']
        if content['status'] != 'ok':
            raise self._unwrap_exception(content)
        mapping = content['resubmitted']
        new_ids = [mapping[msg_id] for msg_id in theids]

        ar = AsyncHubResult(self, new_ids)

        if block:
            ar.wait()

        return ar

    def result_status(self, msg_ids, status_only=True):
        """Check on the status of the result(s) of the apply request with `msg_ids`.

        If status_only is False, then the actual results will be retrieved, else
        only the status of the results will be checked.

        Parameters
        ----------
        msg_ids : list of msg_ids
            if int:
                Passed as index to self.history for convenience.
        status_only : bool (default: True)
            if False:
                Retrieve the actual results of completed tasks.

        Returns
        -------
        results : dict
            There will always be the keys 'pending' and 'completed', which will
            be lists of msg_ids that are incomplete or complete. If `status_only`
            is False, then completed results will be keyed by their `msg_id`.
        """
        theids = self._msg_ids_from_jobs(msg_ids)

        completed = []
        local_results = {}

        # comment this block out to temporarily disable local shortcut:
        for msg_id in theids:
            if msg_id in self.results:
                completed.append(msg_id)
                local_results[msg_id] = self.results[msg_id]
                theids.remove(msg_id)

        if theids:  # some not locally cached
            content = dict(msg_ids=theids, status_only=status_only)
            reply = self._send_recv(
                self._query_stream, "result_request", content=content
            )
            content = reply['content']
            if content['status'] != 'ok':
                raise self._unwrap_exception(content)
            buffers = reply['buffers']
        else:
            content = dict(completed=[], pending=[])

        content['completed'].extend(completed)

        if status_only:
            return content

        failures = []
        # load cached results into result:
        content.update(local_results)

        # update cache with results:
        for msg_id in sorted(theids):
            if msg_id in content['completed']:
                rec = content[msg_id]
                parent = util.extract_dates(rec['header'])
                header = util.extract_dates(rec['result_header'])
                rcontent = rec['result_content']
                iodict = rec['io']
                if isinstance(rcontent, str):
                    rcontent = self.session.unpack(rcontent)

                md = self.metadata[msg_id]
                md_msg = dict(
                    content=rcontent,
                    parent_header=parent,
                    header=header,
                    metadata=rec['result_metadata'],
                )
                md.update(self._extract_metadata(md_msg))
                if rec.get('received'):
                    md['received'] = util._parse_date(rec['received'])
                md.update(iodict)

                if rcontent['status'] == 'ok':
                    if header['msg_type'] == 'apply_reply':
                        res, buffers = serialize.deserialize_object(buffers)
                    elif header['msg_type'] == 'execute_reply':
                        res = ExecuteReply(msg_id, rcontent, md)
                    else:
                        raise KeyError(
                            "unhandled msg type: {!r}".format(header['msg_type'])
                        )
                else:
                    res = self._unwrap_exception(rcontent)
                    failures.append(res)

                self.results[msg_id] = res
                content[msg_id] = res

        if len(theids) == 1 and failures:
            raise failures[0]

        error.collect_exceptions(failures, "result_status")
        return content

    def queue_status(self, targets='all', verbose=False):
        """Fetch the status of engine queues.

        Parameters
        ----------
        targets : int/str/list of ints/strs
            the engines whose states are to be queried.
            default : all
        verbose : bool
            Whether to return lengths only, or lists of ids for each element
        """
        if targets == 'all':
            # allow 'all' to be evaluated on the engine
            engine_ids = None
        else:
            engine_ids = self._build_targets(targets)[1]
        content = dict(targets=engine_ids, verbose=verbose)
        reply = self._send_recv(self._query_stream, "queue_request", content=content)
        content = reply['content']
        status = content.pop('status')
        if status != 'ok':
            raise self._unwrap_exception(content)
        content = util.int_keys(content)
        if isinstance(targets, int):
            return content[targets]
        else:
            return content

    def _msg_ids_from_target(self, targets=None):
        """Build a list of msg_ids from the list of engine targets"""
        if not targets:  # needed as _build_targets otherwise uses all engines
            return []
        target_ids = self._build_targets(targets)[0]
        return [
            md_id
            for md_id in self.metadata
            if self.metadata[md_id]["engine_uuid"] in target_ids
        ]

    def _msg_ids_from_jobs(self, jobs=None):
        """Given a 'jobs' argument, convert it to a list of msg_ids.

        Can be either one or a list of:

        - msg_id strings
        - integer indices to this Client's history
        - AsyncResult objects
        """
        if not isinstance(jobs, (list, tuple, set, types.GeneratorType)):
            jobs = [jobs]
        msg_ids = []
        for job in jobs:
            if isinstance(job, int):
                msg_ids.append(self.history[job])
            elif isinstance(job, str):
                msg_ids.append(job)
            elif isinstance(job, AsyncResult):
                msg_ids.extend(job.msg_ids)
            else:
                raise TypeError(f"Expected msg_id, int, or AsyncResult, got {job!r}")
        return msg_ids

    def _asyncresult_from_jobs(self, jobs=None, owner=False):
        """Construct an AsyncResult from msg_ids or asyncresult objects"""
        if not isinstance(jobs, (list, tuple, set, types.GeneratorType)):
            single = True
            jobs = [jobs]
        else:
            single = False
        futures = []
        msg_ids = []
        for job in jobs:
            if isinstance(job, int):
                job = self.history[job]
            if isinstance(job, str):
                if job in self._futures:
                    futures.append(job)
                elif job in self.results:
                    f = MessageFuture(job)
                    f.set_result(self.results[job])
                    f.output = Future()
                    f.output.metadata = self.metadata[job]
                    f.output.set_result(None)
                    futures.append(f)
                else:
                    msg_ids.append(job)
            elif isinstance(job, AsyncResult):
                if job._children:
                    futures.extend(job._children)
                else:
                    msg_ids.extend(job.msg_ids)
            else:
                raise TypeError(f"Expected msg_id, int, or AsyncResult, got {job!r}")
        if msg_ids:
            if single:
                msg_ids = msg_ids[0]
            return AsyncHubResult(self, msg_ids, owner=owner)
        else:
            if single and futures:
                futures = futures[0]
            return AsyncResult(self, futures, owner=owner)

    def purge_local_results(self, jobs=[], targets=[]):
        """Clears the client caches of results and their metadata.

        Individual results can be purged by msg_id, or the entire
        history of specific targets can be purged.

        Use `purge_local_results('all')` to scrub everything from the Clients's
        results and metadata caches.

        After this call all `AsyncResults` are invalid and should be discarded.

        If you must "reget" the results, you can still do so by using
        `client.get_result(msg_id)` or `client.get_result(asyncresult)`. This will
        redownload the results from the hub if they are still available
        (i.e `client.purge_hub_results(...)` has not been called.

        Parameters
        ----------
        jobs : str or list of str or AsyncResult objects
            the msg_ids whose results should be purged.
        targets : int/list of ints
            The engines, by integer ID, whose entire result histories are to be purged.

        Raises
        ------
        RuntimeError : if any of the tasks to be purged are still outstanding.

        """
        if not targets and not jobs:
            raise ValueError("Must specify at least one of `targets` and `jobs`")

        if jobs == 'all':
            if self.outstanding:
                raise RuntimeError(f"Can't purge outstanding tasks: {self.outstanding}")
            self.results.clear()
            self.metadata.clear()
            self._futures.clear()
            self._output_futures.clear()
        else:
            msg_ids = set()
            msg_ids.update(self._msg_ids_from_target(targets))
            msg_ids.update(self._msg_ids_from_jobs(jobs))
            still_outstanding = self.outstanding.intersection(msg_ids)
            if still_outstanding:
                raise RuntimeError(
                    f"Can't purge outstanding tasks: {still_outstanding}"
                )
            for mid in msg_ids:
                self.results.pop(mid, None)
                self.metadata.pop(mid, None)
                self._futures.pop(mid, None)
                self._output_futures.pop(mid, None)

    def purge_hub_results(self, jobs=[], targets=[]):
        """Tell the Hub to forget results.

        Individual results can be purged by msg_id, or the entire
        history of specific targets can be purged.

        Use `purge_results('all')` to scrub everything from the Hub's db.

        Parameters
        ----------
        jobs : str or list of str or AsyncResult objects
            the msg_ids whose results should be forgotten.
        targets : int/str/list of ints/strs
            The targets, by int_id, whose entire history is to be purged.

            default : None
        """
        if not targets and not jobs:
            raise ValueError("Must specify at least one of `targets` and `jobs`")
        if targets:
            targets = self._build_targets(targets)[1]

        # construct msg_ids from jobs
        if jobs == 'all':
            msg_ids = jobs
        else:
            msg_ids = self._msg_ids_from_jobs(jobs)

        content = dict(engine_ids=targets, msg_ids=msg_ids)
        reply = self._send_recv(self._query_stream, "purge_request", content=content)
        content = reply['content']
        if content['status'] != 'ok':
            raise self._unwrap_exception(content)

    def purge_results(self, jobs=[], targets=[]):
        """Clears the cached results from both the hub and the local client

        Individual results can be purged by msg_id, or the entire
        history of specific targets can be purged.

        Use `purge_results('all')` to scrub every cached result from both the Hub's and
        the Client's db.

        Equivalent to calling both `purge_hub_results()` and `purge_client_results()` with
        the same arguments.

        Parameters
        ----------
        jobs : str or list of str or AsyncResult objects
            the msg_ids whose results should be forgotten.
        targets : int/str/list of ints/strs
            The targets, by int_id, whose entire history is to be purged.

            default : None
        """
        self.purge_local_results(jobs=jobs, targets=targets)
        self.purge_hub_results(jobs=jobs, targets=targets)

    def purge_everything(self):
        """Clears all content from previous Tasks from both the hub and the local client

        In addition to calling `purge_results("all")` it also deletes the history and
        other bookkeeping lists.
        """
        self.purge_results("all")
        self.history = []
        self.session.digest_history.clear()

    def hub_history(self):
        """Get the Hub's history

        Just like the Client, the Hub has a history, which is a list of msg_ids.
        This will contain the history of all clients, and, depending on configuration,
        may contain history across multiple cluster sessions.

        Any msg_id returned here is a valid argument to `get_result`.

        Returns
        -------
        msg_ids : list of strs
            list of all msg_ids, ordered by task submission time.
        """

        reply = self._send_recv(self._query_stream, "history_request", content={})
        content = reply['content']
        if content['status'] != 'ok':
            raise self._unwrap_exception(content)
        else:
            return content['history']

    def db_query(self, query, keys=None):
        """Query the Hub's TaskRecord database

        This will return a list of task record dicts that match `query`

        Parameters
        ----------
        query : mongodb query dict
            The search dict. See mongodb query docs for details.
        keys : list of strs [optional]
            The subset of keys to be returned.  The default is to fetch everything but buffers.
            'msg_id' will *always* be included.
        """
        if isinstance(keys, str):
            keys = [keys]
        content = dict(query=query, keys=keys)
        reply = self._send_recv(self._query_stream, "db_request", content=content)
        content = reply['content']
        if content['status'] != 'ok':
            raise self._unwrap_exception(content)

        records = content['records']

        buffer_lens = content['buffer_lens']
        result_buffer_lens = content['result_buffer_lens']
        buffers = reply['buffers']
        has_bufs = buffer_lens is not None
        has_rbufs = result_buffer_lens is not None
        for i, rec in enumerate(records):
            # unpack datetime objects
            for hkey in ('header', 'result_header'):
                if hkey in rec:
                    rec[hkey] = util.extract_dates(rec[hkey])
            for dtkey in ('submitted', 'started', 'completed', 'received'):
                if dtkey in rec:
                    rec[dtkey] = util._parse_date(rec[dtkey])
            # relink buffers
            if has_bufs:
                blen = buffer_lens[i]
                rec['buffers'], buffers = buffers[:blen], buffers[blen:]
            if has_rbufs:
                blen = result_buffer_lens[i]
                rec['result_buffers'], buffers = buffers[:blen], buffers[blen:]

        return records


__all__ = ['Client']
ipython-ipyparallel-14e3c43/ipyparallel/client/futures.py000066400000000000000000000066301520071063500237170ustar00rootroot00000000000000"""Future-related utils"""

# Copyright (c) IPython Development Team.
# Distributed under the terms of the Modified BSD License.
import sys
from concurrent.futures import Future
from threading import Event

from tornado.log import app_log


class MessageFuture(Future):
    """Future class to wrap async messages"""

    def __init__(self, msg_id, header=None, *, track=False):
        super().__init__()
        self.msg_id = msg_id
        self.header = header or {"msg_type": "unknown_request"}
        self._evt = Event()
        self.track = track
        self._tracker = None
        self.tracker = Future()
        self.iopub_callbacks = []
        if not track:
            self.tracker.set_result(None)
        self.add_done_callback(lambda f: self._evt.set())

    def wait(self, timeout=None):
        if not self.done():
            return self._evt.wait(timeout)
        return True


# The following are from tornado 5.0b1
# avoids hang using gen.multi_future on asyncio,
# because Futures cannot be created in another thread


def future_set_result_unless_cancelled(future, value):
    """Set the given ``value`` as the `Future`'s result, if not cancelled.

    Avoids asyncio.InvalidStateError when calling set_result() on
    a cancelled `asyncio.Future`.

    .. versionadded:: 5.0
    """
    if not future.cancelled():
        future.set_result(value)


def future_set_exc_info(future, exc_info):
    """Set the given ``exc_info`` as the `Future`'s exception.

    Understands both `asyncio.Future` and Tornado's extensions to
    enable better tracebacks on Python 2.

    .. versionadded:: 5.0
    """
    if hasattr(future, 'set_exc_info'):
        # Tornado's Future
        future.set_exc_info(exc_info)
    else:
        # asyncio.Future
        future.set_exception(exc_info[1])


def future_add_done_callback(future, callback):
    """Arrange to call ``callback`` when ``future`` is complete.

    ``callback`` is invoked with one argument, the ``future``.

    If ``future`` is already done, ``callback`` is invoked immediately.
    This may differ from the behavior of ``Future.add_done_callback``,
    which makes no such guarantee.

    .. versionadded:: 5.0
    """
    if future.done():
        callback(future)
    else:
        future.add_done_callback(callback)


def multi_future(children):
    """Wait for multiple asynchronous futures in parallel.

    This function is similar to `multi`, but does not support
    `YieldPoints `.

    .. versionadded:: 4.0
    """
    unfinished_children = set(children)

    future = Future()
    if not children:
        future_set_result_unless_cancelled(future, [])

    def callback(f):
        unfinished_children.remove(f)
        if not unfinished_children:
            result_list = []
            for f in children:
                try:
                    result_list.append(f.result())
                except Exception as e:
                    if future.done():
                        app_log.error(
                            "Multiple exceptions in yield list", exc_info=True
                        )
                    else:
                        future_set_exc_info(future, sys.exc_info())
            if not future.done():
                future_set_result_unless_cancelled(future, result_list)

    listening = set()
    for f in children:
        if f not in listening:
            listening.add(f)
            future_add_done_callback(f, callback)
    return future
ipython-ipyparallel-14e3c43/ipyparallel/client/magics.py000066400000000000000000000434741520071063500234740ustar00rootroot00000000000000"""
=============
parallelmagic
=============

Magic command interface for interactive parallel work.

Usage
=====

``%autopx``

{AUTOPX_DOC}

``%px``

{PX_DOC}

``%pxresult``

{RESULT_DOC}

``%pxconfig``

{CONFIG_DOC}

"""

import inspect
import re
import sys
import time
from contextlib import nullcontext
from textwrap import dedent

from IPython.core import magic_arguments
from IPython.core.error import UsageError
from IPython.core.magic import Magics, no_var_expand

import ipyparallel as ipp

from .. import error

# -----------------------------------------------------------------------------
# Definitions of magic functions for use with IPython
# -----------------------------------------------------------------------------


def _iscoroutinefunction(f):
    """Check if a callable is a coroutine function
    (either generator-style or async def)
    """
    if inspect.isgeneratorfunction(f):
        return True
    if hasattr(inspect, 'iscoroutinefunction') and inspect.iscoroutinefunction(f):
        return True
    return False


def _asyncify(f):
    """Wrap a blocking call in a coroutine

    Does not make the call non-blocking,
    just conforms to the API assuming it is awaitable.
    For use when patching-in replacement methods.
    """

    async def async_f(*args, **kwargs):
        return f(*args, **kwargs)

    return async_f


NO_LAST_RESULT = "%pxresult recalls last %px result, which has not yet been used."


def exec_args(f):
    """decorator for adding block/targets args for execution

    applied to %pxconfig and %%px
    """
    args = [
        magic_arguments.argument(
            '-b',
            '--block',
            action="store_const",
            const=True,
            dest='block',
            help="use blocking (sync) execution",
        ),
        magic_arguments.argument(
            '-a',
            '--noblock',
            action="store_const",
            const=False,
            dest='block',
            help="use non-blocking (async) execution",
        ),
        magic_arguments.argument(
            '--stream',
            action="store_const",
            const=True,
            dest='stream',
            help="stream stdout/stderr in real-time (only valid when using blocking execution)",
        ),
        magic_arguments.argument(
            '--no-stream',
            action="store_const",
            const=False,
            dest='stream',
            help="do not stream stdout/stderr in real-time",
        ),
        magic_arguments.argument(
            '-t',
            '--targets',
            type=str,
            help="specify the targets on which to execute",
        ),
        magic_arguments.argument(
            '--verbose',
            action="store_const",
            const=True,
            dest="set_verbose",
            help="print a message at each execution",
        ),
        magic_arguments.argument(
            '--no-verbose',
            action="store_const",
            const=False,
            dest="set_verbose",
            help="don't print any messages",
        ),
        magic_arguments.argument(
            '--progress-after',
            dest="progress_after_seconds",
            type=float,
            default=None,
            help="""Wait this many seconds before showing a progress bar for task completion.

            Use -1 for no progress, 0 for always showing progress immediately.
            """,
        ),
        magic_arguments.argument(
            '--signal-on-interrupt',
            dest='signal_on_interrupt',
            type=str,
            default=None,
            help="""Send signal to engines on Keyboard Interrupt. By default a SIGINT is sent.
            Note that this is only applicable when running in blocking mode.
            Choices: SIGINT, 2, SIGKILL, 9, 0 (nop), etc.
            """,
        ),
    ]
    for a in args:
        f = a(f)
    return f


def output_args(f):
    """decorator for output-formatting args

    applied to %pxresult and %%px
    """
    args = [
        magic_arguments.argument(
            '-r',
            action="store_const",
            dest='groupby',
            const='order',
            help="collate outputs in order (same as group-outputs=order)",
        ),
        magic_arguments.argument(
            '-e',
            action="store_const",
            dest='groupby',
            const='engine',
            help="group outputs by engine (same as group-outputs=engine)",
        ),
        magic_arguments.argument(
            '--group-outputs',
            dest='groupby',
            type=str,
            choices=['engine', 'order', 'type'],
            default='type',
            help="""Group the outputs in a particular way.

            Choices are:

            **type**: group outputs of all engines by type (stdout, stderr, displaypub, etc.).
            **engine**: display all output for each engine together.
            **order**: like type, but individual displaypub output from each engine is collated.
              For example, if multiple plots are generated by each engine, the first
              figure of each engine will be displayed, then the second of each, etc.
            """,
        ),
        magic_arguments.argument(
            '-o',
            '--out',
            dest='save_name',
            type=str,
            help="""store the AsyncResult object for this computation
                 in the global namespace under this name.
            """,
        ),
    ]
    for a in args:
        f = a(f)
    return f


class ParallelMagics(Magics):
    """A set of magics useful when controlling a parallel IPython cluster."""

    # magic-related
    magics = None
    registered = True

    # suffix for magics
    suffix = ''
    # A flag showing if autopx is activated or not
    _autopx = False
    # the current view used by the magics:
    view = None
    # last result cache for %pxresult
    last_result = None
    # verbose flag
    verbose = False
    # streaming output flag
    stream_output = not ipp._NONINTERACTIVE
    # seconds to wait before showing progress bar for blocking execution
    progress_after_seconds = 2
    # signal to send to engines on keyboard-interrupt
    signal_on_interrupt = "SIGINT"

    def __init__(self, shell, view, suffix=''):
        self.view = view
        self.suffix = suffix

        # register magics
        self.magics = dict(cell={}, line={})
        line_magics = self.magics['line']

        px = 'px' + suffix
        if not suffix:
            # keep %result for legacy compatibility
            line_magics['result'] = self.result

        line_magics['pxresult' + suffix] = self.result
        line_magics[px] = self.px
        line_magics['pxconfig' + suffix] = self.pxconfig
        line_magics['auto' + px] = self.autopx

        self.magics['cell'][px] = self.cell_px

        super().__init__(shell=shell)

    def _eval_target_str(self, ts):
        if ':' in ts:
            targets = eval(f"self.view.client.ids[{ts}]")
        elif 'all' in ts:
            targets = 'all'
        else:
            targets = eval(ts)
        return targets

    def _eval_signal_str(self, sig_str: str):
        if sig_str.isdigit():
            return int(sig_str)
        return sig_str

    @magic_arguments.magic_arguments()
    @exec_args
    def pxconfig(self, line):
        """configure default targets/blocking for %px magics"""
        args = magic_arguments.parse_argstring(self.pxconfig, line)
        if args.targets:
            self.view.targets = self._eval_target_str(args.targets)
        if args.block is not None:
            self.view.block = args.block
        if args.set_verbose is not None:
            self.verbose = args.set_verbose
        if args.stream is not None:
            self.stream_output = args.stream
        if args.signal_on_interrupt is not None:
            self.signal_on_interrupt = self._eval_signal_str(args.signal_on_interrupt)

        if args.progress_after_seconds is not None:
            self.progress_after_seconds = args.progress_after_seconds

    @magic_arguments.magic_arguments()
    @output_args
    def result(self, line=''):
        """Print the result of the last asynchronous %px command.

        This lets you recall the results of %px computations after
        asynchronous submission (block=False).

        Examples
        --------
        ::

            In [23]: %px os.getpid()
            Async parallel execution on engine(s): all

            In [24]: %pxresult
            Out[8:10]: 60920
            Out[9:10]: 60921
            Out[10:10]: 60922
            Out[11:10]: 60923
        """
        args = magic_arguments.parse_argstring(self.result, line)

        if self.last_result is None:
            raise UsageError(NO_LAST_RESULT)

        if args.save_name:
            self.shell.user_ns[args.save_name] = self.last_result
            return

        self.last_result.get()
        self.last_result.display_outputs(groupby=args.groupby)

    @no_var_expand
    def px(self, line=''):
        """Executes the given python command in parallel.

        Examples
        --------
        ::

            In [24]: %px a = os.getpid()
            Parallel execution on engine(s): all

            In [25]: %px print a
            [stdout:0] 1234
            [stdout:1] 1235
            [stdout:2] 1236
            [stdout:3] 1237
        """
        return self.parallel_execute(line)

    def parallel_execute(
        self,
        cell,
        block=None,
        groupby='type',
        save_name=None,
        stream_output=None,
        progress_after=None,
        signal_on_interrupt=None,
    ):
        """implementation used by %px and %%parallel"""

        # defaults:
        block = self.view.block if block is None else block
        stream_output = self.stream_output if stream_output is None else stream_output
        signal_on_interrupt = (
            self.signal_on_interrupt
            if signal_on_interrupt is None
            else signal_on_interrupt
        )

        base = "Parallel" if block else "Async parallel"

        targets = self.view.targets
        if isinstance(targets, list) and len(targets) > 10:
            str_targets = str(targets[:4])[:-1] + ', ..., ' + str(targets[-4:])[1:]
        else:
            str_targets = str(targets)
        if self.verbose:
            print(base + f" execution on engine(s): {str_targets}")

        result = self.view.execute(cell, silent=False, block=False)
        result._fname = "%px"
        self.last_result = result

        if save_name:
            self.shell.user_ns[save_name] = result

        if block:
            try:
                if progress_after is None:
                    progress_after = self.progress_after_seconds

                cm = result.stream_output() if stream_output else nullcontext()
                with cm:
                    finished_waiting = False
                    if progress_after > 0:
                        # finite progress-after timeout
                        # wait for 'quick' results before showing progress
                        tic = time.perf_counter()
                        deadline = tic + progress_after
                        result.wait(timeout=progress_after)
                        remaining = max(deadline - time.perf_counter(), 0)
                        result.wait_for_output(timeout=remaining)
                        finished_waiting = result.done()

                    if not finished_waiting:
                        if progress_after >= 0:
                            # not an immediate result, start interactive progress
                            result.wait_interactive()
                            result.wait_for_output(1)

                    try:
                        result.get()
                    except error.CompositeError as e:
                        if stream_output and result._output_ready:
                            # already streamed, show an abbreviated result
                            raise error.AlreadyDisplayedError(e) from None
                        else:
                            raise
                # Skip redisplay if streaming output
            except KeyboardInterrupt:
                if signal_on_interrupt is not None:
                    print(
                        f"Received Keyboard Interrupt. Sending signal {signal_on_interrupt} to engines...",
                        file=sys.stderr,
                    )
                    self.view.client.send_signal(
                        signal_on_interrupt, targets=targets, block=True
                    )
                else:
                    raise
            finally:
                # always redisplay outputs if not streaming,
                # on both success and error

                if not stream_output:
                    # wait for at most 1 second for output to be complete
                    result.wait_for_output(1)
                    result.display_outputs(groupby)
        else:
            # return AsyncResult only on non-blocking submission
            return result

    @magic_arguments.magic_arguments()
    @exec_args
    @output_args
    @magic_arguments.argument(
        '--local',
        action="store_const",
        const=True,
        dest="local",
        help="also execute the cell in the local namespace",
    )
    def cell_px(self, line='', cell=None):
        """Executes the cell in parallel.

        Examples
        --------
        ::

            In [24]: %%px --noblock
               ....: a = os.getpid()
            Async parallel execution on engine(s): all

            In [25]: %%px
               ....: print a
            [stdout:0] 1234
            [stdout:1] 1235
            [stdout:2] 1236
            [stdout:3] 1237
        """

        args = magic_arguments.parse_argstring(self.cell_px, line)

        if args.targets:
            save_targets = self.view.targets
            self.view.targets = self._eval_target_str(args.targets)
        signal_on_interrupt = None
        if args.signal_on_interrupt:
            signal_on_interrupt = self._eval_signal_str(args.signal_on_interrupt)
        # if running local, don't block until after local has run
        block = False if args.local else args.block
        try:
            ar = self.parallel_execute(
                cell,
                block=block,
                groupby=args.groupby,
                save_name=args.save_name,
                stream_output=args.stream,
                progress_after=args.progress_after_seconds,
                signal_on_interrupt=signal_on_interrupt,
            )
        finally:
            if args.targets:
                self.view.targets = save_targets

        # run locally after submitting remote
        block = self.view.block if args.block is None else args.block
        if args.local:
            self.shell.run_cell(cell)
            # now apply blocking behavior to remote execution
            if block:
                ar.get()
                ar.display_outputs(args.groupby)
        if not block:
            return ar

    def autopx(self, line=''):
        """Toggles auto parallel mode.

        Once this is called, all commands typed at the command line are send to
        the engines to be executed in parallel. To control which engine are
        used, the ``targets`` attribute of the view before
        entering ``%autopx`` mode.

        Then you can do the following::

            In [25]: %autopx
            %autopx to enabled

            In [26]: a = 10
            Parallel execution on engine(s): [0,1,2,3]
            In [27]: print a
            Parallel execution on engine(s): [0,1,2,3]
            [stdout:0] 10
            [stdout:1] 10
            [stdout:2] 10
            [stdout:3] 10

            In [27]: %autopx
            %autopx disabled
        """
        if self._autopx:
            self._disable_autopx()
        else:
            self._enable_autopx()

    def _enable_autopx(self):
        """Enable %autopx mode by saving the original run_cell and installing
        pxrun_cell.
        """
        self._original_run_cell = self.shell.run_cell
        self._original_run_nodes = self.shell.run_ast_nodes

        pxrun_cell = self.pxrun_cell
        if _iscoroutinefunction(self.shell.run_cell):
            # original is a coroutine,
            # wrap ours in a coroutine
            pxrun_cell = _asyncify(pxrun_cell)
        self.shell.run_cell = pxrun_cell

        pxrun_nodes = self.pxrun_nodes
        if _iscoroutinefunction(self.shell.run_ast_nodes):
            # original is a coroutine,
            # wrap ours in a coroutine
            pxrun_nodes = _asyncify(pxrun_nodes)
        self.shell.run_ast_nodes = pxrun_nodes

        self._autopx = True
        print("%autopx enabled")

    def _disable_autopx(self):
        """Disable %autopx by restoring the original InteractiveShell.run_cell."""
        if self._autopx:
            self.shell.run_cell = self._original_run_cell
            self.shell.run_ast_nodes = self._original_run_nodes
            self._autopx = False
            print("%autopx disabled")

    def pxrun_nodes(self, *args, **kwargs):
        cell = self._px_cell
        if re.search(r'^\s*%autopx\b', cell):
            self._disable_autopx()
            return False
        else:
            try:
                self.parallel_execute(cell)
            except Exception:
                self.shell.showtraceback()
                return True
            else:
                return False

    def pxrun_cell(self, raw_cell, *args, **kwargs):
        """drop-in replacement for InteractiveShell.run_cell.

        This executes code remotely, instead of in the local namespace.

        See InteractiveShell.run_cell for details.
        """
        self._px_cell = raw_cell
        return self._original_run_cell(raw_cell, *args, **kwargs)


__doc__ = __doc__.format(
    AUTOPX_DOC=dedent(ParallelMagics.autopx.__doc__),
    PX_DOC=dedent(ParallelMagics.px.__doc__),
    RESULT_DOC=dedent(ParallelMagics.result.__doc__),
    CONFIG_DOC=dedent(ParallelMagics.pxconfig.__doc__),
)
ipython-ipyparallel-14e3c43/ipyparallel/client/map.py000066400000000000000000000067361520071063500230060ustar00rootroot00000000000000"""Classes used in scattering and gathering sequences.

Scattering consists of partitioning a sequence and sending the various
pieces to individual nodes in a cluster.
"""

# Copyright (c) IPython Development Team.
# Distributed under the terms of the Modified BSD License.
import sys
from itertools import chain, islice

numpy = None


def is_array(obj):
    """Is an object a numpy array?

    Avoids importing numpy until it is requested
    """
    global numpy
    if 'numpy' not in sys.modules:
        return False

    if numpy is None:
        import numpy
    return isinstance(obj, numpy.ndarray)


class Map:
    """A class for partitioning a sequence using a map."""

    def getPartition(self, seq, p, q, n=None):
        """Returns the pth partition of q partitions of seq.

        The length can be specified as `n`,
        otherwise it is the value of `len(seq)`
        """
        n = len(seq) if n is None else n
        # Test for error conditions here
        if p < 0 or p >= q:
            raise ValueError(f"must have 0 <= p <= q, but have p={p},q={q}")

        remainder = n % q
        basesize = n // q

        if p < remainder:
            low = p * (basesize + 1)
            high = low + basesize + 1
        else:
            low = p * basesize + remainder
            high = low + basesize

        try:
            result = seq[low:high]
        except TypeError:
            # some objects (iterators) can't be sliced,
            # use islice:
            result = list(islice(seq, low, high))

        return result

    def joinPartitions(self, listOfPartitions):
        return self.concatenate(listOfPartitions)

    def concatenate(self, listOfPartitions):
        testObject = listOfPartitions[0]
        # First see if we have a known array type
        if is_array(testObject):
            return numpy.concatenate(listOfPartitions)
        # Next try for Python sequence types
        if isinstance(testObject, (list, tuple)):
            return list(chain.from_iterable(listOfPartitions))
        # If we have scalars, just return listOfPartitions
        return listOfPartitions


class RoundRobinMap(Map):
    """Partitions a sequence in a round robin fashion.

    This currently does not work!
    """

    def getPartition(self, seq, p, q, n=None):
        n = len(seq) if n is None else n
        return seq[p:n:q]

    def joinPartitions(self, listOfPartitions):
        testObject = listOfPartitions[0]
        # First see if we have a known array type
        if is_array(testObject):
            return self.flatten_array(listOfPartitions)
        if isinstance(testObject, (list, tuple)):
            return self.flatten_list(listOfPartitions)
        return listOfPartitions

    def flatten_array(self, listOfPartitions):
        test = listOfPartitions[0]
        shape = list(test.shape)
        shape[0] = sum(p.shape[0] for p in listOfPartitions)
        A = numpy.ndarray(shape)
        N = shape[0]
        q = len(listOfPartitions)
        for p, part in enumerate(listOfPartitions):
            A[p:N:q] = part
        return A

    def flatten_list(self, listOfPartitions):
        flat = []
        for i in range(len(listOfPartitions[0])):
            flat.extend([part[i] for part in listOfPartitions if len(part) > i])
        return flat


def mappable(obj):
    """return whether an object is mappable or not."""
    if isinstance(obj, (tuple, list)):
        return True
    if is_array(obj):
        return True
    return False


dists = {'b': Map, 'r': RoundRobinMap}
ipython-ipyparallel-14e3c43/ipyparallel/client/remotefunction.py000066400000000000000000000230531520071063500252610ustar00rootroot00000000000000"""Remote Functions and decorators for Views."""

# Copyright (c) IPython Development Team.
# Distributed under the terms of the Modified BSD License.
import warnings
from inspect import signature

from decorator import decorator

from ..serialize import PrePickled
from . import map as Map
from .asyncresult import AsyncMapResult

# -----------------------------------------------------------------------------
# Functions and Decorators
# -----------------------------------------------------------------------------


def remote(view, block=None, **flags):
    """Turn a function into a remote function.

    This method can be used for map::

        In [1]: @remote(view,block=True)
           ...: def func(a):
           ...:    pass
    """

    def remote_function(f):
        return RemoteFunction(view, f, block=block, **flags)

    return remote_function


def parallel(view, dist='b', block=None, ordered=True, **flags):
    """Turn a function into a parallel remote function.

    This method can be used for map::

        In [1]: @parallel(view, block=True)
           ...: def func(a):
           ...:    pass
    """

    def parallel_function(f):
        return ParallelFunction(
            view, f, dist=dist, block=block, ordered=ordered, **flags
        )

    return parallel_function


def getname(f):
    """Get the name of an object.

    For use in case of callables that are not functions, and
    thus may not have __name__ defined.

    Order: f.__name__ >  f.name > str(f)
    """
    try:
        return f.__name__
    except Exception:
        pass
    try:
        return f.name
    except Exception:
        pass

    return str(f)


@decorator
def sync_view_results(f, self, *args, **kwargs):
    """sync relevant results from self.client to our results attribute.

    This is a clone of view.sync_results, but for remote functions
    """
    view = self.view
    if view._in_sync_results:
        return f(self, *args, **kwargs)
    view._in_sync_results = True
    try:
        ret = f(self, *args, **kwargs)
    finally:
        view._in_sync_results = False
        view._sync_results()
    return ret


# --------------------------------------------------------------------------
# Classes
# --------------------------------------------------------------------------


class RemoteFunction:
    """Turn an existing function into a remote function.

    Parameters
    ----------

    view : View instance
        The view to be used for execution
    f : callable
        The function to be wrapped into a remote function
    block : bool [default: None]
        Whether to wait for results or not.  The default behavior is
        to use the current `block` attribute of `view`

    **flags : remaining kwargs are passed to View.temp_flags
    """

    view = None  # the remote connection
    func = None  # the wrapped function
    block = None  # whether to block
    flags = None  # dict of extra kwargs for temp_flags

    def __init__(self, view, f, block=None, **flags):
        self.view = view
        self.func = f
        self.block = block
        self.flags = flags

        # copy function attributes for nicer inspection
        # of decorated functions
        self.__name__ = getname(f)
        if getattr(f, '__doc__', None):
            self.__doc__ = f'{self.__class__.__name__} wrapping:\n{f.__doc__}'
        if getattr(f, '__signature__', None):
            self.__signature__ = f.__signature__
        else:
            try:
                self.__signature__ = signature(f)
            except Exception:
                # no signature, but that's okay
                pass

    def __call__(self, *args, **kwargs):
        block = self.view.block if self.block is None else self.block
        with self.view.temp_flags(block=block, **self.flags):
            return self.view.apply(self.func, *args, **kwargs)


def _map(f, *sequences):
    return list(map(f, *sequences))


_prepickled_map = None


class ParallelFunction(RemoteFunction):
    """Class for mapping a function to sequences.

    This will distribute the sequences according the a mapper, and call
    the function on each sub-sequence.  If called via map, then the function
    will be called once on each element, rather that each sub-sequence.

    Parameters
    ----------

    view : View instance
        The view to be used for execution
    f : callable
        The function to be wrapped into a remote function
    dist : str [default: 'b']
        The key for which mapObject to use to distribute sequences
        options are:

        * 'b' : use contiguous chunks in order
        * 'r' : use round-robin striping

    block : bool [default: None]
        Whether to wait for results or not.  The default behavior is
        to use the current `block` attribute of `view`
    chunksize : int or None
        The size of chunk to use when breaking up sequences in a load-balanced manner
    ordered : bool [default: True]
        Whether the result should be kept in order. If False,
        results become available as they arrive, regardless of submission order.
    return_exceptions : bool [default: False]
    **flags
        remaining kwargs are passed to View.temp_flags
    """

    chunksize = None
    ordered = None
    mapObject = None

    def __init__(
        self,
        view,
        f,
        dist='b',
        block=None,
        chunksize=None,
        ordered=True,
        return_exceptions=False,
        **flags,
    ):
        super().__init__(view, f, block=block, **flags)
        self.chunksize = chunksize
        self.ordered = ordered
        self.return_exceptions = return_exceptions

        mapClass = Map.dists[dist]
        self.mapObject = mapClass()

    @sync_view_results
    def __call__(self, *sequences, **kwargs):
        global _prepickled_map
        if _prepickled_map is None:
            _prepickled_map = PrePickled(_map)
        client = self.view.client
        _mapping = kwargs.pop('__ipp_mapping', False)
        if kwargs:
            raise TypeError(f"Unexpected keyword arguments: {kwargs}")

        lens = []
        maxlen = minlen = -1
        for i, seq in enumerate(sequences):
            try:
                n = len(seq)
            except Exception:
                seq = list(seq)
                if isinstance(sequences, tuple):
                    # can't alter a tuple
                    sequences = list(sequences)
                sequences[i] = seq
                n = len(seq)
            if n > maxlen:
                maxlen = n
            if minlen == -1 or n < minlen:
                minlen = n
            lens.append(n)

        if maxlen == 0:
            # nothing to iterate over
            return []

        # check that the length of sequences match
        if not _mapping and minlen != maxlen:
            msg = f'all sequences must have equal length, but have {lens}'
            raise ValueError(msg)

        balanced = 'Balanced' in self.view.__class__.__name__
        if balanced:
            if self.chunksize:
                nparts = maxlen // self.chunksize + int(maxlen % self.chunksize > 0)
            else:
                nparts = maxlen
            targets = [None] * nparts
        else:
            if self.chunksize:
                warnings.warn(
                    "`chunksize` is ignored unless load balancing", UserWarning
                )
            # multiplexed:
            targets = self.view.targets
            # 'all' is lazily evaluated at execution time, which is now:
            if targets == 'all':
                targets = client._build_targets(targets)[1]
            elif isinstance(targets, int):
                # single-engine view, targets must be iterable
                targets = [targets]
            nparts = len(targets)

        futures = []

        pf = PrePickled(self.func)

        chunk_sizes = {}
        chunk_size = 1

        for index, t in enumerate(targets):
            args = []
            for seq in sequences:
                part = self.mapObject.getPartition(seq, index, nparts, maxlen)
                args.append(part)

            if sum(len(arg) for arg in args) == 0:
                continue

            if _mapping:
                chunk_size = min(len(arg) for arg in args)

            args = [PrePickled(arg) for arg in args]

            if _mapping:
                f = _prepickled_map
                args = [pf] + args
            else:
                f = pf

            view = self.view if balanced else client[t]
            with view.temp_flags(block=False, **self.flags):
                ar = view.apply(f, *args)
                ar.owner = False

            msg_id = ar.msg_ids[0]
            chunk_sizes[msg_id] = chunk_size
            futures.extend(ar._children)

        r = AsyncMapResult(
            self.view.client,
            futures,
            self.mapObject,
            fname=getname(self.func),
            ordered=self.ordered,
            return_exceptions=self.return_exceptions,
            chunk_sizes=chunk_sizes,
        )

        if self.block:
            try:
                return r.get()
            except KeyboardInterrupt:
                return r
        else:
            return r

    def map(self, *sequences):
        """call a function on each element of one or more sequence(s) remotely.
        This should behave very much like the builtin map, but return an AsyncMapResult
        if self.block is False.

        That means it can take generators (will be cast to lists locally),
        and mismatched sequence lengths will be padded with None.
        """
        return self(*sequences, __ipp_mapping=True)


__all__ = ['remote', 'parallel', 'RemoteFunction', 'ParallelFunction']
ipython-ipyparallel-14e3c43/ipyparallel/client/view.py000066400000000000000000001652461520071063500232050ustar00rootroot00000000000000"""Views of remote engines."""

# Copyright (c) IPython Development Team.
# Distributed under the terms of the Modified BSD License.
import builtins
import concurrent.futures
import inspect
import secrets
import threading
import time
import warnings
from collections import deque
from contextlib import contextmanager

from decorator import decorator
from IPython import get_ipython
from traitlets import Any, Bool, CFloat, Dict, HasTraits, Instance, Integer, List, Set

import ipyparallel as ipp
from ipyparallel import util
from ipyparallel.controller.dependency import Dependency, dependent

from .. import serialize
from ..serialize import PrePickled
from . import map as Map
from .asyncresult import AsyncMapResult, AsyncResult
from .remotefunction import ParallelFunction, getname, parallel, remote

# -----------------------------------------------------------------------------
# Decorators
# -----------------------------------------------------------------------------


@decorator
def save_ids(f, self, *args, **kwargs):
    """Keep our history and outstanding attributes up to date after a method call."""
    n_previous = len(self.client.history)
    try:
        ret = f(self, *args, **kwargs)
    finally:
        nmsgs = len(self.client.history) - n_previous
        msg_ids = self.client.history[-nmsgs:]
        self.history.extend(msg_ids)
        self.outstanding.update(msg_ids)
    return ret


@decorator
def sync_results(f, self, *args, **kwargs):
    """sync relevant results from self.client to our results attribute."""
    if self._in_sync_results:
        return f(self, *args, **kwargs)
    self._in_sync_results = True
    try:
        ret = f(self, *args, **kwargs)
    finally:
        self._in_sync_results = False
        self._sync_results()
    return ret


# -----------------------------------------------------------------------------
# Classes
# -----------------------------------------------------------------------------


class View(HasTraits):
    """Base View class for more convenint apply(f,*args,**kwargs) syntax via attributes.

    Don't use this class, use subclasses.

    Methods
    -------

    spin
        flushes incoming results and registration state changes
        control methods spin, and requesting `ids` also ensures up to date

    wait
        wait on one or more msg_ids

    execution methods
        apply
        legacy: execute, run

    data movement
        push, pull, scatter, gather

    query methods
        get_result, queue_status, purge_results, result_status

    control methods
        abort, shutdown

    """

    # flags
    block = Bool(False)
    track = Bool(False)
    targets = Any()
    label = Any()

    history = List()
    outstanding = Set()
    results = Dict()
    client = Instance('ipyparallel.Client', allow_none=True)

    _socket = Any()
    _flag_names = List(['targets', 'block', 'track', 'label'])
    _in_sync_results = Bool(False)
    _targets = Any()
    _idents = Any()

    def __init__(self, client=None, socket=None, **flags):
        super().__init__(client=client, _socket=socket)
        self.results = client.results
        self.block = client.block
        self.executor = ViewExecutor(self)

        self.set_flags(**flags)

        assert self.__class__ is not View, "Don't use base View objects, use subclasses"

    def __repr__(self):
        strtargets = str(self.targets)
        if len(strtargets) > 16:
            strtargets = strtargets[:12] + '...]'
        return f"<{self.__class__.__name__} {strtargets}>"

    def __len__(self):
        if isinstance(self.targets, list):
            return len(self.targets)
        elif isinstance(self.targets, int):
            return 1
        else:
            return len(self.client)

    def set_flags(self, **kwargs):
        """set my attribute flags by keyword.

        Views determine behavior with a few attributes (`block`, `track`, `label`, etc.).
        These attributes can be set all at once by name with this method.

        Parameters
        ----------
        block : bool
            whether to wait for results
        track : bool
            whether to create a MessageTracker to allow the user to
            safely edit after arrays and buffers during non-copying
            sends.
        label : str
            set an optional user-defined task identifier
        """
        for name, value in kwargs.items():
            if name not in self._flag_names:
                raise KeyError(f"Invalid name: {name!r}")
            else:
                setattr(self, name, value)

        return self  # returning self would allow direct calling of map/apply in one command (no context manager)

    @contextmanager
    def temp_flags(self, **kwargs):
        """temporarily set flags, for use in `with` statements.

        See set_flags for permanent setting of flags

        Examples
        --------
        >>> view.track=False
        ...
        >>> with view.temp_flags(track=True):
        ...    ar = view.apply(dostuff, my_big_array)
        ...    ar.tracker.wait() # wait for send to finish
        >>> view.track
        False

        """
        # preflight: save flags, and set temporaries
        saved_flags = {}
        for f in self._flag_names:
            saved_flags[f] = getattr(self, f)
        self.set_flags(**kwargs)
        # yield to the with-statement block
        try:
            yield
        finally:
            # postflight: restore saved flags
            self.set_flags(**saved_flags)

    # ----------------------------------------------------------------
    # apply
    # ----------------------------------------------------------------

    def _sync_results(self):
        """to be called by @sync_results decorator

        after submitting any tasks.
        """
        delta = self.outstanding.difference(self.client.outstanding)
        completed = self.outstanding.intersection(delta)
        self.outstanding = self.outstanding.difference(completed)

    @sync_results
    @save_ids
    def _really_apply(self, f, args, kwargs, block=None, **options):
        """wrapper for client.send_apply_request"""
        raise NotImplementedError("Implement in subclasses")

    def apply(self, __ipp_f, *args, **kwargs):
        """calls ``f(*args, **kwargs)`` on remote engines, returning the result.

        This method sets all apply flags via this View's attributes.

        Returns :class:`~ipyparallel.client.asyncresult.AsyncResult`
        instance if ``self.block`` is False, otherwise the return value of
        ``f(*args, **kwargs)``.
        """
        return self._really_apply(__ipp_f, args, kwargs)

    def apply_async(self, __ipp_f, *args, **kwargs):
        """calls ``f(*args, **kwargs)`` on remote engines in a nonblocking manner.

        Returns :class:`~ipyparallel.client.asyncresult.AsyncResult` instance.
        """
        return self._really_apply(__ipp_f, args, kwargs, block=False)

    def apply_sync(self, __ipp_f, *args, **kwargs):
        """calls ``f(*args, **kwargs)`` on remote engines in a blocking manner,
        returning the result.
        """
        return self._really_apply(__ipp_f, args, kwargs, block=True)

    # ----------------------------------------------------------------
    # wrappers for client and control methods
    # ----------------------------------------------------------------
    @sync_results
    def spin(self):
        """spin the client, and sync"""
        self.client.spin()

    @sync_results
    def wait(self, jobs=None, timeout=-1):
        """waits on one or more `jobs`, for up to `timeout` seconds.

        Parameters
        ----------
        jobs : int, str, or list of ints and/or strs, or one or more AsyncResult objects
            ints are indices to self.history
            strs are msg_ids
            default: wait on all outstanding messages
        timeout : float
            a time in seconds, after which to give up.
            default is -1, which means no timeout

        Returns
        -------
        True : when all msg_ids are done
        False : timeout reached, some msg_ids still outstanding
        """
        if jobs is None:
            jobs = self.history
        return self.client.wait(jobs, timeout)

    def abort(self, jobs=None, targets=None, block=None):
        """Abort jobs on my engines.

        Note: only jobs that have not started yet can be aborted.
        To halt a running job,
        you must interrupt the engine(s) via the Cluster API.

        Parameters
        ----------
        jobs : None, str, list of strs, optional
            if None: abort all jobs.
            else: abort specific msg_id(s).
        """
        block = block if block is not None else self.block
        targets = targets if targets is not None else self.targets
        jobs = jobs if jobs is not None else list(self.outstanding)

        return self.client.abort(jobs=jobs, targets=targets, block=block)

    def queue_status(self, targets=None, verbose=False):
        """Fetch the Queue status of my engines"""
        targets = targets if targets is not None else self.targets
        return self.client.queue_status(targets=targets, verbose=verbose)

    def purge_results(self, jobs=[], targets=[]):
        """Instruct the controller to forget specific results."""
        if targets is None or targets == 'all':
            targets = self.targets
        return self.client.purge_results(jobs=jobs, targets=targets)

    def shutdown(self, targets=None, restart=False, hub=False, block=None):
        """Terminates one or more engine processes, optionally including the hub."""
        block = self.block if block is None else block
        if targets is None or targets == 'all':
            targets = self.targets
        return self.client.shutdown(
            targets=targets, restart=restart, hub=hub, block=block
        )

    def get_result(self, indices_or_msg_ids=None, block=None, owner=False):
        """return one or more results, specified by history index or msg_id.

        See :meth:`ipyparallel.client.client.Client.get_result` for details.
        """

        if indices_or_msg_ids is None:
            indices_or_msg_ids = -1
        if isinstance(indices_or_msg_ids, int):
            indices_or_msg_ids = self.history[indices_or_msg_ids]
        elif isinstance(indices_or_msg_ids, (list, tuple, set)):
            indices_or_msg_ids = list(indices_or_msg_ids)
            for i, index in enumerate(indices_or_msg_ids):
                if isinstance(index, int):
                    indices_or_msg_ids[i] = self.history[index]
        return self.client.get_result(indices_or_msg_ids, block=block, owner=owner)

    # -------------------------------------------------------------------
    # Map
    # -------------------------------------------------------------------

    @sync_results
    def map(self, f, *sequences, **kwargs):
        """override in subclasses"""
        raise NotImplementedError()

    def map_async(self, f, *sequences, **kwargs):
        """Parallel version of builtin :func:`python:map`, using this view's engines.

        This is equivalent to ``map(...block=False)``.

        See `self.map` for details.
        """
        if 'block' in kwargs:
            raise TypeError("map_async doesn't take a `block` keyword argument.")
        kwargs['block'] = False
        return self.map(f, *sequences, **kwargs)

    def map_sync(self, f, *sequences, **kwargs):
        """Parallel version of builtin :func:`python:map`, using this view's engines.

        This is equivalent to ``map(...block=True)``.

        See `self.map` for details.
        """
        if 'block' in kwargs:
            raise TypeError("map_sync doesn't take a `block` keyword argument.")
        kwargs['block'] = True
        return self.map(f, *sequences, **kwargs)

    def imap(self, f, *sequences, **kwargs):
        """Parallel version of :func:`itertools.imap`.

        See `self.map` for details.

        """

        return iter(self.map_async(f, *sequences, **kwargs))

    # -------------------------------------------------------------------
    # Decorators
    # -------------------------------------------------------------------

    def remote(self, block=None, **flags):
        """Decorator for making a RemoteFunction"""
        block = self.block if block is None else block
        return remote(self, block=block, **flags)

    def parallel(self, dist='b', block=None, **flags):
        """Decorator for making a ParallelFunction"""
        block = self.block if block is None else block
        return parallel(self, dist=dist, block=block, **flags)


class DirectView(View):
    """Direct Multiplexer View of one or more engines.

    These are created via indexed access to a client:

    >>> dv_1 = client[1]
    >>> dv_all = client[:]
    >>> dv_even = client[::2]
    >>> dv_some = client[1:3]

    This object provides dictionary access to engine namespaces:

    # push a=5:
    >>> dv['a'] = 5
    # pull 'foo':
    >>> dv['foo']

    """

    def __init__(self, client=None, socket=None, targets=None, **flags):
        super().__init__(client=client, socket=socket, targets=targets, **flags)

    @property
    def importer(self):
        """sync_imports(local=True) as a property.

        See sync_imports for details.

        """
        return self.sync_imports(True)

    @contextmanager
    def sync_imports(self, local=True, quiet=False):
        """Context Manager for performing simultaneous local and remote imports.

        'import x as y' will *not* work.  The 'as y' part will simply be ignored.

        If `local=True`, then the package will also be imported locally.

        If `quiet=True`, no output will be produced when attempting remote
        imports.

        Note that remote-only (`local=False`) imports have not been implemented.

        >>> with view.sync_imports():
        ...    from numpy import recarray
        importing recarray from numpy on engine(s)

        """

        local_import = builtins.__import__
        modules = set()
        results = []

        # get the calling frame
        # that's two steps up due to `@contextmanager`
        context_frame = inspect.getouterframes(inspect.currentframe())[2].frame

        @util.interactive
        def remote_import(name, fromlist, level):
            """the function to be passed to apply, that actually performs the import
            on the engine, and loads up the user namespace.
            """
            import sys

            user_ns = globals()
            mod = __import__(name, fromlist=fromlist, level=level)
            if fromlist:
                for key in fromlist:
                    user_ns[key] = getattr(mod, key)
            else:
                user_ns[name] = sys.modules[name]

        def view_import(name, globals={}, locals={}, fromlist=[], level=0):
            """the drop-in replacement for __import__, that optionally imports
            locally as well.
            """
            # don't override nested imports
            save_import = builtins.__import__
            builtins.__import__ = local_import

            import_frame = inspect.getouterframes(inspect.currentframe())[1].frame
            if import_frame is not context_frame:
                # only forward imports from the context frame,
                # not secondary imports
                # TODO: does this ever happen, or is the above `__import__` enough?
                return local_import(name, globals, locals, fromlist, level)

            if local:
                mod = local_import(name, globals, locals, fromlist, level)
            else:
                raise NotImplementedError("remote-only imports not yet implemented")

            key = name + ':' + ','.join(fromlist or [])
            if level <= 0 and key not in modules:
                modules.add(key)
                if not quiet:
                    if fromlist:
                        print(
                            "importing {} from {} on engine(s)".format(
                                ','.join(fromlist), name
                            )
                        )
                    else:
                        print(f"importing {name} on engine(s)")
                results.append(self.apply_async(remote_import, name, fromlist, level))
            # restore override
            builtins.__import__ = save_import

            return mod

        # override __import__
        builtins.__import__ = view_import
        try:
            # enter the block
            yield
        except ImportError:
            if local:
                raise
            else:
                # ignore import errors if not doing local imports
                pass
        finally:
            # always restore __import__
            builtins.__import__ = local_import

        for r in results:
            # raise possible remote ImportErrors here
            r.get()

    def use_dill(self):
        """Expand serialization support with dill

        adds support for closures, etc.

        This calls ipyparallel.serialize.use_dill() here and on each engine.
        """
        serialize.use_dill()
        return self.apply(serialize.use_dill)

    def use_cloudpickle(self):
        """Expand serialization support with cloudpickle.

        This calls ipyparallel.serialize.use_cloudpickle() here and on each engine.
        """
        serialize.use_cloudpickle()
        return self.apply(serialize.use_cloudpickle)

    def use_pickle(self):
        """Restore

        This reverts changes to serialization caused by `use_dill|.cloudpickle`.
        """
        serialize.use_pickle()
        return self.apply(serialize.use_pickle)

    @sync_results
    @save_ids
    def _really_apply(
        self,
        f,
        args=None,
        kwargs=None,
        targets=None,
        block=None,
        track=None,
        label=None,
    ):
        """calls f(*args, **kwargs) on remote engines, returning the result.

        This method sets all of `apply`'s flags via this View's attributes.

        Parameters
        ----------
        f : callable
        args : list [default: empty]
        kwargs : dict [default: empty]
        targets : target list [default: self.targets]
            where to run
        block : bool [default: self.block]
            whether to block
        track : bool [default: self.track]
            whether to ask zmq to track the message, for safe non-copying sends
        label : str [default self.label]
            set an optional user-defined task identifier

        Returns
        -------
        if self.block is False:
            returns AsyncResult
        else:
            returns actual result of f(*args, **kwargs) on the engine(s)
            This will be a list of self.targets is also a list (even length 1), or
            the single result if self.targets is an integer engine id
        """
        args = [] if args is None else args
        kwargs = {} if kwargs is None else kwargs
        block = self.block if block is None else block
        track = self.track if track is None else track
        targets = self.targets if targets is None else targets
        label = self.label if label is None else label
        metadata = dict(label=label)

        _idents, _targets = self.client._build_targets(targets)
        futures = []

        pf = PrePickled(f)
        pargs = [PrePickled(arg) for arg in args]
        pkwargs = {k: PrePickled(v) for k, v in kwargs.items()}

        for ident in _idents:
            future = self.client.send_apply_request(
                self._socket,
                pf,
                pargs,
                pkwargs,
                track=track,
                ident=ident,
                metadata=metadata,
            )
            futures.append(future)
        if track:
            trackers = [_.tracker for _ in futures]
        else:
            trackers = []
        if isinstance(targets, int):
            futures = futures[0]
        ar = AsyncResult(
            self.client, futures, fname=getname(f), targets=_targets, owner=True
        )
        if block:
            try:
                return ar.get()
            except KeyboardInterrupt:
                pass
        return ar

    @sync_results
    def map(
        self,
        f,
        *sequences,
        block=None,
        track=False,
        return_exceptions=False,
        label=None,
    ):
        """Parallel version of builtin `map`, using this View's `targets`.

        There will be one task per target, so work will be chunked
        if the sequences are longer than `targets`.

        Results can be iterated as they are ready, but will become available in chunks.

        .. versionadded:: 7.0
            `return_exceptions`

        Parameters
        ----------
        f : callable
            function to be mapped
        *sequences : one or more sequences of matching length
            the sequences to be distributed and passed to `f`
        block : bool [default self.block]
            whether to wait for the result or not
        track : bool [default False]
            Track underlying zmq send to indicate when it is safe to modify memory.
            Only for zero-copy sends such as numpy arrays that are going to be modified in-place.
        return_exceptions : bool [default False]
            Return remote Exceptions in the result sequence instead of raising them.
        label : str [default self.label]
            set an optional user-defined task identifier

        Returns
        -------
        If block=False
            An :class:`~ipyparallel.client.asyncresult.AsyncMapResult` instance.
            An object like AsyncResult, but which reassembles the sequence of results
            into a single list. AsyncMapResults can be iterated through before all
            results are complete.
        else
            A list, the result of ``map(f,*sequences)``
        """

        if block is None:
            block = self.block
        if label is None:
            label = self.label

        assert len(sequences) > 0, "must have some sequences to map onto!"
        pf = ParallelFunction(
            self,
            f,
            block=block,
            track=track,
            return_exceptions=return_exceptions,
            label=label,
        )
        return pf.map(*sequences)

    @sync_results
    @save_ids
    def execute(self, code, silent=True, targets=None, block=None, label=None):
        """Executes `code` on `targets` in blocking or nonblocking manner.

        ``execute`` is always `bound` (affects engine namespace)

        Parameters
        ----------
        code : str
            the code string to be executed
        block : bool [default self.block]
            whether or not to wait until done to return
        label : str [default self.label]
            set an optional user-defined task identifier
        """
        block = self.block if block is None else block
        targets = self.targets if targets is None else targets
        label = self.label if label is None else label
        metadata = dict(label=label)

        _idents, _targets = self.client._build_targets(targets)
        futures = []
        for ident in _idents:
            future = self.client.send_execute_request(
                self._socket, code, silent=silent, ident=ident, metadata=metadata
            )
            futures.append(future)
        if isinstance(targets, int):
            futures = futures[0]
        ar = AsyncResult(
            self.client, futures, fname='execute', targets=_targets, owner=True
        )
        if block:
            try:
                ar.get()
                ar.wait_for_output()
            except KeyboardInterrupt:
                pass
        return ar

    def run(self, filename, targets=None, block=None, label=None):
        """Execute contents of `filename` on my engine(s).

        This simply reads the contents of the file and calls `execute`.

        Parameters
        ----------
        filename : str
            The path to the file
        targets : int/str/list of ints/strs
            the engines on which to execute
            default : all
        block : bool
            whether or not to wait until done
            default: self.block
        label : str
            set an optional user-defined task identifier

        """
        with open(filename) as f:
            # add newline in case of trailing indented whitespace
            # which will cause SyntaxError
            code = f.read() + '\n'
        return self.execute(code, block=block, targets=targets, label=label)

    def update(self, ns):
        """update remote namespace with dict `ns`

        See `push` for details.
        """
        return self.push(ns, block=self.block, track=self.track)

    def push(self, ns, targets=None, block=None, track=None):
        """update remote namespace with dict `ns`

        Parameters
        ----------
        ns : dict
            dict of keys with which to update engine namespace(s)
        block : bool [default : self.block]
            whether to wait to be notified of engine receipt

        """

        block = block if block is not None else self.block
        track = track if track is not None else self.track
        targets = targets if targets is not None else self.targets
        # applier = self.apply_sync if block else self.apply_async
        if not isinstance(ns, dict):
            raise TypeError(f"Must be a dict, not {type(ns)}")
        return self._really_apply(
            util._push, kwargs=ns, block=block, track=track, targets=targets
        )

    def get(self, key_s):
        """get object(s) by `key_s` from remote namespace

        see `pull` for details.
        """
        # block = block if block is not None else self.block
        return self.pull(key_s, block=True)

    def pull(self, names, targets=None, block=None):
        """get object(s) by `name` from remote namespace

        will return one object if it is a key.
        can also take a list of keys, in which case it will return a list of objects.
        """
        block = block if block is not None else self.block
        targets = targets if targets is not None else self.targets
        if isinstance(names, str):
            pass
        elif isinstance(names, (list, tuple, set)):
            for key in names:
                if not isinstance(key, str):
                    raise TypeError(f"keys must be str, not type {type(key)!r}")
        else:
            raise TypeError(f"names must be strs, not {names!r}")
        return self._really_apply(util._pull, (names,), block=block, targets=targets)

    def scatter(
        self, key, seq, dist='b', flatten=False, targets=None, block=None, track=None
    ):
        """
        Partition a Python sequence and send the partitions to a set of engines.
        """
        block = block if block is not None else self.block
        track = track if track is not None else self.track
        targets = targets if targets is not None else self.targets

        # construct integer ID list:
        targets = self.client._build_targets(targets)[1]

        mapObject = Map.dists[dist]()
        nparts = len(targets)
        futures = []
        _lengths = []
        for index, engineid in enumerate(targets):
            partition = mapObject.getPartition(seq, index, nparts)
            if flatten and len(partition) == 1:
                ns = {key: partition[0]}
            else:
                ns = {key: partition}
            r = self.push(ns, block=False, track=track, targets=engineid)
            r.owner = False
            futures.extend(r._children)
            _lengths.append(len(partition))

        r = AsyncResult(
            self.client, futures, fname='scatter', targets=targets, owner=True
        )
        r._scatter_lengths = _lengths
        if block:
            r.wait()
        else:
            return r

    @sync_results
    @save_ids
    def gather(self, key, dist='b', targets=None, block=None):
        """
        Gather a partitioned sequence on a set of engines as a single local seq.
        """
        block = block if block is not None else self.block
        targets = targets if targets is not None else self.targets
        mapObject = Map.dists[dist]()
        msg_ids = []

        # construct integer ID list:
        targets = self.client._build_targets(targets)[1]

        futures = []
        for index, engineid in enumerate(targets):
            ar = self.pull(key, block=False, targets=engineid)
            ar.owner = False
            futures.extend(ar._children)

        r = AsyncMapResult(self.client, futures, mapObject, fname='gather')

        if block:
            try:
                return r.get()
            except KeyboardInterrupt:
                pass
        return r

    def __getitem__(self, key):
        return self.get(key)

    def __setitem__(self, key, value):
        self.update({key: value})

    def clear(self, targets=None, block=None):
        """Clear the remote namespaces on my engines."""
        block = block if block is not None else self.block
        targets = targets if targets is not None else self.targets
        return self.client.clear(targets=targets, block=block)

    # ----------------------------------------
    # activate for %px, %autopx, etc. magics
    # ----------------------------------------

    def activate(self, suffix=''):
        """Activate IPython magics associated with this View

        Defines the magics `%px, %autopx, %pxresult, %%px, %pxconfig`

        Parameters
        ----------
        suffix : str [default: '']
            The suffix, if any, for the magics.  This allows you to have
            multiple views associated with parallel magics at the same time.

            e.g. ``rc[::2].activate(suffix='_even')`` will give you
            the magics ``%px_even``, ``%pxresult_even``, etc. for running magics
            on the even engines.
        """

        from ipyparallel.client.magics import ParallelMagics

        ip = get_ipython()
        if ip is None:
            warnings.warn(
                "The IPython parallel magics (%px, etc.) only work within IPython."
            )
            return

        M = ParallelMagics(ip, self, suffix)
        ip.magics_manager.register(M)


@decorator
def _not_coalescing(method, self, *args, **kwargs):
    """Decorator for broadcast methods that can't use reply coalescing"""
    is_coalescing = self.is_coalescing
    try:
        self.is_coalescing = False
        return method(self, *args, **kwargs)
    finally:
        self.is_coalescing = is_coalescing


class BroadcastView(DirectView):
    is_coalescing = Bool(False)

    def _init_metadata(self, target_tuples):
        """initialize request metadata"""
        return dict(
            targets=target_tuples,
            is_broadcast=True,
            is_coalescing=self.is_coalescing,
        )

    def _make_async_result(self, message_future, s_idents, **kwargs):
        original_msg_id = message_future.msg_id
        if not self.is_coalescing:
            futures = []
            for ident in s_idents:
                msg_and_target_id = f'{original_msg_id}_{ident}'
                future = self.client.create_message_futures(
                    msg_and_target_id,
                    message_future.header,
                    async_result=True,
                    track=True,
                )
                self.client.outstanding.add(msg_and_target_id)
                self.client._outstanding_dict[ident].add(msg_and_target_id)
                self.outstanding.add(msg_and_target_id)
                futures.append(future[0])
            if original_msg_id in self.outstanding:
                self.outstanding.remove(original_msg_id)
        else:
            self.client.outstanding.add(original_msg_id)
            for ident in s_idents:
                self.client._outstanding_dict[ident].add(original_msg_id)
            futures = message_future

        ar = AsyncResult(self.client, futures, owner=True, **kwargs)

        if self.is_coalescing:
            # if coalescing, discard outstanding-tracking when we are done
            def _rm_outstanding(_):
                for ident in s_idents:
                    if ident in self.client._outstanding_dict:
                        self.client._outstanding_dict[ident].discard(original_msg_id)

            ar.add_done_callback(_rm_outstanding)

        return ar

    @sync_results
    @save_ids
    def _really_apply(
        self, f, args=None, kwargs=None, block=None, track=None, targets=None
    ):
        args = [] if args is None else args
        kwargs = {} if kwargs is None else kwargs
        block = self.block if block is None else block
        track = self.track if track is None else track
        targets = self.targets if targets is None else targets
        idents, _targets = self.client._build_targets(targets)

        pf = PrePickled(f)
        pargs = [PrePickled(arg) for arg in args]
        pkwargs = {k: PrePickled(v) for k, v in kwargs.items()}

        s_idents = [ident.decode("utf8") for ident in idents]
        target_tuples = list(zip(s_idents, _targets))

        metadata = self._init_metadata(target_tuples)

        ar = None

        def make_asyncresult(message_future):
            nonlocal ar
            ar = self._make_async_result(
                message_future, s_idents, fname=getname(f), targets=_targets
            )

        self.client.send_apply_request(
            self._socket,
            pf,
            pargs,
            pkwargs,
            track=track,
            metadata=metadata,
            message_future_hook=make_asyncresult,
        )

        if block:
            try:
                return ar.get()
            except KeyboardInterrupt:
                pass
        return ar

    @sync_results
    @save_ids
    @_not_coalescing
    def execute(self, code, silent=True, targets=None, block=None):
        """Executes `code` on `targets` in blocking or nonblocking manner.

        ``execute`` is always `bound` (affects engine namespace)

        Parameters
        ----------
        code : str
            the code string to be executed
        block : bool
            whether or not to wait until done to return
            default: self.block
        """
        block = self.block if block is None else block
        targets = self.targets if targets is None else targets

        _idents, _targets = self.client._build_targets(targets)
        s_idents = [ident.decode("utf8") for ident in _idents]
        target_tuples = list(zip(s_idents, _targets))

        metadata = self._init_metadata(target_tuples)

        ar = None

        def make_asyncresult(message_future):
            nonlocal ar
            ar = self._make_async_result(
                message_future, s_idents, fname='execute', targets=_targets
            )

        message_future = self.client.send_execute_request(
            self._socket,
            code,
            silent=silent,
            metadata=metadata,
            message_future_hook=make_asyncresult,
        )
        if block:
            try:
                ar.get()
                ar.wait_for_output()
            except KeyboardInterrupt:
                pass
        return ar

    @staticmethod
    def _broadcast_map(f, *sequence_names):
        """Function passed to apply

        Equivalent, but account for the fact that scatter
        occurs in a separate step.

        Does these things:
        - resolve sequence names to sequences in the user namespace
        - collect list(map(f, *squences))
        - cleanup temporary sequence variables from scatter
        """
        sequences = []
        ip = get_ipython()
        for seq_name in sequence_names:
            sequences.append(ip.user_ns.pop(seq_name))
        return list(map(f, *sequences))

    @_not_coalescing
    def map(
        self,
        f,
        *sequences,
        block=None,
        track=False,
        return_exceptions=False,
    ):
        """Parallel version of builtin `map`, using this View's `targets`.

        There will be one task per engine, so work will be chunked
        if the sequences are longer than `targets`.

        Results can be iterated as they are ready, but will become available in chunks.

        .. note::

            BroadcastView does not yet have a fully native map implementation.
            In particular, the scatter step is still one message per engine,
            identical to DirectView,
            and typically slower due to the more complex scheduler.

            It is more efficient to partition inputs via other means (e.g. SPMD based on rank & size)
            and use `apply` to submit all tasks in one broadcast.

        .. versionadded:: 8.8

        Parameters
        ----------
        f : callable
            function to be mapped
        *sequences : one or more sequences of matching length
            the sequences to be distributed and passed to `f`
        block : bool [default self.block]
            whether to wait for the result or not
        track : bool [default False]
            Track underlying zmq send to indicate when it is safe to modify memory.
            Only for zero-copy sends such as numpy arrays that are going to be modified in-place.
        return_exceptions : bool [default False]
            Return remote Exceptions in the result sequence instead of raising them.

        Returns
        -------
        If block=False
            An :class:`~ipyparallel.client.asyncresult.AsyncMapResult` instance.
            An object like AsyncResult, but which reassembles the sequence of results
            into a single list. AsyncMapResults can be iterated through before all
            results are complete.
        else
            A list, the result of ``map(f,*sequences)``
        """
        if block is None:
            block = self.block
        if track is None:
            track = self.track

        # unique identifier, since we're living in the interactive namespace
        map_key = secrets.token_hex(5)
        dist = 'b'
        map_object = Map.dists[dist]()

        seq_names = []
        for i, seq in enumerate(sequences):
            seq_name = f"_seq_{map_key}_{i}"
            seq_names.append(seq_name)
            try:
                len(seq)
            except Exception:
                # cast length-less sequences (e.g. Range) to list
                seq = list(seq)

            ar = self.scatter(seq_name, seq, dist=dist, block=False, track=track)
            scatter_chunk_sizes = ar._scatter_lengths

        # submit the map tasks as an actual broadcast
        ar = self.apply(self._broadcast_map, f, *seq_names)
        ar.owner = False
        # re-wrap messages in an AsyncMapResult to get map API
        # this is where the 'gather' reconstruction happens
        amr = ipp.AsyncMapResult(
            self.client,
            ar._children,
            map_object,
            fname=getname(f),
            return_exceptions=return_exceptions,
            chunk_sizes={
                future.msg_id: chunk_size
                for future, chunk_size in zip(ar._children, scatter_chunk_sizes)
            },
        )

        if block:
            return amr.get()
        else:
            return amr

    # scatter/gather cannot be coalescing yet
    scatter = _not_coalescing(DirectView.scatter)
    gather = _not_coalescing(DirectView.gather)


class LazyMapIterator:
    """Iterable representation of a lazy map (imap)

    Has a `.cancel()` method to stop consuming new inputs.

    .. versionadded:: 8.0
    """

    def __init__(self, gen, signal_done):
        self._gen = gen
        self._signal_done = signal_done

    def __iter__(self):
        return self._gen

    def __next__(self):
        return next(self._gen)

    def cancel(self):
        """Stop consuming the input to the map.

        Useful to e.g. stop consuming an infinite (or just large) input
        when you've arrived at the result (or error) you needed.
        """
        self._signal_done()


class LoadBalancedView(View):
    """An load-balancing View that only executes via the Task scheduler.

    Load-balanced views can be created with the client's `view` method:

    >>> v = client.load_balanced_view()

    or targets can be specified, to restrict the potential destinations:

    >>> v = client.load_balanced_view([1,3])

    which would restrict loadbalancing to between engines 1 and 3.

    """

    follow = Any()
    after = Any()
    timeout = CFloat()
    retries = Integer(0)
    label = Any()

    _task_scheme = Any()
    _flag_names = List(
        ['targets', 'block', 'track', 'follow', 'after', 'timeout', 'retries', 'label']
    )
    _outstanding_maps = Set()

    def __init__(self, client=None, socket=None, **flags):
        super().__init__(client=client, socket=socket, **flags)
        self._task_scheme = client._task_scheme

    def _validate_dependency(self, dep):
        """validate a dependency.

        For use in `set_flags`.
        """
        if dep is None or isinstance(dep, (str, AsyncResult, Dependency)):
            return True
        elif isinstance(dep, (list, set, tuple)):
            for d in dep:
                if not isinstance(d, (str, AsyncResult)):
                    return False
        elif isinstance(dep, dict):
            if set(dep.keys()) != set(Dependency().as_dict().keys()):
                return False
            if not isinstance(dep['msg_ids'], list):
                return False
            for d in dep['msg_ids']:
                if not isinstance(d, str):
                    return False
        else:
            return False

        return True

    def _render_dependency(self, dep):
        """helper for building jsonable dependencies from various input forms."""
        if isinstance(dep, Dependency):
            return dep.as_dict()
        elif isinstance(dep, AsyncResult):
            return dep.msg_ids
        elif dep is None:
            return []
        else:
            # pass to Dependency constructor
            return list(Dependency(dep))

    def set_flags(self, **kwargs):
        """set my attribute flags by keyword.

        A View is a wrapper for the Client's apply method, but with attributes
        that specify keyword arguments, those attributes can be set by keyword
        argument with this method.

        Parameters
        ----------
        block : bool
            whether to wait for results
        track : bool
            whether to create a MessageTracker to allow the user to
            safely edit after arrays and buffers during non-copying
            sends.
        after : Dependency or collection of msg_ids
            Only for load-balanced execution (targets=None)
            Specify a list of msg_ids as a time-based dependency.
            This job will only be run *after* the dependencies
            have been met.
        follow : Dependency or collection of msg_ids
            Only for load-balanced execution (targets=None)
            Specify a list of msg_ids as a location-based dependency.
            This job will only be run on an engine where this dependency
            is met.
        timeout : float/int or None
            Only for load-balanced execution (targets=None)
            Specify an amount of time (in seconds) for the scheduler to
            wait for dependencies to be met before failing with a
            DependencyTimeout.
        retries : int
            Number of times a task will be retried on failure.
        label : str
            set an optional user-defined task identifier
        """

        super().set_flags(**kwargs)
        for name in ('follow', 'after'):
            if name in kwargs:
                value = kwargs[name]
                if self._validate_dependency(value):
                    setattr(self, name, value)
                else:
                    raise ValueError(f"Invalid dependency: {value!r}")
        if 'timeout' in kwargs:
            t = kwargs['timeout']
            if not isinstance(t, (int, float, type(None))):
                raise TypeError(f"Invalid type for timeout: {type(t)!r}")
            if t is not None:
                if t < 0:
                    raise ValueError(f"Invalid timeout: {t}")

            self.timeout = t

        return self  # returning self would allow direct calling of map/apply in one command (no context manager)

    @sync_results
    @save_ids
    def _really_apply(
        self,
        f,
        args=None,
        kwargs=None,
        block=None,
        track=None,
        after=None,
        follow=None,
        timeout=None,
        targets=None,
        retries=None,
        label=None,
    ):
        """calls f(*args, **kwargs) on a remote engine, returning the result.

        This method temporarily sets all of `apply`'s flags for a single call.

        Parameters
        ----------
        f : callable
        args : list [default: empty]
        kwargs : dict [default: empty]
        block : bool [default: self.block]
            whether to block
        track : bool [default: self.track]
            whether to ask zmq to track the message, for safe non-copying sends
        label : str [default self.label]
            set an optional user-defined task identifier
        !!!!!! TODO : THE REST HERE  !!!!

        Returns
        -------
        if self.block is False:
            returns AsyncResult
        else:
            returns actual result of f(*args, **kwargs) on the engine(s)
            This will be a list of self.targets is also a list (even length 1), or
            the single result if self.targets is an integer engine id
        """

        # validate whether we can run
        if self._socket.closed():
            msg = "Task farming is disabled"
            if self._task_scheme == 'pure':
                msg += " because the pure ZMQ scheduler cannot handle"
                msg += " disappearing engines."
            raise RuntimeError(msg)

        if self._task_scheme == 'pure':
            # pure zmq scheme doesn't support extra features
            msg = "Pure ZMQ scheduler doesn't support the following flags:"
            "follow, after, retries, targets, timeout"
            if follow or after or retries or targets or timeout:
                # hard fail on Scheduler flags
                raise RuntimeError(msg)
            if isinstance(f, dependent):
                # soft warn on functional dependencies
                warnings.warn(msg, RuntimeWarning)

        # build args
        args = [] if args is None else args
        kwargs = {} if kwargs is None else kwargs
        block = self.block if block is None else block
        track = self.track if track is None else track
        after = self.after if after is None else after
        retries = self.retries if retries is None else retries
        follow = self.follow if follow is None else follow
        timeout = self.timeout if timeout is None else timeout
        targets = self.targets if targets is None else targets
        label = self.label if label is None else label

        if not isinstance(retries, int):
            raise TypeError(f'retries must be int, not {type(retries)!r}')

        if targets is None:
            idents = []
        else:
            idents = self.client._build_targets(targets)[0]
            # ensure *not* bytes
            idents = [ident.decode() for ident in idents]

        after = self._render_dependency(after)
        follow = self._render_dependency(follow)
        metadata = dict(
            after=after,
            follow=follow,
            timeout=timeout,
            targets=idents,
            retries=retries,
            label=label,
        )

        future = self.client.send_apply_request(
            self._socket, f, args, kwargs, track=track, metadata=metadata
        )

        ar = AsyncResult(
            self.client,
            future,
            fname=getname(f),
            targets=None,
            owner=True,
        )
        if block:
            try:
                return ar.get()
            except KeyboardInterrupt:
                pass
        return ar

    @sync_results
    @save_ids
    def map(
        self,
        f,
        *sequences,
        block=None,
        chunksize=1,
        ordered=True,
        return_exceptions=False,
        label=None,
    ):
        """Parallel version of builtin `map`, load-balanced by this View.

        Each `chunksize` elements will be a separate task, and will be
        load-balanced. This lets individual elements be available for iteration
        as soon as they arrive.

        .. versionadded:: 7.0
            `return_exceptions`

        Parameters
        ----------
        f : callable
            function to be mapped
        *sequences : one or more sequences of matching length
            the sequences to be distributed and passed to `f`
        block : bool [default self.block]
            whether to wait for the result or not
        chunksize : int [default 1]
            how many elements should be in each task.
        ordered : bool [default True]
            Whether the results should be gathered as they arrive, or enforce
            the order of submission.

            Only applies when iterating through AsyncMapResult as results arrive.
            Has no effect when block=True.

        return_exceptions: bool [default False]
            Return Exceptions instead of raising on the first exception.
        label : str [default self.label]
            set an optional user-defined task identifier

        Returns
        -------
        if block=False
            An :class:`~ipyparallel.client.asyncresult.AsyncMapResult` instance.
            An object like AsyncResult, but which reassembles the sequence of results
            into a single list. AsyncMapResults can be iterated through before all
            results are complete.
        else
            A list, the result of ``map(f,*sequences)``
        """

        # default
        if block is None:
            block = self.block
        if label is None:
            label = self.label

        assert len(sequences) > 0, "must have some sequences to map onto!"

        pf = ParallelFunction(
            self,
            f,
            block=block,
            chunksize=chunksize,
            ordered=ordered,
            return_exceptions=return_exceptions,
            label=label,
        )
        return pf.map(*sequences)

    def imap(
        self,
        f,
        *sequences,
        ordered=True,
        max_outstanding='auto',
        return_exceptions=False,
    ):
        """Parallel version of lazily-evaluated `imap`, load-balanced by this View.

        `ordered`, and `max_outstanding` can be specified by keyword only.

        Unlike other map functions in IPython Parallel,
        this one does not consume the full iterable before submitting work,
        returning a single 'AsyncMapResult' representing the full computation.

        Instead, it consumes iterables as they come, submitting up to `max_outstanding`
        tasks to the cluster before waiting on results (default: one task per engine).
        This allows it to work with infinite generators,
        and avoid potentially expensive read-ahead for large streams of inputs
        that may not fit in memory all at once.

        .. versionadded:: 7.0

        Parameters
        ----------
        f : callable
            function to be mapped
        *sequences : one or more sequences of matching length
            the sequences to be distributed and passed to `f`
        ordered : bool [default True]
            Whether the results should be yielded on a first-come-first-yield basis,
            or preserve the order of submission.

        max_outstanding : int [default len(engines)]
            The maximum number of tasks to be outstanding.

            max_outstanding=0 will greedily consume the whole generator
            (map_async may be more efficient).

            A limit of 1 should be strictly worse than running a local map,
            as there will be no parallelism.

            Use this to tune how greedily input generator should be consumed.

        return_exceptions : bool [default False]
            Return Exceptions instead of raising them.

        Returns
        -------

        lazily-evaluated generator, yielding results of `f` on each item of sequences.
        Yield-order depends on `ordered` argument.
        """

        assert len(sequences) > 0, "must have some sequences to map onto!"

        if max_outstanding == 'auto':
            max_outstanding = len(self)

        pf = PrePickled(f)

        map_id = secrets.token_bytes(16)

        # record that a map is outstanding, mainly for Executor.shutdown
        self._outstanding_maps.add(map_id)

        def signal_done():
            nonlocal iterator_done
            iterator_done = True
            self._outstanding_maps.discard(map_id)

        outstanding_lock = threading.Lock()

        if ordered:
            outstanding = deque()
            add_outstanding = outstanding.append
        else:
            outstanding = set()
            add_outstanding = outstanding.add

        def wait_for_ready():
            while not outstanding and not iterator_done:
                # no outstanding futures, need to wait for something to wait for
                time.sleep(0.1)
            if not outstanding:
                # nothing to wait for, iterator_done is True
                return []

            if ordered:
                with outstanding_lock:
                    return [outstanding.popleft()]
            else:
                # unordered, yield whatever finishes first, as soon as it's ready
                # repeat with timeout because the consumer thread may be adding to `outstanding`
                with outstanding_lock:
                    to_wait = outstanding.copy()
                done, _ = concurrent.futures.wait(
                    to_wait,
                    return_when=concurrent.futures.FIRST_COMPLETED,
                    timeout=0.5,
                )
                if done:
                    with outstanding_lock:
                        for f in done:
                            outstanding.remove(f)
                return done

        arg_iterator = iter(zip(*sequences))
        iterator_done = False

        # consume inputs in _another_ thread,
        # to avoid blocking the IO thread with a possibly blocking generator
        # only need one thread for this, though.
        consumer_pool = concurrent.futures.ThreadPoolExecutor(1)

        def consume_callback(f):
            if not iterator_done:
                consumer_pool.submit(consume_next)

        def consume_next():
            """Consume the next call from the argument iterator

            If max_outstanding, schedules consumption when the result finishes.
            If running with no limit, schedules another consumption immediately.
            """
            nonlocal iterator_done
            if iterator_done:
                return

            try:
                args = next(arg_iterator)
                ar = self.apply_async(pf, *args)
            except StopIteration:
                signal_done()
                return
            except Exception as e:
                # exception consuming iterator, propagate
                ar = concurrent.futures.Future()
                # mock get so it gets re-raised when awaited
                ar.get = lambda *args: ar.result()
                ar.set_exception(e)
                with outstanding_lock:
                    add_outstanding(ar)
                signal_done()
                return

            with outstanding_lock:
                add_outstanding(ar)
            if max_outstanding:
                ar.add_done_callback(consume_callback)
            else:
                consumer_pool.submit(consume_next)

        # kick it off
        # only need one if not using max_outstanding,
        # as each eventloop tick will submit a new item
        # otherwise, start one consumer for each slot, which will chain
        kickoff_count = 1 if max_outstanding == 0 else max_outstanding
        submit_futures = []
        for i in range(kickoff_count):
            submit_futures.append(consumer_pool.submit(consume_next))

        # await the first one, just in case it raises
        try:
            submit_futures[0].result()
        except Exception:
            # make sure we clean up
            signal_done()
            raise
        del submit_futures

        # wrap result-yielding in another call
        # because if this function is itself a generator
        # the first submission won't happen until the first result is requested
        def iter_results():
            nonlocal outstanding
            with consumer_pool:
                while not iterator_done:
                    # yield results as they become ready
                    for ready_ar in wait_for_ready():
                        yield ready_ar.get(return_exceptions=return_exceptions)

            # yield any remaining results
            if ordered:
                for ar in outstanding:
                    yield ar.get(return_exceptions=return_exceptions)
            else:
                while outstanding:
                    done, outstanding = concurrent.futures.wait(
                        outstanding, return_when=concurrent.futures.FIRST_COMPLETED
                    )
                    for ar in done:
                        yield ar.get(return_exceptions=return_exceptions)

        return LazyMapIterator(iter_results(), signal_done)

    def register_joblib_backend(self, name='ipyparallel', make_default=False):
        """Register this View as a joblib parallel backend

        To make this the default backend, set make_default=True.

        Use with::

            p = Parallel(backend='ipyparallel')
            ...

        See joblib docs for details

        Requires joblib >= 0.10

        .. versionadded:: 5.1
        """
        from joblib.parallel import register_parallel_backend

        from ._joblib import IPythonParallelBackend

        register_parallel_backend(
            name,
            lambda **kwargs: IPythonParallelBackend(view=self, **kwargs),
            make_default=make_default,
        )


class ViewExecutor(concurrent.futures.Executor):
    """A PEP-3148 Executor API for Views

    Access as view.executor
    """

    def __init__(self, view):
        self.view = view
        self._max_workers = len(self.view)

    def submit(self, fn, *args, **kwargs):
        """Same as View.apply_async"""
        return self.view.apply_async(fn, *args, **kwargs)

    def map(self, func, *iterables, **kwargs):
        """Return generator for View.map_async"""
        if 'timeout' in kwargs:
            warnings.warn("timeout unsupported in ViewExecutor.map")
            kwargs.pop('timeout')
        return self.view.imap(func, *iterables, **kwargs)

    def shutdown(self, wait=True):
        """ViewExecutor does *not* shutdown engines

        results are awaited if wait=True, but engines are *not* shutdown.
        """
        if wait:
            # wait for *submission* of outstanding maps,
            # otherwise view.wait won't know what to wait for
            outstanding_maps = getattr(self.view, "_outstanding_maps")
            if outstanding_maps:
                while outstanding_maps:
                    time.sleep(0.1)
            self.view.wait()


__all__ = ['LoadBalancedView', 'DirectView', 'ViewExecutor', 'BroadcastView']
ipython-ipyparallel-14e3c43/ipyparallel/cluster/000077500000000000000000000000001520071063500220465ustar00rootroot00000000000000ipython-ipyparallel-14e3c43/ipyparallel/cluster/__init__.py000066400000000000000000000000371520071063500241570ustar00rootroot00000000000000from .cluster import *  # noqa
ipython-ipyparallel-14e3c43/ipyparallel/cluster/__main__.py000066400000000000000000000001011520071063500241300ustar00rootroot00000000000000if __name__ == '__main__':
    from .app import main

    main()
ipython-ipyparallel-14e3c43/ipyparallel/cluster/_winhpcjob.py000066400000000000000000000244141520071063500245470ustar00rootroot00000000000000"""
Job and task components for writing .xml files that the Windows HPC Server
2008 can use to start jobs.
"""

import os
import re
import uuid
from xml.etree import ElementTree as ET

from traitlets import Bool, Enum, Instance, Integer, List, Unicode
from traitlets.config.configurable import Configurable

# -----------------------------------------------------------------------------
# Job and Task classes
# -----------------------------------------------------------------------------


def as_str(value):
    if isinstance(value, str):
        return value
    elif isinstance(value, bool):
        if value:
            return 'true'
        else:
            return 'false'
    elif isinstance(value, (int, float)):
        return repr(value)
    else:
        return value


def indent(elem, level=0):
    i = "\n" + level * "  "
    if len(elem):
        if not elem.text or not elem.text.strip():
            elem.text = i + "  "
        if not elem.tail or not elem.tail.strip():
            elem.tail = i
        for elem in elem:
            indent(elem, level + 1)
        if not elem.tail or not elem.tail.strip():
            elem.tail = i
    else:
        if level and (not elem.tail or not elem.tail.strip()):
            elem.tail = i


def find_username():
    domain = os.environ.get('USERDOMAIN')
    username = os.environ.get('USERNAME', '')
    if domain is None:
        return username
    else:
        return f'{domain}\\{username}'


class WinHPCJob(Configurable):
    job_id = Unicode('')
    job_name = Unicode('MyJob', config=True)
    min_cores = Integer(1, config=True)
    max_cores = Integer(1, config=True)
    min_sockets = Integer(1, config=True)
    max_sockets = Integer(1, config=True)
    min_nodes = Integer(1, config=True)
    max_nodes = Integer(1, config=True)
    unit_type = Unicode("Core", config=True)
    auto_calculate_min = Bool(True, config=True)
    auto_calculate_max = Bool(True, config=True)
    run_until_canceled = Bool(False, config=True)
    is_exclusive = Bool(False, config=True)
    username = Unicode(find_username(), config=True)
    job_type = Unicode('Batch', config=True)
    priority = Enum(
        ('Lowest', 'BelowNormal', 'Normal', 'AboveNormal', 'Highest'),
        default_value='Highest',
        config=True,
    )
    requested_nodes = Unicode('', config=True)
    project = Unicode('IPython', config=True)
    xmlns = Unicode('http://schemas.microsoft.com/HPCS2008/scheduler/')
    version = Unicode("2.000")
    tasks = List([])

    @property
    def owner(self):
        return self.username

    def _write_attr(self, root, attr, key):
        s = as_str(getattr(self, attr, ''))
        if s:
            root.set(key, s)

    def as_element(self):
        # We have to add _A_ type things to get the right order than
        # the MSFT XML parser expects.
        root = ET.Element('Job')
        self._write_attr(root, 'version', '_A_Version')
        self._write_attr(root, 'job_name', '_B_Name')
        self._write_attr(root, 'unit_type', '_C_UnitType')
        self._write_attr(root, 'min_cores', '_D_MinCores')
        self._write_attr(root, 'max_cores', '_E_MaxCores')
        self._write_attr(root, 'min_sockets', '_F_MinSockets')
        self._write_attr(root, 'max_sockets', '_G_MaxSockets')
        self._write_attr(root, 'min_nodes', '_H_MinNodes')
        self._write_attr(root, 'max_nodes', '_I_MaxNodes')
        self._write_attr(root, 'run_until_canceled', '_J_RunUntilCanceled')
        self._write_attr(root, 'is_exclusive', '_K_IsExclusive')
        self._write_attr(root, 'username', '_L_UserName')
        self._write_attr(root, 'job_type', '_M_JobType')
        self._write_attr(root, 'priority', '_N_Priority')
        self._write_attr(root, 'requested_nodes', '_O_RequestedNodes')
        self._write_attr(root, 'auto_calculate_max', '_P_AutoCalculateMax')
        self._write_attr(root, 'auto_calculate_min', '_Q_AutoCalculateMin')
        self._write_attr(root, 'project', '_R_Project')
        self._write_attr(root, 'owner', '_S_Owner')
        self._write_attr(root, 'xmlns', '_T_xmlns')
        dependencies = ET.SubElement(root, "Dependencies")
        etasks = ET.SubElement(root, "Tasks")
        for t in self.tasks:
            etasks.append(t.as_element())
        return root

    def tostring(self):
        """Return the string representation of the job description XML."""
        root = self.as_element()
        indent(root)
        txt = ET.tostring(root, encoding="utf-8").decode('utf-8')
        # Now remove the tokens used to order the attributes.
        txt = re.sub(r'_[A-Z]_', '', txt)
        txt = '\n' + txt
        return txt

    def write(self, filename):
        """Write the XML job description to a file."""
        txt = self.tostring()
        with open(filename, 'w') as f:
            f.write(txt)

    def add_task(self, task):
        """Add a task to the job.

        Parameters
        ----------
        task : :class:`WinHPCTask`
            The task object to add.
        """
        self.tasks.append(task)


class WinHPCTask(Configurable):
    task_id = Unicode('')
    task_name = Unicode('')
    version = Unicode("2.000")
    min_cores = Integer(1, config=True)
    max_cores = Integer(1, config=True)
    min_sockets = Integer(1, config=True)
    max_sockets = Integer(1, config=True)
    min_nodes = Integer(1, config=True)
    max_nodes = Integer(1, config=True)
    unit_type = Unicode("Core", config=True)
    command_line = Unicode('', config=True)
    work_directory = Unicode('', config=True)
    is_rerunnaable = Bool(True, config=True)
    std_out_file_path = Unicode('', config=True)
    std_err_file_path = Unicode('', config=True)
    is_parametric = Bool(False, config=True)
    environment_variables = Instance(dict, args=(), config=True)

    def _write_attr(self, root, attr, key):
        s = as_str(getattr(self, attr, ''))
        if s:
            root.set(key, s)

    def as_element(self):
        root = ET.Element('Task')
        self._write_attr(root, 'version', '_A_Version')
        self._write_attr(root, 'task_name', '_B_Name')
        self._write_attr(root, 'min_cores', '_C_MinCores')
        self._write_attr(root, 'max_cores', '_D_MaxCores')
        self._write_attr(root, 'min_sockets', '_E_MinSockets')
        self._write_attr(root, 'max_sockets', '_F_MaxSockets')
        self._write_attr(root, 'min_nodes', '_G_MinNodes')
        self._write_attr(root, 'max_nodes', '_H_MaxNodes')
        self._write_attr(root, 'command_line', '_I_CommandLine')
        self._write_attr(root, 'work_directory', '_J_WorkDirectory')
        self._write_attr(root, 'is_rerunnaable', '_K_IsRerunnable')
        self._write_attr(root, 'std_out_file_path', '_L_StdOutFilePath')
        self._write_attr(root, 'std_err_file_path', '_M_StdErrFilePath')
        self._write_attr(root, 'is_parametric', '_N_IsParametric')
        self._write_attr(root, 'unit_type', '_O_UnitType')
        root.append(self.get_env_vars())
        return root

    def get_env_vars(self):
        env_vars = ET.Element('EnvironmentVariables')
        for k, v in self.environment_variables.items():
            variable = ET.SubElement(env_vars, "Variable")
            name = ET.SubElement(variable, "Name")
            name.text = k
            value = ET.SubElement(variable, "Value")
            value.text = v
        return env_vars


# By declaring these, we can configure the controller and engine separately!


class IPControllerJob(WinHPCJob):
    job_name = Unicode('IPController', config=False)
    is_exclusive = Bool(False, config=True)
    username = Unicode(find_username(), config=True)
    priority = Enum(
        ('Lowest', 'BelowNormal', 'Normal', 'AboveNormal', 'Highest'),
        default_value='Highest',
        config=True,
    )
    requested_nodes = Unicode('', config=True)
    project = Unicode('IPython', config=True)


class IPEngineSetJob(WinHPCJob):
    job_name = Unicode('IPEngineSet', config=False)
    is_exclusive = Bool(False, config=True)
    username = Unicode(find_username(), config=True)
    priority = Enum(
        ('Lowest', 'BelowNormal', 'Normal', 'AboveNormal', 'Highest'),
        default_value='Highest',
        config=True,
    )
    requested_nodes = Unicode('', config=True)
    project = Unicode('IPython', config=True)


class IPControllerTask(WinHPCTask):
    task_name = Unicode('IPController', config=True)
    controller_cmd = List(['ipcontroller.exe'], config=True)
    controller_args = List(['--log-level=40'], config=True)
    # I don't want these to be configurable
    std_out_file_path = Unicode('', config=False)
    std_err_file_path = Unicode('', config=False)
    min_cores = Integer(1, config=False)
    max_cores = Integer(1, config=False)
    min_sockets = Integer(1, config=False)
    max_sockets = Integer(1, config=False)
    min_nodes = Integer(1, config=False)
    max_nodes = Integer(1, config=False)
    unit_type = Unicode("Core", config=False)
    work_directory = Unicode('', config=False)

    def __init__(self, **kwargs):
        super().__init__(**kwargs)
        the_uuid = uuid.uuid1()
        self.std_out_file_path = os.path.join('log', f'ipcontroller-{the_uuid}.out')
        self.std_err_file_path = os.path.join('log', f'ipcontroller-{the_uuid}.err')

    @property
    def command_line(self):
        return ' '.join(self.controller_cmd + self.controller_args)


class IPEngineTask(WinHPCTask):
    task_name = Unicode('IPEngine', config=True)
    engine_cmd = List(['ipengine.exe'], config=True)
    engine_args = List(['--log-level=40'], config=True)
    # I don't want these to be configurable
    std_out_file_path = Unicode('', config=False)
    std_err_file_path = Unicode('', config=False)
    min_cores = Integer(1, config=False)
    max_cores = Integer(1, config=False)
    min_sockets = Integer(1, config=False)
    max_sockets = Integer(1, config=False)
    min_nodes = Integer(1, config=False)
    max_nodes = Integer(1, config=False)
    unit_type = Unicode("Core", config=False)
    work_directory = Unicode('', config=False)

    def __init__(self, **kwargs):
        super().__init__(**kwargs)
        the_uuid = uuid.uuid1()
        self.std_out_file_path = os.path.join('log', f'ipengine-{the_uuid}.out')
        self.std_err_file_path = os.path.join('log', f'ipengine-{the_uuid}.err')

    @property
    def command_line(self):
        return ' '.join(self.engine_cmd + self.engine_args)
ipython-ipyparallel-14e3c43/ipyparallel/cluster/app.py000077500000000000000000000600011520071063500232000ustar00rootroot00000000000000#!/usr/bin/env python
"""The ipcluster application."""

import asyncio
import errno
import json
import logging
import os
import re
import signal
import sys
from functools import partial

import zmq
from IPython.core.profiledir import ProfileDir
from traitlets import Bool, CaselessStrEnum, Dict, Integer, List, default
from traitlets.config.application import catch_config_error

from ipyparallel._version import __version__
from ipyparallel.apps.baseapp import BaseParallelApplication, base_aliases, base_flags
from ipyparallel.cluster import Cluster, ClusterManager, clean_cluster_files
from ipyparallel.traitlets import entry_points
from ipyparallel.util import abbreviate_profile_dir

# -----------------------------------------------------------------------------
# Module level variables
# -----------------------------------------------------------------------------

_description = """Start an IPython cluster for parallel computing.

An IPython cluster consists of 1 controller and 1 or more engines.
This command automates the startup of these processes using a wide range of
startup methods (SSH, local processes, PBS, mpiexec, SGE, LSF, HTCondor,
Slurm, Windows HPC Server 2008). To start a cluster with 4 engines on your
local host simply do 'ipcluster start --n=4'. For more complex usage
you will typically do 'ipython profile create mycluster --parallel', then edit
configuration files, followed by 'ipcluster start --profile=mycluster --n=4'.
"""

_main_examples = """
ipcluster start --n=4 # start a 4 node cluster on localhost
ipcluster start -h    # show the help string for the start subcmd

ipcluster stop -h     # show the help string for the stop subcmd
ipcluster engines -h  # show the help string for the engines subcmd
"""

_start_examples = """
ipython profile create mycluster --parallel # create mycluster profile
ipcluster start --profile=mycluster --n=4   # start mycluster with 4 nodes

# args to `ipcluster start` after `--` are passed through to the controller
# see `ipcontroller -h` for options
ipcluster start -- --sqlitedb
"""

_stop_examples = """
ipcluster stop --profile=mycluster  # stop a running cluster by profile name
"""

_engines_examples = """
ipcluster engines --profile=mycluster --n=4  # start 4 engines only
"""


# Exit codes for ipcluster

# This will be the exit code if the ipcluster appears to be running because
# a .pid file exists
ALREADY_STARTED = 10


# This will be the exit code if ipcluster stop is run, but there is not .pid
# file to be found.
ALREADY_STOPPED = 11

# This will be the exit code if ipcluster engines is run, but there is not .pid
# file to be found.
NO_CLUSTER = 12


# -----------------------------------------------------------------------------
# Main application
# -----------------------------------------------------------------------------

start_help = """Start an IPython cluster for parallel computing

Start an ipython cluster by its profile name or cluster
directory. Cluster directories contain configuration, log and
security related files and are named using the convention
'profile_' and should be creating using the 'start'
subcommand of 'ipcluster'. If your cluster directory is in
the cwd or the ipython directory, you can simply refer to it
using its profile name, 'ipcluster start --n=4 --profile=`,
otherwise use the 'profile-dir' option.
"""
stop_help = """Stop a running IPython cluster

Stop a running ipython cluster by its profile name or cluster
directory. Cluster directories are named using the convention
'profile_'. If your cluster directory is in
the cwd or the ipython directory, you can simply refer to it
using its profile name, 'ipcluster stop --profile=`, otherwise
use the '--profile-dir' option.
"""
engines_help = """Start engines connected to an existing IPython cluster

Start one or more engines to connect to an existing Cluster
by profile name or cluster directory.
Cluster directories contain configuration, log and
security related files and are named using the convention
'profile_' and should be creating using the 'start'
subcommand of 'ipcluster'. If your cluster directory is in
the cwd or the ipython directory, you can simply refer to it
using its profile name, 'ipcluster engines --n=4 --profile=`,
otherwise use the 'profile-dir' option.
"""
stop_aliases = dict(
    signal='IPClusterStop.signal',
)
stop_aliases.update(base_aliases)
stop_flags = dict(
    all=(
        {'IPClusterStop': {'all_cluster_ids': True}},
        "stop all clusters for the selected profile, instead of just one",
    )
)
stop_flags.update(base_flags)


class IPClusterStop(BaseParallelApplication):
    name = 'ipcluster'
    description = stop_help
    examples = _stop_examples

    signal = Integer(
        signal.SIGINT, config=True, help="signal to use for stopping processes."
    )
    all_cluster_ids = Bool(
        False,
        config=True,
        help="stop all clusters for the selected profile, instead of just one",
    )

    aliases = stop_aliases
    flags = stop_flags

    def start(self):
        """Start the app for the stop subcommand."""

        if self.all_cluster_ids:
            clusters = list(
                ClusterManager(parent=self)
                .load_clusters(profile_dir=self.profile_dir.location)
                .values()
            )
        else:
            if self.extra_args:
                cluster_ids = self.extra_args
            else:
                cluster_ids = [self.cluster_id]

            clusters = []

            for cluster_id in cluster_ids:
                try:
                    cluster = Cluster.from_file(
                        profile_dir=self.profile_dir.location,
                        cluster_id=cluster_id,
                        parent=self,
                    )
                except FileNotFoundError as s:
                    self.log.critical(f"Could not find cluster file {s}")
                    self.exit(ALREADY_STOPPED)
                else:
                    clusters.append(cluster)

        if not clusters:
            self.log.info("No clusters to stop")
            self.exit(0)

        async def _stop_all():
            tasks = []
            for cluster in clusters:
                self.log.info(f"Stopping cluster {cluster.cluster_id}")
                tasks.append(cluster.stop_cluster())
            await asyncio.gather(*tasks)

        asyncio.run(_stop_all())


list_aliases = {}
list_aliases.update(base_aliases)
list_aliases.update({"o": "IPClusterList.output_format"})


class IPClusterList(BaseParallelApplication):
    name = 'ipcluster'
    description = "List available clusters"
    aliases = list_aliases

    output_format = CaselessStrEnum(
        ["text", "json"], default_value="text", config=True, help="Output format"
    )

    def start(self):
        profile_dirs = None
        if (
            self.profile != "default"
            or "ProfileDir" in self.config
            and "location" in self.config.ProfileDir
        ):
            # profile-directory specified, only consider
            profile_dirs = [self.profile_dir.location]
        cluster_manager = ClusterManager(parent=self)
        clusters = cluster_manager.load_clusters(profile_dirs=profile_dirs)
        if self.output_format == "text":
            # TODO: measure needed profile/cluster id width
            print(
                f"{'PROFILE':16} {'CLUSTER ID':32} {'RUNNING':7} {'ENGINES':7} {'LAUNCHER'}"
            )
            for cluster in sorted(
                clusters.values(),
                key=lambda c: (
                    c.profile_dir,
                    c.cluster_id,
                ),
            ):
                profile = abbreviate_profile_dir(cluster.profile_dir)
                cluster_id = cluster.cluster_id
                running = bool(cluster.controller)
                # TODO: URL?
                engines = 0
                if cluster.engines:
                    engines = sum(
                        engine_set.n for engine_set in cluster.engines.values()
                    )

                launcher = cluster.engine_launcher_class.__name__
                if launcher.endswith("EngineSetLauncher"):
                    launcher = launcher[: -len("EngineSetLauncher")]
                print(
                    f"{profile:16} {cluster_id or repr(''):32} {str(running):7} {engines:7} {launcher}"
                )
        elif self.output_format == "json":
            json.dump(
                [cluster.to_dict() for cluster in clusters.values()],
                sys.stdout,
            )
        else:
            raise NotImplementedError(f"No such output format: {self.output_format}")


clean_flags = {}
for key in ('debug', 'quiet'):
    clean_flags[key] = base_flags[key]
clean_flags.update(
    {
        "force": (
            {"IPClusterClean": {"force": True}},
            """
            Force removal of files, even if clusters are running.

            WARNING: can leave orphan processes
            """,
        ),
        "all": (
            {"IPClusterClean": {"all_profiles": True}},
            "Clean all IPython profiles, not just current.",
        ),
    }
)
clean_aliases = {}
for key in ('log-level', 'ipython-dir', 'profile-dir', 'profile'):
    clean_aliases[key] = base_aliases[key]


class IPClusterClean(BaseParallelApplication):
    name = 'ipcluster'
    description = "Cleanup cluster files"
    flags = clean_flags
    aliases = clean_aliases

    force = Bool(
        False,
        config=True,
        help="""
            Force removal of cluster files, even if clusters appear to be running.

            WARNING: this can leave orphan processes.
            """,
    )
    all_profiles = Bool(
        False,
        config=True,
        help="Clean files in all profiles, instead of just the current profile.",
    )

    def start(self):
        if self.all_profiles:
            profile_dirs = None
        else:
            profile_dirs = [self.profile_dir.location]
        clean_cluster_files(profile_dirs, log=self.log, force=self.force)


engine_aliases = {}
engine_aliases.update(base_aliases)
engine_aliases.update(
    dict(
        n='Cluster.n',
        engines='Cluster.engine_launcher_class',
        daemonize='IPClusterEngines.daemonize',
    )
)
engine_flags = {}
engine_flags.update(base_flags)

engine_flags.update(
    dict(
        daemonize=(
            {'IPClusterEngines': {'daemonize': True}},
            """run the cluster into the background (not available on Windows)""",
        )
    )
)


class IPClusterEngines(BaseParallelApplication):
    name = 'ipcluster'
    description = engines_help
    examples = _engines_examples
    usage = None
    default_log_level = logging.INFO
    classes = List()

    @default("classes")
    def _classes_default(self):
        launcher_classes = []
        for kind in ('controller', 'engine'):
            group_name = f'ipyparallel.{kind}_launchers'
            group = entry_points(group=group_name)
            for entrypoint in group:
                key = entrypoint.name
                try:
                    cls = entrypoint.load()
                except Exception as e:
                    self.log.error(
                        f"Failed to load entrypoint {group_name}: {key} = {entrypoint.value}\n{e}"
                    )
                else:
                    launcher_classes.append(cls)
        return [ProfileDir, Cluster] + launcher_classes

    daemonize = Bool(
        False,
        config=True,
        help="""Launch the cluster and immediately exit.

        .. versionchanged:: 7.0
            No longer leaves the ipcluster process itself running.
            Prior to 7.0, --daemonize did not work on Windows.
        """,
    )

    early_shutdown = Integer(
        30,
        config=True,
        help="If engines stop in this time frame, assume something is wrong and tear down the cluster.",
    )
    _stopping = False

    aliases = Dict(engine_aliases)
    flags = Dict(engine_flags)

    @catch_config_error
    def initialize(self, argv=None):
        super().initialize(argv)
        self.init_signal()
        self.init_cluster()

    def init_deprecated_config(self):
        super().init_deprecated_config()
        cluster_config = self.config.Cluster
        for clsname in ['IPClusterStart', 'IPClusterEngines']:
            if clsname not in self.config:
                continue
            cls_config = self.config[clsname]
            for traitname in [
                'delay',
                'engine_launcher_class',
                'controller_launcher_class',
                'controller_ip',
                'controller_location',
                'n',
            ]:
                if traitname in cls_config and traitname not in cluster_config:
                    value = cls_config[traitname]
                    self.log.warning(
                        f"{clsname}.{traitname} = {value} configuration is deprecated in ipyparallel 7. Use Cluster.{traitname} = {value}"
                    )
                    cluster_config[traitname] = value
                    cls_config.pop(traitname)

    def init_cluster(self):
        self.cluster = Cluster(
            parent=self,
            profile_dir=self.profile_dir.location,
            cluster_id=self.cluster_id,
            controller_args=self.extra_args,
            shutdown_atexit=not self.daemonize,
        )

    def init_signal(self):
        # Setup signals
        for signame in ("SIGUSR1", "SIGUSR2", "SIGINFO"):
            try:
                signum = getattr(signal, signame)
            except AttributeError:
                self.log.debug(f"Not forwarding {signame}")
                pass
            else:
                self.log.debug(f"Forwarding {signame} to engines")
                signal.signal(signum, self.relay_signal)
        signal.signal(signal.SIGINT, self.sigint_handler)
        signal.signal(signal.SIGTERM, self.sigint_handler)

    def relay_signal(self, signum, frame):
        self.log.debug(f"Received signal {signum} received, relaying to engines...")
        self.loop.add_callback_from_signal(partial(self.cluster.signal_engines, signum))

    def sigint_handler(self, signum, frame):
        return self.relay_signal(signum, frame)

    def sigterm_handler(self, signum, frame):
        self.log.debug(f"Received signal {signum} received, stopping launchers...")
        self.loop.add_callback_from_signal(self.stop_cluster)

    def engines_started_ok(self):
        self.log.info("Engines appear to have started successfully")
        self.early_shutdown = 0

    async def start_engines(self):
        try:
            await self.cluster.start_engines()
        except BaseException:
            self.log.exception("Engine start failed")
            self.exit(1)

        if self.daemonize:
            self.loop.add_callback(self.loop.stop)
            return

        self.watch_engines()

    def watch_engines(self):
        """Watch for early engine shutdown"""
        self.engine_launcher = self.cluster.engine_set

        if not self.early_shutdown:
            self.engine_launcher.on_stop(self.engines_stopped)
            return

        # TODO: enable 'engines stopped early' with new cluster API
        self.engine_launcher.on_stop(self.engines_stopped_early)
        if self.early_shutdown:
            self.loop.add_timeout(
                self.loop.time() + self.early_shutdown, self.engines_started_ok
            )

    def engines_stopped_early(self, stop_data):
        if self.early_shutdown and not self._stopping:
            self.log.error(
                """
            Engines shutdown early, they probably failed to connect.

            Check the engine log files for output.

            If your controller and engines are not on the same machine, you probably
            have to instruct the controller to listen on an interface other than localhost.

            You can set this by adding "--ip=*" to your ControllerLauncher.controller_args.

            Be sure to read our security docs before instructing your controller to listen on
            a public interface.
            """
            )
            engine_output = self.engine_launcher.get_output(remove=True)
            if engine_output:
                self.log.error(f"Engine output:\n{engine_output}")
            self.loop.add_callback(self.stop_cluster)

        return self.engines_stopped(stop_data)

    def engines_stopped(self, r):
        return self.loop.stop()

    async def stop_cluster(self, r=None):
        if not self._stopping:
            self._stopping = True
            self.log.error("IPython cluster: stopping")
            await self.cluster.stop_cluster()
            self.loop.add_callback(self.loop.stop)

    def start_logging(self):
        # Remove old log files of the controller and engine
        if self.clean_logs:
            log_dir = self.profile_dir.log_dir
            for f in os.listdir(log_dir):
                if re.match(r'ip(engine|controller)-.+\.(log|err|out)', f):
                    os.remove(os.path.join(log_dir, f))

    def start(self):
        """Start the app for the engines subcommand."""
        self.log.info(f"IPython cluster start: {self.cluster_id}")
        # First see if the cluster is already running

        # Now log and daemonize
        self.log.info(f'Starting engines with [daemon={self.daemonize!r}]')

        self.loop.add_callback(self.start_engines)
        # Now write the new pid file AFTER our new forked pid is active.
        # self.write_pid_file()
        try:
            self.loop.start()
        except KeyboardInterrupt:
            pass
        except zmq.ZMQError as e:
            if e.errno == errno.EINTR:
                pass
            else:
                raise


start_aliases = {}
start_aliases.update(engine_aliases)
start_aliases.update(
    dict(
        delay='Cluster.delay',
        controller='Cluster.controller_launcher_class',
        ip='Cluster.controller_ip',
        location='Cluster.controller_location',
    )
)
start_aliases['clean-logs'] = 'IPClusterStart.clean_logs'


class IPClusterStart(IPClusterEngines):
    name = 'ipcluster'
    description = start_help
    examples = _start_examples
    default_log_level = logging.INFO
    auto_create = Bool(
        True, config=True, help="whether to create the profile_dir if it doesn't exist"
    )

    clean_logs = Bool(
        True, config=True, help="whether to cleanup old logs before starting"
    )

    # flags = Dict(flags)
    aliases = Dict(start_aliases)

    def engines_stopped(self, r):
        """prevent parent.engines_stopped from stopping everything on engine shutdown"""
        pass

    async def start_cluster(self):
        await self.cluster.start_cluster()
        if self.daemonize:
            print(
                f"Leaving cluster running: {self.cluster.cluster_file}", file=sys.stderr
            )
            self.loop.add_callback(self.loop.stop)
        self.cluster.controller.on_stop(self.controller_stopped)
        self.watch_engines()

    def controller_stopped(self, stop_data):
        if not self._stopping:
            self.log.warning("Controller stopped. Shutting down.")
            self.loop.add_callback(self.stop_cluster)

    def sigint_handler(self, signum, frame):
        """Unlike engines, SIGINT shuts down `ipcluster start`"""
        self.log.debug(f"Received signal {signum} received, stopping launchers...")
        self.loop.add_callback_from_signal(self.stop_cluster)

    def start(self):
        """Start the app for the start subcommand."""
        # First see if the cluster is already running
        cluster_file = self.cluster.cluster_file
        if os.path.isfile(cluster_file):
            try:
                cluster = Cluster.from_file(cluster_file)
            except Exception as e:
                # TODO: define special ClusterNotRunning exception to handle here
                self.log.error(
                    f"Error loading cluster from file {cluster_file}: {e}. Assuming stopped cluster."
                )
            else:
                self.log.critical(
                    f'Cluster is already running at {self.cluster.cluster_file}. '
                    'use `ipcluster stop` to stop the cluster.'
                )
                # Here I exit with a unusual exit status that other processes
                # can watch for to learn how I existed.
                self.exit(ALREADY_STARTED)

        # Now log and daemonize
        self.log.info(f'Starting ipcluster with [daemonize={self.daemonize!r}]')

        self.loop.add_callback(self.start_cluster)
        try:
            self.loop.start()
        except KeyboardInterrupt:
            pass
        except zmq.ZMQError as e:
            if e.errno == errno.EINTR:
                pass
            else:
                raise
        finally:
            if not self.daemonize:
                self.cluster.stop_cluster_sync()


class IPClusterNBExtension(BaseParallelApplication):
    """Enable/disable ipcluster tab extension in Jupyter notebook"""

    name = 'ipcluster-nbextension'

    description = """(DEPRECATED) Enable/disable IPython clusters tab in classic Jupyter notebook

    Only for the deprecated jupyter-notebook < 7.0.

    For current jupyter-server implementations (jupyterlab and jupyter-notebook 7):

        jupyter server extension enable ipyparallel

    for Jupyter Notebook >= 4.2, you can use the new nbextension API:

    jupyter serverextension enable --py ipyparallel
    jupyter nbextension install --py ipyparallel
    jupyter nbextension enable --py ipyparallel
    """

    examples = """
    ipcluster nbextension enable
    ipcluster nbextension disable
    """
    version = __version__
    user = Bool(False, help="Apply the operation only for the given user").tag(
        config=True
    )
    flags = Dict(
        {
            'user': (
                {'IPClusterNBExtension': {'user': True}},
                'Apply the operation only for the given user',
            )
        }
    )

    def start(self):
        if len(self.extra_args) != 1:
            self.exit("Must specify 'enable' or 'disable'")
        action = self.extra_args[0].lower()

        print(
            "WARNING: `ipcluster nbextension` is deprecated. Use `jupyter server extension enable ipyparallel`",
            file=sys.stderr,
        )

        from ipyparallel.util import _v

        try:
            import notebook
        except ImportError:
            self.exit(
                "Deprecated `ipcluster nbextension` requires `notebook<7`, no `notebook` package found."
            )

        if _v(notebook.__version__) >= _v('7'):
            self.exit(
                "Deprecated `ipcluster nbextension` requires `notebook<7`, found `notebook=={notebook.__version__}`."
            )

        from ipyparallel.nbextension.install import install_extensions

        if action == 'enable':
            print("Enabling IPython clusters tab", file=sys.stderr)
            install_extensions(enable=True, user=self.user)
        elif action == 'disable':
            print("Disabling IPython clusters tab", file=sys.stderr)
            install_extensions(enable=False, user=self.user)
        else:
            self.exit(f"Must specify 'enable' or 'disable', not '{action}'")


class IPCluster(BaseParallelApplication):
    name = 'ipcluster'
    description = _description
    examples = _main_examples
    version = __version__

    _deprecated_classes = ["IPClusterApp"]

    subcommands = {
        'start': (IPClusterStart, start_help),
        'stop': (IPClusterStop, stop_help),
        'engines': (IPClusterEngines, engines_help),
        'list': (IPClusterList, IPClusterList.description),
        'clean': (IPClusterClean, IPClusterClean.description),
        'nbextension': (IPClusterNBExtension, IPClusterNBExtension.description),
    }

    # no aliases or flags for parent App
    aliases = Dict()
    flags = Dict()

    def start(self):
        if self.subapp is None:
            keys = ', '.join(f"'{key}'" for key in self.subcommands.keys())
            print(f"No subcommand specified. Must specify one of: {keys}")
            print()
            self.print_description()
            self.print_subcommands()
            self.exit(1)
        else:
            return self.subapp.start()


main = IPCluster.launch_instance

if __name__ == '__main__':
    main()
ipython-ipyparallel-14e3c43/ipyparallel/cluster/cluster.py000066400000000000000000001073301520071063500241050ustar00rootroot00000000000000"""Cluster class

defines the basic interface to a single IPython Parallel cluster

starts/stops/polls controllers, engines, etc.
"""

import asyncio
import atexit
import glob
import inspect
import json
import logging
import os
import random
import string
import sys
import time
import traceback
from functools import partial
from multiprocessing import cpu_count
from weakref import WeakSet

import IPython
from traitlets import (
    Any,
    Bool,
    Dict,
    Float,
    Instance,
    Integer,
    List,
    Unicode,
    default,
    import_item,
    validate,
)
from traitlets.config import Application, Config, LoggingConfigurable

from .._async import AsyncFirst
from ..traitlets import Launcher
from ..util import (
    _all_profile_dirs,
    _default_profile_dir,
    _locate_profiles,
    _traitlet_signature,
    abbreviate_profile_dir,
)
from . import launcher

_suffix_chars = string.ascii_lowercase + string.digits

# weak set of clusters to be cleaned up at exit
_atexit_clusters = WeakSet()


def _atexit_cleanup_clusters(*args):
    """Cleanup clusters during process shutdown"""
    for cluster in _atexit_clusters:
        if not cluster.shutdown_atexit:
            # overridden after register
            continue
        if cluster.controller or cluster.engines:
            print(f"Stopping cluster {cluster}", file=sys.stderr)
            try:
                cluster.stop_cluster_sync()
            except Exception:
                print(f"Error stopping cluster {cluster}", file=sys.stderr)
                traceback.print_exception(*sys.exc_info())


_atexit_cleanup_clusters.registered = False


@_traitlet_signature
class Cluster(AsyncFirst, LoggingConfigurable):
    """Class representing an IPP cluster

    i.e. one controller and one or more groups of engines

    Can start/stop/monitor/poll cluster resources

    All async methods can be called synchronously with a `_sync` suffix,
    e.g. `cluster.start_cluster_sync()`

    .. versionchanged:: 8.0
        controller and engine launcher classes can be specified via
        `Cluster(controller='ssh', engines='mpi')`
        without the `_launcher_class` suffix.
    """

    # general configuration

    shutdown_atexit = Bool(
        True,
        help="""
        Shutdown the cluster at process exit.

        Set to False if you want to launch a cluster and leave it running
        after the launching process exits.
        """,
    )

    cluster_id = Unicode(help="The id of the cluster (default: random string)").tag(
        to_dict=True
    )

    @default("cluster_id")
    def _default_cluster_id(self):
        return f"{int(time.time())}-{''.join(random.choice(_suffix_chars) for i in range(4))}"

    profile_dir = Unicode(
        help="""The profile directory.

    Default priority:

    - specified explicitly
    - current IPython session
    - use profile name (default: 'default')

    """
    ).tag(to_dict=True)

    @default("profile_dir")
    def _default_profile_dir(self):
        return _default_profile_dir(profile=self.profile)

    @validate("profile_dir")
    def _validate_profile_dir(self, proposal):
        path = proposal.value
        if path:
            return os.path.abspath(path)
        return path

    profile = Unicode(
        "",
        help="""The profile name,
             a shortcut for specifying profile_dir within $IPYTHONDIR.""",
    )

    cluster_file = Unicode(
        help="The path to the cluster file for saving this cluster to disk"
    )

    @default("cluster_file")
    def _default_cluster_file(self):
        return os.path.join(
            self.profile_dir, "security", f"cluster-{self.cluster_id}.json"
        )

    engine_timeout = Integer(
        60,
        help="""Timeout to use when waiting for engines to register

        before giving up.
        """,
        config=True,
    )

    send_engines_connection_env = Bool(
        True,
        config=True,
        help="""
        Wait for controller's connection info before passing to engines
        via $IPP_CONNECTION_INFO environment variable.

        Set to False to start engines immediately
        without waiting for the controller's connection info to be available.

        When True, no connection file movement is required.
        False is mainly useful when submitting the controller may
        take a long time in a job queue,
        and the engines should enter the queue before the controller is running.

        .. versionadded:: 8.0
        """,
    )

    controller_launcher_class = Launcher(
        default_value=launcher.LocalControllerLauncher,
        entry_point_group='ipyparallel.controller_launchers',
        help="""The class for launching a Controller. Change this value if you want
        your controller to also be launched by a batch system, such as PBS,SGE,MPI,etc.

        Each launcher class has its own set of configuration options, for making sure
        it will work in your environment.

        Note that using a batch launcher for the controller *does not* put it
        in the same batch job as the engines, so they will still start separately.

        Third-party engine launchers can be registered via `ipyparallel.engine_launchers` entry point.

        They can be selected via case-insensitive abbreviation, e.g.

            c.Cluster.controller_launcher_class = 'SSH'

        or:

            ipcluster start --controller=MPI

        """,
        config=True,
    ).tag(alias="controller")

    engine_launcher_class = Launcher(
        default_value=launcher.LocalEngineSetLauncher,
        entry_point_group='ipyparallel.engine_launchers',
        help="""The class for launching a set of Engines. Change this value
        to use various batch systems to launch your engines, such as PBS,SGE,MPI,etc.
        Each launcher class has its own set of configuration options, for making sure
        it will work in your environment.

        Third-party engine launchers can be registered via `ipyparallel.engine_launchers` entry point.

        They can be selected via case-insensitive abbreviation, e.g.

            c.Cluster.engine_launcher_class = 'ssh'

        or:

            ipcluster start --engines=mpi

        """,
        config=True,
    ).tag(alias="engines")

    # controller configuration

    controller_args = List(
        Unicode(),
        config=True,
        help="Additional CLI args to pass to the controller.",
    ).tag(to_dict=True)
    controller_ip = Unicode(
        config=True, help="Set the IP address of the controller."
    ).tag(to_dict=True)
    controller_location = Unicode(
        config=True,
        help="""Set the location (hostname or ip) of the controller.

        This is used by engines and clients to locate the controller
        when the controller listens on all interfaces
        """,
    ).tag(to_dict=True)

    # engine configuration

    delay = Float(
        1.0,
        config=True,
        help="delay (in s) between starting the controller and the engines",
    ).tag(to_dict=True)

    n = Integer(
        None, allow_none=True, config=True, help="The number of engines to start"
    ).tag(to_dict=True)

    @default("parent")
    def _default_parent(self):
        """Default to inheriting config from current IPython session"""
        return IPython.get_ipython()

    log_level = Integer(logging.INFO)

    @default("log")
    def _default_log(self):
        if self.parent and self.parent is IPython.get_ipython():
            # log to stdout in an IPython session
            log = logging.getLogger(f"{__name__}.{self.cluster_id}")
            log.setLevel(self.log_level)

            handler = logging.StreamHandler(sys.stdout)
            log.handlers = [handler]
            log.propagate = False
            return log
        elif self.parent and getattr(self.parent, 'log', None) is not None:
            return self.parent.log
        elif Application.initialized():
            return Application.instance().log
        else:
            # set up our own logger
            log = logging.getLogger(f"{__name__}.{self.cluster_id}")
            log.setLevel(self.log_level)
            return log

    load_profile = Bool(
        True,
        config=True,
        help="""
        If True (default) load ipcluster config from profile directory, if present.
        """,
    )
    # private state
    controller = Any().tag(nosignature=True)
    engines = Dict().tag(nosignature=True)

    @property
    def engine_set(self):
        """Return the first engine set

        Most clusters have only one engine set,
        which is tedious to get to via the `engines` dict
        with random engine set ids.

        ..versionadded:: 8.0
        """
        if self.engines:
            return next(iter(self.engines.values()))

    profile_config = Instance(Config, allow_none=False).tag(nosignature=True)

    @default("profile_config")
    def _profile_config_default(self):
        """Load config from our profile"""
        if not self.load_profile or not os.path.isdir(self.profile_dir):
            # no profile dir, nothing to load
            return Config()

        from .app import BaseParallelApplication, IPClusterStart

        # look up if we are descended from an 'ipcluster' app
        # avoids repeated load of the current profile dir
        parents = []
        parent = self.parent
        while parent is not None:
            parents.append(parent)
            parent = parent.parent

        app_parents = list(
            filter(lambda p: isinstance(p, BaseParallelApplication), parents)
        )
        if app_parents:
            app_parent = app_parents[0]
        else:
            app_parent = None

        if (
            app_parent
            and app_parent.name == 'ipcluster'
            and app_parent.profile_dir.location == self.profile_dir
        ):
            # profile config already loaded by parent, nothing new to load
            return Config()

        self.log.debug(f"Loading profile {self.profile_dir}")
        # set profile dir via config
        config = Config()
        config.ProfileDir.location = self.profile_dir

        # load profile config via IPCluster
        app = IPClusterStart(config=config, log=self.log)
        # adds profile dir to config_files_path
        app.init_profile_dir()
        # adds system to config_files_path
        app.init_config_files()
        # actually load the config
        app.load_config_file(suppress_errors=False)
        return app.config

    @validate("config")
    def _merge_profile_config(self, proposal):
        direct_config = proposal.value
        if not self.load_profile:
            return direct_config
        profile_config = self.profile_config
        if not profile_config:
            return direct_config
        # priority ?! direct > profile
        config = Config()
        if profile_config:
            config.merge(profile_config)
        config.merge(direct_config)
        return config

    @default("config")
    def _default_config(self):
        if self.load_profile:
            return self.profile_config
        else:
            return Config()

    def __init__(self, *, engines=None, controller=None, **kwargs):
        """Construct a Cluster"""
        # handle more intuitive aliases, which match ipcluster cli args, etc.
        if engines is not None:
            if 'engine_launcher_class' in kwargs:
                raise TypeError(
                    "Only specify one of 'engines' or 'engine_launcher_class', not both"
                )
            kwargs['engine_launcher_class'] = engines
        if controller is not None:
            if 'controller_launcher_class' in kwargs:
                raise TypeError(
                    "Only specify one of 'controller' or 'controller_launcher_class', not both"
                )
            kwargs['controller_launcher_class'] = controller
        if 'parent' not in kwargs and 'config' not in kwargs:
            kwargs['parent'] = self._default_parent()

        super().__init__(**kwargs)

    def __del__(self):
        if not self.shutdown_atexit:
            return
        if self.controller or self.engines:
            self.stop_cluster_sync()

    def __repr__(self):
        fields = {
            "cluster_id": repr(self.cluster_id),
        }
        profile_dir = self.profile_dir
        profile_prefix = os.path.join(IPython.paths.get_ipython_dir(), "profile_")
        if profile_dir.startswith(profile_prefix):
            fields["profile"] = repr(profile_dir[len(profile_prefix) :])
        else:
            home_dir = os.path.expanduser("~")

            if profile_dir.startswith(home_dir + os.path.sep):
                # truncate $HOME/. -> ~/...
                profile_dir = "~" + profile_dir[len(home_dir) :]
            fields["profile_dir"] = repr(profile_dir)

        if self.controller:
            fields["controller"] = f"<{self.controller.state}>"
        if self.engines:
            fields["engine_sets"] = list(self.engines)

        fields_str = ', '.join(f"{key}={value}" for key, value in fields.items())

        return f"<{self.__class__.__name__}({fields_str})>"

    def to_dict(self):
        """Serialize a Cluster object for later reconstruction"""
        cluster_info = {}
        d = {"cluster": cluster_info}
        for attr in self.traits(to_dict=True):
            cluster_info[attr] = getattr(self, attr)

        def _cls_str(cls):
            return f"{cls.__module__}.{cls.__name__}"

        cluster_info["class"] = _cls_str(self.__class__)

        if self.controller and self.controller.state != 'after':
            d["controller"] = {
                "class": launcher.abbreviate_launcher_class(
                    self.controller_launcher_class
                ),
                "state": None,
            }
            d["controller"]["state"] = self.controller.to_dict()

        d["engines"] = {
            "class": launcher.abbreviate_launcher_class(self.engine_launcher_class),
            "sets": {},
        }
        sets = d["engines"]["sets"]
        for engine_set_id, engine_launcher in self.engines.items():
            if engine_launcher.state != 'after':
                sets[engine_set_id] = engine_launcher.to_dict()
        return d

    @classmethod
    def from_dict(cls, d, **kwargs):
        """Construct a Cluster from serialized state"""
        cluster_info = d["cluster"]
        if cluster_info.get("class"):
            specified_cls = import_item(cluster_info["class"])
            if specified_cls is not cls:
                # specified a custom Cluster class,
                # dispatch to from_dict from that class
                return specified_cls.from_dict(d, **kwargs)

        kwargs.setdefault("shutdown_atexit", False)
        self = cls(**kwargs)
        for attr in self.traits(to_dict=True):
            if attr in cluster_info:
                setattr(self, attr, cluster_info[attr])

        for attr in self.traits(to_dict=True):
            if attr in d:
                setattr(self, attr, d[attr])

        cluster_key = ClusterManager._cluster_key(self)

        if d.get("controller"):
            controller_info = d["controller"]
            self.controller_launcher_class = controller_info["class"]
            # after traitlet coercion, which imports strings
            cls = self.controller_launcher_class
            if controller_info["state"]:
                try:
                    self.controller = cls.from_dict(
                        controller_info["state"], parent=self
                    )
                except launcher.NotRunning as e:
                    self.log.error(f"Controller for {cluster_key} not running: {e}")
                else:
                    self.controller.on_stop(self._controller_stopped)

        engine_info = d.get("engines")
        if engine_info:
            self.engine_launcher_class = engine_info["class"]
            # after traitlet coercion, which imports strings
            cls = self.engine_launcher_class
            for engine_set_id, engine_state in engine_info.get("sets", {}).items():
                try:
                    self.engines[engine_set_id] = engine_set = cls.from_dict(
                        engine_state,
                        engine_set_id=engine_set_id,
                        parent=self,
                    )
                except launcher.NotRunning as e:
                    self.log.error(
                        f"Engine set {cluster_key}{engine_set_id} not running: {e}"
                    )
                else:
                    engine_set.on_stop(partial(self._engines_stopped, engine_set_id))

        # check if state changed
        if self.to_dict() != d:
            # if so, update our cluster file
            self.update_cluster_file()
        return self

    @classmethod
    def from_file(
        cls,
        cluster_file=None,
        *,
        profile=None,
        profile_dir=None,
        cluster_id='',
        **kwargs,
    ):
        """Load a Cluster object from a file

        Can specify a full path,
        or combination of profile, profile_dir, and/or cluster_id.

        With no arguments given, it will connect to a cluster created
        with `ipcluster start`.
        """

        if cluster_file is None:
            # determine cluster_file from profile/profile_dir

            kwargs['cluster_id'] = cluster_id
            if profile is not None:
                kwargs['profile'] = profile
            if profile_dir is not None:
                kwargs['profile_dir'] = profile_dir
            cluster_file = Cluster(**kwargs).cluster_file

        # ensure from_file preserves cluster_file, even if it moved
        kwargs.setdefault("cluster_file", cluster_file)
        with open(cluster_file) as f:
            return cls.from_dict(json.load(f), **kwargs)

    def write_cluster_file(self):
        """Write cluster info to disk for later loading"""
        os.makedirs(os.path.dirname(self.cluster_file), exist_ok=True)
        self.log.debug(f"Updating {self.cluster_file}")
        with open(self.cluster_file, "w") as f:
            json.dump(self.to_dict(), f)

    def remove_cluster_file(self):
        """Remove my cluster file."""
        try:
            os.remove(self.cluster_file)
        except FileNotFoundError:
            pass
        else:
            self.log.debug(f"Removed cluster file: {self.cluster_file}")

    def _is_running(self):
        """Return if we have any running components"""
        if self.controller and self.controller.state != 'after':
            return True
        if any(es.state != 'after' for es in self.engines.values()):
            return True
        return False

    def update_cluster_file(self):
        """Update my cluster file

        If cluster_file is disabled, do nothing
        If cluster is fully stopped, remove the file
        """
        if not self.cluster_file:
            # setting cluster_file='' disables saving to disk
            return

        if not self._is_running():
            self.remove_cluster_file()
        else:
            self.write_cluster_file()

    async def start_controller(self, **kwargs):
        """Start the controller

        Keyword arguments are passed to the controller launcher constructor
        """
        # start controller
        # retrieve connection info
        # webhook?
        if self.controller is not None:
            raise RuntimeError(
                "controller is already running. Call stopcontroller() first."
            )

        if self.shutdown_atexit:
            _atexit_clusters.add(self)
            if not _atexit_cleanup_clusters.registered:
                atexit.register(_atexit_cleanup_clusters)

        self.controller = controller = self.controller_launcher_class(
            work_dir='.',
            parent=self,
            log=self.log,
            profile_dir=self.profile_dir,
            cluster_id=self.cluster_id,
            **kwargs,
        )

        controller_args = getattr(controller, 'controller_args', None)
        if controller_args is None:

            def add_args(args):
                # only some Launchers support modifying controller args
                self.log.warning(
                    "Not adding controller args %s. "
                    "controller_args passthrough is not supported by %s",
                    args,
                    self.controller_launcher_class.__name__,
                )

        else:
            # copy to make sure change events fire
            controller_args = list(controller_args)
            add_args = controller_args.extend

        if self.controller_ip:
            add_args([f'--ip={self.controller_ip}'])
        if self.controller_location:
            add_args([f'--location={self.controller_location}'])
        if self.controller_args:
            add_args(self.controller_args)

        if controller_args is not None:
            # ensure we trigger trait observers after we are done
            self.controller.controller_args = list(controller_args)

        self.controller.on_stop(self._controller_stopped)
        r = self.controller.start()
        if inspect.isawaitable(r):
            await r

        self.update_cluster_file()

    def _controller_stopped(self, stop_data=None):
        """Callback when a controller stops"""
        if stop_data and stop_data.get("exit_code"):
            log = self.log.warning
        else:
            log = self.log.info
        log(f"Controller stopped: {stop_data}")
        self.update_cluster_file()

    def _new_engine_set_id(self):
        """Generate a new engine set id"""
        engine_set_id = base = f"{int(time.time())}"
        i = 1
        while engine_set_id in self.engines:
            engine_set_id = f"{base}-{i}"
            i += 1
        return engine_set_id

    async def start_engines(self, n=None, engine_set_id=None, **kwargs):
        """Start an engine set

        Returns an engine set id which can be used in stop_engines
        """
        # TODO: send engines connection info
        if engine_set_id is None:
            engine_set_id = self._new_engine_set_id()
        engine_set = self.engines[engine_set_id] = self.engine_launcher_class(
            work_dir='.',
            parent=self,
            log=self.log,
            profile_dir=self.profile_dir,
            cluster_id=self.cluster_id,
            engine_set_id=engine_set_id,
            **kwargs,
        )
        if self.send_engines_connection_env and self.controller:
            self.log.debug("Setting $IPP_CONNECTION_INFO environment")
            connection_info = await self.controller.get_connection_info()
            connection_info_json = json.dumps(connection_info["engine"])
            engine_set.environment["IPP_CONNECTION_INFO"] = connection_info_json

        if n is None:
            n = self.n
        n = getattr(engine_set, 'engine_count', n)
        if n is None:
            n = cpu_count()
        self.log.info(f"Starting {n or ''} engines with {self.engine_launcher_class}")
        r = engine_set.start(n)
        engine_set.on_stop(partial(self._engines_stopped, engine_set_id))
        if inspect.isawaitable(r):
            await r
        self.update_cluster_file()
        return engine_set_id

    def _engines_stopped(self, engine_set_id, stop_data=None):
        if stop_data and stop_data.get("exit_code"):
            log = self.log.warning
        else:
            log = self.log.info
        log(f"engine set stopped {engine_set_id}: {stop_data}")
        self.update_cluster_file()

    async def start_and_connect(self, n=None, activate=False):
        """Single call to start a cluster and connect a client

        If `activate` is given, a blocking DirectView on all engines will be created
        and activated, registering `%px` magics for use in IPython

        Example::

            rc = await Cluster(engines="mpi").start_and_connect(n=8, activate=True)

            %px print("hello, world!")

        Equivalent to::

            await self.start_cluster(n)
            client = await self.connect_client()
            await client.wait_for_engines(n, block=False)

        .. versionadded:: 7.1

        .. versionadded:: 8.1

            activate argument.
        """
        if n is None:
            n = self.n
        await self.start_cluster(n=n)
        client = await self.connect_client()

        if n is None:
            # number of engines to wait for
            # if not specified, derive current value from EngineSets
            n = sum(engine_set.n for engine_set in self.engines.values())

        if n:
            await asyncio.wrap_future(
                client.wait_for_engines(n, block=False, timeout=self.engine_timeout)
            )

        if activate:
            view = client[:]
            view.block = True
            view.activate()
        return client

    async def start_cluster(self, n=None):
        """Start a cluster

        starts one controller and n engines (default: self.n)

        .. versionchanged:: 7.1
            return self, to allow method chaining
        """
        if self.controller is None:
            await self.start_controller()
        if self.delay:
            await asyncio.sleep(self.delay)
        await self.start_engines(n)
        # return self to allow chaining
        return self

    async def stop_engines(self, engine_set_id=None):
        """Stop an engine set

        If engine_set_id is not given,
        all engines are stopped.
        """
        if engine_set_id is None:
            futures = []
            for engine_set_id in list(self.engines):
                futures.append(self.stop_engines(engine_set_id))
            if futures:
                await asyncio.gather(*futures)
            return
        self.log.info(f"Stopping engine(s): {engine_set_id}")
        engine_set = self.engines[engine_set_id]
        r = engine_set.stop()
        if inspect.isawaitable(r):
            await r
        # retrieve and cleanup output files
        engine_set.get_output(remove=True)
        self.engines.pop(engine_set_id)
        self.update_cluster_file()

    async def stop_engine(self, engine_id):
        """Stop one engine

        *May* stop all engines in a set,
        depending on EngineSet features (e.g. mpiexec)
        """
        raise NotImplementedError("How do we find an engine by id?")

    async def restart_engines(self, engine_set_id=None):
        """Restart an engine set"""
        if engine_set_id is None:
            for engine_set_id in list(self.engines):
                await self.restart_engines(engine_set_id)
            return
        engine_set = self.engines[engine_set_id]
        n = engine_set.n
        await self.stop_engines(engine_set_id)
        await self.start_engines(n, engine_set_id)

    async def restart_engine(self, engine_id):
        """Restart one engine

        *May* stop all engines in a set,
        depending on EngineSet features (e.g. mpiexec)
        """
        raise NotImplementedError("How do we find an engine by id?")

    async def signal_engine(self, signum, engine_id):
        """Signal one engine

        *May* signal all engines in a set,
        depending on EngineSet features (e.g. mpiexec)
        """
        raise NotImplementedError("How do we find an engine by id?")

    async def signal_engines(self, signum, engine_set_id=None):
        """Signal all engines in a set

        If no engine set is specified, signal all engine sets.
        """
        if engine_set_id is None:
            for engine_set_id in list(self.engines):
                await self.signal_engines(signum, engine_set_id)
            return
        self.log.info(f"Sending signal {signum} to engine(s) {engine_set_id}")
        engine_set = self.engines[engine_set_id]
        r = engine_set.signal(signum)
        if inspect.isawaitable(r):
            await r

    async def stop_controller(self):
        """Stop the controller"""
        if self.controller and self.controller.running:
            self.log.info("Stopping controller")
            r = self.controller.stop()
            if inspect.isawaitable(r):
                await r

        if self.controller:
            self.controller.get_output(remove=True)

        self.controller = None
        self.update_cluster_file()

    async def stop_cluster(self):
        """Stop the controller and all engines"""
        await asyncio.gather(self.stop_controller(), self.stop_engines())

    async def connect_client(self, **client_kwargs):
        """Return a client connected to the cluster"""
        # TODO: get connect info directly from controller
        # this assumes local files exist
        from ipyparallel import Client

        connection_info = self.controller.get_connection_info()
        if inspect.isawaitable(connection_info):
            connection_info = await connection_info

        return Client(
            connection_info['client'],
            cluster=self,
            profile_dir=self.profile_dir,
            cluster_id=self.cluster_id,
            **client_kwargs,
        )

    # context managers (both async and sync)
    _context_client = None

    async def __aenter__(self):
        client = self._context_client = await self.start_and_connect()
        return client

    async def __aexit__(self, *args):
        if self._context_client is not None:
            self._context_client.close()
            self._context_client = None
        await self.stop_engines()
        await self.stop_controller()

    def __enter__(self):
        client = self._context_client = self.start_and_connect_sync()
        return client

    def __exit__(self, *args):
        if self._context_client:
            self._context_client.close()
            self._context_client = None
        self.stop_engines_sync()
        self.stop_controller_sync()


class ClusterManager(LoggingConfigurable):
    """A manager of clusters

    Wraps Cluster, adding lookup/list by cluster id
    """

    clusters = Dict(help="My cluster objects")

    @staticmethod
    def _cluster_key(cluster):
        """Return a unique cluster key for a cluster

        Default is {profile}:{cluster_id}
        """
        return f"{abbreviate_profile_dir(cluster.profile_dir)}:{cluster.cluster_id}"

    @staticmethod
    def _cluster_files_in_profile_dir(profile_dir):
        """List clusters in a profile directory

        Returns list of cluster *files*
        """
        return glob.glob(os.path.join(profile_dir, "security", "cluster-*.json"))

    def load_clusters(
        self,
        *,
        profile_dirs=None,
        profile_dir=None,
        profiles=None,
        profile=None,
        init_default_clusters=False,
        **kwargs,
    ):
        """Populate a ClusterManager from cluster files on disk

        Load all cluster objects from the given profile directory(ies).

        Default is to find clusters in all IPython profiles,
        but profile directories or profile names can be specified explicitly.

        If `init_default_clusters` is True,
        a stopped Cluster object is loaded for every profile dir
        with cluster_id="" if no running cluster is found.

        Priority:

        - profile_dirs list
        - single profile_dir
        - profiles list by name
        - single profile by name
        - all IPython profiles, if nothing else specified
        """

        # first, check our current clusters
        for key, cluster in list(self.clusters.items()):
            # remove stopped clusters
            # but not *new* clusters that haven't started yet
            # if `cluster.controller` is present
            # that means it was running at some point
            if cluster.controller and not cluster._is_running():
                self.log.info(f"Removing stopped cluster {key}")
                self.clusters.pop(key)

        if profile_dirs is None:
            if profile_dir is not None:
                profile_dirs = [profile_dir]
            else:
                if profiles is None:
                    if profile is not None:
                        profiles = [profile]

                if profiles is not None:
                    profile_dirs = _locate_profiles(profiles)

            if profile_dirs is None:
                # totally unspecified, default to all
                profile_dirs = _all_profile_dirs()

        by_cluster_file = {c.cluster_file: c for c in self.clusters.values()}
        for profile_dir in profile_dirs:
            cluster_files = self._cluster_files_in_profile_dir(profile_dir)
            # load default cluster for each profile
            # TODO: only if it has any ipyparallel config files
            # *or* it's the default profile
            if init_default_clusters and not cluster_files:
                cluster = Cluster(profile_dir=profile_dir, cluster_id="")
                cluster_key = self._cluster_key(cluster)
                if cluster_key not in self.clusters:
                    self.clusters[cluster_key] = cluster

            for cluster_file in cluster_files:
                if cluster_file in by_cluster_file:
                    # already loaded, skip it
                    continue
                self.log.debug(f"Loading cluster file {cluster_file}")
                try:
                    cluster = Cluster.from_file(cluster_file, parent=self)
                except Exception as e:
                    self.log.warning(f"Failed to load cluster from {cluster_file}: {e}")
                    continue
                else:
                    cluster_key = self._cluster_key(cluster)
                    self.clusters[cluster_key] = cluster

        return self.clusters

    def new_cluster(self, **kwargs):
        """Create a new cluster"""
        cluster = Cluster(parent=self, **kwargs)
        cluster_key = self._cluster_key(cluster)
        if cluster_key in self.clusters:
            raise KeyError(f"Cluster {cluster_key} already exists!")
        self.clusters[cluster_key] = cluster
        return cluster_key, cluster

    def get_cluster(self, cluster_id):
        """Get a Cluster object by id"""
        return self.clusters[cluster_id]

    def remove_cluster(self, cluster_id):
        """Delete a cluster by id"""
        # TODO: check running?
        del self.clusters[cluster_id]


def clean_cluster_files(profile_dirs=None, *, log=None, force=False):
    """Find all files related to clusters, and remove them

    Cleans up stale logs, etc.

    if force: remove cluster files even for running
    If not force, will raise if any cluster files are found,
    because it's not safe to clean up cluster files while processes are running

    """
    if profile_dirs is None:
        # default to all profiles
        profile_dirs = _all_profile_dirs()

    if isinstance(profile_dirs, str):
        profile_dirs = [profile_dirs]

    def _remove(f):
        if log:
            log.debug(f"Removing {f}")
        try:
            os.remove(f)
        except OSError as e:
            log.error(f"Error removing {f}: {e}")

    for profile_dir in profile_dirs:
        if log:
            log.info(f"Cleaning ipython cluster files in {profile_dir}")
        for cluster_file in ClusterManager._cluster_files_in_profile_dir(profile_dir):
            if force:
                _remove(cluster_file)
            else:
                # check if running first
                try:
                    cluster = Cluster.from_file(cluster_file=cluster_file)
                except Exception as e:
                    if log:
                        log.error(
                            f"Removing cluster file, which failed to load {cluster_file}: {e}"
                        )
                    _remove(cluster_file)
                else:
                    if cluster._is_running():
                        raise ValueError(
                            "f{cluster} is still running. Use force=True to cleanup files for running clusters (may leave orphan processes!)"
                        )
                    else:
                        _remove(cluster_file)
        for log_file in glob.glob(os.path.join(profile_dir, 'log', '*')):
            _remove(log_file)
        for security_file in glob.glob(
            os.path.join(profile_dir, 'security', 'ipcontroller-*.json')
        ):
            _remove(security_file)
ipython-ipyparallel-14e3c43/ipyparallel/cluster/launcher.py000066400000000000000000002444751520071063500242410ustar00rootroot00000000000000"""Facilities for launching IPython Parallel processes asynchronously."""

# Copyright (c) IPython Development Team.
# Distributed under the terms of the Modified BSD License.
import asyncio
import copy
import inspect
import json
import logging
import os
import re
import shlex
import shutil
import signal
import stat
import sys
import threading
import time
from concurrent.futures import ThreadPoolExecutor
from functools import lru_cache, partial
from signal import SIGTERM
from subprocess import PIPE, STDOUT, Popen, check_output
from tempfile import TemporaryDirectory
from textwrap import indent

import psutil
from IPython.utils.path import ensure_dir_exists, get_home_dir
from IPython.utils.text import EvalFormatter
from tornado import ioloop
from traitlets import (
    Any,
    CRegExp,
    Dict,
    Float,
    Instance,
    Integer,
    List,
    Unicode,
    default,
    observe,
)
from traitlets.config.configurable import LoggingConfigurable

from ..traitlets import entry_points
from ..util import _OutputProducingThread as Thread
from ..util import shlex_join
from ._winhpcjob import IPControllerJob, IPControllerTask, IPEngineSetJob, IPEngineTask
from .shellcmd import ShellCommandSend

WINDOWS = os.name == 'nt'

SIGKILL = getattr(signal, "SIGKILL", -1)
# -----------------------------------------------------------------------------
# Paths to the kernel apps
# -----------------------------------------------------------------------------

ipcluster_cmd_argv = [sys.executable, "-m", "ipyparallel.cluster"]

ipengine_cmd_argv = [sys.executable, "-m", "ipyparallel.engine"]

ipcontroller_cmd_argv = [sys.executable, "-m", "ipyparallel.controller"]

# -----------------------------------------------------------------------------
# Base launchers and errors
# -----------------------------------------------------------------------------


class LauncherError(Exception):
    pass


class ProcessStateError(LauncherError):
    pass


class UnknownStatus(LauncherError):
    pass


class NotRunning(LauncherError):
    """Raised when a launcher is no longer running"""

    pass


class BaseLauncher(LoggingConfigurable):
    """An abstraction for starting, stopping and signaling a process."""

    stop_timeout = Integer(
        60,
        config=True,
        help="The number of seconds to wait for a process to exit before raising a TimeoutError in stop",
    )

    # In all of the launchers, the work_dir is where child processes will be
    # run. This will usually be the profile_dir, but may not be. any work_dir
    # passed into the __init__ method will override the config value.
    # This should not be used to set the work_dir for the actual engine
    # and controller. Instead, use their own config files or the
    # controller_args, engine_args attributes of the launchers to add
    # the work_dir option.
    work_dir = Unicode('.')

    # used in various places for labeling. often 'ipengine' or 'ipcontroller'
    name = Unicode("process")

    start_data = Any()
    stop_data = Any()

    identifier = Unicode(
        help="Used for lookup in e.g. EngineSetLauncher during notify_stop and default log files"
    )

    @default("identifier")
    def _default_identifier(self):
        identifier = f"{self.name}"
        if self.cluster_id:
            identifier = f"{identifier}-{self.cluster_id}"
        if getattr(self, 'engine_set_id', None):
            identifier = f"{identifier}-{self.engine_set_id}"
        identifier = f"{identifier}-{os.getpid()}"
        return identifier

    loop = Instance(ioloop.IOLoop, allow_none=True)

    def _loop_default(self):
        return ioloop.IOLoop.current()

    profile_dir = Unicode('').tag(to_dict=True)
    cluster_id = Unicode('').tag(to_dict=True)

    state = Unicode("before").tag(to_dict=True)

    stop_callbacks = List()

    def to_dict(self):
        """Serialize a Launcher to a dict, for later restoration"""
        d = {}
        for attr in self.traits(to_dict=True):
            d[attr] = getattr(self, attr)

        return d

    @classmethod
    def from_dict(cls, d, *, config=None, parent=None, **kwargs):
        """Restore a Launcher from a dict

        Subclasses should always call `launcher = super().from_dict(*args, **kwargs)`
        and finish initialization after that.

        After calling from_dict(),
        the launcher should be in the same state as after `.start()`
        (i.e. monitoring for exit, etc.)

        Returns: Launcher
            The instantiated and fully configured Launcher.

        Raises: NotRunning
            e.g. if the process has stopped and is no longer running.
        """
        launcher = cls(config=config, parent=parent, **kwargs)
        for attr in launcher.traits(to_dict=True):
            if attr in d:
                setattr(launcher, attr, d[attr])
        return launcher

    @property
    def cluster_args(self):
        """Common cluster arguments"""
        return []

    @property
    def connection_files(self):
        """Dict of connection file paths"""
        security_dir = os.path.join(self.profile_dir, 'security')
        name_prefix = "ipcontroller"
        if self.cluster_id:
            name_prefix = f"{name_prefix}-{self.cluster_id}"
        return {
            kind: os.path.join(security_dir, f"{name_prefix}-{kind}.json")
            for kind in ("client", "engine")
        }

    @property
    def args(self):
        """A list of cmd and args that will be used to start the process.

        This is what is passed to :func:`spawnProcess` and the first element
        will be the process name.
        """
        return self.find_args()

    def find_args(self):
        """The ``.args`` property calls this to find the args list.

        Subcommand should implement this to construct the cmd and args.
        """
        raise NotImplementedError('find_args must be implemented in a subclass')

    @property
    def arg_str(self):
        """The string form of the program arguments."""
        return ' '.join(self.args)

    @property
    def cluster_env(self):
        """Cluster-related env variables"""
        return {
            "IPP_CLUSTER_ID": self.cluster_id,
            "IPP_PROFILE_DIR": self.profile_dir,
        }

    environment = Dict(
        help="""Set environment variables for the launched process

        .. versionadded:: 8.0
        """,
        config=True,
    )

    def get_env(self):
        """Get the full environment for the process

        merges different sources for environment variables
        """
        env = {}
        env.update(self.cluster_env)
        env.update(self.environment)
        return env

    @property
    def running(self):
        """Am I running."""
        if self.state == 'running':
            return True
        else:
            return False

    async def start(self):
        """Start the process.

        Should be an `async def` coroutine.

        When start completes,
        the process should be requested (it need not be running yet),
        and waiting should begin in the background such that :meth:`.notify_stop`
        will be called when the process finishes.
        """
        raise NotImplementedError('start must be implemented in a subclass')

    async def stop(self):
        """Stop the process and notify observers of stopping.

        This method should be an `async def` coroutine,
        and return only after the process has stopped.

        All resources should be cleaned up by the time this returns.
        """
        raise NotImplementedError('stop must be implemented in a subclass')

    def on_stop(self, f):
        """Register a callback to be called with this Launcher's stop_data
        when the process actually finishes.
        """
        if self.state == 'after':
            return f(self.stop_data)
        else:
            self.stop_callbacks.append(f)

    def notify_start(self, data):
        """Call this to trigger startup actions.

        This logs the process startup and sets the state to 'running'.  It is
        a pass-through so it can be used as a callback.
        """

        self.log.debug(f"{self.__class__.__name__} {self.args[0]} started: {data}")
        self.start_data = data
        self.state = 'running'
        return data

    def notify_stop(self, data):
        """Call this to trigger process stop actions.

        This logs the process stopping and sets the state to 'after'. Call
        this to trigger callbacks registered via :meth:`on_stop`."""
        if self.state == 'after':
            self.log.debug("Already notified stop (data)")
            return data
        self.log.debug(f"{self.__class__.__name__} {self.args[0]} stopped: {data}")

        self.stop_data = data
        self.state = 'after'
        self._log_output(data)
        for f in self.stop_callbacks:
            f(data)
        return data

    def signal(self, sig):
        """Signal the process.

        Parameters
        ----------
        sig : str or int
            'KILL', 'INT', etc., or any signal number
        """
        raise NotImplementedError('signal must be implemented in a subclass')

    async def join(self, timeout=None):
        """Wait for the process to finish"""
        raise NotImplementedError('join must be implemented in a subclass')

    output_limit = Integer(
        100,
        config=True,
        help="""
    When a process exits, display up to this many lines of output
    """,
    )

    def get_output(self, remove=False):
        """Retrieve the output form the Launcher.

        If remove: remove the file, if any, where it was being stored.
        """
        # override in subclasses to retrieve output
        return ""

    def _log_output(self, stop_data=None):
        output = self.get_output(remove=True)
        if self.output_limit:
            output = "".join(output.splitlines(True)[-self.output_limit :])

        log = self.log.debug
        if stop_data and stop_data.get("exit_code", 0) != 0:
            log = self.log.warning
        if output:
            log("Output for %s:\n%s", self.identifier, output)


class ControllerLauncher(BaseLauncher):
    """Base class for launching ipcontroller"""

    name = Unicode("ipcontroller")

    controller_cmd = List(
        list(ipcontroller_cmd_argv),
        config=True,
        help="""Popen command to launch ipcontroller.""",
    )
    # Command line arguments to ipcontroller.
    controller_args = List(
        Unicode(),
        config=True,
        help="""command-line args to pass to ipcontroller""",
    )

    connection_info_timeout = Float(
        60,
        config=True,
        help="""
        Default timeout (in seconds) for get_connection_info
        
        .. versionadded:: 8.7
        """,
    )

    async def get_connection_info(self, timeout=None):
        """Retrieve connection info for the controller

        Default implementation assumes profile_dir and cluster_id are local.

        .. versionchanged:: 8.7
            Accept `timeout=None` (default) to use `.connection_info_timeout` config.
        """
        if timeout is None:
            timeout = self.connection_info_timeout
        connection_files = self.connection_files
        paths = list(connection_files.values())
        start_time = time.monotonic()
        if timeout >= 0:
            deadline = start_time + timeout
        else:
            deadline = None

        if not all(os.path.exists(f) for f in paths):
            self.log.debug(f"Waiting for {paths}")
        while not all(os.path.exists(f) for f in paths):
            if deadline is not None and time.monotonic() > deadline:
                missing_files = [f for f in paths if not os.path.exists(f)]
                raise TimeoutError(
                    f"Connection files {missing_files} did not arrive in {timeout}s"
                )
            await asyncio.sleep(0.1)
            status = self.poll()
            if inspect.isawaitable(status):
                status = await status
            if status is not None:
                raise RuntimeError(
                    f"Controller stopped with {status} while waiting for {paths}"
                )
        self.log.debug(f"Loading {paths}")
        connection_info = {}
        for key, path in connection_files.items():
            try:
                with open(path) as f:
                    connection_info[key] = json.load(f)
            except ValueError:
                # possible race while controller is still writing the file
                # give it half a second before trying again
                time.sleep(0.5)
                with open(path) as f:
                    connection_info[key] = json.load(f)

        return connection_info


class EngineLauncher(BaseLauncher):
    """Base class for launching one engine"""

    name = Unicode("ipengine")

    engine_cmd = List(
        ipengine_cmd_argv, config=True, help="""command to launch the Engine."""
    )
    # Command line arguments for ipengine.
    engine_args = List(
        Unicode(),
        config=True,
        help="command-line arguments to pass to ipengine",
    )

    n = Integer(1).tag(to_dict=True)

    engine_set_id = Unicode()


# -----------------------------------------------------------------------------
# Local process launchers
# -----------------------------------------------------------------------------


class LocalProcessLauncher(BaseLauncher):
    """Start and stop an external process in an asynchronous manner.

    This will launch the external process with a working directory of
    ``self.work_dir``.
    """

    # This is used to to construct self.args, which is passed to
    # spawnProcess.
    cmd_and_args = List(Unicode())

    poll_seconds = Integer(
        30,
        config=True,
        help="""Interval on which to poll processes (.

        Note: process exit should be noticed immediately,
        due to use of Process.wait(),
        but this interval should ensure we aren't leaving threads running forever,
        as other signals/events are checked on this interval
        """,
    )

    pid = Integer(-1).tag(to_dict=True)

    output_file = Unicode().tag(to_dict=True)

    @default("output_file")
    def _default_output_file(self):
        log_dir = os.path.join(self.profile_dir, "log")
        os.makedirs(log_dir, exist_ok=True)
        return os.path.join(log_dir, f'{self.identifier}.log')

    stop_seconds_until_kill = Integer(
        5,
        config=True,
        help="""The number of seconds to wait for a process to exit after sending SIGTERM before sending SIGKILL""",
    )

    stdout = None
    stderr = None
    process = None
    _wait_thread = None
    _popen_process = None

    def find_args(self):
        return self.cmd_and_args

    @classmethod
    def from_dict(cls, d, **kwargs):
        self = super().from_dict(d, **kwargs)
        self._reconstruct_process(d)
        return self

    def _reconstruct_process(self, d):
        """Reconstruct our process"""
        if 'pid' in d and d['pid'] > 0:
            try:
                self.process = psutil.Process(d['pid'])
            except psutil.NoSuchProcess as e:
                raise NotRunning(f"Process {d['pid']}")
            self._start_waiting()

    def _wait(self):
        """Background thread waiting for a process to exit"""
        exit_code = None
        while not self._stop_waiting.is_set() and self.state == 'running':
            try:
                # use a timeout so we can check the _stop_waiting event
                exit_code = self.process.wait(timeout=self.poll_seconds)
            except psutil.TimeoutExpired:
                continue
            else:
                break
        stop_data = dict(exit_code=exit_code, pid=self.pid, identifier=self.identifier)
        self.loop.add_callback(lambda: self.notify_stop(stop_data))
        if self._popen_process:
            # wait avoids ResourceWarning if the process has exited
            self._popen_process.wait(0)

    def _start_waiting(self):
        """Start background thread waiting on the process to exit"""
        # ensure self.loop is accessed on the main thread before waiting
        self.loop
        self._stop_waiting = threading.Event()
        self._wait_thread = Thread(
            target=self._wait, daemon=True, name=f"wait(pid={self.pid})"
        )
        self._wait_thread.start()

    def start(self):
        self.log.debug("Starting %s: %r", self.__class__.__name__, self.args)
        if self.state != 'before':
            raise ProcessStateError(
                'The process was already started and has state: {self.state}'
            )
        self.log.debug(f"Sending output for {self.identifier} to {self.output_file}")

        env = os.environ.copy()
        env.update(self.get_env())
        self.log.debug(f"Setting environment: {','.join(self.get_env())}")

        with open(self.output_file, "ab") as f, open(os.devnull, "rb") as stdin:
            proc = self._popen_process = Popen(
                self.args,
                stdout=f.fileno(),
                stderr=STDOUT,
                stdin=stdin,
                env=env,
                cwd=self.work_dir,
                start_new_session=True,  # don't forward signals
            )
        self.pid = proc.pid
        # use psutil API for self.process
        self.process = psutil.Process(proc.pid)

        self.notify_start(self.process.pid)
        self._start_waiting()
        if 1 <= self.log.getEffectiveLevel() <= logging.DEBUG:
            self._start_streaming()

    async def join(self, timeout=None):
        """Wait for the process to exit"""
        if self._wait_thread is not None:
            self._wait_thread.join(timeout=timeout)
            if self._wait_thread.is_alive():
                raise TimeoutError(
                    f"Process {self.process.pid} did not exit in {timeout} seconds."
                )

    def _stream_file(self, path):
        """Stream one file"""
        with open(path) as f:
            while self.state == 'running' and not self._stop_waiting.is_set():
                line = f.readline()
                # log prefix?
                # or stream directly to sys.stderr
                if line:
                    sys.stderr.write(line)
                else:
                    # pause while we are at the end of the file
                    time.sleep(0.1)

    def _start_streaming(self):
        self._stream_thread = t = Thread(
            target=partial(self._stream_file, self.output_file),
            name=f"Stream Output {self.identifier}",
            daemon=True,
        )
        t.start()

    _output = None

    def get_output(self, remove=False):
        if self._output is None:
            if self.output_file:
                try:
                    with open(self.output_file) as f:
                        self._output = f.read()
                except FileNotFoundError:
                    self.log.debug(f"Missing output file: {self.output_file}")
                    self._output = ""
            else:
                self._output = ""

        if remove and os.path.isfile(self.output_file):
            self.log.debug(f"Removing {self.output_file}")
            try:
                os.remove(self.output_file)
            except Exception as e:
                # don't crash on failure to remove a file,
                # e.g. due to another processing having it open
                self.log.error(f"Failed to remove {self.output_file}: {e}")

        return self._output

    async def stop(self):
        try:
            self.signal(SIGTERM)
        except Exception as e:
            self.log.debug(f"TERM failed: {e!r}")

        try:
            await self.join(timeout=self.stop_seconds_until_kill)
        except TimeoutError:
            self.log.warning(
                f"Process {self.pid} did not exit in {self.stop_seconds_until_kill} seconds after TERM"
            )
        else:
            return

        try:
            self.signal(SIGKILL)
        except Exception as e:
            self.log.debug(f"KILL failed: {e!r}")

        await self.join(timeout=self.stop_timeout)

    def signal(self, sig):
        if self.state == 'running':
            if WINDOWS and sig in {SIGTERM, SIGKILL}:
                # use Windows tree-kill for better child cleanup
                cmd = ['taskkill', '/pid', str(self.process.pid), '/t', '/F']
                check_output(cmd)
            else:
                self.process.send_signal(sig)

    # callbacks, etc:

    def handle_stdout(self, fd, events):
        if WINDOWS:
            line = self.stdout.recv().decode('utf8', 'replace')
        else:
            line = self.stdout.readline().decode('utf8', 'replace')
        # a stopped process will be readable but return empty strings
        if line:
            self.log.debug(line.rstrip())

    def handle_stderr(self, fd, events):
        if WINDOWS:
            line = self.stderr.recv().decode('utf8', 'replace')
        else:
            line = self.stderr.readline().decode('utf8', 'replace')
        # a stopped process will be readable but return empty strings
        if line:
            self.log.debug(line.rstrip())
        else:
            self.poll()

    def poll(self):
        if self.process.is_running():
            return None

        status = self.process.wait(0)
        if status is None:
            # return code cannot always be retrieved.
            # but we need to not return None if it's still running
            status = 'unknown'
        self.notify_stop(
            dict(exit_code=status, pid=self.process.pid, identifier=self.identifier)
        )
        return status


class LocalControllerLauncher(LocalProcessLauncher, ControllerLauncher):
    """Launch a controller as a regular external process."""

    def find_args(self):
        return self.controller_cmd + self.cluster_args + self.controller_args

    def start(self):
        """Start the controller by profile_dir."""
        return super().start()


class LocalEngineLauncher(LocalProcessLauncher, EngineLauncher):
    """Launch a single engine as a regular external process."""

    def find_args(self):
        return self.engine_cmd + self.cluster_args + self.engine_args


class LocalEngineSetLauncher(LocalEngineLauncher):
    """Launch a set of engines as regular external processes."""

    delay = Float(
        0.1,
        config=True,
        help="""delay (in seconds) between starting each engine after the first.
        This can help force the engines to get their ids in order, or limit
        process flood when starting many engines.""",
    )

    # launcher class
    launcher_class = LocalEngineLauncher

    launchers = Dict()
    stop_data = Dict()
    outputs = Dict()
    output_file = ""  # no output file for me

    def __init__(self, work_dir='.', config=None, **kwargs):
        super().__init__(work_dir=work_dir, config=config, **kwargs)

    def to_dict(self):
        d = super().to_dict()
        d['engines'] = {i: launcher.to_dict() for i, launcher in self.launchers.items()}
        return d

    @classmethod
    def from_dict(cls, d, **kwargs):
        self = super().from_dict(d, **kwargs)
        n = 0
        for i, engine_dict in d['engines'].items():
            try:
                self.launchers[i] = el = self.launcher_class.from_dict(
                    engine_dict, identifier=i, parent=self
                )
            except NotRunning as e:
                self.log.error(f"Engine {i} not running: {e}")
            else:
                n += 1
                el.on_stop(self._notice_engine_stopped)
        if n == 0:
            raise NotRunning("No engines left")
        else:
            self.n = n
        return self

    def start(self, n):
        """Start n engines by profile or profile_dir."""
        self.n = n
        dlist = []
        for i in range(n):
            identifier = str(i)
            if i > 0:
                time.sleep(self.delay)
            el = self.launchers[identifier] = self.launcher_class(
                work_dir=self.work_dir,
                parent=self,
                log=self.log,
                profile_dir=self.profile_dir,
                cluster_id=self.cluster_id,
                environment=self.environment,
                identifier=identifier,
                output_file=os.path.join(
                    self.profile_dir,
                    "log",
                    f"ipengine-{self.cluster_id}-{self.engine_set_id}-{i}.log",
                ),
            )

            # Copy the engine args over to each engine launcher.
            el.engine_cmd = copy.deepcopy(self.engine_cmd)
            el.engine_args = copy.deepcopy(self.engine_args)
            el.on_stop(self._notice_engine_stopped)
            d = el.start()
            dlist.append(d)
        self.notify_start(dlist)
        return dlist

    def find_args(self):
        return ['engine set']

    def signal(self, sig):
        for el in list(self.launchers.values()):
            el.signal(sig)

    async def stop(self):
        futures = []
        for el in list(self.launchers.values()):
            f = el.stop()
            if inspect.isawaitable(f):
                futures.append(asyncio.ensure_future(f))

        if futures:
            await asyncio.gather(*futures)

    def _notice_engine_stopped(self, data):
        identifier = data['identifier']
        launcher = self.launchers.pop(identifier)
        engines = self.stop_data.setdefault("engines", {})
        if launcher is not None:
            self.outputs[identifier] = launcher.get_output()
        engines[identifier] = data
        if not self.launchers:
            # get exit code from engine exit codes
            # set error code if any engine has an error
            self.stop_data["exit_code"] = None
            for engine in engines.values():
                if 'exit_code' in engine:
                    if self.stop_data['exit_code'] is None:
                        self.stop_data['exit_code'] = engine['exit_code']
                    if engine['exit_code']:
                        # save the first nonzero exit code
                        self.stop_data['exit_code'] = engine['exit_code']
                        break

            self.notify_stop(self.stop_data)

    def _log_output(self, stop_data=None):
        # avoid double-logging output, already logged by each engine
        # that will be a lot if all 100 engines fail!
        pass

    def get_output(self, remove=False):
        """Get the output of all my child Launchers"""
        for identifier, launcher in self.launchers.items():
            # remaining launchers
            self.outputs[identifier] = launcher.get_output(remove=remove)

        joined_output = []
        for identifier, engine_output in self.outputs.items():
            if engine_output:
                joined_output.append(f"Output for engine {identifier}")
                if self.output_limit:
                    engine_output = "".join(
                        engine_output.splitlines(True)[-self.output_limit :]
                    )
                joined_output.append(indent(engine_output, '  '))
        return '\n'.join(joined_output)


# -----------------------------------------------------------------------------
# MPI launchers
# -----------------------------------------------------------------------------


class MPILauncher(LocalProcessLauncher):
    """Launch an external process using mpiexec."""

    mpi_cmd = List(
        ['mpiexec'],
        config=True,
        help="The mpiexec command to use in starting the process.",
    )
    mpi_args = List(
        [], config=True, help="The command line arguments to pass to mpiexec."
    )
    program = List(['date'], help="The program to start via mpiexec.")
    program_args = List([], help="The command line argument to the program.")

    def __init__(self, *args, **kwargs):
        # deprecation for old MPIExec names:
        config = kwargs.get('config') or {}
        for oldname in (
            'MPIExecLauncher',
            'MPIExecControllerLauncher',
            'MPIExecEngineSetLauncher',
        ):
            deprecated = config.get(oldname)
            if deprecated:
                newname = oldname.replace('MPIExec', 'MPI')
                config[newname].update(deprecated)
                self.log.warning(
                    "WARNING: %s name has been deprecated, use %s", oldname, newname
                )

        super().__init__(*args, **kwargs)

    def find_args(self):
        """Build self.args using all the fields."""
        return (
            self.mpi_cmd
            + ['-n', str(self.n)]
            + self.mpi_args
            + self.program
            + self.program_args
        )

    def start(self, n=1):
        """Start n instances of the program using mpiexec."""
        self.n = n
        return super().start()

    def _log_output(self, stop_data):
        """Try to log mpiexec error output, if any, at warning level"""
        super()._log_output(stop_data)

        if stop_data and self.stop_data.get("exit_code", 0) != 0:
            # if this is True, super()._log_output would have already logged the full output
            # no need to extract from MPI
            return

        output = self.get_output(remove=False)
        mpiexec_lines = []

        in_mpi = False
        after_mpi = False
        mpi_tail = 0
        for line in output.splitlines(True):
            if line.startswith("======="):
                # mpich output looks like one block,
                # with a few lines trailing after
                # =========
                # = message
                # =
                # =========
                # YOUR APPLICATION TERMINATED WITH...
                if in_mpi:
                    after_mpi = True
                    mpi_tail = 2
                    in_mpi = False
                else:
                    in_mpi = True
            elif not in_mpi and line.startswith("-----"):
                # openmpi has less clear boundaries;
                # potentially several blocks that start and end with `----`
                # and error messages can show up after one or more blocks
                # once we see one of these lines, capture everything after it
                # toggle on each such line
                if not in_mpi:
                    in_mpi = True
                # this would let us only capture messages inside blocks
                # but doing so would exclude most useful error output
                # else:
                #     # show the trailing delimiter line
                #     mpiexec_lines.append(line)
                #     in_mpi = False
                #     continue

            if in_mpi:
                mpiexec_lines.append(line)
            elif after_mpi:
                if mpi_tail <= 0:
                    break
                else:
                    mpi_tail -= 1
                    mpiexec_lines.append(line)

        if mpiexec_lines:
            self.log.warning("mpiexec error output:\n" + "".join(mpiexec_lines))


class MPIControllerLauncher(MPILauncher, ControllerLauncher):
    """Launch a controller using mpiexec."""

    # alias back to *non-configurable* program[_args] for use in find_args()
    # this way all Controller/EngineSetLaunchers have the same form, rather
    # than *some* having `program_args` and others `controller_args`
    @property
    def program(self):
        return self.controller_cmd

    @property
    def program_args(self):
        return self.cluster_args + self.controller_args


class MPIEngineSetLauncher(MPILauncher, EngineLauncher):
    """Launch engines using mpiexec"""

    # alias back to *non-configurable* program[_args] for use in find_args()
    # this way all Controller/EngineSetLaunchers have the same form, rather
    # than *some* having `program_args` and others `controller_args`
    @property
    def program(self):
        return self.engine_cmd + ['--mpi']

    @property
    def program_args(self):
        return self.cluster_args + self.engine_args

    def start(self, n):
        """Start n engines by profile or profile_dir."""
        self.n = n
        return super().start(n)


# deprecated MPIExec names
class DeprecatedMPILauncher:
    def warn(self):
        oldname = self.__class__.__name__
        newname = oldname.replace('MPIExec', 'MPI')
        self.log.warning("WARNING: %s name is deprecated, use %s", oldname, newname)


class MPIExecLauncher(MPILauncher, DeprecatedMPILauncher):
    """Deprecated, use MPILauncher"""

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.warn()


class MPIExecControllerLauncher(MPIControllerLauncher, DeprecatedMPILauncher):
    """Deprecated, use MPIControllerLauncher"""

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.warn()


class MPIExecEngineSetLauncher(MPIEngineSetLauncher, DeprecatedMPILauncher):
    """Deprecated, use MPIEngineSetLauncher"""

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.warn()


# -----------------------------------------------------------------------------
# SSH launchers
# -----------------------------------------------------------------------------

ssh_output_pattern = re.compile(r"__([a-z][a-z0-9_]+)=([a-z0-9\-\.]+)__", re.IGNORECASE)


def _ssh_outputs(out):
    """Extract ssh output variables from process output"""
    return dict(ssh_output_pattern.findall(out))


def sshx(ssh_cmd, cmd, env, remote_output_file, log=None):
    """Launch a remote process, returning its remote pid

    Uses nohup and pipes to put it in the background
    """
    remote_cmd = shlex_join(cmd)

    nohup_start = f"nohup {remote_cmd} > {remote_output_file} 2>&1  0:
            self._start_waiting()

    def poll(self):
        """Override poll"""
        if self.state == 'running':
            return None
        else:
            return 0

    def get_output(self, remove=False):
        """Retrieve engine output from the remote file"""
        if self._output is None:
            with TemporaryDirectory() as td:
                output_file = os.path.join(
                    td, os.path.basename(self.remote_output_file)
                )
                try:
                    self._fetch_file(self.remote_output_file, output_file)
                except Exception as e:
                    self.log.error(
                        f"Failed to get output file {self.remote_output_file}: {e}"
                    )
                    self._output = ''
                else:
                    if remove:
                        # remove the file after we retrieve it
                        self.log.info(
                            f"Removing {self.location}:{self.remote_output_file}"
                        )
                        self.ssh_sender.cmd_remove(self.remote_output_file)
                    with open(output_file) as f:
                        self._output = f.read()
        return self._output

    def _send_file(self, local, remote, wait=True):
        """send a single file"""
        full_remote = f"{self.location}:{remote}".replace(os.path.sep, "/")
        for i in range(10 if wait else 0):
            if not os.path.exists(local):
                self.log.debug(f"waiting for {local}")
                time.sleep(1)
            else:
                break
        remote_dir = os.path.dirname(remote)
        self.log.info("ensuring remote %s:%s/ exists", self.location, remote_dir)
        if not self.ssh_sender.cmd_exists(remote_dir):
            self.ssh_sender.cmd_mkdir(remote_dir)
        self.log.info("sending %s to %s", local, full_remote)
        check_output(self.scp_cmd + self.scp_args + [local, full_remote], input=None)

    def send_files(self):
        """send our files (called before start)"""
        if not self.to_send:
            return
        for local_file, remote_file in self.to_send:
            self._send_file(local_file, remote_file)

    def _fetch_file(self, remote, local, wait=True):
        """fetch a single file"""
        full_remote = f"{self.location}:{remote}".replace(os.path.sep, "/")
        self.log.info("fetching %s from %s", local, full_remote)
        for i in range(10 if wait else 0):
            # wait up to 10s for remote file to exist
            check = self.ssh_sender.cmd_exists(remote)
            if check is False:
                time.sleep(1)
            elif check is True:
                break
            else:
                raise ValueError(f"cmd_exists expects bool, got {check!r}")
        local_dir = os.path.dirname(local)
        ensure_dir_exists(local_dir, 700)
        check_output(self.scp_cmd + self.scp_args + [full_remote, local])

    def fetch_files(self):
        """fetch remote files (called after start)"""
        if not self.to_fetch:
            return
        for remote_file, local_file in self.to_fetch:
            self._fetch_file(remote_file, local_file)

    def start(self, hostname=None, user=None, port=None):
        if hostname is not None:
            self.hostname = hostname
        if user is not None:
            self.user = user
        if port is not None:
            if '-p' not in self.ssh_args:
                self.ssh_args.append('-p')
                self.ssh_args.append(str(port))
            if '-P' not in self.scp_args:
                self.scp_args.append('-P')
                self.scp_args.append(str(port))

        # do some checks that setting are correct
        shell_info = self.ssh_sender.get_shell_info()
        python_ok = self.ssh_sender.has_python()
        self.log.debug(
            f"ssh sender object initiated (break_away_support={self.ssh_sender.breakaway_support})"
        )

        # create remote profile dir
        self.ssh_sender.check_output_python_module(
            ["IPython", "profile", "create", "--profile-dir", self.remote_profile_dir]
        )
        self.send_files()
        self.pid = self.ssh_sender.cmd_start(
            self.program + self.program_args,
            env=self.get_env(),
            output_file=self.remote_output_file,
        )
        remote_cmd = ' '.join(self.program + self.program_args)
        self.log.debug("Running `%s` (pid=%s)", remote_cmd, self.pid)
        self.notify_start({'host': self.location, 'pid': self.pid})
        self._start_waiting()
        self.fetch_files()

    def _wait(self):
        """Background thread waiting for a process to exit"""
        exit_code = None
        while not self._stop_waiting.is_set() and self.state == 'running':
            try:
                # use a timeout so we can check the _stop_waiting event
                exit_code = self.wait_one(timeout=self.poll_seconds)
            except TimeoutError:
                continue
            else:
                break
        stop_data = dict(exit_code=exit_code, pid=self.pid, identifier=self.identifier)
        self.loop.add_callback(lambda: self.notify_stop(stop_data))

    def _start_waiting(self):
        """Start background thread waiting on the process to exit"""
        # ensure self.loop is accessed on the main thread before waiting
        self.loop
        self._stop_waiting = threading.Event()
        self._wait_thread = Thread(
            target=self._wait,
            daemon=True,
            name=f"wait(host={self.location}, pid={self.pid})",
        )
        self._wait_thread.start()

    def wait_one(self, timeout):
        python_code = f"from ipyparallel.cluster.launcher import ssh_waitpid; ssh_waitpid({self.pid}, timeout={timeout})"
        out = self.ssh_sender.check_output_python_code(python_code)
        values = _ssh_outputs(out)
        if 'process_running' not in values:
            raise RuntimeError(out)
        running = int(values.get("process_running", 0))
        if running:
            raise TimeoutError("still running")
        return int(values.get("exit_code", -1))

    async def join(self, timeout=None):
        with ThreadPoolExecutor(1) as pool:
            wait = partial(self.wait_one, timeout=timeout)
            try:
                future = pool.submit(wait)
            except RuntimeError:
                # e.g. called during process shutdown,
                # which raises
                # RuntimeError: cannot schedule new futures after interpreter shutdown
                # Instead, do the blocking call
                wait()
            else:
                await asyncio.wrap_future(future)
        if getattr(self, '_stop_waiting', None) and self._wait_thread:
            self._stop_waiting.set()
            # got here, should be done
            # wait for wait_thread to cleanup
            self._wait_thread.join()

    def signal(self, sig):
        if self.state == 'running':
            self.ssh_sender.cmd_kill(self.pid, sig)

    @property
    def remote_connection_files(self):
        """Return remote paths for connection files"""
        return {
            key: self.remote_profile_dir + local_path[len(self.profile_dir) :]
            for key, local_path in self.connection_files.items()
        }


class SSHControllerLauncher(SSHLauncher, ControllerLauncher):
    # alias back to *non-configurable* program[_args] for use in find_args()
    # this way all Controller/EngineSetLaunchers have the same form, rather
    # than *some* having `program_args` and others `controller_args`

    def _controller_cmd_default(self):
        return [self.remote_python, "-m", 'ipyparallel.controller']

    @property
    def program(self):
        return self.controller_cmd

    @property
    def program_args(self):
        return self.cluster_args + self.controller_args

    @default("to_fetch")
    def _to_fetch_default(self):
        to_fetch = []
        return [
            (self.remote_connection_files[key], local_path)
            for key, local_path in self.connection_files.items()
        ]


class SSHEngineLauncher(SSHLauncher, EngineLauncher):
    # alias back to *non-configurable* program[_args] for use in find_args()
    # this way all Controller/EngineSetLaunchers have the same form, rather
    # than *some* having `program_args` and others `controller_args`

    def _engine_cmd_default(self):
        return [self.remote_python, "-m", "ipyparallel.engine"]

    @property
    def program(self):
        return self.engine_cmd

    @property
    def program_args(self):
        return self.cluster_args + self.engine_args

    @default("to_send")
    def _to_send_default(self):
        return [
            (local_path, self.remote_connection_files[key])
            for key, local_path in self.connection_files.items()
        ]


class SSHEngineSetLauncher(LocalEngineSetLauncher, SSHLauncher):
    launcher_class = SSHEngineLauncher
    engines = Dict(
        config=True,
        help="""dict of engines to launch.  This is a dict by hostname of ints,
        corresponding to the number of engines to start on that host.""",
    ).tag(to_dict=True)

    def _engine_cmd_default(self):
        return [self.remote_python, "-m", "ipyparallel.engine"]

    # unset some traits we inherit but don't use
    remote_output_file = ""

    def start(self, n):
        """Start engines by profile or profile_dir.
        `n` is an *upper limit* of engines.
        The `engines` config property is used to assign slots to hosts.
        """

        dlist = []
        # traits to inherit:
        # + all common config traits
        # - traits set per-engine via engines dict
        # + some non-configurable traits such as cluster_id
        engine_traits = self.launcher_class.class_traits(config=True)
        my_traits = self.traits(config=True)
        shared_traits = set(my_traits).intersection(engine_traits)
        # in addition to shared traits, pass some derived traits
        # and exclude some composite traits
        inherited_traits = shared_traits.difference(
            {"location", "user", "hostname", "to_send", "to_fetch"}
        ).union({"profile_dir", "cluster_id"})

        requested_n = n
        started_n = 0
        for host, n_or_config in self.engines.items():
            if isinstance(n_or_config, dict):
                overrides = n_or_config
                n = overrides.pop("n", 1)
            else:
                overrides = {}
                n = n_or_config

            full_host = host

            if '@' in host:
                user, host = host.split('@', 1)
            else:
                user = None
            if ':' in host:
                host, port = host.split(':', 1)
            else:
                port = None

            for i in range(min(n, requested_n - started_n)):
                if i > 0:
                    time.sleep(self.delay)
                # pass all common traits to the launcher
                kwargs = {attr: getattr(self, attr) for attr in inherited_traits}
                # overrides from engine config
                kwargs.update(overrides)
                # explicit per-engine values
                kwargs['parent'] = self
                kwargs['identifier'] = key = f"{full_host}/{i}"
                el = self.launchers[key] = self.launcher_class(**kwargs)
                if i > 0:
                    # only send files for the first engine on each host
                    el.to_send = []

                el.on_stop(self._notice_engine_stopped)
                d = el.start(user=user, hostname=host, port=port)
                dlist.append(key)
                started_n += 1
                if started_n >= requested_n:
                    break
        self.notify_start(dlist)
        self.n = started_n
        return dlist


class SSHProxyEngineSetLauncher(SSHLauncher, EngineLauncher):
    """Launcher for calling
    `ipcluster engines` on a remote machine.

    Requires that remote profile is already configured.
    """

    n = Integer().tag(to_dict=True)
    ipcluster_cmd = List(Unicode(), config=True)

    @default("ipcluster_cmd")
    def _default_ipcluster_cmd(self):
        return [self.remote_python, "-m", "ipyparallel.cluster"]

    ipcluster_args = List(
        Unicode(),
        config=True,
        help="""Extra CLI arguments to pass to ipcluster engines""",
    )

    @property
    def program(self):
        return self.ipcluster_cmd + ['engines']

    @property
    def program_args(self):
        return [
            '-n',
            str(self.n),
            '--profile-dir',
            self.remote_profile_dir,
            '--cluster-id',
            self.cluster_id,
        ] + self.ipcluster_args

    @default("to_send")
    def _to_send_default(self):
        return [
            (local_path, self.remote_connection_files[key])
            for key, local_path in self.connection_files.items()
        ]

    def start(self, n):
        self.n = n
        super().start()


# -----------------------------------------------------------------------------
# Windows HPC Server 2008 scheduler launchers
# -----------------------------------------------------------------------------


class WindowsHPCLauncher(BaseLauncher):
    job_id_regexp = CRegExp(
        r'\d+',
        config=True,
        help="""A regular expression used to get the job id from the output of the
        submit_command. """,
    )
    job_file_name = Unicode(
        'ipython_job.xml',
        config=True,
        help="The filename of the instantiated job script.",
    )
    scheduler = Unicode(
        '', config=True, help="The hostname of the scheduler to submit the job to."
    )
    job_cmd = Unicode(config=True, help="The command for submitting jobs.")

    @default("job_cmd")
    def _default_job(self):
        return shutil.which("job") or "job"

    @property
    def job_file(self):
        return os.path.join(self.work_dir, self.job_file_name)

    def write_job_file(self, n):
        raise NotImplementedError("Implement write_job_file in a subclass.")

    def find_args(self):
        return ['job.exe']

    def parse_job_id(self, output):
        """Take the output of the submit command and return the job id."""
        m = self.job_id_regexp.search(output)
        if m is not None:
            job_id = m.group()
        else:
            raise LauncherError(f"Job id couldn't be determined: {output}")
        self.job_id = job_id
        self.log.info(f'Job started with id: {job_id}')
        return job_id

    def start(self, n):
        """Start n copies of the process using the Win HPC job scheduler."""
        self.write_job_file(n)
        args = [
            'submit',
            f'/jobfile:{self.job_file}',
            f'/scheduler:{self.scheduler}',
        ]
        self.log.debug(
            "Starting Win HPC Job: {}".format(self.job_cmd + ' ' + ' '.join(args))
        )

        output = check_output(
            [self.job_cmd] + args, env=os.environ, cwd=self.work_dir, stderr=STDOUT
        )
        output = output.decode("utf8", 'replace')
        job_id = self.parse_job_id(output)
        self.notify_start(job_id)
        return job_id

    def stop(self):
        args = ['cancel', self.job_id, f'/scheduler:{self.scheduler}']
        self.log.info(
            "Stopping Win HPC Job: {}".format(self.job_cmd + ' ' + ' '.join(args))
        )
        try:
            output = check_output(
                [self.job_cmd] + args, env=os.environ, cwd=self.work_dir, stderr=STDOUT
            )
            output = output.decode("utf8", 'replace')
        except Exception:
            output = f'The job already appears to be stopped: {self.job_id}'
        self.notify_stop(
            dict(job_id=self.job_id, output=output)
        )  # Pass the output of the kill cmd
        return output


class WindowsHPCControllerLauncher(WindowsHPCLauncher):
    job_file_name = Unicode(
        'ipcontroller_job.xml', config=True, help="WinHPC xml job file."
    )
    controller_args = List([], config=False, help="extra args to pass to ipcontroller")

    def write_job_file(self, n):
        job = IPControllerJob(parent=self)

        t = IPControllerTask(parent=self)
        # The tasks work directory is *not* the actual work directory of
        # the controller. It is used as the base path for the stdout/stderr
        # files that the scheduler redirects to.
        t.work_directory = self.profile_dir
        # Add the profile_dir and from self.start().
        t.controller_args.extend(self.cluster_args)
        t.controller_args.extend(self.controller_args)
        job.add_task(t)

        self.log.debug("Writing job description file: %s", self.job_file)
        job.write(self.job_file)


class WindowsHPCEngineSetLauncher(WindowsHPCLauncher):
    job_file_name = Unicode(
        'ipengineset_job.xml', config=True, help="jobfile for ipengines job"
    )
    engine_args = List(Unicode(), config=False, help="extra args to pas to ipengine")

    def write_job_file(self, n):
        job = IPEngineSetJob(parent=self)

        for i in range(n):
            t = IPEngineTask(parent=self)
            # The tasks work directory is *not* the actual work directory of
            # the engine. It is used as the base path for the stdout/stderr
            # files that the scheduler redirects to.
            t.work_directory = self.profile_dir
            # Add the profile_dir and from self.start().
            t.engine_args.extend(self.cluster_args)
            t.engine_args.extend(self.engine_args)
            job.add_task(t)

        self.log.debug("Writing job description file: %s", self.job_file)
        job.write(self.job_file)

    def start(self, n):
        """Start the controller by profile_dir."""
        return super().start(n)


# -----------------------------------------------------------------------------
# Batch (PBS) system launchers
# -----------------------------------------------------------------------------


class BatchSystemLauncher(BaseLauncher):
    """Launch an external process using a batch system.

    This class is designed to work with UNIX batch systems like PBS, LSF,
    GridEngine, etc.  The overall model is that there are different commands
    like qsub, qdel, etc. that handle the starting and stopping of the process.

    This class also has the notion of a batch script. The ``batch_template``
    attribute can be set to a string that is a template for the batch script.
    This template is instantiated using string formatting. Thus the template can
    use {n} for the number of instances. Subclasses can add additional variables
    to the template dict.
    """

    # load cluster args into context instead of cli

    output_file = Unicode(
        config=True, help="File in which to store stdout/err of processes"
    ).tag(to_dict=True)

    @default("output_file")
    def _default_output_file(self):
        log_dir = os.path.join(self.profile_dir, "log")
        os.makedirs(log_dir, exist_ok=True)
        return os.path.join(log_dir, f'{self.identifier}.log')

    # Subclasses must fill these in.  See PBSEngineSet
    submit_command = List(
        [''],
        config=True,
        help="The name of the command line program used to submit jobs.",
    )
    delete_command = List(
        [''],
        config=True,
        help="The name of the command line program used to delete jobs.",
    )

    signal_command = List(
        [''],
        config=True,
        help="The name of the command line program used to send signals to jobs.",
    )

    job_id = Unicode().tag(to_dict=True)

    job_id_regexp = CRegExp(
        '',
        config=True,
        help="""A regular expression used to get the job id from the output of the
        submit_command.""",
    )
    job_id_regexp_group = Integer(
        0,
        config=True,
        help="""The group we wish to match in job_id_regexp (0 to match all)""",
    )
    batch_template = Unicode(
        '', config=True, help="The string that is the batch script template itself."
    ).tag(to_dict=True)
    batch_template_file = Unicode(
        '', config=True, help="The file that contains the batch template."
    )
    batch_file_name = Unicode(
        'batch_script',
        config=True,
        help="The filename of the instantiated batch script.",
    ).tag(to_dict=True)
    queue = Unicode('', config=True, help="The batch queue.").tag(to_dict=True)

    n = Integer(1).tag(to_dict=True)

    @observe('queue', 'n', 'cluster_id', 'profile_dir', 'output_file')
    def _context_field_changed(self, change):
        self._update_context(change)

    # not configurable, override in subclasses
    # Job Array regex
    job_array_regexp = CRegExp('')
    job_array_template = Unicode('')

    # Queue regex
    queue_regexp = CRegExp('')
    queue_template = Unicode('')

    # Output file
    output_regexp = CRegExp('')
    output_template = Unicode('')

    # The default batch template, override in subclasses
    default_template = Unicode('')
    # The full path to the instantiated batch script.
    batch_file = Unicode('')
    # the format dict used with batch_template:
    context = Dict()

    namespace = Dict(
        config=True,
        help="""Extra variables to pass to the template.

        This lets you parameterize additional options,
        such as wall_time with a custom template.
        """,
    ).tag(to_dict=True)

    @default("context")
    def _context_default(self):
        """load the default context with the default values for the basic keys

        because the _trait_changed methods only load the context if they
        are set to something other than the default value.
        """
        return dict(
            n=self.n,
            queue=self.queue,
            profile_dir=self.profile_dir,
            cluster_id=self.cluster_id,
            output_file=self.output_file,
        )

    program = List(Unicode())
    program_args = List(Unicode())

    @observe("program", "program_args")
    def _program_changed(self, change=None):
        self.context['program'] = shlex_join(self.program)
        self.context['program_args'] = shlex_join(self.program_args)
        self.context['program_and_args'] = shlex_join(self.program + self.program_args)

    @observe("n", "queue")
    def _update_context(self, change):
        self.context[change['name']] = change['new']

    # the Formatter instance for rendering the templates:
    formatter = Instance(EvalFormatter, (), {})

    def find_args(self):
        return self.submit_command + [self.batch_file]

    def __init__(self, work_dir='.', config=None, **kwargs):
        super().__init__(work_dir=work_dir, config=config, **kwargs)
        self.batch_file = os.path.join(self.work_dir, self.batch_file_name)
        # trigger program_changed to populate default context arguments
        self._program_changed()

    def _run_command(self, command, **kwargs):
        joined_command = shlex_join(command)
        self.log.debug("Running command: %s", joined_command)
        output = check_output(
            command,
            stdin=None,
            **kwargs,
        ).decode("utf8", "replace")
        self.log.debug("Command %s output: %s", command[0], output)
        return output

    def parse_job_id(self, output):
        """Take the output of the submit command and return the job id."""
        m = self.job_id_regexp.search(output)
        if m is not None:
            job_id = m.group(self.job_id_regexp_group)
        else:
            raise LauncherError(f"Job id couldn't be determined: {output}")
        self.job_id = job_id
        self.log.info('Job submitted with job id: %r', job_id)
        return job_id

    def write_batch_script(self, n=1):
        """Instantiate and write the batch script to the work_dir."""
        self.n = n
        self.context['environment_json'] = json.dumps(self.get_env())

        # first priority is batch_template if set
        if self.batch_template_file and not self.batch_template:
            # second priority is batch_template_file
            with open(self.batch_template_file) as f:
                self.batch_template = f.read()
        if not self.batch_template:
            # third (last) priority is default_template
            self.batch_template = self.default_template
            # add jobarray or queue lines to user-specified template
            # note that this is *only* when user did not specify a template.
            self._insert_options_in_script()
            self._insert_job_array_in_script()
        ns = {}
        # internally generated
        ns.update(self.context)
        # from user config
        ns.update(self.namespace)
        script_as_string = self.formatter.format(self.batch_template, **ns)
        self.log.debug(f'Writing batch script: {self.batch_file}\n{script_as_string}')
        with open(self.batch_file, 'w') as f:
            f.write(script_as_string)
        os.chmod(self.batch_file, stat.S_IRUSR | stat.S_IWUSR | stat.S_IXUSR)

    def _insert_options_in_script(self):
        """Inserts a queue if required into the batch script."""
        inserts = []
        if self.queue and not self.queue_regexp.search(self.batch_template):
            self.log.debug(f"Adding queue={self.queue} to {self.batch_file}")
            inserts.append(self.queue_template)

        if (
            self.output_file
            and self.output_template
            and not self.output_regexp.search(self.batch_template)
        ):
            self.log.debug(f"Adding output={self.output_file} to {self.batch_file}")
            inserts.append(self.output_template)

        if inserts:
            firstline, rest = self.batch_template.split('\n', 1)
            self.batch_template = '\n'.join([firstline] + inserts + [rest])

    def _insert_job_array_in_script(self):
        """Inserts a job array if required into the batch script."""
        if not self.job_array_regexp.search(self.batch_template):
            self.log.debug("adding job array settings to batch script")
            firstline, rest = self.batch_template.split('\n', 1)
            self.batch_template = '\n'.join([firstline, self.job_array_template, rest])

    def start(self, n=1):
        """Start n copies of the process using a batch system."""
        self.log.debug("Starting %s: %r", self.__class__.__name__, self.args)
        # Here we save profile_dir in the context so they
        # can be used in the batch script template as {profile_dir}
        self.write_batch_script(n)

        env = os.environ.copy()
        env.update(self.get_env())
        output = self._run_command(self.args, env=env)

        job_id = self.parse_job_id(output)
        self.notify_start(job_id)
        return job_id

    def stop(self):
        command = self.delete_command + [self.job_id]
        output = self._run_command(command)

        self.notify_stop(
            dict(job_id=self.job_id, output=output)
        )  # Pass the output of the kill cmd
        return output

    def signal(self, sig):
        command = self.signal_command + [str(sig), self.job_id]
        self._run_command(command)

    # same local-file implementation as LocalProcess
    # should this be on the base class?
    _output = None

    def get_output(self, remove=True):
        return LocalProcessLauncher.get_output(self, remove=remove)

    def poll(self):
        """Poll not implemented

        Need to use `squeue` and friends to check job status
        """
        return None


class BatchControllerLauncher(BatchSystemLauncher, ControllerLauncher):
    @default("program")
    def _default_program(self):
        return self.controller_cmd

    @observe("controller_cmd")
    def _controller_cmd_changed(self, change):
        self.program = self._default_program()

    @default("program_args")
    def _default_program_args(self):
        return self.cluster_args + self.controller_args

    @observe("controller_args")
    def _controller_args_changed(self, change):
        self.program_args = self._default_program_args()

    def start(self):
        return super().start(n=1)


class BatchEngineSetLauncher(BatchSystemLauncher, EngineLauncher):
    @default("program")
    def _default_program(self):
        return self.engine_cmd

    @observe("engine_cmd")
    def _engine_cmd_changed(self, change):
        self.program = self._default_program()

    @default("program_args")
    def _default_program_args(self):
        return self.cluster_args + self.engine_args

    @observe("engine_args")
    def _engine_args_changed(self, change):
        self.program_args = self._default_program_args()


class PBSLauncher(BatchSystemLauncher):
    """A BatchSystemLauncher subclass for PBS."""

    submit_command = List(['qsub'], config=True, help="The PBS submit command ['qsub']")
    delete_command = List(['qdel'], config=True, help="The PBS delete command ['qdel']")
    signal_command = List(
        ['qsig', '-s'], config=True, help="The PBS signal command ['qsig']"
    )
    job_id_regexp = CRegExp(
        r'\d+',
        config=True,
        help=r"Regular expresion for identifying the job ID [r'\d+']",
    )

    batch_file = Unicode('')
    job_array_regexp = CRegExp(r'#PBS\W+-t\W+[\w\d\-\$]+')
    job_array_template = Unicode('#PBS -t 1-{n}')
    queue_regexp = CRegExp(r'#PBS\W+-q\W+\$?\w+')
    queue_template = Unicode('#PBS -q {queue}')
    output_regexp = CRegExp(r'#PBS\W+(?:-o)\W+\$?\w+')
    output_template = Unicode('#PBS -j oe\n#PBS -o {output_file}')


class PBSControllerLauncher(PBSLauncher, BatchControllerLauncher):
    """Launch a controller using PBS."""

    batch_file_name = Unicode(
        'pbs_controller', config=True, help="batch file name for the controller job."
    )
    default_template = Unicode(
        """#!/bin/sh
#PBS -V
#PBS -N ipcontroller
{program_and_args}
"""
    )


class PBSEngineSetLauncher(PBSLauncher, BatchEngineSetLauncher):
    """Launch Engines using PBS"""

    batch_file_name = Unicode(
        'pbs_engines', config=True, help="batch file name for the engine(s) job."
    )
    default_template = Unicode(
        """#!/bin/sh
#PBS -V
#PBS -N ipengine
{program_and_args}
"""
    )


# Slurm is very similar to PBS


class SlurmLauncher(BatchSystemLauncher):
    """A BatchSystemLauncher subclass for slurm."""

    submit_command = List(
        ['sbatch'], config=True, help="The slurm submit command ['sbatch']"
    )
    delete_command = List(
        ['scancel'], config=True, help="The slurm delete command ['scancel']"
    )
    signal_command = List(
        ['scancel', '-s'],
        config=True,
        help="The slurm signal command ['scancel', '-s']",
    )
    job_id_regexp = CRegExp(
        r'\d+',
        config=True,
        help=r"Regular expresion for identifying the job ID [r'\d+']",
    )

    account = Unicode("", config=True, help="Slurm account to be used")

    qos = Unicode("", config=True, help="Slurm QoS to be used")

    # Note: from the man page:
    #'Acceptable time formats include "minutes", "minutes:seconds",
    # "hours:minutes:seconds", "days-hours", "days-hours:minutes"
    # and "days-hours:minutes:seconds".
    timelimit = Any("", config=True, help="Slurm timelimit to be used")

    options = Unicode("", config=True, help="Extra Slurm options")

    @observe('account')
    def _account_changed(self, change):
        self._update_context(change)

    @observe('qos')
    def _qos_changed(self, change):
        self._update_context(change)

    @observe('timelimit')
    def _timelimit_changed(self, change):
        self._update_context(change)

    @observe('options')
    def _options_changed(self, change):
        self._update_context(change)

    batch_file = Unicode('')

    job_array_regexp = CRegExp(r'#SBATCH\W+(?:--ntasks|-n)[\w\d\-\$]+')
    job_array_template = Unicode('''#SBATCH --ntasks={n}''')

    queue_regexp = CRegExp(r'#SBATCH\W+(?:--partition|-p)\W+\$?\w+')
    queue_template = Unicode('#SBATCH --partition={queue}')

    account_regexp = CRegExp(r'#SBATCH\W+(?:--account|-A)\W+\$?\w+')
    account_template = Unicode('#SBATCH --account={account}')

    qos_regexp = CRegExp(r'#SBATCH\W+--qos\W+\$?\w+')
    qos_template = Unicode('#SBATCH --qos={qos}')

    timelimit_regexp = CRegExp(r'#SBATCH\W+(?:--time|-t)\W+\$?\w+')
    timelimit_template = Unicode('#SBATCH --time={timelimit}')

    output_regexp = CRegExp(r'#SBATCH\W+(?:--output)\W+\$?\w+')
    output_template = Unicode('#SBATCH --output={output_file}')

    def _insert_options_in_script(self):
        """Insert 'partition' (slurm name for queue), 'account', 'time' and other options if necessary"""
        super()._insert_options_in_script()
        inserts = []
        if self.account and not self.account_regexp.search(self.batch_template):
            self.log.debug("adding slurm account settings to batch script")
            inserts.append(self.account_template)

        if self.qos and not self.qos_regexp.search(self.batch_template):
            self.log.debug("adding Slurm qos settings to batch script")
            firstline, rest = self.batch_template.split('\n', 1)
            inserts.append(self.qos_template)

        if self.timelimit and not self.timelimit_regexp.search(self.batch_template):
            self.log.debug("adding slurm time limit settings to batch script")
            inserts.append(self.timelimit_template)

        if inserts:
            firstline, rest = self.batch_template.split('\n', 1)
            self.batch_template = '\n'.join([firstline] + inserts + [rest])


class SlurmControllerLauncher(SlurmLauncher, BatchControllerLauncher):
    """Launch a controller using Slurm."""

    batch_file_name = Unicode(
        'slurm_controller.sbatch',
        config=True,
        help="batch file name for the controller job.",
    )
    default_template = Unicode(
        """#!/bin/sh
#SBATCH --export=ALL
#SBATCH --job-name=ipcontroller-{cluster_id}
#SBATCH --ntasks=1
{program_and_args}
"""
    )


class SlurmEngineSetLauncher(SlurmLauncher, BatchEngineSetLauncher):
    """Launch Engines using Slurm"""

    batch_file_name = Unicode(
        'slurm_engine.sbatch',
        config=True,
        help="batch file name for the engine(s) job.",
    )
    default_template = Unicode(
        """#!/bin/sh
#SBATCH --export=ALL
#SBATCH --job-name=ipengine-{cluster_id}
srun {program_and_args}
"""
    )


# SGE is very similar to PBS


class SGELauncher(PBSLauncher):
    """Sun GridEngine is a PBS clone with slightly different syntax"""

    job_array_regexp = CRegExp(r'#\$\W+\-t')
    job_array_template = Unicode('#$ -t 1-{n}')
    queue_regexp = CRegExp(r'#\$\W+-q\W+\$?\w+')
    queue_template = Unicode('#$ -q {queue}')


class SGEControllerLauncher(SGELauncher, BatchControllerLauncher):
    """Launch a controller using SGE."""

    batch_file_name = Unicode(
        'sge_controller', config=True, help="batch file name for the ipontroller job."
    )
    default_template = Unicode(
        """#$ -V
#$ -S /bin/sh
#$ -N ipcontroller
{program_and_args}
"""
    )


class SGEEngineSetLauncher(SGELauncher, BatchEngineSetLauncher):
    """Launch Engines with SGE"""

    batch_file_name = Unicode(
        'sge_engines', config=True, help="batch file name for the engine(s) job."
    )
    default_template = Unicode(
        """#$ -V
#$ -S /bin/sh
#$ -N ipengine
{program_and_args}
"""
    )


# LSF launchers


class LSFLauncher(BatchSystemLauncher):
    """A BatchSystemLauncher subclass for LSF."""

    submit_command = List(['bsub'], config=True, help="The LSF submit command ['bsub']")
    delete_command = List(
        ['bkill'], config=True, help="The LSF delete command ['bkill']"
    )
    signal_command = List(
        ['bkill', '-s'], config=True, help="The LSF signal command ['bkill', '-s']"
    )
    job_id_regexp = CRegExp(
        r'\d+',
        config=True,
        help=r"Regular expresion for identifying the job ID [r'\d+']",
    )

    batch_file = Unicode('')
    job_array_regexp = CRegExp(r'#BSUB\s+-J+\w+\[\d+-\d+\]')
    job_array_template = Unicode('#BSUB -J ipengine[1-{n}]')
    queue_regexp = CRegExp(r'#BSUB\s+-q\s+\w+')
    queue_template = Unicode('#BSUB -q {queue}')
    output_regexp = CRegExp(r'#BSUB\s+-oo?\s+\w+')
    output_template = Unicode('#BSUB -o {output_file}\n#BSUB -e {output_file}\n')

    def start(self, n=1):
        """Start n copies of the process using LSF batch system.
        This cant inherit from the base class because bsub expects
        to be piped a shell script in order to honor the #BSUB directives :
        bsub < script
        """
        # Here we save profile_dir in the context so they
        # can be used in the batch script template as {profile_dir}
        self.write_batch_script(n)
        piped_cmd = self.args[0] + '<"' + self.args[1] + '"'
        self.log.debug("Starting %s: %s", self.__class__.__name__, piped_cmd)
        p = Popen(piped_cmd, shell=True, env=os.environ, stdout=PIPE)
        output, err = p.communicate()
        output = output.decode("utf8", 'replace')
        job_id = self.parse_job_id(output)
        self.notify_start(job_id)
        return job_id


class LSFControllerLauncher(LSFLauncher, BatchControllerLauncher):
    """Launch a controller using LSF."""

    batch_file_name = Unicode(
        'lsf_controller', config=True, help="batch file name for the controller job."
    )
    default_template = Unicode(
        """#!/bin/sh
    #BSUB -env all
    #BSUB -J ipcontroller-{cluster_id}
    {program_and_args}
    """
    )


class LSFEngineSetLauncher(LSFLauncher, BatchEngineSetLauncher):
    """Launch Engines using LSF"""

    batch_file_name = Unicode(
        'lsf_engines', config=True, help="batch file name for the engine(s) job."
    )
    default_template = Unicode(
        """#!/bin/sh
    #BSUB -J ipengine-{cluster_id}
    #BSUB -env all
    {program_and_args}
    """
    )

    def get_env(self):
        # write directly to output files
        # otherwise, will copy and clobber merged stdout/err
        env = {"LSB_STDOUT_DIRECT": "Y"}
        env.update(super().get_env())
        return env


class HTCondorLauncher(BatchSystemLauncher):
    """A BatchSystemLauncher subclass for HTCondor.

    HTCondor requires that we launch the ipengine/ipcontroller scripts rather
    that the python instance but otherwise is very similar to PBS.  This is because
    HTCondor destroys sys.executable when launching remote processes - a launched
    python process depends on sys.executable to effectively evaluate its
    module search paths. Without it, regardless of which python interpreter you launch
    you will get the to built in module search paths.

    We use the ip{cluster, engine, controller} scripts as our executable to circumvent
    this - the mechanism of shebanged scripts means that the python binary will be
    launched with argv[0] set to the *location of the ip{cluster, engine, controller}
    scripts on the remote node*. This means you need to take care that:

    a. Your remote nodes have their paths configured correctly, with the ipengine and ipcontroller
       of the python environment you wish to execute code in having top precedence.
    b. This functionality is untested on Windows.

    If you need different behavior, consider making you own template.
    """

    submit_command = List(
        ['condor_submit'],
        config=True,
        help="The HTCondor submit command ['condor_submit']",
    )
    delete_command = List(
        ['condor_rm'], config=True, help="The HTCondor delete command ['condor_rm']"
    )
    job_id_regexp = CRegExp(
        r'(\d+)\.$',
        config=True,
        help=r"Regular expression for identifying the job ID [r'(\d+)\.$']",
    )
    job_id_regexp_group = Integer(
        1, config=True, help="""The group we wish to match in job_id_regexp [1]"""
    )

    job_array_regexp = CRegExp(r'queue\W+\$')
    job_array_template = Unicode('queue {n}')

    def _insert_job_array_in_script(self):
        """Inserts a job array if required into the batch script."""
        if not self.job_array_regexp.search(self.batch_template):
            self.log.debug("adding job array settings to batch script")
            # HTCondor requires that the job array goes at the bottom of the script
            self.batch_template = '\n'.join(
                [self.batch_template, self.job_array_template]
            )

    def _insert_options_in_script(self):
        """AFAIK, HTCondor doesn't have a concept of multiple queues that can be
        specified in the script.
        """
        super()._insert_options_in_script()


class HTCondorControllerLauncher(HTCondorLauncher, BatchControllerLauncher):
    """Launch a controller using HTCondor."""

    batch_file_name = Unicode(
        'htcondor_controller',
        config=True,
        help="batch file name for the controller job.",
    )
    default_template = Unicode(
        r"""
universe        = vanilla
executable      = ipcontroller
# by default we expect a shared file system
transfer_executable = False
arguments       = {program_args}
"""
    )


class HTCondorEngineSetLauncher(HTCondorLauncher, BatchEngineSetLauncher):
    """Launch Engines using HTCondor"""

    batch_file_name = Unicode(
        'htcondor_engines', config=True, help="batch file name for the engine(s) job."
    )
    default_template = Unicode(
        """
universe        = vanilla
executable      = ipengine
# by default we expect a shared file system
transfer_executable = False
arguments       = "{program_args}"
"""
    )


# -----------------------------------------------------------------------------
# Collections of launchers
# -----------------------------------------------------------------------------

local_launchers = [
    LocalControllerLauncher,
    LocalEngineLauncher,
    LocalEngineSetLauncher,
]
mpi_launchers = [
    MPILauncher,
    MPIControllerLauncher,
    MPIEngineSetLauncher,
]
ssh_launchers = [
    SSHLauncher,
    SSHControllerLauncher,
    SSHEngineLauncher,
    SSHEngineSetLauncher,
    SSHProxyEngineSetLauncher,
]
winhpc_launchers = [
    WindowsHPCLauncher,
    WindowsHPCControllerLauncher,
    WindowsHPCEngineSetLauncher,
]
pbs_launchers = [
    PBSLauncher,
    PBSControllerLauncher,
    PBSEngineSetLauncher,
]
slurm_launchers = [
    SlurmLauncher,
    SlurmControllerLauncher,
    SlurmEngineSetLauncher,
]
sge_launchers = [
    SGELauncher,
    SGEControllerLauncher,
    SGEEngineSetLauncher,
]
lsf_launchers = [
    LSFLauncher,
    LSFControllerLauncher,
    LSFEngineSetLauncher,
]
htcondor_launchers = [
    HTCondorLauncher,
    HTCondorControllerLauncher,
    HTCondorEngineSetLauncher,
]
all_launchers = (
    local_launchers
    + mpi_launchers
    + ssh_launchers
    + winhpc_launchers
    + pbs_launchers
    + slurm_launchers
    + sge_launchers
    + lsf_launchers
    + htcondor_launchers
)


def find_launcher_class(name, kind):
    """Return a launcher class for a given name and kind.

    Parameters
    ----------
    name : str
        The full name of the launcher class, either with or without the
        module path, or an abbreviation (MPI, SSH, SGE, PBS, LSF, HTCondor
        Slurm, WindowsHPC).
    kind : str
        Either 'EngineSet' or 'Controller'.
    """
    if kind == 'engine':
        group_name = 'ipyparallel.engine_launchers'
    elif kind == 'controller':
        group_name = 'ipyparallel.controller_launchers'
    else:
        raise ValueError(f"kind must be 'engine' or 'controller', not {kind!r}")
    group = entry_points(group=group_name)
    # make it case-insensitive
    registry = {entrypoint.name.lower(): entrypoint for entrypoint in group}
    return registry[name.lower()].load()


@lru_cache
def abbreviate_launcher_class(cls):
    """Abbreviate a launcher class back to its entrypoint name"""
    cls_key = f"{cls.__module__}:{cls.__name__}"
    # allow entrypoint_name attribute in case the definition module
    # is not the same as the 'import' module
    if getattr(cls, 'entrypoint_name', None):
        return getattr(cls, 'entrypoint_name')

    for kind in ('controller', 'engine'):
        group_name = f'ipyparallel.{kind}_launchers'
        group = entry_points(group=group_name)
        for entrypoint in group:
            if entrypoint.value == cls_key:
                return entrypoint.name.lower()
    return cls_key
ipython-ipyparallel-14e3c43/ipyparallel/cluster/shellcmd.py000066400000000000000000000526771520071063500242340ustar00rootroot00000000000000#!/usr/bin/env python
"""
Shell helper application for OS independent shell commands

Currently, the following command are supported:
* start:   starts a process into background and returns its pid
* running: check if a process with a given pid is running
* kill:    kill a process with a given pid
* mkdir:   creates directory recursively (no error if directory already exists)
* rmdir:   remove directory recursively
* exists:  checks if a file/directory exists
* remove:  removes a file
"""

import base64
import inspect
import json
import logging
import pathlib
import re
import sys
import time
import warnings
from subprocess import CalledProcessError, Popen, TimeoutExpired, check_output
from tempfile import NamedTemporaryFile

from . import shellcmd_receive

_shell_cmd_receive_tpl = '''
import base64, json

{define_receive}

def _decode(b64_json):
    return json.loads(base64.b64decode(b64_json).decode("utf8"))

inputs_encoded = "{inputs_encoded}"
inputs = _decode(inputs_encoded)
receive_parameters=inputs["receive_parameters"]
command_parameters=inputs["command_parameters"]

with ShellCommandReceive(**receive_parameters) as r:
    r.{method}(**command_parameters)
'''

_py_detached_tpl = '''
import json
input_json = """{json_params}"""
inputs = json.loads(json_params)

from subprocess import run, PIPE, STDOUT

with open(inputs['input_filename'], 'r') as f:
    stdin = f.read()

with open(inputs['output_filename'], 'w') as f:
    run(inputs["cmd_args"], input=stdin, stdout=f, stderr=STDOUT, check=True, text=True)
'''


def _encode(inputs):
    """return encoded input parameters

    Should be shell escaping-safe
    inverse is defined in _shell_cmd_receive_tpl
    """
    return base64.b64encode(json.dumps(inputs).encode("utf8")).decode("ascii")


class ShellCommandSend:
    """
    Helper class for sending shell commands in generic and OS independent form

    The class is designed to send shell commands to an ssh connection. Nevertheless, it can be
    used for send commands to different local shell as well, which is useful for testing. Since
    the concept uses the ipyparallel package (class ipyparallel.cluster.ShellCommandReceive) for
    executing the commands, it is necessary that a valid python installation (python_path) is provided.
    By calling has_python this can be evaluated. Furthermore, get_shell_info can be called to retrieve OS and
    shell information independent of a valid python installation.

    Since some operation require different handling for different platforms/shells the class gathers
    necessary information during initialization. This is done per default at object instantiation.
    Nevertheless, it can be postponed (initialize=False) but before any member function is called, the
    initialize function has to be called.

    Beside generic check_output[...] functions (equivalent to subprocess.check_output), the class provides
    specific shell commands which have a cmd_ prefix. When adding new functions make sure that an
    equivalent is added in the ShellCommandReceive class as well.

    To start processes through an ssh connection on a windows server that stays alife after the ssh connection
    is closed, the process must be started with the breakaway creation flag set. Which works fine on 'normal'
    machine and VMs is denied on windows github runners (I guess because of security reasons). Hence, it was
    necessary to implement a work-a-round to enable CI in github. In case breakaway is not supported, a detached
    ssh connection is started (by the ShellCommandSend object) which stays open until the process to start has
    finished. see _cmd_send for further details.

    The class supports a special send receiver mode (see self.send_receiver_code), which allows command sending
    without ipyparallel being installed on the 'other side'. In this mode basically the shellcmd_receive.py file
    is also transferred, which makes development and testing much easier.
    """

    package_name = "ipyparallel.shellcmd"  # package name for send the command
    output_template = re.compile(
        r"__([a-z][a-z0-9_]+)=([a-z0-9\-\.]+)__", re.IGNORECASE
    )
    receiver_code = pathlib.Path(
        inspect.getfile(shellcmd_receive)
    ).read_text()  # get full code of receiver side
    receiver_import = (
        "from ipyparallel.cluster.shellcmd_receive import ShellCommandReceive"
    )

    def __init__(
        self,
        shell,
        args,
        python_path,
        initialize=True,
        send_receiver_code=False,
        log=None,
    ):
        self.shell = shell
        self.args = args
        self.python_path = python_path

        # shell dependent values. Those values are determined in the initialize function
        self.shell_info = None
        self._win = sys.platform.lower().startswith("win")
        self.is_powershell = None  # flag if shell is windows powershell (requires special parameter quoting)
        self.breakaway_support = None  # flag if process creation support the break_away flag (relevant for windows only; None under linux)
        self.join_params = True  # join all cmd params into a single param. does NOT work with windows cmd
        # equivalent to os.pathsep (will be changed during initialization)
        self.pathsep = "/"

        # should be activated when developing...
        self.send_receiver_code = send_receiver_code
        self.debugging = False  # if activated an output log (~/ipp_shellcmd.log) is created on receiver side
        self.log = log or logging.getLogger(__name__)

        if initialize:
            self.initialize()

    def _check_output(self, cmd, **kwargs):
        kwargs.setdefault("text", True)
        self.log.debug("check_output %s", cmd)
        return check_output(cmd, **kwargs)

    def _runs_successful(self, cmd):
        self.log.debug("Checking if %s runs successfully", cmd)
        try:
            check_output(cmd, input="")
        except CalledProcessError as e:
            return False
        return True

    @staticmethod
    def _as_list(cmd):
        if isinstance(cmd, str):
            return [cmd]
        elif isinstance(cmd, list):
            return cmd
        else:
            raise TypeError(f"Unknown command type: {cmd!r}")

    def _cmd_start_windows_no_breakaway(self, cmd_args, py_cmd):
        # if windows platform doesn't support breakaway flag (e.g. Github Runner)
        # we need to start a detached process (as work-a-round), the runs until the
        # 'remote' process has finished. But we cannot directly start the command as detached
        # process, since redirection (for retrieving the pid) doesn't work. We need a detached
        # proxy process that redirects output the to file, that can be read by current process
        # to retrieve the pid.

        assert self._win
        from subprocess import DETACHED_PROCESS

        tmp = NamedTemporaryFile(
            mode="w", delete=False
        )  # use python to generate a tempfile name
        fo_name = tmp.name
        tmp.close()
        fi_name = (
            fo_name + "_stdin.py"
        )  # use tempfile name as basis for python script input
        with open(fi_name, "w") as f:
            f.write(py_cmd)

        # simple python code that starts the actual cmd in a detached process
        inputs = dict(
            input_filename=fi_name,
            output_filename=fo_name,
            cmd_args=cmd_args,
        )
        self.log.debug("Starting detached process with inputs %s", inputs)
        input_json = json.dumps(inputs)
        py_detached = _py_detached_tpl.format(input_json=input_json)

        # now start proxy process detached
        self.log.debug("[ShellCommandSend._cmd_send] starting detached process...")
        self.log.debug("[ShellCommandSend._cmd_send] python command: \n%s", py_cmd)
        try:
            p = Popen(
                [sys.executable, '-c', py_detached],
                close_fds=True,
                creationflags=DETACHED_PROCESS,
            )
        except Exception as e:
            self.log.error(f"[ShellCommandSend._cmd_send] detached process failed: {e}")
            raise e
        self.log.debug(
            "[ShellCommandSend._cmd_send] detached process started successful. Waiting for redirected output (pid)..."
        )

        # retrieve (remote) pid from output file
        output = ""
        while True:
            with open(fo_name) as f:
                output = f.read()
                if len(output) > 0:
                    break
                if p.poll() is not None:
                    if p.returncode != 0:
                        raise CalledProcessError(p.returncode, "cmd_start")
                    else:
                        raise Exception(
                            "internal error: no pid returned, although exit code of process was 0"
                        )

            time.sleep(0.1)  # wait a 0.1s and repeat

        if not output:
            self.log.error("[ShellCommandSend._cmd_send] no output received!")
        else:
            self.log.debug("[ShellCommandSend._cmd_send] output received: %s", output)

        return output

    def _cmd_send(self, method, **kwargs):
        # in send receiver mode it is not required that the ipyparallel.cluster.shellcmd
        # exists (or is update to date) on the 'other' side of the shell. This is particular
        # useful when doing further development without copying the adapted file before each
        # test run. Furthermore, the calls are much faster.
        receive_params = {}

        # make sure that env is a dictionary with only str entries (for key and value; value can be null as well)

        if self.debugging:
            receive_params["debugging"] = True
            receive_params["log"] = '~/ipp_shellcmd.log'
        if self.breakaway_support is False:
            receive_params["use_breakaway"] = False

        py_cmd = _shell_cmd_receive_tpl.format(
            define_receive=self.receiver_code
            if self.send_receiver_code
            else self.receiver_import,
            inputs_encoded=_encode(
                {
                    "receive_parameters": receive_params,
                    "command_parameters": kwargs,
                }
            ),
            method=method,
        )
        cmd_args = self.shell + self.args + [self.python_path]
        if method == 'start' and self.breakaway_support is False:
            return self._cmd_start_windows_no_breakaway(cmd_args, py_cmd)
        else:
            return self._check_output(cmd_args, universal_newlines=True, input=py_cmd)

    def _get_pid(self, output):
        # need to extract pid value
        values = dict(self.output_template.findall(output))
        if 'remote_pid' in values:
            return int(values['remote_pid'])
        else:
            raise RuntimeError(f"Failed to get pid from output: {output}")

    def _check_for_break_away_flag(self):
        assert self._win
        assert self.python_path is not None
        py_code = "import subprocess; subprocess.Popen(['cmd.exe', '/C'], close_fds=True, creationflags=subprocess.CREATE_BREAKAWAY_FROM_JOB); print('successful')"
        cmd = (
            self.shell
            + self.args
            + [
                self.python_path,
                '-c',
                f'"{py_code}"',
            ]
        )
        try:
            # non-zero return code (in pwsh) or empty output (in cmd), if break_away test fails
            output = self._check_output(cmd).strip()
        except Exception as e:
            # just to see which exception was thrown
            warnings.warn(
                f"Break away test exception: {e!r}",
                UserWarning,
                stacklevel=4,
            )
            output = ""

        return output == "successful"

    def initialize(self):
        """initialize necessary variables by sending an echo command that works on all OS and shells"""
        if self.shell_info:
            return
        #  example outputs on
        #   windows-powershell: OS-WIN-CMD=%OS%;OS-WIN-PW=Windows_NT;OS-LINUX=;SHELL=
        #   windows-cmd       : "OS-WIN-CMD=Windows_NT;OS-WIN-PW=$env:OS;OS-LINUX=$OSTYPE;SHELL=$SHELL"
        #   ubuntu-bash       : OS-WIN-CMD=Windows_NT;OS-WIN-PW=:OS;OS-LINUX=linux-gnu;SHELL=/bin/bash
        #   macos 11          : OS-WIN-CMD=%OS%;OS-WIN-PW=:OS;OS-LINUX=darwin20;SHELL=/bin/bash
        cmd = (
            self.shell
            + self.args
            + ['echo "OS-WIN-CMD=%OS%;OS-WIN-PW=$env:OS;OS-LINUX=$OSTYPE;SHELL=$SHELL"']
        )
        timeout = 10
        try:
            output = self._check_output(
                cmd, timeout=timeout
            )  # timeout for command is set to 10s
        except CalledProcessError as e:
            raise Exception(
                "Unable to get remote shell information. Are the ssh connection data correct?"
            )
        except TimeoutExpired as e:
            raise Exception(
                f"Timeout of {timeout}s reached while retrieving remote shell information. Are the ssh connection data correct?"
            )

        entries = output.strip().strip('\\"').strip('"').split(";")
        # filter output non valid entries: contains =$ or =% or has no value assign (.....=)
        valid_entries = list(
            filter(
                lambda e: not ("=$" in e or "=%" in e or "=:" in e or e[-1] == '='),
                entries,
            )
        )
        system = shell = None

        # currently we do not check if double entries are found
        for e in valid_entries:
            key, val = e.split("=")
            if key == "OS-WIN-CMD":
                system = val
                shell = "cmd.exe"
                self.is_powershell = False
                self._win = True
                self.join_params = (
                    False  # disable joining, since it does not work for windows cmd.exe
                )
                self.pathsep = "\\"
            elif key == "OS-WIN-PW":
                system = val
                shell = "powershell.exe"
                self.is_powershell = True
                self._win = True
                self.pathsep = "\\"
            elif key == "OS-LINUX":
                system = val
                self.is_powershell = False
                self._win = False
            elif key == "SHELL":
                shell = val

        if self._win and self.python_path is not None:
            self.breakaway_support = self._check_for_break_away_flag()  # check if break away flag is available (its not in windows github runners)

        self.shell_info = (system, shell)

    def get_shell_info(self):
        """
        get shell information
        :return: (str, str): string of system and shell
        """
        assert self.shell_info  # make sure that initialize was called already
        return self.shell_info

    def has_python(self, python_path=None):
        """Check if remote python can be started ('python --version')
        :return: bool: flag if python start was found
        """
        assert self.shell_info  # make sure that initialize was called already
        if not python_path:
            python_path = self.python_path
        cmd = self.shell + self.args + [python_path, '--version']
        return self._runs_successful(cmd)

    def check_output(self, cmd, **kwargs):
        """subprocess.check_output call using the shell connection
        :param cmd: command (str or list of strs) that should be executed
        :param kwargs: additional parameters that are passed to subprocess.check_output
        :return: output of executed command"""
        assert self.shell_info  # make sure that initialize was called already
        full_cmd = self.shell + self.args + self._as_list(cmd)
        return self._check_output(full_cmd, **kwargs)

    def check_output_python_module(self, module_params, **kwargs):
        """subprocess.check_output call based on python module call
        :param module_params: python module and parameters (str or list of strs) that should be executed
        :param kwargs: additional parameters that are passed to subprocess.check_output
        :return: output of executed command
        """
        assert self.shell_info  # make sure that initialize was called already
        cmd = (
            self.shell
            + self.args
            + [self.python_path, "-m"]
            + self._as_list(module_params)
        )
        return self._check_output(cmd, **kwargs)

    def check_output_python_code(self, python_code, **kwargs):
        """subprocess.check_output call running the provided python code
        :param python_code: code that should be executed
        :param kwargs: additional parameters that are passed to subprocess.check_output
        :return: output of executed command
        """
        assert self.shell_info  # make sure that initialize was called already
        assert "input" not in kwargs  # must not be specified
        assert "universal_newlines" not in kwargs  # must not be specified
        cmd = self.shell + self.args + [self.python_path]
        return self._check_output(
            cmd, universal_newlines=True, input=python_code, **kwargs
        )

    def cmd_start(self, cmd, env=None, output_file=None):
        """starts command into background and return remote pid
        :param cmd: command (str or list of strs) that should be started
        :param env: dictionary of environment variable that should be set/unset before starting the process
        :param output_file: stdout and stderr will be redirected to the (remote) file
        :return: pid of started process
        """
        # join commands into a single parameter. otherwise
        assert self.shell_info  # make sure that initialize was called already
        return self._get_pid(
            self._cmd_send("cmd_start", cmd=cmd, env=env, output_file=output_file)
        )

    def cmd_start_python_module(self, module_params, env=None, output_file=None):
        """start python module into background and return remote pid
        :param module_params: python module and parameters (str or list of strs) that should be executed
        :param env: dictionary of environment variable that should be set before starting the process
        :param output_file: stdout and stderr will be redirected to the (remote) file
        :return: pid of started process
        """
        assert self.shell_info  # make sure that initialize was called already
        cmd = [self.python_path, "-m"] + self._as_list(module_params)
        return self._get_pid(
            self._cmd_send("cmd_start", cmd=cmd, env=env, output_file=output_file)
        )

    def cmd_start_python_code(self, python_code, env=None, output_file=None):
        """start python with provided code into background and return remote pid
        :param python_code: code that should be executed
        :param env: dictionary of environment variable that should be set before starting the process
        :param output_file: stdout and stderr will be redirected to the (remote) file
        :return: pid of started process
        """
        assert self.shell_info  # make sure that initialize was called already
        # encoding the python code as base64 stream and decoding on the other side, remove any complicated
        # quoting strategy. We do not check the length of the code, which could exceed the shell parameter
        # string limit. Since the limit is typically > 2k, little code snippets should not cause any problems.
        encoded = base64.b64encode(python_code.encode())
        py_cmd = f'import base64;exec(base64.b64decode({encoded}).decode())'
        if self._win:
            py_cmd = f'"{py_cmd}"'
        cmd = [self.python_path, "-c", py_cmd]
        return self._get_pid(
            self._cmd_send("cmd_start", cmd=cmd, env=env, output_file=output_file)
        )

    def cmd_running(self, pid):
        """check if given (remote) pid is running"""
        assert self.shell_info  # make sure that initialize was called already
        output = self._cmd_send("cmd_running", pid=pid)
        # check output
        if "__running=1__" in output:
            return True
        elif "__running=0__" in output:
            return False
        else:
            raise Exception(
                f"Unexpected output ({output}) returned from by the running shell command"
            )

    def cmd_kill(self, pid, sig=None):
        """kill (remote) process with the given pid"""
        assert self.shell_info  # make sure that initialize was called already
        if sig:
            self._cmd_send("cmd_kill", pid=pid, sig=int(sig))
        else:
            self._cmd_send("cmd_kill", pid=pid)

    def cmd_mkdir(self, path):
        """make directory recursively"""
        assert self.shell_info  # make sure that initialize was called already
        self._cmd_send("cmd_mkdir", path=path)

    def cmd_rmdir(self, path):
        """remove directory recursively"""
        assert self.shell_info  # make sure that initialize was called already
        self._cmd_send("cmd_rmdir", path=path)

    def cmd_exists(self, path):
        """check if file/path exists"""
        assert self.shell_info  # make sure that initialize was called already
        output = self._cmd_send("cmd_exists", path=path)
        # check output
        if "__exists=1__" in output:
            return True
        elif "__exists=0__" in output:
            return False
        else:
            raise Exception(
                f"Unexpected output ({output}) returned from by the exists shell command"
            )

    def cmd_remove(self, path):
        """delete remote file"""
        assert self.shell_info  # make sure that initialize was called already
        output = self._cmd_send("cmd_remove", path=path)
ipython-ipyparallel-14e3c43/ipyparallel/cluster/shellcmd_receive.py000066400000000000000000000213601520071063500257170ustar00rootroot00000000000000#!/usr/bin/env python
"""
Receiver side of OS independent shell commands

For a list of supported commands see top of file shellcmd.py.

Important: The shellcmd concept also supports receiver code sending (useful for testing and developing)
which transfers this file to the 'other side'. However, this limits the imports to standard python
packages. Hence, DO NOT USE ANY ipyparallel IMPORTS IN THIS FILE!
"""

import logging
import os
import shutil
import sys
from abc import ABCMeta, abstractmethod
from contextlib import contextmanager
from pathlib import Path
from random import randint
from subprocess import DEVNULL, Popen


class ShellCommandReceiveBase(metaclass=ABCMeta):
    """
    Base class for receiving and performing shell commands in a platform independent form

    All supported shell commands have a cmd_ prefix. When adding new functions make sure that there is an
    equivalent in the ShellCommandSend class. When a command failed a non-zero exit code will be returned.
    Hence, the ShellCommandSend class always uses subprocess.check_output for assessing if the command was
    successful. Some command require information to be returned (cmd_exists, cmd_start, cmd_running) which
    is written to stdout in the following form: __=__

    This base class contains all platform independent code and commands. Only, cmd_start, cmd_running and
    cmd_kill needs to be overwritten in childern classes (see ShellCommandReceiveWindows and
    ShellCommandReceivePosix)
    """

    def _log(self, msg):
        if not self.log:
            return
        self.log.info(f"[id={self.ranid}] {msg}")

    def __init__(self, debugging=False, log=None):
        self.debugging = debugging
        self.log = None
        if log is None:
            log = os.getenv("SHELLCMD_LOG")
        if log:
            log_file = Path(log).expanduser()
            self.log = logging.getLogger("shellcmd")
            self.log.setLevel(logging.DEBUG if self.debugging else logging.INFO)
            self.log.addHandler(logging.FileHandler(log_file, mode="a"))

        self.ranid = None
        if self.log:
            self.ranid = randint(0, 999)
            self._log(f"{self.__class__.__name__} instance created")

    def close(self):
        # perform possible clean up actions (currently not required)
        if self.log:
            self._log("ShellCommandReceiveBase closed")

    def _prepare_cmd_start(self, start_cmd, env):
        if env:
            self._log(f"env={env!r}")
            if not isinstance(env, dict):
                raise TypeError(f"env must be a dict, got {env!r}")

            # update environment
            for key, value in env.items():
                if value is not None and value != '':
                    # set entry
                    os.environ[key] = str(value)
                else:
                    # unset entry if needed
                    if key in os.environ:
                        del os.environ[key]

        if isinstance(start_cmd, str):
            start_cmd = [start_cmd]

        if not all(isinstance(item, str) for item in start_cmd):
            raise TypeError(f"Only str in start_cmd allowed ({start_cmd!r})")

        return start_cmd

    @abstractmethod
    def cmd_start(self, cmd, env=None, output_file=None):
        pass

    @abstractmethod
    def cmd_running(self, pid):
        pass

    @abstractmethod
    def cmd_kill(self, pid, sig=None):
        pass

    def cmd_mkdir(self, path):
        self._log(f"Make directory '{path}'")
        os.makedirs(path, exist_ok=True)  # we allow that the directory already exists

    def cmd_rmdir(self, path):
        self._log(f"Remove directory '{path}'")
        shutil.rmtree(path)

    def cmd_exists(self, path):
        self._log(f"Check if path exists '{path}'")
        if os.path.exists(path):
            print("__exists=1__")
        else:
            print("__exists=0__")

    def cmd_remove(self, path):
        self._log(f"Remove file '{path}'")
        os.remove(path)


class ShellCommandReceiveWindows(ShellCommandReceiveBase):
    """Windows Implementation of ShellCommandReceive class"""

    def __init__(self, debugging=False, use_breakaway=True, log=None):
        super().__init__(debugging, log)
        self.use_breakaway = use_breakaway

    def cmd_start(self, cmd, env=None, output_file=None):
        start_cmd = self._prepare_cmd_start(cmd, env)

        # under windows we need to remove embracing double quotes
        for idx, p in enumerate(start_cmd):
            if p[0] == '"' and p[-1] == '"':
                start_cmd[idx] = p.strip('"')

        self._log(f"start_cmd={start_cmd}  (use_breakaway={self.use_breakaway})")

        from subprocess import CREATE_BREAKAWAY_FROM_JOB, CREATE_NEW_CONSOLE

        flags = 0
        if self.use_breakaway:
            flags |= CREATE_NEW_CONSOLE
            flags |= CREATE_BREAKAWAY_FROM_JOB

        pkwargs = {
            'close_fds': True,  # close stdin/stdout/stderr on child
            'creationflags': flags,
        }
        if output_file:
            fo = open(output_file, "w")
            pkwargs['stdout'] = fo
            pkwargs['stderr'] = fo
            pkwargs['stdin'] = DEVNULL

        self._log(f"Popen(**pkwargs={pkwargs})")
        p = Popen(start_cmd, **pkwargs)
        self._log(f"pid={p.pid}")

        print(f'__remote_pid={p.pid}__')
        sys.stdout.flush()
        if not self.use_breakaway:
            self._log("before wait")
            p.wait()
            self._log("after wait")

    def cmd_running(self, pid):
        self._log(f"Check if pid {pid} is running")

        # taken from https://stackoverflow.com/questions/568271/how-to-check-if-there-exists-a-process-with-a-given-pid-in-python
        import ctypes

        PROCESS_QUERY_INFROMATION = (
            0x1000  # if actually PROCESS_QUERY_LIMITED_INFORMATION
        )
        STILL_ACTIVE = 259
        processHandle = ctypes.windll.kernel32.OpenProcess(
            PROCESS_QUERY_INFROMATION, 0, pid
        )
        if processHandle == 0:
            print('__running=0__')
        else:
            i = ctypes.c_int(0)
            pi = ctypes.pointer(i)
            if ctypes.windll.kernel32.GetExitCodeProcess(processHandle, pi) == 0:
                print('__running=0__')
            if i.value == STILL_ACTIVE:
                print('__running=1__')
            else:
                print('__running=0__')
            ctypes.windll.kernel32.CloseHandle(processHandle)

    def cmd_kill(self, pid, sig=None):
        self._log(f"Kill pid {pid} (signal={sig})")

        # os.kill doesn't work reliable under windows. also see
        # https://stackoverflow.com/questions/28551180/how-to-kill-subprocess-python-in-windows

        # solution using taskill
        # import subprocess
        # subprocess.call(['taskkill', '/F', '/T', '/PID',  str(pid)])  # /T kills all child processes as well

        # use windows api to kill process (doesn't kill children processes)
        # To kill all children process things are more complicated. see e.g.
        # http://mackeblog.blogspot.com/2012/05/killing-subprocesses-on-windows-in.html
        import ctypes

        PROCESS_TERMINATE = 0x0001
        kernel32 = ctypes.windll.kernel32
        processHandle = kernel32.OpenProcess(PROCESS_TERMINATE, 0, pid)
        if processHandle:
            kernel32.TerminateProcess(
                processHandle, 3
            )  # 3 is just an arbitrary exit code
            kernel32.CloseHandle(processHandle)


class ShellCommandReceivePosix(ShellCommandReceiveBase):
    """Posix implementation of the ShellCommandReceive class"""

    def cmd_start(self, cmd, env=None, output_file=None):
        start_cmd = self._prepare_cmd_start(cmd, env)

        fo = DEVNULL
        if output_file:
            fo = open(output_file, "w")

        p = Popen(
            start_cmd, start_new_session=True, stdout=fo, stderr=fo, stdin=DEVNULL
        )
        print(f'__remote_pid={p.pid}__')
        sys.stdout.flush()

    def cmd_running(self, pid):
        self._log(f"Check if pid {pid} is running")
        try:
            # use os.kill with signal 0 to check if process is still running
            os.kill(pid, 0)
            print('__running=1__')
        except OSError:
            print('__running=0__')

    def cmd_kill(self, pid, sig=None):
        self._log(f"Kill pid {pid} (signal={sig})")
        os.kill(pid, sig)


@contextmanager
def ShellCommandReceive(debugging=False, use_breakaway=True, log=None):
    """Generator returning the corresponding platform dependent ShellCommandReceive object (as Context Manager)"""
    if sys.platform.lower().startswith("win"):
        receiver = ShellCommandReceiveWindows(debugging, use_breakaway, log)
    else:
        receiver = ShellCommandReceivePosix(debugging, log)
    try:
        yield receiver
    finally:
        receiver.close()
ipython-ipyparallel-14e3c43/ipyparallel/controller/000077500000000000000000000000001520071063500225505ustar00rootroot00000000000000ipython-ipyparallel-14e3c43/ipyparallel/controller/__init__.py000066400000000000000000000000001520071063500246470ustar00rootroot00000000000000ipython-ipyparallel-14e3c43/ipyparallel/controller/__main__.py000066400000000000000000000001011520071063500246320ustar00rootroot00000000000000if __name__ == '__main__':
    from .app import main

    main()
ipython-ipyparallel-14e3c43/ipyparallel/controller/app.py000077500000000000000000001261741520071063500237200ustar00rootroot00000000000000#!/usr/bin/env python
"""
The IPython controller application.
"""

# Copyright (c) IPython Development Team.
# Distributed under the terms of the Modified BSD License.
import json
import os
import socket
import stat
import sys
import time
from multiprocessing import Process
from signal import SIGABRT, SIGINT, SIGTERM, signal

import zmq
from IPython.core.profiledir import ProfileDir
from jupyter_client.localinterfaces import localhost
from jupyter_client.session import Session, session_aliases, session_flags
from traitlets import (
    Bool,
    Bytes,
    Dict,
    Instance,
    Integer,
    List,
    Tuple,
    Type,
    Unicode,
    Union,
    default,
    import_item,
    observe,
    validate,
)
from traitlets.config import Config
from zmq.devices import ProcessMonitoredQueue
from zmq.eventloop.zmqstream import ZMQStream
from zmq.log.handlers import PUBHandler

from ipyparallel import util
from ipyparallel.apps.baseapp import (
    BaseParallelApplication,
    base_aliases,
    base_flags,
    catch_config_error,
)
from ipyparallel.controller.broadcast_scheduler import launch_broadcast_scheduler
from ipyparallel.controller.dictdb import DictDB
from ipyparallel.controller.heartmonitor import HeartMonitor, start_heartmonitor
from ipyparallel.controller.hub import Hub
from ipyparallel.controller.scheduler import launch_scheduler
from ipyparallel.controller.task_scheduler import TaskScheduler
from ipyparallel.traitlets import PortList
from ipyparallel.util import disambiguate_url

from .broadcast_scheduler import BroadcastScheduler

# conditional import of SQLiteDB / MongoDB backend class
real_dbs = []

try:
    from ipyparallel.controller.sqlitedb import SQLiteDB
except ImportError:
    pass
else:
    real_dbs.append(SQLiteDB)

try:
    from ipyparallel.controller.mongodb import MongoDB
except ImportError:
    pass
else:
    real_dbs.append(MongoDB)


# -----------------------------------------------------------------------------
# Module level variables
# -----------------------------------------------------------------------------


_description = """Start the IPython controller for parallel computing.

The IPython controller provides a gateway between the IPython engines and
clients. The controller needs to be started before the engines and can be
configured using command line options or using a cluster directory. Cluster
directories contain config, log and security files and are usually located in
your ipython directory and named as "profile_name". See the `profile`
and `profile-dir` options for details.
"""

_examples = """
ipcontroller --ip=192.168.0.1 --port=1000  # listen on ip, port for engines
ipcontroller --scheme=pure  # use the pure zeromq scheduler
"""


# -----------------------------------------------------------------------------
# The main application
# -----------------------------------------------------------------------------
flags = {}
flags.update(base_flags)
flags.update(
    {
        'usethreads': (
            {'IPController': {'use_threads': True}},
            'Use threads instead of processes for the schedulers',
        ),
        'sqlitedb': (
            {'IPController': {'db_class': 'ipyparallel.controller.sqlitedb.SQLiteDB'}},
            'use the SQLiteDB backend',
        ),
        'mongodb': (
            {'IPController': {'db_class': 'ipyparallel.controller.mongodb.MongoDB'}},
            'use the MongoDB backend',
        ),
        'dictdb': (
            {'IPController': {'db_class': 'ipyparallel.controller.dictdb.DictDB'}},
            'use the in-memory DictDB backend',
        ),
        'nodb': (
            {'IPController': {'db_class': 'ipyparallel.controller.dictdb.NoDB'}},
            """use dummy DB backend, which doesn't store any information.

                    This is the default as of IPython 0.13.

                    To enable delayed or repeated retrieval of results from the Hub,
                    select one of the true db backends.
                    """,
        ),
        'reuse': (
            {'IPController': {'reuse_files': True}},
            'reuse existing json connection files',
        ),
        'restore': (
            {'IPController': {'restore_engines': True, 'reuse_files': True}},
            'Attempt to restore engines from a JSON file.  '
            'For use when resuming a crashed controller',
        ),
    }
)

flags.update(session_flags)

aliases = dict(
    ssh='IPController.ssh_server',
    enginessh='IPController.engine_ssh_server',
    location='IPController.location',
    ip='IPController.ip',
    transport='IPController.transport',
    port='IPController.regport',
    ports='IPController.ports',
    ping='HeartMonitor.period',
    scheme='TaskScheduler.scheme_name',
    hwm='TaskScheduler.hwm',
)
aliases.update(base_aliases)
aliases.update(session_aliases)

_db_shortcuts = {
    'sqlitedb': 'ipyparallel.controller.sqlitedb.SQLiteDB',
    'mongodb': 'ipyparallel.controller.mongodb.MongoDB',
    'dictdb': 'ipyparallel.controller.dictdb.DictDB',
    'nodb': 'ipyparallel.controller.dictdb.NoDB',
}


class IPController(BaseParallelApplication):
    name = 'ipcontroller'
    description = _description
    examples = _examples
    classes = [
        ProfileDir,
        Session,
        Hub,
        TaskScheduler,
        HeartMonitor,
        DictDB,
    ] + real_dbs
    _deprecated_classes = ("HubFactory", "IPControllerApp")

    # change default to True
    auto_create = Bool(
        True, config=True, help="""Whether to create profile dir if it doesn't exist."""
    )

    reuse_files = Bool(
        False,
        config=True,
        help="""Whether to reuse existing json connection files.
        If False, connection files will be removed on a clean exit.
        """,
    )
    restore_engines = Bool(
        False,
        config=True,
        help="""Reload engine state from JSON file
        """,
    )
    ssh_server = Unicode(
        '',
        config=True,
        help="""ssh url for clients to use when connecting to the Controller
        processes. It should be of the form: [user@]server[:port]. The
        Controller's listening addresses must be accessible from the ssh server""",
    )
    engine_ssh_server = Unicode(
        '',
        config=True,
        help="""ssh url for engines to use when connecting to the Controller
        processes. It should be of the form: [user@]server[:port]. The
        Controller's listening addresses must be accessible from the ssh server""",
    )
    location = Unicode(
        socket.gethostname(),
        config=True,
        help="""The external IP or domain name of the Controller, used for disambiguating
        engine and client connections.""",
    )

    use_threads = Bool(
        False, config=True, help='Use threads instead of processes for the schedulers'
    )

    engine_json_file = Unicode(
        'ipcontroller-engine.json',
        config=True,
        help="JSON filename where engine connection info will be stored.",
    )
    client_json_file = Unicode(
        'ipcontroller-client.json',
        config=True,
        help="JSON filename where client connection info will be stored.",
    )

    @observe('cluster_id')
    def _cluster_id_changed(self, change):
        base = 'ipcontroller'
        if change.new:
            base = f"{base}-{change.new}"
        self.engine_json_file = f"{base}-engine.json"
        self.client_json_file = f"{base}-client.json"

    enable_curve = Bool(
        False,
        config=True,
        help="""Enable CurveZMQ encryption and authentication

        Caution: known to have issues on platforms with getrandom
        """,
    )

    @default("enable_curve")
    def _default_enable_curve(self):
        enabled = os.environ.get("IPP_ENABLE_CURVE", "") == "1"
        if enabled:
            self._ensure_curve_keypair()
            # disable redundant digest-key, CurveZMQ protects against replays
            if 'key' not in self.config.Session:
                self.config.Session.key = b''
        return enabled

    @observe("enable_curve")
    def _enable_curve_changed(self, change):
        if change.new:
            self._ensure_curve_keypair()
            # disable redundant digest-key, CurveZMQ protects against replays
            if 'key' not in self.config.Session:
                self.config.Session.key = b''

    def _ensure_curve_keypair(self):
        if not self.curve_secretkey or not self.curve_publickey:
            self.log.info("Generating new CURVE credentials")
            self.curve_publickey, self.curve_secretkey = zmq.curve_keypair()

    curve_secretkey = Bytes(
        config=True,
        help="The CurveZMQ secret key for the controller",
    )
    curve_publickey = Bytes(
        config=True,
        help="""The CurveZMQ public key for the controller.

        Engines and clients use this for the server key.
        """,
    )

    @default("curve_secretkey")
    def _default_curve_secretkey(self):
        return os.environ.get("IPP_CURVE_SECRETKEY", "").encode("ascii")

    @default("curve_publickey")
    def _default_curve_publickey(self):
        return os.environ.get("IPP_CURVE_PUBLICKEY", "").encode("ascii")

    @validate("curve_publickey", "curve_secretkey")
    def _cast_bytes(self, proposal):
        if isinstance(proposal.value, str):
            return proposal.value.encode("ascii")
        return proposal.value

    # internal
    children = List()
    mq_class = Unicode('zmq.devices.ProcessMonitoredQueue')

    @observe('use_threads')
    def _use_threads_changed(self, change):
        self.mq_class = 'zmq.devices.{}MonitoredQueue'.format(
            'Thread' if change['new'] else 'Process'
        )

    write_connection_files = Bool(
        True,
        help="""Whether to write connection files to disk.
        True in all cases other than runs with `reuse_files=True` *after the first*
        """,
    )

    aliases = Dict(aliases)
    flags = Dict(flags)

    broadcast_scheduler_depth = Integer(
        1,
        config=True,
        help="Depth of spanning tree schedulers",
    )
    number_of_leaf_schedulers = Integer()
    number_of_broadcast_schedulers = Integer()
    number_of_non_leaf_schedulers = Integer()

    @default('number_of_leaf_schedulers')
    def get_number_of_leaf_schedulers(self):
        return 2**self.broadcast_scheduler_depth

    @default('number_of_broadcast_schedulers')
    def get_number_of_broadcast_schedulers(self):
        return 2 * self.number_of_leaf_schedulers - 1

    @default('number_of_non_leaf_schedulers')
    def get_number_of_non_leaf_schedulers(self):
        return self.number_of_broadcast_schedulers - self.number_of_leaf_schedulers

    ports = PortList(
        Integer(min=1, max=65536),
        config=True,
        help="""
        Pool of ports to use for the controller.

        For example:

            ipcontroller --ports 10101-10120

        This list will be consumed to populate the ports
        to be used when binding controller sockets
        for engines, clients, or internal connections.

        The number of sockets needed depends on scheduler depth,
        but is at least 14 (16 by default)

        If more ports than are defined here are needed,
        random ports will be selected.

        Can be specified as a list or string expressing a range

        See also engine_ports and client_ports
        """,
    )

    engine_ports = PortList(
        config=True,
        help="""
        Pool of ports to use for engine connections

        This list will be consumed to populate the ports
        to be used when binding controller sockets used for engine connections

        Can be specified as a list or string expressing a range

        If this list is exhausted, the common `ports` pool will be consumed.

        See also ports and client_ports
        """,
    )

    client_ports = PortList(
        config=True,
        help="""
        Pool of ports to use for client connections

        This list will be consumed to populate the ports
        to be used when binding controller sockets used for client connections

        Can be specified as a list or string expressing a range

        If this list is empty or exhausted,
        the common `ports` pool will be consumed.

        See also ports and engine_ports
        """,
    )

    # observe consumption of pools
    port_index = engine_port_index = client_port_index = 0

    # port-pairs for schedulers:
    hb = Tuple(
        Integer(),
        Integer(),
        config=True,
        help="""DEPRECATED: use ports""",
    )

    mux = Tuple(
        Integer(),
        Integer(),
        config=True,
        help="""DEPRECATED: use ports""",
    )

    task = Tuple(
        Integer(),
        Integer(),
        config=True,
        help="""DEPRECATED: use ports""",
    )

    control = Tuple(
        Integer(),
        Integer(),
        config=True,
        help="""DEPRECATED: use ports""",
    )

    iopub = Tuple(
        Integer(),
        Integer(),
        config=True,
        help="""DEPRECATED: use ports""",
    )

    @observe("iopub", "control", "task", "mux")
    def _scheduler_ports_assigned(self, change):
        self.log.warning(
            f"Setting {self.__class__.__name__}.{change.name} = {change.new!r} is deprecated in IPython Parallel 7."
            " Use IPController.ports config instead."
        )
        self.client_ports.append(change.new[0])
        self.engine_ports.append(change.new[0])

    @observe("hb")
    def _hb_ports_assigned(self, change):
        self.log.warning(
            f"Setting {self.__class__.__name__}.{change.name} = {change.new!r} is deprecated in IPython Parallel 7."
            " Use IPController.engine_ports config instead."
        )
        self.engine_ports.extend(change.new)

    # single ports:
    mon_port = Integer(config=True, help="""DEPRECATED: use ports""")

    notifier_port = Integer(config=True, help="""DEPRECATED: use ports""").tag(
        port_pool="client"
    )

    regport = Integer(config=True, help="DEPRECATED: use ports").tag(port_pool="engine")

    @observe("regport", "notifier_port", "mon_port")
    def _port_assigned(self, change):
        self.log.warning(
            f"Setting {self.__class__.__name__}.{change.name} = {change.new!r} is deprecated in IPython Parallel 7."
            " Use IPController.ports config instead."
        )
        trait = self.traits()[change.name]
        pool_name = trait.metadata.get("port_pool")
        if pool_name == 'engine':
            self.engine_ports.append(change.new)
        elif pool_name == 'client':
            self.client_ports.append(change.new)
        else:
            self.ports.append(change.new)

    engine_ip = Unicode(
        config=True,
        help="IP on which to listen for engine connections. [default: loopback]",
    )

    def _engine_ip_default(self):
        return localhost()

    engine_transport = Unicode(
        'tcp', config=True, help="0MQ transport for engine connections. [default: tcp]"
    )

    client_ip = Unicode(
        config=True,
        help="IP on which to listen for client connections. [default: loopback]",
    )
    client_transport = Unicode(
        'tcp', config=True, help="0MQ transport for client connections. [default : tcp]"
    )

    monitor_ip = Unicode(
        config=True,
        help="IP on which to listen for monitor messages. [default: loopback]",
    )
    monitor_transport = Unicode(
        'tcp', config=True, help="0MQ transport for monitor messages. [default : tcp]"
    )

    _client_ip_default = _monitor_ip_default = _engine_ip_default

    monitor_url = Unicode('')

    db_class = Union(
        [Unicode(), Type()],
        default_value=DictDB,
        config=True,
        help="""The class to use for the DB backend

        Options include:

        SQLiteDB: SQLite
        MongoDB : use MongoDB
        DictDB  : in-memory storage (fastest, but be mindful of memory growth of the Hub)
        NoDB    : disable database altogether (default)

        """,
    )

    @validate("db_class")
    def _validate_db_class(self, proposal):
        value = proposal.value
        if isinstance(value, str):
            # if it's a string, import it
            value = _db_shortcuts.get(value.lower(), value)
            return import_item(value)
        return value

    registration_timeout = Integer(
        0,
        config=True,
        help="Engine registration timeout in seconds [default: max(30,"
        "10*heartmonitor.period)]",
    )

    @default("registration_timeout")
    def _registration_timeout_default(self):
        # heartmonitor period is in milliseconds, so 10x in seconds is .01
        return max(30, int(0.01 * HeartMonitor(parent=self).period))

    # not configurable
    db = Instance('ipyparallel.controller.dictdb.BaseDB', allow_none=True)
    heartmonitor = Instance(
        'ipyparallel.controller.heartmonitor.HeartMonitor', allow_none=True
    )

    ip = Unicode(
        "127.0.0.1", config=True, help="""Set the controller ip for all connections."""
    )
    transport = Unicode(
        "tcp", config=True, help="""Set the zmq transport for all connections."""
    )

    @observe('ip')
    def _ip_changed(self, change):
        new = change['new']
        self.engine_ip = new
        self.client_ip = new
        self.monitor_ip = new

    @observe('transport')
    def _transport_changed(self, change):
        new = change['new']
        self.engine_transport = new
        self.client_transport = new
        self.monitor_transport = new

    context = Instance(zmq.Context)

    @default("context")
    def _defaut_context(self):
        return zmq.Context.instance()

    # connection file contents
    engine_info = Dict()
    client_info = Dict()

    _logged_exhaustion = Dict()

    _random_port_count = Integer(0)

    def next_port(self, pool_name='common'):
        """Consume a port from our port pools"""
        if pool_name == 'client':
            if len(self.client_ports) > self.client_port_index:
                port = self.client_ports[self.client_port_index]
                self.client_port_index += 1
                return port
            elif self.client_ports and not self._logged_exhaustion.get("client"):
                self._logged_exhaustion['client'] = True
                # only log once
                self.log.warning(f"Exhausted {len(self.client_ports)} client ports")
        elif pool_name == 'engine':
            if len(self.engine_ports) > self.engine_port_index:
                port = self.engine_ports[self.engine_port_index]
                self.engine_port_index += 1
                return port
            elif self.engine_ports and not self._logged_exhaustion.get("engine"):
                self._logged_exhaustion['engine'] = True
                self.log.warning(f"Exhausted {len(self.engine_ports)} engine ports")

        # drawing from common pool
        if len(self.ports) > self.port_index:
            port = self.ports[self.port_index]
            self.port_index += 1
            return port
        elif self.ports and not self._logged_exhaustion.get("common"):
            self._logged_exhaustion['common'] = True
            self.log.warning(f"Exhausted {len(self.ports)} common ports")

        self._random_port_count += 1
        port = util.select_random_ports(1)[0]
        return port

    def construct_url(self, kind: str, channel: str, index=None):
        if kind == 'engine':
            info = self.engine_info
        elif kind == 'client':
            info = self.client_info
        elif kind == 'internal':
            info = self.internal_info
        else:
            raise ValueError(
                "kind must be 'engine', 'client', or 'internal', not {kind!r}"
            )

        interface = info['interface']
        sep = '-' if interface.partition("://")[0] == 'ipc' else ':'
        port = info[channel]
        if index is not None:
            port = port[index]
        return f"{interface}{sep}{port}"

    def internal_url(self, channel, index=None):
        """return full zmq url for a named internal channel"""
        return self.construct_url('internal', channel, index)

    def bind(self, socket, url):
        """Bind a socket"""
        return util.bind(
            socket,
            url,
            curve_secretkey=self.curve_secretkey if self.enable_curve else None,
            curve_publickey=self.curve_publickey if self.enable_curve else None,
        )

    def connect(self, socket, url):
        return util.connect(
            socket,
            url,
            curve_serverkey=self.curve_publickey if self.enable_curve else None,
            curve_publickey=self.curve_publickey if self.enable_curve else None,
            curve_secretkey=self.curve_secretkey if self.enable_curve else None,
        )

    def client_url(self, channel, index=None):
        """return full zmq url for a named client channel"""
        return self.construct_url('client', channel, index)

    def engine_url(self, channel, index=None):
        """return full zmq url for a named engine channel"""
        return self.construct_url('engine', channel, index)

    def save_connection_dict(self, fname, cdict):
        """save a connection dict to json file."""
        fname = os.path.join(self.profile_dir.security_dir, fname)
        self.log.info("writing connection info to %s", fname)
        with open(fname, 'w') as f:
            f.write(json.dumps(cdict, indent=2))
        os.chmod(fname, stat.S_IRUSR | stat.S_IWUSR)

    def load_config_from_json(self):
        """load config from existing json connector files."""
        c = self.config
        self.log.debug("loading config from JSON")

        # load engine config

        fname = os.path.join(self.profile_dir.security_dir, self.engine_json_file)
        self.log.info("loading connection info from %s", fname)
        with open(fname) as f:
            ecfg = json.loads(f.read())

        # json gives unicode, Session.key wants bytes
        c.Session.key = ecfg['key'].encode('ascii')

        xport, ip = ecfg['interface'].split('://')

        c.IPController.engine_ip = ip
        c.IPController.engine_transport = xport

        self.location = ecfg['location']
        if not self.engine_ssh_server:
            self.engine_ssh_server = ecfg['ssh']

        # load client config

        fname = os.path.join(self.profile_dir.security_dir, self.client_json_file)
        self.log.info("loading connection info from %s", fname)
        with open(fname) as f:
            ccfg = json.loads(f.read())

        for key in ('key', 'registration', 'pack', 'unpack', 'signature_scheme'):
            assert ccfg[key] == ecfg[key], (
                f"mismatch between engine and client info: {key!r}"
            )

        xport, ip = ccfg['interface'].split('://')

        c.IPController.client_transport = xport
        c.IPController.client_ip = ip
        if not self.ssh_server:
            self.ssh_server = ccfg['ssh']

        self.engine_info = ecfg
        self.client_info = ccfg

    def cleanup_connection_files(self):
        if self.reuse_files:
            self.log.debug("leaving JSON connection files for reuse")
            return
        self.log.debug("cleaning up JSON connection files")
        for f in (self.client_json_file, self.engine_json_file):
            f = os.path.join(self.profile_dir.security_dir, f)
            try:
                os.remove(f)
            except Exception as e:
                self.log.error("Failed to cleanup connection file: %s", e)
            else:
                self.log.debug("removed %s", f)

    def load_secondary_config(self):
        """secondary config, loading from JSON and setting defaults"""
        if self.reuse_files:
            try:
                self.load_config_from_json()
            except (AssertionError, OSError) as e:
                self.log.error(f"Could not load config from JSON: {e}")
            else:
                # successfully loaded config from JSON, and reuse=True
                # no need to write back the same file
                self.write_connection_files = False

    def init_hub(self):
        if self.enable_curve:
            self.log.info(
                "Using CURVE security. Ignore warnings about disabled message signing."
            )

        c = self.config

        ctx = self.context
        loop = self.loop
        if 'TaskScheduler.scheme_name' in self.config:
            scheme = self.config.TaskScheduler.scheme_name
        else:
            from .task_scheduler import TaskScheduler

            scheme = TaskScheduler.scheme_name.default_value

        if self.engine_info:
            registration_port = self.engine_info['registration']
        else:
            registration_port = self.next_port('engine')

        # build connection dicts
        if not self.engine_info:
            self.engine_info = {
                'interface': f"{self.engine_transport}://{self.engine_ip}",
                'registration': registration_port,
                'control': self.next_port('engine'),
                'mux': self.next_port('engine'),
                'task': self.next_port('engine'),
                'iopub': self.next_port('engine'),
                'hb_ping': self.next_port('engine'),
                'hb_pong': self.next_port('engine'),
                BroadcastScheduler.port_name: [
                    self.next_port('engine')
                    for i in range(self.number_of_leaf_schedulers)
                ],
            }

        if not self.client_info:
            self.client_info = {
                'interface': f"{self.client_transport}://{self.client_ip}",
                'registration': registration_port,
                'control': self.next_port('client'),
                'mux': self.next_port('client'),
                'task': self.next_port('client'),
                'task_scheme': scheme,
                'iopub': self.next_port('client'),
                'notification': self.next_port('client'),
                BroadcastScheduler.port_name: self.next_port('client'),
            }
        if self.engine_transport == 'tcp':
            internal_interface = "tcp://127.0.0.1"
        else:
            internal_interface = self.engine_info['interface']

        broadcast_ids = []  # '0', '00', '01', '001', etc.
        # always a leading 0 for the root node
        for d in range(1, self.broadcast_scheduler_depth + 1):
            for i in range(2**d):
                broadcast_ids.append(format(i, f"0{d + 1}b"))
        self.internal_info = {
            'interface': internal_interface,
            BroadcastScheduler.port_name: {
                broadcast_id: self.next_port() for broadcast_id in broadcast_ids
            },
        }
        mon_port = self.next_port()
        self.monitor_url = f"{self.monitor_transport}://{self.monitor_ip}:{mon_port}"

        # debug port pool consumption
        if self.engine_ports:
            self.log.debug(
                f"Used {self.engine_port_index} / {len(self.engine_ports)} engine ports"
            )
        if self.client_ports:
            self.log.debug(
                f"Used {self.client_port_index} / {len(self.client_ports)} client ports"
            )
        if self.ports:
            self.log.debug(f"Used {self.port_index} / {len(self.ports)} common ports")
        if self._random_port_count:
            self.log.debug(f"Used {self._random_port_count} random ports")

        self.log.debug("Hub engine addrs: %s", self.engine_info)
        self.log.debug("Hub client addrs: %s", self.client_info)
        self.log.debug("Hub internal addrs: %s", self.internal_info)

        # Registrar socket
        query = ZMQStream(ctx.socket(zmq.ROUTER), loop)
        util.set_hwm(query, 0)
        self.bind(query, self.client_url('registration'))
        self.log.info(
            "Hub listening on %s for registration.", self.client_url('registration')
        )
        if self.client_ip != self.engine_ip:
            self.bind(query, self.engine_url('registration'))
            self.log.info(
                "Hub listening on %s for registration.", self.engine_url('registration')
            )

        ### Engine connections ###

        # heartbeat
        hm_config = Config()
        for key in ("Session", "HeartMonitor"):
            if key in self.config:
                hm_config[key] = self.config[key]
            hm_config.Session.key = self.session.key

        self.heartmonitor_process = Process(
            target=start_heartmonitor,
            kwargs=dict(
                ping_url=self.engine_url('hb_ping'),
                pong_url=self.engine_url('hb_pong'),
                monitor_url=disambiguate_url(self.monitor_url),
                config=hm_config,
                log_level=self.log.getEffectiveLevel(),
                curve_publickey=self.curve_publickey,
                curve_secretkey=self.curve_secretkey,
            ),
            daemon=True,
        )

        ### Client connections ###

        # Notifier socket
        notifier = ZMQStream(ctx.socket(zmq.PUB), loop)
        notifier.socket.SNDHWM = 0
        self.bind(notifier, self.client_url('notification'))

        ### build and launch the queues ###

        # monitor socket
        sub = ctx.socket(zmq.SUB)
        sub.RCVHWM = 0
        sub.setsockopt(zmq.SUBSCRIBE, b"")
        self.bind(sub, self.monitor_url)
        # self.bind(sub, 'inproc://monitor')
        sub = ZMQStream(sub, loop)

        # connect the db
        db_class = self.db_class
        self.log.info(f'Hub using DB backend: {self.db_class.__name__}')
        self.db = self.db_class(session=self.session.session, parent=self, log=self.log)
        time.sleep(0.25)

        # resubmit stream
        resubmit = ZMQStream(ctx.socket(zmq.DEALER), loop)
        url = util.disambiguate_url(self.client_url('task'))
        self.connect(resubmit, url)

        self.hub = Hub(
            loop=loop,
            session=self.session,
            monitor=sub,
            query=query,
            notifier=notifier,
            resubmit=resubmit,
            db=self.db,
            heartmonitor_period=HeartMonitor(parent=self).period,
            engine_info=self.engine_info,
            client_info=self.client_info,
            log=self.log,
            registration_timeout=self.registration_timeout,
            parent=self,
        )

        if self.write_connection_files:
            # save to new json config files
            base = {
                'key': self.session.key.decode('ascii'),
                'curve_serverkey': (
                    self.curve_publickey.decode("ascii") if self.enable_curve else None
                ),
                'location': self.location,
                'pack': self.session.packer,
                'unpack': self.session.unpacker,
                'signature_scheme': self.session.signature_scheme,
            }

            cdict = {'ssh': self.ssh_server}
            cdict.update(self.client_info)
            cdict.update(base)
            self.save_connection_dict(self.client_json_file, cdict)

            edict = {'ssh': self.engine_ssh_server}
            edict.update(self.engine_info)
            edict.update(base)
            self.save_connection_dict(self.engine_json_file, edict)

        fname = f"engines{self.cluster_id}.json"
        self.hub.engine_state_file = os.path.join(self.profile_dir.log_dir, fname)
        if self.restore_engines:
            self.hub._load_engine_state()

    def launch_python_scheduler(self, name, scheduler_args, children):
        if 'Process' in self.mq_class:
            # run the Python scheduler in a Process
            q = Process(
                target=launch_scheduler,
                kwargs=scheduler_args,
                name=name,
                daemon=True,
            )
            children.append(q)
        else:
            # single-threaded Controller
            scheduler_args['in_thread'] = True
            launch_scheduler(**scheduler_args)

    def get_python_scheduler_args(
        self,
        scheduler_name,
        scheduler_class,
        monitor_url,
        identity=None,
        in_addr=None,
        out_addr=None,
    ):
        if identity is not None:
            logname = f"{scheduler_name}-{identity}"
        else:
            logname = scheduler_name
        return {
            'scheduler_class': scheduler_class,
            'in_addr': in_addr or self.client_url(scheduler_name),
            'out_addr': out_addr or self.engine_url(scheduler_name),
            'mon_addr': monitor_url,
            'not_addr': disambiguate_url(self.client_url('notification')),
            'reg_addr': disambiguate_url(self.client_url('registration')),
            'identity': (
                identity if identity is not None else bytes(scheduler_name, 'utf8')
            ),
            'logname': logname,
            'loglevel': self.log_level,
            'log_url': self.log_url,
            'config': dict(self.config),
            'curve_secretkey': self.curve_secretkey if self.enable_curve else None,
            'curve_publickey': self.curve_publickey if self.enable_curve else None,
        }

    def launch_broadcast_schedulers(self, monitor_url, children):
        def launch_in_thread_or_process(scheduler_args, depth, identity):
            if 'Process' in self.mq_class:
                # run the Python scheduler in a Process
                q = Process(
                    target=launch_broadcast_scheduler,
                    kwargs=scheduler_args,
                    name=f"BroadcastScheduler(depth={depth}, id={identity})",
                    daemon=True,
                )
                children.append(q)
            else:
                # single-threaded Controller
                scheduler_args['in_thread'] = True
                launch_broadcast_scheduler(**scheduler_args)

        def recursively_start_schedulers(identity, depth):
            outgoing_id1 = identity + '0'
            outgoing_id2 = identity + '1'
            is_leaf = depth == self.broadcast_scheduler_depth
            is_root = depth == 0

            # FIXME: use localhost, not client ip for internal communication
            # this will still be localhost anyway for the most common cases
            # of localhost or */0.0.0.0
            if is_root:
                in_addr = self.client_url(BroadcastScheduler.port_name)
            else:
                # not root, use internal address

                in_addr = self.internal_url(
                    BroadcastScheduler.port_name,
                    index=identity,
                )

            scheduler_args = self.get_python_scheduler_args(
                BroadcastScheduler.port_name,
                BroadcastScheduler,
                monitor_url,
                identity,
                in_addr=in_addr,
                out_addr='ignored',
            )
            scheduler_args.pop('out_addr')
            # add broadcast args
            scheduler_args.update(
                outgoing_ids=[outgoing_id1, outgoing_id2],
                depth=depth,
                max_depth=self.broadcast_scheduler_depth,
                is_leaf=is_leaf,
            )

            if is_leaf:
                scheduler_args.update(
                    out_addrs=[
                        self.engine_url(
                            BroadcastScheduler.port_name,
                            index=int(identity, 2),
                        )
                    ],
                )
            else:
                scheduler_args.update(
                    out_addrs=[
                        self.internal_url(
                            BroadcastScheduler.port_name, index=outgoing_id1
                        ),
                        self.internal_url(
                            BroadcastScheduler.port_name, index=outgoing_id2
                        ),
                    ]
                )
            launch_in_thread_or_process(scheduler_args, depth=depth, identity=identity)
            if not is_leaf:
                recursively_start_schedulers(outgoing_id1, depth + 1)
                recursively_start_schedulers(outgoing_id2, depth + 1)

        recursively_start_schedulers(identity='0', depth=0)

    def init_schedulers(self):
        children = self.children
        mq = import_item(str(self.mq_class))
        # ensure session key is shared across sessions
        self.config.Session.key = self.session.key
        ident = self.session.bsession

        def add_auth(q):
            """Add CURVE auth to a monitored queue"""
            if not self.enable_curve:
                return False
            q.setsockopt_in(zmq.CURVE_SERVER, 1)
            q.setsockopt_in(zmq.CURVE_SECRETKEY, self.curve_secretkey)
            q.setsockopt_out(zmq.CURVE_SERVER, 1)
            q.setsockopt_out(zmq.CURVE_SECRETKEY, self.curve_secretkey)
            # monitor is a client
            pub, secret = zmq.curve_keypair()
            q.setsockopt_mon(zmq.CURVE_SERVERKEY, self.curve_publickey)
            q.setsockopt_mon(zmq.CURVE_SECRETKEY, secret)
            q.setsockopt_mon(zmq.CURVE_PUBLICKEY, pub)

        # disambiguate url, in case of *
        monitor_url = disambiguate_url(self.monitor_url)
        # maybe_inproc = 'inproc://monitor' if self.use_threads else monitor_url
        # IOPub relay (in a Process)
        q = mq(zmq.SUB, zmq.PUB, zmq.PUB, b'iopub', b'N/A')
        add_auth(q)
        q.name = "IOPubScheduler"

        q.bind_in(self.engine_url('iopub'))
        q.setsockopt_in(zmq.SUBSCRIBE, b'')
        q.bind_out(self.client_url('iopub'))
        q.setsockopt_out(zmq.IDENTITY, ident + b"_iopub")
        q.connect_mon(monitor_url)
        q.daemon = True
        children.append(q)

        # Multiplexer Queue (in a Process)
        q = mq(zmq.ROUTER, zmq.ROUTER, zmq.PUB, b'in', b'out')
        add_auth(q)
        q.name = "DirectScheduler"

        q.bind_in(self.client_url('mux'))
        q.setsockopt_in(zmq.IDENTITY, b'mux_in')
        q.bind_out(self.engine_url('mux'))
        q.setsockopt_out(zmq.IDENTITY, b'mux_out')
        q.connect_mon(monitor_url)
        q.daemon = True
        children.append(q)

        # Control Queue (in a Process)
        q = mq(zmq.ROUTER, zmq.ROUTER, zmq.PUB, b'incontrol', b'outcontrol')
        add_auth(q)
        q.name = "ControlScheduler"
        q.bind_in(self.client_url('control'))
        q.setsockopt_in(zmq.IDENTITY, b'control_in')
        q.bind_out(self.engine_url('control'))
        q.setsockopt_out(zmq.IDENTITY, b'control_out')
        q.connect_mon(monitor_url)
        q.daemon = True
        children.append(q)
        if 'TaskScheduler.scheme_name' in self.config:
            scheme = self.config.TaskScheduler.scheme_name
        else:
            scheme = TaskScheduler.scheme_name.default_value
        # Task Queue (in a Process)
        if scheme == 'pure':
            self.log.warning("task::using pure DEALER Task scheduler")
            q = mq(zmq.ROUTER, zmq.DEALER, zmq.PUB, b'intask', b'outtask')
            add_auth(q)
            q.name = "TaskScheduler(pure)"
            # q.setsockopt_out(zmq.HWM, hub.hwm)
            q.bind_in(self.client_url('task'))
            q.setsockopt_in(zmq.IDENTITY, b'task_in')
            q.bind_out(self.engine_url('task'))
            q.setsockopt_out(zmq.IDENTITY, b'task_out')
            q.connect_mon(monitor_url)
            q.daemon = True
            children.append(q)
        elif scheme == 'none':
            self.log.warning("task::using no Task scheduler")

        else:
            self.log.info(f"task::using Python {scheme} Task scheduler")
            self.launch_python_scheduler(
                'TaskScheduler',
                self.get_python_scheduler_args('task', TaskScheduler, monitor_url),
                children,
            )

        self.launch_broadcast_schedulers(monitor_url, children)

        # set unlimited HWM for all relay devices
        if hasattr(zmq, 'SNDHWM'):
            q = children[0]
            q.setsockopt_in(zmq.RCVHWM, 0)
            q.setsockopt_out(zmq.SNDHWM, 0)

            for q in children[1:]:
                if not hasattr(q, 'setsockopt_in'):
                    continue
                q.setsockopt_in(zmq.SNDHWM, 0)
                q.setsockopt_in(zmq.RCVHWM, 0)
                q.setsockopt_out(zmq.SNDHWM, 0)
                q.setsockopt_out(zmq.RCVHWM, 0)
                q.setsockopt_mon(zmq.SNDHWM, 0)

    def terminate_children(self):
        child_procs = []
        for child in self.children + [self.heartmonitor_process]:
            if isinstance(child, ProcessMonitoredQueue):
                child_procs.append(child.launcher)
            elif isinstance(child, Process):
                child_procs.append(child)
        if child_procs:
            self.log.critical("terminating children...")
            for child in child_procs:
                try:
                    child.terminate()
                except OSError:
                    # already dead
                    pass

    def handle_signal(self, sig, frame):
        self.log.critical("Received signal %i, shutting down", sig)
        self.terminate_children()
        self.loop.add_callback_from_signal(self.loop.stop)

    def init_signal(self):
        for sig in (SIGINT, SIGABRT, SIGTERM):
            signal(sig, self.handle_signal)

    def forward_logging(self):
        if self.log_url:
            self.log.info(f"Forwarding logging to {self.log_url}")
            context = zmq.Context.instance()
            lsock = context.socket(zmq.PUB)
            lsock.connect(self.log_url)
            handler = PUBHandler(lsock)
            handler.root_topic = 'controller'
            handler.setLevel(self.log_level)
            self.log.addHandler(handler)

    @catch_config_error
    def initialize(self, argv=None):
        super().initialize(argv)
        self.forward_logging()
        self.load_secondary_config()
        self.init_hub()
        self.init_schedulers()

    def start(self):
        # Start the subprocesses:
        # children must be started before signals are setup,
        # otherwise signal-handling will fire multiple times
        for child in self.children:
            child.start()
            if hasattr(child, 'launcher'):
                # apply name to actual process/thread for logging
                setattr(child.launcher, 'name', child.name)
            if not self.use_threads:
                process = getattr(child, 'launcher', child)
                self.log.debug(f"Started process {child.name}: {process.pid}")
            else:
                self.log.debug(f"Started thread {child.name}")

        self.heartmonitor_process.start()
        self.log.info(f"Heartmonitor beating every {self.hub.heartmonitor_period}ms")

        self.init_signal()

        try:
            self.loop.start()
        except KeyboardInterrupt:
            self.log.critical("Interrupted, Exiting...\n")
        finally:
            self.loop.close(all_fds=True)
            self.cleanup_connection_files()


def main(*args, **kwargs):
    """Create and run the IPython controller"""
    if sys.platform == 'win32':
        # make sure we don't get called from a multiprocessing subprocess
        # this can result in infinite Controllers being started on Windows
        # which doesn't have a proper fork, so multiprocessing is wonky

        # this only comes up when IPython has been installed using vanilla
        # setuptools, and *not* distribute.
        import multiprocessing

        p = multiprocessing.current_process()
        # the main process has name 'MainProcess'
        # subprocesses will have names like 'Process-1'
        if p.name != 'MainProcess':
            # we are a subprocess, don't start another Controller!
            return
    return IPController.launch_instance(*args, **kwargs)


if __name__ == '__main__':
    main()
ipython-ipyparallel-14e3c43/ipyparallel/controller/broadcast_scheduler.py000066400000000000000000000212001520071063500271150ustar00rootroot00000000000000import logging

import zmq
from traitlets import Bool, Bytes, Integer, List, Unicode

from ipyparallel import util
from ipyparallel.controller.scheduler import (
    Scheduler,
    ZMQStream,
    get_common_scheduler_streams,
)


class BroadcastScheduler(Scheduler):
    port_name = 'broadcast'
    accumulated_replies = {}
    accumulated_targets = {}
    is_leaf = Bool(False)
    connected_sub_scheduler_ids = List(Bytes())
    outgoing_streams = List()
    depth = Integer()
    max_depth = Integer()
    name = Unicode()

    def start(self):
        self.client_stream.on_recv(self.dispatch_submission, copy=False)
        if self.is_leaf:
            super().start()
        else:
            for outgoing_stream in self.outgoing_streams:
                outgoing_stream.on_recv(self.dispatch_result, copy=False)
        self.log.info(f"BroadcastScheduler {self.name} started")

    def send_to_targets(self, msg, original_msg_id, targets, idents, is_coalescing):
        if is_coalescing:
            self.accumulated_replies[original_msg_id] = {
                target.encode('utf8'): None for target in targets
            }
            self.accumulated_targets[original_msg_id] = targets

        for target in targets:
            new_msg = self.append_new_msg_id_to_msg(
                self.get_new_msg_id(original_msg_id, target), target, idents, msg
            )
            self.engine_stream.send_multipart(new_msg, copy=False)

    def send_to_sub_schedulers(
        self, msg, original_msg_id, targets, idents, is_coalescing
    ):
        trunc = 2**self.max_depth
        fmt = f"0{self.max_depth + 1}b"

        # assign targets to sub-schedulers based on binary path
        # compute binary '010110' representation of the engine id
        targets_by_scheduler = [
            [] for i in range(len(self.connected_sub_scheduler_ids))
        ]
        for target_tuple in targets:
            path = format(target_tuple[1] % trunc, fmt)
            next_idx = int(path[self.depth + 1])  # 0 or 1
            targets_by_scheduler[next_idx].append(target_tuple)

        if is_coalescing:
            self.accumulated_replies[original_msg_id] = {
                scheduler_id: None for scheduler_id in self.connected_sub_scheduler_ids
            }
            self.accumulated_targets[original_msg_id] = {}

        for i, scheduler_id in enumerate(self.connected_sub_scheduler_ids):
            targets_for_scheduler = targets_by_scheduler[i]
            if is_coalescing:
                if targets_for_scheduler:
                    self.accumulated_targets[original_msg_id][scheduler_id] = (
                        targets_for_scheduler
                    )
                else:
                    del self.accumulated_replies[original_msg_id][scheduler_id]
            msg['metadata']['targets'] = targets_for_scheduler

            new_msg = self.append_new_msg_id_to_msg(
                self.get_new_msg_id(original_msg_id, scheduler_id),
                scheduler_id,
                idents,
                msg,
            )
            self.outgoing_streams[i].send_multipart(new_msg, copy=False)

    def coalescing_reply(self, raw_msg, msg, original_msg_id, outgoing_id, idents):
        # accumulate buffers
        self.accumulated_replies[original_msg_id][outgoing_id] = msg['buffers']
        if all(
            msg_buffers is not None
            for msg_buffers in self.accumulated_replies[original_msg_id].values()
        ):
            replies = self.accumulated_replies.pop(original_msg_id)
            self.log.debug(f"Coalescing {len(replies)} reply to {original_msg_id}")
            targets = self.accumulated_targets.pop(original_msg_id)

            new_msg = msg.copy()
            # begin rebuilding message
            # metadata['targets']
            if self.is_leaf:
                new_msg['metadata']['broadcast_targets'] = targets
            else:
                new_msg['metadata']['broadcast_targets'] = []

            # avoid duplicated msg buffers
            buffers = []
            for sub_target, msg_buffers in replies.items():
                buffers.extend(msg_buffers)
                if not self.is_leaf:
                    new_msg['metadata']['broadcast_targets'].extend(targets[sub_target])

            new_raw_msg = self.session.serialize(new_msg)
            self.client_stream.send_multipart(
                idents + new_raw_msg + buffers, copy=False
            )

    @util.log_errors
    def dispatch_submission(self, raw_msg):
        try:
            idents, msg_list = self.session.feed_identities(raw_msg, copy=False)
            msg = self.session.deserialize(msg_list, content=False, copy=False)
        except Exception:
            self.log.error(
                f'broadcast::Invalid broadcast msg: {raw_msg}', exc_info=True
            )
            return
        metadata = msg['metadata']
        msg_id = msg['header']['msg_id']
        targets = metadata['targets']

        is_coalescing = metadata['is_coalescing']

        if 'original_msg_id' not in metadata:
            metadata['original_msg_id'] = msg_id

        original_msg_id = metadata['original_msg_id']
        if self.is_leaf:
            target_idents = [t[0] for t in targets]
            self.send_to_targets(
                msg, original_msg_id, target_idents, idents, is_coalescing
            )
        else:
            self.send_to_sub_schedulers(
                msg, original_msg_id, targets, idents, is_coalescing
            )

    @util.log_errors
    def dispatch_result(self, raw_msg):
        try:
            idents, msg = self.session.feed_identities(raw_msg, copy=False)
            msg = self.session.deserialize(msg, content=False, copy=False)
            outgoing_id = idents[0]

        except Exception:
            self.log.error(
                f'broadcast::Invalid broadcast msg: {raw_msg}', exc_info=True
            )
            return
        original_msg_id = msg['metadata']['original_msg_id']
        is_coalescing = msg['metadata']['is_coalescing']
        if is_coalescing:
            self.coalescing_reply(
                raw_msg, msg, original_msg_id, outgoing_id, idents[1:]
            )
        else:
            self.client_stream.send_multipart(raw_msg[1:], copy=False)


def get_id_with_prefix(identity):
    return bytes(f'sub_scheduler_{identity}', 'utf8')


def launch_broadcast_scheduler(
    in_addr,
    out_addrs,
    mon_addr,
    not_addr,
    reg_addr,
    identity,
    config=None,
    loglevel=logging.DEBUG,
    log_url=None,
    is_leaf=False,
    in_thread=False,
    outgoing_ids=None,
    curve_publickey=None,
    curve_secretkey=None,
    depth=0,
    max_depth=0,
    scheduler_class=BroadcastScheduler,
    logname='broadcast',
):
    config, ctx, loop, mons, nots, querys, log = get_common_scheduler_streams(
        mon_addr,
        not_addr,
        reg_addr,
        config,
        logname,
        log_url,
        loglevel,
        in_thread,
        curve_serverkey=curve_publickey,
        curve_publickey=curve_publickey,
        curve_secretkey=curve_secretkey,
    )

    is_root = depth == 0
    sub_scheduler_id = get_id_with_prefix(identity)

    incoming_stream = ZMQStream(ctx.socket(zmq.ROUTER), loop)
    util.set_hwm(incoming_stream, 0)
    incoming_stream.setsockopt(zmq.IDENTITY, sub_scheduler_id)

    if is_root:
        util.bind(incoming_stream, in_addr, curve_secretkey=curve_secretkey)
    else:
        util.connect(
            incoming_stream,
            in_addr,
            curve_serverkey=curve_publickey,
            curve_publickey=curve_publickey,
            curve_secretkey=curve_secretkey,
        )

    outgoing_streams = []
    for out_addr in out_addrs:
        out = ZMQStream(ctx.socket(zmq.ROUTER), loop)
        util.set_hwm(out, 0)
        out.setsockopt(zmq.IDENTITY, sub_scheduler_id)
        util.bind(out, out_addr, curve_secretkey=curve_secretkey)
        outgoing_streams.append(out)

    scheduler_args = dict(
        client_stream=incoming_stream,
        mon_stream=mons,
        notifier_stream=nots,
        query_stream=querys,
        loop=loop,
        log=log,
        config=config,
        depth=depth,
        max_depth=max_depth,
        name=identity,
    )
    if is_leaf:
        scheduler_args.update(engine_stream=outgoing_streams[0], is_leaf=True)
    else:
        scheduler_args.update(
            connected_sub_scheduler_ids=[
                get_id_with_prefix(identity) for identity in outgoing_ids
            ],
            outgoing_streams=outgoing_streams,
        )

    scheduler = scheduler_class(**scheduler_args)

    scheduler.start()
    if not in_thread:
        try:
            loop.start()
        except KeyboardInterrupt:
            scheduler.log.critical("Interrupted, exiting...")
ipython-ipyparallel-14e3c43/ipyparallel/controller/dependency.py000066400000000000000000000147041520071063500252460ustar00rootroot00000000000000"""Dependency utilities"""

from types import ModuleType

from ipyparallel.client.asyncresult import AsyncResult
from ipyparallel.error import UnmetDependency
from ipyparallel.serialize import can
from ipyparallel.util import interactive


class depend:
    """Dependency decorator, for use with tasks.

    `@depend` lets you define a function for engine dependencies
    just like you use `apply` for tasks.


    Examples
    --------
    ::

        @depend(df, a,b, c=5)
        def f(m,n,p)

        view.apply(f, 1,2,3)

    will call df(a,b,c=5) on the engine, and if it returns False or
    raises an UnmetDependency error, then the task will not be run
    and another engine will be tried.
    """

    def __init__(self, _wrapped_f, *args, **kwargs):
        self.f = _wrapped_f
        self.args = args
        self.kwargs = kwargs

    def __call__(self, f):
        return dependent(f, self.f, *self.args, **self.kwargs)


class dependent:
    """A function that depends on another function.
    This is an object to prevent the closure used
    in traditional decorators, which are not picklable.
    """

    def __init__(self, _wrapped_f, _wrapped_df, *dargs, **dkwargs):
        self.f = _wrapped_f
        name = getattr(_wrapped_f, '__name__', 'f')
        self.__name__ = name
        self.df = _wrapped_df
        self.dargs = dargs
        self.dkwargs = dkwargs

    def check_dependency(self):
        if self.df(*self.dargs, **self.dkwargs) is False:
            raise UnmetDependency()

    def __call__(self, *args, **kwargs):
        return self.f(*args, **kwargs)


@interactive
def _require(*modules, **mapping):
    """Helper for @require decorator."""
    from ipyparallel.error import UnmetDependency
    from ipyparallel.serialize import uncan

    user_ns = globals()
    for name in modules:
        try:
            exec(f'import {name}', user_ns)
        except ImportError:
            raise UnmetDependency(name)

    for name, cobj in mapping.items():
        user_ns[name] = uncan(cobj, user_ns)
    return True


def require(*objects, **mapping):
    """Simple decorator for requiring local objects and modules to be available
    when the decorated function is called on the engine.

    Modules specified by name or passed directly will be imported
    prior to calling the decorated function.

    Objects other than modules will be pushed as a part of the task.
    Functions can be passed positionally,
    and will be pushed to the engine with their __name__.
    Other objects can be passed by keyword arg.

    Examples
    --------
    ::

        In [1]: @ipp.require('numpy')
           ...: def norm(a):
           ...:     return numpy.linalg.norm(a,2)

    ::

        In [2]: foo = lambda x: x*x
        In [3]: @ipp.require(foo)
           ...: def bar(a):
           ...:     return foo(1-a)
    """
    names = []
    for obj in objects:
        if isinstance(obj, ModuleType):
            obj = obj.__name__

        if isinstance(obj, str):
            names.append(obj)
        elif hasattr(obj, '__name__'):
            mapping[obj.__name__] = obj
        else:
            raise TypeError(
                "Objects other than modules and functions "
                f"must be passed by kwarg, but got: {type(obj)}"
            )

    for name, obj in mapping.items():
        mapping[name] = can(obj)
    return depend(_require, *names, **mapping)


class Dependency(set):
    """An object for representing a set of msg_id dependencies.

    Subclassed from set().

    Parameters
    ----------
    dependencies: list/set of msg_ids or AsyncResult objects or output of Dependency.as_dict()
        The msg_ids to depend on
    all : bool [default True]
        Whether the dependency should be considered met when *all* depending tasks have completed
        or only when *any* have been completed.
    success : bool [default True]
        Whether to consider successes as fulfilling dependencies.
    failure : bool [default False]
        Whether to consider failures as fulfilling dependencies.

    If `all=success=True` and `failure=False`, then the task will fail with an ImpossibleDependency
        as soon as the first depended-upon task fails.
    """

    all = True
    success = True
    failure = True

    def __init__(self, dependencies=[], all=True, success=True, failure=False):
        if isinstance(dependencies, dict):
            # load from dict
            all = dependencies.get('all', True)
            success = dependencies.get('success', success)
            failure = dependencies.get('failure', failure)
            dependencies = dependencies.get('dependencies', [])
        ids = []

        # extract ids from various sources:
        if isinstance(dependencies, (str, AsyncResult)):
            dependencies = [dependencies]
        for d in dependencies:
            if isinstance(d, str):
                ids.append(d)
            elif isinstance(d, AsyncResult):
                ids.extend(d.msg_ids)
            else:
                raise TypeError(f"invalid dependency type: {type(d)!r}")

        set.__init__(self, ids)
        self.all = all
        if not (success or failure):
            raise ValueError("Must depend on at least one of successes or failures!")
        self.success = success
        self.failure = failure

    def check(self, completed, failed=None):
        """check whether our dependencies have been met."""
        if len(self) == 0:
            return True
        against = set()
        if self.success:
            against = completed
        if failed is not None and self.failure:
            against = against.union(failed)
        if self.all:
            return self.issubset(against)
        else:
            return not self.isdisjoint(against)

    def unreachable(self, completed, failed=None):
        """return whether this dependency has become impossible."""
        if len(self) == 0:
            return False
        against = set()
        if not self.success:
            against = completed
        if failed is not None and not self.failure:
            against = against.union(failed)
        if self.all:
            return not self.isdisjoint(against)
        else:
            return self.issubset(against)

    def as_dict(self):
        """Represent this dependency as a dict. For json compatibility."""
        return dict(
            dependencies=list(self),
            all=self.all,
            success=self.success,
            failure=self.failure,
        )


__all__ = ['depend', 'require', 'dependent', 'Dependency']
ipython-ipyparallel-14e3c43/ipyparallel/controller/dictdb.py000066400000000000000000000252361520071063500243630ustar00rootroot00000000000000"""A Task logger that presents our DB interface,
but exists entirely in memory and implemented with dicts.


TaskRecords are dicts of the form::

    {
        'msg_id' : str(uuid),
        'client_uuid' : str(uuid),
        'engine_uuid' : str(uuid) or None,
        'header' : dict(header),
        'content': dict(content),
        'buffers': list(buffers),
        'submitted': datetime or None,
        'started': datetime or None,
        'completed': datetime or None,
        'received': datetime or None,
        'resubmitted': str(uuid) or None,
        'result_header' : dict(header) or None,
        'result_content' : dict(content) or None,
        'result_buffers' : list(buffers) or None,
    }

With this info, many of the special categories of tasks can be defined by query,
e.g.:

* pending: completed is None
* client's outstanding: client_uuid = uuid && completed is None
* MIA: arrived is None (and completed is None)

DictDB supports a subset of mongodb operators::

    $lt,$gt,$lte,$gte,$ne,$in,$nin,$all,$mod,$exists
"""

# Copyright (c) IPython Development Team.
# Distributed under the terms of the Modified BSD License.
import copy
import fnmatch
from copy import deepcopy
from datetime import datetime

from traitlets import Dict, Float, Integer, Unicode
from traitlets.config.configurable import LoggingConfigurable

from ..util import ensure_timezone

# Python can't copy memoryviews, but creating another memoryview works for us
copy._deepcopy_dispatch[memoryview] = lambda x, memo: memoryview(x)

filters = {
    '$lt': lambda a, b: a < b,
    '$gt': lambda a, b: b > a,
    '$eq': lambda a, b: a == b,
    '$ne': lambda a, b: a != b,
    '$lte': lambda a, b: a <= b,
    '$gte': lambda a, b: a >= b,
    '$in': lambda a, b: a in b,
    '$nin': lambda a, b: a not in b,
    '$all': lambda a, b: all([a in bb for bb in b]),
    '$mod': lambda a, b: a % b[0] == b[1],
    '$exists': lambda a, b: (b and a is not None) or (a is None and not b),
    '$glob': lambda a, b: fnmatch.fnmatch(a, b) if a is not None else False,
}


def _add_tz(obj):
    if isinstance(obj, datetime):
        obj = ensure_timezone(obj)
    return obj


class CompositeFilter:
    """Composite filter for matching multiple properties."""

    def __init__(self, dikt):
        self.tests = []
        self.values = []
        for key, value in dikt.items():
            self.tests.append(_add_tz(filters[key]))
            self.values.append(_add_tz(value))

    def __call__(self, value):
        for test, check in zip(self.tests, self.values):
            if not test(value, check):
                return False
        return True


class BaseDB(LoggingConfigurable):
    """Empty Parent class so traitlets work on DB."""

    # base configurable traits:
    session = Unicode("")

    def close(self):
        pass


class DictDB(BaseDB):
    """Basic in-memory dict-based object for saving Task Records.

    This is the first object to present the DB interface
    for logging tasks out of memory.

    The interface is based on MongoDB, so adding a MongoDB
    backend should be straightforward.
    """

    _records = Dict()
    _culled_ids = set()  # set of ids which have been culled
    _buffer_bytes = Integer(0)  # running total of the bytes in the DB

    size_limit = Integer(
        1024**3,
        config=True,
        help="""The maximum total size (in bytes) of the buffers stored in the db

        When the db exceeds this size, the oldest records will be culled until
        the total size is under size_limit * (1-cull_fraction).
        default: 1 GB
        """,
    )
    record_limit = Integer(
        1024,
        config=True,
        help="""The maximum number of records in the db

        When the history exceeds this size, the first record_limit * cull_fraction
        records will be culled.
        """,
    )
    cull_fraction = Float(
        0.1,
        config=True,
        help="""The fraction by which the db should culled when one of the limits is exceeded

        In general, the db size will spend most of its time with a size in the range:

        [limit * (1-cull_fraction), limit]

        for each of size_limit and record_limit.
        """,
    )

    def _match_one(self, rec, tests):
        """Check if a specific record matches tests."""
        for key, test in tests.items():
            if not test(rec.get(key, None)):
                return False
        return True

    def _match(self, check):
        """Find all the matches for a check dict."""
        matches = []
        tests = {}
        for k, v in check.items():
            if isinstance(v, dict):
                tests[k] = CompositeFilter(v)
            else:
                tests[k] = lambda o: _add_tz(o) == _add_tz(v)

        for rec in self._records.values():
            if self._match_one(rec, tests):
                matches.append(deepcopy(rec))
        return matches

    def _extract_subdict(self, rec, keys):
        """extract subdict of keys"""
        d = {}
        d['msg_id'] = rec['msg_id']
        for key in keys:
            d[key] = rec[key]
        return deepcopy(d)

    # methods for monitoring size / culling history

    def _add_bytes(self, rec):
        for key in ('buffers', 'result_buffers'):
            for buf in rec.get(key) or []:
                self._buffer_bytes += len(buf)

        self._maybe_cull()

    def _drop_bytes(self, rec):
        for key in ('buffers', 'result_buffers'):
            for buf in rec.get(key) or []:
                self._buffer_bytes -= len(buf)

    def _cull_oldest(self, n=1):
        """cull the oldest N records"""
        for msg_id in self.get_history()[:n]:
            self.log.debug("Culling record: %r", msg_id)
            self._culled_ids.add(msg_id)
            self.drop_record(msg_id)

    def _maybe_cull(self):
        # cull by count:
        if len(self._records) > self.record_limit:
            to_cull = int(self.cull_fraction * self.record_limit)
            self.log.info(
                "%i records exceeds limit of %i, culling oldest %i",
                len(self._records),
                self.record_limit,
                to_cull,
            )
            self._cull_oldest(to_cull)

        # cull by size:
        if self._buffer_bytes > self.size_limit:
            limit = self.size_limit * (1 - self.cull_fraction)

            before = self._buffer_bytes
            before_count = len(self._records)
            culled = 0
            while self._buffer_bytes > limit:
                self._cull_oldest(1)
                culled += 1

            self.log.info(
                "%i records with total buffer size %i exceeds limit: %i. Culled oldest %i records.",
                before_count,
                before,
                self.size_limit,
                culled,
            )

    def _check_dates(self, rec):
        for key in ('submitted', 'started', 'completed', 'received'):
            value = rec.get(key, None)
            if value is not None and not isinstance(value, datetime):
                raise ValueError(f"{key} must be None or datetime, not {value!r}")
            if isinstance(value, datetime) and value.tzinfo is None:
                self.log.warning(
                    "Timestamps should always have timezones: %s=%s", key, value
                )
                rec[key] = ensure_timezone(value)

    # public API methods:

    def add_record(self, msg_id, rec):
        """Add a new Task Record, by msg_id."""
        if msg_id in self._records:
            raise KeyError(f"Already have msg_id {msg_id!r}")
        self._check_dates(rec)
        self._records[msg_id] = rec
        self._add_bytes(rec)
        self._maybe_cull()

    def get_record(self, msg_id):
        """Get a specific Task Record, by msg_id."""
        if msg_id in self._culled_ids:
            raise KeyError(f"Record {msg_id!r} has been culled for size")
        if msg_id not in self._records:
            raise KeyError(f"No such msg_id {msg_id!r}")
        return deepcopy(self._records[msg_id])

    def update_record(self, msg_id, rec):
        """Update the data in an existing record."""
        if msg_id in self._culled_ids:
            raise KeyError(f"Record {msg_id!r} has been culled for size")
        self._check_dates(rec)
        _rec = self._records[msg_id]
        self._drop_bytes(_rec)
        _rec.update(rec)
        self._add_bytes(_rec)

    def drop_matching_records(self, check):
        """Remove a record from the DB."""
        matches = self._match(check)
        for rec in matches:
            self._drop_bytes(rec)
            del self._records[rec['msg_id']]

    def drop_record(self, msg_id):
        """Remove a record from the DB."""
        rec = self._records[msg_id]
        self._drop_bytes(rec)
        del self._records[msg_id]

    def find_records(self, check, keys=None):
        """Find records matching a query dict, optionally extracting subset of keys.

        Returns dict keyed by msg_id of matching records.

        Parameters
        ----------
        check : dict
            mongodb-style query argument
        keys : list of strs [optional]
            if specified, the subset of keys to extract.  msg_id will *always* be
            included.
        """
        matches = self._match(check)
        if keys:
            return [self._extract_subdict(rec, keys) for rec in matches]
        else:
            return matches

    def get_history(self):
        """get all msg_ids, ordered by time submitted."""
        msg_ids = self._records.keys()
        # Remove any that do not have a submitted timestamp.
        # This is extremely unlikely to happen,
        # but it seems to come up in some tests on VMs.
        msg_ids = [m for m in msg_ids if self._records[m]['submitted'] is not None]
        return sorted(msg_ids, key=lambda m: self._records[m]['submitted'])


class NoData(KeyError):
    """Special KeyError to raise when requesting data from NoDB"""

    def __str__(self):
        return "NoDB backend doesn't store any data. "
        "Start the Controller with a DB backend to enable resubmission / result persistence."


class NoDB(BaseDB):
    """A blackhole db backend that actually stores no information.

    Provides the full DB interface, but raises KeyErrors on any
    method that tries to access the records.  This can be used to
    minimize the memory footprint of the Hub when its record-keeping
    functionality is not required.
    """

    def add_record(self, msg_id, record):
        pass

    def get_record(self, msg_id):
        raise NoData()

    def update_record(self, msg_id, record):
        pass

    def drop_matching_records(self, check):
        pass

    def drop_record(self, msg_id):
        pass

    def find_records(self, check, keys=None):
        raise NoData()

    def get_history(self):
        raise NoData()
ipython-ipyparallel-14e3c43/ipyparallel/controller/heartmonitor.py000077500000000000000000000251211520071063500256410ustar00rootroot00000000000000#!/usr/bin/env python
"""
A multi-heart Heartbeat system using PUB and ROUTER sockets. pings are sent out on the PUB,
and hearts are tracked based on their DEALER identities.
"""

# Copyright (c) IPython Development Team.
# Distributed under the terms of the Modified BSD License.
import asyncio
import logging
import time
import uuid

import zmq
from jupyter_client.session import Session
from tornado import ioloop
from traitlets import Bool, Dict, Float, Instance, Integer, Set, default
from traitlets.config.configurable import LoggingConfigurable
from zmq.devices import ThreadDevice, ThreadMonitoredQueue
from zmq.eventloop.zmqstream import ZMQStream

from ipyparallel import util
from ipyparallel.util import bind, connect, log_errors, set_hwm


class Heart:
    """A basic heart object for responding to a HeartMonitor.
    This is a simple wrapper with defaults for the most common
    Device model for responding to heartbeats.

    Builds a threadsafe zmq.FORWARDER Device, defaulting to using
    SUB/DEALER for in/out.

    You can specify the DEALER's IDENTITY via the optional heart_id argument."""

    device = None
    id = None

    def __init__(
        self,
        in_addr,
        out_addr,
        mon_addr=None,
        in_type=zmq.SUB,
        out_type=zmq.DEALER,
        mon_type=zmq.PUB,
        heart_id=None,
        curve_serverkey=None,
        curve_secretkey=None,
        curve_publickey=None,
    ):
        if mon_addr is None:
            self.device = ThreadDevice(zmq.FORWARDER, in_type, out_type)
        else:
            self.device = ThreadMonitoredQueue(
                in_type, out_type, mon_type, in_prefix=b"", out_prefix=b""
            )
        # do not allow the device to share global Context.instance,
        # which is the default behavior in pyzmq > 2.1.10
        self.device.context_factory = zmq.Context

        self.device.daemon = True
        self.device.connect_in(in_addr)
        self.device.connect_out(out_addr)
        if curve_serverkey:
            self.device.setsockopt_in(zmq.CURVE_SERVERKEY, curve_serverkey)
            self.device.setsockopt_in(zmq.CURVE_PUBLICKEY, curve_publickey)
            self.device.setsockopt_in(zmq.CURVE_SECRETKEY, curve_secretkey)

            self.device.setsockopt_out(zmq.CURVE_SERVERKEY, curve_serverkey)
            self.device.setsockopt_out(zmq.CURVE_PUBLICKEY, curve_publickey)
            self.device.setsockopt_out(zmq.CURVE_SECRETKEY, curve_secretkey)
            if mon_addr is not None:
                self.device.setsockopt_mon(zmq.CURVE_SERVERKEY, curve_publickey)
                self.device.setsockopt_mon(zmq.CURVE_PUBLICKEY, curve_publickey)
                self.device.setsockopt_mon(zmq.CURVE_SECRETKEY, curve_secretkey)

        if mon_addr is not None:
            self.device.connect_mon(mon_addr)
        if in_type == zmq.SUB:
            self.device.setsockopt_in(zmq.SUBSCRIBE, b"")
        if heart_id is None:
            heart_id = uuid.uuid4().bytes
        self.device.setsockopt_out(zmq.IDENTITY, heart_id)
        self.id = heart_id

    def start(self):
        return self.device.start()


class HeartMonitor(LoggingConfigurable):
    """A basic HeartMonitor class
    ping_stream: a PUB stream
    pong_stream: an ROUTER stream
    period: the period of the heartbeat in milliseconds
    """

    debug = Bool(
        False,
        config=True,
        help="""Whether to include every heartbeat in debugging output.

        Has to be set explicitly, because there will be *a lot* of output.
        """,
    )
    period = Integer(
        3000,
        config=True,
        help='The frequency at which the Hub pings the engines for heartbeats (in ms)',
    )
    max_heartmonitor_misses = Integer(
        10,
        config=True,
        help='Allowed consecutive missed pings from controller Hub to engine before unregistering.',
    )

    ping_stream = Instance(ZMQStream)
    pong_stream = Instance(ZMQStream)
    monitor_stream = Instance(ZMQStream)
    session = Instance(Session)

    @default("session")
    def _default_session(self):
        util._disable_session_extract_dates()
        return Session(parent=self)

    loop = Instance(ioloop.IOLoop)

    @default("loop")
    def _loop_default(self):
        return ioloop.IOLoop.current()

    # not settable:
    hearts = Set()
    responses = Set()
    on_probation = Dict()
    last_ping = Float(0)
    lifetime = Float(0)
    tic = Float(0)

    def start(self):
        self.log.debug("heartbeat::waiting for subscription")
        msg = self.monitor_stream.socket.recv_multipart()
        self.log.debug("heartbeat::subscription started")
        self.pong_stream.on_recv(self.handle_pong)
        self.tic = time.monotonic()
        self.caller = ioloop.PeriodicCallback(self.beat, self.period)
        self.caller.start()

    def beat(self):
        self.pong_stream.flush()
        self.last_ping = self.lifetime

        toc = time.monotonic()
        self.lifetime += toc - self.tic
        self.tic = toc
        if self.debug:
            self.log.debug("heartbeat::sending %s", self.lifetime)
        good_hearts = self.hearts.intersection(self.responses)
        missed_beats = self.hearts.difference(good_hearts)
        new_hearts = self.responses.difference(good_hearts)
        if new_hearts:
            self.handle_new_hearts(new_hearts)
        heart_failures, on_probation = self._check_missed(
            missed_beats, self.on_probation, self.hearts
        )
        if heart_failures:
            self.handle_heart_failure(heart_failures)
        self.on_probation = on_probation
        self.responses = set()
        # print self.on_probation, self.hearts
        # self.log.debug("heartbeat::beat %.3f, %i beating hearts", self.lifetime, len(self.hearts))
        self.ping_stream.send(str(self.lifetime).encode('ascii'))
        # flush stream to force immediate socket send
        self.ping_stream.flush()

    def _check_missed(self, missed_beats, on_probation, hearts):
        """Update heartbeats on probation, identifying any that have too many misses."""
        failures = []
        new_probation = {}
        for cur_heart in (b for b in missed_beats if b in hearts):
            miss_count = on_probation.get(cur_heart, 0) + 1
            self.log.info(f"heartbeat::missed {cur_heart} : {miss_count}")
            if miss_count > self.max_heartmonitor_misses:
                failures.append(cur_heart)
            else:
                new_probation[cur_heart] = miss_count
        return failures, new_probation

    def handle_new_hearts(self, hearts):
        for heart in hearts:
            self.hearts.add(heart)
        self.log.debug(f"Notifying hub of {len(hearts)} new hearts")
        self.session.send(
            self.monitor_stream,
            "new_heart",
            content={
                "hearts": [h.decode("utf8", "replace") for h in hearts],
            },
            ident=[b"heartmonitor", b""],
        )

    def handle_heart_failure(self, hearts):
        self.log.debug(f"Notifying hub of {len(hearts)} stopped hearts")
        self.session.send(
            self.monitor_stream,
            "stopped_heart",
            content={
                "hearts": [h.decode("utf8", "replace") for h in hearts],
            },
            ident=[b"heartmonitor", b""],
        )
        for heart in hearts:
            try:
                self.hearts.remove(heart)
            except KeyError:
                self.log.info("heartbeat:: %s has already been removed.", heart)

    @log_errors
    def handle_pong(self, msg):
        """a heart just beat"""
        current = str(self.lifetime).encode('ascii')
        last = str(self.last_ping).encode('ascii')
        if msg[1] == current:
            delta = time.monotonic() - self.tic
            if self.debug:
                self.log.debug(
                    "heartbeat::heart %r took %.2f ms to respond", msg[0], 1000 * delta
                )
            self.responses.add(msg[0])
        elif msg[1] == last:
            delta = time.monotonic() - self.tic + (self.lifetime - self.last_ping)
            self.log.warning(
                "heartbeat::heart %r missed a beat, and took %.2f ms to respond",
                msg[0],
                1000 * delta,
            )
            self.responses.add(msg[0])
        else:
            self.log.warning(
                "heartbeat::got bad heartbeat (possibly old?): %s (current=%.3f)",
                msg[1],
                self.lifetime,
            )


async def _setup_heartmonitor(
    ctx,
    ping_url,
    pong_url,
    monitor_url,
    log_level=logging.INFO,
    curve_publickey=None,
    curve_secretkey=None,
    **heart_monitor_kwargs,
):
    """Set up heart monitor

    For use in a background process,
    via Process(target=start_heartmonitor)
    """
    ping_socket = ctx.socket(zmq.PUB)
    bind(
        ping_socket,
        ping_url,
        curve_publickey=curve_publickey,
        curve_secretkey=curve_secretkey,
    )
    ping_stream = ZMQStream(ping_socket)

    pong_socket = ctx.socket(zmq.ROUTER)
    set_hwm(pong_socket, 0)
    bind(
        pong_socket,
        pong_url,
        curve_publickey=curve_publickey,
        curve_secretkey=curve_secretkey,
    )
    pong_stream = ZMQStream(pong_socket)

    monitor_socket = ctx.socket(zmq.XPUB)
    connect(
        monitor_socket,
        monitor_url,
        curve_publickey=curve_publickey,
        curve_secretkey=curve_secretkey,
        curve_serverkey=curve_publickey,
    )
    monitor_stream = ZMQStream(monitor_socket)

    # reinitialize logging after fork
    from .app import IPController

    app = IPController(log_level=log_level)
    heart_monitor_kwargs['log'] = app.log

    heart_monitor = HeartMonitor(
        ping_stream=ping_stream,
        pong_stream=pong_stream,
        monitor_stream=monitor_stream,
        **heart_monitor_kwargs,
    )
    heart_monitor.start()


def start_heartmonitor(
    ping_url,
    pong_url,
    monitor_url,
    log_level=logging.INFO,
    curve_publickey=None,
    curve_secretkey=None,
    **heart_monitor_kwargs,
):
    """Start a heart monitor.

    For use in a background process,
    via Process(target=start_heartmonitor)
    """
    ctx = zmq.Context()
    loop = asyncio.new_event_loop()
    try:
        loop.run_until_complete(
            _setup_heartmonitor(
                ctx=ctx,
                ping_url=ping_url,
                pong_url=pong_url,
                monitor_url=monitor_url,
                log_level=log_level,
                curve_publickey=curve_publickey,
                curve_secretkey=curve_secretkey,
                **heart_monitor_kwargs,
            )
        )
        loop.run_forever()
    finally:
        loop.close()
        ctx.destroy()
ipython-ipyparallel-14e3c43/ipyparallel/controller/hub.py000066400000000000000000001551161520071063500237110ustar00rootroot00000000000000"""The IPython Controller Hub with 0MQ

This is the master object that handles connections from engines and clients,
and monitors traffic through the various queues.
"""

# Copyright (c) IPython Development Team.
# Distributed under the terms of the Modified BSD License.
import inspect
import json
import os
import sys
import time
from collections import deque
from datetime import datetime

import zmq
from jupyter_client.jsonutil import parse_date
from jupyter_client.session import Session
from tornado import ioloop
from traitlets import (
    Any,
    Bytes,
    Dict,
    Float,
    HasTraits,
    Instance,
    Integer,
    Set,
    Unicode,
    default,
)
from traitlets.config import LoggingConfigurable
from zmq.eventloop.zmqstream import ZMQStream

from ipyparallel import error, util

from ..util import extract_dates
from .heartmonitor import HeartMonitor

# internal:


def _passer(*args, **kwargs):
    return


def _printer(*args, **kwargs):
    print(args)
    print(kwargs)


def empty_record():
    """Return an empty dict with all record keys."""
    return {
        'msg_id': None,
        'header': None,
        'metadata': None,
        'content': None,
        'buffers': None,
        'submitted': None,
        'client_uuid': None,
        'engine_uuid': None,
        'started': None,
        'completed': None,
        'resubmitted': None,
        'received': None,
        'result_header': None,
        'result_metadata': None,
        'result_content': None,
        'result_buffers': None,
        'queue': None,
        'execute_input': None,
        'execute_result': None,
        'error': None,
        'stdout': '',
        'stderr': '',
        'label': None,
    }


def ensure_date_is_parsed(header):
    if not isinstance(header['date'], datetime):
        header['date'] = parse_date(header['date'])


def init_record(msg):
    """Initialize a TaskRecord based on a request."""
    header = msg['header']

    ensure_date_is_parsed(header)
    return {
        'msg_id': header['msg_id'],
        'header': header,
        'content': msg['content'],
        'metadata': msg['metadata'],
        'buffers': msg['buffers'],
        'submitted': util.ensure_timezone(header['date']),
        'client_uuid': None,
        'engine_uuid': None,
        'started': None,
        'completed': None,
        'resubmitted': None,
        'received': None,
        'result_header': None,
        'result_metadata': None,
        'result_content': None,
        'result_buffers': None,
        'queue': None,
        'execute_input': None,
        'execute_result': None,
        'error': None,
        'stdout': '',
        'stderr': '',
        'label': msg['metadata'].get('label', None),
    }


class EngineConnector(HasTraits):
    """A simple object for accessing the various zmq connections of an object.
    Attributes are:
    id (int): engine ID
    uuid (unicode): engine UUID
    pending: set of msg_ids
    stallback: tornado timeout for stalled registration
    registration_started (float): time when registration began
    """

    id = Integer()
    uuid = Unicode()
    ident = Bytes()
    pending = Set()
    stallback = Any()
    registration_started = Float()

    def __init__(self, **kwargs):
        super().__init__(**kwargs)
        if not self.registration_started:
            self.registration_started = time.monotonic()


class Hub(LoggingConfigurable):
    """The IPython Controller Hub with 0MQ connections

    Parameters
    ==========
    loop: zmq IOLoop instance
    session: Session object
     context: zmq context for creating new connections (?)
    queue: ZMQStream for monitoring the command queue (SUB)
    query: ZMQStream for engine registration and client queries requests (ROUTER)
    heartbeat: HeartMonitor object checking the pulse of the engines
    notifier: ZMQStream for broadcasting engine registration changes (PUB)
    db: connection to db for out of memory logging of commands
                NotImplemented
    engine_info: dict of zmq connection information for engines to connect
                to the queues.
    client_info: dict of zmq connection information for engines to connect
                to the queues.
    """

    engine_state_file = Unicode()

    # internal data structures:
    ids = Set()  # engine IDs
    by_ident = Dict()  # map bytes identities : int engine id
    engines = Dict()  # map int engine id : EngineConnector
    hearts = Dict()  # map bytes identities : int engine id, only for active heartbeats
    heartmonitor_period = Integer()
    pending = Set()
    queues = Dict()  # pending msg_ids keyed by engine_id
    tasks = Dict()  # pending msg_ids submitted as tasks, keyed by client_id
    completed = Dict()  # completed msg_ids keyed by engine_id
    all_completed = Set()  # completed msg_ids keyed by engine_id
    unassigned = Set()  # set of task msg_ids not yet assigned a destination
    incoming_registrations = Dict()
    registration_timeout = Integer()
    _idcounter = Integer(0)
    distributed_scheduler = Any()

    expect_stopped_hearts = Instance(deque)

    @default("expect_stopped_hearts")
    def _default_expect_stopped_hearts(self):
        # remember the last this-many hearts
        # silences warnings about ignoring stopped hearts for unregistered engines
        # harmless, but noisy if they happen on every unregistration
        return deque(maxlen=1024)

    loop = Instance(ioloop.IOLoop)

    @default("loop")
    def _default_loop(self):
        return ioloop.IOLoop.current()

    # objects from constructor:
    session = Instance(Session)
    query = Instance(ZMQStream, allow_none=True)
    monitor = Instance(ZMQStream, allow_none=True)
    notifier = Instance(ZMQStream, allow_none=True)
    resubmit = Instance(ZMQStream, allow_none=True)
    heartmonitor = Instance(HeartMonitor, allow_none=True)
    db = Instance(object, allow_none=True)
    client_info = Dict()
    engine_info = Dict()

    def __init__(self, **kwargs):
        """
        # universal:
        loop: IOLoop for creating future connections
        session: streamsession for sending serialized data
        # engine:
        queue: ZMQStream for monitoring queue messages
        query: ZMQStream for engine+client registration and client requests
        heartbeat: HeartMonitor object for tracking engines
        # extra:
        db: ZMQStream for db connection (NotImplemented)
        engine_info: zmq address/protocol dict for engine connections
        client_info: zmq address/protocol dict for client connections
        """

        super().__init__(**kwargs)

        # register our callbacks
        self.query.on_recv(self.dispatch_query)
        self.monitor.on_recv(self.dispatch_monitor_traffic)

        self.monitor_handlers = {
            b'in': self.save_queue_request,
            b'out': self.save_queue_result,
            b'intask': self.save_task_request,
            b'outtask': self.save_task_result,
            b'inbcast': self.save_broadcast_request,
            b'outbcast': self.save_broadcast_result,
            b'tracktask': self.save_task_destination,
            b'incontrol': _passer,
            b'outcontrol': _passer,
            b'iopub': self.monitor_iopub_message,
            b'heartmonitor': self.heartmonitor_message,
        }

        self.query_handlers = {
            'queue_request': self.queue_status,
            'result_request': self.get_results,
            'history_request': self.get_history,
            'db_request': self.db_query,
            'purge_request': self.purge_results,
            'load_request': self.check_load,
            'resubmit_request': self.resubmit_task,
            'shutdown_request': self.shutdown_request,
            'registration_request': self.register_engine,
            'unregistration_request': self.unregister_engine,
            'connection_request': self.connection_request,
            'become_dask_request': self.become_dask,
            'stop_distributed_request': self.stop_distributed,
        }

        # ignore resubmit replies
        self.resubmit.on_recv(lambda msg: None, copy=False)

        self.log.info("hub::created hub")

    def new_engine_id(self, requested_id=None):
        """generate a new engine integer id.

        No longer reuse old ids, just count from 0.

        If an id is requested and available, use that.
        Otherwise, use the counter.
        """
        if requested_id is not None:
            if requested_id in self.engines:
                self.log.warning(
                    "Engine id %s in use by engine with uuid=%s",
                    requested_id,
                    self.engines[requested_id].uuid,
                )
            elif requested_id in {ec.id for ec in self.incoming_registrations.values()}:
                self.log.warning(
                    "Engine id %s registration already pending", requested_id
                )
            else:
                self._idcounter = max(requested_id + 1, self._idcounter)
                return requested_id
        newid = self._idcounter
        self._idcounter += 1
        return newid

    # -----------------------------------------------------------------------------
    # message validation
    # -----------------------------------------------------------------------------

    def _validate_targets(self, targets):
        """turn any valid targets argument into a list of integer ids"""
        if targets is None:
            # default to all
            return self.ids

        if isinstance(targets, (int, str)):
            # only one target specified
            targets = [targets]
        _targets = []
        for t in targets:
            # map raw identities to ids
            if isinstance(t, str):
                t = self.by_ident.get(t.encode("utf8", "replace"), t)
            _targets.append(t)
        targets = _targets
        bad_targets = [t for t in targets if t not in self.ids]
        if bad_targets:
            raise IndexError(f"No Such Engine: {bad_targets!r}")
        if not targets:
            raise IndexError("No Engines Registered")
        return targets

    # -----------------------------------------------------------------------------
    # dispatch methods (1 per stream)
    # -----------------------------------------------------------------------------

    @util.log_errors
    def dispatch_monitor_traffic(self, msg):
        """all ME and Task queue messages come through here, as well as
        IOPub traffic."""
        self.log.debug("monitor traffic: %r", msg[0])
        switch = msg[0]
        try:
            idents, msg = self.session.feed_identities(msg[1:])
        except ValueError:
            idents = []
        if not idents:
            self.log.error("Monitor message without topic: %r", msg)
            return
        handler = self.monitor_handlers.get(switch, None)
        if handler is not None:
            handler(idents, msg)
        else:
            self.log.error("Unrecognized monitor topic: %r", switch)

    @util.log_errors
    async def dispatch_query(self, msg):
        """Route registration requests and queries from clients."""
        try:
            idents, msg = self.session.feed_identities(msg)
        except ValueError:
            idents = []
        if not idents:
            self.log.error("Bad Query Message: %r", msg)
            return
        client_id = idents[0]
        try:
            msg = self.session.deserialize(msg, content=True)
        except Exception:
            content = error.wrap_exception()
            self.log.error("Bad Query Message: %r", msg, exc_info=True)
            self.session.send(
                self.query, "hub_error", ident=client_id, content=content, parent=msg
            )
            return
        # print client_id, header, parent, content
        # switch on message type:
        msg_type = msg['header']['msg_type']
        self.log.info("client::client %r requested %r", client_id, msg_type)
        handler = self.query_handlers.get(msg_type, None)
        try:
            if handler is None:
                raise KeyError(f"Bad Message Type: {msg_type!r}")
        except Exception:
            content = error.wrap_exception()
            self.log.error("Bad Message Type: %r", msg_type, exc_info=True)
            self.session.send(
                self.query, "hub_error", ident=client_id, content=content, parent=msg
            )
            return

        try:
            f = handler(idents, msg)
            if f and inspect.isawaitable(f):
                await f
        except Exception:
            content = error.wrap_exception()
            self.log.error("Error handling request: %r", msg_type, exc_info=True)
            self.session.send(
                self.query, "hub_error", ident=client_id, content=content, parent=msg
            )

    # ---------------------------------------------------------------------------
    # handler methods (1 per event)
    # ---------------------------------------------------------------------------

    # ----------------------- Heartbeat --------------------------------------

    @util.log_errors
    def heartmonitor_message(self, topics, msg):
        """Handle a message from the heart monitor"""
        try:
            msg = self.session.deserialize(msg)
        except Exception:
            self.log.error(
                "heartmonitor::invalid message %r",
                msg,
                exc_info=True,
            )
            return
        msg_type = msg['header']['msg_type']
        if msg_type == 'new_heart':
            hearts = msg['content']['hearts']
            self.log.info(f"Registering {len(hearts)} new hearts")
            for heart in hearts:
                self.handle_new_heart(heart.encode("utf8"))
        elif msg_type == 'stopped_heart':
            hearts = msg['content']['hearts']
            self.log.warning(f"{len(hearts)} hearts stopped")
            for heart in hearts:
                self.handle_stopped_heart(heart.encode("utf8"))

    def handle_new_heart(self, heart):
        """Handle a new heart that just started beating"""
        self.log.debug("heartbeat::handle_new_heart(%r)", heart)
        if heart not in self.incoming_registrations:
            self.log.info("heartbeat::ignoring new heart: %r", heart)
        else:
            self.finish_registration(heart)

    def handle_stopped_heart(self, heart):
        """Handle notification that heart has stopped"""
        self.log.debug("heartbeat::handle_stopped_heart(%r)", heart)
        eid = self.hearts.get(heart, None)
        if eid is None:
            if heart in self.expect_stopped_hearts:
                log = self.log.debug
            else:
                log = self.log.info
            log(
                "heartbeat::ignoring heart failure %r (probably unregistered already)",
                heart,
            )
        else:
            uuid = self.engines[eid].uuid
            self.unregister_engine(heart, dict(content=dict(id=eid, queue=uuid)))

    # ----------------------- MUX Queue Traffic ------------------------------

    def save_queue_request(self, idents, msg):
        if len(idents) < 2:
            self.log.error("invalid identity prefix: %r", idents)
            return
        queue_id, client_id = idents[:2]
        try:
            msg = self.session.deserialize(msg)
        except Exception:
            self.log.error(
                "queue::client %r sent invalid message to %r: %r",
                client_id,
                queue_id,
                msg,
                exc_info=True,
            )
            return

        eid = self.by_ident.get(queue_id, None)
        if eid is None:
            self.log.error("queue::target %r not registered", queue_id)
            self.log.debug("queue::    valid are: %r", self.by_ident.keys())
            return
        record = init_record(msg)
        msg_id = record['msg_id']
        self.log.info(
            "queue::client %r submitted request %r to %s", client_id, msg_id, eid
        )
        # Unicode in records
        record['engine_uuid'] = queue_id.decode('ascii')
        record['client_uuid'] = msg['header']['session']
        record['queue'] = 'mux'

        try:
            # it's posible iopub arrived first:
            existing = self.db.get_record(msg_id)
            for key, evalue in existing.items():
                rvalue = record.get(key, None)
                if evalue and rvalue and evalue != rvalue:
                    self.log.warning(
                        "conflicting initial state for record: %r:%r <%r> %r",
                        msg_id,
                        rvalue,
                        key,
                        evalue,
                    )
                elif evalue and not rvalue:
                    record[key] = evalue
            try:
                self.db.update_record(msg_id, record)
            except Exception:
                self.log.error("DB Error updating record %r", msg_id, exc_info=True)
        except KeyError:
            try:
                self.db.add_record(msg_id, record)
            except Exception:
                self.log.error("DB Error adding record %r", msg_id, exc_info=True)

        self.pending.add(msg_id)
        self.queues[eid].append(msg_id)

    def save_queue_result(self, idents, msg):
        if len(idents) < 2:
            self.log.error("invalid identity prefix: %r", idents)
            return

        client_id, queue_id = idents[:2]
        try:
            msg = self.session.deserialize(msg)
        except Exception:
            self.log.error(
                "queue::engine %r sent invalid message to %r: %r",
                queue_id,
                client_id,
                msg,
                exc_info=True,
            )
            return

        eid = self.by_ident.get(queue_id, None)
        if eid is None:
            self.log.error("queue::unknown engine %r is sending a reply: ", queue_id)
            return

        parent = msg['parent_header']
        if not parent:
            return
        msg_id = parent['msg_id']
        if msg_id in self.pending:
            self.pending.remove(msg_id)
            self.all_completed.add(msg_id)
            self.queues[eid].remove(msg_id)
            self.completed[eid].append(msg_id)
            self.log.info("queue::request %r completed on %s", msg_id, eid)
        elif msg_id not in self.all_completed:
            # it could be a result from a dead engine that died before delivering the
            # result
            self.log.warning("queue:: unknown msg finished %r", msg_id)
            return
        # update record anyway, because the unregistration could have been premature
        rheader = msg['header']
        md = msg['metadata']
        ensure_date_is_parsed(rheader)
        completed = util.ensure_timezone(rheader['date'])
        started = extract_dates(md.get('started', None))
        result = {
            'result_header': rheader,
            'result_metadata': md,
            'result_content': msg['content'],
            'received': util.utcnow(),
            'started': started,
            'completed': completed,
        }

        result['result_buffers'] = msg['buffers']
        try:
            self.db.update_record(msg_id, result)
        except Exception:
            self.log.error("DB Error updating record %r", msg_id, exc_info=True)

    # --------------------- Broadcast traffic ------------------------------
    def save_broadcast_request(self, idents, msg):
        client_id = idents[0]
        try:
            msg = self.session.deserialize(msg)
        except Exception as e:
            self.log.error(
                f'broadcast:: client {client_id} sent invalid broadcast message: {msg}',
                exc_info=True,
            )
            return

        record = init_record(msg)

        record['client_uuid'] = msg['header']['session']
        header = msg['header']
        msg_id = header['msg_id']
        self.pending.add(msg_id)

        try:
            self.db.add_record(msg_id, record)
        except Exception as e:
            self.log.error(f'DB Error adding record {msg_id}', exc_info=True)

    def save_broadcast_result(self, idents, msg):
        client_id = idents[0]
        try:
            msg = self.session.deserialize(msg)
        except Exception as e:
            self.log.error(
                f'broadcast::invalid broadcast result message send to {client_id}:'
            )

        # save the result of a completed broadcast
        parent = msg['parent_header']
        if not parent:
            self.log.warning(f'Broadcast message {msg} had no parent')
            return
        msg_id = parent['msg_id']
        header = msg['header']
        md = msg['metadata']
        engine_uuid = md.get('engine', '')
        eid = self.by_ident.get(engine_uuid.encode("utf8"), None)
        status = md.get('status', None)

        if msg_id in self.pending:
            self.log.info(f'broadcast:: broadcast {msg_id} finished on {eid}')
            self.pending.remove(msg_id)
            self.all_completed.add(msg_id)
            if eid is not None and status != 'aborted':
                self.completed[eid].append(msg_id)
            ensure_date_is_parsed(header)
            completed = util.ensure_timezone(header['date'])
            started = extract_dates(md.get('started', None))
            result = {
                'result_header': header,
                'result_metadata': msg['metadata'],
                'result_content': msg['content'],
                'started': started,
                'completed': completed,
                'received': util.utcnow(),
                'engine_uuid': engine_uuid,
                'result_buffers': msg['buffers'],
            }

            try:
                self.db.update_record(msg_id, result)
            except Exception as e:
                self.log.error(
                    f'DB Error saving broadcast result {msg_id}', msg_id, exc_info=True
                )
        else:
            self.log.debug(f'broadcast::unknown broadcast {msg_id} finished')

    # --------------------- Task Queue Traffic ------------------------------

    def save_task_request(self, idents, msg):
        """Save the submission of a task."""
        client_id = idents[0]

        try:
            msg = self.session.deserialize(msg)
        except Exception:
            self.log.error(
                "task::client %r sent invalid task message: %r",
                client_id,
                msg,
                exc_info=True,
            )
            return
        record = init_record(msg)

        record['client_uuid'] = msg['header']['session']
        record['queue'] = 'task'
        header = msg['header']
        msg_id = header['msg_id']
        self.pending.add(msg_id)
        self.unassigned.add(msg_id)
        try:
            # it's posible iopub arrived first:
            existing = self.db.get_record(msg_id)
            if existing['resubmitted']:
                for key in ('submitted', 'client_uuid', 'buffers'):
                    # don't clobber these keys on resubmit
                    # submitted and client_uuid should be different
                    # and buffers might be big, and shouldn't have changed
                    record.pop(key)
                    # still check content,header which should not change
                    # but are not expensive to compare as buffers

            for key, evalue in existing.items():
                if key.endswith('buffers'):
                    # don't compare buffers
                    continue
                rvalue = record.get(key, None)
                if evalue and rvalue and evalue != rvalue:
                    self.log.warning(
                        "conflicting initial state for record: %r:%r <%r> %r",
                        msg_id,
                        rvalue,
                        key,
                        evalue,
                    )
                elif evalue and not rvalue:
                    record[key] = evalue
            try:
                self.db.update_record(msg_id, record)
            except Exception:
                self.log.error("DB Error updating record %r", msg_id, exc_info=True)
        except KeyError:
            try:
                self.db.add_record(msg_id, record)
            except Exception:
                self.log.error("DB Error adding record %r", msg_id, exc_info=True)
        except Exception:
            self.log.error("DB Error saving task request %r", msg_id, exc_info=True)

    def save_task_result(self, idents, msg):
        """save the result of a completed task."""
        client_id = idents[0]
        try:
            msg = self.session.deserialize(msg)
        except Exception:
            self.log.error(
                "task::invalid task result message send to %r: %r",
                client_id,
                msg,
                exc_info=True,
            )
            return

        parent = msg['parent_header']
        if not parent:
            # print msg
            self.log.warning("Task %r had no parent!", msg)
            return
        msg_id = parent['msg_id']
        if msg_id in self.unassigned:
            self.unassigned.remove(msg_id)

        header = msg['header']
        md = msg['metadata']
        engine_uuid = md.get('engine', '')
        eid = self.by_ident.get(engine_uuid.encode("utf8"), None)

        status = md.get('status', None)

        if msg_id in self.pending:
            self.log.info("task::task %r finished on %s", msg_id, eid)
            self.pending.remove(msg_id)
            self.all_completed.add(msg_id)
            if eid is not None:
                if status != 'aborted':
                    self.completed[eid].append(msg_id)
                if msg_id in self.tasks[eid]:
                    self.tasks[eid].remove(msg_id)
            ensure_date_is_parsed(header)
            completed = util.ensure_timezone(header['date'])
            started = extract_dates(md.get('started', None))
            result = {
                'result_header': header,
                'result_metadata': msg['metadata'],
                'result_content': msg['content'],
                'started': started,
                'completed': completed,
                'received': util.utcnow(),
                'engine_uuid': engine_uuid,
            }

            result['result_buffers'] = msg['buffers']
            try:
                self.db.update_record(msg_id, result)
            except Exception:
                self.log.error("DB Error saving task request %r", msg_id, exc_info=True)

        else:
            self.log.debug("task::unknown task %r finished", msg_id)

    def save_task_destination(self, idents, msg):
        try:
            msg = self.session.deserialize(msg, content=True)
        except Exception:
            self.log.error("task::invalid task tracking message", exc_info=True)
            return
        content = msg['content']
        # print (content)
        msg_id = content['msg_id']
        engine_uuid = content['engine_id']
        eid = self.by_ident[engine_uuid.encode("utf8")]

        self.log.info("task::task %r arrived on %r", msg_id, eid)
        if msg_id in self.unassigned:
            self.unassigned.remove(msg_id)
        # else:
        #     self.log.debug("task::task %r not listed as MIA?!"%(msg_id))

        self.tasks[eid].append(msg_id)
        try:
            self.db.update_record(msg_id, dict(engine_uuid=engine_uuid))
        except Exception:
            self.log.error("DB Error saving task destination %r", msg_id, exc_info=True)

    # --------------------- IOPub Traffic ------------------------------

    def monitor_iopub_message(self, topics, msg):
        '''intercept iopub traffic so events can be acted upon'''
        try:
            msg = self.session.deserialize(msg, content=True)
        except Exception:
            self.log.error("iopub::invalid IOPub message", exc_info=True)
            return

        msg_type = msg['header']['msg_type']
        if msg_type == 'shutdown_reply':
            session = msg['header']['session']
            uuid_bytes = session.encode("utf8", "replace")
            eid = self.by_ident.get(uuid_bytes, None)
            if eid is None:
                self.log.error(f"Found no engine for {session}")
                return
            uuid = self.engines[eid].uuid
            self.unregister_engine(
                ident='shutdown_reply', msg=dict(content=dict(id=eid, queue=uuid))
            )

        if msg_type not in (
            'status',
            'shutdown_reply',
        ):
            self.save_iopub_message(topics, msg)

    def save_iopub_message(self, topics, msg):
        """save an iopub message into the db"""
        parent = msg['parent_header']
        if not parent:
            self.log.debug("iopub::IOPub message lacks parent: %r", msg)
            return
        msg_id = parent['msg_id']
        msg_type = msg['header']['msg_type']
        content = msg['content']

        # ensure msg_id is in db
        try:
            rec = self.db.get_record(msg_id)
        except KeyError:
            rec = None

        # stream
        d = {}
        if msg_type == 'stream':
            name = content['name']
            s = '' if rec is None else rec[name]
            d[name] = s + content['text']
        elif msg_type == 'error':
            d['error'] = content
        elif msg_type == 'execute_input':
            d['execute_input'] = content['code']
        elif msg_type in ('display_data', 'execute_result'):
            d[msg_type] = content
        elif msg_type == 'data_pub':
            self.log.info(f"ignored data_pub message for {msg_id}")
        else:
            self.log.warning("unhandled iopub msg_type: %r", msg_type)

        if not d:
            return

        if rec is None:
            # new record
            rec = empty_record()
            rec['msg_id'] = msg_id
            rec.update(d)
            d = rec
            update_record = self.db.add_record
        else:
            update_record = self.db.update_record

        try:
            update_record(msg_id, d)
        except Exception:
            self.log.error("DB Error saving iopub message %r", msg_id, exc_info=True)

    # -------------------------------------------------------------------------
    # Registration requests
    # -------------------------------------------------------------------------

    def connection_request(self, client_id, msg):
        """Reply with connection addresses for clients."""
        self.log.info("client::client %r connected", client_id)
        content = dict(status='ok')
        jsonable = {}
        for eid, ec in self.engines.items():
            jsonable[str(eid)] = ec.uuid
        content['engines'] = jsonable
        self.session.send(
            self.query, 'connection_reply', content, parent=msg, ident=client_id
        )

    def register_engine(self, reg, msg):
        """Begin registration of a new engine."""
        content = msg['content']
        try:
            uuid = content['uuid']
        except KeyError:
            self.log.error("registration::queue not specified", exc_info=True)
            return

        eid = self.new_engine_id(content.get('id'))
        self.log.debug(f"registration::requesting registration {eid}:{uuid}")

        content = dict(
            id=eid,
            status='ok',
            hb_period=self.heartmonitor_period,
            connection_info=self.engine_info,
        )
        # check if requesting available IDs:
        if uuid.encode("utf8") in self.by_ident:
            try:
                raise KeyError(f"uuid {uuid!r} in use")
            except Exception:
                content = error.wrap_exception()
                self.log.error("uuid %r in use", uuid, exc_info=True)
        else:
            for heart_id, ec in self.incoming_registrations.items():
                if uuid == heart_id:
                    try:
                        raise KeyError(f"heart_id {uuid!r} in use")
                    except Exception:
                        self.log.error("heart_id %r in use", uuid, exc_info=True)
                        content = error.wrap_exception()
                    break
                elif uuid == ec.uuid:
                    try:
                        raise KeyError(f"uuid {uuid!r} in use")
                    except Exception:
                        self.log.error("uuid %r in use", uuid, exc_info=True)
                        content = error.wrap_exception()
                    break

        msg = self.session.send(
            self.query, "registration_reply", content=content, ident=reg
        )
        # actually send replies to avoid async starvation during a registration flood
        # it's important that this message has actually been sent
        # before we start the stalled registration countdown
        self.query.flush(zmq.POLLOUT)

        heart = uuid.encode("utf8")

        if content['status'] == 'ok':
            self.log.info(f"registration::accepting registration {eid}:{uuid}")
            t = self.loop.add_timeout(
                self.loop.time() + self.registration_timeout,
                lambda: self._purge_stalled_registration(heart),
            )
            self.incoming_registrations[heart] = EngineConnector(
                id=eid, uuid=uuid, ident=heart, stallback=t
            )
        else:
            self.log.error(
                "registration::registration %i failed: %r", eid, content['evalue']
            )

        return eid

    def unregister_engine(self, ident, msg):
        """Unregister an engine that explicitly requested to leave."""
        try:
            eid = msg['content']['id']
        except Exception:
            self.log.error(
                f"registration::bad request for engine for unregistration: {msg['content']}",
            )
            return
        if eid not in self.engines:
            # engine not registered
            # first, check for still-pending registration
            remove_heart_id = None
            for heart_id, ec in self.incoming_registrations.items():
                if ec.id == eid:
                    remove_heart_id = heart_id
                    break
            if remove_heart_id is not None:
                self.log.info(f"registration::canceling registration {ec.id}:{ec.uuid}")
                self.incoming_registrations.pop(remove_heart_id)
            else:
                self.log.info(
                    f"registration::unregister_engine({eid}) already unregistered"
                )
            return

        self.log.info(f"registration::unregister_engine({eid})")
        ec = self.engines[eid]

        content = dict(id=eid, uuid=ec.uuid)

        # stop the heartbeats
        self.hearts.pop(ec.ident, None)
        self.expect_stopped_hearts.append(ec.ident)

        self.loop.add_timeout(
            self.loop.time() + self.registration_timeout,
            lambda: self._handle_stranded_msgs(eid, ec.uuid),
        )

        # cleanup mappings
        self.by_ident.pop(ec.ident, None)
        self.engines.pop(eid, None)

        self._save_engine_state()

        if self.notifier:
            self.session.send(
                self.notifier, "unregistration_notification", content=content
            )

    def _handle_stranded_msgs(self, eid, uuid):
        """Handle messages known to be on an engine when the engine unregisters.

        It is possible that this will fire prematurely - that is, an engine will
        go down after completing a result, and the client will be notified
        that the result failed and later receive the actual result.
        """

        outstanding = self.queues[eid]

        for msg_id in outstanding:
            self.pending.remove(msg_id)
            self.all_completed.add(msg_id)
            try:
                raise error.EngineError(
                    f"Engine {eid!r} died while running task {msg_id!r}"
                )
            except Exception:
                content = error.wrap_exception()
            # build a fake header:
            header = {}
            header['engine'] = uuid
            header['date'] = util.utcnow()
            rec = dict(result_content=content, result_header=header, result_buffers=[])
            rec['completed'] = util.ensure_timezone(header['date'])
            rec['engine_uuid'] = uuid
            try:
                self.db.update_record(msg_id, rec)
            except Exception:
                self.log.error(
                    "DB Error handling stranded msg %r", msg_id, exc_info=True
                )

    def finish_registration(self, heart):
        """Second half of engine registration, called after our HeartMonitor
        has received a beat from the Engine's Heart."""
        try:
            ec = self.incoming_registrations.pop(heart)
        except KeyError:
            self.log.error(
                f"registration::tried to finish nonexistant registration for {heart}",
                exc_info=True,
            )
            return
        duration_ms = int(1000 * (time.monotonic() - ec.registration_started))
        self.log.info(
            f"registration::finished registering engine {ec.id}:{ec.uuid} in {duration_ms}ms"
        )
        if ec.stallback is not None:
            self.loop.remove_timeout(ec.stallback)
        eid = ec.id
        self.ids.add(eid)
        self.engines[eid] = ec
        self.by_ident[ec.ident] = ec.id
        self.queues[eid] = list()
        self.tasks[eid] = list()
        self.completed[eid] = list()
        self.hearts[heart] = eid
        content = dict(id=eid, uuid=ec.uuid)
        if self.notifier:
            self.session.send(
                self.notifier, "registration_notification", content=content
            )
        self.log.info("engine::Engine Connected: %i", eid)

        self._save_engine_state()

    def _purge_stalled_registration(self, heart):
        # flush monitor messages before purging
        # first heartbeat might be waiting to be handled
        self.monitor.flush()
        if heart in self.incoming_registrations:
            ec = self.incoming_registrations.pop(heart)
            self.log.warning(
                f"registration::purging stalled registration {ec.id}:{ec.uuid}"
            )

    # -------------------------------------------------------------------------
    # Engine State
    # -------------------------------------------------------------------------

    def _cleanup_engine_state_file(self):
        """cleanup engine state mapping"""

        if os.path.exists(self.engine_state_file):
            self.log.debug("cleaning up engine state: %s", self.engine_state_file)
            try:
                os.remove(self.engine_state_file)
            except OSError:
                self.log.error(
                    "Couldn't cleanup file: %s", self.engine_state_file, exc_info=True
                )

    def _save_engine_state(self):
        """save engine mapping to JSON file"""
        if not self.engine_state_file:
            return
        self.log.debug(f"save engine state to {self.engine_state_file}")
        state = {}
        engines = {}
        for eid, ec in self.engines.items():
            engines[eid] = ec.uuid

        state['engines'] = engines

        state['next_id'] = self._idcounter

        with open(self.engine_state_file, 'w') as f:
            json.dump(state, f)

    def _load_engine_state(self):
        """load engine mapping from JSON file"""
        if not os.path.exists(self.engine_state_file):
            return

        self.log.info(f"loading engine state from {self.engine_state_file}")

        with open(self.engine_state_file) as f:
            state = json.load(f)

        save_notifier = self.notifier
        self.notifier = None
        for eid, uuid in state['engines'].items():
            heart = uuid.encode('ascii')

            self.incoming_registrations[heart] = EngineConnector(
                id=int(eid), uuid=uuid, ident=heart
            )
            self.finish_registration(heart)

        self.notifier = save_notifier

        self._idcounter = state['next_id']

    # -------------------------------------------------------------------------
    # Client Requests
    # -------------------------------------------------------------------------

    def shutdown_request(self, client_id, msg):
        """handle shutdown request."""
        self.session.send(
            self.query,
            'shutdown_reply',
            content={'status': 'ok'},
            ident=client_id,
            parent=msg,
        )
        # also notify other clients of shutdown
        self.session.send(
            self.notifier, 'shutdown_notification', content={'status': 'ok'}, parent=msg
        )
        self.loop.add_timeout(self.loop.time() + 1, self._shutdown)

    def _shutdown(self):
        self.log.info("hub::hub shutting down.")
        time.sleep(0.1)
        sys.exit(0)

    def check_load(self, client_id, msg):
        content = msg['content']
        try:
            targets = content['targets']
            targets = self._validate_targets(targets)
        except Exception:
            content = error.wrap_exception()
            self.session.send(
                self.query, "hub_error", content=content, ident=client_id, parent=msg
            )
            return

        content = dict(status='ok')
        # loads = {}
        for t in targets:
            content[bytes(t)] = len(self.queues[t]) + len(self.tasks[t])
        self.session.send(
            self.query, "load_reply", content=content, ident=client_id, parent=msg
        )

    def queue_status(self, client_id, msg):
        """Return the Queue status of one or more targets.

        If verbose, return the msg_ids, else return len of each type.

        Keys:

        * queue (pending MUX jobs)
        * tasks (pending Task jobs)
        * completed (finished jobs from both queues)
        """
        content = msg['content']
        targets = content['targets']
        try:
            targets = self._validate_targets(targets)
        except Exception:
            content = error.wrap_exception()
            self.session.send(
                self.query, "hub_error", content=content, ident=client_id, parent=msg
            )
            return
        verbose = content.get('verbose', False)
        content = dict(status='ok')
        for t in targets:
            queue = self.queues[t]
            completed = self.completed[t]
            tasks = self.tasks[t]
            if not verbose:
                queue = len(queue)
                completed = len(completed)
                tasks = len(tasks)
            content[str(t)] = {'queue': queue, 'completed': completed, 'tasks': tasks}
        content['unassigned'] = (
            list(self.unassigned) if verbose else len(self.unassigned)
        )
        # print (content)
        self.session.send(
            self.query, "queue_reply", content=content, ident=client_id, parent=msg
        )

    def purge_results(self, client_id, msg):
        """Purge results from memory. This method is more valuable before we move
        to a DB based message storage mechanism."""
        content = msg['content']
        self.log.info("Dropping records with %s", content)
        msg_ids = content.get('msg_ids', [])
        reply = dict(status='ok')
        if msg_ids == 'all':
            try:
                self.db.drop_matching_records(dict(completed={'$ne': None}))
            except Exception:
                reply = error.wrap_exception()
                self.log.exception("Error dropping records")
        else:
            pending = [m for m in msg_ids if (m in self.pending)]
            if pending:
                try:
                    raise IndexError(f"msg pending: {pending[0]!r}")
                except Exception:
                    reply = error.wrap_exception()
                    self.log.exception("Error dropping records")
            else:
                try:
                    self.db.drop_matching_records(dict(msg_id={'$in': msg_ids}))
                except Exception:
                    reply = error.wrap_exception()
                    self.log.exception("Error dropping records")

            if reply['status'] == 'ok':
                eids = content.get('engine_ids', [])
                for eid in eids:
                    if eid not in self.engines:
                        try:
                            raise IndexError(f"No such engine: {eid}")
                        except Exception:
                            reply = error.wrap_exception()
                            self.log.exception("Error dropping records")
                        break
                    uid = self.engines[eid].uuid
                    try:
                        self.db.drop_matching_records(
                            dict(engine_uuid=uid, completed={'$ne': None})
                        )
                    except Exception:
                        reply = error.wrap_exception()
                        self.log.exception("Error dropping records")
                        break

        self.session.send(
            self.query, 'purge_reply', content=reply, ident=client_id, parent=msg
        )

    def resubmit_task(self, client_id, msg):
        """Resubmit one or more tasks."""
        parent = msg

        def finish(reply):
            self.session.send(
                self.query,
                'resubmit_reply',
                content=reply,
                ident=client_id,
                parent=parent,
            )

        content = msg['content']
        msg_ids = content['msg_ids']
        reply = dict(status='ok')
        try:
            records = self.db.find_records(
                {'msg_id': {'$in': msg_ids}}, keys=['header', 'content', 'buffers']
            )
        except Exception:
            self.log.error('db::db error finding tasks to resubmit', exc_info=True)
            return finish(error.wrap_exception())

        # validate msg_ids
        found_ids = [rec['msg_id'] for rec in records]
        pending_ids = [msg_id for msg_id in found_ids if msg_id in self.pending]
        if len(records) > len(msg_ids):
            try:
                raise RuntimeError(
                    "DB appears to be in an inconsistent state."
                    "More matching records were found than should exist"
                )
            except Exception:
                self.log.exception("Failed to resubmit task")
                return finish(error.wrap_exception())
        elif len(records) < len(msg_ids):
            missing = [m for m in msg_ids if m not in found_ids]
            try:
                raise KeyError(f"No such msg(s): {missing!r}")
            except KeyError:
                self.log.exception("Failed to resubmit task")
                return finish(error.wrap_exception())
        elif pending_ids:
            pass
            # no need to raise on resubmit of pending task, now that we
            # resubmit under new ID, but do we want to raise anyway?
            # msg_id = invalid_ids[0]
            # try:
            #     raise ValueError("Task(s) %r appears to be inflight" % )
            # except Exception:
            #     return finish(error.wrap_exception())

        # mapping of original IDs to resubmitted IDs
        resubmitted = {}

        # send the messages
        for rec in records:
            header = rec['header']
            msg = self.session.msg(header['msg_type'], parent=header)
            msg_id = msg['msg_id']
            msg['content'] = rec['content']

            # use the old header, but update msg_id and timestamp
            fresh = msg['header']
            header['msg_id'] = fresh['msg_id']
            header['date'] = fresh['date']
            msg['header'] = header

            self.session.send(self.resubmit, msg, buffers=rec['buffers'])

            resubmitted[rec['msg_id']] = msg_id
            self.pending.add(msg_id)
            msg['buffers'] = rec['buffers']
            try:
                self.db.add_record(msg_id, init_record(msg))
            except Exception:
                self.log.error(
                    "db::DB Error updating record: %s", msg_id, exc_info=True
                )
                return finish(error.wrap_exception())

        finish(dict(status='ok', resubmitted=resubmitted))

        # store the new IDs in the Task DB
        for msg_id, resubmit_id in resubmitted.items():
            try:
                self.db.update_record(msg_id, {'resubmitted': resubmit_id})
            except Exception:
                self.log.error(
                    "db::DB Error updating record: %s", msg_id, exc_info=True
                )

    def _extract_record(self, rec):
        """decompose a TaskRecord dict into subsection of reply for get_result"""
        io_dict = {}
        for key in ('execute_input', 'execute_result', 'error', 'stdout', 'stderr'):
            io_dict[key] = rec[key]
        content = {
            'header': rec['header'],
            'metadata': rec['metadata'],
            'result_metadata': rec['result_metadata'],
            'result_header': rec['result_header'],
            'result_content': rec['result_content'],
            'received': rec['received'],
            'io': io_dict,
        }
        if rec['result_buffers']:
            buffers = list(rec['result_buffers'])
        else:
            buffers = []

        return content, buffers

    def get_results(self, client_id, msg):
        """Get the result of 1 or more messages."""
        content = msg['content']
        msg_ids = sorted(set(content['msg_ids']))
        statusonly = content.get('status_only', False)
        pending = []
        completed = []
        content = dict(status='ok')
        content['pending'] = pending
        content['completed'] = completed
        buffers = []
        if not statusonly:
            try:
                matches = self.db.find_records(dict(msg_id={'$in': msg_ids}))
                # turn match list into dict, for faster lookup
                records = {}
                for rec in matches:
                    records[rec['msg_id']] = rec
            except Exception:
                content = error.wrap_exception()
                self.log.exception("Failed to get results")
                self.session.send(
                    self.query,
                    "result_reply",
                    content=content,
                    parent=msg,
                    ident=client_id,
                )
                return
        else:
            records = {}
        for msg_id in msg_ids:
            if msg_id in self.pending:
                pending.append(msg_id)
            elif msg_id in self.all_completed:
                completed.append(msg_id)
                if not statusonly:
                    c, bufs = self._extract_record(records[msg_id])
                    content[msg_id] = c
                    buffers.extend(bufs)
            elif msg_id in records:
                if rec['completed']:
                    completed.append(msg_id)
                    c, bufs = self._extract_record(records[msg_id])
                    content[msg_id] = c
                    buffers.extend(bufs)
                else:
                    pending.append(msg_id)
            else:
                try:
                    raise KeyError('No such message: ' + msg_id)
                except Exception:
                    content = error.wrap_exception()
                break
        self.session.send(
            self.query,
            "result_reply",
            content=content,
            parent=msg,
            ident=client_id,
            buffers=buffers,
        )

    def get_history(self, client_id, msg):
        """Get a list of all msg_ids in our DB records"""
        try:
            msg_ids = self.db.get_history()
        except Exception as e:
            content = error.wrap_exception()
            self.log.exception("Failed to get history")
        else:
            content = dict(status='ok', history=msg_ids)

        self.session.send(
            self.query, "history_reply", content=content, parent=msg, ident=client_id
        )

    def db_query(self, client_id, msg):
        """Perform a raw query on the task record database."""
        content = msg['content']
        query = extract_dates(content.get('query', {}))
        keys = content.get('keys', None)
        buffers = []
        empty = list()
        try:
            records = self.db.find_records(query, keys)
        except Exception as e:
            content = error.wrap_exception()
            self.log.exception("DB query failed")
        else:
            # extract buffers from reply content:
            if keys is not None:
                buffer_lens = [] if 'buffers' in keys else None
                result_buffer_lens = [] if 'result_buffers' in keys else None
            else:
                buffer_lens = None
                result_buffer_lens = None

            for rec in records:
                # buffers may be None, so double check
                b = rec.pop('buffers', empty) or empty
                if buffer_lens is not None:
                    buffer_lens.append(len(b))
                    buffers.extend(b)
                rb = rec.pop('result_buffers', empty) or empty
                if result_buffer_lens is not None:
                    result_buffer_lens.append(len(rb))
                    buffers.extend(rb)
            content = dict(
                status='ok',
                records=records,
                buffer_lens=buffer_lens,
                result_buffer_lens=result_buffer_lens,
            )
        # self.log.debug (content)
        self.session.send(
            self.query,
            "db_reply",
            content=content,
            parent=msg,
            ident=client_id,
            buffers=buffers,
        )

    async def become_dask(self, client_id, msg):
        """Start a dask.distributed Scheduler."""
        if self.distributed_scheduler is None:
            kwargs = msg['content'].get('scheduler_args', {})
            self.log.info("Becoming dask.distributed scheduler: %s", kwargs)
            from distributed import Scheduler

            self.distributed_scheduler = scheduler = Scheduler(**kwargs)
            await scheduler.start()
        content = {
            'status': 'ok',
            'ip': self.distributed_scheduler.ip,
            'address': self.distributed_scheduler.address,
            'port': self.distributed_scheduler.port,
        }
        self.log.info(
            "dask.distributed scheduler running at {address}".format(**content)
        )
        self.session.send(
            self.query,
            "become_dask_reply",
            content=content,
            parent=msg,
            ident=client_id,
        )

    def stop_distributed(self, client_id, msg):
        """Start a dask.distributed Scheduler."""
        if self.distributed_scheduler is not None:
            self.log.info("Stopping dask.distributed scheduler")
            self.distributed_scheduler.close()
            self.distributed_scheduler = None
        else:
            self.log.info("No dask.distributed scheduler running.")
        content = {'status': 'ok'}
        self.session.send(
            self.query,
            "stop_distributed_reply",
            content=content,
            parent=msg,
            ident=client_id,
        )
ipython-ipyparallel-14e3c43/ipyparallel/controller/mongodb.py000066400000000000000000000134741520071063500245600ustar00rootroot00000000000000"""A TaskRecord backend using mongodb"""

try:
    from pymongo import MongoClient, version
except ImportError:
    from pymongo import Connection as MongoClient

# bson.Binary import moved
try:
    from bson.binary import Binary
except ImportError:
    from bson import Binary

import fnmatch

from bson.codec_options import CodecOptions
from traitlets import Dict, Instance, List, Unicode

from .dictdb import BaseDB

# -----------------------------------------------------------------------------
# MongoDB class
# -----------------------------------------------------------------------------


class MongoDB(BaseDB):
    """MongoDB TaskRecord backend."""

    connection_args = List(
        config=True,
        help="""Positional arguments to be passed to pymongo.MongoClient.  Only
        necessary if the default mongodb configuration does not point to your
        mongod instance.""",
    )
    connection_kwargs = Dict(
        config=True,
        help="""Keyword arguments to be passed to pymongo.MongoClient.  Only
        necessary if the default mongodb configuration does not point to your
        mongod instance.""",
    )
    database = Unicode(
        "ipython-tasks",
        config=True,
        help="""The MongoDB database name to use for storing tasks for this session. If unspecified,
        a new database will be created with the Hub's IDENT.  Specifying the database will result
        in tasks from previous sessions being available via Clients' db_query and
        get_result methods.""",
    )

    _connection = Instance(MongoClient, allow_none=True)  # pymongo connection

    def __init__(self, **kwargs):
        super().__init__(**kwargs)

        # make sure that pymongo version is at least 4.x because of API changes. see
        # https://pymongo.readthedocs.io/en/stable/migrate-to-pymongo4.html
        # for more details
        pymongo_version_major = int(version.split('.')[0])
        if pymongo_version_major < 4:
            raise Exception(
                f"pymongo package too old (current version={version}). Please update to version 4.0 or higher"
            )

        if self._connection is None:
            self._connection = MongoClient(
                *self.connection_args, **self.connection_kwargs
            )
        if not self.database:
            self.database = self.session
        options = CodecOptions(tz_aware=True)
        self._db = self._connection[self.database]
        self._records = self._db.get_collection("task_records", options)
        # self._records = self._db['task_records']
        self._records.create_index('msg_id', unique=True)
        self._records.create_index('submitted')  # for sorting history
        # for rec in self._records.find

    def _binary_buffers(self, rec):
        for key in ('buffers', 'result_buffers'):
            if rec.get(key, None):
                rec[key] = list(map(Binary, rec[key]))
        return rec

    def add_record(self, msg_id, rec):
        """Add a new Task Record, by msg_id."""
        # print rec
        rec = self._binary_buffers(rec)
        self._records.insert_one(rec)

    def get_record(self, msg_id):
        """Get a specific Task Record, by msg_id."""
        r = self._records.find_one({'msg_id': msg_id})
        if not r:
            # r will be '' if nothing is found
            raise KeyError(msg_id)
        return r

    def update_record(self, msg_id, rec):
        """Update the data in an existing record."""
        rec = self._binary_buffers(rec)

        self._records.update_one({'msg_id': msg_id}, {'$set': rec})

    def drop_matching_records(self, check):
        """Remove a record from the DB."""
        self._records.delete_many(check)

    def drop_record(self, msg_id):
        """Remove a record from the DB."""
        self._records.delete_many({'msg_id': msg_id})

    def _translate(self, filter):
        """translates $glob to $regex operators"""
        if isinstance(filter, list):
            ret = []
            for f in filter:
                ret.append(self._translate(f))
            return ret
        elif isinstance(filter, dict):
            ret = dict()
            if "$glob" in filter:
                params = dict(filter)
                glob = params.pop("$glob")
                if len(params) != 0:
                    raise Exception(
                        f"unkown paramters {params.keys()} for %glob operator"
                    )
                # we need to attach the start and end match character to achieve
                # an equivalent matching behavior to fnmatch in mongoDB
                ret["$regex"] = "^" + fnmatch.translate(glob) + "$"
            else:
                for key, value in filter.items():
                    if isinstance(value, dict):
                        ret[key] = self._translate(value)
                    elif isinstance(value, list):
                        ret[key] = self._translate(value)
                    else:
                        ret[key] = value
            return ret
        else:
            return filter

    def find_records(self, check, keys=None):
        """Find records matching a query dict, optionally extracting subset of keys.

        Returns list of matching records.

        Parameters
        ----------
        check : dict
            mongodb-style query argument
        keys : list of strs [optional]
            if specified, the subset of keys to extract.  msg_id will *always* be
            included.
        """
        if keys and 'msg_id' not in keys:
            keys.append('msg_id')
        matches = list(self._records.find(self._translate(check), keys))
        for rec in matches:
            rec.pop('_id')
        return matches

    def get_history(self):
        """get all msg_ids, ordered by time submitted."""
        cursor = self._records.find({}, {'msg_id': 1}).sort('submitted')
        return [rec['msg_id'] for rec in cursor]
ipython-ipyparallel-14e3c43/ipyparallel/controller/scheduler.py000066400000000000000000000150331520071063500251020ustar00rootroot00000000000000"""The Python scheduler for rich scheduling.

The Pure ZMQ scheduler does not allow routing schemes other than LRU,
nor does it check msg_id DAG dependencies. For those, a slightly slower
Python Scheduler exists.
"""

# Copyright (c) IPython Development Team.
# Distributed under the terms of the Modified BSD License.
import logging

import jupyter_client.session
import traitlets.log
import zmq
from decorator import decorator
from tornado import ioloop
from traitlets import Bytes, Instance, Set, default
from traitlets.config import Config, LoggingConfigurable
from zmq.eventloop import zmqstream

from ipyparallel import util
from ipyparallel.util import connect_logger, local_logger

# local imports

# performance optimization: skip unused date deserialization
jupyter_client.session.extract_dates = lambda obj: obj


@decorator
def logged(f, self, *args, **kwargs):
    # print ("#--------------------")
    self.log.debug("scheduler::%s(*%s,**%s)", f.__name__, args, kwargs)
    # print ("#--")
    return f(self, *args, **kwargs)


class Scheduler(LoggingConfigurable):
    loop = Instance(ioloop.IOLoop)

    @default("loop")
    def _default_loop(self):
        return ioloop.IOLoop.current()

    session = Instance(jupyter_client.session.Session)

    @default("session")
    def _default_session(self):
        util._disable_session_extract_dates()
        return jupyter_client.session.Session(parent=self)

    client_stream = Instance(
        zmqstream.ZMQStream, allow_none=True
    )  # client-facing stream
    engine_stream = Instance(
        zmqstream.ZMQStream, allow_none=True
    )  # engine-facing stream
    notifier_stream = Instance(
        zmqstream.ZMQStream, allow_none=True
    )  # hub-facing sub stream
    mon_stream = Instance(zmqstream.ZMQStream, allow_none=True)  # hub-facing pub stream
    query_stream = Instance(
        zmqstream.ZMQStream, allow_none=True
    )  # hub-facing DEALER stream

    all_completed = Set()  # set of all completed tasks
    all_failed = Set()  # set of all failed tasks
    all_done = Set()  # set of all finished tasks=union(completed,failed)
    all_ids = Set()  # set of all submitted task IDs

    ident = Bytes()  # ZMQ identity. This should just be self.session.session as bytes

    # but ensure Bytes
    @default("ident")
    def _ident_default(self):
        return self.session.bsession

    def start(self):
        self.engine_stream.on_recv(self.dispatch_result, copy=False)
        self.client_stream.on_recv(self.dispatch_submission, copy=False)

    def resume_receiving(self):
        """Resume accepting jobs."""
        self.client_stream.on_recv(self.dispatch_submission, copy=False)

    def stop_receiving(self):
        """Stop accepting jobs while there are no engines.
        Leave them in the ZMQ queue."""
        self.client_stream.on_recv(None)

    def dispatch_result(self, raw_msg):
        raise NotImplementedError("Implement in subclasses")

    def dispatch_submission(self, raw_msg):
        raise NotImplementedError("Implement in subclasses")

    def append_new_msg_id_to_msg(self, new_id, target_id, idents, msg):
        if isinstance(target_id, str):
            target_id = target_id.encode("utf8")
        new_idents = [target_id] + idents
        msg['header']['msg_id'] = new_id
        new_msg_list = self.session.serialize(msg, ident=new_idents)
        new_msg_list.extend(msg['buffers'])
        return new_msg_list

    def get_new_msg_id(self, original_msg_id, outgoing_id):
        return f'{original_msg_id}_{outgoing_id if isinstance(outgoing_id, str) else outgoing_id.decode("utf8")}'


ZMQStream = zmqstream.ZMQStream


def get_common_scheduler_streams(
    mon_addr,
    not_addr,
    reg_addr,
    config,
    logname,
    log_url,
    loglevel,
    in_thread,
    curve_serverkey,
    curve_publickey,
    curve_secretkey,
):
    if config:
        # unwrap dict back into Config
        config = Config(config)

    if in_thread:
        # use instance() to get the same Context/Loop as our parent
        ctx = zmq.Context.instance()
        loop = ioloop.IOLoop.current()
    else:
        # in a process, don't use instance()
        # for safety with multiprocessing
        ctx = zmq.Context()
        loop = ioloop.IOLoop(make_current=False)

    def connect(s, addr):
        return util.connect(
            s,
            addr,
            curve_serverkey=curve_serverkey,
            curve_secretkey=curve_secretkey,
            curve_publickey=curve_publickey,
        )

    mons = zmqstream.ZMQStream(ctx.socket(zmq.PUB), loop)
    connect(mons, mon_addr)
    nots = zmqstream.ZMQStream(ctx.socket(zmq.SUB), loop)
    nots.setsockopt(zmq.SUBSCRIBE, b'')
    connect(nots, not_addr)

    querys = ZMQStream(ctx.socket(zmq.DEALER), loop)
    connect(querys, reg_addr)

    # setup logging.
    if in_thread:
        log = traitlets.log.get_logger()
    else:
        if log_url:
            log = connect_logger(
                logname, ctx, log_url, root="scheduler", loglevel=loglevel
            )
        else:
            log = local_logger(logname, loglevel)
    return config, ctx, loop, mons, nots, querys, log


def launch_scheduler(
    scheduler_class,
    in_addr,
    out_addr,
    mon_addr,
    not_addr,
    reg_addr,
    config=None,
    logname='root',
    log_url=None,
    loglevel=logging.DEBUG,
    identity=None,
    in_thread=False,
    curve_secretkey=None,
    curve_publickey=None,
):
    config, ctx, loop, mons, nots, querys, log = get_common_scheduler_streams(
        mon_addr,
        not_addr,
        reg_addr,
        config,
        logname,
        log_url,
        loglevel,
        in_thread,
        curve_serverkey=curve_publickey,
        curve_publickey=curve_publickey,
        curve_secretkey=curve_secretkey,
    )

    util.set_hwm(mons, 0)
    ins = ZMQStream(ctx.socket(zmq.ROUTER), loop)
    util.set_hwm(ins, 0)
    if identity:
        ins.setsockopt(zmq.IDENTITY, identity + b'_in')

    util.bind(ins, in_addr, curve_secretkey=curve_secretkey)

    outs = ZMQStream(ctx.socket(zmq.ROUTER), loop)
    util.set_hwm(outs, 0)

    if identity:
        outs.setsockopt(zmq.IDENTITY, identity + b'_out')
    util.bind(outs, out_addr, curve_secretkey=curve_secretkey)

    scheduler = scheduler_class(
        client_stream=ins,
        engine_stream=outs,
        mon_stream=mons,
        notifier_stream=nots,
        query_stream=querys,
        loop=loop,
        log=log,
        config=config,
    )

    scheduler.start()
    if not in_thread:
        try:
            loop.start()
        except KeyboardInterrupt:
            scheduler.log.critical("Interrupted, exiting...")
ipython-ipyparallel-14e3c43/ipyparallel/controller/sqlitedb.py000066400000000000000000000347771520071063500247530ustar00rootroot00000000000000"""A TaskRecord backend using sqlite3"""

# Copyright (c) IPython Development Team.
# Distributed under the terms of the Modified BSD License.
import json
import os

try:
    import cPickle as pickle
except ImportError:
    import pickle

from datetime import datetime

try:
    import sqlite3
except ImportError:
    sqlite3 = None

from dateutil.parser import parse as dateutil_parse

try:
    from jupyter_client.jsonutil import json_default
except ImportError:
    from jupyter_client.jsonutil import date_default as json_default

from tornado import ioloop
from traitlets import Dict, Instance, List, Unicode

from ..util import ensure_timezone, extract_dates
from .dictdb import BaseDB

# -----------------------------------------------------------------------------
# SQLite operators, adapters, and converters
# -----------------------------------------------------------------------------

operators = {
    '$lt': "<",
    '$gt': ">",
    # null is handled weird with ==,!=
    '$eq': "=",
    '$ne': "!=",
    '$lte': "<=",
    '$gte': ">=",
    '$in': ('=', ' OR '),
    '$nin': ('!=', ' AND '),
    # '$all': None,
    # '$mod': None,
    # '$exists' : None
    '$glob': "GLOB",
}
null_operators = {
    '=': "IS NULL",
    '!=': "IS NOT NULL",
}


def _adapt_dict(d):
    return json.dumps(d, default=json_default)


def _convert_dict(ds):
    if ds is None:
        return ds
    else:
        if isinstance(ds, bytes):
            # If I understand the sqlite doc correctly, this will always be utf8
            ds = ds.decode('utf8')
        return extract_dates(json.loads(ds))


def _adapt_bufs(bufs):
    # this is *horrible*
    # copy buffers into single list and pickle it:
    if bufs and isinstance(bufs[0], (bytes, memoryview)):
        return sqlite3.Binary(
            pickle.dumps([memoryview(buf).tobytes() for buf in bufs], -1)
        )
    elif bufs:
        return bufs
    else:
        return None


def _convert_bufs(bs):
    if bs is None:
        return []
    else:
        return pickle.loads(bytes(bs))


def _adapt_timestamp(dt):
    """Adapt datetime to text"""
    return ensure_timezone(dt).isoformat()


def _convert_timestamp(s):
    """Adapt text timestamp to datetime"""
    return ensure_timezone(dateutil_parse(s))


# -----------------------------------------------------------------------------
# SQLiteDB class
# -----------------------------------------------------------------------------


class SQLiteDB(BaseDB):
    """SQLite3 TaskRecord backend."""

    filename = Unicode(
        'tasks.db',
        config=True,
        help="""The filename of the sqlite task database. [default: 'tasks.db']""",
    )
    location = Unicode(
        '',
        config=True,
        help="""The directory containing the sqlite task database.  The default
        is to use the cluster_dir location.""",
    )
    table = Unicode(
        "ipython-tasks",
        config=True,
        help="""The SQLite Table to use for storing tasks for this session. If unspecified,
        a new table will be created with the Hub's IDENT.  Specifying the table will result
        in tasks from previous sessions being available via Clients' db_query and
        get_result methods.""",
    )

    if sqlite3 is not None:
        _db = Instance('sqlite3.Connection', allow_none=True)
    else:
        _db = None
    # the ordered list of column names
    _keys = List(
        [
            'msg_id',
            'header',
            'metadata',
            'content',
            'buffers',
            'submitted',
            'client_uuid',
            'engine_uuid',
            'started',
            'completed',
            'resubmitted',
            'received',
            'result_header',
            'result_metadata',
            'result_content',
            'result_buffers',
            'queue',
            'execute_input',
            'execute_result',
            'error',
            'stdout',
            'stderr',
            'label',
        ]
    )
    # sqlite datatypes for checking that db is current format
    _types = Dict(
        {
            'msg_id': 'text',
            'header': 'dict text',
            'metadata': 'dict text',
            'content': 'dict text',
            'buffers': 'bufs blob',
            'submitted': 'timestamp',
            'client_uuid': 'text',
            'engine_uuid': 'text',
            'started': 'timestamp',
            'completed': 'timestamp',
            'resubmitted': 'text',
            'received': 'timestamp',
            'result_header': 'dict text',
            'result_metadata': 'dict text',
            'result_content': 'dict text',
            'result_buffers': 'bufs blob',
            'queue': 'text',
            'execute_input': 'text',
            'execute_result': 'text',
            'error': 'text',
            'stdout': 'text',
            'stderr': 'text',
            'label': 'text',
        }
    )

    def __init__(self, **kwargs):
        super().__init__(**kwargs)
        if sqlite3 is None:
            raise ImportError("SQLiteDB requires sqlite3")
        if not self.table:
            # use session, and prefix _, since starting with # is illegal
            self.table = '_' + self.session.replace('-', '_')
        if not self.location:
            # get current profile
            from IPython.core.application import BaseIPythonApplication

            if BaseIPythonApplication.initialized():
                app = BaseIPythonApplication.instance()
                if app.profile_dir is not None:
                    self.location = app.profile_dir.location
                else:
                    self.location = '.'
            else:
                self.location = '.'
        self._init_db()

        # register db commit as 2s periodic callback
        # to prevent clogging pipes
        # assumes we are being run in a zmq ioloop app
        self._commit_callback = pc = ioloop.PeriodicCallback(self._db.commit, 2000)
        pc.start()

    def close(self):
        self._commit_callback.stop()
        self._db.commit()
        self._db.close()

    def _defaults(self, keys=None):
        """create an empty record"""
        d = {}
        keys = self._keys if keys is None else keys
        for key in keys:
            d[key] = None
        return d

    def _check_table(self):
        """Ensure that an incorrect table doesn't exist

        If a bad (old) table does exist, return False
        """
        cursor = self._db.execute(f"PRAGMA table_info('{self.table}')")
        lines = cursor.fetchall()
        if not lines:
            # table does not exist
            return True
        types = {}
        keys = []
        for line in lines:
            keys.append(line[1])
            types[line[1]] = line[2]
        if self._keys != keys:
            # key mismatch
            self.log.warning('keys mismatch')
            return False
        for key in self._keys:
            if types[key] != self._types[key]:
                self.log.warning(
                    f'type mismatch: {key}: {types[key]} != {self._types[key]}'
                )
                return False
        return True

    def _init_db(self):
        """Connect to the database and get new session number."""
        # register adapters
        sqlite3.register_adapter(dict, _adapt_dict)
        sqlite3.register_converter('dict', _convert_dict)
        sqlite3.register_adapter(list, _adapt_bufs)
        sqlite3.register_converter('bufs', _convert_bufs)
        sqlite3.register_adapter(datetime, _adapt_timestamp)
        sqlite3.register_converter('timestamp', _convert_timestamp)
        # connect to the db
        dbfile = os.path.join(self.location, self.filename)
        self._db = sqlite3.connect(
            dbfile,
            detect_types=sqlite3.PARSE_DECLTYPES,
            # isolation_level = None)#,
            cached_statements=64,
        )
        # print dir(self._db)
        first_table = previous_table = self.table
        i = 0
        while not self._check_table():
            i += 1
            self.table = f"{first_table}_{i}"
            self.log.warning(
                f"Table {previous_table} exists and doesn't match db format, trying {self.table}"
            )
            previous_table = self.table

        self._db.execute(
            f"""CREATE TABLE IF NOT EXISTS '{self.table}'
                (msg_id text PRIMARY KEY,
                header dict text,
                metadata dict text,
                content dict text,
                buffers bufs blob,
                submitted timestamp,
                client_uuid text,
                engine_uuid text,
                started timestamp,
                completed timestamp,
                resubmitted text,
                received timestamp,
                result_header dict text,
                result_metadata dict text,
                result_content dict text,
                result_buffers bufs blob,
                queue text,
                execute_input text,
                execute_result text,
                error text,
                stdout text,
                stderr text,
                label text)
                """
        )
        self._db.commit()

    def _dict_to_list(self, d):
        """turn a mongodb-style record dict into a list."""

        return [d[key] for key in self._keys]

    def _list_to_dict(self, line, keys=None):
        """Inverse of dict_to_list"""
        keys = self._keys if keys is None else keys
        d = self._defaults(keys)
        for key, value in zip(keys, line):
            d[key] = value

        return d

    def _render_expression(self, check):
        """Turn a mongodb-style search dict into an SQL query."""
        expressions = []
        args = []

        skeys = set(check.keys())
        skeys.difference_update(set(self._keys))
        skeys.difference_update({'buffers', 'result_buffers'})
        if skeys:
            raise KeyError(f"Illegal testing key(s): {skeys}")

        for name, sub_check in check.items():
            if isinstance(sub_check, dict):
                for test, value in sub_check.items():
                    try:
                        op = operators[test]
                    except KeyError:
                        raise KeyError(f"Unsupported operator: {test!r}")
                    if isinstance(op, tuple):
                        op, join = op

                    if value is None and op in null_operators:
                        expr = f"{name} {null_operators[op]}"
                    else:
                        expr = f"{name} {op} ?"
                        if isinstance(value, (tuple, list)):
                            if op in null_operators and any([v is None for v in value]):
                                # equality tests don't work with NULL
                                raise ValueError(
                                    f"Cannot use {test!r} test with NULL values on SQLite backend"
                                )
                            expr = f'( {join.join([expr] * len(value))} )'
                            args.extend(value)
                        else:
                            args.append(value)
                    expressions.append(expr)
            else:
                # it's an equality check
                if sub_check is None:
                    expressions.append(f"{name} IS NULL")
                else:
                    expressions.append(f"{name} = ?")
                    args.append(sub_check)

        expr = " AND ".join(expressions)
        return expr, args

    def add_record(self, msg_id, rec):
        """Add a new Task Record, by msg_id."""
        d = self._defaults()
        d.update(rec)
        d['msg_id'] = msg_id
        line = self._dict_to_list(d)
        tups = '({})'.format(','.join(['?'] * len(line)))
        self._db.execute(f"INSERT INTO '{self.table}' VALUES {tups}", line)
        # self._db.commit()

    def get_record(self, msg_id):
        """Get a specific Task Record, by msg_id."""
        cursor = self._db.execute(
            f"""SELECT * FROM '{self.table}' WHERE msg_id==?""", (msg_id,)
        )
        line = cursor.fetchone()
        if line is None:
            raise KeyError(f"No such msg: {msg_id!r}")
        return self._list_to_dict(line)

    def update_record(self, msg_id, rec):
        """Update the data in an existing record."""
        query = f"UPDATE '{self.table}' SET "
        sets = []
        keys = sorted(rec.keys())
        values = []
        for key in keys:
            sets.append(f'{key} = ?')
            values.append(rec[key])
        query += ', '.join(sets)
        query += ' WHERE msg_id == ?'
        values.append(msg_id)
        self._db.execute(query, values)
        # self._db.commit()

    def drop_record(self, msg_id):
        """Remove a record from the DB."""
        self._db.execute(f"""DELETE FROM '{self.table}' WHERE msg_id==?""", (msg_id,))
        # self._db.commit()

    def drop_matching_records(self, check):
        """Remove a record from the DB."""
        expr, args = self._render_expression(check)
        query = f"DELETE FROM '{self.table}' WHERE {expr}"
        self._db.execute(query, args)
        # self._db.commit()

    def find_records(self, check, keys=None):
        """Find records matching a query dict, optionally extracting subset of keys.

        Returns list of matching records.

        Parameters
        ----------
        check : dict
            mongodb-style query argument
        keys : list of strs [optional]
            if specified, the subset of keys to extract.  msg_id will *always* be
            included.
        """
        if keys:
            bad_keys = [key for key in keys if key not in self._keys]
            if bad_keys:
                raise KeyError(f"Bad record key(s): {bad_keys}")

        if keys:
            # ensure msg_id is present and first:
            if 'msg_id' in keys:
                keys.remove('msg_id')
            keys.insert(0, 'msg_id')
            req = ', '.join(keys)
        else:
            req = '*'
        expr, args = self._render_expression(check)
        query = f"""SELECT {req} FROM '{self.table}' WHERE {expr}"""
        cursor = self._db.execute(query, args)
        matches = cursor.fetchall()
        records = []
        for line in matches:
            rec = self._list_to_dict(line, keys)
            records.append(rec)
        return records

    def get_history(self):
        """get all msg_ids, ordered by time submitted."""
        query = f"""SELECT msg_id FROM '{self.table}' ORDER by submitted ASC"""
        cursor = self._db.execute(query)
        # will be a list of length 1 tuples
        return [tup[0] for tup in cursor.fetchall()]


__all__ = ['SQLiteDB']
ipython-ipyparallel-14e3c43/ipyparallel/controller/task_scheduler.py000066400000000000000000000650311520071063500261270ustar00rootroot00000000000000import time
from collections import deque
from random import randint, random
from types import FunctionType

import zmq
from traitlets import Dict, Enum, Instance, Integer, List, observe

from ipyparallel import Dependency, error, util
from ipyparallel.controller.scheduler import Scheduler

try:
    import numpy
except ImportError:
    numpy = None

# ----------------------------------------------------------------------
# Chooser functions
# ----------------------------------------------------------------------


def plainrandom(loads):
    """Plain random pick."""
    n = len(loads)
    return randint(0, n - 1)


def lru(loads):
    """Always pick the front of the line.

    The content of `loads` is ignored.

    Assumes LRU ordering of loads, with oldest first.
    """
    return 0


def twobin(loads):
    """Pick two at random, use the LRU of the two.

    The content of loads is ignored.

    Assumes LRU ordering of loads, with oldest first.
    """
    n = len(loads)
    a = randint(0, n - 1)
    b = randint(0, n - 1)
    return min(a, b)


def weighted(loads):
    """Pick two at random using inverse load as weight.

    Return the less loaded of the two.
    """
    # weight 0 a million times more than 1:
    weights = 1.0 / (1e-6 + numpy.array(loads))
    sums = weights.cumsum()
    t = sums[-1]
    x = random() * t
    y = random() * t
    idx = 0
    idy = 0
    while sums[idx] < x:
        idx += 1
    while sums[idy] < y:
        idy += 1
    if weights[idy] > weights[idx]:
        return idy
    else:
        return idx


def leastload(loads):
    """Always choose the lowest load.

    If the lowest load occurs more than once, the first
    occurance will be used.  If loads has LRU ordering, this means
    the LRU of those with the lowest load is chosen.
    """
    return loads.index(min(loads))


# ---------------------------------------------------------------------
# Classes
# ---------------------------------------------------------------------

# store empty default dependency:
MET = Dependency([])


class Job:
    """Simple container for a job"""

    def __init__(
        self,
        msg_id,
        raw_msg,
        idents,
        msg,
        header,
        metadata,
        targets,
        after,
        follow,
        timeout,
    ):
        self.msg_id = msg_id
        self.raw_msg = raw_msg
        self.idents = idents
        self.msg = msg
        self.header = header
        self.metadata = metadata
        self.targets = targets
        self.after = after
        self.follow = follow
        self.timeout = timeout

        self.removed = False  # used for lazy-delete from sorted queue
        self.timestamp = time.time()
        self.timeout_id = 0
        self.blacklist = set()

    def __lt__(self, other):
        return self.timestamp < other.timestamp

    @property
    def dependents(self):
        return self.follow.union(self.after)


class TaskScheduler(Scheduler):
    """Python TaskScheduler object.

    This is the simplest object that supports msg_id based
    DAG dependencies. *Only* task msg_ids are checked, not
    msg_ids of jobs submitted via the MUX queue.

    """

    hwm = Integer(
        1,
        config=True,
        help="""specify the High Water Mark (HWM) for the downstream
        socket in the Task scheduler. This is the maximum number
        of allowed outstanding tasks on each engine.

        The default (1) means that only one task can be outstanding on each
        engine.  Setting TaskScheduler.hwm=0 means there is no limit, and the
        engines continue to be assigned tasks while they are working,
        effectively hiding network latency behind computation, but can result
        in an imbalance of work when submitting many heterogenous tasks all at
        once.  Any positive value greater than one is a compromise between the
        two.

        """,
    )

    scheme_name = Enum(
        ('leastload', 'pure', 'lru', 'plainrandom', 'weighted', 'twobin'),
        'leastload',
        config=True,
        help="""select the task scheduler scheme  [default: Python LRU]
            Options are: 'pure', 'lru', 'plainrandom', 'weighted', 'twobin','leastload'""",
    )

    # input arguments:
    scheme = Instance(FunctionType)  # function for determining the destination

    @observe('scheme_name')
    def _scheme_name_changed(self, change):
        self.log.debug("Using scheme {!r}".format(change['new']))
        self.scheme = globals()[change['new']]

    # input arguments:
    scheme = Instance(FunctionType)  # function for determining the destination

    def _scheme_default(self):
        return leastload

    # internals:
    queue = Instance(deque)  # sorted list of Jobs

    def _queue_default(self):
        return deque()

    queue_map = Dict()  # dict by msg_id of Jobs (for O(1) access to the Queue)
    graph = Dict()  # dict by msg_id of [ msg_ids that depend on key ]
    retries = Dict()  # dict by msg_id of retries remaining (non-neg ints)
    # waiting = List() # list of msg_ids ready to run, but haven't due to HWM
    pending = Dict()  # dict by engine_uuid of submitted tasks
    completed = Dict()  # dict by engine_uuid of completed tasks
    failed = Dict()  # dict by engine_uuid of failed tasks
    destinations = (
        Dict()
    )  # dict by msg_id of engine_uuids where jobs ran (reverse of completed+failed)
    clients = Dict()  # dict by msg_id for who submitted the task
    targets = List()  # list of target IDENTs
    loads = List()  # list of engine loads
    # full = Set() # set of IDENTs that have HWM outstanding tasks

    def start(self):
        super().start()
        self.query_stream.on_recv(self.dispatch_query_reply)
        self.session.send(self.query_stream, "connection_request", {})
        self._notification_handlers = dict(
            registration_notification=self._register_engine,
            unregistration_notification=self._unregister_engine,
        )
        self.log.info(f"Task scheduler started [{self.scheme_name}]")
        self.notifier_stream.on_recv(self.dispatch_notification)

    # -----------------------------------------------------------------------
    # [Un]Registration Handling
    # -----------------------------------------------------------------------

    def dispatch_query_reply(self, msg):
        """handle reply to our initial connection request"""
        try:
            idents, msg = self.session.feed_identities(msg)
        except ValueError:
            self.log.warning("task::Invalid Message: %r", msg)
            return
        try:
            msg = self.session.deserialize(msg)
        except ValueError:
            self.log.warning(f"task::Unauthorized message from: {idents!r}")
            return

        content = msg['content']
        for uuid in content.get('engines', {}).values():
            self._register_engine(uuid.encode("utf8"))

    @util.log_errors
    def dispatch_notification(self, msg):
        """dispatch register/unregister events."""
        try:
            idents, msg = self.session.feed_identities(msg)
        except ValueError:
            self.log.warning("task::Invalid Message: %r", msg)
            return
        try:
            msg = self.session.deserialize(msg)
        except ValueError:
            self.log.warning(f"task::Unauthorized message from: {idents!r}")
            return

        msg_type = msg['header']['msg_type']

        handler = self._notification_handlers.get(msg_type, None)
        if handler is None:
            self.log.error(f"Unhandled message type: {msg_type!r}")
        else:
            try:
                handler(msg['content']['uuid'].encode("utf8"))
            except Exception:
                self.log.error("task::Invalid notification msg: %r", msg, exc_info=True)

    def _register_engine(self, uid):
        """New engine with ident `uid` became available."""
        # head of the line:
        self.targets.insert(0, uid)
        self.loads.insert(0, 0)

        # initialize sets
        self.completed[uid] = set()
        self.failed[uid] = set()
        self.pending[uid] = {}

        # rescan the graph:
        self.update_graph(None)

    def _unregister_engine(self, uid):
        """Existing engine with ident `uid` became unavailable."""
        if len(self.targets) == 1:
            # this was our only engine
            pass

        # handle any potentially finished tasks:
        self.engine_stream.flush()

        # don't pop destinations, because they might be used later
        # map(self.destinations.pop, self.completed.pop(uid))
        # map(self.destinations.pop, self.failed.pop(uid))

        # prevent this engine from receiving work
        idx = self.targets.index(uid)
        self.targets.pop(idx)
        self.loads.pop(idx)

        # wait 5 seconds before cleaning up pending jobs, since the results might
        # still be incoming
        if self.pending[uid]:
            self.loop.add_timeout(
                self.loop.time() + 5, lambda: self.handle_stranded_tasks(uid)
            )
        else:
            self.completed.pop(uid)
            self.failed.pop(uid)

    def handle_stranded_tasks(self, engine):
        """Deal with jobs resident in an engine that died."""
        lost = self.pending[engine]
        for msg_id in list(lost.keys()):
            if msg_id not in lost:
                # prevent double-handling of messages
                continue

            raw_msg = lost[msg_id].raw_msg
            idents, msg = self.session.feed_identities(raw_msg, copy=False)
            parent = self.session.unpack(msg[1].bytes)
            idents = [engine, idents[0]]

            # build fake error reply
            try:
                raise error.EngineError(
                    f"Engine {engine!r} died while running task {msg_id!r}"
                )
            except error.EngineError:
                content = error.wrap_exception()
            # build fake metadata
            md = dict(status='error', engine=engine.decode('ascii'), date=util.utcnow())
            msg = self.session.msg('apply_reply', content, parent=parent, metadata=md)
            raw_reply = list(
                map(zmq.Message, self.session.serialize(msg, ident=idents))
            )
            # and dispatch it
            self.dispatch_result(raw_reply)

        # finally scrub completed/failed lists
        self.completed.pop(engine)
        self.failed.pop(engine)

    # -----------------------------------------------------------------------
    # Job Submission
    # -----------------------------------------------------------------------

    @util.log_errors
    def dispatch_submission(self, raw_msg):
        """Dispatch job submission to appropriate handlers."""
        # ensure targets up to date:
        self.notifier_stream.flush()
        try:
            idents, msg = self.session.feed_identities(raw_msg, copy=False)
            msg = self.session.deserialize(msg, content=False, copy=False)
        except Exception:
            self.log.error(f"task::Invaid task msg: {raw_msg!r}", exc_info=True)
            return

        # send to monitor
        self.mon_stream.send_multipart([b'intask'] + raw_msg, copy=False)

        header = msg['header']
        md = msg['metadata']
        msg_id = header['msg_id']
        self.all_ids.add(msg_id)

        # get targets as a set of bytes objects
        # from a list of unicode objects
        targets = md.get('targets', [])
        targets = {t.encode("utf8", "replace") for t in targets}

        retries = md.get('retries', 0)
        self.retries[msg_id] = retries

        # time dependencies
        after = md.get('after', None)
        if after:
            after = Dependency(after)
            if after.all:
                if after.success:
                    after = Dependency(
                        after.difference(self.all_completed),
                        success=after.success,
                        failure=after.failure,
                        all=after.all,
                    )
                if after.failure:
                    after = Dependency(
                        after.difference(self.all_failed),
                        success=after.success,
                        failure=after.failure,
                        all=after.all,
                    )
            if after.check(self.all_completed, self.all_failed):
                # recast as empty set, if `after` already met,
                # to prevent unnecessary set comparisons
                after = MET
        else:
            after = MET

        # location dependencies
        follow = Dependency(md.get('follow', []))

        timeout = md.get('timeout', None)
        if timeout:
            timeout = float(timeout)

        job = Job(
            msg_id=msg_id,
            raw_msg=raw_msg,
            idents=idents,
            msg=msg,
            header=header,
            targets=targets,
            after=after,
            follow=follow,
            timeout=timeout,
            metadata=md,
        )
        # validate and reduce dependencies:
        for dep in after, follow:
            if not dep:  # empty dependency
                continue
            # check valid:
            if msg_id in dep or dep.difference(self.all_ids):
                self.queue_map[msg_id] = job
                return self.fail_unreachable(msg_id, error.InvalidDependency)
            # check if unreachable:
            if dep.unreachable(self.all_completed, self.all_failed):
                self.queue_map[msg_id] = job
                return self.fail_unreachable(msg_id)

        if after.check(self.all_completed, self.all_failed):
            # time deps already met, try to run
            if not self.maybe_run(job):
                # can't run yet
                if msg_id not in self.all_failed:
                    # could have failed as unreachable
                    self.save_unmet(job)
        else:
            self.save_unmet(job)

    def job_timeout(self, job, timeout_id):
        """callback for a job's timeout.

        The job may or may not have been run at this point.
        """
        if job.timeout_id != timeout_id:
            # not the most recent call
            return
        now = time.time()
        if job.timeout >= (now + 1):
            self.log.warning(
                "task %s timeout fired prematurely: %s > %s",
                job.msg_id,
                job.timeout,
                now,
            )
        if job.msg_id in self.queue_map:
            # still waiting, but ran out of time
            self.log.info("task %r timed out", job.msg_id)
            self.fail_unreachable(job.msg_id, error.TaskTimeout)

    def fail_unreachable(self, msg_id, why=error.ImpossibleDependency):
        """a task has become unreachable, send a reply with an ImpossibleDependency
        error."""
        if msg_id not in self.queue_map:
            self.log.error("task %r already failed!", msg_id)
            return
        job = self.queue_map.pop(msg_id)
        # lazy-delete from the queue
        job.removed = True
        for mid in job.dependents:
            if mid in self.graph:
                self.graph[mid].remove(msg_id)

        try:
            raise why()
        except Exception:
            content = error.wrap_exception()
        self.log.debug(
            "task %r failing as unreachable with: %s", msg_id, content['ename']
        )

        self.all_done.add(msg_id)
        self.all_failed.add(msg_id)

        msg = self.session.send(
            self.client_stream,
            'apply_reply',
            content,
            parent=job.header,
            ident=job.idents,
        )
        self.session.send(self.mon_stream, msg, ident=[b'outtask'] + job.idents)

        self.update_graph(msg_id, success=False)

    def available_engines(self):
        """return a list of available engine indices based on HWM"""
        if not self.hwm:
            return list(range(len(self.targets)))
        available = []
        for idx in range(len(self.targets)):
            if self.loads[idx] < self.hwm:
                available.append(idx)
        return available

    def maybe_run(self, job):
        """check location dependencies, and run if they are met."""
        msg_id = job.msg_id
        self.log.debug("Attempting to assign task %s", msg_id)
        available = self.available_engines()
        if not available:
            # no engines, definitely can't run
            return False

        if job.follow or job.targets or job.blacklist or self.hwm:
            # we need a can_run filter
            def can_run(idx):
                # check hwm
                if self.hwm and self.loads[idx] == self.hwm:
                    return False
                target = self.targets[idx]
                # check blacklist
                if target in job.blacklist:
                    return False
                # check targets
                if job.targets and target not in job.targets:
                    return False
                # check follow
                return job.follow.check(self.completed[target], self.failed[target])

            indices = list(filter(can_run, available))

            if not indices:
                # couldn't run
                if job.follow.all:
                    # check follow for impossibility
                    dests = set()
                    relevant = set()
                    if job.follow.success:
                        relevant = self.all_completed
                    if job.follow.failure:
                        relevant = relevant.union(self.all_failed)
                    for m in job.follow.intersection(relevant):
                        dests.add(self.destinations[m])
                    if len(dests) > 1:
                        self.queue_map[msg_id] = job
                        self.fail_unreachable(msg_id)
                        return False
                if job.targets:
                    # check blacklist+targets for impossibility
                    job.targets.difference_update(job.blacklist)
                    if not job.targets or not job.targets.intersection(self.targets):
                        self.queue_map[msg_id] = job
                        self.fail_unreachable(msg_id)
                        return False
                return False
        else:
            indices = None

        self.submit_task(job, indices)
        return True

    def save_unmet(self, job):
        """Save a message for later submission when its dependencies are met."""
        msg_id = job.msg_id
        self.log.debug("Adding task %s to the queue", msg_id)
        self.queue_map[msg_id] = job
        self.queue.append(job)
        # track the ids in follow or after, but not those already finished
        for dep_id in job.after.union(job.follow).difference(self.all_done):
            if dep_id not in self.graph:
                self.graph[dep_id] = set()
            self.graph[dep_id].add(msg_id)

        # schedule timeout callback
        if job.timeout:
            timeout_id = job.timeout_id = job.timeout_id + 1
            self.loop.add_timeout(
                time.time() + job.timeout, lambda: self.job_timeout(job, timeout_id)
            )

    def submit_task(self, job, indices=None):
        """Submit a task to any of a subset of our targets."""
        if indices:
            loads = [self.loads[i] for i in indices]
        else:
            loads = self.loads
        idx = self.scheme(loads)
        if indices:
            idx = indices[idx]
        target = self.targets[idx]
        # print (target, map(str, msg[:3]))
        # send job to the engine
        self.engine_stream.send(target, flags=zmq.SNDMORE, copy=False)
        self.engine_stream.send_multipart(job.raw_msg, copy=False)
        # update load
        self.add_job(idx)
        self.pending[target][job.msg_id] = job
        # notify Hub
        content = dict(msg_id=job.msg_id, engine_id=target.decode('ascii'))
        self.session.send(
            self.mon_stream,
            'task_destination',
            content=content,
            ident=[b'tracktask', self.ident],
        )

    # -----------------------------------------------------------------------
    # Result Handling
    # -----------------------------------------------------------------------

    @util.log_errors
    def dispatch_result(self, raw_msg):  # maybe_dispatch_reults ?
        """dispatch method for result replies"""
        try:
            idents, msg = self.session.feed_identities(raw_msg, copy=False)
            msg = self.session.deserialize(msg, content=False, copy=False)
            engine = idents[0]
            try:
                idx = self.targets.index(engine)
            except ValueError:
                pass  # skip load-update for dead engines
            else:
                self.finish_job(idx)
        except Exception:
            self.log.error("task::Invalid result: %r", raw_msg, exc_info=True)
            return

        md = msg['metadata']
        parent = msg['parent_header']
        if md.get('dependencies_met', True):
            success = md['status'] == 'ok'
            msg_id = parent['msg_id']
            retries = self.retries[msg_id]
            if not success and retries > 0:
                # failed
                self.retries[msg_id] = retries - 1
                self.handle_unmet_dependency(idents, parent)
            else:
                del self.retries[msg_id]
                # relay to client and update graph
                self.handle_result(idents, parent, raw_msg, success)
                # send to Hub monitor
                self.mon_stream.send_multipart([b'outtask'] + raw_msg, copy=False)
        else:
            self.handle_unmet_dependency(idents, parent)

    def handle_result(self, idents, parent, raw_msg, success=True):
        """handle a real task result, either success or failure"""
        # first, relay result to client
        engine = idents[0]
        client = idents[1]
        # swap_ids for ROUTER-ROUTER mirror
        raw_msg[:2] = [client, engine]
        # print (map(str, raw_msg[:4]))
        self.client_stream.send_multipart(raw_msg, copy=False)
        # now, update our data structures
        msg_id = parent['msg_id']
        self.pending[engine].pop(msg_id)
        if success:
            self.completed[engine].add(msg_id)
            self.all_completed.add(msg_id)
        else:
            self.failed[engine].add(msg_id)
            self.all_failed.add(msg_id)
        self.all_done.add(msg_id)
        self.destinations[msg_id] = engine

        self.update_graph(msg_id, success)

    def handle_unmet_dependency(self, idents, parent):
        """handle an unmet dependency"""
        engine = idents[0]
        msg_id = parent['msg_id']

        job = self.pending[engine].pop(msg_id)
        job.blacklist.add(engine)

        if job.blacklist == job.targets:
            self.queue_map[msg_id] = job
            self.fail_unreachable(msg_id)
        elif not self.maybe_run(job):
            # resubmit failed
            if msg_id not in self.all_failed:
                # put it back in our dependency tree
                self.save_unmet(job)

        if self.hwm:
            try:
                idx = self.targets.index(engine)
            except ValueError:
                pass  # skip load-update for dead engines
            else:
                if self.loads[idx] == self.hwm - 1:
                    self.update_graph(None)

    def update_graph(self, dep_id=None, success=True):
        """dep_id just finished. Update our dependency
        graph and submit any jobs that just became runnable.

        Called with dep_id=None to update entire graph for hwm, but without finishing a task.
        """
        # print ("\n\n***********")
        # pprint (dep_id)
        # pprint (self.graph)
        # pprint (self.queue_map)
        # pprint (self.all_completed)
        # pprint (self.all_failed)
        # print ("\n\n***********\n\n")
        # update any jobs that depended on the dependency
        msg_ids = self.graph.pop(dep_id, [])

        # recheck *all* jobs if
        # a) we have HWM and an engine just become no longer full
        # or b) dep_id was given as None

        if (
            dep_id is None
            or self.hwm
            and any([load == self.hwm - 1 for load in self.loads])
        ):
            jobs = self.queue
            using_queue = True
        else:
            using_queue = False
            jobs = deque(sorted(self.queue_map[msg_id] for msg_id in msg_ids))

        to_restore = []
        while jobs:
            job = jobs.popleft()
            if job.removed:
                continue
            msg_id = job.msg_id

            put_it_back = True

            if job.after.unreachable(
                self.all_completed, self.all_failed
            ) or job.follow.unreachable(self.all_completed, self.all_failed):
                self.fail_unreachable(msg_id)
                put_it_back = False

            elif job.after.check(
                self.all_completed, self.all_failed
            ):  # time deps met, maybe run
                if self.maybe_run(job):
                    put_it_back = False
                    self.queue_map.pop(msg_id)
                    for mid in job.dependents:
                        if mid in self.graph:
                            self.graph[mid].remove(msg_id)

                    # abort the loop if we just filled up all of our engines.
                    # avoids an O(N) operation in situation of full queue,
                    # where graph update is triggered as soon as an engine becomes
                    # non-full, and all tasks after the first are checked,
                    # even though they can't run.
                    if not self.available_engines():
                        break

            if using_queue and put_it_back:
                # popped a job from the queue but it neither ran nor failed,
                # so we need to put it back when we are done
                # make sure to_restore preserves the same ordering
                to_restore.append(job)

        # put back any tasks we popped but didn't run
        if using_queue:
            self.queue.extendleft(to_restore)

    # ----------------------------------------------------------------------
    # methods to be overridden by subclasses
    # ----------------------------------------------------------------------

    def add_job(self, idx):
        """Called after self.targets[idx] just got the job with header.
        Override with subclasses.  The default ordering is simple LRU.
        The default loads are the number of outstanding jobs."""
        self.loads[idx] += 1
        for lis in (self.targets, self.loads):
            lis.append(lis.pop(idx))

    def finish_job(self, idx):
        """Called after self.targets[idx] just finished a job.
        Override with subclasses."""
        self.loads[idx] -= 1
ipython-ipyparallel-14e3c43/ipyparallel/datapub.py000066400000000000000000000000671520071063500223620ustar00rootroot00000000000000from .engine.datapub import publish_data  # noqa: F401
ipython-ipyparallel-14e3c43/ipyparallel/engine/000077500000000000000000000000001520071063500216325ustar00rootroot00000000000000ipython-ipyparallel-14e3c43/ipyparallel/engine/__init__.py000066400000000000000000000000001520071063500237310ustar00rootroot00000000000000ipython-ipyparallel-14e3c43/ipyparallel/engine/__main__.py000066400000000000000000000001011520071063500237140ustar00rootroot00000000000000if __name__ == '__main__':
    from .app import main

    main()
ipython-ipyparallel-14e3c43/ipyparallel/engine/app.py000077500000000000000000001077161520071063500230030ustar00rootroot00000000000000#!/usr/bin/env python
"""
The IPython engine application
"""

# Copyright (c) IPython Development Team.
# Distributed under the terms of the Modified BSD License.
import asyncio
import inspect
import json
import os
import signal
import sys
import time
from getpass import getpass
from io import FileIO, TextIOWrapper
from logging import StreamHandler

import ipykernel
import zmq
from ipykernel.iostream import IOPubThread
from ipykernel.kernelapp import IPKernelApp
from ipykernel.zmqshell import ZMQInteractiveShell
from IPython.core.profiledir import ProfileDir
from jupyter_client.localinterfaces import localhost
from jupyter_client.session import Session, session_aliases, session_flags
from tornado import ioloop
from traitlets import (
    Bool,
    Bytes,
    Dict,
    Float,
    Instance,
    Integer,
    List,
    Type,
    Unicode,
    default,
    observe,
    validate,
)
from traitlets.config import Config
from zmq.eventloop import zmqstream

from ipyparallel import util
from ipyparallel.apps.baseapp import (
    BaseParallelApplication,
    base_aliases,
    base_flags,
    catch_config_error,
)
from ipyparallel.controller.heartmonitor import Heart
from ipyparallel.util import disambiguate_ip_address, disambiguate_url

from .kernel import IPythonParallelKernel as Kernel
from .log import EnginePUBHandler
from .nanny import start_nanny

try:
    from ipykernel.control import ControlThread
except ImportError:
    ControlThread = None
# -----------------------------------------------------------------------------
# Module level variables
# -----------------------------------------------------------------------------

_description = """Start an IPython engine for parallel computing.

IPython engines run in parallel and perform computations on behalf of a client
and controller. A controller needs to be started before the engines. The
engine can be configured using command line options or using a cluster
directory. Cluster directories contain config, log and security files and are
usually located in your ipython directory and named as "profile_name".
See the `profile` and `profile-dir` options for details.
"""

_examples = """
ipengine --file=path/to/ipcontroller-engine.json     # connect to hub using a specific url
ipengine --log-level=DEBUG > engine.log 2>&1  # log to a file with DEBUG verbosity
"""

DEFAULT_MPI_INIT = """
from mpi4py import MPI
mpi_rank = MPI.COMM_WORLD.Get_rank()
mpi_size = MPI.COMM_WORLD.Get_size()
"""

# -----------------------------------------------------------------------------
# Main application
# -----------------------------------------------------------------------------
aliases = dict(
    file='IPEngine.url_file',
    c='IPEngine.startup_command',
    s='IPEngine.startup_script',
    url='IPEngine.registration_url',
    ssh='IPEngine.sshserver',
    sshkey='IPEngine.sshkey',
    location='IPEngine.location',
    timeout='IPEngine.timeout',
)
aliases.update(base_aliases)
aliases.update(session_aliases)
flags = {
    'mpi': (
        {
            'IPEngine': {'use_mpi': True},
        },
        "enable MPI integration",
    ),
}
flags.update(base_flags)
flags.update(session_flags)


class IPEngine(BaseParallelApplication):
    name = 'ipengine'
    description = _description
    examples = _examples
    classes = List([ZMQInteractiveShell, ProfileDir, Session, Kernel])
    _deprecated_classes = ["EngineFactory", "IPEngineApp"]

    enable_nanny = Bool(
        True,
        config=True,
        help="""Enable the nanny process.

    The nanny process enables remote signaling of single engines
    and more responsive notification of engine shutdown.

    .. versionadded:: 7.0

    """,
    )

    startup_script = Unicode(
        '', config=True, help='specify a script to be run at startup'
    )
    startup_command = Unicode(
        '', config=True, help='specify a command to be run at startup'
    )

    url_file = Unicode(
        '',
        config=True,
        help="""The full location of the file containing the connection information for
        the controller. If this is not given, the file must be in the
        security directory of the cluster directory.  This location is
        resolved using the `profile` or `profile_dir` options.""",
    )
    wait_for_url_file = Float(
        10,
        config=True,
        help="""The maximum number of seconds to wait for url_file to exist.
        This is useful for batch-systems and shared-filesystems where the
        controller and engine are started at the same time and it
        may take a moment for the controller to write the connector files.""",
    )

    url_file_name = Unicode('ipcontroller-engine.json', config=True)

    connection_info_env = Unicode()

    @default("connection_info_env")
    def _default_connection_file_env(self):
        return os.environ.get("IPP_CONNECTION_INFO", "")

    @observe('cluster_id')
    def _cluster_id_changed(self, change):
        if change['new']:
            base = 'ipcontroller-{}'.format(change['new'])
        else:
            base = 'ipcontroller'
        self.url_file_name = f"{base}-engine.json"

    log_url = Unicode(
        '',
        config=True,
        help="""The URL for the iploggerapp instance, for forwarding
        logging to a central location.""",
    )

    registration_url = Unicode(
        config=True,
        help="""Override the registration URL""",
    )
    out_stream_factory = Type(
        'ipykernel.iostream.OutStream',
        config=True,
        help="""The OutStream for handling stdout/err.
        Typically 'ipykernel.iostream.OutStream'""",
    )
    display_hook_factory = Type(
        'ipykernel.displayhook.ZMQDisplayHook',
        config=True,
        help="""The class for handling displayhook.
        Typically 'ipykernel.displayhook.ZMQDisplayHook'""",
    )
    location = Unicode(
        config=True,
        help="""The location (an IP address) of the controller.  This is
        used for disambiguating URLs, to determine whether
        loopback should be used to connect or the public address.""",
    )
    timeout = Float(
        5.0,
        config=True,
        help="""The time (in seconds) to wait for the Controller to respond
        to registration requests before giving up.""",
    )
    max_heartbeat_misses = Integer(
        50,
        config=True,
        help="""The maximum number of times a check for the heartbeat ping of a
        controller can be missed before shutting down the engine.

        If set to 0, the check is disabled.""",
    )
    sshserver = Unicode(
        config=True,
        help="""The SSH server to use for tunneling connections to the Controller.""",
    )
    sshkey = Unicode(
        config=True,
        help="""The SSH private key file to use when tunneling connections to the Controller.""",
    )
    paramiko = Bool(
        sys.platform == 'win32',
        config=True,
        help="""Whether to use paramiko instead of openssh for tunnels.""",
    )

    use_mpi = Bool(
        False,
        config=True,
        help="""Enable MPI integration.

        If set, MPI rank will be requested for my rank,
        and additionally `mpi_init` will be executed in the interactive shell.
        """,
    )
    init_mpi = Unicode(
        DEFAULT_MPI_INIT,
        config=True,
        help="""Code to execute in the user namespace when initializing MPI""",
    )
    mpi_registration_delay = Float(
        0.02,
        config=True,
        help="""Per-engine delay for mpiexec-launched engines

        avoids flooding the controller with registrations,
        which can stall under heavy load.

        Default: .02 (50 engines/sec, or 3000 engines/minute)
        """,
    )

    # not configurable:
    user_ns = Dict()
    id = Integer(
        None,
        allow_none=True,
        config=True,
        help="""Request this engine ID.

        If run in MPI, will use the MPI rank.
        Otherwise, let the Hub decide what our rank should be.
        """,
    )

    @default('id')
    def _id_default(self):
        if not self.use_mpi:
            return None
        from mpi4py import MPI

        if MPI.COMM_WORLD.size > 1:
            self.log.debug("MPI rank = %i", MPI.COMM_WORLD.rank)
            return MPI.COMM_WORLD.rank

    registrar = Instance('zmq.Socket', allow_none=True)
    kernel = Instance(Kernel, allow_none=True)
    hb_check_period = Integer()

    # States for the heartbeat monitoring
    # Initial values for monitored and pinged must satisfy "monitored > pinged == False" so that
    # during the first check no "missed" ping is reported. Must be floats for Python 3 compatibility.
    _hb_last_pinged = 0.0
    _hb_last_monitored = 0.0
    _hb_missed_beats = 0
    # The zmq Stream which receives the pings from the Heart
    _hb_listener = None

    bident = Bytes()
    ident = Unicode()

    @default("ident")
    def _default_ident(self):
        return self.session.session

    @default("bident")
    def _default_bident(self):
        return self.ident.encode("utf8")

    @observe("ident")
    def _ident_changed(self, change):
        self.bident = self._default_bident()

    using_ssh = Bool(False)

    context = Instance(zmq.Context)

    @default("context")
    def _default_context(self):
        return zmq.Context.instance()

    # an IPKernelApp instance, used to setup listening for shell frontends
    kernel_app = Instance(IPKernelApp, allow_none=True)

    aliases = Dict(aliases)
    flags = Dict(flags)

    curve_serverkey = Bytes(
        config=True, help="The controller's public key for CURVE security"
    )
    curve_secretkey = Bytes(
        config=True,
        help="""The engine's secret key for CURVE security.
        Usually autogenerated on launch.""",
    )
    curve_publickey = Bytes(
        config=True,
        help="""The engine's public key for CURVE security.
        Usually autogenerated on launch.""",
    )

    @default("curve_serverkey")
    def _default_curve_serverkey(self):
        return os.environ.get("IPP_CURVE_SERVERKEY", "").encode("ascii")

    @default("curve_secretkey")
    def _default_curve_secretkey(self):
        return os.environ.get("IPP_CURVE_SECRETKEY", "").encode("ascii")

    @default("curve_publickey")
    def _default_curve_publickey(self):
        return os.environ.get("IPP_CURVE_PUBLICKEY", "").encode("ascii")

    @validate("curve_publickey", "curve_secretkey", "curve_serverkey")
    def _cast_bytes(self, proposal):
        if isinstance(proposal.value, str):
            return proposal.value.encode("ascii")
        return proposal.value

    def _ensure_curve_keypair(self):
        if not self.curve_secretkey or not self.curve_publickey:
            self.log.info("Generating new CURVE credentials")
            self.curve_publickey, self.curve_secretkey = zmq.curve_keypair()

    _kernel_start_future = None

    def find_connection_file(self):
        """Set the url file.

        Here we don't try to actually see if it exists for is valid as that
        is handled by the connection logic.
        """
        # Find the actual ipcontroller-engine.json connection file
        if not self.url_file:
            self.url_file = os.path.join(
                self.profile_dir.security_dir, self.url_file_name
            )

    def load_connection_file(self):
        """load config from a JSON connector file,
        at a *lower* priority than command-line/config files.

        Same content can be specified in $IPP_CONNECTION_INFO env
        """
        config = self.config

        if self.connection_info_env:
            self.log.info("Loading connection info from $IPP_CONNECTION_INFO")
            d = json.loads(self.connection_info_env)
        else:
            self.log.info("Loading connection file %r", self.url_file)
            with open(self.url_file) as f:
                d = json.load(f)

        # allow hand-override of location for disambiguation
        # and ssh-server
        if 'IPEngine.location' not in self.cli_config:
            self.location = d['location']
        if 'ssh' in d and not self.sshserver:
            self.sshserver = d.get("ssh")

        proto, ip = d['interface'].split('://')
        self.log.debug(f"calling disambiguate_ip_address({ip}, {self.location})")
        ip = disambiguate_ip_address(ip, self.location)
        self.log.debug(f"disambiguate_ip_address returned ip={ip}")
        d['interface'] = f'{proto}://{ip}'

        if d.get('curve_serverkey'):
            # connection file takes precedence over env, if present and defined
            self.curve_serverkey = d['curve_serverkey'].encode('ascii')
        if self.curve_serverkey:
            self.log.info("Using CurveZMQ security")
            self._ensure_curve_keypair()
        else:
            self.log.warning("Not using CurveZMQ security")

        # DO NOT allow override of basic URLs, serialization, or key
        # JSON file takes top priority there
        if d.get('key') or 'key' not in config.Session:
            config.Session.key = d.get('key', '').encode('utf8')
        config.Session.signature_scheme = d['signature_scheme']

        self.registration_url = f"{d['interface']}:{d['registration']}"

        config.Session.packer = d['pack']
        config.Session.unpacker = d['unpack']
        util._disable_session_extract_dates()
        self.session = Session(parent=self)

        self.log.debug("Config changed:")
        self.log.debug("%r", config)
        self.connection_info = d

    _kernel_bound = False

    def bind_kernel(self, **kwargs):
        """Promote engine to listening kernel, accessible to frontends."""
        if self._kernel_bound:
            # already run
            return
        self._kernel_bound = True

        self.log.info("Opening ports for direct connections as an IPython kernel")
        if self.curve_serverkey:
            self.log.warning("Bound kernel does not support CURVE security")

        kernel = self.kernel
        app = self.kernel_app

        app.init_connection_file()
        # relevant contents of init_sockets:

        app.shell_port = app._bind_socket(self.shell_socket, app.shell_port)
        app.log.debug("shell ROUTER Channel on port: %i", app.shell_port)

        app.control_port = app._bind_socket(self.control_socket, app.control_port)
        app.log.debug("control ROUTER Channel on port: %i", app.control_port)

        app.iopub_port = app._bind_socket(self.iopub_socket, app.iopub_port)
        app.log.debug("iopub PUB Channel on port: %i", app.iopub_port)

        kernel.stdin_socket = self.context.socket(zmq.ROUTER)
        app.stdin_port = app._bind_socket(kernel.stdin_socket, app.stdin_port)
        app.log.debug("stdin ROUTER Channel on port: %i", app.stdin_port)

        # start the heartbeat, and log connection info:
        app.init_heartbeat()

        app.log_connection_info()
        app.connection_dir = self.profile_dir.security_dir
        app.write_connection_file()

    @property
    def tunnel_mod(self):
        from zmq.ssh import tunnel

        return tunnel

    def init_connector(self):
        """construct connection function, which handles tunnels."""
        self.using_ssh = bool(self.sshkey or self.sshserver)

        if self.sshkey and not self.sshserver:
            # We are using ssh directly to the controller, tunneling localhost to localhost
            self.sshserver = self.registration_url.split('://')[1].split(':')[0]

        if self.using_ssh:
            if self.tunnel_mod.try_passwordless_ssh(
                self.sshserver, self.sshkey, self.paramiko
            ):
                password = False
            else:
                password = getpass(f"SSH Password for {self.sshserver}: ")
        else:
            password = False

        def connect(s, url, curve_serverkey=None):
            url = disambiguate_url(url, self.location)
            if curve_serverkey is None:
                curve_serverkey = self.curve_serverkey
            if curve_serverkey:
                s.setsockopt(zmq.CURVE_SERVERKEY, curve_serverkey)
                s.setsockopt(zmq.CURVE_SECRETKEY, self.curve_secretkey)
                s.setsockopt(zmq.CURVE_PUBLICKEY, self.curve_publickey)

            if self.using_ssh:
                self.log.debug("Tunneling connection to %s via %s", url, self.sshserver)
                return self.tunnel_mod.tunnel_connection(
                    s,
                    url,
                    self.sshserver,
                    keyfile=self.sshkey,
                    paramiko=self.paramiko,
                    password=password,
                )
            else:
                return s.connect(url)

        def maybe_tunnel(url):
            """like connect, but don't complete the connection (for use by heartbeat)"""
            url = disambiguate_url(url, self.location)
            if self.using_ssh:
                self.log.debug("Tunneling connection to %s via %s", url, self.sshserver)
                url, tunnelobj = self.tunnel_mod.open_tunnel(
                    url,
                    self.sshserver,
                    keyfile=self.sshkey,
                    paramiko=self.paramiko,
                    password=password,
                )
            return str(url)

        return connect, maybe_tunnel

    async def register(self):
        """send the registration_request"""
        if self.use_mpi and self.id and self.id >= 100 and self.mpi_registration_delay:
            # Some launchres implement delay at the Launcher level,
            # but mpiexec must implement it int he engine process itself
            # delay based on our rank

            delay = self.id * self.mpi_registration_delay
            self.log.info(
                f"Delaying registration for {self.id} by {int(delay * 1000)}ms"
            )
            time.sleep(delay)

        self.log.info(f"Registering with controller at {self.registration_url}")
        ctx = self.context
        connect, maybe_tunnel = self.init_connector()
        reg = self.registrar = ctx.socket(zmq.DEALER)
        reg.IDENTITY = self.bident
        connect(reg, self.registration_url)

        content = dict(uuid=self.ident)
        if self.id is not None:
            self.log.info("Requesting id: %i", self.id)
            content['id'] = self.id

        self.session.send(reg, "registration_request", content=content)
        # wait for reply
        poller = zmq.asyncio.Poller()
        poller.register(reg, zmq.POLLIN)
        events = dict(await poller.poll(timeout=int(self.timeout * 1_000)))
        if events:
            msg = reg.recv_multipart()
            try:
                await self.complete_registration(msg, connect, maybe_tunnel)
            except Exception as e:
                self.log.critical(f"Error completing registration: {e}", exc_info=True)
                self.exit(255)
        else:
            self.abort()

    def _report_ping(self, msg):
        """Callback for when the heartmonitor.Heart receives a ping"""
        # self.log.debug("Received a ping: %s", msg)
        self._hb_last_pinged = time.time()

    def redirect_output(self, iopub_socket):
        """Redirect std streams and set a display hook."""
        if self.out_stream_factory:
            sys.stdout = self.out_stream_factory(self.session, iopub_socket, 'stdout')
            sys.stdout.topic = f"engine.{self.id}.stdout".encode("ascii")
            sys.stderr = self.out_stream_factory(self.session, iopub_socket, 'stderr')
            sys.stderr.topic = f"engine.{self.id}.stderr".encode("ascii")

            # copied from ipykernel 6, which captures sys.__stderr__ at the FD-level
            if getattr(sys.stderr, "_original_stdstream_copy", None) is not None:
                for handler in self.log.handlers:
                    print(handler)
                    if isinstance(handler, StreamHandler) and (
                        handler.stream.buffer.fileno()
                    ):
                        self.log.debug(
                            "Seeing logger to stderr, rerouting to raw filedescriptor."
                        )

                        handler.stream = TextIOWrapper(
                            FileIO(sys.stderr._original_stdstream_copy, "w")
                        )
        if self.display_hook_factory:
            sys.displayhook = self.display_hook_factory(self.session, iopub_socket)
            sys.displayhook.topic = f"engine.{self.id}.execute_result".encode("ascii")

    def restore_output(self):
        """Restore output after redirect_output"""
        sys.stdout = sys.__stdout__
        sys.stderr = sys.__stderr__

    async def complete_registration(self, msg, connect, maybe_tunnel):
        ctx = self.context
        loop = self.loop
        identity = self.bident
        idents, msg = self.session.feed_identities(msg)
        msg = self.session.deserialize(msg)
        content = msg['content']
        info = self.connection_info

        def url(key):
            """get zmq url for given channel"""
            return f"{info['interface']}:{info[key]}"

        def urls(key):
            return [f'{info["interface"]}:{port}' for port in info[key]]

        if content['status'] == 'ok':
            requested_id = self.id
            self.id = content['id']
            if requested_id is not None and self.id != requested_id:
                self.log.warning(
                    f"Did not get the requested id: {self.id} != {requested_id}"
                )
                self.log.name = self.log.name.rsplit(".", 1)[0] + f".{self.id}"
            elif self.id is not None:
                self.log.name += f".{self.id}"

            # create Shell Connections (MUX, Task, etc.):

            # select which broadcast endpoint to connect to
            # use rank % len(broadcast_leaves)
            broadcast_urls = urls('broadcast')
            broadcast_leaves = len(broadcast_urls)
            broadcast_index = self.id % len(broadcast_urls)
            broadcast_url = broadcast_urls[broadcast_index]

            shell_addrs = [url('mux'), url('task'), broadcast_url]
            self.log.info(f'Shell_addrs: {shell_addrs}')

            # Use only one shell stream for mux and tasks
            shell_socket = self.shell_socket = ctx.socket(zmq.ROUTER)
            shell_socket.setsockopt(zmq.IDENTITY, identity)
            # TODO: enable PROBE_ROUTER when schedulers can handle the empty message
            # stream.setsockopt(zmq.PROBE_ROUTER, 1)
            self.log.debug("Setting shell identity %r", identity)

            for addr in shell_addrs:
                self.log.info("Connecting shell to %s", addr)
                connect(shell_socket, addr)

            # control stream:
            control_url = url('control')
            curve_serverkey = self.curve_serverkey
            if self.enable_nanny:
                nanny_url, self.nanny_pipe = self.start_nanny(
                    control_url=control_url,
                )
                control_url = nanny_url
                # nanny uses our curve_publickey, not the controller's publickey
                curve_serverkey = self.curve_publickey
            control_socket = self.control_socket = ctx.socket(zmq.ROUTER)
            control_socket.setsockopt(zmq.IDENTITY, identity)
            connect(control_socket, control_url, curve_serverkey=curve_serverkey)

            # create iopub stream:
            iopub_addr = url('iopub')
            thread_params = {}
            if 'session' in inspect.signature(IOPubThread).parameters:
                iopub_socket_type = zmq.XPUB
                thread_params["session"] = self.session
            else:
                iopub_socket_type = zmq.PUB
            iopub_socket = self.iopub_socket = ctx.socket(iopub_socket_type)
            iopub_socket.SNDHWM = 0
            iopub_socket.setsockopt(zmq.IDENTITY, identity)
            connect(iopub_socket, iopub_addr)
            iopub_socket = IOPubThread(iopub_socket, **thread_params)
            iopub_socket.start()

            # disable history:
            self.config.HistoryManager.hist_file = ':memory:'

            # patch Session to always send engine uuid metadata
            original_send = self.session.send

            def send_with_metadata(
                stream,
                msg_or_type,
                content=None,
                parent=None,
                ident=None,
                buffers=None,
                track=False,
                header=None,
                metadata=None,
                **kwargs,
            ):
                """Ensure all messages set engine uuid metadata"""
                metadata = metadata or {}
                metadata.setdefault("engine", self.ident)
                return original_send(
                    stream,
                    msg_or_type,
                    content=content,
                    parent=parent,
                    ident=ident,
                    buffers=buffers,
                    track=track,
                    header=header,
                    metadata=metadata,
                    **kwargs,
                )

            self.session.send = send_with_metadata

            kernel_kwargs = {}
            if ipykernel.version_info >= (6,):
                kernel_kwargs["control_thread"] = control_thread = ControlThread(
                    daemon=True
                )

            control_thread.start()
            kernel_kwargs["control_stream"] = zmqstream.ZMQStream(
                control_socket, control_thread.io_loop
            )

            kernel_kwargs["shell_streams"] = [zmqstream.ZMQStream(shell_socket)]

            self.kernel = Kernel.instance(
                parent=self,
                engine_id=self.id,
                ident=self.ident,
                session=self.session,
                iopub_socket=iopub_socket,
                user_ns=self.user_ns,
                log=self.log,
                **kernel_kwargs,
            )

            self.kernel.shell.display_pub.topic = f"engine.{self.id}.displaypub".encode(
                "ascii"
            )

            # FIXME: This is a hack until IPKernelApp and IPEngineApp can be fully merged
            app = self.kernel_app = IPKernelApp(
                parent=self, shell=self.kernel.shell, kernel=self.kernel, log=self.log
            )
            # allow IPKernelApp.instance():
            IPKernelApp._instance = app
            self.init_signal()

            if self.use_mpi and self.init_mpi:
                app.exec_lines.insert(0, self.init_mpi)
            app.init_profile_dir()
            app.init_gui_pylab()
            app.init_extensions()
            app.init_code()

            # redirect output at the end, only after start is called
            self.redirect_output(iopub_socket)

            # ipykernel 7, kernel.start is the long-running main loop
            start_future = self.kernel.start()
            if start_future is not None:
                self._kernel_start_future = asyncio.ensure_future(start_future)
        else:
            self.log.fatal(f"Registration Failed: {msg}")
            raise Exception(f"Registration Failed: {msg}")

        self.start_heartbeat(
            maybe_tunnel(url('hb_ping')),
            maybe_tunnel(url('hb_pong')),
            content['hb_period'],
            identity,
        )
        self.log.info("Completed registration with id %i", self.id)

    def start_nanny(self, control_url):
        self.log.info("Starting nanny")
        config = Config()
        config.Session = self.config.Session
        return start_nanny(
            engine_id=self.id,
            identity=self.bident,
            control_url=control_url,
            curve_serverkey=self.curve_serverkey,
            curve_secretkey=self.curve_secretkey,
            curve_publickey=self.curve_publickey,
            registration_url=self.registration_url,
            config=config,
        )

    def start_heartbeat(self, hb_ping, hb_pong, hb_period, identity):
        """Start our heart beating"""

        hb_monitor = None
        if self.max_heartbeat_misses > 0:
            # Add a monitor socket which will record the last time a ping was seen
            mon = self.context.socket(zmq.SUB)
            if self.curve_serverkey:
                mon.setsockopt(zmq.CURVE_SERVER, 1)
                mon.setsockopt(zmq.CURVE_SECRETKEY, self.curve_secretkey)
            mport = mon.bind_to_random_port(f'tcp://{localhost()}')
            mon.setsockopt(zmq.SUBSCRIBE, b"")
            self._hb_listener = zmqstream.ZMQStream(mon, self.loop)
            self._hb_listener.on_recv(self._report_ping)

            hb_monitor = f"tcp://{localhost()}:{mport}"

        heart = Heart(
            hb_ping,
            hb_pong,
            hb_monitor,
            heart_id=identity,
            curve_serverkey=self.curve_serverkey,
            curve_secretkey=self.curve_secretkey,
            curve_publickey=self.curve_publickey,
        )
        heart.start()

        # periodically check the heartbeat pings of the controller
        # Should be started here and not in "start()" so that the right period can be taken
        # from the hubs HeartBeatMonitor.period
        if self.max_heartbeat_misses > 0:
            # Use a slightly bigger check period than the hub signal period to not warn unnecessary
            self.hb_check_period = hb_period + 500
            self.log.info(
                "Starting to monitor the heartbeat signal from the hub every %i ms.",
                self.hb_check_period,
            )
            self._hb_reporter = ioloop.PeriodicCallback(
                self._hb_monitor, self.hb_check_period
            )
            self._hb_reporter.start()
        else:
            self.log.info(
                "Monitoring of the heartbeat signal from the hub is not enabled."
            )

    def abort(self):
        self.log.fatal(f"Registration timed out after {self.timeout:.1f} seconds")
        if "127." in self.registration_url:
            self.log.fatal(
                """
            If the controller and engines are not on the same machine,
            you will have to instruct the controller to listen on an external IP (in ipcontroller_config.py):
                c.IPController.ip = '0.0.0.0' # for all interfaces, internal and external
                c.IPController.ip = '192.168.1.101' # or any interface that the engines can see
            or tunnel connections via ssh.
            """
            )
        self.session.send(
            self.registrar, "unregistration_request", content=dict(id=self.id)
        )
        time.sleep(1)
        sys.exit(255)

    def _hb_monitor(self):
        """Callback to monitor the heartbeat from the controller"""
        self._hb_listener.flush()
        if self._hb_last_monitored > self._hb_last_pinged:
            self._hb_missed_beats += 1
            self.log.warning(
                "No heartbeat in the last %s ms (%s time(s) in a row).",
                self.hb_check_period,
                self._hb_missed_beats,
            )
        else:
            # self.log.debug("Heartbeat received (after missing %s beats).", self._hb_missed_beats)
            self._hb_missed_beats = 0

        if self._hb_missed_beats >= self.max_heartbeat_misses:
            self.log.fatal(
                "Maximum number of heartbeats misses reached (%s times %s ms), shutting down.",
                self.max_heartbeat_misses,
                self.hb_check_period,
            )
            self.session.send(
                self.registrar, "unregistration_request", content=dict(id=self.id)
            )
            self.loop.stop()

        self._hb_last_monitored = time.time()

    def init_engine(self):
        # This is the working dir by now.
        sys.path.insert(0, '')
        config = self.config

        if not self.connection_info_env:
            self.find_connection_file()
            if self.wait_for_url_file and not os.path.exists(self.url_file):
                self.log.warning(f"Connection file {self.url_file!r} not found")
                self.log.warning(
                    "Waiting up to %.1f seconds for it to arrive.",
                    self.wait_for_url_file,
                )
                tic = time.monotonic()
                while not os.path.exists(self.url_file) and (
                    time.monotonic() - tic < self.wait_for_url_file
                ):
                    # wait for url_file to exist, or until time limit
                    time.sleep(0.1)

            if not os.path.exists(self.url_file):
                self.log.fatal(f"Fatal: connection file never arrived: {self.url_file}")
                self.exit(1)

        self.load_connection_file()

        exec_lines = []
        for app in ('IPKernelApp', 'InteractiveShellApp'):
            if f'{app}.exec_lines' in config:
                exec_lines = config[app].exec_lines
                break

        exec_files = []
        for app in ('IPKernelApp', 'InteractiveShellApp'):
            if f'{app}.exec_files' in config:
                exec_files = config[app].exec_files
                break

        config.IPKernelApp.exec_lines = exec_lines
        config.IPKernelApp.exec_files = exec_files

        if self.startup_script:
            exec_files.append(self.startup_script)
        if self.startup_command:
            exec_lines.append(self.startup_command)

    def forward_logging(self):
        if self.log_url:
            self.log.info("Forwarding logging to %s", self.log_url)
            context = self.context
            lsock = context.socket(zmq.PUB)
            lsock.connect(self.log_url)
            handler = EnginePUBHandler(self.engine, lsock)
            handler.setLevel(self.log_level)
            self.log.addHandler(handler)

    @catch_config_error
    def initialize(self, argv=None):
        if "PYDEVD_DISABLE_FILE_VALIDATION" not in os.environ:
            # suppress irrelevant debugger warnings by default
            os.environ["PYDEVD_DISABLE_FILE_VALIDATION"] = "1"
        super().initialize(argv)
        self.init_engine()
        self.forward_logging()

    def init_signal(self):
        signal.signal(signal.SIGINT, self._signal_sigint)
        signal.signal(signal.SIGTERM, self._signal_stop)

    def _signal_sigint(self, sig, frame):
        self.log.warning("Ignoring SIGINT. Terminate with SIGTERM.")

    def _signal_stop(self, sig, frame):
        self.log.critical(f"received signal {sig}, stopping")
        # we are shutting down, stop forwarding output
        try:
            self.restore_output()
            # kernel.stop added in ipykernel 7
            # claims to be threadsafe, but is not
            kernel_stop = getattr(self.kernel, "stop", None)
            if kernel_stop is not None:
                self.log.debug("Calling kernel.stop()")

                # callback must be async for event loop to be
                # detected by anyio
                async def stop():
                    # guard against kernel stop being made async
                    # in the future. It is sync in 7.0
                    f = kernel_stop()
                    if f is not None:
                        await f

                self.loop.add_callback_from_signal(stop)
            if self._kernel_start_future is None:
                # not awaiting start_future, stop loop directly
                self.log.debug("Stopping event loop")
                self.loop.add_callback_from_signal(self.loop.stop)
        except Exception:
            self.log.critical("Failed to stop kernel", exc_info=True)
            self.loop.add_callback_from_signal(self.loop.stop)

    def start(self):
        if self.id is not None:
            self.log.name += f".{self.id}"
        try:
            self.loop.run_sync(self._start)
        except (asyncio.TimeoutError, KeyboardInterrupt):
            # tornado run_sync raises TimeoutError
            # if the task didn't finish
            pass

    async def _start(self):
        await self.register()
        # run forever
        if self._kernel_start_future is None:
            while True:
                try:
                    await asyncio.sleep(60)
                except asyncio.CancelledError:
                    pass
        else:
            self.log.info("awaiting start future")
            try:
                await self._kernel_start_future
            except asyncio.CancelledError:
                pass
            except Exception as e:
                self.log.critical("Error awaiting start future", exc_info=True)


main = launch_new_instance = IPEngine.launch_instance


if __name__ == '__main__':
    main()
ipython-ipyparallel-14e3c43/ipyparallel/engine/datapub.py000066400000000000000000000033041520071063500236240ustar00rootroot00000000000000"""Publishing native (typically pickled) objects."""

# Copyright (c) IPython Development Team.
# Distributed under the terms of the Modified BSD License.
from jupyter_client.session import Session, extract_header
from traitlets import Any, CBytes, Dict, Instance
from traitlets.config import Configurable

from ipyparallel.serialize import serialize_object


class ZMQDataPublisher(Configurable):
    topic = topic = CBytes(b'datapub')
    session = Instance(Session, allow_none=True)
    pub_socket = Any(allow_none=True)
    parent_header = Dict({})

    def set_parent(self, parent):
        """Set the parent for outbound messages."""
        self.parent_header = extract_header(parent)

    def publish_data(self, data):
        """publish a data_message on the IOPub channel

        Parameters
        ----------
        data : dict
            The data to be published. Think of it as a namespace.
            Keys should be strings.
        """
        session = self.session
        buffers = serialize_object(
            data,
            buffer_threshold=session.buffer_threshold,
            item_threshold=session.item_threshold,
        )
        content = dict(keys=list(data.keys()))
        session.send(
            self.pub_socket,
            'data_message',
            content=content,
            parent=self.parent_header,
            buffers=buffers,
            ident=self.topic,
        )


def publish_data(data):
    """publish a data_message on the IOPub channel

    Parameters
    ----------
    data : dict
        The data to be published. Think of it as a namespace.
    """
    from ipykernel.zmqshell import ZMQInteractiveShell

    ZMQInteractiveShell.instance().data_pub.publish_data(data)
ipython-ipyparallel-14e3c43/ipyparallel/engine/kernel.py000066400000000000000000000206641520071063500234740ustar00rootroot00000000000000"""IPython kernel for parallel computing"""

import asyncio
import inspect
import sys

from ipykernel.ipkernel import IPythonKernel
from traitlets import Integer, Set, Type

from ipyparallel.serialize import serialize_object, unpack_apply_message
from ipyparallel.util import utcnow

from .datapub import ZMQDataPublisher


class IPythonParallelKernel(IPythonKernel):
    """Extend IPython kernel for parallel computing"""

    engine_id = Integer(-1)

    aborted = Set()

    @property
    def int_id(self):
        return self.engine_id

    msg_types = getattr(IPythonKernel, 'msg_types', []) + ['apply_request']
    control_msg_types = getattr(IPythonKernel, 'control_msg_types', []) + [
        'abort_request',
        'clear_request',
    ]
    _execute_sleep = 0
    data_pub_class = Type(ZMQDataPublisher)

    def _topic(self, topic):
        """prefixed topic for IOPub messages"""
        return f"engine.{self.engine_id}.{topic}".encode()

    def __init__(self, **kwargs):
        super().__init__(**kwargs)
        # add apply_request, in anticipation of upstream deprecation
        self.shell_handlers['apply_request'] = self.apply_request
        # set up data pub
        data_pub = self.shell.data_pub = self.data_pub_class(parent=self)
        self.shell.configurables.append(data_pub)
        data_pub.session = self.session
        data_pub.pub_socket = self.iopub_socket
        self.aborted = set()

    def should_handle(self, stream, msg, idents):
        """Check whether a shell-channel message should be handled

        Allows subclasses to prevent handling of certain messages (e.g. aborted requests).
        """
        if not super().should_handle(stream, msg, idents):
            return False
        msg_id = msg['header']['msg_id']
        msg_type = msg['header']['msg_type']
        if msg_id in self.aborted:
            # is it safe to assume a msg_id will not be resubmitted?
            self.aborted.remove(msg_id)
            f = self._send_abort_reply(stream, msg, idents)
            if inspect.isawaitable(f):
                asyncio.ensure_future(f)
            return False
        self.log.info(f"Handling {msg_type}: {msg_id}")
        return True

    def init_metadata(self, parent):
        """init metadata dict, for execute/apply_reply"""
        parent_metadata = parent.get('metadata', {})
        return {
            'started': utcnow(),
            'dependencies_met': True,
            'engine': self.ident,
            'is_broadcast': parent_metadata.get('is_broadcast', False),
            'is_coalescing': parent_metadata.get('is_coalescing', False),
            'original_msg_id': parent_metadata.get('original_msg_id', ''),
            'label': parent_metadata.get('label', None),
        }

    def finish_metadata(self, parent, metadata, reply_content):
        """Finish populating metadata.

        Run after completing a request handler.
        """
        metadata['status'] = reply_content['status']
        if reply_content['status'] == 'error':
            if reply_content['ename'] == 'UnmetDependency':
                metadata['dependencies_met'] = False
            metadata['engine_info'] = self.get_engine_info()

        return metadata

    def get_engine_info(self, method=None):
        """Return engine_info dict"""
        engine_info = dict(
            engine_uuid=self.ident,
            engine_id=self.engine_id,
        )
        if method:
            engine_info["method"] = method
        return engine_info

    def apply_request(self, stream, ident, parent):
        try:
            content = parent['content']
            bufs = parent['buffers']
            msg_id = parent['header']['msg_id']
        except Exception:
            self.log.error("Got bad msg: %s", parent, exc_info=True)
            return

        md = self.init_metadata(parent)
        self.shell_is_blocking = True
        try:
            reply_content, result_buf = self.do_apply(content, bufs, msg_id, md)
        finally:
            self.shell_is_blocking = False

        # put 'ok'/'error' status in header, for scheduler introspection:
        md = self.finish_metadata(parent, md, reply_content)

        # flush i/o
        sys.stdout.flush()
        sys.stderr.flush()
        self.log.debug(f'Sending apply_reply: {msg_id}')
        self.session.send(
            stream,
            'apply_reply',
            reply_content,
            parent=parent,
            ident=ident,
            buffers=result_buf,
            metadata=md,
        )

    def do_apply(self, content, bufs, msg_id, reply_metadata):
        shell = self.shell
        try:
            working = shell.user_ns

            prefix = f"_{str(msg_id).replace('-', '_')}_"

            f, args, kwargs = unpack_apply_message(bufs, working, copy=False)

            fname = prefix + "f"
            argname = prefix + "args"
            kwargname = prefix + "kwargs"
            resultname = prefix + "result"

            ns = {fname: f, argname: args, kwargname: kwargs, resultname: None}
            # print ns
            working.update(ns)
            code = f"{resultname} = {fname}(*{argname}, **{kwargname})"
            try:
                exec(code, shell.user_global_ns, shell.user_ns)
                result = working.get(resultname)
            finally:
                for key in ns:
                    try:
                        working.pop(key)
                    except KeyError:
                        self.log.warning(
                            f"Failed to undefine temporary apply variable {key}, already undefined"
                        )

            result_buf = serialize_object(
                result,
                buffer_threshold=self.session.buffer_threshold,
                item_threshold=self.session.item_threshold,
            )

        except BaseException as e:
            # invoke IPython traceback formatting
            # this sends the 'error' message
            try:
                shell.showtraceback()
            except Exception as tb_error:
                self.log.error(f"Failed to show traceback for {e}: {tb_error}")

            try:
                str_evalue = str(e)
            except Exception as str_error:
                str_evalue = f"Failed to cast exception to string: {str_error}"
            reply_content = {
                'traceback': [],
                'ename': str(type(e).__name__),
                'evalue': str_evalue,
            }
            # get formatted traceback, which ipykernel recorded
            if hasattr(shell, '_last_traceback'):
                # ipykernel 4.4
                reply_content['traceback'] = shell._last_traceback or []
            else:
                self.log.warning("Didn't find a traceback where I expected to")
            shell._last_traceback = None
            reply_content["engine_info"] = self.get_engine_info(method="apply")

            self.log.info(
                "Exception in apply request:\n%s", '\n'.join(reply_content['traceback'])
            )
            result_buf = []
            reply_content['status'] = 'error'
        else:
            reply_content = {'status': 'ok'}

        return reply_content, result_buf

    async def do_execute(self, *args, **kwargs):
        super_execute = super().do_execute(*args, **kwargs)
        if inspect.isawaitable(super_execute):
            reply_content = await super_execute
        else:
            reply_content = super_execute
        # add engine info
        if reply_content['status'] == 'error':
            reply_content["engine_info"] = self.get_engine_info(method="execute")
        return reply_content

    # Control messages for msgspec extensions:

    def abort_request(self, stream, ident, parent):
        """abort a specific msg by id"""
        msg_ids = parent['content'].get('msg_ids', None)
        if isinstance(msg_ids, str):
            msg_ids = [msg_ids]
        if not msg_ids:
            f = self._abort_queues()
            if inspect.isawaitable(f):
                asyncio.ensure_future(f)
        for mid in msg_ids:
            self.aborted.add(str(mid))

        content = dict(status='ok')
        reply_msg = self.session.send(
            stream, 'abort_reply', content=content, parent=parent, ident=ident
        )
        self.log.debug("%s", reply_msg)

    def clear_request(self, stream, idents, parent):
        """Clear our namespace."""
        self.shell.reset(False)
        content = dict(status='ok')
        self.session.send(
            stream, 'clear_reply', ident=idents, parent=parent, content=content
        )
ipython-ipyparallel-14e3c43/ipyparallel/engine/log.py000066400000000000000000000011241520071063500227630ustar00rootroot00000000000000from zmq.log.handlers import PUBHandler


class EnginePUBHandler(PUBHandler):
    """A simple PUBHandler subclass that sets root_topic"""

    engine = None

    def __init__(self, engine, *args, **kwargs):
        PUBHandler.__init__(self, *args, **kwargs)
        self.engine = engine

    @property
    def root_topic(self):
        """this is a property, in case the handler is created
        before the engine gets registered with an id"""
        if isinstance(getattr(self.engine, 'id', None), int):
            return f"engine.{self.engine.id}"
        else:
            return "engine"
ipython-ipyparallel-14e3c43/ipyparallel/engine/nanny.py000066400000000000000000000233301520071063500233300ustar00rootroot00000000000000"""Engine subprocess that receives and relays signals

Currently the kernel nanny serves two purposes:

1. to relay signals to the process
2. to notice engine shutdown and promptly notify the Hub,
   rather than waiting for heartbeat failures.

This has overlapping functionality with the Cluster API,
but has key differences, justifying both existing:

- addressing single engines is not feasible with the Cluster API,
  only engine *sets*
- Cluster API can efficiently signal all engines via mpiexec
"""

import asyncio
import logging
import os
import pickle
import signal
import sys
from subprocess import PIPE, Popen
from threading import Thread

import psutil
import zmq
from jupyter_client.session import Session
from tornado.ioloop import IOLoop
from traitlets.config import Config
from zmq.eventloop.zmqstream import ZMQStream

from ipyparallel import error, util
from ipyparallel.util import local_logger


class KernelNanny:
    """Object for monitoring

    Must be child of engine

    Handles signal messages and watches Engine process for exiting
    """

    def __init__(
        self,
        *,
        pid: int,
        engine_id: int,
        control_url: str,
        registration_url: str,
        identity: bytes,
        curve_serverkey: bytes,
        curve_publickey: bytes,
        curve_secretkey: bytes,
        config: Config,
        pipe,
        log_level: int = logging.INFO,
    ):
        self.pid = pid
        self.engine_id = engine_id
        self.parent_process = psutil.Process(self.pid)
        self.control_url = control_url
        self.registration_url = registration_url
        self.identity = identity
        self.curve_serverkey = curve_serverkey
        self.curve_publickey = curve_publickey
        self.curve_secretkey = curve_secretkey
        self.config = config
        self.pipe = pipe
        util._disable_session_extract_dates()
        self.session = Session(config=self.config)

        self.log = local_logger(f"{self.__class__.__name__}.{engine_id}", log_level)
        self.log.propagate = False

        self.control_handlers = {
            "signal_request": self.signal_request,
        }
        self._finish_called = False

    def wait_for_parent_thread(self):
        """Wait for my parent to exit, then I'll notify the controller and shut down"""
        self.log.info(f"Nanny watching parent pid {self.pid}.")
        while True:
            try:
                exit_code = self.parent_process.wait(60)
            except psutil.TimeoutExpired:
                continue
            else:
                break
        self.log.critical(f"Parent {self.pid} exited with status {exit_code}.")
        self.loop.add_callback(self.finish)

    def pipe_handler(self, fd, events):
        self.log.debug(f"Pipe event {events}")
        self.loop.remove_handler(fd)
        try:
            fd.close()
        except BrokenPipeError:
            pass
        try:
            status = self.parent_process.wait(0)
        except psutil.TimeoutExpired:
            try:
                status = self.parent_process.status()
            except psutil.NoSuchProcess:
                status = "exited"

        self.log.critical(f"Pipe closed, parent {self.pid} has status: {status}")
        self.finish()

    def notify_exit(self):
        """Notify the Hub that our parent has exited"""
        self.log.info("Notifying Hub that our parent has shut down")
        s = self.context.socket(zmq.DEALER)
        # finite, nonzero LINGER to prevent hang without dropping message during exit
        s.LINGER = 3000
        util.connect(
            s,
            self.registration_url,
            curve_serverkey=self.curve_serverkey,
            curve_secretkey=self.curve_secretkey,
            curve_publickey=self.curve_publickey,
        )
        self.session.send(s, "unregistration_request", content={"id": self.engine_id})
        s.close()

    def finish(self):
        """Prepare to exit and stop our event loop."""
        if self._finish_called:
            return
        self._finish_called = True
        self.notify_exit()
        self.loop.add_callback(self.loop.stop)

    def dispatch_control(self, stream, raw_msg):
        """Dispatch message from the control scheduler

        If we have a handler registered"""
        try:
            idents, msg_frames = self.session.feed_identities(raw_msg)
        except Exception as e:
            self.log.error(f"Bad control message: {raw_msg}", exc_info=True)
            return

        try:
            msg = self.session.deserialize(msg_frames, content=True)
        except Exception:
            content = error.wrap_exception()
            self.log.error("Bad control message: %r", msg_frames, exc_info=True)
            return

        msg_type = msg['header']['msg_type']
        if msg_type.endswith("_request"):
            reply_type = msg_type[-len("_request") :]
        else:
            reply_type = "error"
        self.log.debug(f"Client {idents[-1]} requested {msg_type}")

        handler = self.control_handlers.get(msg_type, None)
        if handler is None:
            # don't have an intercept handler, relay original message to parent
            self.log.debug(f"Relaying {msg_type} {msg['header']['msg_id']}")
            self.parent_stream.send_multipart(raw_msg)
            return

        try:
            content = handler(msg['content'])
        except Exception:
            content = error.wrap_exception()
            self.log.error("Error handling request: %r", msg_type, exc_info=True)

        self.session.send(stream, reply_type, ident=idents, content=content, parent=msg)

    def dispatch_parent(self, stream, raw_msg):
        """Relay messages from parent directly to control stream"""
        self.control_stream.send_multipart(raw_msg)

    # intercept message handlers

    def signal_request(self, content):
        """Handle a signal request: send signal to parent process"""
        sig = content['sig']
        if isinstance(sig, str):
            sig = getattr(signal, sig)
        self.log.info(f"Sending signal {sig} to pid {self.pid}")
        # exception will be caught and wrapped by the caller
        self.parent_process.send_signal(sig)
        return {"status": "ok"}

    async def start(self):
        self.log.info(
            f"Starting kernel nanny for engine {self.engine_id}, pid={self.pid}, nanny pid={os.getpid()}"
        )
        self._watcher_thread = Thread(
            target=self.wait_for_parent_thread, name="WatchParent", daemon=True
        )
        self._watcher_thread.start()
        # ignore SIGINT sent to parent
        signal.signal(signal.SIGINT, signal.SIG_IGN)

        self.loop = IOLoop.current()
        self.context = zmq.Context()

        # set up control socket (connection to Scheduler)
        self.control_socket = self.context.socket(zmq.ROUTER)
        self.control_socket.identity = self.identity
        util.connect(
            self.control_socket,
            self.control_url,
            curve_serverkey=self.curve_serverkey,
        )
        self.control_stream = ZMQStream(self.control_socket)
        self.control_stream.on_recv_stream(self.dispatch_control)

        # set up relay socket (connection to parent's control socket)
        self.parent_socket = self.context.socket(zmq.DEALER)
        if self.curve_secretkey:
            self.parent_socket.setsockopt(zmq.CURVE_SERVER, 1)
            self.parent_socket.setsockopt(zmq.CURVE_SECRETKEY, self.curve_secretkey)

        port = self.parent_socket.bind_to_random_port("tcp://127.0.0.1")

        # now that we've bound, pass port to parent via AsyncResult
        self.pipe.write(f"tcp://127.0.0.1:{port}\n")
        if not sys.platform.startswith("win"):
            # watch for the stdout pipe to close
            # as a signal that our parent is shutting down
            self.loop.add_handler(
                self.pipe, self.pipe_handler, IOLoop.READ | IOLoop.ERROR
            )
        self.parent_stream = ZMQStream(self.parent_socket)
        self.parent_stream.on_recv_stream(self.dispatch_parent)

    @classmethod
    def main(cls, *args, **kwargs):
        """Main body function.

        Instantiates and starts a nanny.

        Args and keyword args passed to the constructor.

        Should be called in a subprocess.
        """
        self = cls(*args, **kwargs)
        asyncio_loop = asyncio.new_event_loop()
        asyncio_loop.run_until_complete(self.start())
        try:
            asyncio_loop.run_forever()
        finally:
            self.loop.close(all_fds=True)
            self.context.term()
            try:
                self.pipe.close()
            except BrokenPipeError:
                pass
            self.log.debug("exiting")


def start_nanny(**kwargs):
    """Start a nanny subprocess

    Returns
    -------

    nanny_url: str
      The proxied URL the engine's control socket should connect to,
      instead of connecting directly to the control Scheduler.
    """

    kwargs['pid'] = os.getpid()

    env = os.environ.copy()
    env['PYTHONUNBUFFERED'] = '1'
    p = Popen(
        [sys.executable, '-m', __name__],
        stdin=PIPE,
        stdout=PIPE,
        env=env,
        start_new_session=True,  # don't inherit signals
    )
    p.stdin.write(pickle.dumps(kwargs))
    p.stdin.close()
    out = p.stdout.readline()
    nanny_url = out.decode("utf8").strip()
    if not nanny_url:
        p.terminate()
        raise RuntimeError("nanny failed")
    # return the handle on the process
    # need to keep the pipe open for the nanny
    return nanny_url, p


def main():
    """Entrypoint from the command-line

    Loads kwargs from stdin,
    sets pipe to stdout
    """
    with os.fdopen(sys.stdin.fileno(), mode='rb') as f:
        kwargs = pickle.load(f)
    kwargs['pipe'] = sys.stdout
    KernelNanny.main(**kwargs)


if __name__ == "__main__":
    main()
ipython-ipyparallel-14e3c43/ipyparallel/error.py000066400000000000000000000176571520071063500221100ustar00rootroot00000000000000"""Classes and functions for kernel related errors and exceptions.

Inheritance diagram:

.. inheritance-diagram:: ipyparallel.error
    :parts: 3
"""

import builtins
import sys
import traceback

__docformat__ = "restructuredtext en"


class IPythonError(Exception):
    """Base exception that all of our exceptions inherit from.

    This can be raised by code that doesn't have any more specific
    information."""

    pass


class KernelError(IPythonError):
    pass


class EngineError(KernelError):
    pass


class NoEnginesRegistered(KernelError):
    """Exception for operations that require some engines, but none exist"""

    def __str__(self):
        return (
            "This operation requires engines."
            " Try client.wait_for_engines(n) to wait for engines to register."
        )


class TaskAborted(KernelError):
    pass


class TaskTimeout(KernelError):
    pass


# backward-compat: use builtin TimeoutError, but preserve `error.TimeoutError` import
TimeoutError = builtins.TimeoutError


class UnmetDependency(KernelError):
    pass


class ImpossibleDependency(UnmetDependency):
    pass


class DependencyTimeout(ImpossibleDependency):
    pass


class InvalidDependency(ImpossibleDependency):
    pass


class RemoteError(KernelError):
    """Error raised elsewhere"""

    ename = None
    evalue = None
    traceback = None
    engine_info = None

    def __init__(self, ename, evalue, traceback, engine_info=None):
        self.ename = ename
        self.evalue = evalue
        self.traceback = traceback
        self.engine_info = engine_info or {}
        self.args = (ename, evalue)

    def __repr__(self):
        engineid = self.engine_info.get('engine_id', ' ')
        return f"<{self.__class__.__name__}[{engineid}]:{self.ename}({self.evalue})>"

    def __str__(self):
        label = self._get_engine_str(self.engine_info)
        engineid = self.engine_info.get('engine_id', ' ')
        return f"{label} {self.ename}: {self.evalue}"

    @staticmethod
    def _get_engine_str(engine_info):
        if not engine_info:
            return '[Engine Exception]'
        else:
            return f"[{engine_info['engine_id']}:{engine_info['method']}]"

    def render_traceback(self):
        """render traceback to a list of lines"""
        return [self._get_engine_str(self.engine_info)] + (
            self.traceback or "No traceback available"
        ).splitlines()

    def _render_traceback_(self):
        """Special method for custom tracebacks within IPython.

        This will be called by IPython instead of displaying the local traceback.

        It should return a traceback rendered as a list of lines.
        """
        return self.render_traceback()

    def print_traceback(self, excid=None):
        """print my traceback"""
        print('\n'.join(self.render_traceback()))


class TaskRejectError(KernelError):
    """Exception to raise when a task should be rejected by an engine.

    This exception can be used to allow a task running on an engine to test
    if the engine (or the user's namespace on the engine) has the needed
    task dependencies.  If not, the task should raise this exception.  For
    the task to be retried on another engine, the task should be created
    with the `retries` argument > 1.

    The advantage of this approach over our older properties system is that
    tasks have full access to the user's namespace on the engines and the
    properties don't have to be managed or tested by the controller.
    """


class CompositeError(RemoteError):
    """Error for representing possibly multiple errors on engines"""

    tb_limit = 4  # limit on how many tracebacks to draw

    def __init__(self, message, elist):
        Exception.__init__(self, *(message, elist))
        # Don't use pack_exception because it will conflict with the .message
        # attribute that is being deprecated in 2.6 and beyond.
        self.msg = message
        self.elist = elist
        self.args = [e[0] for e in elist]

    def _get_traceback(self, ev):
        try:
            tb = ev._ipython_traceback_text
        except AttributeError:
            return 'No traceback available'
        else:
            return tb

    def __str__(self):
        s = str(self.msg)
        for en, ev, etb, ei in self.elist[: self.tb_limit]:
            engine_str = self._get_engine_str(ei)
            s = s + '\n' + engine_str + en + ': ' + str(ev)
        if len(self.elist) > self.tb_limit:
            s = s + f'\n.... {len(self.elist) - self.tb_limit} more exceptions ...'
        return s

    def __repr__(self):
        return f"CompositeError({len(self.elist)})"

    def render_traceback(self, excid=None):
        """render one or all of my tracebacks to a list of lines"""
        lines = []
        if excid is None:
            for en, ev, etb, ei in self.elist[: self.tb_limit]:
                lines.append(self._get_engine_str(ei) + ":")
                lines.extend((etb or 'No traceback available').splitlines())
                lines.append('')
            if len(self.elist) > self.tb_limit:
                lines.append(
                    f'... {len(self.elist) - self.tb_limit} more exceptions ...'
                )
        else:
            try:
                en, ev, etb, ei = self.elist[excid]
            except Exception:
                raise IndexError(f"an exception with index {excid} does not exist")
            else:
                lines.append(self._get_engine_str(ei) + ":")
                lines.extend((etb or 'No traceback available').splitlines())

        return lines

    def print_traceback(self, excid=None):
        print('\n'.join(self.render_traceback(excid)))

    def raise_exception(self, excid=0):
        try:
            en, ev, etb, ei = self.elist[excid]
        except Exception:
            raise IndexError(f"an exception with index {excid} does not exist")
        else:
            raise RemoteError(en, ev, etb, ei)


class AlreadyDisplayedError(RemoteError):
    def __init__(self, original_error):
        self.original_error = original_error
        self.n = len(self.original_error.elist)

    def __repr__(self):
        return f"<{self.__class__.__name__}({self.n} errors)>"

    def __str__(self):
        return f"{self.n} errors"

    def render_traceback(self):
        """IPython special method, short-circuit traceback display

        for raising when streaming output has already displayed errors
        """
        return [str(self)]


def collect_exceptions(rdict_or_list, method='unspecified'):
    """check a result dict for errors, and raise CompositeError if any exist.
    Passthrough otherwise."""
    elist = []
    if isinstance(rdict_or_list, dict):
        rlist = rdict_or_list.values()
    else:
        rlist = rdict_or_list
    for r in rlist:
        if isinstance(r, RemoteError):
            en, ev, etb, ei = r.ename, r.evalue, r.traceback, r.engine_info
            # Sometimes we could have CompositeError in our list.  Just take
            # the errors out of them and put them in our new list.  This
            # has the effect of flattening lists of CompositeErrors into one
            # CompositeError
            if en == 'CompositeError':
                for e in ev.elist:
                    elist.append(e)
            else:
                elist.append((en, ev, etb, ei))
    if len(elist) == 0:
        return rdict_or_list
    else:
        msg = f"one or more exceptions raised in: {method}"
        err = CompositeError(msg, elist)
        raise err


def wrap_exception(engine_info={}):
    etype, evalue, tb = sys.exc_info()
    stb = traceback.format_exception(etype, evalue, tb)
    exc_content = {
        'status': 'error',
        'traceback': stb,
        'ename': etype.__name__,
        'evalue': str(evalue),
        'engine_info': engine_info,
    }
    return exc_content


def unwrap_exception(content):
    err = RemoteError(
        content['ename'],
        content['evalue'],
        '\n'.join(content['traceback']),
        content.get('engine_info', {}),
    )
    return err
ipython-ipyparallel-14e3c43/ipyparallel/joblib.py000066400000000000000000000016601520071063500222030ustar00rootroot00000000000000"""IPython parallel backend for joblib

To enable the default view as a backend for joblib::

    import ipyparallel as ipp
    ipp.register_joblib_backend()

Or to enable a particular View you have already set up::

    view.register_joblib_backend()

At this point, you can use it with::

    with parallel_backend('ipyparallel'):
        Parallel(n_jobs=2)(delayed(some_function)(i) for i in range(10))

.. versionadded:: 5.1
"""

# Copyright (c) IPython Development Team.
# Distributed under the terms of the Modified BSD License.
from joblib.parallel import register_parallel_backend

from .client._joblib import IPythonParallelBackend


def register(name='ipyparallel', make_default=False):
    """Register the default ipyparallel Client as a joblib backend

    See joblib.parallel.register_parallel_backend for details.
    """
    return register_parallel_backend(
        name, IPythonParallelBackend, make_default=make_default
    )
ipython-ipyparallel-14e3c43/ipyparallel/logger.py000066400000000000000000000001561520071063500222200ustar00rootroot00000000000000if __name__ == '__main__':
    from ipyparallel.apps import iploggerapp as app

    app.launch_new_instance()
ipython-ipyparallel-14e3c43/ipyparallel/nbextension/000077500000000000000000000000001520071063500227215ustar00rootroot00000000000000ipython-ipyparallel-14e3c43/ipyparallel/nbextension/__init__.py000066400000000000000000000005741520071063500250400ustar00rootroot00000000000000"""Jupyter server extension(s)"""

import warnings


def load_jupyter_server_extension(app):
    warnings.warn(
        "Using ipyparallel.nbextension as server extension is deprecated in IPython Parallel 7.0. Use top-level ipyparallel.",
        DeprecationWarning,
    )
    from ipyparallel import _load_jupyter_server_extension

    return _load_jupyter_server_extension(app)
ipython-ipyparallel-14e3c43/ipyparallel/nbextension/base.py000066400000000000000000000025521520071063500242110ustar00rootroot00000000000000"""Place to put the base Handler"""

import warnings
from functools import lru_cache

_APIHandler = None


@lru_cache
def _guess_api_handler():
    """Fallback to guess API handler by availability"""
    try:
        from notebook.base.handlers import APIHandler
    except ImportError:
        from jupyter_server.base.handlers import APIHandler
    global _APIHandler
    _APIHandler = APIHandler
    return _APIHandler


def get_api_handler(app=None):
    """Get the base APIHandler class to use

    Inferred from app class (either jupyter_server or notebook app)
    """
    global _APIHandler
    if _APIHandler is not None:
        return _APIHandler
    if app is None:
        warnings.warn(
            "Guessing base APIHandler class. Specify an app to ensure the right APIHandler is used.",
            stacklevel=2,
        )
        return _guess_api_handler()

    top_modules = {cls.__module__.split(".", 1)[0] for cls in app.__class__.mro()}
    if "jupyter_server" in top_modules:
        from jupyter_server.base.handlers import APIHandler

        _APIHandler = APIHandler
        return APIHandler
    if "notebook" in top_modules:
        from notebook.base.handlers import APIHandler

        _APIHandler = APIHandler
        return APIHandler

    warnings.warn(f"Failed to detect base APIHandler class for {app}.", stacklevel=2)
    return _guess_api_handler()
ipython-ipyparallel-14e3c43/ipyparallel/nbextension/handlers.py000066400000000000000000000131061520071063500250740ustar00rootroot00000000000000"""Tornado handlers for IPython cluster web service."""

# Copyright (c) IPython Development Team.
# Distributed under the terms of the Modified BSD License.
import json
import os

try:
    from jupyter_server.utils import url_path_join as ujoin
except ImportError:
    # fallback on legacy Notebook server
    from notebook.utils import url_path_join as ujoin

from tornado import web

from ..cluster import ClusterManager
from ..util import abbreviate_profile_dir
from .base import get_api_handler

static = os.path.join(os.path.dirname(__file__), 'static')

APIHandler = get_api_handler()


class ClusterHandler(APIHandler):
    @property
    def cluster_manager(self):
        return self.settings['cluster_manager']

    def cluster_model(self, key, cluster):
        """Create a JSONable cluster model

        Adds additional fields to make things easier on the client
        """
        d = cluster.to_dict()
        profile_dir = d['cluster']['profile_dir']
        # provide abbreviated profile info
        d['cluster']['profile'] = abbreviate_profile_dir(profile_dir)

        # top-level fields, added for easier client-side logic
        # add 'id' key, since typescript is bad at key-value pairs
        # so we return a list instead of a dict
        d['id'] = key
        # add total engine count
        d['engines']['n'] = sum(es.get('n', 0) for es in d['engines']['sets'].values())
        # add cluster file
        d['cluster_file'] = cluster.cluster_file
        return d


class ClusterListHandler(ClusterHandler):
    """List and create new clusters

    GET /clusters : list current clusters
    POST / clusters (JSON body) : create a new cluster"""

    @web.authenticated
    def get(self):
        # currently reloads everything from disk. Is that what we want?
        clusters = self.cluster_manager.load_clusters(init_default_clusters=True)

        def sort_key(model):
            """Sort clusters

            order:
            - running
            - default profile
            - default cluster id
            """
            running = True if model.get("controller") else False
            profile = model['cluster']['profile']
            cluster_id = model['cluster']['cluster_id']
            default_profile = profile == 'default'
            default_cluster = cluster_id == ''

            return (
                not running,
                not default_profile,
                not default_cluster,
                profile,
                cluster_id,
            )

        self.write(
            json.dumps(
                sorted(
                    (
                        self.cluster_model(key, cluster)
                        for key, cluster in clusters.items()
                    ),
                    key=sort_key,
                )
            )
        )

    @web.authenticated
    def post(self):
        body = self.get_json_body() or {}
        self.log.info(f"Creating cluster with {body}")
        # clear null values
        for key in ('profile', 'cluster_id', 'n'):
            if key in body and body[key] in {None, ''}:
                body.pop(key)
        if 'profile' in body and os.path.sep in body['profile']:
            # if it looks like a path, use profile_dir
            body['profile_dir'] = body.pop('profile')

        if (
            'profile' in body
            and 'cluster_id' not in body
            and f"{body['profile']}:" not in self.cluster_manager.clusters
        ):
            # if no cluster exists for a profile,
            # default for no cluster id instead of random
            body["cluster_id"] = ""

        cluster_id, cluster = self.cluster_manager.new_cluster(**body)
        self.write(json.dumps(self.cluster_model(cluster_id, cluster)))


class ClusterActionHandler(ClusterHandler):
    """Actions on a single cluster

    GET: read single cluster model
    POST: start
    PATCH: engines?
    DELETE: stop
    """

    def get_cluster(self, cluster_key):
        try:
            return self.cluster_manager.get_cluster(cluster_key)
        except KeyError:
            raise web.HTTPError(404, f"No such cluster: {cluster_key}")

    @web.authenticated
    async def post(self, cluster_key):
        cluster = self.get_cluster(cluster_key)
        body = self.get_json_body() or {}
        n = body.get("n", None)
        if n is not None and not isinstance(n, int):
            raise web.HTTPError(400, f"n must be an integer, not {n!r}")
        await cluster.start_cluster(n=n)
        self.write(json.dumps(self.cluster_model(cluster_key, cluster)))

    @web.authenticated
    async def get(self, cluster_key):
        cluster = self.get_cluster(cluster_key)
        self.write(json.dumps(self.cluster_model(cluster_key, cluster)))

    @web.authenticated
    async def delete(self, cluster_key):
        cluster = self.get_cluster(cluster_key)
        await cluster.stop_cluster()
        self.cluster_manager.remove_cluster(cluster_key)
        self.set_status(204)


# URL to handler mappings


_cluster_key_regex = (
    r"(?P[^\/]+)"  # there is almost no text that is invalid
)

default_handlers = [
    (r"/ipyparallel/clusters", ClusterListHandler),
    (
        rf"/ipyparallel/clusters/{_cluster_key_regex}",
        ClusterActionHandler,
    ),
]


def load_jupyter_server_extension(nbapp):
    """Load the nbserver extension"""

    nbapp.log.info("Loading IPython parallel extension")
    webapp = nbapp.web_app
    webapp.settings['cluster_manager'] = ClusterManager(parent=nbapp)

    base_url = webapp.settings['base_url']
    webapp.add_handlers(
        ".*$", [(ujoin(base_url, pat), handler) for pat, handler in default_handlers]
    )
ipython-ipyparallel-14e3c43/ipyparallel/nbextension/install.py000066400000000000000000000016321520071063500247430ustar00rootroot00000000000000"""Install the IPython clusters tab in the Jupyter notebook dashboard

Only applicable for notebook < 7
"""

# Copyright (c) IPython Development Team.
# Distributed under the terms of the Modified BSD License.


def install_extensions(enable=True, user=False):
    """Register ipyparallel clusters tab as notebook extensions

    Toggle with enable=True/False.
    """
    import notebook  # noqa

    from notebook.nbextensions import (
        disable_nbextension,
        enable_nbextension,
        install_nbextension_python,
    )
    from notebook.serverextensions import toggle_serverextension_python

    toggle_serverextension_python('ipyparallel', user=user)
    install_nbextension_python('ipyparallel', user=user)
    if enable:
        enable_nbextension('tree', 'ipyparallel/main', user=user)
    else:
        disable_nbextension('tree', 'ipyparallel/main')


install_server_extension = install_extensions
ipython-ipyparallel-14e3c43/ipyparallel/nbextension/static/000077500000000000000000000000001520071063500242105ustar00rootroot00000000000000ipython-ipyparallel-14e3c43/ipyparallel/nbextension/static/clusterlist.css000066400000000000000000000001201520071063500272700ustar00rootroot00000000000000.action_col {
  text-align: right;
}

input.engine_num_input {
  width: 60px;
}
ipython-ipyparallel-14e3c43/ipyparallel/nbextension/static/clusterlist.js000066400000000000000000000144471520071063500271350ustar00rootroot00000000000000// Copyright (c) Jupyter Development Team.
// Distributed under the terms of the Modified BSD License.

define(["base/js/namespace", "jquery", "base/js/utils"], function (
  IPython,
  $,
  utils,
) {
  "use strict";

  // use base utils.ajax in notebook >= 4.3
  // for xsrf settings, etc.
  var ajax = utils.ajax || $.ajax;

  var ClusterList = function (selector, options) {
    this.selector = selector;
    if (this.selector !== undefined) {
      this.element = $(selector);
      this.style();
      this.bind_events();
    }
    options = options || {};
    this.options = options;
    this.base_url = options.base_url || utils.get_body_data("baseUrl");
    this.notebook_path =
      options.notebook_path || utils.get_body_data("notebookPath");
  };

  ClusterList.prototype.style = function () {
    $("#cluster_list").addClass("list_container");
    $("#cluster_toolbar").addClass("list_toolbar");
    $("#cluster_list_info").addClass("toolbar_info");
    $("#cluster_buttons").addClass("toolbar_buttons");
  };

  ClusterList.prototype.bind_events = function () {
    var that = this;
    $("#refresh_cluster_list").click(function () {
      that.load_list();
    });
  };

  ClusterList.prototype.load_list = function () {
    var settings = {
      processData: false,
      cache: false,
      type: "GET",
      dataType: "json",
      success: $.proxy(this.load_list_success, this),
      error: utils.log_ajax_error,
    };
    var url = utils.url_join_encode(this.base_url, "ipyparallel/clusters");
    ajax(url, settings);
  };

  ClusterList.prototype.clear_list = function () {
    this.element.children(".list_item").remove();
  };

  ClusterList.prototype.load_list_success = function (data, status, xhr) {
    this.clear_list();
    var len = data.length;
    for (var cluster of data) {
      var element = $("
"); var item = new ClusterItem(element, cluster, this, this.options); element.data("item", item); this.element.append(element); } }; var ClusterItem = function (element, cluster, cluster_list, options) { this.element = $(element); this.cluster_list = cluster_list; this.base_url = options.base_url || utils.get_body_data("baseUrl"); this.notebook_path = options.notebook_path || utils.get_body_data("notebookPath"); this.update_state(cluster); this.style(); }; ClusterItem.prototype.style = function () { this.element.addClass("list_item").addClass("row"); }; ClusterItem.prototype.update_state = function (cluster) { this.cluster = cluster; if (cluster.controller && cluster.controller.state) { this.state_running(); } else { this.state_stopped(); } }; ClusterItem.prototype.state_stopped = function () { var that = this; var profile_col = $("
") .addClass("profile_col col-xs-2") .text(this.cluster.cluster.profile); var cluster_id_col = $("
") .addClass("cluster_id_col col-xs-2") .text(this.cluster.cluster.cluster_id); var status_col = $("
") .addClass("status_col col-xs-3") .text("stopped"); var engines_col = $("
").addClass("engine_col col-xs-3"); var input = $("") .attr("type", "number") .attr("min", 1) .attr("style", "width: 100%") .addClass("engine_num_input form-control"); engines_col.append(input); var start_button = $("', " ", "
", "
", '
', '
', '
profile
', '
cluster id
', '
status
', '
# of engines
', '
action
', "
", "
", "
", ].join("\n"), ); function load() { if (!IPython.notebook_list) return; var base_url = IPython.notebook_list.base_url; // hide the deprecated clusters tab $("#tabs").find('[href="#clusters"]').hide(); $("head").append( $("") .attr("rel", "stylesheet") .attr("type", "text/css") .attr("href", base_url + "nbextensions/ipyparallel/clusterlist.css"), ); $(".tab-content").append(cluster_html); $("#tabs").append( $("
  • ").append( $("") .attr("href", "#ipyclusters") .attr("data-toggle", "tab") .text("IPython Clusters") .click(function (e) { window.history.pushState(null, null, "#ipyclusters"); }), ), ); var cluster_list = new clusterlist.ClusterList("#cluster_list", { base_url: IPython.notebook_list.base_url, notebook_path: IPython.notebook_list.notebook_path, }); cluster_list.load_list(); if (document.location.hash === "#ipyclusters") { // focus clusters tab once it exists // since it won't have been created when the browser first handles the document hash $("[href='#ipyclusters']").tab("show"); } } return { load_ipython_extension: load, }; }); ipython-ipyparallel-14e3c43/ipyparallel/serialize/000077500000000000000000000000001520071063500223545ustar00rootroot00000000000000ipython-ipyparallel-14e3c43/ipyparallel/serialize/__init__.py000066400000000000000000000010411520071063500244610ustar00rootroot00000000000000from .canning import ( Reference, can, can_map, uncan, uncan_map, use_cloudpickle, use_dill, use_pickle, ) from .serialize import ( PrePickled, deserialize_object, pack_apply_message, serialize_object, unpack_apply_message, ) __all__ = ( 'Reference', 'PrePickled', 'can_map', 'uncan_map', 'can', 'uncan', 'use_dill', 'use_cloudpickle', 'use_pickle', 'serialize_object', 'deserialize_object', 'pack_apply_message', 'unpack_apply_message', ) ipython-ipyparallel-14e3c43/ipyparallel/serialize/canning.py000066400000000000000000000350151520071063500243470ustar00rootroot00000000000000"""Pickle-related utilities..""" # Copyright (c) IPython Development Team. # Distributed under the terms of the Modified BSD License. import copy import functools import pickle import sys from types import FunctionType from traitlets import import_item from traitlets.log import get_logger from . import codeutil # noqa This registers a hook when it's imported def _get_cell_type(a=None): """the type of a closure cell doesn't seem to be importable, so just create one """ def inner(): return a return type(inner.__closure__[0]) cell_type = _get_cell_type() # ------------------------------------------------------------------------------- # Functions # ------------------------------------------------------------------------------- def interactive(f): """decorator for making functions appear as interactively defined. This results in the function being linked to the user_ns as globals() instead of the module globals(). """ # build new FunctionType, so it can have the right globals # interactive functions never have closures, that's kind of the point if isinstance(f, FunctionType): mainmod = __import__('__main__') f = FunctionType( f.__code__, mainmod.__dict__, f.__name__, f.__defaults__, ) # associate with __main__ for uncanning f.__module__ = '__main__' return f def use_dill(): """use dill to expand serialization support adds support for object methods and closures to serialization. """ import dill from . import serialize serialize.pickle = dill # disable special function handling, let dill take care of it can_map.pop(FunctionType, None) def use_cloudpickle(): """use cloudpickle to expand serialization support adds support for object methods and closures to serialization. """ import cloudpickle from . import serialize serialize.pickle = cloudpickle # disable special function handling, let cloudpickle take care of it can_map.pop(FunctionType, None) def use_pickle(): """revert to using stdlib pickle Reverts custom serialization enabled by use_dill|cloudpickle. """ from . import serialize serialize.pickle = pickle # restore special function handling can_map[FunctionType] = _original_can_map[FunctionType] # ------------------------------------------------------------------------------- # Classes # ------------------------------------------------------------------------------- class CannedObject: def __init__(self, obj, keys=[], hook=None): """can an object for safe pickling Parameters ---------- obj The object to be canned keys : list (optional) list of attribute names that will be explicitly canned / uncanned hook : callable (optional) An optional extra callable, which can do additional processing of the uncanned object. large data may be offloaded into the buffers list, used for zero-copy transfers. """ self.keys = keys self.obj = copy.copy(obj) self.hook = can(hook) for key in keys: setattr(self.obj, key, can(getattr(obj, key))) self.buffers = [] def get_object(self, g=None): if g is None: g = {} obj = self.obj for key in self.keys: setattr(obj, key, uncan(getattr(obj, key), g)) if self.hook: self.hook = uncan(self.hook, g) self.hook(obj, g) return self.obj class Reference(CannedObject): """object for wrapping a remote reference by name.""" def __init__(self, name): if not isinstance(name, str): raise TypeError(f"illegal name: {name!r}") self.name = name self.buffers = [] def __repr__(self): return f"" def get_object(self, g=None): if g is None: g = {} return eval(self.name, g) class CannedCell(CannedObject): """Can a closure cell""" def __init__(self, cell): self.cell_contents = can(cell.cell_contents) def get_object(self, g=None): cell_contents = uncan(self.cell_contents, g) def inner(): return cell_contents return inner.__closure__[0] class CannedFunction(CannedObject): def __init__(self, f): self._check_type(f) self.code = f.__code__ if f.__defaults__: self.defaults = [can(fd) for fd in f.__defaults__] else: self.defaults = None if f.__kwdefaults__: self.kwdefaults = can_dict(f.__kwdefaults__) else: self.kwdefaults = None if f.__annotations__: self.annotations = can_dict(f.__annotations__) else: self.annotations = None closure = f.__closure__ if closure: self.closure = tuple(can(cell) for cell in closure) else: self.closure = None self.module = f.__module__ or '__main__' self.__name__ = f.__name__ self.buffers = [] def _check_type(self, obj): assert isinstance(obj, FunctionType), "Not a function type" def get_object(self, g=None): # try to load function back into its module: if not self.module.startswith('__'): __import__(self.module) g = sys.modules[self.module].__dict__ if g is None: g = {} if self.defaults: defaults = tuple(uncan(cfd, g) for cfd in self.defaults) else: defaults = None if self.kwdefaults: kwdefaults = uncan_dict(self.kwdefaults) else: kwdefaults = None if self.annotations: annotations = uncan_dict(self.annotations) else: annotations = {} if self.closure: closure = tuple(uncan(cell, g) for cell in self.closure) else: closure = None newFunc = FunctionType(self.code, g, self.__name__, defaults, closure) if kwdefaults: newFunc.__kwdefaults__ = kwdefaults if annotations: newFunc.__annotations__ = annotations return newFunc class CannedPartial(CannedObject): def __init__(self, f): self._check_type(f) self.func = can(f.func) self.args = [can(a) for a in f.args] self.keywords = {k: can(v) for k, v in f.keywords.items()} self.buffers = [] self.arg_buffer_counts = [] self.keyword_buffer_counts = {} # consolidate buffers for canned_arg in self.args: if not isinstance(canned_arg, CannedObject): self.arg_buffer_counts.append(0) continue self.arg_buffer_counts.append(len(canned_arg.buffers)) self.buffers.extend(canned_arg.buffers) canned_arg.buffers = [] for key in sorted(self.keywords): canned_kwarg = self.keywords[key] if not isinstance(canned_kwarg, CannedObject): continue self.keyword_buffer_counts[key] = len(canned_kwarg.buffers) self.buffers.extend(canned_kwarg.buffers) canned_kwarg.buffers = [] def _check_type(self, obj): if not isinstance(obj, functools.partial): raise ValueError(f"Not a functools.partial: {obj!r}") def get_object(self, g=None): if g is None: g = {} if self.buffers: # reconstitute buffers for canned_arg, buf_count in zip(self.args, self.arg_buffer_counts): if not buf_count: continue canned_arg.buffers = self.buffers[:buf_count] self.buffers = self.buffers[buf_count:] for key in sorted(self.keyword_buffer_counts): buf_count = self.keyword_buffer_counts[key] canned_kwarg = self.keywords[key] canned_kwarg.buffers = self.buffers[:buf_count] self.buffers = self.buffers[buf_count:] assert len(self.buffers) == 0 args = [uncan(a, g) for a in self.args] keywords = {k: uncan(v, g) for k, v in self.keywords.items()} func = uncan(self.func, g) return functools.partial(func, *args, **keywords) class CannedClass(CannedObject): def __init__(self, cls): self._check_type(cls) self.name = cls.__name__ self.old_style = not isinstance(cls, type) self._canned_dict = {} for k, v in cls.__dict__.items(): if k not in ('__weakref__', '__dict__'): self._canned_dict[k] = can(v) if self.old_style: mro = [] else: mro = cls.mro() self.parents = [can(c) for c in mro[1:]] self.buffers = [] def _check_type(self, obj): assert isinstance(obj, type), "Not a class type" def get_object(self, g=None): parents = tuple(uncan(p, g) for p in self.parents) return type(self.name, parents, uncan_dict(self._canned_dict, g=g)) class CannedArray(CannedObject): def __init__(self, obj): from numpy import ascontiguousarray self.shape = obj.shape self.dtype = obj.dtype.descr if obj.dtype.fields else obj.dtype.str self.pickled = False if sum(obj.shape) == 0: self.pickled = True elif obj.dtype == 'O': # can't handle object dtype with buffer approach self.pickled = True elif obj.dtype.fields and any( dt == 'O' for dt, sz in obj.dtype.fields.values() ): self.pickled = True if self.pickled: # just pickle it from . import serialize self.buffers = [serialize.pickle.dumps(obj, serialize.PICKLE_PROTOCOL)] else: # ensure contiguous obj = ascontiguousarray(obj, dtype=None) self.buffers = [memoryview(obj)] def get_object(self, g=None): from numpy import frombuffer data = self.buffers[0] if self.pickled: from . import serialize # we just pickled it return serialize.pickle.loads(data) else: return frombuffer(data, dtype=self.dtype).reshape(self.shape) class CannedBytes(CannedObject): def __init__(self, obj): self.buffers = [obj] def get_object(self, g=None): data = self.buffers[0] return self.wrap(data) @staticmethod def wrap(data): if isinstance(data, bytes): return data else: return memoryview(data).tobytes() class CannedMemoryView(CannedBytes): wrap = memoryview CannedBuffer = CannedMemoryView # ------------------------------------------------------------------------------- # Functions # ------------------------------------------------------------------------------- def _import_mapping(mapping, original=None): """import any string-keys in a type mapping""" log = get_logger() log.debug("Importing canning map") for key, value in list(mapping.items()): if isinstance(key, str): try: cls = import_item(key) except Exception: if original and key not in original: # only message on user-added classes log.error("canning class not importable: %r", key, exc_info=True) mapping.pop(key) else: mapping[cls] = mapping.pop(key) def istype(obj, check): """like isinstance(obj, check), but strict This won't catch subclasses. """ if isinstance(check, tuple): for cls in check: if type(obj) is cls: return True return False else: return type(obj) is check def can(obj): """prepare an object for pickling""" import_needed = False for cls, canner in can_map.items(): if isinstance(cls, str): import_needed = True break elif istype(obj, cls): return canner(obj) if import_needed: # perform can_map imports, then try again # this will usually only happen once _import_mapping(can_map, _original_can_map) return can(obj) return obj def can_class(obj): if isinstance(obj, type) and obj.__module__ == '__main__': return CannedClass(obj) else: return obj def can_dict(obj): """can the *values* of a dict""" if istype(obj, dict): newobj = {} for k, v in obj.items(): newobj[k] = can(v) return newobj else: return obj sequence_types = (list, tuple, set) def can_sequence(obj): """can the elements of a sequence""" if istype(obj, sequence_types): t = type(obj) return t([can(i) for i in obj]) else: return obj def uncan(obj, g=None): """invert canning""" import_needed = False for cls, uncanner in uncan_map.items(): if isinstance(cls, str): import_needed = True break elif isinstance(obj, cls): return uncanner(obj, g) if import_needed: # perform uncan_map imports, then try again # this will usually only happen once _import_mapping(uncan_map, _original_uncan_map) return uncan(obj, g) return obj def uncan_dict(obj, g=None): if istype(obj, dict): newobj = {} for k, v in obj.items(): newobj[k] = uncan(v, g) return newobj else: return obj def uncan_sequence(obj, g=None): if istype(obj, sequence_types): t = type(obj) return t([uncan(i, g) for i in obj]) else: return obj def _uncan_dependent_hook(dep, g=None): dep.check_dependency() def can_dependent(obj): return CannedObject(obj, keys=('f', 'df'), hook=_uncan_dependent_hook) # ------------------------------------------------------------------------------- # API dictionaries # ------------------------------------------------------------------------------- # These dicts can be extended for custom serialization of new objects can_map = { 'numpy.ndarray': CannedArray, FunctionType: CannedFunction, functools.partial: CannedPartial, bytes: CannedBytes, memoryview: CannedMemoryView, cell_type: CannedCell, type: can_class, 'ipyparallel.dependent': can_dependent, } uncan_map = { CannedObject: lambda obj, g: obj.get_object(g), dict: uncan_dict, } # for use in _import_mapping: _original_can_map = can_map.copy() _original_uncan_map = uncan_map.copy() ipython-ipyparallel-14e3c43/ipyparallel/serialize/codeutil.py000066400000000000000000000040751520071063500245440ustar00rootroot00000000000000"""Utilities to enable code objects to be pickled. Any process that import this module will be able to pickle code objects. This includes the func_code attribute of any function. Once unpickled, new functions can be built using new.function(code, globals()). Eventually we need to automate all of this so that functions themselves can be pickled. Reference: A. Tremols, P Cogolo, "Python Cookbook," p 302-305 """ # Copyright (c) IPython Development Team. # Distributed under the terms of the Modified BSD License. import copyreg import inspect import sys import types def code_ctor(*args): return types.CodeType(*args) # map CodeType constructor args to code co_ attribute names # (they _almost_ all match, and new ones probably will) _code_attr_map = { "codestring": "code", "constants": "consts", } # pass every supported arg to the code constructor # this should be more forward-compatible # (broken on pypy: https://github.com/ipython/ipyparallel/issues/845) if sys.version_info >= (3, 10) and getattr(sys, "pypy_version_info", (7, 3, 19)) >= ( 7, 3, 19, ): _code_attr_names = tuple( _code_attr_map.get(name, name) for name, param in inspect.signature(types.CodeType).parameters.items() if (param.POSITIONAL_ONLY or param.POSITIONAL_OR_KEYWORD) and not (hasattr(sys, "pypy_version_info") and name == "magic") ) else: # can't inspect types.CodeType on Python < 3.10 _code_attr_names = [ "argcount", "kwonlyargcount", "nlocals", "stacksize", "flags", "code", "consts", "names", "varnames", "filename", "name", "firstlineno", "lnotab", "freevars", "cellvars", ] if hasattr(types.CodeType, "co_posonlyargcount"): _code_attr_names.insert(1, "posonlyargcount") _code_attr_names = tuple(_code_attr_names) def reduce_code(obj): """codeobject reducer""" return code_ctor, tuple(getattr(obj, f'co_{name}') for name in _code_attr_names) copyreg.pickle(types.CodeType, reduce_code) ipython-ipyparallel-14e3c43/ipyparallel/serialize/serialize.py000066400000000000000000000144241520071063500247220ustar00rootroot00000000000000"""serialization utilities for apply messages""" # Copyright (c) IPython Development Team. # Distributed under the terms of the Modified BSD License. import pickle try: PICKLE_PROTOCOL = pickle.DEFAULT_PROTOCOL except AttributeError: PICKLE_PROTOCOL = pickle.HIGHEST_PROTOCOL from itertools import chain from jupyter_client.session import MAX_BYTES, MAX_ITEMS from .canning import ( CannedObject, can, can_sequence, istype, sequence_types, uncan, uncan_sequence, ) # ----------------------------------------------------------------------------- # Serialization Functions # ----------------------------------------------------------------------------- class PrePickled: """Wrapper for a pre-pickled object Used for pre-emptively pickling re-used objects to avoid pickling the same object several times. """ def __init__(self, obj): self.buffers = serialize_object(obj) def _nbytes(buf): """Return byte-size of a memoryview or buffer""" if isinstance(buf, memoryview): return buf.nbytes else: # not a memoryview, raw bytes return len(buf) def _extract_buffers(obj, threshold=MAX_BYTES): """extract buffers larger than a certain threshold""" buffers = [] if isinstance(obj, CannedObject) and obj.buffers: for i, buf in enumerate(obj.buffers): nbytes = _nbytes(buf) if nbytes > threshold: # buffer larger than threshold, prevent pickling obj.buffers[i] = None buffers.append(buf) # buffer too small for separate send, coerce to bytes # because pickling buffer objects just results in broken pointers elif isinstance(buf, memoryview): obj.buffers[i] = buf.tobytes() return buffers def _restore_buffers(obj, buffers): """restore buffers extracted by _extract_buffers""" if isinstance(obj, CannedObject) and obj.buffers: for i, buf in enumerate(obj.buffers): if buf is None: obj.buffers[i] = buffers.pop(0) def serialize_object(obj, buffer_threshold=MAX_BYTES, item_threshold=MAX_ITEMS): """Serialize an object into a list of sendable buffers. Parameters ---------- obj : object The object to be serialized buffer_threshold : int The threshold (in bytes) for pulling out data buffers to avoid pickling them. item_threshold : int The maximum number of items over which canning will iterate. Containers (lists, dicts) larger than this will be pickled without introspection. Returns ------- [bufs] : list of buffers representing the serialized object. """ if isinstance(obj, PrePickled): return obj.buffers[:] buffers = [] if istype(obj, sequence_types) and len(obj) < item_threshold: cobj = can_sequence(obj) for c in cobj: buffers.extend(_extract_buffers(c, buffer_threshold)) elif istype(obj, dict) and len(obj) < item_threshold: cobj = {} for k in sorted(obj): c = can(obj[k]) buffers.extend(_extract_buffers(c, buffer_threshold)) cobj[k] = c else: cobj = can(obj) buffers.extend(_extract_buffers(cobj, buffer_threshold)) buffers.insert(0, pickle.dumps(cobj, PICKLE_PROTOCOL)) return buffers def deserialize_object(buffers, g=None): """reconstruct an object serialized by serialize_object from data buffers. Parameters ---------- buffers : list of buffers/bytes g : globals to be used when uncanning Returns ------- (newobj, bufs) : unpacked object, and the list of remaining unused buffers. """ bufs = list(buffers) pobj = bufs.pop(0) canned = pickle.loads(pobj) if istype(canned, sequence_types) and len(canned) < MAX_ITEMS: for c in canned: _restore_buffers(c, bufs) newobj = uncan_sequence(canned, g) elif istype(canned, dict) and len(canned) < MAX_ITEMS: newobj = {} for k in sorted(canned): c = canned[k] _restore_buffers(c, bufs) newobj[k] = uncan(c, g) else: _restore_buffers(canned, bufs) newobj = uncan(canned, g) return newobj, bufs def pack_apply_message( f, args, kwargs, buffer_threshold=MAX_BYTES, item_threshold=MAX_ITEMS ): """pack up a function, args, and kwargs to be sent over the wire Each element of args/kwargs will be canned for special treatment, but inspection will not go any deeper than that. Any object whose data is larger than `threshold` will not have their data copied (only numpy arrays and bytes/buffers support zero-copy) Message will be a list of bytes/buffers of the format: [ cf, pinfo, , ] With length at least two + len(args) + len(kwargs) """ arg_bufs = list( chain.from_iterable( serialize_object(arg, buffer_threshold, item_threshold) for arg in args ) ) kw_keys = sorted(kwargs.keys()) kwarg_bufs = list( chain.from_iterable( serialize_object(kwargs[key], buffer_threshold, item_threshold) for key in kw_keys ) ) info = dict(nargs=len(args), narg_bufs=len(arg_bufs), kw_keys=kw_keys) msg = serialize_object(f) msg.append(pickle.dumps(info, PICKLE_PROTOCOL)) msg.extend(arg_bufs) msg.extend(kwarg_bufs) return msg def unpack_apply_message(bufs, g=None, copy=True): """unpack f,args,kwargs from buffers packed by pack_apply_message() Returns: original f,args,kwargs""" bufs = list(bufs) # allow us to pop assert len(bufs) >= 2, "not enough buffers!" f, bufs = deserialize_object(bufs, g) pinfo = bufs.pop(0) info = pickle.loads(pinfo) arg_bufs, kwarg_bufs = bufs[: info['narg_bufs']], bufs[info['narg_bufs'] :] args = [] for i in range(info['nargs']): arg, arg_bufs = deserialize_object(arg_bufs, g) args.append(arg) args = tuple(args) assert not arg_bufs, "Shouldn't be any arg bufs left over" kwargs = {} for key in info['kw_keys']: kwarg, kwarg_bufs = deserialize_object(kwarg_bufs, g) kwargs[key] = kwarg assert not kwarg_bufs, "Shouldn't be any kwarg bufs left over" return f, args, kwargs ipython-ipyparallel-14e3c43/ipyparallel/shellcmd.py000066400000000000000000000057721520071063500225450ustar00rootroot00000000000000#!/usr/bin/env python """ Commandline interface to OS independent shell commands Currently the following command are supported: * start: starts a process into background and returns its pid * running: check if a process with a given pid is running * kill: kill a process with a given pid * mkdir: creates directory recursively (no error if directory already exists) * rmdir: remove directory recursively * exists: checks if a file/directory exists * remove: removes a file """ import os import sys from argparse import ArgumentParser from .cluster.shellcmd import ShellCommandReceive def main(): parser = ArgumentParser( description='Perform some standard shell command in a platform independent way' ) parser.add_argument( '--debug', action='store_true', help='append command line parameters to \'sys_arg.txt\'', ) subparsers = parser.add_subparsers(dest='cmd', help='sub-command help') # create the parser for the "a" command parser_start = subparsers.add_parser( 'start', help='start a process into background' ) parser_start.add_argument('--env', help='optional environment dictionary') parser_start.add_argument( '--output_file', help='optional output redirection (for stdout and stderr)' ) parser_start.add_argument('start_cmd', nargs='+', help='command that help') parser_running = subparsers.add_parser( 'running', help='check if a process is running' ) parser_running.add_argument( 'pid', type=int, help='pid of process that should be checked' ) parser_kill = subparsers.add_parser('kill', help='kill a process') parser_kill.add_argument( 'pid', type=int, help='pid of process that should be killed' ) parser_kill.add_argument('--sig', type=int, help='signals to send') parser_mkdir = subparsers.add_parser('mkdir', help='create directory recursively') parser_mkdir.add_argument('path', help='directory path to be created') parser_rmdir = subparsers.add_parser('rmdir', help='remove directory recursively') parser_rmdir.add_argument('path', help='directory path to be removed') parser_exists = subparsers.add_parser( 'exists', help='checks if a file/directory exists' ) parser_exists.add_argument('path', help='path to check') parser_remove = subparsers.add_parser('remove', help='removes a file') parser_remove.add_argument('path', help='path to remove') if len(sys.argv) == 1: parser.print_help() sys.exit(0) args = parser.parse_args() cmd = args.__dict__.pop('cmd') if args.debug: with open("sys_arg.txt", "a") as f: f.write(f"'{__file__}' started in '{os.getcwd()}':\n") for idx, arg in enumerate(sys.argv[1:]): f.write(f"\t{idx}:{arg}$\n") del args.debug receiver = ShellCommandReceive() with receiver as r: recevier_method = getattr(r, f"cmd_{cmd}") recevier_method(**vars(args)) if __name__ == '__main__': main() ipython-ipyparallel-14e3c43/ipyparallel/tests/000077500000000000000000000000001520071063500215275ustar00rootroot00000000000000ipython-ipyparallel-14e3c43/ipyparallel/tests/__init__.py000066400000000000000000000101251520071063500236370ustar00rootroot00000000000000"""toplevel setup/teardown for parallel tests.""" import asyncio import os import time from subprocess import Popen from IPython.paths import get_ipython_dir from ipyparallel import Client, error from ipyparallel.cluster.launcher import ( SIGKILL, LocalProcessLauncher, ProcessStateError, ipcontroller_cmd_argv, ipengine_cmd_argv, ) # Copyright (c) IPython Development Team. # Distributed under the terms of the Modified BSD License. # globals launchers = [] # Launcher class class TestProcessLauncher(LocalProcessLauncher): """subclass LocalProcessLauncher, to prevent extra sockets and threads being created on Windows""" def start(self): if self.state == 'before': # Store stdout & stderr to show with failing tests. # This is defined in IPython.testing.iptest self.process = Popen(self.args, env=os.environ, cwd=self.work_dir) self.notify_start(self.process.pid) self.poll = self.process.poll else: s = f'The process was already started and has state: {self.state!r}' raise ProcessStateError(s) # show tracebacks for RemoteErrors class RemoteErrorWithTB(error.RemoteError): def __str__(self): s = super().__str__() return '\n'.join([s, self.traceback or '']) # global setup/teardown def setup(): error.RemoteError = RemoteErrorWithTB cluster_dir = os.path.join(get_ipython_dir(), 'profile_iptest') engine_json = os.path.join(cluster_dir, 'security', 'ipcontroller-engine.json') client_json = os.path.join(cluster_dir, 'security', 'ipcontroller-client.json') for json in (engine_json, client_json): if os.path.exists(json): os.remove(json) cp = TestProcessLauncher() cp.cmd_and_args = ipcontroller_cmd_argv + [ '--profile=iptest', '--log-level=10', '--ping=250', '--dictdb', ] if os.environ.get("IPP_CONTROLLER_IP"): cp.cmd_and_args.append(f"--ip={os.environ['IPP_CONTROLLER_IP']}") cp.start() launchers.append(cp) tic = time.time() while not os.path.exists(engine_json) or not os.path.exists(client_json): if cp.poll() is not None: raise RuntimeError(f"The test controller exited with status {cp.poll()}") elif time.time() - tic > 15: raise RuntimeError("Timeout waiting for the test controller to start.") time.sleep(0.1) add_engines(1) def add_engines(n=1, profile='iptest', total=False): """add a number of engines to a given profile. If total is True, then already running engines are counted, and only the additional engines necessary (if any) are started. """ rc = Client(profile=profile) base = len(rc) if total: n = max(n - base, 0) eps = [] for i in range(n): ep = TestProcessLauncher() ep.cmd_and_args = ipengine_cmd_argv + [ f'--profile={profile}', '--InteractiveShell.colors=nocolor', '--log-level=10', ] ep.start() launchers.append(ep) eps.append(ep) tic = time.time() while len(rc) < base + n: if any([ep.poll() is not None for ep in eps]): raise RuntimeError("A test engine failed to start.") elif time.time() - tic > 15: raise RuntimeError("Timeout waiting for engines to connect.") time.sleep(0.1) rc.close() return eps def teardown(): try: time.sleep(1) except KeyboardInterrupt: return while launchers: p = launchers.pop() if p.poll() is None: try: f = p.stop() if f: asyncio.run(f) except Exception as e: print(e) pass if p.poll() is None: try: time.sleep(0.25) except KeyboardInterrupt: return if p.poll() is None: try: print('cleaning up test process...') p.signal(SIGKILL) except Exception: print("couldn't shutdown process: ", p) ipython-ipyparallel-14e3c43/ipyparallel/tests/_test_startup_crash.py000066400000000000000000000001311520071063500261540ustar00rootroot00000000000000import os import time time.sleep(int(os.environ.get("CRASH_DELAY") or "1")) os._exit(1) ipython-ipyparallel-14e3c43/ipyparallel/tests/clienttest.py000066400000000000000000000131541520071063500242630ustar00rootroot00000000000000"""base class for parallel client tests""" import os import signal import sys import time import warnings from contextlib import contextmanager import pytest import zmq from decorator import decorator from ipyparallel import Client, error from ipyparallel.tests import add_engines, launchers # simple tasks for use in apply tests def segfault(): """this will segfault""" import ctypes ctypes.memset(-1, 0, 1) def crash(): """Ungracefully exit the process""" os._exit(1) def conditional_crash(condition): """Ungracefully exit the process""" if condition: crash() def wait(n): """sleep for a time""" import time time.sleep(n) return n def raiser(eclass): """raise an exception""" raise eclass() def generate_output(): """function for testing output publishes two outputs of each type, and returns a rich displayable object. """ from IPython.display import HTML, Math, display print("stdout") print("stderr", file=sys.stderr) display(HTML("HTML")) print("stdout2") print("stderr2", file=sys.stderr) display(Math(r"\alpha=\beta")) return Math("42") # test decorator for skipping tests when libraries are unavailable def skip_without(*names): """skip a test if some names are not importable""" @decorator def skip_without_names(f, *args, **kwargs): """decorator to skip tests in the absence of numpy, etc.""" for name in names: try: __import__(name) except ImportError: pytest.skip(f"Test requires {name}") except Exception as e: warnings.warn(f"Unexpected exception importing {name}: {e}") pytest.skip(f"Test requires {name}") return f(*args, **kwargs) return skip_without_names @contextmanager def raises_remote(etype): if isinstance(etype, str): # allow Exception or 'Exception' expected_ename = etype else: expected_ename = etype.__name__ try: try: yield except error.AlreadyDisplayedError as e: e.original_error.raise_exception() except error.CompositeError as e: e.raise_exception() except error.RemoteError as e: tb = '\n'.join(e.render_traceback()) assert expected_ename == e.ename, ( f"Should have raised {expected_ename}, but raised {e.ename}:\n{tb}" ) else: pytest.fail("should have raised a RemoteError") # ------------------------------------------------------------------------------- # Classes # ------------------------------------------------------------------------------- @pytest.mark.usefixtures("cluster") class ClusterTestCase: timeout = 10 engine_count = 2 def add_engines(self, n=1, block=True): """add multiple engines to our cluster""" self.engines.extend(add_engines(n)) if block: self.wait_on_engines() def minimum_engines(self, n=1, block=True): """add engines until there are at least n connected""" self.engines.extend(add_engines(n, total=True)) if block: self.wait_on_engines() def wait_on_engines(self, timeout=5): """wait for our engines to connect.""" n = len(self.engines) + self.base_engine_count self.client.wait_for_engines(n, timeout=timeout) assert not len(self.client.ids) < n, "waiting for engines timed out" def client_wait(self, client, jobs=None, timeout=-1): """my wait wrapper, sets a default finite timeout to avoid hangs""" if timeout is None or timeout < 0: timeout = self.timeout return Client.wait(client, jobs, timeout) def connect_client(self): """connect a client with my Context, and track its sockets for cleanup""" c = Client(profile='iptest', context=self.context) c.wait = lambda *a, **kw: self.client_wait(c, *a, **kw) return c def assertRaisesRemote(self, etype, f, *args, **kwargs): with raises_remote(etype): f(*args, **kwargs) def _wait_for(self, f, timeout=10): """wait for a condition""" tic = time.time() while time.time() <= tic + timeout: if f(): return time.sleep(0.1) if not f(): print("Warning: Awaited condition never arrived") test_timeout = 30 def setup_method(self): self.context = zmq.Context.instance() if hasattr(signal, 'SIGALRM'): # use sigalarm for test timeout def _sigalarm(sig, frame): raise TimeoutError( f"test did not finish in {self.test_timeout} seconds" ) signal.signal(signal.SIGALRM, _sigalarm) signal.alarm(self.test_timeout) add_engines(self.engine_count, total=True) self.client = self.connect_client() # start every test with clean engine namespaces: self.client.clear(block=True) self.base_engine_count = len(self.client.ids) self.engines = [] def teardown_method(self): if len(self.client): self.client[:].use_pickle() # self.client.clear(block=True) # close fds: for e in filter(lambda e: e.poll() is not None, launchers): launchers.remove(e) # allow flushing of incoming messages to prevent crash on socket close self.client.wait(timeout=2) self.client.close() if hasattr(signal, 'SIGALRM'): signal.alarm(0) signal.signal(signal.SIGALRM, signal.SIG_DFL) self.context.destroy() ipython-ipyparallel-14e3c43/ipyparallel/tests/conftest.py000066400000000000000000000152211520071063500237270ustar00rootroot00000000000000"""pytest fixtures""" import inspect import logging import os import sys from contextlib import contextmanager from pathlib import Path from subprocess import check_output from tempfile import NamedTemporaryFile, TemporaryDirectory from textwrap import dedent from unittest import mock import IPython.paths import pytest import zmq from IPython.core.profiledir import ProfileDir from IPython.terminal.interactiveshell import TerminalInteractiveShell from traitlets.config import Config import ipyparallel as ipp from . import setup, teardown def default_config(): """Return a config object with good defaults for testing.""" config = Config() config.TerminalInteractiveShell.colors = 'NoColor' config.TerminalTerminalInteractiveShell.term_title = (False,) config.TerminalInteractiveShell.autocall = 0 f = NamedTemporaryFile(suffix='test_hist.sqlite', delete=False) config.HistoryManager.hist_file = str(Path(f.name)) f.close() config.HistoryManager.db_cache_size = 10000 return config @contextmanager def temporary_ipython_dir(prefix=None): # FIXME: cleanup has issues on Windows # this is *probably* a real bug of holding open files, # but it is preventing feedback about test failures td_obj = TemporaryDirectory(suffix=".ipython", prefix=prefix) td = td_obj.name with mock.patch.dict(os.environ, {"IPYTHONDIR": td}): assert IPython.paths.get_ipython_dir() == td pd = ProfileDir.create_profile_dir_by_name(td, name="default") # configure fast heartbeats for quicker tests with small numbers of local engines with open(os.path.join(pd.location, "ipcontroller_config.py"), "w") as f: f.write("c.HeartMonitor.period = 200") try: yield td finally: try: td_obj.cleanup() except Exception as e: print(f"Failed to cleanup {td}: {e}", file=sys.stderr) @pytest.fixture(autouse=True, scope="module") def ipython_dir(request): with temporary_ipython_dir() as ipython_dir: yield ipython_dir def pytest_collection_modifyitems(items): """This function is automatically run by pytest passing all collected test functions. We use it to add asyncio marker to all async tests and assert we don't use test functions that are async generators which wouldn't make sense. """ for item in items: if inspect.iscoroutinefunction(item.obj): item.add_marker('asyncio') assert not inspect.isasyncgenfunction(item.obj) @pytest.fixture(scope="module") def cluster(request, ipython_dir): """Setup IPython parallel cluster""" setup() try: yield finally: teardown() @pytest.fixture(scope='module') def ipython(ipython_dir): config = default_config() config.TerminalInteractiveShell.simple_prompt = True shell = TerminalInteractiveShell.instance(config=config) yield shell TerminalInteractiveShell.clear_instance() @pytest.fixture() def ipython_interactive(request, ipython): """Activate IPython's builtin hooks for the duration of the test scope. """ with ipython.builtin_trap: yield ipython @pytest.fixture(autouse=True) def Context(): ctx = zmq.Context.instance() try: yield ctx finally: ctx.destroy() @pytest.fixture def engine_launcher_class(): """override to test an alternate launcher""" return 'local' @pytest.fixture def controller_launcher_class(): """override to test an alternate launcher""" return 'local' @pytest.fixture def cluster_config(): """Override to set default cluster config""" return Config() @pytest.fixture def Cluster( request, ipython_dir, controller_launcher_class, engine_launcher_class, cluster_config, ): """Fixture for instantiating Clusters""" def ClusterConstructor(**kwargs): log = logging.getLogger(__file__) log.setLevel(logging.DEBUG) log.handlers = [logging.StreamHandler(sys.stdout)] kwargs['log'] = log kwargs.setdefault("controller", controller_launcher_class) kwargs.setdefault("engines", engine_launcher_class) cfg = kwargs.setdefault("config", cluster_config) cfg.EngineLauncher.engine_args = ['--log-level=10'] cfg.ControllerLauncher.controller_args = ['--log-level=10'] kwargs.setdefault("controller_args", ['--ping=250']) kwargs.setdefault("load_profile", False) c = ipp.Cluster(**kwargs) if not kwargs['load_profile']: assert c.config == cfg request.addfinalizer(c.stop_cluster_sync) return c yield ClusterConstructor @pytest.fixture(scope="session") def ssh_dir(request): """Start the ssh service with docker-compose Fixture returns the directory """ repo_root = os.path.abspath(os.path.join(ipp.__file__, os.pardir, os.pardir)) ci_directory = os.environ.get("CI_DIR", os.path.join(repo_root, 'ci')) ssh_dir = os.path.join(ci_directory, "ssh") # only run ssh test if service was started before if os.name == "nt": yaml_file = "win_docker-compose.yaml" else: yaml_file = "docker-compose.yaml" try: out = check_output( ['docker', 'compose', '-f', yaml_file, 'ps', '-q'], cwd=ssh_dir ) except Exception: pytest.skip("Needs docker compose") else: if not out.strip(): pytest.skip("ssh service not running") # below is necessary for building/starting service as part of fixture # currently we use whether the service is already started to decide whether to run the tests # # build image # check_call(["docker-compose", "build"], cwd=ssh_dir) # # launch service # check_call(["docker-compose", "up", "-d"], cwd=ssh_dir) # # shutdown service when we exit # request.addfinalizer(lambda: check_call(["docker-compose", "down"], cwd=ssh_dir)) return ssh_dir @pytest.fixture def ssh_key(tmpdir, ssh_dir): key_file = tmpdir.join("id_rsa") home = "C:/Users/ciuser" if sys.platform.startswith("win") else "/home/ciuser" # docker cp not available on Windows # exec a command that outputs to stdout key_content = check_output( [ 'docker', 'exec', '-i', 'ssh-sshd-1', 'python', '-c', dedent(f""" from pathlib import Path with Path('{home}/.ssh/id_rsa').expanduser().open() as f: print(f.read()) """), ], text=True, ) assert 'PRIVATE KEY' in key_content with key_file.open("w") as f: f.write(key_content) os.chmod(key_file, 0o600) return str(key_file) ipython-ipyparallel-14e3c43/ipyparallel/tests/test_apps.py000066400000000000000000000155151520071063500241120ustar00rootroot00000000000000"""Test CLI application behavior""" import glob import json import os import sys import time import types from subprocess import Popen, check_call, check_output from unittest.mock import MagicMock, create_autospec, patch import pytest import zmq from ipykernel import kernelapp from ipykernel.ipkernel import IPythonKernel from IPython.core.profiledir import ProfileDir import ipyparallel as ipp import ipyparallel.engine.app def _get_output(cmd): out = check_output(cmd) if isinstance(out, bytes): out = out.decode('utf8', 'replace') return out @pytest.mark.parametrize( "submod", [ "cluster", "engine", "controller", ], ) def test_version(submod): out = _get_output([sys.executable, '-m', f'ipyparallel.{submod}', '--version']) assert out.strip() == ipyparallel.__version__ @pytest.mark.parametrize( "submod", [ "cluster", "engine", "controller", ], ) def test_help_all(submod): out = _get_output([sys.executable, '-m', f'ipyparallel.{submod}', '--help-all']) @pytest.mark.parametrize( "subcommand", [ "list", "engines", "start", "stop", "clean", ], ) def test_ipcluster_help_all(subcommand): out = _get_output( [sys.executable, '-m', 'ipyparallel.cluster', subcommand, '--help-all'] ) def bind_kernel(engineapp): app = engineapp.kernel_app app.shell_port = app.iopub_port = app.control_port = app.stdin_port = 0 app._bind_socket = types.MethodType(kernelapp.IPKernelApp._bind_socket, app) if hasattr(kernelapp.IPKernelApp, '_try_bind_socket'): app._try_bind_socket = types.MethodType( kernelapp.IPKernelApp._try_bind_socket, app, ) app.transport = 'tcp' app.ip = '127.0.0.1' app.init_heartbeat.return_value = None engineapp.bind_kernel() def test_bind_kernel(request): ctx = zmq.Context.instance() request.addfinalizer(ctx.destroy) class MockIPEngineApp(ipyparallel.engine.app.IPEngine): kernel = None context = ctx app = MockIPEngineApp() app.kernel_app = MagicMock(spec=kernelapp.IPKernelApp) # kernelapp.IPKernelApp._instance = app.kernel_app app.kernel = MagicMock(spec=IPythonKernel) def socket_spec(): spec = create_autospec(zmq.Socket, instance=True) spec.FD = 2 return spec app.shell_socket = socket_spec() app.control_socket = socket_spec() app.iopub_socket = socket_spec() bind_kernel(app) assert ( app.iopub_socket.bind_to_random_port.called and app.iopub_socket.bind_to_random_port.call_count == 1 ) def ipcluster_list(*args): return check_output( [sys.executable, "-m", "ipyparallel.cluster", "list"] + list(args) ).decode("utf8", "replace") def test_ipcluster_list(Cluster): # no clusters out = ipcluster_list() assert len(out.splitlines()) == 1 out = ipcluster_list("-o", "json") assert json.loads(out) == [] with Cluster(n=2) as rc: out = ipcluster_list() head, *rest = out.strip().splitlines() assert len(rest) == 1 assert rest[0].split() == [ "default", rc.cluster.cluster_id, "True", "2", "Local", ] cluster_list = json.loads(ipcluster_list("-o", "json")) assert len(cluster_list) == 1 assert cluster_list[0]['cluster']['cluster_id'] == rc.cluster.cluster_id # after exit, back to no clusters out = ipcluster_list() assert len(out.splitlines()) == 1 out = ipcluster_list("-o", "json") assert json.loads(out) == [] @pytest.mark.parametrize("daemonize", (False, True)) def test_ipcluster_start_stop(request, ipython_dir, daemonize): default_profile = ProfileDir.find_profile_dir_by_name(ipython_dir) default_profile_dir = default_profile.location # cleanup the security directory to avoid leaking files from one test to the next def cleanup_security(): for f in glob.glob(os.path.join(default_profile.security_dir, "*.json")): print(f"Cleaning up {f}") try: os.remove(f) except Exception as e: print(f"Error removing {f}: {e}") request.addfinalizer(cleanup_security) n = 2 start_args = ["-n", str(n)] if daemonize: start_args.append("--daemonize") start = Popen( [sys.executable, "-m", "ipyparallel.cluster", "start", "--debug"] + start_args ) request.addfinalizer(start.terminate) if daemonize: # if daemonize, should exit after starting start.wait(30) else: # wait for file to appear # only need this if not daemonize cluster_file = ipp.Cluster( profile_dir=default_profile_dir, cluster_id="" ).cluster_file for i in range(100): if os.path.isfile(cluster_file) or start.poll() is not None: break else: time.sleep(0.1) assert os.path.isfile(cluster_file) # list should show a file out = ipcluster_list() assert len(out.splitlines()) == 2 # cluster running, try to connect with default args cluster = ipp.Cluster.from_file(log_level=10) try: with cluster.connect_client_sync() as rc: rc.wait_for_engines(n=2, timeout=60) rc[:].apply_async(os.getpid).get(timeout=10) except Exception: print("controller output") print(cluster.controller.get_output()) print("engine output") for engine_set in cluster.engines.values(): print(engine_set.get_output()) raise # stop with ipcluster stop check_call([sys.executable, "-m", "ipyparallel.cluster", "stop"]) # start should exit when this happens start.wait(30) # and ipcluster list should return empty out = ipcluster_list() assert len(out.splitlines()) == 1 # stop all succeeds even if there's nothing to stop check_call([sys.executable, "-m", "ipyparallel.cluster", "stop", "--all"]) def test_ipcluster_clean(ipython_dir): default_profile = ProfileDir.find_profile_dir_by_name(ipython_dir) default_profile_dir = default_profile.location log_file = os.path.join(default_profile.log_dir, "test.log") with open(log_file, "w") as f: f.write("logsssss") cluster_file = os.path.join(default_profile.security_dir, "cluster-abc.json") c = ipp.Cluster() with open(cluster_file, 'w') as f: json.dump(c.to_dict(), f) connection_file = os.path.join( default_profile.security_dir, "ipcontroller-client.json" ) with open(connection_file, 'w') as f: f.write("{}") check_call([sys.executable, "-m", "ipyparallel.cluster", "clean"]) assert not os.path.exists(log_file) assert not os.path.exists(cluster_file) assert not os.path.exists(connection_file) ipython-ipyparallel-14e3c43/ipyparallel/tests/test_async.py000066400000000000000000000016511520071063500242600ustar00rootroot00000000000000"""tests for async utilities""" import pytest from ipyparallel._async import AsyncFirst class A(AsyncFirst): a = 5 def sync_method(self): return 'sync' async def async_method(self): return 'async' def test_async_first_dir(): a = A() attrs = sorted(dir(a)) real_attrs = [a for a in attrs if not a.startswith("_")] assert real_attrs == ['a', 'async_method', 'async_method_sync', 'sync_method'] def test_getattr(): a = A() assert a.a == 5 with pytest.raises(AttributeError): a.a_sync with pytest.raises(AttributeError): a.some_other_sync with pytest.raises(AttributeError): a.sync_method_sync def test_sync_no_asyncio(): a = A() assert a.async_method_sync() == 'async' assert a._async_thread is None async def test_sync_asyncio(): a = A() assert a.async_method_sync() == 'async' assert a._async_thread is not None ipython-ipyparallel-14e3c43/ipyparallel/tests/test_asyncresult.py000066400000000000000000000456411520071063500255260ustar00rootroot00000000000000"""Tests for asyncresult.py""" # Copyright (c) IPython Development Team. # Distributed under the terms of the Modified BSD License. import os import time from datetime import datetime import pytest from IPython.utils.io import capture_output import ipyparallel as ipp from ipyparallel import error from .clienttest import ClusterTestCase, raises_remote def wait(n): import time time.sleep(n) return n def echo(x): return x class TestAsyncResult(ClusterTestCase): def test_single_result_view(self): """various one-target views get the right value for single_result""" eid = self.client.ids[-1] ar = self.client[eid].apply_async(lambda: 42) assert ar.get() == 42 ar = self.client[[eid]].apply_async(lambda: 42) assert ar.get() == [42] ar = self.client[-1:].apply_async(lambda: 42) assert ar.get() == [42] def test_get_after_done(self): ar = self.client[-1].apply_async(lambda: 42) ar.wait() assert ar.ready() assert ar.get() == 42 assert ar.get() == 42 def test_get_before_done(self): ar = self.client[-1].apply_async(wait, 0.1) with pytest.raises(TimeoutError): ar.get(0) ar.wait(0) assert not ar.ready() assert ar.get() == 0.1 def test_get_after_error(self): ar = self.client[-1].apply_async(lambda: 1 / 0) ar.wait(10) with raises_remote(ZeroDivisionError): ar.get() with raises_remote(ZeroDivisionError): ar.get() with raises_remote(ZeroDivisionError): ar.get_dict() def test_get_dict(self): n = len(self.client) ar = self.client[:].apply_async(lambda: 5) assert ar.get() == [5] * n d = ar.get_dict() assert sorted(d.keys()) == sorted(self.client.ids) for eid, r in d.items(): assert r == 5 def test_get_dict_single(self): view = self.client[-1] for v in (list(range(5)), 5, ('abc', 'def'), 'string'): ar = view.apply_async(echo, v) assert ar.get() == v d = ar.get_dict() assert d == {view.targets: v} def test_get_dict_bad(self): v = self.client.load_balanced_view() amr = v.map_async(lambda x: x, range(len(self.client) * 2)) with pytest.raises(ValueError): amr.get_dict() def test_iter_amr(self): ar = self.client.load_balanced_view().map_async(wait, [0.125] * 5) for r in ar: assert r == 0.125 def test_iter_multi_result_ar(self): ar = self.client[:].apply(wait, 0.125) for r in ar: assert r == 0.125 def test_iter_error(self): amr = self.client[:].map_async(lambda x: 1 / (x - 2), range(5)) # iterating through failing AMR should raise RemoteError with raises_remote(ZeroDivisionError): list(amr) # so should get with raises_remote(ZeroDivisionError): amr.get() amr.wait(10) # test iteration again after everything is local with raises_remote(ZeroDivisionError): list(amr) def test_getattr(self): ar = self.client[:].apply_async(wait, 0.5) assert ar.completed == [None] * len(ar) with pytest.raises(AttributeError): ar._foo with pytest.raises(AttributeError): ar.__length_hint__() with pytest.raises(AttributeError): ar.foo assert not hasattr(ar, '__length_hint__') assert not hasattr(ar, 'foo') assert hasattr(ar, 'engine_id') ar.get(5) with pytest.raises(AttributeError): ar._foo with pytest.raises(AttributeError): ar.__length_hint__() with pytest.raises(AttributeError): ar.foo assert isinstance(ar.engine_id, list) assert ar.engine_id == ar['engine_id'] assert not hasattr(ar, '__length_hint__') assert not hasattr(ar, 'foo') assert hasattr(ar, 'engine_id') def test_getitem(self): ar = self.client[:].apply_async(wait, 0.5) assert ar['completed'] == [None] * len(ar) with pytest.raises(KeyError): ar['foo'] ar.get(5) with pytest.raises(KeyError): ar['foo'] assert isinstance(ar['completed'], list) assert ar.completed == ar['completed'] assert all(isinstance(dt, datetime) for dt in ar.completed) def test_single_result(self): ar = self.client[-1].apply_async(wait, 0.5) with pytest.raises(KeyError): ar['foo'] assert ar['completed'] is None assert ar.get(5) == 0.5 assert isinstance(ar['completed'], datetime) assert isinstance(ar.completed, datetime) assert ar.completed == ar['completed'] def test_abort(self): e = self.client[-1] ar = e.execute('import time; time.sleep(1)', block=False) ar2 = e.apply_async(lambda: 2) ar2.abort() with pytest.raises(error.TaskAborted): ar2.get() ar.get() def test_len(self): v = self.client.load_balanced_view() ar = v.map_async(lambda x: x, list(range(10))) assert len(ar) == 10 ar = v.apply_async(lambda x: x, list(range(10))) assert len(ar) == 1 ar = self.client[:].apply_async(lambda x: x, list(range(10))) assert len(ar) == len(self.client.ids) def test_wall_time_single(self): v = self.client.load_balanced_view() ar = v.apply_async(time.sleep, 0.25) with pytest.raises(TimeoutError): ar.wall_time ar.get(2) assert ar.wall_time < 1.0 assert ar.wall_time > 0.2 def test_wall_time_multi(self): self.minimum_engines(4) v = self.client[:] ar = v.apply_async(time.sleep, 0.25) with pytest.raises(TimeoutError): ar.wall_time ar.get(2) assert ar.wall_time < 1.0 assert ar.wall_time > 0.2 def test_serial_time_single(self): v = self.client.load_balanced_view() ar = v.apply_async(time.sleep, 0.25) with pytest.raises(TimeoutError): ar.serial_time ar.get(2) assert ar.serial_time < 1.0 assert ar.serial_time > 0.2 def test_serial_time_multi(self): self.minimum_engines(4) v = self.client[:] ar = v.apply_async(time.sleep, 0.25) with pytest.raises(TimeoutError): ar.serial_time ar.get(2) assert ar.serial_time < 2.0 assert ar.serial_time > 0.8 def test_elapsed_single(self): v = self.client.load_balanced_view() ar = v.apply_async(time.sleep, 0.25) while not ar.ready(): time.sleep(0.01) assert ar.elapsed < 1 assert ar.elapsed < 1 ar.get(2) def test_elapsed_multi(self): v = self.client[:] ar = v.apply_async(time.sleep, 0.25) while not ar.ready(): time.sleep(0.01) assert ar.elapsed < 1 assert ar.elapsed < 1 ar.get(2) def test_hubresult_timestamps(self): self.minimum_engines(4) v = self.client[:] ar = v.apply_async(time.sleep, 0.25) ar.get(2) rc2 = ipp.Client(profile='iptest') # must have try/finally to close second Client, otherwise # will have dangling sockets causing problems try: time.sleep(0.25) hr = rc2.get_result(ar.msg_ids) assert hr.elapsed > 0.0, f"got bad elapsed: {hr.elapsed}" hr.get(1) assert hr.wall_time < ar.wall_time + 0.2, ( f"got bad wall_time: {hr.wall_time} > {ar.wall_time}" ) assert hr.serial_time == ar.serial_time finally: rc2.close() def test_display_empty_streams_single(self): """empty stdout/err are not displayed (single result)""" self.minimum_engines(1) v = self.client[-1] ar = v.execute("print (5555)") ar.get(5) with capture_output() as io: ar.display_outputs() assert io.stderr == '' assert '5555\n' == io.stdout ar = v.execute("a=5") ar.get(5) with capture_output() as io: ar.display_outputs() assert io.stderr == '' assert io.stdout == '' def test_display_empty_streams_type(self): """empty stdout/err are not displayed (groupby type)""" self.minimum_engines(1) v = self.client[:] ar = v.execute("print (5555)") ar.get(5) with capture_output() as io: ar.display_outputs() assert io.stderr == '' assert io.stdout.count('5555'), len(v) == io.stdout assert '\n\n' not in io.stdout, io.stdout assert io.stdout.count('[stdout:'), len(v) == io.stdout ar = v.execute("a=5") ar.get(5) with capture_output() as io: ar.display_outputs() assert io.stderr == '' assert io.stdout == '' def test_display_empty_streams_engine(self): """empty stdout/err are not displayed (groupby engine)""" self.minimum_engines(1) v = self.client[:] ar = v.execute("print (5555)") ar.get(5) with capture_output() as io: ar.display_outputs('engine') assert io.stderr == '' assert io.stdout.count('5555'), len(v) == io.stdout assert '\n\n' not in io.stdout, io.stdout assert io.stdout.count('[stdout:'), len(v) == io.stdout ar = v.execute("a=5") ar.get(5) with capture_output() as io: ar.display_outputs('engine') assert io.stderr == '' assert io.stdout == '' def test_display_output_error(self): """display_outputs shows output on error""" self.minimum_engines(1) v = self.client[-1] ar = v.execute("print (5555)\n1/0") ar.get(5, return_exceptions=True) ar.wait_for_output(5) with capture_output() as io: ar.display_outputs() assert io.stderr == '' assert '5555\n' == io.stdout assert 'ZeroDivisionError' not in io.stdout def test_await_data(self): """asking for ar.data flushes outputs""" self.minimum_engines(1) v = self.client[-1] ar = v.execute( '\n'.join( [ "import time", "from ipyparallel.datapub import publish_data", "for i in range(5):", " publish_data(dict(i=i))", " time.sleep(0.1)", ] ), block=False, ) found = set() tic = time.time() # timeout after 10s while time.time() <= tic + 10: if ar.data: i = ar.data['i'] found.add(i) if i == 4: break time.sleep(0.05) ar.get(5) assert 4 in found assert len(found) > 1, f"should have seen data multiple times, but got: {found}" def test_not_single_result(self): save_build = self.client._build_targets def single_engine(*a, **kw): idents, targets = save_build(*a, **kw) return idents[:1], targets[:1] ids = single_engine('all')[1] self.client._build_targets = single_engine for targets in ('all', None, ids): dv = self.client.direct_view(targets=targets) ar = dv.apply_async(lambda: 5) assert ar.get(10) == [5] self.client._build_targets = save_build def test_owner_pop(self): self.minimum_engines(1) view = self.client[-1] ar = view.apply_async(lambda: 1) ar.get() ar.wait_for_output() msg_id = ar.msg_ids[0] assert msg_id not in self.client.results assert msg_id not in self.client.metadata def test_dir(self): """dir(AsyncResult)""" view = self.client[-1] ar = view.apply_async(lambda: 1) ar.get() d = dir(ar) assert 'stdout' in d assert 'get' in d def test_wait_for_send(self): view = self.client[-1] view.track = True with pytest.raises(TimeoutError): # this test can fail if the send happens too quickly # e.g. the IO thread takes control for too long, # so run the test a few times for i in range(3): if i > 0: print("Retrying test_wait_for_send") # inject delay in io loop so send doesn't complete immediately self.client._io_loop.add_callback(lambda: time.sleep(0.5)) data = os.urandom(10 * 1024 * 1024) ar = view.apply_async(lambda x: x, data) ar.wait_for_send(0) ar.wait_for_send(10) def test_return_exceptions(self): view = self.client.load_balanced_view() def fail_on_2(n): if n == 2: raise ValueError("two!") return n amr = view.map(fail_on_2, range(4), return_exceptions=True) assert amr._return_exceptions rlist = list(amr) error = rlist[2] assert isinstance(error, ipp.RemoteError) expected = [0, 1, error, 3] assert list(amr) == expected assert amr.get() == expected def test_return_exceptions_postmortem(self): self.minimum_engines(3) dv = self.client[:] bad_id = dv.targets[1] dv.scatter("rank", dv.targets, flatten=True) def fail_on_bad_id(rank, bad_id): if rank == bad_id: raise ValueError(f"{rank} is bad!") return rank ar = dv.apply_async(fail_on_bad_id, ipp.Reference('rank'), bad_id) with raises_remote(ValueError): ar.get() result = ar.get(return_exceptions=True) assert result[:1] == dv.targets[:1] assert result[2:] == dv.targets[2:] assert isinstance(result[1], ipp.RemoteError) def test_split(self): self.minimum_engines(3) dv = self.client[:] parent = dv.apply_async(os.getpid) children = parent.split() for child in children: assert len(child.msg_ids) == 1 # split is identity when only one message assert children[0].split() == (children[0],) result = parent.get(timeout=10) # get doubly-nested lists because these are split_results = [ar.get(timeout=10) for ar in children] assert split_results == result joined = ipp.AsyncResult.join(*children) assert joined.get(timeout=1) == result def test_split_map_result(self): v = self.client.load_balanced_view() amr = v.map_async(lambda x: x, range(5)) splits = amr.split() amr.get(timeout=10) for i, ar in zip(range(5), splits): assert type(ar) is ipp.AsyncResult # not a MapResult! assert ar.done() assert ar.get() == [[i]] def test_wait_first_exception(self): dv = self.client[:] def fail(i): print(i) import time if i == 0: print(1 / i) time.sleep(1) return i dv.scatter('rank', range(len(dv)), flatten=True, block=True) amr = dv.apply_async(fail, ipp.Reference("rank")) tic = time.perf_counter() done, pending = amr.wait(timeout=5, return_when=ipp.FIRST_EXCEPTION) assert done assert len(done) == 1 first_done = done.pop() assert first_done.msg_ids == amr.msg_ids[:1] assert amr.wait(timeout=10) is True done, pending = amr.wait(timeout=0, return_when=ipp.FIRST_EXCEPTION) assert pending == set() assert len(done) == len(amr) def test_map_wait_first_exception(self): dv = self.client[:] def fail(i): print(i) import time if i == 0: print(1 / i) time.sleep(1) return i amr = dv.map_async(fail, range(len(dv))) tic = time.perf_counter() done, pending = amr.wait(timeout=5, return_when=ipp.FIRST_EXCEPTION) assert done assert len(done) == 1 first_done = done.pop() assert first_done.msg_ids == amr.msg_ids[:1] assert amr.wait(timeout=10) is True done, pending = amr.wait(timeout=0, return_when=ipp.FIRST_EXCEPTION) assert pending == set() assert len(done) == len(amr) def test_wait_interactive_first_exception(self): dv = self.client[:] ar = dv.apply_async(time.sleep, 0.2) ar.wait_interactive(return_when=ipp.FIRST_EXCEPTION) assert ar.done() def fail(i): print(i) import time if i == 0: print(1 / i) time.sleep(1) return i amr = dv.map_async(fail, range(len(dv))) tic = time.perf_counter() amr.wait_interactive(timeout=5, return_when=ipp.FIRST_EXCEPTION) toc = time.perf_counter() assert toc - tic < 4 done, pending = amr.wait(timeout=0, return_when=ipp.FIRST_EXCEPTION) assert done assert len(done) == 1 first_done = done.pop() assert first_done.msg_ids == amr.msg_ids[:1] def test_progress(self): dv = self.client[:] amr = dv.map_async(time.sleep, [0.2] * 2 * len(dv)) assert len(amr) == len(dv) * 2 assert amr.progress == 0 amr.wait_interactive() assert amr.progress == len(amr) def test_error_engine_info_apply(self): dv = self.client[:] targets = self.client.ids ar = dv.apply_async(lambda: 1 / 0) try: ar.get() except Exception as e: exc = e else: pytest.fail("Should have raised remote ZeroDivisionError") assert isinstance(exc, ipp.error.CompositeError) expected_engine_info = [ { "engine_id": engine_id, "engine_uuid": self.client._engines[engine_id], "method": "apply", } for engine_id in self.client.ids ] engine_infos = [e[-1] for e in exc.elist] assert engine_infos == expected_engine_info def test_error_engine_info_execute(self): dv = self.client[:] targets = self.client.ids ar = dv.execute("1 / 0", block=False) try: ar.get() except Exception as e: exc = e else: pytest.fail("Should have raised remote ZeroDivisionError") assert isinstance(exc, ipp.error.CompositeError) expected_engine_info = [ { "engine_id": engine_id, "engine_uuid": self.client._engines[engine_id], "method": "execute", } for engine_id in self.client.ids ] engine_infos = [e[-1] for e in exc.elist] assert engine_infos == expected_engine_info ipython-ipyparallel-14e3c43/ipyparallel/tests/test_canning.py000066400000000000000000000051021520071063500245530ustar00rootroot00000000000000import os import pickle from binascii import b2a_hex from functools import partial from ipyparallel.serialize import canning from ipyparallel.serialize.canning import can, uncan def interactive(f): f.__module__ = '__main__' return f def dumps(obj): return pickle.dumps(can(obj)) def loads(obj): return uncan(pickle.loads(obj)) def roundtrip(obj): return loads(dumps(obj)) def test_no_closure(): @interactive def foo(): a = 5 return a pfoo = dumps(foo) bar = loads(pfoo) assert foo() == bar() def test_generator_closure(): # this only creates a closure on Python 3 @interactive def foo(): i = 'i' r = [i for j in (1, 2)] return r pfoo = dumps(foo) bar = loads(pfoo) assert foo() == bar() def test_nested_closure(): @interactive def foo(): i = 'i' def g(): return i return g() pfoo = dumps(foo) bar = loads(pfoo) assert foo() == bar() def test_closure(): i = 'i' @interactive def foo(): return i pfoo = dumps(foo) bar = loads(pfoo) assert foo() == bar() def test_uncan_bytes_buffer(): data = b'data' canned = can(data) canned.buffers = [memoryview(buf) for buf in canned.buffers] out = uncan(canned) assert out == data def test_can_partial(): def foo(x, y, z): return x * y * z partial_foo = partial(foo, 2, y=5) canned = can(partial_foo) assert isinstance(canned, canning.CannedPartial) dumped = pickle.dumps(canned) loaded = pickle.loads(dumped) pfoo2 = uncan(loaded) assert pfoo2(z=3) == partial_foo(z=3) def test_can_partial_buffers(): def foo(arg1, arg2, kwarg1, kwarg2): return f'{arg1}{arg2[:32]}{b2a_hex(kwarg1.tobytes()[:32])}{kwarg2}' buf1 = os.urandom(1024 * 1024) buf2 = memoryview(os.urandom(1024 * 1024)) partial_foo = partial(foo, 5, buf1, kwarg1=buf2, kwarg2=10) canned = can(partial_foo) assert len(canned.buffers) == 2 assert isinstance(canned, canning.CannedPartial) buffers, canned.buffers = canned.buffers, [] dumped = pickle.dumps(canned) loaded = pickle.loads(dumped) loaded.buffers = buffers pfoo2 = uncan(loaded) assert pfoo2() == partial_foo() def test_keyword_only_arguments(): def compute(a, *, b=3): return a * b assert compute(2) == 6 compute_2 = roundtrip(compute) assert compute_2(2) == 6 def test_annotations(): def f(a: int): return a f2 = roundtrip(f) assert f2.__annotations__ == f.__annotations__ ipython-ipyparallel-14e3c43/ipyparallel/tests/test_client.py000066400000000000000000000566561520071063500244400ustar00rootroot00000000000000"""Tests for parallel client.py""" # Copyright (c) IPython Development Team. # Distributed under the terms of the Modified BSD License. import os import signal import socket import sys import time import warnings from concurrent.futures import Future from datetime import datetime from threading import Thread from unittest import mock import pytest import tornado from IPython import get_ipython from ipyparallel import AsyncHubResult, DirectView, Reference, error from ipyparallel.client import client as clientmod from ipyparallel.util import utc from .clienttest import ClusterTestCase, raises_remote, skip_without, wait @pytest.mark.usefixtures('ipython') class TestClient(ClusterTestCase): engine_count = 4 def test_curve(self): if os.environ.get("IPP_ENABLE_CURVE") == "1": assert not self.client.session.key assert self.client.curve_serverkey assert self.client.curve_secretkey else: assert self.client.session.key def test_ids(self): n = len(self.client.ids) self.add_engines(2) assert len(self.client.ids) == n + 2 def test_iter(self): self.minimum_engines(4) engine_ids = [view.targets for view in self.client] assert engine_ids == self.client.ids def test_view_indexing(self): """test index access for views""" self.minimum_engines(4) targets = self.client._build_targets('all')[-1] v = self.client[:] assert v.targets == targets t = self.client.ids[2] v = self.client[t] assert isinstance(v, DirectView) assert v.targets == t t = self.client.ids[2:4] v = self.client[t] assert isinstance(v, DirectView) assert v.targets == t v = self.client[::2] assert isinstance(v, DirectView) assert v.targets == targets[::2] v = self.client[1::3] assert isinstance(v, DirectView) assert v.targets == targets[1::3] v = self.client[:-3] assert isinstance(v, DirectView) assert v.targets == targets[:-3] v = self.client[-1] assert isinstance(v, DirectView) assert v.targets == targets[-1] with pytest.raises(TypeError): self.client[None] def test_outstanding(self): self.minimum_engines(1) e = self.client[-1] engine_id = self.client._engines[e.targets] ar = e.apply_async(time.sleep, 0.5) msg_id = ar.msg_ids[0] # verify that msg id assert msg_id in self.client.outstanding assert msg_id in self.client._outstanding_dict[engine_id] ar.get() assert msg_id not in self.client.outstanding assert msg_id not in self.client._outstanding_dict[engine_id] def test_lbview_targets(self): """test load_balanced_view targets""" v = self.client.load_balanced_view() assert v.targets is None v = self.client.load_balanced_view(-1) assert v.targets == [self.client.ids[-1]] v = self.client.load_balanced_view('all') assert v.targets is None def test_dview_targets(self): """test direct_view targets""" v = self.client.direct_view() assert v.targets == 'all' v = self.client.direct_view('all') assert v.targets == 'all' v = self.client.direct_view(-1) assert v.targets == self.client.ids[-1] def test_lazy_all_targets(self): """test lazy evaluation of rc.direct_view('all')""" v = self.client.direct_view() assert v.targets == 'all' def double(x): return x * 2 seq = list(range(100)) ref = [double(x) for x in seq] # add some engines, which should be used self.add_engines(1) n1 = len(self.client.ids) # simple apply r = v.apply_sync(lambda: 1) assert r == [1] * n1 # map goes through remotefunction r = v.map_sync(double, seq) assert r == ref # add a couple more engines, and try again self.add_engines(2) n2 = len(self.client.ids) assert n2 != n1 # apply r = v.apply_sync(lambda: 1) assert r == [1] * n2 # map r = v.map_sync(double, seq) assert r == ref def test_targets(self): """test various valid targets arguments""" build = self.client._build_targets ids = self.client.ids idents, targets = build(None) assert ids == targets def test_clear(self): """test clear behavior""" self.minimum_engines(2) v = self.client[:] v.block = True v.push(dict(a=5)) v.pull('a') id0 = self.client.ids[-1] self.client.clear(targets=id0, block=True) a = self.client[:-1].get('a') with raises_remote(NameError): self.client[id0].get('a') self.client.clear(block=True) for i in self.client.ids: with raises_remote(NameError): self.client[i].get('a') def test_get_result(self): """test getting results from the Hub.""" c = clientmod.Client(profile='iptest') t = c.ids[-1] ar = c[t].apply_async(wait, 1) # give the monitor time to notice the message time.sleep(0.25) ahr = self.client.get_result(ar.msg_ids[0], owner=False) assert isinstance(ahr, AsyncHubResult) assert ahr.get() == ar.get() ar2 = self.client.get_result(ar.msg_ids[0]) assert not isinstance(ar2, AsyncHubResult) assert ahr.get() == ar2.get() ar3 = self.client.get_result(ar2) assert ar3.msg_ids == ar2.msg_ids ar3 = self.client.get_result([ar2]) assert ar3.msg_ids == ar2.msg_ids c.close() def test_get_execute_result(self): """test getting execute results from the Hub.""" c = clientmod.Client(profile='iptest') t = c.ids[-1] cell = '\n'.join(['import time', 'time.sleep(0.25)', '5']) ar = c[t].execute("import time; time.sleep(1)", silent=False) # give the monitor time to notice the message time.sleep(0.25) ahr = self.client.get_result(ar.msg_ids[0], owner=False) assert isinstance(ahr, AsyncHubResult) assert ahr.get().execute_result == ar.get().execute_result ar2 = self.client.get_result(ar.msg_ids[0]) assert not isinstance(ar2, AsyncHubResult) assert ahr.get() == ar2.get() c.close() def test_ids_list(self): """test client.ids""" ids = self.client.ids assert ids == self.client._ids assert ids is not self.client._ids ids.remove(ids[-1]) assert ids != self.client._ids def test_queue_status(self): ids = self.client.ids id0 = ids[0] qs = self.client.queue_status(targets=id0) assert isinstance(qs, dict) assert sorted(qs.keys()), ['completed', 'queue' == 'tasks'] allqs = self.client.queue_status() assert isinstance(allqs, dict) intkeys = list(allqs.keys()) intkeys.remove('unassigned') print("intkeys", intkeys) intkeys = sorted(intkeys) ids = self.client.ids print("client.ids", ids) ids = sorted(self.client.ids) assert intkeys == ids unassigned = allqs.pop('unassigned') for eid, qs in allqs.items(): assert isinstance(qs, dict) assert sorted(qs.keys()), ['completed', 'queue' == 'tasks'] @pytest.mark.skipif(os.name == 'nt', reason='timing out on Windows') def test_shutdown(self): ids = self.client.ids id0 = ids[-1] pid = self.client[id0].apply_sync(os.getpid) self.client.shutdown(id0, block=True) for i in range(150): # give the engine 15 seconds to die if id0 not in self.client.ids: break time.sleep(0.1) assert id0 not in self.client.ids with pytest.raises(IndexError): self.client[id0] def test_result_status(self): pass # to be written def test_db_query_dt(self): """test db query by date""" hub_n_before = len(self.client.hub_history()) client_n_before = len(self.client.history) for i in range(4): self.client[:].apply_sync(lambda: 1) new_entries = len(self.client.history) - client_n_before hist = self.client.hub_history() for i in range(10): if len(hist) < hub_n_before + new_entries: time.sleep(0.5) hist = self.client.hub_history() else: break else: raise TimeoutError( f"Timeout waiting for {new_entries} entries in the hub history" ) print(hist) middle = self.client.db_query({'msg_id': hist[len(hist) // 2]})[0] tic = middle['submitted'] before = self.client.db_query({'submitted': {'$lt': tic}}) after = self.client.db_query({'submitted': {'$gte': tic}}) assert len(before) + len(after) == len(hist) for b in before: assert b['submitted'] < tic for a in after: assert a['submitted'] >= tic same = self.client.db_query({'submitted': tic}) for s in same: assert s['submitted'] == tic def test_db_query_keys(self): """test extracting subset of record keys""" found = self.client.db_query( {'msg_id': {'$ne': ''}}, keys=['submitted', 'completed'] ) for rec in found: assert set(rec.keys()), {'msg_id', 'submitted' == 'completed'} def test_db_query_default_keys(self): """default db_query excludes buffers""" found = self.client.db_query({'msg_id': {'$ne': ''}}) for rec in found: keys = set(rec.keys()) assert 'buffers' not in keys assert 'result_buffers' not in keys def test_db_query_msg_id(self): """ensure msg_id is always in db queries""" found = self.client.db_query( {'msg_id': {'$ne': ''}}, keys=['submitted', 'completed'] ) for rec in found: assert 'msg_id' in rec.keys() found = self.client.db_query({'msg_id': {'$ne': ''}}, keys=['submitted']) for rec in found: assert 'msg_id' in rec.keys() found = self.client.db_query({'msg_id': {'$ne': ''}}, keys=['msg_id']) for rec in found: assert 'msg_id' in rec.keys() def test_db_query_get_result(self): """pop in db_query shouldn't pop from result itself""" self.client[:].apply_sync(lambda: 1) found = self.client.db_query({'msg_id': {'$ne': ''}}) rc2 = clientmod.Client(profile='iptest') # If this bug is not fixed, this call will hang: ar = rc2.get_result(self.client.history[-1]) print("mark") ar.wait(2) print("mark2") assert ar.ready() print("mark3") ar.get() rc2.close() def test_db_query_in(self): """test db query with '$in','$nin' operators""" hist = self.client.hub_history() even = hist[::2] odd = hist[1::2] recs = self.client.db_query({'msg_id': {'$in': even}}) found = [r['msg_id'] for r in recs] assert set(even) == set(found) recs = self.client.db_query({'msg_id': {'$nin': even}}) found = [r['msg_id'] for r in recs] assert set(odd) == set(found) def test_hub_history(self): hist = self.client.hub_history() recs = self.client.db_query({'msg_id': {"$ne": ''}}) recdict = {} for rec in recs: recdict[rec['msg_id']] = rec latest = datetime(1984, 1, 1).replace(tzinfo=utc) for msg_id in hist: rec = recdict[msg_id] newt = rec['submitted'] assert newt >= latest latest = newt ar = self.client[-1].apply_async(lambda: 1) ar.get() time.sleep(0.25) assert self.client.hub_history()[-1:] == ar.msg_ids def _wait_for_idle(self): """wait for the cluster to become idle, according to the everyone.""" rc = self.client # step 0. wait for local results # this should be sufficient 99% of the time. rc.wait(timeout=5) # step 1. wait for all requests to be noticed # timeout 5s, polling every 100ms msg_ids = set(rc.history) hub_hist = rc.hub_history() for i in range(50): if msg_ids.difference(hub_hist): time.sleep(0.1) hub_hist = rc.hub_history() else: break assert len(msg_ids.difference(hub_hist)) == 0 # step 2. wait for all requests to be done # timeout 5s, polling every 100ms qs = rc.queue_status() for i in range(50): if qs['unassigned'] or any( qs[eid]['tasks'] + qs[eid]['queue'] for eid in qs if eid != 'unassigned' ): time.sleep(0.1) qs = rc.queue_status() else: break # ensure Hub up to date: assert qs['unassigned'] == 0 for eid in [eid for eid in qs if eid != 'unassigned']: assert qs[eid]['tasks'] == 0 assert qs[eid]['queue'] == 0 def test_resubmit(self): def f(): import random return random.random() v = self.client.load_balanced_view() ar = v.apply_async(f) r1 = ar.get(1) # give the Hub a chance to notice: self._wait_for_idle() ahr = self.client.resubmit(ar.msg_ids) r2 = ahr.get(1) assert r1 != r2 def test_resubmit_chain(self): """resubmit resubmitted tasks""" v = self.client.load_balanced_view() ar = v.apply_async(lambda x: x, 'x' * 1024) ar.get() self._wait_for_idle() ars = [ar] for i in range(10): ar = ars[-1] ar2 = self.client.resubmit(ar.msg_ids) [ar.get() for ar in ars] def test_resubmit_header(self): """resubmit shouldn't clobber the whole header""" def f(): import random return random.random() v = self.client.load_balanced_view() v.retries = 1 ar = v.apply_async(f) r1 = ar.get(1) # give the Hub a chance to notice: self._wait_for_idle() ahr = self.client.resubmit(ar.msg_ids) ahr.get(1) time.sleep(0.5) records = self.client.db_query( {'msg_id': {'$in': ar.msg_ids + ahr.msg_ids}}, keys='header' ) h1, h2 = (r['header'] for r in records) for key in set(h1.keys()).union(set(h2.keys())): if key in ('msg_id', 'date'): assert h1[key] != h2[key] else: assert h1[key] == h2[key] def test_resubmit_aborted(self): def f(): import random return random.random() v = self.client.load_balanced_view() # restrict to one engine, so we can put a sleep # ahead of the task, so it will get aborted eid = self.client.ids[-1] v.targets = [eid] sleep = v.apply_async(time.sleep, 0.5) ar = v.apply_async(f) ar.abort() with pytest.raises(error.TaskAborted): ar.get() # Give the Hub a chance to get up to date: self._wait_for_idle() ahr = self.client.resubmit(ar.msg_ids) r2 = ahr.get(1) def test_resubmit_inflight(self): """resubmit of inflight task""" v = self.client.load_balanced_view() ar = v.apply_async(time.sleep, 1) # give the message a chance to arrive time.sleep(0.2) ahr = self.client.resubmit(ar.msg_ids) ar.get(2) ahr.get(2) def test_resubmit_badkey(self): """ensure KeyError on resubmit of nonexistant task""" with raises_remote(KeyError): self.client.resubmit(['invalid']) def test_purge_hub_results(self): # ensure there are some tasks for i in range(5): self.client[:].apply_sync(lambda: 1) # Wait for the Hub to realise the result is done: # This prevents a race condition, where we # might purge a result the Hub still thinks is pending. self._wait_for_idle() rc2 = clientmod.Client(profile='iptest') hist = self.client.hub_history() ahr = rc2.get_result([hist[-1]]) ahr.wait(10) self.client.purge_hub_results(hist[-1]) newhist = self.client.hub_history() assert len(newhist) + 1 == len(hist) rc2.close() def test_purge_local_results(self): # ensure there are some tasks # purge local results is mostly unnecessary now that we have Futures msg_id = 'asdf' self.client.results[msg_id] = 5 md = self.client.metadata[msg_id] before = len(self.client.results) assert len(self.client.metadata) == before self.client.purge_local_results(msg_id) assert len(self.client.results) <= before - 1, "Not removed from results" assert len(self.client.metadata) <= before - 1, "Not removed from metadata" def test_purge_local_results_outstanding(self): v = self.client[-1] ar = v.apply_async(time.sleep, 1) with pytest.raises(RuntimeError): self.client.purge_local_results(ar) ar.get() self.client.purge_local_results(ar) def test_purge_all_local_results_outstanding(self): v = self.client[-1] ar = v.apply_async(time.sleep, 1) with pytest.raises(RuntimeError): self.client.purge_local_results('all') ar.get() self.client.purge_local_results('all') def test_purge_all_hub_results(self): self.client.purge_hub_results('all') hist = self.client.hub_history() assert len(hist) == 0 def test_purge_all_local_results(self): self.client.purge_local_results('all') assert len(self.client.results) == 0, "Results not empty" assert len(self.client.metadata) == 0, "metadata not empty" def test_purge_all_results(self): # ensure there are some tasks for i in range(5): self.client[:].apply_sync(lambda: 1) assert self.client.wait(timeout=10) self._wait_for_idle() self.client.purge_results('all') assert len(self.client.results) == 0, "Results not empty" assert len(self.client.metadata) == 0, "metadata not empty" hist = self.client.hub_history() assert len(hist) == 0, "hub history not empty" def test_purge_everything(self): # ensure there are some tasks for i in range(5): self.client[:].apply_sync(lambda: 1) self.client.wait(timeout=10) self._wait_for_idle() self.client.purge_everything() # The client results assert len(self.client.results) == 0, "Results not empty" assert len(self.client.metadata) == 0, "metadata not empty" # The client "bookkeeping" assert len(self.client.session.digest_history) == 0, "session digest not empty" assert len(self.client.history) == 0, "client history not empty" # the hub results hist = self.client.hub_history() assert len(hist) == 0, "hub history not empty" def test_activate_on_init(self): ip = get_ipython() magics = ip.magics_manager.magics c = self.connect_client() assert 'px' in magics['line'] assert 'px' in magics['cell'] c.close() def test_activate(self): ip = get_ipython() magics = ip.magics_manager.magics v0 = self.client.activate(-1, '0') assert 'px0' in magics['line'] assert 'px0' in magics['cell'] assert v0.targets == self.client.ids[-1] v0 = self.client.activate('all', 'all') assert 'pxall' in magics['line'] assert 'pxall' in magics['cell'] assert v0.targets == 'all' def test_wait_interactive(self): ar = self.client[-1].apply_async(lambda: 1) self.client.wait_interactive() assert self.client.outstanding == set() def test_await_future(self): f = Future() def finish_later(): time.sleep(0.1) f.set_result('future') Thread(target=finish_later).start() assert self.client.wait([f]) assert f.done() assert f.result() == 'future' @skip_without('distributed') @pytest.mark.filterwarnings("ignore:make_current") def test_become_dask(self): executor = self.client.become_dask() reprs = self.client[:].apply_sync(repr, Reference('distributed_worker')) for r in reprs: assert "Worker" in r squares = executor.map(lambda x: x * x, range(10)) tot = executor.submit(sum, squares) assert tot.result() == 285 # cleanup executor.close() self.client.stop_dask() ar = self.client[:].apply_async(lambda x: x, Reference('distributed_worker')) with raises_remote(NameError): ar.get() def test_warning_on_hostname_match(self): location = socket.gethostname() with mock.patch('ipyparallel.client.client.is_local_ip', lambda x: False): with mock.patch('socket.gethostname', lambda: location[0:-1]): with pytest.warns(RuntimeWarning): # should trigger warning c = self.connect_client() c.close() with mock.patch('socket.gethostname', lambda: location): c = None try: with warnings.catch_warnings(): warnings.simplefilter("error", category=RuntimeWarning) c = self.connect_client() finally: if c: c.close() def test_local_ip_true_doesnt_trigger_warning(self): with mock.patch('ipyparallel.client.client.is_local_ip', lambda x: True): c = None try: with warnings.catch_warnings(): warnings.simplefilter("error", category=RuntimeWarning) c = self.connect_client() finally: if c: c.close() def test_wait_for_engines(self): n = len(self.client) assert self.client.wait_for_engines(n) is None f = self.client.wait_for_engines(n, block=False) assert isinstance(f, Future) assert f.done() with pytest.raises(TimeoutError): self.client.wait_for_engines(n + 1, timeout=0.1) f = self.client.wait_for_engines(n + 1, timeout=10, block=False) self.add_engines(1) assert f.result() is None @pytest.mark.skipif( sys.platform.startswith("win"), reason="Signal tests don't pass on Windows yet" ) def test_signal_engines(self): view = self.client[:] if sys.platform.startswith("win"): signame = 'CTRL_C_EVENT' else: signame = 'SIGINT' signum = getattr(signal, signame) for sig in (signum, signame): ar = view.apply_async(time.sleep, 10) # FIXME: use status:busy to wait for tasks to start time.sleep(1) self.client.send_signal(sig, block=True) with raises_remote(KeyboardInterrupt): ar.get() # make sure they were all interrupted for r in ar.get(return_exceptions=True): assert isinstance(r, error.RemoteError) ipython-ipyparallel-14e3c43/ipyparallel/tests/test_cluster.py000066400000000000000000000303411520071063500246220ustar00rootroot00000000000000import asyncio import json import logging import os import signal import sys import tempfile import time from pathlib import Path from unittest import mock import pytest from traitlets.config import Config import ipyparallel as ipp from ipyparallel import cluster from ipyparallel.cluster.launcher import find_launcher_class from .clienttest import raises_remote _timeout = 30 def _raise_interrupt(*frame_info): raise KeyboardInterrupt() def _prepare_signal(): """Register signal handler to test with Registers SIGUSR1 to raise KeyboardInterrupt where available """ if hasattr(signal, 'SIGUSR1'): signal.signal(signal.SIGUSR1, _raise_interrupt) # returns the remote value of the signal return int(TEST_SIGNAL) try: TEST_SIGNAL = signal.SIGUSR1 except AttributeError: # Windows TEST_SIGNAL = signal.CTRL_C_EVENT async def test_cluster_id(Cluster): cluster_ids = set() for i in range(3): cluster = Cluster() cluster_ids.add(cluster.cluster_id) assert len(cluster_ids) == 3 cluster = Cluster(cluster_id='abc') assert cluster.cluster_id == 'abc' async def test_ipython_log(ipython): c = cluster.Cluster(parent=ipython) assert c.log.name == f"{cluster.Cluster.__module__}.{c.cluster_id}" assert len(c.log.handlers) == 1 assert c.log.handlers[0].stream is sys.stdout async def test_start_stop_controller(Cluster): cluster = Cluster() await cluster.start_controller() with pytest.raises(RuntimeError): await cluster.start_controller() assert cluster.config is not None assert cluster.controller.config is cluster.config assert cluster.controller is not None proc = cluster.controller.process assert proc.is_running() with await cluster.connect_client() as rc: assert rc.queue_status() == {'unassigned': 0} await cluster.stop_controller() proc.wait(timeout=3) assert cluster.controller is None # stop is idempotent await cluster.stop_controller() # TODO: test file cleanup async def test_start_stop_engines(Cluster, engine_launcher_class): cluster = Cluster() await cluster.start_controller() n = 2 engine_set_id = await cluster.start_engines(n) assert engine_set_id in cluster.engines engine_set = cluster.engines[engine_set_id] launcher_class = find_launcher_class(engine_launcher_class, "engine") assert isinstance(engine_set, launcher_class) with await cluster.connect_client() as rc: rc.wait_for_engines(n, timeout=_timeout) await cluster.stop_engines(engine_set_id) assert cluster.engines == {} with pytest.raises(KeyError): await cluster.stop_engines(engine_set_id) await cluster.stop_controller() async def test_start_stop_cluster(Cluster): n = 2 cluster = Cluster(n=n) await cluster.start_cluster() controller = cluster.controller assert controller is not None assert len(cluster.engines) == 1 with await cluster.connect_client() as rc: rc.wait_for_engines(n, timeout=_timeout) await cluster.stop_cluster() assert cluster.controller is None assert cluster.engines == {} @pytest.mark.skipif( sys.platform.startswith("win"), reason="Signal tests don't pass on Windows yet" ) async def test_signal_engines(request, Cluster): cluster = Cluster() await cluster.start_controller() engine_set_id = await cluster.start_engines(n=2) rc = await cluster.connect_client() request.addfinalizer(rc.close) rc.wait_for_engines(2) # seems to be a problem if we start too soon... await asyncio.sleep(1) # ensure responsive rc[:].apply_async(lambda: None).get(timeout=_timeout) # register signal handler signals = rc[:].apply_async(_prepare_signal).get(timeout=_timeout) # get test signal from engines in case of cross-platform mismatch, # e.g. SIGUSR1 on mac (30) -> linux (10) test_signal = signals[0] # submit request to be interrupted ar = rc[:].apply_async(time.sleep, 3) # wait for it to be running await asyncio.sleep(0.5) # send signal await cluster.signal_engines(test_signal, engine_set_id) # wait for result, which should raise KeyboardInterrupt with raises_remote(KeyboardInterrupt) as e: ar.get(timeout=_timeout) rc.close() await cluster.stop_engines() await cluster.stop_controller() async def test_restart_engines(Cluster): n = 2 async with Cluster(n=n) as rc: cluster = rc.cluster engine_set_id = next(iter(cluster.engines)) engine_set = cluster.engines[engine_set_id] assert rc.ids[:n] == list(range(n)) before_pids = rc[:].apply_sync(os.getpid) await cluster.restart_engines() # wait for unregister deadline = time.monotonic() + _timeout while any(eid in rc.ids for eid in range(n)): await asyncio.sleep(0.1) if time.monotonic() > deadline: raise TimeoutError( f"timeout waiting for engines 0-{n - 1} to unregister, {rc.ids=}" ) # wait for register rc.wait_for_engines(n, timeout=_timeout) after_pids = rc[:].apply_sync(os.getpid) assert set(after_pids).intersection(before_pids) == set() async def test_get_output(Cluster): n = 2 async with Cluster(n=n) as rc: cluster = rc.cluster engine_set_id = next(iter(cluster.engines)) engine_set = cluster.engines[engine_set_id] out = engine_set.get_output() print(f"---engine output---\n{out}\n---end engine output---") assert out assert 'Completed registration with id 0' in out assert 'Completed registration with id 1' in out async def test_async_with(Cluster): async with Cluster(n=5) as rc: assert sorted(rc.ids) == list(range(5)) rc[:]['a'] = 5 assert rc[:]['a'] == [5] * 5 def test_sync_with(Cluster): with Cluster(log_level=10, n=5) as rc: assert sorted(rc.ids) == list(range(5)) rc[:]['a'] = 5 assert rc[:]['a'] == [5] * 5 def test_load_profile(tmpdir): profile_dir = tmpdir.join("profile").mkdir() # config cases: # - only in profile config (used) # - in profile config and direct config (direct used) # - in profile config and kwargs (kwargs used) with profile_dir.join("ipcluster_config.json").open("w") as f: json.dump( { "Cluster": { "controller_args": ["--from-profile"], "n": 5, "engine_timeout": 10, } }, f, ) print(profile_dir.listdir()) config = Config() config.Cluster.engine_timeout = 20 c = cluster.Cluster(profile_dir=str(profile_dir), n=10, config=config) print(c.config) assert c.profile_dir == str(profile_dir) assert c.controller_args == ['--from-profile'] # from profile assert c.engine_timeout == 20 # from config assert c.n == 10 # from kwarg @pytest.mark.parametrize( "classname, expected_class", [ ("MPI", cluster.launcher.MPIEngineSetLauncher), ("SGE", cluster.launcher.SGEEngineSetLauncher), ( "ipyparallel.cluster.launcher.LocalEngineSetLauncher", cluster.launcher.LocalEngineSetLauncher, ), ], ) def test_cluster_abbreviations(classname, expected_class): c = cluster.Cluster(engines=classname) assert c.engine_launcher_class is expected_class async def test_cluster_repr(Cluster): tmp = tempfile.gettempdir() c = Cluster(cluster_id="test", profile_dir=tmp) assert repr(c) == f"" await c.start_controller() assert ( repr(c) == f")>" ) await c.start_engines(1, 'engineid') assert ( repr(c) == f", engine_sets=['engineid'])>" ) async def test_cluster_manager(): m = cluster.ClusterManager() assert m.clusters == {} tmp = tempfile.gettempdir() key, c = m.new_cluster(profile_dir=tmp) assert c.profile_dir == tmp assert m.get_cluster(key) is c with pytest.raises(KeyError): m.get_cluster("nosuchcluster") with pytest.raises(KeyError): m.new_cluster(cluster_id=c.cluster_id, profile_dir=c.profile_dir) assert list(m.clusters) == [key] m.remove_cluster(key) with pytest.raises(KeyError): m.remove_cluster("nosuchcluster") async def test_to_from_dict( Cluster, ): cluster = Cluster(n=2) print(cluster.config, cluster.controller_args) async with cluster as rc: d = cluster.to_dict() cluster2 = ipp.Cluster.from_dict(d) assert not cluster2.shutdown_atexit assert cluster2.controller is not None if isinstance(cluster2.controller, ipp.cluster.launcher.LocalProcessLauncher): assert cluster2.controller.process.pid == cluster.controller.process.pid assert list(cluster2.engines) == list(cluster.engines) es1 = cluster.engine_set es2 = cluster2.engine_set # ensure responsive rc[:].apply_async(lambda: None).get(timeout=_timeout) if not sys.platform.startswith("win"): # signal tests doesn't work yet on Windows # register signal handler signals = rc[:].apply_async(_prepare_signal).get(timeout=_timeout) # get test signal from engines in case of cross-platform mismatch, # e.g. SIGUSR1 on mac (30) -> linux (10) test_signal = signals[0] # submit request to be interrupted ar = rc[:].apply_async(time.sleep, 3) await asyncio.sleep(0.5) # send signal await cluster2.signal_engines(test_signal) # wait for result, which should raise KeyboardInterrupt with raises_remote(KeyboardInterrupt) as e: ar.get(timeout=_timeout) assert es1.n == es2.n assert cluster2.engine_launcher_class is cluster.engine_launcher_class # shutdown from cluster2, shouldn't raise in cluster1 await cluster2.stop_cluster() async def test_default_from_file(Cluster): cluster = Cluster(n=1, profile="default", cluster_id="") async with cluster: cluster2 = ipp.Cluster.from_file() assert cluster2.cluster_file == cluster.cluster_file with await cluster.connect_client() as rc: assert len(rc) == 1 async def test_cluster_manager_notice_stop(Cluster): cm = cluster.ClusterManager(log=logging.getLogger()) cm.load_clusters() c = Cluster(n=1, log=cm.log) key = cm._cluster_key(c) assert key not in cm.clusters await c.start_cluster() cm.load_clusters() assert key in cm.clusters c_copy = cm.clusters[key] await c.stop_cluster() # refresh list, cleans out stopped clusters # can take some time to notice tic = time.perf_counter() deadline = time.perf_counter() + _timeout while time.perf_counter() < deadline and key in cm.clusters: await asyncio.sleep(0.2) cm.load_clusters() assert key not in cm.clusters @pytest.mark.skipif(os.name == 'nt', reason="Does not work on Windows") async def test_wait_for_engines_crash(Cluster): """wait_for_engines is cancelled when the engines stop""" c = Cluster(n=2, log_level=10) crash_on_startup = str(Path(__file__).parent.joinpath("_test_startup_crash.py")) with mock.patch.dict(os.environ, {"PYTHONSTARTUP": crash_on_startup}): c.start_cluster_sync() rc = c.connect_client_sync() with pytest.raises(ipp.error.EngineError): rc.wait_for_engines(3, timeout=20) @pytest.mark.parametrize("activate", (True, False)) def test_start_and_connect_activate(ipython, Cluster, activate): rc = Cluster(n=2, log_level=10).start_and_connect_sync(activate=activate) with rc: if activate: assert "px" in ipython.magics_manager.magics["cell"] px = ipython.magics_manager.magics["cell"]["px"] assert px.__self__.view.client is rc else: if "px" in ipython.magics_manager.magics["cell"]: px = ipython.magics_manager.magics["cell"]["px"] assert px.__self__.view.client is not rc ipython-ipyparallel-14e3c43/ipyparallel/tests/test_db.py000066400000000000000000000275241520071063500235370ustar00rootroot00000000000000"""Tests for db backends""" # Copyright (c) IPython Development Team. # Distributed under the terms of the Modified BSD License. import fnmatch import logging import os import re import tempfile import time from datetime import datetime, timedelta from unittest import TestCase import pytest from jupyter_client.session import Session from ipyparallel import util from ipyparallel.controller.dictdb import DictDB from ipyparallel.controller.hub import init_record from ipyparallel.controller.sqlitedb import SQLiteDB from ipyparallel.util import utc class TaskDBTest: def setUp(self): util._disable_session_extract_dates() self.session = Session() self.db = self.create_db() self.load_records(16) def create_db(self): raise NotImplementedError def load_records(self, n=1, buffer_size=100): """load n records for testing""" # sleep 1/10 s, to ensure timestamp is different to previous calls time.sleep(0.01) msg_ids = [] for i in range(n): msg = self.session.msg('apply_request', content=dict(a=5)) msg['buffers'] = [os.urandom(buffer_size)] rec = init_record(msg) msg_id = msg['header']['msg_id'] msg_ids.append(msg_id) self.db.add_record(msg_id, rec) return msg_ids def test_add_record(self): before = self.db.get_history() self.load_records(5) after = self.db.get_history() assert len(after) == len(before) + 5 assert after[:-5] == before def test_drop_record(self): msg_id = self.load_records()[-1] rec = self.db.get_record(msg_id) self.db.drop_record(msg_id) with pytest.raises(KeyError): self.db.get_record(msg_id) def _round_to_millisecond(self, dt): """necessary because mongodb rounds microseconds""" micro = dt.microsecond extra = int(str(micro)[-3:]) return dt - timedelta(microseconds=extra) def test_update_record(self): now = self._round_to_millisecond(util.utcnow()) msg_id = self.db.get_history()[-1] rec1 = self.db.get_record(msg_id) data = {'stdout': 'hello there', 'completed': now} self.db.update_record(msg_id, data) rec2 = self.db.get_record(msg_id) assert rec2['stdout'] == 'hello there' assert rec2['completed'] == now rec1.update(data) assert rec1 == rec2 # def test_update_record_bad(self): # """test updating nonexistant records""" # msg_id = str(uuid.uuid4()) # data = {'stdout': 'hello there'} # self.assertRaises(KeyError, self.db.update_record, msg_id, data) def test_find_records_dt(self): """test finding records by date""" hist = self.db.get_history() middle = self.db.get_record(hist[len(hist) // 2]) tic = middle['submitted'] before = self.db.find_records({'submitted': {'$lt': tic}}) after = self.db.find_records({'submitted': {'$gte': tic}}) assert len(before) + len(after) == len(hist) for b in before: assert b['submitted'] < tic for a in after: assert a['submitted'] >= tic same = self.db.find_records({'submitted': tic}) for s in same: assert s['submitted'] == tic def test_find_records_keys(self): """test extracting subset of record keys""" found = self.db.find_records( {'msg_id': {'$ne': ''}}, keys=['submitted', 'completed'] ) for rec in found: assert set(rec.keys()), {'msg_id', 'submitted' == 'completed'} def test_find_records_msg_id(self): """ensure msg_id is always in found records""" found = self.db.find_records( {'msg_id': {'$ne': ''}}, keys=['submitted', 'completed'] ) for rec in found: assert 'msg_id' in rec.keys() found = self.db.find_records({'msg_id': {'$ne': ''}}, keys=['submitted']) for rec in found: assert 'msg_id' in rec.keys() found = self.db.find_records({'msg_id': {'$ne': ''}}, keys=['msg_id']) for rec in found: assert 'msg_id' in rec.keys() def test_find_records_in(self): """test finding records with '$in','$nin' operators""" hist = self.db.get_history() even = hist[::2] odd = hist[1::2] recs = self.db.find_records({'msg_id': {'$in': even}}) found = [r['msg_id'] for r in recs] assert set(even) == set(found) recs = self.db.find_records({'msg_id': {'$nin': even}}) found = [r['msg_id'] for r in recs] assert set(odd) == set(found) def test_find_records_glob(self): """test finding records with '$glob' operators""" msg_ids = self.load_records(10) labels = [ "group_a", "group_a", "group_a/subgroup_a", "group_a/subgroup_b", "group_b", "group_b/subgroup_a", "group_b/subgroup_b", "group_b/subgroup_c", "label*task", "label?task", ] assert len(msg_ids) == len(labels) for msg_id, label in zip(msg_ids, labels): self.db.update_record(msg_id, dict(label=label)) patterns = [ "group_a*", "group_a/subgroup_?", "group_b", "group_b/subgroup_[ab]", # check sequence character matching "*/subgroup_a", "*[*]*", # test wildcard escaping "*[?]*", # test wildcard escaping ] for pattern in patterns: ref = [ msg_id for msg_id, label in zip(msg_ids, labels) if fnmatch.fnmatch(label, pattern) ] recs = self.db.find_records( {'label': {'$glob': pattern}}, ["msg_id", 'label'] ) found = [r['msg_id'] for r in recs] assert set(ref) == set(found) def test_get_history(self): msg_ids = self.db.get_history() latest = datetime(1984, 1, 1).replace(tzinfo=utc) for msg_id in msg_ids: rec = self.db.get_record(msg_id) newt = rec['submitted'] assert newt >= latest latest = newt msg_id = self.load_records(1)[-1] assert self.db.get_history()[-1] == msg_id def test_datetime(self): """get/set timestamps with datetime objects""" msg_id = self.db.get_history()[-1] rec = self.db.get_record(msg_id) assert isinstance(rec['submitted'], datetime) self.db.update_record(msg_id, dict(completed=util.utcnow())) rec = self.db.get_record(msg_id) assert isinstance(rec['completed'], datetime) def test_drop_matching(self): msg_ids = self.load_records(10) query = {'msg_id': {'$in': msg_ids}} self.db.drop_matching_records(query) recs = self.db.find_records(query) assert len(recs) == 0 def test_null(self): """test None comparison queries""" msg_ids = self.load_records(10) query = {'msg_id': None} recs = self.db.find_records(query) assert len(recs) == 0 query = {'msg_id': {'$ne': None}} recs = self.db.find_records(query) assert len(recs) >= 10 def test_pop_safe_get(self): """editing query results shouldn't affect record [get]""" msg_id = self.db.get_history()[-1] rec = self.db.get_record(msg_id) rec.pop('buffers') rec['garbage'] = 'hello' rec['header']['msg_id'] = 'fubar' rec2 = self.db.get_record(msg_id) assert 'buffers' in rec2 assert 'garbage' not in rec2 assert rec2['header']['msg_id'] == msg_id def test_pop_safe_find(self): """editing query results shouldn't affect record [find]""" msg_id = self.db.get_history()[-1] rec = self.db.find_records({'msg_id': msg_id})[0] rec.pop('buffers') rec['garbage'] = 'hello' rec['header']['msg_id'] = 'fubar' rec2 = self.db.find_records({'msg_id': msg_id})[0] assert 'buffers' in rec2 assert 'garbage' not in rec2 assert rec2['header']['msg_id'] == msg_id def test_pop_safe_find_keys(self): """editing query results shouldn't affect record [find+keys]""" msg_id = self.db.get_history()[-1] rec = self.db.find_records({'msg_id': msg_id}, keys=['buffers', 'header'])[0] rec.pop('buffers') rec['garbage'] = 'hello' rec['header']['msg_id'] = 'fubar' rec2 = self.db.find_records({'msg_id': msg_id})[0] assert 'buffers' in rec2 assert 'garbage' not in rec2 assert rec2['header']['msg_id'] == msg_id class TestDictBackend(TaskDBTest, TestCase): def create_db(self): return DictDB() def test_cull_count(self): self.db = self.create_db() # skip the load-records init from setUp self.db.record_limit = 20 self.db.cull_fraction = 0.2 self.load_records(20) assert len(self.db.get_history()) == 20 self.load_records(1) # 0.2 * 20 = 4, 21 - 4 = 17 assert len(self.db.get_history()) == 17 self.load_records(3) assert len(self.db.get_history()) == 20 self.load_records(1) assert len(self.db.get_history()) == 17 for i in range(25): self.load_records(1) assert len(self.db.get_history()) >= 17 assert len(self.db.get_history()) <= 20 def test_cull_size(self): self.db = self.create_db() # skip the load-records init from setUp self.db.size_limit = 1000 self.db.cull_fraction = 0.2 self.load_records(100, buffer_size=10) assert len(self.db.get_history()) == 100 self.load_records(1, buffer_size=0) assert len(self.db.get_history()) == 101 self.load_records(1, buffer_size=1) # 0.2 * 100 = 20, 101 - 20 = 81 assert len(self.db.get_history()) == 81 def test_cull_size_drop(self): """dropping records updates tracked buffer size""" self.db = self.create_db() # skip the load-records init from setUp self.db.size_limit = 1000 self.db.cull_fraction = 0.2 self.load_records(100, buffer_size=10) assert len(self.db.get_history()) == 100 self.db.drop_record(self.db.get_history()[-1]) assert len(self.db.get_history()) == 99 self.load_records(1, buffer_size=5) assert len(self.db.get_history()) == 100 self.load_records(1, buffer_size=5) assert len(self.db.get_history()) == 101 self.load_records(1, buffer_size=1) assert len(self.db.get_history()) == 81 def test_cull_size_update(self): """updating records updates tracked buffer size""" self.db = self.create_db() # skip the load-records init from setUp self.db.size_limit = 1000 self.db.cull_fraction = 0.2 self.load_records(100, buffer_size=10) assert len(self.db.get_history()) == 100 msg_id = self.db.get_history()[-1] self.db.update_record(msg_id, dict(result_buffers=[os.urandom(10)], buffers=[])) assert len(self.db.get_history()) == 100 self.db.update_record(msg_id, dict(result_buffers=[os.urandom(11)], buffers=[])) assert len(self.db.get_history()) == 79 class TestSQLiteBackend(TaskDBTest, TestCase): def setUp(self): tmp_file = tempfile.NamedTemporaryFile(suffix='.db') self.temp_db = tmp_file.name tmp_file.close() super().setUp() def create_db(self): location, fname = os.path.split(self.temp_db) log = logging.getLogger('test') log.setLevel(logging.CRITICAL) return SQLiteDB(location=location, filename=fname, log=log) def tearDown(self): self.db.close() try: os.remove(self.temp_db) except Exception: pass ipython-ipyparallel-14e3c43/ipyparallel/tests/test_dependency.py000066400000000000000000000067271520071063500252720ustar00rootroot00000000000000"""Tests for dependency.py""" # Copyright (c) IPython Development Team. # Distributed under the terms of the Modified BSD License. import ipyparallel as ipp from ipyparallel.serialize import can, uncan from ipyparallel.util import interactive from .clienttest import ClusterTestCase, raises_remote @ipp.require('time') def wait(n): time.sleep(n) # noqa: F821 return n @ipp.interactive def func(x): return x * x mixed = list(map(str, range(10))) completed = list(map(str, range(0, 10, 2))) failed = list(map(str, range(1, 10, 2))) class TestDependency(ClusterTestCase): def setup_method(self): super().setup_method() self.user_ns = {'__builtins__': __builtins__} self.view = self.client.load_balanced_view() self.dview = self.client[-1] self.succeeded = set(map(str, range(0, 25, 2))) self.failed = set(map(str, range(1, 25, 2))) def assertMet(self, dep): assert dep.check(self.succeeded, self.failed), "Dependency should be met" def assertUnmet(self, dep): assert not dep.check(self.succeeded, self.failed), ( "Dependency should not be met" ) def assertUnreachable(self, dep): assert dep.unreachable(self.succeeded, self.failed), ( "Dependency should be unreachable" ) def assertReachable(self, dep): assert not dep.unreachable(self.succeeded, self.failed), ( "Dependency should be reachable" ) def cancan(self, f): """decorator to pass through canning into self.user_ns""" return uncan(can(f), self.user_ns) def test_require_imports(self): """test that @require imports names""" @self.cancan @ipp.require('base64') @interactive def encode(arg): return base64.b64encode(arg) # noqa: F821 # must pass through canning to properly connect namespaces assert encode(b'foo') == b'Zm9v' def test_success_only(self): dep = ipp.Dependency(mixed, success=True, failure=False) self.assertUnmet(dep) self.assertUnreachable(dep) dep.all = False self.assertMet(dep) self.assertReachable(dep) dep = ipp.Dependency(completed, success=True, failure=False) self.assertMet(dep) self.assertReachable(dep) dep.all = False self.assertMet(dep) self.assertReachable(dep) def test_failure_only(self): dep = ipp.Dependency(mixed, success=False, failure=True) self.assertUnmet(dep) self.assertUnreachable(dep) dep.all = False self.assertMet(dep) self.assertReachable(dep) dep = ipp.Dependency(completed, success=False, failure=True) self.assertUnmet(dep) self.assertUnreachable(dep) dep.all = False self.assertUnmet(dep) self.assertUnreachable(dep) def test_require_function(self): @ipp.interactive def bar(a): return func(a) @ipp.require(func) @ipp.interactive def bar2(a): return func(a) self.client[:].clear() with raises_remote(NameError): self.view.apply_sync(bar, 5) ar = self.view.apply_async(bar2, 5) assert ar.get(5) == func(5) def test_require_object(self): @ipp.require(foo=func) @ipp.interactive def bar(a): return foo(a) # noqa: F821 ar = self.view.apply_async(bar, 5) assert ar.get(5) == func(5) ipython-ipyparallel-14e3c43/ipyparallel/tests/test_executor.py000066400000000000000000000035061520071063500250020ustar00rootroot00000000000000"""Tests for Executor API""" # Copyright (c) IPython Development Team. # Distributed under the terms of the Modified BSD License. import time from ipyparallel.client.view import LazyMapIterator, LoadBalancedView from .clienttest import ClusterTestCase def wait(n): import time time.sleep(n) return n def echo(x): return x class TestExecutor(ClusterTestCase): def test_client_executor(self): executor = self.client.executor() assert isinstance(executor.view, LoadBalancedView) f = executor.submit(lambda x: 2 * x, 5) r = f.result() assert r == 10 def test_view_executor(self): view = self.client.load_balanced_view() executor = view.executor assert executor.view is view def test_executor_submit(self): view = self.client.load_balanced_view() executor = view.executor f = executor.submit(lambda x, y: x * y, 2, 3) r = f.result() assert r == 6 def test_executor_map(self): view = self.client.load_balanced_view() executor = view.executor gen = executor.map(lambda x: x, range(5)) assert isinstance(gen, LazyMapIterator) for i, r in enumerate(gen): assert i == r def test_executor_context(self): view = self.client.load_balanced_view() executor = view.executor with executor: f = executor.submit(time.sleep, 0.5) assert not f.done() m = executor.map(lambda x: x, range(10)) assert len(view.history) == 11 # Executor context calls shutdown # shutdown doesn't shutdown engines, # but it should at least wait for results to finish assert f.done() tic = time.perf_counter() list(m) toc = time.perf_counter() assert toc - tic < 0.5 ipython-ipyparallel-14e3c43/ipyparallel/tests/test_joblib.py000066400000000000000000000027321520071063500244050ustar00rootroot00000000000000import warnings from unittest import mock import pytest import ipyparallel as ipp from .clienttest import ClusterTestCase, add_engines try: with warnings.catch_warnings(): warnings.simplefilter("ignore") from joblib import Parallel, delayed from ipyparallel.client._joblib import IPythonParallelBackend # noqa except (ImportError, TypeError): have_joblib = False else: have_joblib = True def neg(x): return -1 * x class TestJobLib(ClusterTestCase): def setup_method(self): if not have_joblib: pytest.skip("Requires joblib >= 0.10") super().setup_method() add_engines(1, total=True) def test_default_backend(self): """ipyparallel.register_joblib_backend() registers default backend""" ipp.register_joblib_backend() with mock.patch.object(ipp.Client, "__new__", lambda *a, **kw: self.client): p = Parallel(backend='ipyparallel') assert p._backend._view.client is self.client def test_register_backend(self): view = self.client.load_balanced_view() view.register_joblib_backend('view') p = Parallel(backend='view') assert p._backend._view is view def test_joblib_backend(self): view = self.client.load_balanced_view() view.register_joblib_backend('view') p = Parallel(backend='view') result = p(delayed(neg)(i) for i in range(10)) assert result == [neg(i) for i in range(10)] ipython-ipyparallel-14e3c43/ipyparallel/tests/test_label.py000066400000000000000000000074231520071063500242250ustar00rootroot00000000000000"""Tests for task label functionality""" # Copyright (c) IPython Development Team. # Distributed under the terms of the Modified BSD License. import logging import os from unittest import TestCase import pytest import ipyparallel as ipp from ipyparallel.cluster.launcher import LocalControllerLauncher def speudo_wait(t): import time tic = time.time() print(f"waiting for {t}s...") # time.sleep(t) # do NOT wait for t seconds to speed up tests print("done") return time.time() - tic class TaskLabelTest: def setUp(self): self.cluster = ipp.Cluster( n=2, log_level=10, controller=self.get_controller_launcher() ) self.cluster.start_cluster_sync() self.rc = self.cluster.connect_client_sync() self.rc.wait_for_engines(n=2) def get_controller_launcher(self): raise NotImplementedError def tearDown(self): self.cluster.stop_engines() self.cluster.stop_controller() # self.cluster.close() def run_tasks(self, view): ar_list = [] # use context to set label with view.temp_flags(label="mylabel_map"): ar_list.append(view.map_async(speudo_wait, [1.1, 1.2, 1.3, 1.4, 1.5])) # use set_flags to set label ar_list.extend( [ view.set_flags(label=f"mylabel_apply_{i:02}").apply_async( speudo_wait, 2 + i / 10 ) for i in range(5) ] ) view.wait(ar_list) # build list of used labels map_labels = ["mylabel_map"] apply_labels = [] for i in range(5): apply_labels.append(f"mylabel_apply_{i:02}") return map_labels, apply_labels def check_labels(self, labels): # query database data = self.rc.db_query({'label': {"$nin": [""]}}, keys=['msg_id', 'label']) for d in data: msg_id = d['msg_id'] label = d['label'] assert label in labels labels.remove(label) assert len(labels) == 0 def clear_db(self): self.rc.purge_everything() def test_balanced_view(self): bview = self.rc.load_balanced_view() map_labels, apply_labels = self.run_tasks(bview) labels = map_labels * 5 + apply_labels self.check_labels(labels) self.clear_db() def test_direct_view(self): dview = self.rc[:] map_labels, apply_labels = self.run_tasks(dview) labels = map_labels * 2 + apply_labels * 2 self.check_labels(labels) self.clear_db() class TestLabelDictDB(TaskLabelTest, TestCase): def get_controller_launcher(self): class dictDB(LocalControllerLauncher): controller_args = ["--dictdb"] return dictDB class TestLabelSqliteDB(TaskLabelTest, TestCase): def get_controller_launcher(self): class sqliteDB(LocalControllerLauncher): controller_args = ["--sqlitedb"] return sqliteDB class TestLabelMongoDB(TaskLabelTest, TestCase): def get_controller_launcher(self): class mongoDB(LocalControllerLauncher): database = "mongodb-label-test" # use this database label for testing controller_args = ["--mongodb", f"--MongoDB.database={database}"] try: from pymongo import MongoClient c = MongoClient(serverSelectionTimeoutMS=2000) servinfo = c.server_info() # checks if mongo server is reachable using the default connection parameter # make sure that test database is empty db = c[mongoDB.database] records = db.get_collection("task_records") records.delete_many({}) except (ImportError, Exception): pytest.skip("Requires mongodb") return mongoDB ipython-ipyparallel-14e3c43/ipyparallel/tests/test_launcher.py000066400000000000000000000110671520071063500247460ustar00rootroot00000000000000"""Tests for launchers Doesn't actually start any subprocesses, but goes through the motions of constructing objects, which should test basic config. """ import logging import os import sys import time from subprocess import Popen import pytest from traitlets.config import Config from ipyparallel.cluster import launcher as launcher_mod from ipyparallel.traitlets import entry_points # ------------------------------------------------------------------------------- # TestCase Mixins # ------------------------------------------------------------------------------- @pytest.fixture() def profile_dir(tmpdir): return str(tmpdir.mkdir("profile_foo")) @pytest.fixture() def cluster_id(): return str(time.time()) @pytest.fixture() def work_dir(tmpdir): return str(tmpdir.mkdir("work")) @pytest.fixture() def build_launcher(work_dir, profile_dir, cluster_id): default_kwargs = dict( work_dir=work_dir, profile_dir=profile_dir, cluster_id=cluster_id, log=logging.getLogger(), ) def build_launcher(Launcher, **kwargs): kw = {} kw.update(default_kwargs) kw.update(kwargs) return Launcher(**kw) return build_launcher @pytest.fixture(params=launcher_mod.all_launchers) def launcher(request, build_launcher): return build_launcher(Launcher=request.param) BATCH_LAUNCHERS = [ cls for cls in launcher_mod.all_launchers if issubclass( cls, (launcher_mod.BatchControllerLauncher, launcher_mod.BatchEngineSetLauncher) ) ] @pytest.fixture(params=BATCH_LAUNCHERS) def batch_launcher(request, build_launcher): return build_launcher(Launcher=request.param) SSH_LAUNCHERS = [ l for l in launcher_mod.all_launchers if issubclass(l, launcher_mod.SSHLauncher) and l is not launcher_mod.SSHLauncher ] @pytest.fixture(params=SSH_LAUNCHERS) def ssh_launcher(request, build_launcher): return build_launcher(Launcher=request.param) WINHPC_LAUNCHERS = [ l for l in launcher_mod.all_launchers if issubclass(l, launcher_mod.WindowsHPCLauncher) and l is not launcher_mod.WindowsHPCLauncher ] @pytest.fixture(params=WINHPC_LAUNCHERS) def winhpc_launcher(request, build_launcher): return build_launcher(Launcher=request.param) def test_profile_dir_env(launcher, profile_dir): env = launcher.get_env() assert "IPP_PROFILE_DIR" in env assert env["IPP_PROFILE_DIR"] == profile_dir def test_cluster_id_env(launcher, cluster_id): env = launcher.get_env() assert "IPP_CLUSTER_ID" in env assert env["IPP_CLUSTER_ID"] == cluster_id def test_batch_template(batch_launcher, work_dir): launcher = batch_launcher batch_file = os.path.join(work_dir, launcher.batch_file_name) assert launcher.batch_file == batch_file launcher.write_batch_script(1) assert os.path.isfile(batch_file) def test_winhpc_template(winhpc_launcher, work_dir): launcher = winhpc_launcher job_file = os.path.join(work_dir, launcher.job_file_name) print(job_file) assert launcher.job_file == job_file launcher.write_job_file(1) assert os.path.isfile(job_file) def test_ssh_remote_profile_dir(ssh_launcher, profile_dir): launcher = ssh_launcher assert launcher.remote_profile_dir == profile_dir cfg = Config() cfg[launcher.__class__.__name__].remote_profile_dir = "foo" launcher.update_config(cfg) assert launcher.remote_profile_dir == "foo" def test_ssh_waitpid(capsys): proc = Popen([sys.executable, '-c', 'import time; time.sleep(1)']) pid = proc.pid def _wait_one(timeout): launcher_mod.ssh_waitpid(pid, timeout=timeout) captured = capsys.readouterr() return launcher_mod._ssh_outputs(captured.out) # first run, it's alive assert _wait_one(timeout=0.1) == {"process_running": "1"} # second run, process exits assert _wait_one(timeout=5) == {"process_running": "0", "exit_code": "-1"} # third run, process has already exited assert _wait_one(timeout=5) == {"process_running": "0", "exit_code": "-1"} @pytest.mark.parametrize("kind", ("controller", "engine")) def test_entrypoints(kind): group_name = f"ipyparallel.{kind}_launchers" group = entry_points(group=group_name) assert len(group) > 2 for entrypoint in group: key = entrypoint.name # verify entrypoints are valid cls = entrypoint.load() # verify find method assert launcher_mod.find_launcher_class(key, kind=kind) is cls # verify abbreviation roundtrip abbreviation = launcher_mod.abbreviate_launcher_class(cls) assert abbreviation == key ipython-ipyparallel-14e3c43/ipyparallel/tests/test_lbview.py000066400000000000000000000213331520071063500244320ustar00rootroot00000000000000"""test LoadBalancedView objects""" import time from itertools import count import pytest import ipyparallel as ipp from ipyparallel import error from .clienttest import ClusterTestCase, crash, raises_remote class TestLoadBalancedView(ClusterTestCase): def setup_method(self): super().setup_method() self.view = self.client.load_balanced_view() def test_z_crash(self): """test graceful handling of engine death (balanced)""" self.add_engines(1) ar = self.view.apply_async(crash) with raises_remote(error.EngineError): ar.get(10) eid = ar.engine_id tic = time.time() while eid in self.client.ids and time.time() - tic < 5: time.sleep(0.01) assert eid not in self.client.ids def test_map(self): def f(x): return x**2 data = list(range(16)) ar = self.view.map_async(f, data) assert len(ar) == len(data) r = ar.get() assert r == list(map(f, data)) def test_map_generator(self): def f(x): return x**2 data = list(range(16)) ar = self.view.map_async(f, iter(data)) r = ar.get() assert r == list(map(f, iter(data))) def test_map_short_first(self): def f(x, y): if y is None: return y if x is None: return x return x * y data = list(range(10)) data2 = list(range(4)) ar = self.view.map_async(f, data, data2) assert len(ar) == len(data2) r = ar.get() assert r == list(map(f, data, data2)) def test_map_short_last(self): def f(x, y): if y is None: return y if x is None: return x return x * y data = list(range(4)) data2 = list(range(10)) ar = self.view.map_async(f, data, data2) assert len(ar) == len(data) r = ar.get() assert r == list(map(f, data, data2)) def test_map_unordered(self): def f(x): return x**2 def slow_f(x): import time time.sleep(0.05 * x) return x**2 data = list(range(16, 0, -1)) reference = list(map(f, data)) amr = self.view.map_async(slow_f, data, ordered=False) assert isinstance(amr, ipp.AsyncMapResult) # check individual elements, retrieved as they come # list comprehension uses __iter__ astheycame = [r for r in amr] # Ensure that at least one result came out of order: assert astheycame, reference != "should not have preserved order" assert sorted(astheycame, reverse=True) == reference, "result corrupted" def test_map_ordered(self): def f(x): return x**2 def slow_f(x): import time time.sleep(0.05 * x) return x**2 data = list(range(16, 0, -1)) reference = list(map(f, data)) amr = self.view.map_async(slow_f, data) assert isinstance(amr, ipp.AsyncMapResult) # check individual elements, retrieved as they come # list(amr) uses __iter__ astheycame = list(amr) # Ensure that results came in order assert astheycame == reference assert amr.get() == reference def test_map_iterable(self): """test map on iterables (balanced)""" view = self.view # 101 is prime, so it won't be evenly distributed arr = range(101) # so that it will be an iterator, even in Python 3 it = iter(arr) r = view.map_sync(lambda x: x, arr) assert r == list(arr) def test_imap_max_outstanding(self): view = self.view source = count() def task(i): import time time.sleep(0.1) return i gen = view.imap(task, source, max_outstanding=5) # should submit at least max_outstanding first_result = next(gen) assert len(view.history) >= 5 # retrieving results should submit another task second_result = next(gen) assert 5 <= len(view.history) <= 10 self.client.wait(timeout=self.timeout) def test_imap_infinite(self): view = self.view source = count() def task(i): import time time.sleep(0.1) return i gen = view.imap(task, source, max_outstanding=2) results = [] for i in gen: results.append(i) if i >= 3: break # stop consuming the iterator gen.cancel() assert len(results) == 4 # wait self.client.wait(timeout=self.timeout) # verify that max_outstanding wasn't exceeded assert 4 <= len(self.view.history) < 10 def test_imap_unordered(self): self.minimum_engines(4) view = self.view source = count() def yield_up_and_down(n): for i in range(n): if i % 4 == 0: yield 1 + i / 100 else: yield i / 100 def task(t): import time time.sleep(t) return t gen = view.imap(task, yield_up_and_down(10), max_outstanding=2, ordered=False) results = [] for i, t in enumerate(gen): results.append(t) if i >= 2: break # stop consuming gen.cancel() assert len(results) == 3 print(results) assert all([r < 1 for r in results]) # wait self.client.wait(timeout=self.timeout) # verify that max_outstanding wasn't exceeded assert 4 <= len(self.view.history) <= 6 def test_imap_return_exceptions(self): view = self.view source = count() def fail_on_even(n): if n % 2 == 0: raise ValueError("even!") return n gen = view.imap(fail_on_even, range(5), return_exceptions=True) for i, r in enumerate(gen): if i % 2 == 0: assert isinstance(r, error.RemoteError) else: assert r == i def test_abort(self): view = self.view ar = self.client[:].apply_async(time.sleep, 0.5) ar = self.client[:].apply_async(time.sleep, 0.5) time.sleep(0.2) ar2 = view.apply_async(lambda: 2) ar3 = view.apply_async(lambda: 3) view.abort(ar2) view.abort(ar3.msg_ids) with pytest.raises(error.TaskAborted): ar2.get() with pytest.raises(error.TaskAborted): ar3.get() def test_retries(self): self.minimum_engines(3) view = self.view def fail(): raise ValueError("Failed!") for r in range(len(self.client) - 1): with view.temp_flags(retries=r): with raises_remote(ValueError): view.apply_sync(fail) with view.temp_flags(retries=len(self.client), timeout=0.1): with raises_remote(error.TaskTimeout): view.apply_sync(fail) def test_short_timeout(self): self.minimum_engines(2) view = self.view def fail(): import time time.sleep(0.25) raise ValueError("Failed!") with view.temp_flags(retries=1, timeout=0.01): with raises_remote(ValueError): view.apply_sync(fail) def test_invalid_dependency(self): view = self.view with view.temp_flags(after='12345'): with raises_remote(error.InvalidDependency): view.apply_sync(lambda: 1) def test_impossible_dependency(self): self.minimum_engines(2) view = self.client.load_balanced_view() ar1 = view.apply_async(lambda: 1) ar1.get() e1 = ar1.engine_id e2 = e1 while e2 == e1: ar2 = view.apply_async(lambda: 1) ar2.get() e2 = ar2.engine_id with view.temp_flags(follow=[ar1, ar2]): with raises_remote(error.ImpossibleDependency): view.apply_sync(lambda: 1) def test_follow(self): ar = self.view.apply_async(lambda: 1) ar.get() ars = [] first_id = ar.engine_id self.view.follow = ar for i in range(5): ars.append(self.view.apply_async(lambda: 1)) self.view.wait(ars) for ar in ars: assert ar.engine_id == first_id def test_after(self): view = self.view ar = view.apply_async(time.sleep, 0.5) with view.temp_flags(after=ar): ar2 = view.apply_async(lambda: 1) ar.wait() ar2.wait() assert ar2.started >= ar.completed ipython-ipyparallel-14e3c43/ipyparallel/tests/test_magics.py000066400000000000000000000454301520071063500244110ustar00rootroot00000000000000"""Test Parallel magics""" import re import signal import sys import time import pytest from IPython import get_ipython from IPython.utils.io import capture_output import ipyparallel as ipp from ipyparallel import AsyncResult from .clienttest import ClusterTestCase, generate_output, raises_remote @pytest.mark.usefixtures('ipython_interactive') class TestParallelMagics(ClusterTestCase): def test_px_blocking(self): ip = get_ipython() v = self.client[-1:] v.activate() v.block = True ip.run_line_magic('px', 'a=5') assert v['a'] == [5] ip.run_line_magic('px', 'a=10') assert v['a'] == [10] # just 'print a' works ~99% of the time, but this ensures that # the stdout message has arrived when the result is finished: with capture_output() as io: ip.run_line_magic( 'px', 'import sys,time;print(a);sys.stdout.flush();time.sleep(0.2)' ) assert '[stdout:' in io.stdout assert '\n\n' not in io.stdout assert io.stdout.rstrip().endswith('10') def test_px_var_expand(self): ip = get_ipython() v = self.client[-1:] v.activate() v.block = True ip.user_ns['x'] = 'client' v['x'] = 'engine' ip.run_line_magic('px', 'y=f"{x}"') assert v['y'] == ["engine"] def test_cell_px_var_expand(self): ip = get_ipython() v = self.client[-1:] v.activate() v.block = True ip.user_ns['x'] = 'client' v['x'] = 'engine' ip.user_ns["out_name"] = "theoutput" ip.run_cell_magic('px', '-o {out_name}', 'y=f"{x}"') assert v['y'] == ["engine"] assert "theoutput" in ip.user_ns assert isinstance(ip.user_ns["theoutput"], ipp.AsyncResult) def _check_generated_stderr(self, stderr, n): expected = [ r'\[stderr:\d+\]', '^stderr$', '^stderr2$', ] * n assert '\n\n' not in stderr lines = stderr.splitlines() assert len(lines), len(expected) == stderr for line, expect in zip(lines, expected): if isinstance(expect, str): expect = [expect] for ex in expect: assert re.search(ex, line) is not None, f"Expected {ex!r} in {line!r}" def _check_expected_lines_unordered(self, expected, lines): for expect in expected: found = False for line in lines: found = found | (re.search(expect, line) is not None) if found: break assert found, f"Expected {expect!r} in output: {lines}" def test_cellpx_block_args(self): """%%px --[no]block flags work""" ip = get_ipython() v = self.client[-1:] v.activate() v.block = False for block in (True, False): v.block = block ip.run_line_magic("pxconfig", "--verbose") with capture_output(display=False) as io: ip.run_cell_magic("px", "", "1") if block: assert io.stdout.startswith("Parallel"), io.stdout else: assert io.stdout.startswith("Async"), io.stdout with capture_output(display=False) as io: ip.run_cell_magic("px", "--block", "1") assert io.stdout.startswith("Parallel"), io.stdout with capture_output(display=False) as io: ip.run_cell_magic("px", "--noblock", "1") assert io.stdout.startswith("Async"), io.stdout def test_cellpx_groupby_engine(self): """%%px --group-outputs=engine""" ip = get_ipython() v = self.client[:] v.block = True v.activate() v['generate_output'] = generate_output with capture_output(display=False) as io: ip.run_cell_magic( 'px', '--group-outputs=engine --no-stream', 'generate_output()' ) assert '\n\n' not in io.stdout lines = io.stdout.splitlines() expected = [ r'\[stdout:\d+\]', 'stdout', 'stdout2', r'\[output:\d+\]', r'IPython\.core\.display\.HTML', r'IPython\.core\.display\.Math', r'Out\[\d+:\d+\]:.*IPython\.core\.display\.Math', ] * len(v) assert len(lines), len(expected) == io.stdout for line, expect in zip(lines, expected): if isinstance(expect, str): expect = [expect] for ex in expect: assert re.search(ex, line) is not None, f"Expected {ex!r} in {line!r}" self._check_generated_stderr(io.stderr, len(v)) def test_cellpx_groupby_order(self): """%%px --group-outputs=order""" ip = get_ipython() v = self.client[:] v.block = True v.activate() v['generate_output'] = generate_output with capture_output(display=False) as io: ip.run_cell_magic( 'px', '--group-outputs=order --no-stream', 'generate_output()' ) assert '\n\n' not in io.stdout lines = io.stdout.splitlines() expected = [] expected.extend( [ r'\[stdout:\d+\]', 'stdout', 'stdout2', ] * len(v) ) expected.extend( [ r'\[output:\d+\]', 'IPython..+.HTML', ] * len(v) ) expected.extend( [ r'\[output:\d+\]', 'IPython..+.Math', ] * len(v) ) expected.extend([r'Out\[\d+:\d+\]:.*IPython\..+\.Math'] * len(v)) assert len(lines), len(expected) == io.stdout for line, expect in zip(lines, expected): if isinstance(expect, str): expect = [expect] for ex in expect: assert re.search(ex, line) is not None, f"Expected {ex!r} in {line!r}" self._check_generated_stderr(io.stderr, len(v)) def test_cellpx_groupby_type(self): """%%px --group-outputs=type""" ip = get_ipython() v = self.client[:] v.block = True v.activate() v['generate_output'] = generate_output with capture_output(display=False) as io: ip.run_cell_magic( 'px', '--group-outputs=type --no-stream', 'generate_output()' ) assert '\n\n' not in io.stdout lines = io.stdout.splitlines() expected = [] expected.extend( [ r'\[stdout:\d+\]', 'stdout', 'stdout2', ] * len(v) ) expected.extend( [ r'\[output:\d+\]', r'IPython\.core\.display\.HTML', r'IPython\.core\.display\.Math', ] * len(v) ) expected.extend([(r'Out\[\d+:\d+\]', r'IPython\.core\.display\.Math')] * len(v)) assert len(lines), len(expected) == io.stdout for line, expect in zip(lines, expected): if isinstance(expect, str): expect = [expect] for ex in expect: assert re.search(ex, line) is not None, f"Expected {ex!r} in {line!r}" self._check_generated_stderr(io.stderr, len(v)) def test_cellpx_error_stream(self): self.minimum_engines(6) ip = get_ipython() v = self.client[:] v.block = True v.activate() v.scatter("rank", range(len(v)), flatten=True, block=True) with capture_output(display=False) as io: with pytest.raises(ipp.error.AlreadyDisplayedError) as exc_info: ip.run_cell_magic( "px", "--stream", "import time; time.sleep(rank); raise RuntimeError(f'oops! {rank}')", ) print(io.stdout) print(io.stderr, file=sys.stderr) assert 'RuntimeError' in io.stderr assert len(v) <= io.stderr.count("RuntimeError:") < len(v) * 2 printed_tb = "\n".join(exc_info.value.render_traceback()) assert printed_tb == f"{len(v)} errors" def test_cellpx_error_no_stream(self): self.minimum_engines(6) ip = get_ipython() v = self.client[:] v.block = True v.activate() v.scatter("rank", range(len(v)), flatten=True, block=True) with capture_output(display=False) as io: with pytest.raises(ipp.error.CompositeError) as exc_info: ip.run_cell_magic( "px", "--no-stream", "import time; time.sleep(rank); raise RuntimeError(f'oops! {rank}')", ) print(io.stdout) print(io.stderr, file=sys.stderr) assert 'RuntimeError' not in io.stderr assert io.stderr.strip() == "" printed_tb = "\n".join(exc_info.value.render_traceback()) assert printed_tb.count("RuntimeError:") >= ipp.error.CompositeError.tb_limit @pytest.mark.skip("ordering issues in ipykernel 7") def test_cellpx_stream(self): """%%px --stream""" self.minimum_engines(6) ip = get_ipython() v = self.client[:] v.block = True v.activate() v['generate_output'] = generate_output with capture_output(display=False) as io: ip.run_cell_magic('px', '--stream', 'generate_output()') print(io.stdout) print(io.stderr, file=sys.stderr) assert '\n\n' not in io.stdout print(io.stdout) lines = io.stdout.splitlines() expected = [] expected.extend( [ r'\[stdout:\d+\]', 'stdout', r'\[stdout:\d+\]', 'stdout2', r'\[output:\d+\]', r'IPython\.core\.display\.HTML', r'\[output:\d+\]', r'IPython\.core\.display\.Math', r'Out\[\d+:\d+\]:.*IPython\.core\.display\.Math', ] * len(v) ) # Check that all expected lines are in the output self._check_expected_lines_unordered(expected, lines) assert len(expected) - len(v) <= len(lines) <= len(expected), ( f"expected {len(expected)} lines, got: {io.stdout}" ) # Do the same for stderr print(io.stderr, file=sys.stderr) assert '\n\n' not in io.stderr lines = io.stderr.splitlines() expected = [] expected.extend( [ r'\[stderr:\d+\]', 'stderr', r'\[stderr:\d+\]', 'stderr2', ] * len(v) ) self._check_expected_lines_unordered(expected, lines) assert len(expected) - len(v) <= len(lines) <= len(expected), ( f"expected {len(expected)} lines, got: {io.stderr}" ) def test_px_nonblocking(self): ip = get_ipython() v = self.client[-1:] v.activate() v.block = False ip.run_line_magic('px', 'a=5') assert v['a'] == [5] ip.run_line_magic('px', 'a=10') assert v['a'] == [10] ip.run_line_magic('pxconfig', '--verbose') with capture_output() as io: ar = ip.run_line_magic('px', 'print (a)') assert isinstance(ar, AsyncResult) assert 'Async' in io.stdout assert '[stdout:' not in io.stdout assert '\n\n' not in io.stdout ar = ip.run_line_magic('px', '1/0') with raises_remote(ZeroDivisionError): ar.get() def test_autopx_blocking(self): ip = get_ipython() v = self.client[-1] v.activate() v.block = True with capture_output(display=False) as io: ip.run_line_magic('autopx', '') ip.run_cell('\n'.join(('a=5', 'b=12345', 'c=0'))) ip.run_cell('b*=2') ip.run_cell('print (b)') ip.run_cell('b') ip.run_cell("b/c") ip.run_line_magic('autopx', '') output = io.stdout assert output.startswith('%autopx enabled'), output assert output.rstrip().endswith('%autopx disabled'), output assert 'ZeroDivisionError' in output assert '\nOut[' in output assert ': 24690' in output ar = v.get_result(-1) # prevent TaskAborted on pulls, due to ZeroDivisionError time.sleep(0.5) assert v['a'] == 5 assert v['b'] == 24690 with raises_remote(ZeroDivisionError): ar.get() def test_autopx_nonblocking(self): ip = get_ipython() v = self.client[-1] v.activate() v.block = False with capture_output() as io: ip.run_line_magic('autopx', '') ip.run_cell('\n'.join(('a=5', 'b=10', 'c=0'))) ip.run_cell('print (b)') ip.run_cell('import time; time.sleep(0.1)') ip.run_cell("b/c") ip.run_cell('b*=2') ip.run_line_magic('autopx', '') output = io.stdout.rstrip() assert output.startswith('%autopx enabled'), output assert output.endswith('%autopx disabled'), output assert 'ZeroDivisionError' not in output ar = v.get_result(-2, owner=False) with raises_remote(ZeroDivisionError): ar.get() # prevent TaskAborted on pulls, due to ZeroDivisionError time.sleep(0.5) assert v['a'] == 5 # b*=2 will not fire, due to abort assert v['b'] == 10 def test_result(self): ip = get_ipython() v = self.client[-1] v.activate() data = dict(a=111, b=222) v.push(data, block=True) for name in ('a', 'b'): ip.run_line_magic('px', name) with capture_output(display=False) as io: ip.run_line_magic('pxresult', '') assert str(data[name]) in io.stdout def test_px_matplotlib(self): """%matplotlib inline works on engines""" pytest.importorskip('matplotlib') ip = get_ipython() v = self.client[-1] v.block = True v.activate() with capture_output() as io: ip.run_line_magic( "px", "\n".join( [ "%matplotlib inline", "import numpy as np", "import matplotlib.pyplot as plt", ] ), ) with capture_output(display=False) as io: ip.run_line_magic("px", "plt.plot(np.random.rand(100))") assert 'Out[' in io.stdout assert 'matplotlib.lines' in io.stdout def test_pxconfig(self): ip = get_ipython() rc = self.client v = rc.activate(-1, '_tst') assert v.targets == rc.ids[-1] ip.run_line_magic("pxconfig_tst", "-t :") assert v.targets == rc.ids ip.run_line_magic("pxconfig_tst", "-t ::2") assert v.targets == rc.ids[::2] ip.run_line_magic("pxconfig_tst", "-t 1::2") assert v.targets == rc.ids[1::2] ip.run_line_magic("pxconfig_tst", "-t 1") assert v.targets == 1 ip.run_line_magic("pxconfig_tst", "--block") assert v.block is True ip.run_line_magic("pxconfig_tst", "--noblock") assert v.block is False def test_cellpx_targets(self): """%%px --targets doesn't change defaults""" ip = get_ipython() rc = self.client view = rc.activate(rc.ids) assert view.targets == rc.ids ip.run_line_magic('pxconfig', '--verbose') for cell in ("pass", "1/0"): with capture_output(display=False) as io: try: ip.run_cell_magic("px", "--targets all", cell) except ipp.RemoteError: pass assert 'engine(s): all' in io.stdout assert view.targets == rc.ids def test_cellpx_block(self): """%%px --block doesn't change default""" ip = get_ipython() rc = self.client view = rc.activate(rc.ids) view.block = False assert view.targets == rc.ids ip.run_line_magic('pxconfig', '--verbose') for cell in ("pass", "1/0"): with capture_output(display=False) as io: try: ip.run_cell_magic("px", "--block", cell) except ipp.RemoteError: pass assert 'Async' not in io.stdout assert view.block is False def cellpx_keyboard_interrupt_test_helper(self, sig=None): """%%px with Keyboard Interrupt on blocking execution""" ip = get_ipython() v = self.client[:] v.block = True v.activate() def _sigalarm(sig, frame): raise KeyboardInterrupt signal.signal(signal.SIGALRM, _sigalarm) signal.alarm(2) with capture_output(display=False) as io: ip.run_cell_magic( "px", "" if sig is None else f"--signal-on-interrupt {sig}", "print('Entering...'); import time; time.sleep(5); print('Exiting...');", ) print(io.stdout) print(io.stderr, file=sys.stderr) assert ( 'Received Keyboard Interrupt. Sending signal {} to engines...'.format( "SIGINT" if sig is None else sig ) in io.stderr ) assert 'Exiting...' not in io.stdout @pytest.mark.skipif( sys.platform.startswith("win"), reason="Signal tests don't pass on Windows yet" ) def test_cellpx_keyboard_interrupt_default(self): self.cellpx_keyboard_interrupt_test_helper() @pytest.mark.skipif( sys.platform.startswith("win"), reason="Signal tests don't pass on Windows yet" ) def test_cellpx_keyboard_interrupt_SIGINT(self): self.cellpx_keyboard_interrupt_test_helper("SIGINT") @pytest.mark.skipif( sys.platform.startswith("win"), reason="Signal tests don't pass on Windows yet" ) def test_cellpx_keyboard_interrupt_signal_2(self): self.cellpx_keyboard_interrupt_test_helper("2") @pytest.mark.skipif( sys.platform.startswith("win"), reason="Signal tests don't pass on Windows yet" ) def test_cellpx_keyboard_interrupt_signal_0(self): self.cellpx_keyboard_interrupt_test_helper("0") @pytest.mark.skipif( sys.platform.startswith("win"), reason="Signal tests don't pass on Windows yet" ) def test_cellpx_keyboard_interrupt_SIGKILL(self): self.cellpx_keyboard_interrupt_test_helper("SIGKILL") @pytest.mark.skipif( sys.platform.startswith("win"), reason="Signal tests don't pass on Windows yet" ) def test_cellpx_keyboard_interrupt_signal_9(self): self.cellpx_keyboard_interrupt_test_helper("9") ipython-ipyparallel-14e3c43/ipyparallel/tests/test_mongodb.py000066400000000000000000000026611520071063500245720ustar00rootroot00000000000000"""Tests for mongodb backend""" # Copyright (c) IPython Development Team. # Distributed under the terms of the Modified BSD License. import os from unittest import TestCase import pytest from . import test_db c = None @pytest.fixture(scope='module') def mongo_conn(request): global c try: from pymongo import MongoClient except ImportError: pytest.skip("Requires mongodb") conn_kwargs = {} if 'DB_IP' in os.environ: conn_kwargs['host'] = os.environ['DB_IP'] if 'DBA_MONGODB_ADMIN_URI' in os.environ: # On ShiningPanda, we need a username and password to connect. They are # passed in a mongodb:// URI. conn_kwargs['host'] = os.environ['DBA_MONGODB_ADMIN_URI'] if 'DB_PORT' in os.environ: conn_kwargs['port'] = int(os.environ['DB_PORT']) try: c = MongoClient(**conn_kwargs, serverSelectionTimeoutMS=2000) servinfo = c.server_info() except Exception: c = None if c is not None: request.addfinalizer(lambda: c.drop_database('iptestdb')) return c @pytest.mark.usefixtures('mongo_conn') class TestMongoBackend(test_db.TaskDBTest, TestCase): """MongoDB backend tests""" def create_db(self): try: from ipyparallel.controller.mongodb import MongoDB return MongoDB(database='iptestdb', _connection=c) except Exception: pytest.skip("Couldn't connect to mongodb") ipython-ipyparallel-14e3c43/ipyparallel/tests/test_mpi.py000066400000000000000000000011721520071063500237260ustar00rootroot00000000000000import shutil import pytest from .test_cluster import ( test_get_output, # noqa: F401 test_restart_engines, # noqa: F401 test_signal_engines, # noqa: F401 test_start_stop_cluster, # noqa: F401 test_to_from_dict, # noqa: F401 ) # import tests that use engine_launcher_class fixture # override engine_launcher_class @pytest.fixture def engine_launcher_class(): if shutil.which("mpiexec") is None: pytest.skip("Requires mpiexec") return 'mpi' @pytest.fixture def controller_launcher_class(): if shutil.which("mpiexec") is None: pytest.skip("Requires mpiexec") return 'mpi' ipython-ipyparallel-14e3c43/ipyparallel/tests/test_remotefunction.py000066400000000000000000000026101520071063500262000ustar00rootroot00000000000000"""Tests for remote functions""" # Copyright (c) IPython Development Team. # Distributed under the terms of the Modified BSD License. import ipyparallel as ipp from .clienttest import ClusterTestCase class TestRemoteFunctions(ClusterTestCase): def test_remote(self): v = self.client[-1] @ipp.remote(v, block=True) def foo(x, y=5): """multiply x * y""" return x * y assert foo.__name__ == 'foo' assert 'RemoteFunction' in foo.__doc__ assert 'multiply x' in foo.__doc__ z = foo(5) assert z == 25 z = foo(2, 3) assert z == 6 z = foo(x=5, y=2) assert z == 10 def test_parallel(self): n = 2 v = self.client[:n] @ipp.parallel(v, block=True) def foo(x): """multiply x * y""" return x * 2 assert foo.__name__ == 'foo' assert 'ParallelFunction' in foo.__doc__ assert 'multiply x' in foo.__doc__ z = foo([1, 2, 3, 4]) assert z, [1, 2, 1, 2, 3, 4, 3 == 4] def test_parallel_map(self): v = self.client.load_balanced_view() @ipp.parallel(v, block=True) def foo(x, y=5): """multiply x * y""" return x * y z = foo.map([1, 2, 3]) assert z, [5, 10 == 15] z = foo.map([1, 2, 3], [1, 2, 3]) assert z, [1, 4 == 9] ipython-ipyparallel-14e3c43/ipyparallel/tests/test_serialize.py000066400000000000000000000142571520071063500251400ustar00rootroot00000000000000"""test serialization tools""" # Copyright (c) IPython Development Team. # Distributed under the terms of the Modified BSD License. import pickle from collections import namedtuple import pytest from ipyparallel import interactive from ipyparallel.serialize import deserialize_object, serialize_object from ipyparallel.serialize.canning import CannedArray, CannedClass # ------------------------------------------------------------------------------- # Globals and Utilities # ------------------------------------------------------------------------------- def roundtrip(obj): """roundtrip an object through serialization""" bufs = serialize_object(obj) obj2, remainder = deserialize_object(bufs) assert remainder == [] return obj2 SHAPES = ((100,), (1024, 10), (10, 8, 6, 5), (), (0,)) DTYPES = ('uint8', 'float64', 'int32', [('g', 'float32')], '|S10') # ------------------------------------------------------------------------------- # Tests # ------------------------------------------------------------------------------- def new_array(shape, dtype): import numpy return numpy.random.random(shape).astype(dtype) def test_roundtrip_simple(): for obj in [ 'hello', dict(a='b', b=10), [1, 2, 'hi'], (b'123', 'hello'), ]: obj2 = roundtrip(obj) assert obj == obj2 def test_roundtrip_nested(): for obj in [ dict(a=range(5), b={1: b'hello'}), [range(5), [range(3), (1, [b'whoda'])]], ]: obj2 = roundtrip(obj) assert obj == obj2 def test_roundtrip_buffered(): for obj in [dict(a=b"x" * 1025), b"hello" * 500, [b"hello" * 501, 1, 2, 3]]: bufs = serialize_object(obj) assert len(bufs) == 2 obj2, remainder = deserialize_object(bufs) assert remainder == [] assert obj == obj2 def test_roundtrip_memoryview(): b = b'asdf' * 1025 view = memoryview(b) bufs = serialize_object(view) assert len(bufs) == 2 v2, remainder = deserialize_object(bufs) assert remainder == [] assert v2.tobytes() == b def test_numpy(): pytest.importorskip('numpy') from numpy.testing import assert_array_equal for shape in SHAPES: for dtype in DTYPES: A = new_array(shape, dtype=dtype) bufs = serialize_object(A) bufs = [memoryview(b) for b in bufs] B, r = deserialize_object(bufs) assert r == [] assert A.shape == B.shape assert A.dtype == B.dtype assert_array_equal(A, B) def test_recarray(): pytest.importorskip('numpy') from numpy.testing import assert_array_equal for shape in SHAPES: for dtype in [ [('f', float), ('s', '|S10')], [('n', int), ('s', '|S1'), ('u', 'uint32')], ]: A = new_array(shape, dtype=dtype) bufs = serialize_object(A) B, r = deserialize_object(bufs) assert r == [] assert A.shape == B.shape assert A.dtype == B.dtype assert_array_equal(A, B) def test_numpy_in_seq(): pytest.importorskip('numpy') from numpy.testing import assert_array_equal for shape in SHAPES: for dtype in DTYPES: A = new_array(shape, dtype=dtype) bufs = serialize_object((A, 1, 2, b'hello')) canned = pickle.loads(bufs[0]) assert isinstance(canned[0], CannedArray) tup, r = deserialize_object(bufs) B = tup[0] assert r == [] assert A.shape == B.shape assert A.dtype == B.dtype assert_array_equal(A, B) def test_numpy_in_dict(): pytest.importorskip('numpy') from numpy.testing import assert_array_equal for shape in SHAPES: for dtype in DTYPES: A = new_array(shape, dtype=dtype) bufs = serialize_object(dict(a=A, b=1, c=range(20))) canned = pickle.loads(bufs[0]) assert isinstance(canned['a'], CannedArray) d, r = deserialize_object(bufs) B = d['a'] assert r == [] assert A.shape == B.shape assert A.dtype == B.dtype assert_array_equal(A, B) def test_class(): @interactive class C: a = 5 bufs = serialize_object(dict(C=C)) canned = pickle.loads(bufs[0]) assert isinstance(canned['C'], CannedClass) d, r = deserialize_object(bufs) C2 = d['C'] assert C2.a == C.a def test_class_oldstyle(): @interactive class C: a = 5 bufs = serialize_object(dict(C=C)) canned = pickle.loads(bufs[0]) assert isinstance(canned['C'], CannedClass) d, r = deserialize_object(bufs) C2 = d['C'] assert C2.a == C.a def test_tuple(): tup = (lambda x: x, 1) bufs = serialize_object(tup) canned = pickle.loads(bufs[0]) assert isinstance(canned, tuple) t2, r = deserialize_object(bufs) assert t2[0](t2[1]) == tup[0](tup[1]) point = namedtuple('point', 'x y') def test_namedtuple(): p = point(1, 2) bufs = serialize_object(p) canned = pickle.loads(bufs[0]) assert isinstance(canned, point) p2, r = deserialize_object(bufs, globals()) assert p2.x == p.x assert p2.y == p.y def test_list(): lis = [lambda x: x, 1] bufs = serialize_object(lis) canned = pickle.loads(bufs[0]) assert isinstance(canned, list) l2, r = deserialize_object(bufs) assert l2[0](l2[1]) == lis[0](lis[1]) def test_class_inheritance(): @interactive class C: a = 5 @interactive class D(C): b = 10 bufs = serialize_object(dict(D=D)) canned = pickle.loads(bufs[0]) assert isinstance(canned['D'], CannedClass) d, r = deserialize_object(bufs) D2 = d['D'] assert D2.a == D.a assert D2.b == D.b def test_pickle_threshold(): numpy = pytest.importorskip('numpy') from numpy.testing import assert_array_equal A = numpy.ones((5, 5)) bufs = serialize_object(A, 1024) assert len(bufs) == 1 B, _ = deserialize_object(bufs) assert_array_equal(A, B) A = numpy.ones((512, 512)) bufs = serialize_object(A, 1024) assert len(bufs) == 2 B, _ = deserialize_object(bufs) assert_array_equal(A, B) ipython-ipyparallel-14e3c43/ipyparallel/tests/test_shellcmd.py000066400000000000000000000202011520071063500247260ustar00rootroot00000000000000"""test shell command classes""" import json import os import signal import sys import time import warnings import pytest from ipyparallel.cluster.shellcmd import ShellCommandSend windows_py_path = 'python' linux_py_path = '/opt/conda/bin/python3' senders = [ pytest.param( "windows", ShellCommandSend(["cmd.exe"], ["/C"], sys.executable, initialize=False), id="cmd", ), pytest.param( "windows", ShellCommandSend( ["cmd.exe"], ["/C"], sys.executable, initialize=False, send_receiver_code=True, ), id="cmd-src", ), pytest.param( "windows", ShellCommandSend( ["powershell.exe"], ["-Command"], sys.executable, initialize=False ), id="powershell", ), pytest.param( "windows", ShellCommandSend( ["powershell.exe"], ["-Command"], sys.executable, initialize=False, send_receiver_code=True, ), id="powershell-src", ), pytest.param( "windows", ShellCommandSend( ["ssh"], ["-p", "2222", "ciuser@127.0.0.1"], windows_py_path, initialize=False, ), id="ssh-win", ), pytest.param( "windows", ShellCommandSend( ["ssh"], ["-p", "2222", "ciuser@127.0.0.1"], windows_py_path, initialize=False, send_receiver_code=True, ), id="ssh-win-src", ), pytest.param( "wsl", ShellCommandSend( ["bash"], ["-c"], "python3", initialize=False, send_receiver_code=True ), id="wsl", ), pytest.param( "posix", ShellCommandSend(["bash"], ["-c"], "python3", initialize=False), id="bash", ), pytest.param( "posix", ShellCommandSend( ["bash"], ["-c"], "python3", initialize=False, send_receiver_code=True, ), id="bash-src", ), pytest.param( "posix", ShellCommandSend( ["ssh"], ["-p", "2222", "ciuser@127.0.0.1"], linux_py_path, initialize=False ), id="ssh-linux", ), pytest.param( "posix", ShellCommandSend( ["ssh"], ["-p", "2222", "ciuser@127.0.0.1"], linux_py_path, initialize=False, send_receiver_code=True, ), id="ssh-linux-src", ), ] sender_ids = [ "cmd", "cmd_src", "pwsh", "pwsh_src", "ssh-win", "ssh-win_src", "wsl", "bash", "bash_src", "ssh-linux", "ssh-linux_src", ] @pytest.fixture def shellcmd_test_cmd(): """returns a command that runs for 5 seconds""" if sys.platform.startswith("win"): return 'ping -n 5 127.0.0.1'.split() else: return 'ping -c 5 127.0.0.1'.split() @pytest.mark.parametrize("platform, sender", senders) def test_shellcmds(request, platform, sender, shellcmd_test_cmd, ssh_key): def read_via_shell(shell, filename): # small helper function to read a file via shell commands if shell._win: content = shell.check_output(f"type {filename}").strip() else: content = shell.check_output(f"cat {filename}").strip() content = content.replace("\r\n", "\n") # correct line endings for windows return content.split("\n") def print_file(shell, filename): print(f"Content of file '{filename}':") lines = read_via_shell(sender, filename) for idx, l in enumerate(lines): print(f"{idx:3}:{l}") prefix = "" if sys.platform.startswith("win"): if platform == "wsl": pytest.skip("wsl deactivated") # comment to activate wsl tests prefix = "/home/" + os.environ["USERNAME"] + "/" elif platform != "windows": pytest.skip("other platform") else: # posix platform if platform != "posix": pytest.skip("other platform") if "ssh" in sender.shell and not sys.platform.startswith("win"): sender.shell.extend(["-i", ssh_key]) # start tests # initialize sender class sender.initialize() if sender.breakaway_support is not None and not sender.breakaway_support: warnings.warn( "Break away process creation flag is not available (known issue for Github Windows Runners)", UserWarning, stacklevel=2, ) # if Platform.get() == Platform.Windows: # sender.breakaway_support = False # just for testing info = sender.get_shell_info() assert len(info) == 2 and info[0] and info[1] test_cmd = shellcmd_test_cmd python_ok = sender.has_python() assert python_ok is True test_dir = prefix + "shellcmd_test" test_file = "testfile.txt" # perform basic file/directory operations sender.cmd_mkdir(test_dir) assert sender.cmd_exists(test_dir) is True # create a simple text file with one line (works on all platforms) fullpath = test_dir + sender.pathsep + test_file sender.check_output(f'echo "test-line" > {fullpath}') assert sender.cmd_exists(fullpath) is True output_lines = read_via_shell(sender, fullpath) assert len(output_lines) == 1 assert "test-line" in output_lines[0] sender.cmd_remove(fullpath) assert sender.cmd_exists(fullpath) is False sender.cmd_rmdir(test_dir) assert sender.cmd_exists(test_dir) is False # do start operation test redirect_output_file = prefix + "output.txt" pid = sender.cmd_start(test_cmd, output_file=redirect_output_file) assert pid > 0 if not sender.cmd_running(pid): print_file(sender, redirect_output_file) # assert sender.cmd_running(pid) is True sender.cmd_kill(pid, signal.SIGTERM) if not sender.cmd_running(pid): print_file(sender, redirect_output_file) assert sender.cmd_running(pid) is False assert sender.cmd_exists(redirect_output_file) is True sender.cmd_remove(redirect_output_file) # do environment setting test # we have a dictionary of three environment entries, where the first one is empty ci_dict = { "ssh": "", "interface": "tcp://*", "registration": 60691, "control": 60692, "mux": 60693, "task": 60694, "iopub": 60695, "hb_ping": 60696, "hb_pong": 60697, "broadcast": [60698, 60699], "key": "169b682b-337c645951e7d47723061090", "curve_serverkey": "null", "location": "host", "pack": "json", "unpack": "json", "signature_scheme": "hmac-sha256", } env_dict = { "IPP_CLUSTER_ID": "", "IPP_PROFILE_DIR": r"~/.ipython/profile_ssh", "IPP_CONNECTION_INFO": json.dumps(ci_dict), } # we use a small python script to output provided environment setting python_cmd = "import os;" python_cmd += "print('IPP_CLUSTER_ID set =', 'IPP_CLUSTER_ID' in os.environ);" python_cmd += "print('IPP_PROFILE_DIR =',os.environ['IPP_PROFILE_DIR']);" python_cmd += "print('IPP_CONNECTION_INFO =',os.environ['IPP_CONNECTION_INFO'])" output_file = prefix + "stdout.txt" # pid = sender.cmd_start([sender.python_path, "-c", python_cmd], env=env_dict, output_file=output_file) pid = sender.cmd_start_python_code( python_cmd, env=env_dict, output_file=output_file ) counter = 0 max_counter = 5 while sender.cmd_running(pid) or counter < max_counter: time.sleep(1) # sleep for 1 second to make sure that command has finished counter += 1 assert sender.cmd_running(pid) is False output_lines = read_via_shell(sender, output_file) # check lines if they correspond to original dictionary (env_dict) assert len(output_lines) == 3 assert output_lines[0] == 'IPP_CLUSTER_ID set = False' for line in output_lines[1:]: key, value = line.split(" = ") assert key in env_dict if isinstance(env_dict[key], dict): # convert to dictionary if needed value = eval(value) assert env_dict[key] == value ipython-ipyparallel-14e3c43/ipyparallel/tests/test_slurm.py000066400000000000000000000025261520071063500243070ustar00rootroot00000000000000import shutil from unittest import mock import pytest from traitlets.config import Config from . import test_cluster from .conftest import temporary_ipython_dir from .test_cluster import ( test_get_output, # noqa: F401 test_restart_engines, # noqa: F401 test_signal_engines, # noqa: F401 test_start_stop_cluster, # noqa: F401 test_to_from_dict, # noqa: F401 ) @pytest.fixture(autouse=True, scope="module") def longer_timeout(): # slurm tests started failing with timeouts # when adding timeout to test_restart_engines # maybe it's just slow... with mock.patch.object(test_cluster, "_timeout", 120): yield # put ipython dir on shared filesystem @pytest.fixture(autouse=True, scope="module") def ipython_dir(request): if shutil.which("sbatch") is None: pytest.skip("Requires slurm") with temporary_ipython_dir(prefix="/data/") as ipython_dir: yield ipython_dir @pytest.fixture def cluster_config(): c = Config() c.Cluster.controller_ip = '0.0.0.0' return c # override launcher classes @pytest.fixture def engine_launcher_class(): if shutil.which("sbatch") is None: pytest.skip("Requires slurm") return 'slurm' @pytest.fixture def controller_launcher_class(): if shutil.which("sbatch") is None: pytest.skip("Requires slurm") return 'slurm' ipython-ipyparallel-14e3c43/ipyparallel/tests/test_ssh.py000066400000000000000000000042741520071063500237440ustar00rootroot00000000000000import os from functools import partial import pytest from traitlets.config import Config from .conftest import Cluster as BaseCluster # noqa: F401 from .test_cluster import ( test_get_output, # noqa: F401 test_restart_engines, # noqa: F401 test_signal_engines, # noqa: F401 test_start_stop_cluster, # noqa: F401 test_to_from_dict, # noqa: F401 ) # import tests that use engine_launcher_class fixture @pytest.fixture(params=["SSH", "SSHProxy"]) def ssh_config(ssh_key, request): windows = os.name == "nt" if ( windows and request.param == "SSHProxy" ): # SSHProxy currently not working under Windows pytest.skip("Proxy tests currently not working under Windows") c = Config() c.Cluster.controller_ip = '0.0.0.0' c.Cluster.engine_launcher_class = request.param engine_set_cfg = c[f"{request.param}EngineSetLauncher"] engine_set_cfg.ssh_args = [] if not windows: engine_set_cfg.ssh_args.extend( [ "-o", "UserKnownHostsFile=/dev/null", "-o", "StrictHostKeyChecking=no", "-i", ssh_key, ] ) engine_set_cfg.scp_args = list(engine_set_cfg.ssh_args) # copy if windows: engine_set_cfg.remote_python = "python" engine_set_cfg.remote_profile_dir = "C:/Users/ciuser/.ipython/profile_default" else: engine_set_cfg.remote_python = "/opt/conda/bin/python3" engine_set_cfg.remote_profile_dir = "/home/ciuser/.ipython/profile_default" engine_set_cfg.engine_args = ['--debug'] c.SSHProxyEngineSetLauncher.hostname = "127.0.0.1" c.SSHProxyEngineSetLauncher.ssh_args.append("-p2222") c.SSHProxyEngineSetLauncher.scp_args.append("-P2222") c.SSHProxyEngineSetLauncher.user = "ciuser" c.SSHEngineSetLauncher.engines = {"ciuser@127.0.0.1:2222": 4} return c @pytest.fixture def Cluster(ssh_config, BaseCluster): # noqa: F811 """Override Cluster to add ssh config""" return partial(BaseCluster, config=ssh_config) # override engine_launcher_class @pytest.fixture def engine_launcher_class(ssh_config): return ssh_config.Cluster.engine_launcher_class ipython-ipyparallel-14e3c43/ipyparallel/tests/test_util.py000066400000000000000000000013071520071063500241160ustar00rootroot00000000000000import socket import pytest from jupyter_client.localinterfaces import localhost, public_ips from ipyparallel import util def test_disambiguate_ip(): # garbage in, garbage out assert util.disambiguate_ip_address('garbage') == 'garbage' assert util.disambiguate_ip_address('0.0.0.0', socket.gethostname()) == localhost() wontresolve = 'this.wontresolve.dns' with pytest.warns( RuntimeWarning, match=f"IPython could not determine IPs for {wontresolve}" ): assert util.disambiguate_ip_address('0.0.0.0', wontresolve) == wontresolve if public_ips(): public_ip = public_ips()[0] assert util.disambiguate_ip_address('0.0.0.0', public_ip) == localhost() ipython-ipyparallel-14e3c43/ipyparallel/tests/test_view.py000066400000000000000000000717511520071063500241250ustar00rootroot00000000000000"""test View objects""" # Copyright (c) IPython Development Team. # Distributed under the terms of the Modified BSD License. import base64 import platform import sys import time from collections import namedtuple from tempfile import NamedTemporaryFile import pytest import zmq from IPython import get_ipython from IPython.utils.io import capture_output import ipyparallel as ipp from ipyparallel import AsyncHubResult, AsyncMapResult, AsyncResult, error from ipyparallel.util import interactive from .clienttest import ( ClusterTestCase, conditional_crash, raises_remote, skip_without, wait, ) point = namedtuple("point", "x y") @pytest.mark.usefixtures('ipython') class TestView(ClusterTestCase): def setup_method(self): # On Win XP, wait for resource cleanup, else parallel test group fails if platform.system() == "Windows" and platform.win32_ver()[0] == "XP": # 1 sec fails. 1.5 sec seems ok. Using 2 sec for margin of safety time.sleep(2) super().setup_method() def test_z_crash_mux(self): """test graceful handling of engine death (direct)""" self.add_engines(1) self.minimum_engines(2) eid = self.client.ids[-1] view = self.client[-2:] view.scatter('should_crash', [False, True], flatten=True) ar = view.apply_async(conditional_crash, ipp.Reference("should_crash")) with raises_remote(error.EngineError): ar.get(10) tic = time.perf_counter() while eid in self.client.ids and time.perf_counter() - tic < 5: time.sleep(0.05) assert eid not in self.client.ids def test_push_pull(self): """test pushing and pulling""" data = dict(a=10, b=1.05, c=list(range(10)), d={'e': (1, 2), 'f': 'hi'}) t = self.client.ids[-1] v = self.client[t] push = v.push pull = v.pull v.block = True nengines = len(self.client) push({'data': data}) d = pull('data') assert d == data self.client[:].push({'data': data}) d = self.client[:].pull('data', block=True) assert d == nengines * [data] ar = push({'data': data}, block=False) assert isinstance(ar, AsyncResult) r = ar.get() ar = self.client[:].pull('data', block=False) assert isinstance(ar, AsyncResult) r = ar.get() assert r == nengines * [data] self.client[:].push(dict(a=10, b=20)) r = self.client[:].pull(('a', 'b'), block=True) assert r, nengines * [[10 == 20]] def test_push_pull_function(self): "test pushing and pulling functions" def testf(x): return 2.0 * x t = self.client.ids[-1] v = self.client[t] v.block = True push = v.push pull = v.pull execute = v.execute push({'testf': testf}) r = pull('testf') assert r(1.0) == testf(1.0) execute('r = testf(10)') r = pull('r') assert r == testf(10) ar = self.client[:].push({'testf': testf}, block=False) ar.get() ar = self.client[:].pull('testf', block=False) rlist = ar.get() for r in rlist: assert r(1.0) == testf(1.0) execute("def g(x): return x*x") r = pull(('testf', 'g')) assert (r[0](10), r[1](10)) == (testf(10), 100) def test_push_function_globals(self): """test that pushed functions have access to globals""" @interactive def geta(): return a # noqa: F821 # self.add_engines(1) v = self.client[-1] v.block = True v['f'] = geta with raises_remote(NameError): v.execute('b=f()') v.execute('a=5') v.execute('b=f()') assert v['b'] == 5 def test_push_function_defaults(self): """test that pushed functions preserve default args""" def echo(a=10): return a v = self.client[-1] v.block = True v['f'] = echo v.execute('b=f()') assert v['b'] == 10 def test_get_result(self): """test getting results from the Hub.""" c = ipp.Client(profile='iptest') # self.add_engines(1) t = c.ids[-1] v = c[t] v2 = self.client[t] ar = v.apply_async(wait, 1) # give the monitor time to notice the message time.sleep(0.25) ahr = v2.get_result(ar.msg_ids[0], owner=False) assert isinstance(ahr, AsyncHubResult) assert ahr.get() == ar.get() ar2 = v2.get_result(ar.msg_ids[0]) assert not isinstance(ar2, AsyncHubResult) assert ahr.get() == ar2.get() c.close() def test_run_newline(self): """test that run appends newline to files""" with NamedTemporaryFile('w', delete=False) as f: f.write( """def g(): return 5 """ ) v = self.client[-1] v.run(f.name, block=True) assert v.apply_sync(lambda f: f(), ipp.Reference('g')) == 5 def test_apply_f_kwarg(self): v = self.client[-1] def echo_kwargs(**kwargs): return kwargs kwargs = v.apply_async(echo_kwargs, f=5).get(timeout=30) assert kwargs == dict(f=5) def test_apply_tracked(self): """test tracking for apply""" # self.add_engines(1) t = self.client.ids[-1] v = self.client[t] v.block = False def echo(n=1024 * 1024, **kwargs): with v.temp_flags(**kwargs): return v.apply(lambda x: x, 'x' * n) ar = echo(1, track=False) ar.wait_for_send(5) assert isinstance(ar._tracker, zmq.MessageTracker) assert ar.sent ar = echo(track=True) ar.wait_for_send(5) assert isinstance(ar._tracker, zmq.MessageTracker) assert ar.sent == ar._tracker.done ar._tracker.wait() assert ar.sent def test_push_tracked(self): t = self.client.ids[-1] ns = dict(x='x' * 1024 * 1024) v = self.client[t] ar = v.push(ns, block=False, track=False) assert ar.sent ar = v.push(ns, block=False, track=True) ar.wait_for_send() assert ar.sent == ar._tracker.done assert ar.sent ar.get() def test_scatter_tracked(self): t = self.client.ids x = 'x' * 1024 * 1024 ar = self.client[t].scatter('x', x, block=False, track=False) assert ar.sent ar = self.client[t].scatter('x', x, block=False, track=True) ar._sent_event.wait() assert isinstance(ar._tracker, zmq.MessageTracker) assert ar.sent == ar._tracker.done ar.wait_for_send() assert ar.sent ar.get() def test_remote_reference(self): v = self.client[-1] v['a'] = 123 ra = ipp.Reference('a') b = v.apply_sync(lambda x: x, ra) assert b == 123 def test_scatter_gather(self): view = self.client[:] seq1 = list(range(16)) view.scatter('a', seq1) seq2 = view.gather('a', block=True) assert seq2 == seq1 with raises_remote(NameError): view.gather('asdf', block=True) @skip_without('numpy') def test_scatter_gather_numpy(self): import numpy from numpy.testing import assert_array_equal view = self.client[:] a = numpy.arange(64) view.scatter('a', a, block=True) b = view.gather('a', block=True) assert_array_equal(b, a) def test_scatter_gather_lazy(self): """scatter/gather with targets='all'""" view = self.client.direct_view(targets='all') x = list(range(64)) view.scatter('x', x) gathered = view.gather('x', block=True) assert gathered == x @skip_without('numpy') def test_apply_numpy(self): """view.apply(f, ndarray)""" import numpy from numpy.testing import assert_array_equal A = numpy.random.random((100, 100)) view = self.client[-1] for dt in ['int32', 'uint8', 'float32', 'float64']: B = A.astype(dt) C = view.apply_sync(lambda x: x, B) assert_array_equal(B, C) @skip_without('numpy') def test_apply_numpy_object_dtype(self): """view.apply(f, ndarray) with dtype=object""" import numpy from numpy.testing import assert_array_equal view = self.client[-1] A = numpy.array([dict(a=5)]) B = view.apply_sync(lambda x: x, A) assert_array_equal(A, B) A = numpy.array([(0, dict(b=10))], dtype=[('i', int), ('o', object)]) B = view.apply_sync(lambda x: x, A) assert_array_equal(A, B) @skip_without('numpy') def test_push_pull_recarray(self): """push/pull recarrays""" import numpy from numpy.testing import assert_array_equal view = self.client[-1] R = numpy.array( [ (1, 'hi', 0.0), (2**30, 'there', 2.5), (-99999, 'world', -12345.6789), ], [('n', int), ('s', '|S10'), ('f', float)], ) view['RR'] = R R2 = view['RR'] r_dtype, r_shape = view.apply_sync( interactive(lambda: (RR.dtype, RR.shape)) # noqa: F821 ) assert r_dtype == R.dtype assert r_shape == R.shape assert R2.dtype == R.dtype assert R2.shape == R.shape assert_array_equal(R2, R) @skip_without('pandas') def test_push_pull_timeseries(self): """push/pull pandas.Series""" import pandas ts = pandas.Series(list(range(10))) view = self.client[-1] view.push(dict(ts=ts), block=True) rts = view['ts'] assert type(rts) is type(ts) assert (ts == rts).all() def test_map(self): view = self.client[:] def f(x): return x**2 data = list(range(16)) ar = view.map_async(f, data) assert len(ar) == len(data) r = ar.get() assert r, list(map(f == data)) def test_map_empty_sequence(self): view = self.client[:] r = view.map_sync(lambda x: x, []) assert r == [] def test_map_iterable(self): """test map on iterables (direct)""" view = self.client[:] # 101 is prime, so it won't be evenly distributed arr = range(101) # ensure it will be an iterator, even in Python 3 it = iter(arr) r = view.map_sync(lambda x: x, it) assert r == list(arr) @skip_without('numpy') def test_map_numpy(self): """test map on numpy arrays (direct)""" import numpy from numpy.testing import assert_array_equal view = self.client[:] # 101 is prime, so it won't be evenly distributed arr = numpy.arange(101) ar = view.map_async(lambda x: x, arr) assert len(ar) == len(arr) r = ar.get() assert_array_equal(r, arr) def test_scatter_gather_nonblocking(self): data = list(range(16)) view = self.client[:] view.scatter('a', data, block=False) ar = view.gather('a', block=False) assert ar.get() == data @skip_without('numpy') def test_scatter_gather_numpy_nonblocking(self): import numpy from numpy.testing import assert_array_equal a = numpy.arange(64) view = self.client[:] ar = view.scatter('a', a, block=False) assert isinstance(ar, AsyncResult) amr = view.gather('a', block=False) assert isinstance(amr, AsyncMapResult) assert_array_equal(amr.get(), a) def test_execute(self): view = self.client[:] # self.client.debug=True execute = view.execute ar = execute('c=30', block=False) assert isinstance(ar, AsyncResult) ar = execute('d=[0,1,2]', block=False) self.client.wait(ar, 1) assert len(ar.get()) == len(self.client) for c in view['c']: assert c == 30 def test_abort(self): view = self.client[-1] ar = view.execute('import time; time.sleep(1)', block=False) ar2 = view.apply_async(lambda: 2) view.abort(ar2) ar3 = view.apply_async(lambda: 3) view.abort(ar3.msg_ids) with pytest.raises(error.TaskAborted): ar2.get() with pytest.raises(error.TaskAborted): ar3.get() def test_abort_all(self): """view.abort() aborts all outstanding tasks""" view = self.client[-1] ars = [view.apply_async(time.sleep, 0.25) for i in range(10)] view.abort() view.wait(timeout=5) for ar in ars[5:]: with pytest.raises(error.TaskAborted): ar.get() def test_temp_flags(self): view = self.client[-1] view.block = True with view.temp_flags(block=False): assert not view.block assert view.block def test_importer(self): view = self.client[-1] view.clear(block=True) with view.importer: import re # noqa: F401 @interactive def findall(pat, s): # this globals() step isn't necessary in real code # only to prevent a closure in the test re = globals()['re'] # noqa: F811 return re.findall(pat, s) assert view.apply_sync(findall, r'\w+', 'hello world') == 'hello world'.split() def test_unicode_execute(self): """test executing unicode strings""" v = self.client[-1] v.block = True code = "a='é'" v.execute(code) assert v['a'] == 'é' def test_unicode_apply_result(self): """test unicode apply results""" v = self.client[-1] r = v.apply_sync(lambda: 'é') assert r == 'é' def test_unicode_apply_arg(self): """test passing unicode arguments to apply""" v = self.client[-1] @interactive def check_unicode(a, check): assert not isinstance(a, bytes), f"{a!r} is bytes, not unicode" assert isinstance(check, bytes), f"{check!r} is not bytes" assert a.encode('utf8') == check, f"{a} != {check}" for s in ['é', 'ßø®∫', 'asdf']: try: v.apply_sync(check_unicode, s, s.encode('utf8')) except error.RemoteError as e: if e.ename == 'AssertionError': self.fail(e.evalue) else: raise e def test_map_reference(self): """view.map(, *seqs) should work""" v = self.client[:] v.scatter('n', self.client.ids, flatten=True) v.execute("f = lambda x,y: x*y") rf = ipp.Reference('f') nlist = list(range(10)) mlist = nlist[::-1] expected = [m * n for m, n in zip(mlist, nlist)] result = v.map_sync(rf, mlist, nlist) assert result == expected def test_apply_reference(self): """view.apply(, *args) should work""" v = self.client[:] v.scatter('n', self.client.ids, flatten=True) v.execute("f = lambda x: n*x") rf = ipp.Reference('f') result = v.apply_sync(rf, 5) expected = [5 * id for id in self.client.ids] assert result == expected def test_eval_reference(self): v = self.client[self.client.ids[0]] v['g'] = list(range(5)) rg = ipp.Reference('g[0]') def echo(x): return x assert v.apply_sync(echo, rg) == 0 def test_reference_nameerror(self): v = self.client[self.client.ids[0]] r = ipp.Reference('elvis_has_left') def echo(x): return x with raises_remote(NameError): v.apply_sync(echo, r) def test_single_engine_map(self): e0 = self.client[self.client.ids[0]] r = list(range(5)) check = [-1 * i for i in r] result = e0.map_sync(lambda x: -1 * x, r) assert result == check def test_len(self): """len(view) makes sense""" e0 = self.client[self.client.ids[0]] assert len(e0) == 1 v = self.client[:] assert len(v) == len(self.client.ids) v = self.client.direct_view('all') assert len(v) == len(self.client.ids) v = self.client[:2] assert len(v) == 2 v = self.client[:1] assert len(v) == 1 v = self.client.load_balanced_view() assert len(v) == len(self.client.ids) # begin execute tests def test_execute_reply(self): e0 = self.client[self.client.ids[0]] e0.block = True ar = e0.execute("5", silent=False) er = ar.get() assert str(er) == f"" assert er.execute_result['data']['text/plain'] == '5' def test_execute_reply_rich(self): e0 = self.client[self.client.ids[0]] e0.block = True e0.execute("from IPython.display import Image, HTML") ar = e0.execute("Image(data=b'garbage', format='png', width=10)", silent=False) er = ar.get() b64data = base64.b64encode(b'garbage').decode('ascii') data, metadata = er._repr_png_() assert data.strip() == b64data.strip() assert metadata == dict(width=10) ar = e0.execute("HTML('bold')", silent=False) er = ar.get() assert er._repr_html_() == "bold" def test_execute_reply_stdout(self): e0 = self.client[self.client.ids[0]] e0.block = True ar = e0.execute("print (5)", silent=False) er = ar.get() assert er.stdout.strip() == '5' def test_execute_result(self): """execute triggers execute_result with silent=False""" view = self.client[:] ar = view.execute("5", silent=False, block=True) expected = [{'text/plain': '5'}] * len(view) mimes = [out['data'] for out in ar.execute_result] assert mimes == expected def test_execute_silent(self): """execute does not trigger execute_result with silent=True""" view = self.client[:] ar = view.execute("5", block=True) expected = [None] * len(view) assert ar.execute_result == expected def test_execute_magic(self): """execute accepts IPython commands""" view = self.client[:] view.execute("a = 5") ar = view.execute("%whos", block=True) # this will raise, if that failed ar.get(5) for stdout in ar.stdout: lines = stdout.splitlines() assert lines[0].split(), ['Variable', 'Type' == 'Data/Info'] found = False for line in lines[2:]: split = line.split() if split == ['a', 'int', '5']: found = True break assert found, f"whos output wrong: {stdout}" def test_execute_displaypub(self): """execute tracks display_pub output""" view = self.client[:] view.execute("from IPython.display import *") ar = view.execute("[ display(i) for i in range(5) ]", block=True) expected = [{'text/plain': str(j)} for j in range(5)] for outputs in ar.outputs: mimes = [out['data'] for out in outputs] assert mimes == expected def test_apply_displaypub(self): """apply tracks display_pub output""" view = self.client[:] view.execute("from IPython.display import *") @interactive def publish(): [display(i) for i in range(5)] # noqa: F821 ar = view.apply_async(publish) ar.get(5) assert ar.wait_for_output(5) expected = [{'text/plain': str(j)} for j in range(5)] for outputs in ar.outputs: mimes = [out['data'] for out in outputs] assert mimes == expected def test_execute_raises(self): """exceptions in execute requests raise appropriately""" view = self.client[-1] ar = view.execute("1/0") with raises_remote(ZeroDivisionError): ar.get(2) def test_remoteerror_render_exception(self): """RemoteErrors get nice tracebacks""" view = self.client[-1] ar = view.execute("1/0") ip = get_ipython() ip.user_ns['ar'] = ar with capture_output() as io: ip.run_cell("ar.get(2)") assert 'ZeroDivisionError' in io.stdout, io.stdout def test_compositeerror_render_exception(self): """CompositeErrors get nice tracebacks""" view = self.client[:] ar = view.execute("1/0") ip = get_ipython() ip.user_ns['ar'] = ar with capture_output() as io: ip.run_cell("ar.get(2)") count = min(error.CompositeError.tb_limit, len(view)) assert io.stdout.count('ZeroDivisionError'), count * 2 == io.stdout assert io.stdout.count('by zero'), count == io.stdout assert io.stdout.count(':execute'), count == io.stdout def test_compositeerror_truncate(self): """Truncate CompositeErrors with many exceptions""" view = self.client[:] requests = [] for i in range(10): requests.append(view.execute("1/0")) ar = self.client.get_result(requests) try: ar.get() except error.CompositeError as _e: e = _e else: self.fail("Should have raised CompositeError") lines = e.render_traceback() with capture_output() as io: e.print_traceback() assert "more exceptions" in lines[-1] count = e.tb_limit assert io.stdout.count('ZeroDivisionError'), 2 * count == io.stdout assert io.stdout.count('by zero'), count == io.stdout assert io.stdout.count(':execute'), count == io.stdout def test_magic_pylab(self): """%pylab works on engines""" pytest.importorskip('matplotlib') view = self.client[-1] ar = view.execute("%pylab inline") # at least check if this raised: reply = ar.get(5) # include imports, in case user config ar = view.execute("plot(rand(100))", silent=False) reply = ar.get(5) assert ar.wait_for_output(5) assert len(reply.outputs) == 1 output = reply.outputs[0] assert "data" in output data = output['data'] assert "image/png" in data def test_func_default_func(self): """interactively defined function as apply func default""" def foo(): return 'foo' def bar(f=foo): return f() view = self.client[-1] ar = view.apply_async(bar) r = ar.get(10) assert r == 'foo' def test_data_pub_single(self): view = self.client[-1] ar = view.execute( '\n'.join( [ 'from ipyparallel.datapub import publish_data', 'for i in range(5):', ' publish_data(dict(i=i))', ] ), block=False, ) assert isinstance(ar.data, dict) ar.get(5) assert ar.wait_for_output(5) assert ar.data == dict(i=4) def test_data_pub(self): view = self.client[:] ar = view.execute( '\n'.join( [ 'from ipyparallel.datapub import publish_data', 'for i in range(5):', ' publish_data(dict(i=i))', ] ), block=False, ) assert all(isinstance(d, dict) for d in ar.data) ar.get(5) assert ar.wait_for_output(5) assert ar.data == [dict(i=4)] * len(ar) def test_can_list_arg(self): """args in lists are canned""" view = self.client[-1] view['a'] = 128 rA = ipp.Reference('a') ar = view.apply_async(lambda x: x, [rA]) r = ar.get(5) assert r == [128] def test_can_dict_arg(self): """args in dicts are canned""" view = self.client[-1] view['a'] = 128 rA = ipp.Reference('a') ar = view.apply_async(lambda x: x, dict(foo=rA)) r = ar.get(5) assert r == dict(foo=128) def test_can_list_kwarg(self): """kwargs in lists are canned""" view = self.client[-1] view['a'] = 128 rA = ipp.Reference('a') ar = view.apply_async(lambda x=5: x, x=[rA]) r = ar.get(5) assert r == [128] def test_can_dict_kwarg(self): """kwargs in dicts are canned""" view = self.client[-1] view['a'] = 128 rA = ipp.Reference('a') ar = view.apply_async(lambda x=5: x, dict(foo=rA)) r = ar.get(5) assert r == dict(foo=128) def test_map_ref(self): """view.map works with references""" view = self.client[:] ranks = sorted(self.client.ids) view.scatter('rank', ranks, flatten=True) rrank = ipp.Reference('rank') amr = view.map_async(lambda x: x * 2, [rrank] * len(view)) drank = amr.get(5) assert drank == [r * 2 for r in ranks] def test_nested_getitem_setitem(self): """get and set with view['a.b']""" view = self.client[-1] view.execute( '\n'.join( [ 'class A: pass', 'a = A()', 'a.b = 128', ] ), block=True, ) ra = ipp.Reference('a') r = view.apply_sync(lambda x: x.b, ra) assert r == 128 assert view['a.b'] == 128 view['a.b'] = 0 r = view.apply_sync(lambda x: x.b, ra) assert r == 0 assert view['a.b'] == 0 def test_return_namedtuple(self): def namedtuplify(x, y): return point(x, y) view = self.client[-1] p = view.apply_sync(namedtuplify, 1, 2) assert p.x == 1 assert p.y == 2 def test_apply_namedtuple(self): def echoxy(p): return p.y, p.x view = self.client[-1] tup = view.apply_sync(echoxy, point(1, 2)) assert tup, 2 == 1 def test_sync_imports(self): view = self.client[-1] with capture_output() as io: with view.sync_imports(): import IPython # noqa assert "IPython" in io.stdout @interactive def find_ipython(): return 'IPython' in globals() assert view.apply_sync(find_ipython) def test_sync_imports_quiet(self): view = self.client[-1] with capture_output() as io: with view.sync_imports(quiet=True): import IPython # noqa assert io.stdout == '' @interactive def find_ipython(): return 'IPython' in globals() assert view.apply_sync(find_ipython) @skip_without('cloudpickle') def test_use_cloudpickle(self): view = self.client[:] view['_a'] = 'engine' __main__ = sys.modules['__main__'] @interactive def get_a(): return _a # noqa: F821 # verify initial condition a_list = view.apply_sync(get_a) assert a_list == ['engine'] * len(view) # enable cloudpickle view.use_cloudpickle() # cloudpickle prefers client values __main__._a = 'client' a_list = view.apply_sync(get_a) assert a_list == ['client'] * len(view) # still works even if remote is undefined view.execute('del _a', block=True) a_list = view.apply_sync(get_a) assert a_list == ['client'] * len(view) # restore pickle, shouldn't resolve view.use_pickle() with raises_remote(NameError): view.apply_sync(get_a) @skip_without('cloudpickle') def test_cloudpickle_push_pull(self): view = self.client[:] # enable cloudpickle view.use_cloudpickle() # push/pull still work view.push({"key": "pushed"}, block=True) ar = view.pull("key") assert ar.get(timeout=10) == ["pushed"] * len(view) # restore pickle, should get the same value view.use_pickle() ar = view.pull("key") assert ar.get(timeout=10) == ["pushed"] * len(view) @skip_without('cloudpickle') @pytest.mark.xfail(reason="@require doesn't work with cloudpickle") def test_cloudpickle_require(self): view = self.client[:] # enable cloudpickle view.use_cloudpickle() assert 'types' not in globals(), ( "Test condition isn't met if types is already imported" ) @ipp.require("types") @ipp.interactive def func(x): return types.SimpleNamespace(n=x) # noqa: F821 res = view.apply_async(func, 5) assert res.get(timeout=10) == [] view.use_pickle() def test_block_kwarg(self): """ Tests that kwargs such as 'block' can be specified when creating a view, in this case a BroadcastView """ view = self.client.broadcast_view(block=True) assert view.block is True # Execute something as a sanity check view.execute("5", silent=False) ipython-ipyparallel-14e3c43/ipyparallel/tests/test_view_broadcast.py000066400000000000000000000063021520071063500261350ustar00rootroot00000000000000"""test BroadcastView objects""" import pytest from . import test_view needs_map = pytest.mark.xfail(reason="map not yet implemented") @pytest.mark.usefixtures('ipython') class TestBroadcastView(test_view.TestView): is_coalescing = False def setup_method(self): super().setup_method() self._broadcast_view_used = False # use broadcast view for direct API real_direct_view = self.client.real_direct_view = self.client.direct_view def broadcast_or_direct(targets): if isinstance(targets, int): return real_direct_view(targets) else: self._broadcast_view_used = True return self.client.broadcast_view( targets, is_coalescing=self.is_coalescing ) self.client.direct_view = broadcast_or_direct def teardown_method(self): super().teardown_method() # note that a test didn't use a broadcast view if not self._broadcast_view_used: pytest.skip("No broadcast view used") @pytest.mark.xfail(reason="Tracking gets disconnected from original message") def test_scatter_tracked(self): pass class TestBroadcastViewCoalescing(TestBroadcastView): is_coalescing = True @pytest.mark.xfail(reason="coalescing view doesn't preserve target order") def test_target_ordering(self): self.minimum_engines(4) ids_in_order = self.client.ids dv = self.client.real_direct_view(ids_in_order) dv.scatter('rank', ids_in_order, flatten=True, block=True) assert dv['rank'] == ids_in_order view = self.client.broadcast_view(ids_in_order, is_coalescing=True) assert view['rank'] == ids_in_order view = self.client.broadcast_view(ids_in_order[::-1], is_coalescing=True) assert view['rank'] == ids_in_order[::-1] view = self.client.broadcast_view(ids_in_order[::2], is_coalescing=True) assert view['rank'] == ids_in_order[::2] view = self.client.broadcast_view(ids_in_order[::-2], is_coalescing=True) assert view['rank'] == ids_in_order[::-2] def test_engine_metadata(self): self.minimum_engines(4) ids_in_order = sorted(self.client.ids) dv = self.client.real_direct_view(ids_in_order) dv.scatter('rank', ids_in_order, flatten=True, block=True) view = self.client.broadcast_view(ids_in_order, is_coalescing=True) ar = view.pull('rank', block=False) result = ar.get(timeout=10) assert isinstance(ar.engine_id, list) assert isinstance(ar.engine_uuid, list) assert result == ar.engine_id assert sorted(ar.engine_id) == ids_in_order even_ids = ids_in_order[::-2] view = self.client.broadcast_view(even_ids, is_coalescing=True) ar = view.pull('rank', block=False) result = ar.get(timeout=10) assert isinstance(ar.engine_id, list) assert isinstance(ar.engine_uuid, list) assert result == ar.engine_id assert sorted(ar.engine_id) == sorted(even_ids) @pytest.mark.xfail(reason="displaypub ordering not preserved") def test_apply_displaypub(self): pass # FIXME del TestBroadcastView ipython-ipyparallel-14e3c43/ipyparallel/traitlets.py000066400000000000000000000056401520071063500227570ustar00rootroot00000000000000"""Custom ipyparallel trait types""" from importlib.metadata import entry_points from traitlets import List, TraitError, Type class Launcher(Type): """Entry point-extended Type classes can be registered via entry points in addition to standard 'mypackage.MyClass' strings """ def __init__(self, *args, entry_point_group, **kwargs): self.entry_point_group = entry_point_group kwargs.setdefault('klass', 'ipyparallel.cluster.launcher.BaseLauncher') super().__init__(*args, **kwargs) _original_help = '' @property def help(self): """Extend help by listing currently installed choices""" chunks = [self._original_help] chunks.append("Currently installed: ") for key, entry_point in self.load_entry_points().items(): chunks.append(f" - {key}: {entry_point.value}") return '\n'.join(chunks) @help.setter def help(self, value): self._original_help = value def load_entry_points(self): """Load my entry point group""" return { entry_point.name.lower(): entry_point for entry_point in entry_points(group=self.entry_point_group) } def validate(self, obj, value): if isinstance(value, str): # first, look up in entry point registry registry = self.load_entry_points() key = value.lower() if key in registry: value = registry[key].load() return super().validate(obj, value) class PortList(List): """List of ports For use configuring a list of ports to consume Ports will be a list of valid ports Can be specified as a port-range string for convenience (mainly for use on the command-line) e.g. '10101-10105,10108' """ @staticmethod def parse_port_range(s): """Parse a port range string in the form '1,3-5,6' into [1,3,4,5,6]""" ports = [] ranges = s.split(",") for r in ranges: start, _, end = r.partition("-") start = int(start) if end: end = int(end) ports.extend(range(start, end + 1)) else: ports.append(start) return ports def from_string_list(self, s_list): ports = [] for s in s_list: ports.extend(self.parse_port_range(s)) return ports def validate(self, obj, value): if isinstance(value, str): value = self.parse_port_range(value) value = super().validate(obj, value) for item in value: if not isinstance(item, int): raise TraitError( f"Ports must be integers in range 1-65536, not {item!r}" ) if not 1 <= item <= 65536: raise TraitError( f"Ports must be integers in range 1-65536, not {item!r}" ) return value ipython-ipyparallel-14e3c43/ipyparallel/util.py000066400000000000000000000577201520071063500217270ustar00rootroot00000000000000"""Some generic utilities for dealing with classes, urls, and serialization.""" # Copyright (c) IPython Development Team. # Distributed under the terms of the Modified BSD License. import asyncio import functools import inspect import logging import os import re import shlex import socket import sys import warnings from datetime import datetime, timezone from functools import lru_cache, partial from signal import SIGABRT, SIGINT, SIGTERM, signal from threading import Thread, current_thread from types import FunctionType import traitlets import zmq from dateutil.parser import parse as dateutil_parse from dateutil.tz import tzlocal from IPython import get_ipython from IPython.core.profiledir import ProfileDir, ProfileDirError from IPython.paths import get_ipython_dir from jupyter_client import session from jupyter_client.localinterfaces import is_public_ip, localhost, public_ips from tornado.ioloop import IOLoop from traitlets.log import get_logger from zmq.log import handlers utc = timezone.utc # ----------------------------------------------------------------------------- # Classes # ----------------------------------------------------------------------------- class Namespace(dict): """Subclass of dict for attribute access to keys.""" def __getattr__(self, key): """getattr aliased to getitem""" if key in self: return self[key] else: raise NameError(key) def __setattr__(self, key, value): """setattr aliased to setitem, with strict""" if hasattr(dict, key): raise KeyError(f"Cannot override dict keys {key!r}") self[key] = value class ReverseDict(dict): """simple double-keyed subset of dict methods.""" def __init__(self, *args, **kwargs): dict.__init__(self, *args, **kwargs) self._reverse = dict() for key, value in self.items(): self._reverse[value] = key def __getitem__(self, key): try: return dict.__getitem__(self, key) except KeyError: return self._reverse[key] def __setitem__(self, key, value): if key in self._reverse: raise KeyError(f"Can't have key {key!r} on both sides!") dict.__setitem__(self, key, value) self._reverse[value] = key def pop(self, key): value = dict.pop(self, key) self._reverse.pop(value) return value def get(self, key, default=None): try: return self[key] except KeyError: return default # ----------------------------------------------------------------------------- # Functions # ----------------------------------------------------------------------------- def log_errors(f): """decorator to log unhandled exceptions raised in a method. For use wrapping on_recv callbacks, so that exceptions do not cause the stream to be closed. """ @functools.wraps(f) def logs_errors(self, *args, **kwargs): try: result = f(self, *args, **kwargs) except Exception as e: self.log.exception(f"Uncaught exception in {f}: {e}") return if inspect.isawaitable(result): # if it's async, schedule logging for when the future resolves future = asyncio.ensure_future(result) def _log_error(future): if future.exception(): self.log.error(f"Uncaught exception in {f}: {future.exception()}") future.add_done_callback(_log_error) return logs_errors def is_url(url): """boolean check for whether a string is a zmq url""" if '://' not in url: return False proto, addr = url.split('://', 1) if proto.lower() not in ['tcp', 'pgm', 'epgm', 'ipc', 'inproc']: return False return True def validate_url(url): """validate a url for zeromq""" if not isinstance(url, str): raise TypeError(f"url must be a string, not {type(url)!r}") url = url.lower() proto_addr = url.split('://') assert len(proto_addr) == 2, f'Invalid url: {url!r}' proto, addr = proto_addr assert proto in [ 'tcp', 'pgm', 'epgm', 'ipc', 'inproc', ], f"Invalid protocol: {proto!r}" # domain pattern adapted from http://www.regexlib.com/REDetails.aspx?regexp_id=391 # author: Remi Sabourin pat = re.compile( r'^([\w\d]([\w\d\-]{0,61}[\w\d])?\.)*[\w\d]([\w\d\-]{0,61}[\w\d])?$' ) if proto == 'tcp': lis = addr.split(':') assert len(lis) == 2, f'Invalid url: {url!r}' addr, s_port = lis try: port = int(s_port) except ValueError: raise AssertionError(f"Invalid port {port!r} in url: {url!r}") assert addr == '*' or pat.match(addr) is not None, f'Invalid url: {url!r}' else: # only validate tcp urls currently pass return True def validate_url_container(container): """validate a potentially nested collection of urls.""" if isinstance(container, str): url = container return validate_url(url) elif isinstance(container, dict): container = container.values() for element in container: validate_url_container(element) def split_url(url): """split a zmq url (tcp://ip:port) into ('tcp','ip','port').""" proto_addr = url.split('://') assert len(proto_addr) == 2, f'Invalid url: {url!r}' proto, addr = proto_addr lis = addr.split(':') assert len(lis) == 2, f'Invalid url: {url!r}' addr, s_port = lis return proto, addr, s_port def is_ip(location): """Is a location an ip? It could be a hostname. """ return bool(re.match(location, r'(\d+\.){3}\d+')) @lru_cache def ip_for_host(host): """Get the ip address for a host If no ips can be found for the host, the host is returned unmodified. """ try: return socket.gethostbyname_ex(host)[2][0] except Exception as e: warnings.warn( f"IPython could not determine IPs for {host}: {e}", RuntimeWarning ) return host def disambiguate_ip_address(ip, location=None): """turn multi-ip interfaces '0.0.0.0' and '*' into a connectable address Explicit IP addresses are returned unmodified. Parameters ---------- ip : IP address An IP address, or the special values 0.0.0.0, or * location : IP address or hostname, optional A public IP of the target machine, or its hostname. If location is an IP of the current machine, localhost will be returned, otherwise location will be returned. """ if ip in {'0.0.0.0', '*'}: if not location: # unspecified location, localhost is the only choice return localhost() elif not is_ip(location): if location == socket.gethostname(): # hostname matches, use localhost return localhost() else: # hostname doesn't match, but the machine can have a few names. location = ip_for_host(location) if is_public_ip(location): # location is a public IP on this machine, use localhost ip = localhost() elif not public_ips(): # this machine's public IPs cannot be determined, # assume `location` is not this machine warnings.warn("IPython could not determine public IPs", RuntimeWarning) ip = location else: # location is not this machine, do not use loopback ip = location return ip def disambiguate_url(url, location=None): """turn multi-ip interfaces '0.0.0.0' and '*' into connectable ones, based on the location (default interpretation is localhost). This is for zeromq urls, such as ``tcp://*:10101``. """ try: proto, ip, port = split_url(url) except AssertionError: # probably not tcp url; could be ipc, etc. return url ip = disambiguate_ip_address(ip, location) return f"{proto}://{ip}:{port}" # -------------------------------------------------------------------------- # helpers for implementing old MEC API via view.apply # -------------------------------------------------------------------------- def interactive(f): """decorator for making functions appear as interactively defined. This results in the function being linked to the user_ns as globals() instead of the module globals(). """ # build new FunctionType, so it can have the right globals # interactive functions never have closures, that's kind of the point if isinstance(f, FunctionType): mainmod = __import__('__main__') f = FunctionType( f.__code__, mainmod.__dict__, f.__name__, f.__defaults__, ) # associate with __main__ for uncanning f.__module__ = '__main__' return f def _push(**ns): """helper method for implementing `client.push` via `client.apply`""" user_ns = get_ipython().user_global_ns tmp = '_IP_PUSH_TMP_' while tmp in user_ns: tmp = tmp + '_' try: for name, value in ns.items(): user_ns[tmp] = value exec(f"{name} = {tmp}", user_ns) finally: user_ns.pop(tmp, None) def _pull(keys): """helper method for implementing `client.pull` via `client.apply`""" user_ns = get_ipython().user_global_ns if isinstance(keys, (list, tuple, set)): return [eval(key, user_ns) for key in keys] else: return eval(keys, user_ns) def _execute(code): """helper method for implementing `client.execute` via `client.apply`""" user_ns = get_ipython().user_global_ns exec(code, user_ns) # -------------------------------------------------------------------------- # extra process management utilities # -------------------------------------------------------------------------- _random_ports = set() def select_random_ports(n): """Selects and return n random ports that are available.""" ports = [] for i in range(n): sock = socket.socket() sock.bind(('', 0)) while sock.getsockname()[1] in _random_ports: sock.close() sock = socket.socket() sock.bind(('', 0)) ports.append(sock) for i, sock in enumerate(ports): port = sock.getsockname()[1] sock.close() ports[i] = port _random_ports.add(port) return ports def signal_children(children): """Relay interupt/term signals to children, for more solid process cleanup.""" def terminate_children(sig, frame): log = get_logger() log.critical("Got signal %i, terminating children...", sig) for child in children: child.terminate() sys.exit(sig != SIGINT) # sys.exit(sig) for sig in (SIGINT, SIGABRT, SIGTERM): signal(sig, terminate_children) def integer_loglevel(loglevel): try: loglevel = int(loglevel) except ValueError: if isinstance(loglevel, str): loglevel = getattr(logging, loglevel) return loglevel def connect_logger(logname, context, iface, root="ip", loglevel=logging.DEBUG): logger = logging.getLogger(logname) if any([isinstance(h, handlers.PUBHandler) for h in logger.handlers]): # don't add a second PUBHandler return loglevel = integer_loglevel(loglevel) lsock = context.socket(zmq.PUB) lsock.connect(iface) handler = handlers.PUBHandler(lsock) handler.setLevel(loglevel) handler.root_topic = root logger.addHandler(handler) logger.setLevel(loglevel) return logger def connect_engine_logger(context, iface, engine, loglevel=logging.DEBUG): from ipyparallel.engine.log import EnginePUBHandler logger = logging.getLogger() if any([isinstance(h, handlers.PUBHandler) for h in logger.handlers]): # don't add a second PUBHandler return loglevel = integer_loglevel(loglevel) lsock = context.socket(zmq.PUB) lsock.connect(iface) handler = EnginePUBHandler(engine, lsock) handler.setLevel(loglevel) logger.addHandler(handler) logger.setLevel(loglevel) return logger def local_logger(logname, loglevel=logging.DEBUG): loglevel = integer_loglevel(loglevel) logger = logging.getLogger(logname) if any([isinstance(h, logging.StreamHandler) for h in logger.handlers]): # don't add a second StreamHandler return handler = logging.StreamHandler() handler.setLevel(loglevel) formatter = logging.Formatter( "%(asctime)s.%(msecs).03d [%(name)s] %(message)s", datefmt="%Y-%m-%d %H:%M:%S", ) handler.setFormatter(formatter) logger.addHandler(handler) logger.setLevel(loglevel) return logger def set_hwm(sock, hwm=0): """set zmq High Water Mark on a socket in a way that always works for various pyzmq / libzmq versions. """ import zmq for key in ('HWM', 'SNDHWM', 'RCVHWM'): opt = getattr(zmq, key, None) if opt is None: continue try: sock.setsockopt(opt, hwm) except zmq.ZMQError: pass def int_keys(dikt): """Rekey a dict that has been forced to cast number keys to str for JSON where there should be ints. """ for k in list(dikt): if isinstance(k, str): nk = None try: nk = int(k) except ValueError: try: nk = float(k) except ValueError: continue if nk in dikt: raise KeyError(f"already have key {nk!r}") dikt[nk] = dikt.pop(k) return dikt def become_dask_worker(address, nanny=False, **kwargs): """Task function for becoming a dask.distributed Worker Parameters ---------- address : str The URL of the dask Scheduler. **kwargs Any additional keyword arguments will be passed to the Worker constructor. """ shell = get_ipython() kernel = shell.kernel if getattr(kernel, 'dask_worker', None) is not None: kernel.log.info("Dask worker is already running.") return from distributed import Nanny, Worker if nanny: w = Nanny(address, **kwargs) else: w = Worker(address, **kwargs) shell.user_ns['dask_worker'] = shell.user_ns['distributed_worker'] = ( kernel.distributed_worker ) = w # call_soon doesn't launch coroutines def _log_error(f): kernel.log.info(f"dask start finished {f=}") try: f.result() except Exception: kernel.log.error("Error starting dask worker", exc_info=True) f = asyncio.ensure_future(w.start()) f.add_done_callback(_log_error) def stop_distributed_worker(): """Task function for stopping the the distributed worker on an engine.""" shell = get_ipython() kernel = shell.kernel if getattr(kernel, 'distributed_worker', None) is None: kernel.log.info("Distributed worker already stopped.") return w = kernel.distributed_worker kernel.distributed_worker = None if shell.user_ns.get('distributed_worker', None) is w: shell.user_ns.pop('distributed_worker', None) IOLoop.current().add_callback(lambda: w.terminate(None)) def ensure_timezone(dt): """Ensure a datetime object has a timezone If it doesn't have one, attach the local timezone. """ if dt.tzinfo is None: return dt.replace(tzinfo=tzlocal()) else: return dt # extract_dates forward-port from jupyter_client 5.0 # timestamp formats ISO8601 = "%Y-%m-%dT%H:%M:%S.%f" ISO8601_PAT = re.compile( r"^(\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2})(\.\d{1,6})?(Z|([\+\-]\d{2}:?\d{2}))?$" ) def _ensure_tzinfo(dt): """Ensure a datetime object has tzinfo If no tzinfo is present, add tzlocal """ if not dt.tzinfo: # No more naïve datetime objects! warnings.warn( f"Interpreting naïve datetime as local {dt}. Please add timezone info to timestamps.", DeprecationWarning, stacklevel=4, ) dt = dt.replace(tzinfo=tzlocal()) return dt def _parse_date(s): """parse an ISO8601 date string If it is None or not a valid ISO8601 timestamp, it will be returned unmodified. Otherwise, it will return a datetime object. """ if s is None: return s m = ISO8601_PAT.match(s) if m: dt = dateutil_parse(s) return _ensure_tzinfo(dt) return s def extract_dates(obj): """extract ISO8601 dates from unpacked JSON""" if isinstance(obj, dict): new_obj = {} # don't clobber for k, v in obj.items(): new_obj[k] = extract_dates(v) obj = new_obj elif isinstance(obj, (list, tuple)): obj = [extract_dates(o) for o in obj] elif isinstance(obj, str): obj = _parse_date(obj) return obj def compare_datetimes(a, b): """Compare two datetime objects If one has a timezone and the other doesn't, treat the naïve datetime as local time to avoid errors. Returns the timedelta """ if a.tzinfo is None and b.tzinfo is not None: a = a.replace(tzinfo=tzlocal()) elif a.tzinfo is not None and b.tzinfo is None: b = b.replace(tzinfo=tzlocal()) return a - b def utcnow(): """Timezone-aware UTC timestamp""" return datetime.now(utc) def _v(version_s): return tuple(int(s) for s in re.findall(r"\d+", version_s)) @lru_cache def _disable_session_extract_dates(): """Monkeypatch jupyter_client.extract_dates to be a no-op avoids performance problem parsing unused timestamp strings """ session.extract_dates = lambda obj: obj def progress(*args, widget=None, **kwargs): """Create a tqdm progress bar If `widget` is None, autodetects if IPython widgets should be used, otherwise use basic tqdm. """ if widget is None: # auto widget if in a kernel ip = get_ipython() if ip is not None and getattr(ip, 'kernel', None) is not None: try: import ipywidgets # noqa except ImportError: widget = False else: widget = True else: widget = False if widget: import tqdm.notebook f = tqdm.notebook.tqdm_notebook else: import tqdm kwargs.setdefault("file", sys.stdout) f = tqdm.tqdm return f(*args, **kwargs) def abbreviate_profile_dir(profile_dir): """Abbreviate IPython profile directory if in $IPYTHONDIR""" profile_prefix = os.path.join(get_ipython_dir(), "profile_") if profile_dir.startswith(profile_prefix): # use just the profile name if it's in $IPYTHONDIR return profile_dir[len(profile_prefix) :] else: return profile_dir def _all_profile_dirs(): """List all IPython profile directories""" profile_dirs = [] if not os.path.isdir(get_ipython_dir()): return profile_dirs with os.scandir(get_ipython_dir()) as paths: for path in paths: if path.is_dir() and path.name.startswith('profile_'): profile_dirs.append(path.path) return profile_dirs def _default_profile_dir(profile=None): """Locate the default IPython profile directory Priorities: - named profile, if specified - current IPython profile, if run inside IPython - $IPYTHONDIR/profile_default Returns absolute profile directory path, ensuring it exists """ if not profile: ip = get_ipython() if ip is not None: return ip.profile_dir.location ipython_dir = get_ipython_dir() profile = profile or 'default' try: pd = ProfileDir.find_profile_dir_by_name(ipython_dir, name=profile) except ProfileDirError: pd = ProfileDir.create_profile_dir_by_name(ipython_dir, name=profile) return pd.location def _locate_profiles(profiles=None): """Locate one or more IPython profiles by name""" ipython_dir = get_ipython_dir() return [ ProfileDir.find_profile_dir_by_name(ipython_dir, name=profile).location for profile in profiles ] def shlex_join(cmd): """Backport shlex.join to Python < 3.8""" return ' '.join(shlex.quote(s) for s in cmd) _traitlet_annotations = { traitlets.Bool: bool, traitlets.Integer: int, traitlets.Float: float, traitlets.List: list, traitlets.Dict: dict, traitlets.Set: set, traitlets.Unicode: str, traitlets.Tuple: tuple, } class _TraitAnnotation: """Trait annotation for a trait type""" def __init__(self, trait_type): self.trait_type = trait_type def __repr__(self): return self.trait_type.__name__ def _trait_annotation(trait_type): """Return an annotation for a trait""" if trait_type in _traitlet_annotations: return _traitlet_annotations[trait_type] else: annotation = _traitlet_annotations[trait_type] = _TraitAnnotation(trait_type) return annotation def _traitlet_signature(cls): """Add traitlet-based signature to a class""" parameters = [] for name, trait in cls.class_traits().items(): if name.startswith("_"): # omit private traits continue if trait.metadata.get("nosignature"): continue if "alias" in trait.metadata: name = trait.metadata["alias"] if hasattr(trait, 'default'): # traitlets 5 default = trait.default() else: default = trait.default_value if default is traitlets.Undefined: default = None annotation = _trait_annotation(trait.__class__) parameters.append( inspect.Parameter( name=name, kind=inspect.Parameter.KEYWORD_ONLY, annotation=annotation, default=default, ) ) cls.__signature__ = inspect.Signature(parameters) return cls def bind(socket, url, curve_publickey=None, curve_secretkey=None): """Common utility to bind with optional auth info""" if curve_secretkey: socket.setsockopt(zmq.CURVE_SERVER, 1) socket.setsockopt(zmq.CURVE_SECRETKEY, curve_secretkey) return socket.bind(url) def connect( socket, url, curve_serverkey=None, curve_publickey=None, curve_secretkey=None, ): """Common utility to connect with optional auth info""" if curve_serverkey: if not curve_publickey or not curve_secretkey: # unspecified, generate new client credentials # we don't use client secret auth, # so these are just used for encryption. # any values will do. curve_publickey, curve_secretkey = zmq.curve_keypair() socket.setsockopt(zmq.CURVE_SERVERKEY, curve_serverkey) socket.setsockopt(zmq.CURVE_SECRETKEY, curve_secretkey) socket.setsockopt(zmq.CURVE_PUBLICKEY, curve_publickey) return socket.connect(url) def _detach_thread_output(ident=None): """undo thread-parent mapping in ipykernel#1186""" # disable ipykernel's association of thread output with the cell that # spawned the thread. # there should be a public API for this... if ident is None: ident = current_thread().ident for stream in (sys.stdout, sys.stderr): for name in ("_thread_to_parent", "_thread_to_parent_header"): mapping = getattr(stream, name, None) if mapping: mapping.pop(ident, None) class _OutputProducingThread(Thread): """ Subclass Thread to workaround bug in ipykernel associating thread output with wrong Cell See https://github.com/ipython/ipykernel/issues/1289 """ def __init__(self, target, **kwargs): wrapped_target = partial(self._wrapped_target, target) super().__init__(target=wrapped_target, **kwargs) def _wrapped_target(self, target, *args, **kwargs): _detach_thread_output(self.ident) return target(*args, **kwargs) # minimal subset of TermColors, removed from IPython # not for public consumption class _TermColors: Normal = '\033[0m' Red = '\033[0;31m' ipython-ipyparallel-14e3c43/jupyter-config/000077500000000000000000000000001520071063500210145ustar00rootroot00000000000000ipython-ipyparallel-14e3c43/jupyter-config/jupyter_notebook_config.d/000077500000000000000000000000001520071063500261655ustar00rootroot00000000000000ipython-ipyparallel-14e3c43/jupyter-config/jupyter_notebook_config.d/ipyparallel.json000066400000000000000000000001301520071063500313700ustar00rootroot00000000000000{ "NotebookApp": { "nbserver_extensions": { "ipyparallel": true } } } ipython-ipyparallel-14e3c43/jupyter-config/jupyter_server_config.d/000077500000000000000000000000001520071063500256535ustar00rootroot00000000000000ipython-ipyparallel-14e3c43/jupyter-config/jupyter_server_config.d/ipyparallel.json000066400000000000000000000001261520071063500310630ustar00rootroot00000000000000{ "ServerApp": { "jpserver_extensions": { "ipyparallel": true } } } ipython-ipyparallel-14e3c43/jupyter-config/nbconfig/000077500000000000000000000000001520071063500226015ustar00rootroot00000000000000ipython-ipyparallel-14e3c43/jupyter-config/nbconfig/tree.d/000077500000000000000000000000001520071063500237625ustar00rootroot00000000000000ipython-ipyparallel-14e3c43/jupyter-config/nbconfig/tree.d/ipyparallel.json000066400000000000000000000000741520071063500271740ustar00rootroot00000000000000{ "load_extensions": { "ipyparallel/main": true } } ipython-ipyparallel-14e3c43/lab/000077500000000000000000000000001520071063500166055ustar00rootroot00000000000000ipython-ipyparallel-14e3c43/lab/schema/000077500000000000000000000000001520071063500200455ustar00rootroot00000000000000ipython-ipyparallel-14e3c43/lab/schema/plugin.json000066400000000000000000000003601520071063500222350ustar00rootroot00000000000000{ "jupyter.lab.setting-icon-class": "ipp-Logo", "jupyter.lab.setting-icon-label": "IPython Parallel", "title": "IPython Parallel", "description": "Settings for the IPython Parallel plugin.", "properties": {}, "type": "object" } ipython-ipyparallel-14e3c43/lab/src/000077500000000000000000000000001520071063500173745ustar00rootroot00000000000000ipython-ipyparallel-14e3c43/lab/src/clusters.tsx000066400000000000000000000555611520071063500220140ustar00rootroot00000000000000import { showErrorMessage, Toolbar, ToolbarButton, CommandToolbarButton, } from "@jupyterlab/apputils"; import { IChangedArgs } from "@jupyterlab/coreutils"; import * as nbformat from "@jupyterlab/nbformat"; import { ServerConnection } from "@jupyterlab/services"; import { refreshIcon } from "@jupyterlab/ui-components"; import { ArrayExt } from "@lumino/algorithm"; import { JSONObject, JSONExt, MimeData } from "@lumino/coreutils"; import { ElementExt } from "@lumino/domutils"; import { Drag } from "@lumino/dragdrop"; import { Message } from "@lumino/messaging"; import { Poll } from "@lumino/polling"; import { ISignal, Signal } from "@lumino/signaling"; import { Widget, PanelLayout } from "@lumino/widgets"; import { newClusterDialog, INewCluster } from "./dialog"; import * as React from "react"; import { createRoot } from "react-dom/client"; import { CommandRegistry } from "@lumino/commands"; import { CommandIDs } from "./commands"; /** * A refresh interval (in ms) for polling the backend cluster manager. */ const REFRESH_INTERVAL = 5000; /** * The threshold in pixels to start a drag event. */ const DRAG_THRESHOLD = 5; /** * The mimetype used for Jupyter cell data. */ const JUPYTER_CELL_MIME = "application/vnd.jupyter.cells"; const CLUSTER_PREFIX = "ipyparallel/clusters"; /** * A widget for IPython cluster management. */ export class ClusterManager extends Widget { /** * Create a new cluster manager. */ constructor(options: ClusterManager.IOptions) { super(); this.addClass("ipp-ClusterManager"); this._serverSettings = ServerConnection.makeSettings(); this._injectClientCodeForCluster = options.injectClientCodeForCluster; this._getClientCodeForCluster = options.getClientCodeForCluster; this._registry = options.registry; // A function to set the active cluster. this._setActiveById = (id: string) => { const cluster = this._clusters.find((c) => c.id === id); if (!cluster) { return; } const old = this._activeCluster; if (old && old.id === cluster.id) { return; } this._activeCluster = cluster; this._activeClusterChanged.emit({ name: "cluster", oldValue: old, newValue: cluster, }); this.update(); }; const layout = (this.layout = new PanelLayout()); this._clusterListing = new Widget(); this._clusterListing.addClass("ipp-ClusterListing"); // Create the toolbar. const toolbar = new Toolbar(); // Make a label widget for the toolbar. const toolbarLabel = new Widget(); toolbarLabel.node.textContent = "CLUSTERS"; toolbarLabel.addClass("ipp-ClusterManager-label"); toolbar.addItem("label", toolbarLabel); // Make a refresh button for the toolbar. toolbar.addItem( "refresh", new ToolbarButton({ icon: refreshIcon, onClick: async () => { return this._updateClusterList(); }, tooltip: "Refresh Cluster List", }), ); // Make a new cluster button for the toolbar. toolbar.addItem( CommandIDs.newCluster, new CommandToolbarButton({ commands: this._registry, id: CommandIDs.newCluster, }), ); layout.addWidget(toolbar); layout.addWidget(this._clusterListing); // Do an initial refresh of the cluster list. void this._updateClusterList(); // Also refresh periodically. this._poll = new Poll({ factory: async () => { await this._updateClusterList(); }, frequency: { interval: REFRESH_INTERVAL, backoff: true, max: 60 * 1000 }, standby: "when-hidden", }); } /** * The currently selected cluster, or undefined if there is none. */ get activeCluster(): IClusterModel | undefined { return this._activeCluster; } /** * Set an active cluster by id. */ setActiveCluster(id: string): void { this._setActiveById(id); } /** * A signal that is emitted when an active cluster changes. */ get activeClusterChanged(): ISignal< this, IChangedArgs > { return this._activeClusterChanged; } /** * Whether the cluster manager is ready to launch a cluster */ get isReady(): boolean { return this._isReady; } /** * Get the current clusters known to the manager. */ get clusters(): IClusterModel[] { return this._clusters; } /** * Refresh the current list of clusters. */ async refresh(): Promise { await this._updateClusterList(); } /** * Create a new cluster. */ async create(): Promise { const clusterRequest = await newClusterDialog({}); if (!clusterRequest) { return; } const cluster = await this._newCluster(clusterRequest); return cluster; } /** * Start a cluster by ID. */ async start(id: string): Promise { const cluster = this._clusters.find((c) => c.id === id); if (!cluster) { throw Error(`Cannot find cluster ${id}`); } await this._startById(id); } /** * Stop a cluster by ID. */ async stop(id: string): Promise { const cluster = this._clusters.find((c) => c.id === id); if (!cluster) { throw Error(`Cannot find cluster ${id}`); } await this._stopById(id); } /** * Scale a cluster by ID. */ async scale(id: string): Promise { const cluster = this._clusters.find((c) => c.id === id); if (!cluster) { throw Error(`Cannot find cluster ${id}`); } const newCluster = await this._scaleById(id); return newCluster; } /** * Dispose of the cluster manager. */ dispose(): void { if (this.isDisposed) { return; } this._poll.dispose(); super.dispose(); } /** * Handle an update request. */ protected onUpdateRequest(msg: Message): void { // Don't bother if the sidebar is not visible if (!this.isVisible) { return; } const root = createRoot(this._clusterListing.node); root.render( { return this._scaleById(id); }} startById={(id: string) => { return this._startById(id); }} stopById={(id: string) => { return this._stopById(id); }} setActiveById={this._setActiveById} injectClientCodeForCluster={this._injectClientCodeForCluster} />, ); } /** * Rerender after showing. */ protected onAfterShow(msg: Message): void { this.update(); } /** * Handle `after-attach` messages for the widget. */ protected onAfterAttach(msg: Message): void { super.onAfterAttach(msg); const node = this._clusterListing.node; node.addEventListener("p-dragenter", this); node.addEventListener("p-dragleave", this); node.addEventListener("p-dragover", this); node.addEventListener("mousedown", this); } /** * Handle `before-detach` messages for the widget. */ protected onBeforeDetach(msg: Message): void { const node = this._clusterListing.node; node.removeEventListener("p-dragenter", this); node.removeEventListener("p-dragleave", this); node.removeEventListener("p-dragover", this); node.removeEventListener("mousedown", this); document.removeEventListener("mouseup", this, true); document.removeEventListener("mousemove", this, true); } /** * Handle the DOM events for the directory listing. * * @param event - The DOM event sent to the widget. * * #### Notes * This method implements the DOM `EventListener` interface and is * called in response to events on the panel's DOM node. It should * not be called directly by user code. */ handleEvent(event: Event): void { switch (event.type) { case "mousedown": this._evtMouseDown(event as MouseEvent); break; case "mouseup": this._evtMouseUp(event as MouseEvent); break; case "mousemove": this._evtMouseMove(event as MouseEvent); break; default: break; } } /** * Handle `mousedown` events for the widget. */ private _evtMouseDown(event: MouseEvent): void { const { button, shiftKey } = event; // We only handle main or secondary button actions. if (!(button === 0 || button === 2)) { return; } // Shift right-click gives the browser default behavior. if (shiftKey && button === 2) { return; } // Find the target cluster. const clusterIndex = this._findCluster(event); if (clusterIndex === -1) { return; } // Prepare for a drag start this._dragData = { pressX: event.clientX, pressY: event.clientY, index: clusterIndex, }; // Enter possible drag mode document.addEventListener("mouseup", this, true); document.addEventListener("mousemove", this, true); event.preventDefault(); } /** * Handle the `'mouseup'` event on the document. */ private _evtMouseUp(event: MouseEvent): void { // Remove the event listeners we put on the document if (event.button !== 0 || !this._drag) { document.removeEventListener("mousemove", this, true); document.removeEventListener("mouseup", this, true); } event.preventDefault(); event.stopPropagation(); } /** * Handle the `'mousemove'` event for the widget. */ private _evtMouseMove(event: MouseEvent): void { const data = this._dragData; if (!data) { return; } // Check for a drag initialization. const dx = Math.abs(event.clientX - data.pressX); const dy = Math.abs(event.clientY - data.pressY); if (dx >= DRAG_THRESHOLD || dy >= DRAG_THRESHOLD) { event.preventDefault(); event.stopPropagation(); void this._startDrag(data.index, event.clientX, event.clientY); } } /** * Start a drag event. */ private async _startDrag( index: number, clientX: number, clientY: number, ): Promise { // Create the drag image. const model = this._clusters[index]; const listingItem = this._clusterListing.node.querySelector( `li.ipp-ClusterListingItem[data-cluster-id="${model.id}"]`, ) as HTMLElement; const dragImage = Private.createDragImage(listingItem); // Set up the drag event. this._drag = new Drag({ mimeData: new MimeData(), dragImage, supportedActions: "copy", proposedAction: "copy", source: this, }); // Add mimeData for plain text so that normal editors can // receive the data. const textData = this._getClientCodeForCluster(model); this._drag.mimeData.setData("text/plain", textData); // Add cell data for notebook drops. const cellData: nbformat.ICodeCell[] = [ { cell_type: "code", source: textData, outputs: [], execution_count: null, metadata: {}, }, ]; this._drag.mimeData.setData(JUPYTER_CELL_MIME, cellData); // Remove mousemove and mouseup listeners and start the drag. document.removeEventListener("mousemove", this, true); document.removeEventListener("mouseup", this, true); return this._drag.start(clientX, clientY).then((action) => { if (this.isDisposed) { return; } this._drag = null; this._dragData = null; }); } /** * Launch a new cluster on the server. */ private async _newCluster( clusterRequest: INewCluster, ): Promise { this._isReady = false; this._registry.notifyCommandChanged(CommandIDs.newCluster); // TODO: allow requesting a profile, options const response = await ServerConnection.makeRequest( `${this._serverSettings.baseUrl}${CLUSTER_PREFIX}`, { method: "POST", body: JSON.stringify(clusterRequest) }, this._serverSettings, ); if (response.status !== 200) { const err = await response.json(); void showErrorMessage("Cluster Create Error", err); this._isReady = true; this._registry.notifyCommandChanged(CommandIDs.newCluster); throw err; } const model = (await response.json()) as IClusterModel; await this._updateClusterList(); this._isReady = true; this._registry.notifyCommandChanged(CommandIDs.newCluster); return model; } /** * Refresh the list of clusters on the server. */ private async _updateClusterList(): Promise { const response = await ServerConnection.makeRequest( `${this._serverSettings.baseUrl}${CLUSTER_PREFIX}`, {}, this._serverSettings, ); if (response.status !== 200) { const msg = "Failed to list clusters: might the server extension not be installed/enabled?"; const err = new Error(msg); if (!this._serverErrorShown) { void showErrorMessage("IPP Extension Server Error", err); this._serverErrorShown = true; } throw err; } const data = (await response.json()) as IClusterModel[]; this._clusters = data; // Check to see if the active cluster still exits. // If it doesn't, or if there is no active cluster, // select the first one. const active = this._clusters.find( (c) => c.id === (this._activeCluster && this._activeCluster.id), ); if (!active) { const id = (this._clusters[0] && this._clusters[0].id) || ""; this._setActiveById(id); } this.update(); } /** * Start a cluster by its id. */ private async _startById(id: string): Promise { const response = await ServerConnection.makeRequest( `${this._serverSettings.baseUrl}${CLUSTER_PREFIX}/${id}`, { method: "POST" }, this._serverSettings, ); if (response.status > 299) { const err = await response.json(); void showErrorMessage("Failed to start cluster", err); throw err; } await this._updateClusterList(); } /** * Stop a cluster by its id. */ private async _stopById(id: string): Promise { const response = await ServerConnection.makeRequest( `${this._serverSettings.baseUrl}${CLUSTER_PREFIX}/${id}`, { method: "DELETE" }, this._serverSettings, ); if (response.status !== 204) { const err = await response.json(); void showErrorMessage("Failed to close cluster", err); throw err; } await this._updateClusterList(); } /** * Scale a cluster by its id. */ private async _scaleById(id: string): Promise { const cluster = this._clusters.find((c) => c.id === id); if (!cluster) { throw Error(`Failed to find cluster ${id} to scale`); } // TODO: scale not implemented // should add an engine set void showErrorMessage("Scale not implemented", ""); // const update = await showScalingDialog(cluster); const update = cluster; if (JSONExt.deepEqual(update, cluster)) { // If the user canceled, or the model is identical don't try to update. return Promise.resolve(cluster); } const response = await ServerConnection.makeRequest( `${this._serverSettings.baseUrl}${CLUSTER_PREFIX}/${id}`, { method: "PATCH", body: JSON.stringify(update), }, this._serverSettings, ); if (response.status !== 200) { const err = await response.json(); void showErrorMessage("Failed to scale cluster", err); throw err; } const model = (await response.json()) as IClusterModel; await this._updateClusterList(); return model; } private _findCluster(event: MouseEvent): number { const nodes = Array.from( this.node.querySelectorAll("li.ipp-ClusterListingItem"), ); return ArrayExt.findFirstIndex(nodes, (node) => { return ElementExt.hitTest(node, event.clientX, event.clientY); }); } private _drag: Drag | null; private _dragData: { pressX: number; pressY: number; index: number; } | null = null; private _clusterListing: Widget; private _clusters: IClusterModel[] = []; private _activeCluster: IClusterModel | undefined; private _setActiveById: (id: string) => void; private _injectClientCodeForCluster: (model: IClusterModel) => void; private _getClientCodeForCluster: (model: IClusterModel) => string; private _poll: Poll; private _serverSettings: ServerConnection.ISettings; private _activeClusterChanged = new Signal< this, IChangedArgs >(this); private _serverErrorShown = false; private _isReady = true; private _registry: CommandRegistry; } /** * A namespace for DasClusterManager statics. */ export namespace ClusterManager { /** * Options for the constructor. */ export interface IOptions { /** * Registry of all commands */ registry: CommandRegistry; /** * A callback to inject client connection cdoe. */ injectClientCodeForCluster: (model: IClusterModel) => void; /** * A callback to get client code for a cluster. */ getClientCodeForCluster: (model: IClusterModel) => string; } } /** * A React component for a launcher button listing. */ function ClusterListing(props: IClusterListingProps) { const listing = props.clusters.map((cluster) => { return ( props.scaleById(cluster.id)} start={() => props.startById(cluster.id)} stop={() => props.stopById(cluster.id)} setActive={() => props.setActiveById(cluster.id)} injectClientCode={() => props.injectClientCodeForCluster(cluster)} /> ); }); // Return the JSX component. return (
      {listing}
    ); } /** * Props for the cluster listing component. */ export interface IClusterListingProps { /** * A list of items to render. */ clusters: IClusterModel[]; /** * The id of the active cluster. */ activeClusterId: string; /** * A function for starting a cluster by ID. */ startById: (id: string) => Promise; /** * A function for stopping a cluster by ID. */ stopById: (id: string) => Promise; /** * Scale a cluster by id. */ scaleById: (id: string) => Promise; /** * A callback to set the active cluster by id. */ setActiveById: (id: string) => void; /** * A callback to inject client code for a cluster. */ injectClientCodeForCluster: (model: IClusterModel) => void; } /** * A TSX functional component for rendering a single running cluster. */ function ClusterListingItem(props: IClusterListingItemProps) { const { cluster, isActive, setActive, scale, start, stop, injectClientCode } = props; let itemClass = "ipp-ClusterListingItem"; itemClass = isActive ? `${itemClass} jp-mod-active` : itemClass; let cluster_state = "Stopped"; if (cluster.controller) { cluster_state = cluster.controller.state.state; if (cluster_state === "after") { cluster_state = "Stopped"; } } // stop action is 'delete' for already-stopped clusters const STOP = cluster_state === "Stopped" ? "DELETE" : "STOP"; return (
  • { setActive(); evt.stopPropagation(); }} >
    {cluster.id}
    State: {cluster_state}
    Number of engines: {cluster.engines.n || cluster.cluster.n || "auto"}
  • ); } /** * Props for the cluster listing component. */ export interface IClusterListingItemProps { /** * A cluster model to render. */ cluster: IClusterModel; /** * Whether the cluster is currently active. */ isActive: boolean; /** * A function for starting the cluster. */ start: () => Promise; /** * A function for scaling the cluster. */ scale: () => Promise; /** * A function for stopping the cluster. */ stop: () => Promise; /** * A callback function to set the active cluster. */ setActive: () => void; /** * A callback to inject client code into an editor. */ injectClientCode: () => void; } /** * An interface for a JSON-serializable representation of a cluster. */ export interface IClusterModel extends JSONObject { /** * A unique string ID for the cluster. */ id: string; /** * the cluster file for `Cluster.from_file` */ cluster_file: string; cluster: { /** * The number of engines (null = auto) */ n?: number; /** * The cluster id */ cluster_id: string; /** * The profile directory */ profile_dir: string; /** * The profile, abbreviated */ profle: string; /** * The class import string */ class: string; }; controller?: { class: string; state?: { state: string; }; }; engines: { n: number; class: string; sets: { [key: string]: { n: number; state: string; }; }; }; } /** * A namespace for module-private functionality. */ namespace Private { /** * Create a drag image for an HTML node. */ export function createDragImage(node: HTMLElement): HTMLElement { const image = node.cloneNode(true) as HTMLElement; image.classList.add("ipp-ClusterListingItem-drag"); return image; } } ipython-ipyparallel-14e3c43/lab/src/commands.ts000066400000000000000000000012451520071063500215470ustar00rootroot00000000000000export namespace CommandIDs { /** * Inject client code into the active editor. */ export const injectClientCode = "ipyparallel:inject-client-code"; /** * Launch a new cluster. */ export const newCluster = "ipyparallel:new-cluster"; /** * Launch a new cluster. */ export const startCluster = "ipyparallel:start-cluster"; /** * Shutdown a cluster. */ export const stopCluster = "ipyparallel:stop-cluster"; /** * Scale a cluster. */ export const scaleCluster = "ipyparallel:scale-cluster"; /** * Toggle the auto-starting of clients. */ export const toggleAutoStartClient = "ipyparallel:toggle-auto-start-client"; } ipython-ipyparallel-14e3c43/lab/src/dialog.tsx000066400000000000000000000111151520071063500213720ustar00rootroot00000000000000import { Dialog, showDialog } from "@jupyterlab/apputils"; import * as React from "react"; export interface INewCluster { /** * The cluster id */ cluster_id?: string; /** * The profile */ profile?: string; /** * The number of engines */ n?: number; } /** * A namespace for ClusterDialog statics. */ namespace NewCluster { /** * The props for the NewClusterDialog component. */ export interface IProps { /** * The initial cluster model shown in the Dialog. */ initialModel: INewCluster; /** * A callback that allows the component to write state to an * external object. */ stateEscapeHatch: (model: INewCluster) => void; } /** * The state for the ClusterDialog component. */ export interface IState { /** * The proposed cluster model shown in the Dialog. */ model: INewCluster; } } /** * A component for an HTML form that allows the user * to select Dialog parameters. */ export class NewCluster extends React.Component< NewCluster.IProps, NewCluster.IState > { /** * Construct a new NewCluster component. */ constructor(props: NewCluster.IProps) { super(props); const model: INewCluster = props.initialModel; this.state = { model }; } /** * When the component updates we take the opportunity to write * the state of the cluster to an external object so this can * be sent as the result of the dialog. */ componentDidUpdate(): void { const model: INewCluster = { ...this.state.model }; this.props.stateEscapeHatch(model); } /** * React to the number of workers changing. */ onScaleChanged(event: React.ChangeEvent): void { this.setState({ model: { ...this.state.model, n: parseInt((event.target as HTMLInputElement).value || null, null), }, }); } /** * React to the number of workers changing. */ onProfileChanged(event: React.ChangeEvent): void { this.setState({ model: { ...this.state.model, profile: (event.target as HTMLInputElement).value, }, }); } /** * React to the number of workers changing. */ onClusterIdChanged(event: React.ChangeEvent): void { this.setState({ model: { ...this.state.model, cluster_id: (event.target as HTMLInputElement).value, }, }); } /** * Render the component.. */ render() { const model = this.state.model; // const disabledClass = "ipp-mod-disabled"; return (
    Profile { this.onProfileChanged(evt); }} />
    Cluster ID { this.onClusterIdChanged(evt); }} />
    Engines { this.onScaleChanged(evt); }} />
    ); } } /** * Show a dialog for Dialog a cluster model. * * @param model: the initial model. * * @returns a promise that resolves with the user-selected Dialogs for the * cluster model. If they pressed the cancel button, it resolves with * the original model. */ export function newClusterDialog(model: INewCluster): Promise { let updatedModel = { ...model }; const escapeHatch = (update: INewCluster) => { updatedModel = update; }; return showDialog({ title: `New Cluster`, body: , buttons: [Dialog.cancelButton(), Dialog.okButton({ label: "CREATE" })], }).then((result) => { if (result.button.accept) { return updatedModel; } else { return null; } }); } ipython-ipyparallel-14e3c43/lab/src/global.d.ts000066400000000000000000000000651520071063500214270ustar00rootroot00000000000000declare module "*.css" {} declare module "*.svg" {} ipython-ipyparallel-14e3c43/lab/src/index.ts000066400000000000000000000364661520071063500210720ustar00rootroot00000000000000// IPython Parallel Lab extension derived from dask-labextension@f6141455d770ed7de564fc4aa403b9964cd4e617 // License: BSD-3-Clause import { PageConfig } from "@jupyterlab/coreutils"; import { TabPanel } from "@lumino/widgets"; import { ILabShell, JupyterFrontEnd, JupyterFrontEndPlugin, } from "@jupyterlab/application"; import { ISessionContext, IWidgetTracker } from "@jupyterlab/apputils"; import { CodeEditor } from "@jupyterlab/codeeditor"; import { ConsolePanel, IConsoleTracker } from "@jupyterlab/console"; import { ISettingRegistry } from "@jupyterlab/settingregistry"; import { IStateDB } from "@jupyterlab/statedb"; import { INotebookTracker, NotebookActions, NotebookPanel, } from "@jupyterlab/notebook"; import { Kernel, KernelMessage, Session } from "@jupyterlab/services"; import { LabIcon } from "@jupyterlab/ui-components"; import { Signal } from "@lumino/signaling"; import { IClusterModel, ClusterManager } from "./clusters"; import { Sidebar } from "./sidebar"; import "../style/index.css"; import logoSvgStr from "../style/logo.svg"; import { CommandIDs } from "./commands"; const PLUGIN_ID = "ipyparallel-labextension:plugin"; const CATEGORY = "IPython Parallel"; /** * The IPython Parallel extension. */ const plugin: JupyterFrontEndPlugin = { activate, id: PLUGIN_ID, requires: [IConsoleTracker, INotebookTracker, ISettingRegistry, IStateDB], description: "Manage IPython Parallel clusters from the JupyterLab sidebar.", optional: [ILabShell], autoStart: true, }; /** * Export the plugin as default. */ export default plugin; /** * Activate the cluster launcher plugin. */ async function activate( app: JupyterFrontEnd, consoleTracker: IConsoleTracker, notebookTracker: INotebookTracker, settingRegistry: ISettingRegistry, state: IStateDB, labShell?: ILabShell | null, ): Promise { const id = "ipp-cluster-launcher"; const isLab = !!labShell; const isRetroTree = PageConfig.getOption("retroPage") === "tree"; const clientCodeInjector = async (model: IClusterModel) => { const editor = await Private.getCurrentEditor( app, notebookTracker, consoleTracker, ); if (!editor) { return; } Private.injectClientCode(model, editor); }; // Create the sidebar panel. const sidebar = new Sidebar({ clientCodeInjector, clientCodeGetter: Private.getClientCode, registry: app.commands, }); sidebar.id = id; sidebar.title.icon = new LabIcon({ name: "ipyparallel:logo", svgstr: logoSvgStr, }); // sidebar.title.iconClass = 'ipp-Logo jp-SideBar-tabIcon'; if (isLab) { labShell.add(sidebar, "left", { rank: 200 }); sidebar.title.caption = CATEGORY; } else if (isRetroTree) { const tabPanel = app.shell.currentWidget as TabPanel; tabPanel.addWidget(sidebar); tabPanel.tabBar.addTab(sidebar.title); sidebar.title.label = CATEGORY; } sidebar.clusterManager.activeClusterChanged.connect(async () => { const active = sidebar.clusterManager.activeCluster; return state.save(id, { cluster: active ? active.id : "", }); }); // A function to create a new client for a session. const createClientForSession = async ( session: Session.ISessionConnection | null, ) => { if (!session) { return; } const cluster = sidebar.clusterManager.activeCluster; if (!cluster || !(await Private.shouldUseKernel(session.kernel))) { return; } return Private.createClientForKernel(cluster, session.kernel!); }; type SessionOwner = NotebookPanel | ConsolePanel; // An array of the trackers to check for active sessions. const trackers: IWidgetTracker[] = [ notebookTracker, consoleTracker, ]; // A function to recreate a client on reconnect. const injectOnSessionStatusChanged = async ( sessionContext: ISessionContext, ) => { if ( sessionContext.session && sessionContext.session.kernel && sessionContext.session.kernel.status === "restarting" ) { return createClientForSession(sessionContext.session); } }; // A function to inject a client when a new session owner is added. const injectOnWidgetAdded = ( _: IWidgetTracker, widget: SessionOwner, ) => { widget.sessionContext.statusChanged.connect(injectOnSessionStatusChanged); }; // A function to inject a client when the active cluster changes. const injectOnClusterChanged = () => { trackers.forEach((tracker) => { tracker.forEach(async (widget) => { const session = widget.sessionContext.session; if (session && (await Private.shouldUseKernel(session.kernel))) { return createClientForSession(session); } }); }); }; // Whether the cluster clients should aggressively inject themselves // into the current session. const autoStartClient: boolean = false; // Update the existing trackers and signals in light of a change to the // settings system. In particular, this reacts to a change in the setting // for auto-starting cluster client. const updateTrackers = () => { // Clear any existing signals related to the auto-starting. Signal.clearData(injectOnWidgetAdded); Signal.clearData(injectOnSessionStatusChanged); Signal.clearData(injectOnClusterChanged); if (autoStartClient) { // When a new console or notebook is created, inject // a new client into it. trackers.forEach((tracker) => { tracker.widgetAdded.connect(injectOnWidgetAdded); }); // When the status of an existing notebook changes, reinject the client. trackers.forEach((tracker) => { tracker.forEach(async (widget) => { await createClientForSession(widget.sessionContext.session); widget.sessionContext.statusChanged.connect( injectOnSessionStatusChanged, ); }); }); // When the active cluster changes, reinject the client. sidebar.clusterManager.activeClusterChanged.connect( injectOnClusterChanged, ); } }; // Fetch the initial state of the settings. void Promise.all([settingRegistry.load(PLUGIN_ID), state.fetch(id)]).then( async (res) => { const settings = res[0]; if (!settings) { console.warn("Unable to retrieve ipp-labextension settings"); return; } const state = res[1] as { cluster?: string } | undefined; const cluster = state ? state.cluster : ""; const onSettingsChanged = () => { // Determine whether to use the auto-starting client. // autoStartClient = settings.get("autoStartClient").composite as boolean; updateTrackers(); }; onSettingsChanged(); // React to a change in the settings. settings.changed.connect(onSettingsChanged); // If an active cluster is in the state, reset it. if (cluster) { await sidebar.clusterManager.refresh(); sidebar.clusterManager.setActiveCluster(cluster); } }, ); // Add a command to inject client connection code for a given cluster model. // This looks for a cluster model in the application context menu, // and looks for an editor among the currently active notebooks and consoles. // If either is not found, it bails. app.commands.addCommand(CommandIDs.injectClientCode, { label: "Inject IPython Client Connection Code", describedBy: {}, execute: async () => { const cluster = Private.clusterFromClick(app, sidebar.clusterManager); if (!cluster) { return; } return await clientCodeInjector(cluster); }, }); // Add a command to launch a new cluster. app.commands.addCommand(CommandIDs.newCluster, { label: (args) => (args["isPalette"] ? "Create New Cluster" : "NEW"), describedBy: {}, execute: () => sidebar.clusterManager.create(), iconClass: (args) => args["isPalette"] ? "" : "jp-AddIcon jp-Icon jp-Icon-16", isEnabled: () => sidebar.clusterManager.isReady, caption: () => { if (sidebar.clusterManager.isReady) { return "Start New Cluster"; } return "Cluster starting..."; }, }); // Add a command to launch a new cluster. app.commands.addCommand(CommandIDs.startCluster, { label: "Start Cluster", describedBy: {}, execute: () => { const cluster = Private.clusterFromClick(app, sidebar.clusterManager); if (!cluster) { return; } return sidebar.clusterManager.start(cluster.id); }, }); // Add a command to stop a cluster. app.commands.addCommand(CommandIDs.stopCluster, { label: "Shutdown Cluster", describedBy: {}, execute: () => { const cluster = Private.clusterFromClick(app, sidebar.clusterManager); if (!cluster) { return; } return sidebar.clusterManager.stop(cluster.id); }, }); // Add a command to resize a cluster. app.commands.addCommand(CommandIDs.scaleCluster, { label: "Scale Cluster…", describedBy: {}, execute: () => { const cluster = Private.clusterFromClick(app, sidebar.clusterManager); if (!cluster) { return; } return sidebar.clusterManager.scale(cluster.id); }, }); // Add a command to toggle the auto-starting client code. // app.commands.addCommand(CommandIDs.toggleAutoStartClient, { // label: "Auto-Start IPython Parallel", // isToggled: () => autoStartClient, // execute: async () => { // const value = !autoStartClient; // const key = "autoStartClient"; // return settingRegistry // .set(PLUGIN_ID, key, value) // .catch((reason: Error) => { // console.error( // `Failed to set ${PLUGIN_ID}:${key} - ${reason.message}` // ); // }); // }, // }); // // Add some commands to the menu and command palette. // mainMenu.settingsMenu.addGroup([ // { command: CommandIDs.toggleAutoStartClient }, // ]); // [CommandIDs.newCluster, CommandIDs.toggleAutoStartClient].forEach( // (command) => { // commandPalette.addItem({ // category: "IPython Parallel", // command, // args: { isPalette: true }, // }); // } // ); // Add a context menu items. app.contextMenu.addItem({ command: CommandIDs.injectClientCode, selector: ".ipp-ClusterListingItem", rank: 10, }); app.contextMenu.addItem({ command: CommandIDs.stopCluster, selector: ".ipp-ClusterListingItem", rank: 3, }); app.contextMenu.addItem({ command: CommandIDs.scaleCluster, selector: ".ipp-ClusterListingItem", rank: 2, }); app.contextMenu.addItem({ command: CommandIDs.startCluster, selector: ".ipp-ClusterListing-list", rank: 1, }); } namespace Private { /** * Whether a kernel should be used. Only evaluates to true * if it is valid and in python. */ export async function shouldUseKernel( kernel: Kernel.IKernelConnection | null | undefined, ): Promise { if (!kernel) { return false; } const spec = await kernel.spec; return !!spec && spec.language.toLowerCase().indexOf("python") !== -1; } /** * Connect a kernel to a cluster by creating a new Client. */ export async function createClientForKernel( model: IClusterModel, kernel: Kernel.IKernelConnection, ): Promise { const code = getClientCode(model); const content: KernelMessage.IExecuteRequestMsg["content"] = { store_history: false, code, }; return new Promise((resolve, _) => { const future = kernel.requestExecute(content); future.onIOPub = (msg) => { if (msg.header.msg_type !== "display_data") { return; } resolve(void 0); }; }); } /** * Insert code to connect to a given cluster. */ export function injectClientCode( cluster: IClusterModel, editor: CodeEditor.IEditor, ): void { const cursor = editor.getCursorPosition(); const offset = editor.getOffsetAt(cursor); const code = getClientCode(cluster); editor.model.sharedModel.updateSource(offset, offset, code); } /** * Get code to connect to a given cluster. */ export function getClientCode(cluster: IClusterModel): string { return `import ipyparallel as ipp cluster = ipp.Cluster.from_file("${cluster.cluster_file}") rc = cluster.connect_client_sync() rc`; } /** * Get the currently focused kernel in the application, * checking both notebooks and consoles. */ export function getCurrentKernel( shell: ILabShell, notebookTracker: INotebookTracker, consoleTracker: IConsoleTracker, ): Kernel.IKernelConnection | null | undefined { // Get a handle on the most relevant kernel, // whether it is attached to a notebook or a console. const current = shell.currentWidget; let kernel: Kernel.IKernelConnection | null | undefined; if (current && notebookTracker.has(current)) { kernel = (current as NotebookPanel).sessionContext.session?.kernel; } else if (current && consoleTracker.has(current)) { kernel = (current as ConsolePanel).sessionContext.session?.kernel; } else if (notebookTracker.currentWidget) { const current = notebookTracker.currentWidget; kernel = current.sessionContext.session?.kernel; } else if (consoleTracker.currentWidget) { const current = consoleTracker.currentWidget; kernel = current.sessionContext.session?.kernel; } return kernel; } /** * Get the currently focused editor in the application, * checking both notebooks and consoles. * In the case of a notebook, it creates a new cell above the currently * active cell and then returns that. */ export async function getCurrentEditor( app: JupyterFrontEnd, notebookTracker: INotebookTracker, consoleTracker: IConsoleTracker, ): Promise { // Get a handle on the most relevant kernel, // whether it is attached to a notebook or a console. const current = app.shell.currentWidget; let editor: CodeEditor.IEditor | null | undefined; if (current && notebookTracker.has(current)) { NotebookActions.insertAbove((current as NotebookPanel).content); const cell = (current as NotebookPanel).content.activeCell; await cell.ready; editor = cell && cell.editor; } else if (current && consoleTracker.has(current)) { const cell = (current as ConsolePanel).console.promptCell; await cell.ready; editor = cell && cell.editor; } else if (notebookTracker.currentWidget) { const current = notebookTracker.currentWidget; NotebookActions.insertAbove(current.content); const cell = current.content.activeCell; await cell.ready; editor = cell && cell.editor; } else if (consoleTracker.currentWidget) { const current = consoleTracker.currentWidget; const cell = current.console.promptCell; await cell.ready; editor = cell && cell.editor; } return editor; } /** * Get a cluster model based on the application context menu click node. */ export function clusterFromClick( app: JupyterFrontEnd, manager: ClusterManager, ): IClusterModel | undefined { const test = (node: HTMLElement) => !!node.dataset.clusterId; const node = app.contextMenuHitTest(test); if (!node) { return undefined; } const id = node.dataset.clusterId; return manager.clusters.find((cluster) => cluster.id === id); } } ipython-ipyparallel-14e3c43/lab/src/sidebar.ts000066400000000000000000000027561520071063500213670ustar00rootroot00000000000000import { Widget, PanelLayout } from "@lumino/widgets"; import { CommandRegistry } from "@lumino/commands"; import { ClusterManager, IClusterModel } from "./clusters"; /** * A widget for hosting IPP cluster widgets */ export class Sidebar extends Widget { /** * Create a new IPP sidebar. */ constructor(options: Sidebar.IOptions) { super(); this.addClass("ipp-Sidebar"); const layout = (this.layout = new PanelLayout()); const injectClientCodeForCluster = options.clientCodeInjector; const getClientCodeForCluster = options.clientCodeGetter; // Add the cluster manager component. this._clusters = new ClusterManager({ registry: options.registry, injectClientCodeForCluster, getClientCodeForCluster, }); layout.addWidget(this._clusters); } /** * Get the cluster manager associated with the sidebar. */ get clusterManager(): ClusterManager { return this._clusters; } private _clusters: ClusterManager; } /** * A namespace for Sidebar statics. */ export namespace Sidebar { /** * Options for the constructor. */ export interface IOptions { /** * Registry of all commands */ registry: CommandRegistry; /** * A function that injects client-connection code for a given cluster. */ clientCodeInjector: (model: IClusterModel) => void; /** * A function that gets client-connection code for a given cluster. */ clientCodeGetter: (model: IClusterModel) => string; } } ipython-ipyparallel-14e3c43/lab/src/svg.d.ts000066400000000000000000000001271520071063500207650ustar00rootroot00000000000000// svg.d.ts declare module "*.svg" { const value: string; export default value; } ipython-ipyparallel-14e3c43/lab/style/000077500000000000000000000000001520071063500177455ustar00rootroot00000000000000ipython-ipyparallel-14e3c43/lab/style/code-dark.svg000066400000000000000000000003661520071063500223240ustar00rootroot00000000000000 ipython-ipyparallel-14e3c43/lab/style/code-light.svg000066400000000000000000000003661520071063500225120ustar00rootroot00000000000000 ipython-ipyparallel-14e3c43/lab/style/index.css000066400000000000000000000071201520071063500215660ustar00rootroot00000000000000:root { --ipp-launch-button-height: 24px; } /** * Rules related to the overall sidebar panel. */ .ipp-Sidebar { background: var(--jp-layout-color1); color: var(--jp-ui-font-color1); font-size: var(--jp-ui-font-size1); overflow: auto; } /** * Rules related to the cluster manager. */ .ipp-ClusterManager .jp-Toolbar { align-items: center; } .ipp-ClusterManager .jp-Toolbar .ipp-ClusterManager-label { flex: 0 0 auto; font-weight: 600; text-transform: uppercase; letter-spacing: 1px; font-size: var(--jp-ui-font-size0); padding: 8px 8px 8px 12px; margin: 0px; } .ipp-ClusterManager button.jp-Button > span { display: flex; flex-direction: row; align-items: center; } .ipp-ClusterListing ul.ipp-ClusterListing-list { list-style-type: none; padding: 0; margin: 0; } .ipp-ClusterListingItem { display: inline-block; list-style-type: none; padding: 8px; width: 100%; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; cursor: grab; } .ipp-ClusterListingItem-drag { opacity: 0.7; color: var(--jp-ui-font-color1); cursor: grabbing; max-width: 260px; transform: translateX(-50%) translateY(-50%); } .ipp-ClusterListingItem-title { margin: 0px; font-size: var(--jp-ui-font-size2); } .ipp-ClusterListingItem-link a { text-decoration: none; color: var(--jp-content-link-color); } .ipp-ClusterListingItem-link a:hover { text-decoration: underline; } .ipp-ClusterListingItem-link a:visited { color: var(--jp-content-link-color); } .ipp-ClusterListingItem:hover { background: var(--jp-layout-color2); } .ipp-ClusterListingItem.jp-mod-active { color: white; background: var(--jp-brand-color0); } .ipp-ClusterListingItem.jp-mod-active a, .ipp-ClusterListingItem.jp-mod-active a:visited { color: white; } .ipp-ClusterListingItem button.jp-mod-styled { background-color: transparent; } .ipp-ClusterListingItem button.jp-mod-styled:hover { background-color: var(--jp-layout-color3); } .ipp-ClusterListingItem.jp-mod-active button.jp-mod-styled:hover { background-color: var(--jp-brand-color1); } .ipp-ClusterListingItem-button-panel { display: flex; align-content: center; } button.ipp-ClusterListingItem-stop { color: var(--jp-warn-color1); font-weight: 600; } button.ipp-ClusterListingItem-scale { color: var(--jp-accent-color1); font-weight: 600; } button.ipp-ClusterListingItem-start { color: var(--jp-accent-color1); font-weight: 600; } button.ipp-hidden { display: none; } .ipp-ClusterListingItem button.ipp-ClusterListingItem-code.jp-mod-styled { margin: 0 4px 0 4px; background-repeat: no-repeat; background-position: center; } /** * Rules for the scaling dialog. */ .ipp-DialogHeader { font-size: var(--jp-ui-font-size2); } .ipp-DialogSection { margin-left: 24px; } .ipp-DialogSection-item { display: flex; align-items: center; justify-content: space-around; margin: 12px 0 12px 0; } .ipp-DialogHeader input[type="checkbox"] { position: relative; top: 4px; left: 4px; margin: 0 0 0 8px; } .ipp-DialogSection input[type="number"] { width: 72px; } .ipp-DialogSection-label.ipp-mod-disabled { color: var(--jp-ui-font-color3); } .ipp-DialogSection input[type="number"]:disabled { color: var(--jp-ui-font-color3); } /** * Rules for the logos. */ .ipp-SearchIcon { background-image: var(--jp-icon-search); } [data-jp-theme-light="true"] .ipp-CodeIcon { background-image: url(code-light.svg); } [data-jp-theme-light="false"] .ipp-CodeIcon { background-image: url(code-dark.svg); } .ipp-ClusterListingItem.jp-mod-active .ipp-CodeIcon { background-image: url(code-dark.svg); } ipython-ipyparallel-14e3c43/lab/style/logo.svg000066400000000000000000000016031520071063500214260ustar00rootroot00000000000000 ipython-ipyparallel-14e3c43/lab/webpack.config.js000066400000000000000000000004341520071063500220240ustar00rootroot00000000000000const crypto = require("crypto"); // Workaround for loaders using "md4" by default, which is not supported in FIPS-compliant OpenSSL const cryptoOrigCreateHash = crypto.createHash; crypto.createHash = (algorithm) => cryptoOrigCreateHash(algorithm == "md4" ? "sha256" : algorithm); ipython-ipyparallel-14e3c43/package.json000066400000000000000000000067511520071063500203460ustar00rootroot00000000000000{ "name": "ipyparallel-labextension", "version": "9.2.0", "private": true, "description": "A JupyterLab extension for IPython Parallel.", "keywords": [ "ipython", "jupyter", "jupyterlab", "jupyterlab-extension" ], "homepage": "https://github.com/ipython/ipyparallel", "bugs": { "url": "https://github.com/ipython/ipyparallel/issues" }, "repository": { "type": "git", "url": "https://github.com/ipython/ipyparallel" }, "license": "BSD-3-Clause", "author": "Min Ragan-Kelley", "files": [ "lab/lib/**/*.{d.ts,eot,gif,html,jpg,js,js.map,json,png,svg,woff2,ttf}", "lab/schema/*.json", "lab/style/**/*.{css,eot,gif,html,jpg,json,png,svg,woff2,ttf}" ], "main": "lab/lib/index.js", "types": "lab/lib/index.d.ts", "scripts": { "build": "jlpm run build:lib && jlpm run build:labextension:dev", "build:labextension": "jupyter labextension build .", "build:labextension:dev": "jupyter labextension build --development True .", "build:lib": "tsc", "build:prod": "jlpm run build:lib && jlpm run build:labextension", "clean": "jlpm run clean:lib", "clean:all": "jlpm run clean:lib && jlpm run clean:labextension", "clean:labextension": "rimraf ipyparallel/labextension", "clean:lib": "rimraf lab/lib tsconfig.tsbuildinfo", "eslint": "eslint . --ext .ts,.tsx --fix", "eslint:check": "eslint . --ext .ts,.tsx", "install:extension": "jupyter labextension develop --overwrite .", "lint": "prettier --check '**/*{.ts,.tsx,.js,.jsx,.css,.json,.md}' && jlpm eslint:check", "prettier": "prettier --write '**/*{.ts,.tsx,.js,.jsx,.css,.json,.md}'", "prettier:check": "prettier --list-different '**/*{.ts,.tsx,.js,.jsx,.css,.json,.md}'", "test": "mocha", "watch": "run-p watch:src watch:labextension", "watch:labextension": "jupyter labextension watch .", "watch:src": "tsc -w" }, "dependencies": { "@jupyterlab/application": "^4.5.7", "@jupyterlab/apputils": "^4.6.7", "@jupyterlab/codeeditor": "^4.5.7", "@jupyterlab/console": "^4.5.7", "@jupyterlab/coreutils": "^6.5.7", "@jupyterlab/nbformat": "^4.5.7", "@jupyterlab/notebook": "^4.5.7", "@jupyterlab/services": "^7.5.7", "@jupyterlab/settingregistry": "^4.5.7", "@jupyterlab/statedb": "^4.5.7", "@jupyterlab/ui-components": "^4.5.7", "@lumino/algorithm": "^2.0.4", "@lumino/commands": "^2.3.3", "@lumino/coreutils": "^2.2.2", "@lumino/domutils": "^2.0.4", "@lumino/dragdrop": "^2.1.8", "@lumino/messaging": "^2.0.4", "@lumino/polling": "^2.1.5", "@lumino/signaling": "^2.1.5", "@lumino/widgets": "^2.7.5", "react": "^18.2.0", "react-dom": "^18.2.0" }, "devDependencies": { "@eslint/js": "^9.0.0", "@jupyter/eslint-plugin": "^1.0.0", "@jupyterlab/builder": "^4.5.7", "@types/react": "^18.0.26", "@types/react-dom": "~18.3.7", "@typescript-eslint/eslint-plugin": "^8.59.2", "@typescript-eslint/parser": "^8.59.2", "eslint": "^9.7", "eslint-config-prettier": "^9", "eslint-plugin-prettier": "^5.5.5", "eslint-plugin-react": "^7.37.5", "jsonc-eslint-parser": "^3.1.0", "npm-run-all2": "^8.0.4", "prettier": "^3.8.3", "rimraf": "^6.1.3", "typescript": "~6.0.3", "typescript-eslint": "^8.59.3" }, "resolutions": { "@types/react": "^18.0.26" }, "jupyterlab": { "extension": true, "schemaDir": "lab/schema", "webpackConfig": "lab/webpack.config.js", "outputDir": "ipyparallel/labextension" } } ipython-ipyparallel-14e3c43/pyproject.toml000066400000000000000000000142141520071063500207650ustar00rootroot00000000000000[build-system] requires = [ "jupyterlab==4.*", "hatchling>=0.25", ] build-backend = "hatchling.build" [project] name = "ipyparallel" version = "9.2.0" authors = [{name = "IPython Development Team", email = "ipython-dev@python.org"}] license = {file = "COPYING.md"} readme = "README.md" description = "Interactive Parallel Computing with IPython" keywords = [ "Interactive", "Interpreter", "Shell", "Parallel", ] classifiers = [ "Framework :: Jupyter", "Framework :: Jupyter :: JupyterLab", "Framework :: Jupyter :: JupyterLab :: 4", "Framework :: Jupyter :: JupyterLab :: Extensions", "Framework :: Jupyter :: JupyterLab :: Extensions :: Prebuilt", "Intended Audience :: Developers", "Intended Audience :: System Administrators", "Intended Audience :: Science/Research", "License :: OSI Approved :: BSD License", "Programming Language :: Python", ] urls = {Homepage = "https://ipython.org"} requires-python = ">=3.10" dependencies = [ "decorator", "pyzmq>=25", "traitlets>=5", "ipython>=5", "jupyter_client>=7", "ipykernel>=6.9.1", "tornado>=6.1", "psutil", "python-dateutil>=2.1", "tqdm", ] [project.entry-points."ipyparallel.controller_launchers"] batch = "ipyparallel.cluster.launcher:BatchControllerLauncher" htcondor = "ipyparallel.cluster.launcher:HTCondorControllerLauncher" local = "ipyparallel.cluster.launcher:LocalControllerLauncher" lsf = "ipyparallel.cluster.launcher:LSFControllerLauncher" mpi = "ipyparallel.cluster.launcher:MPIControllerLauncher" pbs = "ipyparallel.cluster.launcher:PBSControllerLauncher" sge = "ipyparallel.cluster.launcher:SGEControllerLauncher" ssh = "ipyparallel.cluster.launcher:SSHControllerLauncher" slurm = "ipyparallel.cluster.launcher:SlurmControllerLauncher" winhpc = "ipyparallel.cluster.launcher:WindowsHPCControllerLauncher" [project.entry-points."ipyparallel.engine_launchers"] batch = "ipyparallel.cluster.launcher:BatchEngineSetLauncher" htcondor = "ipyparallel.cluster.launcher:HTCondorEngineSetLauncher" local = "ipyparallel.cluster.launcher:LocalEngineSetLauncher" lsf = "ipyparallel.cluster.launcher:LSFEngineSetLauncher" mpi = "ipyparallel.cluster.launcher:MPIEngineSetLauncher" pbs = "ipyparallel.cluster.launcher:PBSEngineSetLauncher" sge = "ipyparallel.cluster.launcher:SGEEngineSetLauncher" slurm = "ipyparallel.cluster.launcher:SlurmEngineSetLauncher" ssh = "ipyparallel.cluster.launcher:SSHEngineSetLauncher" sshproxy = "ipyparallel.cluster.launcher:SSHProxyEngineSetLauncher" winhpc = "ipyparallel.cluster.launcher:WindowsHPCEngineSetLauncher" [project.optional-dependencies] nbext = ["notebook", "jupyter_server"] serverextension = ["jupyter_server"] labextension = ["jupyter_server", "jupyterlab>=3"] retroextension = ["jupyter_server", "retrolab"] benchmark = ["asv"] test = [ "pytest", "pytest-cov", "pytest-asyncio", "ipython[test]", "testpath", ] [project.scripts] ipcluster = "ipyparallel.cluster.app:main" ipcontroller = "ipyparallel.controller.app:main" ipengine = "ipyparallel.engine.app:main" # Used to call hatch_build.py [tool.hatch.build.hooks.custom] [tool.hatch.build] artifacts = [ "ipyparallel/labextension/**/*.*" ] [tool.hatch.build.targets.wheel.shared-data] "jupyter-config" = "etc/jupyter" "ipyparallel/nbextension/static" = "share/jupyter/nbextensions/ipyparallel" "ipyparallel/labextension" = "share/jupyter/labextensions/ipyparallel-labextension" [tool.black] skip-string-normalization = true python_cell_magics = ["px"] [tool.isort] profile = "black" [tool.pytest.ini_options] addopts = "-raXs --durations 10 --color=yes" asyncio_mode = "auto" testpaths = [ "ipyparallel/tests" ] filterwarnings = [ "error:::ipy*", "error:::jupyter*", "ignore:zmq.eventloop.ioloop:DeprecationWarning:jupyter*", "ignore:unclosed event loop:ResourceWarning", "ignore:unclosed socket :ResourceWarning", # from older versions of ipykernel "ignore:the imp module is:DeprecationWarning", "ignore:The distutils package is:DeprecationWarning", # ip lookup failure for hostname, e.g mac CI "ignore:IPython could not determine IPs:RuntimeWarning", # new behavior in Jupyter Core 5.0+ "module:Jupyter is migrating its paths to use standard platformdirs:DeprecationWarning", ] [tool.nbqa.process_cells] # handle %px cell magics # it's still going to get confused about which imports are local "ruff format" = ["px"] "ruff check" = ["px"] [tool.ruff] line-length = 88 [tool.ruff.format] quote-style = "preserve" [tool.ruff.lint] ignore = [ "F841", # unused variable "E741", # ambiguous names "E743", # ambiguous names ] select = [ "E7", # comparisons "E9", # syntax "I", # isort "UP", # pyupgrade "F", # flake8 ] [tool.ruff.lint.per-file-ignores] "**/tests/**" = ["F841", "E741", "F401"] "**/__init__.py" = ["I", "F4"] # ruff doesn't handle namespace issues with cell magics very well # nbqa will handle these "**/*.ipynb" = ["F4", "F8"] # for nbqa, these should be *nbqa_ipynb.py # after https://github.com/nbQA-dev/nbQA/pull/870 "docs/source/examples/**" = [ "F704", # top-level await is valid in IPython ] [tool.tbump] # Uncomment this if your project is hosted on GitHub: github_url = "https://github.com/jupyterhub/jupyterhub" [tool.tbump.version] current = "9.2.0" # pep440 regex regex = ''' (?P\d+) \. (?P\d+) \. (?P\d+) (?P
    ((a|b|rc)\d+))?
      (\.
        (?Pdev\d*)
      )?
      '''
    
    [tool.tbump.git]
    message_template = "Bump to {new_version}"
    tag_template = "{new_version}"
    
    # For each file to patch, add a [[tool.tbump.file]] config
    # section containing the path of the file, relative to the
    # pyproject.toml location.
    
    [[tool.tbump.file]]
    src = "ipyparallel/_version.py"
    search = '__version__ = "{current_version}"'
    
    [[tool.tbump.file]]
    src = "pyproject.toml"
    search = 'version = "{current_version}"'
    
    [[tool.tbump.file]]
    src = "package.json"
    search = '"version": "{current_version}"'
    version_template = "{major}.{minor}.{patch}"
    ipython-ipyparallel-14e3c43/readthedocs.yml000066400000000000000000000003461520071063500210620ustar00rootroot00000000000000version: 2
    
    build:
      os: ubuntu-22.04
      tools:
        python: "3.10"
        nodejs: "18"
    
    sphinx:
      configuration: docs/source/conf.py
    
    python:
      install:
        # install ipp itself
        - path: .
        - requirements: docs/requirements.txt
    ipython-ipyparallel-14e3c43/tsconfig.eslint.json000066400000000000000000000001331520071063500220500ustar00rootroot00000000000000{
      "extends": "./tsconfig",
      "include": [".eslintrc.js", "*", "lab/src/*", "lab/*.js"]
    }
    ipython-ipyparallel-14e3c43/tsconfig.json000066400000000000000000000013031520071063500205530ustar00rootroot00000000000000{
      "compilerOptions": {
        "allowSyntheticDefaultImports": true,
        "composite": true,
        "declaration": true,
        "esModuleInterop": true,
        "incremental": true,
        "lib": [
          "DOM",
          "DOM.Iterable",
          "ES2018",
          "ES2020.BigInt",
          "ES2020.Intl",
          "ES2020.String"
        ],
        "jsx": "react",
        "module": "esnext",
        "moduleResolution": "bundler",
        "noEmitOnError": true,
        "noImplicitAny": true,
        "noUnusedLocals": true,
        "preserveWatchOutput": true,
        "resolveJsonModule": true,
        "outDir": "lab/lib",
        "rootDir": "lab/src",
        "strict": true,
        "strictNullChecks": false,
        "target": "es2018",
        "types": []
      },
      "include": ["lab/src/*"]
    }
    ipython-ipyparallel-14e3c43/yarn.lock000066400000000000000000010202321520071063500176720ustar00rootroot00000000000000# This file is generated by running "yarn install" inside your project.
    # Manual changes might be lost - proceed with caution!
    
    __metadata:
      version: 6
      cacheKey: 8
    
    "@antfu/install-pkg@npm:^1.1.0":
      version: 1.1.0
      resolution: "@antfu/install-pkg@npm:1.1.0"
      dependencies:
        package-manager-detector: ^1.3.0
        tinyexec: ^1.0.1
      checksum: e20b7cd1c37eff832cc878cddd794f8c3779175681cf6d75c4cc1ae1475526126a4c1f71fa027161aa1ee35a8850782be9ca0ec01b621893defebe97ba9dc70e
      languageName: node
      linkType: hard
    
    "@babel/code-frame@npm:^7.12.13":
      version: 7.29.0
      resolution: "@babel/code-frame@npm:7.29.0"
      dependencies:
        "@babel/helper-validator-identifier": ^7.28.5
        js-tokens: ^4.0.0
        picocolors: ^1.1.1
      checksum: 39f5b303757e4d63bbff8133e251094cd4f952b46e3fa9febc7368d907583911d6a1eded6090876dc1feeff5cf6e134fb19b706f8d58d26c5402cd50e5e1aeb2
      languageName: node
      linkType: hard
    
    "@babel/helper-validator-identifier@npm:^7.28.5":
      version: 7.28.5
      resolution: "@babel/helper-validator-identifier@npm:7.28.5"
      checksum: 5a251a6848e9712aea0338f659a1a3bd334d26219d5511164544ca8ec20774f098c3a6661e9da65a0d085c745c00bb62c8fada38a62f08fa1f8053bc0aeb57e4
      languageName: node
      linkType: hard
    
    "@braintree/sanitize-url@npm:^7.1.1":
      version: 7.1.2
      resolution: "@braintree/sanitize-url@npm:7.1.2"
      checksum: ca787264bbea2a3c02ce5cd5e08a1debf1ffff1c87b954ed2522d816fc3f3a9b93a5a55056dfe394d86c780ced35ee2fc06abbffd0f5f2e95264f7b62cb29d66
      languageName: node
      linkType: hard
    
    "@chevrotain/types@npm:~11.1.1":
      version: 11.1.2
      resolution: "@chevrotain/types@npm:11.1.2"
      checksum: 4c948b8559c94329bae5fa5b087e20ebfbac3fa73ff32ee7e3752716ab565da1c9efc2103eb1dbee2bf492d68231d4386836283f0bb7cca63f4185788808af70
      languageName: node
      linkType: hard
    
    "@codemirror/autocomplete@npm:^6.0.0, @codemirror/autocomplete@npm:^6.20.0, @codemirror/autocomplete@npm:^6.3.2, @codemirror/autocomplete@npm:^6.7.1":
      version: 6.20.2
      resolution: "@codemirror/autocomplete@npm:6.20.2"
      dependencies:
        "@codemirror/language": ^6.0.0
        "@codemirror/state": ^6.0.0
        "@codemirror/view": ^6.17.0
        "@lezer/common": ^1.0.0
      checksum: 1c8f7604ddf1a46f7bdbbdf2c6ea7103bdf3152b20115fb3bb77002e3537fffc5aba93830b1f3ca494abdd8c6ed29274a6928f96c77e8768699145058e8a1ac3
      languageName: node
      linkType: hard
    
    "@codemirror/commands@npm:^6.10.2":
      version: 6.10.3
      resolution: "@codemirror/commands@npm:6.10.3"
      dependencies:
        "@codemirror/language": ^6.0.0
        "@codemirror/state": ^6.6.0
        "@codemirror/view": ^6.27.0
        "@lezer/common": ^1.1.0
      checksum: 8a7c6583819989f553c00d3ea137c656d371d026d0bb8791b330f9a0b1c589285c8a944320f7418483f1c6d4381555fe1306680eaa9e9b93b0effd34665e1a4f
      languageName: node
      linkType: hard
    
    "@codemirror/lang-cpp@npm:^6.0.3":
      version: 6.0.3
      resolution: "@codemirror/lang-cpp@npm:6.0.3"
      dependencies:
        "@codemirror/language": ^6.0.0
        "@lezer/cpp": ^1.0.0
      checksum: 982b9a9624367a0086520e1d499b7ad2fba2a14bdd57df88520bac279bd980e12154fd281659226fbcfa530edb5dd72edd114481365e6224bf53e97bc972f3b8
      languageName: node
      linkType: hard
    
    "@codemirror/lang-css@npm:^6.0.0, @codemirror/lang-css@npm:^6.3.1":
      version: 6.3.1
      resolution: "@codemirror/lang-css@npm:6.3.1"
      dependencies:
        "@codemirror/autocomplete": ^6.0.0
        "@codemirror/language": ^6.0.0
        "@codemirror/state": ^6.0.0
        "@lezer/common": ^1.0.2
        "@lezer/css": ^1.1.7
      checksum: ed175d75d75bc0a059d1e60b3dcd8464d570da14fc97388439943c9c43e1e9146e37b83fe2ccaad9cd387420b7b411ea1d24ede78ecd1f2045a38acbb4dd36bc
      languageName: node
      linkType: hard
    
    "@codemirror/lang-html@npm:^6.0.0, @codemirror/lang-html@npm:^6.4.11":
      version: 6.4.11
      resolution: "@codemirror/lang-html@npm:6.4.11"
      dependencies:
        "@codemirror/autocomplete": ^6.0.0
        "@codemirror/lang-css": ^6.0.0
        "@codemirror/lang-javascript": ^6.0.0
        "@codemirror/language": ^6.4.0
        "@codemirror/state": ^6.0.0
        "@codemirror/view": ^6.17.0
        "@lezer/common": ^1.0.0
        "@lezer/css": ^1.1.0
        "@lezer/html": ^1.3.12
      checksum: 31a16cc6be4daa58c6765274b9b7ba1bb54a4b0858d33d8ad1c7ec1bcb85920e3715a891f8cb27f5d9dfe87bbe00f0ddfbac5b04011374e15380b9cec7ba3c69
      languageName: node
      linkType: hard
    
    "@codemirror/lang-java@npm:^6.0.2":
      version: 6.0.2
      resolution: "@codemirror/lang-java@npm:6.0.2"
      dependencies:
        "@codemirror/language": ^6.0.0
        "@lezer/java": ^1.0.0
      checksum: ed884f5e1a90c0d487bc4e5073c6154f3abf51b0b652c3d015e8cb322e171a38307427a85ecc16d5be82bd3243577e77e202325d84394a9c5ac356ee358c56c9
      languageName: node
      linkType: hard
    
    "@codemirror/lang-javascript@npm:^6.0.0, @codemirror/lang-javascript@npm:^6.2.4":
      version: 6.2.5
      resolution: "@codemirror/lang-javascript@npm:6.2.5"
      dependencies:
        "@codemirror/autocomplete": ^6.0.0
        "@codemirror/language": ^6.6.0
        "@codemirror/lint": ^6.0.0
        "@codemirror/state": ^6.0.0
        "@codemirror/view": ^6.17.0
        "@lezer/common": ^1.0.0
        "@lezer/javascript": ^1.0.0
      checksum: 4f8007b2cb75fbc08568a89b57ee2996ba38966c6662dd635b9b0990a6b3044b3ce189e6b1f103f277e0d814b2afd5957d4ab1eaae0955fdab58328fd5a7e067
      languageName: node
      linkType: hard
    
    "@codemirror/lang-json@npm:^6.0.2":
      version: 6.0.2
      resolution: "@codemirror/lang-json@npm:6.0.2"
      dependencies:
        "@codemirror/language": ^6.0.0
        "@lezer/json": ^1.0.0
      checksum: ccdf71a4f339b9e40310c40c4677c31b8bf2284291becc056b7d5b30382107cd7ab65f1a3c108331c0fc7b5fc7ec2e3fe6e5029957ff978d7b7bfb759f68d921
      languageName: node
      linkType: hard
    
    "@codemirror/lang-markdown@npm:^6.5.0":
      version: 6.5.0
      resolution: "@codemirror/lang-markdown@npm:6.5.0"
      dependencies:
        "@codemirror/autocomplete": ^6.7.1
        "@codemirror/lang-html": ^6.0.0
        "@codemirror/language": ^6.3.0
        "@codemirror/state": ^6.0.0
        "@codemirror/view": ^6.0.0
        "@lezer/common": ^1.2.1
        "@lezer/markdown": ^1.0.0
      checksum: 15c6bf7eb800b73d77a2e202f08b2282230903d830111699f34a036e0ae334cf5edd65b29f45f138e305fb33a7a11f0ef111c2eaed948b10501e5e8deb7d6c47
      languageName: node
      linkType: hard
    
    "@codemirror/lang-php@npm:^6.0.2":
      version: 6.0.2
      resolution: "@codemirror/lang-php@npm:6.0.2"
      dependencies:
        "@codemirror/lang-html": ^6.0.0
        "@codemirror/language": ^6.0.0
        "@codemirror/state": ^6.0.0
        "@lezer/common": ^1.0.0
        "@lezer/php": ^1.0.0
      checksum: e0cb6287c5a8898dc5637dadfbbd591ed6c2aaef1fc4db1426646ab0f8e48e4c7254899fc9c1864ee1f1e917d5888e447d1ab87300d896de2b9472f5ad6a888d
      languageName: node
      linkType: hard
    
    "@codemirror/lang-python@npm:^6.2.1":
      version: 6.2.1
      resolution: "@codemirror/lang-python@npm:6.2.1"
      dependencies:
        "@codemirror/autocomplete": ^6.3.2
        "@codemirror/language": ^6.8.0
        "@codemirror/state": ^6.0.0
        "@lezer/common": ^1.2.1
        "@lezer/python": ^1.1.4
      checksum: 977ce444ab7c68261107c40e8a46d3480a239ac5a093f39fad7da0644fc08cb4b90552c8b7fad396f936e34b5bbac510533ea7b4229d3b8271774a1af1e717aa
      languageName: node
      linkType: hard
    
    "@codemirror/lang-rust@npm:^6.0.2":
      version: 6.0.2
      resolution: "@codemirror/lang-rust@npm:6.0.2"
      dependencies:
        "@codemirror/language": ^6.0.0
        "@lezer/rust": ^1.0.0
      checksum: 4cb7528c723ec3f421bd82a5324c56d836f3675e3b28e2b2d3c9d251e8f206bf9d932d52696c310dca51d71644063441fb8330d5ad1278c68002f8598b4bc067
      languageName: node
      linkType: hard
    
    "@codemirror/lang-sql@npm:^6.10.0":
      version: 6.10.0
      resolution: "@codemirror/lang-sql@npm:6.10.0"
      dependencies:
        "@codemirror/autocomplete": ^6.0.0
        "@codemirror/language": ^6.0.0
        "@codemirror/state": ^6.0.0
        "@lezer/common": ^1.2.0
        "@lezer/highlight": ^1.0.0
        "@lezer/lr": ^1.0.0
      checksum: c37ba6778f5f34f174a387ff530f19844fccc1e5ff65c58205b8861c19b6e39e4b3298ec63f50bd6c860befba3491db40d0d20b463a77021a9e9f20979fa2369
      languageName: node
      linkType: hard
    
    "@codemirror/lang-wast@npm:^6.0.2":
      version: 6.0.2
      resolution: "@codemirror/lang-wast@npm:6.0.2"
      dependencies:
        "@codemirror/language": ^6.0.0
        "@lezer/common": ^1.2.0
        "@lezer/highlight": ^1.0.0
        "@lezer/lr": ^1.0.0
      checksum: 72119d4a7d726c54167aa227c982ae9fa785c8ad97a158d8350ae95eecfbd8028a803eef939f7e6c5c6e626fcecda1dc37e9dffc6d5d6ec105f686aeda6b2c24
      languageName: node
      linkType: hard
    
    "@codemirror/lang-xml@npm:^6.1.0":
      version: 6.1.0
      resolution: "@codemirror/lang-xml@npm:6.1.0"
      dependencies:
        "@codemirror/autocomplete": ^6.0.0
        "@codemirror/language": ^6.4.0
        "@codemirror/state": ^6.0.0
        "@codemirror/view": ^6.0.0
        "@lezer/common": ^1.0.0
        "@lezer/xml": ^1.0.0
      checksum: 3a1b7af07b29ad7e53b77bf584245580b613bc92256059f175f2b1d7c28c4e39b75654fe169b9a8a330a60164b53ff5254bdb5b8ee8c6e6766427ee115c4e229
      languageName: node
      linkType: hard
    
    "@codemirror/language@npm:^6.0.0, @codemirror/language@npm:^6.12.1, @codemirror/language@npm:^6.3.0, @codemirror/language@npm:^6.4.0, @codemirror/language@npm:^6.6.0, @codemirror/language@npm:^6.8.0":
      version: 6.12.3
      resolution: "@codemirror/language@npm:6.12.3"
      dependencies:
        "@codemirror/state": ^6.0.0
        "@codemirror/view": ^6.23.0
        "@lezer/common": ^1.5.0
        "@lezer/highlight": ^1.0.0
        "@lezer/lr": ^1.0.0
        style-mod: ^4.0.0
      checksum: 338a063b2362d15aa55b7140072ff0e6a4adb5ece2e224f9b67744b140c2443b0282c79e546a484cf9e3c3f50e85d856fbac090f435952c64b606a2123d7a0dd
      languageName: node
      linkType: hard
    
    "@codemirror/legacy-modes@npm:^6.5.2":
      version: 6.5.2
      resolution: "@codemirror/legacy-modes@npm:6.5.2"
      dependencies:
        "@codemirror/language": ^6.0.0
      checksum: 2ae75e40d4357e65d0b3b1ebcb28a85a7700f8a39e5ae2dcc8dece00a4070a800d797c9297e7a4beb398d63e4c69c3e69992b4fb20ab84f748625c7590a82636
      languageName: node
      linkType: hard
    
    "@codemirror/lint@npm:^6.0.0":
      version: 6.9.6
      resolution: "@codemirror/lint@npm:6.9.6"
      dependencies:
        "@codemirror/state": ^6.0.0
        "@codemirror/view": ^6.42.0
        crelt: ^1.0.5
      checksum: 52510d190fc2e0a7244a5b2e4a83abc71943822690bb808c56505c996321ec33efa5f30a140ef42c9cee9877c67ff782ee78ebb1efb522e9fea714bb693acb4e
      languageName: node
      linkType: hard
    
    "@codemirror/search@npm:^6.6.0":
      version: 6.7.0
      resolution: "@codemirror/search@npm:6.7.0"
      dependencies:
        "@codemirror/state": ^6.0.0
        "@codemirror/view": ^6.37.0
        crelt: ^1.0.5
      checksum: 2abe3424738c02046f8720d02043c855c860d1a9a8210790cbe8e60ce87e1e461b64695ad5736bba78fc53a190c22d82a609dcbe02396d2089fce047e9a37d74
      languageName: node
      linkType: hard
    
    "@codemirror/state@npm:^6.0.0, @codemirror/state@npm:^6.5.4, @codemirror/state@npm:^6.6.0":
      version: 6.6.0
      resolution: "@codemirror/state@npm:6.6.0"
      dependencies:
        "@marijn/find-cluster-break": ^1.0.0
      checksum: 9400f356ebff7089f552012b95c8d46cdecc952cc9561537b7ebd7ea44fe34da7e02cfdcf17efc28fb6354bd54ecd9db7ca25b4756595acfe56c547c63cedee8
      languageName: node
      linkType: hard
    
    "@codemirror/view@npm:^6.0.0, @codemirror/view@npm:^6.17.0, @codemirror/view@npm:^6.23.0, @codemirror/view@npm:^6.27.0, @codemirror/view@npm:^6.37.0, @codemirror/view@npm:^6.39.14, @codemirror/view@npm:^6.42.0":
      version: 6.42.1
      resolution: "@codemirror/view@npm:6.42.1"
      dependencies:
        "@codemirror/state": ^6.6.0
        crelt: ^1.0.6
        style-mod: ^4.1.0
        w3c-keyname: ^2.2.4
      checksum: 765dfe130a3ca29de06797b31ddf897c841ce19d6027deefaa0e098710a0350e5e1a12dbf04b3559f8fdfb44f1388f6aa8bf571a36b1c66d579653dc76b050e3
      languageName: node
      linkType: hard
    
    "@discoveryjs/json-ext@npm:^0.5.0":
      version: 0.5.7
      resolution: "@discoveryjs/json-ext@npm:0.5.7"
      checksum: 2176d301cc258ea5c2324402997cf8134ebb212469c0d397591636cea8d3c02f2b3cf9fd58dcb748c7a0dade77ebdc1b10284fa63e608c033a1db52fddc69918
      languageName: node
      linkType: hard
    
    "@eslint-community/eslint-utils@npm:^4.8.0, @eslint-community/eslint-utils@npm:^4.9.1":
      version: 4.9.1
      resolution: "@eslint-community/eslint-utils@npm:4.9.1"
      dependencies:
        eslint-visitor-keys: ^3.4.3
      peerDependencies:
        eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
      checksum: 0a27c2d676c4be6b329ebb5dd8f6c5ef5fae9a019ff575655306d72874bb26f3ab20e0b241a5f086464bb1f2511ca26a29ff6f80c1e2b0b02eca4686b4dfe1b5
      languageName: node
      linkType: hard
    
    "@eslint-community/regexpp@npm:^4.12.1, @eslint-community/regexpp@npm:^4.12.2":
      version: 4.12.2
      resolution: "@eslint-community/regexpp@npm:4.12.2"
      checksum: 1770bc81f676a72f65c7200b5675ff7a349786521f30e66125faaf767fde1ba1c19c3790e16ba8508a62a3933afcfc806a893858b3b5906faf693d862b9e4120
      languageName: node
      linkType: hard
    
    "@eslint/config-array@npm:^0.21.2":
      version: 0.21.2
      resolution: "@eslint/config-array@npm:0.21.2"
      dependencies:
        "@eslint/object-schema": ^2.1.7
        debug: ^4.3.1
        minimatch: ^3.1.5
      checksum: f3d6ba56d6a3dfc5400575011fb4ae5ac189c96b6ca4920adb6da2d084f9eaa28583fa0aa55e123c42baa2bd31f85228ee35a05c8a395b58fb8d976e16482697
      languageName: node
      linkType: hard
    
    "@eslint/config-helpers@npm:^0.4.2":
      version: 0.4.2
      resolution: "@eslint/config-helpers@npm:0.4.2"
      dependencies:
        "@eslint/core": ^0.17.0
      checksum: 63ff6a0730c9fff2edb80c89b39b15b28d6a635a1c3f32cf0d7eb3e2625f2efbc373c5531ae84e420ae36d6e37016dd40c365b6e5dee6938478e9907aaadae0b
      languageName: node
      linkType: hard
    
    "@eslint/core@npm:^0.17.0":
      version: 0.17.0
      resolution: "@eslint/core@npm:0.17.0"
      dependencies:
        "@types/json-schema": ^7.0.15
      checksum: ff9b5b4987f0bae4f2a4cfcdc7ae584ad3b0cb58526ca562fb281d6837700a04c7f3c86862e95126462318f33f60bf38e1cb07ed0e2449532d4b91cd5f4ab1f2
      languageName: node
      linkType: hard
    
    "@eslint/eslintrc@npm:^3.3.5":
      version: 3.3.5
      resolution: "@eslint/eslintrc@npm:3.3.5"
      dependencies:
        ajv: ^6.14.0
        debug: ^4.3.2
        espree: ^10.0.1
        globals: ^14.0.0
        ignore: ^5.2.0
        import-fresh: ^3.2.1
        js-yaml: ^4.1.1
        minimatch: ^3.1.5
        strip-json-comments: ^3.1.1
      checksum: b1c0ac8938891f47a92ef662c790cc599f6562b06562f4035efd075f99c2b62eb4960ee0e2021d424942c8d1084665b581f3799d863c67979b269a8ccda48364
      languageName: node
      linkType: hard
    
    "@eslint/js@npm:9.39.4, @eslint/js@npm:^9.0.0":
      version: 9.39.4
      resolution: "@eslint/js@npm:9.39.4"
      checksum: 5b1cd1e6c13bc119c92911e6cef7cf886d942c9e047db0c923bbdd539ed6b9820d986b4559be1f2e24836de7fbad95bbfe268b2bf3d1fef76de37bdc8fae19d8
      languageName: node
      linkType: hard
    
    "@eslint/object-schema@npm:^2.1.7":
      version: 2.1.7
      resolution: "@eslint/object-schema@npm:2.1.7"
      checksum: fc5708f192476956544def13455d60fd1bafbf8f062d1e05ec5c06dd470b02078eaf721e696a8b31c1c45d2056723a514b941ae5eea1398cc7e38eba6711a775
      languageName: node
      linkType: hard
    
    "@eslint/plugin-kit@npm:^0.4.1":
      version: 0.4.1
      resolution: "@eslint/plugin-kit@npm:0.4.1"
      dependencies:
        "@eslint/core": ^0.17.0
        levn: ^0.4.1
      checksum: 3f4492e02a3620e05d46126c5cfeff5f651ecf33466c8f88efb4812ae69db5f005e8c13373afabc070ecca7becd319b656d6670ad5093f05ca63c2a8841d99ba
      languageName: node
      linkType: hard
    
    "@fortawesome/fontawesome-free@npm:^5.12.0":
      version: 5.15.4
      resolution: "@fortawesome/fontawesome-free@npm:5.15.4"
      checksum: 32281c3df4075290d9a96dfc22f72fadb3da7055d4117e48d34046b8c98032a55fa260ae351b0af5d6f6fb57a2f5d79a4abe52af456da35195f7cb7dda27b4a2
      languageName: node
      linkType: hard
    
    "@humanfs/core@npm:^0.19.2":
      version: 0.19.2
      resolution: "@humanfs/core@npm:0.19.2"
      dependencies:
        "@humanfs/types": ^0.15.0
      checksum: cfcf57302dafe41eadd900b30da5e10f8b4e51fac635c834c03ae11933d1911c131ef3cfa3ff14c47b17dd23524180c69f50cfe0b68c152034c2f6ba0ec2ccae
      languageName: node
      linkType: hard
    
    "@humanfs/node@npm:^0.16.6":
      version: 0.16.8
      resolution: "@humanfs/node@npm:0.16.8"
      dependencies:
        "@humanfs/core": ^0.19.2
        "@humanfs/types": ^0.15.0
        "@humanwhocodes/retry": ^0.4.0
      checksum: 179d1dae12c5d1330c262b79b037e4db3e98d870f4827a56c1eb8a6bc32a6d2b4c32603a5b13c4f2e11882239276ed2a559cf465dfba33a3ac37bc7d9f5c1e9b
      languageName: node
      linkType: hard
    
    "@humanfs/types@npm:^0.15.0":
      version: 0.15.0
      resolution: "@humanfs/types@npm:0.15.0"
      checksum: fe8abe73e36ded7bf854addd48a5a7defe3aa77af9e92a95195bc6abd7d2a22c193bbac38d47982c198e2683e5108acba691cd859c4e1104b94d76651139e2da
      languageName: node
      linkType: hard
    
    "@humanwhocodes/module-importer@npm:^1.0.1":
      version: 1.0.1
      resolution: "@humanwhocodes/module-importer@npm:1.0.1"
      checksum: 0fd22007db8034a2cdf2c764b140d37d9020bbfce8a49d3ec5c05290e77d4b0263b1b972b752df8c89e5eaa94073408f2b7d977aed131faf6cf396ebb5d7fb61
      languageName: node
      linkType: hard
    
    "@humanwhocodes/retry@npm:^0.4.0, @humanwhocodes/retry@npm:^0.4.2":
      version: 0.4.3
      resolution: "@humanwhocodes/retry@npm:0.4.3"
      checksum: d423455b9d53cf01f778603404512a4246fb19b83e74fe3e28c70d9a80e9d4ae147d2411628907ca983e91a855a52535859a8bb218050bc3f6dbd7a553b7b442
      languageName: node
      linkType: hard
    
    "@iconify/types@npm:^2.0.0":
      version: 2.0.0
      resolution: "@iconify/types@npm:2.0.0"
      checksum: 029f58542c160e9d4a746869cf2e475b603424d3adf3994c5cc8d0406c47e6e04a3b898b2707840c1c5b9bd5563a1660a34b110d89fce43923baca5222f4e597
      languageName: node
      linkType: hard
    
    "@iconify/utils@npm:^3.0.2":
      version: 3.1.3
      resolution: "@iconify/utils@npm:3.1.3"
      dependencies:
        "@antfu/install-pkg": ^1.1.0
        "@iconify/types": ^2.0.0
        import-meta-resolve: ^4.2.0
      checksum: 63f43869a679185604ea1f65f8107532afe2e0e6aa4e1666d97885589ea95311b9bff0501ddbda4d239757b383f70b5291092fa2600a39a6b61771c525d4fa22
      languageName: node
      linkType: hard
    
    "@jest/environment@npm:^29.7.0":
      version: 29.7.0
      resolution: "@jest/environment@npm:29.7.0"
      dependencies:
        "@jest/fake-timers": ^29.7.0
        "@jest/types": ^29.6.3
        "@types/node": "*"
        jest-mock: ^29.7.0
      checksum: 6fb398143b2543d4b9b8d1c6dbce83fa5247f84f550330604be744e24c2bd2178bb893657d62d1b97cf2f24baf85c450223f8237cccb71192c36a38ea2272934
      languageName: node
      linkType: hard
    
    "@jest/fake-timers@npm:^29.7.0":
      version: 29.7.0
      resolution: "@jest/fake-timers@npm:29.7.0"
      dependencies:
        "@jest/types": ^29.6.3
        "@sinonjs/fake-timers": ^10.0.2
        "@types/node": "*"
        jest-message-util: ^29.7.0
        jest-mock: ^29.7.0
        jest-util: ^29.7.0
      checksum: caf2bbd11f71c9241b458d1b5a66cbe95debc5a15d96442444b5d5c7ba774f523c76627c6931cca5e10e76f0d08761f6f1f01a608898f4751a0eee54fc3d8d00
      languageName: node
      linkType: hard
    
    "@jest/schemas@npm:^29.6.3":
      version: 29.6.3
      resolution: "@jest/schemas@npm:29.6.3"
      dependencies:
        "@sinclair/typebox": ^0.27.8
      checksum: 910040425f0fc93cd13e68c750b7885590b8839066dfa0cd78e7def07bbb708ad869381f725945d66f2284de5663bbecf63e8fdd856e2ae6e261ba30b1687e93
      languageName: node
      linkType: hard
    
    "@jest/types@npm:^29.6.3":
      version: 29.6.3
      resolution: "@jest/types@npm:29.6.3"
      dependencies:
        "@jest/schemas": ^29.6.3
        "@types/istanbul-lib-coverage": ^2.0.0
        "@types/istanbul-reports": ^3.0.0
        "@types/node": "*"
        "@types/yargs": ^17.0.8
        chalk: ^4.0.0
      checksum: a0bcf15dbb0eca6bdd8ce61a3fb055349d40268622a7670a3b2eb3c3dbafe9eb26af59938366d520b86907b9505b0f9b29b85cec11579a9e580694b87cd90fcc
      languageName: node
      linkType: hard
    
    "@jridgewell/gen-mapping@npm:^0.3.5":
      version: 0.3.13
      resolution: "@jridgewell/gen-mapping@npm:0.3.13"
      dependencies:
        "@jridgewell/sourcemap-codec": ^1.5.0
        "@jridgewell/trace-mapping": ^0.3.24
      checksum: f2105acefc433337145caa3c84bba286de954f61c0bc46279bbd85a9e6a02871089717fa060413cfb6a9d44189fe8313b2d1cabf3a2eb3284d208fd5f75c54ff
      languageName: node
      linkType: hard
    
    "@jridgewell/resolve-uri@npm:^3.1.0":
      version: 3.1.2
      resolution: "@jridgewell/resolve-uri@npm:3.1.2"
      checksum: 83b85f72c59d1c080b4cbec0fef84528963a1b5db34e4370fa4bd1e3ff64a0d80e0cee7369d11d73c704e0286fb2865b530acac7a871088fbe92b5edf1000870
      languageName: node
      linkType: hard
    
    "@jridgewell/source-map@npm:^0.3.3":
      version: 0.3.11
      resolution: "@jridgewell/source-map@npm:0.3.11"
      dependencies:
        "@jridgewell/gen-mapping": ^0.3.5
        "@jridgewell/trace-mapping": ^0.3.25
      checksum: c8a0011cc67e701f270fa042e32b312f382c413bcc70ca9c03684687cbf5b64d5eed87d4afa36dddaabe60ab3da6db4935f878febd9cfc7f82724ea1a114d344
      languageName: node
      linkType: hard
    
    "@jridgewell/sourcemap-codec@npm:^1.4.14, @jridgewell/sourcemap-codec@npm:^1.5.0":
      version: 1.5.5
      resolution: "@jridgewell/sourcemap-codec@npm:1.5.5"
      checksum: c2e36e67971f719a8a3a85ef5a5f580622437cc723c35d03ebd0c9c0b06418700ef006f58af742791f71f6a4fc68fcfaf1f6a74ec2f9a3332860e9373459dae7
      languageName: node
      linkType: hard
    
    "@jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25":
      version: 0.3.31
      resolution: "@jridgewell/trace-mapping@npm:0.3.31"
      dependencies:
        "@jridgewell/resolve-uri": ^3.1.0
        "@jridgewell/sourcemap-codec": ^1.4.14
      checksum: af8fda2431348ad507fbddf8e25f5d08c79ecc94594061ce402cf41bc5aba1a7b3e59bf0fd70a619b35f33983a3f488ceeba8faf56bff784f98bb5394a8b7d47
      languageName: node
      linkType: hard
    
    "@jupyter/eslint-plugin@npm:^1.0.0":
      version: 1.0.0
      resolution: "@jupyter/eslint-plugin@npm:1.0.0"
      dependencies:
        "@typescript-eslint/utils": ^8.54.0
      peerDependencies:
        eslint: ">=9.0.0"
      checksum: ec35bf023677646777d573566ac9110d6c8f23ed9663d4835728b25452e8c4250e28b5662375318bf0eea098401cf9b74ef507a0bb01cab9aca2d1e0d73081bf
      languageName: node
      linkType: hard
    
    "@jupyter/react-components@npm:^0.16.6":
      version: 0.16.7
      resolution: "@jupyter/react-components@npm:0.16.7"
      dependencies:
        "@jupyter/web-components": ^0.16.7
        react: ">=17.0.0 <19.0.0"
      checksum: 37894347e63ebb528725e8b8b4038d138019823f5c9e28e3f6abb93b46d771b2ee3cc004d5ff7d9a06a93f2d90e41000bd2abae14364be34ba99c5e05864810e
      languageName: node
      linkType: hard
    
    "@jupyter/web-components@npm:^0.16.6, @jupyter/web-components@npm:^0.16.7":
      version: 0.16.7
      resolution: "@jupyter/web-components@npm:0.16.7"
      dependencies:
        "@microsoft/fast-colors": ^5.3.1
        "@microsoft/fast-element": ^1.12.0
        "@microsoft/fast-foundation": ^2.49.4
        "@microsoft/fast-web-utilities": ^5.4.1
      checksum: ec3336247bbabb2e2587c2cf8b9d0e80786b454916dd600b3d6791bf08c3d1e45a7ec1becf366a5491ab56b0be020baa8c50a5b6067961faf5ec904de31243aa
      languageName: node
      linkType: hard
    
    "@jupyter/ydoc@npm:^3.1.0":
      version: 3.4.1
      resolution: "@jupyter/ydoc@npm:3.4.1"
      dependencies:
        "@jupyterlab/nbformat": ^3.0.0 || ^4.0.0-alpha.21 || ^4.0.0
        "@lumino/coreutils": ^1.11.0 || ^2.0.0
        "@lumino/disposable": ^1.10.0 || ^2.0.0
        "@lumino/signaling": ^1.10.0 || ^2.0.0
        y-protocols: ^1.0.5
        yjs: ^13.5.40
      checksum: 58fc222bb5a4d2fbf6b41668442793717253d55e7b5181ce9048780d2ce7bc061538c464356d6293d34ad33c9a550cd8c377b56e281eb55b18fde7e6a022d68c
      languageName: node
      linkType: hard
    
    "@jupyterlab/application@npm:^4.5.7":
      version: 4.5.7
      resolution: "@jupyterlab/application@npm:4.5.7"
      dependencies:
        "@fortawesome/fontawesome-free": ^5.12.0
        "@jupyterlab/apputils": ^4.6.7
        "@jupyterlab/coreutils": ^6.5.7
        "@jupyterlab/docregistry": ^4.5.7
        "@jupyterlab/rendermime": ^4.5.7
        "@jupyterlab/rendermime-interfaces": ^3.13.7
        "@jupyterlab/services": ^7.5.7
        "@jupyterlab/statedb": ^4.5.7
        "@jupyterlab/translation": ^4.5.7
        "@jupyterlab/ui-components": ^4.5.7
        "@lumino/algorithm": ^2.0.4
        "@lumino/application": ^2.4.8
        "@lumino/commands": ^2.3.3
        "@lumino/coreutils": ^2.2.2
        "@lumino/disposable": ^2.1.5
        "@lumino/messaging": ^2.0.4
        "@lumino/polling": ^2.1.5
        "@lumino/properties": ^2.0.4
        "@lumino/signaling": ^2.1.5
        "@lumino/widgets": ^2.7.5
      checksum: 7802cb146c7675e5db854f575002d874d829cdc3ad570d2ef2646f7cedd33dbca14bb9e7407bf46afe5d8d845dd295a22c63de068459e7d4650bc348566fb793
      languageName: node
      linkType: hard
    
    "@jupyterlab/apputils@npm:^4.6.7":
      version: 4.6.7
      resolution: "@jupyterlab/apputils@npm:4.6.7"
      dependencies:
        "@jupyterlab/coreutils": ^6.5.7
        "@jupyterlab/observables": ^5.5.7
        "@jupyterlab/rendermime-interfaces": ^3.13.7
        "@jupyterlab/services": ^7.5.7
        "@jupyterlab/settingregistry": ^4.5.7
        "@jupyterlab/statedb": ^4.5.7
        "@jupyterlab/statusbar": ^4.5.7
        "@jupyterlab/translation": ^4.5.7
        "@jupyterlab/ui-components": ^4.5.7
        "@lumino/algorithm": ^2.0.4
        "@lumino/commands": ^2.3.3
        "@lumino/coreutils": ^2.2.2
        "@lumino/disposable": ^2.1.5
        "@lumino/domutils": ^2.0.4
        "@lumino/messaging": ^2.0.4
        "@lumino/signaling": ^2.1.5
        "@lumino/virtualdom": ^2.0.4
        "@lumino/widgets": ^2.7.5
        "@types/react": ^18.0.26
        react: ^18.2.0
        sanitize-html: ~2.12.1
      checksum: decd766d608f10ef64556f9320acf7d31b851e964e21b6b190c5d78dcd3e8a8ca52414a341f9d4512848e5dceaf17617cae80097b992246ad9d87efbe3360f2c
      languageName: node
      linkType: hard
    
    "@jupyterlab/attachments@npm:^4.5.7":
      version: 4.5.7
      resolution: "@jupyterlab/attachments@npm:4.5.7"
      dependencies:
        "@jupyterlab/nbformat": ^4.5.7
        "@jupyterlab/observables": ^5.5.7
        "@jupyterlab/rendermime": ^4.5.7
        "@jupyterlab/rendermime-interfaces": ^3.13.7
        "@lumino/disposable": ^2.1.5
        "@lumino/signaling": ^2.1.5
      checksum: 2cdbeeb239e39a818ace66a709a7ef29f862a1a11eb685b9a5297160d86e4b384b695a59ec6db8269bbf1876954f8c396d7ca5d19e55f7da562edb1e31009693
      languageName: node
      linkType: hard
    
    "@jupyterlab/builder@npm:^4.5.7":
      version: 4.5.7
      resolution: "@jupyterlab/builder@npm:4.5.7"
      dependencies:
        "@lumino/algorithm": ^2.0.4
        "@lumino/application": ^2.4.8
        "@lumino/commands": ^2.3.3
        "@lumino/coreutils": ^2.2.2
        "@lumino/disposable": ^2.1.5
        "@lumino/domutils": ^2.0.4
        "@lumino/dragdrop": ^2.1.8
        "@lumino/messaging": ^2.0.4
        "@lumino/properties": ^2.0.4
        "@lumino/signaling": ^2.1.5
        "@lumino/virtualdom": ^2.0.4
        "@lumino/widgets": ^2.7.5
        ajv: ^8.12.0
        commander: ^9.4.1
        css-loader: ^6.7.1
        duplicate-package-checker-webpack-plugin: ^3.0.0
        fs-extra: ^10.1.0
        glob: ~7.1.6
        license-webpack-plugin: ^2.3.14
        mini-css-extract-plugin: ^2.7.0
        mini-svg-data-uri: ^1.4.4
        path-browserify: ^1.0.0
        process: ^0.11.10
        source-map-loader: ~1.0.2
        style-loader: ~3.3.1
        supports-color: ^7.2.0
        terser-webpack-plugin: ^5.3.7
        webpack: ^5.76.1
        webpack-cli: ^5.0.1
        webpack-merge: ^5.8.0
        worker-loader: ^3.0.2
      bin:
        build-labextension: lib/build-labextension.js
      checksum: 4c5860fd44fd0c8c7c2cee8a21b9d5db361f90e30e4fe86da1debdaa8fac4660672107a577684b0a33e4e7a857f85a88671c8f7468ca2c0564e3bd8df38b5630
      languageName: node
      linkType: hard
    
    "@jupyterlab/cells@npm:^4.5.7":
      version: 4.5.7
      resolution: "@jupyterlab/cells@npm:4.5.7"
      dependencies:
        "@codemirror/state": ^6.5.4
        "@codemirror/view": ^6.39.14
        "@jupyter/ydoc": ^3.1.0
        "@jupyterlab/apputils": ^4.6.7
        "@jupyterlab/attachments": ^4.5.7
        "@jupyterlab/codeeditor": ^4.5.7
        "@jupyterlab/codemirror": ^4.5.7
        "@jupyterlab/coreutils": ^6.5.7
        "@jupyterlab/documentsearch": ^4.5.7
        "@jupyterlab/filebrowser": ^4.5.7
        "@jupyterlab/nbformat": ^4.5.7
        "@jupyterlab/observables": ^5.5.7
        "@jupyterlab/outputarea": ^4.5.7
        "@jupyterlab/rendermime": ^4.5.7
        "@jupyterlab/services": ^7.5.7
        "@jupyterlab/toc": ^6.5.7
        "@jupyterlab/translation": ^4.5.7
        "@jupyterlab/ui-components": ^4.5.7
        "@lumino/algorithm": ^2.0.4
        "@lumino/coreutils": ^2.2.2
        "@lumino/domutils": ^2.0.4
        "@lumino/dragdrop": ^2.1.8
        "@lumino/messaging": ^2.0.4
        "@lumino/polling": ^2.1.5
        "@lumino/signaling": ^2.1.5
        "@lumino/virtualdom": ^2.0.4
        "@lumino/widgets": ^2.7.5
        react: ^18.2.0
      checksum: acd00d7209a60f094e08264da8004febb557c5f1b4f58af015853231c773a30fd94bd037eaaf261d82394dc601083b1df716ad1cb09187afad5501628fdb04d3
      languageName: node
      linkType: hard
    
    "@jupyterlab/codeeditor@npm:^4.5.7":
      version: 4.5.7
      resolution: "@jupyterlab/codeeditor@npm:4.5.7"
      dependencies:
        "@codemirror/state": ^6.5.4
        "@jupyter/ydoc": ^3.1.0
        "@jupyterlab/apputils": ^4.6.7
        "@jupyterlab/coreutils": ^6.5.7
        "@jupyterlab/nbformat": ^4.5.7
        "@jupyterlab/observables": ^5.5.7
        "@jupyterlab/statusbar": ^4.5.7
        "@jupyterlab/translation": ^4.5.7
        "@jupyterlab/ui-components": ^4.5.7
        "@lumino/coreutils": ^2.2.2
        "@lumino/disposable": ^2.1.5
        "@lumino/dragdrop": ^2.1.8
        "@lumino/messaging": ^2.0.4
        "@lumino/signaling": ^2.1.5
        "@lumino/widgets": ^2.7.5
        react: ^18.2.0
      checksum: 4f15f95e08caa9296203eb7971f17c0b515907ab66411b3882f05c4da8fa9ff03a156a34bf49ebf9e5775dcec3ebd08b75331bffc08ffd4a983eb05f0060b4c4
      languageName: node
      linkType: hard
    
    "@jupyterlab/codemirror@npm:^4.5.7":
      version: 4.5.7
      resolution: "@jupyterlab/codemirror@npm:4.5.7"
      dependencies:
        "@codemirror/autocomplete": ^6.20.0
        "@codemirror/commands": ^6.10.2
        "@codemirror/lang-cpp": ^6.0.3
        "@codemirror/lang-css": ^6.3.1
        "@codemirror/lang-html": ^6.4.11
        "@codemirror/lang-java": ^6.0.2
        "@codemirror/lang-javascript": ^6.2.4
        "@codemirror/lang-json": ^6.0.2
        "@codemirror/lang-markdown": ^6.5.0
        "@codemirror/lang-php": ^6.0.2
        "@codemirror/lang-python": ^6.2.1
        "@codemirror/lang-rust": ^6.0.2
        "@codemirror/lang-sql": ^6.10.0
        "@codemirror/lang-wast": ^6.0.2
        "@codemirror/lang-xml": ^6.1.0
        "@codemirror/language": ^6.12.1
        "@codemirror/legacy-modes": ^6.5.2
        "@codemirror/search": ^6.6.0
        "@codemirror/state": ^6.5.4
        "@codemirror/view": ^6.39.14
        "@jupyter/ydoc": ^3.1.0
        "@jupyterlab/codeeditor": ^4.5.7
        "@jupyterlab/coreutils": ^6.5.7
        "@jupyterlab/documentsearch": ^4.5.7
        "@jupyterlab/nbformat": ^4.5.7
        "@jupyterlab/translation": ^4.5.7
        "@lezer/common": ^1.2.1
        "@lezer/generator": ^1.7.0
        "@lezer/highlight": ^1.2.0
        "@lezer/markdown": ^1.3.0
        "@lumino/coreutils": ^2.2.2
        "@lumino/disposable": ^2.1.5
        "@lumino/signaling": ^2.1.5
        yjs: ^13.5.40
      checksum: 4e9b14ff700ab57936ef293870ef3b5d0556fb45eb05b70cb4c68b0f27bc3f8b1a0e84595c20caa858c2c7b6393a0a227e0d8ff934a6379313a9449b772bbc40
      languageName: node
      linkType: hard
    
    "@jupyterlab/console@npm:^4.5.7":
      version: 4.5.7
      resolution: "@jupyterlab/console@npm:4.5.7"
      dependencies:
        "@jupyter/ydoc": ^3.1.0
        "@jupyterlab/apputils": ^4.6.7
        "@jupyterlab/cells": ^4.5.7
        "@jupyterlab/codeeditor": ^4.5.7
        "@jupyterlab/codemirror": ^4.5.7
        "@jupyterlab/coreutils": ^6.5.7
        "@jupyterlab/nbformat": ^4.5.7
        "@jupyterlab/observables": ^5.5.7
        "@jupyterlab/rendermime": ^4.5.7
        "@jupyterlab/services": ^7.5.7
        "@jupyterlab/translation": ^4.5.7
        "@jupyterlab/ui-components": ^4.5.7
        "@lumino/coreutils": ^2.2.2
        "@lumino/disposable": ^2.1.5
        "@lumino/dragdrop": ^2.1.8
        "@lumino/messaging": ^2.0.4
        "@lumino/signaling": ^2.1.5
        "@lumino/widgets": ^2.7.5
      checksum: ab9cd5efa42573f8373e0fa1205231b883d5ccf703bcf61e1dcc33680cc127abca43f3736938f2a6c777aedb41d24bf651ac302cea2eec8c1acc7c34311a3bcd
      languageName: node
      linkType: hard
    
    "@jupyterlab/coreutils@npm:^6.5.7":
      version: 6.5.7
      resolution: "@jupyterlab/coreutils@npm:6.5.7"
      dependencies:
        "@lumino/coreutils": ^2.2.2
        "@lumino/disposable": ^2.1.5
        "@lumino/signaling": ^2.1.5
        minimist: ~1.2.0
        path-browserify: ^1.0.0
        url-parse: ~1.5.4
      checksum: cf77491e064dfc8d4b0e3eb8bac80d755adf23de5f43e5a839294ba730be521ef81bfe884f995b366914750d99ed0d59bbed063980ae4f44886167045d7fcbe2
      languageName: node
      linkType: hard
    
    "@jupyterlab/docmanager@npm:^4.5.7":
      version: 4.5.7
      resolution: "@jupyterlab/docmanager@npm:4.5.7"
      dependencies:
        "@jupyterlab/apputils": ^4.6.7
        "@jupyterlab/coreutils": ^6.5.7
        "@jupyterlab/docregistry": ^4.5.7
        "@jupyterlab/rendermime": ^4.5.7
        "@jupyterlab/services": ^7.5.7
        "@jupyterlab/statedb": ^4.5.7
        "@jupyterlab/statusbar": ^4.5.7
        "@jupyterlab/translation": ^4.5.7
        "@jupyterlab/ui-components": ^4.5.7
        "@lumino/algorithm": ^2.0.4
        "@lumino/coreutils": ^2.2.2
        "@lumino/disposable": ^2.1.5
        "@lumino/messaging": ^2.0.4
        "@lumino/polling": ^2.1.5
        "@lumino/properties": ^2.0.4
        "@lumino/signaling": ^2.1.5
        "@lumino/widgets": ^2.7.5
        react: ^18.2.0
      checksum: a32f377be4b23abc001dd2c669feb7f1ec2dc2e146ff764613a1cabb0780addb9a6eebd9e05fa75057b50991f62dfd30646ba60d92e90360a3d0382635f12c1a
      languageName: node
      linkType: hard
    
    "@jupyterlab/docregistry@npm:^4.5.7":
      version: 4.5.7
      resolution: "@jupyterlab/docregistry@npm:4.5.7"
      dependencies:
        "@jupyter/ydoc": ^3.1.0
        "@jupyterlab/apputils": ^4.6.7
        "@jupyterlab/codeeditor": ^4.5.7
        "@jupyterlab/coreutils": ^6.5.7
        "@jupyterlab/observables": ^5.5.7
        "@jupyterlab/rendermime": ^4.5.7
        "@jupyterlab/rendermime-interfaces": ^3.13.7
        "@jupyterlab/services": ^7.5.7
        "@jupyterlab/translation": ^4.5.7
        "@jupyterlab/ui-components": ^4.5.7
        "@lumino/algorithm": ^2.0.4
        "@lumino/coreutils": ^2.2.2
        "@lumino/disposable": ^2.1.5
        "@lumino/messaging": ^2.0.4
        "@lumino/properties": ^2.0.4
        "@lumino/signaling": ^2.1.5
        "@lumino/widgets": ^2.7.5
        react: ^18.2.0
      checksum: e72eb4c02383ac5be8486db5c7a5c90eda2b70c66d4b014b132d5d9e19f3a472389b0083b98570424534cf1163cadc2e1b11d86f513a470ef61f284162301a0f
      languageName: node
      linkType: hard
    
    "@jupyterlab/documentsearch@npm:^4.5.7":
      version: 4.5.7
      resolution: "@jupyterlab/documentsearch@npm:4.5.7"
      dependencies:
        "@jupyterlab/apputils": ^4.6.7
        "@jupyterlab/translation": ^4.5.7
        "@jupyterlab/ui-components": ^4.5.7
        "@lumino/commands": ^2.3.3
        "@lumino/coreutils": ^2.2.2
        "@lumino/disposable": ^2.1.5
        "@lumino/messaging": ^2.0.4
        "@lumino/polling": ^2.1.5
        "@lumino/signaling": ^2.1.5
        "@lumino/widgets": ^2.7.5
        react: ^18.2.0
      checksum: a8418cee870a5ff5540d37e5bf042fccdebcce9adbc63f29723186b2c4d65decd1a1a4861e26835ad2712c36b951b04d88e9ca4b6dc1348e93f75563c38f26ed
      languageName: node
      linkType: hard
    
    "@jupyterlab/filebrowser@npm:^4.5.7":
      version: 4.5.7
      resolution: "@jupyterlab/filebrowser@npm:4.5.7"
      dependencies:
        "@jupyterlab/apputils": ^4.6.7
        "@jupyterlab/coreutils": ^6.5.7
        "@jupyterlab/docmanager": ^4.5.7
        "@jupyterlab/docregistry": ^4.5.7
        "@jupyterlab/services": ^7.5.7
        "@jupyterlab/statedb": ^4.5.7
        "@jupyterlab/statusbar": ^4.5.7
        "@jupyterlab/translation": ^4.5.7
        "@jupyterlab/ui-components": ^4.5.7
        "@lumino/algorithm": ^2.0.4
        "@lumino/coreutils": ^2.2.2
        "@lumino/disposable": ^2.1.5
        "@lumino/domutils": ^2.0.4
        "@lumino/dragdrop": ^2.1.8
        "@lumino/messaging": ^2.0.4
        "@lumino/polling": ^2.1.5
        "@lumino/signaling": ^2.1.5
        "@lumino/virtualdom": ^2.0.4
        "@lumino/widgets": ^2.7.5
        jest-environment-jsdom: ^29.3.0
        react: ^18.2.0
      checksum: 6077f61f0f109543151026077da9e92183b7d45524b39848639aefdf50fb8b92a62a5eb3b2a3b30c56326ec7cbc93453b39847246039d6df28a2c7f3422b5095
      languageName: node
      linkType: hard
    
    "@jupyterlab/lsp@npm:^4.5.7":
      version: 4.5.7
      resolution: "@jupyterlab/lsp@npm:4.5.7"
      dependencies:
        "@jupyterlab/apputils": ^4.6.7
        "@jupyterlab/codeeditor": ^4.5.7
        "@jupyterlab/codemirror": ^4.5.7
        "@jupyterlab/coreutils": ^6.5.7
        "@jupyterlab/docregistry": ^4.5.7
        "@jupyterlab/services": ^7.5.7
        "@jupyterlab/translation": ^4.5.7
        "@lumino/coreutils": ^2.2.2
        "@lumino/disposable": ^2.1.5
        "@lumino/signaling": ^2.1.5
        "@lumino/widgets": ^2.7.5
        lodash.mergewith: ^4.6.1
        vscode-jsonrpc: ^6.0.0
        vscode-languageserver-protocol: ^3.17.0
        vscode-ws-jsonrpc: ~1.0.2
      checksum: 15c7b84bcb0cb5574f0977db6957c61c27c495394bc53b8438adc2674eaf879899b8086d816b869b63a329970476eb1f0f86d8ce7b01f2459f6df52d8e46cac3
      languageName: node
      linkType: hard
    
    "@jupyterlab/markedparser-extension@npm:^4.5.7":
      version: 4.5.7
      resolution: "@jupyterlab/markedparser-extension@npm:4.5.7"
      dependencies:
        "@jupyterlab/application": ^4.5.7
        "@jupyterlab/codemirror": ^4.5.7
        "@jupyterlab/coreutils": ^6.5.7
        "@jupyterlab/mermaid": ^4.5.7
        "@jupyterlab/rendermime": ^4.5.7
        "@lumino/coreutils": ^2.2.2
        marked: ^17.0.2
        marked-gfm-heading-id: ^4.1.3
        marked-mangle: ^1.1.12
      checksum: 138fbe69ab935a651caa4a532a74a744be64987cc90657bec75b88610b746aea00fcf6200d1e8fb67693d154fa854f7f1f296423aa7c6a60dbc7d83f312a66e1
      languageName: node
      linkType: hard
    
    "@jupyterlab/mermaid@npm:^4.5.7":
      version: 4.5.7
      resolution: "@jupyterlab/mermaid@npm:4.5.7"
      dependencies:
        "@jupyterlab/apputils": ^4.6.7
        "@jupyterlab/coreutils": ^6.5.7
        "@jupyterlab/rendermime-interfaces": ^3.13.7
        "@lumino/coreutils": ^2.2.2
        "@lumino/widgets": ^2.7.5
        "@mermaid-js/layout-elk": ^0.2.0
        mermaid: ^11.12.3
      checksum: 317b3588f08eda56fe6b46a5df3f193dacd83a31b49082d339ccfbff8eb536079186d890260a2b67e5a011f5e619eebb56a8e13f62d86d00eb2d2806aba9994c
      languageName: node
      linkType: hard
    
    "@jupyterlab/nbformat@npm:^3.0.0 || ^4.0.0-alpha.21 || ^4.0.0, @jupyterlab/nbformat@npm:^4.5.7":
      version: 4.5.7
      resolution: "@jupyterlab/nbformat@npm:4.5.7"
      dependencies:
        "@lumino/coreutils": ^2.2.2
      checksum: 7b75969953654c490b19b7ca5b2218169f39012e1136f9ee943defe8e8b11202cb00fc65e5e3ba3fceee8781b8fec4bda978f8f39d31ced75cf9d954b2060048
      languageName: node
      linkType: hard
    
    "@jupyterlab/notebook@npm:^4.5.7":
      version: 4.5.7
      resolution: "@jupyterlab/notebook@npm:4.5.7"
      dependencies:
        "@jupyter/ydoc": ^3.1.0
        "@jupyterlab/apputils": ^4.6.7
        "@jupyterlab/cells": ^4.5.7
        "@jupyterlab/codeeditor": ^4.5.7
        "@jupyterlab/codemirror": ^4.5.7
        "@jupyterlab/coreutils": ^6.5.7
        "@jupyterlab/docregistry": ^4.5.7
        "@jupyterlab/documentsearch": ^4.5.7
        "@jupyterlab/lsp": ^4.5.7
        "@jupyterlab/markedparser-extension": ^4.5.7
        "@jupyterlab/nbformat": ^4.5.7
        "@jupyterlab/observables": ^5.5.7
        "@jupyterlab/rendermime": ^4.5.7
        "@jupyterlab/services": ^7.5.7
        "@jupyterlab/settingregistry": ^4.5.7
        "@jupyterlab/statusbar": ^4.5.7
        "@jupyterlab/toc": ^6.5.7
        "@jupyterlab/translation": ^4.5.7
        "@jupyterlab/ui-components": ^4.5.7
        "@lumino/algorithm": ^2.0.4
        "@lumino/coreutils": ^2.2.2
        "@lumino/disposable": ^2.1.5
        "@lumino/domutils": ^2.0.4
        "@lumino/dragdrop": ^2.1.8
        "@lumino/messaging": ^2.0.4
        "@lumino/polling": ^2.1.5
        "@lumino/properties": ^2.0.4
        "@lumino/signaling": ^2.1.5
        "@lumino/virtualdom": ^2.0.4
        "@lumino/widgets": ^2.7.5
        react: ^18.2.0
      checksum: 33f9e9e9544cb1346cd452745bca8379b439ae6dd723f3ae15cb5157349f2d22c9c7af8f2c92eced777ccceab505a2e93ab180a91c49dc4deb7c1d09bdfcd106
      languageName: node
      linkType: hard
    
    "@jupyterlab/observables@npm:^5.5.7":
      version: 5.5.7
      resolution: "@jupyterlab/observables@npm:5.5.7"
      dependencies:
        "@lumino/algorithm": ^2.0.4
        "@lumino/coreutils": ^2.2.2
        "@lumino/disposable": ^2.1.5
        "@lumino/messaging": ^2.0.4
        "@lumino/signaling": ^2.1.5
      checksum: 2693f75edc23c7f9e1cd30c21611af9c3678c079b1cfa0c2da9b9286c4631c8559f02cc8fc02036ab8d66dd39df33b9347a8f2761c3f34b74d1db03f57a5aaa7
      languageName: node
      linkType: hard
    
    "@jupyterlab/outputarea@npm:^4.5.7":
      version: 4.5.7
      resolution: "@jupyterlab/outputarea@npm:4.5.7"
      dependencies:
        "@jupyterlab/apputils": ^4.6.7
        "@jupyterlab/nbformat": ^4.5.7
        "@jupyterlab/observables": ^5.5.7
        "@jupyterlab/rendermime": ^4.5.7
        "@jupyterlab/rendermime-interfaces": ^3.13.7
        "@jupyterlab/services": ^7.5.7
        "@jupyterlab/translation": ^4.5.7
        "@lumino/algorithm": ^2.0.4
        "@lumino/coreutils": ^2.2.2
        "@lumino/disposable": ^2.1.5
        "@lumino/messaging": ^2.0.4
        "@lumino/properties": ^2.0.4
        "@lumino/signaling": ^2.1.5
        "@lumino/widgets": ^2.7.5
      checksum: 626b11776d28d05369746b17105430209689aaed7fb711a84e1164b34d489bf8a3186db1dfdd3e3fdb579cb743012d295ef7b3dbd7cb440c547abd7b7df93f42
      languageName: node
      linkType: hard
    
    "@jupyterlab/rendermime-interfaces@npm:^3.13.7":
      version: 3.13.7
      resolution: "@jupyterlab/rendermime-interfaces@npm:3.13.7"
      dependencies:
        "@lumino/coreutils": ^1.11.0 || ^2.2.2
        "@lumino/widgets": ^1.37.2 || ^2.7.5
      checksum: 0dd31f82b3a8f2eac62fe7a0a5fd406793b518c4e040b17e695bf311c328a9692cfb00e0b630c0af6b3642c9039ee15ccfe3858065cdf59143cb69f2b715bd6e
      languageName: node
      linkType: hard
    
    "@jupyterlab/rendermime@npm:^4.5.7":
      version: 4.5.7
      resolution: "@jupyterlab/rendermime@npm:4.5.7"
      dependencies:
        "@jupyterlab/apputils": ^4.6.7
        "@jupyterlab/coreutils": ^6.5.7
        "@jupyterlab/nbformat": ^4.5.7
        "@jupyterlab/observables": ^5.5.7
        "@jupyterlab/rendermime-interfaces": ^3.13.7
        "@jupyterlab/services": ^7.5.7
        "@jupyterlab/translation": ^4.5.7
        "@lumino/coreutils": ^2.2.2
        "@lumino/messaging": ^2.0.4
        "@lumino/signaling": ^2.1.5
        "@lumino/widgets": ^2.7.5
        lodash.escape: ^4.0.1
      checksum: a37a75a623a1825a3189488f347a2d3ed83127c1d79b7119ce957e4bc93edbdb4a0f2ed7b05c1e2a831a7dc5ab26414ad0b704556efa4349e1c670f176e181e7
      languageName: node
      linkType: hard
    
    "@jupyterlab/services@npm:^7.5.7":
      version: 7.5.7
      resolution: "@jupyterlab/services@npm:7.5.7"
      dependencies:
        "@jupyter/ydoc": ^3.1.0
        "@jupyterlab/coreutils": ^6.5.7
        "@jupyterlab/nbformat": ^4.5.7
        "@jupyterlab/settingregistry": ^4.5.7
        "@jupyterlab/statedb": ^4.5.7
        "@lumino/coreutils": ^2.2.2
        "@lumino/disposable": ^2.1.5
        "@lumino/polling": ^2.1.5
        "@lumino/properties": ^2.0.4
        "@lumino/signaling": ^2.1.5
        ws: ^8.11.0
      checksum: a1d7ea7d90856d0edd3c207885cad04b55fee3c6261e9bd16a1499e0ce574e3753c88a34be9e13ee5f6f826995d14e264615874f2cdb8ddd5e2ec3f8fe66a4a5
      languageName: node
      linkType: hard
    
    "@jupyterlab/settingregistry@npm:^4.5.7":
      version: 4.5.7
      resolution: "@jupyterlab/settingregistry@npm:4.5.7"
      dependencies:
        "@jupyterlab/nbformat": ^4.5.7
        "@jupyterlab/statedb": ^4.5.7
        "@lumino/commands": ^2.3.3
        "@lumino/coreutils": ^2.2.2
        "@lumino/disposable": ^2.1.5
        "@lumino/signaling": ^2.1.5
        "@rjsf/utils": ^5.13.4
        ajv: ^8.12.0
        json5: ^2.2.3
      peerDependencies:
        react: ">=16"
      checksum: 4114ea3a0f95645bf1dd189a6d807d3c1185fee9f3ef7458cb297840d9cdd969157ff3139e087e6055eacfa962088c218c47f07b8c4e6e49d595941c39fa19e5
      languageName: node
      linkType: hard
    
    "@jupyterlab/statedb@npm:^4.5.7":
      version: 4.5.7
      resolution: "@jupyterlab/statedb@npm:4.5.7"
      dependencies:
        "@lumino/commands": ^2.3.3
        "@lumino/coreutils": ^2.2.2
        "@lumino/disposable": ^2.1.5
        "@lumino/properties": ^2.0.4
        "@lumino/signaling": ^2.1.5
      checksum: 0560e22f83c526b237551cd520deecc608ce16b04eca6a7cf87e5c41738e9513b3ff9eb0c1a678062c1d3824e0c6fef50608ea5e53bd5970421acc322384c751
      languageName: node
      linkType: hard
    
    "@jupyterlab/statusbar@npm:^4.5.7":
      version: 4.5.7
      resolution: "@jupyterlab/statusbar@npm:4.5.7"
      dependencies:
        "@jupyterlab/ui-components": ^4.5.7
        "@lumino/algorithm": ^2.0.4
        "@lumino/coreutils": ^2.2.2
        "@lumino/disposable": ^2.1.5
        "@lumino/messaging": ^2.0.4
        "@lumino/signaling": ^2.1.5
        "@lumino/widgets": ^2.7.5
        react: ^18.2.0
      checksum: 3a3bffb3c1f6b7ab6bf5b70f287ac8439b083a71caeed35439dffa28d54b998cb75c6e19ce9fd06de40bee469c79627f114fb6e30be54af8660a546a562936ba
      languageName: node
      linkType: hard
    
    "@jupyterlab/toc@npm:^6.5.7":
      version: 6.5.7
      resolution: "@jupyterlab/toc@npm:6.5.7"
      dependencies:
        "@jupyter/react-components": ^0.16.6
        "@jupyterlab/apputils": ^4.6.7
        "@jupyterlab/coreutils": ^6.5.7
        "@jupyterlab/docregistry": ^4.5.7
        "@jupyterlab/observables": ^5.5.7
        "@jupyterlab/rendermime": ^4.5.7
        "@jupyterlab/rendermime-interfaces": ^3.13.7
        "@jupyterlab/translation": ^4.5.7
        "@jupyterlab/ui-components": ^4.5.7
        "@lumino/coreutils": ^2.2.2
        "@lumino/disposable": ^2.1.5
        "@lumino/messaging": ^2.0.4
        "@lumino/signaling": ^2.1.5
        "@lumino/widgets": ^2.7.5
        react: ^18.2.0
      checksum: df7332cff3f7978175496a2a03ec58af0aa88ce8a56221d7fdb4d06d452a50e52a80bbbd11d1e011ca73d3fe0f706255680d905f8acf16be7ac8581e95d10fcf
      languageName: node
      linkType: hard
    
    "@jupyterlab/translation@npm:^4.5.7":
      version: 4.5.7
      resolution: "@jupyterlab/translation@npm:4.5.7"
      dependencies:
        "@jupyterlab/coreutils": ^6.5.7
        "@jupyterlab/rendermime-interfaces": ^3.13.7
        "@jupyterlab/services": ^7.5.7
        "@jupyterlab/statedb": ^4.5.7
        "@lumino/coreutils": ^2.2.2
      checksum: 8eeb51d36de3012c7d6a3beb2676e544520b8dbfa9fb8efb09572fad5a61d0c92bf59f0d710d03e4fb101fc236a8e797ebcbd8c212484a938c830fd425054872
      languageName: node
      linkType: hard
    
    "@jupyterlab/ui-components@npm:^4.5.7":
      version: 4.5.7
      resolution: "@jupyterlab/ui-components@npm:4.5.7"
      dependencies:
        "@jupyter/react-components": ^0.16.6
        "@jupyter/web-components": ^0.16.6
        "@jupyterlab/coreutils": ^6.5.7
        "@jupyterlab/observables": ^5.5.7
        "@jupyterlab/rendermime-interfaces": ^3.13.7
        "@jupyterlab/translation": ^4.5.7
        "@lumino/algorithm": ^2.0.4
        "@lumino/commands": ^2.3.3
        "@lumino/coreutils": ^2.2.2
        "@lumino/disposable": ^2.1.5
        "@lumino/messaging": ^2.0.4
        "@lumino/polling": ^2.1.5
        "@lumino/properties": ^2.0.4
        "@lumino/signaling": ^2.1.5
        "@lumino/virtualdom": ^2.0.4
        "@lumino/widgets": ^2.7.5
        "@rjsf/core": ^5.13.4
        "@rjsf/utils": ^5.13.4
        react: ^18.2.0
        react-dom: ^18.2.0
        typestyle: ^2.0.4
      peerDependencies:
        react: ^18.2.0
      checksum: 675ae0f415de19abd1376a4be696dc20024d17dfad9c09ed7d903cb26a6ea55c688f188a9d034c0f566c053e9c70321180c01304153a498eb8b665af38531fbd
      languageName: node
      linkType: hard
    
    "@lezer/common@npm:^1.0.0, @lezer/common@npm:^1.0.2, @lezer/common@npm:^1.1.0, @lezer/common@npm:^1.2.0, @lezer/common@npm:^1.2.1, @lezer/common@npm:^1.3.0, @lezer/common@npm:^1.5.0":
      version: 1.5.2
      resolution: "@lezer/common@npm:1.5.2"
      checksum: 765b56559a89b44ba6844d4c68dabc5923457f3cd61b4498ec5dbb7a1156644db03495a5fee2896193074a49b3a0c009c7426f93a69343957055a32bba1af372
      languageName: node
      linkType: hard
    
    "@lezer/cpp@npm:^1.0.0":
      version: 1.1.5
      resolution: "@lezer/cpp@npm:1.1.5"
      dependencies:
        "@lezer/common": ^1.2.0
        "@lezer/highlight": ^1.0.0
        "@lezer/lr": ^1.0.0
      checksum: e077f19d29f55794d05307262f1852c27003a63b1bddf5cbb4d211d3d58d982f327d9073f81302c5974040de4cf9b9c17aa1d828fe2f020b0891c3aeca3f5174
      languageName: node
      linkType: hard
    
    "@lezer/css@npm:^1.1.0, @lezer/css@npm:^1.1.7":
      version: 1.3.3
      resolution: "@lezer/css@npm:1.3.3"
      dependencies:
        "@lezer/common": ^1.2.0
        "@lezer/highlight": ^1.0.0
        "@lezer/lr": ^1.3.0
      checksum: a4bd7552d703be8cc08bf6092cc7c5870e00db78bbb8bcfc4c8aa1b54b919fb013924b332b3bf72c2263296a2df3af17e4dac7378000bf07ddc508d3ee7c311a
      languageName: node
      linkType: hard
    
    "@lezer/generator@npm:^1.7.0":
      version: 1.8.0
      resolution: "@lezer/generator@npm:1.8.0"
      dependencies:
        "@lezer/common": ^1.1.0
        "@lezer/lr": ^1.3.0
      bin:
        lezer-generator: src/lezer-generator.cjs
      checksum: 2c4e6550bd282efd190100887d107d9e3e4cd87ba47cdb5488f84919f35b2cbb2fb845798017204f2fb3bb5dad6b6300fa45612731f8122960bd7a5346c785a5
      languageName: node
      linkType: hard
    
    "@lezer/highlight@npm:^1.0.0, @lezer/highlight@npm:^1.1.3, @lezer/highlight@npm:^1.2.0":
      version: 1.2.3
      resolution: "@lezer/highlight@npm:1.2.3"
      dependencies:
        "@lezer/common": ^1.3.0
      checksum: 13b0d22d5dc2f3005baa7eed229bba8a61cee4ddeeb9e6a8cdff25fa3101db779c00b4c5d8f493ab2d60b296945a6cc4fe7e4846fece27b3fd2c2a1bfef79dad
      languageName: node
      linkType: hard
    
    "@lezer/html@npm:^1.3.12":
      version: 1.3.13
      resolution: "@lezer/html@npm:1.3.13"
      dependencies:
        "@lezer/common": ^1.2.0
        "@lezer/highlight": ^1.0.0
        "@lezer/lr": ^1.0.0
      checksum: ac40bd187d724990c597ceb8f189ad2b0e1d310cb7652b3766c491d7f1e27a465cd0b1b2301c808b02698c6e2a106d939ba1a623702b1c98ae70254335d2b708
      languageName: node
      linkType: hard
    
    "@lezer/java@npm:^1.0.0":
      version: 1.1.3
      resolution: "@lezer/java@npm:1.1.3"
      dependencies:
        "@lezer/common": ^1.2.0
        "@lezer/highlight": ^1.0.0
        "@lezer/lr": ^1.0.0
      checksum: a4b8a348ab08465cff6e54ec80e397d2629e0911decb4c6a47fd56cd74f6978fae478879b15a2e239203b9e53aef41ecaeba675f8013e290165249abdab7da74
      languageName: node
      linkType: hard
    
    "@lezer/javascript@npm:^1.0.0":
      version: 1.5.4
      resolution: "@lezer/javascript@npm:1.5.4"
      dependencies:
        "@lezer/common": ^1.2.0
        "@lezer/highlight": ^1.1.3
        "@lezer/lr": ^1.3.0
      checksum: 0b126907d5850fb2b29d199af67fc9c4864141f4d46b222878609dffb80f2a012028d9b3495d992f30d73fbc7ffe57ed2e35ff9cc1807cb512b807a51d4d0a03
      languageName: node
      linkType: hard
    
    "@lezer/json@npm:^1.0.0":
      version: 1.0.3
      resolution: "@lezer/json@npm:1.0.3"
      dependencies:
        "@lezer/common": ^1.2.0
        "@lezer/highlight": ^1.0.0
        "@lezer/lr": ^1.0.0
      checksum: 48e7b945fdfa2b5b6f862e27bc31f3991cba93f18df7fed0059b25f119b64dedd50bbc709d279e16e2b3eee10e7758d7d80c6d98d21bc15c284809d268837897
      languageName: node
      linkType: hard
    
    "@lezer/lr@npm:^1.0.0, @lezer/lr@npm:^1.1.0, @lezer/lr@npm:^1.3.0":
      version: 1.4.10
      resolution: "@lezer/lr@npm:1.4.10"
      dependencies:
        "@lezer/common": ^1.0.0
      checksum: 8689f4d6f14c4fe930f7adf264b0a2a62b78df39195f6547a52059e8dc84f4246177c122a6010cfbb9b5d71e8158cef705493841c7cee03ac2609d9dcf614838
      languageName: node
      linkType: hard
    
    "@lezer/markdown@npm:^1.0.0, @lezer/markdown@npm:^1.3.0":
      version: 1.6.3
      resolution: "@lezer/markdown@npm:1.6.3"
      dependencies:
        "@lezer/common": ^1.5.0
        "@lezer/highlight": ^1.0.0
      checksum: c4e692a12e2116c31b173fa277a8cf680f6c59535f66a4bac1ac802ddc98ae0cd4beb87edcb77705d10c7de96520318a45b5a833ed1eae5660109f97604ac618
      languageName: node
      linkType: hard
    
    "@lezer/php@npm:^1.0.0":
      version: 1.0.5
      resolution: "@lezer/php@npm:1.0.5"
      dependencies:
        "@lezer/common": ^1.2.0
        "@lezer/highlight": ^1.0.0
        "@lezer/lr": ^1.1.0
      checksum: 68375ddc7b8c37165e454d3c5d17c7da9de60866aa0ffa137a76d0c1eadacd1fdeefa793a053e48407d762bc75abd10c828e7d851f18a7fbbcd9b94bd506ae50
      languageName: node
      linkType: hard
    
    "@lezer/python@npm:^1.1.4":
      version: 1.1.18
      resolution: "@lezer/python@npm:1.1.18"
      dependencies:
        "@lezer/common": ^1.2.0
        "@lezer/highlight": ^1.0.0
        "@lezer/lr": ^1.0.0
      checksum: 774d5bee83106b586159e3330452e9a3a72706d98d77929c44480a653ed560a80db2aa8f2f270858d176ac8e7187f0c585109fdac579deca115173dcaee13f9f
      languageName: node
      linkType: hard
    
    "@lezer/rust@npm:^1.0.0":
      version: 1.0.2
      resolution: "@lezer/rust@npm:1.0.2"
      dependencies:
        "@lezer/common": ^1.2.0
        "@lezer/highlight": ^1.0.0
        "@lezer/lr": ^1.0.0
      checksum: fc5e97852b42beeb44a0ebe316dc64e3cc49ff481c22e3e67d6003fc4a5c257fcd94959cfcc76cd154fa172db9b3b4b28de5c09f10550d6e5f14869ddc274e5b
      languageName: node
      linkType: hard
    
    "@lezer/xml@npm:^1.0.0":
      version: 1.0.6
      resolution: "@lezer/xml@npm:1.0.6"
      dependencies:
        "@lezer/common": ^1.2.0
        "@lezer/highlight": ^1.0.0
        "@lezer/lr": ^1.0.0
      checksum: 71217d49b9207bd19d69ae98ad406d0c7ff395b6ad118528f3f81455f973e01597cac1ffa2741f2c6739d4ede17edb49573eaa3246f8f5a6da4d97dcb940309d
      languageName: node
      linkType: hard
    
    "@lumino/algorithm@npm:^2.0.4":
      version: 2.0.4
      resolution: "@lumino/algorithm@npm:2.0.4"
      checksum: ec1532fc294666fb483dd35082ec50ad979d0e9e1daf7a951ca045fd36a1ae88c7c73bf09c1aafed1ea826319f038ec2ed7058f58d214d5ed9f6a4cf61f232e8
      languageName: node
      linkType: hard
    
    "@lumino/application@npm:^2.4.8":
      version: 2.4.8
      resolution: "@lumino/application@npm:2.4.8"
      dependencies:
        "@lumino/commands": ^2.3.3
        "@lumino/coreutils": ^2.2.2
        "@lumino/widgets": ^2.7.5
      checksum: 19f607bf6ac6f2b1d3c6a1436b4f396c23fc0bb109eb3ce1b0e1dd8c7858b81781a2b31f865fd246503f69220bcefa0d2c31f259afec826c183366164acee86b
      languageName: node
      linkType: hard
    
    "@lumino/collections@npm:^2.0.4":
      version: 2.0.4
      resolution: "@lumino/collections@npm:2.0.4"
      dependencies:
        "@lumino/algorithm": ^2.0.4
      checksum: ee8dfdcde3815ddb72d977705e8295ee9500a44697717a86fed644dd810bce8d8ad448659eec02dafeee1b1b3a74fc851224481933c385a812055793d34224f1
      languageName: node
      linkType: hard
    
    "@lumino/commands@npm:^2.3.3":
      version: 2.3.3
      resolution: "@lumino/commands@npm:2.3.3"
      dependencies:
        "@lumino/algorithm": ^2.0.4
        "@lumino/coreutils": ^2.2.2
        "@lumino/disposable": ^2.1.5
        "@lumino/domutils": ^2.0.4
        "@lumino/keyboard": ^2.0.4
        "@lumino/signaling": ^2.1.5
        "@lumino/virtualdom": ^2.0.4
      checksum: 4f44b180b7ce4580647fb86a61c00b8638ce9d538a7222feb85073f691f29b2f942b79a71f11e25d503c6d4ad3e8becec67cb8829710b34e04676f41d3505937
      languageName: node
      linkType: hard
    
    "@lumino/coreutils@npm:^1.11.0 || ^2.0.0, @lumino/coreutils@npm:^1.11.0 || ^2.2.2, @lumino/coreutils@npm:^2.2.2":
      version: 2.2.2
      resolution: "@lumino/coreutils@npm:2.2.2"
      dependencies:
        "@lumino/algorithm": ^2.0.4
      checksum: ec4f7eedcd8e27c43f541bcf9d571fc69e82959879c80a50c7c6fb803d923834399e3a52e6c044a898426e220168602f0c4ca702c9683354510f5393fe3b160a
      languageName: node
      linkType: hard
    
    "@lumino/disposable@npm:^1.10.0 || ^2.0.0, @lumino/disposable@npm:^2.1.5":
      version: 2.1.5
      resolution: "@lumino/disposable@npm:2.1.5"
      dependencies:
        "@lumino/signaling": ^2.1.5
      checksum: 31b3edd0643dd8d64131379a379c6364ff7a7e1884186d56a6e7b812cc8ee52f38cb43c20e8d45a8a5343a80af4a8180acf62c51f59c9a522349f35c65fe4d29
      languageName: node
      linkType: hard
    
    "@lumino/domutils@npm:^2.0.4":
      version: 2.0.4
      resolution: "@lumino/domutils@npm:2.0.4"
      checksum: 5aacb1e3f597c8dd24fc09c7dabc97c630c293e43afaf7100e59d630bb9379b96b88536a37559cf92102a82364ab80734ccb21eb12811df8ed6ca2662e5cf9f1
      languageName: node
      linkType: hard
    
    "@lumino/dragdrop@npm:^2.1.8":
      version: 2.1.8
      resolution: "@lumino/dragdrop@npm:2.1.8"
      dependencies:
        "@lumino/coreutils": ^2.2.2
        "@lumino/disposable": ^2.1.5
      checksum: 2e772456ce911c6c4941df4213eebeb64265f7ee36f83332ac1abb01bbc1b88b84978616dbc58cf7e8cb053db2018090ad68221bc343acaf1b6dcbbe355e25ab
      languageName: node
      linkType: hard
    
    "@lumino/keyboard@npm:^2.0.4":
      version: 2.0.4
      resolution: "@lumino/keyboard@npm:2.0.4"
      checksum: 550497726ab8a17e9046fe88f74fbf0ae32e2811d9d7138ccefc7758e8cbf22c6705f3aca8415e0419def17939e12b1363268d71aae00e22f6bbbcfaff5faf82
      languageName: node
      linkType: hard
    
    "@lumino/messaging@npm:^2.0.4":
      version: 2.0.4
      resolution: "@lumino/messaging@npm:2.0.4"
      dependencies:
        "@lumino/algorithm": ^2.0.4
        "@lumino/collections": ^2.0.4
      checksum: 08b8ec0fcb21f61a2fa7050d22f94c9c54bf3d310c014a16bea5966320ba760a39bfecc9cd21e1d09ec367805ac0ad8be2466fff15ca1be7536a1077297eb6c7
      languageName: node
      linkType: hard
    
    "@lumino/polling@npm:^2.1.5":
      version: 2.1.5
      resolution: "@lumino/polling@npm:2.1.5"
      dependencies:
        "@lumino/coreutils": ^2.2.2
        "@lumino/disposable": ^2.1.5
        "@lumino/signaling": ^2.1.5
      checksum: 2b510ef4a5ac05470f01281112d1c467ea95f9f783f702d61fe512d8efecda93f360c907eb3e9fd180f507afe79face1d0ca7878a9d844a3e1f588aba7c5a28e
      languageName: node
      linkType: hard
    
    "@lumino/properties@npm:^2.0.4":
      version: 2.0.4
      resolution: "@lumino/properties@npm:2.0.4"
      checksum: f76d03ba0db12d3c83517484e1cd427b49006bf71e5e1bda00ddb1f02ab85a0079e47c715572a809d4102b348422cab15d587285a0fa17e7e91bbd288d9b6112
      languageName: node
      linkType: hard
    
    "@lumino/signaling@npm:^1.10.0 || ^2.0.0, @lumino/signaling@npm:^2.1.5":
      version: 2.1.5
      resolution: "@lumino/signaling@npm:2.1.5"
      dependencies:
        "@lumino/algorithm": ^2.0.4
        "@lumino/coreutils": ^2.2.2
      checksum: ca8fa6f55a28e1dc05ae2a9ab89f34dbbbc4678e891689bfc84ef3a4f85bfdd4abfcff05ff08d6733872bd6808d71138de5fe35692cced6f008d2893b8506d47
      languageName: node
      linkType: hard
    
    "@lumino/virtualdom@npm:^2.0.4":
      version: 2.0.4
      resolution: "@lumino/virtualdom@npm:2.0.4"
      dependencies:
        "@lumino/algorithm": ^2.0.4
      checksum: 2153f31703088a2dc7dc9cd2353f2876ae626839d267be50c0b191c187649b04b8d1596810f6294afc041e183baff5e5e8e9e4958ce8006df2c5c6ced7bbea42
      languageName: node
      linkType: hard
    
    "@lumino/widgets@npm:^1.37.2 || ^2.7.5, @lumino/widgets@npm:^2.7.5":
      version: 2.7.5
      resolution: "@lumino/widgets@npm:2.7.5"
      dependencies:
        "@lumino/algorithm": ^2.0.4
        "@lumino/commands": ^2.3.3
        "@lumino/coreutils": ^2.2.2
        "@lumino/disposable": ^2.1.5
        "@lumino/domutils": ^2.0.4
        "@lumino/dragdrop": ^2.1.8
        "@lumino/keyboard": ^2.0.4
        "@lumino/messaging": ^2.0.4
        "@lumino/properties": ^2.0.4
        "@lumino/signaling": ^2.1.5
        "@lumino/virtualdom": ^2.0.4
      checksum: 0d5ee9a04bca0fe8f48f4f8b486128acc6c67586c5c65c75f7a8c78bfef931b9bdd49ab741883427e0f2375669a5c1821e90a662c81c63b6cc9e8f5c555e2f14
      languageName: node
      linkType: hard
    
    "@marijn/find-cluster-break@npm:^1.0.0":
      version: 1.0.2
      resolution: "@marijn/find-cluster-break@npm:1.0.2"
      checksum: 0d836de25e04d58325813401ef3c2d34caf040da985a5935fcbc9d84e7b47a21bdb15f57d70c2bf0960bd29ed3dbbb1afd00cdd0fc4fafbee7fd0ffe7d508ae1
      languageName: node
      linkType: hard
    
    "@mermaid-js/layout-elk@npm:^0.2.0":
      version: 0.2.1
      resolution: "@mermaid-js/layout-elk@npm:0.2.1"
      dependencies:
        d3: ^7.9.0
        elkjs: ^0.9.3
      peerDependencies:
        mermaid: ^11.0.2
      checksum: f5caaa1618ad273c1e2090dc5ce952789bc3c12fb2d57146a7997148290884cf22e51b552b4a38e995db43ef175a5d46f1710de2e25d14106812f21dc906b1cb
      languageName: node
      linkType: hard
    
    "@mermaid-js/parser@npm:^1.1.1":
      version: 1.1.1
      resolution: "@mermaid-js/parser@npm:1.1.1"
      dependencies:
        "@chevrotain/types": ~11.1.1
      checksum: aba326b660a64817d5151502ba4764d4cd3446719de762efbccf080a56607b247722216514fee2686b332ed406fa0bfef67cc34cb38290e21560d54937d6b326
      languageName: node
      linkType: hard
    
    "@microsoft/fast-colors@npm:^5.3.1":
      version: 5.3.1
      resolution: "@microsoft/fast-colors@npm:5.3.1"
      checksum: ff87f402faadb4b5aeee3d27762566c11807f927cd4012b8bbc7f073ca68de0e2197f95330ff5dfd7038f4b4f0e2f51b11feb64c5d570f5c598d37850a5daf60
      languageName: node
      linkType: hard
    
    "@microsoft/fast-element@npm:^1.12.0, @microsoft/fast-element@npm:^1.14.0":
      version: 1.14.0
      resolution: "@microsoft/fast-element@npm:1.14.0"
      checksum: 58765739492997a5c51f7841cf6f334e2d2c4ad2365db4a228c07df1c89d139b026abf6afc6691ac48066070d3c94d09afdea2929bdca25842f778293e19892d
      languageName: node
      linkType: hard
    
    "@microsoft/fast-foundation@npm:^2.49.4":
      version: 2.50.0
      resolution: "@microsoft/fast-foundation@npm:2.50.0"
      dependencies:
        "@microsoft/fast-element": ^1.14.0
        "@microsoft/fast-web-utilities": ^5.4.1
        tabbable: ^5.2.0
        tslib: ^1.13.0
      checksum: 651501eb8cd5a3e583638f70a4e7c0ad30952fe12adedd5c4c24861515d0aaeec0e83d1f1cd25dece899d2fa1614b415001c461f76bb84b20e1a8e18a3fcf219
      languageName: node
      linkType: hard
    
    "@microsoft/fast-web-utilities@npm:^5.4.1":
      version: 5.4.1
      resolution: "@microsoft/fast-web-utilities@npm:5.4.1"
      dependencies:
        exenv-es6: ^1.1.1
      checksum: 303e87847f962944f474e3716c3eb305668243916ca9e0719e26bb9a32346144bc958d915c103776b3e552cea0f0f6233f839fad66adfdf96a8436b947288ca7
      languageName: node
      linkType: hard
    
    "@pkgr/core@npm:^0.2.9":
      version: 0.2.9
      resolution: "@pkgr/core@npm:0.2.9"
      checksum: bb2fb86977d63f836f8f5b09015d74e6af6488f7a411dcd2bfdca79d76b5a681a9112f41c45bdf88a9069f049718efc6f3900d7f1de66a2ec966068308ae517f
      languageName: node
      linkType: hard
    
    "@rjsf/core@npm:^5.13.4":
      version: 5.24.13
      resolution: "@rjsf/core@npm:5.24.13"
      dependencies:
        lodash: ^4.17.21
        lodash-es: ^4.17.21
        markdown-to-jsx: ^7.4.1
        prop-types: ^15.8.1
      peerDependencies:
        "@rjsf/utils": ^5.24.x
        react: ^16.14.0 || >=17
      checksum: ca48357014bad1e2e64bcce3f1c4a473745c933463db3749f4038143634ca7192a65b1d3194c9f6b999319c4d7ecd6e8244cf5a3f1e23d0500b40f48a0a39c72
      languageName: node
      linkType: hard
    
    "@rjsf/utils@npm:^5.13.4":
      version: 5.24.13
      resolution: "@rjsf/utils@npm:5.24.13"
      dependencies:
        json-schema-merge-allof: ^0.8.1
        jsonpointer: ^5.0.1
        lodash: ^4.17.21
        lodash-es: ^4.17.21
        react-is: ^18.2.0
      peerDependencies:
        react: ^16.14.0 || >=17
      checksum: 40bb315a6e0b2e635dd6998a1ce82ce9fda2c8f57206f952006abc80e48d54790fa4298b167c0fdbc28a5a278573dbdb5bc68ec1da99c49a6b6c45fc7b61cdf5
      languageName: node
      linkType: hard
    
    "@sinclair/typebox@npm:^0.27.8":
      version: 0.27.10
      resolution: "@sinclair/typebox@npm:0.27.10"
      checksum: a5a2265c752c82a8fb3f69a71c18f9673c47605086b0f2c9ce01f49fa819e7c5d7171b38d4a019037ca411417d57e43413ebd46f25a6181a182f89f7f3e42999
      languageName: node
      linkType: hard
    
    "@sinonjs/commons@npm:^3.0.0":
      version: 3.0.1
      resolution: "@sinonjs/commons@npm:3.0.1"
      dependencies:
        type-detect: 4.0.8
      checksum: a7c3e7cc612352f4004873747d9d8b2d4d90b13a6d483f685598c945a70e734e255f1ca5dc49702515533c403b32725defff148177453b3f3915bcb60e9d4601
      languageName: node
      linkType: hard
    
    "@sinonjs/fake-timers@npm:^10.0.2":
      version: 10.3.0
      resolution: "@sinonjs/fake-timers@npm:10.3.0"
      dependencies:
        "@sinonjs/commons": ^3.0.0
      checksum: 614d30cb4d5201550c940945d44c9e0b6d64a888ff2cd5b357f95ad6721070d6b8839cd10e15b76bf5e14af0bcc1d8f9ec00d49a46318f1f669a4bec1d7f3148
      languageName: node
      linkType: hard
    
    "@tootallnate/once@npm:2":
      version: 2.0.1
      resolution: "@tootallnate/once@npm:2.0.1"
      checksum: 487b59b5adb8458dc13394a5aae997bf9705c51fa1e2396c50cd967019d06b273faba3c4d9e7895a996b9e9b055f1c55e53d822e54b3e9c298bcb4f6967cd0d5
      languageName: node
      linkType: hard
    
    "@types/d3-array@npm:*":
      version: 3.2.2
      resolution: "@types/d3-array@npm:3.2.2"
      checksum: 72e8e2abe0911cb431d6f3fe0a1f71b915356b679d4d9c826f52941bb30210c0fe8299dde066b08d9986754c620f031b13b13ab6dfc60d404eceab66a075dd5d
      languageName: node
      linkType: hard
    
    "@types/d3-axis@npm:*":
      version: 3.0.6
      resolution: "@types/d3-axis@npm:3.0.6"
      dependencies:
        "@types/d3-selection": "*"
      checksum: ea1065d9e6d134c04427763603cbe9d549b8b5785b8ae0d002b5b14a362619d5b8f5ee3c2fda8b36b7e5a413cbcd387e1a2d89898b919a9f0cc91ad4e67b5ab5
      languageName: node
      linkType: hard
    
    "@types/d3-brush@npm:*":
      version: 3.0.6
      resolution: "@types/d3-brush@npm:3.0.6"
      dependencies:
        "@types/d3-selection": "*"
      checksum: e5166bc53e5c914b1fed0a6ce55ca14d76ae11c5afd16b724b8ae47989e977c4af02bb07496d1ccd0a77f4ccd9a2ca7345e1d289bcfce16490fe4b39a9e0d170
      languageName: node
      linkType: hard
    
    "@types/d3-chord@npm:*":
      version: 3.0.6
      resolution: "@types/d3-chord@npm:3.0.6"
      checksum: b511cf372ed8a0086d37a715c0d4aca811b614454e1f7c1561fbcd46863beaccdb115d274a7a992a30a8218393fbc3e1fdd7ca6e9d572e729a4570002c327083
      languageName: node
      linkType: hard
    
    "@types/d3-color@npm:*":
      version: 3.1.3
      resolution: "@types/d3-color@npm:3.1.3"
      checksum: 8a0e79a709929502ec4effcee2c786465b9aec51b653ba0b5d05dbfec3e84f418270dd603002d94021885061ff592f614979193bd7a02ad76317f5608560e357
      languageName: node
      linkType: hard
    
    "@types/d3-contour@npm:*":
      version: 3.0.6
      resolution: "@types/d3-contour@npm:3.0.6"
      dependencies:
        "@types/d3-array": "*"
        "@types/geojson": "*"
      checksum: 83c13eb0567e95d6675d6d81cbeab38d0899c5af70a7c69354e23e0860ddb2f3e911d2cacd33a8baa60ce7846b38785a337b2d7c8d2763a1340bfb999b4bd2ab
      languageName: node
      linkType: hard
    
    "@types/d3-delaunay@npm:*":
      version: 6.0.4
      resolution: "@types/d3-delaunay@npm:6.0.4"
      checksum: 502fe0eb91f7d05b0f57904d68028c24348a54b1e5458009caf662de995d0e59bd82cd701b4af0087d614ee9e456d415fe32d63c25272ca753bf12b3f27b2d77
      languageName: node
      linkType: hard
    
    "@types/d3-dispatch@npm:*":
      version: 3.0.7
      resolution: "@types/d3-dispatch@npm:3.0.7"
      checksum: ce7ab5a7d5c64aacf563797c0c61f3862b9ff687cb35470fe462219f09e402185646f51707339beede616586d92ded6974c3958dbeb15e35a85b1ecfafdf13a8
      languageName: node
      linkType: hard
    
    "@types/d3-drag@npm:*":
      version: 3.0.7
      resolution: "@types/d3-drag@npm:3.0.7"
      dependencies:
        "@types/d3-selection": "*"
      checksum: 1107cb1667ead79073741c06ea4a9e8e4551698f6c9c60821e327a6aa30ca2ba0b31a6fe767af85a2e38a22d2305f6c45b714df15c2bba68adf58978223a5fc5
      languageName: node
      linkType: hard
    
    "@types/d3-dsv@npm:*":
      version: 3.0.7
      resolution: "@types/d3-dsv@npm:3.0.7"
      checksum: 5025e01459827d09d14e0d00281995a04042ce9e3e76444c5a65466c1d29649d82cbfaa9251e33837bf576f5c587525d8d8ff5aacc6bd3b831824d54449261b9
      languageName: node
      linkType: hard
    
    "@types/d3-ease@npm:*":
      version: 3.0.2
      resolution: "@types/d3-ease@npm:3.0.2"
      checksum: 0885219966294bfc99548f37297e1c75e75da812a5f3ec941977ebb57dcab0a25acec5b2bbd82d09a49d387daafca08521ca269b7e4c27ddca7768189e987b54
      languageName: node
      linkType: hard
    
    "@types/d3-fetch@npm:*":
      version: 3.0.7
      resolution: "@types/d3-fetch@npm:3.0.7"
      dependencies:
        "@types/d3-dsv": "*"
      checksum: e60cf60b25cbc49b2066ac2a3638f610c7379000562b0f499dd90fd57a8cb9740c24667a70496c2a66456d42867afeffb1722a75b26d95e7d7ee8667d96b0b36
      languageName: node
      linkType: hard
    
    "@types/d3-force@npm:*":
      version: 3.0.10
      resolution: "@types/d3-force@npm:3.0.10"
      checksum: 0faf1321ddd85f7bf25769ee97513b380a897791ad1cd6c4282f09e0108e566132fad80f4c73cdb592a352139b22388d3c77458298a00f92ef72e27019fb33c7
      languageName: node
      linkType: hard
    
    "@types/d3-format@npm:*":
      version: 3.0.4
      resolution: "@types/d3-format@npm:3.0.4"
      checksum: e69421cd93861a0c080084b0b23d4a5d6a427497559e46898189002fb756dae2c7c858b465308f6bcede7272b90e39ce8adab810bded2309035a5d9556c59134
      languageName: node
      linkType: hard
    
    "@types/d3-geo@npm:*":
      version: 3.1.0
      resolution: "@types/d3-geo@npm:3.1.0"
      dependencies:
        "@types/geojson": "*"
      checksum: a4b2daa8a64012912ce7186891e8554af123925dca344c111b771e168a37477e02d504c6c94ee698440380e8c4f3f373d6755be97935da30eae0904f6745ce40
      languageName: node
      linkType: hard
    
    "@types/d3-hierarchy@npm:*":
      version: 3.1.7
      resolution: "@types/d3-hierarchy@npm:3.1.7"
      checksum: 69746b3a65e0fe0ceb3ffcb1a8840a61e271eadb32eccb5034f0fce036d24801aef924ee45b99246580c9f7c81839ab0555f776a11773d82e860d522a2ff1c0e
      languageName: node
      linkType: hard
    
    "@types/d3-interpolate@npm:*":
      version: 3.0.4
      resolution: "@types/d3-interpolate@npm:3.0.4"
      dependencies:
        "@types/d3-color": "*"
      checksum: efd2770e174e84fc7316fdafe03cf3688451f767dde1fa6211610137f495be7f3923db7e1723a6961a0e0e9ae0ed969f4f47c038189fa0beb1d556b447922622
      languageName: node
      linkType: hard
    
    "@types/d3-path@npm:*":
      version: 3.1.1
      resolution: "@types/d3-path@npm:3.1.1"
      checksum: fee8f6b0d3b28a3611c7d7fda3bf2f79392ded266f54b03a220f205c42117644bdcd33dcbf4853da3cca02229f1c669d2a60d5d297a24ce459ba8271ccb26c03
      languageName: node
      linkType: hard
    
    "@types/d3-polygon@npm:*":
      version: 3.0.2
      resolution: "@types/d3-polygon@npm:3.0.2"
      checksum: 7cf1eadb54f02dd3617512b558f4c0f3811f8a6a8c887d9886981c3cc251db28b68329b2b0707d9f517231a72060adbb08855227f89bef6ef30caedc0a67cab2
      languageName: node
      linkType: hard
    
    "@types/d3-quadtree@npm:*":
      version: 3.0.6
      resolution: "@types/d3-quadtree@npm:3.0.6"
      checksum: 631fb1a50dbe4fb0c97574891b180ec3d6a0f524bbd8aee8dfd44eda405e7ed1ca2b03d5568a35f697d09e5e4b598117e149236874b0c8764979a3d6242bb0bc
      languageName: node
      linkType: hard
    
    "@types/d3-random@npm:*":
      version: 3.0.3
      resolution: "@types/d3-random@npm:3.0.3"
      checksum: 33285b57768a724d2466ac1deec002432805c9df3e475ffb7f7fec66681cfe3e18d2f68b7f8ba45f400b274907bbebfe8adff14c9a97ef1987e476135e784925
      languageName: node
      linkType: hard
    
    "@types/d3-scale-chromatic@npm:*":
      version: 3.1.0
      resolution: "@types/d3-scale-chromatic@npm:3.1.0"
      checksum: cb7b86deac077c7c217a52a3f658cdfb812cff8708404fbfe54918c03ead545e1df87df377e9c4eab21c9d6c1aeee6471320e02a5b6b27e2e3f786a12a82ab02
      languageName: node
      linkType: hard
    
    "@types/d3-scale@npm:*":
      version: 4.0.9
      resolution: "@types/d3-scale@npm:4.0.9"
      dependencies:
        "@types/d3-time": "*"
      checksum: c44265a38e538983686b1b8d159abfb4e81c09b33316f3a68f0f372d38400fa950ad531644d25230cc7b48ea5adb50270fc54823f088979ade62dcd0225f7aa3
      languageName: node
      linkType: hard
    
    "@types/d3-selection@npm:*":
      version: 3.0.11
      resolution: "@types/d3-selection@npm:3.0.11"
      checksum: 4b76630f76dffdafc73cdc786d73e7b4c96f40546483074b3da0e7fe83fd7f5ed9bc6c50f79bcef83595f943dcc9ed6986953350f39371047af644cc39c41b43
      languageName: node
      linkType: hard
    
    "@types/d3-shape@npm:*":
      version: 3.1.8
      resolution: "@types/d3-shape@npm:3.1.8"
      dependencies:
        "@types/d3-path": "*"
      checksum: 659d51882dccc85d24817bdbcd50589212d12e24eb2aad19bae073665ed25443026e120966faa8523f0412f8a30f7c16002499cea3eb87d25b3011e0ee42e6a2
      languageName: node
      linkType: hard
    
    "@types/d3-time-format@npm:*":
      version: 4.0.3
      resolution: "@types/d3-time-format@npm:4.0.3"
      checksum: e981fc9780697a9d8c5d1ddf1167d9c6bc28e4e610afddff1384fe55e6eb52cb65309b2a0a1d4cf817413b0a80b9f1a652fe0b2cb8054ace4eafff80a6093aa5
      languageName: node
      linkType: hard
    
    "@types/d3-time@npm:*":
      version: 3.0.4
      resolution: "@types/d3-time@npm:3.0.4"
      checksum: 0c296884571ce70c4bbd4ea9cd1c93c0c8aee602c6c806b056187dd4ee49daf70c2f41da94b25ba0d796edf8ca83cbb87fe6d1cdda7ca669ab800170ece1c12b
      languageName: node
      linkType: hard
    
    "@types/d3-timer@npm:*":
      version: 3.0.2
      resolution: "@types/d3-timer@npm:3.0.2"
      checksum: 1643eebfa5f4ae3eb00b556bbc509444d88078208ec2589ddd8e4a24f230dd4cf2301e9365947e70b1bee33f63aaefab84cd907822aae812b9bc4871b98ab0e1
      languageName: node
      linkType: hard
    
    "@types/d3-transition@npm:*":
      version: 3.0.9
      resolution: "@types/d3-transition@npm:3.0.9"
      dependencies:
        "@types/d3-selection": "*"
      checksum: c8608b1ac7cf09acfe387f3d41074631adcdfd7f2c8ca2efb378309adf0e9fc8469dbcf0d7a8c40fd1f03f2d2bf05fcda0cde7aa356ae8533a141dcab4dff221
      languageName: node
      linkType: hard
    
    "@types/d3-zoom@npm:*":
      version: 3.0.8
      resolution: "@types/d3-zoom@npm:3.0.8"
      dependencies:
        "@types/d3-interpolate": "*"
        "@types/d3-selection": "*"
      checksum: a1685728949ed39faf8ce162cc13338639c57bc2fd4d55fc7902b2632cad2bc2a808941263e57ce6685647e8a6a0a556e173386a52d6bb74c9ed6195b68be3de
      languageName: node
      linkType: hard
    
    "@types/d3@npm:^7.4.3":
      version: 7.4.3
      resolution: "@types/d3@npm:7.4.3"
      dependencies:
        "@types/d3-array": "*"
        "@types/d3-axis": "*"
        "@types/d3-brush": "*"
        "@types/d3-chord": "*"
        "@types/d3-color": "*"
        "@types/d3-contour": "*"
        "@types/d3-delaunay": "*"
        "@types/d3-dispatch": "*"
        "@types/d3-drag": "*"
        "@types/d3-dsv": "*"
        "@types/d3-ease": "*"
        "@types/d3-fetch": "*"
        "@types/d3-force": "*"
        "@types/d3-format": "*"
        "@types/d3-geo": "*"
        "@types/d3-hierarchy": "*"
        "@types/d3-interpolate": "*"
        "@types/d3-path": "*"
        "@types/d3-polygon": "*"
        "@types/d3-quadtree": "*"
        "@types/d3-random": "*"
        "@types/d3-scale": "*"
        "@types/d3-scale-chromatic": "*"
        "@types/d3-selection": "*"
        "@types/d3-shape": "*"
        "@types/d3-time": "*"
        "@types/d3-time-format": "*"
        "@types/d3-timer": "*"
        "@types/d3-transition": "*"
        "@types/d3-zoom": "*"
      checksum: 12234aa093c8661546168becdd8956e892b276f525d96f65a7b32fed886fc6a569fe5a1171bff26fef2a5663960635f460c9504a6f2d242ba281a2b6c8c6465c
      languageName: node
      linkType: hard
    
    "@types/eslint-scope@npm:^3.7.7":
      version: 3.7.7
      resolution: "@types/eslint-scope@npm:3.7.7"
      dependencies:
        "@types/eslint": "*"
        "@types/estree": "*"
      checksum: e2889a124aaab0b89af1bab5959847c5bec09809209255de0e63b9f54c629a94781daa04adb66bffcdd742f5e25a17614fb933965093c0eea64aacda4309380e
      languageName: node
      linkType: hard
    
    "@types/eslint@npm:*":
      version: 9.6.1
      resolution: "@types/eslint@npm:9.6.1"
      dependencies:
        "@types/estree": "*"
        "@types/json-schema": "*"
      checksum: c286e79707ab604b577cf8ce51d9bbb9780e3d6a68b38a83febe13fa05b8012c92de17c28532fac2b03d3c460123f5055d603a579685325246ca1c86828223e0
      languageName: node
      linkType: hard
    
    "@types/estree@npm:*, @types/estree@npm:^1.0.6, @types/estree@npm:^1.0.8":
      version: 1.0.9
      resolution: "@types/estree@npm:1.0.9"
      checksum: 752c0afee3ec82b8e24484bf6a27dfa093bbf3de4ef1c20ed0364fb6ad2c0c7971e7504ed9a7aaff103a47e2d945ce7a17f74951743dd944782a0735f53170de
      languageName: node
      linkType: hard
    
    "@types/geojson@npm:*":
      version: 7946.0.16
      resolution: "@types/geojson@npm:7946.0.16"
      checksum: d66e5e023f43b3e7121448117af1930af7d06410a32a585a8bc9c6bb5d97e0d656cd93d99e31fa432976c32e98d4b780f82bf1fd1acd20ccf952eb6b8e39edf2
      languageName: node
      linkType: hard
    
    "@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.0":
      version: 2.0.6
      resolution: "@types/istanbul-lib-coverage@npm:2.0.6"
      checksum: 3feac423fd3e5449485afac999dcfcb3d44a37c830af898b689fadc65d26526460bedb889db278e0d4d815a670331796494d073a10ee6e3a6526301fe7415778
      languageName: node
      linkType: hard
    
    "@types/istanbul-lib-report@npm:*":
      version: 3.0.3
      resolution: "@types/istanbul-lib-report@npm:3.0.3"
      dependencies:
        "@types/istanbul-lib-coverage": "*"
      checksum: b91e9b60f865ff08cb35667a427b70f6c2c63e88105eadd29a112582942af47ed99c60610180aa8dcc22382fa405033f141c119c69b95db78c4c709fbadfeeb4
      languageName: node
      linkType: hard
    
    "@types/istanbul-reports@npm:^3.0.0":
      version: 3.0.4
      resolution: "@types/istanbul-reports@npm:3.0.4"
      dependencies:
        "@types/istanbul-lib-report": "*"
      checksum: 93eb18835770b3431f68ae9ac1ca91741ab85f7606f310a34b3586b5a34450ec038c3eed7ab19266635499594de52ff73723a54a72a75b9f7d6a956f01edee95
      languageName: node
      linkType: hard
    
    "@types/jsdom@npm:^20.0.0":
      version: 20.0.1
      resolution: "@types/jsdom@npm:20.0.1"
      dependencies:
        "@types/node": "*"
        "@types/tough-cookie": "*"
        parse5: ^7.0.0
      checksum: d55402c5256ef451f93a6e3d3881f98339fe73a5ac2030588df056d6835df8367b5a857b48d27528289057e26dcdd3f502edc00cb877c79174cb3a4c7f2198c1
      languageName: node
      linkType: hard
    
    "@types/json-schema@npm:*, @types/json-schema@npm:^7.0.15, @types/json-schema@npm:^7.0.5, @types/json-schema@npm:^7.0.8, @types/json-schema@npm:^7.0.9":
      version: 7.0.15
      resolution: "@types/json-schema@npm:7.0.15"
      checksum: 97ed0cb44d4070aecea772b7b2e2ed971e10c81ec87dd4ecc160322ffa55ff330dace1793489540e3e318d90942064bb697cc0f8989391797792d919737b3b98
      languageName: node
      linkType: hard
    
    "@types/node@npm:*":
      version: 25.7.0
      resolution: "@types/node@npm:25.7.0"
      dependencies:
        undici-types: ~7.21.0
      checksum: d7cbd8ed9272e1baa9d90be7b4b3cdd0fb94c961ccbf4f5819863f24a6bd2d69cb839451c1d8e6043ed8d109a4281f0571c5fecb13407780d3cfd0cba1347807
      languageName: node
      linkType: hard
    
    "@types/prop-types@npm:*":
      version: 15.7.15
      resolution: "@types/prop-types@npm:15.7.15"
      checksum: 31aa2f59b28f24da6fb4f1d70807dae2aedfce090ec63eaf9ea01727a9533ef6eaf017de5bff99fbccad7d1c9e644f52c6c2ba30869465dd22b1a7221c29f356
      languageName: node
      linkType: hard
    
    "@types/react-dom@npm:~18.3.7":
      version: 18.3.7
      resolution: "@types/react-dom@npm:18.3.7"
      peerDependencies:
        "@types/react": ^18.0.0
      checksum: c8b63ec944d2a68992b4dba474003fe55ee1d949c4b9c8fe97eecb2290de23f76acfb670b2f7ceb46a5fc8e46808d1745369b03edda48a7a0cf730eff4c5d315
      languageName: node
      linkType: hard
    
    "@types/react@npm:^18.0.26":
      version: 18.3.28
      resolution: "@types/react@npm:18.3.28"
      dependencies:
        "@types/prop-types": "*"
        csstype: ^3.2.2
      checksum: 9d59fb3def4e712d4f8fa15998791a07f9799462f8d581d17039a9503017bfce3463d57fc737ce1d28d6aa3f482f4a3a5bae5a662d97560a9359aab111556c97
      languageName: node
      linkType: hard
    
    "@types/source-list-map@npm:*":
      version: 0.1.6
      resolution: "@types/source-list-map@npm:0.1.6"
      checksum: 9cd294c121f1562062de5d241fe4d10780b1131b01c57434845fe50968e9dcf67ede444591c2b1ad6d3f9b6bc646ac02cc8f51a3577c795f9c64cf4573dcc6b1
      languageName: node
      linkType: hard
    
    "@types/stack-utils@npm:^2.0.0":
      version: 2.0.3
      resolution: "@types/stack-utils@npm:2.0.3"
      checksum: 72576cc1522090fe497337c2b99d9838e320659ac57fa5560fcbdcbafcf5d0216c6b3a0a8a4ee4fdb3b1f5e3420aa4f6223ab57b82fef3578bec3206425c6cf5
      languageName: node
      linkType: hard
    
    "@types/tough-cookie@npm:*":
      version: 4.0.5
      resolution: "@types/tough-cookie@npm:4.0.5"
      checksum: f19409d0190b179331586365912920d192733112a195e870c7f18d20ac8adb7ad0b0ff69dad430dba8bc2be09593453a719cfea92dc3bda19748fd158fe1498d
      languageName: node
      linkType: hard
    
    "@types/trusted-types@npm:^2.0.7":
      version: 2.0.7
      resolution: "@types/trusted-types@npm:2.0.7"
      checksum: 8e4202766a65877efcf5d5a41b7dd458480b36195e580a3b1085ad21e948bc417d55d6f8af1fd2a7ad008015d4117d5fdfe432731157da3c68678487174e4ba3
      languageName: node
      linkType: hard
    
    "@types/webpack-sources@npm:^0.1.5":
      version: 0.1.12
      resolution: "@types/webpack-sources@npm:0.1.12"
      dependencies:
        "@types/node": "*"
        "@types/source-list-map": "*"
        source-map: ^0.6.1
      checksum: 75342659a9889478969f7bb7360b998aa084ba11ab523c172ded6a807dac43ab2a9e1212078ef8bbf0f33e4fadd2c8a91b75d38184d8030d96a32fe819c9bb57
      languageName: node
      linkType: hard
    
    "@types/yargs-parser@npm:*":
      version: 21.0.3
      resolution: "@types/yargs-parser@npm:21.0.3"
      checksum: ef236c27f9432983e91432d974243e6c4cdae227cb673740320eff32d04d853eed59c92ca6f1142a335cfdc0e17cccafa62e95886a8154ca8891cc2dec4ee6fc
      languageName: node
      linkType: hard
    
    "@types/yargs@npm:^17.0.8":
      version: 17.0.35
      resolution: "@types/yargs@npm:17.0.35"
      dependencies:
        "@types/yargs-parser": "*"
      checksum: ebf1f5373388cfcbf9cfb5e56ce7a77c0ba2450420f26f3701010ca92df48cce7e14e4245ed1f17178a38ff8702467a6f4047742775b8e2fd06dec8f4f3501ce
      languageName: node
      linkType: hard
    
    "@typescript-eslint/eslint-plugin@npm:8.59.3, @typescript-eslint/eslint-plugin@npm:^8.59.2":
      version: 8.59.3
      resolution: "@typescript-eslint/eslint-plugin@npm:8.59.3"
      dependencies:
        "@eslint-community/regexpp": ^4.12.2
        "@typescript-eslint/scope-manager": 8.59.3
        "@typescript-eslint/type-utils": 8.59.3
        "@typescript-eslint/utils": 8.59.3
        "@typescript-eslint/visitor-keys": 8.59.3
        ignore: ^7.0.5
        natural-compare: ^1.4.0
        ts-api-utils: ^2.5.0
      peerDependencies:
        "@typescript-eslint/parser": ^8.59.3
        eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
        typescript: ">=4.8.4 <6.1.0"
      checksum: 65f789406986e175692db1f9436c4ef3b2ce8f9df83bcd9a45b5de9692b3609ce53ab57dbc37b1efd914cf28e0d5c4df65ba4b18809e7d14d05010e596141bf2
      languageName: node
      linkType: hard
    
    "@typescript-eslint/parser@npm:8.59.3, @typescript-eslint/parser@npm:^8.59.2":
      version: 8.59.3
      resolution: "@typescript-eslint/parser@npm:8.59.3"
      dependencies:
        "@typescript-eslint/scope-manager": 8.59.3
        "@typescript-eslint/types": 8.59.3
        "@typescript-eslint/typescript-estree": 8.59.3
        "@typescript-eslint/visitor-keys": 8.59.3
        debug: ^4.4.3
      peerDependencies:
        eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
        typescript: ">=4.8.4 <6.1.0"
      checksum: 72a82fbefbc811c3cb885c30ccadd761f14f1ec96daa7dc1de3bd02a6e4b2cfe0070ecba30f7b1f6c024cf8d9c82fa08f41a5dc5dddcdb2c3fc5dd6de6dc6957
      languageName: node
      linkType: hard
    
    "@typescript-eslint/project-service@npm:8.59.3":
      version: 8.59.3
      resolution: "@typescript-eslint/project-service@npm:8.59.3"
      dependencies:
        "@typescript-eslint/tsconfig-utils": ^8.59.3
        "@typescript-eslint/types": ^8.59.3
        debug: ^4.4.3
      peerDependencies:
        typescript: ">=4.8.4 <6.1.0"
      checksum: 788dd5fd4abcf38a0fe0d43820611fb29a868fc662c18e7114a76912cf791e42d73e2f1548d65e591f75ce30d1053cda4f0240b2c24b78af052a4b85a842360d
      languageName: node
      linkType: hard
    
    "@typescript-eslint/scope-manager@npm:8.59.3":
      version: 8.59.3
      resolution: "@typescript-eslint/scope-manager@npm:8.59.3"
      dependencies:
        "@typescript-eslint/types": 8.59.3
        "@typescript-eslint/visitor-keys": 8.59.3
      checksum: a08b237e039dceb0bf64d8bc1168f82098217be05491f694c7f8a9a8bc04474caad27ef9a2519b12779402026f0d06f6047f8a12b3433faca7131a89e41dea2a
      languageName: node
      linkType: hard
    
    "@typescript-eslint/tsconfig-utils@npm:8.59.3, @typescript-eslint/tsconfig-utils@npm:^8.59.3":
      version: 8.59.3
      resolution: "@typescript-eslint/tsconfig-utils@npm:8.59.3"
      peerDependencies:
        typescript: ">=4.8.4 <6.1.0"
      checksum: 49ce0cd9d400c4370dd245782e3ad977280f47e315c39188df944cb301a0eda3de10af7e99b687341f403e9df2f8a15aa599295d4316183dab0061b32075b561
      languageName: node
      linkType: hard
    
    "@typescript-eslint/type-utils@npm:8.59.3":
      version: 8.59.3
      resolution: "@typescript-eslint/type-utils@npm:8.59.3"
      dependencies:
        "@typescript-eslint/types": 8.59.3
        "@typescript-eslint/typescript-estree": 8.59.3
        "@typescript-eslint/utils": 8.59.3
        debug: ^4.4.3
        ts-api-utils: ^2.5.0
      peerDependencies:
        eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
        typescript: ">=4.8.4 <6.1.0"
      checksum: b4fd4b92b30ca055c39623000952ce0473efa0e5531f178712209cd726c4f52e0a7c5dc1241cb669506c06c666137118db72d19fe038bb8f4b574663e2c294e5
      languageName: node
      linkType: hard
    
    "@typescript-eslint/types@npm:8.59.3, @typescript-eslint/types@npm:^8.59.3":
      version: 8.59.3
      resolution: "@typescript-eslint/types@npm:8.59.3"
      checksum: f2aa50683cc4364f8edc76cf24f529e951bb89526fd121577aaab69cbb005868600e4c50f70987dfc952ebd8fd330853fc76462075d74535b21a4390cc83ebca
      languageName: node
      linkType: hard
    
    "@typescript-eslint/typescript-estree@npm:8.59.3":
      version: 8.59.3
      resolution: "@typescript-eslint/typescript-estree@npm:8.59.3"
      dependencies:
        "@typescript-eslint/project-service": 8.59.3
        "@typescript-eslint/tsconfig-utils": 8.59.3
        "@typescript-eslint/types": 8.59.3
        "@typescript-eslint/visitor-keys": 8.59.3
        debug: ^4.4.3
        minimatch: ^10.2.2
        semver: ^7.7.3
        tinyglobby: ^0.2.15
        ts-api-utils: ^2.5.0
      peerDependencies:
        typescript: ">=4.8.4 <6.1.0"
      checksum: 6e256785c92bd27e9a6270f6117dcf9666186ba4e472ccec70076810c4c6b4a14fe5a486b45e08285ad4b3b3bb38245f80502b73fcf06af5c9d83501fb19620f
      languageName: node
      linkType: hard
    
    "@typescript-eslint/utils@npm:8.59.3, @typescript-eslint/utils@npm:^8.54.0":
      version: 8.59.3
      resolution: "@typescript-eslint/utils@npm:8.59.3"
      dependencies:
        "@eslint-community/eslint-utils": ^4.9.1
        "@typescript-eslint/scope-manager": 8.59.3
        "@typescript-eslint/types": 8.59.3
        "@typescript-eslint/typescript-estree": 8.59.3
      peerDependencies:
        eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
        typescript: ">=4.8.4 <6.1.0"
      checksum: fbbf104d809add9a079d341d10ad853a5f2d145c4c4c7d9fff80f8aaa7d40be960bf78c57053c55b8410d3561ad5f2c29f97e3ee6d1851acb25f271f17f0b5fe
      languageName: node
      linkType: hard
    
    "@typescript-eslint/visitor-keys@npm:8.59.3":
      version: 8.59.3
      resolution: "@typescript-eslint/visitor-keys@npm:8.59.3"
      dependencies:
        "@typescript-eslint/types": 8.59.3
        eslint-visitor-keys: ^5.0.0
      checksum: c4c23703e2d2c653eaf9e9dbabd803c19edbbef2c888c057b664d177557257358f7911e775d49c6940cecdb11417667a3f129d064a9a2f66ce87155c21369a19
      languageName: node
      linkType: hard
    
    "@upsetjs/venn.js@npm:^2.0.0":
      version: 2.0.0
      resolution: "@upsetjs/venn.js@npm:2.0.0"
      dependencies:
        d3-selection: ^3.0.0
        d3-transition: ^3.0.1
      dependenciesMeta:
        d3-selection:
          optional: true
        d3-transition:
          optional: true
      checksum: 345f6adcdb0761289e41dd3d1aa3f3edf1780a0c55d20ccc4d4461a04b8e34e09b96fd07ab7fb323086bbd4e53505ed660c0a7d139167415c66ff7921b033643
      languageName: node
      linkType: hard
    
    "@webassemblyjs/ast@npm:1.14.1, @webassemblyjs/ast@npm:^1.14.1":
      version: 1.14.1
      resolution: "@webassemblyjs/ast@npm:1.14.1"
      dependencies:
        "@webassemblyjs/helper-numbers": 1.13.2
        "@webassemblyjs/helper-wasm-bytecode": 1.13.2
      checksum: f9154ad9ea14f6f2374ebe918c221fd69a4d4514126a1acc6fa4966e8d27ab28cb550a5e6880032cf620e19640578658a7e5a55bd2aad1e3db4e9d598b8f2099
      languageName: node
      linkType: hard
    
    "@webassemblyjs/floating-point-hex-parser@npm:1.13.2":
      version: 1.13.2
      resolution: "@webassemblyjs/floating-point-hex-parser@npm:1.13.2"
      checksum: e866ec8433f4a70baa511df5e8f2ebcd6c24f4e2cc6274c7c5aabe2bcce3459ea4680e0f35d450e1f3602acf3913b6b8e4f15069c8cfd34ae8609fb9a7d01795
      languageName: node
      linkType: hard
    
    "@webassemblyjs/helper-api-error@npm:1.13.2":
      version: 1.13.2
      resolution: "@webassemblyjs/helper-api-error@npm:1.13.2"
      checksum: 48b5df7fd3095bb252f59a139fe2cbd999a62ac9b488123e9a0da3906ad8a2f2da7b2eb21d328c01a90da987380928706395c2897d1f3ed9e2125b6d75a920d0
      languageName: node
      linkType: hard
    
    "@webassemblyjs/helper-buffer@npm:1.14.1":
      version: 1.14.1
      resolution: "@webassemblyjs/helper-buffer@npm:1.14.1"
      checksum: b611e981dfd6a797c3d8fc3a772de29a6e55033737c2c09c31bb66c613bdbb2d25f915df1dee62a602c6acc057ca71128432fa8c3e22a893e1219dc454f14ede
      languageName: node
      linkType: hard
    
    "@webassemblyjs/helper-numbers@npm:1.13.2":
      version: 1.13.2
      resolution: "@webassemblyjs/helper-numbers@npm:1.13.2"
      dependencies:
        "@webassemblyjs/floating-point-hex-parser": 1.13.2
        "@webassemblyjs/helper-api-error": 1.13.2
        "@xtuc/long": 4.2.2
      checksum: 49e2c9bf9b66997e480f6b44d80f895b3cde4de52ac135921d28e144565edca6903a519f627f4089b5509de1d7f9e5023f0e1a94ff78a36c9e2eb30e7c18ffd2
      languageName: node
      linkType: hard
    
    "@webassemblyjs/helper-wasm-bytecode@npm:1.13.2":
      version: 1.13.2
      resolution: "@webassemblyjs/helper-wasm-bytecode@npm:1.13.2"
      checksum: 8e059e1c1f0294f4fc3df8e4eaff3c5ef6e2e1358f34ebc118eaf5070ed59e56ed7fc92b28be734ebde17c8d662d5d27e06ade686c282445135da083ae11c128
      languageName: node
      linkType: hard
    
    "@webassemblyjs/helper-wasm-section@npm:1.14.1":
      version: 1.14.1
      resolution: "@webassemblyjs/helper-wasm-section@npm:1.14.1"
      dependencies:
        "@webassemblyjs/ast": 1.14.1
        "@webassemblyjs/helper-buffer": 1.14.1
        "@webassemblyjs/helper-wasm-bytecode": 1.13.2
        "@webassemblyjs/wasm-gen": 1.14.1
      checksum: 0a08d454a63192cd66abf91b6f060ac4b466cef341262246e9dcc828dd4c8536195dea9b46a1244b1eac65b59b8b502164a771a190052a92ff0a0a2ded0f8f53
      languageName: node
      linkType: hard
    
    "@webassemblyjs/ieee754@npm:1.13.2":
      version: 1.13.2
      resolution: "@webassemblyjs/ieee754@npm:1.13.2"
      dependencies:
        "@xtuc/ieee754": ^1.2.0
      checksum: d7e3520baa37a7309fa7db4d73d69fb869878853b1ebd4b168821bd03fcc4c0e1669c06231315b0039035d9a7a462e53de3ad982da4a426a4b0743b5888e8673
      languageName: node
      linkType: hard
    
    "@webassemblyjs/leb128@npm:1.13.2":
      version: 1.13.2
      resolution: "@webassemblyjs/leb128@npm:1.13.2"
      dependencies:
        "@xtuc/long": 4.2.2
      checksum: 64083507f7cff477a6d71a9e325d95665cea78ec8df99ca7c050e1cfbe300fbcf0842ca3dcf3b4fa55028350135588a4f879398d3dd2b6a8de9913ce7faf5333
      languageName: node
      linkType: hard
    
    "@webassemblyjs/utf8@npm:1.13.2":
      version: 1.13.2
      resolution: "@webassemblyjs/utf8@npm:1.13.2"
      checksum: 95ec6052f30eefa8d50c9b2a3394d08b17d53a4aa52821451d41d774c126fa8f39b988fbf5bff56da86852a87c16d676e576775a4071e5e5ccf020cc85a4b281
      languageName: node
      linkType: hard
    
    "@webassemblyjs/wasm-edit@npm:^1.14.1":
      version: 1.14.1
      resolution: "@webassemblyjs/wasm-edit@npm:1.14.1"
      dependencies:
        "@webassemblyjs/ast": 1.14.1
        "@webassemblyjs/helper-buffer": 1.14.1
        "@webassemblyjs/helper-wasm-bytecode": 1.13.2
        "@webassemblyjs/helper-wasm-section": 1.14.1
        "@webassemblyjs/wasm-gen": 1.14.1
        "@webassemblyjs/wasm-opt": 1.14.1
        "@webassemblyjs/wasm-parser": 1.14.1
        "@webassemblyjs/wast-printer": 1.14.1
      checksum: 9341c3146bb1b7863f03d6050c2a66990f20384ca137388047bbe1feffacb599e94fca7b7c18287d17e2449ffb4005fdc7f41f674a6975af9ad8522756f8ffff
      languageName: node
      linkType: hard
    
    "@webassemblyjs/wasm-gen@npm:1.14.1":
      version: 1.14.1
      resolution: "@webassemblyjs/wasm-gen@npm:1.14.1"
      dependencies:
        "@webassemblyjs/ast": 1.14.1
        "@webassemblyjs/helper-wasm-bytecode": 1.13.2
        "@webassemblyjs/ieee754": 1.13.2
        "@webassemblyjs/leb128": 1.13.2
        "@webassemblyjs/utf8": 1.13.2
      checksum: 401b12bec7431c4fc29d9414bbe40d3c6dc5be04d25a116657c42329f5481f0129f3b5834c293f26f0e42681ceac9157bf078ce9bdb6a7f78037c650373f98b2
      languageName: node
      linkType: hard
    
    "@webassemblyjs/wasm-opt@npm:1.14.1":
      version: 1.14.1
      resolution: "@webassemblyjs/wasm-opt@npm:1.14.1"
      dependencies:
        "@webassemblyjs/ast": 1.14.1
        "@webassemblyjs/helper-buffer": 1.14.1
        "@webassemblyjs/wasm-gen": 1.14.1
        "@webassemblyjs/wasm-parser": 1.14.1
      checksum: 60c697a9e9129d8d23573856df0791ba33cea4a3bc2339044cae73128c0983802e5e50a42157b990eeafe1237eb8e7653db6de5f02b54a0ae7b81b02dcdf2ae9
      languageName: node
      linkType: hard
    
    "@webassemblyjs/wasm-parser@npm:1.14.1, @webassemblyjs/wasm-parser@npm:^1.14.1":
      version: 1.14.1
      resolution: "@webassemblyjs/wasm-parser@npm:1.14.1"
      dependencies:
        "@webassemblyjs/ast": 1.14.1
        "@webassemblyjs/helper-api-error": 1.13.2
        "@webassemblyjs/helper-wasm-bytecode": 1.13.2
        "@webassemblyjs/ieee754": 1.13.2
        "@webassemblyjs/leb128": 1.13.2
        "@webassemblyjs/utf8": 1.13.2
      checksum: 93f1fe2676da465b4e824419d9812a3d7218de4c3addd4e916c04bc86055fa134416c1b67e4b7cbde8d728c0dce2721d06cc0bfe7a7db7c093a0898009937405
      languageName: node
      linkType: hard
    
    "@webassemblyjs/wast-printer@npm:1.14.1":
      version: 1.14.1
      resolution: "@webassemblyjs/wast-printer@npm:1.14.1"
      dependencies:
        "@webassemblyjs/ast": 1.14.1
        "@xtuc/long": 4.2.2
      checksum: 517881a0554debe6945de719d100b2d8883a2d24ddf47552cdeda866341e2bb153cd824a864bc7e2a61190a4b66b18f9899907e0074e9e820d2912ac0789ea60
      languageName: node
      linkType: hard
    
    "@webpack-cli/configtest@npm:^2.1.1":
      version: 2.1.1
      resolution: "@webpack-cli/configtest@npm:2.1.1"
      peerDependencies:
        webpack: 5.x.x
        webpack-cli: 5.x.x
      checksum: 9f9f9145c2d05471fc83d426db1df85cf49f329836b0c4b9f46b6948bed4b013464c00622b136d2a0a26993ce2306976682592245b08ee717500b1db45009a72
      languageName: node
      linkType: hard
    
    "@webpack-cli/info@npm:^2.0.2":
      version: 2.0.2
      resolution: "@webpack-cli/info@npm:2.0.2"
      peerDependencies:
        webpack: 5.x.x
        webpack-cli: 5.x.x
      checksum: 8f9a178afca5c82e113aed1efa552d64ee5ae4fdff63fe747c096a981ec74f18a5d07bd6e89bbe6715c3e57d96eea024a410e58977169489fe1df044c10dd94e
      languageName: node
      linkType: hard
    
    "@webpack-cli/serve@npm:^2.0.5":
      version: 2.0.5
      resolution: "@webpack-cli/serve@npm:2.0.5"
      peerDependencies:
        webpack: 5.x.x
        webpack-cli: 5.x.x
      peerDependenciesMeta:
        webpack-dev-server:
          optional: true
      checksum: 75f0e54681796d567a71ac3e2781d2901a8d8cf1cdfc82f261034dddac59a8343e8c3bc5e32b4bb9d6766759ba49fb29a5cd86ef1701d79c506fe886bb63ac75
      languageName: node
      linkType: hard
    
    "@xtuc/ieee754@npm:^1.2.0":
      version: 1.2.0
      resolution: "@xtuc/ieee754@npm:1.2.0"
      checksum: ac56d4ca6e17790f1b1677f978c0c6808b1900a5b138885d3da21732f62e30e8f0d9120fcf8f6edfff5100ca902b46f8dd7c1e3f903728634523981e80e2885a
      languageName: node
      linkType: hard
    
    "@xtuc/long@npm:4.2.2":
      version: 4.2.2
      resolution: "@xtuc/long@npm:4.2.2"
      checksum: 8ed0d477ce3bc9c6fe2bf6a6a2cc316bb9c4127c5a7827bae947fa8ec34c7092395c5a283cc300c05b5fa01cbbfa1f938f410a7bf75db7c7846fea41949989ec
      languageName: node
      linkType: hard
    
    "abab@npm:^2.0.3, abab@npm:^2.0.6":
      version: 2.0.6
      resolution: "abab@npm:2.0.6"
      checksum: 6ffc1af4ff315066c62600123990d87551ceb0aafa01e6539da77b0f5987ac7019466780bf480f1787576d4385e3690c81ccc37cfda12819bf510b8ab47e5a3e
      languageName: node
      linkType: hard
    
    "acorn-globals@npm:^7.0.0":
      version: 7.0.1
      resolution: "acorn-globals@npm:7.0.1"
      dependencies:
        acorn: ^8.1.0
        acorn-walk: ^8.0.2
      checksum: 2a2998a547af6d0db5f0cdb90acaa7c3cbca6709010e02121fb8b8617c0fbd8bab0b869579903fde358ac78454356a14fadcc1a672ecb97b04b1c2ccba955ce8
      languageName: node
      linkType: hard
    
    "acorn-import-phases@npm:^1.0.3":
      version: 1.0.4
      resolution: "acorn-import-phases@npm:1.0.4"
      peerDependencies:
        acorn: ^8.14.0
      checksum: e669cccfb6711af305150fcbfddcf4485fffdc4547a0ecabebe94103b47124cc02bfd186240061c00ac954cfb0461b4ecc3e203e138e43042b7af32063fa9510
      languageName: node
      linkType: hard
    
    "acorn-jsx@npm:^5.3.2":
      version: 5.3.2
      resolution: "acorn-jsx@npm:5.3.2"
      peerDependencies:
        acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
      checksum: c3d3b2a89c9a056b205b69530a37b972b404ee46ec8e5b341666f9513d3163e2a4f214a71f4dfc7370f5a9c07472d2fd1c11c91c3f03d093e37637d95da98950
      languageName: node
      linkType: hard
    
    "acorn-walk@npm:^8.0.2":
      version: 8.3.5
      resolution: "acorn-walk@npm:8.3.5"
      dependencies:
        acorn: ^8.11.0
      checksum: ea8b55206c8913ce1d71a62dc10215ad919e3caf64053de72038e0be25dd8ef1454ffdcb6f25ed3b5325204f7ae18131e7fbbdfd7554f9538985a570188c60a8
      languageName: node
      linkType: hard
    
    "acorn@npm:^8.1.0, acorn@npm:^8.11.0, acorn@npm:^8.15.0, acorn@npm:^8.16.0, acorn@npm:^8.5.0, acorn@npm:^8.8.1":
      version: 8.16.0
      resolution: "acorn@npm:8.16.0"
      bin:
        acorn: bin/acorn
      checksum: bbfa466cd0dbd18b4460a85e9d0fc2f35db999380892403c573261beda91f23836db2aa71fd3ae65e94424ad14ff8e2b7bd37c7a2624278fd89137cd6e448c41
      languageName: node
      linkType: hard
    
    "agent-base@npm:6":
      version: 6.0.2
      resolution: "agent-base@npm:6.0.2"
      dependencies:
        debug: 4
      checksum: f52b6872cc96fd5f622071b71ef200e01c7c4c454ee68bc9accca90c98cfb39f2810e3e9aa330435835eedc8c23f4f8a15267f67c6e245d2b33757575bdac49d
      languageName: node
      linkType: hard
    
    "ajv-formats@npm:^2.1.1":
      version: 2.1.1
      resolution: "ajv-formats@npm:2.1.1"
      dependencies:
        ajv: ^8.0.0
      peerDependencies:
        ajv: ^8.0.0
      peerDependenciesMeta:
        ajv:
          optional: true
      checksum: 4a287d937f1ebaad4683249a4c40c0fa3beed30d9ddc0adba04859026a622da0d317851316ea64b3680dc60f5c3c708105ddd5d5db8fe595d9d0207fd19f90b7
      languageName: node
      linkType: hard
    
    "ajv-keywords@npm:^3.5.2":
      version: 3.5.2
      resolution: "ajv-keywords@npm:3.5.2"
      peerDependencies:
        ajv: ^6.9.1
      checksum: 7dc5e5931677a680589050f79dcbe1fefbb8fea38a955af03724229139175b433c63c68f7ae5f86cf8f65d55eb7c25f75a046723e2e58296707617ca690feae9
      languageName: node
      linkType: hard
    
    "ajv-keywords@npm:^5.1.0":
      version: 5.1.0
      resolution: "ajv-keywords@npm:5.1.0"
      dependencies:
        fast-deep-equal: ^3.1.3
      peerDependencies:
        ajv: ^8.8.2
      checksum: c35193940b853119242c6757787f09ecf89a2c19bcd36d03ed1a615e710d19d450cb448bfda407b939aba54b002368c8bff30529cc50a0536a8e10bcce300421
      languageName: node
      linkType: hard
    
    "ajv@npm:^6.12.4, ajv@npm:^6.12.5, ajv@npm:^6.14.0":
      version: 6.15.0
      resolution: "ajv@npm:6.15.0"
      dependencies:
        fast-deep-equal: ^3.1.1
        fast-json-stable-stringify: ^2.0.0
        json-schema-traverse: ^0.4.1
        uri-js: ^4.2.2
      checksum: a8e0308f1b44c3dfd1143911353be51bf8aedc2f2bcd595061755ad241c8450a10e4b657af8ba764c5ec9ae2162010f21d5e0d43763e20d782a8171da99b967a
      languageName: node
      linkType: hard
    
    "ajv@npm:^8.0.0, ajv@npm:^8.12.0, ajv@npm:^8.9.0":
      version: 8.20.0
      resolution: "ajv@npm:8.20.0"
      dependencies:
        fast-deep-equal: ^3.1.3
        fast-uri: ^3.0.1
        json-schema-traverse: ^1.0.0
        require-from-string: ^2.0.2
      checksum: 4f18ca5fcccff8c8b9a4d6f1a6a3a70ffc888e787624ca66f2d0162e04e8f9f2d289d8a1acdb9520d18bffcee975e7a789a9f8292b5c2c577c408cd2c3308cad
      languageName: node
      linkType: hard
    
    "ansi-styles@npm:^3.2.1":
      version: 3.2.1
      resolution: "ansi-styles@npm:3.2.1"
      dependencies:
        color-convert: ^1.9.0
      checksum: d85ade01c10e5dd77b6c89f34ed7531da5830d2cb5882c645f330079975b716438cd7ebb81d0d6e6b4f9c577f19ae41ab55f07f19786b02f9dfd9e0377395665
      languageName: node
      linkType: hard
    
    "ansi-styles@npm:^4.1.0":
      version: 4.3.0
      resolution: "ansi-styles@npm:4.3.0"
      dependencies:
        color-convert: ^2.0.1
      checksum: 513b44c3b2105dd14cc42a19271e80f386466c4be574bccf60b627432f9198571ebf4ab1e4c3ba17347658f4ee1711c163d574248c0c1cdc2d5917a0ad582ec4
      languageName: node
      linkType: hard
    
    "ansi-styles@npm:^5.0.0":
      version: 5.2.0
      resolution: "ansi-styles@npm:5.2.0"
      checksum: d7f4e97ce0623aea6bc0d90dcd28881ee04cba06c570b97fd3391bd7a268eedfd9d5e2dd4fdcbdd82b8105df5faf6f24aaedc08eaf3da898e702db5948f63469
      languageName: node
      linkType: hard
    
    "ansi-styles@npm:^6.2.1":
      version: 6.2.3
      resolution: "ansi-styles@npm:6.2.3"
      checksum: f1b0829cf048cce870a305819f65ce2adcebc097b6d6479e12e955fd6225df9b9eb8b497083b764df796d94383ff20016cc4dbbae5b40f36138fb65a9d33c2e2
      languageName: node
      linkType: hard
    
    "argparse@npm:^2.0.1":
      version: 2.0.1
      resolution: "argparse@npm:2.0.1"
      checksum: 83644b56493e89a254bae05702abf3a1101b4fa4d0ca31df1c9985275a5a5bd47b3c27b7fa0b71098d41114d8ca000e6ed90cad764b306f8a503665e4d517ced
      languageName: node
      linkType: hard
    
    "array-buffer-byte-length@npm:^1.0.1, array-buffer-byte-length@npm:^1.0.2":
      version: 1.0.2
      resolution: "array-buffer-byte-length@npm:1.0.2"
      dependencies:
        call-bound: ^1.0.3
        is-array-buffer: ^3.0.5
      checksum: 0ae3786195c3211b423e5be8dd93357870e6fb66357d81da968c2c39ef43583ef6eece1f9cb1caccdae4806739c65dea832b44b8593414313cd76a89795fca63
      languageName: node
      linkType: hard
    
    "array-includes@npm:^3.1.6, array-includes@npm:^3.1.8":
      version: 3.1.9
      resolution: "array-includes@npm:3.1.9"
      dependencies:
        call-bind: ^1.0.8
        call-bound: ^1.0.4
        define-properties: ^1.2.1
        es-abstract: ^1.24.0
        es-object-atoms: ^1.1.1
        get-intrinsic: ^1.3.0
        is-string: ^1.1.1
        math-intrinsics: ^1.1.0
      checksum: b58dc526fe415252e50319eaf88336e06e75aa673e3b58d252414739a4612dbe56e7b613fdcc7c90561dc9cf9202bbe5ca029ccd8c08362746459475ae5a8f3e
      languageName: node
      linkType: hard
    
    "array.prototype.findlast@npm:^1.2.5":
      version: 1.2.5
      resolution: "array.prototype.findlast@npm:1.2.5"
      dependencies:
        call-bind: ^1.0.7
        define-properties: ^1.2.1
        es-abstract: ^1.23.2
        es-errors: ^1.3.0
        es-object-atoms: ^1.0.0
        es-shim-unscopables: ^1.0.2
      checksum: 83ce4ad95bae07f136d316f5a7c3a5b911ac3296c3476abe60225bc4a17938bf37541972fcc37dd5adbc99cbb9c928c70bbbfc1c1ce549d41a415144030bb446
      languageName: node
      linkType: hard
    
    "array.prototype.flat@npm:^1.3.1":
      version: 1.3.3
      resolution: "array.prototype.flat@npm:1.3.3"
      dependencies:
        call-bind: ^1.0.8
        define-properties: ^1.2.1
        es-abstract: ^1.23.5
        es-shim-unscopables: ^1.0.2
      checksum: 5d5a7829ab2bb271a8d30a1c91e6271cef0ec534593c0fe6d2fb9ebf8bb62c1e5326e2fddcbbcbbe5872ca04f5e6b54a1ecf092e0af704fb538da9b2bfd95b40
      languageName: node
      linkType: hard
    
    "array.prototype.flatmap@npm:^1.3.3":
      version: 1.3.3
      resolution: "array.prototype.flatmap@npm:1.3.3"
      dependencies:
        call-bind: ^1.0.8
        define-properties: ^1.2.1
        es-abstract: ^1.23.5
        es-shim-unscopables: ^1.0.2
      checksum: 11b4de09b1cf008be6031bb507d997ad6f1892e57dc9153583de6ebca0f74ea403fffe0f203461d359de05048d609f3f480d9b46fed4099652d8b62cc972f284
      languageName: node
      linkType: hard
    
    "array.prototype.tosorted@npm:^1.1.4":
      version: 1.1.4
      resolution: "array.prototype.tosorted@npm:1.1.4"
      dependencies:
        call-bind: ^1.0.7
        define-properties: ^1.2.1
        es-abstract: ^1.23.3
        es-errors: ^1.3.0
        es-shim-unscopables: ^1.0.2
      checksum: e4142d6f556bcbb4f393c02e7dbaea9af8f620c040450c2be137c9cbbd1a17f216b9c688c5f2c08fbb038ab83f55993fa6efdd9a05881d84693c7bcb5422127a
      languageName: node
      linkType: hard
    
    "arraybuffer.prototype.slice@npm:^1.0.4":
      version: 1.0.4
      resolution: "arraybuffer.prototype.slice@npm:1.0.4"
      dependencies:
        array-buffer-byte-length: ^1.0.1
        call-bind: ^1.0.8
        define-properties: ^1.2.1
        es-abstract: ^1.23.5
        es-errors: ^1.3.0
        get-intrinsic: ^1.2.6
        is-array-buffer: ^3.0.4
      checksum: b1d1fd20be4e972a3779b1569226f6740170dca10f07aa4421d42cefeec61391e79c557cda8e771f5baefe47d878178cd4438f60916ce831813c08132bced765
      languageName: node
      linkType: hard
    
    "async-function@npm:^1.0.0":
      version: 1.0.0
      resolution: "async-function@npm:1.0.0"
      checksum: 9102e246d1ed9b37ac36f57f0a6ca55226876553251a31fc80677e71471f463a54c872dc78d5d7f80740c8ba624395cccbe8b60f7b690c4418f487d8e9fd1106
      languageName: node
      linkType: hard
    
    "async-generator-function@npm:^1.0.0":
      version: 1.0.0
      resolution: "async-generator-function@npm:1.0.0"
      checksum: 74a71a4a2dd7afd06ebb612f6d612c7f4766a351bedffde466023bf6dae629e46b0d2cd38786239e0fbf245de0c7df76035465e16d1213774a0efb22fec0d713
      languageName: node
      linkType: hard
    
    "asynckit@npm:^0.4.0":
      version: 0.4.0
      resolution: "asynckit@npm:0.4.0"
      checksum: 7b78c451df768adba04e2d02e63e2d0bf3b07adcd6e42b4cf665cb7ce899bedd344c69a1dcbce355b5f972d597b25aaa1c1742b52cffd9caccb22f348114f6be
      languageName: node
      linkType: hard
    
    "available-typed-arrays@npm:^1.0.7":
      version: 1.0.7
      resolution: "available-typed-arrays@npm:1.0.7"
      dependencies:
        possible-typed-array-names: ^1.0.0
      checksum: 1aa3ffbfe6578276996de660848b6e95669d9a95ad149e3dd0c0cda77db6ee1dbd9d1dd723b65b6d277b882dd0c4b91a654ae9d3cf9e1254b7e93e4908d78fd3
      languageName: node
      linkType: hard
    
    "balanced-match@npm:^1.0.0":
      version: 1.0.2
      resolution: "balanced-match@npm:1.0.2"
      checksum: 9706c088a283058a8a99e0bf91b0a2f75497f185980d9ffa8b304de1d9e58ebda7c72c07ebf01dadedaac5b2907b2c6f566f660d62bd336c3468e960403b9d65
      languageName: node
      linkType: hard
    
    "balanced-match@npm:^4.0.2":
      version: 4.0.4
      resolution: "balanced-match@npm:4.0.4"
      checksum: fb07bb66a0959c2843fc055838047e2a95ccebb837c519614afb067ebfdf2fa967ca8d712c35ced07f2cd26fc6f07964230b094891315ad74f11eba3d53178a0
      languageName: node
      linkType: hard
    
    "baseline-browser-mapping@npm:^2.10.12":
      version: 2.10.29
      resolution: "baseline-browser-mapping@npm:2.10.29"
      bin:
        baseline-browser-mapping: dist/cli.cjs
      checksum: 632f19359cda715beed0af93118aa6463506f897c680c5092523c7105dd9f5e08a95552078f6bab0c261a16b1221842a8f9d5b0da02921d3329a5894d2a38688
      languageName: node
      linkType: hard
    
    "big.js@npm:^5.2.2":
      version: 5.2.2
      resolution: "big.js@npm:5.2.2"
      checksum: b89b6e8419b097a8fb4ed2399a1931a68c612bce3cfd5ca8c214b2d017531191070f990598de2fc6f3f993d91c0f08aa82697717f6b3b8732c9731866d233c9e
      languageName: node
      linkType: hard
    
    "brace-expansion@npm:^1.1.7":
      version: 1.1.14
      resolution: "brace-expansion@npm:1.1.14"
      dependencies:
        balanced-match: ^1.0.0
        concat-map: 0.0.1
      checksum: 2de747a5891ea0d3a1946ea1ae26e056a47f7ea8d42a3009e1736ec3a31a5aa69a3c5da59d998426773553afe4c258e5b12d7953b534fa7f2cf12ce92eed4931
      languageName: node
      linkType: hard
    
    "brace-expansion@npm:^5.0.5":
      version: 5.0.6
      resolution: "brace-expansion@npm:5.0.6"
      dependencies:
        balanced-match: ^4.0.2
      checksum: b5a0e54a5d5f66d0acb88f297e1f3e74732f9c8a35ab6c87b96bd60f6e390697f099b747dd053b9017bd1a38225ff3f60632de09a723a99f2144740b7fbda66b
      languageName: node
      linkType: hard
    
    "braces@npm:^3.0.3":
      version: 3.0.3
      resolution: "braces@npm:3.0.3"
      dependencies:
        fill-range: ^7.1.1
      checksum: b95aa0b3bd909f6cd1720ffcf031aeaf46154dd88b4da01f9a1d3f7ea866a79eba76a6d01cbc3c422b2ee5cdc39a4f02491058d5df0d7bf6e6a162a832df1f69
      languageName: node
      linkType: hard
    
    "browserslist@npm:^4.28.1":
      version: 4.28.2
      resolution: "browserslist@npm:4.28.2"
      dependencies:
        baseline-browser-mapping: ^2.10.12
        caniuse-lite: ^1.0.30001782
        electron-to-chromium: ^1.5.328
        node-releases: ^2.0.36
        update-browserslist-db: ^1.2.3
      bin:
        browserslist: cli.js
      checksum: 702cdd3462b5eb6f8a9bb3bf7bdc6d6a4141ced6935bb44edb7f3d40edd66198775f2b4a9178682535391293e04e625ba2b5943546d692f42ea080323cecb25e
      languageName: node
      linkType: hard
    
    "buffer-from@npm:^1.0.0":
      version: 1.1.2
      resolution: "buffer-from@npm:1.1.2"
      checksum: 0448524a562b37d4d7ed9efd91685a5b77a50672c556ea254ac9a6d30e3403a517d8981f10e565db24e8339413b43c97ca2951f10e399c6125a0d8911f5679bb
      languageName: node
      linkType: hard
    
    "call-bind-apply-helpers@npm:^1.0.1, call-bind-apply-helpers@npm:^1.0.2":
      version: 1.0.2
      resolution: "call-bind-apply-helpers@npm:1.0.2"
      dependencies:
        es-errors: ^1.3.0
        function-bind: ^1.1.2
      checksum: b2863d74fcf2a6948221f65d95b91b4b2d90cfe8927650b506141e669f7d5de65cea191bf788838bc40d13846b7886c5bc5c84ab96c3adbcf88ad69a72fcdc6b
      languageName: node
      linkType: hard
    
    "call-bind@npm:^1.0.7, call-bind@npm:^1.0.8, call-bind@npm:^1.0.9":
      version: 1.0.9
      resolution: "call-bind@npm:1.0.9"
      dependencies:
        call-bind-apply-helpers: ^1.0.2
        es-define-property: ^1.0.1
        get-intrinsic: ^1.3.0
        set-function-length: ^1.2.2
      checksum: fb5a8037bd7e2417ebda428f7ba57cbb3152e92f355aa8a20a4b2be9657f67b84e3812502620047ccf12c6542584a7d5bfb8d080cb636eb178b270bec0bfc010
      languageName: node
      linkType: hard
    
    "call-bound@npm:^1.0.2, call-bound@npm:^1.0.3, call-bound@npm:^1.0.4":
      version: 1.0.4
      resolution: "call-bound@npm:1.0.4"
      dependencies:
        call-bind-apply-helpers: ^1.0.2
        get-intrinsic: ^1.3.0
      checksum: 2f6399488d1c272f56306ca60ff696575e2b7f31daf23bc11574798c84d9f2759dceb0cb1f471a85b77f28962a7ac6411f51d283ea2e45319009a19b6ccab3b2
      languageName: node
      linkType: hard
    
    "callsites@npm:^3.0.0":
      version: 3.1.0
      resolution: "callsites@npm:3.1.0"
      checksum: 072d17b6abb459c2ba96598918b55868af677154bec7e73d222ef95a8fdb9bbf7dae96a8421085cdad8cd190d86653b5b6dc55a4484f2e5b2e27d5e0c3fc15b3
      languageName: node
      linkType: hard
    
    "caniuse-lite@npm:^1.0.30001782":
      version: 1.0.30001792
      resolution: "caniuse-lite@npm:1.0.30001792"
      checksum: 25e2ba0feb792fbc99e98b236653dccec6387bf9351510b5401ffcb0c25193e47a2ba37e5ce44f92e0fb023670fe077b938ab8e1bad53bc03e95673e5bd5d439
      languageName: node
      linkType: hard
    
    "chalk@npm:^2.3.0":
      version: 2.4.2
      resolution: "chalk@npm:2.4.2"
      dependencies:
        ansi-styles: ^3.2.1
        escape-string-regexp: ^1.0.5
        supports-color: ^5.3.0
      checksum: ec3661d38fe77f681200f878edbd9448821924e0f93a9cefc0e26a33b145f1027a2084bf19967160d11e1f03bfe4eaffcabf5493b89098b2782c3fe0b03d80c2
      languageName: node
      linkType: hard
    
    "chalk@npm:^4.0.0":
      version: 4.1.2
      resolution: "chalk@npm:4.1.2"
      dependencies:
        ansi-styles: ^4.1.0
        supports-color: ^7.1.0
      checksum: fe75c9d5c76a7a98d45495b91b2172fa3b7a09e0cc9370e5c8feb1c567b85c4288e2b3fded7cfdd7359ac28d6b3844feb8b82b8686842e93d23c827c417e83fc
      languageName: node
      linkType: hard
    
    "chrome-trace-event@npm:^1.0.2":
      version: 1.0.4
      resolution: "chrome-trace-event@npm:1.0.4"
      checksum: fcbbd9dd0cd5b48444319007cc0c15870fd8612cc0df320908aa9d5e8a244084d48571eb28bf3c58c19327d2c5838f354c2d89fac3956d8e992273437401ac19
      languageName: node
      linkType: hard
    
    "ci-info@npm:^3.2.0":
      version: 3.9.0
      resolution: "ci-info@npm:3.9.0"
      checksum: 6b19dc9b2966d1f8c2041a838217299718f15d6c4b63ae36e4674edd2bee48f780e94761286a56aa59eb305a85fbea4ddffb7630ec063e7ec7e7e5ad42549a87
      languageName: node
      linkType: hard
    
    "clone-deep@npm:^4.0.1":
      version: 4.0.1
      resolution: "clone-deep@npm:4.0.1"
      dependencies:
        is-plain-object: ^2.0.4
        kind-of: ^6.0.2
        shallow-clone: ^3.0.0
      checksum: 770f912fe4e6f21873c8e8fbb1e99134db3b93da32df271d00589ea4a29dbe83a9808a322c93f3bcaf8584b8b4fa6fc269fc8032efbaa6728e0c9886c74467d2
      languageName: node
      linkType: hard
    
    "color-convert@npm:^1.9.0":
      version: 1.9.3
      resolution: "color-convert@npm:1.9.3"
      dependencies:
        color-name: 1.1.3
      checksum: fd7a64a17cde98fb923b1dd05c5f2e6f7aefda1b60d67e8d449f9328b4e53b228a428fd38bfeaeb2db2ff6b6503a776a996150b80cdf224062af08a5c8a3a203
      languageName: node
      linkType: hard
    
    "color-convert@npm:^2.0.1":
      version: 2.0.1
      resolution: "color-convert@npm:2.0.1"
      dependencies:
        color-name: ~1.1.4
      checksum: 79e6bdb9fd479a205c71d89574fccfb22bd9053bd98c6c4d870d65c132e5e904e6034978e55b43d69fcaa7433af2016ee203ce76eeba9cfa554b373e7f7db336
      languageName: node
      linkType: hard
    
    "color-name@npm:1.1.3":
      version: 1.1.3
      resolution: "color-name@npm:1.1.3"
      checksum: 09c5d3e33d2105850153b14466501f2bfb30324a2f76568a408763a3b7433b0e50e5b4ab1947868e65cb101bb7cb75029553f2c333b6d4b8138a73fcc133d69d
      languageName: node
      linkType: hard
    
    "color-name@npm:~1.1.4":
      version: 1.1.4
      resolution: "color-name@npm:1.1.4"
      checksum: b0445859521eb4021cd0fb0cc1a75cecf67fceecae89b63f62b201cca8d345baf8b952c966862a9d9a2632987d4f6581f0ec8d957dfacece86f0a7919316f610
      languageName: node
      linkType: hard
    
    "colorette@npm:^2.0.14":
      version: 2.0.20
      resolution: "colorette@npm:2.0.20"
      checksum: 0c016fea2b91b733eb9f4bcdb580018f52c0bc0979443dad930e5037a968237ac53d9beb98e218d2e9235834f8eebce7f8e080422d6194e957454255bde71d3d
      languageName: node
      linkType: hard
    
    "combined-stream@npm:^1.0.8":
      version: 1.0.8
      resolution: "combined-stream@npm:1.0.8"
      dependencies:
        delayed-stream: ~1.0.0
      checksum: 49fa4aeb4916567e33ea81d088f6584749fc90c7abec76fd516bf1c5aa5c79f3584b5ba3de6b86d26ddd64bae5329c4c7479343250cfe71c75bb366eae53bb7c
      languageName: node
      linkType: hard
    
    "commander@npm:7":
      version: 7.2.0
      resolution: "commander@npm:7.2.0"
      checksum: 53501cbeee61d5157546c0bef0fedb6cdfc763a882136284bed9a07225f09a14b82d2a84e7637edfd1a679fb35ed9502fd58ef1d091e6287f60d790147f68ddc
      languageName: node
      linkType: hard
    
    "commander@npm:^10.0.1":
      version: 10.0.1
      resolution: "commander@npm:10.0.1"
      checksum: 436901d64a818295803c1996cd856621a74f30b9f9e28a588e726b2b1670665bccd7c1a77007ebf328729f0139838a88a19265858a0fa7a8728c4656796db948
      languageName: node
      linkType: hard
    
    "commander@npm:^2.20.0":
      version: 2.20.3
      resolution: "commander@npm:2.20.3"
      checksum: ab8c07884e42c3a8dbc5dd9592c606176c7eb5c1ca5ff274bcf907039b2c41de3626f684ea75ccf4d361ba004bbaff1f577d5384c155f3871e456bdf27becf9e
      languageName: node
      linkType: hard
    
    "commander@npm:^8.3.0":
      version: 8.3.0
      resolution: "commander@npm:8.3.0"
      checksum: 0f82321821fc27b83bd409510bb9deeebcfa799ff0bf5d102128b500b7af22872c0c92cb6a0ebc5a4cf19c6b550fba9cedfa7329d18c6442a625f851377bacf0
      languageName: node
      linkType: hard
    
    "commander@npm:^9.4.1":
      version: 9.5.0
      resolution: "commander@npm:9.5.0"
      checksum: c7a3e27aa59e913b54a1bafd366b88650bc41d6651f0cbe258d4ff09d43d6a7394232a4dadd0bf518b3e696fdf595db1028a0d82c785b88bd61f8a440cecfade
      languageName: node
      linkType: hard
    
    "compute-gcd@npm:^1.2.1":
      version: 1.2.1
      resolution: "compute-gcd@npm:1.2.1"
      dependencies:
        validate.io-array: ^1.0.3
        validate.io-function: ^1.0.2
        validate.io-integer-array: ^1.0.0
      checksum: 51cf33b75f7c8db5142fcb99a9d84a40260993fed8e02a7ab443834186c3ab99b3fd20b30ad9075a6a9d959d69df6da74dd3be8a59c78d9f2fe780ebda8242e1
      languageName: node
      linkType: hard
    
    "compute-lcm@npm:^1.1.2":
      version: 1.1.2
      resolution: "compute-lcm@npm:1.1.2"
      dependencies:
        compute-gcd: ^1.2.1
        validate.io-array: ^1.0.3
        validate.io-function: ^1.0.2
        validate.io-integer-array: ^1.0.0
      checksum: d499ab57dcb48e8d0fd233b99844a06d1cc56115602c920c586e998ebba60293731f5b6976e8a1e83ae6cbfe86716f62d9432e8d94913fed8bd8352f447dc917
      languageName: node
      linkType: hard
    
    "concat-map@npm:0.0.1":
      version: 0.0.1
      resolution: "concat-map@npm:0.0.1"
      checksum: 902a9f5d8967a3e2faf138d5cb784b9979bad2e6db5357c5b21c568df4ebe62bcb15108af1b2253744844eb964fc023fbd9afbbbb6ddd0bcc204c6fb5b7bf3af
      languageName: node
      linkType: hard
    
    "cose-base@npm:^1.0.0":
      version: 1.0.3
      resolution: "cose-base@npm:1.0.3"
      dependencies:
        layout-base: ^1.0.0
      checksum: 3f3d592316df74adb215ca91e430f1c22b6e890bc0025b32ae1f6464c73fdb9614816cb40a8d38b40c6a3e9e7b8c64eda90d53fb9a4a6948abec17dad496f30b
      languageName: node
      linkType: hard
    
    "cose-base@npm:^2.2.0":
      version: 2.2.0
      resolution: "cose-base@npm:2.2.0"
      dependencies:
        layout-base: ^2.0.0
      checksum: 2e694f340bf216c71fc126d237578a4168e138720011d0b48c88bf9bfc7fd45f912eff2c603ef3d1307d6e3ce6f465ed382285a764a3a6620db590c5457d2557
      languageName: node
      linkType: hard
    
    "crelt@npm:^1.0.5, crelt@npm:^1.0.6":
      version: 1.0.6
      resolution: "crelt@npm:1.0.6"
      checksum: dad842093371ad702afbc0531bfca2b0a8dd920b23a42f26e66dabbed9aad9acd5b9030496359545ef3937c3aced0fd4ac39f7a2d280a23ddf9eb7fdcb94a69f
      languageName: node
      linkType: hard
    
    "cross-spawn@npm:^7.0.3, cross-spawn@npm:^7.0.6":
      version: 7.0.6
      resolution: "cross-spawn@npm:7.0.6"
      dependencies:
        path-key: ^3.1.0
        shebang-command: ^2.0.0
        which: ^2.0.1
      checksum: 8d306efacaf6f3f60e0224c287664093fa9185680b2d195852ba9a863f85d02dcc737094c6e512175f8ee0161f9b87c73c6826034c2422e39de7d6569cf4503b
      languageName: node
      linkType: hard
    
    "css-loader@npm:^6.7.1":
      version: 6.11.0
      resolution: "css-loader@npm:6.11.0"
      dependencies:
        icss-utils: ^5.1.0
        postcss: ^8.4.33
        postcss-modules-extract-imports: ^3.1.0
        postcss-modules-local-by-default: ^4.0.5
        postcss-modules-scope: ^3.2.0
        postcss-modules-values: ^4.0.0
        postcss-value-parser: ^4.2.0
        semver: ^7.5.4
      peerDependencies:
        "@rspack/core": 0.x || 1.x
        webpack: ^5.0.0
      peerDependenciesMeta:
        "@rspack/core":
          optional: true
        webpack:
          optional: true
      checksum: 5c8d35975a7121334905394e88e28f05df72f037dbed2fb8fec4be5f0b313ae73a13894ba791867d4a4190c35896da84a7fd0c54fb426db55d85ba5e714edbe3
      languageName: node
      linkType: hard
    
    "cssesc@npm:^3.0.0":
      version: 3.0.0
      resolution: "cssesc@npm:3.0.0"
      bin:
        cssesc: bin/cssesc
      checksum: f8c4ababffbc5e2ddf2fa9957dda1ee4af6048e22aeda1869d0d00843223c1b13ad3f5d88b51caa46c994225eacb636b764eb807a8883e2fb6f99b4f4e8c48b2
      languageName: node
      linkType: hard
    
    "cssom@npm:^0.5.0":
      version: 0.5.0
      resolution: "cssom@npm:0.5.0"
      checksum: 823471aa30091c59e0a305927c30e7768939b6af70405808f8d2ce1ca778cddcb24722717392438329d1691f9a87cb0183b64b8d779b56a961546d54854fde01
      languageName: node
      linkType: hard
    
    "cssom@npm:~0.3.6":
      version: 0.3.8
      resolution: "cssom@npm:0.3.8"
      checksum: 24beb3087c76c0d52dd458be9ee1fbc80ac771478a9baef35dd258cdeb527c68eb43204dd439692bb2b1ae5272fa5f2946d10946edab0d04f1078f85e06bc7f6
      languageName: node
      linkType: hard
    
    "cssstyle@npm:^2.3.0":
      version: 2.3.0
      resolution: "cssstyle@npm:2.3.0"
      dependencies:
        cssom: ~0.3.6
      checksum: 5f05e6fd2e3df0b44695c2f08b9ef38b011862b274e320665176467c0725e44a53e341bc4959a41176e83b66064ab786262e7380fd1cabeae6efee0d255bb4e3
      languageName: node
      linkType: hard
    
    "csstype@npm:3.0.10":
      version: 3.0.10
      resolution: "csstype@npm:3.0.10"
      checksum: 20a8fa324f2b33ddf94aa7507d1b6ab3daa6f3cc308888dc50126585d7952f2471de69b2dbe0635d1fdc31223fef8e070842691877e725caf456e2378685a631
      languageName: node
      linkType: hard
    
    "csstype@npm:^3.2.2":
      version: 3.2.3
      resolution: "csstype@npm:3.2.3"
      checksum: cb882521b3398958a1ce6ca98c011aec0bde1c77ecaf8a1dd4db3b112a189939beae3b1308243b2fe50fc27eb3edeb0f73a5a4d91d928765dc6d5ecc7bda92ee
      languageName: node
      linkType: hard
    
    "cytoscape-cose-bilkent@npm:^4.1.0":
      version: 4.1.0
      resolution: "cytoscape-cose-bilkent@npm:4.1.0"
      dependencies:
        cose-base: ^1.0.0
      peerDependencies:
        cytoscape: ^3.2.0
      checksum: bea6aa139e21bf4135b01b99f8778eed061e074d1a1689771597e8164a999d66f4075d46be584b0a88a5447f9321f38c90c8821df6a9322faaf5afebf4848d97
      languageName: node
      linkType: hard
    
    "cytoscape-fcose@npm:^2.2.0":
      version: 2.2.0
      resolution: "cytoscape-fcose@npm:2.2.0"
      dependencies:
        cose-base: ^2.2.0
      peerDependencies:
        cytoscape: ^3.2.0
      checksum: 94ffe6f131f9c08c2a0a7a6ce1c6c5e523a395bf8d84eba6d4a5f85e23f33788ea3ff807540861a5f78a6914a27729e06a7e6f66784f4f28ea1c030acf500121
      languageName: node
      linkType: hard
    
    "cytoscape@npm:^3.33.1":
      version: 3.33.3
      resolution: "cytoscape@npm:3.33.3"
      checksum: 19186371a9afd540dd130efd8fca6ada2df375e691b018c0a4b73cb9c6d9c93126b23fa2699f550f6da36a0d0cac1bd943a7733e05022d240c2db47f235b14d1
      languageName: node
      linkType: hard
    
    "d3-array@npm:1 - 2":
      version: 2.12.1
      resolution: "d3-array@npm:2.12.1"
      dependencies:
        internmap: ^1.0.0
      checksum: 97853b7b523aded17078f37c67742f45d81e88dda2107ae9994c31b9e36c5fa5556c4c4cf39650436f247813602dfe31bf7ad067ff80f127a16903827f10c6eb
      languageName: node
      linkType: hard
    
    "d3-array@npm:2 - 3, d3-array@npm:2.10.0 - 3, d3-array@npm:2.5.0 - 3, d3-array@npm:3, d3-array@npm:^3.2.0":
      version: 3.2.4
      resolution: "d3-array@npm:3.2.4"
      dependencies:
        internmap: 1 - 2
      checksum: a5976a6d6205f69208478bb44920dd7ce3e788c9dceb86b304dbe401a4bfb42ecc8b04c20facde486e9adcb488b5d1800d49393a3f81a23902b68158e12cddd0
      languageName: node
      linkType: hard
    
    "d3-axis@npm:3":
      version: 3.0.0
      resolution: "d3-axis@npm:3.0.0"
      checksum: 227ddaa6d4bad083539c1ec245e2228b4620cca941997a8a650cb0af239375dc20271993127eedac66f0543f331027aca09385e1e16eed023f93eac937cddf0b
      languageName: node
      linkType: hard
    
    "d3-brush@npm:3":
      version: 3.0.0
      resolution: "d3-brush@npm:3.0.0"
      dependencies:
        d3-dispatch: 1 - 3
        d3-drag: 2 - 3
        d3-interpolate: 1 - 3
        d3-selection: 3
        d3-transition: 3
      checksum: 1d042167769a02ac76271c71e90376d7184206e489552b7022a8ec2860209fe269db55e0a3430f3dcbe13b6fec2ff65b1adeaccba3218991b38e022390df72e3
      languageName: node
      linkType: hard
    
    "d3-chord@npm:3":
      version: 3.0.1
      resolution: "d3-chord@npm:3.0.1"
      dependencies:
        d3-path: 1 - 3
      checksum: ddf35d41675e0f8738600a8a2f05bf0858def413438c12cba357c5802ecc1014c80a658acbbee63cbad2a8c747912efb2358455d93e59906fe37469f1dc6b78b
      languageName: node
      linkType: hard
    
    "d3-color@npm:1 - 3, d3-color@npm:3":
      version: 3.1.0
      resolution: "d3-color@npm:3.1.0"
      checksum: 4931fbfda5d7c4b5cfa283a13c91a954f86e3b69d75ce588d06cde6c3628cebfc3af2069ccf225e982e8987c612aa7948b3932163ce15eb3c11cd7c003f3ee3b
      languageName: node
      linkType: hard
    
    "d3-contour@npm:4":
      version: 4.0.2
      resolution: "d3-contour@npm:4.0.2"
      dependencies:
        d3-array: ^3.2.0
      checksum: 56aa082c1acf62a45b61c8d29fdd307041785aa17d9a07de7d1d848633769887a33fb6823888afa383f31c460d0f21d24756593e84e334ddb92d774214d32f1b
      languageName: node
      linkType: hard
    
    "d3-delaunay@npm:6":
      version: 6.0.4
      resolution: "d3-delaunay@npm:6.0.4"
      dependencies:
        delaunator: 5
      checksum: ce6d267d5ef21a8aeadfe4606329fc80a22ab6e7748d47bc220bcc396ee8be84b77a5473033954c5ac4aa522d265ddc45d4165d30fe4787dd60a15ea66b9bbb4
      languageName: node
      linkType: hard
    
    "d3-dispatch@npm:1 - 3, d3-dispatch@npm:3":
      version: 3.0.1
      resolution: "d3-dispatch@npm:3.0.1"
      checksum: fdfd4a230f46463e28e5b22a45dd76d03be9345b605e1b5dc7d18bd7ebf504e6c00ae123fd6d03e23d9e2711e01f0e14ea89cd0632545b9f0c00b924ba4be223
      languageName: node
      linkType: hard
    
    "d3-drag@npm:2 - 3, d3-drag@npm:3":
      version: 3.0.0
      resolution: "d3-drag@npm:3.0.0"
      dependencies:
        d3-dispatch: 1 - 3
        d3-selection: 3
      checksum: d297231e60ecd633b0d076a63b4052b436ddeb48b5a3a11ff68c7e41a6774565473a6b064c5e9256e88eca6439a917ab9cea76032c52d944ddbf4fd289e31111
      languageName: node
      linkType: hard
    
    "d3-dsv@npm:1 - 3, d3-dsv@npm:3":
      version: 3.0.1
      resolution: "d3-dsv@npm:3.0.1"
      dependencies:
        commander: 7
        iconv-lite: 0.6
        rw: 1
      bin:
        csv2json: bin/dsv2json.js
        csv2tsv: bin/dsv2dsv.js
        dsv2dsv: bin/dsv2dsv.js
        dsv2json: bin/dsv2json.js
        json2csv: bin/json2dsv.js
        json2dsv: bin/json2dsv.js
        json2tsv: bin/json2dsv.js
        tsv2csv: bin/dsv2dsv.js
        tsv2json: bin/dsv2json.js
      checksum: 5fc0723647269d5dccd181d74f2265920ab368a2868b0b4f55ffa2fecdfb7814390ea28622cd61ee5d9594ab262879509059544e9f815c54fe76fbfb4ffa4c8a
      languageName: node
      linkType: hard
    
    "d3-ease@npm:1 - 3, d3-ease@npm:3":
      version: 3.0.1
      resolution: "d3-ease@npm:3.0.1"
      checksum: 06e2ee5326d1e3545eab4e2c0f84046a123dcd3b612e68858219aa034da1160333d9ce3da20a1d3486d98cb5c2a06f7d233eee1bc19ce42d1533458bd85dedcd
      languageName: node
      linkType: hard
    
    "d3-fetch@npm:3":
      version: 3.0.1
      resolution: "d3-fetch@npm:3.0.1"
      dependencies:
        d3-dsv: 1 - 3
      checksum: 382dcea06549ef82c8d0b719e5dc1d96286352579e3b51b20f71437f5800323315b09cf7dcfd4e1f60a41e1204deb01758470cea257d2285a7abd9dcec806984
      languageName: node
      linkType: hard
    
    "d3-force@npm:3":
      version: 3.0.0
      resolution: "d3-force@npm:3.0.0"
      dependencies:
        d3-dispatch: 1 - 3
        d3-quadtree: 1 - 3
        d3-timer: 1 - 3
      checksum: 6c7e96438cab62fa32aeadb0ade3297b62b51f81b1b38b0a60a5ec9fd627d74090c1189654d92df2250775f31b06812342f089f1d5947de9960a635ee3581def
      languageName: node
      linkType: hard
    
    "d3-format@npm:1 - 3, d3-format@npm:3":
      version: 3.1.2
      resolution: "d3-format@npm:3.1.2"
      checksum: 2ce13417b3186311df3fd924028cd516ec3e96d7c3eb6df9c83f6c2ed43de1717e6c5119a385b7744ef84e2b8a4c678ad95a2b2998391803ceb0d809e235cff4
      languageName: node
      linkType: hard
    
    "d3-geo@npm:3":
      version: 3.1.1
      resolution: "d3-geo@npm:3.1.1"
      dependencies:
        d3-array: 2.5.0 - 3
      checksum: 3cc4bb50af5d2d4858d2df1729a1777b7fd361854079d9faab1166186c988d2cba0d11911da0c4598d5e22fae91d79113ed262a9f98cabdbc6dbf7c30e5c0363
      languageName: node
      linkType: hard
    
    "d3-hierarchy@npm:3":
      version: 3.1.2
      resolution: "d3-hierarchy@npm:3.1.2"
      checksum: 0fd946a8c5fd4686d43d3e11bbfc2037a145fda29d2261ccd0e36f70b66af6d7638e2c0c7112124d63fc3d3127197a00a6aecf676bd5bd392a94d7235a214263
      languageName: node
      linkType: hard
    
    "d3-interpolate@npm:1 - 3, d3-interpolate@npm:1.2.0 - 3, d3-interpolate@npm:3":
      version: 3.0.1
      resolution: "d3-interpolate@npm:3.0.1"
      dependencies:
        d3-color: 1 - 3
      checksum: a42ba314e295e95e5365eff0f604834e67e4a3b3c7102458781c477bd67e9b24b6bb9d8e41ff5521050a3f2c7c0c4bbbb6e187fd586daa3980943095b267e78b
      languageName: node
      linkType: hard
    
    "d3-path@npm:1":
      version: 1.0.9
      resolution: "d3-path@npm:1.0.9"
      checksum: d4382573baf9509a143f40944baeff9fead136926aed6872f7ead5b3555d68925f8a37935841dd51f1d70b65a294fe35c065b0906fb6e42109295f6598fc16d0
      languageName: node
      linkType: hard
    
    "d3-path@npm:1 - 3, d3-path@npm:3, d3-path@npm:^3.1.0":
      version: 3.1.0
      resolution: "d3-path@npm:3.1.0"
      checksum: 2306f1bd9191e1eac895ec13e3064f732a85f243d6e627d242a313f9777756838a2215ea11562f0c7630c7c3b16a19ec1fe0948b1c82f3317fac55882f6ee5d8
      languageName: node
      linkType: hard
    
    "d3-polygon@npm:3":
      version: 3.0.1
      resolution: "d3-polygon@npm:3.0.1"
      checksum: 0b85c532517895544683849768a2c377cee3801ef8ccf3fa9693c8871dd21a0c1a2a0fc75ff54192f0ba2c562b0da2bc27f5bf959dfafc7fa23573b574865d2c
      languageName: node
      linkType: hard
    
    "d3-quadtree@npm:1 - 3, d3-quadtree@npm:3":
      version: 3.0.1
      resolution: "d3-quadtree@npm:3.0.1"
      checksum: 5469d462763811475f34a7294d984f3eb100515b0585ca5b249656f6b1a6e99b20056a2d2e463cc9944b888896d2b1d07859c50f9c0cf23438df9cd2e3146066
      languageName: node
      linkType: hard
    
    "d3-random@npm:3":
      version: 3.0.1
      resolution: "d3-random@npm:3.0.1"
      checksum: a70ad8d1cabe399ebeb2e482703121ac8946a3b336830b518da6848b9fdd48a111990fc041dc716f16885a72176ffa2898f2a250ca3d363ecdba5ef92b18e131
      languageName: node
      linkType: hard
    
    "d3-sankey@npm:^0.12.3":
      version: 0.12.3
      resolution: "d3-sankey@npm:0.12.3"
      dependencies:
        d3-array: 1 - 2
        d3-shape: ^1.2.0
      checksum: df1cb9c9d02dd8fd14040e89f112f0da58c03bd7529fa001572a6925a51496d1d82ff25d9fedb6c429a91645fbd2476c19891e535ac90c8bc28337c33ee21c87
      languageName: node
      linkType: hard
    
    "d3-scale-chromatic@npm:3":
      version: 3.1.0
      resolution: "d3-scale-chromatic@npm:3.1.0"
      dependencies:
        d3-color: 1 - 3
        d3-interpolate: 1 - 3
      checksum: ab6324bd8e1f708e731e02ab44e09741efda2b174cea1d8ca21e4a87546295e99856bc44e2fd3890f228849c96bccfbcf922328f95be6a7df117453eb5cf22c9
      languageName: node
      linkType: hard
    
    "d3-scale@npm:4":
      version: 4.0.2
      resolution: "d3-scale@npm:4.0.2"
      dependencies:
        d3-array: 2.10.0 - 3
        d3-format: 1 - 3
        d3-interpolate: 1.2.0 - 3
        d3-time: 2.1.1 - 3
        d3-time-format: 2 - 4
      checksum: a9c770d283162c3bd11477c3d9d485d07f8db2071665f1a4ad23eec3e515e2cefbd369059ec677c9ac849877d1a765494e90e92051d4f21111aa56791c98729e
      languageName: node
      linkType: hard
    
    "d3-selection@npm:2 - 3, d3-selection@npm:3, d3-selection@npm:^3.0.0":
      version: 3.0.0
      resolution: "d3-selection@npm:3.0.0"
      checksum: f4e60e133309115b99f5b36a79ae0a19d71ee6e2d5e3c7216ef3e75ebd2cb1e778c2ed2fa4c01bef35e0dcbd96c5428f5bd6ca2184fe2957ed582fde6841cbc5
      languageName: node
      linkType: hard
    
    "d3-shape@npm:3":
      version: 3.2.0
      resolution: "d3-shape@npm:3.2.0"
      dependencies:
        d3-path: ^3.1.0
      checksum: de2af5fc9a93036a7b68581ca0bfc4aca2d5a328aa7ba7064c11aedd44d24f310c20c40157cb654359d4c15c3ef369f95ee53d71221017276e34172c7b719cfa
      languageName: node
      linkType: hard
    
    "d3-shape@npm:^1.2.0":
      version: 1.3.7
      resolution: "d3-shape@npm:1.3.7"
      dependencies:
        d3-path: 1
      checksum: 46566a3ab64a25023653bf59d64e81e9e6c987e95be985d81c5cedabae5838bd55f4a201a6b69069ca862eb63594cd263cac9034afc2b0e5664dfe286c866129
      languageName: node
      linkType: hard
    
    "d3-time-format@npm:2 - 4, d3-time-format@npm:4":
      version: 4.1.0
      resolution: "d3-time-format@npm:4.1.0"
      dependencies:
        d3-time: 1 - 3
      checksum: 7342bce28355378152bbd4db4e275405439cabba082d9cd01946d40581140481c8328456d91740b0fe513c51ec4a467f4471ffa390c7e0e30ea30e9ec98fcdf4
      languageName: node
      linkType: hard
    
    "d3-time@npm:1 - 3, d3-time@npm:2.1.1 - 3, d3-time@npm:3":
      version: 3.1.0
      resolution: "d3-time@npm:3.1.0"
      dependencies:
        d3-array: 2 - 3
      checksum: 613b435352a78d9f31b7f68540788186d8c331b63feca60ad21c88e9db1989fe888f97f242322ebd6365e45ec3fb206a4324cd4ca0dfffa1d9b5feb856ba00a7
      languageName: node
      linkType: hard
    
    "d3-timer@npm:1 - 3, d3-timer@npm:3":
      version: 3.0.1
      resolution: "d3-timer@npm:3.0.1"
      checksum: 1cfddf86d7bca22f73f2c427f52dfa35c49f50d64e187eb788dcad6e927625c636aa18ae4edd44d084eb9d1f81d8ca4ec305dae7f733c15846a824575b789d73
      languageName: node
      linkType: hard
    
    "d3-transition@npm:2 - 3, d3-transition@npm:3, d3-transition@npm:^3.0.1":
      version: 3.0.1
      resolution: "d3-transition@npm:3.0.1"
      dependencies:
        d3-color: 1 - 3
        d3-dispatch: 1 - 3
        d3-ease: 1 - 3
        d3-interpolate: 1 - 3
        d3-timer: 1 - 3
      peerDependencies:
        d3-selection: 2 - 3
      checksum: cb1e6e018c3abf0502fe9ff7b631ad058efb197b5e14b973a410d3935aead6e3c07c67d726cfab258e4936ef2667c2c3d1cd2037feb0765f0b4e1d3b8788c0ea
      languageName: node
      linkType: hard
    
    "d3-zoom@npm:3":
      version: 3.0.0
      resolution: "d3-zoom@npm:3.0.0"
      dependencies:
        d3-dispatch: 1 - 3
        d3-drag: 2 - 3
        d3-interpolate: 1 - 3
        d3-selection: 2 - 3
        d3-transition: 2 - 3
      checksum: 8056e3527281cfd1ccbcbc458408f86973b0583e9dac00e51204026d1d36803ca437f970b5736f02fafed9f2b78f145f72a5dbc66397e02d4d95d4c594b8ff54
      languageName: node
      linkType: hard
    
    "d3@npm:^7.9.0":
      version: 7.9.0
      resolution: "d3@npm:7.9.0"
      dependencies:
        d3-array: 3
        d3-axis: 3
        d3-brush: 3
        d3-chord: 3
        d3-color: 3
        d3-contour: 4
        d3-delaunay: 6
        d3-dispatch: 3
        d3-drag: 3
        d3-dsv: 3
        d3-ease: 3
        d3-fetch: 3
        d3-force: 3
        d3-format: 3
        d3-geo: 3
        d3-hierarchy: 3
        d3-interpolate: 3
        d3-path: 3
        d3-polygon: 3
        d3-quadtree: 3
        d3-random: 3
        d3-scale: 4
        d3-scale-chromatic: 3
        d3-selection: 3
        d3-shape: 3
        d3-time: 3
        d3-time-format: 4
        d3-timer: 3
        d3-transition: 3
        d3-zoom: 3
      checksum: 1c0e9135f1fb78aa32b187fafc8b56ae6346102bd0e4e5e5a5339611a51e6038adbaa293fae373994228100eddd87320e930b1be922baeadc07c9fd43d26d99b
      languageName: node
      linkType: hard
    
    "dagre-d3-es@npm:7.0.14":
      version: 7.0.14
      resolution: "dagre-d3-es@npm:7.0.14"
      dependencies:
        d3: ^7.9.0
        lodash-es: ^4.17.21
      checksum: 02487b979711f4902f5413b6c3e477547e64e670da08e1176ecbcdfb680f42d4fc4e38977b6dcb99ed2682f82713d8cc1b1b2c8e5a5282980d8ca4242d4554b7
      languageName: node
      linkType: hard
    
    "data-urls@npm:^2.0.0":
      version: 2.0.0
      resolution: "data-urls@npm:2.0.0"
      dependencies:
        abab: ^2.0.3
        whatwg-mimetype: ^2.3.0
        whatwg-url: ^8.0.0
      checksum: 97caf828aac25e25e04ba6869db0f99c75e6859bb5b424ada28d3e7841941ebf08ddff3c1b1bb4585986bd507a5d54c2a716853ea6cb98af877400e637393e71
      languageName: node
      linkType: hard
    
    "data-urls@npm:^3.0.2":
      version: 3.0.2
      resolution: "data-urls@npm:3.0.2"
      dependencies:
        abab: ^2.0.6
        whatwg-mimetype: ^3.0.0
        whatwg-url: ^11.0.0
      checksum: 033fc3dd0fba6d24bc9a024ddcf9923691dd24f90a3d26f6545d6a2f71ec6956f93462f2cdf2183cc46f10dc01ed3bcb36731a8208456eb1a08147e571fe2a76
      languageName: node
      linkType: hard
    
    "data-view-buffer@npm:^1.0.2":
      version: 1.0.2
      resolution: "data-view-buffer@npm:1.0.2"
      dependencies:
        call-bound: ^1.0.3
        es-errors: ^1.3.0
        is-data-view: ^1.0.2
      checksum: 1e1cd509c3037ac0f8ba320da3d1f8bf1a9f09b0be09394b5e40781b8cc15ff9834967ba7c9f843a425b34f9fe14ce44cf055af6662c44263424c1eb8d65659b
      languageName: node
      linkType: hard
    
    "data-view-byte-length@npm:^1.0.2":
      version: 1.0.2
      resolution: "data-view-byte-length@npm:1.0.2"
      dependencies:
        call-bound: ^1.0.3
        es-errors: ^1.3.0
        is-data-view: ^1.0.2
      checksum: 3600c91ced1cfa935f19ef2abae11029e01738de8d229354d3b2a172bf0d7e4ed08ff8f53294b715569fdf72dfeaa96aa7652f479c0f60570878d88e7e8bddf6
      languageName: node
      linkType: hard
    
    "data-view-byte-offset@npm:^1.0.1":
      version: 1.0.1
      resolution: "data-view-byte-offset@npm:1.0.1"
      dependencies:
        call-bound: ^1.0.2
        es-errors: ^1.3.0
        is-data-view: ^1.0.1
      checksum: 8dd492cd51d19970876626b5b5169fbb67ca31ec1d1d3238ee6a71820ca8b80cafb141c485999db1ee1ef02f2cc3b99424c5eda8d59e852d9ebb79ab290eb5ee
      languageName: node
      linkType: hard
    
    "dayjs@npm:^1.11.19":
      version: 1.11.20
      resolution: "dayjs@npm:1.11.20"
      checksum: 26f4867c4ae1315885ac3e560906d3f8c49cb6a1303e6fdd5f87ace3b814b07a45f036facad70299cea36f3eb62ee2070dd239079c56d8f55e4e684afb752a67
      languageName: node
      linkType: hard
    
    "debug@npm:4, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.4.3":
      version: 4.4.3
      resolution: "debug@npm:4.4.3"
      dependencies:
        ms: ^2.1.3
      peerDependenciesMeta:
        supports-color:
          optional: true
      checksum: 4805abd570e601acdca85b6aa3757186084a45cff9b2fa6eee1f3b173caa776b45f478b2a71a572d616d2010cea9211d0ac4a02a610e4c18ac4324bde3760834
      languageName: node
      linkType: hard
    
    "decimal.js@npm:^10.4.2":
      version: 10.6.0
      resolution: "decimal.js@npm:10.6.0"
      checksum: 9302b990cd6f4da1c7602200002e40e15d15660374432963421d3cd6d81cc6e27e0a488356b030fee64650947e32e78bdbea245d596dadfeeeb02e146d485999
      languageName: node
      linkType: hard
    
    "deep-is@npm:^0.1.3":
      version: 0.1.4
      resolution: "deep-is@npm:0.1.4"
      checksum: edb65dd0d7d1b9c40b2f50219aef30e116cedd6fc79290e740972c132c09106d2e80aa0bc8826673dd5a00222d4179c84b36a790eef63a4c4bca75a37ef90804
      languageName: node
      linkType: hard
    
    "deepmerge@npm:^4.2.2":
      version: 4.3.1
      resolution: "deepmerge@npm:4.3.1"
      checksum: 2024c6a980a1b7128084170c4cf56b0fd58a63f2da1660dcfe977415f27b17dbe5888668b59d0b063753f3220719d5e400b7f113609489c90160bb9a5518d052
      languageName: node
      linkType: hard
    
    "define-data-property@npm:^1.0.1, define-data-property@npm:^1.1.4":
      version: 1.1.4
      resolution: "define-data-property@npm:1.1.4"
      dependencies:
        es-define-property: ^1.0.0
        es-errors: ^1.3.0
        gopd: ^1.0.1
      checksum: 8068ee6cab694d409ac25936eb861eea704b7763f7f342adbdfe337fc27c78d7ae0eff2364b2917b58c508d723c7a074326d068eef2e45c4edcd85cf94d0313b
      languageName: node
      linkType: hard
    
    "define-properties@npm:^1.1.3, define-properties@npm:^1.2.1":
      version: 1.2.1
      resolution: "define-properties@npm:1.2.1"
      dependencies:
        define-data-property: ^1.0.1
        has-property-descriptors: ^1.0.0
        object-keys: ^1.1.1
      checksum: b4ccd00597dd46cb2d4a379398f5b19fca84a16f3374e2249201992f36b30f6835949a9429669ee6b41b6e837205a163eadd745e472069e70dfc10f03e5fcc12
      languageName: node
      linkType: hard
    
    "delaunator@npm:5":
      version: 5.1.0
      resolution: "delaunator@npm:5.1.0"
      dependencies:
        robust-predicates: ^3.0.2
      checksum: ecefe0a6ad356466a1793fa7396e170e873b9b519ab28a0e2e025df1ce506d76df113f210d02f7131f906be3cf6493f07b2fd972bf972d726ac7cdd96c4de4cd
      languageName: node
      linkType: hard
    
    "delayed-stream@npm:~1.0.0":
      version: 1.0.0
      resolution: "delayed-stream@npm:1.0.0"
      checksum: 46fe6e83e2cb1d85ba50bd52803c68be9bd953282fa7096f51fc29edd5d67ff84ff753c51966061e5ba7cb5e47ef6d36a91924eddb7f3f3483b1c560f77a0020
      languageName: node
      linkType: hard
    
    "doctrine@npm:^2.1.0":
      version: 2.1.0
      resolution: "doctrine@npm:2.1.0"
      dependencies:
        esutils: ^2.0.2
      checksum: a45e277f7feaed309fe658ace1ff286c6e2002ac515af0aaf37145b8baa96e49899638c7cd47dccf84c3d32abfc113246625b3ac8f552d1046072adee13b0dc8
      languageName: node
      linkType: hard
    
    "dom-serializer@npm:^2.0.0":
      version: 2.0.0
      resolution: "dom-serializer@npm:2.0.0"
      dependencies:
        domelementtype: ^2.3.0
        domhandler: ^5.0.2
        entities: ^4.2.0
      checksum: cd1810544fd8cdfbd51fa2c0c1128ec3a13ba92f14e61b7650b5de421b88205fd2e3f0cc6ace82f13334114addb90ed1c2f23074a51770a8e9c1273acbc7f3e6
      languageName: node
      linkType: hard
    
    "domelementtype@npm:^2.3.0":
      version: 2.3.0
      resolution: "domelementtype@npm:2.3.0"
      checksum: ee837a318ff702622f383409d1f5b25dd1024b692ef64d3096ff702e26339f8e345820f29a68bcdcea8cfee3531776b3382651232fbeae95612d6f0a75efb4f6
      languageName: node
      linkType: hard
    
    "domexception@npm:^4.0.0":
      version: 4.0.0
      resolution: "domexception@npm:4.0.0"
      dependencies:
        webidl-conversions: ^7.0.0
      checksum: ddbc1268edf33a8ba02ccc596735ede80375ee0cf124b30d2f05df5b464ba78ef4f49889b6391df4a04954e63d42d5631c7fcf8b1c4f12bc531252977a5f13d5
      languageName: node
      linkType: hard
    
    "domhandler@npm:^5.0.2, domhandler@npm:^5.0.3":
      version: 5.0.3
      resolution: "domhandler@npm:5.0.3"
      dependencies:
        domelementtype: ^2.3.0
      checksum: 0f58f4a6af63e6f3a4320aa446d28b5790a009018707bce2859dcb1d21144c7876482b5188395a188dfa974238c019e0a1e610d2fc269a12b2c192ea2b0b131c
      languageName: node
      linkType: hard
    
    "dompurify@npm:^3.3.1":
      version: 3.4.2
      resolution: "dompurify@npm:3.4.2"
      dependencies:
        "@types/trusted-types": ^2.0.7
      dependenciesMeta:
        "@types/trusted-types":
          optional: true
      checksum: 2b1d3bdace712a27db9a23cde39357002cb1445a5966d6f320d66d75aefc22d796bdee8187eb512114870fdc45401e4bab04d1a0a1d0e3f40294c23d7784cbc4
      languageName: node
      linkType: hard
    
    "domutils@npm:^3.0.1":
      version: 3.2.2
      resolution: "domutils@npm:3.2.2"
      dependencies:
        dom-serializer: ^2.0.0
        domelementtype: ^2.3.0
        domhandler: ^5.0.3
      checksum: ae941d56f03d857077d55dde9297e960a625229fc2b933187cc4123084d7c2d2517f58283a7336567127029f1e008449bac8ac8506d44341e29e3bb18e02f906
      languageName: node
      linkType: hard
    
    "dunder-proto@npm:^1.0.0, dunder-proto@npm:^1.0.1":
      version: 1.0.1
      resolution: "dunder-proto@npm:1.0.1"
      dependencies:
        call-bind-apply-helpers: ^1.0.1
        es-errors: ^1.3.0
        gopd: ^1.2.0
      checksum: 149207e36f07bd4941921b0ca929e3a28f1da7bd6b6ff8ff7f4e2f2e460675af4576eeba359c635723dc189b64cdd4787e0255897d5b135ccc5d15cb8685fc90
      languageName: node
      linkType: hard
    
    "duplicate-package-checker-webpack-plugin@npm:^3.0.0":
      version: 3.0.0
      resolution: "duplicate-package-checker-webpack-plugin@npm:3.0.0"
      dependencies:
        chalk: ^2.3.0
        find-root: ^1.0.0
        lodash: ^4.17.4
        semver: ^5.4.1
      checksum: d77be45cb72d79a429c64d8f8f7603fea681d182fb795459a3d4afa608faad9a923378a7e80c6855f465263e1983140b6fc3682bd0213228b8cd7906ab4b934d
      languageName: node
      linkType: hard
    
    "electron-to-chromium@npm:^1.5.328":
      version: 1.5.353
      resolution: "electron-to-chromium@npm:1.5.353"
      checksum: d595c09753cd27d250e48dc4755dbe1f455721a8221897fe76b4d2686eb759e40bae2dc33127a71eeaf87afc56c3b49186988834b1df63026dc45e4bca953b9b
      languageName: node
      linkType: hard
    
    "elkjs@npm:^0.9.3":
      version: 0.9.3
      resolution: "elkjs@npm:0.9.3"
      checksum: 1293e42e0ea034b39d3719f3816b7b3cbaceb52a3114f2c1bd5ddd969bb1e36ae0afef58e77864fff7a1018dc5e96c177e9b0a40c16e4aaac26eb87f5785be4b
      languageName: node
      linkType: hard
    
    "emojis-list@npm:^3.0.0":
      version: 3.0.0
      resolution: "emojis-list@npm:3.0.0"
      checksum: ddaaa02542e1e9436c03970eeed445f4ed29a5337dfba0fe0c38dfdd2af5da2429c2a0821304e8a8d1cadf27fdd5b22ff793571fa803ae16852a6975c65e8e70
      languageName: node
      linkType: hard
    
    "enhanced-resolve@npm:^5.20.0":
      version: 5.21.3
      resolution: "enhanced-resolve@npm:5.21.3"
      dependencies:
        graceful-fs: ^4.2.4
        tapable: ^2.3.3
      checksum: 54e48bde85d57937749765b8e32a17392be6b495a5e576f0c382b7340e095b8cbec224cae65fb8408f73fa68095d71e95fba5f10948072ef6fd26fa4dc5d6aeb
      languageName: node
      linkType: hard
    
    "entities@npm:^4.2.0, entities@npm:^4.4.0":
      version: 4.5.0
      resolution: "entities@npm:4.5.0"
      checksum: 853f8ebd5b425d350bffa97dd6958143179a5938352ccae092c62d1267c4e392a039be1bae7d51b6e4ffad25f51f9617531fedf5237f15df302ccfb452cbf2d7
      languageName: node
      linkType: hard
    
    "entities@npm:^6.0.0":
      version: 6.0.1
      resolution: "entities@npm:6.0.1"
      checksum: 937b952e81aca641660a6a07f70001c6821973dea3ae7f6a5013eadce94620f3ed2e9c745832d503c8811ce6e97704d8a0396159580c0e567d815234de7fdecf
      languageName: node
      linkType: hard
    
    "envinfo@npm:^7.7.3":
      version: 7.21.0
      resolution: "envinfo@npm:7.21.0"
      bin:
        envinfo: dist/cli.js
      checksum: c9526266810a328396c387c0580d6fc10f6ce8464074ae6eaef6798e2a05b5800b480b2eaf739cf523e3bfb407baba2ef23ff8edebb76c2b8fa7fbac995b3b9b
      languageName: node
      linkType: hard
    
    "es-abstract@npm:^1.17.5, es-abstract@npm:^1.23.2, es-abstract@npm:^1.23.3, es-abstract@npm:^1.23.5, es-abstract@npm:^1.23.6, es-abstract@npm:^1.23.9, es-abstract@npm:^1.24.0, es-abstract@npm:^1.24.2":
      version: 1.24.2
      resolution: "es-abstract@npm:1.24.2"
      dependencies:
        array-buffer-byte-length: ^1.0.2
        arraybuffer.prototype.slice: ^1.0.4
        available-typed-arrays: ^1.0.7
        call-bind: ^1.0.8
        call-bound: ^1.0.4
        data-view-buffer: ^1.0.2
        data-view-byte-length: ^1.0.2
        data-view-byte-offset: ^1.0.1
        es-define-property: ^1.0.1
        es-errors: ^1.3.0
        es-object-atoms: ^1.1.1
        es-set-tostringtag: ^2.1.0
        es-to-primitive: ^1.3.0
        function.prototype.name: ^1.1.8
        get-intrinsic: ^1.3.0
        get-proto: ^1.0.1
        get-symbol-description: ^1.1.0
        globalthis: ^1.0.4
        gopd: ^1.2.0
        has-property-descriptors: ^1.0.2
        has-proto: ^1.2.0
        has-symbols: ^1.1.0
        hasown: ^2.0.2
        internal-slot: ^1.1.0
        is-array-buffer: ^3.0.5
        is-callable: ^1.2.7
        is-data-view: ^1.0.2
        is-negative-zero: ^2.0.3
        is-regex: ^1.2.1
        is-set: ^2.0.3
        is-shared-array-buffer: ^1.0.4
        is-string: ^1.1.1
        is-typed-array: ^1.1.15
        is-weakref: ^1.1.1
        math-intrinsics: ^1.1.0
        object-inspect: ^1.13.4
        object-keys: ^1.1.1
        object.assign: ^4.1.7
        own-keys: ^1.0.1
        regexp.prototype.flags: ^1.5.4
        safe-array-concat: ^1.1.3
        safe-push-apply: ^1.0.0
        safe-regex-test: ^1.1.0
        set-proto: ^1.0.0
        stop-iteration-iterator: ^1.1.0
        string.prototype.trim: ^1.2.10
        string.prototype.trimend: ^1.0.9
        string.prototype.trimstart: ^1.0.8
        typed-array-buffer: ^1.0.3
        typed-array-byte-length: ^1.0.3
        typed-array-byte-offset: ^1.0.4
        typed-array-length: ^1.0.7
        unbox-primitive: ^1.1.0
        which-typed-array: ^1.1.19
      checksum: 25ddb06725159050d896986a10df5351c658a35113dcfb328bc2e117557440cb956e2ebf61c1a977974c14551fac3bd43449c96e63cb876c5e72bde306714b98
      languageName: node
      linkType: hard
    
    "es-define-property@npm:^1.0.0, es-define-property@npm:^1.0.1":
      version: 1.0.1
      resolution: "es-define-property@npm:1.0.1"
      checksum: 0512f4e5d564021c9e3a644437b0155af2679d10d80f21adaf868e64d30efdfbd321631956f20f42d655fedb2e3a027da479fad3fa6048f768eb453a80a5f80a
      languageName: node
      linkType: hard
    
    "es-errors@npm:^1.3.0":
      version: 1.3.0
      resolution: "es-errors@npm:1.3.0"
      checksum: ec1414527a0ccacd7f15f4a3bc66e215f04f595ba23ca75cdae0927af099b5ec865f9f4d33e9d7e86f512f252876ac77d4281a7871531a50678132429b1271b5
      languageName: node
      linkType: hard
    
    "es-iterator-helpers@npm:^1.2.1":
      version: 1.3.2
      resolution: "es-iterator-helpers@npm:1.3.2"
      dependencies:
        call-bind: ^1.0.9
        call-bound: ^1.0.4
        define-properties: ^1.2.1
        es-abstract: ^1.24.2
        es-errors: ^1.3.0
        es-set-tostringtag: ^2.1.0
        function-bind: ^1.1.2
        get-intrinsic: ^1.3.0
        globalthis: ^1.0.4
        gopd: ^1.2.0
        has-property-descriptors: ^1.0.2
        has-proto: ^1.2.0
        has-symbols: ^1.1.0
        internal-slot: ^1.1.0
        iterator.prototype: ^1.1.5
        math-intrinsics: ^1.1.0
      checksum: 3e7f4323af19ac11558e36f2a6fa8f6856d6eab09daf12dc43347695976028ac36561de68767d38b093c29255cb81da3e0d5e53d70302a2a543810999e154b3c
      languageName: node
      linkType: hard
    
    "es-module-lexer@npm:^2.0.0":
      version: 2.1.0
      resolution: "es-module-lexer@npm:2.1.0"
      checksum: 65538cfb7bfc48c80cf827764132137c22bb41d1dd2921a9767bcb9763342d87ed844994f59a267b05a79a36b7ebb3ad892894db69889bf3e0af6bd7d5291223
      languageName: node
      linkType: hard
    
    "es-object-atoms@npm:^1.0.0, es-object-atoms@npm:^1.1.1":
      version: 1.1.1
      resolution: "es-object-atoms@npm:1.1.1"
      dependencies:
        es-errors: ^1.3.0
      checksum: 214d3767287b12f36d3d7267ef342bbbe1e89f899cfd67040309fc65032372a8e60201410a99a1645f2f90c1912c8c49c8668066f6bdd954bcd614dda2e3da97
      languageName: node
      linkType: hard
    
    "es-set-tostringtag@npm:^2.1.0":
      version: 2.1.0
      resolution: "es-set-tostringtag@npm:2.1.0"
      dependencies:
        es-errors: ^1.3.0
        get-intrinsic: ^1.2.6
        has-tostringtag: ^1.0.2
        hasown: ^2.0.2
      checksum: 789f35de4be3dc8d11fdcb91bc26af4ae3e6d602caa93299a8c45cf05d36cc5081454ae2a6d3afa09cceca214b76c046e4f8151e092e6fc7feeb5efb9e794fc6
      languageName: node
      linkType: hard
    
    "es-shim-unscopables@npm:^1.0.2":
      version: 1.1.0
      resolution: "es-shim-unscopables@npm:1.1.0"
      dependencies:
        hasown: ^2.0.2
      checksum: 33cfb1ebcb2f869f0bf528be1a8660b4fe8b6cec8fc641f330e508db2284b58ee2980fad6d0828882d22858c759c0806076427a3673b6daa60f753e3b558ee15
      languageName: node
      linkType: hard
    
    "es-to-primitive@npm:^1.3.0":
      version: 1.3.0
      resolution: "es-to-primitive@npm:1.3.0"
      dependencies:
        is-callable: ^1.2.7
        is-date-object: ^1.0.5
        is-symbol: ^1.0.4
      checksum: 966965880356486cd4d1fe9a523deda2084c81b3702d951212c098f5f2ee93605d1b7c1840062efb48a07d892641c7ed1bc194db563645c0dd2b919cb6d65b93
      languageName: node
      linkType: hard
    
    "es-toolkit@npm:^1.45.1":
      version: 1.46.1
      resolution: "es-toolkit@npm:1.46.1"
      dependenciesMeta:
        "@trivago/prettier-plugin-sort-imports@4.3.0":
          unplugged: true
        prettier-plugin-sort-re-exports@0.0.1:
          unplugged: true
      checksum: 24b0a6b84a19f30bb97b65b1fe4c6d9a87258418f84edfa8f49bbe346edae31ff156c5d8af42fd27a4106916a03500722986633aaa0c286155892e5867bb5483
      languageName: node
      linkType: hard
    
    "escalade@npm:^3.2.0":
      version: 3.2.0
      resolution: "escalade@npm:3.2.0"
      checksum: 47b029c83de01b0d17ad99ed766347b974b0d628e848de404018f3abee728e987da0d2d370ad4574aa3d5b5bfc368754fd085d69a30f8e75903486ec4b5b709e
      languageName: node
      linkType: hard
    
    "escape-string-regexp@npm:^1.0.5":
      version: 1.0.5
      resolution: "escape-string-regexp@npm:1.0.5"
      checksum: 6092fda75c63b110c706b6a9bfde8a612ad595b628f0bd2147eea1d3406723020810e591effc7db1da91d80a71a737a313567c5abb3813e8d9c71f4aa595b410
      languageName: node
      linkType: hard
    
    "escape-string-regexp@npm:^2.0.0":
      version: 2.0.0
      resolution: "escape-string-regexp@npm:2.0.0"
      checksum: 9f8a2d5743677c16e85c810e3024d54f0c8dea6424fad3c79ef6666e81dd0846f7437f5e729dfcdac8981bc9e5294c39b4580814d114076b8d36318f46ae4395
      languageName: node
      linkType: hard
    
    "escape-string-regexp@npm:^4.0.0":
      version: 4.0.0
      resolution: "escape-string-regexp@npm:4.0.0"
      checksum: 98b48897d93060f2322108bf29db0feba7dd774be96cd069458d1453347b25ce8682ecc39859d4bca2203cc0ab19c237bcc71755eff49a0f8d90beadeeba5cc5
      languageName: node
      linkType: hard
    
    "escodegen@npm:^2.0.0":
      version: 2.1.0
      resolution: "escodegen@npm:2.1.0"
      dependencies:
        esprima: ^4.0.1
        estraverse: ^5.2.0
        esutils: ^2.0.2
        source-map: ~0.6.1
      dependenciesMeta:
        source-map:
          optional: true
      bin:
        escodegen: bin/escodegen.js
        esgenerate: bin/esgenerate.js
      checksum: 096696407e161305cd05aebb95134ad176708bc5cb13d0dcc89a5fcbb959b8ed757e7f2591a5f8036f8f4952d4a724de0df14cd419e29212729fa6df5ce16bf6
      languageName: node
      linkType: hard
    
    "eslint-config-prettier@npm:^9":
      version: 9.1.2
      resolution: "eslint-config-prettier@npm:9.1.2"
      peerDependencies:
        eslint: ">=7.0.0"
      bin:
        eslint-config-prettier: bin/cli.js
      checksum: e786b767331094fd024cb1b0899964a9da0602eaf4ebd617d6d9794752ccd04dbe997e3c14c17f256c97af20bee1c83c9273f69b74cb2081b6f514580d62408f
      languageName: node
      linkType: hard
    
    "eslint-plugin-prettier@npm:^5.5.5":
      version: 5.5.5
      resolution: "eslint-plugin-prettier@npm:5.5.5"
      dependencies:
        prettier-linter-helpers: ^1.0.1
        synckit: ^0.11.12
      peerDependencies:
        "@types/eslint": ">=8.0.0"
        eslint: ">=8.0.0"
        eslint-config-prettier: ">= 7.0.0 <10.0.0 || >=10.1.0"
        prettier: ">=3.0.0"
      peerDependenciesMeta:
        "@types/eslint":
          optional: true
        eslint-config-prettier:
          optional: true
      checksum: 49b1c25d75ded255a8707d5f06288ae86e8ab4f8e273d4aabdabf73cd0903848916d5a3598ba8be82f2c8dd06769c5e6c172503b3b9cfb2636b6fc23b9c024fb
      languageName: node
      linkType: hard
    
    "eslint-plugin-react@npm:^7.37.5":
      version: 7.37.5
      resolution: "eslint-plugin-react@npm:7.37.5"
      dependencies:
        array-includes: ^3.1.8
        array.prototype.findlast: ^1.2.5
        array.prototype.flatmap: ^1.3.3
        array.prototype.tosorted: ^1.1.4
        doctrine: ^2.1.0
        es-iterator-helpers: ^1.2.1
        estraverse: ^5.3.0
        hasown: ^2.0.2
        jsx-ast-utils: ^2.4.1 || ^3.0.0
        minimatch: ^3.1.2
        object.entries: ^1.1.9
        object.fromentries: ^2.0.8
        object.values: ^1.2.1
        prop-types: ^15.8.1
        resolve: ^2.0.0-next.5
        semver: ^6.3.1
        string.prototype.matchall: ^4.0.12
        string.prototype.repeat: ^1.0.0
      peerDependencies:
        eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7
      checksum: 8675e7558e646e3c2fcb04bb60cfe416000b831ef0b363f0117838f5bfc799156113cb06058ad4d4b39fc730903b7360b05038da11093064ca37caf76b7cf2ca
      languageName: node
      linkType: hard
    
    "eslint-scope@npm:5.1.1":
      version: 5.1.1
      resolution: "eslint-scope@npm:5.1.1"
      dependencies:
        esrecurse: ^4.3.0
        estraverse: ^4.1.1
      checksum: 47e4b6a3f0cc29c7feedee6c67b225a2da7e155802c6ea13bbef4ac6b9e10c66cd2dcb987867ef176292bf4e64eccc680a49e35e9e9c669f4a02bac17e86abdb
      languageName: node
      linkType: hard
    
    "eslint-scope@npm:^8.4.0":
      version: 8.4.0
      resolution: "eslint-scope@npm:8.4.0"
      dependencies:
        esrecurse: ^4.3.0
        estraverse: ^5.2.0
      checksum: cf88f42cd5e81490d549dc6d350fe01e6fe420f9d9ea34f134bb359b030e3c4ef888d36667632e448937fe52449f7181501df48c08200e3d3b0fee250d05364e
      languageName: node
      linkType: hard
    
    "eslint-visitor-keys@npm:^3.4.3":
      version: 3.4.3
      resolution: "eslint-visitor-keys@npm:3.4.3"
      checksum: 36e9ef87fca698b6fd7ca5ca35d7b2b6eeaaf106572e2f7fd31c12d3bfdaccdb587bba6d3621067e5aece31c8c3a348b93922ab8f7b2cbc6aaab5e1d89040c60
      languageName: node
      linkType: hard
    
    "eslint-visitor-keys@npm:^4.2.1":
      version: 4.2.1
      resolution: "eslint-visitor-keys@npm:4.2.1"
      checksum: 3a77e3f99a49109f6fb2c5b7784bc78f9743b834d238cdba4d66c602c6b52f19ed7bcd0a5c5dbbeae3a8689fd785e76c001799f53d2228b278282cf9f699fff5
      languageName: node
      linkType: hard
    
    "eslint-visitor-keys@npm:^5.0.0":
      version: 5.0.1
      resolution: "eslint-visitor-keys@npm:5.0.1"
      checksum: d6cc6830536ab4a808f25325686c2c27862f27aab0c1ffed39627293b06cee05d95187da113cafd366314ea5be803b456115de71ad625e365020f20e2a6af89b
      languageName: node
      linkType: hard
    
    "eslint@npm:^9.7":
      version: 9.39.4
      resolution: "eslint@npm:9.39.4"
      dependencies:
        "@eslint-community/eslint-utils": ^4.8.0
        "@eslint-community/regexpp": ^4.12.1
        "@eslint/config-array": ^0.21.2
        "@eslint/config-helpers": ^0.4.2
        "@eslint/core": ^0.17.0
        "@eslint/eslintrc": ^3.3.5
        "@eslint/js": 9.39.4
        "@eslint/plugin-kit": ^0.4.1
        "@humanfs/node": ^0.16.6
        "@humanwhocodes/module-importer": ^1.0.1
        "@humanwhocodes/retry": ^0.4.2
        "@types/estree": ^1.0.6
        ajv: ^6.14.0
        chalk: ^4.0.0
        cross-spawn: ^7.0.6
        debug: ^4.3.2
        escape-string-regexp: ^4.0.0
        eslint-scope: ^8.4.0
        eslint-visitor-keys: ^4.2.1
        espree: ^10.4.0
        esquery: ^1.5.0
        esutils: ^2.0.2
        fast-deep-equal: ^3.1.3
        file-entry-cache: ^8.0.0
        find-up: ^5.0.0
        glob-parent: ^6.0.2
        ignore: ^5.2.0
        imurmurhash: ^0.1.4
        is-glob: ^4.0.0
        json-stable-stringify-without-jsonify: ^1.0.1
        lodash.merge: ^4.6.2
        minimatch: ^3.1.5
        natural-compare: ^1.4.0
        optionator: ^0.9.3
      peerDependencies:
        jiti: "*"
      peerDependenciesMeta:
        jiti:
          optional: true
      bin:
        eslint: bin/eslint.js
      checksum: 474550582ab15ca0863c4624bea1978567434cc907097f0cf12e05fcb18f10e96be408da33c2e0195c037162a8b0f2dbf1bc37622509f6a2e221dcdc52ce68fe
      languageName: node
      linkType: hard
    
    "espree@npm:^10.0.1, espree@npm:^10.4.0":
      version: 10.4.0
      resolution: "espree@npm:10.4.0"
      dependencies:
        acorn: ^8.15.0
        acorn-jsx: ^5.3.2
        eslint-visitor-keys: ^4.2.1
      checksum: 5f9d0d7c81c1bca4bfd29a55270067ff9d575adb8c729a5d7f779c2c7b910bfc68ccf8ec19b29844b707440fc159a83868f22c8e87bbf7cbcb225ed067df6c85
      languageName: node
      linkType: hard
    
    "esprima@npm:^4.0.1":
      version: 4.0.1
      resolution: "esprima@npm:4.0.1"
      bin:
        esparse: ./bin/esparse.js
        esvalidate: ./bin/esvalidate.js
      checksum: b45bc805a613dbea2835278c306b91aff6173c8d034223fa81498c77dcbce3b2931bf6006db816f62eacd9fd4ea975dfd85a5b7f3c6402cfd050d4ca3c13a628
      languageName: node
      linkType: hard
    
    "esquery@npm:^1.5.0":
      version: 1.7.0
      resolution: "esquery@npm:1.7.0"
      dependencies:
        estraverse: ^5.1.0
      checksum: 3239792b68cf39fe18966d0ca01549bb15556734f0144308fd213739b0f153671ae916013fce0bca032044a4dbcda98b43c1c667f20c20a54dec3597ac0d7c27
      languageName: node
      linkType: hard
    
    "esrecurse@npm:^4.3.0":
      version: 4.3.0
      resolution: "esrecurse@npm:4.3.0"
      dependencies:
        estraverse: ^5.2.0
      checksum: ebc17b1a33c51cef46fdc28b958994b1dc43cd2e86237515cbc3b4e5d2be6a811b2315d0a1a4d9d340b6d2308b15322f5c8291059521cc5f4802f65e7ec32837
      languageName: node
      linkType: hard
    
    "estraverse@npm:^4.1.1":
      version: 4.3.0
      resolution: "estraverse@npm:4.3.0"
      checksum: a6299491f9940bb246124a8d44b7b7a413a8336f5436f9837aaa9330209bd9ee8af7e91a654a3545aee9c54b3308e78ee360cef1d777d37cfef77d2fa33b5827
      languageName: node
      linkType: hard
    
    "estraverse@npm:^5.1.0, estraverse@npm:^5.2.0, estraverse@npm:^5.3.0":
      version: 5.3.0
      resolution: "estraverse@npm:5.3.0"
      checksum: 072780882dc8416ad144f8fe199628d2b3e7bbc9989d9ed43795d2c90309a2047e6bc5979d7e2322a341163d22cfad9e21f4110597fe487519697389497e4e2b
      languageName: node
      linkType: hard
    
    "esutils@npm:^2.0.2":
      version: 2.0.3
      resolution: "esutils@npm:2.0.3"
      checksum: 22b5b08f74737379a840b8ed2036a5fb35826c709ab000683b092d9054e5c2a82c27818f12604bfc2a9a76b90b6834ef081edbc1c7ae30d1627012e067c6ec87
      languageName: node
      linkType: hard
    
    "events@npm:^3.2.0":
      version: 3.3.0
      resolution: "events@npm:3.3.0"
      checksum: f6f487ad2198aa41d878fa31452f1a3c00958f46e9019286ff4787c84aac329332ab45c9cdc8c445928fc6d7ded294b9e005a7fce9426488518017831b272780
      languageName: node
      linkType: hard
    
    "exenv-es6@npm:^1.1.1":
      version: 1.1.1
      resolution: "exenv-es6@npm:1.1.1"
      checksum: 7f2aa12025e6f06c48dc286f380cf3183bb19c6017b36d91695034a3e5124a7235c4f8ff24ca2eb88ae801322f0f99605cedfcfd996a5fcbba7669320e2a448e
      languageName: node
      linkType: hard
    
    "fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3":
      version: 3.1.3
      resolution: "fast-deep-equal@npm:3.1.3"
      checksum: e21a9d8d84f53493b6aa15efc9cfd53dd5b714a1f23f67fb5dc8f574af80df889b3bce25dc081887c6d25457cce704e636395333abad896ccdec03abaf1f3f9d
      languageName: node
      linkType: hard
    
    "fast-diff@npm:^1.1.2":
      version: 1.3.0
      resolution: "fast-diff@npm:1.3.0"
      checksum: d22d371b994fdc8cce9ff510d7b8dc4da70ac327bcba20df607dd5b9cae9f908f4d1028f5fe467650f058d1e7270235ae0b8230809a262b4df587a3b3aa216c3
      languageName: node
      linkType: hard
    
    "fast-json-stable-stringify@npm:^2.0.0":
      version: 2.1.0
      resolution: "fast-json-stable-stringify@npm:2.1.0"
      checksum: b191531e36c607977e5b1c47811158733c34ccb3bfde92c44798929e9b4154884378536d26ad90dfecd32e1ffc09c545d23535ad91b3161a27ddbb8ebe0cbecb
      languageName: node
      linkType: hard
    
    "fast-levenshtein@npm:^2.0.6":
      version: 2.0.6
      resolution: "fast-levenshtein@npm:2.0.6"
      checksum: 92cfec0a8dfafd9c7a15fba8f2cc29cd0b62b85f056d99ce448bbcd9f708e18ab2764bda4dd5158364f4145a7c72788538994f0d1787b956ef0d1062b0f7c24c
      languageName: node
      linkType: hard
    
    "fast-uri@npm:^3.0.1":
      version: 3.1.2
      resolution: "fast-uri@npm:3.1.2"
      checksum: 73a6e1b04e6fcf7a09ed93316e72d643ef177d26969973784690708612141f2c2f74657120bab75bf5bbc26bfd535a32c90a8c3bc50aca50584cf01f98815afe
      languageName: node
      linkType: hard
    
    "fastest-levenshtein@npm:^1.0.12":
      version: 1.0.16
      resolution: "fastest-levenshtein@npm:1.0.16"
      checksum: a78d44285c9e2ae2c25f3ef0f8a73f332c1247b7ea7fb4a191e6bb51aa6ee1ef0dfb3ed113616dcdc7023e18e35a8db41f61c8d88988e877cf510df8edafbc71
      languageName: node
      linkType: hard
    
    "fdir@npm:^6.5.0":
      version: 6.5.0
      resolution: "fdir@npm:6.5.0"
      peerDependencies:
        picomatch: ^3 || ^4
      peerDependenciesMeta:
        picomatch:
          optional: true
      checksum: bd537daa9d3cd53887eed35efa0eab2dbb1ca408790e10e024120e7a36c6e9ae2b33710cb8381e35def01bc9c1d7eaba746f886338413e68ff6ebaee07b9a6e8
      languageName: node
      linkType: hard
    
    "file-entry-cache@npm:^8.0.0":
      version: 8.0.0
      resolution: "file-entry-cache@npm:8.0.0"
      dependencies:
        flat-cache: ^4.0.0
      checksum: f67802d3334809048c69b3d458f672e1b6d26daefda701761c81f203b80149c35dea04d78ea4238969dd617678e530876722a0634c43031a0957f10cc3ed190f
      languageName: node
      linkType: hard
    
    "fill-range@npm:^7.1.1":
      version: 7.1.1
      resolution: "fill-range@npm:7.1.1"
      dependencies:
        to-regex-range: ^5.0.1
      checksum: b4abfbca3839a3d55e4ae5ec62e131e2e356bf4859ce8480c64c4876100f4df292a63e5bb1618e1d7460282ca2b305653064f01654474aa35c68000980f17798
      languageName: node
      linkType: hard
    
    "find-root@npm:^1.0.0":
      version: 1.1.0
      resolution: "find-root@npm:1.1.0"
      checksum: b2a59fe4b6c932eef36c45a048ae8f93c85640212ebe8363164814990ee20f154197505965f3f4f102efc33bfb1cbc26fd17c4a2fc739ebc51b886b137cbefaf
      languageName: node
      linkType: hard
    
    "find-up@npm:^4.0.0":
      version: 4.1.0
      resolution: "find-up@npm:4.1.0"
      dependencies:
        locate-path: ^5.0.0
        path-exists: ^4.0.0
      checksum: 4c172680e8f8c1f78839486e14a43ef82e9decd0e74145f40707cc42e7420506d5ec92d9a11c22bd2c48fb0c384ea05dd30e10dd152fefeec6f2f75282a8b844
      languageName: node
      linkType: hard
    
    "find-up@npm:^5.0.0":
      version: 5.0.0
      resolution: "find-up@npm:5.0.0"
      dependencies:
        locate-path: ^6.0.0
        path-exists: ^4.0.0
      checksum: 07955e357348f34660bde7920783204ff5a26ac2cafcaa28bace494027158a97b9f56faaf2d89a6106211a8174db650dd9f503f9c0d526b1202d5554a00b9095
      languageName: node
      linkType: hard
    
    "flat-cache@npm:^4.0.0":
      version: 4.0.1
      resolution: "flat-cache@npm:4.0.1"
      dependencies:
        flatted: ^3.2.9
        keyv: ^4.5.4
      checksum: 899fc86bf6df093547d76e7bfaeb900824b869d7d457d02e9b8aae24836f0a99fbad79328cfd6415ee8908f180699bf259dc7614f793447cb14f707caf5996f6
      languageName: node
      linkType: hard
    
    "flat@npm:^5.0.2":
      version: 5.0.2
      resolution: "flat@npm:5.0.2"
      bin:
        flat: cli.js
      checksum: 12a1536ac746db74881316a181499a78ef953632ddd28050b7a3a43c62ef5462e3357c8c29d76072bb635f147f7a9a1f0c02efef6b4be28f8db62ceb3d5c7f5d
      languageName: node
      linkType: hard
    
    "flatted@npm:^3.2.9":
      version: 3.4.2
      resolution: "flatted@npm:3.4.2"
      checksum: 1b2536fccbbf75d67a823dea67819f764c19266ad5e4aca6b47f6bf84d3b5e1c15eb5862f7dec1fb87129b60741524933192051286de52baddbc97129896380d
      languageName: node
      linkType: hard
    
    "for-each@npm:^0.3.3, for-each@npm:^0.3.5":
      version: 0.3.5
      resolution: "for-each@npm:0.3.5"
      dependencies:
        is-callable: ^1.2.7
      checksum: 3c986d7e11f4381237cc98baa0a2f87eabe74719eee65ed7bed275163082b940ede19268c61d04c6260e0215983b12f8d885e3c8f9aa8c2113bf07c37051745c
      languageName: node
      linkType: hard
    
    "form-data@npm:^4.0.0":
      version: 4.0.5
      resolution: "form-data@npm:4.0.5"
      dependencies:
        asynckit: ^0.4.0
        combined-stream: ^1.0.8
        es-set-tostringtag: ^2.1.0
        hasown: ^2.0.2
        mime-types: ^2.1.12
      checksum: af8328413c16d0cded5fccc975a44d227c5120fd46a9e81de8acf619d43ed838414cc6d7792195b30b248f76a65246949a129a4dadd148721948f90cd6d4fb69
      languageName: node
      linkType: hard
    
    "free-style@npm:3.1.0":
      version: 3.1.0
      resolution: "free-style@npm:3.1.0"
      checksum: 949258ae315deda48cac93ecd5f9a80f36e8a027e19ce2103598dc8d5ab60e963bbad5444b2a4990ddb746798dd188896f430285cf484afbf2141f7d75a191d8
      languageName: node
      linkType: hard
    
    "fs-extra@npm:^10.1.0":
      version: 10.1.0
      resolution: "fs-extra@npm:10.1.0"
      dependencies:
        graceful-fs: ^4.2.0
        jsonfile: ^6.0.1
        universalify: ^2.0.0
      checksum: dc94ab37096f813cc3ca12f0f1b5ad6744dfed9ed21e953d72530d103cea193c2f81584a39e9dee1bea36de5ee66805678c0dddc048e8af1427ac19c00fffc50
      languageName: node
      linkType: hard
    
    "fs.realpath@npm:^1.0.0":
      version: 1.0.0
      resolution: "fs.realpath@npm:1.0.0"
      checksum: 99ddea01a7e75aa276c250a04eedeffe5662bce66c65c07164ad6264f9de18fb21be9433ead460e54cff20e31721c811f4fb5d70591799df5f85dce6d6746fd0
      languageName: node
      linkType: hard
    
    "function-bind@npm:^1.1.2":
      version: 1.1.2
      resolution: "function-bind@npm:1.1.2"
      checksum: 2b0ff4ce708d99715ad14a6d1f894e2a83242e4a52ccfcefaee5e40050562e5f6dafc1adbb4ce2d4ab47279a45dc736ab91ea5042d843c3c092820dfe032efb1
      languageName: node
      linkType: hard
    
    "function.prototype.name@npm:^1.1.6, function.prototype.name@npm:^1.1.8":
      version: 1.1.8
      resolution: "function.prototype.name@npm:1.1.8"
      dependencies:
        call-bind: ^1.0.8
        call-bound: ^1.0.3
        define-properties: ^1.2.1
        functions-have-names: ^1.2.3
        hasown: ^2.0.2
        is-callable: ^1.2.7
      checksum: 3a366535dc08b25f40a322efefa83b2da3cd0f6da41db7775f2339679120ef63b6c7e967266182609e655b8f0a8f65596ed21c7fd72ad8bd5621c2340edd4010
      languageName: node
      linkType: hard
    
    "functions-have-names@npm:^1.2.3":
      version: 1.2.3
      resolution: "functions-have-names@npm:1.2.3"
      checksum: c3f1f5ba20f4e962efb71344ce0a40722163e85bee2101ce25f88214e78182d2d2476aa85ef37950c579eb6cf6ee811c17b3101bb84004bb75655f3e33f3fdb5
      languageName: node
      linkType: hard
    
    "generator-function@npm:^2.0.0":
      version: 2.0.1
      resolution: "generator-function@npm:2.0.1"
      checksum: 3bf87f7b0230de5d74529677e6c3ceb3b7b5d9618b5a22d92b45ce3876defbaf5a77791b25a61b0fa7d13f95675b5ff67a7769f3b9af33f096e34653519e873d
      languageName: node
      linkType: hard
    
    "get-intrinsic@npm:^1.2.4, get-intrinsic@npm:^1.2.5, get-intrinsic@npm:^1.2.6, get-intrinsic@npm:^1.2.7, get-intrinsic@npm:^1.3.0":
      version: 1.3.1
      resolution: "get-intrinsic@npm:1.3.1"
      dependencies:
        async-function: ^1.0.0
        async-generator-function: ^1.0.0
        call-bind-apply-helpers: ^1.0.2
        es-define-property: ^1.0.1
        es-errors: ^1.3.0
        es-object-atoms: ^1.1.1
        function-bind: ^1.1.2
        generator-function: ^2.0.0
        get-proto: ^1.0.1
        gopd: ^1.2.0
        has-symbols: ^1.1.0
        hasown: ^2.0.2
        math-intrinsics: ^1.1.0
      checksum: c02b3b6a445f9cd53e14896303794ac60f9751f58a69099127248abdb0251957174c6524245fc68579dc8e6a35161d3d94c93e665f808274716f4248b269436a
      languageName: node
      linkType: hard
    
    "get-proto@npm:^1.0.0, get-proto@npm:^1.0.1":
      version: 1.0.1
      resolution: "get-proto@npm:1.0.1"
      dependencies:
        dunder-proto: ^1.0.1
        es-object-atoms: ^1.0.0
      checksum: 4fc96afdb58ced9a67558698b91433e6b037aaa6f1493af77498d7c85b141382cf223c0e5946f334fb328ee85dfe6edd06d218eaf09556f4bc4ec6005d7f5f7b
      languageName: node
      linkType: hard
    
    "get-symbol-description@npm:^1.1.0":
      version: 1.1.0
      resolution: "get-symbol-description@npm:1.1.0"
      dependencies:
        call-bound: ^1.0.3
        es-errors: ^1.3.0
        get-intrinsic: ^1.2.6
      checksum: 655ed04db48ee65ef2ddbe096540d4405e79ba0a7f54225775fef43a7e2afcb93a77d141c5f05fdef0afce2eb93bcbfb3597142189d562ac167ff183582683cd
      languageName: node
      linkType: hard
    
    "github-slugger@npm:^2.0.0":
      version: 2.0.0
      resolution: "github-slugger@npm:2.0.0"
      checksum: 250375cde2058f21454872c2c79f72c4637340c30c51ff158ca4ec71cbc478f33d54477d787a662f9207aeb095a2060f155bc01f15329ba8a5fb6698e0fc81f8
      languageName: node
      linkType: hard
    
    "glob-parent@npm:^6.0.2":
      version: 6.0.2
      resolution: "glob-parent@npm:6.0.2"
      dependencies:
        is-glob: ^4.0.3
      checksum: c13ee97978bef4f55106b71e66428eb1512e71a7466ba49025fc2aec59a5bfb0954d5abd58fc5ee6c9b076eef4e1f6d3375c2e964b88466ca390da4419a786a8
      languageName: node
      linkType: hard
    
    "glob-to-regexp@npm:^0.4.1":
      version: 0.4.1
      resolution: "glob-to-regexp@npm:0.4.1"
      checksum: e795f4e8f06d2a15e86f76e4d92751cf8bbfcf0157cea5c2f0f35678a8195a750b34096b1256e436f0cebc1883b5ff0888c47348443e69546a5a87f9e1eb1167
      languageName: node
      linkType: hard
    
    "glob@npm:^13.0.3":
      version: 13.0.6
      resolution: "glob@npm:13.0.6"
      dependencies:
        minimatch: ^10.2.2
        minipass: ^7.1.3
        path-scurry: ^2.0.2
      checksum: 1eb421c696c66af3c26e4845dbdd222d3b982ede17448456b49272722d872e9a91741b50e4e827370c57d17a39a69790061f45033523f085c076d8fcc0f69d2b
      languageName: node
      linkType: hard
    
    "glob@npm:~7.1.6":
      version: 7.1.7
      resolution: "glob@npm:7.1.7"
      dependencies:
        fs.realpath: ^1.0.0
        inflight: ^1.0.4
        inherits: 2
        minimatch: ^3.0.4
        once: ^1.3.0
        path-is-absolute: ^1.0.0
      checksum: b61f48973bbdcf5159997b0874a2165db572b368b931135832599875919c237fc05c12984e38fe828e69aa8a921eb0e8a4997266211c517c9cfaae8a93988bb8
      languageName: node
      linkType: hard
    
    "globals@npm:^14.0.0":
      version: 14.0.0
      resolution: "globals@npm:14.0.0"
      checksum: 534b8216736a5425737f59f6e6a5c7f386254560c9f41d24a9227d60ee3ad4a9e82c5b85def0e212e9d92162f83a92544be4c7fd4c902cb913736c10e08237ac
      languageName: node
      linkType: hard
    
    "globalthis@npm:^1.0.4":
      version: 1.0.4
      resolution: "globalthis@npm:1.0.4"
      dependencies:
        define-properties: ^1.2.1
        gopd: ^1.0.1
      checksum: 39ad667ad9f01476474633a1834a70842041f70a55571e8dcef5fb957980a92da5022db5430fca8aecc5d47704ae30618c0bc877a579c70710c904e9ef06108a
      languageName: node
      linkType: hard
    
    "gopd@npm:^1.0.1, gopd@npm:^1.2.0":
      version: 1.2.0
      resolution: "gopd@npm:1.2.0"
      checksum: cc6d8e655e360955bdccaca51a12a474268f95bb793fc3e1f2bdadb075f28bfd1fd988dab872daf77a61d78cbaf13744bc8727a17cfb1d150d76047d805375f3
      languageName: node
      linkType: hard
    
    "graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.11, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.9":
      version: 4.2.11
      resolution: "graceful-fs@npm:4.2.11"
      checksum: ac85f94da92d8eb6b7f5a8b20ce65e43d66761c55ce85ac96df6865308390da45a8d3f0296dd3a663de65d30ba497bd46c696cc1e248c72b13d6d567138a4fc7
      languageName: node
      linkType: hard
    
    "hachure-fill@npm:^0.5.2":
      version: 0.5.2
      resolution: "hachure-fill@npm:0.5.2"
      checksum: 01cf2ac6b787ec73ced3d6eb393a0f989d55f32431d1e8a1c1c864769d1b8763c9cb6aa1d45fb1c237a065de90167491c6a46193690b688ea6c25f575f84586c
      languageName: node
      linkType: hard
    
    "has-bigints@npm:^1.0.2":
      version: 1.1.0
      resolution: "has-bigints@npm:1.1.0"
      checksum: 79730518ae02c77e4af6a1d1a0b6a2c3e1509785532771f9baf0241e83e36329542c3d7a0e723df8cbc85f74eff4f177828a2265a01ba576adbdc2d40d86538b
      languageName: node
      linkType: hard
    
    "has-flag@npm:^3.0.0":
      version: 3.0.0
      resolution: "has-flag@npm:3.0.0"
      checksum: 4a15638b454bf086c8148979aae044dd6e39d63904cd452d970374fa6a87623423da485dfb814e7be882e05c096a7ccf1ebd48e7e7501d0208d8384ff4dea73b
      languageName: node
      linkType: hard
    
    "has-flag@npm:^4.0.0":
      version: 4.0.0
      resolution: "has-flag@npm:4.0.0"
      checksum: 261a1357037ead75e338156b1f9452c016a37dcd3283a972a30d9e4a87441ba372c8b81f818cd0fbcd9c0354b4ae7e18b9e1afa1971164aef6d18c2b6095a8ad
      languageName: node
      linkType: hard
    
    "has-property-descriptors@npm:^1.0.0, has-property-descriptors@npm:^1.0.2":
      version: 1.0.2
      resolution: "has-property-descriptors@npm:1.0.2"
      dependencies:
        es-define-property: ^1.0.0
      checksum: fcbb246ea2838058be39887935231c6d5788babed499d0e9d0cc5737494c48aba4fe17ba1449e0d0fbbb1e36175442faa37f9c427ae357d6ccb1d895fbcd3de3
      languageName: node
      linkType: hard
    
    "has-proto@npm:^1.2.0":
      version: 1.2.0
      resolution: "has-proto@npm:1.2.0"
      dependencies:
        dunder-proto: ^1.0.0
      checksum: f55010cb94caa56308041d77967c72a02ffd71386b23f9afa8447e58bc92d49d15c19bf75173713468e92fe3fb1680b03b115da39c21c32c74886d1d50d3e7ff
      languageName: node
      linkType: hard
    
    "has-symbols@npm:^1.0.3, has-symbols@npm:^1.1.0":
      version: 1.1.0
      resolution: "has-symbols@npm:1.1.0"
      checksum: b2316c7302a0e8ba3aaba215f834e96c22c86f192e7310bdf689dd0e6999510c89b00fbc5742571507cebf25764d68c988b3a0da217369a73596191ac0ce694b
      languageName: node
      linkType: hard
    
    "has-tostringtag@npm:^1.0.2":
      version: 1.0.2
      resolution: "has-tostringtag@npm:1.0.2"
      dependencies:
        has-symbols: ^1.0.3
      checksum: 999d60bb753ad714356b2c6c87b7fb74f32463b8426e159397da4bde5bca7e598ab1073f4d8d4deafac297f2eb311484cd177af242776bf05f0d11565680468d
      languageName: node
      linkType: hard
    
    "hasown@npm:^2.0.2, hasown@npm:^2.0.3":
      version: 2.0.3
      resolution: "hasown@npm:2.0.3"
      dependencies:
        function-bind: ^1.1.2
      checksum: bb06756a13dc4e6d1f45993c86c23f12d167c6c30a7dcc907aec5042300b4eb255615a0e5ed2c65014b93bf8bfcff111d991032c5c01ddefb340aa64b329bd55
      languageName: node
      linkType: hard
    
    "html-encoding-sniffer@npm:^3.0.0":
      version: 3.0.0
      resolution: "html-encoding-sniffer@npm:3.0.0"
      dependencies:
        whatwg-encoding: ^2.0.0
      checksum: 8d806aa00487e279e5ccb573366a951a9f68f65c90298eac9c3a2b440a7ffe46615aff2995a2f61c6746c639234e6179a97e18ca5ccbbf93d3725ef2099a4502
      languageName: node
      linkType: hard
    
    "htmlparser2@npm:^8.0.0":
      version: 8.0.2
      resolution: "htmlparser2@npm:8.0.2"
      dependencies:
        domelementtype: ^2.3.0
        domhandler: ^5.0.3
        domutils: ^3.0.1
        entities: ^4.4.0
      checksum: 29167a0f9282f181da8a6d0311b76820c8a59bc9e3c87009e21968264c2987d2723d6fde5a964d4b7b6cba663fca96ffb373c06d8223a85f52a6089ced942700
      languageName: node
      linkType: hard
    
    "http-proxy-agent@npm:^5.0.0":
      version: 5.0.0
      resolution: "http-proxy-agent@npm:5.0.0"
      dependencies:
        "@tootallnate/once": 2
        agent-base: 6
        debug: 4
      checksum: e2ee1ff1656a131953839b2a19cd1f3a52d97c25ba87bd2559af6ae87114abf60971e498021f9b73f9fd78aea8876d1fb0d4656aac8a03c6caa9fc175f22b786
      languageName: node
      linkType: hard
    
    "https-proxy-agent@npm:^5.0.1":
      version: 5.0.1
      resolution: "https-proxy-agent@npm:5.0.1"
      dependencies:
        agent-base: 6
        debug: 4
      checksum: 571fccdf38184f05943e12d37d6ce38197becdd69e58d03f43637f7fa1269cf303a7d228aa27e5b27bbd3af8f09fd938e1c91dcfefff2df7ba77c20ed8dfc765
      languageName: node
      linkType: hard
    
    "iconv-lite@npm:0.6, iconv-lite@npm:0.6.3, iconv-lite@npm:^0.6.2":
      version: 0.6.3
      resolution: "iconv-lite@npm:0.6.3"
      dependencies:
        safer-buffer: ">= 2.1.2 < 3.0.0"
      checksum: 3f60d47a5c8fc3313317edfd29a00a692cc87a19cac0159e2ce711d0ebc9019064108323b5e493625e25594f11c6236647d8e256fbe7a58f4a3b33b89e6d30bf
      languageName: node
      linkType: hard
    
    "icss-utils@npm:^5.0.0, icss-utils@npm:^5.1.0":
      version: 5.1.0
      resolution: "icss-utils@npm:5.1.0"
      peerDependencies:
        postcss: ^8.1.0
      checksum: 5c324d283552b1269cfc13a503aaaa172a280f914e5b81544f3803bc6f06a3b585fb79f66f7c771a2c052db7982c18bf92d001e3b47282e3abbbb4c4cc488d68
      languageName: node
      linkType: hard
    
    "ignore@npm:^5.2.0":
      version: 5.3.2
      resolution: "ignore@npm:5.3.2"
      checksum: 2acfd32a573260ea522ea0bfeff880af426d68f6831f973129e2ba7363f422923cf53aab62f8369cbf4667c7b25b6f8a3761b34ecdb284ea18e87a5262a865be
      languageName: node
      linkType: hard
    
    "ignore@npm:^7.0.5":
      version: 7.0.5
      resolution: "ignore@npm:7.0.5"
      checksum: d0862bf64d3d58bf34d5fb0a9f725bec9ca5ce8cd1aecc8f28034269e8f69b8009ffd79ca3eda96962a6a444687781cd5efdb8c7c8ddc0a6996e36d31c217f14
      languageName: node
      linkType: hard
    
    "import-fresh@npm:^3.2.1":
      version: 3.3.1
      resolution: "import-fresh@npm:3.3.1"
      dependencies:
        parent-module: ^1.0.0
        resolve-from: ^4.0.0
      checksum: a06b19461b4879cc654d46f8a6244eb55eb053437afd4cbb6613cad6be203811849ed3e4ea038783092879487299fda24af932b86bdfff67c9055ba3612b8c87
      languageName: node
      linkType: hard
    
    "import-local@npm:^3.0.2":
      version: 3.2.0
      resolution: "import-local@npm:3.2.0"
      dependencies:
        pkg-dir: ^4.2.0
        resolve-cwd: ^3.0.0
      bin:
        import-local-fixture: fixtures/cli.js
      checksum: 0b0b0b412b2521739fbb85eeed834a3c34de9bc67e670b3d0b86248fc460d990a7b116ad056c084b87a693ef73d1f17268d6a5be626bb43c998a8b1c8a230004
      languageName: node
      linkType: hard
    
    "import-meta-resolve@npm:^4.2.0":
      version: 4.2.0
      resolution: "import-meta-resolve@npm:4.2.0"
      checksum: fe5ca3258f22dc3dd4e2f2e8f6b54324c1cf0261216c7d9aae801b2eadf664bbd61e26cfb907a1238761285a3e9c8c23403321d52ca0e579c341b8d90c97fa52
      languageName: node
      linkType: hard
    
    "imurmurhash@npm:^0.1.4":
      version: 0.1.4
      resolution: "imurmurhash@npm:0.1.4"
      checksum: 7cae75c8cd9a50f57dadd77482359f659eaebac0319dd9368bcd1714f55e65badd6929ca58569da2b6494ef13fdd5598cd700b1eba23f8b79c5f19d195a3ecf7
      languageName: node
      linkType: hard
    
    "inflight@npm:^1.0.4":
      version: 1.0.6
      resolution: "inflight@npm:1.0.6"
      dependencies:
        once: ^1.3.0
        wrappy: 1
      checksum: f4f76aa072ce19fae87ce1ef7d221e709afb59d445e05d47fba710e85470923a75de35bfae47da6de1b18afc3ce83d70facf44cfb0aff89f0a3f45c0a0244dfd
      languageName: node
      linkType: hard
    
    "inherits@npm:2":
      version: 2.0.4
      resolution: "inherits@npm:2.0.4"
      checksum: 4a48a733847879d6cf6691860a6b1e3f0f4754176e4d71494c41f3475553768b10f84b5ce1d40fbd0e34e6bfbb864ee35858ad4dd2cf31e02fc4a154b724d7f1
      languageName: node
      linkType: hard
    
    "internal-slot@npm:^1.1.0":
      version: 1.1.0
      resolution: "internal-slot@npm:1.1.0"
      dependencies:
        es-errors: ^1.3.0
        hasown: ^2.0.2
        side-channel: ^1.1.0
      checksum: 8e0991c2d048cc08dab0a91f573c99f6a4215075887517ea4fa32203ce8aea60fa03f95b177977fa27eb502e5168366d0f3e02c762b799691411d49900611861
      languageName: node
      linkType: hard
    
    "internmap@npm:1 - 2":
      version: 2.0.3
      resolution: "internmap@npm:2.0.3"
      checksum: 7ca41ec6aba8f0072fc32fa8a023450a9f44503e2d8e403583c55714b25efd6390c38a87161ec456bf42d7bc83aab62eb28f5aef34876b1ac4e60693d5e1d241
      languageName: node
      linkType: hard
    
    "internmap@npm:^1.0.0":
      version: 1.0.1
      resolution: "internmap@npm:1.0.1"
      checksum: 9d00f8c0cf873a24a53a5a937120dab634c41f383105e066bb318a61864e6292d24eb9516e8e7dccfb4420ec42ca474a0f28ac9a6cc82536898fa09bbbe53813
      languageName: node
      linkType: hard
    
    "interpret@npm:^3.1.1":
      version: 3.1.1
      resolution: "interpret@npm:3.1.1"
      checksum: 35cebcf48c7351130437596d9ab8c8fe131ce4038da4561e6d665f25640e0034702a031cf7e3a5cea60ac7ac548bf17465e0571ede126f3d3a6933152171ac82
      languageName: node
      linkType: hard
    
    "ipyparallel-labextension@workspace:.":
      version: 0.0.0-use.local
      resolution: "ipyparallel-labextension@workspace:."
      dependencies:
        "@eslint/js": ^9.0.0
        "@jupyter/eslint-plugin": ^1.0.0
        "@jupyterlab/application": ^4.5.7
        "@jupyterlab/apputils": ^4.6.7
        "@jupyterlab/builder": ^4.5.7
        "@jupyterlab/codeeditor": ^4.5.7
        "@jupyterlab/console": ^4.5.7
        "@jupyterlab/coreutils": ^6.5.7
        "@jupyterlab/nbformat": ^4.5.7
        "@jupyterlab/notebook": ^4.5.7
        "@jupyterlab/services": ^7.5.7
        "@jupyterlab/settingregistry": ^4.5.7
        "@jupyterlab/statedb": ^4.5.7
        "@jupyterlab/ui-components": ^4.5.7
        "@lumino/algorithm": ^2.0.4
        "@lumino/commands": ^2.3.3
        "@lumino/coreutils": ^2.2.2
        "@lumino/domutils": ^2.0.4
        "@lumino/dragdrop": ^2.1.8
        "@lumino/messaging": ^2.0.4
        "@lumino/polling": ^2.1.5
        "@lumino/signaling": ^2.1.5
        "@lumino/widgets": ^2.7.5
        "@types/react": ^18.0.26
        "@types/react-dom": ~18.3.7
        "@typescript-eslint/eslint-plugin": ^8.59.2
        "@typescript-eslint/parser": ^8.59.2
        eslint: ^9.7
        eslint-config-prettier: ^9
        eslint-plugin-prettier: ^5.5.5
        eslint-plugin-react: ^7.37.5
        jsonc-eslint-parser: ^3.1.0
        npm-run-all2: ^8.0.4
        prettier: ^3.8.3
        react: ^18.2.0
        react-dom: ^18.2.0
        rimraf: ^6.1.3
        typescript: ~6.0.3
        typescript-eslint: ^8.59.3
      languageName: unknown
      linkType: soft
    
    "is-array-buffer@npm:^3.0.4, is-array-buffer@npm:^3.0.5":
      version: 3.0.5
      resolution: "is-array-buffer@npm:3.0.5"
      dependencies:
        call-bind: ^1.0.8
        call-bound: ^1.0.3
        get-intrinsic: ^1.2.6
      checksum: f137a2a6e77af682cdbffef1e633c140cf596f72321baf8bba0f4ef22685eb4339dde23dfe9e9ca430b5f961dee4d46577dcf12b792b68518c8449b134fb9156
      languageName: node
      linkType: hard
    
    "is-async-function@npm:^2.0.0":
      version: 2.1.1
      resolution: "is-async-function@npm:2.1.1"
      dependencies:
        async-function: ^1.0.0
        call-bound: ^1.0.3
        get-proto: ^1.0.1
        has-tostringtag: ^1.0.2
        safe-regex-test: ^1.1.0
      checksum: 9bece45133da26636488ca127d7686b85ad3ca18927e2850cff1937a650059e90be1c71a48623f8791646bb7a241b0cabf602a0b9252dcfa5ab273f2399000e6
      languageName: node
      linkType: hard
    
    "is-bigint@npm:^1.1.0":
      version: 1.1.0
      resolution: "is-bigint@npm:1.1.0"
      dependencies:
        has-bigints: ^1.0.2
      checksum: ee1544f0e664f253306786ed1dce494b8cf242ef415d6375d8545b4d8816b0f054bd9f948a8988ae2c6325d1c28260dd02978236b2f7b8fb70dfc4838a6c9fa7
      languageName: node
      linkType: hard
    
    "is-boolean-object@npm:^1.2.1":
      version: 1.2.2
      resolution: "is-boolean-object@npm:1.2.2"
      dependencies:
        call-bound: ^1.0.3
        has-tostringtag: ^1.0.2
      checksum: 0415b181e8f1bfd5d3f8a20f8108e64d372a72131674eea9c2923f39d065b6ad08d654765553bdbffbd92c3746f1007986c34087db1bd89a31f71be8359ccdaa
      languageName: node
      linkType: hard
    
    "is-callable@npm:^1.2.7":
      version: 1.2.7
      resolution: "is-callable@npm:1.2.7"
      checksum: 61fd57d03b0d984e2ed3720fb1c7a897827ea174bd44402878e059542ea8c4aeedee0ea0985998aa5cc2736b2fa6e271c08587addb5b3959ac52cf665173d1ac
      languageName: node
      linkType: hard
    
    "is-core-module@npm:^2.16.1":
      version: 2.16.2
      resolution: "is-core-module@npm:2.16.2"
      dependencies:
        hasown: ^2.0.3
      checksum: 9317844b4959f8fb268bfc1b4e24033d60058235c2e7273499c2abfd8e4510e7059b1339bd9109766293747daa3e0b5a89095fb2825a866a4093563fe8fdf16f
      languageName: node
      linkType: hard
    
    "is-data-view@npm:^1.0.1, is-data-view@npm:^1.0.2":
      version: 1.0.2
      resolution: "is-data-view@npm:1.0.2"
      dependencies:
        call-bound: ^1.0.2
        get-intrinsic: ^1.2.6
        is-typed-array: ^1.1.13
      checksum: 31600dd19932eae7fd304567e465709ffbfa17fa236427c9c864148e1b54eb2146357fcf3aed9b686dee13c217e1bb5a649cb3b9c479e1004c0648e9febde1b2
      languageName: node
      linkType: hard
    
    "is-date-object@npm:^1.0.5, is-date-object@npm:^1.1.0":
      version: 1.1.0
      resolution: "is-date-object@npm:1.1.0"
      dependencies:
        call-bound: ^1.0.2
        has-tostringtag: ^1.0.2
      checksum: d6c36ab9d20971d65f3fc64cef940d57a4900a2ac85fb488a46d164c2072a33da1cb51eefcc039e3e5c208acbce343d3480b84ab5ff0983f617512da2742562a
      languageName: node
      linkType: hard
    
    "is-extglob@npm:^2.1.1":
      version: 2.1.1
      resolution: "is-extglob@npm:2.1.1"
      checksum: df033653d06d0eb567461e58a7a8c9f940bd8c22274b94bf7671ab36df5719791aae15eef6d83bbb5e23283967f2f984b8914559d4449efda578c775c4be6f85
      languageName: node
      linkType: hard
    
    "is-finalizationregistry@npm:^1.1.0":
      version: 1.1.1
      resolution: "is-finalizationregistry@npm:1.1.1"
      dependencies:
        call-bound: ^1.0.3
      checksum: 38c646c506e64ead41a36c182d91639833311970b6b6c6268634f109eef0a1a9d2f1f2e499ef4cb43c744a13443c4cdd2f0812d5afdcee5e9b65b72b28c48557
      languageName: node
      linkType: hard
    
    "is-generator-function@npm:^1.0.10":
      version: 1.1.2
      resolution: "is-generator-function@npm:1.1.2"
      dependencies:
        call-bound: ^1.0.4
        generator-function: ^2.0.0
        get-proto: ^1.0.1
        has-tostringtag: ^1.0.2
        safe-regex-test: ^1.1.0
      checksum: 0b81c613752a5e534939e5b3835ff722446837a5b94c3a3934af5ded36a651d9aa31c3f11f8a3453884b9658bf26dbfb7eb855e744d920b07f084bd890a43414
      languageName: node
      linkType: hard
    
    "is-glob@npm:^4.0.0, is-glob@npm:^4.0.3":
      version: 4.0.3
      resolution: "is-glob@npm:4.0.3"
      dependencies:
        is-extglob: ^2.1.1
      checksum: d381c1319fcb69d341cc6e6c7cd588e17cd94722d9a32dbd60660b993c4fb7d0f19438674e68dfec686d09b7c73139c9166b47597f846af387450224a8101ab4
      languageName: node
      linkType: hard
    
    "is-map@npm:^2.0.3":
      version: 2.0.3
      resolution: "is-map@npm:2.0.3"
      checksum: e6ce5f6380f32b141b3153e6ba9074892bbbbd655e92e7ba5ff195239777e767a976dcd4e22f864accaf30e53ebf961ab1995424aef91af68788f0591b7396cc
      languageName: node
      linkType: hard
    
    "is-negative-zero@npm:^2.0.3":
      version: 2.0.3
      resolution: "is-negative-zero@npm:2.0.3"
      checksum: c1e6b23d2070c0539d7b36022d5a94407132411d01aba39ec549af824231f3804b1aea90b5e4e58e807a65d23ceb538ed6e355ce76b267bdd86edb757ffcbdcd
      languageName: node
      linkType: hard
    
    "is-number-object@npm:^1.1.1":
      version: 1.1.1
      resolution: "is-number-object@npm:1.1.1"
      dependencies:
        call-bound: ^1.0.3
        has-tostringtag: ^1.0.2
      checksum: 6517f0a0e8c4b197a21afb45cd3053dc711e79d45d8878aa3565de38d0102b130ca8732485122c7b336e98c27dacd5236854e3e6526e0eb30cae64956535662f
      languageName: node
      linkType: hard
    
    "is-number@npm:^7.0.0":
      version: 7.0.0
      resolution: "is-number@npm:7.0.0"
      checksum: 456ac6f8e0f3111ed34668a624e45315201dff921e5ac181f8ec24923b99e9f32ca1a194912dc79d539c97d33dba17dc635202ff0b2cf98326f608323276d27a
      languageName: node
      linkType: hard
    
    "is-plain-object@npm:^2.0.4":
      version: 2.0.4
      resolution: "is-plain-object@npm:2.0.4"
      dependencies:
        isobject: ^3.0.1
      checksum: 2a401140cfd86cabe25214956ae2cfee6fbd8186809555cd0e84574f88de7b17abacb2e477a6a658fa54c6083ecbda1e6ae404c7720244cd198903848fca70ca
      languageName: node
      linkType: hard
    
    "is-plain-object@npm:^5.0.0":
      version: 5.0.0
      resolution: "is-plain-object@npm:5.0.0"
      checksum: e32d27061eef62c0847d303125440a38660517e586f2f3db7c9d179ae5b6674ab0f469d519b2e25c147a1a3bc87156d0d5f4d8821e0ce4a9ee7fe1fcf11ce45c
      languageName: node
      linkType: hard
    
    "is-potential-custom-element-name@npm:^1.0.1":
      version: 1.0.1
      resolution: "is-potential-custom-element-name@npm:1.0.1"
      checksum: ced7bbbb6433a5b684af581872afe0e1767e2d1146b2207ca0068a648fb5cab9d898495d1ac0583524faaf24ca98176a7d9876363097c2d14fee6dd324f3a1ab
      languageName: node
      linkType: hard
    
    "is-regex@npm:^1.2.1":
      version: 1.2.1
      resolution: "is-regex@npm:1.2.1"
      dependencies:
        call-bound: ^1.0.2
        gopd: ^1.2.0
        has-tostringtag: ^1.0.2
        hasown: ^2.0.2
      checksum: 99ee0b6d30ef1bb61fa4b22fae7056c6c9b3c693803c0c284ff7a8570f83075a7d38cda53b06b7996d441215c27895ea5d1af62124562e13d91b3dbec41a5e13
      languageName: node
      linkType: hard
    
    "is-set@npm:^2.0.3":
      version: 2.0.3
      resolution: "is-set@npm:2.0.3"
      checksum: 36e3f8c44bdbe9496c9689762cc4110f6a6a12b767c5d74c0398176aa2678d4467e3bf07595556f2dba897751bde1422480212b97d973c7b08a343100b0c0dfe
      languageName: node
      linkType: hard
    
    "is-shared-array-buffer@npm:^1.0.4":
      version: 1.0.4
      resolution: "is-shared-array-buffer@npm:1.0.4"
      dependencies:
        call-bound: ^1.0.3
      checksum: 1611fedc175796eebb88f4dfc393dd969a4a8e6c69cadaff424ee9d4464f9f026399a5f84a90f7c62d6d7ee04e3626a912149726de102b0bd6c1ee6a9868fa5a
      languageName: node
      linkType: hard
    
    "is-string@npm:^1.1.1":
      version: 1.1.1
      resolution: "is-string@npm:1.1.1"
      dependencies:
        call-bound: ^1.0.3
        has-tostringtag: ^1.0.2
      checksum: 2eeaaff605250f5e836ea3500d33d1a5d3aa98d008641d9d42fb941e929ffd25972326c2ef912987e54c95b6f10416281aaf1b35cdf81992cfb7524c5de8e193
      languageName: node
      linkType: hard
    
    "is-symbol@npm:^1.0.4, is-symbol@npm:^1.1.1":
      version: 1.1.1
      resolution: "is-symbol@npm:1.1.1"
      dependencies:
        call-bound: ^1.0.2
        has-symbols: ^1.1.0
        safe-regex-test: ^1.1.0
      checksum: bfafacf037af6f3c9d68820b74be4ae8a736a658a3344072df9642a090016e281797ba8edbeb1c83425879aae55d1cb1f30b38bf132d703692b2570367358032
      languageName: node
      linkType: hard
    
    "is-typed-array@npm:^1.1.13, is-typed-array@npm:^1.1.14, is-typed-array@npm:^1.1.15":
      version: 1.1.15
      resolution: "is-typed-array@npm:1.1.15"
      dependencies:
        which-typed-array: ^1.1.16
      checksum: ea7cfc46c282f805d19a9ab2084fd4542fed99219ee9dbfbc26284728bd713a51eac66daa74eca00ae0a43b61322920ba334793607dc39907465913e921e0892
      languageName: node
      linkType: hard
    
    "is-weakmap@npm:^2.0.2":
      version: 2.0.2
      resolution: "is-weakmap@npm:2.0.2"
      checksum: f36aef758b46990e0d3c37269619c0a08c5b29428c0bb11ecba7f75203442d6c7801239c2f31314bc79199217ef08263787f3837d9e22610ad1da62970d6616d
      languageName: node
      linkType: hard
    
    "is-weakref@npm:^1.0.2, is-weakref@npm:^1.1.1":
      version: 1.1.1
      resolution: "is-weakref@npm:1.1.1"
      dependencies:
        call-bound: ^1.0.3
      checksum: 1769b9aed5d435a3a989ffc18fc4ad1947d2acdaf530eb2bd6af844861b545047ea51102f75901f89043bed0267ed61d914ee21e6e8b9aa734ec201cdfc0726f
      languageName: node
      linkType: hard
    
    "is-weakset@npm:^2.0.3":
      version: 2.0.4
      resolution: "is-weakset@npm:2.0.4"
      dependencies:
        call-bound: ^1.0.3
        get-intrinsic: ^1.2.6
      checksum: 5c6c8415a06065d78bdd5e3a771483aa1cd928df19138aa73c4c51333226f203f22117b4325df55cc8b3085a6716870a320c2d757efee92d7a7091a039082041
      languageName: node
      linkType: hard
    
    "isarray@npm:^2.0.5":
      version: 2.0.5
      resolution: "isarray@npm:2.0.5"
      checksum: bd5bbe4104438c4196ba58a54650116007fa0262eccef13a4c55b2e09a5b36b59f1e75b9fcc49883dd9d4953892e6fc007eef9e9155648ceea036e184b0f930a
      languageName: node
      linkType: hard
    
    "isexe@npm:^2.0.0":
      version: 2.0.0
      resolution: "isexe@npm:2.0.0"
      checksum: 26bf6c5480dda5161c820c5b5c751ae1e766c587b1f951ea3fcfc973bafb7831ae5b54a31a69bd670220e42e99ec154475025a468eae58ea262f813fdc8d1c62
      languageName: node
      linkType: hard
    
    "isexe@npm:^3.1.1":
      version: 3.1.5
      resolution: "isexe@npm:3.1.5"
      checksum: ae479f6b0505507f1a73c1d57be6d0546e59fc9202bb0d5b31ba8ff5f3e79dd385bce57a2e60c5645aba567018cbbfc663519cd28367e9962242d97dd151d2ab
      languageName: node
      linkType: hard
    
    "isobject@npm:^3.0.1":
      version: 3.0.1
      resolution: "isobject@npm:3.0.1"
      checksum: db85c4c970ce30693676487cca0e61da2ca34e8d4967c2e1309143ff910c207133a969f9e4ddb2dc6aba670aabce4e0e307146c310350b298e74a31f7d464703
      languageName: node
      linkType: hard
    
    "isomorphic.js@npm:^0.2.4":
      version: 0.2.5
      resolution: "isomorphic.js@npm:0.2.5"
      checksum: d8d1b083f05f3c337a06628b982ac3ce6db953bbef14a9de8ad49131250c3592f864b73c12030fdc9ef138ce97b76ef55c7d96a849561ac215b1b4b9d301c8e9
      languageName: node
      linkType: hard
    
    "iterator.prototype@npm:^1.1.5":
      version: 1.1.5
      resolution: "iterator.prototype@npm:1.1.5"
      dependencies:
        define-data-property: ^1.1.4
        es-object-atoms: ^1.0.0
        get-intrinsic: ^1.2.6
        get-proto: ^1.0.0
        has-symbols: ^1.1.0
        set-function-name: ^2.0.2
      checksum: 7db23c42629ba4790e6e15f78b555f41dbd08818c85af306988364bd19d86716a1187cb333444f3a0036bfc078a0e9cb7ec67fef3a61662736d16410d7f77869
      languageName: node
      linkType: hard
    
    "jest-environment-jsdom@npm:^29.3.0":
      version: 29.7.0
      resolution: "jest-environment-jsdom@npm:29.7.0"
      dependencies:
        "@jest/environment": ^29.7.0
        "@jest/fake-timers": ^29.7.0
        "@jest/types": ^29.6.3
        "@types/jsdom": ^20.0.0
        "@types/node": "*"
        jest-mock: ^29.7.0
        jest-util: ^29.7.0
        jsdom: ^20.0.0
      peerDependencies:
        canvas: ^2.5.0
      peerDependenciesMeta:
        canvas:
          optional: true
      checksum: 559aac134c196fccc1dfc794d8fc87377e9f78e894bb13012b0831d88dec0abd7ece99abec69da564b8073803be4f04a9eb4f4d1bb80e29eec0cb252c254deb8
      languageName: node
      linkType: hard
    
    "jest-message-util@npm:^29.7.0":
      version: 29.7.0
      resolution: "jest-message-util@npm:29.7.0"
      dependencies:
        "@babel/code-frame": ^7.12.13
        "@jest/types": ^29.6.3
        "@types/stack-utils": ^2.0.0
        chalk: ^4.0.0
        graceful-fs: ^4.2.9
        micromatch: ^4.0.4
        pretty-format: ^29.7.0
        slash: ^3.0.0
        stack-utils: ^2.0.3
      checksum: a9d025b1c6726a2ff17d54cc694de088b0489456c69106be6b615db7a51b7beb66788bea7a59991a019d924fbf20f67d085a445aedb9a4d6760363f4d7d09930
      languageName: node
      linkType: hard
    
    "jest-mock@npm:^29.7.0":
      version: 29.7.0
      resolution: "jest-mock@npm:29.7.0"
      dependencies:
        "@jest/types": ^29.6.3
        "@types/node": "*"
        jest-util: ^29.7.0
      checksum: 81ba9b68689a60be1482212878973700347cb72833c5e5af09895882b9eb5c4e02843a1bbdf23f94c52d42708bab53a30c45a3482952c9eec173d1eaac5b86c5
      languageName: node
      linkType: hard
    
    "jest-util@npm:^29.7.0":
      version: 29.7.0
      resolution: "jest-util@npm:29.7.0"
      dependencies:
        "@jest/types": ^29.6.3
        "@types/node": "*"
        chalk: ^4.0.0
        ci-info: ^3.2.0
        graceful-fs: ^4.2.9
        picomatch: ^2.2.3
      checksum: 042ab4980f4ccd4d50226e01e5c7376a8556b472442ca6091a8f102488c0f22e6e8b89ea874111d2328a2080083bf3225c86f3788c52af0bd0345a00eb57a3ca
      languageName: node
      linkType: hard
    
    "jest-worker@npm:^27.4.5":
      version: 27.5.1
      resolution: "jest-worker@npm:27.5.1"
      dependencies:
        "@types/node": "*"
        merge-stream: ^2.0.0
        supports-color: ^8.0.0
      checksum: 98cd68b696781caed61c983a3ee30bf880b5bd021c01d98f47b143d4362b85d0737f8523761e2713d45e18b4f9a2b98af1eaee77afade4111bb65c77d6f7c980
      languageName: node
      linkType: hard
    
    "js-tokens@npm:^3.0.0 || ^4.0.0, js-tokens@npm:^4.0.0":
      version: 4.0.0
      resolution: "js-tokens@npm:4.0.0"
      checksum: 8a95213a5a77deb6cbe94d86340e8d9ace2b93bc367790b260101d2f36a2eaf4e4e22d9fa9cf459b38af3a32fb4190e638024cf82ec95ef708680e405ea7cc78
      languageName: node
      linkType: hard
    
    "js-yaml@npm:^4.1.1":
      version: 4.1.1
      resolution: "js-yaml@npm:4.1.1"
      dependencies:
        argparse: ^2.0.1
      bin:
        js-yaml: bin/js-yaml.js
      checksum: ea2339c6930fe048ec31b007b3c90be2714ab3e7defcc2c27ebf30c74fd940358f29070b4345af0019ef151875bf3bc3f8644bea1bab0372652b5044813ac02d
      languageName: node
      linkType: hard
    
    "jsdom@npm:^20.0.0":
      version: 20.0.3
      resolution: "jsdom@npm:20.0.3"
      dependencies:
        abab: ^2.0.6
        acorn: ^8.8.1
        acorn-globals: ^7.0.0
        cssom: ^0.5.0
        cssstyle: ^2.3.0
        data-urls: ^3.0.2
        decimal.js: ^10.4.2
        domexception: ^4.0.0
        escodegen: ^2.0.0
        form-data: ^4.0.0
        html-encoding-sniffer: ^3.0.0
        http-proxy-agent: ^5.0.0
        https-proxy-agent: ^5.0.1
        is-potential-custom-element-name: ^1.0.1
        nwsapi: ^2.2.2
        parse5: ^7.1.1
        saxes: ^6.0.0
        symbol-tree: ^3.2.4
        tough-cookie: ^4.1.2
        w3c-xmlserializer: ^4.0.0
        webidl-conversions: ^7.0.0
        whatwg-encoding: ^2.0.0
        whatwg-mimetype: ^3.0.0
        whatwg-url: ^11.0.0
        ws: ^8.11.0
        xml-name-validator: ^4.0.0
      peerDependencies:
        canvas: ^2.5.0
      peerDependenciesMeta:
        canvas:
          optional: true
      checksum: 6e2ae21db397133a061b270c26d2dbc0b9051733ea3b896a7ece78d79f475ff0974f766a413c1198a79c793159119169f2335ddb23150348fbfdcfa6f3105536
      languageName: node
      linkType: hard
    
    "json-buffer@npm:3.0.1":
      version: 3.0.1
      resolution: "json-buffer@npm:3.0.1"
      checksum: 9026b03edc2847eefa2e37646c579300a1f3a4586cfb62bf857832b60c852042d0d6ae55d1afb8926163fa54c2b01d83ae24705f34990348bdac6273a29d4581
      languageName: node
      linkType: hard
    
    "json-parse-even-better-errors@npm:^4.0.0":
      version: 4.0.0
      resolution: "json-parse-even-better-errors@npm:4.0.0"
      checksum: da1ae7ef0cc9db02972a06a71322f26bdcda5d7f648c23b28ce7f158ba35707461bcbd91945d8aace10d8d79c383b896725c65ffa410242352692328aa9b5edf
      languageName: node
      linkType: hard
    
    "json-schema-compare@npm:^0.2.2":
      version: 0.2.2
      resolution: "json-schema-compare@npm:0.2.2"
      dependencies:
        lodash: ^4.17.4
      checksum: dd6f2173857c8e3b77d6ebdfa05bd505bba5b08709ab46b532722f5d1c33b5fee1fc8f3c97d0c0d011db25f9f3b0baf7ab783bb5f55c32abd9f1201760e43c2c
      languageName: node
      linkType: hard
    
    "json-schema-merge-allof@npm:^0.8.1":
      version: 0.8.1
      resolution: "json-schema-merge-allof@npm:0.8.1"
      dependencies:
        compute-lcm: ^1.1.2
        json-schema-compare: ^0.2.2
        lodash: ^4.17.20
      checksum: 82700f6ac77351959138d6b153d77375a8c29cf48d907241b85c8292dd77aabd8cb816400f2b0d17062c4ccc8893832ec4f664ab9c814927ef502e7a595ea873
      languageName: node
      linkType: hard
    
    "json-schema-traverse@npm:^0.4.1":
      version: 0.4.1
      resolution: "json-schema-traverse@npm:0.4.1"
      checksum: 7486074d3ba247769fda17d5181b345c9fb7d12e0da98b22d1d71a5db9698d8b4bd900a3ec1a4ffdd60846fc2556274a5c894d0c48795f14cb03aeae7b55260b
      languageName: node
      linkType: hard
    
    "json-schema-traverse@npm:^1.0.0":
      version: 1.0.0
      resolution: "json-schema-traverse@npm:1.0.0"
      checksum: 02f2f466cdb0362558b2f1fd5e15cce82ef55d60cd7f8fa828cf35ba74330f8d767fcae5c5c2adb7851fa811766c694b9405810879bc4e1ddd78a7c0e03658ad
      languageName: node
      linkType: hard
    
    "json-stable-stringify-without-jsonify@npm:^1.0.1":
      version: 1.0.1
      resolution: "json-stable-stringify-without-jsonify@npm:1.0.1"
      checksum: cff44156ddce9c67c44386ad5cddf91925fe06b1d217f2da9c4910d01f358c6e3989c4d5a02683c7a5667f9727ff05831f7aa8ae66c8ff691c556f0884d49215
      languageName: node
      linkType: hard
    
    "json5@npm:^2.1.2, json5@npm:^2.2.3":
      version: 2.2.3
      resolution: "json5@npm:2.2.3"
      bin:
        json5: lib/cli.js
      checksum: 2a7436a93393830bce797d4626275152e37e877b265e94ca69c99e3d20c2b9dab021279146a39cdb700e71b2dd32a4cebd1514cd57cee102b1af906ce5040349
      languageName: node
      linkType: hard
    
    "jsonc-eslint-parser@npm:^3.1.0":
      version: 3.1.0
      resolution: "jsonc-eslint-parser@npm:3.1.0"
      dependencies:
        acorn: ^8.5.0
        eslint-visitor-keys: ^5.0.0
        semver: ^7.3.5
      checksum: 23e86c3ae850564311e31cf3e28f12b423d57a97fc5e163fcd4861047806950df827036e21642fb5afa5ec5d490f493001d13829124cedc35cbc26cf6bb1ecf1
      languageName: node
      linkType: hard
    
    "jsonfile@npm:^6.0.1":
      version: 6.2.1
      resolution: "jsonfile@npm:6.2.1"
      dependencies:
        graceful-fs: ^4.1.6
        universalify: ^2.0.0
      dependenciesMeta:
        graceful-fs:
          optional: true
      checksum: 22f2f2cdb131f6a576b406a49cd4d17f8ea0f1fd4b33cf74d81a1f0f333e82eb47a32000485687d40753f70f767f68cc936906d3d8a516e1ee9f2147840a572e
      languageName: node
      linkType: hard
    
    "jsonpointer@npm:^5.0.1":
      version: 5.0.1
      resolution: "jsonpointer@npm:5.0.1"
      checksum: 0b40f712900ad0c846681ea2db23b6684b9d5eedf55807b4708c656f5894b63507d0e28ae10aa1bddbea551241035afe62b6df0800fc94c2e2806a7f3adecd7c
      languageName: node
      linkType: hard
    
    "jsx-ast-utils@npm:^2.4.1 || ^3.0.0":
      version: 3.3.5
      resolution: "jsx-ast-utils@npm:3.3.5"
      dependencies:
        array-includes: ^3.1.6
        array.prototype.flat: ^1.3.1
        object.assign: ^4.1.4
        object.values: ^1.1.6
      checksum: f4b05fa4d7b5234230c905cfa88d36dc8a58a6666975a3891429b1a8cdc8a140bca76c297225cb7a499fad25a2c052ac93934449a2c31a44fc9edd06c773780a
      languageName: node
      linkType: hard
    
    "katex@npm:^0.16.25":
      version: 0.16.45
      resolution: "katex@npm:0.16.45"
      dependencies:
        commander: ^8.3.0
      bin:
        katex: cli.js
      checksum: fe0a88485a1135268c2f1cc7d3dec8d124c85282a2d1184fed6728b729b2dcbcb738d73098cdfa87d120dd0657417ef818e4acc845c305c05f2fdec10910c1eb
      languageName: node
      linkType: hard
    
    "keyv@npm:^4.5.4":
      version: 4.5.4
      resolution: "keyv@npm:4.5.4"
      dependencies:
        json-buffer: 3.0.1
      checksum: 74a24395b1c34bd44ad5cb2b49140d087553e170625240b86755a6604cd65aa16efdbdeae5cdb17ba1284a0fbb25ad06263755dbc71b8d8b06f74232ce3cdd72
      languageName: node
      linkType: hard
    
    "khroma@npm:^2.1.0":
      version: 2.1.0
      resolution: "khroma@npm:2.1.0"
      checksum: b34ba39d3a9a52d388110bded8cb1c12272eb69c249d8eb26feab12d18a96a9bc4ceec4851d2afa43de4569f7d5ea78fa305965a3d0e96a38e02fe77c53677da
      languageName: node
      linkType: hard
    
    "kind-of@npm:^6.0.2":
      version: 6.0.3
      resolution: "kind-of@npm:6.0.3"
      checksum: 3ab01e7b1d440b22fe4c31f23d8d38b4d9b91d9f291df683476576493d5dfd2e03848a8b05813dd0c3f0e835bc63f433007ddeceb71f05cb25c45ae1b19c6d3b
      languageName: node
      linkType: hard
    
    "layout-base@npm:^1.0.0":
      version: 1.0.2
      resolution: "layout-base@npm:1.0.2"
      checksum: e4c312765ac4fa13b49c940e701461309c7a0aa07f784f81d31f626b945dced90a8abf83222388a5af16b7074271f745501a90ef5a3af676abb2e7eb16d55b2e
      languageName: node
      linkType: hard
    
    "layout-base@npm:^2.0.0":
      version: 2.0.1
      resolution: "layout-base@npm:2.0.1"
      checksum: ef93baf044f67c3680f4f3a6d628bf4c7faba0f70f3e0abb16e4811bed087045208560347ca749e123d169cbf872505ad84e11fb21b0be925997227e042c7f43
      languageName: node
      linkType: hard
    
    "levn@npm:^0.4.1":
      version: 0.4.1
      resolution: "levn@npm:0.4.1"
      dependencies:
        prelude-ls: ^1.2.1
        type-check: ~0.4.0
      checksum: 12c5021c859bd0f5248561bf139121f0358285ec545ebf48bb3d346820d5c61a4309535c7f387ed7d84361cf821e124ce346c6b7cef8ee09a67c1473b46d0fc4
      languageName: node
      linkType: hard
    
    "lib0@npm:^0.2.85, lib0@npm:^0.2.99":
      version: 0.2.117
      resolution: "lib0@npm:0.2.117"
      dependencies:
        isomorphic.js: ^0.2.4
      bin:
        0ecdsa-generate-keypair: bin/0ecdsa-generate-keypair.js
        0gentesthtml: bin/gentesthtml.js
        0serve: bin/0serve.js
      checksum: 948a6bb292cc643bcaea948b82f72a05edb83ff172803ba0ebdbf87361f6446d2877b61611f20ccd377c7bfa0453925b27ea75db8b694abab84216c6ca50325c
      languageName: node
      linkType: hard
    
    "license-webpack-plugin@npm:^2.3.14":
      version: 2.3.21
      resolution: "license-webpack-plugin@npm:2.3.21"
      dependencies:
        "@types/webpack-sources": ^0.1.5
        webpack-sources: ^1.2.0
      peerDependenciesMeta:
        webpack:
          optional: true
      checksum: 6208bd2060d200fbffbcc89702c929d50c5a4a3f2158b046cf813b3f7f728bbbe4611b9fea2d67843bb5e7d64ad9122cc368a19ac73f5c4ad41765e6283bdc0c
      languageName: node
      linkType: hard
    
    "loader-runner@npm:^4.3.1":
      version: 4.3.2
      resolution: "loader-runner@npm:4.3.2"
      checksum: 92906b3d187999f49f6b22c4ee49261f9a38cd8ce00051e511b804fbac7d4533a48c7c5c1e051818c44e6bbfb11e6fbc3941f1d245155fd5debc50b2b5867215
      languageName: node
      linkType: hard
    
    "loader-utils@npm:^2.0.0":
      version: 2.0.4
      resolution: "loader-utils@npm:2.0.4"
      dependencies:
        big.js: ^5.2.2
        emojis-list: ^3.0.0
        json5: ^2.1.2
      checksum: a5281f5fff1eaa310ad5e1164095689443630f3411e927f95031ab4fb83b4a98f388185bb1fe949e8ab8d4247004336a625e9255c22122b815bb9a4c5d8fc3b7
      languageName: node
      linkType: hard
    
    "locate-path@npm:^5.0.0":
      version: 5.0.0
      resolution: "locate-path@npm:5.0.0"
      dependencies:
        p-locate: ^4.1.0
      checksum: 83e51725e67517287d73e1ded92b28602e3ae5580b301fe54bfb76c0c723e3f285b19252e375712316774cf52006cb236aed5704692c32db0d5d089b69696e30
      languageName: node
      linkType: hard
    
    "locate-path@npm:^6.0.0":
      version: 6.0.0
      resolution: "locate-path@npm:6.0.0"
      dependencies:
        p-locate: ^5.0.0
      checksum: 72eb661788a0368c099a184c59d2fee760b3831c9c1c33955e8a19ae4a21b4116e53fa736dc086cdeb9fce9f7cc508f2f92d2d3aae516f133e16a2bb59a39f5a
      languageName: node
      linkType: hard
    
    "lodash-es@npm:^4.17.21":
      version: 4.18.1
      resolution: "lodash-es@npm:4.18.1"
      checksum: 578993943cfa779e784aeed96766484ec6ab15cd855e52c79631de6371ac49fadd6dd9f4719f8d1223ab2bcb0dfbece484f548191dd34d3dd8b39e1af712a343
      languageName: node
      linkType: hard
    
    "lodash.escape@npm:^4.0.1":
      version: 4.0.1
      resolution: "lodash.escape@npm:4.0.1"
      checksum: fcb54f457497256964d619d5cccbd80a961916fca60df3fe0fa3e7f052715c2944c0ed5aefb4f9e047d127d44aa2d55555f3350cb42c6549e9e293fb30b41e7f
      languageName: node
      linkType: hard
    
    "lodash.merge@npm:^4.6.2":
      version: 4.6.2
      resolution: "lodash.merge@npm:4.6.2"
      checksum: ad580b4bdbb7ca1f7abf7e1bce63a9a0b98e370cf40194b03380a46b4ed799c9573029599caebc1b14e3f24b111aef72b96674a56cfa105e0f5ac70546cdc005
      languageName: node
      linkType: hard
    
    "lodash.mergewith@npm:^4.6.1":
      version: 4.6.2
      resolution: "lodash.mergewith@npm:4.6.2"
      checksum: a6db2a9339752411f21b956908c404ec1e088e783a65c8b29e30ae5b3b6384f82517662d6f425cc97c2070b546cc2c7daaa8d33f78db7b6e9be06cd834abdeb8
      languageName: node
      linkType: hard
    
    "lodash@npm:^4.17.20, lodash@npm:^4.17.21, lodash@npm:^4.17.4, lodash@npm:^4.7.0":
      version: 4.18.1
      resolution: "lodash@npm:4.18.1"
      checksum: bb5f5b49aad29614e709af02b64c56b0f8b78c6a81434a3c1ae527d2f0f78ca08f9d9fb22aa825a053876c9d2166e9c01f31c356014b5e2bdc0556c057433102
      languageName: node
      linkType: hard
    
    "loose-envify@npm:^1.1.0, loose-envify@npm:^1.4.0":
      version: 1.4.0
      resolution: "loose-envify@npm:1.4.0"
      dependencies:
        js-tokens: ^3.0.0 || ^4.0.0
      bin:
        loose-envify: cli.js
      checksum: 6517e24e0cad87ec9888f500c5b5947032cdfe6ef65e1c1936a0c48a524b81e65542c9c3edc91c97d5bddc806ee2a985dbc79be89215d613b1de5db6d1cfe6f4
      languageName: node
      linkType: hard
    
    "lru-cache@npm:^11.0.0":
      version: 11.3.6
      resolution: "lru-cache@npm:11.3.6"
      checksum: 0bc3ad1cb4c91c8baa532f3bede807a63d36156cc066a6f0e0a44d2dc317f94aa19a92bc11ce0f9933d00ea90995e2e61a0b12a21e1c5f3cc38d4b28956870d4
      languageName: node
      linkType: hard
    
    "markdown-to-jsx@npm:^7.4.1":
      version: 7.7.17
      resolution: "markdown-to-jsx@npm:7.7.17"
      peerDependencies:
        react: ">= 0.14.0"
      peerDependenciesMeta:
        react:
          optional: true
      checksum: fd0c50f7ed11d036dd607b48e7d8283f86aea23028e4a0be0051e2717aa9da15967bd219a24b84480c5efb825d33b855f2f972de269720377a63bae810de5df9
      languageName: node
      linkType: hard
    
    "marked-gfm-heading-id@npm:^4.1.3":
      version: 4.1.4
      resolution: "marked-gfm-heading-id@npm:4.1.4"
      dependencies:
        github-slugger: ^2.0.0
      peerDependencies:
        marked: ">=13 <19"
      checksum: a389ac34bdbc5425cb0420268585853d71b6951f7b12773e0a3e4bda76328554c3f1d528d83b6228efa4463675960bc069d85ddcbf80c2a900ecc421c87d1079
      languageName: node
      linkType: hard
    
    "marked-mangle@npm:^1.1.12":
      version: 1.1.13
      resolution: "marked-mangle@npm:1.1.13"
      peerDependencies:
        marked: ">=4 <19"
      checksum: c7cb122458f1b9615e8e19ca60fe508ff6a2d2a4915d210058dd5b0a0a476f08c836ace39b19e7beabe255dfb68578082b250ed7854f9cc699cd3a453b6f594c
      languageName: node
      linkType: hard
    
    "marked@npm:^16.3.0":
      version: 16.4.2
      resolution: "marked@npm:16.4.2"
      bin:
        marked: bin/marked.js
      checksum: 8749bc6228ff59eb63f82c7310750336eb85c42c2b37d0d24f86807cf9e7b441bf8a20ed1bbcadfcd7a2db41d1b6069642286d4403815b90c2ce5be6aa00124c
      languageName: node
      linkType: hard
    
    "marked@npm:^17.0.2":
      version: 17.0.6
      resolution: "marked@npm:17.0.6"
      bin:
        marked: bin/marked.js
      checksum: 0143f449ba253053bc27f48a1a2ab3a0619f3c1b527f5cd9eb6af9d879ab97c93d5d2b2c4ab81e8c42106f7f1731173c1f3aebfd176c66f1f2cd728aa9966cbf
      languageName: node
      linkType: hard
    
    "math-intrinsics@npm:^1.1.0":
      version: 1.1.0
      resolution: "math-intrinsics@npm:1.1.0"
      checksum: 0e513b29d120f478c85a70f49da0b8b19bc638975eca466f2eeae0071f3ad00454c621bf66e16dd435896c208e719fc91ad79bbfba4e400fe0b372e7c1c9c9a2
      languageName: node
      linkType: hard
    
    "memorystream@npm:^0.3.1":
      version: 0.3.1
      resolution: "memorystream@npm:0.3.1"
      checksum: f18b42440d24d09516d01466c06adf797df7873f0d40aa7db02e5fb9ed83074e5e65412d0720901d7069363465f82dc4f8bcb44f0cde271567a61426ce6ca2e9
      languageName: node
      linkType: hard
    
    "merge-stream@npm:^2.0.0":
      version: 2.0.0
      resolution: "merge-stream@npm:2.0.0"
      checksum: 6fa4dcc8d86629705cea944a4b88ef4cb0e07656ebf223fa287443256414283dd25d91c1cd84c77987f2aec5927af1a9db6085757cb43d90eb170ebf4b47f4f4
      languageName: node
      linkType: hard
    
    "mermaid@npm:^11.12.3":
      version: 11.15.0
      resolution: "mermaid@npm:11.15.0"
      dependencies:
        "@braintree/sanitize-url": ^7.1.1
        "@iconify/utils": ^3.0.2
        "@mermaid-js/parser": ^1.1.1
        "@types/d3": ^7.4.3
        "@upsetjs/venn.js": ^2.0.0
        cytoscape: ^3.33.1
        cytoscape-cose-bilkent: ^4.1.0
        cytoscape-fcose: ^2.2.0
        d3: ^7.9.0
        d3-sankey: ^0.12.3
        dagre-d3-es: 7.0.14
        dayjs: ^1.11.19
        dompurify: ^3.3.1
        es-toolkit: ^1.45.1
        katex: ^0.16.25
        khroma: ^2.1.0
        marked: ^16.3.0
        roughjs: ^4.6.6
        stylis: ^4.3.6
        ts-dedent: ^2.2.0
        uuid: ^11.1.0 || ^12 || ^13 || ^14.0.0
      checksum: 0d15e57372a395847b35f9b3194b02948e7a3f145dda9efcd56d07987195a8cece8c25cb95249387c82d4b71a2a8b74df62c96ab38e9014bc7086afbd11b854f
      languageName: node
      linkType: hard
    
    "micromatch@npm:^4.0.4":
      version: 4.0.8
      resolution: "micromatch@npm:4.0.8"
      dependencies:
        braces: ^3.0.3
        picomatch: ^2.3.1
      checksum: 79920eb634e6f400b464a954fcfa589c4e7c7143209488e44baf627f9affc8b1e306f41f4f0deedde97e69cb725920879462d3e750ab3bd3c1aed675bb3a8966
      languageName: node
      linkType: hard
    
    "mime-db@npm:1.52.0":
      version: 1.52.0
      resolution: "mime-db@npm:1.52.0"
      checksum: 0d99a03585f8b39d68182803b12ac601d9c01abfa28ec56204fa330bc9f3d1c5e14beb049bafadb3dbdf646dfb94b87e24d4ec7b31b7279ef906a8ea9b6a513f
      languageName: node
      linkType: hard
    
    "mime-db@npm:^1.54.0":
      version: 1.54.0
      resolution: "mime-db@npm:1.54.0"
      checksum: e99aaf2f23f5bd607deb08c83faba5dd25cf2fec90a7cc5b92d8260867ee08dab65312e1a589e60093dc7796d41e5fae013268418482f1db4c7d52d0a0960ac9
      languageName: node
      linkType: hard
    
    "mime-types@npm:^2.1.12":
      version: 2.1.35
      resolution: "mime-types@npm:2.1.35"
      dependencies:
        mime-db: 1.52.0
      checksum: 89a5b7f1def9f3af5dad6496c5ed50191ae4331cc5389d7c521c8ad28d5fdad2d06fd81baf38fed813dc4e46bb55c8145bb0ff406330818c9cf712fb2e9b3836
      languageName: node
      linkType: hard
    
    "mini-css-extract-plugin@npm:^2.7.0":
      version: 2.10.2
      resolution: "mini-css-extract-plugin@npm:2.10.2"
      dependencies:
        schema-utils: ^4.0.0
        tapable: ^2.2.1
      peerDependencies:
        webpack: ^5.0.0
      checksum: eb64d835d50fce8c181153b580f989661c37c0e56ddff7c1362051643180a31c8f8055d0d8dccc0dd2b022b1010d2957fe3097010f37acd33edfeb29bfc3734e
      languageName: node
      linkType: hard
    
    "mini-svg-data-uri@npm:^1.4.4":
      version: 1.4.4
      resolution: "mini-svg-data-uri@npm:1.4.4"
      bin:
        mini-svg-data-uri: cli.js
      checksum: 997f1fbd8d59a70f03761e18626d335197a3479cb9d1ff75678e4b64b864d32a0b8fc18115eabde035e5299b8b4a354a78e57dd6ac10f9d604162a6170898d09
      languageName: node
      linkType: hard
    
    "minimatch@npm:^10.2.2":
      version: 10.2.5
      resolution: "minimatch@npm:10.2.5"
      dependencies:
        brace-expansion: ^5.0.5
      checksum: 000423875fecbc7da1d74bf63c9081363a71291ef2588c376c45647ac004582cb5bc8cc09ef84420b26bfb490f4d0818d328e78569c6228e20d90271283f73ba
      languageName: node
      linkType: hard
    
    "minimatch@npm:^3.0.4, minimatch@npm:^3.1.2, minimatch@npm:^3.1.5":
      version: 3.1.5
      resolution: "minimatch@npm:3.1.5"
      dependencies:
        brace-expansion: ^1.1.7
      checksum: 47ef6f412c08be045a7291d11b1c40777925accf7252dc6d3caa39b1bfbb3a7ea390ba7aba464d762d783265c644143d2c8a204e6b5763145024d52ee65a1941
      languageName: node
      linkType: hard
    
    "minimist@npm:~1.2.0":
      version: 1.2.8
      resolution: "minimist@npm:1.2.8"
      checksum: 75a6d645fb122dad29c06a7597bddea977258957ed88d7a6df59b5cd3fe4a527e253e9bbf2e783e4b73657f9098b96a5fe96ab8a113655d4109108577ecf85b0
      languageName: node
      linkType: hard
    
    "minipass@npm:^7.1.2, minipass@npm:^7.1.3":
      version: 7.1.3
      resolution: "minipass@npm:7.1.3"
      checksum: 2ede17c0bf8fec499be3360fd07f0ec7666189e3907320a9b653f1530cf84af98928c5b12d80bfb75f321833bf2e97785b940540213ebdafe97a5f10327e664d
      languageName: node
      linkType: hard
    
    "ms@npm:^2.1.3":
      version: 2.1.3
      resolution: "ms@npm:2.1.3"
      checksum: aa92de608021b242401676e35cfa5aa42dd70cbdc082b916da7fb925c542173e36bce97ea3e804923fe92c0ad991434e4a38327e15a1b5b5f945d66df615ae6d
      languageName: node
      linkType: hard
    
    "nanoid@npm:^3.3.11":
      version: 3.3.12
      resolution: "nanoid@npm:3.3.12"
      bin:
        nanoid: bin/nanoid.cjs
      checksum: 38699257447dc59e21e73e0510d0dfb16b7a610d9ca80633d5c3a68f9b4298c990513d30404ca8f163c2d03225ee01695ff8898bea6179183f38f0477b7635ac
      languageName: node
      linkType: hard
    
    "natural-compare@npm:^1.4.0":
      version: 1.4.0
      resolution: "natural-compare@npm:1.4.0"
      checksum: 23ad088b08f898fc9b53011d7bb78ec48e79de7627e01ab5518e806033861bef68d5b0cd0e2205c2f36690ac9571ff6bcb05eb777ced2eeda8d4ac5b44592c3d
      languageName: node
      linkType: hard
    
    "neo-async@npm:^2.6.2":
      version: 2.6.2
      resolution: "neo-async@npm:2.6.2"
      checksum: deac9f8d00eda7b2e5cd1b2549e26e10a0faa70adaa6fdadca701cc55f49ee9018e427f424bac0c790b7c7e2d3068db97f3093f1093975f2acb8f8818b936ed9
      languageName: node
      linkType: hard
    
    "node-exports-info@npm:^1.6.0":
      version: 1.6.0
      resolution: "node-exports-info@npm:1.6.0"
      dependencies:
        array.prototype.flatmap: ^1.3.3
        es-errors: ^1.3.0
        object.entries: ^1.1.9
        semver: ^6.3.1
      checksum: 6bb93ec7ae95717aa2a2c315a5df1f7efa9f0592ee6fcde83256e112db33b59f0942d4188e154e84ec03f9de2d5ea62aa278e2d57b8624f6434168e8d7701e44
      languageName: node
      linkType: hard
    
    "node-releases@npm:^2.0.36":
      version: 2.0.44
      resolution: "node-releases@npm:2.0.44"
      checksum: a96278a9ec8f3d67b796693047499fc64724f97cb7fb8aa50e8e5a9408f4f2c1e2eb8f3ee44c43bfd34b0331514d9a8ad5efc7a98e7b720a4b9cd9b4d0f0c2da
      languageName: node
      linkType: hard
    
    "npm-normalize-package-bin@npm:^4.0.0":
      version: 4.0.0
      resolution: "npm-normalize-package-bin@npm:4.0.0"
      checksum: e1a0971e5640bc116c5197f9707d86dc404b6d8e13da2c7ea82baa5583b8da279a3c8607234aa1d733c2baac3b3eba87b156f021f20ae183dc4806530e61675d
      languageName: node
      linkType: hard
    
    "npm-run-all2@npm:^8.0.4":
      version: 8.0.4
      resolution: "npm-run-all2@npm:8.0.4"
      dependencies:
        ansi-styles: ^6.2.1
        cross-spawn: ^7.0.6
        memorystream: ^0.3.1
        picomatch: ^4.0.2
        pidtree: ^0.6.0
        read-package-json-fast: ^4.0.0
        shell-quote: ^1.7.3
        which: ^5.0.0
      bin:
        npm-run-all: bin/npm-run-all/index.js
        npm-run-all2: bin/npm-run-all/index.js
        run-p: bin/run-p/index.js
        run-s: bin/run-s/index.js
      checksum: 3bd96bc2f8763e15192b366411f2e3624ac638487595c30924b60ae7fcb3896ee007282591c1351661b89b8e553a036419d0420b8a87c6e1a3ae3a03a563d2c5
      languageName: node
      linkType: hard
    
    "nwsapi@npm:^2.2.2":
      version: 2.2.23
      resolution: "nwsapi@npm:2.2.23"
      checksum: 7af519de08381df9dc0c913d817255cb21e33671641603f6cdabe8cb04b18b32aca1477fdc5dfe08b2039125afa3216d3ef01a3c2603a97d114e842d9414e0c3
      languageName: node
      linkType: hard
    
    "object-assign@npm:^4.1.1":
      version: 4.1.1
      resolution: "object-assign@npm:4.1.1"
      checksum: fcc6e4ea8c7fe48abfbb552578b1c53e0d194086e2e6bbbf59e0a536381a292f39943c6e9628af05b5528aa5e3318bb30d6b2e53cadaf5b8fe9e12c4b69af23f
      languageName: node
      linkType: hard
    
    "object-inspect@npm:^1.13.3, object-inspect@npm:^1.13.4":
      version: 1.13.4
      resolution: "object-inspect@npm:1.13.4"
      checksum: 582810c6a8d2ef988ea0a39e69e115a138dad8f42dd445383b394877e5816eb4268489f316a6f74ee9c4e0a984b3eab1028e3e79d62b1ed67c726661d55c7a8b
      languageName: node
      linkType: hard
    
    "object-keys@npm:^1.1.1":
      version: 1.1.1
      resolution: "object-keys@npm:1.1.1"
      checksum: b363c5e7644b1e1b04aa507e88dcb8e3a2f52b6ffd0ea801e4c7a62d5aa559affe21c55a07fd4b1fd55fc03a33c610d73426664b20032405d7b92a1414c34d6a
      languageName: node
      linkType: hard
    
    "object.assign@npm:^4.1.4, object.assign@npm:^4.1.7":
      version: 4.1.7
      resolution: "object.assign@npm:4.1.7"
      dependencies:
        call-bind: ^1.0.8
        call-bound: ^1.0.3
        define-properties: ^1.2.1
        es-object-atoms: ^1.0.0
        has-symbols: ^1.1.0
        object-keys: ^1.1.1
      checksum: 60e07d2651cf4f5528c485f1aa4dbded9b384c47d80e8187cefd11320abb1aebebf78df5483451dfa549059f8281c21f7b4bf7d19e9e5e97d8d617df0df298de
      languageName: node
      linkType: hard
    
    "object.entries@npm:^1.1.9":
      version: 1.1.9
      resolution: "object.entries@npm:1.1.9"
      dependencies:
        call-bind: ^1.0.8
        call-bound: ^1.0.4
        define-properties: ^1.2.1
        es-object-atoms: ^1.1.1
      checksum: 0ab2ef331c4d6a53ff600a5d69182948d453107c3a1f7fd91bc29d387538c2aba21d04949a74f57c21907208b1f6fb175567fd1f39f1a7a4046ba1bca762fb41
      languageName: node
      linkType: hard
    
    "object.fromentries@npm:^2.0.8":
      version: 2.0.8
      resolution: "object.fromentries@npm:2.0.8"
      dependencies:
        call-bind: ^1.0.7
        define-properties: ^1.2.1
        es-abstract: ^1.23.2
        es-object-atoms: ^1.0.0
      checksum: 29b2207a2db2782d7ced83f93b3ff5d425f901945f3665ffda1821e30a7253cd1fd6b891a64279976098137ddfa883d748787a6fea53ecdb51f8df8b8cec0ae1
      languageName: node
      linkType: hard
    
    "object.values@npm:^1.1.6, object.values@npm:^1.2.1":
      version: 1.2.1
      resolution: "object.values@npm:1.2.1"
      dependencies:
        call-bind: ^1.0.8
        call-bound: ^1.0.3
        define-properties: ^1.2.1
        es-object-atoms: ^1.0.0
      checksum: f9b9a2a125ccf8ded29414d7c056ae0d187b833ee74919821fc60d7e216626db220d9cb3cf33f965c84aaaa96133626ca13b80f3c158b673976dc8cfcfcd26bb
      languageName: node
      linkType: hard
    
    "once@npm:^1.3.0":
      version: 1.4.0
      resolution: "once@npm:1.4.0"
      dependencies:
        wrappy: 1
      checksum: cd0a88501333edd640d95f0d2700fbde6bff20b3d4d9bdc521bdd31af0656b5706570d6c6afe532045a20bb8dc0849f8332d6f2a416e0ba6d3d3b98806c7db68
      languageName: node
      linkType: hard
    
    "optionator@npm:^0.9.3":
      version: 0.9.4
      resolution: "optionator@npm:0.9.4"
      dependencies:
        deep-is: ^0.1.3
        fast-levenshtein: ^2.0.6
        levn: ^0.4.1
        prelude-ls: ^1.2.1
        type-check: ^0.4.0
        word-wrap: ^1.2.5
      checksum: ecbd010e3dc73e05d239976422d9ef54a82a13f37c11ca5911dff41c98a6c7f0f163b27f922c37e7f8340af9d36febd3b6e9cef508f3339d4c393d7276d716bb
      languageName: node
      linkType: hard
    
    "own-keys@npm:^1.0.1":
      version: 1.0.1
      resolution: "own-keys@npm:1.0.1"
      dependencies:
        get-intrinsic: ^1.2.6
        object-keys: ^1.1.1
        safe-push-apply: ^1.0.0
      checksum: cc9dd7d85c4ccfbe8109fce307d581ac7ede7b26de892b537873fbce2dc6a206d89aea0630dbb98e47ce0873517cefeaa7be15fcf94aaf4764a3b34b474a5b61
      languageName: node
      linkType: hard
    
    "p-limit@npm:^2.2.0":
      version: 2.3.0
      resolution: "p-limit@npm:2.3.0"
      dependencies:
        p-try: ^2.0.0
      checksum: 84ff17f1a38126c3314e91ecfe56aecbf36430940e2873dadaa773ffe072dc23b7af8e46d4b6485d302a11673fe94c6b67ca2cfbb60c989848b02100d0594ac1
      languageName: node
      linkType: hard
    
    "p-limit@npm:^3.0.2":
      version: 3.1.0
      resolution: "p-limit@npm:3.1.0"
      dependencies:
        yocto-queue: ^0.1.0
      checksum: 7c3690c4dbf62ef625671e20b7bdf1cbc9534e83352a2780f165b0d3ceba21907e77ad63401708145ca4e25bfc51636588d89a8c0aeb715e6c37d1c066430360
      languageName: node
      linkType: hard
    
    "p-locate@npm:^4.1.0":
      version: 4.1.0
      resolution: "p-locate@npm:4.1.0"
      dependencies:
        p-limit: ^2.2.0
      checksum: 513bd14a455f5da4ebfcb819ef706c54adb09097703de6aeaa5d26fe5ea16df92b48d1ac45e01e3944ce1e6aa2a66f7f8894742b8c9d6e276e16cd2049a2b870
      languageName: node
      linkType: hard
    
    "p-locate@npm:^5.0.0":
      version: 5.0.0
      resolution: "p-locate@npm:5.0.0"
      dependencies:
        p-limit: ^3.0.2
      checksum: 1623088f36cf1cbca58e9b61c4e62bf0c60a07af5ae1ca99a720837356b5b6c5ba3eb1b2127e47a06865fee59dd0453cad7cc844cda9d5a62ac1a5a51b7c86d3
      languageName: node
      linkType: hard
    
    "p-try@npm:^2.0.0":
      version: 2.2.0
      resolution: "p-try@npm:2.2.0"
      checksum: f8a8e9a7693659383f06aec604ad5ead237c7a261c18048a6e1b5b85a5f8a067e469aa24f5bc009b991ea3b058a87f5065ef4176793a200d4917349881216cae
      languageName: node
      linkType: hard
    
    "package-json-from-dist@npm:^1.0.1":
      version: 1.0.1
      resolution: "package-json-from-dist@npm:1.0.1"
      checksum: 58ee9538f2f762988433da00e26acc788036914d57c71c246bf0be1b60cdbd77dd60b6a3e1a30465f0b248aeb80079e0b34cb6050b1dfa18c06953bb1cbc7602
      languageName: node
      linkType: hard
    
    "package-manager-detector@npm:^1.3.0":
      version: 1.6.0
      resolution: "package-manager-detector@npm:1.6.0"
      checksum: 154d55225e70e32582f59b5d4a46d25716f0730a14d7e4b6f0fd76c870c720cc6f448d2becca06a15f2042492f0293cf26e5ad8fcd85d0eab0af3b9b46c0b43a
      languageName: node
      linkType: hard
    
    "parent-module@npm:^1.0.0":
      version: 1.0.1
      resolution: "parent-module@npm:1.0.1"
      dependencies:
        callsites: ^3.0.0
      checksum: 6ba8b255145cae9470cf5551eb74be2d22281587af787a2626683a6c20fbb464978784661478dd2a3f1dad74d1e802d403e1b03c1a31fab310259eec8ac560ff
      languageName: node
      linkType: hard
    
    "parse-srcset@npm:^1.0.2":
      version: 1.0.2
      resolution: "parse-srcset@npm:1.0.2"
      checksum: 3a0380380c6082021fcce982f0b89fb8a493ce9dfd7d308e5e6d855201e80db8b90438649b31fdd82a3d6089a8ca17dccddaa2b730a718389af4c037b8539ebf
      languageName: node
      linkType: hard
    
    "parse5@npm:^7.0.0, parse5@npm:^7.1.1":
      version: 7.3.0
      resolution: "parse5@npm:7.3.0"
      dependencies:
        entities: ^6.0.0
      checksum: ffd040c4695d93f0bc370e3d6d75c1b352178514af41be7afa212475ea5cead1d6e377cd9d4cec6a5e2bcf497ca50daf9e0088eadaa37dbc271f60def08fdfcd
      languageName: node
      linkType: hard
    
    "path-browserify@npm:^1.0.0":
      version: 1.0.1
      resolution: "path-browserify@npm:1.0.1"
      checksum: c6d7fa376423fe35b95b2d67990060c3ee304fc815ff0a2dc1c6c3cfaff2bd0d572ee67e18f19d0ea3bbe32e8add2a05021132ac40509416459fffee35200699
      languageName: node
      linkType: hard
    
    "path-data-parser@npm:0.1.0, path-data-parser@npm:^0.1.0":
      version: 0.1.0
      resolution: "path-data-parser@npm:0.1.0"
      checksum: a23a214adb38074576a8873d25e8dea7e090b8396d86f58f83f3f6c6298ff56b06adc694147b67f0ed22f14dc478efa1d525710d3ec7b2d7b1efbac57e3fafe6
      languageName: node
      linkType: hard
    
    "path-exists@npm:^4.0.0":
      version: 4.0.0
      resolution: "path-exists@npm:4.0.0"
      checksum: 505807199dfb7c50737b057dd8d351b82c033029ab94cb10a657609e00c1bc53b951cfdbccab8de04c5584d5eff31128ce6afd3db79281874a5ef2adbba55ed1
      languageName: node
      linkType: hard
    
    "path-is-absolute@npm:^1.0.0":
      version: 1.0.1
      resolution: "path-is-absolute@npm:1.0.1"
      checksum: 060840f92cf8effa293bcc1bea81281bd7d363731d214cbe5c227df207c34cd727430f70c6037b5159c8a870b9157cba65e775446b0ab06fd5ecc7e54615a3b8
      languageName: node
      linkType: hard
    
    "path-key@npm:^3.1.0":
      version: 3.1.1
      resolution: "path-key@npm:3.1.1"
      checksum: 55cd7a9dd4b343412a8386a743f9c746ef196e57c823d90ca3ab917f90ab9f13dd0ded27252ba49dbdfcab2b091d998bc446f6220cd3cea65db407502a740020
      languageName: node
      linkType: hard
    
    "path-parse@npm:^1.0.7":
      version: 1.0.7
      resolution: "path-parse@npm:1.0.7"
      checksum: 49abf3d81115642938a8700ec580da6e830dde670be21893c62f4e10bd7dd4c3742ddc603fe24f898cba7eb0c6bc1777f8d9ac14185d34540c6d4d80cd9cae8a
      languageName: node
      linkType: hard
    
    "path-scurry@npm:^2.0.2":
      version: 2.0.2
      resolution: "path-scurry@npm:2.0.2"
      dependencies:
        lru-cache: ^11.0.0
        minipass: ^7.1.2
      checksum: a723afe86e342e19dd1b49ce4f5b64a9a84b1e2e07ffc62f051c11623ecd461b1bf1599eee1ecacfce03dda8b6bb866a5df80c0ded45375d258ff22f631920a7
      languageName: node
      linkType: hard
    
    "picocolors@npm:^1.1.1":
      version: 1.1.1
      resolution: "picocolors@npm:1.1.1"
      checksum: e1cf46bf84886c79055fdfa9dcb3e4711ad259949e3565154b004b260cd356c5d54b31a1437ce9782624bf766272fe6b0154f5f0c744fb7af5d454d2b60db045
      languageName: node
      linkType: hard
    
    "picomatch@npm:^2.2.3, picomatch@npm:^2.3.1":
      version: 2.3.2
      resolution: "picomatch@npm:2.3.2"
      checksum: 0a3f5b9ff28faf022e1429b66e47c122e19e7b31cbd098095d29e949684e7ff1d9b83a2133d931326a53ec6ec11c7c59b1850c27fde2f26ca1d5f35861e9701a
      languageName: node
      linkType: hard
    
    "picomatch@npm:^4.0.2, picomatch@npm:^4.0.4":
      version: 4.0.4
      resolution: "picomatch@npm:4.0.4"
      checksum: 76b387b5157951422fa6049a96bdd1695e39dd126cd99df34d343638dc5cdb8bcdc83fff288c23eddcf7c26657c35e3173d4d5f488c4f28b889b314472e0a662
      languageName: node
      linkType: hard
    
    "pidtree@npm:^0.6.0":
      version: 0.6.0
      resolution: "pidtree@npm:0.6.0"
      bin:
        pidtree: bin/pidtree.js
      checksum: 8fbc073ede9209dd15e80d616e65eb674986c93be49f42d9ddde8dbbd141bb53d628a7ca4e58ab5c370bb00383f67d75df59a9a226dede8fa801267a7030c27a
      languageName: node
      linkType: hard
    
    "pkg-dir@npm:^4.2.0":
      version: 4.2.0
      resolution: "pkg-dir@npm:4.2.0"
      dependencies:
        find-up: ^4.0.0
      checksum: 9863e3f35132bf99ae1636d31ff1e1e3501251d480336edb1c211133c8d58906bed80f154a1d723652df1fda91e01c7442c2eeaf9dc83157c7ae89087e43c8d6
      languageName: node
      linkType: hard
    
    "points-on-curve@npm:0.2.0, points-on-curve@npm:^0.2.0":
      version: 0.2.0
      resolution: "points-on-curve@npm:0.2.0"
      checksum: 05e87d6839e3d869cfac0e63c2b1ca700fc8f1083e3f9ae80841cc50379fd31204f9e1f221407df1a90afcb8bfa98404aee0b0fa00330b7b3b328d33be21cf47
      languageName: node
      linkType: hard
    
    "points-on-path@npm:^0.2.1":
      version: 0.2.1
      resolution: "points-on-path@npm:0.2.1"
      dependencies:
        path-data-parser: 0.1.0
        points-on-curve: 0.2.0
      checksum: 5564dd84d15699579bf07bd33adfd0dc1a5e717c0d36ee11f0832b6b6890941e25e9ea68d15f7858698a9b5ec509f60e6472a0346624bb9dd9c2100cf568ac8f
      languageName: node
      linkType: hard
    
    "possible-typed-array-names@npm:^1.0.0":
      version: 1.1.0
      resolution: "possible-typed-array-names@npm:1.1.0"
      checksum: cfcd4f05264eee8fd184cd4897a17890561d1d473434b43ab66ad3673d9c9128981ec01e0cb1d65a52cd6b1eebfb2eae1e53e39b2e0eca86afc823ede7a4f41b
      languageName: node
      linkType: hard
    
    "postcss-modules-extract-imports@npm:^3.1.0":
      version: 3.1.0
      resolution: "postcss-modules-extract-imports@npm:3.1.0"
      peerDependencies:
        postcss: ^8.1.0
      checksum: b9192e0f4fb3d19431558be6f8af7ca45fc92baaad9b2778d1732a5880cd25c3df2074ce5484ae491e224f0d21345ffc2d419bd51c25b019af76d7a7af88c17f
      languageName: node
      linkType: hard
    
    "postcss-modules-local-by-default@npm:^4.0.5":
      version: 4.2.0
      resolution: "postcss-modules-local-by-default@npm:4.2.0"
      dependencies:
        icss-utils: ^5.0.0
        postcss-selector-parser: ^7.0.0
        postcss-value-parser: ^4.1.0
      peerDependencies:
        postcss: ^8.1.0
      checksum: 720d145453f82ad5f1c1d0ff7386d64722f0812808e4132e573c1a49909745e109fcce3792a0b0cb18770dbeb3d9741867e81c698dc8353a18bc664b7d6d9533
      languageName: node
      linkType: hard
    
    "postcss-modules-scope@npm:^3.2.0":
      version: 3.2.1
      resolution: "postcss-modules-scope@npm:3.2.1"
      dependencies:
        postcss-selector-parser: ^7.0.0
      peerDependencies:
        postcss: ^8.1.0
      checksum: 085f65863bb7d8bf08209a979ceb22b2b07bb466574e0e698d34aaad832d614957bb05f2418348a14e4035f65e23b2be2951369d26ea429dd5762c6a020f0f7c
      languageName: node
      linkType: hard
    
    "postcss-modules-values@npm:^4.0.0":
      version: 4.0.0
      resolution: "postcss-modules-values@npm:4.0.0"
      dependencies:
        icss-utils: ^5.0.0
      peerDependencies:
        postcss: ^8.1.0
      checksum: f7f2cdf14a575b60e919ad5ea52fed48da46fe80db2733318d71d523fc87db66c835814940d7d05b5746b0426e44661c707f09bdb83592c16aea06e859409db6
      languageName: node
      linkType: hard
    
    "postcss-selector-parser@npm:^7.0.0":
      version: 7.1.1
      resolution: "postcss-selector-parser@npm:7.1.1"
      dependencies:
        cssesc: ^3.0.0
        util-deprecate: ^1.0.2
      checksum: 36d71bd8e1c9db9c3d4ecefd3f8c30aace141a3a1a266473bc9a1b7a0c1c2dfbaef2ac20cc8ea287b17131cbb3690c1c0fe7a4d9272db9f09b136da2413bc3ea
      languageName: node
      linkType: hard
    
    "postcss-value-parser@npm:^4.1.0, postcss-value-parser@npm:^4.2.0":
      version: 4.2.0
      resolution: "postcss-value-parser@npm:4.2.0"
      checksum: 819ffab0c9d51cf0acbabf8996dffbfafbafa57afc0e4c98db88b67f2094cb44488758f06e5da95d7036f19556a4a732525e84289a425f4f6fd8e412a9d7442f
      languageName: node
      linkType: hard
    
    "postcss@npm:^8.3.11, postcss@npm:^8.4.33":
      version: 8.5.14
      resolution: "postcss@npm:8.5.14"
      dependencies:
        nanoid: ^3.3.11
        picocolors: ^1.1.1
        source-map-js: ^1.2.1
      checksum: ec17d1519cd997b43aceb82bfa959f380085591269e286c53d5ba76eb1989525e7cde106a44f1565516fcbb50f206eb1858cc2cd5e5aaea3a8ee793886c8232c
      languageName: node
      linkType: hard
    
    "prelude-ls@npm:^1.2.1":
      version: 1.2.1
      resolution: "prelude-ls@npm:1.2.1"
      checksum: cd192ec0d0a8e4c6da3bb80e4f62afe336df3f76271ac6deb0e6a36187133b6073a19e9727a1ff108cd8b9982e4768850d413baa71214dd80c7979617dca827a
      languageName: node
      linkType: hard
    
    "prettier-linter-helpers@npm:^1.0.1":
      version: 1.0.1
      resolution: "prettier-linter-helpers@npm:1.0.1"
      dependencies:
        fast-diff: ^1.1.2
      checksum: 2dc35f5036a35f4c4f5e645887edda1436acb63687a7f12b2383e0a6f3c1f76b8a0a4709fe4d82e19157210feb5984b159bb714d43290022911ab53d606474ec
      languageName: node
      linkType: hard
    
    "prettier@npm:^3.8.3":
      version: 3.8.3
      resolution: "prettier@npm:3.8.3"
      bin:
        prettier: bin/prettier.cjs
      checksum: f696d5b93b6aa7da53b7e94fd1ac8789915297a67d142159a367901a57a417a25f54500823d26b5580573d388f634d7860bef10922944c47a231194d1613394a
      languageName: node
      linkType: hard
    
    "pretty-format@npm:^29.7.0":
      version: 29.7.0
      resolution: "pretty-format@npm:29.7.0"
      dependencies:
        "@jest/schemas": ^29.6.3
        ansi-styles: ^5.0.0
        react-is: ^18.0.0
      checksum: 032c1602383e71e9c0c02a01bbd25d6759d60e9c7cf21937dde8357aa753da348fcec5def5d1002c9678a8524d5fe099ad98861286550ef44de8808cc61e43b6
      languageName: node
      linkType: hard
    
    "process@npm:^0.11.10":
      version: 0.11.10
      resolution: "process@npm:0.11.10"
      checksum: bfcce49814f7d172a6e6a14d5fa3ac92cc3d0c3b9feb1279774708a719e19acd673995226351a082a9ae99978254e320ccda4240ddc474ba31a76c79491ca7c3
      languageName: node
      linkType: hard
    
    "prop-types@npm:^15.8.1":
      version: 15.8.1
      resolution: "prop-types@npm:15.8.1"
      dependencies:
        loose-envify: ^1.4.0
        object-assign: ^4.1.1
        react-is: ^16.13.1
      checksum: c056d3f1c057cb7ff8344c645450e14f088a915d078dcda795041765047fa080d38e5d626560ccaac94a4e16e3aa15f3557c1a9a8d1174530955e992c675e459
      languageName: node
      linkType: hard
    
    "psl@npm:^1.1.33":
      version: 1.15.0
      resolution: "psl@npm:1.15.0"
      dependencies:
        punycode: ^2.3.1
      checksum: 6f777d82eecfe1c2406dadbc15e77467b186fec13202ec887a45d0209a2c6fca530af94a462a477c3c4a767ad892ec9ede7c482d98f61f653dd838b50e89dc15
      languageName: node
      linkType: hard
    
    "punycode@npm:^2.1.0, punycode@npm:^2.1.1, punycode@npm:^2.3.1":
      version: 2.3.1
      resolution: "punycode@npm:2.3.1"
      checksum: bb0a0ceedca4c3c57a9b981b90601579058903c62be23c5e8e843d2c2d4148a3ecf029d5133486fb0e1822b098ba8bba09e89d6b21742d02fa26bda6441a6fb2
      languageName: node
      linkType: hard
    
    "querystringify@npm:^2.1.1":
      version: 2.2.0
      resolution: "querystringify@npm:2.2.0"
      checksum: 5641ea231bad7ef6d64d9998faca95611ed4b11c2591a8cae741e178a974f6a8e0ebde008475259abe1621cb15e692404e6b6626e927f7b849d5c09392604b15
      languageName: node
      linkType: hard
    
    "react-dom@npm:^18.2.0":
      version: 18.3.1
      resolution: "react-dom@npm:18.3.1"
      dependencies:
        loose-envify: ^1.1.0
        scheduler: ^0.23.2
      peerDependencies:
        react: ^18.3.1
      checksum: 298954ecd8f78288dcaece05e88b570014d8f6dce5db6f66e6ee91448debeb59dcd31561dddb354eee47e6c1bb234669459060deb238ed0213497146e555a0b9
      languageName: node
      linkType: hard
    
    "react-is@npm:^16.13.1":
      version: 16.13.1
      resolution: "react-is@npm:16.13.1"
      checksum: f7a19ac3496de32ca9ae12aa030f00f14a3d45374f1ceca0af707c831b2a6098ef0d6bdae51bd437b0a306d7f01d4677fcc8de7c0d331eb47ad0f46130e53c5f
      languageName: node
      linkType: hard
    
    "react-is@npm:^18.0.0, react-is@npm:^18.2.0":
      version: 18.3.1
      resolution: "react-is@npm:18.3.1"
      checksum: e20fe84c86ff172fc8d898251b7cc2c43645d108bf96d0b8edf39b98f9a2cae97b40520ee7ed8ee0085ccc94736c4886294456033304151c3f94978cec03df21
      languageName: node
      linkType: hard
    
    "react@npm:>=17.0.0 <19.0.0, react@npm:^18.2.0":
      version: 18.3.1
      resolution: "react@npm:18.3.1"
      dependencies:
        loose-envify: ^1.1.0
      checksum: a27bcfa8ff7c15a1e50244ad0d0c1cb2ad4375eeffefd266a64889beea6f6b64c4966c9b37d14ee32d6c9fcd5aa6ba183b6988167ab4d127d13e7cb5b386a376
      languageName: node
      linkType: hard
    
    "read-package-json-fast@npm:^4.0.0":
      version: 4.0.0
      resolution: "read-package-json-fast@npm:4.0.0"
      dependencies:
        json-parse-even-better-errors: ^4.0.0
        npm-normalize-package-bin: ^4.0.0
      checksum: bf0becd7d0b652dcc5874b466d1dbd98313180e89505c072f35ff48a1ad6bdaf2427143301e1924d64e4af5064cda8be5df16f14de882f03130e29051bbaab87
      languageName: node
      linkType: hard
    
    "rechoir@npm:^0.8.0":
      version: 0.8.0
      resolution: "rechoir@npm:0.8.0"
      dependencies:
        resolve: ^1.20.0
      checksum: ad3caed8afdefbc33fbc30e6d22b86c35b3d51c2005546f4e79bcc03c074df804b3640ad18945e6bef9ed12caedc035655ec1082f64a5e94c849ff939dc0a788
      languageName: node
      linkType: hard
    
    "reflect.getprototypeof@npm:^1.0.6, reflect.getprototypeof@npm:^1.0.9":
      version: 1.0.10
      resolution: "reflect.getprototypeof@npm:1.0.10"
      dependencies:
        call-bind: ^1.0.8
        define-properties: ^1.2.1
        es-abstract: ^1.23.9
        es-errors: ^1.3.0
        es-object-atoms: ^1.0.0
        get-intrinsic: ^1.2.7
        get-proto: ^1.0.1
        which-builtin-type: ^1.2.1
      checksum: ccc5debeb66125e276ae73909cecb27e47c35d9bb79d9cc8d8d055f008c58010ab8cb401299786e505e4aab733a64cba9daf5f312a58e96a43df66adad221870
      languageName: node
      linkType: hard
    
    "regexp.prototype.flags@npm:^1.5.3, regexp.prototype.flags@npm:^1.5.4":
      version: 1.5.4
      resolution: "regexp.prototype.flags@npm:1.5.4"
      dependencies:
        call-bind: ^1.0.8
        define-properties: ^1.2.1
        es-errors: ^1.3.0
        get-proto: ^1.0.1
        gopd: ^1.2.0
        set-function-name: ^2.0.2
      checksum: 18cb667e56cb328d2dda569d7f04e3ea78f2683135b866d606538cf7b1d4271f7f749f09608c877527799e6cf350e531368f3c7a20ccd1bb41048a48926bdeeb
      languageName: node
      linkType: hard
    
    "require-from-string@npm:^2.0.2":
      version: 2.0.2
      resolution: "require-from-string@npm:2.0.2"
      checksum: a03ef6895445f33a4015300c426699bc66b2b044ba7b670aa238610381b56d3f07c686251740d575e22f4c87531ba662d06937508f0f3c0f1ddc04db3130560b
      languageName: node
      linkType: hard
    
    "requires-port@npm:^1.0.0":
      version: 1.0.0
      resolution: "requires-port@npm:1.0.0"
      checksum: eee0e303adffb69be55d1a214e415cf42b7441ae858c76dfc5353148644f6fd6e698926fc4643f510d5c126d12a705e7c8ed7e38061113bdf37547ab356797ff
      languageName: node
      linkType: hard
    
    "resolve-cwd@npm:^3.0.0":
      version: 3.0.0
      resolution: "resolve-cwd@npm:3.0.0"
      dependencies:
        resolve-from: ^5.0.0
      checksum: 546e0816012d65778e580ad62b29e975a642989108d9a3c5beabfb2304192fa3c9f9146fbdfe213563c6ff51975ae41bac1d3c6e047dd9572c94863a057b4d81
      languageName: node
      linkType: hard
    
    "resolve-from@npm:^4.0.0":
      version: 4.0.0
      resolution: "resolve-from@npm:4.0.0"
      checksum: f4ba0b8494846a5066328ad33ef8ac173801a51739eb4d63408c847da9a2e1c1de1e6cbbf72699211f3d13f8fc1325648b169bd15eb7da35688e30a5fb0e4a7f
      languageName: node
      linkType: hard
    
    "resolve-from@npm:^5.0.0":
      version: 5.0.0
      resolution: "resolve-from@npm:5.0.0"
      checksum: 4ceeb9113e1b1372d0cd969f3468fa042daa1dd9527b1b6bb88acb6ab55d8b9cd65dbf18819f9f9ddf0db804990901dcdaade80a215e7b2c23daae38e64f5bdf
      languageName: node
      linkType: hard
    
    "resolve@npm:^1.20.0":
      version: 1.22.12
      resolution: "resolve@npm:1.22.12"
      dependencies:
        es-errors: ^1.3.0
        is-core-module: ^2.16.1
        path-parse: ^1.0.7
        supports-preserve-symlinks-flag: ^1.0.0
      bin:
        resolve: bin/resolve
      checksum: 4dc5a614b32142ef9ab455b242ed33c472c4ea50df17dbe1e9dac5fe0eebd7d5fdb7cb9cc8ad2165e5e0f07694498a74e7fbd6cc1599e20d84682cce1b80a4dc
      languageName: node
      linkType: hard
    
    "resolve@npm:^2.0.0-next.5":
      version: 2.0.0-next.6
      resolution: "resolve@npm:2.0.0-next.6"
      dependencies:
        es-errors: ^1.3.0
        is-core-module: ^2.16.1
        node-exports-info: ^1.6.0
        object-keys: ^1.1.1
        path-parse: ^1.0.7
        supports-preserve-symlinks-flag: ^1.0.0
      bin:
        resolve: bin/resolve
      checksum: bc5a4f8f4dd7e1a3d2d8cdd2818b7cc3334283d2ef067f462d2ab3a4ab8f969d69438d7553268f59a2b5b4c1b42d18fabb3241a6d0279276ab578ba74455822e
      languageName: node
      linkType: hard
    
    "resolve@patch:resolve@^1.20.0#~builtin":
      version: 1.22.12
      resolution: "resolve@patch:resolve@npm%3A1.22.12#~builtin::version=1.22.12&hash=c3c19d"
      dependencies:
        es-errors: ^1.3.0
        is-core-module: ^2.16.1
        path-parse: ^1.0.7
        supports-preserve-symlinks-flag: ^1.0.0
      bin:
        resolve: bin/resolve
      checksum: 0cc5b060cbe081c85c331ac2eb08e8a54f0a195b899d5001822e5d3e2b335da651b1eed3d259fea904c22a0da9324a061e0e7ceab5dbeb5bcab5250b625754e1
      languageName: node
      linkType: hard
    
    "resolve@patch:resolve@^2.0.0-next.5#~builtin":
      version: 2.0.0-next.6
      resolution: "resolve@patch:resolve@npm%3A2.0.0-next.6#~builtin::version=2.0.0-next.6&hash=c3c19d"
      dependencies:
        es-errors: ^1.3.0
        is-core-module: ^2.16.1
        node-exports-info: ^1.6.0
        object-keys: ^1.1.1
        path-parse: ^1.0.7
        supports-preserve-symlinks-flag: ^1.0.0
      bin:
        resolve: bin/resolve
      checksum: 514c6d4e5e7249f8a93e776724b22c72090ecedb3cb6846ba14c591e918716bb41b2f857e4ce47c8bd88e068aca85f6a8f70f1c5abecc16d345bf00f3a587fb9
      languageName: node
      linkType: hard
    
    "rimraf@npm:^6.1.3":
      version: 6.1.3
      resolution: "rimraf@npm:6.1.3"
      dependencies:
        glob: ^13.0.3
        package-json-from-dist: ^1.0.1
      bin:
        rimraf: dist/esm/bin.mjs
      checksum: 797dabd9b03a154a863c20e0bd0066214a3a7165d30a358852b63b96f9463d360f59d56db6ccbaebac6fe2ff5c93dea2cddd547855bba1a1e1d5361c31e7456a
      languageName: node
      linkType: hard
    
    "robust-predicates@npm:^3.0.2":
      version: 3.0.3
      resolution: "robust-predicates@npm:3.0.3"
      checksum: 23692b9451e296bf8f98bdd681d4950a27045cdee5df3fadb9c150c7df0889b5fcf658ab2f82a41675bf14b1e32c4c6b7a4591f8adbee056b845f0eb9d3ad69c
      languageName: node
      linkType: hard
    
    "roughjs@npm:^4.6.6":
      version: 4.6.6
      resolution: "roughjs@npm:4.6.6"
      dependencies:
        hachure-fill: ^0.5.2
        path-data-parser: ^0.1.0
        points-on-curve: ^0.2.0
        points-on-path: ^0.2.1
      checksum: ec4b8266ac4a50c7369e337d8ddff3b2d970506229cac5425ddca56f4e6b29fca07dded4300e9e392bb608da4ba618d349fd241283affb25055cab7c2fe48f8f
      languageName: node
      linkType: hard
    
    "rw@npm:1":
      version: 1.3.3
      resolution: "rw@npm:1.3.3"
      checksum: c20d82421f5a71c86a13f76121b751553a99cd4a70ea27db86f9b23f33db941f3f06019c30f60d50c356d0bd674c8e74764ac146ea55e217c091bde6fba82aa3
      languageName: node
      linkType: hard
    
    "safe-array-concat@npm:^1.1.3":
      version: 1.1.4
      resolution: "safe-array-concat@npm:1.1.4"
      dependencies:
        call-bind: ^1.0.9
        call-bound: ^1.0.4
        get-intrinsic: ^1.3.0
        has-symbols: ^1.1.0
        isarray: ^2.0.5
      checksum: fd59dbf79f5ab6b56eb1b07bc7fd38ebdb9cb0478e7639606cd7a7f423d2fd22dc81eaf2371f74b5f3332ce75327669e1667272b34b33d06d07514e3e5305cf8
      languageName: node
      linkType: hard
    
    "safe-push-apply@npm:^1.0.0":
      version: 1.0.0
      resolution: "safe-push-apply@npm:1.0.0"
      dependencies:
        es-errors: ^1.3.0
        isarray: ^2.0.5
      checksum: 8c11cbee6dc8ff5cc0f3d95eef7052e43494591384015902e4292aef4ae9e539908288520ed97179cee17d6ffb450fe5f05a46ce7a1749685f7524fd568ab5db
      languageName: node
      linkType: hard
    
    "safe-regex-test@npm:^1.1.0":
      version: 1.1.0
      resolution: "safe-regex-test@npm:1.1.0"
      dependencies:
        call-bound: ^1.0.2
        es-errors: ^1.3.0
        is-regex: ^1.2.1
      checksum: 3c809abeb81977c9ed6c869c83aca6873ea0f3ab0f806b8edbba5582d51713f8a6e9757d24d2b4b088f563801475ea946c8e77e7713e8c65cdd02305b6caedab
      languageName: node
      linkType: hard
    
    "safer-buffer@npm:>= 2.1.2 < 3.0.0":
      version: 2.1.2
      resolution: "safer-buffer@npm:2.1.2"
      checksum: cab8f25ae6f1434abee8d80023d7e72b598cf1327164ddab31003c51215526801e40b66c5e65d658a0af1e9d6478cadcb4c745f4bd6751f97d8644786c0978b0
      languageName: node
      linkType: hard
    
    "sanitize-html@npm:~2.12.1":
      version: 2.12.1
      resolution: "sanitize-html@npm:2.12.1"
      dependencies:
        deepmerge: ^4.2.2
        escape-string-regexp: ^4.0.0
        htmlparser2: ^8.0.0
        is-plain-object: ^5.0.0
        parse-srcset: ^1.0.2
        postcss: ^8.3.11
      checksum: fb96ea7170d51b5af2607f5cfd84464c78fc6f47e339407f55783e781c6a0288a8d40bbf97ea6a8758924ba9b2d33dcc4846bb94caacacd90d7f2de10ed8541a
      languageName: node
      linkType: hard
    
    "saxes@npm:^6.0.0":
      version: 6.0.0
      resolution: "saxes@npm:6.0.0"
      dependencies:
        xmlchars: ^2.2.0
      checksum: d3fa3e2aaf6c65ed52ee993aff1891fc47d5e47d515164b5449cbf5da2cbdc396137e55590472e64c5c436c14ae64a8a03c29b9e7389fc6f14035cf4e982ef3b
      languageName: node
      linkType: hard
    
    "scheduler@npm:^0.23.2":
      version: 0.23.2
      resolution: "scheduler@npm:0.23.2"
      dependencies:
        loose-envify: ^1.1.0
      checksum: 3e82d1f419e240ef6219d794ff29c7ee415fbdc19e038f680a10c067108e06284f1847450a210b29bbaf97b9d8a97ced5f624c31c681248ac84c80d56ad5a2c4
      languageName: node
      linkType: hard
    
    "schema-utils@npm:^2.7.0":
      version: 2.7.1
      resolution: "schema-utils@npm:2.7.1"
      dependencies:
        "@types/json-schema": ^7.0.5
        ajv: ^6.12.4
        ajv-keywords: ^3.5.2
      checksum: 32c62fc9e28edd101e1bd83453a4216eb9bd875cc4d3775e4452b541908fa8f61a7bbac8ffde57484f01d7096279d3ba0337078e85a918ecbeb72872fb09fb2b
      languageName: node
      linkType: hard
    
    "schema-utils@npm:^3.0.0":
      version: 3.3.0
      resolution: "schema-utils@npm:3.3.0"
      dependencies:
        "@types/json-schema": ^7.0.8
        ajv: ^6.12.5
        ajv-keywords: ^3.5.2
      checksum: ea56971926fac2487f0757da939a871388891bc87c6a82220d125d587b388f1704788f3706e7f63a7b70e49fc2db974c41343528caea60444afd5ce0fe4b85c0
      languageName: node
      linkType: hard
    
    "schema-utils@npm:^4.0.0, schema-utils@npm:^4.3.0, schema-utils@npm:^4.3.3":
      version: 4.3.3
      resolution: "schema-utils@npm:4.3.3"
      dependencies:
        "@types/json-schema": ^7.0.9
        ajv: ^8.9.0
        ajv-formats: ^2.1.1
        ajv-keywords: ^5.1.0
      checksum: 4e20404962fd45d5feb5942f7c9ab334a3d3dab94e15001049bd49e2959015f2c59089353953d4976fe664462c79121dea50392968182d4e2c4b75803f822fa3
      languageName: node
      linkType: hard
    
    "semver@npm:^5.4.1":
      version: 5.7.2
      resolution: "semver@npm:5.7.2"
      bin:
        semver: bin/semver
      checksum: fb4ab5e0dd1c22ce0c937ea390b4a822147a9c53dbd2a9a0132f12fe382902beef4fbf12cf51bb955248d8d15874ce8cd89532569756384f994309825f10b686
      languageName: node
      linkType: hard
    
    "semver@npm:^6.3.1":
      version: 6.3.1
      resolution: "semver@npm:6.3.1"
      bin:
        semver: bin/semver.js
      checksum: ae47d06de28836adb9d3e25f22a92943477371292d9b665fb023fae278d345d508ca1958232af086d85e0155aee22e313e100971898bbb8d5d89b8b1d4054ca2
      languageName: node
      linkType: hard
    
    "semver@npm:^7.3.5, semver@npm:^7.5.4, semver@npm:^7.7.3":
      version: 7.8.0
      resolution: "semver@npm:7.8.0"
      bin:
        semver: bin/semver.js
      checksum: 68e38bc26ed1191d7c78d2b711bdffc2f8b1d05a1caadda41a1d7e1a9d32e1da5ae5b645de5c5f2b27bde830d7e9c1cbeeafcb8fda091830411df7d40be405b1
      languageName: node
      linkType: hard
    
    "set-function-length@npm:^1.2.2":
      version: 1.2.2
      resolution: "set-function-length@npm:1.2.2"
      dependencies:
        define-data-property: ^1.1.4
        es-errors: ^1.3.0
        function-bind: ^1.1.2
        get-intrinsic: ^1.2.4
        gopd: ^1.0.1
        has-property-descriptors: ^1.0.2
      checksum: a8248bdacdf84cb0fab4637774d9fb3c7a8e6089866d04c817583ff48e14149c87044ce683d7f50759a8c50fb87c7a7e173535b06169c87ef76f5fb276dfff72
      languageName: node
      linkType: hard
    
    "set-function-name@npm:^2.0.2":
      version: 2.0.2
      resolution: "set-function-name@npm:2.0.2"
      dependencies:
        define-data-property: ^1.1.4
        es-errors: ^1.3.0
        functions-have-names: ^1.2.3
        has-property-descriptors: ^1.0.2
      checksum: d6229a71527fd0404399fc6227e0ff0652800362510822a291925c9d7b48a1ca1a468b11b281471c34cd5a2da0db4f5d7ff315a61d26655e77f6e971e6d0c80f
      languageName: node
      linkType: hard
    
    "set-proto@npm:^1.0.0":
      version: 1.0.0
      resolution: "set-proto@npm:1.0.0"
      dependencies:
        dunder-proto: ^1.0.1
        es-errors: ^1.3.0
        es-object-atoms: ^1.0.0
      checksum: ec27cbbe334598547e99024403e96da32aca3e530583e4dba7f5db1c43cbc4affa9adfbd77c7b2c210b9b8b2e7b2e600bad2a6c44fd62e804d8233f96bbb62f4
      languageName: node
      linkType: hard
    
    "shallow-clone@npm:^3.0.0":
      version: 3.0.1
      resolution: "shallow-clone@npm:3.0.1"
      dependencies:
        kind-of: ^6.0.2
      checksum: 39b3dd9630a774aba288a680e7d2901f5c0eae7b8387fc5c8ea559918b29b3da144b7bdb990d7ccd9e11be05508ac9e459ce51d01fd65e583282f6ffafcba2e7
      languageName: node
      linkType: hard
    
    "shebang-command@npm:^2.0.0":
      version: 2.0.0
      resolution: "shebang-command@npm:2.0.0"
      dependencies:
        shebang-regex: ^3.0.0
      checksum: 6b52fe87271c12968f6a054e60f6bde5f0f3d2db483a1e5c3e12d657c488a15474121a1d55cd958f6df026a54374ec38a4a963988c213b7570e1d51575cea7fa
      languageName: node
      linkType: hard
    
    "shebang-regex@npm:^3.0.0":
      version: 3.0.0
      resolution: "shebang-regex@npm:3.0.0"
      checksum: 1a2bcae50de99034fcd92ad4212d8e01eedf52c7ec7830eedcf886622804fe36884278f2be8be0ea5fde3fd1c23911643a4e0f726c8685b61871c8908af01222
      languageName: node
      linkType: hard
    
    "shell-quote@npm:^1.7.3":
      version: 1.8.3
      resolution: "shell-quote@npm:1.8.3"
      checksum: 550dd84e677f8915eb013d43689c80bb114860649ec5298eb978f40b8f3d4bc4ccb072b82c094eb3548dc587144bb3965a8676f0d685c1cf4c40b5dc27166242
      languageName: node
      linkType: hard
    
    "side-channel-list@npm:^1.0.0":
      version: 1.0.1
      resolution: "side-channel-list@npm:1.0.1"
      dependencies:
        es-errors: ^1.3.0
        object-inspect: ^1.13.4
      checksum: 3499671cd52adaee739eac1e14d07530b8e3530192741aeb05e7fe4ad1b51d1368ceea2cd3c21b0f62b05410a5c70a7c4d997ba4b143303ef73d0c65dfd1c252
      languageName: node
      linkType: hard
    
    "side-channel-map@npm:^1.0.1":
      version: 1.0.1
      resolution: "side-channel-map@npm:1.0.1"
      dependencies:
        call-bound: ^1.0.2
        es-errors: ^1.3.0
        get-intrinsic: ^1.2.5
        object-inspect: ^1.13.3
      checksum: 42501371cdf71f4ccbbc9c9e2eb00aaaab80a4c1c429d5e8da713fd4d39ef3b8d4a4b37ed4f275798a65260a551a7131fd87fe67e922dba4ac18586d6aab8b06
      languageName: node
      linkType: hard
    
    "side-channel-weakmap@npm:^1.0.2":
      version: 1.0.2
      resolution: "side-channel-weakmap@npm:1.0.2"
      dependencies:
        call-bound: ^1.0.2
        es-errors: ^1.3.0
        get-intrinsic: ^1.2.5
        object-inspect: ^1.13.3
        side-channel-map: ^1.0.1
      checksum: a815c89bc78c5723c714ea1a77c938377ea710af20d4fb886d362b0d1f8ac73a17816a5f6640f354017d7e292a43da9c5e876c22145bac00b76cfb3468001736
      languageName: node
      linkType: hard
    
    "side-channel@npm:^1.1.0":
      version: 1.1.0
      resolution: "side-channel@npm:1.1.0"
      dependencies:
        es-errors: ^1.3.0
        object-inspect: ^1.13.3
        side-channel-list: ^1.0.0
        side-channel-map: ^1.0.1
        side-channel-weakmap: ^1.0.2
      checksum: bf73d6d6682034603eb8e99c63b50155017ed78a522d27c2acec0388a792c3ede3238b878b953a08157093b85d05797217d270b7666ba1f111345fbe933380ff
      languageName: node
      linkType: hard
    
    "slash@npm:^3.0.0":
      version: 3.0.0
      resolution: "slash@npm:3.0.0"
      checksum: 94a93fff615f25a999ad4b83c9d5e257a7280c90a32a7cb8b4a87996e4babf322e469c42b7f649fd5796edd8687652f3fb452a86dc97a816f01113183393f11c
      languageName: node
      linkType: hard
    
    "source-list-map@npm:^2.0.0":
      version: 2.0.1
      resolution: "source-list-map@npm:2.0.1"
      checksum: 806efc6f75e7cd31e4815e7a3aaf75a45c704871ea4075cb2eb49882c6fca28998f44fc5ac91adb6de03b2882ee6fb02f951fdc85e6a22b338c32bfe19557938
      languageName: node
      linkType: hard
    
    "source-map-js@npm:^1.2.1":
      version: 1.2.1
      resolution: "source-map-js@npm:1.2.1"
      checksum: 4eb0cd997cdf228bc253bcaff9340afeb706176e64868ecd20efbe6efea931465f43955612346d6b7318789e5265bdc419bc7669c1cebe3db0eb255f57efa76b
      languageName: node
      linkType: hard
    
    "source-map-loader@npm:~1.0.2":
      version: 1.0.2
      resolution: "source-map-loader@npm:1.0.2"
      dependencies:
        data-urls: ^2.0.0
        iconv-lite: ^0.6.2
        loader-utils: ^2.0.0
        schema-utils: ^2.7.0
        source-map: ^0.6.1
      peerDependencies:
        webpack: ^4.0.0 || ^5.0.0
      checksum: 0360b536e904f8fea452d0e122b9199661765229dc62a4b8093cc9d14e985f2ddd146355ede6d11acdd0b9bf4639b364e2526afcf9d3218ed45af63aa5eb053f
      languageName: node
      linkType: hard
    
    "source-map-support@npm:~0.5.20":
      version: 0.5.21
      resolution: "source-map-support@npm:0.5.21"
      dependencies:
        buffer-from: ^1.0.0
        source-map: ^0.6.0
      checksum: 43e98d700d79af1d36f859bdb7318e601dfc918c7ba2e98456118ebc4c4872b327773e5a1df09b0524e9e5063bb18f0934538eace60cca2710d1fa687645d137
      languageName: node
      linkType: hard
    
    "source-map@npm:^0.6.0, source-map@npm:^0.6.1, source-map@npm:~0.6.1":
      version: 0.6.1
      resolution: "source-map@npm:0.6.1"
      checksum: 59ce8640cf3f3124f64ac289012c2b8bd377c238e316fb323ea22fbfe83da07d81e000071d7242cad7a23cd91c7de98e4df8830ec3f133cb6133a5f6e9f67bc2
      languageName: node
      linkType: hard
    
    "stack-utils@npm:^2.0.3":
      version: 2.0.6
      resolution: "stack-utils@npm:2.0.6"
      dependencies:
        escape-string-regexp: ^2.0.0
      checksum: 052bf4d25bbf5f78e06c1d5e67de2e088b06871fa04107ca8d3f0e9d9263326e2942c8bedee3545795fc77d787d443a538345eef74db2f8e35db3558c6f91ff7
      languageName: node
      linkType: hard
    
    "stop-iteration-iterator@npm:^1.1.0":
      version: 1.1.0
      resolution: "stop-iteration-iterator@npm:1.1.0"
      dependencies:
        es-errors: ^1.3.0
        internal-slot: ^1.1.0
      checksum: be944489d8829fb3bdec1a1cc4a2142c6b6eb317305eeace1ece978d286d6997778afa1ae8cb3bd70e2b274b9aa8c69f93febb1e15b94b1359b11058f9d3c3a1
      languageName: node
      linkType: hard
    
    "string.prototype.matchall@npm:^4.0.12":
      version: 4.0.12
      resolution: "string.prototype.matchall@npm:4.0.12"
      dependencies:
        call-bind: ^1.0.8
        call-bound: ^1.0.3
        define-properties: ^1.2.1
        es-abstract: ^1.23.6
        es-errors: ^1.3.0
        es-object-atoms: ^1.0.0
        get-intrinsic: ^1.2.6
        gopd: ^1.2.0
        has-symbols: ^1.1.0
        internal-slot: ^1.1.0
        regexp.prototype.flags: ^1.5.3
        set-function-name: ^2.0.2
        side-channel: ^1.1.0
      checksum: 98a09d6af91bfc6ee25556f3d7cd6646d02f5f08bda55d45528ed273d266d55a71af7291fe3fc76854deffb9168cc1a917d0b07a7d5a178c7e9537c99e6d2b57
      languageName: node
      linkType: hard
    
    "string.prototype.repeat@npm:^1.0.0":
      version: 1.0.0
      resolution: "string.prototype.repeat@npm:1.0.0"
      dependencies:
        define-properties: ^1.1.3
        es-abstract: ^1.17.5
      checksum: 95dfc514ed7f328d80a066dabbfbbb1615c3e51490351085409db2eb7cbfed7ea29fdadaf277647fbf9f4a1e10e6dd9e95e78c0fd2c4e6bb6723ea6e59401004
      languageName: node
      linkType: hard
    
    "string.prototype.trim@npm:^1.2.10":
      version: 1.2.10
      resolution: "string.prototype.trim@npm:1.2.10"
      dependencies:
        call-bind: ^1.0.8
        call-bound: ^1.0.2
        define-data-property: ^1.1.4
        define-properties: ^1.2.1
        es-abstract: ^1.23.5
        es-object-atoms: ^1.0.0
        has-property-descriptors: ^1.0.2
      checksum: 87659cd8561237b6c69f5376328fda934693aedde17bb7a2c57008e9d9ff992d0c253a391c7d8d50114e0e49ff7daf86a362f7961cf92f7564cd01342ca2e385
      languageName: node
      linkType: hard
    
    "string.prototype.trimend@npm:^1.0.9":
      version: 1.0.9
      resolution: "string.prototype.trimend@npm:1.0.9"
      dependencies:
        call-bind: ^1.0.8
        call-bound: ^1.0.2
        define-properties: ^1.2.1
        es-object-atoms: ^1.0.0
      checksum: cb86f639f41d791a43627784be2175daa9ca3259c7cb83e7a207a729909b74f2ea0ec5d85de5761e6835e5f443e9420c6ff3f63a845378e4a61dd793177bc287
      languageName: node
      linkType: hard
    
    "string.prototype.trimstart@npm:^1.0.8":
      version: 1.0.8
      resolution: "string.prototype.trimstart@npm:1.0.8"
      dependencies:
        call-bind: ^1.0.7
        define-properties: ^1.2.1
        es-object-atoms: ^1.0.0
      checksum: df1007a7f580a49d692375d996521dc14fd103acda7f3034b3c558a60b82beeed3a64fa91e494e164581793a8ab0ae2f59578a49896a7af6583c1f20472bce96
      languageName: node
      linkType: hard
    
    "strip-json-comments@npm:^3.1.1":
      version: 3.1.1
      resolution: "strip-json-comments@npm:3.1.1"
      checksum: 492f73e27268f9b1c122733f28ecb0e7e8d8a531a6662efbd08e22cccb3f9475e90a1b82cab06a392f6afae6d2de636f977e231296400d0ec5304ba70f166443
      languageName: node
      linkType: hard
    
    "style-loader@npm:~3.3.1":
      version: 3.3.4
      resolution: "style-loader@npm:3.3.4"
      peerDependencies:
        webpack: ^5.0.0
      checksum: caac3f2fe2c3c89e49b7a2a9329e1cfa515ecf5f36b9c4885f9b218019fda207a9029939b2c35821dec177a264a007e7c391ccdd3ff7401881ce6287b9c8f38b
      languageName: node
      linkType: hard
    
    "style-mod@npm:^4.0.0, style-mod@npm:^4.1.0":
      version: 4.1.3
      resolution: "style-mod@npm:4.1.3"
      checksum: 2372098b8747ea0d662084e88961f48d49796b2aca6f8f7de2546aa73059e869db1149325106eba37267afd9e7f97109be6679a6011c48ae1d5c0b6382a4d163
      languageName: node
      linkType: hard
    
    "stylis@npm:^4.3.6":
      version: 4.4.0
      resolution: "stylis@npm:4.4.0"
      checksum: 055bd8c0d2c06e8c48227d6a9c62a6132d847f25fad2954a95d3cf4e9defe97a95a4a991df912400a56fb153225baf8eef3eb772b48e573cce97e02882d30130
      languageName: node
      linkType: hard
    
    "supports-color@npm:^5.3.0":
      version: 5.5.0
      resolution: "supports-color@npm:5.5.0"
      dependencies:
        has-flag: ^3.0.0
      checksum: 95f6f4ba5afdf92f495b5a912d4abee8dcba766ae719b975c56c084f5004845f6f5a5f7769f52d53f40e21952a6d87411bafe34af4a01e65f9926002e38e1dac
      languageName: node
      linkType: hard
    
    "supports-color@npm:^7.1.0, supports-color@npm:^7.2.0":
      version: 7.2.0
      resolution: "supports-color@npm:7.2.0"
      dependencies:
        has-flag: ^4.0.0
      checksum: 3dda818de06ebbe5b9653e07842d9479f3555ebc77e9a0280caf5a14fb877ffee9ed57007c3b78f5a6324b8dbeec648d9e97a24e2ed9fdb81ddc69ea07100f4a
      languageName: node
      linkType: hard
    
    "supports-color@npm:^8.0.0":
      version: 8.1.1
      resolution: "supports-color@npm:8.1.1"
      dependencies:
        has-flag: ^4.0.0
      checksum: c052193a7e43c6cdc741eb7f378df605636e01ad434badf7324f17fb60c69a880d8d8fcdcb562cf94c2350e57b937d7425ab5b8326c67c2adc48f7c87c1db406
      languageName: node
      linkType: hard
    
    "supports-preserve-symlinks-flag@npm:^1.0.0":
      version: 1.0.0
      resolution: "supports-preserve-symlinks-flag@npm:1.0.0"
      checksum: 53b1e247e68e05db7b3808b99b892bd36fb096e6fba213a06da7fab22045e97597db425c724f2bbd6c99a3c295e1e73f3e4de78592289f38431049e1277ca0ae
      languageName: node
      linkType: hard
    
    "symbol-tree@npm:^3.2.4":
      version: 3.2.4
      resolution: "symbol-tree@npm:3.2.4"
      checksum: 6e8fc7e1486b8b54bea91199d9535bb72f10842e40c79e882fc94fb7b14b89866adf2fd79efa5ebb5b658bc07fb459ccce5ac0e99ef3d72f474e74aaf284029d
      languageName: node
      linkType: hard
    
    "synckit@npm:^0.11.12":
      version: 0.11.12
      resolution: "synckit@npm:0.11.12"
      dependencies:
        "@pkgr/core": ^0.2.9
      checksum: a53fb563d01ba8912a111b883fc3c701e267896ff8273e7aba9001f5f74711e125888f4039e93060795cd416122cf492ae419eb10a6a3e3b00e830917669d2cf
      languageName: node
      linkType: hard
    
    "tabbable@npm:^5.2.0":
      version: 5.3.3
      resolution: "tabbable@npm:5.3.3"
      checksum: 1aa56e1bb617cc10616c407f4e756f0607f3e2d30f9803664d70b85db037ca27e75918ed1c71443f3dc902e21dc9f991ce4b52d63a538c9b69b3218d3babcd70
      languageName: node
      linkType: hard
    
    "tapable@npm:^2.2.1, tapable@npm:^2.3.0, tapable@npm:^2.3.3":
      version: 2.3.3
      resolution: "tapable@npm:2.3.3"
      checksum: 6f37a59e82a2daedd0fbfc231f6e6004389a9d4bcf8ab8f2d61f96f9f4fd4cbb087799627c5d644d75f518df2abbbc9b9ac699945e0c9a0c610f2a3ca92e0265
      languageName: node
      linkType: hard
    
    "terser-webpack-plugin@npm:^5.3.17, terser-webpack-plugin@npm:^5.3.7":
      version: 5.6.0
      resolution: "terser-webpack-plugin@npm:5.6.0"
      dependencies:
        "@jridgewell/trace-mapping": ^0.3.25
        jest-worker: ^27.4.5
        schema-utils: ^4.3.0
        terser: ^5.31.1
      peerDependencies:
        webpack: ^5.1.0
      peerDependenciesMeta:
        "@minify-html/node":
          optional: true
        "@swc/core":
          optional: true
        "@swc/css":
          optional: true
        "@swc/html":
          optional: true
        clean-css:
          optional: true
        cssnano:
          optional: true
        csso:
          optional: true
        esbuild:
          optional: true
        html-minifier-terser:
          optional: true
        lightningcss:
          optional: true
        postcss:
          optional: true
        uglify-js:
          optional: true
      checksum: 168a6318577bffba31e828eb3258a61bab6ce2395ea66b6339cebe5abb69bac0bd1ce9a8dfdaeea86752e940deaa8b0adc1cbe20435306ee9354725856cbfb41
      languageName: node
      linkType: hard
    
    "terser@npm:^5.31.1":
      version: 5.47.1
      resolution: "terser@npm:5.47.1"
      dependencies:
        "@jridgewell/source-map": ^0.3.3
        acorn: ^8.15.0
        commander: ^2.20.0
        source-map-support: ~0.5.20
      bin:
        terser: bin/terser
      checksum: 407a7cbfb69886788313891f6be623dba6b05f13d03187d99030a2aefbad31f80a09907f6c86d7c3a33d10691431623525c65570a3e8ce1fb7020e9bf985bf7e
      languageName: node
      linkType: hard
    
    "tinyexec@npm:^1.0.1":
      version: 1.1.2
      resolution: "tinyexec@npm:1.1.2"
      checksum: be2cb2b60c415bf9ef2006f86b566774445ea59249b62edc293996299d0b235a14b3ec41bc11e942914287306e5d2c390a1f47cbf781cf3e96833312f0dca6bf
      languageName: node
      linkType: hard
    
    "tinyglobby@npm:^0.2.15":
      version: 0.2.16
      resolution: "tinyglobby@npm:0.2.16"
      dependencies:
        fdir: ^6.5.0
        picomatch: ^4.0.4
      checksum: db9d22ce1deb1095720a683c492cd5e80da0f71fed21ed697e2752f6f298edd8a1249dab197c86a26f001c180594a81bf532400fe519791ed2a2cb57b03bc337
      languageName: node
      linkType: hard
    
    "to-regex-range@npm:^5.0.1":
      version: 5.0.1
      resolution: "to-regex-range@npm:5.0.1"
      dependencies:
        is-number: ^7.0.0
      checksum: f76fa01b3d5be85db6a2a143e24df9f60dd047d151062d0ba3df62953f2f697b16fe5dad9b0ac6191c7efc7b1d9dcaa4b768174b7b29da89d4428e64bc0a20ed
      languageName: node
      linkType: hard
    
    "tough-cookie@npm:^4.1.2":
      version: 4.1.4
      resolution: "tough-cookie@npm:4.1.4"
      dependencies:
        psl: ^1.1.33
        punycode: ^2.1.1
        universalify: ^0.2.0
        url-parse: ^1.5.3
      checksum: 5815059f014c31179a303c673f753f7899a6fce94ac93712c88ea5f3c26e0c042b5f0c7a599a00f8e0feeca4615dba75c3dffc54f3c1a489978aa8205e09307c
      languageName: node
      linkType: hard
    
    "tr46@npm:^2.1.0":
      version: 2.1.0
      resolution: "tr46@npm:2.1.0"
      dependencies:
        punycode: ^2.1.1
      checksum: ffe6049b9dca3ae329b059aada7f515b0f0064c611b39b51ff6b53897e954650f6f63d9319c6c008d36ead477c7b55e5f64c9dc60588ddc91ff720d64eb710b3
      languageName: node
      linkType: hard
    
    "tr46@npm:^3.0.0":
      version: 3.0.0
      resolution: "tr46@npm:3.0.0"
      dependencies:
        punycode: ^2.1.1
      checksum: 44c3cc6767fb800490e6e9fd64fd49041aa4e49e1f6a012b34a75de739cc9ed3a6405296072c1df8b6389ae139c5e7c6496f659cfe13a04a4bff3a1422981270
      languageName: node
      linkType: hard
    
    "ts-api-utils@npm:^2.5.0":
      version: 2.5.0
      resolution: "ts-api-utils@npm:2.5.0"
      peerDependencies:
        typescript: ">=4.8.4"
      checksum: 5b2a2db7aa041d60b040df691ee5e73d534fb4cb3cf4fd6d2c27c584a32836a7ca8272fb23d865e673559ea639fdba35f8623249bf931df22188f0aaef7f0075
      languageName: node
      linkType: hard
    
    "ts-dedent@npm:^2.2.0":
      version: 2.2.0
      resolution: "ts-dedent@npm:2.2.0"
      checksum: 93ed8f7878b6d5ed3c08d99b740010eede6bccfe64bce61c5a4da06a2c17d6ddbb80a8c49c2d15251de7594a4f93ffa21dd10e7be75ef66a4dc9951b4a94e2af
      languageName: node
      linkType: hard
    
    "tslib@npm:^1.13.0":
      version: 1.14.1
      resolution: "tslib@npm:1.14.1"
      checksum: dbe628ef87f66691d5d2959b3e41b9ca0045c3ee3c7c7b906cc1e328b39f199bb1ad9e671c39025bd56122ac57dfbf7385a94843b1cc07c60a4db74795829acd
      languageName: node
      linkType: hard
    
    "type-check@npm:^0.4.0, type-check@npm:~0.4.0":
      version: 0.4.0
      resolution: "type-check@npm:0.4.0"
      dependencies:
        prelude-ls: ^1.2.1
      checksum: ec688ebfc9c45d0c30412e41ca9c0cdbd704580eb3a9ccf07b9b576094d7b86a012baebc95681999dd38f4f444afd28504cb3a89f2ef16b31d4ab61a0739025a
      languageName: node
      linkType: hard
    
    "type-detect@npm:4.0.8":
      version: 4.0.8
      resolution: "type-detect@npm:4.0.8"
      checksum: 62b5628bff67c0eb0b66afa371bd73e230399a8d2ad30d852716efcc4656a7516904570cd8631a49a3ce57c10225adf5d0cbdcb47f6b0255fe6557c453925a15
      languageName: node
      linkType: hard
    
    "typed-array-buffer@npm:^1.0.3":
      version: 1.0.3
      resolution: "typed-array-buffer@npm:1.0.3"
      dependencies:
        call-bound: ^1.0.3
        es-errors: ^1.3.0
        is-typed-array: ^1.1.14
      checksum: 3fb91f0735fb413b2bbaaca9fabe7b8fc14a3fa5a5a7546bab8a57e755be0e3788d893195ad9c2b842620592de0e68d4c077d4c2c41f04ec25b8b5bb82fa9a80
      languageName: node
      linkType: hard
    
    "typed-array-byte-length@npm:^1.0.3":
      version: 1.0.3
      resolution: "typed-array-byte-length@npm:1.0.3"
      dependencies:
        call-bind: ^1.0.8
        for-each: ^0.3.3
        gopd: ^1.2.0
        has-proto: ^1.2.0
        is-typed-array: ^1.1.14
      checksum: cda9352178ebeab073ad6499b03e938ebc30c4efaea63a26839d89c4b1da9d2640b0d937fc2bd1f049eb0a38def6fbe8a061b601292ae62fe079a410ce56e3a6
      languageName: node
      linkType: hard
    
    "typed-array-byte-offset@npm:^1.0.4":
      version: 1.0.4
      resolution: "typed-array-byte-offset@npm:1.0.4"
      dependencies:
        available-typed-arrays: ^1.0.7
        call-bind: ^1.0.8
        for-each: ^0.3.3
        gopd: ^1.2.0
        has-proto: ^1.2.0
        is-typed-array: ^1.1.15
        reflect.getprototypeof: ^1.0.9
      checksum: 670b7e6bb1d3c2cf6160f27f9f529e60c3f6f9611c67e47ca70ca5cfa24ad95415694c49d1dbfeda016d3372cab7dfc9e38c7b3e1bb8d692cae13a63d3c144d7
      languageName: node
      linkType: hard
    
    "typed-array-length@npm:^1.0.7":
      version: 1.0.7
      resolution: "typed-array-length@npm:1.0.7"
      dependencies:
        call-bind: ^1.0.7
        for-each: ^0.3.3
        gopd: ^1.0.1
        is-typed-array: ^1.1.13
        possible-typed-array-names: ^1.0.0
        reflect.getprototypeof: ^1.0.6
      checksum: deb1a4ffdb27cd930b02c7030cb3e8e0993084c643208e52696e18ea6dd3953dfc37b939df06ff78170423d353dc8b10d5bae5796f3711c1b3abe52872b3774c
      languageName: node
      linkType: hard
    
    "typescript-eslint@npm:^8.59.3":
      version: 8.59.3
      resolution: "typescript-eslint@npm:8.59.3"
      dependencies:
        "@typescript-eslint/eslint-plugin": 8.59.3
        "@typescript-eslint/parser": 8.59.3
        "@typescript-eslint/typescript-estree": 8.59.3
        "@typescript-eslint/utils": 8.59.3
      peerDependencies:
        eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
        typescript: ">=4.8.4 <6.1.0"
      checksum: b2780972ab673250edef0758886b1a2cfed68f0037afc0541c51c2abf1b03cd628ebb6f9638e21fbd9336a08b2e13161a139f1d7e5b576a9c827fc1979fdae7c
      languageName: node
      linkType: hard
    
    "typescript@npm:~6.0.3":
      version: 6.0.3
      resolution: "typescript@npm:6.0.3"
      bin:
        tsc: bin/tsc
        tsserver: bin/tsserver
      checksum: c1182dfadf8a8cb22a4e32442715afef1af1b950ae635b1c52c27e0d7fb7a5e2607ed7c7c4079bba4163579250e02445fd8d46b09cbceda71ff72a5b7d69db61
      languageName: node
      linkType: hard
    
    "typescript@patch:typescript@~6.0.3#~builtin":
      version: 6.0.3
      resolution: "typescript@patch:typescript@npm%3A6.0.3#~builtin::version=6.0.3&hash=85af82"
      bin:
        tsc: bin/tsc
        tsserver: bin/tsserver
      checksum: 8ed159a81ab4901a620c19fda539632cee610f8ec34dde57a3acc6b6df72894ad0b50bdd1946b763313d9b73dedb019d2e81c03eff06c0f2c785cde30a537d15
      languageName: node
      linkType: hard
    
    "typestyle@npm:^2.0.4":
      version: 2.4.0
      resolution: "typestyle@npm:2.4.0"
      dependencies:
        csstype: 3.0.10
        free-style: 3.1.0
      checksum: 8b4f02c24f67b594f98507b15a753dabd4db5eb0af007e1d310527c64030e11e9464b25b5a6bc65fb5eec9a4459a8336050121ecc29063ac87b8b47a6d698893
      languageName: node
      linkType: hard
    
    "unbox-primitive@npm:^1.1.0":
      version: 1.1.0
      resolution: "unbox-primitive@npm:1.1.0"
      dependencies:
        call-bound: ^1.0.3
        has-bigints: ^1.0.2
        has-symbols: ^1.1.0
        which-boxed-primitive: ^1.1.1
      checksum: 729f13b84a5bfa3fead1d8139cee5c38514e63a8d6a437819a473e241ba87eeb593646568621c7fc7f133db300ef18d65d1a5a60dc9c7beb9000364d93c581df
      languageName: node
      linkType: hard
    
    "undici-types@npm:~7.21.0":
      version: 7.21.0
      resolution: "undici-types@npm:7.21.0"
      checksum: 9a178d1f5fa36767bb9f9b3e0f235bee2d6c679055a2c5192e906791da3696b49a90aa21228a7465d4aa49ba76c4a0a1b781912474d7f7c843a871a10dc1fc74
      languageName: node
      linkType: hard
    
    "universalify@npm:^0.2.0":
      version: 0.2.0
      resolution: "universalify@npm:0.2.0"
      checksum: e86134cb12919d177c2353196a4cc09981524ee87abf621f7bc8d249dbbbebaec5e7d1314b96061497981350df786e4c5128dbf442eba104d6e765bc260678b5
      languageName: node
      linkType: hard
    
    "universalify@npm:^2.0.0":
      version: 2.0.1
      resolution: "universalify@npm:2.0.1"
      checksum: ecd8469fe0db28e7de9e5289d32bd1b6ba8f7183db34f3bfc4ca53c49891c2d6aa05f3fb3936a81285a905cc509fb641a0c3fc131ec786167eff41236ae32e60
      languageName: node
      linkType: hard
    
    "update-browserslist-db@npm:^1.2.3":
      version: 1.2.3
      resolution: "update-browserslist-db@npm:1.2.3"
      dependencies:
        escalade: ^3.2.0
        picocolors: ^1.1.1
      peerDependencies:
        browserslist: ">= 4.21.0"
      bin:
        update-browserslist-db: cli.js
      checksum: 6f209a97ae8eacdd3a1ef2eb365adf49d1e2a757e5b2dd4ac87dc8c99236cbe3e572d3e605a87dd7b538a11751b71d9f93edc47c7405262a293a493d155316cd
      languageName: node
      linkType: hard
    
    "uri-js@npm:^4.2.2":
      version: 4.4.1
      resolution: "uri-js@npm:4.4.1"
      dependencies:
        punycode: ^2.1.0
      checksum: 7167432de6817fe8e9e0c9684f1d2de2bb688c94388f7569f7dbdb1587c9f4ca2a77962f134ec90be0cc4d004c939ff0d05acc9f34a0db39a3c797dada262633
      languageName: node
      linkType: hard
    
    "url-parse@npm:^1.5.3, url-parse@npm:~1.5.4":
      version: 1.5.10
      resolution: "url-parse@npm:1.5.10"
      dependencies:
        querystringify: ^2.1.1
        requires-port: ^1.0.0
      checksum: fbdba6b1d83336aca2216bbdc38ba658d9cfb8fc7f665eb8b17852de638ff7d1a162c198a8e4ed66001ddbf6c9888d41e4798912c62b4fd777a31657989f7bdf
      languageName: node
      linkType: hard
    
    "util-deprecate@npm:^1.0.2":
      version: 1.0.2
      resolution: "util-deprecate@npm:1.0.2"
      checksum: 474acf1146cb2701fe3b074892217553dfcf9a031280919ba1b8d651a068c9b15d863b7303cb15bd00a862b498e6cf4ad7b4a08fb134edd5a6f7641681cb54a2
      languageName: node
      linkType: hard
    
    "uuid@npm:^11.1.0 || ^12 || ^13 || ^14.0.0":
      version: 14.0.0
      resolution: "uuid@npm:14.0.0"
      bin:
        uuid: dist-node/bin/uuid
      checksum: 08608584a79e987cdae000fa8eb724fa51dd8aafc136cd9fa9a8c87d07b246c56eec5fd9027fdb3e49a863eedf758bc19e325909ce281955c7a027fed67dc89e
      languageName: node
      linkType: hard
    
    "validate.io-array@npm:^1.0.3":
      version: 1.0.6
      resolution: "validate.io-array@npm:1.0.6"
      checksum: 54eca83ebc702e3e46499f9d9e77287a95ae25c4e727cd2fafee29c7333b3a36cca0c5d8f090b9406262786de80750fba85e7e7ef41e20bf8cc67d5570de449b
      languageName: node
      linkType: hard
    
    "validate.io-function@npm:^1.0.2":
      version: 1.0.2
      resolution: "validate.io-function@npm:1.0.2"
      checksum: e4cce2479a20cb7c42e8630c777fb107059c27bc32925f769e3a73ca5fd62b4892d897b3c80227e14d5fcd1c5b7d05544e0579d63e59f14034c0052cda7f7c44
      languageName: node
      linkType: hard
    
    "validate.io-integer-array@npm:^1.0.0":
      version: 1.0.0
      resolution: "validate.io-integer-array@npm:1.0.0"
      dependencies:
        validate.io-array: ^1.0.3
        validate.io-integer: ^1.0.4
      checksum: 5f6d7fab8df7d2bf546a05e830201768464605539c75a2c2417b632b4411a00df84b462f81eac75e1be95303e7e0ac92f244c137424739f4e15cd21c2eb52c7f
      languageName: node
      linkType: hard
    
    "validate.io-integer@npm:^1.0.4":
      version: 1.0.5
      resolution: "validate.io-integer@npm:1.0.5"
      dependencies:
        validate.io-number: ^1.0.3
      checksum: 88b3f8bb5a5277a95305d64abbfc437079220ce4f57a148cc6113e7ccec03dd86b10a69d413982602aa90a62b8d516148a78716f550dcd3aff863ac1c2a7a5e6
      languageName: node
      linkType: hard
    
    "validate.io-number@npm:^1.0.3":
      version: 1.0.3
      resolution: "validate.io-number@npm:1.0.3"
      checksum: 42418aeb6c969efa745475154fe576809b02eccd0961aad0421b090d6e7a12d23a3e28b0d5dddd2c6347c1a6bdccb82bba5048c716131cd20207244d50e07282
      languageName: node
      linkType: hard
    
    "vscode-jsonrpc@npm:8.2.0":
      version: 8.2.0
      resolution: "vscode-jsonrpc@npm:8.2.0"
      checksum: f302a01e59272adc1ae6494581fa31c15499f9278df76366e3b97b2236c7c53ebfc71efbace9041cfd2caa7f91675b9e56f2407871a1b3c7f760a2e2ee61484a
      languageName: node
      linkType: hard
    
    "vscode-jsonrpc@npm:^6.0.0":
      version: 6.0.0
      resolution: "vscode-jsonrpc@npm:6.0.0"
      checksum: 3a67a56f287e8c449f2d9752eedf91e704dc7b9a326f47fb56ac07667631deb45ca52192e9bccb2ab108764e48409d70fa64b930d46fc3822f75270b111c5f53
      languageName: node
      linkType: hard
    
    "vscode-jsonrpc@npm:^8.0.2":
      version: 8.2.1
      resolution: "vscode-jsonrpc@npm:8.2.1"
      checksum: 2af2c333d73f6587896a7077978b8d4b430e55c674d5dbb90597a84a6647057c1655a3bff398a9b08f1f8ba57dbd2deabf05164315829c297b0debba3b8bc19e
      languageName: node
      linkType: hard
    
    "vscode-languageserver-protocol@npm:^3.17.0":
      version: 3.17.5
      resolution: "vscode-languageserver-protocol@npm:3.17.5"
      dependencies:
        vscode-jsonrpc: 8.2.0
        vscode-languageserver-types: 3.17.5
      checksum: dfb42d276df5dfea728267885b99872ecff62f6c20448b8539fae71bb196b420f5351c5aca7c1047bf8fb1f89fa94a961dce2bc5bf7e726198f4be0bb86a1e71
      languageName: node
      linkType: hard
    
    "vscode-languageserver-types@npm:3.17.5":
      version: 3.17.5
      resolution: "vscode-languageserver-types@npm:3.17.5"
      checksum: 79b420e7576398d396579ca3a461c9ed70e78db4403cd28bbdf4d3ed2b66a2b4114031172e51fad49f0baa60a2180132d7cb2ea35aa3157d7af3c325528210ac
      languageName: node
      linkType: hard
    
    "vscode-ws-jsonrpc@npm:~1.0.2":
      version: 1.0.2
      resolution: "vscode-ws-jsonrpc@npm:1.0.2"
      dependencies:
        vscode-jsonrpc: ^8.0.2
      checksum: eb2fdb5c96f124326505f06564dfc6584318b748fd6e39b4c0ba16a0d383d13ba0e9433596abdb841428dfc2a5501994c3206723d1cb38c6af5fcac1faf4be26
      languageName: node
      linkType: hard
    
    "w3c-keyname@npm:^2.2.4":
      version: 2.2.8
      resolution: "w3c-keyname@npm:2.2.8"
      checksum: 95bafa4c04fa2f685a86ca1000069c1ec43ace1f8776c10f226a73296caeddd83f893db885c2c220ebeb6c52d424e3b54d7c0c1e963bbf204038ff1a944fbb07
      languageName: node
      linkType: hard
    
    "w3c-xmlserializer@npm:^4.0.0":
      version: 4.0.0
      resolution: "w3c-xmlserializer@npm:4.0.0"
      dependencies:
        xml-name-validator: ^4.0.0
      checksum: eba070e78deb408ae8defa4d36b429f084b2b47a4741c4a9be3f27a0a3d1845e277e3072b04391a138f7e43776842627d1334e448ff13ff90ad9fb1214ee7091
      languageName: node
      linkType: hard
    
    "watchpack@npm:^2.5.1":
      version: 2.5.1
      resolution: "watchpack@npm:2.5.1"
      dependencies:
        glob-to-regexp: ^0.4.1
        graceful-fs: ^4.1.2
      checksum: 44a6030e923fbbe2cbc51cd7fb7abdff58bc35ba68d6c3ca46e63b46f8b3502c7253e6ada384387e946df5515d3854227a84cec49eb88a315186f5c9a67a3e79
      languageName: node
      linkType: hard
    
    "webidl-conversions@npm:^6.1.0":
      version: 6.1.0
      resolution: "webidl-conversions@npm:6.1.0"
      checksum: 1f526507aa491f972a0c1409d07f8444e1d28778dfa269a9971f2e157182f3d496dc33296e4ed45b157fdb3bf535bb90c90bf10c50dcf1dd6caacb2a34cc84fb
      languageName: node
      linkType: hard
    
    "webidl-conversions@npm:^7.0.0":
      version: 7.0.0
      resolution: "webidl-conversions@npm:7.0.0"
      checksum: f05588567a2a76428515333eff87200fae6c83c3948a7482ebb109562971e77ef6dc49749afa58abb993391227c5697b3ecca52018793e0cb4620a48f10bd21b
      languageName: node
      linkType: hard
    
    "webpack-cli@npm:^5.0.1":
      version: 5.1.4
      resolution: "webpack-cli@npm:5.1.4"
      dependencies:
        "@discoveryjs/json-ext": ^0.5.0
        "@webpack-cli/configtest": ^2.1.1
        "@webpack-cli/info": ^2.0.2
        "@webpack-cli/serve": ^2.0.5
        colorette: ^2.0.14
        commander: ^10.0.1
        cross-spawn: ^7.0.3
        envinfo: ^7.7.3
        fastest-levenshtein: ^1.0.12
        import-local: ^3.0.2
        interpret: ^3.1.1
        rechoir: ^0.8.0
        webpack-merge: ^5.7.3
      peerDependencies:
        webpack: 5.x.x
      peerDependenciesMeta:
        "@webpack-cli/generators":
          optional: true
        webpack-bundle-analyzer:
          optional: true
        webpack-dev-server:
          optional: true
      bin:
        webpack-cli: bin/cli.js
      checksum: 3a4ad0d0342a6815c850ee4633cc2a8a5dae04f918e7847f180bf24ab400803cf8a8943707ffbed03eb20fe6ce647f996f60a2aade87b0b4a9954da3da172ce0
      languageName: node
      linkType: hard
    
    "webpack-merge@npm:^5.7.3, webpack-merge@npm:^5.8.0":
      version: 5.10.0
      resolution: "webpack-merge@npm:5.10.0"
      dependencies:
        clone-deep: ^4.0.1
        flat: ^5.0.2
        wildcard: ^2.0.0
      checksum: 1fe8bf5309add7298e1ac72fb3f2090e1dfa80c48c7e79fa48aa60b5961332c7d0d61efa8851acb805e6b91a4584537a347bc106e05e9aec87fa4f7088c62f2f
      languageName: node
      linkType: hard
    
    "webpack-sources@npm:^1.2.0":
      version: 1.4.3
      resolution: "webpack-sources@npm:1.4.3"
      dependencies:
        source-list-map: ^2.0.0
        source-map: ~0.6.1
      checksum: 37463dad8d08114930f4bc4882a9602941f07c9f0efa9b6bc78738cd936275b990a596d801ef450d022bb005b109b9f451dd087db2f3c9baf53e8e22cf388f79
      languageName: node
      linkType: hard
    
    "webpack-sources@npm:^3.3.4":
      version: 3.4.1
      resolution: "webpack-sources@npm:3.4.1"
      checksum: 5b318a9d3ed0ab53ca1e7e6b340eb7d88220a7197977b51b24d9e15ac864615f7ab58486f3233327d152f4a618f23d219877b7dc506f6adb75f3a8dd4d73ab5c
      languageName: node
      linkType: hard
    
    "webpack@npm:^5.76.1":
      version: 5.106.2
      resolution: "webpack@npm:5.106.2"
      dependencies:
        "@types/eslint-scope": ^3.7.7
        "@types/estree": ^1.0.8
        "@types/json-schema": ^7.0.15
        "@webassemblyjs/ast": ^1.14.1
        "@webassemblyjs/wasm-edit": ^1.14.1
        "@webassemblyjs/wasm-parser": ^1.14.1
        acorn: ^8.16.0
        acorn-import-phases: ^1.0.3
        browserslist: ^4.28.1
        chrome-trace-event: ^1.0.2
        enhanced-resolve: ^5.20.0
        es-module-lexer: ^2.0.0
        eslint-scope: 5.1.1
        events: ^3.2.0
        glob-to-regexp: ^0.4.1
        graceful-fs: ^4.2.11
        loader-runner: ^4.3.1
        mime-db: ^1.54.0
        neo-async: ^2.6.2
        schema-utils: ^4.3.3
        tapable: ^2.3.0
        terser-webpack-plugin: ^5.3.17
        watchpack: ^2.5.1
        webpack-sources: ^3.3.4
      peerDependenciesMeta:
        webpack-cli:
          optional: true
      bin:
        webpack: bin/webpack.js
      checksum: fd44725871b6777b62cdcbb32492b48740bbd575811c2c45e1c9c9413d0cbf4de7aa9931b3ccfd072d155f811de3584951264bfa30164a5e2f5db66cbf52b260
      languageName: node
      linkType: hard
    
    "whatwg-encoding@npm:^2.0.0":
      version: 2.0.0
      resolution: "whatwg-encoding@npm:2.0.0"
      dependencies:
        iconv-lite: 0.6.3
      checksum: 7087810c410aa9b689cbd6af8773341a53cdc1f3aae2a882c163bd5522ec8ca4cdfc269aef417a5792f411807d5d77d50df4c24e3abb00bb60192858a40cc675
      languageName: node
      linkType: hard
    
    "whatwg-mimetype@npm:^2.3.0":
      version: 2.3.0
      resolution: "whatwg-mimetype@npm:2.3.0"
      checksum: 23eb885940bcbcca4ff841c40a78e9cbb893ec42743993a42bf7aed16085b048b44b06f3402018931687153550f9a32d259dfa524e4f03577ab898b6965e5383
      languageName: node
      linkType: hard
    
    "whatwg-mimetype@npm:^3.0.0":
      version: 3.0.0
      resolution: "whatwg-mimetype@npm:3.0.0"
      checksum: ce08bbb36b6aaf64f3a84da89707e3e6a31e5ab1c1a2379fd68df79ba712a4ab090904f0b50e6693b0dafc8e6343a6157e40bf18fdffd26e513cf95ee2a59824
      languageName: node
      linkType: hard
    
    "whatwg-url@npm:^11.0.0":
      version: 11.0.0
      resolution: "whatwg-url@npm:11.0.0"
      dependencies:
        tr46: ^3.0.0
        webidl-conversions: ^7.0.0
      checksum: ed4826aaa57e66bb3488a4b25c9cd476c46ba96052747388b5801f137dd740b73fde91ad207d96baf9f17fbcc80fc1a477ad65181b5eb5fa718d27c69501d7af
      languageName: node
      linkType: hard
    
    "whatwg-url@npm:^8.0.0":
      version: 8.7.0
      resolution: "whatwg-url@npm:8.7.0"
      dependencies:
        lodash: ^4.7.0
        tr46: ^2.1.0
        webidl-conversions: ^6.1.0
      checksum: a87abcc6cefcece5311eb642858c8fdb234e51ec74196bfacf8def2edae1bfbffdf6acb251646ed6301f8cee44262642d8769c707256125a91387e33f405dd1e
      languageName: node
      linkType: hard
    
    "which-boxed-primitive@npm:^1.1.0, which-boxed-primitive@npm:^1.1.1":
      version: 1.1.1
      resolution: "which-boxed-primitive@npm:1.1.1"
      dependencies:
        is-bigint: ^1.1.0
        is-boolean-object: ^1.2.1
        is-number-object: ^1.1.1
        is-string: ^1.1.1
        is-symbol: ^1.1.1
      checksum: ee41d0260e4fd39551ad77700c7047d3d281ec03d356f5e5c8393fe160ba0db53ef446ff547d05f76ffabfd8ad9df7c9a827e12d4cccdbc8fccf9239ff8ac21e
      languageName: node
      linkType: hard
    
    "which-builtin-type@npm:^1.2.1":
      version: 1.2.1
      resolution: "which-builtin-type@npm:1.2.1"
      dependencies:
        call-bound: ^1.0.2
        function.prototype.name: ^1.1.6
        has-tostringtag: ^1.0.2
        is-async-function: ^2.0.0
        is-date-object: ^1.1.0
        is-finalizationregistry: ^1.1.0
        is-generator-function: ^1.0.10
        is-regex: ^1.2.1
        is-weakref: ^1.0.2
        isarray: ^2.0.5
        which-boxed-primitive: ^1.1.0
        which-collection: ^1.0.2
        which-typed-array: ^1.1.16
      checksum: 7a3617ba0e7cafb795f74db418df889867d12bce39a477f3ee29c6092aa64d396955bf2a64eae3726d8578440e26777695544057b373c45a8bcf5fbe920bf633
      languageName: node
      linkType: hard
    
    "which-collection@npm:^1.0.2":
      version: 1.0.2
      resolution: "which-collection@npm:1.0.2"
      dependencies:
        is-map: ^2.0.3
        is-set: ^2.0.3
        is-weakmap: ^2.0.2
        is-weakset: ^2.0.3
      checksum: c51821a331624c8197916598a738fc5aeb9a857f1e00d89f5e4c03dc7c60b4032822b8ec5696d28268bb83326456a8b8216344fb84270d18ff1d7628051879d9
      languageName: node
      linkType: hard
    
    "which-typed-array@npm:^1.1.16, which-typed-array@npm:^1.1.19":
      version: 1.1.20
      resolution: "which-typed-array@npm:1.1.20"
      dependencies:
        available-typed-arrays: ^1.0.7
        call-bind: ^1.0.8
        call-bound: ^1.0.4
        for-each: ^0.3.5
        get-proto: ^1.0.1
        gopd: ^1.2.0
        has-tostringtag: ^1.0.2
      checksum: 82527027127c3a6f7b278b5c0059605b968bec780d1ddd7c0ce3c2172ae4b9d2217486123107e31d229ff57ed8cc2bc76d751f290f392ee6d3aa27b26d2ffc12
      languageName: node
      linkType: hard
    
    "which@npm:^2.0.1":
      version: 2.0.2
      resolution: "which@npm:2.0.2"
      dependencies:
        isexe: ^2.0.0
      bin:
        node-which: ./bin/node-which
      checksum: 1a5c563d3c1b52d5f893c8b61afe11abc3bab4afac492e8da5bde69d550de701cf9806235f20a47b5c8fa8a1d6a9135841de2596535e998027a54589000e66d1
      languageName: node
      linkType: hard
    
    "which@npm:^5.0.0":
      version: 5.0.0
      resolution: "which@npm:5.0.0"
      dependencies:
        isexe: ^3.1.1
      bin:
        node-which: bin/which.js
      checksum: 6ec99e89ba32c7e748b8a3144e64bfc74aa63e2b2eacbb61a0060ad0b961eb1a632b08fb1de067ed59b002cec3e21de18299216ebf2325ef0f78e0f121e14e90
      languageName: node
      linkType: hard
    
    "wildcard@npm:^2.0.0":
      version: 2.0.1
      resolution: "wildcard@npm:2.0.1"
      checksum: e0c60a12a219e4b12065d1199802d81c27b841ed6ad6d9d28240980c73ceec6f856771d575af367cbec2982d9ae7838759168b551776577f155044f5a5ba843c
      languageName: node
      linkType: hard
    
    "word-wrap@npm:^1.2.5":
      version: 1.2.5
      resolution: "word-wrap@npm:1.2.5"
      checksum: f93ba3586fc181f94afdaff3a6fef27920b4b6d9eaefed0f428f8e07adea2a7f54a5f2830ce59406c8416f033f86902b91eb824072354645eea687dff3691ccb
      languageName: node
      linkType: hard
    
    "worker-loader@npm:^3.0.2":
      version: 3.0.8
      resolution: "worker-loader@npm:3.0.8"
      dependencies:
        loader-utils: ^2.0.0
        schema-utils: ^3.0.0
      peerDependencies:
        webpack: ^4.0.0 || ^5.0.0
      checksum: 84f4a7eeb2a1d8b9704425837e017c91eedfae67ac89e0b866a2dcf283323c1dcabe0258196278b7d5fd0041392da895c8a0c59ddf3a94f1b2e003df68ddfec3
      languageName: node
      linkType: hard
    
    "wrappy@npm:1":
      version: 1.0.2
      resolution: "wrappy@npm:1.0.2"
      checksum: 159da4805f7e84a3d003d8841557196034155008f817172d4e986bd591f74aa82aa7db55929a54222309e01079a65a92a9e6414da5a6aa4b01ee44a511ac3ee5
      languageName: node
      linkType: hard
    
    "ws@npm:^8.11.0":
      version: 8.20.1
      resolution: "ws@npm:8.20.1"
      peerDependencies:
        bufferutil: ^4.0.1
        utf-8-validate: ">=5.0.2"
      peerDependenciesMeta:
        bufferutil:
          optional: true
        utf-8-validate:
          optional: true
      checksum: e639c83de2f58430a8f5d3ffea49711d37a766822e2e7ec8f131e5b890a95314203f1f83ee124de5c0185849907c9ab19db0210a723f2c03a99eaf448589d2f9
      languageName: node
      linkType: hard
    
    "xml-name-validator@npm:^4.0.0":
      version: 4.0.0
      resolution: "xml-name-validator@npm:4.0.0"
      checksum: af100b79c29804f05fa35aa3683e29a321db9b9685d5e5febda3fa1e40f13f85abc40f45a6b2bf7bee33f68a1dc5e8eaef4cec100a304a9db565e6061d4cb5ad
      languageName: node
      linkType: hard
    
    "xmlchars@npm:^2.2.0":
      version: 2.2.0
      resolution: "xmlchars@npm:2.2.0"
      checksum: 8c70ac94070ccca03f47a81fcce3b271bd1f37a591bf5424e787ae313fcb9c212f5f6786e1fa82076a2c632c0141552babcd85698c437506dfa6ae2d58723062
      languageName: node
      linkType: hard
    
    "y-protocols@npm:^1.0.5":
      version: 1.0.7
      resolution: "y-protocols@npm:1.0.7"
      dependencies:
        lib0: ^0.2.85
      peerDependencies:
        yjs: ^13.0.0
      checksum: d58579ee542b6b9f4e3c3223fd24efcfd4af6f97acdb40a3d362713dcce812dd3dd086cc1f221a6ccb50bd373ff4b3d30fc2462a17f7804e0d1a8bd187099f31
      languageName: node
      linkType: hard
    
    "yjs@npm:^13.5.40":
      version: 13.6.30
      resolution: "yjs@npm:13.6.30"
      dependencies:
        lib0: ^0.2.99
      checksum: b8ddb313cd40579da7b9b09bd878f30efe79b3fa6f9bc7ab96c1ca80f305b557919035aaef417a3d65f2b0aad732c79fcfd84ceb82855869605fb6b0f40cdffd
      languageName: node
      linkType: hard
    
    "yocto-queue@npm:^0.1.0":
      version: 0.1.0
      resolution: "yocto-queue@npm:0.1.0"
      checksum: f77b3d8d00310def622123df93d4ee654fc6a0096182af8bd60679ddcdfb3474c56c6c7190817c84a2785648cdee9d721c0154eb45698c62176c322fb46fc700
      languageName: node
      linkType: hard
    ipython-ipyparallel-14e3c43/zizmor-strict.yaml000066400000000000000000000002001520071063500215630ustar00rootroot00000000000000# separate zizmor config for workflows with
    # default
    rules:
      unpinned-uses:
        config:
          policies:
            "*": hash-pin
    ipython-ipyparallel-14e3c43/zizmor.yaml000066400000000000000000000001111520071063500202560ustar00rootroot00000000000000rules:
      unpinned-uses:
        config:
          policies:
            "*": ref-pin