pax_global_header00006660000000000000000000000064151460200430014505gustar00rootroot0000000000000052 comment=76c2eb88fc078020f3ed7181856bed2edee334c6 taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/000077500000000000000000000000001514602004300226765ustar00rootroot00000000000000taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/.editorconfig000066400000000000000000000004441514602004300253550ustar00rootroot00000000000000# http://editorconfig.org root = true [*] indent_style = space indent_size = 4 trim_trailing_whitespace = true insert_final_newline = true charset = utf-8 end_of_line = lf [*.bat] indent_style = tab end_of_line = crlf [LICENSE] insert_final_newline = false [Makefile] indent_style = tab taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/.gitattributes000066400000000000000000000000141514602004300255640ustar00rootroot00000000000000* text=auto taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/.github/000077500000000000000000000000001514602004300242365ustar00rootroot00000000000000taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/.github/workflows/000077500000000000000000000000001514602004300262735ustar00rootroot00000000000000taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/.github/workflows/publish_conda.yml000066400000000000000000000006471514602004300316370ustar00rootroot00000000000000name: Publish to Anaconda Cloud on: release: types: [published] workflow_dispatch: push: tags: - '[0-9]+.[0-9]+.[0-9]+*' jobs: publish: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: publish-to-conda uses: taurus-org/publish-conda-action@v2 with: subdir: 'conda' anacondatoken: ${{ secrets.ANACONDA_TOKEN }} platforms: 'noarch' taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/.github/workflows/publish_pypi.yml000066400000000000000000000012311514602004300315220ustar00rootroot00000000000000name: Publish to PyPI on: release: types: [published] push: tags: - '[0-9]+.[0-9]+.[0-9]+*' jobs: deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Set up Python uses: actions/setup-python@v2 with: python-version: '3.x' - name: Install dependencies run: | python -m pip install --upgrade pip pip install setuptools wheel twine - name: Build and publish env: TWINE_USERNAME: ${{ secrets.PYPI_USERNAME }} TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }} run: | python setup.py sdist bdist_wheel twine upload dist/* taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/.github/workflows/test_with_tox.yml000066400000000000000000000017301514602004300317230ustar00rootroot00000000000000name: Test Package on: [push, pull_request] jobs: tox_tests: runs-on: ubuntu-latest strategy: matrix: python: [3.5, 3.6, 3.7, 3.8] steps: - uses: actions/checkout@v2 - name: Setup Python uses: actions/setup-python@v2 with: python-version: ${{ matrix.python }} - name: Install Tox and any other packages run: pip install tox - name: Run Tox if: ${{ matrix.python != '3.5' }} # Run tox using the version of Python in `PATH` run: tox -e py - name: Run Tox for 3.5 if: ${{ matrix.python == '3.5' }} # Run tox using the version of Python in `PATH` run: tox -e py35 flake8_tests: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: actions/setup-python@v2 with: python-version: '3.x' - name: Install flake8 run: pip install flake8 - name: Run flake8 run: flake8 . taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/.gitignore000066400000000000000000000023001514602004300246610ustar00rootroot00000000000000# Byte-compiled / optimized / DLL files __pycache__/ *.py[cod] *$py.class # C extensions *.so # Distribution / packaging .Python env/ build/ develop-eggs/ dist/ downloads/ eggs/ .eggs/ lib/ lib64/ parts/ sdist/ var/ wheels/ *.egg-info/ .installed.cfg *.egg MANIFEST # PyInstaller # Usually these files are written by a python script from a template # before PyInstaller builds the exe, so as to inject date/other infos into it. *.manifest *.spec # Installer logs pip-log.txt pip-delete-this-directory.txt # Unit test / coverage reports htmlcov/ .tox/ .coverage .coverage.* .cache nosetests.xml coverage.xml *.cover .hypothesis/ .pytest_cache/ # Translations *.mo *.pot # Django stuff: *.log local_settings.py # Flask stuff: instance/ .webassets-cache # Scrapy stuff: .scrapy # Sphinx documentation docs/_build/ # PyBuilder target/ # Jupyter Notebook .ipynb_checkpoints # pyenv .python-version # celery beat schedule file celerybeat-schedule # SageMath parsed files *.sage.py # dotenv .env # virtualenv .venv venv/ ENV/ # Spyder project settings .spyderproject .spyproject # Rope project settings .ropeproject # mkdocs documentation /public # mypy .mypy_cache/ # Pycharm project files /.idea/ taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/.gitlab-ci.yml000066400000000000000000000036501514602004300253360ustar00rootroot00000000000000stages: - linter - test - deploy tests: # run test suite in various environments parallel: matrix: - TAURUS_TAG: ["bullseye"] QT_API: ["pyqt5", "pyside2"] - TAURUS_TAG: ["conda-3.6", "conda-3.7-9.3.6", "conda-3.8-9.3.6", "conda-3.9-9.3.6"] QT_API: ["pyqt5"] stage: test variables: PYTEST_QT_API: $QT_API image: name: registry.gitlab.com/taurus-org/taurus-docker:$TAURUS_TAG before_script: - pip install -e . script: - python3 -m pytest . flake8: stage: linter image: name: python:3.9-alpine before_script: - pip install flake8 script: - flake8 . deploy_to_pypi: stage: deploy image: name: python:3.9-slim-bullseye before_script: - pip install twine variables: TWINE_USERNAME: $PYPI_USERNAME TWINE_PASSWORD: $PYPI_PASSWORD script: - python setup.py sdist bdist_wheel - twine upload dist/* rules: - if: $CI_COMMIT_TAG =~ /^[0-9]+\.[0-9]+\.[0-9]+.*$/ pages: stage: deploy image: python:3.10-slim before_script: - apt update && apt install ffmpeg libsm6 libxext6 -y - pip install --upgrade pip - pip install -U pytango taurus PyQt5 pyqtgraph sphinx sphinx-rtd-theme sphinx-mdinclude pyyaml lxml script: - sphinx-build -b html ./docs/source ./public/$PUBLISH_PATH - mv ./docs/source/index.html ./public/ - echo "Published at https://taurus-org.gitlab.io/taurus_pyqtgraph/$PUBLISH_PATH" artifacts: paths: - public/ environment: name: Documentation url: "https://taurus-org.gitlab.io/taurus_pyqtgraph/$PUBLISH_PATH" rules: - if: $CI_COMMIT_TAG =~ /^[0-9]+\.[0-9]+\.[0-9]+.*$/ variables: PUBLISH_PATH: $CI_COMMIT_TAG - if: $CI_COMMIT_BRANCH =~ /^(stable|develop)$/ variables: PUBLISH_PATH: $CI_COMMIT_BRANCH taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/CHANGELOG.md000066400000000000000000000065321514602004300245150ustar00rootroot00000000000000# Change Log All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/). This file follows the formats and conventions from [keepachangelog.com] ## [Unreleased] ### Added ### Fixed ## 0.9.8 ### Added - Added documentation with developing examples. - Added curveAppearanceChooserChanged signal to curvespropertiestool. (!136, #144) - Added mechanism to disable options at plot configuration dialog. (!137, #145) - Added compatibility with taurus designer, now Trend and Plot are loaded as plugins in taurus designer. (!130, !110) - Also in taurus: - https://gitlab.com/taurus-org/taurus/-/merge_requests/1268 - https://gitlab.com/taurus-org/taurus/-/merge_requests/1265 - https://gitlab.com/taurus-org/taurus/-/issues/1307 - Set maximum version of pyqtgraph to 0.13.7. ### Fixed - Refactored curvesproperties class to get the signal 'curveAppearanceChooserChanged' from curvespropertiestool. That way there is no need to forward signals from one signal to another. (!136, #144) - Refactored plot, trend and test classes to export/use cprop_tool without '_'. (!136, #144) - Refactored plot configuration dialog to be more user-friendly. (!137, #145) - Changed TextColorRole to ForegroundRole to be compatible with PyQt6. (!133) ## 0.9.7 ### Fixed - Changed the decimation by default, and simplified the pop ups for the user. - Set archiving decimation to default. ## 0.9.6 ### Fixed - Bug fix related to archiving with decimation. (!132) ## 0.9.5 ### Added - Added configuration decimation dialog for querying data to pyhdbpp using the decimation features. ### Fixed - Modified docker images names to get the correct ones. - Changed query window for archiving integration, instead of querying from the oldest visible date to the oldest known point it will query from the oldest visible date to the newer visible date. (!126) - Commented step of parametrized test that was failing with python3.9 with no apparent reason. (#132) ## 0.9.4 ### Added - Added documentation for the installation and usage of taurus_pyqtgraph. (!124) ### Fixed - Gitignore file to ignore /public folder on documentation generation. - Added support for bool, int and float values when rvalue has no magnitude on taurus trend sets. ## 0.9.3 ### Added - Save configuration now saves 3 property configurations to configdict: dynamicRange, leftAxisLogMode and bottomAxisLogMode (#122, !126) ### Fixed - Handled those attributes that cannot be plotted and the corresponding legend is not added due to the fact that the associated device is down or the attribute doesn't exist. (!123) ## 0.9.2 ### Fixed - General bug fixes ## 0.9.1 ### Added - First release with this changelog being updated. - Curves names shown at the inspector mode tooltip. (#121, !117) ### Fixed - Solve bug with statistics dialog. (#125, !118) - Fix f-string new format to .format style. (!119) ## 0.9.0 ### Added - Added range selector for X Axis view on trends. (#108, !112) - Added basic "Taurus4 compatible" data file export option. (!113) - Added new method to taurus trend to set logarithmic mode programmatically. (!115) - Added pyhdbpp as an optional dependency . (!116) [keepachangelog.com]: http://keepachangelog.com [TEP17]: https://github.com/taurus-org/taurus/pull/452 [Unreleased]: https://gitlab.com/taurus-org/taurus_pyqtgraph/-/tree/main taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/CONTRIBUTING.md000077500000000000000000000063221514602004300251350ustar00rootroot00000000000000# Guidelines for Contributing to taurus_pyqtgraph Contributions are always welcome. You can contribute by sending feedback (use our [issue tracker][] for that) or by proposing a code change via a [Pull Request][] The taurus_pyqtgraph repository uses the [gitflow][] branching model (i.e. features are developed on individual feature branches and they are eventually merged into the man branch, which is considered always "deployable". - `stable`: used for official releases. **Contributors should not need to use it or care about it** - `develop`: reflects the latest integrated changes for the next release. This is the one that should be used as the base for developing new features or fixing bugs. For the contributions, we use the [Fork & Pull Model][]: 1. the contributor first [forks][] the official repository 2. the contributor commits changes to a branch based on the `develop` branch and pushes it to the forked repository. 3. the contributor creates a [Pull Request][] against the `develop` branch of the official repository. 4. anybody interested may review and comment on the Pull Request, and suggest changes to it (even doing Pull Requests against the Pull Request branch). At this point more changes can be committed on the requestor's branch until the result is satisfactory. 5. once the proposed code is considered ready by an appointed taurus integrator, the integrator merges the pull request into `develop`. ## Important considerations: In general, the contributions to should consider following: - The code must comply with the [Taurus coding conventions][] - The contributor must be clearly identified. The commit author email should be valid and usable for contacting him/her. - Commit messages should follow the [commit message guidelines][]. Contributions may be rejected if their commit messages are poor. - The licensing terms for the contributed code must be compatible with (and preferably the same as) the license chosen for the Taurus project (at the time of writing this TEP, it is the [LGPL][], version 3 *or later*). ## Notes: - If the contributor wants to explicitly bring the attention of some specific person to the review process, [mentions][] can be used - If a pull request (or a specific commit) fixes an open issue, the pull request (or commit) message may contain a `Fixes #N` tag (N being the number of the issue) which will automatically [close the related Issue][tag_issue_closing] [issue tracker]: https://github.com/taurus-org/taurus_pyqtgraph/issues [gitflow]: http://nvie.com/posts/a-successful-git-branching-model/ [Fork & Pull Model]: https://en.wikipedia.org/wiki/Fork_and_pull_model [forks]: https://help.github.com/articles/fork-a-repo/ [Pull Request]: https://help.github.com/articles/creating-a-pull-request/ [commit message guidelines]: http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html [GitHubFlow]: https://guides.github.com/introduction/flow/index.html [mentions]: https://github.com/blog/821-mention-somebody-they-re-notified [tag_issue_closing]: https://help.github.com/articles/closing-issues-via-commit-messages/ [Taurus coding conventions]: http://taurus-scada.org/devel/coding_guide.html [LGPL]: http://www.gnu.org/licenses/lgpl.html taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/LICENSE.txt000066400000000000000000000027131514602004300245240ustar00rootroot00000000000000taurus_pyqtgraph is a plugin for the Taurus project and can be considered as part of the Taurus project. It is Free Software by the CELLS / ALBA Synchrotron, Bellaterra, Spain SECTION 1: GENERAL LICENSE FOR TAURUS_PYQTGRAPH SOURCE CODE =========================================================== The files in taurus_pyqtgraph, except for the cases described in SECTION 2 are distributed under the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. See SECTION 2: EXCEPTIONS ===================== Some files (e.g., those authored by 3rd parties or the documentation sources) are distributed under Free Software / documentation licenses that may differ from the the general one defined in SECTION 1. The following is a list of these exceptions: 2.1: Explicit copyright info in header/metadata: ------------------------------------------------ If a file contains an explicit license or other copyright information in its header or metadata which differs from the one defined in SECTION 1, or the following sections, such license/copyright info mentioned in the header/metadata prevails. 2.2: Documentation: ------------------- The .py scripts in the doc directory are treated as per SECTION 1, and the rest of its files are distributed under a Creative Commons Attribution 3.0 License See taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/MANIFEST.in000066400000000000000000000003721514602004300244360ustar00rootroot00000000000000graft taurus_pyqtgraph include LICENSE.txt include CHANGELOG.md include CONTRIBUTING.md recursive-include tests * recursive-exclude * __pycache__ recursive-exclude * *.py[co] recursive-include docs *.rst conf.py Makefile make.bat *.jpg *.png *.gif taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/Makefile000066400000000000000000000043511514602004300243410ustar00rootroot00000000000000.PHONY: clean clean-test clean-pyc clean-build docs help .DEFAULT_GOAL := help define BROWSER_PYSCRIPT import os, webbrowser, sys try: from urllib import pathname2url except: from urllib.request import pathname2url webbrowser.open("file://" + pathname2url(os.path.abspath(sys.argv[1]))) endef export BROWSER_PYSCRIPT define PRINT_HELP_PYSCRIPT import re, sys for line in sys.stdin: match = re.match(r'^([a-zA-Z_-]+):.*?## (.*)$$', line) if match: target, help = match.groups() print("%-20s %s" % (target, help)) endef export PRINT_HELP_PYSCRIPT BROWSER := python -c "$$BROWSER_PYSCRIPT" help: @python -c "$$PRINT_HELP_PYSCRIPT" < $(MAKEFILE_LIST) clean: clean-build clean-pyc clean-test ## remove all build, test, coverage and Python artifacts clean-build: ## remove build artifacts rm -fr build/ rm -fr dist/ rm -fr .eggs/ find . -name '*.egg-info' -exec rm -fr {} + find . -name '*.egg' -exec rm -f {} + clean-pyc: ## remove Python file artifacts find . -name '*.pyc' -exec rm -f {} + find . -name '*.pyo' -exec rm -f {} + find . -name '*~' -exec rm -f {} + find . -name '__pycache__' -exec rm -fr {} + clean-test: ## remove test and coverage artifacts rm -fr .tox/ rm -f .coverage rm -fr htmlcov/ rm -fr .pytest_cache lint: ## check style with flake8 flake8 taurus_pyqtgraph tests test: ## run tests quickly with the default Python py.test test-all: ## run tests on every Python version with tox tox coverage: ## check code coverage quickly with the default Python coverage run --source taurus_pyqtgraph -m pytest coverage report -m coverage html $(BROWSER) htmlcov/index.html docs: ## generate Sphinx HTML documentation, including API docs rm -f docs/taurus_pyqtgraph.rst rm -f docs/modules.rst sphinx-apidoc -o docs/ taurus_pyqtgraph $(MAKE) -C docs clean $(MAKE) -C docs html $(BROWSER) docs/_build/html/index.html servedocs: docs ## compile the docs watching for changes watchmedo shell-command -p '*.rst' -c '$(MAKE) -C docs html' -R -D . release: dist ## package and upload a release twine upload dist/* dist: clean ## builds source and wheel package python setup.py sdist python setup.py bdist_wheel ls -l dist install: clean ## install the package to the active Python's site-packages python setup.py install taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/README.md000066400000000000000000000121051514602004300241540ustar00rootroot00000000000000# Introduction `taurus_pyqtgraph` is an extension package for the [Taurus] package. It adds the `taurus.qt.qtgui.tpg` submodule which provides [pyqtgraph]-based widgets. The rationale behind taurus_pyqtgraph is described in the [TEP17] ## Install Just install this module e.g.: For the latest release in PyPI: `pip install taurus_pyqtgraph` Or locally: `pip install .` If you need Archiving support (HDB++) on trends install it typing: `pip install taurus_pyqtgraph[Archiving]` Or locally: `pip install .[Archiving]` Alternatively, you can install with conda: `conda install -c conda-forge -c taurus-org taurus_pyqtgraph` For development, use a python3 virtual env (or conda, or similar) and: ``` git clone https://github.com/taurus-org/taurus_pyqtgraph.git cd taurus_pyqtgraph pip install -r requirements_dev.txt -r requirements.txt pip install -e . ``` After successful installation, the module will be accessible as `taurus.qt.qtgui.tpg` and `taurus_tpg`, and `tpg` will be registered as an alternative implementation for plots and trends in the `taurus` CLI. ## Features implementation checklist `taurus_pyqtgraph` is still in alpha stage. Its API may be subject to change before the 1.0.0 release. This is a list of planned / done features. The tasks which are checked are those for which there is already an alpha-quality prototype: ### For 1D plots - [x] 1D plot: plot of multiple 1D models with auto-changing color and availability of legend - [x] Date-time support on X axis (display only, see "UI for setting scale limits *in date/time format*" below) - [x] Stand-alone widget - [x] Zooming & panning with "restore original view" option (not the same as zoom stacking, see below) - [x] Possibility to use (at least) 2 Y-scales - [x] UI for adding taurus curves via ModelChooser. See also "Improved Model Chooser" below - [x] Store/retreive configuration (save/load settings) - [x] Support for non-taurus curves in same plot (aka "raw data") - [x] UI for setting scale limits and lin/log options - [x] Export data as ascii: without date-time support - [x] Export plot as image - [x] UI for moving a curve from one Y-scale to another - [x] UI for choosing line color, thickness symbol, filling... - [x] Arbitrary Label scale (aka FixedLabelsScale) - [x] configurable properties support (setting permanence) Outside TEP17 scope: - [x] UI for setting scale limits *in date/time format* (S16) - [x] Point-picking (aka "inspect mode") - [ ] Date-time support in "export data as ascii" (S24) - [ ] Plot freeze (pause) (S8) - [x] Improved Model Chooser: replacement of the "input data selection" dialog allowing to choose *both* X and Y models (see curve selection dialog in extra_guiqwt's tauruscurve) - [x] Drop support for taurus attributes - [ ] Zoom stack: possibility of stacking zoom levels and navigating back one level at a time. (C16) - [ ] Cursor position info (display X-Y position of cursor in active axis coords) (C2) - [ ] 1D ROI selector (C2) - [ ] Curve statistics calculator (mean, stdev...) as in curve stats dialog of TaurusPlot/Trend (C8) - [x] UI for changing curve names - [ ] Peak locator: Visual label min/max of curves (C12) - [ ] UI for adding raw data (W8) ### For 1D trends Most of the features mentioned for 1D plots affect the 1D trends as well. Apart from those, here is a list of more specific features of trends: - [x] "1D trends": plot of scalars vs event number or timestamp - [x] Fixed-range scale (aka oscilloscope mode) - [x] UI to switch between fixed and free scale mode - [x] Stand-alone Widget - [x] Support for forced-reading of attributes (aka "-r mode") - [x] UI for forced-reading mode - [x] configurable properties support (setting permanence) Outside TEP17 scope: - [x] "Trend sets": plot of 1D attribute vs time interpreting it as a set of 1D scalars - [x] Accessing Archived values. Done via [taurus_tangoarchiving plugin] - [ ] Accessing Tango Polling buffer (W24) - [x] Support for limiting curve buffers - [x] UI for curve buffers ### For 2D plots (images) Outside TEP17 scope: - [x] Plot a single image - [x] UI for Add/remove image - [ ] Stand-alone Widget (M8) - [ ] "calibrated" XYImage (assigning values to X and Y scale, as in guiqwt's XYImageItem) S8 - [ ] Cross sections (slicing) (S4) - [ ] 2D ROI Selector (S4) - [x] LUT/contrast control (S0) - [ ] Drop support for taurus attributes (C4) - [ ] LogZ scale (C?) - [ ] Annotation/measure tools (C16) ### For 2D trends (spectrograms) Most of the features for 2D plots affect also the 2D trends. Apart from those, here is a list of more specific features of 2D trends: Outside TEP17 scope: - [ ] Stand-alone Widget (M8) - [ ] Absolute date-time scale (display, see same feat in TaurusPlot) - [ ] Fixed-range scale (aka oscilloscope mode, same as for 1Dtrends) (M8) - [ ] UI to switch between fixed and free scale mode (S12) ### In general: - [x] Document all public API - [x] Make all code pep8-clean [Taurus]: http://taurus-scada.org [pyqtgraph]: http://pyqtgraph.org [TEP17]: https://github.com/taurus-org/taurus/pull/452 [taurus_tangoarchiving plugin]: https://github.com/taurus-org/taurus_tangoarchiving taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/conda/000077500000000000000000000000001514602004300237625ustar00rootroot00000000000000taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/conda/meta.yaml000066400000000000000000000021051514602004300255720ustar00rootroot00000000000000{% set data = load_setup_py_data(setup_file="../setup.py", from_recipe_dir=True) %} {% set BUILD_NUMBER = environ.get('GITHUB_RUN_NUMBER','0') %} {% set GIT_HASHTAG = environ.get('GITHUB_SHA', os.popen("git log --pretty=format:'%h' -n 1").read().strip() )[:7] %} package: name: {{data.get('name').lower().replace(' ', '_')}} version: {{ data.get('version').replace('-alpha', 'a0') }} source: path: .. build: number: {{BUILD_NUMBER}} string: {{ PKG_BUILDNUM }}_{{GIT_HASHTAG}} noarch: python script: '{{PYTHON}} setup.py install --single-version-externally-managed --record=record.txt' #entry_points: {{data.get('entry_points', {}).get('console_scripts', [])}} requirements: host: - python {{data.get('python_requires','')}} - setuptools run: - python {{data.get('python_requires','')}} {% for dep in data.get('install_requires',[]) %} - {{ dep.lower()}} {% endfor %} - pyqt about: home: {{ data.get('url')}} license: {{ data.get('license')}} summary: {{ data.get('description')}} author: {{ data.get('author')}} taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/docs/000077500000000000000000000000001514602004300236265ustar00rootroot00000000000000taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/docs/Makefile000066400000000000000000000011511514602004300252640ustar00rootroot00000000000000# Minimal makefile for Sphinx documentation # # You can set these variables from the command line. SPHINXOPTS = SPHINXBUILD = python -msphinx SPHINXPROJ = taurus_pyqtgraph SOURCEDIR = . BUILDDIR = _build # Put it first so that "make" without argument is like "make help". help: @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) .PHONY: help Makefile # Catch-all target: route all unknown targets to Sphinx using the new # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). %: Makefile @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/docs/make.bat000066400000000000000000000014121514602004300252310ustar00rootroot00000000000000@ECHO OFF pushd %~dp0 REM Command file for Sphinx documentation if "%SPHINXBUILD%" == "" ( set SPHINXBUILD=python -msphinx ) set SOURCEDIR=. set BUILDDIR=_build set SPHINXPROJ=taurus_pyqtgraph if "%1" == "" goto help %SPHINXBUILD% >NUL 2>NUL if errorlevel 9009 ( echo. echo.The Sphinx module was not found. Make sure you have Sphinx installed, echo.then set the SPHINXBUILD environment variable to point to the full echo.path of the 'sphinx-build' executable. Alternatively you may add the echo.Sphinx directory to PATH. echo. echo.If you don't have Sphinx installed, grab it from echo.http://sphinx-doc.org/ exit /b 1 ) %SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% goto end :help %SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% :end popd taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/docs/source/000077500000000000000000000000001514602004300251265ustar00rootroot00000000000000taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/docs/source/api.rst000066400000000000000000000042541514602004300264360ustar00rootroot00000000000000API =================== .. toctree:: :maxdepth: 5 .. automodule:: taurus_pyqtgraph.autopantool :members: :special-members: :show-inheritance: .. automodule:: taurus_pyqtgraph.buffersizetool :members: :show-inheritance: :special-members: .. automodule:: taurus_pyqtgraph.cli :members: :show-inheritance: :special-members: .. automodule:: taurus_pyqtgraph.curveproperties :members: :show-inheritance: :special-members: .. automodule:: taurus_pyqtgraph.curvesmodel :members: :show-inheritance: :special-members: .. automodule:: taurus_pyqtgraph.curvespropertiestool :members: :show-inheritance: :special-members: .. automodule:: taurus_pyqtgraph.datainspectortool :members: :show-inheritance: :special-members: .. automodule:: taurus_pyqtgraph.dateaxisitem :members: :show-inheritance: :special-members: .. automodule:: taurus_pyqtgraph.forcedreadtool :members: :show-inheritance: :special-members: .. automodule:: taurus_pyqtgraph.legendtool :members: :show-inheritance: :special-members: .. automodule:: taurus_pyqtgraph.plot :members: :show-inheritance: :special-members: .. automodule:: taurus_pyqtgraph.taurusimageitem :members: :show-inheritance: :special-members: .. automodule:: taurus_pyqtgraph.taurusmodelchoosertool :members: :show-inheritance: :special-members: .. automodule:: taurus_pyqtgraph.taurusplotdataitem :members: :show-inheritance: :special-members: .. automodule:: taurus_pyqtgraph.taurustrendset :members: :show-inheritance: :special-members: .. automodule:: taurus_pyqtgraph.trend :members: :show-inheritance: :special-members: .. automodule:: taurus_pyqtgraph.util :members: :show-inheritance: :special-members: .. automodule:: taurus_pyqtgraph.y2axis :members: :show-inheritance: :special-members: .. automodule:: taurus_pyqtgraph.exporters :members: :show-inheritance: :special-members: .. automodule:: taurus_pyqtgraph.statisticstool :members: :show-inheritance: :special-members: .. automodule:: taurus_pyqtgraph.titlepatterneditor :members: :show-inheritance: :special-members: taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/docs/source/conf.py000077500000000000000000000027561514602004300264420ustar00rootroot00000000000000import os import sys sys.path.insert(0, os.path.abspath("../../")) # Configuration file for the Sphinx documentation builder. # # For the full list of built-in configuration values, see the documentation: # https://www.sphinx-doc.org/en/master/usage/configuration.html # -- Project information ----------------------------------------------------- # https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information project = 'Taurus Pyqtgraph' copyright = '2024, ALBA - CELLS' author = 'ALBA - CELLS' release = '0.9.8' version = release # -- General configuration --------------------------------------------------- # https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration extensions = [ "sphinx_rtd_theme", "sphinx.ext.autodoc", "sphinx.ext.doctest", "sphinx.ext.inheritance_diagram", "sphinx.ext.intersphinx", "sphinx.ext.todo", "sphinx.ext.viewcode", "sphinx.ext.napoleon", "sphinx_mdinclude" ] templates_path = ['_templates'] exclude_patterns = [] pygments_style = "sphinx" autodoc_default_options = {"members": True, "private-members": True} autoclass_content = 'both' html_logo = 'imgs/logo.png' html_favicon = 'imgs/logo.ico' # -- Options for HTML output ------------------------------------------------- # https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output html_theme = 'sphinx_rtd_theme' html_theme_options = { "sticky_navigation": True, "collapse_navigation": False } taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/docs/source/develop_examples.rst000066400000000000000000000113251514602004300312160ustar00rootroot00000000000000=================== Developing Examples =================== This section describes different examples of how to develop functionalities and add them to the taurus_pyqtgraph package. The way of adding follows the same development guidelines as the rest of the taurus packages, so you can check the `Taurus development guidelines`_ for more information. How to add a new action to the context menu of Plot/Trend --------------------------------------------------------- We will see here how to add a new action to the context menu of Plot/Trend, this action will be called "Dummy Action" and will just print console message and pop up a dialog when it is clicked. 1 - First of all, you need to create a new file in the `taurus_pyqtgraph` package, for example, `dummy_feature.py`, the correct place to put it is in the `taurus_pyqtgraph` module/directory. 2 - In this file, you will need to import all the necessarry things to create your desired action. .. code-block:: python from taurus.external.qt import Qt 3 - Define a new class that will inherit from `QDialog` and implement the desired functionality. For example, you can create a dialog that will show a message when the action is clicked. .. code-block:: python class DummyTool(Qt.QAction): """ This tool inserts an action in the menu of the :class:`pyqtgraph.PlotItem`. It pops up a dialog saying "This is a dummy feature. It does nothing." and it prints the same message to the console. """ def __init__(self, parent=None, itemClass=None): super().__init__("Dummy Action", parent) self.parent = parent self.triggered.connect(self._onTriggered) self.plotItem = None def attachToPlotItem(self, plot_item, parentWidget=None): """ Use this method to add this tool to a plot. :param plot_item: (PlotItem) """ self.plotItem = plot_item if self.plotItem.legend is not None: self.legend = self.plotItem.legend menu = self.plotItem.getViewBox().menu menu.addAction(self) self.setParent(parentWidget or menu) 4 - As you can see the _onTriggered methos is not implemented yet, and to implement it now we will encapsulate the logic of the dialog on a separated class in charge of the view part. To keep it simple we will use a static method to display the dialog. .. code-block:: python class DummyToolDlg(Qt.QDialog): """ Dialog to display the dummy feature message. This can be a complete class with more customization, but for the example it will be used as a static method to display the message. """ @staticmethod def display(parent=None, data_items=None): dlg = DummyToolDlg(parent) dlg.setWindowTitle("Dummy Feature") dlg.setModal(True) dlg.resize(300, 100) layout = Qt.QVBoxLayout(dlg) label = Qt.QLabel("This is a dummy feature. It does nothing.", dlg) layout.addWidget(label) button = Qt.QPushButton("OK", dlg) button.clicked.connect(dlg.accept) layout.addWidget(button) dlg.setLayout(layout) dlg.exec_() print("This is a dummy feature. It does nothing.") 5 - Now we can implement the _onTriggered method to show the dialog when the action is clicked. .. code-block:: python def _onTriggered(self): """ This method is called when the action is triggered. It will show the dialog and print a message to the console. """ DummyToolDlg.display(self.parent, self.plotItem) 6 - Finally, you need to register this new action in the `__init__.py` file of the `taurus_pyqtgraph` packages so it can be loaded when the package is imported. In this case the feature will be registered for the Plot and Trend items, so you will need to modify both files. .. code-block:: python from .dummy_feature import DummyTool def __init__(): .................... # Register the new action dummy_tool = DummyTool(self) dummy_tool.attachToPlotItem(self.getPlotItem()) .................... You can see here on the following picture the result of this new action in the context menu of a PlotItem, but for the trend it will be the same.: .. image:: imgs/dummy_action.png :alt: Dummy feature action in the context menu of a PlotItem, for the trend it will be the same. .. _Taurus development guidelines: https://taurus-scada.org/devel/coding_guide.html taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/docs/source/imgs/000077500000000000000000000000001514602004300260655ustar00rootroot00000000000000taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/docs/source/imgs/archiving_trend.gif000066400000000000000000020661051514602004300317340ustar00rootroot00000000000000GIF89a1$Hl$$$H$l$$$$$H$HHHlHHHHHl$lHlllllll$Hlؐ$Hlش$Hl$HlU$UHUlUUUUU$U$$UH$Ul$U$U$U$U$UHU$HUHHUlHUHUHUHUHUlU$lUHlUllUlUlUlUlUU$UHUlUUUؐUUU$UHUlUUUشUUU$UHUlUUUUUU$UHUlUUUUU$Hl$$$H$l$$$$$H$HHHlHHHHHl$lHlllllll$Hlؐ$Hlشت$تHتlتتتتت$Hl$Hl$$$H$l$$$$$H$HHHlHHHHHl$lHlllllll$Hlؐ$Hlش$Hl$Hl! NETSCAPE2.0!,H*\ȰÇ#JHŋ3jȱǏ CIr!(S\ɲ˗0cʜI#8sɳϟ@^)ѣH*]%ѦPJJՕ'jʵׯFKٳhM˶۷pKݻx3˷߿pLa+^̸1Ď#KLbʘ3k,2ϠC,`I^ͺRծc˞6۸syN8Ɠ+O.|禛CNس+wܿ6.㫗OVI߯~'`"X &F V%`߆dGP.$Q!nW[Mck.ҨK6X;)蚏B&G7FPd+GFieO=x9h$\[BIamA&ekOiII$ǥ{9М!yI&m'AV硘$!dĹit)D_ mIl @[qY&0)FMZ1*ǡ 蟤SDCR4J6r(@ )kM-aО PdhJ6tj\ilaH'rm! -|n( o}Rpk)| ,2P Ğd⫝ihh<uoD;rɀҬ!г2qBnA9Ry 0 vb-6,! M`qeB )~9IIƮ+ޝ̦4pDDou5B(A h{>|0 }w× /Ym'5Jrğ > K{뛢G=Uz4EUH(V-{ J4F,jԛ')LZ x?CS$c%T"2# ш#ʞ\媐h΋'f,iQ8$zDQViK#j0QUuOC<^i#Y> {/BƐ$Hˑ%it՘qA+L擤$J3|,cIYڲ.s]L%P)bLfYfΌI@جQ6Ikrr8q3'<:_vJ)z.ɞ =O쳟?JP%@P5&PZ͡UF=3T#vL2,aيgfVU-WHi_x&D}TM"g=VpՕ\Z7zJSl]prj } ǧɯ ,D(niG52zU$,j±=#lcҶmr[-p9ܔ ;.rҹ$#2 RlHfFfɕm(" Q@/$fȨ;-rnάoLPX&u|gBk]`ߩfm2cJxڑ@l'ZDrҀZC;;wXmd9^c+4m+O23Y Ҋ$lQ&hB0 ީ;⼽=dլUNu; i]7A{/4!l@V{ӲdlS%PH5Mis=1Rxt#TdѭPsa e TjGշ^a+F?,&VRaj ~RM`n;`:=QROΥmM7-c񌯋j #[ǿ3ֈ^yѓTF^M%*d|;n\=X3{^e-9y>GYw~$X>)F+A#wQ?wLZ|C0m1[z#ǧ^q\R&Af\񧁌\("BWf}&"_с+8څ~/8c3df7Ȃ`Q;^р{z?8faEfIyhMHgQ}AZU~g[(O_]c}lgLiX}kh~moswXvpa{hpyb8zL=ᇌMuxvv~v!fH#F##扫b@!NCIyQD2&2:!>wX|a8orxArx%'t1h2A?vܘB:y`Ȍ}xRXXrHZX+qIX&Ch!1-6D#!7Qi fxy(*h *91iђYzը!$H; N44ɔ@ vLѓUUWY> ]IRe)Fej)ٖi`iS)nhorr9Dɘ mI鐆yA! 7 𐏉vHHGyy=ٛyJy{y\iI̩yY9ȝ"4X&)36YSA[Upp-V*Vq+v;x>]8,s+Ul,XJAucl38,Nɛ)+ڕע ! 5z297j;j?A*4ڣE1i0Kʤwy'~QTQW Yj[ʥ]_ aPڕV:2QYUɦPd \( Hgut{ʧgᦂ*Glhc_a J\q:ʇO꩟ʩ:Z:VqǪ49irr -4 zm3800<#nlBnCt)nph-a>̖ox},G&ӖlMي &X'!qڮ$$X)Nz m0Ai?&" )Y %[;˱!;R4Q鲣ɲ-+3x4#9+;=?6[CE8)q0P$_PZLN[15_P)WB2!Bg[hklnpr۶qKsw[xk|~۷Ksk~;~B/&RP34Mȳr&4t=Za0ԺTZ C0tUnҭy2Vv&-8;I. P8+YO9vf4.R7BQTxbCK+<Ų-Y~l34'M!8 A-%U'.Lm5ӽJ9#'i:[>ZLz72[a?`0,K 'KZ&%+M)>(OSѠ7/qE=,8d):KJֶ C?"1#~B;-0&L-(wc;,/m`&bE1f'C'v|4ͺV&+vM۸sͻ Nȓ+_μУKNسkνËOӫ_Ͼ˟O_Ͽ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`)FVuhlp)tix|矀*蠄j衈&袌6裐F*餔Vj饘f馜v駠*ꨤjꩨꪬ꫰*무j뭸VTA+kd6F+Vkfp&ly-i;.d{.a.\-v.W{/R/O/J <0tWՖ/? ?,[E(VH!A+dt[#[B(,o2ϼE;% .Y,Rس=S, جU<oƭS7޾gm{om"pZ- ^3R+ԝ{v.֦KY|7c}Uݼq%^ޜ];pɴ Sya!,`(H *\x‡ :H1ĉ^A=biQH&?,reʆ$_D)dǚ q|eOQ VCYNw44MJ PhUʖV%vZF-ګlے[ +\o`V%U\v= @8˖d.ݸ/K3Ɣ %/RfUo `/ɀ!,_@"\P!C":|0"HI_V''%cH$1jܸ0e[NN'`, Rɂ.{n 0hϊEk"|P[ItRE(e/VHZjVbnuذcu6"o_/+En>yp̆EU&) qARBKԬVHaRzV!,!,^hE* G0ÅR:<1b "ƅ;4A RF>^HF0eleL,'Jȹc_I2q-<v$IR&pjt)!ҋrQiVS jْHj0 !,`)_V .d8N( &!I)Z$̘$Y"g4KJʟRtJ54@xl+SC% eVJ XI[vXVȲƔPnHR׊*Ѣ"*,o”۵8cH31 !,!,g d[JaZ9RNh񟄌rq[(cWJi֖=ly&ŜL<)eJg~U4Q7iJ)Ё(=@375@M^5(俪dL⿃;@_ V뙗E!07ï/ѿ$F ?*qT`@`ӵ+`G >!a"w"`C`"[a~70ulhu`!dpAX#s!h+lUeWRIxÁ(sJ eCX"F,bg-OlP Az'<3S 'a܊2ڱ3Q5B7⏊#TCJ)Yȹ dL%$$[aXbZ%8JǸ떖 #F/(kIG=tdIIbCO8`ҙ|9M0ؔCN!,熬9LuJ;㙡o毝T,5 2,cP 3(XPuS lI8T@2@E uS; $}IUϔht)>tw2EF'zlOOUMTp/}R: &pxY|`ULD}SbnplM+@yոy^kZU;_Ͼ>̜P^hWUld*XH}м.VtNmLc+[^cq[X+7=ncݺ@uutvZHJwɽ.uՌEjv%J֮k9kfo~ "h)&Jl5#*] XI,Xw_i==mCx3p}]zLfEj!g{98Q 2y6 ~Q*|WGiǮbb9&kGB]p~ZDIs\Z 2hexnI6ftJ->#f]OamF3B+zI/:ٳǗ(t`Lɨ +BVպq֦֪)R]Dž`7A\Hjgb*fެb[C"oeh+)Fz-Vbz}b4}oxyJ8\G|#33{qe`I2A\;ɻ╇|-_>BBJz 󰼹6HΕ݆Npks:)X׏ԝ{`NhO]?!E֐, T(fXHi+5<G- .ٍZĶ*-ɫ} ww"pX O~#QLO5z#J6KS||"aR =t!Sb|1&^ XƋO?Ͼ{OOOϿ8Xx ؀Es0ɶKD}JRE˂֢FRPm.6yB.w}Db/z:ֲ,>}>{iqJS!}JWm|g}D}'@1gB9cc(}h(jl؆npr8tXvxxz|؇~8XxX&>)H*Sg҈xx&ም2gx>9W170EjATwbA,X Aqm13|JNy@1wER6aGhtR8,բn+,U!.%[p=0qyRG1x!|]4' FwbŘ3k̹ʸ 카ӨSMH$%Q kUͻ!598Cͼi^)}гkνËOӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`)dihlp)tix|矀*蠄j衈&袌6裐F*餔VjpCQn %\ptS{f5BXjUFMHhvzQeI`kiʆ1hv\?M_-K=Wr hHpOʙ.]g]u,l' 7G,Wlgw ,$l(,0,4l8<@-Dc]!]4 K 0@+5@5OoZS!u8=,cgu0A܁]W^3b=aL @wEz^7Ԃ;xLL7G4T9~xFf8Sm+ιׁ>gtڏ {QçxT/7/4D%镑{a8.[[gO~z `W>y4QRHط?8sdL -l&*cPDhƢ@Qֺ D"qb/hIpX1B l`X]1g bZB"n&I d(2$A[_qu8D'b&Z@HiՅaJ*Lq9:4[!~P ؖ45Y"XMLp Rb$i@H WfYUn]dIQBH4Z7Ug T@yGW6i-_DJp*%0d'\P~L 0xl) YMko|'3oi9 D|e`xzS}sDO):o֓I^9M懟3\rt>ع$RQP9Q t撥BSiapRГ<JҥE)fTxNԷ,(V&n;ZDe-J\YʭfD1dlS-͹y-W*NEì_B&>4\b0JJ-N<4oaӕ*K-ۀfTxdHъWnu֎Vl\h ]^ Kw`x7mK2YF, [/%uJXMxE|Vl[7Xƹ]|.х;~a>wW )7{ GN(OWΙla8Xt*Z⪍lN#2|cfx܄v? .ܔIHUb,[d0Q!Lp-68VQkj\KO{F{]ʼn3/wmOO;񐏼'O[ϼ7{GOқOWֻgOϽw:sd =>H 蚧qtLC`@T)^Zel:d|lV$&cO,%+͆HruƵD !|)Hb4xH4}I vǀ8Xx؁ "8$X&x(*,؂.0'+)QurV(Q>88Dh(?G(L؄N>pRrRm1t g'ױR!taHQ,i"CH!.>Z!y"C|74*G%g2ɇ&D:qB**xrBtցC?e&AvDJZQԁ"2*y?V7[h[une\+t]A7(}H+P8XmW7t&h4Hb}wtF6@8'dwCa+X,r}dR9ljEG@h)W'834,x694x|^"CJjrH/&Qh*H+EX&T!*XV{rw65~S!,#9 HDÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JG*]ʴӧ$HM U7ʵׯ`_N*0& ˶۷pE%vBK7߿;I( j 2L)ǒ-pAS6hr*ӨSZAKm<`ds}p%W/߬+_tjTxW6DҮeνw3t{_cRsd7:D@XIv6 { 18E}6@ ZkK@ 0(0Fl*"l+%_iSQ94ՁxT$ @9ӊ-X`DJ"GYl9qymiFeZ)ӊ@(6:P+Q襘\PrhV&l!~SVR>ry.k5 }LZV k~F#AFkztE)vp~z侷!U̒պk\ Ҫ,c+C;:WRR&zaf(cRq J_1(n,|~ &r4&@ChqDmGe(LrP+8GmW}֗-\"m`\ Dgn햜1m`}0߀#Xnx~`7S:.TpcS~縫ǮR`n;Hi7?ѹ.V G!WAz[=Rd_Ћ_[__>a#q_Rk3`§@| 67EPx&= /i =(9EQxu|Bp5C=D它E4D +WMtܶVŶmtUljE-RK-TbUV@*G hÌ\pFoR g:FxB+Ƞ:AЏƒM)Ql !qQҎ #0H~%hDH)c(Y*eMR H&HY+@-C@Kl%.L,ϲ0bcc'ᒡ)g3ITp!\6BV|^ɠe)J*L)޹(@L̵+(2s-Q杣8$-(T RgxԴf cmR sPHZ3) 4wjkB4IKtY?~^R-FyrΛmuzذ6nMOP Z@-LI=@vf^z c䩷kL$6UۛLsITzՍUζ@ =aWڄL%gh~28$e rKI13F2PԳ&xMY̛ ppnlfÀ!,%"9 HÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*] ӧHȐիXj) lKٳ)ЀI׶mEKݻhR0@|~]"`*^̸qL0%pu̹Ra2`AR% ן 02 J- L.@4>lm+N:Ϯ@ML[OTu˟O"iX"aq7Pr9ZA6@ Fs)XY EDjM@Zd.iY!YIE/8xs}B4nt_qx\:&MIN1KVi%W6 !ݕ`YcU4\lj!)X! lxi~PVםZ7?؄F~5Ji*.N)Зrnj1Ryc)O!ZmZ ZPPXa(IH 䍸lV12ԭU)b hbq`d - fHハ#j('|.h__7FlUeܥwz, W$#, Un"4y5#vzJ2DW_ 4tLMGJm^yn5ds&3e @Hۮ/tdž/u}{;ހNن'^͊7}'԰ exWy UUӪtšhe+z8$w.{F&3\>&r?+=*s̟u{m$t؇vwܨ{/>d>jx#4}v{슱_cp09kb\øW@ܱm?k`'A񭯂݋t> 6z4,|%(&W ?عn3 s<ᐇ G5id;\4L|!P$gU::UI]qvB9c8)N)%K=MwD?6V\|,Eimc&GQW0l)9!H:_+2"Q"By4@VDZ6S?d5%-rVM4y\Rj5ukifRhz $ RR eu|͔_3Au}lrwsO RHh5ZJ3b{9ӏs*4?%Ep8if4Vz~3e2ݑĴh+ïY !,&E `A0Ç#JHŋ3jȱǏ CIɓ(St` M Bj6Ipϟ@ JѣHIB$[ $ s˦IQʵׯ`ÊK6)ԅ$i4fN ɔKݻx(ŪL='KÈ@Ϳa3k̹Pq |ӨS7Z[nKZ۸s&`SX1+_<iڤsmسkνËOӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`)dihlp)tix|矀*蠄j衈&袌6裐F*餔VjF&SBr)T&/=)dX頽 pU`*fjE[[`Vk3vDEs WDJejlu[AV@m扪NEmZtk~&Yđ{V+*E,l' 7G,Wlgw ,$l(,0,4l8<@-Dm4ttJ $5SSth!  H=V-ӢmBL8A[]n!=@<0Z}n= ؍77WMSuK`Q-TKX5CH-L4ax>z>)@:ٿдfW||M<}\PJ }xKqSxN?P׻[GxCRGp3Q2+֣޼D B̆rҶxVob"ِ!} -Q z) Jz6 D0K d+`z(]ޒh-yڠ)LP}viŻ̤X h .c|{i ^L)z)z*D ]hu͈|LcҔQ^ӂ7+vo.$]fUJTٖLj8qT(ʯUFn{\bZB0S؝^AAҘyePӾs&(ŎLZ x6Zg W*ҍYtY̻kWi ?] WX2iմ?S=,bzUŶ'0 XmƙYa` Qy+k_a2收yLq?6o{k>֧5.{NX֖dsBvQ3?a$rضՎQ'^DmnHʗ9le^ao}s x/O{'y=ks޵2:5:-H+kŷdU&]+2AϾX%E+HAcN- aʨ 8ЈjTXpu|́2S5[-g׷^*} f1{f~/I`)ef 8ʒ\cFC &ʏ #6^x!#3:(l;ME?ɴcbc'0GDMbX>OmlkREU2UZz Y]󚱿NIG㘾}ӋpylφvX:mU!v=((۝rC͚M-Wmf>h-e ϱEOy[#Vl| zb2hrm)0~at+uo[U4`ݬEi+v[ܜ=}, ܬYNw*u?ROO;/!bȯ*LJ{Y~$X vꆟ^Z*#V` S1ߟ*mgi<jKl}#3.+3F5Ћ4[KOOϿ8Xx ؀8Xx؁ "h+)&34A$$k,fC8{rsWHF7iqCF| *IVG~Hp1H6Y.9N,Uh-K4-;Jw7z#Xvxxz|؇~8Xx؈8Xx[s,(B҉( 1(8(H8X)G [p-2ַ{Y)-=dԒi /AmOA-}q*4t=R-NVIrB!3*71zw`5(&xa=JXXkBPqb&rJ]H.N,,7Բ ᆱCjiG,obȨ)edK4bFrQJdXt-:DHCf8&(.o4fBȓk_6B2.N&4Trkx'xKtIQHIP88 /IA!,'I `A0Ç#JHŋ3jȱǏ CIɓ(SxP!ÄI͛8sɳOH!)ARl:zt )2@6$իXjʵ+MZ&$A[HBF׷pʝK݋I2ܒ) È+^̸-7L˘n"o%l1*U6Ig^ͺr 4[h_ͻW͙oݶlQЛMd7zf $/iJC&W˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`)dihlp)tix|矀*蠄j衈&袌6裐F*餔Vj饘f馜v駠*ꨤjꩨ*o-ab*B1V*7P&݊A-%u١%Z [)` $_ Cm H1QwY 5+vqPj*JFn)w^bTdAj%.wk5<)m9lgw ,$l(,0,4l8<@-DmH'L7PG-TWmXg\w`-iKvzvR*A!o 4 00Q2͍c~37 cLLw~ 9ᎣyP@ ݚ (睓01AKQK\>@ߛ:&ST01@XD{C;=IcHȃT'^x-MQ*~T\O 2?%~n'yST=I'+)/y:ɨM/ G?fe! a S+[! FN!701 H<)RJWh}X!C#҅]h @<؄/p) C/"!}Q_ikHr.0 cC.-cxH4J TLxt%(Jʅ8L!ňx!@Hcp&[$E6H [:y kL%zsL2%zXxyu.t$KM˰Qxn@st2nL=y{ƍ]&%C@nth?jɉꑙe)XQ6d'GӪѽeQhw"U)\6* )x=p:J`By5# j\}"U~@Uj")9I*\bj5+hF P_`( `;\MO Z% \{R{ AmzWPMU3T&6']"&f%aigvB*0@rmo[jkD렡Rs &u2+Y*ȳåuTnUwg W@Z,aϋVB _B o}]W5~GM*x󳐳N8@  ;jx.!l6q|~Xn`|f74Os@B8DXFxHJL؄NPR8TXVxX*d,0CHDOJ//F~gFB(xG!-jH+AqQFv~Jn~H'OAG-h s.g@ND$EZ8Xx؋8XxȘʸ،Ҩnဟt*8*ۘ*ȍҍ8)8؎)*K ,c1A1KDtF, C.b(11eacf((rth/rJjJS(.R q+RQ~#y,x}(0G S7eJ-wCdӂ"HJTxFg~ha"?ǖ-A,4(wFc+"N.)nqiD<ٓ(GLXG!},QT$#yJLTlIIQgiF!,)O `A0Ç#JHŋ3jȱǏ CIɓ(Sd )2@ R C[lJϟ@ JѣH:@&IC ; a(eKt+Ppk̹7-^ͺy$)jԙeʔ LRxKY [ œ-£KN2V90gËOӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`)dihlp)tix|矀*蠄j衈&袌6裐F*餔Vj饘f馜v駠*gg-dYg:L IPC WeIEUPJ8evUj Q&쯌eUPCEԬ@EK(NTdصj+(q/ qVZ*SV~]S19m:dX&+l' 7G,Wlgw ,$l(,0,4l8<@-DmH'L7PG-TW QfXDD 4 5@ 0Lgǘ@P q+@ם"-QA,Q@hM:r@uCD֓7{x@OFOѶ٨ .:D@xᐋz ;u(VL\͗7)ޫ_`kCY[/S=A$͎P瑳w+΄]G7KPcPWy[V7:P>i3 *@T !wĘJ!!D=Ao ^3WBnaL 0%HMM!b$ [BS<\" r7(Pv [xSEԫ \Ƚ ĀcI m]lHD;KYD6 n B ~HҸg*T$XD-+ωw!^R $CO2* CxQs]ѕa EL9qb 1qK+M-t${|fIM81d9IÀΑs zyr5k|f{jf)G0$giP^qS {6T1LDYi|.W6љ i4_. v.Z3})LS7}sN 09Fѡ*E> T+UHfj1^9RI`] LVg$LQ2鴴r] !h+I-gOH †Sw-nj=tq9oW-j-yDGwn F~7(; x\ e,`QPȓ+_\N4m.ɖسkνËOӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`)dihlp)tix|矀*蠄j衈&袌6裐F*餔Vj饘)L qiLRCQ6VƚVj%T e:SmE4j['d(b} ΖhF-DF1M pjIaخ[ݚX,l' 7G,Wlgw ,$l(,0,4l8<@-DmHs@L7i14QOc0@M0@dmXO@T@DK4Eo!@D= ,PALA-wFPD4  [Fza`7pF2cPO 4 օmxn]^=P#TG~+VT0yI @K<.wLL=J 5L 8ޖe7zO`SPy)$׷=7cP8y;d O5*nv w?/7N)cNBT텟_AOK9.H2K&:NH=뙥w8]՛H`6[!_D'%ʛc-E q]Fr;'kԋ[֐b"[cDhݑi]fr6#FòQTXf,ˍ!EO`zK{%E|tkRm$ɦI=^%Yh+n';ѢLJ2|i02jIb3A&撙R M%[*Y)DS7l7wS@{sf4N0! SN] #K9hO0F s%F3Ѐ=H)z4\avI<{2 ':@9`8s*NZTr'fP;HX2U,;jnnիir8=n&N @ *j*Wci{ O 7P"'V5':ETVǪ;X= >#աNiZ4\Zhʶ!)@إ$ܨBARIvK&$.%.cKr,OԂ]b 1zvXvdu,Rk^$+"VD!}1Ҋɺǡ"/6p['쓽 &CGO +p0[Uq.મŝC|X ݯ;qxV1S&5er a)Z|.˹A.W*AqrPy\ǻ9ӹsy r/ffoY OQ #=WV> {u9i4-y/"񵫇 4u4Z+[ӥLM/L-q di^EUۑ[C{K>/{9~z{-~12=]ex.)T'勬wXs_jH62:{{N6Uo.Qzg' -5h; $`K[@'Kgȍ<7q3r׻!yx%r/xC_ у1⩫ЉO^?-еxuآ>u]$\dOlE=wT]菑'@+>xSп7{AZmO({+rjcS?WPE{bq>e+F؈ĵKgO܌ BOOOF˫6/~/@IRE2iWtGQj+)BqH5R h[@pEk)(Z[(i+3xT7 .v.'"BD؄6PR8TXVxXZ\؅^`b8dXfxhjl؆npr8tXvxxz|؇~8Xx؈)0mg8 M]rXe F!GjHJ|-7p6ԅ AjH.]tL Aiq!JZa9O1,KdLmY<[?>5ipJ0S{G'pG"8Att|?#UB+D*U{'^U]~,_Fț @ c=P kkJQa٨A ʧg:VsŬgKkâ}Yxo F#@8&9)`3YmOWk\J^t܍UI+L}n UJH )+t{8 d޾3q]gm9ߍd>2 pƇo{AG%wu;΃vKDk? n@HaG-N:+*8ib{`0PBLvM~u¯A9Y.XnF2F֩bO͚F$Uns yd9Su SAkg YQMѱqk bDΎti)g]NUf;%@ׅRe, 2KiB1Mj:AZZX0Th^k^4Qj޵ΟW$Ķy h:J?xG\q?! 5 kukvy-(6 -d&w<| G+ZQXC5? 6չS]7^XE p$ Nv\'oWn|-ST&LyRzqSgƆ:!0-[wzO o`oxΝuI sڛ^3Җy/"nhu>z>,x4u)vl7ݖ/^yם:'߂>H}Zqѓޒ7= 𻸞(L5h4.{$mއ^ί^%,u'㯦wN 3ɹo>Cǻ{W&6jH`{KwMElߗf|[FwiaW ؀8Xx؁ui B!D6!6AhqLRRq2.N&,%+, 8t A-Qg-H.E2LQUAuQHɄtl*Vl?؅/PA/}d)k/H)[pXy|؇~8Xx؈8Xx؉8Xx؊8Xxgk{vIMWMҲYD[ 02IƂF(ԈZH.>1J~,\ZԄ,dJU[`LsBM ِ9Yyّ "9$Y&y(YoO#R*E+O52(O]bB)9DYF9tr@ֱPB=qƸwMQxؒKXTxÂhEMwV яZhaEnCJc%WAvy* UnT `,Gr|.ókr,[yl~dx(LGߢ6otnqA QD"#ݍ&qW(Uj- INhkY>w(/77ԭYQ3bܭQYӚqa5iw|JÙYZꩁmԭȎ.AZъ34? JӠÆ6W-Vv.@#/Ln[iǷ;GUZm Vo)ϓqs_k @bp(!N=ܨXe 8b -أ|}vɸ,*.ɳwЙ\[BA@s\%D橽ښ3fǩp5GʱGu|6ŮsvڔvlxםioDR 6"RM2IZOު%哹cmު<=ռ1<9 w=fn;Z11az*}9Qsi}D;ЏO[Ͼ{._L\RLW%[*}dDI$4{ I!q'^ttp2)~2I !.hHWDFfs1oT*P!44,X1EAF رty,x8:<؃>@B8DXFxHJL؄NPR8TXVxXZ\؅^`b8dXfxhjl؆npr8tXvxxW}a8!K"5aZ(-QC9CC`-DEp8d.Xtlt7 0kF؄[l2GKG U:FaYI(-˱"@/ʸ،8Xxؘڸ؍8Xx蘎"(Z2x0808)!Z9Yi3xb Ah*34,z!~2aR`l4JKLCp>AGd,w'+ xEr*jK9䉎r*(F2-%XqR'3D2GX2jr*f!2-Y!j$&g1iA,(sѢA*K27ġ(iA !#W)-狛}B7VcI TQWYbA0!:9'KI͂nt-9Dҕ"oJAgK9(+R:C3ę/arrb5!/25}:b!,-d `A0Ç#JHŋ3jȱǏ CIɓ(S\)Rd 6ٔϟ@ JѣH*Lx Pʖ .ʵׯ`ÊṼ"ESdʝKݻxEՉU`ϵmIQDÈ+^Lq-ma3k̹gV )?^ͺ[Z@*Ͷ~ͻ&- @ԿKNC)dHUINËOӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`)dihlp)tix|矀*蠄j衈&袌6裐F*餔Vj饘f馜v駠*ꨤ (Z vaJBwɵ*dP\uYʩnm[- "dkPe ,5$D$:[rY1D@m`˅6=Aqɑ\j6 D+' 7G,Wlgw ,$l(,0,4l8<@-DmH'L7PG-TWmXg֯j v\'uAP@KP6 =4 0р|c @6bWwd-#j^7wLݷ.F> =w T9 @{PޘjCiY*~a! $oy|3NA慧tx \Oa @+jN J > N=ߘSP@'~$PDŽL`V`{Aq \'Aoxb+ك` 碛MB6IdpeT^2ΐ,* -!+= u@b\#z6Uc!0X▀׵͋qiL#Ox'fG` #X<,iEDC?ŏ~4/QU~E\Ґ0D1PG!JI(A,0| /c oiMд#v6Q8e,tH")1e(Q 䲩ۥ.9c)F͢ҩ_( ևtt:K`S~hMkT S:0 YJDt<1*a7\pi,o5j٠w۬X*Pv{YͫfzZƆu=hdi,[+mPET ۡr6"iu EHyEM#}{0-}@ 6vĊO$i^t1)q+\q۴.{K__†<"}aRJwF髪m!!bE#ҫ: ;=l6!$O]3z,dR%D[O 5F.z6 =9^?lXw|Zs *0K_6FlJNud2mzbz-csH8Hͮ$_BHޓ"NYBm;` UmmQ;ͻUZ>sH;6D!%2LpC&iNvN\s%sBWjZ>rZ"mP)Paʻ싡LkԗqtGUJvzͱd"zj E 5=@ ZpVј`.51 7Ь#NڃXSg$E+a X%?DBEe?j2rlJ0Of.Vp(Ux!*{e d9l<sN5v:bΖSݵwKR={T}^9`Ҏ7~ٲ0:۽wxƽ-h?Ϊ,PԻ{~w 2l!=<Ζ*`w?> G\?W_q|] g/?V_eg-6@B8DXFxHX\tkJ( !8!6\wH+¶ qa/"+FwEy~A"*l!KtLkGEavDDD4qfd1tO/tbHGV%7x؊8Xx؋8XxȘʸ،8Xxؘڸ؍8XFMH]ٸv4CC0MD$Eȍ!b~q|xqv猩Ru ImhMa$2QZl)֘nKR D0TMh0294Y6y8:<ٓ>@B9DYFyHJLٔNUD"<0Ss" @DQLNmP 4K 01R ҿ:WnI|/<ݧ(T8?zJ|O!/-T l&q];=u=!W :;YqzHzᛊK(ɹPWV^C0:Ec[f›*s1`:ԊQF,RlB22قSĻCON8&,c"f0)ʲI,UG]` Vp=^rHx"GmEo-5[UvhG<qE,|81!IhCa-'L%1k<H#5ɹio.$+(D0)T Z]"]; F|oK.Llh)U,R K`!18**yxo g\Oz;Cڑ'p@S)weґ-!b48ŌEQhv)<ZRƄ4 (3I|o)-k ӹ5 DKyO4t jS1*U*VM=ZQ´Xu*iYг1:sJUatӊ$P+#;LEj&vP\u}l Z%frMg TXy pjV'r}[ȑe+MK>?zsu?&uOSGw\v=PsmHXXxU/9XzܦkÆ7 "R)[۶,Ti v9h^{%l>,l;y7 [3IՈ@ n~7fYN4Aeq\q SgE]$[q ^@ ׄ y1_8ȜC[e_vpc .D 4YBˬʸB?݄f@7}$D3d|27ÙR4w .c涁 ig\[C;:1Z!l^EsPuM݊amC@,h@MzsR.p霆f2iggX+cnSnQ gV9jq+9Po(>_+rA+/hNTjiÆ:Ygrkz(Թ[895?~#F{SǴ-2ndx@;HC=3~@ݹޓ=Hv<7-yTR4K+2ohZB)]8&}uI)ݽ^7M^X?{Y%=??|^=ٕWs3L/Jvc?&#l|ߕ+ڷGgxVG0Yz[YyHZQpa xQJw#{ht|)|& 4Uw.]7p3\7Hz8^;P#s+f8U JgU 䄽URX>IXqGZCo]b8dXfxhjl؆npr8tXvxE/tx|{Ň}(ȱDHq,6tIpo-'Mѱ -bhP.AL"Q&LT/nXFFh1 /J؊$/0 Q.n"daCm ]Ш.#mˆ׸؍8Xx蘎긎؎8Xx؏9Yy ِ9Yyy-ouC=ԑDNӆ̲/i$plX/48r-a b1aeA/'K4aI$K+yo)pONHLhtoxg@ 1Q,SԑtYvyxz|ٗ~9Yy٘Bs7*3"s7I0v;2iw!b ))n2',JqxA,d(sقNRmr-Coh/j4l 3,kk9– k.ёF4(h|!-__.1 0k BY/ (I9emc.r+ 1-Oa=t!2R1C)|.i|i rM0払A) D(0* /Q XJ@`lY/.L! *(0*L20:*RF5*Y㤥DpfN'Idhɡr!,0r  48Ç#JHŋ3jȱǏ CIɓ(S\1R &) "ϟ@ JѣH* `III(\ʵׯ`ÊKĨ &LOʝKݻx󞔲M@,È+^Qp)8g Xb$qk̹?6Z jNS^ͺj3MoIrjdvͻRM6dBgУKQ&RޗhËOӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`)dihlp)tix|矀*蠄j衈&袌6裐F*餔Vj饘f馜v駠*ꨤjꩅ3꫹ )崉w[j*UL[HROTf5@[*MQC:)dP@=i.Dkn9R ݋w& 7G,Wlgw ,$l(,0,4l8<@-DmH'L7PG-TWmXgm-f^kPa_  GA] @L4PL-wu/17G-,,T~8.:㏻Z ȽBr 00`7;*4FN7u:ހ+du=%]7ysn|c+7_x7ӋLL =JkUB{@墳D_8Q[խ~>szc󒒾)OwԻPx^U/yr+ ^Q =W# al A l&"\%o#"Y0SE&`T~AJ:-eZqYN3Jo3F7v_sNHѐ Ga'!1BR"UR-<,X$Ya[[@B2 ;6N$Q&MAb%&"^BiKd b`2K9$ Y&!;Q\XW`6ŃgdouZ] wUiN2>%IzGVuUք/P]26oeJkC#,{`t FrLrW?pFa5V1oD Xܰ|wU1V?δ .qC8V5d ~8( T?x)I{T3 .ypC ]^NJ\NNP C1N6xA!/!d>}>:xoۻV(g)=]E7s4\53EzlҔCߪ8ZqC!\_tYpQ@2٭=q1 n_e"B+Z8d致ҭۨ剛fX>JA $ i[`8cm!ITiJs.)k.qp?.rnjU9Zpy{g $+V(Ujr(:rrÆ7ȓ?'ςECV崫nϱI2RhbQtl]GZvP7.vt9ޯu?*[P/x.{һ;] C*od{7"R Qϙu]|X >|\z/ܿ׌=GфﺏJ]seViJ2HT0iTlz-Q8T&>ʡxڱh!y$RZ'AF HwJ$0$ j ^Dkl@E61&m3aARFzHE/٣ipYJDyTB)Lڨ`"ʁ5D&E[0]$ъp7n}i;QY,*(-!,g, H*\ȰB#JHŋ3jȱǏ CIɓ! ˗0cʜI͛8sɳϟ@ QeB+#%ӧPJJJX`لnٳhӪ]˶`V 0%˷߿ K[؝;ǐ#K`_%Vti0ӨSk\z3Yոs޽2&t_KwWȓ+_7 V,RسkNy[ x ξ{䰷 `2aGϿޫ}Fh6ai 6Y߁Y%߃fas0 _e! YM,(]@leUѷ? ݪ_|Hu#{_u, 'w %pw A )oʑZyFlbע0sd1x,i!ٯG7 I#H t: My Syhħ+AAb:")6^ʟ -^QcCRhd|aхۑZV7̄cb36F2q{ @.|rc#˕EΊ 1G'4fY,T*OiAI*X +V&U# V-i Sl#<%V#y.Q  ۨYMNTD7Ċ!%'"EPd,'\gg/SsE)[09+pLݷ. Q8de:Vl\ʍEЏ!eT'@T&|LE"kFˣ3j2&tEe`Ij&%-~pjWhŭ*Վ#?Z!Q )Dի3D&XGJA B=[[!Wm3)u ]*c sh`8طu |jnX#6o}=(',f1vB PЛ Z҉o-!nsl-EY)V I[l푀~c3W2؃!hQ6ɝmmOKu׻o3 \J) =qJ0I| R7-D-WX!zUx":CVxf ^<״VFliD}Xn.R}X(fbOqQ)c6L=~,S1=IQkS%sK,e&*Vc,{`L2hN6pL:xγ>πMBЈNF;ѐ'MJ[Ҙδ7N{ӠGMRԨNWVհgMZָεw^MbNf;ЎMj[ζn{MrNvMzη~NO;'N[ϸ7{ 9I*׏VS.HɋR/ ]5yˍ2'9rr}j\ ;i;P/nA%[ aU.+"(p uH@$CY;۷@MH@0fpN(ƅ'@wp6+H-*n x)lB:CE =h^ysXSO咞[rG\6~ rǽI2g.JrOz [o{`@ފ$h*e{ďUJ}?d9~w'LCr'zzŀvf~ 8 ȇxZGw@%''X}l|_wug7|HzGr[uoI}h7 t[@zW\wqWy͕xcK'|(\xwyWrKo%}bw)xuxˇͧWX\k|_G Y'[8^sdžJ~{rx{|quy|Xyw{w5( *QLU臄2h'yzP\G}eAuV&P5vubGvuikwxGw&`g~GvW[~X׋ubW!,1x `A0Ç#JHŋ3jȱǏ CIɓ(S\Rd ٔϟ@ JѣH*M Lx PʖQ{.ʵׯ`ÊKV- E@KݻxevZ-@j"U{+^̸!7 !\& ϠC&ijƜyװc˞%IWAl\d"xG:GBn $ ٢iE8Q@|4%I(xHI;"KZwJq<u'r ы%ș8(E-q"Yέ y$2}VIbf^pu$6í=F9 {Q!6GS~ Q}0Sù e+Isd~^ Nqʅ_C|귾~4G_D\#`mpe_i^C7!u~y Qa /?8" $i18tX#/HWs0~k#jBqI0n1H90dP.C1V,fO1+t=}9)7y*@.i1=̭}?0ibl@kWkmq@uj lP~.19Zکztu]mV dմ.3xڱ+np.tVЙ ɹXi#P>{gdJ r+VNy=]\]!nȸbaA%B.T4u"1qG[Q$)s a="񖛍| ?ٸl``nQzN,Hnux>rH?x5ߠCsAumlm# CJt!hEqg! GM޼Yܥ W{{\ 6).x^ hK;p7ޥ{[wT2y'$9 7:VEѡs2Q>Y4!rm$ Uё56'y0~YK䂚7Z>Vs_\bi޶V̤ ]L@5붯߿ s \Lr PS4(w˘3kv.XA^&n^ͺ=$㳆IpxX p)`cģKN3(sݏ.K`vAӫ_>7H:ݼ|uMQSyc f@0AAa$=H[~ fHvӀfU8yu,"gA(@r+Y׋8F DD۩!hHdSd#IF)%1$ W!A6S)fzE`YS-I@GӚM|@7}vi~l6$zO(VzVhSSj駠5$mX$"Be #b5j#(nG *FSn5h :᪚)fmh5kچ[tQk:+mmJkK쪖/6kpopbAׯRQ;Z:_Lex L-:ٹ-JC7,8q)9ߠT2E 4j-kfUTwك@:fQ?L*lHaz2p anmqyMl7ބwhrOxWj͋G~iOGog.hD7P4Z핹tL[p갛jkv츇$7{eI5>6'[s."GQަ},RTN`"O>4пon۝@zүnoM@pJ|ρ#jg.a0zdQ>%@O\(.$rAhAJ sP1 ܡg$ 1uڟ/vAl =w/O'HiK=A̷{`ladX) D d؄ϊւ $PvH`$1oB\R8wH@B$a @(|#xY/{Ƞ7 tK|7N^ =b5]a=yIO`;u+zԎ;n+~[XSD@sm?lƗ'3/G$ězv?+Wv' Gh7yPaas~qy_xŷ e{{x\?Gv[w&zw{x5{wzl? wZ 8|'{/\Qx~U%}|(}=hR~_qvq|Z'Zz7~7z#BXv^zRPcKz7{з)1X||T(^L\Lq~9hErs~HegdghxGwr7X>yEvqxϗw{QxdpXJ}a~FfP!,+U' H*\ȰaBD0!Ŋ3jȱǏ CIɓ(S\i"0c @ɳϟ@ Jє1e@I%H(dɾf߀hB ԡAj(~!c]7]dT($v`A0rMH]<ؓn4gԊH&W.j=. Xfd{7)8ACADjFji/GwLtI3-ᦝJ=9ӕ*6u5ywFj(S)馜rF)򹛣j*]Z ~y꫰asB)#Kaꕨ418j'u+F+mH@eb;",wݖknAX.2R*￯[c WhLF֮NG\l#´)X*`U8"уvig^^1XvA8$NZr#,17}^< ϶.m5nPWʱr:}׷}:pr(`ep2&M5q]Ϫ~!nk-d'oR.G(f^EU+nn:UŧND#봷$&ALm`9\*y\oAs7ϑ" :V'a BN,S#zhO[(o.;n0ӋK4?A+:v=;$I n'sU &"- ߖ~/nQV%='6$ VbZ:i~L[ꞈ+ QX,Z G8<5Ћ_a&&;4~@ !K>7*Z貦Au|"8@~ zAGFCˉڣ#u0JKKbUIK'1Jj cUT g nA2_V-?,.%JVoBdPL_ݒl330Pݤ6J,E1T+tґlNN=&yW.Y]F\$$(CSQ1B593ST 6Q"gju͎>πMBЈNF;ѐ'MJ[Ҙδ7N{ӠGMRԨNWVհgMZָεw^MbNf;ЎMj[ζn{MrNvMzη~NO;'N[xF$co$ xF8ܦՐA^.S\#7HILk@ЇNJx@V))!iAKMLݓI[dHBJ`R^ e&$@ l@BP&HMxo > dW4w M/*8-8;DH[Wv%ޗ~ & )k=/K9/oM zD%@J?,hආNw|=?~& _&NՓyݣ A'@^}b+|W\sz?|GD%g}rR{/{˧Q74||zz^ynzzzpEEW2!vB U~zt{'J!&wwz1buxyr'}E8w@ z{g}!:axy'|E#x;-tgzM}SVJYu]'y`w0xvR7TXI!,2I) H*\ȰBDĊ3jȱǏ Cɓ0@@ $cʜI͛8?DyA& r Jѣ5w 4 OlիXjmxĥ'hJXĥ¯[ʝKwҁM0ΰK])jÈ+&xQ H˘ΦjlG_ͺkӕǦ`ۉO3]ٲ ^ >hE(XaУ].p .'N^{Ͼ$?0x w+z_Z{gz^ 6S R!eC!ȟfxTU scF!R>֟&ud@0A0!㏯|[Ag!tFڒT& E5&IUvU)WM}x0pA9Ht xV'yj)(7'uF9 (Ih.)٤ t':dAv暡ڷegĨ#QZM(~+d+M:,d򅪈(Y\Zg|+DiimMF,{z.{vAX\AEBU/iqVpH&o*p᛫1ߺ"ejSAP0+CwZ3KHE2_P#4%-Stq[e?힒z{qaN4VFc6oݲNrc!Zˬ |cusʽuቶ3oٌoKfۛZxɫRpDwAd)ۼ~4DuZ."}wB{,v;f]m?l:<zO=C<;15siq5ԤkǕܨ/K5+_FLnNHXf`s $hi0_MbK(}xDֽ22XVi7/}*!XIQ*fsgzj.YOwj{[ηu}%#q+]|{N/;t/kE5O`֊jxt[~?S(NWŰ gL8αw@L"HN&;PL*[Xβ.{`L2hN6pL:xγ>πMBЈNF;ѐ'MJ[Ҙδ7N{ӠGMRԨNWVհgMZָεw^/7 %AZv.y/[׶v2 8])Ula_!&ؽu'{ʱ2 LHqUê{ _-$@+لF<8F\pxRxw^ '_PmSIxw5 5~T$ VIC$4xgs˼v)̓nHKQ o|7"1JCsAg_:{HK@y7F R $TnE~z|d8oI:t}q:^JYPye95r}[vS灟oj[7>r2,U ~v++rvBo/J0_l^m{ "r_U얂o[ĉY!,<J) H*\Ȱ!B!:Hŋ3jȱǏ )@˗0cʜI"ɒPa`@ Jƛ2sI& T4JիX XfכDȩr Lʶ۷!n@@Yp LW< 0WbPyLrPQ2`1*YZMÁC`b"o";P}ͻ4f(q/}M.ͼ9)MQ.uνP,%$¨ӫw tZ5xv 4N T߁APFSm·xEArvT(2I6|D!Ѐ)HZ2@֣A5dS$Vɸ~=$@;.e%DgxՑD[yYtt!BN0gGHe9PX huzbe{=i&VjSP:ءi 76'&)lqfg!\%fҊ ⫓ꩯ fs蜱lj:{@&Qmpiڞ )IHZA:~/RAw_N(jhvUkWp[ o&kwoe,kcx˖mf,3e. d?rK\4oN4O,qA6Oma30UZgzt6\.RO -4UݖV5Wtz潨 ُOO~t@]Wtk.k٨۩BvvN J ?:0'˞nqB#+++<"d8IQQjPryܛ#$@_ԱK]GBb6u\tJK`"%P+_D Fz+=x>i%a { ۾ j 1s΀) ~z %fZ״Al{ZV1BC(RiXQF1t5ztjغV:SA(£+ НuM@wƭEm^$KY۶HB5nIdB@3IxQa)m7)I*Q$ wIOWO*rH_cSwxV 159͍84djmGӟuNπMBЈNF;ѐ'MJ[Ҙδ7N{ӠGMRԨNWVհgMZ A)GG(ek3 lzٿMj3ѻY%IȰdk-l&n${ ;kiC T$46BpR105JYfjHoGoG=ᅳa L^K[Rxh};1ϵ-;Ƨ+ԎLY*I4Ӈ02rp.k7AibjN.dD2餷UYGnf[9$cVgg&u[Ur>U|ixe{kB˶t%8*\A;' S1+wo碑c+d;y/ʤӟPZIJ5'y_<'qlAR)<% 7!/h`$]~3aTL _isͮk,W;ɝpcHA*Mi|m+k/.g+Yp!|R @:"PqH#ɟ&b*fAs|e07{@-1~MK`G͐JUKEGzE{1І0E;) R8./(|#Ej2XE8!a:wdAJ861 %HSibɚ=,fL.3N3K9Tr0N0m&B?6()N\7 S`Tts}Mt*[lJF[Ж$Ҕw(DŽ-he)RJuBF5~s-]KjRJu& s3mO=*%OOS)" @zTIM-8ؓ?*t x5`EUzk[OJثBTz԰t_Tl`_jt #*څhpҵ!f&K;KШiCΐ6JjG㊝r=I+l)ׇMi-[Ҽ&ssUs;dzjrw[4/0Su/ʞ)_+oB9LN %'L [ΰ7{ GL(NW0gL8αw@L"HN&;PL*[Xβ.{`L2hN6pL:xγ>πMBЈNF;ѐ'MJ[Ҙδ7N{Z3G DMj&ziU Z!w^s5&Hԣz Hboa|JB- DNGf $ dY5B&=* mM !0`"K yl-`XmwwdH7 q)$lFirob)OH/)@0L.$(x-m Kn޸@Hh5B-D)g=t'ɰm׹ڧs;meYr=_yN{w{&H0.S؛:K띻.Wzܻ^FO 'HmsG<+ָ]n󑤾zkٰ/y/ ƶŹm킷f6'O|6ݝD.!,PF) H*\Ȱ!C!:Hŋ3jȱǏ )1@L\ɲ˗0cʬH$& ɳϟ@nIp# ,iNPJJ"Q8920mPkճhӪY3WZؖX&aQ߿j dȺ'Iǐ^5 .ź#T%K+%@@)`q.1 ړ,^@#Mo w2'ٶ= ,%(јW?ν{Hծ ".E u eS=?| $@X`nIe~6\[mDD:pZW!Tt߆$~6 ҇b0:A'V (^6IRkь8r>`!d$\bbuAY]iPjh )IיxrBD)&ڐi9**ihI J(A}E28P T#qJx襟jVWrh(eAyj@ HvbuhR^Aj1f9,ƚJk!KmtU{&V6g`0&e nިڋ_k~I!e%6 .ŵΊr\h?J!OlaRfikި><11['N*#'D-S4vqFC6#&;gR|IQ;tih{mm#B˥Vg_M.rS/#ykjmFx:4v8ui?/UzL-Ȝ"񺰆Unw֭w_>{j!μc>T ov'm=)μG<}O?> fV7o׻w;:"M~44' ތv!Qm~[w/{y iCbB%v x{ '&z:EM7(X)h,OL`SAA z V5dY! E%F6'πMBЈNF;ѐ'MJ[Ҙδ7N{Ӡuz Q*nɕϏS>u *˚-^Aj-^hv`-l RrX2l;вg!A- R|5P- l[[Ht-$4+%M<7@dw[-oCiT*[ !Rj^jJlw WF"ۻJZxR@NM 8x0>3ot yIo{66)Vֶ@ J]ľ ^n8@:q58]`VK+W ok}f7ܟ$m?~zw¼c\ xtU ȕH=.p"O}*pIj._|l.G]yoN&AѱO{`m@_ge@>]4}`[^SSU'qA!Hx VxT@Z't4e$"clCIȡ8"LqDO9y{7:UVD(GT#LV <>YYDPBXה]~iB66X򭆤gБ`UA)#OrٗvQ1a[*9x'fd"'g ZOʖ)!_VTfZ%YK'a&A"JϹjS{f kZgG-j* [\mZ贼mkZyw-ki2cbz] P4nlꮇ̨R$]YL1ȪY)cz_PV-~jʧ2_"k\L'.鳵5J[dPoV}|V.:6z55M<壳l[+P8K)tĬw1豄Ge7su˧0 yH:IޘfY;muLu&6녫k;E먬@}S*bR);Ӄv iL/*-ԦNOЁ\T$JɡvF'F`~ yN-MHԣ<A[HjMJ9W3r&jZ*Mzīn2ï Q禂Eϋ2O lԿFqlu7M0 [,[ 3l[.N=SQݵ 'M']J$]H'+eKnıMz|Kͯ~LN;'L [ΰ7{ GL(NW0gL8αw@L"HN&;PL*[Xβ.{`L2hN6pL:xγgĠ.v>M3hNfGhH#Ϙδ7 $Bj J% ij@MuGJF$ C$D vlRX_Fֶ! @u[IQZ,ǖ&b[ڤ@mnk[E}Qt _5#CjMr'`ۅR7e'@iM.[ (ɭ J[6boq y:&Vv q>{\m87Fpd֓@Oezm;wrq|olN@GjPz#_+)._wj=RvpSus'ɵmp:S/y/8v# 5Ն&mOZ)u[PoVnYsēa_A /c$ !,]E+ H*\ȰÅJHŋ3jȱǏ CIɓ##T˗0c 9ϟ@z&Q*L, ӧP{(ɄD4Hiԯ`ÊuAM Y36(`ݻxQ8έ4ZSڮ]̸ž\$Lۤ :̹JqHA<=^-eĠNy[1e2/yͺoq`Z^<%\'\ͳkطU{xNNGk5L%J  X "<@j SSR=& AU՝JFISD9!)d^9R I$_^V)gB AsYPWhu޹Y;%hSn}6xj{֕'y)Rnoz"K*EPjz+7E͵)6fJ쁪JpF8 q%bD19WWgq -oR1|u%r /m-|럗kx hpo;%ۺױ7k-D.zĉro9|zNW],#;ۜ"h@h?SB3lC?[0mJukmbH꘢VKP[W#@Z퓙b춀;/ܦ~J=3`W..3*31WC&Œ7v4uNc|=?S/ : ]NyԟiFku;{XD*-Vo~g%pg 5_\ӹmhv ܖ;:ll6הw6l9 .Kjc]@,j*`ӊ! Au LV g8xS ժ6f˞>E.~$ĒvxEzB ]/ZØY& T"1")|՜hpVzc=0h!DŊ7 -%vqbZdYRmDdnOdG-*C3.[5ꒇ/nH| <"E+8vLLR?fФ^!VLsI ')lXR NvR@;09erLD)wfR~6I2,>jbӡQ(AvPG:Ĩv4*тRHhEt &JM6IRϘC*n) &uLA HX9L:թʔ|*TSJ*SUrH k?2Բ6F;WJT:ϭo5jZUjZ sxeZac/+xbv~H?gA7E:6dk' 6^6 "C+~1Ń3Cf Vs<+[L-nW6<-(ĝH-nLҍt)].Jhu%%lwwKMz'|Kͯ~LN;'L [ΰ7{ GL(NW0gL8αw@L"HN&;PL*[Xβ.{`L2hN6pL:xγL {I@Q+N)=n,HƳ +'*huL]f5-}'om׶mF;}\F{?Nm~*B%<}*b\[FQ_oֶ5y.m[ؤܞAڸ !,1 @ M J!I-Hŋ3jȱǏ CIɓ(S\r0 $$[HBϟ@ JѣEg%R)I%EҫXjʵ׍[p6PfK~]˶۷pn!Zn&ո Lk{-xb#KL#ԊM;LoϠCnk3f $Z2ωc˞M{%)HDҥMa>F|ȣKNسkνËOӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`)dihlp)tfEbC W6 j m!NiK9fSU(RHA4bvM!ŘE ꙧTg\ CzBT0SjZڣ2k9A'ܲ.ܫQv+k覫+k,l' 7G,WlgFtLs0 @L<&;@lM[_p,)l!jP $+,`_\nlE1@\$*~JPj%nm1:V `(S*Zo{T,)Ԙ j DaS#H^~x?I"I)F('С`B@@6/< 7l1ܘҹjt5ɀ#`8ѴcdPeV\+-O3gx, 0Qd N$z{R1 %ŻQw w9h@Y/q"O} RZ촒9I@= (VSХV$2 )z'2^IRhz_P]cͨ|GɪAfճf՗>;zmҕzQW~iFt]]~ZΕ?aaUu5= gjE6\rq銼\nlT)2]tWqrOz^Mzwy*ᶪ-iapQj-k.*hS`28zZOu΅^Q9ȉ#ߛa+e/95'-3I@Po _2 r05{C^έnLʂ K9jALˬNDoPL PTԹeXR u8v}@8zC&P) = W~A$fׂL&__|d蘋.Gg+ѴZ$e48, GQ ve&ZD+j*htdiJԃɣ-mY.ZS:e3"c6*:4J^- Rr t6m%X麿 V{zsx}]=,iNBA o>Rhx{IxL@Vaz&- CPiȋp,u$c9TDN:X1lK _^*t`+: J4snJAJ]-Y߂=>;\IiuRT\\7){NspKI^$t˽|WOQ9 ?o8}^y☯ґOG;R)־١1[H{5IF/@;izq.e^3mӊC+c^Tӿi}t[H}vIk$$%#$Jy>D85x|ap*Hڤ d'[VLу\EfbVze^ml8k_!ort)'WXazXHf6r'g7#N2(@DBO)wGQ\2+3qRjhmf8A*CW!x ihiA>x-r(eBeHAQ ptqQqw'XjehIдiA1}8kxlAUȎDQ8⁆x؏9Yy ِ9Yyّ "9$Y&y(*,ْ.0+?d? A鈃@PD1A+/q,(tPq3TCrip)fiiD!dU$Fh;Ar)[05ǒstuD(YaђHNȐe)Yy٘9YyٙA+W.ɳse [^ /r '+陸BGt̑C*+”tAs,@wy(xhABAArBRGT)+xω͹~g)aF) h7*3qRoV]8 AX)ĈhKqfީb0!!Bzv@ӫ ؕ2軾^RpwK}S k8@(i`B ǞQpQ>%Gy*!4>b\Mc@V..u!X|$j*8ؑZ]vIR{$y`>IXl(Yhge٥i##e&r9S_`!GRptn݉'DZ%Y J:dyUXA+Y ЄPN!@vxR @]z,E@&+cNhXFǫ:8_Z[aJ$_ 'Uۚ ǧr.pVf2:2jx1+aCLLuMM|ӭYv3_ͨ2Gnz |ߟażqΜF[t:E*{Hعd%:zLA emB> Sn Juy.)SEJ{f2(&V.5hj޺ݑq_ j*41@+!iTIKҰPb*b|XUR2 EMM{qK Љ6E@R=+,9D@fk{׶\2z]fTa[8Q x^&o{r:WwyE?7Ut,޷1,s<U>%Ժd,QV-rd%k N-n(ZCKհUyCk ֙) /B|ES=C4UG*hdzzhAјb i͕f&ٛiHjAis7>uI5eԭS|"X?vm=]MbNf;ЎMj[ζn{MrNvMzη~NO;'N[ϸ7{ GN(OW0j[pgg|y|~n ?'c;Pۅ$ 6E d)[zm%2b.ًs!HBi:'$ ) *MUIH7!x cW6\ox/'@@| %rE]](d'']oJIq2 8-LW9}N*wnB RH< /^!Sn_7Ov/S+8_H rBxя6A?/= =UwiEy]'yvx]WNzO}xg{B'4xd~Gwz. <'x9Ygvd Rw|.1QduywWrx xgP'xDl'z׀wujuwaPQzbGvav VV/>wsuGk!,0 d )2%2pM JHŋ3jȱǏ CIɓ(SH& lIaL$lZɳϟ@ JQIK%ѫXjʵWRdau* ".I۷pʝbAVL`߿ @o{ #KLc[R %8oϠC{8:#%-Ѱc˞2T8v)N/L>0УKNسkνËOӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`)dihlp)ti{ $B =؝&`Y  NEgjxڟdN]V酉>"7ʝafyFDSI0STA*RSgo8G*\sBkfv+k覫+k,l' 7G,Wlo(j 1!0PD4D!s0@*K* -˖\1@ 3Z, 3E,2H`P $3L 03ə\@q)3}qLM,`tE1Ͷ84Z=gwemQM6*7@xW~s!1nQLx=9O g>D#ݷEH 7۟TΘ<J>DSt{Gb-뻣TP7P;ɏtqjнDc3#_}K3%-ӷ>ﭴGO@:7Q1!&ڲ*ZIʂ罬}܋$ & [@)"I4јIcLTe)yR +--!5A%-2MN󲁴f'VHx%w "L7DIakEZ#HM$'EDgNUĨ1BpB2(5A"ø@[!ؠHh E+HњJ%l[^FI0EZ!t=e%cHB22b/XҒN]sFĨM2p(49u KalV9c L,+9l4&.J GX!YH-~DOr#mX?BǠY^|`4T8e =:M F*q^Ǡ -01~k,{Igr7Y4n)9kɲ9)52*n j QNC{`ftp9V 0xgY[WPJAD?]%]9ʑ, JNjfIީqh(FE[[!#%^d:N-T0M@T&5V!":B3}ҩJx"/,%42TQ9A3>4B\8F\G1df9GwNf! HX#ѢRh:kوoM}ek:>DA~A.<%ThAu;,ꦾM"щyn)]D~`dg4T}3VA=YsݤwHϠ.uGZohO%&?~K?rۥoRM_]Ƨ%8?eҊ$ttRa'E `#o!"9Ϗl6Ókn陑=9Jb88%,foݕ7a@?s~u{$R%TRq`x%Q6$o񶞷-İ`Hj;Iϖ\;$w}3":nn3{8 U1/ɋEw%"G/rBII/@E2+;AI&34O/P4i({dIq)!tBAEHCJGVtjN*K1BK )zWIyq[FkH+rӲQtCGp<xJ(('I3J≎Px:y6'N 4-+9Fbc]:Aʝ󭆁hQ' "P7` IW*UJvqu2 @CJA) ]ʜQ-W㣁IJ@ u.{ڭLIzI5(Uj8 0!,/ ` M J!I-$Hŋ3jȱǏ CIɓ(S\ɲ& L@R  @ JѣH*HS$28DXjʵׯ"uBIp@R]˶۷k7L谪@Lr߿ 3=tǐ#K&Yn-IJ@ϠC 4ܤLѰc˞w.l(SfD N|d̘ <УKNسkνËOӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`)dihlp)ti~ $AmA Ibi{TZN$([upN.T? 4Mi)U] _ZFSs>xAdfMTi@f1qeekggo *Akfv+k覫+k,l' 7G,Wlg,@U[4L, GsN1р$@ l@ sˑi k8,@k@ m4@Kܴ0=xND+3cG@rh+Wt8/Ef  @AMK߂@[=6Α~@$ ܹQ/[5rLw'>yE%~:@M|ıHP#%)W4@Ed/_1y,uP`sܯD({@ڧoS7x.v !C2{Lh8/I2(d' (:QdcP%O(pl~"H" AKe6$.2aPPS-`N&rHcRP䈯씗Rz(5KZ `$FLf)BB&EDo2Vc&f)' b1D͐@$ esb/؉LX Rc $>ʽan&S5aE'|?o Ϭ=<4^fp,T:ʝ!'6jda z+,j_|b6OIB!9I kkJQIY+KSY0buJY+YPҋL"6/H$%{O`7%zD1 G@7lʬM* DVE1m>Fr mWV@+-R)S"{eRPOL9[t+EK#hazz TL*~lDw~]%E%s ]sʐtۈ{7o./:sLr.qnd߁;u.-)n S:tX 9/ s=>:Nó=Ǽy)+o.7^;nXonK7U%sV9;~9k.ݦo@i-b<M(qA%C+\xI%@XS[jQڋ%DRbnGGz7#}BrvIr~J2w uݕ+r_NFL{8g h#bpOeh XV>g"`AfVb0nTD=$Jt=xMwDW榄`SeemNHHf{SL$|W_Di[45Fs_XN]heXO_twiӄm8@U$Hphuzx}DugEhvLxQ?(9M7E@;hB{'n$=@e=rg&K(?%!2)&$z*E\G)dgJf*Ig]Qd=~eV *a[S-DT@B,rKAhR1EҊC?''8Qo,U!s_tG8=cj!y:ȐW$Qab6a6v*#3 32>D3J#* )5cǔb3!):8&(9S=1+ÓC?AZI)p1A4GY=Oyb[C3tVG\Yb9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘ {'4sXAAqB{&)tCB :DWj(~)z($Y_N *EajA$F!lYעh)(}kT.jS@!,;, H*\ȰÇ#.pċ3jȱǏ CIR"EJ\ɲ˗0c͚ 4`€@g JѣH޼)PDv6x@Ք Ԛׯ`ÖLl`0K$n"gsT̏|s@H7!yjZ=13&|m~*n2t^̵[ ǎM&#XzgS_Ýa+&g҃kpwIs yVk/~ORl+9 }gԧwټr.NߝX0xiرMtN[Om7Ux7o穲n}oO״ }V/{%qغ(_*2&SIbR' Kw~r GY,J>v:H:Fc!( x6a'VIB".p(ԗ"),|LDQ&?=+YU2UD.Z!M2 De$R;=kl^35##]hV$]|HP"A9HQfF亦wQUSi!Irx{֯Dh峍ɲrb)h4qHF2rIO} e4 n9-6!qϧ4RU P%ulLJA ;s3I@@ZFդPvύ0eSg Wr Z ^V ї;/zd^MUIL9@Ul[gMbhgA δ3Gf5,iMjRu-X `3/l%ȝyN3.C:ZJ,igyQxv{Ĕ' ЊVRɱeki&૜$}ZR·=tXiK Yn>L=>ә঑W)/j釡%rVL1kbmuA Yrx&Bvz4Y^1 'xVNFi˷*[1ٿ-5q9̹!w߼+ә f|V}v2<@wdž>DxVu*;dIŖ_YLӞN#bP1u65&GskYWֵV9ӽՐ,u唄Q._cUmyrֆ4O-o{y69&{\_>wPr$wÓT)_toi.ӱwA")%=fixVo3\̢q;*|_A= Mq̠e qJYN'|v6Ϲw@ЇNHOҗ;PԧN[XϺַ{`NhOpNxϻOO;񐏼'O[ϼ7{GOҟ (EzbaL*{ycԾ7O6%ܪ$P`J[@6-lwn2b $I)?-H d(Zݗ}~lAIPW`JPb7g7I@~@'W[p'RY&e\oBQPU!h YQ@(~5!xW(PVxSu@}~E8(Uǃ|7R@ X#Iz9xq~d'RX_U{q&e5緅dZHi@x8 EÈU|hZ(5l3ڗ@'hWG}d0S`ETX8(PQȉG@hG51w]~|UG?WdXև} }~?8~Lj61~G8o]F!,C, H*\ȰÇ#. ŋ3jȱǏ CH (S\ɲ˗0=If4)`1 Jѣ k*` >w6X"``IXjʕhɚ}.T`%;}ʶ۷pxΛe 쩓A  3/L.+iϪ#KLY1JPd4>ʨSfy`+&׫sޝY*O-X*Uȓ+[oL&%YY˳k}U i5B;m.Z C>=m_Y, 6~Saf!J^O'A!tqFͽXCd+h\-7/ɸ_(}F@C6bOXT]Hb$XR %RTZ)ڑ!AXВl֙\h5E^ RUi砹9'\)Nf(Af Fel}YnaVWp&*'ArjjVdĩ墄M1=\iFWw֙h`l~+e.+-FřЎ*ND:#j~knCZ֥~h.ټvjo ﲗnw/v+{~ڝ2^5MJkp^jn(zq\Z\&@0rnn˛ +*Я8LQ6s Ej-~ 2x/^#XM7ZPNc+6cW .頏2y[UYfzk6{a޳B9;Zӄ<$^󅮎} 4Œj +_Y+]>n>(h?&*tťmh? (^{&y$d d *X!0"g׹ I^ <jQ<: 65*D8-XBJu4%QV+*I '|J>/]1O= V!׾<41k[íэRB<WGf-1a^\c!8|H"D&1 MVd8 ɱ@93vAnxLQjs`Ge}B`(CU4!){&3|g;4!WĤ'Y4`'3c=]0氈7Bй2%Md'rHkqb-5jc%wER $E+SxZ Ӣ"@F7DQf&+RxIK}6K"?SJ J©N1:15ja˝OaA>T `F)R5,R*biTSc̫R(XjD ̚BFk[׸ I" JC c+X!2Kzɡ gX$`u_ Y!:?FBzJ{el^T҄ind) eZڙ\R~ۿ%mvXN5[Eu4*mX# <]GP:wSQZ )qYj*А~:= MHъ-D=vI8ZxCv]LB`Otwĉ @ʁ25$,/Hw;q>Pi$Zy3W(YK#W|Gh2heW@CD,,!zR(}:eN:j4MRMRRPƦbj#ѭ9Æڻ3(:5Ĕ^ ӊcݱiast2NO6%m`fۈ|2B$(3pk6gu+׬-W{`ܽ#};`-`_fgLp+ڻ$ 2s|€k x6p+PN.@ir{324MOI)IMm<2OU>h>G"zT D'*%җNŐ ':h4IԹNvaqeOpNxϻOO;񐏼'O[ϼ7{GOқOWֻgOϽwOO;ЏO["b$h,)un~џ׏O KIȰddW4[ ZRp'#G|dP]` *34%X XI0VvqցDWpA>"#X/XDU;VmDF 700X/SЂхR5V_2BQb8I6p5sXsXHsS5+C`(Lx۵H ~0Vv83Q8_e+(1`@CXWs8Hp8>Rh(F3H\Wȅ:X"\8V(HdRPR{Y7h'Hn8L8b '8FH؅ƸpV2H.5oHĥ׀H % 5'9x!,Q+ H*\ȰÇ# ŋ3jȱǏ C$0iR(GʜI͛8shA*L^d`w*]ʴӧNMx A|)(ԯ`ÊV^yDr%dʝKCC@J4˴v L8cRf,h5Կޮ,Lˈצ,IӨS/ tIUMX X&%o N|!% P 2-fMۻ wp/X6 MYF] wb@8^gRU`ygF(T^S&fVn6bh"R&Yh_P%Wp(cqW$Ψ#~9wcR0($yQ\8j8䒶\'@A2ie#*Y^WvAYMxi&e.%g@̭IeRiSirZwbRa6f~f6h6Ziyژt:ji爮]FQp&YX ai@Vz*^9W5(%+]l(а St' Dީ쁾vk)வvY#=Jޘ -.*Kᢝk+Z@!t LFUЇQ\v,r39`H@񉰉ƹq0]t\ Sh=5x( Q{'Rc# DwjZ^iE%E2)Hb\RS`:C CNX>F^J*%._DuL HA %`LK~ 3s9΍6LhnaI1A9 Bv &9T3(=9na;;= Ly!TAy:s MI0}z@QFq,01 ϔ3`bD6Ӝԥ4#?q ):!WӼyMD6Y*թV 'xS X5hp-)Qj8*V™u=BXzB Os-6YC ʤJL!i:*2pg Ki~ds'!PqjUm1Emҩ[#j};Lɨl-o8Q(令CjEkP"'Yuz=/z^|n b\kGj.CX=ѐ`2P `xa"}1v+h%X?St,/'I51֪c1s+dE& L^+QyKr/e n]~Af)k8e&Ybқ3a>>}RuB6Jj"Ÿp΃` Ml3JzSJx V l>dKDIQxѝќFXFl%K˘llb(X" #dV'=HfPo+&83fb egqgMku?$&z^ <*87()Z1mv5Ɲ @3\JPC (^%+#)lXI$/ IIQ2NJ/}%9xJA JD){bO۱֓`0S)@[`P&X9US أ!#-4UWUOp9銼4&:OX%BJ7դXze%-Z_ Rڕ ܕw졙< 9 G)UU+j 71V;9cgucؽ$l|XXn.=X2oqÖ`B0䏕bFĖK}W9et\sznJcvhJ/~ooiFW+{k2kJ4D>uUՀ4 k Clk.޺׹/{e` .ylsBK 혾*s imG+1TMT[g_T wN.ʋS-:7po&[5NMr#y^^;R)~,dg"/d!LoeqKXD<"n@ЇNHOҗ;PԧN[XϺַ{`NhOpNxϻOO;񐏼'O[ϼ7{GOқ@aJC o 4{3H^$Lo=O6U )aТNJ-l IxoAL&g V[Ī&NדH@>/Ɵp63q}>hu~'c}[ZodA@~ h[''2\R@4} gG'p7&ŀ[<(GSS4zRR>|RRĄ3A~McEdBwUME~QphxZ(c cw/}tX{&M ( `S7}bHjn$(=4׷ Tj(iVU]! H~JRZx6dhI||ge}!87c&E}6h|v!,[- H*\ȰÇ#> ŋ3jȱǏ C ɓ(S\ɲK& |I͛8slO 0@H*]t'>Pt >5Hׯ`ÊU`ړPΎK]edZT4``ѻ+^쐭Lq%Xe̹g)v e|"6p?˞Me٩(hyۢF M hhdǣK~hP= 28~nlZZ#ěI~ c iV,1{짞Ɉ& ʯ@ ײ|Ou.+4Cr7/]7hXxu404A6)&7]w=|+9YLLiO Q&?D/|'y*睃*؎sTu#κ ++biڇN'pqٯ_ ljY,98%i`$JvQEl )r %SO.ZP%5G%D5}{^ ATT{Be@HHwR@ 'GsTf d~" U|u!GL H†G}(X_8Â5]Rpw!^5&Q~x[|XHA5GP5i؀ D ^Ń$( (Ŕ}$hGGǀ)~11}'WLlu}D8ݗwh~g|!,. d )2@J9(e&2 Hŋ3jȱǏ CIɓ(S\ɲeF2I, !"2 Hѥϟ@ JѣH}J`& :4sKXjʵׯ[>"ā H5- ۷pʝKW妙 +&Ԙjݿ L$TIȔbމ3 KLem -ϠCg- %lHJPώM!87æMGeF֩|ȣKNسkνËOӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`)dihlp)tix|矀Jn1$O&@j5-JUm!Lm!TUg(lTDkejPN;eպ I=︅=L5q3_ B>_G.>\t)N@Y0 ?R[PM3c B&o ëVXᭈVעJb1:R27j45BYP+:aь6@,QchHy~ә EA!D1@Ziz[tʥ&s!s?ouM`4 {:bw+#9& bZ\ӐlFH{FÅh $U0 8.\ }f?pG#|' %O$κSЋD-'VheHN&P0\. K2d075Җ]<4L&'RMW EgD꬈ƀڜh+,see<2*HН@Hs._σ:vOsyQӱӛȡ@_Dq/e@YDN'k$)5Q$RJh>4cg>С^)Dtj)5흴ikAjMνrf[M2n%ZVW̫rg VqA+PMfj浌~mYOՓ9bۚ&zӜ-e:_3"ْnOQW64$Z z'y}$ȼ.85'MFc٥lzC=l5+}`* >7b]ôG/)֖k'eЧExh+'V,ݫmOtz_.t}{߾ x) JCr 7ϭNj3t X[ #nE(aox`_M]]+>vy `2z/ƔуV+2.cT{g ƵCYMj)b`mq C1N*PZbfE32N <7N(Ғ*YEH,3v9:ٍ նߜOGCЁqfk i3\Ҭ!tV?ILj[³?#dEХNUz$Pݓy2qO +pIlk%BD.! NJn@S@̽8^Ѓ!E+T\q8w}yV(V S/6Q;V1Rbv*/1Me5¦2pG,9jX&P&21GkYє8_SH6yRYn65"j :dܢ>A\~Fd'9MkD219Ya$}Ț-1:2q#9GDa\3͈lX&98s9yW38D8FC:dHa3A8ۙz2YXR})9Su823)rq5ML^8T񩟒%?Us6#7J F^GdHб9]8# B>)&z(*,ڢ.02:4Z6z8:<ڣ>@B:DZFzHJLڤNPR:TZVz*Z@aIrKA~ 1GCU|hz:xEБq:x _ip$OїF)yjO(}D,R Q*NUI $n^XjJj*Oڪ:Zzګ:ZzȚʺVIVW|4RFGx:#e"Ԛt:/!񭷚̺ڮZY@Ify[@qҘ3a@r*8a̱ Tz!uA*2BaErdhȰ5P!I63Q@A,0d!"mqhLCB~qChr)bw8!gPD( \ʑ{2-*MQqD~vTb*6H6!PVrFZT!q@6~&TB282azjy"TU 1so3[I!G*b+jTuy!=[Do4j*Xk@D VEI˷ ۰LTiLah[e K\OAwgz -A6.>#9: SgRi fN(b8jjJ 뭪%kjyzKj+zQ kSRp &F iGXp٪l_rk.T *.i{@9mbiӆPr!&qtOGLR({4@"ʛrmflAe]|liX!0g, !<Y@.>'hIG,/ laQ u[*Pg'/LJdPAqd[ F,UWP z ÙI铡pطÚ1OeB]H (mvTXF2A銈YdT50Ҋ:Sqz!"nj4^Jȃ><7ֆZ #߸95 գErN2:#a‡M>ٚJln],0XJSr9c+H(eInQJ8{$0C"Ji\\*ӋX4ub3li&Kس8Q>,1ũ/g!;)A:F- +|Zea6yk 'wP \ M-=ʆ3E5XL)Z!lBryCjW47QjCHcZ I6S) 'Pt@ MN? "U<ږ 䝳MN%Pvl~8}ƛ&u9JG@B8DXFxHJL؄NPR8TXVxXZ\؅^`b8dXfxhjl؆npr8tXvxxz|؇~8c~KsUT8~KӈH} dm0"%5a8XyY˵ [ X@IqCB(H[q ܕ(#2b YB @X e-.Ќ0^vx~2eb[t[]8pYEAUY!)$A:$7-וh^w@6&W) US~qƞvJ1Hrg}ua2Y%nb(K-҈YDJDfutTu+{>ZZŨj֮E !fVܰMEnֆ{YDFn嬲ѶkoYx믴Ț9 $H®Vէk,*A?*<ؘBem [#Ir(qAz}2{)<@kȚk]Uu+t@'M؛9kY*-5D4lˁNuB4Jy-=SӘGϥ"h/|; wʓ ܬҁ{Ȋ EGmD>LaۻҮ-,<91J^S,V8ﬨnj+n;B@zWޙI'_"wf'S(}eqiH҆]JӴ&қTrh "ZSdk醈&JP$"q(OJ4mU$U˩3).u22bu*XbM`Flkh{5++[Zׯ %zH%VJ E+Jr0YWx(vI"d_Uqư?pYpU jzCHA iՈZ|0kVKSCkᖵ@k v ,qɺmMyk\&EY-'J`Rhn*Z3Wna]/SojWX}@;@]=0Ͻ&'og` ɻWfr[{Hz|CSNؾ].?_G-cIܛORE\qm1Ic-,hm8D/nq3oHEH /HZ ypի<;a]̷I.l?1N *H_>| dqcv"]:ŭ0#$Ѭ%HQXyNFt؂ kU#T@ LM2329SLXս*iI\LH/cz$hK(sʪj-"{A&۟l7qNcnH h˷OnjRIjmLe:Z[zc\*TQg<66[=˭A5Ý@[|` %z/tŧ6,|p27B rq;F H3/S @rs=x7 _]€ gtwb%>˥hdyMBnj!,gfĩݥ $dbV=}ފ+im!%9%~~&]\a>cWhw!%a$Y?EA[ww+uYGS''E$62y`!%QtS  (w}(F00aw'8d,uQTE}.&4\EQ=ȄnKDJenv)GRQ"az`Ze ,X$wa,۷~ہx3ZVK)'f@Yeu8$p^vIq*!/[V!K89p՗Cg ҙ@ٙJL) yDgzuI>y?yt#SdB0\dny9 c—G$[FLf=)AlI9і륗 < gtI)녜J4UZKi !jIVɝ)SiLy)LA0dɗ:T"),%!9,0t2pY7);5aBi)=XE!,C, H*\ȰÇ#JH@3 ` XIɓ(S\ɲ˗,3j Kɳϟ@  SŌL 0LJիXjZ(2@gZATr^ͺ뗊/X "6%_ Nx۾;6YO0)Ҹ?IpYۛNUUc Bs NGO}s V f tEWlݧ "^SVPu)yfb6Y@QӅ P(8܃Ge4gt7Y={XDr5Z}sXXEF)OEXY!MME釡[`C`d~_Y9ilGp!'PuND!Y;6g9e~$txfzyhp*jdg!@磙",Ub^j Hb *pkw*u2JN ̥~_5QF!1 JpI)ۖڤL,k+U<桜ɑu9ԊN!(閘onfFok /ġ;gb,򈼦kNJ5a^YZ7),|6,Z43V['[߅ [ILTwAӷd3@:e]0PGAnf!2}݂F1/z8ƨz*N1Xq oĶp/;-4q8s[oMDz:)y+.G;{pjt~=S7=:I@Sj1ȗˈ X^i;wr3t>CKj$`g _Yp@OH1W۠x=IMl"eaPL2Q uwWnt ػ!tچAܪGwhCdPQ"\9Qˢk(QlMŐExg">¤21r47;$ȿ|FTA)2YG? m‡YoBK6 ֲ< SBNWM!0 [jFNr;^@@M jyLZ ) 7Ib̌ `F\E6g:S+\//{ʳx?@o,M Q WCe x[Nr3ٷiȲ{ibNy;ݡB[]qdܕu,v"Qb}Q;84R0b'HwŻ1O+_"8HFkXKyI>2 e|AG^FsD@ ƹDHtuo&\W~p:îNl $6ng<=>I细$m|#|/;_6FN <.Iyj 9m{X^gO_lVeeSO`>ox *gY d}?HVٚ'> !Y 1*mjIdLu]P&MG,kII$?| N`h;A1owVIRuT95I #w%Dɟ,vZ `D<%p 'ɒ@3T!,) @ M J!I-Hŋ3jȱǏ CIɓ(S\ɲ˗,7Id  lq ̟@ JѣH*UY$ JsҫXjʵׯ'wni(0g>˶۷peKi H؂s$:È+u `˘3k_g60geS^ͺuQ m`jg%ͻA U4;K&pУK.ױ@֕gW9Ëgp_Ͼ卟Oy(QQF 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`)dihlp)tix|矀*蠄j衈&袌6裐F*餔Vj饘f馜v駠*ꨤjꩨꪬ꫰:XD `:mҜmm!InLmQj*@eVM>k^U_vU4}T@Ddm1DJDʂiU׼{!Dlnܧz$e%AWtZ\\mq<w(q)h*Wql8<@-DmH'L7PG-TWmXg\w`-dmhlp-tmxUη 0Q #0> р9Lhx 900T@iWHT01"m:?a&K';/Xr}!@Dȷ[^ٯE7zlk7K\N08$_x/uɝ .#S~Ǯo j7G$'*¸!a@bؚRrt Ab8%)[ )#JWfٔe t.I/Q]$,)PuSP-!LzJ( S>ƍhH2% qRJd&ٜy$ *h ej>yGQIڂpȐh0R)gLGGcqR,(ʏH=uȘ]`<`-l(l$#)Q*N@L}l$4Ry@1%O!3%—pf;$0 H%s$e.C ?yT@3bM=_鷈ވDRv+$vG5 kĀBپfСT"zhδ=$̘IU]#ۏ8P=}C~&Dž4l!1q 1zv~iuݴsavyݛe/K*9@mי?TwH-Wmnic$p"Hm$aIW r8˩ 2Dɺ,z$зV{aYkbaiWX #!8($8jvHAx` 7I279ȸv@džƏY$D{X6aGW;=h sy[nFDB$HAJ R&SQUJi成 B cXa8xHthiA {XmݘAGVFlDw[_)SUm -Yo*FOHYxϧW(i!VG622vHih9[nփVKH>PA9ƣF⫱[þQ3V#DD>#8:{˫﻽SCFLGf^@!.Y|s8qˌ9 :B N1B(H-e#d0<4lf?a"B|;\H1ILNPRD B h Fb^2:1Ke19 (׬T  r2&1zr|j1QLM( !ՙ-";-̇DjNM, i0Ǵ,O̵v`E5"w$KG4o]ȱIIS8QbAwI"%%}/3ٺ8( 1"G.j.܂'ItMT?8A2 qNxӅ͹}OV! 3gqV[=|t˷JM.j"Mͺ]22l[.1ӁӉA=RP>I)='=A31!,(* d )2%2pM JHŋ3jȱǏ CIɓ(S\ɲˌdY@ʖ,@¦@ JѣH*]R7Ii <$aʵׯ`ÊKvdZZ@BPk-Kݻx CRJLuÈ+^Lm$:#,"3k̹gk:>Kp`ϨS^+[斷[ͻ!5´P8Уk'ԛKνËOӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`)dihlp)tix|矀*蠄j衈&袌6裐F*餔Vji $B =$٥v&S[ j $ORuUVgl[< Dq]F DizѰV,9Xn9vZϪ9NF$MVETUDRmPaܦ\Y]v,l' 7G,Wlgw ,$l(,0,4l8<"tl m4 I P0T$tN3 R Xt]S11@f 04@mCwEx6ށm @>vmQiSùL}WDݞD`>S+=v}٣7}9rI4|K5> ^E]QP1'9QWEK~wp7k,v{]Ew?@zcQgp;D^FA`dG6T" ߊ ҪbsقCe S@5a $  & [@)"I5D%lt[Mh* Ts(' |]٠QIT(مEPԡb'vH'q `|8 @ r$6]e"["QT9nuKGuI}?](I;Yu=vm$QdK$1n2K3]{Ὕo"hͨC2p{|߈`2%BPE\lMWItF9\g7 |1~ dv(r,Ks}Dn; yE,E.,rgZsQºxnSYlKߺ0F@i1_4ך#`?|D,~ayϭm'WtMVzUt3ϬA?-uk9OK+>1rJoO+[y[uj˽Vmf;.ST>H ѷA. ]Qw3"8EA[3ClS,w=l΢:Y蒈z_ V7J2GzP36~k+/ykNTۚ"i~_mY̛G9J/EJc=݇+q)+|r}JuԚޠ;wצio9i x>BGl)wZ&Շ.۞m\1xV~L||q#ouGszx ussdL7us6|&j#`d Wn|L3P&TL0_4 .o7jhosgnL){ GqkgJcLxN>]ehkbm=sJ7nVvios>x6 kXG0}f:Nq`}wfI9NP;b3Ygjh Hak'xpw ArE>mee[Њ%Sg1QYqM/h(ibsf͸zzHoBF0ȅW/T4fs8sՎȉ68ԸQ|kx+(`wz}X$6(h%rX˦uA Hw};c$wUۈnLga!6WeE@ 6ّ$m@~Rx{;9Ud Lnc$זeqTfizsƔa]_ fO#>e6ciDTPyn)dI2HTHZvjuupr!~_:vD>_uij>77oUـ=G\h[xIW)$@wn}QrI{>zE:SÁi[|9Xh6crv: kkL+5PaHW[[#VC:䴴OԳiK\VzC|g3<4C;yKZA4D۞j37* 6ʹg7MCK4+ۺk;{ۻ;[{țʻۼ;[{؛ڻ۽+)*)BbADѤ(dG2!EZC+sF[0Y+!sxGG$DJ$qK5IBlGT&JAJm@BB¯DV6<>@BWbO]܃12WRa&+m2/lO;1Ѿ!lN1x<8IBV1*ߒl3PQȼ, %oQVEs%lhΞl,$ C2!̫-4@g*/a̯´>%ƃSCX!TDt$ͼͺ5*=Ƃ+ :Ll=\'ɔ|pMMX-^R!,:3 H*\ȰÇ#JHŋ`ȱǏ CIɓ(SbԨ˗0cʜI͛8sɳϟ'p@*]ʴӝ,` " 4ׯ`Ê:U4!ȀI&GюKݻ 4 0:@x+^xރh0PmXƠC,  2K;o^"۸s7|\t2Ⅾ -g+_Aլh̳֭koQo-z?gӫJuA Tu~<^Ͽa@[A PS߃WT@E|!]`fEHki,U{FuH҉a&~-]"te)h)Ƞ?6dSAVt-Xaf*>9WuLdeAqi3Vd{@i)X7E)gx*hGz9VIAq [ *1`#vZՠ*iiI~ǀ:rvMr *fTPɓaO::6{Qo UVfy>-"Tvkz2R/箸N[nA,m{Zk]*`{.+^.)q p ;_L2e^d+Vu2y18'ҵB=, t,cbYLlK/'SێE"YLbIإ]@Ѝ%5l]rt$1R ڇow<NQҽΜ]l \ɭ5KA-7'1Z6{"Jc-7#n:fo&ǯ_v*ʹ=AA_7_`ggyJNWz3î=DGG{",學u_>Bo|z3򐇿efҾLlByfy#A` %tN|ޮ?NKڨ"d1!5 >$9A I L D%P^@s{עndks*Ľ%Oaa̟ق"ίf3i7.U$H %Bi `¯uly4IElBpKohEKj4;eJ PRDYl-~Tm2ɋKh aط/Jtc,S2TyE NeCS﬙miiL)A4HB\19=o0crb ̐SA@LŹeJ[$i\DhpCTs%2yPIs ?4d! Ӭ#ANrn̤&Pt:]-eNKsH]NVȟ~l]#Ty5&%Kd(7fʓ* +]!]s%"= E\'_,FvKeBe>3fz(U~ ^'6m8ʍ>! .vAQq 2RU J:WO,IN.,I ow9r%lnq+\e n3oʷ읚ֶݺ{FUb! R=Tc9W"hōjᗾ61:ɲYSB/|稘=EC20;U# ej-HrBlc)Qΐz`Uz0"vcRp- f+!2kFVt͏@h CkX3<+l{t =i[HAh/}+DtLiC_St%;3 eb7 sިKL)Mm*>mK2Aq[{~5u"0P0ER"p9lvd J:)X)wnfMڼE mskj\cs^(c9&_pA Yd.5!ʅs?l޺J~ U91n!/R:g_A+قq1R1d~T nIij+`5Fx~bބOU=8~Jz;٩q/ R8Oxl6:Pȫ|I=-.zھ9:ǹE/7Gdǀ*pGGxw~#v}"m*6ml ~)H6&z#a/3n0ZVشP')6Al\yB~D؀ A]a}ā43nR5Hp!PHW/_nF£0W}bhlJ+/3jqxNn8.f3y6$xg7XF.xLTz-AUNȈ0n8zIj兺#6{؆T'}|R?#28KŊ9γz0r(Dc&׋ڪ]~ ꬣ)Vj|AzYjamڥ/XZdp8Ҫʧf S[9J&< {ORPS]BZDhq Q ҤkBڦ!/] ,Z'3J ۧaj:J,Z!,C2 H*\ȰÇ#JHŋ!ȱǏ CIɓ(S\ɲ˗0cʜI# 0@@͟@ JQ9LʤAӣPJJѥhP`S=ZKٳhb-`ϥ*eT @@V`dRQ\ըT[ %txTvyMd:1`砄*"e}gsꨚfERSfZ0Q֢i*(2iْY]"gj*+y-ڨBgXW {VdPbZT:,ܖ'x-ZfFf-dZ/Zլ@Sw㲫oZª+b+0U2h<•fةiĊ) VQqMJ[~lH*<[첓[j)&$V%"иB?/LgD_#+MWQ,\+gD,?w*]SR@ x@-&G'.գ.mH! vfgب6fk#~߉;}hl]yEu̇^([t.LyƉW~uy.ܼA ޠ 6CrYktozӆqg_Y-jj=>B5NZY|_x.޽šw%ױr;yzV;Gmsw%1e~C BMIY|` ._[ >H@jс@ږ N){P=MzODhoRU:Ћ"bV=mj[].c=A:'S! X=6voactF&q\8qp Rw0VA#5 Y2D(r)3 -t$a!0QALbh2Kmc JU얏% IJe2rq*m(Mt; L)/+I*a0@v80I3ydH)Xğ1FMf[^+ŷ0LJyDԒ]լܧK!rO d'ÊS`%ckN$8G&]TiQQ4TXM(Krz J/"4*n0$@w=S_DeOaIQMy'6C.ub!ySg{G٪USKPwMO*4W7>VҠY^dǁՄ_u J꽁,ɧ?GߕHid׾I-+* aR jP*z edn;6*tsT.`78SVr*6E^MbS/*Ofe3F|X<6r YFhfOXBcYnWx[ۘr6qٯà}vnuwt~f# g{$TM|)l?],okcuK'+`3OGJg6OmGcs oMy='~ʟlWӕk'ZI}fi迏3J&bM5t7.ʝa}eh5syIeEbYB (qv$x]E'ZTEiGNTSqlx'ax19q4BE%%G>Hg|)xiS 1dU8H/N~}!!!SL[A]B5T5T `wgD`h9t'2 kQb/FȇeH7>ɧP9(rkaS18x$fT0$xk! @g:yx#Pe/h8DNxؘڸܸG8Xx蘎긎؎8Xx؏9Yy ِ9Yyّ "9$Y&y(*,ْ.0294Y6y8:<ٓ>@B9DYFyHJLٔNPR9TYVyXZ\ٕ^O,0^\'dYcYvh)e1\ؖgiIf !zٗ~R Ƃ [@s[ ]R[ dh)ҵ,ؘ( AVI@k㙤(>&) I  9cɚYb7I6d/, aAǹٚ[hI ,d0%YJYibǩ @ 7y܉^,f, ɚυk\ I )y郖Ԡ_#tiIp zٚd9]a9N؟A҉\")iy bGȝ<ڝ 0"a9A J &9 bpǙ ۩cW (&IAR 9)A\lʟqBvk"F _!,'D ` M J!I-$Hŋ3jȱǏ CIɓ(S\ɲ˗0c$IH@*"ѣH*]ʴӧP0M)% !ׯ`ÊK٧?!$s UgʝKݻx7nҙVk)kÈ+^8՝D8-Ƙ3k̹H lIX =^ͺ &oqϾ\~ͻU4Ѕ oތh5УiruwKνËOӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`)dihlp)tix|矀*蠄j衈&袌6裐F*餔Vj饘fB4)d)6Tl>&ԩnahF@O@ kX5D9a鮄VUTvQ+h,P9;'OA*I6I]mku\ZjyfW,l' 7G,Wlgw ,$l(,0,4l8<@-Dmc.MN]DW 5Q6@P6,Ek#u5Pu,e-5u1@Wah17X }V]7SW HSxes}zS=I-ق/!n W8EySA+1NUNX&_$Q8ةLǢ`-49NW+SD[־wn,ҊD(F m0È<=R"W^I7U.8 Oˬ45PB@2Fq jC $KH }sH *?BBpG-du-/[NfFf82i\XXk7SL2Xq|Nj081vdE*ϕv¡3Kp3Sc3 Cb&tgj&Z|vL y=QiR QŐw4 I³IdhCg(6.('7/= BU%ڴeH)-%M8&opQ* ݍ?_TTJG=SRWכ BO]S?oLք|V=$ONgM&y5Bz-Ԡq<2r l[WgYXdIZNvg}Br21jvI[WO4K*wH?) ֭Yjwv) v~qF `'Q3C>ZTY#Զ,yVƧe)@+rG/ī"iӽZr-]VkLJ{kފNzLػ_y)ռ~=%Ԍ+ɾaVk IcEҭ}0 `e712RRrq+6y2{ xJrtKW[d=r~|a%L+SOVAb*s/ 5M+X.x#3Yyzt-5&FUl>Ngpq+2vO!|)7y{f\{! 8bjPAٟ$eD/usc%qAM'hQvxTd&@ʷ=xWp^Zmm6~7͠poW748ZD(p<^H6D[ou|Wa- &+}uNha}q|V8\t{'DJұu r h  ~ JZC?IϞdV-SCS"e&Bwǹne1 7DCF4΅ѐǦ˓!9ը?-jEjrK/Ez : ׁ!= z2!m%pfkç/.(L؅3Nǂ4q^Ã[؃|>jU-wH\%x:<(jȅ{Xga$7ygH>(vLGk؈sd%$t'Qe8iȄ؃Ps2r3ZvLЊ({76,g ` G|6t[Wȉ.|t^w[` $&y%V;4vR18]ďRcWllȌK}@Ε@sHӅziq(ga(i}뗁Łox%~yta)hU}uUjg?{Ib!2+d8R5f9$ؘGVB|Ef{ear5FYErGsYFZ2G/--I/.Dt.{.k6\kى2/[|</ _x92XNYySᵂa:NT8W*cd5*ʯ)OMixbJZiy#d)F갗uVs5BM㦏iЁ7mS#7SDA +bA3ECc6k3UժIix2e;dsDKճ&5XQ ]' @?IYDų'ۤ0:,kȣIf" Pn7s8Xֵ 89;z,-;G{۹;[{ۺ;[{ۻ;[{ț *M3AMʬBDD>᫒ñEzXBk+Ft{o_1*=) -b[ FeG S+$MALY "<$\&|(*,.02<4\6|8:<>@B ׭߿ 7&UK L e2»,e/ӨSU` ~ȫs#\O)xxN^μc$ȠldjiuËo[yM*y{.Kkbzv<A߀1\`^WZ FHQgE`buAv(MrRވBmU!,ƨ`~ۉQvviWpU2QTz5@L\VF)8I;(RFfih"pYi'BEŗ)nwpzz 5khnhY'ƴh\vJ&uE雎K9-*FŠҩ*㧉RuZҩjla0TJlJ;m| V^[zg ,CD ]⎴NT;^5lJKцw*שm^V_&lp:VDZPCgkr,1v;P3ĥf6fTar/7 ϔ-\Y@;teEèe)I(Ft ܼV|+]Un6CD `Ƶo%EZZ4u-5unA?c=PIxQOtRP,[Qp)}8 nd9MP梃 la]LKg{t{ȝ>͜?nٺe@/y"S|͇vvmO-zb{^~xp7< tdn !ՀŹ!f`Z fJpK3"킍s ^7B}y. \!Nr8' b7oNfA `XVaw< V'FgDġyσhgta1{fGEUi_\XH ,[}cع?ATk5icvl$K7Yu:e'ÔFQ J;0l=K;k͒2iLa\y" P$&7& YE@$~yί3)@W=_7yjsA Z&uLG$p} _C5I~e@N$3y򉋟j5׈[R!=")S™U˜fTIyӚeV3tFo0N˓YLsuIj[?lZ XSzp.ԁٙ)`?EȘ~P.^H|ddҢ5sC-]M:NV*2%C tЄ;PV=ZRf5IWSE"<{1n5nuWkI}CKaKܝՕ)lW&{=Ӣ]yԶtY^]]ְDccqˤL[;ع0_];^ smhZ_r+H(T$ STmm) Ҏ60`?HъdǔnYZ/RhVUUU v<95V0QɿZ HA 2nE7=Pky _iOJ1-5d/y D~ N-f.\/s. o5Kb#ݳVh)xy )Bwfާfv@ I.{m.^J1~!ڕܵvuѯȣg=bۚEoh7ƛe2ctdTUym5+qޠ7JgԒl`q؁^npgRnsh'\n&Cy>w ^oT-*PM#nj]^V5GQ(L:,@C>V&j_wL hb~[z1 \ߪcܼaGLv:f"^E:,_E$_(rE7ܚ}'~?rQY~:W\s} 9ѱFYG|q/VGBy%h)*(AtaJ7y+x'6e~54S6bWcuBȀGiab1/xEu~P48MNX%BOHB*ȅ]8ry?} QbXSsvk8ɶ-/q}'7!whdTKw}Ie"cxu7CX=g38(exBx/|H9y(؂Aw^/ANX3[֥r(dD0I7PX$("[aNjŸ!2~(1؍B$%QxcyEXݑı玨XW%,`!q'42M5li)P%Xٗ'ؐ ('%ZSJޘ ُd>r?YFyQ:oay HPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9Yyؙڹٝ9Yd) @ a:bvQ䈞)ў#Ip^9#鹞iz &&nd % @6[ ('JB [[pa*jП"4sP!6ke "[l d8Yڦʥ)$jg6z9*ZlZAI#I|ʦ4ȫS:C֞ڪCʢ^ʐ`E>F#gj ŦTlڬ@5R#:#? k,Z]:#Ҧ*;*p&*!,ڟ \H!,;3 H*\ȰÇ#JHŋ3.00Ə CIɓ(S\ɲ˗0cʜI͛8sɳϟ@@@L0 `PJJUE)д) I rTٳhӪU`JTio˷ߗm @d\].yǐ#cV e`]JM雛Pa2@tG$X۸sS{^u h1fnس T)Jj |YԶۏc9 A磂(>Pn&WK l8} FT|F F!`}Z` v("N]K2؈?QH 1q_ae | ( 2Ӈ! idImw6AGT@FieHt D]4lM\ӓb9Q`o1)efL. 'ia֞Ä́Kyy*o~Phhl 壃7F(&b*zP~ I驡~A}':RXmkF ;yB8mv'm$:) Mrd*HmZת ߆ʋ]lRmf/H)nV[lŹi-Q}ʶi #pƹzpsḇXUȦ%}eY٪(.1c̐sT֫_ "PXG[PJfIq;kJ3KEt-u!mt`b6[[(Yu r! Hf&aA6^Q߳/3A:T?hhb&Q):/mm\b% UkX/iIA*`sw6Mԏ*MӍbzTA }Gk5W5/L1cE(ӭl `)8TQ ,)nKQjBn/}4FgME!@:޲# r*2l} C;ͯR:$D%(IX}4[tZ:[(NS^Xزrm%h ݋j$ e-Z_=V@5VtVsٺ^6VXUffO皼tN6mAM\YT+Lɪ?HъWiMыRhaלojb/^99\V1;?$ )cګQcȁLP"8gJt1gշqx eJ!Pe2ko3nm_zf/ofE`)y i4X Sq *̹Cbe(YtL"ȴ6ІsVQ:әΨvVϚ"ji]1 Z dGMp,@[Щ5P W6l+lvLcU.J6 ?fHSM 6O-f:EiE+q|6G[8@ EU>]$Vc"pJ88B[jaՠzf[RDMMKV\ \wMHƶLdH=ons|}z!;E-r >#~^>pyhyWuX!ZEYJ>ҷ#sSwS}gYuoȳ>ӣLf_W῏vzM^z/ <]]zKqnew]R|%dd~DƇiB债Ytx47y26a n'tN3)8XWQ^.e8q3XzzTQ9|4{kBx{Fi'{s5D6&ONT}*3yXxaﷅg4,Z()zzeUSE61'wz6&ц7r~ȄzEh@toYws1JHKzXE E(\rTT|}ljL$D3IG%yFN Bق^&81 @NX{KH q臽HDĸM?H ʸt8ڈʵXсbӈQ TZ8.ʗ%H`X!%HɐY>hّ "9$Y&y(*,ْ.0294Y6y8:<ٓ>@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚw!@ +#H&I*#Yq# ћyI F9Y$!@iR@ m[bR0[ dhb+&! U!mI@ᙇr@YUt&9IA  YI9X9|A Z[EV2(m*SНIAuFV*ӢUd hIZ9 @ DDڤYy HfhE@vͩGzDI 9Zi*$ u֦+*Q:bh%#f9=* }Zt;ʞ9jnu*c*ey#v)颔& :WF XUFI V Yz[Ц?:mJʞSbzRZJ caz fFR@YşCjiTڨ B󉭔ɟe!,B5 H*\ȰÇ#JHŋ3"p0Ə CIɓ(S\ɲ˗0cʜI͛8sɳϟ@@(Q 4`"@BJJի%RS&&h#ֳhӪ][(0^˷߿. @ux*ǐ#KU@L01q%w KӨmֽL҃ & pNͻ l`@3 -_V1EMޅν тx&[иmE Sݱ-gy'SU7P d mEf(TxPaZ8!(VAm1`]@ G*@{qtcDΨ"IWMA0P]RxL?&@bmXe-h88X}I(Mr~)OI)K)_~NIzꎖ>XZXk)z) ◙#QZ^+)"TtNKĪ-wtR୛~KR\JEJ:/-[Sdmb~ l CiE_1%A+qqgYq+֪_|#|ڮg%%f BK6c5왕 ,eB%@>@qF?0Z)jq|-cUt({wfkrtN.͝_Ԉ'Bѩany\kB'8Sg[/ WХ4sGӞq5=.~|~4"ġGVpv_g_/C&eQo槴}1񏤹wn['ZQ0IYָˀ/v 6@Yw Od}L 86p2> < '΅/,X0D6oiT<2VaQG"~nxFC"dx`: e~$UI 7C2FuSbޞ(/7.Ւ 5?; pc@n~a˦@%!n8XG'>3c"?0irstcPfvYrƆo#%J8hƮIxC^'+Ol˟%ƽu lzE `kLeM\! cn41 5ҁj`hrӎ%mU &*'7VfMgQfJ7?u΄m-x2ts:3FRD]|)eziC$fQk V@{҉$T#2 Q6L?ue%PC)Σ pU^ZS<%\: t^p@i^KcydiotS /hctΪ:|0! hҧ69X^(Ɯ٠G0J|e]6$=CN~IG_{OX{QئLO~?Ħ㏴sc}}U6Wg]3hFud >G{2$|HD'x"`$7S=11)jsW1gI,8ăwB~Dc dG}{ M؃|#FSX#: \OP Se~\0gņ}28k(s!!j5uvԇ_+:'ȀwrQCeR8o"76y_G@aÁ~Qq x8#a&V7NJ./pD D(@ZHm5ZM%ґJ!x3 @dI_na:@$E?x&SSc؄uMwO!X@62q}؏#(ɏ8B'CJ8IQkYRNqfB?i./Y:R0y8:<ٓ>@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜι3dG2d!#FyIIiՉ99I#"ٞ!Dhdi d [@ fj[ du8df![S  I Fb$>@d֟  @Z6%*J j&̶JIfAi[0*xGgS ZУi);VJ YrF@dsХڈYg/f Z9@/(vO"4i'JzxgEY:0:zZj>TEc1`#iڦnʨӣYQgk6~@ţ>Zxzd JtQoKDz="I@@ TآaZMHʣY!ɪj֪Dfa:bڡڡ֧JhVڠZg:ʦ,JR j6V*EQYj x!,J5 H*\ȰÇ#JHŋ3"p0Ə CIɓ(S\ɲ˗0cʜI͛8sɳϟ@@(Q 4`"@BJJի%RS&&h#ֳhӪ][(0^˷߿. @ux*ǐ#KU@L01q%w KӨmֽL҃ & pNͻ l`@3 -_V1EMޅν [hA-h<"֩WOW@YeAhTdeՑҀx`[ ߄ ^T0pPvuaTA($ZQeL&u*u~0_<>([{&آDS(*HDSK" GK`x}8o D<1%p2aUv ary!zjІTg|1m(I ҆6(1yN(-qᥜ궨Y*ZciVtewZ+1v8)讛)JƘYPe"{J#F5Nj8'4k$ )z'jr,QFX=GܜT ;%y-ƾITX4%" 0ǃrL~],sD|Zf%f|ܽ s>fc!ߗL1(2ʺF=@@qAL6x[4ABKߍ/m;7mrJe>PxL1?lbNYv|sޝDqw.xz!Ξ:ͰeŽ{ι({Ͻnwn\Ȼ+цV}["?/ɍ<p5߷߭fuFV5*Wse,tI JFE( ^oAceЃPס0 &Mn yB B)ߣBi{WuH5)/|Hx8!(1+G`>]tXłx+TǸ2ncb23iM ǻ=F-qé@2gGA R#Y; 3SK0pqNBt;CKӫlڤo!:1kDX(㕗ɷxEԷ&7jq@Q/ۅȬjkqMSuK.UoR^9Jۤ=0T O ;Iu6WrmR =b/ ]Ѳ#!?]OQ@D=X U' ř*xB(Bح/~4{ȅ2mqg,jYdRDRR욤S~Gi1sf l]3YCq%FN.`.ҞrSӣ0ΥȬ(_CǩĭFk(:Χ閩֨d(NֲX$l,ZO!+P/)r~dfdY,F*secR?+- KFׁDrm _Q(},)4^QKȅ$KGX%ݬVIINS5WlIe^ *gw8]r0Clmq^Yuj؁آ1gWC/:{ ;wU%.ei.S J0BAע.HݒcA?lD5R(E62xt2,.KHu)IwvWSuf17&|are[HHkfY+(e?B}< lVPނ_%zc僩E@/'ԔmY!ZQ.ժbCڠ& [u0)J]AӜlowصJMýMJG@叕 eh6- R5r)ehHB 4Rf1$fwzYԊVtY-X92 rSM\L(ׂ{5fx8EVOy N}e*xڑ6*wXܷ`qmfa#\K2*)q8J&mH;E17j[V)TMEc43G6r޶(YZf6aW~@to 6\oQ\|9}zOwvꫧ)==^\ ~u2/^;6 Hg~gܴwY_Ayo~6ӗT#ea"2D<耐d۳yh}h|E76g}8\(~gv ȁ/}T6%d+XUff9BXFxi؁1X"{X1l }xO1q\H6 @?srC(HYM%ґJ} GS}I1Q_؊DKC#`!f݈D r"M!O!ܸp\w7ҌaxIA񉲈Y8HE2h !^TɏEBY&i8'ْ.0294Y6y8:<ٓ>@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9)2GƓ"Ch>ɜyٜq;ٝ9eDgdi d [0 im[ dnh8di![ОT  IОY@gkDA7 0%ai. ٠P湟֡NIiAi[*Yh ڋ'*C i0h,IJ XJ`dѡ%fMjEj\1gvpQ8Gƞj2R)o/ڍdE5yZZ5J|wEbvyH)@RLZ*Y2CʩpQZ0z@7 ]h=z/"as`@ ^F* 8 >Z.+:a*gZ+'Z马g٣~Ji @IfFٗ"\!,Q5 H*\ȰÇ#JHŋ3&Ǐ CIɓ(S< `˕0cʜI͛8sN ϟ@ J$dҀJիX"D4P6mDBZӪ]˶[]B]s G,ao Lp̸,L40L˘v68ӨSt@ rI& TͻFNj̗Өu}+_` L ʨeAfӔc'dqR/P )sz馯UHf:(wJhO}Xn RT@ (Z"dɪ)5tX9*$snd]+.w!iY[Pr}ljܔ [Q[ /*웪ßU(<Lqe+uYno $GIիshEEa,{lڭ  ) ĖIltCeK[eύoUunqp:mmxpf}rf0p)@|='p|ހGJ7A&cxFT,EZvTY,g%ZRCPui< !Kh,bSULѺUhL%q]&!zG֨$V/D>pU*Y!nkyb*TnK.^HUks T*FYteeW^Dj jZfH\5[i5\Yݤ)¨2stܒvq,%"Sdum5'і-/]KN: ~_ɀNhPy/j`qU7̵,}Ha$ΚN*%g$WCXR؄mK%c6IVl?ql-MQ*22[m 8ml^3Y¶ʲc[H~\s,6՞1 f-ܕ@ XN+N;#sAi}Pߍ/,ɒ-Pi|\2k6 =A(x+no˃"MJ&,Mˇ@ѥQlS{Cn8:Ұ5\=Loo޹:RQY^u2lfB8Z'}VepZ 5OT2j"= 6*ٛ6OHъ-VU+Hlfn.]*[[J6Ig\e8jwQcIB&ެ9S3C-ѲKۣQ{yG a=yUm"~AoE# yl:^v?!,/oylC{:݌jhX3vUcۮ+C{Dl'/i|3Hѥ??.;gK?w%_Ƚ3?vIx}<,3=27f1T} %\?U&m3聩dr4$8X-i)w@H2[c#I8.ԃ3b-&u~B{5x|R`V1}"qB9~b@&b83!iH*)?+}t~YGԇ\?QKT'Q`}8ֈ=|xXqhXWgnȆG1AqJ2D!O{PmLBEx؊qi&uBhUQ'879b'ҨuRsCC C(<*Hd5h:a(*HK`߸%ȏ#ɨ%ء<=O_qo㈐tҐa}"9@bH$,ْ.0294Y6y8:<ٓ>@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ_9%dScxIĹ?IIY!ٝ9 d [`[ d  iR a p 7'Qmpy@@ mj@@sg1 R GaўʡW[v&)c:'0*R?ğ$ A摣^vf ;iiZǤ )Пզ1Rdُf @ q Ф8,^jHG1p*83H@ Х~*G1Jkveǝ1ZOL:>alz홞y M2 ڠigfꢶZy(Z*x1/7j)yiZ&sh乗`!,Q"4 H*\ȰÇ#JHŋ3pƏ CIɓ(S\ɲ˗0cʜI͛85S@L0 hΣH*]ʴSɤ@ѢD6Xׯ`ÊtjzShpϒKݻx!BdA6``ϼ+^YL&phvV6̹f) E{p@fjװc3*.+ %  ^1LhrģK>0Q(iAgҡ>;԰hH]Gů/R9h|xYϧ;qm=Kgϣd=j_y*nK {4l,g1f@nrg!Un t{10Oß7?iH{OrOIs un1 !GcJ[ikCM |>פ뽐^LbUĀ}Fdx:4Iȅ^>.2nxU־32K ո^PILz :/ZG c4dv f" %>,}+$I2W P:ُ 9y69K _XF)ilXˮFMs`om")[E;efo~sw$;+S =LAmpzm(q9nbxP.&C5o3.bv"pIHъ-u%s;r Znh" #NsII+gYudi5y *۝rŞ\<*._$MwyW7n#|g4D_ƒ^\~Ոޜkl#Ӑ{ a]imˠ|n"ΧjO}_S|?m;k@>ێJ3ӟĮ[?ohy7!su&XKb}Y.yS|ğU}dQkwSmeu!V7f^Ɔ^À'hJ'u}X~ru-x؁w~{&hRF~+H((8*7pG>G#;Qh?g.s$sF8s$ׄS_Maa%8K{RZ4p\WP&hXJDV!n83lovw7xbDk؆dȇ>Ӳ؇PU_V4D}#'xgYgqj( (hh+H7mh,_DGFp>1S2Q%1K؊x@c2H5v-0O(aQ6X%=XXvP֋ƈA}lGB;DQhFa61hJE<C%tȎgR@>Q9@w Js,IxX)Ii AJx8[!%ْc>Ab.Y6y v8ٓ>@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9YyșʹٜyQ1tLd`%dXة㉔i`I99Yyik8m  R@l@ .u@@@Bw[ ZI oև1tdfgkў`mDj![%J.51   RJ JF16gX"2fr.*t&%h @&e[Ik KLui.-`T.[\ʤb/^ͺ` ]*U̱nbs~vͻ*wM\УW4` Ke]ͅ{T +P|ƩԡO~y&U-d9lwy@dY-(vZ`FPv\ g#VjM@Xg W!*U~6uQ5`N>y*$FQ^POb\ Hm7vid^0aie^UUAb'pک'DRWVu5A6'N%^YehX 餆Yg[R'Lj)jFQ_蠩)Lj*hzf$J`Xu [z(hbTufᱴ6(M&#ej݊I[Zښz*JЯjmG]XՒ oK_Rj̚_xgX2@)|*4vXś3ܚ1yЋd;G'@1Cf![]PzM" b' uڎN==.Zқ_Yf-rw]E>SAVi8?>T gy.Y ]0@ -ǖ"/:Ok J^Vo?w~wP:nn^% 2B/}SN5h{/{'Ÿ̮ڢi/ߦN2m~kpâ(.~k%erh@ Alޥσ7!CPz5i'C4.BD4:UDψ [Nx=U a؜n`V X\PR84Jz\%QS!Ͱ R/8A;ć}?lD(nW{y6L&CܓTDV5UkEzQ>q13FW3.uc҃: U-:Ϳd/'=t`-nLej V. >y#]V6upGOh̿ 5v{GYzҫV&ml$,.Y[0mk_+ϤjpX[:ћ@:{۞ɢ֥?,@UکvJ+HA;jUex7j.7HC }|Jλ$ s[/y$բETѢѾR][ xgBQ;KRV<[B.K &ETdЛ5`w `[,Y;+qbvdo^ .6Vrra{%H#X +^Qr\kq8Iދg2lՏs,#v.t]XECױ&% [08b=m-E9'I4,"}1fMgp|Wt5LsUt@v/{uz5,0.f]SoՅw{]mܚcUV"S!\! ^/@Vl!k{i=/bHR>1!LQK6HHWRoC7$/QB؋s%z_A苾h~c g]hHH0q1 a~( 9/8+-嘎긎؎8Xx؏9Yy ِ9Yyّ "9$Y&y(*,ْ.0294Y6y8:<ٓ>@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~7dS`X) 2y*yXٙjI@ ddcR`uFٳ b-lTF ~H 0f&a[ƛycV?oP` 6qbi7&8dROqؘR НQh߉Ӊ18maycY;y ftʩa~LI -! I[@ `d  b)-a4:7t1" cdjݙ ќVI>ʞ[;ӹb M^A^"KiIJVrl-ai ) I*-1Ql!X߹`jRzh!,'r `A0Ç#JHŋ3jȱǏ CIɓ(S\RdJ)!C20dɳϟ@ JѣHC - a;jʵׯ`Ê;jBW HDdʝKݻxMJysg[knx0È+^xcNkIM0Ƙ3k̹3- c*=^ͺk['ؤVBRxoM25Al96] `6iУKN2Z9pËOӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`)dihlp)tix|矀*蠄j衈&袌6裐F*餔Vj饘f馜v駠*ꨤjꩨUVgj04]N@Lh:Ui8+5iEeÒz\eTY5l)DY)vNvZފJw崉YJn̦sQh6Z t+x' 7G,Wlgw ,$l(,0,4l8<@-DmH'L7PG-TWmXm\wmX PAhS0P 8@j TPP L,p7 0@ڃ[@01A74D/Ns~9 vW 6Ğ~O7L4D 7C >B!6zbNjyv&ў&WE7ѻ% 0tk)) mx,SJ09 Xn=!wޒĆNlc瘗8d!H=eypng,$sRq*vP@$`ee( fE*ya"u-w: !d"EK lT` RM!]()q 4Jalآ$ 6)6xw)_) ~Ĉ$s"0$4 ET eJU;  sUeoKcp 4rRL6jJ7ҍLhůR[< a*s ̆$A;dɛ1,.lO* b#mBOd K5UiruЌɐPe-fb,CY6rbH9' , Ԅ8CE$)H RR0È#I INtsg^>Ai  x:x9QG(PmS 2ˆN24qC TLO&T>iN,*g' ĊzTmwuk*5D@V15g*XFKG=-bx8x zؾ.5fZŦ)a-n [0}MXI˶)cqJ5M4ktY~ֹ\nx6n5lXq!5swrY-_SGZI`1f[N-[H¸rp־6p#7=ѫ4I* AUS3VWP˵ȞT 7F&-MɽybuޜN[rcFq+\"×0⒲[eHCr~nꜤ^f&-<g!\*[*nlCյËI4yv 7(cgA/kT EF)6#1?>^6w=Z?nu^;> 9@htu(k[]ofERmMma߉/$\ X{>a [{Fx2m(")7mU,aoL5dmMe=V{x/ZBoo|Xo^Y' OXuOa %j k;.zA7ܷ)־b @{r bNPw]m}'|u R~dlgW|w(GyT&j7YUOyIwi':' Ovgu}Fq|e!Ї"Cb}\70fg|d&Tz2BLge7WP^3H$x*DA^'cg7umv,5hME4xlf Cwf'wIpW /AQF]W~pF( LXoX~aHORBah5kr$lj,M@tz2bs FG=A[u~JwoE;Yad=a@[zxI 4}qHl븐ag!^NjQ[`*Ehu>wv 9yHsȆ YxXfj{HLS8 BЕS2pXIhJ)[&!Y-bɇg]g7uR%Eg~y.(!-E]VE׌b(pER)|Mf[(q\c*"NYs3amR{X8D!TwIbH8IpŹwh 1hV~9Ssiiw~(fV}URcC+t$xǖ V59#LeNu3[v(dxtqɟQfhXtoz`Ił7 ]i%Jv+<)VFkyivU^6\Fh >ex>Nl9X(j&SWW_[auXpCa*'bڒW6jDZvꜛUy#}*HM嘃^Pudӗ VՙdJ,qtbrO*3aX!HdPXрgsqn(kQB/#bUi/{V2,{*GZY.! BD*9""Z*4~ha.aAxxy2`O/ka"Ry1 /ḰQgpJ3*c}01O:ڃFGDg;LPQ۔C6R|z6Q.khVjmZRfSi{h4˳aa<:?M;F 9wNKWZeME3;Z,X=uX@%q:#7cӵߣ-WK6#qu2DuHs<N0>._@}>53Li~ڟxdE (076^f #H5Hus3Hϡ}i^(Ms4xnuYO^;!~> \fDذp.! 8];b ι Z AƏDv9aCye^k 3v%qq0wMKҪNZ aE݃y7+sТWnsB$toߎk߃l5l]"ה +YnBoj llM~ k KaT%;!aM~,eWtTFPx{R'TJՊjW0-摊y1Jۥɞ"&`M%+nSM9pEj:lStlh":m 䲞 2.qU CN )\x<ӏ85j.\iA"E+Vz'.v~g\/ m MSoG6iVIg-m0zVMzesap#=(teZՇdFNxfpxY%mN|1jT$Axj=73TG}]~D}$n%A eBHNP7[̶2:LUe(8v7Dtf,Kc@YGdt &^97_S@XH%xehWƉu{8Ƿi"wuE;hUA60xօht@f@2D~TX1xXCƌeͳҘ]X{ԇ،v> ׍Xf疁`BḎ͈h+uS@m:h-)9,xY8-# )k fvR6u6F扚mِ BY(jxyhct7&ɎF=i/QU)~5X(~H; Du5A9XC1IKH(?dcʒ`/ D?IbK#'8@qwh)>&;yyVBq)IҁN\Q?+wϴbW$D"1n)]4A'r҈&1 v] zKU!ue)h"O3s@r Ɉ3+)h(-<霳_cHrT@cKyM)>"h4](pP+ɞ/)iqy7_/c:Zz ڠ:Zzڡ ":$Z&z(*,ڢ.02:4Z6z8:<ڣ>@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tZvzxz|ڧ~:Zzڨ:ZzJOc 7#3:Z!i45)&ijʫq:Zzjǁ[@d`y d @":xd@ zx J[qR@"IЬvj7*j8܊G 0dp*A󬑷 d60jsc@ ѯ !榯~z%:@̚#@Ax% ARqI@8A9C x^պc @f=+2 + v+jGsފ=8!? A Z˲ v;+9+qdLIF{%ںwqv$©6Kn$89I8 v|vckz(eAi'};$+.S [@ QD+p;GWB0k K4 PПB@ɀۼ&y{y_Y.={H~boı?!OeuP}%_YGu]r P6n ~1 ["‘( D!( UvY.؞Uo}r2!FB_KVf5=[YLV8d*Y曍FŐ䁹pveƄӍKP_iHL U !0 v H>97nzW坔jIDA)*&d:T +Ke̢_kEHSljFd"s(n݂51OnU*Ut*L#B«5tyb*s GPe% ă:0 @' 3H2 S'W+O,Bhe*s5|$tC .+-THkt;V +9xr#L ZgLq1 W&<7?z|5ryځ/ (8yt?(.rex`fn&#^rY_e>s@sv֪Uʼe}=m 7r۾=j\U?> YIC:8*@sQ/yO| L .by0(A|7jo0(D[ j,"KlsV( r! f2%"[@ WmF,m.cX'|BR"פj/$ХBs#X|5E5~V9geyhGȯkctO9\!1rm{"1=5q^BLڤdg8MQw' f?UBE Zʕh.{e.]ԥV`L8bde,R}Q=F?+גj#uȾHc3+<ۄ$/?D ƨCZ^8޲mb!RK.4I]no6B)Uѡz@n%ܩ^ Vwsq,u^sO9! +qGPwbCAل)xt,b:5וV̂.7WP8;ebg7 90`WQܓ]9ba*9a+RAl]g̯|1`%{all gmw`M)5[l68w)Ntz]|;;q[ε<+E]94U[ʷ/'7_?{=i Wa}JipYAr)>R?Pf.d6)l. Qb$ RX;̎ HPk~:ݡϻ[07b|ܴf떓q;| 8JnZ5>ӨqH=D6DmNv\  ,20րM|jvlR˭im6Wd`w4DTUֹ9ޱSnsAwݮb^G9gY'@+b{Kwk%6޻~NY*'PM2oTJ ޑ'0/3~m+TqFӧn4Yqv=@ P{6H Szt\s4rRxg}jD|HWyJ}367N\mc{8zhp6j\myd{*eqjoLŃJSDxQF_FAp""n!d~NU,uaƀ z&#愧-t4 XAxwXdTyuW$h~F%gHB4bzX"p4]h28"Ɓk_e whlUiH[XE18(j]x?mxHd1ĊtXg#7?d@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`FƓ"R'YIdWdj"l-YIhz3m:"vZxzq*!b:szڨj[@ @II`ЩDR[p( " ud@ Z]h0{wJ 8uzFuѩJ8 /j @ u*rn9 jڭ8cdY[ Ojt(ʭ J$~g'ȺkJ3p˘Y" J ÚrJ+ RS<,*@s. {w@ЫGz)ʬ"Jsd`a*07R0/-Oy K* [7˴Y2o KJJ$+;nرݪ/ A *@۫$ñuKk=ʪ`Hi*=8yk;EjZjpRK;P}붗zjb u⪯9k;HqJ<+ J$K4ڸٺ6ujVۓK[zھk:뱑+!,%[5 H*\ȰÇ#JHŋ3jH1Ǐ CIB&S\ɲ˗0cʜI͛8s)#ϟ@ @H]ʴSD`ի,}@ 4(5VhӪUYAT b(5XٵxrzɂD6`€ݼ+$0L&~dpa3+LmӨS;fY@T/'Vf*:ʀIn 9Q}3lJL?%g ;v_20'Flq' C՚| 0Xt dDAx9fhს P\{$zAۂsvMFr_`)A0ZxQ9e䏈uJD DqS1ifFuX-^Y5ꉩfZ% ׉7c`ʩgP)h'LxUo8@] yi F 3y(BK>x)PUq! l=Fd5ڕ`n*Me&u7uzEZF_6+mW9kSX jQiCx傻^2] RJ/q\rfnEI p0{p =UޖSYy1ȿ92YiLk,p`뢅:sr>'L}8E@j5]rOY3YΩtB?gd8$b1igl.\c}3z=?)Vrj8{qw!8S 5cc&3 s17Va]ޤ1buYz['u?xX+k-cCn1UGsS_[QK -yXk5FSnuwL?EM_|V0p)زXut֧ywQ. f_HkҦzE BQ_,l!tGЅcՀ|V>l _C{/B[%5`K"\Om"Krejx/PxfՔ4ln̈8+.:H)pPO%f):"L|$(eԈ3cdI%pEjc)9"0Q@HF]-WYY٭Ecv&=/Qqd&3*za)rU %,4EW Hlbdntc㜥Js(aq2;Y )޳BQa-h>]'H@±]]~'7OPr$0QBf6˓8y2G蘎D8'isԬ׀Pv)V[m!DGz1"]ŀ!TOMMexMɒ*DSLbS3D@7. ]BXԬ:U%VvG h]WאYkZ֬5 baM6Q(f j}'+O92si҈$9Z*~-t8+vwQ*7(8W%maX5Q5]p̺F'x;\1wrlz-BCz#$ꎼͮ]p]u+Co"6y]uJ+Z):]v6U*Ca~J.<7h&*W}%JVK̺0;+"die-1_TĆ\)fӾ, \Aݯvi6G62b٤Bb0= u T_L殥 lrZq7U]c>ND!M[HYV${1 --F{UݺhVrm&u3puLrJR-6B+{ إ&vZ,jLfi@{.aph=7G\c~=oKaZk5FwgG˻v͖~`>cHRŻp7ߎݳEnHvfSX rp)HOJ;Ń_@ Ր%7 k˼R88 T̃)$!/dE+8AgEd)m\>xert]Pcd| ϖ4++YJ נּ6^tycӒN;m+Ilӊ6l/ͩWw|wd7yGdGOV(oῩt7YĢW^:Ub[ۇbSֆwq%mT+9>HBqh-8X-X'\1e茤Hy86NeHB1r;ȋUg|QPk(xP8,hghXt4>Q!1ؐL8`Ა!)P6 $;!3RQ& ъL+ W!)Q/It:Xa 79=r"aAQs6:8$’IeIitR4 we(ɕ8Z dIH&iٖnpr9сtyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9Yyؙڹٝ9Yy虞깞ٞ9Yyٟ:ZjGA_ :\Ak$iϒ]X!Рʡ)J#zA.2:4\5vD@I@ d U?BwXI[+;pL !ApR裛 @M+lФ(! E R("㝀D瘁M|AV9X'Ea\T\hh$ɩ=JĪ6I@FQ[*段tkuK\3YjnJ9|ӭ(*&rAӰUwW*0{ҫo s f/ pnꞬIq(դ, 0SZYT@[† uy [r~ ۄ_vYz[ꪹoznYߪÖn:N;e2Aku""۰|\" 1UhqL=j }ۀ3NI٭\ȵآε {;KgPZÛjG9 L3,Sl$IP' @Ѻ6:Nnى0x &4.T6Hy14Ą,`Rz#J D\/eH\RU% kPBսz O6Vhf WM #M+pbcu2pVEHqxUZlYXHAzH1GMԒ:87ni!,ՕJI{ěeF<:M^ˬ`Ž<U* *`.b3/| ^̙5Ln@UCfdN+,f @HM>-X9yYʼnT\xr,%ts1b gV*=4Sh-۹%]=d@}FhIOʧKU~FraiZ ISC({}, $hX)wD5fʿ{- 7G3kdԪiP4a'1YpIE[;*|l!Ks8O[^jEgH8Ri9 ~I 3br~y1 vk 0D-h%U'WŌVmdiK?MxWDgi=3? f]k(/R3pm.4_KR{D[D^EwMPUб߾>?mo"Cl]\Ag,F,bV'b&uanx8׃qw8ª3L&ϪX%$Eگlcv2-VGsWR E;H 8Ē{,),c :=噗 s~3KS"Um9 7FCYoMnk=Z(nS,˱ə *KTxhZ!E+BføZy2-ܓ<_]9;~H˺ejR@+HlڳؑNJR¶i}CǸЧ}Wϝlc 7}3jNB |T>Ȃv$PtK3o=bN+Q!|{ f]J@(^o{H^uvs nkb+sD'I4uUHPH>lx.ɴ"2c}.sHR =4C]Ëmt[} X9r<_Fh>.S7]Lq ;c uɗVBio$O@@٘y)Vs?uѣ/@+,nSj|Kg!oPk}+NJֆڶyVg:e 9w|,Ox{]x ww8%qŷpYf/q&z#gbWHZއcr}-x^'ntuD2xU0Mn&[A%1=rwj5Iue$V}BRi5O+egDIkFMD,W^Xf7/5gi tvfc2XVXkWCFE|ek8`'x*s|p8MZ$oyf1^F(f5f?qUlTydCB6&}(VR>B_wtOf-u*(iՇLJX.8Z؊7(JKt pf eV6^ƋȈ ׄѸ(D,vh(I.;_ys?hȉyS! Ȏ^DGN51^@8x^3,yȆ7 c.xp7j8Ic-i:h48Gm划Jel5a#eQn.!^t)7NG94铡Xȡ!AHɈAv"KtrO9&"F5EHqY#My5f8Ha+aȖW#VV˜J %cE%s E(!c1*-ɘDe8Qfi  GZRaR"R9\9"'ٛ0ɑE&Oyșʹ +9ԉ6Yؙڹٝ9Yy虞깞ٞ9Yyٟ:Zz ڠ:Zzڡ ":$Z&z(*,ڢ.02:4Z6z8:<ڣ>@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`ZQmcdEcʖi1kY겦e*hhjsZFtZqH Zz:̘D d [ dpZ$>ؑ"@ RP!i [J pZIUUgG0^dJC G?Y0 @ !ppv )@pjc3BAqPvA Z! * o I@ʫR4JqqxT`ҭxKmC! 7 o! *I oQʩ!'5'BzPZS7:dPHfWv~R@ @q Q)V)<.mʩ:$+: {nCϊo $$J$׶ĮuZu:B!Cp[7 w))rS2Z+슩RЬu[4$ j I@czK>;I_i$} +@D[Ҫu ʸZڻJOĨ!,%5 H*\ȰÇ#JHŋ3j1Ǐ C9ɓ(S\ɲ&_ʜIǚ8ss͞@F@)ӧPk5zT@ԫ;ʤK dٳh N ЕI&HKbS2`wޤ% L{ۀѥ#Cڣ$+ R(R *: 6fPے<֢> wZH^N:۸ed@H@i`Cz8)"e;V3UNZ]k):uD}h qexkȒn0G5vv|4cLGQuXeCZh#ZwO5rUArsXivE'_QwׄMa" UD,i嘟EEr+&& -tߕliVpʴq9MTGg pKVEEםXj2hgQԜd]2dj G~ kj+uUiNvzkS*lK 1B5Zj:!!VJkQ+V1UB UVF.M;mƫV\pն3@}^b)*B[6-Qk:--:l]ja SzL&7lw%@)q1칂\q5;suA[zWIFs"E4N/}ma(c R^ozΞLs]6 GM fvxM]*xwx;n@?>kKn9zvn5̨?uig֫ t59 $n5;B([÷*њץ6ɷ;LӶw }ܮ=oGo<8FYw7<>JS($*[w*Њ#ٛǗ.o` V CbF9 [HGTqYxycCr%kZ ^vBe&T'97wt#Y@~d433$q<Ds fd["ÝM4zjJDͷAZ.~9qt(L~υbKCS#>pZJ19:mٙgxIʫ0%I9Ǽ0qN/굌U \3-ӥTjiCiY%UuTVnfVgU+-kOOFmӽu,l=f^٪^*YodTz>*gsUXqt$dYf ı*u,ԪZŔhFe-;?(drR|DBp~iRuk ]v W޴}l[i4Vzע7H+ W_+oA]:z+H~"`}'oKVw:ٗգҌ #V},z91l "PbN@:^66.pc!K د|:z[5oHz= 7"XHd*{ u%*ЎN(&d#u2}vJT-̹v^=L'u&4 9c 2|Eh,Co+qRo,r$MjJY Nm١bG=9H[<_Þ? PZ B3ؾϋ?5iDۥ.=$ T*=$~TzΕނ=$" sXU|as؆&=]ڝowQ-|#|VqB磮Ymu[e=`{i)mA;W pY8K.6m^ ܖ8QiSYz ^w(J.ZA C}8jV~^:h4L9;Dz92|o[dGv2-@jtYk9Y5׷S+){>y [{=>>>ȅyӗ>U=I*q|+{mwWo{lVyHG;9 vݷO vj.M~~:'r~|qYˆgphy7>VH* SCB_tzVXw (zZ؁1-4x!J<Vpx0Xz+:-XM(#ja=)xEUN82Dpx82Ǘ^}'=WF!J25HTȈgW8"N2!IE|Q7$~YȌ5+!8huR%H:!qE!MHA2LqAhE!WRxy1_Y2cQwӘ~EJKdL0L9AƎX(Hэ yrx)0&bS_Q鑵#i6"b,*9g ' "hB>Y!?9&=IHJLٔNIR9TYVyZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9YyؙڹٝC1w9b]ηwe)I9)8`Zq:ZMe[@)@Ivd) JS!`]E! i E0*Vd`*=#3)Fr *,:@ -*s3NkkU|vGF [03*aZq0XpGkR_RmDIPPqIo#(D}zWwAiB"J vcVpt,,3 v,sBknnU7ʢ> $9چ(: ,}tJw!=cm Dʪ( "{f*nR?Z pIomZNJZ" % AZ] JZDJsp), H)!,%5 H*\ȰÇ#JHŋ3jǏ CyУA $S\ɲ˗)MœIfG8sӦ̞@n@h ʴӧ@<:@QXu(h)Li@g]˶mIPd)ׅhU& ؀ y*^̘f_NyIIkW.HPq7^"\L :4s쌔d]$Uȓ/.*}^jf;rp*鎽y %TʤI30L^wJ'0VDsUG NFhv5$xME`|VAuQzAbWQ4ֈoQ"g] '#%zC&WZ]FB䓹ɴd9(Y|Ti %0&1u% 8曺=F~Gr6&Q&\z{硬əEЙ"ei.'f U~gVҥ&a@\6*@3IQ*h**g*@w:@O&K&Q+v\\YZj'-ɦ.I8K"KmSjE@ @%ׄH񄀹;/*%)ӝ2,DxoN6Ur,STk^n@dGىXH1Eф^!$Mp"9 YђS`yOr(JUപш|eG\VP#uP9,Pu:Vf# eC| SciY).\L0Cg2LAt_X# 3>`JJSwkXy%D. _{ 44[*Hi!e=ab&slhwJ~EAM*G:3)+8t4<*OWӤgY"Jǵ0Uj։S}j<Ӱqd#SDӢKά;8 8r)'U=2"aȺESmP+JRxtVY_r]r )d坳sY5 .Sm^-*n1 PkڏŰGf˦D0j4  5/\$OYt(.UV,eӵfռ޽z2т^-^q,f o2[~ot-#m A;رYEu0Q*6 ܪ @axn 5qp* 䦳Mj!07 R,CVv[ٴý/IB-9\2a`tY2Lu\jFYy-7^Z0 b dquN4bgv[&-mM)+k ؿѝ h`9C{RfU{i7:X# ^kh9"h+d5fdzUYAmdְr+?@ hdAfnꖂAO̖DY[otf[ h}i+G؆tj[ [XxÃP.0+dFp8Ǽ(mSqU@4 0oֹVOu9%?M@v.{,+dHO8A-CCL]*ͩ j7[$Ϻ v)5+Boxi?> \8#0s5%U 05v1!eMu4czX-J/ײ?~q)lS^pv`Qd}_?KC⾣h)R}K$5z~c]w:k;7q~mGuwT b&Q0g%).5 hRw(wq'dlRx!(RfCWyHׂovw(rGK2S!Nh;i?6|rY)gijMg3b64W~rmWx&4pKZ>p]WW8hr6 PhLvr^GF#*F{h\* p{q@EDh@a5-XtZkTbuWeX؂=xQVC4*Le(h؈6;Rhȉf@wX&vCb(‹_eh/XYx淌hSu3֌n!sgcJ!H8phkWibF㨂hиۥh98Rk&[y6UR (rh4,XA _x8tXCDX=w2l4i;W)e6kAIXGc(qV$SdK2UHdKP a@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tZvzxz|ڧ~:Zzڨ:Zzq:%+WV9iA 9ږjQ:%ڪᩘZzo9d XA맞@Rp,Ip_t:JYZ!C iR8 Pd(ם2J[ZI@pW9Rptx2!: 1& t:ЯJ)_d(Kt@10EL7Šruۊh$kEcEq ZZ ڮѳ'++J*Z yO#tj,J5K&KwDo Gk-XKSIJjq1yð +$[&k; wq$to0d[KʷNKZDѳO_gM; x@˫cڒJB!,%4 H*\`Ç#JHŋ3jȱǏ CIɓ(S\ɲ˗0c@7ɳϟ@Kִ)hУH%D@A" 8`դXjݺq(L]`UhGB(&C,y{3ݻx SڷbKaq-:H KL9%_ kTj(*h Nͺ| `2,AK2P=ueщ^|)}+_~&zfP{foo)f"89_8E܀UǺBpJ&v(z@w{5]Y T0Y[{!HSZv8h PG%ޖ n(Py_(hALyD8PFMlߍMH߉HFy^lEf҅MYI]z\_ThYdסfhfzp|r,a}@hYyօ$gfEݡRA5]F^RdV:SjPE( %s )WWx j9(FP1X+-AWt&PSMew:dIFf>yqlp>/4:,Bpd Q0OoTt @»*=6n$0\ʼ!5p"Y20-AL48af̴Hb@С֥?"!a)d)Ifjˀp1$={5bov/ FZ߇^U h䈜1p-۞5zW~>{κ\Ԯ^OemлċOPdh'OWv47wq}~Xb?UC=rPJ~,_@Ꮧ??#uodHdGnxPR |VW ¦jV'-mT;IY X!B譆#v1!UQ$DN(ĕ@&E"+j/R!)}*a ~=Okb.tQ("@̓BV X;&E]('ѐezQm RrXz#$DE_V7Y6Ny-QqA H`&F1ꑋI8tR_ݰ&Q<&}E!26]J3F0fhB/Zo37"n놡$%{=j_ ~}1r]AUiFӬ:0F3q i3i@I.Z1n&D{|bHX/bˑ2u({ ԋHJlbNѕf*>IGw9K(TfR4{d8Q}w)ȪX2h, R{աV1q6Wzux 4qz\)1-zMYgxC`uWz>n;oεlas (k|1_WP^|OAtƋӮcJY?iRSo7G J`q_<]Vz??B= #4TIM8yMXF}P]o_Ùjzע)ӝsgjrl)bI3m>@V`ۉ7c{Cm-K3eSc$Ha䶅-ÎT{QMm/ 7Mecy ֪rp/ݨoa9]sM .rϛܿHHP%f{߄-tSx\Uͷ ڼeߒ,@te(KJL!n.-w\.\&9tSXG} |߂[ o ԼBE10Ս'kh1B3o/Ԏ6l2ɱNZX}OH=3ȃ.rdg;\ @y,}s.#؅Nړ?\ga 'BbI5_UwF1}Dfufg}~N;6dUw#6o3u _pEpVFY#^-qd'xFe4@C9%q' D'gF=%* &sTVDŽ^[HY"( Z:C<$|bJ%_F"sʑDvG_g}q(5&A (Ux!E3t~Ȅ_8EkV:8{ZuXO88qhXeH7$b.։T[)`vHԇ:G[p(oE$q1Q8b>pW|5g8 ~fXW@cF7荞BXuhx(dȈK!^lxPŘ3@/Y֘/y0xXE@CG]c%Ȑr#D/bKA!ȑШuh"C#Lh2)'yN:%*+>#\(w@B:DZFzHJLڤNPR:TZVzXZ(ɦ^aʝBeI_ceڝkohfʥvzxzC d p![ d^Z#1h!@ Rp!R0[J qxw)w_A 41oQFl?[d@ iwn ; @ :ojomjjg%b4`eQ:Z`JIЩ:sZv5':?PȚ{Ws'C䚫AVI pԡ t%:Z ?JJn`)@ ޚ7:G:Y#i6zȊy2~zg6ޚ}JN +Z={: **s; Z*Z +5aֵ~[g۴@'u:zl+ =Kjʬ~ڹ!,%'4 H*\Ȑ!#JHŋ3jȱcLJCI&S\ɲ˗0cʜI#8e͟@ ';u]ʔQF$ ҀA%>>mʵׯ) dҀl[ f˶@H5`IٝA˷^z٠IY*)Y&?2@Ȑ.0p-,0* vFM톮{`24ԨuaN|AT! O@dOs^-苵dk򈿃_Ͼ&`+m x@UgE4u\RrVA! ]֛SՇ xjk1A4MUwF%E,"Z!Sg|4h8ȒvVȡQeݷTY-``X9Y8m*=_f(fG%Ć1i|&^|mYה}G1Q f$gX%Y`e]Yg8)HYNTAI詰x(螱&O Jiٖdlqd],ԂCTy )Evk_V᎔V"`g6Wq|iK\'<̰50)l:L7Q>!iF` `W6LrSrWf̖psZ2UfJ Qo1K@VĊ}*MHI-Z],B4-D,K}it~gq^W{ֲZݔW37Kx 8Jlm=M:I:G7+Y]~[v trε18͞P#/OPD}6մ =n]~ҽA^)' k<{}_Qio?͏81~̼ L'U7.fPP-AiXȐh o*VT.&0JRXC  Kr91R[@))+b<1xlfvs/]TȦG)^DD*);Yq£d$8ߩ p\M*o;! qr 1Luc+KVW KK`$ahb1k@ RK)c0a9M! n~:PR}EZy=h4T|$ k:P4qu2MЇ 9 PUl9zSf}Q:"!Se-]lj*Eji.:*Rzض؄]SF;آvͬ%0ZK{duI|dފFz ݶXF0o6=OX+@x6-ʁQȒIg^y߮ oɇ @_.[kpaJb7'@ť0_$xy=ZlilnwGo7GSLC޲O5c.nW| RkyQxы\Uͳ+oݒп-swf2!Mv?^wImoEn:>Uğd]pM7-H\~o< UU{9Hz)Bw~z6X;ڰmTs/C &Qk:=1{܁-VuFmг#WR/zK&s?Д3Y |hAmlx6B `C%aR8P3k]Fw8ZLcr MBU+-=k|u/ ,38>rGjуrc_e)XLa#hE}:r6GN"χj̴~Qr#{doΕ'\FR`&*55:"tXԁ&pR:Wzx"8h{D~\؂s|[X=xDFX{(NT$"AI҉AÈBhy(;|v=$$i^ł~㊵XMfmq%2؋=|p8؈،3<Ō1ӕ(bSR'w84.xxS7Ȏ u+c䍀Hh8Kb@}h(Ch@B:DZFzHJLڤNPR:TZVzXZ\ڥ^ʡiŖ2lI YIbacɦIyrjv|ڧ~s bRi"[ dpdiJ [v["&p![@5'pOd"*G !'Ʃ_)o@sr⫴txbG2S;7zd677l*sr7ox(z!wzr2𫛰W3zd0r&zzJZzr:rۚJ{h1*J  !m9:q'k ;: jxqPA59ʨJ*Jyʔr۲J +rZJs@  *«@b:'k + 2dbJ F w(gv먩J*u!,%+4 H*\Ȑ!#JHŋ3jȱcLJxIɓA\ɲ˗0c\`͛833@Jѣ1y 'ҧPIP3" 48X3ׯ`þT*0KTIPط7)Ʉ h߿ +px ,@Pq5d@;:`ȠCIܜuѰ5Ni5Wk;S̙A;f*4=˞ꞗcwȸ28jK 5X"K?~ϿQ"^!rLWA^riEe5UٵœttPuV]_TVŧo(( h]ݧ['(p鿕9Fvc4(cEҎ*N~g '4coͧIXReG_@B}}[?~݊^7-z-P,8{FO0.wXc" o*1HS^Ǵq~[=(K\Y%EN#c*^W<]h-0JȘE-N;ܜ&7^ȃ̳بQJ܂[x3Fȑ|ojND>0ld$< 8q"L[LiGͅZ:enE=F%kDwJ?ʲXl|IJ =&{C%фLfAXy*hyLw1PF 1 Q!PUiր-$<Փ-#J@"ʂ RYeEb~@0)əFڒ%Lo}:t;7jτ%[5S h4̼5nD;)6;JMu+Owv@:gNfO,VZlD/Fl!&KX,tF)HGd)yFrKUK\Wg{K}p c &v&XjxMvx}p)lϑrkoN]U[%=Rn( 9b';+ _7r(o(뷻=͖jO3A\  fu?dey\34M{Q 4c9w=n{q3(sp&/91viOē8@_ԥ[g3|ʵCٕ[{q>|6Ux{섯|CU| DLm 1!?VTju+fRx\k/wko! )ߙ ,#B9߉YʈZz ڠ:Zzڡ ":$Z&z(*,ڢ.02:4Z6z8:<ڣ>@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tZvzxz|ڧ~:Zzڨ:Zzpa*d99R99jy ڪzj"[@ F0s)d[ 5"GF{]G >)i!4E P#RPS ojr+:R I@)JIq҈];*[*Gfz˙h]w,ZFׯ#C"v 5I)+Zh pd@׬Z# k늺b'[ګr!,%35 H*\ȰÇ#JHŋ3jȱCIɓ(S\ɲeHI͛8s3"L { ѣ )ѧPJ%y@LN:'FN`ЀH ʶۡ`@}dܤK,(؀ Z*^̸dUU04 m1ؤ *0 ̺넏 Te0/ӧ`ĿWM34nعE#^s 6eq 3eO३j8nTw_^c̞~1ܒ˞eޞ1xMIgYfN}g`ATv1Tb dDYXMVZ((ვQ0^vޥbT Tbur7ye&dN@2 [j\!x ^ !Pg]eM9Zq%ݚxOny)Jm@qYZf hcKv֣")IؤT;)AQs,n7)j&Q 记D`q0,MI@2-k'M u;׳U.JkۙګoFG._&K>uXZh@+Ê-C&U]\#,ZB+i6Ul3 )O83E+/r|BOk$}"43 }nu95` PU4ڹf3ܡ]-6ݞye&ug*x8vVsO]*KLE 86 2v`kͺKUCnUEN§}aw9i|AB:w;w"yji&\k]e/>C" 5RhY5H 1p1W4rly]fā@QA pPsA)43aq5(CCE9C@OA$"ELC%L6Aೞщ6T7oA"A썑[.3.dnܬ 83@@+ Q?\u1B@ uAȖ}Y f"&eIZhTR.w#:s"GYNMZ=K~ SiɃ܏g%a6DHZ>\F횺D%6=QYD!YecI,fGz`:GyYJ&%ٵ^>M/@Y)psq։rCYmLHsݳu,H?En04eaEpٱP9=$3m1\GT/:tL 'CbR\<䭾TѴ5|O`I.L ecN':Yl\]%2)QU'u v@-N [$ݸ=c?,d;^ͤ(*ϙrkZ>lq=W(ՂT˭AN\bq}bl%UbAjgVZBwRּdP[ @uuQYV+@[Ӫ d /Y:v ;ٲ8}a~U{-X*)wkmR>IEU#<W dxY%HOc|_ [T6II>86zO&pAgdid߸^0kDkJ_*?tIGY9,3JK%oșk`a4A^{׷q$T^S{`4TQxN:[+meIOkǴXQlVɅ ~<ނ R4]&Ê^Khas(]G+Ѝ0cGŸFl#8awz֪mkq?R@+#rC5Ir MZA.ڼAMg%"o2Ai9.Y|qȥvl_y@U1rNG*s~mVK`0z\e{+:j6`ƁЋ~Ty] Х`S6=nwDJ+z󾅵12WOcT\,Ok:7O1p{_} ̻ h6Z26*n/7"ܗ}/৻g}MS8}90Ju[95uutGyehP9(/̧]W}zzc)81gtUc9z~U){;HUt% W"E5L$Hv%{RHM2*'[OJ66l>j'6eg|]YT_lLka~-rX~RIZKP7}Շgzf^8xI^`AQt>؆}Oy%*2L؊L+d0,GYxs%Xd#Zh?m8ǘUqNf3t5QEH-h=3Ì،a$HxxaCwvs(Ǐ^Rôe3m#ht?(hĕ1kƇ֑YhXU&م*ɏ8`CUR6)n2IٸET5%*2D6IhNUH;ASIqP|ӈ`,I(yÊsHlyAs'hu!{ oFSghq~A!A,^GDP9"0QŽ-RɓFqA1u%g3PBsf٢♪r!%Y{Rr @b9ҙA),(g)dfI5y/Ud(XYc12%vLA#I qrAɟ`bYJGq8A&c٠zڡ ":$Z&z(*,ڢ.02:4Z6z8:<ڣ>@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tZvzxz|ڧ~:Zzڨ:Zzک:Zzڪ320Prz* :jzڬmiU@I0mg d )XFv`-ӭ@ '*}+]x 0i?񯺊 d@00!IGv) J1s qʃ0w"':11 KC GA^wJx'bK;[SI&˯D'M{ kjG[: $+x׭J xwuJGFA*K(uGG !k@v"Ƕ4b+W+![u {dwf[??ѷ౹. Qm{"'˶V;s{6[8+<R `6ka2yKRX&zRj@@ fAK@k®hQ+@:Һlɼ!,%C5 H*\ȰÇ#JHŋ3jȱBCIɓ(S\ɲˏ/cʜI͛8s rϟ'J0@]ʴӎC4ӫX% @4``hӪT ,9KgklkQL&d@VU@*^bTQ0Y@7  my&߁Pa2 =ݹנF%mګc҅͛Gت{+_qcHxR̳3-P4ҬC6jz%ص__n[L*h`h}R=/pp۽7)ePb5CaSuL$u؃Hm!]hБ(Q}6 _\襨XQ@2 U^4eU T~9~6WB?*ZӽE[zUh`wI!UK(Rh@h\`i'RVHn@wҤfO9fPV5(gw2.ڨKCJ}襠4(R)ALQhQS)"HTATkP+wuP_ +]xfBE@0R}쵦NQMt@bҷʤ-F=Re%KVB>+П[QE+ĢA0j"+/Fnv,~J=,72"> ®M!ztS7 ` Tfi0v jñ!}lR8Qfyl 5ҽPPJ u/6a&gNB$i"3:=CEDpmψK31]+Ft.tJXGܑa }+pDHYЈ #hI qZ"hId,#A/ B+HN#%,Or:Vnd -]jeCP(L #%*Ẏ0bM wR&+E %$ܼ+7ЭF1LZHāwc=}F?xy]O}VOh帧yUi2DwIz$_9ɝc(E61Zy%,ފ:3MM*mw{u,_TɈ+[GkPfl9hZQ6흚%s$ \EY=U㋩kEea&dҜioĮZ֣4M#zswv7pJ2)Tn[^` OP{{y\0|lBC\/o ^~+`lcn%ay6^/ 2>Zɱln.;`'jʱFi i=TI4ϕ>"x׎Rl0t8~,u:`>c+\uht&y_QԸmR:(=v.5q[ hſ.%uTuW jUY@Wo! .#L> tݠK04#e_Ts40RhMeD)-zġ8ҷЎ-HST<H.K 璸/ҕ:_t)pX|6\YBJw{(o55~n-lLgq.Nnr7Hsێ`]-] }`R z/:p~ga$s˓;[Eʇuo&Ũb1{c^ΛDNj0-7xq{kb PvUvjs7~3Eg'wv0{)9G|CD79UqTbv*9W}1w6EoGvxllwu4,a<&v~ v7oCiA cMf+WOCwCVaPd%Nf'RvUQ3y4H}UYF(SMs`JGNsȆ6aXh @^EA97Qf'h@B7\PH0y$uփwfˤz׊\K1cS+'e0y؋QWdbRw5Ƹ9"dFe ̈WFNeDwh;phf8UgHRR8\&+;쨇@w؅xxmI菦,6HYa72A 銫@dWwa?!5&g7!H$P(HAeȒ%qh6&${8SG&Wb|[1֓ OqcT ;)l̨<_+IE%mEO-dV@H)b{ bًH5#XCcsOXBAWh=I8]#msx鑅iVdg9.qz98)VoșN7&b.l3kibT)& 1Dŗ#LSLi,#b%gp-d‰G'SQ*9H#O )&)BaSיG  !֤ٞ!Jy9)-r>-ֹi 83$!ڠ'"" )"hz@OZڟce&Q-6SYɢ4Z6z8:J3>@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tZvzxz|ڧ~:Zzڨ:Zzک:Zzڪ:Zzګ:ZzȚʺڬzSt45:5:7 q+J՚ҺjڭZϚ꺮ڮ)C@ |"@ [d g2I@E*IPqd@~R@ @~.yp 0MM:GIy{G KDZ+pBаT([9KHKR}]ah8+8w x q7yS[G8Ox ۰N[+r6+B ERbmxǰ(7f |^[&[бQ[Y;"".K B+L[dT˱2AeRnUI <4Dn(h(TT@WQue~fUl Vhanc6ejPg>4XQV)(i\p'Y3^qA2[H2S&} `%喴}&d\vhd@Qb7 ӚPRMpbt9Iѐ9E杄%՞!@~A 'F^>ҬqS PH3SLr|˵^4_l[7G[rH_]]c2:u+í3By8u\d53nԒfbܕ|v?ޢ3v~7Nv"@&᭣rbS,3`g oI7-ZgU2I 5 D-N/~&Xa7|#42f='sS8$mV WvU4"{V;# /D)0 m7)[f'jwa 72ڰ8.DU1 (rq)lPeMQ,a MW+^[@ U$ci]v5&v\H۽1r^b*gISL} VYVö; rhj<b Pbb*Dpr3NoԖt H Iib7\&#5"H:8Fl!Ex2b!'l Z2 6`qj =+1"> b+Nahg)ZԌ ˁ8Bgz9)S{6xӢHUz3]\QÈ^mc"$C Rh>oYB*R 0l(JjjP$:› qc"<ԑ(tGYVб:S[E_}F~[HvDžy*pm ֬SJX\SOrs5JLD((͓ʼn*7 u%VԾJVyEkɛnDDJמV/̚60maI:)"F+r6PFy?}XU R+iraES΁wEo+*7HfͩZoWlFutok]w-Z`K^YpW ǭlu9 iTm&IFX'1z`:v Z1I |̮a];_ z+ Z*^HъYL쎑*]tla1Od.?f5UePŏRB;ȰlVLn3YSB[A|p-F]B$AgrK?C,+\<1琙_tI-{l?N[xM;(s$vFv7GH]Q:ȮĊ}KhD 5#ތ<7ZGb 6b+u:_C`Nh4;ĒZ6p[٫M{d0ӻ9 K"ߧC^G.wv/CwPG2sǎx勧e r|esF^1~x'e?G{鴇.uoe !OeM4 *vxCP.uIu]}NQK7[2y|b{-)0 (ydg579C~T[\nD1e,+T_%cwK{4(N497>?@Z1RxFh7:lML8-|VcXxsb#}]؀!zeMlk؄77\T~D7xvxs{55iWq~XU3WshH[Y8U*x}ሠm:AK8X X*׊xiև'jjR%{CV؋'cG")!E1M'XVAcy(QȘrXCYAu؈ =xv9bxO'7ֱJ$01e'< ` Ym1yGU"ɘWA!{!$ْz! &uLꔄ.yXK)LeZD 8AYbR4c8XB-AY`b9dYYfjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9Yyؙڹٝ9Yy虞깞ٞ9YyZA d: i: Z *:ZzX[ dϲd w&#zmxI@ zJ %[@ vR@ s()VI=Z x"rAIps-ZJNj:' [@0I@xxx[O 6|b-bJvH' qA:)אNѥTnOqY*)b*[NNq6A q &C nꨂ*bMf"bU*NtFJ zʡ**p i$iTjJ'Aꨐ*e::琖z@EA_NᦪZZ}::Os*jWjz&wpC*q cj "PڢMªF F_ꡛosʦ0*ʭp. 5FZZ06$&O!,%K4 H*\ȰÂ@JHŋ3jȱǏ Iɓ(S\ɲ˗0["I͘r g7 JG:`ӡ" "H 0ӯ`Êň@g *0i@طp9NU 1߿"N}z ̸ܵ=艵˘U9'jL\vε@)Ұc88@ YߚVm=6m9_O!2 kn{EuPXϾӫ'NPp0oݮߏw ֞ ֓hgLTWD*GDguL,@ExW T<jk1qE@Y@ueT@ A\m⏙N08$fG_{PT\V[j++v f 8\ʑi曲 F w^Y$`9 n4I@dN!e^|$(e"ZcИJ^=*vVmT4xL 9Bĝ1nbzzңKhTN)뮎OEkk%鷠lJ.Z5ޤ>ްj$ Q-6{5-qm1wcV o"(nT`k 7Cx;hFmp %9߃(wW1V|u3:W&3 N{[1Alf5}x%ЂX2énVlvl9؍ -iu=BI,O+ Izx%`r~MMg+,n hs j8U#`PQmi~6na.ر{.ֲu_d s 9p[Ši=7:|=>JԺ.3yS%( 00S{z5V{`tY$J 'X썄%d GzRA^ᮆ:VU0Y'kU~C4֘̓DkR T bҿЃӠ6XeZ#z>moAx@}HMZFK{_[W7^&t,I⪁@ECT6sL:e"OLzRTT#yj AǗ U|Mz ؚLq*hC*ӕRUA#+jM'و{4$ފ3wH@ oEôM Gٕo)l^8{Idy #[ v+3V1q[HdyS[7'Hk~ś7[mOѹ\ iFS< &37ݞ|:AnrIk35e8#-^_hV)2d@L>\Դtx ](IbNwkUw:T)?˻ҡ-Լ]~z;1ؠ%Rhi+ K;*՚rGz5p6‰_χ= iG6a[ySmU;{_mAhEnc'R}R/a94>}=Hxgdo4`enuwJdߤgv9eU-v[\a5_dH8fbSx'&8N fMp|.zMa3l}9XR#se"zDuiK6kwtByPՓxXhUlQc{dd0Ղ 3UkjvyiqN#!whKxDy|`>(B O&"⅐Nh,b5&DXueDxq|tUp6Ã؊gb2x+'ȈT8(,I(7~xFEXQjϨ1jC;r؈XJJp%ÁFI@WgSi#nzbet{$(X[s d9WΨbHto!ɎU"9}b0lAXx%Ui8.'JC:)wDEI VEtMTCZb~X!"CSs4bByƕ7a@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tnny϶zJyJmڝZ:!Pb@I0I@P@ [p6)RЩR d [0 "ڔGW%db!J9 ת )- @ zqro# *j.bڬurJP/&IPʬ$w$*x$09I @`Eq *!x㪱59I JJ$z11Y*2J qsps*kq%G7XW$mX'&jq+U"vZ&W{*wE" :JuM 䚬b@ u©bbΚ73 *Z+:@Tbd 04 e7gູb궈۩˪:+K!,%O9 H*\ȰÇ#JHŋ3jȱG>Iɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧ> իXjʵ׋R 0[f +ݕqeЀH%u່k,6.LD^@e 7L^Mc浄͂<u Cnaލ4eӦ 7̛ @2ƣ+f`- R\km ְvf;7KB U V1V&|1;I1Aop +{rVU&[NlLڵ-/4ԂaYst)׼,C'ev!'A-=PNÈtկeQuQR _',AYsCUXvxqR@ QW6vRNᷞkxUZCu΋ `Rgo)@W89I+[:QSoC~:VȮR8מ{<;;;SEk)`XN<\Sqҹdނ5`_ˍJ銭 ~X]K%\kz$R1'uA&F7W.))e2/ qX@$o A4$=! V~4˴= /#Aapćyź{V:@M /c(fDt I@gE#j[.tըhяc28C9>HXao=;^dAǛ rC;Bc"}ȊpolTwƯT1@9H.WHr]{FoW͟$-.lrQa-bHRNq?)<'FlaI8B05&T2x":&9KICB-}ܧtJ5u2~A. bT(}MbqXXEQ4ԥ<ʕ沃V'B&RlŒ2Nq.2N8%TӣNUE]!> U4G|aT1T"K-0UMH h'XY:4Zh&[j~2J|+CZy4B%zXQGϳ U_F!Z!Pۜ`)oZO:e[Z5ZbOٲ-RvvA! SρU-tRoQ؄ Cr!u@ BvԢdڻlGݡw3mPU>B(&sNnL} x_9kЭ-M{ݹ-;"*Z ߔ],7)f8aߤUv6GVm[@_ZQyߪ܎A Bnx\7Wz;|d^!m 3Ӷi݁Td?֓U}*G*_%x)He-z޹Z@s (LJVbɀU7YG+Z*Vי%.cr6,QͨIVv )C&xkXjl){hoJO_zNm p[%a@5v=9M#MLq*@MesoN"1j'9nld|(WK9o^kJ|UMs/~-w"کe)_ga~jG_}~9 E+:Ŝ |*ߚ_2ZcQ)M{Z3?u6LK.rTxz:S:n'$Dзka0vwB!gCS'>,Uq2(BpV/GpP8>gS3ȀP8n=FaF(qǂm}u|6l^|w|p*w~c~٦+3wBcaAr腉.xHMkA 4qjh^|b}{Xs8goBJ冊U9%W8]U?\hUp;p(P3>8wx#hNMswg8ct:8XB|?<itxSF7肄schtਈdso)6WьHa'&@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b!m If hꛐd}jZl ٦qJikzr:|ڧ~:[@[ *JI J[@l5- *d [ q~@# eoqCwJr:ªwo p ڒ%R JҺPɚ*J&RI`zM[s6 &{f! q 溫j>i$ffnRuԪǚp]&wA+mfa}!eqK L7?gf$j8*1+r:4rː{KǩwzŚ m;#k:e媯L BRqfZ kqڲʷdҶqP[:MﺨFzwڤ+x[!,%S9 H*\ȰÇ#JHŋ3jȱG>Iɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧP JիXjʵׯZ@]T,Ydm9 4(`Թ+PX L,I+Ucn h a 0/ `2% e uC(+b֮sH2ܚwc˒&p2 /H,nsRݹL*,+49{ihK{WE5ZA RnYhZ-oy7lf5PoxXP@_Eb"2%utYjV7EiTfe6@m, G :$y=Z[rU4B@l8P~6a\ a eXbu"Jş|vo)^}Ƥ_'6Ћ1,GAY*evr**M*]2 6:Zi +eeM[aq:ۧfjX RjE}U5 l>9gco@ dX+,YQ#\Q*9a L7q yYlU"pQvoJ l+ˎ`r6Yi-|p9yrAՕsY!olQb`7LނZ)5YMpfW=O6Ou!5oSi\ \LD.|ۃo;@&޶azˎ/['%aiV #=M}Nb:U E//~{tlnK;+:GRh[oԼ\/)Ȭ9o>͑E`X+!Nlr?y-[ot{G C)PPbяj'+=P"C`IdVOĘz#iγ5[ _A 5\Hd4C-J!YPm-QnDѬbU|Xއ!  HP,tNƋа橓LF8nhmG|3<.Q"ex[ F v[8F4fЎBP3FJ醘cTde_E,:J(Qfq؝Z62s\e~'Ȱ萾8>yA2@9#SU$57qN `k%%H>1h=!jsdg<PS:#KN@'C}Ӳe8]J6C5$b&p xT]~|&(.6 MX~xؽ|1UBk7eiod=kX6i"ٿTf:5Te/-)Y'UbƥTNβX],J)" Yq#ygU5C?E='aGuk_G"0 ٚd">bm*T3gȨM_rRȐdn`YA}eT,C[79 :@6ʮZHOR(شhlp?>-E@jWdrDTE"Hc#B^?jmΖsnW*rJv 7OwZ,tBWw08[y7#B}`mxW@ض׶)bmoqjӹ)ոVq5(axZtlû82 )0L+v VVT,Wu2Ml˜<"y{f)HVCa3x=@V=|+ %ЎD:,/X ?B-c bu 4;z@F}kP6iK`aٶhΊu"gKaҘ&@g'*"u3[f]Z2LHn`n63|m[ `𧳍Tg'\G!xƲu=C{;ޠNժ9ҾvA0퍟Y=y<^'L,5kN܍sLPoŨnl F' d.7<N ~Φ͹DH6s9wymNd#0ּK>l#vdĩdQ^ޮe]PZ[qL%ޫ W5y%a/w]ﲰW5qlA>;]Ϡ;RI45Ets̨Oiyz uqc ן> : E'sR]Yܭ^?rsJL@gP}s5wt@앀yŚ\1(YnF? $X'Fc3:=p68o9ba;(|/jfxDX$>e7=qƄ)IR(x-3:xSH3q~Chvȅe'gegeȆ3r_4OP6'xH`(>##Bpvxe+{xbr}oshv>E8R3nzK $}8azpRqI[ݢV(^bx3i/xx$X&u!٘quaaȅoqASU$8hV)Ȇ=y!؉\Aʈ!M,br'0R-a(!.F#Α0e1}8:<ٓYB9DYFywHLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9m(vSqB9i9Yܙwi⩞ٞ9i[ dܲd 1 dv(IП[@pI R` J!!F"R) )j$r* ['I2[ IS R;bQ_;ZF(J A1zB$8 0&$+***jd)&@ʥ !$ jsbN:ڣ yg\. ,ȣey&(m 0J&:z:?*@[m*#1 oʧJQʧ HgkW:YXzD0u m72ʫLVڤTjh*0j0]ڟ ai*KZʠ*pbQJY!,%S4 H*\ȰÇ@Hŋ3jȱǏ CIɓ\ɲ˗0cʜḮr`7 JhEiӧ T ׯ`&U*& ˶-H4Yi& 0u˷ߚH0Pw璻 (˸@(0@@`i:̹sñ,0gT)\J=6VbSr\bD]RNf[Llx~u0yg]bbM*Vf:!P%(MuNLut.Y.E@*T1:ֺY ݬؚ&*F i:6"@h#D)Q5vm)PJn6P4iN9V.9ݱ{)n#2* 0ݏGkc-Q ;)oͦ Wh/{.ʣ'|/祻1S'b[6lWv>w(VfUےg[tdzt: USv)VfT(V{Wfc7 iLy>()2NϒzN(J{*<4U'A.ѬLU:pHzթiU)j5t'Yfg h=`RAvԼ65(ؙוTQ \E;0&tN8YiD;O:֓K߶N6ujg[EMP%,v)ckfF6ût1jLVv]\8HU!z-Ԝ>!YVMa< .סqRjݫH~BL>Z~&Ҭ5\}Ќ藙6pR2] jd&>u8XiI`slՏl)6o)c;QeǺba*) 44n Lx ]\`inHъ5 mr֞mvs*vU \Vu=R`s?عoEsmKB RhnJyzDc"Wե45 E!u$rMXX©S=e^{=/V;ƴ0m-6)X#L;Gd--'6iQ9`_{UjKYv R1)OqVUOv-iK[ p+i/=aZ d ]ǀ$/p-7 J!o lC01ј#ς/jnq)H75\9q]ɥ@q7ӡw2Cwu9mV_ϟK8exi gV35RV^؇=׭tz۽u<)rB%e^Tpu=KҕU nE`ԓqvm%/4MxhVèX] z-/.{lJ/?;q8m;Ѯ\N~9L\n^|occ=ZBW>cJ p&B[Mg91۷9<080G%.R}/fFKg!&217|hS6D~f=}=qh9k7*^~]HXLAPqOj>VXXgF\{v:Se4Lw&hs!5kox$Wiszu76sX6pSzc>T.eR:k熖UW؈{؃ȃ4D8"#=7Mg?kG4C|(;!(+&rxFrĈ)MHXZtX*#|-x\dX)W\$ƍo8O'A?Fh*AQAȎw=DUH?D~hݵh+g#$!#!!!%Ӏ't/(1Y x _r%&R#!P#ұ2Ӌ8 BIY;3}KQ8(-Y:9R9\P:jlٖnpitYvyxkI4i~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9Yyؙڹٝ9Yy虞깞ٞ9Yyٟ:Z:Al]9 JA Uxʠ:zz ":$Z&:H@I td @w95$d`pX( 7"lQ HXRT,zp*9F, R  --H-[/yX'6[tfقY  UX'cZbpNjKeטM*࣌jp9ےl:[Z*@@v*VW'PZsuۂiIA Qjp6ʌcaA9! AJ 0Zq I1*:8=*o9j6lʤ1At&Ԋ~*JZ[ c P*h𤩖`zR `m\*RW:c4njmT : jf*]ڣ?+ZwZd@ GI 'Uɱ@!,%[4 H*\ȰÇŋ3jȱǏ CIɓ(Sfh0ʗ0cʜI͛8slO 0tѣH*}gC.Jj= 0A" $ҪٳhdI+T4X"@ݻ&dA0a @*Èl@ .@eŘ3 0ӨS'd;VjyhsT(mJմպ8Mp 0حlL*,qiܺ8 ҄nG )"yf!ɖՅ߀^Y$9W\Ym' CYFYvVqUd^E ']eyětap'a8&YV!~av6bVfȽHs DZK8x\zѐ AՉ$e^XzzɆҝfB%@31*PfZdi`jrSV9Z^K]֖[OJ6iӧSz*@jL%щS}M:  I-T>;KF*nj[k/R@/9opW[+Bi'-*,R $?< [-qBTcoyLZ IRVdlȅ =2Fw 7LDTKM`#k=\1m+{[,amOOgy']haFzcv'K8S1]jA;~k(ĆK>jc՛Qg~w'QA4䕫n]ާzn uxA&^@ȿN'e{t=T<_@V-~_5MAkO?biI.q+ ~9b-| w=} ̀5(HCYwMckMVxemy Q: 3X}A9lh!D QSL %«ze$h@uOWb%l].r۸΁:8AJ`(H#d^ Rc s[<#fa eŐaQ#*7D.-e*Y2NAmYW菼8`R ftOzeVƄf|Eոl. kN)ʉ3e0ElPbg:xN)4VT:s~$:Tï5.JC>CKFruXs#4It\@Pnjd곀((kх+1]%D<([ӜJ,BOZi"T\z95 ' 0^UAR)&֡_ ɷ8 ifJdiTa݌Q d+O`B7jA>%Xm^DYX.m*EV\}CYJ}X{m=*Zb?-zZO-ʊ135mpvȦl'hz.NL^,wNoxRn]/y5&7pE|}\not\MhټwD/6+/~[WKu%c$Pd e. N # ]h  &eK#zܖloPq<_H2^|7BR }JV,r+̑˧&'<iO/e^.ǶM/ҊRXu~5S+b#:62AR#n)k.zmk?$oq<%ktD.'(6b ݢɬqڸoM2}H91n)ve{{\ 37ir7̥` ݻV~)vIx:A|.kG9AM"`T99mu=7H_:-"[cW=ޢkλ@-}4Fi0YW|v%:^k흧֪N;Z.NڹM!?_V4TI]Ue˄h̶.ZHݰ%Ҏ6l4mn2b!jFgݧ9WRYI6ae?w`Gdf;Z &jw hDW`9}kNVggfGloV)v57W$}%u )Vo}VLc.UrTQ6xA(hzgMg~ G9%UHh:%\rtp[atgag&UBl:Ui1&2#gnnxU6I#am$lx(`6VEag3yT5ve"}#FXBdwfP8zWB"D3ik.H@Y}qӁ($3'6pȃqcA2R8_ugEVȌ&cHuXx5hdǍ胹9(؅w4xqe(8[kHtE(4ShƏHht(S%iT"Sˆ 96(BzٌR%V¶h"%KHX'869EXdG؊!w:y5+! 2y?zS6g;( yrgR!.형h @W0Z9!Q#y?jLBeH9#nJ—hMYA!"B/f12t%z94Iơ# :.,]b)PDx1;hs㚳qfB%.ؚYH;Qyؙڹٝ9䙝_V虞깞ٞ9Yyٟ:Zz ڠ:Zzڡ ":$Z&z(*,ڢ.02:4Z6z8:<ڣ>@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpjbY9/xzARi๧uzyڝ}ڨʞ[ dw M& d c[[@ 2vprw2dt.6I@@ *v.w}yZ Z " ƚ[:K:pbjy*:oZ!s6RЩ.WZ{*a"> Z:*z:@d੽wfrw«ڰ` =!y:t 7;׺jڃJ :`J@c1 ʰ9 t[AA۱<˙ڲ*ڃN{*@[ʪ ۯZ (gk&-+f" [p'wڬzúbq?9J *F RK G' w\G|/hH!,'x ` M J!I-$Hŋ3jȱǏ CIɓ(S\ɲ˗0c,IlT-$!dѣH*]ʴӧPJ}$88D`ÊKٳhӊ (jUKݻxkt΄ tK$_*^̸ǐQb幩@匆Z̹ϠC3 <$jYװc˞M1-u 87ʹ NTR"!NN oԼ]vËOӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`)dihlp)tix|矀*蠄j衈&袌6裐F*餔Vj饘f馜v駠*ꨤjꩨ @RDZVdaDjC`&nzVE 4NޱlUd] b~zFexbAd*ljMljj7A˛i5 福=תs]*ݾv7 7G,Wlgw ,$l(,0,4l8<@-DmH'L7PG-TWmX@U[2'1o-u~0DL0 mp=7`@D4 l@d_wLT0l{EpkoLn{o~h.@o/! D[4@/yEv\@Ko..z!sM~ۃ]0<L `@\ eڽ97nkfW*y"l8"%}{Ꞥ? xY`׀Ձ_3^|ۖ:-p$4LQ~L`I )"8(y-wǣG0#;,ro; _V͘~9XtH4xQS rZ#rȵ>Q&ID!8< 31EȤmm^l exIQKR);dGh#{#P:|ճ@hO~zl`3=&xtQ(YNQKK`lSxIG=Ra3ck!dxA&ž瑅qT!o ys b( dPHPt qaEy(CR!|L׀~mħ^ ꖚ0+D9֬҃>Y/Ho]@F0sQ=͢!OhE#=vfE[zBjM Hg8d3R )(7bgQb< Jj+ʄx@Y$&x6.I6j'.Kͨbbvn!!کW p.SHRVNn,eo S볕ANmgsK`G֮Ѵ)k"ROml'CV<^䈁kBJiTj7X*TF@^96j%{#;*a\j֦őPNwfg;? SUgKt}7Fu u_l"MށNndkY%x? 5zKםgJ akE#[n;͂Y]Xz9X0S& 2kd1]7B1qlZgd5L͓SטxLHa3 -Jɔ048k&QR}9@S k(lְ)xN4KĄW\DoeWu5<ߓ'mK?ix~ (}r9!rt7('(!)kq/r7Hx/5?WoO}?NzrIy}H.7Hj4^1|*o6>~uB^Ր\|'>gUoyK>,t~Oy7QWc޹/zso:qj|ZG|#u rsAIzA{{4lXfF4watw}W#6fg;xB}/T8(jk hev`.RGU xpԂB|у}N5y-rnÁ!Wam'srwyg|3Xh3fUZh WIfX"_' h+rs"wz"&8顃s(s"1h:u^xOMhhjH"FR}rjd"KŅ{Xacx8~2.D0; TU(Hv8h-Ն[ BQt!иYuK†!,&8, f "|B^.W2QQUgrp$(A ɐa B_Acz^J!. 66$yi1A8YT?wK1h!!x$!+^XPQd k9|Xx4V>ymHۦ['"xWI'Ehaǖ峍XJ*f#IMLXdv8?sPOم6u m8?hiR2hv"KUKv Xv)gL#8c8jecH՛+)7 hG~K]ωaqW)H  IAaOnImJ>U~D;吻dTv;8J@Rix|K:}zY;H8|9: nZ .Hy!tU{b=yYb㟸[0-AGUXT(q!v`4ڤx^XӗGSRj[ZJKT}%xNyE׆ z_rj*jkmʝeUZx75;zo;5Z4'j"?]SbF#( vp*ʪmT*YA6ꥻ c&~vzO :I?Mw7ՀF+\9Jy 8j` xv[yfHWʧ&T@ ZqVY3ٛi< Kj 2V'F)zi<@@0ʪh:!*k(zbק7_yEYahJzL1`yz:ۢk4 JKe!2X C"aq~1IlmwsSG";|yP:J؉gƘSAR¶QQNBI 馴 SZWj$;;oWj[$MqwYKp%әoSHґ4١:;5ttwi%'_ЛUK{kltzk;Lk-仈;Yȗ;yidwa\{jSfllcbfچKTG^ # .lj7 l- q(ufgy*.Lڼ8s[K=<P<Ď׾5HfeĀ۳5̼'DѷU0Q*(ٿgmm"X1a,2u#/q8A,(5ܕ[,nԪCuQ{&m\ђڒ (yjZ2&^ ?.'bqeS" S-.)Ix+fgqNe/l/'R)'2?#($L%s[+NG +Jh$'\4rX,眃EJ6xW+ z*8#ں7E'J=AO7 }>X6v>-t-h7# J3K>7ji>vb@53TD6{6m\vԄP,|?SKAn RFGMi,Vq3@8df:jK5/9ICy)m~׀؂=؄]؆}؈؊،؎ْؐ=ٔ]ٖ}ٜ٘ٚٞ٠ڢ=ڤ]ڦ}ڨڪڬڮڰ۲=۴]۶}۸ۺF*2Z ONl_ͽdRB rQ-A^~ ">$^&~(*,.02>4^6~8:n?΄>8@)=^7C.G1E?;>T^V~Xjq=ܫ20\.RdpX 0N < [L+e9;E gǽܟL'<zw܂N/N_ɧO8{\Ru%JBzvȌǨ񠌥Xi8! 6ˇ.4.뻮: `NO-7l-qޡV(,/ځ2X-s>p aN_Q\0g7!+=1.sn[U+k-.J.@^ϾAPA 7 /6UmАAfyr<~pr.WY4 )K#!,@@5 H*\ȰCJHŋ3jȱǏIɓ(S\ɲ˗0%FIM3 pϟ@SУHU0@L4իX\J)]kq)R6Hp ATޝ.k\ʀIE*^̥6Él̙%Q%D,J sװckL0M-v-Gpnȓ@ B^{ʳ+|K2 nXtk_~)w_@3bnߞymFeg FS@qpN.p:Wz("CK&_GQ5ՍmYb!d5P cA68Nh䓝qgw$l51K嘰U)dYmER4杌]H$-q51՗=&'ZXf,x$B)L9ETD'AsJN衰ꙫ(R:dPa䯮)UeP~2KWh"e:Y&UfY{ T+MQ:|V(VEWjo6Dػ4o YY; joR׷s|$o)<Е.,Gp|r̀z׷U,`D\r}IrYr=&EwuKXv{ZYu%6Ocst轱gGYL T."hyL4/-Yrr~7S&9%",C߽I,έz흳ƺ*@v9,i) JW⑷-,O@׻?wٳ;u]ԔY=~/&&aKvw*0ehk!Nڳ$4+GVOSS ă>9aS$H8VӢC9#=?ZA IR,Rj;1`<~Y\EɀPIK'P9Sbr$^ԉ)Ԩ2LBj$jx@-y')V  K=ӊ˩"sv56x_׺Ѿ0:# ԫ%' Z3Wb<[ekE+ \'J2KEe9.JklY QJEUW%4wMmPZ5ⵏv3.\v6jcGk(.t-mlcΌP+7'Yx$w}S"öټvm,gJB5p:kIą|S)&fQymr[RnYKl"xMv sҋs/^=tLxU%p.4Dnf?)qij)&8+lLSkjQ\x\2r FY1n'_VQun;lg yl2JZ}o'hv*xjжg"|Ul3ڝx朐U;?~$g,ӱ .ި+Mݗ4 ?Y<{ba.s':5Sdc xY 9֩|boS.Og׈uf _ήyf3" mXƾnH֍yCCgA"͖^[,ZA $Z>GWnL>j"j.)ܜ `hĥ:Ħ9-[X\5@׽ގ-s$$ONj N+v} }??Ww?^]S 07mn; _.?Ń%HT[V'׭ȿ o G zo=FՑ:i6/ˤmF_;7s,V3[7{~Fux[u.}}5s5uzmc|fdUxK r /7ڇDuu/h-KGy#v:@ d0~SwYefUd@ `D( ҃׃ 兩rd>XNww~lHv!jBF{}o6:1d~qyu~h1}xIVxgt@Ȉ#C^nnHsX75x:kh3Hv](Ih։xrNȈӊ*|dzdGL8:7$d8@ĘGTċ#(ww6f(Ku&^MzfF%|؍dWHBgm@Tv帎BzXU5dDBhnN(8<1AT(XmjC|p).?jYHkBNiɗ)>yXipRL%MȘIA#0'IT-"tgui'*y TXv !ױ!DH)9NX !ɛjsX0`( ,M!51uYS$T!R޹&L"+ S@RrE V_,y[Ϲ2UaY"9hHr;:p28u!헋Z ("J!CS%#*B<[,:4Z6z8:<ڣ>@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tZvzxz|ڧ~:Zzڨ:Zzک:Zzڪ:Zzګ:ZzȚʺHMǣ7jq=9jתvʭ;:Zz蚮ZR@ [PK@I02ʄI0*[ *ݑR@ zH$[`ZtuA *dbI@K YZ~[e KJ`* 4;Zh!) kkI@ D[J*񲛐/;G ) ^' [hKK5{HB;27KHԳ۴@ ԇD;kJ*QۀN^D[ۜΊu D^ U+#Ӏ:E[6r;2 uR)^n O :+ Qi˱  ʮ@udZ9k^˯ ;*[]g6ꊪTد{!,B>5 H*\ȰÇ@Hŋ3jȱǏ Iɓ(4$˗0cʜId˚8s괈`Jw Jѐ?ӧH:& 0ׯ`Ú:U`֬\]˖`Rd$ B@2 г߿ƕJD^,XdYwn7kYԛ0Ll3w^@ X9TX`ͻoPaRg\g4<2`UͳkJ= RtU6܁w>|}f\\EniZv@uUw!ZHtM4UZR~G\W!Nw\d(">ׂLG`$ H(6PlIEDgO-*`ؕnQ\@{mq@ xb'UԚlމ=&u&)(gq'Y9(M1`%Lwߣ2V)ĵҢu]Le%dNn5b-i'NBX`P؅#S  P|K|% eYĊ4Ao;VphTZ-~FP~zԊjM>&Q oԎ{TJop9o?!PSiCT)H.`*qC"ݜJ$#,`]:U% [=2w &'qzwĀT/?S %/yk Nߪ6% kh H | U&Hxv ! ZHC\RdElAx!i~E%a`/iA_+HȊ>|*g a%e~@ A:G6č3ҚhoAf1:UjH|awEBS 8B?daZJ$edc ?\Eqe:ay3zK).pZᣖ)MM$#Lu6y6McJ##6fm[":5w З.iFj5A`6 fm4:f^(n^DiQYrG$KiX :KT&|{&N??M#YXT I"U#m)$M*pN J% k6aFz1 uB[H@1|^shʽ& r<*0tX ZF ~=^8iS `S)[~O,ÈZБjCib܄-_vSΰpCQf$4SYP6to5 \jؖXlVI׻;ݹ >dLgkrRvQxX=B*l3zU-m_5ӓw_̜9[Qa/;M " NE0Y/9=hyk6}Â=tXr0.Gj{ÁR ` "[xW56$}KxQ IP.&G:؄0[` P0x`:g\w>0cx2Ė^ٗPchRC#2ro$QZ>=]b׊f;3c򴋎8P Xxx&8>qazq6zx>5~Waz[`iHlOǶ .%^؋5FSkp?wEd1sy"rŲt17T}cUD'Z**1yQ7GK␼x<lGXgh֑8)uPD¸HB)(P%Y7=iyD5ؒJPy D^I5rTb]ձ"؏e7$B`ek{HԴ0閄UԈ1)9F֤{nQƍh~k&6&);(Tc UsdWWCyY)cC [QC\ٜIz@B;D[F{HJL۴NPR;T[V{XZ\۵^`b;d[f{hjl۶npr;t[v{xz|۷~;[{Ko}ڸ zʹ ;[{ d`&+𺮑KI0K[JrH RR@![{+K (r R}d@## @r#CR !՛P@: ,; [ C{2;KS#۽qh&훿>00k-C+~S{I%,( P[ʋ{K7q0ľ[ZS+! Rqٛ6j<qXS;R[B<9;+%\Ŏ<H,-+ TE$R T|Fԛ-8gkȫR1;.R ̽@X;3<3ʺAS<\'f⺽ L|c<ʪEE'LY!,H85 H*\ȰCJHŋ3jȱǏ CI$Ɉ\ɲ˗0cvD)͛i90Ο@ jO<*]ӧ4`2LjʵӧPerk׳h~}ʀoTnڻxn][K8Wp\+n#KaTqHJt-)o4X"۸sƭJ[񌗯*V6ƵK~cL&@Nhꫢ_T wrnu 0O)Ԯ%FUqf]yOUWF(i:]6iTW%aaF G|"D` ~6ס`'Ձexc @J\UA~F(Z@{%>muy_yEI5`vZ@*qfK 枦%uEzJz)SD4K)g裒6% Dd&96֢םRjLMcTBr+N4 zXz+AQr,) T4AzmIB,t`adn|JiD Ztcջ/НaIjӹ7<᾵p v9fyS ۱d:w+m۩)[*4JSŒ~O,h&r4Y0/i72LtJ3.o>͔*}5@%V/JoYg)w5J``Mq+ت杴A*Tm9>% 8.'>yo3孫u^!~ZSӑ]_~F "hߜdzޖnU:YqC.?iK~@?]ڮ%P0}HTx#l?KY ̀BbsGf LRB,4>!!\ wlYJC6,j0<^gC/Hu_}w AENp(,E*.GvA(B6vbtH `'q3ֲ2ѫK dumGM$Fq| XDI1\$'!pԱ]=V[hu#;ʡȐ~@`a'/^/?ɲ;S%%K@ |ݧIOf {l V%d \C'hN 1FS}҉Ihi J-xϟ ayrF*rbЙ#:ROӘXQBѢ^$=J1j&TJg_=f/!7rlaS!MqA"w/V? d}kf}r{;}Вu Cnk]BYh#X $[@'Wj9<_CDa1N5b@;+=檷gC(]X|DGkAdWxUDC}oeZ5`U 8Y ޛ0ksg̚%*,.Ut ߕ;Ė#r)5Zȍ-/bJYd&76fDtUA?Y)Ƨgg}Z:BZUnr ;O(tu{hR7ϽU7oLZD3Uj5,sULc`5fQWs٬$3A+f&`v-?F[xs=EIʎuAFtna u;<߶Rv`gkv5 Rޢw=qVk.NY[7޻u .O?l,%HJ͘=8;ڋYk [uq9 <4%k|}E=9^m@8u7蓳FJQu'pZ׶AZA \`A.ޝѭr w oUW7Ib}_5D -N.v}ھL%{%m״}[?^ ں>r})0%go@)%r{)?Ro_OuG~|w~7dg]@ |gg hǀ6'WyUuv@g'PRGR/{c%hggI}rni6*Ga((` 5p>xOn7ZRЅ^|hf.^Gn$ cvOPY(A;rjHQfeX`%6Mh9ewc1hS7xRT&zX`/k `~(hXXru ч-#Yy6$fOzX%,vWi8tA 9yƈ+ч[5EuvuY5Qy[ވku8kV땊(Os8FP8 3`ȏ67oWո{vHAs>mW*Ǐssg'&Rf rghʓsgF7GJc) Ćb iBwC$IX8ur(!V_'H<$RC[SC+JٕA?i#@s^Y996flypIؖer3SF4-i)Dt{ɗvyRi8wG9X ~)ٙ(\Z5,陝4EmpsKt2vyygO'Izaq*Dn]cX;1Ĺ2GAy׍o"YjYpgH~i:M)fcÕٞI{9BvvuX~I\I2bՔzGO)*p{@AS]tRJ蠭!:9y=Ȣ-y#i282w!!e 9 GaVHvFM`s%oZ9p9uNA##d p2n%rYZJ~5Kq_q=eQblQJO!Xڝ{ʦ_jcN1#ҡZwrR:gbTEyZOLb*d9(A#V$ڪZj%j:ZzȚʺڬ:Zzؚںڭ:Zz蚮꺮ڮ:Zzگ;[{ ۰;[{۱ ";$[&{(*,۲.02;4[6{8:<۳>@B;D[F{HJL۴NPR;T[Vk:<I ڵ^kdki˵!jKZ;xt[v{xz;`R@ [(@IpI@w LGz'R~R~K òd`[ ZG@@*QRp ~F^K {}16 N+A [k9{'q,J&NK[K&}@AK`9;{bOxk~+[&6I !d0N +k {{ۻѾ}K+ǫ񻄕=, S[o;&8淄,’@p0Slò+@0Z{8LG I^ܷ NK;ƹK !Z”k۹k+۫JK!,N24 H*\ȰÇŋ3jȱǏ CIɓ(# ˗0cʜPA4sYϟ>hhHy*]ʴӍ@ dP ҤOj'`t [Ӫ]jWglۻlKT`שLN <߷Dr̨ gܰD,ٲӨA*&BQH&z U {&|+fKGImv3 XOO_@:J~fϷ(hL#oc'46i\KpQD]Ź6 [QM!aXh){a!jw\!ѱh㍻DPn]AGTq @v)v@qgST@p(uAuP|]IVBUy~xѕIhj i^-i9tT!FitR )И)`D)HV駖9rĤ| FEX5ewIRy)%.vfvi+nI)6nӲ:ۓbZ:TW:q5qgSz&٩Sp.+9b9Pd*e.'){kjz*ꨨUR1D殛X½e|0iE}Ȭ5zËARv ΏtW本$3LЃ4#3Y%3m4[k',4PیW4+N\Mͳw4D{a?vvj*wm(TH\$lq{l5kPuZ֦[0Kkg͹Av7q-W܈S)6j.6V<-5XqC{JtkΧn3ʩ<{bwMtϹ;~Ga{MYu?o \gx5A ׬d*pڢwYv7[(hkS;Y~>O^ g qN&g[L,sH@8rmQ'wl9HПd]Az!B%}j3ӣC*3D]:zK 8π #CWWzx\(rym4Nh⭱9IZt"ij$u:ΪS=-ԪbTh0Y80jtp]jTZ܊ŠMyVk9 9ZꓒcjrUɱXiOâ$Vjִu eI2Xt:Z0V^mLa θ! _}YݪAˡ`0 /0sm|bu#kIǷ\]m*enrx^׵`O.8_'|In7(;X{,ĎF~r7N7 1*ŕc)\#12HQUQi7nvU1{/Ho{Nm@lxXJ.OaXza|f 6n*dXs׾|=*@5\]}׌\%z.3Ay2 zt#o3KǷ%Gx# 5!lQ'_]1тחAhwt,>/Xb[LBҝkOHAz)ksuoX6s4jwۿ1-7؄4鸻0tG4YV]=8Ԑ5kTċ 9Bc.v_뒆4p7LojIqZIY嗮k-) pٟݛe"q4a\Fg93]pt@xy|KeuuҌ5p`O|K3AъVdW}G8q&^ w/q3: OC ,bg]Ҭ3C [&bAe*Ab$vZکe{yl7!~lJ D[I;rKj?Z\۵^G Â?I@d ew..>~d~( [%cK ok΄Nq+gLd~!jd  }-0ab  LIq 90{@p'Jpj ΃[vxGKM[=öǸd zkȻi~K)';>1{a}? >!jkt1ykm;۹*䋁@  d0<kk#۽4>y׽&ǁk|kd9G m;Fw+ƝWʧ~KR`_ !K/S!,&x d )2@J9(e&2 Hŋ3jȱǏ CIɓ(S\ɲ˗0c$M" e JѣH*]ʴSIO) iܒׯ`ÊKٳ!>"ā HM%ݻx˷M7VL1AW+^̸V$BpT'|̹ϠCK0âS^ͺ< li(aDRP  @ R3 aУKN>>ËOӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`)dihlp)tix|矀*蠄j衈&袌6裐F*餔Vj饘f馜v駠*ꨤq1$Pf]@JOq5TB[+XF,NH4iǎ Tw܊QfI`lv@^Dv^qU+Ut fڶvOAVB5\`Z䜫wiW 7G,Wlgw ,$l(,0,4l8<@-DmH'L7PG-TWmXg־,P.}إ\vهRKD 4SK1рބrW6Ll{1wg{}6 `Du0QFx y\w6T>W=Fh]^wvĈ~nkrl'wt6L x¾ϯ^<gwGԸG{?к3VoEg0UO{9moӟr'&$f:dJ(.}⨇>#\Me&o )!.uIR?P5AIrڡ֝1#U,MċO = P%b\4;d@pEv"H(IO{JĹ 2HqSƗ0xtKB:R "Sz7UKnr.'KW'b9+zYQ6 RX2ŁHrEg.yL%_= ;b]Zڤ汑b MP>*#'M:1 y{MUAjIG NuLW W88:VaoXWiU\#rƶ)Rwo)/[zݔVΕ'd_֨8i~:vTF%'mCnc,VQ ?qPq< WAm\D3E5 1˿y+慤rz0VT4gcyǔ8d0%POKܚ6Jڇ pۥx9:0tB=k$vit3F2lVfgرXi cѭ۞bS@! d[;s;vprzq i}Z$‰]TƠ̈,oSF'bwOgnTsG>j|󩟼땴`ff:?:?Y϶9os/sv4ٶvw}Ո`7y76}q "AZv%[j&nv:ܗ~F#7riDg {RwIy"y*x^Wj&våXCcEPtE7)w"A X!|Jq>ə!eGʦw_ K*QYNJa vVT >sh7W4g:'ec颜'sx{mPYڜlXyi#P}=8WBH`<8_;J6xbZrxZ(χغ~?5TXOOYQ婮l@ ipT)}~x9 9 9im`ub7ͺT{?zZmo۰:Xi]/9*f|)=kU5H;R[nzP(T_ܚ(ȋ(NR dѸc{&JwL{[.s;<^O8BYr4k'[ZÕbqD(#)BDɞ=XBaC5h8Ae>#[&=ƫ=A.>?Pz@{K56wv=$̕8N!!=TNsL[gLTЌs߅?,I;<ܒ7 >LTU=;tL,~f: HGQ<&o7"DL ; = "=$]&}(*,.02=4]6}8:<>@B=D]F}HJLNPR=T]V}XZ\դLYrPNdIJQZPฦn}vN|1.)AI~m4e=SswV5EVv hX:,{Q%MGrL#ǣڰ۲=۴]۶}۸ۺۼ۾=]}ȝʽ=]}؝ڽ\m7-GuC(Ԓ1=K}=1 J 0sMd+aSq.|N0rt[0@q+L+4ҨBHtQXLV1kNjdNX*U2U+r=A1+ð12uU :"^L+ , >.,-Qq,a6V +Yt+6AP>.7ٺ!]\Vh 40͡O%>>-b3^SX<+Q*vΠA1R!❵tNRA̜.!0% V撡愾N؟Bq]Nq., +}mQ‚rnҹ.'!,%x @ M J!I-$Hŋ3jȱǏ CIɓ(S\ɲ˗0c4Ila-R$!3ѣH*]ʴӧP $U8$ RÊKٳhӪgÁ s-PUڻx˷ߢ[tH`M˸ǐ#K>9@ϋuέsϠCTkū װc˞M!r-s- ERN2@h Nql"†UFzسٙ.3kOӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`)dihlp)tix|矀*蠄j衈&袌6裐F*餔Vj饘f馜v駠*ꨤjꩨj[ fsJF\JeQn@ PCԙSUZ\: bʢJxjj%lFѶmFQwr+CDSezBo=%dP jt9PsUm"vx3,Wlgw ,$l(,0,4l8<@-DmH'L7PG-TWmXg\w5|-d}#}6əmfx7 @L0Dv  x-8 | .8 \-hv1Ex G<M(墓U]NDK-E*TAWp{^@ؙ]{9^.0w0LL:[=:t շ?G}0ϙY8ݏKޘ 빏u_&"["إRH[cw;L sTWL` 8 8v:^^KX YU? # xELr_" x`q&)a9)ӵF@IixeˋҊ]8$ÉШ3:Hl[5E2~D#" qO\0Q2)S GJzQ~UL@yG*JWFjzx (K!px2Ӽ8|Ez9u#5뙅_R2"YbK H'&jor-Fś-$ $@@AIn6 xbKAwФ+Irr-@'ZFz_nL Mj`BQtj#2 @rOiPl^>R,=ؒ ݮ^;Ԙ}9bT6Y]*'t!ME<]Ug \[ 21Yߋ]f"I1e4a/,:ewM  uW9|)U*/+#k[5U(kI&$r C1mB8KQ[Ɍ/ y/+v_^MmXx?4a*]:p,JW4#󗭄.. lO.r|$@͓$Mw-=@:6Qi2mz6ŤtArbv8љDq&<9K2l :8Ury-Zaߓ1)lPS~P[ýO_)`cɌ]6v{yjLZzש%mi[u0 tzAwMlh4kI\6 ;|+r Ql9}nlۓ`yە(qk|7qP;ѹ C|\Jij3cuAKngg]fP0 _ͳ}Qu@ /уS)Cmu!sSÆݘ9w<ކJN:| _Ttq;>{yfwxM}[e'v^ޭd= $Ŵst!~'>:#g*p:Ttji5R &f4G qo+kmYz6&땕KSy.isN)sd}i+vrkdַ5$As۠SjT^]u<[;{i쳤SY,Jݪ)([nǡ:Yy+IKGԴ[t){['tb8, ]k7:zaP»6vㅵ +BiR)KP,R`qYB0{e&eqPSвKŮӕL+w\z[cxoH'g{"1a uqx,=xwEE+/qQQJbS [BQ<Q)#La!Q3;%ˡqSӱKөeqE4<ț*?0kiV;s7 [49MKa|s2P> {ꃯ+-åq5ʱ'48R 3GŲ q;!t)rFeL'@RB{vt7y=8qSqFI D' d-B Bqdэ\*FR m(v7;Ccю6[G"%XD7LC0#ߣD=9Eɿt63PApH3J˦qO[@Ձ ( C;7944TbY#1&Du3Nus#KWpbE2BrMUh-=U)\:$fq׶-ۺۼ۾=]}ȝʽ=]}؝ڽ=]}=]}4 1D bP,Wem R5q+^ ZA+?Tz> =A>q @[\PqW!sZQ+Ya2PLQZ;NYP4\]\nE^&MR>T^V~XZ\^`b>d^f~hjlnpr>t^v~xz|~>u0(|u3BQ# d#3B >).2.)N>MD$,X19L̋߂aW+ˡrR Q^@#XÒt1Þё= ^~ѩE PBM5<<-Uq-.9Q4D, c~\BD.f5QA!-^ !.p.1"R4~K*ݞWaZrBs+%d !?8+Ua ZBi0zuAa R[X޾PEâ+^`.V?,+9q R ;` eN-B N_-"!,*V9 H*\ȰÇ#JHŋ3jȱǏIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣHQ4҂JJuSW6WŠ +LX۷N+Nʮ@f]``bƘ=%֬ p97A $=繉FM܁}M62K Zt%4" <w &>ήD4.o8&^` ZkG7}rPx^^߂ [T00{ Mb Tp]DZG{MĞ]qhbmED~Ș0!EPbc[ \T~ZgݏTyx{f5\" x=ZeQIZWweKy9XZсW('QRI`_6ZSyTWd:l2ZZ)LA9ituJܧIYjFPkvi~!yҟuZ쳚K .'iTmYf+SLzg`|Fܓ YObRU&1%o()Ɗ n ehmVbWٕj lXFSlk\[|%*?Vs醜͵G+sQCsDsY4PvJH6F}tX`1v7m=Z7w1 uYQA~v)ޚ/"rEQewNi&f.G;ꌃW]8 @'UF➙IZO{ipm&}xTڷAyW5c{?ڣ(AJOz[}NG3@^ٺ ?f*;t1pѣ^Wחk|@Y} r߷C%iA1̅H \LX@vXJ)KީBMp 7t B2q]+[CeBy'6j[(]ThǭºJ&d Sϔh6l]=G0F#^jRs >b]OmT49*~t94 ȡLYA0J jC~ՌQ*PŪƒ"f9md8*rő8$SzAV#!؆,Si'U<јlc3Qv ]d.76%:eݩhxQ<))i?SEGڡaJSK>+QA|+ܿ85} ܧ S)ܸQ~-u{2/'׵"w5"ieh"JV@l׽-4VJa]5o=Yq`QF"rf]s_0+ᰅz*PG760'T9Z*!<\rH]~U2bRREɛJV@_?fgό'ЋSVsKN~21nF)[AὬZksL#zpTO]*x-R<2&JmC֞?OZҖ#2Q^3^ \lkaFӷ.-X,cOL;5|DT`E8&U9QSbA w}W(>_wZoh3 ymXd3|v| @ȇQU,w^bwhmDRxtu!@B;D[F{HJL۴NPR;T[V{XZ\۵^`b;d[f{hjl۶npr;t[v{xz|۷~;[{۸;[{۹;[{ۺ;[{ۻWv`]{Q$KW+zKkڻ۽{÷ PIAPCd`%:OH I&K {OE+@@RIz sD DI @+d0+C+Pc2A+ʾs'dIs$y/|?KA b"a\),@lyd!'0FN'aE\@<)dzR0RR@ POoX,o< \bygš,I, Cr1 *+kxK̾Ģ ƸM ~ ,k( l&,"  < ',m,AGB 3Ȍǝ >|Y| \;r|G!,$x  %2pM JHŋ3jȱǏ CIɓ(S\ɲ˗0IIf)[ #! b JѣH*]ʴSIBM%ӯ`ÊKٳhAJIaV$8pmڻx˷ߡlaH ۉ ]̸ǐ#;ܞ _$cSϠCpOʇPLװc^3܂ 2nUv*Nkvު}vËOӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`)dihlp)tix|矀*蠄j衈&袌6裐F*餔Vj饘f馜v駠*ꨤjꩨy\] 5o*e &]5$qrʹUƺo)U,Wj7Uس*hDai!W@nkZNF$ANYEUDF:VR,t;vy 7G,Wlgw ,$l(,0,4l8<@-DmH'L7PG-TW- Vg _od% ~J[ ,ѵqLT`F|߹]DM(q0t߭q 0@n:|iwx/7FwS]gw7 v[k˩:i뾻@o]wq~*D y/| T ;MfMk;@,,囷{LLp8;= ~S(4r m#_0@|W: NLc2ȑwf9lP w\:*AHmu= p+ӛࢺ%1a qEHq y@9nLrlB 氋AЖ7 rJuP5>%JiRwB0b*z< VE" ;D'(vkPb!UC&`p"t ##vLCJId E ϒ`yd8yMJ"9I- dYe/u%\[IAՓf ); SOܫKOdha%a "EDr2B @* $QMgY<:g rT쒛Pf ނPDZ 3t}d5Ǎ2z'EL3|s%3\*E = ICԸvsiwL 9jQvtNfҹEx#xBszcWE!@hSi2/|FvhHw!^7a_2/bLT)H R&ۄrsh-bTA ՜s*"N9el"tf;, 6a-,H&ts1+LTJ5p##LwuY7閶Մcu9D PQ:W2ŅQ[޾lr}xo{4¬Ӂ?_=ru/xF^{/e[sx[D(@Z+22pO{bzD}Mٴ$CoI#O"mӑGdJX"Qe3My6?ViLe!YVn.|]Zh]Y 'r|*e =v1k+u !u5^k>:t2L%4lաW8cd%y.l ut c V"NsBKNCZX|R[QN_@nyT@0 HJXh6؅}d[_)n6Q=cnI;=18~ದC/qJ*+3#ve7t!P(e$\.׆vXuxsBRaxmZl5f1Q.j%n5xH]Qgd6wӷX!iΥ!RmVu@Vr/2k4d!duF0|5x+qgG 3eVawz&zuxfxx'Q'w"n,25'yZH=MPkTHx֍,Z$'">`ƍ6X4xx(rsgpm}QXw BmW; y9vx yRXrnW| QA`_evLIjB9V2JɑGBCLk<~H=ihBp8!@/LQh:X[m&vDwk1bgc"e@[җK TN) )wくwa~pQx9Xwu(ErAxrDfygUΩtSe:h\RtC݉IיU"Ywk8]혁 מy'Qyy<:)*8yeα4xBYIi׉a{aJ4!wƂEYl2djMx}7oI4$>܆ȌK~}[&un}J8xzŤxbhs}f1yGA+ّQ*^j$[ N@h_~YSrH8΁xvAGqڧnZqʧgD&0Y ?~W087qnh%ǐ04 |<9mp)(v*-GR%N8K![驀"7Dh&VӢ'~zswR`gy*']goK볞h_J7I(mY&K:]2(jB-&^%j;mb[MkF=I-K= LI]piTH&KyjrJbض6Vz?pßaճ'zZ_ө Iʮ[acdʲ'q.۵@՛rnfʉX#0m*( zZ#I WR-?Q4X:ӱeH*FZj%U0 b]8˭ FD[֙#A,Rz晵g1=3/rǺ xe8R$h1atײTD2 DSW1LqE[;*P[[r;#5B//(HXy$'$#0*7;V 3rVNdד^[A: {oھ/G쎑]EK8XnBUCETl@_bT5;Kz=A ÛbB0֤n#(=L<{2İêġ=P\`X;V.)eIR ?Ã;Y ?`IIFd,+ :isIiZ+bٱEp,?s~H I-tqG= ,iSjEUSON~a#:!YxRVbnm.%kcYY\T~=؄]؆}؈؊،؎ْؐ=ٔ]ٖ}ٜ٘ٚٞ٠ڢ=ڤ]ڦ}ڨڪڬڮڰ۲=۴]۶-2rsBj1mJۓBc'<1 )}=]==Q:R+IRʁYOC<Mr& NaR@;]ܱ, RB5rN~h*6P9YQ]?Լ"s+T^񽜱S+$`] ,6!6D ]AOm!qY*09[78E>'OQW@ր&Lzbdg8 ztcEa$oޖWp<-~: (/8׻*ݓInX:•/P8.ЁSaf?P$0 sFۑK0ŁPP%FHސبAu1a#rQG">8ݭdxuHxGGn!I ׹BرQ7(>;*醳d7ҎE+)ɣ nQ i9(FrJc.96pȖh!T*)a2YleL^$"BC0KbL)r$1I_9$ BfZ'$QawxYn#@0D )U[E6G6nIP~%VΣ p'Ex'Xoo$%IS +)S  I)z $'@)d@ !`cJdUEqp״*UP)7 a^.u@ Qpn(xpiڴTVP>v(<)<:+= JزlLS @Ҧeňfkp9ޜHؼU-^~V\2ّ.%Iڽ>n@QIE#N.0 glkSNVNi˻ԹԧW\KޗL~} ֹHP:>)pPn=07; RWCLY!8}a&*tFcR ћׇa&$kϹ:`Vn{1m&5I>'adIa#ss&,<c~^ʹq+.юSk'.s6Sճj 𞌽wJWX̡$JPiȸ4s="[pS1Fs t}IiU)U'[3=~^rE~#qIl=o^n˧j]Q#M0-ҟKzܧwc]{7}Vxx ;m潱c;#7Oк+B^3^?FWŋq~7;q.cwTaBgjyq|\MnFEwU#y^3{&z xx( ; z,a2tRtXeGx<&|\an'ٷ "}&gfa.H>-6lrwbo_x0_5ŷL>xX&Wy6Z:b bKrāH6mXUyg;j/x%׈gjkc S<|OQtTyH+G{`W9x ?j&hn \\gei6~ sSREs馈G!%{-Ќf%xqY[`qSoǍzն}W(ZfH}(}(l G;'Z@!YĘ8!=XUa0z}698> rZeLXm2g͆>$bkh=>؋6uwfEXZ DÈq^} 'ybLG"淁D4hWa&H|2 e1alĐ r6fwHPKx8_鸅 xH^y+xl)^|Vt<|fCJT9i|gs:|ݘhJ", yh_^6ؘL䷚s7Dy/ yisCxTZ)}H>WaIiAwcf2OAInybٕ~W2{dȕ8򊈹R闱sItٛ{Y|sinG 0QP, C Ι#Eg)M^X{8ڙzv|8^ %?#g-" DoGhIk8T`ʹjt|7wK9әɠ%N3:J zGbgHGDQJzbi(<8.EBuzdsVTe*#z5I?7lцz*$Wnt8mZ-BP$}6 5:l)G{*r qp*lsJ%ځz(XñH^ujꏊdl:ziǤ &QڒTpsP1 i:ZzzlxNAf׫_AօܱnMb϶_gZci\9Zx+bZtC5D ELUzײD4ˬ:hŪih(e&!(HCdîuuza ʲwH%ujCgM ;@Sq֚RPᕢ5rc{YO`SI;WڑxK"%`{sU,RI#ȵpm5K)ӹdW Ivh v_Z'kJ_Z0/k>8tbez|1{?_"A "0XWAZB 72"X/1eLK1I`KuWQ,,hBqE6-qVi{i1jH%8r'@-LW1^ {{" oV!p/JGjE;h^~ >W PFqP"(7)წ&~1#I!N.02>M>q |O1O/qH͢,u, + QRpQ5>qQR=qY|\bg0WuQq@ӭ/{٪Y&!P:+.S~;-!+mYȑUëQ馲0 牾dSrt$IZ1Osb0 aoRuZnFD+@[:' y/=+HY$2ܢ[@Ab0xT<,= Zk맴b5bmeixk@6VWTHI=SpJGS-[PZk:e4VMHyVY~XSS?ux z@Eq ͘<&ap!3.  $j[Zx<vv uf A.?PJ@t# '\bΗ;Pu!k`;,A0؏:ʸF55}t2эY7J 8KJgd#(Dyde+:(s?9\.'LL.*3%"s%A)iQ df0B6.('NnGɛ-ӜPoiNLc=}nGT;igS'ք#dF]Sf(*&'99jQJt:b:$"(gKAS{B(7ָ"qzKwiԣ\ BsckjMj&rj *ຢĠĩXP)\*)QMVY;H+Qk4*Udak$yp6-jWZQ)kQV@U`MH6?[&k~t&kmB_˗,mg~˫j)oeS{kZ V 4\pkW֋ktYv[{F9Z`p/.VdesCFN@/'ܒV,{u5>,;퀹k5]BR؇0hÆυ%v~5<*ͪ(̟I< .Kr5!].|C (qKPg)o w@q_˜V%oL62B ,e*n;yr ċKR"(L/ӲǬ^O(?Y9%wо"`֗w3'Mv:d>g1fbTR{PgkxX8w9\'MVVj{x}'|/3z'RV?e~o$%rwSu7G{R6W`~Cs˦BhQq rZxIX\wHSdFV;(XZz2d8[ff@b@)ՅS$Ix1"@Ux vB}4dk54x-ƅ(Wb0';mh?hylԈ(V"lFGwcRpQFy"i=b@'fӎxy|zGKǎ_揯}c.H]xkvW}`cXc4jQ~I4naև3e09eԔT_O-XXU؏Md֌E Y,Ʉ^?E9{[CKH|h3t(HрU7it!m3xtwdF FUT{K0m@.Etyԑ&e$Y2qߑGvߨ6 fb7ғrH^rhPX}arNGggq&L'/`tʉf4)E]#iB$Ŝ{ᜤwh'iujy)r*Icby>vfYtXAyi>'/A.:Xڜ(!:g& o2)Y,1F" 薹hA'Fl1"Wɕs)xgQ),O@r0C~`xwkg;_}<#‘wB{jk|_:,piÑ3!,%[; H*\ȰÇ#JHQ *jȱǏ CIɓ(S\ɲ˗0cʜI͛8G^41ϟ@ - H*]ʴӧPJJիB쉵WŠ  & 0`"@@ٯpE8vlٳiܿY E` 4X"T `!k)Y]&t.`^S9`[ %((G@d@Mxn4-{v1 GK]˰ym_?Pw[:uPs r$~VM`Qs5| fXxA@@dZaᆝ^IDo-߉4b!iVVHla^p8އ!fZzD6TpcG7fvQ$@Z nۃai&R^F YiQl[ pߙQ'eHI7u%䦟!7_VMYhPZ &N{ݙ餠ꤨ@hRvOFKUFꬢ>cit#Zz^wj`) emSk\}zJtgZ)gYQ6ӮT@:m;k;dd{u:{h:lCYEE;)؛`hTe  4vi!gqUIƬy̓G/e+LPυ~oHT4lMɡQSUSTM=(w}bG&lQ=QE6P/-`CzUt )LSrwxgNn~F67jlCLzoұKU%lJziޕn_ {Qlc6M;ȓpۙ;Lݞ5ݻ?A3~ћ@oEl۞׏wYv2:r g-p(\z@r]A?(wt>9Rl2 ̠c 2 ،(& O: u4Z 4)IW95[zV _!HGiX(ʏdRz@OɫnI($>/%VE$B?2/? ,(R?b CZcյ$+X"ojp>VT4,Z#RڕpLb3bh8r& o1o0|1M/7n69͢}"]Ι|מݘ@]/aص@q]s"`uvYXa ؓ75t5urih\Ê|vWwJgӑ 'Kr ㎬Usx wlE[NQJhs/]^G@YMSԼoVV~R[(.9y%wO=f>*Gזz'yN3v.41)׾xI;CzU05Eϑ]Xwq5??]=F!i;du D-;dR6nQ4E}p?ʼ 7 n/t:X[/ZN3\g/G?|G7yty7tWfY9zT)FHAExWz&HB5ҁF}{ 7[S- }~Oɢ{ ҂5m/F{7o+(u䃖v=Q:h''WxDn4CXnMp"7:,{%|G|RM84{lvgGi{)X=beY!U8v2-hXu H?A ãPge'\qiR(2D'Q1eaOHC14+ro}DM\bđz{Kha;9J1.?YF0a$xar5LI\ BQ0碎Fa+q1H7Z222]9Ece(|(і])'hi%^1-B`A@hS"-j;-K≟9f'hi%yDZ.=$J*Y3fٚ6bdY19yCf"Tp)RrnÚzQ㙀bs &:.pQ`U'xdјϡ=UBwXdR"׷AKZ=(,RZdjַ)j.0w9(6:<ڣ>@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tZvzxz|ڧ~:Zzڨ:Zzک:Zzڪ:Zzګ:ZzȚʺڬ:ZzؚRA@Z4jB z ڭnUj庮Zza@[RP-P +d ˕W @ [I@R0R@ а:*6ϲZ!" Pd@R`')7 %[R b#F۱@w2@7; eTŵ;i+4B{*K[@k{v>+Rp۱ ɵ;YTy(dp%a!B!B9JK[B(ky; ;6f4[K ;C;*b[ޢWEh zK+;kLqs q۹˻6JS{UߚøKU;4˵m1{+KD#,#T{9뜠:D?۶mz;뿓M+t뼫;WE jD ;\q;,$:Oz(k&!,%[; H*\ȰÇ#JHQ!3jȱǏ CI0ɓ(S\ɲ˗0cʜI͛8I^h`Ϝ@ Jt'ѣH*]ʴӧPJJիbʵ!`~  ʶ۬bmЄj=5.`0a /DsI~ I…]\2$Ad4ͺK XvӦ^wGkA/Yٷar8؁* ;CI#xYӫO({L&p/ UO^ Mfvd~>dD6Pslr *x{5l 7Pnyuc Yؚ_1`q8fh(d[-$XNd"gCxq7D`^56RUeH-nm&ل5%E.xV>I'VDLؙ'矌gA8|"ڨTiujiIs]*KQw1)RFfbUKVTkm1``>QQzv`j䌱d=c14.BCcc4qy5ELTݦ@`"tYu9+&*BPDyCie'lYgA=&r,B%:LPhZY$-t턤CJ 6Nd, HK ޼Y$ܓzji-?+Ϥh9O*UI4)+3 T;M҆֗eԨ@I8`%9MPy(xC_`٣/@ mJ+X}OmcL-CFvbed{Zl+LGUGc{|Z1#֦ൕ\@YM 7\ŭ^yAVkn3p_1-Vhgoj+U!y ւ0]Ydh }T`Ln=߀Cm Z`z%4mN|-(M']Vro *vPrx^>ek)N_{ߒ vGꠔl!7Mwvqcf5n_ drqTX9 gFbީk_6Z淮gvϝzˉuU}9\2L_`.g8Łǖ:m ͷzfׅ4s+luߒZrsMX+G$29?'lߜX&M{~mqk换.26(% jZ MUU \;l[^/6MѰ76;MZ;}k^˕~φC/ :%C &WF˾֊,\{E ųǝuM&R5U꽦w?_ ?ngw>i<ӱ4պ&t?m̋鼍΁R|$>Ap?|33% %j|x5ׯUŇ ?K)Ug`~?!\}Zg|Dv;C#oXE N!w}fo%OZQ%H@Wr=~h x/Wsl\"vK&#h>W`eBl{])&q5vq:}7%BkLE 3o~u9ex?9 8Riݣ3a0(W QA 4Pֱr8$*&TNyIo>r%jAʋ)қSȡ$*G^8n@W4oA fB WRqz:Z(vPaR⤊:Zzک:Zzڪ:Zzګ:ZzȚʺڬ:Zzؚںڭ:Zz蚮꺮ڮ:Zzگ;[{ ۰;[{۱ ";$[&{(*,۲.0{c A J^46[ n8;:7۪9{C+>KGJL۴Nz 0$a[@P1_@IF @[I0`!@ R,q [do q+^K a;d u@[ d#ad   ua @ s_1aѷ[1nf+뗐b[@PRS9 [IPa kq; [R@ k-~ [!@+_!\{{)Oa! 4+P{zC_˸;+d ɻd[p\K !+cC ;Ѽ>[;[T&4+ )ldf  };A(‹`)̼q;6 [۷˽RPg@ ŁK1x }R뵾;"KXKi ln @{ITȧzC!,%[< H*\ȰÇ#JHŋ3jȱǏ Cf"ɓ(S\ɲ˗0cf ͛8sɳϟ@ H`ѡH*] 2ӧPJJիXjUӮ`K6@Le"@ٰpR%K-& ܿ7-Ki ǁ`ix`cȠMhV _'XҠаc,:z NL&$/߶e 82&VݶãKX\f&Sn;`s3wP7g2^eӓ%MH5@q`~5mU^%8z|u@$=Zoe[fZuBc(nEUZT45 0ӎɗ}}Z[D61:$CfСG+X_@r)%1X_jT@y"y'mMEbzX^E="T] Q%Z2f**u1@fd (_fYHZWЀfQDlP5H yJ*hp":&\…Y4.'ZbiR,lQ讣8#zոjҟ +p0N2𰡥q5lp0czLc1EPf';9 O"iȭL",>2[-E'آE4V9SWu]UgH-&@ KS~Tn6ؾ=wV!3z7l^MH[U6 ~8+~hm_8W*k_ҕ%&W=MZ]:my/cNИϊn:K);~9J)K NU;Xn P<:>,f|돞^|ΏO&Ihd '3߫Á`^v,o`8( qAJ&vX,V--/,C^ ҽ`2mUh"E)n-"6+  /DMm%1FmfJڬ!JYZH#L'D4.u*vW͆Fbպ2f`12%v]jumX*@wIW`kҩbǹbͤ$+ږtdL˭zL/yؑWpMc O h°Y\ OY/̋]⫵>M(-bZ-'= ^o|6:tsWW?[{h.sJ^&3Ҍ rZ-ܛrc!-iT1LO1;..d@؁YZ,1u!0+F_xEne\"S_D \,d[MFMbM./k_'K0̰Z6;kU1m8ۿH]o/i-h؁ޡsj O[bVׂdXX[Ȗ=܁IVk!qXk *Yrk8ߵ]}oOVnO.jw*{֝̈́~ɈߤfsQU{~8g rk~V@LoJN:w ib,=cŊEѤ4iCZ֨{M2nVOνk zl])xyIW3<トܚ&k o<۴ϲnM&OVLqmTm@\]43QbW75or?ޓ{dv+sG-Wj/HkN}cp7})VDHq '^#mf^vd+YB_3h]WlUNR] l}cVCh0|)vѷ=PXzIRNCB=C{xnVy'.yz9I_3gVjՅ?4n [@7i%+:xt$hU8Apvo`x@v9{]҂Lqg;U7K8;lx׉s:hI(o8hhu%zdC~0ws=ur7XTV{^f2WSkV[lWHWXX p_1L^w-g(8%gSh~7vaȄ1 0jU]XCwc(א A08)i}5rk_I_#`׏H*)oEO(H3q=Z{ohr"Ȣ< ]LD̈́B)?I Z1c'g!%09"W8ɀ"k4ABvXC9bIoCo6YNFMU)+s9푌h#gq$32Gd"͑M]&9CY*2IJEehjјAG+q))"5bQo:[h}N%S*}$2tra$3Ia6қ2RDI{$yFvt:[⏛tPM&N~] m'nf#hiX*]2jqJ$4 ԙho"ʘ02ޣ)(02:&F6:<ڣ>@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tZvzxz|ڧ~:Zzڨ:Zzک:Zzڪ:Zzګ:ZzȚʺڬ:Zzؚgd ҭXJ/1ʭZz⚮a슮Aڪ8ZjA7گW2@ !C!d@ [Pp[ d ݚ!d RO*K %"ZJ+kSS2KаIP*';Il1C &[ za6K:R0YҰVKU+#:#Y;Cd#2+ٱQ0 C;9ې( [kj@a-(&sˣ1dd !%%+" };`>Kz2[*={P;g۶#EK: ;Ku)L A:@KH%a˴j4+P+Rk3)K`kcK=RR $WaP $! )`{!9 @)˶=.CD[4Q%0< <ջ [˽![_jr!,%[< H*\ȰÇ#JHŋ3jȱǏ Cf ɓ(S\ɲ˗0cʜI͛8sɳϟ@ УH*mHrӧ%@JիXjʵ¦ z;ٳf6`€Ipʝ-Zڮ /ݿ:۴ ̸1ͳ 46io*9lnG&:)9el2@&)8 *Э,;%]jy-iLeS0y6P|=1kL2d Ā H8ͅgʼn : pI?O\Mr5dЄ nBFb"Ij:gCIݫ;]$. dF$f_-qԠ.!prHEhJ(l#SfF5NHyT㹱"{/1yzWAAdJsN Ch͐ `eAHکLV!-I,q5#T% |!)5b> ~ Wɑ ~-ѕ1.\!^R=<-~A4\>a[`blպR+ yf޼J Yȣ/@ ~_Yg+w\I":(P;#El_=xG ?/țQ葉ʜ3%JF,oǜzri0W0EP:)XZMwJN7v.y;0: 9$۵fTۖD6DGr$F@^#9Ƣd N͏Jb7 rUFwOm7WӾ5 p?`8Cic&-|L.{tq7CntǮ,"7?w_;ˣsIP'SsuXS[M G]Iwx22yصH`MGWRWc&>^&8WbpPj$!A6h/6qAm$y4VG(eV%]>mn0xXEY~Σ+Dh:4^ק1uckls5]XgdžS7ׂ,HkRh:g7ŀ5qxH7Y;ȉa4D=-hq4'?G4`Ą;xC]XRAaS0-Djc}xx{=!]xhG{ӌ-HvJŎ?<8Z׃THI8pz;ȏkhd4GX(HW#~j3zt͢~Np+xdpoJC#yvHH-21$9}KO(m}\nu(t3- 0:| ȓ)9#kQDp1M8B)9QɇGhi Pjy(–$PbY%fhuP7/ɎL^2*x|vuQPvCė}Z }u@0e9[!rB%qVq9~隯 jyA H)%vÑ*1[iy&7+Eq"#{>eZ8a!*wљ9a SNYbAz@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tZvzxz|ڧ~:Zzڨ:Zzک:ZzڪA z'wiJ+꫽Z*3Ⱥڬ+[P[z[ d3պ@ J"s# [0# PຠSRa d쁯I@ P Y Y* ;aZ6챱J Yz'+K֚%0[KE Qz @ 䘲j Rp 0 KzkE@g[˭++ۍ\bRp 3R@8?:OyLkjz=N$ѳ/+X/&F;?;a^K%['J[7c6 +[} RR Y + ˰Y~ۮRw˳{zZ @d@ JJⲑ蚭! Һ(^!,%[9 H*\ȰÇ#JHA 1ZȱǏ CIɓ(S\R#˗0cʜI͛8sɳϟ@7 JQ*] & 2 ѫXjЭ`vZkM0 " KݒC.˷oF`2,`4:ׯǐ>HBu @: Өy%Z@3ƪ #j0b _ ۨÓ` j?7/Xܥr*](prNdqT.| P^C ,l!A `v5\ku6R@T1Hǖl4n"ЁA%^{azLT[iWL}!0P8wal1AH$ !EFSQxKr8fm16FM8U"!r1%PbPi'J$6"Vg/&$G.}h,%~ԠRAlT64^*Cy:EXrdki` Ijj%pMnRg(A'Zlp: jīd9]A (^c"z Z@Ti ]˩["ijk/KۻlMT.&p½ZԬ /wJ#VeT>UԶ)<@+cFe'[1gjN3j%o/ܧ& 4cKsaآL&΁ u}A-s=gf73mpSk5q'7yڱ'ޭ#{=g-Nif\4`]̫g}_3 7Ae*4>H~zꫦ>?Ac@nmSصm<S4.0]fs/rnxI  `O-ȫ0ZkR`TTЅ qhp;s@&D_2L;E^S'Ejn "*h7rFMY6Ĺ2zn&EpHq|#ȘRADsbk54a4v+J" HHGmZ-'Xȹ +j\JG,J A #T2 v6:, [BH#<+"*0Ģ4>iNvZӛ~l+Qt!`^ldfFِ$$95\d@%G;a lBxʹ.b1cBV蜦 kDfa'AM@:#K?M#%%A/ A}RYnCF `|*RgcV}Un&eլg(` +qh6#x WcI_aU$ gmNDc;!k44Uٿ s"jHYڋr{ZJWl]+@y^ﮥ=lV*j-J[wwm :m;?& )>plFVކn*4t7V|kw2m&ɉ8_ʀePmk(.-'NJhP +NU|):FŨtc!c2Ky\[Y$N?,݃c%e.X'u%d7[s: 2Y9sA2Æuͩ s ៶nW(q@R t8DU!]ejbcK"1C[st/p"uʞy]om^Lb3ori; mLZӨt]{];K"5l?\ٺ5t&ywm?^ִCw}-8oF\FukaϪYsGR_ ͺ3n^ Y]aoWh)-Zҧ_]}] H5chX#w>ɿFg3BK)65Ʌgo~|ߪTg0:촲OKLU eI=  6yj[ﱁ(\iU>vVջ̧~斜jvfiopF]ә@Yv~y0~;{ּ۫0G'~W Mej~_vwY{Wi厲7ap;/eܝ^ʹS{|Z7owP;F6P`D9j8kL|3Wԁ!},V%h]'%Ł-Ef|/Ti8&|pg-x1h&Lղmoh909t|t7B9 {1OiWjQf._4XNx@Wn5ONy]*xft70nH5GaT5ub`}k6.!$eϖUX>A cDRǢ16r thaf.as3gÊ^taSd=ȉ؋`ĘdE}vbfO$clMF=ǀp(T\XXz؍+14Jh1$W=zr$R3'ǎa5ˁsSMUR &ph8%-F45sX~/c6#ً"TYXUф$ Ujpk^X7'6Y?XUF^%HDY6\t5@yȑ [ [QpvJ,kf etsk{ Tr+I4t+@+[K eaB[@ zQw `CBۼu,m)[@pWv+7̻IK[(;қjɹo A˹iaf+k+{uKsܹ++[4)[˫k:Kqm@ J|+Q˴a{۵_[6*ƴ!,%[9 H*\ȰÇ#JHń"ȱǏ CIɓ(S\r%0cʜI͛8sɳϟ@ Jt&H(@@& 4h*իXj&J+Pg2P ƮpʝKΰ``T2Lpˆ{Pj} ˘~]4g%5z`%O~^zְ}ntAH~+0@D;_#_Nt2)`NUͼ;s÷ 9&hs7>wZ/>H}3 آQ5}s&\g@z"4[{d ,џZfu("AXtda[Y6;8auTM5a7hiDE((TJVXgEHHIS_rD9i"7觗.Zz8mI?gfko*%3,;.}s "q?PIVs\_Sխ!O>\,_m&e=GtqhA 3 Ҟy$7 ^`[aHٹ\3HIQ ,t\B{ycB26T-W(i3d͈$LxJXR @ W&+mt3`1|hb<^4'ҟXI$>}:2TՁ%&>{:0tC1RMM1% ч@JctIKH|4?ܻQ?y8[K:Nj-n3`Sa3 B=Ȣ3!.D)8(RB:u!+#cҚ4 t^եG&@(&pB7ߪ̈́'/R=;9SP5!CEԆ*W}.{,ؠ y K~ *X8RĪ1~:M&%!>)X?pY9FJJYUٽ\֩fkT4jV|jvlhZg 3 eܭj0/jן$IT#uCׄ:+9: fpAӀj|`A`j)N #˵YN˱Zb 0M$Ϯ*$[vXn!$*=UXg}qkޫi%[283+e Ov Y.ꔑ hE +" 0J94Caٓ,`R^櫱Z)K,Uf52sPHCj HG8!rLdg1T{ xO3`.[jLܤlUΝg u[37<n=]k:NuBIDk'7؉o8@N!W^c/k1{P`,ϠRf;o `ɋhb oр' EXCtLl%`r0˕i`G) 9U }L{z]:5ى'ײ1b/vhwHK2[ɻ $u6)˳BwI9qR~q:qmw]6֜Be#.8#?6K/}8/dN +;#u|bj'nd'~Cط;'}m2Wb,swDC4z7K'7gKVK"fu}km$Z(uG|B7{pHWV^ |Fm!Xtb~۷iw4h~gL;;P%{~~qk tJm16?~Wgp3\x'Hi2dkJo'5]bX\{Ge}n C=Lqhjāt 3Wv^WS,8Fo|x~hf1X=Wps9#BKxS|m-_> 74ր([;fa={ @w3wsPxr^*zT=хu5Ę yhh[׍0X@fV找D6xu8pHuuc^(4`ȄK9>JeV_QUbFxa(y`Ektp%265L,I0A`yiRsS1 8F)s)7)mr+b3MAc7Q+&:)\AbUĖ8{i'yyC!i ÉB?!O[B),'%9A)KNj_1'HIətbDU!N⟖Y+Wn!Ro#A_))ty*y2#1?ahѡ)-7Y) 1QyU+ .q*z5L";Z1Qzӝ*u ; za,gA)#? ^ M1*¤z9PwI)UBn .grq[E usڧ~:Zzڨ:Zzک:Zzڪ:Zzګ:ZzȚʺڬ:Zzؚںڭ:Zz蚮꺮ڮ:Zzگ;[{ ۰;[{۱> @ O"kJ %*k ѲJ3:<۳>[@ [H@I IPL+ Fi/ "K+A Ad R0J~j9RPS[P/K!IPI@ P 9I,YU>![q[R7 h;}DKw G@! ywy[qe e[ЧuU][}+{@0,IV+/!}{n%3z+ JK +QQ;^9׶{R0+`R൷xVj -+{h{V++`l{ 5}[~[.ս L拷zԋ+_cK <^%{ M{ܷ[+Bp 0d@ @ d@ nKG+rZV_޻dkK@[x !,%[9 H*\ȰÇ#JHńf`! CIɓ(S\ɲ˗0/nl$͛8sɳϟ@ JѣH* ӧhR,ʵׯ`úَ;*`@۩L*Qݻx*ƍTZu@-È+^/¦*l{uVƘ3k̙SR0;`%Tv^ͺ ,-M@=0DXȓ%]tWܬBXU+νmy~ & OЪduQQ'e ,E`ğA7aHՇeS&faA-HH(r(U)R6Ʒ"AYE(]V9 gFsT q 9A LbX:`e<NR&Dh>d:o/VfoY杸͉vzF%N}tFI(TSfzyh[5ߤZ<ʑbdfh֢=y:jJjA iO*b*V'凾:,|e:\=K,*r"+開^jԮ{\c@EWui"ٮ7V ;qf1^Bjf¹rXBU|XڬY}F6*CDG@( e\uMs^QТ;P\wm3e/t9Omwvu_,.d|pyo^T@GXϜ'0;MaWNf<tWVΑ7>W~9X̶][t{}|Ng2:d5%}Sk{/2?:C嫏7viʻ/ 5wgt Fv`L TI EHWi|+1ʍI+35a Qa^(P~ rp w9=-1,;xe @iB)T]rGl{[39Ӛ '9@w$W(K  T/vJJ1M;LgR7"K'QO<OuCqȬs0:te;0iU,? (W°FRY"X2eYLAJ1piiݬKCrm B2%W9/x UQ|ά]YkKMj$) EE9* ֶ 6ejHk|j@]jvM`[;^%TWuVΆ%.BCC ++Z K.fNwRj(V}]/εhPz 2+p;i@l`'[8.dnl ڌݧJ5v""oRk6c{S8χgC ˾@k+]DV4&ܚrc}޼>6 6۞R_,B1][ާut=p#cL+/x ]1)Vi[`NFIJzi ? ] Ou:3>Πwf_!'m8Z kHjg`/:) [ Pqa&T+R8W\1Oe$:7%\?޺9m+cKj5454\#9:iko:mm0.{GZՊ΂ n4ڴ^z h&#Ta:;YU"5fQutw rN]"$WI_i:vc&9򶍾k:!v)ulG!uJsyv @&7o] B{䚇Y8!}n}gJ.Fխ_[II>jZ'r 5V{ߏ+LSmT0ihbu.klCQd۔c/&/ے!&m+O}vjsTFe*c5^˴ǶϨ|Ct d7֟^quO"{n~l2NTEXt}aCSR=V)ACg^w 1/_%pyB9 r]:G22@gp['|7i{ȁMTpgjrWsrtwWOwSrN2F#W=TGdV95BpO4l}hNx1$nh1t~7RՃwbetkF! Xe)t~r|<sw V4\oGwil7HzHsfȆ+G1^wFw'Tf|;xKM6xh;m;S~<}7;7HTЦ7t$x)XPU_LwGՆc+w#5]q;|rWMujP؀ePjD-}H1teDeĨL ؁ ~8w xև5FlP}R.2Qf(2Gtxh{yGpS rc&vԨ*xBqLa$ LnXmHaHbT3eK<n3AUu8bCU}Ȕ)y(A5 V?GDiGR- 0Ӆ7( 0_QSQ0r*namDY"#&{՗,PֶiG8WDW9J)y[Oqh{IBCR!I9Q.Y"9q099)u+vJҚiYK<;26)є.b<A#-1T)"!gQlq$Úwg(nA^4 1MV@ZU)}o q5'~yyg^*Y t #I I4`w )*d~iiA8}q+Nb/#J@6 <*a$&wE@ф\6 R "5XFP¥^$z` (!S8Oeڦnpr:tZvzxz|ڧ~:Zzڨ:Zzک:Zzڪ:Zzګ:ZzȚʺڬ:Zzؚںڭ:Zz蚮꺮ڮ:Zzگ;[{ ۰ / @ p6 J0a ۦ"+$),۲.02[&  [Pd8M,R  !qd R0[ D q2k`P d8Rd   N{cmW+f R@c+IiFith˶_3*o˷@ G>+Fi[I _+{ Kз@+YK{^+t nu[`MagEk]KZƛGD+ѵ]NaRp[Rp{륎3a!@[k);;෣aYf˸۸ۋ*K񿬻 ,' {l3n T{kܳK*Y {ۺRi[[q;+6+Pk ۶E[^HYoKP @ d@ YkHHOR{[{|;l IK!,"x d )2@J9(e2 Hŋ3jȱǏ CIɓ(S\ɲ˗0c$" e JѣH*]ʴӖIO) ܒׯ`ÊKٳ!n"#E"Z+ڻx˷ߡn68b+^̸&Lĩp-ބ̹ϠC;sۯ}]w7G,Wlgw ,$l(,0,4l8<@-DmH'L7PG-TWmXg5l׋+Pc[@d6Q 6Y2 ,!R~g0D,!8| ]~@Do3'woрډ+ΰw_Dw3ޙp D-ݗ]z-p=;@ުS xaS0A!w|@PyE{ؔm$O9 .s#E엑<˛W!ݍ~l "%@>ej0 U+I |[ .Qbk;Z1%c` M"5Da B>Mu\ C8FI& e lA*q"xV?<|MLVN` ֈ6(PrWP(dNv @pQ_d@pS^aI8dGQ!ci 0y)tFᥑ+{`F Z6El IV 5b]$fi=K*K@q 6+H9 "gX_%:XH7A31|YHAMМ9$%L8iDOYQ5 qv^B8Me?!J8> (:( /#;RlpbfJzEr*TyCTxB+S,oדΘМ1[S lyjFP :pT]Ꙋi{U4j NrB5LiOf}"V&ֽp0%54 +͔¸5( *kK KfH -lMUq!ZO摵#"?kX{jãbs|AE3oW%>\]w#y u|5A_ ]~ ޿v DzgMۭ~Ƣk}t=gF޾P!t (}Q_Y+g7lR0TC`PCg4^N>3T{]#ŲKhMxן`@K&zogw~wq hJG~~} }.uQ~56%Ɓ]ah0!~bpt*N/V1SG|ǂq!@GaG+ G{d.ҴQ0wBN~8T7L7Fb7ǃPkE{wEWBn]My@q?XIx{1طQs&G}(S;x{x$yNHz3w|h'xzH5}Q2XvpjjW7[[UF&s{ӆJw|Wx-h ×wHnugDH xvMwхZGyYG'Ekl `.y8l!(Y؇ warX?opӸXhp5irXWcHbÎaj8#ŇI@hHm~,v!cX`=oB*r@~3xn,DȔy8gQ>E eW#"fSQj "Hne6>zLypBsyicr <5/)S*M7&uRisӖرi泘ϧ#qTe?i^deOYthnƒailh#ĖM Uw>1N>\Xݖ`țɐA6d8aH2UYG †i8[JƓD7Ԣtl*qCA"qB=~B/}9J^Z>YA1,YH*F*r-lo Z}ckCa݉q+[;{ÁSaIΒ/aTK 6ԛñ4HxjA$j kPƃ]jv.ѭ`;4f1n^ZD[W:m‰#a  x+GAֹBѲXV+7._NR芋{u(j$) Q" Jr()+W:~Z!Z4k#]j:c5ӾY?i#M2 BөeX@%%7W;#8?j=>nP2[pc!іsGLP=!^6qR><,XAc9I%%<:"Lt)E>p#86Kb;3@9*CcfC<&66sLME>6v,-@B=D]F}HJLNPR=T]V}XZ\^`b]#R`IuMNc] "IaKF !GAGt~AH}kr!;j1N團_ν5=m+@S$g/c,Gk&/s{ZW;ܯxTj}kgF52|-42}%1iKRxNt(Ll n BPa*bQ):Dy #ݼn1l26^H#B(A _~N79.s.tCϢf4y`EXMe"͇HLvnEƾGiI l$)5(&=7`ly$`@Z'o@Tex6T&e&1ujKo2qW!ZND-ed!SSM/< RLyayaG{L(.QRW `v$QĤՐ:TftEp#7:Y7( :~42%Oo5y<*AfeHMJ([tb`T-K*%DBTY)uқV{ (\+&9yPғ7̺Iu"*:Z[M+JVTQ%W8lY1 `؂%Dm)[*D!$vO&,s*jrK]Xs˧ԅk*ZjgKydC~$>vm|;{vQ-t{mw T=q5eVm Y)X~$"}kza!.E0A0"4Yy,y{d9AhrX/W*fDĖKLeI2GpK-|\`'rU5jZ*< x}9NmK",O6v\,h񒧗Y?yFҢ,iv|)`\uK5UkL!#5frQ?L#˕ևIA1(K,#_Bb/Fv'[q0.)W6Y}r:b{_4jНk$sЦF4\sؑ5Add h UkQE c2fs%j=y-^Xz%(X(w+?=bܬ 8~L.. Bqh-kݳ!ܫ&zˁG=vMqġbKS3sO[۶uiQ&\Z(S~?ny>aZ7%l U nKoK;y,Bu\J=B(~482wMc{ukvF~鳄L8?gOȁ}Khrv@Wj!fȆ wQ.>t 3=0/ Qd&xjX0kgQN,|jLG-3 .l9^V:F/;g*^S# Ar{Fd7c4L'AG(v؆WG؀NH6wWY8(INb4d|(`cč˷}§j#Fd-8&bp_hP2ܲX83(Cu(ZeS yMsihz%g_ pwYU\Pn(Z.x-+x_ّheDžnGsE{Ч4~+‘6($rTBÃ`YRqJYF9^]w0GkQ2bA?W/ZY.#""!!aYyEI6_!s'P!9 ə蘁)!P[Q])dB8a$Ě"/WCQ۱! @(K!i9tL`ĩSF?d0RqblQ%A!2R>\LTYqш]ٝ%O⩘6%2 h3 #Z؁wxCc'ryLP !tъ#*.[~YW1*! %#i[!!u ?{A՗z|ѠbʎRq98hQz|4}t:t& 8z7wb:Z#z(aIV:Zzڪ:Zzګ:ZzȚʺڬ:Zzؚںڭ:Zz蚮꺮ڮ:Zzگ;[{ ۰;[{۱ ";$[&{(*,۲.02;4[6{8:<۳>*"NCBK IO "2Cj@\۵^`5; dFpxgK 0lf E!@R`R@x0{+jK IRF[и@@øIn -`L [ {I@๓:7 @FBKbĻg+k镸.K[k$[;MX!k+RFu˘_X1n۹yk8 6|C ѻf[ۻ)O؛۷_"@ KKC FR붗^;ۺ㻗b˹+!kg»G;;;Y; +* R&\hG z;{'LG@p˹Rp,±kkd0 s+#[L哿i;+<x!,!x @ M J!I-Hŋ3jȱǏ CIɓ(S\ɲ˗0c4Ila-R$!3ѣH*]ʴӧP $U8$ RÊKٳhӪgÁ s-PUڻx˷ߢ[tHW4Iǐ#KLe-8"ʠCM4SrvgcӰc˞Mv {kC'NaHD*(݅ VD2سkgz̽ӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`)dihlp)tix|矀*蠄j衈&袌6裐F*餔Vj饘f馜v駠*ꨤjꩨꪬEfCY4U $BIVW*$NmFXA^aYٮa Nvѷm+.2$+Q)OZDԺPK-n-J's97]ux~Wlgw ,$l(,0,4l8<@-DmH'L7PG-TWmXg\w`ndmcSGl='G  0P7BʽvFL@߈㽄^ďcT}QK0 @ߍ1[|=M v0~Α3QHyk7+ʾTnzH .$ ޕ.{;-]T lnWTDJ$_co ޞ DI_H9 $v3~yyE1p~ԞE?#$W]?!s<R+I'm$w <P>u!<·|#I!@B9%` d k$kQ^RbHE b &`RB@ @H+FQ`xB 8+MP#, QCd[ng>Dst (Z!H@RĄfRI+UcF@9 qt1 7R0q!0OC P-eaVjUPT/QTjЉDVxY*`9#^VůwcMUkj6b"HUecsRtkhQNɴzmJinV8S.Vm3I\$J l^wL2IvBn mࠛL.xw$]׵-WضH-ʽ\Vw6/{(놅Uڶ׻kj)g[w0 _خ*vC2bǡd;}_IˣK$5iIkf}eGn(qiu1\/7ٵYj,O:Vn7GJ&aCY{2`< 6j@&^G(kC<뮕;5G^rIl@~:F Fu| (r}=Z%nWr]->eOSnmbۨ!%43AbZ،",Daw#E5vulѹqĀ+ ;3$M6ɷ/d8Ÿ kO$cڏD{? \HCț(q|n?H qJ/$yW)iCEEqt|PAs!iۣDrab+7$0 T$@ "K~yOw3V]zoʵ ]*nm^#~2qθNWB+B|^hT8Pԗh" -,WI7 cwfz bHX:vubs~xgdhSLm-ҷ\*kVtO8b`sɗv@{8NQ>1z]f._HrFmxaz}bx(|(-'nVƈ|(!Xqa#.H<av]%W) 6ϣB7FAqTbMsC=(Z.edGȒYVfr!eeWQűr$wU7 . 8XZe!ɉ2o9YY^ 6xz0דSVB"@U"&)zKsUfS>xQsw؄Xi_Z <Y" +"əR gL&mq)5j~i= lǖ IinZy8ؒIu9H5wǩFT9i霌}Va ;Fg6\foXZ鉋FGxsyMx{ٗքd g i|:UЩ&9!In؟1D~KyaXɌypx :ѠWb*:jH%Aɞj?'Y޸cĊVNcnvf&<:gƉ:j%Aр&ٙ'0 :Q}y9xAj}ئ`ʕerVnCv9&Y:U3ut6=U i$`٨Yi_r۩qZjywe BG2LYnHB}IenzڪhJ񤫄:ԜY)I[jyTv@j~SRz *)tڥ*(yrWf %X_M炰l?ZEUbQ˘i@POVZzZ/*(~E:}jz%}Kxʤq[zq핲`' !z4ʲ6%eQŸ@Kx%^ִ99TnY{o銲-%:ң* דzncZR]hBK!x\}|ɶhؓ&6V[e;z׌t gc ]d+92'`h/)lH\ur&k+&%KrZڸZ PųҺzȸn4i!Q q-2dPtߦΛ|'-O{g 3R-:@0+tivkϘun,WRN7I˚w}q/ yMٮ~Km{{.?a1 s%87[sTR\,IY)M! u!Wh [~êU˻t,3Xq!Ø7܅ŹsxD G1Nx ̺*hA @ mAQ"P$%@,958vmܛ+a{Z۳hTeK\|6u멳-Ytԅ`rws5Ȓ|Je? V@P7ÃBC7}XXR4a>qS:LP>Sxx%<3\LVl;̀Dܤ?P3'Qg! t<ٌe!<7|p7~c9k )lۣF_}` i<<=n쾲ة7Ybw69 >@7W7$)c:3(5 >]1By7sL`DHcD#Z=g: 5-7Սw?9kRPe}97XA;?γ9.-:<6r#rMq@`CN'e)ڊu'4gڬڮS]*Gʯ]۶}۸ۺۼ۾=]}ȝʽ=]}؝ڽ=]}! QK]413(GtdGx$/bHZI܂n=!AM rUvQHH>W{<QG-07Gst+Ed04^y=B>D^F~HJLNPR>T^V~XZ\^`b>d^f~hjlnpr>t^AḤ^P:PGcx*1Na繬bU苾cx瑎~n=Aq1`/<+fqkgHXD/AhqtEq-!"a,ˁ1%?r,eu1I"_Qَ]dK~S&_ut%c`1D0a\U ,^/aW߹A,_&e2]8@ g4<+t&1,UA=aBNd  nq3N.t.\ƩցJ2BN֮-Ud/moB[2aL9OTϬa`b/^);Ƃ'?#_MTw>a Ua,R 1OOax" .NdL2Ƴ25AfӖl"#%A-I H!C*aPĘQF=~RH%MDRJ-]SL5męSN=}02OEErhƅ !, x d )2%2pM JHŋ3jȱǏ CIɓ(S\ɲ˗0IIf)[@x b JѣH*]ʴSIBM%ӯ`ÊKٳhAJIa֭$8۴x˷߿1!dH ] ^̸ǐ#[ ψ= HƦϠCMZᛔװc˞]a- Fys\ N8XRȐSa۩Bkسs'ܩkOӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`)dihlp)tix|矀*蠄j衈&袌6裐F*餔Vj饘f馜v駠*ꨤjꩨj $B =٪"S\ W민 TORȥW*n1\> *^F zѵvm9TpQZZNF$ANYEUDj֮Smݫ$]]x!\ 7G,Wlgw ,$l(,0,4l8<@-DmH'L7PG-TWmXg\wb ^C@Fu0 ^R'@P@ =wp?^T0P@x&4}+w01 +m wC"L.Qx6D(8=ʭkDzژ:76ǎ6v{m ){Ot@׏μ@-XWx c΄Ꮸ{տwX3x]0ĝ)0zdQV B |~ de֥%Rd:S'qD-Je^i>ݘQ jv+FgѡYGsģdN!3iM5&#ҩ1]ce,n+xj+sgC J(._oHv9E,)"xxqi}˗lGS7PPO$pCgh4/Q'.szGm"{紷AY]wd`)'n}Ӆ6Ѱ=+D]n ՜2ɱ˨sKl$tVrV_h|!LCk8HƓ#cjh"E0nS]"HSN@qMwܫ*{yg?K?hL3ǯ7܁jI'8ptF~p tKā| |9{Qu#{ѱlE~ڛ;U{6NbeBb|7F"x1y $Ie}i~:; #zx5xWigy _E $RWx)Hz:V xu}1m6{x3xwG;G%ChWoǖ-z.d|%ueun,x<[89qp3Ńڱry u{8#55KNWxCWa_cHx=%*|IV}ȅ–(*8a`x vehfGbzXֆ&Re>aA8|bud7vlicrCWHfhh(w=f@f\P@@0uaF&]H3nxd{wmFsGx$zi8`t6iGtfVhx~(H"~ApȆrb؍я1FYu\?(|#lN(bSexq{u(x8H$`|)y $pV-9ՌGgb3{2Ea#Z[IVe{օU\_~%th^F\Tr\39{1x]dȉ;{q0אGe>!U=_XpٙEX{eV~6~(8HisES)Vv}^_Ceǔ ʗ$|#a"aI?șB"h%^yUYRwA"pigZɗh9 &iU7-9Fɨl W^69|}_h)wmt7iZ*هȌLSr("yO2D pC+<Ճ9UE^LZzyo:51ǜWJE+btpS'rSZ%f@냐c1ڦ`fG{\4'J}ӋXIjHlZi0wuu)7dRQLŴc=çfAyO'5l',r/mw }:PRW7Xڥh8=:wbcwuh^EQyd=i\ H? ~Pw$dx(r$)eL&K/q- ]չFwA  d2{*iʲyylEv(t0BNXJkn/*B8#U >i㗓C9}&Z'*r6LudӲL2>FCzA:ZQ8c}e+bj7~89?pPҺgS8[:U= Y4Ӷ!?8/+ͫXE3`X8s8K'3Ţ ;zoSn÷bCLiOTjlnpr $\H ](Z' 9'Y6ܧv(Zz㦮$eYl L :׬-g mp XRFk6m -&8^}kw.,P.W oW{[~J,ŀ驰v"|O` ע'8#rڲ[f<;z< 3h^,s0̴>30utz[ 6NZfh5z6 ;M|6#6 orͰ@ xźL0g0Iפx0E&۶"_s>ަ7zFL(̖40G :츲G'v1̣w>nf(^˹S_nҫ#):ARelՏ:e"G| ܺ$L1hPDK|ny I">E E;&EJrV2D!6A$*&1? : ߢWSQE,^5BY`P'zvx; iUeERiR(:H "%0Eb$??3"7 K& I( dpsv  iv4bn4Ij:+:ђ#bx0MgFCIwevAdM sVRِ$2d(NvsՉO{> `\\8pIL@y.Lo1wFy,Lk[:!RnL`Bd)I9n #h҄%)!`(EC46TJJUd bjjLb5(Fk<zu Ǡjj,[򛚨J4|k56qDS0j_j6gdO^l2d 4-V}cb寅`XȲZ]B*eSYx&ͫ=Hm{ن),;+ JRq: Ƭ(v@ϊDrUmѯDuM bON6El~)᷉Mi%`%[FAq ^mI"Dw٦!aChJ֓QAw2k0KMe%qV/i{o$jϴ9ڛ(Z4K=1tpiPٝu-sWp y,E v0/o;r)<_ƫjQ.k8Hٍo!ӧ7fc=C.`@I+yo+A [nm=@"t :y*yz:UP5rxU޾ɦnZ$ίr7m^K_^R#IV⭾0G{z+֬4J<1M[]7>$o{TYNP)ߨ{ZNs^Mٝק{q۟V6$OL n;|*}dwme-rSG9D4w'7*Qlw!{esF"FO&bf*^}f6pf#|J{Y{skIߕuYM@wkR"[.^E p=}`~hB712A~oId0"Gt7sWgdx;xZ^bq8hMS[TxR%0("ز5{1F QCx0/Gc#,S ]X^Fl!ZdxZx燝g\vl5ixOlj bC7בYǵuUJYXuHoW*uHLaK](VR5P>vNX"fXt"2T*T[wK NAy 8^+y!Wە[ : 9[q;p۰{8 1Uy[k)Aە> IPIӯY{p{d0K;N@@K]ql;o[h) M[<{VK+d+]岤pgTKQ+ka87#R ܕ ܶۋq/E+\"7 K]i[k)n+:[[\v_[\@ ۻ83x+FqI¤&Njʵׯ`cF ` Zm lطpʝKwX L5KLÈ ӃcXq˘3k|2T*yZVqЪr^ͺkΞP6VbT) ~ͻZ}"YƶKmУKUVνwM!%VcSN'nyϿ?I&]L~ Vh%6yA tcbh(NdSPL{7 5UPS> [D&iЊɸS*[N 3HT:I朖`bj&Y AN[Ch~iTN8x2H&0 JeAvј&cGR $XW*b ~:*QTz묅z䮼BcyjheF?,A&vlξDVa(zkVcnN:a:/+օgYUof}f@c $_,;K&J8$S)\LrxLXr5 4@|T-תͬz+tķ5E@iT`[{VÂ{ٶ['ed6WQbEe w "' ܸBZ"J"Ҽ,qSY'B:YxA2&5aG A8PqD7N)ӛVުS>̐o *vXo~r+E]5?C:ZT5)p^>>hﱘ(MtuAD~†W$/P0}=ےVB ZO9U "MswHxi;!pܦD"xNܒ(Z6 R#6xHxtT8.Y6"o5h.iayJH #E6AaL T$H0AK$XFO'&ĝDzI ttH߷F8'_$eB ^r%DjIK* G$=Hzb`KIxZNnsHRަL@KfN)g/URTh b}\I}֓4<>hk'0H[MqPqQ}.9%qRgJtD~3PDgL-9=y," ]BFT9T\KgTL4bPE(cM8m9UsL5j!  YHdK_lO1| 42[̪0suQTpBV #֖2p45yP]jHd0R{*JJ'ԘUS`4rY/-F}x6VUJio{ SR_(JruSl[r{%W\2"ehw:0@ +/_] $l%ϛ9}L G)}jqQNp:z_AzWzQsw5{+#"gv*n:' LCm'$M|wDppx& Wqwm32n7U6E/qV}ryG%)+roj$w[hFせF(0F4cPh:#ǁcvFmDkR6(}|Y)%""d}=2B#oW#ppu($zU&w{[HGxkcf}Z1e{xTC%(!`RChUV#<3fh6#e{x(BXG{ւTtx>g4bQ'.!VwV9-8"vv]x(K5kFxE7'%`_X*rG4%T,R~Yaw[h`Bu0XO0(x4C\?;78KXR7Ӊx(f6^|5Hz%$Gx䑓tYt7yX8V~,IUd7@OR9)4i-nd ir3HĎCO?N^e^& NOP>ɾ'Y|6pDDD buB D(A1EXg}",Fa)T:axztV tL50uב݆?aidtA^%@WyR 9&PQVy&zYeh_~啉'JI4[='lء;`Xv_1\6ZEiu)#W^:SM aDjFژJ*+ GMK9,~7u e){,kq>K1Ub ]{PQqxv.uVz+ת;-0RA5ŚUܔBm%*&QKlT"\.w@:,v~o&[̦\su(1˙ŘpZMܲ62$lmG Y]G"4tWudD|EM+v;0lI(ł5K]vVN d]vK7PpW'nԧ/odcv,Iߩ9m _咕7vֽΚi}M:8iuLS]({B;Lɖ:ϭC{w~r l˻4Q9ge*cSzo[Kq10v;OD q{lv b@s9!\M· #lSjf@ m`Au0 ?{C!p> :J cQd X` Kn?$\͒޼BTA[mDKy+* =OlbE$ڡrK (BG76v#GзJ%2r%e ')8X]S6[.pP;%̂n2[-d:p3Z''zSeθ9b"9),jjc/DPt3U+K"ҭ;Ul%U-c 6;JҜ 85Oamϊ#H45yэKV}fBv|$LMVgL ՙ"g$UQjFU%yށ RѢ9uu5vh5KUa(TUj;z%3_M$LU,TDqլdM-ո~RZNpuFjО󭿬jueb&iWեc-Lb&tik%MjpUeъK{.j"lU^Lj;)՛ ۜwRS6Sq[]zVUhF7fw&Wxt֦cj˫`iW%h/P$;44YR-8,wOivŸƼkqƒpH9rTSv%q5s^`e/R{0̆pFd$c)^u:F~\Xꈥ'{KS`=FhS&‘Yfqm+ۊ/WZsIITKZPΉчnoٺZn0 566_lGڦ+35Z|.EֲK_#eK_Vnmzy9rN9y&=4EAfT4-wkCs; t&4tg1;=Pf,lu3Lq(E\iymܑއXD_}QK? ;'mYDzF~ ro17Wv"Aּ(I$"w7uazwۆ4^5?YnxGմ~o^A})WsY)yDhh?A,wnzǴ]P]Mc1i2Id]uɧA"Fda qCv'sIr^Y`GcvFeh:(E\'F}mL&o3Oޖ`x>:((6q?Y ?%_|Էuyx'5UfrHs!@Q׀WsT2h(~\f]`zi(mEyqvxAm3~XboVd,Ց_jiao7|eBd!9,؈wX=sx(Q-TqQEw(}5Kkw,s&ۦ#}צ{e>72':G$^Hזxr1qi5|WADszH|8#X3.ј, Dt 8gV̸]OZ|وeH1R@zp5U}1)2<(ZZUNˆh}r.ucdQW_;caD͑h$TR)4va%&28E$F g{IIbVyY>VQ(AS QV%K1V #FGg.IOIU2lY+yvTƔDy"9u鎰FMMɐFŕ}HȆ p $bx@F[)Ɏ2MC!. ^YHq: y5[y]$k$b@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tZvzxz|ڧ~:Zzڨ:Zzt%dA 9_* (Щ*Xꩨ9jګz' wA![@R[$I@8gҺ @IpKI} "IaGSj4PR @ ¬P[ B5 J@RL 0 05`[0뚪  ;1@d, cƳ[抲ڰ+5˪G+)(ѩ ,K5{4)$W5AX˩-ޚ¯?iEU[ %dH˩K +[`CkV|{UꪳY굱g˱:%%K'i۸]hk>7[9;˵tK)[OE˪[4 1f khʵK7ajdVךFHk4jyJ yǺVK"!,/Q8 H*\ȰÇ#JHŋ3"@Hɓ(S\ɲ˗0cʜY)L,ϟ@ JѣBm0Ʉ6u6իXjʵkQ ( H ʶ۷pu4= *]Sռs La("*Amv-Ø3k̙+6L+f~v^ͺ*CId? ]l+_μׁ=C 2u,Ig+켻!b=J|ŪϾs|YW$&Z)H?VgeYgfW<%h~RO%Tf]$đ@Pq'Ea(hcF- DUx#x-ڥ֏DJaTH&ڋ\RVPh5Uh ֗d$X[~&e2'm~)]lIq dv1ȄZ9Gj ^*Zg22 d(#~be萝.ᝥfdegv6*x")XP$ZG֚驰 ު+]%I+цIi`vt`g:W{ʘF-i{X];. \qjn;ڜjFrqɩb\@jpގo1o- Z1\lKr#|3 ]+?LFxG3tڋLLn+՞Kk`b=١SӜ=)=oڬrmyr*=Sz퉤ɂjxD8b;uB3ߔ3yR@y;2#99Ayzjvdܺd]M!H,7D8.''Otv^2[/v,ǃb[o QO4[eW:kx { x̬ =Fbs1 MP!b~.LH.9V Hvw@ np_B c n;T c,U C!Qmy«8/>DTl+Qdײ P .4dC5\ȉC-&<ArQj)9$[Ԁ iߏZDU\Ã\9K=Re~Kӓ|"~?-@ǜ*tIqӂxjpVs#<|DseN.i/%'>9ȝ&И'LjP2m'^FԦMsЋy ReΚmY4X;MHYUnB1+A걔bN4К0MǭNq2oՋmVGaOjB,˫ r@'ZV~EμHvRk2;J/Va"F4=CiU?$]Tוv솞8Y$SUS"'4Kr3iJv,USiNz-ͭz[DY3}+&)W,+UJ6vh$ul9ڶd~{5-X%̻c9>5%^,I-6ERyUv *v㜣Y'OTĕUT畡M+Ȝav-(854nj5Wgcmt\6>BP ITم_}2٘NؙK%Cq9k+]\ :XxhhAllОPT-4N O3b}ȯuچ 曆)]z%/lC7Mr8ƶZYzl=RBY{oUr D>q \vå%iMe&m h Ä۳shM[ef)эjgD̍]29erYx-P$UL>gy8ճ6OJH;ܧ}+6x mѼr>8ݢ֟6&Շ-1}D u_*'9~gFC47XIoh"j;6;8/#}p=k[yBCг?ޘ?"v/|R{hA"G$Wr}f[C5roP#lvF;JF"hGs!TuS%W'(be/5xz|_c#`v"@oT8IrFfO#xx0_khfYbE<~Tpf'hy/od>7fwn]8qvE&$B8) hf3Sgk?g2'nH^uJ +WPEGwf0bWLjFS1vvcXhw֊w6~x(4(,Hvq)#Mta+&Smkzc|ht]b1*uTȧ$Hv=ÃiDŽnXė%1EmMb8M7:0xƏ!TCElhi mDpECq(ZH%Vq;H90ނor)i{)|aͥe#^xbWOw~/*fRfL~DIBQpfBcH|{6+2Y\hgIEG}Ȕ|u:1! V Oi13@ēa/Dm5~j96 pOf9If!9K@ 1I4T+cJ6 {䂙hf2+A{ ?S0ɛ,32إі*ȁ{32Vp|S I{a6B&}:LzعpQ NA TBt/-}"\+JQptC`R%ŋ_°$!ǢeoNxHGU*t]Ђ&mk}\B ȇ}lWݤǰȍ6\oB 'V$zE94*]ih!R(4\ zkWbވWZn2KJ~d⛴O!2r[. IQLd9hVd{C;h=svvNR5͵SPܤ#hAmrDJV &?gP k/hƎFY$.1NIJiG]AOV"9}V˨RTT DrDO$ #Ej?2ziQ e;y]kj/ k~ 8Wѿ*_cC}Cr+&G[hϠ+%'0ip((==}sT"8ѱ|{hH{VnG]a5@qg(Q^h%جYArSm[;栂xmsgEwܝ{Z }w[Mx} w{Ej?_IZ{<.L4]m5挬Ab Gcw>:Tz%˺yS UEkUP((t~=_$0JUOuy+Rf .;7 [r[6d[{T]d6fյO'д7.{/uꏻ] =w7iO'IY8ڮ-8fD2?ߐKںԜ$s#'ZD:Mz.$a{Xavg_>qGl~#fmdE\';hvk)xSĀ;bs F'Jm2L4F.>Bmnd.P(gg4t/*J-G6Js8"vu,a!Q>;H<'|Wa`&7\.ÁVqIbecz$8e~6bh=7h[Tj*TCn D':G!Smh3,XHȅ .GGSOӈGo3уxx0G`1ZH@>FRXsZ7%8K}Ӊr1 @B:DZFzHJLڤNPR:TZVzXZ\ڥ^ѩ$@ d e:dbڦih*pJQk*g ~:⤝q  R@$%RM@I * ШASR dR $:8pJ:,@ @"9yC:,RI0*ڧҨ$:,[@g9@ʦfJrJڬR`ܑl*Aë`ݚ8,Κ[ЪJH9ي:iЯQ+݊t@:jzF k|ڭ);A[=:Z>z޺$*#˱z( | zJj 0 К*J +< p:.˪7KM󊲞 !,x ` M J!I-$Hŋ3jȱǏ CIɓ(S\ɲ˗0c,IlT-$!dѣH*]ʴӧPJ}$88D`ÊKٳhӊ (jUKݻxkt΄ tK$_*^̸ǐQb幉@匆Z̹ϠC3 <$jYװc˞M1-u 87ʹ NTR"!NN oԼ]vËOӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`)dihlp)tix|矀*蠄j衈&袌6裐F*餔Vj饘f馜v駠*ꨤjꩨ @RDZVdaDjC`&nzVE 4NޱlUd] b~zFexbAd*ljMljj7A˛i5 福=תs]*ݾv7 7G,Wlgw ,$l(,0,4l8<@-DmH'L7PG-TWmXgneDv\4dhoY@!@hbm|S] 0Ql/(v ovݑ&^rnQnEbSwgc60QA;F@D={dLDQQw#jv۠~vSL6Gupt31Qە'GPa|t#Ds>GtPH(eoR'?~SޢDga<|[x& Q5Evz?S ;eF0sY ,?a%$)#M)cKQ$+βGٌTC $;I:3|$B,A6 EK}-ӌє%<$\,|;Xe[H>esg*$)-,{V9Zjnj:ow2 D;W'3HDB/+54./{Ppvh\*=ʉϤK3}˛Noi)p`BGhBo/͌*Ş>RU"0BI!W[-@u#dm,ʗxUz"gXǤSċUѸ= j4)11ϴJA"Db''&VUV [ud (QlTfcJ;MujTv'nJ%;'"/[(8Q֚_W\H# 엘0Zk8=*)glg5rCܚ3ꕘԊ0@DŮ^* ײLZ=r6ma?6|7In2׸tثmos(ul%_ c0`m$沔8i^W6l,&1R,iR6 X $Z49Fc:#9o47k0W5l./'鬖_ŜO"32~4Η-̜02Ѝmb+ 2d%GbjjI؜8Nuj?C3 DjsYu,8+z1mt_C2r% tRjc}j]fw~2Ux\"h5F`=;U4xQRMKb8LGKIArHZ^T((N 3!dHt&QnCDuc=:gt}p!dx U~xzחw:|2RL78~R8oU/w'"_|sB؊'Lm}ׇ,Ky6"!i8F8gksx{;(Njwx?"Hwrxp6Xxƌl^a!Hxfx%`׏+rhgxw9էa02HyqMi]C7ɐ/䒬6Fchepug'y7‘QEs[FIv$lx8'9A rb)`]mjsjY#PYr1:EXD5 lē=mytLpokiDIl8V~'t>9n pїxX9\X@GvI{S(8uٙEk)#ٓxjʸf=YI(mw@l)M1@hq^Վ V|vƔIiӛ'gkI ):${ٌ,Y l H.hfi) TZ}G$s iv9i$i+j ;DrN]yTT(~UzX>NI%TVrv-#SYf^UIXV*]D[*v,wy#:aV&)}7FBZf%~Dᅧ)%S*@s89{PZZ֦Z{w,œ8^q$Uj+:bJYŸ|tZ $lc*j4gwT<6AZKU}ŧziM}JΚZXᚋlucԭ6IoDFJ Uyn:**ydYzLZʙd7 FzQ Yzbj;pJQ\m!PJ*Ӌpڥ`qqsFRo@CƂ L*Q*+dIsq8A,IX79DŰ9(׫]AQ,nwjSCV8JfJ[ڒ,=de;^ .o쑏aJ X}@aL -.b]4wgPIVFIHrd/I/o DX6A @ @7tZkI(_cG94!*%EaDh$qeeftag-5[EWRG#C(δ'5CP.)b,il75L%?ATqA@az>:V6u>P9DOAh*uLPT7#=bCL}lL,<=mcr˻l#ʙE\<:3nˮU> 7WEs=#8 @>TO9633+TȝB[,M.ʓ0| *CT^s =]} "=$]&}(*,.02=4]6}8:<>@B=D]F}H&*!5I ˻HFXJ  dKB r`- v;/iPM $-ָM\AOaOz} pP_Qh&6*!O=-ٜٗٞ٠ڢ=ڤ]ڦ}ڨڪڬڮڰ۲=۴]۶}۸ۺۼ۾=]}ȝʽ=Խvqw=1^ލ68 =m=m|* QqL`LdP=~AD109Qbkٜ2Ssgh QZ1RJoh0ƄfIA1+!*ft+<@%;K_ urXQQ8rM=-CK-QV_nRMNr+1TNKAS[rAJ0[~FK *sBV9,:g.b.X}~*_[6IJNM^~P+:B{d^]ߪ.R<'w7-Q$ɴp;Sڑ=DQXTNmt9Ѳ |=q ^ &!,x @ M J!I-$Hŋ3jȱǏ CIɓ(S\ɲ˗0c4I$[$@X`$df JѣH*]ʴS8H3I%ӯ`ÊKٳhCP O8 gڻx˷_[Jq8T:dǐ#KLIvr lϠC;[&gOMۣw&b7nX% ȓ+7 @&RM/lH˳kνHWN5Mӫ7.~`{˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`)dihlp)tix|矀*蠄j衈&袌6裐F*餔Vj饘f馜v駠*ꨤjꩨꪬ꫰*무ֺ[M[d$dpPod5=V $U*FirUXkIp&IMjj+@EKJDU)X4W @q\,Op]VD2xW*$l(,0,4l8<@-DmH'L7PG-TWmXg\w`-dmhlp-t'mF0 Dݝ20@}w=zm@g@KxyݷF}?nxPLLF,@ޞ|SgD4PxL9 @މ_D<3{x}Fμ}Gzo>//A9wVFs_ޮ:o#+'Noy|sG(hkNvV!;mՠ\^@BV -+7QVjZQGP:xi*=#ZfnEPLmVrHĄ#]8IŹ_{Z2.I펦=T}@ۧP!fyQŪ+M8\r1A%bFx K>%?|a ;q:٪(Da1-xɬs;~q&-Oh۲G lUCI {v Jtr!3R W6vVa<]$\ dzcze[#R6UM{J/kjx# M*j/1,MYr[Jdfvr4lBgܽέQ#gs-q"m6L#پ}(n8Fpopyګ.]GvVtgGHuYa@0ǹy-XNӓǶKzjAU_!s8}OZs)aG'zMN#<#{#gK?ξ`芸/2{QKg}zA6Ap3P/[ k/^0WXw'(&oL8ۓؿ䑜f.V4/tӟN뮑'}/f#[xVK|*l#5~jWem X}7tWdu6x?W ~8|hUm"T!Giu!bewaāo*](z<8yWw!֑RVk'"fVj!"xQ"}W!Z҄%x)7"fwygRuP6s!"g!/B S9UXV" }"~ECg"G"#!+]^4|q6{hȆ!w7@A ,1hmxK؈ƉqHoXGu؋P8v1w IDZy2hA&o(S%sFq w\x!/!ltGwT5W 炎r0_(vXXaYH4zlLjqd-(Х^wU!uuhiex?8ZaxmĨ8, g3}HUg"kI؍%P_/!mãT{'DY/<ۨ ~Yؐ(9FjȓoIav n&=ɕq'V<u^#o{ȋt ؗŠeG~ 'ݷb%Ɉ+LבV(QdY4pH^2\(٦!4JSjģvPjfNVXt*lzY`ɹ$X WښK7xz_IZUQzkڣ-&n9JfwhjΗzN?ҥYG'v~׺ٮC<嵮MzXxcׯDsڝzHyZ`I-Y*nǰ'cdv da;"Fgz^ʞ{ffZ8gр& :#af@+-;"{erq/21L!K`tr#O(f+@a ʚguaB!-wۊݺ5ZtجFQYw^8phl$RWAQ沇gc0w's=8y4(}dk+WdRh9I;$m*Pu&MH[ t9;r{AĶšˉT'BPgۺ\VX$_ w*FjY*ʦتe2׳[$櫳:!7 E,2eQ8)0ӖRFd>EHM>,>;E`):[K9w|Q<Zx6BC#CKpuCL>J*LDK)6;l)ʅ ,JV£S+lE7|)mW@B=D]F}HJLNPR=T]V}XZ\^`b=d# 1D[o8N<.;Nn!RU$]U{2PPr02RqaK,mDBMT(UIC AV|}Vb+/=XXm=h=]}ȝʽ=]}؝ڽ=]}=]}߱HKah*Y2~)%)Y>UH2 n) ~:cAyLdM:/AΡ4+X1;1L*z-N#.L[ L1;-a( Q/r1t}1fRWrV%R1 [WW$ߤhe׭ Cp-=[QA^ +8!~Mث6 22"MUCvT r.sۀvS?^遮`f[^z$%f'jMyMUʞdZ(.pVH6guTNDX ,ѕ12]E\1Rt/*.pӻ!,,T< H X(@ 4`Ұ3jȱǏ CIɓ(S\0@'6t͛8s:ѣH*]TaK*Lp(qXj݊gZd9q*׳hӪ]˓eL&3 wE= uؕC" "8ǐ#&h.aLCVjD=eͺu ]xcψxi[?z@k,@sg4:`OLD(dݻxϾhOD(wMоF[9^Vg FTKLhrw`v5Є{neX(Sl4`4X{x͗ӄUhZaۆ@bOSYmi$]VP (Xo,8ߕm-C3fY#G lD#uށm)ӭf瞯&_Zu P& W"z(_ $XH}&ЖHX^wfqvj*uK.Xc^&v6ZJꖠͪs ;MHgي(Z*vT A%V-~+nF:hmJ(ֵ컑*uں. oo,t/JY'YmO/Y{!(wrZ2΂2\3i+Wml03&nK@vey= Y絽VW$+P*5k8}tfXr׹ -27=uT|8 ;ыw"'11SКC9Pn9|q^a櫳i<{Je*Kj8Z^$uD6r7SQWA;}_}f_EXe 7)='0:V6z풞E~)ROf90+Ļ 5jPT>ؔ!\ǀ(I T3ir3Я0!(4k`E!* @+Zl͍fy-) &۹FtGf3@cg:V*zi0-IpS#,(<~ 䜦>IxeDCơCQX <' Ҏ I; Q3CY Pe3$F81 % hͤc'Jm3L"\ǼHVԧzte.ҶYm˪Ukl3~N өZjVR)J6^TZZVpqŜ+Sg+3l'="v&cػEckzJKJ[Wy^]fa!S*UH-Ltr[poN>HH1{\>B] pⶶkZ6wmorfl,mX*h#uN*bWE饵lmʭz5*Cz}ckQ eUe\-Vl3KV/k']E!Mk\'L*n  ]1L^,Rju28Z(~ΕOβ8sr,+\Tr^鋯 >f)rÜ+3zk2F n3@zXX)7솋fZ-lz\Ѿ˰%=6-hkd4MGfiX1YbJ Ѵxn> JVgqˌ tSj~K֦{Pd A+Zf Y9Mpk:;P;P#3&5ڋsٗ={ކ&Na`݅.n rD^efx܍Pxes}h0oQg .e6~]b"Fy+ͼfgo1_ɋI&I3K`GrQ͉`xΙuC3͋-A67rfRSx_º3.qcorҸT!~I"t/DU{aWaڳhlyW7=o[SuqgqQU/I<|~zw$/{3.OKnh9Gt'@+077b%a)zXs9r{Z,hG1P`)(T:]3UUc+$q&TyeG6i]RSa|tba HgX xU Øx!јT4iLj=WRT҂{"^2&6K<Ȇ2!# BSԌWJxZ莵.hTf88$2 yґ>Q#Y((˦):(685N%.k6):1i6P=LPR7VyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9Yyؙڹٝ9Yy虞깞ٞ9Yyٟ9A _d:!py^I:oɠ]ڡڟ˱d RP[^R@ =!@R=1zF0=@ [ B@j'SB*PIP +Z0[ d( @ 3'LZ `Xz2RWjdOR% Q R  X*IM`&&zM@ozI ^ `Qdʥ u }ʦIp2ڧh+' nQꩍJ_: &ʦzz::1>:i©ZkتК赧ʧNj'cʣ*ѭ=B OZ ҧ f " $3ڨ&zhZ=l S9%)/[ ,ak*&$zвOz*2[z!,0P< H ( @ Dlŋ3jȱǏ CIɓ!\$@M"N͛8s 2…$)СDH*]ʴӧ ,ׯ`m8@bՂ@#^ ˶۷pqJ%dτ ,iАkܿ"Z?:$ #KL&0P eV\ic2`rwcZ&O˞Mܲv9]ͷsߴ uƱ_μNT9Ո\γM]v5׾=#L8:7 B|{b(tgؖJFT9^a$h0KLxf{W *E aYRRMWl!Sч؆yu8B >DgeȠD>ao n%dUuJH9⍈|hB 7]\襈 iYb8`^i)]y#2[}w9a'%hd TV`hsh&uvjֈ]x%_ՃQi Y(EhI%zdlGR(y 2J5-Ȏk.F@[*\ {*u+f6zif\ ٮO{]*Sئ!/{kVjTY22,)\:9bpiA7y6+uN-J-ȿ 6;LvTgUW%~ӭ4;6 AGs /L>kw#ގ8p~y?ݷoqXgns~q庺%϶v7:̕ͻ;ŷ}|f?B-+'&#f/[b/TnIA>ei7uMZ|?T.,; N!%Sਂ' JwhS](m+ DT€% 5E =j+>Sk^ _Z3;a>5گxB4bBs!|HTS'œLnM9hCqъj uE6 ܮƛ 2k G5Qi!&&)"wE ~RF 2"5Ә# F #"H*\#HbKH(ɳ db*!LQ%Ij0^.G5ĀƂ0+1ї25N¯Y֤V5.eMmʤg"JR}Mt-̐YOc DթFDdiQZ3ՙ?;`k)F&}4QZ$J)fs;E5͡B-)Cw@~|?Ԉ.3O%K QωFP^^z!eOm66Êj[1JOK7RN:5nE\Vl_TL 7ϰu댊B6#Z1UgW{c=T0V bQ%-T[gkdUEKM*Wte =gB|?"Яj]v~7|<`5ʥ~ 8$3 6qcxc !BP4!|ߕfF~1E*ٵ,hzm &&`ۿX^rB;m2(GnY:4Mp2,7%aVʹ-{xzdIZAkC1;GVb}dd7 ̶K:gvHgjWM>$iҽ$VîA;Nܙďae,[wJŌ M^XVs^}t TzeNUD+N; OBwN{z=8[1lZ+%LgpvuT۾j.'ȗ{)}~8>1\jF׳XYTxн]_]{ڮ_ڣxſ䎣c!͔?\{!'}6A56/{~~oOܓF=> Y/[V㙏G]И˺ιk\)O>Ѕ_۟ϛ//?qmr*?hNzÖr!Z|>u3zJ-9ut<TPWuW})>a !Hh!tu_q+#g0j\gf|E{~7&@#GYkQWwLg$)9(B au}bHLHgj`xmH8E"L"Ԁ;-VwzzW$IWbRtdu:. W&lAa@b1*A|/8}V7k#pfhn$yDXM%LP r8T/g(7_ !bC ϸ@&I WFo qMA&X(0b#xQO#gDĉ4)f2'hE11ղ%riG#,AwaLf/8q$h/WJ'$)x!1=53$3|0"E]F1h?U)J!הT/UXZ•^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9Yyؙڹٝ9Yy虞깞ٞ9Yyٟ:Z\5`#Bt9" Zڠs9"@rZ":$Z&18d I@RR@ @!@R@;ƢУ@@ [ BJ;z!,4L< H 0` &$Hŋ3jȱǏ CI$B(I͛8 @2iAΣH*]ʴiG0 :`Njݪ'CM&lDVhӪ]6'U' fݻv'A,5!` K(ǐ#K9P)@\9[DL0i^%} Ӱcˎ܍=l޶&ji'+/w.\Bh:[#A+EcsӾ 3z$C DIM9(\pS򻘁PM4B 6$BEpL6ݓͷ"/q#Bwws`E#ْxbXD~\o^ŖC~>Mৗ,Э/ #/b-/ͱhzA7ؿZ"Lڻvn򿽋+3K3^o׽X{(󥹲^~Ԃn~;NW>(r,.%pX`AT6 AVPk4XuPIY BQ! Fhq9iR!j*4> .7=4`׸'VfU,V)^4 h0+fKU4i\PhэGl,Qxh @&^H:yъuq DJj1DON_EGSZ+gO"Jq! fYDR3l*adZ* /;iL1oHl0UP)Y2jf*,%v9o/-Ls* fǀiNy3v=_Nn̝>['OJ% 1x 2Lǩ3l-(Ha%MO1G6dHT , 5So1_!sZ[2.L^P+ J[d$^K^A6M*IGV+E8ԧԭ9#]U6fykK`Ȑ%6z[df0RkjLVkLJOt޴jbYm05ֿ=6=dRZidz{_Γ5AXq͹"פ3gi5 `ʕjj?jYlrF\n[޸Ə*]?ZS̭4p`ϊVz`WFQΪ~)#ʰxfعC릤¦c]`}O%0S{\g29%vgE&ٵ%KWI$<\ 8mqOsٴ5sI W ̬WW9xDY5}i۸擛ikhR&LFXϔ ?jhŦM+7|oN[KY~#z0yj\ +sv8N]t yC77}t8f ԍoD)ǵ& |QHhm;x|"H[ဿ}j{Yof$< ?p?SmZ3Cri#uuw<2|7]{>-\DZ#|\ˊeB} ~^Gh%J@{?6y!¡g< ?دgJȹ2$̜nՠx$ӑ3A)g$=!W1!x~{7t}|$a)1q G",Bq'paŁDT=BB(!y&VL&OyRqbj8Pdb uر+g_n!xlұ&(CS(NPbraw2|h`N(%Q7 %Gx8tq8=`%L;(f$/׋c $vc+(HXȄ-DЉQ}Xxhq؎8Xx؏9Yy ِ9Yyّ "9$Y&y(*,ْ.0294Y6y8:<ٓ>@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘A xd Y鏕ٙ ُٙI9ٚii (d [@R(!)=[@ d([`-dpʈ`R d.RЛ0I)Ɂ)I)%(A@  I:IRYPiYA ˙ )0 ٠)I [y ڛiɛ'q)jɢ: y&:Z )J+ڠ $c8ȟ)j*tqݩb )j- ¡k*)Jk3 Kɝ .rzzbtz #I RСgȩ陛 Z@ J):|,!,G9H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣHrӧPJe dիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸sͻ Nȓ+_μУKNسkνËOӫ_Ͼ˟OϿ(h& 6F(VhfbWU ($tT,0( 8߉:@)DiH&L6PF)TViXf\v`)dihlp)tiY]zJB<),I衈h6裐F*餔Vj饘f馜v駠*ꨤjꩨꪬ꫰'*무j뭸뮼+k&S:&P@!,x  %2pM JHŋ3jȱǏ CIɓ(S\ɲ˗0IIf)[ #! b JѣH*]ʴSIBM%ӯ`ÊKٳhAJIaV$8pmڻx˷ߡlaH ۉ ]̸ǐ#;ܞ _$cSϠCpOʇPLװc^3܂ 2nUv*Nkvު}vËOӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`)dihlp)tix|矀*蠄j衈&袌6裐F*餔Vj饘f馜v駠*ꨤjꩨy\] 5o*e &]5$qrʹUƺo)U,Wj7Uس*hDai!W@nkZNF$ANYEUDF:VR,t;vy 7G,Wlgw ,$l(,0,4l8<@-DmH'L7PG-TWmXg\w=@' `c?JDL4%6,-< Dhtym67fYxMDw/!w?]a'n 4`y DyM0E6é6LN7ݏړcހ!@s:@p- <_fU{>_tDj{[B>nHd$G9 =bQSl9]**\}cWxiJDX=yaH ʣ@ R) I&@V+RDd0 HJp{eG}0-2Oل+rT쒛Pf HPA0PO9ވ,uR4"'E?JuTN @PC @xP$ 4"Ilv.G87w!H Ej:X*~_D !5 VBL-`>Gց,\u!^7af@WT)H R&ۄrdy l nhQ:VC*POu 0Y;M6{.0k#&ײ)h +sn_` KE:LTQrP_Qnd{y^n bVrF} XۦTNY Ss5qo@5 8pw[44%eIĊ8؝sd&ZW2y|IYT汕E4-#Kx2*nL`+5Eۙ~,LCY&j@,[Ģ^@g5ͅ1'#j%jg^b&>--fO8M<(ϵt}0;ς6&EK?5yFiSeRn-\%jǶq,+b*9<\4FjY"H\멮NMZDbu!gs%+SIklJ%S;YuJVSgق2K|PqwrZ0Q7gbSn[^psGKͳaO;I~[C9"{|nt\>8&nt"Wt̹ <>wE!<1<{,Lqg4:ڡ{pԹp**ٮ_!ws> 0ݣ~'7zw:^E1;m3<Yxm2vs3z<_u'.izx#_|3|{ĥ&|#]6o?hF I'ti% 8~!}$KT7T߃[x T]_x\V!5dH|gaMVǁ|w~)rv Rt0|$R(vH w 2=RGB~"|Gk7zgP:AAWv k[h1hJ!$ #s68~!W!%9t@! WvOTl~Zb} Xx}͂RqO}hxh0$wa`5bt+gFw Nj5(q/ڒ~1Iazg@8*QQ8z]?X\X荓<%<8!H h=d p׎YX*h1DhE]J'H(bxܘ,8Cyrn^6ahjV"Xz Q&bس0XfgfIH8"/inɀE)9^(eVC0Dytj*Rqƕm4)%kBm T9yT_#Uف\"Z#~ui9O瀙Tx iG9v), "dݨlQƔ$w)XKhjwy#CIIW#ד TuuSW:R]ꡛaIIpwydՄ tI]|ig)i#l肉1WԹ^c?v&9mwG\BBwM{ #?bGÚm}tXF9Sx$i8J$ki!cfؔ)y@7LŸW) $i{ ʕgXYWYn4)v|;:jG9-HmYp?&~Y;V ՉtSzGRIqSf?RטWrOƹmu4E`bini8QX:zil H׆Kc~Rxst[ΗfY*kTipb'x9~br]ũ&Du5w=كek9]hJTQ%Zc b܄c6z`FW~].f| w;&E^.jfP*[ZY_zze!Ǘ+ьIKxpzYJj\ꃬg+P.rgfRXe+> 㱀E5_!"U0 IJrgjO Kc-9?:d+Ri:MyYⴞ'ArvSEU=4QδKHu+}:ymg cXygY*cXS!/Ҷq2Ydk|bAa3,r {4z(@[a4=;L 7LQ)VIPXtoeK[Q9安ɛ b`SK}u8-';fڦ$FqWtEdH&PIL:sI/D Vl%:@ ) 9b3#¸sË K/V:Į!%D=8EX:adH^1Dsu$BFy^`aPkcOaD}#mhM%1ǡVCDx;VDNuB>?&D17*4v[8f<1.Cl2Mܺt%˻ڳ^>L&I4|؜ڼ<\|<\|=]} m*E5+NNOu ҵ;eZ EqA "@-;u.UT6ǴN8W7Y<R!WJ 51>^a2S#/]mmd]jlnpr=t]v}xz|~׀؂=؄]؆}؈؊،؎ْؐ=ٔ]ٖ}ٜ٘ٚٞ٠ڢ=ڤ]ڦ 5҉]k1(ڰ]1(=lۧ=]2A/Q H ' YYڱN\‚ %pP),&M}}%^A.\+}X@_-Xva 2/F+ (U@'=&U}N3Onub #=:.=Uϑݴ [,@/R>qnj)r;^ ="6 oU,}۬eΓ"$!,x d )2@J9(e2 Hŋ3jȱǏ CIɓ(S\ɲ˗0c$d(RD@ JѣH*]ʴ)(@ FRׯ`ÊKٳ HDFD2 M@j*h˷߿nZ`K?k&]KL˘Kn5 O[gMӨ&'avZj۸sޝ:±%lH*7E $ŻУJTh u}QËTNuK=`Ͽ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`)dihlp)tix|矀*蠄j衈&袌6裐F*餔Vj饘f馜v駠*ꨤjꩨꪬ꫰*무j뭸JI[O [8j,E@@[;ڱ&fWeVA\iՓ[ua瘶 @B%cxQAElMVoq=[ X:bWdUܰ롧zSŰw@l(,0,4l8<@-DmH'L7PG-TWmXg\w`-dmhlp@tmYi ?>0 0^83@~C:_T |9c }΀[~y7 4; <:S0A;~Ϯ':zs.0F 4q% ,E,᭣;'O.>7}>;y_^ÙuFW~ |7/` m7mXJ8!d`WNab9&Pr :jt\>D4sWAngDHnv*1¿%L[4 Si!Kal{Kh\Ĵ΂Bѯt OX:1zED@(R~[TF.&[x"TEdE @@|QOd#@&T_ chq)J&_xyjC Q9RZi;XXp^+]b)h,xb+IVɕdIΊduRehJ(!e=A4RDWpAh`(HKIoHT > 0H!g@^C<姸 3YF*yeT>ʕ48[ûpYyXZ" MZT=I x&'WSXRtj΋xg CG"j+UL=)KmgQEɰDdSyDAJձLT&YɲW5DDZzBF7֎e7B9KիR!xŊ$@V0Ve`Fr5Sym.Od5[ *QM ZV.a74/^q[V.z80hؼ k;ݓ$,c/ І/|CkDj0a{/{Eů͑d%UCe2~ylgI"/%ߊBGze X>9,n~EuRx'7t/\44|)@!'EËt9mt3>voj<;*A?[p Aiډ4k=8H0V7w5a(敯 i+Vo*3oX- ؝j7T[)׾ ))x>D. >jE]*^Ӻo(vDn7OkMolMBg؜$?bQ]s#a(j{37֕J{%[eG!J=ʞ\ qJPΩ.(.7G9+-1fmxF.]s S°;a)8Z9>Ջ~APĹ+ {KIo}!NBtM'|R oTs$O+^؅o<ȧ< n ?걌'$Amhcivf v@߇$&BTEuBr WN8`~7sҷ" { sχv'wDrZC}#wwAv"\g\)8>WǁCBwZ?fVT-w:x(;G\c(UNH}3H׷Xog^*x~nh#5F"lƅnmTZF/wiV.X(#/!{ uS>axu@q"Vl'idfMJ{gtx*ueË~Rz.2$ 9è_7hpHs0ˆ2XwH,]Z!F؇'}a6Av.b&z}] QWq{8.mѸֈ=Ƙ:%rT(=-("Ȇ#uh%s  }(SvxƏ%W1!*Ǝ B G;i{KZ r?xu hC)d;>7Xz_("ȅd h\sAYX`6e)NI#IRzȉQ?wQGwYXSYH1B8ytـ`N7PrpoX]ُĖɖŧl4L6g)H!#XfwUkeX(s 5)O@P;Aiy#uYz)ax8CC89I8 БC~Hُuxeޕ⊞)%*u Xjٖ[=iw89g$ZXoy=iYa}!iWi$Z*.ڊ 3)ψDzǞ,&E98S+zқT2#wcWJ٢DJI9`r!L$2yBt9@z#E7 -zˈ{rHS4zɠ["H᎑Zc&z[eJK{ʈ}4ꟕZ-PYȢZ6%η ڝ:{bɩ@fP}sx'\GbiuQc_v i(JRdpwT7=M1,աSq0M{_:OKX1@i-,w)K3AR-9q-EKf-Oa⒯C[VsLSQ.Y$='ه[]bu XNaR/$YPnNA0Ho;~EwfZ6r+W; FqQS~T1ϘLŠ'T1"9|`.7i)?ɛՔAAo{a4M%ƞDcƦK8# ICsG|u[kFǃ!@p+t\,M#9IcB[+ K;SqƉj˓UCL.;9 ȩNd?dNpV>SfMătHtE˺^GPkt8^}cBt<3/=ew3M_B=D]F}HJLNPR=T]V}XZ\^`b=d]f}hjlnpr=t]v}xz|k1%P&Q8QA%/xSq:QUWVQ "M"YP1ݲV8k/<[xp׵}^ĉC؝ڽ=]}=]}>^~ >^>j!2ǔ2XM>"Q❢X~2>4^6~9_1,1پ @ !@ ue62q?,:LXMܳ/S! aE؜U0nFP s+;X-|5WRD@fY5%21"?QO!縦@"-C^}NVxY?1>_寁1H1, H迾Qqږؤ}+l5.eMQ,,&0|ɢ׍B2٦m1sNx^q p1c~;2gn\Q+,^qIn= )7as9PQA]FUFRΝk!,x `A0Ç#JHŋ3jȱǏ CIɓ(S\12 &) l"!˟@ JѣH*]z& l)- $!㓩ׯ`ÊKٳ.,%IC2uBEKݻxS ֙><ȷÈ+^ rRp(+$sk̹JFU2ӨS^ͺ@dR&a:&`ӭsͻ ^μ4]@dBνËOӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`)dihlp)tix|矀*蠄j衈&袌6裐F*餔Vj饘f馜v駠*Ꝅ͔[$L1DJv*pmUmmeEfm 4Cq 4&ZD범@Ds= Q+Q{amZ&kzJMd*C[diڕ qlI)zݬ 7G,Wlgw ,$l(,0,4l8<@-DmH'L7PG-TW}WV9du{[5D!/vjw=]M  B]@ 7uwBS .D wSĄa.=andZ-x3x%?Ժ Z1@K@k ~3Qs>^Qް@x ,9C佐]GdgdwޟsH0%r˒A/$SD穅q#D2XuN?0`Aa@t*8.p#.BQq+@u$}]!T-? '4a TN(NF+"8h$"Rpcah }M*b!Jj!w;X (% .[\a9}Qp ]kBn ԑxEB:&?kAH2)-r,keġz$p%dVRpN8,xĺX2AL$`1d bʜx%[yK s\2/,n& ZIJ#3bA $T5?7ƥ@4VC4ʔ#/)5)L%hr- !OeR@dėǽD!d~ '&6 &|bA|jW=z̄5BTWԗqO3O#y뫢 L3˨JDMQQ@2QyRԪ}gQWŨPt##24_d4ӆňex;Iֹ.erôF%x7'I+s Lm z?3u>Ýy+T^D 2.gP 7|5t,KĽ0H{f@TNɪ 7wJ.k*IX3#Rj[ZH}sʷFɾ)A,F^}?ehup B''Ʉ|1CȠjfsRLAPjnz~CU}v57rwP<&ɞ,I@Y 0t hSltygɢGeCH<0%VAZϳh8ӑlCBD  7Px~j[8,Rsl>Apw]sˮa<{|gᨎwS4Оɀ)YRz)JUz@lntiD;֢ݵUh|11-3Q-ұ{AM6SjpӼc)k;W:G(rܳ,e2Խf 9 ~p !@9<@n'Pk>Puz,Xux.88)7(.>nypy$mm!;鉃| ԯb`;ϛxi.=(J@{{SU3jfsq[~fbJ3!o軁%3/6 y{%`'! yPw}WFZM $yu">aRj%"~q]{Fz1s]+"e XnW(·x sz~{v2}w"nzz+zz3E[HvEg)UQ[D.8DV_IvC'lvk6b0pfdsuw\U(tb7gfGxvhqa{zhg"i'r#tx\rR"Rm;A;Byh\I'hZ4ր!HhJ{Xm>tp$&ux{{*"cH=7lӇ}=r6g6pcUiқHp~yIv]I9 H?V) sg7$^ӘhH I6h"Sj)I6D vV*!,@ *SƏ}@Q"Ll1DIv%ZK$=lQ/>cȓF]Yx9*. 'eb9&y:B-N rv^'[0@LA.A: jHi(I: m/RR$3Ez-GZwrP?//Kb9[喨'b2G1]('g (({U(PJĩ#I*(`s kB5b7sU8";&8LVcc<0q%Ea&<B'~:4F)*&:597n6>𬾶m Lcr15A:x>'S@=5#GC[IcA/du\rB:pd?um&]:@+Ț@y 7ЪRS7f*0*d7Kw"=s87ys=:DK(3[MJ۴M˴rT[V{XZ\۵^`b;d[f{hjl۶npr;t[v{xz|۷~;[{۸*qh4VDQU`L~A˹( AN{ $U[4 OaJxT7"u. S T=aN{ѡ Ke 蛾껾۾;[{ۿ<\| <\| "<$\&|y%b"#++i8-\³ 2. F4>@B<$$[ΫPQ!c57/;,AZ+4,ZƠrV!,&a23QiJ-,l[pLS gǂYpƭDǡ%+ ,\gl|1/BKå%kK:Ursb-36l*ó+Kbarput5^sbK3Wy hѤ?'y oNph nV)+^zu%g߀Wp-ei n%BS| 0Zi qw h`)@EW_"8LXp1nEЇ(Հ@! (&[(eT|KGP0_Nf5%Y't[\jSo#|9u?)gd\D\6\Ce yI5@QTk o1AAdI(!:i`f!9p~*- W.q䊬"X*,v"ذ(9Ш*dbmD%jtf[Ѥ(R IWunkAJV2^T, ;-[/٨JK@b@5/0. N ß $ng!ЪwKNȪlR4/dr `očhА»qO gg4%D?NM6C `6;~m^hnۛ''uҙmNKx7JBi%v TYnE{:6BE>rT(.yzܹ^ChxQ>kiܚ˹簃.줓[*Ni7,M|! zw mmO{X>h:ow~i⒎f1~s]>F}K=-^™X~?"`n,W /h֬Lٖ԰СܔLPiiB8$^C!1p0$b &bRO<hŋU՘ĸȓ<+<_g:ޕAHΟX );p.q԰K N1< [c EXWj#.I1B< s6΅Zrg 3rhT -_\TMJ)͜ca* \*? L1" '0-Mu+i!1B?wgMMBBg>)PXRz >|z;'w5;Bę[B'tB3謂ЀI"US(BQcdJ16e:(o&'}ú9^]O%ճ.EDiIΧΔ]DL9 GҪH'H|U ҃$@|d+|ʇɂx4z+k[ɹH mFg׊KbrdAILFT"\> {/xИ`,؏ ']@OKNV֐DY̙WeY֪ÕByll}#jJۅn2:D4ЕV^zم*MsR02kMypaӐ\^A$ӈ ZUlǎ߳ҳX_CHjkO*'SW:CɜwgS4GH(6㐬E` m\jXЌMȮ&1gބ䘛 yW N fe+m'ep[7L&O9K y/5&^̐l YLTܦdAJ&CL/+N [ch9S%Aڛ]r̎nb1-# :жs)ZɁl =֞6kH%~k9E^Hv &[Ok0 hnI̒.%֒5HCH {y}6scSmz/7mƆ[^k[6g R2A^_(qD푻-oiM] "YOB5n5I:ՙ dApB9,bY$̟MftbxfiVSsuU;ښcjnKo6qcݻ.=wUF-\xHuhPܽ|.@Hz92?U%b.6|Ӥ+#RVwZ*VOV]ۋT}-͹+]l7_;̪Gm6I?5?fgru?c(Ą|r|k}pa-A}3!Q8A7[7'|7q79v ~ q[|x{~oCh2yutWYG\y0sjo,ntG~~Suiixqf@aSx2=N7jA,gZ9p8Gdf_w|NuGgukLw.%++CzS7^;%&lWaO̗&7xhQ惨t\d3u{uoӃcRq( Ȅ`EVHրgh~w(.u70-ns$s?(:U.DvH_t.WNTUUtS{R'7trYMve7űXȍ R9(h+wGX8ŨSD*٨Q$T(Sg)j'hqw&R]}Cc[ )D5ѐrC!nZ *i`x5yE.hwclzL"ҔmH!iOS& Zb(pPi$X^Dtc]fȔǸZkm?JŇ ϲsA!W.a:I5uY1xw|8q8Y'I)IiFhg?'2K"i'Hp}XPGS.`V⨚8P>׃@I9diJ6Y6olOͩ&Sr9weH0tjڙij%yU#h!#% @9Dv#nseiW,3)QR,홙Yf<4fa$r-G(1*U'"O#J3& kaZu+Y #a}rd%)3j7"%.GÞ*|dT%v# 1Sg+R¥Z,mx#.Y714!Ph:V6("k.ė";nQ$*4ZU!xjM/(gڪ:Zzګ:ZzȚʺڬ:Zzؚںڭ:Zz蚮꺮ڮ:Zzگ;[{ ۰;[{۱ ";$[&{(*,۲.02;4[6{8:<۳>@B;D[F{HJL۴NDZLpT; QXZ[Wa !bOjl۶n-9q[q@@ oUR`Yg[@@I`\I+aol sRKR [w; ٹUK Pkw 4B[Ѻ `dC 0eA oe[_ y# +Ҹ l༳uΫIн 1R0{kg0K+˻R+!\f!o%}k;+a_kg_ dAk!LkIp 6()* RR,a+! {9L<{ZDA2!æ[2Alq(쀧˻0 ›K ,˄po+CxKkWL'k扸f w;+̻[˸':,!,x d )2@J9(e2 Hŋ3jȱǏ CIɓ(S\ɲ˗0c$M" e JѣH*]ʴӖIO) ܒׯ`ÊKٳ!n"#E"J+ڻx˷ߡn68b+^̸&Lĩp-ބ̹ϠC;sۯ}]w7G,Wlgw ,$l(,0,4l8<@-DmH'L7PG-TWm5\&Zwmd^!@2ٍr=#-o?D 4" Mlp7Dt= @@8l @p7vs1䈷-@}qw~/@k. T.s`o9z;.-] {θ;Om @ymB^{i/woMF <r3^٧\ 0;˞(6-!pH$.#si-3]2tGNHy6 ףːYyn'^Ķ&Ӽ!y`|Oޞ_MIQ ),(>cu'1Ծ#׾뫞zߧw##5:6 w~ s?|pj3F4 |Au7nTٷoS65y/F.y'_7A601r| xf )sv4}'C~&U~{ wsztaO9HwcfmWy]3'{1HWg5R ,OpqY6)XOh%` 'kWp\Jyp{"GHtc!hhnD"~&d|ce '(" tnщbDcIxSgԄA@PjXtE`W`׈Bv„Q0$jxW Q/kSE~W!85Q,dUe m@E!R1XeLGf8ءg;7I!bRTx][Jܓ0T؋2pb B^x荾HF/hۧf؂ghiiȐUxZLWg(s)q!&Djmr49X[a;yt5r 2Ǹ-%IM% 8UcKE7U a6U޴`[YwoVSXUXXu h{he/#vaKjٓ^(|9Yd}tMcEJDtB\cfǛْPH!5 46b%I4QGLS΅9:u)p7ZY'y2√*lHمy$W,YK> (I}#9^o"r{y%awIQtQgbWY En)9 ʡzn hvwu!Z|׏Iunj$`3e [(# *\CJ+ywSYrA=F>HwY4G@?BGD"v 4&GI|7gDv)J j'dJ%$DQp楾L(h}x퉨 T r x;wOy%HYM(rҩćy2ƞ|T3C wBJ?ItA!:y7E|< 98Lp#̛Cx,6\yl}jڼެiѵa\|<\|=]} =]}="9UB-~uNҡNN( h. q!!UKΫwS0e5mBT{!U'PdEgV6Re_{tYФRi 6q]v}xz|~׀؂=؄]؆}؈؊،؎ْؐ=ٔ]ٖ}ٜ٘ٚٞ٠ڢ=ڤ]ڦ}ڨڪڬڮڰ۲=۴ma+61661A#ܾ]]=]k֖6)U+ U"ݙ1,e'85VRkM"+R4Pfu1,At^][0/O/5Ӓ1066!ҕ6asB*0>A;Qh;]* \ uQ/γo5. { a0>n>W qL5tAVrA]$.PP@pQNREh'_HN嘷v \3΄u ݾFMLT/*G mCu:$SĿLot0{NnW߉rxfH: '#] }Ö`v;p; 5CaS6Ő@|JXG^wy ؈юUFJ#7Ӷ4ґ d$3)G &)pptW1*jt$7Bɹ2I%!dɲ ݛTC.0I2e?H~'[ )^#\:K RYFIG0R0ZNgvesT@NTR?8@jr+*uҟ8낺\^'"XkI4d3ºQc5Ǒ<#3#&KD19ъҨ^r:2 a~RH,'3Q1u**9:Gao.2TRnhSurh|B|&aM8e-.3ūW:w)KN{mZ61tIO[Na^5ƒE[dY(/M-Ip݋&#81qYJvM%02Ű^sʨ:%]MFamNFNwT>4yboL+辰Aml!gK\6 |]T(No͇Wߚ7:pR Ƹ)&KsMu}_()6Df\m-Sh /id U[&%W6YU2mE3&#_{Gv|D8r]êu53Z\?ФFEoG#1HoG~eBs<x`aGufB8ygB?7!`7k{77u=8rSB{{w6b78ry1w-ki8y[fp!Wfjht:3t1 x"= SJ!FW"!]y (@,e$꧊^.2&E@?Bjh(Je 6A" {#c}9(tQrO!+Tu[U!jVIe(g׋LA/j%7&lv:=Xi#EeR &9a"[MGh`yvUqlH)ch()񄙗P/(7"=TVkGY8{bysX~;IZA7 f'mXFy6PHI؁c_T+nbKSEoG|fxt bdg4Xivex'XMGB)ImUgl*2Iq\֕3ɗ A9It|7lQ Tx^AgA'(œ>wvsiLce7ؘtA}vFn gu{c'+jY(bc UC$Smg9Ity(זVf} Vxz@HIؑnSIWJrQQQDG$wL |I% (N;¶;tt۸$$H@nqX8$xV R"jl)|y%PMM>D &_Ə`*֍9mȘ*ʥɖgL n)bx%牚ٖdzT ȒiiWyjqGL[efjZG"M[Y'<ꨑ駮Tٝ楇at;XJ_w-ɩ![zzJuAlj 'L58*5azbjcT٧y7eJZ禩QE Yy{Yz b(Z9Ȫ'e hez'ZcZkz35U GF7uA%J+گ%1;'%y)le|hXꪎ[Q q-_"lgڦ hz%'X +Bk ʢŜ!(PrY,]bKe[,q/4|*qɄ.?awKjh#SxiP%ȨxU:T~u,˜ &8}ֺ֮#O䡵|%iZk` A @ mQ@)M @3%*;F%B+uP Yt*HF)7D83GD'`S#寿:QD3F;f4IR0FCF<,)#9|Uz:k~n7y)7 'a3@ uFvr"LdEC(u> *+)7K8J+`@B=D]F}HJLNPRͰq/<L2պ)Vm)[X]05m@U)c=npr-$ R1M- UxMTm֩PաQw c,8LٽA;RpCQ`|;ZS"0e" 3Ѓ9XַTAD1/muý!O>1}P uڸ0O|Uh]+rR׳zܐm*ĭP*2eU l_61Ca-*}]S܄+1sα- }ӑ6ܺ} E៝Um0` Աβ!f'ܙIW=z"!,%[E H*\ȰÇ#JHŋ3jȱCCIɓ(S\ɲ˔ |I͛8sɳ'ǙJѣH*]ʴӍF58 ЧXj]9@ nK6! I&jʝKL g`[ <- X<-ǐ^-Jb7X7g D&ڷk?^4^&ͻAάs4DWmw}۠1BGv[$][ۂoAt" Nlf' r!TYsZ%8|uViD|f]hEXB6uh%`PW r6pXdAYne\=Z8s8kߕtVtWZ]5FDQdXAUiWtkm梘p2eXD\YXt|RR)(QvH៧]栭Eŏ/")Xwvhdp# fEKRILy &jRhDݣƦjFs(Wl^z,O-,MO~Y~h2[&;U@ E^+d`믂zӮQ 99 lÝnoJ1|Sxo^<@TՉ{,AB'wVhաF:E@ire<0R52b4V5cWTutA[A`SmdG]cg}+;mGFsM7vdxj 1 Ss)Kw9д5$qgSJ.킳ĸoE| \%x⟛(ү&Nu'|V/]?mdoHkS ^7 jV;n;= [4 BPIܹXjt%e$iۢ>ig;Nh`:EH\~L঴ƕ4BGE lx%n}KY( Kxǁ\GƦu1aRWqVc` U#L!~gRA[-IZ[8nЛ)2z @gs{%o)X@QIl&] V4e$]YJA&UVpq"2'gFFzZ`YrX53>y뛕[4N2K"1&[$N"aNibP8}yAI.z]#kuʉLB y}nUthHGtQ hG)64V3ʞvzLtq,@PBW.Q˒ϦV #bڒj=CF> +'^UYòJHEuKRNuh*OS'B$E}*֨ %S*3-Ez<.O-UhZU5-b3{%ؔf*,lȩ̃5[BOTH֣Fp'*ǨVQYv5B x՗6=b!}t׾,GCgoޮa6S:@:^a)#Ry{e$jeeD?`V.h.&Tׄ&b^]ܬuF&n.\IdeߍK24ԕ=ǂ" nTnX]xa gȆG=WdtY&/Dp1A$h[ޱqB{#-Le-b:wod4GE"['T]^Q k.]c.֤ik N% v}<[[ݳd<7lδb7~6)-g6ֱSYΎ^H4-mf^QY+owZz&u6Һq{Q>yiςb *p*5\:^ڵx6p.8dq*}<jx.yڭ`ϘL)yr[r!7>?:\D6kXO-ѤYYi것YX9' X$=,_?'{mi2F׼WrKfBЌW'?p<B7WϋѯIOؗd{kߟ_o{ZnOxl|'1o ny%?Q%~';뾀7s۫)FyϾ@C"yGn9ӷN'rWvjRv}tH3uwE6WOunsy\7U'tWkVGIwnuzIhȁ$grp?Jyat~G|6_&^s2!ts.~ h<;wgdiDXy^uZXMGq^8Kl#uW8|c[1T޷>f4_8Fzŷ0gYC[(xX^DO(B8ȅ2wQ.:.hehZC;n}Ӎuׁ=TX#snLbtj뇉#]HSqXvHGsZ'e}i؄hER / i~/VG(r'XxBIA'W>qxՒG~HBH5h-HZXFfG8CVHNF7 X583XF}]ȏLy/.>OHP]$+Ȗe!"lg&$0Gr*a|h-:|2X#Is>k)Y1Yixl2 o %QnG# [Jd .O i!R;%'q' S B7tȩ!rڢ9$QK5CT@gRbQS!XkqPB,8u1Oa(ԢD/9*/Z 2 ڠL:Zڡ ":$Z&z(*,ڢ.02:4Z6z8:<ڣ>@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tZvzxz|ڧ~:Zzڨ:Zzک:Zzڪ:Zz*1Qid1 *J aZڠګؚںڭZ Dd [pqR@ D R@@I*$[pp@@ʬ `!j6[ d"Z˖ORZ$R  Z gQi@Qp$I ;p#6C 8#1 $ z :[PSi3$#2˲"{抮 !*Za$ z}yyO$?KdXBRQ@ٴ1{nK]d[a'ƳT: a+?{[j[U +zʷZ@4[Oۊ{y[7Xh+[ Qk&zȊJ kh0K k%jߚZ6!,x d )2%2pM JHŋ3jȱǏ CIɓ(S\ɲ˗0II&)[@x b JѣH*]ʴSIBM%ӯ`ÊKٳhAJIa֭$8۴x˷߿1!dH ] ^̸ǐ#K ψ= HƦϠCMZᛔװc˞]a- Fys\ N8XRȐSa۩Bkسs'ܩkOӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`)dihlp)tix|矀*蠄j衈&袌6裐F*餔Vj饘f馜v駠*ꨤjꩨj $B =٪"S\ W민 TORȥW*n1\> *^F zѵvm9TpQZZNF$ANYEUDj֮Smݫ$]]x!\ 7G,Wlgw ,$l(,0,4l8<@-DmH'L7PG-TWmXg\u `reMR@EHLT@D- -Lxux 05>DpQ[ׅvKxcCnx@ Dd1 @=4qbضO zF=̈́DM&ۙ zT0w'/w|Et6u|C/1Dc97y mݟ:?csWnr_c:ԑmuAX7ם rhAd~^(5H2€襐S4!S=iυN6n H&HܹTCEF"t?&}P c^I8RIEBpQ cH0~o!ČowxbVH5|,` E@R}.9HzKG6"E!bR][EQs=L];r+)(I(ҋҫ( I-i,߈&)%( &%13!<5>dIRIa )6q-8]{(9LEI1Ry$@ & [)"I2|VD!IOR LE5 e.R%"(`sN!s+ _bL!ٹ~8ڔʭ⛠P"IX)Yj)tЛ&5Zj\%LG"&bUƓej(!bRסrSz+u`y`ZX $zR*ZOGԎn$xŅ!1Q6ųClJP&HAV7 x)w`dyYmVlXWZ F{] o gV @Q٥( p6mdY՚E*G ,GQȥ9m+F+'^%&)||:^w%i&JM)Zxgc1 61FQ $"D0\_O1Nj#`g DBP kۿ8Dלod`_5kl=+f]ʟlܼA~ӱ<9/}~n\.{!p8׎Őd =JKsSVHv& &'h)5rs8A}ΰ᧥'SzDhbmj>_"@hm׬ZI[yEP 1$ 93l{7 Zrדzᝯn տ5w+i3)>*;_nO؛wk^>7Q[7I۵h{}'oaa{Z7#>''}Gv0pqTG}2ՔBicYX#7-nt;Uv!qs~n3z78~_n/2cأfgJq.ZRW~ͦqrE|e%e6!GDyWpS|zec~1!H$t'L"Y57[&Gi)X|x97̓o}vA`hzGyuq8 "?Ux(DX@bHzjX5UHwvlzƃ]DoG"/膼8{PGxs5{RzQ&#XxU|p qu؈hQ7|?u37i2UwQ׍ArC9r"VivfdM Gr#SZ rwمlq@1SvWk47oyIGtB(t@{L +@AVn S4gG2RԄ8H!t!-ٲU)ޑEKi9r2t0GYʑ*r}bYBN`iQCӕ\^2wyq/ޢ7Rzm6$癰4E502Dh9=)^t+?~simcN)htN$ Ɯ֓RydΙY ֈ9[X@You֣nk ) segP9(ns{M@tؗexuU螥t6JuX5eX&HSi˗Q79:xȊ%owywVisFTƇfeG8v x=#b%s֟ƹm9fs JM&5TE |hG eѷ69*#|i'+)梧_\*)vV9~GMcÇw ﵄*&)#*] -4os(#@iCuAp_ `)7#c'7__jHX}W^zZ#eh#g;{tjy7i'O@JQʠDywO jq` 8tqQuH@|n^ *|5Z谮Hמ< Etz i!EoxAk$K^aZ{-/wh!F)$kC Z#%,r/QEc”hTPy&cLcvB86tbc+e %-BɨA 0_(5(GeL46j5gd:u@Ŭʍ<κE ElP6,^9 ;dO47>4=\Y]7w;,l>!JCc;@Bk-Ə0!$P>9|WCAC6%GG-P=TMR]XZ\^`b=d]f}hjlnpr=t]v}xz|~׀؂=؄]؆}؈؊،؎ْؐ=ٔ"*ND=  %ӝ}DU4aR|R,S[Xg YUqWU=PYJs8[7X¢ʍ@P9PmZDjtߍ =]}>^~ >^~ ">$^&~(*1Z>lJ!81n14nB^(),JLNޮG[_*uQGڷ[}B@).UAQ-p=Ÿkm.ڂ,"a]< 1/*%PA}[SBR~/QWYB*AbUUQ!QۨJrYPRQ]0MZw^Q.|NY,!L']WnA5 ٛr0Dom.b>#/גڕ*~^n-ۥr5?,*ͮۮnUI+q ![! hXo061\V!12\ ]6qW4q[E!,@@E H*\ȰÇ#JHŋ3jȱ# CIɓ(S\ɲeJ .cʜI͛8sɳϐP`~*]ʴH 8ԩի *PhL,Iʕ+ֳhLX Qat`ILpF P6&S K+4,PϠCo7s0hP@ N0h߿Ha4B72Y9oKNj vŬR?.bϾ=GۨOhn.mΞ'{)da\P VgJyuT7QzǡR"jg[^ͥm5G'H]wP@ņfFL(JP1!L~^!")p NR@C%M\)dQQ}&%c.Dm֩oF9SzhْP9PW_huUpg\e|%X\09%tvjJU_pjj_rNiNqUpKjlFAuc߅ 7 6Ьf{СCUpퟙn櫶Rn|ʆ.|InΫoA‰M*B^A pVBh>Lm%_ lqW@6^~u*/q̸^V%vsB pnZ0|]bUΜYEv@!oܳTȄ-mW<<ׅ}q vc*̶-vRѣAS]V %1ߡmPɎInv_^my:5dR,v'+E=T.j nSڹS/JO}h!+{=rP=fCw=obOO6R[)욪-A-wRߕ 4eP\&OW  PоGn0+Ǟ P<˝%r gCgֳTB ([!=&mW͐87`YD (I,⽺D󡮌VDB~0bD`vM7S˜?PPMb&"rq,hPT qQ`"E+>B $ y&Q@R ĘT-rXe@&H!]Lʚ};%ؿYƮLXq0tGҐ}eVg/j$Z6w[Bk$p d)/ϜZ>x}9 <=.83 :)(ݧB zSU~Y-Ѝg:x4)%a~GEjKVa9EBlL+ђBѶjhɕt=%pAb ;.@l .G FZuk}.Af+dͶ A+Eק׆IpxzTwtxnX aݑ[;C'r9h\*tx7=2HؗA zj7=moH&Un,8s3,”r eVkl0\AOWOf#V6A8/"rW=ueF~DgJuh!m⎑F(,cqWj8"cL!H5WHm⢐39ev$&(H }Ie6*,2Q2<bY&2Cjj2~$A8T[V)GVZ.FWq&]. Rb$26""B4 !#)a&@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tZvzxz|ڧ~,Cܩ:QZڨzZ!yکd [ Rd q&IP:[ "B@I 3I@ qi2YJ.R *y-8C6c+ Z֮oF\Tr6 le星!j~UiYb֧^& b1d`7to| 7uDX`b$mŀh[^2KESy4#-”1-SAHߊp%BpO ᣓ zB;[Z M72^Bo;6@]pA.t_ɑo)f3mkPT7EA,o.Zr.\zי=@:L!ٷ‰3KtfcU{zΙ:Wr_dQx6V*ήC2L@crmL.LݦrlN8U*+wP^ђ6ͬ_Yr6yќ/,oaqL\.GͲ<5+#{yhn^0OcOBZ*p y5H=`{yJt>>zE~A{=%ucW>l,0=.@H~Eo9cpN-­dmTz@{ek|m[1no3z㤈w:7\l_'KѾk>~l"u\>{{/x:"u$:||o8kc_}^#R8mBtICzBhbw~=2V}&|jGz7fh vdociW#"ynyٵu%h'>lWw`N|@(xx6JUHcCHo3f=UDwK]oUT!uRz3bDŽM}6`@ti9I[d?#r~8&G-H"ćYw|xpRx+c g"X7v9huF׉ZXx"boau*q_ 2z*!ugȂp*2;nSXFr/5mh}buT焱uܱ5e[$V\H|V{!5Vhs8̈18F.gX/"瑌V' ҃yi2vd_\w!fz`NtJ $7x&`Vh\b2E!?dLvE<5&'wzA Hv4ԍg%qN !{5}gW2^'Q2vf^fgqoXesV0 錄)g!+\L(Zv!'Lw I=XvQY.!zD Vw V7I;AȊvtY14闳њ88v kdUYY}bBG7¸58uy]N')eQ^YX6 :e;Ԅzk\6Y8]Ņ1"&ٜpٗbhyA剡ʋ!`]]rg r8vǙd3ވ[3jr'*tR_B u}PYH;t$eqjէAҩcGV*yA` JI(V($w*#أR'uhA ?S(qDth~1)ǚcƆ馬JQW[pq֦aD:.ץa^H">VAҖej'tM9$lh6OBRS4JNZZD+vsqcP [ojaRBywKZKiH¬hwFivxXR~X(A@gKg8g(Jxs9l LJpkO(yk8+(Zl}%}e{Cxn;\1rg( sj?9)[OڴK.* & YP:qD`i[rE~(tDqu'._[KG't(͛˶%`^E0A{%إ^b˺ưEk] չuҥ{pٷt>̽iyk\O*#½[Y@CƂ y[ |P;b,.(]Qɷ3,<; (8\іڒ=&*K&^ `.tK_[YVW.aX,qզ\CL:ۄLr'CdwR *&0Mbgv{F߸(YJM+6ڹEDyrJ FɴŮpk4m|FCΣ37h)ELPEK>,7/<cDJhX&d;An;lZFlBD8xNC9wD[98LZ6u#7t7j7C7N39d7!8 @S6ͨ6ra,JLԕINR=T,}UZ\^`b=d]f}hjlnpr=t]v}xz|~׀؂=؄]؆}؈؊،Mح*5- ƙ6N "PB r1ƦmcxPo9Q=8QX1[%=]}=]}>^~ >^~ ">hKo51\s5*q-N$@B>DN%ARńLrCI*C `nUq$`$^`-q1G$X+A+M"@AR7AEx.d:qa,c8P7Ma4Vf3L_!6.α\+^B.TL^,O2'B$>o^"l|*S/MI0cQÍ=l]<*}./+خq .'ۏ>YžAo~AL$/ƳCSr<.A=qn " QPsN~Ⓘ/͑8.n,:a]^ |!,x @ M J!I-$Hŋ3jȱǏ CIɓ(S\ɲ˗0c4I$[$@X`$df JѣH*]ʴS8H3I%ӯ`ÊKٳhCP O8 gڻx˷_[Jq8T:dǐ#KLIvr lϠC;[&gOMۣw&b7nX% ȓ+7 @&RM/lH˳kνHWN5Mӫ7.~`{˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`)dihlp)tix|矀*蠄j衈&袌6裐F*餔Vj饘f馜v駠*ꨤjꩨꪬ꫰*무ֺ[M[d$dpPod5=V $U*FirUXkIp&IMjj+@EKJDU)X4W @q\,Op]VD2xW*$l(,0,4l8<@-DmH'L7PG-TWmXg\w`-dmhl"n-t_ E=y 0 x@ ลL77pހR>y@,р~,LN/~h1zsx >InYz{-nqb?nx·~ <,x蛓,O>;Y|sW!^pC_x>-o|s E7tT`7>;|4Xσ$YuJ›jBt,)̃N31[\9;m'Ҵ g@/ .QǼ(U$V+Wӯlt]bVFagB$O=f6J*?70$Q~9 +T'vC+h~4(tVlS[Uq%^gh2`j-l,w2n^oj q5+"5 I4M8ǘDs]YXgiEOpCDb[η烳aYcc%Vm)Tj%MΞ'q QNAT6>sEkRi(GbByDžu+@D7uvxg"U[}Gqjc^~ᆡu$h6rjg@yE\Hk4#Ă脫gEe艧Gcxzf8eZ p"X^hs}q!Ӏ8(f2xz0ttvdh]R9XpWxޗzqؓmX#Y懰x-؉҈jFcTH1TsX%r7gxhȒksrh'†M\.Aoɨzjf^fB8Xf%8<^+}9_=$hFCFsg#-@8\Vw?׭ &ؿgi{ py؎ؐ٩ג]ٖ}٘4ٜٞ٠ڢ=ڤ]ڦ}ڨڪڬڮڰ۲=۴]۶}۸ۺۼ۾=]}ȝʽ( 1DY.l W5Pr\1= 1. u#a ->[b=[4Z.} @ -W&4M: !X]X/EݛmDt́H$*,.02>4^6~8:<>@B>D^F~HJLNPR>T^V~XZ\^`b>d^f~hj. 3,0m3p)s>3mN0So4sk>^~ .]1Rq^` QeX\ݭRq=aXR.<2̽IW10-V!bAl$!ܢV`.A0,ua-Nnz2@1!^ȂX5BA~X<%6qOtpS/"⌱.N+I@|c`XEײTQ0.=Ogf2YC?~/juO/~ȈXv[1Pl"O1\a Ϯƞ>.7 s!,4LI H*\ȰÇ#JHŋ3jȱ#FCIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣATZ)JJueTL ^m:iկ@  0`@@Ypʝtس m+ܿ> 0I h/ǐ pi3Qpo=^Ӯ@̆NN85G bkvθ+_M ˳7}x1ȳ}-rGl.:6VݼU~r* _Z4vPs@hf qiWjiE(^Unc B gfؠnTq] whϹXdQ]c Vb: ׅLPpFgCM߈"!XJ~dR!Y$A \ZNHBRsLMA^@t%Pi(LYF]:vJә Kͭզck)9D@muR1* *G[Rө8+JZӚ}Z6*#镫tI@bd2{@m5ⶴxf&.;)hѩᾫ+ R©/-K0k 0~+N-61y0w+qLAt{q {^Z)\/h+';pΒOf tS\Ru{4)%n=pP6l:ڻ_k; | Q+-pU,9Ao/WE |T}(Y16Xg=6 q։W׉ȸ^NZĬfTӜyzڊ;9U:zBls+1[_-miyợ^ (}Uoۺ;=}gG6<Y/݃dzO~O+瘲0k@ehc٠>uz-l}ԩe;nַufISP00T!6>ďZ\fD)ebh<) Fp` ;lx|XB( ex!4CM|^ld?uE}saH-1`&KΩ q5@!C'1^cD1q4HiL >%5 єCNxBQmJ+a1d\9j TVQ;ˢ\5i\U(ef,)A QYg.=bNjӌL" 9t> Z0kA:RgLzL D ۻ*qOUb8Kw4mh.& 7|S-QsWI"&9d!KRABnmm+\f"g%@CּIp fl4+4T5gyM>SU)E>:pTV[l4v"NwfmEàVi%7ͪ $HB cHPe?yҴ(. 2j), u`[Q4mV^vݫV`ʏil=skm`U rju7˰V0Y,AL{q70C .W h\呜`ZR -}ߩєsEJ݄|cg-pu4 m}řqpCAazUX)xaz BA$GMkc|K6;v4>^>3Sen̘QMtaJu.J b=,#F',yܑ!W7qr֊:)RɍҲ;BseelZ!,h) 8lzB̪mJ]bsrV]EacjzķKQQ_\.O{ζՍvc ӾC~Ӛ6=⭛u8me׈361WJjsogLyen?U5>1+3K9/^%xeQYEnIex>җoTfOWu͒utZ1Y#O}.tW?A[7ri3Wέr8E5hO!O^S9xYt[*|'S\o`)ٜʾ${y~f`~y}Ǻߪgi$k+'_g$V Jo\'?@޹ͿŞ4ۆ7xG1/X"f}W,mW#S]DIgftwUGT[NTJsǂ(m2|I''cW 7HyXƃ frH|W\&*%}w(h{LWzsMEJq8Ņ]}ix`lC= ؅:0Ąr|1̷wrfSw$gd|~c8wBtwr󇍨wNs+Xhoz8vK׉'a'nN8@E(''Nx&4+F=c8HIȀ fTCHT`؂6nhEX,icR8؍ޘq渎HCdU87~MWH8䌬YhQeS(+u'xLx|B(t'7 IsUIH$KU_2%Ntxג$9o[s) 惋<)n?)mv\A<1NYp~Q$OYXO(`崓VV%`{g]9x3G9bHCG_{D;ǖd hId%sp %xŨ=)WXAIayi&o)gbYp4jrG6ы* Ii:FT~ZX< {X%A36*T#ȕwOXyx'B@ͱ Iǜ$}a#0&w6iaWb)b (D2("1#[- (fCsq",韑WR01†Mg} u[8"%ĹNr*&ڢI},2%c8bЁM9*xB(226,i&A%U)MR:T#XXZ\ڥ`b:dZfQzjlڦnpr:tZvzxz|ڧ~:Zzڨ:Zzک:Zzڪ:Zzګ:ZzȚʺڬ:Zzؚںڭ:Zz蚮꺮ڮ:Zzگ;[{*d@A a*`K {]jS;$[&{(^J)@@{&R AKJ0]  K0KI?K66[R "[IP PpbU"K 1 <˜r&I g[u ^+ekGdp&J [ s';@xZY[:0[@*I@Hs[˘0@˵!~r&r+X+y+cquK+ a ċ4l;E$Kɹ+J{+=bQR@/Ѻ [:@Ҽs;[y;|۱kHs@_:KhKl[Y[\  \ +gKlzK3{.+4m@)I@ ۳GK d P@Oj!,x d )2@J9(e2 Hŋ3jȱǏ CIɓ(S\ɲ˗0c$d(BD@ JѣH*]ʴ7IP-5jʵׯ`Ê RMdI) H`ݻx˷/Pn46 d҅:1AV#KLRΙ'ωu/M\My?FM۸s'I`T [$b+M^μM!E´νI*'||yë_Ͼ}s+>/ `'h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`)dihlp)tix|矀*蠄j衈&袌6裐F*餔Vj饘f馜v駠*ꨤjꩨꪬ꫰*무j뭸뮼믖J[O Z8EmDדVneVUaemfY[O5Whz,0y%F9. WKսv)[hp+OJ{ٷ(C!Żyh1ȸW%kz4l8<@-DmH'L7PG-TWmXg\w`-dmhlp-tmx|:4  L4+9 PDD,рm䠋@x|rGa~8y~x䏊<읣Q?y19ODпNw}[`F73>&8_τ!'`. WxDxBM 8בE" ᙺ9i\|ſo ?"%Xps./yUćⓟԽ@y# GY0q/!G8E&0tf:_(;Zd"Fhw%jg;P"'lj`Jp 5"@#ʇc!UŌNR!)@,}xػ֑2{%rl%GPqsBE. K)ud8);rwAMq|gl.]Y^QHmzjQdiIYs,[)#M0 49A͡L"T% qb"Sa_$P0@DagRJYLRt)L0~-Ia0=(2iϘҢi8V?[k^H+V蒈Uu*UrI*E|%YHYKqrE~ʹv X͋#R$7%K KPJe*EVV x E MaM(+%@b#%4,E,\Vⷀi'OPġΑpفеxj_y%c$W^),K da)OVqn*AS.1lT kp"P/x;8%M6qUԆOY.tQG_v~Rf u+p럍x{±TuX qVxy-čуq WP!Sc8V&ss"^U~-Y̊մ#Zہ6Pt n#-\YOr%SG/E9޳dh;xYOh2;WEBNN3Gh^u@SH?\3SXASFnE&,NK. jjai[Y[QյsfpyuRI ܳ=L;/Ď|StSGfbaU_{zvi5xܸp %!r|M8\;C#'Mvw|g;j9!MH{9~vj["jX~ dEtW*x퓃 ީ4{Si9NN|2V+qRK~9_H6+űuk{-7? wS=GFnX:fss'/]<|[yF^K$'zR}g~@!|/w4gz?T5z|}U{(U?P$uv9fGHaw bGvzvQqM"Wۦ r5m&(>$>|vy觀:PSΗqCyHJ#gx|jei̶[d0xXf V\BX$#v'їᇂ1ȅZhyd(z7Дׇ}Bz8GXrz g|-[qdaO$eY>X 5>kjE| Nh|7|ixp~ t-ObeWVHck(A{K'S2#/h!xisx#t{1@!AΈT{ihK[FL凢X;l5@peȌcYhHNt|2tgY(p#|hkiM󍺸fHh8})lMpR[ Ig[ƀqoS}xf("!wfDk@W)gE[vd9!J7f'?dY"T ÊT["GVќAbJZ-*YEi}#l@1Ky~q~k%qSSAٕLYTxD]sn%ȉ\!g)yaOY#٘ڗ5ivd1U؛(h#(؏ 9k>Ʉ }Ǚ=#N7')x{f$IC;*iau1.y! Òx1zJihJe4PT5K[\Q) }X锭hڟv!dG3b7S1DHD;2&8hGvq^#g9#J5gGUF*lw֪28?*(~@[yOHxjGB:dz!:鄖Q ɪ_&!J:u8 j@0XH \=Eʤz&.[~RJz:l&6'gjV ۮ::%lZZj}J$ l yM mw.[8#Hd:Kov9ckR%˭JVzZ%ߪI>!k {`*h˥ DI0)biI2%ʶ}ٵoZ*`۴׭K*AG\ZU4y+JY8Zy%zJEw )ck [b+R~8{|9غצ#$lWW*:tR8groʻL̵b0$!*Tұ Py*[kq{DK*+ZjslYlT4Q Ǫp|)+'ZqSZ){pU{%œkH2v@***&f1z?r$q6Hca- m]'c * iME|V~Djd%*HU[Z“b,뼤" GCHykT;'×rsKKA pjr,qRL ÄRmSlS11oBjLv 'YW`p x˪,A.p!W>V2'b_y<>ƤBTAuRl)]E)5{C/JY-3JQl cq`B[k[Tv 8'KCtW\wOCL޶Lސ ]}R>^~ >^~ ">$^&~(*,.gNa/!! -7!A-ER?!?!fCUTmqTG!:/U`!mO TA=a[ qX'U撽ͱUZwmeT5~xޅ-u<2U. ^~>^~阞难>^~ꨞꪾ>^~븞뺾>^~Ȟʾk\f.3nK8S~3*3n>~"ҼC3B1ANpQ2I\Bo`ihA+AiGUnmh-ßQ"DoqP7!]Q1<v]m1,/8OQ-aoc 4y XqD..J'02ovTI17A R K.-RqQ(Lq qW;W9h+[OOO_Nsv]u e\qT2􌾜_ !wB-vV%eNyOAQbWǡ峟5"duO0_ﭑL/nA og[poG~6 ̓* !,x @ M J!I-Hŋ3jȱǏ CIɓ(S\ɲ˗0c4Ila-R$!3ѣH*]ʴӧP $U8$ RÊKٳhӪgÁ s-PUڻx˷ߢ[tHW4Iǐ#KLe-8"ʠCM4SrvgcӰc˞Mv {kC'NaHD*(݅ VD2سkgz̽ӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`)dihlp)tix|矀*蠄j衈&袌6裐F*餔Vj饘f馜v駠*ꨤjꩨꪬEfCY4U $BIVW*$NmFXA^aYٮa Nvѷm+.2$+Q)OZDԺPK-n-J's97]ux~Wlgw ,$l(,0,4l8<@-DmH'L7PG-TWmXg\w`-dǛx L0DL1MMz7E 4@o=lS'wK=9э8X~QK4y^D>Fo>A~tW0'yܜG;F.nc~@r07Ϯ]8w_>;_]v<_ۣ?ӓ_F'5Xx /ӌ@VۨTކ@Q[ⷥms(IE (zJkI%0 q)ޓLH-HXOp?_HhX@ARR@=Hq6l/!&%L,\$qSWHdOu*xqLnh9#/{;"h܋oq^<~o>=׿}͗tE{ vQ>xv7h+F~6Z]xp#/|GH=c\|y-Gz#zv4o9xj&o0H"?3tgfq}Hwo2}GKJ8\ǃ~-B~m]q]6Axu\Xre~xov_!%?2"'t|s\@H"Lyu 'hesy9}Ǧc82XP؄ "uun_ G^Hvohf v dF;7hp jgu?Hw"-Lu[ȃ"%0¤pt\@,Ubt8Vxk ^.1RFV֊ЁK4BYIZw!(+O!+Ydt&6^|H..{e}Gbl>}yvA/meku6wA Oi}M)R#! 0HHć(X*Saԑ1uE`R$J58wLz<)ǂQLp4h $<[ԗ&f%(kH $|I>Jd蘏9& dy Sr)Wkq8sXxVYmȘ6i鴉(, 2XzyTa:0#,g{X'ǕkJ fha@G_ȞEz5)"b8I)aFh9[ՔBf\;ٚƓՠg(@m)_ġSɊWp)8iM H(Urщ0)ע'*D88e8P" :wEJ/=z(TSgل7u&!/ע'8(w9S-MXڤS:s+|zTQIզkH(%di!G%3z|4ՃED:Hg'L*'$DŽzMC92w5hpjkMbާlbz}K驨rZuq70J>DzV7Yt$JPVN"Nj$sv誙j%K"m8a2CU"譛LS9%:yZJ_ʚ@){vEJ[d*qZLvXEj5mäzGH¬daMW,n:) &4 jctְץLEZdw'CL{PW[vvRHtŪN5;L DZKc!;3yz/zdsۄ (#;j!v&~h;eL*7tWyu[2Է֧ KPb*c] oՉ^6X۩hn(FÇ Fk([[62)Fwj ڢ^xa}`s,ɿwv793!E"4=f7Cd;EAS>WJ*>R8r㫲q苙泾)Ez4,Ac@L?¬:uQi}6T?>?<6BDTClpllr<4FpK}6T7#7!J7?43G =z=ѯ}ш "=$]&}(*,.02=4]6}8:<>@B=D]F}HJLNPR=T) 1D \R9OtO/b3Qf- Z%uR܂o=ѲWwdW%+ؙ,aO-صGOsu+]m-ՙը ͪ<ڬڮڰ۲=۴]۶}۸ۺۼ۾=]}ȝʽ=]}؝ڽ=]}= ׋rZ 11 ) 2nKn >Lx81M !cZ ; Oi0f8a,Y< !+ ?mPパ0SD1MB9Q7U,gI僅tySkģ-:?,h~ X1ӡ!O+΁{u1N`,?ܾai^].TM>A!(M LnGF5!,;EI H*\ȰÇ 8D"jȱǏ CI$ȋ3\ɲ˗%Ȝ)S& 4`"@̟@ JC4dΞJJJu%ҙ  UÊKȫ2Pڵ%ʝ;_Ip'W |@P`@% z$LrL*w&DZM&0uϝL.L 5 ũw!߁O'Nxڷs+e:!.9#G5N=(f];ÃGMausmD8A_N{vϿ1ќFhXp_m{!Ne_uW vZU*)T b_a-IA&@+h#G=@[qpEYL=aC6dB ]v~ l)5O1Hdr_BӘebVY^`DEvg|xdJY@YgYޟ1zXjr٣lBe96UpUTofҕ=:ꪄEY^9fT*Q~Y?+]tY+ZQev ݱԒ@*!Z'c.h9ltJi~륨*.*@ڞRRE@)7|v@9,ҷnImE|ĬOoAyN{M\@ /0ӺXtVqtj<MXA4lN;-sCt5զ2r"c@4][i2SͶnsG6ij=w2=Zl27jmlLi98לݼ#{r h15%^[yץ[x {WyȼMɞ- ؼq+{Ckxq;_w _?޵Ld/N${OSuOȅg [^ԭy{٫@M`mS51(N BZ< j! BM V+ G' Plj͐HLs\ %A.9ԁD]vTn aW;(>NNAzB+ . 3Kؿ5Z D-H";wѮ"~TC щ;k Yȩ9o/||%H?m1j|ըPc%8K]rKb6g1(m0CZ4#y4E0L$U Gexl bVVzx\/'~oSܡMut$gڵCٻ慎 R,@9+Zk4 Mn %8Oѡ2(G8DiҠјD"NEk$!^ZIEQA%:7S\L#PI9tCFt/&((+OK 5knnw-2,zؽu,]b{ϗOuBZ˘:-[Cuޔ(FHN?qJI6oifcQ:Zl7%NRtB,GZoj%SsmiS>Ag_%ZgAss 7m]mY^EmD&\umk҉fk\][29NFn!+\gleI൥?`TZ%f`:Xfݭsx7Sm 1CQax=d|A6rx{׽|ՊuɆL_9&a.Bur涶f[3X~H*qmzY v ]6a@;e3z90k;pA,;v3iNcz3:eӬv` ;MɹQɹ[O! (C{}m̵,Oba1VGZ^K[6^4;I`qhN.f+T3%[wYձ6m9RhkHwq,cv8iDZ sh5\9f6ɹ91C֋& 0\, W_F9snPJu??/d:ڝ7YXGDwag$$ hiSp8bwZΏp &iwA^xx9?z _6JK=R>Xz#8n^gMx>fG__OGvit[Ӿd=綽.מ<}{cmwc~}}Dzw{}r(DVFO!jw8`Էxh7KzS]*YZ7zsn\(rU}:W&[xE/ygMe|HxeWj2!HMdBvBi,hQΕU2h4R5hQ%LI{h/Q4r=؁~*R8'8N׊;+[mEbȇ0(U8'WfY؄`7j"Ty\xh",OCQ(4H@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tZvzxz|ڧ~:Zzڨ:Zzک:Zzڪ:Zzګ:ZzȚʺڬ:Zzؚںڭ⊠B /j(d za1.z:-*گ;I2 d " $ZR d 2@r*"@ [ Ѱ5   R@![`{ a$# <{I 6[R$3 :{![#,^+F k%Qc B9e13?; {:+?+Ox+P:+\;[൒?61;d^!I@ F  f;3Q +!KXxp 0R`+@;wˊW[,[ΒD[Am; d{a[dkev9i{"p[Ѷ5Q5A{fs۲BNk5A )Գ!];=+i4˹⴮۴4۰{K[ =5 #K l[Bh[-!,C=I H*\ȰÇ x81ŋ3jȱǏ C$`ɓ(S2`2@ʛ8sɳ'Ö8fPH*ؒIa:]JիX?UKJfKVeK/ 4`ښeʝK$PL& Lĵhkǐ#_E7", APkK}lZ[Lװck+ɔ :}[og&ȓ sgke- MD-ËRzex;e,-[fYa@a\qŖ@ vQqdze17\J@4}((#t6P}5ՌE^=hx6a̴DA-މݗP 5Uat`.%U6>杣ׄU_xtml2~&YKD }<dVtJV$(Z%@&ťJUEaAf㤴ڝKVgv щ)WS*+IgQA}i0@";*:D`;[_%A捻^\J:J@'Z0g^:ڸpnMF[]Nqu{Ko̰y {Jj g//ɬʱ<3Ł+Y"7+?\.UK?{q-'hп pgM̓`dvVR{R}$@H}D^?-rSa\n+wG:%vs[֯w]ytɇo!H/qΪ)V_4k8 ^ɵN|CY]c!"SiV=>n;z'P졟{Cu+(6uWH5H^3~3^غ8sǣ[Ŏ#nj6K,#0k!gd$xJ {F JC$l @pY ou'f[Mh\@䡐WIlW+rQ) T#Y&xF*zJuTqyt] Dq+-r$zgIUk#&G]uk! 9JPq<]IT Xߒ-3K-{1-3F (&fſa$qSdb:S'|.0׬7K 'Ȩtr3u;^ fGRHB.fQ6>«fCf'Z8*_Y2!ꐒ啳"AC:O.]>wV hCSzl$KIӚFOiH8u=оutm0}fyR&է˜J)F6JWQ643iBO(b˝dZJFaNS3L:WZ9. ^lY|B)CqiElJ>/[`e*ٗQj'$$Jc+=-K:VԽpDZaUTꪺq6ҡnXp3V6c[OuEdJRNi`;IJf"-[ÙB䞗c2y!W\\olkܨqՍ/t_ңg3$•k M-kP5ކabx %vK<2уל/=a*AZ95p%{N61No)[dtϽ![( U+.rk8m2_J_Jxb/^)c~L4OxgNu@xH/_yr~WΥ^0KG3 쭎=uŇY:2IM]1hU+p6Ҳ6ш=+U3V`ot6εVmzO{Xm+7rVw4'۫r_lTӘv᪆ }Źihf3a8[sr|N:v}k8y mnLtv}, J'`g9#+ ̛8EzN+\/f5f06 Y߈fƈquS|7۪ezPE,T)mб-LA|:ջnDDxv&~x_Kwj$F37'tAH\lvTHd#. 9~.E69wo3=69q'ݒy%57HDgGsK,75H(o2^Ev)i6q3AHBd&aX|-wj7"4&EkXr ƆQXQeZHu3oLp~|GTS(d}V2PxC_R舻2jQd(vH(6щ\6^hb6Hp-PyWȊnS[؋~%sƸ9b p|e4q-xp51"(h.11"]L!z.؎%!Mb#H':wh8Y 2Gr+s ib0ry YlXBRh"ؑ$ 1X,ْ.0294Y6y8:<ٓ>@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9Yyؙڹٝ9YCA69ٞ)IIq9Y:Ze*R@ # [@ d- 0Y⠦B7d I@>'1[РF w娡Rdʠ5 [`?JI0 = :C  ТDꤝp žIgse? [P![aꦋz&Yʠ#~&? &l*G h3ڤU:+ea7Cʢ|ШN:9I`aZʞ [0ʣC6 njQJV \ahjxF* @a ФJj j:Z%J*sʡ |A *jWh$!,E;G H*\ȰÇ#JHŋ3jȱNJHɓ(!Xr4`€ɀ)sɳϟ[  ̚7]ʴiD,2IUӫXj *T `Hhr*L$8ڻxȖј X{'KXB"kU˘ /"`3湙 sa x;alHYͻdY}gp|;vԁ@νడ{,%JLOLK0[p‘u 0Qg b ()IgXh !gPFYfQy&s 6m(0.x@`͖ay}`Gl}5y hHLٙ!m~_O\HM&DeM[vP x"i^f)!LTФd&Qv4fD-0:hX6ٗM(Jh(͹饠5@=f)JFgGԕga֚ŔW+Wꐾ&{VG?)ʮE owavk,Uzbu*];ل'IŚZIX*n[i .a+~Zyq;CCЮ% /r-`;מF D=j.0'd j/OY01l ݱA*JsӋk;tk,PQûgi]rMcE|-՗b8,x5ﭚԭ$s4m5bof-jFS׶MT|3>yɅ9v3g,˒{(@戬*W>oǫi9ѹ[`i"vyH>R<#^_'w/};4g7K{-;KwW?.Mq#VU/'{&C*o_ p"4ocUu΂/fЄ =& !/]K(aNXdxBv#54wP8&;!G mB,`*&pwD4A ^_3]U46"̀'ǽ #w B0{wK2A:M)W?qqAFxI1G-fhgj-|&O!ЖdT*Y~ &lI =`b倬bIɶbRxtOqw[&AfJm 圦ɛQyF)DZ gdhd*/fO)2M=d 4!ҩFUp%k93A!:<~.0LU r4ZWĎv˄d%JГiYԡ6E)i?]Tck &{KaU}w-AU SY@RꁍæYtgiYLVԹHo ?Ԏ<`/&m\L 52/E`ҵ=vaYe՘v@7(I%Q$XJ]g.ooZHQN)l{wc/ {NOZ挚C=kR5N^E98yjaMU\thPn-npc&ƚauomdɧ֮Zg MKG1!'6Ļhe#{nl؅J@|u6Soۼ` S-&<#|fP \ݪ\ig p N_q3FOĞ?~z˷,H0Ry_mr4oF As&|j usL{E8t,}g5b*$\vbg#z}~Af޿~:_吟ź~st(_=cO{5eu7_lC̷~O;L_wS|9'u__W~̂}iWt|~'`&"~ppb6gSS6'K#VdI(sͥqO*8W\#}^'z-kIW/ւ7xI^qqBL5DžxxădHc.Hog+ S[ք{kj @ {ktv×k2o%k[AZkoJ"7Ue2-T`ȉ>C(EGLjhN'q؅rHvRK0X{gjZu\&E8XI.g%XuX"a/N#'c5#3(b;gEGvt(-VWWH獫T @B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tZvzxz|ڧ~:Zzڨ:Zzک:Zzڪ:ZzګJvA 9d ƪJjڬ̊ꬿںڭ)pHR@R` @ R [@ d  +z@@JC d @ pr  c# 0Ѻj}6+Q3 RPR# I` @ys> .KŚ0дp*NOR pR +dPy? "+A@ۯqyL˯j{ѵ , Qe;Sk3[۰C+/{oL;f{{oQ+L [ a0۷1;13+Lºڸa[E4 [ Pf;N;{ +!v 9qɰr!BлKr ;Jʳv*zE+O˺KLK Z3!,x d )2@J9(e&2 Hŋ3jȱǏ CIɓ(S\ɲ˗0c$d(R N@ JѣH*]ʴ7IPؐ-5jʵׯ`Ê RP$0Kݻx(϶[Fdd 2mB kǐ#KLrI LX`n[MӨ&a" 8NM۸s'Yg-IĉA^μK!%%B2 x8Ë'sbkW>q˕~yϟ^h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`)dihlp)tix|矀*蠄j衈&袌6裐F*餔Vj饘f馜v駠*ꨤjꩨꪬ꫰*무j뭸뮼Ő@>AtVt&;Sg6k@Xgt!tlkֲ\rn>piv$ *\\T nRf*ѲIfsӲ~&Cq@l:}ꥇ|y0|˿}Ӭ<@-DmH'L7PG-TWmXg\w`-dmhlp-tmx|߀.n_)@S/2 ,!9暏O 8ҍ_n:L4)Dnz4풍/+rLK>%&RY#H$7>YFi\-OM1b b-!< +R4hBK0>2%U !ɔ~zP̔poZ1\ ]r7ArJX()c4CNR!l)={rxk0\"NZ!)TADHd'9i|3V$!$'"TS)J:t9f4_IO*jEa*ISF;?ZRT"HL/˘L ;Kmo3%d1b F3p]vI^@`XRڀxσXLWl_ivfEZujkbVz-&Zϐt,eAH-Zz^ >*['*Ѻ#MY'YC"H{ǺXfAzhG]{q>*g@xUk>!앮3 ^!*B2*RU: #KJKIaro\-[Vī-D_9ΘqD f*8C/̊?$"&vMLZG|)L67Z2#Lsz0kK4 3k0Xk1:+X7hdF&ʶ-@m]^5e/i{L8t,_4Ft}ɼU;x1bzs,r[ ZO;V4j\+ԂQd\?}'s2M1p}fWٸv(ԔgKl%[5ZVsRj9ͿImG}k;ԂBݜh26)olnZ-Z|Mx6mpR|*Xp xR:=,wSs hu1;&\!cC#:q3ņ?V"i]OcWvM|?:s@S9-}'4L2!/o|Id度Ds§T۞m9fzڷG2R9Aoy:fG~7%8hqrvY2}7)Wĕ7fW)uZDp#X_Qv{g woCrwcz&NR"Syg)Vp"ze)Vjb$j;? yxsGW0h@ڇ!zD~Jx.xBtfH2nG|I8v7t6T` {cTsx#CX"ZT|W8M.{CgX>hT{q_>fG"8lg"G9|x:S{;}(CWr˵.fGx\t_g!(\4ы8@lx2VG`\e&'"2Dn\8#n"|eAVExv3aVU%x" vpBEX"$gtuFn1r!1i&n=?l(I"1IgcXFAv}.)0lwhFT vV nv~4xq"ixK9]YmU>hǑ7W䉺{$g-sk(=by7F}:5قY8#qlX8z=XV>e׶θ3$ΆB^))xMH "Sjg=\)}Si)7)fș3Y{€y#o h2ń!E li$wu>gE1?'D+vц@&D 2h@9B9^?JB[I酬$יUd1q(י7يҗaw) и~ FʤHWQwXUҠPR EE^d yA':S؈H6yi-hFF'U]ƗQ'T~:eQrdٝJW{( }h:@A_eG99yg~>D-X2 dמ'e n6Wzy+?f鶤To*L#B;*|eɇ}J= &\Zmnz|*HD@U;q멤@O"x&vsjhj(>ɦZc$eèPg6/Yze`ziZʠ!eP$~t*Azvﺜ竤ql1|&ġ9Weqڰ*pjF a(qYHcB1Hp+Q'ڤ3&ۡ5+{g2v oٳZcl۩rC%/: $+eձ) FfɲyjJt8W};BqdYjڶ F$9($ 㺠kcKE2vc0Ft7}"DN+?8ہUj)f8Dۅž!1RVpjQt S[0!1bkZd OrU=!-nQ2m1`SQ-CH%" 1u[AufS<1/Qa^KV[Pr02eril•Ĺ!Xml";իk!Hs ~d3r!- 2,H)J;h볎7l%m^ЕG=$^܃K|յwX0^Y8ɷ:a,$~uGM7q%:bzD1vJbNkSķ$$8T*Ò|yc:j(XJxDУʎ8y\3?̳Ar8L*GCz\(lB-ICj:L0`<^~ >^~ ">$^&~(*,.02>4.˥٢\$\4:*=~47Dl4H䷌5NPR(cAUAI㻱 X(2K 89QA001|(c|eP Vb>3QTR Uq’^iEŗ=/RPqM=ϕ5T-/BO$RA-DR3#Sg .uks$Wse<>PTN~14!U^N8K9P®+r1 ,<^.ᄉd<cR# .!A- -M$| Ȝe=a0Q[Sq_QNZ.ZQ^~{ ]!B [ p>Y`!,:FL H*\ȰÇ#J"hȱǏ CIɓ -^,q#ʗ0cʜ Qe L0h@ϟ@ Eś9s]ʴ)ѣ hdBT]:ʵׯmPE [6I;@Jd߿E0.flD@ǐȠla4N'[>hsIkAk'ݱ+]M푭 M9sV%bp1k/o9h5:=dܹxSCD^ӫo96O(V#rY$j߁T}L\eiDݵSxxX G ~dQ; fxaé$YThvaX2 DVQXQcl%0zH )%q+axdSx6c.rcOHZD?mfKI yX$|"%fTɞbv56 uLɹCY4ߝ@)T\2JL[bTE|jj+h8뮃"9'X鯼W+On*묂Hr>%x谗ZHa-(M fI뤻+b-k9!Kul.n 7Lp hvkB&:ºðWP\]. |Tk3}!;Zņ *4}q‰% b$ smK?Z+L 2juj4EJj jat8Ԑ6Έ⼚cUv{2f昒[~:;u]9#*nH*^ i拥ߖ89y[׵ʡk~Ro. =JŪVY/=?ً_ʴv@Ro]N@_rlR "Է.$RREx" G'=+d B(t`J%%s=zw# #ٔhMɉC B8l}TR7.bPFYn(`2:{njȚ,OYE᭐g@pzvɰ Ғ| @I eW7R\ 7hWK%LN@#"ursl )a*TMA*hdXM2uo/,fY>ʖ+qڲΙ0k[b=OlJ9M/6=DCMω/ZB"EE9^#ҩI4Rlڱ҇ 5@ㅾZg%w_ڐsH'ԔM '&Ѩ [9j֥*6nMf^Adg5,**&Vmt)[é~.+AsjPv9Uּ bUcK2ǤO~qҧICk0rPltse,PSZJ{I#5OZT@="ܷ1S[Ek0&vۛ颮)yE{,=),Jr%CZ[ϡ]oaj(ɖ֑#b,ځLz&hUcJC5k7.$jFf%+ ra[6Ľ*sKb˜2wvS}ގk\8,gNBeL`[R]aPJkf)W_./PdAAԮQsvoСRʗձKdZ7Z:66MwqeR:sкAC3.L$+s-}l5iAasέ#&Ȉbҁ-C9_kۉ-/SKFc&_jm37Q3ad67sڽYGp7xxzy<>Occp{ ^Z8?m~HyvmJ h rqӶ]Kp/wAj3`@3SM/'neforknC7w8p~UGxRSA4~20b`6:Z4[]N= ~ftzyt|)xl!bFyGUcE/xl^wH]bH\cE5ywwvaaead@Vw(PWJcxv&H{b؄fwlO$|$5@h-yq 8/J8Hgd$_ɸgE7V߷e!+x)Hkƅ4U]=(EC)`v#׋x"h3ɂ׈z#pBiG(%qx⏬*ŐD1"eto6)`Q/ 6F"ytVӶex) 2(^&דى@ {6"A iW@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tZvzxz|ڧ~:Zzڨ:Zzک:Zzڪ:Zzګ:ZzȚʺڬ:ZzؚҊ$HBI H J*Z:ڢ:ߪzGבЭ PI@%0!+I/[ Z [@@@6R P![`~T  Y2dP' +[.ˠrA /RI[I纲k[ W  *g a[n` 2N"kx9K[;[It+,V\QfVk])* `RkX}+l;!U){Ky[n;h+쪺L{J۹Y!vѹ!*;I$q۶Je^Tf>$8+p= ,`K" QZJ++˽ᰤ@+ kSkK :!;*!,@@J H*\ȰÇ#J$@ȱǏ CIɓ+^̸˗0cd@& fɳϟ@H$gУH~T@c&0RT@KXj5ŦPV$SʮhƬYv@s ˷ kq %W*^Lէ *3kެ)ݨ-.y,X6&uQ˞M;dMCˠa:`tNJ_Xa9Ms-NiZbީbO>mŻ w/X78Ɋ Jn/JѦH ۃ VhaCIۅU$}3Mi |deh@1L؇1P\2%@#}t1c_х %ْT癄>_UvZ6!ui&g*QaR"*yfV"f h'NjDq[!%k &ReN%&&]VNvxd*Szv Ԗ\秧%&Z:nJ. QbJ@fўJի Rr5#Ez],C8@3N5سK@*Jbr.wM,_"h 'c/x{צk@[0zn2L qIfzo k%+[)|' _N'lc+ǔT:/'ЫbJ[Uvt=PwV=5d3g\bv8kKو+:tyn5y4Mxܽ+͌Sg>}|u叏v 7–sy@H0[4[$'8V^yXc/o;o2w]Ĺ _=XƟy{R=vi2nU:?|y/`f$.r[̢:I `j'i5@3QnSPHeVeZbh:J|,DEHv$3FC,E n&)-?yͭyT\T~mq!erq-:a3qRsp𶲻FULµc|IYJFGH5.Rc#4W$I"I]K蓕; |(UtBTڪZPUe'.]r5j/!2afGsn$,2 M#ry>́NJoU*ZYrR~S[NHӝ4نE|·漦H@΀G6#69ai1- EDo?~F'nL.S۵*SeKs.sV;2zT:Z.*y4Eo2,)3rE)J5*C^cZ@csU.7,3>,;7{)TP:u{V~fx_#p6.-Hrf|;gX6]Yg Az]y~-sC mB}زr&6Ovp~v&,@/9ffg~!@OdOgy?s7c'h]VGقR+QyH^ct|#}"8.iu~h{[6Yv)h+BŁKӵh~!/&S Dh+KLx;|0iL؄t]A &( ^`I`$ueY-F$A!j·[]qXsFRXlt!A%r`]G/hycrib#j`=XE.rbPtnVrH"lB6"%@ Oa\&-y4A*CrhLVIX7LaRVDb[V:L0tg&5Q0~A9|u;*: r#Ǎ6ب%8߸x HEar|399CM57]ÎcQx,ْ 1.4T7OT|1y8:<ٓ>@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9Yyؙڹٝ9Yy虞깞ٞ9#ДAKyɔП d>y w:Zzg$dI@%`$!@R)ڡ +z$zd@ "  Z [ 8.cQ3ʣM*Cڣ?GgF E=B@zEJIpڡgZ P ʥ u =XA:r}| 0R܀ Р_ JqRڤj: g:dXɗs'Vn'z  za!EMZzf Ц]jڨ`ڢRJH2*ZzKjɦd -Z yJ(ڥӦ*):*ZL[;Fz\گzfw dکSџ'OJMJ wJ @ ^!, x  %2pM JHŋ3jȱǏ CIɓ(S\ɲ˗0II"Qʖd, aS̟@ JѣH*]RP$j-BBׯ`ÊKٳ$0+N@-ڻx˷ߟ[ p$X H-`wb#KL$T =cMӨMS yԸs;u 1֞{+_μsuɐzXaNB\Çm5b蹋_ϾQǷmϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`)dihlp)tix|矀*蠄j衈&袌6裐F*餔Vj饘f馜v駠*ꨤjꩨꪬ꫰*무j뭸暔IPC%=qĚUCU[,j KU6Ʌ]cMb-@vmf)RS[=;m^DܔUuaDmj|zb!0؝ywq'l(,0,4l8<@-DmH'L7PG-TWmXg\w`-dmhڕv tks ]߀@.ބjS0 G b @LLw~^.QL,9 08 4 t{-Ǯ7D~7Pe>.Ǿo90z#N(Oy^8ГⷉHo^ᰧ1o l7=: EDUXի4b ݛ8#g 04aF8gܡ*"E}攀>XU/9J+rLZd4t9zX90eQo#IXOc]n';DG,cFRys"+2C.2#BNL4#'@ %Ꙥ?7*"؋bT)A52SWbvXD2Kn^7]"(L#+M!(|X)O H&E*Id D[fHcPf/񙒚2 ]2&Mr< Ή~F895PB@i)xƒ)G;p\P;7*p(5d0%d$(Fnd;h#yrp/)K Fy^ )F"&Ph״.mjFSosUIsTmb()C#*._jJrY~r+\GQl\u-aavdMt-RUKT4)1m)H R(WN`f2u }mQ4Pɛ]dOYǎ<4Jαf1&,c[`~x?U(,eSJՋcO,E+EjBލKm4{Bm%!ݥVdR XP_#WƱa(ħ,h_x1c+Bb3R(y͵̞ۼ?w)xK/[ɻUYD f7e}]RH;9ّ~qgk|cT{ ܠxf/rzsXg\<S|*\7; x4Zv=L^DH"=wޡ{=Y!yIw WL>|=Aʛng #}bqWr7eo~<#h6[S/gF\,OJordR3'ws'P̏33= rO£уڑM]Qrzxm'EIN76$hJ’]x\.:N C[>+ɣBG>udi[?~ź( ]}ncڧ9ǧlV 0/o}+@0<}irsnf}yDzl#gqD| 8MW^(A.zzq"|T7EEd~uBW!# tN'; foul|+'7$w!w.(sygrb{/~cvS[\րWG!J[wJS0RMxun}W}or:G#=wPb# DQ]}t>҆!וZ-XjQ1r"x=Q{"&)"/c/}Pu}s ޢ8 b&dn㋨8}Bұp(a8!" RgP׈4(dd(hp Oܨ~W'mQGOu1("K8in4/CWPňo3kwhnt&8qet&P9"&@uoXp73[WyWƆo:XhO$ɶ'OyfzgXTԎ^859 &I"(R5 yw\NFZoVau8h|hgg`ّ"e9y(Xi ՖPȎr<{hxwC8FĨ;;b I gy?Ch?w"UIY &)0sB=9ؘc(FkH) 18eϩ2X闭iA֔v~hY2YG&!Ř'N6>"z>L I)("y|Y֘SAyyxR)\'C逼zgMXok$9iTIivbx$E׊D757i,K,RAڢsSB8WUqkOgy$YLO$ H 4o(ڣIF'ԁ`rE9g՝d& bE<%>&LgHi1:u;vWx 9rq (ZJkVMS}RZhZUW'DžCb@שXSwԇhvzcI>;/<"j5/At;OEI"ZW(_;ڪqZvZnC?7ڥtnbnޚ{jy}58*cnI1?ZMVF3yVS穉 ۆaB*&ﺪYTcRZ ˝YhiH >SIZaIi;Ay2ʋ'f2`~jVT [<[K˕JTp^+H(JqRHŤ:f>id`1B ߲N!ڴu `ȫ# Y>d-fGŻ2RQ5KƲ[wYO/.Rg[FraHZ+KAQ\Z0802rk:\0=,S ;s@*j]8 A!ic+%2%J#1 [K:N)! n<:Q$X9p%TV~_ gZm,Jܷ@񁈜;e$<4:~DŸMuZLD:ȑ4'UCiy'Lq}@Iw Ȋ )\8:\2hOpC,ǍGs#>TԳ̈́CfJ4\lǔ\::T=@B=D]F}HJLNPR=T]V}XZ\^`b=d]f}hjlnD 5ap "Y[ ky"*eRR@U؃!Q.@.CĻ1V>U=!r] Eɥ P  !Z!1.HԱwmҹ]1-<=iʍ=]}؝ڽ=]}=]}>^~ >^~ᴒN|"~}ۂ='%2Z) %"[R~A(T1_NU.`,A eؿz!NNxz-脞6Aa[T!/+a1--+U5A5.EB[Qס/&~RrQ4 z[0N,1k=E]ߋ?'N!NNm>@VE6^.獾,^1:[ ?_2an.{+⎩z^T0u=m 4Jɞ u>XR'/d, A@ W;T S,!_~Yba1! *ơ:~N6?~{[U [MU[PUp!7!,qT H*\ȰÇ#JHbB3jȱǏ CIɓ(Sq˗0cʜ%͛8sɳϟ@ JhDF*]ԡMJiԫXjʵׯ`ÊK'h ԲpJEVm۷r D,a||1S@KԱ`keSSXLXE]˚Z&MtM<2QzIţ2BѮ] D`sw_X4//m?Ԝfng XixhU@@؝n7l bE[} x"qԩUY5ڊ4ZMwh\u^V4lD0 A)G^; _C@[B ׍uT|Vlt#e d  0a{FrDW}'U9ku\%[:DgfZ0QiL^ĝVju4_``Ƅ<R'N1ݙ+\PәF}Q*M|J;"]SfKhӶ k0DQ>խAaR4\Dl!"+rҭ{SK#ЩPM:Ckpī@x k,׈,[pnnǓ*0Z1)(мR:A % =] |n+~HK<5I+FauU{=m:m#ϝ]\n-kq`7sq+"k XpbGow-CLS|k,nިႎxS0]=թ.>ikuIթܻ_Oy-%ECʛHdT̡ +'0a"xEi}0(Z b1n2AU5.g9S縑ە&Ȣ!w$F\dio,2!T"Frsb4APr D̤\IMc̢!S:HpR˃}Hud6R\da/g5GJ]g< {:OiJ(VR $_}CZ֗St;窦)2\gBeZqD 0C$Ʋr,IКdmK:c5Nڌ[f3fCE»6I BGpR:R-yHm^)y&-h`(1dӢ3fLC:I![O!ϊQliԇ#Za%S-88)6PT8YJŪ%!/!K0J@9-)Qj[c$j t7pjHE%a@V B*^:!1zSEQd -4K.hKCr򴅍NWK %F#5\߶^涣;àrGUn<Tfmh6-l-PNއeb~ [ߣtB{wriWR'tUn~ `p5ǫ_z)e7."> E|[ͦx!cؿк䃯_hǧp:"~6N oPXS ܗi{OKdMxlrK{  oۃÔ=_4`ua7s|ײ8˔nYOmhTv[A{:w)<~- h$ә(`ֵT%Hd_k275K&iZ[^+>p& ;nO;ֶz^N ە9a)z#vdkTLwNgO%2{Vb;.N]T^[‘B\lo25NfJK2c- Bh_6M;6E,;zw%YziV7k&+C%A>c*D5dݣ@GW~q=al43x]p\2|p (|xdl{KwH|hwթvr|H%I1ONRfq$η{><A7D7?Ҟٺ9 *$>g>qfjeܵ v?<$CQ#ֿ> ~}1kG>~#jqsGPHUA'oT:7FK#5uF6jZWm&@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tZvzxz|ڧ~:Zzڨ:Zzک:Zzڪ:Zzګ:ZzȚʺڬ:ZzؚںڭzEdРHA HZJzH1쪮:j:JUگxGd [ )R ,I@ =2 @IX  R ±R,[в K r/˲R`md!!Kdp=K *;1+)I.[P ڵ){ 0g,{,(˴K+)( Z( .\!Y[!IYRL Tkg!(Q!GP+p* .YQK RUQ[c-KqGSDzYKe{vr1+5;K!t[~{@*ᵷ+m[T VKXY3%( s5d4JuK-Q[~tKkВK >,A۱ [1g1hʱ[; @`EKAby/&)!,8HT H*\ȰÇ#JH 3jȱǏ Cxqɓ(S\ɲ˗0cʜI͛8sɳϟ@D ѣH'8T`Pv,)իXjʵׯ+ٳ  ۷]ϢU]r&`Ҁw .7&~<1Ʀ `_&r,i1UǠC+0m̛Yc2< %] tk0 L2B؛;+N0.W;2.7v_e{[Eޔoe+ NqPcu2$^QY d$bba8H(&b_Gl!cEF`jWB*dC)2ċ$rR4ltvO4 0 P!aImp!7 4ђKYYWjH~$1EHtd(@$晴WMe -wΒA#A"pV"AjFdvӛԼR 3IIBVBN8]7:.zЌ Nt^S,d&)򡦻;(PTˌ<ݹ,2n+X ˃)_j,S+ K&"IS3Uks)&3S"k"Vij1{JWGm[+MA9 jSNzQZ5ki'>e"J^dL+Zu$Oݔ+Y)],+i ÚzHU*X1?Mhd%$4mk~euA1{Kݎr oF/.Dkɂ;=S_N-˾ζ''d2X}%u-* ӈʹvMl{κWiD[` Oqc*2ˮ!8o[_L7mE΍/GW?-lƭHVir\tr^qY7/ˋO[ʒĻ,[OPW1CL6\gfmT;tA]*pB&|bd+xy4K$bFv*gD#gHV@/(.#&YG'[*iFO+]tNU6H*eusCiɵGXڙ^K^ytwK^ؽPt)'t͌Bɝ1jت.(h([>W{/XNucuj#Nwץ¢jC+؎K\9/mՂٜgB9L~ьxK@5QUI<8`f`<ǜ|5WR4FVIr^-~s5-JEtmr+H^Ǧ+eM> /v;%GSOWYQMxu &[8_{B{|2-FwrVE\z-t=>JyN}o/.hHw(w;B$5#mGvkoAIA~e5 'gbA-uj0-3{)4@|D$}(|7$8IrxGx3u?χ\7`28cBfeM6"h:FzK(JQo|&`"l}{XXB$Ou:2vXpdž_W:Sjpv&vX!ׅF|xXX!=LXQ8w\BsCpwSdSk_=~>]ҁi88,d|5oG颉 Mwh5wTxu@${a(')WJ EnǍREJ2hf\nx0h6H4ZrsC؉dt^NV@U؆?rW(]r,H\JiWo.  '$ibD$cr-"C.q.+g!A!!ڡ|+<ؓSx#%T`Wa]w&'sBqft$Q1 R}[xZr妕.#2! &%7cYr~C4GMɖga, era옘c21A\Ry#zr2N$&AM~IbM<i()%@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tZvzxz|ڧ~:Zzڨ:Zzک:Zzڪ:Zzګ:ZzȚ$dOB Z:Q*ʭZڭԪZzʫٗ.ͺ"[@RS.I@I( jЬК wd 03[ ү [ 9` dpʰ%{B 3[I* R5uZ@ 4;3 Z@f1 jIfQ &lɴ ,&ԳJK{^vg&;g P{в],U1*iKEo{C۲c.,$; \kz{Y;dfQfaI{P˹{8{1Kq ss볢 /KkIJ͛j I{+ +Q۞O{{{>˯ʷ_&L$K_ jеa!, x ` M J!I-$Hŋ3jȱǏ CIɓ(S\ɲ˗0c,IlT-$!3ѣH*]ʴӧP $U8DmKٳhӪ](D&)Bx˷߿ELnU3& ǐ#K+M0g['ϠCMVn*5ERc˞M8 'dNgH(rͻFĊس9(܅kOӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`)dihlp)tix|矀*蠄j衈&袌6裐F*餔Vj饘f馜v駠*ꨤjꩨB4v)d6PqPD*aFnVu 4N 'cab؊zFa]+1%0Mv$9  9l W G,Wlgw ,$l(,0,4l8<@-DmH'L7PG-TWmXg`pmpv_? Ds31#'L07p%P݈рp'8v7M,Euw.porO 8_vg ,1NQpӽsnwy.wO<:LnͺeM(9Mx٘*TM/w7or[< o t5aUGˡ)<]HrYnX] bz[荀;a9%L@ uGEmMġZ)XL] H)/2P NQD~$Y,0F!ꅂTE Q@&HNOAdG؍,aWBYE5C:"RŲ$D@X2HG '#=SSIp$(ReDHDKq W$+R$4<2w8PRlT$hAHa'I۵UN3/_<,B۫WY-jXU2̴Y8;3[P1WCsPL:2[H=ꕣ\K-P u%= 9ȎzPd5MM,摧 @wmWȱ'cVg%)ծEk;ajQ%SE/ Hp~U+гԳ]E9~3 mOg@5{[icM <*Ѷ0MU-Zvʣ4 ?Ut)l;&dʸ%M-"ҝflP^jg)"7Dldw0w6M/"k[6k9+@XL5n.Ŧa&G 0OUEbP+}2>(d|֩& Ef.dax,bH#`MNGB3Yi6g`Xn7@Q {C7(}[GN-B|-6PW.68e6k=CLͫjlcݸ ` K.6pSH'm߈'`cth[3}P5gMt:՟nvAy=#hW ˨%]վwd{%zN@>KW ~ɺQ{>mb /kړH@4!ʧu3?r ":;?vAW_#IhWGm/2UX}OCxc9gB%oc3Tw@K`%PVb 0NSWt ֍0~F7׋thkRT'wgx*utfmr&}{[iãRGjn"׎2ril|vxrXuV h\cyqH WrY4Ho.YoࡑƏ#كmbHzytȅR7Q(u@]84뱒e1i i|5yXLjzѶx=v1ViN|5nN exd*\('5jзqRoǒZlP~Is#p2y\G^yjh$7zbv&f03Oyfg<79eKmiܸ}%/ty"CiUm}G]kh稆HGY{8\edXY{jX:ɨ4dZs;[LZ#YةZ5beiz#scWP`V)\ŘvjG*@ B0S!lAfhʭŘz@P++?C8ZIWQȢ,,$ѫz@"p|%F QBۘW-ӂ%:pw "&(@-*Zi8S{dWTjjʮ^ dl.$O!zsPb5.&A&%l1Fg@L`Uf]L<=sázQ/P#>=beƮ1\Fܝ4?\.388"CA$2\ԫksʨL#㖪ʰ˲<˴\˶|˸˺˼˾<\|Ȝʼ<\|؜ڼ<\|h+B+z0b+LwQL,!:_1Nݤ Z!VG X T/ͱwL.K ҶVT ,L:gEaD )>@B=D]F}HJLNPR=T]V}XZ\^`b=d]f}hjlnpr=t]v}xz|~׀؂=؄]؆}؈؊،؎%9;VLQ Lm]h5(Za1NM XaGM<[!m۸d[ b5Aݙ ۱!/9]Z!=LҟB UAaM1\ ߯ |+3bԙ+8QQ,.)@a0_gKLA~8/bt/|T>R=!TnEs;QrTǝ<_Ҧ}TQ.3D_7Lh8ة:'(s߳Oi[8K—_)9.O}Q9yu߀Ra5`t F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`)dihlp)tix|矀*蠄j衈&袌6裐F*餔Vj饘f馜v駠*ꨤjꩨꪬ꫰*무j뭸뮛7vŶ ncmR, Ya@rlV_ٖ FB GqJ^lyq)^ztZ @ X-_ tZp "8w ,$l(,0,4l8<@-DmH'L7PG-TWmXg\w`-dmh6fm@og 5LTD(j~7u d9J.@\y/07 7}CƩ#D @N 7ߥB 0ӽBg/^@D4A+ms<7Aڷ|[9Cאַ/PߡOsN^ h7ql: >Pٯ @^׶oMGzA :O=oɣHҔA"+,pb#DbNt!0BA h歟ln5dBшrn)iyH/(] 4Y~pE,OW:Z6cgɃnlAjJ]JCҤ xtu8ٱnTUj}r2DoM_ η2x5)M.\4z+ɷ%8}Pv*KGJTtR Uw[$ i 5EIb{diCI(EmN_X7+,IfI¤fgːp2+5cc ㍟n-8`B^*lr.c)c"%kLֳ(VL-[ 9?g:lnשY -`Wi@W@P iAf>-9RY3}/lH8-D.$RM Ui>.G 3OV ##_'`-ë&鐖!gɸXG:v= i2ğU|nŶ0C;g_͑$}g,mSkVЕ%t{kFx[+T'Vs{ħ&t,$ÐfqkfvYŒ:5Ks쨖FA }5w}qͫ=z[<{NZvT/Zuc 7~,NGmGguH;":N_kOC+?":P}e~">乷ۿ|oK "c~WSsv7|}j rwiqcdWEdOixpRR\t{ha-!g!!ql!?'ploI!W_@(~+hbo&/aŵdR7F⧁'mPZb]<8q_[8tFe0@pVEx9 X"Hhwv$l'B;oq xG7 ogfi!}xtA[ 8 xuX'y8umkU{ʧ ӗ=57F\Ɗ|RT}ۆF"FȂG7gs~0٧ jL*"_F=}ohxwט'bq07ҍe'} qB6.}玼we(G}߂zx{g"VOZ4aBw[)#G"ĎXxj8=˧vȇL8O۳ֱwAZyWA>KQ]uv҂^ඏ"fXA:Bɉs_!#rؓ ыMKiWO4"w[uve wew茋x聁\'q&wx[&ZEוOi~nGw\: gi]xYV^.ouiuij$xrrFc?ƒV@#u:QYx9j9a69 GTGy0ڸ$KטPhq<(7KY6sjr_h @̹ƌ&}&9s7tlt>|G7wkaVZǩkeՙgؖӈ8k8iTK&&wq,}ٜbƠrrSN Ur2?x1 [gX4ve'f^M4£SP[AG#WZR{D9! e,`ZaajE{bRXqS`~XTCz@#[ u)JÉly{Y&X1ץE{fq:^9ȡL1*ş:FyTUaUH{jFpy*"h^أu꓋Ja"IWFU78a+ jyŬI^٦WIﶃQIɪ(aR6 i?AY"UzdTӮBIxQ0z1ZeZpB0bj LS]TOƯ-w-sq-^CʍGr: ц%.1K\ye4UyJɢTiٳQR~Lk|)CZzFp5P ʶA;1*i\z`h 1/#n[K LʪMIkQ/0ODJVz ҘJ<5{@,y}"twʵ$x067V»sXkXR @yW1D '@-<%3HHn9eB3Mu7LSʖHh^Ǜ>3}Nq>SH%k,CDd=v;@`L;+!FΈłS9RHc1: _/Lu Nj Ai4u7)+t,7s³\k|ACYFL|bHDҖCBHͥǶS;68<6 YO%sXLTcT =]} "=$]&}(*,.02=4]6}8:<>@B*RQQWxWCmU[MRQմqTTqTT_QF(K֨KoQS5zD%Fv3UZmamDWWxω8ّ]ٖ}ٜ٘ٚٞ٠ڢ=ڤ]ڦ}ڨڪڬڮڰ۲=۴]۶}۸ۺۼ۾=]}ȝʽ=]}؝ڽSuKxr-/1-\S3qն! oh,4SԐ͸j(K,([00KyΑ3U~=U [L~Lim >/v RR ^ +*X}TUS:(,~ EaC1[P^V~Xܭ佱̡s uVCKQ pT`*OU EM f^FYxR-K *PaZQsf-U"li+M ,"5J;x, bآ!ɴ%`E*1ǎ0D %/T}YC3NޜA=Fa ,-t*1ȢWǞ; S*uNwE,a}-.;h0QN{.HT߂KO[gN=0r|qs!,%[S H*\ȰÇ#JH.jȱǏ CIɓ(S\ɲ˗0cʜI͛#ɳϟ@ JѣH*] PJT`:Nu!` l׳h*6jBe5& 4˷oT.0P:6`2!W 5LrMc;j3LO60-I빵k'0)-TM, 2 \< 1 ЌGDv[UXIuΝ;b*޽|p:Fn,Qxd7 ̨u?T6Npe]Ftvk5x`G@9bG`1[Z("Q@FG¹`*8{xfaeo hL% p<Q bEp[J.1%\Ruc8AS^E^iٖ[Btf!hbigG)ApcU͆KH&t@M!frvMrY'ƉVvg D,WUUVZ~ꪕ@xښLpi驭]:$Ou(* _^O9-u ԩ+ZSU PGlbnaZK.i;o_۽1alpS^Kb=`+*fl1h[Ep:(GjX@Ɯ|X3ZT}J?&Iec(ktӕ% e{t ug=uB;U5g6AuUV=x:]7H}e'Lu+kDMDș,kw\H\z.p/m>R]~A-6AkXcK7jjԃ=e}61 =_\>=SO F@.w\^]bpf/럸ĨEi 's UϘq*:H% n'j$[saILNQbu`b+!pW͜#"1Z78ߴ0#,+n^wŇ쭌 rk1SojFF9sczc6{cR4&2WA6<{$8c6Nԡ$s(*V<"\o//'}L@"c1h)tb,I]a%'gf^BcrHdP|(I?"TyG(e" Et əGP*bcaRwJr]_JF("rP$8dwż'0y'2Т'+[c˨A TSIW)RMQ.Öz'DMV}:y&x7t&/YDR3Oi6S4R1 T+HQ[2۪ ŵHo2tlLCZ'z֚2kasR*VX~ s [gy.tA!V0h8g<VJZwUdQ_˾m" oA/]ͭ!3Y.Km{rtxj68MI{ / NUJ6U`f nSw&#qo>Pci70fKM>R",/6#]r.K5'tC|{4i+=##z?Ϻ3٢nG%$o2Dv=ƍfЗ&C[۸ޣN!S7@T&i53FVC]-M h#ϫnNj{)ZsW (ru,l{OZb)oj Lt'0}5 yw;-0idaF]2Ko}+Ge'Lkv+gWp|wq_}׀y4TWjW~pqg:e}SDI|CZ2D}<|-xZ1.2OugJ31gFE;[.Eeϡ{|?dewm|ZO|Cu\xSo$եwӣuJwfՅWCsv4fp;6qT|(s!HTLjj{ _(z3v݅bP8C7d29YA[FHыz2#.ɑ8"%eI(rGT(MI_5'y=a1$aTʡ$p U! Ky•:b ɑ+m!#M"b:2S"rDRTd֙ )lAEu'! 7}Xq/zG"iW($fI(nAY1v0"zw$ISœW6xu1$)h]n*21_깠,q *4iڡKqOa[C&(*,ڢ.02:4Z6z8:<ڣ>@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tZvzxz|ڧ~:Zzڨ:Zzک:Zzڪ:Zzګ:ZzȚʺڬ:Zzؚںڭ:Z\a*0-|JOeo֛dx+VšQ2tu+z1 /PӿQwD{]?4eN_ftE`Aݩ dgʟ"7 a`vB@l/Jh-P|yv69#Vψ U å Mvb9 O" 7 gK9 Jiച"!QxJwRب?0 <K׈I_, 0,K,"5x҃ %XHDN$+<4SwCSL,]ٚ0#xG21bG6ez\ G0gn/( u) RDBesD&9JpІ\gBJzQib9h>Uwρ54A>F ̦%RLꙔ%Fe5cJGyYQp]9m:4ŕY{EUӯT WYXӭ,Jŧq%#P3k"Pe*˪4δӪ B"ZE(b4W @v{R+9ӯVU7u&km"Fjׇsr-Laԑ9˜$6YVV`tZ˘.˧W9 ZJ(rzפu>C6fQ{+E0{Jmcwei6{kG=%WTUAɥlgqZ2նyuf{X%*]i+-{kg4+h{i2n׵mBwUX( b X%`x<4>cJW8nN"O7 Uv/ K\ibݧe6 u %kB>d6\=%ՕiJ6yu-PYfdyoeJ1ka&Zzd"Nm2\y+h{qzq? @!ҡhTny2OV*FI;.bZ}9N}mIW$1VDzglt#( oN_NMזD i? JvX дOn>/i_?t{ Oc =KSsIةs -]?y6)k0:3V6fw{{2n;am\R#z Ϯ}/߯~t?/;\\ߛ(ueyxWN'6Xg61}Sl2c>,w߇Wv!u*Zā68X'!c_G)X'~2vקq${3dsYC8Cw;1h5Fq&ԃ_^h0XׄVAB\*:~DlB^5&@`CB[a2)9.*A#q)% >ZA<(TvZPD@9%}D1)LP^9-Xt(91#DA#}?`0UY1ъ dIz!'\4!Yԃ t%ps8h&#ՈLQB{bRmmmKƘriX#"0Qu7#XpgOs_G{%2<!`6tPzA!8WA3uHkaA&Qո7%$U6KiEa3&& i7ɒ:Q>9D?$_E9LٔNPFh&UYl.$Z\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9Yyؙڹٝ9Yy虞깞ٞ9Yyٟ:Zz ڠ:ZAuZJڡs9ZYJ%2:4Z6Y!d ;%!R d A[`[H A [ e- `E >J@ KʡfA CQJ*^JYZBHCd a % [@ZI=m*Z nU w꧍u0<ʧ:tYa:}s*DʦAlz@jYAAI@ D: *9ʩyOi!sLz`L&% bʝ,\x-JIH@0y+JʂŐ5ںލ̹Li~Lު~PzyM$վޝҮj-uk ' yE}X˗ &I_po\B`+G;P~U]n u` FPaD pvZQ Eqj4}UTj 06GLڇc@Av8\UI5`PD4F7]Vv)\Q{x*qW ,pwZODxZ_WbԴh{Vد*>ttD7mgH{+;5 cHuSFn'nf>:޾q{u,Kel|/ҵiKm⥊Q0GR{~KnoίQ/kƩg_RK"Թ~/ š6q3I {g Zts܌D6.u.,&nga '2v;\`ؑ#DdK[HD+%^D'rGG]cbXB{YA|x%/^[˯3io+&LdtYR6%9"764K5lRoUq\myOzkZ-K:n=nuizŻ-٫T=oxwWhִ6r8"L3s-rl:iz_&l#ݼxltoKi;נWw1ymvuϻzvfJқn6NV8˳N* LЁ v^*"6oP%;^v |jr/|#H$Ez㤁$6G.|dDbQj^y`XDli0(Vg&f׃z!#@S!DŽz$2OSR"uĂE&ZyI:8RHQ.7:,e>%QQ~S IQkDg(&8!qG1Q?~a>Uan臜UJo!_h!ІD>gnnf "8*xVGduvF;(mvl'HwSKsTXeU%i[2X1+GAhdh-\O(,&oݨkhՇhSQ,}B$Y{&i5Y)ْ.294).rRP5ٓ>@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9Yyؙڹٝ9Yy虞깞ٞ9YyUTP%aUTY9SJ j4ٟ:ZzRA]d [MR@ D H[ dD[0%*:D R !!@[ V'$ I,*CJ= DF D@z. &*FZ0Df:`~=E[[@ ֟&DAal@'J Ფd* ~}Iڟn [@W lꦝJ Ȧ@Z*R*8 HZ |: sER*y%Qӱ ]/)κdnJ@ʧ,ZZ dlq{!@p_ڦfڥJdOzY* S @*! `ʢ0*Ϛlɦ G%J(*&NJ ^J *@ )gd !,x d )2%2pM JHŋ3jȱǏ CIɓ(S\ɲ˗0II"Qʖ , aS̟@ JѣH*]RP$j-&ӯ`ÊKٳh?JIa֭<$ %ڴx˷߿?@,ȐTIӭ^KL˘In IN3Mg&)ERJ*۸sލs[Isü+_μ9YdHU]a];ν!m[yӫ_F-f7v[hǮE7j锯W+G7eq{Bua°Uyg G@q,$l(,0,4l8<@-DmH'L7PG-TWmXg\w`-dmh9nl6 tm7wqfD4DK=]U ΄D,р|# XNx>!W9qb8>ߟ/ );E>yՒ3{砃?邋D@}+|>JOK_@_l1Ȑ0xF P@H׿t~ >f U(z[0*Tp^/QE?ۘn+Կ6!xyET(u`7:jc;a 7?" `:U ࣀDt Th7),uIb FLt#1LM8F0sl#ʼn{X>0v#c>CQ4\EL90x!7+UPeM$'K9ݽҳ?2D\dKp6I9M|_(R$J0uM+4IB;q( Y8D63Tآ@xNHɄe1yB Ċ"NN 6O&Bxdd&S{1,I2KYNɤAŞ9-Bϒlh)+RzCd];o|\$ +r|I7X^I䶧"d-R`9'3Z*g,'ͥŲ9u\]Sj+\4ef(+*֢J1ЫfRM>{웣:JʻnIW׌^OBV[/1&J u]A9z{QvVfFd&߷ꈰ均:D}}"/~; OQ_>09B:ϭ@l0L=CA-G[XOsiIO|z`,wFe]$_Cz"hHuIo"F|֓YzƐckGKE ?n$Y='aݧyEkEx!-/3Bv$|+h12y2C(aW'Q6h(1(R\u~JtF{ {!wn xE5.^!r8px0Cgoe"dN=ub7Y`FXr1NRH8|qTT"E'UYX{V{f%s1!ܶEY%(bat_"FţZ~aX~v7Hr(X%9FేQWu'y'2| Wt|HKQc6~FݡIyBwW8FxdrSAw*ymdduVHJssOSGׁry8V,{wH!zAp`p:BzS#׌ar]ym'xnj yAFyezMgw8 Vv@}BigvX$ezAى 21l5~ W:ɕ @HGlGl g~l1~IbO@0DR)ᆕJ2}1YB˜ &ًyP !Z}$mui |'j<$uFk7%Jh!jsHwYyG՛ 掍yr`n!pim!I7ɚ4U2jP1xw8)g1 !VNijYo9 )eVBy&6UYŜe-ѐtͅ%PޱS"I2)i+u#R郀fIa}rѝ)ʆ"2(c>Zt%%gOޔ})p͹)&wWyX'AjXp`%n'r}_ʐ&zb'X"Yb5^[z>:fw-v")jSZ%*"qZGLY5'yu!z#&ba"*Zw* E9(Y(vEKO!wlc'7ysפإ%nb>)ZTa*hUݤte1m{@atBy)(6jz*jљꮮd g:6FꏵJr)O} >ZJ|窯ywk!`a횭*!jSi# xɲW F:u/H<ۭV;u&/Yu+؈k괗S[ ߱ѱMW^Eax Q J(g2fG["jW˥ tYo2o1F{qyi@+tW-7A.D=ȥY<xgFڨiSR0N.)$z{\faK^z@~Żagqwkԃ+1mK˲PbLUmG鋽#x0 J…11[@]|盽v?f̵oH0A~kǒ.%Q%99K*>Dys@D˖{:sVATjq79Q@M9Y $=s<~H>{ٻ`ZN \B -4_=s?A.4E5,D|E>%9~8bxzshLBEZvܣA>TpĒCzL1+Y U:B\Ah[LD~\DKLV!αCU \HFxқ<ȇ;Bk:]D#90Y?1`dÃ?E{I%3?p/2EѢ3?i|2$T^.4`]f}hjlnpr=t]v}xz|~׀؂=؄]؆}؈؊،؎ْؐ=ٔ]ٖ}ٜ٘ٚAGqGm!\[.bI\2Pt/Pѽ!6LM!-ք,M r s1(RaGQݖQ!@,wݍP-K v$L!-!ȢRF>^~ >^~ ">$^&~(*,.02>4^6~8:<>@B>DN PG+=aE^ ʲdJXѳV~!0Ӵ_n[ 1M^ƾ15uMq"Dشr!?Ʇ '-GR"?xRS'I1拞s4N޼a I[-4QN&=L~ /4^X"f2MXNI1VHp,nyYI2}R־XsdG!lK?u1vޮ4R/PKI=[Q.^mѼ 8@QyG^_o mY/3.bKN_t/W1_;LA0;TuUEa%oe=c/s$. [Ƕ.*,.I$ ~۲J6_xnJ.}LQ0aN+QD-^ĘQF=~RH%MDRJ-]SL5mdxSN=}J1 !,bX H*\ȰÇ#JHŋ`ȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ Q`H*]ʴә@JJիXjʵׯ @]˶۷9@ K"˷߿=+.4@6ǐ#WsWϠC) /axװcOL˩Ǧ^ <,c/N0УO|nEsk.۳C^m\#kl#R6"^FY sm(aHqMeؗRi5PQjhDQa]ف$mh#CD7\0ۈ QveLBc2:DYQYT]]\I\Qť -ޖ"| \QKa i)L`B1tSN ؖi~YJnAW zY<֙D x 7gQ\cUIDa¾bɶi͊\eVL-U'Yeg@i\q6v[nQ" A[i/_;Fd*V@&VU:թ%qRkC[Ctw#%@ MY)<= k'\ ǴmH77M4\#="M)pq ?ု# P1#"C/6`97R )gB9xUd" ">+Qض ^ܑ`%1cFMDf8Y0* h wC8QOb]]aɇخ1!4L #mY֍b5!W~tȵ2;qCdk|QxK 2GCO1s: &ii$9#*)Hժv [TH )tI"HQ|Ќw]d587h9ªz k$9gRUjƁŢHEΕITL˙-O쨽Q=$Oѩ ij)cک_ Y .Qtd] {NAY=sWIWvqgz:[{_̾O7)ӝU::Wz2>a8Yt1LVoʣRlvcLYҫۆ3Zc)7=WjH YoM[21!^腹E=yLJsϳe{rM=[˄^t犢f3%Ōo {@M ʫ-ahO :^I߹E:ev]rZ_w4晕]]^vʘ-K\Li^~ǣRC֟J4(lOİ9PߺcL"2؜yzPlr@ 9;gk1&Nb=ljhў'D'(/&._<^&;/{/==}e'Th8A*܍Ez[3PS1ZcDf yb{bo$3~LRqyw~K1ETCwucqa }0'}Ʌi=|wlVp=CvEo"16heSZ^|o92?I5w }vmXZ6jY6wgCe]'7$XDNhD7]}OV&;swNvcHSw6X\^37'b#wuBłFl;#rUceW@QYLJ>iqxCQG7芎5_9PXYhmU6$Fd@#nw9zI6_4hR5GVMdyeZ;=q(Lר3ĨQDq1HG9иdo&HŠ8Ii6͸WȍAeiVN[GyvX9ȑ85R%bq P - i?#"d/m #u2|1ő#1#8&q &k6O' )D![&wSK8UH~C#e1DR"*%<qzfd[d=1n%bKnca1v[X gDDziA ɗfQV $ae!{r2giB17 `fqzG[YaVYJ 9ryEy%q'KniO霩Io@@:ֹ֑КJIy1VadўyR' Y@ j7c. :Zzڡ ":$Z&z(*,ڢ.02:4Z6z8:<ڣ>@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tZvzxz|ڧ~:Zzڨ:Zzک:Zzڪ:Zzګ:ZzȚʺڬ:JAzZ @ F4޺*Z*Ejںڠ*Z[{d)[ dbR@#5 cޘc!+%*IՈR@ [I;A  , R` ,I@ [ گ, C[L+RQ=@FrݚOE0RP+'Pa[+[ 劶PK qŴ0P[+@ ҴZaF;>bPKE+IK0[kZ;ˋʶG˴q˷M,K S۷bt;+˴K ?K|K=+kYΛ۰,;fk[˺۽ "+f;JG+[˷۾t{K %ʛ+[ [x+ FY V++OT W.?[Gk`KQ1C ykҰۃQ4KGkxK{@;J wKb۲ @˿r\@ m@ ˳ ۪!,"^X H*\ȰÇ#JHŋ`ȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ m``*]ʴӧPOJիXjʵׯ`>@g˶۷pkH& M߿#{V^&s ,i @ǐ#K:ݳ*WϠC~9W /axװc&Z2̩k3 L4ꉪ;&8u)7ڛ;Gν;Pg{ӧl^`h 6wr/=5Ps4exsdQze^`Bt |Pq4Mc@m Nwn8fߊr!Ya M 9NUYdNHu)%-"XR!Eft]r&@!ٕM`ndWz#$Th9Ii[b2!y]ۡb:lJ^q:ZeT8ZsjTK%В:chT煽f}e 4&Vel:*аIFWթR2%}1nE`ggo],P*] hY ꓿}<)$VM E%(%7-c2ZsT]m?g6-7U"T:CSRo\nI\^+3ml_q1ٌw[7]};xSMUȍ;Qn/~jkK8]0Gs7&GsTy٥fm z^GƴSd:WQev ߻CF u`3ܶ-녇׵7}m|d뙥.?ph'd쾢ԓ@ՙ w T (Hd7'z @p I|ȼ w@cp) Oz|"%268u9q-2_H5p;R^H{]h g'.åH y D#OTyQGb϶Dž;OBE_(PٛjS 괨M@*WUee(q]4CRWVQJ 1^ TjųILUJv+urdaگ_T ;G^j:kVYK^(:,RJ֧ao[ke$M"3mU/&DliXZg kxKbI@3(sJWJAj $M\.k]Q˲-{MI-s9ר5҃F#%8[dS/^f/B˥_ibQk`[5h=Oi] иwm#^.* 8}ƋKnv#_ S!wseۄfз*Liƥ9P=R4^UEQ-#RN%#@YT G5s1Gc&V7siL+wFnu$ UdL~mR1;-sFkG.xh|d'ӜuHe|n@˅pv UҿSLg3bZ#PbH>8n,29ӡ4'~{bnlI`.A&k8H}`w_RW8c@A FBH2YX{ѧ{{q?ywӗ^t)$tZI1~dGaEz~|fBc7GP14PoPI:GyM1fHHu_oz5T,6{Lq,]WkdžA~5!R\Vbs{b\@Wnte5I3o׃1Lbqu]vx%Z69|-q䈭x&e#bUECC=W*3q膹E (,u3*zh7zHY1wCPHZ$zY+x+i2&鹞ٞ m+9Yyٟ:Zz ڠ:Zzڡ ":$Z&z(*,ڢ.02:4Z6z8:<ڣ>@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tZvzxz|ڧ~:Zzڨ:Zzک:Zzڪ:Zzd]Rz ZZѬjz)j󬼪:Ժߊ:Zz9[ ddR@ 2(d RP[@ 튑r[PRd %I@ s[ʮIPʯ( Iү e[@?! [ / K?!)[`֯󺏋 5 d}0[,Z%; *@!+[@3ˬAT[ S!O<CP';  K*Kv[d05{SA.ʬF:V+g;Z!O;rS+ze! cYi+tˮF K;ˬ͡2[%|K{dѮf[뺥˭Wq5{*H1k5U뎿JY8d뭯(2; Kj%)kl]b;z۷&+R +/+ K6 y;{dj @LˮY j z(K$MJ[dk ۰<0Y'L?B BL ŋ!,&ZX H*\ȰÇ#JHŋ`ȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ -Q`ѡH*]ʴӔ@JJիXjʵׯKP˶۷pY[`m&4X" ߿ 8h2!` vKLrb 2h1c{#[Mi˞U0% MmK2 ȓM=12`cʳk.x恛;u8.}_ϾfyX_[1'{7g d߁&ȐdęY Vh Gx#eXY $څ$"dXy#!t(cy2!otu @ H$\*"LNޑEeR8/yZSFyb]A4fAeޙjUet& բ\ݘGVl6oֵvab)DaǨmviV O* 榓i䨤:] 4$eZj٤Q9=)&nꞯ4$ZԪB[IYdEa;ԘIn[}k -;Q˕{F~:[ '{ KhWM03funX~v(K9ؕMhc\Q(.M%y2LDsU'm̧:-iGO[@JݭUu9GmP"tؠn;(ldtV qy\6vd#-rW57u$lZYܕ+v~,9 P+Ҡh~oi>;y:m@",<ǃt_"8+=߿ZEk4 "'%5f&&i7.t'`Ū V$I,LHIҡ$"/ !Eu :H0bK\S;9*s!|2 }\xAfȦY"ffC..ߓHFi ׈_́&evi+B2GfsGE#!tF"T9LyI6),A(Ki$<rS_NY'n+ʪ@m,VLGPޫ SZO`fq'nE1 ZD78+x),zS@P:yN𴎛\-78wRAcΉMM -RǾ}A(T"3olWI*FT՝C[KQi5e6Mڼ(3})NVH6K4EJmVe[=uKEéঊς>ʥEI͏`h>tӈ] Mֆ5#[Vsnk?R -9דT! k *$)&f?:jrS+MX)Fu>*WrUU5c>#'kɝ$*^ʶ4atJǡ .z] Dvd*rY"baUB}`r8\w%u[JzF=Ȝol?J]-TcmSK֨MSOעSOZaA g瘆m,Imq$` LVmW|!_Uel p" VݾJSrSEsRqTv+S;#a?8ej)\%w9 R=6~+*!ʙ۟9E㻗L٣Le.2?jFo t#}^=;KƙnBئaCY2^j1Zc2Ӊ疋uE1ucNzzc|H'RlhEvemÂX ow-_rŊ}*f#"s"bkFgKB$z{SBBH(N5VE|2wLfc;2qN4JS'~P%)[G7 3!9M)!h{!4=1yeָI2B(G8auea4wr\ߥ jהT0:^e~c!jsrQdyvE(fxZ1ƒA4=<.ɒ!b9I!hV9g!h iaCiQ]Wb'g'?>zA!5=fa;Wg)ns1lgAa,I51oyBIIGx$^tV†lécYY%N) hT)w韓Y% Y%zE4Yf(h  gA' nd1TIv$6r$  0csn̵e+c%j! pakz*3du3&FdҡdU٦T18O'JazvʧZzԣw:Zzک:Zzڪ:Zzګ:ZzȚʺڬ:Zzؚںڭ:Zz蚮꺮ڮ:Zzگ;[{ ۰;[{۱ ";$[&{(*,۲.02;4[6{8:<۳>@B;D[F{HJL۴NP>RO ADX? A TOD ڵń[˵W[Yjkhs JU|۷~ةf*[ R@ Qd2bd +R 2I8iQ72)B N f`kM)K+ d[@[+HUỌ d/d[[! ˣ I!@⛸KPӻO`[@0˼߻Qa f:RU%R۫!bqA 'iH^$B [Þ[`FEA }E, ;M5NC\+.![Kß+dEd'G̣}op`f\{!U,Eѽ761 a,3VlE˹R@ƎKo'cq칠{ç>lۻʠ !,0PT H*\ȰÇ#JHE.jȱǏ CIɓ(S\ɲ˗0cʜI͛)1@JѣH*=NP`ҀIjʵׯ`s>m*p,ق>2`2!@ Kݻx4KAT IP0z+^̸R Zêqk̹M!542L ϰc˞}WCA׶< lٱ6@p% سcD5@nIC؜b Lp\E >Ut D'FhS{10~bW{-("%xۂ H0ؐ11BdSܭ ,^9ETE;*&B>*Ӵ nmgnY"n*nҪШyz+o]ٷDZ}bb -I pbOTq#(1ubi1];2NQ)$` s Q2:s|q5MSeVI4A*2V+s@ڶ]T<=lD}. =zԏK}4h܅w>-=Rl--N9lG5C*ݬjldkmtz#[j0ɩ/TA"^ںo{ǫѽk{#{U;Cj#o҃E&s ſtx "94!IOjla{69ƁщBb%'0 hE9I;c/dYwz @@S Ⱥ@Xx'NXsb[r$1=hd^HOđOƁTO`~b'%HVO6VdvbFN\\TRo1R]cC[ s’^}0DLZ 2Mr. #@ZZ?IĆ=w.$Ԓh"*"cLEs&ECIBU [CvrMF(dj,zF5h9 Ѡ$dAuZp\mjBX@b H)62:CU$odXTB k`˚SqcFX4hފio,EO,>K0a_zZS'lUz` HcE3 xjAu!{ɫj|WOuWNW9h[>[ns$w-gL˪װ}atQU׬VhIf"njm\WՑk]JJN"~9_Fwa#]_o0烛];9D!npC[)ń5P7$Lzu&*ZǂG6xq}_R 1DP"IJTN%dDr "_9i䎕)1Xe_lFva!ʑ-o>_zsa}Y$9oV?sq\eS+Эr-Rg_l*VHDM^%4#R.gEXH:Ɲ0R,`St5!ɋ-={z3=Ѭ&. E!jPdq;"O v[% >[BuKq}Q}ig#hx+ᦼE#ˏviv^ |K{t_YŕuB:ވ\.{hqg;kW|ؾ>:ˠ|3fB͐U =ng]FnΔ'm̈ʿ+wrjLeS⼔V]5)FvvB&UDk}9 L:E8^v#MkvRd z;WXZwDz앶wYVW|uM}XbwۣVOIF/M/ض*lO$݆nNGɾW_[Tǰ l\w'޷]f'?Oބ?WʡsG}r=5L`~w6XiY'MKfyCt {cmć} QG]7h%98v>&}Zf@2XP&9@/w7merwg٢-IugVl5t3:;fdU,WZEhW{g=#/"gVncwGkaFUy`熃gtw2k|#cӅa(au:P8Iba%|ڌ:GbNA17KP?KIibERG'@QY:Zƚ\ҪǺڬ:Zzؚںڭ:Zz蚮꺮ڮ:Zzگ;[{ ۰;[{۱ ";$[&{(*,۲.02;4[6{8:<۳>@B;D[F{HJL۴NPR;T[V{XZ\۵^`b;d[f{hjl۶npr;t[v{xz|۷~;[{۸KRK]A zI˭Ϫ *JzId[;[JzI4R@ @I`k[jCj"fK`.R`[pKRP2<'=[@@[ @@7&k+ۛ!* [[[ <[+¿ »r|[ q \'q:R+07az¶ 31\[[+ q[ ܾD<+# ;FK9ûT'[u;{3|ËKOܕ&|D 2l > ohABkp!KP\>+#L %(q@ $|U{_? ; X }7ܵ|Mϳ$ I` &~LX(==.aU 4HGRp S@RH,_c=hy$q аԅdiMEp-I'v&>݀+M(ڜǁQ!x!AY-9@.Dš;%䀘|Eum=g84dy J#1R.b'WTdH.h& XZǸ;Q"D,v '"VӄUqM¦*MmrC8{eYOKoaŀ,TejPJ0mkhE!z2^+XKY eCKTjA!W| L~%+JKPRe}= S*)E:B=:RQU#IUpohWrƫ&4[Xгz\+Q}J|Kʵ'Fiο9 NjXnjcrFv6@dyQFV} 9h4hI|FWZ7UU VX-k F}Nq] (4Vk 7Ydۚ(rl 7+Hjqx&}H]y*P'2 euO&ͭTjF~n jG 4Sd#N:ub5'AIDs |yb# rZ8pG%juw"=鮋YJ8nRRmS-OuLbp6(t^s4I4+Qz $A23Q"Z% ٰ?irIo{QUr|"%n8+5)-'ET焗eM' Z_LT+άHS+Z NM]\+΅']׻[!lu4oV߸h٧†`+2JWfme!gŁwlheĖlj7&h6HsXqVUԉ<|R+0wWLz?&DC=T>kP@j?)\Z|bQLj=Żz{p^:ւ7k=éUֺQ,;ٻ@$T7-@8D0g:)#?߻Nb#9~I;l;@9%ŒB%9 N>X*+81CfpדMBk7tkV4<jE{YSYK˒ D?pC8s$’ӏ!JCB<'i:}  FCx(XYgʢ<ʤ\Ǣʦʬʮʰ˲<˴\˶|˸˺˼˾<\|Ȝʼ<\|؜ڼ{@B=D]F}HJLNPR=T]V}XZ\^`b=d]f}hjlnpr=t]v}xz|+Z]~ "ۄDDMɤ.T$F|AFF!G]ADB i1a$1|Ў-Rl9,={ddKBkKm. (˴ܗہB14yq1AۖbލΝ6ɟ=]D݁EMDRF1 DJ;/Ȃ\H-;- C !K0D *,+ LbAD^ LK>Jv>,Ibn0-1.kI"b͝*,yEC|1D4v+!4Feq{ +`n2tN~.r|r+!ڿsC7_*)~D!tδ03N5Ϊ7޼t1\C@NI 8,~vALn~"cO#nq|&.wߵ ~j0 &!,@@S H*\ȰÇ#JHŋ `ȱǏ CIɓ(S\ɲ˗0cʜI͔ $ϟ@ JO ȤKJJիXS"Ȁ" JٳhӲJ`>ݻx ]݉@`߶M˸ǐA]ʀDLϠL@X[0ir:װcnGͻo;9l XBУ]Kνww{=3ӫ_57+kϾ.<3GrƉY zYn_vbIf8~ŴR j( BhL5!,]_T'ԇat8RXwTHDz@_O$yE6]<(v=iW!@ݨA Fai7Eޘ^%!EV"xIR+)IgP6zYq@襘$ZG&Zck:ub~mN&xQ٪{eg+"*-ZebwXjާdiGldkw.-V|y߹; ګ+0d|J'#fn*,qv;@ۯL+E߷@e,M-1;,q(<=ޙ,+y|324P7DS,^nwbEdW} CWAs#kk3agtq}UM=͗_n!8s5_ҽ Gvj-ۨk4ԩdkҾs b^7>׸e1ᖷ<+/{ȋipAc"3 H㎣pN3${*0ܐ@=hHF a@1 I('N!ɬG[/6xsWN2H${%mLZXp0B$'ˌc&>#z3Av=Qb+ȭwxefnt8I,71 bP 1"Kdx!Zb qE6/{WS8` ϥ&)R 9ذxmJO h:뎳O$]ҖIYkRTdVLu\$&Tģ:L&GVcR,sSOE JaaXɪب6o~VbR&G}Rj)J7uhK@Z=NuUfʹpVG5iHvRVji\LVGV)L|ͽ@ܲƖX"Rp Oi]iwO2MYc]WDRwԯVK'amp,-]VA6-LDŽ4g9=SٝS^N-㮶1a(ős`"hnL܁o _)(bSvyqOܙ=_ʞ.ÃY\-5A&\F 85vXzm';6*0U)Hl֢'YFiض]]rאA&CL6w)pcŮ"l4gٵ{ ,۱6JC5µlreg6'Hw&͠KaFCR]'d2KV3O֮qq^qS{ _wc󄸺vX{f}!w&OABW 7dI~2x%Ow^`?ԋ6TTG^]U;X =-,#xܝx7>=e&S~iK#߉ϺƗ֜gSl18o (6rGo [G~۞ KgӾVby )'§qe=ӟw~Tu@!vu}uUeGg=#Qy~e`upxO( _)MiW{ze ]Y!4IR!wZ0**hւr&!Iױ5& fCALE&'zCҀC'!9aa/f8~ƒ%8a 2R!#`x&%pvA2&Q~aa8a"!BNy'rI[Q#ہ8h7_;()pXXU-oQ!gD "(8[$(1;Hye0ZQQK1Q+&h."QH2Mlq=1zfoe-8=nA|Y%St+4gu9^mPSE y3ؑ*Cǒ.0294Y6y:<ٓ>@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9Yyؙڹٝ9Yy虞깞ٞ ɓٓyY z D  [@dS"J/2AN\@ddӗI[f&IF~֏oidxdT-aTeU)g~Iw^V璌Vjfrhe{be lʤsDWkj+$j '"(9Ȟa;6hgbEaٜbmse\!0^j;{ֻ-jネ;Et',VY*,bzZ[D<)s.$Ǥrܖr,+%i*,ur!@ ҧ]F7}Qq+zLe|) 5\U69̵sւLr*mS{ Nw<:1vⒾgcxFi7UEC ᪔22~cJ7ζUl^4K'x|yJrpA~y̾ʕwnc+ 1scB_,#")= NO\ a\VO*a8Cj[^s< ]dS=-tPhwOmAdK`¼)D_q700Gړ <~OH5WQ|4` EA=(سgx T_*meX̂bfîlV(> ڛ@.y*WKⷒ'Fx54bK`#8ZcGֈ,ɄE BkZ'U=jd3e)&wJ F7j[4}(y T@ `9B)St8Mq|l%9o:#^M_ު'n8(CH=eSe$\6*.Z%Y&7I($ UB6jvhJË"jZƹ)O`NT FTʝj)E-J242Dt"+'6+yEK%.盲(x[SaY ,4?.ȟVVB-щԟ-9.-u48O7A,2J' ,`Oso'Z'չ5)@iJ66QYV)+q tѯ1BwT\^d->vuUMZTGWjE[2 ^8*SSHEiDwp c%tH|UAq;ok.UZ[QVٗ}}T Z6FlO[‹0"k ̭fk|QSHlG\n94ԁV pŒ !Mf-I"_){5nE}h`75qPPd#;CՈoW W*}Q}P2HMs d`li8#يrꎌ)R/ .'ϬfL};kv嶜Hѐ8r[1.OwWl͉5n@0=gdN\Yǜ'Jƾukݧ`~.Bg͉-mt4[bi~jo خ6-k[8˾ͩ-{M(;c ]m59mLpZ4/^McMoZl,oMfoBq~[9i&թ= 0[ [U*y2rdصNYs 0 8bH0v͓#)SOjrλzzv`'~~{Ր>sP!l$|;vt]*];T:֏`Ox̏Twvz\i,^sdCz\zWTi~FDsO2,ϛuSdwi;6J̧dE> {t ^-e\'˪^1~Ng<CNx}tw-d'"o&-Ah_i$~hUG8y# (!y==gx&Gz4i"d6daR)X51xC$at:B}؂YE>vIpf[yX|V#THXn3AbHG|`HShȅKaf{AS,nmN!+fXoGx&}$ٖ a-LEK!bT"Th%vfM{vQR&7Ia}GjX?yqGBK rTEqexց)KodHB%Dε1Gv^؇H胣CLC.q"43A6芠~hh='GqrRGCnьPh rR)*ehHL's""I1 Dr8Y9<ٓ>@B9DYFy73HLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9Yyؙڹٝ9Yy虞깞ٞ9Yyٟ dڔ@ LYPɠKy jڠ z1 [P! RD)~@A~ 1 R~d 6 Md  kJ[xSRR0 7 Jʤ2*@S~1 z[@,/::뺢n3 [@Z?ZBʡ9%1c!,x HH!\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ:l!EfRn")طpʝ[Lx Hْ@YHDÈK& x $$3kdN\@B̺5ۊMpj 0ͻ $pBd^μyzHZسw~zKnrӃ )ȁφn `m ~h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`)dihlp)tix|矀*蠄j衈&袌6裐F*餔Vj饘f馜v駠*ꨤjꩨꪬ꫰*무j뭸^@R[Jjv_iyŽ*@&iY[z,@a6@{) {J:Z ']p^ox[5[qZXe:_` (gw ,$l(,0,4l8<@-DmH'L7PG-TWmXg\w`-d@geujL0 _L4@DKpM4A,vdx107K#3c,P9{S7_y૿rNC3>v%Rn9GPh9&>sS޲@=h|yC{ uN)?#_f9Yv@({l$<ۅ$o>NoQyIMXD"ȟQ/^M:Yz!&VkS8,2gpjx:8I.@O,Re w5J{X cƙN!܂i.Ә阧1HHGiy:ipWbg C@w;ic&n ! & <nDH!7Ia$BcIqPa[] SY/l@`KD CD4i*& Da+մ R OzE |ˈC&hK gfH zCz'͗FY}~H3 HO$aR$I7I1Os')pˡ쎞(y(F), lAtu Hӈo=]KsJTA(Ҧң$=6Ӂ0h=RAmULU-֧2.Ni(zZlY*vUK($"+!PB>@JA"Q-8BSH=V}_] fgLK(F^,~H[FAL}7RU)F3*`*B n?=Jꢍ\!Bj\aɐ5oBWj#m1}MëP.HJ^>eJfYf]af,]C wJI| IGW8LG7Qtp}2vSw8BGFߍR}_y~ۺ*O~x rvPԥbr[zCϹ{."uO G~#`Qu?Ϣ_kD?QC󼑸#B0\=@ʆn>ުg7R-&p:ErK(A G7&;GBY6?b739!Iw11T.ehw{7x QnlhVwe"zUkQGT`U' g wQ0bOބ~A;BJ=v3AxvV=s+s)H!vm/'@g: t'[=EsdIx (}6o%`q{MHyx:Q( uceՋņ)utd5wgW{sׂaWx{uCv]huqvȌL`j~0(rM$w6\X W#h b硊wkQGWv8֦p'dhZxlz'\W$n¶jő sv22Aw[gQU YrG!fyYi&f y#IfV:|6Jm{In(]f}VE}Q8J9.Gt"X!^x)nhb؁?je~l YlIq 4ᶎaBp~ly:ԙuxEIzPUx֚{ByJH/DI zziwIbgiYIIoQw8-V'Fcee{)l\:f}Ć*ÕYAI6 ]țQҏX.@ɓƝU)Yi)bٟTjYL(5arUoMUbhSҴS 9`i{!8|%W"nzXJ3Z%*#zHA~*c\`>py@Z#CZwZ|׆TJ8ZO:YgJZpvvU=)nYq:CUDaMFjøa]Z7ȣI[w>9C_%jU]*ޔW[񢪪Z%QzVw&τ6:mT_%y|IL;څʚh''6Ӣǒ_7gj/x;XMsڮӥ# S8&ǯZyӯiٌcsTes{e'e[! y R1tɭڥtg(ZsH$0z6&5HcHv jRit"@V_̤ ,G_''1}RDqMTwkg Omk-0Ǔk[`b]ᢷUɨ c{Alb6,ACv=1^.KSB > 0%D!2aGDs(KĽ-Q;ihe HhAg T7xct[vG DZzElԥg_J?p=d)kv8 ];kҺ\ L17X)B-1qc?IihZc9#ku7}@PK 47*kS<3;3EMzBF8Yrr3EnCC!`KBqB[|*]Ir %=Aõ#]e> )}S>]C̳Lr83}|=|b?zY<A9묔3CZ\@|t̀ʶ3: Dlˁ<ʯs$l™ fڃ:Pͩ4 Z\[r"3=+A< ʗr9΅3l ͤ8t%;,J@AL/u~ʁ́C3K^7L+ܬA9 #*SlN46u-02=4]6}8:<>@B=D]F}HJLNPR=T]V}XZ\^`b=d]f}hjltQDD˱,E]E1k׈1DtQw6śDTMىC[tDd Tٓ1 bTBb4ڂE^~ n$D-,bMaIc(Dޑ!G QDn)[u$dڜ1^xʛj")To2 kAK̂v"hR~'"E1]-QN>|HN #D31(\wP2m$aR9;~#1xA3{+^Ey2qe+y=L:KYN4{4bN;@1醭\{v~!LOpRx^峭xaK0&\4[,RpwHR={1ExQqIQ7n*B,e톍~!K1xa/N~*Nt$N﨡nR1x~?A^* /-]w,~MgnI^;Eq^4} rꑮ,?.I$nR @ɂhN.DD: A31ÑN3]!,+IB H*\ȰÇ#JHŋ3F Ǐ CIɓ(S\ɲ˗0cʜI͛8'ɳϟ@ JѣH*]ʴӧPJJիXjqׯ`ÊKٳhӪ]˶۷pʝK+ݻx˷߿ Lˆ+&jǐ#K1˘3-MӨS^ͺװc˞M۸sͻ Nȓ+_μУKNس#ߩËOyϫ_K-Ͽ[|(& 6F(Vh^v ($h(,0ƨg2h8<(>)Di5чL6PdTViXf\v`)dihlp)kix wM A֙.Hc6裐F*餔V$5`v*ꨌbJおꪬij*무j뭸뮼+ &PMluX>kmJQf{脚V 覫+kk1%L8nTILJ,90Ŷ5w ,$5%*r}D," `3ͦ11<@-DmH'L7PG-TWmXg\w`-dmhlp-tmx|~߀.n'7G.Wngw砇.褗n騧ꬷ.n/o'7G/Wog8 !,S!} H*\ȰÇ#JHŋ3. Ǐ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH'rLʴӧPJJիX ʵׯ`ÊKٳhӪ]˶۷pʝKݻx͹`߽ LÈ+^̸ǐ#KL˘3k̹>MӨS^ͺװc˞M۸sͻ tȓ+_μУKwسkνտOӫ~˟OϿ(h& 6F(AfvXV{($Qh&,0(4h8<@)DiH&L6PF)TViXf\v`)diDlbUm)gQ 7x|矀*蠄j衈&袌6ꨒ!,S!} H*\ȰÇ#JHŋ3.Ǐ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH'rLʴӧPJJիX ʵׯ`ÊKٳhӪ]˶۷pʝKݻx͹`߽ LÈ+^̸ǐ#KL˘3k̹K?MӨS^ͺװc˞M۸sͻ )`ȓ+_μУKwسkνOӫ~˟OϿ(h& 6F( Ffv(($&,0(4h8<@)DiH&L6PF)TViXf\v`)diAlV^m)gQTܜx|矀*蠄j衈&袌6L"!,S!} H*\ȰÇ#JHŋ3. Ǐ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH'rLʴӧPJJիX ʵׯ`ÊKٳhӪ]˶۷pʝKݻx͹`߽ LÈ+^̸ǐ#KL˘3k̹>MӨS^ͺװc˞M۸sͻ tȓ+_μУKwسkνտOӫ~˟OϿ(h& 6F(AfvXV{($Qh&,0(4h8<@)DiH&L6PF)TViXf\v`)diDlbUm)gQ 7x|矀*蠄j衈&袌6ꨒ!,S!} H*\ȰÇ#JHŋ3.Ǐ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH'rLʴӧPJJիX ʵׯ`ÊKٳhӪ]˶۷pʝKݻx͹`߽ LÈ+^̸ǐ#KL˘3k̹K?MӨS^ͺװc˞M۸sͻ )`ȓ+_μУKwسkνOӫ~˟OϿ(h& 6F( Ffv(($&,0(4h8<@)DiH&L6PF)TViXf\v`)diAlV^m)gQTܜx|矀*蠄j衈&袌6L"!,S!} H*\ȰÇ#JHŋ3. Ǐ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH'rLʴӧPJJիX ʵׯ`ÊKٳhӪ]˶۷pʝKݻx͹`߽ LÈ+^̸ǐ#KL˘3k̹>MӨS^ͺװc˞M۸sͻ tȓ+_μУKwسkνտOӫ~˟OϿ(h& 6F(AfvXV{($Qh&,0(4h8<@)DiH&L6PF)TViXf\v`)diDlbUm)gQ 7x|矀*蠄j衈&袌6ꨒ!,S!} H*\ȰÇ#JHŋ3.Ǐ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH'rLʴӧPJJիX ʵׯ`ÊKٳhӪ]˶۷pʝKݻx͹`߽ LÈ+^̸ǐ#KL˘3k̹K?MӨS^ͺװc˞M۸sͻ )`ȓ+_μУKwسkνOӫ~˟OϿ(h& 6F( Ffv(($&,0(4h8<@)DiH&L6PF)TViXf\v`)diAlV^m)gQTܜx|矀*蠄j衈&袌6L"!,S!} H*\ȰÇ#JHŋ3. Ǐ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH'rLʴӧPJJիX ʵׯ`ÊKٳhӪ]˶۷pʝKݻx͹`߽ LÈ+^̸ǐ#KL˘3k̹>MӨS^ͺװc˞M۸sͻ tȓ+_μУKwسkνտOӫ~˟OϿ(h& 6F(AfvXV{($Qh&,0(4h8<@)DiH&L6PF)TViXf\v`)diDlbUm)gQ 7x|矀*蠄j衈&袌6ꨒ!,S!} H*\ȰÇ#JHŋ3.Ǐ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH'rLʴӧPJJիX ʵׯ`ÊKٳhӪ]˶۷pʝKݻx͹`߽ LÈ+^̸ǐ#KL˘3k̹K?MӨS^ͺװc˞M۸sͻ )`ȓ+_μУKwسkνOӫ~˟OϿ(h& 6F( Ffv(($&,0(4h8<@)DiH&L6PF)TViXf\v`)diAlV^m)gQTܜx|矀*蠄j衈&袌6L"!,S!} H*\ȰÇ#JHŋ3. Ǐ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH'rLʴӧPJJիX ʵׯ`ÊKٳhӪ]˶۷pʝKݻx͹`߽ LÈ+^̸ǐ#KL˘3k̹>MӨS^ͺװc˞M۸sͻ tȓ+_μУKwسkνտOӫ~˟OϿ(h& 6F(AfvXV{($Qh&,0(4h8<@)DiH&L6PF)TViXf\v`)diDlbUm)gQ 7x|矀*蠄j衈&袌6ꨒ!,S!} H*\ȰÇ#JHŋ3.Ǐ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH'rLʴӧPJJիX ʵׯ`ÊKٳhӪ]˶۷pʝKݻx͹`߽ LÈ+^̸ǐ#KL˘3k̹K?MӨS^ͺװc˞M۸sͻ )`ȓ+_μУKwسkνOӫ~˟OϿ(h& 6F( Ffv(($&,0(4h8<@)DiH&L6PF)TViXf\v`)diAlV^m)gQTܜx|矀*蠄j衈&袌6L"!,t- H*\ȰÇ#JHŋ3jȱa CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴiяNJJիXjʵ׃KٳhӪ]˶۷pʝKݻx˷߿ `+^̸ǐ#KL˘3k̹ϠCMӨSDװc˞M۸sͻ Nȓ+_μ¡BNسkνOӫ_Ͼ˟OW(h& 6F(Vhfv ($k&D,;B 4 Xcd!mHЊ;I=RHL()d?[$)-[HG'cIIDfIL!EI"ŚtcQF)g|vo-siEcJ&ؒġNtn&/FiCwBen*BXj hYZ@x&hp***PdB?㊖lh ^))꭫V BmZ k"2,l' 7O'oW]XUX. ,$l(,0,4l8se@-DmH'L7PG-TWmXg\w`-dmhlp-tmx|߀.n'7G.Wngw砇.褗n騧ꬷ.n/o'7G/Wogw/o觯/o HLMB'-HIB $I EP2LI $!ERApyp dP ?H !MgDrX$M` fuM&|!K *DHŅp 5&d)vq!$L@ 2GqB6Arp1d!%p I"2I# !, g- H*\ȰÇ#JHŋ3jǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ǦPJJիXj5+`ÊKٳhӪ]˶۷pʝKݻx˷߿~588È+^̸ǐ#KL˘3k̹ϠCM ^ͺװc˞M۸sͻ Nȓ+_μ\ΣKNسkνwOӫ_O6˟OHݏힻ߀#&1 JRdh&vؘd(ņ"",%a!z]("Ht(b&p1"$LnbKTecGfϒUv)%^XJefaX=(7t(HebU&|&TB&f CYX'\)Dj*Td&:5=tJꦼKS,6 SZ~4 ЀVFF䊴*J[:ܲ+Ejmk qkZk I GJl1BJp/,2'l1<3t6Gsk@-;mH'L7PG-TTsXg}{MhԩLP`mhlp-tmx|% n'7G.Wngw砇.褗n騧ꬷ.n/o'7G/Wogw/o觯/o HL:'H Z̠7z GH(L W0 gH8̡w@ 1H"HL&:PH*ZX̢.z`t8!,S!} H*\ȰÇ#JHŋ3. Ǐ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH'rLʴӧPJJիX ʵׯ`ÊKٳhӪ]˶۷pʝKݻx͹`߽ LÈ+^̸ǐ#KL˘3k̹>nJ`"k~M6[dͻwtNfl)mm)μR伺uhO.%']-)ӫWxf߄f]~Aa$WM"G?#6f߆%PI8F?<ʊ9i(VTHFY-JiXfG(e^^~yPai&adyz&pq֜tک'Zxb'r%蠅&Jա*S6FE*)ei>i"iVh uhj*hvDInjOiުNd둗k>Z6F+?fv+k覫nE^ k,\' 7G,Wgb[U &!l(,0,4l8<\2!,t- H*\ȰÇ#JHŋ3jȱ! CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴiяNJJիXjʵ׃KٳhӪ]˶۷pʝKݻx˷߿ `+^̸ǐ#KL˘3k̹ϠCMӨSuH]˞ vlڸs}[vyNZÍ+_yrУOu\Fν;Qս|xi i|9w_1?.^vXM-` >(!Mhc k覫+k,l' 7G,Wlgw ,$l(,0,4l8<@-DmH'L7PG-TWmXg\w`-dmhlp-tmx|߀.n'7G.Wngw砇.褗n騧ꬷǾ[v}XD>ЭNІn'_݆/=TW;==Cw}|GO|/BP@!,S!} H*\ȰÇ#JHŋ3. Ǐ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH'rLʴӧPJJիX ʵׯ`ÊKٳhӪ]˶۷pʝKݻx͹`߽ LÈ+^̸ǐ#KL˘3k̹>MӨS^ͺװc˞M۸sͻ tȓ+_μУKwسkνտOӫ~˟OϿ(h& 6F(AfjX}($hbF,0"b4h8<@)DiH&L6PF)TViXf\v`)dih[)XmUtYT٩|矀*蠄j衈&袌6裐F$!,S!} H*\ȰÇ#JHŋ3.Ǐ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH'rLʴӧPJJիX ʵׯ`ÊKٳhӪ]˶۷pʝKݻx͹`߽ LÈ+^̸ǐ#KL˘3k̹K?MӨS^ͺװc˞M۸sͻ )`ȓ+_μУKwسkνOӫ~˟OϿ(h& 6F( FfV!X@|($hI,06a4h8<@)DiH&L6PF)TViXf\v`)dihk)Xt։T{g|矀*蠄j衈&袌6裐F*i!,S!} H*\ȰÇ#JHŋ3. Ǐ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH'rLʴӧPJJիX ʵׯ`ÊKٳhӪ]˶۷pʝKݻx͹`߽ LÈ+^̸ǐ#KL˘3k̹>MӨS^ͺװc˞M۸sͻ tȓ+_μУKwسkνտOӫ~˟OϿ(h& 6F(AfjX}($hbF,0"b4h8<@)DiH&L6PF)TViXf\v`)dih[)XmUtYT٩|矀*蠄j衈&袌6裐F$!,S!} H*\ȰÇ#JHŋ3.Ǐ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH'rLʴӧPJJիX ʵׯ`ÊKٳhӪ]˶۷pʝKݻx͹`߽ LÈ+^̸ǐ#KL˘3k̹K?MӨS^ͺװc˞M۸sͻ )`ȓ+_μУKwسkνOӫ~˟OϿ(h& 6F( FfV!X@|($hI,06a4h8<@)DiH&L6PF)TViXf\v`)dihk)Xt։T{g|矀*蠄j衈&袌6裐F*i!,S!} H*\ȰÇ#JHŋ3. Ǐ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH'rLʴӧPJJիX ʵׯ`ÊKٳhӪ]˶۷pʝKݻx͹`߽ LÈ+^̸ǐ#KL˘3k̹>MӨS^ͺװc˞M۸sͻ tȓ+_μУKwسkνտOӫ~˟OϿ(h& 6F(AfjX}($hbF,0"b4h8<@)DiH&L6PF)TViXf\v`)dih[)XmUtYT٩|矀*蠄j衈&袌6裐F$!,S!} H*\ȰÇ#JHŋ3.Ǐ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH'rLʴӧPJJիX ʵׯ`ÊKٳhӪ]˶۷pʝKݻx͹`߽ LÈ+^̸ǐ#KL˘3k̹K?MӨS^ͺװc˞M۸sͻ )`ȓ+_μУKwسkνOӫ~˟OϿ(h& 6F( FfV!X@|($hI,06a4h8<@)DiH&L6PF)TViXf\v`)dihk)Xt։T{g|矀*蠄j衈&袌6裐F*i!,S!} H*\ȰÇ#JHŋ3. Ǐ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH'rLʴӧPJJիX ʵׯ`ÊKٳhӪ]˶۷pʝKݻx͹`߽ LÈ+^̸ǐ#KL˘3k̹>MӨS^ͺװc˞M۸sͻ tȓ+_μУKwسkνտOӫ~˟OϿ(h& 6F(AfjX}($hbF,0"b4h8<@)DiH&L6PF)TViXf\v`)dih[)XmUtYT٩|矀*蠄j衈&袌6裐F$!,S!} H*\ȰÇ#JHŋ3.Ǐ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH'rLʴӧPJJիX ʵׯ`ÊKٳhӪ]˶۷pʝKݻx͹`߽ LÈ+^̸ǐ#KL˘3k̹K?MӨS^ͺװc˞M۸sͻ )`ȓ+_μУKwسkνOӫ~˟OϿ(h& 6F( FfV!X@|($hI,06a4h8<@)DiH&L6PF)TViXf\v`)dihk)Xt։T{g|矀*蠄j衈&袌6裐F*i!,S!} H*\ȰÇ#JHŋ3. Ǐ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH'rLʴӧPJJիX ʵׯ`ÊKٳhӪ]˶۷pʝKݻx͹`߽ LÈ+^̸ǐ#KL˘3k̹>MӨS^ͺװc˞M۸sͻ tȓ+_μУKwسkνտOӫ~˟OϿ(h& 6F(AfjX}($hbF,0"b4h8<@)DiH&L6PF)TViXf\v`)dih[)XmUtYT٩|矀*蠄j衈&袌6裐F$!,S!} H*\ȰÇ#JHŋ3.Ǐ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH'rLʴӧPJJիX ʵׯ`ÊKٳhӪ]˶۷pʝKݻx͹`߽ LÈ+^̸ǐ#KL˘3k̹K?MӨS^ͺװc˞M۸sͻ )`ȓ+_μУKwسkνOӫ~˟OϿ(h& 6F( FfV!X@|($hI,06a4h8<@)DiH&L6PF)TViXf\v`)dihk)Xt։T{g|矀*蠄j衈&袌6裐F*i!,S!} H*\ȰÇ#JHŋ3. Ǐ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH'rLʴӧPJJիX ʵׯ`ÊKٳhӪ]˶۷pʝKݻx͹`߽ LÈ+^̸ǐ#KL˘3k̹>MӨS^ͺװc˞M۸sͻ tȓ+_μУKwسkνտOӫ~˟OϿ(h& 6F(AfjX}($hbF,0"b4h8<@)DiH&L6PF)TViXf\v`)dih[)XmUtYT٩|矀*蠄j衈&袌6裐F$!,S!} H*\ȰÇ#JHŋ3.Ǐ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH'rLʴӧPJJիX ʵׯ`ÊKٳhӪ]˶۷pʝKݻx͹`߽ LÈ+^̸ǐ#KL˘3k̹K?MӨS^ͺװc˞M۸sͻ )`ȓ+_μУKwسkνOӫ~˟OϿ(h& 6F( FfV!X@|($hI,06a4h8<@)DiH&L6PF)TViXf\v`)dihk)Xt։T{g|矀*蠄j衈&袌6裐F*i!,S!} H*\ȰÇ#JHŋ3. Ǐ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH'rLʴӧPJJիX ʵׯ`ÊKٳhӪ]˶۷pʝKݻx͹`߽ LÈ+^̸ǐ#KL˘3k̹>MӨS^ͺװc˞M۸sͻ tȓ+_μУKwسkνտOӫ~˟OϿ(h& 6F(AfjX}($hbF,0"b4h8<@)DiH&L6PF)TViXf\v`)dih[)XmUtYT٩|矀*蠄j衈&袌6裐F$!,S!} H*\ȰÇ#JHŋ3.Ǐ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH'rLʴӧPJJիX ʵׯ`ÊKٳhӪ]˶۷pʝKݻx͹`߽ LÈ+^̸ǐ#KL˘3k̹K?MӨS^ͺװc˞M۸sͻ )`ȓ+_μУKwسkνOӫ~˟OϿ(h& 6F( FfV!X@|($hI,06a4h8<@)DiH&L6PF)TViXf\v`)dihk)Xt։T{g|矀*蠄j衈&袌6裐F*i!,S!} H*\ȰÇ#JHŋ3. Ǐ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH'rLʴӧPJJիX ʵׯ`ÊKٳhӪ]˶۷pʝKݻx͹`߽ LÈ+^̸ǐ#KL˘3k̹>MӨS^ͺװc˞M۸sͻ tȓ+_μУKwسkνտOӫ~˟OϿ(h& 6F(AfjX}($hbF,0"b4h8<@)DiH&L6PF)TViXf\v`)dih[)XmUtYT٩|矀*蠄j衈&袌6裐F$!,S!} H*\ȰÇ#JHŋ3.Ǐ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH'rLʴӧPJJիX ʵׯ`ÊKٳhӪ]˶۷pʝKݻx͹`߽ LÈ+^̸ǐ#KL˘3k̹K?MӨS^ͺװc˞M۸sͻ )`ȓ+_μУKwسkνOӫ~˟OϿ(h& 6F( FfV!X@|($hI,06a4h8<@)DiH&L6PF)TViXf\v`)dihk)Xt։T{g|矀*蠄j衈&袌6裐F*i!,S!} H*\ȰÇ#JHŋ3. Ǐ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH'rLʴӧPJJիX ʵׯ`ÊKٳhӪ]˶۷pʝKݻx͹`߽ LÈ+^̸ǐ#KL˘3k̹>MӨS^ͺװc˞M۸sͻ tȓ+_μУKwسkνտOӫ~˟OϿ(h& 6F(AfjX}($hbF,0"b4h8<@)DiH&L6PF)TViXf\v`)dih[)XmUtYT٩|矀*蠄j衈&袌6裐F$!,S!} H*\ȰÇ#JHŋ3.Ǐ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH'rLʴӧPJJիX ʵׯ`ÊKٳhӪ]˶۷pʝKݻx͹`߽ LÈ+^̸ǐ#KL˘3k̹K?MӨS^ͺװc˞M۸sͻ )`ȓ+_μУKwسkνOӫ~˟OϿ(h& 6F( FfV!X@|($hI,06a4h8<@)DiH&L6PF)TViXf\v`)dihk)Xt։T{g|矀*蠄j衈&袌6裐F*i!,S!} H*\ȰÇ#JHŋ3. Ǐ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH'rLʴӧPJJիX ʵׯ`ÊKٳhӪ]˶۷pʝKݻx͹`߽ LÈ+^̸ǐ#KL˘3k̹>MӨS^ͺװc˞M۸sͻ tȓ+_μУKwسkνտOӫ~˟OϿ(h& 6F(AfjX}($hbF,0"b4h8<@)DiH&L6PF)TViXf\v`)dih[)XmUtYT٩|矀*蠄j衈&袌6裐F$!,S!} H*\ȰÇ#JHŋ3.Ǐ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH'rLʴӧPJJիX ʵׯ`ÊKٳhӪ]˶۷pʝKݻx͹`߽ LÈ+^̸ǐ#KL˘3k̹K?MӨS^ͺװc˞M۸sͻ )`ȓ+_μУKwسkνOӫ~˟OϿ(h& 6F( FfV!X@|($hI,06a4h8<@)DiH&L6PF)TViXf\v`)dihk)Xt։T{g|矀*蠄j衈&袌6裐F*i!,S!} H*\ȰÇ#JHŋ3. Ǐ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH'rLʴӧPJJիX ʵׯ`ÊKٳhӪ]˶۷pʝKݻx͹`߽ LÈ+^̸ǐ#KL˘3k̹>MӨS^ͺװc˞M۸sͻ tȓ+_μУKwسkνտOӫ~˟OϿ(h& 6F(AfjX}($hbF,0"b4h8<@)DiH&L6PF)TViXf\v`)dih[)XmUtYT٩|矀*蠄j衈&袌6裐F$!,S!} H*\ȰÇ#JHŋ3.Ǐ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH'rLʴӧPJJիX ʵׯ`ÊKٳhӪ]˶۷pʝKݻx͹`߽ LÈ+^̸ǐ#KL˘3k̹K?MӨS^ͺװc˞M۸sͻ )`ȓ+_μУKwسkνOӫ~˟OϿ(h& 6F( FfV!X@|($hI,06a4h8<@)DiH&L6PF)TViXf\v`)dihk)Xt։T{g|矀*蠄j衈&袌6裐F*i!,S!} H*\ȰÇ#JHŋ3. Ǐ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH'rLʴӧPJJիX ʵׯ`ÊKٳhӪ]˶۷pʝKݻx͹`߽ LÈ+^̸ǐ#KL˘3k̹>MӨS^ͺװc˞M۸sͻ tȓ+_μУKwسkνտOӫ~˟OϿ(h& 6F(AfjX}($hbF,0"b4h8<@)DiH&L6PF)TViXf\v`)dih[)XmUtYT٩|矀*蠄j衈&袌6裐F$!,S!} H*\ȰÇ#JHŋ3.Ǐ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH'rLʴӧPJJիX ʵׯ`ÊKٳhӪ]˶۷pʝKݻx͹`߽ LÈ+^̸ǐ#KL˘3k̹K?MӨS^ͺװc˞M۸sͻ )`ȓ+_μУKwسkνOӫ~˟OϿ(h& 6F( FfV!X@|($hI,06a4h8<@)DiH&L6PF)TViXf\v`)dihk)Xt։T{g|矀*蠄j衈&袌6裐F*i;bar_graph_example.png000066400000000000000000000357341514602004300321700ustar00rootroot00000000000000taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/docs/source/imgsPNG  IHDR%2P pHYs+ IDATx^{|l6M,D.Q!v49UQ.шZWIO[+VŞbi뽍ZX *&$h0 Aɕ[H;?dY6&;;~33ʄs9m3N5"ox<?Z珟0y&&&* 1 @R%)1qꝻ:;:h9uĈ+rEQ姎!"!h\C U,XY,(Vctvu=8%|$hgWUUǡ(AZM"n'UU@}>C2vQ8OwV>uMzg&"\@lP} Vo<456껶WVVWW'%%{g3<3Z[ ^S^^almΝU?޹sIlXrQWWWj'ܕV_]i ŰL#\wٷ^եo|͞3شi/n%[WM n-7Wuugfl 瞛377K/Ͽ⦛qh>t7b[E6ck`:::.󮎎}cO'ĸ;GX+n~c@ZKgfdOqJLI@2$Y=mmmm2rH*< =ܹsz¿(#cq%=}nl Zvڰ~sk.𿕕ۍk֦MjTTl[o[o=04iKs+*sキ/]:iҤcItv ,e/gN=oڴ.>/xoi5tӸq\w z\ébD^ao|#'\k\λO?ݥu]6oO+777?s&''<唩STWWϻ<߻ϿpwH+g\uշ~/|G ‹/zɒ'l̙}C͋o~ex0ː>r0k ; 'v:ifĹF%2di3f9r-tXS<_uv4,<3>>B #r%O_"sI.첍v`7͝СT}#Genlv[,#G|WS ̷Z23O>bry}+8Ҽ˾paQe˖;V2$9..nWzr Hһah[ɽz"".qDU=55S9Ï>VxD"qv~q||0"]nnkůaK.w~zfڈ7onjjQ5 Ԥo~q/k~Ǯ%"H:ڇ9<}2t`%I>guwSq9s^zwf{{ (JjjAg}>d?g}wy]wы,SՖY}z_ryެ9s'eewoP/";Z%5...瞤,@Dʚ￵ٳgz/˻[o 4Hu7jk;ҳ:jՎq5.g{|;=ē>&"}YWHux_C i?F644}8-2JzB +sɓ^cz;>n|*7ߪ31bͻ<==jw'Zɉ?]wGVW"Mn=o |tuE}R7Νc:dȕW^~8駻N>TUU>k>tHDF5蔁}ԩS}" w8{n^DFyw57<8psh)ڵkٲ;:::]}|g|`M_|Տ7yH]6wn$ 7tۣy=h'f͚wz^ԸЗN"CN^r=*ܶGVWG-"rȑ¿=3l-!I;/W/EIx=R,"roRc__~*Ja(s/Du{T)Cxj_;=n+H[@O<eٍmѡ(Ȱa;;;UQTUT5jXETѡ\; DC?anQUU)1l !;܊*bQ,EQDWJm̓c׭3qEQ퉉= N\ jqmblw[@PE,,ǿ4sf@^ zmB4&RLthM2Ż\^^FOb1; 8O TGevsb+//OH訡Ob1; HbC4zbLE`N$&}TN`.30Uk >I_4fG5~Q=[`&3bi>I_$;W66!t MII,E(LS0I , @ ybb pObYE|wzΜ97|sgg+;;;???))vV(&`Ѫ#SRRϟf͚%K$''Ϙ1øi۽cǎbt:+++kjj\.WIIINNq 0UU}G]]\[[p8Sx۵ee٬VkWWwwkcosH N>x16M[GҏBՒI8 .U'zWCCõ崴c#RTdd;TETU tHEEEVVѣvٳj!DK\0VEQ{d*iÑ!"---֭[hn,..6ٴ9j-`Yhoo +~XƷD[.+++++vELjLbw`VE >^{{{烍> bQ,hzxv5a44ĉO?۷#/ړq?Q,IeᴿbЄyb|7&M}v2vg}v^{1cEٴiӫzW /bYrU{饗N6MQzkwĤ@k\)~Y]=a(hllܺukVV۷mӦMK./"QZZ:ydEQD$33_}Uvvg}wXs~0,s#JXt/ HOI9gĉUUUiiiǏUUov#IMM n:u/tH\\A 㐥;I|b{333!TUU;_n⩧RU[o6)--O~RYY$"޸q-[t?@8#2OB?;=Ev:;w/"|رc/"QUuȑ#G6u\g֦Et֬Y)))"6@_N{''C" >4}{?ENN/ 9OlL~@l$f@ x a.K{acư3 6Q|||\\@0 f:EpD|AjjKO{1y˭]v˥M9 f:~YTT :5:}ټbdff&}}b;>k0`ѵ׎3FQ6ꫯ^}ժ "bXV\jժ{^zӦMS孷Z~]feeV)"_]6m4w\=rs9W_:u߯ow;]]]+W;׿?x<5$=GЛyC/3fHFFFcc֭[s鮶}Eٴiӟq]|Aii7/y᯾*''ϾE䗿eMM۽`obX,&*̙~{̝;755fy>lvvwS+V뮻VZӟ P<*1%LQ2EZ??S_ScKLLII8qbUUU}} MK5~"nݗ{ :ujiionݺ򾅢('O~WZZZ]=544흝E7>f?܇za$c(z<{w?~gK/UUc&N5nܮ>9IK(Evlݺuԩ_|o+"צ>c[lx[ ]Fmmw+(..2e~ޥu]w_SS}gqIc@TWgff:?\DvWU3bط^|QD.**z)UUoVmҟ'MMMMMM"r7nٲEjoodر]kjjTU9rȑ#Mjkk].ٳΚ5+%%ED7TU>˳lv}ذaǏqyWxiPVV_/ԟgv0_5ǐ'!*򨱭_-ܢoyᇽ[uS kojiioپ}{ϲg>@]Gjj=s^!IP]>L8+V4vű"RqFbOp11D$+}/>S~@zLbVwnq8]wq% h$"v&lED?3NZX'1"BccY8 mmm5>0R]-;ApE˓&MZ`p|OЦ"JE$hhh8@x=*J f0I܇ jc+:$1(鳻Q$8ҿ?PX'1Q/\Ť}8&ePtLuOPG_>>C?f0I2> =$Q(!B$aQA+0z ,`v0-cP\@oOG_ }'"IT^^^XXvf͚6mZbbݻ577{q|q8%%ek֬YdIrr3ӧOn}]~^zKINr{v[ZZTU/|N[u8ު*9Yf{@8Oޮ-\.fZ7.\0;;-E7 -S@/{h#[[[m6l=7E3ϼK/_޾`kJ [|N744 >\[NKK3zN{wᎎ~ʔ)Bvp|$qEEEVVѣvٳ냝Ngnn455M4I+Ԛ:u޽{UBQ xI閖u-ZnWVVj5Y###CD|;SQtp<$0>XD-%%%%%%"I1;>ƴk8'@0 x'Z$M똝6HbQ#fk9vk_+}JU~{h˜3~L|ӱEE?'=It}6}{D.(c KnlglBN[7ؓD<$h. DV$b pv-8oO0'tQmS;Ǟ]`&3&SE08I"Zoup4v= "^oc0; Hp cOJb.B<$f%1!0Wk//q =ID }|P= $L$qZ@cOy?9 xI=?B_;@$1<$gp{D~Nbp 3k=I$ }k9 xImBN8f0I.VIDAT8 xI"F%1v= P%1![zޙ, GyK_ؓ{$_$QUET 'OW1Q<$V'L$1f"Ôv :$1I1}D%C4lƶcc~8;;;???))v{Lnݺ-[{*'xh#SRRϟ#444x3fظq~\|Rr@ߢ$Ӈ?clr:555.$''Gߛp8{9%"*Y; MN[u8ެ?G?ј1c׮]ب_*NCSBBB{w<\.fZAM4_~9wk桇zcիW^=^TPk_q}inx<={ƍ/첸8}IW1tP8 {0Çkiii} 4H[2q(?$=zn={vә+"۶m;3O?tŒcE[---֭[hn,..Ñ!"z,X0x]v7l#ELRRRRRR-WUUXBߋ'x zahhG~: +I,qBp"N`&8"pV%1EǞ$8S} ؚ2e.)""GoOr E,6#N p/' G bf $ (du{MA~pCVAanl N Yil$,m{B7!N'1 *$1I1}!0I Hb鼼1}8 0Sk > 1;ckH$1Qe&MG`&3)\Կ|w/[lС3g#NgeeeMM*))ܹȑ#UUUiii^+>pi˵viw68Oޮ-\.fZ]KNa6olh_zwQYTPmz>fiv_uU<򈾘KS]f(cvarZZZ}}2f̘뮻OSSS 8v2|$qEEEVVѣvٳ;u8\IOO|}l6---֭[hn,..Ñ!"s:tŋ맣@,m)r-Q{+ W0qP1'\z䶥CSR} \蓘'@7ʧ$$Fx%y!+ Q=I_Q; I HbDU+ lbRczC"IUL4ۇ`"jc>B_E45_"Β8iLc9| [1J=uӐBrX1}H0S蓘$eZHb㖇c`$L.ST}U];G' I HNA!0I B_ \蓘'@DԂ|`f8h(>y$1f"0I Hbib@OiB\ 1Ibv3$L$14-j@mzhd> pN`&3$`I>1}v\蓘dIII充n۸L)))_f͒%Kg̘a\R oNbYYYYSSrJJJrrrkrN?{Ip8Zql?".@o'9 >Oޮ-\.fZ+^ڻ,*( RF==Q+'Z!RzD+Ct43r:[[[m6l=>EG_w1BxʉV^ѭp5H|6zgh`VV8tCCõ崴c_p$=zn={6bhz=;ҲnݺEb `Nb)+++++3;$O/IL^Wl!Pj$8 8E`&3)\@ $&}VjAm`' :nlإf˘su3 @IÛq=y:mbkLd j5Ӥ/8,K|\RXvn <q\t^kwq%bD`&~xQs!.b'$&}$L$1f"ӠcOO+//^蓘 pN`&38!J-Y68i eru@ml O p֐OI LdQzX\iY:[ڍm0 L?IUL.ILF%UETjN/HbD`&3bi$&}`!=$L$1f }!'h$>YE3"<@ؓeMMla1 D8v@?^9nOJJ*///,,tޮS*RYYYXX٩9(񆎔Yfɒ%3f>|^lСCgΜ.XiYYYYSSrJJJrrr;w,**jnn>rHUUUZZH;daq8uuurmm8kvݻrZ XJŞ`v<'].fZ]]]Ǯ%Nsذa7o6^RPP`h(B|ZDģXsZNg}fi+v3ǏUW=#b. @ ?~%LEEEEEEiN;4m9--^[3fu]裏655@8O\QQ5zh>{l`ә+"7xO>o>=---֭[hn,..Ñ!"s:tŋ3 [rRcSzk!JS>zOBpc>r?fp`zܶthJi?A .IL8f0I=/ 4,7 ""*D^Dglid |W1(EJB/d"}c5P*-{Y^y_W/-~c{_Igl_ez_Wo~]w_~Jb}WO{^9 {m0 ~6]~{O}{B7^NJ+۾=!] ߼zѕLkuwm?al K(`YN)+v˧Œܶt}mp/Ȁ &:tڸe੧jӟ^tEƵcԩSZi|%ȸ{Ə/"h_|y?o޼nɸM S:_J,}%o[la7;s΢#GTUUɓx㍖?''ǸYRUu~'g"2y 6tvvn߾qĉ-c9vwޭt:555.=ݴF~\x/~*"ȨQ}38cbOׅ^oJ}%.N;4m_p8Tjڦ۷O몫s8ǮN9唼{;3|ul|p\r6+GVVfۗ/_>k,>|qcHzz+**,ʿNsذa9vrq8ilٲ'xBUUKD9oLoׯonn$$$?`6jvuuyWe͛[[[G>_ZIIIFZr)x={|~m|p}%tL<~Ofٴ.y1~vڂQF]"b;:B|wt:KKKߘnx7nnwIIΝ;u[4r%ze߾}=EEE_W%=K%X^M{Nkin۶mzTܜ-=. [6G6H>Hrn_q6^|R"Qz˖w[OYM/_ZMggonr:Dt-7G']kLKs9lyM&ӹ眓flaNHDF!h B.:cUJE{.PeZ)aY"Q1d:w.!1}|7VknNε^SQYr/m۶}[o<-&"5W"淿#")[5o^9q"HiIɗOҳfp|ߥfk??/xNYs07/FssF[flMzIC%yw7/ _8 X;Q3atzrc JV <d` /11b j푮zӌFyZZZvyG;yys}5QxMD.[z*;wZ,T]n(efdQzzZNN·}|>`Σ~n?H|%g Ð(B4pEEE999  C h4JD! /Z|2ZC$zQ=6(0я8dOS&j.\xM7=Ʀzw~_F) 7o~%H|\ E$vpGy;41>|M(Q7sםwx<?)`6Ew G4qZ322>rDw~yIIV0BAqqVi4a>A`:H7el6; L"3|>_(R( CCJ0JHrHOh4rY,'?{: Qғcgtv0%N~ zl6X0& HHH~IB`b ur02{饗ʋ`*LxiADHH~ Y 'E>|{@2$  y $  Y $ $?d,X\`0<@@H"@@HH~ Y(3Z}Zv(~\ L;Y3v 5Sv7w֌O~WfefAw]45᫽8_7,&Y05S`OxAfΚ7f5i鿳ʚA))4_fi(ˊ% izJe;k&F2,08$ΚftI?Q0f𹽗\rtcH.T|w ^^xyTb: kjZ|_̦5#EA:2NRtC!$/(Vi`J /B/B+` h ` /l03YD0:y) n>P$/I7ԬY34̀$v֔k `Lj“_G %3DxцI KC§)d38M䘊=ø>P7KaRF25;} !IvV/ N~C 0 fsP7B[ b&itgkjYfL0ڑ䇝kW{Gpb[~aէ(LI-?oMC(Z}dfǏ O~0RT0mT&opFhg8/%Qtq1-?.0Fb[~tH&hL8ъb@^:VN ?%H:E^ lt; ffI|w N~0F60jG*zy)LS֏ԌYR`7 MLRFFgqyeffvjycڵEEE$05j}8`zERЌ33%O{ٲeDkmm7xC+`0(JADeڵʚcM[CVݰa[o}8#+K. ~O?Wv0.cJ(555RTK,QTG;J9>UA`0Vmێ؀'{akm^/1QMg0f+BYYYVVjEFFG:ya"X:9D^edo#}/Ԩ;¨r7 O~# =7q#G8nmmD"Vjll!%%eŊ)))^wϞ=~ڵ*jݺu6mj޽fgg/X࣏z283oz%%%(ٳG*,Y"bEE1 sgo۶%K h4ZQQkqW7xy":v{CCJZrezz:566VUUnϝ;XTvuu߿?LsZ >| &OO>ݱcG Xxw- ?xL)E",[[[W^]YY)bfff0tZN3''gٲeR#ݍD" ;wT6lhnn=t~~~^^.]lٲݻwh2";#EIqF^t}N(v9wvvnٲ%55uݺu--- Z9++kڵDd2>,=瞞y~YI&haDƲF@:il {j2qk7Îyn;Сcc'b0T*F㸦&"jjjZdZB?~l崻;av(ŘL~;vmmmEO(33sΜ9*DQTq{yz"2 RVR#P(DD |>_,bcwnwv`!x6f쁈HDKEi"1>Èqk; È$֞7qÆ? glFe@ [5gΜ۷rꛮڈY~Bf͚O?ppw97#"Z-]bEGGǾ}DQ\nݱGA8Fp8GKOOD"^WNgĺKBRyl#6H4faegq/ޮRWL{~=?7 jD 4Ph NSeYMKKNҔNn X,iϧ+>F܏SSSa顙8Dx"HiitR)4fXbQ/o2`0HtJUSRRRRR?t[[[qqFaYvܹҀZ,KQgݥBM$0 c2FTx RׇBH$;Lڹc~]; Ju˜`gM1mpxJu&ʘvS@1;>yp \/DQܵkŋyZNgRr)fNGD@NvrIcW\/yDvgKU555DV^^.5 ׯBӄc(b0B$LC wVuutC ݈^AA`H㲝eĸlq4.9ީR w+ ?c\6nB72N3 JHdt"]Jjy)Y0&z"I~LV9++PyQal^^Aq1aY"jH?3Lq83c(䥣2CAB㵅kȸlq4^yQ.g[scc}͐t6[Y})h{ny "|4kGC?x͋F *J>P(EA| +'o+(Dˆ|p$d),ˉ38x.8h^+hLaX6~wϔJ)3;3'WP5L,tw{#ȲUkCtZ=ClBc CyŃOhGkiOJK7ɫ`b|1R:qZcɗct:lY9;7s~R|=8Y筝 ff*Cu^MD3}`vRT_9}VaA5lkolg“ӳy]*:;0EfʱyZ^m6Lwu{OK^q믾ÿڹkV֞GMcS3^|7'jeKBò6f2VY1gd{[w(^ӝc:o|ߖ&`8+.}gm}罷ɖ7WG|ͯoW^&s6L`8m$?|m[?߶u;~gXon࣏9u>'`**U O>Izr^rQU/dWZ_BVdfkWS(h4QSf9FLcL[ {VZ?oj/4VZy˝?عkCA̟oǚ]qŏ!"ͯ _|o|Ěr> -Yٿ7g֬>.@wm``EeiIl~~DTX'+lzR3O7%ߺP(1==77uO~dgO^+^uť7넵k$R*7|;m|w7OK{~woK/-.2I&o]xE ?d{| NIF7&o[x$yHvŸ4wf ":߹{"ڽ?@D}˖.N+6]hӇ?>IH:$Rٶonii=HD}+瞣P(8+[j⻜zɅ*ʔzZәa2,Qkz(ZUƷQ*K,fY6NeYsn}'?jM777a=*on+22L . '~tJ+zJ2ygtv+0 SzT ӇlmG)AV#" {=׮][ZZZ[[uVRyvm6M&Ӷm۔J_/DIJ,˲cF# g޻mo\7DiMn{] Bjnݞ77UVmDͿ}G}\kw8n;nwG@طDb=wa4z{?%õ﾿\z5ӟc676I|n{%%őpGO篮9m/C?+/vWro8/=F^|i̽8-07CY sffFUY\۷o՝---D4ouy=.KA`HbYY|}vvv$[_LO`/33s۷o&"HD<݌a،Qz;k4tUH8 X+@m;>ݶSy)&+W~g~_*zz^z"A`&+עOIumqFK7e3y'# /g4W^g'MS^y qwɫfh\ϿvO#+ϟ?Kވ DZZ[kh:ty533AxuǭG?_<D䍈/=^zEg>._՗~c*Us~N:M]sY}wߺd ytu`OWTڽg:}H ?. 7g3O6KmO>uwD;o?TU}7t>p3cO{̙Sǟ+.bcɛx҉',^755˫fX㶛?n&R)NfK7xw:] ŀ3_3롟ٿeΜRy5L6c߷.f[[o#Gryu"8SWdܼ {rZWyN:y4(P0Hr! v[E}S甖UVdF^7py`Dġ9\nV='̘ 0(2 >R|fJ1 Kh" &M~ҙg@f̘^v}a6aWq)ct8ѤDG{p+G]80ݔED.^"bYtR>|2w${>Z)-_r[kJՂ+ښm֮򄵃<Ɂ6ڊ5'48l=gdr,Z?eefr N' >b="qyr?}'wZyp7\Vϋ/϶uzlۭ}|߰ẊUGl pBTCAKAQ~qi}!Z_TZWS Jg嘻;SivFT/\}^4NoH5W^Aq$>o!X<ݢ(*B%#ȡ{EA,-chUԥ $۬{wR\Eѐj,*) ?]P<' K$n4RDbWօe9>s V43srWF#E憺* Jz9 D2W{Z͒E:뮿[nZ{v%_usse/nmNǕ_*FZC(NM@Z}^:LDdpجχϧ>z0s:ښ㇍I3et v:¡`jZ:)H8<lkF"<u;Ahk;WA{[W}D%כV WsGUR'p)H}KL$loNZ!""p4!"˲ 5~~ wu'?"zᥗ#HUufypk[[CcS^EnZ[?*,, )RQk9`/Ŕe:],ZZ .Go#Q(,ˆCAn0PDq%+ш1 ?5(Q(漂ؕf֑R'%&8SkKVYbuQ\NxITX6+"/,Iha0zIjҍ(u\m*YX{zF@SٹyUeyg9agzK~aҕV7j*+U eY?boMv|aK^i{N3Tj)Ҏh$+ MDO2$~CD"aRUXR_Xtoc͂Yv"E^XRHi{q&YW0L7 .qhHNJlޢzLh4*<rK9%57/5r6pLH~cP([r!!Ebugf禛2+Oޠ/$"bHP.Y};K퉈*: ICy}30 #BG[s:tڪX\d"b9Θ[ dmx slTFykWX֤l=\c[%+s0if  9٬]N]4(N͜_C`9O:֔m?\)JE[niJUZb4UcYs-MG )FVq9UjZyDd+WV/)tp(Jm#P_2SyE%~fh漖 d ˲7ސ|0W(iźh:"QZ> TcS4SnHI?!UV?q1ߪb:kۗ]yt#nվ~.$,i.T*]MG/d9wHT-^Zjj*ba{)u͙dp0Ba+hu(xܮƺYsJ`I$~qh4EAyyVbLc&am')z$h,(uجm-]8"TV﫯9$],X!& 4rR"n"[*rLfvnTS}H^3r^piCmt<~qG1,#]8`,B`1]^ ((,Ru)D>ڳ{:dM))-sD̘C+n%qNz>"0+}WrKMCH~c36 b!MKK R^18 A3 &;;K^GE ²Ǿp ȱ%`8+/KP,.BH8㈦~i`M}Ɂ,@@HH~ Yz~ |TD\r˲3$GYSU ~|>I'E X__ i/pH~r ^.kU^W1uNiYeAq~rXpZm8t3c/ӣ h4KFJ^")O`0 /Gʋ&7Igr|Y23,`c9.ŘNDC)1bY`LgXa91eX9s~SasVET憺P(HD,sAS8춖:Qm~a!G]mX MY_/$"N(.-7F"zEDs,6=ݝ-}p KAa)\N{Kc DIJlQ\J}"2ed)HD|QZSZ崷4I?"Jk?v9(ۜWPߠ!!8.70=#c9X hŚbk]J/LMKo >$b="qyr%9s̝;wޑP)++3͂ 466JEEEYYY (6U>ޓ߻N<\Nŗ_+s0OB"?7?-)m]Me8R5Eu5`l~V=՘fYkJU%>HTcZ߁{G"vRs+-B:/ P?Z>:WY9VJ]Z@ XQI|av(TcQIY01;b̎?3.V( yzX"bYFj*G"ܼ9UJe4e9> 1͔maqB~{e|J˲+RSS sssM&ӧ~gϞ|@DYYYFq߾}3i%u]mܴ}K.+.3QCC7r/޳^KDOw'p:yLHKc}(EiIHK7v|WG)3]UP0GO;cxNG[s1iVANG8Je$hquD#NVKD tX[FnU~7eG4/_qáڪ w|4% wF"a"r;j e$G9Pܣd嘭]4q&^_V(VΊfgg777G"H$Օz322:::h4&3^z9TUWl77546Y::;+*IͶKD>=hnNiCDj66g dòVkkVHJ%˲PP j-q` e>oksCLސv9(6Cjj b3?b4x\{nw8aجlsmuw(Kf%"kD=.gks%?XVWkrI7T76n'-~gffV } fK7|rIy>*MR~o}*R~޶}pWcc:@VgV$"ec|y8ab-E.] .ZޘnܯT%:8ey؛g쭩bn2 c+-_Pu`o czJY;#@Say~LOa㻨Ԛq;uashH$T K K9~\KOwtwq&YW0Lī ,ՋFJRV8m%|t W_q~KO&Vfeggfu\sH^Jlޢzh4ʲ_α\RN9O757u憺7"CqŚV9lQ IDAT^4co,Iш(w6+JZm+zefWXP[5ȻDydX]Rp(g|r-.%F"ᎶT=Rp`MFDqc3ɔeZY=ӥ¬[nOOO{g?Kc Ŝy ;Z\5P07H5Z]tSf]u&tzÜDD )%+ڿov=Q^VC!i(""a:ښ EsVIItQ^HJ.GfOykWXį2̱Id!3'E#`r ' $zMI+@@=y&^l7O;^nhlܻz };@r8nμE6kig9NZumiZlst )3;3|J$b9eY[/+9+m\K˲tVq9Uju1eYe-E~W%eԆB!)׎BGh%e|V}l/Eku:a6  )ZaRe/6ZK@D,ffO+&` I:!#"quvv(ܪ*"Zv9jZeW^#ݸbon~`6$,i.T*]MG/d9wHT-^{㪭6eH]R4gG¡~;vܹs555Ҋ-8y~Qz{1,#]m`,B`Ճv9 cwT]J*=񱏲%x);.BWRZt9!lV~Tccccc#ϓU9}WX# oz=fy9nm .0 b!q,Za Ò%/#?hmia49Xyq0P(Ya1@GQ:K3h'L$?d,@@HH~ Y $ $?d,@@HH~ Y $ $?d,@@HH~ Y $ $?d,ŌI~O>mٶ-o;\MDǝqivqlTiɜ_=r`nNvjj*^uYgλ[5d23_ffωHC#-omz7;NVo‚on[V&|JtZ*Kyxp:|P(DD6 s~"k~l V[P  Eg+" e`c+4J\2xE?f45J?׸t:}Ǐ\F _VVm~?Aڽ/''ڀjGuWy1t05~]=3SSU sSR޾}G 0KVP#ɿ~QF$n0J2߿_CMQ|Ԑ5F#t)KKK}}+w$&葷o 1r>u2Ha7y* 7* ѻW!AGV;ݍ =pЛ׮B?ASe׮K>%\ ɭtX~};y٨`RG:>|Ԙq'荷2y'N\bز}gڷos/>ʼ Yn×/_)Û%bvu豳/^8_{`SMԺ5.XlhbckmEim) -403`߁::5| +m~#t:mn@=AWCmD;n!FȌ9 V5uȼưc vsw(gϋٵ`C}xT{9v38.[ :_zg4SݻK eiWT\թɓZEo `!?URZsca!c>{BV9WXTK 6[C|<˥thz|K޼}}׿4˗ωm(Szeddp8555JkUOuڷos2nپyDž6']:kY~Yy=VVV"S CSRRڪ 61&N:2t wׯP: :$hΜ5MѼ/xȨhe%%:^ շ4+..>{ޝ-.n3uj-}223dlq 6;=# gP$q8""7<f UU Y3É:'?++|rr\fd#,V=e~gOxӊetz8:.9x2Geo]u=zpqq$\ό1?U C?~JXtxKL(r22 AU!s#?<>pt:F[#ە c6zFͷ|zz(+)efenDhJ.**J߽Ϡ3FAݣ{wx$W=P}jd3?xupȵ䔔Z~ q/B{{_񋈌r8!^n_B#.^z#e˖׬yjonܤvm|Ġ/..{cc+.]Ng/?&_0N!VS& x_ܱ5v_D_ʼG#npөiiĦ}~왥Vns72|ʤ}Qe_UEM^컷-nU‡PTXPZZBVѢKM >=le7WNC3a5Z5dl @k8LP6~30&_CfqLqj-3a?o&wƊ!BB!T78C!j.pB!\!BB!Ps3?Bg~!BB! !B58C!j.pB!\!BB!Ps3?Bg~!BB! !B58C!j.DB!jlj4 ֦B \B'IT0WTsT^xA>kǿ/==B5DVVvQq 5\jv5\xB!PsѰA bA0WTsTݙFk۶ݵ wε=U5\5j~wвe˧Ok62fFy;5Ҝ\jۿpk#bݧ63 7W q,-kjسv57{\jj*)..rfЯ ȱyyߩ  >5]}-5>zJKKSݙ***"xʍ_}^ znld@6{/^jGIjLneV=K>㽨 ڱ5=K sO?~zV7L :ztk8+*4W,]RJAWoZTSC ܩ/ ESgLm!Ǐi6V,&?`nܱ݉fFnvfPWWUt֚f=55-uq~A}t61.*.>p{`S&MNMuǮDž =-<}vǏz7sUUS[tjrJ]{SR`,==&իvL4AJRRCm]22?kic&`gdnܼblZ;r[Kv钚3OO]%cֵN+>'%Z]sh!*݇j61?`0QPefF8.[9FE ;[kPjje{07jȵ(H1~}N9nf)! >bcyg8Mjm70M qr5nBlj cnjvZ~)yy,-(M[߾{?r_6W/_SNrsf8=wt˖M1f=~򶝻SӾ:rͺ)6veee 7eV#CFB\\qӆMRVMmݸIS:Ħ}3"E>wm?BM q歜K:oxk7nuڅ  ޗ}K?{R$%'׷Sǎ)/V?PRVVC|NNnPpHiiׯI)["䃐733ʢciLY_rUPPxf(ǻw?F^xwǶj݊}[z:AjHDAa^Ιis~.KYg9?;gWCq%Zdd xIAaaiiq?oٳWFMש7?~9d~pd]VVkj؝z>YFNMK+..!.ׯ*mty<^Ouiwfddfgg3 '&R:4%\r%+;|pDN)77p\:F^cn6za QQKRR>}J\[Ss~dee[JIy_$;HJHZލFy9[׳*>f\H#`2i6Ozxz EX,XFfjְKILLZj?fݑND߽sX@il))޽{x<CmF,U+о|zF) g(_o 7v̆ufljbZ} xԜN0nYYYNBG 'קw'OUԤԜ܌Li3씕XURR0k?^f㕑s>y\S"****))IMM))J#ʟëo9ֵέVf6~,|Ç?ƙB1TVVFTTtʤ dٹvҙF j o߽Ǐjj*"""4};Mq ZQ"TtFFfVVN71,C\NNnivh"&YyP3{7\DDDDDS --9fkO1hobb-Ǐ4Fݏ2q`ccHukyyHJN)..iBڣc~ڸwvYGOu_SؽrO֮XN>5Ow@PvN-4-;'{ԮU3+!TUU`AW>>nڡQG6<oպ KΟig[VVv?Ѷ/[~G&CDte%ҲDs̝=s9[lIeϯ>䄸iYr.**r虞N=[ʾ{HeiT TR5~;^q+N$h9A\Mm@U`jsU{M5WMuj/++|PXP ή{4:h_*fܼ\8ۋh45Bu8C!j.u~5kP#r:j!*ajsU{M5WMu5GA\jv5d k旜B56=nsU{kjU{RP=kX3?m]=jtn ŖۃM)+..6!aL檖0WTsT6LV^n k栆OF ޔ쏐CSuj&DA1QjpoB!\EpnJOWWNN`0fݍ!d IDATxDžjjd[!W޾zqSYI \7m|Q{wtaxm --}ԉ/h%%~'ЛGT`ÜK+n_ 6~ !p4_pp^rb"g3-[jjjZOޫW6mtv{et鬕5xp}#6mM範frZƏ]픑٧߀M['** rr7Щ]NC DEEֵ+QQT"5-\-[7o WaB GC:AsݴOr8e-n]lݽwuk ;kt29vqlĒ=#""ijV֭Y=ޞ>lH1aIIFBoEs\joή8NTTe_?{k ˌU\!5~jolbl7cֻsBy  }K٧OH򱎎vv֬s3k&INNd&'O?|WWW6[bۖͻvl>7>A|| !Ԡ4jbTTTf͜9ad`2|iaCMUUU.zyڸa9s'1̂B|`!-)-562<6ļ*s acʪODDX#FLPPPp?{zsRR2抋lvQQ1x@֬jkpirK?'V)233 M8KM?~a7cxu^"TyK !!T#LB`H;sad$sbv嗦X6?~=zݽk9Լys@VVek[d+|]EE%%%:tho"s;?X-+PE#pBEh4 @RRً^7ob ǏOo٢Esf?},;'sG\lyrr29z(̾Ϝuf#AW̛d2:v , ;ki"- v ޽{mrmvARUsoMdgn6%L&V.ZZgOFÔI,O6xi^<E9|UNb$%%mcFwuqҿ?X| qOX 9iӦ%/~Ǫrssu8C΋P!aϟ!77\.V.w>GSǏ-/[ZVV6|HͦLк 5|[D jïkNs:+{PP߽}EKܺл?k74U e,Kď F 7ݿ$$%̞e:xFc׮ҒRd0w8rR#'Z'WUs_EUn]wnۦ㒥_SSE=g:Y|V%%%r~Y':&f՚/zWoNFFƛ/Y󸸱[O>uiiwqÿU\1 ivedd?zMbRҙS'VEEEfΰj%))iuFF:]ۯ__nfn$.rY@v}f.{ǎ=z$&%]'믥oT $c#sgN hqV~^X,֞];ǎ[tFFF?KpEE?U}/R441?r V^g:r̬ _yw׶[)?32JJְb1gϴ+8c:r̈1㪎q Y(/]˅!Tv(?}}ì=ˤϛ-?ҡ])Sm-'LnݪS$$$&L2qUΝR],?əA^~/ Z߼:PW_@B0{9jp9]N[^ș碢c@FFfܮ=zuް^og\jΕZ3fo윹?yRTTmkm=rB)+/ ѻoRr28̞-%%ih|ۥfcnjyB}WsQ'ym22`0̝w颗޽z=lvhX>zD&Opz-=}E 'O<}&;;Ǐ?PSS#XlO  ŘMiAW9vL_OOZg-Kr\,Z,x%{ bbcɱ܊bLX xx~9Wd-O>q8kȻx<ٞ=w$ԴlѣFFEG{zyjJKK ?X,ݻ8˽q7o nj. $yYi@O/{}MM}J(..EO/(nm|AbV,utq:nA4kω[w̜bc%ds/0'5p87o#yyߟO o߹cϞ;FeKW'1)i^N4NNd ]p\8_SC`'O[N& dr;Խ[NTcnjvZ~)yy,-`a={t>s}&u)))9?x<ދzA65w+]Tխ[׷o 6jd\AP _ohl!?pl/-!FԱ㤉\  6rEǑw.Of1w Z8އ)us%_K!׮H 683739c0ׯ>c"ܾb1c̬Zsp B38܊itzzE%3 ty FablܵkHɩzBX\\۳Hȍa 9bbb @O7ѣ8<ރز􌌄ω+_!Zwmv#8F] ~@ 99Y ? 'ϞǵjՊXf2N@wᆬQV454Y\.1d;^b2Cvl;rfffVYYYt̽6m t%/{aa 6mS A$$6U_6r뀠 /11lgO r `Z_5ׯ&B[W_XgNqc߾zq=jdTTdTw`^}q7qtݴigΞGBo\2nxˍ O͹#kqo߹S08ÃIA^.3+43+KNV| P@_ѓE}#h귝!o,-~xwUPP(/'ڴQ&5Ug:={\`%K}222&Lۺŕ. XB~5_q8fΘB)ab۾,p87ozxz^%;55GÇ .""}䉩ֶozsVPP>l 򩁾&Cntٰ{׎E=thvN{xsp 9$"¸5oM..q{ރYn]U?U7AhsXvZn{2b/釯(s;PVVv58D{Q5Z _uL<}rs#"M7b”6)=׭ZS¼EK-ZJ.K5|̿EE=64#ONRVVZb܅K'^\^X:.%%4aܦ-;.\r)UsrSyn݆ 6 J? vl'Nr8_'l"}҆(uQQQrHFFfVVN7{C߽_TTln6Fuh^_WNdj@FF};؇? B{lLUU5/_OҮC-7mtWb_F~`Y ֯n׮ݮDEEUTT X,֪+ D$%%mm={Æ*nMѺtF :<JVRRr<}qO ލy?vfW~nIox2ܙӊdp܋{x!Uo^LKPٳjZ,^z$%%׭}}.yuОIRTT|Ijjii}==rqѓb"/\L\c>޼oѢUkf?/۷s;ə3<u Ƣ<|E-\5=a Xωq/~eϞ;zݘc,X7o=wJD>s6~Ltt{>p=+C222< }n CMM;gVzayޅgw{%Gcְ*9mKhꕯ^2p@۩S/YJL$e@qJH(fZXUU%8(pʹϟ9~'3Vv',cAA ԩӬ9BݽN>s+/Աb%~gΚu^={=|qt:y { - u'"r捹| xQKPY[ed#n;[ 6v*N;Lnuk3Nܹq1Ay5vͮ߿{OV \/dff.\0@_o7vcjjgΞ:jjUXc'Ng>-.ngk}f*1|ܱCϞ 4tai/_E_ZKmC?q0ӧXX\Y~}ZD@5RSS'N^ORaJ{ׯ޻rٯo_yyy!/ع{ VZդE^N[E;GFFGy<06̌5Cb!p~-~VAaÂo޾67aUkÅT7ܜ|l6zTȵ\_QCu PM. aCa5tjgT*$6B]~Ao,UUiCg V6[bۖqO_ze ߱.'+x.BPsWuEP+z:-[Q#G _cT'ox*oV!b>j%`L)jj_)%Tӯ#zy>}:u>VQQa죱cHKKKJJ.Z̀ Ij]ui`Io~у{'+AoƂz?F! }NDß>}fKa _F-Zfjqԁ߬W^xw""s^ڷ'Z!rss.v$=|(,<|,))i9bY V~i\hѢ$P,WK+r58:v0}-vٵ{X?z$ VMZDDE*Uw/,<{+Tmq}>lh.]7;#,<ۋȨ(mG Hmpu]9g:D(ܦtN\%'M|QbRg-Ks -{v픗a0vnF)nRTNSov=!GA}s RA5ig!%%`0FYK+&nΝ:ub0"""S /\ݯoߩ6R/ n-j_j0e2Ō Y4:]OW+8Gru<YB`<{ɣŋ,\PjTC"Þ?ydo7~-}iܳ'GYRR/V\\#?Ǐ$WFO?2_B|6 )-- UON\4\5Rϯ]WB?vuСC{1f6*0WaSB᧮6*5QQivo*BAj~|~%ٶ ďOKۍ/ sjP/9wKg!ϩQT9c2Y80WTsTajX3?m]=jtnLW5竰0WTsT6ɔa3!B!4dB!TvBg~ՕF+0vw"޼|q֭kȕ^\TVR)))M?yݻcld)^-ƻS'^SK/JO.7+-\9 ɗVjݚ2l:Bh`3?\j"g3-[jjjZOޫW6mtv{et鬕5xp}#6mM範frZƏ]픑٧߀M[G :tjסӐa#(C%QQуnu/)Fa󖭁AA㛷BW0W]j\7mӻNhs[C[wf34ڵCÇ@Z-DE/] G{+--}AdψvukV{zyϴG6lLqqqXxxbRrrQ.%}xADuk=BAiX3?<P~`c޽}Co^ƇH.,,MUE%77߳OޑcvڭY c8.**?~r8a`=ՊLyK !5c~Ɓ)??_Lisg:z;$|Nl߮4FYǏгGw͜=?ð7altmٞl߿@M$Q}nsj8B.rs󴴴h4FHJJ;{[lqq8c^ -[h1wOetK-ONN&{@]a#Ge6|ٷtnܬTy$0ʂysLQ"r9bxg-C%56tyлwM.;(uU}B g~+22cial 5l߲Ȑ좥u1JfFѣkV9ދ1ݽ[7׍._ƑK`3=}b*0M6>= 333)..?Iࠂ³];/r\CMD=nYقC{K޳gOPTT8pl@__v!Uso4yr޾QV RVXPV]|ܧwO 7Q0 }=Hiaȟu}vNܱCnN G0oNs}[6ݸ~?RZ+;N f6( \`@EKDDԊƌEBo^D\~rF\.F]zxK{g hο0WGɕgg%epZob0vl>iĤ$g\|,eee蘘Uk֒]jc#+ f͜a=JRR2..nꌌ `X{vTVV;Rp8isflѢ@떭@_b--=/u.MMhO?qRp sV._յ{II QSSu^_ :܂ .**&yu{>7/ְ@iեgnFU5,ug FDEq*Mg`,W /\*aݚի~ʏ0{ ACza> ,ƚ 67~άY]v!T22҇9op޳=v / d:{>Z[uu $$gWң{w}} _8 h''\._Tgokm=rQ.@**mvӣws ˉ'RէZn~@N0gv^=BXq8>,<@&%'Wl̏x]:ܺh˖R[6mup9-_bZ;.wڰiq=wݻgdZk!v'B^N,o6.ȞO?_rߩ }􎋋w cƘYOࠩtһɞ>k :"EZ͜__ɳG~7m֩cI'^LF-~lDDhyG윜7o vDyzFjűa0LvQQ3v񉉉uB0HLrL䝝۷_څ5#*󱾮祲_SCoW")AtОb^ NĕkڷNJNЯo S(C tc=\ @ ܱ5))9= x<޽eee [)*kz;/_~]TTs%A'Orޗ}UUT8-AMCɷ=ӛ;&ffe9A_WGTT<_I* BܸSRR}WW{@OQ5z>~)_}GQf[KI$4<`NT@,g9yAPzBRB im~Ll&d%d>*<}̙,>pHۺ媧)eg˲u[bb2lxxwf[,"If}٬;w[!S.^rI&o>;wY,;""<))q+ e}vdTZ'ח_\1j̖-[|cf-Ӓk׭[nҞ=;f6|Y| ҋ=zTݢiƏZ?^=wߞ1s;5S}rϿ:|Kk?fk3ZHn-[ߺ⢣}[yacEEEdVTQay*,,L2qaC.N(BȲS4k&'kFEǎtCwW~n;5Vm6[qqqllLvNqhϏ3_B^|ܼVԗ.QPX?>.ZL`Lg8mNT*(唫7x+LFcXXxiieIt6J[C Ny慗7Vع벾%#cW'4e⥡ǫv]w߭)WNHH3 쯿)(( Z2UDD tg{w W_ϫ;֗6?.Yw>!>' 6oy$$$ɿMkxgB 6k#Gc^|iOgiw}тefv~g{tΌ!߬Uw=ػw[C-&?T>լYxڂ-[V~K***bϞB(g rrr~gD󊕿\5a{꾇}QAA5kKsbg]ɲS]~kޔe3qX21?u酒'ES8rTT2 fsn?nw8-NB8D-O&U Z[#""^{?.]8ϥ|;'Krwݡeڬ&gͶwW$q٭اw9s !2vz߇mޒѣ游ÇfUxڹ]{cSlgΜyow쯿9vxK.ٱ#Cѭ[_m*\%Bݺ{ݪM5חݰiݪb^9٠CvA9dDŽ7 У{7!DKɲ|SuG zY>$EDD(d{6m܍ !bb:,rΝt/C1ۏ;^u_Vrٜvm G++WOl6NbjYϜ9۾]ۘ!ĵW_|Dk1LMe-θW6Me|BB`ءP=&: T]P;'iB闧 jĉL!C$'ut!D|S]|v̓_w$IkbEsO\ll{?.Y @};u{!%\ƴ׍F-_~Æ5|˲rĈ?>6ʵ\Gh߾7ݴ##åkpn8a~="<<44TT^5_GNNJ{֬YS[e os~*"">JHHX핯;s͙}SϽ8|萅s&YѻW>t޷<3Vu9ukߚ0O=ݻ]=>T1㝙=)!>|?Oou뫭q_k4pẩFX໯_}/P?XUY_>Hq6+9ΌW}?W~]]*j&p7oI͛3񖛳s/\|.B]?}5vթc[҄YB޹^vႂ Ji[۷k#۵sݼaz3%X/7lXjłys?Ka)**ﯼs];gCUnBCCߘ;6o\};{=Zxu9be>۶lڵ#_0~zm~t:ݱ#wӍwђ>xGO?Yv"6&fze?W_y)c=?Bݻ}?{v_d2gl6s|Cɩt=d|O<[6n?nܣS[Tq.3ҷnߖ6G2CBkz_=盯׬[䫓}^Oɞ=zl޸^y1|gy_~fՊCj lsn>tEGEɝw[bB¿m! l'U\mAR\Y-'{5o7]7ej%;6]6_ܣ{)SHHH7}󾟳r?ƾW} jFÚ+ã[Ҟ~o=w|Ͻ15#Gxտ1irAAd5W8aݼȕK2rya!rq'is^JZjZD_d}wi9y[_{U~EqAmo:珹yO=vg?O}5g_y57~'K$ޭンLkmk6oIsuh6U۠W}KJK?grGo~n_lݓ= 7 e8!?MߝuփSRj !Ms5sa槵ٜ|䍓\ZfPugUZZ_֮ߠn-Xxh ?pYA獿f,iʕ.OU֮]+h1q-'RPXsg,nξz޹ع윔No^?;;}n'O\5X䬡ȕ3?":w}ݾfº7NҨf!Hs;']m˖-'O;\\AEΜ ļ֭[|[Jx+riϞz>!!OOLQ*-{yIИ8v}K^yYrt.KQQQOƛ6nB wYYY"eР>bKֻ&ߣ,*)-]Geyڂ}e.+Ź *YmG:9s.,2ꊑ^aaaCΫ65y+h1$%',XݙZZM'i^@c :tTG@:qEEͱr DBBeuk'*?YPMi Ai Y941:'7NB||M7oUońK7Y ,~S.ShNSÿSo.SOrK:w,,,z_38S 1;xdWX,U,IMw͕Wۜ_No.ܾk#̏vSB5ZrRcꓷty<5U{g~EyyE_NWWװ-!dұÞ]DJJJ e԰ԔB/=}؉m;ve:$%~//Ygcc˲ؖ{w?Wyre+׊UG 2W/ez^ܓC~M{C!DRb<}Gq_Y@,~ JL/(,*++BȲg_UTX#^ BuuN!Ym zɲ|&2ڎ]{;HhmeY.pge啗 ^/U*eɲK14e{Bb9J{p4g{ZZV9ɩrLktVbN<]Qn KYPUnں}o7 :}6m,de]"<4aCT)_(i&٠7HBڸy[j=KB خkwnܸqxk,uO}Yme2O-=csGbؘi/=w~'_m6YqiY_I_ӓ?2 7 %*%Wƛ~Eɴj?y ޛ VܹCBeh;v+EKKJJ㙧=7B4b#NH2W^&yuc-/gvnzͻ/ڌܹ_)ZCBk}SQcqluEKHB c~Yh.~^+Gws96ǥ/3l4}g0.Ҥ$!Ĺsp8$I֭[rr8vةS$u)>>^ehSΠ4fMyuԝܼR ֘Z-::bڵv}РA:u:zhrrr\\ƍFc .\c^ߡ{_@ Ը84F(~*͍B$$$dffZV՚t|%h۫phԺ.;Hs#())Q%%% B'O*Aç]y@.-,(,RohbJKˤL?# T~%}zyTnF!Ns*=?"FE8I %C岲rJa)ʯgϞ={eyΝǏBk˖-JmgZzX+Aͦ)AV&I/Uohq$!KN;mq;p4֭J$""PËOj)))z^9ԗաC-n۶h u@Бjίk׮aaaÆ J#Y^tivvvLL̈# yyyQQQ)))vf@p_B:tСCcǎ;&}W&4κ? @+Z8緷QhD1?( %㳽Z~-| @:Gb9K=h@KǪ.! !$?@WyvS +++S!I!\6Ad:+W5j kxM9+={՟FA::+uW5j e_I8Z= D6j8~B癩zjJAma ly^I햿qP7/.vq:@z}g: Lj,~ɳ_tBf:]IQO^ _A),k~2<{}=C:&ʏnlG h|`y}x<>|>T~=3mvDE@4SBOgG'|ϳ#?/SBW;3;<{} Q m(ǙB U1&{f|1>v|O#Cڗh(cw$ !$*c4_y@1ms!_RK_4;ʯiyR:bp:1&qy/l "B x:y^/K} /p_|ɶ/}Pdۗ4_|I/}`6>:)&p_̶fۧ"`RT~Mɗ:^wwlFcuFcm:uGx{V9T~M}=(#]ν/Y{ƾGuνkJVn2u#dIxv;kܻ^w9|M΍ˬ(T+?ǛuO˹w r]/»{ ʏc~ip~VNuj._'I4O&“64Of6gdoSAblR`s xyDL,M(L=A4O&“6,e4Lu>0 ŲdV)5&pe:P; &uۊT\M&"Y,'4b٠Խd\+?4DU47Rq?_LVX6L#Q!d꘩nh:uHŲo梶2FX,Q9؀W~me4R4FF Vn_nhJnYB&+('}`bW~h(e]-D!Ԝ,iŲ5 ,i$jj,etˏk]6"0Y͈d1S9Sښ<6Gӌ0Y͈Ųd) ~1Y jv8 @[a$*? PRhʏ$88$^ HPhVPp]PhE+?> $^ HPhVPhVPiwܡA-#^BT~ QhV;<&>>~-~rwC.dYVvޛ#$a~YmQ/g{$4B *?0hzկ_9sv:v``bbرc?Λ7\tE={z:*D>}N>zܮH !FcΝ;w\QQqر{ʲcǎΎ@ ??텅eeev%j""""##]_ԩSAp嗧޽ԩSBX111m۶]lYXX3xI9rbDGG_qG6MiiZCBB!VNիרQ-ZTTT\UR^)4 avڪU+MΗh4l6b4__gqXVp8N>Rm\_B.c~-l5jB$4a„e˖.Wt:WϢ\!Dtttaa)и$Ir=.R\\7 EEEfY Ns=8jX,n9::v $P_dɒ%KV^]^^dɒv)k.<<\nݺeff !N8ѣGVZuE )"""99Y 啗GEE 2DY,.](sss+**233۶mk4{MsFQdee !Ӯ];u*Ǐӧ^oӦMtt4mGyyr_˲NII1L%%%;wT֑:uT||qǾ}]I߾}GVVֆ !!!IIIG7m4tДoڴIQQQm۶QFӧOݻW5iiwIDAT ڵk7p@NWPPf͚ !lݻ 6qIJ 6>$Rbͭީ w~y*?;<@*?Mۻo?677/*(?'s\-PKuT}qaV UXT? ʽrKBv?'IH_$]UƳتQ@\mܨaՖ-\~m>!U}oTK':Oi~$w%\-Vu"ׇfµ@UgQ]j\VCQm5\AqEꏰnhqjzWs !<.j$ !YVE#IENDB`taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/docs/source/imgs/change_buffer.png000066400000000000000000003030071514602004300313540ustar00rootroot00000000000000PNG  IHDRmd pHYs+ IDATx^w\ř]־Xm˖1x`vYe5a`IƲəOss3|a< a$`0`[e ɒ[ԲV/AE[wU9>>UO=SUWUO׭[רo@!Lӄjh4E Щ! .I|.K_Ғ @h4M, Щ&#2M2Q4UUDpzYHh4! 2d,6n;hFh4&JLIFh4\dFh4 BT*KRtFh4fi WWWWVVfOș9::߯C.Fh4 -ݿvm @H$oDJ%[FW,+**2hboҫ (CJALMЃZJliyǩDϹk}a*O?kݿJh4Ӈ  ͛B_` {^zFK檆ON9|Mu7LO}}rii5PI>?ڲysgWl!_~BoenZB0r9˂ ~]󢃀k-74 BђL^8?qoޢ%L3CsͪS]B(aL_ 2}\w6?pyPw KM.Cb _~C=xyE}~ҥ9_^+555?ھ~T*̳ݶu˹>$z{+nxL2z`y%?Ï>BZrXk6:ynOHe$h'܅@e9JBdcv0!e=h)64mڛ+kV,_8?qv>B(0FqFѡF$_omݟL&74>zh!^|qx27 xGǟ|o{z.W]]{2Њ?pСΞꫯ-]z[wE"˗p_}5]x(.PRY6=!+{U4W.Q\] |%ՑHl|;!_ό%RĴ^RXJM^s̙x!TYQݍӇ&4'8E2oRX^rL+{?h~7c:f=qE .]}5H|>!٦6%4M# 'n+#yZEEwn O&S `QQ|{y#"4._JS%!|2X@i^FkN$x}K/%Jgww5Kzڱѱ'x$B)_0_,g/wB&(/+p!OA2 +@UTT\->g?rՕWB77 ~޼+|>_ Q,G?CM;a||H!BP2lmU=TW^~|CC&ꫯBuu?ھ9-h҃8sT* TF)n}``?57R@w]oƒ0_Ν;G*h4F)%4M4 /_L> >o+/F0 h4F t422a1L$DbddPh4FSPw|>_ڲ2غm]:nWFF/ \"Nh4F)(hIh4FCbDFh4tFGKFh42th4F#CGKFh42th4Fh4F oN'i4FѤ Ob}'Nh4F4FhdhIh4F4FhdhIh4F4FhdhIh4F4FhdhIh4F4FhdhIh4F4FhdhIh4F4FhdhIh4F4FhdhIh4F4FL/̙c͙34Fh e˖-\pddז4FL#FFF?q:C4&hjjڱciU `*tvv )x5X0U) عs>Kg# &4{9:!q79.}<*l߾Nr4 nԠFy4g$z0$P^[T4w IJsI@Z>/"ՓI߉ `pM,v Q?5oqpO!˩pEEE45Νieg)Ⱦ%.ʹa;buomIrQc(ɀɓ3 \>n0Ƀ*EϞxP`Eq:_o.&`G{C2o1:Z\X vR|fHwhvj~rcQΜ pF>HUye֭jIjl .:Zh4iG>bf|YO+P։pd IFFϜqT 8`WJjt'2HF: |aZ١\3b p>ښeUUFu\.{S fGX!bEK555555t&VqI. .g9%i53"26\m;SHإQwH$J i=dzEK555x<{0+3d=Tr6̉HX,bw°+?yKñW:[]e]y[x;PK5( oٽ~B~80MpD:/ KC%a.c wqY@p [='8^_@!Ŋ؝P3l+U<lO/ E,,,/ex,:vB} CU+vF'cÊu9jaMCQeqRL bi%+ZT*F 4)cqyXObKXwsNQT(9GTt{U;8;)@ VbAe-ᅵLVt26m*//S5r|/T &&MdZK. ByAʽȈ2t~_IvRaYYC=TTTtM7-[ ׮]iӦx! ͛7?CիWoܸq#,NSH} [vn*VP|Ge0c{i-׿o~2`UV}x/X|yQQ; 066w#Gvm>>xצh8EehY`˄-9|{w18T[G"};nB'7ZPN fΜ#r]`ڰaÆ :{/^~M6{%%%hѢGydƍ+VKhܹX,;oLrW~d{xx(<2e,V_7/t"o2dvݴHΰ=qm<$@'OjkB_w)븦;|x*:}[RR=%K[XlW_}g}V]]}>|xpppŊBBh4AyooYN>͕F+++q=p/<09^o DV1}jʒk͎uQXds=GgGQo(؁ ]>eo4 C򓒴?A mh鞥@(H?]_+C}C)B###d4T*5:::44TQQgϞKR]]]444|7.]2MɓpPSeee4hUU8BMLLH&mE2K=3.3NU -<ُhQVS eBJ_#n.ˣOHŸ -ݳji8@Zee^{-Cd366RCD"H$BEEEd0H$`hbbdBf.<4i%g?gؚ\,D"эPÖ-mmm JKwɂbd7eI-.>k^ 6oR8kK| I45 MFK[oҥK:Dg|b1P" @ @Ox<>11" | q[-aL'E: uu0d-Y_y4#C:[[a(u)h y8 p&8|4-_}WO &WAΝ[bohhp%<:`-.L؂{?]mL z;Q<λBaڒG(٢ph':ѣrڵk,YIfQ ~gw}  @E"j4k֬):vXIIƍo{Z|x|H:pa=l$v"# 0M~ KQ=Tgfݷ­[Ӵ gT{ ݻdrGGGG|?Qԙ3gΜ9? :u* Ξ=+coM%j8VSS.v0KJ* mmmaܹ祗S?{T^ݙTg2vEc(2j摮X 6Z*kR9w: =ztҥEEE+V8qB(H~ׯBr-</eq_IPnKX'JHB7 plnF -zݟ.h[["fggf_D{9kdZ8^t{ΆWKlQ8kK^Gadd7@9r'I0|tFcx.#d:0X)O|>Hgas6oy%Z;w!A4CD"QZW clrHO]uuK;/^eA1삜_(=kKqiE^ [?|m @P^(O)BYtR-,߿AaY\l-QK;ko\:ZnBqš_ܝ5e™ M5L? @iT(TKwFӒ#s,C4 vσt8Mv!i]\S[}~< x 3[P 6O'FG<uk1MtYݗ:Z}c=Bh%wX'}F +_RbQwύEeទ(\H責d׹eY7X* ñ$xE 49P !J("V}4,S_[C] %ERWz,Y g ,p.>]ek{PJ_#(,yb|aSEY:Z}c nB͸iBΎ}5uɑ&ʊdۮaroEµpWxz vyy??ɂ z%zr -9Dz4rT~>v`)ϞJBN]قn錥=t YLDbu[mX3GDON%&d~x]גǰI+r%ǥfmu:XUt\:BP9?6l]Mt}-j(]EP>*g`>vvt`x+}]CLti6W+jStd+={㥥k 'ZI.&:Zfk3 ^CdJ~&xI_{`CƢ%I"yQKX꿻VY~y M *\9"##Y%ﻷ4- 0Zjh8̱cSU;ەRWz(mWa󼵝A5Wdh"odv:-%:R,Ր#`e9 x+L\|!w><ޒ+^5@9r ŮZ@_zE!q̂%Bٍ0P r2y'STغukII x=\uUTB|Ndg{.2iS~(w&vmYk K7(hEϻ@?$NY%"ȅW IDATz:%ƓZj˖-64 6nܸtRŋ7nܸm۶zd> DC|wQ_cDDSK*K;.bP¢Fp­[=&4 -e6sĉW_?<<<7xW_][[{{ ex%Lír`G$~rͰa h7@t s%ݓ&9J,C\ @'h+**.\&Bnhhh@9sرciZ !tQPee}ꫯk1 ǎBaXbSN}d.P__ 7&O?onhhHRGmkk[`˃FI _yŋD"|T*U]]=ÇG^Pkpʕ+O8|7xcll, Ν;{cǎ9sf<߷o\fhhh3g̙3ùsfΜ9222gΜ'O!RaUUᆆҽm+`G(=innnkk3 cΝ>,=I]b 7E'JHZH:Rm@{ЏJᢲP) P)ܦÏ?xo?jp$X߉3gΑ#G^~?o|UVݻȑ#v3 o?u޽{nFZQnbE?*0LBd<ꪫd29>>~Iˉ믿NRcccgϞ;w.uUW>}V\Ο?OCCC ,(//7 c޼yD,GCS^^NiT:u*H9U!׿NLL@3g"Ν{IXT5kVooo__߬Y ӵ@R`0H)1% NirUfꢸCg%deXolZAer + *ŪؖlZ"XV'_XGKGKR]]]>!tWBL=<>m)--]r 6lذx⢢"2裏ڵkW^]TT~?x5k֬]n&L vڵk.XRk?/_MooYJJJ+++fΜ_^^ zzz.^8k,ȚMLL.rd!n s 9roܰaę3gBΝ;w>8116{욚 ~a0Μ9CnFw}ţ1^|{߻뮻RЇ~_z7oذ!J}ϟ?C=4>>~|WzW\1::z9>KVXROO-_CVooʕ+?,>! /,!fΜR'N,E/m0D _ޚY2Z4' qܣ7e_$%-*ca b5Y/ %HD^ߗ;:3PIDEyi)rh0իW}g'&&a򮮮3q (++T f:D$ٿ?H$>C\0Tw_#,ν;gϞN?'N8AdPBX*-@ U8~8Bb?q$!RI>3|M$(=׆a[* voAaע N:iR [`4*pP*eʴhD~_|yԷ祗h :kEԊWQ ø 8z(,RT*uܹ+V|'.\j…Νk"޿aT!؊Êir8p-|_|A{ϒ%K-ZMx7\*Ztŋ?M-ZrJHe<9;X؂|$K-UzMHΖ0өAd+MAi0LG#*s,g= es"s0%/ rh&K$zƍ{=X)V^}7^t> K47v%)ݜ:uԩSt|PN>i;ɑsB2'Q E3 ЋSF"@QOd:p#+XDKh(Ṭƣ">RT<͢n]ʋqaZa+w16jj9[7,ENir"O4GrmO%ə_%(`GV!12r6F +nY*& !"4\6r[es(D~JP< toya'oE EgƜ+*߫FRhRj8;D:1%&r\+Y܄*xr%pFh6a^mupYK,TȬlj$J}ט#=i(9QZn?%y d ,@v)hrִh2d%*g*Ԑckʳh \@I$R@f`ϖl$ 8֑TCY"QidgqI%:\<:SXWQ(h EaNJmț>72OŽ\XGhN6n%l m [>vHΖZV+I";H,m!P7`"M!rC6&-et[O6-i4MɈliBErL4("0ܩ>v*uK܂*ʑO*XޟGIQ(]%O~UQEʸoSђf~8GZq|E}|Wn6*ԥNK$B:Zpa|O=EKiI ,6T_jXQ{RGQ, 2-Y.X (㭜«n#De'd9;:K~Yr'~_+o|](ZgX(*2*2v͒Q@]TԼТ,Մq'ʸXQNX)GO[E *njj$8_{%SCUU*/RmD.,a8k.؂D"*OzFQ0Grd ,@v)hrִФشĎ ނe B07Hu}5vYk`!uhoo^m!bLƉ0mЀH {U, C6%!%1a菚KT|k<GBy^8-xeB]t?Ne`vՅyx叢9EDD^ `]^8vW\-XG$lBUJxq+!L UnD`C $lM 0Z 鈷4l/v𤂖V(T)䳎'SWgkk*PZvrb@"5K7ZiDN-:t(!L2*͛k`ƣ"t߆$xu<;2Z-rQYjSQVF_ >Hjn̻ނ5KڐbSXnݺp:urN^};C!'UPUGg:NԀMMMhLEKɤ$dZE:*PDh&Wv9ƫYR-"|C K0f}Q:Uknnf+)ڭ7F foڴpn #l߾Nh<-o< ?tgR*JTd/ġ4MrD^DQ"y,H$ƫR ܦl kϞx"п=`İ+ K]\PV(Ԋ677|۶pC)$7fAk)HoB[KZR!ds=Gg5Xx~!ܧt}/DdRbHHuT|`" ?^|y@.(<@ 0no!Xj(E<JJY pJ7lcL&C|gk, vdK\Vlk|XqGSOD,Y_=W(BM?i{I$Yٞ"a[N [h4ڽg.6z`{ufqcŸp;>H䕀(:-y⃔`vd^޾{7YbXN.ھ:W\Y-Y{[Ϭ|a+=2`^"ZvbPWu[*=nME "İQK"8ԃɕ"*B!A4b͒a(+:~g[V*pp+J$ƪuuEn%YTdTPl^tϬƓD"rYezzc rc? ԁ"t,./Q㎱$- : W^-Ff 9@fW,1Z"PUU/T]DlX3k &Z"=_ppp8TUg?txՕz,R}A47–Xr+l@#z!aTX*I;:3*-=-tW2x`^lZ}G'֮[nk֬)++r̙nݺ7[.4P-tLn[\ ڃIxD-7Dmֱ뛢䆨<1ESn_U XN۶,X9=11QRWGӬ@3qȐ"TqҐ(wTqPEG`nqC0 o?u޽{nF27q޽{O8q뭷BzAEKˋ[lK{ "Qh4$+}j$uQ3`\Te !1-y|`|'ϲ$G^!\\IKdl{j֭Lg#Nš=uƇ8"C~iȀ8L555>-L8qbAIC0 DE"@ -Aj2VMq'Jr4'cK>^TRVѽgmS5-q$i{mKW*OKhbQNp[Ϝn =IAoYeY$h4 Xyy9΍N뮻n> 6Zw<)+m"B]"^U+=$&3*3WקHڊK&knK - qz<G5KڇbSl7AӴus7 #@UJ"IWO M8jkk馛B.\ĂbQQ9 RbK7n.=d(Q$q rVٮ++bH=u:n(\Ёi(K%&%WD(\yudZ:[[a<^WsʊbB JJJw}_ooo_f Tl-aMlmFZU#xG 7.=l+\ǫZX \Rݟ7ٛ6رkȶ3W 5 1W h@mRg*CX'lK$}25Bq=3fxx >2|c!4k֬K.yD"1c T`ђJ&9DqѸ[CKE;gję3Q.S[mrpDN b$`][,M)\k KdT?vڟ*Ф3 rcWaI޴P4, X1-SZx`.]cG`08{l0N8q>裫W裏QGKn`- +̦8%iyq;a$FͥxuVEإj !r<3mntttټ/!/4ϧ.QcHyU%8nRM)"tO=XWWbB)L3I(Lonn6{zDHFV8K/O|2BŋKԩSok.(RђevJƦP> M]SC45KEc##m= nΝihùu`Uɏ.KN.- {਋ D]ldVT ux0ȍU1l J *Zܼ%ۖ0)ykvZvԷ~n?(.>{>u_XLt_r&<̲^r/Q%74X`* A+(.֔2FƘx&-?$^u/ܽ~YaW'Jي<0NUF6뛢<;GQ C?Fk]y4nXq}U*.@iHAH=TRF8.X NdHx0HC\Is+kqfc 888-#T^E"F N1a-e՜ggSOpcTjK*XDDt鼩`[Ӓ,VvT[?02{Ȥ1βs^ a$8,զ~؍]+#JYH"l O9g}*  k1*$bAmjjȖEO(vd8ENmI͂6]%O~m n.Ȝ(=(h <.5BTl)l {1^YJ p14TkhN",H IX[4-ʧdOu̅謼-I SpsNV p|n{kN]Vf*QyGi_sbQQ9+Muۖ[^ak@t),'lE$U~ K!Q۰b7$ō@r@)$"Ν;=|VkH0xi`DjH ?Awĸ04AFNRJ-v킧ßX@;Tul-aSaS$0AJ@+=,MWz n*$Jw3,pЂ͛#/j D"FgeH` >m!*/PhA8Q%(@reT,+H»{/?OENAEK=drtJtL@qj刊8sPi+ 8,K,SΦLERl.ƲA@)nņKQŹ0XVN1%t3MdBqj-R`6PI[";TFo*t (AF-\$^qIZ"8)FIMsN= '[:А *Zi&6֊BӉ (QDbu d$jTpB "5aRWu q:l)|ʿ 0XR(x&$12ҽgOop;eTqe }ˈKK$ N e)zK$'[z[$G(h: sEYM$? 5j/VMeagSu$%YrsJK,.*XDDi,1-FFS)y 2C"l #L n%b֫B^Րu 6ZrE"p%v9 JlQm1[EAol Z–bSHfuܜ6(Bh_$a%vC% ?bg?%ٱchWWGG͛<)K;)81123punt&Ra84%HA.c#QJ% uCAEKlE#$\In۶v`K]ސN'xD5[5B؆UA]cȂr7p5`y)( uu lA<|-p V`ig̨*3q"LF 9 TSSSch4* ј/7_6޴iǎk8UUAt%s.\ *Z:vٮ^ {Nep7g=WzDWAu"(ɒ1*K,7xUK=rK9Oӟ'𙫓䡩VhjBKd*5k|

 RVR:ewĤtquNє444Ss ߷fVzj^΍'##~cjb)\}&a`۴s7g pwsXX[[~ЃWq/srK؉=EqqKMMM +gxZڃdee:, 3juКM[$%%mm7P,eEEWVVvά;kLpԴ,heϸm[|п,_`djѵI?[ЯK(,,ѽGGeG-$Vχ99KKI{}]駟`bl53q>cEf[M8asL:k7oaѣ{wjV𦘴-a gXs]jHJJnذ! @tm޼yݻw ###]v522""Ϟ5Eͬ5>qڀN9gQFh>乇n ANBt"6LMMoܸK.bݻw2njC.B?_VTիv~!L>50&&f>>>111 ''׿F^o#ꪪ*Q!ԞWX*7/_RRxePP󃃃Ś ;;~J!Ԟ :}85ڝV2OH߶ZB qkAC!\:?y#B}t7˯!>$RؗZB!M3,Bm.lmpW{+Vj cBa1F!ZcBa1F!ZV俭&[ڹ+pu5=x(8d=5 0P[STD6Qw%,ƨ=H?wgFS+/f|//f͙ghl7cԘ;wQ3ǐa kpw#Nx"5?^q[$YsQ/߆@͡igP JLJ^*0`r[;wwDM.rss|ƍ^|Yǎoݾӭ&5y$Ǐg̚{!=h4^vee \]wVB?w$g^Wrvrܹk+f6Z!̂C֭\sHee% N50rrqu6\bm7|UUs׺ l8;<~NG[e'>b⥺F&{w555d%>Q;wE޻lʁz.nu[exD_bfhl6bdΫW0sK"5M1CmC9y::;Y|| X'9q\IISCsgϺ}c@ I'\˸u!RRR׮\ [|EII 'ed\*_~_tɵnnIIAkוX.\|<¹kW.-[`P{l کS#EqP8s\ўYFyXؽ7fֵKgS!յcu5UNrJ* ߏ7!3|>z)*ճDžܽ'++ۣ{w99=z KJJ޽ggkO?23og6DDRJꢅ;uRRRRQQfޭ eee(/ ?np鲲 _߾(=zt/..)/oZ) Gbw///L&ҤJn0%$: ϼq]P(Z0)RW*TVVxq&Z.+yNNQ>}ă>{]]%$jkJIM;Fջwma[7l ]|0SRZjjaE>*W5FZZz/+~-Ogr;v@n:WZVfja UUUN066e6TYYY]]Ҡ6'>?(eBgaPǯuhp;{)&ΚO 4ԩ7"pCVCѣBBb{a:unl>DyIKK ևT1F EC C(L$Z`n..~3jjIDۿoͬ,_?dee%OѨO444S(nn1b^(LL>r'"ǎ:0PFFZL!+++))YXXح[W2"!!AфWHAyY@YIyɔ)tfNٳ@ 'uNSNϛ3{kŗ{wj{%}8wY4p7F8oܴ §Ϟ>X5QoTVV>xu2'8Y[[+H>;v+z79l6SVVF:ur߾ehki1c|ѣǕ4mVuGw˗Ӳ2;;[b"LAӇUVV27n@v r!n.ѻ󦪪GAtШW :En/^X._@.XCbڼ -](b{}ԌNIIMsupRч{$$$öD34"jhRRRn`c羈;/ed8Y._UOF{K-⻈ss~9pgacr8'M163kfΟر~EA3*Y#S3Ku떽ok~s]]~?">J65AVԘZX[yV 1jthV%(/Hnn.&N& _:f02]416WwW@x9ʻwbAn Qdd kR?-+"r;6M25%5Y=y*uEjN}}k%,::z߾}82n]v0xY]AϺq3ڃ?rԆ'9%UIIҒڀPk4w~ig/]VSSթ?a֧'j%ZÂ)XQ:0`u`5BBG?)XB!jaX*nBMdiXB!jaXBŸiKv fMswFT={H;{m@S'CCCj!گ)X`J2 Fq_CӲ7ij]›oE}>!jA; }C|j!bZ@ 3oF:H IDATaԶϝwpg;!jNj3BeM3M#.>ӧIJJR͛/f-]9,w]|%OJN4t<vZaz|⟣l M̷En"}-x5} #455WXe˖E)**'Ȍ=:$$d͋/oEY[SM1sgt4O8AEE /##wSRϛ{'+s@^^ޒ&+Xo3f|SrQX捛;k\x̬׷xN''&ƟIJ;}:.yX:e%/lr uU۶]zFmA;{Ǐ68?^="ZEP)*z4Pkт,3deFM6K.}왷xrŋ=z4n8Vw¶n+.)a1HJJ9t~kߕq3S]]prrx)6V:t:sH)I7LL2os/yIUU&4Z#؜?np:s+bme5?=sdT__r^ 8pqB?i.]0 >Կ999QRyyybbww o%++%\.ws薯TTX]ɠ*]P&K]]XWG'?Mٻw/\lڵ7MME 96ZXZX=Ux<V߳r8ig̟,! ODHwЁF!-RWWgvmmmYYreeDԩsff&%75roĹ؃b~qX,NAAaɢVC񥊊ÇDl ^BBеKnNe%S&{pHq455@44WVVrg؉)))>{ \YȘdj1(++o޼9$$DZZ:--M \>FiEߪ[|t:=@rkϞ=UQQr/9KM'/ݺu[(=vtutxl X[[^xw^In.ѻ3z@ >Gf:9:e޸IDEEgggks6=ӧ`Ͼ5ȸRJly4ŋ-233[loEqqM["FF'ϸrkWIJ2l LxkW C\)H 051ٸyKfllD# 9q+**4X?u90`+L,5:kCݺmX:hMn^^NfLַOjwзOeKMQ]];e5!# ,?$%%>sMk˖- ##ЧM iiWʴ?QN}6}ϗ+tKXtt}Gl6㙚޸q˗\.b_,K(lfaaQ[[[_@NP'PTPZ;wXcO,YBՇ;pL<'777&&OdeeEԹs}ٳgͤFۈ-)++5r0jBWq~~~ppXdggZ >}*F9j稑(B5&B!°%f)5BZ-R,!ԞmcB5`$,BcF!3n3pBcB#A5cBa1Fv /ot;jufΞKq|S_rޏ=FBPHpU*:6}TTThO2U, Ivn]ϛq;BhRҒҒ8M6\穨;/zO]ۀ׮'۲V#& 1jO>#zxNN_pql<{'O;wϟ; 2x{F'ONNNM?wth[߸ѿo\q:͟~ 3g확ymLjK~o5ŋ+WuZ <|zD :;9e^ kК'OMƵ %%={vAEMSP'I4Y++Ĥ$8y򴇻)9%JWWN{)%)ufGўt:\{|&.~ .ÝϦUP?ߕe0cvA衺zqqqqq1K,Jnr87m62:{ǫ::cAp8Rr/ k[))wF[K44Xb6@]@]]3ɬ $kMڐ75jVVW$&%tq=2#Q`HW5(++#7N1](fNٳK]]CC#=~J}԰UIQFנfA?u_F_~Fprt XGKn 䗉uut /O:MDf[ Kyyyf߼TUU# TTT:khTWWkki1c|m26-ͬ,@s _Bþdee:, dU&fGع=RBBBRRr[X]=8ǛL1{D}ɾ7RAF6CX,W #zgTٳFf61cm׷oA.YBGpAiXV>vnOL202]u]Ԋj7hC-O ٳgS)f:"rY3QگQsfϢFvт5&##-!!#cBa1Fvtia1nB-廭j6x B})Xw !P ijBa1n1B{XB!F>kw#B- 1B!°#B- 1B!šx.Bwg!jF?-jAw{PpzjG{zPe5)s|k ld:orjF3x:{ VVn Ivn]ϛq;BmbڼĤKy{>r 1:Qǎݽ{:_Wb[E_8& |wq5AZ''O%'&Ɵ/qlmD_xuAAPUQW(~۷~vWPXأ{?K?w~-p2-ŋ+WEnj8 7/dRNB_p}(ƚ&LPWW޽{KKKEMt:vȐ!:t9x "ԂJKK奤(q:NCշO|Q1&")%ԉlјS>L\qcetbܫgcOӧsgEzq r %5zIgN!1F6mZRRRffwTT(IVVV]]=< +++5X,K GʟTlܴ9,<u66}ǮQc,-,VtQx{^ EE ӧ75K44XϟB_3ҥ III%qÇ[njY=ztWTT(Ydi9rCIVVVRRPhB|XTT$j"5aJYI9pʫ/^|+65s礧m bF%Ɵvrry"Dbagju*5bfڲ2eeYbz+jB͙gKKK޽#/hDӟ<}3.Cm *++sss Fg 7 ;!?y B%z޼<`oވ~m@ ##ݷOjʾ_\ϣG+++i4 -P~狧 b~fV@ x9A O!ԪOS3Lf#ceee{{͛7S⑑壳gϦDj&Əc2ۣ-_d2,-mݲt+W)))8ae5A5š)!r/Al駆_m7os^`hbiH,kt,𑿧Ϝ-d;$x-e/v.'֭ TUT\4654q֯o߂~]lEaaaO8B0֞;z! :uzjmmmJa%FQ ~$۩of)4˻94l{Ԏ]ѻ맩9UCRRRQQC:ܼymB!1x/_r,k„ 222ͻtҝ;wt[B!4>|8&&f>>>111 ''׿fhhصk׮]z{{[lyh_B-R]q~~~ppXdggZ .^xE&B5mF! p$O!P[smA55P; Bh4))I F6m]h;++K!B_4 0B!45Bm8G=5ӂj,!P bBmx#B- 1j|S͉ 0467!dR3A6vEEP4jAή/ Ӳ%$$[ $:;9RW>| L&ѣDzԌpL hGsQ{wwourƁ/I^@^z=`@& ֭+5VYYnFCa C!Va1FNݻ0''eE喰pPɓ+_`cgcWxgϼNѷ1;Cohﱏ~/]7 Otjhl1jL|>dB9`{s׺ l8& aq{ټwB-gq |!\nj,y^۶ngM0>fotAA!d/wt3fMIb2.''UWW{E%%%?X G'=W:ooʎViFYbm5ɾ~:?/X4cĘўM ̖RVVrLx{N֭TrJN5RJR|LMMr^S& ''7e$js.FF222=HCVyT1zfzD#Բb07F*++\^\\q%%,u51c TU :~()]M~ r޽E>_[[˭СXG>Uߟ$SBDmQ3M32Fuy~K>|[P@5PEEBG<-[]&w;Je]xܐh](z^xiasdds:|P+U(Q4e%%%{Ƹ<$JT@G[ @R'/ݺu[(=vtutD_~ЃW֊y37n@v rXC&`\۷lsD,ƨ X!!!ane9aH`nnb[oeJHHq)]#O/®]57Yr'vn7)x?y~}A5:4ldMlnfJ;v;}tF#B-F }g}FDvvM#QԮEDn 壶cshwfugτBaUU}} ۥosC}+WKJJ/y.5!#Ԭii>Y)x.pjb!pB 8,nǰ#B- 1B!°#PscBa1F^| ѳGg;u244FBb$p`j7IAjǚWBs?)XQssvu~A:v``9I~[ZVMmhΝ??S&SR  1Q۰w>y\OWw܄ A5յյt:C6FihfϚ1~O薭dpmpPCVUU?q2flm6vׯg6LG1Q;w۰o Ǝ]ofe@]]]@jsKCc3_?@p)S 102219%c L<|^|I\tGz`ʀ. /sr&N502H%O/}CPHBNAcFmFBIMK#BiN.n.gfeOn_tԌw#A,e zPRRB;tn?v zuuu=&֭۽8?kz aNG ؃,-$%%MLPS"AT__r^]!#;u3ړNhg\zC5f4x{=|STfkcmnf*))٫gǏp++Ǎf0%$$M.FF222&o IDAT~88GKSSs„ _޻woiiXCJB۷l999&YUUy&ݍqSBϯ޽{EEl ۺaSˆECRMUcǎ%VdPJJ]yqq4TPPV8PWWp8v޽EqЏhiӦ%%%eff:99y{{GEE 2̬D\<"~b**lvAd.KytwDmQ{K. ###'%%_NNNA Sژɓ'\ſB&5AvvU#B}7]6LԞB!Z #B- 1B!škK,B_ kb!p!ZpXBOQ;wFAKYahb>ͿnohO=zlcgO'ASӄm5i#ԲϝǒLvX&jwqÇ\:F X\QVks1jW XƦݻ:QW^ПdR~$~.BMQn垣F*++ih8W5uۭ[k&3gϭm7}`c75n,נߎ;\.wņfvi6s\|B;۷p_VZX[n  䱢w]|@m۷W,\T٣xzxl M̷EnqK<|t Ba=4|fvC\Q``drIs+[ɱ>A[EO*<"̤@m=NQ4 |? #-a7O"yۉVWWSwkp bǎE/^rkjjx;2SKG?+9s Auuu6CQPx{AW,eE]]Ç EG$bإ W.^KuuuQQHC ؾcuuu/3o~ٻwN@ :{Ǩ1A<{\uuuaz'vLbC_x@4ݣoP> 0H+kkk߼ykcgB']iM?PK$_^^^UUU%7|~TUUg޸ .(pwT&SV55Ux&L"55\.W#媩Y%v>E9, !p8RS +򡔔Tu~dd;t ӻF{ ס...QWW'?} TUܹ M_gccM&N@SsԈ4ңGwEE$w7WJNunl>D䘒;>?y~۳Gx[P Et,YYYIInݺe%% $!IIIٳ6ϯo%S\aZIIQK>d)p™捊 (+)O2c;%St"zo!:>o5=_ZZZwIGFF f1ZhN;woqf.+ >{{@}m۫KJJio!v[÷x\mAt:-fl]]Ͽw>ڜMO@ س/엦g=С޽>{^۳7 n.ѻS?Ч^FŊ|~mm亳m)K#,ƨ͛0~%"GYXGKxo4W /uwVGqa[wld܌:, puuu}BBBs0#k~1z=vMXۧϲ%01 iF0N]\gg8s!v0c:}yѽQ+@ ^θܽ{իW>lwISQڀAN5e55IT*-aw1Bt9\uf;w}nH.X,Q#q ƥM_tYMMkF&ƭ X@0ޫgj8,F8MBaPӌo7Az(cF!3F!ZcBa1F!Z y:,!P bB0,!PijBh4,!P kbl چPKڹ+pu5|S)*;aiԎUUg24657j'(Bՠh4 ڃsG|$=طo#ckkkO<ů˼yk++ BYcZPbRU+޹{WS'jB^IIW^hh4IIIjkWMj!Ԛ#㦙F[|稑J,'G2UMk`vV jhb>sܪjڹk݆~g 6vz4σ#kE͚7!Hw3g/]o~9aXu#ng8;dd2~c#ŋ.^̝=^wAG҃wvMMM ==\]?.7c"8kG'tsC|  0lb&VEgϟ㸣k׉H3Bك Ɯ/}͞6V6t(1b'y5Xtʝ,kȑEOQ=mAz;t#m#cD0 RdaaA|0NhkkOMK+y ~i=Ap,@*d/#`G(\ \jPS":6ag;0z]);fq9\7ffmWBss~G$IOBC1Fif6iA"jWzF]9ܲu^f /RHFFFL&hV/LժQ 0&V:6^rsubyJf8<-xZP,[~ 2iωZdžy.?h-ݦSE[D۷P+ui\D-a'N;U7oUaAL%JdGP(l1RTՇPS&={6,{d@*b"._Z7$WIZؕI:Wr>#sfWAh2F/V.O5/`_V6F1J.[D=DRw۟5#{&'0I~7>q]R{{`a/#&LĂiAXXOYch&q'NtC &**+zzyoM5|2m:hېR*zM"O<Ǐܩ A7f );R%^^UzFZ?EĞ+9O"ȟIȤ0HSoYʎԃ>|\3!?VxRvu7oUܾSuK2cMh4(: 0.\H !6upŠUrMYZZRk +@с<9&c闒%&KFA( AAb8AAz{qΜ9YYY'" #$$ݝ`9r_լ?nܸUQQ|''*))I h Yt)9M;~8tpp6mX,޸TmmmE"Q~~~uu5Ya؊+BaNN΋VVVBرc_duuu͚My#.]J~]zX,ֱYS:TTT777o߾=>>XXXp8={_;;7޽{Ν;J3\.wѻvR*<ϷIPdffi>]=b2ׯɩvssKNNV(NNNUUU`nnuEkkkJ~s㦦, W@qq֭[R)3+WPC&NHbb&YS:a)))+%w0ZBwK 0֋qee%%R[[~I NC<9СCDS׮]#jkkM3RSSvZ˗/tvvVWWbO9nhh ~G """ HMn`2eԨQ@66'9 A%CCCTzgk݋)}Ȑ!rã)Ҳ{閖JxGd]J]~d݀ӟ={6eʔ۷744W7 vCCC:NfΜIL*++ i,kС[l166^bӧO>|H ԠA4GfddDQgg'1N/;R 4ioo'A*)))++JC ?~sssuuֽX 0R [v޼yIIIdJךax<뉃>,//Ow~u#&㷺񊊊ORkkkKRL&SRuvv\z-rΖ [[[T&idr333cǎh4Z\\\MM bBsyCJD"Qտ˗-N:ܚ@0l0 #jX,>}YzhRnqSS98T*54665lee`ҤI2,00LLL ViGtttH$'t{e2&q sAU`&c?l럼eT*Ϝ~OMwqu5i]ҷ/;yaXffϟ;Ε䕡6!G޷^zTVQt 5 )+ʥ rD"qLlK89@yq<ah2F6zM䀇/F"|MDŽ;RT*ՃWIx钏_Ț**-=c$66)?l~s:7gft0b-YbδukvL %dP* { &vx0?/{A\uٹ.y9Y2ب_ɘ %XD7zhIENDB`taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/docs/source/imgs/example_1.png000066400000000000000000000621631514602004300304560ustar00rootroot00000000000000PNG  IHDRwm pHYs+ IDATx^{@Te 3p1"覀JlMXeOfZZ/Flj4l.Q-YZ )2&n23 3Nbzڒޯya?<jϟ?$rxdt !߿E^=OZh4znp֦lnoow:C~m$IҢhzoCBBFn,p8?$I jkks:AAA---vuufjZ,!F1LW%bz}n)~}||ZJ׽\$zm6gON|}}%I 0LOF$/[*>t8Nu7ԟ$IҸm].UHYp8|t>F%jK*&Α$$/W֭Br8B|otf RTBIB$!{+***(8XoNhs7 9g "**귫Vz{{{nCWW#t1 YRyB!Ͼb !=S\>:Q\qJ5zEQ'vG"z]K !z湞1.lLO?χzw sm^}glPEG>Vk燏x.LJi|i]7OO{յھ.a]F薛'곌܎SwB9g`xƌpx?&\2~lϴ?'%>-mPEսޔ]n>}ݙZd/XƘ+f+l?_Ș_ u~$s>ɓNO>,9Nn۝ϲȺƝ/N|SNy9vlL? 7_;6&܏7<dHR.mB|R !4z=_*&svnskwի<7fSܼ~5Fm޹鳯9xnvs|~s뽥&\2~ނ[d>l,Y$>WGj1'㦬[^q+/B\u7xʻzCUØ19wƮ[>0qBEE߮^9̞t%_1CYNzpoMsYwys߳s5 !I:5bcǎu:.uvVәek]`*&C-Fb߇ 4;vVV~l>OOUUqcV_}͡j6[l6Y3ۋvOJy̷6]vۆ*F!Hjja_~(zOԹV1)1oOV~V}owc"!~´_>/Z}nnc\Ng?}N?LwHPu[.Ckhh;q"qҤw*UOHTT*av =l]Boo 薛j/Z9 檃nBCŜp^ryu0-zY31Sj 8!v/|Q_}g]9dHDPWMi_=gV)S\qawww. n!*t:yp;_{c֌f̱X,zpq<ˏM̓C{aAAnum <׾]o=B)߻fu#OeK>9O_|yW.>M|ŪӿۜW,-+_vφǴU錹e%+TYw=2vHU*9lk5~wנV)p//qe{߻f ['ZFIfϜOM(h4n?0qGo+pxVt:k>?R3uhD"00pQ#}#F $骩W\< yO]C*W\sﯫGR}SoZMmb[iY|Ι\>?|׊);TQu\z8}Z5!zř2ڻ=Ͼm ;YpPcItwx|5pY2sw>};_~d2>ukvuggs޿^y>19OW9?p8LM>omk /1l؟~oyjWgZq{xx_kӊQ 0CT\Ӣg3!*L믏uOn]zl6P6+^Z;p_MgGk4/$駞>X"S\t:$i43g:ZVkj:Ҙ S*JI$< ~ԽCcKKGGV$:dlN!)N/ZRIp:]]]V;2rx@Liw8$$IR tڿk#p8N!so8}2+++::ȑ#}Hz䖖WTQQ;[ouڴiv2eJLLLvvϪU⋺^Ì ɴf͚ŋ_Urss=#?˗{F-h4nݺuٲe}QQQB⎎‡zfUUU566UTT>~eB yS}}{ 5Mss ^CyuKJJjuqqqMMBXVybl6V]fϞ-/ @- LOO_hO?٩jZf !N!N3U%ldֶw1c!<""B>Q~zhX:;;CBB e ̘`I|||NzQ!DiiiJJ_hhhrrryyy_aYYٌ34͸q"""H9cq7l_|QQQQ1z7ݻw.Z(''5??b`@s_~pGnχ39phP-ʣe@yL( 2p'|{9!Ę1cnz9BTTT曮'jW\WW?$I7o^nno}oxxc=Ԕ>?7pèQ.2/{_~$I~1c򪫫SSS[ZZ\ 7oޣ>аtҩS&m۶5k]h%NO?袋wqǿk&""w,X0lذ7|O>B,X`v_#"".\8dȐo~5tPӹ]v3 X,꧟~z嗿[B/q:K+t[o2rbٞxxF ?+VڵK>,''7޸k4o9{loo{:n;vl޹sgEEY%OJ:ӧCN4l6o߾]!I?'wn#Gr-7n9rٳ)S> 11q̙<̱c.r__^z366o}-[O=ʕ+j֭[[[[Nʕ+/Yf=z4//OFq֭˖-s &TVV8qB{ |@hv߳}SCMLLܳgp N8!IҲeˊ{;So?U*J$7ݻW.Zh˖-կN8#h@!ܹsWUU9ooZ!=z뭷>o}{ {رCjN:URRo;ΣG !R__R +j#FذaCDDڵk---]wf[vСCWZuwttܹs%IڰaN;L&/HKK{뭷orW^yE>oZ=*>lڵ]tի>aÆoBL2eN:5 <3Gtsٶmd2dNСC_G!DBBBeefsD1rǏW]uU]]][[۬Y^|E!YxoAqA#!\>,,/7?+Vl۶mɒ%尬/袋t:|p8N8駟&$$HovvvvttLaÆi !`0FaZJa0 j2BCCۭV" `ܸqo jkko¦ʙ3gΚ5?/1ܳgOvvwO&'''%%!<<#ܻwowww]]d CHH$IO<9v~B$&&[6}Ϟ=&MjhhxV7|'HHH(--j}G]]]kkQ%&&uww8qF o]cN$;6),,lĉBZqQ1y? !!!W_}|d2ʗ:ȳǏ뭷^y{{$Eժ=~w_G}?]2րVhF+ ۼyj|}}onSN׿ iiik֬ٱc6//:!|˫p֬Y6l \tJڷonB;vlIIɿ_ifNq)ײVjVCF {t:N쵶Lv(55u߾}H\Wt:ܯS`Zm6ۖ-[܋{uuuݯ-++kƎk4g{u'3Lr``^+}_}#<2z;koo:Nq΢JAYCCȑ#e2ߞ@8c;~j+%I0aByy鬨={VtǏw:)))^^^jzBHNt:O8!3j(J7h4駟~Rf̘QSSt:{ &N(IĉO<)0a܆###!C,\lN:βtN'IСC] f͚hRSS=N1:;;92gΜ^~_r Tճg.++s:CBBjj4ӿ}||}:tHUoǏMv?9ܛn)==h4>y/7޸yfݾsΒ|׿5;BL^xAqvm?b9y_\]]3̟??00/5ܾ} |A!Ç[ 2|__v{= 2DQF;Vd_u]'ӧO+̟?fy߾}@OWRRrmyn>{Wj֨Yf}YYY>>>Vnii?~122K[1iҤaÆ 6lr?dѱcǎnMUVV;ws_rss=#pG)˗.]222=Ubb+.lĈg~R&Le ?V;{lcҧNze=sp8^ykϒሊڼy믿~pDDo[Zz`.[fffNN\ A IDATu]?0?eWeb{^{5NUWL( 2sZVljj8q$I^^^'N(8|]G޸qn߽{|gzaaErrrZ[[+8{ 09/LTcǎ0 4iFinnCk(/`8ۻ&L~!D@@qx4FZ`Ţ!l+t$$$$$$x@U˼Ν'"WnGGf{nj#jxVk!N5t{@2$'Z:ohhÈ`X:;;CBB e ȥK>sZV3!DiiiJJ_hhhrr<YVV6c F3nܸB $O򐖖6hРիW˗WTTs=*BTTT=zƍv}ݵBE䴶[,B (y\@x^&zs2jFQZZ,D͘1Cь7.""I?OJKK4hի]˯ڀzHNjkkmVQQ1z7ݻw ! -ZښoX 09/LTrz1-ʣe@yL( 2+++::ȑ#}HzefffM6mذaРA)))B)SdggL6-**0##d2YfΝ/V}HzLѸuVJjkk M&l2d">>$)) aQQfjll+@ңek.!DEEѣ7nhw][[+(,,\hQNNNkkk~~|g!^?*773?U=Dǹ1Ό 2>>1pT~~~3΃d2f82+++::ȑ#}Hz䖖WVoIN+t+Vxwz).Ibʔ)111>>>V/222L&Ӛ5kbbb/^~^C08cn4nj6]nWXSS~. h|||qqqGGGcccIIIRRlƸB $=2<*p:}G8nܸ'Nu]ޱcGWWWXX`O4_477ˡ` 50`?ƍ{҄j,^wOfе꒐q.-SV63fSZfsO:еR^^^^^q.-9 @^V ra0,KgggHHH \ZO㓒g !JKKSRRBCCȲ3fh4qEDD` |^٨{T*UYY/G޸qn߽{wmmpѢE999^sBG 932>>1pT~~~G(Ke2fg hP-ʣe@yL( 2|رc]SLə6mZTT"##d2YfΝ/V}HzLѸuVJv{MMM~~Jc׍7XXXJ㋋;::KJJ䰨fUUU566` <^1N>:}"s̙UUU'Ot%aaaA^?"!, l[s 5q/ahg/(Kv5s\7.:u)B.{1?dvC3PcDHBo,icu=y>zu~%e !6ͭs8Zk׮\]կ~5;;BUUUp8t:ۅfz˖-SSS---CCCB&W=sΪ -6-;zꩧ9k׮͛7 !srrl6rzz'OB&WLsa߯%PhpppDBg?{7;;;66622!(,,looznD Ng0wyyyB&W̞)AK IDATD"NAf4aÆ/ !VR[,0>>.j.c={={vttTa0fgg<DTSTTTTT`X3{f{թ>t !dx< T`XYw]TT /hOKOOWǙ.+|ECu Uc)-ڱc~p8l4 4%%%--n]]]!???33spp0^d)wٳf͚&u:<<|ȑެP(6<<,hmminnt8@ ^Ue;*ƦGFf72= C1 Ky.6Z&e@>Z&e@>Z&e@>Z&e@>Z&e@>Z&e@>Z&e@>Z&e@>Z&e@>Z&e@>Z&e@>Z&e@>Z&e@>Z&Sϳbc`8|J$Q0Erc湹uuuc``@ wUQQA!Npt fsuu-[ZZZXMp8MvYUU511%zfEw444477lxaeeOc\g h dNˠP(ˠt^ \ 2(_]II1 \f@2%AeRNa&R E() Lg Hl,S3 1 D8\J(ˤ#a2D_)aJ&dSBJ&$S"< ٔp$i&RNK 17sssWTT$''wwwBĽ{)}p8骪v{8v:B\]]e˖x!V%U3wYUU511%{=vءC֭[c!Į]o744l޼;B444477l6!DeeOZ&e@>Z&e@>Z&e@>Z&e@>Z&sssWTT$''wwwB!!DZZ׾tUUUv=;v!l޲eTKKPUg;wВԽ{;vСC֭۱cd2_e__ߡC|˗/ !srrl6rzz'OB&WLsa߯%}}}###@DgΜQ5#ueaa n;///^sĞj\.u<::jZ###O>ڵkϝ;wĉ+WĬܾ}b1 jrV낡:ȧgggq 0z~͚5bڵKa0WDTSTTTTT`XeFul2ܜ^7^o0|>O[i4`tʕ+ T`Xe㌌K. !׬Yz> Ƭt\@󥦦.c̞m۶l6TVV/wߺu뒒JKK_!:;;KKKSRRv`0gff ,-B^ĉ&ԩSB~ZQ~[ CP[[yrrpx!VǏxgѣ)Eb1 h h h h h h h h h h h h h h h hO3ͭs8jR\\\QQ ŕwy3<#tUUUv=;v!l޲eTKKPUg;wВԽ{;vСC֭۱cҦMnݪMsrrl6rzz'OB&WLsa߯%}}}###@Dڪ,,,looznC]YXXt:`ˋ`5eDWL!ju\xttjݻwGV_b q5t\VuP`X?8F^ _p:+ CJ!~PjbS<933c4ձd plii^F1 F'Bx ;6ʱH>322.]y7 !E1=\ssXzz .+|Txffo~= 1ٶmf3Leee/^|gMOO755y<Ҕ4ݮFvuu |P.`5Y,8qd2:u* MOO H$N{{{CP[[yrrpx!VǏxgѣ)Eb1 h h h h h h h h h h h h h h h hO3ͭs8jR\\\QQ ӿկfgg7x_Bt*Ng{{l6WWWoٲejjehh(^䪳̝;wVUUMLLhIjj޽{;vСuرCSO9rd׮]7oB444477l6!DeeOf[WWp8Ԥ"99% t*Ng{{bl6WWWoٲejjehh(^ XtvUܹsnВԽ{?7;v999 IIIOsss Q/~+  cx>odd$! ۽^vt:`ˋYtMj===SaZ].:Z/Z,0>>.j.c Qw? Nwɉ8F^o0C,F'B/ԦGFOy)kOѨM&S8|Zh4b~ox< TCX&tuqҥ033SQ>? >/55uP`Xel۶fLn!DgggiiiJJJZZnFU^^n0333XMczO8Q__o2N:%jll Bmmm֚IXU_ߌM?S1s` h k+;e@>Z&9,2 w gLY&e@vѣ>#̓y7^<goef@|Lȧ{饗>gG7Gy$6g e@>%!!!6;OR_Ek&6GFF^|Eǣ-V+_Ν;SRR>^zv !rssO[nկ~hjjJ{ 0[ljiit{tݺu^;{Iًzw&K؋??ȸ|ぁ-~BUUUp8t:ۣ6lOnmmAQߋW+++gy&:۵kWEE? b{aZ+**rssC/˗^z)dgg?ښ~zzz:MVF~衇FGGD8pԩS_|b߾}wfs]]??WVV>?\{!>x`NNNmm>;77j6;r~klPԘܐ[nrEK؋W_}… ۶m;p__BKbq EqqqNNNCCCRRO燆ܠKbqRܹsK6mںu7D?:.hbݺu?я~ӟZ,_TׄamVƧ /pE-~SNmݺl6Ll/_t) !?s΅^{-++k͚55p}t~۝E$H$[,/R"upC`kkӧ{!xx{ꫯ?> ={6!!aڵ^vwttOBq̙967D^JHHؿ&_(t8G%܋G}T144+W;wN 2==vxVF˼p¯$==]ϣ+WLNN ~sS(zD,B333zkJ\{aX :u\Vu^$&&^|yV:I up^oBq…K.ibBc|>dt1/VU3gtttb^(m6B w裏5!Hwމ>qҥK.\tnK_/0%%%ظ{E;ʸc>`զ@l6o z>|Xq…xn򗿼vZnEI~^|[R5{#ȂۧMdK -\ ??0^x?zDoN^߿nW_}U+6˱ۿ/477s/ׂ{ӣ%%%탃B_̙3333v۟{/f/;NBBBvv#<׳}X%g%K EQ80<<KFQiiiyӿ ~[ ,Ӎӧ|ǚ!Ţ{k׮9~x(zB>nz햹R/vgdd[n%]a6{1קwo`QRϧ̌y[>dee-}X%Ekdi{骫~.2{D\.WWWWvvt77o޸qc}}s=SO]!+)g/SSSoV?;6 Zߗr|>]wݥwu׫z{gϞ5FQ}U~(`0gffj{C IDATaXrrr Nʺx{Q,ɍE!BB=:'?^(4%%%--nwwwOBQPP$HMMݾ}|\Ks{qgy{tSS;X\s-t;vk[Nmذ{Qr O,?O?(Pe֭gΜ޸qƍۧ.M6}o3gyrrpDu/ݻ7nܨ(+a= %BiӦ+W\xq^K_Bl߾]7++1 OBQPP&&&̼{obAŒ^aË!\ q պyf!DffC= _z%!DFFƾ}MZ[[<Xee঵2/+J9nfe@>Z&䛌V?%& Ug9YfggԱ(S zEQWCsnn.?c^au3z `XG^=P߰k+_!%Ō[ձh?q#W|n[??_4,3$$$D"uԟh O{(PHQp8u::UרZDگ%ΟP%AοCQz^,3x/'z &$$B!HDQ5PH}gtTdH$uM Z>DOc~+ z>h:E] z8!!A'bGTL$Z,`0NeF"x.(:rZ&P+f$ꎹ:R5k?ciL}Rx>= !n}`ݢ\0 My΀thIENDB`taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/docs/source/imgs/export.png000066400000000000000000002322531514602004300301230ustar00rootroot00000000000000PNG  IHDRmd pHYs+ IDATx^w`2w YmdPAe,[ D 2*/YJ)ʆwمBIGFqor&?}%0V B! DQĠ kH fHB$H(B6hZT<+~VD}rJ^V"J?B!h (/oTT*+@$T !Bx,_Ped)B!g"JsB! iZ!B( u (Әh.{Z&B!-թSggq6J{.YB!IK~S%pqq  !B΂[ͽtH$ߠ~ںj[_]D?.,@!'d7n}<~B5EW._xհNua>C&[LBUe?iV!䌢7rqqpEsRy "ED}Y3+++eW;.2GwotБ\7TI1B}Ν&ލgc{/>'!vmcڵ!,Z3x1= ul E[.>h}>(+):rp_1^J9YLr,~Ü?_xq?F!YA= o6f܄I *60:cP1.>ؘ /M|ys}>Y])z2 -Q*wZo=^QUpPaڍ5"W/]VKع}k18FQjZX,=ɉZgxx-n|XvQ#P+,lmZڕ} ,^pԈw5OKmb{$nI J4rFƫ߹CBeCS|oP>q}?_|.=>5bocf6iBՓ}Lf/7`F:}I1*̉lu5Bhd=CBJ(U-[RbRRrIs[ӏ*!w۷;]ꑓ5* M4"I"Ho=mw:x؈C5tEtx-,?fexc>٣.]{nN: t4rĻ?z.\z}J",G;pA7xz<0/iŸI-[~ Dbyf@Q;u ~"m$CR^:u䩟)JmS%ڑ Z9vDxZdqe...ÇrcjQ (cgΖjѼjGzKgNVlZ-ΝР~=x.I;oݾhv}J",J??K)pDQ *S2e2Ìmڨ/]pJLj5iJI0UBȡ bgk{|0eDOu155͈G_jO?tܿyPF رm=Rt;S:T*X 5.B6iZ;NfC5jh"IkLT*'Nbݩg&N{("cc-T`xlI^y\ޭHQOuD"Q /&*.%:b Y88ygg99o(J777&U'DT (([7+-mZd];lTڢEsHP(oݺ" #kӦL(VXXhhYIzW.EQov~#22S0]a0Ub\xuT< -YWey53O)Q^.T{0SA㳩 _Ps۽cYqҲ;vF"Yݷ_%nTT3wH4y+U|7\ŤӧOwHɓ9{pzuX򻻻);v5BaBdq PQ[>oqPVVny=L*UjT2hPooo.YrL!B@-4M4EQR{ϞZCK$ϼKT"HZoآF$Q'A!rdՕ (Ƴ"JEE@bD*QдFT\B!AD_zϗMkh)( ^c4>"BYcK B!g!BUg-!Bql !B fK!B\0[B!B񿴤vp\2\J. ҅K¥tRp)]V] ǖB!8Ѵ|ʂ,YBB!܃ql !BD{!Bñ%B!VB!'-gy#B9[B!b!BB!̖B!`B!%B!.-!Bql !B fK!B\0[B!PҸq~)::,`!!!BΫK.J^^YǖB!T/eeed;[B!P5ry2d fK!rK,!CfPh߿?Y~!Lƍ"[z.))ԩSiiidr^#FQx$B#P*2{G!{B4̺9m۶QAAAb97ͱyM6Q2 @a:;!!!88xǎ"(11O>d =2,..!K3d۶m;qH$ڲeb .\HXд3[bfH54*J)M(d7{7Bg6mڸq#EYmCJZN-13Qnee(J'=&߻'|,0ĉdںuӧϞ=yf Uo۶mۺu+}AД$fKLoo~c,61?9n1p>}J9 \>8""""BPe۱cKپ};Y'՚E;p3"+KJJ:vbj1D"G3ɓ-^w[~=MÆ # PUP("#ϲRr9T+\LQ2ŜgkT.YJ=E=[#c!5k?j}ɃCɘyff|LLbds+Vd3FHEpp+jSTѣKɓ=hډƖ ~QdHK,Heej0c$;;{РA%&&Jt4d  nA Zӆ ?'jyq?Kpޒ90U2Zt̬TL 6@2eJ```~J*bt7iZNtT rޒ9plL9TffK~d́XA)++{饗z\.'˜ѯC_ΔS$%%:u~;2ْ900:,B{yɖQ\"cXshBל9s"}|~-YD&rIP̛?rq/:'OoߞVO>d޼y}9p >/$$??Μ9#G,,,\n]zzȑ#6mi'TDaw!9y2Ƌų-ɘ}g„d0!LpvGR&=,s.N>ĽfR'OUO>III=zpwwg˖-3gׯh[l$ɪUfΜYFxPTdӖ`Qr;b$TU߱%Qtc\b￟1N:E9rdΝ0~K.u1000##cʕEEEꫯƺ:tHR{7n%%%7olӦ͑#Gt_e˖sUTW\ɉtɴ=gfc椩&M[mɘS:`j+4LfgK;>Uj߾=k ^paQQQyy#GVX_>}9SN-*..5jԛo:p fffիUVVƴ-y{{K\iVVV͚5CD1;-;7y}lx3kh3̳A;QpU2Td9j*AuȖ̊ȋ%&_JEQ{f0W\Ǐ2҉' ŋ[M^|Ç 5k֔d/L֡CSJ BS.8h(nDZQ"@/"[(26 0Gp=xwL|~I>&IX U´FSTXqָU09hoS&rlI[7ã5jՋ ^ܩI@Vb.((`J9M[\(--uuu>uss3V  2EQ1v*///,+..w^7_S1]dJ- ?0FpșU05!!Ux(ҥY ,?(ﶸ9  A$O KKK ҭ`BѰԄT !@%Hi .WmА,6ىGڋ:\(---11,2!8ydwFFMaaarJD"Q.]`NNNppNpp Oz!J4iz] Vv]JY-;.PT)^C- HZ'C bxTTTT\ǨI '?'stm߾w-..~ b?NHH?~T*=p@FFܽ{744ݝNJNN5jԂ V\WE<Q+DOF P1iB ETTTHĖ Wu7fK 0cE)JZ'N>>{ٳgu /f&?痾;zѣG{a\|]vlԨ뙸VYY߉hD"< :Q1iASL2ǒ d8bTfs PU30Y'Nxؽ{J3fLQQw}G.0bĈh?MlOsNڵkk3@tA~Ç٘X$8'?pH'[OhvqqqP׶6oެ nW"[]''=}GTr&s0`'(gys3:#d2X,X5"< Y?T \\\-?!gb?-ۚTlD4 V4JZjr\Ν0LL}8zԇGQsF5Zhf%P^ϪG84⢀K"sNBv¹7n x:ɹrrFƃt Q7}RBШaKWxM 卛6=_q)rޔw?oh_0Llt3 ~nUaĤJ,ՎXogKFF+ p<X^P@NB߿_6)JI&S5t&ʊN*MvRK֭/iZjMű-۶Teny)4$/]T*KJJ/]޹𒋋ǟ>zi,OkL_JezիWQL'sSTS%cH̭Zuْ F!( DrJYFӴL&{ѺMRy⥋k4JL=?D.BR2 JhҘW;1/^ r|Ӗv=1eegϞԬYD{u'YY"ϗy !>EҶ1; f5͘5m,k[֭;{:A<9H%NƐ[G;{C ad& 4>we5g+uW^wZ!!~,wN ݅No7os5j0<==}}}>+//*..PFPq`Қ%JP(|6a3i|6S0,AdlLYB_X,f;q'ߕCP :w_L*.nHnU%mY*_B4]˻I5 WH$v\xxxaAԤTڥDRG,SPϘ5cD" ̥;gl?-\tI*  IDAT4_``H$᝻wdd<|+??WWWOq}w~#ZE K$f8vmBRrfTqI2yӧ7 2ܼ0r}[_2<J1jB쐌4&p`. n՛93?@dg{_<ϧDyP=CPLu:Db>ӧ;X*D`¸&yDzEk}>+k9v䑣`_ʁe~g3dM1{ڔIwl+G_xNv&oߗrǟUʄ< S0@_NNNû MڛNX*SG T !jY: ǎSN@XXτiѢEf**{ Ǐ?ydZZnвի7bĈo,0ُ2"屲m=]T21zn~Aʼ q܈0aSt%$&1 {O~k9.y3f}E?yj'H^~u#H(ؕ9SA#dx ,P誖gKF!anhj3M߾};wT*ϟ+f݇رc\\E-LM4MS%JI5D˿T,H%U-jD"EQL}ďiCv]j> :՘K:'ϖI7otU,."ː!KNNv5l믿vww|d>̰ P@Q(?ME=z)|Ȫ*n=mwRlծyΝ tmF9s`ԩW x???fbYD"37++0`@llʕ+u[zΝ;'MԶmۣG@nvڵqFW/lРAYY٬YJeTTTDDٳg4iɓ茌[n1Μ9ӠAJRb^W͚59ܓ'Oڴi[jmB U$m޼yРAdi4 2! x J2ƅ%kb,ц$$$4ݿR:(d/DǏ4}0֭[ڵKR={lFw*///,,/E9՘3ۻ@K\ `AAiGgϞ1ׯ[٧OL^ ^[XfMnݦO~M64-JH_oӦD"qss#һwo&;}4bO>^,==}С>>>OޠA쀀OO&M,]aÆ@RWWW汫C'N\t `GBG!>'8CPvvK'awqF!<{L7bC*J_&?h4ybJO>>>LC\JٳgL~TbpAwgѣ2f9M J=z$ڶmKQTDDDz bccRW.]њzD":tN.]R+;i Μ9c~~~~"HT>~X*4}ҥ^zy{{D֭Ky{{?~XT7i҄(CV߻wSN̜WvY;zo0EL?pu̙Ν;{yy+gE5:VP T&hҒ Lהm+SR%6l[ qqq?MW#q'LװaÆ rڵ#G0͛7Lipp?=z0 o>Z?dt7KTdĈڧ.]ڹsNu^>-,,$.Dwܹcǎ?~k...3,^a;S2ixO#ZőQ#lݥl)((hرW\a#G,,,\nڵ}83ߵۉ YYjjjjj*eEܹ#;vرcȨ`vBvh>|Nf.B&%|Gd[O3+**>}-[>DBQԘ1cRSSMv֭*>oFe5D!d'x&<1+Ubl`0-TKjhٲݻU*Օ+Wrrrkժ%?RۨQ#_cL:l_%dT5B|@%ϯc֭[n% h cKNxt=>R477yUf`erJeAA39h>!*愲8-N;i)11iiiډ+g!%--n׶W-tSeeeźAWՋy}2m&;\%nZV !&cKK bXd9C/,0KI_5$)ْ}*-??Vl$0Af 8Vɉd2X bqvv6Yfݖ*s6ܵ{ 0nd%v&-Ŵiݣ[W2%pyN ӕbK΄f`ɒ%d!~,!ySϧh|TqH_ΞJvϊ-CSȡxG¢~~%Vhzw!G>oΞICCC޽wsoݮxa}zu/yц]{o0ig\9z`ނ'M%n[lM^MW)ڼuj4T o8aM^zo7ppq}~N%$2PT{x>ilqAl3B+7 Q&FẂ}BÖU7cwӕ ouhK{֬IF4hnR3f[7Kؾɋ@$.&7nZf܄IW]{wE {W-~姕ݖ8?|wG~͜MpuuiӺGチoō7:Ν,5*9#w*2wlB8Aklt|dvt]=B1<*HCFUIiB,_<QZnnnF OkT;///K&}6˜4aC ܖ=//  Чeeee!!?CJ<!g1fAl/R4zwkJAAl7 v{00*2(ؽw'<=E"QDD6¢DzWZ4o&Wjk^zM :X"H&эcךD7滹n4msuqԿ_CSi޽7ec\]]>,y1*]E֕J"^ݺ|5K*T瘴&-w "5Fdǝ fKmlq{ Z BY:a^=30GC_+W}{~\Rܻk5Uu[4PJvm>z쯾zC)}=qҔc&~7:~v :cϾnR\Ͽ]:wb*_tyWR7oٖ/ڰvՁvҶu,Pʞ7Ϸ}"vnHd_2P3H%@lq+֎=l̼_d?lzLE50bZ|T-k(9Z@eݺAFYɣ{i'N!$TF[בQ~'cdrD@;W!"s@O34LX4cK|:֠-n|ނ]1Y0&p9ds [(:j%%%:u*---11,vOxTyŝ BɤsM*(ӀwlB8A,|+|d݂W A3iӾ\293*%Ƿ~ڰŅT;;u~_-&/r,BR15^URr"/ f YqLZIKrB&~pT 4dl+j>aTMH#~V]gOb2VT*T d_Ram.9q1 r`kǞ(F'!mٱ7-o/Owsdž+C1Lkb]! vV|+|r& y vg%]o>m<􅐃O*9q\.^ODQΞ-qR)m:%wbv2in]"9/IK:*O˰lٰoD4 }%ohAn7FYvt%$$l۶Zw!>ܽuYW_ |>5vտϝPܸ.;>֍kGS<,FqNZ0 jlLXmGR~㿩Y 6/))رc"(11O>dq5>g9'β9` k,G,}NE*Fdwoh n Ƕ=.YƓC}}\m{;'N_LBΤ%.WOǍ0*MYYfL;{vηߴjrUo˷lݺ#i縱c a kР>:ݻfk(,,:r(ܾ|-EQ?8lOϤ͘5o;VTlKϥ}7O'}gf̤iO&Nxo0V^ۢߵd9qTjڱgYeٱUW)>>>((KqclwcڴֵL6wtFxŋ4yڵ_fUVV{#Gڱ.]r6W\s 65{նm~[n׮˾r68A{Drp*S!k3tD%vplq6*ϖVĂM1xjUE L$L7Fhl>~+ /ı#b8/?/8D.ݧ')C!_in_+WnKN103&/ƄŅT;d4Nq|ydˎM>8VC۱,o|AHDIbX,s 5jDQrK.khFJ$TڼY3Ҩ6[{{{{yy 2kjz߾&H""4cϦOD <=TF/)\-іrW3ʄ .3̈́EAcǎ5k̟?/()y~~yNRMt5[2V`}lq0 tYMlV o>m?'!d=2P 9q  ijY Yବ,R,(({>7mOHH`?˛)>OBn(=qj(+W^dTPTrc'NhӦ͐!C nx>~ْ] X)Y]=Bܡ 2t)owGdz-Uf ev8$''kSIIkEr nnn񉏏_bEFFF&Oێ-n0ȁ*--m߾}ZZZnݻW\\[omذӧumΆOojg5͂mdffΝ;W7r[JQ [ xtJl'[܉Ϥ%+u* 9O-@A).S@֔VU|_8m]0`Y`eB_$-FPe!i[pV!>o΂sKet7Zj ]= tu1v`A 4=W5 w%J7U/4*t'-رgn^qBg5B[`ۑŅT;Tǖx⿝x6ų>ͱlb&8ku t[wK1¤ckhNg+ýĺ;Aw1jrHTl#%(~bn˨ArN\N șK/OZb;!NPFFFD'sTdmgMcTMض'dUF6`ծ&J^`r&7҃]JlU =Rl]ֺKxitd;Ȁ Ȓm۶ա/?>yŊ1cThwdLD?0֎=ْ[<' ֘*C"Uuݭ2hKMSP`)e"3% J%ぢkG m)B`-9qb`0pN\s?L$ھ}{߾}@&Ӈǩ&=PnJ?[mlq< & i9qJM[sh;r^ybiĴrjj\B ,vX|R%u1 ,Հn˯ؗ\=-ϦxVG ykd3='NTFDDLQ8T1Dύy,[V34\'C..@"6i MZb;'N( KN9niaT DZI!k5ڴ 9qSLTʹO>ѭ茦J m7:DnSJW/* d_&-1OcZ`kǞUlο-jL^ [ko?AgAWvvСCs%ΏiGRl)6p Ή3HФ%K܄؂T՛2gKBۨm|]x_ԏpZ|W4ıuΎ^K<ݺ b āiq||SoO*$tGNjGr@RбD1ijY -o0hKcKU:9!!a۶m=+f{FB*@ct!J8'-Ȁ,/YdG3ldp&%%:u*---11Q7Xۍ25ڴ c0@\h}RO@Ǥ%04iIM} ?ڱg"JuoC/lojӖyXc8GRm2\.`, NTa$Ī[! n nAAqƑe-O}`BWOh}\mӔ`Ϯ]zSf͚n\u*wwnqqX׊eɻv:fOF Lu޽_xxFbvYThC8ʼ9j5w24@|||PPPHAl8D E?b Y3YMAWωӗ3wl,ߑQիW?.+W]~^{SL7Xѩжm'V[7]xj/hܸךj+W+' Oh_Ucڒ1stܗ {V% dqqqqg qP(ãEY g5iKqc٘nlWv`!v&zKgWW^=w&'yzzzzxlްgOn11m'֫[ۻmۘ/lݸimڰ^"˲efd@>pPÆQlіj?9q/jV%sHBۨn0>>^3e|: Y3lS e i|%KQg7vtttJJJr}n۾uM[\~Kj~aZ}䩾qq^n.[ZZ?"">}o,r\@%UuNien9āLlgpǢE9ϓ-n qU\فsV\y…˗//[,sFIɟLpjii?iޱsgӧzyyDQQyGQH" MD (MtQ)AP׀EEQaCTDQ:* @Q$T) Hɲ+}gfv6s솆cC\6lԓOlKޮO{ O޷^~cCu:ڬWVt:?O&}[cO? TTV~DT-N-#ʏ'q%y=/;yqn<68rѐ> DB# jyf\TTG}TϟG9{#iQG``pHFE&MW-UK'';ѻ '~K#0,a{HCH_ƎXXmἌ컆/0}zIIȑ#Q @` +\S%`N9URLp0&2͏/S1ޒ/44C0 xtvԍS8 omwNZ X^T1q2zGl]Vtu_DoQ1xccG>VOy6Lhذ 7%,褣B9DL Oϖpv0~ MhǓWn4cdƍ_|&GPfhцkN$W/zz+" ;;C9 E5o޴?[1hO `OkKsa\<8 MzO!Tƨ 0TggK~hNhzC̖P(Q҉+ ]fçĘ8f 80ոi 0WA!E?~2NC[A|ݜO.ONn ırk2&Ahbo(QqTBl*7ݻwݻ;ՄI ^w*CJxO9J+>Hbb$I Ҭ,j/YD#:1&N`7s8û_!*0h1qK (Ed@ڒ眝L!))9miǓ[Ilٲ;v,]M#lZ3fLQdd5Ǝ61q K;\nQז mK=O<62Ngaaf4 81 xȻow8]y嗗"T ++az/K_^*,/v8ḫ"k['t">>0**ҢjhǓWh^|Ś5kEFhb8r@K@m94h}ʿd+a4A0S:.vTκ1œddd 8Pk.`Ku|.oMK ىDV$~ >n 3x\35h1qDDL@uą7b4_` M| %+ Qj4 ]ݲZ1qp OPhi~&2O_߉c= ) ~KCrMQR}y)DDd lx 5մnLPgKzvtY.Fispb :kRDcϒĎswyvhf3g,x4Va`d?[b 8(?~x X^1qA%Ѧ/]&_pMӠ}> b&pyu3&u8' <1q<41vv"DDV$d<n ?auxЬf ?e1`/8boZ% mZf4#I4?4!fK(s' 2F! M1 L펉{WF4 QEiiѢE-Rz%&>eD4?ކV|<]~>U|||TTTX 綢YZ,^ ,"&MdH?%W|v׸8U@c΅%83K0GLh (y@0iT±ˈ"PD4?_-xoylt~{4k3ey%&N ؄8Gzk Mf;\n+zvtN35I*l=Xq IDATm*q[fjͲ82!bʇ-Q(c` 1VggoI ŽéO'E?~2~=[|Qe iǓ[̔Ř9 RAc-y;\n+zvtN354S @3u61q&QEoLKkys4a2&>K-1`<~xʍ F؇}1qv懦Ӡ}*l־O\1gp3;*c n0N«:zhT88@m9$2#_W $ʏ'%O2~ <GUhk,|W_}ѣǎ{뭷4 4&=S뱱ʇΖ$H' 2Fp)ՙ88ԩSMPā־%K0󻃼](Ǘq:J7Z9n*#:t~{!4k3e;kN8@9s4V-,,lƌh gqqqYYY֋#*zD&))-[N &0P=FIL<.I B(nyJA0 x W~yI '77᧟>k-/җ1qp;f4Lf7q8tw+3w/}$%%)M܈8`}rLpMCi>NIV[(bMeT t &,SDL@`9i]8DDV$NI doqqq9DJlc>>>~̙O?4b`P,/18syi*S4AR\A?4CvJ$:~%80##8Te$ cވ#;&byI @%ڴMKL -Z^2񐘝_ȀǗ}KU*Qe i+$ 5YT(?4T(/S9b␂4k>`CoQ14i(N3ܞQ7]O/c ""?\:*}O& 513~"W>K-]I/Z޳ʡLM]\tGu"gjv1qߗWp1qȯM'Ю}+gK3f_|1j(| BW"))9"ԾX7B'*Hv!بkov T@\J8=;㊌S#?"jgl}lAaaaNNN͚ֆYECNE,|]3&FR%ò;q0w'xbȐ!ܹs !Ĝ؄Ja*(f@@aD@|]@k07--^x/ rLe+$&츎+2D͏/మʧN8q"*ֵxN&5w:K-:?ڄᲊ֖pz#-~ԳFY^bl7W-/%&&nݺ˕0,F}3Ix)jsu:M$춰SipK1y@ dQ+,4{a *h ('4i$Ibx΁ӌv f III?CVqQjOKb䘸p2dL ’UCpWxP-Z~yب^CNSD&>>~̙E/{tiaaaNNN͚5JWNN:oʕ+-؅ax\i UҴGhCO.M5FժM0M,ðG<$U~^> @E0pνܹs{1iҤniڴiSyIi̙7|ɓ7sLXž%IgCtK-A!0ucög$y||Ϗ5j7PB8pWa7rN:5qDrرcʟ'ON?-B\qiTIfomKq5K4PoE~E{'XOL\+g?`H wh:;(z ۅr48|-[s?&v-1q@s<ԄqEsaYm/|<'[Ǔ$\X*$1q/Îñ5&&5k3М3;к{͆hpLhnzu`i y%*TV8ch<: ӉfJ54ӑn+24݋8LDnǓ${cvT) ]^Tߴ$ YAxHqECt^QpJ3b_O-A!Mw{uS;kxbЦJ82f!;;P<"YCẁw!tc' R%M{-š+YvYj{p85BPA BK5SuF?zy$I̖0hFԉ' Q~v fl>0GD:pڛt}83.*lIWzFI0bswڵj'2:& ÿz4KR5Q/fKA9amal Xod{9 ց|iF@p=WC( 50~1["ٵx M+DtK;4] &>>>**yd / +hÒ8"&N =SqѸ Jᄑ}xG!%VAkKRRҖ-[q:/_>`E'ǀ[ZeI###..N¦D{3y%&.00of$vv oxZF9z-B\q)}өcTǧ-a;,]@ %8'&yi*P E%𝘸=ߏ&d#1Wpo#:a$qb2;q4h=G%Tv#߱*RݱѬ ]8-O5l8zi/b_bVX}jv-[ MP\!Tgߵ%]]Ka̚[| awT˞fIȇQAW&1\V묘-ѳ$! (KY|#([tS1<.q8\1/֖tmK= -T"4S Mb /^6"&5ΚyO C{𵘸#FDEEEFFǣi=q0!jh][6"CӽLvI^^W_|ȕ<2UZ)] ٴ䙘8hKj#1U8a$q2ѠM$\"a*m#;ȰaG.+p{0D+Ƈ/'o޲ud k~cܶW32r>|dzr/^|~?O^ puy7ե|1emشyNsӳӿ:~"Q7nēH `;oF{zޝjK/Mx7j֌L\h_Vn߶_guEoLz6yP\Hėq:po4qcV{j6x<  o;h5`@VVpÊo/uǾfZ>C)SVSQQٌ+v zͷ?a}z#[/r}ky믿ru9u]reΔz޸iKqqqFFѣAv vnxKtήkKAtî;g8p{]e,`oȕ}ZYӢV'}5}իWBN!+;[o ,&fffEFDȟ;.V'US|x9?Ο?,))  /tc@ıҵs4a2;Chbb$I B`g.[+24݋T%[j6H*t5`L1q Sҏ6?WpBmSmx*YD{8]WjNr\6.;5'L\4aLJ>t]TԠ֭ I/k~=Ȫ_~洌܋ o!00Pvs+W鼹iwvq#4Nӄsp4a2;C( T ~"I7n+24݋88hͤO]Iă7Moikyn,@ q^`H # B%[{+n 06JJIzL#aY 塒@Pa E%Kip*qΖv9xltB;VBq{ XLIƎ[5-F& kAm*eLs|]͢gpY/fKA9amao% MEovl'Ua3Nb IDAT͝;*AEEEuԮ]+r8ƴ [;h=|ҡZMbLh޻) 88 u{Αӌ37=Jp%=_̖pv-"CӽUO\Q (h?z?3w\| MK|MqxxXX؜9s4=tڹ/}#W!1VL7Nj^c̵n֬_dxC;;/+q9{ƃBiX#pW ^11C H3 I{ aOe]a$P;ij ςԇh؋JL\aaaFBNrrr^#TI:Av /9( 7G\*F x%2|S=m=[z5٭vPJVѥkc]PыneTuןָe0i{/  ymRd fT322 R/Jz-?\qiÞ[LM4PciILѣ?sI^~e| bԼ,t_y[:)ȼRQU@!yՃB:pәšU]֙`ݩAΛj|2 Ҥʼ#WܟWP"jtsBt?W*#7瞸T^)z◛>Ҥ'{ks]q浨8] 9箺gο#&轝Tn ڄ=˿G~ܡ<9_j9wjL:DI~hv+qtk 8A ?;͒(2MLLA}W>h (2l/8˺VVN9.Jr|WBV}tu @*/Fs9uٝ~JκA\)tK9EǮ[pwv%n vdP|BQT;-tHZ}@`Ovۣթ48I]YE[b `Gfa*|m3gS_Yla8u9듔}./֖hDtî;-d̟WAEovl/SW@GԔtӅmkm>>RJVѺT#^'xYpD/NDB!첥+ J7\,U"IN_TM]q"YEseh`r)Np _c//d./Yt~v8h΃!`Cllө|t?9ݏ+24݋Q%OuE J^ U7-% P7,|y@ȼNTrW\voRY'])H:3QM"ʂwt|,s ݑT ':&w6zQIUG3|ƈH"B?b?9;pJQbkW,<զpW@k+zL:΢*A`W^5GA -ХvPtUgqc5W#ew֝*x<6d{f"#yت.G 0}7Tq8uT`]Yעi/Iׇ-q:g`@rcCp,w.o*",C5߂_Kӌ=$̮ߒ '##\\\\\V槗;qfP~ M7+ R1fh:׬Aψqk+&E5m_-vcUlZ]YEtGtШa+% ǯ(+IO,Mw{%"򋥤W-X\7ԵwB-<7L<~uGq;/jrEI'@wbչ=jd]uo8]p,oaڕar 0T #bLBAH8%l>}Wو@qp3DQ\*fWd"v EF#~h3F V *[uoxU ]CB5f) 4]T@0Ì1$/  bLKc~!I_J]b!*Qe i R.nl-z)SAc* vw38ΩhΉAbD$"v*v[@Yf+ gKEL[BBᆬP]y8h4[G6"Cӽ\wK9?(ى4ЋbŊ[lLHH|m8 'P 'pID.cӺukT2_̖l$3X-T\1qϢ?'&&JzFGHCAh@%MC^ H` 㿭Bq4ةqvяf%uJ&;qf\9c6H}84{kC+W@RROUC@5b #GT*h~@ P3 T8$]؊_-s4 waׇdT}?>ܳ> ID.c} c? Gkx㊅BL>|"u%(ƍ7nتWj3_XHqIѣ^zy }a.IUfVVZQ9(]v\_W%7`TVmǶZhժys=y=76lnX_>8on],KXz԰'FM:ownFVqI۶+/;ʿp[6?wT^=00Džkںi÷3V,{;qr8QΞ3׶njy'v:);[h% ~)ZS<ះyfރ &D?"~1[2y"CӍA<6&4{kC+WX:"mR p0jԨ5kFDDkh $~o߮-a 6Lݹ}gI|\⒒oy{5jxck+Wڽg/tﴴۼ?]r}Uiy{#_0~|ӛnL?Ï>jӮ f_v-yFWJwڭ_}׫WOuꀸ|m_|y^bnŎ]=֭Z=zEOvܮmFFF|?kbxҾ}\С}yy{MK;rnFL16忊8؊މA9.aI]a$!->A+04٩D dzL\ff!CT)f*&n)EEE}O/%++F-ZH??st]fO>ط_p,/|$.[k׎.y$I۩cǿBC,85}{Xr;_c/zUf͞[TTt̙E5k~S;{L[7m &/6lts^^ޘ|4qBժUlIɵ=zҥ˺| Y?޸эǎS,b┑PsHԄsC+(2Yvs&(24c\G+R.Bѧ ո;Kzo{˧RN.ȟg?_pFVV֗S~Lhb|fϙm˦IMr劬\QeffFEE]x1#3Cr6#uM Z"syCfff嶄DGgddf9jժ ._|]~øw9vˌ,Ix_Mz끇J`^tIl s88Rey)%[&sn 4~q'NWO4ðN%.~K  O+,8'*rs/f!o pu6kqq;v@e D]tAu>W;&FS;&̙3gIvGS uV'eggשS[]ܹsDyh!=өcG+tҹSg?~\..0L\+}&b Bяݕ4%"]wtoaS}hni7PKGDy,4,tW_߻{y’M: H;|XڑciG>44tovaa3izM A=);'/Jvv~gO}67~iޓKN5jtr!67_:i~ceZ>A@oz)6.coO3uDA"-Do} 1q]:uJY=Bl_ط ~% Y#+gΞJnn 1.k֬YhZyv䒈n 4~1[]v*vɗC+#0Ύ@wݻyw-I[PN&LpQU nW_}V|Ni6=؇މ5;Wdh> 눂(I " 'ѻiI ;r׹/ck' X-T-R7Sb=Ce 6Bفà &D?"~1[2y"CӍA<6D{kHXH!.K{S*==q᎘\XX[%Ztt®]8IΖxV33FA1跧(\G$,)))|]v-_~֢^d%6#wa}:wSOCǝ<~TkժySwA혼g%Gڶeط #Y~̲Z?׎wlۚvǽbf}yxmAlݴm;q,XڑԝgLZ;&F6 KvmݷDD(炃:u[xaBRl}C9>\[9>>#@$Eî;tӸ[R 6:wW@Yp|9&.q45{f3S_ȟpcÆ}SnǞxrm8uʗg<ݬp:G:q ]+iyk|O>SnݘhFfII+`\@qIItZꃦ-S=ɵj֛Ϲ\sf\~ﴴիj…4O㏵?&i> 5d4>wmsD躷> 눂GEEEFFJ"mMvlۺowʳ pm[6M5d͛'.Y;eM4[2)u׎M~~ :˽6_'bC$Dysf6p8/bʎԝ_z}mŃXbn;-5&YYq7k>;W^ٱsכov4//oظ Q*)IVjK3#qMo _LJ^tK*{Y^~^XJϸqƏ:@~`=;6_s_3?^NO\v[VQ޿^H48qqqqqqYYk Ć{ĕYXDHHH-:ucΝ;v |f:u@VV{oݦݻޟ8p\3M=wmOyHv;o޶s/٧ԌT]zy}q{y:C[JPPmڿ_ߔTYx?C]ZD~=gp\c))н[e+^'-R+`0nܸÇ9r=K)hz4ӄG^/fK!Qܤ̆x&!ms [\ &mRLL62$&nEEE?Ͽǎ~=8}̾%IZacZrK``ϋKi={۷ﴯgKN011QAFtx$]Ơߞf눂|[$&/%cއG>RЁpܹ뮻v]zu˻zjO9$!_Q%}wf%$z4VZk-!$oѯov@vvv9kCh;>_/^x,aaal Ϫ$;=q84h)_`U (2P6)7 in]$<-T"z @$ 4 9C0 .NH@-ڶi$X_ s:7Ɔ^b[bų _Ԏ[:5ĉFܻs>lrw6hp˯#GGG pj(իWJk9҂8Y4!00h7n(00Faa?QQQ5j{=z5j}G^6<~BELWtN廼 5dq8cDk=G322r%?6666V8;rh7`@l"mp 8c$vo8o: Þ@0N>=wI\8,4ɓP\\=3|qPXXm}S> KHZhΟ[nu;:oV\|&~<(-!޺k~=|Ąu7\ ȴ }ڶmt"d_,qS^:!?-\pQTT|x:LU}7pC- FΝ:\.չS5@FiG *᎝k4:5JgM>] 1 (CL"l,ѫg<O/ӊStQ%҉  FW =o;IO;&'?/y޸e,?w`55aN]"`oy)we7'5ixc^zvrrt?Biw{;{06oFO& P_ 4]t yK,Lw%N%pK#D~h#F&yijfcKlH@gdd^>3F=^{`K<ȈHJg.;ۊ۶iӪe}6pر_~Gl|ɒ-/^zɦg00Ujx ?UӳӿMP@ĉ8؇$8#@ waׇƤ[$;vF Yw}g9$[:!L/"gK'fMiƸ(WeY%1qxwE2W\A%B߉NC9MsF}| 'Slyma][uC`x hb N*RS}qP|?&`dưdf%QS}ZcqQpF!" ';&N g*mK|KJJ^l<H3;qNW,D-0z"3PI3u#J/\ WbbI쩹QNI*((x466D ?4?lOt fM>z]. #"ц,ɼ9sZjplݴ!** T?"\/r趧zO?AUP!b䕡O3Ƈ¨^xOqXX[%#@:]pŻCkNbbսpn OqY4+c 2/&~_˾)~X0OeUo{QUD$?.h̤U;*_E?^{szp'KEh!4@[cWf<5A322Z==*㧄,;[bw%(E8-4h xѯxh[B+&C^{ѷϽ*CEU=!VF30<3SlODG9qˮF-xxpz+'@ߏ[/  jjc޶y㞔]3Qj՛6wuӆ=\V-̛طIݸ{d );SwnN'Am׿_۶H~6%%;wj߾ڬYff֮])]:wf͚ϿݽVZΛ3wIٵk>";3{RWX],:~Քիmf%\.x~=]׊2rlMovX2~4_̖t-ۈ"t"+t(bhcxfujժ@z"#">[{mwGǚ5#7Ó?b tz7ХsZnc>lRttC杷r\tٻO;|qDrKnx߀wߥNJ޾}vЭk[lش;@vmnKV[@.۵oWƽNVvv7b5 .nxu/_8{D׊RygV-[@v& *~eD9lt@)^>~.b!m ,|ţ-BjQblظϽ`}-S&ryyyے׫WZB~^vݻSǎ~}|9嫂s}qq=wnaaaFFKz}:i۶@׮]7lܴa]:vmn&1yyys/))9p3gMӧ(**W$߯9s333 'E{z\ݩڶVZz&&vڷk *Da9|͐!4)))9fh[l0n#@ehg M{M܂V.xh.HM勉K\|0p@\^jշǼ,aĥ $mBN(33S^ ̔fdYSIesyCfVu] ^z&onzӮ˷rs6kKYnwiTZlFZ2˦1Ur:ժU۶-]۶]t޶-yݺuS5$4ڶAB(І N;ׄV.,bE .]KnMq԰hV@HLܴw}Q7nlҤq{{gee>}Z_9?_$뢢qnݺWj׮-}<Qf]ѵV'عavC Ǜ7o٣7ozzxҥ(.UPN*VL`ʺw .NwcU*Y" V}Vs]O -W0$+V8ݺ7c`9v|[`;...{„999 6&I:]"&)ȑ:88Κ9=00%fN3fӧԋ ?w3ܹÆq&>jj>|& <|x)^^UTxFjBB7m+BDĴ))*%!rtRQa0N2?VU`h'J(R(?uaU@0Sf:F9+<&vڵki" rpp8zQu?z.}Bw!"2%iK 7o֫[7>6z+|qffu߭(..yp`hCz2i/ >t4/UV ؟.;88p--]]ڵclPqJ*˾[%%% Y^x5h@]X1q pTCdvV$?~ Cױs_47&VLj̰*`t|8ݟd;?rY9.'ø5j|`A믿b_['%'"R[\<-N֭Scggc/TߧIȡ/@ø0øv eʶ.=,0.u% @9. Yӥ&CvJ99U/IZq|~'IchpHD kqL ȵ segg[ ZU,l +rS11$a0gUلf#ܡ$曓'Oz)Vڷ~6$N0]Rr ϪϪêW_*˥D!%A S)( 6w(pDR͚5+</_Lu#e.A5`ģR6mftkY}ZBb|{yኵmm[ccn]OC3""ٙ@pppDDD :((hĈ!,F)ͱiDKj>WVjU9MJ #Æ ??ؾ|}},XY #G|_|q3fhZ/0WҚ ˄UU/e Y'YH8^B__TGjE_! 8/O_p!7/{qqR>Y &k ?Zh?xJlt5Ыq1G6l,]81>.<4qslX*8$_߾~COC5hK2xPةwn^?|yf^իgԯg׿C`Yvgn\K |ǗcfQRwEGos;oo/x\|l̖M1ߝtdh•ؿť۳hWb/ENP:gaCjժFؘjU+y5.f?5 =wʺu6xyyg={٩g w˗۶?yŋ1ׯȋG%&拉Cu/,rʅ Y;޽{/...&ܹ{5%p-oذÇDa֭;V\\|ڵMryEр72ͲHavJ|B,u ;RەHmqzGEEUtYx!9qre.^:.?nP!cOlס_6@FFߵie˿_ ĸ{{SlRb&IJj٦ݧ}5vKm9s֬Oz{ ^^͛5;qZ޲ijۺ5аa?Zf-[[qkkz6O"Ο~pI~4Ά8C.nn#;q;t 1aƍ֫gFh۾?l0p͎;=vl\.;㩔W^ݺu|s߁K.uG>4B5:E G5:DfgE`gK)))D]VVgjj' ,&KZ`mZi][r\# :?]}rD"&֔X#:0Ӣc;::9%f!=z )O&$&L<==F&$<} ެ&|}FcLln]* K 7n޼u+! 2 ~W7ksrڻo?޳M=<<&lDddQQѽ{୷t۵`0$^v<4tȑyyD}ww'kxzzJk'O rss.^z8t(ٳMz sڵOSSqe栁WYg233>zT^An޼k@O>?.[h޽zaBsss‚ܰ,w~rs6$ϲy,)%!yWA~~Nc}_h$ZЬI0@7B.B`vT39,9;Y Q\k:P̿?Qb233^}UV--%)Qk.;?tp> >)=oOвoʒeg[222kK:Nt`˗b/_jVggg<ۧߐGBBӏQPXXZU7wOI+-cԴ4ڝ;X%Y7TsҔUN샣㢯 8?4f(uyϞnLOOwww_ IDAT>gfeW%%%v׻Bu:>=iℳO Pί^^9zl!?^n/ݺv+SjUV ك~ ˗/s1O.pXOa-#tvSrwy_^xW_iyyyȻ _`C|<`k`oJn̙3r:;tr $JXY*E\vVB.o !o8e`9?byF,'mI999޼HzGާwJĹjlq| -((6b$"E&%%;# kڴӧ 3++%i^jϞ4"J[33jz{T*LXɓ'ejA.خ"Fc֭Sg⻓}z0,֮];#tDx҇WTT!.ʤSڵms={yκrJ?wɓ;Abϟ?׷P45ջfi4`ӯWm$PJKz}F (x @E0gΜ9sPN //VfTT,KKKkSeRN)Jq,Y&g'Kag.YBӮm[gg_~`08qrijj5vܼuFnnn)Ok4|'58;;;qZnۦM-#"/I&#_~񙳳ZnsB/RpHȂsϞ Ǟ%$$MӦjZ;;͛gۮm[FRrrr6lhggVsޛZn3cnj7S`3-T ;...07fG*U>^gh4.Ӧ۷-Yn/7%:Ju!"2%iK 33f7dHb|ܯk|ŗ˕Qc'Llۦn\  9mݺmǏuAG_Ȝ;!-|} :vwϮqo襨˝:u>+8H#ꦍqL\18p7?kq|%>رCdٶq%&Aǔ0DPr[rtt6mZƍsrr ]ԩS===׷ׯ_/f`/Q;v^CrJ!NeVc@LgN#RJyy'֚]I%1=#?Dѓn -.FֿD$TE\8wvnCϜѻ/ǷXY3vvNTairh7"<\v.ađaa@DRk˖-0sLr$ bv\`${P["7߰aQe/0@6wVEEERR$9"̥̇՗,G$d^ yŘy$-S%+T e߭ϧ|MڰLDBQ9U:1"%kCm4o-wmACyT&T&ݎj&g|q,aOlT8 AhPSH5D8|11$a0g$FގT~J׵Jk-*f(@/`H"EU2Y$oX5Ue[U8 {G81L6)X=ٕ5&,A`NkY\oAL&*tG)7`vR\`6 lfKD@P1q '!xA1|O -mWE2,t,G$b.0d(B)((T֘8 >7`0x%?2`[%#Bxtras*U 1u BƚωSPMs@tvR b[%JlB sJR9Fg,G$d^ Xkypߴ -Sޛx7кuS۫n@ VXTP 'rDvT2#ʬ]`y` 4B`9L5K>"%Xĝ;{K,F̌gb|܄٩[N-e/ωG?cOJ˗n]O<~H޽1yF 7op5.#[lt[7.^8ס}{gܔ h5@b[~pXO b8#tKPLL%Kp0Spd!êLF@I[.rY[8(L1qW[[7oڽ G+;0NfƎ*<|@fJK1bͺ_1S>nر&7"b;1qg@@d *Jl_ vc#l9al̒%̰3;@>F3 %h`Z[6D]ㅘZ`^={`'@֭n4?a=Ȉ jU+y5.f?5 1b0$3"}}wM{ =r=!>4ԮL0Ȅ+?kر#_dL!1>n/Fb5^#YzuG1m' DԱÜٳW~_^⒒K'Dž߯/&ix`b|\`  0f>ySիU\0,8uO?3aa9 р8h3bTZ֭Zupvvb/_„j̞֬9֍X^={FhK`SވT]A|O:;VΖ$p\4舁}KJ#O @"d@/^ڽS~F̘>AڶjٲKoێ@=||u֣m?` .\0ojth%N<޽oƯkojkϞmo''V-[vs{Snݺw;#ߟ5VZЩSǮ=zΨ y(@x_ҽ票Dg4n|')ev~ůk+-6ݿy6[Cj |$@8,SO{Zn]r &"Bv`˯}eտ#!!WuXFӥ{݉1? !1Uv].{nظXtC,lk`DN.3̵`NLB pd|Wg4τ,,,4`+WFぃ ۷+}r]{G߻Λo` ۶(..Nyt߁|}FcLln]I͛599ݷvvӦ}z'$^z,ر޽z:99@R N?~'qWR%y7 yy{'iin,P?*)1hvg؇tk5<=$·<==\]]c/_,(,V*qQvU 4P]>e nmY|ͥs`?;.FeZb!A9;;^մTwKzŠB<Qy 925[2GInZ0JRf}*Pb㡡h cBX+FsIA)sh45cL<]۶;wl޳wVVlwqq4pM.Y K},vӦ5SRJLMM7jjqsuUF<==Ν?'efe<ޫkm5jtо%%н{1Ga%{mݶm p9:zߐ x*Mg~#!/////f͚ov{t"O2.f5$ ,;.̎`G7y K0D7?MVKdd"W^چ_#懼ᔁY@nn FIƍ}}1;oÇFᣇ wssѣFUR|p<{3Iy 8o a'O *PMVtQر={toӦZ;f4`k\5kN< 4y<,59;;;qZnۦM-#"/I FqZήE|0|3ag?~45ijj~VZ;wqpp6jB"~wF̛_vmN׬:'JzբyYkϞ-ŕ`2Y8묙(rrr6lhggǼW 41qeS"K棒̚ƣs1hq+6,,aUcT82?^LPLǟu)Xߛ7Q}O6nx`P]{슋ϟ?(W/_QRR2F|FC^^^=iո1G|\+φ ڵ{ϩg{k۶M|lLn]ك4j0J캵|e`0L1 qї.N6ƌE|XXXxĉѣF4lc׮^9iꚵ\nNsV9:9-YuCϸM:n}͢ 75ix2:,nEqqI#CCO׽p.DD<|iyhZŧ7*R(1q?X-|+(s|@V rfMqp9QN, ^d}ٹాoPqt["*GOJN&'/7Ufnܭ^rR^;;{'˚N}&!v##uqbn$4\閗XF J922}dhA5{L,_.m`Be ̩^YloSRb*%ĝ鶌rȄ %&IO s*fKەfd ܂%Ed5H5%w’O rt镙b#ħ 5.0W9UB8FN0Vq1@~ @Oבtrpj5ŬƐ;2;^Q -+0YA''½h]bU&# $-6T8_}K"IJLHM[ܷKc b&%g'Kagv _}&P)..Uڵh:OEIgjv&0NwI9Y (/2!ۿf zPٺukժU]\\O$6ωi\0t^Yֻ͈TeȹM&(;SSrJ 5GD֋>%yB֯_vO>MVPPONNKaTKٖ^JqFH2~bHeGZltm˼(@GEEU йj&.)"'%@)yeCb֭[nqq1@y9r\4dVd.$o6;]z'  *e@MTD*!*@sTl#sv0΋@> Z-apiWʾE)z%Kjd /jJ^k֨@AAA'rDh:xŕXA\9[2ic.Hk U O >Agf}reC8MK f{\8v1f"4 UW. 9W$(ÔBdh`.a<9૏\yi='<@AA+Ę9)5@q2 ߢ)!uΜ9hE%.;# '5<]\8d 3̩d1qHD(1q T80$JC)trJ`q& 4¨U*PQ\H\4+y:d򒒅.ED孠 %&N6\?°%fáZIRry]}EB6KlIX._|myIAAA@exȶd1qC(TvB}K\=E)z%KJr䵖QbCD!Ml.QnH^W=F**-|&rYq%&NAb%1q\`UcBYsڑasE(@/'9phpqVoH5Yk׾P)1qYP: 1+&[]^ S^."HvfkdXT^o2FqJLBEٴ:9% vM6H6dFyE`d!D@ oܾQbI& \ő2Al'aе\r{ sS)1Sfƀ|dX*)___7Nas9T(1qtPN2 ?Ye"P-J!"E/%V'YE Z)%&NAA#Dܡ, v ߫Dʕ ,=cDOTXXK*-|:aiiim>|xF )(TP80B߿*aU6+.oZLTI)z9Q'888""BV1oٲ`̙u8D[4RMZrTgyISPL刉㮌WcWۢR,py(% OE5=cН&/?՝rRq (a_}%&NAĉ:9% v96[i$^܍a? $`d9"!+- RaR(1q Qbd%# -14]QU4r,.*a4U`N wƉSɐ9bN* K ҡęC5cOL8s]A dۛC7ucBYsHeG6lqʾE)z93*\,/X 咫I`oFT`vbP-\b0F`0 FQػo pqq9ҼY3?=lӡ!gOJgnŲoNDŽjfN:m/ta-[ҭk!A3M!ZnG>th`~p_3*(`WקB`0~ܘvGۺioN?Էw/LSA뉉+,,-**$(YP: 17l4t6Dg5dg&VT8tOίVy'O%^۵4 N7O'  Mѽ#1#ӧw}=׆M""NZ_N<սw/Z/}5’ƌ5m}q;IwZ0nGs?;'{I' ~O1jB"nDAj٘8"wwW)fH>RP !ub%^*3\1Ow=rDɷ\K1S{L bm7n 9;wp]  i߅EEϞewאA1͇ٷ?//h^}ks?`4oܼut3)(Hvvvaaѭ|0X :QRRr&,N:p0YY )(6fC.`vI~c%AMfS)fqaXmLmѦC6f?ڻm\-;'99texzzk{c3@zFkiޜR23\]q ؇V K?ybI*JL?Z38[nJٷ(@/2Cw=rDBV eŔ" 96a| ؇Z5kffe{{nLM+m4^R2a''3//OlxyzKY[khD 6l2x;vZ! pf@UV tJdpI.<7N#3J ߊ#!ZYX+Ϊ 돉SUF`۴wvӷW2y}*F;n2,{{5jc_-ճÌcܸq3?/1j&Myi,iannUT1mJs,i٢F)((H{ެ PٰlLpX՘Pa.#[-qc Kb}3\r5^EPo13戉W/^x9N/h?;}5ӻ'v5!h~ߞ ?w~emIIəGqLX˩iia'`.4 >п+_dيaI'NںyУ_ظi dƎvG۷kAy]G:ܑns–Vo56(PʹJpTfK+#'Y*ΐ #u %]^)0$IIPPb.]7<+ )=0( C4 92rK&@.^#*{LVd*Y\c3EG |]Oo~sb&{LGThq 뉉1i_.`rl07з\ l2ϜJ@6+7#jc00&8NMٹ ~ZT*Т2uR-]ODB&'&LN>Q #/ %sߒ W쿜]oA &^|sGMKd6-q$/7)(TXt:T$tPܑĎ$FFזXX|bUG?boj#$J8d7c⊋YK[&Rl7|P:dRfKT߻trJ!Gn\8H*5W39q" lg<'WiωVBjJ!tF9[H\z<1Ow=rDɷ\.0} "yL`U1qDDQ!A}sf5[-17з\ l2ϜJ@6+7z}|@Qn/FEG}BJ-[oE抳V l !--mÇ@`u>o88riqppԩc=gw Kצ]o-~2Lӏ0Ï@~wu;#0w'Mn[NII9wu뚵l}%>~G3i߱G>@,]S% sL(c-'a꾾5=<\ʏռP1k3b8٨rq[Z}:grDizInPfIh@MdTζ;S>w`>CCO<}) ?iggW\\Rڰɓ'X.`.^z7o޺eQƕp&f{NyW' Tq1 3pM4Wf[^bniijuaf Ksq#[- I'bUv+&̙9# v|k|-_}2//0ޤK~}HOOoݪ%tY3רF.]rt۷W[XP}0 9eKvZسw_AA_~~͢%w0 rjy @*,f^^^[lqmRH֌-ΖCҥ[ "/X'=#Ga.tEӤ355 ި];##e͓&Osrry-4K' ͭ[w'/+\mO6??byLAAAnD(fRdsX° +Ϫ@^:51ǐ|\qHw >Uva f͚aoo9a'O[7`ipsw}N~~K^d6}KәLkhu@|2v0ٹ\G$1"'6 t/\8{GDDDAAA#Fn>a^7vˀ]08+φժ]:}vԴǎ=xu[׿ԠÇuN6mצT*UFF_&+( |RJ?72d2%yPaS%ׯG-v1ט+PʹJ7ps/^jN7vX4 :9OJ#ܡ8f V_ؑ\l ?'N"%sFOJNJ˓K}8;;?x`׮]&h'YV[i9;jq :rDB9 W>~jHAecIAJppphٺ -E_FwNōF:9C^3\J5kVhhhttAƏqF$Ǐ18#"Ӥ)*RPP,H>ᅗWjj*('' -_òZ9-UVA@~֨K? [nZzKAfp:2r Hb???TT]aݜ+nnn[v--B/",ؾiZM3JU%TA8s`ohJJJZPRDҒT#$F( ?#3\{?rYV:w={`11&2[nN'r|};|(,,|7VľiIuW㳆ü55 1q VN\~}'GGN7 ۡ2QQbmdBSU.:lU(%j._9w=M?HxUIcP c*=;us')34A0L*01q%%%Fd2U^SVתUfJJFzz(-8s[bXGV# wA%bx&v43Ջ bNKA@d,zC1UB8 ^S 0oW7WT``SшM^|ѣIwܾѣ7o<-**2U]\<=-2["oZ 6-a bjwclIRK߲, M }&! YArd(z}tttll4Mupppvd$~ōcV`K#-GEE Bʠk?:pX322 `bc|A ,>>>||HKjTHzt֨a^}tsuq2t`z,Yסs3aa^~#ZC1Y3g\~c׮eff~zǥK?x}gOÆٳqcF0h4:uL]x~ro^ӏ]־S}o𗝝8::hެOAf]:w0o 3OU&E@TXXKV㷜 ҌF=IMM3*pp|CU|Bf$&!W\Lo7ws{PƂ r 7-=zn0ݺ} ޽gϟ?~޽{aoܼi0mQ^}o//L[TT]VmLÇ۵'//`0>MMvd:w6 2xo,,,zl? ɉF理͚im(((|Qaaa~}ϝp5!h4胊 ۶i)ڽY(**zoQZef֋`͘L+wHIIyÇ?S* ''ӔaYP+ 킒GZJdGln7v=̤?/ldtWA&i%9+NGLGdLJb޻?w>x᪟W:}OΛvZmҘlCqqrrro׶J:|SH{;u1}ZհoPANsvvNOOLKKws-D4b\]GJ+0g6Wefea sD-i/c2=ɾ *JR& J**,VTN:qtE WUas%g]r^#Y p3 @qF#wv^oA,ʕfjӦߛ70Yֳvt8Q(}h: IDATKB*U232|T7N_PƲ/K6s֕+񎎎񱥻J/Ӽ|i3^YYMjPQ0ddFV۰WzzZ^~Fh_ze'qbb Ȫ8¾bHbDX llʉԝ,z:DPX3fP|'Su9]v֭&&7jcOϷ9:s4WZ0Ν:lfwR\\8ѝ`gu6 ˜ϛ4v>=G5O|t$&^STߝj===kԨqݺnRV9^&%PQ0aӥL@U\bwŨKŝBw~hF8wȥchU|`6 CLtrDBVaE>|822Z;ϟkcUN:&Sqq1Vɨ\xxx..yyy6nJy40谇w8}lyJJ ;:-޻_v]s>SҎ9ӡɔO{#Aii'N<|oڼu_~gCǟ]W^00]2%%%]t},;Ïo߾W߬~[?3ɐ.B%~4T*(ۮTR\RUjZe2<| G/vf7i^l&qY! 9䰖%?b[0<;O4|\ UU+ s.d /Y8ŋj-nܸq"ysER +W䜤ߺ4kȤ[6)//Ȯm8D#2`2)% \^D7rEbuc /SN560O"ðoIΘ8@>0>\ӨJ*h9{Dc ^C.H=eL]GLtrDBVE`/yWS)L*1#gL3EE,1,97&ּ",2[݄Z$wOW%wC3Zlx [S|` HzW((GE VkKXL3xLlp/ 2[]W[ !$؃l1Mq)g-4Ulg;;mFSR\% #H8"?2̖$z VR$#u-3UB۴5j"K\jjuwrtt /?doYA۳gO& "dbQS^7L^Ua/]yqz}|@*-8wwdWW^q\7J ϟf{ٷh@\ K:`0l!+''f -uMd*((`Y^]e6j,{d:XZZ>>%q R= /[wE$/裀L>`Y<~X0IJŨQnPP(XX,eYB1|n.nÌuw&N%Kdeeedd,^B`H&$$\]P(6E޷4rɓ'嵶n޼ѣT* ֯__]]  9sfnnn]]]qqqGG(կ/gҭ[ۧWT(=fϚ9p"ƿu۶Ͽ@gMСCfl6ɤh@.+ PTnmk9}wgoPraBt5qht<*++Q^,{dܸo}ӦMGK#FظqcMME]4KZ)Stww/[pܹO>j?Ν;7iҤӧ^^WsOK/g b8 U~Bؾ&noS\߭?SEz_+^Ȯr)S}GҶ_X,KB>X,V`4m6!$==]R,{oin#^>vc+iΟhܭV}(>Q{qFšC$IZZZ{{1c^|E|ȑ#FK$ عsK/T*Zúb~Y~bʲ xAwxpKAKQL]}$7wﺳޞ2`>ԌYE5W^4{;yK#.Nl֞Ŝ(744X,V*RSRrU.HHLHϔ<=Bϝ35q!"#_~ R~x0`NLIIdmmm\zccJmllRL&SgggVVc]_\ <n=`*qRE8דw;NaoŁ}KY =ϻ^s7=˲ڲy|;#2/?>ed2 ^|y?~g;>9]'̭m~ ,\]Gƿc\w^UU{gn}oW;|M_~#G45o9e oet:w%999--MT667?qc \CCV))a5qF7C<^>TZÅG'Oniߴ }KTz=l޼fd2hJR ROڭZ?.v軈.A ;/"f ˑ6ܺP]~r|qW^smNvƏ>ڰu[YOOooϨ!C)ɟO2(J$ ˲yyy k:]SSJ:w.S"0 #h$]85qj貲*3HM?Ԥ4p1Mww_`Yv'ONhY.wtthZ*خ ,N0[>`*L"i]qlohhEK>}pJbGnxrrr&t*Sz# ΩӧsjI.~{[%?Y[yj%yf9 /رE'ʵaRd@0BqAYYY\=0hi\+ą&~aCj3%~L0LQQQWWWii)b0t:]VVw2_~ǎkiifHHHhjr2|wa,p'<[V/.OGG;y%sOr/T?|MƴԬ쬆.XDz-继yK̽nnnaY655ZZ[m}OX,2,:޾serjP ΎC;aal6bo֜fXd43 P*=Z -׫coT0qK ̘1aDT UUU&Md#G䢥FN7~xTz7pw;H sy| ΜgsN sݬkĝgw1dHrT܋ oii^7\߈Fޥ(F+uյRGZ[[/:7WeZf/TQYӧ°@Haƍܤ ޠڬ&Rg⢑QA^g3ܮJ+ƎkXbŊ'N۷˿׭[g0W }z]K!p^o$|!1N&&&TO/ܟ~:l#9IRL6z(oᆱ]&Hs4^:F*jy|زm}EssU O[ٻO?0ẑ#G(?;>?Bj`S?L]h4z1';ܹsz‰)x3|"T)zK?vSSˑFz7ߤϝ;.8K4}d~i\C#LrQv/8]߰,k*jΙ;]ͮ],yO,zūNϸuom6O\/5A閭m߶eyg̳ϭ{dW_xQJ7\b0̰V!6]{;I&ͱ; h&NTqI!p˱ނ[j+E*0Q.^qw}eǍǻ$y#Cq:ՑN5_Ǐ^~5'KIM=jtSsP3 7I"pú wXT?f^zXQO}?pu5ߐa7S=r&S\\ s̡3B#GBm"VՑP*؃o}K/mHWU[xـtxIp qH ÿ7 [%dx&j˾{fr Eh)]^ fդpL;6"!at:]zZZgg'`76:."/0,#F `$ a.Al)kjj<QZ*6NB,fs}}}~0>sNohX z'^}U3,]CA %?D,&!LS/J+&H5paŬjɽ@qW\>/L\޽w ωkiiy[E5aBSЯhW+̡h1O0h{ |! |&. Y 0hW+dt%^}wsv]/+$sH\D'!$J开)tR4>'.&GRfvmk.b{bfY[,N 2D*4o R r1b$+'gh)oIA.N<~l \;Eh{b6+*ήll4⧾ٷ,! ȯ' '!B@/~qG!- !q?c)Ï3)S 8\1v\Ke/r驺xM\xuFKb&r[3/d : :b}cu˛<Խ! FK'ٮ5@B$|8"{Nw4{1I*z}Z9=/- Cl;_7 Bȃ$ OFa[&ޔh5kJ[ռHݎh)0ZF;zS|/O{qB g* B<+W(;ZLFD*Hd<(BcǗ=lA͕L}՚N:/B՗g]v%ɟOeffdgeYMN\8v~tBDEC)T.J%yGv hhl#N zd5 &+@nβNhYIifQf:ۚ z]AuV e- gחXV5W]9i ^bX5#?&'+Sԝ嵕oԝ= {鼢Y*UN_VfM~/أ՝mlj>瞲Z70ṧoE=GDgGd˖?B:f&T}.=?rJ'[ [2+=T[{';>}}YYVsL& 4{~ u^_A?$@o/C"~ 7z---t^HD"Z-:@nX!-Iafj;zyRݕ 4!QP#="5o~G[A8xSm6ۦҭ^?;+jB_~m2/96ll I0RSTkk2;;oIDAT6npp/70A05W_afztMMM혋G+4ϝ]k׮;ЩEҏ?Nuط$`vt&'h'g{@"LXD6Tjt0 ðjjH$MwgT*KR&=6 7d} =mmkW+'ͽ6===iYYmmmquKt!Ahz22] viiWW>ZX!$d III./AV*..)rPu#1|)D=jT#*GsϨ&ȓR)nXbDr~NTfXSHNtQ O+4q[u{eO^dҌΜl 9YY-- _a&>rPU8e1!''Kjnm &Ξ{T*3{^3L.^2}FESݳ㳝N+ OT ſ/h:thС' ` 1Ѹ[V&wFKێƩ!V6:!CGg4u aYT '4=])YD gh{YMI$IDN!z:ɩ2Y"7) p^?=N{+ěn2x0!@\cgh=-ZpB:OQQ_;<'ipo@WQp%?AjZfdP"l֮VAJzۢhZ X-f0  Ju FYYﰌwc6  o{=Q {wͺwXaᙺ{U xtCO,oT>?w 5Zm <9E3lIFFVٸ7Zys.\wuZOw~W@mL|'-K홺WVBV AZ3uuO=7NOo)[ͻ@kk9s[ZUVP;Me 1o1Z{kNSlnnp ָ߀!_ z*C?鴚W\=\jpQr7rx0`TGCX_R"" 박'؃[EL߁ba8# l/) A6锴 BA'dP0Lx6ZaՑ:9ʂva0ZH7P~Dr#õYb8.E&iT:`j4ׅH!]9 ׆I1w$rR\0;K>ƃ$qٺ{0tuNSfKmQ~u K}?ܰN 7BVStZ~Hط$(ᨁlWxƌc}csnp.Xl%aPlWHdE Fw`*i/Dӂ}k:D"%O}e}JŠC2uT:#BU-8v8F3>  ]aX :$LM͠Cbgj$  G1)"yBE FK1񻻋=ti!~! &Ug=J&fcfs,hX&KH$R ⭾Ivo{n{p %a&,˃qkbhO/G²bSd D⭾nѢEo6̛7C>hIA{ %ܝ(BBރ;>p 2j֭t^;ׄ[b}N@ B'pp %x M<1jzOlkG +5PF PG'p30Z0 I?*?:!pR\2C8?\\q8Py}KWO Q!a[o]1 !ҸqRtN@ w9x`ʡCtB9~7(1 FK 0N |I$47ɓFcdeetvZky,bŊ.:!HQ`'AǚCm;3;W_M4 >S:/^=F' :;;{9:գoa,X@g HF7N{oK"ţoٲ tBj7o޼yN@B`[)>|x-c) BL(Пb4w 'yD7ط,nKUU֭[<#דʍn˃úug.-Gkٙ8 R>B!YyRxo ɌF}`0ҷB!**xjI\l D8B!?q222gq 罼B!"QӍ?^*|555 C!P))))**Ϟ=[RRBg;' B(;w_S=qK!B`B! FK!B`B! FK!B`B! FK!B`B! FK!B`B! FK믿N'!oA'B!'RB!-!B0-!^ v"PaOj*: hF.'zu9O3p| $x>5DY&DϹ xAR .E`+B!!x&!B#B!|ܹGR 0sLJu⎎%EXk'L|̙׷P B!!!a֬Y/2T*gϞ]PPݽ~j% ;;{Gٲe 0 s5L0!==c˖-A _?uT~<0̼yv޽lٲ'ON>7; LnOQ(oҥKMƛ!*K,l;۴iӜ9sRZ_P*k֬yG6l0g\EQ %kz{J%IEEl޹sgaaRT߸6sŊE4͆ VU*= !:fyǎ1c|gfȑ##Fzhĉ"W>s}~BȎ;!'Nl)))\0ZBH?#?ܦ&d>ybqTPh4YJJL&kkk&_/555q]SSS___.!!aҤI tZ8n dF>i0Je]]ݻ{~&7n+V_^T*O>9?+˗/kmm-.. Vh&VjjE6l؀?LNGWiK$Zp•+W;wE'<PHr'g}va:!b NMׯ|Ycǎy(jaPH466KқoV͜9q III>w}wСD#ؿId2ȑ#;zѣY %%P&1 C(TJJJO/R,,,tc8p \./0ؾ}}K/uuu 4hS,r-dY>h !BB!B!Av1!BW BE0t,ٯef;\å8l8> RVCgI \ p)Gbl)Iwi(Y=RF|cnɁ ZZ6ׇt<[B(n]x.MP ;ɮuF;&^1nN8t:~9ĮSB(j'.#w\Iikw*1H/EE}}ct>⸛M,B1nQtI=X"ޗ@'ϧr$BюIENDB`taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/docs/source/imgs/export_result.png000066400000000000000000004756241514602004300315340ustar00rootroot00000000000000PNG  IHDRmd pHYs+ IDATx^w@I)$T{ٻTzzw=<{;ϊt vDI\X?v,ɺn $Ij|J\ *E&Vٙ(B(uDDoRRXCcPCSP!PUbXچF(B IHTCt[" AϴB!$B[D ,S%Bo 7/'`036NNN`&VcD= M1UR\FUCY* ɑ^O p)[^$mPҩcN;У壦.ZN;߳iH-@ f΄֦_xB9T[$W/LY6n޶ivػkǫׯO92^O<}}`҄q:vp1TBUwsJԩcsܞ> ϫo\ce+WS;u@:)%-bN^ ]{KjdG޲o\ԱCT8Pu&ɤRT*%/3̍p_G-,E 'Og6073uJvo^yؿw5X[Yׯ\qcH~L&S\ޢE}Ągddg~^&CmsA7oՊew|mrn7^}M%vPӝS̜6sێKw=}B%LTbT%psY~fN..<BH,nݶ-dX\` -Ka=;aP H|G2〴tiS521͝=scO}fׯmok{w7qjG 6oX=:ܶ%99묹ӧv֕1&իO^зO)'.p_һӛ7tTd#)>UF1+^T J˖4)l,&&&/7G^G2Ԕ%^z,} H$`PMSd P(ɂ$Hdٛn1"ըR4.>a/#MLx|~||WBBٵ=|T*O{/ʊHLJJMTF @>=n{FF}d?`BS<)w⭊oYJDQۮ}{_o﷯XY[o`0 fRTZD"0UBQK7209ڊ =]ݔT(-ɟ-BſɋO&IR&M1kʤNm;v)PC-32"I?U6UzUXd20y<99ER*پeU-**imWb%O/Q}r(qŕ-Xu+wn5n{_oos S}QxLfy+z PkSRgu E#sr`נhD"c0TWWs<|_-ܴa9n&4򍥧gHAFu]SJ ɯW|PRBؑ0k&4"|鳐KGME[MJ4[DQ c!YWفBZ>Ʉ=6t+B5AxxP(RWWR%HINa0V-Ȁۿ_"mĴkӆv=~yl6U+[&!"#4Pe>lBm-- LMLxWܝ{4hP >z6k֔^!O̚;_T #JL(^)uŻTmZ[D}KRm7}Jq“B} ] F!!fNc 62] Y BrءR)H-_>rЬlO/\Hݴu snzxZ5kJէ_X= pƍĢĤ 7R+/}*LLJڼu||M ^ 9WCC-O*NU%JWb7Uy:v:t;o^8wcNFZ}q&29lޣ٬Qcq!U jePo!z1 6BJe$-`XlŲlݺ`Q>UQUR]E1+-32r9#z99b $,  IH$ FjRO(UN(v5 닣1 }EH $dge~AH x\/%LۃLj+!C VvjY[]; R0Rx:E~׵%RTגڜ-5 `ô fKx C*B4Jʯ '[kR5<*7R.H9,m RU_ê1j̙!BUCC!B*saz!BufK!BeQrbǏrĉ</66ɓ|> !BQoiaaa+W}zʔ)cƌ?}4B!*~OB!~&8B!l !B,-!Bni޼Ν;[hA/(2B!j}v%33^P:̖RAƦFxZ:,KOKIMJ I^Puw=gzA0[Bhfc+ r-Iezz6Ȉw0˗`PK%RH $ITB$ x\fKUHG0!T54l Unnn%<+i׮]$I.]^Pml۶$ɕ+W  [ !ԢGQ5V/a >A@w~ͻwvI/oݻm۶Pe  W޽۷߿߽{7 F-ecѰeC]=}QIደO, ^E|8r<x񋌭Fo#c+8eMiA&(&ɤR)=P`0,УZzċOu e쬄ؘOj|-U,ukAtK"dge}Rbz!PPR*p LB+r{졇JWޏՒ@= ZK$RFXJOB!b2R*6lbM/jt1sˆb$B!@$կc5=[t:ȈB!&ǥGkZ-Bp!OFQwVJDU;:` ĪĨ1Ȁ 2 B!ڑ-߸q#I2 d2Yd\j"?2CqS52 0[ ӏZ*%B!ڑ-Ik Z-#G3zD‚>zQD6_9%/ Fk&eF|\j[y&9z:8U4BdK!@ =^s>&QCdo>>1:z_0sbSgN1aBHi;}!X[q8j߼[ iN\y%*ϖ3Ʈ>U{N$A+b3^//$fL_K 2"zzQLfN:zvFÐA`0 99%55 Jvr:gǤce==.8~L*E!T%:ޞ-Gm׶ʹڶQS gK666˖-۱cNE,--W\gwww.>n[PCHZZԜni7170`jJY0Zp)N6&)J٣RÆ N@V׭NդI㱣Gzݺs&z%eih۵s.˾Q[Cl6VloZX[ѣӡ{ߣ\ͻUkoٰ^޼C{-֯ZxSH\Æ 'Nxԩ( WWW??''ѣG=zLe0Iu7e/ _鳐6޺v955}7mu_0Y&y;v8w 'u ;vńgjzns[X,[ZMJNҳ]+?fhh8nlޱuw7޵ˬӌՓK\=sBF io*P9֮ }A+r%+VeZ[TS|JYS (-ƍQQQ-S177g2AAAm6--|ZC):W¨԰!*1^-g{`1g7m8:Gd & -v#dK[ھebS%T#mִ-۩ȶM>|4p #_bcCB_]bȨO\fBB/^4|4SCC}w8m/}}=@ضc1׷Ϟ?+!!LA^) SRRӵ 9S~}z},hii> sc'rr6~68sLLajb"/ChuD#_Q*eTQd3fM8̉c^ٵ@Jjjf ~dϘ6m$ש<<};.=<\orvrJM=a{vtԑWyS'F2QA \.Aп+RBGZٖJ%+V+ME :Bld$)H^|٬Y/_p8yuuuJϓ(Ų%w0_jJj, N,E(HXСpY5 )'/U0ھeo5p222Rch99=In֯5oL>߄gL FY~-Nx쯓~wΟgfjڷOsWeP9edd}]߾{mV-9g(NT|kTJkW45 EC!/X-VxN8PKX,Xf+[MM}&yf!%#+6Tƌ];eIS KÈ[| BXvNv&Y, XpAf&&<6mʖ`DOeddhh``0`̨cG7lP@GmY T܇/O/^-mhͥ~{. :oAT$$żJJcwNRn*yUVdK2|p6mllܶm䂂Ν;X,ϟ?UΜ(ַTͻ4`-}?D"6Ng" @_޾U˗cTxyI$_/jkk{\'k>>?ssɓ'ŝ9s&==j ,+ŪUl"_8r|bd&]҆l )0$"ROP;߷v,D$+dV6BUeϫѪs!7":Q2@$9sLHHPLY~r~O#9{vmRAM& xŲHjZ!Bu#qMyF(̴PaOnBZ$F7 T !B [Iw5x$  ӺB!TՒl}K!evA =B!΍!BUfK!Be%B!Ԓl B!"-!BdK!B*S%n!~jB!TԒl B!"$[B!RZ-aB!Tmmܸqh́B!ThӦM۷ou[uB!z"‚dbzY QKB!T=߿Ύ;e5D-[B!P @ƨ%}K2{ߺ]ءOtxÇ@~}d4$(d mEӧLGNҚ™۶iM" Vj^fY(*U-)-سsC;w}B-:yۜY'OLWdeeS~,$??heXZX,u_жMkȄCG=~B p|붗@(,Zrzzz޷N2sL-?uqv8q*ҲEszF ]Z%454>~8+;gQQl5vM+swѳ.e](,,蓼G2UZ\}*2rD W%އT*׫">6֘UA= IDATVlmO$$[*;( ))LMo^ԹG_jȠӧLՍqII!IypF sW*Z:xf-zFF'd3Zu>u677|EY,ۜY.,&244X|IvB܅/_553>|ܼ}׎-LMo]>cۺ5RSS;m/ߨQC@pgΑ$9xKCp7 p=2LW+gGE]Pt7herK Դ< yo_:sXcv.G$ٲE{ws/lʤpD"(eggpi43SOѷ]^e66jD"Yp~;l6;k7n,yi'k㥥/[zRU__oEOUA?ttuW\ںU+toYsgpqrPPܾso苗7.NS'OKNI=r/oݚUq mZٵjԙ7=ӧLrBPJSn߹WUnH$gs/Ϛ9fw}vi{&3vH M <7+woW3b.:vqr_XXxg+OM$?-xӧO N:ikԱCnsf[%mM1^2}s/ԙ"J.y|uI_; W(( }R2svMK{wn:ᣊmGLLx'tάΘ3?554&ˎ/^4|xŶw`]{133ݻs[n^ޕɡߖvodhx'B?5AO֬\fߦX,CkoPݵmwueMYH.N9d2;ulݢCB_`zvqT2Ϗ#;nԴ8*aڭwG GyȈ1l6{UkV-[:-xxteV]8ځǺ5w\_caNiRBѣF$9`HjkɱߘS[Zd۷]_ݗ~پ]۝6Ϙ &w:vh]bȨO\*Ki/iI۷>s^vN1rD6ZUv۸߫ݻv2q_}2qݚUlOr%2^ќ;oؠ{Sh豚fyӇ AX"22rԨQEVGӧܾNX[5 gOo12+-[47W^wHN }{-ɼ}~ȾGN9`.9`ΧΜ-,\~OM,,Z TOpĩHE Mn]}d2Y|| @^!JSRS_~Өa"-"];wEB|@ٽ[RR2u{8855SOkbٷIHH|(Gо}g͕rvO6;޷ e6w֣OXZ]$ȓeAa צ#D"Q~~#Gꩭg'۞/^ԟbۯomBhZ'ضlѳ{WiZC ԌU^>>$ᣠNTуGAއ99fR4!1i&&<>?+!!QqS4ĩ3^a+W_OoOџe2m//ݱ}{%_F %HHLdџcxfWdew/|jZZ֭ Q jRQJfKAL8ʕ+_</%S$eeelI1‚oq?A/l z ew~7{vĩulRF(##C*1F$*rNgexԀLS|D~ƗJicއӫ{S\gJ32#"f̙O?}ξm]-Y%ָQ=SR˙-$g7=H,(,,(,@GEoUf&_[[K[[JLMe2Yj R?oll2^1о]Wm9t?mnc/?Ǭ]`ǖS'OkanuM4VSckhp*?7o͟;hijΛ=b rx <йe TGGvp8$IG|`0,(:t5mB}ꈋOQWW71շ>?+>!Q>5ڊ uXAͶke`0D"Qԧhڦ*Ki/) X,֤ ׯVn9M4fXAiD7uŪYSY{[3"! F p}ZD㤢Ok۶}Aj)'r{E{~y~~>Ñr8Zի7SOCB8frS@aJ׭K'R[ a{˻h CG^XA̜k\|<F rM ;8 O:s"mUkHNN޲}Wrr#Ο{_꜈gHϟJMK?y9뢥/\dQ& xΞ9}CL>% ܖ.^ H>}ZrMaiHkϜHU{8cE[+)##sYgN߷{@ HNI U䖯Zl"[BGAU(x,77O@uoǖM2,'7g͊C{JСkmlώjjj'V͚nW$y }gЀrec0ΛݨQCHik%WK:)&y &h Zj[zy{nA!B 0@,[ZZ2LDBQaB!~4ݱczþ%BuozuZYM}K!v8B!{B!Ta8l !Bvaݲe!Cxk׮ cccO>Ti2958zBUٽdԢE+W|u2744iԨQǎ7SǏ+9^q!BHiJ]r%**J*~d陛3`XgmmEoB!T8KK˂,LE"QVVAѺ!=q,kر׮]dl6[(ʋBa}KmڴiӦ =B:&NZ-1cFdddhh(s8y)DիWB!jJu/UJfKAL2%;;ƍT$--ĄZVSSr5cB!%uG|' &qu?I*&''t111yyy?QPP0=Jb%mIuE"q# Bĭɖtڵ"^^^gΜSgyz=@ pPzB!C};G-]^PA޽ KLJ;3;FFwlۼljLB6}NX3uizO\Ζ+:rQh~KWTܻwaN}TnTg!V>owǮ=e5A$I'BՓC??hJ5w̹gң* OBU\bR'f2xNKj!*1q8ڮ3358aAA +ӣF 'N-Q%lI=L*Q S0WG~͛|@/(SF ]M~@eH{7ѱ߷]gfjJbBFmr.8Q~W\*}90[&LH(H4\6չSG;vڮK[Zm߹g0p,\.W(9w!(;|\___|9::pw;~E8;+Vܶ};{zYe035܎2vKkܨaSL&<5;'{vnxf #^>۸eq^7F9\nP_6jϚ/B?hU3U#500pٲecƌQ,USS={/_7uT*RՈS8A:-=}Xxgk>s?4`pzFM@i323SM9}يuhnzx8;h\SSqP0~iӺs0aB ~w8sss&$}}}mllL& DQSS-)'L-UfMX,pAƍ bLnڎ`( uuUzF ֬^ѩc3tV- U3>eggS̓hiiΞ1㶗T&+JAD~}uS S~} ڎU&-xjY$eeeK ߿?w\[[iӦ]~%%U&yT)3U*QJ_b8O}z߿i˶Y~]xeKRȨEK2M7E ۸#>ݹ~rjj:o}ܽ`j۶eqz)s/:wGM xy>|RmӦ9zJCi}ZIIŃ!T=U18ȤC߰lP(_}Kܾ}cfeeEDDPA̖7wJɖ[4vϖlm[Tn$ES>mlrh$׮C:t( ]$_O)_{2Dj.)|O|y %p"Hvرݻo޼Y$aT]>T B:T=qiiijjj\.W>0M6 <|{׏l\%?b#BuJΝ;:::~9//Ĥ.]JOOoР#q!i*ҽ"O2eرcN> ZZZ666A.Zf={6''0[B!Puc@U͛7+F>}fj900000P*7[0aqllӧiD!*'ULZRZ=oIp+VDEEK!*:i)b-Q ~~~ִ B+%Ս)Fx<^i``_Vuw!B*U}SNeKc K$?$,YBPE}?BBHsz)Ҳ%191-ZDU|vV9܍!TYTzO*mRZZ L=zB!PEU{*o)99SNϟ?wppˣW!fB!"W*-[3gLNLcu =BҒ'N9-%$$lٲQd, C/fN%6^P핝 'B!j5J-5yX s3z{SRѪSLMMѣߣ\+B@ P}KzH$?pr7>!^ Q*ULޣ;FF~J`\+BWl144pGOW'''/.>mԠ1@(ӛ2i\Гgݺtq#>x5ſy;%%j;ٱX"~4ɳP&>!nɇ|p1 oټwBBg##C&sRmFDbq +Tq@ ӳFllLMMgd$C|$ISc. smK滯B}YqHNZF.ԿUF N@xćzt뢮IJN&oZ`^͚Z7bѪeK5ZJrɳLxƊo]_=q*==՗,t;~ &^!T\-L[ٞx9?Wn]<76$-=cߡ#Ls萁:_vtu >9uZ}Ksدw Q#%'wPWWųOѴ_*G%CUF~8_&GAObc8&ln{h憇oƍƎ艓0y¸vm?Ԙ8vݷƏE >Я!,*kV{!/wԸQ~}z>w1=#o#9ql}K ۖ͏;! ܂˜/գg$I{#l[޻Z4NMKT !TTtRu'-X[)6= }.RP$+#I@Gy.$ORY P$?p\hִ ?+ͻ$IYOCصL~sk3SSDR~+ki$I> 573㨩mceLA+Y4##Jz^meۂ m՛ Pד(Q99ԂT&e0+ zC)# ۷IejY&1YL38ɈL-ɡ_y:i22es3Ӯ;Ess{IԲL&cRoMWW~ ;;GG[ |ی6H  )&_:ŒocʍH↕ڐFWGǺY3ۖ-UXv̅ݺtw%IvQ?3, s+n(GZ0zl*s8u裯KdnnPߦW<$:"HePiG俗bM?ޫ7oI1lpъeӳj&_I>+;ۖǍٱgX,r-M$VegK{8//iHӯ5bX?xTKAA5R}m晙QeuV!PKUL~\|B>=,ַwϷP'&&9QS#B_OOOO^ >ݴ8QS'IR_Oq1J_Oζ% :wj[0gX$I&&%3Uүb P}',,,411 ^yξ9Altqςl6Mk3l@]]x޳{W]]C)o՛V͚lap!Tj5i os'Ȩ;kN.? Y^>~T D"9s=ZN@cr23/^(]~AK8;sqv}Jl[4pRF ^TZqJfnLHO^Pԣ'Cݹ{;8⏑Q IÇԒʤ i6n8)@݀rfSNPMOՉ.s!juOw.'k޽-GU`##QTܺ9 z+Ԑ\NC#/PB!UizTAyF*Cѣ}KuA& eN!*QjġhV?Bj.E!Tu jS9wwM[k;wB$ (enz{{mKۖݷ[. ]ٲސ@ #{؎WlK:َmb(#cɱe3sjWawCmBlL |MпEwl{m}ā`ؾÛuFqC/үV\p:DGG5<o8yv+qc@9CL p޹Z[zG:c.]b6oewC @ bN:R:䕖f0y\9t!~>)Q,yZW.7ȉNm)--mĉaaaJrƍ.\ٳgVWW\RVin֜8}&(-*jJ$w o3 4lظ.q {sӻK/W4c}?t?5= /."^ޱgQ]]Q[ې.u%666,,8OOɬTc#U[mqŚ=fLht6d֯cC:uϜ:w)b ɄY nhzȩSȑm6 D+/\Y1~r1eR~PT$.,qi>>H&ϓ7fcf]g!AkOI%iG308zT\.*ry oK=c^Nm)55uݺusyW3gή]rssǎ;mڴo34f'Z u..$I&a (JM:yQᗋRvMQQQ_G~ܯh`&a!d4yk4"CݥDB#I xW5Rn`=gI$>zG], bV}Qضc_bBÇO@|1,W_,?8Hߦ]4 <>`t:PXdD"υEBWqsbbbFFol!,F 4nΝFPYUWq$&ĝ9[XU]aqVke2v;((!(!66 oGOK]i蛕a6["qPz*={Gz:}E{Z:fh!J̟>z ( PdBޞd^}}m?)\Wap(4 LXcSX9888:'87s̍72 ͬfsLwX̖CҮbby B" 01#J%GYVسaɼ'qϘaSNH=p𸳐W*%%?OrG:9}R\t}Qx*Uk*_)5s%?=v]ހM&OFI{ VD/"BA|9}8n.;ѩ_w0X썛v/[p;t=csV|yjjǟ}qcCgfJ8|Ty͹j&O[Ęm 1l7CkQX(<>rf~Ymkr;<kGy\Gn&/nϝ;1D=Zvf[AsBn \Xߙ+ӏ>=]ӷJ}ˊRzS5]Z{pu8/>mB_{#./~.`sqppp|9qף-0Jm۶}~G1cFMM?w艼Sp>vbN[ sxwҐw)y`ͭ#ݏ:l^<\3ϸK-Z.8yg~7# 死EKgˉh7GgG٩@LZջvt%%V~jm[dzR::[N-qpppppM46J*R_RΑ}N剻 O>YW_fVKv_Aa|<t )y"t*%Ҋ:}+$]'UV D$ms#$g4=[ө.)., 'Xhhڻ>!A Fheq'_XvEEwx{1%W"vSL_ NCY}vE W2) zls+f44AKJ\gH(65 1owiNߌ"׬%@&sYᄏ'HH W6! $bc޹;ϊ[ rˈG^why̖QpJIW>=~eVKN|KFJ[@I}BIrM D1~R+5%r%{m]ER oihzeUB\Gډ38}丯_Tl"Z9Or&ӆ_W\g$Hm{LkjO<(m&N5㪥e=%1[z][xwzmtUՎY) ik$<7/eܚ^z]%?n'ݏgb^uJΜN55AӝQSLHpX4ҟ nZשsptؘj9cF2^[uܻ6U D tt9qgϞe7=H /]z_E;iݻ/h\;Ukȉ1[ Df&k2 D2}.{qs0`@F0SAe~74ɛ[_Sb/JueuhK40o]b֟1ް;AXDD>>55׈#ij󎟐76@>e anfݧQ{~ك˗ xG,irQQY*":*#+K Z%/;IRZkΞʵלA~]BakkkqᅋdYIFD<ٓ=7}d Bb})f8|-[ZZ\B|HX?9{͆٬TwK\SYi)ig rƌ>;|Nnzغ? .1wvMx;3/t!ei%mxwPT0k+@ۂ*,TjDpD&y6$2午0~Smo-*i"..b٬$Q(X^CږtU5ۇe$qOY4l2?8 |N0<ޏ5VA8f~>YN}28Rٟ$^>BA@08N 0~+"~"iu^)ږL#/ d)dCF8go}uu״9cn^݆##{Ͻ={ggk=~Iuں17^$9{O}M@ rY@@1',x1Ѭy߶&$C+ɶ]AMEE|"NߢUΥ):u("3?f?hjh u֖Bj%ҠSgЋC7deŗCBCC#K/]FVyߠA!*ˊYUIPPV;qRtrZ\%Aۢ-]GR-pR I$uVx[ jLssTzԻs̶*., Xj-Ԛm] IDATN +Ul|7j |lޚ%G6Sm%IdZi-Moն-/3j[༩4WRQI2^loeLK uVC dfG(U+ڦՕ,<+444"bSRS,>Ze+<>@+fH20rsM,j%vEX-4*k`R]Q &Qb(%\tGެ<&>N!J墋陙U^>T ܙԌ`O/Q"8qa&SKq ^%`, Pfr@bue`Xo㾃HW3⌾Y "Q@̡-*va P# Ιfhj@rƎihΜ<ZrLhh|:R"J<>hD v2ǥPVkeYyb׮*R(GFGַ[ZebS;nN9#u:g7 ŒE`'A\\տK;L\\\IiFSRZ+#K-! Vw˳@"\f #'Z+*QL|ѓm@Iە { By<]7[yז+(ju҅pxGR<;!®OFFyuMr@8uz,]O"SpXo`0^oASuj!%yZ0ΒFSOȗ$,RIXg4ycd@Q01^Ѿ\Ѿjv}$mC 6תpbl4W7iX,^KIN9yh޷sWj=z2'J|!Bhĸ{*KtZFFdv?Q#c`q~_HX"o5E)*I Yme!Şç;$Ua*;b0s4`2>v!ݑa4e&H$& h&'ȵ'خj<@ `׳0 :ްy6Ր7AtK>pxNMJAwx"TzU>ӱ) 8PmaI ODO0N@`IJIi%& =TfdeєU)V.4CifmW׊lD&tMTq59q7T[ZnÚu6ƸN6 I(= EFпv_1"ޤ0v4{#:J'x Rݢ_LdHTa6qjG:8pVDYxhb KfptZ^0ϷH>eN+bݳIS\^ @(Gdj593P"iZ+--vF!' Gqb %fSA$)q[Z, Iҡ(TZ|u>@z7n5 d6L$mɃ 87 >{txADD~Rj'#ß~2.jY^]Iݺ&tE2O86n5VN!ӜwXWa4m璦9":Jej0^ #  NAe%hM;wLF%1AoJJ^zEĮ,-o{f*pa^w9'rjKw(MUztRD(ǜ}]0Aݻմ\qhf]ۤцȯc}H"hz~ZRq 9u%I$lە9!NJ5N/z^(,:҇$'W֬)7[{>4xaTBC!< ]-MjMkZ+@ćQA|je3[˕Fa@!Ҷz>~{b jI~DnI54~],^㔘-B(2b@&=BO[X1ޠѱ"7d~V5GM_ εP!zj={OC lkQkק_!#rZv8u5uUN1 lTT =Т;kU&933kj?ާ3H٢w,nDtMM?t0ki9VS|`̾YكY֒K0G7x`MC{5 IdXN96lHKEj\ޙQa@yQx1,2BtC(0V66b@ MVUwILP4y3UU6zOo=5h;řYKJ[DxRR^̎"H}iTF/t%[~~sO}6B_I;;. |txA5uJkk\2yNuʫAoxO&|>+MG拘 &[uʫ^d>λn?]wm{zzT\)V\Jj{$I>8gvBly9[X&'lK>_ٖ8h$fLC /kD1qѭo #? pnMPlf qZ[A;oAdpF52X*yl @d͆F !6hl(s]f/IBQ+,Ui"K,TRy3= &,|˻!P 0y (xB`'M, ED,qV״T=LrUUˉP}. p"C3 ϝ2KWǟp o zj%n;G#^ iu^6m˶+r߫wWrjjU_d4^Z)pZ*شMR_S[_O/L=l6޻#a;=R=H Mw(&p}9qQϝ N[⸥0;wkGoppt G`>ŲǕ;Ћ|\hS^H&2p:l\g]8N<=uCdǰwSSK}U>{w&ܨ-qpppppM& |]B,;NN[׹#mQ4 Zj'iKI Ck=I :t y"7.ʻ59!<,T,-ueN-o|>HOy`?Y! 5l߻bZvWfWnش}^gM0ZWٲ{!#C).)-5InjT6ےJXgR{=FRg^c##žx|Fd8z,wr[f{?,%%0st@)(6ZZ蝻9o)o|"CaC@ x&l2& A?h45ؑ㑏=wfeX 3 $\[K?HDLOt|>s"q3揘=ξ?j5@@NHMrzk9G,,Vռ\a{'msJٲʖd\l ;a!#}(3[61Du IRn6k)ٴ8b1 إս3d u󭆦-bLVu uM$ZǕz+#_OY'- tKK;hc.@FV.>Rb;~m . Ӧ:b#U7O:V5">I׬R:z^55gԨ޻O)W''%_,,;v“ݎ>v8 _ N0_M-ˉT%m !/*ʕ+W@LLٳCCCW\f/ >_TtIo0JzeX56&Aļ瞌UBc9r+hْGfSnѵNB|+y_7?yI4u˖T*|>9s^/ ǍorrYppAV~/\`ْ_E"oXpW71ѶϿ>mB|oLT ]əө&\޴nbt\\(=q+GfUk4 lڌ@(FS`b0Dz1l(ͷX$>Lx9DhbD3ă3M[]109cr4KDT$i+|ċ"u&W: JXUD胨xi-onu]՚*cQkM'E_FGVY[tb660Qg$'wi{avw p>dEOԝ1|$E\( 1AGq6[i1ƞP[WYZf2E!Ç[uYOGvñX4lӹe%Y}rƎٲz-0i={t۱io!#Gl[RR{8~G*-PYZVm'ϚYYZEaG`AN."lU lk%̭kˉ>|K3g_}iӦN.^V5fER77d+n4))I2VtdjgFyIb: ˿;v찣rܬnjRWZݢmQvvڔ[+*jvPV~d~}{Qu774i4B,Eg&g%'%t_ E(>s( ޽ l& `D=A bk7p orP8J i%'1/F(fbcAQ$t. d‡2۞>z3H揺P:0R?A7ָڟ16cLL[opdIF4&̯o,jmqѸPg0LjŘFJyQ^e(Swl?پ -V(jw$+cۉxd0hp' v]76j5b ӁjW$6>j_80gع<$,2#fJY@17%=uUUVR㶷Ӷ}<G'w:Θ N>\Gʭig]m)88xРA($?w^hD"1=s\!?}FsB|#=}v:.XIi[w\U]Ïkm!D"iXJ|B|}HxWq̣ںu]..cw^U]⼧Һ67k֭3^e@n9g(, ,Rd (ͳ ??"-Z0GƢ.qT.!A" ,ߢD} ?9dd5mʅ i#JA6__ӹLn@Tn}PVd0g2W+LMcN+yFSU;U$S)2Vlն|lvQ'!䊽:=DfQY>b9E-W6iE }HgN21؏ @ܖ/"zÇM -M{y/2Tf|PtVSpHCg?h6U=눱M;;[(Vv0@ؔk@ЬjEXAjj** /k5$&TV@'&ϜAyuǎGuM~肳]0äed8-Lȓ[""I^In/9qVYfOӶz衇֭[dž5,F tquR%Z[õB{nu-$$.+U{/NPgaEK}e]}o΋egy'zyڭ/rTmmCUu+(YYGi={DGG$w!il: j A˜h3 DPb B ON1 ©ܕ޽G^Y1?{m>XF]{pSs͔:P0'O1ygP  PPXI$|ě֞R ReƸlSNOuVZ8-Zhb١m0ާWY>>p՜k4Xu% X?_iX4SW5kK|vh[͖bFy#E:ތ'" oNG Zjjhi[ꪪΞ΍KH`b@S`),(H3֚*]Kؾ~2Y` PZZ z=MQ|>XOvߠ ZL.Zf¢\R+ʯ 6$贴D|$au}IJ :ܹ]|m] l;"ݠxXzm`^v_<Z[u7Rc klQDm b3M"1q9]jX{B IDAT}x!m0|juwݶنas05޶ؓ +6!%":vRۓ`h3@.O |>ߦR5|> D$g=2H 0Jlo}F'''VYUT}G3W*cF+8wbc"|e2) ;{=8 VXtًD"ᰡ{t}oӏd6@ա#قPd{]b̨6 3|";E C cϱ6*&78 qǁx̦?1|2*JJDb1 %g5lƜ"EE!%$O Y}Lb=Ӌ),$bx$ 4pr9x eC  !B, n!!B<!Bl9ojG(F{hp?'q~å:=lх }BC8)IsC{F`̟$%1=0=*]yP8W#x䜠.!9A)8Y"c|`nZM$aw:''APHpϬ>ՕU1A=zAHXxjFАx,&~C[tͪf Ҭkޙ4julBP,FԭMQ:J/_& AZ9ʋ $1$m6wGs)q%׌\.>}zƴiJ}Qے3;vݻw襤իWzј7zJmWz^C#!IEϽ oɉ02g;TԧκѤu{y_4-y5rȦ-thBJ$HN2{eYo +>d+yqޓABG/cwfO<6sٗ (>w?H[,E-ް`>>T5/^w9 үl9[`4F55 :阵Y[ .vS{|"wЃ BI 7igvIL|?@Ӹ''mB.;lbHf s#AA,&fMG3s?b?8?\VN9cĜcN )肶`3b!#83bJ } sGu-TJ JQ&zZA'B"Tg~$g4="#)ku ef y%,DJMuPgX]I)THb|`]+!KQ|VY(RN{\yzfD*3̯ᑑY|X[Y nݻ BT]Qoa('S׷GLXl6[MMvdhL&ԿO~{d:';piS jv[t^߁'Ϛ0Lc]i{$DIS {ސp Iy dAhD5oCJlCqNisE4/#9q4ݺuc-EEE=#!!!555?_|n6>XQSAm\8C+}wv?]Co*굼:su|5һ/؜[[o΃:̮=w D5}8}xC]! fMG5ORS\c[Yf/W"i6[M͹!D,SmY;t-KK>3kzlKΜ8q 3J]]ݢE\BU }kݼ]q?6nɩJ!bHNf-w;@OH{0E  jon\9jhN!ŭ sT%/\GRmK[h^rܝL4q> 7lzWF) ma[zW1Xp'XoWV˯V;wy Q5hcb&S ص%O9qN[)& \'B`݆ })Lw .?. s]*jVpX̭ <fwݮ-z8?0]a䩓iVŜ9qn8˵%gUeԖW ^)L7-I7W[RUbs-RpΖS888888n^bRmɓ))]El tVNaxp[PDNav1෌ˉ-W+܉xQ $8VM"-ee&%DD"JɕKmo|>HOy`?Y!V;{W\nL ]g+ gϚa2ZeC?SGR]RZ$'M3vLNpPRoKJ+`I6ߴB3ۑaO<>{J2=lJ/{?,,] tz$nLAB܍/:CNf9K~.1d06B\\7lrt% A?h45~YAI;yrzOC o`֭T$"&'w>pٸM̞EHg_`@ '܋RA$&9klJRoUe%G ښ2甔ki}-ɸUFL/Jly`XM$'Iڬ~lfS0WC{ŀ`VvC# jhboQXPY8hZpޞeݮPD{Izu\Kz7ⓒRz)+UWSw$[Zs'].>]}RW]wFl Ӧ:آ>"U7O:V5">I׬R:z^K=5gԨ޻O)W'' c7¼c'<Șcǜ?.ϩ=G'9r1dP4v$kʉ$楻N[*>,4,_UR溆&, 3zvKN,؎Bļt4e9r+hْGfSn^ %!><˯<u˖T*|>9s^/ ǍorrYppAokL-\|B 8ڈD·|\˯o4cmej=ɟ7>}ڄ.1T%X,B]3SMM䱍i ثxbt\\(=q+GfUk4 lڌ9*9k m@:mBÆ|Jbx_MP/F4C<8?ٴom&r4KDT$fSD#^wM\^]3$(E$bU%" #CxuVkH߶F)3[t4,}Yenщ cÌF*ʜ1)Gml*0<m{tMyG")*(P4Ʌtnwk,-3"ϐ{{ꈭ'V}#؉H,6zTܲ⒌>9clYa=bشdj7h#)i=z?|D#X,-.)|򬙕e^6xvۀrtԩz7'swy:*93t>P ZvG+\ Z1 Vjmm(q2$RRd?X,djgF[ܴ&,FfRc;z,wێ}&EYy%+//niѩ-EngMyGUf<ϝ2d2!!@(BA]Vlk]ןXV,"ʢD)+# =H/IL{L&e 2Wsυ)ssNaajfCѴw' f9_P:MY7v8 I%&{[fBiihò@!'OqAxp?Nv"n/H,$4,LDM 2ْҠfهQrJg f'N'9pʆ@z \?+)#PL D-+%G^k qpdK\ʤϻ\ s͂6뵰2/a_k<&9??G)W[mfrNP/*r斖Ҙؠ' 0~z}x6zvO$z= #ƍ=sD*@DTawVFFr=t3e*(Ը]& ]^JZOk J9?`w}  ':-M2?28ƌ;o.s~6O=>`z>$. %.y2;3e;v.[0̬FL9s7^D}v}MglWJZmWL*h G. Ϝc q[IiwZl~OGF74 O58 h!MM(#bIi";ݡPାhȉ89H! cV3DET{D(rvO\TV1A=۝)##CZmB}PGr AаRp*2.6\VjJ%Qy?ꁇ-/yG(hl۳;n箹r gpWT*<-]rٛ //y*.63豓? [~nS'?< Ba3%Zm fGB# $H87?އ0|m'RV3{x$@I E2Hxp/(d~Ŭ=P6MCc\ / RRPZoRxٛ!W_cTDP~78"jaOkn?/y#gp>Ph97,cx۽mmxX{s,kfYmCҶpacF_a`0{sblVFF24}@ J[ GjMEngX*EDEz=JbqR nn&LtBr],Zg+35,O}޻!} qFzL*x)ɆiW1y6٤ct n! S|> {pİx0sƤ4X;k[`OiSeRX,c3|ntcΓI%s?^]6Ht:4iq{P,%?%'^Oئ1< ͞:AɈe3-dCTN7P$'& |˭7K+;⶿]Yp18a-^y> IDATojƭ}򒧅~uwVq tS"vⲷ^ŝd߷pު4s֮Ht=51GmXGZm=XmV<==yϻ`. @0 V ];jZ 9_HF)wȶ9ݵ2zo0/C=Өy ύ%xn[RXIjR]sPTllA!'Ѱ<| []{HA!뾡Il O`@gfڒ?MIX@tԻFӗM-0#B`}#C%⏓}33 X&+2[Z0[CȬ35]n0rYޭ HmKq]CC$g5jo4.VlOOrX%5&:wRr?^Wϝ#Ζdg 6>>wpp8kO!$ZӻOPt8kNeY WL.?([$}0t:3d䰜aC[ùzpȈyƸܺonE'q]sY œ}2ϝ OyZ 1~O;V\+HFX/Yoa.ɁĽtpMSOnWw̯*̤7o斖׬1Tl-^US<4K괵Wpb0l0ifW!4sCG.sLվeD-Z&swVߖV^eqqomԌm?|wtoR>zG;!7P$.={ =c*IN'~ܴ#l*]I #=Ҷ(E&~)F 4a}0a{{SF[xAmw8;wi l*!HӆhaBBx̪pZ%T/Uaˎa:?&[ &TR ލl aS% ̄v ڦ<0~a>AMS\IIQqߝ@QÇ`ΝoT*, ƍ{q6LZK=zX`_~Y^^Y^s)Sy睟|IǗ]tc0]x!bx}]| ?޿_qʘyO<櫝{r=(>æ7|+ȉ 511t}~ˮ`XwLimu)E"[]G_4yn 8tp/?uF e=7]kvDEQoC`0;v3Rw܆+WH/ OTQDem'D(x\`o?0.Rӧ ٛOqP4fHK k) q7܅h .X3\L dkW{l뙚(hkY2a@ЇI yR bѨ'eR+ܞ5NGI E2zͭ66s^)s1b@rE*^j0l[^sNW7^=#?^v;ٿ_2:m#< {dRӣgOLxtGvӈM9;rG --GhijqΰT575?t⯥w^}He2F)5#}Mp܉GCv|RMS&=ủ2aXgP%JB[:<&\ٚK+u/i4m{<٬RR||9rd^^ܴiӅ qmٲg9rvڵlٲ`cA`*@zZ:WSOhqP_FDjp}2ӟ|bѮnZjʳ{x?9vɤ>GW_>7g_~/igNzͺHט^{cEq1WlgD—,.:s^w8Ik'ιsFjL%j<,]z͡ 0;l*ިg7pL&v < OH-~}hZ}"ґHDV拯bP bL(9 Ϛ|TUAy͆'O1jax4vrrl6"ͅ[CM %/:#Z)qT h,jZ]W$ o[bp{ !}_XINkQQQ^G*TejU%33=REe~F m=cML{p-ӵZbiXiw;yTXXdڪoi/7xA4]ɺl={W=N4zeǍyBF d^ꖙPZFpvv1,4rsS\8b0]=`NX` %&'Nt&vNo=t< K,VRY 3A Ptlvtlp(TU8j!.0lwhիz]\/!nB܄0D(6=q4E-׷3@2.W+;<~ͮz-,x0KfQVa.܁.t𲾓$狊j+v4&6K?BDFlx<prISSOiƞ9qB"j "*P;VU+##Njj.WKcjB./%u @G}bG!?C^cpn D"Q ñcd2%&&•xY}/ W%ӿ_f~L}e+5sr)g\X ں׮uURXmxcJI%:B!ׅ"3~>y?!u7n+)N^S[ԃYYo豓f@3bFijBKHgW (ZzE`dbmG Q/ B!ᚡiSqF:[Q"f3Xt eڮd D< $brݾ#x$t44ju4! U]? `[ >3O"W$2m۔.nm|I0~heDn qW76߿3Ţ]i,sjƉAEm*1MaBy^`@Ǧ"g;i7Dmh#U/vt5sNq W )*A߾lAC\Ot i '%^}ęL&H#"##9hlld!.nzjժUV-Z Tm۶i|ƚP(U{T8gM2w7 Gjk^\sdVxϖ<#g_{w]so@/,yůT?y7Ͽ[l7?^^T\l 7>7gc'> NGy$ 1.CsV#-슕kœ' lm29^ݲ{7S ?qP$TG $t>dJn?i7z_)#6-e(Vhkn7g} UG@ @Br-[~ڰQ"<&.N*Uw,YΑ@ oT|=}\iz9l07y䪪*{wx֩S"  GyGnfS(|z&)6wg51dGD*$''\,;2u؃ zԶY NWy;cbP,˚[-e՟~͸ÕJZ6ggq:^WPS[܁`ƃ3 st}a@>q{.!nDF#45P3Dcjm6|>@N:Sgx=tsEdzglJs;q9xv鮴?•%-]/rN޽׭[R433p]fM>}}3fYs\I$ n5kDFFrPF(~;h"@ug6[V[`f4P` μ sL< Q+1JŮXm86 :=^}OΞs Z= ǣY-fvӖ!5DWQz:Ճ~wqotn L(=I@ 1"G|.r|>fRO8Nx|>00G IJϜ13gLH ウ6u\&œ'-:S I9JR)mԄx͉SgСr09kΝ/FH8vL=ڇL*#Ф AP|[{U/s܇8e'/xO? ~?~O-8-vayg1=.6ʯ_@r-Llll~oŚjwe2)7G_4yn 8tp/?uF e=7kmDEQoC`0;v3Rw܆+WH/ OTQDem'D(x\`o?0.Rӧ ٛOqP4fHK k) q7܅h .X3\L dkW{l뙚(hkF2a@ЇI yR m]e?QOˤW= kj,zeқ[[?mls V z?g\x_B}*rN2{:]zz_߁"ikO95ꝕI%007GϞj'22rƝwv+KK=%&.[[8 ay)iknj:~_Kd׽FSjFț pܹҹěL>{Ae\laB5\]6A PQY]^Yms*㧞?ࡂ#G}h7.vd?"GWRSȱS|>O&YV=Rzm[na2Ģk<]5ɉze҅yN:#V/TPpyVwtxX;iw@PPHEE&Q(ӐQ#J|tNC$AC?.o?[mN"Nxl`nθ)|e٬zlߴt 9b6׃D&=P]^Q[3wͫ.FXͨ 9s0AAOh2]Wa3W&R0]x*"˲^?#6荁nqwΞS=tpTZbiXiw;yTXXdڪoi/7xA4]ɺl={W=N4zeǍyBF d^ꖙPZFpvv1,4rsS\8b0]=`NX#]`Jۺu&vNo=t< K,VRY 3A Ptlvtl[(TU8j!.0lwhիz]\/!nB܄0D(6=q4E-׷3@2.W+;<~ͮz-,x0KfQVa.܁.t𲾓$狊j+v4&6I%@!"^j6{<x.{$ɩ^ˆqcϜ8!J5qiopek\~Y t55nf!mj…]_\W^ݛԷ5LHIʮqMǮ#A}KgN(k:) ɉNK5t<[S\\wxϔIc]l%0fNn3̙ x!V]S[5/mlWJZmWL*h G. Ϝc q[IiwZl~OGF74 O58 h!MM(#bIi";ݡPାEC"Z_].GGPHfehTVTL;~0B \0wA@"&;GBICVGP`[ >3O"W$2m۔.nm|I0~heDn qW76߿3Ţ]i,sjƉAEm*1MaBy^`@Ǧ~"VFFn_0vjN%@ZyyBKys7.,tlnjE(^n) u:mUua2p虦BLDΛKy:]#nw)*A߾lAC\GD}+׆ΝO}K]CtTuo-¸LvVjm/,G[W wKinaWd>^^/<)h,Peot>ϙ?@z --얭޻yoonTV" ROFi問jus[aoj-/^B!( v:/~hj!Nr12=5WTkb`VVW|oKTMBoѠ߷s~:]p"5=-8jۏ3wrߵ;9 J&N10 Fa1z<jk5Λ3ナ*ut#   !9yǖ-?m(IsGE'˪;kKu__ZW '[uJZ ub0566[,Vݡ7kڥ]{N{p%3mV5u^/yΘ@"˲VKYy}3npRn9`Ǯ}V;}ǾY5֭b97w l /8]_oпO7:Gbb\ffK"M  mo,وݼ F68 6; Z{133?_X~ZxJfnb0PO?{1;ݍBJJ} yI4`DɟjV>ilrRZGJ}Fnhi-; z<[-4!V[Ǜ'Ez) 903 |bnV!*[]Q9<ŚخPܮH, ޽n>i yܰӀC;JWew}0PF(~;h"PO3 3V 4Ca z)860>1u3g/gDq S1JŮXm86:=^}OΞs z҅Q,3iK@}RRJZ(=b8Էq: [Jx+j6B H38K?Ͽ'c m r;˚@xPz{Zqƌ߱e.?؄L{jEpnQI)) Mo߼/HҖ&Hz9%rGDE6Mn+ݕ);+\Rߦ0aKE0k( '&ĉE">NH3D\%0|>LI<B|>&سa9II3&6667`Iib8!>vwV56ӦˤbxEg 9)>7gR)W*͚9q,:T5|X8gpx͹%  ǎ۽WUI%s?^]6Ht:4iq{P,%?%'^Oئ1)1Z2\J̙?["ѽD{<a[i`ٗ.[Ѓ<Ʀ+?^1ܞ"n70lJrZ2|wٷ^je7l.4 &ZRSY(BN'[UM~\8D :Q +)=_#\NO y;))]sPTllA!'w.uBPb"b1X9kw7N2%-@w/Z`FC%⏓}NB],uK~ne-?-!dVBH.7,Vy8kqz!ɳ cMWVlOOrX%5&:wRr?^Wϝ#Ζdg 6>>wpp8kO!$ZӻOPt8kN ,o;d˖m ۀotRYB6ٴM(awXKB[Z t 1&`ݒeXrQBe?̜9sιOQW(N," m6N9~C`ZOߠԌuɣ?9:N7p3!N>j5@AN^<>a:<@(G˗=ع} A Jr.fh.jll^)[~`KDW^u<2mvykxrMmrL{ʧ2WZ5qRnG,nt 9m*6~c=C励8!b9gxac|f_qjW)]~^ ]xSӜ-f|ÚkԪJO]ݽ t1_'F&UK:~U>l…6Ԃ_8n\,#Qa^}݇XW 4*bcZz8 eDs+vx{f 8f2 Wt((丮aׯ78kK̯rX7nmJXc;aM`&?QyըHܼZQ:}xU_`0k}ucXY~`nzK.XW fX:9Glr7٬ccqc5y X~G BF(^Gnwٳg:Ç={"##̙P(nZWW$nYrBR^:Β̯-Z%s^nԩSX`ɓ'.]ZRR2cƌr/M5iZ4gu;|BNgX\nxx8Iϟw8GeYXXXXXXNv6!Coݻܹs_hr-&eZnqڴi<oÆ rm6[ܦK't.M+W[J \[o39a眖C_yi?۲[v7x?~~π>)sj6عSwGBC)..)] wɏ;fx̿/K*`WŮV·aO g߰;IO>1}TWVظn@9}*#mծ}RY32FfT2b9 Bd~~P_O؉4ybnW)y;bO1ͳ[VTtZ6pD"3e:U7PjFzn$1ϞmtRO+.H,Lccիy;;"#FK+y^mYX-}/Z✍%^xŋOy7l`6|gv#-WS()Z,ϐ#w񌫻lGjs3@(6zҢiǎoI3kXM 22 !9)gj4>bfRESϪ()!#3ygamXzi())ٳg~~~Hyx<V۠kTdQqVW v{½#!!_i?-~cdƩ  Qk=jq3O'O c;{.A\  BHѮل_؝[ƖBvd߯E96|yJ٣ zȾ?2spgڟADD8c'$f~\SRRGZk 9e2 ku6 IDAT.^ !01C `fIk'~D:0a<ʾDZ*]}=\!r(+F Q42.z$? @dc(ɼ|j< sQ?j # $ɕj'a\0Ѳ*<:np-;H؁Z箞j1ysgHjOMPy:igvVRԱͥEE=z&7c0rZкv m'vEׇyDyXhM/_S]c1[@Q^|srT`kr7^LcCS#;L}TR]?wGo]o0LBB7D"Q||jbIOO=ztEExWr8B!6x$k7s{&'>fa.[VRL.W\_y`j杕 gHHG! ʚ+X#J>G|ʕ뛷4/-|TnׁE+ŋMJ3۵?¥N.?9w\T_0h@9;tvkԄ9.(9 ["P{ FKo P q<(.aVkGvǍF/HK%vR>sg%%RkEN$]"z8 ^wM2oNH!QXTQ|gMqԾ=z/Iz*9x,[vT՚Y+¥]}txxH' /|Ϗ޶{.ʭڅL"rf^뜑7PH<2{8^`Cf-p1@ Կ60X ~I G7j6"=R? +m(#yOZ!Vyua>Wy6רqEkoT1gv:> K귧Sv$1Ɨ-TfJSİVj/Wh_ @LaQ)lNqX3wj}EY@\ӏ,$`XD 943;*U/+UvQQN-v};G9'/:w SeYv8|$4<,:ޖ&#Gxϧ"Q#4D r8ʊ)Y3ϓ;<>£ݻ]>bQڠޏ" I%tHT w&~x\~w>4T+V,^O?e& BvC uZ2n3r9+*jϾB(aK*6~aRdCGN44&C'$99{RQyN]!-7Lً4M_̹\]ճG'7-{g_x{);Ҳ;6w 8/]-`l2aegJKHN> &3Zs(.:̀Phup*.#cD&DtWl&#"©Syr|9%р CD>!q)1vZwDE_m?D>&V95-3vF FSݑ7l8i4Jw?un"l"mZᾷFD8CdG]^SSclhTUVvSUFSlV)W zj M&eEQQ;~_* rpccd)Rv~_mVU<8H7 M6kJXQZֶؼ#;˃ EyDf<"q;ezw-(]fܾwBۿ_ON>V|^}8j5MXG)&F]yߑsr :qȉ@YTTaHɘZ"$L\xK$Yr&'3I0١`aS%{`.rdF:..^Qb"r TCB < |}9Y|bxˈHK[73B >itNŪUXw;z(uf3vqf=U̓;q6@hDDmo`h6f-?Q-?`8Poup^.' z]YZf5iYX(vmq&B0kb;kК[߾m:Z< TjFE\^{5B\.rKFZw;p8\.D$u ~:vf`FjddBhQ-L8:6P(  7wFEeUmmtqH(=J!DEJ%Rdqa_ٜԾ=WĮH Fe55ԕXſVo8O@*1z$ى$",Z&4f@c5?\f~qHC]Iȝtrydh@Y^㓒vG)fYSnB!PL|Yk>y!T֛%0M3]"d@rcwF#}( v:1AY/XLya =:\'i\Z)!Nm5|1]5"(f}<>v=:U I,.wW@(!.m"@OO:'0̉?pn_LbqWU/ =cd=u 7~KA$Aʻ_TT*0,TM9RՔ y! E4\%u1/-+uvD0.i\U xXt]W"s37@HXX<.bTU(.80(8GoX嗽r PEyI>)f414 V䑟 H_g0<3y~<:cBNi~Ny|0jUuyPLmztd=iB<\p#yO8?w}M\@ }^ٴ^ȴ-rMqKi^M+]Oe,kA-_Jhm}h _y 75X"䴩dbm}Pe3[@ĤsΞrb-<;$BծRJ?@%[x5سw 3aͅ*z.?f؄^o5q[.\+yHcKrX"mAhT&27>p@<$V<7 j1ծj, "zﺣ҃C-8ny `w7ÚjM ~BkU.B Fsj!bww/NFUKv9 +Psf3,Ü<ޯ#b5y X~Ob"]eagAEWNW8(jjHy[I-^ ˽*[Zp^[baaaaaafR'rЉch-/Ƴs-.֛/LN>9eW^=fǶluII~߹z*:sj6عSwGBC)..)] +>1c >]eqIlXտ-vX|Sz$s7lNOL0 啕+6nF% >F|jW>)̏SgHNB#3 Y V*F !2 ??wJWs<9qhϱANJKs=0۶%,ي1ej#^A3Ir^y Ի4\2.-l`hMDؗzK@^-A OmUyHXP>Rae0|/AihXkp- +ը _g2.[떨'/ rRU/֦N[rW;KZoEtLLBd?TJE vⓒtϟ"ѵFe7x?;ic\_MjD>CFӿ3fgP0l9EŽR?2 ԫgd.wZ8dd]?@BrRbϞOh|"%2#qzXK)'`P{,l 49|^0='Ѯ=0 "-_wѮGԾ̞}9CC#k_` Dh@| `u:(B&Z+!G|]/H0$WDyr9ĢG*v)Lp`Lc #%bf>Tkzy<͝ ]=i4@UyZAsj6|ti@if0voV'$*:a^2j'a5U*MulEyELBNHNQUVc|z1 NU3oSI{;wY4&G6[.<pvo y=Zp3vOxvXKt+o){+W\VIRU͢R E&% ڟ}R' ;].o4ŜJ\v;X 5jBޜi|r-(C=KX7oB(8K^|0c#;F#F;s)9q닒5́"'Drxk @D^k}w !# ׮'Fez;bREa[)# # Juki'y3fkRU*;[\lt_^\rrLΚ :rndiAoFDE:dJkTb_&knʊJ}}Y$R;o_BoKcaD-Q^2!_@u^M|Ƃ Z*? $;u`>oT.]"jzwn|`Hw>~m27nϲkW|NUyE!i/\z%;ګOtbp1bNgmkwiܪ]>$.lvyC#'61kҟ 3@ OkKLԉ _ yl# /uz@ӰR6Q2qN'k7^'>EÆ5h\=6>z̙ŻOȒo/&`.GL%e R/1պ4|hD|h,.[L]Z_QV/P($K !I*=QxB, +4JJUETxE]F}ѣ_ɋ]TYV~' z?:)g!p4M#!EErJ̬dA9C{vX6EA<4T$nζf+fRWo~zK C6{θΜ˱:j2Z.\r8=z oh,.7Ç J%F9`4蛒|ŪJE-;u`2k3g/4}1rX IDATuWߴ]}K>\oS4NZσNy#p^>ֻJ[0d*f>ڗ}>Lfl2Q\,th7! (U".y~P~LvȄ<фqDD8c/_/>GD` x8$o->gtwK;H/j6mA"QMor̖~H `C#qHM\Eiw4c}%;zE7C`tl e6{ͶJUSp_d:"4"(K555ƆFUee~NnnwwMΝ;Ź.]ڹsgc[cTݧR'H|Kڠ갻:10pVhd:OQ45:[;k09CGNʢ/k@Ll!!]e«.hT&g2eDh0\0{`&Ihj+kgv-OH쁹\Uo#鸸5(1_ @QLB*!!w\F>1xOLAFCaԏ$E TkI2) d]yS^B d 㼢MaC8t$IN:GK<,(WZ0FJ'xA=JTʷEF<O+I2h4 ,/IIWɬQ@}]]Tn|@(&>(cJnތON\/.1+ۣG}}wU'vI$Io.sO>!mN]Zy+eE>v/aDEkP$9)ݿ>;s Q#Zw_Kؘm}=z;y܊J_o/zZo6[z$;yY-(/7ڼ'˃vRYbg%uFyي5=K/Ϋ֬Թ/j֚Op*f&w 9LL F*_ݷ|E_l~/!1;)?lwڙ#?G'K4K<%D٩ߐfC4Y<+Fьԧ7v8x=80˵a\d{9 0P萻<9%E$?21.f7nx\bP\q`Pp|<>j*/{L(iK$=Bͮh<4X֓G~7(#5pOg imMPo)bFq7O"prkGѓ&C 08(oʥ 쳅 JLCMTd[oCt[=bc͋"*d" -ҋ,<or{@`U> |^gE$=111 ;v(**9s+[y<|kXc;aM`&?Qе*c!Nym1;17($B캣K-Ž S666.]ꩧ8A ,8yҥKKJJf̘=UU0'O=z*nk*,k,N*س k/xMŭ%ۘrAqUNNǑ#GE-ܒNW--n-WCK$.wSAAAr\nKcڗA`aaaaaaa%m^VR+\jDfhڍ-7ιí,w*L w 4=].wPtw֯_ofc{vA]]l6|{{j-rw 5ch6mHnM^j[z[hjjX,2̙ qN q=)նVdAbX0j7<2.֛/LN>9eW^=fǶluII~߹z*:sj6عSwGBC)..)] +;1c >]eqIl_Xs;,T>Y=bvb'I'7}sDT46҇+{Bp@+XGPxr{n?_ΟyL.!R^O3 Fd'D"\]| HNB#3 Y V*,yd^q.V+=݋&|&GhjλoK1 +0X,ZްAke0^\@#u"׋<-E*VgIjԞg{.<ҐB!p^v+5ny2.Wp,Ubm~*6_Ң}+cbz&I(R*_p+'%y+?yfNKڽXdU eNؤgL;qʹ6pD"3e:U7PjFzn$1ϞmtRO+.H,Lccիy;;"#FK+y^mY ^U})8أhJn&}o7o ~ӅJOO=ztEE龇'`|9~)1o4w Gə9]>>k=+ ,:ݢ \.GN˪7lrɬ_WϜ _ny40lj45ΧJ@W-Yjp^~Ƨg-^K>tjrv ȬF]_\{rX'1QpfY"B>36Qe`q-"$bV}dQr6KE#'@cv}Cѣ9Si04* s|L&,sf1̞}a-3>>ᡦUx~ %NW$mq8/*TUGoYW_ji:V(XViwi4 2*qV[Dwǎv\ :FWZV+eeFc]]cCrM0>ss FSyROݏܿ_rlb{uUё=**Hi:b~dDXgڟADD8>z|tzk|6롱>}~T D\ &3Z3OKLFDD0y^ s<EL~KM\b~>AQ5Z&01^Mgf"GEW`[ЈWdnJ{ K6mrG8R|$R rEoV555y~N*avcc);0Z[i)[ qm0;@FW{hM6oGvp0I#ė eh42~-eREa<;ED 'jqyf|5G=&Q RT?ߩR&kh%D>W'ZS'.I (#RԆZOwPp$[C27V"]0?h#sRs"t AA2̶ٚTʫ4zؾ|RK v5tj\  󍈊t8($T2ľMKݔ1 )YH.G]=w{]%yҮØaz 0=2qE}2q?Xh 8r(*)㒜љC3 6- er\Rb|Pfv Ngr=sV7>|gMqԾ=z/Iz*9x,[vT՚Y+¥]}txxH' /|Ϗ޶{.ʭڅL"rf^Q21j$/.A D"4pJ >Ix2_n—єG>xLpq J'ÀE#cPǬYK%8h(#/WRz9̾mX#~<ۅjsdI7zJڎd0#&JLtj]U Aq|>I4L">j4e? q.[((t~`$ Tq/Eta,+?Etd=yP3jxp8\BRYQ9%kfys@xTԡ{G,J4Q䡡"umkZߏXoAjd>zILzeagXoum2Z.\r8=z oh,.7Ç J%F9`4zg^TTm޲SWkHK &F=s"Ms.WWkzщ}M|^ξ%6E3V zyp%=>|t-Ӈb|+/1e^RtD0T;&?N6MӻP(G9E(ꪈ^+( }#wQBwzG;M23ii 2̼ Iy܉ܩӨOk!.r2H$q#v;1TrHG.$= V+)8m|0֑ZlF={z!I"'mK;0 nBJݞ=6Esig*&Ky,[lXBo\yN=h/oBd|d61e6*б[%nںZ \LGDMgqqɓ44k`))I2,&:r+`ϾR*d2ٸ#@|\tfFFѨΘh3ȑA.vb7Tdgg0cF x<55>R!_eHU;=WIlj~0 g/w6D"[R*QL PR<;%v( IDATA:]+}X33Fd2#g.\D"@(ภH&C*g1TZ@Æ8JNGMB #ֹ?(gޕ73#` b2D5lj35PZJK$ҼoXS 榦$L0NޝeE{I$Z,ֳgue{ңl[ubSE0Ev&9U!-)T_eU5Taaa%%%eeek{uVzܨ[7r̹nɣG1-go7^i_\~5ݞ6}[^H )]wחk6la/HtYyջ[[CTys׆:΋W{ue0?_$R鬇#=P轏 j,Z %Kɧk{tƒ*jeXNk4 oi^f-<p$&Ѐ І遛SRV2~`:  nLȗ17Bv՗ǎFqqp_+$sPH\\iٸחxn ,j#.]$b4q __pjw6\"!6]&2>_*'h>Oɾ|UVSdnn|g!: *wWy[XעoEG2Wj )162Aci}?Ѳɉ^BN8uv9F/Fдfy JWzB8>~p_@dttAbv:egޣX"q9]gr1 *U~RX\.]{ d2ܽΞ?cl1[q7@~ jsœ=R/mcw?dci8"*v{]miHWvڐPBjyB"##RT mV&k~ը~8w6|S8ҫAw}7h} 7n!D4T6~s5:z/۹mx#Job\1rջoHng~վgI?A Q*] AL .[6np鯓v%24Vꔿf?gik%ۚatC njnnS:mB1}hXG Fo6š8[ ZGZHՆ|w&N~aV@/͟Dh oI@@@@@l(n]W./+*+mh oI@@@@@`ni(uKQRg DFF^AZq>J7aMܭR!]Vq)+(.[@ӢW^~wi3-Çe=ǂmվ{mz_D8{bc\}k!?mĨa|Ն oSƍ72\`ǒϮ?P*?>{@?)ph޲;S Ҋ_CaaԴ{Q|H&r!6hnkmzfv-퀡JŒM}?vM4y² F裸,%_[=a<_R*0.v{fW8tJUe6[,+LrX 2LvZl@Nqj泵C54].9j~[W$w;U6$&'֨/Se8uiit|!0|h njBRTDNTJQ sy ?b)E\(&z=%e:mTʻJBcil0:R'=]QUJ5˦ȤF{6Ɵu8f96Y" T:byvffVX؛|+Xߥvd UN^rb~~N"uǀC?Ǻڽ[}9NtJawoyF$Rt1gs\훙1r㸴>$lߴj8dѣnz} F\=PVT\i1}9eEŝ "R?t(Ḕt[Z:XZ!@H$bRYZn8pVDt?;559Tbպ`#q^?e?mOmLjGmݾdj2KxP]RRaښa}&Z|^Zj'}0埮1Ͷ|GG+fe<Y>BbcԔp*m]H'`?i4%y`w:Z1 i(6U8  4CW3P$s8 :RU p/``g8?-zrJ!W&bS7k vz q&N)jqm+4P*^lac;^+z^BXB`J%[uO#Þ} i7,{ۑ$+鈋%.T|JDdГGX?BDu8kOx\: aI8L;ʩV6ry I]m+#;!-=]UC>]C-@ oW^}o{=gw쾳h)˲wO2 k¹s/|%R^^Qu.|I 5 /B!D*9wUl6jzzWWT͛DZZ7ɼ~ÏO~GfMufeȠ'sFQ[2;N,m!AKK"4m8%84In|gZ0 '@2)1ֱ+} WwCQwM'>cb bJ N99]YrYRiޫWn&S H>qiRLa7ߩ2$ 9V468qXFQ[&J)|xXoaَyފc@'VNІk\UnpL@-VD*)Zt:qܝ3kgvhBM&:$6>evFZSYe(- iv:tM2!bX"JəAѢʪVQx Ү} " J.\Z!hI])R*n<؎K̥it"`iw\.64k'_ᩗ@[7{ѿ+¼7ZͣW|;.zj΍gf9~O_<&&gNϷ~kׄ/VV$bzPh jјZ" jɲw#Y9C GԪPQ W*.LODvfEg U)Q}ﯣX{`?x6TbrRtMvNL_Ks8L!3aXhe1ci(+7ߓ3=Z]xc H &>~R9dp,(JYZTll.5ɔFnu_eF IVm ~+?\6ܳe^/yΈ8zl9bFٝcf;8?=|ʚʕ723;|$˲'sVWщ}CS&<ǗxOǏ~kD3R)@]4@"h ?(ٹdh^xNܟVt_:rTUzIiԧwе ^y$R_8*[pFRL^/X w >qgXGjk%?$\/ P64 )u{lC-Υeo,jldzbeg{Yr9\nv9;q| Yi2²_Cr-^m]-Ì Q.#bco@ҦFcMb*/?P r8* viv5mVk!MX0E6a C4@F._ʊ;,0RaAAv^i,+.Vlޑ]@y4:&7!wp8N{X7}uѨCHW_ۑH8Dffcgjo۾dj̘>9>>&B'H]Pj5&6;$WZm`#{gqgrsN^4rRv Qʗ @*;\- ,kZ>U:k s@by1TxC?<gf% d ybcݷcgSC.eb0EwN#0q ,l=-+&S#uI|‚>auՕd. ;l mn[V\/ [w_dR)b:&::.&׭4-E@4Mc <"i@M|`Ã31Ɠ'ih0UIcSRd2YLtYW644}'9JTdqcG+̌>JQ{1Sg#a30{GG/\,n Qanjxjj|cBW[HU;=WIlj~0 g/w6D"[R*QL PR<;a$vA:]+}X33Fd2#g.\D"@(ภH&C*g1TZ@Æ8JNGMB #ֹ?()I"!wgf@Qaa^iY]^a6V1E0EQn wNaUHK U=BlVGTHMӴk:-i?ķ Z/rc~0Ə?իWpH[J$v.fm o~鶦 yX%W__ кV]3nVwᥠ5~9s&BhӦMD"DZә%Ǝ[VVfEDKQls""" [nݶmۗ_~9k֬3f knnI]=/1ճ^'g.Z7{N$o>,?=Tl¨ixZȹδ{р` Rp ECq{enoG CYHz1T?NC X\)A Kf*9FݻQ<(}Ѥx }zMtCC"# Gߦ?X"_7~[R 9\r:O-/.F5|:TCQl>/ RqxKĖz!^_QQrkCZ~6nxqoi֖JnE 0 11QmRjOGN"~NPys˙`>x .#ǎ~r鲥 w{&?UݤĄԚ8C"__U]lꆆ&r O>?u8ac8<}0|hżaظ0L&>kX9KHJ>fr  7(Zkvͽ;g̘|x`/? D"Q\\tީ6ȲJ}DD"nN⤦&j_Zl8g̚ں@MZWI?ѼLMFc}qIo7KJ*V[Sb1vvׄQkޔoKK u0^?oƻ55Fvn{G}{wb~=lhVKWkС{/5e2\Jjjp892330<ĝV+1SQߓ2E .5-RTLJJ} )njWw4)@S ̱-vvTZ_x q&eEF(/W^ln1-U^j=^/!,!0ZںraO4Kftm׮TnqW]킹_QRr8MMWDD=ip(DtcMMCvIR ee^ƛ™DJ$MXXEY90nRx B jsy \m0S骫u9f!4FtC=zܹ355%,˖No4$pa#'t)iXlZ$ifsD\ycGly ΢,=y\ ]ZH}xyE+וWxFF~%Bf0,\ ^S>ܹK+WۨGʪ^)O^^Q5oiiL& ??q{+J%!bFz=x<@T$ENgഞ̒m(6O! @Hpc CcC?2ଁ1_o/`XÇ iE`Rnt\*$gD&3s#1T1ֆ=TJ8͜r8s1=:WrFL- @0/q!J914~LT\V0L{NCL+9±l.`+Q֮R ;5[X#{6'C>o4H$]$@_ 7Ap[bP6emI8.okBÊ""""."CƊĊ2HWt%:3F#hBCYYQpԤ OvBdYnB`I?7\F#͗j!Jĉs=cO:>( 8CQfF$5\y-i=tC?4hw\.64k'_ᩗ7fkKo3@Fޯ j5>^7,Zݏ:7*2ӏ?1ݷ[^xN];fFR)sJׂ$bzPhwWfڜ %w%[HS3ZCP'?.hj⎷j-Hh(9zbrI2˵g+]{pxODr_}ANLAZEڙkhԛoɵAPTjFsOP3(xXG]x7RG]-YVnt$;r=gSaqZ@*Jiт,!WKMY%SA?a)ISϮX{`?x6TbrR'cPnrR{:ݮ]DEQW&Ѵ枢ٳ>l Lzȱ}w߱j8A4MHDQ^W$j޺}-C+6hkyErhsMy63fl۶ںc-0C$;K$y6sGs]m!`9O-+z[vFDPǙ-֫Ee+>4X,6ݱ}ǁiGNVV֔WT\vGMm#'Y={اwNk\YYw_pڨ!n@]4@"k"18;~uKAS&_"f a$q;=cF._q,r=ͤ544Kܮ=Oo@ȕs'NrN>&$\)p%`a ӆF7!nmB8jg*&Ky,[lXBo\yN=h/oBfo&&P:GD+bYWyPЖJGDXɹ: 9ttBay1 wHgݲقl@52#j@sR#DfoΦ]0mkg"Ԥ Mpe\.:x[|Qw}%rX0ƪ4;]jC[ 0ꑻ_Fy~M\}}^{zCs0|.],^d2Yzzzllu-ƘW#TtI(J.DGn84-E@4;fxeUM@#h(L4_ggEc'O`ɓƦ$dٳ/+lhh=OsJdƎ?Wqљ}4F;cΜ#Greg`3uHRbR!3v:FJ-辍u M+ EGqyA8oqcZ,ggy}7ꖂﻇ[%1ցHw d2JqvkTnjBݒٕ ";.YI]][5EHDLw4)JQl ;+X33Fd2#g.\ Iw 6I B-aC"?7.\psmݺu˖- ĖnBnjd1Mq\eeMUuͣWZ2zGnggc]QZZJUM:%F9hs,o'ZV߸@=9K 3n~zpQz;ٗ[b B+;^ r]qkW|љitVUqg=ďPq0LPw?0]{Uyy#ƎO!d]LHLRT Xe1®<|Y9#حV@Rp,d2ݱ_ci8"*Z!pr+իW?#999aP(RSSBΠ ^WY|sn7S,[=ۢ}c}7~w}ۆЏ={μݟ@'PS%v;r݆7?|BhiGT,Hng~վg%A Q*] Ai+ʗ|C V ] j^_'%nm5q8#@p [$g!dnk_yv ;RRc> ? 7+PܶcG;ꛮ8\~Ïǎ3$>.[k4sᲊzu-FcᅂF. p-)k!xK5 }"k;x6ce<wul MG:tf27uMf&.4mWղZη{9aW[%̓2Tn5qޒjVq~֮]K &Eo[ZtSK_ݒ&u9{1Fҵд蕗+uڌ'yaY1?nۻjv^/w}~f>pOllw>YM0բ/Pa7{ʸFkCLXբ2XJa}Co?)ph޲;dG[,ӯ״hEX5^V+c9יvz/la\C .h#n\m7}zMtCC"# G=w?X"_7~[R 9\r:O-/.F5|:TCQl>/p Aw@) iq0hz;D:u ާBaf1&<;9˥˖.?u8ac8<{|?.ԃ9}g֍ʙ`k;{WF]pt?۩!d8g:{2[CCMIyCP%LmQd$Lb}0~DٴyĤ7 rJJf q)'|W΀!~sQޒf B[ Ftq\P_zFӴh5cx[IL_|t"V]SjusMMb5-falrKiijUk} `y8ȝ9  nmND>1f޹ v;4kwn+WUZ=^oFL}:fiPNc;tv=pdċ-jw]0fnQ7¥C$H\|sf=bw}Ap\&<{E[v`߸.1 Wۦ;`Xb[=Hba\rUt9W^PSMFcuEEtlYBDj4vMSSK}w 9zhw=ox=UFR(q\Feaw\<]zrjAKvSiq:vj{=BQE >l@m$onM3{av)1LGKNFD\W,}́:9W`Y֙S:,2>}aD74~vc}C(66Jj+@&D)aP$<}u?zy*74=} Ӧێ;ً D"J%뻯Ōbbz=̄XiA1&{D.'3Pb?݆bz_X(*n6 88S'1=rԿ~8Ə 0Pn|`_>A &\RO4hO{-BH~2EE;vb)*lh5#|5=i[[ܽ{۶i9L-L.y"ICQ)hرekCm1cUKثJi|95q!45's/ج%eu֝ёD(LfKeUݚ?J Pkl; ol74]Mg 6]Ӣ=T|e%eͭЋoKevyZ@(."@aA2ꛉn~#GfN'w(73О4HKe?<"FOÕݳh]{РJԄڸcǹ'ѠYDP0T"⿒03 N¸cvXh.;R)² njw{FH$pUpݞVۊ6Ty0,|e4̲_LcY)i.VY[?WꈬD\bѣvuVj4ן*)MIOlȞD]iնa_hE(i!% ZZQ=Nsu?YҢ:}GdpXD/NbcqKKt߀iyo&qܺOٷ+x;ML,@Y؏>7 e{{A`q\jovRq8yB=yݞh{ݱف7q&֟5aܓ>L*[k]b#?S0KL9~lQN#.e?irrleyf 0peKSsɑp˲Y"GDEV^x<.2!`6 c1.^0@/okFD NYq~WweW|go !w~zkſm;A!SA"|WLj 4Ma|ɓ76i<E4 I4{=27)) 3&tffΘ.c.Q3Cn*Ib@rR|^ 2L ֛cN:%F30>>+T2 ܵ=ˤ?o,UFQ|WD"1eRd̓fwƭ j7a FBb1DԉTfk?PTOF Zmp5IEa = hPb<;0EJ% YDP9Oh@FHP[ f(!!BA!BPrq/Jdw* i 2OVZzr@hL"80C!O d$9@$|$*j㝡oMy*$1;\uėޭ^rHKh" ("4+&yGđ/e6I$|i ""6yrsv2 Cd{5r A$ h߭^]Y =dp]U50Nr׏ I23xGR%$$bD<``R٨Vh2trQ]Q i ))H, >VMmfw/?B/paOsuE}eWO9{|%x"~!hѢ;wN:; IaC;קNܮ: ܳ/ׯt4qܖˡY2 3#;nl?.+?q/}\(^{s!>p8w7V',j+ Þ>s@(-wVLtV5^_nʲwdNoxw'RdcbcL&}ś6w€YKINhe"gA=?j j:PTJK|ux'RI.wgkqLrɿequ uA !j39f|=4|<>ȿ.B)) ܏;zC2 b/rv-3 `v%0(BDV?6!b1 Sf(ɉL'#/Vͯ$7ʱߘ,Vɘ(&gy6# żxiT0L"y*&JF sj_ѦZզ_##̓1ßݭ~Ȉblj[Po0/ "ɦϺa'7zGc]CYi) 3k=}KS1 tMysTL,DFG r1>1[ɓ(ilV3(@#9SR;&bNmVd\ܫ{ ;#-3k7_9.yK裏?67{-As=6mFiwnr!yn) JWB䉐d[TH+C(':l.!gY7nܸ;74M\%odȐ!Cz"5D"lڼ͝&BVßus޺mI!m wKBC>oiժU`X~c**??7v0P(Zʂ!~;.^&YB?k nWel 'oG 1bDxx?$ɸu@Ried"D!~- ~zvNNNFFW_}eLj#N81y人:L% "D!BNHɚ_-n,[{{>lsQ՟y\[:U "D!B\;W-mQ&G=mԴlٲl B"D ?'t=pRkCߌ>KN}fDEv4M=?Ț5!^?n?@Ͷk~{O?7[~z6!}[bbw>#G̺sz\l4ðU5}A]o|-SN oQeU-̻Mۣq1?熬L(>\jbfK?sWv'gݎba wӽ宒wގ*gyoRbd`ǸÂȅ PFk)h`6R*bJNp ӧ> C[ϝQd$q HMEgx3n,!l;C#G L&ˍXˠ0V&}71#au>iV*k, V&%J_ ɘa2)AT  z5:_;E X#fRh9Ӵ~kQ0B5[gI振LzDDtTP`eM&Ӛ]I8@T0Ip1>/;;/UaÒS2YQqҹrw/'%8uʙSeOTAaР4ݬn*:p<^R_] rq $ItdϟhM\߄䄄M]aaҡC=u-gB>osQϱD"Zb7deyG/]Tmҫ?[QD"K(?}%/;DoysoMJ{/ .냏67t+P߾Lk+d=x>WKtyEܷcm+%m6\RD"l><7{ /pEJpCBYIuXF.nrc/:1f4;o9A{fD,!ym5u %EEdDD"6ihjxmjʲbzg*&sZ6X{|[ѿJ <Ŗr3RՅ`XPoL֧&պ| nHZB`LƎ).Ҷ-\"Pp!ɨ ȟ2x?-ѱ1c't]eܭ48/B?ilڼ~C|b؂Mhr]e%%V㸔 +"į̃KO.\M.[7 F;YY*uE<>FӴh5ctN_|t"V]SjusMMb5-falrKiijUk} `\ĘQܾhznj;wnf 6{xEԯà c,- f_tDI[:9q4/>r̲GϷ8h7y<kq{<0s/hn=}3ywt6^lwvPTI0[9\vW.] jjvh y0_Vٮijjit9GTyOVvSHexxC]=0.Kب hcY^QKO=Y6tipj5-NnCZz0Ozd5WEK_xs>N߱se+Xu >)O_X31 XzŧRZyu I%11Q y, OvFԼiKXimGEB"PbF11vcefB\,ִސˉ̻+[65>Azqqp EFP%&bM 1o.f3޻;sPL >qHNF)x)DF@[MR)俰PUm£&ݗ/_l9B"/ivvs[͖u0ؘ)r Ҷ1l~#!.O"2jaive9վFwrXNA8In&"c6kmfIobK zCP*]Ȩ(Xqy.W{SS|D?!UDe؉9.{+ѕKQqU/!+F6FVQ IDAT9-soGLF㙓Z[@R cX&QϘuT&cYnώP`)/ʓ5q? zPlooP_1ݿ_TT:_tk,ǍSUUK|5fj~^xv=6rs>ǟx!"Bysy5|ʲ^[qѼ}^N>'7~LHE?}I yX FH(0IM͇a. 1<՝z*jܓhvn-BY܁/$9W{@t`{ p ="Y(֙Cvg^?sLOIW{IFӔ$URp_NβAoEwo7_[z%ʲ ܼZ- @|n b0`gBLH}ɣ(r|"\Y9p>w鈌 @.Mz =|=rlvtr}3cv. R{0$: Z{:F*l\bwܥRef qVHbP=m0`bYh20e4J%гMQkSӶ]~J1GY鉸G(w-5li?URA91qw0fx< 4i&᫵n|E&uUfh0>bSS𯵘L6ifu9P,JL,mz,QRZOP*Ç yNMoUۆ}9=M/ELVw{g$him G;Ε[mvhbHEDpV+:,kp4>s6HY PV?\ {m޿r/?k? :} vt'Ȼ{`Jy vp4A@3_+n?v3aR bZm]'.1qE;@8 `IHN޳Gw噈 /hT+ϗȨHe-fD"6 OZdDxre ɓ!ii>3y&?(! i|CG&%1s$Ь33bqB|w7tFSthMa2X,29yHNT)azSB|̉Sg$22|\ rstB"Jd᜝sL*ҎV-njB'b Fq\i@SrĔI Gen?<EEyt1`~=(oE zud^VJ8BY *WWwJNFGLNQH,9WV6(W WFHPO f(@ $D""$@]3E4BI@v,N"$9M!Q&jB5V@OISf(B$DEYm[yJ I)AWew׸\2R4=Z*[^y<̯'%?v.H$tNP@9(/2%(d$I獈y~ IVJNM2erG$EiF*UbJH"I +j5&N7(/0i"hjt̺Li}sy!~31=[LWy y뭷~`5!i kBS'M෇GKkf48aH7?qÀ~=rJ=? Im޻ =/23Ros7Dž7Wi0Ws+_c_¹V03?^"т{gDGnZf,{GwW|һ.J?(6&d2WisGU eĨV_&/+rsV`0vCxBii^~$XU I'|ש_yE bb D-}?5d7$Funn>tk?% fqn>[D3B۵e&ݺ z~li&%qX ŢDmTo0~DAr"}<+ӉȋDc+ q?ͰrwF7& 1U!2&DYު峼,HCsq1/ǵ0g4.7 HD+WVDH`|gmw_hw=i}82ŸV[b#ˤCHew1mX %iXPVZ  ZpoԼp0LP7G@dtԀ!'û՛O̟<КƓGx_ᮜw>P>taaa Ø}o^p(޷f3|XBα`[[ci :.j"^o}i$W\k{ /V}z"wygbm2y-/-^Uގ?^aFuC!2Rݗ.z|,Dwwގmc>b ,늅A͜=1XP(pO&joE̙+1'O6Aܫ{ ;ctf֚o>(J*>-裏??LwM\kOrR3O-!W@<23#i@)~eş@0~D|u熸5q˗/W*}^z)up&.D+G"lڼBt Vßus޺hkmt%E=ğO`XxiZ ]j.^ B w`'ca p/[f3ĵZ}K\FZGXrUgx~֚y$-ϟą"DRHl@%qK##ۿ5q@o`!D!Bs0~sֻ,\}R!Bz&pvm]h ~RhM\!BM@Qh@KǕOBY}3/9?-/\ jc~5iꙧ1p@֬9q#woMEm?]!~om~C̿8ˍ}Fșuha+j>|sڻ[L2!2B~ʪ:X[2ݦQosCV&.]^tX|}r |KNnG`rW;oGe)1e2Q0c\SaAQ(5b40)`p%'cJPFM-(2e"o7WTozǡ#B&Fne^+ްc{DAG+V 5fB+FH%/ttē1QdRv789 '% $0ߙkt?E X#fR؎jiZ[RtdzIs^[=G"~":*](&iM@uʮedd P*Ӥn8q~فt8X} * Ε_L|RS9UvD@e ?x Mƣ#J פn,9|;{BBͶ勯miX 㣢%5P*GP)ILgNx $qpbB'8$zUDN{]k5qky@ZJrBBb6IvBe9wRͯ A .ϡ#G?hՊW7de\HJ^I7֤ĸ"˰{pႻ>h[ysNǾ KΝʹB6{UF}҉470!9(:*XoVK;lDje} 1x9np[_ jɓ밶\0v ^tbh4v,;\ 9r@PxYBj뇢"D"U"Z&EQ445z?c-$IrirK_BF}`i Ic n4 fvXRO*okߞ.yKk|ą KOFn{aX_Z&YY*uE<>FӴh5ctN_|t"V]SjusMMb5-f50yZ/[ZF6avh`A{Ȉ[N:<0vaܢoKHđ$GS2-,{p|6{cǃ11L y0R31_7q]>c|Mwj3voz Eøhwriꊊ؀' >*nhڝ횦fM'sAJzzLu]de?{<%-OU73 r4Jw]<%W)#"O6ztZm22jZn_om4B\L流e׊?Zliaau47!>_ M7kZ/U\@W,}́:9W`Y֙S:,2>}aD74~vc}C(66Jj+@&D)aP$<}uS>DcS/UT'ohzb_ M=vDBJw_Āۍz qXӂb\Ndg]mogz7-e?e ; ?(2B(1kZysQt0}ܙbbDr2JMK 25hpJ'nuU71/>a28͜;p8GHā6E"-ޮ߮Tcn<3E.[6>Ɠ-Uo$IZY39 YbѮt3N "Q '}D$qf̲=M s5S!Xo S_v"#?joW=u*h!l;1e|%R^]q)*:::.%Dr¨7&5QTucth؃ O_5#|7ɩwbO;mkwoVVr"-#=0'wHVq=UVhaXD $-,\p=,&Gv+i1'M&MӼcD㡨wزv1C๒,?}>c6߲e˓O>/BhѢEXdIUU]whX,8jkjӒ_[nps+6xIY]}|ugtt?8RYU/&R*ì6o6[69CyC5 kmlf״hgYxIYss렁7o-={eY]nލ KH71|wx3!&M$R>QQ`>jlӉz8;tDF DЦz=t>9 6;v:G1H J[|=afCޅq˽j#Xh.;R)² njw{FH$pUpݞVۊ6Ty0,|e4̲_LcY)i.VY[?WꈬD\bѣvk%uVj4ן*)MIOܜ;wubClXh<4fO7}q xjd4JmxZL&J4tLNTR|X(%&_f6D޹zk%yqyo'LWUU/"@#G<Ϯ]'%d@޵G6dIj۰/gE`9(r:VZɞaX -0oߓt:WZwz%--Zͮ`HEDp: tFo4Ϝ >s &~GoEf7okUUs?lh`{yv-sU#?O'|<ϷMtz;6;ps9;{҇I%vՃq]lwu F]q#Ǐ-*iu±l'mPNNBrm?,D}Ѩ W459 W,k1%qDTdŋr:+*yXa6 IDAT c1.^0@/oAlZ:uɓ'OvE\kY[[ܥtvvP(|g_xᅉ'@LLLvM&SxxI !z ~:6HI%ETV.e6A4M4͇y&OؤwPE4 D$M{hܤx fΘ5Z9crffX,N]஺F{M L&S&痟>Iy02[oJ9q DFKDn>bԓTRdRɀ~/s~4/J>c"UFQ|WeKN^~2CbH|̛퇢H(P &O(\pحۀ$;rP*QSeDPr28bB>Wv FBb1DA뜐Ohp9! "}L1APȿw  j}QD8P.u8 K$S(INSoIbГdBe yP #"#QEV }k2S)$)%#nKF|\*GK3q"K2ođ/e6I$|i ""6ܜ Ð$EDG{`\A$DwWWV%FFGe\WU2t\}#H QT)"X$2XT6`6 :ݠ\$GFTWT@rzZBJ@(K$CiU1R0I :$-,o$IBBe2Otk?% fqn>[D3B۵e&ݺ z~lyᚔ!b1 Sf(󎏢LlMvS6@ B* z''X~S;"A)N H!=Mwf,INx?f73(v|R7J`YM%zV'*Ij6[O j^ }+"r\*;`D"T)#5E]o_ 9nS~f]^fxaM-Q2i;WJT&0av3W@XDD!>bTT">ckx" CQ5Aeh({\{n +f3L2tVUUGW_.Yz S&LS^qzO \Zh?m… }E^vZK<b466  ݂~%=îlT+"dBb"a@4X*W}h@0ddd-rSQr߆('3&yyySN!!!7nܨX, xYYY&wboH$;vngE4NzF.`VT5D3ѨV>qsr~]-ݑ{Ξ={ժUVuUUUuy͚5/=q=?sW۲8aݱ&o w;;ypJ\n[cplݺ[Vrpppppp6{'M$YTEH|gׯ_;pwtyүשx饗/_+є{פnU..":[:<!h ^{矇s8B۶mC?_*wwh pϸەN錈ø.]JQԺu-ZhtU#6h Ir~ҿE5t(¢"g-W^0%wr>bOc6dX$>t^~{%M +I1h񳮚,~:߱Rzb~n>B^>2%**j}}ϡ'`&P]Rzk;]Ɠ;nࠀ&k>))?}_&s9mlj"Wƈ'4GR"߰ X`^V}oC^~!L5bRo5K9M` 9}*>/!vM.]`Ufޣ䴩h@[1oc ߸ l6^z(SQk׃TJNX McZ;N@"ש;1pC$"&N zt>)ۧɝdBr9t7q+)_-ǷptMT'͚E ZZ2,i >:rTzGALCdR(;2>.II77i8XT_WKa!sRq{"(`f"ϯw:_U]qiS*/ Q F١mNy;q I{rIVW]8sp@dNgrN,bHe2R|6˴&":jԸW.\ЪC}ۛUל9NF" >L S[]w sw "@ɴomБʐr|^e-+G$It+ +*X}Km:!{kIӭ\.]jg-DFJ !I]i ,~TnޙcDa;I -ӧ6>.v }Ùs|]ؽ~/|>9{-}e&dmd͛efS5;kbk'H$|e-m媽qӶO> j3ZjMMz ~jk:9qSr֍=RA~0|z>..f֮ ZTR\P&fς2@G|I\tHF`0}>B76tz'5x|.E( !"&gvÆÙ]qeۀ@~2')^$U֩SnUxVQ%DD":2zr"b6sR2}G EK B!q}AU#@o&b oX(Rf>ls`Lۿۻ"#]]wX /)-quG @hZ@,jY t& AG~ Q$z~QYj%39?+W/D ]hœ;J|>1s:s.)%Q1HJJALR)1t'#ԝF_Mb;FxCu<[!߭3x%H2ϓ[kg*Sa}Hy? Qw @F~FSfɭ FK{VU^ ?ttnee| ai_'%nIZ옘Ȉ g] ޷ B\Bw K!&S:QWM9ϣ($yld |=6Ǡ{.z>̱dz1g ;D I:Nmv*/|{c&-/LfU}é4M+S}e "kC[,.X a5#5 JVkEHH Omto3'rt/Lf\֪5xGqC-z9I} F>xż2Il&ú3gٕ;Y[¯BPO"u's_OQ$f;vqT5tVgz1$ =bv8su[NCzF.@ب i7JW hGxTC6>i*Qo^>SCN<Ԧ_C9)>_`M_ LxP׬/v|GW:FlN'{A3|>ZYVA=-bb3g/x$5u1{,It:U@W74I fh"pq˚Ai֐ޓH"AJ%9ׅL!DN*f0\.7b |^+G}:fo9s<ȤA6fcv|N쁭V!ɘ<PX=qBQܻMT9Z`03D(' `@ F(;r͖ ?v4U!*!KxTDzj`hF퓚sdO-OzV(*,4k4MzD >{$tRNgYqɰQG04C VK#6UXWr0l1:!oAAzC؟i9pؽ6<>|>g^Swx<>ٙ9zjAL8ISjIbqdDfTT45iȱSIbجEֿBPM@dDKW 77/88pAOzZKJFtw|nĄ80S&TI%_N@݀kkQhlw^(" &1vLrԻ 2az\?o ̉ I"k4R*A$BDW2T\T.xSã#Ȧ($I(Orw@f>>]# [, ƍno˂ Wl[o;W bҡ=Ҥ enݶs m. s']䩠rm`O|b+)|ƧmH4oА`Q]Zh2\?}vM͚5붰rK\5cX -E׾ܶ34TݑWߒhd axJ1:zAQT1xѹ IDAT`0W!}QL ꖈ%Cq Fh;7[2b⑙(0L&&/9r}a!D<4.ECMddyooܤ?>taWبzEOE&, su@(v|R7J`YM%zV'*Ij6[O j^ }+"r\*;`D"T)#5E mhl~!4@Bsf'jMuuzApЛ&9n4mDFˤ^))Rl]0_maiC|RSQU f{կ;'va֮I*C 8D+5sl`x 3|UMųc|`T_q Qjgk\y'>b,K&ԁ Mk5-^+fh@n47:m|_9qm:~%=e´9%KL]ߡrٍZ?YMuCpp5o?1`&oiS Fx6L1ФrϨj\8~ Bnw,RTB?^ @dX}jZqg$f#"[FJUKm }>hѢEn%MLt/.aW6g*Y!19ӒE4X*VjyC gu.G/i3hUm!aqH$;v 7l?R 1xnEUcIFբ_+c;v`A$ôs9qg-qqUg]ٷ(8;- 3a6@e$2)r8888888~s(*XIIi|2Uhljˢ'4GR"߰ X`^V}oC^~!L5bRo5K9M` 9}*>/!vM.]`Ufޣ䴩h@n"k )f7n2~ ^> T ƣ Cc}VĎ#3H*u*fN6݁g3?ir3 2F\:v\ /fzgL&*fFW]-XG4Z9H*{ *GɤQfw@(b4LvUv  Z,UB1(}<@AArOi3'7ljB+V`%\N/q1R[*mgdS&,rΜu}K$ =HJxn| ۾̹K|>O&uYXӑ@Ι蕫Pn왔Z ȧbfz B[KKqA!LOƛ=  z'q @"6Ϸ@C>ZHJ&2M&bH>bl>Xh30ٵs'C gvƕU GnɈ$U7[gAI"k*  tމSx jkΞ"v0tX>*Oyo֫ -0>Hڦ\ڨ5yx`[r!&ZaaA( 5`c١]=B:m@`P1vW >:5z(zl^?r#:zd34oH=a|ߴϰ)A>}>fA۹ᙣt^;yyFa1?|Gܞ멧:.}_W^yeʔ)ޒŋZa_|_dI@^x }7c|۽ 8 ot1}Əw`7.#t4ZXnݪ2ZAo0Rq̯ٕ_h4˫ .Qsmu*NgrU{3帻e9W`?jR=[QH|($(.*J 4EڃфKZrĖ$+pc#ZAo6@Q BQQl88u*03pMb@(&P:/Lflⓧ~)--ښ 1l>x]TXz7K 8ͺjG+Ϲc;vi;8$W׷2@ źk6Ϙ-mqdu: Sp:11~2'fުot8)kw+@ŚƦIG7lvO6<IKbk7 ª[VYՖyY x ?VlVNJ-zO=st[6+*3)KqqlJ"0(ݮQx}E32 "H|9‡C몫5MMq `XTVnf./wgRnΝjͻ|ڵkCBBVXquV;7nƌĴsEQ?R!6*2&*jUԶC _}㟽{%q Uhls`Li4onn2؟ @5NDLwՍznO^KQ7mIrO5BaW+ -A?:nVV_t!x2E ܷe7!!!a7n"˵U1qqU</":FQNrRZ CxT"8H*d4998~u:p,G7̝}KNweeP(VUU@ccb$I9st:t{R ]ZuM]ޥjT=""|5v{vW*NMeDۿۻ"#[},YcԸ,KHp8 lԗXԲp L Ip;#.Ktgr~WRk_|) D O̜KJ(2|"s`$Rb@$TJ ɈD@$uׇ G'掑4P*Vw w2 d$1֢ڙ fX66=R^u_݄BDєYrkCca^պn~UrBC$ ]&[YpYE(BXGrW*IۺDҤ)(;&&>.42YGÇ+Ȼ`T|]UnS(F"I _ļi1=s@~̄~YGNk A;]{Sˇ-7F:"6̿U\wnO?͞=o߾ͻ~Z gGN lE?Ic0MfKuM]m*uXo2Nλch9WPQYtR B1 JJ+6Ȍ! dC'zd>}"5%U>{FUYU4ii}d2N垧i|^A]O+AYG:blvX\WWV7b Ь'Pdf_+MDB1}*Gh˔ |9C{~)`2[ByO#[|sA(č`}0VɥyeؓMu#gβ+wDDo_xDjz"6551.;äϨkc6tkL#ϧeVjrO ŢS@уnXA-x M{ߨ}RS#cbaAI*EfM2i^/gON,+.9Hfj 9|f*}W1@^}80H k6q@H`"mN'ɉk۷aÆ 6^w_ .k7o~ꩧf+-E(ޞAȽADTdX$x!pWH= >n|15*O|7 I|>AĤc4u41+11^,GF=1oFEeMS;5L?T,(\1i(~ DF^trs ODW=0nIw|7KHIL 3eOݏ(T߫ޫ evꕌ"™|hocǴH A!G{B(;(qY6[@$F#D"Kd`{%CuAJ%#=5}@yQBW$r,\]Ud2bOLϜ۝ : w<y_G}[}"<@BHw &3@H @!(;XmE ~g-H )!<$Gɤ?Mm0 Y~2t4V(ȳX`?^(d/p2>($)%gQmo2`R|Pk%n~P`~R~IDt'Z$ |\b<@}WUTVfdSE$xBs|oZ IoS^VRӥKpH0LrJߊ2nڽ;A<>?.1A۬E@@TlH"IĽR+54MM}SN*&K`pPYq E "Do> iky 6O]U%Wyi۷pB_2,<<K.ҥKaa@~5m ƍn͖ȞIBwUWWr^Ynmxt_ 1GJkK'@bBi?uν?.(}ǏT(WT־ ltْf˵=~|֯(~"ѼCCGuj?>ɼr՚g<مO45k֬ 2",gO?sՌa/n@,^rNLLlLRvG_}KNan'xiS8V+S`t;p0FQQA ^Ň\k@F11["H JG`nltGf@0|1چ9txh@Ӹ>1f49&q|"Ӆ-,cRb-=~CZ(0̉֞1QD+ƃo?wK02n{O/U: lVռVDx=|VUfwdERFj156Bhȁ8'Ov6*7CM shUo0NIqRR2لaڼ""҆ ?AI͘__[wdO60EQ]qYT@pWjs6嵕.fd gxAg}ԱS(J>׸:N964}yY,'bP~r34_  7vNd@^/xUW{V;\6m0a>{n b[lqT*}_XXK/;v… ƍڵڵk}N.Yz S&LS^*qzO (X*pj|֯yl3qxCNM&O7C54eq &͜{FUwK vcyڵ%JJ&zv mZ14]ZQ'%&k߱8ׁW>EJC-u 07o~h-,,[Λ7o֬Y_~a%=îlT+"dBb"a@4X*W}h@0ddd-+㷃xj1 6n_h*Zܭ~ۣjkkWZ#H$;ystp6u}̕E/OiVD=apQMކB41kCc"ѥk?jrrn@rT}_Cx"1=4z5lYm䴩h@nfxĔDdi|s𰫋H{r J "cGKB/5sAD}z!{ ӎ7NF  LD|(8xh"t32;wͣ}U?8&bP>PBM}fy%]p5nK/xUHIK땚rZ$I>,6>a7 ٿuHXXrY|BV "vl2U5<*2m???F{I&xL\ީrf.=ǎ^o:gNg-u"bc"#[ʈt%:^$9< %4e9wX"mXNs҄ly,88ljfzgMQQ xڈD_]Vx޶X-Q|m| +s@޳g>r՚Z<Ԝlfڄ375+Wn3):(-se/\"Fϥ{ӿ%t:16%OV˜@NΚ-_`LKOIޥƉ(~MI:X7QX9Ql2|hȧbfz.< hUIO`brbA<بۻսV8=EB66U;N>zDGEQ76!*jIw7٣yo֫ -0>Hۼh尐?W\X&>VSY`ZaaA( 5`c١ \n j9}j1w5=k̾u:|t=zݵoiiʐ Ec&>h6Kn$9rآ˅\+LyHWWT)A}"(#kLA^~YqIߴ#Ǎw 39'f3IiicFR1M>'5n%#/^EGGK~eZ|#Ju-u(9wrxbd #ɦf%;s?{Jp3.+ݕ4=y /__aU5[>^~j)~sT*VzȤPo E˗vԳG@عfq{ʪeKMعVi}-v7&:؉n =%I2<<·: 77DêzC :I`w`BB1ػ͜T 2)֡ Zu$#1 GNss8p%z%c)($3=WB` 2Q>:ܞp83 ('F]AG3W:IkL4ʖU1+@~dָMO5 ƋCuzD =U?U!afްIø'3>6Ϸ3xAu-[)Y$a <,LΊԮ_^J̥?q+VY&;b?x*+k_|qogV^xp:^p Y_^K_ Q=BAϾy{ŪnlR왨pA?'{șz[v?C11yc+*ta Db9'}}Ab\@( 'zH,0E1< ?vX ФݽH*E q~1d3owwHi)-_x(6%'Mk\T]wlY.T*ܒ[qa\40k|aJdLe PWﭭ&_ eFkuelgC_mRۻ9nO}WSyڑ=|cUyňc''*S4=z% vvwT5F9Mr,Bi)Hϟ:r,)5eCNmΥ %:D+?}x#{ܙ0cEo1[~ؾw߳,9,=?:=%-ϔCQԩS\.׾}RSS\X,6mR]p!“rූ4B t:]АJ.ӦN8yAVPX\SrMy`4UT|FTf ?j4랽G2ݯ' kM d~qMM!; b&LiowHҦU*p:N8  rX ϻ7ɍHM:=H;ANV9 , mp2 h rv+i(6].kR)H"w*w2ߏKy h|q#m1/1KcYXuRp4eޭzq:W[hjB&?d\kw8 Y0L?򭶲sް`7zIg+2DŵW+^njY=gKTlѣTߠhLFCŕU i&N5 ŅE^eaD&b21" S̺PP}}GJڠiGj*z^+:uj,bl2Y-ea=svMk[ā%2 [VXQ{]'-EDD N`0t`߿m{?קaYtO 6*ea~ 7nm8wJӴ`6-^BO,Q@#2ȷI}CS|\k$\b!_imB!!Ưق##I VߢHRɷ Q,QO>=V+DDǎ\:{NNG7E q(' NrFMGIܺqZЙ?sΛL"#'9ɓPj :z:VGv'"53 ƛj ^.jW!' B\.zOXy >;iЉ +8i6Qr*F bcG{x>' ,39?N?qɌVe㝿n%(o2q8QF:|Sr;$KDG"'|+ z5XؗƛZ=jh $ggBrnz|D(PY _WzO[p>ڊg\lp@Es'I $tK@D3!a#O@g4tWbHcdɤD"o~ F#$DЪK%! Bq"fR` J C* ({U."t20a1Uz 0%V[/V:Y2iX dxSs]{"91pEŎ?F(LQ@tR@B!b$UW[晍c1hE.LFca(J0WTAӴ"0 qʫ7DL€D@HPD V*((6!^"JdҌ̡*UC}=WW3bqJziX-0hЈpF$ TrFku6OޡH$gλ'WQч.VXH~Dr?6mxb~R_!45w<,;N)4URN7V+5!g'#=W7m\p8INsמNljJ$'_lܶ%~ڲg"ݿ<<dJ*{[{p5fY⥫oDr߽"CNg}}>o}?>X}3A1ёi׭w׆(**ٲ{L*~cn3q|B|lXXZNw߲w>,83 X,_93ӈZ~uX&{<_PH..g7~M-O s|Ao~Ƿx,z@QMmlɓ!z> z8nowmJ| + SS(٭Eu$A*n?>,,&Xo MoDdo 1.B'[\,[mkڴ'I*ow<"x^pЋQ@ӵU6ִi_ߓEY5t0(.&4.ֶXWPT\VyFf\9aW~JNK6f4Bb2 KXDDTllT,dca%E.T`Yaz*7{FXD$ede?{B% gL=;wiڊΉ% s<_yJi45j8U_S#mEL,#{uz6fdz؁S"(ꭷ헧͛$9\Oٳҥb{/*y ߖXq+Q/,<y P4un Z[,m9Ovb|'0B&&P1L!m-da"|ZʽW~+}&:P:y>ʕAhl&9"B5 UW;|*kD-?ɩ?l^Ή1[oG|裏x _/|ᢢiӦ%%%\222277oa駟>}3ge߷wM|\3O?c^!; 5qWbztd-Y UPI/M_rZ f Cei7^2eÆ … 7lr<55!`Ayʕ~kLu)~[VH$*ۿ^㰿Cu;%;)/VXR77{fg˗/TUU+pĉ'Nngy]sZTYݚJ` Zo*@o*hRS|W-Nm+|W ] %?~o>'go-Ǐ?~ZǏ?~v9֒?~Ỏ79sDFFj4۷\.FM ..{ ۰a^ce`R~zH$[ǏU0 }% Cғ3R-xT7?>>߰EX%3߾-[;ڵޒqݷF685ΙQ,UT^mu’sL:ebhHFۇTT>P(54?<ᮣ &@5k77N}MaQ ̞7wDrt?>;8w;ۻ\(P-89 ͙H߾ݴuhXj ili|\<88/(pWI.Qf4H@ʭ'ttK&`>IhH Bx48T`2܃pPh(3 C@m3 }84xImPk;'%*\kwU]+,G3 q Nu ^)GMP1r8y_$z-*"Q,!\t|ysUȟ MlhT~h>TPjBpo@R bj-Z{o?wΛᅲ{o3]4|<~Ie^ϟ-EN-6Dg֕B'N-5ǏC郸klsgSr+W"߱Qd$u=b!Erbpop\UJzj;8!]1{c{ёa4x]c˕& }L<6M"dJ`1QS+X6M" 6CuEg*''fmN{TѢ.#̹u;Gjl^q]ӥq2M*Lu1./tS@${m~~vۍGF<Ʀ ⮢ehNNXx-[bIV*EQN)XRRvX_S#|Џ{[eD*[\XTU^14'{)h<}j03>w {A|X_ꔾ{)nۺukee%q%%%E)Jܳg|r[[[ZZZLL EQOv\OIIMi:.. A.);-~ RST>+yaVof--̸S'*aaNVU]MׯיLfd4Y3Oj΢R]]ѪuqDzoljV Ku}r1<&UPXlow̘~o%Jx!QsfCyinƙ]u|Ο)<m Qg;mnN4 ]@Y"G*%~46WT> @69J|ڰ@d\ xpGXOruXIe^%xPzp,shB*;u)k"w"ʼnD[|S(RnV`hYƲS-T V3ZYEyQ61qWéAV[d&^.$ҒvՠWGvؗtl^m_\ʺ\YgN޳W.]O"U]HLN\.+B zASw<{,]Ngyٕ'\|4`RԤC)N'jQr2DEC EFf FR$F#CE%iSfN.Єq Z&!&3rɟ:"<\qF:jxR4k# Bʮ=; X܂-Dh$.wIg,wڎ ,RvD y*}P_n.T*JZmbĠ'JŢj$'_..V}Ƞ_:MUpNS(c\.jTA  :{6##{zw?Zi޾}; 8|:ov\nZ}[ʕ+ !«!;ғDSTttbw_BzZJXXgne2鸱#ZacS»O>ڪ owܶz2]ܣ<}SS[OajҤ1-{lniɤ9Cz>$;ks>?zrVTV7436$v]@b\@( 'T]|ec(p8@"$_ 4f]c`h"Q/r$"qA!!͜c@JH~ ii>л 9zY HhP*ٲ4(n^vEK%-x2wt[[AQ "f]|\}Q=A"ԵJ'B?SU`\x>G.{%2%)`B~omGب#_nliFkuelc#=lo$>DLޝk..6":r1,ԭmēZؓLHni`0O'}(E曶ELF$gRkꚆ .#P imB!!Ưق##Iy@ ƂU!At$T--H&Caa#Kjԓ{G 8/=j^@y)JC9Y8w{5j:JN}S$td u=ORSOց':CQ@kg)7ծ\n BO@4\^.$ey'$p켧A'(.bGF%9~.=nLQY-'o<㞜I7a;vUPPiI qCs:DFGՕU`bk10 q v#r". ?~p$ 7Fs=;wbX,oϝ;7m4aӣ\bFAt^^^MM[p^ypJ! cahaäia@0‘.:'{JR>wZLtĹ ?044xlqv˥׼3mnc'ԟms8YdF+䲏__qխM&'HGQ|ORT|xJnr)HQēo\& xUk@ ",BVNԭPWoBC #*+JIs n@Z[ c .hq$40[\@ @q hp RS ,Tu$zJ@10},HQBbhdo_ 'b& /@1!@0~:kcO$'3ؑݻߨS%DC(NJ(W(D"QlBju'{ߒѣG@NN ŋ{=~v/ 嗾sSBSs' ò3ԙB B~wkۯ-+馍== vIWMMI~w1㋍vwt^[X65?0@BV[iY{vyw.^f,]tu Hw^Dx鬯o^GM`X^ᣏkW}& &:2=m0EE%[}sI/7vm&@8O QA%oywЯ1-|˂ >Ј31W_?e2gBqrvԂkP/<w|̢> E4܆/fQ1< ,|TVq~=bs7;nh6o%x©)\;(Huc_Ij T }84XX.HM>n>YKގ:10s &@='b\;O7Xȷִi?N"TxE"(Fku[Ӧ}1"|OR!gw<@nh@ҸZNzl`y^AQrYgrb;U_}B(9-mؘ!\\X$.aQQ&tSeeiª@ayٲK< (L1 ܥmk+.:'.|ի+*@ќ>~bHV֨\.W}MP1Y#G,konpؘ#uc ODOoVNɧoL!m-d}<~nX,r8Ǫz͠Tva*u qFwrIV\ϳ'~7.ZK^>'*I$Ώl_~;Mɐ̟,"D؂PM>b~DF&moJB֬ Jotn aD]OO?z)S*=a }GM+MO#dB:{m}!i 8?~?V(g;@Ϋ}_7Ǐ?~`]m\ZǏ?~ Ǐ?~TywUg[8 _Ay H$Iڠ ieW˅2( Cғ3R-xT7?>>߰EX%3߾-[*ܒqݷF685ΙQ,UT^mB8;g)CC4>>_Bnܦ w計X0(5OYIv*7k J̽AiYG ݎd'/uU sfA~2m;ѣY^~{ƃ3rݿmst8w]R$f@i [Ot<5Ƥ~Q03g!fHSk-7M"1)/'wO?Ib5?Yg "ыYR) g4 T]ZC RE2Lbc%OnY2D[ O55ퟔ:8CR.B̔acFyN;^u2 O'W(m+JKJzh qNrBP=w!C҆f̱cDŽEF77:r:K$vgX-_+FOnV]J5b8e(p|q}M紐R (pBnirωss't 9OQLNjG_3O=i"gܷcLfSԤZbA3 zlW;N0BxZ֬ݠZx}饯f[kתBC5o.L'D"~mҒϿnXOm3S~jIqYyNxnh!hWwj5HD=_ v8o[޽ZQ:3V"zA@-6D RW®EMJ=p?@?VϝM-Zȭ\(5?'m}p63ց2y n[d1Q]n^]?*;1Qwpёa4x]c˕&{mN3%K%ck&OcOY ZZ-cdqh8eqcN:&9nW(wҎ%H_ki6Ib[K74MEs;B(Z.WV WtQIMM R)?|yѣr[Zϛ_tE?uSE?9궪5:ɬכ&3˹g3Oj΢R]]O<#e]k?Ԭ6̗.IcydҼqoXgor5g6WfUE4bOvBeu=OPu w2A`ʺJl!`_.%L&IP)J׫h'e(<\n!eecFG 3Oʮ M͂A{А7Z;\8qQnK3ePzZJۍwjszq2|"D(h49@"-NԄ$qeXMsl1pvGѭ<(h t8n|)-)^mZ z}Uyyx'B=q N櫛͍-M͝cpv֙colҭˎy^Nw<Fsn>~~}Q+Ptޤ&ZmuƵޥy/i)aa!Ot4VY&;b?x*+k_|qogV^xp:^p Y_^K_ Q=BAϾy{ŪnlR왨pA?'{șz[v?C11 /wlEeuCCeAv Ba`p87LHhP*\.\8^ap_|}) :v0"~'ms-B uI{0(JQ`EܻﳟF@9ٞPHʝo.Hi)-_x(6N##b1q0"p8D NMaJP' z#lw*?F}E3+?QxJuO3mS!,tX OP0[&U\_Ӧ}7:RO7-_ݦ x1"( +QU/F&yv(5ycO4vwwGD;u[;p OJa5j߬o)Յn4C,0(ZLb 1"fE&;hA{ٻd4Μ ˆ(E)h~سgc+?} Ƨlܓ_o-ugg-:z!ӦN8y VPX\SrMy`4UT|FTf ?j4랽G2_d~ACCsm]7it99Cb6/8I=d Ȁ1Λ+Sg("Ze)5Z!Ay\jFkXhR=FKa!vGVt3[Vi 7zIg+Ap^ֶwV. R.DTlѣkhzVl6kk/%$& ׀쬈ȣwk۰.aD&b21"\, ;sAf_~EԸɓ*ޠNZ->k2,&30U vh(?%Jbr?}@!dsRF"(u ,9ƦNeeT2!nm#ËMvlx]k=,Ga -6|.Çe2"Oo㤵( & $-{tZ=EX1#aoV+X;Ο;DhPӁg'H-!cy`2g"DF"* "X4Zhoޝ?:]mq%bUƦgTAǙFLZq*r9nWxc8h2UzmYTOΉ?,`Yp8N+6& cDSTtT9?caha7@^fo~M BࡓGfEcghtMͭ0{V^rrT*\|F>mRB.JM(Xq9CT*b#]FfcGGG\.R4mn//B30{B.eYMV؈&e(')*>~ <%CR\*% %UUnɄpHPl ʛ )D"F*JѠT} NE_ƌBqv_XD u։@Q(42ҡJE=<MMWhp1 4Z/A(><8/(sx($DG  *'N3:+!1B@#DyNYn!c#$BK%! Bq"fR` R%;UpVRte ̑"&/@'E6R&E ʐ 9lqQJIQr : V~PPXKE3h'$$(5yZ`<ؑݻߨS=AI #ɮҿdgEE޳eY|ͣE.91(`}WUT<9cYp8`r`b%2D&R5Qoi4CrY߿_phHUy'IH%RV7wĻ'Mv wb K2#=W7m\p8INs{:_}65% ynj/6n݁[{mٳbSS_i<dJ*{[{p5fY⥫oDr߽"CNg}}>o}?>X}3A1ёi׭w׌o^!L#@8O Q{2yA?ll|-nXN[q̟Fy+Q0ϙbb2>9ϙN?H 9 !< ł5`>2n EeCH0^x1˭;sfK"mn×`):kPQA~Q 3zOwXIw7 z ]@PN,`]<*S==^w=O=4lsN.cC9I^-hOoww+/`NZj;\ Id$D,%E 26/daXJ.;-!%6•6Yj % 8V_+,3WD?ܼB*W$׎ڮ4D43{r$v̷ qM== oR$yx^nߎ򴤔xsaǍgg\Ծ#$Vxg) +˦^ݣWOONyoO6=(JxW%ʺy m jJx$_sw4b\~UT `^} H(Ͽ~A^z5P$rll RmAJ|K׼Q[MlOwquc-zcv^%5324HKMaF۷?iNIYT5t0%4Wh0 hR1aânLwP(gmR5,:@Aꡯ㴷S]Y)@\MW5W pvs YV;%k-[ڱcәѷz␯ϋf GR`;eE~U0, Gu/"\.o(+CЋ _||~(PkjJHjlRJnM3v~u0<7;ճغz`WhXtl |U̱y:3W0D>(+-\%KOOa_SC7\]A=q  5[8F? 5q([BA/Z+;ߡ(|2sOG*|yxxY[[DXmP(D'NA++z|] |6"[l։kҤIpp9sN>=ydz/:8w3gL4ba6iҤk׮-\0>>~! |jn[ 7bbbX,q~~~ gXwk "uZh~ü & IJJNIHL.afM݇JG:wj3sD:g]ҳ! LoHGkooS\\rةжװmj".́SJ'׫w"Q[Ol6(]2Wm[ #qw[w iw+7;c# oc&k`R"UDxs&NJ0=ifkq/+K =:SVެZNOMypR+޹v=kqtq_zyf`߭w?y3|o7oҢHM{:d~,$SӢnߡ0ӣX$U`hؾkgK+b7`lbҦs'cS%>|DG 5gKZr\,.7ˈ6URfff([z+ lAM $яbz>Zdde3-9Y.歨;w5c>_oknݎo~:k$:. ̛v;q8l&Iڹ+H$*pXF ;{9KЫW E2rXVsF-mN̓5s}M=Ϛ9qL,}sn]+W(J$"V5bΆf%-.$krvPF%&hI^J^Ah{[0}>PP@ދᘡ!7*(l)Ԅ|NT*Vެ Ν0o;PnOc=}\8[?1;:v$COR)`l&>h5Z&Mz*0l3S`%R5io;V NP( M_omR!-oʑ+CyګMMƙ-ʎ[s؅Va6{ \CN %=xۡ{7n9YY4ߓ)ǽwD\`jfޥWOEIq2x+ka餧ƸC o%I^=Zwphץ3IXn}}Ks23A={H%;tM/)+QQ)I \\:~ߣo+/86=z萐l6{ԨQ'N I(u@PJO<=====Qf;8F?4x@$H,^zŽZ7oMȐ|j 1Tz:d\<@>{NݹKTJܸ &$D $I=ŬpTl,PڑWa͚ xvԅ*AF&UՃVcO*RP?cͥ|} k]VԆb XDBwҿuYQJ%%,JEQE@CEIV*Ľu*}\EiedkZLL/KU~+ lC~^RHRTBDѰBnyLLʛ"qAAV:4H([ٙ%%YWY+׮JZ>-5)IV{4y(3=,%)YV+̴4ӲY IC3RSE"gW7(df劒䃩T޶sNJ-'O]\#XTTy*Ǐ5_! jƭ{5|fƾm٦fMݙzv91h` Q^܆[^ll4ĸ"OKEƘ_ 89'n{PnջDKw}W I\/,ړWLRF8n嚱Xa X=Y\ ATOW_(9ujdaiW CS(JғS=zDaY]>"I-j715Kx:+ Ǎ RSlC˲>ݺ` >| &Z](ۛX LL "00 p԰ԡm:Q#00000N0 H$ ɓ'Hnnك嚚TyT5BY(89X,Vhq JbVѤe _TZԱͮ|?mA||7o%6)#+@+f?~e&&+{t?׮ߞlޭ߽p;={d;rMn=;'^铬J JJz<wxX V@&%!#.-5chrG~XKOZE8pTI >fd<.~zM9ֳB]QcsY+aUr)Rǀ0.wo.-`l xЊ>FKu߀ X,+ۀ3=5}ɷ:am! IDATNLِE# XxCBY7;sZ]{gfLJIݞp Y,l 2$!Ia/.NPԯYM99-ʏ-l~.B;w5ߎ쬫"#Ϟ}Ew UE2jvJl[&0c$ p T,>[w.~A*8a8fT*]v ;>tJbbW#;(S+Rْax<f+ fee6mڰl__ߤ$n~gNŸ LOrET^QJ%=ЛsdETq1y.ȭ}[.,QDJյBٟy 11Aqđ|qG[o~741yHӲ۷nC_(/;3P"MON~Ņ КX_Qi*5Õ%2J ٿ8/辠lVI qA~~;EE2{''PT}bLZpnVEqT"ug訍#VVV۷ooo:ݮ];hJ3,,ܹs7nȑ#SSS /7d;/dPY Z4Y(]@($]IefnN0|DM_MЋw}{P֐JЊz 221{;PAJ%^yZ8TQ&wqBUIJoVxH Tu(gHIg$ńvxY>>X[E.J]a^B}/_( Eų f.O3ؘ| K  oniquJV^uލyO q @RP㸡ѵȋ%b3TFe g6!HZjȖQӧ3Ck׮eFZq[8zC$jOwk8X,6 9)jߞ3its#` gq8 Hx'_5p@O(?#3}*!--xIi"Q\|oOTd/.1Ob">!u`g+|)ܺ5hVy%E}zw^:[le//\!;JO|{'NbM=0[jG)kdEMq 5kJ={5nTB`-= H1 s̷I!rͨP(ު%q#VꗯoE;Tvݺ1Sh31a}?H>{tWAEQ99X8qVR(GYFPwB>~B]ȸxmjwI b>L3y008> ղ48lQJJP(L27ے#氻COHAQ   3 \Z8[hkhpIVQoF0($GM8q؁ eXɽ"F)^iBa{FH m8²ԓͦ[Y^:RMW# Ţn"HndlܻUJR2e6oeco{|ZfX$Ei#s+>~=Mq0 p;T,l@P(6n}ǝ\ P @/5nuMGg'3 .3AY,ެ),޷܉_{-A`ֻgWzۧ'ܾ%qwr8Er/> M=/'zȡ ܏xBOi.Zd{cWpsu:߁CO|X𙥿q9I7A 4̴H<6nƝNwfQ;V'O_ƍ&P*k7HMBY[N;#p(/{8Z{4i>#4,Xx-}A --ͳKG a/*,$;NhՠTN{U\L ‡| ÇDL skxTJž$#"X6q/ #.RQ+'8ϞE(zY#Qs3|zbn*)I liO{O}}hܠ`l('ɫ寽oў޾VLQm_v67IX Jdl4_h°tj]v=[B)iKl+mmԪ3J- p<[VXg~y V]UuH]iEbif4 6BI^)ҙoI FQ l!M$ ֶq9\8:0o0l1tw$j|;,,zy>w^i<=99.=\NfZû+^mZOR(++rڶ144TՒ+|;w1n\.uL* 0>F$A_ /(pV66([B`xfAMZlYUO;Ɩ-[~Is.1NsUy2_v^Ns 0EoPfFi)WtU')))k`J&#/h2a>AlѤb ð#Eݺ y<WPηϦR5C?u.Aq:C_io]H#[R*x6k./&/qݮ۱cGboQesty(U }{yȯ y[h~yz.ٷ\ViER5 eHÆI18󃏟EREE$ Q%$56)%;:Y QGjHY u"yM*L/^yf5(S@U{*BE^ }eUfWK(qMlLceV3f#@Yi1աJy,AVܱc{7ʖAchh(|]##aR]AAtY0eK ԿF([.O  _5qzh҇FU,W"ƌlmNAUj58޴I#PHdjZƫ=?5u6r*ܩu=wivKϦ/X3!Mqqɑc""@6^ÆR7O)Xr_޽ZDl;.> @@W0gzF8qo蝻 pڸM7~Ψz{AC[|ز+gf6st0vkL28Uީ#֥pyTH(.fiA7oWj*ƛ5X*(`pr€"<#޾Y'tE7N*=؈50^&Nh jow^\\f#lb[+ΰlRrZbMGXs8Y*̧%ϘQOJ${D48>_h@ brB\9-jg h ii\%*}P!Z襯GR"ڬ斖-[YXY`.yp瞸{x讘{WսYSccJν'H"Άm'j6vܽ~Vm4pqfyyoݒs.,NG=}7Iibh&O@F&7nGq-%ԴJ30fKp /;cf~okkMߺ=|Vߺ.uopE8;9ΟC{ (=3g_E5rߜf[tп_{z`aaZ$)VE,=Ey<yގ={Oã'bcб{wqX*J00˷P"KIL|$8X}"(ka_ k73 A@*KnW|(\ޯ3ce̙ڪQ'zH~3  HsTW޾AAU?·~E  n8 ?([BA}ԑo eK Գ@9Hl AAא(njP  H=~S%@  DU(`>*-! Rܘrw@  zy.o???kkkH-0lΜ9"(((RSS_@ |\,+`/ߞN S""/8DTPPͽZ3C/!R\MCWR&M6m:yAuMOO0lҤI.\ݻw]OƗ}fbX{)V^iڔI:vXXXtڵk`ggbܹ֭EEE:{ QWg&?Lmchhu={T*f =u#ce2ُ?ͥo>۷n7_u4nìG~R2If$)$==GN>ˬTm;:ݦk{qfA턝:`vW$)pO>S\RŒ֑B++zaxAn]ԙJ&  ))y<|XgO}?iӦ (^=̛cfjzN0cc&>{iYo䛭7mՒwܸy{҄Y?yig6oP^P9.]ٺ}g=֬ZI 9r:FC{jo 4sFC"y|B’e+uT+ouHaO>nxۤ7**nْ_|;H7 zB#XW C{֭wxS o]w`vv6151v9K^fNgdПRnQ p8yguhߎ秦{w\EgcGy˶;wW|G& /Y{o`t^jLlIA.b0l̘1&&/ mR)җDheu8hK'M!7'aCE yx41s6ggI>\˷g{~]RM/^tqrI{3guhniOU~&3Tw3_~ _gR6̺#HJSwvrP6[G rv<o)YY#G Ǧ.=zLcc kWKR=^{D%}}#G̞H˗=ϡuWg4n䖕9)޸y{lM.ɩƵeEEvOc۴ ' 7 cc7۸),켁gY{CSA@PN{ FbZ(1X"0ﭪҬGqqq5*]}bD$ۻ@\|H I2\% ϝ9|((J"..X b>{:!RQ~fPhuڍM/PWDs9^rF(JS$Im4qBOо ;5c޾q%ؿ-S9OA`jbq/\,Q(D.j}jR!Ioƕ|?iagn -v w2S={hwxS@i*@V28k#V\f 7sbK֮Z] woH(Z\vY*}!Ie-!JXELLCOϗJwͭMOIIѾ fm۴>v.Vm>t3T-ܹsΝiZ)p|ݺv߰IEMi!YzŶ;;v홝q>,[R9_U.]rƭKciS&{h>hL=NaCGF6~=zbIDATw}K]+?JCCC~ƕAzvw?ԡsWb{ %5yl]\ORJ)&&xHh&Na~#G ST3fILLZvCV덛PK:DU"6Х}|kanӬ0 ӧA J>H'ty܏ӎ sْ_mYZx+ʋbP~l؀}~}<{[C;zAtG;,(*?.Z0 H$ti6m̖.]vÇlrѢEt.kjjĸ(ϴk^DD^6e#8m3gdeen7_v霑 om׶5ȊGE$YXX;;[z'I-]J,47։^8zCYj۷{¹Æ 3qtȱrګm h=w6/}PݻuܩÒ+j JOލskקE:|~nݾի;wKW|vBZZzۧg򻽽d"y0_4fWa o`%?/hN5b^Zڹcm6?{ͷR__?{{ebczP7_F8r/D8;i=D?Gw$ISU!sgϝ'I255ȼۨXRr|_=@rroM(q =ϙ$4vՊuxD֯ao߀ŋ槧?zèPfڡTz·{hnkc;}ګ>!U*\]]]]+mja?atA/_}6]ѣ2L.m6::711QVE-,A 'O113AuaͻvILJrvr6erN9ʬZWmشI8xӕpOGgM=LkccCQkFǨjTՌT;-KJJ7B+L&+r㸉nE?̘,{W+F8 =$%j>J6 SӪթ3g  H> w>hT?w0Ν EQ'O9ygW,355_*~qK<uaX'оfٺm!F*Um1/t#r|ӯo7͘5~TnڨxHLswPձ\)ZfC׭Y!6ӦL})jo ՍQ(GJJ{}@L֡s{o\^>ޭg֫H*i_BJ W,('O=bv3o@S&QjGsU3gM8\~Svmk޽'Nd5*Φ{ʵݽ{׮];gΜ͛7D큌ѕ:?ڰ?/l訯߬ǟ[~{MLJvoZz6n],[ZZߍ?z$8Z̛өc{- ?0jL@ێ];w[k[y1kWʫ7 >?[? +W7tqv@6b7jg <(ֶ& W.)-Z4_V1\-U#%%q̓Y3xsm[o1K;uiv`bbڐYxExܕ˖4i =ןV3d' :phO?7z ǩAߞݵs@`JiΝ ˛gpjР)jټywᢪCX8noo7vr_X*uU,4a<5404! el\ǣ(y  ٺ+ 1jh8yqj3nܨum`ޜgϾ@~Z|BB>ޭLMKkO$;xKcaan 7ndllT͛~Uk>[@R8;WG[jh[]Yvvӂ600;g~"#H$i#.D\ >3lnt'Qm\x{ѿPtTc IBJz3f0%s~Z4.A;_"nsRRROdNwhvдݓ+lڇb[7D-s4{ŸοqlcTo\]LӾn#Cx(akk 0gmۚ]7xE +Uc0]"@vvvaCI 0n%+-w_жN|{T3379,zݺv177 Æϋ|\(B]j:uަ[(ڰ鏿w8yLjjnѻ9kW HG ~n VΞbRSm.Z2u[h~~^OT:ʞW,o 6=wY\J*X嫗/_qyoܺm;k$AJ_,/,,-+ɊxNm&Oy:*?z7p3!ϙFVm޲-33kԴU 2"Ro ũCK.]n ϟ?YiHih[n5k3]b\u0[˿<ޭF>o!YM+K]%U ;tJ;ǧAꊳ{XȿhٱcežmJa KMp762216KC6,?AHbr4TfKVV._ҭkKiC$ %/-cAFuԹOj:TAA  geK |:-A@Awi8P6eK ԣd=3)A  _ h,|ْ;3 gd> 6R<ߑ$Ig̖>9y7-Է{\f~g0K>_f `+3Գ/Q17Z^gӵ`3K3$g#0x 44Y3͐t[ >|x3 >4+ĬC #F^cÃ||]' i6(~=:55F}fq;PH0YK5}|PEXXX`EQ2bhR폊(++4 2Kt_Jcƌ )))+((`֨eK|Ο?O)Em]C!IۣWΞ=;d aՀHCjTz_* &MէO#GڵY-!)dbFz2~$;  bjL60Y TM&8p-(7:ٱX۷o 6l C RB!:F[$@.Ӧ8̈́tڳlz[TbssO+[°lAuĉQFIN|_S@!bǎ̐P(7KJJNyjΖ<<}73 ӧd$OEEE<O{SOOOTWlI&M6,\޶m[6ݫWDLƬTAmKZr\,@ӦM~W6}͋/۰)AA)((( `ԨQƳ=ztHHIl6٭[`Μ96aX˖-ѣG"AA ==}͚*liΝ J-Z8O<9...::X,jX#77 By  ʳ@6aD;BdFFFtG͖幹BPaS  FycaXhh(xl6߿?x`ceeղe/^deeæ|}}k9l AAWyےUۛ>}zԨQ֭aaa)))P:ljȑ5Ȏ  T}vfAA䃩~jZ'AAU'l AA:([BAʖAAQ:;DA>j  A,^B3 eKȇ:^˃ eKȇB ȗ}ʖE/^#_'-! O|i:}_ j(қn]*F*-jSAAWvJT1TWܠ+3ƆVUEkVO[?00|           Y{fff/_<<#FpqqJon^8?#cihHEB/A"qku[E6-k֖EOQ6AQ 6D/%a)Jubq3Uf}?ytt\ZZ:==MPh!"ft:Y\\dWSսAru-kf'lnn< 2L===WWWln||d2OOOb1ibnX,333p82 @]t: ### :cA\.cϪeccCP(T___XX866f2[8pp *\a}}}wwuMDCCCZ^jkkjɉ !-Av~?{~tb!@ PVVzooo[***AZNsttT< @s5?uMD`Pֶ'Bc -RhT>>>bkfb^7`prrryyy``@'@(k"Z]]xPMMMGGG<FT""7778٬/// R5uttfTj=;;c -X[[+..D"*A|ƩN˅uMD555Jjmmڒ/?_6ၾ@yy\=U" WVV.n19 )NC$VUUݍ 2 4Y9s8ʽ , [#xqw2M3'EyGz 1(xҼ`\MoοŜ;!吔ZgG{WJq<3y%90%.Q oWod).݊})BiJR JL(b9cQeIENDB`taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/docs/source/imgs/logo.ico000066400000000000000000005034361514602004300275340ustar00rootroot00000000000000 ( q#.#. ",@]~`B.#  $D_aG' 5im:+in. )^a- FJMSKRBG16 9 T dk!  ~ i 5< B ! Zc x 3 *0 M H  CH  { , {c  h ('c|;sR?4*   )3?Qr| d &m x ]Pk y Y    Y $ i < '  I J#  i <  + n V {Z!#\4 i g #, h^| * D4  j 4  ( f*Em7' Yy+O +0 ) /    '-]2- M   %Q#Ug#Vf #Q+ U* u {    s 8z#? !ATA,mFU'0Z, %~#  T   JJ F .pW^ZTK=-oIV%, VN 7  "$*37S[[[[ZTI5DQ|$  = : _C-`mcB,fN#*'`sCUZZXYZYH"Sd:id;kHnR7'R7qhFX 2+2(btAT[YWYZ;@ Y?%eDl!4#ҢmWx =(0*eyHYXW[? G'B,s*/ m 12 $XiQYW[.p/x xxV_pM4!;H-o$+C0:QXXT&.3"`xxxxx,9 VW/ :V7*2*&]pZW[2z/.x2xxxxmkdgEH0p7+ <^S.px IYXP  7x?xxHxx˧p=))D.XnH0rF/<1 <\[KCP9{&]pZWZ$Wii<Cxxxx xƬs E/pfE auNC7 6ZZX5  ! "QXY@Dx xֳxxx)h[' W` h'-lWYZLHVG9ZXS!(#isxIxx,xJxqLa tNp_~TjX GUNZYX9(0,] O_ZWY!O`] -xxxxxxݮux"O5^?<(+v!)BP?L-6 j& EYWV2= OXWWYG&\o:F u.SSS;[&[&H   %-4>HW(au4~?IRWXXUN?(as(/Q b=JXWZDQ&\oZWWWWY[XG%Zl U5SSSdJ\&I*!`S&SQ r9D3}<:8779<@EKOSXZ\]\\[[[[[ZZZS>JW ` A]1w1:SXWWXZZ[ZZZE4>bPSsSSS SSML;oS SS  "Rc:KUZ[\\[YXVSNJFA;753|1y:KXZXZYF N^L^GU1y#+KYWWYP7(f|-r?SZZT"Qb S SSSSSڭI`  K6A,4 ' CQ>WYWZY@4>(1KZWWYA   #3~V[X$WiSISS3SSSS  En.WS"SSX3CMPKB9- PBOGZXWZU0uH1~~{'/P[B &NS5SJS  M?2˺NSS8CNYZ<8CXWWWWXSusp&&&221 O_Y['`s06rk-UD'SSDc-7M](`t+h}[WWWWXS{yuCCBjifA[O *hWLK;-nCRY[ZZZZXWWWWWWZ;**) 6ZYK $\M\''VgANK\a@3O$9-ON!>tV&-)dxEVZYXWWWWWWWWWWWWWXR:86^^\#\pZWZF  #)(&(2;6WKZUb#b@b#y3`E K`(LO$| BO;S[YYZZ[[[[[[ZWWWWWWWWZ/u1,)J[ZWW[E !(KY(#x !(LZV%[mNb+bݭbb* 9kG{4bIv1^L M &)cvGXZYZWL  ^Hb&^p%,a[FTZWWWWWWWWWZI/9VSPkjg PaXWWWWWYI%-KYWWWWWWYT%[m*KbbbLbbƭb$ ^b9bCbb.b7cm>"Sd  %,54>3=*2 % wG^0:TYWWWWWWWWWXZUE88IYXWWWWWZ&]qFUXXWWWWWWWWWW[G-7 T bbbbb<Rm>bwC,AZ u&x ?KAYXWZ!QbKZYWWWWWWWWWWWWWWWWWWWWWWWWWWWWYW+i~3vb!bbX,A[ i^[}8C6RZXWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWZ:w:%-3{SZWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWZC "qF>*)28WZWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWZK+3@~ 4=ICZXWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWZO2<v1V )buR[WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWYP9Eo0&.;YYWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWYTCQ)%<KZL[WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXUL[@ s 5XYWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXW"Te:P*DRJZXWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXX$Wi^$n 3}WYWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXW$Wi )@LJ[XWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXX$Xj gOi2zWYWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXW#Vh !'(>JH[XWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXW#Vh \g1wVZWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXX"Sd&8DDZXWWWWWWWWWWWWWWWWWWWWWWWWWWWWXVJY0w] )cwRZWWWWWWWWWWWWWWWWWWWWWWWWWWWWXT@Mh %-;XYWWWWWWWWWWWWWWWWWWWWWWWWWWWYS8C}p AGUGZYWWWWWWWWWWWWWWWWWWWWWWWWWWYP/8nGfj '_rLZYWWWWWWWWWWWWWWWWWWWWWWWWWYM%,Y trq)cvKZYWWWWWWWWWWWWWWWWWWWWWWWWZH C$WhEWZXWWWWWWWWWWWWWWWWWWWWWWZ@,% =I8QZYWWWWWWWWWWWWWWWWWWWWWZ8?94 #&\nBVZYWWWWWWWWWWWWWWWWWWWZ.pfd]1;0vKX[YWWWWWWWWWWWWWWWWWY$Wj>J3}KXZYWWWWWWWWWWWWWWXU9DpJ? HAN5MYZXWWWWWWWWWWWWYM #F7 0 NGU7NYZXWWWWWWWWWWZA #,#uS JX9OYZXWWWWWWWWZ2{ ,{)#p,X  N\:PYZXWWWWWWY N^*&  {)[  O^;QZZXWWWXQ")Ca4/X` &%Zl@UZYWW[>i?! ;c#n*3+h|GXZXZ"Sd{fD."   ,Abz/ >I8S\N  bkXOID@;:@CHNXi|a M&-.pR-nBA, $!Qb *)&gh BA pp21\['uu( ,- 1|r* C@OK.*(kL7%#6Ih&d~T'$Qza._4 0[, Oc1/^M oWPnTN!~"u!!M G!.) o d oh _nO` WN5^ S4!ZL! sf NO-&e?7d4wn4H>:I^Zxx<-+<ge]]'?=({ |&/*'kbR S8-ij)0(* gW 89 P= X |X*!*mORS!O:!sf$eDO8D)n)!C4mZ$!-!FR@G*~q `+ftg #[ ]$ -EcdF. uoeRI=4{%sK Diboir&#nuGErzI+*Gy?????8???x??????~<?@1 @p? 8????? ??<???????xx8?8 ?<????????????????????8??????????????????taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/docs/source/imgs/logo.png000066400000000000000000000444741514602004300275500ustar00rootroot00000000000000PNG  IHDRXmiCCPicc(u=KP[b+uq up)Rj$6ƐHq\ů  "ϵBE 7=P`Q(ھHh3sZDѩ3J%oS_}]z&EMe+xC} (|ts~UfR=/6~w½]BG}I,kOOIm݁G hXOT[27dY<ʸȑo%隕j@Y7Ot%!^q >7 >!|gvտ,9Yպe NΫ v-e, yW4_眣[Ȭ/]- _h= pHYs.#.#x?v IDATx|TEׇ'$$@^]RTA`O ]lXbׂRH-!Z{,nBdpw̝{f̙ro16HMb DAap .BZi'> x\~\!BPC=KQqJ ւ GdT>i 5^ ꀌ=\%2,d5,!ԫħOk@Q֠ޢ"ۢ*ԫZC4 n`W>+KsdL<Qy%L:>i@u 5ƪkV.{@x~uħw4ug΂s]g_P | JI4Avx4W>fڅGڀHPOҥffI5)ipir\P.ƾ5a!G=ʬc_qcYti!'> $YGNpԛ>fمrHBIO*# 2ӥJdZ(| %/_dZsE+Oa GP1'$D^8@SƗE~[| G+-TEFrƒ>Auj yd p4m*F*0rT@ii&N x9p+TXn|yHT0%Ya JC M<?}4 ~458TGÝPT=.\6< R:A,'C!PrqhtU>::IV+nѓƴNbyH>> 'K[*P=j{WPzWA,E@=I@9no3kz::JyT>ə(mv: .zhZXZpfq5'>x 7> 8۝8AӶܰ#pFr>@ rv稺Oսl!Zxn)6 3WOZ1ИCu-ۭݚVuhwz G\խ@u-[J-r38^ 1WIje˪`tV:mEigZ2p=(]d? 4'[OuIuJu+ׅ n8t(U{OZ} 1j;iP[9BdoFA>[]OBuHu)C"ķݙ ";A|ZxT[ pUwTTrh[v rēfAiwk@ӯZb]Lu.H)]{}PO\-gG<:E䗀rdw}8q%[֊Twr'':z3ģOKazR]QQChUpSˢ^7Ļ4Іlw{tPUҜ=Q-7P|(J6>j:⩎\'jƃӾjN)sm(n: Rjqڄ" 4djr`En䊁yJE.4 4`#޼]p h"rT]PrWP%*U $k4PW9U7rhN+9+?7>\ hZ pܜ.heTVoƤ2$рZ#y+_W<$ҭV7/4ORЀz[E&NZk@= pw(Xew{ z=i6v났7ҩ\+عp島h`I:4К0z(_-+ w44?k5Pց]2VY}N hN} h;](>Fzm[ :ڕ*c'@j^D`Z(M^lV'.hq}ĕ9 rEV-a9k*-,vp VtLj+׿t>I]eb^R=]eX| "nK )Fh9JJ;mBI%bED8I^O 4 (20 K^5nUF*+M$4u]+)r;6b'hLր\!\1qT!T#!7$v!Ǖ*-.W}Ыh1"9pwңDe{dn?YxNRsZ̪T]-^"iP 4VZ۰Ĥ%Qf]WZ* ߌJ&Q(ZBU ʐS7+T>@ ($PJ R-!U@5mUo+i=In'^U 5)UWE|! A!;h @oah}CbqHǛ>} 4Y Vms@'C#( ~-k; V-:t!I9NPVZu FjEܔ 4w2ܫޭoЀ|+h;Il *,ݟ*G/WϤP4? ;@##`7(@ӵաTp_X)e! j$ԣH(`>C$X]qn%vz!lȀd0G8wM3IG4D}o=)%D@5b/'4`UK4U0]Bdjy3a9ȟW%ϛptTzebu.WHn3GC'(Y EryE$+ {S}@)mq;{ Q'X&t[! ׋|Y>hRE$}3aDO|B 䦞^uARnk$e84 Mip,t1tcrM6ah57Dr.H7@nt9'siJ}Ƒr HGҕt&ƭ(!'P'jΥlt0[Zm- FC >QBEc6M 5${7Ӆ@'~3TVҡt&hێJu2}1K󥁸\*88YUI2|y-]7g@3F$h3ώ JC4NҩfrI"uțU;>O%[h@\o1o"ZZV+' E8*!#ho(*{Uz(r Oh\6xkoYf 3@ Zl ѽ1RzxV}@Us3ɐ;4n 5<38ԫP/'sadDd,T!dŠȍ2 P2Փa ! Q>Col}U:١ /e&\փ} @aȌ@},u.]FT.BFv$!1+QoR^%eHAFZ: _קa͂--Qm:8k-F6r}?4O&/pniAڧlZ7)^WdxQ鲄wn6&Jwv[Mx 'C 4Ɛ+Dm- C X-2~> зdѐNm+۳}iӱy S4ǀ"-p`/:hhOԙxɮcȯVA[ujl'@>"׫ ԧ\ihػX.-eISmSzgLaszNŒU$3LD#p/Y˄~ܾ3ϲGBjtk _vYU?. nѠHStiUTe5˕BOsBuB ƕ;#4;z@.!W@n{-&'< +D˒'4WLPveW({ "e6_X%,7eΪXv*q̃g`d)l(X UeROqCy&Oc-Y '*ʒt$ yנa{pA3-$^r^ TJ^Yԣڦ) Mjejb {rKTo#Wt-RD{nR4xOԀ{`8%B/lv.gd'ÅJn"QL`;`?Q12.hVTt]ȍ@g:s"jv)Hq8/T{ZHQZ%^j\cB/nqsSˢ0!\ǣơyL$̈>_~GfVH$hQZngTG04=!<_U6 f*W‘ gi3%1{#ώ䴦=.n EрZ`;zKVZI'7H# ]˅?~GmӰAx8 !2ybmFsR7Rw1@Z8PB:D{W-įrga(S-,1K˙I:Y;]?'_kJHC8 zzdU^)?JwJgϜ1ـ8g顉}.[ ;O7@ i:7/w}LKvߙk(xj5&To5PDp>=/>IQ^pȳU|6⥵߄˷7Zy,VF3wϻyQR-R-pG4"wq uBoZ>e B);cn|?g/P69Nd[ DSL%ۉ Y+7Md7U͢)kxf0Cϙ[>ǒC)x1~PJ2:@*N%lq5*mJ~ڦլ o5`ؿ? xhYRR| >, =H#Phj>(qB\#l ]}cSff)rW] a>ddhN^R ;=ֺFv*5lG;U`p@&1օcv;R4BYfhܡmɮ}4+VͼKV|Ү8ٜYw24 ^*-t]ޝ˚BEC_ٻnP~gga~v9sPj@AUnk⥬'\C]>|~?#pʍ LJ;ZGD7"j4=HZa 7Zrgq:^>a%Gw izM;̜}ļ6mNIث5˚G1#yG)N7n] c:u#wӉ h2rGTGзdz4@ ^i6DOV`Fn2Z}ciU)sy_r]1q&86.|| f& WD]1HӺJ⪷o 1kO+=l8mlkG5E5\l}owq.(i2rgCӽ KeQn1p mqkH_ELv&H W̟\MZ9>ǗrԌ ŝ9u}}9'& ViJY0qM5(6 EAz)c.6|ޅU7:g-PU*ZMW#-I5!0 wWej_sWͮsifKMbMP*Kݳ0Bp>)Lf?C{Wz)Q{3US0QX5G k 1/>@5뵕$>dw/ذ=J=l syf|m Tx S(Ɏ0ѱ [Zy`LHp~fpϑLy%~6k;' H-)IozcPE8:Rs?jd1uSfm5MX7nHh-SÇ&؎4h(f|m Wc*R,vu:]fgDӹt}3rks·͡s'$(7K׍Zu!v;>f_N4M']6=ɝV7 nZd֮HI%+}TFɹ^NIwHZe ɗ6)og8\ ˭07M?܃i/~ciVU2 P\cߺs6G>KL߭#/pp9yׅ"y+ f,L{Wm:qI= I{2b-)Vl7"[b TH _ҼPAs*|%v\JE6=k@&ή7 IDATrwM hx<9;eTr*C*%S:}N_|cjZo]'Oz"·x(z.5ǏSU3*q6.{[9ϝI &2R*)y&xv@T -#\ '8JL msѥjukN4vQ+ݐqxLAT/w}<-K P0yC_ƞ>uąȓcn5 VȠ ޳MMP*hJK KX_Vz x&fËM%MJRྜྷz5/Egs7717J8"r\{jdwYփ(Hk3**^r|Y4^Pk s7ň}K+a_>/ɏc.[@E M^,dzݦ\L1]0 V6ރGiS&nWҿJ*f[ʼuq2ۓ4jh&7Чwyf(k-ﹸMO{]qi޲os'L⫹+1?+"6ݮDv'^D4/, 24@ӺuFFfefnG2QײZ'G|ymݨh3=ڕ1EK2trλv6?u߬̚|" *\LҎ3Tm?a\E&]h7l:i:c7?[ v\^4="ԫ]όs/vh.2qbJ)os (f?|=c4WT =n=Kh-d=b ^1S4fnwk.rxh!kb:ŲS붞&}Uu ׿ezv2K38u,Z1Ox=}/7>?E=̦I?~Y₩Fժ d3sp$n_!c)sË8r#'nsɉ$6Sja~31 x9T V)W՝_ƑszthXiHv֡r?jdndLOM[fu5@sry8u\._mX čyS@]iR xd8Oʙvڙ[ l zb˖-&gCW0pVV.ҵ&?{g_!::όMh>;9x]V4{T؟cz꬞1'k4W>Q o=dFm:7| T!Á_|<=#p񣇏A_k$[WL3]@MZL+Zʴq >Rw9wR\LFOxa/J,O~V*n\,&na⿘MʕM/Qw1AAvg~̙>0Ch1\6v菈?ha1y}P;MOG1{`*y+ꊛ;G   N9Wa]fIJ{y;sr\ @=5sRk"u"h4%$tP→YgdOjxw gz.`Mnf̎c)]By"GMU=7\_ 7[c)m~qPR:yqׂlvZ Fܓph*X懟~2q8tNL:;Z ? \qx4'C*+We/\nCHTB%]\Wk,΢kvay*RD0u5EΞ;}66gB.D;{pO)3:2hePlBZ7.V}X*^S՚KLNxMF5 z+Sj[DXwq Wؾ0}R6،V֯ c.ax8tÇB7d,mܸ{ S7q)jKR44(S~PyS凧|a\ObLĉŏf8~C -f?hFU,v3ҘK|>z1֛?R5BNGDŽGEǖ@X1';@IJZ^?m-UX/ 0tmV9j=UݳB̥GCzص\V ܻ|vS 6EDXenE] &MZL @N^0򲸏_G72P0λۂHdA:/id=Zl[7\ӇT vvmRSf3;rg{&ڍCe#Iwmwa|cO;Tgp$Xz3*iQK\,Z&G| n W D] hd]/o؁A?k$qI, nS틴By*LCJ3W@P?|.rsk gCJRj3Y*m;zB,{b RDR8V;nRhmK@)YPjQ#Y&nơcv$k3d0K%#hM z\$"8˂Bvf$nU9sB:e6)S3vW#~grƱhO޷~"zY g\:U!Ceⲁ`0 Te̬bOJW2]Uk{J錣HHgx`}[NG´ `O${o)CpwDbڴ-㸏f:' >%*"= 2, WE z{V hgRCB`)aWZő5KE 3vGn4,cw]WC} d37I?I4PYL\)Oݫ:Z_R1}a%MUk|Vk҂ eG)a!^M=Y) '[{/S]Ѱ<#r)c=#ƒ 2oJDlJ<Og{6:P*牸\]f\6BO:N^GX#.WcfA.8JU a6d;4jW o֭Mɼ7_W4Qq0y sϸU!=9Q~!ulʂdصmKf5ľHkȥ63M{#ώ!'N+qgW|BΨI{gc^0 ȣHu+G9 Ԛbҋ=8&r~2Fj#3*;wkSL0xٱGOpy3k~7;c|=[YJ0Ua_ ;?7?3?kC@e᪨fez$cf}R7r d(!*B w9=&JX^#1ݸВރN$(g׵8Wx~:F4Ƒ;6Dz:ר-iȈ$lI꣍L9=SΌ )¼ oW\e̬w͘vB\K GZ63C͔aU-_a?fni"S( Lۮxz؍g >жWtSyZ_*lg}ZʷzAo5@\fV0;' kO'9 r\G4ao7!6_Hkq,/5T:9c2w՚ws?dZ#W~L&O_-k|6q33~3DȄKOziv.Gv.Y{L/VkV,3חnՋ$ӧ?ꅿGN! =34,7|js֨Ǩf@3?i4k6ӠmDB "86s}6W[^pW $AMVlgS5\s cfX c6>l N 9*sN:tӝ! ^70'OJ 2֓h3k3ek;Zߡ)Vq 7ߟF !6g[PvoC^bcm.手<ҙκtPeF?B )^ɹ0cM֚Q1z0~U iO[ٰfm[}7mknVVo28+*P;jKj:ޔmd%ZM3fޘū [g6;hfO `8DS @kՑ[LLEL^mg6=o_=vL`N5QS׃'BX!IebEbNk΃b1 EyLEw8J/"[J`K-]Eֱ"WLr/x!za+B[׬'IKk'SAebՍgF10"<ʃZ'a$pLI(B{FeB6rxzrO‡}J.[;5E r($ ׅ |oz_w SWRt?w (eQ҄z7a"BeX0$3 XXx-/Sn n'%B8 iIw.$@.:"gYsk2:ϟSHT'E '#@.U3Hr>/Hf <GO.^]IDATRp@菐M{ZND` O qU8OA7~[z+?TH7c+v]0dMl>zY e;1붜2;Cgqhy-(h&QPq3 w*Q3V%P{E0aJBS oo@H) U T(i~}@-kR)J| T: wEXYGkˍ1qPkJX R ~+ K`!$W.G?\A sUo ? 2Ł+orm>iP~tVQ.tgeDrHsPor7$~lyRBp H#D r1k-d,L0Qp5S_iTyvP#ssc&ڿ} SF+Իi.' CMV,<Yr<'>UW&M _S+TOCbLWF78m0d+Y],#&6r>e]`"i_:h>?w} *Y&U֮ P%A`IAca%HwV,U$PKt*f2$%J.x-iKIF=ɣ0.f~@)x6A0&13`&?9~M|"s‹(q1_ZjS8L&T:C2 C7O(41p;GSPAN/ҊJ67k\ο_w?)78vD%߳B¸0 HP^:S@U LjZq 'Wt$\0m37bp{s$}_Pz_s67:|,?'uP<a!,'"XpWE"CAPO ȭ-owxt MsxBi*Q5)]1U@H39Ow3ܣFeO+wzCb+s&$ްrI`]1LQ e@2W+/Q~er4VhlJ0TBP Lw8(z1Ni@\jBxEf*>Ud@ E!({ϣXF0~U?&jRB0rJl <)22Pꓬ^ -<{QXXnlP>:8ٍOLT1p $ h1NҧЬܱ|ޤ(5h뺐wth-F3I:j[QrB4wۤI>] ?ؤ ;xQIENDB`taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/docs/source/imgs/model_selector.png000066400000000000000000001117331514602004300316010ustar00rootroot00000000000000PNG  IHDRiqfw. pHYs+ IDATx^uX[wfXbkw+ "zmv+-(" Jo9;˷rB(MAXשאgegip8r-3ZZZhi(?"?@---DBQ+!(E1?apR)%IR*2b1Q $$) 444b1SL&cZ(^1fB%h;}Txb ءҠ/%)*/7';B(s(pܼ" B!s@SEfn=֩+.bB!>C!9R] _&2SE!BHfGGW#B!T| Ip!B} J3Zh`A4M23  !B.&`mm=sg@*n۲5..]B!~%^(40P?q>/40`GB!o|HO1I*WVV(1/m!daw!BţSGwkkxW?Zl) e ---Olbj,|RmF6fpfGPbiaqf~޳gLKKK?p?vB<ضy}jjچM>ں6cO{KZU 'x:$i􋗬8BHd=LM}8"D_nժ5&cFg B2^O{]XxMhk+m߸r-7c1\0s5pZȍBsVyyyzOkܨAq8gn93̏}%&$Fܾ۲qږk ]:u\0wV>,[ <$ΎPN4Bsfjhh޺.{?335{w?0=.9q-۷XZXFF׭ t9=Fn]Ν:v=vfblϮO.Y8oLUώ /gF  vqEsfz^{B016^`\ɑʤ=tӦ8߅K^i/_/ߺuj-]8_(ɩULrΜ(]1FFQQϘ& ~jZ2.8FWjբ;N2ɛh)|GXNbR\2r`@~&:ϯ=M׼e+ʕ*YY[E`pԹR֯Yv ПGN9CT.sH򥱑r_"EQW'&q3HJX|U~0[Um 2_WW }{=|!Beaz (qܑi x:vs\6hVn$IMMM VB!~# 3r;PlΗ+Ji266o9\)Tn!B7w-? s.s57M  PAtvVNbbj !B7S5EQo߾eGB!7G#B!!B sGB!.B!0wD!BtD\G!BĵB!b9kB!.B!HF!BjqGB!.B!0wD!B!B sGB!.B!0wD!B!B sGB!.B!0wD!B!B sGB!.B!HiF!BwD!B!B sGB!.B!ܱ_W|e~㚥;B!sG-/q倖I إGAAX ;C߈SGrݻvk|Q& ѯp8nQ*RY|֮wj6qʴ{kffYIR]@{(Bwھݚ]رK^}p1;;]&mhhȎ~MF \Q*Jg8;;Vo=~A>Rk֭fo٢#^g6pm3w#n>#b׃ƍۿoKAgNV :Ǐ%IaU&&> ZG>n=R,0.=.;t{;;wLL}.mݴhBS7lzwFFfRrr`U(S]̜~#8Z_^=`uwvK|>^k}:{xxh162ZqEZ4b.dW|CvNwEÇzNv=|=S3,jW|ΐ ֯]u3SVK\@ڵoدOÆغZsTOBTӷzeXZwW.NJNvʚg6cK{w$ߛ7q&Lnƌd3qmڌYE+(DUD6ff~xIXfM߽kӮɞ3OYv}Rr؉S;uJE{-~}z45S9dЀ1fX{ni٢yse --}:YqLի]{G=s[.}8:}8s,B"*Q*1ZKS9f0;q*5-M*ڽK >}G޿ Hں8߼v]T&.;:}6++;++JScbc jknnݳ_"fddG):nu 3Qϒ ,gBP-)rAKIX^~Sg(zR=vE{-&~T\~-8Ʀ0RJLLi҆/cXJ?"DG(lLM'e2YRrKZ E/cb6i IQϞ4~ؘ`9Rar<99%6#Ḏ|+VmݾsL[7 1$55)MKK#IRW}9A|ڏ}144HJJT`bl0-=yibl iymG--a9\zyRuae'RGUP3gP~::::=GxAQ_~}LLL|cPhkk,cѭKg~q!!έ׫KCe |T%ZZXhiiW5 3>$%ijh(i/ pQn kԺ#Ig244HJNNMM%Ik99:IV@U\E޳oY܄B^ڵ~}GYYU8QlŮQVV6sCI*Y7qb MiƵkQ#IN.Q2hoblܳG!4M\:y@@00s8::::UӇAU3x\+JR',o_?33SǏv֚uݻ9z(StbbcWYjR}516> 9%e59ϵJ7~sf]⛛w/؍}eتqgϣ j{32Ξ`ggG?}/NUBB;yL.;jee2ۏd߁sfN9}Z?|`$[+//س$v:(r%huj|?yu 3gχu6͞9=2A^9CR҉/;tmBpm;v-_(#33ŋW*Ki ?B @[^=4M3DĘ:jG--Mo_cs. bbcg_dcmp,==ݓjkk3iiBGם} SRSU G6| r98ghhwqD"p vIFw;|\.߰fe;g_kNs-zݽKqGLI<}%jzuW/_%=vp$z /?[!T<(K.]oΜعGb smqJJ*( T600P=)f'++FH$=J5 B,tqD"Qjjڀ# Ã-_<|TPP ?yjnf=z,:nUd \n <|%Sӹuˣ'NIR(.NF_~:v|cc#6N/^4}zA44B}v޽PFu$ ѝ܊ݢYZ5k$igkKDP07cc&Brs󴵵MML1/)ٽrժVQ9B\MM5j܏eov2Z5 ^δ(d .4 3gdvzZa<--Csj^666sg644ι~k#=S'?{X~~_@`\ ެi_iذ>-ol5L##wOxp vjZڦ;S؇?^^^ޙsoGW3.`E]sQÇd;֬qWOO ]]]vI0h@_K YsJ$#)4DY"C9]b81) зaw<_ܱKOveKY72lʗq @ࠫ'Ϝ8yF556u/8߳}}*1݌u*DPn qD nҸXūWi۵mUZf izH4|}}{tuPB!W*FFF {·OYϙѼYӴkCS1M)+V.d|vI԰~/^תY㯿nؼ]!~âiT];4od|>/=#s֝ʅvBT$DZC'?iB:zsGeeb?_v{I"*f-ZC*"S7} IvB_CӔu)2{exPɹ#BU`?matJ<;z *zETaB+I ,@/GQ!wB;厥B$Bw]By#g%GӠ_nZduy.?/wTKyyyU.@Svmv4=ZZdg&5_/C*$ uUB ?/wD?\&H35$= 4MӴı\'򠲇7#PYP EnN6 7'[P Xq&umM۷+/v4hЬY3ƿiS75neQ! 70IbոD"r8xYssu]zU=Yrx2K ુ`eG`ϟz((B{E>~-yfeGſUmUh;"Tw5 ~yG[#44eef2EBC#m6F*խߕ@f_آ~զ=~xH9[6mرmg֮^U$qVă7jt{ܻ}3<1:8d@_'N;jbb)'busm%ߺխkSȽCvko߶qvbU@B蛥O9'77]PD^nNVfJ_hî$vKޮ~K, aaiaY ոqk99.]ڳ#mmcHvD;u6bL!>nFLt*K-=n|&MIdfg^Ѭiӏ`ddȼS~;"7 ǎ˳23 U.70PqUժU.WREOOzHH[hժȌtryJJׯ-UٻoHHʕ@fa߿KJlѴڞ>s6=-M&_Ժux{ˤx;_zZB.jmc m"nߎzFQT*[N6mhؘb.+$ѷ"b?b1EQׂr/_ZYUb:s&99E._d{ڶzZT3B0o-zѡ%hjj+_C\!UthP ?pX#CUZP"K%+AAǏ?r?Wi+U4z+++v@9tit 0AW̾QjZLKK#HB#4&$6wN؈T!p94F&)FRSS ݿ7k1F;fΝ7n*[`$R[1?1/[ShVq$񣔔TfG&x\062JJJfX{NNN"H VY>D9;w`B/;@.x%>ˋ;҅32EI)U-|6ȡCzW\4,]8$$dUEؿp[AWQ V-ZܹfLX!W222EvM}i)rfzF*U$' OLS-zKSt!EOEFm9cEQ^.(+4ggdTRxNngmegg[YY%&&@*7oV@r;C!T$IJ|+MQ$g2=VT޽_HCttBUlЛn+VbZnѢӨHQVUkC 9bx@`B XvglmlMkC XvgQ;v@D>nniL|ǽ/((ٹijj$ZW?tHZ5]]7mZRaClشI*2uW=y򔢨UV*XŵkƍZQ#G0ۿy׵˧c*WSd\5iW4kִj*7B1w !~3Yr[$GdXW5a P̜5{ƎJ""X WςEj{9"˗1!7n|@b*' &5Jڿ$Ɉw6m ^ZqE &$ >Xw-_jܹFFF1fϙˍ-\#: 'N">^xXh= ծ]Vx2,@m_mmU#[7;~o^+9dBadb BHOMp8F&f*ukx "&Mʹ1vA)پmO(\ rriuGDfHCC(ʸ{< O*T_wŔ\./.Kr9ZRϴsء" LSSR|Jy9\.p!=*u7=rӦL,kgJJJl\Υs~~pi(%e8L&p#B$ibf<@W] veyK;WX|2oO59b<*_yJ.hJ|@)+?5o{ BB+O2qT! *B *wUz_*vJ *~"͠+(ZNQ4EQ(W'̧9͡i+nynE(_2E bW˥8nݴ[h ddh.@߮p߇if7ܾ}QkpKkF TP!0 _f׮0Dv+"b̨K͟9s;e>00ֲV4VP *P<Ԟlgcdcm4+q?tqG `_VS?lz>EfZ'h~[>$%oڒ) з+d9qQv5`g:yi zW$'4⣯f_@((!ihZA|.I WCE||Xqۿc.<.yyJDt{P((Ep *'._,eEߋ;ZcFϏL|iӯ?{VSjԨ}?rEs&FM̈́@BeEmC(4 rV9~Ԉw fzN7gϙZuv}q4|X,?;zı+J###!#iDRP4A|!4 291gŮY=(W䡥E8yzߝ;Nz+gɳF|cN|hJ!ΧMT*?O[l.>֨Q)bŋPwq{-H0 IR>)'iRNh ޾~gxyuwZz:ۻUx*k֮UsVVoV~5kqև\ֱ(+ ۨaϙs ع{ZzâsW1uƬ/^k2m$+VY쐊/<% OC_:t.S}9WOvikWceGGlo ~i<|1;c{u261={e2q,SEP;2$0ɑ /kC)h4h.2s :::; ͵sx+3ze'F#֙Tv!0$d|v RR/(]DFAK3&?fu#ׯT5j0oM4n_e)fCM 44޵}[a!W*U:1ө;UBUV*\x[<{psmaB˗1M4 ־8:8T6Rf .{qD6!Q"k&,<BqgVeVl!aFP)P(o{e8$!WP̅(JA77q ׻q{}vn*}́?aE7&HWWi|L#|S#APM@ OFtvj o`#RA4YD@'N}GKK_^o`Xl-#@~~D"0hXRg GiԾ]}E,cccHFFf%WB/ ف?F('+ ZM 1J/5bx?;6JA5ZXLۜCp,  F+2=I)qAEd}%Ž}{ΞzA$LO@пH$bݾ]j/^pHN'A4lPNZ@Ӵ_@IZpŽu;DF=#\.X(]ܠ~= tttTb_BcYaWP^E-[N۷nnڤF۶qf*Tj 4sc|`Io} iG*: gϞ %2BP C3YFt)LX#scȵ+m&OP(7rZuըRtyÇq_g>F~&Ts)48pyz3vAW6r;u  >z۷ -]0o gN6nP>*hXR>!>%D,<&S޿Og PyseY,)Gԩ3t1|Xe{;\ۗlwSPMW;>3>f{yާ\URM$AP?.ɽ_֯X,igK@FA4ܳOmiikUO;_|%kY*tniܼ5MO➍l IDATҔ2m1P)I )&iZđ_Xӡѭ\./&.6"Q)CWO_.ef[tiQzGPRrǯ^-#}+GءA(՛=݌Ν>)3oaNff8 R>. d+ #+P+gΞc|QLSS?[ȡgϝ\ׯyzn.*knfKKOsnסG/cb-Se2GG0'KĺQ"d 9/=|eFFFhYZzaCn]̾SVOoļp8F  y䱣66ppױgѽۭgO6_G.jժu9:',-,XPX`s bOpΈØj?-fY/E>ֶb{Y#k*wDS"8$A>nZ )@Ghh$HHeӅFvyNbsGüޭ˅K`}P_rʃ]~dTeK`U1?xFղ%njߤY sC+ ];:_ܹlR(T--bϡGn-7wiڣgG׬Y }oݯ?װQ\||oű'5lgܑaIZF~!~44к:VVf[/cc'Oٵ?iZAQX"K$b@A)xe >_N g<7<4CY7<~JC<cFڴa=S٥M?'.;[@GGvxrĥsddTZZHzT ~Z.9:T C>nAW=޿{P-^/>wDݻ[l)TC ;͛E)=NȈ̹s=Kʏ#޾'bt6m;ǍêjAYկW+ɣvT^wqw"ܽ=sI0wg1lmRXΝ 'b) iS0MM2Uh֬n\gzzz۷my qJ/_t(^ nݼfƳ'|cկ_U~z;d'&M4:vZ`kcGtx<޳'GdZgTҷTnsGU.S #*Je΄D\~#4ڊ]CE^nNVfJ_h))j%IIIkY*.YA&.[l)SG[[۩uknm5iҸ3,Z ==QfӦqxjsͯ]'Ri<{n._f;wzy.vv6/aci~~ArJg?բ琚q3,AΡ}̫‡lٖѨ#>lиS/\ _zurvr|ًUk#Gjkpvm 4X`>iݣ%YF+6]͵g8ͽ[;7w֥e͟nz ݧ`Ų%<.y+vnW@lCm(S&ZҾC&[ލ ;ٻ&7e@ @mںýk뮣m]UkmkkZu:ֺG (CŽ7@X !q1 i^.7_[{ Qunbu/]jܨn M7;w.44qDԸQhBݻ WBo=?{32 X,yK/ B׽3LQFw YtZmRb8.wtJJLЙX蘘kׯ3ܤY.===1QQW\j>~ͺ]|}>6eddx{vmuŖ B8|俶mrG٣\rϟ8c0)))>!zZtL U(/ؙg222Byd"""b-iJ^<[۟v[lz͚-QƍBBB5n܈Zju5jXYY5i8\`p ׽t2[.C[RݽwLJ&#OncR;W>ޣF wpte|йVH$rkkƖqw'"2e^xH_d;Μ NKK#" Bò=('WW-lyڴ'O;vh߬0P$%ɭF} :rJ۪/s]"ZnmrUr o;w/\0?!1񧟧ݻ޽[7o;o>;p`u[x7xnxGDrưx>^^zAA @BBS\RT C2e?Ng8h.nx/g̜ՠgƞu7RZ^di$MQ*nn -[45ro&vs?f%"8a|?k6EQk*xxtNv[.6rZK>Q'Agδhެa9^Q:Q2-3x;;?eΐs2#HT%"׋msR(W~};;;"}6㤟ףFM>ɩ[s;>׻rj݉իsf\zMrrr͚5vk&rekke?w=)&tZYZZo̫ r_/;vɓ>fDDQ#;z̸ÇIIɽy1G]|%!1Pt6::|x7'O5bj֬$--C{~s/(u-_.O+3{gTWx7oݻu=pPF ի݌GLf?$1|[(22obXշq;#ǟ}VLXe\ׯw5Ju޽+~'}ӈ㜝cb^_|I0{T*m-^K^|e~=:46dS( 0h669r 厽z}) @IlWErsg>zlH(ɧZε D&&'i5IQѨYZji~6;nڼ/;g̜.9"ˉ(ɓS.wjعe'NIX5$vK/j}iO?uN~u52"pR9:84 3~aZS+W6.h4~7u_m[&ONPjh R"`{үa5Z횵Ν58l&"o޸㸸?>xi  /YhlɲeIII>^{+1ϝ3{άA۷͜5BRSSعw~":xpVOP(ݽYS/CD۶=ghg.[;11cڰvFqHDLu/j4ѣ]:w8}Ώ>[aEڵ}C]BC&MJDAg̟~?|QHXSuoD3b r[‚U$% e$551E@O"dFVZ!6bhoB&ĔJeJ睾:SrZG:p :>Nsvu7N{!]ݍ :::Μ=GXo߉<ӳ ɬKxE離EK ط(r)K֙f*c̨ߑ{z CoǏr>,K4$2s dzs|0Gg66R "HKMHήE^:1ϟ?l2={a x 8a}oh̟iԉ褟_A3d"vW'NFFF!׳W_ݷe2^˰{̼rج˾ JW Ð%66.ghlwȕH$ru/T$'^nk'ZDTlGGԴ=;~BXZ͝s ~ܳl󖭛lFK.^"fٱs׎RrGx^Onk+o޳w(MO8~9:Goe>^XpgPWȟIH&31cb=Mm~^g /Oo/O>>3188"c GqĬGD|n`2uyjy/OF x#(9[~s~8q" >Y?P^U^GDU*|_(qxyxo ˗6$;r뼛^3dyaC_DŚ wbjUh6Zmܴ2ƔJ ᆚP=}! e'Y CCx$DԩS'Ĝ: z.H-fRqؔ/- VDDZ&|J,c,6.n]r|?2x1.<1D$6凟FvSA66Iyz6jko8zܷRŊSXBϞ§Ϟ  FP!}GB!gPC}O6S֕׌j֨wMDG&]ysjnZǎvqvQ+^{6';;I _D2f͚i,ifz&T":b,aZc8" S+[v귓fG~O4oqիS[xaoƍK_ 2ds95cڱ]z 5"Qı{D"it@ߩ5)v>|ب1 toצ=rMz۩n`~$vvvپ/sP8B"ok[S&8:r$bG脤DKKKX|xG'Oj:F[jniѼߩ^g)q5++ّlj&!!!/sDk5\IwOT(Ό>2iOQK,W^swwg=yC6?̍k"َPHԤ$aIsđ=E$1#QҭZ(~GWWJj=۵8NWѩ-ݹ{o&沲{[dogNDjcIk֘uڷmP=;Ʀy3ߓrk}qr_>V/[r⥥+VU&#d77[JIFFƍ7rIqzNUz.6FY1P`t #0:'wlצWHH:4ƥ͙v>&yLsC\Ri4gh>P(^+? ;vC’9yRL0&="{@JeVZ;|ȉ=qe;YV-'LΜ]t~o޴vsuyַח~gg Lߣ[CG#}x}Y=f{]V-C]ywcGtss5T0pppxVrgF!a蓚5ܽVGD+[F8˙;uws>$DhJd1a1oiZLHv#\;ϝM^zu7FDFѳ5qe˸wH":u:`ؐA,޺yS&NػsV[z?2}q#h4a_ J7:kMgC:m A~M<^;`meED?5ZmDD_yT*U*Sy6oDEbŋƍ@1˜5@ܑ(}̿gD/^Fm(=====d2/"+Wm޸aFXxQP0f P %&ws򴟯mBbACW}t#32ZiGD1oy\~˗/())iGZnݮ{j5EEE] IDAT8aH$B#YS LT2w,ڶokݺ .#;vn»Y >q$3gv*=ؑCZ+V‹ƳuR2w,1(X$OH|p# 6<2ɢk41ϟDTlE-dz><<| a@JFODoظ~FA}[nwsAנ0 R2r7+p5@c7ScɔM 1kyosG( JuN IJ$C#@ w\XXZ::8IRaF((e2+am˜5@HH*ra @)GQND3$d5kּx󁰤 ?fvuk֮3@AI8| j2"BP"BADIIIsҶMka z}ٳJ*F?f3bee5{3VXq?~?x֩}֭ZQw& p.rvl#˗ l''kGȼ:###{ܼthN*}VZu옯o\jR^wn 98i7ɠZp!,$8([׮|͚qZ{{{"Y;N0~q%]fh۵{q1c|-[h٩sF LfM78Of=z~ݢfb#Oou?{lEn={toؠAvJ{qӾ];":{RX|zMP(~y-Yڱct/^=zCO{Vre^if$))I9::f,[Lݺu.Zbt%)w,.'c #&VZ5_ i\D+I=yNǢRJ42**bŊ|b ϞEEEEUPۋbBADoٺ}Ujh=PbrbI]\\̚5DtÇ2e?gׯWFD4|ߓ~Ʒ:yC0DJ;5Bػ'00hD|*Xt.]㈈aeBjY[HLT,^tάAd˗T^ST'OdyЭ[ҍ]6.(JFfLLߠ@8́R\.d'!N:$f1x-Y C`6D2f͚iiiDvvv KKJJpÌ߮Ynu((IFFƍ7raIװ'?j2"BP":vX%m~QgUT2j![MccD"nVo'gb8**jJePJљg6F ؁VU>r4<|xBw'WٻoǍQ(*jN\! !"FT*%mDf㨑#))n߹ӻo{{ ;vɲMhެ]T˗3l: zckkߝal+++JED͚zvݻzc<#ٳoޟ U}f5@1*1oۦ5A.|X7H Ϙ>"H.NKKKW(**ZX5ko/W.###yo/"RrrJkgwJtrr+ א4Op1M^<}*JΜѽێm[^t@cDf݆;weԩl ":߲Es?S͛7Vi nݾmIƪ/b sPr"f܄^MƎcO ;wYWR cƍ|4fM`!_޽9Ǭ{g8 .((v%f̚OXT*QRR!; ;7h0;;ƍeʃŁVGRSS=~TN/w߁v::: [%qtqv1}ں\ٲRllNNqqq_p~˗ߞ;렳kB6kb X1w8֨^^ߵ{;IcLoٶ{|MgCMЂBXboӧ5Ouچ*|Οp޽aC](v\.'֝?{KXXvdN~%55‚,ʴ4AχZ+fbI" 0bXtT\.,+>j 9.)98ڃR|'MRd޴H¨\+o+ W'P:#lm ߱]vI>Pdo&2RFq\5y,,)*aƶnDD1 cJ\8>+?X,(bcroܲ9Qzz^8{YYoܸvUWZeѱc:t-,)>]prr\v-!}((o&^;^eYT*UrrĜthN*}VZu옯o\j3r!Bυc.-YWwhW;p:(ԑCׯǗ~[7s|Xh ;,--s!nߺ&l5lx!<<{]zG$\{ *66vƎmӺՈQd48$bJDԲEw&"=QllÇ۵m{^>xࡡC#wsƏW#q(JLHO ;굙q$VٲmmgGwٳg59G DTJnO򭹺ѽ!wqF?/S0# 3#R%)w|ڶhҮm$@)QbbO֩SZ}i$bV\k"H";;9 kQ׬]ݬw͚ݱCCF9q·EFB%q=r&0L8Ξ31 (JՐ# w3AM6 ">|?o Cm۝sO:%77ל/w7Ww77%w\.'֝?U$%s+)^>ׯ_dQYXʟȐdNRI&m\q".CȺh40gr0Z|jժlc߳]Rrq1ROH-Z51tuL \|NpWW\ W״ιP+=ʴ4a_"J|9ss|(kkO ^yQN$d,۳0GP$v\\ _"LVf4ub9^^M<\k/"aSy{yz{5ɹaH8w(ϖ'eti+UުlS_aH %%% KяQ#u4JRaI,{ ȸq\ ,)Vi/!h, JՇIy-ȅ;%)(8$,8$8ꕽfiyV5HH(JaI11:ƈ| &DYT-e8g*A|֌_Z4=;ZX\[JխKD\Ƙqc CRg+VK}ߤz~>Ml^ڽ[0iG=7q7&%%1֩DDDްe^RÖk~15Zf(n.Ϝ͔J,7`=;$6CD|dG0^ݺfN'iYݷgWn6]XZ˔q_8okoT)WS\DHsgHLTL1+6.Z~7de+VѮm&M!s1WU+V(Ys2ߡ#GUJ%ufEmʕkF,"Dll\ zt۴e,Wo=;y(JWYKDduÇf+58N7"' >ݷ~3}W._$]0_߰6mߞpRYF;z6Zj4-w;qU2fʦWzvo߼f?-^1fgg7e?~,*$\JZ|=hgk{KW_=ۦu6r?j:"}_;v_LD۷WNTbM7oٲyqn<_eծQÝT*6OD1NOzm} ݿo?=WV79߷:pwȱm;%._tٽu˗s3*:oJ.lu-߶uWMGLf4qԡJtv񲕹nW۫WБ/{t0ddrJ uEO?yIv&"֩x6XѾZ,,.}]+V}z(S=&湕LVn+V)sYϖ]uz]OmhU1lߍ6'DdPnݪwc&? 0h?ժ=y,%5[Gzn߹{>^мZ6o3凟uiIiVUTl|׏x8tH$*_gQuKV7[keJ3Ư\#% q$W# cz32qOHFJŽwws#/ tQ"ڳ:##9%˕%"ooϝju1_՚z{_qN;z׳q&y>t*==###8$ySo"l|DEzY6\]_'&PMw<%%5%%5LgF**%5gGD/|rόmZ&"?vmZyi/F;55Uќ:Ӭ78;Pog<<[.Fw(}gLKaehyV~0xmzcđgHsϸ 8W::8<^I ^Ͽib1Vn/wg8O'ZX,,d|0!!ى1ٸέHĉjn3JIMutt0Uf<4bm}* (edy/{,]4++VIK<Иq{^#~ؿ/IĒz~iwak+4+[h.H#FEe#x5cⲭY/^gM3ƦWHعt͒fmm%\bnLSHLaZϘ=zt+;=ZCHDLQ877$\j_~iڭwd2١ 07Ru{]IDATjCDdc#[P(AgZP؍7|iӖm\DӉD߾=e^v*֮韋絬 ;ݻoʤ C Xo,N(s qFII;uP^|..sgx>JWYY[hܰ~ē',mv" GNƑ<7J x˫q3vSA6ZT/1o)YYjްaqGctt=3F.nn}D%&*^YH- M=Qnצ鸸xuׯ],+c9>cz{ή.bkT`Pʕ+{UVR|gQ1tʤo<ʗ7L0Fjx)o}473߿?O:x@^=bѳgQ?2=8)`,66#W/lHtt̫v\fI{vlt15oo~]{jZڮFDDRQÇ.?:>>~evS֬\|* ? ƈQt@Вg͙s]u5Vd%> b۹kϘG1le)'GEΕ[_|h銴ԉǔ+[6CqBx@`[TXQnm%ׯk[ns}Z土n.+-;d<6ܹ MiVK&o <8"##-,,׭s؉8~Ztu'ˉu")_IMM~=떛oAZBCmllF]RrqR;^UmVkRSSX!MJ-E #@DWC7WWp?9FLTED>²"%RJƍz2Tfܻ{GTj!%ҷ3(yZw.,O* YZZ LBC!" [rGk+kaJw;oMxD@;;;;;;6wd9`W}Rc]z & #=p"c2:Rf8"f1F2KKqA J<+1Mq83RRS "bPu 4]ǥ fJxA J1tEv#;;;;:kM$i5a{D"cz^X@DDZju=bi)DbI)|NH$YUCk+Bܽļ1RTU*ˑ>jZ̲5-ptD"b #UCD=`oW޹"LqҰ~\Kl!w Fc-ŽI)I..ZF$^V-VK-,E&B}O` ` rG#* C>[[;1Ft:L!< KYт(W_!ݳ9L;1޸Zn^^Ѩ/Ja%"y Xfy*x OjJҧϞXJÈ+*,0Y>~ [lQhv LPB62,AS1u*6*.eEE<ȣQ.¬j>3Y2eΛsiիD|-0VJeNתe-vIV5 uD=S]EbNZX:ZXh32cc4jDDdem*H5ꄸ 5mVbcko"D)I *LD4_߰6mߞp=bLfy?\V|֦RԨ2>aɲ7o!*U0몕++coC^|u'f=󙷐[X֭|==kDTj|]V))k7n =GD{vnYfbc[4 1lqo{vݟ7Tψ2?{GMFVa)x^jJ{̪cb٭l|lGwS]z-dձO>R90$R gO#3bbPwPfWӁ(cGߠvv[6g1bmǿ{?rcs_ӟ<}Zo}~Cc[Xom Ţf>^ hۺ$b։|˾.]1ۉN1K ڵ>4lߵi«Ic2?f66?lX造eF[̪b+WF?!" K+&+(%Yaa)_ YmUTuR1K5eUZTTTJDVrUZj:KNL0`nrYKT*Fs ww7>xʵwљrժ%32cb224M=/^~8B=ٸqqÆҨA}LSSS1Ʈ]qukhڸ/OoҸ^:uDٸ 'aDUʘgVrgrZ1&EbLJU*zE0bV5,QՈ"Ƙ֞8Hcbo7^|f,LD8"8hii9hW>q@1OHh%b1cxу=7ܹu#8QZK~gBnvmZիS{Dd#7<1JNN1|G{{~qIID|BW5'ۺ5zVF$ 7gd*eVak4:YD -eVt:̰DDj1Z++_SjisʢX\Y~ff>\1׻\2SZ9|H"-sMJNrvr2^Bt% ">כgBm]O?9fV%k)"q녋999IDnF<}Pnuj/ZGDlcDD3b_:8r8]Έl흉8"Ҋ/+-%Қ1:Z%ZV2mʴkBg\U;mY@iݲ_nnV2*+d2{jkk _9E߽w8b.l租$⬭+Us7{%g7xl܅ 1_ş:TJeWWʪ睈uTKW#"٭TjرCse~ 8fm^k[+ZBGKC-HI_IEKQACJ/-5CI)mcjKӤ٤lYf_ۘ°`~yf&.yLk/^D~=kDNTJDX2^] FjV?P/JcщTrfqfcpEedfmo(J$nO7}4p(LL',qb1 \zÏ;啗- n|xOnˆ`SV'JM_t3O>|{vh#;?{hllŎqxxs Ĺ%?>2{T2ymxϿkD_|M(y𡃆i}}Dd2{NصcTTT(}q?zҐf?֭ :u`ǩhdCKK$[QYW:'콷m۽GsֶФVU[{l}=J齂,C; "zKV4%b ^P E0m'N$38FfGr7SK pzu3O+׾;/sw,FX/Ы"/Y/qL3zxŭ#"^\PJrMԫ3 '<"ښ (]eŦ5Փ~ejjjbq˲OH-l۫7H1knn=IP:653лDcczCDD,^[H1OUUizDҩG2s0QD<^;N^HZ{Q6f(Q?MgvR鍒ANX7x|7GoM`SDݽEeaH:z?#bvSa;Xv;)SDz;)fG8 lIENDB`taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/docs/source/imgs/mouse_mode.png000066400000000000000000000702211514602004300307310ustar00rootroot00000000000000PNG  IHDRT<niCCPicc(u9KQD[$"SX$ bHD[L6!03AVX6n@[VAAڭ0ޗ$yÛq;;gYu9یʪ>:7[|ի+tp Oi 47mCpƅO (|X*\̂[Ruc=mfG^G}7[Z: {!h(AԜd7V͑.o-LqH/jA&&EOȓaK?O+91^ q>mJE=uuKNSߢk1vj-K-$|\@ CZ%9O-`Dg pHYs+ IDATx^ ^u}/Zȅ]]}x;=FRGY=jV_qĤuԗZ?7y:&1G q>u`Sx[Ϗ9wu볕~|I}hWC}R`G;ɎvgvgU CEy#M?V w(6&zbzm_L89ω?j^{ ƦM#_J<`b7n}05[ǵh^Oa* ]+b}m~5_{aɒ#g?;ok ?Wr!^qÍ7ecO[W8򈿌i{=޿];/xRp{cpYx.Ɯw @ۮ,5cբL&3T*jGynq~ŋSWwaOyjZZl1=ni4m;M 1nZ]~ @qW:quZaǶJC:~Fz͚}km{n\~ꮚKm,g?Y񂓟?xm u{q}~cMǘ1c?1׮_cr N @@rmIjfiozqD3:Unieo8P;1۾X|V|!d~;bUŴrvi_r @ < G{u^7eSH6Տ6ϏN،vm Sp1޽zVDJ['.ŋĭ/CٱM7Jڗ|*ӿ𲴪5+cʞ{tz$@@ᦕ/H/UPJsҹívKa/bψɿ16|}'{lu_2c񋛿Y}slxd\v]  P VNBll4_='Oa</%ܽݜ~S7꫾O?ؘ:/t_L1ollG?į3xeyk>"@ @>r* ]U/x c~l)n5*mxqQOߜJ)LկW @M`C7}QSWfK[=^cB؁02ƍ֦6 @(@}ѩwW4_<tL{زyK<2y}"ԣH5%K< @ h.js!.) @l-k @ @@ @ @@KPQ# @TQ@b͙ @T-a @U}?TEs&@ @@>s]}U-Ĺs綸E @ @` e-@ @@E޴  @@-F?5- @ @})KYj  @(@U @ge @J. PG @@j @ T%/ @ >}Z&@ @U lz @O}Mkh&i @TU@js5nn'W2 @m*D ,y *;KR @ *7A@ [ecoM @J( PRշ5Uj\g @( Pm՘hmlY @ dj˖nMx垁Ԟ6e%=Z%@F eP, Q~\UwԢs @`d̫g׃SࡵPH @[ T#^Õz^FITI@Rb]*f݌(@Un77AQG @ P;M4SfFQ+XюI`Ujh @@RBU ;f!4DvQ ƶkWaKٶo{Om0 PYO? P,]W{9 P PeB+׃Ma Pj2͝;7ŻOrVas9M-[jZ @@zz>[)T;`lԖdFqm@7'7@ @`]FkTu STKTՃe3JSV!@. PJ5V0BU:Vj(@Z]I*7 U+  @M TMӵBRhVV @@Xz `'CWi] @C:҉@#6X W#t: PRQnA` UU5ID@j{FX].\إb蒀@Vxok+s$̀9* @uu%LUছ }3  @@Pƞj9 &u+ @FVZʩ X: 0[FSQjDB # PZ¨ U%-i @ըo򄩏^{ZD @@9g^I9öΪψ;3yrͬ^G>g},_+R R]qgDZqJChiu] 0S)㮻BQW1Ebn!̙mMnlhPN"ЭA @ T8P3H{[E?"} w =+WHowo|K/8cϢJ/8_u饗6 PT @@*o־bJuL+_}sggU7 gґ^`qYg{ޝ%}>Vt|( @Zb+T)L QD<@\p٩\sV|l?yN"иƭItB"+T|D'n}(̈  @@yJl+kf]'@(qo/?hPJMm @ 4PyVU& TbK&P@%L&5;! @@zC=w.{hYT(5DPWr,(@E]ǏgOoGH]6l/.ɝYi }i`U*7@U^W!y`L? o~~xR@I_,}˞K[fM|ohtPvĉo}k/˭}ӟ|ٟБ>liL}?-~z3&FV˾ґ%\}t6=~_׾xoo#?avZ )}_M6pׯƐX g?Yy?! i~_@sRkbرlٲ6mV0)*qm(I @6 -y]JjΫ|f#Ur= ^VRH!~i%BۓHʾRxÁVbĪUB_Z?~^ZI4&n#=xRw_|{ߋ 6 Hd_1I)ilYJӳ~RzNZLu7n96)hԏ4\y+b3| IDATˈ=9m@rՏL{oUu=v)ԏV ~]kCǝ|'~44FR=BUZJl'm;餓cXvߤUo#Yz쓟d6G}[JRZK+]iKc "u1dxS5Ɵ4@om b鞯?ϵ~ lخҊNI]-k&{&m:묳ՊtviiUk3<3a>ҋ ;,1B/=/,ֳrtpp뭷f$L4)N<}:7]}ֳ]tm :>?.H=bVv-/BF3lQj?5VJM +) ` S隴p#Jmգw|VzE :JE:6׽u٪\HmHo#L!1d ?C6ߴbBVB&3f'P}_w9{,}s=w׾6oO}SK?<sѭ~;=OO ={UH/i57ҾeYol#tN\6`n/peg _i3lVů<#˛^w3T陓mfK%)h }Yޮv~XFj*ץUGZI6摶=jiKpq/}^?Oۋ_->qjk-BHO*0@sIDKiKY:}Y+Nm}CtV7 Oż>ry#F~H_ @b 4RMz_{t+i) TYz*~Vb5Zjl  @ T)LSJNZZ5cƌl_z[ T!)lwqٹ[V@ @&ԖiӦ5}kH7T3gN\tEN?+V[/^KTŪ @ 4vbK/tQ/]4{]?'@hj_k  @- P~FO@W:'@9rPC @ @U1fF*UnJa  @ UuI@U| @@UR#@ @6[-JF @ T+ g*16 $@ @U%ltN*UD/!ss\60 @@a{9甹F@A*!\] @ UuI@U(*U7O@Uz-]Fc F&@ۆ+) @W7%V4 @UE oI@S5D@s  6m&@mڈi @- PfG@R\K*r% TCv! PE @ Ф@$ >T2h@ZO @EBU 5C* PW @Y@*su͍ X*x * PUȦH@"W  @Ukl @I@jf  :Th@3?ږF-_ Z___\~1nܸ8 @`X+Un  7իc˖-y漍x @`;MA$PTc!@@#BU#J!@RN(-Z޲  @ƭI Pe*gE1@U.eXUs"@bԾg#]re1Fl 0P @B u} @-j F  @N*J%๪Rd @ UKdhFf\CF* PT(PUR(V@*l  @n Tݮ  VTm8T^W- TfGBM}} @ Ph3x4*`Q) @T#r. @TnTF*UeJm 1c:"@@񛻖 @@ TD#KO<\T T @ @hR@je }@]'@ @`(\JV Pm7{HֿAj & P`K @@~H PpT/ @@Uh.!@ @@ BT-@/f͚+o.p  @͙3'-[k׮Ϩ ,`3t@m`^t 3AM>=&LPٚ% @Z(P[hQ̜9Mj$T(@m1u?~|gk a#@ c޼yu^wPUZ)'}Ւ%KbŊ՛ @@A:,}; ;TW@n͜[[3#@@Ő @`(\JUͨ) P.FE Ce% @@W [V<F T 19' TV n'@B9rXC"@@5jݬ  Pl3zL@*YAMJ_b$@@Ux  Pe7wV@mi  S*1," P @ >814 s*- PU&O" Xj+" PUIRU(I @DUi*PU:%! PNFI[ Unȇ@: @ X4C&@$`}@_# @ @UA g `=@_# @ @UA g P,{' Pu^ 2e"@ T#r2 @,PٳgǤI @ X*p ͙3'-[k׮-$  @]|y,X N<?u8o믿~'f^ӧOիWW_ .̾AgO,Z(Xrv^J @3a„t衇ƛxN5k^{my===qYg7w^yq駏o @ @ J4seӦMq饗=ܳݵG}tx㍑IWqqĘ1c[nɾwM7iEAZ#Y8j͟??ֽ7r9w}wնcǎ+V ~+m+6mZ/~lܸ1VZ{׈v2 @ Py5o 0aÆ~ljwBuꩧF+`@EJU*# Л&dɒVF3uEzcv^}zL0hU*UQ+g@mѢE1sN @J6:uj?T3 :T%PyW \@j9  Ps,Y+V(tL @^*UKhh@bP @ P:6ShU0j%JRH @ @UHJUZ$ PR3 @TO@^͘Z"`%!@@  @PuY7o@o5(@ U騇K05S @] T$rhD@jD9(@UtY@rtO TTG@N͔* x)Eo к @@W' TUfL@*T  @h@V @R/ P6l5 @:& PuZG @ Xr @LUi. @tT@( @U*$ PB @@Gr-+"V\1hV gzzz⬳Ίo9;X;OW @PV U.%@ Tp@3&nشiSձ?<&NIjhPjQ PLN;m[|`7nUV^{=P'24xvOv94n'ܺQfߍ?tcQ3mژ4 IDATB4<^"PXi>#k|<ӣ~}ъۡtfOsߣC׉gFhF6>v[cƆ WNWΝ#<0/鱙kudsjݝ|}G[3;Ӽ_wW_'kͩ[h?~*Bm5v-JՎs OSs票=g١HcoX6I{]:] 6eh|N}TV=3G_u;G;k; ǍSL{キ @F-@Zn]wq'|r}ݱvQOD @@7&@{yWٳc֬Yx @Q7=Ӕ;2Kƅ^ؑtBtRolE$P3gN,[̶; @F(PK5-X`9 0gTK6}0aBfm @h@mѢE1s4  @@J> @:ԩScՙ @ @7om- PJ^ @.Y$VXQ% @Z$* @VZoE& P"C @@a”@  @@RjL@UV$@ @VhU6k. T]5 @]?'@JUB&#Ft @* !T :+ @% PfCr.`*2<F( P @h T @ U*(@UȳP T99hPV 1c:"@W@*n팜H@*Q1M@Jd  @@|pL045 @V]?'P^ښ5k'?IwfF @6dP=Qy $@Z&`e"@eY}c-kTC @@mqƆ 0_s$@ -`3x%Mu֕pzD @ .袸׃  @-JRN 0*o  @@U;(U– L@*YAM @ T RT-M TM @(U B@*EM @nTP' BT-#Ft @* PT%()(@UȲ4 P @UHM@j V@rc @%JVP!k*18 @997W 0Rjb'@ " TPIUg @*wu @BUK`J, PF*U @ wBUJb@J P@4* T5*<sr P449rPC @:- TuZ\* PEB@r 0zjZ @ + TtN 'UN a @@n@2T @Q Ut9 pxpSOeL QU4&P'>===1qƮp @VJ[Z#&??񏣯M]h P$H2V}[7oe< rR {ދ/8䉧  @sBUDԞ{i_qkh @@lk D~wZ*~|eId @@?'[: @hbK>ط"@ @TUi2 @@{jɒ%bŊ|Ш @J 6 `6j @ T寱 @Jfș@ Pd3vTͨ CAJUm @@A@ @r U嬫YZ@rG @& TVr" PAU@*ke͋@ @ Um'. T]- P5j7jTըY @rQ B"@Z@ڵ3G@*N(PURH @Uq+ T @*TlS%@&`*o1#F*| @I@r+ @*`:'0Jj.'@ @Uuko @@nRB`N @@^ @B*U.`F( P @B @N*UJb@v!;Sg~{\MM81fϞӧOիWW_ .̾AgO,Z(XrhZ @tE-zhox`vif͚8k3<3z{{':문΋;3N?L\ @| Xg]l5iҤI#2ڴiS\zq=lwG7xcsGqDp1f̘[tMqGZr @*̙˖-k׎hw}wvݶcǎ+V ~k1mڴl_uظqcZ*kd @A΂ Z66lذU{ׯV^NWN=Ԩl"@^*UKdzӋ#&LKsfgwuEF8mݲO9ҳX#}~e @F!PK+Jkh_mz'O.(^W_t\yq'>8⪫jY @*(Y ݔ $}%Kz+H?3N%K. /p$]8 @h}s9"@R*U)jRJQF @/PUfH@Ue @@RZU% PFCh@@j):" PuY' @V Uff\CȅP2DJ  @ UůY@*r Un%_ @@Krj@UPN#@_@lU*j> @@a#@ @<Uyji& @? Xr+蔀@)i @:* Tu[g*[z'@ @`h]OȭUܖJ# P&B @@N QTYʕ܄  @h@*I @r+`*1 T/  @ -[%@tT*UGuV26Q @P jբ#@ @2UeJm @$`}@U+5E @@j}}}1{4iR&n @ Xnͼ9sIJebڵn[{ @(@m`RO @J c„ hK @ U.ͥ@mѢE1s\Π @- T[X͟??NǏ/L͎ @`B[@7om  P e4 dCdɒXbE;! @@bT @ x4F 0Rjb/@U1 @9rR @S*U9jVuʽ@ @&&\F ШUFW<x53b @@͐@r  @ @J!htP@  @(@o___̚5+V\  @@T͙3'-[k׮-l̀ @Hؠ@m`Ow @jӧO &!@ xNldzJv+@mѢE1sr, @]y379lw:+R`˖+ _BqI'Ń>Ʊz_q5s,Y+V@w @(>Xrex1q6ֿ6k>ط&@U`˖-q饗ƦM뮋٥=j]UdK(@ U'c/})z{{ @v{w:չm@ U>bT @ 0}(ΝۅqZ.w P5 @F$?KFt]kOZ멵ff\GiӲDB @ P +_J\y9DR:tG UwJȥ '===_i5Cٳgr0@UR( @`<Ϗ?<^WH @Qʝ@ S/NZ̛7϶j @VQ|2%KĊ+9B"@ @@N|oN cX @N? U4 @ U-L3UeJm @ U99+ T @4) P5 2 @2 X*su[97"@(PUbm*N:mk @@bׯ?h/z @ @@ j%) @hUVIPD bŠiN*M)M @N T @@ARpm@V^ @K@*W=G?f8#%/yI?1o~󛬹'ٳczc…:83b}EW\+Wlv#@ azJuT]#8"x[Ϗ:+ƌyvif͚8k3<3z{{';o;/8ӫ^'@(@=Tm)  &4b SGn- S{GG7xclڴ)n#8 ;[nɾwM7h9 @K *X5khk'p¨[M֭[Vw=Ǝ+Vlw1mڴl_uظqcv^{51h @@w@MD9VW3T7oԆ jr*ڵk^`᝭P͝;ws9k  @A` +<_\6K)&=w3LV˞JBzٟq"IDAT&ne/x衇^Z!<1( @aA*=[%TU&i8Pml &қ[ABUW~wܑ=K X?ƍSL{キ H PUU)uSoKa굯}m־ҊTJґVf̘mKWT [w\v'w}wA @\*W=M+TC/O/8?zӞ6n!_s̉.({_i*W^ye5k֬Xxq{ @ X*om# TiΞmJ/Ku[ti\xe657 @ }*}UeEWɛ @ Y&PX @YJoL_" 46v @ 0u(z>ѵj @UMZz_zQW&Bob8)A\rQ*[11BA@MErKx4%MOEK @( EN˳̴ti|W҈{^fuZk @ji wC$e4  %@Pl噑g999ɖo  @ T%Sf[~~~2噼"  URŖkYYYɒg  @T%C!gTUUYQQegg'C~#  i$@Pv/J!  p @@*(_KF"s7@@A_T~-  @AT~,  @X*}1V"@@U~P4   Q TE;P52@@@ ^Pu+Q d4k !  @ -O`TX*Ny@@@ ^ 7ZŠId;U}BlG@@ i[!  p,JXҜ@@F~ƪO'$S1q:AhwJϒ#!ۯ{,K@-E@@ iQt.bDrL@@&@Pb(F%q@@H xU<59  I!@Pbj֦Mۿ6#^ǍqnỸd   mtG} @@O)*2  $@@LE^@@@WT*2  $@@LE^@@@W^}Q4i-\nܸF˖-g:իf/++}vȐ!G>G?yd1bݼyӶmfMu_ ^x{ѣ!yM;fddؘ1clܸqVriyyyv5mt|ǭ{nW_}e|o=U3R+;vw}֮];tE+++K 33L |nrR_9wA_~V\(ݨdgСCe˖_~>}:U_\Q (RGÅ jisvvn:רSO?mׯH:̱)*̙3~u͛ĉ6`5k-Yꪓ)e!@dmMMw}׵/^ړLTqq?~>Sl!.999i&|rêtرTGvB_ݻ7Up_~~~~ȶǻ T~xI=uS4hry F@wO:h֬Y: j?o+Vp? |)E)Dȥ `z-WWZhQn[֭}&P0CY]O#ug Bړ͟?չO?v9w:uʵ5Pܹ3Mϊ 뮻RHП/@{/ ԻoJ/)Ҿ $R%iT믿5:SM7pٳw.\ի+u)dK;vL>"\kۯn.gޕG1g"o9s&ԵMMNfիvҥu2bԞMuR͚I!eQc˚c<S ^ٳgUjLS{vVJ={1p0UJ~j{_~=[UUU6 ~*%#/W@UziӦgppNƷ 8Zz |a/\"3ϸi(rNTLUQ Ez`UV\N[5l8gS8Fo)N^ҿH+#Wm۶K/FzP;@NiNsPFl,XPӂMzDXꄆFzTve{qjYGsϹ`*Qy2R׮]]kN@#c3& /Y9u֐R'W`ԨQ6x`dyMwLurxk!V\\@i{5{?SN}&.gIxdMJǪQ=Mt#RިԾ}"ZYS5{$b@ 3fU)kWAor"%9Fu2ʜ t>|=;ꞷڤ'*iC=xWȼ;]>./yGiʚ7mM 4˔-YhѢ#ÇM ,_yéi+ou1=~ I G NPӳ9YuKZW3_qB0T h,ܔV hڵkM::>k_| hVޖ[%9-Z3i޼yu^CJJ/Mp9<   O<5vǘ{&49z77SC}qÊI   @ ChNz_ 1*Ztu0&]6\7  H-J%Sinذ!Li7I+aSLq 0h9u   !#Teeen %P%Sne@kϐ@@@t YZ^IhYoP)`FL׌  i.XYԭE)܅G@@" h@@=Quhv?y@@_@A>_Xx*x_HZpFc 嘷S`|@@=g4njOr_`S\IENDB`plot_configuration.png000066400000000000000000001235371514602004300324340ustar00rootroot00000000000000taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/docs/source/imgsPNG  IHDRO= pHYs+ IDATx^wXSW&! I{Ž78.PG{U[kuֺW-({E2TdFv/`Ѣssȅr=Vv@Tʤ$!Bjb6GTʤ$B!P]@@LZT*l6[&`B!Tǐ$Ȥ\!B"I@`B!P]Ţ 1#^VI"HVB!VAgllbUPT!RyʕzB!ǫz,ѣ!B z SSSCC]Zehhp|gg BjRAߞ{~#>>**HYYl6[;Q\z89r>{lm̟G"'Glmm,--Q-i Fą>lߪdKe9YYM772*գC$ ΙM D}Ђì3 i?v,..BZ@JJ X,ý}.j72iUPz,hQVt]f62'I5sUQ!}b6帱c6mB9ir%!{!$|TsT*Uif+;R@I%$ ć5fΘtƆEDDFDFjGB*"If5n䤧Gܼq3&6FOYtɱc3<կWEyyycǼKtlgk{y]]mllL(/ܹ%%%T $mdd8;'%=|m۶=wfff\.((9gwE 0(522¼;#j ;(UN+jS}MU^Oٞ0Oظ#[ϠUV9bGF6TJ *M 2ljVz ]ɱ074iBz%-{rERыS'vkմi&w~B޾O^>!\]\ ב#T.;>sɩ"b/O>rGBF4Jh4UU*aC UYCr7A x|~&MssE2]%Twʥ]S=IuRw*** U}K˗/o޺%U*mUyyVV5_hMj@@iiBhݦuBBBNNZq󦥥PG5qX,&IQb蛙GDT7*PrgwׯOEׯ?A}ciR=ꢣ.*# *RI0EEEyyy{ѫW VzJ(J`2!>eڵp$χSHDE@YۇI$nݺ':&{W|@3,kҸq˖- X,*`/Jҷ * j#zDZ+*:ds>o#\csikIfu⣇ 6211x衾>SYx]!;7l萗>BkkkǏ Ρ*Jh֟*Z&_lii1jԨtMQeoV|߀rp86-B!DSAߞfnhѲ%& L&ogW X::AUϺrB/F/lD*X,@O*h6d0L[RT*!LB!T} |`# Ȑˣ^겮;j'o$JJ ݭ*>p!B/oOVrE"U3<BΝKWAW0C!KY=LB!>MUŴ:=LB!*}ՓaB!hO-?e{!Bu +B!3ȑ#!B!}l!B}]7 B!ϛ!Bo!Bu!Be7ÎCBf{!Bl!B."B}]7C!B_f{!Bup$!Bb k;{sKk *HKLW7Oz!BU+T޼~Bnl UJUPRZ @k B/T+UFFMܽU!WEv*5T!B", jRemg]ٞJ)GB!ףR-# E!B_E|`.B!PB>K<&Y^=##,$ɂ4JE/C!Bդ:z-^f *!˷n zB!&>[QS=`FF(B!>ٷg0 6UTϟ=M>ʌiS`߁CB}8A^ԯgi||d2Hi޻s䉿:t(7'GO>x2cT͋^U|tvG,g† {lV-5>˖L<E}.ovmnܼkڶݻká׮=Z4o֮mz]6-7G+Y=1hs3˗o$K2^%?}ܣAi'y!T[L8b#Οg@zJ8ӣ`dhǥWnG\ \O+[ѥw~BQ}-~_D=]]˃KJKJ<|_d2Ye!_LgGΎhհ۷њwvtع}G];Y=h%ɼsP9ߢX R dL"cwҳo}ikTĭooW >40?u☕Ŝ8eZ s!㙙޻H ())W&Lcْ|z8%%OCi_$IJ$}{uQ>;=%?زqygG-7,qŽ \%[8PNǾx*4}F @ xCTo߁CxBT*ܬiSZ~>ODz;s=sF?AӮ޹}¸1: >:i&n*/֬5_=;{w]iZ&y~3SG 577_zөhბׂ/M<꤬p5FiKLLJLLҎ0ѣFi*,; ffSϚ:}vQo$|T/Mz$ec-,J%+rm%g e%nظ}&L|~ 4uvܡSǥν6mۺM4 r'jpmߡ]{*Z;*ӧ..=]]_>k.=v99^ n}z 4.Ђs;{5H$:|X?/jٲ[_J5ml3aJ4 uKoI?1r0>kZ!>޾ɿ2mB1;(֝iglzU@5߾u?!'}|/)Lmk CC#'K+weSV(Խwsj0Cѭ뭸+ pɏO>.8R@bc$o ]03]¤dffRܽװ{ _G 2|ܽw3DPܸyKVKHuF@Z'N~I}>#(̹gxqWO>;|k,RJ%jnvv:] |p?IӦ;td0 P0 Jz)+fcPm;{z- 'Ojf477*+/073G?l( &C655yI-*{4r-&kiiIՙ5EYZXhgo gɩ{L\j4iْW'zڶfs,n'|&$%YZRعk>n-[eW@TL&*549k;wk j\歕7Pٟ7oѿ$UrE"3ӲlRk,Bx\. Zg߸7Q\sss---4o4G3B/&d Q+>!s,Us,W2"\ٞ^|1K;Yc0rz 7573kެ󱂯L0&OvОڙ1ĵq\}$:;trY&~`hX&acc=v>4?:rH7nR+*L>,1OHLzLV|7&$X좎e噽,,?(u&0ZFoDe{Y]T}v[77oӅt`}E./n ĤǮ} r){п7oݶ07ć 2a\g֌iTpԈaw;, zǏ}\[]ziK ]t~koYs,^82W,[bx2"<2-"B}W b\N/@_aX\$ff5 jѼ.O_iެqJjjn][jYZZN[?$Iy |׽{???_&9s*w'jׯgnfV 6.T.ߺuʒjԙj:3+QbI1&&:::PRZz9ZqVV%A}zܵwX\/UEBjbBi_ΐJrHX؊;4,B&Pþ JB eR5 ֬ߘBM7m]/O$+2625ABQX(666p%%3бC;333ˁT;;:?}}H`j5UATX,>p234 +bHB!TWR u9\JEuwѻ+M2%%1=]]uC4[7n<|&9Ͽ9wz޹{LML&2ydF",sgLaT*]8&&v^ OՍ/utRD.|IE*;FBj#jz?/]@__ئu+Hm  aC7{+0j?vvq7DZGX,-@M|I9\-_VV6  H416fٓ& ;;n Lٳ hddyT*N=;zgcm]B!>e{p?v6eҵ  @`\?s'{ᆭW&"*u׮T*Pճ.puq vߏm\x!48hŏK~]NӶGo2^z\֧5j?~rX!իf͘ҵKWlz?srӆˆ\zi*M.'+:vl_B!>h֢ćpyfgGk{v^t5X;8yxKKu6jB!j&3 밫4o+nbl 233T*A͛7QϞ=KKK73!!Bd{2,$$DRuaaa:::f!BaPnnnnn IDAT.M"%%E. >DZGC!BĿ000n5'JJJ`qq1B!>YXXt`2J+J-B!PMVigllܪU7nP7,VE~L&݀B!P T, 044СC|||ii)))) @P\\30ͧ y<ɤB!S$쨂lO__֭[%%%L&T*ׯ4ibl[~$=@&L\BoIr<^DB/Td{M4urr"ɲ~~~YYYFFFj:999//F d2v!BA 8Uݼy$z?`!B tƗRB!TUsvճ=B!aB!TaB!TaB!TU0'C!gS =A!T;\L!B"Be!Beu?Ξnx͐ˬ [2Gэuӣ5^#}龆(Rl =GjӺyz'NXrzUlWT;v % a%[\&1o|HATQz[sQGzcR 5_ nQ[~J^ߘ2uΈ,%+ѧ9fӖmq74SgΦiUAgK/0ɽ_G5P0A=ζ844|]`kco#zڗ8.͖G7qe .C,'%jzAXĴ%s7],d^MiN+ȿKfωM ;wC[biamƹOx`an.kTٿiG2eݻold{yG_߼qե115űq񥥥/RROѽ3 o4q¸',\0{O8ּy{wD=uΖT(-YR6+\]*ڕWf͜`ρCϞ׻v`0OnB񋔔Wllb9pG͜>-_@WWwߞQ>ζmӚZC'#6[cۨc&M9>Mm4\Nf<MuSToHգϿ+Ki?Dk|Eշ7rHâ,rℼ@||bhlF_{m*^Z' ʻ/RkK4zaAAykn/h#h ,mK\'I>6ko[47`}sƉ 0 k|HЂNe^*V&!AlgR"/c3fsv퓟_0nf/s@N6rOYdj`1ْ}#[,VHOu3/T4HJ5H)b֮P/P/?  Պ&\36KrJR&*mqn-ІBEJ$<-PFX%! "TEEt4щz#x: %E R&+;2TTC9v`_LDIzPl /Uط]藓T*CBè޽{F>yLRDoj9\>~].gEBPV.NI33͛O=SQѱ%>x$hkjU>j<8L.;?ܴ6)^--,srE""M__(UwߐonG[<kճ͛t}. >͛5rqvFX,}#_2KR FF7 !3'6յ3IzzLF 8V|;Gy)׆/d.VLLErfmt]5Yf.(Uү1eJ]z+UsҵwdɦMRLU\ٱdeU$0d9o%5w{U MUbQuͥJ%SgkW $jj(5ر{ɒ6~T_?vo߱˭oˁjԂJ,,,V$+<Ceʪ_N8c1qqmB9@B!N *97,oV=;&&&/2HRP_gHUZov_65m@}-r%ȕAi5 HfFΌ,|Y\k"A]`ȡg{o+U$of+[-ԌMux1XHdZ ktF6]sxFdIJio:O6NM v5a\ZQNC)Fo?NقDIdx:\J>+>(//?Jp>=rEꌂkז`HIٱckש L2LMLrERD"0fYY}8HŚ;{vҖ&ztDLfn޺ c+E̢~{qEJJ5/jk$Ϝޒ˚RȐ`1!:[hpO $ L׽.Q1fE_cW$y,LW$IKڮTRHŌ>Q0 8 p000r$*T ڛ~RA\ z߾!Hy#Tx͒c&1 *Qj vQuaX6z ~WO!5jHj oV C?~|.͝3bzJaC0vm۴j2>&IWNa 144;fҶMk&)J=OpߍHCV?ʟ~ޭ+ϳmڜJ&mGԤߏbX:::-[4@:ʑ]P *fEUjm=(}a~;x<]&^&I IqQ1QyǟOSMgAmwQOf1n'4,,|;w|ۨeryqq A#QF$p>WZ*OEM&(o$w&.]x@~'4¼<=.VWOD_AȤ2A@6^ dRY F4׿.[fu>v4&2f{oy?)۶lnެٖ]]\b"gL7x{w.z_hРXX6a¦6@6m|Ο{fLd;}xׯ^疿EjڷoƎyp: 4wn;tq_'O:::NLՉ6tHX5ܻC}1྽oWV1z}l*jpwrg>YzMNz_ikx|">\>7E-hݯT*_ыZjN9 'On٢irrsmKJK_КTN>ݧw/8r?qWZ U*o23<}jccM5㓟_PPPp+999ظ8;;;BdTԣG*4x4ׯw~BR3s#Gegg󡛺-d2C]TӔ=?|hJjji$=%dyIafff:::k GZPAO+),,ڕ)AٷիWR46.zt=qduuu;;:);w8:t 666||\CllBWfihy<>Mζ07 ݾQϼT&:}F*us^~V>}&f}z T"Z};o2lUׯOФq#,oɥJU~~e%UQk Ą{9qxYYT<+K90 PHDQ 99&8Tr4?@c㌌t) K5eܘyzd |RR4>{J-ܻˤ)SuڵKG8stp`0qa7n)]vBoD43 JJK% ՙD]]rE7N=5Eߋ~'߳{g_MD"%˖kU.;ޜS,[dI+W,ZV/hj/ ʲ+6mbj}; cEEEϟ'@IiT*AY\++KjLRD"RdXL&а2P9"w? <gn^v!cݾsMz@)80u#{9wNH.VkW+O.lJ;wx'HKOtqvԱáÇ 6.~/?Ф$3S37qq87!з6k֌  ]L&;/Ϸ 6l`0I Y,N֭E|>$r9\Z }kڤ ,?;?IT=LfMRu{n۵3gĄL2ڵ8Tx4?W'M`eeb5jIN8͛l&cM?.$4 #Bg~B]#" *:z¸8BU=qٍh==_׬s3c Q1on߈?wJ8iJ>ݹ;qxԡCxȵ7֮^trZ[:Aµ+A]viӺ۰VryVlٲ7Ǎ rEk <שG j[ѿ%wwB^z7دs77.:ff-|j/аÇ4+ٽ{'o(;vjPK)?'O\}p 222+> Դ4AA$,'cNJkҸPxd\ HT&N|Tgvkzc :Tѣ̙5pͺdV?^::^E{H}a^?5 gGdfavmnO[vmdffffYZX :d5O{˸cFy=~R>~vdɚi(nST$IdRzA-p ɨS7}K'R'OB4;kԨѮ; K{{}Ĉ*8 zs{~e$oRr4mխ"T"yT"aՕשD jwws=.ۻ?=z$MXܲ;jM%ܽC/ ԽӄPy;C%2ԕLD&' ԽӄPyoN.Bn#ɺfmXA^266|=͚6(0C(d{1ngfϚAV$-[~/TYΎFFՙ,|wAzx!jN`mWN~C͕Jug!{̜!=F-E0C.u#ĘE߶:S1b3ѣ5~32:u":?{*"ze޽zF] 9wh͛=s2<4xۖM?|'L4aႹ{wszPO+mAl_fUa!Wg͜N{|9,]JDlrL&ٓ<֭[i033;t`oXW?}zyߺ7eD`2n}f>ڏ~ TЎn߮kWy=J3jigucX} k \h]{0~Bϟ?oΨ\zׯ=`uS]{=l`M IDATF8g.gϞ_d&7lʚ6cvr| !F9;6lve2tDxTU]ppW?xPSy%&=v6KZA5f{۶nZakYݺu:uFZ>SQ5lУk^@#̜z$>JvGn5";;;7WT*={R4͛7kGdl\|V~B_ggC2.] XI'xLlo7?q}OsG4&&9n|8 Ūt>'srٴ\.wi;'? sՠ]{I=@傷L&[vuAAu_h۳wTTLrۣ7rٗ50lݩߥ64$?V#$ٵKgN$O$=~:z䰷 I _^=q6m=4tuu'3gaߏݼ7YWtuJGF( Ⱦ{-\|ĩ͚63sڏ?=~Sn$I@vCFѬ\&: :b~u<L&߷`^:,93 ++UkFG~}ҬAgbRKPOVp拥DbaaN577zW `6N=fw?oQ#p!ï^uFZi0Cv'Lr..[X(,]u=IfMCB4E-7/ ͛5E1q1Ľ{Ԅ ~}lm4uuWj1qN=iJ%IQqG7]]ݔ4JٮMk@=GR5DH ,f-w'{6k֔ (͛L.YOH ֭[o?Pܤqcjp`Ӧr8CCñcF>,JSw*ԣ{-V]hoִ #I211flZC$u:OBp׎i11qfvvv}H$"SCWC_v5P* iA Atcc-V/SA?:H9uvT?IF"QZn@__VV[؟1 o޾Խkzv H|JeJd2I oZp<^ ҼCB== >$ׂ:bkAjkf2Dںu+njݳVZ묫[kuZrŁuժD,{t̘OF_b-[:߭Xu9+?uhw~}͛7{ђ5͖լYC{C >Ysf\@`B󔔜n'J$_)^q߮{l3Z\R9xGDD<}! TJRGE >ҹc-#bnGƸDGG/j:WWe>x)sV;;1fvyÿY`fj{ݏv޳kCM0s իWk԰}}BCdj*2uG:uXjՀ eo߾gaCKRLVn]Ya4)iDBDQ!%:~>5R3F?LHѽWz-`XJ.^k-3F_Yuggt,w_{Æ jլIfzhm9j{Y;r|pђa W {GX\>]zDc!8)U}Zj3I& K Zڳh7,AjZj-cbo!n€FtR$R;*J&OmnaI3A:{uaK }zfGݔ^I$?1T*kNo )qaೈ*J4(8q4AQ1/UVƌ/t!Tn^5wuߞ kT"1bDƌ(AN~&yWW8**^׬(_~ q=KeNDw6~iJ4Jx_ǀ@\\|%@'O#l̈^/雟&>N"!N3ZYYI8\LOD*U h(4d{`.d2t)))I@J2-]-Y Kd +frthRS8cllvjC! sa%UR͍_DFLNf%O_WzqtP(3#S'=0RTܿj1 $Y[I$RxfE@i& 'Ezl aJx#2%;*{ϭ _3d{bl@̐=1C f N'gsqgeee#,'f@"#3Cd鲄#Yt$,5Ƙ:=tZf%oZ j ^l&pptz3IlL('V-_#+aBYV`3fI n5>^7%&lmm35%-e5/wrC@ udKPJ2.0A3FrNP {`|2 e=8ar ]d~w'(7^P8:q@ GGC$}F >m2f(M,æ ϿV[76m.QNcX:1129YYYu(R6oݸӮ0`j9с?_ $mZ9G}2c"  iNXtY3;9q |0pJw_D4c4Fӡf,]Yn<'1C`t:ݍ7n x׷Oh=C-lW~cNL4믿UWVj(MYӳ 31X ^oݺmERrw||g N~%8rTTY~:#bAAƥAA| ?qHݺuf̜mI$k׶~/?Rў;r™-F"??|t 8BO1Q7pLJVqb!Zf K,L&ARRu,aYVQUZ6'@>qHHVwTXPU"#T/[)4B#R:9%{m~>cG^N6H.@ C9p5Add$L9׍fC`nqmn6AIb9.4L++M/KceffH.H8+0`@uʪnS&%1#UZÆ?a٩c_~U&}:u%،t3j׮лOn{UPaذŠT4ۋiٲexxxBB@qsl(MKAVkؒSԨQ=kתiH:%^!MD~2j݉YYYA3gΖH CO97d3^qO )))UT."C 1.(n赿6DLYLG:7I];s<*:^ݺ Tb7]:00}v={%"؁9~ °x0֠A A!=Rv%' wΝ~)))pig3:tڷ/B(5D~w.^ثw?ab8z@XdE 1Hz"JNV Uftt4yxx{vjj*qDܫel~ٶm0& BlFƍOb rRlmOFծUS޾sw9*U%{+DQ!)ayT̜9T*t^)խKD޾fJJfP YYY0ތWzx^.4HPXΝ;.?/^ %n2PbQVGE̙eZFtk:88߫$Tҏ6lFh3j׮rٳEF>#"Z-%Ř>mꊕ<33庠/]~2r`˗GE̤ $rkD*Rkc9V2̀b=ˠR(2Lq_SwwؘX~>..N"8::fG(:&\9g~džrQ H3b7 șR+ +p dBLoJnm-GD&(y & uU!)AOE/솙(\ɛmdVa$2ML_.JIQ;Dt!ܬǏsOiٲy%zѿf3Km x*QTALL&=snV;O.^f1}摣ʗwߵO  ^wƋ<{1wނŋ滺ܻ`Ҥ/-"75y׭z3ӥgLTpLJVOZՊaLtJ▚ڼe˘'[p`}~w`DJ'E*]Q!B39)Iׁ<1"9*{x;}c&B;+,_b'= ܺy߰IΈe`-0C[+vGXd{bS?%Kd]G%/&hk5O|{=0#zn~VWŠ'f@B&NKW;)1 T*2YOkVD@<5@n\XI$aaTuwsȲ_d'aVTL e3l̅T*j5jZ"J"J5+≯r fD&jf `w f !3d{bkrdty!S IDAT a6 g%J=0Y:Mulm-޽fK)!sYTj'Y fm[7   ;XQzDꚙ!:cƄ%*q6ra)0ק/d1.,VXe f1b"b')2y8arDiz_.3` -*޵k?,,׾ݷn^姫Wc+VNLLˇlbmȡW?zUΝ,gl,gx)Ia PKKpɸ&4zYw׼59녕! <ɻz%EX , n**(2= #Zj.^@t;~x[֩c)S&*.ZVGP(kۏ=^pɣǏW{5k׏l\.ɟkkkc 7Y[jqg~VVVӧMޭkFfm; k^ڢ_UZɓ_-x$*h}O? >9qիT_~RRztק]l\߮A:޵.ҍ7!++kwq#ǷMD_/|wJ7Yƴ4: zuK IVK:2}{޽fNwrR%?qæK}ܲުhWӦj׾317SA_u_Xl)xH;oӱ'OмY 6|GV ӦJ$V{?m%~}{7iآy3~Ud횕lզG} `sߐC7 28[8o|UƏRa)[[Q#>8eF!ÿ[濨6jQc4M{Z6о]M3]͚3Ç1P )91֢{Ɠ<Vɳ'WVA`4͈mml:0kt";3ءC@@нu:}}ڵ˃/g*˗wϹܵ[ՆٻODDD=$.];oLMBBoݷ+ks瞤dZmN~=ux_ۻX%ɦ~ڹ[ ժV9z^Q@`p- ݺچ= tϧmGRRRSRR_ h^S3ɪLfϾks/]~2r`˗bo 2`АK@DXGP_Zussm׮ Uerkҹc-#bnG'm`\\ܪ5\]]-^,2L0"JJN3g y.|n IymIAOE/f }{zj6pppp׷?8RUZE&I$SthӸq#jԨ/ym"d?+q~*˝8Dt¥;9)lll W} ,Je2Yus`/fzgt:6|2j^gޣ{7"F-[4;1\nSZ5".11):6Z&gT))UT&∸3gۻ|򌑫;cDttJe ,ܘ 'CeP(ͩXKܸό(8rgOl߱ks͟7K//ϔ-[{..u?].^Zgڍ#ז闝4y/q' fqu޽#,..=c^~1)Yj6SX `d2oj*TX2a,6o2&&4RE~'OpQ(ww@{a#R:)U)@̌qFX o(DDN ERrru OH$@>cG^N|DNpsLyG\1{-Bpn^o5`ѐya%"36ͻ2ve =1e˯"3g/Ye}0l̈^/ȉh,i!s!YNIIwhJ2-]-ej1'9+qq 3(`5x# RSnwWZ6zYw0ϜJq܏ 7rʢ ^}뭊31Ƌ=o bn XSX8^ND{\0ΗB~Sd""c3\\RRSbcc۷ᄄiX$J򙠸oLճǁ:thߴɻWJDGt5jTe'c?z<͛XDԳGt)9{WaaOt:@=⍪^:2={hæM׮\Q*II}yFt|̿oѦ_l5Zeq{ n xr\zuV*[YD$ibn""&OeXeKNHhզN;**ރSg^4CÇ\R߁<=+L?Fj*߷_@DkV~]W ".5lU޵k :YDDtY?w:zy׮5q #xT4sr~e_'$&ua٩鋚c(`5x#?Tڹs~'9֫WC#?sn[Noߙ1cFi3.YLDa}6MW]7ӗk,ժV}?VGDUbѪU<|Q*Ud.k'bďgdJ;wARR2c,9_-?dw9u?la˾[j1~9!͛=ᣃ>yD/b>1-7ŀC>f T\1FUm~E7j_TԠa#-\2fH;;[++_N?tXA;&F'W~?|Ԙc1~O 3`}{zT[^0Eq?ݧ' QV1=XhhmN2ymzz:?}cn"8kNt߿Y~~'o߹˯! p>ye˯n۞3XT666juejj2&EajJL&jjŨ veѠ}@*/z9_xC~ BD-[4rnGDGQ"pR8wx0@ĘOu,v/XOMU*6nܧ@Ԗ-гߪijuffaã jr۶McC||y{+Ixy[[[/OOCz'O5l֬QdžŮ Heu8,7֭Qm@SЬiaCd[o\ݼuk}?9;8:aDD7WWN\]]NH8RbAeJCEec )V7`ߪmkkR8b0ϔRZߪ-_<1))X0aJJJ)ݺ^x)2yttLtṯ~uxW0;wb Fvvv9GEEJ$]:/=JNV cnܸXz˗d<ǏoS^]{{c>=z,{$0c-7}$Բ{|32 "bqaUVy𱓓Sll\\|Iڶi/|yu8IJ8FQ޿̜6{1#֡cTVeD?LHѽWz-E>zu#[[;m3/> H$qo׫Wǻv:/0`U1FRlڔIahxxUP, #(~a*$zq츟efٞ=7BDߑK,?W.>}&##ȡ[/A?yƵVZK"rV*[jeeeg4>!a[+AII6nX1"l\Grr~ 8~>|tR`FF۸on_$,ɺ6͚>]gN# ]{R~}YK^>ovo6x7_|ݼ|;ϛ]Vl5}"""m;v5O-?̹/1`"bL,z}ѻG`xKZ1& 8:8ck01Z]^݂јO1Q'1)Yڳ~waͥ۔3?)|b?wM4kk><-5-U+!/++i/kբy͉( O'A #R:)U)@ (5EiԴ-[ %o8|$00`9݂ȧu,TÆpewDAqSe,(NQ>Q㬭\ɐ  6sALw7 V߮WۻkJJEol_2ܻc䧟LFn#,*[7 7l",7r] 2~ 8`QfϜfmmu!Le␏F7+s c&$v%^\ e]IvZqKUbTYfٞG=ns@hP1#.]^XM k?U@Ce&ΰSO#ڴjq0V@f9Ƙ~헒RLSeR0e^b|6XFW-z,)9ŀ?ⷧE p;?kFFuj2|K9ezzƖm^?oMSluͱ#ծYm):nZ OKjO\TZ2M<}h~`޽z8+gԃup^wOE^ghͪ{DD+o1gڏYYY:Kwwwaӟ< H,Pbd2tgxRɬ(̢cЩ][wB#n>9wɊS?dP^n񰁿w.zgF}8H~4~j^_ϛٴn{a+օx22h{owʤݣeڬ9s>|萍?̈|۴Ys=دϬS>\uJqMt= d"$LJ"  \#V? d{&<czu~WLzşkѤn?JD~ǏuȨmZ?K "Z7k:u,'O"=L:iO?<|up萁../r#;88mjcb%JZ{ZFd2k+D*ĂXjqE{؟8F!"gS ~=q?m׫%_ݸu{oۈ|YJe2;[bgLaWZZ*˖.$"Ts.~{T*~&>!Y#FمZ6%%Et%"bmZ gkkϭM_&|k0!M5(4,#3mAD/zjU*= OR.]YyqLf4f}7ML(Np /K&ީS&]:uع{/WD≐,W.P&9+ /6SzPYyEL{N>R(,dhO24L@Yfk KK-3҇~:r7 !"Z/Hfk6l\x)ʥ` ?W.pb??lԘQF,##sƅDԭW_üs#oA홰ITgf=-((4\>mGORb 2=(I󇰈" j(#"""ۃ1B"kVz/fxa lϤ}"D)OtzǮ=E/|9G8\KD;v8yȄL@Yf!ӿ %ۑ੎%ucE0h&s%d{OC:IᘔƠN :{* ੎%#?h^A 3f2gnY@kߤG߇\qc,=={gZa Ou,1""tryFF&~7 _5v|RӾ;/oѼYDdOǮO:)~'OSoA5mһGvLuA͛3k;waaOƍئ}׮3ZN5[S0,"H}mwܹsfլQ 8 ۶чC 4ۋiٲexxxBBF:}zj/\ڶiunHbb)֭ZQZz.j),ZbEDDTTc{ؽ^YLV25B"yێ]qqM?ul#&4zǮ=z>$44::˳`Aܽ')99-Mp.~~']ND܍&|q]zݐP]:wC:s|Jr.@w!ʼ'O>}UoJ"L<_NL&D{콦Ξ:~Rԩc{R@ɓ8lsT*1[qqqё ydVV\]] k˞0>džAO:k4䕽n119w#,/+i|Ǎ?3P*6ng =۷ kjsO}>,YdHIӤΝ:%"O(_wsst DTk# ')/t?/Hy"kӪe?ܡ}zpdOH(_pJywh~ް6W1YR#W^KD+WaF}\t)2yttLtṯ~ukWpss8Y_wy^^˻QXؓ ~y](J''Ew&cO q4>ګg?n4ThϞ٣{uvII|j ~_HvޣҎdEڬ/f|ywm]I-_iHA?pZڛ]"#o?ے!ňNȁ} {UJ%"JMMwz&5z瓧.7g1_-\4Ǻ^[/aqt),-5l0{֌Cr I2ws'^l$WުXFf!7GXL6+|h\aO&lHw|=84\(L{B"FL2H{*#2H{*#2H{*#2H{*#2H{*#2sᐔ؀l6f@ҐΗ BᐱAiGV傅ꇓۻgg[@rW8Ȉ4䎉0>dbɛ[{ !Q.{Wsutt:H 2%DC; P'8PY_ǏX$9qڪ_Cu^"@2`mw~l֜/Ιӧ|Ho=D龶D"Ʀb!D|cF|6!6mX_?xtZ*4LzYgWןuUW_+bɢoM]G?-6])'N[!02`mOiژѣ,^X[W'8qK{ms/snO͛{k={֧>}M7zUK&/~߽gB;wY1::;s.{!02 yvʗ_3Fq] R-[[V}{@ Y1cF !,^_}fK,Ru}pp~oUVo=swkmu͙ U2H]߸GW4R1{֭_vK)>+ Y-!D~VCkA~׾.04߯qNk)*O~IiOrի};YYYoDHL!hkkr^_s?9'Uoinn>tpF^ y2Hr{B|r'~xCNNfgoԋk֭[haYLMӲ'L߿귃co`0eLBK_+~yG vav1;vϽs}W/:t??fpv渳ALa|.]r숱z.ܮήS%/Ώ >lq3Vˆ59ƆRmlgaDaц/Gfy{}v&v7q $,EzD)rrrFu۶G[ Q@&P<546go2VqA$xC$vȀ"흯5z<_ci|H$<F0>&Qu|9YBP8#*bjp84 avc dgi\TFPi@e=TFPi@e=TFPi@e=TFPi@e=TFPi@e=Y4 ~c2049G*IP(Ȳ_:q3+KhVd)z}{v> /RF.8b18alC]L,y{G0@u N΂@oZm 9:4Vp?I!{* J',)_&?s7X8k鿶'3}m=V΂RƆs #{ 𢅕O<"HcR H̽-YhuǏN:ELxOrWr۳O?0gN^',^cZ_n煦;eo{wg2S=XnF2Ms߸imՆ+/ҋBȲ:tnow͕RmiS|;qw,Z0b{T;[,e3ox8=WgXOlٲe˖͜9l6 !4Mlٲ%w $sޞ5k{zzf~#G7f9΢cǎ%̀2?E6oy*77Ϗ=15n ✷w饗feeUVVF/K/?~@]2H{*#2H{*#2H{*#2H{*#,iO  'i/"%/CddpaXA4!flP$]@Rzz{]9vݤpJDp8D*Ӟicl=TFPi@e=TFPi@e=Tf ZM{VrR+i=",ieJ[R=TܴǑ\Jn@j%7ZM{H=R+iܴ^2,_X>c10lVr sŘb  ܴ/ dh+ c `yIDAT-^ 1sŘA6iK\:᝷ nBH) B>U)7ָuC16KKPGrTFPi@e=Yb)//w:UUUS=W^-̟??zwʕ@f͚5׷FYQQQ[[{q`|رBx<:'3fLiifknnD"]SM$zWT3MӮ?>XӴ &L0n{^TR5wncyyy#G4Vp8uuu]z4SN/rAAAEE+Ÿ.䒱cǚ5k%M.={:td̙Nsƌ6mzǏ߷o'Tw;DT3 jl6[0\jUVgX͛7Θ1cL5őܴD8`LP%%%Biz_;z nذ/h|>_(((ꫭV6LMMMpxϞ=#FEEE~{{{__޽{c ;ĝLSM.L5CpчMt ;vD"Gq\Bbm/-G1pEI&J[[Oj-.....ܽ{f3^ovvv#s*Y֥Kz᜜ M(N3Օ}4'T3p2RF]v;S͐2pX,.kRcǎ`0:՜)D^^^[[&,q.vGn:5ڵKb޽MMM`r͝;󵴴Bh`0h٢wRZd2M8q޼yjww~l6NġPHَP(dXL&G冔{j3f(N5'O|W~n///>}mۢSM8qEaT384M+//߾}1D"KggGgZX H$ vaâM`l6GZP( jJ)6CĸEL5Bgcp̟?GTZMSyyy]{k׮53L}9N}}&!&)v [?FaXNgwwӋZ04铉SASa744=zT0դk{%޾rիW^zӦM@`>oEEEB"өi?~|ssСC'O6]tf jNgaalX,ӦMkkk999&oر&ɓ@yԨQj ʋ};D.L5C\~~4-++T3ѩjΟ?GX,E4bm/ME"߯}^\2;ﴴ!vUQQqu4mʔ).+?~Fa ڊZ!D رcGeeb9zhcc1ItfZf lhh1S͘1crsssss7lTJSN7 2H{*#LK=G  =E/yLltIENDB`taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/docs/source/imgs/plot_example.png000066400000000000000000000345631514602004300312770ustar00rootroot00000000000000PNG  IHDR!em pHYs+ IDATx^m|Tա5$@L&,!iG&-<)"PB"H "*RhAZ=RʝГB'Ly/v3}?Yk޳ ^/+n5 D۲y.$G'ڿ2 .2|F(d4I^,Dzfg4ƛxpaq|1 ÓJ>z`!xRp1ǯ0K32x<4gd^6hРd֗7޸D^@lg4KOٚkϴ|S/Z`֭ҀП7|skez)zqС-,]W:]55"@헗5ke/݁w,q}3op8& >3d?jn|0o\siӄ;^}nB(I7|mxjM%_?߶}{ѵ+8ߠSгws_j+s_y=t_yҏN!0tS2پO~G^epϧ_?;x#s+`3 FzhJOzo`>i9sK͗,_至[zǎIUҫ>,xsny.W_{Ϳ"..nر՟>X.w޹`pöm}>#GWss˒%7[>> 2R^>_=_=C}EMxx:0/qCoVz9Ow^y}DC[ 3wmLw]̙30bS΄ EJNN~zg/8_~E8*Bv{ߞyo]~ɓgΜ nhho߅ Xѱr媲ӧOoinYU~ߠAsνg?{gWTS3,/| I1vz!|k׬ '#qo aذS G^rɑ#G:Ou6$z'ĉW]&>>_B#f}۹Bfyu/_?Jքiw82}ou#GJ.kvu >y3gN{iOd4G^2G?ZO+8JBz~Uw/{l0e>덷~8i䚝;>7nb$h=q !϶|ov{}>s~>Oa4|ꉪW~v+F_kmmTi'}B~~~ ׮Y#Bٞg}qt>Ukg1ڜܮ;[[[݇NԸ`߿q=`bbbnn| 6TΞw֮7Z_n2ys7_}\85ř3.W4d7Ta6nÇkmkjK>4wsd2׭U'^~Z,8!uH35;'.IrSW'e48~b~.iT\\EOYƭ]MQ @mN8qiFrrSM<##sBy233~(TvuřLF |>oww? `lg:Jq{ `0 dX.6 zg`HH&$x@\f d0 P 2`@X< yK3 @d0 P 2`A 2e( @d0 P 2`AdY}xyI^pA&iҥ@(B{޽{ tep05 /3W_o8?Ò2suիXS7s$WuBBT[}W=&ƽOo@hfpʲA19ηSz_` 46]/D P5'61=Q8yUmif 8yNSzODrd0T¸D_LBB e0FCC߸ e04LBϡiѹXji @ I V$C(N~ ?b`@Iz:I@`ѣ>0p`~= i2Qdb ~Ŋ NcʊZ&2XIbRs*2L&ӓO>9tP!_^QQqe !RSS}QPPPp?{ozzzAI/>}?? !Fy]wۿwߝ q!Bؿqݟ~1c999MMM&LB3577?wuWCCٳ;;;v򼼼} ywοo?O>z)ssskkksrrcǎB=zĉB>\o߾c'O͝={r:tnO8q׮]BSN8q5qH~@hw.::|g}?>}4=dȐ'N`ҤI6ѣ>oqqq&iԨQ5*>V38jGBCI\WWݽv_RJ>裬:+z>w{6mXf >C***Ea0 Bi: !N!BH+SH*:EmV*~p~~~IIIbbᨬx<3f̘2eJBB‘#G^z%/7@~Hs)))[lYrerrraaa`mvvԩS}{s …;pgnw:. jwvv|GZ鲑n߻wSwؑg0(vEt! ̴Z3gΔvHqرQI&}>oc!J i~LJ>YUUb t:l6[VV⭷JMM]f`hmm=atFB}۷/Vnm?Џ?`Fx#2P@ " B`AaƸ0̽MR=ڥ .++ !4;f~eVFEY&Z-4D:`Ь ( zѕ0"P  P 2` ށ0`Nc)ҁ|Ciր 1`@od0 54`+ hY AC8tvd0 P ޙ @d0hk sB + :z`RP' 1 /))ILLt8'l6檪{/I)))6mjmm[ w׭[r 9 |"Ltvlllt\6W^q\BiЬ/J>lrSSf nQFl߾-p$8l6wuuI.bLtRRRNNή]V^p7&4ԀI,D||i"-[Vvqqq?B޽뮋=p8}[[[ҤǏ'%%IRz@\WWiZgΜ) jv{QQbǏ7nh,**:teᥕwfEwvvVUUXj:Κ!fB/^QQQ!/ MD3\ipOk;> DZ3\ipO)+Wsw ` + 'tP!5Z  $Nc2p& 5Xä݅NcDE0!P aA 2e@07;{" @`P); (۬5c?2eZEW@$0Md0 0\%t-2d04!BB( @d0Fj,.d0 P sw r` + X`P9 =O p y͙3'33m̙Ҡn9r׮]5__|7/AgpgggUUՊ+V鬩Bl,!DGGM/FM:bVE"r[wmU޹"I{灈VE"r[wejr~e07. 2e-JI,e0f 2FW@0}dpѬC`ACKJ2ƍ$D 2`AꥶE 2eBms@@q@0J.L%hf0@#Tҵ4I;( <I,EE `ACcJ#:B( @d0 USoaG 2eB痔$&&:JJHH())4i`p:===/bs ͽ"F)))[lYrerrraaa`mFFƩSxիW>|遵 x Nr644TWWwtt={遵ꡞXjylfif[ѣG9rD^ #l6eeXL&>w-aGgY"//OZp8@ӵ1NOX,Ҳjzx̘1 ,شiSZ~D/EI---֋QF-[;v올 J7`,yfffZ֙3gJZ^TT$ȸ[^|Ǐ[,}Y@  2Ϊ+VXVYSS#lYYYBYf >;_VV_)D ]hnC4?| 6D.,jhnC4?| Q6!V*E P 2`@( P 2`?5̽A f0]i@omrd0CU]K@Ced0 u4aKAdpЬ7 `ACJ2$D  2`Aof!P 2`;5d02 =g0]i9I,2af h v1 @d~Е*&E 28"Z0iG bKJJGee㑯DԕfEB46NII)--ݲeʕ+ kvt666\ڂ 8efknnl6۹"EX"'fKZv\d2u***,++ HBӧO[,ijz^Y B6ښ&-[ZfffZ֙3g:q4: DShsѝUUU+VZNFNh,طo߾}jşqHTE"DcTصM u4h 1I,őG cNB 2FW$ @d0 P hFs(2e( Bl4E22e?J9 @` :1i`A ]i`K `028ZDCJ.2` J P 2`@KyY `A 2zEs>2GI^ D~~~IIIbbᨬx=VXI,yvrjkk k;::Ξ={Z6k@0ylfif[ѣG9rD^ #l6eeXL&>w-aGgY"//OZp8 J4#T%B%LBb!ĶmN>mX:z{1c,XiӦǵ^@00SL=z_U2jԨe˖m޼رc*xcD~?.77733jΜ9S"!DFF-/?~bG̀xFwvvVUUXj:Κ!fB̚5kwy22hXЃ y:DgO Ft$:lIt>墢Q߄9IDAT fDS-Χ#:[O Uhd01ѹ,d0 P @բ3( QaGX` 6y+V2af hB 2XJ8&ԃ (& dpе xWFbXP  2`AA 2e17HϽJ!PF e0]iPbo$7k}"0i;`@￟*dnѕֺÇ>|/&T 5"a֭8dy<` U{O8sAh kWm޼^X,j XP {'on24 4>۶m~aI~ =O pQz*P%}9sdff͜9S#Gڵܿ_/ň oֺ?pEE]gpgggUUՊ+V鬩Bl,!DGGMó@=ׯg4%ݬ2yDkHlX$3,"azۋ|sΕ !x7 C0Pj/*BHlX$3,"azpY\>F?0Cy7x㫯6^8@7 z!n2ek6-;;{ٲe+pZY Һ6cƌ+bŹgΜ19h{A=`@Z[[暬Nj-}4ꫯH:b@"0,Md0 P` anV=t;bS\\ 2b.JT"24iFhY&( 9HR!2xh0p9` P!+ٕF0e|>2 F2ewY `A 28/f&sb19@ߴҁ M`{d0B%htЁV'2x@h.18` P 4I, 2L!KJJGee 5%%%yyyf AgpJJJiiMZ[[oݻw|uֹ\.@aOŰ vlllt\6W^q\Bn|lٚ妦&Xg|ͣFjiiپ}{[[[ Hql꒖].b1餤]v^oW}M^h ssXm۶ӧO[,jz^_;..p|Bݻw_wuqqqGO&!Duuuuu)SF--WB?~|رҲ^7pc,]>]WWiZgΜ) jv{QQbǏ7nh,**:te 5k@7{73YUUU+VZNFaٲ'O|-Z4tÇ˲eTTTȋ*,]˰It |SQM ˛DGX65,oa԰It |SQM ˛DhYX{'P 4B$T @d0y"07 ( @d0ƅj;t#v3` !$hY&4@O4k0Ч:h 0 P @J!P%h@J 2cn@ttӕ=\:3A\t^1T $V h  ݊4GB 2 @LcnP 2` w@g01;&y%%%Θ1cʔ) Gy饗:::k?ZlրHNFSRRJKKlٲrS>sΝX c2[l۝Ngcc媭-((Z흝>ѣf96FЬ bd `,-755lڃ !.\8y3fj#1Dj#l6eeXL&Jnݻ,Yp8ZZZyqn IQ\\\\\,ضmӧ-TgZ^?Ǐ={u뺺-Zt^x_+!z-F!DuuuYYYYY_ִ4.==]6ҵ{=uTww; w@l@YuuuVu̙Ҡn !;#=5iҤ/vepZ'YUUb t:l6[VV⭷JMM]f`hmm=EL@***EZRW:U(u} iCZYBڅVVv!)]ie iCZY%V'4}Ǹ" A:FA 4A*D 2Е ő( q?T Fpv;dp, 4nM C@&\0h iM&Ag`@osZAq!d0 e]d?p.V2@1ꢧ5h,2 &bu >qa:$  }@` 0.T $c"i @XiMǮ Zo dpP$@ ]^t|>ﲥkB[`:p>fd9b4s$@@ w&'g͚+t8;o1~k\dZt`bt>5t.V8:t^0C{.wc\ b1BBRϷw9lkݎY7\t05Zk-iѦk+bi'oo{ ...bu۶m_սh7wetsXL`NO{ MBEL^B8e( @d0 P 2`A 2e(C\QQ!/ v4#m2EQm 5lJ`TSi`A ``x4`|?_ʋ@*hA 2e($/PZ~~~IIIbbᨬx<5"#!!dҤItVVV {z;w_"Yd :gwrW̙3'--cBA-[lر'O&f̘1eʔ#GKQ;fyҥÇG>?:ɬYJJJ~_#n֏>_,5%K56679qDp%p7ќs禧;vW_=x87+FZZڂ Ϟ=oٰ>O n5kִEpiӦ]s5>r/&UM6mڴiC q8/{.Z~5\#_#bƎ[\\_r֬YBUV <855uÆ Eƭz}}J|'YYY>1c?~{mɒ%K,ݸq[vvl0-Zd1lذUV-_ёNL&ogy&>>^*~~ʮzYU`5 ̙֭s뭷V>Gh#Mt…cƌ?x\\\|DӦMϷX,6G}mDX 6H/^8---..nvT~5kJJe^pht:].WmmmAA|ihh8{Ӆ'N_-:3yds'ӦM{?! 'NsΞ>m„ &ܬVk{{{gg;zl:===N`a:t^09CD{zz6o|QY^zqqqnOOOMMW\1hРs^0}(7>G;>sCG[o]]]R#a"A2={nm۶x<4!`6m?qu˼PWlfif[%G/V5xW^yG;͵X,wߺuf̘!2dH||԰͑ i:k…'O1cFMMUDptvv8p@V#|{ӥ4>/CwMKKoCwww{{4>GhC&y̙>\1322d3EpB~|ѣGK%\XjEm=+fsWWr,Kg0dG!劏ܞ0gѢE;::%QNL&Sbb⥗^q'xpܸq߃ٳ*nݻ -ZtᖖNDe_E7#ƛdZx񫯾zsŸ8/Epft֭](3fHOK$%%^zǎ˗/OLLPW>}bHVgc̘1 ,xgΜob  v=>>>,w"˩vcر߃jvww?~ٳ׭[W^^n2.]*~8'7Q"h'G1cƌwنEpNw}`$҇#))n۶m۱cDŽ&B444edd\p+[[[u!DzzԵQF-[瞓Pq9?!SN;vƍ7n8iҤ ,Z(IWWWgggRRdq\gΜO0F᫰{=uTww; CGDəaÆEl5 ˖-;yk&G1eʔ͛7#Ep>NzJ-sذawuUW]1hРo}ΝNS*9vdr>>O]\WWiZgΜp8kDLFF-/?~bH=>`1bHo?nݺ 6lذ?~7͋lyyyB۷(>>>''gȑRa;v,''GzeҤI_~GG;Qmmnn>sw]4k֬>Sʰ&j0nkIGd2G~߽^bsD$G'ByyC=$̓'On޼y; ~;siFcSSɓ' w!C|=anϷZNs֭aE9˗O<9L1o޼6pZtÇ[QNfc~ٝ;wJېdܸqUUU)c2.\+-o.av8_HQN***iT-..~8^z˖-lo[$\dC&x8D֬YXR]]]]]7+ƍ3B>7,r|'߃>SOI:SLYxq`ɓO>Y__?bĈKfffm߾O?<+W jV*W\4 @d0 0 d0 PՄ(IENDB`taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/docs/source/imgs/tango_browser.png000066400000000000000000002045501514602004300314540ustar00rootroot00000000000000PNG  IHDR pHYs+ IDATx^w\g[EzSb) ޻b ^QDTb׳AEQ@ !j\7ѻ*|֙ٙlmmm 6}-|J5JqBl{f?3n!Bz+<"G;W]An߽Gi?=&0h_;Wv>'[bBPc[-_laֆ=s%+6.a%+di|> DU+Z/ٸvZ%>Ҷ9Ǵ^AHK™dlR$IuuuuuD,/3V.|t rL\];~~idhq􉣞]<¯^$ut8Z~bLՕKKSYY|Ls3Sգ۲ qmФ=ï\tvA1lr{Kq#zƶ6편v)ZNln}Niڑ |tƶo4h[!~qrHu!{q|LC{J;nd0x<ܟ4ڻ[򊰈ʪUa}lؼm-D!T H3p(} ƍI4mxQz'bd~^=L3| i>|3` uKHhX,Aw'C]]4l֮[/}ū{)3fw=;w[hb%WдI*Q7sg͌ѷϠO6{ǶM!={ٷe:Ηz[wg<^mB!˓#}ڋ\|ˆ[6cj[`V6渺{S4M%KGUNÆ?\dye-D!$VmP(o122,"6n޿_5~+JKKv?~T_OB:UYII]];34Bin ?navr~!Pj\i>}{{{vFbJB>H]MMYY45]A#CCXo~~3!ѹC;gH}YP74h hdhݼL+++?|ܢyUkX,>{ wڽs[箽 ^z5a iVRUB |ԥF%VwEKJzDhÏ^w٤- Fh> ^@œ`ĤqNqZed2{tO8p{BFt8W+++<;ӣCZzƄ ϞϘ:IIIIMUuԯ3Paeiѩ)8Dݻz1 ccaC]zn߽׬ic7o@BbҰ!?|/-씔$W bLգ;b26֍TT]Bս7|&UkBғkB*Gc-Q%6f,O=_pn,|V,dhhw- $R=W5o;`20IKΣmϠ/@!v]0wV~}E֕B",^j.**jВZdły._V$$&vQS'M4 /9x=@aa̝pl~aɞa~~A.WQQĤe&yˆubSߚYN?׷ZT` ʪB~O;XǁGBSSݻwv[jÄd6m)xPTRRJ|ukAcB>k߮M@!PL-J$DBwnj-`X ,ζe1PVV&LO!99ؿ}Ykii>!]!_ZZDJ@ R`0$qeeP(, B-X^.(}ޞ!BCCc>٤ DSK %b1@$DRR);;[q!B!~q5&o+!B!Pw"B!a!B!;"B!P}=CB!gB!BwF^6!B!P0jt_G!B!TlRB!gB!B B!BÞ!B!Bw3D!B{!B!Ta!B!;"B!P}G 'NszoW^{iCGѣ=>N9W6n޺} <2w|z*qiCNYt}V=?6tEKWУ=#KW}Z/%돔zxuZȨ9CkPS]}B3\tWwSg)(KoCl{tڳ[c'N 9ZUUEO=Ǝڽgab4vR_x+H{&Ml\> ڽ7X"SDEǎ3gsgd@DTtC{9z=un'̘= zߚuo)**z: B!<|xO>[oͺw˛`qCxK>CKٯKY|~srslq'U].5vB;{ϾwR!w78&iD+!3IE]! <M3!)=GL0.:S'fLpriݵoF]]2&.Ѿs4vN=ƖGA|Y=YYv͚AMۚԾ)Ff/u|iCӧ#=:}ҏ)/_ )I>ŁAʾOо۷9y >~ph܅} yiyyz{̘6͕mpiC gBǏ{/-L.e.idq8>}zL7RY2.----? fl9pB-A0LjБcƍu\A35kwc"G.S&MHIykϾ>N2ܴe{V-=~r#>aY]<:Qs&9:o`5f =:DDVW\OOc0pM[Ϝ<6rsf9:WUU8t$:6N 4j0+Aa!'O}zY Pכc@`лLQ~,+<2Gjjj7$pwu;lrN9w@Щ;n'X7jrZ9 G;Pb$VO96e[͟;kV&q#ǐ{ee-}&ў4q|m` V-؟\c>[߿O;|~^())пO_FDUf}+pOC{w 41l4Mtwu{0bٮ_ 9z!'N+)*C])tu5~3+J$ĕWTpٳfNoղŦ-tǍU8{+\;uUWW?xM4F5kd%p̹Ϟ_G=R?|4jh% "eϾoUUU}OzݣO>pjwn.0h_,ˆaܢchGzxDvdZJ(ڽVrE\ݎtxdǰo.䑼v=s\^m(((;do9f-LMwh H\V;%> 5!rs>h ]ֳfLSUUw˔}U);z@_oܘ@-B־3܅9r,dG@}A:g-..?w/Yjݒ]z퉣8C̞9Ūml--=X)/ V`,_uxȄqc$ y豓DyvDcO>MWW'%GڹmZ1hpCl٢@P>eo܍]< 6.~ά3MN191)s6o07quCBs}Z;9wG;P"%o^G.;|tdn cvllia~=___$55jxI/oSS6(n)3F 5iS&Rn湳fXX[hheUT\\.(&ql;23W-_rZGV::::::{=~2Hy@!͘x|h$UeW^ZlA+l laݨztdXUP`Y)f{`Xꯓ̜6ESu%a=Nk&MwGw9eO(uEˤ 㠆'/))Ydixt]|Z=iɨD+F\$IvZN ]QO>qI~ain5Ԩ7=T7' \93j9-Sr+LMӣ沲z?y{ϾMZ7j~k4#Z!ۡߗP=g_}!£{{9oHJm`РoFWGGdTsfVVVg:%=l@ uuee^='$&1.=bbVN5b"9~եA|JM/.jߪ%PWWkִ4zz=wc2zMHեabbL͊]fn.׹C;")䩪5stLIʹ};K shhݨQN1EqG1LCCW皾TGL>[lb .]屵#`-++ i=q7<;[ZĄãOVRrmLL>{.=ɑt=3SNnAX7j$3'ݾmllԫgw%%E}==r 5pr\21jpkAF #0L٣CMq氡lnjA7lm :gY,Ga]=Q5"չw.)ȑPH~OʾUĤ r̄t JNNdr3֍jr6w |q~WM[ZX>hۦ"hڑEđÇ*)))))8> j.Y45]W ٦LLo&$VRRPd7IƓ54hك ##A|#"kR A^3 ﳲV,n#ۋ ήNvJƺ5&RPPPW>tHB-LɽPVV&i4?\DFx{vnD}FEǒQr#}2qtꅔtUw|+VJ_V!{^.f@~Am;Lŀ IDATbM9wP(LLJ673%)~a!uo%%őK>}"_Azzy./ ''ר!eg@y |[ۯwr^vPUU:j0!Y@6NAD < `GQPr0MM?_ wn =}vtfL,l&F:~TW.ǎ݂=|~!OO"'GD"ѭپ3oQTTdkiϧ^Boߖ_@K boćG  /^¯ p8 ( Կ܅rI|~/M]aҙ|>Ico!(/OHu￑K,.) !(ߛA(**zC*xO}G[WeeUGwfMȞ_5&} hngG ?}џھm#GC^IISC## ѽ Auuu3w=Er ~@dia?}+WJ3n(J/Z6mDQ y֦>F%6BatL쎭`3;w;oG=P Ȇ _۶V-ɬr'(/:BɄ0Gd[ꎺUL) Iƍ5"hu6ضb17]377[x!_'BOm6 `ld,*.kTEEo:MMZzڜ_Sfr[ 2\E=h++K(--QRUQ|Pkk dGN?}sFvhWcl܍MPt!''ס7TpQald]&wffAD\O?5~Hڴ@ѦSN,^بUpĤMװ&5\oZ@^^~VV69'EJs;;##Cع}&M"]Lp]ۓ)/ͨvS0 Ծ 6m@_&EE+׮KdIM%$i`0}{ӫGTt>ZIIIJ̈́$œpy_@.K( W m@eyΜ*8VrwJ.[Ԑ?Rm~~y1l&YٯKBO7CQrs/rB3%HwD"D"qݻ(HT]]QQQA_EI -kڴ trq-))xL3*:g:~]:UWWyZXJKD"V|JM_! fM r>~B!2:}VD"I!7-͛6mKʵ0@ҡ/~&HMOOo߶-,<[oXo}ۇ=\Xr"LII _x9FIdwΣSGC(--K}۳3= YwQBcc6-H# ~,DUN5nҝlabbqqt8FFݿr8geXhYEEEN^]h \޽7s}n!L&| B!Mx<--V- Rz$o8+c38egsl?t܈OXt=Wrȱ+W˧b"ք!ǨKPJ Ѓ(9f56C-}|WK??CCjzݣKמz;qJЪ*z7v%=?{ϾFbz@͆ @%p͞L^J}NEd⒤ҏ t=L[ Bdkڟ? ]{ե=nkOխc&PCn&$4$%ߡ jz0y¸N1urBb%˫jվmuu5z2&.Ѿs=@ñoՒKbX]:w3Nc߉:-fŁAjR"ZB&i˻YY'CH?^oX7235%&hk'[֕2o&$%ߦc}aQSSstߴj7:{tD8O:N}^zeXg߁Ȩ s{ ڴ~͖;_Jt6A}i;ww 6kƦۻ  ={bYYgg&G.]zD(7ɓv z&M]MmY^L}fֹ͜Sǯ"~UuZl܍GD8J}SPP0w./R,-- qwu7gБczJ/ZM=im~Z44?}^wW)&>{8x@>}`æb% \IcȠF ݹ+(۰ƏL{oVv k=? ++[__omZ;:ܼmG۷*Q֎/QPPgN9'(/ M._~񒒒ƍmW,Yhhh 0P$[ӂ VX,##% qsq; ݻzՃpٞ;#{p<[[F lW>U/ÊUkrܡ#ݓZokeڼ՟d;|`Ӗzzƌ&c zv>t0AgΞ/U~k *PRR|H.^@xl@aeӧN&#X+hoBd]A{<|=yO<+*{"EEEe!=wnQƏ}D(_r SS1gG@4mvݥܽw4d~^> |<CGDU=vsuMWW'%GڹmZ1h?.\ZdCɋ&C̞9 ҕkig^^-3Θѝ޼OVVEr040hٲO#OQSSbk,Y8i*9 XtQΝR_>k^6NX7 ݳkEDTwtwĤ]nٸ]lcc܅ӧ޵XYYKNO=4_7o/z_lѩczsg@eeeמ}ꒋJ]%9DcfK {\+IZoͺF^8s˛;ԤMk'k놵>hߤ7ӣWn#N*++SSSH$Qы-,*=os=x$JZxsmm:FsoU&;1*&{WĤO aia~=5`wPȑdj=e:7y<~gfLΞب- ܜَ ֿ_ǏD" LYnޞl6;w8zdsgʹVVV6sEhҲoںiuO.X̹}{mmMя`uuҕ[7?td{ Xn] kW[#Mlh`hs3is:yttx[\\2o/f Ν f̞gjbܦu]ZԲ?]6xr FQ1PQQq+vo11qF 322TTT$#bt677#bOWEcfXK?&5׷2g]fn.׹C;"4ffШ2LCKxyl--Ays~h nii>x 5[I-z":o{3ᖡgpuw}2juс`hhncDEʒ`̌\ݺZZZ0aHyOF!ZjZ ,v"Bñk>+K,tMZNN.uhVKKS LM;aݨ 5} C]]Y&92f͜ndd$C xtHW h j! ,-`ٱlh׶Mn.WOޭZPQQ7iӧNPWWWWN9оu#hղ:wZZILݵX,Q#gegeggd5b~}{KTÆVv.뎓>䤤3jVعCdZynxl6l޶dX,&t;G(&&%7RBIϿG~TVV.IWWG8AzzGSi2+׮<TGVp_Ȳ2A@aQX,&"pgLmnƴg?݇?xXݦN[h4/xKF~AAӦ>|fMdNBCuaM_0NA/!ɏ*Qk'oR蘿\++Q/%лg=GFud2߾}ݳ/PXYZVFMN_<~Ç IX IDATth4///>!1<2\\RACԴN[YХ(*Xqhhhth.*&vԈa1qӦLn|>5s}}ݷo?WwRRSO96%Ędy%3;6nVSW6yBs;;iz7r3=}"QuulLcR`D"Jd-ջJC$14DKK[III]]J Q(**_|;q2yUmy-]d?HQϞXaݮ>9zyvޱ+(''76.@iڴ=I}>k{v'bʿpOZKJJ?tuu0exiB>:F-W۶i]^^A{Uj~]GrUUUE˦MHQ] Om90Y,kV܎ۻg^=c,^ԁJl>{>!1i5l6;+;{IXUV&PÿՠA>R,~:k7˳W@PRIGb***ȟ(0|sM5xkz9&r?okQ#XXX`ѲM@W.':KJJ2޾#Sv򌊎}M:UWWgd@W/ϫRR^J$T"]a;vI `-&Mozz+/%Xq&jhhطjI~hkkՊ{-4;C__/-=CR[+#svQ-`ߡחHw 9ځ;޺}'lԨ֍kUTyƌiϚcjb,}`G7YS}TTT8ot6NsfM_asnnwaQeo fJA u];AEEXk캶]`׮-v?.%d]~?{νwrk::bRBO E\|Dϟ7{˖YF>>萉gΚ#1XTֱ`gog8|8S[6%?S[.?޼uXSɱ55iS'q< +W2wy RLϞmBg{9.r&={t[dy軅۰WA<Gg(=w9}FZZE*# i蠚Ymmm͙77P" 2h-JiFg0dhS6iHT*ʶ.Η\m;!W(*yNBuy:::.nn.ҹsn-QRxJ Gؿo;6(J!׬gҌ^^+<.7o֔b>u7{ru[CFO,٤ߗĤ{#pΞz86Pzݏ453f|{$IGm|5Udyo*߻>}z8{]PKPIK$컞@TJ]6PhŃb}L[[[OO߾ʿ۽*7J {% ><_땁2vpG}wW~=8f\KikkKQ҉֪wQG _bP.'UTeMlml=3v@)hkڰzH@SK/ *(iB&c2/k۱7{[g_x]PAiijZZZhjDT* c&''#xb}?T*e2)ii<#9|;U@Pd2 رczrLPpdGC 5R3$}:u@_???!WTODDL#@fPeJrW\Er d=Rf͚7n!92rAPx{{?ՕH[*I9qd9rvRT9d˖-ߣL#GxXOĎ3J ]!re1iff w^^ނ ϟUVvǫH9|Y {;vsEABs2e #8DT٤9rBZ.\0..NKK3??@h#/6@Wdee͟??%9Y,17a(S ˣ9sdDrGBfXNnܸQ_OO.!3 a9ejj:eʔDB*d呩ŋ EZz:_nO 2hҥ2YfF@ Df_2,==CSKK$ dU{Jx<:~*xȑ={ފD"H$ |du!({M{>;x1#ܹ{;wԩСCUB?x؍h݆M|-zN. Jՙ)6.M. QJ@qsf͞ǎWr)pr/]>{Rc@v1Ïtܕ^jiiUfݵ{[6:4bQ5|>_(D"BP(d^qss˻wBDZX?jcu઩)fG.^{vmji yAU꾤-/@ ;^ɥP=}|#%<ٝ] 2CV׬aύn{FfM١x<4Q RP(ryNN7QݺwV`=V(s#556+uT`jom;ķn.:zs}՝8~l&'=o~TGuWq)'r vNO: {y7lX;g]1}CkB;CB”tlzDx:x&zuѥ33񓧶o묭͔M123~UsLx퍛KkլѴqOΛ ߱ v:z0m윜GF>4['"*nSu*0x%Bj>'N=ךU^wsg56000u>;zvϾ͚4VLmNw[z_Gf<ݸyk]KH@ {3w"---===]==MMM Rff態;w vPcdA?"s^x]7uڰ'T`P۶իYWVKDTzf|֭^ݭ>qcFQT{>eoȚ;w׭s4wͪ'N=UA*cOR}d^ػ)[w"_ާWG9?|4;P֭:vhʵ,"R*g;uhODuhnk7aqX[k@yrT`NݏJUm;vմ?vدCݹ{ڪꑀ;n|ꅋ?̔cא3?YB\\OvoR<@D)s_0x;zү0RRS>{V !Æ h/yM)ȚvyڔSYw*U3 ?|k~qjZ [OWWSSۅ|~.g‰(''?ngD 4J"ȪjU" =ڮգǏJ544D"X,p oӏQj5m"|~&bbc$33tPHVvE=]]4P!!nDԹS5?e*U* +8x+WڎI5KpǮU>ѷw/Pշw .+W+U2wvr$͚mcJepH['W"fm] {2iDTn]CCC"jެill%(nWccZl!t^:ݻyhjj "255K$uy:;=},&&΄GlѬx}bX,n͛("rUU6N<ή#kN)Zh\.ѰA}=]wȚ*,l  լ5ǻ?;vx-]lbbg~Bl\%$&XF B N'xNͽxUլէMJN677SH.]r&"y4JT N ֫egg8X頉II>}L4S"~~utm7rP)Bsդ?""B&*J5*AUK v:Xr=J"bz?(C`bl*_~ӳ&ODnev>4,S3۵r?7d2\.+9*eĩԴ}Q~~AkjoUxCD&j-PC(d WOOeg‡ p&,8##C_~Ą;C 2MURRj*3x<ޚu 6+?6h@Dӏ +X[[YYUtjxĹګA4~ƒݻ2E>xwvmrr)W$"ZmnfzrHtT`x9&nmm5%%%`_aC}<T'NN7сycSAƍf>bv0%%%^K BBapÚG!D\s(MH040I5z{}cA!Ÿ8ٲmGl\ p% ޾:= ry˼Ɩ{v&|fGr͘uu&XOT:۴e{Ms,7##GҐVVUCmqL*rSedh(U;癡P(֯Ym+V-Y8p",(Z{Ƞ̞ˎvGDiii/^b*wrm~=6fADDmJr/kN?xPT=|5 Tl'NvpmgjbaoWNPv=""JNNao/rss#ΞgҷРJJ9VPF>xֱwg``o1L3RiPpBx]pHCk"ji "w/ʬA9Wd8矗ѱ5jիA2L.?{"''GU?##kڷUEtu[4oqV kk+"JNN044T*A!a*UZ޹{iTGz-\۹\|gNR[]>~yvck"j6N&xWdTU_JqsE!Ddoggog7pȼ͚9 W,[y|ΟLQ^]c3/sMļ٣ۢ%ˇ]WWG2cيUCGa&$"l'Nu~~߸x 5aU(wmgVvY1%?~eێe+VUVef8h٢ 8|4//X2ah*U+rSкU4aђ f+. jii6. IDATi3խSNa<{q1.[/3<Z!4'(ChN;wgeeO<]Cs2QExCFO,zkD3 cR٤]:jM^~^WwՍ3 3҂!\8p2CCfu &MLLd>- Z!4'(ChNPМ K(TDfXڊ Ck|.;P)vG'2C yyyܼ.(-M͚5$ [@f|&UT231ԤR飧j׬!He_@L%LMMsrr_|JT(//gظˋ`fj:| M]P"deI!|9V}tttE?v;z@ `!W1Cbj-(&&n`ODԬItCCCv@p!/^6>D$جO#:]]7$"0)uXKH }ԊJdffC% v?ՊUkLMLĮ :;ޕ]Tm) 4dre2az;8LV29\Y*cGD%wWש0IC=bT$"206g)o'Wdň2Ezo>mi$uWh2 r !aAkX/,[g\ e2ÄĞ}:vXW]:wRdRzP(eZ>GCϞ? Baii9q|ٕ3g7mv-C#rO35=Rf+YIRXVźjwͩXƨz sUsoq 3yQIM֯Zv*todKB)VX-ŪTZY2!5&y&:*jVq˶ .ܷzu볣\ATf GV%y?ԪKi_-pY^^^HssK:n./?gTω[ >Ʈu(U؂̐˲mM{ɼN(\i!U%"~.Q3ۏTd bEu6ed*4|9)f-=z2"͜gF򈈒:ū*$Zz˰^`k|Ӽ7>7d$ 4x]ybŌ{͚!9ifrɶ{Dd ](ח2E28f󽖢8QV̷3Wj{P#:UJD s6~o=s'Ud-9mFr^s»/b䤙]lۭR\~f||0MU+͜gy?$j*>///<✹hތ]/K$?RΨʭOQ(7os޻m.} -"#Lh6.`pdeeg/\GGnǢx?h~.v^-Pt}rj׭WDtǷjӾCnag"VxEzZ >S/;tŵe^E.%&&֣GGҽ3rS nj'>stoU3+H],TOiY?]U!nzzTi .JlIkYDqb3T!iH? NFlyA-b[w":&M#ג?wMT֎e.Qf' .cet{׉ư^w\j-OQx73Wcƽ6(VLDvXp34hUnT68/~ȍ?лnXe} U+Z˦pΞ`gk޹ӉSU+C–yԥ{ؙ[7ЭKwi3 `= ѻ R >ST4SN<豿T1?~Tw F >iffJDnߑ6o#~}EVv Ϟ‚N4_:/_Yq_f ;¢Jbbu >w׶&MX) hF}Gս};w2w:sR  얜2Y 95qIJNfާI$FC8#"< =AD/_ٳUCjؠ_'N1^ƺW{- :CL:"ȥSX=z!<\ E>|xwGٻ_ lXvo|h3+2D*7s1| :#>#ih:+mD 1o\7!y/h:-+40 3J=HuLʶ$IyC)\,qԇ OJ#a(Z%5U񄞱2BHk]33i :'Ăk&S3G)Ή%Dd|,n[L%Oka\0G$,->zI?Z;RWC**BOܩCGMe5trl{ϾߌiSx<ݽwߪj~op굋.)Qvg™E?q]\|OvoppRIQjj 1FOR1TV'2C3S'Vc}{hӏZZ̯.;1Ϟ>dH$5bT>qsv6|>SW+LPΝ~M|>KU--zv* ~9/cZkkisq>v$TnkSL9"yL&k٢ *WԾ 9jijjz?L4&~zՍ!аΝ:Tn # ܩc|}"8K#Qd7N(&/HY' :z|~Mzm7"NE&k7y+ŊqoJL3q(C|;ܰJR#W*xNd-OΫj1jhPZݩ.DT Lȼ&""d-,O#Q4DV ujZSS˕6܂RejE&3uj jВ ӊ<}{嫘ظ͛ijZ:IIu.AXAUTICC҂`jjխSM[&ά$g'ǧϞG(ʰ͛J}E"H$j٢7QJkUZ::&";['̓B*M RUZܺqמ};}vq4~hFED~|=ĤJ̙&ƅNfOHL]iTbbR:Uq&RR%cSRS;w#|]#|wA!nA!n;4WLM"xGo>-}bx<޻w=QBb?|TR BBZZiiROT~+X3 E.EG[L >P(Ɋ#p(Vl;N෉}HME0zkWکNIٶYDꔘv^bamϾ߽o)96Y<~!ˈWOZ-{(f7QlYgk#eFZ "Gk7I!|IO}FNJKK3`0h ؟YZ~8b\xDBL&S+$==͛ ?;h@Ə^`'ɓU} dd-'2C"^f:w}cG "f6#8Lu H*M`n Pl'TX%CT慑HucA0. +''tPȶMT=/^ʵ}57ĆG۱e׮]k ͂S~9ݍmH$ jMrĸ^ƌTafVօKZo#-!!QH_e-r)Նnմ;"*m"?[@DJB+6WAuݛȥGtlgRNz}6͙Y)y?$d2"=.MzuݛM+D һa +|PY"))yuݚ yrB"XS]'9jz>eZGbĵ{Tctl,掩)j]WYG̃:bFhZctmPv7My7btml|TB* VekN99>/&/^ѸO}۹8ϫ(͚4yk׉]t5* Պ1Դy,JJJi׫;|@V/_z䠊L;{mEQ#d7LqmQi5+-TY|M[zy2szʕ`A?OܩjGڥz[Uds_fNg$FF֮ZnJvEZZnYADzz&8eqUK 3oMxi999Z4ocC&ެiiS&.\"66VSЊ9 sJ?hUXtiK \RI,YR\}󆪖b7]HJֵKo3 H>=(3BDVLD$דZTp]G [׿=U!̃(HN^\$$xλL;U$\ѷ&˞mdBe?jWNҤN>i"9ԩG-m>kv0yjNn E\ٹuosݶc׊UkUnެ)&<{odyDx|8)Gؿo;6-,"4]QɏLL+ڼiv1|5;wΞ4a,{v ֶ [wSfM+rΝ۫:b/]>-2z'%&&EP@ 8w/x}Wݠ~=--7oǏͮSkEÇ /(8Lh;q.4@ |Znnu_zMD*/c6Z=R?_[pHu2==.Z\S,;jxzz:rMdVJ]J{ !ose*V+8GdeO[K3^*U=ߒ&$hii 3wRNȇlM5M"n5|"3t>уv a,ԯW'''__Ĺ|"388b|.;|D"aG+ܳp2CCfu !!3:رcra X,x0pÆ )))0p_Pc%q|H  p3:<p2CCfu !!3:d\p2CCfu !!3:d\p2CCfu !!3:d\p2CCfu !!3:d\p2CCfu !!3:d\p2C2$S.d3~~~0p?//.u\p2CCfu !!3:d\p2CCfu !!3:d\p2CCfu !!3:d\p2CCfu !g̘!Ha Ma ~VV;\422b3֭KNNf3:::ppȑ1ɸ֭KLLd3{Cfu !!3:d\p2C;6>-bg7lؐg ;\7n; Dp!:CÓ!!3:d\p2CCfu N8iҤv8Dv8͎:CCfu*Uc%=zDD$pR^`Tǎ'ܰa[wvvV&+|ޮbv=!;F_DNN @u !!3:d\p]I3o)//999 ""Xlmei``q kd%=3dvXXV131eIQoxF2O)y;7Ħ9999"מ099YT_JXE%U+ IDATT (zjJXE%U;b@V'zp(~JXE%U/2}|{Уwv{:bG{#{~O~&ݽwBB=`{qq.nr]:{¬Q5eev-"Za_v1_;Zf̚}d ;Z:˽weG˂j|}.^Ǝ?'}_%\>`=G˾*ʡEˉ';F*߬>LKK ͥO.۲ ŭ}Zg߁VQS^*_ Jwwe觰صc vu}b"z.֍R2vYy7~Ҕo]I#^Ukm޺%WN>9wbVV;);:nɎLٱjۡ#GՃ|<̙}k|[%b3C'GÇTos([s3scHĮ۰_^հЗ]5曶hTWWCCvX"av ņM[3}fXΪjUvxE|Ź._Ǝퟣ̱×Z֩¯rm/ufX~>2226ʺrE*jUJ>cX/|!P_)eE6sxWVQJ[nߤ?r/L&ߺ};eLMLB߰[CCykfv@ =P&`acFg^HrUTQs-MH?xX *ްiWBAvdffP欙Ӎ%⺾,Ĺ`'3g5mm#[p>v~l5rVv-UXf>.wW$Tw ʲ>uo)7va}Rs3Æjٜ RUGFޏ|j oFMtA{?yj ob z@ PͰ " “N?藗״I›֒\.ڳjPR߽w06٪;p\xEBvX"bR UsNKK,.yQFfY>}&=ETL/ZcFmm?"hYϜ5g)+V{w( b~}{<غ{57FERmm>lz T /ylͻP(ܲ}gHH[O͛ k(”J<.}mPJ9׬x~X$ݫG]gϛ_n~}{+o޺pp{ɬ<0/<5-_ݰ~[w;穞Nw!Z0nX$  q󶎎8efύ[YMu,+57izuWze~ =矞nog4ϔԙ>v_ :bIf3{ ìDyt^ۛuӦXZ ٹmC;tX*M8gwikk9ܥje=-R'F[ZXQO hQQ{wm?g狗UE5|_GMML$Fۿg?8{^tтcիvʤ;w>󗼼>\wT*,ZZߵ+#Ϊ%.XTWOw~̕kUՎ;{ş|/XP(TEi:?:p U5Y;#^}M0ȴ/>}]쌍ۺwgŦG]uP(tqvٱAD"'ϘCV͚4f^o۱=\Թ/0)):Hk]%T ?|k}YU*W̟X菝Kxx9;[~opʕ.W^c֩ύgJjsӫFRRRh:ھ}Ź[Gg'G}>1 ZCZ^ 1~cѠO;ylI9ь}|oݾqc6i<׹yLߡ#ǎ:Chi\\|9|eP׬۠>U5kKMW,]K?qj_"0yjW5rت5ջj֓'777doj8~:(Z@)2PP⃢V|DD\8@ e)l( t%?.\BV4MG>W_}%{Mro9ެ?/?wIwK{d nѹN^07ԩӽ{4z3TͲ3))r7_]20bKx5k߲\˘Df&wGG}ޤXŗo/~hY͛ETF۾cgTӦҹNè+/ꀻtH^וK2}o/7!z{X=[>NX&7oVщpB!isBpww^g-=![}[dcBѯObpiƲk<?ѿ_777!?,=qTFƅN?6aJ]cff߇y"QZDң[m^;pJzléΝ;=[vq/\?ݱkVm,ZCغu=بGBBve:ƺJe4\ͳbQ H[jy{]]]u{v(GB7B#VO^_fQ ]ۘNqk]v;Il۵_ {&8q2#b;x c9SLռPJv^EE[Cv8(ؾcg|\C.++?4dյnæ~}JlX0<}L˧Fۘ6~cUK" !b;ڹ{03^62 !WPjҎYV}CC~D{d##JeÆ uu}4qZ;opV+tjyǠ{899%]?bPOں}T'(()VZM=jw(<{W!DT&ݻvY)XeDyYys?,mjk֮ӻrߠǎg䴍iׁZvv?EEEGsuslE =0R;~ݻ6lлg!DHÆC3uZVhEiiB6TҼvvо]T&h.]:]]l㭓 8XCF7ZGqY ȸzo"77Owtco;qg >>z5O-yzxHAAABgYY0 ZҌ]9R$0T^^KLk:b'_ ~ InAA._ֽ:YvNbTnYit@v'NjE|hÕSNxm! n޽%J,}/߀ABͽ23h5B1k5Z[ٰi? *"%;@/U*mK7סj{fg礜MY\\RXX.+K*- ܆g   h}÷K~71QBАc.!'7;Z|cP(*?srr廆,Ɔ2]46LrrWeF^?wBJzd~Rh|*|F2!Dl߱_e=)~ ']>IrFVv;o(_&t&v/1뽇z`?dfF? b};(AlnZ=zyyuvGF>~&sF)oëhvhnʶ9ܵ[V~pg+77 gԁו>\,ihjg^62 jyz ݺA!3N[ZZ۾]F^G߱kwwn5OG>8?G}f43u>e7C鈯)=9rs>^8ƵjyG>o^ !rrrvܵaf鮫+W:kq;r6clfuon&r ik}:t\sn~PIQnHU5f4irhfii^?ngI~\"8Ͽ=w|qk~_WPXx5WWW!|yv]~W =酋 Vι~XS/0v͞7mq㈗>o/G 023n^V{13K?BFƅv11B31P2|IOB{[Ѽ 2!ā>|{/XAUNN73W0u 0?A 2ѺUKgg;woٺ?՝Ri47ǹJAÐ'Z{ߙS듙;T233/\N=S&_Y\آkc;Ӈ9CfjJ =6lXh[.]ܪnnna0Jn?_,c06g@n];1G祘Ӧ03|/}[ #O8BqI4|&4£pFa0Xi+}BZ6((F?w+-IWnVۮ]Cڵ7_ke õg B箿սΖVj BgRv/_l5SDǻ IDATۊhاN^^嬒A~C! n߱CqwsŻ3l~~ntK qŠ@i]RɭKZԿ*WНrff0CD]qYAAaYY^+.zjw( /?pP*޽kҸ]>a礑!!Mnmѷfxڪ jQ_~ثƊ_Wi4Ͽ\M=yyyaaZV>ʨSOKBgfe(..zwK~ѽ͢?^իZŋIyyEGbÕ]ְAFGylzQ=}&eB7_o)nn'Ol?Jϻ9Vmrb{vr5kO:-]\"?]EQQQqqٳBo3))eeئuU،gRRةjϞM5̒޿> ^+.]KݿoWVV..wn%MھstEM=Qfc5]2 !Mov~~3)S _V4[~} g~٧'L8?J7j~?iɦV߷WV[\\r1:Lg~%w}oܘ6m.(,dfvhÐ',FJ!D->3+\:oK>?qRu{$ҭ`hlW[}^R4z3L%?XRRRXX˺zxm%!Dvm\SN ET&eel5<_V2GB?9zLf\`3e@  -cǼ_ع[zvsԩNqq{&BV삌2WU SGM{߼ЯTE%_P`|ZXhh 6ŋN}۶luvvnHTvhetΪ\_L!D~3)gk>%쎝Zslӯa 3$˸L)b>_ǿGj⒒ǎ !WKNB:vD[9>u6j4 >Mdpm_-6ҥ7ޚ+/O!Qd$ggGF>`tą瘤GXhJ];w:w.m/^+.ء͝я|IcJ}3g^xqFצ7F?b0o>C..>$O3)Ssr6}~$ϐoOcc;ՍO:+o#cb8T͢GN*++Gu !|핏,1r\ӰaO788O~]ǻOb녉]^sL1}ww7//~}ϤX  ?9qIz<~wu.٧2zƝa(i۫Ӧ>Vec72rTR`P`̝/ֵ˹S^xڵk={&뛨W;{;|G89)v[o'CGT1ށck`Ϟ '<%/T x|Y5olG&w9?w.9;;tu1dt G=PF3ɧ4Mffob_|u7^}Ykj;YNUX.:iτقyoCB\PPaMn6hP=0bY'ӻSOڵK9us^{!3g?1^^^mcH$M־]'Ǎyw·/ftotԮho71񋯾`04C Ǎ;a^=oKtwhz?Fwg1{"O~>vk׊EGlS/vmcƏ}.K:*ʾq٢/w=eftTTtTCJJJb08JBۭ\ǯM;ß1LֵKfVge͞Big@ 2<$ B<~űcǃ_{7ѷ#* 2^]>XGɝOMyn1+}핗,|䨤ra;>8(]/_B3> =Jr?KBAaaw5*0 ^싯f7yCqڣUzIw۵7&i·]rqq߱EfBb~_&c!DhHCQx x Λ=20Y#?SO?;|萄j!iDSIl(;;,qtɅ|u4?^싯^-zfx UtCv`|5oIhמQMn 1r:[B#cR;Ann޿l۾oo_`C7WOX(OjvK?drlj (~5qv2L&R(ΊK/<55U< XwHki?kнk8=(U[j //ՆѤ۲m;!۵got&![#cR ꒙eW=\VvKH3Tƍx >M|||\VrF) WWooWdg~͛ף bvT*}}Ka^U(9:@JhN:uHg*~rwwkڤRԩS oVS999'On%tG^-*"(zU;vlf~DP(C5o޼ܼOO/Z$pw  m,O1*F_#w{q˗K/_ߣ7o;Րrܸq>>>Z|zPבc׬]_^^?VJZyPΧg?~BԬݻfd\BT7P&fd\ؽg[)͛w%bf;SSS'TF k(\wjF&#GNգ]}\[p(;S|ې8v>{DDDH%=7',4귐~B&^=ntK,gVJ_dd5&,4DBCBw7ݻ lشYC^e=$CIs_@xX|[Bsu*ɷ IpMko0 !5nT t/9# 9l~Q\j^DDD~}"޼ّcʾas[4՝dP{)??#^,H! :vПv+F@]ԯO[4ןp-?V@ԹS\͎?vnaa͚E` <?X!b'XѤHHj1I<==C9cƌ˗/######S 4L_|~RP_tC3?~L2TJJJCyrb`4)8:!8:!8:!8:!8:!8:!8:!8:!8:!8:!8:!8:!8:a/ (N:%&&'''o۶MBbb!CN/֭[BBGQQիݫ[YR 2e˖...YYY˖-KMM&5h`̘1|,VōP)'CZhѢ'q.<<<66\:dȐٳggdd4jhʔ)'O˓ֵkצMΚ5ի=zHJJzׄ۷2dHZZ\!*MZ\\dɒTF"Mrvv=ze˜WWҋ/ !222T[§KNNիWgϞuvvʋ̙[ЋR8Ug+88XoC=pӧ gΜ9v7oܫW-[deeS;v숍6lӧ뮥KJ֭@Tg(S*FZn%غu배UVj6l>|IB+Wlڴ)>>9y^3ݠ?T}J2)))??ʕBooC~GF/###ΝަM &̛7O^zmW_-..۷If̘QRR"W0cEL,,J*rʒ%KZ"..oriӦX"$$Bi&&&F7ŭ^PjժN:EFF?~\Pw9U:! U jرcsrr/_Vfͻw*(ӧϝ;7;;C{^lG bƍ111Oiiif<<<.\:?a$uW0&&oBtU*III={<TMZPPPRRs΀ɓ'Tҍ7:tHP(?Ӱa^uBgIXM2Ejh*Pxxx3ldޥ˛lRP_̟?_v۪+[FHM(ķiּK6&8]y۪CMf*US±"J=b`gXY7N!Va+TeU͊v?^@e Lh&D~aͰɢl2la{MjfL,B4/lXdh)YͤScXXB  +`]W)UZɪv=VĞD#zdhNU ՞SKZb>֒Fdhbʦh!aX 2ͨ&<o$ Hl;(K%,iG@2Z ԒTVSͰ|;T TNNN <3 B9i$OOOb؅TfXX#*n%61c˗a/z&j0 k̤JM V:~_۶mG5uk׮I%5瞘OOϼ5kֈ;%-J;?~|QQwձcA߿ɒ% 4xgjurr.njmH5 >>>##]v;vПf/NNNJs9;;JӥjzQQQB__={!';gΜ)P*%%%BWz{{K:.D+:n5TJ''Q...mWWWFSVVvkH5hР2~1G||5k6o,ݝ0aBӦMOzh^^̙37mtiNAAҥK|IWW׿{͚5$6l;;єKWR5JZr}}3L|lͻta#gϞ5BCC ZիשS. jgO4jh̙qqqӄ 9sf׮]yqvhzmȑeeeǎ[r~*ΣG>s7dddL:UVօUHJjjKmRj&EXSgXhUddJ>2~!CuV2a(PmXepL$CXT8?¡դ@fpL$CT^8! eCD2DUՒijeB82~6 Ú0a)iyr#ͫB2ml&H]|fmLlF B̟?_uqg`c*AIlQ5 $C1~x"qr*DT*j0Vqt8!6/n+@A2D}VMк襛6d%W@-D2D=gxSťZ/%reݢ̳@D2Dgxc[/0- IDATT0**{v/_^^^.Ouss6mÇ{!tԩ~沄4hP@@Vݳgϯ~$Cl ez+jZ'Ö-[]ѣO?tϞ=׭['O} CrʫT*yA-^XP(x≟y׮]&Mسg\:9YrUl[u#{'+VH7._|ѐyR||ۡCWWד'Oj4Fsys ! rrrT*a]ȱb+aQJS(QQQN}|RysVݻwBBB^:vj*yB/IIIm۶1b޽{u+6djЦQZ{ZR u _\\sN!R=zeu뤦=z_~k׮ѝ*8p@\\}||-ZTZZWA1|ݻB=faϡ%u uQUa^ڶmJ0`@jjW-)))''gڴi#G|-Z$Ouss{~}%%%yxxl߾B lJ3uHApUJ$&&mVP(7o>s;s`ҥo7|h'8|rrrΝ !`[R3nCdxhbeee...BW^yEзo_ڵkyyy;vܴiBر5Mfڷo?\p!000222%%EVĤ\P dۿ!Č3gyF’gg+W!,Xo߾B>L߼ysBx#GkÇr&CK!iV&K.Ux֟n;wܹsu& !Į]v%޷o4˱jP?uH*My dCD5vbbP(`67ͻt~1XpP?(5~(Ǎ_ 7݆@T՜g*A8 :gI]cC8 @%wuqzC_V0֒&*%=[Mdf̧Zg0Cyuv^/dN97VuҊ*\=á^@ g! uja誅MH_5JqS+T6IͨVFd!lf UkH3Ӥj]/!!VLP54 8@m'%()U6MY7Wm %ҺrPgnPJVUW660| %r>BmM =vVGI8llR q!:IWRjZ%GecD V`9!:L/Vw*M ST-Uu;6V `9!z*ѫR*Ӫ %])@ ё ,ITaINa,XRUߒ@G2+i6G{f ꋅR~¥(h>C~6&7 R;uj%:dU;ڄ<|@B2W[UhU@2=;Њz+mO\AJqg%]6gunC) 6S]|UҌe o:>Co*E!y]|U*N!"@} e3V!:l7@hR'l QY6  e."`=: CţI EN󓓓mۦ[!11qȐ!SNBt-!!ãh{խtܹs^^^wyBhԨQ=gb ;꓊3(ʤ+W !Gi4fLJJ;wnzzz6m&L0o޼ BչsYfIw ,X0xٳtssu@9uEPR=W\YdVBM0da3ky8n(?:##ja">`$C@%6Bmb+Z[)@2 A'zuP96 6c&+K @E2؛)VC Pw V`cy,Te]R6P c]Ī ]$CX %2GHkT6T%J*F[zH:aPG V<ذڄ [nF (͑ ֫0<J*\MTS `P]5Y!!ZTk,Tk8CuIETTiBaI5á}VW zu`cvi]]mVYDD UmXS>uʈ!lbDzn$C v֬Z@*PHۨU@7wk|81HzK/>YX\}lm@A2 Q܈d5K!E$C  H!-J;ō""rSP"og@G!AɃJ`[t@@28W6!c4)pZVUw!P!Z3"P?U_PP @%T1J<چd@eeX(j!ámyzV˶lBHb %CY$C:D#"PH8 ¡=cu-TReX(l 6A2 dc-W8s̱cƏy^zmٲ%++Kϯ}B/III[͝ƠJ  o*Ta)maѩ꫊ eJrԨQ֭[nj*:ZvÆ Ç3$}ٿK(..99s$CC^z*NKFJvZTa۴ekޥ Yk ڱg*M PK0B1|@F!KjmTi kSTAW=u5u1jLnK5ҶZ kSRH Ts=#TNaLC[t uUq#uL3@ Xhb PAjpXday2%uH,*ey !ƘptvC2@c]W.!ja?!j*v2̜GZWZz_@ "[BmLmao-+ P怡H/ ֡~N3*N:%&&'''o۶MBbb!CN/֭[BBGQQիݫ[y̙޺% ,yt ϝ;7c c՗ km>Z`o'CZhѢ'JSccc˥}5qq$ #-UE* 2]* PqVuknOGq ŭhʼna< `y#<} x˖-KHHhذ3={m֬Ym??O]|iIIIa61!|}&߷o_\\T*MNN622ȑ#PXXXDIHH(**RV,|JY\KQ(۷o @nmfER_m+?ihhқw}3˗111&Mj׮ɓ/\b sqڝ2339r=A"V{3(/H|>',,l׮] N<CQ5j!92dstt}vzz:QKK*,,.x,?gHĉMMMwwuIR>S455]z۷o̦N~O"ѵkץKr˚f}6 bj{tz %Cee1cdff۷(BX,c̞=;((޽{o߾%ܻwܼd2IHH`7[[[^Pѓ~v5kW~2TQQ?~|jj#GTTT!R422>zꔔN:kjjJ$͛Blmmy<^xx8!D$lذC!gϞ^TWUk΃(?nݚbmmM.[ޤWfee\z~~~~ʅ'x$$$<{ޤn۶PUmC8j2xDZzFąYY5#]UaAL|.g &3oխ&(W@Uz3^} @Tߴ!־N`G j|Ig Tr9v U 5{7NC2L U13 @qU|ڰvB?$C՞ $CPh% XY r@2ӃL2 VVB YGCCۇC @Q BY Hu,ׇk(!'2dnCd*%KݥCա\ TYN VP]ɇ%aP 3ynZKB!(jI'V$ Yƀo!Ṫ l }|!|5L>V%Pa ૢ}C>K>$C*HdRy9md5Kh!@MO P0H\er!C2(BM"(:$C)δ!!C2(L"Ȣ@! dP(Bxܶ |4mXb!!DՏΙ!TPNS$$C e+5)ttt$IhhKoI$BHmllsssO:u MMMvƍ߿OС.!?=== ӆuܽ UTTLMMwߨQiӦѽ&&&-[аa3f<{,--9ڬY~~~O>%XXXܹٳg+JTd5i~~}Rilllrr%FD¤$BHBBBQQgSpʕ\BHCBBEU]$ km,$3d׏7޽ f˗/cbb&Miggw…dM,[XX̟?ٳUUUuSm"s >FO k׮A'Om&M IDATd(5Ŝ9::޾}0a@@%K6lثW/}a-s|>W"8qn:TW~ԩSׯ_@B444vtRzSYY(88X*]p688HHHT0*++3&33s߾}'b3fAAAFFF{-!޽{fff%]LLLBB,D"Qvv6!D `))fHi.{O***ǏOMM=r䈊 !D*FFF^~W^ҩS'{{{MMMDӼy@B- 'D" 60?B"DGG{zz޽[MMڵkL/@-$;誅O[&X[[-˖-+((7դYYYW^_raaaxx8]&&&Q$$$0!ܹsȐ!׮]d!u+Bi.ffeqqG#@-QR4%[j/Ŵ #ڤ [ݛ-$|ѷV,h,$HUBdPI/RZ' TV !C2PtH@!(:$CEd auٰa j*R۠" *R۠" *R۠" *RQ$CEd !㩫k߷؁ӭQJ`xy{sZnݾc־ʜZkҤI&ɐդ@!(:$CEd̵Ivy{{9rڵkLرcv5qD}} Bضm[UU8`ee!CB]v!x^9;;o޼yLŞ&&&JJJϟ??p@VV{p`;Ç- 2Dgώ޿?"|>յK.JJJ=:x`vv6{/E5+B8lYA1u6JQ%i֬Y>}LMM_z~/P(fϞn"͚5suu_>EQQQQǏpHn݆ شiӽ{MTر͛DΝ;3_~4*R+R֯29*R6lX˖- /]Rr/ ?ڴi{vٍ%C,3M6]tiNNyXI~ ͛4eʔݻ_p1sLKSWW=ztNNT*eWww̹s|oooWW׽{^m۶m߾4o޼R(ȰaHϞ=[nw+Ra˺ԳQ":::?J#FXf {B1113fLll,Qxq=zڵk՛>}zBBBTT{|Ј 7%oe*;zS$&&N2ڵ"R+R꯲"e+''~DӦM?{,{|XM/_n_j9cmmh">9444?}43@UU555>ԫW!$ aÆN:9s&;;["v֍NQTff# ֭[[ne3M·oJҢ7oT"E1رcvvvLL sLEStE$ݿ _E"""222<ضm[f]}QEF9zhfSzزb*lEYV$**EEEѺ^ESXXx/守ׯ !YYYʤLOOg(x2xE|… {xzzFEEg^ESjEJU&wEgVVRRCBB %ǭ^0guUn!&BRRRSPj?~ckLLǏ[j ̌0`˗/={FIKKۺu+!D]]KSQQQQQIII?233'N\xqJJ sX(K{ٳgEV !fffΝ;a*G(HHLLL>|(JE"d;<}C@"ueqpppqq7oތvCʭݻwܴvA)"Xރ ڷowfϞ= Xj*NZ" ''P$"3TEEEϟ?544\]]Q?UUV͛7?~8jܹfzUTT^zP(7B!EQ'##C*^|͛7-Z`("g?LLLؽ2*BիWXXTʧo߾qqq%?)_EΜ9͛Yf믉 ;a(7*է+O?3gΤtAŕZH/;wn޼y˗/߿?Ľ\E{ɓm۶x<ȑ#;n"vիWԂ/Rٱc… Ǎ?5*ŋ !B0 `͚5VVVN`Vdƍ۷JYYYZhѮ]'"mڴ)*CPZl _E :D/nٲezz:|)*է*u̙޽{&&&rlVѣ߼yڵk˗/swIII ֿw}׬Y3OOOBq6m޽[8;;?~ƍm2|eHkѢŁoμK_wŊYYY >,,,lѢzbbҮ]D_Ԕ *"ʭHZZZΝ#""x<^Ν߼y#J˭W^XE̙3itrrRWW?zh^^|?@QTӦMG2lmmy<^xxa |aY%LxB":;;K$W6D***qqqtѣG_~g C}g~wq„ W^y󦆆|!hhI0ϬOϗ~@unVX_tttZlؗW׿K8|ϟ$͛%a6m`;wNWWw…R֭[y=<ѼYSv¥fvvW4` !>ɂ" _ z܎-7k:aʴעS'~)t1i?FD^:ͯӁNC7oNM}ϴܼu[MMB?얠fM[hxdMN/[Ȣ9!뛷X<N[6˩}ٰnddi׮V~GT+wPxLHHБ Fݼ` woZhEd"](jgBN4}[7mpu髫Ws^? |#)7##ئ .]n&^ !{:sC<8eSߣǎoٺ|xP7 d߁Cx?hŪk񢢢Ky r1oyFJj)?y JNN)**{?s5WQ={uАO}3jNƦ}z9mڲrރ臏FPL[wOS!S&;u:uBȺ |ť>xRһ{MG3af쫸woKoҜthX(+v-!.}zs766?v!^K!wXj/~$J܇>Do* ݭ8up g'fb־]Vv3)JObNII: ͚ѧ(;o"406jj^ӶMkn!=>uC}V]OΖ~t,Ζ-g_e1(%%Ʀ?Xu~Ns;~sτ;>kCϮXA>.zLL̓ius2dRWOLJ5_fE @ 4hЪez4N4yfS'?MwBH۬_"nW=.s1Bpsqۮ͡'OliKW<}lwt@}{+))\qCwص':ў[:~=M svZRƏyu63Z]]hos^Nt81224m?[^9X!!l{ћ 41=Io{<ե/gI]O{}s­KQQ3 77p6'&X[۲Eԍo TϷhLfe2mzz͛{iBRK̘W}רU삂CCMۄoLKOgn?ti`lmeIHLz*C{wF^<{%燇mzoT!v8D,T T26ҕ;w"ddd1gA=|p(y ``w׶Ζ!^{ٮm[&On[`-7[쿔rAtxxM_4oNӏsסgÖ-Yݺ^7THFWnܼeѱe%zY}ѿbmvo߹1O#/Ѓ%صgْlXQ9٦u p+dcn>ڷbг玟1єI ڶf2/RS ('y5+jg&MBڷ^MKD}@f"HƧ#/^ФIc>hĄbYUUwm§2N9;bF=P7%BނsGa?=3+k MG=>uxfh7o-Yb̺R@QTS]2Rե O9ۿo{j"]OS1Oڱǜ;ަUKccOB3B3Js?7쮼|˹ۼ2]sfʹ܉MI,:߹{rLOBL(>gυBvߗbchz2s}\Y!;;b`gǖA=xfoa@Mv=|ݫ0`+䈅JLzve)Ӽ DQ mzXSeR~5cEQ"|>o54gΞsk԰!!d1OSRdgg:cllTO](BH~}(G"Dh+.=#CWOJ}xnQG w+ED"s<O]]MVI^S'M024TQQ !QÆΎ.]W_744iK124tv:4þyEs}H$={g͞࿰cs^YTTTT\L2Fb^YRS߷jقdޖNM}s'OQ%HJy:5%uɲJJJT"pG#z{7K45kАS9 V7oVRR`֞=vo޾}q֭υr;wbQ?ڿ7D 7WN#X XjעsZ4kFscCUU};1Q7oof'(8YPs بMVaûXY>|_ ϝ"ұy KY^C1663kiS5rģjզ*[_#fn獫IgK E !|   FWRSSS_ŽEodfc##7!$55k#> ƦWeXIDAT.wFx Bn}z@Y>[45SS>]TB"K1O}L/!1ѨߧO|fև=}!$99EF}:P۔ i|>>"{;v0g?y_Kkkǽڏ=UX8#㌓ҿ ׮Zr<8$|!33,:v`7Njj"---NX,fX[KS`K!(85By饙S\t\xġ}]qq?Ӷ-(8qcRו%%usάB $D<a!cur}U@кUwJ:K#%';;:fc}|KR&rM8ȱO?Tw}Ne2!E>|JЇ(J g.-BXݲE?\{ub7#sviߧ-\d߁C#Bz*!X9{biib-̜5gX_g't9=%EQ)L::EѳEÌ$==ݏ,J Pu|;w3 ?~mB4>{NR& E:]uõ^-**~ۦгqq)p2eiii-[4WQQ?A7 55ѓg!Ee$BD"y%!$99%J ߒ̬ӋA[~ƾq W>,Ա'UUUٍ—VZ{,(x/?qz߿OpqO֮Td>wJ`~%\?,-m ti-9`Dׯ ާ nۺϿs'9A!E5kaP+Tu =mmkv%UܙaEE_9'GS1O!߼}K244Ud"]ޭw~=YIftC-7֜޽KNiۦ5KJzw}.eIII9u&T*ǿ9zGnޮ]ޅJ Grr$hiiOKKOT8̾u_9s996nXڠc/ l3grMTՖ-/_3oάl[,8eR6}Gcn},YvO>߼uP(N_d YaK5mjzɺׯaīW^n6}:,|5 SXyKgKn+\ѪE3#R.U'^hع3a+-v|27;f{\5;%M*jG&=j26}uQԉ -B2q\2No)>HP7KBSRԄBη0pd}! -Z44PHw K~ gO6g@(-R-[6JTUUJ=d=E9jTOb [+!C2PtHS2TSO}oVJjHDtmҦM>{WL |Ԛ6mJ |~͙MP< ^fP=_~|rзzIuwٽ\|Gv=8W^)*,z^o'?anT4OL.={(yӦMԸך@DSS?OO Qnuy"诨(_;v%'ߞz?8 &o+?}tgggj)L"Ύb"Zl@SScn䉓7l(#GZN8s8WA(((mjj،h͚5(:˖;w>%ɐn۷oPx%wFn[wuƚWmmq(կMDX,Z<(h,Dc1[644ti!K"":2: Mw0***Z[FcH(@ɓuXm 7 rr}O>$?Ӣ QEE}++*O>^vU|_|?9'r<`HPRR_B|ess]]mju:k*O3 poЇnS5!|>} U1j @ YoRoׄsN}JJJ-Zέ}ppPB8~w@LUeYF}:?DDrh2}ts-6[S,v.+`6iŊXLEUUAPUFFF܃ sslnâ( ((,{},˂ 8D19*眈cZX,{ˊ H󁎪rAp?xƛ.hҢBItEiu._9窪joN\D"NĈH,>Fc8&g;ʜ朜]#X,[)BD# D"AD(M 1>>nX$Ib( I6:iڈӺ~YŹH.,`]"˲j"ЦډM|K}<Or.̃^j]F"Yz< ƘUӹ!i u;[cR-ٝ!IDIZc/c,;bd"'*$J 2l0bjbiFDD (ʊrIjc,k KUlD ں6BsSD"!M$Zs.̝ښUU)s2f8S)0sW<~?yjo$)l+b۞6I{H\PH`(l-]$Yd1(O$drrm6l$QEQcLh4(J,3L(* =ID&GN~[$(jۨ-jx|ll,LH$"(4YA\NZ O(ڜ8oAvcQMu S桛O$2s<ӝwC6NM'9W!IR$9}tssd}b۞6I{H̼[5.l6IV<(e>Naz`(# 嵋\9ȅv4X,pfqEQz|,[d4I;BY,m}H$N<(ooV~UgEK/ $IN/9ͬRmd7m6?NŴӬ.KHO;1sH[,̪raZ<v]/|IyjKMtKiTZ-hkjjU&5EsM6Jc$Myrr9Q  "FNY,}讂1fXL&ٳguΞ=KftC$f6= [=(\.z'%IEQ&sD";;XVQEYdhd[,R(2A Vk ty :SŢ-+BXpcȈ2W3cZ׬YCDU{w>: iS868wu"~yi˛Fz`snY^ GOCE5%KK웶_KMM`ZB5d-h2Tc%?~|͜H$[Z,Zf?^YgzȑdATU=s̚5k3K53 ݍ Xsx<+W6;wN+VA /dZSSS(fTIH` 17൙xuz3g%Tf4dYj<מjheIƄqhTUmg4"Zh1ݮedDQdL͖'J&q):5Ϸ|pj=!‘j#O?x[gW:֗nh%iˋy,m\X*0S/y0Kr|3ce9&CrLhMFkii<Ę(vh4*33 "$n;5ud^aCNvvji&Cnv3")ԭ(ZN-UWW`0'HȲl0NMMSTTDDdDYX &|I'[;=kVIAEQEm`Ro<8LbhN:btJJJۣMED3 㪢J,ƈ'<~|}|E_<ܔw\/e}RMk,cױxbESj&"Xefi1;W`&N_gg'a=]c('O&ɤ؇~ ׯ_oXBPjozzZ$h0rss~$I9&H 0H$Fęh˫Zm=y}ɢ(H$p8Hn5,Dj"GB(WUҞZ@r.FUU \bA g,^쏒±g߈s.㝱Ҽ1>[QZ5.!.H2a&(mN-`&|sؿ]]]gSSSSS@ FxeeerѣG&judeege,cBfC]rypA6 N3H_Q%Irٲ,F"eUUՒf9 fm<c,ʹv"#hw.k?616GUh'v[_n ";r^>4<,KsQsfg&Vd08$)˜*IO?4?\v\/'Z|cLHůwz߼hGƧ 631Ah9~rf"ahp藯MD 5׭9(6T{j0t9]NR-v['e۴oBA\EX^aݾcc#X{+\[,e 9W^Ur%g N !/V,f>?ٿ,_.kԶ_Tl/e}s؟{d(}NI ȉ|mw>phgeh`X%?-I]qp~eP$|{H$֬Y_Ӆ6M[y欬䝿2]v邩=t7J|{A]o|,}˹MLL^Zƙ1viߟH$NEp &)L&8EٲrC,1K~AUoyhP2ј"9iϞ=}}}7Kㇲ,;#\U؝wI|>~>{v}sc?з!j?Q:wͬmZu񺚪m-'֖WKUjiG2:xg!b!h&)e:yCvA_(B` )wЮAN"sNēdԡ̂ uYp05[0*,,ܼyvVsN7o|ɚWy1矧Ԣ͛7'_-*RH6<Ii{H\Pif9,kN-..D"ZNQt/6sn0"6Y`0(ItsL?1 ( {FLL8{!"Hļ,]eQEaEc\I!M: UCCCCC>:ȱӇn+j׋/Z'Y.?=.SƘ(sNJ31WUAJ-# Q ̃5{2eik }.x8vx&&&dJQFHNa  QUΉYTb1ҕY}~mC5 ٕ݈ȑ#"D`߀jW"rGzDaaޚjUU)ޟ̃↙o7Y)^H}^ 9.k͟}q7m ee/1FD@0 G"Dd6,f7M[~cp$L.@DDݩ/ƦS_5UЇFSSS'}-IK5(_&|#DoZ5spmhڏ| m[tꍜ94ި\qۆ;Z}E-[Ԕl9ztjj{M }>Jrm}Sjdsވ#@ymwޣ/w5Z9˫i 'O92{h4+ͨƢܼީp8\\\ǏXm},im=x%9DWeggRl3ڿ/YtٚSo]cu+#umw= Pr}ױMF[մM`ͪWGcZi 77zZ"2L=_o]]]DG0zp˃F>-[c=p4 Ӿ?ǚZZZAǓO<ۛ;ul{(}{zL&}[__GDn>2}fq}j+buL%3'x?$[ͅsUie1HfvN98ۖCDgw}yvx= \ -q1}=n_JMݺvڋEmS#pSfI.bV/[jHnήj5 4h>u׮YcL իV1 g0fX,??O;Cɴ|rXEEyQQqo_/޶aA {{{UE]v$I99thles3c]+jjj,//3rj},m_r\6Bf> @4c>s1TpdVK| Kcq, >\d+͵ӣ#SiDb1ٚ]\mcӞs|%O0π߯؜Nid{vׇG VT>[UtAw’Whn(ť3gd_\oY6U#z饗*++v <̵Ym[U~K'=^*`-d6#UUSoPb6kU;٬`0Y@W׹_eݱ!Vkr 2ƾܻ_5klXfKr:f X,Z0(h, &ݞ|ivKO[͖Z<ՎL͵Xen}1%ސ_[S"K\kΊ%'$pޤ]J шd0ಛuKy96Q&ÊrƂ$8F'NӡU/8j,g:םܾۖﴛ;:[W}vRƕ u%SAm7ihIY^ӡѩs%I^QQm5Ɔ>=gnm87%We."j$߱Dps$C2&?[QlŮUU;HKMĝkCpܐ-\ʂ|%gƇ"ʱVTXtP:9Gd;ݾʕK@?0qh#Lk.i 7/gnd"vwwo޼Y{IBNcX~KB&Kf=a ޞk*-[e0Ȓ#"_x"~Na#=: ?x'Be.w>{TF9J:YOaw]ŭXO{EQ`NM9YpNɱӅ8眫gw}(?m?zĩ>Uu#Gb}埍#w.*ٿl29NviY^"33/s۔SdW^|9=+瞍IɲuLcລ|;IDmS8Ym;چԗd[1n?D4ݻfkO] N-Yh4:|8,jX__liiiY,˫?rfy^i2Lj(5D,,/XYG< X,vUVVUU2FMMAx^%+͵:~G(ذ'&ٲ+VWUf1?^-vUUQepdc9CgWsb:TV\dSwtht:XYVF<K${MDq9~y`˶:u%'vx+Vn y‰l( lGr˪ŕnϔSV4T~yXce[w결w,"NDB6gKRsEs?x` VlFj߭*O{(455 x~U֭V6_Ή\.3O?m0y?۵kbyg֭]__P ?3/|iw~\ׁ<Wh3\dMy-՜36O( M Ƃ =[Ԝھ1n'U{Ԙ(w~4(yj1AjM#ԶpĚgU9E1ј/XU[802j:FLLx,&KjP0B28lFY U!PQ""Q #j"SRED1r֣]GCd s]v5Ǖ\ƥD'>:ܖ2rK\ ͂ rb&=6:pIdQDɇe1& ̚MP0!γ+(lX$-Uk!7$A(;[NFhpSZbQ//550vw}]Ɉ5{M}Xd{ɠFQߗ4 ?nkaayY~祗RKibo}i7ws6޾)5zD'Oי$A2uOE|#XT1" \r5Kwxd0iV?uD"~q!FDĉ$)W9OWVE"-'m΂Q_`Eem"wZs.Y@hU 7WFlo(Mb?TWUI{/_贙?o͹G_>}" MjAN\.}Wynsf3tۦEQ_v㪺df,͜AQVWeVkpK󮟟 D6wmٷhJSt9w-F"{0F[(`[}=s{Y *_KXxkNÌI>;x\" 'TuYS_`Sqn}deZnm y({ϗ.[g}0XY1.̽I6S%Wnn(.^i\QdIt8L`)i`߽>ea6qE匱E1\n0 ?$n,lo[Ai?^m>pF}3+\l 0cz_f=̳2͙zKNt$.C=wcJ|ٶp`DI=Dڻf~cCʋ{:FBd,=`+p~gDi2G&G6# ;=5ؘQ2ŒT3ߡ ɞ%%.""N-*,,;ϵWs|:mP4D_MM֋OOk`2K/lEg)´3cHpڪם]3 vBA"?'n,wB}-4;B)m~ӿG-%%ũR ssfi7+$΂2%7vpgjˋ%""b}3a ۉ34n?>}fsv.u y<=X,vLD_8`eL /DY"z볁`k. 'ڈ':;صQ7%Z,pQMUF}2~cmg+Wm">?}_:*QKLKeñ m]܈=m}>u(.]384U8ܽgjd~ ZÄόw{kzl8m'-mm㑐Y fGeO3̇&WnlW_Յzzz<^޴BM`)e;l#D'up?{b %_ Fmj.ߑRn 555UUU`OO.7ge f݁vTyӊcdWIMOtumf4p),,GY__2g-yL.=67mV0>p-~oiABT IDATn###--GQ7W4/]$5xIw:o~w룏 ֮fҧ 4Ǐl6޾q|[+JvL&" pJͻD.f߮$77Q!o |Ϟ/{lkCC槟~_}q""ښڭ[5NMiKϞmápMM?f08wi9Ŗ.YZQQׇQO>DeeÕg[linn^feem֬^u=ѡC:p0dee=IgGgBI|祗|+ܠuwMwh-/]lcc0`fIH !@IdI}>s]3LNL3&4 !e1mv&ylI־ql!5z:wHp144v332B$uZ]gG'557Bo}̙uօz}*j=gT]ʕuy-Lp8## /mĖ7>aP(,^p-RbR&?{ 1wChn !B!s%D"ZL ?_"ҥKٻvZhiQ@QQC׬Y]P$22$4/iy%NH$p86N\R,RD55%%U*(X|)z [f`Zp{v{rTVR? B!f7Xq) t:b1-H Tjw8B}757M<B!HxbdXΜ>3l&0L4M9})))y111۶n;}S֮b!4[v+o4m2?ݷm44Ec)_B!B-z}Vf&S(J?486.J"C"̛qÆ}6=HXTs:^H S7nپQQ99IIoh_|ұ!4oAls~SO?7y!p8N>#2v굼<@ŋn 99ٿSCAArrƪ.UiRl6ĈE`Cy9BFpRRbO'Ir```p>oxx8..N*(oXHG!GGGx` pBmkkcW'm EM3O,'IT*x/m|Wb8qM"?qKoGuիcU*8pyo8zm[CA!BGn\.ĉfE(defګ'p:+V?0**^8tb bcU {g v}_6jπǢE8Nee}8Nzz-/ZV߿_"ĩ㲳 HQ-\.W͛7w޽^?5RBD"NOOgW'mOԕ\a0RSS[[233icb`.]mz}kJJrtt̛{̙eI~|b[ e  000ssrh7o^EE锌4!B!f¢Bv^6ddd1H\lP%&:/ z`+q$͛7o^x&'%}7*.lYMMɭm/mL L$Br8@LаuVb?/<*RTjj M4БJ%sv3x5-,Ipt{++7(z_t FT*`r1t.[,D"NjS3.z@$F\s9\^o" ?|BT*}CF B!l32b/\+Bl(zF@`v|~BBŋUEbkkk$IzZW_-3+3^|Y{a46M+Wj\p8(dk0J"vyX*tfB!zTB_pB!O~l3Er/B8X̬GiHӴVt2RzuErlY& (##I3QZ44Mgdf:ݻ|>Db TJMS:_leeUUᤤ$ݺB!B=*`]B3^07!to۷J 7vYM u]@74lܰٽ|ngED 2!kk/ vBhKOOh4bGGaBF ap|v|>MM͒%KB=I$bB!Bhn+,dISBN[[4{8R9ֺ&H D!B!Bh.yS+W>r%UA!B!Bhn~J!B!4]T}1vn|宦&v6~fZU4A__ z7ݱsիWUCG!B!z?ɏC_<ϿIo~㺎^]?Yp!_o[oiRSh4~?*)Y:tʕ/ ;+{͚B:|߽nBBB'/T ʧ1 lˏUTTL5(gYУ5}622z!BR(pAv42isKKNv6[__TF2Ndd$Fttv2ћ^*KZZZ`Hh %%eAKg+nx~CJJ8}̟w63*&&mxߒ%K<.sIⲲUOQaa^^^0ʕ˖-_~^{5.69pfiLE geeH$ڼ_z{sssvv6\|yݺuLwܜg+ï]VyP*/RLttWWמ{?uOz9996??NS" FS}AŢMOzxGz zjصwޏ>*++ϝ$/_ܲm#Bwn:VjLܜ@ iii5p[ak8l V~}E"JUZ111"ϻ~F__˙X=UWW.8[\\r-V˗ϟ۳\]VVZZZS]CD||hx< /gi8w… RiEE|G^҅rs CYF$^~]V^~7^_Sz}iȤMO4]oڵk;;;[Z,Y"?E[^ޜkW`0888er8zڵAL244t_ڴ)tALv]ӵ##v].WDEEz꩚ڕ+W@0\T\lhh%77f565,^ O!9oƢEŧN4|Z}LE~~%*ϝPS`>+]^"3YYjTzo>}!;;dB>d9$ ŋɉ^ba$B!B$| XĢ'xB,5 iyt@r5TAZzZRR $䎎N ZE? 쩬 d2ICҜVI,--%~׻$zFi0@sKKqqq4h4Dfi˿~ FeR&z&$$0t.CQlŚ4 h4~;55Uնi6̨pپ~ Ц'3=WXr%ɲeKoܼAdrR`x<@oN&@;"B!#Ƥog++s7F~~nܸ0uNhlt4 p8`h4axxHNq&MQ̍XBqá( \.g<O foOrnw$&&ZVۭ_ַ;:B'g8Hq) ONT" Λ?ɓ~k_7oA˼D,^XIT j;600  #&DY!{ 2)x^r 4ITFi_\&D!B!BU:vdoJg9slN^#FM:,M4hu:j].8鈧gH$^RmFӣ7 9IIuu@CddVmշᚁ"QK>T(Jׇ_H(LIMyfK>'''T[ϟ}k׆&j]_ߠi@&);_[7ty<~hYM!WF1vu[[323v{ccc&uiBw7B!b]n@dnn r:*y$Sшn޸9hĉ(~:Mӝ]]]@Dg**~믙 ˉ >xW?p\!qctTh4Ϯ_ʈMI3AIb{qp (((֫b-33i rssoܸ}o$RI…CCCSФib~eΝ?w\֭[8p!N[\\ԟyC  $?  @^vuu;Dl߾U訯oؼ%M"B!#_[{Y(f@.==}b2>}7^!4SB!B_ ߹/*B(N8E!B!Iomv!Lc>#vAxWvɮ"Bo2竩[B!,2}B!?_M݊~?Bh>zC!B!4g\tHGwTKA=)&&:2TA!to0zC!B Ij23}6I..[GF0zCB!B=F(-N@0hXܪ.B{6sdfh4oA!B!t(2{@@.P.͈o.|mZׯ0ow$IxҥK6<^|{y233Ë3RBČc:)LB!Bi##n'TRU$E !Iu\lAR]]yYvX,fW^k.]d6[BAfFfY*@cBX,߾)))յ{>pQqqTTtCRGL3s7B!B\kQ' ]ґGN'x B*}+//ldDvkjΟ?gNgٳ_|㭷LMM5L&KV&z3RSS!l;{`Уp8I5 !B!f.*⤤$V1&H22}-$Aح"7@QfsU|G LH$[lmjj*?ur=ܳ|>…ni%˟{v}||Ϳ:N˛wYRRRqd2?>qdSSOJNzx<p`?x_&vwwojg|Tt:8եT*5 s8M'o޸)JVihCCCQQ7l`]^il=H /oҒR]Stkmk]llرcgAA~nn 7n8SQAӐK/E(K:rhWw/v΀fD¸8@nCQFo!B!4[EGG;w=fDKúQ`oWȈ H>c vǐ=#ɤ8Umq#;/obF_EůfozLL}VV.+Ꚛ_{511o;/ҧ>ȑ#ox>^&Bծ\|o޼ d4ssr11mmj`02cB;.J~lyjJ*\~pvC 4M˖.]`Amm޽~{˛hxxdt ItZ,V\ezjjkGFFrg;j6;bbΝ? g~Zo۶M~ZLC K!B>LjV m"hIE+NA n9ks r$(DᤤX#RRS#[.]FQޭt2TFmll*.^(|ŋb__[`;yvEB!I6-Hn7IIIKi魭"0B?dKmnnƒ$YlAp VVV.!B0竩[BΝ;n,A8)4#5m 4-@ )YY\NL. 8쎖@4oluTt)*?\hЖ8{h4 6=on)Gq:.+/o~S^`4.YRL62p鐎Cr3 <pǦNA$=7s-5%e6K@M(*U S\z8H(\T*evB3B!B(T IDAT,4Nrs"V[Ym 2s l6"a7J"9N2\cp%slg(Hr~>7nRQQQ"5##Pom[HMM~P \v-=v2nMP.U<8hbixpKb!4L?QIn@!B!4H$ hAAr\n'vܼlHIR8Ik$$555E۝l4FãBl4q*U zVV+I 5MִKSR 2t(VWW333kjk=O0 -ODuu5EQ` xÇ|>ټwBjpv:D"Rў:tpKhii1LP]SCQAͥH$;Bh F!B!*\ l@ZBDW$}<I[n9rrXmXƍ9jZBeKow@O~ o*))ٳgOss\.7 oMjʳJeELJd2.XAl۶ȑ#ϜrZv S\^E<.rn #"!!/Fiӵ7\7rSR׬Y/ H$Rͥ@icO8y}O(Ώ!۷J 7J|G҃+ܹ]E!t^fwh]BݟAmepEB3SzzFa;::ta+c>!udAji<*h d - #22Xdb6:z;|p9̓eя~(:::JQB记pB1ё1Ҵj $G()4VR_sX,@ &::TU]JJJb֭ݱc痻vmۺᰛR JNN&IJ[=Bh !fPdvauZB||>^aD.sX< &!!1%ennxB!{UB߸m<:EEMjVlwಞ]B!4 ͏>U;'dfh4oALΐKBh֙ԭ!lOӣE^P吡>^⋸swqgČ\2an+a!'GoOpBh6ޡ!ӊB=VB~rJJ]ːbKNH$>m>gGo+Է^-(fpXڮUi2bSu6cfFo\<)fH?!ch]AZC}\-I:alU V+MƆkxBXEoзDf( BDŽ3 ~٥A 9n+'yҨ%J&.J?qp7uٍ+ ACe3 ^{|o(Bax7NBLOByPyMjHPH$WLA4 GޱJ/%4(R۹+EdM<_}uZ^i7_ 'g1MszDK2^V[HDL$#Xnvb(Foݧ7zcWD 17r7BU<.G*@o x\ E\E6{P(HJ $5 CHF%/Jh6XP'AalEYڄa}R7$E+rSMVhTJBrI-+sZ5z@j7Oy")eT"^qzXW8)):&*ij1 %iC|.waZ)ֆAX9O39FęQ#$UsЈ˓s93 N 5Naq/4wQO0m |.Ks/~C=WDУ6W`~ۘ{ !zQe6 ; x6۰Twz6wKH1Ib&V: ]6<~ãVJ =X-Hm8ܷOSGZs.GR}~/~'9Z,3ص6Na>!#7:15hnITxqZ`cZpӻFn/Ә(](Z%dnoB* ^4(Ă!U B"4w6?%8v!K=>ˤVʪZn%w{(z$_YB1?e) RCri.TF$":yH)c0qy\$=t ۆlNv5KSEf;]EěJAlw]h ϡ#eVɚ- L!>>)s~TBrx=:1nG)4g緹b>o\cFNIxl:o/.Rma?1J~f{7lfp;1}V^^^VVƮ>|ɣF""IYФ|5u+Bz\FDJ$H.a@ȹsMQ.&.^>bt Z0=\g1zcw ̰ BVƈNHlRm!cdB>  ^!.wc[sc%nzvuϥI r9ts깛!49=O~/q{WإiF߬;wK~[#bԭ!),&e갚H4I3!Ht]p)$43\qbnlvMX@84bi"kNh '#$!.?}*>S$cDR}Gڄic DѷI <=lwk4DĥY㎙ %;~BӚ؜w'iq*fM"4=!,F!ŤcJn 5lNZuT[|L'II!c G0B{E!f;vCr(*h: ʼnV&G\.G,eͽCy)qy)' X{ac:\KMqhdѣzLڄy@kئ J&^ ^rG _M[oQZqz.4wQ +,2zq9pX4ꌃEi^NY^_KT_ hSs9dz\^;wE@cʼ#NwB]k>!tgwx<^AAArr2A===`  4]WW gLBbSBh p'H $PUFy$EW"#@{xt MMf6,vf́pݒ@[X!v׉k5Q,ye.V(y;o^Gda'auz\iaG!1M=v.vl|o !{ڶ?C7HQ!"LժUe"t316c6 !7{&AQ2_l3 ^<E,ՍUgcSErl֡nP"I-dF=p688888lrHJJjnnz^CX,I5c0C3&[!BsMŻH./K9- 4 yDF4NBEEE\.F뎌ܮ8aN(}C!EQGD|ʮ"n]aEoR 8N `~;i1ĥ-dY҇Ǿ!nSÙ!BYJ$}(|ܱT\n0]1ܣ n^@9 pM!r׮|vذa??:ujbv)sҿNBn@qDl[(w=n0}C !tȈ UCI4@pHRv[GGJH$YEPlڴ/h47}kmm=z-[Oa +`kײ#fmoXŗ_~9+3UDݳ-GC ;~V%0!zH0}C!f*Iz,"x$ x7ndMLߞyi^m6UL Hukǫ[Z)ozLL}VV.+Ꚛ_{511o;`~' ;::vKVֽ<"rϞ=6mZ|yx]v'x"4Ba¢6;4e~Ǜt6Ӑ?t!u^LEo!HnܼQǫuZ-L?Ts;yBInjZ޶mۦM 55uƍ/rII ?y沲2Z =TLƮ"BV*V;-K}r&$'dxI.AQ2x>~\6pL;^lRMMX$ [ZL]Iedg?0@SԂ ټw͛7nPZZy{/=1- tZ-Ir\RXag We(#asSSA ˖E(\.~aBH$rssZ[. %###..$ɥK0y f6WLrH$ .<}n/--hjj:pZe섹7Ǿ!B3ANC!#dMDDD[C}$Mf )hl2AV:::.VU]n& S@'&r--_HTlNtEʤu\l2veN8qUVnbT=k6CCx!Bn퇣i޲3N^fc cT*f:u,PTP2F</0ۙ>z+//1JwvP(,))q8z|||AAD"Zg˖-_~%ҥKM&^B j:$%%K.V I8>>$I\QQAtRRR~~D"lǏx%%%QQQzƍ3DEEd@ pʕ.xϝ;tRtk%ݤ槞 "4` =S!s"ɁV[Ym 2s l6'z/_{դDg I"=9gH$9?>qX,v:]xwL&S||<:&>>d2g쬬6駟1E$G_jg@$IS}hvGQbbkյc@$oVkzj`oG۷og:::6o~)v } +;wdW)N~ӚB_ 'o˖- bxժUUUUdݺufY8p I+W 3gK:+W&֭[W^^nZ.]r^~s)#"",\._vmeedJ6 Z/ ׯ_1כX,Df9>>~ѢE{-[ UUUy<Jˌz+..v\ {]v33),9 aYg⧬{_[{Y(1>U`UBmӏz{_CCI"hɒ%|>?1wgYdH$GvZIIX,!Nenh4nR^'x===z j8!Bhc $>s 5~ z{{1 СCI 744tAV3k0X_WVohjjbN40Q0}C!B }X.|3222G[MJ_z?s|>l60噁0}C!B|}C]}+v5aw|X!B!fY(//gBo骪f޳g߾Drܤxa7S[… O<"&z'_N+ֻs8v] zMX4^0Ho֝tTTXF6ʐ 9o0։O5VԈUMlz}uD3{Tq@.L:ܹ/[Ҥ^.]P5jj2Qժ|n᤽l2~7Sa~Ζ`H 雼 # I8#o*pQPϞ=[QYDvGqX͖wؔS(%%655jmnn"/o/Kx'ii{썌.S88ɓ&M:zh{G䳉-Z'"JNN:pjkk;rHjO]unI_~oIad意B%/(a87хm\Bx2_ h_|͛[mAA+Wަ4<gzn6Ѡ `T w// Ӟ={RSSU*I5ϜGիWK-[ YaX׳,KD ddd<_PPP\\[qd]V^$h1u-g O4@ nKd7B11116mh4/X,=e\><FŇ /\0X,..V466"NF́hyPphQ1ٳgy? CKKܬ{+#DC+!GJr NSVJKK%#0|#﮷lyijJ%<{ǢTlh@q<܏w%/ PKK`{+ 7MpHC(!}Go ZVŕV" -n@8{UTT+VpWTTdXz+BwP֮]+]͕Vz+BwH.~@ U556 |ͦRT*Dh: Wɐ(Ldd|SY,o;O,O99sx|llr8p:hj5 k(tCC8s.w8|l 8aáP0.quuugJ޲%=H-oO8sQ1gxwxˏ譥EUVUn۶ٳS544l6k;zʒ2(L<:tpѱcj, 'r.ývכkjjX֥RYT(z<1 ?kC+#GZ[eX`IjtN{{4 "~%sO\,,:Z}3|FM 98N?8a2c P0 p <7zC'tgt_ L8h)((d SRR]XÅ ћ0眬].eyWg&np.w.1$muCڤlb) e R tAX,.+//… ӧO'(ϗM H`T$$L'Y8{lii)o2u_.FA!0l ȗ$\)| .뮛̩;j'3;xx{yI7oXG/!__S)Y-_y>44T^K]]]ssɓ' ~~^яm!DV<\V^myr* 0OZ=yo5ڛ[mB;fyt>w$&&O}4/khh+9]R^VTIXܹsϝkoo'O-=Eu@/p~r78 ]<ˣޜN盛,Xt7tFKYY}Ns8ѤmJD>>dbccvU*++cb ӏ@*<7zA0bph#/xbcV+1 `).noo'"oosvA Rf Q!"x>ooGGG<罽QK||Ιs(ΙsYwU?ʪ*mT*q~~~ݨ =a C.((bd0ph+0eeeK0F3(!}Go%|3hyQ*뭬L^vPA;s n0 ddd<_PPP\\,CFX70x Z`JKK%F-z ޴iFYxbillOSD$..N^k.8,..V466V>Lcr7d8{ aYw}_p%^6Rreөjիek*0P]aLWG` ;zJuT*e#he8+CjӦM>|`zŗ}___;z&---3`x;Kalܹsfs|`ƦPpiiij:...''G> NFݾZ{Gnng}fn zO=MD}݅ + "O=$seeeٰ!888$$D>cǏ|u`ZVQQa6WXq\QQbπ <ޜ0 u۶u>Q(=bپ}GCCZ^$!a ˲/SO>T*hƯ"##OX'W̞oں_W|y(/Xқoj}iSB eL˘?jj4YfܵfE":s̮]́ˮ[dBe9eewZ%n+m 0_mTUux>cz&/5!-**O*& Qcc~8ۺu[ņS+ؐ:i7[}|._w)^|yTT8`XZFD*؄ k9}n6WtА-|jon[~ ! ssٷ~r;fzj8ܼqWVO~!+M,'UV1[c[[[~RS::|x^f5,UB&s̙ں?(S[[+ǹsjk®3{֬ի﬩Yn)00--ܹs3ggь`t<ޖ0 c0 =lJINW%L>111,,T̼**?i^awC`, #S)/'H%&$$&$ȫ]1 3iR<z&z 0aF811188H?*:0дb $kjjDxĉ"ALLΝ; /.́K9ӦU6m^vuy.tZz^\mmkllڷo_CcCLm]-]z_Nϡ9%00pݷk%Y8<=Tjt/G. ycDu3UQ ZĔn]w8(b8V[[ۄ"61 ߙQ^ RSS|gIX썯ηY\mZ I^@mܸ1(8~^:s:VyJ葯jmW/g_ e譬|NF𸹎"  "BaT` ~r"//(hGQaP8" u\=JLH<{Ǐp N:u`(aI IDAT0R+{|2FcEe]3xSsj%"ɤVY(44D|HD^—#&# NUGpg"xx*WG`ܸj;vd5s??^h4^-ڵ\#;{^155ef^qW;)))Z UTT"^竻em1WXͭ6[Pp+W* 䆆ʪ.wp͛7{'$^1\/U&%%wzR"l_}nk̫2 C{{|K a[ٽGo0p22mvӍ77믿.+\yÙ`͚5PXzڵkU68EQ7!?xWCx` KKKL({)$\v K870Zx .A#o8Lp7'(ahpS`$ y̙3*_!qq7h<7zт xC+JKK%Ap o0%OR]]"`ly &r7p\)_1﮷,y = rQx< x `B 0 0 z L$B Ɠ|i Dԟ{(a(ܙ`8oS(Ntbx{#=yͷ/^ lW_}'˫Dps7$n\>dphfF2pѽ[[W s̑RGu:7Դ1z+(,%wczۣ0AfsRRRMM }GsٵkO;hjn6+/ &?=8n .d={~w<g-X@] ٳg=#kO##23RSRRTDTXP8c "曭E'gTtnS&%%%w~*ʟ>9R[jMrs  7tgG8!"eX b7|SXhhSSӆ 𼼼?x͚ǔJ*=W/lw{?444))E'N?NXXؔ)S{h4J® >\]]p8JJN_wW@DFS``IIIRRj;."2eE JcfΜ)߲+׭]9c#Gφ|gI7/"mЛ"9|B˘1}z0EDE'NL4Y>tڴi?|ll,]y `0L8Y\?{,bԓ''O,ݛsyaҧN=vxpppqqqXX`<ϋoԔĂI8a4&&l{{r8;|ƌ[lZ:N2`<;zʒWaB)" 0}/2ܹsj'0wb!2 ޠzUXX***f޽{7+n$̴ٛi~%K N* "Ԕ{\+f&"ӹ{x-֩VTTTKKKSS|: Wҷ?b641 *iG[ 9N1/tjZ^KIIq8.\ ܽ{nWT^^^ mmm)))Zĉ¶JY=Fv Don zam|`m_n2mBۘզx!}dB%2n L2QRRҤI㋊H.\0>>D<͜93((ѣlhh2 UVVv)"󍍍yyysQ())))))2#$M^1..KG{+Ph4%FQ2V܍'d+Dd- 0nf3uuu&)55U(OZRRRUU5eʔhV[[[UUVUUueggK#|M^-ohS} HƎޢ.w%1w)^! 1}OFD*vX5MD?9r#((H& lhh8{ɓ'v{hhPljj?p86wttHw/8ʒ`B0-ҨKz… .\njL(Qh4zyyy{{z"<AՊ///"r8Q'N){yy)Ja4 0&*C({;z4 a ldڌڄԬ{v=S^7{Q܍L&N'\)ܫ^@DZ688Fas,˲JDqӨQz .;rlih鞑 MV<_\\Y[[jM&8{,EDD O8UTOv\BV5kBjUUU=;ZR__o2fΜiz}NNpkLLׅ \eB6> lihX y8!>%hb gNo.g[ǎkoo 1L.B&,WTT:'N۞ՙs/\)+0K~ѳg / >ZZ]$3-[wWT{zR?XnШ֨Y()a㋯>*>uTd9gw_=/IDt4soyyKM[,:bhƴ ?Fb֌;X6HD%fb6n`TJ|Ogvv0<ȅ7Ar7"1sfhh/֬ Fa- 4KKω[4}V^QsޣDž!~ԔƦ _lrX}{ W_uoQYy_m;3gL3EFQHp-M2I6 `jjJyEʼn>Je{GGr3W1g߁FDGGV]GvIquu;vuݵY--Ot{Q%շyJ)$#˖.f6oݱd_=:}XHȯ/ԩ)bֶ9z^/֛ظy>_ȘveeP 9zʒM0FRrrBx̯e]N!}Ff7lMƨsˬVЏk=?cz0 }GGGAщh7,(7)iJxX) @(WTO/kڈVݦv'OMJDS*+'x7mLsPPlW yߠ7b||ukk0ߏZ[ۤћeFDbG +y GʋF6[**::8#5Q@aZT* RID8"ѿ׭ dZe@gKv1ϐo.NRj -5^o]wj:j[[% x"om>RVP:SdM|@p^ӟMuOߺW`QcS39NC]x[~&"{^p8Y}LtD,t\==9W=gXٹg_Aщ|}3g!`%UZ!s!" #@ut׭p]wDF;_~ C TH dkmSRRg%{W[VAOWduXVs7۲sf-Z0-=Mݹk) `*J ^1e٣yO>}ŬD욬CG~߸{;-5RGD'|_|n7ZͫnEY FJE+WUk֬ի׮]+„mhMO>C˫inYQ(uuu0bp&[j-V([ IDATMg@w񱱱bii:://w^)覼62 wI2 @PwgُJdh2g|ѿ{NqޤmnԭMܤǤ{{Ʊ>}/>AFGojzڴiQQQ TVV9reYa222x/(((..&=Bv K얎v[K>~m@Lw޹J>@DD55soV|Gy8-moBE%%%#%E~MaaFqWP}zFGosF^y[noTd/^PPPXT{_X}vfYn޼̇|PV&Pin}ݷcwmmm"r~6-`-Yr(E rc*O?v_qFk?677… NJ2h[d[ `Fm{&S`sK m߱#+++::JPr-'NC/L9sݻf PWWGD~~~ͽ o3PUU~>>BVDNՎeADFBo0Y,?"9{.eZ/Z?tou;-[&ݶ!(`4J(2juQC}+R "5\8wwTaaa[{Ds>Ky=|gk[o~6Vδpc7)јcل6uJZCD=[~@|[醴?=0Q۹㶢Vba|}9Y.55U>zw0'-==]Z|W[v-%"X[c#"-d7ut؅.*ۊlZ^rkԩǎKzۿ7=}3ᇣD` 喛>ٜٳf͞5ԩSO?i闒Axj[[q E/h4>=f=='$^|ǯ F[1{Nz7 Wy[v7邬`d__%KkVTT+VpWTTdX"W"i W蔾_D[l.CֿM<~g_/t>zòl]}}C~ƫJtt#\sҵ|2%1`φ Z/ԩi**66}wtt|Kfg4^|鱟"55}۶x ~~g/^qB-N{IW%Kٳf%%%93gϚM&_xxAw8;z^O?KINj׭D:ԣKBBC[ZZ'S32 G3NFzzӽs< o$!q֩ !4<(0 B҄ȉMl\G;lzml{.}Z} ZʹImyα!"ooɓ'׿j\لۛgZxǎlل{ロu> S.o~; YJKKeWeUn4)^oǶ;^y;v<Ѓ-Z\ڛoYf̘Ѓ?{jj,Zל9W&&&9sKYhٳo{ߏj79E2{~_>n ;V17T6zlg뜐un&8Q0C8NbJ?~CC,===**jϞ==6 0TZZZXXrm֬Y#/ իW 0 9xB_ϵ_UȤxh|CTE)fk)KwԂ1?amo Ͽ ˆ谯/lP(ill1ϯ+`U8s5Lp;T]SmLLj56wߝ@UjJO_އiiiʤX_0w8#F:\: 7cдbXrҷ+ CDDDyydJLLjCR:n``@Pe2X=v#?d@vv !F8z++++--VDryq Bc'iCӢi_{ԕD__|p* <n|z 7MIMI@3 8|&&M'Bh L>}(*##eJ YYYiiijϟ?9|:L&MӫW:|X,ϏRR?RJ:n׮]!Ɇkkkm6[aaZV֭knn>{,BGo%wLЕ"n42Mq)9>Z aYK.6U4HRnd 0YRYh}2}BӍbdr\p1Z0uvvtzMRvz=hZV^zz`X,6[.GEE|>tVܹsEEEf`0l.B`HFFV];>'X!5n9拡n"Bhj5n rLvq1L*J,t:jXbVZ`? Y=rӧ hZrɣGz<R(M.ZBdF!4OYcV~Q!Xiz$M,w ^msBӖVlSϵL&26l6d!MQT\\D"=H"|@ V{:˥RzII L&s\CBl6BDzN'IJ\r)6 v*dJ抚L&τrzY^|>Ri: @P|Gl6Rq\dv<$A1af?2fY% _kk+8׫jn7fXt:qfYpbG>jts4T*IՕItxx'hfYVggg_tZo8d:%BR$zs7rzWB,~~W.+w#jjjnwLL^of(~d(n4J6-666 3OVkUUdggp? 666A:!7tCp)Bݰ8cYVa#&A1ԄB3Bgg'Y`0F>;# mF6r`GWZGyΝ;wB0zC7Œx3V.,!t5:+$>e:Bh6 KMMu:+OjZaFπBh2oFV iM'Bhʐ dP>fFw])@yy~0 YB.tBɛ8z++++--V=Lе68~)dB]G^$n#p&9s̙3*B4qv]r7Lh?b'C!4EQono!B!д5qЍ2{!Y8cYv@r0ChB^!tk񗅫}eB`虧?PstuWWW',!0zChl38A}0nC!tl0MC!B3FoM@ ! ۘۘP;\j4!B ˃9B)e !BhZ[bb"9켸!Bh#˲†tCz]B!0qC!ЍЇӴ4VB|7zC!o'BcIl&y Bh*9j†q%&&&''+`0h2Ξ=Kc4Νwkjjjll4BSH$,RVV&,!BkrGrP+bZ,aRRR͛'z{{m6`XxT*; BMG K!tckjj/^6\&߹amT*7ndd9m"BhzX0oEedd,[YYt: +++---55izյj:!!a2,333,,eZ㲳i6YYY$I^^^TTT ljjBhzCAwmܴhw?m`0Xw'lyau"{~GV(ηh4Eޮ]%4bnauZ0l&,=ys̉z,˲,dZFh$}3gN__EQd`]0LJJ"?`hnnOD!4G!ЬS_mv8q=e& PT"^",o_]r!t# v^ 6戶1BӊV(b^/_!̛7o޼yp~iEEL&ӡC`pp0***,,?eٴ斖ǓRGDDlnmm(*..`0" !`hȤV@rR4;dxxxw޽q֒^:~ں7}R;v-|m]wj}?9][k4&.喖=yK}axx /@Aϗ/_xo ̗̌~4 $taFi>Zf2M@n2 |>_llq|||rr\.iDfD-\.LQD"(JׯYt#BѦoH B= S(##C&_oyaZ ii~}ˁs SmCTaGE{vhjj~xWXR~o:?7_ӡGZڶ!EQ-R?}uG "n$F꘻!4L>wz=#@L&`7" vc))h8?Mp >8ZWWG*,ˆv@!$0}z!l@M"a7=ϝwү~mۅ=NO= HкBg"hΜ̨^xbq\\VS||(HO6#nw)Zx -ZZ[[]qH$Xh4qqq&666t*BѦoBSI}g>{6;/a3@\l,!7b8\nAzg/!%9^7lTo!t'Mߕ&v@ PYY8NgKK fZc}x)'OJHHɉ !4;!^xxƚuw,+E,jt]d2cmn^~(yd+V#ܳB?O`0z mZ'ܹscz$_]]MBMH#B݀Z[[kjN;effD":_ &K.Y5L;wFA300IIFLzTN BMuuHMM٣!ģJKKUEl6~Bwwp IDATD"7wS(.ZQ+WY&9~GtŪ"EO.Zoy-Zxbn0>SLF*4MkT0 a$( Oz%lp8@ ƕT*d:{,qm)ު&ET s .SddD"&cbb̙P(^@]]ݘˏ|N PQQaۅ!4&s7UIJ8nxx%tLEQ'O ]ş}H0L0^E4MHԠƟ.JZZ,bV/-%%e޼y2f ŋ?@4 ICM~,$%% /;;;66+ H^6grbccθ8aBMG!5BQt:Fh"a5k֔|>BAF \]8 !45 N/EhƱX0oEedd,[YYt: +++---55Hܜ͏;B(3 4MӧOd֭[g6}tBxjZ^n]sslD퍍K fff&$$0 t:?R<8gJ{\F0LDDDwwZ={,4zZZ~כ:;;8 cYģB*S(Ei4ǡe{ٳg^oYY̤i:::ZR  /BYNXEjXS Øf@gg't:`0NeF#IrssbccFdjll|np|`0x閖rVTTT^^$3***''t:]~~X,noow:.(gN>gXMIIIIID[ZZZzz w'+**RTdVx_+`0DR7͙3'..nxxΟ?`0477dddk,˲lSSj5!& G!Txx $鬭%Ct:]07i8򰡡pժUnɓK! !4i\.B搆. I% 6mii f922R,oNܹsjhJ$h"X,>vX?yxrEs~NNSUUtĉXe>,xgۏ9 d2Yssٳg%Ɋ+B`8npp񤧧 avK$JQT\\`hoo7L(u!B߽{7LUYY)\;v@ pȑB]m!4i6jGҐd*d[xxܹs%H$"==^$ISSSjjjQQb9zh >>99Y.9E"% 0zC!Bov߯U*411L&,A  klllkk͍okkq\`L&;~Xt))DOP7:|-H^J G3$V"4=΄ܘ*p|Yֺ:RaYV.cǎ1 SRRBBs !B!3J0zi566.^xppP*zڪd2Y__In9%3335M\\q :nxx$SdU*x qqq/ FFF9NB1<toV,B+Jmmmgot8xy?BO>O !Z-ihUUUBh+,,D X,111†Z]iHDӴfkkkHHD]>&ʘc> 5NBhdA3**,,4 ---E!t}]L^YYYiiB7+ ,!f]KF薅!4aaaNs?BMsуB7A8#?<8eY`Y?| yHx̹!4=yB) !\ !B!Bk7B!B!'">޶}ݯ?uvlɺkB+_XLSOݿvah!BWKnnBh !Զlko_]Vv8~RhV[W0̜޾-x,-553D!еPWW',!p)B]@ [xYaM~mKyž׮[oՇ-.y˿0bTל^~˲S5_}eK}>bcŋҗxj<)?¢,)zV\r?޾~Zɤ[7FS2ΜE7qwnӗ6/,y{`~zau熳E7-ε{/,xϗZB3)#m|F!B!+^X+ xC\UsZW(\Fzڳ?xlc֜L۽og~?nrȉޱ[oJ?},..~ 8X*=\(۵&Ydw޵i_y˲?Vێ;z y*j~AkV^ZZ99ǎWQ?S^^hJ׭[;ou9عU+)zomykl|Wp;B!ݮ|[ !JբT*UmJedW֜L\m`幹9CLjJ5k ErR9m_.JS׷℄2*m|}c_鬬9<+9ML6aqQPo8^UUR\CL^n.EQK.kW֯[Swrݳnoh cB!B3˕Go!tJKK^?-]zO^x׆m?8n]w[ _g#?ēOiW@Ww.]r\.+**<} Nrm%7/)yٳcx1?^3,)):14dX,w_aۏWUG7n7X5d

YvgEB!ˆ`v|?ETd` xV|z{?-t }s򺺻w}˲4M}әf۷<؟۝azﺵwvj:`(/u=&Br`0X(ȟE_9MBjf(+,!4dɒ/Z}H,/[l6:u*~RRRӏ92<<,lClQoB)) + 5ptRxL ?{Kz뛿+  m G?֮_p,rF?+uXcYb|F#hg(nY .Yu_nw@֜9|߾jաG>Xn D?~$vs8x}rz1[oynv|>~??,.':B3T*Bh,˖-[zʕ+ U*DtVV֭޺f͚+V,\aSev6E"]vѢE|%))iݺuFv!fG]ʰ5OXBHxkk`p{O>m; 7hl֮]ӟ>'Oz-p?6ܜ"/w{}执.i!ְhMz*8'?qW|V_{7lΚP(֭]#bϰ路~SI ,Yɧ@lᾯl^zmtt+W^H 4M}G?˯H$[-}_BX~+(ߺUu+pR?;۟\vH.ecBi;a@R|^Lf0"""˽^/EQ-h4NK*jpec6ng6u:0p' G+R[[ۙ36vM}y l|Fqb9qDBBBnnɓ'i^jb9tPvvvjjfD"ˋ MMM%%%z~ǎ`pժU :td2GFFܹ3_&BM+%HL0t:;;CZBhZ8z;_YVSs:&&:::_|_}wz~rlCr`0Hd͞ gHϜii$ ؅ E2X,iZ,cBh#)MZffhh,ٙ 22FR9sP5<}Ld~,X"Ȓn[R-_t8tz!ݫ L&ӡC`pp0***,,tn1o޼h'v;MFQRKQTMMP,,,fZQQQEM+D"0ͭE ,^z=ON Ń#t37VsQ'  ސїu2hYcMv)ccjH$±o!?V+ra,d]Y{Ƿ* ޮj6_\(>>>99Y.4 #+HOqde:r ZԤP( Ctttggӧ/++KEEEYVr#D"(JׯYsaZ7<, w`ɓ'd2T*Zm6V+0~ʇBzC!tQEViMQ_/tD"ɤT*e2Mda'Bhf".^xppP*z IIIaaaQ"Mdggk4X' T.$\.f#͐.s: bxxf  DbZv{0tD!4/!! 23T"&egh4A}9BYv@ PYYI|L'NgKK F֮.֒I2L`0))IP8G6jH$\ԞHd\.8ydWWWBBِ̢%c D"m&VVVVZZ*"BWEQ4MK$wQІ 䴤g=B'v!8:;;Vuh4֏ w:mB;w.o"8744444k=Rf!YP}&~:\.W<҈Bģ0wC!4HFF} IDATrSOjaI8QP}*L&d Ð٦$ttjÑj4m!.;;{% BhfF"\<ݷܲ}zFPTZVd2!Ь˷m!lC!t]M<*D7tB&"a\n>.g'˕JZVTivBM^OBӔz8СCBKقD я.k즦-mFKJ$wvB!B28#{]#Bc(8HDӴT* m~t8퍍OؽeG0<\PH$Xq8o!BkmzEoZ Mz0+eRBS tTj#-9#[7nLYr xVY,B!$ IǾ!B뇿xZX׏ oJY@׋ !YIh _I ] E4MV|ST??~ aas_kfP֦uOVnw\~? ,qqB!B*8z++,3G$|& _(4nR^p`Fa3@u~D.WT/x=v?Glmmv{@  1}CӐB!4qVZz;`PXES)MP/FB[?_t/.V*&""B쳇ܫP}R÷mx<>iH* K!4[rI}烿S̩ h}[`4 | Bzf34IBMPhQqIߤR<6?Lw޸8F"""ry potp_z)۴3H\qX,"^@!tyvEEdhDmp!^sޘ|oQ5l' 5=L@csgZI!W&$!Yez|~߿vهcZ|{mC͘!ݘ`gWlj=9;pbm}i(C*<\.KRa!.<^omM'k8͝3 V ۬bYR4Ř&ӀBXs:`0Ѯ%'.p{{+ jµ&tɊ(jjnmp:}]m@nf^QA EQ$ XTm~Cn߿7/\zaߟjL[~mEܮ{zaEicBҰ}wolQ7r:{6Y(̼7@ x=aʰ[o.2\|t8]MNV5zxn ]xon2(~^vX<4ܼ\.˳Ҳ[ƌ:["`~^cFo;2^KJn!cjpt9TjۭU ֹ=nBXJϮoKM -eR߬h& !4;L$1 C懒p. $V S* PŲX,fF*ڊOFo0j)7*Uہ}/$$ g!2 AG꣒S Ғ["Q*M1q,죹sݱ.ˡR̓q\فzmDA<_.?GN;OnqyJi,>! eޜ']thBxK[.;w'ћ3'"\uwqU#cNW8oӺ/]|nRjiJƦƻ|Q&;R^~x[V_|j*Yƞn4$ 5IBkdm"H"( FGd2ab1ٓ{!h4=ĩ>I@]Sr֭VxMJ*+-TʰhIN3 ,;_,5X "Jth _:2pBH2EZ37{0Ht(rEAFۘ rbT`@[gۂy i H n}ѱƸ  Cڙ uvu1 CR@!!:2Rҭ6E'Jm}cKǹ)Fi^vRi8%8ւ![R""h~^!4c #x_ H73$fѨ/|C`ޛoW_wKqM{[(=߿6=ice@ָ=n|FQo Jtݑ RX,J$($n"Fr:XLcZZz$33嗍^t]=gڷӟSB躐Ie99%e2r+zB.qn[P -9l dROPV\ɏ k!} >Rʕ@$,A?CZC)\n#>uq)]QNfX,.;[&߲V2JHpߑhZG_qj޽)࿯ %Dz^nRqoV,dRjO,f.n@*#>&P`I$=Cew;.&O jSbz5Z|H$**(>s氅5H$}~n>sB؆.%/B3Ih&CۤR)Y֍n$z#H7ad2RjQQQ?ى~'{ Okz?f\.:M!dRg]N\y}T8hӺ/ݹr#iIedPF koa4y>:1b322ݕoџ-4HMo|C־>v}> p)Bkrs79s*8sI)>"t424:2t} ˲NqYtɊ}IBvlp](JOdm˲}.R%lčL>ȈXѴ{d1D+HstGS2&ϷCԟ.3VK̩v{3i0)ƴAӠ;Yw"-)|>ya8Xq\ݼpds ^csCCn; #rXlVTCf'bL*+l@*ߊ'(h&Il*JrW_غ5=;rEE`L>8nՅ tcMP&?r3gnJb eV)TiIj D+}z\*_;+I{`w.-^Vv`[S KM5hI}GcInfޜ,H8,ʲs7bI-{+߅e 5`&.&E~vΈ1o;r%3\VvIԒ 3uiǶqgk oQ ϙ;?H;'$w?DtA|Sre>}I ) .SgNZ+C|ۘba.dE%E%m-,F-]/vSG̖!u۞jmvn7ofwV6$|4D5r l'n.GV3?pea^tu PmoZ}TV+ D"Iq8EO1]Voz/}%7/\Bs瓃H}`#7],+֭W# aJMӫn]?ɼg|nZN 2|\PQwFyY}2fH#F} .uD ]oB <%#%S<Zg8bkc~{~ZAE{="44)./&f&(Ž =J BhfdEbjdT~8ۢE|33o }/T(dUB!4#*RpϞ/YpBW1󇿽lL]6acY#QJ]Wם=q=dg1OfMILVGy[^OdDth,;\U: vFY wfyU$y{q)VɧdI$axb( TW6lz=(J\N6ɧ!fռbfɜTcBWk7P֬_AP,.().(yc2&~pAy)ƴVн[h ݠ0D$|dd7oëVI}饄ޝGq]?UUw]B@2;'87{{I{L؉ Y 6@bA hV]PJ-$%q~?*Pި׶wWXJyeY̾!&'K"~- !;R tpB@QXƲRh4>>>qqegS:;~k83L6pnA !B!z!<ɧdX0 0Ǚ{`_:D:@ [tQT d2MӸ„mr:p>RT't`4w)B#harB .2Sw#۞rŲoǓ?v޶MWXX Br8t6&:AvL:^ڀBIC%]Mx"4p)Bh@gDzW|8NVz+|-Sht+*6of~lٜN'<N>לGXXD<^p\vf",. !BirrrFgdq.i ^(&19q׹tiI]Sґ29_юwGpJ,40 o MMM;wlϟ2e ˲N#D.KC!Bh| ! "4] F1 Ƅk9 0ۿ?bJL>ߤvk6/退 .8Ni'A;-O.arq4zϾ拒kWQ4෸,"t ^ \mfmBS))#0tmt<5uot$5Kd2Amkmme2Ǐ8n2B բTсx?r]Ҷ.(8?܇FGJ;ro*ʄy͚5#VTU=fG+?{,~ؓ>z/4=󡌩 P@qɕ'lĄewv|S53s9=Ko\|iڍGOi-m_~Z[sazԥ9˼o1dN:Љ}oB>(aRG"diRy'mFt ﺂ5mF88AH:/Ϙ˯9/)Bn^bв{w cZ}9_ Z|Zr<9)P~ՏHƞ;>ϽVKtD8NX_p :2ȉ#3>EfήOO^|w((sma^)0̜9i)}OS3TJJJR\rkNmJKb`ffVӼUVWT*Ym5tzW֒'ARYr$=uGG4m" 7"P= HL&Q_ 98\=g?!n>0 :[xR ˲$X6:uv8U|KӴR<~`o+B =6oήؔɩ뫌i>o0Xd_JKIp䖧:;;rrl_pdSs#yr~M[*Եg߷n  r׻KD7>zCGr޵wǬ) IDATSk )ݮŗBTJ=g7O7{~lt#[Z~G6+o}{sY|~EUELTm,*-eV[u u g_aYW}(hhkkMOIW[Z[>ⓤ$p;:V[Wo.vsK\j 8οh"? DGVcm6 wZ@y7O}cYVRiZg ox_Ҫ>]p\ڵ?7Lfj:Nq1|wDiiizn(*++ ~gBj^rIÑ:k7I"Xmjnr8i)ik.-/ i:kF7sX@vf^e7bbBC(J0:EFD@RB&6:%蠠`s|߽O.^=.0\mhjLNQ54&ttv AY]`qne pLJQ2l$ۗ,ZP(ym1tvv(AQ3qi( ip,ˑc9'٬}or7qrvvq][4wEE_z嗟qHp׻k| OF[;aBH$~NV[RfZTJJo9gzz_JRxgYa~'"""njZ 75k֬Yr9~+B#EPMIF﨧G~Zk5c?95[w{(1qׅnX]}_=)=$8Cfo'mmtry ݿGR0Zx&"ow'bp4i&R ~~~[lV#PrGydٲe:N.?rdvbb9s@/YdƍK.nBh%o$qJt~~~A??%YFhn9mmfnO( bEQx>(J4BA3s,wyA[nHJH  (8w,vƦF+(kkos<'1>^ELӴVZ0<\QI 5U-ANTXO II2wtZ]Vf:Pnŗ{{{].יb$`17 /¥Ide;0II.Z-]]EEⵛa7{<%'VT74;SgO%KX@&P ,p8m6UUW\.ә,?((Xx @Ggd*H# OMɔ hRmmm!!!&)88߿EÇ[,iӦ8q9,,"""_NQܹs^Z^^~Fn Bw &YH0 Ð7LW?~Ѥ/sп\X曎4Z-9#Oi,3ʄZ,f[6Аa?C=Pw6ݸGNj+5En:phG]lp;\)ib'e߿l xda`ɢ%sg)aFvպ8?&*s3ϝt:EKnD.|]f%ƍiW^!CgifВ fhoacccJJ TWWGEET*z___LFqeee fy00G9DdL,q(0rO~R0sfo~kjДmTꫝ=jU*qdIhIKK;x̲iڰ01BnnkW} [6mhشQχ@ꔴ)i ™gr9ӫ'6&._Qlt\l45#["˽%$$\xlSBkZ)TUUt&hoo!11 8M!X N>HYcŊ''fعsґlOOK#:8T:}0цxX}li!ЈzV' E Eѐt[ccNkiiZ۽jժe#jjjȇ 燅mذaݺu l7*f(BQERodBh|||}+~?kXvPww7YrOG|~4(J%3jo B1 b2uVmȱUVVo.!\~,wZ@McrOOIG(b~񩧺~sJdT\mq!$$ d0B ><)x"40 A`dӞwI۷SRo{/.^Fi!B|\V Bw&&ݔJF1 AAAϾ~EU5i=ⷿ5>DOilZd7_v4B!Ƨr!Bw N>%pd7RƲl͙SyG# `(,ԬYS_֮u\JΧX Վ!r;~d Q %6MNqzpbq9A&) Ӻuې`Mرݾ ˲}C!Шqh?Xv0AچCr(lr*" OIƍeYRjzOb7޸⋮ ܹS_wuuf d'MB2A>W*_5L&U:!aljýb*v1sZvtD uڿGs\y'skj8V>{漘GCl9N~0B6hiyr ND5͝{:../d ih>MAs>GT|.&VZ:3BNgM}t]_:2,j So1iFըkuݭ-<ϧOFQ^|}G'ftł U>1F_mc8MG֕WL6MTbBwK!"{wh 5DdS8T,#5BX,viZ gd܆wA#A!VMsjVΜy=fɧdHRoZ6eRڧ;Qin4MYǔrk|'Ob6?Jc4[~~$2'kޱSG>A_߇5sfyE!tWF8^__%%%SNL) dBA7 I{I⌌%={H9ScUowx(cCɱyW/]'rf/2sk֬BԛV&&I3_&t xyR<:l" !BcI6ϸCObҍ8LHRI7P747B =ip4©7aącNL&=vikk۽{fYYYӦM+,,= %%˗=ދm۶y>kZ"PQ0Pȁ$Ro pر}%$$H EYY_|!ЄfjFDݕN9q?˲g 6s\Bh P?!$vr6ufԷt…,v9:n gϞ #;` B!$1«Lu:8?WX6Dxֻ*444##]4y-˕+WL&SZZBCd4w)B#hSovٳcYZhegΜRv{UUՕ+WB!4\ԭK Oj,20eNqCBBT*lqEQ+WR*xaBw'HBh,ij»4x-777''GXuuuuug<B!4RAbw zC sCdMNYn tϙ%/-;q|P|97y * oq\zzzbb,ާB!H0B?<2Y_[f6^>qq1 V1^CB!4zCV ^(&^oJL2L&FdޞNgɺoV } B!+z0QB@*0Ǒ5x<,ۜ.yt 0_*ޯJBhVR99xK@PNڬA!4޸\MB,gyiK/mXQ/4=󡌩l=ը՚e9"#=sk`w鋯?rSeƦƿ}gd .;vl6k ʪZbMLT(hniw+iuP\r#6-1!i٢eW,?zH{G^ y IDAT_4oQtT TVU:r;,4lŒj |𽿾kZl*y40BMEȬRzzG\Z)i !!!pn$gq !tA1}˞Yz{{?p=PT\Vk06ak Bn^~abyG*?jumv+^WM:έ^qg Κ7O!>xGёNoylÖ%{y3EE:[AصwgVfvrS's_ԕwG6|w|dbв{wZr}DxxѼnZ(|** OHzkjjFyV5:2z yаs s쩕V+kՕ*/^ϘRTJU+ 2ˮ?i񩬪w{Vɩ}ٜz}#n9U[Wv"#v~t:IFeov-|4Ț޶٬q1A033+aہCy_x9lEdxԌbk΂ !.^scsc`@`dD$̟=?۫VUuww*J`thpK! BۭynN1K,T!7,N!zg_jko(K׮lݴUP!F&_mkkնS)Up͏lV)U .zz|߃bsY֢+E~eV?ߞ=Qx|܅EW]|4Dޚ%awZ,.K]x?vVAO&Μ?3}jEQ bԌwmϘYp`CbBR:n?9˲;:o?g_A]}mlZ3{/kni+ZA&cIfBa6}U] L^="9JicJt*~+0-Zt740JRVsG ߤBVҕKh?Cgg ZƴLeY ndȦi: 0/MhiM y׮NKP( Ieeg|ͷ}aErzٍȘS*EOGg\Nl\.B"AQz Nꬭ(0募mϰ qpYS([AAS$Yk%Is w1))t:ҜerMS*Uvs wo06! 5Dx(ff=./ ð, W_y,|r/۱!Jr(M۾㋰g^R*UfYleYNưOlyln0*:s Gb}nsKS`@J0i$o@r[._C{G{Hp(I&uo8N!Mz[*+?vVA;^w8%vەWyX[_ S/]hjnJXUt:{zlko7KjS]S"wJ=10))axVy}Ut;oBhy~]GʺBvڻ7# ٱg~t:n 3 #*f2utȲJK8wLww(4|.Bk[g͋DrR򩳧L.6y*i3@b|u ֶV imk;c輹@ۤsZ΢⢤$8Yx@ NtmmQ+Ru -M.;ҕKaaiZZM=ݾi֌hhwnkT(nש!J*!>p:{*)ϢlfsϱG-^,gپ}f ¾ `Bpܜ*<tvuw~U^ҧ@Uo!H*󽽽2aB)Cϻ׼wβ\Y:>=ujwOG~r&'M^,gC~F58>lJr8vF4gfS3]8SYUrwu<+3ϿRwZ|utTS+"#^>t&Pђ`eeeD4Иs^A˟6g=xOG :riz--x=@EUE-JЈz'▔C !21BӴL&#*zN4JR(d{SL Bh( X{罷(zGK; WggGP`Ȼtfef@cSCTi[ n?!44Ͳ,0$f0\.OJQ)bYVTrLF&C!`?Ä{b0nZ4:ZX斖޷݄So!8Ffb~,FRCQ0$醉6B!F ĄgC 3Grp˄IB!BJEDD555-&L O. @J4?F7%C$M!֮&i1RF੷ܜQZbm!]'TxKrro&4vi!4@/ !4Xw)B#hۨB!tnr8d}72TکAHލLPo9B!w>-)Q^(Ȳn2eYL0nw {/ B!t ^:B(AM(yMHXw6Dx͚&wU^*Û'_p;WlVF;=%39a1ulvkaʪJsx94& +̧hzbo6+sNTxtGWG n۠^6XBo$6 F!O٬谰,)S -#\K[3M7ʯ_bo6wǴjg{a~NwTRZ,ލke%>eP]c*KKfZC"L=~in\ؓ15K;tS6^`B!4A` !5vLFjk߮+:cYtK >bSSKc?$vB IqjX>3::(*;yfX8k1˲dTGg{cKZY8+'80HA^Sk;h~|₤hVV\Q]^T4wge=utF-X +%@xGW;M>z9K}􆦖Oh5%)ZYɥ M_(>3gIH`虋\+R2v'O=u_޲x W>3)nRBL'^~M!WLOsZ[_:WtLݦ'._𳏽@XxJ.e|WRR>hԚK=̻w<ϗWG'&MVV"metW?mx8چxw ݡ rRG\_k>jwؓ&FH~r3Aa˯UToYO\VU[I1^f5w$ڭظjsi 1%QPvOYkIM);vȞŠ+oZt>_~ WzSoB!tv4z`Ҩ7"âzf.34==5YIj阈XSw Q4DQTTX4I@WEF4=9qJB"HiRlTTh¨ T*QquUNSxM2M&)Р.S' 65?n%lvZm-N39a LNLihX-l4Bi)I B!W$V޼icCBYZiIR$bj.K+8KeX1q/)/P[kcHM[FQ )s:Nﶓ.tc_So m0!BhQC\뭦•بVkj+\>TTwcM(TBPE',XpQh\ڬ [=NE55ʮzMf%hܯ@ |iٞ /BQiF7gJJ< z\++J>!$(o/Bk"m-ޟ9.:zn< -, ])cYV6~Tzz(! B!ƣbhZ#𼸆TQ1U \y݈)ohyrE{G DHiȰhVQk5jmbLbk{KGonI.kw]NHԥywݞ';@ċWΓɌTBo_KBXZ3+׊v.vIO|tBYUn #%g.1w;92N,8{p>м`[Uo!B!`z b#nT\돔 ĔgIʜn;9aJqh|t>9sM'!+izjSGN9e8~VV5!!#D]+/UƲO=wNZ^8+GѮY_Wx$0aQ.er”~%s%MX{nШ5 ZĞ&$MIJ!kꪵZ^;$&~ӹYň(9argW'|,ɒ46I{/cd1b51`uO/: AgXtݰd;v"^WC?ꭷޒ*++nܸqg44\[lٶm4:*EXxc5 j,ȱ5^h/o4ꡩ`0aѳg.]ү!4n?p0##C.3((Hp+hfX@crPx=BFGGKF? g{Aa" ݉L*~re{lU{ܭ#yl6 8!B!&*UPvAx^3S!hw7[Ww1`y7S̮u\/H{ tˀ=w,T}xB!GA8sT[G.L2n6!;lvM # 9-[[0v{!Be- "toCpPS=}'Ig_oL&S(JKI[sp8sbbv鳧[[v{_m;nbh4;uK34WDD@EUŮᑓG.U\Z|\O}J/ :lE,6L;  ZWJGRx  ~~ '_|bi"Bio g\&?zȅW-^tɝ[=uUk,kSmݼ>a74>\.Nժv>TQy\Ϭ]MٶcNͫxm MOdH$ZϿdɘvհ_P )'X_p@$Ki/24$֝Yټ[xx֭[}lg!B9x_{S[_K]q܌AKFè h4jXBCsKSksdX/Ii)i }bhL&L2*alt\ݙ 8N EDbI$RZ=ƬR4? H^g۽oakV Ve_{ (ӲAd-8z=<jk::zM0M-I FFhIi(VQq]*.MFR%yx{Jέ\1ybX,c":{z tJ!40G9MfYo|YB!4i69SB(sAVb|ҭ@wjs%T*zn[,fplH%[jOS_(9G/9s5R`Krf-\tίY֥"a|L]6BYIjrڹsM|Fz~nwvnLj 4)_6M… !Bsy7HJHub1KĒuyJ}r~}f\Or忳@.=.X-59z͇6lok7ĬܞOӨy\^vffk{`]ϿT^Y}/オ }a[{۲%7$e1Q1 ©d/|KsO9&}cc]$zde86: tzݱSGf3YD*WJʼc׷ixXba@no&#T*wa4E222fs]][~ݻw67J-[ޕ]-, 8/7`F]{yyM:n!ffݝ߮&Ibi4$IL &nȤMBh"B*f!249_RFauL?sVu2J!B!BWV  f@nj///NŬB!B!Q>drɉSoEhf5f6\b C(B^ !B=zBMl>E7ޮꆇU#ɥRIij f\# \D*e 4x8?&B!Bq !~?Qe鵵w2B!Bc~r)=fs>N6r;Wo4^0B!cG" ̂Ytrhd(oZfBoz7%?ȏnC4E<^\,p'S-MSSVLUǭMm<B!ӾC vbb|ֺh~w3HeVznŻyZ7+=[X fdi1J'zC! ZbtfMm]ټ +[kJ>4=!((YBY';aQn[GT, :Ẑ),H^d6utƔTf%捛Ba]Jpp侰O4ჺO(LBm3X)"Y醺SϬ[Y#(j:=`|'|2""B^vO>yg-VYY)1lfBsTo[?Pً:40 `/çKKH/*yW+/Mcu^P^YJ9)DG759So Q1}zphxdg,13RGp@]U嵍@J\jf":殬A5>ip1<.I,/߰js'=e[n-.?j|n`ٔqJIS[#_Y^YgsDh.zS(.0cD Bhmlv0Sd=K;MFyc#QMKiڧ嫝~˖ SBk[nooFFFoN<{?*/b_{_cYooomm-p8@ J˖-3LO<444 Be.OQ/_ +VvZyy9źxmBCC"4x|xϞ=>>>***ZfEQ *|G)))J200033&VBۖjd*!&BC}~΢@>l|`AJ klIIjjosݯUYd)¢Z;Zdrer'X,#&2`4@9).@tdz;:e/n=ۧfp_}}zu FFrmiwp:ᒔې$ =cb`E92+sFv`s^|/ι?}'we.Wk4e]r-Zlɯ~/=h4FEjS[[kZ'vs7$I2wR\.bt?@Qc*V[PPPTT#*j|P+ Bs׌m mKFf;E"quk G a޲HThPXAə֎@(KTt\(:Ɯ:N*r867=$`qB0-1=.*Y"%>n 1--<W5 ;]*Sk`.A_7mkFh.arA=`re\.EQ ,#hu6,ОؽwO'IenB^o0X;44_PyǓO_pppPPIk,555 l¬"(;;;%%Yp+ Bs׌mɽ}(jjk2 bX$SGr;yxHdEaoOk-7FdTx K2}~:9.E52l۾QZseEJQ1UW^KQd s\xՉcAԭIut+/^$sy#d4e26m;;QjEXͮn89+"0x\Y-`mRTN,o~sd@rRI~]QԜt[o/|oߞd뇹}NXEEEmm> ~aWWWhhlVվɥ(@000EMZy8B!4ڰrًEaAaIϿD&&jF{I#g 1BqTLdl}K]T-39 *.EUKxzx܂3{!HMHxQ-X$^x5~>! -u0u5W,wͲuᡓLq eWH$;`&$ ~ol6;!&i`h%Bs8Eh^nw3ba& 6u_䤤}GQI?[\.weX,)Zdɡʼ/@sP?~|tt/YӒZl6RMRizz7|?a۶mV`^!ۖo[-eV6quMIQUU{^UyW;z;*<ڙڶa$\/ᔑ0#y!3&g۠.^x=iXrEJFʞל2/Leٹ7¨\N&J rVLV=!_?\K`unoڸ~.?_~!::,%Kۋ/^xK!r׳MB=mf$YU{C5jm۫*|5kihRBMGT#`oB!mFQkx{z].-’|Nbe0k 4yi~~~^^3z` !45鯣QS\┫4U3Cn췿-3o!н2Bhmkq8#rr][`F ̥B!we5!7tsd6q+,s7 J f;3kUUUz{{?2B!7RV SBlo/)0<<,s?2L*GD0 $RFV*Y6B.+z0 B!7o[!4oS4a?i5S""#I FE!o[!4o-p>0QB!Ѓ߶Bh!B!tB[7{!B!z[u188wQ4N{;ppSs#3:Eȵb%)B!Bh4BfskO?L3ٗ _TD6ekiyjE[6>~?;<"͓RZAq^o{BC(Q4>(Bd6!|jRhn=/r3g0-/o.|arWX,[gg^ר;zx0f]xBh0JsrmH5t@P(ھe_AQ~skj  yhc2NjkoeXV$@csc2v: (Xv*EAFZƒ%bbkW&jb._K-s69p8 l7n[Jƈk6r\grs WXBJ%R0N(*-%m0fO9VVĸ\ ab\bzrޠzn[FQԅ*~mւ'{R(_,㓔ʭyH=ܟYRZV~HU˽l??l8zppPHZJz٥RɨVuvKĒyT1XDXEQ;A՝So mhp84ztvvH2.6Yr?===]]?<}(7} m:D,Eb,_5Ԧ=p8^yA9}}/=W*;##uMM/y>3?EDH///egGdx$7o{h3VxA9^~U|HQ]{zO {^bX;D=~Oe'\(+Y|]VM`y<~ZJڶO&'y{yO~3jh7Ɗ IDAT^z6XfS}S}Td+?cR\-nljx'bDr} N?1P4::6rOi>gӅ7ѨTQy\Z4911QW &JB99(B-y{{_,-eFBhڌ&kٙwpd."ӋE!jgz16N9(*1.62%)B!Bcy7 (p:h4 z܇ͦ6eubX,QYnHK(RVVhn齛x|ahHsA1.lVpe:54Vs(4ω GĒ%gΞih7 &_ACAj9FD|\"LQԐjVQyEJ^*r465bb**/k4j>(B!4dvlqTBP᝙YGnik% qV֮^w2$U+V;'bHJHub1KĒuyRgiTd J;s_ KMNKJH?~\jph7|ԘF3}>!b]tc,ܺyۊ'1㫁M)(g;@\&{\Hغ$踆?~O(%@ZJFOlv[b\⺼i ظvǟPZC_l֔TPz4OO:qΠn߲d`굅E9OI:Xm;uSi)o2BJ~Fxxי{{}1?Og_qFmgb9nj?̨~//3ރں%^^\~!w̨ 6::,߮&Ibi4$IL &nȤMBh"B*f!249_RsEQx[@hS4't5xjOqͥTesZKB!Џfvvuv.W\¼ݹG~~~^w6K0QZ&L~eK³g32%Bhk!BP\,Hwm¬,s7̻!^]\R6`pĉbͺ {}Ų(g;x;?Y;ϟ/#lzpм!BMy|ϟ|)__f fѝSo! ((0,,bi)TƦ˗@xx[o̩~1ͷ\Gwѱ1 #[ͬB!Bh.r)!5WXQPx6{"H tiNvP_PO>bX1QQQW._Y&_UB! gr3JAzst&|Ps{?bܾ~3VUo0D[E +?E׻VC!ЃMBjl J!b9.X3 ~T~~ӧ47,]Jʾط*/\Ƿ 8eXAvzwddB!p B!z\oh^cӄ~XzG/0::'G~A!2v ::: ֬{wzhko7_!B!,zs#(A^j```Mjzwen.讗_if[Ûo3Ͻ᭏Ywlv/_h4B!Bhn!tryb@ xOtnܰ,Yxɒ 4P__I7!`OnWvs\F}'A14<ѢfL\9vWD"… ZҥKcbb<l6:!B!н;WzC$I>ȞcG˫JGFG^z򕦶ƊFA*X|w`ߥr/F$Ҳǹҳ Mƃǿ \qL=ZTZ84< 3GG߹^/YRUf[/UE084pHcs8˲GE1nFYx5EQWk6՘క9y<ޤwN?J??Oc[}*Žn%d-^4!&Z͕5V5*<:w* ,Kqn%MDEe dž[ڛm揬A5>i ɾػK2WZVEX% W3UۨVVqaajVFB!Vf8322 鮩7>o4)\F8/6M$RBE͂9+;yHQia޲>2_ =^M,\:|]Uo}326`dlfoYuo|T*RDZ# 642tw2o9ZVu@gGƆ**< 2ߎʢaQo޴cc|\ٳs7Nz<.[NJ[D/'m3,8yس9rwB(9.Vd.Zbݼ$?k.uoB&jVkWO瓏̧L6{y\ޞϳ3@h2 DjZ"lT#l۶-;;庖s(AME,2!TSS#ёAt$_?HaZ IO%HG+:sL3JȽ}\QjIK&HWjh\)q,G+Y,[SX$7v -Ԅ4Pbewm6h4C"P;0(Euf/XԄ46CԣЪlJ[bazbFK{]CꙒprߠ eoqj!S}5̧L6K<5_hN0ŲZje$I:{ST6L</;;;##=i555!4?uuu^,-ը2;zxHĒPfB2OovMõenX-B96&ٴW.,ZptzH(r"QOo^ ͑$ m$7땵& O= JoЉbz[(QjMfG_}V!?xVfѹHW"YH\gSyKI$gf/;Кj!S}50O󫁩ۆDݐ6L._lXp(r]fF#Le˖Bh aB!ګ7ו;kظ7`Gzϸ. zEQt&KgI׺7əifh{$/j.|V =I@UOz Vnl>x02a,A!t3qk==@<<JSI:A|j.B٠AMM;}ҢjLRsD$Il6f]KR2h|P!B>?<2DQc6m E"1p*]4ZN/Oomu(܏4VS54 QM|"N?%EQAa˳sE 1&_bq -9.nZbG_}@ҬYhŹ&&E3k{~>! -u0E pxү&V1ys_Bnx7!RYWWszpHXXXzz:)++s8>>>ϟ  fu8ݻr&r%~}Ys_?}=,/~Oo3ꢿ @6::,߮&Ibi4$IL &nȤMBh"B*J`܁B<w~˻!u-B)Qr_B!4ff!BMwn!BxB!zC!Bu(B!06]v4B!fB!;piXgj;r]!m>>*`0X,fBn}|}3p!BýRonCXBk!E!pӻkw"BhB!ЏΩ|] QN>iXܥ(B=f33`!D(ݽzfQvTIf3}=|>3\(Yd9?{$U+V;#{?yUfť]0M74MFDʬ4Q,@N Wj4ლ&|P!4Cw{8! !{ 4$YXGQKhlnp^nH57C#<=|n;-oSwn{yC~JU]Wnj"4 wB!Bom{#'e[Xv*EAFZƒPQUqlH%yyy[xW8·~HDnZPB\BsKSQY~Fؼ e%AVDWVW5j?-Dbhjn<Fy˞z|X֯Hn 6e۹"V-[,;=F_Ĕ]!aPvh2Uݽd}ކ`R *890/o,(b-Y## NKV332KJUêAЧmljeXeJE1W|hz%9K,w>ˎ̦v=EXDaLJGe^ޛoJJK,sLT5j+*,֥+o Wv$ɡᡆ;w;/B!wuu8fe<@<9bڪhÛL&F*̂[C{8!4Y,}B$756ECBΕ+pH5<«sQQcc߽ L~đ e%+Аg4j$U GNTqiU#Gjmͻ?XQy(cGOٹog_fXyM8ƖzЩ7Zuuǃ**߳r| ھKIĒj(-9g/lphq܃0#/}tk7$0zki˽e.m>4$zTў`Z=f|>eKb輛EQvkW8g3`Zyj}էI ɝ;-ZQP~lq5+r8SO=/>#|P!tn׋̂:]Cimm% Xr#੨hkmUDE1 gFRl3rЏz@}c}Fj/ֶpϯZNj0gN]VVWFERNSo 5n""1.vIW)I)b1XԖfE",4d2Zhph`@ @sk"<&'^* s,ݴ*alt\Qqjp8Fdt~}}#sAA^^\./=5 ?_Xh(aXR/ &:n!q1:7oH5d44''*8 mʶVkWА0 FcP`b&@jrڙgz݋3kaa9a!ac#īө7/Oo:7+zB sdpK-fB:W$*?Y>̌h56̏(##<3:Id;C\&7zݹb;pAO>Tqi{ =3'+{E?_E>Ub9 IDATl   +Bhq$b> $DrjjZk$b0 wS[_ֻolnjiLJHɾ_ -M(:#$ezX$:vml6GKLS8h4jѾ;;{߸IF#fL&:9Iym\MSoh4BhNk΃Ӹ1+s{)t>,Ao/ČTAЃ.2d%'J$ҍk7iȼccEêk5מ{9zW(oXYjk3s2R3v_2`oDBsWH$ݽ{2 { tK٩So_@015DZ(HJotxd3.&YўrkhA͍@Q^eOowւ, XxBD^y&޶Mzupnu-ABM !#JK(RVVhVu`p(P$Hmv2EQ'_|@0>Zltls[swufӐjp7֥&J$ROb\bM]$ QQ-=P MՅ96:VCQTM]5*h7+"t3HKhz@QPQUu:h`.[y*EQͭq.yaW M-9 ib EdDG*;MfL&dvw*:::Ѩ**8vwL|j(?{ƙ- ̨$@b`Kl)Nݔdnw[zfMM)c0齘%TP0 dc8G9WHf 45ꭱB! ׇ)hZrsBR|`}>l EGrx蘤$&Fsks^)X`6=ҧӊstZB;t.HNL~8>׭Zȷz}c ۼaˡ#FC`@έYޣɦxe,Ϗ/.+& xH/k[֑#'OJ;fAY۲;t*gӺM~$TyXyBq*ڕk@PADB]8sO?0[,>r eֶ]Gs;517l4,i7nٸs@hw^N4;;d2@NNΚ5$/rC{}qFyɃ΃]MB|wjk/ɍ"4|?ڠP}#k}9vl((?*ڱ}Wvo_Y^yښj$Itu".ƹC:4=e".'(M!g111T:Ծ(Bh\9F!4 (r+MYp17Byb^Z?#?sWt&<B!r Ko)K?yX+/<&nwxo^bBDk^K]]]'N 4`ēO,Zȹp8}ŗ=/G?Tߞ|Ͽ?۱}Ja:j~m;f]ȣwvuEQKWd̙w/s,^nCNqSȳ`[ !By)B!4jUʅ^xA&OOQ_WjW,_y$oɒŗ/]^jPsfgeyri*5%̟GW//?nMIIf[6߳|||ok޴{n?wӟO/;| K"|ʪyo#\V\a:Hq !4^am"Yc&\Q!GN|7mޤ}?R_"y$Ąsl-ƅ. PdZBh򓂒Bh21R<O8E5&h㞖9:Ǟ(0{~~K$sNV(ZfJ__ `|ow^|?(..]0W\$66iU(:j2Z?/۽++(A|==!̂h4>ȣXtEyE^o`Z=U\s]eB!䇥;8 WpE!4Un'{Ws=OϪտy<9T(gNf"vٳsfҳAo~s%Y;λ` Xշ߲vlg4QQ~c"/?O?Pb$ɭgvtt02L,}ygN9yB}XCmwcOpGqB!=XzC!& aٱs=x7 g~7ٳyzZ^l95T%(X~Cܹ{-#y{_}S}ߗ穧HY;8I;۫j^=ݩ)$IVVV lUVVS[K=7^^p8F#w;+k!BzYf 7tcc#es W4>>+V|7 Qկ~u6pzӟGGSR ,..=k֟N7/~o`E}'?zW׭]]-;w(bcb_R)w[`6ncqcs2B!nKo܆`M,:1:"HMN6k~y˸ w>x{T( hjN䅥(7Bhꠀ{f!";k'>(_p1}dgbE38g?ix-ϭEBw [& p8몘w>z-*Wm(˩O^UvM/fۙb~8(3v231=X}nESPWؑ]:Ď콱?{k~8a;aB B!xN4&gώ4Ke5g~J2fVX-v4qRRj Hٌ[Yi+Jj䷍;{㭳X-.FiNH ABE [v6J͝ Bhjg/DD@WOWG|'{v=!H{z=֫U]8`:~C;k_~ ,,o۴j?|cy#5!mެAPurqEl\pH$jh-~)<4|A^R\JM}yIK9;-"m }Uեbd%ёv\_1#aWpv`` "4bib*j*ehh9s{:Z/^)'Ir^Ƃ4`1QaQE}TffRs +xΛy<OS]W>ۚ|A`@PK:nծ+|IxlclVZd?i{O% f/o!#yօ==`+t1J &cxhEEBV\vj'g5겂LF\vzQ7P*=nDD(QW,j0vg&e<)i7UԄGw=qi{cb"ce,ܓxhpXEMymC<㑊rfATr-*KcO㻷=TTW\Q%mx4 ^y\;q=O<=L'VTl]n<&hnP(-k={b$Vgמ]w?mÎ{Roc'7={8M~SIq콑\(ccc=i.^OmZ(h2ЙJ{or33C/^6G$~|-aO&=,!twán"7$;"6~@+]WTԴR8ba#X9:<2i̴K #-4 ut)}ή՚ ) i=fܯ%&547@s{shH8TzJǓ|Rn@U]ezrL*x36m60[,+D<y1⤸ BC‚A7ZottR@%ǧ>#"0 $"*\C\Uu3"X$NQK) sN[[rT*c1K$Y)j+&-)],  ::"4*_MdJBj]`/iDF3 T2yӶKM7\H`HLdT"a~-#B# }^mǣ1Z:Xo7L7ZA~-~j Ɍ}^QeZR e q 3C;1)6Y"٩sUڨhJMLbS "âכ󇚮_|WaMBӍF` )Z!(T.֔JիW322`ꖁ(W*6' FiEM>rGcw؃C&`2[,05SylNjBfOHBOȤ2^&ATF9f> ,9 ^L"3bX*I%Zba~q*m0 .rDi8M|~Aj.Ky}bZ#ʅi$ ^dQK@ `7;$$$ǧV֔o]]/)It8A2t7$CAt蛞$ȘuH( v7Fdp`HkGscKcH\`R/R,|<O$MF'eRahTjAO_OcB&`2.*VUWi-VP8dPm_"!Ф5J6+rޖDTW=}xSJR*}c GL9qpdvR) .:J!WisX"~ f,6kT&_m0jjCC &L&I~}?j4H%~- e>:N@jLuh2RE?N%H#wӇb"c,[Oħ_DA H3Rf%*k H4#(~ɼe6@ b8X[a^D,į^EܳǪ뫤ei-Ndc j7ZϷẊO~gZCC5mzn4)EQQF=s7 Fzgfm6dYzD"alۭV 465_ٹ)[&ߨt {Bjtq/riM܄+ in[$0}ϏyQi$IVA~p" -.*%Xʹ{P@AJ%Τ(+0 (HY%s@eWSnXʚ%k,b1/i5bq 3"Wco W}> ֒VCgZiI3[z:gD"*jZ[:[Sd2,RD.(*>:jA3>J(>x\nTF 07 4 ^XxjVRQё1|zU:9&*o?niK aZuͦ$cN.!.7=[XH_hܺn;V ;#dRL*ZM7fY|F{g[:KrL*Egvt5g7 5Ev= /$p]҄$PTPt)Jd._ktq(e29pT2X(Y_&Pi0v-''g;BѴwZX #){WXCAC! HU*Q04ʌF5?qNj Zl=I]E"DFWc{E&5Do>(*"4rقL2#|FDQw>LJڬ~k0 %3סSkX,^|#=n{N=<2425!\87D,Q '!%>Љo{sݲ IFawY,LrjvM9N9bmΟx Ԅ4z\jBZo_χ 3vtw'OBhNZ&h U%QqqHDƴ2'J3\n~}Fl:'<4Y6.*•6_u6A{\)fx/KnBMJzcC=A$IUVVDBGW8L=y1K 111SI9;g޻tT[Gk IDATcxۀ&%#hF+6xG$%snundE!ȍ"'܄+ !.Aܚs)m0o9B)B¾vjllB9f[W6pBhKiCa5&!B&Wmj (7B))q g9eBSϳ{<*80䡝{Q93rCu6nMWӻ!&\Q!{rMiN܊X!BzChҡk8mLnsNJs=2 L@YFrCM2"AXzM&\Qn& j̍"ФG=$Izӣ\ q}'Nbký!қg0%7r(71V|z!EQ11Ø ĘāiBPpCncטGv9>zmVB!%Xz&\Qn&prK=q"nFmFY4MCQ;vu1bh3A?ǣ9$I2"BIn,x?99ќJn&\QnqȅQGiFY4MCQ|մbVXXD y 5 '8l#B!Ǎ]z[c$I.^Ϗ0%7r(7 !ozOÍxpE W;إ7LϜ9q[[ff&$f2ʘ lJF!B5v̓(jmm=wT%) WpE w4r Ns.׉4.9]28A&4BhOK9V7;i|;nJn._tȷ( 6Qp[FQTmm-7:pF+}$.X M/X#khhf1pE8+ PQ`ݥLppGSg]FBSL&3Tr*\J:d_'32[͘zuZ*9~܌? 4^{/3z`xTRV{2᠖,Z9k.zMO+-/MNLF dNBTe㖰Q2}MO6ݻws"D&?H%W;5+jLMNE@am$C%ءah(7W%gnv =1#;܊\~!/ A}}_~啫sfN=́߯0p3&lu7Хpn{d2yM]M|l<=[^YTORR{zM&Hu7^r]&{fXN9>RAm5s2愅hzz------ .]TUUmn,7r(71D&\Qn53v XLFlN3!t^ݾe7P̚MYU{oLFMf BV'?nikQ6g0뻣uvٰOڜ1_9wjἅtAhbzz``tֶV2ff,] >⓸Z68(xƭ2_;gZ2g7bqTT)(:w>/XBGi8zHMm5[te[{[sk˧_|B%%%&SuEfMf blY$yK.ɘ9~VRVD=.H-^ợ[}t|{W-[u6bMذvcIYqAeǻx "**N=a24 k7 I,(۝fBkc-c"bH6TmǏ7kP`ж{=qndo&i>dغ}6ҷT$m\T(].6&> </dNqY1[pizZt`4*|7oܢW69w&@PTZ$KV.[E?.&^z+*****FB!:FטsIeGq&Yt`޽ATtvPY]A\׏>EQ??sAzZz+fGI,?sb0tںڥH$Θ}v?NIJ_*~sW.[ݕ{*wwus~ΉcK.%t%Oy ?c4Gj9qp<rP3SkjêPZ^ZZ^cǏ=|=.F3/ttv|I I"b4W bNk4jFQ/5U]]=DWwSwiǮo۸nU /vೕV+rOĹ'3#-ㅡ$1>Q$vO8~*7٭ƺ>⍦_}>>oS*2)f!Bh I$I.ӝ#=n% j+AM6¹ %/න&I2>?oμ"# Ȝ5_fZ =-`l^zX,m?  b4$PZm93u\Cxq1ؠ $e'இm6ۛルsN-KbIRBRuͰέEUTU.[L,K%RLg+,3+S&x% TVWl63hu::_ h"+*85)::;KYA%W@Um¹ y<_RB{˜ $Idxdo_2:2:PHď?'cP($R*.-rL&(lἅ$I64Է:s?_?z$ׯ PniDiADENCOk}E'@(JIBC> 6D,LIDDxdHpHÍoNFSG!BMOX6zŠ Xg24N91Bw֩p#JȤ20kCT" d2t\W V~B`9qm=*L\&'x$p8h22A@@ 2lڍ˗=aAɳgpDЙ4Vb[} vK~|5dr0@&1ߓ$gۙERS.^^ZVk}mtfW#f>tP.ӫ53 ]-Hޑ(b7Սk7]tYr-Aeߧҭ6l1F\>\*U{w;})tNFڱe)9I"$I (p'@*\ X;I+vbBU"0r`0XIO)Δަ5B!F)LJ'3t+Yg#%8ǝ#A&IA (a019LMo0Ȥcn7Mr ӏ?Ci-#}Wd#9C_&ܳa A{ɡI$.zn[$xJesKIJe'0[Jz׏ |2pD'IR*iuڑ)h";]EeL&W(LM&J  P(LmR+iR|uXs|Ke?ty׬\ (=vDOcp54$>ǟoAcgJR; {Wカ \SSW}|7 ̎i5QmibNsr!BF! f$+WPݍ T&… Pݍp<2==FJvTTRd0l6ۥ+c/.@*EHpA@AenۙHL&kA`0B䦲hbk;:(qE:d6X,kLNLp}j9JD\tl^bXz@,tvuPE %e vl٤1-ILK8s(%)  ׮PVY]11._p~]iE)]bqgWPPYS|(yp8A@ftILQTgWb ((Z~(_GQVGOU*@@2`gwǦ'I`4> ܇Lb\vΎ˷ Mecz[f 7B!04nܹ8$,ZYrp?!tWP*}g.H$atEpޢ}}h44% 調xy'[Zl Afmu4S</ZyW^{Adx`Hq XKV|6myAA00`>{oz7?#YfBdqٺn9_/$IZo܅9's>#O1˦${Ei4kWeFRTr1ږ}ءSy|>m/v|ofΞ #fvoSIYI+άLn3eWػeVMT iEBт 8 ~Fx v`͊'s_jǽYB0k[֑#'OJ;TΛ3 \p#ߚf@pbByTnk[ˉ3ZLd޷7wl6K qeoT*HW+HlB_|ۄTFݻ+))bFƎ_&jx"*B!{X4FO04:H0KuwwDBvWLq4K111T:Ծ7hZZ;rGm@أB!km*v=. v2fB!g8#7B!/aǑjpd88v,Nܙss!By+Nw䀛fM3-[Bnn $Ix=!xOLIvo)n.9yS[>=!xOo‹x>=!xagL5`Ǚi is#!B{& ܐ+nfx>=!xOw^x~ n677s&((ܨ+n0ߡ<ާ;/~nnOnx>=!O7;᧎2fE7vd"4gvEMB}mB y*!Д፣_ }zCBЧ;/;})я+aGi8;ȸY'%7db-yB`=!xO;FG8'ɸBwϾ6rn(1܆{xS&Ѩ7BFYLU)#0"i焑Ih`$KQOp8 58P*|g,f`fbҏYX:oD$&4`df#BjGB!eeэ#˰DF "&/eΜ[s[SU]%]a܌F~gy Bݥf YfEGGSU\\\QQ@WPPի/b``@$-\000d2]x:>`Lv:r "oIHH8| 6nYXXBDRRRXXEQUUU7&$$d2XVV "==]*t{ryRRfJ`&'''l6 t\TT}/p9,'\ N;8xЄ U}?!K^VZh4C#V.Zݯ=slz_;6f 'x%g/Qq=tbZۻzo>{8QQR|>tP(ܓ8S5?{!}yxEMYJBY΢.H>\X\xR.x t;6f._ M=}{v==}XwCqSk(<>>$I666jZ- ]}!onnAP(dp3fTUU8#O gL=K `9,$s{1R|$GyɀyueZR b% ϟ:Ff&x<*P*&x]_MC5fBwP(Z62k /Fј溺H #%t{榦 &" nܸÏy<)())Z>>>LTcUvR*6m``ߟv,Je2sb\y ---@nXB!7Lt^Ö4v`aMlHq'SSQ'z^&12`߇WMg IDAT1'LcT2t'IbI8 .~I v0( 1d(S&$~ &Eeת*vje4Cx ,H٦ H =EQWo+ hm_"#pSRY|ҳkoyA:oaa8D|Ʀ+;7edu]D;xNXmÎx$QBw]WwV|>>맯*88bxn;qdfWq~O6͕jl6Onnnl 6eE2xX,EtzZ@  $ҥ4 /_NOpt v2B)> ,n$ʯSQP5xkѲRh .i"@$j{v;sPuřK$Cd2|U|>l174A2Q.drᨮQ7j{)^v_7Ϸᯯ;mQow#NP(@Tj;$IjZ- sZRlmyWt".%wt$̌ϕBAA^Eٳf3SY|>_"zro =Gф I6.JR>>>Tb>ȣYAz巁 GܯA{\:n~0ڊ'KSzuxo)R FC٣EdgnBw,544577 hƚN 1LqqqP__O/((HTqC-2n3JeZE"QRRRKK 477'&& HAdII =pzkX,s򨈈FC)!!!}}} "::_P(n[3D\9#aԦQLl)7_w*oF|;>s= }SZ f<"J{`CY]NvflT=N"8?{$z"9>%9>(Z|E$)||D;njޚj֭[GiiFcR*B`0\v-ZsNɔǾ#\nAt|Y$bqFEETuQUYYIE#ˣ ,,dffkZ.{RSSE"ц ٮ3g(tPh4KKK;;;<33{1L/_.Ztйi:ݘ8 !4Lһfkh A+JHWEM:޽{9,`xE%B!'FRqutt\R(v0rAwLxA;bbb4 'XWWsI ܆j~UWO/_2_MBg(Bh7B;nn1n.VEMZ2<@|*+BM6XzC! '@)fK,B!rKo?H0sn6#m$513!tD+FF.{9 pqn!t0Bh!` E̴/ՂBҷ.*ӦrBR(Ki6^a[\!t늋!BS 8lHCB~9;8q'N871B!f)sS*Bt7_d/ fAec[BS/ ~CpAZ9L^MGO>OB!4v !&qu.fA tΝZG}#=B&es2q9AG:A!B5^ !41AxG7n?Hǟ#F F{@~`,yyB!l^ !F/>6 5,HC!r8zOoixˠ_qBM[///!6B"OU`ԮF9yq%#Q>8ɷydh"JŎttt\p9s̘1VN+))j$WjP(lnn6 Д73JlcQzsÏT٣ANᜌ&\~]Gq߭,mV^Fr@ FT.^M7nyr]INN6XzCM7XzCI{5wr؜\]!tn$d "~~4Jjnnnll$"==]VD"^_\\- ׯ_~EXbL&;x ۴iSQQB?}tTTTTTӧZmHHHfffYYYuuFD&~z>333$$LJDEEEtBP([l*//g/BSBwgo4sn[c-BӖ?nBꛟ/Akkl3gѣGI%&&jf3 D"QjjNX,$9h4?qDOOOHHNwUQ}kcѓ݁a\ɴ ,$n˗/~~~"h_lN,Bsn"аjժǏ>}z۶mx\D@ "aa)?xd2nݺ-[׿j瞛ruIŖee٢"с߲\Hop2}}q `ٚ3,'jaj0ɤ鲲7F"@ d'׫͛7'd2SҲuֽ{ 8NEEŖ-[ZZZ2Ezȫy/E|*Ɖ'"H}}}'+.L$k֬x޸h4 ?~WH&),,bvvvpYSNڒ7xC~{'N˗q|;c`!] 6OX.b8zX8 `alذaݺuƓ'O,j sL\/MX 2 c_ ן 1pQ455mذA (č/ >\&6lŬ7Ko̍e`IXf٬`+C2ѹ'`yX~orɔXLvV[mxxxpp mjq7UWWL~Io )q=͍nK-mѶ|]n׮ڵݫV-?]Uۊ.tH`jnnnkks]ᯑf`I|p( exxx&MAs]fo#zpcl \6vrӲ 0M3ͪ?O.PMM͉!,LmKKgjoKFݼL:N$a..Vkt8i! Ӭ~zp$9tLΔ NKÅinx o%"bݱ.qVeiaXE}2pj7)Opy1&˲οV?g˞59+J>gU1 G8CmG_N:dQQ=oG|yp]ow`s1/0sldFӁ`? ,adٗn`:睱?A۶m6 4ͅ6223?~|xx8Rn߾;wZSOdջ۷qbV"_Wa{{ o۶?iK'o$O@}Ò溮zظeKqsr/n@=t]w[6c؊]v _Gx͚5Ԉ465S`0XWW_=kdm'O>o}+_)D7c׷e~pmeEኒT΍UҢTzӽ)YUٲ:VFhlPk+vۄDKV ޡW:F{q]i$Uqu0~?9HTʲ@ ?"o^}Ցg>iu5W]]:_]]}...NR?;xueջnCm޴GWq%"+>쳮qO]wXVDoChT@@ͅb"ё|cék׮=|ƍ~o\wݾk/|>shW_3-s޽[D|%64lNvv闛_{J9^LGJKK㎃ 8ͪ+??ruȑ~XDR"o7XfUDaUwʲwoJ lz+ںթѱξ=yqd4{ca}5RT%7:3ztUk~pqP6EUpӧcMMDU"qziƱL&366k-79y֭[$;߮Ǐ y^xo BW>om߾BDᄏG}n3g<䓟ğC^]o;w|yg/WUUeہ'|W++o;|䮻D5ќ%۶ER=uuuw_2wSOukR122{TXXLvVu<{>> ?~}-Wr6566Ki90u^>#nLk6e߼R8h0ة{WDK{Siz"YgFT+""VKWmYk+Wˍ"3q"==D2'V{t{|<__^3<4f \cGqq4lƛoau"Dx__Jo;{JDFrvzɧKeYԧ}ٿۿr_᭶$6 ]{5a\2U+?94ʶovv`wt`aAѣ칶2 C#O>i?Yy Gd١5qn*=8dTEd8=*"C1 ہm`ܠ"=R dK?pi&"*U۰mܸ1hYm N X)o".OgqIڰ,:"rg9cեK#K" a׿v 52ӛ}曞z??O]JYY&"EELfGGGGGGU⒒70>O=s7{}# ""[TT<#-fb١_m*"z1g#a[DGcY) ْksJ:cRi52(=3=M\C f [Z[[ssI_߄.wb4 B`0h۶JoPWHmmo O~Esȣ⢢dSm;;NHQQQii闾 NRPPpM78Mq};M*988XVV&"#1vϞ=CVZDDdu]ݻ︣0/gz|XHnտ|{VG\WZG3٬ԭ,5wm*k3M(|DɰLm"d6voJ^;ؽ<65۷?} l;B@ `Ƃ-o*"Wo^O~+JK@ii;;VVWL&;;;}?tpggg,o8Nu0䥗}t$sgHggH<cǎU2M;$܋#ؼionkW[ABrge2=ў* BH:_RR`, D̨һMDzRGNn][_102zq|FѓVJ_K$>3:raut[me&t\X=C"duulܝ\cVXEE޷dUmۡP( P(d۶ZԘC^O~z#t$R܂$^7t?^TXTaG,{-(3ٹsgQQ'_zOEhS,nff4 P,˂yIDAT^*"cuEغ;%TݼMgjng[uڥrUW]uUQ̆jm---*YFZRVǓX&Mq]r3]z:7u'.t Co(k^͂^d2"b9<6 PEL6S2ϙpeY:ةr٦bP\\\\\\]]-"mmm'O8SqE۶.Eyk֖fՈc*śJኴX"m-/wrl3 #dirjaזz7_uHڵxオG [[< PM(w jzK6FTR/F$ԫ뇗8p3庮nBL&J7- [!A:N$#DX"D$w 64 M6דZԆW>ڥ^Nmx?ۂB՛ofg޶m溮8a2im2q^oyShS,&ʼ#rWzʦ!U?3Mm{񆸰 Houl6=ipjN,!l6߉ةT,MMyh)o-/wl[糐iTnSM^Osbhj[`tQ=PG!TS,M~o.E*"F:]Zܬ]Q59MB 1M55ob3M3c,5L;iyPgXHoYaH$nĞ796;+)O&US30 0G?"ȈɨAujnÖ׋ޚd;fd2eXOqaZ˦*qm*Rnm* ~'Sg` Ŭlֲ,+תTx/:t뭿ᆡt:fծB0 4M5MTM_֪_W=Q&Hk'7LyVV0׿.t,+ ۶kkjajYzMmSo^ Cz̚*Y*mjC=w g3M3[mU&W6SA`^K)oRKDT26/3ÙaYogy߼6jDrym`TK̡y;tP m bCz\tAmr9 o\ox_`#.&UT55,-7|ZC/#XHoyQ?O###T*`Y̩'Dz̚T520LӴ,+Au6۶>7s`I Nw4˲i`PDl3lsU+oЦ^r.C7\kRqrCzڶmTG3MStSx3\VHoYBjʛn8"2888y,o7,$L&8 jKMn?`T83Mӛ Ѕβ,}`#fD2DZ,KEbSNo?`T}3Mӿc6t7`T}SSf@OԆyUXHoYSl߈n.77ukL!yAz 7 /Ho@^ yAz 7 /Ho@^ yAz 7 /Ho@^ yAz 7 /Ho@^ yAzƣ><IENDB`taurus_designer_result.png000066400000000000000000000555231514602004300333270ustar00rootroot00000000000000taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/docs/source/imgsPNG  IHDR7]! pHYs+ IDATxy|n;S E$gFT Z)Z/jE[Jxffgvg;ߙJ?T@gPoڲ֭ f_Y>ua9l3g5dSVS6 U yVNIi Kg9MrUXj[,WP;(4=ٵ9xǓZvO.\N9&+?%koɽڣ˺k֭[>qu?_;剭]8z?Fsz?_urGociJ;YwJBiSh$)M=D1ŶFN|Sm/ =E٦i]bBX鵝-. pLkZ;?5;􇡶ۿѭM nXKolk;Vt!Lt\ _49;Y:`2:MyU/O}et~^E\zuMκDKϔ*YL!;i)$(\\Qct7;SlSsb.ʌcg67829(_# [sl>zsZ6b4Wod̘W=ߐ!M+uy+H%c-GƮ9lOtfiWMZd$\3թ|ĦʽL; \ӪC9?Oi[-&񸤷w7/E'7|_щIMBqOĂ!Ǘ%oo,[EZUfaK^ψvHs!x"'aTl=|/b~1fCbYMkB$#ִCPފlp۲m/ݰkCF_9(ci&ױ~R]xUpg=e,+m $Y'8|03:U_n=#!D)IG̢bV~~uʲraCMڣYȲ~ô9W\wd~\liV~sEw~SRZ~(Y刋Trnw… SҺW2-g'}RQkGN^SCrW]=nboUq>|-w߃l:jXM6nϫڰjqM Ozhoo\Q■?Σ]/ˊ, X{܏s{>tsz?փG9^WS[W?+|M/r [K_>_¶oY(3Ώ[\}Y4ݢ!+"G庫{3m? yEL`<"&q1Wg1W~,tJBNE6I&IHP,š85JkykE)wYÒ{5<̟}CT(B9)$~7iiU5]2GtAq8bJJ۴y Bq*loYlLQAIm)ݳ ?g`R*j G?;o{ymk_&Zgs";٪ҕ̢؞c\?g_ٲ&?/mHE(r?kKY눫 Ձ M?nغ m`/hݎ{esc$%^\YT'-B Eq6 ɱ)yݶL9ig\xuxSwBe{(^WW(Bn}^p8E8_I$.>v-;\QGqeop[.8{_{=UrK}=hBȎ[kN_Dr8u䉹kYwm<]4,a]$X]'{Y{,ۃ~q~zwIڰm{TB/,o#8_=7ѣ+,NbM%O{cFc,_dK&SYJ)Ml͹TqL3D(kpuK+bZ2[^^6 Tl\fǻbuǟeR$ !Ëݸ~UDmMhVh[zqfuɒ%/]rs*GԀ8[yqUW9,9=qtq{g̭ÿ]nn"$$$!(”]H'>NMGZ.|v]] }=loi)zv}%!"+נY"ELBmfa2 !UiquXKiCjkeؑC$EWن'\x僻Iow~䤇Q':0LvYD)ěLTԍ=>Ė [j-N[o;qFu]uNl|$qB$e~v:*fb1,YvM?[\q}=,>i}a{c~e)EʁY=8yJQO/bI|5 N|JjNKܡ_(zuD\Rpiύ˵Gg\2R$iW=%M86ZR$tug5kXZbZ7vVۛMϧ&?91wΔH߾j.u֛GHIۼٽL"I5_"&1~IHRm÷^8~wYU&DNk,]4D6,EjKSWueut,yƆĿ=9o̊Sf]8UGQU!vֿSsJOSi\}cҿ/-$aJHb5_!IiU.][]5Uu,<[LBHś҄Xee$=X֜K$}yygk$x47gle[y=j,mtoJL!sJm_`Y$^PY?wpĮ[E?:b7V=6!Ii\Ɣy?%W_[cwڎ湯JKƙUlt?v;0N[c&{_òGQ7&{x<uXl>òmǕt~?E憵r5רL&o[OS_MIb/U>%ݷ˲SNm]KZ-󖾛&57t jeY;wift1YЗC:μB|YͬmU!4>>pMEBPq>}OR 3, WxE?3fx0֙,^Wگ'o_u׵ci]9 !DKK3<>0$zBJ嘧;{tZeY)_Ӻ:EG9g̘1k֬J)nsP]SIŜ)p8:xNmm~{cGE LP jkΝK/"Τٲo:^yMMv|u!w)GQ- )--<|pf/^H 44QtrG˦limo A 44KSN}kbccM&ׯ`0T<;xNzzo6EEEIy ]Ni~Ceso~oEeEQWWG-X,(IjjjvtC6gIwѕw`]Ni({S?x$wLQɴgfMte !\AMGzMEe]3|xaɛOI oaS}ǎ޽z恼={ʲg>|뭷k>y5"NIixJS~OLpzt']ķyw>?KKKg0W^OK>pذa_Y?)(JbbɔرcotBYvZhx//o V[ee{ !՗ӻ557z][Wm)mSci'_xᄏMߤCVdE++OhmuTUW%'''%%^xх;nH$$τHJL2(EQdENJJn„/u$uK$$&7:lpS9zbc=wY1c)l;vʲ3޽ѣzmm"(BRNGQk%jO1~˲RQq,v $V{KK]lp"ˊ8\̳|wOlSV.߮%}zSeY|x_8|8..wSx/n^YyollLIITEȋB!SYS]BKYn+y:銾+WzK>x<nzMΝ;,^XӚ?ɓ'i6%^OWl\Ǹ&fhRoq<|XCJ++/ vD,=-#-?o2e.s\z 8\K4BG4=") @HizDJ#Ry{{vKN vbQU],/p,U +s#R2l0MB%!F8p@HizDJ#)m98_y;qp44Rҕ'K a~̺^Wur_0RxOMTS׀GJ ZdFV" c@(BHnC}-W$/p,-Tcp4zZ>6w{@G=~g ?*Հȡw ot[C\YM__:@< K(PpQI\@%oWA)MPt&|JI| 'RhͅIĥ4 plaha'(dT8r ??WչzUx+///ԛb"a'wg !MAڋ@ >Ԁ祵A>"P>뱴 &$/ZnK4qѣG˲|B!lj#j@GԀ0kJիW]]3ZTTrM7O>drr1cӧO7C ͛;K7LQKLL;=sN_{ݻw/++[h^z|P5뮻ڻwUYYYӧOOHHرcǢE_λvرpB0.f[n{l:iҤ}JjժO>} }[[[?oV?7޸˿ דsrr8 (((:WzHiC IDAT|oONN~衇v-HIIhР̧zJQ=zȲyw{MMMu8NsժUoFBBׯ__QQZCmm%K80xnMMi6ꫯ7o^mm\ONOOw UVV!_q ͏"S_{+ѣGuy睷m۶~AQ"ݞ>sueym檎=~y !~G!DNN֭[wp8D(֭[NguuCRRRPUU~EQoߞdX$XR=:lZF;==`'=VktttuucMMMBB"99ju;I:W&%%?-))iȐ!?d2yeeeW_=a„>KHHrNZZ^.8pॗ^f:t544 !l6,ED !y1ģG !\)wޮu֭t* @p=NJJrwB7.\_zx`O7o;(㏻ϊ{饗_|5e Sgff>|m|G(Z: yϭ[;l6wu۳ovРAgy$I?O?,UUUBdff=:111**K.)..v_͛srr/IRLLL=N߰d!DyyyKKKTTԖ-[ m2$IJHH8pzZĈ]#F6onn=zt,_|ԩ5˖-s_EE;s-666\^Ȥɓ'Ĵ|ǎS_kIIIf?ywח;v/>}zuu͛9[_x)Sl6[qq+|h?s !$UU׬[nsP]Sݒ:}@%2ou;hР.;jyKp~Y0C0ڀFU5?3;w\xq||&c3 .pXSS3@,˽{~.]nݺӟ0cƌX&j#j@H)Aꫯ;w|;xŒ3-͝8A Q\)- D&"Z_x1z<~i jQBԀ`QJ p掠@'j@讶C'G@5 j@pt)-8[5 HiGPFDHi@P`HNA ȋ4ӹcǎ L'W5t#G58;_S(k׮u?&HOO///W71bԀ6h@q( WDEEڛn˖- Ć ] K@hllZcժ^Rqen|ᅝpD 8cxHi=PQQ>R;:=Np2"c䮶6l͍OMM=z:lj4C[(ເe˖3g:΂&8-sҥK.]9'_Q1' P|AJ ^hÆ Spa t}QJpFCD:E/AD@7 {^`Hz{ÁŷPD8=_P``DG} Hh5+HizD:KsǍ9`0=ÅhF8pSapmP-Hij@HiF b18PQ{(d;#HC t(d;D4hD}ڣqW[0hs xF8U Bg8_a 8)-PCPq ^m  >"{ ,Q/= d8[(ʋtt'%ܘcQJ#uA "z;{(d{@ S'=Z˗ B'6rȁΘ1#&&fԩ{)-- ګ !Nz<ZXXX__ȑQF ~O FqC ^JKOO///WaHs9mTTTKK9..Lf247C\)-@c466ZVjm@&F񬨨Pgeez?/ h8 !2/mذ!777>>>55uь42 #xwزeKvv̙3NgAAAIII^:pC!uϥK.]4M"j4e@{`4Zq!ǷPDxvlذa.,; tgEP`H7D= v3v=:WzHi{G!Kzai!w/n4Gb(n4#kaQ(nZ7R \`l:K .\`HaTtg[( HA څWq#E 4 *]qcBP`H7cU}-B^{'CxHiN wM5'L)-QQV1 ⦣qW`Ch AG)pBg_QQߠ i@!C"E4nB`P71@E8T1=ԷH @cxt]/[d2Lqѝ8_}—R,(d_7"-wM'T`ō8#BZP"z<Ǎ7a„zn !$I8qѣeY^|yaaa{7 42i$I䷔#G8pƌ111SNݳgOiilj>:flr(nf_=Nsǎ ,0NjСG)**5jT{=^|{@Qk׺HBڛ}!k@X7/QQQ---游&?~e|mE~O _cxs^DZ'466ZVjU/)8LW(d3ʛlٲUEEEFFƾ}YYYjGlj3\(nac@aÆѣG x5c0|!↰lْ=sLYPPPRRDFDz<8$#R6b @@bP.rc@Ge 0Z/] 7u*wNN/ͨ|4CiF836>^=sNsU7D0HtU ?(nڑ=aŭK|񌉉0a/IRqqEv$I'N=z,˗//,,Bx jJ@ءiAu)W^uuu@|{dٲeMMM۷oB :ȑ#EEEFjo""]B} IJ&"2<ᎋ >>55u'~U 0Ho7quGN򖗗e˖3g:΂!ljoH|kJ[` NtҥKj j~Ȥ~#Qo6! z9]74R(n~GJH'>G"M5: ;!$ D,5iKzq'\ y&Zt!5; /e @e"Z@ҠkjT11'A@Jޅu-hO7o#I]3c4 .4.~P) aS^sN溟-7NCV% t4BG!]q*_B^-{;,ՄS4T[_1Bx1z<I*ZH&Dqp4J* @Q") tzE]A, @q(4{꩸/Eq4D CRKpQJ#x-BNGccxHi=_^=@'G:JiN8E~~~7@h-G::R΋u֭\bΜkj;}nIo`[oܹsqz3///ԛ4K#RH/I&u:eǏW>|x̙F1m4!D\\ɓ PSShѢݻwgxYgCO֞\I&N8zhY/_^XX4 Bumʔ)>իWw`߾}>l׏]w]mmc=6p{穧r8h>k7߼[ꏲ,w:wȑ1cFLLԩSSZZwA"n_lY@PSS#No~sefmݶl2"C]|nߺu#G  }kkk{;t#G5*o$p, P}Yg>fvmwyc>-[!wa W\q֭[<UYYX^^7<~VQFPTT駟*{: WVV6|͝3G)B7ߔep 4ŬY***>unϞ==ٳg'%uTTTKKk񦦦l7|gk֬ihhѣ}WUUUTT{onnߩǹzݰaCnnn|||jjѣՉ/8)''n0LzW}mmmݲeIQQQ?.[쮻={vuu Cx%33o׿k.q-[dggϜ9t=TU]nݺ+V̙BuMm tKN fWs% G4=") @PPP57hDCiDCiDCiqCg]h(h {4qV#J#Jh;HC J3a);jDCiDCiDCE?RZ@'  ziӦn B544%4TȄ8g2U#J#J#J#"|=^^^>.++KOOwk222?ɲcǎ?W.???hP!q[#薖qssjX,CO>6!!;}]Ǐe|3f:kJۼy{mƎi&!DNN_.ٳdJJJꪫ?lq@ŋO2fXB~g!l6ޭ[ 6|駾o1vprFhp4tCJ7wNnlq6-(((((Bl۶m۶m>n"Pb8448_ydzc QE+^=h>@GЊNzh(N/R`$YºاjDC!z4 6X#.`8*4t{LhDC! BtiDC85x葇6oouB h(0GCu) vP) @HizDJ#FЈ?]&h/ Piv >U# zЈҹBC#=` qV+R; R􈔦tkDC") 0$F4pF4T -v@US5DՈ$c T(^=a`=8 x1@G['xyiA'=8CՈB ch@J"a  ) =S !jDCubW @G=p^=!sS)5ka^=@'``Yh(c |hBdrr1cr^?PU`SZNNNqq FЗ0rqYYYzzz@_0;BTtttKKjZ,zB~~~EIa!)jm6,M`LMi7o`W 8. P= h(B&2SޑG43CCGaHi@D!j†b #>bW eH~h(x#S h(@gO"cx3c0'^=IfEyiaNzh(ҀHCՈ3.o҈ o4ABpl(,(4xhDՈ:)RT"-R1@X^# S^=!s@Ո'0ֈ/@(|8 QKừ2 A"jO~ l G4=" 9Ո) LYh( ch(# (v{Cg53@W4 p g{Ý8:ȑ#'LiӦE9N,I^yI:3[`ƍrb_rM7{1c iӦ?*r1@z^ZNNNqq F>7!!V>eeesm6[FFƟ'Y.6vRѶXHK1HИhӤDQIЧMkL+|57& 7/!^, *`[LU,>` B%ݥtYC{osfs-=H$_+fH"(c tT)x<׮]39sfǎPq˖-{M?@嬤,EGH"(ꯨdzڷo_8|vF%) !BЁ^xᅛvEYgRVAi_AI"@ 6nܸl2qYYŋorssWݲNnFP"OOV=؉'WBTVVmڴ? M@MLLm۶/B{WpoooWWW-ЁEÝ b۾Gqɓ'OD$`^A3 ]{cp (KA)*XmX(F@I%MAQJ"(HѡJsQPUP*qt @ʜqOߗk߈ _!J%\Q.SEYAa~x`! ǢJ#c8]_Y>/JQJ"(({W$$E 3.PYAa:AI"(>}YwWiNE"Vr(ZAI"(8%9)(Vyi,gtX8k`^JA/~k$TT.A\n09l* rVAeΩ!(wJd0J"(I:E9+$[4F (* ٨M˿I!(󦏨QJJ1(*EPAPekd:lI%IJbu<@fTr p+Ti$DPƬ$ȠҀ9AI-(YI%IW6&P47Js.$̊HrjPTiR05I%!Xix`'A0 Ѩy$E͵&H AI"(I%iAAq [AIR%$X!*jQM׫JAI"(u"GlҨ,bEAI"(I[hq%)Unz"DPJ%(~IZE"47E:$h4Kǿ^$irL%$$U˸%&%6X{?z-^JA%%D%$9)$4=x Èx;5|_JAI"(sIbx 0j/NJAI",/~l%AexbGBZ֙/x.yfM6A AI"(I%$6(WOnK/1_ǰxlJR|= (IzTz!ľ}92/Se{^DJJ$DD\T@ Ҿ[p-2pS?TOpdc%EƵ \{ɡJPUV^r kEרQ]2UVծTa&FI;HRϮ>L3I=FUډsZkL4R}Hew}H=י'TvاW6 Ti*bKbcleeeWggo&hll,--=wݻnSZZOWUU]ro9tp%Uڃ>|zn{嗇ϟ?owVXX߿{nh4*x'Ck|7߼v횭HqqmFFF7Zݔe0X,XPPS tٷbŊgϮZW_F---ݽuuu[n Ø_+N=.\fÇ'&&FGG;VSScwtWXX י׬Ys_utttŊ6R+Ӂ@Kh#tS o:*.ۇgffrsssss|ˍvqjjҥKΝ+++n>lٲx/\zu|||w}pؾj.]ScQpO ;55e>M:߇{_;}tW\xԈ=bю̙3;vB[lٻw/]<ϳ>Fo:F̎hGKuy恁 .O=sWZx:DBD"g>|D,?9R]]GBU[ cX(:p@uu`INNNKKP__">F,7V<揊z殯,u}i.]*--5/Y[aܩH$xbs#d;dAa477[FGG[yyy/^hOuqƵk~駖XqqI#u]ׯ?q-ի-ZdҥKz!G^ʕ+,Y288hw3ug#t *++srr6m/00|>D"֭xn<?seeo=33344dwtWVVuo_}.=?>>:99iw3ug#t ~CCCqqq8 tYWRRa!D@ ٳg9={̧,7"s6o|w;CCCvrߩ?~;?ŋ,SNdeT${_Z;?ab5 '6k #3(/">=PYucQ- IcDL J3>ܙ]4w}eŵ4ɵ)HB|N! fJ,4F$JĠ$[ HAOQ* @ETi*JPUTD"4Q* @ETivzgoJӆ ,{$:=mki6Ot2 D'3 Ot2 `xoD'3=Ɍ'md6sLt2 `9&:p4ݘ=eFIENDB`taurus_designer_widgets.png000066400000000000000000001416271514602004300334600ustar00rootroot00000000000000taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/docs/source/imgsPNG  IHDR ^(ig pHYs+ IDATx^w\Gǟݻ㎎(]HWD޻FM{Kb5M1Mb5ݮTDVA:w;pkgfgvSvYt=0J``QL a6 0m0a`0 ô`@$BtY|4mmeRl޼F!`0 hCa_iĞZJ*Q<66o޲iff`<FlYZb-UM-1E)g&ӒeS &sFp@seND(u͂7x5o)h`<h7txݚPrmv7-)g1EQ3f).\㍑#Yx>N:eE QpNV2L-.fm2mD$Hc) -*..72a0g thDhXekrDs4P( 4o8ٺ(sȪ@۶ ,s& sOuڸ]z5oi[Z,!Z-ښ:3O=JZT8@&Qy0a0S$yYx,i:!d[:D,=Wxi0fw4mXbMHHH\t `E sFuxfo+Ił$,xYi2G1oܶm=`_}jt зpy*Mobb12>ㄘ!;83H2t xQ0#ԑY39W/WQ `0^P h*Lƛ&o/$M`D 7;L ڇ @ucq}8slJF` T|CZq x 0V ƫa 0L a6 àܼR`QL a6 0m0ymʯV>sim.Z |K@ݷ߃q֪njTUԬ/-p!0 GtOG^^~)&OAcy$ǵi&.> OVqAAYW7 5+c9|y%X#8LKL9|i. ͷn޼4``~A߳yL:wǛ SX{ӯSK> (8y԰^ <ͷ\h;t4VsN%K?ÇB~QX:66O.FL٧KweR>+Z%➿ܾ}뉓'OjߴyKġC>}88ؿ3wǍ=O{+ 7=t 혔t.//ZhࠋEqs=zh{ٴԩ_DoݎвeK++-7w\]~zWGe6سgظ];oڰ>}ƍ=yI&лx{y'$ 4pv)HIM_~Ғӧ۵MHH8u*Qwޝ`9s9<`@f@Fܶ;tѥ[={KG[hq܀"NHS_@]#DF=zL&stt.Mt|8{=gGy-\ncm=t 2XR];͛c\[!37 sv>>s"C;T:KJKNIy𡇇{BBbAAݻzq*:|\Ӻ ZxOu<1$֭cCTT F5hxǎ#ZhXFZPPpӧ5jLHH6pw9uBaiiMv5A0ƽ{TII>F7;ꍑPu<;''*Dn=D8bOnխK7mml 2n][eWAn. 7kT Ա,-}fs>z.a{֭[ϚG/)( |EB||,d%%M?Hc7wΤVj?i~D[:4"''m6md/֬YͷM:cH ӳMBb1SLSщII! L)?zTUըFkW7A011S bcmѼ҈@R*GGGПҡ 0,T#0Н!DTfff6j2hU}n:eRm7}c/Wl";;ر^Uݳjr{{+Q?j.8F5xm(=_֡c!CKSG`p{ )S3 mƬu}Vfff6&N6pϨ-3Oy[^#G س3~S]223;w$cW222SXx <ϻXۘ@`͛7 v'?`駟u޳W~/'t)T#sڭǺ۷O62p͛Scvvθw6rԘcdEE??R7ne0X4p\hNjt{Ϟ/W,y;s/[uK`gT{"]\V?sU??߷2 Aj," 0ѣVrW/_Z ѫW} {ZyVpa1F8N<g6v,At :d N1 B#ax ! #Q$#\2U@."2CA!2$@40)c!0B`jRhLMU!z$i4jhh`ç_MŷL-\dcFvT(,JJ* Hτk'1|x2yI6v 8ԲseE AKb^JcL(0Hq`EAz$@( (2#AL8۷WFjo #clbbBj]VVF-.P(!<& @cd"Ch^KVu'wWϙCiB}{rjFfn~úEHstPPVtI'f--9B~#^{MhӦ)v[[mya !!yt-wT=Vyka$|xbOoLU*!1@j;"q80(2\ED0B`DB8DBFemaa!Pm$$${l5y 0ƄA8Eݹ!cw-=kh`W!™{;=0EQZ0M ߕ@ ڍ4܏7w.q䔪RVǿ]^DW|.ҹes TKc F]XʽbGQsW͵`<8cBB+HEE@6VZaL>} !{رAȼTvr}SG-BnF>EkLB8s:0(HtIAk=F_X"!@Ep2v?'Xj(FVx@V.F#r`E9DŜGZٻ/1霩J 'M(i-QeU|MA!IM aDƈRy!|}EWTGDd}N] }at,ZaXF{V(rF#x711_LEȈBBޗVbADŽ8E#8N.kiV5aY"d2=5BDxmʪ{⇼+LblF)9\sLEڃC2$.*l Av*aa҈cž|R F^¢c"(8ܸrA&e @p 1BH&i4ciͷTc 鷯+?fˬ<{mڴ *~l 9FiS# "8,3\2N@O]01o@F`@ Md5KYY9n..ݺu&Epta:h0kdUa̅unZoS:ZT jrVyB "氌H(J-n'JÇf"GC(J{/֍y#"2t9T1gݪULbshxtt4p߯^PxN7[a4tJR={ml U*SG%f-]rЧ@t eg1߳c u,@\Yfgb{4ZnmanެyzIFRDÆ [i`~RSM$''߼u LLE4ťw*S pY ! VǕըb5w!SB8G+L\W{Xʕ+-Z'BIMMխ}JP|IMMy+x Zj``0  aӧ-Kg0:PQQ`0'x`Ĕ{'cs S'O2U`v}*BH~7߶n۞zeF`úݸ!4kd;-Ƨ̖cژ4yjhh; ] ){VVv"1ZZZBܳS dKÆu7pt4X#a(SVc}*oo>mmmu) ;4OIqqH׫bOܾ]R~l4 sƍ}h8bO"֣~+AS:vxGyԱÒrk>jw||< GG6t艓z999)ӦvƨlLŕ_ҵ!Cߧoj~Ƙ7>ͷn޼h}obvvvf`mmգ{;wʿ)|֭M Gpđ!Ck4ذqӔiwg?qb'_п'NH`@A!D|L.EE&1)i(&%톎+ccs?jܳgظ];oڰ8s}9zp=P&}Rss|(,,ka6mr޽۶а/bHX4k=tE68lt\fN:uU subQ2ѱKx85sؐ,--U*kÆQcrrrqII}`@~))婊S),==} 5JqQ0Ʈ..B;F9~0k_h;oK3bb€x{%&&>O'&&IR ^rrrVWstѥ[={( [lW+O:~}jY/[\mtڵ>{=ڟ?dSDnܹsIItCR* Ç4`mc3`mcmoo>yhƍjP*ÆY&++KpVV=\qS~?ZPWHyh7\\\rrrg8;3t&Wࠍh̃Qcv[AAZٹs5rsm߱Sj4K/YQQQfffU"j;\]]TJ_E199ȰΝDQ\xϛ3ݻ\*͂ FѽK8TK-5"c=U*Dm`@@^^^?^$K _6d۷70Qŋ1^>_d.033{ᯏղeY0FǷh|˩gVXɧ~G999mݺMT&MK6n/3[5i_{fM6u);>$AWz$%|[6I#Ƨ'&&Oɝ;eeM4Qտl٦4tTS%Yn+(,Xxiݻr{w)g WlZ `B[ +an0a`0 bWR>=r`mmcieѼqr%sWRpj۶xiq+WL:}Ǵ߹sx9rZ~+V,lR+93a`0 ô`XmB6lT\\ ;i B|C/[䔏Zx{w{@%Jm@}4pm6kT/dSiRR6B˯noT*tcٱ~3gΞpҦo;\I2`@" Cuڨwٵn)׮_pu6i}}u @]"0/ icpt߽[Wi㤦^p-ݸIaieI`XTЎ!6111g@ƍMwCŢ:mF5T)==۸8K࿐x>A 8la>WxݨVnXO]]\ ~233N:ZXKw`0^ X{]ۧ7 X[['ymdxx>ô`i0 aǴamm`|_ӆE\\xZ9[\rȑƯ7g0^m,,7o. c\0l,`i0 a>&&Fjc0^ x5y}(>JU'OlԨ# !!VC>q=[nM>_wt|hA:ƾxK:?j r6lذa7n袪CscOժ4!"N]N6ƍ嗭޾?12!*2׮_js/  تFZQcumԘ_0mƬ6^|w~e˿7~\6휝[޺} F9jLVа&-X8!1ifjOϚfϗ-q޾]{􊋏xJ*-PeAeb~V?M4ЌX:իӷoo qqǏF(MLNǜFDFF]z-Pꕫ /''~f͚:l&AG ۶<eF}u ?!=w>"d2׫V0j9v߷l~DDغvu_> 6oٺymznO>םy2Ʒ1n/^tŋCeLQqhZh~']B.8prrJvpVrGINN),*zmP[%|#Obiaaccck[T~^vJe7<<<!//۶ܴ_|:cfddjpFFf=z*J.gee=֮ٹ˖Kf͚v :q8`4nSR){zhlfJmЦHjۧy1NIM}Q#8(,,ܳoc;Tȩ፴4Z/:sNFF4kTR[QeeeeeeýJe6Q/^t8H]1Ɲ;~⢢"݌\][ŋ:tĉWv#t[޻AږV)TzKKK{=ʗaO%B{fϙgcc{qwzg~VVV}zJӠAo5hpk+?__ZGߟ삂BJ5aף<<^n޸ns/XW?^Ѽu4lؐbeed۷/oBƈס677k>l\qc/ϗطg ?^>lؐ!e1-qR45())uvvy)cjj*5!B08cǎ?CBB${ennP(q Ƌm 2$444;;@(/1涶ˆx1 JUn]SSӲ2AjGqP(T*A L&333 B1ڠH6cL"`0^% ?c0<رCjf0^X* d0tPxa9~u2ܺu{Ĩ1G#2̝z*Bh&+BL&rqqNKKkJc'MF=o;[1_Ӧ@\\|0'C KKK?ΝB---_K\L:uf𾛛ȨE/)IEƏ;w&&&GFqf77׮)..κ_ hڄī׮iQWssu-,*}]||,پ}ݻP?[HC!=F7;v4?vvp?;[V*~99 6D m!4nxa;{jDc+h$W_._}XrsB:W_.lӦm[ϳoѢi`dTTϖa<z`sM[>GC"!i֬ޥ+"4<?\>wGVV͝ӬYӊb9UXXԳO?KK BHn]w z>owEB;.>!-fP@!$((pZЎ!M7nܸW B!pik|٦uIIPBq!A%2@BHw8̩5LvNzޣ{vw=zyB,,_>UW\(_{?k&!ϗ`+ӨjRQ e51vppO \~#>!k۰at)oAQ\]Jt)G>?WaB!DR5rW7~bPkwJks1j:pP⒐l/[ Q 0L ax8txy` ~7{ ns#-&عW6^t1y^{ʿkcc]~CǒׯӰR˫bR.])Χ\:?gQu.Oy" w5ҁ---,8o/3gȨ*ty66ΟcXrnҰQF4,իWPLּy3Cӹsp~A:j5M6pȰȨ4sׯSĤq'le~:1pȰ!C׵Z C||Ƽ5V3ƍurm Yc>~NO;ٳw?OoAC>-ֶ΀}oH_ ANǜ9c#f|BB2^< kVtZ}u*\֬Y3ꇆrUmoPfMuZ2 sCDݰisbs3 iDFF]z-ؑϚ!>NݻQQC:{޽w玭1ܹ3s,8C3n|U~ _3t\#={tڸlei٠Aɾڀ%͛Vv ˍ9U Ў!<;88l"N4/\`iaQn:zvi:$4˫C`ػo7Fխ+˧NxpDYY١!ڷicZvvv4nݺ(ddfٗ>''GI7K?~ 8oqQ'OoEFgP5yyy4X:t{c}Uki3g98ڱۛ6iB< ُj'Q8r7 m[M~^ŧ3f}S.]m8ylԹw/ڳ8cccky ofTԉ/M?3gnziڷ?{66..ϗie6t@:u+JqqiYJjܸ$'灇;8%55jl)66 +wh)Sii_tsΝ hִJ,++%//o_[@޽6mْVWwn]DEHHH,ЦuktXX9f4~~mGG8 JR7x1\bff֨ k4k׮͛˩+g͘6{<k77]©qwzg~VVV}z28_ԠAo5hpk+?_V Y.((TTƿ[~\RзO{}>8xp}8g...k竼,Gܰi'Z DLMM6mȩ1^tЁtܧG_2s;..δzB.t!bJJjqq18ڿ ˍ9~< BStТLP(,=;Db0^P kc~b@5"!"!H@1Upb0^t`bx`0m0a`0 Æ IDAT`i0t*':?UC x]柊J?QXUOԥ[O wWNz:!$$4LŢJm[n';On3hpd[cIܺu[̙r>q!4/1ܧzrr#F}WɎdOJt _mtkǶ-׻&=}ϯݙÆȨ(c#ڳq0 /*}=z0Zy_Sv~t;Qj,,,2mo@hX׈#<ʢqIU!a>~|6AaM[V}MHhTÆy5rL' keOYf~1LooSRS[hg̘Q,3B}իpίJU\zm'}SQ(J%%|ǏFKKK7oڸQ#;;;wVoh4qqo|aûwϜ30 x)SIhN;ߩbnn>d g֧NEB?w8suuqvv>}Fy^9 9vShG77Wyi nٷoO£O̙ظx-̓LIIh(͂cxU_Nyz3OrVaݧV ̨JWmmm.***..~mDyUV.,,a iN WJ.jvǶ-'OEϝQݺf>8:޳w hY°6jM^^hezJT]/3qCSǏykшCKܑQ'~-vvvG>Ճ("߿>8_wU奪266W\aFCNc% ptt1Genf>lx' "ctO>JVi4zAط.m;vt|@?BWW|YXX(b+ԑ>D c?G 󆍕=YZZ&>mPPP\ʢ,-6lp) vr_v?]{ް.ԩ3l7nШ=_v7jխ Y ͛7*`[Ѐ\.t>eϜ;JK3ڽU+0tȠ\˫Mk4sTz155յ!k|x0T 柊w1 柊0 柊`bx`0m0a`0 ô`i0t*':?UC x]柊J?QXUOe$ߔZSt au,ZQ6^TTx۶~z֬]7m,fpH׫aVum],T i7o}g@PISI@Uf=۴A8(f< ^T) tn nw_hʕj'M .ZYY995|lSUͷ4ǵk SRO1g߽[ÿKJ.kBWtt(=ݽ{c[.?Zv6~~qqp66~zqΝ2-ig穓'tphĸw޾vs-\0?!6fegҡS&M{նgfRTQE@z5b{}m1hFc&FT4Q, ٥֙1YEt9Ϝ{93s>b֮$͘9t;o!U[~m@rruzliڤICS}MKKW(ntt!W72wώE:a/LD"wuk5m̂1=#>~n\HKiG),4$ߏ:9:RA?@ݨߠ;w2z}Joϟ(r32Y.MML!U M=v"=#@ZܼFM순[T,q[F 6=}ڔɓ&:rt#/Eoʪ+Wv57ngdj7^8lZX\^QLy<^uU5q?F2ƎÏwM^ߪںVVVFQjV6O9^u'ۿ__:lc>r?7׳ŋ1>8((9%%+tWѭԴnԷ273MVv-[9w4* ffOjoby{yFGͧ :P5?U>WTT%%%ϋR IR|93<|8,,BBVWWl[H#ZMdNa3/h DZk4Zs=8xGu}#"^_?ՠ!?z9fPAC)*U L`%\.7$e+ E|~n=GZ)߀` u|}yovgϝЗbqeώ~Ag0O`>.S10O(ts~m00 'N>Yll^ Æ >Y^=oRwٛf`a7300P0r?7w'MRumaQr =# 2fŋF>}|1`hd/SQvrvB ^m: jV|E0-w˳F7=m]]AP`nE7KUTT52p qpqq s3%BGNNJy Bٷn7Gܳ䔫G޹ۣGj߆v:y AhBN5kk)':dm[{*yr¤)A:SEqϓLb肂uUP繈~B ѣ^>bJ;r_Rˍ׏?vzr6;DM 71L?-=*{U' S>|(.azUܹS'@8pյ͞];jkkKbtjwD8JMɤsl|ׯml7i?_t1:z;d ;2n B;i3:r+{W(r8^ϋJd2ٲ8-ZnڴBU+gm6Gbss3BRNy)Wι#98 ok ƎɓTUT%m]]Bϟ#u"BT,)<u߆nPPb-QP(3MPi8wW{W/P&Mx<ޫTwD!@-Zl_yysfu()10luy\-715Yt#dbbBfE"LBy @'#/ĪTښZCU>}r-54$kߑA/a-7o޼IQ`݅Ϟ+fcX$ee8W Y$QCdUU}׎mٷ1P9}:vF{٫gN[L @H,PE*\r299e! zq1&6-=c̨ڷch=}*-͚9C(+/oRirUؾiS%d1_V#jڤɓeeSTTYf>_Tju"h 7btiSJ rsd55ЦRJnAٻ%UB‚ 8GH䯣`_,Y,!)ʪg5',]|Ȱ/D"Q C;;qcG7˳Mk@H,/[J& &M~m#>k066u`^'GGݚoݚ7eK]lugΝ-~ )bLLL SEl;<sK30|0! $JFA8 |#104>I9w߻S왬JV+Iḹ010|ҼIGO.Ǔ E6#|8Jjz3O?>n^={Pv 71qdg[۴ĵV+JрZd$oWTB 6­mkZX߸RRR2r8z30|X0LTj[ 5@괡D$`8rR UU"}277+.~u_DлW aΝG%@10|@`HCb7m޺4jMhhHmm\,,m0|lr޸fcHJ1 D`,C p1Z $̜fAѢEsccĤ+;S \Yjns3 W7%=TVV10| cqԯBG*@$B`< X,cms Y.M DD>͍EW_XbՕ䔚'OΙ]pPSIT$ɾ}zٻJJJ@XhȮ={5͋%00|<tɲY§ ), A0.`, HKIr X1'8?áWcFySJ5;kX;vޱk7|FJ66}eK-^/~19wU;Gޭ+-1jqH !c,s0aB \'j1h?riUgoܻw>s;G )ӧo/&Rk,8l.gq8\@(00 Ua8V nɵ E|R@0˯j5?>`dbB.UU^#yJE%Fk.m֯[ۼysz- bG20Я ˗wnbSSCBeiejhwç›fp˗NJ%!>kѼyw7cWMڠ&MXQQQUUE755D b`h]BP(6i҄^H~C7nǜ~e,xxC"?EFy> 9D/^~Q, j˗o4i~79?u͜?0 B^^ F]/^e}yr!ܐmi+TXV߽_F[AS۽$Q:q76-|VxGܿ;m̤x C#~Q 8-m*TTm7x8U@ӽwklJTJW~s.A3URR!ym]gϝ}e6jYѸ{x>[r-zYY9=_fvA5dE;jUڨyD͑Y#W_8V^:sgr%UU&L/L6%^ιsVkתHK T*ubRΝ&&&pKl@׆Rr)0um3Ț#C)D`bX<H!?92V w:dPރ|رk+ osQP]- u6x8o}u߼9w /04Kl\<dg7aҚ=;vڝ <}ZW(z^LgdR6?ԖA׬ z:FgCûu恃=2s}ûttVZ}3ָ Cû0ڟtm؄*kR-ߐ3!x&$oQuyoF(**:tWݴuk UU?nԻg@\~vN布۰qӵkb?}ro(_K [bҕVS\2F5-XTZZb<;ed@rՠ+8qTZZzŨR^O>;x)fιC׬]nlߺyV,xO=hen`j h3B$lFPgA"DkUNCTUuÕl~/W,_ֶm~}f:9giGp8mۺZXX|1l(˵wrtlmm0 . "c!8Ӿ盖P(n18(01 B(33ْ._5rP(;f4),M,kڔ8BiS'X6mZPiA?OM]j[ٸ˖<& /VyRRU^YU#D6l IDATƺ;S͘> ^cG W_MqcmfG`N^;f&''4*&1{ɉ.͚5>|8wzIWr]zÇZXR ڴn kjj=Fw \1!QQi*vʪ*\q*9=%UrsChd葳 trufUkVrS'O{ .=vvG+b555͚9P6]>-lʟ6nx+x.ZQ/CB}}:R/ 6}v]+oprr\h)S}%2m˖.r!᝽|.[P(`)oF?~ڂ#g6~%SNOLLYԆC]7I&<*E-P]B7 v c?ô@ 8rh?=(ߧ!s/Ω.BM G>}l7hX wz:Az|U'O wƕq wB/``hS3n$wUUU@XXСCB[o00|еADVV#hEo %%e֬Yᖖ6>A͛7'@pMDB8nd2F^WlRTT>Mڠ$A$j27 uDHTFih-OzS2`5i+OURԼ$߫a`/Co7("PR."\04: mtڽndܘ[X7aw/GwBhOD>+*2wbؙ_bX,i&:e0|V?4 umo)F}N>JB4z1+$^0A~ީRSݚ7kF/xK <3ڷs1|fo7.J8ޟ7xxX(Ͷi9=CL"c,<}BYiVȊJk:7cia5bѯ u="Zyvy  6hzg~u7mL ֲӎm?qK^ -f9oŋWW 3=1{|.'>yܱE *feFARX,"OT_׫׭۷rkhиiP!uu*"oOVSS8|*جCFF&d<9?~:qQO&prt VT*RT*jsΝN2#34kUIW'NֳGeI,NDC{ʺSIALJnsg/^?33SWWWЗӧ͙w&&&}#"r4mtʤ}afjӶ+.JeBl+**ËZǧC6æ7Ϟ;O,O8rqugX-7>lȘѣtސO%&O?ݠʥwl ryFF {S sΛ7oҊހKDD3ѠGC H$RThq6mdddaa! &z! --- J%Ao0B! F]8s8CCCj.Q30|е8S 00|NhA?zT?~<Z9st҅Я'ObͿ-lXIKwЁCㆮSN 2Z \$P{47l0nܸ0###F =dȐHLsї4443ko̙3cbb ;WAFddk9GB74$ҐHG+;x۳r333U*[/30|е !Tk@=1 4Px/-8/̙3Ϝ9C]>)}[?C,y xCT*UHFѐ,{a l@enB*mov-[k C?{Ѡ6rrrEV%qǮ-Zr5!QlٲիğJ/-aPqΝ;?{^48ptt>9qHЪ3szϯ<ċ-JMMmsUwտOq{o<| ֬۹[KL&f\o./] 6 n;?~jV-ꦱX,###E';Jڻwŋ?UrgN?x' 23nIJ?v tn,?~{2R}|:W*sˌ?_;wBjDfzw#5e -./ck$ Ͷ>|x!3l}Kr0 pݬٝ'VWW4S@;w7[[ *z^FFFC qӣ}kRB/FO:biZ*b<3ް&&&mڴYxm.V ^{b2 ]֡ w+f͚[YYiccgl})`XAO-6dт]:cQ/T*YM4559,,,bIMMMmmQumRz242h#;;XV8p>'X5MwdnWߡC\[ޭ8>`P*2O{ST#٢O̬e˖ǚkywiq[_s'}?UYYA.Fk+dN$I2[s0 Ǎd2I~i7(0 cBrL4I*Me+4{u Vcfffii)ڻkǹ]477>lȣǏ޽z>|d,-`%߭Y!hi_!t*-VryyyyNNΑ#GΟ?p@'n?PJ ;@ Oŋl6\7|>ӻ$?Ѡ6`F733C ,R$M(+UK* Zso%Ѡ((x_9Ae@V"$)#jʈ%.cWTB%ʰ}L:^'~myӋ>e,q$DBGF$'RU*+*)&U#q2ڰ޽{6mڔ^קCosg4mF=HzB]QX# q.I%Rk ( p8vMwwҫc>Mhʥ$E(UZP*A $48k0LԤMr4LFs$?CC*jGd$kHPժrBRD-IJIM5ITDR$ٖ]RyZ(Oݟa_xv4tv_3]}~+&2|& Z]S]+k8J$ 6*@ T F lc!B4%O}fDңw~hޜ,cc㤄xFXǟ ðzQ$IN1sC >ry ?}ᚵ:jۯ;[]a*%8JbD$5U$!%)IH _5ATd%"HeJU ͦSݹ{v0|{%ˉ\]۰X'2==]֐Tdj̓T`H !%"U48Xc8H|Tb/0z񪫪ʭ@?Rbk6ma7[XRS "'0 pZY s+333ZzlmmctffԲZ-e̡;e%"Xbr 0 p16ن,dZCT\=xy*ww7?sCeOO^N"vV>*AbsX8p8@ `c*(8.XCcBO 0 [dB!?@uZ\ RjM}ֵk7|SD6(/_zbiK)+ЁBQUyz恂aED \h!# Ǜfpq OU?#sY6u6pP+(y6(I&VTTTUUMMME";b`y6(BP(lm`l~C7n۷^yxC"?EFy> 9D1 j˗o4i~79?u͜?0 B^^ F]/^e}yr!ܐmi+TXV߽_F[AS۽$Q:q766o' ޙG>+ZhT^.&8J ̞H`!mvlSA צդhqqN]tqn:zs䍞}[qsqu2mƝw_ڱs_`gD IA+6kW3_/5k׬^7ҽgDBbRHpp}t AF3;C٠Ro \|5Y`* @h LYmqq&:^N޽%ғ>&ν{=ڷ1jǟ"O9z`jʕիV8hA@\vEjY(^^.FGkg2=x H]]ۼˠ6LLL섖GHlHE֌ MA 3bU幵0@j ͑YJh0 1}y ԫI۶XlLA-ϝ%/_oαE CC<5saƕ~G$|vΎ]S=|̪WIWz3x}l@p ܼEK&]e=ٷM%Gvѻm} R7" 56.ã=Y7oR.Fwڅص{ي6`߀۶>/YA8 Mڮ&,U 9:s̴_|fz(**7JŰNjV(7Ғ.qge_$%O/:&.S}$hߴIrUpb߈:t==ybCC۷ox\^Ff]{2vckk3xD*XKa!~\.Gq kkkK ݫX񩨬ӭ!#0LD޽z^NHx]3~ 웺Td+q-+yLXٱ_׭򤤪FZ-uk?Oŋzݚo쐑u굠+bק#um[}{w=|hμz  ?vU%aj ,zZT3Sj֭ee嶶6ukVܽgA+-522rwsyY7SRztJkNK7nڼu+hԚА~ =톑=^δdcZbhoh{̄pK%s.mIq$Hzu=oKkN<}X7wBʡ!Ξ>[M񹙝rZhHppP`r̬,NƍMKK޽S^KMVR,ŋ˒%T,[XX@f/Ku#<_&i4?mzt).CfW3R7n~>}4'tya{;n11A)/-If~>(ErbK@f͆k*]xpEW6'1銑cMmmj ?__~F~~Bx @dl-uң[䔛7 IDATI<}wh߮U۾JT,>yTΝD$zZ&ɺ)RBbfVA7  ֻW؊ R{}EEEPRRy?CJ!Q-晕Bj4^U>AMTU&C-!~[l|cS={L 1~d Ì|}N8_wڵsxqࠀNNkγ4pi3vFԋ/Z?Dܺu]n>LGx$>Sp=z/ xQ!u.ZZ|ނť-7N+>`>OOCO@AO@Auޡ&QT#7T@Ӕr?9۶?qJyz;?8|?У 톗ɍ|é>uT|U,gg?Z؊h5ԧSt#ƌź=|h~C6yI2qR=#-,t+е0PM)A-G:*p0eq16eRTϞ3kpX+Z%4/ܩg^Iy~X~ڼ,[˓$۷?{F}5kE Ϯ5b ާjT/vڳg׎n]YXwnnn;v޳w߂EK\=oι3d~](E zE;fjF4ظzxufZ0߅ hT)Wߠڳݭmƍkn$-5eŲ+WDQKI~}‡0*,|x~ٲ9U ö1wѣFOUVVΎ* |yfG , ðR:A[YZ]: bbB۴vaXÇ |91w7QS9E=sqµ{WYY Z/>Q9Mq8Z;Cbur_`0$aԿvSxgf|%|Cÿ PQRtʴ_Θv:'V' ^0,WO0*-5%)!è_OػWISgdf) \^^gD$M(ݢ>Qo6ѽ[\LT*v c/O?P]]{.^R\7?=jD^=wk֬ng/2uzbb |۬Β%'}\n{⊕s&`rsk;ksRh}r{\IdaaN/`HJҺ˛ I2-=÷^#|ƍؘzQ|T 'A >Y*Et>O4tO`AbxWmON}*F ߧB?qjӧO̙ӥKW.CcB6N8 (hoذaܸqaaaFFF<+#{Ȑ!2, @ͽ?/%ihhj%1gҙ3g( ] 6"##LM!H9"!D?2\i۞%ˏ?RthkCBC 4zbMai^Zp1^3g9sFT~~ar^i3fR+ Nu-z ]7! jC*j$*yRC Thړt޲eK[[;#GܩGH+цƻw}[[}[qsqu2mƝw:7lTdX@@/~E.ŵUo[C ;V@Py F}9vSC  ݺC-Gb .2[$ܲ8hѢ5rEvm]F,[?JoǾs>wwGyxab"i<|Gȁ}{߹u̬-&y) RxT* nfqpwumC_ũ3gn߮0>z;w6\]iq}*CUg>!_y-Za63O9bO?o4Sf--ww`eU;:YQcSO+mbh޼sx86`߀۶S9znݺݧ@/_ϢX,gZZ:ܽwT{ノ^yLhxo߀_5{}+WQ][gzDi*Aq6=~WvZ4544McXFFFFM]Q.Nv"Jwދ/*Jݴ֥KZz:3ejl)CreOI n >-ssWZͬ1Ff_>l(>i|5?8((1) i Ym[o\K&IR,A_~=kQ7%6STrп_n]zfRB}9EhhŨ?%'WO*7=u3oկP6@"l Çr=&KܷD,e0Z{v{4vvfw&NX]]rBV7eeUCL<ݣsG >_9 D$ݫUu~.ACq<(0ݭ-U/+))AW 32|_sU)<յ Ś2k+m=Z*UU<;p\CCs3n.Rm>[A SͯX,k2իe[fr[32fff211K$o 4h#;;XV8p>'X5MwdnWߡCw`P*ؐEC95g^}qc-١\.ws33+7aX^N{4M7\ y$ ndE?XXXܹ{ s."44*n:&&3g.]Gҟ lٺɩJ*R (AQ\.ǿ[}vv˔2kM6[jeeeekkkaap;aGannj]8fIG}@&+33ÆvnPM\I|?~88;;J`~˖-檒H$kV;۵п[k_m߶j"_)uԙ6#FkuÆ@QT誕As.-qk~3~¤.n+-n5lO?.`&O=wZK0~eW#vZ+BB).S@bbb&M@z*))iǎǎ:W]V280lllT*@E2lAJ=Q4o~*hҤ(ܹjԨĉ{oMg&2aW:.\k~f?;`T,AཅB}IOO_=v-ZX[[s\q:M.g{{{cQJϟ֣aÆs=zFB`/̞7睻߿xRVVVVJR /b $I* bT*}Љ-˙ ({bvޡ .$)G~!aa60\$ Q~b)S$55uԩne04Mz={4Vh([޽{/\~GGGAQ>}ڷo۷o8{|{mplKŋ1/SudFE66!D{BQ ??q jo޼Ƿ(5MbFk5}t4)Ё* E233srrdBQc(3fwtt޽{w9p@TT1c( nT4jnnR5JL|ɫWrss5Muk8 f̘P(fΜv.JFF Ō3"CQl7m*8Phpxv+0#?೧-[N'o߮-ݷ˫V,KLvmۄ,_9f ]s`n\s[#6UVmO?ǟj5[xIgkCWO2vZ6]sn 6~޽7o- ^мY3w5aj!SBa\sVkk6|o ztpmwni&[e޿/ ܶ^kqs /C̘A._}0eddHRTۍݿ=@ >s8Hy! 333yS99 ϳ077Zj=ę7U'BhUd2CZ6mu낳z`c ^Ol}m R/G1e8|prrr@@@BZhLݷ_o߽wx֩MLxj׮n{v8ujڦkv۶P R@'*Ӕ\3Oϫ=zT`aO@t@@_.ׯ_:t(_g:FD".P4&jڴֈoܼ9lSxU H,`Ahf _i HDS_)J/1U 22nƖgb(DP( L&(*04M?}8 nΝ+[]KjKfvRB&Cb1HF,/Q$@Aq+4d_+ BRD׏%X,dfff2L,}yR|l$S[6xߍ> q`etiժaCgHKO:}fvv\.7f4/` oL}c(ͤI||D۷eƷ+NN5j`oSq#BS@\Pxj쎬_BCZ,B\(Z-bXBQto1_~;wMw"""+Rܸ ݤ|Zꫳ~~[j8Q-/%x??(\L$I!='uK˖ꥲ <'IJ2L.k433s?7OJMvz5rBCÈJXJ r;+; 0ID&ZZZsx IDATuIh@"XYY]rW^Ls!~lb[[ہ%>gIMM]lَ;u1M5c5R'IR&1 4M^^^R*澾z^TV}cCOiQQ Cz% ^Mde@}J|iZ՚sN ;t:X;W ?ٳ̙3Ǎo>C31l~Eg[FEAJ׬-|)Z.,,,D"~L4B+B2M6cHH1LQԘ1c.\pȑ{4oS/*˗ʕ0"'o RSSIW?`iZ,+WRO2׵h}OCeB~2 ϟuꈗ,1 ONǣm p`G\df剉$Iza.1x0 LxpUl)L;uE!?U?OaIݺ+\/tp=X_a';d8E#"`3^ЗʹQlmlG'dHx&4T"XiHDatSZ5kNOʋ4rsAƯVyy-."/wkku>ٳ X,Xxa,6*h~*l?Mst:|о}z@tS^ݺiKH#"Q,-sR! MZE tv6zKiF_5nlJD^z0׭#VVLO7 h8g57<TT,'%2 sZ¸ PFrڱewW֭VCCCe #cJ%ItT~g)neXycv1cz=IxFL~bpٹsÇ/^xǏ4ٵk"#J$9f\6]ڮ\z w?G}&[߰ _X1iz~ynm[j=lHmܜ+o1999gvmaܽ;cι{tZa#}A8 UPAj 3ej,-"Pjj˗/jNcP0n|jKNƍ8GKh>{TNNnvO+ blrRKnV999r\4{nEl: _@~z΍Zn&,8nT*>lѣǸ{^'֭hff==|}v;vl"##/+qʪա=2ObV̚1 }$^Hcrsssrr N32^kIB'?D2-BZ*%Z*X,MLp \TFFOEI3E.562NhnnnPٸjd„ d޸qBNNN999&&&' Jz emX-׆[O0_A4lؐ X㝥X 52B/e^ݽCX4ؘwcnj;fWqoQKKwJ0''˗,^d2 gw0{wibbZ ,nZ277W*8a&1ƞ.㸥"KTFGG@ժU߼yP(Ĝ#E. .sN_YKB~db%IR.XZ&7oU<{?8޿Q"1559r9hH$B,#!iH$w޵(=7kQlTP Ɔ $k E+{={ӵ_F̲$5kd2333SSS>\3{MdNN EQ#]z-jiHʋTD >gbX** @$^˖Iiig;shDVcDEb/nFpG?//!$Hd2rYCrq-21B~t-(p Vh4j'TN)Zqq6#2٫mDI(bݝ!cCcG$aRD(|<[$I\neeeaaGFC̡`Ϟ=|@vxu^ߓ Pz !y$]ͽ$IT7o!ukֆUZ۫}N,k99͟pp{SL Y!Ts岥?q{|0Oo AĜm TX\۴;v*!n%֯_rT]P̘1C&3U@-[N>>>xŋ?>hРg׮]c p>z9Vz5VV IV},C5kұK\pyݻ3f>{G6bQjQXowV#/ myyQZۆp0i7oHwN:x._WofIKXlō9RPDEEEDDt֭QF5ڵ͛ ň#GAHV~"'LҭKSMӣnj-ʥU+͝{o+P^I۷?jԈ\tt-!'twoKϼzyWu豨c{z鼩霹G  [s&$EQ$=D `ldffqaOOOL"oX~g~k+++n]Ξ;ǎZ6lL!=x 55Ν9D_7lصKO[Yi׽mq6n B"|ZE ;[[D2iؓ4ͩS=;7hP_$9 >мys-Z$''GFm ×/_n9+ủVD"RLŋvvXJ9TB╗xݷC{/^e[[[adg|ig_ H$o1 4M@  ׏=r4ȃ?tab,,[k[R˗GGF-]6["ӳGw l?O崴4Hdmeemm i!*MO>*UJ iѣNj,:zl@V2֩cb">Sd&O[oOKKjBMdGBvTK$^^+`333#Oa"V*vH%?v+nTv!K$ Ϟ3/dJׅ5kqcFO:ͻ7JҧG;w[*;wn#077wuiϮ:ujaC bڵm;olUiG|۷MiY TxbN>7((Ɏm|@%Xl(y慇:::B ,X`<@` cffts΍9R*&&&&&&J$QF={6$$D| |k70"e˖%F 톀@B~* ?6TxCO%  bcTbT域QÆ1}&IҥUk+X>dM[L4߾}z@*F_MDٴT&ɔJGhJ ^ &PytnO5vSEFF:~jѢSNm "IJ6ю-}gMsMomA+:=,[*4:{**1ܸa06J*44%Ɔ .₵U^{/3IL>{־};dgg=vkĦfM5j6" Pׇ'̔OUЭk@eggKN\U._`sAp$(_.>=7nڌgR>}NOIiTe5W_d R<1775up ԯ.nJKeKm rp2x{{uRz5o| ]E ^0HQOY秺u+K7oT@(*7WHPB |$ETcCO%PxgAAA[nӧӧ:}t>}nڳgOդKʁcTO%$Sk70B~**ETٳ'T%L(%׏/-[݇Agʪ ³gbC@x(^=p% 9cWRN9zl%^?~㔔׍}Wph$ tN >UǙY:lcc|@Ic#++[o4oO A$Rd\\^^^MH&-_&O 2\)hס!f̪4xڰuvlŕxvi5kܵ;b˶\~Ųի]p!<<3gg祋Xoܴ͛7ܹGRR-'_FmfUTgnִD}.6GlYs5w==,,,g!i׶͸bqQG 577'tMxm@l%윜+WT*WupxԄ%h׮=~ >svm?0ڹ{ֈMݴ9bڌYd?*k 臵*!xtpZxztγ$p/\.-[4)#ThPo>̡JDޭMd2 ֮]$I!}kkc#NjIDAT<=:z !y$J"j?w0 ceeYEgBl *^z폤$M֩cggKJqBnJ%#hfc@. fω?{Ϋ[Wu!ԵKs/|ӻ+^/!T*[4o֠~=@H8TҶM]:Fٳo?MWj@yn/!u),|}ҟ99\69}e+֬ ZW7!z};eLw ve("DlkWX3fs穩>ɳȊȭ[3ի'N,["#|k/BlT<|7o 66/G@;n!3=IENDB`taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/docs/source/imgs/x_axis.png000066400000000000000000001673421514602004300301030ustar00rootroot00000000000000PNG  IHDRS ^V pHYs+ IDATx^w\27 .Łb ZkRWժh[wkJU[DTܢ p@Y2Cq e|~/\ O݅1442cYJ_!@50 ?T1e_(Nʒ#=#qTi_Y6KbҪ7t7""b^ez@5Rd?ON|$cddԢMBya^A@ ` j"XJ-E4.,,Bj8@(/3-P1$/,t8S}uCL1Wu 666FF%eٌRoꤘf7P\f>7@uR~FFeOH"PSSO={.6om9T*ccmd2!oѦ @(fhdt#miSjJfSTddttf|ٸx.Zr:q ? P[jɏnղ=?@ 5$?WRQx/{OO2>n[@.07?zh//0.~>=;x={ T.Do(T%shojt+-#"Ga֨VM sm7Ӽ gNwno+w/ʹ&'w;5s軮K^گW#Fs<+fR$<"@DD[,(߹o(U{gߵhTr$Qs,Gqiߜ>%m'^Pr ;}aBqhdl\%gBسiƿ6JRTT*Ν{#\ի}2rzMhs3}zy4op'#GZ/_đN{J ;lw3h`<wzVVj;ooϝn>p|翛Փ/6ֿ[}ޝ:6sxP3q6DKҷ85^fizObF!\Y1,'ytܶ'ޏMJJoӠu۶P$'#_dxC[v@@BFT*~8Na$1>x#Ϟ= ' HiſSS~YYcGԿ{_y 7LDff]tٓBD/.}PX Ddbl<;;;;'=MFShsQ9Ҿ֭Z;J疣|8sT)1˵wս}V?xRs~ntnܤɣ7oշ2 PẊk47noG{hpjbޜOKD'0B_WttCH[BFD&&W^ry3LHxnҤ65ٮ6lU%Eue2mm|"224uK}fFA.8$tr~C7k\lo~V]FGYRq߀֙71f~tttډ+ECCCNlٲ|GGɓ'߿?((uРA:::;v찰H$'O?̙chhصk'O̜9300D$ԝ ߊLr̙[YY}z{ٖ-[7nܯ_O*cǎ]pGmkkznm:u V*DtʕS9rDZnOD^^^gΜV*nѯEҍ1gfY6))iݺu3gΌ۷/סy橩g^~СChϟ?={Mڵklڴit4411Q XXXpw9III暭oKPPPpnEJ+ˉ(...==nݺellu(((8{JJHH011!"'''BzuӧO_(99I$ϗJ"H[cPDr.]\\\D"V~~>bCR) RD"zzzDEDyyyZZZHNN(L---JP(ԭoVk:GGGkŊxZAAAaa>wW&㚧hiiꯚU@KKK!@9̯r饧gff {% FFF...\7knnKDaaa-[ lx[u3Pُ&}||էdϞ=&&&+V4i,111/6Ғaͩd"޳gϗ_~dɒV6`h~T^^^K,:tUVX^#/?TI*f~giidPHD^^^ ""GGGooo~עܯ_?~{y_Æ 5krJ\%*())),,аu'O$"Jecclٲ:YYY-[sUNk~BpΜ9ZR&M-8pذazQUVe*c9 @5>}DEE=~X]jLTT̯~NNN~~~AXyaJ49;;;;;Ε7!QvpnntRT*jZ$%_L_F4h_@ d˖-[r%wEz2e~qqqs喍&Mt~EEEiiim޼e?+ʔ)ʬ,nY,,ݍ]hR )2 2e~={<TYpy8(@O r4! OYݻ3})S7^p!/X֮]Ϗ@]Wupm*!׬Ysƍ۷،=">>~/MHHXz50TU_9,%3gܾ};0&L8w̙3cbb>c"Z`5S=zmjj;w-[<811qǎ?[ӦM+,,$qݻw… Ddee`==۷oر#??_"jӦL&}m 4[H(1e˖"(..WRmvIII+WJcƌiذ!0.\8z6l8|psss\o߾7n7n8~~M?M2̙3:y򤱱ۉ믿V(;7.''E>>>DԫW/OOϙ3gTN:lRׯ/ /_LD+Vd999PjeWr >g644odرׯСɓK?hUVW?~|ۧn233OV^ɓqC---{eիR,--??޽{ BT^paƍzzz ,vZrrz YYY{oٲȑ#OKKkWVLψ#xQFD"133D"HPmذ>jٲeFFFƍݻ״iSRHJJryFF 2?V+g{4urrW(ׯ_mڴyÇY *,,Uy]PP O:ĭѣG*ŋVNjjy6mѣGDԺu먨w* .bY6**JTfdd466upp{D"ymmmMLL^HDvvvO,k3e2F;TZY\/*RT"dddpL==="244TUB-deeDd``ЪUe˖@ 嚭?c ڿxx^zzf33~CϞ=ՙɓ':&11[P*ݳk֬۷Ri-=zòltt@ {[FuTȥTUʅ̯, SSSH9eeeب+JeIT)#=<$$d۶mݿ͚5SLY`AvvfLJmݺeٳgk6ikkO**C(/w GG&M0 ӱcG"zJJOO#"KKK_777}}}XܣGHuZnmgg0vz4[9&&&DTPP #""Zjekk+ӋD[[^No^좣[l$Jܸ8SS&MܺuܹӵkWT/%%%vQ$yzz>x@] _E#VXؠA"JIIٺuѣ =z+J"ڵkװa SSS]^7wncq"JNN޺u#LMMsssO< رc N8FDv;vArr%K:4z섄g.X ###,,,%%ECN>ݽuV֭C Je\\D":vzGD[n;v#no0`h~C&UuZO,q9::z{{%x5ſKڵ|~zרQ#GjF֯_;|X˖- ߹s'GGG'>>5rA{gxʧjd~u2?_ajd~uEYgaa1tP{{ӧO:u2dJ *_CBB/3f>|G[[;666!!?={ڵk񖖖DԶm씔:~8jf~jb:..͓xbbYPtuuR <8<<<11bqAAϗdE3?Z5CYfݺu\T-KW]_ }x?WgxܲzAjf~;vڵƍU*T*Dkjj@uV/Yzꈈ[[E)ʀ/?IPcT'e2`@u@WP @]!ǠBPj 5?_U@#d~u2*T;e64j' q2ĕ~ Q*^_~P +U5@ j߻Q?a. 4557T"L53';_wފ%iςvPaޥZ9z}zxrffRѱU-j u{y %PAދ0@ IDAT9v_>DԧO.fgg߯?J۷ܽA'׸̯[lkȵ˕DdllܺU3g=zԵ}{V d~KNM*ӛUd:::wl tyfW\]\LMMQzzzۻ oddx-RhU'C`2xwFNh>ynt>}F)'''??װDuP$Y[39Rtڠue4tפ_߼u ܾpyyy}*TcfСVZb;ެW;>uWgϝ-,{Y3 {::: "ƍѣG9{Ν0~ؠ4:8 LJJJJJ{7:<"f e~>>>+W𰱱7'ճMr\.t>kKAKK]mؠ+ADt…&M:#4O8tȰC4@0>w?\6&M r  8P"۷Oɓ5#P*gP(Ĝ>!JIB? DT͓D/[ C,[5_}~*G Wɇ[zVU nO76܏Rڀ*Rϫ,s "]]]~bqAA/Ɋj}g%Fy+*_=~{7+ky7/HcSMz(6T*ܫYW旛!TZXXXz*'S GgK$9?&Aboڔ[N?$==h/k= 2vƾ]ǹ(W5Xg+IgK ?Zƌѩ  P*N2}&*VG|B&3Ӝd#rE+w6-6A]!}J6.׺ǶDtT@D^v4 e4ɻOTJݽiffjcmraÆDܶ핋tuu׭Yr\)=mZ>vP뾿e~I?٪ފlۦMVN x.',ڰC.q=xҟys zAΞ:y׃׭Y~ "ϖ.MFD xOzʥa˖HDnZS;vܿIƼVΐAyJW\{*At"Y!5rVPichV&b 3|iKBsQDz=mO}D"ђ/Ytpr׫V,366žmص{7&M֥CDddJJ۹-\b\.vǽGuBDC ѣWAC ߏK6h|O_Nε#˲L@}6>*KN]{8t>>_>od|@ ظw}8pןWi@5̯ze?":(o'\ܱVw2y*",Q%<{zk$GيٚyJ6Kh#bg)9f5A._F3e:2{^ wJwcsP{>Ju(5p0JvA~|2YaXbBWgm+١;{)<)P7}NN-ӒeD4oBiS\.t>kKAKKK.5eڤG޸>v;wWɓ'-te8~ ~g܍M9E>Qa'OsQsH;綁N]Zpws=z@xXqcJR9~Ğ=_rq1P1>(w(T&|G=IuR7U(,8H${D"U(h yς~(' }=nP6h`oT hkk:~\P~ |3潝PJ"a_;[t\.t_{h@uR"aY]YDF;`? P<qj p_g]j{RbСyyyO>u1 3d777JT1'Va ՋX"eYe2]9ACBB/3f>|G[[;666!!?;!PYD\ZZvƏܼw2ҟNUdJY3gr 񖖖>l۶m```vvvvvvPPPoŔJ NrJ*?&M_׻Vu3~C&J%q477OJJ≉fffE@5˾-##SGKHDbE3??_&JDDDzgPxy|x'ugy{{7mڔ/^ziccn:CnnTאRiaaˡ e" irWW|ޫ2իWk׭[𒓓-,,Y}WӼ9SRR]\Ӻ_WsGxc 86oٳ;wu_>gՁ{%\͸֒k{xx 矷hHDFFF'}٢Uy/T=vlۦ)))Ddbj2B.ҳW^[x_mZ^|[mѻb+Ay/&NhԨGk 466{o޲YZZ\|xyT5kĪTWTJS!&&&f+^~:<},#U >loּ}X}=n/oE`7fWzCS9CWQ7o ܶu-deeZ/^#˃^ODQ7>Ν?XKs7j?n߾^垿pO^D4xРCl}MD/_ #"'5jٟ'11122esϛT~xgڵmID7cbc5nT*ul,"";uWg*VB‹F1 #А~ ADZR.<[#է|7kɀS11DԼY=z 2^U622bYcΙYY/kn=z[-acccn~Cm?[Ғܶl#C#n ;;۸oH!ls=7wSV)ry]֭Yo^EE{P}=wٟf"(M_byf 251ٷgWTWbn5ZZZZB[4#SjРc~Qu|=zFw"аcM1k+_o(VIi˲o\3K:;m޽RRS_`i:|?--q"x]>ϛ{o<=y߿wLNuˎN ttB wn-Z8d/&~~ :ѣ&}JhiiGDtԹw 7pv#S&խ[WM_hmmaRT[[Y3#"d՚7oug$$$pZF%mԯp992~Xc# lvqNnnRa...qGѩdѱQ#e/}}}PطO͚]t膼;7z<4ZZZM7߯ *i?Aޖp^eWTyq 85EG/f|ŝ[(,,՗[ٛu PaXR1,3MRi_>aZNޚ׳LOOW8xLYugK{38wcN-[:l".QAAW}-{&]]3g|@D͚ifft_ʠ>Hu JU*ѯk׭yՍION;;;rWzoI_ԯ_ߞW'~jHPmmZ&Nri\Bb?^377:+'GGDhmbG__+Vt2yz?oH$s&>+zYWʗ6 KhϿxQ+YYY&2*J=>|eRQ3`#{Õw(Cl Q*<˒ubJQw)5"a&h]LD_RW  b1-ޔTQPq{7BPj`uY_*_~׫|ʗo +%`UW&/d~u@Tc IDAT0'/A%(qe?d~K@ xFXCb{KAޱ/d~P 1 #J:4Jڵ ~M"1/=w"K*3d~uRfQ_՟A ð܏@e`kdn`R e#Kɏjbܼ軷ge7d~ÒU EJI1}C >L%M,mmmyM;5?X|~ad@PFe\ SCOǏ]b? K,bYe}T,˪%PtpbX,2d 2?(7buDOO͈mlyթjLJӣ#^ɼ Ojx$]{&VӼudnaCZjŊE;B-ݽn>=z\CC5ѳeF3˾XnI=}LLLQU=XԮX"K$MHT6lجY3]WWW+WzxxhZC?~B}׽[ǎD޸~`fH*>+J^5jcW\pL/O"]fuXȵs\?79|O0 3mK!W/O+F()cFx7?X~"cԲEpР 1?ZstsDn]#^]tVTD"1 aCC}:~͵}'ٵȐ[YZP h}CHļ?{O(9رcH۶mSRR:tj3g;u}##;wrM6ֿZ[;߱sߛМ7~vv0ys \:}9U+Bpӆߏpni?,qp'祦tՔi:4G={4`fjb?lm7vv?wwO}Gww '$9z<{9zCx5,X()qv.˿P(ܵ{ݻLbbG#Fff=WG<=MCOޛl}w!^^D԰QØ[n5>t→P;p%gO$njͯ~NNN~~~AX\PP-d2V3? ¡ 4p#긅ErSݤO_?J]=g^Ll{YBOOO&ޱ-8RpХ͚ćH~/=xhcmm/)/f͘=ИOFBp2ɀShtwvD]t=JЯo5<{Ͽ6ߟߣ9w"++K3Ҹq{rLlLƍI1b_cb7jHD*!bd.mҤ VP%V)-5jԎ;">lK*jrBCCCCCQΝζO^)sFVVVV eY)0SSSn`ߺD3{kj&!$,N8ZeNTPPk])nRZQSA@"nld $eHm*=xHs=j Z'PힺTYYY0=KEYN22FY;_ihj;lBQٴ2c%%%bWYY͂W5mmx?*BFF؈T͹L&b  ۸WTU Ni VU@n7o82>1l(8B]߉r.ȑ#k֬YfDW^m6iii77799b`\.784_|㡡w&O4VCJΙm 3\۷ZZ0d`m-MX V[[I8gmݼbQaÆީ33jjj/\@R5`FPHp"~QQQh`ٮ׷/(++[P[A5~ؓ'y}ۧG?T%eeeLMgtܹm6h ֪4⠢TPP UWT0MC7Lmhh(/`0ރ,&~?zq1cHKK_ۧwÇRS۹&Y^;?]M+GGGb[VVvժUJNN633hu?̙&|-[WPjx.'͛j6O[0slw}w:Fs(Jӧ+ZSS Sx+sݲycAam/^置&'z۾~ >פ$% wO݇[^DGG>0DF  tڱwޯ^\AP|yyOa; e˼._T*^|Nl2!СC={yyOΛ/++5sY\]x\u!:S[Cl՟mڴIZYYM8冇 k֬!w4Z{.FO=r-Q( ۇ?}_9uЈ+}nyz`bl{B506mll`?>{Bp-vȨh+N%K_|uiiG74 l$Y7_wpHHL"tr|$ƍ+|J /uoiy/"b}546=wDMeϙϜreee;!q׃i#uh"#'NbmEEX>4Oo9!D Ҕ@lܧX9BۢPB]BFbI}q>u B!Hk v]"!B!Nݸu7Bz_O}e,LuMHWL^.B/>JA@ 5/_of~!#P(Ug ڐfVDh"|u!!PC9/@uB!POB!POB!POB!POwx PGQ_<W~A;kVۧӮ=oeKFyvrB=B%G[f~ugDM ii)r`9@n ő',TP `anF ~4 %G:>GHёÿ]{fIAA~4}x႐׮x UKIIeg "6y\8'(E mde+*>~H.hfanv`# 33GEG+** 7o#Eȋ._xf&pܜGN%;}yy|B3}3 فDgϞOBm?A\M))*~ݨ,k͖V546o%9bVV3-GKDFE O=YBCS;1)iú k7WTVNu&a"8ˍM.^pr[ Mw._&VYYD !MMu!RZJHڤuXŋ Lp֍@0 ںyŢRÆ %:ĉVDDDEEŢ#F0L>-..޲B o߾}|EJ nw40362$*7-ϤXRZ*\TVOv-f&>|x;e+Ww5{DpI\gq} - _ԟ:EhSLNHL$vיq\s33#C':#} +Wкbc8+m g}eg]ӻ۷o._  u:|pOپmKB֫-?H:ϵyk>}RΞ>yÓ{'9!vw8lj[`Puk#I] Q#GR(ҷo Z/[&&&8g)kl}(\*8y{zPcc\AAAQq1F#Ơ$BR;xNeIL&SUu [&ƆCO.C^{\:}V}̹gZv}6O5 V>,TWWompP8{%K W]zDu,88tn"t>W122$\ZXT͹GR-|kSTT&%)YPPs_v?}13+k㖭 0ܽSZVuA_ yh2:($$u庺: _Y!];icCc؝FrB]b"+p[̙3h *믿P(kkk]]]ᐯ׬YC R~h4Q6|k"""ޏ/ **9MÂw8LyJ.@=6|-磸 Ν;rWjjjO>'D!>>DMM͖BtvӺuiWJJjԨQO޻w!tLf60vرcǒ!B?hСC`޽"""ĚFFFPSS#xXCCP&8!BQwvYY-""B$yJJJ/^/B!uv711HFFFBBB__?;;Y,.v!B}:}v*MrB!7 B!uv!Buu!PEQ_<|F;!?*ZWWK"..G} ԭQ%BuoN rs2Qz>Gݞ͢ ٙ'8~`trn*,8p=9=]999r-/>yNhмs5yse=L"))IЗ?sNnNft5~" m۶XZz\|ƿA[-ꞾnTCc̙ \"Gۧ6{ٿkwF;gM~;|Dwl/_HB/лw'rvY.1)\kPRQ^^PP)oҖuOnܼ_uȶ-mLl0 9!Pt1&#**b~@rBlJbƟMnhh6l(X[  NKI =x XnǶ-e? YT*~ڝ܋(/x왽&? c#b{СStp߇u@QA2&&gR@FFSIM{ND0|:qHZJRnR))cGg=LMMI$~Tzajr;f&D5O . Lp튗aCO=Ylլ(NM}o>{gIDy?=q^evšn9G䄘(V`an e*i)?*--vtJMIL]`>q:ccv`lk+r{\ l.8E~v6q4#S }) #7ah0c32g6KWhhj'&%mXcxщ?ܿWwꟻ8PZZ^GrQu޼}{LKb4$4#ԝ`Gjkr++?\[o˖ fcC딖=~Ǐ:׬?tЭWB.{v 04ljhN  5~^g5aDŋ.]n; IDAT˞iZ:zmvlÉG?53+ݻw!SLfHHk؉?~,++;ܜ\in΃lܼٳItGE'. ..>5- BBCUUdd+**\pLVVm;HOwBRdffih0jL&`x_BDLLb d2 %%⢦ (,*RTP >DD7VP/.."+*+[X~=]eed(:ފKJT$ r͆Ǝ^'B,YYYm--#FQSSSS[ PQQ"z:6e+Wa~Qq4׭!\=񢲲Rꔻ"F:eWbp؁AD{h z_^~ƍhGzz96f[[ ~c؝pkYa!oz{Dž}na9q b//>\e;x+aEE!!a^"}|?@EEKRƘ,gY"[7fAP& ~[vr[.,:}Vy>7}nU~/&~X]ľ4_fM, U7FJ>zrFFoFR(y\nʺCܺqȴy.B 6wKGԝrW,_+LPzVJozwngLPρΨʺkF yO!s^\n 3?ԝ_E!zO@!Bf~!B=f~!B=f~!B=f~!B=f~!B=EgWuFIRSSSo޼(. p:xlT*mz*B:JHH޽[DDdÆ ZZZjjjO>'DJ%G[3-B=OgG{  EEE@CCTUU$$$萛! 60E !E,kKTTI@QQPPPТ BufZ$f,[jC.g?fhrLr2әL&@HT}?r!HgG{KKK333MLLLw]]?;v, B[:`l/YK^f뒒҇3s>}ffjs٫ׯ!R y888+++KJJڵeҤI'N111XCCCijSZlɡn?@PkZJҍo]b}0B˓ 礥$͙mIv`BٽiF&' FP7KNMI۰~-Qqa򤉾|3f[[-[b`!&rrr#Gt;lk+"үoԔX (IIիK)q BQߑ#G\.ݻw!!!ӦM)..VRRzF~Q8lPW\RvnJ0AOq2r@TNN6NtG;a55F324 >oɕ0'Mnh"!.~)S߷ߍSZVqլƆƦp;++; {lݑUS[;^'#3)fYZ'$ׯo7o߼KW{?| bŲE6K БB:VZZNPh4_,K^^^WWzEK ݂E6ƍ]t "G99hw:`@ΣGDyΣG^"Ə173 rB娳ΝPWW<>!AUuÇ cI@@ X]z"0(x4}-;0()9g[[ֳ% &ŧϞ߽'\ٳS&O3ftMM͋/B:y{{0`߾} f@FFǏ]\\npPr_xyg@U`X'IKI51Pt1&#**zJdj ưZgLFeĈi4!Cn~{gРͯ@DD>ĸ$O 4 v99FsRSϞv04+hrɥKlZ/?05[Ic{wBggt zȈ? uuO w:$&.\0L׭]mddPWzh4')qwBfͼS&O#8i|lH"Jw{AÇ1QU?ܜLy8Peχɑx႐׮x5hhl;0̄F`͛bbm/b0D͇iۈGy15%q%V( x{ډII֭}8#'N?}朠 F;wTpHX\: #/^tλwl/4A<>y?6;PG[u~|(+{ Z'hhj;lB>mVϘ459ȴNSsۯ_gM MCCO4!:B$.Ɍw` bnf~ yqn=]r/_y]RSS#lI@F1 opȑ#{^~=PuM`Y38QqϞ=s3SO#Gw>UWW{]r C:˫/iMx$1##wpÇ3Y̫rYaawLr7n766 ڢjI^އUv+mvE}@YYO-@yEňj XGFʹ0YߟM`Aj] (|#F0L>-...\Bu`銕q7_#%L&4]LLͻ7ڜ@9دzdT۷osM4oEEEM߫lrB,ǏR%%nӧvntߺeӾnwJHH8دҤEIYX- 0pǶ-N551>5(**&\\R,//GlLK@IIXPJJII@ii㧡ADݷ§#4ow$.^LTTbVUU $JJJͿ)6/Y\<ыfʹXh&K.`ykm}|IIJ:_o[>OMIaS2e^ş u3Miמ7ߋ7V n$#POy8GCʊH\C`ee.\/dMM߼޽-(?CԴE6K5Ǎ0Ye_hImmDDEE5auo6O]WW /Ow ")--SQQ!\nYٻ}˶LЅ)--Ml4rh4W"8ɓV\1E_Z e (UQV~/{gj#lqngO3`ɲ»Ϟ=721DDp""Z<ގDիWuDk^knB_A'BbR> ںyŢRÆ %W>B$xYPHiSۉ23<%6"""t:>B}ٳ2rr<ɫ:u Qض5>!X,Ss"~QQQh w#"fL7F :B,RRT~};Rw-ZPJJJTTtEDlY7 YT\L3#+DӅQUSSx*ݨQ3BB > p~';[YYY}ќIOپmKB}IIIrf}lkiW<=eeeO<]fk7cɉ1˖x^n8y۷/z 8v0!4e$6O׵O> gOAudÇfg;rB}G#5,o<{ys7n4pPVvvFauw_Bgqq q jx+LM&~muYNr1CD7[׬YCP~h4J4ǍuqmfѴFGgƷʬ?7aÆRT ˖>!!п3?̬lS(B!o^B3?B3?B3?B@u+t:Ի<.y0Cu+T*mE\\!zEu7v \ ^<#*9|h0^G;$0 5%~dXǎ$Eq̘.86 uuO w:$&kYai)I~DwtzyΌ$yj1c~8.C!=Bݐ.'V]ÏeENGVVqn.Qԯoq瘱ZxLN:WrYq;9 I2;EWT[W7\m؏?Γ|D߿oblf DFE?|n޺cO-[zlk޽{R(s3g\nΣGss'钚\ ]vTWW{]r }}nx'5<ȑ#4</&&633KP!Խ. Mӟf#77ddfw ׯy}~>hh~\c11S'|O3۶̏JٵsO.N7>z@^Gf'[9a)wEp,-LMLM:GmQIi۷o_ii騑#T |>yyn׏?;s~=o&g׺:K9Dw]' Lr効?/*.?u5D\W/*JWTP#hR]]cJ[eed G{їn7o.+++(( # YS c9)gOKHHUv;mp.3AxX渱DF b=Hw/{ڜ.{~<|I|uc&O{';#m.N; 4-59ap951.&-%symG yk=c8gN4Cܾ05ϠA@YIץĸM•'MPVV؝>MaFf`PuIII;r8ajjJ⼹sڻa*+ty'.&فA[7obXT*uذ C@PiHErrrE4DgX ϣRj3:.>^Ps=hfZR(m--u}71Bj7344+V,ћ2ඟhk'$ vg[[[Y͘.{v 04lj$ YegqɳeLKcCCcF&3-,OeX۶nyK~HHLM>WM;b!M4W_oܲ9lV766ng]Nl}.?/91.1.f'u_}}}l4'Aҁ}K~H.HOHBBC76&& &7< j9NܸE4I͓-fY ONg^d^};0()9>̨ohP3&-=$ s=~;PuAh؝G7}(s]޳{gϗ,^aƋ/ʉ${5fk766iki%&% W&P(Ff޾^|u ,`anv  >M?2*|=<]_:Cm9>#sbAjQ0AvD'"Cl Dp"#Z%֛o޶qێ+"ӧ v.o@Zzztp,[AlyԴ4cO z62?.ѣ'?Rihhp86BGBSEENo"`xCC뵴4)@QRV)ٺBqQ1bhgrTTT(((uuu{]{}]$Yϴ4IJlYg~L&S\\\L0O褤? (**lݼ~=#x<7!sS|>˭cX_7y|>y B"/BsDM_!QŋߛY[OH߰nm,ZR[[} ޺fYY$taI)& \iF.|^6;و s-Y9nDž3ʄK3޽-(?`/]#}?55wlkUkgϟW *+**zw/tgw.^m9]XXugϟh4 qTkiڸE!#ѽ:&^ĬuY<λwYHk;=\Nד'ySN! D@1cڜ.ԙY3-׭]ӧOo&ݨQ +n̶%***DI^އUv+msWYY={^SS)IeIKEEڜi@Ff&[FDDNw0r&3Is^|9h@PS&+#>yA<=<7g0L&~݋@BvE}@YYO Q#GR(ҷo =PU`ƺ5`AOEEE'hA!5}'O4e&ybbb0_Afԕy]o֭]Yi\3B9LLkOccv+$[*tVYKNw'$ARA #͛3g߾wƠ `NL>^n8y۷-Ю>qArlfL0591>f7VsNrB=ptĤ`U;HϟM^ځŒbc#{Z#Yn>ײ3ҮxzGN 9~TDaa!1RGG;!1 TUUnj 22'7N'#K WFl՟apww'+Vdgg'$$n3H:š5MMw]t늧+w zv?+;uDŽW*.?ꊸƷMjΎ&''X,yyy]]}'45ǩ'Jq\}۶l&|{ ޽iBu8##c...\.7<< B_`+..ٶéo,] N~{D4 B_@.sFrG{;ڋЗ6E%%YF0$$#>5Or,iY.?BQCFЊKKe/"#-5Tmxr 3?>2K0CS^^ /PO.aB=E[#z>BS?]]=}~!#m?T!ź[!P34B:zL'u|`Bw'inQrW^x{s\@.WW|OaѲ t:`z\CS}˺{ G{9:. T'ゅx႐׮x)( W^YbpOlm58ؾtJ tŋGF$UUX::;?RRRuZHII`_7GjV%x#G/^fYٻwG?d|ف_# AǹO]ز̶q֣G^fT[Ξ:IeͦOܽyoͪuM%%FCCHӸG>m/ȝ3-eeebSSMQ4 xs߿_45)o)NOO rq3;훇=Ԥw׷\{>yUkRSzHKKk 5QHhplkUkgϟWanii=ظx&[;*++{z9_OW͛ot *`n򉢂BEeeLLlMMgqqwBjhASBؙn>\ x]iit:=;#M0e>>&@BP7KNMI۰~-ptjJM+mW:Fč #I|Wض¹a5;;&~ݚDt(->{nuCMmLSXXXXXaFػ︦/' aO'n 2d[UDqGTT]"N(d!Q V1<RkqrX+{{VUQٴa;{Q(JeeW⢢>"[{/| zy=漻- mƆwnX9z|+vx Cy7 tot:L524FzenfJd=0si66lf89YZL?a҆-t&25ܿwϪ5 Ox׭!. 7V;{Cwn~j#T*t'ΟT a^6cCB}G̞u+,BpA'f9~}⥧Og0S7mOxy>Hgޏ-++ h'M|d _W{utܻoڰq7&#ǎսf 3;'"6_6q DW424`'2Ruk\%$$Ə7b2Sprtp)#nOeX;d/^ uKMUlmm>W~{$'dfeYZN ~?ﶶFDTiȢ%KIMfeg9A !m?l'Ϝf6=t` ~L'?s~}Bcc$%.XЕ ?Bee6V6rrr;IvdzEtPUS-/UbvNFrS3dL0622dvpoMәI$Β UQQ:Ւ11քvu544Q _{NvvTS[{(~Fa+++GZZZf33(@yED3Ɇ]߫?s6$`AYI˗Ť*<<3A؅UWW68RRRmszB9)+~Ç 34Зv7 >LPT3SS}==*:wlf"ظ8OH035-~mV7oXtܽe4MYYimcmeddHPdddoڋeMNі~<\/\ipί/xq;rܸ]𓕓9pkֹ3yņ[|y+++>zl*6 )͛6?㥦;s#$TEE98(PVFcǮzg_FjʫWIĤ<߸yϞ5hyo?.&=JL\? ?P_rE}Mk簫OՕEѠ~Qu[k\W)((x&7 æwZ2"""Gu<~aɓGn }֭Ԛ׮߸v9(l|B FUOr1cuUUU3gݻw]P(g611r < BB.ӭ"KO!G;VCG-]L߭DDD\\\(]`#G۴iӓ'Okkk޽[BBɓ'/_ !P@ǥRI^ W^QI}0i)UMȿ̙3Fť555xBMM  F}}}EE466~? By\/ЫNR\=,VHRRR:zNx9Ree6!B=AKHjofΜSZZ t:uyQc@ff&!B:z}I\|mRXYY 0[%&8111^B!uٹV~mLMM?ίUUUKJJ@]]Bɨ#9k7ij„ ;naa!--dbb{`eܽ;Ew_::#{T /Ϗ8: Gu|'EO$%޵CDoAwxrg+r;sήGmmm{,+>m0]h :pcG-YirBKz}QU~m۶ B"R]]'O BYvo)?1{%\ZZ+-ݸykjZq{#QIJJz٫o46t}{ d;o &p8y_ϵu 1,))=AZ //oqT*%rС#G\ݻ? yn***i4ڶg͘^[[wדֻNvYC>ۜ!1 NNVvV ޼뫽}Z;g69ι'GrCtu݉"Gfȑ![yP_pvlANN9c4iVv3,- s+((TG^zoR otF葃9**JJJ`1uyoLwP(6I)߁&;ΘdˠAZD… LиzwK`M&XϘ=сxXJfj \x& 6z`퇕ё҉Gϟ}h4{i'ȅƹOFZ&ݝ=dee¥ںںS--ީ{´f v#n 3ZRR2(*^ 5j|VfF!f0( gO=̋w܅\.7fʊk 2^f߉66/\}홳爴ףS>l!E%& ]'} K)v^`cG{SmBAEE<,m PQQ޲ic:3)YRRG@xm{ifon3ܯ13)INV.:tfj|}s33555IIֵfK9&#>zjéxyEqB \^^@M<%0Ryn+?"#gLw⿝=kH)Qayn\ 1BDe?'Bq[&nj$. fe Æq-('3=zHB[޻ 7VȘ1bnXrA.]8w<p[y/WVV"۪=tЀBTUU{zl4aфIz7ns}^~w5Ui)1фI=ygfjˈ+,|lcmLMh|CG֯[+!!G>*z4y|Y ?UUUurry!ڿSA׮'07 zGeM41!44+((<**"hh=cQ3~t:_7 ğ/ln4}=6|M|B[ {nqzn 90o}i4کގ7É[P7=|o/x7oXtՍ QIkVYܼ<xN;v 8od IDAT@_/~"$%%/Z~/5-xr>* = deeEEE-t&BgȐz n@}Pof#^_>(qCJ5sƌ[&[.{f#CQFRi׸\nbbR^^>ܕ X,v**zpno mb'%477?}L2r)iK9N^~Ati[P7$//純Ĥo!7‚ r. U:yD nGEgɲVS-s2SS,r6_U]O?x w:e >}ƵE _}AlLTlLDP(OdBGu}MWOS]\[˗- :s˒:qU5ׯ%$^1=.>rg %0=דMDi{VEEE;Z_*qWJMK&𓿝O9 F#QVv6H()e1hR1/๲sr@xmM$vȨȨhp8^{<4"d<Ȝd&7(P'xnq,>^|}}vl+*+_zů*++GOSWS---e9JJ kϜ ol655s>{VVUi`.q@l~"T :T0"tVeUB!Z/+>́ŞF>lB2d0N敗b.ORnjmcm~hYY#}s2c\#"n^Qzпr-qqۑmC=b->2RΙl*6ܼz,rq|HDN y?>,,EEwOAn)JRrriiY:3m/Zr-_ao?-'3A[=JJ";k`0dͺ5 п.zaW/ßW4>a( &GB **6`9*ii%wvg#B=pf#n6nΰCޏ<*w)!UerSiDr!zC!B V~!1ߛLHMްލ/h=e&ߍ5sX."""{x&'fe h`7ޝGBtMKiV;HKK?z8+#-qj*!>ĉt:5k7qLP̙caa6!sNhV\˓\lF3jȐ(vxlh-m,,;̞9ds(6ߒknf6tIfS Mp8C k8=C7---ox9hK %8MMM&\ׯ`+B}ODD0`G~GMM#Fߎ?^[[{0`@.,-\ R Y99Yr@s@qh|`B|[m[h4{iϟ9zm;+?TUUu?`#؜p۷gΞ#uy -M[k(,|6VOˍeı첲5)8GEE&[B+T~̙34m`27f{+AfS9N|% 9?0wlqUo`_/^<|ضՄ Ǝ1ŊO߶ RRR۲׊`G=kE.nS(uk]V֮ GHkkcMjϟHMNg&mtw1B>)f/սw'8#i ,РFUWW% *ee%"(''rvYqӖ(**Tר &9͚ͳg%Mo߾mll>kфIF&3|%H0!>߿رc8 oNojj"M|In@=֠AZIqbJ׵JJJ1Q!7ooqNd6F|G:dBn^ `llXFvm>qj.R/J|p}}]bK8,TUU))БcS\׬=4bJ5 hii!]@e."]),>|0</,jE?? Bfk0}&Q7#Fprtp)#nO>}6gů^>88ӧ-t(vk[ @=Q)?yi Æjll|UWG}ȼe}}TUTJJp>{ >#<ڱ=)AP՗9蛓r9F@/Ja&+9PUU~!$$$$$D /^jniYzϾku?iǮ?Ljia˗v{ic˗{xѮr,3#u!**A22e;vuwɖhh]^ayg_|NvcFr !BF~B!pM!p8m<B+?Poӳ 焫!B}V~!B}V~!B}V~!B}UZZC!B!BX!BX!BX!BX!BXO\9_P(Hz%cۖE. BIg())B}Cp8ʈȨ>l6FEn&N4=jxI---F|b3>Ny񮩩!g B=d-Yf:iҢv&L0vt'G-M͇---MJJꇭop8vB'}<.[Imqii32R7wR#Fh=,1ÇtQAnby:r,.>aN3i4ڙS߉k0~Ϟ 8{`}AgNF@RRtT;FFS#nzȨY1̞9ds( I(vwx"}zS֭YҲz[ݛ7-_ZWH]:oKwnB}q8>sYǏ|`'NLwtl4nXi3ϟ?ojjOr׮hjj624 OollMa24ێ jjk߾}{9rs;ai鬆+--ɩ:)YYE"B_>%II(tyy9쵢b۔.{U5ew// Zl:?DYYv<`qDEE:3WËD!Cb54oUY4򎯦FEEY0RYY<.?މ*b+l6Ѩknf|ҵn3|wz}F !ꆰC Xfx~[$VL7CrrBqY,""uT_OJΝ3sr]s9ΫWFF0tȐFmbiir`oG߼[FZZ]]];!P7agccs bs=AIIiʕ>>>@P̙caa3~fS^s'FH($%'3֮g+V͞9#?'3z/6l;+#uYVI>x 6&*6&Qc~|nϝ=nzKG膆F;W/&%@ĭB?#B!QvzQ0$""BP݉{xxDGG3LCPx<ԩS;&!!믿|Rp(???WWW̾Iݜw98$7ދazB9?SXXx-¤$1'===Q___QQd2})>JJHH|dqƃLrB!W x))K]|G~ŦM䊊UTTʈRCC!{dee0@9z1rB!W =zɓ'-[fccNӛF)) 3]g_`4E!sppppp˗/߿M DEEO8KHH:,111bG |!BDkѶ*YYYXDD(UUUKJJ@]]B!!!wxjkk+///!!aaaQPPJJJ&&&8B!ԝuu_nnmۨTjFFFBB2d'É)..&wC!BFgQ|111111 !B!P7^B!aB!W`B!Wtt:Jpy\.K"BwʯRi h;\!T\G!C Iì4O3!@s@q0!׃KE?E!P˒Fws%b'ܹuu5pvYr`cG{r!ꓰCJKK I ̌OIHH̞5s"wu 'Q+~غ9T^ۆ ""wWjrbVFڹ{왝=r2bclmÆq-('3=z4{w 3f}S+_i]p.'3={;˹3!׃ rpq!P/F&&]F1#>qD~͜1FHhTGM6HMKkf\:oKwns3CN2bhlɓ'=..34C>**T*~Atn=r {nqzn 90oh4کގ7Éi}'rx B^ 7PWUTTHHHtHLLzmss335UC?9 |)YY /^IL>"_ri9'3ZRR2(*^ 5j#.>)9gO#GxDGqk HKOg5|>hB{{QW}EBBm!(jHLT^QAEt(~dݶl޸{ߝP[[ZW()))3`SSbii)iOUUu9m*qq~!ꭰC]5sSr ֭Y=p΋!Pg= Կs=zTX[E:z[D敠`}}̌ɓ& M|Ȑ**W.r3z iijf\ᄆ,YjeNfzjJE.PTx珻f=|B$%'3֮r-_ao?-'3A[=JJ !xrS|d倓'JhP&rQQ16MvzﵲmNp8W/!ԓWe>^㊊x}_?Bu #+^F!PN>?degOE!ԋ}B!|>SڋB!HC!">TC!@8B!y}^AV~6663fX~}KK ~7FR׮]r e&&&\.722`GA!B}>>! [ 666vYnQjj㵵w-!!ɓ/_ B!pBq83g2f IDATP[KKKlvcccYY(1 &ill~B!ޗ/@hRRR' >>VEE%==TTTʈReee.!B[+Teee^^TPPPcc#&"QJJMLrB!P_-&?gjj6Ν;===MMM'O ,KLLH#!IJXr/Or?FP؟zO$7+CC?9921EPJJJa>yBuYw)?Ѷ ]]݀S]]iiiX^^ZRR_XZLq]r--ykĉ&G26Lt>3ǻ܀B#dP F_naa!--dbbs{}4\ 62q+uuoI–fr[}'ᐣ!n4]455EP 77ѣG[la0ng}׮ߨ*--&⒒gϜɼGwnHJ`df~OBBV\D64'2nj -c?{ --}ᬌx]kD&~U6 =]]ii32R7w#nN_reK}}=Օ=z`~NffF꼯Co\ LԺL=SVV}c<~4ɓ' F`}g%%555vn #5 <֭Y=p΋UjhPWW{\߅.ܬs"RUUŠxK>lqLӅ>?nSWWW?l*e_F**+ِЛ t!\E=v];tuI(*{AFFfsr<cdh</,oƔk\I (tCKYX;r;X[E:z[Bn cٮkV,[ }ꕉIDkOsssR#A=^m6|?,;17BB;vKg&%%čop,[a52'3=5%q"xxYS4*-?<#ԁWrrbccn߼&t`fVv8}vu'J4Z\ӿx.܅1wzy,*++ pد^#g׭>9?ԭL<@WW'//uB[=r6VS-< &&V^^Ľ!P'+?ԭ9ghK!1z@ԎB!zB!/ ?!B1e`B!/C!X=!B#}B!?C!ꢞ:LJB!PW>>B!:D1B!Ԫ7LS]'j=^\9eeA^BBoYi?8/E!zYڋ>U+Gܒ͝,t~5s.odLyN|}:lz[G} iڳ/**3 9sy?145srry<^ss39y9Bej/8;<UUUQD\RR9w"I ̌OIHH+~غ9T^ۆDѣ#Brvϝ3=ϸkm54lлёYiǎ"&۶n޴u&USS3D--lۺ%1d˼y_/rYPSSzdCC3EDDJMNH;OޝTU/?L֮Ng$32ә1ЅςBe󓐐1cB liiP(g611r Q7hprE99\1s?thKKK3gL|%\:/X83+k=f̞KNk7&MxTvN.dhl=|K-lOjm5u|#|׻y^V|552]ꬷ#ǎO!--aۼΕUffCd6 >]tI~~bIIIUU~?q ?p>t zsB444o//;wƏ{X[[0 )(555)4H&&&}џ&'dfeZZ0jH:|:KLL"> `w7QQѤ&|oTUU555?c5ՒAB?jll| -M[k(,|$gf::X,VIM3ɞ;!B9bÇjjj`0L˗/یz7rt:T^QAEtpw[kddHjh譎2_A(//)))IIɠDPLLU***6Curǭ#?yb n[6oN]"W쯩پ!(((lۺew\.WZZ!z 4ÇRVVFKKK ; ^YIIMMݴHM\.Yf;/jhhضoYUU+''o߾mll>kniiԶZ{(WTT%JZ;)@\UUU)歛/Zxa[;G~v~JQvr"B@/@j/RRRt^ccTGAͨrǎؽk.9E~744LbNnPP͜1tut ㅅGlٴQZZJ>LRRqJJJbbbK[r?G(ʷ!t44OX,111~Ө#x<^^~>fF7} ^ԋ556C|bm=!:֧>ʯ!P_!#B!`X!BWÚ kRB!z\%9?B>8'V~!M V~!5py.9@(Jb˒#F[dI:ۙ0XpL6"''wF{GJJꇭop8v'X[a)rOD߉.>o:3)#5yz7*:b}S+_ϤRnkWں'OoTVVjintd_Ω$3~=SVVA.]8w1 G~x&mXe:7o&[|j5F;uۑQFֺ{_.\`w }.]_`h}fnf3b!0 MꭰHoâ>fa'PZ%Dn+Кm}m37roekvubWWE˶6U20ʲ V /UnP+Va8z`> 0ü_9s&n+k6HY`0ƺ:ZU.:slHHFqaaaO7ly722(FKu6t:'QO={-ñJyCSVC0pNkGp8MMQȚ!DGG'jllL4Qh4I*>xP!- `DoRCUSc/w?{ڽٳa1+}2@_B.$?xXGG-|z>44t>-8sl\MZVxԵϬΜxםa?|m]|ߜg|aO炍h;=4WV[Rb˓Gn9`0tttW$L|ê\rv=ww%(,*[R\7^|ihnnx#+FGyuS—EqܹWl|^EWK/X5\eZden8&WU*a?Wd䯼 ^۽MeC6nܘ j߶uο#5S'Np|t O>vXJUVVt:###gϞ=|𦦦O>d߾}BJ5k֬3tȷ&Mr3:I~111Ν[z\hQJJ޽{GyС-[oٲeǏ7n\||ʕ+,YrSN)w^ NU$UVVV^xEEEETT>*uuu'O3fLAAnIII$?xPG%$ywȐ!Vs !DDDz555ޠC .L&Saa{qƌGЦj[ZZzss`p_S!މyg{flB8p@1tٳg_L2hР 6HNu:ה>|XYô/m8%gX,\MKK۴iS}}\;7l 'Ȫ*!Dtt< >xNloLL… t:?~ĉ_~vNj%%%)))Fd2%''ulojjjhhҥKJzz3BBBJee/XZZr'gz`w;<8\wx\aRvd?ǐz:E+?z .xGB'yV?*:ZQn{)@p~ѡ7Q*ǮI?2߫Ihk@܋p;]h4v?c}B&$!.5sFqсC~RTBѸ5%ŅRQV !/}G+fLY&? @"W]r|:՗?/%#Gz~|Ҹ;'N6L;rxJ1qh~:[ݛo !6uU---S&?Kx2MK"yhTր+涭}~sB7owLxնn{t'!҆444e#iͪp\\56ȽuE> njj}ZZݚ`0Fc]]TZk¤e)b>?x̓Yޮ͛+9!DxD3pp8bttdMM.-!::hHRk.BL8zX.؂:.""$?Z~/z}hhw}N/8sl\MZVV,Vڬn"xr3'y/[8~ ̪Onykk濽?<)j? }|b?,:{;{ޮW!DaQQMWO<,E;& nB:zXfWoGj~ģ@IDAT/ݺYY7+Aj4v7ъ w+nr}{ꄲ;|pz~^*A$?>?b/y@G)KߑFI>C&]@G`ە5I?.|>||*ǰ#}.Wh$>k^l@FIOZgI >}رcU*UYYYNNGgΜygdd!T*լY .p95+ dɛcbbΝ;z˗C#F?7.>>~ʕ֭ $BO.>b__I򫬬X,MMMQQQR]̝;bk3nl⤤$ypŤk'{dnȐ!=S^^7ȣVUZ W z>?r䗐`2 5jT^^ ZEZnnn6 De%E Cl6f!DnnC={].Z~衇rrrھf8áeN c)qyggXoMKK۴iS}}b7xŋj`0]vݺuuuuUUUBhyQ"STbbby晸8&5kքѣG?Fd2eee 6L7**/N痚tR(-kڎciii\\\ffϯ7t?iZޥ=?݆ >i hy$?]\q)G#wrx@'H~pEH~g0oU#@#OJ=̇B>=}@?i $F2<&h4*k>`Rw"?SD@ .$ Zހ̇nDh"b7zp) A?m-{F gH~SL+<]H~+\+AqCڃ",ȴ8|h}ß}JnWnH3)z~HH^.VTZ=AǑ>/: >}رcU*UYYYNNBLnR>fSTfJNNnoo+((P 9aÆ搐%K !zU&Lh*Ja4ó ƍNz~rEEETTbر_}UaaTB3n⤤SN] K'ݐ!C***rɓ'-[֯_Gر5""jJkvmrOx$$$L&r-l޼yժUVmiiVnnn6 KU=?l6B :tׯw\B={H_S !NA>,7O~bشM6Ki9 @ yuuuUUUBhy^ޘ fgg744t:wSp AAA)))_~$%%h4Ld{ެ'-'M4iҤÇ[ף_/^lZBƎ1BYbܸq+W ZdO:% u (HIIʪ3glllo`mmm۷oϕkp3y!|A9T*c=L6ؼybɉ6lhhhPTӳNb\zh4sεX,r':ub̘1vf'%%u ӹiӦ'N(&i„ >Ç !ƌt:m67,>{l ;} /Ԥvm.Z8|,^?p@FSTTt:?#F J5iҤ-[444!:::w\N~vȑ#ʪsOyy7|#Wjkkr&<=ǥ|7.^XV ڵk׭['7EFFVUU !Vn+IIIaaa+WBj45kH#,,L:+BѸw)\]w5xk !n֘~[lQQQr```kkkFJ w ,_hњ5kv_r^u֮6S]Oc:4777 ܻwommCMcǎÇ/))%!!a3.c˖-/s̩.**2eۭV?~CRSSvn?{i3jԨ௿{]'?%j;::4Siii\\\ffϯBt *?t:v{``#׌Y,GydݺugΜyך Zo7mZr8lnnnjj0`#׵l۶---?Sm&+<é6W^Y3OY@_Oxg__xO%W[tUծ뤷9^ֿd1oIENDB`taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/docs/source/imgs/y_axis.png000066400000000000000000001445531514602004300301030ustar00rootroot00000000000000PNG  IHDRS ^V pHYs+ IDATx^y\wfj:PD(Wrn!kE䈵kֱ:bak',oRɕ)DT:g1}UBQ3x~盾9R,}J_!@50 ?a*B?Po)V)KUdk}(/zkJyk (""ajk`nQGW*Pcr˜g qO## CgPrm-m Qz !"p 1B!F`nQ'/?-}¢DO}NβcCL)Ou u542*k>2e3d2 R2uN9CSS_P¿S~T'342xGDFF(T3):y_ݹ}[ 4iXǪrL&{eU"d¸1Dm%P%JiS042zsϮ[6mJMIQ.|'ƍ8nqc@Ujɣ(hڤq(QM4G JosRR_kjk4%qEt_¸{ͽ@:en~A^iLoFU=VVux^ѡ- TX+-T^ѡ垳WW^GDv¬,w!=44Nـo^f?ݭ0_B>"zDԴIܣmUgܐӾϜu}" @ib;wDDԪ}AA(~Az<|y\Ho"ϲSfo/STmr;~ET1Wo5h¸n3@,)z̰E%pnGo} ~ d2\.W~ݩӎ->{øk׬9lb7%% h g\{97k9EÆ"2uŲSGϞ򯗱\.>d.iЯ~<{lňvБeϜ;_ښԩݸM[^5rx37zsU6?!4)̓kh%''~~N&MڴL Hd2YŇ>x+=뫫CDFFF {MIO=bӶlywɊ={uYΝz%QrrBLsrrrrxdhm"O"zUKRRy|8{B6n'AoR33>Ԡa{ձ4,ABa)'7(o?ߺ}_@I ͞0ijTC":]`T&Whii)!PT*|ULL\vfMoqq!a"eʷiڰסW䬜y"]ODF PCq){(((,+:kB~Aޯ׸|GxBA}k@з_++̌[ƙ2͗"kPX⦻4uΛ3_ @Qvv6ѩ"umۺ@ _D IiaߜLL{tQ\̬cN ؿ}sabqsfJ={ɄqcE"_P ff`AdTi f)G"=a,]eaxf޸Nq wu-o͙۸A_ /YW9 ?vporJJHhؕ׸}=?wgvv\jXx~nn^VVIS IFk[_WKڍ[8oE~~KEWzey ̛㩩ioΏ3zҕ|XC1OE+ڴm;~x"۳kgMuņE:'ki\x/*FCC4oټisXWrDz,˲ hhhrueerV$ʖ E" H$jۡIvr@0 WfJ_ CfYYEEE,1,K,+4!x_ T3d~qqq^[o=2bF@?˲YkjO.ƖL,>-T2?u@] Pԅ®_@Tm?Hf~P} P2?u@] P2?u@] P2?u@] P2?u@] Pԅ@"c999" T*>[[þEy_ŽDq77#o]7#Y'^J=7 T"޾`_Ry^9$pw} * %,eKhGBT+؀꭬+Ry\TQPI/Ae2?hzzT7KPY*/Uٗj^///~DU?Pq](_MW1Q?V UFpOTO#(@/_AӾKzBz+GPK#P-@ķP]հ5Oy^B5.PԼ ''L_,ZcGU6?~2?RP *'ۗ@P#ﭡZ}]*2?0* P>A};Rd~Pu*ej5@uħjR"/Ae2?*R Pjy TJr غw>j(~>OбI nfH"~ >!CN6mժUvvvyyyn׮݀tttBCCSV3gjjj>}LJ:H|%|mڴ xŝ;w\\\GfϞlbbW_mܸq޼y]tIHH={v@@@5UC P짶AOJ"5uϻYZZڵի^ZZڶmے4hзoϟkN&#lllRSSo]+ LRRRXXXn [jui"u]jU YZZZSNS*m~PNGUzP}TߺJWf _$>8**zGzH2?>½G:§%]$ʧ:$,hQys,q;@1.T<C.@^,ؗ&&^,U~}I]2Խ{QFo3uT^AK,+Ϗ:;444믗/_޺uku1bDZbccnݚl2DvZPZw̞={ Ì?>00p_5-^x@T @56w?b(466NLLܳgϳgϸӧј1c=zDD/ӻ={!֭[޿׮]ʥD$ joo/bbbry6molloQFY[[3 tI5X[[2ܼСCn"_;vlRR?D4uϻYZZ>}xDKј1c^|ټysOOO"իٳryǎnݪXa:uB+Wպ/_TT41TGʍU2dHvvܹs g̘ED&&&G^n]LLL=<<ײe˵k;СC"33#G]6!!a̘1}=rҢDDvvv .dYvrbȑ7n|葩T*dAAAŋ_XCVVccc e~ZZZ[vmVVS2t;v֭[wDiff&DfR}[Q6l3224hѣFqV jJJJ^fddcL%{{)S-Rijj͛7`֭ݻSelllJ.WBpppvvvQQٳg[h\ĭ*>>^._tWIMM577oݺ5QV޽)Jteٻwd5İ,a`` a4M!!!>,,,|D"iҤILL̳glljkjj>{666&&&׮]#"[[[^槡ܜT11|P6 *W%bfFF633SOO 3332222y}^dee(Dd``вeUV@ (,,T.$&&nܸ_~ 8|۷ӕ똙ܜ,,,?4iҳgOE(MHHx] L#[[ۦM޿_,7o0>>;::e٨([[[@1| Xȥ/_b[--RYP3R ^J g1 gϞ"a $Ԡ*(((**OMM%"E攕Un]E5##tLƲ"R~ⵁrHD!!!vRԩS/^caa\aرaaa۷ogYvܹEǏ555OEQSOK4hЬY3???mm㻉ŹD5dX|x֭[GEEVfMMM##ϟ+WT^++˗/Zظ[nDԮ]&Mxzzo\SjPݽ{Y()w-;; 2 ӡC"z\.OOO%" _'''}}} =z+D֪U+[[[ak׮\111144$ ;wlF XZZ2  D[[^u;::*U\TT}^^^fffRX4i҄ύ155mذaDD=xK.^"JJJСH$rqqy䉢)R5@e)/:::::{ʹi& ''''''88}qqqKK8p`ȑWNMM Wl߾}ĈׯdDo߾/(55늕͜9㣈Qrrۇjjj{7{` F]PPpԩ/^Ѿ}Fm``bŊcǎ1"'''..ŋ .,^8###,,,%%E~ΝFDDjՊb(bbb455:G=tи۷?XTw>_ʔ2`݋&Mxŋw"rtttppX~}AŽ<<<# ppO)fgg׫W >crYwZ *LO ?'VGwilժ˗dLLR<^^^o˿O.]>su)W6L9n:xòlaaUn߾w^~1Nll,` P)lmms}ɘb{GAz"00000JO>]b?Z6T*1c?{4APRfxѣ7lc%Zjq---A]z*%󳲲0a¶mb1תwƍnݺI$SSS''вa^ccYf)"wܱYtL&;s 7 P?R2-[lٲ%:zѣG+X>a Q"#;u閒x%|@^(={tW577[ 轟ÏTd~}ǭo[޽/] 7Chhh8n`h`] >={tW<ȭI_"733%"D_kBuCCC#"V-ss"jۦ͓-uza!_ѽ;'}|T#{{UظǏtҙj7?s+8/((ph45W酆9::Q>ҹ3k|˖܏;~qw x>}kArrrE øuڰQ&Eܿ 2N׮s_׮]6K/kظU˖.?OzQ x>~ݻu}]{s] :::|FfMJ$LMM?QCpo@7##CCha?x:|jD2$$$DFEfgܹE/_ebb"(r (ɂ]MUᗃO^Dػ{yyyumTv`@%B9;m sKff,z,D"7n#Jn1b Dx1h׮+/ؤIc#CIIIIIIQ\>"U@栗L| 5x IDATԎ_Sk[z9KRXXxbW\KK_W`"԰a Ox(O8vT曱nW///~2Tݚb>}Wrߟծk-5J&&R?_ 4zyyCPSS!Uq~?8d~ K@] PPcXRvh #t*=P d~+T@e`05| o@.|T \ 055 B_T;*jcwmߪxkNP*e"==_P.=!P9Jnadlڻ9::4onMJL&G*Ź'?*w@TmNJL&[s-YpgQQrA\?q숍MC"ZsՊm[6O?"#LhA·\>^Қʄ>(Z#֭{Ny=5f\bb?M:eYVv藍C-ssc#-[)*K$s~Թ[zzz&_\\wY~۠oܨѹ;w(bU"zEKV|sWP]](Gn9?>\h@P|p]( ?~Are\>hz^ 8;c2èuc*g΢2?w0b5nx.0agPQS&O4+"eŪǎ;q">Wjbb<9Y(kÌGYʵOܼB*j P!R#jP=P D"@**5xRP&:ծk͏Xa}u#"[~ScYeY\F%~긩PjHT7.1.O/Pir!\*-kH$jo!OǠkiTÒܴ VAQ5RMw6?Uòl/`F5ڠ #RcXVβ,OdY,b@>2[(@`J)@BdD)? UIÏWKxY8jx;ģRy<{)ˏTL' M~Hɫ ,W:nPDܻkǶו>)}}˖ v5b"7nXbʚҽ[Wg}\{Ǘ)5kåwaaᦍ;fZ+~ %R d^6L2U*rW'M׹kw =v cK}C =6669-=qKsqyyyo9Iϓ;pϋ-^.ΔFǞghAbxo鉅] zZHr1jf$3nHD"j{Doe\x:YjWV>WKTfo=xhBCK[[&O8om u󌿯gmH,?y5  l}7/rqV₯]SSS/4lHD2L*Ie2v.+ַOХK{JT<t%—/_>|+Kڋ.zT*iHDrHL6vmw۶u-:r9UJB>VJWB<^c2p>YY122z(  tqu ccsQ#G??۵{ߔ9-Y|~;j۶͝;w#C򕫉IIo v5!!衃/^Xj%*ܹ~#4aOx+/R>kp初] N-֭k0s%(pm\GrPAtAtMGCsѐ\)[$goY(*Cz&`%:nY :YhDdEDn^Š ޽hǎP.t˗/ ]\FD~Nկo\'111<.˲/)(|W\ֵڳo""ƎuvZ̬[&LcwDwS֖*Ao%3 ?BfRs/ aЫX{{I~K ؂YL1&[zvZz~PK{ǎwLH[[{Os>pL#9%{QT$)?M<U;fNu1|ip MRN\o("eHCSc-/wݾ}{"atSNvsC͔IRe;SSS"8xK,Pmֺ{U˖mw'"7[J Q\\GɈ55 w^7mJ o]7|0##Ý۷ugϝW1鴴4`Y[gffƽАI2\ ].6PS$[V cu5mxki61i%c#0Ql,_jX (+#nۮ_ e&L&=򗟏+1?8**://OOOk.E<2,!!сlml9:ݿ+M"y'͚5[~-mmm{fpS]{c&Odia7v@"ӻ0" ~8==۷ٻ3ܖs^Çv(\ADOwSG''P8eAX-T~B3%OvY1?%4Hya' m$Zym$LvF%NTVPR<[ 0ziqܼekp#1)ĉ=rE 8+/..Dc3IϟIթSЁ mh{ n2//N9۠AGBɓ>w"EKX,%ثWVϭ} {K=Æ_s8 i̝>jՊ?O:mUJb }p?\I<<_WOPM8,+cFRտ08ck{]}"iр-iߛUڥ">pAwzH$""a.'fhoǎ᪵st<}FFD$|NPG )}\#//*п our;#7mڄb񓇑b5Ç}CDڷ;y"4ZЅ\H"ڰg{PSnРo޸pt>\to>~9df7/\2)5@PV򧜭8sͳg M7R$D,Q~Y?Ν#Fe"ZtI6wlr)0@SSS"Jnwa*z˸oΟSBB"R%'~7]G$">wr}ЗMмMYY122zյco?_ت㞽lڨ9˳`O֡ #E 8wիm*|P(ܴaߩ>s2&MђE RSSw2u[>\vqqݧg/)#BPFpzM6yE?ong . G$},^4)1vҭpBa.{׭[a|_2$&&~5tXfV"|wsrr6l4ݝ\{޺m{ڋ1ND>hdk1~ܷ֯WG=qMzi 46d~&7/bPk^D4pcN(z8_xm\~𑂂BG^/YңGr]v)) øuڰQ&Eܿ 2NEfMJtw+?ՕztacQQQl\I_r?;w<ۣ{7z@mu5n/|NuYG[_ }ϺmƯQ|Neee)G4#u Q =,F?lPߚ2Cr9;rKGlذ!WS-qsXф;~bD4c'Z+&=(xEy ><~kV߳F5mZ2?Vm~<}jkcSldc"~8oΛ׹;w&"L.:Y٭[$d~ZZb_?`Ll^",ڗO,JhE {?G_ 7]vRk^p,R^B-˿0O޷Cos?y<-SN7۲u;WcǽsNخ[Ԯ*J8 ۜWsAǕ2g<}2%%嬿ߑCCnɀ?͝|9HOOo_R+A>}$UTn]7n_?":=vhc#zKⱭD4c[ Z[kPӧOꆛѱCgNt3ϲrb^1uRYi_50L&Gݳ~Æ -7O"=ws~|lOsuT6մزyۀ2?^0ՇP(iԘ{SNEW_̽677zr3*_2?(U?$Qd~T~nCLVYT Pж8#ϝ:|ޱ]:#"ss+T.ayʜ2`3f0 rrr~~~e>@(0oor O~x7d~"hԨQ (?]vM4֞9sÇJ * A~~?--m9!x7TdoٲE x]ڦMۗN@ɓ&|)?Z=|;vիQjOPe0̥SSS~AɢȈp33~[֗ڴn})~@I)G˲W^}yRR:11̬ jޭߺuƎmk|;:P1~'O],2"\__o/+ӕ*cYws##:z[>%!_YTOO_]JCC{[V+ȵwo]{߻@ff1{c~*rڻW23OJ"2墷}my֭`Į]lݾdтQ#Gk;ol~ G~_ԩ vn" *_nnX,^bnGAW5?bաGN+2 3}C].زeř \۶lV,l6mZضR`I'fȈ6[K$Zr=0s"%+ IDATa!׿<ŀ[7oZ 0DdjjeCox?RܜiQ֮B]|yP%'}|{许0q=KJ=Fp>,亯ȭo+A7/O6xzt)=#ϜϚ9]CC<rı#66 544nnn~)0`uT)#?e%Ο|L{tFD۷7r0'oܳkrW[Ȩ#IQ j_rrrZז\'oAUՠA}KK' пs>={ׯ{D9-Y|D"axҤ|۩K72'M'nw-_PPikV266&"_tڭs{GǮ]:ђE RSSw2ucܸwsh߱Kw#ǎ+>@=~;j7?sT"̝cmqv\\%]]{ww_ט8r!X,nڴ =|hԘqm]~})EEESMԥwPN Ν Lx1}vۑ#v|/^XE ߭' c+ݸq[n)44 262TpxS?;w<ݗ'&&eY6Ess3a עӘ;wr^6dDF~щiW6ݻymXTT}җ.hժenn'O_}Ǖ\]{_ (P]]Ȩ7mYXX<9#=_sJ=²lZZ!ݹHDqdff3--Ȑ{}RWvYvOU.uVS]JuKd3gDGGPUYl "ss9?Κ9{"4.ƏАyń訷/cJWWWGGg][X,H)܋"T$~<4%Ԅ?_,ZT杻⾮wڭ\$ Ìinݶc i/^p/RRSڶm\T]PhnnM9|X?]4TSedd B$=={/*J\Ѓ.]^t|ܼ?%DyۣG=zT9RV@%=~$==k'eDD-ێ*mwÈQcnhk (Gnn.sիVݲu{DY6۶lfJIIi2*Vih|i=z.z,Љϯ\z1@ٻ_yjvt?{\aIXPP~?@DNptjZ}6l@DٛshDǖؾcg~~Z[>s1iSHT*嗁c;i p%uC:j׵ bd2"̩T b4;;o9R&&Nu.sMEN2XVYLr  I;ULNN{bڌe?s{2?PWPa!P2?u!( @@]k*~zb۪(DEt v^Zžk]DQ@j*Mz*"jkauWýg̍dC!m3tڧ&<.>.…a!зN74Sm p>OB!c.eFGoB>"4(`hfΐF#--Y޳Gs2BX?,^z{5 '@`˖&'fg,05yj:QMlfFğlOvLewUՎz}Əwrklԙ5,y:!B0O{nGё6?j *"{79.>م%8tMl]7W1޹caÒbC]n\ )q11)+ BS}GݽZvF S7?xAxxMM۶?Ou}< cѣ3ӒL&B]O6BAy܁GT4VILJf|  )..jƗ?4RQQѺo+ œZ#%%+Vnjjڿo5OT[[kO?P+θc3YAժjlHX[-&Ouu>#zAF8NTCi;Խlqlbl̟PW`}&&&f?+(HMK~z))8ov/Q`%'"..~ܙmoJJJ;s*'3--%?4|ҭΙiɑŒ 4g'GK3R\]de(+p\LTĪMMd 1Qq#]E塥9HΝl֮Y`2Q'~y'-9!&*B_O 8;9F[adxVzJIINۦ$&.]q9fdWUUft܅?+++rtZ`bBx(5)~ UP]Q2OKO%a| @~R?XYY)-ݏ8?+p/?.žB]Cl"o޼u>sÇ+XF5**+<;`QMc OjjёCL,͹:z"" Ƶ˗CO߼u**D֨iTUUY())}əlPIimm3w~KKĉߑEZg&+;GUM#+;_NqÇYl?i|1D|YEE3Wݻg3RFQRsʈӒvW~R7v$S3{KK}j︓즦&9992RQY@*(.~ʯ% ćfK ?A6+!!yq˖ ʁrr $,-g566ݳ0_ (//}=%5}|ҕ=w&>8jw%1!+,잷/NGBBB"qsw晳ٝq͛7+Vw 0r=!5YR=ZRR"i>s=p82229\.WEE}f?x];8tf5իl"Ͷh4sl%nǍc"6?ѣ=ZJ|R]M-<"R\\ӏC}bNO`S2N ?##ZꚚngt ɂȮ=nش CBCB]{cT(Av}UkSxU2R]]=)ÓʸSup}C$$z4)>&6:b„lOv⸟VBBdVY3#vǚb#2RN&3`B ёӦsUkm 2ӒO߹{ߋҳc'N:9^MI0` ˅?/M>-$u%֕^~r^hq1/_q2ϟ0RPP1q>'ѣF-05E-@h<]/ŋ6lFѷ{4dCt:qN̷oRP/|}]qOopZ^ρ&D#,,ϢEYEϞxxzQ>xYXH !m8C B}"6:"#5c4~{R0f FۺeSrBlJbܖRg'G9}!qCի?xa=x۷oիWiԚ!PĞp{B^<+x8>6Η5s 5 }u̙3Ə7mƬ?.cEFES3>024 y<ݱխSP\˱&>!AIiXffVSsI?LMor  ?O LJNfwǗ[X,$7oܸϵ4L4fx7BP,[Ry%ˬNrrj?o,#ӟQҰa?nnnG|٦O016"OCq8rUeeAsKXƆ COWǟrrvlONMNZ&**JT;f1.RWXnaMr.7]gLpLrʵNyMyhJ)B[޽Bp8/^AĈJ ..~ܙ:C]n\\f'eNL^j;S*3qcǤ&3ѣFyuLK1bg p]b\LzJ#b#R^(""CVr˭^ pi,?oy99 @AXȓܬ&I֯yRR:yi)IK&F6׋P<ݑl`ۓw?4|pҜA^4>6zzN0_x/4(=%{cƨ~\-͘ueÕntLK|fldH4htIpvF \u?+P_OczaQQaQTVVU},Tզm۾r?ڙcia~#3#3}5 ,,u;vn'|u BB.?C)Bu !m4mذazqpv_ccƌ6;؟߿CGJJJWlde稪ideg)b]#CwEw{{=@V-MQFҜ1WDTslADdEaCٳ^PӘqV3ȑ#O?xDU۶777-01355޽;fwȜ3{VaQUkll tjppl- MK3gL72XdjbCrXX6-1)i˦O>{>2*z+* KA!Sԧo޺aejUkT4֬ZIVAm=5~Dϟef51KOAAaA*@Mm1*@#`0LM<<|"ylۺ95-m斥K~ogرbbb</;'WXXNጦv`x-Qv0目A4+Of͜A.7]l6Ƕ3XAi ?k„񢢢v}ܸSÕO`LLl]]]SSSBb{FF3?=-`<틗477ȫtu""b⛚ KYYySSәt+-))UTLirVuMM]]6C]\\ Q;1cnp89aƆ֞^ee---a+))֗,43Ztg̞53 4xP;w=LQMKI=k&|oB,QW`{ж[HLq?,9!衃{ڒq?tPV^yǍuws%J[U|jLm[732*yO5ׂii/KTill*/ N=Ym[w~ɰ{EDDmݬF<Ĝ IDAT? `._524㛤iQQQ2ZP!zZ$yy22NKJJ@EE%y˯u0[p@??jScAAA1qNf˗}G@Ii,q\Va6[sgOcSqߑLJ\|<WO G###뉪j1s6yi3D->@}p}/(3'?*+iK`dhX<uqe+ԦNqvrYjСC,[^__o."'!!QNVNEEyƴ@nhh0%ݯTWU5?RQQIq8*cUYYIaJII-  3![ҜvTZV6O{MkNPPPhD@WGuy\WPPmfBOIIWx];te"ǚښchN段;S*08dc +;Xn- d2n C9i~}}ܹZD ޻{W|B"MZ?545m5TukM`0Gh~޺ٟݾԽ-]*)))((j,|Y8|'B71YZV`0ș55#G`2Nf.Ə &K{榦.pe?p٬>bw)6:"#51;bKWޙPBBZvgJUVV>}d>yg2ӒcV%''{KjRׅ?/~Nz:Μ"]#4H՞H>f  x'$$D$9tO0]cZpZJp}=]pLzJRT}]d$.T'Ovvr<6-%1)>h, JOI9rlii963-9Aydv/=yҤ@ovF?Γ/B}G!>K)1 iH9s IIIPT,--$/(x=Ov+8ݷ5?l566iXaS1g¢"u-!! WVUeF"SEEi~Ǝ]{Μ]Vv;m/d2/quu;ÜCޣa? %%?`׳>44ffdndTtFf&˽ؤ6c [Z4F^|zR}{QGٔa/l߻DOp妘ҥ]#/4[ ȸ|YY)yZRZ*##CȻ?{y^BBBLLLTT59!69!v1j,[r(T~\bED***[44 %ozy:`K.R&WTeddJK>[cԻžB3O{];.7$Q#G^gzJRnvI{bLqpmTCrhI|ǫ#zq+Vu5U=xVP`ldg.5@db@▖0}绱?4uvlVWWа|YgMTU}ǝl#d9g՛n[hI{2.ӿ? -ɵ{ʪ>v[##m?~>? CgN~Cs|Cx־&'rNAs3ss=we!51_`ʸ -JJK%?0#ۻ{'N7C۟:M2LI :u"'+7kǛ_˽rq?p8A!' Ӝ3g*N'vp8_#STU F}}ӧB<kvqqq:^#F yyW)q ۷mO3{Veee^St<̬  :'))y̴̩/hu6k׬v?(¹3m_u˦ؔĸ-/)Z02<=%)姤4 {e&ղV+ӗ[[gf`\^=k22oY[.:UUUg͜cW;:bw]{srrF+cOx5**+S[/]n &7o͟fkkjX^SC b? }Q!CjkHIJ2̶߅@lnn`2@DDdj4+ȓfʖA(++eDPHH2%VVV| .cV@aVv^+3uٶuǎ w/K666JIJqhhh8e[uuCO?[$߾}G-0 "" ̶ĄKݛwQrrvl߶u30#\yKt}.^8N}C7_g'?e@xQ]]mdhǷR-6:tɲ"m3+++7%efm%%[8<n,V¢¢"ӗYP:QS[#ފz]\CV,p ]:6ZZ۰X>"%%q֡#vd2njj{%h*t@ee>~dڳOAA鯂σCB p]*B}n/B]r_&INpaLO%$$բ}}&ODDZ/]Yh` 0~hÕ,- W!=5~(**((@As6M.7oJ8]Vv6]Z@@d~7vɥG **GD="Aw͢bbbC t ?f!0x Qhׯ=\IΦ `8d2O'V з{~u~wشq}BltLT5uIOW'8ܙSĤlؼfM|k,VNnk̞o򸨨hѫWW}s9UfϚD[.I~^Ŀ[޾}S#p8+̟r5Lq?,9!衃{~l 1)yi`ia Gck;aaaiԡUmQ^o_?-7+iL1# KJJX1-!1 ]=kMY3Iqon;}.˺x / 3u4dX|Ԃ`<|b'2~#|*m7zۋBVrgd2u{WW7lЗ>*vW#_ܼp̯ g'GScjT7WYiL&?O;3+; 0|!;r_Zf5]j 0qqh0d;3k}HJJMFމd j .M6+V++ΞvXj~'4䓼w?~r <ajrr; w1[SZEEHHHg6+jjky<ĚZKս8Z h"\<=J }c#C"p޲YTTt?i7NSWOLJ=pįv""«mq82f,G'gpm_%$O$"עw`1N֯9fw _Nd(*FQSV^N477 ?x ke޽rHKKJMKI oFFE3_yKOO+W;BN߳kK2LjF{`ú#3@]]|=)ST )E6l6213213X+""?|B^A~*%%%3^`njjlG)%q w=P/ " sf:dOss3  skmHKK4p$5o)($$<_۪\BJjjy9y**GD?%%%YYz ;~ǥVw?ihdʮ?BTDd?xXXXXPPף/_ ]K{/ _QC|p~]':|Z|$'+[MLL,~VPNEEEo\+'3-,$p*ԞH>f 0[` L&37+\,E$Ph[6%'Ħ$mټJKK;^x5Oq}aΝlx-;#^h)D-c"R7oHQ_rIn֓ܬGԲ%'xڟ!q_&ݑ䄇Q%%%@1{~RȜn ~_kKa۴qǏz߀_uM 5G7:`{55.]<#3sZ.xfeg[/~<݄Du~ij{ZKs5C9 {NNnxD۽UӦ4pKBb" :~\jiSe`mlՊVlY,=j}?.zizg@,_r!!ohBLh{ >>={m񅖋?̜3?uD׃E!|{+CY}CAJJ+~Դ%""":`KMOÕ@_O72*:#3nllRWsjr3vi۝.mjb|[MMmMMm@`y{򕖖¢"_"S__/*O8;#qqi4 ͛ <"#scE[G4W|z~4^[[Z!6vAM1QQK?V``'~=ѓe"ȷ.EyRVIiLFfIҌJIM1]C]]-Mdw؞kmL􃲲2"udϟGdq,1 {b222X}}wcz6>ӦMSQQ9|ȶm۞={VTTDMBz~kjN=d0޺ȊƑ䋋[ZZҍ i@{YX0Fsl)S~TYYx^v¢" +++vǟ =*ѣc&)&&ֺǜ:|{SUUx]yyyBBF=p+W]S=Zm qq~gJM09sE ˭GF@Tt9Ϟ?f!0x l0 YfDfpHFPV~߷k+<"r!Qy興Hx</1)Rbyf:; 44hPJbr]98cV y4 kɉq :#''зMgKj{ CT]=xc򗶣/~iqGqF6DӶ_t2+55vvv.]z5|w /^? 6P"@W<hx[AimQ(ϼvW/ه#b^]]Ϫ GRijn&BDw훵iziiicǩOh QaJEEEhB _WM :zmt8~mvS8 (ad1LlrP[~El:St1okuRԑvP洫ϳ]ͧV -Θ%iտqqqj_x$~ z榦;1jNK'$4Poh-4| `PYo9993fprrf ﮗ]/oj!l9r#G8ν{!BY=?zIB!}֮.Gy!z+|*!B{[{BΠiqoq#З՛z~!4zCC=5چ_ޣZ?!z4zP|0kLj!cuێB!zw1Bv"9!6%1 vߞĸ FW8q.1.&=%ɑ`'Y>L&_?^J,upLzJRT}]R,ny~!a= c&} q˗g]h]PʈӒR%)3uz: ##S\\̟3l3|<}<ƨ(d&'&'Ď3F\\*Bn/BS^Q>O{nh=Рի)ߺ5LCfGE?f 6ͮ8P0p<с@HIIW!/^6uNuUQΞq ۾s/khhX`YD8P-0%O-͂>i՞H>f 2QUm99Ϟ}5.vRPp雷n;zXEE(ZbU55VUPxInvZZZ|ygjjj{ORZs%5)Ÿ^~çsϝ9E?ۉ~w[- pXSSSltDFj҉cv”P^]ώ~@s?Y w7_6ͦ3w &&6;;H651y˭$"ښ?쒗&NNTT:n„mKɩ@Lo1cn0cCC⢞^eev>9}CJfصp8G;jS񗦦ϝ*~,_?yW2;⠮n}k]^6XEW/++%OKJKedddddJK>ˉ99];3֭{Z,q!7mXOde&j%F766JI~Sni۩풗/+81TF?qL>f1lPet:]DDd)i з ~h򸡁~yEׯ'M|?,QQQ1~82m|qqqK g2(ݯqPYYxYԮ]{)((8;UyIIb-mɓʪmxLPPPhD@WGq׹񸂂Bhax=]MtY=\#S&O:mƦ-?WP3B!O _s),جoiiijjڸi:˭ݾC${XnYN o d;0*pVљ?/3-91>frkvKN+..INۺyYZkcdd|A!P@3]J !/^ܰa5;mdАa Nf@}ӂ?pZ^F9}=sB!P_BpZ!j {~#Ws$>E! B_ B!ïE!j_!Ba!BB!S& \-mC!+׻!B}+{~8B!Ԏ^C!BBBLx_ }!pvr451F;~1#zR}{6ƍA" ?EC{iϽq'7;##5冣$5_0lI&R]ɺ Q}}[`0 _<{BrB=C3~9wɂw ӥdMgyyW)q ۷m3FjiDE'? !hh ,InVɤ<BB>\iJ͛nm<`{!>~~/^M9tdҜ`ն5oߙ3getfzzFនIVݷTDd<)/K;o|ʔD;W]fBTTT^^ŋO=?O{M[@u#G؟hРr>8๖I&l,NDdTl\|SSSAs@!uB]U[FJRd677LJ -Õ7z(:Z3111aaVhm֥uANNv׎۶nfdToØCG޾}_Iw=NV]]m{|jG:!:Зŋjr}+'yO,`n/lvSSiiix} @m8]YYuWԧRUmNϝCS[G@@`mк'k`r ZNN? w\wŒl*ܳ{ _-BUTb*u:*jŁEd((ڟ(CP84B\s(d~j /:R0XueK R~z niibq͛7oƚ?̙o``eÆ"̎i&::֧Je->+;ZCѿ y<؀ʞ>y̎*>/)~F~^ՂWC* ~ @)+42?#}j'r8rh d~xZ!SK8$@d~B3? o (G3?;t ;9q8&_v!E?M`P(ebb.BP ZT. H?GDD"ru; ǟ@#"[h.׮N7O.۲ekVv57ov,۩1Q[""ގa!i7o<زe ZkGuF+9f09&:nӧ[zBЯG r"ODzz<ȩo;vu6܎ptJySQ#GtڥG:ą=e׬عX,~w:%\6gLP8sWz8:}?c\MpWv^KvP'vj򶭛O :zlA[m/))7lRYJwoqqǏKJJ8}fJX,>~dIIiGL{|X_;8͛ XXTDDiD}UvUmc\դd" {ϗڥOx0 >PuccQ"@||칱q*=\"y7F<+ff&eeZZ|iSSSڥ,?t]޳Y}Ia/ m~QXXXXTdii|4gZd;<33SHNNىH,K #"CCCfL"ot7oثԩg{1j5똠ܯ]6iC(D" >2gL]]]##I' &34p&jiiկ_?,,WϞ\Q#fJ~UDu֖>t,>с6iҩCy833yVs< z@`ii)+FP\:nך+ a5p+w4/l޼ӛ475j .B/PnW5lhUZZz5>a*wJKWWvQP]x TuWh d~jC_Ra @-)фhd~Bs)7> X$fGԔ@ `@Ua;\.@WWOLT.s 6?P[\.3!F!zzz#1m眘Ν:UPn2fL~nވ ?С=iii^|/dz;o^)I.FpެiӓSO8ڸq#&8h awo=sm6׬+&:jSQ#S/]p<ϷWNqMs=Gܩ#3jU˖D[#\m >r-1A*U < o޼ zzzs=gw!yPVVLeZ|>egmmaClڼ(**SNގL/[lAD\.WnkheeaaADUXXCDߎrݻumݦuLl\jZD,MKKU[":bNx͚q8M4\.7-VaaosBy IDATܶm8Z;hnAA;KO;u+;ZkԻW5mQZZŽVSVVƎ* {;kWi ʞ>y̎>jj5DsfK:hrppAIXZa]hP:x@y%߼{(9+LaÇB!q8#GvU,FEEUBܤ/}etԩE˖-ӛ;w MpWv^؋x<8tvH~\ثġs7[cddĉlȹ; |/^x<^>urr?n,Sm)i:-u)ޫw?A.q?w=n۾ɓA7n fM.Y;wrLRb5;vFD@cܩS?A]vi ]].;t3tĨG wߏF 6ٹ >thLe%>^ Rwkd_BDaa07oޔ'$HԴ&֭[NH$؛)Dp ٹK$߹s޽ݺ2Ke-۶6d b7lW/^i۶~cDtH`֭LMM}btHn_֟pd XXT$w $o?`^~~aa>2 ̣Ǐqr"C\<2?ِs}815_@vv@U i0^|eX.ϯ8.+; ˴|"ӛ9cGq-̃TV4y$,"200<utt,@EDϞ=766f/Z200|u3SS#ǒúϟ?g"EEER K((xSqevY^}P#++֖Lq\DſT~~F.*2?ѣ>*yd̙5/^TT'ib\~UCCC"zMqqGgff*OaaaaQ_1M\:t]fff?f"/ff::c>2^xѼY3fKe]?V/^H7~zj053}9Y5";'rs_w*4f_*4ۋ<#۶/[d׫ghogǮcc3ԩӻ#XggkѡI$!?8_ p͛$jΙ5SWWhĉA.0g Iݴ|W_%QqjѢ9Ǜ>>hSA-ECkO%3<]u唓.ʞ>yۛpj-˫2 P:=ztgZ:٦bPwXÈ&lP3ټqNVVŸ3:(2?r_{E!PmP^儻C)<@S \]ݩMK8@5wJ @)h d~0f@槺pH(ӧ^Ύ~f~C0559xDޕ|o+}7o{-bG@h^}z{̘ުUKa05-u\v 6cƎzp>_}|>]D_"Q,#Urhl懣>Ơ֬{Kv^|ŮTS$JL X[J$RvO!P2_j'sss333C™{n$EgK{^JN==="1} Ny#2CLͶmڄݸv班X6zH"۶|Zt25e5k|xhk[7ob.qRkkX&ǩ?DGMm1nb,,,zBCQZ;!.&5?_<` qzL3cb/FSjƶT[F6gϲ ~3%m_FCDQћ6o >@"r&,Y5|h}}?ٽ{}oђ^%%%hNxBv;޵` ?xmjR7X[y1'ҲMۈhUW!9vkNNc^M6ޫD"i޼H$.v䉷nvuN__L'۶oݶ|w_r-P3PUF|YRR. 3%B5a11o޼)--OHj&%'35mluV|>$&&I8A>;wD;w޻׽[Wf R'N-))㻷_>lgDt]>˱WO[v-[1|a]r^|eX. lfB(,HOOo810 :SYMSSӬYL@__?PѩDf9 s{Vq?ăӦϜ7WZyё׭[ogaԯ_nb@ lE^pP!=;$Ŕ1Ol >}><7僫033=rpkWOض}ӧOEGH]E?/6<|DLtTXH0[ѽ[=zDd׮5ڶ](gco(;DT7Ro^Chh`?/ K$*{1;Zp^R6?\ѝymZ-v EPF5ӿodee/y5@u˽QU9Հ^M@-1(G3?J#>/ 4 PCO˷F 9h d~lp^RZxy!%@S >!.pbLLL-((`@yaD- =wn]kև߅Ȏ1BJv5v:uk7lfB"x\Wԟs~@uz&Nn٦)=ww.KC\Dnϛ~]{fhhx`^Ǯ.~ D2Sw!.XAxDde`Չr[l~ͪގb?UZzΞ_/\Çs盚DD~ߎw>~/wIV-[ :,npرϳ""Ç9ikۮѣej ZP·ǧ,Wq(@ b>>{ظ|w_֭[&yy̴鍬mj D:rnNv>>2R ⋆<;~l9v@DOKB%TK<2(=̀ 'Nfm~ho!;RՃj"j2?M@`!C2?MO%`+(2?#PIda3@ `@OKE}^zx zܾܴE-Zʎ]ɺt-$%zD|ܕ q~p8D$֯]\.͘>m֭6bkVv5W 0H*D Kї77$$fJ vܩcNOkG ۻ;+;+a">mʖmۗ.[QRRǩǬ95(Xp?nj;rݺtN?zaj~Baff89A[m/))7l棿?PXX(|hWq?qW.mܴH{Ldee,&scccf:##<3Z.TiWdLL _dYZZ0AKKLfZ,3D$>#d~py!"ގj%Yi)&蘙 $lȜY3uuu&Mt&BI|>6ixU|>_[[{ݚU7"ٳ<˞ j)94+|Kp/==o+xIii][hܿS-)ft>rE"Zὲ,!JpЉȓ-b23%yΞU^ݻ2)f#"vlٳT gc찂xxxN-2䋆<^ cֽSNNʞ>y̎~.854S/Ypp*K5( Z@SZwk+v@ ͯ".s @0 K @mDefC'3*_l~J#)׀O @S SZE<&j^==ÇwЁᤥ:tH(r8#GvU,FEE PB85i.9ׯBӝ""":uԢEe˖͝;O<d/NUu#'`-,,>** >>sO<,,PרQ̞={333MMM+ r'ekkkbbKD|>Td!@` ΊmBDr 5mtԨQ[nDDTXXT YT9ի vm28/_HHHHH4jmmcǎ&enn#"d:yQPrYYYM:u߾}:::L^bb@ 011ڵkRRReAP&H@.F4q~FFFϗF<<D|IDATh @ `Ǡ Kjm~P!PWh%SS-ClpH+©I P95|)@A5|\h d~5Ǡ ݩ!`Z]TQnRcp;R6?5\ 2*T2?vnhd~Wk(@!P3h<%S@PNjS@$p5T2T2?MOWӠK@؝2jNpT֠pG\ \AR U. 'RxKJ_Q5@mQ5n!4%P Nt瀻e#(~G(v$Py 2?M̯N%5 %PKPR\@@3,NPUhh~P*Pj ΰ>u8@S urok} %S|IG|&}^`.B@ DqK5T;)(\2E} &e}āPv$-ThnAA;ΰBuSk @BTLw$^/Uqw¾$Pcx͂OQ>xEU/A}pw¾U} T2?  jPK@؝T2C;TWe@u1 &U'dYg[P]־D>T>ODrOAv_~8؝T2G( %PK@؝Th d~@)h d~@)h d~@)h d~@)Fa@P8d~@)h 1a\%2t+;@)h ^6*d޼yFFFwޕZ͛7O<QV-Zfgg3 Μ9sѭ[{nqqq9@͛)e[^|k A==ѣG02==],s8QFM<_~eee@*y枞/^`7.//%ӧȑ#egp8SL^`AFFرceiiiM4aÆU_VVV_^duԩE˖-[~}6lȚ B*L(رǬH$ZyDiӦ"i x8P޲eKi)(H$s޽{\hȑeeeǁΚ5222BBB^zUTTnaaADQQQ;w]T}G=}...JYY_zEDɲi?{.--766 $H^Zy#=*_5jԙILSSSjP-v@ō;ܹsL(++۷o߻b0mmof׮]arrrrrL-511G.[C[[[>.ܛ7otttuuuKKKe>|x\\+6m:jԨ;wD""*,,:::B\m@f͚5DggggeeȮ'#;;6DDy*yիٙԩ`cǎY[[ر#''dee3Ҟ_x?d~V|}}cƌⴴƍ!7{Yaaa.]_ѣv%/^,^hݻ_[[[KK˰0++S2|%%%...nڵ߻@Z}P(,...**nٲ%36H.wwOCǸC@Cpԩ U|fU"╩n}Upء~#g1C•IENDB`taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/docs/source/index.html000066400000000000000000000003661514602004300271300ustar00rootroot00000000000000 Automatic Redirect taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/docs/source/index.rst000066400000000000000000000040241514602004300267670ustar00rootroot00000000000000############################################ Taurus_pyqtgraph ############################################ Welcome to Taurus_pyqtgraph's documentation! This python3 package is designed to extend the capabilities of the Taurus framework, which is primarily used for controlling and monitoring various systems. By leveraging the robust visualization tools provided by PyQtGraph, taurus-pyqtgraph offers a seamless way to create highly customized and interactive data visualizations within the Taurus environment. .. image:: imgs/plot_example.png :alt: taurus-pyqtgraph example plot with an attribute Key aspects: ------------ Taurus-pyqtgraph integrates seamlessly with Taurus, allowing users to: - Visualize live data: Data streams from Taurus can be plotted dynamically, providing real-time plots or trends using taurus-compatible attributes. - Create custom dashboards: Users can construct personalized trends and integrate those trends on Taurus applications. - Analyze historical data: Stored data can be retrieved and visualized for historical analysis by installing and configuring `PyHDB++`_. Existing application using taurus_pyqtgraph ------------------------------------------- There are a lot of applications (most of them are on internal repositories), but there is a new one named `TangoBrowser`_ that have been published and can be installed. Tango browser is a tango and archiving tool to look for attributes in use or ever archived. This tool is a graphical interface to search tango attributes archived or not. Due to the fact that this GUI have been developed using taurus you can drag&drop from the list above to the taurus trend and it will start to plot the attribute. .. image:: imgs/tango_browser.png :alt: TangoBrowser application with a search and a trend with data Index ------------ .. toctree:: :maxdepth: 5 installation api usage develop_examples .. _PyHDB++: https://tango-controls.gitlab.io/hdbpp/libhdbpp-python .. _TangoBrowser: https://gitlab.com/tango-controls/hdbpp/libhdbpp-tangobrowser taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/docs/source/installation.rst000066400000000000000000000046621514602004300303710ustar00rootroot00000000000000.. highlight:: shell ============ Installation ============ You can choose your favorite way of installing the package, but after a successful installation, the module will be accessible as taurus.qt.qtgui.tpg and taurus_pyqtgraph. Furthermore, tpg will be registered as an alternative implementation for plots and trends in the taurus CLI. Installation from PyPi Stable release ------------------------------------- To install taurus_pyqtgraph, run this command in your terminal: .. code-block:: console $ pip install taurus_pyqtgraph # Without installing Archiving Pyhdb++ support If you rather prefer to install the taurus_pyqtgraph package with archiving support enabled then run this command: .. code-block:: console $ pip install taurus_pyqtgraph[Archiving] # Installing Archiving Pyhdb++ support This is the preferred method to install taurus_pyqtgraph, as it will always install the most recent stable release. If you don't have `pip`_ installed, this `Python installation guide`_ can guide you through the process. Installation from Conda repositories ------------------------------------ Alternatively you can install taurus_pyqtgraph using Conda: .. code-block:: console $ conda install -c conda-forge -c taurus-org taurus_pyqtgraph Installation from GitLab sources -------------------------------- If you prefer to install the taurus_pyqtgraph package from sources directly you will have all new features added to the development branch, but be careful, because API may change or a feature may be removed. To install the taurus_pyqtgraph from sources you can use the following commands: .. code-block:: console $ git clone https://gitlab.com/taurus-controls/taurus_pyqtgraph.git $ git checkout origin develop # Or any desired branch (stable, develop, ...) $ cd taurus_pyqtgraph $ # Now you have to choose if you want to edit code and make you own tests or install it as it is. $ # (Choose one of the following) $ pip install . # This command will install taurus_pyqtgraph $ pip install -e. # This command will install taurus_pyqtgraph in editable mode $ # Or with archiving support $ pip install .[Archiving] # This command will install taurus_pyqtgraph and pyhdbpp $ pip install -e.[Archiving] # This command will install taurus_pyqtgraph and pyhdbpp in editable mode .. _pip: https://pip.pypa.io .. _Python installation guide: http://docs.python-guide.org/en/latest/starting/installation/ taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/docs/source/usage.rst000066400000000000000000000700031514602004300267640ustar00rootroot00000000000000======================= How to taurus-pyqtgraph ======================= Taurus Plot basic usage ----------------------- A Taurus plot leverages Taurus's capabilities to visualize data. These plots are often used in scientific and industrial contexts where real-time monitoring of data is crucial. Taurus plots can display a variety of data types. **Plot data using the command line:** 1. Open a terminal and type: .. code-block:: console $ taurus plot "eval:Q(rand(333),'mm')" 2. Now repeat the above but add a tango array attribute: .. code-block:: console $ taurus plot "eval:Q(rand(333),'mm')" sys/tg_test/1/wave As you can see plotting attributes using taurus_pyqtgraph is easy and effortless thanks to the taurus framework. TaurusTrend basic usage ----------------------- TaurusTrend is a widget provided by the Taurus framework, specifically designed for plotting time-based data trends in real-time. **Plot time data using the command line:** 1. Open a terminal and type: .. code-block:: console $ taurus trend "eval:rand()" 2. Now repeat the above but add a tango scalar attribute: .. code-block:: console $ taurus trend "eval:rand()" sys/tg_test/1/double_scalar_rww Non-programmatic usage ---------------------- **Add TaurusTrend and TaurusPlot to Taurus Designer** ..................................................... 1. Open Taurus Designer and create a new form. .. code-block:: console $ taurus designer 2. On the left panel, look for TaurusTrend and TaurusPlot widgets, then drag and drop them to the form. .. image:: imgs/taurus_designer_widgets.png :alt: TaurusTrend and TaurusPlot widgets on the left panel of Taurus Designer 3. You can set the model of each widget by clicking on it and then on the right panel, in the 'Model' field, type the desired model, for example: "sys/tg_test/1/wave" for the TaurusPlot and "sys/tg_test/1/double_scalar_rww" for the TaurusTrend. .. image:: imgs/taurus_designer_add_model.png :alt: Set model field on the right panel of Taurus Designer 4. Now you can execute the form by clicking on the 'Execute' button at the top, and you will see the TaurusTrend and TaurusPlot with the data from the models you set. .. image:: imgs/taurus_designer_result.png :alt: Result of setting both models on the TaurusTrend and TaurusPlot. **Execute a taurus trend with a random eval and a Tango attribute** ................................................................... To do it type: .. code-block:: console $ taurus trend "eval:rand()" sys/tg_test/1/double_scalar_rww **Explore the x_axis menu** ........................... .. image:: imgs/x_axis.png :alt: X axis Submenu 1. Make a right-click on the taurus trend and select 'X axis' submenu on the contextual menu. 2. A description on the functions can be read at the final of this exercise. 3. You can modify the time range you want to look at by doing it manually on the 'Manual' option or even better, using the 'Set View Range' editable dropdown menu. This dropdown menu have some predefined values, but you can edit it to the time you want by following the convention, don't worry if you make a syntax mistake there will be a message box with the syntax expected. Try to set the range to 5 minutes. 4. The time range option can be found on the plot configuration menu as well. ***Options on the X_axis submenu:*** + Fixed range scale: It fixes the visible time range on the trend in order to keep just a slice of data visible to the user. + Manual: It allows to select a customizable time range. + Auto: It allows to select the % of data visible to the user, the options 'Visible Data Only' and 'Auto Pan Only' make this % more accurate depending on your needs. + Invert Axis: It inverts the axis direction. + Mouse Enabled: It prevents the axis to be moved by the mouse. + Link Axis: It allows the axis to be moved to a defined ViewBox, by default there is only one. + Set View Range: As explained on the exercise you can select predefined time ranges or type a custom one. + Log Scale: It allows to set the axis to logarithmic mode, which in that case is not useful, but it could be interesting for some scenarios. **Explore the y_axis menu** ........................... .. image:: imgs/y_axis.png :alt: Y axis Submenu 1. Make a right-click on the taurus trend and select 'Y axis' submenu on the contextual menu. 2. A description on the functions can be read at the final of this exercise. 3. Select the option 'Log Scale'. You will see that data is now represented with a logarithmic scale (the gaps on the tango attribute are normal due to the fact that log(0) is not a valid operation) 4. Now deselect 'Log Scale' to restore the visualization. ***Options on the Y_axis submenu:*** + Manual: It allows to select a customizable range between the values. + Auto: It allows to select the % of data visible to the user, the options 'Visible Data Only' and 'Auto Pan Only' make this % more accurate depending on your needs. + Invert Axis: It the axis direction. + Mouse Enabled: It prevents the axis to be moved by the mouse. + Link Axis: It allows the axis to be moved to a defined ViewBox, by default there is only one. + Log Scale: It allows to set the axis to logarithmic mode, which in that case is not useful, but it could be interesting for some scenarios. **Explore the mouse mode option** ................................. .. image:: imgs/mouse_mode.png :alt: Example on how to use the 1 button mode for the mouse 1. Make a right-click on the taurus trend and select 'Mouse mode' submenu on the contextual menu. 2. Here you have two options, the 3 button mode and the 1 button mode, try it out, explanation can be found at the end of this exercise. 3. For the rest of the session set it to 3 button mode. ***Options on the mouse mode submenu:*** + 3 button: Acts with drag mode, you can drag the trend or the plot to the direction you want. + 1 button: Acts with a range selector, you can select what data you can view with a rectangular selection. **Explore the Change curves titles option** ........................................... .. image:: imgs/change_titles.png :alt: Change curves titles option 1. Make a right-click on the taurus trend and select 'Change curves titles' submenu on the contextual menu. 2. A pop-up will appear with an editable dropdown, you can use the patterns from the dropdown and combine some of them. In this case type: _{dev.name}/{attr.label}_ 3. You will notice that the legend has changed. 4. You can modify the curves titles from the 'Model selection' menu. **Explore the model selection tool** .................................... The model selection tool in taurus_pyqtgraph works the same way as Taurus, you can have a look at the Taurus exercises for more information. However, we have some extra options in the case of taurus plot and taurus trend. .. image:: imgs/model_selector.png :alt: Model selection window 1. Make a right-click on the taurus trend and select 'Model selection tool' submenu on the contextual menu. 2. The left part of the window is the source data selector, this has been explained at the taurus exercises, but the right part is unique for taurus trend and taurus plot. 3. You can see that we have the source and the title of each curve, you can add, delete and edit curves. 4. Here you can change the curves titles by clicking the 'Change Curves Titles' button, the functionality is the same as the one that is at the contextual menu. **Explore the calculate statistics option** ........................................... .. image:: imgs/calculate_statistics.png :alt: Calculate statistics option 1. Make a right-click on the taurus trend and select 'Calculate Statistics' option on the contextual menu. 2. Here you can explore all the statistics calculated for each curve that you have on your taurus trend. 3. Try to hide some of them by clicking on the checkbox. 4. Anytime you can re-calculate the statistics by clicking on the bottom button. **Explore the plot configuration option** ......................................... .. image:: imgs/plot_configuration.png :alt: Plot configuration option 1. Make a right-click on the taurus trend and select the 'Plot Configuration' option on the contextual menu. 2. Try to change the line style of one of the curves, by clicking on the desired curve and using the dropdown menu. 3. Try to change the color, and style of symbols and click the apply button under the curves. 4. Now open the plot configuration again, select the first curve and change the axis to Y2, then click apply and close the window. 5. You will see that now the curves are separated and you will have 2 axis, like the image below: .. image:: imgs/different_axis.png :alt: Curves on different axis Play with all the other options to modify the trend to you needs, there are a lot of options. **Explore the Data inspector mode** ................................... .. image:: imgs/data_inspector.png :alt: Data inspector mode 1. Make a right-click on the taurus trend and select 'Data inspector' checkbox on the contextual menu. 2. If you move the mouse along the curves you will see a tooltip for each curve and point that it has. 3. To disable the inspector mode you have to deselect the 'Data inspector' checkbox on the contextual menu. **Explore Change forced read period option** ............................................ .. image:: imgs/change_read_period.png :alt: Change force read period pop-up The force reading period refers to the interval at which the library forcibly reads data from the data source, even if there hasn't been an explicit change or event triggering a read. With this option we can control the amount of points that are plotted. 1. Make a right-click on the taurus trend and select 'Change forced read period' option on the contextual menu. 2. A pop-up will appear, then you can type the 'polling period' and click 'OK', for testing purposes type 500. 3. Every half a second a new point will appear. 4. If you want to disable it type 0 again and the polling will be disabled. **Explore Change buffers size option** ...................................... .. image:: imgs/change_buffer.png :alt: Change buffer size pop-up The buffer data size is the maximum number of points that will be kept in memory for each curve. 1. Make a right-click on the taurus trend and select 'Change buffers size' option on the contextual menu. 2. Change the buffers size to 500, you will see that the number of points will be decreased once the limit is reached. **Explore the Export tool** ........................... .. image:: imgs/export.png :alt: Export data pop up The export option is designed to transform the plot to other formats, a detailed list of formats can be found at the end of this exercise. 1. Make a right-click on the taurus trend and select 'Export' option on the contextual menu. 2. Select the item named 'Plot'. 3. Select the option 'CSV' on 'Export format'. 4. Click the export button, you will be prompted with the desired path to store the csv file. 5. Open the file and check that the csv file has been generated correctly. .. image:: imgs/export_result.png :alt: Visualize the result of the export ***Options on the export tool:*** + CSV: It exports the data using comma separated values to a file. It can be configured to change the separator and the precission. + HDF5: It exports the data using the HDF5 file format. + Matplotlib Window: It shows the data with matplotlib. + SVG: It exports the data using an image in the SVG format. (Not working properly right now) `#129`_ + ASCII: It exports the data using the Taurus 4 compatible ASCII format. **Real use case for monitoring memory usage of a process** .......................................................... Combining taurus trend with eval we can get the memory usage and get a trend with the current status. .. image:: imgs/example_1.png :alt: Monitor the memory usage of a process using eval 1. First of all select a running process id from the ones that are running on your pc, to do it you can type top and anotate the one that has more memory usage for example. 2. Now that you have the PID of the process you want to monitor, you can monitor the memory usage by typing: .. code-block:: console $ taurus trend -r500 "eval:@psutil.*/Process(REPLACE_THIS_BY_PID).memory_info().rss/2**10"` **Real use case integrating archiving** ........................................ Taurus trend has the possibility to plot archiving data by selecting it on the contextual menu, but this option just appears if you have `PyHDB++`_ installed and configured. The Archiving menu have the following options: - Autoreload: If enabled, Taurus Trend will load data on the fly by moving the DateTime axis to the left. - Load Once (Ctrl+L): It loads the data for the current time window. - Decimate and Redraw (Ctrl+R): It will discard the current data and redraw data from archiving but decimating to have less resolution. (If you zoom in and click this option you will have more resolution) - Configure decimation: It shows a dialog to configure decimation for the queries to PyHDB++. Here you can see a GIF with the archiving option working, and if you want to have a look at it you can check out the `TangoBox OVA`_ and this `TangoBox issue`_ to check how to configure it. .. image:: imgs/archiving_trend.gif :alt: Taurus Trend with archiving properly configured and requesting past data **Extra tip: Auto arrange symbol** .................................. Did you notice the small button at the left-bottom of the taurus trend or taurus plot? If you click on it the widget will make the data fit on the widget. Programmatic usage ------------------ **Open a Taurus Plot programmatically** ....................................... To open a Taurus Plot programmatically you need the following, take into account that a TaurusApplication or a QApplication (from PyQt) is needed to be able to render the plot .. code-block:: python from taurus.qt.qtgui.application import TaurusApplication from taurus_pyqtgraph import TaurusPlot app = TaurusApplication() plot = TaurusPlot() plot.setWindowTitle("My Taurus Plot") plot.show() app.exec_() **Add raw data to a Taurus Plot programmatically** .................................................. 1. Create a TaurusApplication and the TaurusPlot object .. code-block:: python from taurus.qt.qtgui.application import TaurusApplication from taurus_pyqtgraph import TaurusPlot, TaurusPlotDataItem app = TaurusApplication() plot = TaurusPlot() plot.setWindowTitle("My Taurus Plot") plot.show() 2. Add data to the plot using the TaurusPlotDataItem object, and execute the application .. code-block:: python x, y = [[1, 2, 3, 4, 5], [11, 12, 13, 14, 15]] # If you want the curve to have a name and color then define name and, pen. item = TaurusPlotDataItem(name="Curve1", pen="b") item.setData(x=x, y=y) plot.addItem(item) app.exec_() You can have as many Curves as you want: .. code-block:: python from taurus.qt.qtgui.application import TaurusApplication from taurus_pyqtgraph import TaurusPlot, TaurusPlotDataItem app = TaurusApplication() plot = TaurusPlot() plot.setWindowTitle("My Taurus Plot") plot.show() x, y = [[1, 2, 3, 4, 5], [11, 12, 13, 14, 15]] # If you want the curve to have a name and color then define name and, pen. item1 = TaurusPlotDataItem(name="Curve1", pen="b") # Curve 1 blue item1.setData(x=x, y=y) x, y = [[1, 2, 3, 4, 5], [5, 10, 0, -5, -10]] item2 = TaurusPlotDataItem(name="Curve2", pen="r") # Curve 2 red item2.setData(x=x, y=y) # Add the items to the plot plot.addItem(item1) plot.addItem(item2) app.exec_() Since taurus_pyqtgraph inherits its functionality from pyqtgraph you can have a complete list of what TaurusPlotDataItem can accept as an argument from its parent `PlotDataItem`_. **Using models with Taurus Plot programmatically** .................................................. We have seen that we can plot data from Tango or other data sources by calling the command line and passing the model as arguments, but we can also do it programmatically with setModel or addModels methods. .. code-block:: python from taurus.qt.qtgui.application import TaurusApplication from taurus_pyqtgraph import TaurusPlot app = TaurusApplication() plot = TaurusPlot() plot.setWindowTitle("My Taurus Plot") plot.show() plot.setModel("sys/tg_test/1/wave") app.exec_() And we can mix different types of data sources, we don't need to stick with one type, for example: .. code-block:: python from taurus.qt.qtgui.application import TaurusApplication from taurus_pyqtgraph import TaurusPlot app = TaurusApplication() plot = TaurusPlot() plot.setWindowTitle("My Taurus Plot") plot.show() plot.setModel("sys/tg_test/1/wave") plot.addModels(["eval:Q(rand(333))", "eval:Q(rand(333)+2)"]) app.exec_() **Connect to signal emitted when the style of a curve changes** .................................................... You can connect to the signal `curveAppearanceChanged` that is emmited when the style of a curve changes, this signal is stored at the curvespropertiestool, and it is accesible through cprop_tool accesible both from TaurusPlot and TaurusTrend. After executing the following code, open the plot configuration window and change the style of one of the curves. Example of usage: .. code-block:: python from taurus.qt.qtgui.application import TaurusApplication from taurus_pyqtgraph import TaurusPlot, TaurusTrend def on_curve_appearance_changed(curve_changed_dict): for curve_name, appearance in curve_changed_dict.items(): print(f"Curve '{curve_name}' appearance changed to: {appearance}") app = TaurusApplication() plot = TaurusPlot() plot.setWindowTitle("My Taurus Plot") plot.show() trend = TaurusTrend() trend.setWindowTitle("My Taurus Trend") trend.show() # Connect to the signal plot.cprop_tool.curveAppearanceChanged.connect(on_curve_appearance_changed) trend.cprop_tool.curveAppearanceChanged.connect(on_curve_appearance_changed) plot.setModel("sys/tg_test/1/wave") trend.setModel("eval:rand()") app.exec_() **Open a Taurus Trend programmatically** ........................................ To open a Taurus Trend programmatically you need the following, take into account that a TaurusApplication or a QApplication (from PyQt) is needed to be able to render the plot .. code-block:: python from taurus.qt.qtgui.application import TaurusApplication from taurus_pyqtgraph import TaurusTrend app = TaurusApplication() trend = TaurusTrend() trend.setWindowTitle("My Taurus Trend") trend.show() app.exec_() **Add raw data to a Taurus Plot programmatically** .................................................. .. code-block:: python from taurus.qt.qtgui.application import TaurusApplication from taurus_pyqtgraph import TaurusTrend, TaurusTrendSet from pyqtgraph import mkPen app = TaurusApplication() trend = TaurusTrend() trend.setWindowTitle("My Taurus Trend") trend.show() set1 = TaurusTrendSet(name="Curve1") x = [1724234271, 1724234273, 1724234276, 1724234278, 1724234285, 1724234287, 1724234289, 1724234292, 1724234294, 1724234296] y = [1, 2, 3, 4, 10, 0, 15, 3, -5, -10] set2 = TaurusTrendSet(name="Curve2") y2 = [-1, -2, -3, -4, -10, 0, -15, -3, 5, 10] set1.setData(x=x, y=y, name="Curve1", pen=mkPen(color="red")) set2.setData(x=x, y=y2, name="Curve2", pen=mkPen(color="blue")) trend.addItem(set1) trend.addItem(set2) app.exec_() For a whole set of parameters that you can set to pen (to customize color, width, symbols, etc) you can have a look at the `PyQtGraph Style Guide`_. **Using models with Taurus trend programmatically** ................................................... Like the Taurus Plot we can set models to a Taurus Trend programmatically too. .. code-block:: python from taurus.qt.qtgui.application import TaurusApplication from taurus_pyqtgraph import TaurusTrend app = TaurusApplication() trend = TaurusTrend() trend.setWindowTitle("My Taurus Trend") trend.show() trend.setModel("sys/tg_test/1/double_scalar") trend.addModels(["sys/tg_test/1/ampli", "eval:rand()*10"]) app.exec_() Remember that you can mix things using the eval feature of Taurus. To know more check the `Taurus Core Evaluation`_ documentation. **Using models with individual curves** ....................................... 1. Create a TaurusApplication and the TaurusTrend object .. code-block:: python from taurus.qt.qtgui.application import TaurusApplication from taurus_pyqtgraph import TaurusTrend, TaurusTrendSet app = TaurusApplication() trend = TaurusTrend() trend.setWindowTitle("My Taurus Trend") trend.show() 2. Add data to the trend using the TaurusTrendSet object, and execute the application .. code-block:: python set1 = TaurusTrendSet(name="Curve1") # In this case we will use a random generator using eval as a model set1.setModel("eval:rand()") trend.addItem(set1) app.exec_() Like the TaurusPlot we can add as many curves (or trend sets as desired) .. code-block:: python set1 = TaurusTrendSet(name="Curve1", pen=mkPen(color="red")) # In this case we will use a random generator using eval as a model set1.setModel("eval:rand()") set2 = TaurusTrendSet(name="Curve2", pen=mkPen(color="blue")) set2.setModel("eval:rand()+2") trend.addItem(set1) trend.addItem(set2) app.exec_() **Set Taurus Trend to have a Logarithmic Y Axis** ................................................. You can use the method setAxisLogMode to set the logarithmic mode on the axis of a taurus trend. Possible options are: .. code-block:: python setAxisLogMode("left", True) setAxisLogMode("bottom", True) setAxisLogMode("y", True) # The same as left setAxisLogMode("x", True) # The same as bottom Example: .. code-block:: python from taurus.qt.qtgui.application import TaurusApplication from taurus_pyqtgraph import TaurusTrend app = TaurusApplication() trend = TaurusTrend() trend.setWindowTitle("My Taurus Trend") trend.show() trend.setModel("sys/tg_test/1/double_scalar") trend.setAxisLogMode("left", True) app.exec_() **Disable plot configuration options to the user** ................................................. You can disable some options from the plot configuration window to avoid that the user modifies them. To do so you configure it by passing a dictionary to the method setEnabledOptionsDict of the cprop_tool attribute of the TaurusPlot or TaurusTrend. The dictionary accepts the following keys with boolean values: - applyBT - assignToY1BT - assignToY2BT - bckgndBT - curvesLW - dialogEnabled - lineGB - otherGB - resetBT - symbolGB - xAxisGB Example: .. code-block:: python from taurus.qt.qtgui.application import TaurusApplication from taurus_pyqtgraph import TaurusPlot app = TaurusApplication() plot = TaurusPlot() # or TaurusTrend() plot.setWindowTitle("My Taurus Plot") plot.show() plot.setModel("sys/tg_test/1/wave") # Disable some options from the plot configuration window options_dict = { 'applyBT': False, 'bckgndBT': False, 'xAxisGB': False } plot.cprop_tool.setEnabledOptionsDict(options_dict) app.exec_() Custom widget examples ---------------------- **Custom BarGraph Plot using TaurusBaseComponent** .................................................. `TaurusBaseComponent`_ is a generic Taurus component that can be used to create custom widgets. It covers the inheritance, parameters, and functions of the TaurusBaseComponent class. Some important points are that it provides functions for setting the model, displaying the value, filtering events, and managing the event buffer. It also has functions for getting information about the model, such as the name, type, and model object. Additionally, it has functions for manipulating the model, such as setting the model and getting a piece of the model. Here is a simple example of a customization of Taurus Plot to represent data in bar graph format: 1. Class definition .. code-block:: python from taurus import Attribute from taurus.qt.qtgui.base import TaurusBaseComponent from pyqtgraph import BarGraphItem class TaurusBarGraphItem(TaurusBaseComponent): """ This class aims to simplify the process of generating Bar plots using a tango attribute as data source. """ def __init__(self, name=None, parent=None, design_mode=False, **kwargs): """ Parameters ---------- :param name: Optional name of the plot, this name will be shown on the legend if specified. :param parent: Specify the parent, not mandatory and None by default. :param design_mode: :param kwargs: It is expected from the client to specify the width, pen and brush. If not a default value is set. """ super().__init__(name, parent, design_mode, **kwargs) opts = dict( x=0 if 'x' not in kwargs else kwargs['x'], height=0.5 if 'height' not in kwargs else kwargs['height'], width=0.5 if 'width' not in kwargs else kwargs['width'], brush='b' if 'brush' not in kwargs else kwargs['brush'], pen='b' if 'pen' not in kwargs else kwargs['pen'], name=name, ) self.bar_graph_item = BarGraphItem(**opts) def setModel(self, model, key=None): super().setModel(model) y = Attribute(model).rvalue.magnitude x = [i for i in range(len(y))] self.mount_plot(x, y) def handleEvent(self, evt_src, evt_type, evt_value): """ Here we define what to do when be received a Tango event. """ super().handleEvent(evt_src, evt_type, evt_value) y = evt_value.rvalue x = range(len(y)) self.mount_plot(x, y) def mount_plot(self, x, y): """ Sets up the internal bar_graph_item with the data given as parameters. """ opts = dict( x=x, height=y, ) self.bar_graph_item.setOpts(**opts) 2. Usage .. code-block:: python import sys from taurus.qt.qtgui.application import TaurusApplication from taurus_pyqtgraph import TaurusPlot, TaurusPlotDataItem app = TaurusApplication(sys.argv) plot = TaurusPlot() plot.setWindowTitle("My Custom Plot") plot.show() bar_graph = TaurusBarGraphItem(name="Wave", width=0.5, brush='r', pen='r') bar_graph.setModel("sys/tg_test/1/wave") curve = TaurusPlotDataItem(name="Wave curve", pen="b") curve.setModel("sys/tg_test/1/wave") plot.addItem(bar_graph.bar_graph_item) # Here we are adding the bar_graph plot.addItem(curve) # Here we are adding the curve with the same info app.exec_() The result can be seen in the following screenshot .. image:: imgs/bar_graph_example.png :alt: Custom plot using Taurus Plot represented with bar graph format Known issues ---------------------- - When using numpy <1.17, trying to add symbols to a curve raises the exception "AttributeError: module 'numpy.core.umath' has no attribute 'clip'" .. _`PyHDB++`: https://gitlab.com/tango-controls/hdbpp/libhdbpp-python .. _TangoBox OVA: https://gitlab.com/tango-controls/tangobox .. _TangoBox issue: https://gitlab.com/tango-controls/tangobox/-/issues/57 .. _PlotDataItem: https://pyqtgraph.readthedocs.io/en/latest/api_reference/graphicsItems/plotdataitem.html .. _Taurus Core Evaluation: https://taurus-scada.org/devel/api/taurus.core.evaluation.html .. _PyQtGraph Style Guide: https://pyqtgraph.readthedocs.io/en/latest/user_guide/style.html .. _TaurusBaseComponent: https://taurus-scada.org/devel/api/taurus.qt.qtgui.base-TaurusBaseComponent.html .. _#129: https://gitlab.com/taurus-org/taurus_pyqtgraph/-/issues/129 taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/pytest.ini000066400000000000000000000003631514602004300247310ustar00rootroot00000000000000[pytest] filterwarnings = # Ignore deprecation warnings issued by 3rd party modules ignore:.*:DeprecationWarning:^(?!taurus_pyqtgraph).*$ # Treat taurus_pyqtgraph issued warnings as errors error:.*:Warning:^taurus_pyqtgraph.*$ taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/requirements.txt000066400000000000000000000001261514602004300261610ustar00rootroot00000000000000Click>=7.0 PyQt5>=5.13.0 pyqtgraph>=0.11.0,<=0.13.7 ply>=3.11 lxml>=4.2.5 taurus>=4.7 taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/requirements_dev.txt000066400000000000000000000002331514602004300270160ustar00rootroot00000000000000pip>=20.2.2 bumpversion>=0.5.3 wheel>=0.32.1 watchdog>=0.9.0 flake8>=3.5.0 tox>=3.5.2 coverage>=4.5.1 Sphinx>=1.8.1 sphinx-mdinclude>=0.6.2 twine>=1.12.1 taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/requirements_test.txt000066400000000000000000000001141514602004300272150ustar00rootroot00000000000000pytest>=5 pytest-runner>=4.2 pytest-qt>=3.3 pytest-xvfb>=2.0 pytest-forked taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/setup.cfg000066400000000000000000000016431514602004300245230ustar00rootroot00000000000000[bumpversion] current_version = 0.9.8 commit = True message = Bump version {current_version} to {new_version} tag = False tag_name = {new_version} parse = (?P\d+)\.(?P\d+)\.(?P\d+)(\-(?P[a-z]+))? serialize = {major}.{minor}.{patch}-{release} {major}.{minor}.{patch} [bumpversion:part:release] optional_value = gamma values = alpha gamma [bumpversion:file:setup.py] search = version="{current_version}" replace = version="{new_version}" [bumpversion:file:taurus_pyqtgraph/__init__.py] search = __version__ = "{current_version}" replace = __version__ = "{new_version}" [bumpversion:file:docs/source/conf.py] search = release = '{current_version}' replace = release = '{new_version}' [bdist_wheel] universal = 1 [flake8] exclude = docs build ignore = E203, W503 per-file-ignores = taurus_pyqtgraph/__init__.py:F401 [aliases] test = pytest [tool:pytest] collect_ignore = ['setup.py'] taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/setup.py000066400000000000000000000067641514602004300244250ustar00rootroot00000000000000#!/usr/bin/env python ############################################################################## ## # This file is part of Taurus ## # http://taurus-scada.org ## # Copyright 2011 CELLS / ALBA Synchrotron, Bellaterra, Spain ## # Taurus is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. ## # Taurus is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. ## # You should have received a copy of the GNU Lesser General Public License # along with Taurus. If not, see . ## ############################################################################## from setuptools import setup, find_packages description = "Taurus extension providing pyqtgraph-based widgets" long_description = """taurus_pyqtgraph is an extension for the Taurus package. It adds the taurus.qt.qtgui.tpg submodule which provides pyqtgraph-based widgets.""" author = "Taurus Community" maintainer = author maintainer_email = "tauruslib-devel@lists.sourceforge.net" url = "https://gitlab.com/taurus-org/taurus_pyqtgraph" download_url = url platforms = ["Linux", "Windows"] keywords = ["Taurus", "pyqtgraph", "plugin", "widgets"] install_requires = [ "pyqtgraph>=0.11,<=0.13.7", "taurus>=4.5.2", "click", "lxml", "ply" ] extras_require = { "Archiving": ["pyhdbpp"] } entry_points = { "taurus.qt.qtgui": ["tpg = taurus_pyqtgraph"], "taurus.cli.subcommands": ["tpg = taurus_pyqtgraph.cli:tpg"], "taurus.plot.alts": ["tpg = taurus_pyqtgraph:TaurusPlot"], "taurus.trend.alts": ["tpg = taurus_pyqtgraph:TaurusTrend"], } classifiers = [ "Development Status :: 3 - Alpha", "Environment :: X11 Applications :: Qt", "Environment :: Win32 (MS Windows)", "Intended Audience :: Developers", "Intended Audience :: Science/Research", ( "License :: OSI Approved :: " + "GNU Lesser General Public License v3 or later (LGPLv3+)" ), "Operating System :: Microsoft :: Windows", "Operating System :: POSIX", "Operating System :: POSIX :: Linux", "Operating System :: Unix", "Operating System :: OS Independent", "Natural Language :: English", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Topic :: Scientific/Engineering", "Topic :: Software Development :: Libraries", "Topic :: Software Development :: User Interfaces", "Topic :: Software Development :: Widget Sets", ] setup( name="taurus_pyqtgraph", version="0.9.8", description=description, long_description=long_description, author=author, maintainer=maintainer, maintainer_email=maintainer_email, url=url, download_url=download_url, platforms=platforms, license="LGPLv3+", keywords=keywords, packages=find_packages(exclude=["tests"]), classifiers=classifiers, include_package_data=True, entry_points=entry_points, test_suite="tests", python_requires=">=3.5", install_requires=install_requires, extras_require=extras_require, ) taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/taurus_pyqtgraph/000077500000000000000000000000001514602004300263205ustar00rootroot00000000000000taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/taurus_pyqtgraph/__init__.py000066400000000000000000000042651514602004300304400ustar00rootroot00000000000000#!/usr/bin/env python ############################################################################# ## # This file is part of Taurus ## # http://taurus-scada.org ## # Copyright 2011 CELLS / ALBA Synchrotron, Bellaterra, Spain ## # Taurus is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. ## # Taurus is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. ## # You should have received a copy of the GNU Lesser General Public License # along with Taurus. If not, see . ## ############################################################################# """Top-level package for taurus_pyqtgraph.""" from __future__ import absolute_import import taurus.external.qt as _ # avoid API1 errors due to pyqtgraph imports from .y2axis import Y2ViewBox, set_y_axis_for_curve from .curvespropertiestool import CurvesPropertiesTool from .dateaxisitem import DateAxisItem from .autopantool import XAutoPanTool from .plot import TaurusPlot from .trend import TaurusTrend from .legendtool import PlotLegendTool from .forcedreadtool import ForcedReadTool from .buffersizetool import BufferSizeTool from .taurusimageitem import TaurusImageItem from .taurusplotdataitem import TaurusPlotDataItem from .taurustrendset import TaurusTrendSet, TrendCurve from .curvesmodel import TaurusItemConf, TaurusItemConfDlg from .taurusmodelchoosertool import ( TaurusModelChooserTool, TaurusImgModelChooserTool, TaurusXYModelChooserTool, ) from .curveproperties import ( CurveAppearanceProperties, CurvesAppearanceChooser, serialize_opts, deserialize_opts, ) from .datainspectortool import DataInspectorLine, DataInspectorTool from .util import unique_data_item_name, ensure_unique_curve_name from .exporters import Taurus4TextExporter # Do not modify the __version__ manually. To be modified by bumpversion __version__ = "0.9.8" taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/taurus_pyqtgraph/archivingtool.py000066400000000000000000000466271514602004300315610ustar00rootroot00000000000000import time import traceback import numpy as np from taurus.external.qt import QtGui, Qt from taurus.external.qt.Qt import (QDialog, QLabel, QLineEdit, QPushButton, QVBoxLayout, QHBoxLayout) try: from pyhdbpp import get_default_reader archiving_reader = get_default_reader() except Exception: archiving_reader = None from .taurustrendset import TaurusTrendSet DEFAULT_PLOT_DECIMATION = 1080 SECONDS_48_HOURS = 172800 class DecimationConfigDialog(QDialog): """ Custom Input Dialog to retrieve decimation period desired from the user and apply the decimation using archiving. """ def __init__(self, parent=None, message="", default_period=0): super().__init__(parent) self.setWindowTitle("Select Decimation Factor") # Create configurable options self.selectedOption = "Apply" # Create UI elements self.label = QLabel(message) self.lineEdit = QLineEdit(str(default_period)) self.applyButton = QPushButton("Apply") self.cancelButton = QPushButton("Cancel") self.defaultButton = QPushButton("Restore default") # Create layout layout = QVBoxLayout() layout.addWidget(self.label) layout.addWidget(self.lineEdit) buttons_layout = QHBoxLayout() buttons_layout.addWidget(self.cancelButton) buttons_layout.addWidget(self.defaultButton) buttons_layout.addWidget(self.applyButton) layout.addLayout(buttons_layout) self.setLayout(layout) # Connect signals to slots self.applyButton.clicked.connect(self.accept) self.cancelButton.clicked.connect(self.reject) self.defaultButton.clicked.connect(self.setDefaultDecimation) def setDefaultDecimation(self): self.selectedOption = "Default" self.accept() def getInputText(self): return self.lineEdit.text() class ArchivingTool: def __init__(self, parent): self.parent = parent # set up archiving functionality self._archiving_enabled = False self._archiving_reader = None self._decimation_activated = True self._decimate_period = "Default" self._auto_reload_checkbox = None self._dismiss_archive_message = False if self._setArchivingReader(): self._loadArchivingContextActions() def _loadArchivingContextActions(self): """Loads archiving options to context menu on the trend (right-click) and enables triggers regarding archiving. """ menu = self.parent.plotItem.getViewBox().menu archiving_menu = QtGui.QMenu("Archiving", menu) menu.addMenu(archiving_menu) self._auto_reload_checkbox = QtGui.QAction( "Autoreload", archiving_menu ) self._auto_reload_checkbox.setCheckable(True) self._auto_reload_checkbox.setChecked(False) self._auto_reload_checkbox.triggered.connect( self._onEnableDisableArchivingClicked ) load_once_action = QtGui.QAction("Load Once (Ctrl+L)", archiving_menu) load_once_action.triggered.connect(self._loadArchivingDataOnce) load_once_shortcut = QtGui.QShortcut(QtGui.QKeySequence("Ctrl+L"), self.parent) load_once_shortcut.activated.connect(self._loadArchivingDataOnce) decimate_and_redraw = QtGui.QAction("Decimate and Redraw (Ctrl+R)", archiving_menu) decimate_and_redraw.triggered.connect(self._decimate_and_redraw) configure_decimation = QtGui.QAction("Configure decimation", archiving_menu) configure_decimation.triggered.connect(self._configure_decimation) decimate_shortcut = QtGui.QShortcut(QtGui.QKeySequence("Ctrl+R"), self.parent) decimate_shortcut.activated.connect(self._decimate_and_redraw) archiving_menu.addAction(self._auto_reload_checkbox) archiving_menu.addAction(load_once_action) archiving_menu.addAction(decimate_and_redraw) archiving_menu.addAction(configure_decimation) def _configure_decimation(self): msg_dec = ("Enter decimation period in seconds.\n" "If you click 'Restore Default' it will use the " "recommended value.\n") self._decimate_period = (self._askDecimationPeriod(msg_dec, 0)) if self._decimate_period is None: self._decimate_period = True self._decimate_and_redraw() def _decimate_and_redraw(self): self.parent.clearTrends() self._decimation_activated = True self._loadArchivingData(loadOnce=True) def _loadArchivingDataOnce(self): self._loadArchivingData(loadOnce=True) def _onEnableDisableArchivingClicked(self): """Change the state of boolean archiving_enabled to the opposite of their actual value. If it's set to True a connection between sigRangeChanged and local function on_changed_trend is set, otherwise, the connection gets disconnected. """ self._archiving_enabled = not self._archiving_enabled if self._archiving_enabled: self.parent.sigRangeChanged \ .connect(lambda: self._loadArchivingData(loadOnce=False)) self.parent.info("Archiving option set to enabled") self._loadArchivingData(loadOnce=False) # Force first data query else: self.parent.sigRangeChanged.disconnect() self.parent.info("Archiving option set to disabled") def _setArchivingReader(self): """Try to set up a reader and return if it was possible or not (True/False). :return: True if reader is set or False if not """ if archiving_reader: self._archiving_reader = archiving_reader self.parent.info("Archiving reader set") return True else: self.parent.info("Archiving reader not set") return False def _loadArchivingData(self, loadOnce=False): """When there is a change on the Range of view perform a query to get archiving data and append it to the left. """ for taurus_trend_set in self.parent.plotItem.dataItems: if not isinstance(taurus_trend_set, TaurusTrendSet): continue try: range_left = self.parent.visibleRange().left() range_right = self.parent.visibleRange().right() if range_right > time.time(): range_right = time.time() plot_time_range = range_right - range_left if len(taurus_trend_set._xBuffer): buffer_first = taurus_trend_set._xBuffer[0] buffer_last = taurus_trend_set._xBuffer[-1] if (range_right <= buffer_first or buffer_last <= range_left): query_start, query_end = range_left, range_right query_window = plot_time_range else: if (buffer_first <= range_left and range_right <= buffer_last): # The plotting range is already within buffer! query_start, query_end = range_left, range_right query_window = plot_time_range # DO NOT CHANGE THE ORDER OF THIS IFS, IT MATTERS # WHEN MODIFYING CURRENT TIME WINDOW elif range_left < buffer_first < range_right: query_start, query_end = range_left, buffer_first query_window = buffer_first - range_left elif range_left < buffer_last < range_right: query_start, query_end = buffer_last, range_right query_window = query_end - query_start else: query_start, query_end = range_left, range_right buffer_first = buffer_last = time.time() query_window = plot_time_range is_valid_query = query_window > (.15 * plot_time_range) > 1 if is_valid_query and (buffer_first <= range_left and range_right <= buffer_last): buttonClicked = self._askForConfirmation( "This query will rewrite existing plot buffers", buttons=(QtGui.QMessageBox.Ok | QtGui.QMessageBox.Cancel)) if buttonClicked == QtGui.QMessageBox.Ok: self.parent.clearTrends() else: is_valid_query = False if is_valid_query: from_date = time.strftime('%Y-%m-%dT%H:%M:%S', time.localtime(query_start)) to_date = time.strftime('%Y-%m-%dT%H:%M:%S', time.localtime(query_end)) if self._checkForQuerySizeAndUserConfirmation( query_start, query_end, taurus_trend_set.modelName): try: Qt.QApplication.instance().setOverrideCursor( Qt.QCursor(Qt.Qt.CursorShape.BusyCursor) ) if self._decimation_activated: if self._decimate_period == "Default": decimate = True else: decimate = (self._decimate_period if self._decimate_period > 0 else False) else: decimate = False values = self._archiving_reader \ .get_attribute_values( taurus_trend_set.modelName, from_date, to_date, decimate=decimate) self.parent.info( "loadArchivingData({}, {}, {}, {}): {} values" .format(taurus_trend_set.modelName, from_date, to_date, decimate, len(values))) except KeyError as ke: values = None self.parent.debug( "Attribute '{}' has no archiving data".format( ke)) finally: Qt.QApplication.instance().restoreOverrideCursor() if values is not None and len(values): if (len(values) + len(taurus_trend_set._xBuffer)) \ < self.parent.buffer_tool.bufferSize(): self.parent.debug( "left-appending historical data from {} " "to {}".format(from_date, to_date)) ntrends = 1 if len(taurus_trend_set._yBuffer): ntrends = np.prod(taurus_trend_set._yBuffer .contents().shape[1:]) else: try: for v in values: if v is not None: ntrends = np.size(v[1]) break except Exception: pass if ntrends <= 1: x = np.array([v[0] for v in values]) y = np.array([v[1] for v in values]) y.shape = (len(x), 1) else: x, y = [], [] for v in values: if (v[1] is not None and len(v[1]) == ntrends): x.append(v[0]) y.append(v[1]) x = np.array(x) y = np.array(y) y.shape = (len(x), ntrends) try: if query_start >= buffer_last: taurus_trend_set._xBuffer.extend(x) taurus_trend_set._yBuffer.extend(y) else: taurus_trend_set._xBuffer.extendLeft(x) taurus_trend_set._yBuffer.extendLeft(y) taurus_trend_set._update() except ValueError as e: import traceback traceback.print_exc() self.parent.error( "Error left-appending data " "to buffer.\n", e ) else: msg = ("Buffer size is surpassing limit and " "data has been discarded.\n" "You can change the buffer size at " "your " "own responsibility and try again.") if loadOnce: self._askForConfirmation(msg, buttons=QtGui .QMessageBox.Ok) else: msg += "\nAuto reload has been disabled" self._disableAutoReloadAndDiscardData(msg) return else: if not loadOnce: msg = "Data from archiving has been discarded " \ "and reload disabled" self._disableAutoReloadAndDiscardData(msg) break except Exception as e: import traceback traceback.print_exc() self.parent.warning( "Error updating trend set of model {} " "with error {}".format(taurus_trend_set.modelName, e) ) def _disableAutoReloadAndDiscardData(self, message): self._askForConfirmation(message, buttons=QtGui.QMessageBox.Ok) self.info(message) self._auto_reload_checkbox.setChecked(False) self._onEnableDisableArchivingClicked() # Force a trigger def _checkForQuerySizeAndUserConfirmation(self, from_date, to_date, model_name): hours = int((to_date - from_date) / 3600.) msg = "You are querying {} hours for {}".format(hours, model_name) min_dec = (to_date - from_date) / self.parent.buffer_tool.bufferSize() recommended = int((to_date - from_date) / DEFAULT_PLOT_DECIMATION) or 1 if self._decimate_period == "Default": dec = recommended elif isinstance(self._decimate_period, (int, float)): msg += " (decimated every {} s)".format(self._decimate_period) dec = self._decimate_period else: dec = 10 if dec < min_dec: dec = min_dec + 1 if self._decimation_activated: if self._decimate_period is None: self._decimate_period = True return True if to_date - from_date > SECONDS_48_HOURS: if not self._dismiss_archive_message: msg += "This may take a while\n" msg += "\nContinue? (Yes to All disables this message)" buttonClicked = self._askForConfirmation(msg) self._dismiss_archive_message = \ buttonClicked == QtGui.QMessageBox.YesToAll return buttonClicked in [QtGui.QMessageBox.Ok, QtGui.QMessageBox.YesToAll] return True def _askDecimationPeriod(self, message, min_period): period = self._decimate_period ask_period = DecimationConfigDialog(message=message, default_period=period) if ask_period.exec_(): _selectedOption = ask_period.selectedOption if (_selectedOption == "Default" or ask_period.getInputText() in ["Default", "True"]): self._decimation_activated = True return "Default" elif _selectedOption == "Apply": self._decimation_activated = True try: r = float(ask_period.getInputText()) if r and r < min_period: msg = ( "Buffer size may be surpassed, and then" "data will be discarded.\n" "If it occurs, you can change the buffer size " "at your own responsibility and try again." ) buttonclicked = \ self._askForConfirmation( msg, buttons=QtGui.QMessageBox.Ok | QtGui. QMessageBox.Cancel ) if buttonclicked == QtGui.QMessageBox.Cancel: return None return r except ValueError: traceback.print_exc() self.parent.warning( "Cannot cast from {} to float, applying " "default".format(ask_period.getInputText()) ) return None else: return None def _askForConfirmation(self, message, buttons=QtGui.QMessageBox.Ok | QtGui.QMessageBox .YesToAll | QtGui.QMessageBox.Cancel): warn_user = QtGui.QMessageBox(QtGui.QMessageBox.Warning, "Warning!", message, buttons) return warn_user.exec_() def configure_decimation_options(self, activate_decimation=True, decimate_period=True): """ Method used to activate or deactivate the decimation feature from code. Args: activate_decimation (bool): Activate or not the decimation decimate_period ("Default", True, int, float): True or "Default": Enables decimation to be determined by PyHDB++. int,float: Set in seconds the period of decimation. """ self._decimation_activated = activate_decimation self._decimate_period = decimate_period taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/taurus_pyqtgraph/autopantool.py000066400000000000000000000122761514602004300312470ustar00rootroot00000000000000#!/usr/bin/env python ############################################################################# ## # This file is part of Taurus ## # http://taurus-scada.org ## # Copyright 2011 CELLS / ALBA Synchrotron, Bellaterra, Spain ## # Taurus is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. ## # Taurus is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. ## # You should have received a copy of the GNU Lesser General Public License # along with Taurus. If not, see . ## ############################################################################# __all__ = ["XAutoPanTool"] from taurus.external.qt import QtGui, QtCore from taurus.external.qt import QtWidgets class XAutoPanTool(QtGui.QAction): """ A tool that provides the "AutoPan" for the X axis of a plot (aka "oscilloscope mode"). It is implemented as an Action, and provides a method to attach it to a :class:`pyqtgraph.PlotItem` """ def __init__(self, parent=None): QtGui.QAction.__init__(self, "Fixed range scale", parent) self.setCheckable(True) self.toggled.connect(self._onToggled) self._timer = QtCore.QTimer() self._timer.timeout.connect(self.updateRange) self._originalXAutoRange = None self._viewBox = None self._plotItem = None self._XactionMenu = None self._scrollStep = 0.2 def attachToPlotItem(self, plot_item): """Use this method to add this tool to a plot :param plot_item: (PlotItem) """ self._plotItem = plot_item self._viewBox = plot_item.getViewBox() self._addToMenu(self._viewBox.menu) self._originalXAutoRange = self._viewBox.autoRangeEnabled()[0] self._viewBox.sigXRangeChanged.connect(self._onXRangeChanged) self._plotItem.fixed_range_checkbox = self def _addToMenu(self, menu): # In newer PyQtGraph versions (>0.13.1) there is no "menu.axes" # property, yet in older versions the QMenu is not added in # as child of the menu. for submenu in menu.findChildren(QtWidgets.QMenu): if submenu.title() == "X axis": x_menu = submenu break else: x_menu, _ = menu.axes self._plotItem.x_axis_menu = (self._plotItem.getViewBox().menu.ctrl[0] .gridLayout) self._XactionMenu = x_menu.actions()[0] x_menu.insertAction(self._XactionMenu, self) self.setParent(x_menu) def _onToggled(self, checked): if checked: self._originalXAutoRange = self._viewBox.autoRangeEnabled()[0] self._viewBox.enableAutoRange(x=False) axisXrange = self._viewBox.state["viewRange"][0] x_range = axisXrange[1] - axisXrange[0] t = int(x_range / 10.0) * 1000 t = min(3000, t) t = max(50, t) self._timer.start(t) else: self._timer.stop() self._viewBox.enableAutoRange(x=self._originalXAutoRange) # Get the custom context menu action widget. (X axis) # Then disable editing children except for # "range_label", "range_combo_box" and "gridLayout" for element in self.parent().children()[1].children(): if element.objectName() not in ["range_label", "range_combo_box", "gridLayout"]: element.setEnabled(not checked) def _onXRangeChanged(self): self.setChecked(False) def updateRange(self): """Pans the x axis (change the viewbox range maintaining width but ensuring that the right-most point is shown """ dataItems = self._plotItem.listDataItems() vbs = set() for item in dataItems: vbs.add(item.getViewBox()) if len(dataItems) < 1: self._timer.stop() # find the largest X axis bound among all viewboxes boundMax = float("-inf") for vb in vbs: cb = vb.childrenBounds() if cb is not None and cb[0] is not None and cb[0][1] > boundMax: boundMax = cb[0][1] if boundMax == float("-inf"): return axis_X_range, _ = self._viewBox.state["viewRange"] x_range = axis_X_range[1] - axis_X_range[0] if boundMax > axis_X_range[1] or boundMax < axis_X_range[0]: x_min = boundMax - axis_X_range[1] x_max = boundMax - axis_X_range[0] step = min(max(x_range * self._scrollStep, x_min), x_max) self._viewBox.sigXRangeChanged.disconnect(self._onXRangeChanged) self._viewBox.setXRange( axis_X_range[0] + step, axis_X_range[1] + step, padding=0.0, update=False, ) self._viewBox.sigXRangeChanged.connect(self._onXRangeChanged) taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/taurus_pyqtgraph/buffersizetool.py000066400000000000000000000147041514602004300317420ustar00rootroot00000000000000#!/usr/bin/env python ############################################################################# ## # This file is part of Taurus ## # http://taurus-scada.org ## # Copyright 2011 CELLS / ALBA Synchrotron, Bellaterra, Spain ## # Taurus is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. ## # Taurus is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. ## # You should have received a copy of the GNU Lesser General Public License # along with Taurus. If not, see . ## ############################################################################# __all__ = ["BufferSizeTool"] from taurus.external.qt import QtGui, QtCore from taurus.qt.qtcore.configuration.configuration import BaseConfigurableClass class BufferSizeTool(QtGui.QAction, BaseConfigurableClass): """ This tool provides a menu option to control the "Maximum buffer" of Plot data items that implement a `setBufferSize` method (see, e.g. :meth:`TaurusTrendSet.setBufferSize`). This tool inserts an action with a spinbox and emits a `valueChanged` signal whenever the value is changed. The connection between the data items and this tool can be done manually (by connecting to the `valueChanged` signal or automatically, if :meth:`autoconnect()` is `True` (default). The autoconnection feature works by discovering the compliant data items that are associated to the plot_item. This tool is implemented as an Action, and provides a method to attach it to a :class:`pyqtgraph.PlotItem` """ valueChanged = QtCore.pyqtSignal(int) def __init__( self, parent=None, buffer_size=65536, text="Change buffers size...", autoconnect=True, ): BaseConfigurableClass.__init__(self) QtGui.QAction.__init__(self, text, parent) self.setToolTip("Maximum number of points for each trend") self._maxSize = buffer_size self._autoconnect = autoconnect # register config properties self.registerConfigProperty( self.bufferSize, self.setBufferSize, "buffer_size" ) self.registerConfigProperty( self.autoconnect, self.setAutoconnect, "autoconnect" ) # internal conections self.triggered.connect(self._onTriggered) def _onEdittingFinished(self): """ emit valueChanged and update all associated trendsets (if self.autoconnect=True """ buffer_size = self.bufferSize() self.valueChanged.emit(buffer_size) if self.autoconnect() and self.plot_item is not None: for item in self.plot_item.listDataItems(): if hasattr(item, "setBufferSize"): item.setBufferSize(buffer_size) def _onTriggered(self): maxSize = self.bufferSize() maxSize, ok = QtGui.QInputDialog.getInt( self.parentWidget(), "New buffer data size", "Enter the number of points to be kept in memory for each curve", maxSize, 2, 10000000, 1000, ) if ok: self.setBufferSize(maxSize) def attachToPlotItem(self, plot_item): """Use this method to add this tool to a plot :param plot_item: (PlotItem) """ menu = plot_item.getViewBox().menu menu.addAction(self) self.plot_item = plot_item # ensure that current items are set to max size self.setBufferSize(self.bufferSize()) if self.autoconnect(): # enable the buffer limit also for trendsets added in the future try: # requires https://github.com/pyqtgraph/pyqtgraph/pull/1388 plot_item.scene().sigItemAdded.connect(self._onAddedItem) except AttributeError: pass def _onAddedItem(self, item): if hasattr(item, "setBufferSize"): item.setBufferSize(self.bufferSize()) def autoconnect(self): """Returns autoconnect state :return: (bool) """ return self._autoconnect def setAutoconnect(self, autoconnect): """Set autoconnect state. If True, the tool will autodetect trendsets associated to the plot item and will call setBufferSize on each of them for each change. If False, it will only emit a valueChanged signal and only those connected to it will be notified of changes :param autoconnect: (bool) """ self._autoconnect = autoconnect def bufferSize(self): """Returns the current buffer_size value :return: (int) """ return self._maxSize def setBufferSize(self, buffer_size): """Change the buffer_size value. :param buffer_size: (int) buffer_size """ self._maxSize = buffer_size # update existing items if self.autoconnect() and self.plot_item is not None: for item in self.plot_item.listDataItems(): if hasattr(item, "setBufferSize"): item.setBufferSize(buffer_size) # emit a valueChanged signal self.valueChanged.emit(buffer_size) if __name__ == "__main__": import taurus # taurus.setLogLevel(taurus.Debug) taurus.changeDefaultPollingPeriod(333) import sys from taurus.qt.qtgui.application import TaurusApplication from taurus_pyqtgraph import TaurusTrendSet, DateAxisItem import pyqtgraph as pg # from taurus_pyqtgraph import MaxBufferTool app = TaurusApplication() w = pg.PlotWidget() axis = DateAxisItem(orientation="bottom") w = pg.PlotWidget() axis.attachToPlotItem(w.getPlotItem()) # test adding the curve before the tool ts1 = TaurusTrendSet(name="before", symbol="o") ts1.setModel("eval:rand()+1") w.addItem(ts1) fr = BufferSizeTool(w, buffer_size=16) fr.attachToPlotItem(w.getPlotItem()) # test adding the curve after the tool ts2 = TaurusTrendSet(name="after", symbol="+") ts2.setModel("eval:rand()") w.addItem(ts2) w.show() ret = app.exec_() import pprint pprint.pprint(fr.createConfig()) sys.exit(ret) taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/taurus_pyqtgraph/cli.py000066400000000000000000000026541514602004300274500ustar00rootroot00000000000000############################################################################# ## # This file is part of Taurus ## # http://taurus-scada.org ## # Copyright 2011 CELLS / ALBA Synchrotron, Bellaterra, Spain ## # Taurus is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. ## # Taurus is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. ## # You should have received a copy of the GNU Lesser General Public License # along with Taurus. If not, see . ## ############################################################################# import click import sys @click.group("tpg") def tpg(): """[DEPRECATED] use "taurus plot" or "taurus trend" instead""" print( '"taurus tpg" subcommand is deprecated. ' + 'Use "taurus plot" or "taurus trend" instead\n' ) sys.exit(1) @tpg.command() def plot(): """[DEPRECATED] use "taurus plot" instead""" sys.exit(1) @tpg.command() def trend(): """[DEPRECATED] use "taurus trend" instead""" sys.exit(1) if __name__ == "__main__": sys.exit(tpg()) # pragma: no cover taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/taurus_pyqtgraph/curveproperties.py000066400000000000000000001116451514602004300321430ustar00rootroot00000000000000#!/usr/bin/env python ############################################################################# ## # This file is part of Taurus ## # http://taurus-scada.org ## # Copyright 2011 CELLS / ALBA Synchrotron, Bellaterra, Spain ## # Taurus is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. ## # Taurus is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. ## # You should have received a copy of the GNU Lesser General Public License # along with Taurus. If not, see . ## ############################################################################# """ A Qt dialog for choosing plot appearance (symbols and lines) for a Pyqtgraph.PlotDataItem or taurus-derived class like TaurusPlotDataItem .. warning:: this is Work-in-progress. The API from this module may still change. Please """ from __future__ import absolute_import # TODO: WIP __all__ = [ "CurveAppearanceProperties", "CurvesAppearanceChooser", "serialize_opts", "deserialize_opts", "get_properties_from_curves", "set_properties_on_curves", "set_range_on_trend", "set_y_axis_for_curve", "CURVE_COLORS", ] import copy from datetime import datetime, timedelta from taurus import warning from taurus.external.qt import Qt, QtGui from taurus.qt.qtgui.util.ui import UILoadable from .y2axis import Y2ViewBox, set_y_axis_for_curve import pyqtgraph class CONFLICT(object): """ This is just a do-nothing class to be used to indicate that there are conflicting values when merging properties from different curves """ pass NamedLineStyles = { CONFLICT: "", Qt.Qt.NoPen: "No line", Qt.Qt.SolidLine: "_____", Qt.Qt.DashLine: "_ _ _", Qt.Qt.DotLine: ".....", Qt.Qt.DashDotLine: "_._._", Qt.Qt.DashDotDotLine: ".._..", } ReverseNamedLineStyles = {} for k, v in NamedLineStyles.items(): ReverseNamedLineStyles[v] = k # TODO:allow the dialog to use this curve styles NamedStepMode = { CONFLICT: "", None: "No step", "left": "Left step", "right": "Right step", } ReverseNamedStepMode = {} for k, v in NamedStepMode.items(): ReverseNamedStepMode[v] = k RangeOptions = ["", "5m", "30m", "1h", "12h", "1d", "1w", "1y"] NamedSymbolStyles = { CONFLICT: "", None: "No symbol", "o": "Circle", "s": "Square", "d": "Diamond", "t": "Down Triangle", "t1": "Up triangle", "t3": "Left Triangle", "t2": "Right Triangle", "+": "Cross", "star": "Star", "p": "Pentagon", "h": "Hexagon", } ReverseNamedSymbolStyles = {} for k, v in NamedSymbolStyles.items(): ReverseNamedSymbolStyles[v] = k NamedColors = [ "Red", "Blue", "Green", "Magenta", "Cyan", "Yellow", "Orange", "greenyellow", "Gray", "White", "Black", ] kelly_colors_hex = [ # https://stackoverflow.com/a/4382138 0xFFB300, # Vivid Yellow 0x803E75, # Strong Purple 0xFF6800, # Vivid Orange 0xA6BDD7, # Very Light Blue 0xC10020, # Vivid Red 0xCEA262, # Grayish Yellow 0x817066, # Medium Gray # The following don't work well for people with defective color vision 0x007D34, # Vivid Green 0xF6768E, # Strong Purplish Pink 0x00538A, # Strong Blue # 0xFF7A5C, # Strong Yellowish Pink # 0x53377A, # Strong Violet # 0xFF8E00, # Vivid Orange Yellow 0xB32851, # Strong Purplish Red # 0xF4C800, # Vivid Greenish Yellow # 0x7F180D, # Strong Reddish Brown 0x93AA00, # Vivid Yellowish Green 0x593315, # Deep Yellowish Brown # 0xF13A13, # Vivid Reddish Orange # 0x232C16, # Dark Olive Green ] CURVE_COLORS = [Qt.QColor(n) for n in NamedColors[:-2]] AXIS_RANGE_UNIT_FORMAT_EXAMPLE = """ The input string should be of the form '', where is an integer and is one of the next ones (note the space for entire word): - 'm' or ' minutes' for minutes - 'h' or ' hours' for hours - 'd' or ' days' for days - 'w' or ' weeks' for weeks - 'y' or ' years' for years (day-converted based on 365.25 days per year) Example: '1h' parses to 1 hours timedelta. Example: '1 hours' parses to 1 hours """ @UILoadable class CurvesAppearanceChooser(Qt.QWidget): """ A widget for choosing plot appearance for one or more curves. The current curves properties are passed using the setCurvesProps() method using a dictionary with the following structure:: curvePropDict={name1:prop1, name2:prop2,...} where propX is an instance of :class:`CurveAppearanceProperties` When applying, a signal is emitted and the chosen properties are made available in a similar dictionary. """ NAME_ROLE = Qt.Qt.UserRole controlChanged = Qt.pyqtSignal() CurveTitleEdited = Qt.pyqtSignal("QString", "QString") DEFAULT_ENABLED_OPTIONS_DICT = { "applyBT": True, "assignToY1BT": True, "assignToY2BT": True, "bckgndBT": True, "curvesLW": True, "dialogEnabled": True, "lineGB": True, "otherGB": True, "resetBT": True, "symbolGB": True, "xAxisGB": True, } def __init__( self, parent=None, curvePropDict=None, showButtons=False, autoApply=False, curvesDict=None, plotItem=None, Y2Axis=None, appearanceChangedSignal=None, enabledOptionsDict=None, ): super(CurvesAppearanceChooser, self).__init__(parent) self.loadUi() self.autoApply = autoApply self._curvesDict = curvesDict self.plotItem = plotItem self.Y2Axis = Y2Axis self.ComboBox_Range.insertItems(0, RangeOptions) self.sStyleCB.insertItems(0, sorted(NamedSymbolStyles.values())) self.lStyleCB.insertItems(0, list(NamedLineStyles.values())) self.stepModeCB.insertItems(0, list(NamedStepMode.values())) self.sColorCB.addItem("") self.lColorCB.addItem("") self.cAreaDSB.setRange(float("-inf"), float("inf")) if not showButtons: self.applyBT.hide() self.resetBT.hide() for color in CURVE_COLORS: icon = self._colorIcon(color) self.sColorCB.addItem(icon, "", Qt.QColor(color)) self.lColorCB.addItem(icon, "", Qt.QColor(color)) self.setCurvesProps(curvePropDict) if self.plotItem is None: self.bckgndBT.setVisible(False) # connections. self.curvesLW.itemSelectionChanged.connect( self._onSelectedCurveChanged ) self.applyBT.clicked.connect(self.onApply) self.resetBT.clicked.connect(self.onReset) self.sStyleCB.currentIndexChanged.connect(self._onSymbolStyleChanged) self.Button_TimeApply.clicked.connect(self.onTimeApply) self.curvesLW.itemChanged.connect(self._onControlChanged) self.sStyleCB.currentIndexChanged.connect(self._onControlChanged) self.lStyleCB.currentIndexChanged.connect(self._onControlChanged) self.sColorCB.currentIndexChanged.connect(self._onControlChanged) self.lColorCB.currentIndexChanged.connect(self._onControlChanged) self.stepModeCB.currentIndexChanged.connect(self._onControlChanged) self.sSizeSB.valueChanged.connect(self._onControlChanged) self.lWidthSB.valueChanged.connect(self._onControlChanged) self.cAreaDSB.valueChanged.connect(self._onControlChanged) self.sFillCB.stateChanged.connect(self._onControlChanged) self.cFillCB.stateChanged.connect(self._onControlChanged) self.assignToY1BT.toggled[bool].connect(self.__onY1Toggled) self.assignToY2BT.toggled[bool].connect(self.__onY2Toggled) self.bckgndBT.clicked.connect(self.changeBackgroundColor) # Disabled button until future implementations self.changeTitlesBT.setVisible(False) # disable the group box with the options for swap curves between Y axes if Y2Axis is None or plotItem is None: self.groupBox.setEnabled(False) if enabledOptionsDict is None: enabledOptionsDict = {} self.enabledOptionsDict = {} for key, value in self.DEFAULT_ENABLED_OPTIONS_DICT.items(): if key not in enabledOptionsDict: self.enabledOptionsDict[key] = value else: self.enabledOptionsDict[key] = enabledOptionsDict[key] self._onSelectedCurveChanged() self.axis = None self.curveAppearanceChanged = appearanceChangedSignal def __onY1Toggled(self, checked): if checked: self.assignToY2BT.setChecked(False) def __onY2Toggled(self, checked): if checked: self.assignToY1BT.setChecked(False) def __findCurveListItem(self, key, role=None): if role is None: role = self.NAME_ROLE for i in range(self.curvesLW.count()): item = self.curvesLW.item(i) if item.data(role) == key: return item def changeBackgroundColor(self): """Launches a dialog for choosing the plot widget background color """ color = Qt.QColorDialog.getColor( initial=self.plotItem.scene().parent().backgroundBrush().color(), parent=self, ) if Qt.QColor.isValid(color): self.plotItem.scene().parent().setBackground(color) def setCurvesProps(self, curvePropDict): """Populates the list of curves from the properties dictionary. It uses the curve title for display, and stores the curve name as the item data (with role=CurvesAppearanceChooser.NAME_ROLE) :param curvePropDict: (dict) a dictionary whith keys=curvenames and values= :class:`CurveAppearanceProperties` object """ self.curvePropDict = curvePropDict self._curvePropDictOrig = copy.deepcopy(curvePropDict) self.curvesLW.clear() for name, prop in self.curvePropDict.items(): # create and insert the item item = Qt.QListWidgetItem(prop.title, self.curvesLW) item.setData(self.NAME_ROLE, name) item.setFlags( Qt.Qt.ItemIsEnabled | Qt.Qt.ItemIsSelectable | Qt.Qt.ItemIsUserCheckable | Qt.Qt.ItemIsDragEnabled | Qt.Qt.ItemIsEditable ) self.curvesLW.setCurrentRow(0) def getTimeRange(self): return self.ComboBox_Range.currentText() def getSelectedCurveNames(self): """Returns the curve names for the curves selected at the curves list. *Note*: The names may differ from the displayed text, which corresponds to the curve titles (this method is what you likely need if you want to get keys to use in curves or curveProp dicts). :return: (string_list) the names of the selected curves """ return [ item.data(self.NAME_ROLE) for item in self.curvesLW.selectedItems() ] def showProperties(self, prop=None): """Updates the dialog to show the given properties. :param prop: (CurveAppearanceProperties) the properties object containing what should be shown. If a given property is set to CONFLICT, the corresponding plot_item will show a "neutral" display """ if prop is None: prop = self._shownProp # set the Style comboboxes self.sStyleCB.setCurrentIndex( self.sStyleCB.findText(NamedSymbolStyles[prop.sStyle]) ) self.lStyleCB.setCurrentIndex( self.lStyleCB.findText(NamedLineStyles[prop.lStyle]) ) self.stepModeCB.setCurrentIndex( self.stepModeCB.findText(NamedStepMode[prop.stepMode]) ) if prop.y2 is CONFLICT: self.assignToY1BT.setChecked(False) self.assignToY2BT.setChecked(False) elif prop.y2: self.assignToY2BT.setChecked(True) else: self.assignToY1BT.setChecked(True) # set sSize and lWidth spinboxes. if prop.sSize is None, it puts -1 # (which is the special value for these switchhboxes) if prop.sSize is CONFLICT or prop.sStyle is None: self.sSizeSB.setValue(-1) else: self.sSizeSB.setValue(max(prop.sSize, -1)) if prop.lWidth is CONFLICT: self.lWidthSB.setValue(-1) else: self.lWidthSB.setValue(max(prop.lWidth, -1)) # Set the Color combo boxes. The item at index 0 is the empty one in # the comboboxes Manage unknown colors by including them if prop.sColor in (None, CONFLICT) or prop.sStyle is None: index = 0 else: index = self.sColorCB.findData(Qt.QColor(prop.sColor)) if index == -1: # if the color is not supported, add it to combobox index = self.sColorCB.count() self.sColorCB.addItem( self._colorIcon(Qt.QColor(prop.sColor)), "", Qt.QColor(prop.sColor), ) self.sColorCB.setCurrentIndex(index) if prop.lColor is None or prop.lColor is CONFLICT: index = 0 else: index = self.lColorCB.findData(Qt.QColor(prop.lColor)) if index == -1: # if the color is not supported, add it to combobox index = self.lColorCB.count() self.lColorCB.addItem( self._colorIcon(Qt.QColor(prop.lColor)), "", Qt.QColor(prop.lColor), ) self.lColorCB.setCurrentIndex(index) # set the Fill Checkbox. The prop.sFill value can be in 3 states: True, # False and None if prop.sFill is None or prop.sFill is CONFLICT: checkState = Qt.Qt.PartiallyChecked elif prop.sFill: checkState = Qt.Qt.Checked else: checkState = Qt.Qt.Unchecked self.sFillCB.setCheckState(checkState) # set the Area Fill Checkbox. The prop.cFill value can be in 3 states: # True, False and None if prop.cFill is CONFLICT: checkState = Qt.Qt.PartiallyChecked self.cAreaDSB.setValue(0.0) elif prop.cFill is None: checkState = Qt.Qt.Unchecked self.cAreaDSB.setValue(0.0) else: checkState = Qt.Qt.Checked self.cAreaDSB.setValue(prop.cFill) self.cFillCB.setCheckState(checkState) def _onControlChanged(self, *args): """ Slot to be called whenever a control plot_item is changed. It emits a `controlChanged` signal and applies the change if in autoapply mode. It ignores any arguments passed """ self.controlChanged.emit() if self.autoApply: self.onApply() def _onSelectedCurveChanged(self): """Updates the shown properties when the curve selection changes""" plist = [ self.curvePropDict[name] for name in self.getSelectedCurveNames() ] # Enabled or disable the dialog options according to preferences for key, value in self.enabledOptionsDict.items(): if "dialogEnabled" in key: self.setEnabled(value) else: getattr(self, key).setEnabled(value) # If no curves are selected, show a default property set and disable if len(plist) == 0: plist = [CurveAppearanceProperties()] self.lineGB.setEnabled(False) self.symbolGB.setEnabled(False) self.otherGB.setEnabled(False) self._shownProp = CurveAppearanceProperties.merge(plist) self.showProperties(self._shownProp) def _onSymbolStyleChanged(self, text): """Slot called when the Symbol style is changed, to ensure that symbols are visible if you choose them :param text: (str) the new symbol style label """ text = str(text) if self.sSizeSB.value() < 2 and text not in ["", "No symbol"]: self.sSizeSB.setValue(3) def getShownProperties(self): """Returns a copy of the currently shown properties and updates self._shownProp Note: the title property is left as CONFLICT since all are shown :return: (CurveAppearanceProperties) """ prop = CurveAppearanceProperties() # get the values from the Style comboboxes. Note that the empty string # ("") translates into CONFLICT prop.sStyle = ReverseNamedSymbolStyles[ str(self.sStyleCB.currentText()) ] prop.lStyle = ReverseNamedLineStyles[str(self.lStyleCB.currentText())] prop.stepMode = ReverseNamedStepMode[ str(self.stepModeCB.currentText()) ] # get sSize and lWidth from the spinboxes (-1 means conflict) v = self.sSizeSB.value() if v == -1: prop.sSize = CONFLICT else: prop.sSize = v v = self.lWidthSB.value() if v == -1: prop.lWidth = CONFLICT else: prop.lWidth = v # Get the Color combo boxes. The item at index 0 is the empty one in # the comboboxes index = self.sColorCB.currentIndex() if index == 0: prop.sColor = CONFLICT else: prop.sColor = Qt.QColor(self.sColorCB.itemData(index)) index = self.lColorCB.currentIndex() if index == 0: prop.lColor = CONFLICT else: prop.lColor = Qt.QColor(self.lColorCB.itemData(index)) # get the sFill from the Checkbox. checkState = self.sFillCB.checkState() if checkState == Qt.Qt.PartiallyChecked: prop.sFill = CONFLICT else: prop.sFill = bool(checkState) # get the cFill from the Checkbox. checkState = self.cFillCB.checkState() if checkState == Qt.Qt.PartiallyChecked: prop.cFill = CONFLICT elif checkState == Qt.Qt.Checked: prop.cFill = self.cAreaDSB.value() else: prop.cFill = None # get the y2 state from the buttons y1 = self.assignToY1BT.isChecked() y2 = self.assignToY2BT.isChecked() if not y1 and not y2: prop.y2 = CONFLICT elif y1: prop.y2 = False elif y2: prop.y2 = True else: # both buttons should never be checked simultaneously raise RuntimeError("Inconsistent state of Y-axis buttons") # store the props self._shownProp = copy.deepcopy(prop) return copy.deepcopy(prop) def onTimeApply(self): """Sets the selected range on the Trend and stores the value in a dictionary for future easy access.""" set_range_on_trend(self.getTimeRange(), plotItem=self.plotItem) def onApply(self): """Apply does 3 things: - It updates `self.curvePropDict` using the current values chosen in the dialog - It applies the properties to the curves (if the Chooser was initialized with the appropriate curvesDict) - It emits a curveAppearanceChanged signal that indicates the names of the curves that changed and the new properties. (TODO) :return: (tuple) a tuple containing the curve properties and a list of the selected curve names (as a list) """ names = self.getSelectedCurveNames() prop = self.getShownProperties() # Update self.curvePropDict for selected properties oldCurveProps = copy.deepcopy(self.curvePropDict) for n in names: self.curvePropDict[n] = CurveAppearanceProperties.merge( [self.curvePropDict[n], prop], conflict=CurveAppearanceProperties.inConflict_update_a, ) # update the title with whatever is now written in the curvesLW self.curvePropDict[n].title = self.__findCurveListItem(n).text() # It emits a dictionary with the curves that have been changed as keys, # and the properties that have changed as values. # This signal is from the CurvesPropertiesTool class. # This is to avoid forwarding signals through multiple classes. changed_props = {} for key, props in oldCurveProps.items(): if key not in changed_props: changed_props[key] = {} for pkey in props.propertyList: if (getattr(props, pkey) != getattr(self.curvePropDict[key], pkey)): changed_props[key][pkey] = getattr( self.curvePropDict[key], pkey ) if changed_props[key] == {}: del changed_props[key] if self.curveAppearanceChanged is not None: self.curveAppearanceChanged.emit(changed_props) if self._curvesDict is not None: set_properties_on_curves( self.curvePropDict, self._curvesDict, plotItem=self.plotItem, y2Axis=self.Y2Axis, ) return prop, names def onReset(self): """slot to be called when the reset action is triggered. It reverts to the original situation""" self.setCurvesProps(self._curvePropDictOrig) self.curvesLW.clearSelection() def _colorIcon(self, color, w=10, h=10): # to do: create a border pixmap = Qt.QPixmap(w, h) pixmap.fill(Qt.QColor(color)) return Qt.QIcon(pixmap) def get_properties_from_curves(curves): """Returns a dictionary of properties corresponding to the curves given in the `curves` dict. :param curves: dict whose values are :class:`PlotDataItem` instances and whose keys arbitrarily identify a given curve :return: properties dict containing :class:`CurveAppearanceProperties` instances and whose keys match those in the `curves` dict """ curves_prop = {} for key, item in curves.items(): y2 = isinstance(item.getViewBox(), Y2ViewBox) opts = item.opts pen = pyqtgraph.mkPen(opts["pen"]) # symbol_pen = pyqtgraph.mkPen(opts["symbolPen"]) symbol_brush = pyqtgraph.mkBrush(opts["symbolBrush"]) title = opts.get("name") sStyle = opts["symbol"] sSize = opts["symbolSize"] if sStyle is None: sColor = None sSize = -1 else: sColor = symbol_brush.color() sFill = symbol_brush.color() if sFill is None or sStyle is None: sFill = False else: sFill = True lStyle = pen.style() lWidth = pen.width() lColor = pen.color() stepMode = opts.get("stepMode", None) cFill = opts["fillLevel"] curve_appearance_properties = CurveAppearanceProperties( sStyle=sStyle, sSize=sSize, sColor=sColor, sFill=sFill, lStyle=lStyle, lWidth=lWidth, lColor=lColor, stepMode=stepMode, cFill=cFill, y2=y2, title=title, ) curves_prop[key] = curve_appearance_properties return curves_prop def parse_timedelta(input_str): """Parses a time range string into a timedelta object. {} Args: input_str (str): The input time range string to parse. Returns: timedelta: The parsed timedelta object. """.format(AXIS_RANGE_UNIT_FORMAT_EXAMPLE) # Extract numeric value and unit from input input_str = input_str.strip() try: if " " in input_str: # Assuming whole word as units value = float(input_str.split(' ')[0].replace(',', '.')) unit = input_str.split(' ')[-1] # Pluralize if necessary if not unit.endswith('s'): unit += 's' if unit not in ["minutes", "hours", "days", "weeks", "years"]: raise ValueError # Convert years to days # (considering an average year of 365.25 days) if unit == "years": value *= 365.25 unit = "days" return timedelta(**{unit: value}) else: # Assuming only a char as unit value = float(input_str[:-1].strip().replace(',', '.')) unit = input_str[-1] # Convert years to days # (considering an average year of 365.25 days) if unit == 'y': value *= 365.25 unit = 'd' # Define a mapping between units and timedelta attributes unit_mapping = {'m': 'minutes', 'h': 'hours', 'd': 'days', 'w': 'weeks', 'y': 'days'} # Create a timedelta object using the extracted values delta = timedelta(**{unit_mapping[unit]: value}) except ValueError: QtGui.QMessageBox().warning(None, "ValueError", AXIS_RANGE_UNIT_FORMAT_EXAMPLE, QtGui.QMessageBox.Ok) delta = timedelta(**{"hours": 1}) return delta def set_range_on_trend(range, plotItem=None): """Sets x-axis range on the plotItem viewbox based on a time range string. Parses the range string into a timedelta, subtracts it from the current time to get the past time, converts to timestamps, and sets the x-axis range between past and current time. """ vb = plotItem.getViewBox() time_now = datetime.now() time_past = time_now - parse_timedelta(range) time_now_int = int(time_now.timestamp()) time_past_int = int(time_past.timestamp()) vb.setXRange(time_now_int, time_past_int, padding=0.0, update=False) plotItem.fixed_range_checkbox.setChecked(True) def set_properties_on_curves(properties, curves, plotItem=None, y2Axis=None): """ Sets properties provided in the `properties` dict to curves provided in the `curves` dict. The association of a given curve with a property is done by matching the keys in the respective dictionaries. If both `plotItem` and `y2Axis` are passed, the curve will be moved to the ViewBox defined in the .y2 property :param properties: dict whose values are :class:`CurveAppearanceProperties` instances and whose keys arbitrarily identify a given curve :param curves: dict whose values are :class:`PlotDataItem` instances and whose keys match those of properties (if a key in `curves` does not exist in `properties`, it will be ignored) :param plotItem: The :class:`PlotItem` containing the dataItem. :param y2Axis: The :class:`Y2ViewBox` instance e skipp """ for key, dataItem in curves.items(): try: prop = properties[key] except KeyError: warning("Cannot restore curve '%s' (no known properties)", key) continue sStyle = prop.sStyle sSize = prop.sSize sColor = prop.sColor sFill = prop.sFill lStyle = prop.lStyle lWidth = prop.lWidth lColor = prop.lColor cFill = prop.cFill stepMode = prop.stepMode y2 = prop.y2 title = prop.title dataItem.setPen(dict(style=lStyle, width=lWidth, color=lColor)) if cFill is not None: dataItem.setFillLevel(cFill) try: cFillColor = Qt.QColor(lColor) cFillColor.setAlphaF(0.5) # set to semitransparent except Exception: cFillColor = lColor dataItem.setFillBrush(cFillColor) else: dataItem.setFillLevel(None) dataItem.setSymbol(sStyle) # dataItem.setSymbolPen(pyqtgraph.mkPen(color=sColor)) if sStyle is None or sSize < 0: dataItem.setSymbolSize(0) else: dataItem.setSymbolSize(sSize) if sFill: dataItem.setSymbolBrush(pyqtgraph.mkColor(sColor)) else: dataItem.setSymbolBrush(None) dataItem.opts["stepMode"] = stepMode dataItem.updateItems() if title is not None: # set the title of the curve dataItem.setData(name=title) # update the corresponding label in the legend if plotItem is not None and plotItem.legend is not None: if hasattr(plotItem.legend, "getLabel"): plotItem.legend.getLabel(dataItem).setText(title) else: # workaround for pyqtgraph<=0.11 (getLabel not implemented) for sample, label in plotItem.legend.items: if sample.item == dataItem: label.setText(title) break # act on the ViewBoxes only if plotItem and y2Axis are given if plotItem and y2Axis: set_y_axis_for_curve(y2, dataItem, plotItem, y2Axis) class CurveAppearanceProperties(object): """An object describing the appearance of a TaurusCurve""" propertyList = [ "sStyle", "sSize", "sColor", "sFill", "lStyle", "lWidth", "lColor", "stepMode", "cFill", "y2", "title", "visible", ] def __init__( self, sStyle=CONFLICT, sSize=CONFLICT, sColor=CONFLICT, sFill=CONFLICT, lStyle=CONFLICT, lWidth=CONFLICT, lColor=CONFLICT, stepMode=CONFLICT, y2=CONFLICT, cFill=CONFLICT, title=CONFLICT, visible=CONFLICT, ): """ Possible keyword arguments are: - sStyle= symbolstyle - sSize= int - sColor= color - sFill= bool - lStyle= linestyle - lWidth= int - lColor= color - stepMode= stepmode - cFill= float or None - y2= bool - visible = bool - title= str Where: - color is a color that QColor() understands (i.e. a Qt.Qt.GlobalColor, a color name, or a Qt.Qcolor) - symbolstyle is a key of NamedSymbolStyles - linestyle is a key of Qt.Qt.PenStyle - stepMode is a key of NamedStepMode - cFill can either be None (meaning not to fill) or a float that indicates the baseline from which to fill - y2 is True if the curve is associated to the y2 axis """ self.sStyle = sStyle self.sSize = sSize self.sColor = sColor self.sFill = sFill self.lStyle = lStyle self.lWidth = lWidth self.lColor = lColor self.stepMode = stepMode self.cFill = cFill self.y2 = y2 self.title = title self.visible = visible def __repr__(self): ret = ") objects to be merged :param attributes: (sequence) the name of the attributes to consider for the merge. If None, all the attributes will be merged :param conflict: (callable) a function that takes 2 objects (having a different attribute) and returns a value that solves the conflict. If None is given, any conflicting attribute will be set to CONFLICT. :return: (CurveAppearanceProperties) merged properties """ n = len(plist) if n < 1: raise ValueError("plist must contain at least 1 member") plist = copy.deepcopy(plist) if n == 1: return plist[0] if attributes is None: attributes = cls.propertyList if conflict is None: conflict = CurveAppearanceProperties.inConflict_CONFLICT p = CurveAppearanceProperties() for a in attributes: alist = [p.__getattribute__(a) for p in plist] p.__setattr__(a, alist[0]) for ai in alist[1:]: if alist[0] != ai: # print "MERGING:",a,alist[0],ai,conflict(alist[0],ai) p.__setattr__(a, conflict(alist[0], ai)) break return p def deserialize_opts(opts): """ Deserialize opts dict to pass it to a PlotDataItem :param opts: (dict) serialized properties (as the output of :meth:`deserialize_opts`) :return: (dict) deserialized properties (acceptable by PlotDataItem) """ # pen property if opts["pen"] is not None: opts["pen"] = _unmarshallingQPainter(opts, "pen", "pen") # shadowPen property if opts["shadowPen"] is not None: opts["shadowPen"] = _unmarshallingQPainter(opts, "shadowPen", "pen") # symbolPen property if opts["symbolPen"] is not None: opts["symbolPen"] = _unmarshallingQPainter(opts, "symbolPen", "pen") # fillBrush property if opts["fillBrush"] is not None: opts["fillBrush"] = _unmarshallingQPainter(opts, "fillBrush", "brush") # symbolBrush property if opts["symbolBrush"] is not None: opts["symbolBrush"] = _unmarshallingQPainter( opts, "symbolBrush", "brush" ) return opts def serialize_opts(opts): """ Serialize all properties from PlotDataItem. :param opts: (dict) PlotDataItem opts (may include non-serializable objects) :return: (dict) serialized properties (can be pickled) """ # pen property (QPen object) if opts["pen"] is not None: _marshallingQPainter(opts, "pen", "pen") # shadowPen property (QPen object) if opts["shadowPen"] is not None: _marshallingQPainter(opts, "shadowPen", "pen") # symbolPen property (QPen object) if opts["symbolPen"] is not None: _marshallingQPainter(opts, "symbolPen", "pen") # fillBrush property (QBrush object) if opts["fillBrush"] is not None: _marshallingQPainter(opts, "fillBrush", "brush") # symbolBrush property (QBrush object) if opts["symbolBrush"] is not None: _marshallingQPainter(opts, "symbolBrush", "brush") return opts def _marshallingQPainter(opts, prop_name, qPainter): if qPainter == "pen": painter = pyqtgraph.mkPen(opts[prop_name]) opts[prop_name + "_width"] = painter.width() opts[prop_name + "_dash"] = painter.dashPattern() opts[prop_name + "_cosmetic"] = painter.isCosmetic() elif qPainter == "brush": painter = pyqtgraph.mkBrush(opts[prop_name]) else: return color = pyqtgraph.colorStr(painter.color()) opts[prop_name] = color opts[prop_name + "_style"] = painter.style() def _unmarshallingQPainter(opts, prop_name, qPainter): color = opts[prop_name] style = opts[prop_name + "_style"] del opts[prop_name + "_style"] if qPainter == "pen": width = opts[prop_name + "_width"] dash = opts[prop_name + "_dash"] cosmetic = opts[prop_name + "_cosmetic"] del opts[prop_name + "_width"] del opts[prop_name + "_dash"] del opts[prop_name + "_cosmetic"] painter = pyqtgraph.mkPen( color=color, style=style, width=width, dash=dash, cosmetic=cosmetic ) elif qPainter == "brush": painter = pyqtgraph.mkBrush(color=color) painter.setStyle(style) else: return return painter taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/taurus_pyqtgraph/curvesmodel.py000066400000000000000000000512421514602004300312260ustar00rootroot00000000000000#!/usr/bin/env python ############################################################################# ## # This file is part of Taurus ## # http://taurus-scada.org ## # Copyright 2011 CELLS / ALBA Synchrotron, Bellaterra, Spain ## # Taurus is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. ## # Taurus is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. ## # You should have received a copy of the GNU Lesser General Public License # along with Taurus. If not, see . ## ############################################################################# """ curvesmodel Model and view for new CurveItem configuration .. warning:: this is Work-in-progress. The API may change. Do not rely on current API of this module """ __all__ = ["TaurusCurveItemTableModel", "TaurusItemConf", "TaurusItemConfDlg"] import copy from taurus.external.qt import Qt import taurus from taurus.core import TaurusElementType from taurus.qt.qtcore.mimetypes import ( TAURUS_MODEL_LIST_MIME_TYPE, TAURUS_ATTR_MIME_TYPE, ) from taurus.qt.qtgui.util.ui import UILoadable from taurus.qt.qtgui.panel import TaurusModelSelector # columns: NUMCOLS = 3 X, Y, TITLE = list(range(NUMCOLS)) SRC_ROLE = Qt.Qt.UserRole + 1 class Component(object): def __init__(self, src): self.display = "" self.icon = Qt.QIcon() self.ok = True self.processSrc(src) def processSrc(self, src): """ processes the src and sets the values of display, icon and ok attributes """ if src is None: self.display, self.icon, self.ok = "", Qt.QIcon(), True return src = str(src).strip() # empty if src == "": self.display, self.icon, self.ok = "", Qt.QIcon(), True return # for taurus attributes if taurus.isValidName(src, etypes=[TaurusElementType.Attribute]): self.display, self.icon, self.ok = ( src, Qt.QIcon("logos:taurus.png"), True, ) return # if not caught before, it is unsupported self.display, self.icon, self.ok = ( src, Qt.QIcon.fromTheme("dialog-warning"), False, ) class TaurusItemConf(object): """An object to hold an item of the TaurusCurveItemTableModel""" def __init__(self, YModel=None, XModel=None, name=None): self.x = Component(XModel) self.y = Component(YModel) self.xModel = XModel self.yModel = YModel self.curveLabel = name def __repr__(self): ret = "TaurusItemConf(xModel='%s', yModel='%s')" % ( self.xModel, self.yModel, ) return ret class TaurusCurveItemTableModel(Qt.QAbstractTableModel): """ A Qt data model for describing curves""" dataChanged = Qt.pyqtSignal("QModelIndex", "QModelIndex") def __init__(self, taurusItems=None): super(TaurusCurveItemTableModel, self).__init__() self.ncolumns = NUMCOLS self.taurusItems = list(taurusItems) def dumpData(self): """ Return all the TaurusCurveItem configurations :return: a copy of the items in the model """ return copy.copy(self.taurusItems) def rowCount(self, index=Qt.QModelIndex()): """Reimplemented from :class:`QAbstractTableModel`""" return len(self.taurusItems) def columnCount(self, index=Qt.QModelIndex()): """Reimplemented from :class:`QAbstractTableModel`""" return self.ncolumns def swapItems(self, index1, index2): """ swap the items described by index1 and index2 in the list""" r1, r2 = index1.row(), index2.row() items = self.taurusItems self.layoutAboutToBeChanged.emit() items[r1], items[r2] = items[r2], items[r1] self.dataChanged.emit(index1, index2) self.layoutChanged.emit() def data(self, index, role=Qt.Qt.DisplayRole): """Reimplemented from :class:`QAbstractTableModel`""" if not index.isValid() or not (0 <= index.row() < self.rowCount()): return None row = index.row() column = index.column() # Display Role if role == Qt.Qt.DisplayRole: if column == X: return str(self.taurusItems[row].x.display) elif column == Y: return str(self.taurusItems[row].y.display) elif column == TITLE: if self.taurusItems[row].curveLabel is None: return "" if isinstance(self.taurusItems[row].curveLabel, str): return str(self.taurusItems[row].curveLabel) return str(self.taurusItems[row].curveLabel[1]) else: return None elif role == Qt.Qt.DecorationRole: if column == X: return self.taurusItems[row].x.icon elif column == Y: return self.taurusItems[row].y.icon else: return None elif role == Qt.Qt.ForegroundRole: if column == X: Qt.QColor(self.taurusItems[row].x.ok and "green" or "red") elif column == Y: Qt.QColor(self.taurusItems[row].y.ok and "green" or "red") else: return None elif role == SRC_ROLE: if column == X: return str(self.taurusItems[row].xModel) elif column == Y: return str(self.taurusItems[row].yModel) else: return None elif role == Qt.Qt.ToolTipRole: if column == X: return str(self.taurusItems[row].xModel) elif column == Y: return str(self.taurusItems[row].yModel) else: return None if role == Qt.Qt.EditRole: if column == X: if self.taurusItems[row].xModel is None: return "" return str(self.taurusItems[row].xModel) elif column == Y: if self.taurusItems[row].yModel is None: return "" return str(self.taurusItems[row].yModel) elif column == TITLE: if self.taurusItems[row].curveLabel is None: return "" if isinstance(self.taurusItems[row].curveLabel, str): return str(self.taurusItems[row].curveLabel) return str(self.taurusItems[row].curveLabel[1]) else: return None return None def headerData(self, section, orientation, role=Qt.Qt.DisplayRole): """Reimplemented from :class:`QAbstractTableModel`""" if role == Qt.Qt.TextAlignmentRole: if orientation == Qt.Qt.Horizontal: return int(Qt.Qt.AlignLeft | Qt.Qt.AlignVCenter) return int(Qt.Qt.AlignRight | Qt.Qt.AlignVCenter) if role != Qt.Qt.DisplayRole: return None # So this is DisplayRole... if orientation == Qt.Qt.Horizontal: if section == X: return "X source" elif section == Y: return "Y Source" elif section == TITLE: return "Title" return None else: return str(section + 1) def flags(self, index): """Reimplemented from :class:`QAbstractTableModel`""" # use this to set the editable flag when fix is selected if not index.isValid(): return Qt.Qt.ItemIsEnabled column = index.column() if column in (X, Y): return Qt.Qt.ItemFlags( Qt.Qt.ItemIsEnabled | Qt.Qt.ItemIsEditable | Qt.Qt.ItemIsDragEnabled | Qt.Qt.ItemIsDropEnabled | Qt.Qt.ItemIsSelectable ) elif column == TITLE: return Qt.Qt.ItemFlags( Qt.Qt.ItemIsEnabled | Qt.Qt.ItemIsEditable | Qt.Qt.ItemIsDragEnabled ) return Qt.Qt.ItemFlags( Qt.Qt.ItemIsEnabled | Qt.Qt.ItemIsEditable | Qt.Qt.ItemIsDragEnabled ) def setData(self, index, value=None, role=Qt.Qt.EditRole): """Reimplemented from :class:`QAbstractTableModel`""" if index.isValid() and (0 <= index.row() < self.rowCount()): row = index.row() curve = self.taurusItems[row] column = index.column() if column == X: curve.xModel = value curve.x.processSrc(value) elif column == Y: curve.yModel = value curve.y.processSrc(value) elif column == TITLE: curve.curveLabel = value self.dataChanged.emit(index, index) return True return False def insertRows(self, position=None, rows=1, parentindex=None): """Reimplemented from :class:`QAbstractTableModel`""" if position is None: position = self.rowCount() if parentindex is None: parentindex = Qt.QModelIndex() self.beginInsertRows(parentindex, position, position + rows - 1) slice = [TaurusItemConf() for i in range(rows)] self.taurusItems = ( self.taurusItems[:position] + slice + self.taurusItems[position:] ) self.endInsertRows() return True def removeRows(self, position, rows=1, parentindex=None): """Reimplemented from :class:`QAbstractTableModel`""" if parentindex is None: parentindex = Qt.QModelIndex() self.beginResetModel() self.beginRemoveRows(parentindex, position, position + rows - 1) self.taurusItems = ( self.taurusItems[:position] + self.taurusItems[position + rows :] ) self.endRemoveRows() self.endResetModel() return True def clearAll(self): """Remove all entries""" self.removeRows(0, self.rowCount()) def mimeTypes(self): """Reimplemented from :class:`QAbstractTableModel`""" result = list(Qt.QAbstractTableModel.mimeTypes(self)) result += [TAURUS_ATTR_MIME_TYPE, "text/plain"] return result def dropMimeData(self, data, action, row, column, parent): """Reimplemented from :class:`QAbstractTableModel`""" if row == -1: if parent.isValid(): row = parent.row() else: row = parent.rowCount() if column == -1: if parent.isValid(): column = parent.column() else: column = parent.columnCount() if data.hasFormat(TAURUS_ATTR_MIME_TYPE): model = bytes(data.data(TAURUS_ATTR_MIME_TYPE)).decode("utf-8") self.setData(self.index(row, column), value=model) return True elif data.hasFormat(TAURUS_MODEL_LIST_MIME_TYPE): d = bytes(data.data(TAURUS_MODEL_LIST_MIME_TYPE)) models = d.decode("utf-8").split() if len(models) == 1: self.setData(self.index(row, column), value=models[0]) return True else: self.insertRows(row, len(models)) for i, m in enumerate(models): self.setData(self.index(row + i, column), value=m) return True elif data.hasText(): self.setData(self.index(row, column), data.text()) return True return False def mimeData(self, indexes): """Reimplemented from :class:`QAbstractTableModel`""" mimedata = Qt.QAbstractTableModel.mimeData(self, indexes) if len(indexes) == 1: # mimedata.setData(TAURUS_ATTR_MIME_TYPE, data) data = self.data(indexes[0], role=SRC_ROLE) mimedata.setText(data) return mimedata # mimedata.setData() @UILoadable(with_ui="ui") class TaurusItemConfDlg(Qt.QWidget): """ A configuration dialog for creating new CurveItems. Provides a TaurusModelBrowser for Taurus models and an editable table for the sources and title of data """ dataChanged = Qt.pyqtSignal("QModelIndex", "QModelIndex") applied = Qt.pyqtSignal() def __init__(self, parent=None, taurusItemsConf=None, showXcol=True): super(TaurusItemConfDlg, self).__init__(parent) self.loadUi() self._showXcol = showXcol if taurusItemsConf is None: taurusItemsConf = [ TaurusItemConf(YModel=None, XModel=None, name=None) ] # @todo: The action for this button is not yet implemented self.ui.reloadBT.setEnabled(False) self.model = TaurusCurveItemTableModel(taurusItemsConf) self._toolbar = Qt.QToolBar("Selector toolbar") self.ui.horizontalLayout_2.addWidget(self._toolbar) self._toolbar.setIconSize(Qt.QSize(16, 16)) self._toolbar.addAction( Qt.QIcon.fromTheme("list-add"), "Add row", self._onAddAction ) self._removeAction = self._toolbar.addAction( Qt.QIcon.fromTheme("list-remove"), "Remove selected row", self._onRemoveThisAction, ) self._removeAllAction = self._toolbar.addAction( Qt.QIcon.fromTheme("edit-clear"), "Remove all rows", self._onClearAll, ) self._moveUpAction = self._toolbar.addAction( Qt.QIcon.fromTheme("go-up"), "Move up the row", self._onMoveUpAction, ) self._moveDownAction = self._toolbar.addAction( Qt.QIcon.fromTheme("go-down"), "Move down the row", self._onMoveDownAction, ) table = self.ui.curvesTable table.setModel(self.model) table.setColumnHidden(X, not self._showXcol) selectionmodel = table.selectionModel() selectionmodel.selectionChanged.connect(self._onSelectionChanged) # ------------------------------------------------------------------- # I get "UnboundLocalError: local variable 'taurus' referenced before # assignment" if I don't import taurus again here # TODO: check if this workaround is really needed import taurus # noqa # ------------------------------------------------------------------- modelSelector = TaurusModelSelector(parent=self) self.ui.verticalLayout.addWidget(modelSelector) # Connections self.ui.applyBT.clicked.connect(self.onApply) self.ui.reloadBT.clicked.connect(self.onReload) self.ui.cancelBT.clicked.connect(self.close) self.ui.curvesTable.customContextMenuRequested.connect( self.onTableContextMenu ) modelSelector.modelsAdded.connect(self.onModelsAdded) def onTableContextMenu(self, pos): """ Shows the context menu options for the selected item in the curves table. """ index = self.ui.curvesTable.indexAt(pos) row = index.row() menu = Qt.QMenu(self.ui.curvesTable) if row >= 0: menu.addAction( Qt.QIcon.fromTheme("list-remove"), "Remove this curve", self._onRemoveThisAction, ) menu.addAction( Qt.QIcon.fromTheme("edit-clear"), "Clear all", self.model.clearAll ) menu.addAction( Qt.QIcon.fromTheme("list-add"), "Add new row", self.model.insertRows, ) menu.exec_(Qt.QCursor.pos()) def _onSelectionChanged(self): """ Modify the status of the actions""" selected = self.ui.curvesTable.selectedIndexes() rows = [] for item in selected: if item.row() not in rows: rows.append(item.row()) lrows = len(rows) row = self.ui.curvesTable.currentIndex().row() isLastElem = row == self.model.rowCount() - 1 isFirstElem = row == 0 self._removeAction.setEnabled(lrows == 1) self._moveUpAction.setEnabled(lrows == 1 and not isFirstElem) self._moveDownAction.setEnabled(lrows == 1 and not isLastElem) def _onAddAction(self): """ Add a new row""" self.model.insertRows() self._removeAllAction.setEnabled(True) def _onRemoveThisAction(self): """ Remove the selected row""" row = self.ui.curvesTable.currentIndex().row() self.model.removeRows(row) if self.model.rowCount() == 0: self._removeAllAction.setEnabled(False) def _onClearAll(self): """ Remove all rows""" self.model.clearAll() self._removeAction.setEnabled(False) self._moveUpAction.setEnabled(False) self._moveDownAction.setEnabled(False) self._removeAllAction.setEnabled(False) def _onMoveUpAction(self): """ Move up action swap the selected row with the previous one""" i1 = self.ui.curvesTable.currentIndex() i2 = self.ui.curvesTable.model().index(i1.row() - 1, 0) self.__commitAndCloseEditor(i1) self.model.swapItems(i1, i2) self.ui.curvesTable.setCurrentIndex(i2) def _onMoveDownAction(self): """ Move down action swap the selected row with the next one""" i1 = self.ui.curvesTable.currentIndex() i2 = self.ui.curvesTable.model().index(i1.row() + 1, 0) self.__commitAndCloseEditor(i1) self.model.swapItems(i1, i2) self.ui.curvesTable.setCurrentIndex(i2) def __commitAndCloseEditor(self, idx): """if an editor is open, commit the data and close it before moving :param idx: qmodel index """ w = self.ui.curvesTable.indexWidget(idx) if w is not None: self.ui.curvesTable.commitData(w) self.ui.curvesTable.closePersistentEditor(idx) def onModelsAdded(self, models): """Slot called when the method selector adds som new item""" nmodels = len(models) rowcount = self.model.rowCount() self.model.insertRows(rowcount, nmodels) for i, m in enumerate(models): if isinstance(m, str): modelx, modely = None, m else: modelx, modely = m if modelx is not None: self.model.setData( self.model.index(rowcount + i, X), value=modelx ) self.model.setData(self.model.index(rowcount + i, Y), value=modely) title = self.model.data( self.model.index(rowcount + i, Y) ) # the display data # print type(title), title self.model.setData( self.model.index(rowcount + i, TITLE), value=title ) def getItemConfs(self): """ Return the item Return all the TaurusCurveItem configurations :return: (list) """ return self.model.dumpData() @staticmethod def showDlg(parent=None, taurusItemConf=None, showXCol=True): """ Static method that launches a modal dialog containing a TaurusItemConfDlg. For the parameters, see :class:`TaurusItemConfDlg` :return: (list,bool) Returns a models,ok tuple models is a list of models. ok is True if the dialog was accepted (by clicking on the "update" button) and False otherwise """ dlg = Qt.QDialog(parent) dlg.setWindowTitle("Curves Selection") layout = Qt.QVBoxLayout() w = TaurusItemConfDlg( parent=parent, taurusItemsConf=taurusItemConf, showXcol=showXCol ) layout.addWidget(w) dlg.setLayout(layout) w.applied.connect(dlg.accept) w.ui.cancelBT.clicked.connect(dlg.close) dlg.exec_() return w.getItemConfs(), (dlg.result() == dlg.Accepted) def onApply(self): """ Slot called when the Apply button is clicked. It emits the `applied` signal """ self.applied.emit() def onReload(self): """ Slot called when the Reload button is clicked. TODO: implement (for now it does nothing) """ # TODO print("RELOAD!!! (todo)") if __name__ == "__main__": from taurus.qt.qtgui.application import TaurusApplication import sys app = TaurusApplication(cmd_line_parser=None) TaurusItemConfDlg.showDlg() sys.exit(app.exec_()) curvespropertiestool.py000066400000000000000000000205111514602004300331340ustar00rootroot00000000000000taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/taurus_pyqtgraph#!/usr/bin/env python ############################################################################# ## # This file is part of Taurus ## # http://taurus-scada.org ## # Copyright 2011 CELLS / ALBA Synchrotron, Bellaterra, Spain ## # Taurus is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. ## # Taurus is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. ## # You should have received a copy of the GNU Lesser General Public License # along with Taurus. If not, see . ## ############################################################################# __all__ = ["CurvesPropertiesTool"] from taurus.external.qt import QtGui, Qt from taurus.external.qt import QtCore from taurus.qt.qtcore.configuration import BaseConfigurableClass from taurus_pyqtgraph.curveproperties import ( get_properties_from_curves, set_properties_on_curves, CurvesAppearanceChooser, ) import pyqtgraph def _isStepModeSupported(): """ check if pyqtgraph has left/right stepMode support (introduced in v>0.11.0) """ # TODO: to be removed when we bump pyqtgraph dependency to v> 0.11.0 import numpy x = numpy.arange(4) y = numpy.arange(3) c = pyqtgraph.PlotCurveItem(stepMode="__nonexisting_step_mode__") try: c.generatePath(x, y) except ValueError: # will raise ValueError if # https://github.com/pyqtgraph/pyqtgraph/pull/1360 is implemented return True return False class CurvesPropertiesTool(QtGui.QAction, BaseConfigurableClass): """ This tool inserts an action in the menu of the :class:`pyqtgraph.PlotItem` to which it is attached to show a dialog for editing curve properties. It is implemented as an Action, and provides a method to attach it to a PlotItem. It provides the curveAppearanceChanged signal that is emitted whenever the appearance of any curve is changed from the dialog. The signal provides a dictionary with the curves changed and the properties that have been changed. Signature: curveAppearanceChanged(changedPropertiesDict) Example of use: tool = CurvesPropertiesTool() tool.attachToPlotItem(plot_item, y2=y2ViewBox) tool.curveAppearanceChanged.connect(your_handler) Example of return: {'rand()[0]': {'cFill': 0.0, 'lStyle': 2, 'sColor': , 'sFill': True, 'sSize': 3, 'sStyle': 'p' }, 'ampli[0]': {'cFill: 1.0'} } """ autoApply = False curveAppearanceChanged = Qt.pyqtSignal(object) # (changedPropertiesDict) def __init__(self, parent=None): BaseConfigurableClass.__init__(self) QtGui.QAction.__init__(self, "Plot configuration", parent) self.triggered.connect(self._onTriggered) self.plot_item = None self.Y2Axis = None self.enabledOptionsDict = None self.registerConfigProperty( self._getCurveAppearanceProperties, self._setCurveAppearanceProperties, "CurveProperties", ) self.registerConfigProperty( self._getBackgroundColor, self._setBackgroundColor, "PlotBackground", ) def _getBackgroundColor(self): try: return self.plot_item.scene().parent().backgroundBrush().color() except Exception: import taurus taurus.debug("Cannot get plot background. Revert to 'default'") return "default" def _setBackgroundColor(self, color): self.plot_item.scene().parent().setBackground(color) def attachToPlotItem(self, plot_item, y2=None): """ Use this method to add this tool to a plot :param plot_item: (PlotItem) :param y2: (Y2ViewBox) instance of the Y2Viewbox attached to plot_item if the axis change controls are to be used """ self.plot_item = plot_item menu = plot_item.getViewBox().menu menu.addAction(self) self.Y2Axis = y2 def _onTriggered(self): props = self._getCurveAppearanceProperties() curves = self.getModifiableItems() dlg = Qt.QDialog(parent=self.parent()) dlg.setWindowTitle("Plot Configuration") layout = Qt.QVBoxLayout() curve_appearance_dialog = CurvesAppearanceChooser( parent=dlg, curvePropDict=props, curvesDict=curves, showButtons=True, autoApply=self.autoApply, plotItem=self.plot_item, Y2Axis=self.Y2Axis, appearanceChangedSignal=self.curveAppearanceChanged, enabledOptionsDict=self.enabledOptionsDict ) if not _isStepModeSupported(): curve_appearance_dialog.stepModeCB.setEnabled(False) layout.addWidget(curve_appearance_dialog) dlg.setLayout(layout) dlg.exec_() def getModifiableItems(self): """ Return a list of curves in the plotItem to which this tool is attached and which properties are modifiable with this tool. It ignores those curves that define `._UImodifiable=False` """ data_items = self.plot_item.listDataItems() # checks in all ViewBoxes from plot_item, # looking for data_items (Curves). for item in self.plot_item.scene().items(): if isinstance(item, pyqtgraph.ViewBox): for data in item.addedItems: if data not in data_items: data_items.append(data) # The dialog will ignore curves that define `._UImodifiable=False` modifiable_items = {} for item in data_items: if getattr(item, "_UImodifiable", True): modifiable_items[item.name()] = item return modifiable_items def setEnabledOptionsDict(self, optionsDict): """ Set the enabledOptionsDict attribute that controls which options are enabled in the dialog. :param optionsDict: dict with the structure: { "applyBT": True, "assignToY1BT": True, "assignToY2BT": True, "bckgndBT": True, "curvesLW": True, "dialogEnabled": True, "lineGB": True, "otherGB": True, "resetBT": True, "symbolGB": True, "xAxisGB": True, } """ self.enabledOptionsDict = optionsDict def _getCurveAppearanceProperties(self): return get_properties_from_curves(self.getModifiableItems()) def _setCurveAppearanceProperties(self, props): curves = self.getModifiableItems() set_properties_on_curves( props, curves, plotItem=self.plot_item, y2Axis=self.Y2Axis ) if __name__ == "__main__": import sys import numpy import pyqtgraph as pg from taurus_pyqtgraph import TaurusPlotDataItem from taurus.qt.qtgui.application import TaurusApplication app = TaurusApplication() # a standard pyqtgraph plot_item w = pg.PlotWidget() # add legend to the plot, for that we have to give a name to plot items w.addLegend() # add a Y2 axis from taurus_pyqtgraph import Y2ViewBox y2ViewBox = Y2ViewBox() y2ViewBox.attachToPlotItem(w.getPlotItem()) # adding a regular data item (non-taurus) c1 = pg.PlotDataItem( name="st plot", pen=dict(color="y", width=3, style=QtCore.Qt.DashLine), fillLevel=0.3, fillBrush="g", ) c1.setData(numpy.arange(300) / 300.0) w.addItem(c1) # adding a taurus data item c2 = TaurusPlotDataItem( name="st2 plot", pen="r", symbol="o", symbolSize=10 ) c2.setModel("sys/tg_test/1/wave") w.addItem(c2) # attach tool to plot item of the PlotWidget tool = CurvesPropertiesTool() tool.attachToPlotItem(w.getPlotItem(), y2=y2ViewBox) w.show() # directly trigger the tool tool.trigger() sys.exit(app.exec_()) datainspectortool.py000066400000000000000000000243261514602004300323600ustar00rootroot00000000000000taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/taurus_pyqtgraph#!/usr/bin/env python ############################################################################# ## # This file is part of Taurus ## # http://taurus-scada.org ## # Copyright 2011 CELLS / ALBA Synchrotron, Bellaterra, Spain ## # Taurus is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. ## # Taurus is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. ## # You should have received a copy of the GNU Lesser General Public License # along with Taurus. If not, see . ## ############################################################################# from datetime import datetime import numpy from taurus.external.qt import Qt from taurus.qt.qtcore.configuration import BaseConfigurableClass from taurus_pyqtgraph import DateAxisItem from pyqtgraph import SignalProxy, InfiniteLine, TextItem, PlotDataItem, Point class DataInspectorLine(InfiniteLine): """ DataInspectorLine provides a moveable vertical line item that shows labels containing the coordinates of the points of existing curves it touches. It provides a method to attach it to a PlotItem. """ def __init__( self, date_format="%Y-%m-%d %H:%M:%S", x_format="0.4f", y_format="0.4f", trigger_point_size=10, ): """ :param date_format: format string (as in strftime) for displaying dates :param x_format: format specifier for displaying the x values :param y_format: format specifier for displaying the y values :param trigger_point_size: width (in pixels) of the inspected area (points will be picked only if they are within this size) """ super(DataInspectorLine, self).__init__(angle=90, movable=True) self._labels = [] self._highlights = [] self._plot_item = None self.setPen((255, 153, 0)) # Set movable False to avoid color flickering between pen and hoverPen self.setMovable(False) self._date_format = "{:" + date_format + "}" self._x_format = "{:" + x_format + "}" self._y_format = "{:" + y_format + "}" self.trigger_point_size = trigger_point_size self._label_style = "background-color: #35393C;" self.sigPositionChanged.connect(self._inspect) def _inspect(self): """ check if the line position matches (in widget coordinates) the position of a point of a given curve. If so, add a highlight point and a label in the corresponding viewbox. """ # remove labels (text and highlight points) self._removeLabels() # group curves to be inspected, by their viewbox vb_curves = {} for c in self._plot_item.curves: if getattr(c, "xData", None) is not None: vb = c.getViewBox() if vb not in vb_curves: vb_curves[vb] = [] vb_curves[vb].append(c) # inspect the curves of each viewbox for vb, curves in vb_curves.items(): self._inspect_curves_in_viewbox(curves, vb) def _inspect_curves_in_viewbox(self, curves, viewbox): # map position of the line to the viewbox coordinates xpos = viewbox.mapFromItemToView(self, self.pos()).x() # find out the screen pixel size in the viewbox coordinates x_px_size, _ = viewbox.viewPixelSize() points = [] # picked points, grouped by their viewbox # iterate over the curves for c in curves: # ignore curves with no data if len(c.xData) == 0: continue # find the index of the closest point of this curve adiff = numpy.abs(c.xData - xpos) idx = numpy.argmin(adiff) # only add a label if the closest point is within tolerance tolerance = 0.5 * self.trigger_point_size * x_px_size if adiff[idx] < tolerance: points.append((c.xData[idx], c.yData[idx], c.name())) if curves: logMode = curves[0].opts["logMode"] else: logMode = None self._createLabels(points, viewbox, logMode) def _createLabels(self, points, viewbox, logMode): points_no_name = [] for x, y, name in points: # fill the text xtext = self._getXText(x) ytext = self._getYText(y) text_item = TextItem() text_item.setHtml( ( "

" ).format(self._label_style, name, xtext, ytext) ) # add text_item in the right position (take into account log mode) if logMode[0]: x = numpy.log10(x) if logMode[1]: y = numpy.log10(y) # flip text if x pos + width > max x if ( viewbox.itemBoundingRect(text_item).width() + x > viewbox.viewRange()[0][1] ): text_item.anchor = Point(1, 1) text_item.setPos(x, y) self._labels.append(text_item) viewbox.addItem(text_item, ignoreBounds=True) points_no_name.append((x, y)) # Add "highlight" marker at each point highlight = PlotDataItem( numpy.array(points_no_name), pen=None, symbol="s", symbolBrush=0x35393C88, pxMode=True, symbolSize=self.trigger_point_size, ) # set log mode highlight.setLogMode(*logMode) # hack to make the CurvesPropertiesTool ignore the highlight points highlight._UImodifiable = False # Add it to the vbox and keep a reference viewbox.addItem(highlight, ignoreBounds=True) self._highlights.append(highlight) def _getXText(self, x): """ Helper method converting x value to time if necessary :param x: current x value :return: time or normal x value (depends of the x axis type) """ x_axis = self._plot_item.getAxis("bottom") if isinstance(x_axis, DateAxisItem): return self._date_format.format(datetime.fromtimestamp(x)) else: return self._x_format.format(x) def _getYText(self, y): return self._y_format.format(y) def _removeLabels(self): # remove existing texts labels and highlights for item in self._labels + self._highlights: item.getViewBox().removeItem(item) self._labels = [] self._highlights = [] def attachToPlotItem(self, plot_item): """ Method to attach :class:`DataInspectorLine` to the plot :param plot: to attach """ self._plot_item = plot_item self._plot_item.addItem(self, ignoreBounds=True) def dettach(self): """ Method use to detach the class:`DataInspectorLine` from the plot """ self._removeLabels() self._plot_item.removeItem(self) self._plot_item = None class DataInspectorTool(Qt.QWidgetAction, BaseConfigurableClass): """ This tool inserts an action in the menu of the :class:`pyqtgraph.PlotItem` to which it is attached. When activated, the data inspection mode is entered (a :class:`DataInspectorLine` is added and it follows the mouse, allowing the user to inspect the coordinates of existing curves). It is implemented as an Action, and provides a method to attach it to a PlotItem. """ def __init__(self, parent=None): BaseConfigurableClass.__init__(self) Qt.QWidgetAction.__init__(self, parent) self._cb = Qt.QCheckBox() self._cb.setText("Data Inspector") self._cb.toggled.connect(self._onToggled) self.setDefaultWidget(self._cb) self.plot_item = None self.enable = False self.data_inspector = DataInspectorLine() self.registerConfigProperty(self.isChecked, self.setChecked, "checked") def attachToPlotItem(self, plot_item): """ Use this method to add this tool to a plot :param plot_item: (PlotItem) :param y2: (Y2ViewBox) instance of the Y2Viewbox attached to plot_item if the axis change controls are to be used """ self.plot_item = plot_item menu = plot_item.getViewBox().menu menu.addAction(self) def _onToggled(self): if not self.enable: self.data_inspector.attachToPlotItem(self.plot_item) # Signal Proxy which connect the movement of the mouse with # the onMoved method in the data inspector object self.proxy = SignalProxy( self.plot_item.scene().sigMouseMoved, rateLimit=60, slot=self._followMouse, ) self.enable = True # auto-close the menu so that the user can start inspecting self.plot_item.getViewBox().menu.close() else: self.proxy.disconnect() self.data_inspector.dettach() self.enable = False def _followMouse(self, evt): mouse_pos = evt[0] inspector_x = self.plot_item.vb.mapSceneToView(mouse_pos).x() self.data_inspector.setPos(inspector_x) if __name__ == "__main__": from taurus.qt.qtgui.application import TaurusApplication import pyqtgraph as pg import sys app = TaurusApplication() w = pg.PlotWidget(title="[hint: enable inspector mode from context menu]") w.plot(y=numpy.arange(4), pen="r", symbol="o") w.plot(y=numpy.random.rand(4), pen="c") w.plot( x=numpy.linspace(0, 3, 40), y=1 + numpy.random.rand(40), pen="w", symbol="+", ) t = DataInspectorTool(w) t.attachToPlotItem(w.getPlotItem()) w.show() sys.exit(app.exec_()) taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/taurus_pyqtgraph/dateaxisitem.py000066400000000000000000000272111514602004300313560ustar00rootroot00000000000000#!/usr/bin/env python ############################################################################# ## # This file is part of Taurus ## # http://taurus-scada.org ## # Copyright 2011 CELLS / ALBA Synchrotron, Bellaterra, Spain ## # Taurus is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. ## # Taurus is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. ## # You should have received a copy of the GNU Lesser General Public License # along with Taurus. If not, see . ## ############################################################################# """ This module provides date-time aware axis """ __all__ = ["DateAxisItem"] # ------------------------------------------------------------------------- # There is a conflict problem with PyQt versions. Pyqtgraph imports his own # library of PyQt, and Taurus too. So we have to import Qt from own version # first as a workaround for forcing our own (as a workaround) from taurus.external.qt import Qt # noqa # ------------------------------------------------------------------------- import numpy from pyqtgraph import AxisItem from datetime import datetime, timedelta from time import mktime from taurus.external.qt import QtWidgets _AXIS_INDEX = {"bottom": 0, "top": 0, "left": 1, "right": 1, "X": 0, "Y": 1} class DateAxisItem(AxisItem): """ A tool that provides a date-time aware axis. It is implemented as an AxisItem that interprets positions as unix timestamps (i.e. seconds since 1970). The labels and the tick positions are dynamically adjusted depending on the range. It provides a :meth:`attachToPlotItem` method to add it to a given PlotItem """ # TODO: Document this class and methods # Max width in pixels reserved for each label in axis _pxLabelWidth = 80 def __init__(self, *args, **kwargs): AxisItem.__init__(self, *args, **kwargs) self._oldAxis = None self._minDTE = None self._maxDTE = None self._setAxisRange = None self._manualRadio = None def tickValues(self, minVal, maxVal, size): """ Reimplemented from PlotItem to adjust to the range and to force the ticks at "round" positions in the context of time units instead of rounding in a decimal base """ maxMajSteps = int(size // self._pxLabelWidth) dx = maxVal - minVal majticks = [] try: dt1 = datetime.fromtimestamp(minVal) dt2 = datetime.fromtimestamp(maxVal) except Exception as e: from taurus import warning warning("Invalid range in DateTime axis: %s", e) return [(dx, [])] if dx > 63072001: # 3600s*24*(365+366) = 2 years (count leap year) d = timedelta(days=366) for y in range(dt1.year + 1, dt2.year + 1): dt = datetime(year=y, month=1, day=1) majticks.append(mktime(dt.timetuple())) elif dx > 5270400: # 3600s*24*61 = 61 days d = timedelta(days=31) dt = ( dt1.replace(day=1, hour=0, minute=0, second=0, microsecond=0) + d ) while dt < dt2: # make sure that we are on day 1 (even if always sum 31 days) dt = dt.replace(day=1) majticks.append(mktime(dt.timetuple())) dt += d elif dx > 172800: # 3600s24*2 = 2 days d = timedelta(days=1) dt = dt1.replace(hour=0, minute=0, second=0, microsecond=0) + d while dt < dt2: majticks.append(mktime(dt.timetuple())) dt += d elif dx > 7200: # 3600s*2 = 2hours d = timedelta(hours=1) dt = dt1.replace(minute=0, second=0, microsecond=0) + d while dt < dt2: majticks.append(mktime(dt.timetuple())) dt += d elif dx > 1200: # 60s*20 = 20 minutes d = timedelta(minutes=10) dt = ( dt1.replace( minute=(dt1.minute // 10) * 10, second=0, microsecond=0 ) + d ) while dt < dt2: majticks.append(mktime(dt.timetuple())) dt += d elif dx > 120: # 60s*2 = 2 minutes d = timedelta(minutes=1) dt = dt1.replace(second=0, microsecond=0) + d while dt < dt2: majticks.append(mktime(dt.timetuple())) dt += d elif dx > 20: # 20s d = timedelta(seconds=10) dt = dt1.replace(second=(dt1.second // 10) * 10, microsecond=0) + d while dt < dt2: majticks.append(mktime(dt.timetuple())) dt += d elif dx > 2: # 2s d = timedelta(seconds=1) # majticks = list(range(int(minVal), int(maxVal))) majticks = list( range(int(numpy.ceil(minVal)), int(numpy.ceil(maxVal))) ) else: # <2s , use standard implementation from parent return AxisItem.tickValues(self, minVal, maxVal, size) # print("majticks >: ", majticks) L = len(majticks) if L > maxMajSteps: if maxMajSteps == 0: majticks = [] else: majticks = majticks[:: int(numpy.ceil(float(L) / maxMajSteps))] # print("majticks <: ", majticks) # print "----------------------------" return [(d.total_seconds(), majticks)] def tickStrings(self, values, scale, spacing): """Reimplemented from PlotItem to adjust to the range""" ret = [] if not values: return [] # rng = max(values)-min(values) # print('values: ', values) # print('scale: ', scale) # print('spacing: ', spacing) if spacing >= 31622400: # = timedelta(days=366).total_seconds fmt = "%Y" elif spacing >= 2678400: # = timedelta(days=31).total_seconds fmt = "%Y %b" elif spacing >= 86400: # = timedelta(days = 1).total_seconds fmt = "%b/%d" elif spacing >= 3600: # = timedelta(hours=1).total_seconds fmt = "%b/%d-%Hh" elif spacing >= 600: # = timedelta(minutes=10).total_seconds fmt = "%H:%M" elif spacing >= 60: # = timedelta(minutes=1).total_seconds fmt = "%H:%M" elif spacing >= 10: # 10 s fmt = "%H:%M:%S" elif spacing >= 1: # 1s fmt = "%H:%M:%S" else: # less than 2s (show microseconds) # fmt = '%S.%f"' fmt = "[+%fms]" # explicitly relative to last second for x in values: try: t = datetime.fromtimestamp(x) ret.append(t.strftime(fmt)) except ValueError: # Windows can't handle dates before 1970 ret.append("") return ret def attachToPlotItem(self, plotItem): """Add this axis to the given PlotItem :param plotItem: (PlotItem) """ self.setParentItem(plotItem) viewBox = plotItem.getViewBox() self.linkToView(viewBox) self._oldAxis = plotItem.axes[self.orientation]["item"] self._oldAxis.hide() plotItem.axes[self.orientation]["item"] = self pos = plotItem.axes[self.orientation]["pos"] plotItem.layout.addItem(self, *pos) self.setZValue(-1000) # initialize the datetime editors for the axis menu widgets self._minDTE = Qt.QDateTimeEdit() self._maxDTE = Qt.QDateTimeEdit() self._minDTE.setCalendarPopup(True) self._minDTE.setDisplayFormat("yyyy-MM-dd hh:mm:ss") self._maxDTE.setCalendarPopup(True) self._maxDTE.setDisplayFormat("yyyy-MM-dd hh:mm:ss") self._minDTE.dateTimeChanged.connect(self._maxDTE.setMinimumDateTime) self._maxDTE.dateTimeChanged.connect(self._minDTE.setMaximumDateTime) # replace the float-based range setting editors by datetime editors axis = _AXIS_INDEX[self.orientation] ctrl = viewBox.menu.ctrl[axis] ly = ctrl.gridLayout xmin_pos = ly.getItemPosition(ly.indexOf(ctrl.minText)) xmax_pos = ly.getItemPosition(ly.indexOf(ctrl.maxText)) ctrl.minText.hide() ctrl.maxText.hide() ly.addWidget(self._minDTE, *xmin_pos) ly.addWidget(self._maxDTE, *xmax_pos) # give room to the datetime editors in the axis menu widget; # In newer PyQtGraph versions (>0.13.1) there is no "menu.axes" # property, yet in older versions the QMenu is not added in # menu.children(). # if the list is empty, it is assumed the version is <0.13.2 for submenu in viewBox.menu.findChildren(QtWidgets.QMenu): axis_name = ('X axis' if axis == 0 else 'Y axis') if submenu.title() == axis_name: w = submenu.actions()[0].defaultWidget() break else: w = viewBox.menu.axes[axis].actions()[0].defaultWidget() w.setMaximumWidth(max(450, w.maximumWidth())) # Update the datetime editors and connect them to view changes self._updateMenu() viewBox.sigStateChanged.connect(self._updateMenu) # connect the datetime changed signals to _onRangeEdited self._setAxisRange = [viewBox.setXRange, viewBox.setYRange][axis] self._minDTE.dateTimeChanged.connect(self._onRangeEdited) self._maxDTE.dateTimeChanged.connect(self._onRangeEdited) # keep a reference to the manual radio button self._manualRadio = ctrl.manualRadio def detachFromPlotItem(self): """Remove this axis from its attached PlotItem (not yet implemented) """ pass # TODO def _onRangeEdited(self): """Change the range when the datetime editors qre edited""" # avoid infinite recursion by only updating when the menu is shown if not self._minDTE.isVisible(): return self._manualRadio.setChecked(True) self._setAxisRange( self._minDTE.dateTime().toMSecsSinceEpoch() / 1000, self._maxDTE.dateTime().toMSecsSinceEpoch() / 1000, padding=0, ) def _updateMenu(self): """Update the datetime editors when the range is changes""" # avoid infinite recursion (and confusion) by only updating when the # menu is not visible if self._minDTE.isVisible(): return view = self.linkedView() state = view.getState(copy=False) axis = _AXIS_INDEX[self.orientation] _min, _max = state["targetRange"][axis] _min = int(numpy.floor(_min)) _max = int(numpy.ceil(_max)) self._minDTE.setDateTime(Qt.QDateTime.fromMSecsSinceEpoch(_min * 1000)) self._maxDTE.setDateTime(Qt.QDateTime.fromMSecsSinceEpoch(_max * 1000)) if __name__ == "__main__": import sys import pyqtgraph as pg from taurus.qt.qtgui.application import TaurusApplication from taurus_pyqtgraph import TaurusPlotDataItem app = TaurusApplication() # a standard pyqtgraph plot_item w = pg.PlotWidget() axis = DateAxisItem(orientation="bottom") axis.attachToPlotItem(w.getPlotItem()) # adding a taurus data item c2 = TaurusPlotDataItem() w.addItem(c2) w.show() sys.exit(app.exec_()) taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/taurus_pyqtgraph/examples/000077500000000000000000000000001514602004300301365ustar00rootroot00000000000000__init__.py000066400000000000000000000017631514602004300321770ustar00rootroot00000000000000taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/taurus_pyqtgraph/examples#!/usr/bin/env python ############################################################################# ## # This file is part of Taurus ## # http://taurus-scada.org ## # Copyright 2011 CELLS / ALBA Synchrotron, Bellaterra, Spain ## # Taurus is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. ## # Taurus is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. ## # You should have received a copy of the GNU Lesser General Public License # along with Taurus. If not, see . ## ############################################################################# """Examples / recipes for usage of taurus with pyqtgraph""" axislabels.py000066400000000000000000000027301514602004300325620ustar00rootroot00000000000000taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/taurus_pyqtgraph/examples#!/usr/bin/env python ############################################################################# ## # This file is part of Taurus ## # http://taurus-scada.org ## # Copyright 2011 CELLS / ALBA Synchrotron, Bellaterra, Spain ## # Taurus is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. ## # Taurus is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. ## # You should have received a copy of the GNU Lesser General Public License # along with Taurus. If not, see . ## ############################################################################# """ This is an example of how to assign specific labels to arbitrary positions of a given axis using AxisItem.setTicks(). (Pure Qt) """ import sys from pyqtgraph.Qt import QtGui import pyqtgraph as pg import numpy as np if __name__ == "__main__": app = QtGui.QApplication([]) w = pg.PlotWidget() # define a list of position,label tuples ticks = [list(zip((1, 2, 3, 7, 8), ("a", "b", "c", "d", "e")))] xax = w.getAxis("bottom") xax.setTicks(ticks) w.plot(np.arange(9)) w.show() sys.exit(app.exec_()) legendExample.py000066400000000000000000000042661514602004300332130ustar00rootroot00000000000000taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/taurus_pyqtgraph/examples#!/usr/bin/env python ############################################################################# ## # This file is part of Taurus ## # http://taurus-scada.org ## # Copyright 2011 CELLS / ALBA Synchrotron, Bellaterra, Spain ## # Taurus is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. ## # Taurus is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. ## # You should have received a copy of the GNU Lesser General Public License # along with Taurus. If not, see . ## ############################################################################# """ Example on how to use a separate widget (LegendItem) for the legend of a plot. (Pure Qt) """ import pyqtgraph as pg from pyqtgraph.Qt import QtGui import sys if __name__ == "__main__": app = QtGui.QApplication([]) # instantiate the main plot plt = pg.PlotWidget() plt.setWindowTitle("pyqtgraph example: PLOT") # instantiate a graphics view to contain the legend gv = QtGui.QGraphicsView(QtGui.QGraphicsScene()) gv.setWindowTitle("pyqtgraph example: Legend") gv.setBackgroundBrush(QtGui.QBrush(QtGui.QColor("black"))) legend = pg.LegendItem(size=(100, 60), offset=(70, 30)) gv.scene().addItem(legend) # create 3 curves c1 = plt.plot( [1, 3, 2, 4], pen="r", symbol="o", symbolPen="r", symbolBrush=0.5, name="red plot", ) c2 = plt.plot( [2, 1, 4, 3], pen="g", fillLevel=0, fillBrush=(255, 255, 255, 30), name="green plot", ) c3 = plt.plot(list(range(7)), pen="c", fillLevel=0) # add the **named** curves to the legend for dataitem in plt.getPlotItem().listDataItems(): if dataitem.name(): legend.addItem(dataitem, dataitem.name()) plt.show() gv.show() sys.exit(app.exec_()) taurusplotdataitem.py000066400000000000000000000034051514602004300343660ustar00rootroot00000000000000taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/taurus_pyqtgraph/examples#!/usr/bin/env python ############################################################################# ## # This file is part of Taurus ## # http://taurus-scada.org ## # Copyright 2011 CELLS / ALBA Synchrotron, Bellaterra, Spain ## # Taurus is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. ## # Taurus is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. ## # You should have received a copy of the GNU Lesser General Public License # along with Taurus. If not, see . ## ############################################################################# """Example on using a tpg.TaurusPlotDataItem on a pure pyqtgraph plot""" if __name__ == "__main__": import sys import numpy from taurus.qt.qtgui.application import TaurusApplication from taurus_pyqtgraph import TaurusPlotDataItem import pyqtgraph as pg app = TaurusApplication() # a standard pyqtgraph plot_item w = pg.PlotWidget() # add legend to the plot, for that we have to give a name to plot items w.addLegend() # add a regular data item (non-taurus) c1 = pg.PlotDataItem(name="pg item", pen="b", fillLevel=0, brush="c") c1.setData(numpy.linspace(0, 2, 250)) w.addItem(c1) # add a taurus data item c2 = TaurusPlotDataItem(name="taurus item", pen="r", symbol="o") c2.setModel('eval:Quantity(rand(256),"m")') w.addItem(c2) w.show() sys.exit(app.exec_()) taurustrendset.py000066400000000000000000000040301514602004300335220ustar00rootroot00000000000000taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/taurus_pyqtgraph/examples#!/usr/bin/env python ############################################################################# ## # This file is part of Taurus ## # http://taurus-scada.org ## # Copyright 2011 CELLS / ALBA Synchrotron, Bellaterra, Spain ## # Taurus is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. ## # Taurus is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. ## # You should have received a copy of the GNU Lesser General Public License # along with Taurus. If not, see . ## ############################################################################# """Example on using a tpg.TaurusTrendSet and some related tools on a pure pyqtgraph plot""" if __name__ == "__main__": import sys from taurus.qt.qtgui.application import TaurusApplication from taurus_pyqtgraph import ( TaurusTrendSet, DateAxisItem, XAutoPanTool, ForcedReadTool, ) import pyqtgraph as pg from taurus.core.taurusmanager import TaurusManager taurusM = TaurusManager() taurusM.changeDefaultPollingPeriod(1000) # ms app = TaurusApplication() # Add a date-time X axis axis = DateAxisItem(orientation="bottom") w = pg.PlotWidget() axis.attachToPlotItem(w.getPlotItem()) # Add the auto-pan ("oscilloscope mode") tool autopan = XAutoPanTool() autopan.attachToPlotItem(w.getPlotItem()) # Add Forced-read tool fr = ForcedReadTool(w, period=1000) fr.attachToPlotItem(w.getPlotItem()) # add legend the legend tool w.addLegend() # adding a taurus data item... c2 = TaurusTrendSet(name="foo") c2.setModel("eval:rand(2)") w.addItem(c2) w.show() sys.exit(app.exec_()) taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/taurus_pyqtgraph/examples/y2axis.py000066400000000000000000000036471514602004300317410ustar00rootroot00000000000000#!/usr/bin/env python ############################################################################# ## # This file is part of Taurus ## # http://taurus-scada.org ## # Copyright 2011 CELLS / ALBA Synchrotron, Bellaterra, Spain ## # Taurus is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. ## # Taurus is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. ## # You should have received a copy of the GNU Lesser General Public License # along with Taurus. If not, see . ## ############################################################################# """Example on using a tpg.Y2ViewBox to provide a secondary Y axis""" from PyQt5 import Qt import pyqtgraph as pg import numpy from taurus_pyqtgraph import Y2ViewBox, CurvesPropertiesTool if __name__ == "__main__": import sys app = Qt.QApplication([]) w = pg.PlotWidget() # add Y2 viewbox (provides a ViewBox associated to bottom & right axes) y2 = Y2ViewBox() y2.attachToPlotItem(w.getPlotItem()) # add a data item to Y1 (just as you would normally) c1 = pg.PlotDataItem(name="c1", pen="c") c1.setData(y=numpy.linspace(0, 20, 250)) w.addItem(c1) # add a data item to Y2 (similar, but adding it to the secondary ViewBox!) c2 = pg.PlotDataItem(name="c2", pen="y") c2.setData(y=numpy.random.rand(250)) y2.addItem(c2) # <- note that it is y2, not w ! # (optional) add CurvesPropertiesTool to switch curves between Y1 and Y2 t = CurvesPropertiesTool() t.attachToPlotItem(w.getPlotItem(), y2=y2) w.show() sys.exit(app.exec_()) taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/taurus_pyqtgraph/exporters.py000066400000000000000000000116051514602004300307300ustar00rootroot00000000000000import csv from datetime import datetime import itertools import os import numpy as np from pyqtgraph.exporters.CSVExporter import Exporter, PlotItem from pyqtgraph.Qt import QtWidgets from pyqtgraph.widgets.FileDialog import FileDialog LastExportDirectory = None class Taurus4TextExporter(Exporter): """ Attempt to imitate the data export format used for taurustrend in Taurus 4 (and maybe older). Tab separated values, with (somewhat) ISO timestamps and a two line info header # DATASET= "tango://tangohost:10000/sys/tg_test/1/double_scalar[0]" # SNAPSHOT_TIME= 2024-01-31_10:22:59.803364 2024-01-31_10:21:50.839317 -214.70028819767657 2024-01-31_10:21:53.840938 -193.20642255951807 2024-01-31_10:21:56.840750 -181.02017659616354 Note that Taurus4 did not support exporting if there several attributes in a single file, but instead wrote to several files called set001.dat, ... """ Name = "Taurus 4 compatible ASCII export" windows = [] def __init__(self, item): Exporter.__init__(self, item) self.index_counter = itertools.count(start=0) self.data = [] self.models = [] def parameters(self): return None def fileSaveDialog(self, filter=None, opts=None, mode=QtWidgets.QFileDialog.FileMode.AnyFile): # Overriding the default method to allow setting the mode if opts is None: opts = {} self.fileDialog = FileDialog() self.fileDialog.setFileMode(mode) self.fileDialog.setAcceptMode( QtWidgets.QFileDialog.AcceptMode.AcceptSave) if filter is not None: if isinstance(filter, str): self.fileDialog.setNameFilter(filter) elif isinstance(filter, list): self.fileDialog.setNameFilters(filter) global LastExportDirectory # noqa: F824 exportDir = LastExportDirectory if exportDir is not None: self.fileDialog.setDirectory(exportDir) self.fileDialog.show() self.fileDialog.opts = opts self.fileDialog.fileSelected.connect(self.fileSaveFinished) def _exportPlotDataItem(self, plotDataItem) -> None: if hasattr(plotDataItem, 'getOriginalDataset'): # try to access unmapped, unprocessed data cd = plotDataItem.getOriginalDataset() else: # fall back to earlier access method cd = plotDataItem.getData() if cd[0] is not None: # data found, append it self.data.append(cd) @staticmethod def _format_row(row): for i, item in enumerate(row): if item and i % 2 == 0: yield datetime.fromtimestamp(item).isoformat(sep="_") continue if isinstance(item, str): yield item continue yield np.format_float_positional(item, precision=10) def export(self, fileName=None): if not isinstance(self.item, PlotItem): raise TypeError("Must have a PlotItem selected for CSV export.") if not self.data: for item in self.item.items: if hasattr(item, "getFullModelName"): self.models.append(item.getFullModelName()) if hasattr(item, 'implements') and item.implements('plotData'): self._exportPlotDataItem(item) single = len(self.data) == 1 if fileName is None: if single: self.fileSaveDialog(filter=["*.csv", "*.tsv"]) else: # For multiple attributes, the Taurus 4 behavior is # to ask for a directory self.fileSaveDialog( mode=QtWidgets.QFileDialog.FileMode.Directory) else: for i, (model, dataset) in enumerate(zip(self.models, self.data), start=1): if single: path = fileName else: path = os.path.join(fileName, f"set{i:03}.dat") print("Saving {} at {}".format(model, path)) with open(path, 'w', newline='') as csvfile: # Write "Taurus 4 like" header # TODO what does the [0] mean here? csvfile.write(f'# DATASET= "{model}[0]"\n') snapshot_time = datetime.now().isoformat(sep="_") csvfile.write(f'# SNAPSHOT_TIME= {snapshot_time}\n') # Write data rows delimiter = "\t" writer = csv.writer(csvfile, delimiter=delimiter, quoting=csv.QUOTE_MINIMAL) for row in itertools.zip_longest(*dataset, fillvalue=""): writer.writerow(self._format_row(row)) self.data.clear() Taurus4TextExporter.register() taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/taurus_pyqtgraph/forcedreadtool.py000066400000000000000000000145371514602004300317000ustar00rootroot00000000000000#!/usr/bin/env python ############################################################################# ## # This file is part of Taurus ## # http://taurus-scada.org ## # Copyright 2011 CELLS / ALBA Synchrotron, Bellaterra, Spain ## # Taurus is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. ## # Taurus is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. ## # You should have received a copy of the GNU Lesser General Public License # along with Taurus. If not, see . ## ############################################################################# __all__ = ["ForcedReadTool"] from taurus.external.qt import QtGui, QtCore from taurus.qt.qtcore.configuration import BaseConfigurableClass class ForcedReadTool(QtGui.QAction, BaseConfigurableClass): """ This tool provides a menu option to control the "Forced Read" period of Plot data items that implement a `setForcedReadPeriod` method (see, e.g. :meth:`TaurusTrendSet.setForcedReadPeriod`). The force-read feature consists on forcing periodic attribute reads for those attributes being plotted with a :class:`TaurusTrendSet` object. This allows to force plotting periodical updates even for attributes for which the taurus polling is not enabled. Note that this is done at the widget level and therefore does not affect the rate of arrival of events for other widgets connected to the same attributes This tool inserts an action with a spinbox and emits a `valueChanged` signal whenever the value is changed. The connection between the data items and this tool can be done manually (by connecting to the `valueChanged` signal or automatically, if :meth:`autoconnect()` is `True` (default). The autoconnection feature works by discovering the compliant data items that share associated to the plot_item. This tool is implemented as an Action, and provides a method to attach it to a :class:`pyqtgraph.PlotItem` """ valueChanged = QtCore.pyqtSignal(int) def __init__( self, parent=None, period=0, text="Change forced read period...", autoconnect=True, ): BaseConfigurableClass.__init__(self) QtGui.QAction.__init__(self, text, parent) tt = "Period between forced readings.\nSet to 0 to disable" self.setToolTip(tt) self._period = period self._autoconnect = autoconnect # register config properties self.registerConfigProperty(self.period, self.setPeriod, "period") self.registerConfigProperty( self.autoconnect, self.setAutoconnect, "autoconnect" ) # internal conections self.triggered.connect(self._onTriggered) def _onTriggered(self): period = self.period() period, ok = QtGui.QInputDialog.getInt( self.parentWidget(), "New read period", "Period (in ms) between forced readings.\nSet to 0 to disable", period, 0, 604800000, 500, ) if ok: self.setPeriod(period) def attachToPlotItem(self, plot_item): """Use this method to add this tool to a plot :param plot_item: (PlotItem) """ menu = plot_item.getViewBox().menu menu.addAction(self) self.plot_item = plot_item # force an update of period for connected trendsets self.setPeriod(self.period()) if self.autoconnect(): # enable the forced reading also for trendsets added in the future try: # requires https://github.com/pyqtgraph/pyqtgraph/pull/1388 plot_item.scene().sigItemAdded.connect(self._onAddedItem) except AttributeError: pass def _onAddedItem(self, item): if hasattr(item, "setForcedReadPeriod"): item.setForcedReadPeriod(self.period()) def autoconnect(self): """Returns autoconnect state :return: (bool) """ return self._autoconnect def setAutoconnect(self, autoconnect): """Set autoconnect state. If True, the tool will autodetect trendsets associated to the plot item and will call setForcedReadPeriod on each of them for each change. If False, it will only emit a valueChanged signal and only those connected to it will be notified of changes :param autoconnect: (bool) """ self._autoconnect = autoconnect def period(self): """Returns the current period value (in ms) :return: (int) """ return self._period def setPeriod(self, period): """Change the period value. Use 0 for disabling :param period: (int) period in ms """ self._period = period # update existing items if self.autoconnect() and self.plot_item is not None: for item in self.plot_item.listDataItems(): if hasattr(item, "setForcedReadPeriod"): item.setForcedReadPeriod(period) # emit valueChanged self.valueChanged.emit(period) if __name__ == "__main__": import taurus taurus.setLogLevel(taurus.Debug) import sys from taurus.qt.qtgui.application import TaurusApplication from taurus_pyqtgraph import TaurusTrendSet, DateAxisItem import pyqtgraph as pg # from taurus_pyqtgraph import ForcedReadTool app = TaurusApplication() w = pg.PlotWidget() axis = DateAxisItem(orientation="bottom") w = pg.PlotWidget() axis.attachToPlotItem(w.getPlotItem()) # test adding the curve before the tool ts1 = TaurusTrendSet(name="before", symbol="o") ts1.setModel("eval:rand()+1") w.addItem(ts1) fr = ForcedReadTool(w, period=1000) fr.attachToPlotItem(w.getPlotItem()) # test adding the curve after the tool ts2 = TaurusTrendSet(name="after", symbol="+") ts2.setModel("eval:rand()") w.addItem(ts2) w.show() ret = app.exec_() import pprint pprint.pprint(fr.createConfig()) sys.exit(ret) taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/taurus_pyqtgraph/legendtool.py000066400000000000000000000054521514602004300310340ustar00rootroot00000000000000#!/usr/bin/env python ############################################################################# ## # This file is part of Taurus ## # http://taurus-scada.org ## # Copyright 2011 CELLS / ALBA Synchrotron, Bellaterra, Spain ## # Taurus is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. ## # Taurus is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. ## # You should have received a copy of the GNU Lesser General Public License # along with Taurus. If not, see . ## ############################################################################# __all__ = ["PlotLegendTool"] from taurus.external.qt import QtGui from taurus.qt.qtcore.configuration import BaseConfigurableClass import pyqtgraph as pg class PlotLegendTool(QtGui.QWidgetAction, BaseConfigurableClass): """ This tool adds a legend to the PlotItem to which it is attached, and it inserts a checkable menu action for showing/hiding the legend. Implementation note: this is implemented as a QWidgetAction+QCheckBox instead of a checkable QAction to avoid closing the menu when toggling it """ def __init__(self, parent=None, **kwargs): BaseConfigurableClass.__init__(self) QtGui.QWidgetAction.__init__(self, parent) self._cb = QtGui.QCheckBox() self._cb.setText("Show legend") self.setDefaultWidget(self._cb) self.registerConfigProperty( self._cb.isChecked, self._cb.setChecked, "checked" ) # TODO: register config prop for legend position self._cb.toggled.connect(self._onToggled) self._legend = None self._legend_kwargs = kwargs def attachToPlotItem(self, plotItem): """ Use this method to add this tool to a plot :param plot_item: (PlotItem) """ self._legend = plotItem.addLegend(**self._legend_kwargs) # if no explicit pen / brush is set, use some nicer defaults if "pen" not in self._legend_kwargs: self._legend.setPen(pg.CONFIG_OPTIONS["foreground"]) if "brush" not in self._legend_kwargs: bcolor = pg.mkColor(pg.CONFIG_OPTIONS["background"]) bcolor.setAlphaF(0.85) self._legend.setBrush(bcolor) self._cb.setChecked(True) menu = plotItem.getViewBox().menu menu.addAction(self) def _onToggled(self, checked): if checked: self._legend.show() else: self._legend.hide() taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/taurus_pyqtgraph/plot.py000066400000000000000000000237121514602004300276550ustar00rootroot00000000000000#!/usr/bin/env python ############################################################################# ## # This file is part of Taurus ## # http://taurus-scada.org ## # Copyright 2011 CELLS / ALBA Synchrotron, Bellaterra, Spain ## # Taurus is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. ## # Taurus is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. ## # You should have received a copy of the GNU Lesser General Public License # along with Taurus. If not, see . ## ############################################################################# from __future__ import absolute_import __all__ = ["TaurusPlot"] import copy import traceback from taurus.external.qt import QtGui, PYSIDE2 from taurus.external.qt.Qt import pyqtProperty from taurus.core.util.containers import LoopList from taurus.core.util.log import Logger from taurus.qt.qtcore.configuration import BaseConfigurableClass from pyqtgraph import PlotWidget from .curvespropertiestool import CurvesPropertiesTool from .taurusmodelchoosertool import TaurusXYModelChooserTool from .legendtool import PlotLegendTool from .datainspectortool import DataInspectorTool from .y2axis import Y2ViewBox from .curveproperties import CURVE_COLORS from .titlepatterneditor import TitlePatternEditor, EVALUATION_KEYS _QT_PLUGIN_INFO = { "module": "taurus.qt.qtgui.tpg", "group": "Taurus Display", "icon": "logos:taurus.png", "container": True, } class TaurusPlot(PlotWidget, BaseConfigurableClass): """ TaurusPlot is a general widget for plotting 1D data sets. It is an extended taurus-aware version of :class:`pyqtgraph.PlotWidget`. Apart from all the features already available in a regulat PlotWidget, TaurusPlot incorporates the following tools/features: - Secondary Y axis (right axis) - A plot configuration dialog, and save/restore configuration facilities - A menu option for adding/removing models - A menu option for showing/hiding the legend - Automatic color change of curves for newly added models - A curve properties tool widget that enables to change curve style """ def __init__(self, parent=None, **kwargs): if PYSIDE2: # Workaround for https://bugreports.qt.io/browse/PYSIDE-1564 BaseConfigurableClass.__init__(self) PlotWidget.__init__(self, parent=parent, **kwargs) else: super(TaurusPlot, self).__init__(parent=parent, **kwargs) # Compose with a Logger self._logger = Logger(name=self.__class__.__name__) self.debug = self._logger.debug self.info = self._logger.info self.warning = self._logger.warning self.error = self._logger.error # set up cyclic color generator self._curveColors = LoopList(CURVE_COLORS) self._curveColors.setCurrentIndex(-1) self.titlePatternEditor = TitlePatternEditor() # add save & retrieve configuration actions menu = self.getPlotItem().getViewBox().menu saveConfigAction = QtGui.QAction("Save configuration", menu) saveConfigAction.triggered.connect(self._onSaveConfigAction) menu.addAction(saveConfigAction) loadConfigAction = QtGui.QAction("Retrieve saved configuration", menu) loadConfigAction.triggered.connect(self._onRetrieveConfigAction) menu.addAction(loadConfigAction) # add change curve labels changeCurvesTitlesAction = QtGui.QAction("Change Curves Titles " "(All curves)...", menu) changeCurvesTitlesAction.triggered.connect( self._onChangeCurvesTitlesAction) menu.addAction(changeCurvesTitlesAction) self.registerConfigProperty(self._getState, self.restoreState, "state") # add legend tool legend_tool = PlotLegendTool(self) legend_tool.attachToPlotItem(self.getPlotItem()) # add model chooser self._model_chooser_tool = TaurusXYModelChooserTool(self) self._model_chooser_tool.attachToPlotItem( self.getPlotItem(), self, self._curveColors ) # add Y2 axis self._y2 = Y2ViewBox() self._y2.attachToPlotItem(self.getPlotItem()) # add plot configuration dialog self.cprop_tool = CurvesPropertiesTool(self) self.cprop_tool.attachToPlotItem(self.getPlotItem(), y2=self._y2) # add a data inspector inspector_tool = DataInspectorTool(self) inspector_tool.attachToPlotItem(self.getPlotItem()) # enable Autorange self.getPlotItem().getViewBox().enableAutoRange(True) self._y2.enableAutoRange(True) # Register config properties self.registerConfigDelegate(self._model_chooser_tool, "XYmodelchooser") self.registerConfigDelegate(self._y2, "Y2Axis") self.registerConfigDelegate(self.cprop_tool, "CurvePropertiesTool") self.registerConfigDelegate(legend_tool, "legend") self.registerConfigDelegate(inspector_tool, "inspector") def __getitem__(self, idx): """ Provides a list-like interface: items can be accessed using slice notation """ return self.getPlotItem().listDataItems()[idx] def __len__(self): return len(self.getPlotItem().listDataItems()) def __bool__(self): return True def setModel(self, names): """Reimplemented to delegate to the model chooser""" # support passing a string in names if isinstance(names, str): names = [names] self._model_chooser_tool.updateModels(names) def getModel(self): models = [] for _, yModel in self._model_chooser_tool.getModelNames(): models.append(yModel) return models def resetModel(self): self.setModel("") def addModels(self, names): """Reimplemented to delegate to the model chooser""" # support passing a string in names if isinstance(names, str): names = [names] self._model_chooser_tool.addModels(names) def _getState(self): """Same as PlotWidget.saveState but removing viewRange conf to force a refresh with targetRange when loading """ state = copy.deepcopy(self.saveState()) # remove viewRange conf del state["view"]["viewRange"] return state def setXAxisMode(self, x_axis_mode): """Required generic TaurusPlot API """ from taurus_pyqtgraph import DateAxisItem if x_axis_mode == "t": axis = DateAxisItem(orientation="bottom") axis.attachToPlotItem(self.getPlotItem()) elif x_axis_mode == "n": axis = self.getPlotItem().axes["bottom"]["item"] if isinstance(axis, DateAxisItem): axis.detachFromPlotItem() else: raise ValueError("Unsupported x axis mode {}".format(x_axis_mode)) def _onSaveConfigAction(self): """wrapper to avoid issues with overloaded signals""" return self.saveConfigFile() def _onChangeCurvesTitlesAction(self): """Show pop up to change title on curves""" label_config = self.titlePatternEditor.showDialog() if label_config: for item in self.getPlotItem().curves: result = label_config for key, resolver in EVALUATION_KEYS.items(): if key in self.titlePatternEditor.legend_pattern: try: result = result.replace(key, resolver(item.modelObj)) except AttributeError: self._logger.warning(traceback.format_exc()) result = result.replace(key, "NoDef") if isinstance(item, list): if len(item) == 1: item[0].setData(name=result) self.plotItem.legend.getLabel(item[0]).setText(result) if len(item) > 1: for i in range(len(item)): result_array = "{}[{}]".format(result, i) item[i].setData(name=result_array) (self.plotItem.legend.getLabel(item[i]) .setText(result_array)) else: item.setData(name=result) self.plotItem.legend.getLabel(item).setText(result) def _onRetrieveConfigAction(self): """wrapper to avoid issues with overloaded signals""" return self.loadConfigFile() @classmethod def getQtDesignerPluginInfo(cls): return _QT_PLUGIN_INFO # This needs to be here to be picked up by the taurus designer. model = pyqtProperty("QStringList", getModel, setModel, resetModel) def plot_main( models=(), config_file=None, x_axis_mode="n", demo=False, window_name="TaurusPlot (pg)", ): """Launch a TaurusPlot""" import sys from taurus.qt.qtgui.application import TaurusApplication app = TaurusApplication(cmd_line_parser=None, app_name="taurusplot(pg)") w = TaurusPlot() # w.loadConfigFile('tmp/TaurusPlot.pck') w.setWindowTitle(window_name) if demo: models = list(models) models.extend(["eval:rand(100)", "eval:0.5*sqrt(arange(100))"]) w.setXAxisMode(x_axis_mode.lower()) if config_file is not None: w.loadConfigFile(config_file) if models: w.setModel(models) w.show() ret = app.exec_() # import pprint # pprint.pprint(w.createConfig()) sys.exit(ret) if __name__ == "__main__": plot_main() taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/taurus_pyqtgraph/statisticstool.py000066400000000000000000000247161514602004300317740ustar00rootroot00000000000000#!/usr/bin/env python ############################################################################# ## # This file is part of Taurus ## # http://taurus-scada.org ## # Copyright 2011 CELLS / ALBA Synchrotron, Bellaterra, Spain ## # Taurus is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. ## # Taurus is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. ## # You should have received a copy of the GNU Lesser General Public License # along with Taurus. If not, see . ## ############################################################################# __all__ = ["StatisticsTool"] from datetime import datetime import numpy as np from taurus.external.qt import Qt from taurus.external.qt.QtWidgets import QCheckBox, QVBoxLayout, \ QSplitter, QWidget, QGridLayout, QTableWidget, QTableWidgetItem, \ QPushButton, QLabel, QDateTimeEdit from taurus.qt.qtgui.container import TaurusWidget from taurus_pyqtgraph.taurusplotdataitem import TaurusPlotDataItem class StatisticsTool(Qt.QAction): """ This tool inserts an action in the menu of the :class:`pyqtgraph.PlotItem` to which it is attached to show statistics like min, max, mean, std, rms of curves.It is implemented as an Action, and provides a method to attach it to a PlotItem. """ def __init__(self, parent=None, itemClass=None): Qt.QAction.__init__(self, "Calculate statistics", parent) self.parent = parent self.triggered.connect(self._onTriggered) self.plotItem = None self.legend = None if itemClass is None: itemClass = TaurusPlotDataItem self.itemClass = itemClass def attachToPlotItem(self, plot_item, parentWidget=None): """ Use this method to add this tool to a plot :param plot_item: (PlotItem) """ self.plotItem = plot_item if self.plotItem.legend is not None: self.legend = self.plotItem.legend menu = self.plotItem.getViewBox().menu menu.addAction(self) self.setParent(parentWidget or menu) def _onTriggered(self): StatisticsToolDlg.display(self.parent, self.plotItem.listDataItems()) class StatisticsToolDlg(TaurusWidget): def __init__(self, parent, data_items): super().__init__() self.parent = parent self.dataItems = data_items self.layout = QVBoxLayout() self.splitter = QSplitter() self.setupXLimitsFragment() self.setupStatsPickerFragment() self.setupTableFragment() self.calculateButton = QPushButton('(re)calculate') self.calculateButton.clicked.connect(lambda _: self.fillTable()) self.layout.addWidget(self.calculateButton) self.setLayout(self.layout) def setupXLimitsFragment(self): """Method to setup the x_limits fragment of the StatisticalToolDlg.""" self.xLimitsWidget = QWidget() self.xLimitsLayout = QGridLayout() self.checkboxMin = QCheckBox('min') self.checkboxMin.clicked.connect(lambda _: self.inputMin.setDisabled( not self.checkboxMin.isChecked())) self.inputMin = QDateTimeEdit() self.inputMin.setDisplayFormat("yyyy-MM-dd'T'HH:mm:ss.zzz") self.inputMin.setDateTime( datetime.fromtimestamp(self._get_min_range())) self.inputMin.setDisabled(True) self.xLimitsLayout.addWidget(QLabel("X limits")) self.xLimitsLayout.addWidget(self.checkboxMin, 1, 0) self.xLimitsLayout.addWidget(self.inputMin, 1, 1) self.checkboxMax = QCheckBox('max') self.checkboxMax.clicked.connect(lambda _: self.inputMax.setDisabled( not self.checkboxMax.isChecked())) self.inputMax = QDateTimeEdit() self.inputMax.setDisplayFormat("yyyy-MM-dd'T'HH:mm:ss.zzz") self.inputMax.setDateTime( datetime.fromtimestamp(self._get_max_range())) self.inputMax.setDisabled(True) self.xLimitsLayout.addWidget(self.checkboxMax, 2, 0) self.xLimitsLayout.addWidget(self.inputMax, 2, 1) self.xLimitsWidget.setLayout(self.xLimitsLayout) self.layout.addWidget(self.xLimitsWidget) def setupStatsPickerFragment(self): """ Method to setup the stats_picker fragment of the StatisticalToolDlg. """ self.statsPickerWidget = QWidget() self.statsPickerLayout = QGridLayout() self.statsCheckboxes = [] self.statsPickerLayout.addWidget(QLabel("Stats"), 0, 0) self.stats = ["points", "min", "max", "mean", "std", "rms"] for i, stat in enumerate(self.stats): check_box = QCheckBox(stat) check_box.setChecked(True) check_box.clicked.connect( lambda checked, col=i: self.tableWidget.setColumnHidden(col, not checked) ) self.statsPickerLayout.addWidget(check_box, 1, i) self.statsCheckboxes.append(check_box) self.statsPickerWidget.setLayout(self.statsPickerLayout) self.layout.addWidget(self.statsPickerWidget) def setupTableFragment(self): """Method to setup the table fragment of the StatisticalToolDlg.""" self.tableWidget = QTableWidget(0, 0) self.fillTable() self.layout.addWidget(self.tableWidget) def fillTable(self): """Method to fill the table of the StatisticalToolDlg.""" start = float("-inf") end = float("inf") if self.checkboxMin.isChecked(): start = float( datetime.fromisoformat(self.inputMin.text()).timestamp()) else: self.inputMin.setDateTime( datetime.fromtimestamp(self._get_min_range())) if self.checkboxMax.isChecked(): end = float( datetime.fromisoformat(self.inputMax.text()).timestamp()) else: self.inputMax.setDateTime( datetime.fromtimestamp(self._get_max_range())) rows = [item for item in self.dataItems if item.name()] columns = [] for idx, item in enumerate(self.statsCheckboxes): if item.isChecked(): columns.append(self.stats[idx]) self.tableWidget.setColumnCount(len(columns)) self.tableWidget.setRowCount(len(rows)) self.tableWidget.setHorizontalHeaderLabels(columns) self.tableWidget.setVerticalHeaderLabels( [item.name() for item in rows]) for x in range(len(rows)): for y in range(len(columns)): item = rows[x] if item.xData is not None and item.yData is not None: yData = [y for _, y in filter(lambda item: start < item[0] < end, zip(item.xData, item.yData))] xData = [x for x in filter(lambda x: start < x < end, item.xData)] else: yData, xData = None, None yStat = self.calcStat(columns[y], yData) if columns[y] in ["min", "max"]: xStat = self.calcStat(columns[y], xData, time=True) if xStat is not None: self.tableWidget.setItem(x, y, QTableWidgetItem( "t={}\ny={}".format(xStat, yStat))) else: self.tableWidget.setItem(x, y, QTableWidgetItem("")) else: if yStat is not None: self.tableWidget.setItem(x, y, QTableWidgetItem( "{:g}".format(yStat))) else: self.tableWidget.setItem(x, y, QTableWidgetItem("")) self.tableWidget.resizeRowsToContents() def calcStat(self, stat, data, time=False): """Method to calculate the statistics for the given data.""" if data is None or not len(data): return None else: return { 'points': len(data), 'min': datetime.fromtimestamp( min(data)).strftime('%Y-%m-%dT%H:%M:%S.%f')[:-3] if time else min(data), 'max': datetime.fromtimestamp( max(data)).strftime('%Y-%m-%dT%H:%M:%S.%f')[:-3] if time else max(data), 'mean': np.mean(data), 'std': np.std(data) if len(data) >= 2 else None, 'rms': np.sqrt(np.mean(np.array(data) ** 2)), }[stat] def _get_min_range(self): return min([min(curve.xData) for curve in self.dataItems if curve.xData is not None]) def _get_max_range(self): return max([max(curve.xData) for curve in self.dataItems if curve.xData is not None]) @staticmethod def display(parent, data_items): """Static method to display the StatisticalToolDlg.""" dlg = Qt.QDialog(parent) dlg.setWindowTitle("Curve Stats Dialog") dlg.setWindowIcon(Qt.QIcon("logos:taurus.png")) layout = Qt.QVBoxLayout() w = StatisticsToolDlg( parent=parent, data_items=data_items ) layout.addWidget(w) dlg.setLayout(layout) dlg.exec_() def _demo_Statisticaltool(): import sys import numpy import pyqtgraph as pg from taurus.qt.qtgui.application import TaurusApplication from taurus_pyqtgraph import TaurusPlotDataItem app = TaurusApplication() # a standard pyqtgraph plot_item w = pg.PlotWidget() # add legend to the plot, for that we have to give a name to plot items w.addLegend() # adding a regular data item (non-taurus) c1 = pg.PlotDataItem(name="st plot", pen="b", fillLevel=0, brush="c") c1.setData(numpy.arange(300) / 300.0) w.addItem(c1) # adding a taurus data item c2 = TaurusPlotDataItem(name="st2 plot", pen="r", symbol="o") c2.setModel("eval:rand(222)") w.addItem(c2) # attach to plot item tool = StatisticsTool(itemClass=TaurusPlotDataItem) tool.attachToPlotItem(w.getPlotItem()) w.show() tool.trigger() sys.exit(app.exec_()) if __name__ == "__main__": _demo_Statisticaltool() taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/taurus_pyqtgraph/taurusimageitem.py000066400000000000000000000045741514602004300321110ustar00rootroot00000000000000#!/usr/bin/env python ############################################################################# ## # This file is part of Taurus ## # http://taurus-scada.org ## # Copyright 2011 CELLS / ALBA Synchrotron, Bellaterra, Spain ## # Taurus is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. ## # Taurus is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. ## # You should have received a copy of the GNU Lesser General Public License # along with Taurus. If not, see . ## ############################################################################# __all__ = ["TaurusImageItem"] import sys from taurus.qt.qtgui.application import TaurusApplication from taurus.qt.qtgui.base import TaurusBaseComponent from pyqtgraph import ImageItem class TaurusImageItem(ImageItem, TaurusBaseComponent): """ Displays 2D and 3D image data """ # TODO: clear image if .setModel(None) def __init__(self, *args, **kwargs): ImageItem.__init__(self, *args, **kwargs) TaurusBaseComponent.__init__(self, "TaurusImageItem") def handleEvent(self, evt_src, evt_type, evt_val): """Reimplemented from :class:`TaurusImageItem`""" if evt_val is None or getattr(evt_val, "rvalue", None) is None: self.debug("Ignoring empty value event from %s" % repr(evt_src)) return try: data = evt_val.rvalue self.setImage(data) except Exception as e: self.warning("Exception in handleEvent: %s", e) if __name__ == "__main__": import pyqtgraph as pg app = TaurusApplication() plot_widget = pg.PlotWidget() plot_item = plot_widget.getPlotItem() image_item = TaurusImageItem() # Add taurus 2D image data image_item.setModel("eval:randint(0,256,(16,16))") # add TarusImageItem to a PlotItem plot_item.addItem(image_item) # show or hide axis from the plot plot_item.showAxis("left", show=True) plot_item.showAxis("bottom", show=True) plot_widget.show() sys.exit(app.exec_()) taurusmodelchoosertool.py000066400000000000000000000531571514602004300334530ustar00rootroot00000000000000taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/taurus_pyqtgraph#!/usr/bin/env python ############################################################################# ## # This file is part of Taurus ## # http://taurus-scada.org ## # Copyright 2011 CELLS / ALBA Synchrotron, Bellaterra, Spain ## # Taurus is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. ## # Taurus is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. ## # You should have received a copy of the GNU Lesser General Public License # along with Taurus. If not, see . ## ############################################################################# __all__ = ["TaurusModelChooserTool", "TaurusImgModelChooserTool"] from taurus.external.qt import Qt from taurus.core import TaurusElementType from taurus.core.util.log import Logger from taurus.qt.qtcore.configuration import BaseConfigurableClass from taurus.qt.qtgui.panel import TaurusModelChooser from taurus_pyqtgraph.taurusimageitem import TaurusImageItem from taurus_pyqtgraph.taurusplotdataitem import TaurusPlotDataItem from taurus_pyqtgraph.curvesmodel import TaurusItemConf, TaurusItemConfDlg, \ TITLE, Y from taurus_pyqtgraph.util import ensure_unique_curve_name from .taurustrendset import TaurusTrendSet from .titlepatterneditor import EVALUATION_KEYS import taurus import traceback from ast import literal_eval from collections import OrderedDict from taurus.qt.qtcore.mimetypes import ( TAURUS_MODEL_LIST_MIME_TYPE, TAURUS_ATTR_MIME_TYPE, ) class TaurusModelChooserTool(Qt.QAction): """ This tool inserts an action in the menu of the :class:`pyqtgraph.PlotItem` to which it is attached to show choosing taurus models to be shown. It is implemented as an Action, and provides a method to attach it to a PlotItem. """ def __init__(self, parent=None, itemClass=None): Qt.QAction.__init__(self, "Model selection", parent) self.triggered.connect(self._onTriggered) self.plot_item = None self.legend = None if itemClass is None: itemClass = TaurusPlotDataItem self.itemClass = itemClass # Compose with a Logger self._logger = Logger(name=self.__class__.__name__) self.debug = self._logger.debug self.info = self._logger.info self.warning = self._logger.warning self.error = self._logger.error def attachToPlotItem(self, plot_item, parentWidget=None): """ Use this method to add this tool to a plot :param plot_item: (PlotItem) """ self.plot_item = plot_item if self.plot_item.legend is not None: self.legend = self.plot_item.legend menu = self.plot_item.getViewBox().menu menu.addAction(self) self.setParent(parentWidget or menu) def _onTriggered(self): currentModelNames = [] for item in self.plot_item.items: if isinstance(item, self.itemClass): currentModelNames.append(item.getFullModelName()) names, ok = TaurusModelChooser.modelChooserDlg( selectables=[TaurusElementType.Attribute], listedModels=currentModelNames, ) if ok: self.updateModels(names) def updateModels(self, names): """Accepts a list of model names and updates the data items of class `itemClass` (provided in the constructor) attached to the plot. It creates and removes items if needed, and enforces the z-order according to that given in the `models` list """ # from names, construct an ordered dict with k=fullname, v=modelObj models = OrderedDict() for n in names: m = taurus.Attribute(n) models[m.getFullName()] = m # construct a dict and a list for current models and names currentModelItems = dict() currentModelNames = [] for item in self.plot_item.items: if isinstance(item, self.itemClass): fullname = item.getFullModelName() currentModelNames.append(fullname) currentModelItems[fullname] = item # remove existing curves from plot (but not discarding the object) # so that they can be re-added later in the correct z-order for k, v in currentModelItems.items(): # v.getViewBox().removeItem(v) # TODO: maybe needed for Y2 self.plot_item.removeItem(v) # Add all curves (creating those that did not exist previously) # respecting the z-order for modelName, model in models.items(): if modelName in currentModelNames: item = currentModelItems[modelName] self.plot_item.addItem(item) # item.getViewBox().addItem(item) # TODO: maybe needed for Y2 else: # TODO support labels item = self.itemClass(name=model.getSimpleName()) item.setModel(modelName) self.plot_item.addItem(item) # self.plot_item.enableAutoRange() # TODO: Why? remove? def setParent(self, parent): """Reimplement setParent to add an event filter""" Qt.QAction.setParent(self, parent) if parent is not None: parent.installEventFilter(self) def _dropMimeData(self, data): """Method to process the dropped MimeData""" ymodels = [] if data.hasFormat(TAURUS_ATTR_MIME_TYPE): m = bytes(data.data(TAURUS_ATTR_MIME_TYPE)).decode("utf-8") ymodels.append(m) elif data.hasFormat(TAURUS_MODEL_LIST_MIME_TYPE): ymodels = ( bytes(data.data(TAURUS_MODEL_LIST_MIME_TYPE)) .decode("utf-8") .split() ) elif data.hasText(): ymodels.append(data.text()) # Add models current = [] for item in self.plot_item.items: if isinstance(item, self.itemClass): current.append(item.getFullModelName()) self.updateModels(current + ymodels) return True def eventFilter(self, source, event): """ Reimplementation of eventFilter to delegate parent's drag and drop events to TaurusModelChooserTool """ if source is self.parent(): if event.type() == Qt.QEvent.DragEnter: event.acceptProposedAction() return True if event.type() == Qt.QEvent.Drop: event.acceptProposedAction() return self._dropMimeData(event.mimeData()) return self.parent().eventFilter(source, event) class TaurusImgModelChooserTool(Qt.QAction): """ This tool inserts an action in the menu of the :class:`pyqtgraph.PlotItem` to which it is attached for choosing a 2D taurus model to be shown. It is implemented as an Action, and provides a method to attach it to a PlotItem. """ # TODO: merge this with TaurusModelChooserTool (or use a common base) def __init__(self, parent=None): Qt.QAction.__init__(self, parent) self._plot_item = None def attachToPlotItem(self, plot_item): """ Use this method to add this tool to a plot :param plot_item: (PlotItem) """ self._plot_item = plot_item view = plot_item.getViewBox() menu = view.menu model_chooser = Qt.QAction("Model selection", menu) model_chooser.triggered.connect(self._onTriggered) menu.addAction(model_chooser) def _onTriggered(self): imageItem = None for item in self._plot_item.items: if isinstance(item, TaurusImageItem): imageItem = item break if imageItem is None: imageItem = TaurusImageItem() modelName = imageItem.getFullModelName() if modelName is None: listedModels = [] else: listedModels = [modelName] res, ok = TaurusModelChooser.modelChooserDlg( selectables=[TaurusElementType.Attribute], singleModel=True, listedModels=listedModels, ) if ok: if res: model = res[0] else: model = None imageItem.setModel(model) class TaurusXYModelChooserTool(Qt.QAction, BaseConfigurableClass): """ (Work-in-Progress) This tool inserts an action in the menu of the :class:`pyqtgraph.PlotItem` to which it is attached for choosing X and Y 1D taurus models of the curves to be shown. It is implemented as an Action, and provides a method to attach it to a PlotItem. It only deals with the subgroup of plot data items of the type defined by `self.ItemClass` (which defaults to :class:`TaurusPlotDataItem`) """ # TODO: This class is WIP. def __init__(self, parent=None, itemClass=None, showX=True): BaseConfigurableClass.__init__(self) Qt.QAction.__init__(self, "Model selection", parent) self.triggered.connect(self._onTriggered) self.plot_item = None self.legend = None self._curveColors = None if itemClass is None: itemClass = TaurusPlotDataItem self.itemClass = itemClass self._showX = showX self.registerConfigProperty( self._getCurveInfo, self._restoreCurvesFromInfo, "CurveInfo" ) def setParent(self, parent): """Reimplement setParent to add an event filter""" Qt.QAction.setParent(self, parent) if parent is not None: parent.installEventFilter(self) def attachToPlotItem( self, plot_item, parentWidget=None, curve_colors=None ): """ Use this method to add this tool to a plot :param plot_item: (PlotItem) .. warning:: this is Work-in-progress. The API may change. Do not rely on current signature of this method """ # TODO: Check if we can simplify the signature (remove keyword args) self.plot_item = plot_item self._curveColors = curve_colors if self.plot_item.legend is not None: self.legend = self.plot_item.legend menu = self.plot_item.getViewBox().menu menu.addAction(self) self.setParent(parentWidget or menu) def _onSetPatternClicked(self): label_config = self.parent().titlePatternEditor.showDialog() if label_config: model = self.w.model for row in range(model.rowCount()): result = label_config idx = model.index(row, TITLE) modelObj = model.data(model.index(row, Y)) for key, resolver in EVALUATION_KEYS.items(): if key in self.parent().titlePatternEditor.legend_pattern: try: attr_proxy = taurus.Attribute(modelObj) result = result.replace(key, resolver(attr_proxy)) except AttributeError: self.warning(traceback.format_exc()) result = result.replace(key, "NoDef") model.setData(idx, result) def _onTriggered(self): oldconfs = self._getTaurusPlotDataItemConfigs().values() dlg = Qt.QDialog(self.parent()) dlg.setWindowTitle("Curves Selection") layout = Qt.QVBoxLayout() self.w = TaurusItemConfDlg( parent=self.parent(), taurusItemsConf=oldconfs, showXcol=self._showX, ) button = Qt.QPushButton("Change Curves Titles (All curves)...") self.w.ui.horizontalLayout_2.addWidget(button) button.clicked.connect(self._onSetPatternClicked) layout.addWidget(self.w) dlg.setLayout(layout) self.w.applied.connect(self._onDlgApplied) self.w.ui.cancelBT.clicked.connect(dlg.close) dlg.exec_() def _onDlgApplied(self): newconfs = self.sender().getItemConfs() xy_names = [(c.xModel, c.yModel, c.curveLabel) for c in newconfs] self.updateModels(xy_names) def _getTaurusPlotDataItemConfigs(self): """Get all the TaurusItemConf of the existing TaurusPlotDataItems Returns an ordered dict whose keys are (xfullname, yfullname) and whose values are the corresponding item config class """ itemconfigs = OrderedDict() for curve in self.plot_item.listDataItems(): if isinstance(curve, self.itemClass): xmodel, ymodel = curve.getFullModelNames() name = curve.name() # ugly hack for TaurusTrendset, which forces .name() ->None if ( name is None and hasattr(curve, "base_name") and hasattr(curve, "_getCurveNames") ): name = [curve.base_name()] + curve._getCurveNames() c = TaurusItemConf(YModel=ymodel, XModel=xmodel, name=name) itemconfigs[(xmodel, ymodel)] = c return itemconfigs def _dropMimeData(self, data): """Method to process the dropped MimeData""" ymodels = [] if data.hasFormat(TAURUS_ATTR_MIME_TYPE): m = bytes(data.data(TAURUS_ATTR_MIME_TYPE)).decode("utf-8") ymodels.append(m) elif data.hasFormat(TAURUS_MODEL_LIST_MIME_TYPE): ymodels = ( bytes(data.data(TAURUS_MODEL_LIST_MIME_TYPE)) .decode("utf-8") .split() ) elif data.hasText(): ymodels.append(data.text()) xmodels = [None] * len(ymodels) self.addModels(list(zip(xmodels, ymodels))) return True def eventFilter(self, source, event): """ Reimplementation of eventFilter to delegate parent's drag and drop events to TaurusXYModelChooserTool """ if source is self.parent(): t = event.type() if t == Qt.QEvent.DragEnter: event.acceptProposedAction() return True elif t == Qt.QEvent.Drop: event.acceptProposedAction() return self._dropMimeData(event.mimeData()) else: return False return Qt.QAction.eventFilter(self, source, event) def getModelNames(self): """ Get the x and y model names for the data items of type defined by `self.itemClass` present in the plot item to which this tool is attached """ return [t[:2] for t in self._getCurveInfo()] def _getCurveInfo(self): """ Get a list of (xmodelname, ymodelname, curvename) tuples for the data items of type defined by `self.itemClass` present in the PlotItem to which this tool is attached """ cfgs = self._getTaurusPlotDataItemConfigs().values() return [(c.xModel, c.yModel, c.curveLabel) for c in cfgs] def _restoreCurvesFromInfo(self, info_tuples): self.updateModels(info_tuples) def addModels(self, xy_names): """Add new items with the given x and y model pairs. Those given model pairs that are already present will not be altered or duplicated (e.g. the z-order of the corresponding curve will not be modified for in case of adding duplicates) """ current = self.getModelNames() self.updateModels(current + xy_names) def updateModels(self, xy_names): """ Update the current plot item list with the given configuration items """ mainViewBox = self.plot_item.getViewBox() # Remove existing taurus items from the plotItem and the viewboxes # (but keep the item object and a reference to their viewbox so that # they can be reused later on if needed). currentModelItems = OrderedDict() _currentItems = list(self.plot_item.listDataItems()) for item in _currentItems: if isinstance(item, self.itemClass): xname, yname = item.getFullModelNames() viewbox = item.getViewBox() # store curve and current viewbox for later use currentModelItems[(xname, yname)] = item, viewbox # remove the curve self.plot_item.removeItem(item) if viewbox is not None and viewbox is not mainViewBox: viewbox.removeItem(item) if self.legend is not None: self.legend.removeItem(item.name()) # Add only the curves defined in xy_names (reusing existing ones and # creating those that did not exist) in the desired z-order _already_added = [] for xy_name in xy_names: # each member of xy_names can be yname or a (xname, yname[, cname]) # tuple if isinstance(xy_name, str): xname, yname, cname = None, xy_name, None else: try: xname, yname, cname = xy_name except ValueError: xname, yname = xy_name cname = None # make sure that fullnames are used try: if xname is not None: xmodel = taurus.Attribute(xname) xname = xmodel.getFullName() ymodel = taurus.Attribute(yname) yname = ymodel.getFullName() except Exception as e: from taurus import warning warning("Problem adding %r: %r", (xname, yname), e) continue # do not add it again if we already added it (avoid duplications) if (xname, yname) in _already_added: continue _already_added.append((xname, yname)) # if the item already existed, re-use it if (xname, yname) in currentModelItems: item, viewbox = currentModelItems[(xname, yname)] if cname: try: if type(cname) is str: cname = literal_eval(cname) if not isinstance(cname, list): raise TypeError if len(cname) - 1 is len(item._getCurveNames()): item._setCurveNames(cname[1:]) except (ValueError, TypeError, SyntaxError): if isinstance(item, TaurusTrendSet): if len(item._getCurveNames()) == 1: item._setCurveNames([cname]) elif len(item._getCurveNames()) > 1: for i in range(len(item)): item[i].setData(name="{}[{}]" .format(cname, i)) elif isinstance(item, TaurusPlotDataItem): item.setData(name=cname) self.plot_item.addItem(item) if viewbox is not mainViewBox: # if the curve was originally associated to a viewbox # other than the main one, we should move it there after # re-adding it to the plot_item mainViewBox.removeItem(item) viewbox.addItem(item) # if it is a new curve, create it and add it to the main plot_item else: if cname is None: cname = ymodel.getSimpleName() item = self.itemClass( xModel=xname, yModel=yname, name=cname, colors=self._curveColors, ) item = ensure_unique_curve_name(item, self.plot_item) self.plot_item.addItem(item) def _demo_ModelChooser(): import sys import numpy import pyqtgraph as pg from taurus_pyqtgraph import TaurusModelChooserTool from taurus.qt.qtgui.application import TaurusApplication from taurus_pyqtgraph import TaurusPlotDataItem app = TaurusApplication() # a standard pyqtgraph plot_item w = pg.PlotWidget() # add legend to the plot, for that we have to give a name to plot items w.addLegend() # adding a regular data item (non-taurus) c1 = pg.PlotDataItem(name="st plot", pen="b", fillLevel=0, brush="c") c1.setData(numpy.arange(300) / 300.0) w.addItem(c1) # adding a taurus data item c2 = TaurusPlotDataItem(name="st2 plot", pen="r", symbol="o") c2.setModel("eval:rand(222)") w.addItem(c2) # attach to plot item tool = TaurusModelChooserTool(itemClass=TaurusPlotDataItem) tool.attachToPlotItem(w.getPlotItem()) w.show() tool.trigger() sys.exit(app.exec_()) def _demo_ModelChooserImage(): import sys from taurus_pyqtgraph import TaurusImgModelChooserTool, TaurusImageItem from taurus.qt.qtgui.application import TaurusApplication import pyqtgraph as pg app = TaurusApplication() w = pg.PlotWidget() img = TaurusImageItem() # Add taurus 2D image data img.setModel("eval:rand(256,256)") w.addItem(img) w.showAxis("left", show=False) w.showAxis("bottom", show=False) tool = TaurusImgModelChooserTool() tool.attachToPlotItem(w.getPlotItem()) w.show() tool.trigger() sys.exit(app.exec_()) if __name__ == "__main__": _demo_ModelChooser() # _demo_ModelChooserImage() taurusplotdataitem.py000066400000000000000000000155031514602004300325520ustar00rootroot00000000000000taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/taurus_pyqtgraph#!/usr/bin/env python ############################################################################# ## # This file is part of Taurus ## # http://taurus-scada.org ## # Copyright 2011 CELLS / ALBA Synchrotron, Bellaterra, Spain ## # Taurus is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. ## # Taurus is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. ## # You should have received a copy of the GNU Lesser General Public License # along with Taurus. If not, see . ## ############################################################################# __all__ = ["TaurusPlotDataItem"] import copy from taurus import Attribute from taurus.core import TaurusEventType from taurus.qt.qtgui.base import TaurusBaseComponent from pyqtgraph import PlotDataItem from taurus.core.util.containers import LoopList from .curveproperties import CURVE_COLORS class TaurusPlotDataItem(PlotDataItem, TaurusBaseComponent): """A taurus-ified PlotDataItem""" def __init__(self, *args, **kwargs): """ Accepts same args and kwargs as PlotDataItem, plus: :param xModel: (str) Taurus model name for abscissas values. Default=None :param yModel: (str) Taurus model name for ordinate values. Default=None :param colors: (generator) An infinite generator of QColor objects """ xModel = kwargs.pop("xModel", None) yModel = kwargs.pop("yModel", None) colors = kwargs.pop("colors", LoopList(CURVE_COLORS)) if "pen" not in kwargs: kwargs["pen"] = next(colors) PlotDataItem.__init__(self, *args, **kwargs) TaurusBaseComponent.__init__(self, "TaurusBaseComponent") self._x = None self._y = None self.xModel = None if xModel is not None: self.setXModel(xModel) if yModel is not None: self.setModel(yModel) self.registerConfigProperty(self.getOpts, self.setOpts, "opts") self.setModelInConfig(True) self.registerConfigProperty( self.getXModelName, self.setXModel, "XModel" ) def setXModel(self, xModel): """Sets the taurus model for the x component""" if self.xModel is not None: self.xModel.removeListener(self) if not xModel: self.xModel = None return self.xModel = Attribute(xModel) self.xModel.addListener(self) def getXModelName(self): """Returns the full name for the x component""" if self.xModel is None: return None else: return self.xModel.getFullName() def handleEvent(self, evt_src, evt_type, evt_value): """Reimplemented from :class:`TaurusBaseComponent`""" if evt_type not in (TaurusEventType.Change, TaurusEventType.Periodic): return yModel = self.getModelObj() if yModel == evt_src: if yModel is not None: try: # workaround to avoid UnitStrippedWarning (see #89) # TODO: add proper unit support to TaurusPlot self._y = evt_value.rvalue.magnitude except AttributeError: self._y = evt_value.rvalue else: self._y = None if self.xModel == evt_src: if self.xModel is not None: try: # workaround to avoid UnitStrippedWarning (see #89) # TODO: add proper unit support to TaurusPlot self._x = evt_value.rvalue.magnitude except AttributeError: self._x = evt_value.rvalue else: self._x = None try: self.setData(x=self._x, y=self._y) except Exception as e: self.debug("Could not set data. Reason: %r", e) def getOpts(self): """ Returns the options for this DataItem as a serialized, pickable dictionary """ from taurus_pyqtgraph import serialize_opts return serialize_opts(copy.copy(self.opts)) def setOpts(self, opts): # creates QPainters (QPen or QBrush) from a pickle loaded file # for adapt the serialized objects into PlotDataItem properties from taurus_pyqtgraph import deserialize_opts self.opts = deserialize_opts(opts) # This is a workaround for the following pyqtgraph's bug: # https://github.com/pyqtgraph/pyqtgraph/issues/531 if opts["connect"] == "all": self.opts["connect"] = "all" elif opts["connect"] == "pairs": self.opts["connect"] = "pairs" elif opts["connect"] == "finite": self.opts["connect"] = "finite" def getFullModelNames(self): """ Get the full model names for the x and y components as an `(xname,yname)` tuple """ return (self.getXModelName(), self.getFullModelName()) if __name__ == "__main__": import sys import numpy import pyqtgraph as pg from taurus.qt.qtgui.application import TaurusApplication # from taurus_pyqtgraph import TaurusPlotDataItem from taurus.external.qt import Qt from taurus_pyqtgraph import TaurusModelChooserTool app = TaurusApplication() # a standard pyqtgraph plot_item w = pg.PlotWidget() # add legend to the plot, for that we have to give a name to plot items w.addLegend() # adding a regular data item (non-taurus) c1 = pg.PlotDataItem(name="st plot", pen="b", fillLevel=0, brush="c") c1.setData(numpy.arange(300) / 300.0) w.addItem(c1) pen = pg.mkPen(color="r", style=4) brush = pg.mkBrush(color="b") brush.setStyle(3) # adding a taurus data item # c2 = TaurusPlotDataItem(name='st2 plot', pen='r', symbol='o') c2 = TaurusPlotDataItem(pen=pen, name="foo") # c2 = TaurusPlotDataItem() # c2.loadConfigFile('tmp/conf.cfg') c2.setModel('eval:Quantity(rand(256),"m")') # c2.setModel('sys/tg_test/1/wave') # c2.setModel(None) # c2.setXModel(None) # c2.setXModel('eval:Quantity(rand(256),"m")') w.addItem(c2) # ...and remove it after a while def rem(): w.removeItem(c2) Qt.QTimer.singleShot(2000, rem) modelchooser = TaurusModelChooserTool(itemClass=TaurusPlotDataItem) modelchooser.attachToPlotItem(w.getPlotItem()) w.show() res = app.exec_() # config = c2.createConfig() # print config # c2.saveConfigFile('tmp/conf.cfg') sys.exit(res) taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/taurus_pyqtgraph/taurustrendset.py000066400000000000000000000474311514602004300317770ustar00rootroot00000000000000#!/usr/bin/env python ############################################################################# ## # This file is part of Taurus ## # http://taurus-scada.org ## # Copyright 2011 CELLS / ALBA Synchrotron, Bellaterra, Spain ## # Taurus is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. ## # Taurus is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. ## # You should have received a copy of the GNU Lesser General Public License # along with Taurus. If not, see . ## ############################################################################# __all__ = ["TaurusTrendSet", "TrendCurve"] """This provides the pyqtgraph implementation of :class:`TaurusTrendSet`""" import copy import numpy from taurus.core import (TaurusEventType, TaurusTimeVal, TaurusAttrValue, Quantity) from taurus.qt.qtgui.base import TaurusBaseComponent from taurus.core.util.containers import ArrayBuffer, LoopList from taurus.external.qt import Qt from pyqtgraph import PlotDataItem from .forcedreadtool import ForcedReadTool from .curveproperties import CURVE_COLORS from .util import ensure_unique_curve_name import taurus class TrendCurve(PlotDataItem): """A PlotDataItem for representing 1D trends""" def __repr__(self): return "".format(self.name()) class TaurusTrendSet(PlotDataItem, TaurusBaseComponent): """ A PlotDataItem for displaying trend curve(s) associated to a TaurusAttribute. The TaurusTrendSet itself does not contain any data, but acts as a manager that dynamically adds/removes curve(s) (other PlotDataItems) to its associated plot. If the attribute is a scalar, the Trend Set generates only one curve representing the evolution of the value of the attribute. If the attribute is an array, as many curves as the attribute size are created, each representing the evolution of the value of a component of the array. When an event is received, all curves belonging to a TaurusTrendSet are updated. TaurusTrendSet can be considered as a container of (sorted) curves. As such, the curves contained by it can be accessed by index:: ts = TaurusTrendSet('eval:rand(3)') # (...) wait for a Taurus Event arriving so that the curves are created ncurves = len(ts) # ncurves will be 3 (assuming the event arrived) curve0 = ts[0] # you can access the curve by index Note that internally each curve is a :class:`pyqtgraph.PlotDataItem` (i.e., it is not aware of events by itself, but it relies on the TaurusTrendSet object to update its values) """ def __init__(self, *args, **kwargs): _ = kwargs.pop("xModel", None) yModel = kwargs.pop("yModel", None) colors = kwargs.pop("colors", None) if colors is None: colors = LoopList(CURVE_COLORS) name = kwargs.pop("name", None) if isinstance(name, list): base_name = name[0] cnames = name[1:] if yModel is None: cnames = [] self.warning("curve names ignored because yModel is not given") else: base_name, cnames = name, [] PlotDataItem.__init__(self, x=[], y=[], name=base_name) TaurusBaseComponent.__init__(self, "TaurusBaseComponent") self._UImodifiable = False self._maxBufferSize = 65536 # (=2**16, i.e., 64K events)) self._xBuffer = None self._yBuffer = None self._curveColors = colors self._args = args self._kwargs = kwargs self._curves = [] self._timer = Qt.QTimer() self._timer.timeout.connect(self._forceRead) self._legend = None # register config properties self.setModelInConfig(True) self.registerConfigProperty( self._getCurveNames(), self._setCurveNames, "CurveNames" ) self.registerConfigProperty( self._getCurvesOpts, self._setCurvesOpts, "opts" ) # TODO: store forceReadPeriod config # TODO: store _maxBufferSize config if yModel is not None: self.setModel(yModel) if cnames: self._setCurveNames(cnames) def __repr__(self): return "".format(self.base_name(), len(self)) def name(self): """Reimplemented from PlotDataItem to avoid having the ts itself added to legends. .. seealso:: :meth:`basename` """ return None def base_name(self): """Returns the name of the trendset, which is used as a prefix for constructing the associated curves names .. seealso:: :meth:`name` """ return PlotDataItem.name(self) def __getitem__(self, k): return self._curves[k] def __len__(self): return len(self._curves) def __contains__(self, k): return k in self._curves def setModel(self, name): """Reimplemented from :meth:`TaurusBaseComponent.setModel`""" TaurusBaseComponent.setModel(self, name) # force a read to ensure that the curves are created self._forceRead() def _initBuffers(self, ntrends): """initializes new x and y buffers""" self._yBuffer = ArrayBuffer( numpy.zeros((min(128, self._maxBufferSize), ntrends), dtype="d"), maxSize=self._maxBufferSize, ) self._xBuffer = ArrayBuffer( (numpy.zeros(min(128, self._maxBufferSize), dtype="d")), maxSize=self._maxBufferSize, ) def _initCurves(self, ntrends): """ Initializes new curves """ # self._removeFromLegend(self._legend) # remove previously existing curves from views self._updateViewBox(None) self._curves = [] if self._curveColors is None: self._curveColors = LoopList(CURVE_COLORS) self._curveColors.setCurrentIndex(-1) a = self._args kw = self._kwargs.copy() base_name = ( self.base_name() or taurus.Attribute(self.getModel()).getSimpleName() ) for i in range(ntrends): subname = "%s[%i]" % (base_name, i) kw["name"] = subname curve = TrendCurve(*a, **kw) if "pen" not in kw: curve.setPen(next(self._curveColors)) self._curves.append(curve) self._updateViewBox(self.getViewBox()) def _addToLegend(self, legend): # ------------------------------------------------------------------ # In theory, TaurusTrendSet only uses viewBox.addItem to add its # sub-curves to the plot. In theory this should not add the curves # to the legend, and therefore we should do it here. # But somewhere the curves are already being added to the legend, and # if we re-add them here we get duplicated legend entries # TODO: Find where are the curves being added to the legend pass # if legend is None: # return # for c in self._curves: # legend.addItem(c, c.name()) # ------------------------------------------------------------------- def _removeFromLegend(self, legend): if legend is None: return for c in self._curves: legend.removeItem(c.name()) def _updateViewBox(self, viewBox): """Add/remove the "extra" curves from the viewbox if needed""" for curve in self._curves: curve_viewBox = curve.getViewBox() if curve_viewBox is not None: plotItem = None viewWidget = curve_viewBox.getViewWidget() if viewWidget is not None: plotItem = viewWidget.getPlotItem() curve_viewBox.removeItem(curve) if plotItem is not None: plotItem.removeItem(curve) if viewBox is not None: plotItem = None viewWidget = viewBox.getViewWidget() if viewWidget is not None: plotItem = viewWidget.getPlotItem() if plotItem is not None: curve = ensure_unique_curve_name(curve, plotItem) _cname = curve.name() params = {"all trends": _cname} plotItem.addItem(curve, params=params) def _updateBuffers(self, evt_value): """Update the x and y buffers with the new data. If the new data is not compatible with the existing buffers, the buffers are reset """ rvalue = evt_value.rvalue try: # We use .magnitude here as a workaround for older pint affected by # https://github.com/hgrecco/pint/issues/509 ntrends = numpy.size(rvalue.magnitude) except AttributeError: # Support bool, int and float values when rvalue has no magnitude _v = numpy.array(rvalue) if _v.dtype in (numpy.dtype("bool"), numpy.dtype("int"), numpy.dtype("float")): from taurus.core.units import Quantity rvalue = Quantity(_v) ntrends = _v.size else: raise if not self._isDataCompatible(rvalue, ntrends): self._initBuffers(ntrends) self._yUnits = rvalue.units self._initCurves(ntrends) try: self._yBuffer.append(rvalue.to(self._yUnits).magnitude) except Exception as e: self.warning( "Problem updating buffer Y (%s):%s", rvalue, e ) evt_value = None try: self._xBuffer.append(evt_value.time.totime()) except Exception as e: self.warning("Problem updating buffer X (%s):%s", evt_value, e) return self._xBuffer.contents(), self._yBuffer.contents() def _isDataCompatible(self, rvalue, ntrends): """ Check that the new rvalue is compatible with the current data in the buffers. Check shape and unit compatibility. """ if self._xBuffer is None or self._yBuffer is None: return False if rvalue.dimensionality != self._yUnits.dimensionality: return False current_trends = numpy.prod(self._yBuffer.contents().shape[1:]) if ntrends != current_trends: return False return True def _addData(self, x, y): for i, curve in enumerate(self._curves): curve.setData(x=x, y=y[:, i]) def clearBuffer(self): """Reset the buffered data""" self._initBuffers(len(self._curves)) def handleEvent(self, evt_src, evt_type, evt_value): """Reimplementation of :meth:`TaurusBaseComponent.handleEvent`""" # model = evt_src if evt_src is not None else self.getModelObj() if ( evt_value is None or not hasattr(evt_value, "rvalue") or evt_value.rvalue is None ): self.info("Invalid value. Ignoring.") return else: try: xValues, yValues = self._updateBuffers(evt_value) except Exception: # TODO: handle dropped events see: TaurusTrend._onDroppedEvent raise self._addData(xValues, yValues) def parentChanged(self): """Reimplementation of :meth:`PlotDataItem.parentChanged` to handle the change of the containing viewbox """ PlotDataItem.parentChanged(self) self._updateViewBox(self.getViewBox()) # update legend if needed try: legend = self.getViewWidget().getPlotItem().legend except Exception: legend = None if legend is not self._legend: self._removeFromLegend(self._legend) self._addToLegend(legend) self._legend = legend # Set period from ForcedReadTool (if found) try: for a in self.getViewBox().menu.actions(): if isinstance(a, ForcedReadTool) and a.autoconnect(): self.setForcedReadPeriod(a.period()) break except Exception as e: self.debug("cannot set period from ForcedReadTool: %r", e) @property def forcedReadPeriod(self): """Returns the forced reading period (in ms). A value <= 0 indicates that the forced reading is disabled """ return self._timer.interval() def setForcedReadPeriod(self, period): """ Forces periodic reading of the subscribed attribute in order to show new points even if no events are received. It will create fake events as needed with the read value. It will also block the plotting of regular events when period > 0. :param period: (int) period in milliseconds. Use period<=0 to stop the forced periodic reading """ # stop the timer and remove the __ONLY_OWN_EVENTS filter self._timer.stop() filters = self.getEventFilters() if self.__ONLY_OWN_EVENTS in filters: filters.remove(self.__ONLY_OWN_EVENTS) self.setEventFilters(filters) # if period is positive, set the filter and start if period > 0: self.insertEventFilter(self.__ONLY_OWN_EVENTS) self._timer.start(period) def _forceRead(self, cache=False): """Forces a read of the associated attribute. :param cache: (bool) If True, the reading will be done with cache=True but the timestamp of the resulting event will be replaced by the current time. If False, no cache will be used at all. """ value = self.getModelValueObj(cache=cache) if value is None: # This is intended to show no data when no points are available. # We can get archiving values if available and needed. value = TaurusAttrValue() value.rvalue = Quantity(numpy.nan) value.time = TaurusTimeVal.now() self.warning("The attribute has no an actual value, check either " "if the attribute exists or the device is down. " "Or load data from archiving if needed.") if cache and value is not None: value = copy.copy(value) value.time = TaurusTimeVal.now() self.fireEvent(self, TaurusEventType.Periodic, value) def __ONLY_OWN_EVENTS(self, s, t, v): """An event filter that rejects all events except those that originate from this object """ if s is self: return s, t, v else: return None def _getCurveNames(self): """returns the list of curve names (may have been changed by user!)""" return [c.name() for c in self._curves] def _setCurveNames(self, names): """restore options to curves""" # If no curves are yet created, force a read to create them if not self._curves: self._forceRead(cache=True) if len(names) != len(self._curves): self.warning("Cannot restore trend curve names (%s)", names) for curve, name in zip(self._curves, names): curve.setData(name=name) def _getCurvesOpts(self): """returns a list of serialized opts (one for each curve)""" from taurus_pyqtgraph import serialize_opts return [serialize_opts(copy.copy(c.opts)) for c in self._curves] def _setCurvesOpts(self, all_opts): """restore options to curves""" # If no curves are yet created, force a read to create them if not self._curves: self._forceRead(cache=True) # Check consistency in the number of curves if len(self._curves) != len(all_opts): self.warning( "Cannot apply curve options (mismatch in curves number)" ) return from taurus_pyqtgraph import deserialize_opts for c, opts in zip(self._curves, all_opts): c.opts = deserialize_opts(opts) # This is a workaround for the following pyqtgraph's bug: # https://github.com/pyqtgraph/pyqtgraph/issues/531 if opts["connect"] == "all": c.opts["connect"] = "all" elif opts["connect"] == "pairs": c.opts["connect"] = "pairs" elif opts["connect"] == "finite": c.opts["connect"] = "finite" def getFullModelNames(self): """ Return a tuple of (None, fullmodelname) for API compatibility with :class:`TaurusPlotDataItem`. """ return (None, self.getFullModelName()) def setBufferSize(self, buffer_size): """sets the maximum number of points to store per trend curve :param buffer_size: (int) max number of points to store per trend curve """ self._maxBufferSize = buffer_size try: if self._xBuffer is not None: # discard oldest data if needed for downsizing excess = len(self._xBuffer) - buffer_size if excess > 0: self._xBuffer.moveLeft(excess) self._xBuffer.resizeBuffer(buffer_size) # resize self._xBuffer.setMaxSize(buffer_size) if self._yBuffer is not None: # discard oldest data if needed for downsizing excess = len(self._yBuffer) - buffer_size if excess > 0: self._yBuffer.moveLeft(excess) self._yBuffer.resizeBuffer(buffer_size) # resize self._yBuffer.setMaxSize(buffer_size) except ValueError: self.info( "buffer downsizing requested." + "Current contents will be discarded" ) self.clearBuffer() def bufferSize(self): """returns the maximum number of points to be stored by the trends""" return self._maxBufferSize def _update(self): """Force repaint of the curves""" xValues = self._xBuffer.contents() yValues = self._yBuffer.contents() self._addData(xValues, yValues) if __name__ == "__main__": import sys import pyqtgraph as pg from taurus.qt.qtgui.application import TaurusApplication from taurus_pyqtgraph import ( # TaurusTrendSet, DateAxisItem, XAutoPanTool, # TaurusModelChooserTool, CurvesPropertiesTool, ) from taurus.core.taurusmanager import TaurusManager taurusM = TaurusManager() taurusM.changeDefaultPollingPeriod(1000) # ms app = TaurusApplication() # a standard pyqtgraph plot_item axis = DateAxisItem(orientation="bottom") w = pg.PlotWidget() axis.attachToPlotItem(w.getPlotItem()) cp = CurvesPropertiesTool() cp.attachToPlotItem(w.getPlotItem()) autopan = XAutoPanTool() autopan.attachToPlotItem(w.getPlotItem()) # add legend to the plot, for that we have to give a name to plot items w.addLegend() # adding a taurus data item... c2 = TaurusTrendSet(name="foo") c2.setModel("eval:rand(2)") # c2.setForcedReadPeriod(500) w.addItem(c2) # ...and remove it after a while def rem(): w.removeItem(c2) Qt.QTimer.singleShot(2000, rem) # modelchooser = TaurusModelChooserTool(itemClass=TaurusTrendSet) # modelchooser.attachToPlotItem(w.getPlotItem()) w.show() ret = app.exec_() # import pprint # pprint.pprint(c2.createConfig()) sys.exit(ret) titlepatterneditor.py000066400000000000000000000031551514602004300325450ustar00rootroot00000000000000taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/taurus_pyqtgraphfrom taurus.external.qt import QtWidgets EVALUATION_KEYS = { "{attr.label}": lambda proxy: proxy.label, "{attr.name}": lambda proxy: proxy.name, "{attr.fullname}": lambda proxy: proxy.fullname, "{dev.name}": lambda proxy: proxy.parentObj.name, "{dev.fullname}": lambda proxy: proxy.parentObj.fullname } class TitlePatternEditor: def __init__(self): self.legend_pattern = "{attr.label}" def showDialog(self): """Show pop up to change title on curves""" msg = ( "Choose the title format. \n" + "You may use Python format() syntax. The TaurusDevice object\n" + 'can be referenced as "dev" and the TaurusAttribute object\n' + 'as "attr"' ) evaluation_keys = { "{attr.label}": lambda proxy: proxy.label, "{attr.name}": lambda proxy: proxy.name, "{attr.fullname}": lambda proxy: proxy.fullname, "{dev.name}": lambda proxy: proxy.parentObj.name, "{dev.fullname}": lambda proxy: proxy.parentObj.fullname } if self.legend_pattern not in evaluation_keys: evaluation_keys[self.legend_pattern] = lambda proxy: "" selected_option_index = (list(evaluation_keys.keys()) .index(self.legend_pattern)) label_config, ok = QtWidgets.QInputDialog.getItem( None, "Change Title Pattern", msg, evaluation_keys, selected_option_index, True ) if ok: self.legend_pattern = label_config return label_config else: return False taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/taurus_pyqtgraph/trend.py000066400000000000000000000403731514602004300300150ustar00rootroot00000000000000#!/usr/bin/env python ############################################################################# ## # This file is part of Taurus ## # http://taurus-scada.org ## # Copyright 2011 CELLS / ALBA Synchrotron, Bellaterra, Spain ## # Taurus is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. ## # Taurus is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. ## # You should have received a copy of the GNU Lesser General Public License # along with Taurus. If not, see . ## ############################################################################# from __future__ import absolute_import __all__ = ["TaurusTrend"] import copy import traceback from pyqtgraph import PlotWidget from taurus.core.util.containers import LoopList from taurus.core.util.log import Logger from taurus.external.qt import QtGui, PYSIDE2, QtWidgets from taurus.external.qt.Qt import pyqtProperty from taurus.external.qt.QtCore import QTimer from taurus.qt.qtcore.configuration import BaseConfigurableClass from taurus_pyqtgraph.statisticstool import StatisticsTool from .archivingtool import ArchivingTool from .autopantool import XAutoPanTool from .buffersizetool import BufferSizeTool from .curveproperties import CURVE_COLORS, RangeOptions, set_range_on_trend from .curvespropertiestool import CurvesPropertiesTool from .datainspectortool import DataInspectorTool from .dateaxisitem import DateAxisItem from .forcedreadtool import ForcedReadTool from .legendtool import PlotLegendTool from .taurusmodelchoosertool import TaurusXYModelChooserTool from .taurustrendset import TaurusTrendSet from .y2axis import Y2ViewBox from .titlepatterneditor import TitlePatternEditor, EVALUATION_KEYS _QT_PLUGIN_INFO = { "module": "taurus.qt.qtgui.tpg", "group": "Taurus Display", "icon": "logos:taurus.png", "container": True, } class TaurusTrend(PlotWidget, BaseConfigurableClass): """ TaurusTrend is a general widget for plotting the evolution of a value over time. It is an extended taurus-aware version of :class:`pyqtgraph.PlotWidget`. Apart from all the features already available in a regular PlotWidget, TaurusTrend incorporates the following tools/features: - Secondary Y axis (right axis) - Time X axis - A plot configuration dialog, and save/restore configuration facilities - A menu option for adding/removing taurus models - A menu option for showing/hiding the legend - Automatic color change of curves for newly added models - Archiving data retrieval (if an archiving reader is available) - A curve properties tool widget that enables to change curve style """ def __init__(self, parent=None, **kwargs): buffer_size = kwargs.pop("buffer_size", 65536) if PYSIDE2: # Workaround for https://bugreports.qt.io/browse/PYSIDE-1564 BaseConfigurableClass.__init__(self) PlotWidget.__init__(self, parent=parent, **kwargs) else: super(TaurusTrend, self).__init__(parent=parent, **kwargs) # Compose with a Logger self._logger = Logger(name=self.__class__.__name__) self.debug = self._logger.debug self.info = self._logger.info self.warning = self._logger.warning self.error = self._logger.error # set up cyclic color generator self._curveColors = LoopList(CURVE_COLORS) self._curveColors.setCurrentIndex(-1) self.titlePatternEditor = TitlePatternEditor() plot_item = self.getPlotItem() menu = plot_item.getViewBox().menu # add trends clear action clearTrendsAction = QtGui.QAction("Clear trends", menu) clearTrendsAction.triggered.connect(self.clearTrends) menu.addAction(clearTrendsAction) # add save & retrieve configuration actions saveConfigAction = QtGui.QAction("Save configuration", menu) saveConfigAction.triggered.connect(self._onSaveConfigAction) menu.addAction(saveConfigAction) loadConfigAction = QtGui.QAction("Retrieve saved configuration", menu) loadConfigAction.triggered.connect(self._onLoadConfigAction) menu.addAction(loadConfigAction) # add change curve labels changeCurvesTitlesAction = QtGui.QAction("Change Curves Titles " "(All curves)...", menu) changeCurvesTitlesAction.triggered.connect( self._onChangeCurvesTitlesAction) menu.addAction(changeCurvesTitlesAction) # Add archiving tool to trend self._archiving_tool = ArchivingTool(self) self.registerConfigProperty(self._getState, self.restoreState, "state") self.registerConfigProperty(self._getDynamicRange, self.restoreDynamicRange, "dynamicRange") # self.registerConfigProperty( # lambda: self.getAxisLogMode("left"), # lambda enabled: self.setAxisLogMode("y", isEnabled=enabled), # "leftAxisLogMode") # self.registerConfigProperty( # lambda: self.getAxisLogMode("bottom"), # lambda enabled: self.setAxisLogMode("x", isEnabled=enabled), # "bottomAxisLogMode") # add legend tool legend_tool = PlotLegendTool(self) legend_tool.attachToPlotItem(plot_item) # add model chooser self._model_chooser_tool = TaurusXYModelChooserTool( self, itemClass=TaurusTrendSet, showX=False ) self._model_chooser_tool.attachToPlotItem( self.getPlotItem(), self, self._curveColors ) # add statistics tool self._statistics_tool = StatisticsTool(self, itemClass=TaurusTrendSet) self._statistics_tool.attachToPlotItem(self.getPlotItem(), self) # add Y2 axis self._y2 = Y2ViewBox() self._y2.attachToPlotItem(self.getPlotItem()) # Add time X axis axis = DateAxisItem(orientation="bottom") axis.attachToPlotItem(plot_item) # add plot configuration dialog self.cprop_tool = CurvesPropertiesTool(self) self.cprop_tool.attachToPlotItem(plot_item, y2=self._y2) # add data inspector widget inspector_tool = DataInspectorTool(self) inspector_tool.attachToPlotItem(self.getPlotItem()) # add force read tool self._fr_tool = ForcedReadTool(self) self._fr_tool.attachToPlotItem(self.getPlotItem()) # add buffer size tool self.buffer_tool = BufferSizeTool(self, buffer_size=buffer_size) self.buffer_tool.attachToPlotItem(self.getPlotItem()) # Add the auto-pan ("oscilloscope mode") tool self._autopan = XAutoPanTool() self._autopan.attachToPlotItem(self.getPlotItem()) # add Set View Range actions x_axis_menu = self.plotItem.x_axis_menu label = QtGui.QLabel("Set View Range: ") label.setObjectName("range_label") self.combo_box = QtGui.QComboBox(self) self.combo_box.setObjectName("range_combo_box") self.combo_box.setEditable(True) for option in RangeOptions: self.combo_box.addItem(str(option)) x_axis_menu.addWidget(label, 8, 0, 1, 2) x_axis_menu.addWidget(self.combo_box, 8, 2, 1, 2) self.combo_box.activated.connect(self._on_range_idx_changed) # Register config properties self.registerConfigDelegate(self._model_chooser_tool, "XYmodelchooser") # self.registerConfigDelegate(self._y2, "Y2Axis") self.registerConfigDelegate(self.cprop_tool, "CurvePropertiesTool") self.registerConfigDelegate(legend_tool, "legend") self.registerConfigDelegate(self._fr_tool, "forceread") self.registerConfigDelegate(self.buffer_tool, "buffer") self.registerConfigDelegate(inspector_tool, "inspector") def __getitem__(self, idx): """ Provides a list-like interface: items can be accessed using slice notation """ return self._getCurves()[idx] def __len__(self): return len(self._getCurves()) def __bool__(self): return True def _on_range_idx_changed(self): time_range = self.combo_box.currentText() plot_item = self.getPlotItem() set_range_on_trend(time_range, plotItem=plot_item) plot_item.getViewBox().menu.close() def _getCurves(self): """returns a flat list with all items from all trend sets""" ret = [] for ts in self.getTrendSets(): ret += ts[:] return ret def getTrendSets(self): """Returns all the trend sets attached to this plot item""" return [ e for e in self.getPlotItem().listDataItems() if isinstance(e, TaurusTrendSet) ] def clearTrends(self): """Clear the buffers of all the trend sets in the plot""" for ts in self.getTrendSets(): ts.clearBuffer() def setModel(self, names): """Set a list of models""" # support passing a string in names instead of a sequence if isinstance(names, str): names = [names] self._model_chooser_tool.updateModels(names or []) def getModel(self): models = [] for _, yModel in self._model_chooser_tool.getModelNames(): models.append(yModel) return models def resetModel(self): self.setModel("") def addModels(self, names): """Reimplemented to delegate to the model chooser""" # support passing a string in names if isinstance(names, str): names = [names] self._model_chooser_tool.addModels(names) def _getState(self): """Same as PlotWidget.saveState but removing viewRange conf to force a refresh with targetRange when loading """ state = copy.deepcopy(self.saveState()) # remove viewRange conf del state["view"]["viewRange"] if self.combo_box.currentText().strip() != "": # If a dynamicRange exists the targetRange has to be removed del state["view"]["targetRange"] return state def setXAxisMode(self, x_axis_mode): """Required generic TaurusTrend API """ if x_axis_mode != "t": raise NotImplementedError( # TODO 'X mode "{}" not yet supported'.format(x_axis_mode) ) def getAxisLogMode(self, axis): if axis in ["left", "y"]: axis = "left" elif axis in ["bottom", "x"]: axis = "bottom" return self.plotItem.getAxis(axis).logMode def setAxisLogMode(self, axis, isEnabled=False): """ Method to change log mode of a desired axis. Possible options: setAxisLogMode("left", True) setAxisLogMode("bottom", True) setAxisLogMode("y", True) # The same as left setAxisLogMode("x", True) # The same as bottom """ if axis in ["left", "y"]: axisObject = self.plotItem.getAxis("bottom") try: axisObject.setLogMode(y=isEnabled) except Exception: self.warning("Could not restore log mode for axis {} with " "type {}.".format(axis, str(type(axisObject)))) self.warning("Exception: {}".format(traceback.format_exc())) axis = "left" elif axis in ["bottom", "x"]: axisObject = self.plotItem.getAxis("bottom") try: axisObject.setLogMode(x=isEnabled) except Exception: self.warning("Could not restore log mode for axis {} with " "type {}.".format(axis, str(type(axisObject)))) self.warning("Exception: {}".format(traceback.format_exc())) axis = "bottom" else: axis = False if axis: menu = self.plotItem.getViewBox().menu if hasattr(menu, "axes"): x_menu, y_menu = menu.axes actions = [] if axis == "left": actions = y_menu.actions() elif axis == "bottom": actions = x_menu.actions() for action in actions: if action.text() == "Log scale": action.setChecked(isEnabled) else: submenus = menu.findChildren(QtWidgets.QMenu) menu_title = "Y axis" if axis == "left" else "X axis" for submenu in submenus: if submenu.title() == menu_title: for action in submenu.actions(): if action.text() == "Log scale": action.setChecked(isEnabled) def setForcedReadingPeriod(self, period): """Required generic TaurusTrend API """ self._fr_tool.setPeriod(period) def setMaxDataBufferSize(self, buffer_size): """Required generic TaurusTrend API """ self.buffer_tool.setBufferSize(buffer_size) def _onSaveConfigAction(self): """wrapper to avoid issues with overloaded signals""" return self.saveConfigFile() def _onLoadConfigAction(self): """wrapper to avoid issues with overloaded signals""" return self.loadConfigFile() def _onChangeCurvesTitlesAction(self): """Show pop up to change title on curves""" label_config = self.titlePatternEditor.showDialog() if label_config: for item in self.getTrendSets(): result = label_config for key, resolver in EVALUATION_KEYS.items(): if key in self.titlePatternEditor.legend_pattern: try: result = result.replace(key, resolver(item.modelObj)) except AttributeError: self._logger.warning(traceback.format_exc()) result = result.replace(key, "NoDef") if len(item) == 1: item[0].setData(name=result) self.plotItem.legend.getLabel(item[0]).setText(result) if len(item) > 1: for i in range(len(item)): result_array = "{}[{}]".format(result, i) item[i].setData(name=result_array) (self.plotItem.legend.getLabel(item[i]) .setText(result_array)) def _getDynamicRange(self): # get the actual range return self.combo_box.currentText() def restoreDynamicRange(self, dynamicRange): # restore dynamic_range if exists # It has to be done after the view is rendered, # if not, the restore does not work properly def delayed_function(): if dynamicRange.strip() != "": self.combo_box.setCurrentText(dynamicRange) set_range_on_trend(dynamicRange, self.getPlotItem()) self.setAutoVisible(y=True) QTimer.singleShot(3000, delayed_function) @classmethod def getQtDesignerPluginInfo(cls): return _QT_PLUGIN_INFO # This needs to be here to be picked up by the taurus designer. model = pyqtProperty("QStringList", getModel, setModel, resetModel) def trend_main( models=(), config_file=None, demo=False, window_name="TaurusTrend (pg)" ): """Launch a TaurusTrend""" import sys from taurus.qt.qtgui.application import TaurusApplication app = TaurusApplication(cmd_line_parser=None, app_name="taurustrend(pg)") w = TaurusTrend() w.setWindowTitle(window_name) if demo: models = list(models) models.extend(["eval:rand()", "eval:1+rand(2)"]) if config_file is not None: w.loadConfigFile(config_file) if models: w.setModel(models) w.show() ret = app.exec_() sys.exit(ret) if __name__ == "__main__": trend_main(models=("eval:rand()", "sys/tg_test/1/ampli"),) taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/taurus_pyqtgraph/ui/000077500000000000000000000000001514602004300267355ustar00rootroot00000000000000CurvesAppearanceChooser.ui000066400000000000000000000425141514602004300337750ustar00rootroot00000000000000taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/taurus_pyqtgraph/ui curvesAppearanceChooserDlg 0 0 740 470 0 0 740 470 16777215 500 Form Qt::LeftToRight QLayout::SetMaximumSize 0 275 16777215 275 Curves Appearance 261 30 172 195 Line 0 0 &Area Fill S&tyle lStyleCB 0 0 -- -1 100 1 0 0 true <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Style of the pen used to connect the points.</p></body></html> Step mode Co&lor lColorCB &Width lWidthSB <html><head/><body><p><span style=" font-family:'Sans Serif';">Step mode: whether the data points are connected with flat steps or straight lines</span></p></body></html> 14 30 241 231 0 0 QAbstractItemView::ExtendedSelection false 439 30 135 195 Symbols &Style sStyleCB Si&ze sSizeSB -- -1 100 1 3 &Color sColorCB Qt::Vertical 111 16 &Fill false 580 30 132 195 Other Curve Title(s)... Assign to axis <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Assign selected curves to Y1 (left axis)</p></body></html> &Y1 false <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Assign selected curves to Y2 (right axis)</p></body></html> Y&2 false 0 0 Background fill... 260 230 451 32 6 QLayout::SetDefaultConstraint 0 0 0 0 30 &Reset 0 0 0 30 Qt::LeftToRight &Apply 0 0 0 200 150 200 150 0 0 X Axis Configuration Qt::AlignCenter Apply <html><head/><body><p><span style=" font-size:10pt;">Range of time for the X axis</span></p></body></html> true Range lStyleCB Qt::Horizontal 40 20 TaurusItemConfDlg.ui000066400000000000000000000063401514602004300325570ustar00rootroot00000000000000taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/taurus_pyqtgraph/ui TaurusItemConfDlg 0 0 850 495 Form Qt::Horizontal Sources of data Contents & appearance 400 0 Qt::CustomContextMenu QAbstractItemView::DragDrop Qt::Horizontal 40 20 Qt::Horizontal 40 20 Reload Cancel Apply taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/taurus_pyqtgraph/util.py000066400000000000000000000016131514602004300276500ustar00rootroot00000000000000def unique_data_item_name(name, existing): """Accepts a name and a list of existing names and returns a name qhich may be modified with a numerical suffix such as " (1)", or " (2)", etc in order to avoid duplications with the existing names """ base = name i = 1 while name in existing: i += 1 name = "{} ({})".format(base, i) return name def ensure_unique_curve_name(dataItem, plotItem): """Given a plotItem, it changes its name adding a prefix as in `unique_data_item_name`" to avoid duplication of names with respect to the plotDataItems contained in Sardana """ name = dataItem.name() if name is None: return dataItem existing = [e.name() for e in plotItem.listDataItems()] new_name = unique_data_item_name(name, existing) if new_name != name: dataItem.opts["name"] = new_name return dataItem taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/taurus_pyqtgraph/y2axis.py000066400000000000000000000256631514602004300301250ustar00rootroot00000000000000#!/usr/bin/env python ############################################################################# ## # This file is part of Taurus ## # http://taurus-scada.org ## # Copyright 2011 CELLS / ALBA Synchrotron, Bellaterra, Spain ## # Taurus is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. ## # Taurus is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. ## # You should have received a copy of the GNU Lesser General Public License # along with Taurus. If not, see . ## ############################################################################# __all__ = ["Y2ViewBox", "set_y_axis_for_curve"] from pyqtgraph import ViewBox, PlotItem from taurus.external.qt import QtWidgets from taurus.qt.qtcore.configuration.configuration import BaseConfigurableClass def set_y_axis_for_curve(y2, dataItem, plotItem, y2Axis): """ Sets properties provided in the `properties` dict to curves provided in the `curves` dict. The association of a given curve with a property is done by matching the keys in the respective dictionaries :param y2: `True` indicates that the `dataItem` should be associated to y2, `False` indicates that it should be associated to the main viewbox, and `None` indicates that no change should be done. :param plotItem: The :class:`PlotItem` containing the dataItem. :param y2Axis: The :class:`Y2ViewBox` instance """ # Set the Y1 / Y2 axis if required old_view = dataItem.getViewBox() # current view for the curve if y2 is None: # axis is not to be changed new_view = old_view elif y2: # Y axis must be Y2 new_view = y2Axis # y2 axis view else: # Y axis must be Y1 new_view = plotItem.getViewBox() # main view if new_view is not old_view: if old_view is not None: old_view.removeItem(dataItem) if not y2: # adapt the log mode to the main view logMode # (this is already done automatically when adding to y2) dataItem.setLogMode( plotItem.getAxis("bottom").logMode, plotItem.getAxis("left").logMode, ) new_view.addItem(dataItem) old_view.autoRange() new_view.autoRange() def _PlotItem_addItem(self, item, *args, **kwargs): """replacement for `PlotItem.addItem` that Y2Axis will use to monkey-patch the original one """ PlotItem.addItem(self, item, *args, **kwargs) if hasattr(item, "setLogMode"): item.setLogMode( self.getAxis("bottom").logMode, self.getAxis("left").logMode ) class Y2ViewBox(ViewBox, BaseConfigurableClass): """ A tool that inserts a secondary Y axis to a plot item (see :meth:`attachToPlotItem`). It is implemented as a :class:`pyqtgraph.ViewBox` and provides methods to add and remove :class:`pyqtgraph.PlotDataItem` objects to it. """ def __init__(self, *args, **kwargs): self._isAttached = False self.plotItem = None name = kwargs.pop("name", "Y2 ViewBox") BaseConfigurableClass.__init__(self) ViewBox.__init__(self, *args, name=name, **kwargs) self.registerConfigProperty( self._getCurvesNames, self._addCurvesByName, "Y2Curves" ) self.registerConfigProperty(self._getState, self.setState, "viewState") def attachToPlotItem(self, plot_item): """Use this method to add this axis to a plot :param plot_item: (PlotItem) """ if self._isAttached: return # TODO: log a message it's already attached self._isAttached = True self.mainViewBox = plot_item.getViewBox() self.mainViewBox.sigResized.connect(self._updateViews) self.plotItem = plot_item # add axis-independent actions for logarithmic scale self._addLogAxisActions() # disable the standard (custom view-unfriendly) log actions self.plotItem.ctrl.logXCheck.setEnabled(False) self.plotItem.ctrl.logYCheck.setEnabled(False) # monkey-patch the addItem method of the PlotItem from types import MethodType self.plotItem.addItem = MethodType(_PlotItem_addItem, self.plotItem) # add Y2 to main scene(), show the axis and link X axis to self. # self.plotItem.showAxis("right", show=bool(self.addedItems)) self.plotItem.scene().addItem(self) self.plotItem.getAxis("right").linkToView(self) self.setXLink(self.plotItem.getViewBox()) # make autorange button work for Y2 too self.plotItem.autoBtn.clicked.connect(self._onAutoBtnClicked) def _updateViews(self, viewBox): self.setGeometry(viewBox.sceneBoundingRect()) self.linkedViewChanged(viewBox, self.XAxis) def removeItem(self, item): """Reimplemented from :class:`pyqtgraph.ViewBox`""" ViewBox.removeItem(self, item) if self.plotItem is not None: self.plotItem.showAxis("right", show=bool(self.addedItems)) def addItem(self, item, ignoreBounds=False): """Reimplemented from :class:`pyqtgraph.ViewBox`""" # first add it to plotItem and then move it from main viewbox to y2 if self.plotItem is not None: if item not in self.plotItem.listDataItems(): self.plotItem.addItem(item) if item in self.plotItem.getViewBox().addedItems: self.plotItem.getViewBox().removeItem(item) ViewBox.addItem(self, item, ignoreBounds=ignoreBounds) if self.plotItem is not None: self.plotItem.showAxis("right", show=bool(self.addedItems)) # set the item log mode to match this view: if hasattr(item, "setLogMode"): item.setLogMode( self.plotItem.getAxis("bottom").logMode, self.plotItem.getAxis("right").logMode, ) def _getCurvesNames(self): """Returns the curve names associated to the Y2 axis. :return: (list) List of tuples of model names (xModelName, yModelName) from each curve in this view """ if self.plotItem is None: return [] ret = [] for c in self.plotItem.listDataItems(): if c.getViewBox() == self and hasattr(c, "getFullModelNames"): ret.append(c.getFullModelNames()) return ret def _addCurvesByName(self, names): curves = {} for c in self.plotItem.listDataItems(): if hasattr(c, "getFullModelNames"): curves[c.getFullModelNames()] = c for n in names: c = curves[n] vb = c.getViewBox() if vb != self: vb.removeItem(c) self.addItem(c) def _getState(self): """Same as ViewBox.getState but removing viewRange conf to force a refresh with targetRange when loading """ state = self.getState(copy=True) del state["viewRange"] return state def clearItems(self): """Remove the added items""" for c in self.addedItems: self.removeItem(c) def _addLogAxisActions(self): # insert & connect actions Log Scale Actions # In newer PyQtGraph versions (>0.13.1) there is no "menu.axes" # property, yet in older versions the QMenu is not added in # as child of the menu. def _addLogAxisAction(menu, position, on_toggle_slot): action = menu.addAction("Log scale") action.setCheckable(True) action.setChecked(self.plotItem.getAxis(position).logMode) action.setParent(menu) action.toggled.connect(on_toggle_slot) return action vb = self.plotItem.getViewBox() vb_submenus = vb.menu.findChildren(QtWidgets.QMenu) # We may have added Archiving menu, so we filter it out vb_submenus = [m for m in vb_submenus if m.title() != "Archiving"] # if the list is empty, it is assumed the version is <0.13.2 if not vb_submenus: # X (bottom) menu = self.plotItem.getViewBox().menu.axes[0] action = _addLogAxisAction(menu, "bottom", self._onXLogToggled) self.menu.axes[0].addAction(action) # Add same action to X2 menu # Y1 (left) menu = self.plotItem.getViewBox().menu.axes[1] _addLogAxisAction(menu, "left", self._onY1LogToggled) # Y2 (right) menu = self.menu.axes[1] _addLogAxisAction(menu, "right", self._onY2LogToggled) else: for submenu in vb_submenus: if submenu.title() == "X axis": action = _addLogAxisAction(submenu, "bottom", self._onXLogToggled) elif submenu.title() == "Y axis": _addLogAxisAction(submenu, "left", self._onY1LogToggled) for submenu in self.menu.findChildren(QtWidgets.QMenu): if submenu.title() == "X axis": submenu.addAction(action) # Add same action to X2 menu too elif submenu.title() == "Y axis": _addLogAxisAction(submenu, "right", self._onY2LogToggled) def _onXLogToggled(self, checked): logx = checked # set log mode for items of main viewbox logy = self.plotItem.getAxis("left").logMode for i in self.plotItem.getViewBox().addedItems: if hasattr(i, "setLogMode"): i.setLogMode(logx, logy) # set log mode for items of Y2 viewbox logy = self.plotItem.getAxis("right").logMode for i in self.addedItems: if hasattr(i, "setLogMode"): i.setLogMode(logx, logy) # set log mode for the bottom axis self.plotItem.getAxis("bottom").setLogMode(checked) def _onY1LogToggled(self, checked): # set log mode for items of main viewbox logx = self.plotItem.getAxis("bottom").logMode logy = checked for i in self.plotItem.getViewBox().addedItems: if hasattr(i, "setLogMode"): i.setLogMode(logx, logy) # set log mode for the left axis self.plotItem.getAxis("left").setLogMode(checked) def _onY2LogToggled(self, checked): # set log mode for items of Y2 viewbox logx = self.plotItem.getAxis("bottom").logMode logy = checked for i in self.addedItems: if hasattr(i, "setLogMode"): i.setLogMode(logx, logy) # set log mode for the right axis self.plotItem.getAxis("right").setLogMode(checked) def _onAutoBtnClicked(self): self.enableAutoRange() taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/tests/000077500000000000000000000000001514602004300240405ustar00rootroot00000000000000taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/tests/__init__.py000066400000000000000000000000001514602004300261370ustar00rootroot00000000000000taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/tests/test_curveproperties.py000066400000000000000000000061071514602004300307160ustar00rootroot00000000000000import copy from taurus.external.qt import Qt from taurus_pyqtgraph.curveproperties import ( CurveAppearanceProperties, CONFLICT, ) p_all_conflict = CurveAppearanceProperties() p1 = CurveAppearanceProperties( sStyle="t", sSize=2, sColor="r", sFill=False, lStyle=Qt.Qt.DashLine, lWidth=3, lColor="b", stepMode="left", y2=True, cFill=False, title="p1, all set", visible=True, ) p2 = CurveAppearanceProperties( sStyle=None, sSize=-1, sColor="b", sFill=True, lStyle=Qt.Qt.SolidLine, lWidth=5, lColor="y", stepMode="right", y2=False, cFill=True, title="p2, all set", visible=False, ) p3 = copy.deepcopy(p1) p3.sSize = 3 p3.lStyle = CONFLICT p4 = copy.deepcopy(p1) p4.sSize = 3 p4.lColor = "g" def test_curveproperties_conflictsWith(qtbot): assert p1.conflictsWith(copy.deepcopy(p1), strict=False) == [] assert p1.conflictsWith(copy.deepcopy(p1), strict=True) == [] assert p1.conflictsWith(p_all_conflict, strict=False) == [] assert p1.conflictsWith(p_all_conflict, strict=True) == p1.propertyList assert p1.conflictsWith(p2, strict=False) == p1.propertyList assert p1.conflictsWith(p2, strict=True) == p1.propertyList assert p1.conflictsWith(p3, strict=False) == ["sSize"] assert p1.conflictsWith(p3, strict=True) == ["sSize", "lStyle"] def test_curveproperties_merge(qtbot): merged = p1.merge([p1, p3]) for a in merged.propertyList: if a in ["sSize", "lStyle"]: assert getattr(merged, a) == CONFLICT, "mismatch: %s" % a else: assert getattr(merged, a) == getattr(p1, a), "mismatch: %s" % a merged = p1.merge([p1, p3, p4]) for a in merged.propertyList: if a in ["sSize", "lStyle", "lColor"]: assert getattr(merged, a) == CONFLICT, "mismatch: %s" % a else: assert getattr(merged, a) == getattr(p1, a), "mismatch: %s" % a merged = p1.merge([p3, p1, p3, p3, p3, p3]) for a in merged.propertyList: if a in ["sSize", "lStyle"]: assert getattr(merged, a) == CONFLICT, "mismatch: %s" % a else: assert getattr(merged, a) == getattr(p1, a), "mismatch: %s" % a merged = p1.merge([p1, p3], conflict=p1.inConflict_update_a) assert merged.sSize == p3.sSize, "update a with b if they differ" assert merged.lStyle == p1.lStyle, "do not update when b is in conflict" for a in merged.propertyList: if a not in ["sSize", "lStyle"]: assert getattr(merged, a) == getattr(p3, a), "mismatch: %s" % a merged = p1.merge([p1, p2], conflict=p1.inConflict_update_a) for a in merged.propertyList: assert getattr(merged, a) == getattr(p2, a), "mismatch: %s" % a merged = p1.merge([p1, p_all_conflict], conflict=p1.inConflict_update_a) for a in merged.propertyList: assert getattr(merged, a) == getattr(p1, a), "mismatch: %s" % a merged = p1.merge([p1, p_all_conflict], conflict=p1.inConflict_update_a) for a in merged.propertyList: assert getattr(merged, a) == getattr(p1, a), "mismatch: %s" % a taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/tests/test_dateaxisitem.py000066400000000000000000000111641514602004300301350ustar00rootroot00000000000000import taurus_pyqtgraph as tpg from datetime import datetime from locale import getlocale import pytest try: fromisoformat = datetime.fromisoformat except AttributeError: # py <3.7 def fromisoformat(s): for fmt in ( "%Y-%m-%dT%H:%M:%S.%f", "%Y-%m-%dT%H:%M:%S", "%Y-%m-%dT%H:%M", "%Y-%m-%d", ): try: return datetime.strptime(s, fmt) except ValueError: pass raise ValueError("cannot convert {}".format(s)) @pytest.mark.parametrize( "val_range,expected", [ # FIXME: Known to fail in python 3.9, commented since all other tests # are passing fine and there is no apparent reason for this to fail # ( # ["2020-01-01T00:01:00.100", "2020-01-01T00:01:00.500"], # ["2020-01-01T00:01:00.200", "2020-01-01T00:01:00.400"], # ), ( ["2020-01-01T00:00:04.900", "2020-01-01T00:00:07.900"], # d=1s [ "2020-01-01T00:00:05", "2020-01-01T00:00:06", "2020-01-01T00:00:07", ], ), ( ["2020-01-01T00:00:04", "2020-01-01T00:00:37"], # d=10s [ "2020-01-01T00:00:10", "2020-01-01T00:00:20", "2020-01-01T00:00:30", ], ), ( ["2020-01-01T00:05:10", "2020-01-01T00:08:50"], # d=1m ["2020-01-01T00:06", "2020-01-01T00:07", "2020-01-01T00:08"], ), ( ["2020-01-01T00:45:10", "2020-01-01T01:15:50"], # d=10m ["2020-01-01T00:50", "2020-01-01T01:00", "2020-01-01T01:10"], ), ( ["2020-01-01T00:45:10", "2020-01-01T03:15:50"], # d=1h ["2020-01-01T01:00", "2020-01-01T02:00", "2020-01-01T03:00"], ), ( ["2020-01-01T00:45:10", "2020-04-01T03:15:50"], # d=1month ["2020-02-01", "2020-03-01", "2020-04-01"], ), ( ["2020-01-01T00:45:10", "2023-04-01T03:15:50"], # d=1y ["2021-01-01", "2022-01-01", "2023-01-01"], ), ], ) def test_tickValues(qtbot, val_range, expected): """ Check that the tickValues reimplementation returns the expected values """ w = tpg.TaurusTrend() qtbot.addWidget(w) a = w.getPlotItem().axes["bottom"]["item"] minVal, maxVal = [fromisoformat(v).timestamp() for v in val_range] exp = [fromisoformat(v).timestamp() for v in expected] assert a.tickValues(minVal, maxVal, 10000)[0][1] == exp def test_tickValues_overflow(qtbot): """ Check that the tickValues reimplementation returns the expected values """ w = tpg.TaurusTrend() qtbot.addWidget(w) a = w.getPlotItem().axes["bottom"]["item"] # check that the datetime overflows do not break the call assert a.tickValues(-1e19, 0, 1e3) == [(1e19, [])] assert a.tickValues(0, 1e19, 1e3) == [(1e19, [])] def _test_tickStrings(qtbot, values, expected): """ Check that the tickStrings reimplementation returns the expected values """ w = tpg.TaurusTrend() qtbot.addWidget(w) a = w.getPlotItem().axes["bottom"]["item"] dt = [fromisoformat(v).timestamp() for v in values] spacing = dt[-1] - dt[0] # check return values in the seconds scale assert a.tickStrings(dt, None, spacing) == expected @pytest.mark.parametrize( "values,expected", [ ( ["2020-01-01T00:01", "2020-01-01T00:01:00.100"], ["[+000000ms]", "[+100000ms]"], ), (["2020-01-01", "2020-01-01T00:00:05"], ["00:00:00", "00:00:05"],), (["2020-01-01", "2020-01-01T00:00:30"], ["00:00:00", "00:00:30"],), (["2020-01-01", "2020-01-01T00:05"], ["00:00", "00:05"]), (["2020-01-01", "2023-01-01", "2037-01-01"], ["2020", "2023", "2037"]), ], ) def test_tickStrings(qtbot, values, expected): """ Check that the tickStrings reimplementation returns the expected values """ _test_tickStrings(qtbot, values, expected) @pytest.mark.skipif(getlocale()[0][:2] != "en", reason="requires en* locale") @pytest.mark.parametrize( "values,expected", [ (["2020-01-01", "2020-01-01T05:00"], ["Jan/01-00h", "Jan/01-05h"],), (["2020-01-01", "2020-01-05"], ["Jan/01", "Jan/05"]), (["2020-01-01", "2020-05-01"], ["2020 Jan", "2020 May"]), ], ) def test_tickStrings_english(qtbot, values, expected): """ Check that the tickStrings reimplementation returns the expected values. Note: it assumes an English locale. Skipped otherwise. """ _test_tickStrings(qtbot, values, expected) taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/tests/test_plot.py000066400000000000000000000453451514602004300264420ustar00rootroot00000000000000import sys import pytest import numpy import taurus_pyqtgraph as tpg import pyqtgraph as pg from taurus.external.qt import Qt from .util import show_and_wait, get_sub_config # noqa def test_plot_model_setting(qtbot): w = tpg.TaurusPlot() qtbot.addWidget(w) assert len(w) == 0 assert len(w._model_chooser_tool.getModelNames()) == 0 models1 = [ "eval:1*rand(22)", ("eval:linspace(-10,20,10)", "eval:2*rand(10)"), ] w.setModel(models1) c0 = w[0] c1 = w[1] assert len(w) == 2 assert w._model_chooser_tool.getModelNames() == [ c0.getFullModelNames(), c1.getFullModelNames(), ] # add a regular data item (non-taurus) c2 = pg.PlotDataItem(name="pg item", pen="b", fillLevel=0, brush="c") c2.setData(numpy.linspace(0, 20, 10)) w.addItem(c2) assert w[:] == [c0, c1, c2] assert w._model_chooser_tool.getModelNames() == [ c0.getFullModelNames(), c1.getFullModelNames(), ] # add a taurus data item c3 = tpg.TaurusPlotDataItem(name="taurus item", pen="r", symbol="o") c3.setModel('eval:Quantity(rand(16),"m")') w.addItem(c3) assert w[:] == [c0, c1, c2, c3] assert w._model_chooser_tool.getModelNames() == [ c0.getFullModelNames(), c1.getFullModelNames(), c3.getFullModelNames(), ] # Add existing (c0) model again (it is ignored) w.addModels([models1[0]]) assert w[:] == [c2, c0, c1, c3] # there is reordering, non taurus first assert w._model_chooser_tool.getModelNames() == [ c0.getFullModelNames(), c1.getFullModelNames(), c3.getFullModelNames(), ] # set 1 model (not adding!, the non-taurus curve is kept) w.setModel([models1[1]]) assert w[:] == [c2, c1] # c1 **is** still the same object! assert w._model_chooser_tool.getModelNames() == [c1.getFullModelNames()] # set empty model (not adding!, the non taurus curve is kept) w.setModel([]) assert w[:] == [c2] assert w._model_chooser_tool.getModelNames() == [] # remove non-taurus curve w.removeItem(c2) assert w[:] == [] assert w._model_chooser_tool.getModelNames() == [] # Uncomment for visual checks # show_and_wait(qtbot, w, timeout=3600000) def test_plot_model_setting_with_y2(qtbot): w = tpg.TaurusPlot() qtbot.addWidget(w) vb1 = w.getViewBox() vb2 = w._y2 assert w[:] == [] assert w._model_chooser_tool.getModelNames() == [] assert vb1.addedItems == [] assert vb2.addedItems == [] models1 = [ "eval:1*rand(22)", ("eval:linspace(-10,20,10)", "eval:2*rand(10)"), ] w.setModel(models1) c0 = w[0] c1 = w[1] # move the first curve to Y2 vb1.removeItem(c0) vb2.addItem(c0) assert vb1.addedItems == [c1] assert vb2.addedItems == [c0] assert w[:] == [c0, c1] assert w._model_chooser_tool.getModelNames() == [ c0.getFullModelNames(), c1.getFullModelNames(), ] # add a regular data item (non-taurus) to y2 c2 = pg.PlotDataItem(name="pg item", pen="b", fillLevel=0, brush="c") c2.setData(numpy.linspace(0, 20, 10)) vb2.addItem(c2) assert vb1.addedItems == [c1] assert vb2.addedItems == [c0, c2] assert len(w) == 3 assert w[:] == [c0, c1, c2] assert w._model_chooser_tool.getModelNames() == [ c0.getFullModelNames(), c1.getFullModelNames(), ] # add a taurus data item to y2 c3 = tpg.TaurusPlotDataItem(name="taurus item", pen="r", symbol="o") c3.setModel('eval:Quantity(rand(16),"m")') vb2.addItem(c3) assert vb1.addedItems == [c1] assert vb2.addedItems == [c0, c2, c3] assert w[:] == [c0, c1, c2, c3] assert w._model_chooser_tool.getModelNames() == [ c0.getFullModelNames(), c1.getFullModelNames(), c3.getFullModelNames(), ] # Add existing (c0) model again w.addModels([models1[0]]) assert vb1.addedItems == [c1] assert vb2.addedItems == [c2, c0, c3] assert w[:] == [c2, c0, c1, c3] # there is reordering, non taurus first assert w._model_chooser_tool.getModelNames() == [ c0.getFullModelNames(), c1.getFullModelNames(), c3.getFullModelNames(), ] # set (not adding!) 1 model which is already on y2 # only non-taurus curve and the set curve remain. Both stay in y2 w.setModel([models1[0]]) assert vb1.addedItems == [] assert vb2.addedItems == [c2, c0] assert w[:] == [c2, c0] # c0 **is** still the same object! assert w._model_chooser_tool.getModelNames() == [c0.getFullModelNames()] # set empty model (not adding!, only the non-taurus curve remains) w.setModel([]) assert vb1.addedItems == [] assert vb2.addedItems == [c2] assert w[:] == [c2] assert w._model_chooser_tool.getModelNames() == [] # remove non-taurus curve c2.getViewBox().removeItem(c2) w.getPlotItem().removeItem(c2) assert vb1.addedItems == [] assert vb2.addedItems == [] assert w[:] == [] assert w._model_chooser_tool.getModelNames() == [] # Uncomment for visual checks # show_and_wait(qtbot, w, timeout=3600000) def test_multiple_setModel(qtbot): """ Check that repeated calls to setModel do not duplicate the items in the plot """ w = tpg.TaurusPlot() qtbot.addWidget(w) for i in range(5): w.setModel(["eval:rand(2)"]) assert w.getPlotItem().listDataItems() == [ w[0] ], "Found duplicates after {} calls to setModel".format(i + 1) def test_xymodelchooser_config(qtbot): w1 = tpg.TaurusPlot() qtbot.addWidget(w1) models1 = [ "eval:1*rand(22)", ("eval:linspace(-10,20,10)", "eval:2*rand(10)"), ] w1.setModel(models1) # test createConfig cfg = w1.createConfig() xymccfg1 = get_sub_config(cfg, "XYmodelchooser") modelscfg1 = get_sub_config(xymccfg1, "CurveInfo") assert modelscfg1[0] == ( None, "eval://localhost/@DefaultEvaluator/1*rand(22)", "1*rand(22)", ) assert modelscfg1[1] == ( "eval://localhost/@DefaultEvaluator/linspace(-10,20,10)", "eval://localhost/@DefaultEvaluator/2*rand(10)", "2*rand(10)", ) # test applyConfig w2 = tpg.TaurusPlot() qtbot.addWidget(w2) assert len(w2) == 0 assert len(w2._model_chooser_tool.getModelNames()) == 0 # add a model to w2 w2.setModel("eval:9*rand(11)") assert len(w2) == 1 assert len(w2._model_chooser_tool.getModelNames()) == 1 # apply config (the previously added tauruscurve of w2 should be removed) w2.applyConfig(cfg) assert len(w2) == 2 assert len(w2._model_chooser_tool.getModelNames()) == 2 assert w2._model_chooser_tool._getCurveInfo() == modelscfg1 # Uncomment for visual checks # show_and_wait(qtbot, w1, w2, timeout=3600000) def test_y2_config(qtbot): # create a plot with 3 curves w1 = tpg.TaurusPlot() qtbot.addWidget(w1) models1 = [ "eval:1*rand(11)", "eval:2*rand(22)", ("eval:linspace(-10,20,10)", "eval:2*rand(10)"), ] w1.setModel(models1) w1_vb1 = w1.getViewBox() w1_vb2 = w1._y2 # check that the 3 curves are on Y1 assert [c.getViewBox() for c in w1] == [w1_vb1] * 3 assert len(w1_vb1.addedItems) == 3 assert len(w1_vb2.addedItems) == 0 # move the second curve to Y2 c = w1[1] w1_vb1.removeItem(c) w1_vb2.addItem(c) # check that the move was ok and there are no duplicates assert [c.getViewBox() for c in w1] == [w1_vb1, w1_vb2, w1_vb1] assert w1_vb2._getCurvesNames() == [w1[1].getFullModelNames()] assert len(w1_vb1.addedItems) == 2 assert len(w1_vb2.addedItems) == 1 # test createConfig plot_cfg = w1.createConfig() y2_cfg = get_sub_config(plot_cfg, "Y2Axis") curvescfg1 = get_sub_config(y2_cfg, "Y2Curves") assert curvescfg1 == [w1[1].getFullModelNames()] # # Debugging # from pprint import pprint # pprint(plot_cfg) # pprint(curvescfg1) # create a second, empty plot w2 = tpg.TaurusPlot() qtbot.addWidget(w2) assert len(w2) == 0 # check applyConfig on the new plot w2.applyConfig(plot_cfg) assert len(w2) == 3 w2_vb1 = w2.getViewBox() w2_vb2 = w2._y2 w1_all_names = [c.getFullModelNames() for c in w1] w2_all_names = [c.getFullModelNames() for c in w2] assert w1_all_names == w2_all_names assert len(w2_all_names) == 3 assert len(w2_vb1.addedItems) == 2 assert len(w2_vb2.addedItems) == 1 assert w2_vb2._getCurvesNames() == w1_vb2._getCurvesNames() assert w2_vb2._getCurvesNames() == [w1[1].getFullModelNames()] # Uncomment for visual checks # show_and_wait(qtbot, w1, w2, timeout=3600000) def test_curveproperties(qtbot): w = tpg.TaurusPlot() qtbot.addWidget(w) # add a regular data item (non-taurus) to y1 c0 = pg.PlotDataItem(name="pg item1", pen="b", fillLevel=0, brush="c") c0.setData(numpy.linspace(0, 20, 10)) w.addItem(c0) # add a regular data item (non-taurus) to y2 c1 = pg.PlotDataItem(name="pg item2", pen="y", symbol="d", symbolBrush="r") c1.setData(20 - numpy.linspace(0, 20, 10)) w._y2.addItem(c1) # add a taurus data item to y1 c2 = tpg.TaurusPlotDataItem(name="taurus item1", pen="r", symbol="o") c2.setModel('eval:Quantity(rand(16),"m")') w.addItem(c2) # add a taurus data item to y2 c3 = tpg.TaurusPlotDataItem(name="taurus item2", pen="y", symbol="s") c3.setModel('eval:Quantity(rand(20),"km")') w._y2.addItem(c3) # Add 2 more items using setModel models1 = [ "eval:1*rand(22)", ("eval:linspace(-10,20,10)", "eval:2*rand(10)"), ] w.addModels(models1) c4 = w[4] c5 = w[5] c4.setPen("g") c5.setPen(None) c5.setSymbol("t") c5.setSymbolSize(7) # move c5 to y2 w._y2.addItem(c5) assert len(w) == 6 assert w[:] == [c0, c1, c2, c3, c4, c5] assert len(w.cprop_tool.getModifiableItems()) == 6 for c in [c0, c1, c2, c3, c4, c5]: assert c.name() in w.cprop_tool.getModifiableItems().keys() assert c in w.cprop_tool.getModifiableItems().values() assert w.getViewBox().addedItems == [c0, c2, c4] assert w._y2.addedItems == [c1, c3, c5] prop = w.cprop_tool._getCurveAppearanceProperties() # check lColor assert pg.mkColor(prop[c0.name()].lColor) == pg.mkColor("b") assert pg.mkColor(prop[c1.name()].lColor) == pg.mkColor("y") assert pg.mkColor(prop[c2.name()].lColor) == pg.mkColor("r") assert pg.mkColor(prop[c3.name()].lColor) == pg.mkColor("y") assert pg.mkColor(prop[c4.name()].lColor) == pg.mkColor("g") # assert pg.mkColor(prop[c5.name()].lColor) == pg.mkColor('b') # check lStyle for c in c0, c1, c2, c3, c4: assert prop[c.name()].lStyle == Qt.Qt.SolidLine assert prop[c5.name()].lStyle == Qt.Qt.NoPen # check y2 for c in c0, c2, c4: assert prop[c.name()].y2 is False for c in c1, c3, c5: assert prop[c.name()].y2 is True # Uncomment for visual checks # show_and_wait(qtbot, w, timeout=3600000) @pytest.mark.xfail( sys.version_info[:2] == (3, 6), reason="flaky behaviour observed in CI for py 3.6 in this test", ) def test_curveproperties_config(qtbot): w1 = tpg.TaurusPlot() qtbot.addWidget(w1) # add a regular data item (non-taurus) to y1 c0 = pg.PlotDataItem(name="pg item1", pen="m", fillLevel=0, brush="c") c0.setData(numpy.linspace(0, 20, 10) / 20.0) w1.addItem(c0) # add a regular data item (non-taurus) to y2 c1 = pg.PlotDataItem(name="pg item2", pen="y", symbol="d", symbolBrush="r") c1.setData(1 - numpy.linspace(0, 20, 10) / 20.0) w1._y2.addItem(c1) # add a taurus data item to y1 c2 = tpg.TaurusPlotDataItem(name="taurus item1", pen="r", symbol="o") c2.setModel('eval:Quantity(rand(16),"m")') w1.addItem(c2) # add a taurus data item to y2 c3 = tpg.TaurusPlotDataItem(name="taurus item2", pen="y", symbol="s") c3.setModel('eval:Quantity(rand(20),"km")') w1._y2.addItem(c3) # Add 2 more items using setModel models1 = [ "eval:1*rand(22)", ("eval:linspace(-10,20,10)", "eval:2*rand(10)"), ] w1.addModels(models1) c4 = w1[4] c5 = w1[5] c4.setPen("g") c5.setPen(None) c5.setSymbol("t") c5.setSymbolSize(7) c5.setSymbolBrush("r") # move c5 to y2 w1._y2.addItem(c5) assert len(w1) == 6 assert w1[:] == [c0, c1, c2, c3, c4, c5] w1_mod_items = w1.cprop_tool.getModifiableItems() for c in [c0, c1, c2, c3, c4, c5]: assert c0 in w1_mod_items.values() assert w1.getViewBox().addedItems == [c0, c2, c4] assert w1._y2.addedItems == [c1, c3, c5] # test createConfig cfg = w1.createConfig() propcfg = get_sub_config(cfg, "CurvePropertiesTool") _ = get_sub_config(propcfg, "CurveProperties") # # Debugging # from pprint import pprint # # pprint(cfg) # print("-" * 80) # pprint(curvescfg) # test applyConfig w2 = tpg.TaurusPlot() qtbot.addWidget(w2) # assert len(w2._model_chooser_tool.getModelNames()) == 0 assert len(w2.cprop_tool._getCurveAppearanceProperties()) == 0 w2.applyConfig(cfg) # assert len(w2._model_chooser_tool.getModelNames()) == 2 # assert w2._model_chooser_tool.getModelNames() == modelscfg1 w1_props = w1.cprop_tool._getCurveAppearanceProperties() w2_props = w2.cprop_tool._getCurveAppearanceProperties() assert len(w1_props) == 6 assert len(w2_props) == 4 for k, p_aft in w2_props.items(): assert k in w1_props p_ini = w1_props[k] conflicts = p_ini.conflictsWith(p_aft, strict=True) msg = "Mismatch in saved/restored curve properties for '{}':".format(k) msg += "\n\t Saved: {}".format(p_ini) msg += "\n\t Restored: {}".format(p_aft) assert conflicts == [], msg # test applyConfig w3 = tpg.TaurusPlot() qtbot.addWidget(w3) # Manually add regular data items matching the names used in w1 # but do not match the properties, which should be updated by applyConfig c0_w3 = pg.PlotDataItem( name="pg item1", y=numpy.linspace(0, 20, 10) / 20.0 ) w3.addItem(c0_w3) c1_w3 = pg.PlotDataItem(name="pg item2", y=numpy.zeros(15)) w3._y2.addItem(c1_w3) assert len(w3.cprop_tool._getCurveAppearanceProperties()) == 2 w3.applyConfig(cfg) w3_props = w3.cprop_tool._getCurveAppearanceProperties() assert len(w3_props) == 6 for k, p_aft in w3_props.items(): assert k in w1_props p_ini = w1_props[k] conflicts = p_ini.conflictsWith(p_aft, strict=True) msg = "Mismatch in saved/restored curve properties for '{}':".format(k) msg += "\n\t Saved: {}".format(p_ini) msg += "\n\t Restored: {}".format(p_aft) assert conflicts == [], msg # Uncomment for visual checks # show_and_wait(qtbot, w1, w2, w3, timeout=3600000) def test_curveproperties_configfile(qtbot, tmp_path): w1 = tpg.TaurusPlot() qtbot.addWidget(w1) w1.setBackground("y") # add a regular data item (non-taurus) to y1 c0 = pg.PlotDataItem(name="pg item1", pen="m", fillLevel=0, brush="c") c0.setData(numpy.linspace(0, 20, 10) / 20.0) w1.addItem(c0) # add a regular data item (non-taurus) to y2 c1 = pg.PlotDataItem(name="pg item2", pen="y", symbol="d", symbolBrush="r") c1.setData(1 - numpy.linspace(0, 20, 10) / 20.0) w1._y2.addItem(c1) # add a taurus data item to y1 c2 = tpg.TaurusPlotDataItem(name="taurus item1", pen="r", symbol="o") c2.setModel('eval:Quantity(rand(16),"m")') w1.addItem(c2) # add a taurus data item to y2 c3 = tpg.TaurusPlotDataItem(name="taurus item2", pen="y", symbol="s") c3.setModel('eval:Quantity(rand(20),"km")') w1._y2.addItem(c3) # Add 2 more items using setModel models1 = [ "eval:1*rand(22)", ("eval:linspace(-10,20,10)", "eval:2*rand(10)"), ] w1.addModels(models1) c4 = w1[4] c5 = w1[5] c4.setPen("g") c5.setPen(None) c5.setSymbol("t") c5.setSymbolSize(7) c5.setSymbolBrush("r") # move c5 to y2 w1._y2.addItem(c5) assert len(w1) == 6 assert w1[:] == [c0, c1, c2, c3, c4, c5] w1_mod_items = w1.cprop_tool.getModifiableItems() for c in [c0, c1, c2, c3, c4, c5]: assert c0 in w1_mod_items.values() assert w1.getViewBox().addedItems == [c0, c2, c4] assert w1._y2.addedItems == [c1, c3, c5] # test saveConfigFile f = tmp_path / "plot.pck" with open(str(f), "wb") as ofile: w1.saveConfigFile(ofile=ofile) assert f.exists() assert len(list(tmp_path.iterdir())) == 1 # test loadConfigFile w2 = tpg.TaurusPlot() qtbot.addWidget(w2) with open(str(f), "rb") as ifile: w2.loadConfigFile(ifile=ifile) w1_props = w1.cprop_tool._getCurveAppearanceProperties() w2_props = w2.cprop_tool._getCurveAppearanceProperties() assert len(w1_props) == 6 assert len(w2_props) == 4 for k, p_aft in w2_props.items(): assert k in w1_props p_ini = w1_props[k] conflicts = p_ini.conflictsWith(p_aft, strict=True) msg = "Mismatch in saved/restored curve properties for '{}':".format(k) msg += "\n\t Saved: {}".format(p_ini) msg += "\n\t Restored: {}".format(p_aft) assert conflicts == [], msg # Uncomment for visual checks # show_and_wait(qtbot, w1, w2, timeout=3600000) # def test_save_config_action(qtbot, tmp_path): # w1 = tpg.TaurusPlot() # qtbot.addWidget(w1) # # w2 = tpg.TaurusPlot() # qtbot.addWidget(w2) # # menu = w1.getPlotItem().getViewBox().menu # save_action = None # for a in menu.actions(): # # print(a.text()) # if a.text() == "Save configuration": # save_action = a # break # assert save_action is not None # save_action.trigger() # # TODO: handle the modal dialog # menu = w2.getPlotItem().getViewBox().menu # load_action = None # for a in menu.actions(): # # print(a.text()) # if a.text() == "Retrieve saved configuration": # load_action = a # break # assert load_action is not None # load_action.trigger() # # TODO: handle the modal dialog def test_duplicate_curve_titles(qtbot): """ Check that curves with same title are changed to have unique titles """ w = tpg.TaurusPlot() qtbot.addWidget(w) w.setModel( [ "eval:@foo/a=0+rand(3);a", "eval:@bar/a=1+rand(3);a", (None, "eval:2+rand(3)", "a"), "eval:3+rand(3)", ] ) assert len(w[:]) == 4 mod_items = w.cprop_tool.getModifiableItems() assert len(mod_items) == 4, "{}".format(mod_items) assert list(sorted(mod_items.keys())) == [ "3+rand(3)", "a", "a (2)", "a (3)", ] # show_and_wait(qtbot, w) taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/tests/test_taurus_pyqtgraph.py000066400000000000000000000012031514602004300310670ustar00rootroot00000000000000#!/usr/bin/env python # -*- coding: utf-8 -*- """Tests for `taurus_pyqtgraph` package.""" from click.testing import CliRunner def test_smoke(): import taurus_pyqtgraph # noqa def test_command_line_interface(): """Test the CLI.""" from taurus_pyqtgraph import cli runner = CliRunner() result = runner.invoke(cli.tpg) assert result.exit_code == 0 assert ( '[DEPRECATED] use "taurus plot" or "taurus trend" instead' in result.output ) help_result = runner.invoke(cli.tpg, ["--help"]) assert help_result.exit_code == 0 assert "Show this message and exit." in help_result.output taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/tests/test_trend.py000066400000000000000000000367251514602004300266020ustar00rootroot00000000000000import numpy import taurus_pyqtgraph as tpg import pyqtgraph as pg from collections import Counter import time from .util import show_and_wait, get_sub_config # noqa # def test_trend_teardown(qtbot): # """ # For some reason (to be investigated) the teardown of this tests # triggers a crash in pytest (maybe related to qt?) # """ # w = tpg.TaurusTrend() # qtbot.addWidget(w) # m = ["eval:1", "eval:2"] # # m = ["eval:1", "eval:2"] # uncommenting this line avoids the trigger # # m = ["eval:1", "eval:2"] # uncommenting this line avoids the trigger # w.setModel(m) # # w.setModel([]) # uncommenting this line avoids the trigger def test_trend_model_setting(qtbot): w = tpg.TaurusTrend() qtbot.addWidget(w) vb1 = w.getViewBox() vb2 = w._y2 assert len(w) == 0 assert w[:] == [] assert w._model_chooser_tool.getModelNames() == [] assert vb1.addedItems == [] assert vb2.addedItems == [] models = [ "eval:1+rand()", "eval:2+rand(2)", "eval:3+rand(3)", ] w.setModel(models) sets = w.getTrendSets() ts0 = sets[0] ts1 = sets[1] ts2 = sets[2] assert len(w.getTrendSets()) == 3 assert len(w) == 6 assert len(ts0) == 1 assert len(ts1) == 2 assert len(ts2) == 3 assert len(w._model_chooser_tool._getCurveInfo()) == 3 for m, (x, y, n) in zip(models, w._model_chooser_tool._getCurveInfo()): assert x is None assert y.endswith(m[5:]) assert isinstance(n, list) assert len(n) > 1 for cn in n: assert "+rand(" in cn for cn in n[1:]: assert cn[-1] == "]" assert ts0[0].name() == "1+rand()[0]" assert ts1[0].name() == "2+rand(2)[0]" assert ts1[1].name() == "2+rand(2)[1]" assert ts2[0].name() == "3+rand(3)[0]" assert ts2[1].name() == "3+rand(3)[1]" assert ts2[2].name() == "3+rand(3)[2]" assert w._model_chooser_tool.getModelNames() == [ ts.getFullModelNames() for ts in w.getTrendSets() ] # check items of viewboxes (for vb1, ignore the sorting) assert Counter(vb1.addedItems) == Counter(sets + ts0[:] + ts1[:] + ts2[:]) assert vb2.addedItems == [] # move the whole ts1 to Y2 # vb1.removeItem(ts1) # vb2.addItem(ts1) # TODO: NOT WORKING (crashes!) # assert Counter(vb1.addedItems) == Counter([ts0, ts2] + ts0[:] + ts2[:]) # assert Counter(vb1.addedItems) == Counter([ts1] + ts1[:]) # move first curve of each trendset to Y2 for ts in sets: c = ts[0] vb1.removeItem(c) vb2.addItem(c) assert Counter(vb1.addedItems) == Counter(sets + ts1[1:] + ts2[1:]) assert vb2.addedItems == [ts0[0], ts1[0], ts2[0]] # check that there are no duplications because of moving assert len(w.getTrendSets()) == 3 assert len(w) == 6 assert len(ts0) == 1 assert len(ts1) == 2 assert len(ts2) == 3 assert len(w._model_chooser_tool._getCurveInfo()) == 3 # add a regular data item (non-taurus) to y2 c0 = pg.PlotDataItem(name="pg item", pen="y", fillLevel=0, brush="y") now = time.time() c0.setData(numpy.linspace(now - 5, now + 5, 10), 1 - numpy.random.rand(10)) vb2.addItem(c0) # check that the regular item is not counted as a trendset item... assert w.getTrendSets() == [ts0, ts1, ts2] assert w._model_chooser_tool.getModelNames() == [ ts.getFullModelNames() for ts in w.getTrendSets() ] # ... but still, it is added to y2 assert Counter(vb1.addedItems) == Counter(sets + ts1[1:] + ts2[1:]) assert vb2.addedItems == [ts0[0], ts1[0], ts2[0], c0] # manually add a trendset to y1 and move its first curve to y2 ts3 = tpg.TaurusTrendSet(name="TS-3", symbol="o") ts3.setModel('eval:Quantity(rand(2)-1,"m")') w.addItem(ts3) vb1.removeItem(ts3[0]) vb2.addItem(ts3[0]) assert len(ts3) == 2 sets = w.getTrendSets() assert sets == [ts0, ts1, ts2, ts3] assert len(w) == 8 assert w[:] == ts0[:] + ts1[:] + ts2[:] + ts3[:] assert Counter(vb1.addedItems) == Counter( sets + ts1[1:] + ts2[1:] + ts3[1:] ) assert Counter(vb2.addedItems) == Counter( [ts0[0], ts1[0], ts2[0], c0, ts3[0]] ) assert w._model_chooser_tool.getModelNames() == [ ts0.getFullModelNames(), ts1.getFullModelNames(), ts2.getFullModelNames(), ts3.getFullModelNames(), ] # manually add a trendset to y1 ts4 = tpg.TaurusTrendSet(name="TS-4", symbol="s") ts4.setModel('eval:Quantity(rand()-2,"m")') w.addItem(ts4) assert len(ts4) == 1 sets = w.getTrendSets() assert sets == [ts0, ts1, ts2, ts3, ts4] assert Counter(vb1.addedItems) == Counter( sets + ts1[1:] + ts2[1:] + ts3[1:] + ts4[:] ) assert Counter(vb2.addedItems) == Counter( [ts0[0], ts1[0], ts2[0], c0, ts3[0]] ) assert w._model_chooser_tool.getModelNames() == [ ts0.getFullModelNames(), ts1.getFullModelNames(), ts2.getFullModelNames(), ts3.getFullModelNames(), ts4.getFullModelNames(), ] # show_and_wait(qtbot, w) # uncomment for visually checking # Add existing (ts1) model again and check that nothing is recreated ts0_0 = ts0[0] ts1_0, ts1_1 = ts1[:] ts2_0, ts2_1, ts2_2 = ts2[:] ts3_0, ts3_1 = ts3[:] ts4_0 = ts4[0] w.addModels([models[1]]) sets = w.getTrendSets() assert sets == [ts0, ts1, ts2, ts3, ts4] assert len(w) == 9 assert w[:] == [ ts0_0, ts1_0, ts1_1, ts2_0, ts2_1, ts2_2, ts3_0, ts3_1, ts4_0, ] # ----------------------------------------------------------------------- # nothing is recreated or duplicated, but all the trendsets are reset # and their curves restored to the trendset viewbox even if they had # been moved to another one. # TODO: check if we want to avoid that and have the following instead # assert Counter(vb1.addedItems) == Counter( # [ts0, ts1, ts2, ts4] + ts1[1:] + ts2[1:] + ts3[1:] + ts4[:] # ) # assert Counter(vb2.addedItems) == Counter( # [ts0[0], ts1[0], ts2[0], c0, ts3, ts3[0]] # ) assert Counter(vb1.addedItems) == Counter( sets + ts0[:] + ts1[:] + ts2[:] + ts3[:] + ts4[:] ) assert vb2.addedItems == [c0] # ----------------------------------------------------------------------- assert w._model_chooser_tool.getModelNames() == [ ts0.getFullModelNames(), ts1.getFullModelNames(), ts2.getFullModelNames(), ts3.getFullModelNames(), ts4.getFullModelNames(), ] # set (not adding!) 1 model which is already on y1 # only the non-taurus curve and the just set trendset remain. w.setModel([models[1]]) assert w.getTrendSets() == [ts1] # ts1 **is** still the same object! assert w[:] == [ts1[0], ts1[1]] assert Counter(vb1.addedItems) == Counter([ts1] + ts1[:]) assert vb2.addedItems == [c0] assert w._model_chooser_tool.getModelNames() == [ts1.getFullModelNames()] # set empty model (not adding!, the non taurus curve is kept) w.setModel([]) assert w.getTrendSets() == [] assert w[:] == [] assert vb1.addedItems == [] assert vb2.addedItems == [c0] assert w._model_chooser_tool.getModelNames() == [] # show_and_wait(qtbot, w) # uncomment for visually checking # remove non-taurus curve vb2.removeItem(c0) assert w[:] == [] assert vb1.addedItems == [] assert vb2.addedItems == [] assert w._model_chooser_tool.getModelNames() == [] # show_and_wait(qtbot, w) # uncomment for visually checking def test_modelchooser_config(qtbot): w1 = tpg.TaurusTrend() qtbot.addWidget(w1) models1 = [ "eval:1*rand()", (None, "eval:2*rand(2)", "foo"), ] w1.setModel(models1) # test createConfig cfg = w1.createConfig() xymccfg1 = get_sub_config(cfg, "XYmodelchooser") modelscfg1 = get_sub_config(xymccfg1, "CurveInfo") assert modelscfg1[0] == ( None, "eval://localhost/@DefaultEvaluator/1*rand()", ['1*rand()', '1*rand()[0]'], ) assert modelscfg1[1] == ( None, "eval://localhost/@DefaultEvaluator/2*rand(2)", ["foo", "foo[0]", "foo[1]"], ) # test applyConfig w2 = tpg.TaurusTrend() qtbot.addWidget(w2) assert w2.getTrendSets() == [] assert len(w2) == 0 assert len(w2._model_chooser_tool.getModelNames()) == 0 # add a model to w2 w2.setModel("eval:3*rand()") assert len(w2.getTrendSets()) == 1 assert len(w2) == 1 assert len(w2._model_chooser_tool.getModelNames()) == 1 # apply config (the previously added tauruscurve of w2 should be removed) w2.applyConfig(cfg) assert len(w2.getTrendSets()) == 2 assert len(w2) == 3 assert [type(ts) for ts in w2.getTrendSets()] == [tpg.TaurusTrendSet] * 2 assert [type(c) for c in w2] == [tpg.TrendCurve] * 3 assert len(w2._model_chooser_tool.getModelNames()) == 2 assert w2._model_chooser_tool._getCurveInfo() == modelscfg1 # show_and_wait(qtbot, w1, w2) # uncomment for visually checking # avoid teardown issues w1.setModel(None) w2.setModel(None) def test_curveproperties_configfile(qtbot, tmp_path): w1 = tpg.TaurusTrend() qtbot.addWidget(w1) w1.setBackground(0.3) w1vb1 = w1.getViewBox() w1vb2 = w1._y2 # add a regular data item (non-taurus) to y1 c0 = pg.PlotDataItem(name="PG-0", pen="y", fillLevel=0, brush="y") now = time.time() c0.setData(numpy.linspace(now - 5, now + 5, 10), 1 - numpy.random.rand(10)) w1.getPlotItem().addItem(c0) # add a regular data item (non-taurus) to y2 c1 = pg.PlotDataItem(name="PG-1", pen="y", symbol="d", symbolBrush="r") c1.setData( numpy.linspace(now - 5, now + 5, 10), 1 - numpy.linspace(0, 20, 10) / 20.0, ) w1vb2.addItem(c1) # add a TrendSet to y1 ts0 = tpg.TaurusTrendSet(name="TS0", symbol="o") ts0.setModel('eval:Quantity(2+rand(),"m")') w1.addItem(ts0) c2 = ts0[0] # add a TrendSet to y1 and move its curve to Y2 ts1 = tpg.TaurusTrendSet(name="TS1", symbol="s") ts1.setModel('eval:Quantity(3+rand(),"km")') w1.addItem(ts1) c3 = ts1[0] w1vb1.removeItem(c3) w1vb2.addItem(c3) assert c3 in w1vb2.addedItems # Save a config file at this point f1 = tmp_path / "trend1.pck" with open(str(f1), "wb") as ofile: w1.saveConfigFile(ofile=ofile) assert f1.exists() assert len(list(tmp_path.iterdir())) == 1 # Add 2 TrendSets using addModel models1 = [ (None, "eval:1*rand(2)", "TS2"), (None, "eval:2*rand(2)", "TS3"), ] w1.addModels(models1) # ------------------------------------------------------------------ # After calling addModels, TrendCurves that were manually moved to # Y2 are reset to Y1 (where their trendset is). # TODO: the following 2 lines should not be needed assert c3 in w1vb1.addedItems # this is what it is, not what it should be w1vb2.addItem(c3) # manually move c3 to Y2 again... assert c3 not in w1vb1.addedItems assert c3 in w1vb2.addedItems # ------------------------------------------------------------------ ts2 = w1.getTrendSets()[2] c4, c5 = ts2[:] ts3 = w1.getTrendSets()[3] c6, c7 = ts3[:] c4.setPen("g") c5.setPen(None) c5.setSymbol("t") c5.setSymbolSize(7) c5.setSymbolBrush("r") c6.setPen("c") c7.setPen(None) c7.setSymbol("d") c7.setSymbolSize(9) c7.setSymbolBrush("m") # move c5 and c7 to to y2 w1vb2.addItem(c5) w1vb2.addItem(c7) sets = w1.getTrendSets() assert len(sets) == 4 assert sets == [ts0, ts1, ts2, ts3] assert len(w1) == 6 assert w1[:] == [c2, c3, c4, c5, c6, c7] assert Counter(w1.cprop_tool.getModifiableItems().values()) == Counter( [c0, c1, c2, c3, c4, c5, c6, c7] ) assert Counter(w1vb1.addedItems) == Counter( [ts0, ts1, ts2, ts3, c0, c2, c4, c6] ) assert Counter(w1vb2.addedItems) == Counter([c1, c3, c5, c7]) # Save a config file with everything in w1 f2 = tmp_path / "trend2.pck" with open(str(f2), "wb") as ofile: w1.saveConfigFile(ofile=ofile) assert f2.exists() assert len(list(tmp_path.iterdir())) == 2 # test loadConfigFile w2 = tpg.TaurusTrend() qtbot.addWidget(w2) w2vb1 = w2.getViewBox() w2vb2 = w2._y2 # load the second config file (containing everything) with open(str(f2), "rb") as ifile: w2.loadConfigFile(ifile=ifile) w1_props = w1.cprop_tool._getCurveAppearanceProperties() w2_props = w2.cprop_tool._getCurveAppearanceProperties() assert len(w1_props) == 8 assert len(w2_props) == 6 for k, p_aft in w2_props.items(): assert k in w1_props p_ini = w1_props[k] assert not p_ini.conflictsWith(p_aft, strict=True) # show_and_wait(qtbot, w1, w2) # uncomment for visually checking # load the first config file (does not contain TS2 and TS3) with open(str(f1), "rb") as ifile: w2.loadConfigFile(ifile=ifile) # check that there are not leftovers from previous config sets = w2.getTrendSets() assert len(w2) == 2 # only the curves from ts0 and ts1 assert len(sets) == 2 # only ts0 and ts1 assert [ts.base_name() for ts in sets] == ["TS0", "TS1"] assert [ts.name() for ts in w2] == ["TS0[0]", "TS1[0]"] # note that c3 is correctly in Y2 (because the config properly restores it) assert Counter(w2vb1.addedItems) == Counter(sets + [w2[0]]) assert Counter(w2vb2.addedItems) == Counter([w2[1]]) w2_props = w2.cprop_tool._getCurveAppearanceProperties() assert len(w2_props) == 2 # only the curves from ts0 and ts1 ! for k, p_aft in w2_props.items(): assert k in w1_props p_ini = w1_props[k] assert not p_ini.conflictsWith(p_aft, strict=True) # show_and_wait(qtbot, w1, w2) # uncomment for visual checks # avoid teardown issues w1.setModel(None) w2.setModel(None) def test_multiple_setModel(qtbot): """ Check that repeated calls to setModel do not duplicate the items in the plot """ w = tpg.TaurusTrend() qtbot.addWidget(w) for i in range(5): w.setModel(["eval:rand(2)"]) sets = w.getTrendSets() assert Counter(w.getPlotItem().listDataItems()) == Counter( [sets[0], w[0], w[1]] ), "Found duplicates after {} calls to setModel".format(i + 1) # workaround for teardown issue w.setModel(None) # def test_autopan(qtbot): # import taurus # # taurus.changeDefaultPollingPeriod(222) # w = tpg.TaurusTrend() # qtbot.addWidget(w) # # w.setModel(["eval:rand()"]) # tpg.set_y_axis_for_curve(True, w[0], w.getPlotItem(), w._y2) # w._autopan.toggle() # # show_and_wait(qtbot, w) # # w.setModel(None) def test_duplicate_curve_titles(qtbot): """ Check that curves with same title are changed to have unique titles """ w = tpg.TaurusTrend() qtbot.addWidget(w) w.setModel( [ "eval:@foo/a=0+rand(2);a", "eval:@bar/a=1+rand(2);a", (None, "eval:2+rand()", "a"), "eval:3+rand(2)", ] ) assert len(w[:]) == 7 mod_items = w.cprop_tool.getModifiableItems() assert len(mod_items) == 7, "{}".format(mod_items) assert list(sorted(mod_items.keys())) == [ "3+rand(2)[0]", "3+rand(2)[1]", "a[0]", "a[0] (2)", "a[0] (3)", "a[1]", "a[1] (2)", ] # show_and_wait(qtbot, w) w.setModel(None) taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/tests/test_util.py000066400000000000000000000021371514602004300264310ustar00rootroot00000000000000import taurus_pyqtgraph as tpg import pytest class _DummyPlotItem: def __init__(self, names): self.ditems = [_DummyDataItem(n) for n in names] def listDataItems(self): return self.ditems[:] class _DummyDataItem: def __init__(self, name): self.opts = {"name": name} def name(self): return self.opts["name"] @pytest.mark.parametrize( "name,existing,expected", [ ("a", list("qwerty"), "a"), ("a", list("asdfgh"), "a (2)"), ("a", ["a", "a (2)", "a (3)", "b"], "a (4)"), ], ) def test_unique_data_item_name(name, existing, expected): assert tpg.unique_data_item_name(name, existing) == expected @pytest.mark.parametrize( "name,existing,expected", [ ("a", list("qwerty"), "a"), ("a", list("asdfgh"), "a (2)"), ("a", ["a", "a (2)", "a (3)", "b"], "a (4)"), ], ) def test_ensure_unique_curve_name(name, existing, expected): plotItem = _DummyPlotItem(existing) dataItem = _DummyDataItem(name) out = tpg.ensure_unique_curve_name(dataItem, plotItem) assert out.name() == expected taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/tests/test_y2axis.py000066400000000000000000000024161514602004300266730ustar00rootroot00000000000000import taurus_pyqtgraph as tpg from .test_trend import show_and_wait # noqa def test_y2legend(qtbot): """ Check that legend items are not duplicated or lost on changes of Y axis """ w = tpg.TaurusPlot() qtbot.addWidget(w) vb1 = w.getViewBox() vb2 = w._y2 plot_item = w.getPlotItem() legend = plot_item.legend assert w[:] == [] assert vb1.addedItems == [] assert vb2.addedItems == [] assert legend.items == [] # Add a curve to Y1 w.setModel([(None, "eval:1*rand(11)", "foo")]) c = w[0] assert w[:] == [c] assert vb1.addedItems == [c] assert vb2.addedItems == [] assert len(legend.items) == 1 assert legend.items[0][1].text == "foo" # move c to Y2 tpg.set_y_axis_for_curve( y2=True, dataItem=c, plotItem=plot_item, y2Axis=w._y2 ) assert w[:] == [c] assert vb1.addedItems == [] assert vb2.addedItems == [c] assert len(legend.items) == 1 assert legend.items[0][1].text == "foo" # move c back to Y1 tpg.set_y_axis_for_curve( y2=False, dataItem=c, plotItem=plot_item, y2Axis=w._y2 ) assert w[:] == [c] assert vb1.addedItems == [c] assert vb2.addedItems == [] assert len(legend.items) == 1 assert legend.items[0][1].text == "foo" taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/tests/util.py000066400000000000000000000012511514602004300253660ustar00rootroot00000000000000""" Convenience functions, etc for tests """ def show_and_wait(qtbot, *widgets, timeout=60000, raising=False): """ Helper that shows widgets and waits until they are closed (or timeout ms) """ for w in widgets: w.show() def are_closed(): for w in widgets: if w.isVisible(): return False return True try: qtbot.wait_until(are_closed, timeout=timeout) except AssertionError: if raising: raise def get_sub_config(cfg, item): assert item in cfg["__itemConfigurations__"] assert item in cfg["__orderedConfigNames__"] return cfg["__itemConfigurations__"][item] taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/tox.ini000066400000000000000000000005351514602004300242140ustar00rootroot00000000000000[tox] envlist = py35, py36, py37, py38, py39 [testenv] setenv = PYTHONPATH = {toxinidir} QT_QPA_PLATFORM = offscreen deps = -r{toxinidir}/requirements_test.txt -r{toxinidir}/requirements.txt commands = python -m pytest --basetemp={envtmpdir} . [testenv:py35] commands = python -m pytest --forked --basetemp={envtmpdir} .

 A|n=qDbܹN4e }3$J0]* |CLlkt%ED*BezsHrLcϚ E%1A"D(`"[$&lEZɂ&B,K, 9l)tIe%Y!/Wʅՙ_T6Ϝ9s̙Bq*4DZ`+8˗/_N{K/]| Ť;v?q)vqCSS. ,Gp8/+ 8E4H`tJBVX520>pL= 7 %?p5dh(Td$7.pGbZ] іNC<_3dR;Ъ $JyрQ>PяO *Z:vN ?n"&zHa+T&AMozK#R?!VOauR3O1Lg]HO9b2u1+Eb& U 1å\m`O>OjZӠ̧_6C*ZaFHTD9k׮Mپ]v, u5$$.//"""55kȞD\ȊU)%]7{{r]^ٺ)?lDz%,]tj]}:QdIшz-,x=|LLffdddQZZu+>hvPZdOB@Tv8:nvIPӨUjDsp,bY(Hg,jS ?A|\ʳA<'-'X]ߟD%%KLHGJ{:\OL||VCi,@!Q%n`/vYOT7(T>99bQ {?HGo_ؑ# #bR #f TUh5ˊ$Af5kիW]Fvp;qb=nn{b W>fFn K(+J>4$J|'kFLKqbHfRNlG[/,6AvqTt9 R\O d@oD3wssqwPp 8zvX\jpۉ?[{`pKSrѸ1__Xq!Fz `=q5v! &w%돜ABtb ")'GEhHTlNLZaId-K`````Xn3Y %KkѤke2 dF#ZhL$ܽ,-J!fiZ${!dKurHGPm\X5PQ6\ TipUlQ&>ETNQQQttrXe.J*IıI\#UbA>YdҔ\46UENG,AC;7*N?}}R닿;X $+7i #vqvUЉ??ԣj*ޕ^"aa:4n%3]3ׁk{.$^^b߈f_I %K>MBE~K r=nΥzUjC,J|0%>֓HJ,#R=H<%A-mA=ZH>NWUC@fq%Trncpƈ Ǝ[9U>ݣIOAa_cW<(#"jY]Ґ3ve?D ŷn]~=<<&S\/cXւ_5+ &'??ٲeBwBbg>$dN*'>;҇PH#ȍFRKGoܯrt7a8pp*ݹ~ʲ(mb؛/Pl'}ʳj~C?wyV٫ĂέøqJo޼D$W8ka:AĮt9P#p5%jTZk xxϴ|P?=ߟ\ǟ|/5=LUm4Rܘ8jpm!FAܙ\B"Q+DadR3m/#AO#٪u(FSa@S=OO#=\\ NEo\\%[>P%dmZf zJ̅,jg Ek 44$*&)? OE) 5Zdo;8li#.5hԴ̬$jEK4nB7Il##+}_UӥpH*!}6\#TnIҺ~}Ʉ8+A. 4 頒:4eˑĻU;V%(QrÔ XO"]+T/-$5>^,RPM7n44Jʢx$X] ʟ[C^C=ܬYM UB^-899kfND L]L{;t½F NuB I. Wf)L1{yYY{w޿woZ5bj9ٱ<;g=I[UTj5:n¸1?\{Gq?\6a~zh &(#۽RTtcKʾ Ɯ57钒!Kv1.=(45kݍ^^x:&`|\"o8Zj*jl6+XRgq=R;Nd6Dۓ'ONMMqFxxxeJ۩ukVbEfFt .MӞ>ӞR7_5}m䙧&n۠AMiŮ_7sc4iҘ;^S5 ^xڷE#dž׋:oϹ?J+nղcvcv[j#I%Q@}xLa'Հc(kŚ5 <#:9*RTԆ:dldjU>82ٌ||| ?\3UM0a,`hV;:t)0֭[Iۜnq˽+NOv7T$ж*&'eᗟ5T6xS>"tBZYӧ?y*xoz5bmrw'>칢Ϟ{ͥ}zK.v(mU^곏]}uܸq;w>ttȑVZ?d2;vS(>ҩ\$!bQLaaaTTTjBxĢ)3{srK>CzSfz唴=GhڪÇmZge@;Sv(+O+~eђ??ϗNh߮뚟u7)]6(u |.ڞx/?^^-^kV 􉈊v|EH/kРE\6x[7G:;;ϛ3;q{Lr_YFƫ/߽#W_[5~ ܱj԰oݸ3.vqqiִן\nݭW.[!Kj3oِmU]}1Ǐg譛?5bؖ Qw}xauҪs9w4q¸vm?pKA(Ρ@ff}T<qoX0ato a&^R`fsrDZx/ZĠ sRRR^yQ7, Rpe rD?;)R.]rj`QN>eee[~mn޼ ׯOJJ*,,9d5>4Lƪr$.5C݇jSNŽ$sYYG893#''RIcO=~~~|ٚ_|~Qxunݺ];?r !~#^߫S|Z]{YԴQc'.YlӮFxΝgڱCISF kܨiO\n24,˅fxi3~Rfܐ=+;gu#CƅOnp._׋n޼5jgfFr}Ȓa?2dW޸E25v⨱ ʺu<7r/2t?AѤIU?,7_Sҩ"[")Liʔ)OF pw_P@"ܴI%-C%|f[m ՋϲoYq/^qp2VT;Ŗ|ax73 Aġb%b$ؐbyHn Op}0(i2g7իWl$#"?YFcLffTT*|Tx"RIkJ-)GF3'zRFjSlWSzk׮M2NSFZDk:wRf6?fʜ4V̌*W,xSO6 hڤI/h8zd\\\sу ݶMܜkKi|`4+/8q]~6 7oBۙYcm5ZC+pDEEyzz]<p+X,-1DL- N)*HJL޳WȠm۵+5HH};| ɉ- ^.,*Ͽhػxa2Ky?\fVֹ燌EaӖԴ̬>>zvҙ#2degb:GzUcQGGv}Vvv``yVe颯=Գ|fSY+Wz?ٱC'*GK.M|-J۸PlٲEKHsq{N(ݶuMk#G5h /7}ZuE΍d%|/^ԫgV-#?شiÇ9;;;99|+', IDAT?qr8d.{%Ga8ԫu&wϖ8p\{S'`'i%̚ "ӼY3ڣ2{d//Ot]=<<<}FzuD5 V+惩SԨaM~zG굿bcFoVm~@DEoX 8=Ҝ ?:s Uʁ*FkS1qT! fc{HpKˍ#heAN B)0VP^+4hbO£JvQQT%`UjDr>2R$%pF} bcWZ%&C ׂ롖uO\dChω3'zJtl]Ŋn>㶲sr̛?r];'o]\;ѼY=:ܤq㓧~`||ޜY{F|wnJF?\/_JbY'Nbْvt@{T+oܼ~]_Sa~A//W|gcsߤ]{b>o/>(9a-t:U%SO{i&[6F8S`'.Yk/KNܶy}葤 V/n*TV<YOrJj7w`sZĈcK@(+k4YX|D\P%Taϱ& VZ 곡v>4Y דklXeeIo^O2&J&0w1+C[v۽ v0 ).9Eڗ(j#Yz}wϝgD:HϾ\ٗ rؼe+eɝ7eݲhc{/&U X,~Jlmq w#pV^vGkp}0\w䩔+h) ;wGG:=h1{OJ öMElJlLC[6]*af\$R1JdIxXKP w XϚ(b7DG:QdKuqy$fnHNl>BZ}}|h :Wp*ki߹ط=G\y%FvҤШ(: 7;{ \ȒCRKJDI}d}@X6횂RmtbE:#aqDoi0hfe=L+X!)n`֬YZhʎ*yDę Ĺ$)k.%uX,ϵZѻY$jHe7.u\RuUr VđH|0>ҩ\$nliw۾3"&-Ln<'!cfܫ1qܥَ% n'5D(baDMBm=#J wû{5Z F/cp;+r0/6T3L$::[ Z3ʳS /Qfe!7rJ,x?r"h$(fdL p^E"  iX ZĽ1>ҩ"[#OG[$&NEEE `^=yRˣ#IK /?9e2z{+֬FnF6s@fvhեPfN1vyRT 5Z\_%>9Y %UG"Vg%l0da8(hJ;RTh]J@1I9A?׋, <#Hc GDzx!*q6q볗/+WJ[+éNzIU>hDo@pEd'&zzz:e'$&P{{ olQ}z{.^H)@$ `(V9Uڷ 5 nr/?FaՏ+Oi*ܻjG^D?'~hFB)í z`p^L&zIeHb-Jh&=};UQ6%!{%*MbM}P_^M9:׿~;_IUx*Шa\(++33; ٵg/~(K. H[<<_mCƌپ->B[4l̙P_:XRRB-<>99)È}n{ÍC‰hWɃ gy8KQQ]R9ىX!TxyDDQZ˗gϞM:U.=j&P P6MCa VjG8|s-?ҩ#;tXtqb\NӏI3?Tt#~.…So97fct[cn:w~0оݲ_Y=IƏEػWO=6t~][í[/[=׭nԨ!rX,,xо]c7W.4nhP A?3-qڷÞӞ¼=kVؼYSd{uxA˖.6~c\`hP}+wĸاΛ`O򲥋VeŲq|J抪6iS ͛5]Cv&M@/ڷ+n`agϜۥ(<<*v1˖.ݼa6:_OF5=I{w̜\Ӟ=_|thn/&>g֌gڇLݒo9}zsq r͗-]ܫgx^|@7rİ-ؓ_MuG_DJ-qʼnb[jٻWOr391LV앗4yj: D^%uE`@u/K{gF"ց.,2*$n;%1rJ–=jIUVsʣ 3_I@ܽbRx?3`/>[3">l6s{oGO=3/㢨I9L7/[n/=-.^gyC@gj/rgRr_~7^-w&ӪC a.6_}?FS~?x?ao/Dʹ&̚399Sť/?x޽z6ktQC/\H-x!G??%nU+BAwAF{o{kZܼ%w?}ӳG.0?wmߵ{w7d蓧~\d9z̨SzvQ۵{WϚsΕ+WT \ā!u풕sߋ*$377&*>nL 7FH'Sb'7{1qN"7]MU9֭+MJv͡%+~7E:?FY0-b=~ϿN@R.F<0dO?[\ݺ~qfii)SϜTxF<#\jnӿo*KQqqTvեH8qߋ6#g>{A8ؠ~}PXX9&fǟOѽCgԪeKw7lڵGz:ёϟfZiƦ:|uԌ:HnȰX,kԨָQA¿T*FIU?qyͶfݯM41eof5Y77O? 4?l6n>|0[j{Ͼ:H\ĝ~;}}Vz::|^z؀~:vlr*~0ڶqqv^zmiiRA\3g.++k߮- (VCPK.qEF E!ٜlL _cYa-\(16";@>d T} bkxU!%%K.EE>c8rCgڠrYQdgeg+pP0M5%3e3 pwwwwir<=؀~<-VC%t,dlC]fe#q$8&N{ e%$أ!xm-e9EKƍ,<.eE U ŜI `ϨB7 "-rćT(ئ4MU% kloKKK'=>%+l9;yCʎ!G.0ɩ@ 'Oբ2#G9tFY&SFA2^q!1Ng0gfeeee=ܺv0әlYP_Hhبl{#ᥤX8;;ffeގⰈ']ٷӇ %}:og7\^4[p5t 99 IDATFmҹLh; hZsrիKVf'4[׮׬v kSwO>ۧg@Nn^0W P gZZ'j}A1b;[;Ӯ_O~]Ѱ5U0`ܸq%o[,͇ NL+eMpd-?6gd}m*yDDkIHg4{׳Be©m]ASrqs#Ydbnbv.\yP8kO(&j5NNNNNNS@8 ;v{.Cնh\l"0g${Hv~Gh<==[hN{HMM{GcAt8DžjN;k (?gϕL0^>ܺcLE;t޵}vO^ɻٳcZvpt6MhLpՒ;zxzx1Zֵ]6ZvW\MO-{; srr|7_{h0f?¬Vr[{gN&h۵#jͪ[ح5G^t._950$7ŷغ=w߲ls_߯ɻvGL*_ 6j`x7MtaݻU*m{||BV=[nڃ ~E_pŲ{^䚓]{ܹ}˦V.?z|ߋ?䳏>x}ZX,=?G]ˏo/kV4i|y:ĝ={tOܙvVv910Ô:pK.{ %Ș5*F?1q νr ZbH:Sq5kЋDP[vV`$ kN"QRB5#󭸷DDDP7•ց:HCmp8;hD_wm~$8W_s~>>p\%,(>.ʿ J0uON>xckʫ̖MNPLӇZmZ E>p~~zn__xBC @RNɓ +!!1;{?Ak6YYE-hȧ>XIMlV_(HN=kd7[_Щb[$dTi;kuO'ڣ6-^w o<(\ rh^5:zbQCH/[Р1qLl;p`EkQW6"˞Q5h.\iӦ۷ow҅rhݺu&Mv޽aÆڬGqQR7Sv &|/t+/9j懟V}a8Qc',YYxߋtD "Ca8Y:__ ޽Z77gWw#alX8Az"޽'`aE kA,<\l, S^j/]dZϞ=[NrœFiٲ*ɛu@ٹp¡8xCtOR t~M;v:ק8c׶nMٺZRcwJ5 k:\!98r[Cʙ=DFF &Hfu@e#oWăXbhbCk}=j&P ;X$&LBBFE[pGUTTTZ3bp4tPWsΚDKIɽk^t+WSfj4rl.uFH$QWF ~7Ь*I7W겹Hؚ8J{*ɉ<-++#ܼ bccO:իW/"FQKJ.WWƍwt pvrr5533sѥo'^)w0Co @%hf1L*GԳơGL R`O2 i2]15݆yׇ@TTT+;!rfkEBI.*Xi*\ŅOZ6??ʕ+pBڣXd;PPrrWIQJ|TLZϏ]COSQQyh4`s .^^m"0ͥ^+8nLeI0xzFEEq▜= C"AI5@>#Vz'A7"??Ft(Kq1Yk!ELA14&>z:jQZmVKUFV:@dd/}%ٕgƍ'2 d#))ɢӹO6T֒ǵ..N:݁z^i]RNb,77l׃R`twZ(}GD`Y$+X {ZկYjR=:iAkҥb*=j ??l67kLնi&33ۻ{Z6//m۶AuY-$X,& *)J͜9sիW_2}t*L:]oP1qEEE7o)1jLJMVZzÇsrrܿZZ DL1__`z11qGbf̘tx:N*lΊ֒X{d;"Ŝw l-GiժM&ӱc@שSu)8pN:&Lh߾8]QKJ.Y2z{{xxK*Ɏa:ZR>bUcTTT4TL;ym׮\͜9ʕ+%7o6'pcwIPiAh5Kg7k ;Y>[X.]4$L.r &H@܄'%%@FFFll,z&''_>!!!^N*wy/GE.z5ig,r_;IyH'T&:A=q͑1qBBl9w@/2ASHUnћO.%=d*h,ؒZcrR(3(h$Ȃ6%8s\ͭIHKQWK{!kEP'48sFi˜5ڣ\\%>5 VQ/[lPp`3;II:A[S!FQsY4ͥЯm_\߾NfZλ7Lcǎsv|Ȑ뉉8޽#; AʒK6 RP,2SY@,ɤwqY,\ yS171;1y'n#qĩkxyyyyyQFA|g8WG4b(&LܘiӦ=!f̘8cAh7:J?-GO @5f09eqhwظ1a%@ʓ82&r @嘸ǧh22}Y`(qĉ܉ޔt`XgJbs!7b) b0l*'.dU -Ej%%WOMCLG^^ƍA}Kƍ&zݲ'{ /<`́zJfej5Lz!N;HHagvvsn#m,}J"%JK :f^S)A5ڣXd;PH|~vP ?q'Nٳ+}Gj\r"7jѣ;\}b6n8w􉣇_7ԻMԮ;QEEAJ%o/O4˓Ld&\͍~zd!=<< ,n'k% HBF4%Kл۰!K>bu}JAU%s$,y*~&(dbnbvGu^E6&n8mS3O?5l'>j/;;{j`?b@?꫓'O6?~Ç;ugF YWX1`(,,ZXCہ1qd!7(Y>(fI"aEUB(363={()J7ȂEtA8 kLF:eʜ楥.222,V+~Y ۷oc#k#Gnܼy SONϏ? TQQ3;|ַ`cHC1q̙)~tnP3Nď=e1gB $.%mP7!ssG_kݪUqIqİ&lַOxxz4mN=Ǹ~j͉D9D8;9 ߿m6L߷ggn***5v%ܧ8 7&^EFF4$9vF#BJ~QB3B#"\2{ MQK5p!&. آykׂ,~.{9`7`vuaǏ7GsoܺpG4yٳ!UTTj Jt&)GLL6gETL_3gΜ1c0=H#@Ibq5L&SL!`q=&T$&N1lKM&X%PSGUFc6Ko{pq]ti8zՔ6m۷olE ,KVvf;wڨ޽P Cی;n'<>Y -.++yݻUOEEFA+#ʸO1quBCW0(&C.|$<<;u I#0 .,4R$Ja^TbQ~p9sJ5t)֭[WAR{ܽGAIQJ|0FqtbML\jj`s:]ii)\\\DZٹl/mݾGE99\Rs`GݸBLJ阸QwޙUZhF H `.clGr3nv~m$$#m 6 `c p$26]G3?JTKVӯ_wT^ c=/RK.RBW[[SSC: &@@h|7 xZ% ymCڱ#sx&4|MJ>'N`G޴ '' b?/==677=^ .C&LPJqW_=~jBv~ج3PW񻅅'M|e=? }fYd >}[4^=dN\̙۷oO\' #ȲeC0f_5Zkޑ Dol E-ՕͻsB.6.\g捣y(6BG82Q9vRO }57.\xYg߼ofzOoj`)wz?mxE?_6lI?woOZZZiC>N0K,c@jƗ^ _l%ʽhIJtw//N='%KGj--spp `}{N>~\j?H33ΌjY&7 {tg$ϽDөkjҮW :`Wɍ£MOKKsMX{^Mx緿Ioo,Y5hH /Jg^Pсߴ9q9wӜ8|G_E)>xIۜ888xpndn^(3갩k&+W@]SS(@z `HN{KD5mHtuxѢ1 }Ky) ;A߾_i9qYd F n7 ǜ;H8s~@t {fR6 I,)sQsyښF55qTnO0k=X6c2?RDga S'pYdɲ&^ܨ 2va36"9q];v{CGHeX4y.DezS޳º&|<'w\Z63N+}Q khI䈻u2]Nq)+B'F2JeΒ% oO/#HJ9'墓m͉)-8,86;'c&Nnkh5rKB!\JkPPc- :m4#@.'*/#65<#Zm~iԾx^~}w,Y&6Jl޶Y/i=z=V9q90iΜnO@!%<&lAf9Z)UWV&jjjWCeGN(oIu=(DAtlYt) `nu̯m]񛂃,Y׼#6]I%{:C'_~ht1cq^ IDATN\ɿK@t/-X㟜7o%ܶ!?᪫`"67~ټs :-jyyt|+ŎQuxT_}[;oo'͙k2%F)磩orV/2j3qϕ{nL2KaBe1~m(.ʒ%K`psCXu/K^}X_XS*+W:b вb?PZp< El=}}NW7뚚H8 id'[>H1p9Dc,Yd9'ۜ{{(]]?뮭KАM7R K_L4㺎9-ڨ 8>úhJ$qb6hI*pB;AtF 9qYd2rd4'N ߜ8zkԒ;h0H;Eu^ pCÏ-Z[v4x\ p4JsICs^( .X`ܹ0$l>hip-W],YOpmϜ ,89qxxc-)`hF \HMfXL{lK9!}ђ: -^ :AK`>@AmR"dɒe2'z++OT{)b:[Lr)AlF0L7wikA DŽbDKO?Dj6F`z<9Ty%K,#ǫ^tZ4 ^?YpNzs֊ikms4x؉CXa*-#@>)i"F N8LJvwh{ \貨hTv?vI d%Kq)%%^͉KGGi߀I{mmmn$ [;b̒ Z04U>Hfj/ť5 wW?)-ܹti fAtYG|E:h=c߱?o_yD"L{qD(TZg)ΈF\u/=riOGWxs3P ͩyc3 kKSqir^ UpIS |/WZC%UаiP#H>%%/|.oES>2Daacց:)׿ۓZlzڦzC3qN5\ͅVsĹc MD" ^k &ϛD0e|;8$F&̞Ɂ*ZYĮ#^i>=]s48 :`W3BK:#y_s,YFÎ{uEn^AhI[Ogɣ9.//wp4cQ^3Lh'1'ș3wɹkg ZrEs,S8$Z!%Z|cT2,ѕҙ2[L rX>> b9ސ,\F[)=qKA΁B@ ciqHvN\DŽ{֏Ϟp t1{#mm{ ǟ=€Oyx={AIڜd__6jX\[4~HK\nHIYj&H;qqheCR\=$}-OqQ"lrsBs{{ŧwJvN\L ֏G 7GDڜ8<'zp8Ii o}cG::ІMW,)f jjjhJT 6Z=aUWieu2z:c-FL{!w{čױ#Y,:^?V Rz= V4n־+V4,_VRQ :o̒ Z0 Ό!+ nh弥5Ԥ4*6\-)~)ap?R#DgLq9%HwŒ_=H28py߾o~o~awu,g'"zO0= 8Br;\*:ɋpVʒ\֥Y"\'Bp$z#lnO$ r}u|4lWC;AtF8c,YF0ܼ)S>!3tʿ޹._~߾aŊ:nyYGjW<^l#)y{Oĭbgl ۜ8Lہh`E;EQu.welYZ%y/._=K\)[=z;;;wUVV| > w͏>Oo--cF?w#-?]v'?yXɼz:æM'NhL;w9c|NqbK#Xc8iӦ͙3 /D"z#}m iqMӢїಌbX>yywt޽{`_gzȄWIkoNRwtuI˃H eߺT*ۛEwv G[vC92̳ϑ_5_nmw~aJR9}?={bT*uES9;y|uɲGR7jookwqK4ZJyJ2N-)-qNa]GA'Ả[`A׎ޔyH2^n%`(8id( xd# fo)ȰEKJ:k˖->ݻO=T]c rd)Ʀ,Y :(8Cͼ;oH$b*JG"]mO{IQ1/>9*??+ }g?yfɓ>Ao'?r'KR'qvtt9dBw??Ođ8T ZZZPa_"JKw1,,, cC]o'O,0^đOB֯KXKÍVPiUW^iy;Aw|3mhb JzxYpmy)W]%Ҝ׊Rbآh4MDOOOQQQʁMHǜ8.%A}r-<;.hksׯק*!>O$'Gr҉oT*G75sH8 y 3+5ۛ_|[?u񳯨~g(qǎ={97{[[xrH&L Rrt{{oιW_;k\jS'V H,Yqժ/T!޶/{N\{{e˶.Ye(c@ɔvyC ʢICH8H$8'ua܆ŌUsl r,-&؁޷ooi~:zb;=__D$ΉK@C)dٯ[>O?Ï?voL%~RԒG/ÅVUݹͭm/uH x// %ia rvd25\E7x|$O&So7~sΎD=T JKd2#đG26NA*6n5ʃrss?d2v:# S`OF`Fr=ωsBsjxsH^m V4- 9)sZ|}=DCΥ䈭"aIF#"+) `U"hI'Z[iiJ6'Nv/djA{P]SSueeu2<*?^Ki`)YVzE*ſG̜7| 4)=?[ڹ}RjUWE?nca[joo7)**npFKmmmW^lڵk;;;yAH]&8#GJ$wf"U'vM7_`gh`CG<ۈ'N BY!ih ̻m \4,QRc጖ӣ v8$4W 9hz}C)dٟRic'J{.$#`-b{;ɥOpu牆|䓹p$Yd {QgiDh2BHN:R>ۑ>u(}!QaDKAl%]&8c8|$o ؤIݺY'=S-ohIwwO_]ZVWSZVӝ_ᅤMJ7ĝ|mmxsۖ-{] CO+8}D& 'ϛGd-..b9zG岒iEoVJek ۜ,HiǜYoR9qlV,#AwßN<ʃb>&JUf= 7'a۶#?1RTww r7o8=~F4<+-XђrOWZPiP]9q Tp;w*&͙k2ZPoƤpn"5Y񦖩cbooق>}\ :c18ce4>_W|5P jxgGo<}[}zqD~~Annn^~aDB甖p^R^Dk+iiўKV67ޓfϾow]݀*㱦&X4EH\3}7L$UUU=}} }T;vDP,S)R |#*0mDUUU(??'?fMO$ r}u|4lg(K(tA<.l>`|w,.;#??*,3^~z4h7jmљԱsgb$s>=8J"\҉.\;MrؖFl)ՌnhItwyc-NWW! AqI:W5b[-K,Y3[={hS.}lmn Z8`ٲe¢5kUtFzNb V4d8JIMǶYw|m *F(8jOqQ"lraO#M*dȒ%6++gd dk%Oߊrd{ޛѲ8csNOhE)m:;vGrqiqZ)iD#khi0g$Ͳgjآ,Yd nhoKKU26\w |nZ$G!90hw4 Tє7nΝߺ^ǫ&kJ|oI(iSCeDKAl1p9ll dɒe|h( ̈p*n9{&o4KB=D؉l\,SuR=Ë/ֲǁH 'Z9: ! :n⌬ ٹ$K,YFJJK)Jk_wۖ˴3 K 𛽼H ! -n Cr98EEE($l7 FNjm0rBs^+ -k0ab8AtfgcD>18 %K,Ygx/D:(4MjmpW0Zv.];M.}cu6lr,$Z6NWW! A1~!W#[ʶFΉ! IDAT%06RʟyRv$& =[ZK.o[1*h V}!9mxW%aQaDKk5ys,%#KcNa{6RYd]76?ftI/Ӣ-  \P>iQSC].+y=PR҈G<1'aϴ#HΥ4d5^_ѕ%KKK߳G)㻟ωUNoxć.6Zg b]wrU#rCf8ޛrUǶS-ep'o>AjcpQkեCx'FܹnMqMynbNtoٲ%òPZ(77gB_C)MpEC*K 076M\#`Q榴,ѻ$j( v+K~HTbp \U'kġ}Gbem@6 (7UT`TҢBV47g4[|K? b |P TGtFt ;Vx<UќiALB1-O;*69z`DKF!lg(`Mǧ2ɴ6h\ʆiyH om)֞- 7N*,ܶwW 4 Ck5B,Wt5) lMHPTRWSdKcv¥`Ҋ; MiYBuiPYKTI$ת15r}'45,`nT )..Ml;(Ko;G9^bKwzIDލWA(ߩ?ww`tI9 Ģ"]JJO{"^-tnʁ5r±FK* [ZUT)yă$7HB2'NHen-1 N2)- b4*R4O57@b #}AMM &Bkݜnkp777{wWgP8q QH",cFFet9ޱ\n"F0O)F'56oޜ*(B7oֲmP;"S(k}DmOW/1A?`aB= _':8YRhtڴi}vYgJyeecEi޸U--Pj?ω;x4 [d؉/jGT.ppm۶544tMk@(:,[4‘ETNReeeS"dz `J\, nb#z ('t m:w#MeT9x_~8X&J6"M(kĨϯUȆvLx %`o'dz`x >UT)G)]JKѡp sݽ{wok_(1_\)X\v a${ ݚ*#$msx p=Lo$vbN,Zt}CD!gh)H;qbUUU__p! :6B:];<ڪ=:  ܦM C_~Lh6nSIiLЦ; aY88 ry1(\5\'4%%q~HS0PYuE?ʓNJ–މV,=§i$`sWxՅv0HBlL+T2yxeeA4ZQX9qQP[Z(#8юMA7jJ[8@AZh@^nw>ȱp^5v8Z|;ȃ@^!8ctrC-&R9[MKB!9Z."( go Ʌ"7xs]]AG%\_jjH)4皧O,*L"ϋfGa7^!<;gyf[[[3<x=F(uRq񧋋@ ԫ) E h9ܼ¾7mepX N7ypڸ3~vȆ+' ӻl.įz2-** w(! C 6IxU&9aQј<0t{`?= _oW$ ͻQ arr>; 8\jh3[. $mT0ZH\VA~ҠRd$RH:xpwJR0/ T!Nѳ9:҆*Oc>S\IO))VR{wRJX"Vuz췣:#8p&0=n#^G" ;ׅfPqׂcXiN7΅ h3ǡLY\Ǹ/q<xX9(1DGa} Zr|\beLA, ay ¦I_*ӀL=LvYrܺ Ҕ%T ғO>묳tizDyybZN QHi29D,ۑtNFY} ?TJT\rz(Zn(TXXk'2 3L诧w&xS:R9JZRKI|'dbo_swSb6 nkS鯄^ezEE={$IvFZlJ8@Z'MfiH… 7nΝ7tE'Vu 1Hގ_T{pr6{./É&]џL l9T\bUa@Z(7:;Q0ry絴s{U{iE y3i(pd7`D䕎8 hT)~H$Rttc[t~Y>ԅث#,{Lp% Tz+ۢj  a#搑q7xɂdةgt9%"a 6vڭ;"2k#8Yo؄M #(t|I rrqG i`*:E5yŽ i*6Ј4=%|mpJ&q5"xyhiw%صH}o ԒQgC%*$J)PjÞ=˗/IvGahTz_ hhN D)S=Lk!f=@9X\mET,NJ4BpZ/9åClr78 )AҎ y&H.&qܥ/IiLЦ|DHY܁uXuy嗓HdӦMZku)k5\'4%%q"i*RK[kyy<)HF>I^P_/ m aiS)ceٍJXୱrm|TIq|7o@`8t.5)r1MV|g7={ehiؑd(:6y{/?"aeq0^Cm1w1c )q^|ښ/"qwp74h t8 H-C|%ߌ5iKԐ R2h|MqcԒW;: rH7%LG؍/yBx6RWoH`fii$)71,ん8DS)Jnmp҅ueqXp,\ a#F-oj cc ޸N!sě-OhpтQSh<}YrEo[ƃ66qzxl3\:A#Ey%پ;La}IAF (Қ]_x(L& r%.U_lGhoV̖! gQ~, tX߾>ƨ=D7H ]~_wiLKP)iQʁo,Pm\UDe?ihɩ^C(drʄ tP[[+77_Qh& +ӈm,SM [nG%}pE*2r{T8ࣥvdG훦 Zz˥'2=+ wpcX^z=ڱMwçHH-|DHYHR偣IDZ[1"V<`\~z4j4΅\ߨƶka6Hv% Y&e(^!9Ja^4*~ÄiV>rM,PWz̙3fxAOBr!Jee*+ȅ4P .)/_ZWWziUƕ$nQh1-VpCn(򵠹y 5c[J-!k@1XV6CA [ |>+%#(tCYxp8~<[7IKu&߶'LvHSO 2OrqxnS)i2"xyhl2 &ύs;R9JP9NݻwJOk&l\aNxɘiV,AR(ʩi:ZHA%@+Q+hm?sGKN!U<_XX;oGґaǙB^wpMMhjwww}}}}}=o9pX(5b,.z~g2=U5Ax"%F@}I~jH}.C~x]-T왲o(9=\R{, /eR&aB+,+bL}J#cVBIX77ӆq|7K|@^7^@:96T[vCx)ZဏyAHcgnN? w&7[8E?tv:Z.6 nP/*r#oQ-U`2I\TAkx)MW e~$vv#Ks=ҦR @abvuuu̙W3m1¿Tg]Z|zܞ=O=T^8D>޸8 M~PaA.)//NWOGb)jcmv[g'7Ih Q }q񍶩eOil5dGK3D*@0 Uk&da[_h֚9_ܗf /R>Eژ*U9 F t#%MNHۮeO ; ZӎycKsGy9Q8Dɋ߈'[[sB0 X#88h@}Ctitqz j3J E&6Y^M1=Akwr dt?c ڝgjrʂ̫@`}2X׈,{5?TDYƈ45,qea",`qBbPV1KK6m ֭[GcmG3Ja~^Ybx3eR)`֋Eh'ػްWi`x F3b19OX~F2vSp#̒>8pD*2r{T8ࣥvdG~U}-%[. G\lQ6-"O U80x~З tx\gv-#l~jC9X)ѓHdI;p5>DصC<甖ՋFd gɣuwwsR疕aqwiB&QlIrK+*hVQJUT(WIw fb(J*mQ94-Z`s5!sJ-!k@1ˆx+ڸVLA{uJa$?EwҠ,bT6lATgOv;⧆TI.9mʈ+`2ఋ.]p'`P$+mmqH\$M-/9^iaJ$T.Õ<Ϫx R>E<uMMS߶m[ΝS uPÃJ-WEi馛H"mQg(ˇERGٳMM}5sW<5Կ+cS*/$(g[Jt71I(TVy i<͉IEv&qd7{y;kF/vUUUX,H>KH|SYnY+_3P,! -kn $Cѱ3%#;|/ܕC)[3{w=X -618}msĦ{g%|8ڴ8С={_r M _SsMt`cC%H/mG_ r7y2L&UUA2Y\{|Uvim=|4Zb/]raӦQ:6 ,@=xkgh T§oPoz'(qh@o'ϙs 7&80;-.. 55LH(i;M;WpxŤ,18lgU`:AbW}mپՄ sC4|; jN͜/n|BˣU,+FW nmWJ A`kmmD eq gx㍴9O6mΜ9^xa$ѳ Ϟ={ʔ)9N%yQsQWՕ- omq^sOYsQ34lHcihw|Vh@ sZW׈~{tQGeѷd2YYYY^llDl~jp5ev@lq,`v6cPcmm|DA齽/)|rǚ5}{b~M/**WZ7w d<^RL&WMcǎ|ݗ̊z(^BķU4'Nf% vhn+a"H--=C!wzIn qYnQ3HbpP#jUǧD*4.\m۶>iPJuY[lyGw}ꩧ~6C$O(kUǧ,߯\J7O me&R5iiץ.w@\eih\b/Nͅg0xzꢢPhժUyO ǁw}mi#\`Qֈ2 71x EiT#=}==;V:5P>zټHI:hI0=\Cp4bzE%E09F W2]/^\\\4Z5u9qȾP? I$UUUUUU8ix)++ٺuk__;3a„P(y䑩T]TҁvmT#eo C˵)S0Ϳ}c,?q`-V!me9ٹxŋdiʶkO Lَp[#%F6mB~HB{ǿX}pXݸr gjH$^]<6"oJQIJÕ v.[uɒGoײVZFHFaE<l7BBz(aB^mUԔE555;nݮkjAZEEE8ixFDOOOQQWB'x+{C8(@0b(@067DcqK-f4 i& &*n41#OץA,ȣp[XPp&w+幾HSR2l~JCMٶG6vɑ\,^y }QSǨ55\h qhiyw?xi9o'3D/z4Ocuˀ kjL=I%˅F},O; =E.+y_Cx^SSSSSCÞ2D`ۧ-zo uиEٔ8p,.Z 5c#r{v@s$K_Ҏ;}5yC;Zc`Kia?bdPltFbS\y(} 7⒊ \q>M70nJ7WqL3]a[̤J|N\zhm'!Y Gpǘri2mp7ՌmXxeffQ36}Y;jvxC jӠ(WB iP*SZ:BkmmmW^lڵk'|rҗ^zi֭ђ9: v,+-!7KiBk?LhisrLFj_&I c徑8*3"y4ro3 mLQncgʁOm#HH;H}.Q֕n|{/J MwTCW:J$iH'W#(@)Wd8 |@c\h>zy #,‹hx) |M)… wؾ} ,ccqÔ; tƦ]?Xܿm8qdOw62ݵL,ܱ5҄~Č xvFS 5MYн ǡLYQgGK-_ĦfKކBc8iDZip-.[뮻ߋZhgvS_a[]JC3:aGV*~pp^n ֆO确L!La5IhGlP.fWT2,UT$ɂs/*yЂFjb#$ou]7_͕4S YجJ:jKyܿelc;=6Sٖ5kի5}Jk[~#uMMIDŃqpܚFI4Ƿ΋0 6gpӝK::06J`o|o~ 7piK#f2bƷak%%|sx[Jmr(A<.%o].7+,|GHaF?4}IW\A I}a]_=JIa8I*'{ƀ rؘw^>77uw7ww_gggrCg?lC<{vΝ~8+wH%X0s7&-,?Ɂ1''>G`h4/ֺ,X@)-V!1~o >zQ>3A%eMx@0F1x39å8t#AtM)XlYqqq~8tҴt29P[JyǛ/^>3bp蹭R| ;6mrk T`o]\A}ʢC yrs>y`ɒH$W4&Z_"$Mm|7   HJ&ݮ|ڭr]# BL'X47<`҂'t5MBHZq^ !ZgXg=[ M& Z _Y{{g`l산*rw ~nlڌdx :/Y\;DF듮K|')ۑc$E(_xb:u:<''P %2=#ô㘠}?x≼Hd_(l2ґ;lٶeB6'{l|c&ec3kllqh^8L NCvN4Dp'Z֬.+H(if@S6vl2}ANpHΕHLmd "x%5Ć1 oBr 7l߾i drܝq)HNRiVTYGw1'?yVXW WfA-N26q&92Z[aT Nmm-.xb3јKB02L,d:er:!Z«6 -_ĦfK*AZ:<9)ܤmse;)҂EV4dT/wqo[Z2h~jd<?b64X%KcOLʯ ?CEȂ10OoJZmc9C/oni`DC0%̉mf뚚piM-(0WHz!9;WískD*2r{TҘb?iw؝k56d| EGP=7yMWup">BEA`Sb[@6mbVֆ͌ŔW_Pᣏn{#f޹3'{#b):,C4Kn785@ܱpal߾_HOq(& M mw5ߺV\;bn5[~viSv׍8Z sYڴ8Y+Z.#m O]!feҘF.i{7gB t/Glo",X(uww+].,06+c c\*pa$ߥŮz+NSS?/RX/D&EU0el~ Ȓ!"ݽ8ڣ}Ϝν?EO>}gLOL4=]j6?^rpDpP,.,T7lU+?EpIN0gB;E?p(XBx$~ VCԎs,Ew#RZ:`|*k2nBsr@gKM liN.,5瑋aݙ3QwGykJJYPzS5OC+{!)j-w.3ƬtF;r9a+.~4=γ];88zz[vO$!UJ\ߍDǯ6;`Zo?Hs4OPDTKge\oV@al)[+QL ey@"omyc+^ UΜkQ 833 -Psb9䛌Ɣ/đдB)M(_TR!i W:wE qtݽaݵ&[x~R1ٵ#wjͳg'.2x| =c;vקcv|db&&&9raR%a {{6Ϟgb19O/, Mw?9X'zT۷PƧ<[m!J^:hhtZ*\Q5~`JHBXXX];k %Zd_bKN7NK0^5fR͎v*qyh #cx8BZ0(ݵ˃h~,y|K|޽{!O۱/<xTs*|bgiͲOy]'qG/z&'4E5i y꩷6 A* ]-YhkJT|j>N} @PNBD5 *<ݻwu-z(P55;%/LAoHk1S4x7Y]U>;TjXWtb9)[#Iw|Ǡ衇:hfNc nތ9̮%x`\l6l7h)~|3==ŀhl)ϭ,Y!tZ8u0w7Bf|!}r-Vr0|;aEX 3*@>6#?O<-'$)%Rl)L??VN>G9w8ҚYNWiވlJiD ”k:/8pǍ]4s?_f`c>8Ȯ~O?a {ːS)8-da&ԠKNmMe{&.`'5E,ʖ rnޜ g^eVOVy8-A^ ){k%3AQ&΍X;2VZfASh?&J mۂjpG/vv=Ǟ}^c}g13gC>2ZGixҷwLzgO IDAT|iۙ?TvbҊ7ձZݳ( ! ETlI -1:N}vxe3Cz }$˴x-KkT63GcGC*N eOA'Qʬ[N% nOO%c۷_[Jg ?wuYXaR| 43g?xYk&Ɋ {&֪{nHC =zZ$  FgK)HZ O'wz AʈeXiJܓv*y#4*sگPkeOcK#e s3w߱;ϼofeF}fY'8mbEnb3i||S~wDޖ%s 翝pqqÚ(3]-ie^:hhtZiQ'LMk\K|8sZіD4q#ZnK?[a͛k) n\ STr, .!s]$$"X3.;_/3qc? Z3nmhtyd'qk%*>5#{cU$ RV;->E %9kLOjv*DBꌞ A2XΣ{jg_쳴OL==`3>3=]1NTZ(r)BMBR ȩc>D`.)}2r-VZGRA~3cO$Hxd;9u4!4-!ƕܧl)l>W-rjNiVd.<3=]޾m5`?SH)5< ;AʈP*4rPH/)ֱ5P4Cp@(j{#kA>BFiY+T?9q߳L?LLm߾Biq|O0Z ^Hs#xuyϞ+ޙ mY8p9 r۩Ih <[l˼tݏZiոA05acj|V3⫸p^rNŘ;v}9B4it] Kb _Qݻ{15O"5x& bv<[$qk%*>5n@efERF oᳩ[ JhsVנOׅquFO es,`ݵa)hl6l>O蟉m#AjXG1ARvs#T~ZSS.逜: B0v[l5`KBP4"#YX'Nf!, ٍggN ~( ui6Ԉ`*/#T4ƌa:_EJ;@2+IWAPjre[XU %-E %95WLe$rLhB-hfw@hIX?5sM̡=jVL*r) ;ȩ}o>=9[!yIkOyfS%֐-ZJ܇H`bbat1#>q,W$AMxv )p6PǜfCz3qCoٵkOF}m)#Z^3>>%BݕDB+2AlkĬNMMOaCZ]ƒ ru_0yDS=BeKA@)Uf9Ҙ ijHٻ͡7;#r2d$s5nOMO>-"knY.)0*}r2ǝS1%>굚5`RyVÇ Qk9զQ|Fvקv<[l¼taKkhtEqNxoo͗jD7251+IgAO٨S2|Z՜Ҭ)I=yCBRgfVw `X:~hX1Z] !L9ϩi|boW&7I%937~S*<[JAJT|j>y(Av)P?"97%E*> z4;P22·ٟܵ;}lix-.=bhвz@yV|I8:RCZ-8=P+wKKk6ln4^_sq- Io?ψ@%)8(쭧˳%ͶK'?pX HӢq\*re. NQzTK>ԉjcM-'‹Y">gv/Kom-!*@9J3.ੱjԘӔɰ0W.rJjN!忭FS#@|:e@-]tEwy 7\V_Wo~]wp۶m۾}w188%'[+Q;FP}W˹|XU,(7 8 %*x \YF0 A2շ:%qWtbYj9_e F7W_l77vkդf( \Kd| 4p Kq:e 9[ϮLZos=ӯ-WTnwO?ɓ'oF;`K'ÂP$< > 2'\9Kӡd7B^hN&:6>vv/ k?]- #۹sPnZ b-;܈hk+f$gK /OW^y믿{lڴ/;t.*ɩˀfv%1+qn8-A^ ){9B';#r2d$ggnۿzw>̟×}hEυ.Z[N77Ni}̅Q `١> ^3qweHr4==}i*YfM3gF1444< OQ;kNNK$˔SߩPg⸇G IΖ8իdw-]]PVSɃ2lC`ٙw>AcK#kqICSpЫՆg5K雝} 8Oeӧh.ި3$-K;ogGb|$,-Ɲ-ڵk׮]mc[jjժف*4RiHw? AiZtRb0.WB|4٥ehS7+ZPM>+ bvғO>O? 1፶?pfffxx$xc$o-\O'$SNc Rr.A"A(P6ǻ&X2YR @ :-;8YRSi{Dp\j3:%/(r)F,1~Y>ȩc> |FZR"ou]߿iӦFcnnnllku&~l}XPRq .2 +gi:\,b$gN ~ѤpRl^" G |OWbjzB"K}z5kq_u'V"A7ڂh}Mmw3eT̖߿f͚{/˘^z饭[w}?:F3dw?jCCtd'gv"ȫ!e7->qSyd9HY"\BqX]cG8@%z׮O &Gg.ʾVYbsQ2vA*_} /ߏ?ӧO?s?~|GF40QGx?,G҉ NhZT}7bdb$BӚ3\q6 [-*m#>B:N!ŧP]Zr~kA~AR2w*;87QRO$.Z2 # e _])4~ ŹgZwSIEPׂg.iYBO()P|nENzF;?ܲkב#G>lSi_`>=11t8u-]-Q#Rآ@S-doF e _])4~ dAnAp@(J7T4A- չ`*#AeB#o=Rq˚U*?)hP# Gl "r߲s+ oΒb9::j=vcFs##ZOeKA 4O'O8.2AF:˕4D.s1 4j-N ~ Hg">yuPoTVt,KBG|Z bQgz<[h 15= }ii9ouFilsۜ\n]+Cْf Sx[Vڋ3tA[ \$/el1cu|!Afek|pIFd)BqX]cGMǃz׮O &Yl^y*P Pn|9o^ᣂ1&˲ܐqԉlh|o^U˳%&0ZLW f =MrT:#gNaHSy @[L Nb[>B:N!ŧP\r!u~lN`r%-(sͲ۷c?83=IP1L><{6-, q4ʇUjDyl)ͦOntON%O5fP}Fdht(=S0ǐݷd읏)wpϮ[KXz^J -=PSyj+i#AhIrC[v<47RNNZ8:x MNQR5ߩ$Ƨ^)/*.ϖhtZM@cAN跐\s++U눆\%9JeFF'#<[8g-4-jjqu!*(K5XFe<4HV4$ϔYi cVe*øШmAY}ElΡW;dfSit_'U-pB7פ8p M,<,ȇYB jwW=}2dVP շAWjոĉeͪe\J䑇yBp699Y *D.5^ P_>^\\@ȍX>#`9F-PZ5#ا;>' .2VAFܳ韉 8 ٨S("lAO Z0"Ko__ф Ƙ+\v<722::J? | 9u #8ѐkɦB/*jSXPz([vK֢Vz9 ~XRJꮅEYf(|pIF[v2MS#bu9}g'wrZq.|8 o(^5mZFzwhCXQ \"`)Y|n딊.ϖBl:B #AyNEoVIY:*o'(A݇L Hrco4I()P>&n5%`v@ > F%)իbclI-5:F&ёO'qk%G4T7,_uJD34:@Fm zoB"۱pNu*չۡ:4Q'N5*uB'9D5Ajo~ "=t"t*>eyylIɨ#QdoF e=zzMs NBƛ"Ev:WNDYf") Ev:j\IJfղJOIq ҆;['3^N^qMP[~qSYh>C#9F-Pmi{)nt|tYKqDI{n.WEA*NϝBe%lAt9_. '/g3NEB+A`H*T竝̲ I.N6 ,@,oK/tg!wrlHٻ-&Vh-zzPX; M$PZNejtKw0Z IDATN:zVD-KcZ %|$Ϝ/հS'i}j$EJHgKf1j5a4h,htr ѓK A']"xkVJz?8XU@v>)z&۹rK}ߙno&T[0:#2> Ԕ`Az3qHYK,eg .ϖBl:B"oFg R֣7פLMOcYp)wg.1b߂Ӥu z>y>#"w)ӿӦ0%5%TpET1BIt1]-iFǨ44:$ |EFA-堺fht()svѴ;v~;wn>724h\Ͳ72^K>Y:qq%U|LF7socSPLqi ]-QB93EH#Hٺ,8p q[PҲy؅A5J$EE]Tz'Cgs<@ڵ“5jؾ} DіlQw92E.$6 1~Y B>C#֐b4=gt#ا㓧Co-EX~^]RN 9HzFl^噙|0bӎG9|preuyLRyזwތ SIBM/VHQ!M+%\"lJeKYA_;Bؐw[X"_k)(9$#u˨}[Xfyͣx/OPƛq)26 T1-pؖi1v >SܧNVkl9,4:F&N9!,AeTd8t\RZrՊҬՌ2j|<>!pGGG8׌˦avdjzZ~B3!ąSt9 @@_5%DPޱ!A[ZCgKh}FHO\&uefZ+ y\ 硲 #L%-45P2"i8 q'>&m^H"krIqu˷= 6Dfުyu i3TCM_u V+nC&tX_\lZp>?C4d#4JV$7J0;E,ʖ|Д8}ʗݍ3SӐG/1Eв-fn?pIFq5siiҲ,TG,8[&1INBuL [=اp+*c?aaOLYrZ(yi ]-9GG|BcA#-kP2i4ݻKGfT4@sIiU+>JBT<333 Q-"31)+'`}Q8<-bIuiȈ/ӂ&`wR5w-uL\ l)ͶϨEn}NrsJgwΎKEP؃3,bIӴ-P85N=J-cH ( ;55| 5F()FuF6k lI-5jÝ8G|؄R%]fhthk;űXW\ܐpzb yu.va9ѣGa9sFޖoVƸ|s j*>):GT!AAP7m/>I4zXkldDW5F e=zzMsW@!$Ev:WNDrt ECX/܈OhaY`),g.j@9xg%\"rMP/QA(ryh5r18tlerN9}j>yhb¡HdK.TsVFIj"N;ݰv.[FtQWj/]C]ܠNL) p6/H|S6 ECgKѨit߀@ Ē\hYs^oܾ.+:  pϹY!NYw1 |sOM31) !.Dꤳ`ؾ}޳Ǹ@N=>W]-u"=AF VtF}؝ޝN♀KҲ.$%ȭpmijQ2BKbH>E8;&v5 DPYD#Qnv]-$_5}89ϑM`o+ NF::ښjjqw*ROw|^Kx: Q'N5.) 4uqSP7m@bG~I9 ,43pItU R֣7פXXH|$?/Zڢvzk!GRt?E$,;D70k@9ոu"rMP 5%/ AA(r|Q%!`ħJpW>&GPJK42H:Wqͫ(+:7R֒.YSLylvӊ$F 8ojp,3=-9rjD쥲EՅK)Kq1%)Z~J3EM;OVXTb}f3;=꾴 >о!B&DS']FN5Dv:.ϖ:Dko@hktr$usrRNi=ҒV|fKbCSL-zZoWB3!ą}XHD64w'\C7%)mZ+XWƪ.ty f4d "w!tB.VtFg/R_& }MazkH<p1j;^~I9.|QX h@Đ>r}pwMpkNP'xy-YDNQStyua~o^\b5eD}҂r4!_5 d㯉nJji<չ ި\BM^ŇϔBr|u骳N,ntyDq ̨#!j A78IU+HbnAIB.T@`5@\ ;<0m7j܁z K9&(`$pLЊPħ$b5'|ty4Վ;|r=䛴1}pM.)N 9͸VF;n~FUOW˂2Hg✩8H.Φ;^ה/ׯ߶mAZTT暻{~Ȼ<[dZLZNFv5w26'T 2 ϝcKд||rVtNxzi}TM, ?i}jP;5ER[='OiիN:ݟ-o`=;sPJ.-_Ld{씜6vG#pϹY!뻍!:- ;M!+ !.L߬Ig!Bh-eg > i?ue꧞pP#G.⾾C-,,8p/VX:;;/7cǎ  4!P'HrsgNgĉ|8PN>ƸeNi Cv@w횲!N}T4֜-|\lI5:FVBI3112p]fPmoR_GM-'ܔ 4DkYw@XoKЎ5`05Q'N5.4%Wqr-'ţ5KK(tS3 `7 TnݺkWv8fsfDW5F /)AH `"-(iYC@hs<,#j 9:w^N96799qX[v] R# q *D.$k-v-?/*r09-o$ #ybB Vj*<k֬^~>$=-BGQ`O^*&0rM.)N 9$o 9I|v-+"45T<_nKC_DySG>c&'IRr^…)¦\4000887j篿ヒʖ Z^Wˀ. {)Gv5w7)@"1. zq@BӾ$VtNxha遺`wXVXڌuLcOg|,O-̆h4/~}}}V<; T* QFR-ZV.bѴSq"Kyx"NJҬ/*$z.g%^!ŧPLqafo}ҲsՇ''{'2B7% Ah+XWƪ^K/mݺnV_~yRԧ>u%xۗL/dKAhFCFHO Ғo/ڻvAaR6Ln: V&L%: jjIQ«st$uTf͛Ӑn4£VvhS3 l1ݟ-!aٜu"$U$H"1de  r""EMH-q7fl+FAP"?99?8XMCS"Ύ#PJuĸe!(EN| 9_备a~ˈr| hkrIqusʝBV"8mRT"BiYN-/aS$aj4''MN4$o%<%r')RhX$%%\"lJeKH˳&/ٛhZZFk0.B<)?X]3rx>M2PO>nә)j?ϔ%RQFz+)K2v4mTt)n#%A(J\C+KBOZm\?b=OP(4=5= >72bvFνN=>Wݟ- A:6z"AFKKwTxo nw0K«4=ARh@35= }x4dlα;P^붅Q<"*t*X etV:3}j)d/ ;=t Q!8f*'>jj낔U|\<:qq%·/=uS3 uWAthf|d R.-Alk:>7^Y\MA Au):ĸeVhQ;w%j ; ΍-EPAt/G|ʖZF#@9}j>yG[}Of'ԩt)oIm"N,vet uOsjzzjzx;VNظ}U0U֭qJyވIw)=E,ʖ2)S֐5Ht5_7݂!7rZKҡS<999fMP'ꂎzi[x*=IU ~‚{,c3Ւg(ks QFz+)K2v4mTt)n~w'Mgqs=+, )>g V`:mٴAS=Bn!1yMs,h ѱ$юĺA ϖЌ:B #Aʥ%^t܎.\v[ u,IP(pxZO)O>s)-e-A& ThIi]0u5f5p;i_,BީGgK Qd`\؉O-Ł,#z ^H kB$ݝb;hny: Rg@dzmUL^).^;pj2ݟ-!aJ>E( #Aʹ\fHP/4ۺ$  X Rts=DzfmG,Knd'ThIұe.ҷ l\OM"9 ϗJdKꑢ)zw0SX>[}OEԩt)icSxMGW |w29_s,au֙0 G ,.?l)ЋF nK˖TvY(=-H8%Y7l'K[@ھt)ǾX%An!<[g9}\IN">#>ze׮_+;B3!ąN-e>|.\2{;6ӎvAhy9c7 Ǝ,u9U*?[2#Ef4d -A5/@P؃ qdK«\(;DoVlཽ{VҼ=Bnΰ:b]?8"Kq;ەtT{{*(T]*'DZO9qv߉^H kB(@B|˲ =rv)T2s':qqd&'ɠ)ފS?/lI ZFgKs4p4C#:d$HB@] jm#Kr!E[͇uҲf g[p}45 b܁z* 幺{j.NB'Hvv&%WV wjKہsp ;KSfu*G 2+Y),-yͶw;#Yh TJ!%.ihXp5K7%=nJqt<;joZ kZoӦ0.)>}rf;jt8Pɝau^ AS IDAT I%w>,5tzYy6ْspUX]~4w)ihW ]nBox3F&EK${JRj ^\\7+ulΞwIT ?M^73e%rhdj;^t"^LU%GV=|pfIxI"z;$]CqgSM>LqMR/N-S S_wd;ϖ8_5ruc'N5*tw&J۲;ŷi}hVp2 bya~\uTBK\34ukn~/>zݷ% N4C)tAG(#  o;w5c[kMOWA]e #_̋䲭n❭0p,LLL,?xs6 Qz"[j1nSKts$8Bkq8wES6AʹTcq ~t_)pX#- FSG݇&'#?-dh0uuTg=PAi*"lJ7gKEPz$ēSyvDWsZދ#o %>Ģ>9h4ۻWTLmQMGݸ}]JF!X>8q?qb z߉aP9[ 98t*}Nnw%s弧,Ư4XشufBP6]o3qDؾ}T HdɃ(Ao/k/>5}]%}bITƝEN!ȱ}׬XsϡP"N2v_ %tP뮅{쩷߶zliӦM۶m۱cWՍ7Z~+_پ}]w5:: o۶mwq@j>2V7i5ݒ SZ}ݓ7kv"G nM\z(}3<5 =@L J5zSAaP%dsssgϞ]fM3g@h4Hs֭[wrҚBu7%W =9bv HJ]礶}|rf;t3:Z×hӑ {鸀Ӛ<3q}wM7\ZZǢիW784;v.nΑ95tPlOƭ$FZ|%sI]W֋+7ؑ% 8Osz;Cҽc c`Mɓ'=j[j*ZٳZ&O$da)t>;>y" _ "@DH:&&&:TTz|tqIǑ }}vQbfhwO@Vy 3&VEcįT*}CvqO[z'|IL/;wW፶?pfffxx$xcSp5 @8 k!%3P]OI>~-]R>uz[T;oNN=|P]t~p7p`;*v l T*7tSRyWzߴiF177766wNOOJs|K&Nєʙ,u {d[@r4ܔǂo&Wv:n=V+F=m9%z4Mu4Ab8}G- mٲ哟߿}۷5߿͚5{?_|1K[nFGG۶zZ| ;}l/y"jL}&<{Vo*c^6[{h4{~~^O~&5)3%We9%eb/55Ƥ9FяI۹f'@}JrL&>pQah_׍1r Q+I[)pQ8CP@ŶdEoN^ry8K*gW Rk|MOMt*Sy&.Dsq2vA*bđ|BiKEoG|GH$;|tqIڅ-v&N]L;Tt2[CScMS:uB^aUZ^.HE̖.FCqTbJ3P]O?Ν^pQ2>[Cb<72/ E9'9fP߆0$V<9"gP7+%fK+Hܥ/N+)3YH;\DIC۹s7f5vk}cbD &ǟ]].ے}m!AGiAKF+8ݞ4^6ff @Qrӱt@WS:_W?[V}jp5wND fK+GώO^(mi rKˎ@7,:qz[qR4'x⣳g׮];ooꊉ(Wbl'" (Q{&ޟr£0R@_Bn(yLV J'4<݂ˍ&fK+HܥJ"S]I}H@I$eoDj3tz(ųk(yd^nt71[rn%]IP7󥈳Hkse;f/4q7=BG4ߠXӫ b2Eb<*_Υ)fl)n=&%WBb.vY$M 5h?洖}0[ӫ ,.)\=>g%Y`#@6,餻#S^t3,7g-YX~ q*-u3q4=GY+0m)o$fK+Fd.KhK姳],+7x;2֚t9b^n!«km:-] pӂ&,I%(u=em90WjrGH. #L]e!FW)Fwޟ]Klie8䎯Ste$%t|ǁ$k$&׍1jm> {=ˀ-hEanI |iW̕J塇zHWi-m9t͸Mfhe2f|||޽vDѣ-;YBRG)ɾ* ۵#.9)WI1vZGdϽY_2gMRߍB!--]7^oqg?sx8fRt,3Nkc;wOnfŌW#3ss o< #2NjBiK';|S<;sC^ǐ6.:O#gXfˇ qI|^怌W#{$EJ>Ad8yFiGBibeR]P|}衇񕊑4l6N$CӔ}@fk$qnɦn4Z~R" 1$qu$=ffj W&fK#̺JZLiQnoӗ~ě/֠9'BGTz-BI|mIb^Ν 5N g?FeDbR2 %ͯD0>AYcF:-KURTϩ=*ql]`rDdJ-KZ+/=e3zI[;y=W(Тj> HCK=)o#Y,a$R aw KHjEӣI]* |hΚ2a]pNZ+G7h ;2Mcfi)g"HfKƘZ&&&YBIFZ$LL]*0 z[>W~&aMmi魯HWJ>׿ycH7;>$L=fvÆх6zY }ggjw#1{m:_o:u~g~[P$_miKVk7z={- >ٗ_~_ `a] o^ϗ棏>z뭷⋟>袋^y[}lJ;x7^zu֍=z\VZG"nByX;hX 裏?>АKXn=00}jJt8z|#HwCWt[oġCZewEhKKK}]?zFs֭[7;;R˦%zDd(i"H$D"H$D"H$D"H$D"H$D"H$T*'2665xW^y:D~٫z֭k׮={쫯;=M.㏯믿$F??P%֭˿Kb~W%֭7lG&5zoyݺu?A ;+v"/Bƍ/x~~U"UW]m۶j:44t=__ZF|򓟼[*c*u]722RTFGGo߾j*Z%Ƙ/| W_}%"V*m۶mܸVe__|T*'x@mv-Дvi'bI$ tM7|3gu"yE9cTJQ=wܺuwdvvwޱ&*a;Kv"g JeƍׯQ%RلjsOӧNg>sco~͍|_>{Ç1_W?裟gL^ZZZ\\ܸq-s,7a(~_Ϟ=;66vȑ.lӦM|r ΰc 1LM7466+={.77770p>^{m``k_ڗ{ovvVY\\]ZZ:}oy嗃|߾}{|+_|1f_+Gr^GGfѣ:$v43r/~sssGy7,H$D"H$D"H$D"H$D"H$D"H$D"H$D:g?,D"%``qqіF"S#D[q4XEH$\q'?(: TlA 5uE6+_gT*rs!Ҡ,v[D"n@PkitKFTL-Ig*w "ﻯdaZFh64.E!|JuӋBX )H|[~IENDB`change_read_period.png000066400000000000000000001233521514602004300323040ustar00rootroot00000000000000taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/docs/source/imgsPNG  IHDRmd pHYs+ IDATx^y\wg& IDp("UQzWmks=zmwo=vZExQ+ \BprM 䜙@(//S&O' B1 =-ʊZ?lԩ>Iׯ_W* E3eɓ'Q10!+(,:{,}BBBB|^ee=<|N=fѣGT--.^?\  |>e˲7m6_<**ŋٌt=%C32o^ȱ+ ,s[<*!oGN\{ٲʪcǎ~`ŋ.]ԔȨȬs BrEQQQ߷iC`޴ŋLJٛ6iɨwVhkBIqɥ⊀ E<@GFR}EW͋ECca !&3?h4Rx͍xy564nٺ)44xSSS"A&ݷ;rϛk0|Ž]V^~ jW~W[W61M"kړ'O8yenix6fggdd|f^ospNw'OQFĎ r5L0aDPx؇gXȡXSZjݏ`xXNK]-JUiB,>.FJuL>``x8A^u/-]r5*B,/]cG^_haZm۶g27u33[[nxH$^^^9,\0''F>Ѓ556Gnhl,..ܼ;Rc>RrZQQ𘘔Ԕ~X7612}!G^ȡXYΡ1-E⚭DK YʐF A^~@bda~~~ ]D Hc^g6fόQ !VZ\j Cq5LF|;T6iZ[Fcss󸤱~~~MMM9̜9}\岁8x`0455]Cr9R*++`.\7 JmE9C 6nJݗf\["0Z[[JA.]TUUP("""0 G0t:xb5tҤI!!HJ-g.1 ?hEeΝT*}[>RXrOWRrz{Kד$ >Riuu?rz̅iن2Ն`XNK"ErA`X hjjtL.۵'ISe[t]9B1AՍML`~5T TvP(jz}>c}i[kkkk3 ~V}1F,Uc Bbͣu:}Oyt?tVusQlѳ'Dƨ*j $9rH\P^- 7IOݙoYii醍sfϢτbXRS[ T*}FEDPi|r2$MwJeuu3B!A2Ϗ>¢#G&1|xBD!~̴!*@MMŨDuTUx罍IBUH^ liz]hp [{1g,ږgA}{gedMLT;.\92:;;srs̟jjo])8yjy+WFC$9;z}ssTiƍ3gxHlniiiitKQQQ}t~ρrrY,SYS"Bn SSNFsɨ(oϠh0$ID@$M_ B!Π.>O tf_7Hx<it:l!BB#IR>@.SC#*Q}T:M&"Bq =-!B!s} !BȓaZB! %B`ZB! %Bo!B\2|hxy+cΥ˗ӛB!{hoo߽{V~/oB!7B!{1~B!tHxr%B!B!LK!BqK!8{7 kK!BB!LK!BB!LK!BB!LK!BB!LK!BB!LK!BB!LK!Boʕ+V"B̀i իKKKWZE`:G%f:nxXBi9sN(L71%fYYY>>Jرce_o4F !boT{bbbΟ?___Ե_&$YRR B!}1ϦR$y<^kk+}±ވ?!g`uTkKuuusxŅ*jD"}9f0*f!!mlJ`[m$I///\waÆ) LhZzd;{#XJ`}mIPL>O< BP466M ' zʛýAKxCQ OKuuuDTGIחbc`2@0*!d?D%'JKKnj|||"""jjjT*F&I266-! b .E%9-]pswqDž J%?~<&&fɒ% C_B6XT{ht:݉'N8aܜkނ,L`b& tXTkK6 z߉CߏC܋Ji]L`ҥuT]]]jjjhh9?2g!^y^D=z˗Z ~С;vP3gN8$Ǐ/+A۰_ !pa >> T 0@E%0 $IH$25Fyt0hL#@ tttMgوх Ya!=~Fz0a„]vܹӼJdAOQ-$IR?E7Oj5^~~~---3 ByBa 0-9H$R*FQ&d2d3dADPI TGxW[[K!!{)))MMMfשSx&hhh3ϟ0a]wݥV=J+>q v!2l!xHa 0-㧟~2=./////7~ʦjqqqqqq1ҥKԃׯGEE]rE(Sw0j***Mvfd޾m68{i޽{M;qm0!1ŧj֮]K""=Xl@AOí^RqqyyU /,9%;0 q:NP( ꗋBi 1v!&ʒJ>>iyO+,[bON{T5k, ~_4'amE0 [Bc\rŊVXXLK c8sgե81 Ĺ~U! z p=3yfa y!;|'9Ḡi 1azsj}IVg -,%p!' LQ 0- Ƃž8B iA<0xSF6Q՞5xxa 0-9ɓf,Ƃ{G$M6h Zc̝;r=AjxEw*ܽQѣGt]v3&::h4^xC5j@ طo_]]}aCf,,֖Ӿ6_\XP(m۶k׮#FWnܸQTҗAIp$SÉ%'''KZS@ ;vlhh(ؑ#5Fgƌ6m4hPll,AW^7/A?tPrŋML رcu:ݹs*++Arrrhh`8|IIITTT\\P(loo?vJ2_Cbbbxx8ϿqƱct:]\\`󋌌ܳgObcckkkGUPPm6Z0s̼> ÇS՚րj ѐ!C3|p}uIeee#FzbZNFcUU%RH$jooWAtH$jiit_aذaT/aMMMLLzT__?l0yUWWxyyuC111BP*FGGWTTPE6lC`mFȑ#ƍ1 N:{lRRŋ5Mqq1U^Q:w\FSRRLQ[[;| ![Roo3fxyyutt:udnȐ!SL1 ---'NӧO'''/^`0;w"22r޼yžM0aeee|㩄TSSrejR]]ݨQ.vdZ;YUU8|PPPP__o!aaɝ/_Nor9ѣ9Ȉ _3*aw␫֖{r?_~7lذV[%`0 :tݻMLqu0up'Qiʕ+Vr%ΆEXmR);33> !36[J2L_xb"SRR|||JchwX d[d5Jf͚Eǿ#XYXtšz*~X[JIIٴiӾ}% AiiiW\ήOJJ/C8h_ρǚᲲxbD"ⷍ%@@l[[Fx2$ITPPxbPh4O恥knAuV@R]bcm)??ܸqLMM~q4tj/u pczG% sƛۘjرcz3.=hZfi"""YEJY~X/̇p';Us+Ǜ[P(OG2eJYYիW&Mt.> dbT'nn?;1xCTߨD>[]ي\ P;bmm.33333ѣBP&Q#[___QQjV>/Mscp<8BN9lJAlE+`%s`0 .T*F]VVЀC~jń{éA0;x]öd:51El%xȑ1cƈD"X\\\UUǏOMMMJJjjj:~8}1OeO,a, IDAT~۹dčcx~KɌb[T 6[sssi!d'=J^~CT<.`sT2iqK'Wטd (vF%=6֖h&X>!\d:5yZ#i{y;!÷ `OTb&h'8Yr ?\vBd =mfY+aZr.|{#;t@ v+fe/ZLK!s c1g3gKQɩ0-ޙ&x/F%؁{Y{ȱL2BJyy Ӓsa&pO{g"zx GELV˶ kp,.xZţl\vBXýll𨄀3[b,q"b2.柯yLन=oۋV.(cǎuttO =zX,8}tCC`m mo䱰TڽqRTp Ү\]__d>O4ԩS&L1-!`Nx`2<:{΋J2$ɒ^_PP, MS ]pXKYKIp!缨&D(ۺ)|}}U*XөjDbj\2eʔЉ'T;%@08~t̯7?_}o;0XM0Ct:Zּ%%%ƍZ(y"Ns"-Ӷ/ mRWW yxDӦM;|֭[KKKө1-9^ e/!Lƥ6[0vrmmm|XlFxUN7`.'×0m2m{ν%ƦީT*FMdlllCCCWWIlkk0`X,\nRi?Oa&O>:{8Ï?dBqI A(ʂӧ/\055ɓm&N 'ܙm{8O(L79A/{Ia8${`mɉ|o ѽng-d+Q\m؇OOaھe0{G,y LKN[=X04 ҡaK;]rŴ2Wn*//_j}B\aھe0C K Riet:_Pz4QOsx!a,<4.;eQ3 %ҊD$33>=<6X ByFͿ9㚧R֬YCo$ [{ bX/W-=۷ps ѣ0p2p<00-9 ^͌0 [N\\sea{ؕ/WLKepȂY9>b&^7Qi /q;g/ ̄-<-Z{iXX "dhAfsB%gl9O\ O\+iXX.:4Xis_i̭B0-9fpcDž-.ωV/,bߺi !hXlsfU_XQ_Xbn?-ld]Nz! Dž 0]9U0-7AN0 CVSxR´, sޢnA@G%H!γnĴJ x>sy?c~aɣ`Zrff'3q0sEEA>T:yS-B0555((HV:uryJJRn]Xl),y!뻶P(ON>GVgϞ8q"IA]r%;;>))|~Oo{g;ߟބEDžQf..0p^zoxqE^_]]*H,))B|X r轔Ef RXO X}fH۩T*___JEt:Z-H~_` p@9R q}x/Ms!dy\ "L~g+WƵk' `U-=qPVVBCCjkkU*F&I266Bâgܾ긤Ͻl9(Jp^իKKKWZE-,9o7ri)??_$u]cǎ=z(5111K,Q('O/[*%@8G=YWާF  S(z> ݂1P9~-NT2ǖgʖd'lڼ`|}}_|իWЧ9PNor!{=˺C%vZv9Л,1zL`G_6`aw m:ov/AMO׬YJ< %p[!JRIoBnť#u9iYsX'@gpA@B+!+q'yX!C%bZiid+w0X[XW^b`Ҳ K{.i!.v<u aQt; }i0g~--cǢgʢMd^Xb)sȷ ÷ci)C.7`s"װ!gpŁ{@ڿgsHڒ1%8y:Mȭvr,``8}(3NBa:CJo.挃;LK1ijnyg { 0-!v R$L GyWt!aO ))e%lfWcuo]ϑ[cgGF%i i~aݽa.}z ~m5ebvIOb XQzXS[8e9yLFoꁁAM #fq0*%sJ @wUIp0RzaOꩰ836*#bLKOǥb)~~&d*_n%7ب(:.bX9$&,* q ~bz'+ѳekMp Fd谁szꕁ|~yⱇo9ׂys=+"<**+wmٖh"wsQ"ڒkof_}pW\c?#O>FS-S!b[9g\R|'~pxo?x7~py= *t:B_%vcWw>啕>(}63 4k¤IZ׮W?~>*&a@)jF-}lqIݣC>{F.'$}͗viݷxsb?ޠ?xiAkΝ3|3`9lڷs|b>sOnZ1cO"#o9瞼m;lT#/>vQ}ޝWR)H_|Ѿ;6d;\Q9ۂonƨYYYR흙If*`Zr0 N74$$00Ё e5_!C3fVw;swhƌ!x| _=x{MƍsiZ¢w ygVxWg+,*zܓ{-yr33\Xt?$>΅Oz:/R_|wHG 7(V1wV=[dr䴧cJE܃mdcxYZ|7 G7y6U*՚5kJZ[[X-+;okIooXMf+qQ y @rIS~ņZUgνk3+*ׇ3j4ikjjwG1>9Ic`CGUVV=9SooV;ZٳvVZf02oHߢ~ijjjk&rPD䠈F&ĭ^zMLlMk =jg_GѴŗӦLJaaÆYZ)k"֐~7nZ -VXc[9R\ssWXZX8dx&# ]Z[[7m;NB6DcvvaXL̘ı$Iz^o}V//AEz g=o4AQBTrgZ%L{h4Ii5MSsSyEkx20(p4SF+)jugkkN~)Ev5$Id~Qu/c 'Oٺ=>:Xo QixKlCꏯ6m5f38;)P=NZ9 %; aԎ;/7ubZTttUeKv "6Y3 o}8t$}?Vw*XXTnӧd~/w*{7YkhhiƵ_}c6*D"khP:^?nqd)_*MRD*R(4$`0@H%ooZ r}^\+-k>#X&]]3^ӟퟞT$߭b]+.,9'qt4~ܮmD8mZvx<uwJژ_}՗_d?xBa7uБyw<o!"8uC{Qpj@ Hcnp4w.^8?!> P;AA_ xч̚ #_{ejt6,k$Wxڵ򊊊ʪ¢}J"0StUU/>IP(Wቝh4ڪK>#|>eKK*k~wX36W,F%o.]BoA2@}p,3՗_]/Y? m5eSSϾ8Y{wnߝxGG?xc9i=<}O׼m[2~D,Q0.)ǻw޻?`0˯.JmyK_}/w ?>k1|wΖt>nM$TҥUm *O㐔^8d3Yk"B&yr1?8u?$ ʴbPߑšKWһ!믾uÄEcnjNLm(1. #_giFT?ykC[b=&Fͱe;h4F AFJ<>_)1 $ID" k}:-={vÆ [ZZIA]r%;;>))|~Vl?;#Biz\.h4*ftjZ">/:Rpgո$|9t:iVX[r[tuM!-sӦMiP}m<<`Nr8ٲ<+,9;*9{,>V/tR|X,6uywBd.C.DoEh$vn<}[ d Ο?|>I*JDGG$E_93cv"\̍@WXr >[-g0h %?????㩩IIIMMMǏm !B9gVj{J>ɳw͹XMU*Ů\z+r2*ѻ4;!Gsͻ O_hKOB> #q0-q+=+6!m0-9 &)ӛB6Jm%<ɻ%.`EwFjj !ps0aZrפ*BQ> Kq;aZr L̑Τc=oo[iS[Gz/[eKۻs7}#| ϥء}R IDAT!i,vzrǴO>m3'Ξ<+wK/<[uʪ~EoiS|n@y_Noٳ2MO{C-Rl༣:n0-9ӊόKr3)޽>ْlD$>s8F%}GXŗ?T*뉑H/<4ՙNЧcqkq6D%IȍB`0Jw` H{矇ٶԱr`1GgLߺi>hP_~~[3fS|у{g~H?W*5ʘI={ْ3_Ӗ:]ݹȁ?xwn;ϪOk޻+=k|BdsK˩Sg̚I[?=vx~I5Z$Zy``@ގ-֮3;#z>jݹۇ B?<wށ=;W<85><ςswl=r`}  ; ۱#mrо}F&ѿY> AVk]?K35=ㅗ*@"^Gs/lZ$O>׮{&M+˟4t_lT*zfd0OIxYZ#ܳlʧSϞMJK[Oɚ)[$I~6e[iڗu֝ {NI3nj8!B"ⒹsfOc%ܵtάɓ&B[415es,NJ6qiK^}uu\.3k93x_˫lcFNuu?-Z8?cfÏ=9m?*>x6eMLf&mh|*5YYbr¢".H"(vpo[`cch3gύ3&Mܰ1;fPH46q̙3gF㬌ҢjiQ=e!|斖SgDDsf1kFfO*TQZ5~RVW]n _ 'N@yEe;::Fc5KuupP<)С#EEzhwѼcꔃ]wT0xb2č4eV='O)HbP%H%LQo0ƍX,o߸?`iJ$m-^o:xsӘ^B=u|>Z/Ԫ>_{fxe}[Z2yT{ggw /^ M8g_H7.y1cN> >!xQX>H=tKϑxͽ@\^I˩CG[[eKfgI{{ 0ݺ֫EѨZ[s6Tͅ%<{vlA]76]]]bKҨT*AAPEPꎎ@&-ѡŴF0,(Yav!njgϙHlH$oF7>/y<^m]ݜyg 1=t]ȟNPYUu cFaݏljǬm;rLa>QPPz)44ļ9lLoz`Xxs0qBOܸqcx1hjj<8A ;JrȐc$M }r樄<9+"јs׳OJ$$I2ⵐRPPP߽t I#cڔ]{Gy>P6κ"2rNaa E՝B/!DF͙<.>.$p߽w|@;TR$X>sv=> GSrv=aaPkZs=Vܼ];p{ Q+Wx$oAM32!s0`ƍ$If̸9БS'O:dIwo-aϜ1oGyy!!m3΍KJ5)0 |qpάu@Dܗ_}S;#}+ygSL>r`]9ھ_sk|N<8#P]]c4Ϝ=GpܼđⳐ`>h{N&96lt=?h^|G~ء޽lC&Zn} {Kĩ=%}ޝ$WPXtj,VZ?ؓ?`կd~)㓩^Pؒrٳ-[nڰa͛tS-V}q˗gff[9=Mn߀1ykyUaGdގ-~>q|TV4n$I:vhj6:|GvO3rge'D%mn{ase Ν[PPPVV':d6; ><""ѣP6BrX>xjœO|o1*1P(p`||` zS|?Gl%;yn{Z;='ފW`Tr#Ǐ,YDPL(oFi2~UB?xg S 544^xɼQ"ӹy;{s4?{wye[dl6 lp\eMÑfnn4mmnMʕ@BHN&9S>dc`cY|/^gF#WG<3jo_ys~q~_qrE G?:s%oihO( ץk4^zuΝ߽#~ojNj~nqqU}1B0l{{u_!d}>Ȇu_β׮m2~sFy}?~܁{wzһBso__.\h}~0i屮}˛~&rc)BM;˷ES6ڹd"B[K=_k}{|}{?\IxNߥ% PagxS޷|ْ;zaBbɓzcޜ9'Nn}~?~>uei󟿼% gϝg1"b\<p(G.oÓ_;QWg\-tDLowk9z67g6}Q`qS 0䒒e+p8{Nuo8 򖄜G4eG@l>s_|,=-m׎m|)F=K_=opER2i5_Bw%4KZ#s8M%}x`Ph竻|^߬3%% ,mǫP꣏NݕBV7?/N|ʉ8X5*'G?/>ի;^ݵh$VЊ;;NE$9'NΨ)hR iq=I8h`Ū5v홟2*'On}o#In(իMի#Fu3–cf 7Erss-5b+Sڊ|?nff&!d9=/B{]ޅvq@*JQ` !jCjXso˲Ӗ^#|Gnt ͽz! !dB=/|S&7+W7;:F}T^W||W⧏XsXzz s1!$'g$ %X3KCf)% PкYY$LP ^߽sѣ !NgnA~>!G['js:Y;<Ѓ,N< zg0'!do>/X,O(PUQ忳wӧ,_K6\gX}˗1 3Y sŖI9},!dwٿ[k1GuAEqK _itUfowƫS闡PhW~%9 ! 99#?~;}}S×o`+_{*>>ك#u[b!5g[o){-~yֿ/Z32/\gs]o?}s"C No񠵏G)%cڵ7ojzޑy&"brr[u ~%ӹdɒѧh}͗@4hI+Q )rZZv-!d```6/qB222&M[o7z^a !d2'e9(/UUUUTTuvvVUUt ?*|J bpdK0q̣J{fx{ŭ4ţO MK&B!ϟ?'QpN5HK FZHԩګNԾ-RJv[&!!ݖ)LG%*!k$qKZAK lz旛{~端>qo=N<Dƌ)8^wrpcw"J:TVUT QSJޔ)&˯ByAIGp[BT*%7e:&)ܵK{3Y$/RqN֩vOeRQ!-QE CDT'/8.;rgĎ%*Mww/HARWWWFUiZ='!QC5tHN FZJƦ[&.(~ @BEf˝^VBΉ{FRC|?wwzpW_[?; ܣ Whmt!DD%H5lu%C#o?o'H#z)V.E*'G㖶:QY-%(@G*N:{W[$% Ijqd|Bŋ|Tfg$vNKF FmTUd'l(ŋ/^lxŋ2N@̨%!! @JN~kxEQ>)s"R.@ 0RIq!q@ >m?.wf̎%F_b#HK@=I-^mx@* ;spB|O%tP iP'V~ͣÈ'@e䄩p\ܶQEibYc G߅ G[bw8$t͗>i}~ 4p {Z$ ωX{ĭ.@*3mTUdtyM(ڂqKbЉ{8-NWKDjSI X,EÊJ8'n6tzIZP? i6pz2""=q+} i)Ar!nxCܤ{ C%uFZ BbK8'R:  Rmm}n U[ǖXLOL_~+@!$p; @%eY1[{Fؽd,L *QCU[<i%\fqSRz1jzg K̳a꒱+|ܫâ IDAT߈&4ˤ){D%P[TjЪz }K Rqt8>[G87'*8h #H5T}K*'I%OCCPoH(zl^d-o)A8=-EYG6Ua;-Xp1 -_RyCsiKtv$ ds0ƜoO$똝f;7)?nn_̦_wv)0R~_|] *`6/N -.n!D?J,>=~Yx>y/[=/}}?u!d1W?l~߄ q1 J&q:ȑO?HeyxMqO{{{gD?y$|TTPO 0n)*_乩i*EFW@(_ o_tڇW+O?δf|0 qGgek/7QߒE F_}r)B; m+,,Y |Wy _Zo~ޞM_*CU-%9@sp8wեT3L_[% B;0'K&NdXo-|_>>t{Ξ;aϬ}d=wß?\FFWX}}ywUg;бTSOѷD!$z< !? x`<['G@ t[L8Ba;^wͽ^rq7TDcǎ?q\?3_SKS7;F9 T}Zx==~3_Ư>j彣 9ehwww%q,]_9{K_||zO6#qɔ5!$-R"@ԄY<9Ji4zⱾg@ 6#q\fFFOomf߽xAiD>Ck?S{g?_{rڭ|hv7B8;t:765;ss=om?x|BHwvWYp~ek0?8k *}QI%&8@8D>sM/ ijכi0`,&Gn˿>IrR.WqX'~_~k_Y{x܅ -rzzzl!X!yw=㸢±P-BHGG?0 e9WG4צrQ<$l3!@9qR'O%ʂ% ZouE]]Ͼ`PܫĻpRo_ӅefϘv$qp._}!#==#^߻Zq/ܘz`>o0BKKw{Aeh!z򍧿/\NBPlv-4z<^=}=o 3tM=0CZJJ~ ޥ&S]ϽR(< q޺s? Χ6>uo5>8xĩ_%$oܠNP[#0B?/zo}Oh?nu/Zpf̜\Rq$8}\(č+*WT?sȁŨQa1OO )*,JKKϿ2o7+},u$.33s555Bc^^v]!67A-Oww?8zu치 |u^ y8?ߎ<9Bȯ^|~e~,^pEyJE zn).~էN/n>k>7?߽_{\T]KFsǽQ9=Sλo֯{Ox!LSs~~?stڵ7o5B*PC."p gO[5n2]<:9#UD=]0 t%-K|a}o3 *.7wGf 7?q[5|ŭ>j$ǎk0ƒEȵ/YYY,BV^mX^pM08{&.:r{tq[o׮%qc BQTZ6bnt/ ݁O uP^^F;vlxcAA+W/_n0Ν;wIv@XVZhQ~T}TD ڙ>_URԜQ$H%vZeYٜgϞKvttN%NBRH(6 (>GVP1HNU9-]200m64BX%ֆBfn4Xd]$5B1:^q Bz]xĘ@*:ɋ ^7--?Ʋۯ 349Џ~<ͧ~ncHr=LsA&rtuuQ$++o2lKE;E" uTUi)Yf}w> xW \Ik}ï98`k#]]]woPݺ:wq &1,D,ii @!dMgT"~9q:< ~@t&m~7CTtjџ֯_n:q+O?tD G[墪cU)XQ6nԴaD -74dXTzB@ t:KFiTS<+@d" /-<-mٲ%33otH794a,~EOؽ#F@ѝz_$`a<-M6mڴ)/F5e'h Iq<)ݵ &ݠ)QH@y:`&%BWȍh s:JKRAЮ8' @/.)mXZ$j-EP97-%j+CǦ>VI!H}hӖ Ҿ>ѱ4?*nU Z-oZJ,&pPiw]f*$aEqurd/EbHqB5EZ4 %h`HMl6qwtH:NgIvj&ļX̆F'R҆2f[**IuzOKÅuKM'<?vXEkZĭR%BJ)Km%EZ"+z)xS4;3Sܤ}JjlُnQt:pBhdw)ݜʮC2&m~qkȿkP[׋/itHK} 3e%y^o &74{ -OueKWaA$4GچwLL갉[%);;{ٲe?]wݕ1yz &7n& Z#W+􈛔@GO5iP+ Q Oa3glݺr 2gΜӽB1Bܤ{zzI2, ,;ŭz5⨄RWҬ,e`]]]^^bSTTq\{ػiILA8aJR']4D{:$$aYd2vDm9q8~ni x<֛/!kXMv"0<V(K|j:HJšLsV$9ʛbr RsZ$~_ԷTVVv񁁁F%1 QE'6lSEYYDi;NغR6h5Mƌc0ލ;qԹ8ИMct8> !fp^&͞=о^oHr7 q,$*$Uayŭ9qCBB.fUUUIIɃ>t:?cBbc \ ~?֮]+nR1 + J=nMKZ(N[(+n6@ԿQ K=з4ý5Amݙ oԈ{ў$_Dxc-9%KOyyKmvmVa3glݺrϯu@p8`0(r)xxܭupj6W|QMVP!y"C@DR0ܿ{A|!++e`0XWWgXi[l̴Z7oOS7C-o{@1?^G9IUvH\[[!dر፵s̩),,t.**~7x<z]n{ӦMVв#G{C#>-g;!> ųy7!໢TTX}K\.3{켼<~В` ~?bRaaaaaRFP/#j2ENLfJt>Q! J@8E[n```۶miB.\x;c^h4&=Tv]Ry!{_Pp):K)ɜ*s/ = V Q$2;e9RSd{=R,^>5rݭ CзD?9?`r>ieZ{;]>f,QЭ#qQ3JG£Mk y_%2"-OP/c%OO$5BS*]JtJ{Ax -@tg1*TOm})Yꊣ&i ζ8qX{AQi KK<:PAa+n%UO␖'ghvlo?CkBDUk ] $Si $ĈJtQL%P$HK?'O"9zk4E jR^ HK_;d^ XX^4UF?Y3EL(F洚 wUjJ{Aii~ڰi{T?*%SU99x6j zHϓH%Ji tM`PPK2IRmtAL ijDNΨ*S^PT{!AZ!ѱ\QJ{QGoQIIi ζxQ%AZ}HK -k ˌX%\Lm] HK O&Q4Mscv]E%PJ$2@Z]X4i#n%mp28$O담 dyEZSwN nՆBѱ[HK vr;h$L$@,|TJ k zCZg8հ**0\z{ϨyҒ.QKsh e/7#HKwZ CJIձDCq!- @4֧G׭['nM<5D%W)NԬDq555mذA"*20*J c-@ϐ 6v]J?Cٻ%N-u@29)Q)aR2X H# H-__\NTdRPY@HUTiI/RR| Dj.%h:"-h3 KI}Qsj8Qs݌A f̘a{{{9r%Bbx<r !$;;futt)R.B9)a(YЭ}KկѣG+++Y%̜9lݺogYa3glݺrZFOCoP0~2]I84O _7 IDAT%ɺTT]]rBPKK ˲鄐Ǐ֞,e`]]]^^b/ "fQCoɓJC͊@2@wNKlߟf0vmv[Z7 bjyBNRCTbAfxSqKz#-]6&~S6^֡>bT{]gm۶B1I.L&0dzF㍥L$@<uhn-% '/0ϟ3gNxիmK.;vn# [u,R҅ ?˗&VJ*ꁂ(d;w.0555Fh4566N:`08˗/nW\\̲liii[[/4NT>[Ev{X}hz WbM#q6aBHQQR{׬Yx8c(++쬪 _@TTsNJL*$mm?im#-#~E]]]w5hv?2SnOQIK)}ubP+Պq$haJN'4@ۢ@Z D˟a_ĭBTR D@qtޱuGZґRp >"RmJRUIYt zv~J)$ Cc@o5+5+n"DZ D˟aa0C͐t$ MQ@o;@ot2[MGXoTB{8å!-H@LgJ HmY3%QR?G%"؞D7PaJHK6ZJÕ@ԉi7"-\ݏ"&0L݀VxWҒ w-r.DZFcQӱD| lҒD|&/E#2-nҰfԬ$B] }QI_>4+pP] 8L_T_%hpF?JI^֨Ң _0$jҒ( h@}֨MHK7hcLD% 7(PVHK4R$| F[FT"t i '%+NYV BZ e>*oi5+Rh:DZAcI/ITbr9Ғ( h[~uĭI> HKlܸtiÆ i0x=DŽ]&' iIw߷H@Q2zt0OK5eXBTH;8Q"@NHKlٲ%33Әyf4Zb{!'-*%V.—ׇ7C¢WI%rݛ6mz 'G< cE[HhZFHK7'YA@Nvx~_1 J.//l&1 SRRRRRbX:Ƒ8ݑ))C}}7[`x0Lee3gnr§fͶo߾T%1e?PnQe IQꃎ%ubY> Y,a=|B.\|;ҒH$_ e\r˼qCӺvj<5999GP(KA] ծCQiӦ3 @@Vusm#%8@DC' Pۘh*MR< VF47L&Sxx⥥-^ý| @2|)@NN̜< x(Gd4322si>Ӓ ;;󉎯 (N hES$JZ8*д.s%eΝ{"6+VJi915kj0>4>9-]vڵWoc\.WSS01^!477777[Ti;.fTJMi]@BZ̋ωۼy70O>WHjiן3*ԗ:ר}KaΝ0LMM )o#xq~V%\^J.#- l6ۄ !EEE|KmmmSS?uz"(7n? qB}C}"Z yz Zɬc2UpåU[xyrAHP2J$nOKDK/ &DeTM%i]@ZKHK1hSv@ v!-鑄 E%m'Iz@gh.8"-A֯_n:q+4NTQi;.3w1DQh8HK:lƍ ̕+6lO뒯^&$]iivgĭ@;iI]ي$y Qø% rr) <'Ee[H9HK:COmwPN ]u)ԜPIԉP: 9mthƍ 6lh5/rQ8qKzNa,~|Nj9}Kze˖Lպyf4EOP !wNdk׮7hP)$\ @[-MP9>d-0PI?0̼y󪫫322vvcZ^pwp[n&X$7Px˲s=rq[n !}K=@f 5"kBmFIr\MMMI&[wz&Bd O$Ю(I$G(9--`|'|V+!ee˖8pn3ƌ ә$BENKaΝ0LMM u N>]__PTT{!KKK0h 蠫t9Q) (#-l &BZ(|0(++쬪 JK  @>p( nNx:0$#F% ߪAб}uJ.2)|CBo (5 eVo \?dT~/?DY(̡7P3([#q[zQUq[CZ=Juv~48ЗTz1-|I!-H2;LZѷFHK RH M_b%IZu/ѷFHKUSQ:a'BS :SQtai +D^nBZ5hN?SM"/aзF8'E8yMQiƍ'Νomݰax  aCZzNq8x@$% i GGNmٲ%33jn޼Y< ` M%Petݛ0b qTBZhz(7 BZ '}t] ϋ'h2@V4 QHeSS5gPb }K 'gP2 C:+P }KrOgPh ПΠ %xI CJHKlCB3 Z*!-A#la0h FFP iIG"iIJED1i8-@A8'h'֠qi]Y Z*i8-b惈B$B4Ws}Z~}h>-O*Di$q6lxēa%FzHdP#u(RYYY,<"i% vZ7-=1 @@[ f̘a{{{9r%=//ov}```׮]Dæv7o) O^h~L&SxxJ촔_]]VPPPYYuP(4ryUUU\.a! TVV566zeeexYF1##C80EqK.+ ,N)))q\Hædv}>_qq1˲mmm^W< >?VPPpʕ˗ sΝ_bæT.(oaΝ0LMMh4|RCCìY f+,,tRbæT.rߒfM0RTTķ;vl>رc$aSpCkHKH!-D$I^Pդ ^PM̐AZi FܐJb2 =7>Yω7n̙3fsssCB!dʔ)SLaYȑ#|#aG}a=455n-77:uɓ/^k0 3k֬b?~i0|jZG{С8%K7mz'NXRR_SSvbX***rss=ϡC\2T#$);;futtlfΜ ._|!/0LIIIIIbioo?tPOObI\UPVVVXXkkk珸ϟ6mZVV?w\mmm]f***ڱcbIы6mڴin]I ,]B#Q"n V>8bɴxɓ'BW\iZM&]wu뭷%--mLBȤIƍg4m6ۚ5kF~dZ|Ul6!d˖-X,6mժU;Ew}뭷2 3v5k֘L~&0SNu8 8·~Xty͛7`0^e١! ìXb„ a , X,|t2 sm-^Xtt?d2EM>=|~2gβYF2@"Vuƌ ,6999w0adY6##cժUN3.#G.[lժU͈[HRč^9s&Nj &O|7HD2|c^xvCЅ v;bIXѣG:ux:u*m}}+WBPgg' hB˲s se&Ao"no7TXTff Ξ=ߌe+FqCl60  FcZ !nFn^K.9r][!!;;ȑ#w!8N~)S-v=!0L(> i2Ə?~xp afXRR0xx\.W0dd2{ȑ# 8 &BSy999d-$)bU_Ё(j<[a󳳳>L>фS^xI"mI`0o< !Fqܹ}}} a͛W]]QKG1 ^oҒ`F0~Ȳ*--=|(:u*t… .B^}ՁR^^~m}GgΜy~-h4Ξ=>!~Fci @qqqCCCnnnAA =v?ɓ'ϝ;ǂ ϟ?O{v;MZ^|>l# MHLImmmsrݷrKzzz(rX۷~eKKK.\kq7~s,{K.B³Z'O~w[ ]JRĪ\[n###cҤI~1vܹ`"|Fo-$ҖAы Bg?8. ~w[z{{/_\\\&%[E&`IDAT27uE&@ pQF|'g䁁;Ch2eJvv}nJ!dƌϟ燎 |>xmMF;.$&bU80{ӧ_|r % _JΞ=ǧ_eYӹhѢ{vuug!&?bpzWb2@__Çovp+N B'O444Ϙ1c~a]!iii/>|poo/bp`"Vѣeee+WkmmMKKNK1xT~-$c^}.^rrssIz%A+򥥞aDUqѣG=J4iիWeYE8qbaa;s8qDWZZJX,w}wuuC8^ɈXNÀeٕ+WI#bY6{L(tR{{Q}>j;K.ElGBFcFF mjjjjj"8(a={vѢE7 bXǏ_xoe$E=pxw/`[Bqnt iiȑ#FXp!!aټz7|31FoX@ 0~xպb B``Yvٲew(CmtHQͣG6L|;?V???ԩS1cCG0LzzO8?f4 C]vug.\hjjOZ,..i2].:u1c!cƌ`&;;{ĉa0̨QFlyy9mll:u`(((p8/_v}>_qq1X7_P6ǏBvyXZh4Μ9}``t/d8q"b2/^|ܹh4jɈXUdYp98v̘1|j7n?ԌDwttl߾ؾ{oF-$)Fo6|9~x0رc._|W_}Ɏ;Fe!^ L/8q0̃>( ;l6d2͛7/##6663g g\wyGKxW$q^7 5jʕPr @"Vtʔ)@I0rHp澾G^r%==}ԩ#F`?n4Ν;G?5k<ρދΪ*q…#G8uyŒoMp8B˗N Q^^nX˗?7nĈ#{Z!䂝+HH#•XY_PSLb*&!u:G9ۭiq<&O:۲,۶ ony[UU~.h,˖yO'1o,³,_)9R/+a7ڍkhR(   ? KܱiJʔ)eʤ4#&7oޔ)l   `$H7oܔ[a$_"L0S]fPC@@&`JW_yE)GA@@Y@c 2Et A@@bИ)B}AW[)`%kV_b{y9rܾ};1-   h|W 5[*U*: Z|1bN   ' h@Rr4Z@@583S;{Vvln%ѦtN +[~A@@/H~aڶeL[9stڹS/ҥs*RUN=! c>"gO @ J/&=p-tĖ83S+ӌTᅮ'OʢRr*mZ*&Sת6Ĺ-m2TNe2cܹrbaiK3)R@Rqs9{GF $]l'L%7mIzeV S>,N=֐{}SZscyee˖R2Uyiv咬\PW*+y3ܔnF;D T- D8*+0rF%Uj5kWw#>|sͷˮ{M3X5ݣ@ Fg5sMs$hp3]vJ@m@J-_LJ4qSd4CU'+W[嗵?JmR#Cr'0dGBןD;[ 5 de'@ v FΝ;J+Ȥd~t;wiE{E#^|>R+,bE4iԠKV/[$֖J&b:2ȼ9S&dseђ͚jmnu֗k!K1kiҨ̘yMaΗ7* Ց 5FR@ﴟV) ? ز:lQLf~tۤ[pAhqs,r*3b h,L^ɲ|~CEn_~,ւ.-)X+<')oiKL̶C}&Æ|,E  @?!k$ .^bp*Auw2addr"Aks-1M5/VTY-T\IRL)͟{Q_.O}Rڹt7^$_WIwz3g}.Ϸyd|Om!]3f :$&> eulMjv'zlML٤ OxCK>t(e{T2S L! >I֬٤rժ7_> ._ԧA%ݝcvթ7#K ӆ}@ZHi/9s͓'n߱SN]]=&*)U*U4N8x54_O[`ڮY)SII9j-(.ZT *d˟? ~;޴Y) D9b[(:r gv$)+~[%52Z>,O)# ͓7wŊO38*رʙ+TRI֩eW3JKh轕inI)ٳe'Y?rThm`@"61$GS'quGmiFOP0uSa2ɴ}|,?O*<]I=rDvm4S9wn6mQӒ5KfGDͯbr19dexq['{4fj>d_rĚYhZG=g<Ӭ9/uf_BcZ!,AAA9sfie-nAA\mGn訫%$ۤ8R`lٯYC۸'(3%Ads:iiIR@2(T!dtR\+\ziuw3ϵNhl DVvuϓS4;#[闩^f; 6llbkN2sQ/z\t |˃]BPkw*~_XV]^߸IF|5J>KXjsw9NQþ{ZUi\c}/=}+]y gQ+W@L«m"G֟OML`w:AvD@pŗ1WtOtytD ;>I)Qec@Zw\p~מ64!? 'Æ @rfS |rRQ4 ! pU~yq 'EV;[u@=Ls >*Tġcq =[S>?T>?t@@ Y" 1 [Vf@vS 0cƌrZSbS@I_)d:8y'TC/@@cD @@I GV@@=+EvOjR`̙%(bŖ%)  Rǁ<㼤 ܽ{N:!۲Oh@Ŕ?J: R1-=.@m|rhU|B 4H W*T;Gp~g`z_>Lg}] x-@UFl\f۷o'9n DPe͚Uu&Cf͚ӧeɒ%={}zi׮-ZT.^(SL~a~Ν4@@g ˗ORLzϋ6m*˖-ׯKppԫWOҦMkرcM yr%doҡCĉW^^@@pSS%;{Z uֲ>;AO>q/,'O &H۶mPB +Wٳg#uEv!+W6>,Ǐ7+J r!!!vǼA.?uT+WȾ}L2t2x`k0ٵkb,Y 85O?d ( 2?r4iHƍeĈ7իWMӻwo2dԨQCrejժ_K=RfM^޼yE{b27)Rj׮]ףzƌMVٳmu߈mHH@_TFln@wg[[ƙ&E E3Apf .#-"vZs}v{2ܹS9"wܑEo"fSNEj=wњԍ7"A'EA@ds>P9ǑZ%z%z4`9sJÆ A. h e+PHU3J|͛7I~ET#3eO3cQQ@@|]̔peީcǎN6lXRlKִL2M=,}W, ".Su@ld{.r'%E`*)zɼfta tUFIHѩȄnhӧ/DҧSBCCczӦMf?WT)s?޽{ A@@7c iӦhIڶm[zSOnV H!AYiD ̴>" )]"2gi߾ɎA]1M4 l d\3̶>v/&T`*R]׮]#b͢?1]/bٺu菭ZJVϟo}R\#YSb%J9h5fС  xkGʵԞf͚IPl ٖmD@3^[zCfA7J.VѱcG󼪏?8V}>oJ  Rs*8s2d 'X}3$s_~i47oȑ 4iRc#@|O@ʽcJ@^oQ PzŶT ?@I@*y VKwӵ(-@@ .@@# !_ }B@#@V=q*ZXR% `YIvz '+ʕ+5kVOlm(yp@ +YB@Yử ԇm@@@ &|SD JyYAv3ŷZE0[Io@@@MSnÐ򝱤' I +tCW@vʕ-B0Y  8 @0@@o ;-#$Q6Py0@d`_2sh<<\t̘13gN޽:|ISN}6]mРɨ˗/sZP+VLZl)Ydׯ.۶m3 / ?ܾ}[O.k֬1AGݺu%cƌrYɓ[h!?NZo?~Z_|#Fu[5lڴhS^=3ŋr˻+CÇ/ x=jڹqF O?/^c2jԨh+]DgݺuGqAU  r+@vʕZwP .qSN}ڵRD 48ϚO>w%YbEZ`Aow1;v숴SO=e5`c׮]1C4sLT:MKV$EJ``ѢW_}%QMe2{lu떼[ZjLB N*aaak׮6h ߃>(7oRJɉ'L`8`])ܹsf g.)SǏG;f\"Z;CWP6B8~ot^ ^ ,M&mLС-U9t?Y2d G/5`J3'hfFG}4Z0\bڠ#<`*zvJ#h 4SYWFԈٳg4l0A4PYlY'f~gHizlf-Z$O?̟?_-jS3Zti*U*6 Z4ȺqeiΒ"3zͱH.۷o%סd|cN8zN/4{A|v…H fG![mu4Q˗/i:-jɜ9g r4YɓMHi믿i\h)jRhNAGԢKFLE3^6loY]H,C]PSGjХY( 4P˖-y_Wcƌ1BٲZ- ANI=YB6  r] (% I],OmGծ][nh'j#G>*ym*a|P f4å5@ztj_ٲeM`g y'L~=|.Y$jyx/X|m}@p$J*W)z8m4soͬYcǎ-͛77⚍ߤCB^颡k` IDAT=z0z %aNR33 6md}p5j԰glb^u_E}5%/BjղOӬfjb+`15ѩ~ZUfh4PH< 4}tJaLEӺNi` WhSjU=`T3N{j؂tQ7GE[lqF@-Ls b ~`CAzK֬[O)[پ} "\Y ]x@Kl,X#s.`a+ڷo 0[oL֧+j fmCEmDif4/V b4B@|f ͉Z4c=fd((i@Ztjb۶mM6Vt \hU5@/b+jSowF_@@V0^As 6١ԽΝ;K޽M`4h ڵ֭[gzYWk)QѣM.u\wӵ+fU{lSY\]ޑ&|X"!#6x.@j~GRcnQmd馑IZKMzϔcu2=fI4D\LߋoU3PZ#LiFWWR[f,:eOWXtaLςrf;5t5>,ҽamkܸY 0z9Qyڲٖ~Kw}{vJխ8#wg8 ע@t%F%eNҬN勸+8y5iҤ( ̔ޟ?.D&$\z華ygg#F%GʕQOUxZ҅gHJZX[>w{   *OKMdou>).-iҀ*sl+SWKdܣlyt#igϑF #X^=YzqI,\dsEx5$sR\qD` 7 Q84O 4ۤ?5KUϺpҋ]iM)_ઁVͶ!]=MQ@wfϙ+&b&Qk)v9s0 _}1Bn CKZ5gǞ$w\f'<k<ݕ5HcZf}Nsg7Tz )i~ +VmE'di߾|E'N4-]ȑ#@gNj/WtsPUbP=lBGW޽̽eUŊ?MZ;nVw,cժȁCwm=V0mɳ4in}4yc@,s8#Ht0+ŵ.81f̘[s1aSLV#tu)+9Ζ5̘9K .du1SM4"zlZo=[a+ST?w7@|oLHtf5͠V`m=;~pܤq#ɒ+>u p-C#@Rn Yd4[S+CukߔdΜI~'yDHTœ|q+⨺Od\-L*< 4յl C0<=nQbŊlNۺmi,)-W{.5Z/&Yd!!fٷo[?g@p9(0w|ɗ/oSl}!m2hy6/JW[v+xffωČg>#Cdbc'Xi~~<:G;*{(ZC|N{^'j3v菭"c|L!%q#R)o1ڋ  !@0/)ixY)/W֖rq|a  UL9@@sk=LA  vq2 ѣeO@@`u?Hu`* mΝ]M6\@@~yza셃F@=TtLS>3t@@)@0Nm  >#@03Cm!em#F{@`o{u~)o9ڍ  *@0~p3# ,@0ͣG@@9.—8+Yd:|@@Z"9rvX$)O ڂ Ly~fV\$[֬2~Ȑ!]TWx19rk;Fx-;pbh757mE[LyHE;N0ϝ@-*K- 4Ҳ|J)P ʕ+һO_@^Ѧ]zU.^ _x^ҧO/g/@ H9+zOS  t@y3Vz]RL1^jO2iҷOole"E 矃yr}eEbu(fJ(?)o)i'P$r7Nujҩ+fٳ-eai\K9sΓ[X!F'OJ{I&ͥqRn_*@ AV5O}򗑦I@YY j1k=zފٳ)~BCMa>wyKod˖M*4׮ٷI6)RDkOH4iK1'rD}*` P1_܎̔/*}B zS;vܴѣ2GFj|랪k׮K˔ɲzZIG6n$k׭wi kࠁeurR,U9skZ_jGnѠO.gҹsR6Y 2?$I=x۷CD7G܈\q6ttm2S6@燘"!S24@@XGYm&r$8Y&'R 'dd=\x؀9Sn@   KS4@@&@06j `k} LqNx=xph DOf͚IPlw  8,!C9#  LK1@U$<\?(x)sOڄ 1 poEK@@H@`L\  Zq/#.?oAڏ VTIb' Py6@ pOB+W$k֬g  $Y prܹ$WD^oz\oG(C2_=@FPQ#0yi߮m 2Hzz? !WI F:kycfr2@X85L씧GQRJeZ@~W;.Mz,_2P(7mOWe e'nض}ٽG9&?Nt>{!ez7vMVRH!sgJ5+ҏ?.K7ɐAeUu8{/_ ѥo S8j~fS_T…vblrR~#)_d˖ ۷z'Yd#s "Uȃ>(OW&eU>5Ru#?_?߽\x%A ی@ ޳G)' ~$=|ժJ׭_ojٹk̘9SƎZ#6vÇK+X[_P3 dK)D !xqJ\9`jb )}iV4yp#i婲eeڴڵk8_ko Ϸp/g - 7QJJ Ǿ(S2'ȅ[j Vеr}ɋmIg[JpH]>cidϞ=cnٺUڴm/)#>4`6B lDV NWhŗO)_] dϞM?`N3fjժ[[Gz)?"֓ )ZѕRN=i$M@*i~B{\J w'ȗ#>7 T8yRf͚-ӧ7?'ow)7oޔ|+sg4N>cW~'&bR_#Ǐl 06rdv۲S'ŗ|i4 $p1)㱶HR]&@<t޼ҴIHxyS;w~תW*mߦJS3ʈφK_0-_)7{lٴ^V.[*u6gȐAblݴA,ڵjJ6)RX~ql߲Q-Y( Էי#G8^?$w\[.qjٴ~t}Pq4?A\$Ƀ7 L6ypixҐeRBɔ)i~%k֬},P@>Cy쉲22oM{/Æ&O)'-[ [n5Knܸ!eU;i_-6HB;FΛ/O-/ov{['ŋ3ۧ9s:^EyK7i԰͚6zuHz VҴqh:o[ڜPH%Y@ 8S굫bJ_YӦ2cƬHlҲ+dr?@覔-dMgK|SrLPeo۲g^=]B%(!3lܹk,X`eNլQ/,,L9"ڏոQC)rE3{\=@{dl {sh;ܧƌ `ʚ7cVp&Γ[BCOEzMٳt+V>-Kf1n 3_ O^t):`HVmcnBchc6s,~{ʕSzޖ/1PHEE|ݱg pgG Xb}:mM;~xyFz-`8qBnݺ%"ޢ?t*_~-U2S\rE_.M6?.#?25Ƴg$O<&e+y8qR^j3h,Y۝={Nޖep5uR~2t|F UV~ 3# ,:-n2d2}ƌhm?T\Y(]ZųϘmma?~Bʖ-c^{}~k׮$M4& =d4u+V4lP|mܹs ^jR̊js3 Y\Վ&qF~δ2qv|E0-ϟ/YƂzRdL r. 5j={6Z@fZSҤIm- Z?>,)ÆV[oSͥ㫯7 J*y s dB5~# y^b=j &Nڨru4hPϬgä{M e:7v0~?ϐ){V!G ܱeN`S9 @\(u qZ5S9 @@E`_F~Z|i  <)YR $J~&0S0Jщ|09@@    rdxh:S|f(~,@0ǃOH_{U v1;N꒺@)O!">\kFjۯd2%sL>${n9A@r9r^{Mv%3f̰W>}zi׮-ZT.^(SL ,(mڴܹsÇe„ ryG~ Օ?HȲ*U*yGτKni[]ߔgϺx@STbŤ[nrܹhj͛7K.IϞ=~:HPPHǎeңG9pj?鵇r@|}xP?L@s 7AB]dղim}}/e:Y}F X|?PkOw&^l#u8/'O;H͛^-E IDAT(;veY>{ɍ7L z7M-[6mtiJJRN}^+[VUbۧ9sگѥ4j~W^ymޫZ1cfl +P0uA9~x^g̘QRLijɓ'%ͭNmE/p.\} {rbȖ5\j_iܨ=gԬQ٬V.W>Gr-%=9z\~=Ø{H&8Y^*wܱ۷o˞{}̽Vwߛ[Sk׭… }~)t =׾#UTǬ)zMP +_Mo#@v9ί{bj^Dv> 2S 6fΜ9=5"̙2GH=.ow{lRYSh`5K %0?HTujNtdRNmJhian>iӦSBmw:Ԛww_jφ}bݧpD5@@L7zAI\T\r%lSpb"h0 ceYqVx9~2=t8r7ni^6o*FWX߉nfE-<ҠI&S~rZMiVJ{ˌL۷{Irԭ(Ԁ򙡤# 5K2{HV^dF% ާNɓǾ՚tԩx =|(Qi|y,͢QZ C,P IƉpJ2{4@|"uӹ{( [&$|:\[¬שchc ,N"wl'H|=zӢs͊~%obS=yֱW8,Nqwž 2d? 4 *Ǝ&ګ~xYo@ߏz$@V*I|쌀)O;oQk4h.;F=M4E|ΔOо}{)^Y`_={*DA RL8ѬS=zt9Ma; +XZIө3z`ͮ J۷o#Wu1Vo&̀p=9Kzl#KN7hB$Mf&]pBM;vLб  0uԌ ŹI-PI@@@iyz@@A{-ގ)RȖD!CuY8)n2e/F|&o-K-L}E~(۷leKJǙ8{y2o,ٹmL"OY[v@R2TR6h[V.[*;nh \^VmC[Sǚ@w)?<;Sd޽r5ۧ "K.˔JUQgmM338Xԫk-˗3gʟ3oܸ!eU;ilٲEkVIʔ)*Լ%!Doǎe˛ޖIRkiߡ.SNΝ;';,+'OJU #pBU+VZMu Z^{عsΝr7cy ҷ@ЯꣾMڶ`qHhڤ4mX}SQ?4p}ʕGHY_'3fLh3 ![* ^h9 YUlɝ;wdhqҺh_@o!737Gf6UVo ܷO>EW |\xE:%%$}Ӕ;w T{٩i~7ui.Z, Vv,Y̴G3vhZ{H&Y>iNש;*<<\Xaer0Ҩa0q6ֈ_VԩͮW\1cڽfY|u> /=S pTbO d|2l|XiRn] W%0n6*xihNS49I>KNNlo :/bҤIc%ȝ; SD"Jì.((E zʾ2:1b˸?p@M58Jɚ%qw]V /_LwOgΜJX;l=R  __5E' p6ss_N9b̷2C{4n?Zp8Y4LM B_.M/S4ãt!&gΞl%B={d@yy:@B%ݦXѢR'̽9Azs{s={v3M/%]V[ٚ˗W;u?-HhƪM]u}4[58Ydwf+XK-]dB}T)3o^BvKHM_5Pkkw1]2e̾ƍz<=L{iiҤqm/\`+qff vmۈQ8[ޔY 4Y)g pL"O@ Qe}z]S8 3W%A@{!  L @`QG|Q)~8W^qHLCc   Lܐ!@@T씫)W S?  O+B@@씫ρ-ZP?>&|l@$Z'M sҥs\  r96mZ ٽDn@@=Kƌ}g@@p@`HH?ޅj|UF}ud'R >'u+$0G:@mZzz%u'w^n'Ç uK3O?6ȴ_H{J/رD۴jyRGH@PV$ҍD¦ @ ͖bEʝ;w$iY`|gKB/:IM !˖K}}*=-s5Fݮor.ݢeil cx|ԯ%7l]ސ?'R-_a0o#Uݷcǘ)O-/ov{[ŋٷ{ҾCGsn;vx9Md;@"@0F*A?|2hFa⏓^7jX_F':}DLju^pcԬQ]gS[Z֯/f2_ק2UJ|(ZF5HA{7oժr[^ o Ivmۺe>}"1Q6A;/ 4 ?f30M8IBCOGX9u}mکۮݻM퍯ԵI?$/\0uab|Dz?xٰq\vͼcN9q]yKH*QBgH/?Mٴ;K[6w9j[h.\8Qdc@*z*ا%{@kJ'YzY)ΖH>`fd;^ǵābʕ+|MMPPJ+ӱ\?.0͎YkP n4xɖ-h+%˜) |l_ɫ!Mz.3b]ʖ-czΓ[f̘ev5{|^LڨZߩS㆞eٳۃoΝ "L˔Ϝ9k2Cv+,Aiϙ3gz##:pHt< *u4@ Z|-n)eVtq{߬ǧ  r(!@$៏/G~.3f2YׯK-b t^1ٳ?3l3=z1StVjZҖ[MRZ<dئ\.[޺e/qQ-rZMiVJK,YblsʹèEy_{4,@@*G@WSݷ/gΜ-wӢ;=V:"-{dt]:}co[gΞoYYYV c%Ҧuk+Õ6v>dM,RزAl)cj-=":5Sqs!bi'.U,12  )S2 Yf{tEm7UҤIcz?z75Un&X1} ~:Ŭ7yɟ=A]ٿPh+ĭ_J^E$WƘߍ`.u/F|f݇uw* cV Vjc/lٸZcIgoO>>Sf'xtYr j7E)ۼy,]4Y`e+Go}gVD4kXXu YP~w"WYce(OZ.H7DB^5X}0^/:$%J%?-]EW`*y9:n8r-[A@ y r$ `Ek"qh3  $T @@Jyh#S:L9*~+SDl xMG@dImx_;2ZS  ߟ ^wMރњI#KnQ6ɖ\mS $+D@vG?`it?tN]n|T ȜBpKlN|U(c P:y,[JIi(myC9{jf|/u?參%}нv̟Z&ΓJJ-n;HcjRI?g±@ё%rT@ Vօ軏eQȺ0Ie%C$o-yӥ*e]Wʭ;R2kJ9~YIz_ZzA: Z=Q_tTjū7]P_t. iN_w(VuV <eo's?{U/!{Az 4TDDD{fN o†ٴMrd;|;s&. =G (%bS&k@d`cO+W䶻3\ds( w}'8B K IDAT^0*sKq/(%vB ?G\".M8t =|pBd(,(J1"|KuۺqSE^Q$E\[S7SWBcqT9]ܔPJ \$qvc_'!JD&q(,eT=P1OQ̦J,9!Rq0: Ks3sV\w%pI"sV_aisXyI6P`= ɘ%\8EAGxL\'O2dr luy ٻ*.~8K0;o{wEpY[Ȅ{8` } "/kʵ'>X "m= sCjwM6Ƚ*&.^=cEaEѩK*LiQJ@ (%'WWW89:hQJ "ĮŜtC8dJ@BcYƐNQpQp{9w 2_*$!ttΞHvANXSOGqU5}<WQB͏L[k%WQ`-ậA#ZӶ>R8ί0R&!Laş{PDƯJy1 ^KEΫ"SDXZSȃ|TdzbNp ~,t(ά$`x̚ID3O1KW,_k-J@ (A v[zON>鳅=_ (%`бx$B (! v2M/I >uHv-5w_87Wб0um~dšT 'XG}̤ǵa;$tS>3:o\d\1<0%8VݑA}dk, )Ȅ],ts(0, +,U! Fq0} >:\EwR<; drLhs= 2lɺ=9MץҢPJ (6l~٠(%JdS.RG#pp1;' yY 70tŲub4n] &.3ݬܮH#k7t oc D܀ JGǬ[p =$zR $hO瀅N]%|ISȍk⽙݄KvI@;(JbD"m7=%a3"uݪ)Ƥt-Vbɿ2f!gc&:=&"ޒ{y_G2md\0iw𰦿zPJ@ N)S9ў(%,󅲆!~%%0Lq7{޾gUDfzL: ^^H" L#^Ϋ0?$>̑vE |%#s*tV|$}xǑ2]~;@Ϻclx(.sY ҇ycd˳P4QH>.ΚзT ԬUs &$maO|џ&2D\r/arھt{7tfguB?Aɸ8O2$+NoF:.5 Bb)DwGBGz*&L$%޸ ht$2=KʟIxd-|";mPQMq-]ر֭]IF j&,+A aݟ=\b vx;o 5aGV/.ټ?+%$GJ.%7f>͍P6RWJ wCplnj{E *GNžGF>T cl-O5&ɈU0: z/_J@ ({&[6а{mSJ @,k`*^"%/7PJ lz=%"#O%BC@xBCKUJ@ &zY@P+%PB@,`T1e %=F (%PJ@ (%)J 蓞HGTJ@ (%@5SUTF钵(%^'tD(%J@TX J&.'~mMzfu;hv˴J D|A< wNۭPJ@ (%@P1J@ (%Eut91~9ňۨPJ@ (%b-]Hkov<7.ㄪ>> 9zPхRNi;еS S3J%J BPH=]\\!r*TJ@ (%m4/qo$(T9#q铮]rjωkYӸ"c ((&TP1vC;э@ԯп9 TV֮ƩGy:tqHJ@ (%@'s{Da~xWMJ  TX3e¼ +Oc~]aH.$IK)%`;ulgg*%&Δ %88ɒ_+-DT#lݺ Ϟ=sODďS&ce(^{ժVeKp>̟;y1͘654?;v:[7Tٟ^={`mػk;z~dɒaqؿw:wÇ nظn5ۃG0_L{׬Z%nغidMڋJ@ (%?uCSTkU%M_BMRK-BxoIq|ڵۨQHq̜j9&Sƌu/0+)^ f s.*YWTI\~U*W?/ N:lۚ4nkVzY4n Ed@ܽe+w~hazdΌ(rE%0clÎ%WΜ?ReA*UJ j +J@ T*b~)@ܟ?G<{Lh^h])VGE*Q0o玝8x萹+-[VsY7m6`xÈDLb*EX|y5J.eNpa>slu,8޽k5kJO;?{zzeB4i[ݑn!E"#c Z26n܄\2FdQLN 1a~|QbuW}u"^Q D O𿾵k,'PD0CD0aB]puj"* /lѼ9qڵm77mlWgΞ}+E$,i"C.&+Wvb )wW")߰ф摐IQ|-J@ (%@#T&IܦMIɓqG]{cDZl .\Ȫ ~XZqc^Rp=?7tzaCQsItq,b_W^3vb,C3 Eݸq׮]whݵo\Ƕ]/ELHkN>kÆcdcr :gG z:|"땕$<ŷzXߌ+~Xjكu 7z ;v,umʕ} OyD.us<c_֚>ӥ㐰Ug+;%W.j]|)mPF ~4l)40? 'l'*o޼ ^(Qh^rNL(EAZqY׼YSqńiPJ@ (; ia~ y"@33ӧO|堛xDp[ m@ ئ{ۊ[DiKP׵ߐEH}xp -ԢE %[}ݧ{DYM*ꆿ@koEd" Q5 "]}RL3B{=^ (B AXl9ߖs7|[}hciOxg5C:&m l_xCz?CslXW%l:l-46#7)]f\`)f!x/# ZPJ@ (%PJ 8)^ٳg([^ڵqm62uTT^Ç /`ƌM}k(%Oa >iPEiÆ ^/iڵk2DwzhLN[Tp4FMWJ@ (%"YSL`J%PJ@ (%@&ԪU+~zeIOtKF%PJ vp3f ݻ)hPJ@ (^*FNPvKn[ SfC@(%{{b6P (%PJ@ ({$bI ( 7-7 ѰA bEb!fÂyZ}l#!~qӳP'b* %ujRܷq};y0fL RqAw7KmQ PJ@ (!=+BTxP:xwPZNaqXCl2hP={MĚkGQUJ@ >*b=+H!b*4nk5k˗6Wj\Gs7os)eK1&Wسsڎv_m?l-Xdfbɕ3{L^قmǽS t,X U*c qg̖-+fNjqjԯuabbY3!U*0ě(%@(nzY% ߰˕CĉMW3f̀dɒS]ϔ1#~  E¬s0i_&<´i3gkNWƍPvmԪ[5뼃 d0aB|ѿ/5mb%KpU8::k;\gm7nێˑ#;pPXI=_6bjׄdqb(^,>9߷ȓ'q~;v:uӇO (%@"b*Z.m>?-[@džIXpkSΛ/s Y!sLؼa-ztĄ N ɓ'g"^ I$U7nXy?KF~v}O􄓓S+%PKi}UM^NkWJ 6`ѝs._" #++?kH҉0Fʔ)^{/YҤ߻熉`EV#y&ibqyv]WZ7'K;}uW/ST]޻kAAg9.~5((%^,cG2LF{UJ Z`ӏ?YFW\ʕ*xbfe&̏GRP+qH\.>]PdȐ>X.{uQ]~...8||Eo8?\UP7yqkׯGPDqp-T\u~T XC&{ X-6R (%̿B (%!IKS'#C I͏}{vb˦HĒznڱDX.o;-F f2j#m..M !܎^xJN;wAzuu1  .F}JPJ@ ('0tPcќi_{j;v,uT%0d,yLY-ѵ61m4h@Pp%[!6a6X|9NPKPJ@ (%PJ@ I@Ŕ %PJ@ (% TLMOQJ@ (%PJ@ 8~fCL-J@ ;ߔ)%PM v[ԙ q)%PJ@ (%+Y;PJ@ (%@xP1D>%PJ@ (%b|&VfdH2éY!ip'ãrzi%@hl, _VkZG勸xhQJXM~LK-R1]3+]q#?mqհ0ZPJ ^^H"%RI=7 ZP'33bLrx) to+J@ \⫙l_*od͑'vV{]P1e׷Ggrk hZPJ H䐇 Ϝ%ܫ PP1e %=&H8)ƅ,}Ԏ)%b28NNH$YLM Ds1{)S|xjF" IDAT1E=[ (%u-QwJ vpjѢ$vS+@ĩʐ!R-Gpx=3ePJ@ (%Sq[GJ 𑔻Ҧǟt5bʖtpaxI)3-J@ (%P1d 1joB)qҤpqq~&Kf{V==Q (%P sM9>}g  =T |'}!:d͖$kTP Ξ9RBh V? ^ d̐3g;wʞX6 @aL }dSHfjH-࿻ ,ucB7J@ (XMiÆ ^/iWK,y :y{1B]-Gн8qc8u$H'v!:TfеGH)ǟwMU YwwweJbCpvLѨ04SUKܸqO r[ Ϛ%3ڶn1"AѨѧ Ξ-<GG_0/. ' TACb[æyr#n\':|Ph_P<NmxJ@ D#N)SFզ*'zޝ;8w<֬Zv#y$7'ERe_fmYcW~B1zuɓ7] *[F9HM5D.]:xSmNsٞ T(_}?ܹrqa)o߱ Dp_lfʿeɜYP2:r^6u€}ܱqi9=sfV^+'ۙ!}zdΜ u"'LDn\҆? ~[ 1oo+W۷p{%}N1oWE2KoBw;飫');#` k܎}u˩UVH3m L?nѣDZ;3TlNؼ~9̍l)fSꕐL9vЧG}Dca$qGGvŋ'bZHsAXfu7wvcMŸ9)-X ͰYqj:t9ҧKfM\y7l%^7XШ;oĔδN.=)BcҷA Moxx~C7'O\'D4x?~g,(*U,_ ӧOc $ aCGAb?|;_|59B*_ZPHi̘14/U+hL@'8NmB2Q7%6l؈{."UqReȆ  S|!vmBe"C)nj % eKBz"gϛz9nZ=g.:ʕ*n]%\10'NPh4kX=:jHmbq|~1!t̶lێm)kXI_Qڸa#B7?ee|M?iSF_z;mڼ ǎaY0Bz5?!/mő+&!? F E s1fT#Z ZmPVP1e&=(VptBS;3Ogy+V4 (]"|g2)%\}o<=8$딄p1WR4086Ngς|P3:=~W^w IO׮_ɫyv: ,o0D\0 0 >۱~f*uRŖX)U`A8 Y~ipe(G 'ߙDe!w~;qwÞ= 'O.3X?DHih_'Ĺpwn”ǟ988GĖ܏r%6n`@P0Ȅ>~L_nl c|q"JA\OGɓo +XJ;3$q,[RO G Z }[&5gx;s 嚩f-'ŋELx$'.XjuM$[:i \ri waA(PB2߼)$69 1 Eqb?, )vF}4R?h҈ի'Ƒ *Wq)ZeT? }ĉS6eZK|oq8-k4/ďP1e7A`D=Y Dqd3@! Svºk>cFșI=Oo"片ؾɝLL&Oa$YZg2ua#Ί."ڜ,2d9]&blC:ʄ{.fMCUf(+,OyZPQEAQL{F@ॸևmZxRx#-_-RCD;1QRj הYSؕ*Y]d=؊Uk03I~%p;,< 'ekӾB*_<~u_ y^t&7* *h,S'7{68R lIأbVBmKhK (&{s9kB3߳SJAԋyV=^ڋ #GʞL.j\sЮ[V!ղ Od)If`M)A>sYGrX ] )Lʚc(Z/Yn00I3LY^'HNqsS1̏?'YW 3]őqSREqMI]FwfcXZJ-O'YB?{`Sp-.}ZIK׌q\TL{$-U5b֦qm&PlYRig㗮]GĤi /,\vv)63f8HN: %"՚ZL=~oUHqϣNU$ZK!eY TLνcPM@&(ݽH-lsIn@Of+e517$F kk P`nI$/þ8g8d\fb~L^3L4'>l@XdWRݺv2I0&wqyqf$7OgϚfH'1o섵G\0BT$YG`Ҋ8M;󈅾G3eyB@Vͱ [ /EnQTB$Hw r 1D>o1_*RE&vaCf$ Y8T%weM:׮<)A)yRr%6AR1=R (%S!c^+ZRNoLN7!SEa,7{f Rnav}Lֲ{ '0ko؄`r+s ׄ=5S mdZPJ fP13" ps[܂FI?13oT]s"cg* 1E4c \THmF(%5SF'%c_ZPJ@ (%"@O#b\hJ@ (%PJ@ x*b-*%PJ@ (%TLEUS (%PJ@ (O@TA%PJ@ (%`,}ooyߴJ@ (%PJ@ D17@/^^^QPJ@ (%@4#T4a\%PJ@ (%샀) %PJ@ (%K DuS*bn+%PJ@ (%6*OVJ@ (%PJ P1Kov[ (%PJ@ (P16~zPJ@ (%Pa&=M PJ@ (%TLƻ}VJ@ (%PJ TLVPJ@ (%@ DP?SaZPJ@ (%PXxӵJ@ (%PJ> D/wJŔ}"mPJ@ (%PvN@Ŕ mPJ@ (%];b*vLm@Mw_#Y^ӧO1h@?t$In| F ___^gnLVu͚4 d\,Q/^\=H (%PM)/+FJG;x"ptto 9 JDC߽PhQ Pn޼x9{^OOO)RE ] +kvʙժV`prxY[EǾPܝ"X6n,(PU*ɓ`Xz 'P:ej,C\t+WFbE%S&2gΈ.ᑸ.9=I#ap֬ VX%-12e⚞P,>sƈYD9uF e0ڷqV^ 0/}y˕ kp_Z, ,a]we_ܽ{ӧSs_s]s|pYyϐD ԢPJ@ D>a~?"є' K?>9Ǹs3xVTQ`1'ȃP`qb@ 1A|1-}tH(>C1}D;'I,'.7քQLqvkI19wtt]iD{n*s '0uss}t ůc}Ű/|)| uQ@jѬ N*ի6ZPJ@ (%S:.8y,&1,歛&<5"3vN'y1D.Tq_f?Mx(}\D!=ԩSFl c8L2 Gc.H?GÍz]A+ gNϤO%ISĹ9Zoky=Otf7n/KpsG&쎂:q"Ja@zC?wYHҌb"JJp__d$rhaJ@ (%[ ) ӡBAI&cvLHЬҤI#QB*X/ew0`tIo؄ܹs 贜P#GRJX `1͙sp'qH+`a[|'U弌 A ZXp]Ӗ[%SfTX &4keZN06ܫd 4q?v6Ǹ?/klܼ$`Y$dl Nĕĭt#1cR fSN9{VyXuMSw%G&qM0#2[㥉C IDAT´9\P E=T (%*&h ǟ sKe#W= NPlwD _kעg⧡<}RNKbɘ1kvmܯNښ޶$Xr wƮmЯfO}xΘ>#\֭^e˘2G~ KV`ՒZbz)?aU<6CM Co>΃+C/n+bl}&E3qefjFǐAIj1YܹFcmhִ f״l- "v)I͙%8w̄ ^uZץSGL2y1H(^4ke+y=O (%s픃L}k%Ͱ'rرcѭ[H^$ݰn^{!=WJ Ȗ+/͛z]PJc?φ-`LUJ@ (%PJ ?wJT46D%PJ@ (%쏀)'"%PJ@ (%S&iPJ@ (%  S1R (%PJ@ (%`S6@SxޒJ=e}ԪQϟ?:)7a߷{#n {ʖwhz%hfJzɞs a- >'TP^\cIl?UT'cf#}eDt0= 6R:1B&0?{=&^ǵĶq3V-[_L_x!%0wB;wc-oCG>ͳ# ϬspE (]$N9DrrJ@ (oްWVQF1v4oN~Sߑۼ eRЦDu(/Mo99._:kd|̙27!.[%'G[f3z6䜐˛udT)S %DERUd+WPBȖ-kv*XM74'C?x,l(P4no@μ~8wl:W^c]ΙkDS3.,lپf,W~+|9MṄ7o4!v ?p![7nT6^G@uSLEhD|KWC[6&Na t'O/Fe剿'Nq=L07n@צNZWnܸi&B|N灓OBrH0䶑81fxwTT]:}ܹrl_e6̝3 cD۰)lo qF-}88?{5+bonF3Y/q`Lrgd(9 ]:wĻ-M1 g\srumr¦Mϸ *0 Sƌȕ3`N46nƃGPS:k\r`F]tL:а'aN-5h쁤ɒ>r"ѿŊUPctpuueؽg/>8 t\Id4vdȸq6E'OQH! rVí3}k{Fhӕ[x)w #(n߹cWj,\GE<v6TEyEt?s.׏8rܱd8qEț'C3"S2ߴiҠpDǪUkLmږ?_^Ԩ^ ,ïZm3nȃ]L;҈ڷUqXl Ƨ bK^2M>(^Je͊[_|EDfJnK3ݟcy c2g,y{WyY7 *_E&w8e*fj׬AFzYjt1V\zI%{pmqJשJJX> q^ c @6{`~{$k꫁(T.]W^G#XL]X`E/!k,"NϣO;']L֮_o+>rɒ%ñ'㐡8]2Y>3F3&N6Fgz֬]k>ݺvAMLfGz˕swLqSP>?E1pd-56TJ@71BEq~:-ZjI;LhE s-.L(#N47 {ɤtR" Lʾ{'yh^ktۄevaUi"j7k,!96ɓB2If܋VsUO$2װ)5jjɉa{/sӠ'A=UHǶ'!M #˒%h{JߢK}5,3c~_jͺf]JeԣF u7FVqlmLn}5-]2&N"BZBX/'y׮8|ވn2Kn%BҤIL !mެL]K3LFaU\Y:yVU%7>5fW'O.zq3-[ Έx~,[Oz˯EBYوC˗/K&9s0{xѢ(&a#F\AEn2™%W+q]" 6;v1ci}lݶs 6qONvA.]QAwйSiy̘kܰJ(a&ExR0PhZ>Lܫfx$al:7Nq,sL9 xkѬ!M1r4*T!%2.©IrQwq`BU} &a鲕r+Mؾsp(] .XaIqZnYL0 C$\p}_ؖzW"RJ!?OBAUѷ@ܑ{U0~^ $5# !r||ѷz}UkMkL3ZwЩk79x}{9c۠kְXyaѼnͺ[y6 ôS/V+4}%쉀жD'B6]€O{95b6mbȞ<5_dOp^&G+ą*#8!6toq v쑧О2^tk3r'9{N^_1}ٻo5FѐBT" d#F|YQ(>.YyO["`vׯġ#GDd1 #lݸ 1bƬtȬɑ=qS|StT?]7eE|'w.3۹ss՚5}GqP8o>|H&Mp8 lY'OMuSGG<($n8;qq}ʋ)lQk-2^kcFG\ǏNX՗m'c|}ܻfwg/wBm0LfN ddߗ+%ޖj 2 -; Ayh&o {"B,EC\N:9٩)I͛4d߄9::`fA{ƌd $L(0LZ!b8LW壎쩄}%4K&@Y& #Nf0.UT~}"/}ᄌ.%eȧd@ӄJ]]]L=? ~avbHXRIAׇbRCi?_ց9HxoĿQ,Z53 )B@끋< N]C:0$%U#lz87c6Nj銝6f_ء-9E\6 GEQ`/V D'-ab2qvgl>ܙktfRHf!G 3:~k"):oc8 63.~.L2ef>0pl %7N)TډØLD<ǡnk&~7d:UB=?*qPJ.35 ,Jb+^45Q}QIpK׿SN#aŕ+Q|7F4l+ 1z 뷰aOqb:\Y2%J3!j/^H$ċtm*c w̌Wo s*n~ o$Wm9i9ˬ]+Q(|n'vז,~[QσcoYKL}:|F9ejhEF ţp9oݶÌBLd#gâc %?5BR,,E2!t:oC B^$< ٸs5c8 k}MPgpғPM@" pB,aD4܏z֩i34ʕk'`DիBrI,((ʼnua1LJlqm H$  zʼnu9! /J&`RDp“[(N$ƅ u6HN LԸ7C "a1L@5#NgfĜNGP/KeIBQ^fȑ]BR ?3)! Fˉ*SR3&a ժ͓rZIdBfFnx q zNOrޏn/EZ-}ęathرf]t)gq c]e=k]R%#i^L*RL| Wa{ȭ_SI2t3֫S9e̲sƆal!?tkΥ!w>)P a/ony?-E#Ǿ{YG17~VO*~M$ɗ$!U'fR8sl.qێ&ԯRpH<& lټqrQoٺ$a3. -!~ŞPfIpA^Azf]c}jt'g 8]-I(:o+,iKQ29Cr+.2ڇeJ@ ($b*"jvK눴-Bǜ%^)&OxIlMQ8̜63Pvm۾Ӭp,_PV<0oK(E.YSDZ̨LZ%eb{vn5/_iBgHw'YoV ek91V^Ɖ9 sf)ǣ=H21[BG1823L apA&` k]9[25;q'+)v2tzyw՚5^3sIZp<^bk8Psδ7gϞudd`۾i=Νc&L;NvYfN^+=>׵@ fz3ޱy;q5KyEpWZǤ\[B/ڥq|ȸ`DIh&2I5qWČg3To`Ə)ęYs_c ٴi*\KHܪ?F*uODIL~qEP.ikVAM$E խ[֮Īe'q:%уXp$fh?ML! gH[6`ݪee|]IrsٌA 88B_V"GH14|om0mI~B08lÆђoÚ&h9p~7;~owv| .1"kJG,, QD`Sgْ$4IUJ@ ' ^)7#< s]cǎEn\V'ͫ#lϞO'ebIompg" KT;I<<9 -prD#$;y1ש sO:t~1P':•_j&1KX8ڸlbټY)% "?ٰe_ؼypVQJ^04V<(Gae/BʬcPɾEtL9{aat4˞VL1X'A$G)1ެ#qF ZP@86j_%`(T5IBrd!!5?+QgV>f!K\>UR@3=uHgv;›аG_ CV4 &̪ȽX%^̞RN mvYu J\֣3,.ڵ… ͌CڵIL:Yfap6mB4fɓ',[NJT>B£St2cO^^ qRϗ ;z̨~0/k2-KƘLk/Xh^,Qjߔ@lJ@;wn4mѿ̝;;v4O9ԩ,݄~̙3hժ8%PJ@ (%]0b*O?ĥKL1rŊf4]+fʟ?lΙ<.|oժU&5-,-J@ (%PJ@ (Fb{N\pAb)߂!;l=pCpaI}V(N23eTd,!Nn鏙{(#{gO8];,pS>Dޟ!5BQɾA-55{>1]2AV4lGeo%i[I ?k%G5QnQJ+`(^%$Ef2-J@ (%6N3gƑ3V˳)'JM )ؘM,{L6g~U-[,\ڨ(|}9^[.3קݻJduf[Plۯ4s)<Pxm$JҼYc.X.;ܵ+d"nf̔OdO/&( Ka}_&9>lULx׮UF='FmÅ 2ij3 \;/Yh;,ɎtO:e6s.k!9>bk'MB:HTP< IDAT"@hW*{oW.(*M*AtW'!<6,!el-$;ws̨ڶoh_c3h'(y#T={H*'2NhO- O 83{/B!l?l \!tWP93:yzaLba\yr|aQ)\F_P|ybZ5}z ic3qw-ҹ{8iչQ xX=RhB c 5ȭ4s{ژ>NNN1U˖ҬIuzHCQ_fJan>ɰ"}xߥŒP.vYb7?/ Y{ #C^z)u{NUC#m_J*%tDB +~,VIw Ce%2v,J?[YrL4AխG-Q`ٲlBӬ\㾘=`Y`X['`AfBhK8h˴tb%{ n2ȉRtٻʛj\~w#2y;Jׯg\wiu[| xx-P'2φ>e&֬1?~/׫k&m4dŸFhܦz>dF9>`g)#hpf믾lN2^ׯ&y_o3s6|VXa:gYr̝9]l"bQK0㾇 a2UR^xӯOQשfiQqfݰfTת5kH^=7_7<[S7e9\SN=+E:u_~=xȋC_0c:TSo!W/ ,nXp^ '}`طRsۺU}ʖ-c *ýsdŒս#B]Qw|"21)Ѽִ:w&PJq+AT+wh~dޞ9c~ʐ]@#1cd%٧f&''i_իvh\o5mI2_nj K-utM6[+fݨV\Hz @^*_V7ܸqkάB֯__ vmVӦM̓m۶Wpc"w!>ǎ};IdLm!y1iNӡN,q:+z~GK=e .tn? I V1G Wn&3zGfnJHC} Nb-:2jXo2wM~#0{Oϡڽ{<B]s-]]zQac֥0@qvQOCoy^u"w $_{?-73z}#ŋnk,m4r;Ȑ^#K_Rv }5]5W< ]=兡/Ej* -+D{O<-wo.YݶZlg[!zBvyϭy֭uZGTYB{?(|Xk׾X:O+mMe~:DSԣ~fŠ 'ޫ\{ek.YbI)SdKJdҽ[W)VMOhiny{h/* -&=|̙3OfΙ+O= y=ܠU1[={殻{Z>,aUD֡ÇIeo3؅E&I8Xnx\k]yOVwܪ=䷙M; jժǏVZOЌ;N&O&{ߍϿFv[|F V>ϝ0V`뤺ZҤEkyt,I烨9{|WrxPz |r.qѺ Ѿ-~ \{Mgݡ\Q|MI*h!n&*eO 4ԡ.`>.:w߇#>U.=z{$~E̝oPF<`|$@A2m4 <|~'ңG=ztĸqtRF 7zoFI I'0u`&~j\N8!QV7nlDoڼYR 3ɂI3y\rNJI!&j3o?h w{3_`RQrDi۶}ZnIv+&Eigqp =zLljATab~2 k &'4̦-I|=.ӉLcho3gTqvAitBuvS6,8< X=ljx`\'w=י)Bl\9bWA]nU Z2l`=J?Ê<7*L SOaUW?h?ƹѰ|J S1M._X;JWge߂p9m?x!qX~DWmn@N%ԑ#GՕ2\*h`,eO+\*|{jz/|*@Q <`s߽j}lf88?빉a:flh#tl v@#'QgX;!c-ɶp^@4m郿f>03w_T+τuQVliٲCϟ֭Z8_4ԿfQjM$@I OjQP{{5TU1 !yXXwyK-40/d. `n|q pKq]B`u%gO>UKofRjtaR3 R%^=ڄ&Euw޸R!Ndk#==A:/RNc%p1O$-Ï[W^4\w/ ^61xͨѐPTK!Z?Ei=&4BJ@Iw#5 ] REjj)ŊI1 C,aa7ч,RoN&C_~"d0dpmc\t؟dmb٢!}:%Գ}e[m"#.gΚ+XzxCF}j$}m[z%O`(꒑02mO1l@1J(f,hhb<* sIdm8bcp2fo ',&gLjW 2;{w2[b_;}q}K<|>qoY#3|H YCpg*0&PpUw$ndc;;eLՒҹc*` sG?U!UZlZ5ƤZ/w?L@k֬aDp-drKb®V-Y̸2aoʪ.qp3L;_q]! 2mZSJ*pe;K7JJL5-VV"XW}-%"Aa<'&%7LpAcبV'؃&uL2Z-X۷=N.485!/ 2,-laD9,-[a}5M`u@AvWw::n  @"Ev1 q"C{*jNXஊ  fQ$u BSO4A94g[a!U v իV3mIZ/=X8x"ڇ Z:VTVK/ރ¾9oώڥQ^w#y1Ҹ ?5xYgZ--0$(]ֽkW3?q[E:; vIhݖ^H[?hfVǛ̾>XuL7nM{`M+HŔ7>۞c<;wCEX~f&dC} Uڔ6) Z!; 'B䉣9$a$@$ JB'I= ,OH5kב&xBS 7 ЩG?Y2o)-Sna" [LVѳt's1 P&  'w`s oe: bIHEPLHG$@$@$_ N]na F_d$@$  6 85$$Dcזpz,HHHHH<}ꗉHHHHHHq5cN2' @N|W_*zzfXq&6R̉H\zLF g&.𽷥ef2Rn]=CPsRw%   e޽RX1!gulA )zJvIq|BXh\ 5FE{E}$))1G3O$@$@$@CtRiӾ4 !$Ӧ]#Ij$B[/7oT ϙSSdw#ecČ:*TH!6qXxDGEˀJn]\rrAy7%66V^4WO3~iʼۤE-SG#7n֭[}#}Tb`KJJO$,HHHlٲ^x6rJbӧW^GW%;vgyR_ |FEk5uQH~~~Em޷]{dSgäs2zO@._ѣiԨLu,^XT=+ߌNc#d32adߓӦ2? @6rBA 8@bj{MNuKwX[u}µ'NRXX}-_X{*ULyr_Ukd5H&쥊Rk~8VW,$@$@$@$@9 `>|u%JKN:HN^@ S?Lzχ},>&ǏJ@=)ZSB *6\cG-0ԃHHHHނc;9Xn<أՅ/oDFF NHN*mwRuB?*U* ׯOoizm{HHZTu@_$ /7 r.a\,IeJsz.۩St?Tܭn}8^ Q#`A{Z^{Kd (QL)9֫  w4m{4žJ+JQbG }ժV5!UG E$@$@$-(<yl˖}O'd4sگrHP Z_ {ڴYMuIefjp0iT^MƎ^عӄ3^*wг~S*V de-]4_5lh"?&    '࣫)35{{w1b <إxB䉣@\&  $Pv;m{V&p;z%fz2v )WցHHHHHPL]$@$@$@$@$@@bzu     p;Sne0 +r^`HHHHH܎Ŕu+L$@$@$@$@$ (\X     #@1v] +Tu w! %A5H bתKYO piIOJXҝʑ S$ ##RdO%1>^,_f6 P))b 7RץccڸTh7@N-I'J (S ):IVG)1A)YH  Sc1oŒ%Kƙ4T(7H  І|YHINoPq~{P)$@N"!ǟ *'u !_L/_aRIHRE",a-U IDATrsa \MȆHŔ76J$@$@FMysK3ȷF`  @ `T^L)E-`$@G{ 5D&p1!E~4)mN@*YdxRUsyx!>EFYB`\&] IHHŔu6? Z/-%ME7Te$Fk-RU}}L֬.`Tu a/~@HH ;6˔3^|H\\'X$l"eL&*bT.&ITH}VT)"#!gZ"oXNLUs_[v +M$PV G$(ܶXqW E,,'cE5"z`]] /[񓮵{z^(?퍑{KbrKْX,'N:Pqu!QBjʆS2jOZKQ`K~8Ys>.YJvՊQr"*I:%r ]Tz47Zc͑RU^l<`DQ gǵA+"Yq-'IGu%}5䂊/j}}lɌ7drG }X,Ҵmzzz:>h>iUW @!B[zd]]mX*aj9|PO9x&Xb@D?4d7E%,jCjJP!=RD}_䯳 :3\XLM~FX5.^J]+MuPSV`_ײ([B$,M֬u7QdR6rֽY kHHHu?އ<5< X:#Tk ҵ%|e9,dN~*Uf $Zf% nUo&B(NA\AT* 7\U RQu9y86ui~P uڨ*_bfӟ#<$2 $+WgO4iJRQ|xbI XXw֙ 5=߀hZXbrbR Jw? SV{Jyq1u϶^H͸‚oW+,.ݯTz f(KNKmb_\r8+(eYXRH`I-5ZdTGc,RYٻi wf%I K``X:@!Ks *>T\ #^J;LUM-Fש !Ƒ ZkjvA.x[ hʨi"!؄-<9Ēf7LH-*H L6e QY?#Uѭ7^{9TlXù+ )JkH؂eo>Ď=np笀E%(Lֽ{JJ5 7 x:?쎖AF$vݳ {Wo-*)%( ˮDE Y֢b@]hBw'!~@#E>rQز%[ {İd#H8K 14zD$g֥KJ%\ o$ky 2QLR q۬3āh{C^/]/]~ Ql顥uũQ_Y̏-0KMpFď}B_/+`\5H!7dgDsFԗyHH,e˖uF9,QuSTTnUK˜Ax^t^ޯ$QD& Ȟm˔3nA$@.A*/\^vZ$FWj̋[rWל#qǖH"c"i p'Ç˹sܩά+ ŊI"E殺wy. pE* hQ1 89&r"#M](99683,E;]ݦy^$@J@3`_,s$C7_KHBb)Y7ʅ;$)BF  8ͯdɒ-^q\DvUD$@Ab0nIGW>*mBŸ%)!^,*HH h3R\y=7b,:&N[#)7lzbIMPLIGO'Or*P,VJU x$ܿrjx :)W!ϥ@PY10  RIO>gIHHHHŔt2H$@$@$@$@$|SgIHHHHŔt2H$@$@$@$@$|SgIHHHHyA'$@$)VTl"E*k"IIc{$bgɯb 0w8$>>VܤV@@="VNOcI\V 8#Q* :/F`ON˦'(M$Eտz\zAeR%Jk^+Ϥ≊XQL$@$(\X? /W$V9'>*2'+E%& ZGRc1 d<}\T%U|־l۲Y31 @a࣪{' ",EKK`j;Qc/MiAɪK%*ꢔ,_U+-2E&&K:US#l22$ +r`]HH0`}XS#`P#:ƔHH PLc$@$,F *HzIfMue9l(9H܇ŔkJ$@Ch)Zrצ;3L!_n,~&((PFZ4k.*9p,ZD֬]/ػ剉{m"%@1}˖ \~wŊˑ'T(1 jT!>2P.^Q?'Wұ4|;rDD\` "Ed1?5m`" O%@1=v .IB2 $i_'];;dC[$5@F+StjwjDVQ9u,X\D<$IN=kEu;VφKXD9ȩxeSi`xG5b`a8x8M\.?}F6mK A?"~4D O~E@WR_vȧ_|]Ywn,y|$@$lS&HHhܺ嵩Ro^zu,1{ƜӤ¢\;T\IkwFP[wl'U*Va0yQdtM ޻ZWߏaabUw8gOSy9z3J%y2y yYdi n##egV-kLԯs5_PzHٶc5jTXU5С;ж̲ط9O+.뗇R HObcHiupeZ [r TeΟf-|;*ʖ~ҦUKy=E^x)ֹ IҾ][aCs{pnC$L¸+G=39ie1H͟^e$@$sNv"yx @Hi_8&$&vmZYPڤ?11)MHߴE"eu0^Vb"&&VJ(KT׾;ZfO\ZGw蠩v/ŏDY&M,C ժi8ڄ}hwQS n9iuw )" hekU#HTtq}1g?tD  ps˿RXtkSOIMڵqYvšˇGKUǎ3RbEKJY4_͚5_rZp5eˤC~XlB m׋+&ϜBe A#S~,>)E9 8YL$@r ȍ;Vv8vvYulѥ"+u__fjB@K3gk`2oU։S7dgğ$Ya?p@|烴}]iq^9)yIH ? 4(H=e|~2G!!жSV=7` ,8gCPN! 8 & p+>V?xh.gw (47Sdg\6],XQ`/Rvخ/$%,V=SH܁Ŕ;H$@D*^9]lFBb*"TK ȏ=D$@$@$@$@$@ PLqL @.PL/!     )     \@%$@$@$@$@$@$@11@$@$@$@$@$@ @1 hHHHHH(8HHHHHH (r H >{77ڞmv `;{rڶ{˖ \KΝB rY6mڵ4,88X  kז0aݻ׼WjUׯ/_^=*cƌ0ʐ #rW^=2e<2k,yGܯ[nr:tL:Uz!Zc-_\ "PG<$@$ X``JyG?$@$>r% /IIIuV#J(aZݨQ#?$$$Ȏ;̙3Ureo͚5潅 J:u%HrO*x% @^p݋p)VɹsҲ=zb4n8cի;vD$@%@syviJv$@$@ȱ[^V{po'N>A$@$@r "b]yk  !@!5]͆ rcI2#|{lPHw$@$=(R     'r"LE$Jhrp.J9Ί9IH 5$$DH®O$@$@$@$@$@nE$ϟwJ$@$@HV)OUH<%000]On(F$獽6 @AݻW+VP}HHHHHH#X.]*aaa6H&@{ G?$@$@,e˖% pTl  khhW(7MIHer-JV6$@$@ >\Ν;h~# 7&@ wN$@$@.G\B$@K*tZrJIH\ŔkB$@$@$@h#IDAT$@$F(ܨXU guY$VRyǫIH TaO$@^IB+& #@1a 8J)GI9?D  @1UyO ZR^l8 x )T6HQN9J9(Ñ )W փHHHHHPLUw$@$hrמcIH2'@1A$'  \5:^H$9(/i_,HHPLyޗHPPX:$@$@$(\XA #@A|ִJ9)K$ pS r`5HHH PL|$@O9irGB$@$(\gX/ pkRn}< C(L$@G֩9TJ  w"@1Nź 0 93^A$@$(ܵXo p9R.% @W,H :XRH9ƉHH<Փö 4($N&  .LyW$@"@Tl( \ +^D$@$(ܾ  !@Au%g̸]HH\Ŕ+F$b(R;B&C$@$PH( (\uauhK$@$@$@$@$@"ЩG,;w.W"     V<[{&    <$@$@$@$@$@Jb[{&    ֛'|qݺuѣGˮ]az'7|SΜ9i2/]t[nEɓe(Cٲe;voFgO8^gرc3mA|stV{ycj۶w>$$$\[nrm+%0{)E6o,SNdo,zv(QBx >}^ڰĸ|߰aL6Ms^:tҩS6ˀv!&L{z%g4:/<qFϏKҥ?Zhxvώ {93fmiʕ2qD\뮻M6RhQ9|/Y]<#s;z=j^z%;SZn-%K4a^uVOƙe۲{vd5aC)Zxqr kYH2<<Lbbb2%,X)bŇ>bQkFʕ+'kڇ+ #rJ`oȑ#͛ˊ+LJۖ2x~Zha,&S䢅r{nW#sν⭧zJᄡ2ˇ> _ʟ7&g=;7nl,NXAoQ֭[g̙3I&ވXVV' fFd>d+ޖrh׮@gS{ζ;l<)\xdA٤ *˯n 6Y ȡCG{|@!1?aӱӯ_?2eǧ_po-[ʲe˼y]6So&'NǶ‰72ˇ WvƳqp?Â2ex%gg<;EaÆM7ݔ6,`\{[ 8cGɇ~h䰔 a.P)gGfy _7k-*VᐭYf>ƳsY' Yxvߍn`E+X-elƓn~n8l{C`MoM—mOOV/.חÇn1]&9V#M6M{b~TfY  }ʕ|>͙3'Ϭb .VWo嚾ݎ>;poi[0~{0jgvTVgǏ?h8ꍿ⮸0.a`gc,$$D~'t@fy¢*~ zX{0Wj>a}h"wJ*c=f\9AEw|7[2Y}:Iݏ K˔W?5kdi3|xرc}=j2?Tinժ\Ur4|ї.]Jѷo_> ر$ tB[%e>;nfU$#|w)/ @EaLg (X طoټmV+VAog3!=XQ}AGgz;c[z&g 3*'xkop˟7ZK1@` @1}k;=ۊ&Av}/Z a9df?*;Gہ[#e0 +jHX',MĖɇat%5jHj%&HX}g,UHkذY}8F5>˼so{o*Uo֬Y P%ϱ#τ̮3 3R dLqˈ3Y:Fώ 9&~lVV<3g}=CXkrw=3߇[oi(yW5"]&]αU>wDJ(|j%M3ehKz\wuf5 7VٮŤ{zGª>Cb nd۰d+c~ʎ>;FeƸ-Xl|~ph\Yucm63?VVx6 SL]I=gxق DnX%VV&dLwM&8` Ģ GfyE0.Cv !` ƍ3npm0wr=7WV߇<;|Krq~Bt⁄Uy*>|x8?,`Rw0kXʘe!<䘮&3 2+r# :#|@&`4{l"#q(>R01. gK{w$L~hx#:X{[hPv<{aMAg܉X=&br@VLm5x y<1@B x!s[/4a}!b"*xcN cf+CGwGl])=[D$@$@$@$@$@N$ЩG?Y`)(E x)kHHHHH(E x)kHHHHH(E xDN L$@$@$@$@$@$@)^钒angn+<zǐ0 @a'/)3{?.Hu豯dnQvprSf^:ג 8N %]HYɭB 2N5(WaQ5$@$@$@$@$@C '4{ib /f$r+lvZQu5!    9N?̄Y縉pIENDB`taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/docs/source/imgs/data_inspector.png000066400000000000000000001427321514602004300316030ustar00rootroot00000000000000PNG  IHDRQtfm pHYs+ IDATx^y|T8s'¾#MeU@A.@^@%jj}i-*+Zb [AEe,AA%d3ǕasrrO?޳<9gY;v !z u!2~65 i  гbZUTUU"ښObia hZ XP,OHqЋ [gメ2 `@m9x!<.; 4`K^UUU[OUT6ͣo׮# [[]U'O  S*N/Bhw[v{#}kָ/-+?UQa.w Jz@ްߊ׫WzeEEQQ7ݨk 466ÇO xkۮ B(!!mv@^CM/:yrz<>}+^}={]Z˜_܍z퍿 jۮ7ۿ]kڽk׾}Zjz˜___c}^zǫWt(BC/2p@?_v-o^\\ EM}wl36|pԥsc:xHc:Uٳu7|)A`bam'lHLLxE>Z}az*G~R0 @ +o1~^wzO;[zsq[B7|WRZzŸ"_3!Nul)>7?{^/1p@Ąow6@!4! }|Öf/Aͽ~m߷;w?X֟ n ߣeE3]1ui?+Ǎkj}u&}%{ x[7&s#G k{&~ryc~Տ?X߻s,g?f+gC=\7o ukg֌g?PZ6O/|uiv#B^~Ќo[vCn;k,^ҽ[7s&r釾/__~ 㦚q[da>(1l}Ͻ?=m7}#G nl^M8n_]4u/⼍]BI+I^3Ʃ))BڵBc_&O}ǃ,gտ>89ǎ ҩsNtϺҲ2Pi_hо}MmmmmqDzB [+C.D8Xz6~Xѳg׮6D]\[ /74B =М{B~f'cҪURRR ͳ9l1P?Ֆ/2hݶ}GT_cO|8w謀n:U:%%99!Ԯm@9 vu۶?'"#~ޗVfG 0k {{<7ԳgϪʊo>} qqqNhƋ> о]MMcF7mG2ǃq[H(.4!#:thO'/׷m4PcUm#[[~v%C.4-11%B=vCs~qMKK˸=bon|"֪vgvnmy0x0χ 5oSrt㮪=$blNJc [_k>)[n"_msJʶmW[+Vf-;۾66-/=ϜY~ h?'$$7gf8[-y񥅏>ܭk|yO^st]t>O?Wyɗ_}f Dc.-C7 ?< Ær/BuuusF1%mSi+Tߔ{NϘi믽c&G]᭪jyOu]5M|?{5۝z^w x<$MӌF ?TqTmmmbb;TW755!MGHG{P֍HV=~]v\N4|{>=|?k|p?3hРgyfy~ӟ3ԩS>J***{: Kp@%;v0||>]g͚e>!qXt ^xm MrssUkܹsCj u===Xk5d]i3233;hLV{>~x{G,+))yJJJ222tgB皷w8ɒ%K̇,g8;AmЁ|`Rz~8y!OOHA} i_ۅE`GBLG%X4 Zk|q{a @LP]\ k_o![uT nbl 4ÞbVCA| 5OLqx~uks?>۷OөSÇ#.9sO_Zvm̅vm_۶mstO^QQqԩѣGӖniiiΝ于xy ;' ~]%glh}k׮2hРӧnܸ\N:>|x4f̘K,1~ugo|iĈ۷o'7Ν;_~=8q;s!Km~'j&ϧY' Bu m)3u7/9]cȲwm۶s=_|EsssnfϞݵkגe˖A5!ϟ~n[n1s7x!Էoߺ 666"v횔t!3fۅ}РA{yGzn۶iΜ9k֬ꫯ8|#.?4 LHs&"Q .`s6Ee_#ƫeuUV\pAbb͛B_|E^Z~fȑ#ۛѷoߥg^x!Bh#G^PPF뺾{n_YYy: >|Æ UUUͫWˌ,$''BF2b0l۶~0asohhظqc (**СCϞ==ϗ_~޽{9bܹsIIsyyy֭SSS2wzl > 7#J)gh񤥥ֶk׮uMMMZ>EǏ1&%%ׇ2hZ9p>z믿>|#GjF<`k6%%(`fTNNڹsgP׮][Vi۶mUUsuuINNF[:È#.]gMWWWߕRSS+++URRܾm }Js6 W1HwpQԞc7lذǏ{ފ\O8g2dȔ)SB@ x<}۵kWyyyyyyrrܹs_xᅃ&$$<~w";v,[LGy\۵kgkjj:t9>}ߌйO=@PMMM 444$&&"t]zq^Amiwp (1EkA oƎ;cƌ/^}qqq^wަ򩩩UUUg.]+밧Oѣ '98rĉ'/ߎ=9rdC 0)k׮}5޽{ݍ]O0xxԩ۶mk]9rd ѣG=ϨQ4Mׯ_zzqK.ϝ;w>}3gU.P <ӧ;4+w5 \x͛ Ի7yI&555.[l׮]@ K/͜9njnn޽{w𓶆;v92++/0v0'OOz4gsYx[o۷_WToƷ~!tԩ7>㕕;vhyyyv[SSSyy֭[ٳkkkz֭ڵ{G5M+((?qEB/m6_Yf͘1$/Bh/((@]tE'p^n">l4mڼysQZ 8} K;od_ne]v]hQ\\B୾'n@Y7_HY⊢(L~ @t;vjk Y0e_Ε`@nKfffNvv͓ZK]#Y-_kyDBJ)dϧ+wyግol˯ݺu3>/1GI!2 _g8B3 ZaC_@;W'ء3 ;*!4XN&v~KKK"#Hp/{D {+V,_KETKQ8*$ nW)p-/V'N`U;,M,fY H0Ad n(l޴Fx\ZJƍ_  ~<7j>>B`GEnJJJ222GIYt:lI($r ~;?vNKΦ- G+O]1581̲j(M=m0!fap-܋&n_>o}U| axpH Sh9Noq-\θaezzzzz>@} lpXU`M^#8yӸqc#G V($2WKXƶGX;9 z̫u}֬Y dLԺ1#Fv|RzzOPvvv6mGC؂&OzZ"rtw\}l;Xm|`Gc w`}y+q>9L $ԍ|Ho̘1Q|7p֞/))[n1:t_m>ADױNo۳]`?Hυ18SR%Oi-5sѣ'Le˖߿7xi[l4h믿>q7~?++q{ww7cƌ!Cx#Go[`AZZǢoIII*3f̈[bBh}g}6zɓ'?8>xjЕW^9eʔ 6455:wÇیS|||{xѣ|͏!4jԨ.쩧B-,,ܽ{q}͛e& -^[:III?Zݻ{}_}%  " k׮@ k.]kjj.첤M6ofذa͚}嗺8pСC ~HUjhh8}%c&%%?~<;..nݺuMMMeeeǽ{777۷It]߽{ﯬ<~xc(۶mB*--ݸqcCCCSS훜ܡC-[ׯ߾}߯_?А!C6mԳgτc;r^IIČoOL ^IȁPȶ/ ?iӦ̙3G'NoM{{)*={L>$Gz덃555"@ iiƩZpUU齉iiiӦM:u*B(..nϞ=.3HMM5!SSSnmmmpS]]Z8lۂB麾x;n׮]kDJHHWǶmܺ\}:u4uΝ;#v 8q!}|G qDZMO8xڷor ߿ i _q3aB]KKL&I#3(M6|pMvڕԤi-2f̘@ Gmذ! wƳiyRSSӽ{wgcl:O?mܐ :x /зo?㡛HUꪚm0#BBsώ;-[#<:z-W6۷o鉉w9z4--ew~jYYYAAnݺsmsl]pE8E( u#kCt¿۳gϚzk߾%F0`@VVŋ'NثWH1nGӧ{2v×^zin4MO~g9sL=G۶m6mZRRiݻwOLLСC۶mB}v;Un+V|;#!!!55 ><$讹t1??k5^l۶m۴iӫW/sݻw_zݻwx<&L@%:takС2-++3%%%~MRR1>}\x}T/NL 5$$$KӴSN%$$9r!4a„֭[?~1999M-޽{ˑ#G:vاO}}w?Ow7a㭐ƞUV  ?;G0Y߿]vE]~6l;z袢k+om޼yΜ9/~뭷 {y%$$l޼9x?>}-?w޹!tĉW^y%--JNNnhhO:Znݣ>zUfΜ!o߾iӦ_9rdVVVMM_|ѥKs!Fs?mڴi׮]lْ&''WTToinn6 ?~|ժUϏ_n]aa!BHKqӦM1>Gs= .7k׮:{ Ϟ=(#,cX!ȑ:PAAW\6mʕ+B'Ou=hALLq1mO$iliB8K/y{ǏzӍ#GHC-]7Xݾ4MNNN6L?w˹֭[JJJJJJdܮ/l_˵xeָav.Y<B|ucȿ!jdpZ>jQI!&O @|ACر͛B HMLΝ;7ꊏӧρ~5\SVVf{<_W/D^:Eeq;۳;wDɡHKEn|Xw뭷fgg~Й3gϾ*11x{D&/s hv!tĉz\"87ĥGk?+ :o[ p;?kB$+o@=_޽뮗_~5+--ҥˡCBݺu3^`hll|Gv}qno?/VKp s3nyO$Iw#N%n|D9saϿ[nݱc1c {Pƭ>6v{ XRQ7r\?#"}I&o ;wΝ;OO?(b؃ /ѩm|`re҈[IxcCR%Nz{7|&VZjHw+[v{Qzfe҈'j dBѷ8nP ~;3!``҈* "T7r>\Cs)q(FB&DΟ$ce}-=pv+Z  {, C K8ii8~Ik>/77|1v]U?mۋ*vYRK9 ~,`8H^^sssynDf#{>>qz:q-#\y4V̞ ؑ0TLu]OOOӧ3Ξ9G?h-`wz܁ ˞K'jh 1ӷ*j.77v 9/jx`CŽm:P;02I,F<<|pˇURR21#IS6 "n3No;ٸ7L K2>'Xa\J,Y>xrg@ m<-<+Z&aHa'%4 aXڱswNrdÇbuχ79=|NOyv8rr;E 7=$E,9CoҥC0t1iĭ|~ %aHa'I_.|s5"BN/O뉱>V;C)X F\ >QcEX DBOD O>TfffvvvM9o$wYx0TR,{>f$*%%%:Be3njv\ >c43*V7OQ';_K"e\W (KȀ:d=R5= l08TǝKؙ /||O@ :UC=:b `>nyZZ VHb+TEhgFAb} {&=_8QW2tx?^D@n1-E{ Xd. V,b pu9m|M…g?$Rd?TuB&p<;vJ-EB zK9GF{H`g1"!€ŤUNwK!} tawԁ 8o_7<[.X![LJ,l1iSeIp$XY0{h4yWۧ+d؎RPt1-9#i'#%E~-IYjp$1II#.d᱅nyvM,>$pϧ2OIGXY}DZ G wb!{N#B&i$#VZ.?iE' Z&|ƆAiZ#0Z'Vm $&(!4M/7JLF |9ٕ62сKyqg <[NgyD&x(!CnE؞dbF\a`8bEk$, @KX3 XQafK`HCѷ@@HH 8 SbhnXJjÁš&i$#H|N ;uQGU$&(A b:oN#=CbWo8L}3[!dc `Iq#,H*CD;D};j-VXh kqɹ*̖͑loNaՂ$!b/9ή8dΡ lc. oe&4f~9+*l 90M~_~=322B&$$׿^b?'}S|Ӹ?KVyx Roydg|d?f="+Z`scѣG\\ܗ_~ԴvځivqÇDxpZ3(y.{D0I!됲:1Q ѥKb:>}8RWWq]~u]jժ`E{>M6 F10}XU9]L6SFL[3>!ڈg#;DPܨp˳"_ps$[AՉ9k֬ l>}:111Ϥ?۴i3o޼W_}pرE"_ԥ*{8$LمӗS&+3eNRnI(0O T7QjqƬk׮ ڵ+)) ׯѣG9M.㔰=1B\ Wqˇ\a2<?if*n7 ꗧX19s+z&M:tPmmm׮]gϞz{ݮ];PϞ=۷o_ZZjTvY1.dm-mÁbՎ)7D#b(@Mղ6/xƫ-[쮻1cFQQѲeB)))4pڵgΜɩ6j *hnK?Z7!&0iD~# (瑲:1A [ǎ[hQ,\?C+fglbw&p˳El;G- QCD-0#K%Ⅱa>b|C>l mXⶏ[ JUnyVDnKեĽk6|H>rۇ`;P6 -ZVԼ.QPrÇO1t]5/?pb. GB߂ iSdbCL=x-CR CM+I.L_,@iRҵW#|yj[Чk}Rwq˳%k#25Dĝ̭Jt}֬Y$οGw|M\F?a>X 7Hö6]QvrnTY/rrjL1̑ vTRRr{F@8|[$URR21#!t K$k˳('B܂<Y U"G3Q !Ƽ#ly-Qv5nyvsYl҈;epTsY"d()!c؃a c+` 8X2HLq-ϐMl)"vmD8A؞O-)-z֜[d21+sX CUTjE˟BD٠7C[)1{(J5H!}\3_􉐵j"'mgH`|>A1{u1Enu 41T!&`2 Y"d1O蟅bK|R+&0Ї_pĢOUH,%OrlJ\ D|\95=˘n˔ }[-|cilIhـ]Y"d( ݨ[|ynn.mjnAa {E8 Va&"򋊬 0!_npĝ vMF ;pSaڱ lcVa LIdI)A`U/N], !|< 0%pNb|lrzlsw'Ɛ,ZQ9 =ҨXIcp=l8mL ubcF'?B dsMVvIH̞ϕ#Jm.CVXO6v)W!"q">ei,Zh_.!g`j3 0pr&C"!VaA&zOYҳ \j¢wmYb|yti DH΅C4&yd'S$YF )S]I)Kw:<"-ER m81SJDc8I L9*$G6dX!=F.00{1fsVffMƍ;vs7".0s3?Dġ"r9dՊj,'܆ `HZdq*, (7 k2 "„~k yyyKrrz8A2=cAڌC66ɓ'$;!2$ê ݃o*'FL"ތQ$-IilmR騔 $&O5DP4G̰eۉ#`羑v_FQqH ܽny()bg'U !K%: |MÓ@ QbuU8DY]Af~Ta~ӗ *su- 8BG}Md2В␲s]Я:JB:eH9hES#/L$,-e`$"vA>Va . &)5j'mTaBT|;;|-E?;|Q$pXcvT113ŰS"kUH9"Ky D$JL3rVF0 I L_ԃB8" gVBPl~*Byyy˗/͵_E*/̐Lt+q7;l Z9grˀ,xY9T$G%BVl8]-&G5VK"!jj4!H+T%` #.9܀U^K233s=6 $Oǡ8d͡ ܾ ہrDe'_V. ] i꺃_u+))#Tf>F3pP(9ģqsaUFbY#fA~2gJA&t\BԐq6pAؽ ?aXt5/XQl,#5Y UY0zB;k,Z:;,OX4iҴi233Br-cƌ }ц "r*@RVkY8ILB *b!}s`gu)y睚5jԀ~(Pk|>>7M'^F YL~#6e&8w(\jQ'崋mݻ7 0_aÆڲGt5o)M<+` 5 Xф% 6dR d %bՎ(L'h/l̮tb „ns ,4nv4-)i S&0|gΜILL4~NLL4>ɚ5k̇a||,uiKa%U9LujajϚq"qw4ASAU3| /SUZZڥKnݺ/=E7n/`;eh!ʶ&U. 'H߈d?F$vV̹>}lsk*K^0|W_}u֭;v8fe-8>Zn8>}`G$R54X㝩}1Pxm% 8FA&h & Iasξ}>~O?ݿ2/oENWclįUAtK&X]+b0!Xxӗn%΋$| :ʞoܹ\jժUBD: ɄG q*4A Z qȴ { kQamDb_ArC M]Htbwda*c~IZkƍ;v B$Dv~ɨO`?A#Nm EP QrX!"KSKd]ӈrpSky^yŕ*XON`8bX0W-Y:"K;4iZ#h"s7h$O |rߤ4ID ʶD 'H[P>w6S{{ZXPtjg){5l-Zc7*i&;Q"-NFA&(׉%K] G|A89ȾcuU'icK4qWc(! 6*Lf򰟚Au4ʘ7hrnsbq(r>ȧGULb>h6>+a9? -u g։5Hְ s{גBIDR{A:/m"X]`|Xf}d-pNS,% ED6Dl&흘=XͫT&#s  +kZ6nq"f@hZ#Hm~l5܈9.%aQ4T G<} Se)r.fK/ ܭw$R+Z$4` jT|4>H g&S8S\"CnCD[9 *LP9uuaبS!R$:b {haŌVaa8 iQ ,6Zwj'qO͠\[{磟`VI *ml17;tʐaDEȓh{]:֠b/\<J$DvD}5s0DN4Œp°SxMȺQCVK:nXl(%9vhh( LE}%0`ș4"9%aK̈́sW.;nox67 8 #M/XcvM6 ϑ-cxmp" 4pidբDNB6]9ށh\|ń\GXcU'ic+4Mga&<j'ljQNJ b0Źw{>i-&>ȧGULb>n6 !kkĄDրuQw-lٔ|’ Kڡ!GR !Yd*O*l1 ,*&53M$ϔ,Y50|ش ^0ʜ,C&Q2!dm1!g@Z& D š5H +k8YdQedQK<+LV#X9ytIԹm iܩ0iIL*%u#P;&γ~NRu'vn(763`U F%,բDTQ(T\|@T۾7Q.LR%ͼ˗Zo,4#,gdYxdei!>,\r:|Ϛ5|h-z5aUx1o%۷aX0역Fֲ|u]lq_1n/IeZ0&-b5U3~"fRyyyCIŀK<Uf3=1 I#2Sed\w$'sX%0 @ibtV8Gcu==z7vѡ#qZlNp_FФ(1v9aK,#Zl($LqH5~{>Rfffvvi3J_մtKr&m` #"4K)xEqEY ;GaJ7HU E3M]&8oG91TRRaüAL-͔9Qi fwƵ|ԍlHX4ur1[CЮ)pDug*ĩ!j8n %`fIpKP'KqEYn d$okE?D 1'ŞOfi-dضY*lgTO%%pL2bدZFy"A͘Ե,#Zꢟp$ŞO"CqRUOIɧD(&a3iDfR-BϷpJcHD^:M51]q< O{SN pJ:ޅ'W&MXѴ\.%qj)P5qCJߞا#w5;A'5. $m` 壆 ^1!",~)' U+>`Lߞ~n\)찬[~n٬ ZΉr>`2'*MQ2myD34u'bw5LaaU?~{> u&h +VXj00kLz!h[2`߽BqEY=i>&;-XY(EX%+W^gҥKaa[oUQQa*0a„ &n߾}ŊA)|"&߹;hL߹ɖj4(74Dpa/4FZE5xSN :k4um"h38 BV-OFӴ_k׮Ͽ222^y?O /m4m„ K,1n.~{>#t}"&|hᏲFK*{\T$ę?J#ITaNEEaT|.]?766VVVv!޽{ccUW]5z躺UVݻ8op8hɺ>=*dp m`( Cz(`"k,~.pT% )3)S?l;8B(>>!?۴iӥK{좋.կ~O9sqO[9725\ByTQ3|u~|[i:GTD]!LpBQ4#CS}: F[5k?F(p?z%%%[lA߿gϞCc$%f,8k %-_|Inn.?*"/- pKP& ,726d(!k׮ ڵ+)) -//oݺu^Y=('R,eXUqUrc>ana8tI1Z-J Ž2"4Y[ގSV\\|̙+N4СC]v={=qDUUu]iڥ^zQ"vIg>)vXi\"?r2?f&#҉ɓ 1.I\n2+{-[v]w͘1hٲe^{;sҤIeeeZ_N{>c Yt}L ֬avuƷ%"„NIscǎ-Z(ȁ.\h\^^sυ5kGac1~IΤ ]~-ɟ,YdEdDA?}XܒIE >oECg gwqndhֹhMuyTfhF"kz&F384u݇JĝV-ϙ$#2J$e#H~,p~KacbZ O,BZ@HF1oK|b:>41 #*)|ҢE-#e}Y*ppbصZ WH}EE M]""q4v G3 uqp8k_IQVvEت9YLP(/&2iDf\9}N&űۤ}>%Ƣ%nt5kX@iT³s[ fD(OTQcg_>cKAj:bCN= piX\!m`( ?Y+2~8FgrpKSaa=ĸs#2cS7RI3ug9B>9-O:χ]0}qigMa"DRA}8e %mHhᓠ$O8BIJ܀0܆ON㓗d\&O0b'-Yαe$π5kX|6i  n^ V@ "fhGA"l&B 9Y_Q1GܮS$E߂5 myU +漼%99W:]XǍ,lB拠>_학 > Ud`n&DEqEbY@J2JQ3wCYaX\5Ţ_8ѬsњpZCo)kYfhRENyEǞwMD@& ]J6Y`!la2Ǥ F$( d-~Kڋu+xu2 a;>M =MaRܦ /#G'lZl7l VSlV'yy/vI!bDYe *8䍁[@>_4盘a $E߂5&A1l rb;Y j VaJMCb1>o#,2T)=Tó"ZqhZt$ g8B@ lvayF9_KJ/ IDATRÛy/Ҋ1vSæSJ拉͒0&Š$^7HhcAQ"F#lF')$v:]R,Bzɢ^ xgYؼarE#;B|RG$EvC!z H#¢}] GEtaH73&y^!=CvF\KX."˾XYᨖ2¡3]b5.9=,uC dH1X;A9l؈,%=P𱄲ɡY0Pd3e@5`wFZıkܖ$$a!"̖B1R9oId8Wz41^06^`:j0a04qH1X;A9 r{*KfR Hf@D/&$<L$5 ځF`b謟"we]H!;|R/I$Ev H( t"iDLp8R8D%Gb~Ftd1irM7QC)I^Az[K xJ* ɴ2+$@vP7 &l`24"Wds~ ^ղό /%ʈIKfGku~bLq`=FULa GpH5˱kܖ$ѩiiz$H& ɶҩ|r-_xʕ+G%bPRiww,tDh!`[rsUe֬Y}=Гm ;@'0 n7`=z<?pAAAaa 9YJ%h9ja'`ZZm`׀PRm F_zX=N1N!lvgʕeeek׮8psT' 5(Kn@*Hd*Nh%$ H#b2qmqrIKn,K%<5_zzzQQѣG[jpVZfdgQ5 a|qM>򲺂vj_r)DYDg8$F;쾷XUU}]YYp?B͛7/3g ') ũ嶉tpAe$}R Ti6;A9l$Y'd!Db?8&5_yyѾx<555 #E^d6ҋրYG|Q[('Ǹ(㊴]e>󩪚k,uj`גb)o߾mح;~P6mymI"HTP$Zyyyqzs"}TCkЄ"` |*!fLOvD O|6[<ڲeЩPO^/Mo/ٸC WB1W }QvܹI$RaY:,љ8%l"+c5o˖-]t={v]]ݲec<GyEHHȵbjs2"f Fq=)l-[:XprEhaC-\p…ƭzaADUqDlTG{SbEQG#vl "$k& &l`I14REĩԂgu,$,Z5O6C:Z%R:a8q>03揔 L5 R9rIA x g>M5*d:0=.2^qbI4IcAa(5hS`=}I1pi1^0VF_a] ;(5KA_x #Ϸ5nu(G4"& 0*= B H(CsqG6Ϡ D} ̯# 02Π jȎ)r'_$)6Cu'"$@2_xp Sa~q\(!cu,,Yeu"!ĩ1/ bq,d:y:qlq]'Te`?k#!,PB)= o:Ϸ\UGi16s,,#p">^̥S1R1[ܼsKTeAAA?zD/* 1=.2^qoPg5Zմ2+ڠ0q"ѰG@ 0*;;<@pl(Wk̐]`Mr-02-"|i&N!EX. T;D R!9BDDSŒӃ s)הڌֵ)$Jǒ6s} dBTYo\O3a\>}1`j$G|'O7DZdURČ>)E0/ NK_'`rf?X\WR,Eb"=zI<\)9!%|{ŝbR1% UH|\Y%KrwvTD ,'FzD#Z^46!R1{fFFٴzduu$Q U$ZM+JxIcXdE/fq LeDDdو4" rYJu͟6G a6JPE#Jnjɛ+k r 6  *l`evbc&1N!őLrjAǘbAjȵǜ}R`Bj6qZh|%+X"`i`Kk>(ȶSqdov0USL 48`rbߣD$ *fME j'ўP"c4B{\e4٦?-Q"RD19&\z!b^2񆸫Ll-:([yaXVrTG#`Qj>/"ؔ8IV1FAq H(TшRa6aHlڧ<hؗBg@|Cאd&c/@gƥSIX#w|:SI1K$@`tvqFR BdS#WY ~6OMH{Iq14R^BRld4c63U7["Q&Mdf3:R9r=d,qʈ .:QI'FJ4 RbhpXsrD%Jdžۄ# oC09^Y]>lxI-x;K^-R1^SL0NjA*DY'":T3DuJP݂+ZRa6a0ZѲ# 6ש*̖YG ,̔X#Qj>ƏqXEaӌq! N̨lPW$ mt!" ؏6 *Qj>zцb/ncX4$]lETd5T\IB{R6FS )YAFR #C̠-N qbN0y0yM:1)>#xVs`>ˇ #R%#޼ou.TCc/ 4 >"J1R@"D҉H#ܿ] K)%rqb+ZTfaH;$Zk7& b> Lsd0[>fqn5qB@C4E54 ^mVZ }`ʊ?X]P-ĜQ TfaH11aQ¸N X;l}I'c8Ejҭ)F|l";(J1 RRs[YJdD \92ClS 4$ U@|G?e>L91H(iI )"D~^^(^7''Ǹ:$Ώ(T:t0y䌌C͟?ԩS#j֬_?-,&Q F_ ,42^lUU333;wluď1LSp^2S}E>}~裏ٳ';;xBI&jA|O[8N'T0DQnnC CYGҠ1^J$ U#]aY~V'k.>>~555K,ٳgJJ~8p x{kG/|ޘD/P⾪f%ēKob>\-QP- WLGoᢐo(**Ҿ.))IKK > 555++>kP |["H uo f17"1I4^zRj^,9c;9@bbbUUJs쯾̙3P5U6P>b#6Hտ&FHM5@A-ZP={lԨQuu+"11q@5%a]AEYaT;@RDrH#6x@ UQe``<'e,%äut1fnG1LSHկ\/PQQQyyA6l0znzȑ~JH8W~XzO|aES1 )Dh #:d%m* m_81PmN}ݩSN8wESQrʊ ퟮqTCڲ+{bG.f({躄naO6.̾Gڎ92gΜ-{}ǂ { T9oIAJ#'o1X ^$DhވD^Λ׹ovEo* 醽sf4l->ń Tcuό1/cP <H|>UU'kNkӅB Vm#f:ܷAЍ)ow]k"348EjI(R|엄AwdjLïX$"JQv2$}a_k]DfH#WyFK0aP7(T Tcz<sssΝ(ʬY xq0i#rjW7ҷRۏގMÐ3YG|a Rx+J 䊚/JsJO VøGM"TD!R$Qnnnܹ%Ҿ%KSIf];6ŀ\:9'TTю5_X mRC<].f({ vR@hD2=x$ J8_|%I$F쌈+|>ok8;eR4VMlRҜsga "yrh|Rb"rU8JD+3`)lG\vU`}ђ70NZh/ h xh!J!:DY&҈y vZV;CGѮ]-,/[оX_)k)d[j(/}\Q%B Ni'nD ;|@@?b;,%Nn7D/ "IR#O\Ţss>  aMNF,a3lz$..ڡC];45%C>:~Be]89y-?KNNuU}DHٶ}Ïkjko¸~W}ɧ 7nxʝv|LÏ z]hzOO ۑkue?%Xޖii74sf8%_҆IOou˄ݺvXwWO۞8y͛㥹n]v?٥eeC_ Yӟ}hmAgS70nɲnUޞ=0vLm*++X"ܜ$ _x_ii-O|'@LKxmm۴YkgYE){܂iHcPאּHCBthsGoD%HL4&M`kܸqFzƉ'xo^y_ z巫ڵm[ZZ̳_vg ;t٣iB7̙{ݺzʝL]]]jj^;RU&eWu$EQBGۨQY߻lyNQC=6oނfM>Y{;pP.w@ |Ijj潯^Qy@X]>O]UU<۽[\FYw#G-Z4b}7mػo{n0 !4Μm;v_zɽ~=VVV9){zV-]]N*@5%V Và Rʸ;.0F6sAl~/|w߬߆򓓓}s;^ҳyyGl7m{ʝޗ]moVi+]Uwo޽ڑ;vHO׾xm^zmh[]bMM;?qI[moڤz!vT__ϻ֭078H{^yŮ]W9K+nj٥ssS=V\\xHFzjjj/YZQQ1,Y3SPMRϜ9,Ӿ޽IT0.+))O"E쿼έ׶MkkЎ?/}+zݪu?Oԩ#G~iѢ9BHo#%wxyn:KzߴQ#O#OT'&&o2k(M+U,xx)V IDAT"e8APZ{J͆b )rE}3O۱qYoڬ|?:'ڵk/Begnٺ[s;k<8Vj o@~kׯ_lX1))q`B~n]TVUBW_׿ު%( \շO!׫G} ص{OI&uuuz-x̙Kq_,Z|ew}XqfоX^B﵁xB qw\apb}O1Sa6fMhѢňyDAPee㉏Ӷ2t@k.yŹ͚5ӶKLLYYU㳟u{>:iM\zI7|zԻF]7b%6oٴyKaemݺ-Jݹh+]dzg϶mz_^zПߣOxo7@ɓzؾsg+F}WL *%%~4 _SSJNַ+rСy^B\kΗ]#{KKKo0>ɓ@5#h J8x'}+J#'&F#&TUE4hiVzjc_~uuuMj6i2{>'N Ζ{<.S__|]:gUx+JBeee^:bصi-Z1B|נ eg"Vzu#G ta۵iMGyqC~}wջ/o};%P:k~GdOޗ_VQYw~ow7g]?f={!ʹ ?zMΙ{o}/zfPXt|X>Njv`Ԕwo뀲Oj^&ܘ~OC\f:]ݔ3gomߡm).>ީSG63[ :^ᮜIo5}ҶMk޻o[.R5T<4:38idA$4J;w<1W;t}vݑ%7j4{WYe6x6mzi۵x< qPmzJwI9t'~>?_{ggIIOn4fu٦uwnѢExáCgJKO H )xy74j䈋.jܨѰ_ ٱgP/3j$Bh`~C\wUDѣz_v)B]tQ3EQڷk;7oiڽ[ĄEQt9Paa{x?o~5$5%eZ%Ѓ}e|C?_xY ɍ9񎂽{O8Y^QjB))w\ 0*`A0mw ouei.!,-64n8[{[[[l?>ޗ_fۧC:|8߯)?i8kРk׮C>^%$&֫zC-^tʝ}ӧO~eeeƍo3Mֵn#}KCl*գˍSPV-;^!4~\V&M~q{ʫ:^A{k5#=[on|/}kM=Cqqq'N蓅ڇ`q}L{mٶsf_Ǻ+>Ȭ&q[Rl ?뿽oĵZf]cˑ#]7|xUuUM!T__ncMj֬d(3f?[vhk/2o޼3gCc1 = td[Do3H `SLbfc4dCxEj}foްo+40;"X/1/4u͗RQL+{7cgPbB >Y'ɀ%B *(,x<׏0Ive|1Ơ"ld[ѭcSHCMP2h)5 wq_~-[$GbTр1wv8*:"b^R˷\j0fB}\xڵ#DAI$ Dct0F¡7fFSUu͚5BEEEGmժU0N tq1 օج^L`Taqyh4 +11J2%%%F,E5chv4EAD.N"I!"p!iR>[!$E!yم/++K+|>ߪU.r^yyѾx<;n4YQqaA0qw)l=bjlziaB ~eAoi.|-^;v,##c6mho(KSf`A`NZ#A,Bt,³7XM#d kÇOMMmٲ#mѩ $bl=3A\Y;q~o˖-]t={v]]ݲei#6G.,%NBjGcD|^U1XD&xLY,J۷q=1j3gs… . i#wxwPJhBQR)z͔}"cjlz 'JS%)R04F%)AoTDBnkA%bs#ML%bqJOcD6Ogci6OPd7D0{S=H/Xz^qMRy~4'G|R,U J8Š'ict0-:Jk %UU;q]gџj>,(vKlVM//)DX]RxX;w\U|1jEMRqiD 9s"AdH18tE"dggC!wx=YVɒd#KYf"bBY.,DY؈II\2D%,;2{ՙq8QiqžG$.x!p_cT9'|?6Owj>G.,%NZH a4B|  N2K/ c>&MKB#;KМIL~ͺ%cyA`"5wIUZOiPc&'dec%72}]RdAO YVɒd#Q1  1=R\$ @!cB(2ά0.DُGؘ >>˸p2,/2{ 83k>ݰ&48#a#2}\Rf/*@CV V9rId,qRs܀1@/fșPf[v03b|`O$Q_405.6K aDq X5zOoPdc&',짐xGW$`R|b| K}>វ A A >!cBά0~<,l` s b2.1#hg`5DًM 5r8#a#M/U9r=d,qRs܀1@/fV9#SGoe3#VG ޥwP €q9wZ]HPaćq|> ׸exaޠ6K0NRO!-"i@?g)ga8Ez999ݮ!VGLᝅM/}YAq_Bz`Ѕı]U̸8gi3k> q_kD g)2ƌbdXXڌ377wܹ̚5˸MĪ*>$28#)}nk #4yh@˔ƭ#sNf,#%N@Jg>k睉F/‰^4seMB#28E@pJ{' ߿`k3DXlt! z{wU$.8t B:tȐ!=mvܹqܓ{02B@8 ǤD{ghߝi4BԬ}D%@ 0*;;kж/M1^W}"[̌0K2TYk>QM\-S3.2>Dƺy֬'U}Ep,?}Y W92( lAE#H5mVq-j̤[, P#\g^|-E\2R|jH$?қ;o^} !sf4Qh7#j>.K%>O#fIIGcL4l˜}4ȸUvqCaL{R)j>0jlpK^ g{N- cıkr`͇O#qD̨ùֱ0^E}"c4یAJj>4Ts`T㌄K\q.xt|oYw3-q2(YtOA!ڪM5x4I|KB:Du-yaЅ0q p5#_ K*NQG}Bw 7sD EJ%wɥS|o0+] c匬|Cn4~8>11XȒ17mB~#|oD|Q}y 28#ҩ08}R oγ/>/^.ڵ˸ W9&ˠ /iE((aܝ/ TjY͙'nD?{y>!T E5} 1HBZ .9Z7(͒H#UHF %''˺>W"l۾5u}䍛?.=-wڵb-_v&wUǟ|:x#BCv9Ho~S%%k.?^S"8y͛㥹kѽۍ7Mo~_}>pi8-vE#n;1+~o!.s\'Ngʛ쑢jڴc|Ͽ\v]rF׏}U>G~qQQ `Pr׻yg(\ނ6ng_->~\i)泏mȱc'#9;) RAQk۶g7veW^y_ z巫z!4kڻo߁F.Сg F!EQzoVSQ#o5!:ǎ!T=lH/c 91{e.pur~X*/󓅟?pKzMz{.D}ZJLL<{^,--;zo{<ڡ 8UrJߒRVV.x-<qY%%-(BѡCɓ'gdd:thN]#..nذa#FHMM=p_\\|n~33^b3*`+. ?>~WE%''?_:uXߛu9O=߅3*ػw񒥥;vHOGm۷f!]򫪪>xm^ܬ]6 kXS[tݻ5n!$I5_ؐjjj/YjtaՐϾ`>T̚q#PԾۇ pJghak{?^i}uuu[nOHhִ~qYz(sz ^ɓ"=հQ!ۧСsϔ.Y͙3gTUݶ}GZ GJNy&gJKƭ^VecRe~>gmܸqFF/СC{Opn9HL5Ht*$! ]}3O۱qYoڬ?C-Zd%AG٩dVǴE@-KLHh׮}~d̨;v֢IILL,<|~~y!=en]Ͻ#lv%z)?<ڻ ; I<"\;FM;'f7G?Qϑ75Y%Kjq"PfհMl!73mE./wZ^!XU]mx<[emݺM+ڵmsef͚oĪs *++S7VUTTTǏn~zsc`!Y߸qr۶mNjM>Çw)-~Wz{^x o~<@ɓzؾsg+F}}z44xcZZ{g=+]83+--m3[nOJJ;/tLEg$--Meff=繠!ԥs7ly'ɣx!$B_}t]tٽpXpbԾض}G}]tjUwo 4~Я_ߝv}mZܱp{ ct/,!!aC+kͺuСOua礥9Eu)z",84\T'iNB)y&ܘ~OC\fҲ2}{v;^ᮜIo5ږ:uԾn:C+BC~ ;q4Ҹ񜧞xᥗ|s?ؼy5(qqUUUz!YUUUUvlӦMB ?Ǧ1 ǒxQ;'9"~ڸޭTɱ)GyowO^}z/0'Bv~BmoUUշcVZ˴ЏFW]UrQ׍@.U~'O naѢ 3`Ξ=\7jԨ:h?B5m|ǃMj>(] K\:1u,6s·wRV.m^.oczwGDЮmi'W媪M[f]?}vǏ_7|M[B:Wx^U꿳yϽbYvc+SƑ#F8p-Zjw>%NaC 4|2lH~CMn|_tQ+xͷBcG_l:d(mݶ嗵mfמEQ&qϿB ~V^^gO7]^^Br[n:xКڵmjQ (ՃVWW8~"#=}a> KʣEƎߴ !g{wo^Q 5ږ Sqqqj&%%5o!디|p[n υ,0$9-h2W(}$W؍7ξ.[⏏mٺx\8FhѼy->HYY{5xعl qYM4yǵ +ZBbb7;'q-{0ft6kkkw)x;< R~;nO=QQQ%B/=a ;u)/ ~y,=ABW=K~~p=^s~FOZhjjj*+++*+7N햛>ުMIiܣ{5㙔}E͚Wlz7WϞ=[YYYy}H ]QQQyyA6l0znzȑ~?117oެ555OF*3f?[vhk/$d޼y3g4n GEe<:zAFS . qz]Io%rj>G^ J8]XG dɬvH =@^|6*"\u-٥ ڂc W9ŀ^$أ>H=HuK >[:=Óp5MxH\)%E,5AKU2O80ܻf93rx8k`KF;ln}0:cj>Q`zT㌄K ,ۻ{Ab3#\ȫVA'8>['g KZ*B <'=\k. c W9ŀ^$>H=HuTmN!DN`cp5_d08t>m9,;v:|SĖj> &`H jmb.=6O$5ST3 կ#~G\e,]0P9$63|e,qRB'Ȓa9<E= |v ׸EQL@B+b=~kX)!v$7RAjH~?//OQכc (א5)FIțB ;o&5j>;Z'2#xxAg~B}EľG;H,w6s!t Y~azGB%77wС y衇 Mf(yPT)4;+|>?r9mv>AgTаL;|{_Cb6"|[xFU b}1v3=dxHD[])PUyXa3NeR3p bB{i/87)77wܹ̚5˸85#_`1 `cLb7r E˔h@ <%X#E W.`ǹ,; fm!9s3asa>]2UK3r Ǥ.uAF_wRI;Z'oܗ|X9eP >+Wqn-<3{ Xg""|xR Z 6Q8CN0  3sAΉI06`1қOD{Xₗ"yɫ_u$biD5)&ӘhᤞUV8s3scsdmb. >qj>2Kl< qMX2눸sǮ қk>y_ :QT)gKD䶾?YL3p/k>}V\YVVVVVvځؠ-:܋EU88LI\rHrTBB2338JOO/**6=zUV6H" uP 2 ^ZzI+{g*ǮMKo( OwWl~@%&&VUUi+++SRR"m47o^?gΜP\oE#Tx$󋢭 %b'BJ,봛 6.|YYYYYY!Ϸj*P׮]oֹs!=v㩩 fGd9\QŮ' '$ے 5ߢE-ZcǎSN}W?m9vXFFBmڴ &·1:Bv#`OK=nEX?9bYAL9}f!9 _oq+B .\p ,Le6NzGiKT&B9WI=@/]y?eP+|>kJ/f{EwUE 5ծl^:R%b͇A,/.Xz)}~o9 SAi "UE  3 ._FxSUSff\~^^(^7''ǸH+(^t[Lb~ԹB>o"xuҷo_&{D0HqSpUUTnnܹsE5kqmfF.(N0CH0KV4H+9F}Ip!,x(߅␚~yy[ 4EDbFR'/¸;{LI$D(HzTߓ%E+(U{996*e"?-3g8t .ЉX9=DW `n9h|ʌtn"?T.Tt"|dLqjHldxcU~"|1nrPumH^$bH{YU/| ? "|xlL?B`r3wL\\/|Sc ,ČCj> z}Zhg2X@1S x\CiˈnR2ۙ@"|n>N H/7 . G0[' D!b ")XS@dfهsقOcPfD'yy|2XEh˂W`pcr쳼8DI}pj>wP (eDX,7)&;{f')4B{X_ x\'@PV*ro W,o cڣ>+y#'Bf~^^^ B$Cԯpz[.lp  IPο}` xf1uz3 C2dC=dBH|W gw2A7r,R[(f|=͆[f09|~I7[Iʱ PN d }s@| jKc(p$}'lOǁq"U>چ*w.pQ4% pb\(+?c?pE >j>0rc\~ x^y>f/|8|}4 ~O L/;wl) +|8|h7 w\^32Zs+'gq$PpP!8Dta~O k |8|^^V+jP|> i? 3Hw8dV*1!f/; aheD&z|hU58Ez9pX];x?/|>_^'ߵjSU5333.Y'X]L^#^\!9sUe֬Y}VcwQOuOJ-;'XZ [8fPQLW3p|@đ uApD'GRcC>* 5@0/kP]!d 0j>idyX5L|4ڳ2ɫ>sx@87_aL*|[!?I\oq *1oj`| >@I2~` j>M1–PPhrh!B0.(pSݏ^2"8]:t0y䌌C͟?ԩS#qnUJ*B[CQӧ>={|EhѮ]իW,YgϞ)))ƃ@EEE%%%iii  > y7ILLYYYi9|9sf? %ٳg=FUWWFqqq֭7o|(***//4hPBBѣ_VVf<(xo@&ԩS'NXXXwGw2ȑ#s1np>/.s>烚N/~?s>烚Ii޼yM`e ש`ea 8_z>ǃ|ΧN?ൗ{q?06sL&&M0n#~&.)!7n8_")She˖v[Ν{3œݧOE^Zl9cƌm۶}aÆ 6I&=..nذa#FHMM=p￯{&OqС:uJ?p4z &h[\zk+**/_7hCe6F699y„ W]u([nz555zj߾}EEh"xa%?7|]6k,..ÿSN\ҸҼy￿(xcF~.Y?O]])=OMMӟԬYGyѣ >׽{ѣGѷoߗ_~ĉmܸqFF/| &dgg+L>}ɒ%ׯ;vlvvk|`/!!aʔ)o~kÆ ov8p "rن|`m߾}iiO?]SS3cƌÇ/]E}4i]˻v >KD3rG1nܸf͚ۻw޽{w͚57n-+{\sͤIB|p̘1()=X׮]ǎ;qD}%33m۶YYY7tEQzyu}Μ95 ޘO#ڷo3h^z饔#{ _Q:ך5k| JzDIDATΝ;tIxM^z饯SO=դIѣG#M6=`Сqqqiii^{hڴiFFFqq?GM6qEEEN𒥥9RYĪ*}Wee%<Svƍ馛6olx,e[[[;/|Fa+Zl|NNοiӦ}%%%G\3|͛7{ԩ/9v$$$,_3>KJJzꩧN}Rw7!laL'GpDLeHBH"KVAaA?ۏq!>ڵh& -["*0lQNdTJuõ>ELY }=ye|ϙ31H$j5/D"JREeb8Nfmll,++[]]A~2wʶp塡>]H- N0dL2igm?JƦ9==gH$2,McJR۽~xxȍqR]D"n/˶faaclZx<X, r& M]{{;Bhcccmm !t:z=? |`0TXX(Hl6B`0Sl6Jpuuuwwp80 J c,Hn>EQE$f3nlF@zLQTv 9e1f&g UսKKKdD"ALw3 &w$#M{OOO\ir||K_aQ$C&BH~W^^חdXgxiT 0LFpBp\ ~> 9VPpۣ[ZZh#̛OAX"HoooWVV~,[a>0|^vxxx8o4;;;E"Q* ٨`?Y88P" ځ~B. !422|/] ,fs&999CEt|L I~{40:.qbxbbBRT*hG|S$---u:tۣ=O4mkkS~OseYbx޷'3s\.Z,@0P lNS.|eYxwDL,_ 4IENDB`taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/docs/source/imgs/different_axis.png000066400000000000000000000776201514602004300316010ustar00rootroot00000000000000PNG  IHDRO= pHYs+ IDATx^{@?gADnBY**)K21kxZsLO9J;]5rSFf] xTr[v Nk=voޝgO1)uݮw:Yo |6Ӟױb`nsЪΧw->9,|^KF< 0T_[S[]}"PƆk=o_%p%WLLLPp07my墢"$Tuڋy|||fRKK˪W^9{xPNnPpQ,.Yn^>/f@܀~Q7vM&SQ[/-y!d't?a)޽>~u[UYi=cNѣua=KjgNrGxY<xm_ ϝ/J1[T(-_7::JTx{䪪jQ!$BOpOמxœǬ|y#KGU7xv9О xnRnѳI!=3SD|'3*q㌭g]slC]OY7_|8c[d&l[nٴawo s'k X`DDx>pA>mӮ7'wNmB?_]ueפuȐSfꪱIKÙKxWVXf -y8[o߱ss+!U3?yV L bYw:sU^QO^{ƫ)Fq{,h0_4;x(OXJ3gϞ;s,!S*+"#"s?s6766v#tnRPpR< o_X+M=9{l6ogahXh0[v<uۀ~sF˛9VkteN]ǥ:=8imZ޾%ţFޚ{엣G&h4bL&wK6--FBtaٳ'm̓uEVSڱ̶o\ zw_h?c .w !a)6e?{ ( V!$OzA(/++^,쉧!8F R5?1' >$~}iaPbϓ;{Mِ۾M.8qbknn$F7܁uVzO? 2_x:E]Pjlxy {w !֟9[[[5g#cyg={ :d^/..?e5ϯU~~sVeA={566BzbOWtdcַ= ZZ\jn]XnW?FL+5?*ʮfUmP[D>s<- BH>[nCHqFj4BȂysVzTt#!$$O BA "\r*,v˯=kn8Wq 9\8}̃^jϝ#tPtPQ_mF=ϿuގÄB׎ԏDЋrJsPT/o{$k4^B۵yZTl? v7)oyyEE'I_|[3EϷM؅NH{jfH{*~ŋ-SCCCʄץ}LH{Ç ٻw/!_~7xcnn 릦&멂q)WSΜ93++d2i4Vyt:ZY?aq.xB8Qڋ֮][UUE߿u]B4/rʊsB""",wu6mi/**jѢEׯ\!{? C~~ԩS?뛜~zJ*mi/55588,YNxϣG-_d2m۶вЂyJb͚5"p$Qjx&Ti@͐0dȐUV :T<"2z]Fqܱczh 9sAoB81cFrrlk[cXz+󭭭.]ھ}?(ʴiӾ#G'8o߾ϟ'9rѢEI_~֭[-[;.((駟~gfxkfϞ]SSs夤k׊';e*WqFzyēז_z%Ѹx└nȐ!~ӧO?>111>>~ٲe~~~K.=}tII:#D=W֭[2d;wtM߾}ϟ?tINND3gά^Zx>,zk=ȑ#NoogBCCGsϙL'<_ԉAy SIȳy>66VQj[+,,,,,^B,8<<#G3 III=\zMMM<={Z[[#"",X^^^aÆŋ}:55[nѣGAAAvvvCCCllIN<~wlBC=cǎ+""GMLLm{llԩSM&Ӗ-[vM߿yBBBNjI'GS)Vrm`yoY'Nj+..m۶{z+gʕZuu5!7ި9s)S֭['^]{/..rȑ#E3/Z>y~РA/^ݻ'|R\\lKK !$<<ܹsj̙|B;w4%%%}􉊊h4yɓEEEœ???៎; /Lob#9sfVVpMpwDGG?t:Z E~F~&00`0ݻgϞ/Pn4{QWWg=:zhVd=Iqv3g^{5qԨQEEEÇq:-;uPBHxxxE\"h4Bتœ`k֬S< uuuoL&//ZRgYl6F??F˜][*N^LL}ݷvڪ*Kqx K nEDDX:NHJHHhlltVys\3tЉ'Zʕ+Æ EfKh46GFqر*??%KgϞm=dyxয়~ڰaO=T[xh2cȀem> OinnthmeyW)0BBFEE-Z>tرcowyl6t:^^~~~JJJϞ=CBBU<'x-̙3/0LӔ///V#? ʕ+fԨQBaeeeXXoƎիWG4%MMM'Nn Cn.\ 3Ʋl~/<<<..N(])Zu~~SN=|pǠ6f۸lnM.\h4 8066V(>TCCC^жXpZNNΦMzʳҬ-j?c%KL6W^+VJ W^}QM&Ӷm,O:cmxoҤIFxÆ ǎ#7|sܹsOkk-O ~1c,[~Ϟ=Bvx PXXq{.Zhʕׯ'?&Y~o/?? !/_޹s?_[[O?UVVZBrrrf͚e4:$~ ,0 %%%:СC{_q\AAܶFB!fȑ"6ݦ{o޼ys)((%4HxZw <\^`$ /ruF9tP2'Sn n?o߾iR$(L<="<:"}K /K իTR&M;w.' TNɴNJ}_\^|||@@K΅-w?~JJb? >b[Q?=[iwƌRhÇ Ny6mrĖu|twb"))i&;ذaCaaaRRwq {M81666L˖-j_]PP@Bfٳǎk0>3b7z`&Ly***"## ׿[.\m֬#Ft3gά[Ų p{Cر㮻xGEtҤI&)22rџ|Ʉ -[&>fðaۗjW\e˖bŊ7|ŋ֫BllF,.rQ2I\=]ܹz^ҥK'O! 6l͚5.]"̙3h4>SK.}bccß}Y###F{O?»̚5K_|8000ǎ7xf̙SLYn!dȐ!7nܼysJJʒ%KsY IDAT>䓣F5k s<.\k0"##4͒%KvܙT[[K9wƯnmmLLLܳge w~wCUTTB̙}LMMo6ol6gΜ٫WaÆƞ9s?uꔯ._]쓎7222dn QUӝ\;䦛n:v؅ f֭[;FFuV|…/<*44tĈ .8HSSSvvyOi&L)**! 755}pەZSSaÆ]{gB5j?pիW7x#!7>>_~! 6رc%%%fy۶m&wfNHH^Hcc}x?s̹slds%Wr-.]2111^^^۷o7ˆ'O655:uJ( Ǐ7L.]L=|ӧGUTTܹh4={6..ϯO>:t(!dN*,,8p !dذaw`҅{oeex 8?UAɱ=ţzuukkkCCCDtK ---}>LHQ]/B9qٳ-oѣGkZ__ߦ&^fQȅf8I+W6uTB׉'!#F_F!---BaPPe?Bjkk~`0XrO]]̝m5W\yw;vغuP+,s]w +((СCmRӷSB-9z6멧N8pF ϟ{nNWZZhoᆵk4HV+P^ЉӔL{,^k4K.aW^,Ξ==C?uLlo>(((>>~:tĉWZuʕaÆM2E͑ѣ@![B%رօcƌٵk`0DDDI*fIAAAՄɤ>`l,35k?BHii[ox}577/_&l߾ :.2w~rԩ/r̘1˖-߳gOXXX[9{/qݻ;f==_MM^[[[.]?C۷o/..&>>cZ͛7By/,,^02[fH" eee'P vQ RmwudZ8w0$(L<="<:"<c{=`3gΘL &TVV #= !FO[|6ϚD,\0**ϣG ɧn DlP81w8nB,(--]~xpl^be]?P\ܱN{iii-.#<".RA`08(ޞRp`[ al~c S8(xܱe }i@voRNٻx2Jɴ=??QF 1BFf̘l6sss!6 k <@zmi/**^2/NII-[tӧO,Z'90hK{TPPN9rd^^`0 HJJ*))YhY C./<ϛ7O<@yoZ4Tۿ{yBHhhZ !}f9996mz^< @a_T4w^B755wV("nK,6;)@7xhlPO>OGΜ93++d2Bt:0I E:wc=QBOfffnʪ希 4ŨZK{111wڵksB"""6 n\'jz>m75-ZTWWt:a.???%%gϞ!!!G@)4u DUn6cYJ,YrѸ˗Lm۶ ,*y•7Bizvf 򗶴nݺuY??w=D87r}64ܯ[@GNTՊJǴqyeySM/ߗV O$0#33sܸqr_4J_C<*?nh`Q^^~oz:!RǙO{l:Qp ((oT_fffVVV?9%5:r*7 \!yyw|Qp6BIUeDh'(//NW<\eݰ]n.T{kGtJ5d ੹AE \(nG斃.uv /CM <iTo(;:ktbb, 遣i(H{=*Xl%@诡iv(P±=,< A7PxJ |f&0`z  p4aT+T1 ut{1.i!fȁ:Ja<T=z/8$j§,p( a<Ԇ~ V8Ct3WaY<{P*E~J6K CUu%A<n&xy ze^UA= G64l ,+>8.vߴŎӴ0WX#\|yǡ%ѐq,`PAAi ;@3zƢ-( QQ]䙫0nة^4ԟ+u ͠Tvdfrp =M;yt֊5"v)@tt Šׯ__SSc=uȐ!ӧO ټyٳg2-e\djCq{^9Hخ8ӟk׮'x0==zϟ>'~멄4QUBZP/qP~yyy۷h4nݺu^^^]try% !䦦effFBϽ;tPFsȑO?l6s7cƌdٜ'Zpv2l)Q>XsolIVVVV&niiӧիWƝ;w>;v;?% !iO.\8oHMM{Z#<2f̘&&&/[oҥO.)),#mum(F *Vmibm.ԩSEx{{777[d=Gٿѣ̙S[[믿ZO"id2!$442XZZڷo_EhӮ_"|Τ maKQ~k޽{[8… EEE<޽뮳L%vҨ:vɓLo߾&~8X !!!!!A\%l2wWkxQi`mTeee cǎjΝ3 ,jUUU111{&DEEWTTX/.~JC䮻 x-Zh`Nt"G+݉B<5ٰa}7gΜ 6Bq\qq֭[3336nXWWg7bĈכL˗/~{쩨 ;w!$""rWE8kb-]-]L0h%ph&\xqŊ%gΜyg׻vڵkTk18//#F\xҳgϐd 㩛cђJF`bVmEzTHq`glos?A߾+BѣG/_n2mVXX(^ <"ݭTo*z[KE P%jlܸ8^?o+''gƍ RԨzEL2+8㶝;noh= t>KmWq2޶C XR!큔XVg^T]nkrHm!ݜ;N,(WH{&Q{d!')ⱤBGԥ=[!EuT@C#SԓSTJ*&S% /effF$$$d֬Y h4Jee%q3fHNN6͹yyy*D*N,5W\Iu8eA>miO.\8oK<֭[}]q!$111>>~ٲe~~~K.=}tIIeס 1c:UBMKkKtyQMMSR;&ɓ֭h Guɽ{L&BGg0*++8dԄhzjlRDq y^v9+<~Ir 7?ぁZVV&PZZ:z GO,MsC{pg7} yE]%$K5 4zu 7[/b@@@jj*!ۻY߿2BĥnD ܓ8zw}(yGꉟj~` &M"444t:aNgyڑ#GE]{JQֱG+M2tv^uuu^ZVvaaaBaDD.sU"嶓mo$ GR<8iҤ ??'NBSRRz0Mh.cf +Gv0ր<;G {5Ç0..n&i۶m@()CS3E8ETWA^k֬u>Q6Iθ]m"ܛ:Pv(bL<="<:"<Ν\XP*@%;ו:FBٝ#Pl^/ nGcSM{C##LdGAqlh&^Q&d{{dI@OMFۍ|kq\|X?J4X9>* vҍ8 wreP U%333++㸌 4p/J(.j(o9VƉeszvKyyyzz𚶺QKC`Ė@Y"m[QP9eT&$o p7d! *W7iv)惈(M{47YR} T su0ȺTeHiڙ:mՐ¨ С%PU&wW)=.t C uߣ: 6(M{8JSJ,9n]yY+:uut)CfH{ Of7bW&wnԷ2FL. #/!7 tqYGAd&k2;adӇOS :41݂yHw!ɔN(`{$e}AeѹE=PTh:z_t:P^=e)=մciVm l|Q/''_6eBc . z ` 9MEkV %;jm>P`يyx5AT = ]%@ZH{ ;NZɫ*h-It<"?㹻\CmA ZyzAu|ЛpA}󉉉˖-[tӧKJJ,m](?W:C7N۝\tui4m;w'.P ;]]vرcowyl6t:oooBH~~~JJJϞ=CBBƳ ]x;`jq0%3KS)Fnis'wڴizZbիW=z4..n&i۶mn"{8333++㸌 4ۄjԽhGQd͚5"ӕܰmn Ez9B{I(5ah;wr`u)Jz|JUkp.fZ66VbC38R:;Gz̬,222\H{b)~R!Jvtq)4fp+mw wz`<8p9 cibP#tAb,܋)mRui!6;$ BHQv)И&VcOie:znFK=ERԴLH8nƌf9777//B Tagؙ,x,1IqqҞV]p!q>~ٲe~~~K.=}tIIB"i[*x {9.`u{{&ɓ֭Q#G $%%uV6;Dm[BBCCʄץ} G]ԣ6w^Ԩ ;'ޞwss𺩩߿BS /l~ :جJ@cjv^CCN^t: "y*1*:e***„ \^] 1*줽={$'' ,Fu {QP :)=zh\\M&Ӷm ;+t\p@)p N6`Ú5kE'ia:͓v4qgKv{;%I0yzDxtDx;`!:=÷K / @d舡V(C.E=j)a/4J a8{ TDj=ҳsr [ @2g^i ~Dy^i!=C{L1V]k=fAjB)I:1CMc{1 ÷n9T^i4PQ֭vx:4faING l-B^;#SiTFE÷nV.g2T=nO=[R#u73Xc= xrۨj<3ȁ;8@Y&Px8`Z2Xc=0@*]M=qn-T]^GL= FKۻਪ;n٤ 2B"vZ C;" LK_Qg|:C)viӎ5 mim12ASh44e0i6@( f?nY77~{OrnE2J=؅ܬ)g)(f F[jU^^SO=裏r-ҥKϟ}m۶uttX[b|$ q2Ÿyʕ!ŋ~oooSSSEEYqZD#K,[㎢f!DQQQWWCggGI C'ɑKrg@Dqb=w{ww߿``@vGBQ^^.hii>x;Sy~.O/i2B F8iҤ}{SL7r>x<FB' ڠe䬚b]hѡC\__d!DOO5w()) M3[*& E (W1޹s-ZdFVV֢E>#!Dss+ MXK$$0) LN7l_q?B'OΝ;*444Zo5x  SiiM^o{{޽{/\`C)SF}G<<!Xtoߞm۶kK\%[YvƝܓ'Oz'|r;v쭷27Ν;*444ZfӵNEzH{Bƺ:FXH%$<$ 18|q'~Z8|ggڠHN'zjeCc ADLxP W2n%$!Q,Mqu_ـqxQi$$g҈=Ѕ鏴'#e@@d.IQH{22|㺪F% iIc *Dj4&iOBr 9*ňzdntPçMҞ~cu IړSΣJ14DH'AҞ&XB(>6E@(ݤ=芨- A\6 jo ɋ6(fGIOw/IDAT[7A'4D<*8 d!͔8---MvN55֭S.%OjkkwW5Ւ>i?T$ي?:R~Θ#Nn03g˥Cr ǵ q35I(Jwio֭=\alx!sp#et!uwwWVVZ zE u`RRzPDI7DҜ m)**2wvvN>=$tHK39#*@b3f|vϚ˭[&yĔbIP&Hf>r+Wox!D]]]]]]2f8*FcI4;̿#ӱpF@ڬD(J 1}H{Hե:yڠ@^9$ 1ls *Yxd'P5O{i#yᱤ4蜤4*J2)* ^4_KuL\,!c:rꉌpJ`%^n2Zπ(fiпNI{#y` r69(i02QܺEdzAi/E䟮&p,A""L`fTiO%iNT@%MͶn@"t DfeA}:785pc,ܺEZqH!*Yczt^*9%[rI\Ñ N휕4f,T~op| x\Q/Ɲ\{=̛7˯Ca[󍌌766ZͰ#L;dgpjo߾͛7_c߾}B20,Y2k֬Yfʳ>j˗.]xyٳg !***L>}ǎV?e~&~l2*Ίs7 S(Qeqf;[4ޟgAOOO{{{qqٳg/^~SSSEEEGGǨf[d_8;ܞ9s\BsvUD%[\jpxڵkO8)FїKyyyyyuFT WQlT>q1V\YZZg}x<ßzUKKu`vKpw (MJ֕={m[o-//OJu===VRR )✷Е-[g?ȈqB+VL6)7Z‰q%m5ƝܵkNyܹs@CCCkkFS'= X"##1ޓO>i$κU5ꎽ[B)DĸTYU8zR9ӞXGj@B~SG=}XmpQF9=%1OR $mPѦO w>T@?Pĉ"sfIҞ95 &0ӡć $6R!%iOUc UPmdžF6Q:Sq@#H{B(?zPazMPRP@cڄ8d$ 84`aDGh-]bD=ɎHR* pDISW0$-PmzNz"C1 h T D/fE$%FY'/)4!s%i QQ!e FK@`0U=SW$[(m>}43Y'>H5Q:ѩ7I{KlI oi:.8(PΓ*Y'fu>o7D/+y@l;Jփf̝ŋ766ަ ڙ@mLyH4I{EEE]]]ӧ~^7HjJN4 ~^!/|/ՒTdK}2P@I3xgxxxB(LFݟl lECT4dx^qIII.k2LE%WXQPP0m4bCIRVـd*YEݼpc2wrO<9wܪ@ jC/d7Y&˔8Sɤ=!D]]]]]u^7nh}"L``r&;$vK/ è2ƒhdQCy3E#E gϙr%RP֭[{90z!s:`(f($H{twwWVVZZ16` A4D5QJLz4+z{$M\QOCg`CiOC4S'i/iE+N ׈E%N$%G'"F=Cus(i/ 2F=@_j(TA^z8~A{Ϟ=h\ 9('xC ](0hDٓ?ƕ '}U_@4û(9 C/C{T/A1+M#iHd Z/1hOٓ2 {&i/:ŢjV@A=x9zQv~U]]Mo@TԳrB}ׯﲭ?E=!D0=gE҅dH{Zٺus=gC=d}PA(4 Xiui/"U;Һ^oT7n>7sLQqo,-;&|amςHqujukpD= VW! #Ԑ !L.@z* LD=N(@D=1 @iyW- {=̛7˯Ca[󍌌766Z)V@FdueH{ ,8v؋/8eʔٳK.?mamnb|H7A?A?zzzۋϞ=xF***TK{,"Ȕڗ^ze՚׻x?vgΜ !흝ӧOل Q/ Ι3g[P_kמ8qSvvBQ^^.hii>I,4'(޶mn!O?m\tϞ=|x69D0\%B۽{wzkyy={B9sFQRR++> e˖}~622xnyŊӦM|- =Qpk׮uB:VY)=TCEǭ[@di%=@dWU 6Rzm%=@CD=iOĦbcI ^j=rښ`Plh}n־KaTWWo$TI{D=9s\. \ةtӦM^}޽.\1>U.D=nz뭷~sm}0-[O%y<ЗCCCa\srrN=zhH{R_lYvvUΜ9;;۷o͛ׯ_ѱo>QdGرú5>i@g=tFi@g=tFڳc|M$462eʔzwݑ#GD|Mr7o֭[C_>䓗.]DBckC$^NB |_/~#l_!Ʃe6rpc,Ɏ'a`0|׾/VUU ƨVҥKϟ}m۶utt:u귾l͛w}uvvo={M~_YΒ0-[}:zٌ aw9lذ!tь$"ֆ&M׿u޽###1flmIq|?8|)bDhm)!/YHg)'4OvB@ pԩ_.''dEEEBz~x&/nllMMMM8p5O?0|߷g)77wǎ͋dƌYYYG>x`YYY~~~ﯩǏz5 }CD ȑ#|+W.\p&[r2YdI 8{l&o(a{9M4ҥK#WEi"!/'!ą vuЖPqcKH"NgLvcD)4Ov !D0_bxM79sf˖-kkk{{{kRTTz7ٹd!D?qDhDZgΜB,^8|M7~vۇr|pҥM^o% ]x?OIȜ9s̑I___Xr}3)--ֆHA9Yfk׮x******^{`0ֆHǏRj2cƌ3}/&Q)|c&;޸&O|7'?}ww}v:~ q݃ぁ3'D!\s͌3vYPPcutt>}u׫_\biRXXr]vq| RQN7n|ÿo.^8^*++_}kk&/`{9:tȑ#}}}ԧo^p)b$QNic+ǙQ&)SwrǕ x믿>|M%~c>x3<|nMDr… nwssshD S `>zb6_]ʉ1($PNm#'O6geeYczB pI4c|3uy{RTN`رcMxrnᆝ;wܹo{*++7QBɔe.DNISt+'Oڨ rJ4V&; oۂ ϟrV^}ԩ`0pիW[wyŊӦM|---B$w߽nwQQQyyS_lYvvUΜ9CMyÇ8qx<rZpa^^pɒ% Dl{_ڱcǎ;N}z&jI r"nTHQ&)aQZw:b=&nrIENDB`taurus_pyqtgraph-0.9.8-76c2eb88fc078020f3ed7181856bed2edee334c6/docs/source/imgs/dummy_action.png000066400000000000000000001205131514602004300312650ustar00rootroot00000000000000PNG  IHDR pHYs+ IDATx^wTlIoƂDE,XFQl1jL11%vbE_cK4DQWػbAAdmwm1#Ex>''g;Hg;weu:˲DDD6WHDZo+ӗ__nXkf䶶UF0L%r^a 63,WooX+tϞ%deeq t@ˊG ںW^v-H$t:{;[;G@)svvvVkV"aǏmllM}kǏcu:N?o~x"bYVͯҗjH[e&"V#*ά6V(EEހeYNWD5lyoe miZPXpK ˲Zu=eZmقׯ ujW-jTwaeeex[ٲe+ ¯t:0Eq;{kW.߻wjժc⢯uf\z^Ζ-[7om##_J}·oߖH$rC:N_$Hwߏ\]\d2{,2IIIϟ=׮b3L[p]dxA]x?q߮KP(oIJ섯'>}_`^v5~iTf~굟fTTj:MaLDك?t W\|J*WN;Ծ[ջMį'Du`˖-G mooW ꥗-_1dHȋP0Ʈuܾ}_۷C@ɒ ٿq_,P*\?spȐ?xKIDsvv9un(Q.8˂_~1 ԷҤIc}듸Iv3~mKݵ;5U?rҭT;uXVؤ #DD$O_5aYHb0Baׯ;ooM̟fj~ fѢSNs5[_ןNNNgqvqK/ڱ^ȵc!CB޳IV\IDgعkٻv|K%|rFb16Eld֭# ?͝s 68x͛]tI `\vC9o3 N@+fϜ5IL9Lmy, y aڷwZɓ'3U"GK]Z]q&gΘ&$1-[433 -Zɒ/S_}9ޭ@&u矽ɶvnnnDٝ;w B777vmΜ9˵iۛ6mb]":}LZj N:UVDWf Òb*U tY":qD΁|@ ٽq>xijjUgTգ^=c.ahUNl׬yn^QӳIf@@j!jſ/ cZ$.-=}m>$vvr i&!}+@l?~c_6lc^jjKMK%#GpyܶW%4Z yԗ;_BTTzvvv܆SVVNMOOQx'gGU*o; mSsԩDI|"ҟyɞ9c6)뵬r2·hݶ]ڵ߾};jիKnv* 9kV -ʕ ,^P"q"^Z=-=?-DB}tf6֣F:tȚ56ŋU<[-[$MG;;wOT(_JӴ4nD(v'o+ +KK.@)Rsт_~)NH$&MϞ5?7uy5e|$!!.\ѣO>}q5iҘx*" w0H$ivRK6 ͬ|6#9e'3/޲j@ |ʜe+ʈ_nPΌlʕvt"z„_.u/lǎ[ZZvpm"j֯X,}=aט9c5khT:/] Vi׮ݳgϾܼμ͛5F$H$W/tpF۲娑Ém6Ͼ}~~~˖->l˗.c x_!Nv1:N(2K-ݧaEJ#'[lNlIB3Zb{n혧bZ[[3 cg]\R83 ʻ/ٷON!C<_(e˯&|ү߃m[ap޳iBȞ1˲,0bKnVNJD9UBH,DM}=?l ð,KT \P.|3Ysmۚ}BTzF,1S ~$ۋek|x$1@1~65˪T*asj5KD K E"@0IJ:JŲldPԩy&".eHk{JD.ή?3aJ "L"qWPk 2 #`a1l&631q(EKReK^;a s s~7LP3(c,˲,0(3:a P 3KJ{[ƍ-]\ 4\3(c\;hڴ~ʕ+5&F c0;eeYB!L(cE?8!!!qqq7n0hLޟ|򉽽GlْeX फ़10F:yw}69r>iҤġCyqjՄBattZ򲲲7W^||u:ݞ={ԩcccwVƮ2VTv@VsZVP888kpOm*f,uyyy=O?jժڵjZ" 6܍4"qaP(u*Jcǎ#G'O}-!}J SRRR)-H퓒 []|DiX L&S*"((((66V.KҐHDD vAó;+&ЁGDD0D4vؚ5k;vٳqqBBBXXXa=ѣGMmZʰ JC c_PDӦMW\17yi6uI ޙi ST*`e=c0(K wg0(cƹϸ􄇇Lj"SBǍ/g0.L?`Q +/\@Ϙa=*\3(cc206W!K ̣r a Pe a PfG(gяR] b3N#ʘ- %`.x7"_FxbGGG~)ˌ3 ~„ ,0a۟>}JD'OJs̱ ھ}{LLLhhh LqPBf>ĉJr޽ӗYfΜ9DԷoɓ'ڵkĈ"(""bʔ)KdR k_PZtr޽{}zڵ?ӿLD۷߽b |ذa:uڽ{[~.]Э[7"UL&%"NC0iiiܮL&sqq@gM J SbǎJRѰ,{-Vs]jׯ_v7oތtfY\\\gNJJJ]"\+++z3x+pT*n988[T0Q6ZP($" kLPR9͵R433gdd@gquj9ÇOHHXp m8r974MD"ܜ /(//OT;nnn+P!u\\˲UVZ*@[5Z@ ر#WoꚒ\tk׮bݻPgb۳gOHH\.v@w?~X,>zh\\=~"77au߿w`dda.\a^*6qbccg͚߽|˗ ꉈV\_իW^%n3g9Õ}ʲӧkԨ(cLT*}}}E"QPPPll\.J!!!"(55f͚DTzuEPrGDD80>>>""bRܲe J1qBBBXXA=zhڴiɓ'OzXfVV\\<xE8zhƍN:|/_ٳg .4hІ gLD666 .O6lؐooܽc8ܽ! '5oٺC`#Gꆍr7|_zg[oQ\\|Y}ǎh԰apnmX`\ƹs Ο?yΝ;wE"Ν;wi8W_q+W|QV(77wj,kתu΁ɷn ѰfffΝy0xh葨M4xrpn'N[ΩSg{RV-W8㏼yL<25 w(ƍ?o6lٲN:֯ss_rꥋNnR.^9|P}c\`ђSǏߏq^Lo…qN b( cwwWW׸7fdd?#.ߺu˰ ue/D66-u%YYY͙5sykׄN[ZZCC<ӗ0ffԨQQQQ/^ڵ֬)scǎqӦM{葾lt3z;m߱/rJ+UT ͙VV-/OO`/[k.Æ;f4`Xs`'tя IDAT\3VP(VQQQ^^^VVVF,^h׮ݕ+Wrss"[Lٶ;ܫW4k`Xuo\t;aw?vrrr%%E;oМH*]{## I %TƮ2VTEp)N8(#i׬D46nzMKKsshrK-7wY3Na277Ν,:99UusWJ`Z,K {z-ZHLLLLLFFF ؿZժDTz?=7lU\m.A{Eustt8DZD!թ]NmmreӦȵW5g|off޿GpZHb(9 \Rzcǎ{"},Z0pwℯ w-,,6[ۧ7 _/ynkƟ;fJJT*$}RRK <==o޼+p_k2LTDX\.JCBBD;xW۾!C?9lǵ[tYp~ڵ\SN?|ԉ 9tH^UF% +͛`~ɀvt\y萐/}֭fG`u9P88؋D" ^Uqq[#6=.Zҧww4'"jҤM-yw߿Z P$$1*z999'N Ot06irA}Ke a PE0}MX 8׌;3N#!!~_!ʘ)1J8cw&*O\wWU%`*'0_ )^3x+zjWVKrrr|5:lARQ/ 'd3 2c$rrv:~~իԗ2|i0EC n_.]ٻOw=qTp>7{Q~~~]\IN޾w"=zmުM@·!"\>a-[wr19ұO ޴ENA]8=iV?ꗜ,b*߶~ڴuU P. gSmܸ1##àQ@@@@@+Wmƫ(Coٺ-;;YBBFFgWѳgϾ_Æ v;? 41RR@($ya.;`#Q yKk1cLJiú Y:=՛3/BL6x0V:t}D>>8.;vWCAϘaQFz> ?k&1tԮ=ϟ':;9,y? ^yK߻w_P tP(l%QDt1=w?xЧvvݻ;~\ ¸ZjB0::ZVGEEyyyYYY1 ~4"bYD$޽z>"g^= Quuu~ 7n:}?( R9(do[?߶~ݗr^III.]WW4R:hhlݦTrs`'tL&U*UffQժUU*U۶m̙3eooo}kÃQVuӗ;99&&n,I&D t:055033jǏh4.277߽kϟ=}҅Ovtrɒ^e$7yjj WYq) ]ⅿpP. X,'Q^^a5%%e;w1bw'°$0R $ v2uO}2,tWt?MD6j$ ]t=zmի״Zy= Oǩ-|֨>k ZeW\֯Uv oܼA-|۶xUv._iĨg̚sa#>k!PRYۺ'0~׮]&Nj޲u.Gi޲ЩY NgYRSFӴEKNNZ&%% 6Uvm._QlXl> //ߓ'Oe={tW?{:rp>"?`P흝~6'43s eݾuY38q򷵫yxp%k׭3fff6m 33 <<4Hen3gӓN3/BL6x0Vhƈ>>7mP*I/*!Ll_*'##̌_¾}jgkkgkܽ۱ljMڰAaSRj5,;ϪWfnn?j2R D88τBg\Q#z);~|b{Ԯu7nZZZD&ni\#c0omvvZ:""JNIYx_%"ZӾ?E;~Lb"t\zu -Nj6 BT r9mD"ZT*ss\]\BgԴ4"sshoo7gLSykCI/7dk^={눈qİ>{KrrrFyM6lL_+bA];ܤ XZZQffwzزO1@D&xx?S_~1ny"gdddfe]vݰAo|dsrDEDgظHvgY0Ln/:.WzhvzF(ۻ/+{B`O^^G@%RØ x #D!}7Viߡ}u6ӻg4jcSVL%ZZJM|_Pq[hEET,*PTU7 P U$@i3w"[⋆UPl}8=cQ>;PZDDrVz]L eo&ӷg3/u/4sWhh,\VV\#)BK:?̒u3I[ <"ey .!j6Xz}}fh]]$Bǹ:b25):7K, k7etb~euY+=NZGߞNT3 FT L_jnnRt\.'"V蘒5-wJ[n,jcGD9jݕؓܬDvGru{,j:ƨ߰ʎG+b"f9\nNVynQ|UIӷ?l!Xa$ղձMm[Ν;DJFT)))RۖH$\W1 0a7l2z_K"wQA L}adrRϬ*]׽' }>}]P0D}DkMa=`Y`}ӦMN,w2#-ȴsGDD80>>>""!Uj4_^2DBMnb}?SK= E,zڴl?00NHH 3GM6-ZdXPizyLòe˾YL? J2ޮ(@ t%KX&ݝ^x5@I ʗT$80F3|0:-<xg% T*ٳkըNA)G]2< +wX LZ +̙3w8n͈D S/~UH++ M귯\bPS0c٤{1R0m,j4nٟ")ʙ3gvv"H @_f;  c `xϲN?;;;kZni ~#x=|00GVV֪U$F1Ƽ '0>%Xju:7" Z *KCEy& _ٴIDYVI8o>BD3f͹zR/r?,fØ| IDATo;7iꫯ&k׮9zjӺs/WL ÈD"333++*UTR255o߾3gLOOǥb0N_13x,, *X[:kצ[b<ٳ(utt6¹3.Ï%5{Z>u:h1cwK4sm7K7lTcRWדǏ ?ᓧOg ["["]aK6lӴ);3cԙѬӥ6vD?}{F ѧT2\g/D^vϿ?8 BP$b333KKKKKˬt1;3NDmyΙuA"H*HxabD^=z,y? ^O˲l#L`kcx}B1BODq?#H9ӓ'O'9rXǀ^Bps5k lii) ܤ 4`/9%EV[@ggDW>ODVVVCB BRW鳄#~,BD"Hr er]3TjO1l~37lcoָ+~})1Çt,KD=G8ذaGBT*\UBP(yyynR7}IRR~%%%vv.(F߆'%5ՅۖH$666/]QW} 333aBU$Wqvvt99D訏XѼ6΋dX,]O ckNZvu p|@\#GޱC{uwwwewMⱴH$5kJd$eȑɒWUgj EZm%SSӸ " -''gq7oڤInnns ?'GD, %,>/#O owWUP(LKKoؠ@  <۶to9|hn]틣Sǎ!˲[mk֬qe"""ɑw޽,{ydJU={=W [Vvfn޿C[oX4)>]:lݸSH$l=u<}K"=|߶xI vQM[N/as:uj#Gު_jj~/Ǝ9=|>vw^Vt #j֬ammoPLzje \L˲ܻw֭dB~ (5&>8al)P,,,m/0V#11@CW@c&,b*߶~ڴuU8ܫܽwevZG?{D$!TA{G"E( E]YYwe""E]w.ĊEQ@ !c0>}{3w&Yýs3k`dgPWW_ k&3gϭNIMs)e֜y1c4021jtaahĤd'-}|> l 74ywp_??ihbnfa}ObcgAQ;w@ Yobnz)!K^>ZXex~/]7 Otjhl1jL%<'zǍkJJ{PSiŘFM6K.}왷iƎ[ZZJ"7iq.Ý KH9c:0~2\н[ʊO?npÇM?W[[ In.v~K.] FFF$%%_^NNR