coloredlogs-15.0.1/0000775000175000017500000000000014060634561014401 5ustar peterpeter00000000000000coloredlogs-15.0.1/setup.cfg0000644000175000017500000000007514060634561016222 0ustar peterpeter00000000000000[wheel] universal = 1 [egg_info] tag_build = tag_date = 0 coloredlogs-15.0.1/requirements-checks.txt0000664000175000017500000000015513055423327021123 0ustar peterpeter00000000000000# Python packages required to run `make check'. flake8 >= 2.6.0 flake8-docstrings >= 0.2.8 pyflakes >= 1.2.3 coloredlogs-15.0.1/requirements-travis.txt0000644000175000017500000000016413621625252021171 0ustar peterpeter00000000000000--requirement=requirements-checks.txt --requirement=requirements-tests.txt --requirement=requirements.txt coveralls coloredlogs-15.0.1/LICENSE.txt0000644000175000017500000000204013621625252016215 0ustar peterpeter00000000000000Copyright (c) 2020 Peter Odding Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. coloredlogs-15.0.1/MANIFEST.in0000664000175000017500000000007713142146416016140 0ustar peterpeter00000000000000include *.rst include *.txt include coloredlogs.pth graft docs coloredlogs-15.0.1/requirements-tests.txt0000644000175000017500000000012713622325446021025 0ustar peterpeter00000000000000capturer >= 2.4 coverage >= 4.2 pytest >= 3.0.3 pytest-cov >= 2.3.1 verboselogs >= 1.7 coloredlogs-15.0.1/CHANGELOG.rst0000664000175000017500000010204314060634527016424 0ustar peterpeter00000000000000Changelog ========= The purpose of this document is to list all of the notable changes to this project. The format was inspired by `Keep a Changelog`_. This project adheres to `semantic versioning`_. .. contents:: :local: .. _Keep a Changelog: http://keepachangelog.com/ .. _semantic versioning: http://semver.org/ `Release 15.0.1`_ (2021-06-11) ------------------------------ Bug fix: Restore :class:`.StandardErrorHandler` functionality The :class:`.StandardErrorHandler` class is responsible for dynamically resolving (looking up the value of) sys.stderr for each logged message instead of once when :func:`coloredlogs.install()` is called. This was unintentionally broken by changes in `release 14.1`_. .. _Release 15.0.1: https://github.com/xolox/python-coloredlogs/compare/15.0...15.0.1 `Release 15.0`_ (2020-12-10) ---------------------------- Don't enable system logging on MacOS and Windows anymore. This is backwards incompatible (which is why I'm bumping the major version number) however the old behavior has been reported to be rather problematic (see :func:`~coloredlogs.syslog.is_syslog_supported()` for details) so this seems like the best choice. .. _Release 15.0: https://github.com/xolox/python-coloredlogs/compare/14.2...15.0 `Release 14.3`_ (2020-12-10) ---------------------------- Merged pull request `#89`_ which enhances :func:`coloredlogs.install()` to preserve the filters on handlers that are replaced by :pypi:`coloredlogs`. .. _Release 14.3: https://github.com/xolox/python-coloredlogs/compare/14.2...14.3 .. _#89: https://github.com/xolox/python-coloredlogs/pull/89 `Release 14.2`_ (2020-12-10) ---------------------------- Honor the ``$NO_COLOR`` environment variable as suggested in issue `#88`_. .. _Release 14.2: https://github.com/xolox/python-coloredlogs/compare/14.1...14.2 .. _#88: https://github.com/xolox/python-coloredlogs/issues/88 `Release 14.1`_ (2020-12-10) ---------------------------- **Bug fixes:** - Don't allow interactive terminal detection to disable colored text when colored text is being forced by the caller (reported in issue `#84`_). - Automatically disable colored text when logging output is being redirected to a file in such a way that it actually works 😬 (reported in issue `#100`_). **Other changes:** - Start testing on PyPy 3 (because why not?) .. _Release 14.1: https://github.com/xolox/python-coloredlogs/compare/14.0...14.1 .. _#84: https://github.com/xolox/python-coloredlogs/issues/84 .. _#100: https://github.com/xolox/python-coloredlogs/issues/100 `Release 14.0`_ (2020-02-16) ---------------------------- Integrate native Windows 10 support for ANSI escape sequences (`#71`_, `#72`_). Native support for ANSI escape sequences was added to Windows 10 after its initial release, specifically in release 10.0.14393. I've now updated :pypi:`coloredlogs` and :pypi:`humanfriendly` to detect and enable this "new" native support. Windows 10 seems to comprise the majority of Windows installations worldwide so in the interest of "looking forward" I've decided to drop the :pypi:`colorama` requirement, given that it has now become a minority use case. Hopefully most existing users will not experience any regression because they previously installed :pypi:`colorama` already, and when available it will still be used. However new installations on older Windows systems now require users to install :pypi:`colorama` separately. This has been documented in the readme in an attempt to minimize resulting confusion. PS. In case anyone is wondering: I decided that giving a major Windows support update in :pypi:`coloredlogs` the version 13.0 was asking for trouble, so I decided not to do that 😇. .. _Release 14.0: https://github.com/xolox/python-coloredlogs/compare/12.0...14.0 .. _#71: https://github.com/xolox/python-coloredlogs/issues/71 .. _#72: https://github.com/xolox/python-coloredlogs/pull/72 `Release 12.0`_ (2020-02-16) ---------------------------- Two backwards incompatible changes prompted another major version bump: - Merged pull request `#80`_ that drops support for Python 3.4 which has gone end-of-life and now represents less than 1% of PyPI downloads. - Improved compatibility with the Python standard library by changing the order of positional arguments received by the initializer of the :class:`~coloredlogs.ColoredFormatter` class (as suggested in `#64`_ and `#75`_). .. _Release 12.0: https://github.com/xolox/python-coloredlogs/compare/11.3...12.0 .. _#80: https://github.com/xolox/python-coloredlogs/pull/80 .. _#64: https://github.com/xolox/python-coloredlogs/issues/64 .. _#75: https://github.com/xolox/python-coloredlogs/issues/75 `Release 11.3`_ (2020-02-15) ---------------------------- - Add support for the ``%(username)s`` field (requested in `#76`_) and properly document supported custom fields. - Consistently use ``console`` highlighting in documentation. - Fix a broken link in the readme. .. _Release 11.3: https://github.com/xolox/python-coloredlogs/compare/11.2...11.3 .. _#76: https://github.com/xolox/python-coloredlogs/issues/76 `Release 11.2`_ (2020-02-15) ---------------------------- Merge pull request `#79`_ which adds support for Python 3.8. .. _Release 11.2: https://github.com/xolox/python-coloredlogs/compare/11.1...11.2 .. _#79: https://github.com/xolox/python-coloredlogs/pull/79 `Release 11.1`_ (2020-02-15) ---------------------------- Starting with the previous release I've resolved to try and tackle the large number of open issues after an unplanned hiatus from the development and maintenance of my open source projects, so here are some more bug fixes: - Fix support for custom log record factories and add a test to avoid regressions (`#47`_, `#59`_). - Change ``make screenshots`` to be Python 3 compatible and document additional requirements (`#65`_). .. _Release 11.1: https://github.com/xolox/python-coloredlogs/compare/11.0...11.1 .. _#59: https://github.com/xolox/python-coloredlogs/issues/59 .. _#65: https://github.com/xolox/python-coloredlogs/issues/65 `Release 11.0`_ (2020-02-14) ---------------------------- This is a maintenance release that drops Python 2.6 support, adds Python 3.7 support and merges quite a few minor pull requests. The major version number was bumped because of the compatibility changes. **Merged pull requests:** - `#58`_: Don't import :mod:`coloredlogs` if ``$COLOREDLOGS_AUTO_INSTALL`` is set but empty. - `#60`_: Fix :pypi:`flake8` messages to help stabilize Travis CI builds. - `#61`_: Drop support for Python 2.6 to help stabilize Travis CI builds. - `#62`_: Use SVG badge in README for consistency. - `#69`_: Handle negative-offset timezones in tests. - `#70`_: Use :func:`subprocess.check_call()` in the test suite to ensure that external commands succeed. - `#74`_: Fix :exc:`~exceptions.TypeError` on MacOS on Python 3 in the :mod:`~coloredlogs.converter` module. **Other changes:** - Start testing on Python 3.7 (and document compatibility). - Workaround Python 3.7 regression in test suite. - Update ``Makefile`` to use Python 3 for local development. - Merge MacOS on Travis CI fixes from :pypi:`humanfriendly`. .. _Release 11.0: https://github.com/xolox/python-coloredlogs/compare/10.0...11.0 .. _#58: https://github.com/xolox/python-coloredlogs/pull/58 .. _#60: https://github.com/xolox/python-coloredlogs/pull/60 .. _#61: https://github.com/xolox/python-coloredlogs/pull/61 .. _#62: https://github.com/xolox/python-coloredlogs/pull/62 .. _#69: https://github.com/xolox/python-coloredlogs/pull/69 .. _#70: https://github.com/xolox/python-coloredlogs/pull/70 .. _#74: https://github.com/xolox/python-coloredlogs/pull/74 `Release 10.0`_ (2018-05-13) ---------------------------- Proper format string parsing, support for ``style='{'`` (`#11`_, `#17`_, `#52`_). Until now coloredlogs has required differently colored fields in logging format strings to be delimited by whitespace, leading to various issues: - Back in December 2015 issue `#11`_ was reported by someone who had expected to be able to style fields without whitespace in between differently. - Until `#52`_ was merged (released as 9.2 in April 2018) any whitespace would be collapsed to a single space, simply as a side effect of splitting on whitespace. - This implementation was so naive that it didn't support whitespace as a padding character in ``%()`` formatting directives, because it wasn't able to distinguish formatting directives from surrounding text. In order to properly fix `#11`_ I'm now introducing a very different approach that does distinguish formatting directives from their surrounding text, which means whitespace is no longer required. However in order to reduce the conceptual incompatibilities between the old versus new approach whitespace is still significant, as follows: 1. First the logging format string is separated into formatting directives versus surrounding text (which means whitespace used as a padding character in a ``%()`` formatting directive is considered to be part of the formatting directive, as it should). 2. Then formatting directives and surrounding text are grouped based on whitespace delimiters (in the surrounding text). 3. For each group styling is selected as follows: 1. If the group contains a single formatting directive that has a style defined then the whole group is styled accordingly. This is the behavior which provides (some level of) conceptual backwards compatibility. 2. If the group contains multiple formatting directives that have styles defined then each formatting directive is styled individually and surrounding text isn't styled (this behavior is backwards incompatible but arguably an improvement over the old behavior). While I was working on the improved format string parsing I figured it was easiest to include support for ``style='{'`` (requested in `#17`_) from the start in the new implementation, given that I was redoing the affected code anyway. .. _Release 10.0: https://github.com/xolox/python-coloredlogs/compare/9.3.1...10.0 .. _#11: https://github.com/xolox/python-coloredlogs/issues/11 .. _#17: https://github.com/xolox/python-coloredlogs/issues/17 `Release 9.3.1`_ (2018-04-30) ----------------------------- Bug fix: Restore MacOS compatibility after publishing release 9.3. The following build failure became apparent to me just minutes after publishing release 9.3 so I decided to change the implementation: https://travis-ci.org/xolox/python-coloredlogs/jobs/372806733 .. _Release 9.3.1: https://github.com/xolox/python-coloredlogs/compare/9.3...9.3.1 `Release 9.3`_ (2018-04-29) --------------------------- Enable flexible millisecond formatting using the ``%f`` directive (`#45`_). .. _Release 9.3: https://github.com/xolox/python-coloredlogs/compare/9.2...9.3 .. _#45: https://github.com/xolox/python-coloredlogs/issues/45 `Release 9.2`_ (2018-04-27) --------------------------- - Merged pull request `#47`_: Switch to ``logging.getLogRecordFactory()``. In the merge commit I added a small performance enhancement by checking for the existence of ``logging.getLogRecordFactory()`` just once, when a ``ColoredFormatter`` object is instantiated. - Merged pull request `#52`_: Don't change whitespace in format strings. In the merge commit I promoted the inline function to an instance method so that it can be reused by sub classes of ``ColoredFormatter``. .. _Release 9.2: https://github.com/xolox/python-coloredlogs/compare/9.1...9.2 .. _#47: https://github.com/xolox/python-coloredlogs/pull/47 .. _#52: https://github.com/xolox/python-coloredlogs/pull/52 `Release 9.1`_ (2018-04-26) --------------------------- - Added ``license`` key to ``setup.py`` script (`#53`_). - Added this changelog (requested in `#55`_). .. _Release 9.1: https://github.com/xolox/python-coloredlogs/compare/9.0...9.1 .. _#53: https://github.com/xolox/python-coloredlogs/pull/53 .. _#55: https://github.com/xolox/python-coloredlogs/issues/55 `Release 9.0`_ (2018-01-17) --------------------------- Added support for background colors and 256 color mode (`#35`_). Most of the changes required for this were actually implemented in the humanfriendly_ package (see issue `#35`_). The changes in coloredlogs are mostly related to the ANSI to HTML conversion. One unrelated change was made, that was to use faint green for the ``SPAM`` log level (to distinguish it from ``DEBUG``). New features in ANSI to HTML conversion: - Support for bright and faint colors. - Support for underlined, strike-through and inverse text styles. Bug fixes in ANSI to HTML conversion: - The scheme of URLs is no longer stripped from visible output. - Support for ``\x1b[m`` as a short hand for ``\x1b[0m`` (I only learned about this today when I didn't understand the empty ANSI escape sequence at the end of each line emitted by ``hg log``). - Ensure that the pattern for URLs doesn't capture ANSI sequences. - Documenting how it all works. This will follow in the next commit which is going to be a rather big one (hence why I see some value in keeping it separate from the implementation changes). Miscellaneous changes: - Add installation instructions to readme. - Improve screenshots in documentation. - Automate taking of screen shots :-). .. _Release 9.0: https://github.com/xolox/python-coloredlogs/compare/8.0...9.0 .. _#35: https://github.com/xolox/python-coloredlogs/issues/35 .. _humanfriendly: https://humanfriendly.readthedocs.io/ `Release 8.0`_ (2018-01-05) --------------------------- Set the default date format in a new ``formatTime()`` method (`#42`_). I decided to bump the major version number because this change is technically backwards incompatible, even though it concerns a minor detail (``datefmt`` being set to its default value in the initializer). Then again, this change does improve compatibility with the behavior of the ``logging.Formatter`` class in Python's standard library, so there's that :-). .. _Release 8.0: https://github.com/xolox/python-coloredlogs/compare/7.3.3...8.0 .. _#42: https://github.com/xolox/python-coloredlogs/pull/42 `Release 7.3.3`_ (2018-01-05) ----------------------------- Bug fix for ``coloredlogs --demo`` so that it always displays the ``DEBUG`` message (`#41`_). .. _Release 7.3.3: https://github.com/xolox/python-coloredlogs/compare/7.3.2...7.3.3 .. _#41: https://github.com/xolox/python-coloredlogs/pull/41 `Release 7.3.2`_ (2018-01-05) ----------------------------- Bug fixes and improvements to ANSI to HTML conversion: - Make sure that conversion of empty input produces no output. - Strip bogus ``^D`` from output captured on MacOS. - Increase test coverage on MacOS via Travis CI. .. _Release 7.3.2: https://github.com/xolox/python-coloredlogs/compare/7.3.1...7.3.2 `Release 7.3.1`_ (2017-11-23) ----------------------------- Bug fix for ``get_install_requires()`` in ``setup.py`` script (fixes `#43`_). .. _Release 7.3.1: https://github.com/xolox/python-coloredlogs/compare/7.3...7.3.1 .. _#43: https://github.com/xolox/python-coloredlogs/issues/43 `Release 7.3`_ (2017-08-07) --------------------------- Added support for the ``SUCCESS`` log level (related to `#27`_ and `verboselogs issue #4 `_). .. _Release 7.3: https://github.com/xolox/python-coloredlogs/compare/7.2...7.3 .. _#27: https://github.com/xolox/python-coloredlogs/issues/27 `Release 7.2`_ (2017-08-07) --------------------------- Merged pull requests `#34`_, `#37`_ and `#38`_: - Include the files needed to generate the Sphinx documentation in source distributions published to PyPI (`#34`_). - Improve documentation by removing usage of deprecated ``logger.warn()`` function (`#37`_). - Improve documentation by using module ``__name__`` variable for logger name (`#38`_). - Also fixed the test suite after verboselogs 1.7 was released. .. _Release 7.2: https://github.com/xolox/python-coloredlogs/compare/7.1...7.2 .. _#34: https://github.com/xolox/python-coloredlogs/pull/34 .. _#37: https://github.com/xolox/python-coloredlogs/pull/37 .. _#38: https://github.com/xolox/python-coloredlogs/pull/38 `Release 7.1`_ (2017-07-15) --------------------------- Make it easy to output milliseconds and improve documentation on this (`#16`_). .. _Release 7.1: https://github.com/xolox/python-coloredlogs/compare/7.0.1...7.1 .. _#16: https://github.com/xolox/python-coloredlogs/issues/16 `Release 7.0.1`_ (2017-07-15) ----------------------------- Try to improve robustness during garbage collection (related to `#33`_). .. _Release 7.0.1: https://github.com/xolox/python-coloredlogs/compare/7.0...7.0.1 .. _#33: https://github.com/xolox/python-coloredlogs/issues/33 `Release 7.0`_ (2017-05-18) --------------------------- This release improves the robustness of ANSI to HTML conversion: - Don't break ANSI to HTML conversion on output encoding errors. - Gracefully handle unsupported colors in converter module. - Make it even easier to integrate with ``cron``. - Improved the HTML encoding of whitespace. - Wrap generated HTML in ```` by default. - Reduced the size of generated HTML (really CSS). - Reduced internal duplication of constants. .. _Release 7.0: https://github.com/xolox/python-coloredlogs/compare/6.4...7.0 `Release 6.4`_ (2017-05-17) --------------------------- Mention ``colorama.init()`` in the documentation (fixes `#25`_). .. _Release 6.4: https://github.com/xolox/python-coloredlogs/compare/6.3...6.4 .. _#25: https://github.com/xolox/python-coloredlogs/issues/25 `Release 6.3`_ (2017-05-17) --------------------------- Bug fix: Avoid ``copy.copy()`` deadlocks (fixes `#29`_). This was a rather obscure issue and I expect this not to to affect most users, but the reported breakage was definitely not intended, so it was a bug I wanted to fix. .. _Release 6.3: https://github.com/xolox/python-coloredlogs/compare/6.2...6.3 .. _#29: https://github.com/xolox/python-coloredlogs/issues/29 `Release 6.2`_ (2017-05-17) --------------------------- Enable runtime patching of ``sys.stderr`` (related to `#30`_ and `#31`_). .. _Release 6.2: https://github.com/xolox/python-coloredlogs/compare/6.1...6.2 .. _#30: https://github.com/xolox/python-coloredlogs/issues/30 .. _#31: https://github.com/xolox/python-coloredlogs/pull/31 `Release 6.1`_ (2017-04-17) --------------------------- - Bug fix: Adjust logger level in ``set_level()``, ``increase_verbosity()``, etc. (this is a follow up to release 6.0). - Bug fix: Never enable system logging on Windows. - Increase test coverage (using mocking). - Document Python 3.6 support. .. _Release 6.1: https://github.com/xolox/python-coloredlogs/compare/6.0...6.1 `Release 6.0`_ (2017-03-10) --------------------------- Two backwards incompatible changes were made: - Changed log level handling in ``coloredlogs.install()``. - Changed the default system logging level from ``DEBUG`` to ``INFO``. To make it easier to restore the old behavior, ``coloredlogs.install(syslog='debug')`` is now supported. The old and problematic behavior was as follows: - ``coloredlogs.install()`` would unconditionally change the log level of the root logger to ``logging.NOTSET`` (changing it from the root logger's default level ``logging.WARNING``) and the log levels of handler(s) would control which log messages were actually emitted. - ``enable_system_logging()`` would never change the root logger's log level, which meant that when ``enable_system_logging()`` was used in isolation from ``install()`` the default log level would implicitly be set to ``logging.WARNING`` (the default log level of the root logger). Over the years I've gotten a lot of feedback about the log level handling in the coloredlogs package, it was clearly the number one cause of confusion for users. Here are some examples: - https://github.com/xolox/python-coloredlogs/issues/14 - https://github.com/xolox/python-coloredlogs/issues/18 - https://github.com/xolox/python-coloredlogs/pull/21 - https://github.com/xolox/python-coloredlogs/pull/23 - https://github.com/xolox/python-coloredlogs/issues/24 My hope is that with the changes I've made in the past days, the experience for new users will be more 'Do What I Mean' and less 'What The Fuck is Going On Here?!' :-). Of course only time (and feedback, or lack thereof) will tell whether I've succeeded. .. _Release 6.0: https://github.com/xolox/python-coloredlogs/compare/5.2...6.0 `Release 5.2`_ (2016-11-01) --------------------------- Merged pull request `#19`_: Automatically call ``coloredlogs.install()`` if ``COLOREDLOGS_AUTO_INSTALL=true``. While merging this pull request and writing tests for it I changed the implementation quite a bit from the original pull request: - The environment variable was renamed from ``COLOREDLOGS_AUTOUSE`` to ``COLOREDLOGS_AUTO_INSTALL`` (in order to make it consistent with the other environment variables) and added to the documentation. - The ``coloredlogs.pth`` file was changed in order to reduce the amount of code required inside the ``*.pth`` file as much as possible and create room to grow this feature if required, by extending ``auto_install()``. I seriously dislike writing out complex code in a single line, especially when dealing with Python code :-). - The ``coloredlogs.pth`` file has been added to ``MANIFEST.in`` to make sure that ``python setup.py sdist`` copies the ``*.pth`` file into the source distribution archives published to PyPI. - The ``setup.py`` script was changed to figure out the location of the ``lib/pythonX.Y/site-packages`` directory using distutils instead of 'hard coding' the site-packages name (which I dislike for various reasons). - The ``setup.py`` script was changed to preserve compatibility with universal wheel distributions using what looks like an undocumented hack found through trial and error (the other hacks I found were much worse :-). I ran into this incompatibility when running the tests under ``tox``, which runs ``pip install`` under the hood, which in turn runs ``python setup.py bdist_wheel`` under the hood to enable wheel caching. .. _Release 5.2: https://github.com/xolox/python-coloredlogs/compare/5.1.1...5.2 .. _#19: https://github.com/xolox/python-coloredlogs/pull/19 `Release 5.1.1`_ (2016-10-10) ----------------------------- - Starting from this release wheel distributions are published to PyPI. - Refactored makefile and setup script (checkers, docs, wheels, twine, etc). - Replaced ``coloredlogs.readthedocs.org`` with ``coloredlogs.readthedocs.io`` everywhere. .. _Release 5.1.1: https://github.com/xolox/python-coloredlogs/compare/5.1...5.1.1 `Release 5.1`_ (2016-10-09) --------------------------- - Bug fix: Enable command capturing on MacOS (fixes `#12`_). - Add styles for the ``SPAM`` and ``NOTICE`` levels added by my verboselogs_ package. - Set up automated MacOS tests on Travis CI. - Documented Python 3.5 support. .. _Release 5.1: https://github.com/xolox/python-coloredlogs/compare/5.0...5.1 .. _#12: https://github.com/xolox/python-coloredlogs/issues/12 `Release 5.0`_ (2015-11-14) --------------------------- - Remove ``ColoredStreamHandler`` and related functionality, thereby breaking backwards compatibility. - Remove Vim syntax script (impossible given user defined log formats :-). - Improve test coverage. .. _Release 5.0: https://github.com/xolox/python-coloredlogs/compare/4.0...5.0 `Release 4.0`_ (2015-11-14) --------------------------- Enable reconfiguration (also: get rid of global root handler). .. _Release 4.0: https://github.com/xolox/python-coloredlogs/compare/3.5...4.0 `Release 3.5`_ (2015-11-13) --------------------------- - Bug fix: Never install duplicate syslog handlers. - Added ``walk_propagation_tree()`` function (not useful in isolation :-). - Added ``find_handler()`` function (still not very useful in isolation). .. _Release 3.5: https://github.com/xolox/python-coloredlogs/compare/3.4...3.5 `Release 3.4`_ (2015-11-13) --------------------------- Make it very easy to enable system logging. .. _Release 3.4: https://github.com/xolox/python-coloredlogs/compare/3.3...3.4 `Release 3.3`_ (2015-11-13) --------------------------- Easy to use UNIX system logging?! I know this is unrelated to the name of this project - refer to the added documentation for more on that :-). .. _Release 3.3: https://github.com/xolox/python-coloredlogs/compare/3.2...3.3 `Release 3.2`_ (2015-11-12) --------------------------- - Enable ``%(programname)s`` based on ``sys.argv[0]``. - Increase test coverage. .. _Release 3.2: https://github.com/xolox/python-coloredlogs/compare/3.1.4...3.2 `Release 3.1.4`_ (2015-10-31) ----------------------------- Bug fix: Don't use bold font on Windows (follow up to previous change). .. _Release 3.1.4: https://github.com/xolox/python-coloredlogs/compare/3.1.3...3.1.4 `Release 3.1.3`_ (2015-10-27) ----------------------------- Bug fix: Don't use bold font on Windows (not supported). For future reference, I found this issue here: https://ci.appveyor.com/project/xolox/pip-accel/build/1.0.15 .. _Release 3.1.3: https://github.com/xolox/python-coloredlogs/compare/3.1.2...3.1.3 `Release 3.1.2`_ (2015-10-24) ----------------------------- Bug fix for log format colorization (fixes `#9`_). Rationale: I'm not validating the format, I just want to extract the referenced field names, so looking for ``%(..)`` without a trailing type specifier (and optional modifiers) is fine here. .. _Release 3.1.2: https://github.com/xolox/python-coloredlogs/compare/3.1.1...3.1.2 .. _#9: https://github.com/xolox/python-coloredlogs/issues/9 `Release 3.1.1`_ (2015-10-23) ----------------------------- Fixed broken Colorama reference in ``README.rst`` because it breaks the reStructuredText rendering on PyPI. .. _Release 3.1.1: https://github.com/xolox/python-coloredlogs/compare/3.1...3.1.1 `Release 3.1`_ (2015-10-23) --------------------------- Depend on and use Colorama on Windows (as suggested in `#2`_). I can't actually test this because I don't have access to a Windows system, but I guess some day someone will complain if this doesn't work as intended ;-). .. _Release 3.1: https://github.com/xolox/python-coloredlogs/compare/3.0...3.1 .. _#2: https://github.com/xolox/python-coloredlogs/issues/2 `Release 3.0`_ (2015-10-23) --------------------------- Major rewrite: Added ``ColoredFormatter``, deprecated ``ColoredStreamHandler``. - Fixed `#2`_ by switching from ``connected_to_terminal()`` to ``terminal_supports_colors()`` (the latter understands enough about Windows to know it doesn't support ANSI escape sequences). - Fixed `#6`_ by adding support for user defined formats (even using a custom filter to enable the use of ``%(hostname)s`` :-). - Fixed `#7`_ by adding support for user defined formats and making ``coloredlogs.install()`` an almost equivalent of ``logging.basicConfig()``. This rewrite mostly resolves `pip-accel issue #59 `_. Basically all that's missing is a configuration option in pip-accel to make it easier to customize the log format, although that can now be done by setting ``$COLOREDLOGS_LOG_FORMAT``. .. _Release 3.0: https://github.com/xolox/python-coloredlogs/compare/2.0...3.0 .. _#2: https://github.com/xolox/python-coloredlogs/issues/2 .. _#6: https://github.com/xolox/python-coloredlogs/issues/6 .. _#7: https://github.com/xolox/python-coloredlogs/issues/7 `Release 2.0`_ (2015-10-14) --------------------------- - Backwards incompatible: Change ``ansi2html`` to ``coloredlogs --convert`` (see `#8`_). - Implement and enforce PEP-8 and PEP-257 compliance. - Change Read the Docs links to use HTTPS. - Move ad-hoc coverage configuration from ``Makefile`` to ``.coveragerc``. .. _Release 2.0: https://github.com/xolox/python-coloredlogs/compare/1.0.1...2.0 .. _#8: https://github.com/xolox/python-coloredlogs/issues/8 `Release 1.0.1`_ (2015-06-02) ----------------------------- - Bug fix for obscure ``UnicodeDecodeError`` in ``setup.py`` (only on Python 3). - Document PyPy as a supported (tested) Python implementation. .. _Release 1.0.1: https://github.com/xolox/python-coloredlogs/compare/1.0...1.0.1 `Release 1.0`_ (2015-05-27) --------------------------- - Move ``coloredlogs.ansi_text()`` to ``humanfriendly.ansi_wrap()``. - Update ``setup.py`` to add trove classifiers and stop importing ``__version__``. - Start linking to Read the Docs as the project homepage. .. _Release 1.0: https://github.com/xolox/python-coloredlogs/compare/0.8...1.0 `Release 0.8`_ (2014-10-03) --------------------------- - Merged pull request `#5`_ which makes the severity to color mapping configurable. - Added support for bold / faint / underline / inverse / strike through text styles. This extends the changes in pull request `#5`_ into a generic severity ↔ color / style mapping and adds support for five text styles. - Added a coverage badge to the readme. .. _Release 0.8: https://github.com/xolox/python-coloredlogs/compare/0.7.1...0.8 .. _#5: https://github.com/xolox/python-coloredlogs/pull/5 `Release 0.7.1`_ (2014-10-02) ----------------------------- Bug fix: Restore Python 3.4 compatibility. .. _Release 0.7.1: https://github.com/xolox/python-coloredlogs/compare/0.7...0.7.1 `Release 0.7`_ (2014-10-02) --------------------------- - First stab at a proper test suite (already >= 90% coverage) - Prepare to publish documentation on Read the Docs. .. _Release 0.7: https://github.com/xolox/python-coloredlogs/compare/0.6...0.7 `Release 0.6`_ (2014-09-21) --------------------------- Added ``decrease_verbosity()`` function (and simplify ``increase_verbosity()``). .. _Release 0.6: https://github.com/xolox/python-coloredlogs/compare/0.5...0.6 `Release 0.5`_ (2014-05-10) --------------------------- - Merge pull request `#4`_ adding Python 3 compatibility. - Start using Travis CI (so I don't accidentally drop Python 3 compatibility). - Document supported Python versions (2.6, 2.7 & 3.4). - Move demo code to separate ``coloredlogs.demo`` module. .. _Release 0.5: https://github.com/xolox/python-coloredlogs/compare/0.4.9...0.5 .. _#4: https://github.com/xolox/python-coloredlogs/pull/4 `Release 0.4.9`_ (2014-05-03) ----------------------------- Make the ``ansi2html`` command a bit more user friendly. .. _Release 0.4.9: https://github.com/xolox/python-coloredlogs/compare/0.4.8...0.4.9 `Release 0.4.8`_ (2013-10-19) ----------------------------- Make it possible to use ``/etc/debian_chroot`` instead of ``socket.gethostname()``. .. _Release 0.4.8: https://github.com/xolox/python-coloredlogs/compare/0.4.7...0.4.8 `Release 0.4.7`_ (2013-09-29) ----------------------------- Added ``is_verbose()`` function (another easy shortcut :-). .. _Release 0.4.7: https://github.com/xolox/python-coloredlogs/compare/0.4.6...0.4.7 `Release 0.4.6`_ (2013-08-07) ----------------------------- Added ``increase_verbosity()`` function (just an easy shortcut). .. _Release 0.4.6: https://github.com/xolox/python-coloredlogs/compare/0.4.5...0.4.6 `Release 0.4.5`_ (2013-08-07) ----------------------------- ``ColoredStreamHandler`` now supports filtering on log level. .. _Release 0.4.5: https://github.com/xolox/python-coloredlogs/compare/0.4.4...0.4.5 `Release 0.4.4`_ (2013-08-07) ----------------------------- Bug fix: Protect against ``sys.stderr.isatty()`` not being defined. .. _Release 0.4.4: https://github.com/xolox/python-coloredlogs/compare/0.4.3...0.4.4 `Release 0.4.3`_ (2013-07-21) ----------------------------- Change: Show the logger name by default. .. _Release 0.4.3: https://github.com/xolox/python-coloredlogs/compare/0.4.2...0.4.3 `Release 0.4.2`_ (2013-07-21) ----------------------------- Added ``coloredlogs.install()`` function. .. _Release 0.4.2: https://github.com/xolox/python-coloredlogs/compare/0.4.1...0.4.2 `Release 0.4.1`_ (2013-07-20) ----------------------------- Bug fix for ``ansi2html``: Don't leave ``typescript`` files behind. .. _Release 0.4.1: https://github.com/xolox/python-coloredlogs/compare/0.4...0.4.1 `Release 0.4`_ (2013-07-20) --------------------------- Added ``ansi2html`` program to convert colored text to HTML. .. _Release 0.4: https://github.com/xolox/python-coloredlogs/compare/0.3.1...0.4 `Release 0.3.1`_ (2013-07-01) ----------------------------- Bug fix: Support Unicode format strings (issue `#3`_). .. _Release 0.3.1: https://github.com/xolox/python-coloredlogs/compare/0.3...0.3.1 .. _#3: https://github.com/xolox/python-coloredlogs/issues/3 `Release 0.3`_ (2013-06-06) --------------------------- Merge pull request `#1`_: Refactor timestamp and name formatting into their own methods so callers can override the format. I made the following significant changes during merging: - Added docstrings & mention subclassing in ``README.md`` - Don't call ``os.getpid()`` when the result won't be used. - Don't call ``render_*()`` methods when results won't be used. .. _Release 0.3: https://github.com/xolox/python-coloredlogs/compare/0.2...0.3 .. _#1: https://github.com/xolox/python-coloredlogs/pull/1 `Release 0.2`_ (2013-05-31) --------------------------- - Change text styles (seems like an improvement to me) - Integration with my just released verboselogs_ module. - Improve the readme (with screenshots). - Add PyPI link to ``coloredlogs.py``. - Add URL to ``setup.py``. - Vim syntax mode for colored logs! .. _Release 0.2: https://github.com/xolox/python-coloredlogs/compare/0.1...0.2 .. _verboselogs: https://pypi.org/project/verboselogs `Release 0.1`_ (2013-05-16) --------------------------- Initial commit. .. _Release 0.1: https://github.com/xolox/python-coloredlogs/tree/0.1 coloredlogs-15.0.1/PKG-INFO0000664000175000017500000003364714060634561015513 0ustar peterpeter00000000000000Metadata-Version: 2.1 Name: coloredlogs Version: 15.0.1 Summary: Colored terminal output for Python's logging module Home-page: https://coloredlogs.readthedocs.io Author: Peter Odding Author-email: peter@peterodding.com License: MIT Description: coloredlogs: Colored terminal output for Python's logging module ================================================================ .. image:: https://travis-ci.org/xolox/python-coloredlogs.svg?branch=master :target: https://travis-ci.org/xolox/python-coloredlogs .. image:: https://coveralls.io/repos/github/xolox/python-coloredlogs/badge.svg?branch=master :target: https://coveralls.io/github/xolox/python-coloredlogs?branch=master The `coloredlogs` package enables colored terminal output for Python's logging_ module. The ColoredFormatter_ class inherits from `logging.Formatter`_ and uses `ANSI escape sequences`_ to render your logging messages in color. It uses only standard colors so it should work on any UNIX terminal. It's currently tested on Python 2.7, 3.5+ and PyPy (2 and 3). On Windows `coloredlogs` automatically tries to enable native ANSI support (on up-to-date Windows 10 installations) and falls back on using colorama_ (if installed). Here is a screen shot of the demo that is printed when the command ``coloredlogs --demo`` is executed: .. image:: https://coloredlogs.readthedocs.io/en/latest/_images/defaults.png Note that the screenshot above includes custom logging levels defined by my verboselogs_ package: if you install both `coloredlogs` and `verboselogs` it will Just Work (`verboselogs` is of course not required to use `coloredlogs`). .. contents:: :local: Installation ------------ The `coloredlogs` package is available on PyPI_ which means installation should be as simple as: .. code-block:: console $ pip install coloredlogs There's actually a multitude of ways to install Python packages (e.g. the `per user site-packages directory`_, `virtual environments`_ or just installing system wide) and I have no intention of getting into that discussion here, so if this intimidates you then read up on your options before returning to these instructions 😉. Optional dependencies ~~~~~~~~~~~~~~~~~~~~~ Native ANSI support on Windows requires an up-to-date Windows 10 installation. If this is not working for you then consider installing the colorama_ package: .. code-block:: console $ pip install colorama Once colorama_ is installed it will be used automatically. Usage ----- Here's an example of how easy it is to get started: .. code-block:: python import coloredlogs, logging # Create a logger object. logger = logging.getLogger(__name__) # By default the install() function installs a handler on the root logger, # this means that log messages from your code and log messages from the # libraries that you use will all show up on the terminal. coloredlogs.install(level='DEBUG') # If you don't want to see log messages from libraries, you can pass a # specific logger object to the install() function. In this case only log # messages originating from that logger will show up on the terminal. coloredlogs.install(level='DEBUG', logger=logger) # Some examples. logger.debug("this is a debugging message") logger.info("this is an informational message") logger.warning("this is a warning message") logger.error("this is an error message") logger.critical("this is a critical message") Format of log messages ---------------------- The ColoredFormatter_ class supports user defined log formats so you can use any log format you like. The default log format is as follows:: %(asctime)s %(hostname)s %(name)s[%(process)d] %(levelname)s %(message)s This log format results in the following output:: 2015-10-23 03:32:22 peter-macbook coloredlogs.demo[30462] DEBUG message with level 'debug' 2015-10-23 03:32:23 peter-macbook coloredlogs.demo[30462] VERBOSE message with level 'verbose' 2015-10-23 03:32:24 peter-macbook coloredlogs.demo[30462] INFO message with level 'info' ... You can customize the log format and styling using environment variables as well as programmatically, please refer to the `online documentation`_ for details. Enabling millisecond precision ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ If you're switching from `logging.basicConfig()`_ to `coloredlogs.install()`_ you may notice that timestamps no longer include milliseconds. This is because coloredlogs doesn't output milliseconds in timestamps unless you explicitly tell it to. There are three ways to do that: 1. The easy way is to pass the `milliseconds` argument to `coloredlogs.install()`_:: coloredlogs.install(milliseconds=True) This became supported in `release 7.1`_ (due to `#16`_). 2. Alternatively you can change the log format `to include 'msecs'`_:: %(asctime)s,%(msecs)03d %(hostname)s %(name)s[%(process)d] %(levelname)s %(message)s Here's what the call to `coloredlogs.install()`_ would then look like:: coloredlogs.install(fmt='%(asctime)s,%(msecs)03d %(hostname)s %(name)s[%(process)d] %(levelname)s %(message)s') Customizing the log format also enables you to change the delimiter that separates seconds from milliseconds (the comma above). This became possible in `release 3.0`_ which added support for user defined log formats. 3. If the use of ``%(msecs)d`` isn't flexible enough you can instead add ``%f`` to the date/time format, it will be replaced by the value of ``%(msecs)03d``. Support for the ``%f`` directive was added to `release 9.3`_ (due to `#45`_). Custom logging fields ~~~~~~~~~~~~~~~~~~~~~ The following custom log format fields are supported: - ``%(hostname)s`` provides the hostname of the local system. - ``%(programname)s`` provides the name of the currently running program. - ``%(username)s`` provides the username of the currently logged in user. When `coloredlogs.install()`_ detects that any of these fields are used in the format string the applicable logging.Filter_ subclasses are automatically registered to populate the relevant log record fields. Changing text styles and colors ------------------------------- The online documentation contains `an example of customizing the text styles and colors `_. Colored output from cron ------------------------ When `coloredlogs` is used in a cron_ job, the output that's e-mailed to you by cron won't contain any ANSI escape sequences because `coloredlogs` realizes that it's not attached to an interactive terminal. If you'd like to have colors e-mailed to you by cron there are two ways to make it happen: .. contents:: :local: Modifying your crontab ~~~~~~~~~~~~~~~~~~~~~~ Here's an example of a minimal crontab:: MAILTO="your-email-address@here" CONTENT_TYPE="text/html" * * * * * root coloredlogs --to-html your-command The ``coloredlogs`` program is installed when you install the `coloredlogs` Python package. When you execute ``coloredlogs --to-html your-command`` it runs ``your-command`` under the external program ``script`` (you need to have this installed). This makes ``your-command`` think that it's attached to an interactive terminal which means it will output ANSI escape sequences which will then be converted to HTML by the ``coloredlogs`` program. Yes, this is a bit convoluted, but it works great :-) Modifying your Python code ~~~~~~~~~~~~~~~~~~~~~~~~~~ The ColoredCronMailer_ class provides a context manager that automatically enables HTML output when the ``$CONTENT_TYPE`` variable has been correctly set in the crontab. This requires my capturer_ package which you can install using ``pip install 'coloredlogs[cron]'``. The ``[cron]`` extra will pull in capturer_ 2.4 or newer which is required to capture the output while silencing it - otherwise you'd get duplicate output in the emails sent by ``cron``. The context manager can also be used to retroactively silence output that has already been produced, this can be useful to avoid spammy cron jobs that have nothing useful to do but still email their output to the system administrator every few minutes :-). Contact ------- The latest version of `coloredlogs` is available on PyPI_ and GitHub_. The `online documentation`_ is available on Read The Docs and includes a changelog_. For bug reports please create an issue on GitHub_. If you have questions, suggestions, etc. feel free to send me an e-mail at `peter@peterodding.com`_. License ------- This software is licensed under the `MIT license`_. © 2020 Peter Odding. .. External references: .. _#16: https://github.com/xolox/python-coloredlogs/issues/16 .. _#45: https://github.com/xolox/python-coloredlogs/issues/45 .. _ANSI escape sequences: https://en.wikipedia.org/wiki/ANSI_escape_code#Colors .. _capturer: https://pypi.org/project/capturer .. _changelog: https://coloredlogs.readthedocs.org/en/latest/changelog.html .. _colorama: https://pypi.org/project/colorama .. _ColoredCronMailer: https://coloredlogs.readthedocs.io/en/latest/api.html#coloredlogs.converter.ColoredCronMailer .. _ColoredFormatter: https://coloredlogs.readthedocs.io/en/latest/api.html#coloredlogs.ColoredFormatter .. _coloredlogs.install(): https://coloredlogs.readthedocs.io/en/latest/api.html#coloredlogs.install .. _cron: https://en.wikipedia.org/wiki/Cron .. _GitHub: https://github.com/xolox/python-coloredlogs .. _logging.basicConfig(): https://docs.python.org/2/library/logging.html#logging.basicConfig .. _logging.Filter: https://docs.python.org/3/library/logging.html#filter-objects .. _logging.Formatter: https://docs.python.org/2/library/logging.html#logging.Formatter .. _logging: https://docs.python.org/2/library/logging.html .. _MIT license: https://en.wikipedia.org/wiki/MIT_License .. _online documentation: https://coloredlogs.readthedocs.io/ .. _per user site-packages directory: https://www.python.org/dev/peps/pep-0370/ .. _peter@peterodding.com: peter@peterodding.com .. _PyPI: https://pypi.org/project/coloredlogs .. _release 3.0: https://coloredlogs.readthedocs.io/en/latest/changelog.html#release-3-0-2015-10-23 .. _release 7.1: https://coloredlogs.readthedocs.io/en/latest/changelog.html#release-7-1-2017-07-15 .. _release 9.3: https://coloredlogs.readthedocs.io/en/latest/changelog.html#release-9-3-2018-04-29 .. _to include 'msecs': https://stackoverflow.com/questions/6290739/python-logging-use-milliseconds-in-time-format .. _verboselogs: https://pypi.org/project/verboselogs .. _virtual environments: http://docs.python-guide.org/en/latest/dev/virtualenvs/ Platform: UNKNOWN Classifier: Development Status :: 5 - Production/Stable Classifier: Environment :: Console Classifier: Intended Audience :: Developers Classifier: Intended Audience :: Information Technology Classifier: Intended Audience :: System Administrators Classifier: License :: OSI Approved :: MIT License Classifier: Operating System :: MacOS Classifier: Operating System :: Microsoft :: Windows Classifier: Operating System :: POSIX Classifier: Operating System :: Unix Classifier: Programming Language :: Python Classifier: Programming Language :: Python :: 2 Classifier: Programming Language :: Python :: 2.7 Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3.5 Classifier: Programming Language :: Python :: 3.6 Classifier: Programming Language :: Python :: 3.7 Classifier: Programming Language :: Python :: 3.8 Classifier: Programming Language :: Python :: Implementation :: CPython Classifier: Programming Language :: Python :: Implementation :: PyPy Classifier: Topic :: Communications Classifier: Topic :: Scientific/Engineering :: Human Machine Interfaces Classifier: Topic :: Software Development Classifier: Topic :: Software Development :: Libraries :: Python Modules Classifier: Topic :: Software Development :: User Interfaces Classifier: Topic :: System Classifier: Topic :: System :: Shells Classifier: Topic :: System :: System Shells Classifier: Topic :: System :: Console Fonts Classifier: Topic :: System :: Logging Classifier: Topic :: System :: Systems Administration Classifier: Topic :: Terminals Classifier: Topic :: Utilities Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.* Provides-Extra: cron coloredlogs-15.0.1/requirements.txt0000644000175000017500000000002513764416727017674 0ustar peterpeter00000000000000humanfriendly >= 9.1 coloredlogs-15.0.1/setup.py0000755000175000017500000001226113622325446016120 0ustar peterpeter00000000000000#!/usr/bin/env python # Setup script for the `coloredlogs' package. # # Author: Peter Odding # Last Change: February 16, 2020 # URL: https://coloredlogs.readthedocs.io """ Setup script for the `coloredlogs` package. **python setup.py install** Install from the working directory into the current Python environment. **python setup.py sdist** Build a source distribution archive. **python setup.py bdist_wheel** Build a wheel distribution archive. """ # Standard library modules. import codecs import distutils.sysconfig import os import re import sys # De-facto standard solution for Python packaging. from setuptools import find_packages, setup def get_contents(*args): """Get the contents of a file relative to the source distribution directory.""" with codecs.open(get_absolute_path(*args), 'r', 'UTF-8') as handle: return handle.read() def get_version(*args): """Extract the version number from a Python module.""" contents = get_contents(*args) metadata = dict(re.findall('__([a-z]+)__ = [\'"]([^\'"]+)', contents)) return metadata['version'] def get_requirements(*args): """Get requirements from pip requirement files.""" requirements = set() with open(get_absolute_path(*args)) as handle: for line in handle: # Strip comments. line = re.sub(r'^#.*|\s#.*', '', line) # Ignore empty lines if line and not line.isspace(): requirements.add(re.sub(r'\s+', '', line)) return sorted(requirements) def get_absolute_path(*args): """Transform relative pathnames into absolute pathnames.""" return os.path.join(os.path.dirname(os.path.abspath(__file__)), *args) def find_pth_directory(): """ Determine the correct directory pathname for installing ``*.pth`` files. To install a ``*.pth`` file using a source distribution archive (created when ``python setup.py sdist`` is called) the relative directory pathname ``lib/pythonX.Y/site-packages`` needs to be passed to the ``data_files`` option to ``setup()``. Unfortunately this breaks universal wheel archives (created when ``python setup.py bdist_wheel --universal`` is called) because a specific Python version is now encoded in the pathname of a directory that becomes part of the supposedly universal archive :-). Through trial and error I've found that by passing the directory pathname ``/`` when ``python setup.py bdist_wheel`` is called we can ensure that ``*.pth`` files are installed in the ``lib/pythonX.Y/site-packages`` directory without hard coding its location. """ return ('/' if 'bdist_wheel' in sys.argv else os.path.relpath(distutils.sysconfig.get_python_lib(), sys.prefix)) setup(name='coloredlogs', version=get_version('coloredlogs', '__init__.py'), description="Colored terminal output for Python's logging module", long_description=get_contents('README.rst'), url='https://coloredlogs.readthedocs.io', author="Peter Odding", author_email='peter@peterodding.com', license='MIT', packages=find_packages(), data_files=[ (find_pth_directory(), ['coloredlogs.pth']), ], entry_points=dict(console_scripts=[ 'coloredlogs = coloredlogs.cli:main', ]), test_suite='coloredlogs.tests', install_requires=get_requirements('requirements.txt'), extras_require=dict(cron='capturer>=2.4'), tests_require=get_requirements('requirements-tests.txt'), python_requires='>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*', classifiers=[ 'Development Status :: 5 - Production/Stable', 'Environment :: Console', 'Intended Audience :: Developers', 'Intended Audience :: Information Technology', 'Intended Audience :: System Administrators', 'License :: OSI Approved :: MIT License', 'Operating System :: MacOS', 'Operating System :: Microsoft :: Windows', 'Operating System :: POSIX', 'Operating System :: Unix', 'Programming Language :: Python', 'Programming Language :: Python :: 2', 'Programming Language :: Python :: 2.7', '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 :: Implementation :: CPython', 'Programming Language :: Python :: Implementation :: PyPy', 'Topic :: Communications', 'Topic :: Scientific/Engineering :: Human Machine Interfaces', 'Topic :: Software Development', 'Topic :: Software Development :: Libraries :: Python Modules', 'Topic :: Software Development :: User Interfaces', 'Topic :: System', 'Topic :: System :: Shells', 'Topic :: System :: System Shells', 'Topic :: System :: Console Fonts', 'Topic :: System :: Logging', 'Topic :: System :: Systems Administration', 'Topic :: Terminals', 'Topic :: Utilities', ]) coloredlogs-15.0.1/docs/0000775000175000017500000000000014060634561015331 5ustar peterpeter00000000000000coloredlogs-15.0.1/docs/conf.py0000644000175000017500000000511513621625252016627 0ustar peterpeter00000000000000# Colored terminal output for Python's logging module. # # Author: Peter Odding # Last Change: February 14, 2020 # URL: https://coloredlogs.readthedocs.io """Sphinx documentation configuration for the `coloredlogs` package.""" import os import sys # Add the 'coloredlogs' source distribution's root directory to the module path. sys.path.insert(0, os.path.abspath(os.pardir)) # -- General configuration ----------------------------------------------------- # Sphinx extension module names. extensions = [ 'sphinx.ext.autodoc', 'sphinx.ext.intersphinx', 'sphinx.ext.viewcode', 'humanfriendly.sphinx', ] # Sort members by the source order instead of alphabetically. autodoc_member_order = 'bysource' # Paths that contain templates, relative to this directory. templates_path = ['templates'] # The suffix of source filenames. source_suffix = '.rst' # The master toctree document. master_doc = 'index' # General information about the project. project = 'coloredlogs' copyright = '2020, Peter Odding' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # Find the package version and make it the release. from coloredlogs import __version__ as coloredlogs_version # noqa # The short X.Y version. version = '.'.join(coloredlogs_version.split('.')[:2]) # The full version, including alpha/beta/rc tags. release = coloredlogs_version # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. language = 'en' # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. exclude_patterns = ['build'] # If true, '()' will be appended to :func: etc. cross-reference text. add_function_parentheses = True # The name of the Pygments (syntax highlighting) style to use. pygments_style = 'sphinx' # Refer to the Python standard library. # From: http://twistedmatrix.com/trac/ticket/4582. intersphinx_mapping = dict( python2=('https://docs.python.org/2', None), python3=('https://docs.python.org/3', None), capturer=('https://capturer.readthedocs.io/en/latest', None), humanfriendly=('https://humanfriendly.readthedocs.io/en/latest', None), ) # -- Options for HTML output --------------------------------------------------- # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. html_theme = 'nature' # Output file base name for HTML help builder. htmlhelp_basename = 'coloredlogsdoc' coloredlogs-15.0.1/docs/readme.rst0000664000175000017500000000003313270365757017326 0ustar peterpeter00000000000000.. include:: ../README.rst coloredlogs-15.0.1/docs/index.rst0000644000175000017500000000121713621565435017176 0ustar peterpeter00000000000000coloredlogs: Colored terminal output for Python's logging module ================================================================ Welcome to the documentation of `coloredlogs` version |release|! The following sections are available: .. contents:: :local: User documentation ------------------ The readme is the best place to start reading, it's targeted at all users: .. toctree:: readme.rst API documentation ----------------- The following API documentation is automatically generated from the source code: .. toctree:: api.rst Change log ---------- The change log lists notable changes to the project: .. toctree:: changelog.rst coloredlogs-15.0.1/docs/api.rst0000664000175000017500000000126113270365757016646 0ustar peterpeter00000000000000API documentation ================= The following documentation is based on the source code of version |release| of the `coloredlogs` package. The most useful entry points into the documentation are :func:`~coloredlogs.install()`, :class:`~coloredlogs.ColoredFormatter` and :func:`~coloredlogs.syslog.enable_system_logging()`. The :mod:`coloredlogs` module ----------------------------- .. automodule:: coloredlogs :members: The :mod:`coloredlogs.converter` module --------------------------------------- .. automodule:: coloredlogs.converter :members: The :mod:`coloredlogs.syslog` module ------------------------------------ .. automodule:: coloredlogs.syslog :members: coloredlogs-15.0.1/docs/images/0000775000175000017500000000000014060634561016576 5ustar peterpeter00000000000000coloredlogs-15.0.1/docs/images/custom-log-format.png0000644000175000017500000015351513622012676022673 0ustar peterpeter00000000000000‰PNG  IHDRÖØ@ç3ÈgAMA± üa cHRMz&€„ú€èu0ê`:˜pœºQ<bKGDÿÿÿ ½§“ oFFs8ÒdtIMEâ-56àýl vpAgâHD’ ~€IDATxÚìw|TÅöÀÏ-[³-eÓ{'…„^C¤ Ø@AQš‘ö}ú³<ËT°cTAÀ‚ˆR¤BI#½o’M¶÷½w~¤mÂæîn6žÞï‡?4³sæÌ™vfî–>@šº%S"¸Ñj°°°°°°°üÁü+ô_4tÀæL‰<4uçäÏGðÉ­¦×Ùô±ìù•‚ˆžD&G/ÿèP±ÊŽ­)=¼a²¼Ãj¼è;Þø½D‡2UÝt²ëˆÇÏx­ Õ}0LØ\†¸Ò¿ÛQ´ºèÀ†»¢y1ÅwêQ'Ï’¶NØ¡kû³M™÷ës½£UWkPê’CoNr°?öÎu¿\QÚBÈÖœ÷ͼpwkN_jÅ'ñ©¼Î–Dg…ºU¾Le$ž¸SÔÛn•vÊøo)BGïòsHóŸ½×„èã†:*+»ýrÆùG#Ý®¾Â×#„ô»n_æ3æËæN‚u;&ˆ€˜¸îxΠ«>ôb–/À‰_~¤æÈcqœ.F ·òãƒùJ›~ÿmm9OØ¡³ý1S }‚Wí·Oð»¥Îª)ýkÛîJ»W×ZÿPÑÉþ–½S%nÆõ®ŒúWe$²±Ðpõ­¡B¤2ÓóR`æf¶óÀ{;3õH]!DKÇØ14l||ÿ­ƒÓåc}9½X¸7Nܚ˶ÒWûó<ŽIÎø¢ Ñ…[–Ý’›–u÷Ê·¶¶2L’õN92ûÏŒôØ~×îS¡†/§ú·‹qXeŽ+ñ»]~jpDXt¿w>·W‰èÓËcÚÇsñÄz”ÿÂðˆV‚ýxíc£xÂ*øÏˆÈ°è”Ñó7œ1#ÅæÉ~½¡UgkDǤŒ˜õÐÒ¬€¶>G0p} ²å¼·`dbdTÒÀ‰sîêïî˜ÑwZ¹¨‰Oå!Þ9 !í¦ôàn¥ËTF->¢ú»Im½?s]êê‚H'¯EYÌ tð¨YÒàaÆ –uÿ×õHóóCc‡ 6lØà9×íZ‹‡.:Ê{:‰sM˜Ï˜/›©ìåýÃÚr(åb¼þ¯Öïš-ç„-8 ¼¸6‘œØe‡kŽ>ß)Y̧ÿêdºøå“³‡DËÚÅ÷­ ÒóöÛw’è‘÷¿þG#BEŸÌõ`–ƑȃÛlŸ8ÿ€Ùä¶ âeõ-®ÊˆsÿG?|´ ¦wÕéq)0qSÛùÆà­™z¤.pÄŸN²Ò—ø[}ˆéq&ó±Y/‰rbt"láQ›ý¯‡[Ãðà{~3¢œÕñm6fV]Ä•ÎøÝŽ²‰hGɘ‘úÛñ¢v­&îÔ£K«bÖñ„:tyM«»N„?xØBz¸}í…VŒÖNÂÚ\¤Ý>Áµ—ë„>ÓʜħòÚ–z±ŒZ—©4Û'·ŒÉüëËQWD4öK¥­äX52ü<Ó»6}~Æke¨á“‘=™6 G~\L?9Û|Æ|Ùlÿk~`—%Si¾²6‘¼´— j¿ëûÈ5ÇV&vêtqÿ)_Ô!ÕÏ‹ø]¤þó\ÈÙ_T!ë_+ÜwLÙctßñ²Œú–YF^–BWnj;ßH¼°s·=Ò5ëv«©&‡GÉ0÷DwóI¹ïíÅ:„©ìÀºþ7~Ùaªþd²?¸ß΍ò÷ÇËZ’ÁäóNØ”_Œ ðÈgê툪;ôòøí0qÿÅ«4!„¬ug¿Z1Ü×QuÉ”=&ëï3ÃÓ}t¼ÚŒêƒ½B<䑹A_?ÿ]…ýÚ@Éà¹ÃÈ [~­n £ëÿØ|Šê÷¨7<ŠËO ´ÿUnîA¨Úý[²±w rgpp¡£5€ÒV×ÛÅÃföíåE3¯´ê»t;sMYõ•ZÉ”Å#dÀO™wW@u¹¥“‚´¹·Š³7¼ðÞáØyƒzä¸u¹üt¹¥ò\…ûUÆ\yV4f\‘5.°î9ïãçøo.ùðªÕá7‚O¸ûÝ‚E›‹œ ÆÅi‹>þ«ÎŠèƿ޺-ÄÁ'dn¿¸lÈã_Ÿ©1#„2Öe2ÓÝo.-®Ïìð¶tŽo˜á˜.`‚„{6,íøpyüž–®?ðÍÒ†ïfŒ\½OaQìYœ?ÿëb‹ùÊëÃDq»íÍÚ±×ý´âî5#^^?- wrÔ§eÔ­5ÜÑóé7ÿ­ß‹´!dn,<ôŽ›ÓaѸoÔ­É>ׯóàuS–‚Wvö6GÌ:»Ècùp#¦¿´'_ÝÚi”ì[;{Ò#ááQý¾Ÿ6â‡[‡çé*:ww³­ðÓ…#¢úM~á¸Átô¡Ž¹)vÏnRí¾7Œ4kk½-ÿµ¡¢6ó`òy'ìúS?œo*ûáùûïXôÎE;jüb\›ËDFÜÿ‹Um[6&12nØ‚ (Ë_«œRÉ”=&T¼çT}ùOÏß;åÞ+ííÆ•ÍÜÛaò¬¥ïpkjÉI|*Y÷ÏòuÈM~¶59Ƨý/‚ÁoU¡Ê ƒZ½b†™½«¸3lŒs÷§%æÒ÷ÇûvT%VA|Æ|Ù„òŸIæz«£5óðì) Bµûþs[¬À3¶ï´r£„¯‚xSFâ‰;•åß~˜c×îœ&Ãøƒ6”5î}ùûF«Ã*Àëå–sË¢„ÉÿÎG_dù\£€7« @Ÿ>6ÂÙŒ´›UÀe#ŸÙ[¤Ô( ~xêÎ5kN>‘Ü%ºäÖoÕ¨à¹g3 ñ„:TºçdCÍþWLŸýäžfÔðÙ¨¶L¹h¿üoT Õ/k&¤D†Ç¤ :oÎ@Y[ç¢ý:I·ÞÁddÄý?©úWî–›<úñC&ÊÁ)Ó\>pò—7^ÝÛL—ï=vfëËæ[+ÚÛ/soæöàQ›íÏ!»¢rÔɤ­‚xYFLÖp­3'öázT³û‰©1‘ n™·æ_ÓÃHwÊ8"¿yØÈÿÛ¹ 7¾zÕÎ^æˆYgæPæòÅåÓ>¯Fæsï>˜Õ/:&sþ6%í0Lô¹»ï‘œù„=7~ÄÞiŸ•HÝLx¯•¡Ê ƒ[ýŸ1[šì§‡uøCxÀ”Ïj%ççÓZ˹§;ø7˜|Þ „PõgÓ[6ZˆÇÝŒê6 vnÜ|K[K z£)ºmÉ”=f„T»çEpZ¾XÚ‹ ƒ£cÇÿ÷*]½iZrlllllL„?Ï­Lñ¼QÑyr Ì\_ŽjÞÚ‘ nê WQãg£Z›ðê*nç­Ž¹¦wZÒé²ÕVþѨ»º ‚aÔ¡²u™®#Zu²†tú/j„þ¯Çb纂ØY¯ì«BÕîyF¤ûk²}ª]·£Úë¾¹Eä}‰'îT¿1cù_6íîé¡C6–5l¿cúçŽ.7åùBË…±d‹ÔZÇtmÒS¤{ºsAÚ!#ýV_ylÿÙòúÚË;–÷÷iý¥pø¦:T¾~€Óuç–MÐMßßAG|To?÷PxKÛwÕ~}ÆliBНæÄð¯UÊEûu’®íÔmÝ£xìç¨æƒ,IËÏEã¾QÛ\Jd=¼(‚ô½ãB5ŒûŒø¨ºns«Z.{³ˆ¨eç‘ñÇ)žSŽñÐñ²Œ¬áRgÉ„­*T¹q˜³¾Ð­>–›ülÍ™ rãK¡WíìeŽ˜uf e._^ÆKf÷-mƒ?àŠŽ‰ú ´³sŸ5)kÞ-Ô™mØ€äÔwÓ}enI&äÃn†ˆ5g-ݲþÏüÿ¸€ŽÁ€Vî_}÷Ûu· ­~iÁÆË¦ÎñiãÏ=õk`®¹¢q ˜À¤ic¢Ñ•_r´­¿4]ý=Ûè?dhˆÃÀŒÐ™'Wl¯²ØŠÞè/Ì|«ÄÖ*UQ^ZV©´PVUuYiiiiiYU“¹“#Ê Ôƒ(Ø×锂6kÍ ð¶Eò¥0kÍ´KÁnÅÍq\ÚˆÇÿ0aaQšºFÆÕWÇ'ÅÅÅÅÅÅ%fýß9c÷EÌ—ðÁ¢ó^+Ê 4€\ÊÐ^2jÁo&1w¨ÈTúÓÿM˜üÜ¥ÿ·'çÛ{Ã¼ß æ½V®0ý¶ ‹%ㆭúËÐKed¯Û÷éiþ­+yüNáŸÒ:†q"§ÞU¸õ×*;X‹ØQ|ÛIn}Ræg¼rÅ|ÍikÙ¦ÞòTȈû>z9úrsZÌs’Gnô}~˲&ˆL †š‹5–³kWm¯²Ð‘<p£ýN½¸üsåÜí¥Í…û?\{G†ŸC­q£ývIx"nK¡ ’fO ¨ÞþÅY­óæNk¼ýcµ¶SÆÒÍŸÕÑ”‚ÖŠãº7ë€j¾ZjDÅù¶2åèF•‘+k0êÌ‹™0RV¿wÇeƒ3;zÑÇÞÌ¥ÐÓ¶àMŽ˜uf e._Nä­3cµû>8Ðàl ¸vfZ–BºÆ’'®heáQS|ÜêÐ1°ü:C†9ÿÌEÇbâEŽýX8HÒE(mjj2·Zãå Å6÷³b×(t­ƒ¢(ÊÍúψ­öÌ5gÀmi"'Öú+eVß”d¿6OÅe† ªKuV—‚ÝŠkª/-8õÉò.Hï|÷¹‘â®E`QV––¶6we÷Í—ÄÄËl•y ®MéB+[ÝÙ næä$!ÐFEe­Žr*ÇRýû+3G­>+»ãùâ½ÞÖ[Zu¥«-o3eec[ô¾Œìuû?9ÉŸôÜý¢ŸÖ†µ¡·Þ“ÎK³ÈŠ2_|6‹š}[¬;¦²äo˜Ò/®+IcžÏ6¹Û%dļ_‘þÊÓÉ_sUU¿o/›–Þò™ Ãq@Ý7,JרoëßËñãDÛ/¥«×Ahz€ºíõ÷¦ð0Àܪ’.{3G»ÉSㄺâ"Ugç—)G=¦çeä–5ºÓÙ\öÇIü¶GøvgŽžö±7i)ôQ[p/GÌ:wÊ\¾”®AAi1" pÙ˜ç>|Àÿf°óµp¥áO¤…ó÷IŽIß6"fåèá{F‡G¹yƹ{— ©~~fflLêÈ™ËßÙ½ynhÛ-Ò¬·K¨Ú/¦øã@†ÏÿQƒT;;åóNØu¿,̈ ‹tç˨‘rÇœÐöÚLF,Ø«EÕß-›;tÁÇ…”å¯U]¶£ZŸÑý©áˆHµgEV|dü€É<8ÊÍ{#—Oû´Q…_=>15:&uôÝ+w¸dÔÛeÈxâ•Y™ 铟ޯF _Oè|GóÎG je@jxûÕVÌq;øÄý§Ó„Ì,ŠlcÅwêQÉÆYCÛ$g&u\ѲAïíÙDZø¿{«*Ù8ªc~î…VDЬ/k*þvõÔŒ˜„9{ ›Nÿ½ùÃgL‘<êþ÷.ÚPþ+™nŒ}¦• ˜åzQFâ‰;•ůe8~Zñóe³­e/&¿ëwCÓÖŽC֘߬_MôÙG:ß=æt/Æõ ‰íJLD€Û¾^·{Aˆ°y?UŸ¾¿0ßi;®þw (äÞ½u§W´n{Æ|gü G¹ÎOöw9”ËðF…-çñèÖËÜ~yiO~¿cýÒÛFgć‡Å|h{Cç=8ÀÐ~™Ó•ܲE‰ìÞY|÷¢—©¶6ž/0Óçn)2þÀ7K¶Hgþ¡9÷P8‚¡ïUÔmiÛ¢ÂØ›9BF=zš2í»KÞnR7rÔª ‡{A¼*#&k¸Ö™¿ì™Î}ôØÌ1ÃGN¼ë‘gžœÑé;«‹>–›ül½dݨ0y€Ÿ¨]½›¢zÕÎÞåˆYgæPæòåX_†PÙ—ËçÜÿÌw…ª‚½Gš(Çí¨7ÄÎÎ ˆe~;eÄÞi#öNüvfh:׃‰,擲àƒ?+Œ!‹²èØÖîJhQ÷ŸòY UþÞ¸Ö}%¸|ú2þñH };j뇨’æÄw>S‰û/ùøx•!dSœýz¥³C¹ .à¾#×îÎÓ „ºð·WÆû»r””zì£Ãm·£ér;êíoü^¢G™ªŽmZÐïšÛQ;Qÿ±ãI†¸ïœ2bÑA3jú¶mü»övÔ+Ot\“áp;ª½ñÊϯÜáè«{¡pBo}úÛÖóW¶æÜ/ï iU’=÷ÍŸÎUj(„ÒWœÜºö–`·×%úL+0º =/#g.ÈØ¯Z]Ìwú:óÁ»;Ú0áKO#ê˜ã.ó뽕½gwÕ…[}Fnô}_åkŒºÊ}O h?¶â¬¨ñË)~×6fW€¹ýòqO|öûåZ­!„Œ•}±l´Kݵ_éò‰ÿ=Z2UÛ4¯_Ú¿.Sµï¸1T0ôfŽ`Ò1T£†/nqXzv'Gà© âe1YÃ1QÊü7÷æ5S!›ªäèwtÞêÅÜÇr“Ÿ-hmÛšmíî÷MQ ½jgïrĬ³‹1–/`’!OþRaEHué» þn­ÃA¹!vvÁõ½š¬õ^Ñ>Þ‹b¹ùàgþ·ÀŽºBW~4ª—Ç×›$Ý›—'b ÃçïÑ¡æÆÝ|—„Ý8s¶Ö!ížùn¿EЉžžˆaàŸXF^–Bøß¶3¶ð¸U½í‘G±n„¯¬ ò·ÆûÏÿ[éÞÌxã‚àþã_¿`C†s/ŸÔïŸlFB–9}ÅÇgtÈšýß1=½Ž¯\TõN)ôÿ);ó3ÿïç]ë—L‘7tÎÿÔ¢ò÷F‹ÝTú†ÚùúÀº ,,×…®ÏÔÙ«·Œõh.„ bgüûË£E*Êðw~š‹Ѹ¯6mÙ‰oþÏÓkøC6\µ8€ÏÔ¹Í?¤Œz^ ½ÄÿŽqßa¿»÷b!„tm}fJ¸Û›iûÒÎ7·çÆÂÂÒË`¼€ðP §½å#»®®ªý(2K_ƒñüÂCeö§ôŠÊk–ëÁõ=”ËÂÂÂÂÂÂòÂÙé®ÐÑЛ3%òÐÔ“>ÁïûCÀüÌõåm;ÄOÞtÃýt~?ðfÑêzå—……………åºqí¨Jˆ–8Þ»jP5”<}¾òO=寣'^b¾üŸòÀÀè[›=}dì§ Ë߀kÖ78Bß¡û‰Åy쑹¸QÛ+/pº„2ª”F0ªL½òÄíß[+–ÿ}®Y±[M 49…E±gqbüü¯‹-æ+¯ëxmÍ‹òeaaaaa<<ªß÷ÓFüpëðï<ގʉ}ø€Õì~bjFLd€[æ­ù×ô°ö×2ïÿE‹ª¶-“7lÁÇ”å¯Õ‰/hŽü¤Áæd×…«¸’){L¨xÏ©úòŸž¿wʽV:îo Bçîn¶~ºpdBT¿É/7˜Ž>Õî„àòiŸW#ó¹wÌê“9›’îº7¢‡Z1Kæ|£©~Y3!%2<&eèÔysʮLjͬƒ­øß,Ó\>pò—7^ÝÛL—ï=vfëËæ[+6 â»]¾,,,,,,Ì`þaϱwÚÀgc%R÷—C$¶ªPåÆaήYçe¼V†7ßÒv±`ÐHùEV§ßv3Ø»Œ+™²ÇŒj÷¼'am®¥cXåe¼V†*7 nõ¦|Æli²Ÿ^Öö8rÆKf÷-I:ÝžÙ3­\Hö³¥ )¾šÿ®7Ô2kÅd+þÀ7+‘õð¢Ò÷Ž#Õ|0Zì3â£êºÍ-v«|YXXXXXÚp>ïFMÊšw uf6 9õÝt_™{£$/fÂHYýÞ— ׆aÒ´1ÑèÊ/9ÚÖ?˜®þžmô24Äõa ·â"tæÉÛ«l¶¢7ú 3ß*±!vk4D¬9klù¢ÿó?Â?. ejω¼uf¬vß<ÞrëB+W’ §^\þ¹rîöÒæÂý®½#ÃσcGœ„5矙°_]?ïV(³V̶ 5Þþ±ÚNÛ)céæÏêhÊFµÞñïMù²°°°°üa÷®±äÅæ°wÒ¢¦”ª¿Ó»Þ‰a88yv4tÅ®QèZÏ­ Šê8Á‚€å×AÓ÷jœäß/ÚԕͶÖÿçÊä>½£¿KÉÖòmKúïY7aÁ²Ç—=·ë‘—ν2~âó'5îì{µ•}63éG~»ÿˆ¬ª‹[¡.´b´mÕj­»ª²ÙÞ+vbaaaaù‡âb÷­Öu€ p·–AÌeœÔÈo{p„ïµ?Gš+G˱ôÛ2۾뒦 *Ïœ©³¹”ëM\ ÏþQÁ1”Ÿ³üÝÛ¹‡#Z]B>î‰Ï~¿\«µ#„±ò¯/– ’^1®òÛ­­\¹ î”/ ‹kØ7bz"láq«zÛ-"ïE±°°°°°°°t ?óÿ~Þµ~É´©ÑáqCçü÷O-*o´øºžÀeaaaaaaùÇû{øÝ½kô!¤«økë3SÂÙ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,ÞãôŒ('"xɽ’ŽwÏ€¾º½to…ǹ9IŽÏï?P º¨ª4x/¬W ’çÇŽo®þlŸÉÓ‹ÄÉРÅ÷I…@e;K~,uÓJ!6#T–àÃáݬjÜr©üCGlŽÀoAzÔÔ¾€¶æVW¾›ßXMu’à# ^=8fUóØÑÊòΩb¤ðÖä˜ya9A76)>¼XyÚìÎÛ3Þ¦ë×q Ÿ£ûÏEKÕÖº«2“dŒ¸qB\¢ãO­õÿ:\Z@y Ü©V}'Ù{k°8“F¿7Ü÷Ü鋟¨¯©s™œ¤¯ßÓdë&ðOüz(ùƼÓ?†„Ç&g¾Ë݆?®²x*¡gܨt¯ '=*âžHÿtþÕ?ò[ …¹ òýâ?ægU«•Uïª7™Øt3Òí3uÈrxKM‘©õì¦^ð?ã 2FÊJŠÔ•†ÿùú`W4~õASëë9\á”…AžÄÆ9Â4¾åP^Áûz}çgĬ`Î?Ñ:Ò`¤dÑ𤩖šuÇjùËÆ¿Nؾ¤ÖµX çïÿp$¿QO“GõÈ©©ËeMO•áÒybŸî¯_x¶Ií†Å½K—9ÃîÄÅ£câçúè{U2¢Ï\Ý¥k­Âˆ²TzV›»×ªï$÷Ø,×@Ù —”x‰Õi ûE†ßÖÐüë5.ˆÐåE—î-Åø²¨wñ½wÓ§Ûç`„pÖ ´¥~–?®–‹Çô È+,ŒJZ(ÑpªÜßoUýÓ©+_¨[¿a„`\RÌüiA×+ë>ºTuÆá#4øÑ´°ÑR.Àj1º’ÿA}Çòs(Fð³cŒ”µúLºõ¯mod8wH|ì’hßðÖ>ÇøÙ‘K?‘;Zuéú^–ÿG.ÿnÞ7&c¦:ïMöö ÎÛÇË‹)ø'|9,ÀÀ¼õhÎ6½Ç³`œNJŽ]!–Ùt?_ºúyƒÕ£ïlÝÑm~IÉÊq©U—)4´YŽ>hà¿°âÅÙÍZÔs[¹CùJCÓ¾N1={\‘;?L$µj¶ç\ÝÚdoO¸ÛÒw£N2Õ„=Ž=W|Àà¼1·AÔ\_þZ™tCbÔÚ“V`¹™ðÐŒð5—§;×øKÄ¿éãŒ_ì3¶”+&O™äµ~÷§&³LrëìÐiêòm4ðD³ áø/L €4竾:Øê—2ÅmKZšz§Ü~ñpmNDÐÔp·5&¹Æã—ÁÃýÆò(K¾V3Lœè§T´ L9rÚý’ ÕïžWiZ¿wp¢„˜AcÔ"Ày~KcѶsõ óÄXÝHÙž[¼xÒú‘üCq†®ìÿŠ néëmºÞ€…Ç> R½u^­éuÙä„aC&RëÔ–Wo«Öë:÷Ø)ˆácbHpPtê]iÕW’½°†GEG ´ da÷¦j›òwcؘþVµÁ 7+#mµ¸ù½3.ÚøÓ“þiyøt}CkÅó¹g`ÌP]ù‹G›«iÜÏÇ'ÈŠ:2ÄŠqÇg¦ÿËß°ýÒåCJóJ?Ç'9CÒÒ_ µí¹’ûJ“…ãùßL‡]TÌZuÝb¬£CâùøAL¸_¡©âûH-ÍJ ÀÔ\ºø`9×'dýpÿkb“Æ |^Nˆ3~Œ°O+ëØÍƒñ' L‰·7lή•EÆ-êqüpIž÷>C~íúŸ+Í“"ƒ“JJ.ÛÿÝrúèye+×0—oË×Á)±¦ºÏ/Ô'$ÄÞ3 *çH«’®JŸ±Nº€H 2Ô¾¨´;Ï¢«6ÔÕ²ªÜè¸Ùrî©+û5æfÂs8!ü†]K(zK¤ø®X‘?ÇXg,``@¼MýíAm½@¥:^(»»¿PxI£GVÃ-e\©tö=’ŠÕÙÍh‹½m]Œ1nëO@nß÷E]dšvßárñ‹5Ç‹øAÃCåŠ/O¡¬t>‰ W9rê-xtLÒKÑÔ·§Šul—Â…8Xl…‘ƒ“#„åù'ÌD$‰»ù©‡¦¬ÕF›YÀàGªÊ¬nïÃò6ÝCð–õ]ÉÍ9iè^•ŒlªwOåI ÂW(Lš•ž>Bš·"WãØOÙô5OUû[ åGf­úN²WÖÀˆ0¬á…ÂæYسbÛGk¨äÀ¢e@àˆƒ ¦>Qv@C˜w6͘ÉkøÝÜ:¿–’`³YëŒ% J£éjgÉ ¡߈¥AôÞS…_7S Ig³¯=”#y$œ8yþÒÇ àr¬f$teÔŠÚRd! Ï×W­,—Ȇ ­˜oÑ™Ûv±Q:+Er)gnƒ=çÒÅÅ$òà” MÏ”šìˆ¶7wú)¯Ÿ¹èñ ÊF<›ìŽá¢H–Gy;„1æ—®¬®»ug@å… šhª·mÁ ç¶r£æ0•>Nˆ5+®¨ÔNÚ$· óÍá—Õ´ËÒg®“. „#ü‰†•ÂÙ*‡;m°­¦hÿÔaK‚…‚+»½àf¢.ˆ½¸áXIK3Dz%‰$·e„ˆàhˆ}ç­ñíøµš#ÀAO dÐØLEÑÈ¢³iºìL`ŽÛÅá†Bõéò÷Î@»ŽûúÞ³HÔþÍYÏ}Uq¬¾5YŒç‹ì4d³å昭ˆGÓ2ÞmŽÜõ <,2i]¾ótþcÇFià¸Ä/r‘°á•Ë K °Úi·ºœ?cpê}P¹æ„B){ix¿ dþª\uÛ,ŠûÈÌ%Òö, ÚÒË´LG¼K—I2sDΈ”è4MŲZ+ nõK@ÛÊš5Ð|¸Bq85c]TdVÉ•_;ùeH§×ë<Õª${i D](oV"‹hEuýU;ÄtLe1©LÜÛG »½#‚9„‹AËFé¾ÉmˆïŸøE°ù|Mý¾Ê†ÓZ{LjÌЇÉ$æ¦ßÕNÇgLàlW¿§´9 u¡sášÐd© ž#TÖ–œ"ýn à_–ê&·í,‹ÂŠiid·Yêfg³ ýyÊÆ–¶OS6N/4}ù¥LM»”QOÅúÖ××¢Y‘Ü«Wªi¯måæÒ@”jS¡ª¥ã¶™M*ð—‘-æ`.}æ:éÊX7šMZ«ó9Ÿ[m°E{‘æ ù" Œì2ÈM„ç.²›:æ| F«ÑÁA¥Jk>ÞièÙa0Wq‘ÅÐ1:VbZ£ùù3=Ñ1ø!‹ÃW_DÑV@”ÎIKeΑ‹üöLóJ2¹çLÞŽ.M—¶U‘H°H&:–S^MÆÄñ@©³¹³ö"ô‹\àgÙö§¢‚B ®yõ’øóÌèéå[?„#Ëþì ';Ö5ÝÖÖ¼½K—I23¤xF0ɇØ/¦Æ¶ý)êÓ©Q¦æ’GO74öfa/Vh Q’H..—†<Óª÷${i D›ì¨Õa6Û»Ìþ1 U/,8ë|Wª¯-y¬¾&3<ø¶¨ðg##ŠŠóž½ª3¸ÅÄBl­ŽËqtÔ1±€›¥íÔs_+èz]ì'ΡrÊôÙ|ëüPß4€ªJ{ïÔDiÚUê½zè"¿È–]ªÔ ½UÔø‹(, WoPX(7ãz—[ÆÒš²éÚô 8<ØêZ¿i0—¾‹:éÒZn{}.Ú Èm߇å:уUx‚´DR_¨Wµ´DÕW؈ I(ßPfvшÂp>çÚ×q™ i½¦7ü‚.9ò(Ô30Žì¡þÊœíN¦TQõJ)¿òž–Àä `ÜÜls£ý`BOö¶ 'Òëjð‘sÚ¿;!£ÙÒÍR¤7é2KfÄ®^ø¯µ§Á"ãRž÷o|ölƒÂnkêåöù€µÜÒuk¨Xäãg5T8~&öL«Þ“܇Ö@µ¦ïKžkìvF”ùBEù…ŠÊØøþïҧ–柱» EF ¾Bà<ßE©2èÚd²ÒÀ‘PbŒ#¹7M.£GZuݤµàQ£íÚWTm½F4ÞnÙåÁÈŠ0ž›z×ù5©ûŒScümb©¹67ÇêA\o•c,ý6Èä?_sÓ_­ûC™KßK},ÕVÈsIp9ê® ƉôÁMz³ç;’Yú”žlGrd›UÈOœ†ëöžj?焳•Å™!SgZ÷Ñ*i2 Rœl:¼O×^ìÈdV‰¤Ò‚Cz—*§Ër[®Œq·Ï`È‘ËÐ×ȇr-?9ÑÒ¶2@t£Þ¤¡5+*÷$¤M•ÊÒDÖaàc)b}MÁÁöŽÃ}8 ˜˜Àp s9RÙív H£VUAÄÒþa†«Mu„hZJH UyÜ­sIÞ¤ëÒÊÝÇE´ÊÔîwâBB´½Ñh®w³äµâIÃWFÂÅF}µ‚å!‹âøUù':wRQØ›c"ÂÍu«ÿ,¿ÚñÝÏ…V}%ÙKk0bÕÕ}®üwfbÕ¥ŠÃ:ä+–Œ åç•5#àˆCŸˆç\¨i.Ô[´ÀK“`íøbÊJWÖ©u‘òG’tÛµ¼‰‰aI“‡ ñÇ)ê›ëB—ô &”ÄÈøÐX£V'$ÝÔŠ³Ñ %%2uE%}Ó:h,¦©ræ3ó9)—¶Úì?”ÙJÔ6YHØäÚò“f"ÂOhnPæõæ†E\ÈáHQ§fâ:¿´q™~Njü0m½¨w<€ç¶­œ¤Ë séFpB}x ;™µ2;~¡¦ˆr§ô½ƒ2TÑ“‚dAW Õ×s§ ¶@ð¥ãDt^‘±\–¾¤'ÛQã‚ï‹ZS¡Ù»UyÕáâ$¤×ý¶Ëš0íA’¢Ôu†ülK§¶a3ŸøQ)œ0gi X¬çJÝÛg0äÈehOÁ ’‚¹CÒçvü­ã˜"²ë6Ÿ*¤Ò£žΧ­¹ÕÅkóUÚvO€ðJÇ€‚u·„@Aι'jmÀ¦«y._–úÂèH (ESý›§*.¸·}Ö›t™ñ&®7’)›Õ$ ]!ÃÁdÔÏÏÝR®í²[²›Ë- Ó™´ž¬¤õä>YO\¼²19öþÌþ÷HgÔŸ«©+n+Ê¢/´‡ÏLŠà8Ð*å¦ìʶaÆE¨±¹b] ïɸ¸·T› î¿G‡Dó[÷(XµÕë Ï$Å<h©Ãå)¨lgÉ¥nZ #£bÃf„Ê|8| ›U[.•ÿáp‘!Gà· =jj_@[s«+ßÍo¬î|¤ÌG¼zp̪汣•åSÅHá­É1óÂ$r‚nlR|x±ò´Ûwy“®K\Ç%|Œî?U,=V[ëÉ-BÝIÆx;..ký¿—xt>Ï™V7»d–6xÒè÷†ûž;}ñõ5u#“#ƒ“ôõ{šl]Âþ‰_%ß8çÎá‹Îà±É™ïŶ<«ÛðÇ•C={3Ëcz3]®$ê“Q²Ÿþl½,‘ihÚ×)¦.ɽQUã¤GEÜéŸ.пÚù¼ CŸÃÐ×ñýâ?ægU«•Uïª7ypã?‹gt{(Yo©)j{òÚnê¹_1RVR¤®4üÏ—©]ÑøÕM­'b¸Â) ƒ<‰s„i|Ë¡¼‚÷õ6úÎψY3Àœ¢uÂHÉ¢áIS-5ëŽ5Ôò–Œ°=|IÝzñÎß/þáH~£ž'·íRS—Ëš6ž*)Â¥óÄ>Ý_¿ðl“Ú ‹{—.s†Ý‰‹GÇÄÏõðèZ—’}¾àê®¶GÒe©ô¬6w¯ÕÍ+™¥Êf¸¤ÄKœ_»Nö‹ ¿­¡ù×k\/ Ë‹.Ý[ŠñeQïâ{/î¦O÷ƒÂYƒÒ–úYþ¸ZòD¶´Ýÿ`ì˜û:ssÉCGê‡GE,˜9¶ªð©+ÍÍÿó#ÖÍI÷×Í!³Ánзü£,ìüëZhÚä`"¢ÌM]®ú½Q_m²T7ÕSiпµ80¿àˆéÖœªS:s¥RyBÒ°È ‚¶·ËHA2©Ýt¼¨ÀBåΤÑÖ-='2(¡º² ³B¸5uªz· Á»tqãOI+ŠÞ°D¿Ø«’Ç¡Û~çû¯™©+[u®^Ñõ¥[ZÝ(Éݤç³xL¿€¼Â¨¤…ý§ÊmñýV…Ð?ºò…ºµÆÁ¸¤˜ùÒ‚®WÖ}t©êŒÃG:ið£ia£¥\€Õb8t%ÿƒúŽåæPŒàg%Æ>) jqêÖ¼r´½‘áÜ!ñ±K¢}Ã[ûœŽ‘\jÕ¤Oè{Yþ?¹ü»UxߘŒ™ê¼r46QØÛƒ8o//¦@àŸðå°óÖ£9Û<ó'…“’cDˆe6ÝÏ—®~ÞÐ;7lv›_R²r\jFÕ¥G m–#‡ø/¬xqvsËkM=³•{¹íZFnéÜ›ã3-5v~˜HjÕlϹºµ©uZ&Ný&Ýòì¡âË€À?áË¡Üwæž°u›®cÝ`†+ {,;z®øÀ5Ïñ1ö .úºvÍõ寕I7$F ©-<ÉÞnÖûx~é>FøÎšëÇ/iüeŸÚá7}œÛ&O™­iÚýiÙ—?hÉ¡ÓÒ9­IðD³W&®|Hîs†.LX½6qõÚ„E;|K¦¸m?‘f„Þ9Ѝ8\ûkŽ‹É0^ØtÙˆÇù*Ãòµ?q¢_»»Ë”#W¡½Ñ/!i‘PýQžJÓú½ƒ%Ä :£Îó[‹¶åÕ_2ƒ¿˜ãÞã<öìÜâýXØú‘‰+'ߢ+{©ØàVÛñ6]oÀ‚Âc©6¨µ½/›œ0lÈžiÿÉJ~(Btí‚A bø˜X,tm®´ºq’»Ï,•©k¸€ûÞ›?SþnŒ á·ÖYŒ›•‘¶ZnÙ~æÂ£…‰g¶ Ç}î3ÔRûâÑóÉyêRmŽu´3æPŒ;>3ý©8réòÃGrÖæi:}÷À8CÒÒ_Œå^ÈË}äðùÇs”ºN:3jÕ=v‹±ŽæÆóqœ'$?¿8|©E¯¤LÍ¥‹ž[p²¦ÎIwA2tïÔKÄXP\ÆÓFì6â§q1ÉŽ+öÒÀ”û…ÚÍÙ…›Õ‚Yý#’z商üÚõ?Wšƒ"‚“Ú:FBà·œ>Zªi}-²§¶rC+¯Ê#„³§ÜÅQ}~¡dUrÏ€¨47ç·Ì麀H 2ÔmSz¸ íA_G]-«Ê%|g˹½bf–Îôä¥Ü~Ã®Šƒ%½%R|W¬ÈŸc¬³00 Þ¦þö ¶Þ R/”ÝÝ_(¼¤Ñ#«áÀ–2®T:ûIÅÎêìf´¥}ÕŒ1nëO@nß÷E]dšwWaŒËÅ/Ö/â •7*¾<…²Ò}ødÇKÒÝçÈu¨·àÑ1I/ESßž*:Ô±å â`±QFNŽ–çŸ0‘x$îf )kµÑfðø‘ª2«Û{©¼M·Çü€eýDWrsNZ ºW%#›êÝSyR‚ð Óƒƒf¥§æ­ÈÕ8>§iÓ×VØ—c5#¡C(£V Ж" 9PHˆx¾¾je¹D6LHhÅ|‹Îܶ‹ÒY)’K9[º°ç\º¸˜äOœ2¡©à™R“ÑöæN?åõ3=~AÙˆ€g“Ý1\ÉÁò<ûNèÆüÒ•ÕuWã¢î ¨¼¢°!À#"BMõï¶-bõÜV®µòªŒpB”¨)XqE¥FpÒ&¹e˜o–¿ìr•ÚUº. „#ü‰†•Âã/Oôu´Eû§[,ÔXž¦Ã₸ öâ†c%-Íé•$’­Þ!FGs@ì;ooǯÕz !ƒÆfÂ(ŠFMÓes$sÜ(7ê¨O—¿wÚç`¸¯ï=‹äAí3d=÷UűúÖ`d1ž/²ÓÍ–›c¶"MwÊx·9r#Ô+ð°È¤u øÎÓù;:m 4p\â¹HØðÊe …‰¥Xíî=΄óg N½*לP(Åa/ ï·Ì_•«n›Eño™¹DÚñɳ¶ôòc-Ë$Þ¥Ë$™9"gDJtš¦bY­•îÁº3´­¬Y͇+‡S3ÖEEf•\ùµ“_†tz}×¹—K­n°än@Ô…òf%B±ˆVT×_µCLÇR&•É‚€{û¨a·wD0‡pÛU§tßä6Ä÷Oü"Ø|¾¦~_eÃi­½cDf ÅÃdsÓïj§ã3&ð ¶«ßsþTº+­˜ ׄ&Kñ¡²¶äéwKÿ²„T7YÝYö³X, +¦¥‘Ýf©7šÍ*ô_ä)[Ú>MÙ8½Ðô]ä—25íRF=ëX__OˆfEr¯^m¨¦½¶•+­¼,#D©6ªZºu›Ù¤鎱˜Óu™àFó Ikõ|FèI_‡ì5Fš+ä‹0`·dõ6ž» Ènê˜Sð%8­F”*­ùx§¡g‡Á\ÅECGAŽC¶FóógzÂáQ‹ÃW_DÑV@”ÎIKeΑ‹üöLóJ2¹çLÞŽ.7m«0"‘4`‘Lt,§¼šŒ/ˆãRgs§¥ ý"øY¶ý©¨ ¨k^½$þ<3zzùÅÖáȲ?ûÂI‡§mì¶¶ì]ºL’™!Å3‚I>Ä~15¶íOQŸN25—æ¾V Ðõ»ØO:œCå”é³ùÖù¡¾iU•.ËwkLJÓ®RïÕCùE¶ìR¥~Xè­¢Æ_DaY¸zƒ¢c7¥¶r¡”—eDS6]›–‡'[]çOqíÿÅá·Óu©v}Bû: bÝ>À«m¾rNûw'd4[ºYNô&]fÉŒØÕë_ൻ‰ŒKyÞ¿ñÙ³ »­©—=ì'òk¹¥ëÖP±ÈÇÏj¨pì4=ÓêúKîH£Ö4àã}ÉsÝÒˆ2_¨(¿PQßÿ½øðÔÒü3v—¡Èh¡ÀW胂œç»(UÆ]Ûð€LVx J¬€q$÷¦ÉÅ[ÝÒªè&­ m×¾j¤jë5º˜ ñvË.®q@V„ñÚ>T]\çפRì3Nñ·‰¥æÚÜ«q{¬Uï•™áçknú«m(EÓ4Ž·¸¤8ÏwaŠŒ‹iÝKוҔ¥Ú b. îM“:ð¤¯Ã8‘>¸Ioö|73‹K‡#åÒV›½ó‡2[‰Ú& ›\[~ÒLDø Í Ê<…LZ¿PSÔVám&C27Æ7¦&…j 6ž»éº€2TÑ“‚dAW Õ×c?颯s€àKljè¼"c&Ç,®èÉvÔ¸àûâ€ÖThönU^u¸V éu¿mŲ&L{П¤(u!?ÛÒ©mØÌ'~T §ÌYkÅù†R÷ãö 9rÚSp‚ä`îô¹ë8ІìºÍ§ ©ô¨§Ç„óiknuñÚ|•¶Ýà¼Òq{¦`Ý-!Psî‰Z°éjžËÆ—%…¾0:JÑTÿ橊 îͼI—oâz#™²YMÂЙ2LFíñüÜ-åÚ.û:)»¹Ü2IëÉJÚ•ÜCõÄÅ+“cïÏìtFý¹šºâ¶ ,úB{øÌô ݨRnÊ®lH˜CÍëJxOÆÅý»¥ÚTpÿ=:$šßºWÀª­^W x&)æé@ãÑâ‚gUoˆÍ´[Z1c34õ#Ø G›é±CÃµÖÆøwtPGOg¯orüóytÌàGÊó/¬(3Sîæ5ÔÕf÷K¤©;ØåG7må4]Fº”Ñ3Í~dî§‹¾«Fû€Ù¨ÙwáòWuÖöB°ékß-=Ÿø"eµ%yêzçJ:–kèÖÁøS—'NmùodÏû®|Õ?èÒ_w Cä÷Ïó•u8ǨìF«ÄÂr3B7(UM !+¢„~˜LºS%ùo”ézûŽa–ÿEz¡n «fóÉœ+ÑáwÅ$|˜¬¹ó3u=CàóîP?‹Zµó\Ñî3{-jŸáüHAˆE¸ÃéJd5ØM½|쟮V›Áfd­ÄÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂòÏÂévTNDð’{%üŽ?ÐW·—î­è…1Ÿß @uQUið^X¯@$Ïß\ýÙ>“§/‘¡A‹ï“:\ž‚Êv–üXꦕ0B0*6lF¨,Á‡ÃºYÕ¸åRùr~ Ò£¦ð´5·ºòÝüÆêÎÇÂ|¤Á«ÇŒ j;ZYÞ9UŒÞš3/L"'èÆ&Ň+O»}É›7éºÄu\ÂgÁèþsQÅÒcµµž­ëN2Æ ÜØq=Xëÿu¸´À£3vδê;ɹ4^Þ_H`ˆª®+ù÷Ŧföj¤A&¼7 |--¼& ƒéT sº>ÃÍ„%¯Âos Ôó¾J¾æÝÝúßûï…ÕuÊéJ—ÁxXò(ìZµ7çõ¢$„Ï€¡Ó!L{çw*n^Üúęᛇ@é0@`~0ç[v¢†@€“¾ö"Èß çCoÞµû7¤ÛC¹ÈrxKMQÛ“×vSïœÈÅø‚Œ‘²’"u¥á¾\ìŠÆ¯>hj=ÃNYäIlœ#Lã[弯·Ðw~FÌšæü­ãFJ Ošj©Yw¬¡–°|`üë„íáKêÖ+2qþø~ñGòõ8¹1‡šº\Ö´ñTI.7 öéþú…g›ÔnXÜ»t™3ìN\<:&~®€G7к”ŒèóWwµ=„…(K¥gµ¹{­úJ2Óocy$·pY£™æ ’D”ço²´Bk¡:5Ι§àrôâÅÊ­ðÉN “`Þ‹×5§7*Ýÿaø0à“ ù_ÁŽcÐØîp!y Œº*ž³ˆ*?ìò¶ÿ³@SÛÉ]Ûeør1ÄÞcž…¤}°ó}0°—ŠtK÷W“!³ÁnèÉ£cÿhÚÔ¾jÁ¥ìâ¡°È Eš0RLj7/(•§nмF4ÎMó%*ËkŽi,XvT…Ž ˆ1pÃñ.]fÑnÄ刂WÅq 5T¢'þ’i¥Z“£ê¡ͨUŸHÆùþ$úä_Îy¿ÚB€ÉR­éY ,´½t]SD0Y€ÔÃu~\õF¥û¿ QË`L|rk:‡ X‡ƒÆÁpßtgqè®Be®sÁÖz(ø ªòàžçazìú±7ܿގÚúÙâëóÜ‘“RBce󾟔UÉpü%£&ú§Eq8v[evÃþc·Hs—ë3ky(ñsÙQÿ„,I¨eãæ-*µ+ád|ÁÝä‘̳ ;¡aw%ÚÕ;¶6*î›áIÇ;É‘ëüö 8oPߨ\Ù6‡&BÄ„®â¤ `ò°è)–†b˜åÇùÉhEȪú𢠕;“F[ ´ôœÈ „êÊ$Ì áÖÔ©êÝ*ïÒeÄu\Œ?%=B®(zÃýr`¯J pº;à|ÿµ#2ue«ÎÕ+º¾3áB«¾, J¡U/:<Ñî.\ÈúD‚â6‡Ÿj>LÌ‚œ'áxAÛoøü Ÿ Rh/À‘7¡¬©C/Æ-‡„D ì*(xêøBÁ \H|FMƒöo¸ûæÀÕö'QIˆ™Y³À×§õÇÂù:·´ê< æçB®F|ùðÅë@EÀ=/ÂG¡Á œþ°øõÖIìɇàL¥§L©‹aä$áÂF8~ zg=¸»ü `âˆø ¾ÚÜ6haû8»N]ì¨9ÜÈZýR°CýŸpäCP8¬ º¨u^XƒŒ‡[&ÁÕ!¯¦kÒÀ‘×dƒ»Žs ýýq§NÂÞÝ0÷ˆ>%Z`q†ç×êcD€ï¬¹~ü’Æ_ö©M~ÓÇ ÛŸÂDâ)óƒ¢5M»?-ûò-90tZ:§5 žhöÊÄ•ÉýqÎÐ… «×&®^›°h"Ÿt'nÛO¤¡wŽ"*×þšãÁKÕÉ0^ØtÙˆÇù*Ãòµ?q¢_ûšSŽ\…öD¿„¤EBõGy*Më÷N”3èŒZ8Ïoi,Ú–WÉ þbŽ{óسs‹÷caëG&®œ|‹®ì¥bƒ[·ûy›®7`A᱈T› Ô½ßT1r°!{¦ ÿ&+ù¡‘øšÅ*‚Äð1±X éÚ\iÕ'’ñ _>nÐh$!OŒ´cò-#îô縻0„ÿlˆ(‡* {2ò8¦í ‰káÖ!pæYøâ!ÈãÂôƒ¸]4†þĨᧇàóa×F¨T:Hf% ù˜: 6ÀW áûê´µ¢‡™wCåGðõðíëÐio³VÝC«@m‡@9`¾ ¼ ðã!A3èm¶<Ø2>_gŽCì˰òÈŠÉ=°ü7Xù<¾BWÝ Hý?Ç_‚ãù0`5ó]kå†üš çWL…AÛoå0d0\ÝÙæôÔV.ètñ˜¾|ÎÞu ë²; ^‚Á"8ö*\TÃÐg!LؑД­„Ö' 1 îz|ÛÇæZç5BïI5œ>=Y3¡ß:Xñ,ýÆN¾Ó‘Aý.¨á€¡-‘ÿ£èÉK¹!ü†]K(zK¤ø®X‘?ÇXg,``@¼MýíAm½@¥:^(»»¿PxI£GVÃ-e\©tö=’ŠÕÙÍh‹½í6QƸ­?Y¸}ßu:Ih:Ü]…1.¿Xs¼ˆ4Bš·"Wãøð¬M_óÄQµ¿ÕPÞyÙY«>“Œ ¸. ú¿p¦ h­EEĬÚŽ]Þ¥w£ qð%à§Í”Ócá·%€–Bœp €ˆ†Q#!gä]8¿2×C¤ r›Zã @é@£½ô Pt–ÌÊM1ÃáÒpò €¾ ' D Œ› %/ß'"p|uÔ…V X¡A‘!À÷a>(ã &LQ`¯hÛh³8}5¤r#lBêKÐïìÞ4²Co=¤¾]: H Ü~¢^ØSÉœßæýP?†šc€ü¦@P,t+®7ôBº!`X¿[„AŰí0ÒPª‡~ë!!ª üf@Œ v¿5F€?×CÔ{08\µÎ+kð .tAãùÖH <Bƒ l d®„¸xøö}¸vÓ?RÁÕrÈœƒÀÞò öâ†c%-S¤WRHr[F(ŒŽæ€ØwÞߎ_«9ôBÍ„Q,:›¦ËÎæ¸- Pn(Ô!PŸ.ïLÇOÜ×÷žEò vïYÏ}Uq¬¾5YŒç‹ì4d³å昭ˆGÓ2ÞmŽÜõ <,2i]¾ótþ㤑6ÒÀ!p‰_ä"aÃ+—-&–`µ»÷üΟ18õ>¨\sB¡‡½4¼ß2U®ºõjŒûÈÌ%ÒŽ{åkK/?VÐÒñz—.“d戜)ÑišŠeµVºërÌж²æ–͇+‡S3ÖEEf•\ùµ“_†tz½ÎS­úL²ÍNÇG“{þÓj P^X”15TðóU£kÏAå £@Næw¨7ÜжŠ%H ÀÀwa C © ¥Ë6é ð X8*Âå½PZêðÝ1Ôw$”{Õ¹Râ 5ÂçO7]hÅ€šrèA©’BM<ÝÛ[jWFfÐzÐÖ9‹‚àøG £ (Do¼—Êœ_º²³aê] þ ´\ÈœН@es+®7ôBº…päO  ¶Îäà… þŒ4€] aË*éåÐØ¶íÐ^ Jü Ðà¢Öye øû‚¾´G»4ì ¼ÒúŸ{¡àQ¸k&$l‡Ë ךÔu@†ö¥;gxî‚ »‰j7%_‚ƒÑjt¨kTiÍÇ; –)ã*.²:CÇ W´FóógzÂáQ‹Ã„Q´•À¥sr8•9G.òÛs0Y`Ì+Éäž3y;Ô­¶U‘H°H&:–S^MÆÄñ@©³¹³ö"ô‹\àgÙö§¢‚B ®yõ’øóÌèéå·µ˜Yög_8éð´ÝfµõFºL’™!Å3‚I>Ä~15¶íOQŸN25—\Ž”ËŽáb.GÊ%}ÚâjÔª*/í6DÂ÷ x0=$Ъ>îÖ¹$oÒuiåîã"Ze2+Œ-ÿ,JB´½Ñh®·Pn5[F­xÒðµéᓃe©~² II¯$ð«ªNtv8¢°7ǤoÕép¬+­úN²UW·µe¦%Ü( IgõÏ¢¾©·z߉Qepì$=ƃ4B†ÃØç!Ñ¿5”ˆ†iÏBÚpQÅh ýÊ>æÐ¦£`–ÀØ…0n{bT@!à¶mÜÖœ-²‚„ 0利ëôÕœY+flõ`·š,`¯€ HIh¾ö 8bH€ÓeÒECcÇ@ZˆC!êV•xmåÎéò$ Ïa»ëüZáÊ ˜#ãáÒOàèzºk+géºÆût»3d¡ ø0} } õm«ÝÍ¿@9&­€°0&Áا@˜Ùm¸˜kWZY ä HF€Äé<¼Í€|>`𤠯mîL&”Õ6ÂҠ߃pû|Ðíƒb¥1¸?$FCÝ1v#Hwôd;j\ð}q@k*4{·*¯:4w¤×ý¶Ëš0íA’¢Ôu†ülK§O6ó‰•Â)s–‚ÅZq¾¡Ôý¸}CŽ\†öœ y ˜;$}nÇߌŸ¹ôƒ²ë6Ÿ*¤Ò£žΧ­¹ÕÅkóUÚvO€ðJǽœ‚u·„@Aι'jmÀ¦«y._–úÂèH (ESý›§*.¸7ƒö&]f¼‰ëdÊf5 CdFÈp0µÇós·”ku“¤ìær Èt&­'ƒ|ßId=tá ?%vÞ Œû0ª¶QñêÉêœ^ÙMCÑðûñoÎs-”‚†¶½*´ FÈ\~~€èòáð‹Pou+Ôz öm‡Ésašj‡¿À´Áß €*…_?ƒé´ápuìÎ…{‚Íî–VÌØA`:V`†«¹$ݵý=ƒ7À`€«OÁ¾‹B›á¸/Œxƨ²áÐéÞ°³Cºã>†qÊaÛm3{7ò«; K ªòª<(A麷év&€[7Øêàòá䱎ït#ì[YËáöÏ  þOع Úš™kWZ!¨Ù Æ7aH&¸æP æ ³î?½k+@Ýë°ãÒƒ-F<BØPô œøÉÉ^TÀ dka÷y· €€üè“‘ÉÂkCˆäù NôýÍ›·óËõ™µ&avloï¥daù"šï‚÷’XX¼€€äÿÀÊÒ'âÅc`éo0ó–^ßcÿw«½ ,,,,®‘ß C…û47‚0F? †Ps¾Âòς ðÜú„|Ž@s¯ÜJ„ƒ(â§ÃÈi Úû÷ÒuvOºuA0þÔå‰S[þÙó¾+ß_ÅÚ±dˆüþy¾²Žü¨ìF«ÄÂrS¢½†ù0ñ6ðჭJ¶Ão;Ùç»Xn¼XyÚíKÞ¼I×%®ã> F÷Ÿ‹*–«­õd'yw’1^àÆŽ‹ËÀZÿ¯Ã¥ÝÉìL«¾“Ì“Å|>2Ø·ó›Ê//ÉÓ³w,öáŽÌøu|æê3×¼€ûxdùÐÂßÿ£¾K¹‰'ì¨ýÍ~À„ŸÝ~ͤ ~æú‚ k£àÔ‚àQ_×_ŸÓ„½.“­\CO~î³wVMO’€]}ùý©ÃWŸêÉ‹ Ná[öŸÿ{äαÙw„MÞ£À|’îzâÙe÷N’äƒYjO~õÌ•_šÚ#ñ¢ïxå“7¹5Vd®:¶ùÙ‡žØZ`lmf>c·¸Ýtîׯ7¾üæî<{àóÆÐí¡\d9¼¥¦¨µ,‘ÝÔ;„ñ#e%EêJÃÿüI%»¢ñ«šZOÄp…SyçÓø–Cyïëm ôŸ³f€9ÿDë8„‘’EÓ¦ZjÖk¨å,ÿ:a{ø’ºõòMœ?¾_üÑüF=Nžî$¤¦.—5mQ–JÏjs÷Zõd›¡þ­óZAûôãON‹”lìC›=æ¼pøwá…Fg“ ÂwÄ£Ï-ÿùÇ®qA¼À|ù?äo’>C7žÿ)þ:f´Òe²•+8qË~Üó4oÓ³N*¹¡Ñ>å½å1c>ýWýxlãèò¯ž_2òû#9mN!áÛ?+¼lëšÛÉ­Çbn{ñ›÷·l¿ú×7‹l˜$ëõ#»V¼67ã³¢°û?ÞõÕQe¿…ûšhßK’?™µìåßçÎûôö±Ë~¬e3Þº¿š ™ vC¯¹°GhÚÔ¾jÁ¥ìÈ£§®(sÓG—Ûž”6ÕS<&FèC-˜_pÄtá‹ÓU§ŒôÊúˆ‡Â"'i~4"ÀHA2©Ýt¼ Tžº)òÑ87Í—¨,¯9¦±P`ÙQ:&T ÆÀ Ä»t™E»—# ^Ç-ÔP‰žø7nH¦•jMŽª‡^4£V}"™¶³íMó I\N7½Sga]ža+ûú‘Û¿¾ž)RF•ÒF•‰º¾3-ïÓõÂVxà¸ûk¾÷ì·§ PVÜ[¹Âý'¿·ãà?—ôŸóyQ§ûììÕ߯Xú}ëÿT|úâ¦Çç>‘ʃ"¡w¾º,êÂÚ‰/üTlƒüovå½øÖ‚×¼|ð­âË®-ÿë뵓þõÉ™vìÌM÷N»ÊxÝñðæØÖ ËEAÒI÷Ç­Z›øÐ=]®YæøKÆÍY¾6qõš˜;ÇúˆY~œ'YU^¬<ªëæ7ÚZ ¥£#ƒHB˜­©S¹·"ë]ºŒ¸Ž‹ñ§¤GÈ%_5yv—;Z8ÎPWp¾ÿÓ· ÿnHPðµN¤+­úNr«|AÀŠ4ñ…Ëe§Ýéùß,mønÆÈÕûŞʼnñó¿.¶˜¯¼>LÔ‘¬OÊ}o(Ö!„LeÖÍuœ…à²!}¦ÆŒBÈX—ýÉÌ ÂÝPÀ ÷l×Ï£ÛÚò,N[ôñ_uVD7þõÖm!½u›t·ùû¼•þ7£ã380ëGµæçÛpWq½ƒÙVâ ;t¶?f‡·Y£áø†]¬AÊÂe¨±¸ÑIEÅÄý|¬Ò„²ÖýjÅp_ÆÁ€§?\ÈýnÁ¢ÍEŒ÷ér£¦ÌŠÓÙ×ê½KÏF^úòÇryß;Kë>˶÷¿{T@ç´íu?­¸{c͈—×O `/R¿þôä¥ÜßYsýø%¿ìS›"ü¦¶WWL$ž2?(ZÓ´ûÓ²/Ð’C§¥sZ“à‰f¯L\ùÜç ]˜°zmâêµ ‹&òIwâ¶ýDšzç(¢âpí¯9 SÉ0^ØtÙˆÇù*Ãòµ?q¢_Ç:7CŽ\…öD¿„¤EBõGy*Më÷N”3èŒZ8Ïoi,Ú–WÉ þbŽ{óسs‹÷caëG&®œ|‹®ì¥bƒ[Þ½·ézû€Hµ©@Ý+W$w–MN6dÏ´áßd%?!_ã ¤ †‰ÅI׿àJ«¾“Ü.¸-3&®¾øÃ›»nÆK]¹a•Ïr§?÷Öæ•ض/ÊçÎIjÒˆÐ9_ß<µüÕɉÑ)³·ÿþ»EQímŸùìÎwg4l˜ž›:nцƒÕ/ÿ2‡’÷}wfÛ"ìۅÓãúe­8lvÔ—Oûðä/kC¬“;à¾ïšÛ/³VÝcS\*¶†ŽäA£§Ä€lüýÀ‹(WdW™ô'Ž•†z­ÄÉ ’læ^5²oH#cž¹ØâWYKßáø4³øûC/G~êöÛŸ:•¼êó—‡ù¸Y Œ0äWwòOJb–®.nS!ò®§§˜¶¿q@I{e+—0ÚêkœNYóù†¶ÙŠ?àµ<³åÊ‹ d¿× ¬!dÌ~*¹­Ÿ$#îÛvü³iÕë&'EÅg=u~è[î]™èn/*ý¯¥Ñ…o¿¼_ÉÔ0éÈw¿žðÛŠ•{[~Ç J‹æjr/5Ú¹sã“–—W~r¸ ïÚ5e¤?»ñ?Ç·­žÄú מ¼”ÂoØUq°„B ·DŠïŠùsŒu6ÀÄÛÔßÔÖÛTªã…²»û …—4z`5ØRÆ•Jgß#©ØYÝŒ€¶ØÛ>¿1Æmý ÈÂíû¾¨+ÐLBÓáî*Œq¹øÅšãEü á¡òFÅ—§PVºŸÄ íuÄîsä:Ô[ð蘤—¢©oO2µçâ`±QFNŽ–çŸ0‘x$îæ§š²Vmfo€©*³šÜu×¼M·Çü€eýDWrsNZ ºW%#›êÝSyR‚ð Óƒƒf¥§æ­ÈÕ8>ikÓ×é«~Ø·B÷Ÿñó¾ªlQp¾„Æ&…L]ÿ‚äíi;kDý¬ ò¯õ3(Åáï.“oÞ‘!úª®÷§@,LôÀ±7+iùÖˆôJ InË…ÁÑûÎ[ã°™_Íà §2hl&Œ¢hdÑÙ4]v&0ÇmâpC¡€útù{gµÉÀ}}ïY$ïXFÖs_U«o Fãù";Ùl¹9f+âÑt§Œw›#7B½‹LZ—€ï<¿Cãøõ–6ÒÀ!p‰_ä"aÃ+—-&–`µÓnD8ÆàÔû rÍ …RöÒð~ÈüU¹mÃÆ¿}dæiǽòµ¥—+hY&ñ.]&ÉÌ9#R¢Ó4Ëj­t¯?*IÛÊš[v¯5®PNÍX™Urå×N~Òéõ]Ÿøv©UßIŽ(ä_ñœCg+/yäîÒšoÿXm§PÆÒÍŸÕÑ6 ÚÖ@äÃn†ˆ5gk:"”ÄÐ2€N½¸üóÁ[¶—ÞõÊï_~öñGŸý|±¹c‹S¨ iö¤€êí_œuê,q"o«Ý÷ÐgYWZ1`­»XN-”4Ð7¥ú›Å?KîºïÖø?ÈëU¹ñmT”—6J eUU—•–Z®ý :»vÕö*;mÑ™É#½oû.òk¯ØñÆïë·=yWä– †¯z8âÌó_X¼¶•÷t±ðD\€dUU—}UVÊÒTYVZêXc1iÚ˜htå—œ¶±Ýtõ÷lãC††pŽ»¬Ú˜ 2-j.ÖXºý /ñ¡ïü‡ûú-Sþ{ÖÁÿ§ÍZ3ðDÿñ¯¾ûùíKÊíäð@1˜µf'•j¾ZjÄÅù’ e7¥^Wè÷Ôþo÷者»·Oéj ¬ÏWGÃqèÜÛw‚¼mÓïoÈß»uÂÏtv­õWʬ¾ç¾>tðŽy« ­€ôU—ê¬ÎÓÁ€¦ÐõÝ>ÌÒ“½ ði‰¤¾DßÚñ ª¾ÂF„JBùÝÆ@4¢0œíÖ7â2AÓzM£nû§±›{6'è’#B=ãÈê ,¼º]}íîuª¨N‡ÄA)ʲÝZ &€ñD³ÍsµBOveëo‘^oT)çtxF³Ea4·ý³(mííΛt™%3bW¯?|añ‘–9ÿ©²"cÍ3^xìBSS/÷x°ŸÈ¬å–.r1±HÕeqË3­z[2)žä—T«•½iªñì¼óGù1Œ´¾øÀ¦53Óƒƒ!G.C{ _"ʵ\6r¢¥>ñ-ÿ$ikq fEåH¥²4/*0üɱ¾¦ò`ûôÃ}¸)—#&0ÃÅ\Ž”Kú´ÅÕ¨UU ^Ú?lˆ„îð`zH U}\ïδЛt]Z¹û¸ˆV™:;.´½Ñh®·¸wô†Q+ž4|mzøä`YªŸlBRÒ+ üƪªŽ(ìÍ1é›FGu:ëJ«¾“ $—€ÛëzûP§ùÒÛOîÆîýæ»çffÆÆ¤Žœ¹üݛ熶*ÇK{òûë—Þ6:#><,.chº”Å msFÆPcîŽßšx÷¿‹ï^ôòOÙ;g( -ˆ/i] ±–îù±œ7uÃ†ÇæÜÿÌ·§º­äÏfÚ]­A†²œ&I¼4ï—<#sw5…Är‹ó¯I0ÒÇO.ðu™þPN7Í}fIV|dü€É<8* W½Œ# Ëå2‡E!×ù5ç~öÖ9ùÂ-¯,ý𽳎·Æ¸k+g麭s7¶ê!–ÜM/üÊ}à«›;tÁÛ߬ :ùêúÓîÝNiÌýá¸!zæÔhgʈƒ!G.C{ N<Ì’>·ãoÆÏŽ\úÁˆÙu›ORéQO çÓÖÜêâµùªv?ã¼Òq/§`Ý-!Psî‰Z°éjžËÆ—%…¾0:JÑTÿ橊 îí'ð&]f¼‰ëdÊf5 CdFÈp0µÇós·”ku“¤ìær Èt&­'Ë÷}'0Œ lîmÂñDéº F=ðú‡/wá?kSñ™ß¶¾s¾mÀ¶×Ÿ=­}fÅÇö `ª:ùÝc3ÿï\ÛöLæPíŸOÞóZì7ÿþl‡¹êøæÇl Ùqñ_é¡\¨2€9çÕ9kSw¾úÞö™—·¿2c≹§'4Xiw´bÆ\•] Ðøs¶è/l?n¾7ÂÙ"ûÔñê§@ûÝ-a÷vlÂÆÓÏÜñTÐg/-z4W÷¿ÿÈ/½jsbÐûWï\^7ðíR»»ùµWìxcÿÛ'Ÿß°¥ ów7må4]wuîÎV=Ä^õõ=£¹onzaá<{ý¹ïÖŒ]ñÞU7¯à@ª?7~Sô_ÏLødáoÍ]š. éÙ_Ï<Ûñ·+ÿЏ±ÄH{â©ñwØ>ysû•ÿó1WßüÀ˜'~ur®“Ž\ûìЦmôêš#KÏáD?údd²ðÚÖ{2úþŒæM‚ÛùåúÌZ“0;–=ÓÅÂâ "láq«zÛ-"ïE±ü ÃçïÑ¡æÆñú@:'bÎÖ:¤Ý3?¼·.}añvÌdaaé[ø™ÿ÷ó®õK¦H:çåoßUûõgo–w¢XnnìÕÛœùFÅŒ/.øxù¤~¼Þù ¯<ùÓº©óß<®cW½Y܃n:üÔȤ£«^X»rû•õgf‡¶>Sç ¢¬MÙf›ÎìY?óž ¿”º}yKïâÜŸ$±w8]‰¬»‰õ»ÐÕJ`3ØŒ¬•XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXþY8ݎʉ^r¯ÄáªtúêöÒ½½p"ãóû¨.ª*o–yDòüØñÍÕŸí3yúö-´ø>©Ãå)¨lgÉ¥nZ #£bÃf„Ê|8| ›U[.•ÿaèˆÍø-HšÀÐÖÜêÊwó«;ß?ä# ^=8fUóØÑÊòΩb¤ðÖä˜ya9A76)>¼XyÚíKÞ¼I×%®ã> F÷Ÿ‹*–«­õdzw’1^àÆŽ‹ËÀZÿ¯Ã¥ÝÄìL«¾“ Þ• K° [¢æÄ¾ßÒ¨¸¦‘wß#ᑳboç+>Ú®÷øÅ+’—µ$jpËÝõµŠ¿Ñ¯OÙݨtÀußÎT } î#Ìí×?Q ®¯ýtGë3d?ñ Òäh¾¯”½îŠrÿÚöÇ7|Ò#šÚé¹ãÅÊÏ÷·\‡O‹¾3Õ—h³ÿR7õú ‚ÿ$º=”‹,‡·ÔµÞ}ˆì¦Þ9‘‹ñ#e%EêJÃÿ|©Ù_}ÐÔz"†+œ²0È“Ø8G˜Æ·Ê+x_o¡ïüŒ˜5Ìù'ZÇ!Œ”,ž4ÕR³îXC-?`ùÀø× Û×ԭçqþø~ñGòõ8¹Nššº\Ö´ñTI.7 öéþú…g›Ôî<0ãUºÌv'.?×À£+]JFôù‚«»t­UQ–JÏjs÷Zõ•äž— ‹Ìõ¦ ÒbræöId·œÜRrǃÇGÎòõ^ÜMŸ.¸aI†RèS8rß™óå¡íÉߪ®VZÚJŒ'ˆ5º?w74@ï?ubðt•ùÛ3íwö²þܬlsJì:k›îtõoå›/Š2FËg,–\þ¡êP‘½²¢‡t!2ìãÖïf†¦Mí«\ÊŽÀ“s(sÓG—›ZÿÇTÿMeð˜¡?µ`~ÁÓ†/NW2"Ð+Oè# ‹œP¤ùш#ɤvÓñ‚Ryê¦ÈkDãÜ4_¢²¼æ˜ÆBeGUè˜P70ïÒeíF\Ž(xU·PC%zâ߸!™Vª59ªvŒZõäž— ‹&·þçÜ뚤ÝLÙ¶Ø{ñ}Ý›:]7¸¥˜ÀgüyPeý×?kÔnL@ú†…­ÿ£½Øti xœ :Z³Ý¦¨4Ö:]³¡imöØ÷ÆÚÉ‘3g…6}^uAuó™üï¤mýlñõyîÈI)!„±²yßOÊ*SÇ/8þ’QýÓ¢8»­2»aÿ1ƒ[¤¹ŒËõ™µ<”ø¹ì¨ÀB–$T„²qó•Ú•p2H¾ànòÈæŒÙІ‡Ð°»ƒíê[¯ð‚¤ãäÈu~{œ7(ˆol®l›C !bBWqÒ„0yXôKC1 Ìòãüd´"dU}xQ€…ÊI£­ZzNdPBuef…pkêTõn‚wé2â:.ÆŸ’!W½a‰~9°W%8ŽÝ p¾ÿÚ‘ ™º²Uçê]_ºu¡UŸHîq ºSÛ™Z† œ0\$¡^ûÇÎúƒ{¡¤¯xÔ¤€ô(Nëƒ5u}£ko+„ØgØ$yf·õ–íÎí·Gýæ;,ê¾DÕæ­“¿ÿ‚E¾ŠïJ÷U"¿á‘3…õ[™í€‡Ïˆ½;hnúrsS³çSpN€4kŠj(i©Uýþ£²Tß;#MwùåF-ºGxyKù‰†¶„¢™c¿–ý\Ôúh¡7}l÷´~xúübxK~kT¿ÿä˜_< ¿ü–Q’01FÌ…§Žœ7»÷qÐRàp“³Gôʸ@™¬µyÊßëõ^Õ°Àa©„î§}]ü®Ÿ8]ý§µó¯0’`ølDÛKþ¨ÍŽŒ9ΧàG={»YOðüZ|Œð5—§;×øKÄ¿éãŒ_ì3¶ôo˜H|ƒ¶ÕÊîsä:Ô[ð蘤—¢©oOêp¢q!Eaäàäayþ 3‰€Gân~ê¡)kµÑfðø‘ª2«ÛÞ¹·éö‚°¬ŸèJnÎI D÷ªddS½{*OJ¾BazpЬôôÒ¼¹G_Á¦¯yâ¨Úßj(ï<=cÖªï$CÏKÐEmwÑÊ0.ÁdÖÙ4Z»ìš&sgÉ ¡xèhyœM½ãep¥´#jÀàÀT®~ÏΆb#`|Br‡P—m¿(­ÅÀJ¹„0Ž¬Ë³ÆŠd\¿)Û¾ÑVÊdÅ6älð`î‘@Ê×ï©ø5ßNfŽñ›Ìåa&oŸvfÎ/eÍ=g:Ö7êOc‘€à¦ áërêÛ±zn+·èœß9Af²#‚›1Ú‡ºR}ð‚É ¹ ûä>óFø_TÔØ\[’©¸þ££èó_+²ëh­µ¡¢ê¢pž-¿ÄÆ´øÅá ¼=l€µéû=Zƒ_c.©ßñÁá‘Ò@Ab†ïÄûE;*•;ñB •:%.—ãy½±õ£.ˆ½¸áX«·ˆôJ InË…ÁÑûÎ[ã°JÍà §2hl&Œ¢hdÑÙ4]¾k3ÇmâpC¡€útù{g ½Fã¾¾÷,’µÏºõÜWÇê[ƒ‘Åx¾ÈN#@6[nŽÙŠx4Ý)ãÝæÈP¯ÀÃ"“Ö%à;OçïÐ8ÖmÚH‡À%~‘‹„ ¯\¶P˜XJ€ÕîÞÎkœ?cpê}P¹æ„B){ix¿ dþª\µ¶uÅ¿}dæiǽòµ¥—+h™d{—.“d戜)ÑišŠeµVº×N¤meÍ-ïI4®PNÍX™Urå×N£:Òéõ:Oµê;ÉÌ%È SmwÕÊlµM‡.ñ'ÏŒIÈ2æ]R_ºhhtXjg %¹qÑ„¾@[ï´´qNd<ÇZZ_éto™;m¿(ƒEKKýxü[Á>/I%3Ê…ö*wÞŸaî‘Z¨S)hÝiHYÂ1¼cæÒS\äi TcC'qJ.ØÈPYºÄ|òrÛFH/låó N´ä—Ç “BÓaK[ñ"U¹Ù>”,ÂjTÈ-Kvoi”€g0\U:¿½Ë/)áù€½‘¡2Üþ³ÂGÍ;w4w©º”ÑRS EÚ‹ç´ãEdŽ©Ð\+ ™­&ó%ð2šõA<ÆsÙMT{éó%8­FÃS¥5ï4x|ŒÍ­¸Èbè =jZ£ùù3=áð¨ÅÁIFm¥0Déœ|½dΑ‹üöLóJ2¹çLÞugßš¶U‘H°H&:–S^MÆÄñ@©³¹³ö"ô‹\àgÙö§¢‚B ®yõ’øóÌèéå·µ˜Yög_8éð´ÝfµõFºL’™!Å3‚I>Ä~15¶íOQŸN25—rNûì Í–nN:y“.³dFìêõ‡/´½ÀEÆ¥<ïßøìÙ…ÝÖÔË­öù€µÜÒuk¨Xäãg5TXþî™V½(Ùe ö÷Z™Me¼xÈxñoØ‚¨a£Ùßwêý‡"Ú`…P9I€ÆËÇÇ`PÓž.m´‚0€Ã‹€á?!¥gZ9‡²7h°Œ±µºVkµ––Qƒ2$m³ÎíÚmÔw¸Î/­ÈÖhÒeƒ’‘<š.Øf4y·o°Xj4Ïã]5Z0ß>i2(gz=´$ÒV˜-ÃD©¡ÊÚŠkV6¼Ë¯]g5P. ] œÜÏ~üsWþœˆt£³¥\È“qèf{;HèÉvT!G&±Y…üÔ±Ái¸nï©öÝ[¨1[Yœ2u¦uÿ­’&"Å)Á¦Ãûtí™Ì #‘4BZpHoàòBåtY®É„ÜŠÛg0äÈeháKäC¹–Ÿœhi[•4|cVIDAT ºQoÒЀš•{Ò¦Jei"kƒ0ð±±¾¦à`ûôÃ}8 ˜˜Àp s9RÙív H£VUAÄÒþa†«Mu„hZJH UyܭϔޤëÒÊÝÇE´ÊÔÞ¿àBB´½Ñh®w³äµâIÃWFÂÅF}µ‚å!‹âøUù':; QØ›c"ÂÍu«ÿ,¿ÚñÝÏ…V}&Ù›tUÀŒ­ ó<\`Ì/17k(ð`ªh_d µY¯–QýÓGÕ47J%#‡ñ ÍȇÀ[· P¶Ò"Ûˆaò1±J®hØ0žºŠ’ ÜÔŠZÓ@q#‰º?­6@MWMöb¢Âzíê†c|!°#‹¹Ójy÷=Rï€á¸@H ÙÌ´½­€]æ×®ÔœWøŸÍM¿):é릭œ¥ë”õâqCÆôà uu'‹í¼H¿)ƒ‰ºÃ*ÇKÆÜ±¤ÓR°T)OTFßrg}¤¹@Abn°Ôžw®åØ‹Wã‚M©¯µIcc95X¯i=x`º_«ÖyAmU‘¶Úš›[ª44*¸?2–×Z'z°|¨¯ýò½³D1QŒØßn:ÕÈ~„é=ÙŽ|_К Íޭʫۀ‘^÷ÛV,kRÀ´ýIŠR×ò³-º›ùÄJᔀ9KÁb­8ßPê~Ü>ƒ!G.C{ N<Ì’>·ãoÆÏŽ\úÁˆÙu›ORéQO çÓÖÜêâµùªöÕXŒðJǽœ‚u·„@Aι'jmÀ¦«y._–úÂèH (ESý›§*.¸·}Ö›t™ñ&®7’)›Õ$ ]!ÃÁdÔÏÏÝR®íò=—²›Ë- Ó™´žô"}'Ù›tc+CF…Ù:\6qχ `·×å7ü|¬c‚ÁJW©;# :%Ä®3åþZuÑ'äþ!<ŸÖ…kÔp²îX@訉!qºÓ;«kûEF…ÒíË^´}¤«·P% ¬õºZ»X¬°_;YÅd~s—ùU·sS]•㬷û©WÀ‚<`ùó“Êóm›$\ç—¶]=cÈšéÓpVÓå«›¶rš®7G—[·Oþà­m0ª:rÞÚI57,é¼(ÛÅÝ–Qòa£Cûó¶Øêòó<̯șì³Ö$ÌŽíí½”,,?02u~²ۄÿ˜n„冋%³V%>z»DæéuÎnI'gÄ®^–,îë3ƒ_Ø1“……¥o!yÃîÍêïÀÉø‰Y!ãÂìùÌ×ý©–´N»·J|ÿü Ìh® —ŒKÊãdçGOO¦ÎìRºs‹Å)Ý~ˆÁøS—'NmùodÏû®|û­«dˆüþy¾Î5*»Ñ*±°ÜŒPöŠRûðAASHкZýÙï벫Ùþ„åz`®lüî3ãÀQ~fEgÕÕ|²ÃûÃDxØ­Qw&ÐŠâæŸö¨JÙ‡¼ÁùúAˆE¸ÃéJd5ØM½± óoEW+Í`3²Vbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaùgát;*'"xɽ~Çè«ÛK÷VôÂvŒÏï?P º¨ª4Ü蜷B$Ïß\ýÙ>ßà&Cƒß'u¸<•í,ù±ÔM+a„`TlØŒPY‚‡t³ªqË¥ò?îåü¤GM à hknuå»ùÕï(ò‘¯3‚ªyìheyçT1Rxkr̼0‰œ ›^¬<íö%oÞ¤ë×q Ÿ£ûÏEKÕÖz²Ñ¼;É/pcÇÅe`­ÿ×áÒ^õr¦UßIÀCC"–% Èj8^ZöA™Ž=ö×cøØÆ/93NÚ2ßF×Þå—†/O…¿§ë»ÔG!¾ãÒÿë„cž'˜@|EDÀ©—l£ö¡ësúçF¥Ûª3•Q_<øÏBüÎXöÓÖÉÇÇ&=Ll¼ Oõ ¡0›zu#µµÜá…vÇÃÄw౨ʡŸ]gßZÑ*À¶|Ϲ݂~ýzù:½³Œ‘nå"Ëá-5E­ »©wê2ÆdŒ”•©+ ÿó=ª]ÑøÕM­'b¸Â) ƒ<‰s„i|Ë¡¼‚÷õ6úÎψY3Àœ¢uÂHÉ¢áIS-5ëŽ5Ôò–Œ°=|IÝ:áüñýâŽä7ê)prКº\Ö´ñTI.7 öéþú…g›Ü9:æ]ºÌv'.?×À£h]JFôù‚«»Ú^âF”¥Ò³ÚܽV}#Y·a€$'¯ðÑ«Ø?tUZÊóôÅ—÷ÊÃÿDìpá<-,§“ ßtâ¹»èwC}ï ׿jÀTŠäã¿$ã¯cFoTº½cõ!ôŸK[‰—,¥u„P èågmÙµ@a«ž%¿z.Σ.ÙZce-'wݯýŸí³*ìþ§È¯>"•÷Ø÷µ<œmBKæÚ>ƒ¿¼‚ÌDßþ¨ýGeOTû‡ÐýÕdÈl°ô-ÿ(K¯¼ý7ƒ¦M&òð!ÊÜôÑåªßõÕ&KuSý7•&ý[‹ó Ž˜.0lÉ©:¥3W*•'ô ‹œ h{ÙŒ$“ÚMÇsÖ×8+œ›æKTVÔÓ˜kT ;ªÌ¤@àÞí}Þ¥Ë,Ú¸Qðª8n¡†òÈ”nH¦•jM޲õßE•ÙèIŒZõdŒ;"Þª‹ß+×TM¹Ueª¨”ø°ä¾¸ÝñŸ}½ÞþÈ>tý†7TjhT£^š¹ÝôézÏõ/#ðFî_‰ÿù_Û°—¨ó‘ºÝ˧Ñ»¨íPq=*¸D¿¾?Ôv/€¿z'va“ý…£¨´Œþæ0þÚT¬ýº_»ýµš|¿}3ßñ‘ÀÞÜ=ÞŽÚza¹(H:éþ¸Ukº' BÐéɸ¹1Ë×&®^sçX‘' 0ÅåúÌZ“pG<4wYÂ굉«ùÊÜNÉ-‰ ó½ý±„‡ï”úúJ¦<”°b‘<˜Ûég<ç9rßÞ)Þ  ¾±¹¹mM$„ˆ ]ãIÀäaÑS, ÅÈ'ËÓâ «êË•Gu”󎆶héèÈ €f…pkêTîMñ¼K—×q1þ”ô¹¢ä«&ϼ9w´"pœ¡®à|ÿ§oþÝ àk5WZõ¾dŒ”s@k°v<¡A!àʆ»Õ”>Îixy©8ÊÙs?™,>ʽ²uˆ‡”)Ä\t’kÚM®…9.„â"ìñ85G¹è$ád?áî† ·wqÑÉÖÇoíô¡7b±ç»ŽÐË÷vtÙÌZu ‰­ý–{z†¤-å äx!{æ+ÎÆdàßhM®pÆuGf×RÂÒfýÂEqÿZ…‡ô–Ø}~Ç=ËE»ˆ ]Æêƒäí2ïlå¥%ÁEùJ†“¦cäÌ@lÑSœê£ËWˆï8ÄýcL‡%¯p°$s1ÇæzÅ {z-Î=`_´uû /!©ø+÷b…?QgÚ^,–ôÇèË£È@áïÌBŸ@ÿ X@ç&jWÒ+ž¥jÒˆõ#ØkÈ»ÅsË`D€ï¬¹~ü’Æ_ö©M~ÓÇ Û« &O™­iÚýiÙ—?hÉ¡ÓÒ9­IðD³W&®|Hîs†.LX½6qõÚ„Eù¤;qÛ~"ͽsQq¸ö׆)Œä/lºlÄãüÆN•aùZŸ8ѯ½õ0åÈUho@ôKHZ$T”§Ò´~ïàD 1ƒÎ¨E€óü–Æ¢myõ—Ìà/æ¸×¶ìÙ¹Åû±°õ#WN¾EWöR±ÁåsÔ½‘®7`A᱈T› ÔÚÞ—MN6dÏ´áßd%?!ºvAˆ 1|L,Hº6WZõ…dÚrIE…G…âàa‡“4p¢yn>CÁ‹Å7 FŸŸÅ¦/"6Ï…m¿ Ä‰xR[ @ÿ?¼|‹-ñvÛì½Øãÿ%wÄÍ||w4Ú°Æ5Ë–ºŒÚp9^$É1…<óýn>×Öïêpç*'Iž|“9cs¯-vý;M§Pf­ºÅŽ.UCx?àãØèˆ°;¢8Ø@_È®ýðÖÀ™¶×jœÄ–e‘ê“ÜâJ\lñ«ŽqÞOëô›˜™ä¡‡áðöÛ? “ç’/§ºW®`ÈïÉíTI(±²] »ë~Üt: öÎV^ZÒUùØÒÿ’ÏûÓO®µTß5ÐÑ’)÷ÿIi `,#q]Õ+f$ÄÒôöfZétöÂÇÞÙÉEqk?#'Ûg}ˆ4mcNP,ÆÕ£K*»s%aÙL}’09z3¨Ï£ÿ“·ÝÛÙYgq '/å†ðvU,¡è-‘â»bEþc °€ñ6õ·µõv•êx¡ìîþBá%X ¶”q¥ÒÙ÷H*vVg7# -ö¶•/Ƹ­?Y¸}ßu:Ih:Ü]…1.¿Xs¼ˆ4_#½’‚D’Û2BaDp4ľóÖøvüZÍà §2hl&Œ¢hdÑÙ4]6G2ÇmâpC˃@êÓåïÔ&÷õ½g‘<¨}}YÏ}Uq¬¾íil‹ñ|‘F€l¶Ü³ñhºSƻ͑¡^‡E&­KÀwžÎßÑiCm¤Cà¿ÈE†W.[(L,%Àj§Ýò%pþŒÁ©÷Aåš ¥8ì¥áý6ù«rÕÚ–Èÿö‘™K¤÷Ê×–^~¬ e™Ä»t™$3GäŒH‰NÓT,«µÒ½¾bIÛÊš[¦F͇+‡S3ÖEEf•\ùµ“_†tz½ÎS­úL2²évf_ø ¥$ÒZ(š´‘ ›íÈ=ORs†þ±èDd¬A瀨¶õr»5"îåïíø}I8-­ìÔgöÏ“Éí»¸¯œ¦?û‘úìr|*ž!T…O’¡í¿ ­3%9ÁøÌ0Ø·Žnp6Ýt©uňš‰%%a) ÔâcÄ]Sðø ˜¼™®rcÙ6£ò Ô@ÙPu-*u6«8û>µ½eBOƒÎ $¼oû.òK¡[éõ/wÑÖÁð{ðˆ<ꋊ^°•7–d.ßBOn¤«ì€Þ¸ÏºuR©‹%yBÀÜü¢Û]\æzå "c1hD5ÝÍ&4Õ£¦z(,¦\€sÛ‰ãèqû `6p1u9öùSt9Ã}¬ÈìLæJdàaqbÖq†ç.²›¨öªÅ—à`´,O•Öü{gUu=ðï{³O2™ì+Y„= ¸!Š{U”ºµj낊‚qWÔÖj«XqíâÚj[­ÊÏ­Z¥T+"P@E6!YH {f’Y2Ë{ï÷G2a²½™É©õ}?ù#™óιçÜ{3÷¾»þñ­!ÞIWñ¹6†á_ȲÓùþ‹.]Ø¥6¾ƒƒ'(’ì—AEê`sªzDâ:BræÈÅãô|±c™£÷‚D9PíQíés“Wo®ª•Ì–Q&š;ÑŒ½XS æ¤ú^_U_-)8êÚjûóEçTmy½+Kߊ›Ö…]m øÑ®šeuô¶ÙÙz3Å/Í*}TøÂ¬Boëžë746 çÖ©àîúvwaRQ âÐPl^ ¿eI vµð¶¤”:?wGYëünü :vôê@@÷üîðŸ³vÝòµWø—%.¸H÷ˇ ”I§Ü$­sE–ê“„T¨ u¶©¦°€“HE©é™r2æ¼RÁs@iJO=÷—ÊÆurݵâyG U)ÎaZÙá8ûZ#ÅÛ¸^~³]ëlaé[Â]§ ÿü•¼OŠVwȨç¤zùv#)õ¡ ¨ŠÜ·KÔ''…XºrƒéF¨W‘èZÅÍ÷‹¿IþÒ¡;¹ø a¯â· —,Ôõïà-5 ãÇ4*ܳ& @lKì¿Oĵ’Éd™4FïÚéjëÊyEj¨è¦$åšÝ•ƒ¬îQdEDsÿ¥Qèª!Ë®aùÒéQLÒØ Éó'§7ïÜü¦£í”*t(“³&T}óT» BzFf ž—[Ñ쫵ZLV‚ÍÝÏ*.—ÇAB†¡g_ñtúÙªOºê–U :Y¹)´ÔA(5á¾´¦_|ÙX ´ ó?®˜š˜€¿Ê×Ç®`KLHõ»«ýaŸÇæÕ!³,˜O•ltV¯z:mp¤6åßõÌ;SLýÜ:˜9™Ý_È·}!ÿ²D÷Å_t÷M‘f­,•Üt ”f@ˆÂêÎ2У'yè@˜”‹° EäÄ«uWÚù&&¯ÁߤT‹Âe§*«ïQÚkåNÝug*Õ¯ýwHÐht|kûA#Çë‘ÿwåêóuû…Ó=ò)_l&ãÉ«xrR½|êõ* µ5p¤«§)RÑëSÄ)ÉTíí®#íeòzEýdiÆÃŠôÂ5ãÙúŒÒ4P”1R°z”Š4$ö.ˆ ³’“~«yâIÙ“ÄŽ×÷œW 4mlÞ}Dάsý+>ko–õé¶ ÙÞ•Ë;z†$og½G7ö8{ù§.·Ñ”›!Wn÷z•¨t*E”sRÆ1FßûC‘=TŠÜäò:e@i­¯ù dÒ,{ò¤D£5ó† 6W]ù'= &tz›NÑf4Øe% ºe@q:Úö‘?orž{WË]âÙr2ýÍk\ÑôÐâI7b.®«ÈmÞž6C´E6y:¢,yU¯Lö7°¥ÉUë';#gî(sÓ¾²µ½; †Ä¼ÇOÌÑyàÖUU»ÎûEðêÐY ¶s ÌÕÍ ²éÈââŸ%{—­k<0ÿ~åwOÉóÒ¿Q\´B ¤ §œ.¹MºöE ¿ҥ!°C©rP0QÈ@ù´­'5©§Rþ§S¼ò6Ý–*EgëîšÈÎæAD‘À_'¿w@·è&ý :9édÝc”UíBZ”^©×X¯²ÙÉÉ)Ê]•Щ¼½™ë ü»jE½™Œd¼>Z½½>oÚ©4¥Š??W¸u¶"aŠWþëÖx'5zU2’‘‚´ºBóQÄ»ý}ù«+tKÆÎ‚_†;u^ n9©^¾ÃÅ`e4êU$¶&»g‹³r¤-5ýd‰âïîv},² %[¸åNÝÔJiÆšîÁ©Yþùÿ)k.Ïž&×®ºS|»<û£vë„3Ï:·J[£‹è{ÈP–£ŽÊ¾| ;«¾Ú¼+ìX%ÅÕñÏW…™g¤Ÿ}Uš^’Üe}½¦>kßk¶ž•~ñ¼L|þê¯÷F¯{ÈP‰(¢t¨ˆ:½ Ë%G—^rð3Ï‹Ÿm}×£J°ãåõ;¥Ò»Oa–ýÛkw/*k뙆Œé‹žËiYrjP¾ù«;ötÔýr£¸`lîý'Hõ- ¯¯ÞÝ+^<éªn<–¥€ßkÍsD~²ˆ×Ó¾¦lûÒªö>'JÁÎ*ÉÞöXFÒeÐä]3V¯CnjkþãºêÃ5{`eðøôÏ]§ß4¿Sùb½üû¡VDR¾ÜÁÏ/Ö]_$ØD¼ Êï-ï‰EUê–ïü¥TükÝ‹±o‹|ÕõRÎC†ÛGa/àWú…4ñaÝS‹ÅmŸH³o”/ù³8Ã{°iTóJ?À¡ltlúDîüðUÃ_a¨½‚öƒy÷ÉáÿžÁ ŸÑ¿8ßPq+ÎùéG£[ø5GÞn¨¿öH£®”ö†BŠo°^~lƒîÍc•'>Tú,k‰2¯Lwè9©^¾ÃÄ`e4¸Ïê•:m›¤×Z ·_%þi±ÜÚG' ìu‹~¥{&¼ÊªÁÏÉzBUXûLð îñ ÷Z¨Ý"_y}ð#ÇIØKu¿˜Àë7ÊÍÚDL,ò³¯¿³`œµ¿¤ûœŒïÍI+QÇkL8ï¶’ó‹µW‘ÐeˆkV_?êpû¡ñ¿ÅêÕˆ3õëŒïÎL1(E‹!K|õÆöÇÅÚ±‚ƒ3 §Úhhhh¨`.Ñ-›ËûÈë*éL®¹Q|³4sGü†5¾×Ä_¯j?ž[bø×/ k'J?SZUo8†+3„“NÑÝÿ3ñˆéô_˵Úáâƒ3hD0ÏZ8fV×ïJpÇU+ö}çý=´ès2®¸4%ù`W©<Ü.ihü7⯗?lÒÝxá…tð*ë>—fÝ/­Ñ®ïÒˆa¨W2+Ÿ ŒÝ¤»ÿrñÍ×t_ܺ¦.,â³Kõçû”þüÉßä½CÛú½aà­Q:-Q Û]©øÝA¯vIVúæwÀ£å’††††††††††††††††††††††††††††††ÆaäPß?¦¡¡¡qXùäÃÓС– ¬àêw4ª €<QÝ2FÜ]ùp|; WºÿL‚3Á„jB6œ“@­ð6ôo*À-0®·…Jx $0Â=à„å°ópÇõ]`À.ˆ!?ûÚŸ&…¶/ïzsï‡Õð#F0›'O³´mi«ùo¹²G7î²âSZk_\îõ|f}nÖ5—ÛÃOQ*ßÚóÞÞ(sIÐYŽ/Λ›\’`0#·¶5-ÝZõï°sF –Ô9¥…³ÒÍÙ¿½¶æeM}¶v%سo=jäqRÝ Ÿ×TõNUÐ[0nä¥yI:¹©¥þ¹-5¢>ä-žt#YW—0ç„É—(ÕóVïßËö¸Á, ¦Ì'\€¿áö•{ËcÚ'7WñXލ±4¢$ À ÇÂý¤·Áp ¼Ôûsì/A¬;wŽ€M¡ß]ÖzRWºßiìð2\@S¨¸°¥w'£ Ž‚®CTEXÇô¶³Ž€$@ ¤ð.\m‘½ø>3è¦\Å·ri]E÷qpJÐ;<;r³eÊŒä=Ž÷wþ´¸`}Ó_žiéÞc´žuuV,Ú¢Á:ÉìûtGùӮ֔˦Œ¼mjgÙÚîNÐ'Í>v–¯nÉêÆýæô…ÓF?ª \·ÕÑ}ø¦h>eüèë ÌM.‰N½ÑO8qarË“ë÷TˆöK§ß=Ùuõ—-Žh.˜‰+]õ€£Ñ‹F޾$b:6¢eEþº|×ÛÝUX‘|5±ÕæÁ½ŠÇòàºJA#\ð(†oí’m ð5¿ÅHWºß]¬°ŽƒJ¸þênÊðlƒ/!þ§ÀUð@oõ«¡6ô»34Ææ†8‡  fj}A5?šLétÝÚÖ}dÙÛ3ja”‚JL³ZRgËóÛZºÿð6¼V“}âHkšÈ~ R³óϱ¸_Ú°o½GÁÕ¼Ö•??¯à´ ç{ô–qúög×”ï͘ølA?Ó¢qRŠ®¦ªnµÓ'á[¶/÷Ä\‹M Š.H|骛ŽBט}Ë(ãN§4&–þM–åf‡ssÛ{Ѫ^Åcy0Ý¥ ÂyðxfÃ&ø,€<6¡ƒÙp<¸áuØÕÛB\ …ÐÛà#hZª‡sá°‚­pØ,†³àd°^¸'ìpou¯.¸x&Ã<øl‚[ ~zu­ìÁÂTXïÕå14ƒGõáãÕÁ]BuèÉ ¸já±ÐÝöƒåU4éª3XùZá7ÐKBs ¿~Ý{–j2\ÉPŸÂÖ޷ЪH]Tç8Öý{ AøeØŸ_À)ÐÿäëÏ j ³~ø'¬OàXøÜ>Ôùãé¨ÝÓýÚ8ãŒô 9:OMëò¿7ï »&À–tüéi“ †` fcãŠÕî¨.H‹¨kL8oa®îýÊÏ-i§ÍLÊMhnzyi›#’q}VÆœ‹ôŸ½Û9åüôÌúÆeŸ*Ç^”5&èXöjS}Ø¿)Ë~ÊEŽwXMGf™=­5¡÷`]IŽM×Q½Î«€‘Wt–¯q·’93Õðw_ÅßöÜ–6r3²&ûËÛå‹ ²JjkÊëÌcݶ†¨ !¾tU‰¬+˜Ï*ÍϨ¯xÌWô`æ°Z(ŠÈƒåhN[4£äˆŽÊ[¾j¨ï{Óm¯†nyPÝ¥ ÂL¸ný¹ N VËaFè_ÁIðyèÏca]ï¹Ùóàýè¤vøœ&uÂC¡&Ê ËàœÞÞÞꂨ{52̆±ð,€¹`†ŸÁMp3\öÐóõÆWÂq\]“bµð\Xž¡8ôçâÞ-Ó,^ L°‚psHz ,„»Cý¡åU4¨”¯n†Ýðx¨ r=Hð›PùŠp?Ü×Û`ÔG!=tuRl¸‚ðÓF) p dÃp*xáµ~Ï< eð1¬íÝÙê—Á.¸ «ÑØ/5té)ç]’jÞÓôåo~ê9'[{Fý„DÛY—e9[Þy¡ò•wÛõÓrÏ.5t'aJ<ÿæ17ÏÏH Ç\]rë¢1·.*™{ºYnèû”ܯ«^¹ÿ£ÍÁ襽qê)Ö–mqTêI³’…²vgªmLjOÅU‹(’t8Ð/;×êx~G›³{¾ÃPhÜžvÑ”:¯Xy}GÃÖNÒl†è.ç nܾ{…÷ÈŒ175îÔŽÊv»£ZRoºñ d(¾2±íÙrGô/1QÛÖŸvìÑœ=ýµ™ãæç'Úú Véô–‘fÁf³$õýwˆäÕÐ-®w)øáÿ8 ^àˆèA˜„Qp¿ -`n~0 æÃž0³*R~'À:8Jû­Ÿøœep"Œ‡ÆÞRu¯C‚2H€ôPOëtH…<Ø 2¸ FôŽ¢‡ pœÀpÜ é5•§‡bXs¸,Ñ:*ñ¾ \ ÉXáFÀ_ãË«hP/}uΆûÀ³¡Î†?†­ðU—¢:‘3Á o2’a€;á68€- ¤]÷Ájøddd/üLpÚpÐÿ(C¹)7ÇÜøvõ'{$—¯ÀöãâÄ4ƒç@Ò§¥8þöI{CÚÚÖìL¾h²ÕºÕéRÀïþxi¥Ñn?ÿ'IÕoÕnlUÙ «êv?Bòˆàò—”wœ$Ë#¢uX0Å-uk*ÌYÓs3šê_Y¯Ì,M0ë…ž®ëàE–Æ‹X4rìEÒßÖW|êí‰T´Šø’$è—o­*[Û©+P0éÅ(§zdÉ_ë tZLSSõm•~o´ÝµxÓ2:sú‚ñ‰ßlß¼ÎGѰZVmX¿Ã®Ó¥X­¥ÙYç•–gßqÓvgøºŠ€«îŽÏi~wUï!lu¯â±¬ªo),¯á"XÏÁå¡•¶ÐW¼Wƒ˜ 6h`?—Â^XÛ{›U‘fÁÐ ?‚Ø{ƒ‰~À¹°ÌÐ&è• _Áe0 Fǃ¾ =Ð Æ6ÂËa\ ÷À=° _¿ý/ á°Àà †¸o†Uwü~³áU8 ráM8w^ED½ôUá.æÃ‡ìƒåÑI]ŒÈÙ¼;ˆÔ GB"Œ‡û`:¼ ç‚2̇TH£a!L‡×àÌ~5M·á8} A `H]àîÆÕ{ºîW\ÍcôÆ®ïFA—]dÀ–rém)Ÿv,". Åí xI’_GÀÙge‚ºn õ+wv(€cCÕS_ „lˆ))?™›‘Õó£ø¿úKõê†n±âó|]””@`ûæN¿b’å^QÒ¸ó Æ.)ßÚP¶Ì~»ì‘1èĤԂ¹ÖÆÅÛ|’`³ëð£»G\4Ï>jâåÔܶ¶¾Ù–÷ÀôñOèËnÙîhïRÌÌ8âZûÁså÷ïÝvCy×0I|éªYVW47¡h’³zÁ~¿<„q9uä@ek× LëÊêú•§,),˜¹ç›zõË”—«ï`lD¯†l9‚n|¥ïB×’˜z'¦Cóz?Ÿúºÿ L€³áExþ‹Â^þT¤% ƒ/m.”…­o ¯TèjrÎ ;®¢Û é½Ð @#ìè™VXÚUŠ 8‡¨Ç+ÃãðC¸Þ5ÞO„^–âÉ«ˆ¨—¾ F(Âz~ÑK]TG€®WØÁæGØ@¬‡8’¡kùÞ–ÐcïÀR(‡S!} k]}Ǩ_—¿‡ÄÞQ‚^©§W`Nñø=aÓÙÒÞº?¾åÚ†ôHºŠÏ}ðkX o²Î÷_téÂ.µñß»&GZ¡p-GmpL`.̇8?´ AEÚ5=Ñj)G=¬%è’úBÒ<ÈÅ+º6IÎ?ü æÁ¬°Ï£g°Ž…4МDŒwì†)pÛ`ópäUDTÊ·O&‚=¬Ó#‡F†R¡ÿMêÒCW'ÕQB‡¦˜¢È'´CÊ ­å~pA"˜’ZC4!®wN“eÒ½k«­ë]K‘ªºÜ¤\ó ЬH‚hî?w…®²ìrœŽÐ3Ø9´Uá}"ŠI‚!yþäôæ»ÞìÓÿ*t(¶¬ Í•ï´Ë ¤gd–àYÛˆf_­Õb²lî~Vq¹<ô†ƒ=O§¯ÞÓúñ5zzsñ¤«nY• ã‘•›®ù¬ëgó¯÷ùOÝÏWmºaSKË0·bvjbþª¾7r ¶ÄÄÂ>ƒ[±y‹åºq– ´ÀFH…ËCŸØá–PÁ·Clù¡©ãB_¬êÒ&C*Œº"¥ÒµòcdC>|Ôû«\Ý+uê¡áØ8C¯ªÑàùÖEÑÆ…‡±< À+<6«O^©£^¾AðB˜`tØ4J~ø€'À€ãB­»ºôÐÕɈtÊLHd…¹¡Þp:¤@e¨¶˜àªÐb®†Dhì·Â©‹®Úëã. ÿ]†²ÕjHNÒÛ³gœŸ;IìXµ¾3Ô"+M›w ¶Yç¦Ê4ØÓ-£¦eþðl[bØ÷¯âí¬÷èÆgÏKÑ'g%L˜d±Ñê2T"Š(2椌cŒ¾mC‘=at×O’ÅÞ]Jk}Í^ìöäI‰¦ÂÌwN°¹êj>éy½Ä£Án4Øt‚(ˆ6£ÁnÔ'„t޶}ØæMÎ;:É<"%ýªÒœL¿cMTû’âI7b.®«ÈmÞÞ9ØäélðIQ 7©ze²XT:âÌì䉩ɧ»¸ÄÜ´oßÚÞCbÞã'–>{Ba¯m·‘¼ºåº‘Ja¨C›ežƒu° ðHhéŸ7A-l†÷ác6†^Õ¥åPi°v†9B–÷ÁZ0B%Ô„öžDé•:ÞÐÁ ]':t55½×šô°Þ€üÞ®à6ø6Á.Hˆ3—{“¯Á;0-–xß 8Bíw¬yÕ?]uÔË× ; vBE¿<–@ œͰÚ¡ R¢º:‘®U WÔe1ßÁŸÁjx€…!Ëø´ÁNØ¿àŽŽ°Ku­–£1CYŽ:*ûòQ€ì¬v~øjó®°ñ3ÅÕñÏW…™g¤Ÿ}Uš^’Üe}½¦>kßk¶ž•~ñ¼L|þê¯÷F¯{ÈP‰(¢t¨ˆ:½ Ë%G—^rð3Ï‹Ÿm}×£J°ãåõ;¥Ò»Oa–ýÛkw/*kkïé Ó<[Ó²äÔ |óWwì(è¨ûåFqÁØÜûO(ê[__½)ºAüxÒU'Ýx,K¿×š;çˆüd¯§}MÙö¥Uí}Îø’‚U>’;¼í±Ì°ÅcY]W½âaœ OÀtðÂgð§Ð|îƒ+áh˜ø+ÜšÖQ—úàBX¥PÃU0 ¡-´ïqL‡oà~x,a£å*^©ã‡½0þÀ»pìdýi×òÇBsü]”ÁEðœ­ð ݗxø!Káë¨ãm‚×áx9ôæM FLW='UÊ7WÀ«0 öÃÃðPoõf8‚‹¡Zàý°‰ué!ª“ÙßÀ$¸žî-òÀàÂÐN«Up/¬ I}ð<\êL¯‚ÅðI?ûÜy°ʇ\{¾§ò³¯¿³`œµ¿D7î²’ëgYýÍÿ¢Ž×˜pÞm%ç÷ZJ ï<%° ì]óDP`ó¡ŸòÐÐPçP@yq.Iè‡~ `üáó¿­ÍÔÐÐ8”$Á3à€Ãg° €«ÐÐøÖXÚü'Ø Ç +&xšàPà|(;Üaþw3蛈`žµpL×úr”àŽ7ªVìžkbþgÐçd\qiJòÁI~¥2kÿ£ì„»aœ 2ü†n¯44€Wà ¸fÁ¥ð«~w&NJμ…–Hk ÎÀË=u:[¢¶»Rñ»ƒ^í¥¥}s‰€;àÑrICCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCãûÅ€ËQ ùÙ×þ4)ìÐ8y×›{?¬†1‚Ùs'Áž}ëQ#“ênø¼¦ªwª‚Þúƒq#/ÍKÊÐÉM-õÏm©Ùõ!oñ¤‘Ⱥº„9'L¾D©ž·zÿþXã̲`Ê|òàÁeøn_¹·<¦üò*ËÑèÆ“Ïሖ{'ÚVuNµ·ÿ5·É¶Ô9 ¾¿5¸›ûT7]ÂÓÓ SvL-æËL YŸ”¦ç°i÷΋šƒßNù®tÿ 2’RoÉK9+ÉðÍ®]Wö-2qR~ñûy<¼yÏ á_„¢áÌüÜ{2 tÊŽ¶Ç÷6¼ç ]B&&<6µðLÙ»²©åéíC»ïC# Ý”«øV.­«èþU‚Þá©Ë‚Ù2eFòž Gû[9÷ôP¬oúË3-Ý;bŒÖ³®ÎŠE[4X'™}Ÿî(ÚÀšrÙ”‘·Mí,[ÛÝ ú¤¹ÓÇÎòÕ-Yݸߜ¾pÚèGuë¶:ºÐͧŒ}]¹É%¡ëo[?uâÄ…É-O®ßS!Ú/Z|÷d×Õ_¶8¢ÈñøÒU8]±häèKb¼ƒ+¢eEþº|×ÛÝUX‘|5±ÕæÁ½ŠÇ²Šn<ù¬ÑEÚît›=Ò@/BRbêÙíÿjì׉Ÿ§iöW-:åÞÒüÂo1ÐÕîáF—S°¬ÐZÛÔxÏvçzwßþ‚ÉšöXž©ßÉíâÑ#ŸË >W±çÍNýÅùOLÛ¶Ô}Öµ§Qvß½¹âõ”ÔÛ‹òW¤·ýlÇù¿ó-Ö'ƒM¦tºƒnW×äÓzý‘eoXc«¡RgËóÛöý«ÉUëõÕ¶4¼VãÅbMë.!5;ÿ‹{éæ}ë;:kš›×º°çœºOGÐ[ÆéÛŸ]³ù‘º F4NJÑÕT×­vvÖµ5.Ûש·XlQ]¶_ºê¦£Ð5$fß2ʸÓ)Å”•QX–›ÎÍÍÝ?[Ú:=±$ êU<–Õ'Ÿ5ú£øß­¬¹·Éÿím˜Wdg0ؾ &º‡•”äœW Íöî¾`Oó¿\¾7ˆ¦+G¥gº¼½?Ö“îÈ2lßWû۶ίû½V†ä;3Œ=/å’øº¹aΖš·Ä”§KR‹¾ëʾÄxHr÷´Å_¿6Î8#}BŽÎSÓºüïÍû†7 iIÇŸž6©Ð`j66®XíŽê‚´ˆºÆ„óæêÞ¯üÜ’vṲ́ÜD榗—¶9"×ge̹HÿÙ»SÎOϬo\ö©rìEYc‚Že¯6Õû>fʲŸ2@D‘ãDÓ‘YfOkMè=XW’cÓuT¯ó* däåkÜ­dÎL5üÝãW@ñ·=·¥ „ÜŒ¬Éþòvù€’ÚšrÅ:3ÇXw ­!ªBˆ/]U"ë æ³Jó3ê+ó=˜9¬–A'Š"ò`y šÓÍ(9¢£ò–¯êûÞtÁ«¡[\wèù,L*½ÔX?ß•ú|ykeåƒrÆ+£ì¾•ÔxC·h‰%é™÷H9Þ,ú|î—«jŸh öôsD½åŠ¢œŸ¥Z²Dƒß4ïŸ[ÙÑ3< .±(-sqAÊ SwOzcEùÅ-==7!'9ãÁÂÔS-Ýã:»ª+fèé¨y5x¸Æë&>ëÀ®5J£óGÿ3Ë{Ù¦Úu²iAiAêž=‹Ý2º„ßM+:WP¹o÷Yu¾˜ÏÄ1™Y¿ÉOžf¿>P· ¦£qxZ÷Áâ§—üÍî8gKCY¨b¤¤|6šE›jVãÈ«¸¼HL.ør¬p㦆”¼œ[3¬Ùb¯T— :óE…97§[sD¥Éí|®²þ/®ƒwPªëFrÙò³‘Ɇ–šEþî§ 3so6¶ß¶;xï8[¸ 1Á~„й¤5É~fðM·rqª5õ€?üÊ[)Ðñ«]-Ó'eޕ⸡5º{35ba(7妧œwIªyOÓ?–;¼ù©çœl5öÈmg]–Uälyç…ÊWÞm×OË=»ÔЄ)ñü›ÇÜáëŠ3wÔ½è „ ?Gæ¤x¯$Yh®»pKŶX×ûÛ:59çíqé™ÎúK¶ì:i[í½šu¯G –w*Ù “ ?ÚnDŸp¦ED4LÒ·ùeÉóóMåG}]ùÜ@ÃI)…[¦Oø¬Ð¤3e|tÌĽÓ'î=¶ä×¶ð’Fdäÿm„a};ŸÕxFåäÞ–8,7Z¨Ä+]ßVcJ¹º'!Ápv^bgKóê`|y—W=2¦ð&£ëá]µ¯õŸ˜L*Î/¹$9ð\yÅ ›+q[îXp•9˃“hKû‰É÷r­«m ©Î”ü›|ӪʆÕ}»3BºÕ`|åAA?«0ÝW[ÿz{P0™3û•°ÇÝò‡áôl[úpä²F†rSn޹ñíêOöH ._íÇʼniÏ ¤OKpüí“ö† ´µ­Ù™|Ñd«u«Ó¥€ßýñÒJ£Ý~þO’ªßªÝت²/ªªºÝ<"¸ü¥å$'ÉòˆhŒFqKÝš sÖôÜŒ¦úWÖ+3KÌz”HE–Æ‹X4rìEÒßÖW|zð6vÑ*â H’ ?j\¾µªlm§®@Á¤£üª‘%­'Ði1MMÕ·Uú£¾æ=Þt‡ŒÎœ¾`|â7Û7¯óQ4¬–•@ÛÖï°ët)VkivÖy¥¥ÇÙwÜ´Ý~¥mÀUwÇçŽ4¿»ª÷ˤºWñXŽFw¨$Zx£¼ñ_‰–cÌå»+ž'ûÇ©:K—L4]Yä©ßûë&o'Tíoø(»èb»~Yc@¬zEªïôð+Šß_Ñkõ‹ªTg½¥Èæm¨¼nŸÇè|MŠ’×#Í׌LIlÝ÷êö@ôÕKÊØƒRu¯ÔJw¿;h·túS ž¿{Ì'§­Ó¹³º[Sñ% 8?ærÖ³IÌÏ,|5ÃuMYË^P:½ºNù¶ÀÍ[k?ð+ˆÒ‰9E“-:]‡ïƒj¼~¯ã%Wú]¹‰KÚÛ[ÁhI¹6!𷽡A¬¡çU\^u׌GùkgU8`Ì•8º·Á¤FKê­ÉÊ[;ö¿Ú.ïTÕµßgycÇe§KRl>ǧ¾ X0œ;2{RÇ3Û‚R¿;WM:Yò(¤$gݤk™Û°ZDÑÔߎ\×ìÓ&×9µ‰Ñáf]àîÆÕ{º†WW³Ä½±«…tÙEl)—Þ–rði‡Á"â’@QÜ΀W$Yñuœ}Gªëv¡P¿²qg‡86T=õJÏqJÊOæfdõ¬ÜSü_ý¥zuC·Xñy¾®Ê J °}s§_1Ér¯À( i\ˆyc—”ˆom([Ök©ì‘1èĤԂ¹ÖÆÅÛ|’`³ëðå¨Z(Ñ<û¨‰—SsÛÚúf[ÞÓÇ?¡/»e»£{ŽT0_0ãˆkíϕ߿wÛ å]Ã$ñ¥«fY]ÑpÜ„¢IÎêûýò°_œ(*[´®¬®_9qʒ‚™{¾ù¨W¿Lép¹úÌGöjÈ–£ÕΖýЬàõµýÍ-ËVEm|Óé-'˜ÈÉ)Þ‘sðù“NGW3#oª=°,1ï©©I·;o6´½ÙÖöª&5›m3õ½.$ÖO7ÉŸíuµ $ä• J£Û/gXŠt£ýλÛt³ÒŠÚÍ©÷(FÌe9XëÄ "+R½Ï?àJâ­5õv¿”ËnÝpÔÎñ*þ¸ï>ËÔñšO˜š’ãjü¿P½ˆ#¯âóª+»ñ>\Õ~@üÚZö¢¢„':˜ÔfµŽ óSO(eßj·*|aV¡·uÏõ›†ó>¸»¾Ý]˜T`ˆØØÇæU,–ãñ*"J@’ý )h”òYùÎ¹Ž¿á>çÝ[:ž³'_‘zã˜Ô[ÝM—îhüZŠ,Õév¤ý=cš¢Î.ì¨ëõ;ÒþžÉSA—ª¢÷J¯¯³Å`=.UçmoÞæÐ×°ÿÀ†ämëˆÕÐ ™éȇfú_-ÞGó‡RÑ5Æ·L×¥‰«ötµÍñæUœ^(RSè«JéßKP—FHyˆº]}ÂþkÄiYIv‘‡¦Nx(ôÑ=GL¸Gòܽ¥j™_iözó삜ҖÚ½ èF%èñu6 RÞh AC9ˆÉ2iŒÞµÓÕÖõÍ£H ÕÝ”¤\³»²s` EV$A4÷_Z…®²ìrGéQLÒØ Éó'§7ïÜü¦£ÇZª8СLΚPõÍSí2é™%x^n D³¯Öj1Y 6w?«¸\ †žy'ÅÓéó ¬Oºê–U :Y¹)4ë,Œšp_ZÓ/¾l¬Z†ùCÌNMLÀ_ÕwÜV°%&¤úÝÕá³Ð±y‹åhu‡)è]ë~’nIv¸ƒ>%W;[;[ŸLÈx·4ãÆ¤–«{²0°T–ƒn¬c>AZAÎI"C½I ºÑ1‰‚[RÐ3"çGzvÅæÕÀüÞ:RÏO•¾Üpuv¬¦ÿ4CªÛˆþH’AÔ[£~þÛ(ÉórƒÿÇYéç(ædçOÃFHãÉ«x½*O-)§Yu+Ú%M'%Šmïp¼\(¼vs–èlíûý/}^±ëäÐ ‘ÑšþêØ„wvT¿á“[ àr;7)y—ÙZ~\ÙÙ :“í’Êk< Ô iV£EòUƸëQ#†²ÕjHNÒÛ³gœŸ;IìXµ¾3Ô"+M›w ¶Yç¦Ê4ØÓ-£¦eþðl[bØûŽâí¬÷èÆgÏKÑ'g%L˜d møŒ¬{ÈP‰(¢tȘ“2Ž1ú¶y Eö„Ñ]?I{wq(­õ5x±Û“'%š 3GÜ9Á檫ù¤çYŒ»Ñ`Ó ¢ ÚŒ»QŸÒu:Úöa›79ïè$óˆ”ô«Js2ýŽ5QíKŠ'݈¹<¸®"·y;ë=]?¾æ€¢ÈÁ&Ogƒ/ºèª^™ì#•Ž83;ybjòicÇ..17íÛ·¶wcoHÌ{üÄÒgO(~G$¯†n9¢n<ù¬Šì{¹¦]Hñ‡¶ &c‰Í6§(ÿÑ4}·s¢iþ˜ü»2mGYÙFã¸SRuO÷SUêõ8Wue^œ–rÛØâgS‚{eL:¡Ë逯ã_>áäÂì+Ò’”ÿ)9°!µWê5V슅zß¿½2²oy»œiªÃÆ-{Ðéti]r¿Ñ—V§Õ´ ÓZh2NLNþ±M7¼'±tºTƒ>E/,¿Èñ*»[¶’Ë7×4´líÕŒ6¯H7žº~oëïÂFç\–dÌ1Y.,qµÁóÌ~ïPÞVú9]Ñæñ˜l' ´ ×Ôøü]?ûüR@QÚü_°ëH*ÉßþXCƒåd›)ßj»qtö‘’ã±wn ú™if_G{lÇjDÇP–£ŽÊ¾| ;«¾Ú¼+löWquüóUaæég_•¦—$ÇwÙF_¯©@çÚ÷š­g¥_«>¥`g•äo{,#iñXV×=ty…ÒØRw‘˜õàˆÿ!‚þ-ÇËîÐúJEÚÚ!-ÈνܢOèô{þQYóDOßU]*y®h.¾¤D9ÐÑvÇöÖÌ’Ñ×Zõ†®•rç3 cJ2UbÛÙÒtM™gö¤„#åž¹TU¯Ô‘ßø ÐñÈ;Z<¾tö†“„‚Ü‘ÿÉÅÕR5½ÂÞøy;V£_’?re®¿ìŽ%ÁaéN9ú‹‘à©?y[KMhª!b¼’¯ýOŽì§’½/6õ™ÌŒ2¯L7ŽºJàÝŠJCaÎÍãJ•f·ó¡íõ¯ ÓW»³½ùï‘órÞØë༱¦òz%÷ž1£ŠJ}GÛÛ>èíÒfK¿!1øÁw[lö5†Ž!?ûú; Æ 08©wYÉõ³,‡~æ QÇkL8ï¶’ó‹‡{-¥†Æÿ:còÿ;î÷IÚ‹FüÙéßL÷|†q˜K@o´ÿöÈ‰ÛÆÚ³µ£É Ú·€††Æ¡Å”ñ˜¬K’­%&CA¢ý¶Ñ9GúukËû4âG©o®›·?pÚ¨Qo§Î´è†©#"XæS²sßš2âó5{œõÚ:Cà1‚yÖÂ1³º~W‚;Þ¨Z±OûÆè…>'ãŠKS’Ε*•‡Û% ÿF>×Jæ•Å©E¤À×mÍWïnþJ›Yפu5•§u¤Þ”›öÔ”¬-;û_S;:냥…gÈÞﯹé@GŒ—JiÄÀÀ£K:-Q Û]©øÝAï·wÃÂw„¾¹DÀðh¹¤¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡qÑvihhü/3®‚gà@?‘I„þ‡ý\ÇÀcë"s=üº®è“á·<ör¸ÒíahùQ÷°çF*œ ãày¨à¸¦÷3~xšÂRŸ ÇC¼ ÛÞü)Œ5° ´…ƒ Ò1äg_ûÓ$óÁä]oîý°zV fóäi–¶-m5îÃy7ºq—ŸÒZûâro¬wßês³®¹ÜvxŠRùÖž÷öF™K‚Îr|qÞìÜä’ƒ¹µ­iéÖª‡íS4XRç”ÎJ7[dÿöÚš?”5Õö^æ`Ͼõ¨‘ÇIu7|^SÕ;UAoýÁ¸‘—æ%eè䦖úç¶Ôlˆú$ xÒHd]]œ&_¢TÏ[½,Ûà³,˜2ŸGÔ=Œ¹!ÂMðÛП=•ájx©ßÃc "”ô;0+Lt5, ýþ Ì .ƒuÃïw—A7å*¾•Kë*¼Ý½Ãóý'˜-Sf$ï©pÔ¸¿óÛ¬ƒõMy¦¥{GŒÑzÖÕY±h‹ë$³ïÓåO»XS.›2ò¶©ek»[8AŸ4wúØY¾º%«÷›ÓNý¨.pÝVG÷É¢ù”ñ£¯+07¹$8@Y?uâÄ…É-O®ßS!Ú/Z|÷d×Õ_¶8¢¹`&®tÕŽFW,9ú’„Á_–†fY‘¿.ßõvGwV$_Œ{ì÷*˃ëª× ù-ˆµ‡ˆN˜ zx.ÿÃ<\éöO>{ KnÜ Kxþ {zKÿ o„~— 6ôû|˜eðS˜¯Ááß°€«àXW˜†/êï"ƒЮtºƒîá8ÆÿYöö¼™¥ Ó¬–ÔÙòü¶Ð•HÞ†×j²OiMÙ/Bjvþ9÷Kö­÷(¸š×ºòççœVá|Ï£‚Þ2Nßþìšò½Ÿ-ègZ4NJÑÕTÕ­vú$|Ëö垘k± Dщ/]uÓQè³oeÜ锯ÄÒ¿‰Â²Üìpnnb/ZÕ«x,ª«Z7TwçP ð;8އßA}Øc¥p!$§ðÏÞ·ŒZàG0 ¨„õ¾V—SáÈ$xv‡IÇÃE:ñiØWƒqœK  Ã^øsà7°®€¨ê!ŒL‡ó þ QÑÝõ˜Wõ™ã=~Ã[¡Çtp'äÂÐ)¯¢IW¸J ¾€Ï ëÒP3,/<?†0À3¡Œ'Ÿ£ÑÌ«.«uqæÆTX~8¾è-ðI¿Mp#×ÁèºdÛÁ“(°®†ðx&ÁËœÀá Æ;bº§-þúµqÆértžšÖåoÞV̆´¤ãOO›Th05W¬vGuAZD]cÂy suïW~nI;mfRn¢@sÓËKÛ‘Œë³2æ\¤ÿìÝÎ)ç§gÖ7.ûT9ö¢¬1ADzW›êý3eÙO ¢Èñ ¢éÈ,³§µ&ô¬+ɱé:ª×y2òŠÎò5îV2g¦þîñ+ øÛžÛÒBnÆ@Ödy»|qAVImM¹b™c¬;ÐÖU!Ä—®*‘uóY¥ùõùŠÌVË E‘A¯]Íi‹f”ÑQyËW }AŒäÕÐ-GÒ ™èS7TÈ„`>t](p<œÀ(¸¨+¸=< w„Ú0ü&…üN ý®.àð`o–…ÀÓ½¥…0u¯TÈ‚ðxáfh…—àB¸p\zx|¦k» €bxÀïÃZzà 86ôûÕpT| |O^ ï~˜çÀGÐõú7†oàöøò*N€~/ÇUð FX¸,!éòP Æ“Ï*º½R¯uñ ÂÃÜü¶õ§{ôgOmæ¸ùù‰¶~ƒU:½e¤Y°Ù,ýn-‰äÕÐ-GÖí2зnDÆšx> >‚LuJ¦ÃPGÑз…^Ô€#alƒ 0΃×Â̪KO‡Á ?"XÞÛ¥£àiPà6/N^©PÀ8€TS¡ºŠë:È µ%}0Ãý0€4XwÁ½Þû±cáSø!ì 09Ê2PE%ÞrØypbèá…<øò*"éð>Xá^ GÁƒ°¿÷3"Xà×ð|ïÏãÉg݈^©×ºxȆ3À©Ú98nס>låGW\À¿† ˜@V¿×ý@¨ótÝ÷ûž”¡Ü”›cn|»ú“=’‚ËW`ûqqbšÁs éÓÒGû¤½!mmkv&_4ÙjÝêt)àw¼´Òh·Ÿÿ“¤ê·j7¶*€ì †«êv?Bòˆàò—”wœ$Ë#¢uX0Å-uk*ÌYÓs3šê_Y¯Ì,M0ë…žw‡Á#Š,±häØФ¿­¯øÔÛ©hñ$IÐ5.ßZU¶¶SW `Ò‹QNõÈ’¿Öè´˜¦¦êÛ*ýÞh[¯xÓ2:sú‚ñ‰ßlß¼ÎGѰZVmX¿Ã®Ó¥X­¥ÙYç•–gßqÓvgø}¨WÝŸ;ÒüîªÞ3ê^Åc9ÝAêFD*àn¸|p#¬}hÙy×Z¿Zøx 2aJh’»«Ù.…+áx¿·Y©?àxè7a±€;B“ýͽ¥ê^©PÀx85ôÉy0jBõ.p 2Êí„‘0>…mp!È C]ïÇ>ƒ³Á§ÃÍý:(CC%Þ < oÃð1$Õà„âΫˆœ )°ª`ã@ÝO‡ ´‡xòYEWÝ«ˆµ.ƃ›CÕ¾Â)`…¸¦Â»PûB ª¦ÁBX ;°ÿÁpºÆW&å{<3„.Hpwãê=’ ¸š%Æè]™+貋 ØR.½-åàÓƒEÄ%¢¸¯ I²âë8û¬LP×íB¡~eãÎpl¨zê z.ûSR~27#«g®^ñõ—êÕ ¡«±}ž¯+‚²‚lßÜéWL²Ü+ðA#ŠBb^ÁØ%%â[Ê–9¥° ‘=2˜”Z0×Ú¸x›Olvþ UC$šg5ñrjn[[ßlË{`úø'ôe·lw´w) æ fq­ýà¹òû÷n»¡¼k˜$¾tÕ,«+Ž›P4ÉY½`¿_ö9PÙê ueuýʉS–ÌÜóÍG½u¥ÃåêˆÕ«![ŽJw°º‘wC ðÚÞK@ô0€Sà”°Ï{šÕÍp< wÁ]ð¸1l`\EjR>ÈLàI#z¥B¸á((…ÂðS(€WÙvÑ« ŠîÕ˰w•ûÁ„!âÿÇïÇЧB1œ 6ø]¨q'¯"2€ªf] ¼ Àcð$D³©,Ê|‚Wêµ.N²Ø7È W#4†~¾€)p2üºþדa)Tãp$®²Ë 2¤fø†ØcW‚^©'3ÍI"¿'¬~H{ëþø–Û7$g"é*>÷ÁÆP o²Î÷_téÂ.µñ‡Ñ¡~ŒŠ´k|^®Þ¦¦†™C«º¤8.¯T脚Pcü2dÃ|£µ¢>SQÆÛ„_Âp&Ï G^E¤«—S)7ºj”òmi¡â•z­‹“®?‰Q<é‡ ˜vÀ ]«âÏ€ŽÐbÛMõ¢t`oŒÝ²ÿ1âzç4Y&Ñ»ö¸Úºª£"5Tt¹I¹æA5Y‘ÑÜiAºjȲËp:B?Î`çЮJìQLÒØ Éó'§7ïÜõæmŒTq C±eMh®|§]!=#³ÏÚÖ@4ûj­“•`s÷³ŠËåq Ï0ìx:}õžÎЯ9ÐÓ›‹']u˪¬ÜtÍg]?›½Ï¯xê~¾jÓ ›ZZ†yª˜š˜€¿Ê×wÑ©-1±°ÏàVl^Åb9’®jÝ22,à>0 ƒ C¯’Àáh…Ga4l„…Ô À±`?‡^Ö»¾\ÐÀÉ`„ßÃñ±x¥B lb¼ú½,ê<éji²CIÛ†iD!žR^n„1ðiXŒñäUDºR\êÆ¡e¤ñ3ä|VñJ½ÖÅI×yt`ÀuÀ„Ðï“à 4"膬‡O!nYS2ŒPÕ{ƒÏ÷¡,Gµ’“ôöìÄççN;V­ï µÈJÓÆæÝ‚mÖ¹i£2 öt˨i™?<Û–öý«x;ë=º±ÇÙóRôÉY &Y,B´º‡ •ˆ"J‡Œ9)ã£o›ÇPdOÝõ“d±w‡ÒZ_ó»=yR¢©0sÄl®ºšOz^¯1Áh° 6 ¢Íh°õ !]§£m¶y“óŽN2HI¿ª4'ÓïXÕ¾¤xҘ˃ë*r›·wÇE6y:|RToª^™ì#•Ž83;ybjòicÇ..17íÛ·¶wGÁ˜÷ø‰¥ÏžPØkÛm$¯†n9’®j݈‡—`'œ »`94ÀÛг¦êXX µ°>…#C#祾Ѕåà„Ÿ†T’ŸxÚáú½R§ke@%Ô‡­F¬èÉ;àøqï›a+äÃðopöî Â;pO,ñÖÀ‡¡ßí=€}^õOWMð˜a”Á>h ­ó‰xò¹¿®ŠWêµ.ÎÜØ õ0&Ô­éÃa;ÔÃØx¾@_€¦Ã§PÙð1¬ÈÎ\–…\~ÊrÔQÙ—dgµóÃW›w…ؤ¸:þùª0óŒô³¯JÓK’〻l£¯×ÔG sí{ÍÖ³Ò/ž—‰Ï_ýuãÞèu*E”Q§7a¹äèÒK~æyñ³­ïz@ v¼¼~§TZx÷‰#̲{íîEemí==cúâƒgkZ–œš”oþêŽýu¿Ü(.›{ÿ R}KÃãë«7EWÉãIWxtã±,ü^kîœ#ò“E¼žö5eÛ—Vµ÷^õ‰ì¬ò‘Üáme@4Ëêºêu#\0~B”Ãïa}HúdÃi¡­¼àް³Õ¥@1\ø+”ãp¼À‹0‚„10'lýºWêl` ø  ÚÀvNv8Sa*ì;rðÃyðg8øvÄ—Ãýéšu²‡múˆ¯ ÃlØŸÇR‚êéª#ÃØ7Á8ðÁÚÞ'‹GI<ùÜ_WÝ+õZOnxà)xž‚ÓCs==¼ Ep4dÁ^xž ›™Ú ÇÃÓp"xá¸} y«©°ü¡å5áò³¯¿³`œµ¿D7î²’ëgYýÍÿ¢Ž×˜pÞm%çŸ7Wih „~ö¦ž 5  ÓVR CDìÞdd%N(¡ã^¾Ïhm¦††Æ!Dóa|AäòA¦K44þKh‡3`\Íða7ÎÄõPƒžßî0;ƒNÄæY Çt¸¢w¼Qµbß÷yÙîès2®¸4%ùà$¿ëšÿûtÂBX3àH¨†Çáñè¶tjhFºÎ£».…Áo‡£ß|"Ãgð;x˜ŽµýN3È™Œ:[¢¶»Rñ»ƒ^ífá>ôÍ%î€GË% CÌÿÑ9ZÊ'4Èm%tEXtdate:create2018-01-14T15:45:53+01:00P+çl%tEXtdate:modify2018-01-14T15:45:53+01:00!v_ÐIEND®B`‚coloredlogs-15.0.1/docs/images/custom-colors.png0000644000175000017500000015765013622012676022131 0ustar peterpeter00000000000000‰PNG  IHDRÛ%{ìfËgAMA± üa cHRMz&€„ú€èu0ê`:˜pœºQ<bKGDÿÿÿ ½§“ oFFs8ÒdtIMEâ- [=‡ vpAg𛬲L€IDATxÚìg\TG‡ÿ[€¥wPštADDűÆhÔDc7šØc,y5–$j4ÆžØbìÆ®I°÷^@cÃ.½÷˶y?ÀÂ.ìÞ½°Ø’y~~;3gÎÌ{î¹gf …B¡P( …B¡P( …B¡P( …B¡P( …B¡P( …B¡P( …B¡P(ÊÛÆÔ®ùv?ý·-…B¡P( …ò¯†«â7]ËÑþÛüL¬íšêÞj¾£€ÿ¶ÅÔº™ÁæOíbË«Of¾MûI/¼Ê“"+ˆ½¸¢»uµÖôœû/?SD)K¼²~XSNu>AËãHÚ¯AjÊeÈkÚûŒ„È‘å¿<»âcg½êœÆ]%.~hZ•Øå@‘ügqö“Ëyè7ŒT5µ!͹ðó Ú¸Xz,:[L!âÜ'{†8°9¯S*&t¡ssס§NélSi6pLB×ēҫßõöqmÖuÖÉ<’¹£‡e•²­L漦½ÏHÈ£ÙŽöÎÍ‚Ì;žMd·'¹T™·Æ]“§ Ú:6®¤‘…^•©hÜå@yö]°“½³wû¡+"…$}[w‹†JYÎ.ÞÁŽû<ÔJnDé·ZCÄ÷× oçéÔÄ«U×A-ÙÚ¯O* ÃsöR1È£q•*-õ¹¬êe꣊W¦ü}ÈM%ßÒ8RÓ"7í~°":;ÈFáƒgæ:lW)ø{\Ç     ok]Ö£–k7ú6!äÉ7^ fœžï¢ç‡ûYëØ?›ý`–§t\'\L¹2Ù]©`Ž¡ïWg HÙƒ3ûµq6Óa]©VhºCu\†m<ºq¸KÊÃ7qn7ì§óY„¼ÜÜÏîp<¼Ó}ôvжTÞ  …ò cìø[Ï6SÍyÿª¨•z[äÆ6¥“ò‹c›¨xðìG]KnŒ¯Lã6úäT)¹ÿ•»|âg²25ä5í}FBî~áXaVò]¦< ù„UIÕõP1y8ÍUåãɸË"òhz¥Kç0òb¹ôÖø*ÿªR1j:³“Âý]êå‰zmRi@ÇsöRt@¥ÐZôQåGŒ‚ýÝ+Lrÿ²xRÓ"7ê¸#[s5™”üÝׂS»~AËãHæævõq ´Û”AÊþêa¢ð›Ic¹Ñ³åêTO%[k¾5äý=ÆCPŸ~¬7õgÖ~ã~[“ˆèÆTöï<¯‰wºÞ&Zô‘ª{B¡PÞ=jy¿%¢²L¿m3+N}Êãz¶úì«"BHYÜÙ¥½«}ºî.–‘äÍÝ-¹¸]7&Iã 3«¨†c=äº8{kG;ÿ/¶FfHˆ4íÂaV ÒqŒ}ÇlºšXF¥EíœÒÖ\Qt“ðˆ2Ñ™¾>£7^KBªMR­0nóÅ`Û¬]ó÷%Hj'š âßÛ~"¹"M–q~Û-©ïÀ+Ÿê”WàÐÜFòêF¼°-¦žÞ~—Óªk6¶5HŨ H “3$ÆA}Ìø“ŠVR½¾z•©ÕG¢âÄB“ð1ÁfÞC>¶JŽ/WРÅànÆwW,XmÐqHëþ¢.Œ¿_žx'AqÈ£Òm;´¶6p íd“ö?dÓ<ÁÏc7¼)\£ïÿ͆Qºû†ÞöRÅhãè{|²ò\luÄÔµOª§ ®Y›É»"S„„BJÓînî«‚Â1l6tÕ™—…„"Ìz~a K‡§Q§=ù•Õ=Ÿ×LÙ´ú96s_ïv_L/Oãé>t׫raôOAF Õª›‘ª¤ý5eàÊ”à–õTê[M-z hÕGÚjƒ¹½´Á86]Ç^ßG<ͯJUšŸ_o©º( å½€ëФÙÁžÁG»µÝWW9Ïnð‘\ñóßFµóhÒ¬û‚k%eWÆU{.ùöŸÉ#yG>µ×³ýpw†øéFò9›c=交øÖÑrâŽÎÖôš’µµ“Ü­Áwv¬$íÐÁÓÉ-hø¦gÒò_)8ŽLÂ#ÊÈ«ˆ[ñÍÿ4üÓ ‰’ª߬ïñêç@¢Ø_‚Y9u®úu{¡{}R±èaÕ>rmúȸë¡ìø?6Ü—êiÆ´^—uü‡ƒY"¹Àÿ§øò;š4ýßS’µ5Ô°–ÚøÈÁ·iÛ«££²Ç™kÖnÎñ—ÙÙÏŽÎ0ý\ÊÍMk¸¤Mºý‘OžÍóVé‡ä;û+äŸ_40È˵iûÉʤ V— Õò’wlzo'ïÀCµ2S0t\ÇŸ-&)GfôhéâäáßyÈô¯{ÙWŒ_Mw¨Ž‘…•µ}»%¯$ª,ò¸‚Ggo[¾øx®,þøÕÈÝ?lx*J¨º™g$xö#¯ˆÅ—‡7VXÁܢ׃6}¤¥6˜ÛËœÊ<6¸Ö=O&Â;kG†6svñº7[¦0A½ö>Ru/P(Ê{ÇÒÊ~^Xðñž­æºš˜²¶­ôZþGWTšñ†¶çHn±¯öYp­Â·¤òûß.,¿ó?sŸc=ä:!$yK¯Š mã°]¹$m}[ƒê‚³¶u–èú­—'l+Æ$× ‘³«gØ’²äõ=›ºººººº8Zê±j”Ày‚²Q¦˜è·,ž¤¬ ¬n…nó/HÖ–J[‚ÁÊÔ”WyÕàãá”þ5VvŠã7†T‹XÓ"×ú5Ä-õÓüž A*%m˜ö:–O)¾1ÑEááÉÑwýpÑÉ$BHêéz;±¾V©¨¹²S’¶§³‘ö}dÜõPö«å½'Ýée×fe\æþþ½~W´Èu½ç?/¿7Å•_Qjªb=Š:©¯EÎßiô©ŒÄ«§£â3R˜äkXy7´]ŸFâ—ù« †0îø{Iù5Ô¤âb£N{ò% V—a‡í9$}ç ª[ˤËî<’¸2HÕÄêÕm:÷™X•EžHDG;òÍû_"$å×öƆÁ“Ó¶UN g¤jxM&üCJÿ ¯Žm`nÑë¦}¤¥6˜Û˘Ê<6ôZ.‰!GúÛTØÊÿå Õ“÷¹( ¥!Qíó!9Ù)kŸ Åÿ¦Í×ú˜›±šîxÖAÝœá8=ª´ÂJ)¾<‚géfUmɲO5puZË>Éß_ù¨L9¿¬ôOdJ@˜ccpL[tp&ÑÇîV^YöâÌÝRË6ìTB"gNÙŸ$Ä/—ûø­ŠW–š—˜].å%ÇÅÆÆÆÆÆ%å”6-’–d葹J—¡LX(„¾‰@a…¡ÀTÂB¡LcÁ¬ò>]Ø©Eðäóeû&ú2i­2^,órsssssó ýöN©ú.˜P^¤½TÒ’ìZ›ê@Ñű!ÃO•ëq)‹ýëÛîŽÝç=lõmÄý?>µ×~µœöRi¢ìÔpß MºyM»QÒ@}$I;ùÛmA·)_L`p~Ë­BÅ4§7y¾ûD’¢WGÄ6ê3À‹UP° å¢ha­}XDqëÙî|ÇÏ6þàü(·…ËùAMÛ­4Ÿ¿}‚‡pôZ4Bʃ”r¹ô½ú}`•¼kT¡ê[§äÖÂI¿gÞ›ûüô†Yý[Z(ö¼žK—vfÇ<*QÕÁZÜ¡€¬àìê?“%2‰´4vÛ¦¨"™T,Eeçkž‘ª‘澈-Ñoâf^•ÈØ" èxL¿S®ø¦÷bY«º}ׯ´Ós{™R™Ç†ŽS·¾®…'=›©j z{}D¡P(ïL_aIQVÌŒèB3‡&ᆬì€ò½Í8 ¸Ïy øìÐsjb ÙˆQ­Mj*+ËÉVNé:MÌ‘õ*K̾)’‚ô¢J›ˆH¥R–tFÄ©‘÷òuüû´0R‘(ʈŽ™{7µ{s8Fn~IÒÃ4‘Æ‚Yå-ˈ}vkó¤÷L¬×θf”g'ÆÆVÚ/Ùêí®‰‹»™8ñI¦fUjJœu¯@ׯ»—Yizbj‘Te9åÉgõ ù*ʬÿüîZ/–k(©Ô#-J—«21K>µï#IÚéÍ7ÌftvËíp8UÉ<»nŸøèùüüRD>˜ëÊiÒ¯+U•?]ÞÌ­&^æß-c‘ßqȆEÖ¿/Š6,»yâq^Ò™ýñn=}*¢v8\.¢r,ñ-œ-›˜W ÏÑ·´(Í¢ø½c}-=>˜q¬ùuIã£W=.‘€I*Þ_IYòólØùÚ©z5eÁÎÇ^x¶}~Z®ÇG¹{eůήŸÞ×§‘ÿ¼˜€YóCåá¸ó7 ¬ûŒ 6W7ê{‡2¢qFRÔŒus7ƒ¢W/ó”ßçÔµH’ª·¼ØØØØ¸ä<[Aýû¨´ÁÜ^5©ÌcCZ”YÛ.F\³ó6Œ°|'úˆB¡PÞmtMf´°ïdiØÔÅgo°ËÔöm#Ú;4a¹ ‰×xàá<’wf~_?W—æíúNZsdÛ`;ùîݦ¡«c¤©[Ã-¹à; ý³€äªN´r]RtlTK'{×Ö~8ŸO² ²«z<ó‡/$Éû&tôtt ¾é¹´üÆ´+;Egz«ßOÄ xC:É‹˜êîäîß}ÄÈ–ûUƒkÝó·D"}¾sr׿Î.ÍÛœ2Ya?òÕq¤ôú¢ý<|ºs:Ÿdîêe¥¼ówî¡‘!­+ñoîPu s^¥õ¸–½öäáùÑNr“Ó¸ë¡b³òÃ@yÉ~^Õ›Uw9PDbW÷kÔ±÷˜%Ç“ ‰YRí½ÕB*€gûáŽTB^ýñU–.ƒ"JÖõ[ýoÛ†9ÃÃ[¸97 ¶î˜<]äÇriðk“JL»jÑGÆ]e¿ú±¥bœ‚a‡¹âŠ8rŽõÇgJrvWïfɱøðD™,ê å#€TÆ‘stÍ\\kââhÅæÕ‡g?ä¯äæûêƒcÞóPæ‹%­Œz<íö”Ê5ÂóÞG‹ÉcÕ;7›tÞžM$÷ÖŒ8ú‡cÉ¢¬ž ewÆWnþ½3XöyŸö-ÝìÝÛÛŸY#ß}Â…RRvgãľÚ¶ëúñsföV iÒp‡ê6ûL³4ÄÞÚʨJÞ3`µŸnÜœCïá¿^N(%„”g¿¼º{ÁÇó#×2|KŠ4~]§Ê˜t®u¯íé¤ôünº@ÕÊÎÊP˜³+¹+ïÖÁ1ö»éZ’"NÚ5UÕî‡ 9¸æífyR@!ùÏO- ³d¿kß:dâÆ‹ò3;/Õ8³ó£ågbŠ !eIW×oVëÌN%26)îñÂWy¯kðGŸ’œ?äæ`í3;£gToÏ­pf§$+úïE}ýiZHбëö͕ۉsïиRHçÁ?ÿu'±@J!Å 7wÏê܈µ×úµI¥F‹¼þ}¤Ê"︳Ò"ç˜÷ú³Hxn`µažÃç·‰ôªâ. ¿²“g÷É‘¤{ +_’t?Ûù´ ´(ñä ÿª-`º)dí·Pq{ð¬».¹’A)K¼º~H³_?’¦þ¤/Oì4cË™G©…B)M¼±uBkS¥B8FÞC>þ$WJçÅ\ùµ¿ò"æ;T·éÜg•#£`oÕ»ŒF”aFR’ʹïÉ$skg…ˆÍ-z hÕGÚiƒ¹½´Á86À1i3óX‚ˆ¼‡û¾qh»6E\m¯¿w}D¡P(oš7{BPå~äí µ/Šòî!ð[òLBj"KÜÒð‰¼ õ¾¿ð†F‘Ü££Üþ;»Åé8ÚF #†:¼ëßï>âÙº&ÊßÛÙ¨N¹Þ·>¢P(”÷j‘ÿ«Ñ*Öâ=¬÷}†köÓ=1)¹³iÒÍþÝŠâÙûõš²)²ˆˆî.éÐÐ'[½FÞ«>ø}û÷áec{7wvp ´är!‰_×Þ˜¥ÐïmQ(Ê{ µÈ)”w޾kïÿí¸ò2OZrº›Ã^ßOŒ:íLÆ]ßómO´zû¼?}Ä5¿öøƒ”bB)J¸±{N¸ëu©ïuQ( …B¡P( …B¡P( …B¡P( …B¡P( …B¡P( …B¡P(uçÍî~H¡P( …B¡ü7Qµ™”®åè@ÿm~&ÖvÍuo5ßQðÞo˵ž0jÛzÑÍ·i?iãù AkœÔù™˜"BHYâ•õÚÖ:!(í× u[_3ä5í}¦zmYþ˳+>vVØ{¸ö A?¬ÚnAñ„ qö“Ëyè7ŒT5µ!͹ðó Ú¸Xz,:[\qNÏ“=CØn¬AfDzßñ2"»6ÒNqК}t‰¨âŸ/+ÀdÔ•t9UJîUuœ=“í«!¯ò í|—)HþUg‡W1§¹ªô@w9PDM¯tòF^,—Þ_åAÕB*Fm@ÇcÖcR¸¿K}<d£Ž;²Å1W“IÉß}-T˜ÔêΜgÔ•t)Ô)¯À¡¹äÕxa=Z M=½ý.§UÿÖl"54HŨ H “3$ÆA}´>WO•Ì-w3¾»bÁºhƒŽCZ¿ñÚõ ¨8±Ð$|L°÷­’ãË•”úZÛ+Œ¿_žx'Aq@ £Òm;´¶6p íd“ö?dÓ<ÁÏc7¼Õ¥`žÝàý)âì“ã\uêR²FmÔ·dVcR•6( …By³ÔzP‘òÜ Oóùvž?{ êZÏnЮkÛzÄ/îîéìÝo»þäƒûFËý©¢W›?uÔðó}¿ ¶×³í³vϘâŸ}s)ŸTåæ¼§;7ÛüØŒAc~ÉìðíŸ:ÈÝV|ÇÏö^ÛÒ3yiw¯&ÿ \uù¸‚+  ãúù¡sóŸ™ÙoÈÆ$iÕÏf}çÑ«-ø.s !„ˆb fåZÔiÜÆÏT|/"ºXE¢®m gݼ'Ïråu‘â˜i_;Íñìór.WmQ¶iæžx‰ÆrU +Œ{™§ãÔÌFk©µÈ2ÿúzáíÆS.<>þ–çëÕ–YàÕ¿§å£ÇoýõÇ3“.Ÿ¶|ëg»jÙƒ²œë<0 ÛÎŒ#h>ôc“ËÛï…L¯·½²ÌcSŒÛ£hm‹ž®»Šóýô[Ss–-‘þoŽÑª1ëŸ×ÉøæM[Úñ-[4·ä×¥dMÚ¨wɬƤ*mP( …ò.À±´²Ÿ|¼g«¹®&¦¬m+½–?Ƒĕ¡.†¶çHn±¯Ž=àZ…oI!å÷ÿ¾]X~ç> !1ë!× !É[zUi‡íÊ%ië+¿‰ëµü1Ždmë,7Ðõ[/O Ù[C«ì“ð!!yG†8êT|ª.¯ò‘s 9»z†-y!K^ß³©«««««‹£%»Pbÿò’»£ƒJ{Hà·,ž¤¬ ¬n…nó/HÖ–JkŸ!>DS^åuW„7Rrø×X­(ŽßR-¢r ôk‰[ê'ÐV*%m˜ö:–O)¾1ÑEÁDâè»~¸èd!$õô½X iºÞóŸ—ß›âʯ(UQF¹ðLQ+êt¥š+;%i{:i߃Æ]e¿ZÞ{Ò qá‘^vmVÆeîïßë÷,Quœ†íÕ¾ÓèS‰WOGÅg¤>:0É×S)Ò‹ZëIkG­ð-½}Ô½ý©,Y³6ê[rõ“ …B¡¼ATÌ%9Ù)kŸ Åÿ¦Í×ú˜›±²_yÖAÝœá8=ª´âq]|y„ÏÒͪÚb“eŸþjàê´–}“¿¾òQ™r~YéßgŸÈ”€0%:Æ6Æ<à˜¶èàL¢Ý/¬¼²ìÅ™»¥–m+Ø©„DΜ²?I ˆ_.÷5ð[#®,5=>6.1»\*ÊKŽ‹KÊ)'`´$»FÌUš2a¡ú&…uS} …2³Êûta§Á“Ï—qì›èˤµÊx±8ÌËÍÍÍÍÍÍ3ôÛ;¥ê»X`"@y‘öRIK²K`hmªEdž ?Ufh¬ÇU¤,ö¯o{¸;vŸ÷°Õ·÷ÿøÔ¾~ÛôÔYÇ©ÇÇMžï>‘$èÕѱú ðªÓ¶ºREÙ©á¾yÝ<‚¦Ý(i ”¤üí¶ Û”/&08¿åV¡bZ½Û+h¹(ZXËnÅ­go¸ó?Ûøƒó£Ü.ç5m·Ò|þö U·YñßC|*uѬ׆Ù%9O"eŠêZ2“6´+¹ÁÆ$…B¡P(¯¦_R”3#ºÐÌ¡I¸!+“œ üDo3Žîs”+\¢çÔ>Ä@³£Z›Ô(TV–“#¬´”u,š˜#ëU–˜}S$éE•V‘J¥¬Ln ˆS#ïåëø÷ia¤"Q”'2÷nj!ÿÀ1rókL’¦iþüÍ*oYFì³[›'-¸g:`í¼vÆ5» <;16¶ò #[ý×ÄÅÝLœø$S³*5H%N‹ºW ë×ÝË€¬4=1µHª²œòä3‹ú†|eÖþwö[€¨•™g×í=ŸŸ_Š!Âs]9Múõq­KÁ,u¥iQj¼˜7Ìèì–Ûàpª’ëßÞò§+›¹ÕÄ«Ãü»e,rà;Ù°Èú÷Eцe7O<ÎK:³?Þ­§OU»¤°ZÉyu óÐT²Zmh[r¥f´“ …B¡¼N4,“å–«Ïeó|”fEOÐ b¡æjŽaÀÜ‹]:õ’㌃+>°TS=Ǭí˜þR#޾)ˆ¾Ïñéã' Ñ÷ 0ÈŽŒLck°Ë$B1×ÀÒ°®û‘GmØ›n=äÛŽ*üj…wößûìU¹Á1×¶Ëè`Þ£Ãײ4{£Ùç=[ÿåÊx‡Ië§x×ë{»Žsÿq’Û{£ XØ¡¤*ŠÜ¸/£ñ¨…5{EÉ‘÷² gÄz§Aõ2sm:iž´¾—ÜÔl1hžçÀNow³:í{P–~jÕÞ/nn[»¨¾Å´h¯ž÷Ìs/cjq}Q«M“øŸüº¤ñÆÑ«—ƒÈ@È$uy»å[6kÓ¢vl‰æ’ÕiCû’«{B‹1I¡P(Ê›E×ÔaF ûN–†M]|ö»Lmß6¢½C–»gð<œGòÎÌïëçêÒ¼]ßIkŽll'ß½Û4tuŒ4uk¸%|‡¡¼CÕ‰ÖC®KŠŽjédïÚzÀçóIöAvU4ßqøñB’¼oBGOG×ÀᛞKËoLSXÙY±×Joõû‰oH'ySBÝÜý»bÅÒ8çZ÷ü-‘HŸïœÜµ¹³Kóö§LVØ“IfŽõÇgJrvWïýȱøðD™,ê å#qãÈÕéJL»jуÆ]e¿ú±¥bŠa‡¹âŠÈimÚËÑ5wpq­‰‹£#”g?ä¯äæûêƒcÞóPæ‹%­Œz<íöW>Xî~¨×|Á3BHÒš6ú¬KfÖ†6%k7&) …By›ðõ­&ùý|¼gðñž«ýì|tëàRâzÿõrB)!¤<ûåÕÝ >ö¨xþq-÷¤Hã×uªŒIçZ÷ÚžNJÏᦠT­ì¬ @9»b»òÎcß±›®% !âô¨]SUí~È`‘ƒkÞnÖ‘'„’ÿüÔ¢0Kö[ôñ­C&n¼(?³óR3;?Z~&¦˜R–tuýðfµÎìT"c“â/ y•w³ßqô9!ÉùCnðÕ>‡2zFõ¦á ç_J²¢ÿ^ÔÇQÑÕB*€Ž]·oþˆLVœøxǀƕBê8þù¯;‰RB)N¸¹{VçFl#vdæ˜÷ú³Hxn uµ<‡ÏoéÕáûåÊNe]i€Ñ"¯ª²A;Aµmo}áÙ}r$éÞÂJsU×ù³O J‹OÎð7ª^Ù©É"çÙr0Mš{j¼â…JfÔ†V%k7&) …By'x³'UîGÞþ­ïjGyü–<“šÈ7†4üV!ï»T …B¡Pþs¼+•ë!×R×>k2úZÉÛ–…ÒàptÍííÍk~l!âÂÔäº.´ü×KE¡P( å?ý„KyQ^r\ÞÛ–âýŠB¡P( …B¡P( …B¡P( …B¡P( …B¡P( …B¡P( …B¡P(ÿQÞìî‡ …B¡P(ÊUçäèXŽôßægbm×üP÷VóïýŽ,\‹à ó§v±eyP§2|›ö“6^Ÿt±Æ Aý—Ÿ‰)"„”%^Y?¬i­‚Ò~ R·¹5C^ÓÞgª7Ê–å¿<»âcg…#ØkŸzsñêӑOÛg?9±|‡~ÃHUSÒü˜ ?   뀥Ǣ³Å§=Ù3ÄíÈÑñœý¤Æ¾à‘£í*KÖó][#QñT#Fm0·Wƒ®4¡¶½f]"ªøçK'Àw{IDâWÉwßçÚ 8Z }ðMS]6}ÄÜ^mz`¼)ƒR|¸›qS5 °êÅ£Íuaò[ܽ,jz{ÔsÞø-‹—÷ÍÍa¶ì#£P( ¥ žÑçaÁíÃÜ}wØøX[u4×yï):nÓ‰cûêÕ9'Ϧ÷Ö$"{¾}Bçæ.®-BNÒÙ¦òÍ1 ]OJ¯~×ÛǵY×Y'óHæŽÕ‡2ÚUÌyM{Ÿ‘G³í›˜w<›ÈnOr©2¬Œ»*&O´ul\I#‹êcÒ»("Ͼ v²wön?tE¤¤oënÑR)kÃÙÅ;øÃqŸ‡ZÉÍýVËbˆøþºáí<šxµê:h` %[SFÇsöR1È£qU“,õ«êåY5jÜØ¹ë/I$gO_·ÆY›T[sŒÚ`a‘«×3 íå™y…Û•A þ×1(((((ÀÛºÂæ6XK$7&V@iÐfyÉØÚÅL.5 ‹\m{µé×nômBÈ“o¼tꜪ¡“½¾¹³¾­~KŸ=[æ'¨s ošúÎ<s+kë&½våH¨EN¡P(”z¡cìø[Ï6SÍyÿª¨•z[äÆ6¥“ò‹c›¨p3òìG]KnŒ¯Lã6úäT)¹ÿUÕíLv•†¼Êg°ó]¦< ù„UIÕõP1y8ÍU¥ïÓ¸Ë"òhº[EQ<‡‘Ë¥·Æ;ñ´—ŠQÐñ˜õ˜îïRß©æóê«$Wqn<£6XXäêuÅ,2›öª“™kÓÿH!ÉÙÓÓ‚Ãwµ\xùs¥²°ÈÕµW«^¨À Ý¦ RöW“z¤2Á³s=ùÀ&Ðñ˜y/á÷÷á|Þú¿É€A»Í™bj‘S( … µQY¦Œß¶‰™U½Žóäz¶úì«"BHYÜÙ¥½íªÌ]÷ ËHòæî–\\‹®“¤ñ¿„Uú9ÖC®‹³·v´óÿbkd†„HÓ.üf¥ ÇØw̦«‰e„QZÔÎ)mÍE7 (éëà3zãµd!!¤ÚÌÒ ã6_ ¶ÍÚ5_‚¤v¢IÀà þ½í'’+Òdç·Ý’ú ±bñ®S^CsÉ«ñÂz´@šzzû]N«þ­MY\¬A*Fm@Z˜œ!1ê`þ¾Z uÒ•ví•eûߢûCVNïØsá¢ö)k¿Þ£R©uoƒö½ Œ¿_žx'AXT•ü—¾$„H’·´³xº€ˆ^üäç4úêËßXåÆ]‰Ï÷sh1zÓ4‘e^[Ñ»±ÂÛóÌÀ ׬Íä]‘)BB!¥iw7÷e ¢ã6õޤ(b`µ±Í±ès8¿0¢¿5»ÊÕÏ“ZHE¡P(”÷˜ZÏRž»ái>ßÎógoã:UæÙ Úum[øÅÝ=½ûmן|pßh¹ëOôjóg£Ž~¾ï·Áöz¶}ÖîSüÓ o.åWŸVÎxO;vn¶ù±ƒÆü’ÙáÛ?u;âøŽŸí½¶¥gòÒî^MÜCgÿ¸êòñ©žºJ•ë¸~~èÜüÆgfö²1IZõ³YßãùDôjE ¾Ëœ9Qì/ÁšÚ:Ûø™ŠïED«HÔµmᬛ÷äY®¼.Ró ãàk§«±`öy9—«¶(Û4sO|½L6YaÜË<§f6ZKŨ @–ù×× o7žráññïú¸Ö%û¡ºÒº½¢›¦oÉôš{æ¯ºÎøùŸÒj‚ö½ Ë<6uÀ¸í1¢z¤ªDxïÇ°Ýæ¸¦»ëpÌzI¹2ÂŽg÷ùµ–%ð]ƼðƒóÅÙ}4û¶÷ôß¿ ”ß¿lfµüæZÛ;sE¯æM]›w½â\r¹|>bœ7ı»æ’ôþ~|³Jï9Ï®Ï×=Êþ|6KÆ¢^¦y’Y* …B¡ü·àXZÙÏ >Þ³Õ\WSÖOu½–?Ƒĕ¡.†¶çHn±¯öïp­Â·¤òûß.,¿ó?…Žõë„ä-½*‚´Ãvå’´õm ª ÎÚÖYn ë·^ž@²·†V¹ØLÂ#„„äâ¨Sñá¾¼ÊGÎ5häìê¶ä…,y}Ϧ®®®®®.Ž–z¬%ð_ž@rwtPéÊø-‹')ë«[¡Û|Á ’µ%¤ÒZ`ˆ=ДWyeçãá”þ5Öö‰ã7†T‹¨‰èýšFâ–Ê£vë/•’6L{Ë'„ߘè¢è¯ÔwýpÑÉ$BHêéz;±ÿØ_se§$mOg£×0F­¨ÓF]¢VjéJ#Û«NfßqÌE!f7ÕU‘‹íÊÎíÕ¦^'ºÍæ>x±:@úë^ݯCzÅêÛœƒŸ:òÀ xc†øÖˆÆ¾3#†¶çôƒ\µ§Mó†^óùOIÞ¾^:3–¿ªÝ¢.jEÃ<É$…B¡Pþ­¨þÆJr²SÖ>/Š9þM›¯õ17cõhàYus†ãô¨Ò S¡øò ž¥›UµÅ&Ë>ýÕÀÕi-û&?|å£2åü²Ò¿'Î>‘)aJt:ŒmŒyÀ1mÑÁ™D»_XyeÙ‹3wK-Û6Vx¬9sÊþ$1 ~¹Ü×ÀoUŒ¸²ÔôøØ¸Äìr©(/9.66666.)‡ÓIZ’] £Fæ*]n2a¡ú&…uS} …šÝd¬ò>]Ø©Eðäóeû&ú2i­2^,órsssssó ýöŽz+W`"@y‘öRIK²K`hmªEdž ?Ufh¬ÇU¤,ö¯o{¸;vŸ÷°Õ·÷ÿøÔ¾.Û|”î[Ñ"7 i7Ø:Pë¤ fØëª!Ú+ɼ}5Y·¯&ÖÁáÌ¢½ê¤´\-¬µÿ‹(n};V_Œ´‚knùèäË2ǰPÎKIâºä&Q³¦íO’€¬¼H=#].ÀrfPOÉ­…“~ϼ?6÷ùé ³ú·´Pè=MóFùÓÍ Oèüa¤»>ŸOô|´æ÷'åljÕ4O2IE¡P(”+LQ¤(+fFt¡™C“pCV&9@ù‰ÞfÜ绵yÒ‚{¦ÖÎkg\³ ʳcc+-…lõo\w3qâ“LÍªÔ •8-ê^®_w/²ÒôÄÔ"©ÊrÊ“Ï,êòU”Yÿù#ÜY€´(5^Þ¤Ä,az¥6˜©ƒ®¢½Ú ¹½µ¥*º"¼™[M¼:Ì¿[VÇÚë†ÀéKiʶööýOåÑó¥-]¿¼YBH*»8reËß’·aÜÇ¢ø½c}-=>˜q¬Ðqî?.@r{oT +UƒTE‘÷e4µp £f¯(9ò^ôŒØ…½ÔIWïE{•¥ÒóžyîeL-®/ x½[* ï}Ó2dsüƒÙ^º\«N¤]øÔ–ËápêG®íg@Vüêìúé}}ùÏ‹ ˜5?Tqæy£ôÞš®šøuÓªÜ?>•ÉòËŠÆyR“T …BùRË´Ò5u˜âHî¤å§ëqõô-G´°5-L¾PÌêa#|¸zæ‘qöì{6bÖîGâF>aƒG¶¾1iìþT)ŽiûÅûç˜ïê5ñÀµ‚kc;?Þ½oÓ¹æƒ+€£gãáîWdÝvÔO¿å¼Tþ5¾üñú'&îØ¹)rèüˆ$³°Ù»¦ÙÞüzÙmÖtiÖ½ÛY¶ŸÌ»ç«?ÓŒ›…´,>¾ëz¶TsÆâ› Ælé}|ë¹­&—EÄÀ! ‹ξõ2¥€4õÈœõ ®­ücaÚı¶~ÞØ½hwï±JÆ€žm3ÿÖ’Š)dÂŒçO’K Xæ­ $jɤ?F›·vè®î[«Ýp†N>­Z›W´AZœøäy–‚ÝÐɧuƒU‹î_~÷¿àÄUí¥H@ªâ Æïìûçö‹;-&/ûó•ÂŽáô[ýoý看]üçeš¤QèÄõ£mž-;ð‚Õ‡| ð ÌÍ ù C>xúæÖÖÖ%ÒÒüÜE—$£6Ôµ—•®ÔñÛ«Yfµíe’ªüÉò®[tkØD\˜úz}䀮s×vÒ«¿'‰ ƒúû¤üu;·¡V*j53赘¹{¾Õ™]‘Oã³áècì ™ŠãFü!I:0çâ‹c|WŒ¾®ú5Ž£cbem-“Š‹róåÁPÌó¤f©( …ò_€¯o5!Èïðàã=ƒ÷ Xígç£[·ÇÐ{ø¯—J !åÙ/¯î^ð±G…ÿk¾%E¿®SeL:׺×ötRzþ 7] jege`eÌكܕ÷‰àûŽÝt-IH§G횪j÷ÃÞ »ÖqÍÛÍ:ò¤€BòŸŸZfÉ~‹4¾uÈÄågv^ªqfçGËÏÄBÊ’®®Þ¬Ö™jOšdÌ«¼9øŽ£Ï IνäÛÖ:µ1zFõ¦á çPJ²¢ÿ^ÔÇQ1’B ©:vݾù£rk6qîãW ©ã<øç¿î$H !¤8áæîY±Ž€eܼÎgv*hƒ¹½tÅ,2›ö2®ì„^‹ï_©Jeî#ÆöjÕ ¯ žÃç7S‡›BÐêçOlY§¯=»ö•ßÛÿå âû“«Å<30ŠeÝiÆ–3R %„Ršxcë„Ö¦52kš7 C·eIîMwW·nÐns¦¼‹jì¯vžd'…B¡PþC¼Ù‚*÷#N ¡Ôß’gRYâÆ×¿¦ð¿$3å͵é('÷H?–»S( …¢õÔÇ#Sß¶x”o/^â¿%3åÀغ; ¤&ã×m 8»åqV»S( …òîC}ä åý€ï:%JJˆ4óÎÎIm̨œB¡P( …B¡P( …B¡P( …B¡P( …B¡P( …B¡P( …B¡4ov÷C …B¡P( 忉ª}t ,Gúoó3±¶k~¨{«ùŽ‚·~ĈÖÍ´ž0j[^}2ómÚOÚxA~BÐÅ'õ_~&¦ˆR–xeý°¦µNJû5HÝöÕ yM{Ÿ©Þ [–ÿò슎U©}FÌÅ«NGR<õFœýäÄòAú #UMmHóc.üü‚6®–‹ÎWœôd϶#‡Y*õíå˜÷ú³„Ä-õT_mÖóH‘øê;®†¼l´¡Ajuí5ûèQÅ?_:ñ¾ÓØK"¿2H¾³×fÀÑéƒošêj§ m{`¼)ƒR|¸›q]²½%8†^ì¼ø,½XF¦ÜØ<ÂKŸejø/O<šî¦ÃâÚ·¶s”ÆörŒ}Go¸’PB)K¸°¼¯=›æ¼^‘ßÍ]¶x6üx":£ŒB$9ÏήÖÌPÕIy­?S>’ìu£éYfÐfåó’«ßÜ© ZÞƒšž8ï(ïšžÁ¨Éœ ÿpM[O>šFHÌ"½º¥6ôË3ú<,ø@ }˜»ïîk«Žæ:ïýþ^:nÓ‰cûÖé°À uØôÞšDdÏ·OèÜÜŵEèÀ©S:ÛTN†“Ð5ñ¤ôêw½}\›uu2dîèQ}¨£]Ŝ״÷ y4;ÀÑÞ¹Yð€ydz‰ìö$—*Ãʸë¡bòtA[ÇÆ•4²Ð«ºùŒ»("Ͼ v²wön?tE¤¤oënÑR)kÃÙÅ;øÃqŸ‡ZÉ ú­–ÅñýuÃÛy:5ñjÕuÐÀ@K¶¯@,lPÕíåX|ºœ<›Û´ê¬MãÎ{ò¤w&4á³Ð•V9C{yf^AAAAA¡Ãve‚¿Çu ð¶®Ó `Y,‘ܘèªm–Ç‘Œ­]Ì8¬¤bn‘6½àÚ¾Myò×[·ÖXÀw¸ö·ïÆôlãÕÄ©i§‰ûR¹?ÃC‡Ujx/,r íå˜}°+Kü|ÃÖnž!ã÷$‘²Óƒmßòäþ®Zä¶]&LÜÑÏÝ©IÓ‘Ÿòò‡Úϼ‡5 ~Ýhz–é¸ Ûxtãp—7w÷jsV¯™ný+hÞ]1Âwö€ªùÑH¯ę́Ҭ[‘ù²wÉ"ÛÔéäÙº"&ÿT>btܧÝ!Dñ‰CQ‹6šÔj&ü×õîóˮşøXz͈ײ¹™SµžckïQY¦Œß¶‰™U½¾q ½?[}öU!¤,îìÒÞvUfƒ®û„‹e$yswK.®E×IÒø_Â*ý‚•órG;ÿ/¶FfHˆ4íÂaV ÒqŒ}ÇlºšXF¥EíœÒÖ\Qt“ðˆ2Ñ™¾>£7^KBËg§ŒÛ|1Ø6k×ü} ’Ú‰&ƒƒø÷¶ŸH®H“eœßvKê;0ÄŠÅQò šÛH^݈Ö£ÒÔÓÛïrZõomÊâb R1jÒÂä ‰qPßó7êáe^Þs-?í܈úÍö°Ž9|2Qüº+Öª½²Ìcÿ[tßbÈÊé{.\Ô>eí×{T*õÍJU0þv|yâ„ZÃkÖfò®È!!„Ò´»›ûV}:×xÿ‚£ïñÉÊs±Õñ6×>©˜b­~ŽÍÜ×»ÝW'ÓËÓ#ÆxºÝõª\ýSPݺMÂ?t+¼täIiRõšÍ¸’/ŠÛÚ˺¶Æt{}ñ4ŸBÊþ™á¤ü­Aý\W ÏTµ6,>¾"VxuÚ“/¾<À\u½¤Þ³YíöŠ’oÞ+óùr\ šäðbÿßq"Ú0îô{&‰]Ò²:6ŒcõáŸùTÕ*FmhžŸÕéJÓÌÏ0&Yõ‘F8zƒÆ,šîù|óšÈbÅ÷q¿/t<8îÛËù*OlU7®Œ»(ŸïçÐbô¦i""˼¶¢wc±˜ÛË„Q§=ò!£Æ à6ºêÌËBBf=¿°¦Ÿ‚B´×P×{Ð$`pÿáŽ?ãÅßé³5Ÿ§m¹+©ùT©IÏYËn¶ãB¯Å÷¯HÞî0c@·éœûÏW¶–ûÕÎ9ó˜dî#f=kêß×tw³Ò$s©Ÿ ™î2ͳã¨ÓbL2ßûfdY“†ÍÝ÷¨PZ÷T6sl]á:4iv°gðÑnm÷ÕÕGγ|$Wüü·Qí<š4ë¾àZIÙ•qÕ®?¾ý'GòHÞ‘Oíõl?Ü!~úc ‘üþàX¹.)¾uôŸœ¸£ó‡õ½æ„dmí$wÓñ‡+$I{'tðtr ¾é™´üÆWžÕ÷‚IxDyq+#þ¯ùŸ†º!±Ú›eÖ÷xõد@ûK0+§¨Žçì'DtúCsU‰ºMç>#¹;:T;wôV%‘Ä­+Ÿ[ žNMy«}äËÀßb„±¿„™W¿"ÕÁGvØ‘CžÎa£¬A*FmàúϽUNHêÉïú¸ê×í…N ¯0tܾz@Äç?±áz¾‹cº@c^m¢VØ´WÇ4ì· BD„íoí•«žÚЦ*áÛ´íÕѱö'úVËHÞ±é]¼\¼{ Ôªê¼J ÷/øŽÃþÊ#ùç òrmÚ~ò…2©‚EWðèìÍcËϕſ¹û‡ OE ŠÈª;LÛ-y$Ê‹áįSªQÇ9„;Sj>¹Ö=O&Â;kG†6svñº7[¦p[1Íu´¡áÆ\¯vÚà7î·é…TôäÀï’ãŒò¨¥b5ÚÐó]ôŠdmí$÷ó›|qS˜¶9TÞ晟i~Önæg“¥Ò€AКW¢Š'FNÄx/eUñ??_”sh€­¡ß²x‰*¹ºqeÜå@‰¸™™rzñð^ýfFä’Œê ‚±½šže:FVÖöí–¼Rí—Óq¶˜¤™Ñ£¥‹“‡ç!Ó¿îe/W‡vºbujSu›Î}Vùõ—×xð¡'G>qm³Œ»J¹<Ô†#W¥º9GØÔÐGÌzÖ÷5ÝÝì4ÉÜGjgBÆ»L“EÎ8ê´“Ì÷>s*+tÜUzÁ5¥jœcëÇÒÊ~^Xðñž­æºš˜²~ªëµü1Ž$®¨4ã ;lÏ‘Üc_ýfµ ß’BÊïÿ}»°üÎÿ|Ì}Žõë„ä-½*‚´Ãvå’´õm ª ÎÚÖY>Më·^ž@²·†V™Ž&áBBòŽ qÔ©øp_^5ʹœ]=Ö¼%¯ïÙÔÕÕÕÕÕÅÑRU£þË”MTÅD¿eñó€Ýæ ^¬-!•wƒ]¥)¯òÊÎÇ+Â)Ý#5Öö‰ã7†T‹XÓ"×ú5Maícý¥RÒ†i¯cù„â]ßwõ]?\t2‰’zú‡ÞNì?¬Öi-£r{Ýfß>'¥}-8ºMç>#› `æ¼Ú­ìÔÜ^‹à;޹("äÁ즺*rÕWZô3†¶çôƒ\µoæûÆÏ")¿†šTä4ê´'_¢`‘'ÑÅÑŽ|óþ—Iùµ½±aðÆä´m¡udàú|u¡ øÆÜ6Æœ:§ ìZ¶ñ4«é@Ñk¹$†‘¿,ÕˆZaœë4hƒùÆ\¯–ÚàšL?ž–û$2QR¹¬{£Ú†“mð]&EJJŽ}\á>Óóùþ¥äÅÂò¡¥iæg˜Ÿµ›ù™Æ¤æç‘-êY:ºyù¶ëõùÒ“©D¹  ÊÄwv¢ ÿøgö<ÔYäê4Y±ò>çà§Ž|0Þ˜!¾5¢1—E{Y=Ët›Î}&Ve‘›tÙG«×“7¤®€z݃¿eñ$u] >ת÷Î'gÆ9óõZ|÷RáÊ I]ïùÏK¯ ±µêw,áú¯~ð1rvç•|ÚdšsÆ1ÉÜGôÌœ÷uÝÝl5YŸ™ù.Ó`‘3Ž:­Æ$£TRYQO‹\ó˄귒“²öy‘PÌñoÚ|­¹«Fñ¬ƒº9ÃqzTi…©P|y„ÏÒͪZ"Yö鯮NkÙ'0ùûá+•)ç—•þ=qö‰L)S¢ÓalcÌŽi‹Î$úØýÂÊ+Ë^œ¹[jÙ&°±Â@&$ræ”ýIb@ür¹¯ßªqe©éñ±q‰ÙåRQ^r\lllll\RN9aÓ"iIv1Œ™« ’ …Ð7(¸d¦ú e f•÷éÂN-‚'Ÿ/ãØ7Ñ—ÕþDòbq˜—››››››gè·wJÕÖŘP^¤½TÒ’ìZ›ê@Ñű!ÃO•ëq)‹ýëÛîŽÝç=lõmÄý?>µo¸mzÔ·Wq$^¿Ã֎ჼòÏîTÊ:¯vh×^Iæí«‰Èº}5±î_µ˜Z¤N*AËEÑÂZû¿ˆâÖ·cõBRrká¤ß³ïÍ}~zìþ--j´Uíý }¯~X%ïßU¨ú¶“œ]ýg²D&‘–ÆnÛU$“Š¥à°—YÏsÜÁKßéþÔ9|ITQ­*˜S"L}õ"¿Æ¦ãÔ­¯káÉ_ÏfªºqXÌujµÁ c½ZjC×sâ_—¾7\ìÓ~‰dÊ©›¿„×üª­Z$X~á3?vâÆm§wŒ\±õY9[m¨ŸŸu¥qæg“ŒR±Ð$)ÏIŠyþðÆñß¾ù0lö‹6óVöoÄ^£Ö®épwÖÄ})ª¿\3jHÔ¬iû“$ +/BÏH—Ë¢½Ú<Ë çÒ¥YÆñJT$j««zÞƒ2a¡zFú–a‹rý}òöx ÏÈÆ¸Ö3T¥&Ei⥎­½ZõõNÞóûž‡~ÝÜ][[gÜIšçMcRm±AmÞ×vw³ÒdýfBÍ3}GcR£T ©Z>™a3Ç2Á¤ZR”³0×~M‹&á±ùûŠ5ß÷å'zÛö:^ ¶ƒœÚ‡Øh6bTëu³n(Ý-²²œaå:MÌ‘õ*«ÑÀ’‚ô¢Ê±D¤R)ûŒê§FÞË×ù O £¿®×LeDlj̽›Zð®”H€cäæ×˜$=LÓl_±Ê[–ûìÖÍI F?ýií¼vç¦\S¾‰Ê³ccc5sM\ÜÍĉO25«RƒTâ´¨{ºaݽ "n—ÊJÓS‹Tk¹<ùÌ¢¾!Åמ­š?Âýð’gÚEQ±h¯ðÅшÔo>úÁíf-J.Íù§¨yB²×ÒÞzkC­TåOW„7Ûª[ãõšˆ SËÀQüÞ±¾K» Ÿ0y¼Ã_|gQX×ù7 ä£RýýË·p¶@nb^¥¸}K â$%Šx€$/1W©QšeæÙôYf¹õºn]–DÖ~ú2§2À·p¶@~b®ü¶Ñ5³6T°¨5ÎuL³!§*`O`a®ÇeW¯vÚ0éôÃ¢Ž ?xýú¸TŠ[?~<64f÷ê/×úþð„ň•ežúiÞůF5Ýþk³Ùƒ§†Nªê)3?Óü¬ÅÌÏ4&™¤ªÛ½ J¾•Íëäi­ƒ´rOüÈÜ›âÄ›ä,)Z^|u¬wØïIlž<Ò¢¬b¹¥Dp¸¯Ç?‡Ë—¯æ­P;]Õ÷¬xâ´üS`À!Óž‹Àµjæo VÏP”Æÿ“eÚ¹ŸyÉù•wOÚ§,üäÃPHŸn,šçÌ6ƒ6}¤6ïk»»5k²Þ3!4ÌüL³™¦QWï1©Q*†TmŸƒLh5Çê|äUÈò K‹ÀÕg5¥YQçô‚‡†X¨¹šc0÷Àb—߆N½ä8ãàŠÔírÄ1k;¦£Ôˆ£/„@ ¢¯Äs|úøÉhô½Â ²##ÓØì2‰PÌ5°4¬ë~äÅQö¦[ùv€£ŠW—Â;ûo‰ýGöªÜî™kÛet0ïÑákYš½ÑìóŠž­ÿre¼Ã¤õS¼ë} ãÜ\€äöÞ¨7¡©Š"7îËh:] …§?qq“ãÝç·4òji/7ŸÁR:õšT ›öÖ÷Y&Œ;³ÀºÏÈ`sêÐJWZ܃…wöß’ù~rvÒÏ˾C¯1xXó9¨Z“¢”¸>C?6‰:Wø*âtNËñŸ5ɸ“¨õœóy}w·Mj1V¢nægœÍ˜GcR“TL© ñTƒ¶s¬ ¹®©ÃGr'-?]«§o9¢…­iaò…bF& |¸zæ‘qöì{6bÖîGâF>aƒG¶¾1iìþT)ŽiûÅûç˜ïê5ñÀµ‚kc;?Þ½oÓ¹æƒ÷WÍb=w§¸"ë¶£~ú},ÿàà¥ò¯ñå×/81qÇÎM‘CçG$™…ÍÞ5Íöæ×Ën—°‘ª¢sïÝβýdÎØ=_ý™fÜ,¤eññ]׳Yx3Šo.³¥÷ñ­ç¶šL\‡€.þ9ûÖ_È”ÒÔ#sÖ/¸¶ò…iwÄÚøyc÷¢Ý½wÄ*½&èÙ6óo-©˜$dÂŒçO’K Xæ­ $jɤ?F›·vè®î[«ˆ†N>­Z›W´AZœøäy–Â[˜¡“Oë «Ý¿üîÁ‰«ÚRþ¾ZO©Šo,¿³ïŸÛ/î´˜¼ìÏW–úŠoTú­þ·þsÎÅ¿.þó2MÒ(tâúÑ6Ï–xQζÔJŦ½%ö/=ØFvmÏõÜÚ3c^ õªCûö¾m0IUþdyW-õõ 赘¹{¾Õ™]‘Oã³áècì ™ zTÿ–>>p*güˆµKn,yà<âûÙAéÏË L\@Ó=¨If#ÿ‘},ÖÄYù¶¶¨LTPsjF7Þ¿8ÌÞ3øxÏ€Õ~v>ºux¯äzÿõrB)!¤<ûåÕÝ >ö¨xïàZ†oI‘ƯëT“εîµ=”žÿÂM¨ZßS0svÅ wå}"8ƾc7]KBÄéQ»¦ªÚý°7Ã\óv³Ž<) „üç§…Õá¾uÈÄågv^ªqfçGËÏÄBÊ’®®Þ¬Ö™JdlRÜã…!¯ò~äà;Ž>'$9ô’oCXëÔF…¥EŠgvJ²¢ÿ^ÔÇQ1^ ©:vݾù£rS!qîãW ©ã<øç¿î$H !¤8áæîYÙ/j`–б½•ãü÷_%„D}Ù¤†ïˆ9¯&m0Àª½Œ+;+öíR‘ª…6´êFxÖfl9ó(µPB!¥‰7¶Nhmª¸× Óý˳îºäJ!¤,ñêú!ÍZ|ýHšúK>P¹ûáÞ0#À´ïù‚;ãxÐ\—¶ÕÊN¥5ЕT¯”bN­ì„泯B^,h®¼^„cÒfæ±!y÷}bPs –Ú¹N³6¬:/:Ÿ"!$ÿÑÞiAŽ]”×B)×ëÐvmŠøÎxGV.QMíÕuúpqÄã)!„Åœ_ûY­ƒ(ÕjÀµt¢ŒH¯îTKõÚãü¬ÕÌÏ8&5JÅ„~˯÷ÝŽ/ThêÒ¦/ƒ,T÷€Ú•ê4Y±;^_¹.þËÄòý‹5µ·²ŸeºMç>«TgÁÞ0å-D9FÞC>þ$WJçÅ\ùµ¿½ÒNsõÓ•–÷ ¦'ŽZMrl?»NÈ?›ðp,>zJ C¯ v^|–^,#„Snlá¥jówƒÖ‹Ÿ©8çµbÐfåó’«Uí»Íµž0j[^=òÖ“º+e^ç Fa{ Ä—>2{ E¿!ÞÖ=¨²^ƒàM„âÃ݌߶^( …ByÓ4äåÂGßù[ÛØ8÷ÞÛpçÔ¾ÇHkÀ·9 …B¡PÞÔøÈy¦þ_lÌiÚ…¬®âûŽÙt5±Œ"J‹Ú9¥­y]Ü캎½¾xšO!eÿÌpªú ×lÆ•|QÜÖ^ÖµJåz¶úì«"BHYÜÙ¥½í_&LÂ#ÊDgú:øŒÞx-YH!ŠßÄ™S™[Äœ— YVĤas÷=*ÔìØÕmþ¡[á¥#OJ~Ôq÷ûBǃ㾽œ/S•‰AWà6ºêÌËBBf=¿°¦_µº˜ZdÔiO~e|ÈóyÍê¶…½æ¼LR£ïñÉÊs±ÅUçÕ_ûĪÁŽ´R?ž5ÕË(s5\óö‹î”KŸÿÒÓ¦zP+ŒvÒpcÒâã+â¼]å/uÚ“/¾<À¼òOã.ŠÄçû9´½éFšˆÈ2¯­èÝXIbM÷ z4Ü Œw(‹z…ñ·ãËï$P9…B¡Pþ{¨2§9ïiÇÎÍ6?6cИ_2;|{à§&•I|ÇÏö^ÛÒ3yiw¯&ÿ \uùøTO––׺熛Çf5>;­ƒ·‹«ÿgûrj¹¸otå'¾Žëç‡ÎÍo|ff¿!“jYÁêRÙ´ˆ¹dmᘶ[xä'SS¦FdU›Þ|ç‘›–4=9qÖ™l™ê|ju×qFíT¼i°ŸkÏàÁßKsj\¡ºEÅ×Ç»ZÛ8„ü£¢™f}çÑ«-ø.s !„ˆb 6`“W“T|ÇÏöEîÍùcTÛ¦nÍB§\ªiu}¬~Z»¦ÃÝY÷¥0yäUë z.]Ú™e?ð¨D}NF]©CVš—˜].å%ÇÅÆÆÆÆÆ%唳s²2J¥ïÕï«äý[£ ë(΢ÔŽgMõ²Ð$ßuÜ‘ó šžú¬Ó¤ˆtIõïlF»6c’5kÚþ$ ÈÊ‹„Ð3Òåj–ŠÕxV7r˜ïPv÷>…B¡P(ÿ]TÅÄÊÊrr„•&ŠŽEsd½j€­3øÎÈOÌ•—¤kfmÈ:†• üDoÛ^Ç Ô^#)H/ª´N‰T*­S*3ªó–?]Þl«n ".L-cU*ϦÏú3Ë­×uë²$RÙ"4žø‘¹!6ʼn7ÉZþR´¼øêXï°ß5†Íp8\¸|FÝj£úÁ(ßÂÙ¹‰y•&-GßÒBÀÒ΢Ôg õ²Ð¤$éø–[þ¿öþüc¯£«Ww<«Ñ^Ï^ àÈÌX˜ëÕЕ´(«Xnú.‡…TìÆ³:™ïP­î} …B¡Pþ0Û=³¶cú7J8úB¤ úJ<ǧŸiåc[ß+<À ;2’ÍîÒ¢Ì"ضp1âàšu˜·a„¥Š œÚ„´°ªá ”fEOÐ bÑ`ký*ЦEzÞ3ϽŒ©ÅõEúó‹î«· IþfÐâÛµ´…§?qq“ãÝç·4òji/7ŸÁRÍ6Õº‚0îüÍë>#ƒÍXY™D(æXÖÙ b”JZ”Q;{=àÙöùi]¸§Úêl°^¨1ž5ÕËF“â¤}£ºÏyØnչ͖2²í*Ñ4&%ÂR©®QÅ›϶×Òµ=ؾ½0K¥Õxf¾CµÐ…B¡P(ÿI8ÖC®KŠŽjédïÚzÀçóIöAvUæßqøñB’¼oBGOG×ÀᛞKËoL«±æÌ ÝæLɉÍm­­­ÌŒÿ²8BâvL4lξçyÏŽ_ʑ֌%5ê´3—’ôkû§„ð<œGòÎÌïëçêÒ¼]ßIkŽll§G^&:ÓÛTu£˜R5µH}^Ž®¹ƒ‹kM\­ä‘Õ\=S+kkk» …Ϥ +;:X[[[™Ê»("ÏõhÓº ?/k«÷ÔÆ‘«ÕtÝ'\(%ew6NìÛ¡m»®1gfoû{­¨ÓP .‰YbomeaT³^ƒà é$/bJ¨»“»÷#C¬xìò2IeÒy{6‘Ü[3fàèŽ%‹²þy&”Ýï¨T²êq¥¡4ŒgMõ2j²ú„ žM¯Í Dú`q°ÜŠÖ8Úë?&õ|ÇÒ«ß ìù鼿r»'”ÔÜk¥¯i•ËÄ÷';ó5K¥q<3Æ;”ͽO¡P( ¥ŠÊ•p•Á 1gW r×WòzqŒ}Çnº–$$„ˆÓ£vM­½û¡A»Í™òNsUØßΤÍÌc "Bòîû:Ä>@Åê.½æ³¯B^,h^Ó8åzÿõrB)!¤<ûåÕÝ >ö¨öÝÕß"×Ô"Íö«:¸GÝ®–{c¨M…:M{Ÿ‘ÔLTi£¨µÈtŽ‘÷П?É•BÄy1W~í_W‹¼R¤‚½aF5R¹æífyR@!ùÏO- ³ä²ÍË Ϻë’+„²Ä«ë‡4kñõ#iê/AJÎYµãŠ MãYc½ 2+Ù©çùåé"Rxr¼Gå ^åÑîÐvmŠXÑÖ×bLò¬:/:Ÿ"!$ÿÑÞiAŽ]Tì~¨Î"gsªGÃÈaºCµª—B¡P(ÊGÐjy|É¥¡ò4Ñ+TWï <ûQ×Dù{;i_…B¡P(Êk†oôÕÉô˜ Í^G ô¿ ª«wß·^6¶gpsg·ÀAK.’øuíiOQ( …Byçá5þhÕ–o{8Ôí°Èÿ&TWï2\ó ñk?H)&„¢„»ç„Óž¢P( …B¡P( …B¡P( …B¡P( …B¡P( …B¡P( …B¡P( #¦vÍ·û™°9~’B¡P( …B¡ÔU;YëXŽôßægbm×üP÷VóìNcÑß²xùA.7‡Ù¾µ ¶þŠg—¼+R½©öR( …B¡PÞ<µLžÑˆ Ïpd®{Q’—óÍ?‰—‹¥²×.‡ðÑwþÖ66νwçJß¶NÞu©( …B¡P(ÿ&jy¿u Ìõ%×ï§ÿ£o6ÂHø*«°ì"-ÍË.Ei^™”¼m¼óRQ( …B¡PþEÔò‘KDe™2~Û&fVõ;_cØlèª3/ !D˜õüš~vUV?ÇØw̦«‰e„QZÔÎ)mÍÙÇ0ç5 (éëà3zãµd!!„(Ebp ½?[}öU!¤,îìÒÞvÊ/"ºŽ½¾xšO!eÿÌpâÕ¡µZ¤P2©)׬Íä]‘)BB!¥iw7÷µ­CÍÚÀØ^µº´ú96s_ïv_L/Oãé>t׫raôOAUGÃkÓ¿ …B¡P(”j¸Mšì|´[Û}u^Ù©ã:þl1I92£GK'ÿÎC¦Ý˾Ҥã;;VH’öNèàéä4|Ó3iù¯<•24h·9S¬"b[S^“ðˆ2ò*âVFü_ó? ÿtC¢bl4Ïnð‘\ñóßFµóhÒ¬û‚k%eWÆ5©²É¹Ö=O&Â;kG†6svñº7[V3®ºžR1—,hµ<ä›ÞÅÛÉÁÅ;°ÇA­ÌÞ„Ë,ƒ®­~Ž+xtöæ±å‹çÊâ_ÜýƧ¢„­¬û—B¡P( …ÂŽ¥•ý¼°àã=[Íu51eï,7é²;$® 2T‘¦×òÇ8’µ­³Iåßú­—'ì­¡Jת±}5æ5 ’wdˆ£ ã1ëqyµ•©×òÇ8’¸" òå°ÃöÉí1öaò„y‡¿øþ΢°®óo°YB*ŽÛÒ×ëOAÕë奔³JÕ £®™¨°PDÀ$y‰¹’Ñ…B¡P(Ê ‘˲üÂÒ"põ¹¬œä¸ó7 ¬ûŒ 6¯}9)ˆ¾Ïñéã'‚Ñ÷ 0ÈŽŒLk,W›¼fEOÐ b¡ª Ò¢Ì"ضp1âàšu˜·a„%KÕiŠUɲâWg×OïëÓÈ^LÀ¬ù¡&,ë–¦ÆÇV—œ'"¬R™¥bÖÕëë# …B¡P(Šº¦3ZØw²4lêâ³7Øejû¶íš°]r¨ë>áB))»³qbßmÛuýø‹93{W¯ì~¼$ï›ÐÑÓÑ5pø¦çÒòÓT¬ì”Ü™ØÜÖÚÚʬÚË«1oÅ^+½MU Åk<ðpÉ;3¿¯Ÿ«Kóv}'­9²m°]¥gXà¿,ޏ“ ›³ïyÞ³ã—r¤ªâÈë.sÉz-f<°ìó>í[º;Ø»··?“¤¬ |ýG¤jh/ƒ®­~ŽÍÜf˜ö=_pgœúëÒ¶W†Š³é_ …B¡P(ŠføúV‚üþ>Þ3øxÏ€Õ~v>ºuq˜rŒ¼‡þ|üI®”"΋¹òk{ÅÝÇnº–$$„ˆÓ£vM­½;žA»Í™òðç‡Ó\bj˜ó2ZäÇÐ{ø¯—J !åÙ/¯î^ð±G•íË1i3óX‚ˆ¼‡û¾±P³²³R)—ìÐvmŠøÎxÇÊ7žu§[μllÏàæÎnƒ–\.$ñëÚ¿Ñ­) …B¡P(”ÿ.\ó ñk?H)&„¢„»ç„;Рj …B¡P( …B¡P( …B¡P( …B¡P( …B¡P( …B¡P( …B¡P( …B¡P( åÝ‚kÚzòÑ4Bbùè)'4u›(“±)Ø ŽÅ´^üŒèî: S2ÇÐkà‚Ÿ¥Ë!”›GxUo¤Î³ùàÇÑe„"Éyvví°f†t·øh£&ÕhÔî`(àX¯-€òno°¥o«Þ7C#à`¸B§p€^ M®øg-O僀€ S¯) …BùWïõ‹Àó³åÛÖ|ážø´†ª²ÈJÎ|ýÉòhaå_¥‰…uªRàóõ¶9^Àã+™gîê·{zŸ/gp\ú,ÜóËöý/n´ùù¥À‘&øaМ»qy|ǰi¿oÛùwÁƒó–¿5¥ÿw‘é@®šÔ ‹ü m¸ó€}€ÐûͶômÕûðÚ1À‰Z]™ D+ü™/ÿ8 8mWàPú¶[A¡P(Ê; ׺Ï/»âcé5#Z¬ÒG.ÉÚbXÏÒ½¦3£J³nEæËjûȵ+YŽnÓ¹ÏHÞ®Ž*OÇä»N{@Šu3~Cê¤Ôo`À«õ»6>ò øÀà·á«~[õ¾>ì€G­ß+|äí4e×=îÛn…B¡P(ïµ|䲬ˆIÃ"÷îêòptº<”¨sdòìÿµ»ËÉ}7ÇŠ•ÓtÜÇý¾ÐñàgŸe®:Õ£AK®B·Iø‡n…—þ÷¤–Ž£×8pä¢éžÏ7OŠ,~ýª , 5p !Àà®Â5®€` ·dÅvA@€Hà@Ø¥pZUo%W€8…T 0•ÿ¬Ùzs[÷ ¾“¾ÛøàJ£ö¿¿Süú­rà`t®p’"< 5ðTîn| 4/åy€(JR [¹d†T  ð¸'ïaE›Œ‰@@ QNe–ŠÀÐô<À(¤ å—\@å»XpðÜ€3€ @N¶"€€4Ì€L­;ˆ¹½ù@6ÐÈ`X7BWaî}`DB pœt½Æ1©' XÍ;nz€>Ðh8Çj½ïU\´ø€Xc• …B¡ü'¨£EQ惫†ÐŸ{6¬Ù½öÑ¥IKýxac¢âs_’ó$2§FF^£Ö®épwV‹})R²äJô<ǼôîO×DÕ0¶IyNRLNRÌó‡7Î^ɽólÉÊþ›;íL“A#:ÓoF¯h­+ÿ[úò§@ßÙÿ°\Ëš ”@˜+Š Þ€·ÂŠÑí÷K` ¼•“ ©&€žz»Ð0nªqsj”Š\À°J€$À HÊØ-Ó”E€Åj²Ü•»Û eíÖe†¹½x t b  4„®4rŸ±÷ p ¨„R  ÕwsïƒqLjÄ (Uß¡U«Ëz)oàk ·šT' àÖú]øhV¯?Êÿù¿Á–6`½|`6ОÝņÀbÀù ¶´6®ÀX`q­.ÀFªÚØøøX+$és€Y@W@ …B¡ü+©½û¡Àó³åÛÖ|ážø´†ª²ÈJÎ|ýÉòèÊS½e¥‰…¨ Ÿ¯·Íñ7XÉŒ€À‰r¥3´wà¬$ò_¼AÀr D ]±¤F±”¹ê‚  +`\ÎÉ_ €¹À €¼SÑêëUÌèý€ÀÝZIø`©*£À•»2À¸®ü>Sü| xÉmw …B¡Pþ-pëž…g9ü\®„ˆÒ[ýy%¯f:ß¼iK;¾e‹æ–5Í}¾óÈMKšžœ8ëL¶¬aK–Ã1m·ðÈO§¦LÈ’±®÷µa ¸¯€.@pðUx ò>.Ë€»ÀPÀL!og °X ü¼R¶N˜Sý€O€ûÀJ`“‚AY0x ¬ÖÊcÀN*uHÀàž€°ø€¡®Cgk#S[—–Ž›ºùV¿V´šx6WÁÒ-¼8¤ùI»ìûÊ”«røtýÏ­¯Llþg†Ô§AK®„cè3íèÉ)Eß… Ù™(aYïkÅ Ø8Ÿûà- âáÀ ¹Cñ*ÐpWøÜoH€\ (¨uV9CªÐ ¸œP l‘ó¾Àcà@> RNe–ŠÀÐŒ€t )Pˆrù¥Ocû°h´¶R€EÊ×8k@l­;ˆ¹½™@2 İ€# ¡+RiÓG\ÀXOÀˆÕº^xù@nÝÛ+Ä<=à` ðU™Ý2àÐÐUW …B¡¼ÿÔÑ"‡(óÁÕLÀŸ{6¬Ù½öÑ¥IKýxac¢b¤‰$çIdMW(¯ÑGk×t¸;«Å¾ieðB•\‰žç¸ƒ—¾Óý©sø’¨"¾^ft<¦ßŒ^ÑZWþ·ôåO¾³ÿa¹–õPÈ€\ h¬d˜í•÷ÐPü¦°f/ÛÀSe[–!Õ0î¨qUšÀ5©¥b ì€à)àÄŵ<ô*¹@ òÔd9)w·@R÷‘«æöÊ€+À'€„É@VCèŠ3íúˆÅ P5D½Ìp€F@A½"¼…0z»`HÔˆ‘ èúÔ"§P(Ê¿ mì’÷ð•‚I¼mu‘X¦ábãà‰™bSœx“ü§å/EË‹¯Žõû=IªEÉÀ³é³þÌrëuݺ,‰,$õ®·6â¸-}½þT÷Q^ {S@(·*ÊÔø†w¨<ÎÖî@0ð üY¤êËk¬@G¹“k¤òÝZUï¨WÐxdù{Ê»“Æ«P( å߈VžF[XS$G§×ø¸Í·læß8çAt¦Âï…§?qq3¨´lõ¼¿9ÿwØŽ®½~‹-ÊJ•jW2À±è¾zÛäo¼ß.¬iÿÕ­ÞÚH Sã_Çnk%@>à¸@x]Æ3ÈÜ»¯"Š$h"2ìSjZg”+¼6P( …ò¯ ¶EÎÕ3µ0ÑåèXñ¹| kkër"*Ì)(' lù‚\8yëy&Ç%|ÚOs<’~ë~(EɶÕk>÷zôB¯äµžS£ªžœ²ÒôøªXVIžHVž“/ß2¥þ%Fþ#ûX&¬‰³òmmQù“´8ñÉó,‘æzßà0ÈîÆ€/<”wË`à ”ÈW1V9‰™S3€R /ph8TÇëäy@/€4+¯Þc–ŠP ™€ˆZ™ª®Ô q­0åTÀh<‘^ÚGŠ+" ©Â§6í:ç”f¯«Úõ2£}Y¹€0x¤È—…@˜|3se뙹^<s…ÀžJ¨MáúÊ )nA€+ôÊ€TÂZ u p§P( å§ö~ä¶CΤn ¬üËëRÒWn~f²'“’üÄb×™‹÷|g£‡â¸+§‡ýoÝ¥\åù’üçÒe6ŸäÔÅW¦MÉ\}3}xÍ=9·ú·è¯Ý[­ŒyÛv7#ÑÀA Ð(^(#ÀàÀ_@2»Ôr`/0Ä›!€m•?€¡À§ÀCàw` f'•†ò¹™õh 䫺²#ÐxìSþ= 8 |ô²£ ­ð¾@_ X§|¢±½ùÀ ÀSÕ¦~,u¥²^fM*öÑà˺ÔË>ˆ€HàŒB¥à0 <¶+ï®ql0S±l p¨–{›ŒVØg Ø€§ð) +´*ƒ”šŽÀ–ÿØ.ï …B¡Pþ嘋··-å¤cÃøhýzä1æ#êµe+…B¡P(ï6<í‹ ¼O4úå€ °>¸Àz"¥!ÆF ô/c¨SÐ &@k`쪋۞B¡P(”÷ºsÁ } +Ð0DÀà”|WAÊœÀ è4vOµ–J˜ ˆ;ÀUjŽS( …B¡P( …B¡P( …B¡P( …B¡P( …B¡P( …B¡P( …B¡P( …Bix¸¦­'M#$f‘žrBãQ·‰2›‚ÙŸµ]AëÅωžá®Ó0%s ½.ØyñYz±Œ"L¹±y„—~ËLiô€_ÑjR½€Þªv›Öö¨.ÀQù¿No°¥o«^fL€C@³·--€ï€C@åß €o€£@åß9ÀO ª®øç%OÛ€À§€>›ê) …By;Ô:³ÏÏ–o[ó…{âÓbªÊ"+9óõ'Ë£+O—•&>fy8¸¼Ÿ¯·Íñ7XÉï}àOùÿe@’üÿB`"ŒBoÜ·ÝL …B¡PTQË"ç{µ5»4±Uß{Ý/G©* )KŠºxîz‰æÂU¡×tòÖÿ5¾UXÛK]ß’%ɧ|~°ò„ß®Ÿ9ÎU§VšŽû¸ß:÷íå|YÖ\…n“ðÝ /yRZ‡’_#¯¾ÀA +Ð8ŒP” èlŽ›€åì†À4àpØLPî+æTÐبð¿½rá­_Rû²–Jm×k.€OÝ€>ÀVÉa{äÕ ª—>9@`pÝp§Í2´w°PkÀÀD;]iDËzýC€%ð…|„ôU¾€ t¶G€!ʧ„é_Ês-<•3juõÖ†.ðp 8_+‰›kŒï6€GõC{¶ bð€Àu P;]iDûzyÀ,ÀøQ®ÿ**‚CúÛÀ@ ¹B®¯ÖÀwÀ—@,°°SÈË<ê´ÑF3À8 \ {€ÃÀ6` `¬æšWÀ =§˜B¡P(ï:î3¢ÅµVvBצehX×ý†NXðÛÅBHü†n5Íz¾¥w nÍ_†(È?þ™=¿eñå•Ú”\ ÇÐç« Å7æ¶1Vzè²*¹á ¬€¶ÀQ àlú6£ä €]@W…ìS€m€­šÂRõÀ8¹åQᜮò‘ëÙòT`³‚U£T ~L€ÍÀj`` lGøE•\°>¶ö€-`«ðêR±²s`%¿x;ðA]úBØ¡j…%s{yÀrà[¹®š‡§ºèJ]½ÌhY¯?p˜ ðäß.ªú×8 lLåŠÝŒ—§:GùŸºÀf`’BÉ £N›‘`<°Yù³@m‡j­ì¬»%И6FjJèìè¢n …B¡¼{ðëx½(óÁÕLÀŸ{6¬Ù½öÑ¥IKýxac¢b‹$çIdNŒ¼F­]Óáî¬ûR¤•Fi•\‰žç¸ƒ—¾Óý©sø’¨"Rç’Õ ã1ýfôŠÖUïÒ—?úÎþ‡åºÐû@à d¯g…$Àè«QÐHáÿû7`#pÈì6^vIDAT8 DRv©ö€ p^»Ñ °Ö«IÕ(ñ@WÀÈ¢€ŽÀc ±È[d…€ȬåÔ¯`‡ÜÝ+Dš¬7–0·W ¾¬L ðHi]1£}½Ø"Ó”ûº"¤ òåÖ9'€(,©1€À“Å0ê´Ñprêá/ÿÏà2°N«º2Ð RÖ…S( …òF¨«E®É¿{øJÁ¤NÞ¶ºH,Óp±qðÄÌ ±)N¼IþÓò—¢åÅWÇz‡ýž$Õ¢dàÙôYf¹õºn]–D2}ø®kÉâ¸-}½þTyÔ‰(/¥œµ†ÊäÆP±²= ¹ûspWMÞL`à ôf¯€ –Cª‘¼Æ t•WcåT(½i”ŠLÀÿŸÞ@r}ãjS¨}µÐØÞ{@1Ð8„«úQ]iDËze@™Âÿk$UÅ)ñ# µT £NKm4Ô'« pl Ò( …ByShc‘CàÖÆÉÑé5Ü |ËfþsDg*ü^xú7ƒÊ¯ž÷7çÿÛѵ×o±EY©RíJ8ÝWo’ü÷âÛ…šì?u%«CR˜ÿ:lÁ èü£Þf%Àà଼;,R+L1K à#…ØÙŠT à•ãnÙH¥Ž\€ ´–i@!Ð8Z—Ä€^Ãg Ò eÀà@ •7ôÐFWy3õzfÀmùŸ‰ptwàòˤºQ§TH|¾šÏ#ìi‰jR€2…×Q …B¡PÞj[ä\=S ]ŽŽ¥ŸË7°°¶¶.'¢Âœ‚rÀ `Á–/È…“·žgr\§ý4Ç#é·î‡R”lj½æs¯G/ôJ^è95ªÚSWš+ÿC`’'’•ç$ÆÅÆËŸÀõ/0òÙÇ2aMœ•ok‹ÊŸ¤Å‰Ožg‰Ø–üæÛ™@2p0ÚÏ€k`px ÉW1Èó2§&EÀXàÐðÄ ±³é@&0 àme…Y*f„@` $åÀ HVu¥`ˆ€Á?±€Ðˆ€2àYƒê\0¤@Õ.˜lÚ{ ö* Ì^Wµëeƒöõª„Ø™€'0 ¸¼’'%w©À* è˜Gä©Ì£NK©n]…àE >` p#ÀÈ}ózÀDàØÃlà†ªBx@(ð¬Ö¨£P( å ö~ä¶CΤn•Ÿèu)é+7?³ Ù“II~b±ëÌÅ{¾³ÑCqÜ•ƒÓÃþ·îR®òwqIþóGé2›ÇOrêªMÉ\}3}xÍ=9·ú·è¯Ý[­Œ³,ù­pX | | ÷€y’x ô. lV°œ˜SKÀWÀLà)0˜©°N,ߘyp Xü”³“Š1ÈM¥k@h­>*èô®+”ì†cÔ×°sù8`|­à÷ÕØÞLàà\¬Kj¬W#Ú׫®|±¦8ìQk‘+€‘À@xÌRRF–RU,9¬«åbç ¶ÖYxü €CS@\v«ñ‚7<€ù¯áƒ…B¡P(ŠVX‡¶× PÞ€£ò-í+`0·á¶±§P( ¥A¡¨ÿ.Àx@H;à € üA2¤¼m=`8`¤×Ú&¿ÞXo€L`©òç …B¡PÞèiÿ1Œ€O€`À‘ÀN Gûr)­á­€fÀ@”Ö € €8üÅn#N …B¡P( …B¡P( …B¡P( …B¡P( …B¡P( …B¡P( …B¡P( …B¡P(ÿ=¸¦­'M#$f‘žrBãQ·‰2›‚ êX¼AëÅωžá®Ó0%s ½.ØyñYz±Œ"L¹±y„—¾²Ü&-Gÿrþe¾Œ"ͶgÝöñm`Ðfåó’«Uõ+×"xÂü©]lk÷Œq—Eâó}MëQ¡ÀoY¼|<ÝfË}S m€z™t¥~£îß{V@!⼇«ÚÖ¯Õè4ê4uÓ¹§ÙââÓ}ä¢ñÔsî¿üLL!¤,ñÊúaM ª·y2ì¸=MT{cïw{¿±.¢P( åFàùÙºë9âŒ{‹T[äÒâÓÓzw•Ó¹§IÝ¢Ÿy Qe‘×·d¾ÃÀµ¿}7¦g¯&NM;MÜ—BÈýÕ…ë·˜y£Lôä÷/¼›xµé1|X°%}ð¿ t\†m<ºq¸‹Žª4·éı‹}õj¥ha‘ƒg`nemݤ׮É›´È ^&]iÌë6å–¨üÞê!m½\Ü}Bº¶mįG)ªàú~u¶€”=Ø1³_g³*á˜ïAŽIèšx"¼µäC_Wï ®–’Ì=îA¾‰s»a?Ï"äåæ~v %+…B¡P(ï/\ë>¿ìZü‰¥×Œh±J‹\’µ%İÞåë5Ušu+2_VÛ"×®d9ºMç>#y»:Uþͳq¡¬ôüh'ú §y=yí6gŠß¨EþVëåÚ‰”dmi¯ýÍT³`Ëð­i$ïï1Æëj܃<ûQWÄ䟯*nx÷iw!÷¿r¯ñ²ÁoÜokݘê¡ûfõE¡P(ÊÛ¦–© ËŠ˜4lî¾G…Rµy8:]† žÝàý)âì“ã\k{÷tÜÇý¾Ðñà¸o/ç˶ä*t›„èVxéÈ“ÒÊÚtý¼}ùßK%¾Ñc)­~ŽÍÜ×»ÝW'ÓËÓ#ÆxºÝõª\ýSQÕ%CïÏVŸ}UD)‹;»´·’okÖfò®È!!„Ò´»›û*†s0§‚£ïñÉÊs±ÅU@×>±R8 J×±×÷Oó«RMwÓa'•Zt[óyÚ–»ß!VÊuKÒþš2peJðËzZÑoX …B¡€Ž»:y¥­ JplõçA–µ,h½æ žB’ִѯ‘Âwþü|QΡ¶†~Ëâ%jãÈëQ²Ži»%Dy#ªâí6gHî|é×qú®Û‰ù%y ·vÏìdóÚýå‚V?Ç<:{óØòÅÇseñǯFîþaÃSQŠ֕Ïnð‘\ñóßFµóhÒ¬û‚k%eWÆ5áWg_ž@òŽMïâíäàâØcÈ Vf\°Kå;û+äŸ_40È˵iûÉʤ 9׺çïÉDxgíÈÐfÎ.~C÷fË,rf©0 ÿ« e}[žÓ‘RBRÖêøۡ”ËCm*jÖ1²°²¶o·ä•¤¶•iÖ÷xõûAå ˆý¥jq—E$6âffÊéÅÃ{õ›‘K2ëö5E­¯š©½z¾‹^‘¬­ŒåzmòÅMaÚæP#y5ÕË “®Ti#cs;¹®þ?>*i²ôîì¦ò2øŽÃŽ’¤½:x:¹ ßôLZ~ã+O¶ïG&ÝþÈ'Ïæy3__ûÔm:÷Éÿ#Ìà5|èÉ‘O\Û,O ‰U÷‚b‡Ø¼"_Þ˜šä …B¡@E]›–¡a]{ô:aÁoS!ñºYÔ|xò-½}lj>·ùÃNäÿÌžAm‹\›’+áú|u¡ øÆÜ6Æ a㎖œ{±Yw×õiüéÊÊÅwf6}ÍÆ­~N$¢‹£ùæý/’òk{cÃàÉiÛB+,I½–?ƑĕçHn±—¿…vØžCÒwrpTΘjÜñ÷,’òk¨IEšQ§=ù’j‹\¯å’Rp¤¿M…jþË$Õ¹©Ðõžÿ¼ôÚ[«~Ç®ï~Xúê#×iw^ý¤¸¦P·éÜgâÚV&× ‘³«gØ’²äõ=›ºººººº8ZêÉgÜå@!9?uä€AðÆ ÉquXœ«Î2fn/ßeR¤¤äØÇÖ\Ðóùþ¥äÅÂz¬ò2×Ë5ºR¥ ñ­r –£kîàÒ´ç¯I²—?vötuuuu¶7•ßgz-Œ#YÛ:›Tþ­ßzyÉÞÊî寠íú4¿ÌŸ)`Eå=(ð[OR×ês­zï|rfœ3_¯Åw/IÖ–ëMyM&üCJÿ 7…B¡P(u¹"³Žë’‰ú‰…mÄk4ðHnñ…qÎ|@¥E^ï’+Ñó"§ðÚÜ@e+Õ¨ã®ÿø‡˜ö=_³ÈWúëÒ¶W˜?<‡qwHM^-iY%”®ó§[¢Ë )}qzìþ--”}¯ ©ú«’HÒÊ*÷£²E®ã1#šìë"÷û*[ä¥bÀüÃÓE +:|°5öú„°Ù„¦ûuÝ•p}”¢5ªÎÊ4Å‘Ë"ÇØsåª]ž ¾?Ù¹ß9ÔXÆšÚ˵x¢DrûKg>`Üñ÷ áñUŽ_Vºz]yMmÜ›¨äœ×óY#®}ql†^'²‹,ªËêv¤„<úÚÍêQŽå +„\bÃQ{‰š{P·éÜg$g[G‡.›ž\ûÚK0h»!]q*µ¯ë¡bR£A …B¡üËÑæÛ0É¿{øJì¼mYø›ƒ'~dn¶)NL)»7« ¯ùò—"RteŒ#O»’€gÓgý™åÖëºõ\YH”’ÊS¥É×n§WÆ‘‹³_eI¬Xûâ¸-}½Üªñè¼4ºœ¥~d¢ÂBI^bn(v€ò½Í8 ¸ÏyPU¶(~ïX_Kf+wø~êÍ‚M«Í†T¾…³ró*ëãè[Z"Z,œ-Ÿ˜+®ü[×ÌÚÇ^*Jãÿɲ êÜ/¨äü•»'ÿNqÿäÃP/éÓ2™5#-Ê*–—D´*©½ Ë<õÓþ¼À¯F5Õ· Ÿ=Hpê§ÃI–y_+5µÁár´)Ž¥²¸\DöÕ߃¢Œè8‘y«Á?­ 80qýs¸fÍüm‘ô0M¤ºdRÒp½L¡P(Ê;VÑš·°6¦HŽN¯ñ`å[6kÓ¢FlIáéO\ªìZï>¿¥‘WK»x¹ù >*Õ®d€cÑ}õ¶!Éß Z|»°Ös\œtöxl}½*#­9¦¾xW‘‰ìL'Iaj|l5qÉy¢†0¤YQçô‚‡†X0˜R²âWg×OïëÓÈ^LÀ¬ù¡&lR¥EE°ó±×žmŸŸÖ…ëqÀáÈS3‹`ÛÂň€kÖaÞ†–u”J ¢”¸>C?6‰:Wø*âtNËñŸ5ɸ“(d[€L"s , ßàNñšÛ[tkÍæXñÓý¦kñÞåç² û¼ï¤ úJ<ǧŸüíMß+<À ;22MÌ&wYòólØùÚ©|Kf¼ ïì¿%óý2ä줟–|‡^cðððµ,ok|ëænE¯^æ©_ZN¡P(Ê¿ŽÚ9WÏÔÊÚÚÚÚÒˆÏåXX[[[[™ÊCz ü±eþØ„†v¾øèéùI¿Í;”¢ôðÔk>÷ú“ÈGw—+­¿”•¦Ç+Ùµ²òœÄ¸Øø´"©–%Fþ#ûX&\гòm-ÇÏËZn8­›RÔeãž¹½|]›u™¶mûàÒm þL}»O|áÃÕ3p>ݳo^_?W—æíúNZsdÛ`ùÁEz-f<°ìó>í[º;Ø»µ ô±Fö«Lùë cjéã§r¬F¬]2fàèþº{¨wúór"0©ô“‹b#þŒ×ë±bÅÄAÃæüqû¯>1—sel¥b„”ÄÝÏ1q7}rìI)J¾RÖØU÷ÕÓÚ†‡ohammeaT#TBšuïv–íà9cCÝÜý»bÕ Æ9GÇÄÊÚÚÚÊLá“æö oYuÇzÔöÅ­b7¬‹*f݃Ìõ²–Y®êIùãõ NèŽØ¹éËŽžŽ®ÃWï™f{sñ²Û%¬r—>>z­Ä¹ogUÂ0ÞƒÒÔ#s~‰‡M`ÏŽÞ.-zÍÛ½&$o÷œ±*^øöÝ?m!¼~ða1( …Bù£âìLBnÈ7ÌÐuµù“ !!„Å^ÞúU'ÛZáž<ûO¦IsOW¿G¡Š8rmJ6í}FRSd¥ý¸¦­'lJBŠ^žZú‘3«r­´ú96so˜`Ú÷|Áq<¥8ràzÿõòÿÛ»ïð(Šÿãïké½ -!Bï 5 *ÍQA,Aý JEPA)Ò{/Z …ôÞ/w·¿?’ƒ\r¹»äѯózx|ÌÍîì”Mî³³³;wr%I*H¾~hݬg‚ôW ïï¬Úuén¦F’$)7êè·o¶q½ЙNEáýè܃ ’$åEZöB㦓/iï~ÕAŸµÌ¥Ý”mwÔ’”vñçÉý;.‰-<ýz‰™C&JešÌwØI:[4Xæ1p[žtaBýRóßͼZÜA?…:•ÊAîþÈÔß®dH’$¥GüõI¨~ ™Rï#·kU©yäú3ãâÄ€’{š­¯ÜgÈöˆkZUí!ëâ¤Ì­/ú‹§:AAøf×ò½?6}úÚãšÔól?dîLéö—]œÅˆ¤`¹gè‚s…RÎéåãkìe[5'ŽÂɯåã—ŸÌ’Ôgæv«È¨½ ‚ ¿ܽÃëKþ¼›-I’”uçèº}ýÅ’åBEÈìžœþýÁëiÚœý]­Ï§kã 3#¬¯€½¸8AAAAAAAAAAAAAAAáa“»¶yksœ$Ýü¤™á{‡¬”°¼“C³wh3çª$®`bMÎ2Çàgg­Ýw5>['IR~ìÑ#‚ï¯ÔâÐai\™5bµµlÝ¡*ÙñÅ®MÇh¿z´äƒ—ð-»P§#ÏðwÏJ°·Ã‘‘Â96€‡ö^½ê:n‘r[²¸p¦záA«ÑžåkHcg¨þ#Á}Yû=ñg‘ÂÉ?ÀŠAÜÿí”3rCqKÞû·¼¥>՞›ŸÞ"ıb%A„޲KqØ5¶pÍâ1 ¢Â³1ú§ËÙ5ù¹…aùÅ?åF]ίÐ!íšM^3#.WYÎ ÷æ]ý#×Mê?ær‚¬~ÿÙë¿únõ£í>»^PpmùÈgö;ß Šl¼ºìŸ)…å-T% çNàp£mïÞ’÷_dËÏ$h«ì€ù×iõJ{¾ø±¢ÕuÜ"fZÒd/<@2š¿Ä¡w¹ý;¯=Ïþpýçrš·!òúÏ&AFÿq|5kçøìÎý]sŽðÜjŠÿHDÝÐ'äñZ?Vôäãw¹ü$ƒ‡³%ñ!×JA¹wÿ¯~˜ó\3ÏàwÂ Ž‘k’Vu®üh”m£)§r“ŽŸLו#·.g=›F3¯Ji?t7¾¥¢æÍÉIùˆeHþi_¦p7Í˾ÝŠ1òbv¬8R cÕÕuÜr[²Zyv%.œ?žÆÎäf6\ ç‡vúŸåŒÜ@Ò'˜þË ôæÛ}¨"H… ‚ üë” tI[Ç Ÿùó¥ÌòÇ)e*;EùY*j Ý[˜¼ct@ÙïFUƒÑ«g×þeô{ÒuU›ó=6uû ÌÜÿÛ•\#‰ÊºÃW}Ói÷¨·¶&êx°ZO%ñ AüE¶>MƒþܸHØ;Ü¿P2€Ý;‘ÂÉÛÃü7,äμõ)±‘Îqæ#ƒI¦S‘ô8{vß¿ËøqJ®¼R»;[ÿ¼ŸzéeT–•ª\J¦nãÄÓÈ¡éx¤“„:‚Š›ù¢ ¬?Y|¸ˆ7¨L¬(£éÓ=„t…£Ó©©¨DƳ-¯¾=>AÚM‹פ^½H?Å`wëÚʬ¢+^÷ë{xšA}e޼ú!Q瑉û…ñ-,Žø-èÇ@þo5™áHá$í`q¯•²¦¾v¼; ›í¼²Ów¾êv!0›ßnö’“=®IbüDb[òi·‡~Ý%‚ ŽªAycäÅ3±Õñ¶-ÕÁ³Ì÷¤m“YW%IŠ^Ü®ôLme½Qg¥üú´¯cËOokÊG^‰œõd®Ì½¤NÛ:¢Ž±XÁ¶ÑÛG²b¿íçõ0¾²[O%ãŽ}ÜåèþæÐF>ž…z/mô-Z«©a¬|Š ZôKÎyF×*±û¤“LêH„4ç…~¸É-M­=€´pþž@‡ú4jÃÞó¹w7bÂ9=“®ÔoÄOÇ "rÓ¥2¡ïRb?ÀAÁ˜Há|Ùùõ/zoà䊷/sw‰Ýz’n8QXºÄW-õÉŽl<í¯I<Àœ z•ÔpVµ®Hg”?Vm¢¾¶ÁÜçÛöúMŒù™¸î_S™o«Ê‘«ïŠV÷‹1ü¤}¼Ù–:uxéC´y»že-i²UmvŸ%öKú5¢N]z>Éäî÷ÃîJŸ€Ë#¤‡ó~ ™Í\[qé[•ˆõKÌ#WfÛt:¸•³³‚—×Qø5EH.‚ üÏ0‘cãÓ¢kè£ý½øæ¬•ûb%IºýuoÒ_€JÏöÍ|Jß+ý‡oÏHÿs˜Ÿ»²¹59“96{{oFöÑ™íœ-Åmßü½óyw–õt8ët·žŠt‰WjàÞ)œ¥mplIÌ!º]MØ0oQÓôO°ÙóÝqN<ͽ«nó3Ä£¥5•êÈê£Ä~€KQšëO–ˆÈm˜»‹Œ/)žµc˽%"rs¥2!äMr×ãë潬ûãqªÍét(9GAÅÌíFbA¹õjú6ºý<@@müñ¼·‘#Ï çùØñÍaN±¨TÅÊ‹ŒM×WÁ¸ä|ƒ·À¶!רdÙ¾¦kš±úTœ‰m#"ÃYÓñþ!î%yNñ¤3-i²€^ öÑÁè¯çÐñ¤¿iekjdžì=ÅÑ1”úýõiDh'õgÖÇĆ#ýMoWã9Ô}é}A„ÿåDä%Éܺ-I§ÆÔ±à[YQãÙßR³÷Ž®§£y¥s.fÛðõí)™‡g¶w1ÃÚ6™q¾ vEO·ŠÅ㪠I§ J¼£EsíÓÖvíÙz*éËñáÚ“œ]4·Á¾9wô¹¢§ÃK¿AâÆÛÜkn?VmE çÚ*¦öÆÃ°!L¤Ú7%:\?W„Ò¹ª.aáü|/ž3ŒÈÍ–Ê÷^dí¥[gnýHèkäÿAËNÜù‘Z%£ÑòcAÌÍ#?ù´>®µeá^Ϋؔ £‘±Ùúúô%'Œ7üºBþOÜ;#-j++"òRõ=÷Bq}}ú#]áé!iï/‘þ A‰æ03¼¼^°aînâg‹5ç2†¬CúŸòûlë±ý8‡Çàbò7Ô­ÑáœzÎø•€s'²ÃkñȽ ‚ üCXsWJ?³é`µB|-˜ìÜiì`wÇÐå‘…’$å›ZWÑdáuµ”uðÕÚ ërPøô_¶k¡÷—½Ÿ{2S2RMß f4:ñþÇÒ%Ër,V¹j@pà}A=ç‡Xº³:µ É$ÕØ¼üíc5¾ÿ¯Áÿq/ou,¯ $èU¶©y w¦“s‰œËOUºâQ™Å?Êìð(4§fèVám_R™K’={‘sœ3‡ˆ­ÃÀ¶ho‘QEö³Òx@SÿMÔ7ñ2yû)ì=™Ö¿V­µtߪ­¯ì!ÌÄ!—!7y¡SéúÊeåýò)Óy!ž!ߘ Ç»:´s&æ:jc©Þ pÈáz&‚ ‚ðïRv@Lnëêáb#Sy:)åJooïI™’Q mg­#íÝq<"QV¿ïÄ3‚¢WöùÕ0εm2óHØìà˜%íN8•§ÿT—û–þ;—4µ® %*òÖmý;‘+Ÿ38µz¹¿çÅ‘^ÍÛx¤ÍŽº‘¤ÿÖVy5¬m“qîNÖƒ~ÁŠå X´ÑÿÇÏ·˜º•B/BûÑæ¯í@ Ø0e^GØz‰ÛiÔiŽ7ìMÕïk25÷¥3â=Ž.§Þ ¦5'BrЂ:†-±LÆX%.½™ÒˆxZX*“¤<ΧÓÓi7!ŸM§yã þ¾idG¥Þäå“jø:œ¤p’<™ñ,oïÁ9¹üpÖüq-§rÂÛm!©Yúág ê{ùWN⻉D|É©’¶¸­Œךç:³òý|NNak<¡¯1ѓɫȩ`Kí…KØ×‹mßòÎ2ΤáLýxþo?ëÎ àòrž¦Ÿ"ˤ9ðr(wÖâŒþ÷—ì8"ŠNi;f}‚tœã‘Èü™8… xúì4vP}ž ÿ,sA„9#kgJÒÑ‹'€Ú4¹bï•„|I’¤¬[¾}»‡o™˜^á÷Ü/qÚÔ¿^/ÿ…Fæ‘[“³ë“»4¥‹|iRàýl›Ì¾.UÉËÎ-×z*‰Ÿã®=Éø…Áé ¿ƒSê}ä•G^<ûùw ßi¦¾r†,GºÌ¨šFªlf_Ç5Á\}e޼ö!щÿ… eß~X^KZÐ N|¶œÔËHá¤íbio÷VîÜY~˜¤ùx”¹wfWXéê÷Ÿ6V1ò#®F G:Ã9ôð4~×¶Ä„ómGîM AAë(|9|‰Ÿ:ZŸ“ ˜áߟ¬p6?eÙपÁºCd~U½¨^Aá±kÄKx­MülÎÜþ¦Ëüw ügÉ }‡ÂpNÈcØVÑP¶“/O çäÔ›èæb}~‚ ‚ ˜Ü…×grá@ñ€£ è[£ºË$üwÈèÁ÷ëH»ÌÎЪÈе‡ÉÜÃú7°ìµ¤‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ¥È]Û¼µ9N’n~ÒÌðÝÁFÖJXÞÉ¡‚Ù;´™sU’ W²&g™cð³³Ö­“$)?öèŠÁö87åëƒwr$IÊ»³wá?•Eù UMɃ¹Ö£ýêáÍñ-ûR<_äïÚ•9 ·G @Á±@*º®|¥U×q«€É>zÐjÔ`ùc$¿ÄÎ{Ý-ã±Ö„ EôWc¸«á@ žjËÍ‘FÕ×0UÉwCÈxšŸZ"~çA„»†Ã¾<’R˜pîb–ñˆ\›½sâ“êõ|¤¡KÅâ »fï_”$cyesVú?»d凯>Þ.¸nF=Æþ+Içß º—¹Ìí±’ #¾~¡M`Ãί¯–òvõý7ÅHÿ;ä ïÄ7ŽC(|šæeWx±""G†»-ÞNüðÜÃŒ«ë¸Ö3ÙGTó2Fp¡ ƒ¼p»×d2z3Ô—Ž4òá›AHOœ$]Û# cnmܘÕi(ýJüÑRªx$¿ŸCzŠAÕr‘!‚ •!÷îÿÕsžkæüNX¡Ñˆ\cÕrô¶¦œÊM:~2]W6"·.g=›F3¯Ji?t¿·:¸mó97Õçߪ§°i2ëš&âýÆ6½e3HD^DÉŠ¡ÕW×qÿ…<ýˆÁA˜~«x@Ò‹ôÖÿåP8pð%Ά_?4AÁùÒ—J{¾}õ㉞Aþ‘Ê|Aé’¶Ž>óçK™Úr÷‘©ìlL,U­¨5tClaòŽÑeGÙT F¯ž]û—ÑïH×UmÎ÷ØÔí;00sÿoWrõŸ¨cŽËköÆèv.2š âmÑêݲ­Û’ØGBˆÎÖ pc8amp*±MH»ŸBAÞÓÌ÷GY"InÃ[]‰†4ig:Lç0 ÕgÏÓų&¤®op£¿¶?[ÝO½dÁ˜(U¹äLȉ äд%Òó„ª@ÎŒþ|á €’õÏ.¢•¹’Ñ4ˆ£CFp´5«hÅGõíñÒÓ´(qBzÕ&ýÛšß·ò̶$`²]üÈÎ^éDÌ0Ãþ-º¶©s¿%—lIÓ}dz_ÀÜyeŠ‚w;bÉ+7È/«š^|BÄ5Nê+ëIßGQJG±*…æõð2,˜&ñû‰õæSqu$‚ üUâëIáùÒžT¤Ž¿°mѨže"h¥{£µ”žM›x–ŽO”õ^^>·ÑޱSw%ëª6g=™ë#³[ô×ø [“îBJýë­«”Óß°zÛÖ—.8÷‚‰¯ýªcëÆç5Y}—'š³¦1?]§a}‚õÕªUÃ]¸}‘†›tƒ·zðJ‰h½es–øóùßÔý…&ñyXšZ;“ÝÝ¢ãï`ŸáÅ•·?ÇzQó.ݶ°•Ÿ RM—ª\:.fá.~`ÃS®  µgrÐðúoøü¼,#{»Õ&}7Ú¡tâBÑeÆp¾ò6ئ~{[²ï ƒÏÐ(„½-(•LÔ÷X87˜pï@2žiF^$» Ìï[yf[Ò\ÿÈÊöLÙÇ79¥K¶dHÞ« É>2³¯¹óÊ4_F9±è"É’±d%‹ŸBÁÝ'è“ÆÀ³dèS|ݱQs1d<ÝŽ‚‹¬ˆGæ@­2ز“ù0þ!ÆTA„êVÁA=]ÊŸ£»õôvrõ­ß¢Ç³£'¬8>¨õc­ÇîN-a\žÓ¹ÉŽZÉç/åÊÿùeŸµ98¶É–m³*͹˜Ì±ÙÄÍ;Æg}úÂÚ(Aæ¹1׳ë×ëÝÍ#þó»Y Vîa³3zpñó%FÖÁ¡( PðV²Ãƒ<¸~™_ójMV_§(¾r²-1YDç"år%Ù gS©*f·#7‚ÁçÈ”Äi©{/UÁÛíqŽ¢õ)%P£¡i‰TÓ¥2!*÷Z8Ûð¤=ëÓèW§êi¹¡oìì²åä»ËŒ£åoÔâï@žÜÅUHdvr}o^ØÊO9 ¤oÚº¡H4_*3LÖ· EÉ|Ú„i $Iغ1Ù‹åGɶº­¬jIÓý € ºäÒüÑP».†©¥Z²¥3òDtæúÈ̾¦Ï+sBêàšÍ¶ò®4|´“e64ðf\K.ô¥ËNNkìT %GÂËY*¿“+(±+vKì‹DÙŽJâ A„”ŠÞfW'^8”À–õ_/^·äÒþqs‡ÌÛûMTÉ(D“rådJ©5/YÜíÌÔ¦?ÇjN­tÎÅlŽþeÿ‡6 zö{*Ë`¤Í¦áØß÷Ä{Ú~Ó|úŽ}sí×îÍ¿’Ë;îSM:öy›{wðµ×´o>í¬eCìwÙ’ƒÎƒÜ,–§ s¿«)léíDírCîoÓ%ÅÛ?ÏjO6<Í'wYuUQ¤–¨”‰T{³eÃu2ÖÇ‘Îì8F¢±ÁH³¥2!.mÁž„äðj4ÏÒ ï<¢-ˆOung¡ÈG«#&›[Æv9u† EýYZ” ¬ë4S_‰—ù´Ï8òu6S;™o3,Û× ¦[ÒtÿRÜBL9A´`á|.©TKÚªƒ%¿ &ö5}^™UÇ r‰-¿áRrHÉ!"Ý œÄuéqä‚{[æ´eõ>nKt´-ùÆŠ‘šIŽ‚@[¹ ‚ðcÍÄW)ý̦ƒãz„øÚ•gfcçNc»;²<²p¹þ£…×Õ ³½ººtÔV¡œ>ý—íZèýeï^sOf–ú2véññ'Ýï|¼ôr®–ãóžy­ëÍu‹ÞXÒüã+Ì%/Œ\5 x‹Ý½{à’:-ÖâÛñêBÔ šÔR! `ûß<Sξټöókòf#ÞïÁG)„îâ˜Ú|ªÒˆÒo)SâQbúÒˆºW9ÞÊ ”ʄܒléY‡œ8ÎÄÛ’¾h3ȨTˆVVV¾¥Qc˜«ob,Լ݀ï®2­>"Z²tßJ3Ý’¦û·˜Žxý­ I*}…Pª%e¹²)o_3ç•9r€%gŠ:‡SôpA†Ú–¡mi{›‰ £±'ägô\‘!m‚ ‚P…¬zÌÉ.0´+1añ¥B[¥gãvM} Ÿ ËÜù\ý@½þ+ã¤ó{6ºñ®ÖºœAæÑgÑšbÞ2çDf™¯[…KÝ)5:½(DѦ^9Ÿ€Gw MæÝ۷ISWÅ7º6Ÿ¿³é€‡‰$nÜeÒ^jlå¦'øX”ª-$ š½èMFÿ6ô-±i5dASgd€Œn-a[ÁR•CÃ/ÖåT™Yì,àõR°|ƾF‹\ãCœæk¾¾…,¾FPC†ñh! ïÞ­i+kZÒtÿVÓç•Y1à@- *¢´£…-·Ó‹‡¹3S8.ñ†ãÂÈ¥¯zrñIÆ~I½Ýp(äú¨[A*¬l\*·uõp±‘©<”r¥ƒ‡··w¤ÎLÉ(‡¶³V‘öî8‘(«ßwâ‚AÑ+ûüjx·Ù¶ÉÌ#a³ƒc–´o8áÔ½n]nüí[úì\ÒÔº‚”¨È[·õ÷+Ÿ38µz¹¿çÅ‘^ÍÛèÃ#mvÔ•ˆ$5 M:¶-\6ûÿVM˘µé†]û7¾œX7ùç_®X2ôþiYt†ÑÝù9ƒ©·(´'´myí6Z@Á”®xÝek2·ó©ã…7ì½ÛšLÍMç¯F´çè%ê2Í›-v*ä u[²™Ú–±2\ê2ÅxZX*“$ ç èaÇ´tа)7êówº‘•J¼íÈÓj8Ÿ?)•${fñvή´Ððƒõ3ÅKP©ð¶C«#U­èµ ¾—¯qº)ßµ&â<§JØâ¶2r\+ZÒtÿV•òú¨gÔç"ɯÏé#4%¦)™‘øÔ?% @n2OaU+®·'#“¯ŽY4Árm:ßÒÜÊ-}Öfë«Éaá]6Ôâó”]µ°­Œ·ò-iº«Hy}d¢Ì¦Ï+ÓÒXŸÇäf¬8bð¼DQÎÑr¦ve© 4¸Å#g9QâÀ‘3<¥ã³î¼§$&‘;Ønl^™«3½øiÉ‚ ‚ ü“(8<œŸjVw9„ÿ-•8¯üÈÁæTd¶‹¥TެBf/üÅ«A„¤ÀTá!²óà·8j(ÐáâÂäN¼ ãsDUýS“ˆõçUf:Ç|Ü–'¸ELAÕLÂqr wÖ†Ò+›¾û¸T…3{AA*GnÃëí¹ð,Ò¤9Ú•¾Õ]&á߯ªÎ«¾ïKÚKì¬]ÅR²v™O³¾9bðAAAAAAAAAAAAA„ñ20ááñ|š6µ9öYe^U/³ÅÖ]6êR ¸ØÒæ#ü 9øi\mQîGèt\TR:‡? ¹ b9TNu÷€CS÷ÁÛžŸ’V ¬Aƒ'¨Û[‰ô‹\ÙDr–~kµ'Ò¶‘AÚHþ^HŽlh1¯ nï 2ÂÒ7£ ‚ Â?ˆÜµÍ[›ã$éæ'Í ß,¯9ò„d(ay§Š¾UÁ¡Íœ«’öNUÕä,s ~vÖÚ}Wã³u’$åÇ]1"ؾD²CÐÐÏv]Ï”$I›|~Ô.žòênàÿ$^ÊcžDÿöF='1Obì+e®y!‹y‰Ô­ø»;”-™&1¯è_Ω¢ÕuÜ5™+Ó7Ú½î¶!4\ÿ¡>©Uý>rÚœ0L•˜w¯¢¿+Ž<›RüáÔߨã^Ý5A„ò•Y³»†Ã®Y<¦ATx6ŽÆvÑåìšüܰâUÛu¹Q—ó©»f“×̆ËU–³Â½yWÿÈu“ú¹œ «ßöú¯¾Ûpíh»Ï®rŸ«þÔùï ƒšl‹õì5mõò=¿4í¹äF\kesx.²N_yHÔ\b‰7rGž8K+›‡WÑê:ÝvзDò÷{œû‹Ô\t$þÊŸ—¸qŠ|GZ-á±Pz¾ÌÅ ÞV~z$bŠÿ_—AFј~­ÉžtÿŒÖƒÀ×]‰ÎªX¹Aáá(‘˃;ºíÛzÀ¹>ÂÞ0¶‹”}jßž#9æ37ƶÑ[ßN¯yâTFû²cž•ÍYóËøQ¿ÿpgåìeo }§E-[®‚ÂoðŒgYÛ{ô—û2UãF´îwôýé¿}õ E«ƒWŽë@º÷ææO¸?‰Í9o#ðMêrdi‰  jýhÖggd2ÈãØtâó,*•q*š¼G‰ýsÈkÎc£H]ÁÑsÔžH+'öÏ#SN«©ç™QÙ™R6ÔyŠÆ­È=Îéßȳd©-yÉ‹ÆÄÆFë« hMý¸¾€°;úfó¦Û8ǰw!9:“meÉqM·hyýëÀ#sñJbß|²´`C«©£ãЇ¤–¸Â´oNËÁxº‘Eô^n]D#Y–úàÎI“jM§o'´Çùæ1bJÍ.¿ÿ§ˆ“<ЬÌ-®¸ýܸm$[IMâ_üz˜¤=ôéÀó³Y4q%.‚ ü•‰ÈuI[Ç ß ª}ÊÛG¦²³QS^´¡¨5ôÇSëz]Û~ÀŠ[¥&«Œ^=»ö/Æ%þß_ýª4ç{lêö˜¹ú•¢A6¥{O’#îê#N©°@ƒWïÁvÏTll¿"»Òi,íǯ‰Z÷ »x^eýN™ ¡;èýHñö]gs¸;Û@¶xã¾%B×›YõGñÿ›N•¹ºÞ]J”&ƒKsŠ#r™72à ƒÒFÌ*ŽÈM—ª\:œž¤c0W>§ðM:¿B®§ÇÐd<âØ7ìhø-]‹7œÃÝWCªÆts'¡ômˆÚŽ~]âLpç‰3Ô(þ©í'|õ>…X«ÜújÉ´¥ý›4Ò1¡ø@ž¯Òg ï²]gE[YÀTÿÚÑlõnpâ³âˆ¼á´Ôra®>"—So¯|@‰ aüR“³ñæSÜ9i¦jÐçаõyÃp¼ˆŠÆ©W—–4ë y]_z9ÏV ð'z7WŽPX¦¤l½HÈ5j¥ñB.Ä[ÝC‚ ‚PÕ*1£ZáùÒžT¤Ž¿°mѨže–ÂSº7jQKéÙ´‰gép_Yïååsí;uW²®jsÖ“¹>2û·AŸ°5©è·÷NoôæÔA2™­ïé‹Gxj©Ù¬–-œBÍ™_v'bZðiY£×þ˜Þ¼œ¥|ù2ÙÐeú@Éo<¾2âçòuXДµ£9ó~¶¦Re4XDï.ã§|ÚŒˆ\ƒ"ùÍfÀHálêÆ‚ÆœI4H5]ªriI G\¼êàð(>Ôò#û"ù:ÈfsŸø³ÿ¦‘½•!ôšFûnÑmݧÑs%û_IínÎçû—HŸW©ao®T0Qߤo‰–pA}7èôrð‡âp°’meÓ½ošãã¼ôªtv=É‚:|õ8{—“UhQêƒ:'ÍqîCù›¸pÛX²ŠÆSè6‰–=Q@á’2Joâÿ,?à¹CÌkspl“- ÚfUšs1™c³‰›wŒÏú0ô…µQ÷æ†dî›8`Úšµënäl]Ì_ŽúÓ÷n*U0žiRò|þ:KëgÑîä¯3 yѬbgy SN“‘jÉ,Ä©95œIIÈ¿ PãZßâÔF §Ü›H•ùÒc8ä³éi.Æy%G’]é>`ûNß;rKÞ&0W*ÒOËø4%0?B:ã®"ý4E¡NEmƒZcdßü,Äý5FM'~:ë6"T@¦áô‚[ãøn){Ì£³Ž*ÈÃ*&ë«‹æÀ6†õ§Û“ÜX‡]/Z×"áqÖ¶•Y¦{ß9ÁÓ°‡ˆÑìÿ Ò¢‰ÝaYê;'Íò~ÄmÆø iòø« œpiLëhÛ‘ákX8€,-èˆÍJTîxµ£õ8judØz>룟J~DÌ&Œï£¨Ö‹‰+‚ Â?N#rÔ‰«nYÿõâuK.í7wȼ½ßD•¼¬I¹r2¥ÔŽŠƒ—,îvfjÓŸcµØUeÎÅlŽþeÿ‡6 zö{*«d¨­K;º`Pƒ/½¼ S3´~£ŽÛ«ï¦«- ÇUA“Ž…}ÞæÞãyÚë Ú7ŸvÖ²ù.W6£©pg¥Áûþä^ø¸Œ" ÄöŽŽ 7—!ôyœî«è¾Š;+øc*wõCƒ&RUAÔPÀIn»5¯¬K-gçê#©fKeBÎeÔàß—pm%A£h178aþªGÊ%íòdM"©·Œí’ÊžïÐ:-È«à½fê«ãÆgd÷'ð<6Q¶päsò$kÛÊ,Ó½oŠ 5ë\;m¬ M¦>¸sÒ Îþéñåœ*¹ÑäBJ8·ãEý>Ôu#, ûE "~ãøwŒ½JÍžxq®Ìù¯Ž£ìý+s[PA´ŠFä%Iég6Ì×#Ä׆(sã•ÎÆvwdydárýG ¯«fz-$tu´ÖŠœ>ý—íZèýeï^sOfýb×ä$Çå2VO†pcÃMËX #W Þbwï[\R§ÅZüni­¾Z…†«J¹¨TVÔ%ÒØó¥RûŸàd ÚŽ¥Ó+ÔÍë5ùlY:3©2{T 壕TÔr}`T”JAqªÂ:µ*P*4Q¤CÀK æÌ œGQ³@LTÅò)7ÎÖ¢«êfë[p‚“7èÙ‚NÏÒ°3\âøù*h+ó3Ñû’Aت¬KM××:òòÜ= ²L¾&SÜ9i®¶ØZ0LÊ -“úýÝÒÞ%%›šNØ»â—; „ÂŒ}cLA*ê#»ÀÐv®Ä„Å—º ¬ôlÜ®©ákß2w>W?P/¤ÿÊ8éÆü^Á͆n¼«µ.gyôY´æ…˜w‡Ì9‘iæûVUÿùw·;ûí–;>¨É¼{ûÖ}‘1i– ®›"¥pñ xÐkXñ%‘Ü•&õs£mh:™z~ä]ààh 6ð°3ŸªM dÍ©íª!OoǺÚD²j ¨Í“Û©«´¸T&iãIÍ'#ê —¯AbŠù}‹¦8‡Ú¶ŽÖ\-Zß @§¿@‚G¾Ç n.$µÐâ}+ÍtïkÈËOœlQ5à©ø–ÜWMÄV€ŽŸS³è%è2álk>õÁ“f¥ð鈢lš­_Á]ÿZ&§G v‡HâÓ°¥ÉËø¸×Åw$ÁNÈÝD#Gqï‚ÒŽclæ” ‚ T³²QÜÖÕÃÅF¦òtRÊ•ÞÞÞ’:3%£@ÚÎZ5FÚ»ãxD¢¬~߉ fE¯ìók¬ALmÛdæ‘°ÙÁ1KÚ7œpêÞH´.7þö-ýv.ij]AJTä­Ûú§ò9ƒS«—û{ÞYéÕ¼GñGÚì¨+IE¯q뙤lêãêtÿm*¦RØ9iVÒf²¦à5ŸÄ•:aìh·šgW ]PÁ©qÄ嬢é"Z®!û¹Žøø\y‡èÜ2Çp¤í0€K;¨ì)Aá*3F.÷}aWRbbbìñYÁò:oïNLLLÚñŒwÑ(«&=*;à¹9ëw<ø×Òç¶O m÷æ®TÃ;ÓšôˆKñº´ËWR*2eMÎr{7{‚gn?yúžs¿¯­K„Ü©ñó_ì8qãâSŒïÜ}Öɬê¾u­>Áò\8ƒSG¶#g?»_&ªhr‹š pn²@ö§žÑ?°úE²´¤pà)Î][tQœÏ޳  nÝ¢äÔó=ޤ¤0Œ]Os6 ²Që,(•™úp÷Àí]h q3y ¾FޱS Öã4J-7ƒµá¬}–›·ñíE@n¬$±ª_NY§?MÓÀß²^@JâàOkˆL·¸Í×tKšê_ §†sæ,Š(ïrò-®¾ó[JfK{¶­&­ïf8pçG³-J}Pç¤9…g8 x­Ì0y.§—p7Ÿîw!ë[»²e»~æI—¿áÎ5ìâãGê¶÷æÇ(=SFF­ItòC»ÓW«ø¤AA¨E=ßÄU?—À®ïJÌ;Çž"¦ÙvaŠÄ<‰çGa[µ^ÚÐà}fIÌ+¤kãê®§ ‚ ”C¼œ÷?DՆɧq- öÙ êvÇ.>ÆM˜}O(ÏŒúWÐÞ!|#Î$ÝÊ™e¶´ûŠ®Cðv‰cýÙö§8ÏA„(…õYÿR©™8ÖÁ¯=>uÈ>Æ¡7Ùñ»˜Y+T¿¼ œÜˆÆ×ê…¶Œ +#r{º|M=-·eÛŽoYAAAAAAAAAAAAAAAÁ8¹k›·6ÇIÒÍOš. (¯9ò„d(ay'‡ fïÐfÎUI {§ªjrVø<6o{XBž$I’&åêî%Ã;¼ÖѶÞS wÝÌ’$)/êà²áÄK«ËHX†‘Å&'nÆ’¦ÀG•:œ VÀfØ Ÿ>Ä—}V×qÿ Üà X ³Œ¥ÂfTæóŽð l†•ÐÃ°ÅÆÃz˜ µ«»j‚ ‚ð€”]Ʈᰅkiž£±]t9»&?·0¬xEE]nÔåŠ-®h×lòšÁp¹êr–i£·×/ŽP6Ãÿ•Y+Aãà×ÿØŽ ‚ðQfÅj]ÒÖqÃgþ|)³üecd*;+ )j Ý[˜¼ct@ÙïeUƒÑ«g×þeô{ÒuU›sÑþ¶5;¼úɤ†+ŸÌ.þÌ¥íÐÊ‹ßo¹]Ê:Ê[uFÓüÙÎ^U»Xwð=4‚50jÂ×°ìJlSfÃfØà C<«õ3>7œÎa:¨ êS7Ã<àРf–H]lxh¥2a0,ÔÍÐ €g`¤~ƒ·õ‡[jìÖŒ%êÀ|Ø óÁ½êzª¼ú6…͆W.°:ZÝVÖ” p€ÐzÁª2=h:UÂJØ kà ÃÃô¾f=Jø Œ®íSžƒ¯!Çðshû@ xvC]p1ÜL « ^úÏ\á‚ ÿ•Kž/íIÕHêø ÛêàYæûZéÞ¨E-¥gÓ&ž¥ã.e½——Ïm´cìÔ]ɺªÍ‡‹o¨%]þÝãßô¹0qàŒCÅ ôÙø6­g“qùb’Eͧ¿˜Rðñ„ûîÊü›×²yà«„‘°ÚÀ[püÀOŸês!Þ„yðô*±o}x ~‡Ñ0~7ŒrL§zÁBÁ4— Kå¢hgÂ8l˜jºT&ÜO°Æ€>l €›ú ¾†°ÉØ¾Ž°¾üŸ>pm¸| —`>øÁ UÔG&êñðd‰;Î[ÝVÖ”êžÞ0¾‡Ær(/µ;Œ…ß`4¬…W¡s.<[!ÓXªÞ€³%ZïWPÂ} Â.G™-óa´+çaAAø÷ªà`¥.åÏÑÝzz;¹úÖoÑãÙÑVÔú±Öcw§–ˆ° .ÏéÜdG­äó—ò åÿü²ÏÚÛdK‚¶Y•æ äÿ(´ñ2wߌûð› ktéùÑél äv.vä¦ähå^ý>å²èñ_c«±wµ{Àcä€ì‚ð ܆ߠg‰‡Ÿ€|Xjˆƒ£ð(ì¢ ÛÉ A´aΦSŸƒ˜¹¤O‰Ô`“!€d¨S"Õt©LH'°‡vpZƒø@¼~ƒ|ý¿²rámð…aÄè?,ɾ€C´‚ · Tf™¨o!l…—`-d‚ ÂÎU¨t[YSª{ÃDH/ýUæRUð<ì…ìƒ:ð ì2ìÓ9—Çàt9©]!ÆCÙ{oE—ÆùàCácý}$£7Â.êAšÕ,‚ ÿ> N¼p(€-ë¿^¼nÉ¥ýãæ™·÷›¨’_´š”+'SJí¨¨1xÉâng¦6ý9Vk0sÃêœ R¢o¦Dߌ¸xt÷ÁÔÓWç~ñÔŠkãtèò3ó±u²÷ ³ `õà×nk”}œÉÏÌ·(nRM:öy›{ãéÚë Ú7ŸvÖ²'Nsáè v®DD%‡àJl ý6°Þ8Ø »!»Ä–&Rm %.Ñw´ƒ³úp¼³¥2! tàþ°:AMpd J‚D}„ ƶ¹Qb8?U1uÁl}ÀKðü Á þ®Š¶²²TE¾×·íø½ÌA¦:€aÐ|;ÄYœsy¼0úÛé¯Â÷b,ÎV`/ÂH„†@9S_²!jXׂ ‚ðOS¹ ½E¤ô3›fŒëâkCTž™;ìîÈòÈÂåú^W/Ì>ôZHèêh­9—¦Ž9z*YÑ£¡·Š¸Ô a‘j÷ÖC´o»ñ…‰jä^[ù}1NmIf…‘«o¹?ž.©Ób ,-‰4 -dÛà |Rþ¾Ká7è Càyx",HU€S‰8XÎ%²U€³a”ìZ‘R™PÐ à&¤B{ЕsaP y UQV–×7ÃØ OÁ¹2•k++KUäÞ ±d¬eL§šV¹}eú]ÊjNð¼¡ÿdŒ€¥°2@] ¬ôo9L+ÿ@â5I‚ Âÿ«¦n؆¶s%&,¾Tp«ôlÜ®©á<íÌÏÕÔ é¿2Nº1¿Wp`³¡ïj­Ë¹4¥OË^…·Ãâ‹ÆØ2Oo8®kþFçÝã>»˜Jÿ'^mËÅM‡“,ûV×dÞ½}ë¾È˜4uU†:¸Áàdr³8X#!†Z–ªƒ<¨«ÿ±´2—¯¤h,(Àý½*Ÿ³:9ZÑeêº K]dß:ðãÄG¦¯8‘­~¤Ì#ÓBŸ*\ñÙ†°÷óc¯ÑííÉÕß; ¦Ãëðhà:l+rÝ€g /؃ÁúûšNý|a,$Ãp‡ ÔWÿ u`ÜO  4*)š.•i7Kü÷– a‹øÂ*È…W cÁøÆÂ2È…íU=M%Ö0¦D8h¶¾ZØïÀïe6²°­Œ×4kzÁ´ý „¡0Òá[ø³Šš7Â@ØUæZˬ«ð)¼ ÏB ,)±ÍÛ–'I’¤I¹º{ÉðÆŽ¥¦ã”[#áa²kê±á´ÿÄfÆ&KÉåMŸsÚQQö”tèè³÷B®•YT^4©ö±°úÇÂê «Õïá½ÉººŽ[¬ríl~ßêm ¥¢õ0¯/·Ö=|ªFýÉ ÷v^]œ³þßA¯¦v÷wRù9Ž[Y{oXýcgjý¾SÝIöm½·¯»i½Ï¨ÇTblBA¨NeÖìĮᰅkiž£±]t9»&?·0¬xµE]nÔåŠ-Âm×lòšÁp¹êr–i£·aÛí9·ñ_ø?ökÂç&k«´AÁRe"r¹spG·ýc[8×ç@ØÆv‘ò¢OíÛs$§r´môÖ·Ókž8•ѾìøwesÖ&ü½ì«âÿZ·à›·_ÿ¤±¯ XX#áaÑÄf:¡¢K¬[E—¯KÏÇ.SÒIµ¦ÕuÜ"Ö´óƒè#k[C.ï0£Æ„¦ùsŸJÜz§lºÄ°¼SçŒdíÕÛýéZê¯^K?%q+gßM÷‰<ú}s÷稢¥œØüŸ'œ:ï¹z±Ï¼±o®+,¬Úš ‚ ‚EÊÜ«Õ%m7|æÏ—2Ë-’©ìlL¬õ©¨5tClaòŽÑe‡ÃT F¯ž]û—ÑïH×UmÎEûÛÖìðê'“F¬X|ò^LaA[›·vÖù¸»ÝsßÔ9xÀ·=UŸùþÏúk~¿Åeöª¾ïÖøõdýcaõ~[éÑÙÇ`ž€SS—Y?×9VÿXXýýûýÞ 5˜f`:Uf«ê=µÆ¦S÷nå×ìí^²”Çùþ|ü^ªßóµe–ª<Êz®?ž©õ¤ØØŒÚQ÷|;PÕw[»Í£‘-€};ïÝŇó% 23"dŽ6OΪµí|ý£‡jM졨ªÕfË­¯£ÝÌCõ7M°±¹¿©¢Û’º{¾rp“›Û· Š%«÷¤çâíu…Õ?v¶Î†o=»ÝÏ\Þqi½C+|‚œ§ýPtÜïAkÚÙü¾¦Je‚m#·©ƒe»§'ÿyÇhD/SÚÊŒÍ:‘7îk«¸–u0V™oIYWµ6½ZÉ 7–’÷¦Îü^Ûô-NUT`AA¨ JÌžTx¾´'U#©ã/l[4ªƒg™ÈHéÞ¨E-¥gÓ&ž¥à•õ^^>·ÑޱSw%ëª6g:,¾¡–tùwÓçÂÄ3eTÇÐd)²€amodR9¼2Õk(9ÛbUöQGxrE¯ùµÞë¢ùntÌà Ú¹Ì]èTã^•mm^þ?Ï.©“Fìóæû§JTÈtªBÙ÷³Z=Å®÷îí3f^¾ºdkË|Pë³W'çÇ=ß'ú¥ws ZÊt©Ê§IVÇ*×”É=m;ùáÔÞ±ž-ª6îÉê5@Þ¹”§»F –k¤ëå]—Õ=vÞ|¬Ö(¿¢ËŒC;=KÎF¡ðE×ýò–ŽOXzQ5ôc÷&öUÑE&ê›S°á—ÂZϸ4ÕÏtRÔtÞEÚ³&¿øj²²meÉ™ã÷¬ï·óó6&¾Ô'zÈ‹I«hJ]O*ýç®vó<š:ujVB‰&µ¦Mîk®T¦Ï:ë:©ÅËÎ5og¬9RÎt&¹¼ßªºGÂêýù›ïÄgl]ïýMS)üdÙ7ÔiZäÞF²f^Ö™D¼*KÿýtW¾O;ogÿ|W…˜O.‚ TeÅ6×¥ü9º[Oo'Wßú-z<;zŠãƒZ?ÖzìîÔ_•—çtn²£VòùKy†‡ò~ÙgmŽm²%AÛ¬JsòÎÚx™»oƒÆ}øÍ…ƒ5ºôüètvõFå yeÖ¤ÿËiÜÔm^#õìþéÚÉÎÝ\eE1›*ÈåÍ^ºCS¶]– ðÇÅ9C¾un癵5¹ÜÝu†ænŒ&±€ÄØÂ+%s6™êÐÊm|¨´iDâŠ3: ’®iÔ%ºYä2i°ìÀÄ„E{´:°qÑäKª’©¦JeBæj²¼ƒ¿ÜÅËÁãböÍÆö]êÈ3( næõ‚F—™†ÊMÒéÝ©bŸqRXZ³ßñ„·Ö¨5 itI%·Q6KHziJv‚»Œœ° pábž¹R™c²¾Rä¦Ìð×<^èœv~—V‡¬ÞS®!qYó.é¬m+³œìF½mŸ¹öî‡ß䱚èð2U­m—<-ö½?5ÔUäjK<­lM;›Ú×L©LŸuV±Suo/ÿ#7ÖØ„]zîüqnr?›Ö}\†Î®Õ=$~Ä'y™:ËmÈO—trE§IîŽ?ÄïM”×+ÄÖÙÈ€º.9Ï5Ù[ÚØÿ‘WÉ y‚ ‚PyýÒT'^8TqlYÿõâuK.í7wȼ½ßD•ÂÓ¤\9™RjGEÁKw;3µéϱZìª2g¤‚”è›)Ñ7#.Ý}0õôÕ¹_<µ¢ÇÚ8«‡éTA“Ž…}ÞæÞÌíõí›O;kѧ:ÝÉrµ4ÔJ±[²®ä¤‘ÐÇNîÍík¢|~C½çïïPèï.#QÈ+X5'«ÑŸMžø=kˆ¬Cºû a*UV·—½[Bö¶0£Sve5:9øeçÍ?f|¸ÑL©L(ÔÞ¸+ Q»Ø$nK:äèØ÷幯ŠÔ5æå'kbÓeéj©0Ss7Fc$ô’ ¾šŸ ÐêÔ’L¥”µ—\¦ë«ËYwÄã㑎¾gÆÙÙ>7Dy嫬;j‹öµ†ÊÏ®™³öèNµ‰+éRê;4àNư6’egºùv®d©LŸuV‘Ù)¼HŠÐ/m¡öú™¢s?wç†Ì¿¦û-{Á½×ʼÍq “rÔØ8È\Û»óÏšöF«°uwDm¬µtº¨ɶ¶ÊY‘—#žïA6k†±¤ô3›fŒëâkC”¹áJçNc»;²<²p¹þ£…×Õ ³½º:ZkEÎ¥©cŽžJVôhè­"® ‚û–Q¹j@ð»{cj’:-ÖÒL%)'»(f”²ât¥ª(Ô¹ïtK8bü!:)n{òðým8?ûœÛ¼!îáËãÆU õ7‘*s©¥ C“¥)ÎÈÖMa[bJ°‹Ÿ‚¬¼L}ªÊYa'·¼T¦jwEçÒÆ¾›‹îÔZõ1_íkýZÂí ºª™¼ Ó¥çÞ;T•ähA}uÚãßfg®qy2 ë×·^6y³wߟ§aE[™+•L&Óó'´ÙÚ\}ËVQ[S*3guFŽe.é®îÎÏ~Á¾¾§Œ8‰Bí­É9Äq\3Û¿§¦D"w·ièIâ5Æèqä “¤Àt7Aá¿ÇªY“v¡í\‰ ‹/5 ªôlÜ®©Ág™;Ÿ«¨Òeœtc~¯àÀfC7ÞÕZ—siJŸ–-¼ o‡ÅWÉ[4™woߺ/2&M]%_Ùiaùñ6v}ZËMÄ-ºÜ“?§NõÒ—šÆ¯¸·p´$UÊIÑámãm ÷t7Ã^U⹩:#Cmüülš…º¼½ØûQŸâTUëœÏ=ö° ª£ô®mÛ$HNZaZ¡%©Räμ wçI{v_ð‹OçäÂBIæX<[FŠÝŸgc?~ŠK¯þnþäÛ5*?Sgi©LË‹Qg8©oæEæ“#÷|ÂOUx;³Ìv2™«ÜÍ]n_*ÂÒi#.i=ú¹ h£ò­cÓa Sóª}ñ… w…›»Â©Ä¤kóõ-(ücmÛ`ï1!šß~,(y¿ÆÒ¶2v\3²óW,Êw|ÚwÉû.]ÛÚ6ëä8x”k…_äbM;Ý×T©LŸuÖµF¾zÿY©f¨CMc!¹]·>rÐÛ¾eû~|½¡Jø5m¯~*òž´_bqoæÐ:PÐÍmöt»ÌmiÛcŒ\%*|k ]Ü¥¶úÙAA¨„²ï#÷}a×ÝoÛÿ¼?úmàØ0ßÎë%ФGeL™³þC[²#þ2)tú—ûS G•4é—âu>—¯¤h,(Àý½*Ÿ³:9ZÑeêº K]dß:ðãÄG¦¯8qï±NÓ5ª6:í¾éw?šìõúg~£l¥Œ¨‚ãÛ2#2еÉWr܆Ìr®ç-—#%\Èþl\ÚÕ‹RsN¥¾¿Rùá(¯9š [’ßøY1g“k Œx P_MŸù¹jÞÏOBÕ{–'¼uÎqugÛ¼BÉ’R™¦Ž/H€ô}Ùäì9+õ®QPvŠ\9ü‡:ÃÑí~%úƒ“%;Xº²(q©§×èïýßFu$sÁ*mp¹í;[ê¼7?ñƒ~ò‰ùúJñeœ˜ìÓ!<ãÏ[†ç‹…meô¸fH1Ff»í>ˆ\®ÕÅžÏþê÷ŠÖ׊v6¾¯©R™>ë¬j Iwnmvê÷./wÌüäpéámm–6×ßu̧îî6äÅæÿ½ îëõ÷/2¥ìü¥¯$hf{~¼Å;@saKÒ s¼xU&oöŠ[HFö[GµbÒŠ ‚Pªy¤øÕ­ŽMª»–ñ\ó·iÚ·{&žÎµ>3Ax0Ê>Küf·ÊŸ34q[tÕ?;êÛÇkõçWß¶­è"!àøek3A„Šx˜“vÿC&ø[6Óã¡“½î;¥» î’TÛH†¯+×7äýµáÛãe޵—kÎß¹ŽnÎבõoÁ:éƒ#Ó7 •¼¾ŸO’·×pwÞߤat^äÓ yo' º“ã3ù«bÂd¯›7*!<"qèO,åÓü…R.C?* êCoLNŠˆóÜïrRõõÏeÙìÐmÇu¼ÓH.>ß/80,.ý¶WwÔæøüð–‘D6f³Š\~m`°3~‚–^Y6z“’d½‘?dÖòZR±vœGO䪭6ÂÂãÓ§=ôàP/s%ê³4—Î}2{PLHhlŸ1Óïàéhw}íre§aÄ<ŸI·MöoQ¥§ˆv(][uÔ4;©ÿá&s¯$L]’OÚ~®ã~TBô»¦ûXŒå·Ø~iiiiiCïù¶’4üúÐð´´´´´~ñÞ|‡[-0ç8!$ó…X‹S¼8»rËÍÞ¼ÀÙ»jÎ?Ã/bÞ¾ÒƒGµLI’ŸÚÕ@4ç¿~öæþan<‡u {_(/üžÏ~úlvxÏf‡ë6èž÷öTråó›þsü¿uÝœ­#«ß‚ux²à/&öÂó¯Úöìöà'¶º‚èö=jEéœÀûŒ=ÜFûÝù‡šœ{*ʬc[º¸®“wÉéG‚›zpnø‚ó¤þû‘Ò–\Ù¬"žŒ°Úd£7)Éŧ›'Šœ ûöéLÇnY58‘+›Ú/ú¹KD±q´ýù•®Y®ìÀ‹y>“(7YÍ´uÔ¼4oØ8®iôö^Z@Ú~Òá_×r•Æ_§zPÓ¦¼›Oª>ÔÅŽxÐêJ¢ùe‚‹Åß\&l¯Ëx.†Aâ›YeßwxdOé¡'bÚt«´çø¯Ê‰ü×¹ÑÂîÔc·éþôÔy¸þ7ULô=íøôâñ·®£‰udí[`eÛÓ¨×T1Ü¡n^”c¢ÛBIâïþp×U%!D“¿kÉäÖ‘š5oŸ†”|>Γ@{Œù¬ØTð¿‘nMÉPÞ3j¾Ðû‘¯NT‰©|ï[#½,rGÉ’ç®>T¤!„èËO~³` »eÖ]ÆoÓèwN JšóÙá-!¤µ÷w YÿGføV»è‡BcÇ@—~3Ò¸g×ýVÒÆTîY{Ì”|Ç`/Ê]Š+ Jð1^ý«@Û˜Êþ\wšêsk_GvFìäʦ6`R”TeiSû¹÷ðFS¹ºvé¶¥CéUE —ñsÓÝãgÞîUR k“Aq⌱²ÓË_û$C<|fßnM:G[p¼@WtªÐ²Éh‹NVøëë-:§üwæêW…ï?°*GoñQïVÝÏÿaöœµW¬´6J}çŠÝy­[î‡ïlí&h·þ{¢TK!D]~úó©m÷0)Iܬv^QBˆ¶:{ïGNã¥#¾«oN.ûÕ¸¶]Ÿ°ÏûyU?LôÔﺊmsc¢f}{U§Íx/Mj‘lg=R Æò_ܱ¢4ý­¥ÛÔ­½]œª#gµa»¼v´a³müàIon»\ßÚ¦¾¶udí[è :(4îljé?øCWW~œ€[ë Ù_Ü?(:4nÜk‡5jsïÜ*'ò­w |§­¯4\~w€Ô¬Ê{æ£êØOgjóZtÏ­s>:o$Õ_0ÖÜà{¶+Hñ†yÃbB"Óf¯Î2éþzÊb:ä2~›†\Ýv¬²à—Ew¿kU‘±E¹nSw´ª¼ }ÞÿÒšNóbžÏ$ú?§¹[ ä÷z9‹Ô}=LÒòQ¿ŠIÑò¾Íó1«{q[W”0üŽ/rµyÿéÞÚ”º°ò$þ®%—_êÅw6W6µ€’ô~ù˜Ž²ßߘ!êÚÜéÚåʶ¾òs¦Ždc6×|¿êœQ±y¢%ì»<¿zÇ[?Vë-V~ÂÞïèNÍ ÷zñ2©þj¨¤CœYùë3pÒðà¶ë(ÚmÐK;®Ô4ÔdýôümOï.=º°W»…–ËØïëIÖ«ñVg×Üà{~‘“ú=‹ïH‹è5äñ½“E'쳬ȷ?=:>$(<~À„™Óû¸YôR¼ˆ‡w©HéÖ…RÂC¢{šùô3“›Ú¯½/”'õðòôÎU£µÁ/¿á⮣ۗ½½£Ž)ØqèÄú·V]Ö¶|ƒ¶{$ 8÷4Ìö·8Á¶]¢kƒ3uä¤6l—×v¨í¶A{Oü²„hO}|ßи°ðÔYj‹êš×‘µo¡s(O¯ÀWG¦ï˜ØçåW‡»1AÊ»ù¤hy¿æS2l]­ñøÜÀÖ‘˜ö¿¦”èÎýz\¡;õb’ÅÈJyÏW¦ÆšFH¼]y Ü÷ÀàÙh$2mÑ8ˆ&ï—W&D{õBŸW¶ûþ®@ç/8Ÿ+{hþ˜Ü¤ÉÈè´'ÿjì¡:2–ÿþÅqáØ<~›xÏšc Ë0^È„ÛC³×ÿVl„þêO›òü¦ÜëÐŽ0eq†¶ÃMP}þJÇÇHnðÝŸ½v±.1|Ïô^ƒV¸/Z7/š”($Ñ¥çKuVb‰bo¾É«dãW'Ö?Æc¯Ïÿ²fÆÆ¼ºì?W=wkЇeÍ ÂGr«Ü±éb£µ vâ ˜†]þ\bdŒ&uÞÚÕ'•ŒÉ`BsåÛï‘Z1Õåä5ŠB#Ý[m–ȼè§Oé,'U9Kût倮{uäœ6l—×V¨í¶Á ;5Bñû§»ª¬uA7®Ž`kO”Õ¹ 3nA¡ã%u%Ýo“Ý( ¢^:oYM‚!ƒÄÝ{_—vBMm­¶Y{3¡xå$ó(–8}£<æŽ !\ÑÄ?»ûJnŽ,îçÐñ<7èÎOßñÿlΗt ÆØ4U$š’ì$X…MÊJ%’ÀñòÞ'㨶Õ˨®îZùôÔ$¿Þ¯æö{nÑPóþ”6ÏÑï)÷¥»wÖºû…ÚÄnd©ï„H±òêyÛ©Sg%²‡QÑ2¡ÊËËËË/‘ëŽw¿Žz@¶ËÛI¨í¶aRV)á›.¥ÐnÃ^]u¯çߢŽ:Àw Z˜8ÂSÒ+Rÿ»v”_Ð|uŠrŸü“Š\²þ"ÊeÔºb<ûÑÜ;æ¼µ½D_}&KËœz¸ù¥‰Ïþ¸iéƒS†¤DF zhcU»óÒ¨y{ÕDsê³Ç¦8hÌí¼ôìä6{âv¾P~¯—³Œ¹Kz{yH[²'ìó~^Õ†‘RÀuꞆSq ðIaù:óu›=’%ÜÐG›4¿ßîÝ¢F{%ºF8QGÎiÃvym‡ÚnÂÞKó Éÿzþô{^ú![žµc­ÉòÂËߦޏ"¯yi©ßOß11}ÇÄ~¦$ñ»0y§$ñ³?=P¨&„èj®ZÿÚíÑMY¡=ǯ)5|2¢ùüöž´®‚¨÷<ÉZ.¼4oûæîZ>=ªí}AJ–üÀêÃÅZBˆ¡âä·OX{ê`cðí>è¹­™ „RŸýÇ⑞ŽßÛâz~ì³}f /ûÛYx¹eÙÎ\!DS|håì¸^ÚP¹Úò–©¸mßég¥v÷­ß08A'¦C–÷Øzþ 'àέÅg_ožðÃîþærƒZYôûÂÞ-—®!ºº‚T=ÞÃÊçÁñóÎÁJBˆ¦èÐÊ™q‰Ï\4•ý/Md±pÍ΋e #!„¨‹þúj^_×6B(iü¬÷wdÖ™!yîÁOom{ lû å÷z9«¹e4lh™6ØíîmôHmòæ:ìÓRõÕ(‹-3û%º8UGÎiÃvyíhÃfÛåÒÿÙí…zBä~xfpÐÀK ­Cã߱ޮï#÷æw~C$΋bùû!L}'ËHÚÃ}6¸ç¯2þÒýç šµMIê~º?òF<7¿1ð‚§¯/'Šm³¶Æwcùg×'ðþÃúú £¤]ŠõO«£®À~ÿjœÚ¬û¦ûO†öùÞYi<µzþMqÿnEq¤©“¬>¡$úÓï ëiã ×T S_ùuËÒ&¦'„E˜þÎ)ødˆÌÁLÿcëÈqØÁ…åï%Š˜üâׯÈMÿf£ÉÒßTùG¾{¥ËFn<ÿœ:¢ÝÓþxÇùR!„( ÿZÿÒø ‡¯ëü£ëˆ……………………………………………………………………åñ¯òçÇÂÂÂÂÂÒŠµ›£|±çœ½×¦ºx$l×gQ°ðÿ´‚öHŸ·è‰ÑÝsÇÅõ2ÿ³½æGîûÚ=r¿uÙÎ\%!DStpå=½:ʱ“gåyó aß`ÙhÝnÙO¬qæÑfs)6ue‡ö>!'æ8Tû¶jP6f³ŠÔoÛš AÊ;yíý¼w³¼ N_]IQmkù¶Ÿã5fÉáre£²dïëC›®”ó¢æï/ÝÿX$?~Q‘;ÜüKs‰áÜ'³Å„„Æö3ýŽžvÈvòܤ“q?*!ú]Ó},ÆEŽ[l¿´´´´´¡÷|[I~}hxZZZZZ¿x³½7›º²×lbžÏ$Û¦Gû·Dö™sÕýlë¸ÉÜß S—ä“öÝ}7ËëtÀœã„Ì6&²É‹³+·ÜìÍ œ½«æüs1<ð"æí+=øx³iòî~v$;¦îH†CmÒª6Xþ‹ðdÁ_Lìÿ„;ç_µíÙíÁO6luÑí{ÀšsENàý Æ¿n£ýîüCMÎ=ÕbgÌÖ0c'n[ÓYÜðçIý÷­¶ »àÌ–tß>éØÃ-ë'reSàE?w‰(6ŽîÎüÙNž@:üëCî¡ÒøëTk6p;3fSWv°eü̉l^Œ6l×Ôß {/- í»ûî–×ăVWÍ/,-»LØ^—ñ\ ‚Ä7³Ê¾îñÈžÒCO´ÐíþàgG²CÚè–dÛ¤5m°üè°¦3ê5U w`¨›W·^vîž5oŸ†”|>Γ@{Œù¬ØTð¿‘ͦ>›¹èýÈW'*ÄT¾÷­‘–þê)YòÜÕ‡Š4„}ùÉoX³í95(iÎg‡K´„ÇMÛDÖÿ‘¾Õß.ú¡ÐØ1Хߌ4îÙu¿•4…1•{Ö3%ß1ØË…r—â ƒ|ŒWÿ*Ðv£¦²?צúÜÚב­>;¹²© ˜%•FYÚÔ~N[a°–gq⌱²ÓË_û$C<|fß¿Á•s5¨W)\ÆÏMw ŒŸy»WI®R¯iyµÇ tE§ -”¶èd…ï°¾Þâà¡#|Ê/pg®~Uøþ«rìûç²€0cc©¡æ÷‡"x]‘lWÝ•ìP›´¦ –ÿÚÑÕ­º\Ï ˆy?^Öï‹NÀôo¯Pðö¸˜°ø›×‰ÿñ‡9æU‚þêçwßÿ“äÁ¾˜(ðòñwsUïMa}«£JÿäöÝÏ»o_8}îÿª†½²é½aæÉ7øî ‡×L,Y2.64jèóg|p`‡ÅÀ‹xpóîEþ;Ÿ½yægÅ­>/ܦî¨'ú«Ë¹á/orªÏû_ºCfžÿTWÃÙm*+|ßÄ0¾<3«ÎœQåž/§‚ñ6âx\J~ÇëîÕ¬~ö»£]¹V`ùWä¼8§seSSõË3¯÷_°÷ÒŽ7œ´ÆÐ1ÏÂØ['z^üfDZ_¾Ïr}WÊ ·äd 2µG¾?/ÿÀ 7J˜0ëv—ëN)-]Þ\Ûò2UÛŸ¸í¡u¹–›þòG|@½y¡üصKß1½ø’ôƒ¹+³»4ô\÷^)\ÏÄOnW$ÛÓF·%;Ô&­iƒå? åéøêÈôû¼áâ°o@ûéi¯ñkJ‰îܯǺS/&Yì©6{u(Y3©é@M6òÛ:R¾²ySEòn>©^;Ê<Šú.+$5_µ+w¿MKˆ|ëÌ`^Ó^‡®eåG‹ýÂ"bF¾“Ô¬œØ«Ù¶£§cÇ>ÂÞË IÝ×ìv=ÂÔ¥íܶ$¼–Cª×˜&ÛØ`´·íu‰KËÇûµYƶ»Äa(ølpkÛn!¢´OËIþ’T¡³¹j£ ×IÛë !ª¿ ·è(QÄ´Å¿BÊþ|krˆÃ»Ìvò ~ü¢lÝÙܦ•Yq[bsÛ³3]Ù¡ý…cùwf{¼ÎÔ lÌæš«Ë&ÏÿË Ø:) ÿŠüª·Nú²ZߺÑçDy‡2çÊ¢Cž,¨,»¸i~r“'k~ü¢œ×l:n{r=ã$u6Ѳ*Ù¾6º+¹‰î¶I–;ÖwHmMéÇÙJ­êÝ+áã$w7‡† û陚?ŸºãÃò”)JÞœ½âb;ßÓŒú×Çžÿ­ÊÚÒŒ È|d \‡…‘ŒíçÍ¿Ôäì<­öì?ÀßbH äij 6ÕeÉâÔr ÍR+ òò‹jt&½¼$¿Ùóy­Î!Ï’¦Æ¤~îV¿8F«ÐBäbᲘ#tA«ÐÚwfëPÜ˯HL|† 1½“ç¼=²ÙWtÌÐWN©;¯b¡‹:¥ó¹25Ö4BâíÊå¾ÏþC#‘ ,MÞ/¯Lˆ ÷ê…>¯l;÷ý]Ý»(Ü.ϼ ·‡f¯ÿ­ØýÕŸ6åùM¹-¶KÛŽêÊš?f'›ýq§=ùWcÕ ±ü÷/Ž Ç.xäñÛÄ{ÖSX†u»¼Â”ÅÚC”>¥ãc$7øîÏÞ »X—¾gz¯A+Ü­›Ýò™©~™Ô¬‹¸I«J­D7Öfž¸X¥ïªd[ÚpNrµI–¶Žgˆ²:wa†Â-(t¼Ä¡Ñχô‚!ƒÄÝ{_—vBMm­¶yPây„º£újµ£®Ú*”Í 1™LŽúM¶…¡ìÄÙz^ï)‰ÖÜoè+3òõîñ½<Ì+[J™êOŠ/”Ûß?q(®¦2/ëØçó_;ëzÛǯê`]WSdv]\Óù`N»„G¹Š2«ì«ÒN® å'Ï6ðSÇÅŠ0ꊢ2¥Éª]ÉÎÅS?uÒíÖE÷FuÝãt‡yî;;JÉ]1¸uÕáD®Žï´¯Ë¹úýSR£§ok´8¨õyqíª—fOOŒ ë5øžOÎÈåũ޽•±•gÊûöµë[zPÓ~Ó0'iûªÛæ™_gº²ƒM?ïݯAk~Þ‡}ÝìçÝ©ò:å¿8ó—’3‹’E Ü'n®Êy§Ôÿ®åÇDpáàSAÂkY„âú‹–l[ÎHv®M²üçàŠ¼æ¥¥~?>}ÇÄôû}˜ÄïÂD©S‡ô´çø5¥¦‚OF4ŸÒÞ“ÖUõžG"ù@Ë…—æÃÂÜ]˧Gµ½›EÉ’X}¸XK1Tœüö kOl ~ Ý=·5³Bê³ÿX<ÒÓñûø\ïÁ}¶Ïláe; /·,Û™«"„hŠ­œ×ÁÂK*W[Þ2µ·í+1pƒçìÖ’ÚïÍ}kG«% [ãYXK1VgüºxJ°egïD®¼€±/|¢TÛd1ãÒ×·ù7g’6ãý_N5˜!DUxtýs£ü=]±‘gÊ}ÒÏJíî;¼[óÁ zð81šíoY‡^xi«+;Øüº_ƒÖºûáß4w÷Ζ·»pîÜZ|öõæ‘v÷7—ÔÊ¢ßö–¶^x±7øqïü±ÜT÷ÇÖìH¶© §$;×&Yþ»\ßGî¬3Û5ÂÔw²Œ¤=LÑgƒ{þ²â?=W,,,׃¿Ëî7å=ópÙÇÙ#Cçn¼Ñyaéq(¾{` {û-bP”•tõþÉ¿>W,,,×v€å:@ôò’|ùÎÅ?#W,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,Ýç_åÏ……………¥kO½ùbÏ9z¯MuñHØ<®Ï¢`ᵿ*Lmò`I!Gïñ½a®ã…½—[¬–ü]ru½ÊËÂÂÂò¡cΑޛ3UŸä4Ê«r_8St@erÀX¥“h/¾ÑÛÛÇ'lòú:“óÒþݹbaaaaq’k:žØ}€Èxä\ő۽RíÕj…ƒöàĤ–ר¡–kzÄÿ;W,,,,,ÎÑaågÔkªîÀP7¯î¡$q³>ØyEA!Úêì½ÝÐ2ÀR²ä¹«i!úò“ß,hkŸÓŽ\›q›l{N JšóÙá-!„´ÙÊ£$ñw¸ëª’¢Éßµdr@Û1Ÿ<éÍm—ë !DsfaH\?Ø+‘…dÒ>W´[ÿÇ¿m6’IÔå§?ŸêÛU§ÝÄfy;Õ•°ÏûyU?LôÔﺊmsc¢f}{U§Íx/­Õ³õËÂÂÂrƒ¡ƒBã~œ˜þÓØ?tù /âá]*Rºuá„”ðèÞ£f>ýÌ$³ïHnð=Û¤xüa1!‘i³Wg™t=ÓÖÀ¾xÐçU+§kö⺌ߦ!W·«,øeÑ]ãïZUdyŽÅ ˜±µÎýÅýƒ¢CãÆ½v¸Qsð¡Ð–áöžøe Ñžúø¾¡qaᩳ6Ô0íÏÀº™+Û’…}–ùö§GLJ…ǘ0sz·ë1VØÎ• ] û¼Ÿßpq×ÑíËÞÞQÇì8tbý[«.ë —÷:\¿,,,,g(O¯ÀWG¦ï˜ØçåWÇ—€.£×ËIÑŠ4kæ©)ïæ“êµ£\šÿ_ÔwY!©ùjh›ßv2ÌØë2~›–ùÖ™Á<€ýÜ%]k‡.Hy7Ÿ-7{4“ [Wk<>7c}'—4l½Õ§)I«@º—+;’%ÃÖÕ’Šo¦‡ ¯«}UÛ¹²¥+aŸ÷‹ˆ~ßœ`®û­û )ýtˆL’þYIùÚ¦;T¿,,,,¬¯5HmMéÇÙJ­êÝ+áã$w7ÇúgAøèAn•;6]´b›šrMF2¶ŸS4ÿA“³ó´Ú³ÿû ŠKȉgl,6†+Ë’Å©ä6»÷N†à§Oª›ý%¸×ƒãéÕ´œá…Œ¡øýÓ]U]¾Ôc'Wö$7{}þ—536æÕeÿ¹ê¹[S<ºp¥–ýô)…#cÎÒ>B‡Bmçʶ®¦aׇ?—£I·võI%c2˜šm£;S¿,,,,×[=.QVç¾^øQbèø¼úTö¯|PMæ^§“«ö*”Íw2‰ÉÔz;“ ûm²ï¤ VÊïæú¢:³Kx¾›w—ݽ[Ç®d}Á†’·-={Þãó^ÝòÈ›§³è¨#×aÈ_35ögaËÌ…èå¥:‡Bíäʦ®F¯Pè 8€Q^Tgì=±°°°Üìœ21õ µ´ˆvhé§Íßs´Á{Ê}éîN2PISRÍ»¨¢ØñýÄ5'N”ìÊu&.LÕ'÷ Òg ö°V“²J ßÄp)€vöêª{=T\9$™Q]ݵòé©I~½_Íí÷Ü¢¡.¦mT”äµ’_"ׇBmçʶ®®]±°°°Ühø®A GxJz…'mHbÈÀmC‚B½‰Áš·WM4§>{lê°ƒÆÜþÈKÏNn½ð2{‡‚”ü0oxLpÄ€Ù«³Mº¿ž´ráÅxê±_oo/·Öµ‹Ý¸6=¹süïØ"'ò‹¦¦F„' š:ÿ£­kg4¯w„½—æ’ÿõüé÷¼ôC¶¯2U]x2ÂbSÖv\›ƒ@Iâgz PMÑÕ\9´þµÛ£[†Ê¥ÿ³Û õ„È/üðÌàÀ~\xéF®ÚJøq©áÔÃÁ̓.Ç{ÄÂ5;/–)Œ„¢.úë«y}]¯ÇmO{åíTWö?Gê—………åïkÛ³GáÞX_¿a”ÔyQ,,,,,,S„©¯üºeéÓ‚"L瀂|2Dv]ß5°°°°°°\Wh÷´‡?Þq¾TE!Ê¿ֿ4>ˆ=caaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaé*ܼ—¸ú=Õ/<ÝTúØÁ¢ È”ÀgÅèÈËŸê+ŸÙ——Õ%GçÉì!É3HჇÊÊHH¦ùn³SBÇzŠÝh0Í…ÒÒϲ«‹M¥Ër=¸†}2ÐýÔñóŸ×w0¬Mq{…øÅª*·ÕÚ…‰–OGÃÖ´pd\ÔÃ!Âj• VM<æLVÎesELº¢®9D Ã£fHUÏI¦HuUÉ’ìÆ åíéÿDrÔ"cã¼u[«’§Ër½0/Ôйz«7.$hJUÝo?'` ®\¸+º…~ÜW輸¿}º×Š#žÖ7ñAÝžœÜ…åŠ<ËéHç߯¶.÷¡ý•Cƒì“:¼8ûùŒº:vüc¹Átü(®¨W±òpVžwÂÊ«q˜šú†sònvP<©ß“‘üìSŒ•‘µ›’]ÃŽÂæÿ®.-û-Üw¶”Ç,?›é²\'Œêêÿ®¾ž)2&£Âé¹õoîµ…âöIˆÐUñÑ¡œKfãû%jroÖåsòˆúƼ¬<÷|–õ ÂrCé0ø½|Õy9@xw‰CÓ4:ýªi¡çsƒ¢S•ùOžª¬h7¿£„ã“‚½+®,Ó…½åÓ£’›ÄÓü˜ à[$š?.©´]I·ç¡%s‡Åyefg‡ÆÞï¢úôX!*îIæ—c_Õ7oÈRшØðYÁ®þ¦²¦ü³ Å'´­¥’¸ú=š8Ä•ÏôºÆ½—?­l]Ù¥8¡1÷…¸ú6ôÊ¥»3ê[òÆïñ@˜{Psí«×ì¿ð“š8’«ÎàJ>êùÓþ‹;õ⻇¥L­Ï¼÷\ƒAøa_Þ‡‡ ®š òŒþ:ÍKÚõÏmpÀCV{rÅ7õŠ˜,s3(½óe•¾K{íÑiy¹.OŒHH)¾ðHv£YsÜ}û\1+PêªoØx.g}­±%áNkß6i¾KàcAÔÁSWw5ZÿFm¿©«,x7ßuyLhÿ²ì£z°°Ü8ºàAÕ ÅÖ4H½²þ@AɆ•²í÷ÎáŠÂ…” "m¾)Ê7(â^©üƒ3õŠðž• [اéþþ㉌Œ¯ëLÄñt¯*RTu ¼+ž[o¨Ù©æ/\_ߨ@ñ‡¦$>%«ûäÄÙóᘤØSu¯¬jÊ7-¹³OøeÁëëJÚC"ñÕ“ÖÙ¥ø#S“žñlÜxáâÞ“«Oøâ8KsÛ¼þ‰I¯¶e\Z\«ã¹‡¼“*¶µ™«Î1êÔ匔ÞMÉúŠ ¡=‚9 ÅB‰«®®Æšº¼¹» øÿ¥;zvâ¦õï³È›²”Ÿ#À¨®xþP~ë‰/%¼©O|”±jíé2·È9ÉÁ‡÷åf:?úÙ(¯Qõk‘ö¦¿ØÜÜ‹Fàˆ<ïðfžhhùº­+ûخߦ½Ç~ñšò/ÏVFGGÜÙ;ôÜþæLÚ«}›mÒœ„p_߯²×kŒÖ‹hïû˜rò‹/…EÞìÍ?Vªg÷>Yn]üˆAþñ±LWÇ],Nò󖔔àRƒe+7¨J¬÷Ô7´í›8B¯yqÒŒKçŽêÖ£’è%/¨” „±>~³“— .½tE¥q ÝkÅ ¤ª^Ë®‹v |YÖøþÁRS/Ÿt§©+âÉüîóc~=’¿«´[³k§¦ù¤ ªvj›×®\ úrµ®†AZ“ÓV²P‘{ðƒ¾ÌŽcÙßÖ™P«4 h åÉü â=sau…|ž^KÄ¡6seFwEÇí#æHîîõ5.nibŽB&Ô)µšæ 6)õ&.ßdmÀ2ž»p~.W8®_üèÚ¬—ò4F€0ƺ6?Äi¯<~¶¦š@`p»u 4„GešœíááSYYÉ‘N áçäT•0NëÊ.¶k &ùÊly=ƒV#‡§·I¶kßv›´§,?L€Z…Þºwb‡¾ß¦<KÕ _,”RP³K?–F7¶=[1^­P4†º„ð)ؽ¼Ì•Möã ñÕ„óŸB¿˜ª©Ë}ôxU5qBr{H\¥ \ù4tLÓí€!ÍÔØŸ[ؽ¼ÔÑ[ë„Ñ›º¢ÒÛ­x(ŒüõÝY'­Ÿû“ʲÜÇ*KSƒü¦„½|åjæË9ÊFû¡”LÌ…A×r¦Æçq-2R2ùF¸<žr8<†òæDÛµo§MÚÕ–Ãó ;ß/€8<ê²°\œüh?©ú]ûk-2©ÄCßXh¹¥o¬_ºï¬ ùë¡B"ãyV¿|²ªÂh¨%ÎInåê"q!ºÓõt;bT”(z^嵐¾¡ŠöéÎ=UÝéð@LÚ³…g ‹"¢’?‰ JÈ»|Âh7”¨u&¸‹=iT˜@ Üç$¸ñ 4w[D£g ûr‘«Ås¹+Ñ[u—rÕ L­BG‡z 1*ÞV›Ê*”á¾#º-]˜»=¡nÁ]¯ZÐÈ+~WûL÷4È\µe—Îé»×ÙÌÙ¬}3Ü^ÁîÚÚ¿šo Ø®}'ó£+Ñ#EÆçÂ`°óÛξ_Å ‘Е¶ëwžXXzŽƒEKx.(‡¢)ZÆç¹2Äh46}\× 'Bp¾ZU¢‡Ÿ·ÿœHauñå#m›8Oøþ°à mùS rZæ–„‘kZ6 i±ÆX­ÖVš£v_2 ñ ›ç£=X^Ÿ«…—ÿ¼8IQÞÅ“z‡Ò½Qè•å_Vø¼˜S|¡pŸ’¸Ë\†J/gæÔL>[zÅäHí;‡IsTÎÜäëæ›ÓXÒA˜#ßo¡ë)“yEíÐÙ ˵¢ã;?¾×âVK ¢%£üd;µ°Ì@“A¯ÌN v£¡Q+_¾´®@ÑîLÛdÔèà¦Ô(ºòÄÉɃžvX.¦ Q+d^\WܦŸú;BôGÎg¬èqOjòÝ¢T«N•–_5&*Û45É7XÀ¡ÁTËkVž.2wpvBÕu…KrÏFF¾Èè/•\}®ÿâÿ0aóY”^Q²$KôRlø >êƒW³^–{}à%Ó2åÊ6mc5ÐPÙ¨`lØí—­>mÐäíïÅ}¹—nTó¦xI¡Áw†x&‰To·½ ÚY¯€'ò˜:ÁK(bô—JŠ>¾\]bοÐ#jMš‡¾^¾7¿dK¥¦Ë¶~YX¬Óñ©-õpˆ°Ze²þ 0g²r¶˜M#“®¨kΪé°ð¨@Õs’)R]U²$»±Â@y{ú?‘µÈØ8/Gmp^2Kb24^¨¡s­-ãÆ…M©ªû­ÃàçLÁ• wåQB·Ðû ¯cAoTº7Š#žÖ7ñAÝžœÜ…劼–‘Ïf¯Bq]æ Œ +]r¨ªLè5¿OÔ{ÃÃê› ÄhërÚ_904øÁ>©Ã‹³ŸÏ¨«cÇ?– £y3®¨W±òpVžwÂÊ«q˜šú†sònvP<©ß“‘üìSŒ•‘µ›’]ÃŽÂæÿ®.-û-Üw¶”Ç NKféYŒêêÿ®¾ž)2&£Â¹Îu£Ò½‘PÜ> ñº*>:”³³­S›½ åá^ÙlÌ™–ÜÙ'|€²àõƒu% í!‘øê-üŸÙ¥ø#S“žñlÜxáâÞ“«Oøâ8 KŒ¯bÒë†m—×êxî!金-BmæªsŒ:u9ã%¤wS²¾"Hh`NC±P⪫«1€¦.oîî¾Äé@ϱ¹iýû,òæ€,åçH0ª+ž?”ßz.K oêe¬Z{ºÌ-$rNrðá}¹™Î~6ÊkTýZ¤½)Ä/67÷¢8"Ï;¼™ƒ'Ä)]9+§êˆâˆ§õ‹Ð”y¶2::âÎÞ¡çö7Á©tíÀI÷õm,{½¦‹žh^¨˜jlP+hǃdéÊè4Ÿ¡2íXþ“tqð#ùÇÇ2]9w±8ÉÏwZRRºkæ‚K –c‰AUºð`½§¾± mßÄzÍ‹“f\:wT‡°• @¯(yñ@¥T Œõñ›•˜¼Tpé¥+ÍŽ‘|M 8TÕkÙuÑn/Ëß?Xjêå“nöWÇ“ùÝçÇüz$Wh·f×NMóITíÔ6¯)\¹0ôåj] ƒµ&§­d¡"÷à}™Dz¿­3 Vi0@ÐÊ“ù?Ä9zæÂê ø<½–ˆ-BmæÊŒîŠŽÛGÌ‘ ÜÝëk \ÜÒÄ…L¨Sj›m§“RoâòMÖ,ã¹ ççr…ãúÅ®Íz)Occ¬kóSAœöÊãgkª ·[JCxT¦ƒ†%;Çfy™¢’òœÈÐÛ¼Š2* tpp@Œ¦òcó½ûº²Ÿ+§êˆæHc²dÈë Ž\F¥¹•ÒëíïzØN×qº'§ªT^ÑåÝZLCg0™(n¿^Áâ‚ËG´œ—îxÑ)(©üÄ¢R½º«é°°´¡«+?Æ_רÛWX±/!eIhÈÐÜŒßÚzfSªTÊv)^z|XbCá¼2=º'%70Æjµ±Z­É—×g’Wdž*º´Gç¸äNàE?}4cy_¾ùÿMWÞüü‡\‘ÓÙ‚ºB"SQR™cDxëòŒrusóÿ–Ái·´FÐúóÍ®gLÊï.UE%Ç|å§=SZù{QÕq……ßm[¡t¯›‹¶vg½Õ‘òör÷3ÖbÝ¡Œ½\Ùn2ÎUÅ×”åãzŒò^táÖ×êÙ ÒétzJÁ£AW©ÖZó•ªú*³¦É”3aL€×Zí”פ©ÝRú|„‡Oee%G:-„Ÿ“SUÂ8­+{¹r²ŽˆI¾2[ÞäÿÏ ÕÈáéÆuDY¶Óµ™Ã V¡·çç¶#ŒšC»x„ÌW-¾¨3Q2WôFÆJ6ˆ±TÍðÅB)ÇöbYX:Ã)ÃÖÆ«ŠÆP—>» W6Ù+DÄW"Ì ýbB¨¦.÷ÑãUìÓwEr{H\¥ \ù4tg¡]”lÈ_35ögaËhMôòRGo­FclîˆJkl·â¡0ò×wg´¾E*Ër«,M ò›ôrHð•«™/ç(í‡R21]Ë™ŸÇå·v}”LÄ…Ag¾÷ .'¤Ï• ˜Ê£ÌÃu Ït._uZ¨Ÿàžõ—sbjhÉRÏõzvÊK §ójTic¥ÕÛ¥Céúå:“ƒqÈ”“uĘ Js.9<†ò6{„­²x<.Ïátíf»›³ÆP¨&RW¯9nÒCç JPBQ¤5Jëþâ)„°‹Ó85øÑ~R ôíý5S2©ÄCßXhùÉë—î;+hþ>¨ÈøEžÕ/Ÿ¬ª0j‰s’ÛC¹ºH\ˆ®@guÿ¥3ÉaT”(zF×–†ú†*Úg¤;÷Tu§Ã1iÏœ-,ŠˆJþ$*(!ïò £ÝP¢Ö™à.ö¤Qa-pŸ“àÆƒÒÜ1ž@ìËE®Ïå®DoYëe ‡rÕ L­BG‡z 1*ÞV›Ê*”á¾#º-]˜»=¡æmáë‚ýòjä¿«}&„{d®Ú²Kçô]ˆÛí\õ\q{{¸kkÿ2ß@11 CÓM“!Zà~¼ŸR8–®½L›t%z¤Èø\º¸ø3])W’dßø‚ŒO @yyûDC½¶ÎÚ”â…HhJÛõûR,,íè8øQ´„Çá‚’q(š¢e|ž+CŒFcÓç#p z"ç«U%zøyûωV_>Òv áIߤ-ê@ANË<™0rMËf!-6«ÕÚJsÔîK$žaó|´ËësµðñòŸ')Ê»xRßÉ×½²üË ŸScŠ/îSw™Ë°@éåÌ܃Z€' XÅ;[Z—­Ò) ˆ‘q¡o¨7gÙf(ST^¯ ñ~$V¹Q!«Ó´˜¦ŠÊºÊè€âü85œAQj…RÌu0W¶Ñª\·úÂ"tªÚ Æw8ÕPl­òx®|Fo0¶ÝÒ6äÖÜüÇ•Õr‚=ÄÚªšÌž¼Ö@‹yVè+ŸÙ——Õ%ç2Éì!É3HჇÊÊHH¦ùn³SBÇzŠÝh0Í…ÒÒϲ«‹-#RœðÀ£¼“ÅŠ˜JÊs_<_Ëúƒ¾þpc0s žÃÁìaü'Á·çϵ7ÞÉOÅoãéÈkt0V¼çbæÍÿýç]È’_§’Þ¨tm#‰Å–Ù(û{šHá"h2LB 7vÌjSÝ‚hŒ}‘Z|÷j,ì§Q˜þ=ü,…ÔcÓ½(×/ ÷½ ã\ÞŠ3‡ÁºAb± £õ"Z82.êáaµÊdý aÎdål1›¿%&]Q×.CÓaáQ3$€ªç$S¤ºªdIvc…òöô"9j‘±q^ŽÚüСáq+b¹û/eÏ«Ö2|Q¬ÔÔuÛó,=£@ÉiT7X ãÀ2RŽáâ9ôˆ—Ú&jÖãóÍàÆbæë×µ¤7*Ý0Bô~ Ãpùl:„ê–‘^`ø$(‹aá›Ë‚¢ÏqºÀü:ÔšßC.â빈˜‚a/#öwlþ{°m±ü³éhÞŒ+êÅU¬<œ•ç°2Äj¦¦¾áœ¼›OÃxR¿'#ùÙ ¦+#k7%3º†…Íÿ]]Zö[¸ïl) 4p´Ðó‘Éå‹çþW¢3ÐèJºšKÏÀT`ï›×5E¢ƒF® ×ÙÀJ÷Ÿ …ÐyÝâRiÛü¤Ø÷ªûáîIÖâ(sPtɺ`}%²Ö 8w.¤Blù¹'§V,ÿd: ~D/_u^PÞFâÐ4 ¦³1Šz>7(:U™ÿä©ÊŠö6þ„ã“‚½+®,Ó…½åÓ£’›ÄÓü˜ à[$š?.©Zöuܼ|ãùëÎh®| ýÒU¨˜‚Á‘Ø·¦Y3çžÅá,óo„èuŽƒ«гØÿ>òk[b0b>¢cÀŒrd}„½ÇZ÷m‡‚˜û0x"\„Íø}:rZÌ÷s>C§Á]Òü‡C÷ãL¹C¹ê :³VáÌý¸¤@úçH¹Œ¯Þƒ)w¾Ž]¢J^2æ¾×âÀ1¢òö¯B…ÅVç„6¸Qur^Gfiû Ò€ýï€[¿N£Ó8‘uå¹zþô€8º¸åZû£áÎÁ/ká‹Iøã) ˜N¹ÈÌ€3ëº!n¸TÛW$‚I‰† ¨ôPU ¢­d¡üx ˆ q4Tù°´±Ï LjqÈ} Ž€),-äÛÉ• ô¨’#ÄBˆ/£&áЄÂXh¾e`„VŽÖüs£hÖ‰‘ð&âÎbë01¢±­%+ÿj|¿J¸JôYi ~¶Ë[÷'*g O?”<ÆÃ· »³Šë =®?—â·}@ mGJß«ØðÔ òTˆ[Šè”d€Çd„°õ#”ªàÀR„~‚~½°+€Vç”6ˆLr7ºn (°g!Ä"ˆ}8 ©O 2 ßÿ}p9r 0t0x»ÁÚHcéúÊ1ä×5˜Õí+¬Ø—²$4dhnÆom=³)U*e»ˆ/=>,±¡p^™žÝ“’›cµÚX­ÖäËë3 É«cC]Ú£ƒ‘OÒpéÌ%:P}5Ô7eB€è×Ö1Ë~úhÆò¾-n_LWÞüü‡z]‚¢Ÿ 4ÁÛ„†¨ÔÀÛ˜=g‹zÁèó1úXÄpuš: -Ž} Ÿ…¸ŠvãâäåYìòÙ uQ .åXÏ”¬\ÕØsÆúä×N®l`Du¢á-…j/òÄèÕ¥QP;v{Å(GƒZåÖ¢þ¬yA 0pzÂ&»íò2•8}n‡ì/(øHˆŠo 78×z Ýlì?@)ÖO±ÿˆû¾„šc ±@Á+ (@µÙ­±U:øÆ‚Î;­Î)màéU^·N㌨ÉhþϬÈz·OEôF\¬ê¨VÔ—ƒëzöÜÅ9OîÆ«ŠÆP—>»»¹²É~\!"¾šaþSèB5u¹¯ª&NHn©‘«”K Ÿ†Ž˜Z¥`2ëÍûœÄX®'"¾cà ùk¦Æþ,lù-ÑËK5*Ï@oîGtÕí¨(üz'ò;¹¾¯ØïŽ#x4R¦`Ò$TnÀOߠůP/ DË '×\‹-B_@…·r)xtreÅU)CñVxaàu;zh‹‰A«/äž[±Û)/Aáо‡ø`\F n­Ggte§Óe[|¤mË#:´‡¦eõßÿ²ÑêœÔ…ž¨V‚ªÃÐM…§Peít“Gg§bù7àÔàGûyH%д÷ŠNɤ}c¡å³cýÒ}gͽ0¿È³úå“UFC-qNr{(W‰ Ñèš>zRS#¯‚˜„C50 ¸â>”é{í`T”\‹ru6”<ÄÆ#ÿd§¿!mGÑx߉™³°¹MÏÒY¨¡H„”‡(w ™Ê<þéëw¸ Q­%EÚãv1WÑxÔD«±£õÇ ¹½T8]åp|F¸.×ÕшÝòê³Qޤ[aŠ€a?Š]ˆë ×#] þã!®En € æ"0Þ77>e·™·uÖêœÊ•r‚ÃÁÙïìUL×€«¯*9ðô‡¾:Ö‡ +-áó\ù<‡¢)ZÆç¹ò¹óÏ®AÏ%ósKðp»8ZX]\|¤íÅ“¾?,iåÐ6#×h+ÔMÿt5BcµZ[©31NJ$žaÏÆù¥¹ ½„Âø °Wã$EyE'ÍÓ[½²|}5IMŒ¾ÓGì'u–5ÔTõ]¥þÆ~¦|:‚Øç‘6®~ðˆá‹ãÙÊ ÃÄ—‘8^úÃ7h€ÆàPhíAh]0ü~DÔÿ!\ß¼qÛp †>„èÑÿÂËÛœŽØÎ•m •ЊÁ/D­ÆB”êàÊE]Çלx2ˆ\Àk7ñbPñ0$&B€Ð±péQS¸@ä A«ërÊ«GÆOÝ„AQ¸ð ,'LŽêÊZºöq>ÝÎÔÀƒ[¤þˆšIãqe5*Í[uÛQÀÃM ×X âË8m¾œl»Õ9•+r3à’«sq³…BP\!r…À||ÀÁø§8‰ˆ»·Ì‚òw\­±"†öDLʱ~,Mt|çÇ÷ZÜjiE´d”?€¬s§–`2è5â€Ù©Án44jÅáË—Ö(ÚÝÉ4µ:¸)5Š® /ÎH6ô´{À°p1Zq óâºâ¦Û.¢ß{6C1³oÊÝ”©¬ºâí£%çnø+wW–açHЖ¡`/ªÌ癌j¤.€‡(@yû^G¥Þ¡Pýü¾ãf`¢e;±y;&®‚§'P ¦<ü¶“îÃÄÈÙ€­—pgŒåÊ6Æj(Í1è  EÎ%ÄzCÙ±§¡Ño9ú9Ïã÷ómB*Öâ°;ÒßÇp@~{÷¨ÂiŒX@ÍjløÉ¼šq ¼Êƒ(|¡W‘YÜ…´“®8›n'P"Œ] †r\|Gµî2Õøýi [¾Ç„ÊؼÒ|ÕÓ^«s*W¥[¡~ýS±«Ã…OÊ7[Øp¹}=”¿‡M{€¨`ðCúóó`¨À•Ïqä+·]@Á:üØzÆá `aaù#½ oA°èFçƒå?½ÞÀ›ïMĈáÁ?0u:égùOÐWæXþAxß…‘i0hÁîý0êqлqôkö‚å†BP{Ü2R5Ê¡qô^™MhH#&Ïb#¶ÿ §˳ük¸ž· Xþz!}¢’ ÂP…Üßpd3Tl—Àòw€ð[Ðw<±}fw옷ƒ—ŒûÞ…1—6áÌñ6^YXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXþH\ý^¾cDHXÛw1”À烉é;,ÿ‰èÕÕ÷Éìáé;†P=#™æ»Ý×?å»ñé;&¦o›úv¼w°ED[øúv’'¦/í’Á –AÜEvcÎÄVÂhôy‹žíÛ±Îe£7) {¦ºv#AaêÒÒÌÑ{|¯Û+¯H×–®ìÃõ÷Æö¬B1È/|0°{R¬ÃóñÄêÝ—k ª?§˜+…’ÄÞñÚ7û²*T !D[ú×ç÷ƶy=*»uÙÎ\%!DStpå=½Ä­¿døºr}CÞ_Þ¸=^Æ>Äc¹Nt´'D GÆE="¬V™¬¿$Ì™¬œ-ÊfSĤ+êš¡0:,§’Þ¤$yÛŽV•þùöìI7?»­ŽT­Ü•eM§+0[å$/¾Jª¿!3ë5ô‘£ÚòχJˆk/]ÛØÒ•5mT~>Ȭ+aïw3µm4©>ý|/³ nð=Û¤xüa1!‘i³Wg™t=ãèTÄeì÷õ$ëÕxÛ¿§\½sQ/ßvoˆYü^/g‘úïGJŽÿŒÍ™[ïŒè¿¬µ| –xßAƒáÀlvôc¹QXü@óÂ=\S½=F†-Hë»cbúÚD×£%“JÃøíÿÊz¿qÓ€×ù4¬ ~ÎH@Ñ\o±(ÜÝ}|lÜ·Ó>ˆ–vØö¤Ã£’‘ÂÃõ@Øçý"¢ß7'˜ë~ë~BJ?"“¤VR¾vhS§-Hy7Ÿ-ïלMɰuµÆãsÍ£ºdغZRñÍôp¡µÚf¨lø—Õ¤ôÓ¡ÍC¼tÄwõÆÖÁOòN.iØz«OSÅ {/+4¶~vre~ü¢lõᙾ^7o/<²þ‚úê[IÒˆ'O]ý4Íòª¿×ËY†Ž:-ö ‹ˆùNS²rb¯ˆˆˆˆˆð`O³÷ǦîžÔþxW0ÄéŸUO=Ô…{V B¶ËË ŸÂظývoIo^1漞(p(®ít¡]YÓ†áØ½æÁ‚â»…÷šøi1såÝQ1a®æ&/Hy7ŸT¯eö%껬Ô|5Ô±y„xàÊrR°´·­OJ’ôÔÞÕ_/÷·øv…©K HÙ'D´×äo2w>Æ$¾q…T¯lå'tÞ¢þy|Ïú³baé@W¿JÆ_×p®ºn_aÉÇÇÏ¿P¨÷ Ú¾ &J•ª ¿YŠ—–ØP¸ª¬GzÝ–ÜÀ«Õš|¹ü쬳´1Q¡ƒÚžñ¤þÏDñö^(ºÐ¥ ¼è§Oé,¦ÑÆœ¥}„Æev}øs‰‘1šÔykWŸT2&ƒÉlL•ã66 ÁOŸT7ÉU¸×ƒãéež,7{}þ—536æÕeÿ¹ê¹[S<Ú¬(l…Šbo¾É«dãW'Ö6–y!c§F(~ÿtW•µZ°—+èËϘ‚ûÆö™_òÝ—ßåÝ<6*¢¯wå©b­ýÈŒº¢ /¿¨FgÒËKòóòòòòò‹kÛ8s$'Ÿ{rc±RK¸®óëw;å5nZ¶㟽=„ È>ùpð‰å_eéœÖ•ó´ÓR~ó—Lôò’üüb¹Þ¤«-ÊÏËËË+(mhnò”kâ°0’±ýœÙ5®&gçiµgÿþŽL)QH¢JÏ—vnqZóÐûßà¿7jü;'-Ü‘1Z…©ÈsäÛïE|ùøº#Gê#ƒV¡µÒMu9y¢ÐH÷ë¢H–ÿ0Nm.¯V(Áá;Ð qe“ý¸Bψ¯&¤ï˜˜öI„€–†~1!}ó@oÊ9Éí!5r•‚âò-ÊFñÆÕÿP×EÛ¶†ü5Sc#[‰µ$ÃQsóŒ^¡h¨ò¢ºv÷×(ºß&»QD½t¾E¶¾`ÃÉžÑ7-Ü®úê–seGßJwmU†P®G˜êŠÌnØ(‘§‡ÐbKÔ#ÌõEuæßÍ[ÂqÇgÊÊ˼?;ñm'^úÊŒ|½{Ÿï}ÜoÓc+³õ Ýâzû¢øB¹Þz:aP³\[œüh?©ú]{÷“2©4´Ý¸e¬_ºïìÜýMÿνQ¬'êÒ—œ}ìlm-qNr{(W‰ Ñè,z]®ì&O:·¤¾¦Ë_”QQV×J~‰\ß_¥©úäžBAú¬Á6 è®îZùôÔ$¿Þ¯æö{nÑPGBMÊJ%’ÀñòÞ'ã(ÊZ¥„ob¸”@» {uÕ½ž]ÌU'èKÏÒI³nw9¹+_quÛŸµ)ßZyªÈ…_syŒZ-ö”\G/[öË«<öÑçyÑ?=ýƨ6,ÛÝÚ€œÑÕ ‚4d, ’¦¤š'J¢ØñýÄ5'N”;²B4%Ù5H°zäGyŒûpíÌ’¦¿}¼ã–ƒâÔÆcLò£ƒwÍÿ‚àMšÛ¶®¶21âz'DŠ•W¯ÈÙ§H,×–ŽƒEKøOÆ¡hŠ–ñy®|®Äü3kÐsIAãüÜ<ÜFÇÆ.ŽVi;Dñ¤ïKZ9$´ÍµÂÈ5Ú uÓ?]ÆX­ÖVꚯ•v_2 ñ {6Î/ÍMè%Æ…½')Ê+:i1«äò…^´±\cúûÌ&µ>|v+u×w?¼:55""cçÙ,ŽA{Ž|ï¬4žZ=ÿ¦8/AÏ4Ž40uÒ‚Õ'”Dúa×sƒ†……å?ížöðÇ;Ηª!DYø×ú—Ʊ¶¤Xº%Š˜üâׯÈM­†­A:â› ƒ"ÿÈw¯L‰±ó0–Žtr·Jâê÷T¿ðtSéc‹ ,,€PŸ£#c,ª¯|f_^V—lq$³‡$Ï …*+#= ™æ»ÍN ë)v£Á4JK?Ë®.¶ˆHqÅc{…Ï tñæ0Õµ«Î×þ}Œ½ü‡ |G…Nlüq]uEë”P˜ÜG$?//jop„™q‹°â³ª.Îä †>Ú¯Éò[YÅêïêëSï7*]¶4Ùn£®5´Dœ2Ä#9F$«,ûbScS…òu–w@ƒâèÅ9E:óT†x‹d Ê[«jáå9aŒß$¹öû­þ_ˆA}ð׺óphTêÍygJþ(X{^š2Ä{ò\—‹?ï½bìKê,ÿz: ~WÔ‹«Xy8+Ï;aeˆÕ8LM}Ã9y7›Oê÷d$?»Ácedí¦dF×°£°ù¿«KË~ ÷-åqæÁæ'ºsŠ J5èLÐm* ’Q`¿ëi¸Tùë¥ëš¤Qk2‚Ñ{ÐÄß:]¸µ€IFN÷ö-ªüö׆ú6>Nˆ*»jWvóÿ(Î×^è#ëëÍá­=ÑPQ¤.³ºNeE©âÐê²q!S§Ô~Y|Vþ÷S9Ë߃ÑËW—T€w§‘84MƒélŒ¢…žÏ ŠNUæ?yª²¢½Wáø¤`ïŠ+Ëtaoùô¨ä&ñ4?&(ø‰æKªVoŒ>KÁLñ.)Ê"â¡þüÒry嵞r}½gßÁÝÿ“6åf/ŸŠªM{IÚ¾1ÆúMë«+̪yž.ƒÇx&†òxFCÑéª?5¶ø©Eûöö=Pæ+¥ÒX©Ø³¹2·Ñ±P€ë.|“WR(¯Ù¶biùgß)5-Z–IÒnòNä7Û¨ª©^»N^Ï8«N¡ÜÓB¯]ß ñôœ=ǽ⇼ߋˆÇÀ©âÊõ{µFÐA“# ®öëµµu]_vð¼\‡Ž÷LàêÊä;®ÉSõL×Yyù!¾sî_\Wp¤ÊœH:õ!?ê·ü_¯4›Hï–®ìÒ¼ÍûåÎÀ¦ò–ÊwþbY^Ú+Ù{Ô`—@Å4j³Uí?£ulßZàñ{ õIO»ñaÒèË2kþاR9Õ6š |Ò|8Ê_~o7òµ‡ã"‰tcJèÛþŠârZf³Ö`Œ¹{ÊN‡„ !ÉúY¥a‡?»tÈÅÖ4H½²þ@AɆ•²mKãpEáBJ‘ Š6åq¯TþÁ™zExÏJ†À-ìÓt €ñDFÆ×u–Œ§/]ýs`ìÒA½:YŠ2ÿ•«V‰õ0—ß{$]}Qí7Ðc¸À¤»¬hH“ÅxÔTT”T6~–¯gNåÖ/4Z7—±7L¬/Ø|ÞÐÔ™p}<§Œ‘Öì+ý&[oäqÝ}yj‹ÎÀv(-s™8Û/¨¢nç·ŠJ='|lÐK—}bÉè{{©ê÷|_V¬¤†M°˜æØÎUçÆ*=ÓW ã‚ ’¸‚æÆð¹Ez™Gchò¹Z¶3ÿ³½”{¿àé1b ¤7?.Ïû£i8SüÍnmK±h7×Éw ôj~=ÎIžà}ÓÕ—hœ?±²Q^}iý…z×ä¾¢“¿«õ@¹Äz„•[ ›ÛVwuåíÊ;v°êË?5F d þ3Æ òw•¬Ë5 ‚=ÆO ¾™*üñ”Þd_“6kÍK¾5d´§ú௅WkˆÀ]ìÓú9U^¾¨o O~²´PcógÑÀ[¼Üò+·å¶ñÀB‰\n[àÆT“¯8÷W]F¹5ÿ,zí™#šÞãÝÃ%ªLÖ'‹]º8øƒüãc™®Ž»Xœäç;-))Ý5sÁ¥ËQÊ *]x°ÞSßXÐv|â½æÅI3.;ªCXJ W”¼x R*ÆúøÍJL^*¸ôÒUËwƘô%jƒV$èíÁ•çë¯Ó¼âóé󥇯}xWW|}Œ M’¹@Ê«W”¡þûÝŠJ# —Îv»#Y,¾ÐÐ4¿§øˆVihP06ÔjÛJ¶J ñŽ4Ôoú©¦T€®Q´¡¢¼úù$ðUÛ6W]U „JB¼-BmæÊ&…®Q(våsÄ‘ÜòLO„ÔßàéBj̻،ޤÑS"ƒ5'¥úÆ]ëòù®®7ßéR¸¹ätÀèŒmæþ®BÕ¶Âß.PÚp~|¥18[‘6ËkÒ_:¥0Ü=ô€úŠàðû •ç*Í ÷îëÊ!Ú–wº/O@iŒàðS†HL%»Ïjô.Uýî-™™îáw¾¢Ô`_“¶jà{ eÎ|[qºœ…¾ª°%Щòr½¤AÃå\ƒ­?OÐç–ÀÞúÚ·)”–~¶r+7ýÀá ¸®>¢˜÷1÷H}6í-°2þ5)khï(o:³'à,ÿrººòc ùu €º}…ûR–„† ÍÍø­ÍxB”*•²]DŠ—–ØP8¯LÏXu¡ÛmÉMŒ±Zm¬Vkòåõ†äÕ±¡ƒŠ.íi:Q§…“û%Ü¢§TÔÈß·œ{ùÉKõ Gú(^ôÓG3–÷m1iºòÞ€äçÏ8ä¡•èÔg®b0\:§ÕØNqüÂx¹Ï|Úâ:D=ODCeCYíÞ ÂqS㇪3/Ô_8ßXm±±e+”Ë ã¨²•V·4/$Š§Ï«,R[ µ—+˜u ÆÕÇC ô2dýÞ(ˆ•…º©½ÅÆb¥j&¤±Á ¡L&†è”†«§±å5û³šï2˜ô„ÐM9íÓÝNy‰"K^8Ü¿_,/÷¬à–ä¢=zÑ|Õ ]9DÛò‚CsšÊ+º¢vŸÎ\½D^ 5øI©R9qH“«Ã5T$hlÌ©±6r8W^®‹@cµÆÀá'O JçÔmÞT×®éšÔºÒ"ÀÅùSŠ‘s‚S‡IO6tF´úåæÎ¡óvôc±ƒS¾CŒW+¡.!| vS\Ùd?®_Mˆ0ÿ)ô‹ ¡šºÜGWU'$·‡ÔÈU Ê%OCÇ{„ÌöÐm8PQh"¨/}û‚ìËÔ°Iç782c5䯙ûs«R¢——:zßž˜=P1)­É˜òJWon´.ÎdÈþ£ ï¸8¾·{Jz@òíñ %•1öCiÚU­Âdþ)%Q­ZhÚUE¨@LQŽçÊ–¦ U:0D*0¨OW4J•ž±Ñ"ý…. ²£79½Î³ŽòuãÉ,Óý\Ü/Ö{¦É¸yWÚN™º©«Z^[P¦¥»]Þ¦FÖi(NÄMCÅõ[~¨«°}"¡Ó])fRCb”ÖÎ)€0„=òc±Sƒíç!•@_ k­E&•xè õ–çnõK÷5{@¡B"ãyV¿|²ªÂh¨%ÎInåê"q!º]SO‰E1Œ5Í] Q©Ôõxó\7eŠž×;1U8).ÂÆüΗ‘¹úü^õùC‚´Ù¡iƒE§lÓïX%L£Þ\ ŽòN¡´%]F­‡Ø‹ÇƒÎ‚=G'rPÓµ\YÇd¬j Râeú’2…^Ÿ—oê›â¢SÔ)Ž 1Q´°g|–÷T-0§’Üúö"ÞaLÖµ¦ q¯ :]i’¢‚µ(÷p!WÓXa1•ë®&‰¢P«K“&Ô”vXÍ9W^£R¯Ø[Je[{ð( ÷g<ü¥½‘—ìOC©S[[nÒb©“³¯ýX ã$EKøOÆ¡hŠ–ñy®|®Äü3kÐsIAãüÜ<ÜFÇÆ.ŽVi;Dñ¤ïKZ9$´ÍcÂÈ5Ú uÓ?]ÆX­ÖVêš!Ý— H<ÞóKsz …ñAa¯ÆIŠòŠN6G¤¡^^ ÙƒÉý]„Aî^÷%ùûèëßèCR}ºæ*%›0Õ3Ò‡çê%Šìã3e¢LjžxðŸ4Ü5"Hà&ãºù½DÐÈMæïÝf¨AŸ“o%ú N–% œu³¤±Ž€Cs›$› yW œïa}dqýïºUR_lyvb;W¶aªL|wº6Wo©ÍÑ¥<Ž\ßqÅKÑ”PÄ évmh´jNlºk ;×ÍWŸ(êY÷6M‹Ä‘Ȭ ÇÊk¬i8SÁI˜èåSßp®Â²Ñ8ª+ké:Iþp#è7º·È]ÆóKð™ÐS~Tnù\ÝMZ­]qÍ‘":ñ¶ÀÑ}¤¢X×$Rºk嵊¡FUfàEDð¬xÐ>I¡BÓ øú ›þy{pÌß8å;Øì ×è0Q`¸Ëà[‚º/RYÛ¶¡¤á2O£&§šÝòdq€Žïüø^‹[-­ˆ–ŒòuîÔÂ2L½F0;5؆F­8|ùÒºE»½w“Q[ ƒ›R£èJtF²Á §Ý†…‹)hÔŠ™×·Þv1(K_=MÏ‹ xmHSEmåûÇ Ï^wÓí!*åë©¡7yM¼Ï“k2Õ—7^>­3D]¡ÕtÓ[ áFcùåª_µ\}´Ê”ì/?áæ?`¼¿Q©¹ô[ñy‰ÿ=ý’æm"Ru´üWÀà1þ‘ÕÊã›KÊâBB˜–Ðf®ìHYiL¹ }¥²Ì(“U;NÐ)7ó< Wn^Y^l9Ó7hü\#ï5ýAèô…gªòzTᔟÏìÇ|ÝϋΘÃì——1äœh:URu²¡ÝÃue5]gŽòRùFŽ÷èÁA÷¥˜FmöÞâýgôm²æ€&­×‚Ép~k¡n°wÚ€d!¡<³:³‹åµŽVs:Ó4½¿GÈ¹Š‚ G®€†‡Ç-÷x´þÉâùNÁ¸ðš0„ÃÓP¬:ðCõ¹"k·=Â~éBíåëçÙ,,,,­PÜ„YÑ󦈯ç^#ËZæ2íɘGoqqã8/¬£tnÌ䈧ž ì%c½á²8Ƶh‡,_¸‚´›}#xŒÁðùa|GÇãò®Ú\‡®¾²°t¢×–ÑQC½Ó"¹úCƒÒdì‰FGñ¹Þa.ƒ& 3žø±ì»çÉâ ì4é¿ÅñKñØ[äÍåQ–©.©9o¼îVYþ£pÝ$}{$D‰¤å¥Ÿorþ¢,4)ü¶h¦âjÃÉÃò<Öd! Ë¿”Nn{J\ýžêžn*}ì`QÅÝaJà³¢õ <@_ù̾¼¬.]äHfIžA œ7î§oëM~A?î0€¦nz˜³b à0È>mz{…i}…mBuëÜe·Ò"Ÿc^^b\_hQë~äÝ¢#¿ýazë;&“}ýÎbAGÛž´pd\ÔÃ!Âj•Éú+@œÉÊÙbö9BLº¢®}×tXxÔ  ê9É©®*Y’ÝXa ¼=ýŸHŽZdlœ—£n²ââæ¹¼·Ë¹ÌìG«ô2Ï€'ã1ç_,Ð:lt’¥Ç0âìFœmÝ+©{çÕÛ™Ÿ·¢= ksM½'˜¸BzÅ×ܨëXЕn`³Ž®!’gp=AünzàAfÿ•ÖSyëeÃé2p}©'_æ~³ çgš.šc ÏÝr Þ}ۦ˜ºçyî7Ÿqkî4þÞä FC˜aø|ýÖ˜[5þ\Ó¬±ü7 øî¦„ “qƒ"R~ÖÖ%ðù`Bÿ'ÜénJxÒ€Çõ_1xÀöaTOJ6 N𾥫È\ž ƒnHv7Ó½ûí™È¾îÿÛyϰ…“ÜÑÚŒ˜Þ´—¿g¨¢…Ôç¿óN œn]ÿtÿxä–åÿ:…ÚüYÄ ÙËkþœ9ÞôÁÃü3wRM­&jåŸ3ÿo \/ú«_øú/8Ѭ-#3¾J¢—¯:_tPi²1ûæÐ´¯™z¾0jàý}ý:î©RÂñIÁÞ¹ßÔZ·îÐ}ÉMâi~lpð-ͪf‚×›E£¾Õ|¡‰€ï6Pz­û£>óªÞ¢ÝÉ­8ÈÛ6…ŠǽzŸ1Ÿ’¶æñã9»6óÉQ¾f+wÉ`ÊrNK©Ç_ã•ä“£|²ŸwúÚ—v4¢Çrvoá“£Íÿm³Á<˜³í‡ÖЋwYt6sÕ)\ê¹ïùÇ'S4ø ìâŽ<ê¥ox+zDôw»š“ËžCñ‘Ù¾r©ÄÉÜ¿¶óÉ_ü¿ž¤ý{jöÒyyG¼Ì'[8)yõÆ­ßͽÅÍ9]9©IØ©_—\Í!îTjÎó¼’ƒmë·i1¬U“‡XhÒvÙŽ Àv»²€zá9š¿Ë8géÔeÿzñ]Tö/¦f˽.qt‡|}®/ýÑ4²& É£)¯¶Ÿ·±†Yð²©4‘³4ìD„¥‰n´Š;:­ÿ¶‰¿Úë¡`iGSz®(\HÉd"—öÂ)ß ˆ{¥ò•YõŠ– [Øš éÛÇ÷]‘è–Ÿ™ýuÙò-£» 7… Óh/¯À‡ƒ¸ xa‚ë`ÛFA/ïG¾Œ}Ÿoù”é5ƒûVBÏÔ‘òÝhÊ à<Ñ’ uû=´f·iW½sºrR“öê¸Ôƒïpy2Ï>gü¬²} ¥&ãïâ¼o°YGvâÚkW¶qIá<èO>\ËXõ£ !õÑf>ù‹_¶†;îªqÚ*Ò`ž:ûFP|¹ hê¶'8ºµ¦ÏOÊ› è0 Qe2oœÃ”»ÚNYþÃtqªJ òeºr8îbq’Ÿï´¤¤t×Ì—Ú8U6¨J¬÷Ô7´½«ÂzÍ‹“f\:wT‡°• @¯(yñ@¥T Œõñ›•˜¼Tpé¥+MŽLç3³Ö&G=;"íE€hë¿»§L’p(çÛÃ%_Vm2,ØN4À•ï?NçÍíO}¹4•MêNAOJÊHqHÉÌl#ÙV¨˜z}­Þb¸ås¢ @5)×#´%”G=õ4-;`ìó!SÅ|”h‘hj;W6(Ê"îi”Ì“=Èw¹Ô„!”´ Ó‘«æIºJÖ)NšRo7…Oåî™@&?nÊ2 Õm~žDfÎ6n¨„dü,º_Ź`?Wv°Y^]>óáeÎÒ™ôóç˜j‚0ú™x²ú]¢rZWNiÒvý(PCjŒÉ¯0Å ‚ÕÒ6´­&y©Á}±ù>Ž:²×v»²Güpʵ‚ÙÞÙ «#o>fX)CT=ÿîùÏLC3Ò€PhI#¯tÎkÓĽD(aÇŽ!ûvîãtŠˆ)ot®†XþtuÄòëÎU×í+,ùøøù õ>!!C…íVQD©R´ó7KñÒãà W•陞•ÜÀ«Õš|¹ü쬳´1Q¡ƒæ ƒróé³·þyòž='nÞ{ycíÎaTFǼ=ó¢Ÿ>¥#­s–ö:N0?W1u)³: ÓÚ-rÜ©±þ¾‹§nÚ#Ú˻מA­“‘ckŒ_ÖÓ·ð³?ä>7‚òh»¿d#TJßäF6n'VmUóüè©ø}3Se­ìæÊåW‰É—Š¥ã«L_þI‚†ÓQ”wSl×?)ÀhIA))ª‡É@JÊH^)É+#µmo\œüŸicÓ"†R.¯ìÒÚ)¯‰lZÏ s»/ ¼“Î4}UغrF“¶ë· Bȳ+˜b#`$ËîÖ§þ@,uÙN“qzÎâÚnWv A¡š”vvdž ¶’d_%;~1M{Ì”ÇY1¢ùUÛð)‘+ýö|êËåL Rw@O´Ö²QWDT¤ÌébùWàÔ§j¼Z¡h u áSÐØJ¸²É~\!"¾šaþSèB5u¹¯ª&NHn©‘«”K Ÿ†®õ0™ŒMîØd.î!Ðltì#5䯙ûsë<’èå¥ãÕ7BOÀŒJÒÎ\SÏýÛBý¤#Ä-g¸G¿¤=ïΫïòÞ¼l¹ÀtTe?”ëByEJs:xZÅr]àRÔ²íÌ£¼…]È• Ôå¤Ú…5 'Éé£Léô´T˜ HC]ÝTÖ_ƒ×öÊ[uŒÙ¨à>5™Z·™z~4õÇëLë 'tåŒ&m×o3&Ra¾ÖO´kzí4IueÑY\;íÊM'ýŽ|éújæd=gDx€¨Ì#z5c>§ßã“EMÅÅP¨"åVïrS ûʉ@·Îü,"ûyH%ÐèÚ5'J&•†òÛ~SÆú¥ûÎÎÝßôïÜÅz¢.}éÀÙÇÎÖÖç$·‡ru‘¸]ÎZ_I ‡GºñªŽ9:¦ey­ä—Èõ=ññ˜ädOÒÇÑ6 Ãàê æég ~³M¹qœE)…š¡•äݤGjÊ|Îx‹[&5” @ 1ì~ν®]ÌU'è«I!MÍ…“'‰¢„ù³zx*/C¥Èxú*±IDATë°£´’\Ç{¸öË«f>ú…DßÌ™>•3FÍ,;ÙÚA;£+g4i»~o¶Û•JŠ/+uáºÓ)n(Èk~‰¡¸Ì#Ô£ÉÌüïˆàzSsãpa±êØÈ;œ«É¥ýTXþ tln-áq¸ dЦhŸçÊ£ÑØ´R¸=‚óÕª=ü¼ýçD «‹/i;Dñ¤ï Ò–?u  §eÒI¹¦¥¤ÅBcµZ[iŽÚ}É€Ä3lžö`y}®>^þóâ$EyOš·Û(žljˆ°°FYÉúFD<â¦Ùt´ªüFOÿôäÃO˜‡ÞæþP`|îObð FŽ¡û^4=°›˜ð¨g_çx`¶e’‚z„$PÞ {å-z°ªÎgþh ï}šó×:6‘ó|² J(ÄèK™ŸË9Ï-à>Æa\Fpž!”§ƒ¹² Ñs áNžÏ´dË9<:–ÚS`%"Wo7ht¨Ó´ù{u6©ö _šJ=u²0*EÃ|{=èl‰'·LFÔ©À8\ÞK¿2§îá¬{Ù_OZfØa]YI× Mڮߞ¢³:ê ;íÊ—ö3“é þ¦óE¤ô‡ÏR9»˜Ý9 ~Ô“Ïrzç›n^€šj˜—~$‡o¡'öa*Ê©ûžåV0“#V6P9Ô¸›(íÓÇJÄò¯§ÃàGñ½·ZZ-å ëÜ©…e˜ z8`vj° Zqøò¥uŠvÖRLFmnJ¢+ÛTÎH6ô´{À°p1Zq óâºb•Eç„„ÍårÀTËkV-ÜQÿwØú(ßgü&wÕÃܳBß@Nc>Ê6÷_&r2/Mç<FÉhh*Éï_ÉjуÍÐFæÙWMopÖ¼âóÌ}šüßæ= >  'o¿lJx—óÉbúânÓäÇ™_Òƒ4­²­\ÙFÓ•@=9­€³»íXêT¥•FÜÃ+¹Š]ÆÀEŒ¥¥u¦ñÖO¹kâ]y EÌÿÞcz¶–ú>ëxÈ5EÞkÊ3Ény̲ãœidùÒîøÒA]YM·ûš´]¿=DguÔyží´+ÛÈÏš¾«ã=sýùb¦®])¦9ϽÎùThÈ?ƒV1Ç[ŠJpäSã­FÎûoñ^¡ä Ë †ãM>ÄßÐïFçƒåßE7ÚUÐ8®ò(ÿ§É”  ‘…çK¯ßÎW¼O±Æ-XXþ›£9¿¾Ëy`•àOEÆÓï¬â“Ÿ8CÄÎ fùOÓíŠÆÈù<ÃQþ©ç97…¡§ÞáJ½©IÓ¹'öòõë8ÃØ{ž,,ÿYhõðÓÜóÛšoçÿõ:g¼ÏÎË?ŸžiW"s¾^Å“áÿ9¤ëÑ;"¢¿ÙÁWlå}w?q-V”,,,,,,,,,,,,,,,,,,,,,,,,,,,,,7ŠëàÛ€…ÅÌm@0ð? £õ) ThïDU¼ €7Ì„¶!xh2€R,6Mç7*݉À8@,5·?`à°h1ÑBO½ÚJÈ–&€¼4¿Ù7º\,?:ü$®~Oõ O7•>v°¨ÀâÑ)%ðYÑú ¯|f_^V—ŒKp$³‡$Ï …*+#×\2žÈcvRè/¡ˆÑ_*)úøruIZÃ`q  iÀ‰¡O˹ÀWmÿ.Ê ¨K¨…Tà¬ù¿U@€E¿yM¹Qéþ£qÖ·ªÍÕÍηÞª~@“!8 h+'H €(<?s¹ý\°üwèhÞŒŽŒ‹z8DX­2Áê‹PœÉÊÙ¢l‰IWÔ5ƒÃtXxÔ  ºN’)®Ëœ±t¥KU• ½æ÷‰zcxøB½’µôp}Qï@¦ó²ã"à H€3@wüçþÓÒýç"~Ò|ààóD‡6“€ø ܼÙ6úý@‰ù¿Ìû €?0 x¸ˆ†²³–V:š7ãŠzq+gåy'¬ ±‡©©o8'黎}žÔïÉH~vƒ)ÆÊÈz-$S~Á“D_/>¦&PÕQ?2úJÃÏêk8úMÆ€ÉÀY`;00ŸZìøq€ÉÀ` Øä´•LBpø P8ʦC1@uÀk{†40È Ð/Z˜Æ²+ëš^ð6 <|œž¤À» ¼ažƒwÅÇiøÀ­@oà°ý45€Úæ­–—<ïfFð%À24›íêLWޤk›ÎêW ¼TKÌ;{o ðFÛ=ádàÀ (öÚzL°zíÚ¤m^ÒcÀMmÇ'#ðªÅÿžFZ³Æ¿(°&VüviÀëÀ3Ý­–ÿT@Dʯ#BÂÚ64JàóÁ„þO{rmxƒ …ž/ŒøC_¿Ž{ª”pJzÚw)©½úl@]ÉÜýîêïK ¼ƒz­êùÑ„ôåAükzÜù>@,þí7ÿÇ8ó\€#m3Ì"zÀ´ êp¨+p¨mh= 5‡ŠímC àêX®:ƒœT€ ø À:@ä4 ê-dz·,øX,æ£yßA(k!á­®Ô…¨”@G6Êû@€,~ü@€çÖ•tmc£~=\šžl7)¶˜@›snùÏϱÐk×&mãh¬ø¸Àž–{¨h‹â° xÒù†HÀh- ËòŸ§.(îè´þÛ&ünh¯‡‚¥²ÍÃ… )™LäÒ^8åq¯T¾2«^qÝ$Ó¼P1Õ¨T+hǃdCfå-À‡æ+ð$¹bm„RÀ‡Àà($u8'{˜\†q@UÛPÛ¹ê p^ÀpÀÀ.  "€ ¶¥h!xÞÜÏÞ<–éÊḋÅI~¾Ó’’Ò]3\j°ð) Þ|žÓ^ l—·ØL&ëÑ@°(wZWv±]û6 Í Ó‡€€bàwÇB¯]›´ËDÀO„j€¾€ˆµÀTÀ0ÀC€àôæï€qZ¶·c€ïœ® –7Ö·=ÛÂMJè»cbÒD‘ãÅÒ§ÿ–4__ ÑaÛóZI¦E3†§ÿìâåñYz@ pdNÿ:NâÐM^ôÓ§t¤cÎÒ>ޏ¨nÚöL¦¸ óFx‡­§¦ÁæèîÀ‹¿¯¶Ø™´: À_æýŸ¦m±zó¶g2@€Lót^Zl{ÚÍ• Æø Àç~0Ôâ7| ËÚ¶gO˜ÓáïMÛž-;{My6¶Uˆm:Û~´[ÞaÎ"à0@€þÇ…Ûž6ê×ö¶§(nM¬íÐk×&mC™÷Z‡;ðãÀ«®c;läZ2 À®.ÖË¿—.®üÚb¼Z¡h u áS°ë+›ìÇ"â« æ?…~1!TS—ûèñªjrÍ$3†B5‘ºzÍq“:WP€Š"¨Q pCþš©±? [¦D//uüÍV˵±íß›¶"ë€Pk—^ÈI@ ð0xðn6ß³°Ú´¨5_aˆ\-¶‰šBuæÐ@  +¹²AÓÕóÙ€øx˜`ñwÇél²cj{e£G°[ÞãÀU ¸ \Îõ„®ìb£~Û)!pµXk2æÕ°ßA¬íÐk×&mCÌ 1<Ý(÷Nú­2@H«ÓS±Y ‹mYùÑáѽwLL/l×eQ2©4´Ý…Šv ýÄMÿD’ún’"ú 8ôµ•Ly%l›˜¾.^&Ê;8qÛÄ”[Å×v׳iå—d^ùo»òã§bÞ„à ?6:uûȰ$!ϕϕ˜(kÐsIAãüÜ<ÜFÇÆ}71}]’[»›)ʃ¥ÎöȉÉ»v\Ü:àÃaM¶Ì–¥…omÚµãüfÿð´ýHåû_€”žrèä3 _ìܹôè&“'å¿2Š{6ï~¼;¬™e¼œÛ2ìù:å@G믪¾ì–m«Ê Ýo7µä¹¾ éGéMð††¿@À·±ùà§ëž²üGJ+qœ˜]ðéŒqk2Œi£Þ™1áù–°Í»rIZÖSSÆWÏœ¸½¼ðæd}ø -ë-KÇ4}bõ̉ÕÓǽRìH“ú rajÖ_ÊÇWÏœú=—ª wõ”±friOèÿeõýÓª÷⯚<ᥠ½Œ46¯¤ú¤ÜY:LËN(¹=ä]gûõ´ÃÙ½9Êt,î;$ylFÎóS'TÏ,}¾À‘1hžÉ{+¯<³x\uyæø°™œœ¿eZþ}Ÿi‡N+{Rþöóæó‹Šþ5ýèÔ•tæo}8}bõÌ Ÿ”ºÔqªŠvÚ¾T¶\]”dhÙsÌ‘© #çzcû÷uµGÞ¡v[â©ûÅC>?èL‰?Ëð?Ó¥”¦XS"Ó|wîlipdÜ’¬\h‚ã“cèE’~ÞŒiëÍ\{Jé•yvGÔCH§·™%‡Ã’p´p)3·x©½uue[û0K$£%õ'‰ÝÏ:¥ÓGe¯Ê’^iô¥&˪ʩ£ží¨Û¿wî¦]W5IKKò¾eê)²4aTÞÏ’ükvìš½±jAÅþ5N_˜±§Ðì´Ü—K’¤æýçl©úê¶EŽú)IÙ/”¦e8.زó´­uë#μÖÖªwe·’e3˜$ý´D#zÛ‹Œl˜¤÷oõ®oªñM6-ÍOp5Tÿ¼ÉÝ 5õ_Í*üV¢þÙF_@²êe”@C·÷€WQ¼Þªˆï˜š¡:ë …÷Á=Wísu:O“¢ôµ†l¾¼(Ù~hß×kÚ[ÙÓPÆ ÕÖJ¥¾ËŸ˜h´éôs ®¿¹Ìs’VŸ)7ؽ÷pJÅ帤€+Öã´Ó¹ÿk›ä¼Œ‚¿¤w^¾½¥:(¾ˆA;Ïá»þóºõ^9pjvá ®#ïêÍòzÝmìL»%Ǿ²½ý-Éß³ùž®v»â­«¸´:Ü0žä­[Xå<€1'pä„yíP£%å‡IÊóõi/Öì—XüƒQ–u»]®þIÖPº$Åæð´½å‰ÕÀ’á좬I´úQ~ËL:™`À¥œ”y®å»‡|V‹‚,Ç8ÝVñÔìÑ$Œ×µ5Š•/‚ø¨?ÿ oÏ¡ÐaȇÞÞÛðöÄÉ+ òOÙýÅ«ç­+G%” ³&Nrî]Vï Æœoäx0”ÜøÑ÷O5ªÿªî›~Â-»û•¸ÃÙò†W *¸=­OwƒV%¨.¯Õé-³MdgWd‰_kÒé=à‚›êÓÚÝv¤"´BÍfÇ)z߆FwÌã¸õFû|SðêΖX¡}i¥ÒØå ¦[Šmº1^ç­­º…i¶ÂvsНë@?¬ÍÁ ¿Î#É~%¨<Þ˜ëœ>¯mØpx"ì 2(–¯>Ê«x7èºeLÚBSÇZTž•œÝÙøœÚ㨫ø´ U7î{jÚ(€÷÷Ÿo_£(á™öê°Zsé~Ë¥ÖoÐó~Wð ›%]ríUú%¹w¤«owCŒ¶“ÒS²~šà^¹ÅÙ Ä8°Ý"Éf½my¾ñÙõuŠTn cÙN•¶n¯K6æë%⻟ .â:ÌÆ¿«¡½« !ß(áî«'êgeéÍÿqa±z©àñ…îC»¿ÿIc“2l’ˆoÏš³Ç½lîyÒ*ÞÖýž~¦U| tðûÚb(¢¼S¹ã»m±Ÿ->óÖ-&&]’•ríØ”v5}»¢qc ïPÞ˜H ^5.I².Q:b×Òë ‰ê{¾‹JºÔ­4p{º[ ÖY):w{óÖ6}CnâWÜ­ÔKevù‚CóÑV«¼-mÍ…—§_8hº*U~wwhTˆ·®âÔ @ 4©O%z|Òí#çcLºGbÝoò‰™ ‰2¿(Ÿð õÒmS&Üpݺ¥æY¯Òìòùôæ³ò³ËZêîv+ mÓãén꥽%8nö†¸?9+ÅnÃ[s´¥CrØm)Þ®½á_ üm÷¾½Iýn!åžðÓÔ¦Ÿü»±ÁïkQ†Sò@ñ·×× ÁwÄ€ßý¡Gº0Í’ÔÖÙÖk¬à^ç¡ÎCØÒ_*K¿6¡å²ˆ]S±CƒAÖqF ‚¤Ÿ—Ÿ}šÌÔñ/ðw¡k’¥®€‚nznö¹zvL«Øø¼îý¤|#%ðï¾ÎîŽ÷ýi¥ö×ûúûª "Éúø½ùf+\Oôž—™ö5Å<;è¼ÈydºO]ūձÒárÕ‘<ϪûG{@dÓiv¹µÍï+"€rÀ Ñœ);=4Þ«Ú9G>ÜÖ´¿Œ³½X±w'ØâS€Î.ç&eÔÅŽ–óötwƒÎä¸ÀFe­+–qBJµ-Ï¿˜ö â%Úx$É6£!Ñhpè$Y’FC¢QoS£™so.Ë]•41%iÞ¸q+JÌMûö}9Dì£~ujÙêÙ[”`«»»Áúyš}Šô7¹ºz/Â:ÉÚ%)‚ž'jÛ¥´Ü‡rLƇcIaÞ}©ê¢>Ùt娼[2'YYFc©Í”J`¯O­ ÍP·Ëù®_wNaÆ·R“oW¼:Ù_Ĥ“Böy:^÷Hs ².IMZVRüû$ß'þ~k¥‰ôUøå½çMw çµö`†IÚëDOt:]ªA—5ã<är2$,˰˜Œ“’ÎsèwW¦A§K1è“õÒ‘¶ï»¼ÊÎÆ–­†¤UyæÚƒ-ŸG¼{ô·®bäO߈¯ûЯۤsÇd_œ`Ì6YÎ)̽Ìàúm½Û·dVµº\&Çi±–ü¸}¾Z7ôÛç ø¥Õë«õø»€€·}ÕAˇ)Ïê¸vLÖÔ@Ûª&¯?Z¤?%Õìéh˜ë ÑûüŒi+ŽxZ±¬œ› Tnþly½O€Ïë¶æ,™’—$ãvµ°}Û“5í‘oaw‡¤wû@ŒC'Y»D#†Òزÿ|9óîÜÜ¿çÊ>¿wK[Û]ê %ðyG`YVÎw,z›D·×õ÷=µ÷wª¥Ö ¸î©jΓ¶²D9ÐѺ|Û¡Œ’1ß³ê ¡/FÁîßV[’qg‰cGKÓåÛ]gM²M *J´Ò&èû¾Ž/@°¢ÅåI3l±üAÊÏ)úW-53«ºÂ»îŽÆ«kõ+óŠÞ.¤£»óÏÕƒÚ>Ò¤¢1Ÿ«aÎÖ–ZÕ°×gyžöß·e=œä^ÓäÜ›ßÏºŠ™o}#ßKU{ Ù×—–Ü%+Í]Î_lkøÓ mEt¶7ÿÍWtEŽmÝîNXƒÿ©Ýó}%ç¶±c®‘•†ŽÖåÛ¾cèÃáHûÝ¿¾¢«u`ò 1é¹¥¿Iéy°àË€”•–ÿÅÌÒÇÒÆø…E¡7&>8uâÖq‰Yƒ¶ÅSp\#Ü}_˜lé9¬Å«`·8®(Ê9[rÞQ×Q/¾¡â¦ÓÕ¹IN¸© }®1X×ímðp­Ml$«Ñ<;=ã±™'{š/ÝÙ²C,w â%êøBÖ[.ÌÍøNеÔ(ðmlm}¸¶ù]á,Q0hÈùÉ)×å$Ïwè·ìˆvl=pt¶û§œt¿ÙØüÀŽºû@ @ @ Á—±àE0|ŒKá·p *H†ðÇ:ãøR˜«`ϳÓÃ!äÔ;rÄ—Í2RùöplõÜgÚ¯8Já1¨`:\Ç wASXîgÁÉÐ/À¶°˜ÁXøÞ?rسnŸ7kÜüÂÈ`’)ãÁE³6„ÿæ—t¿„ζä´YNÍÉ‘†E²Î2»dÌÊÓNzaѬ ‹f<5«xÞˆûw9Nyx(VÐhPàÓX>‡ž¾2ðìÌPŠú›7\Å©|{8¶zî3íÖ† 7„ éé —…]ìù•„eýjdÐ¥a2ÿ¤^¬†YƒW^Áÿ Ѿ=eóéãÇ\•onê ÄÞ¨7Vî|¡ãð’c%ààêc¹°h̶X¯žC#Y6X'™=oUT>ÒéÚ|ñä¢Ë»·X/¶¶ ;‚ ®ìº¡ôð|g‹9RùöO=z JmüVp<»#CÿëÔ¿P§þ}%,„ípL„µð;xöp)Ü 7ÃRø¾Ÿ ^©ÿýD»7Ó[Jõí«?¨¬NŸ¸:?fš`s›ssë1î·1سnmÜá Œ1²‰ä@wËc[U'¹îƒkk³N-²¦ÊÔ¡À\¸Þ‚°Á¯át8~ aÑÊà°Ã[ð‘ñ-p.œ ì×#EÚ¡@9|ÒA†<»ÂBÇÃù­¾þ?[û§Uo|æÃJh…P ÁtX¿„z¸f°ÿ˜P$˜ ‹¡þýtpŠæÖŒ³¼gÀ¹ð<¯FÓÁ î‚æ¾êª?ùj“ ߆8ŸÂ;:GË +À ÂyPø­Ú‚ñÔsÒö¦UˆÞz]œµQ+Á 'Ãg±"lF]4Áµ\[ tä‹·P .ƒðKX“ +Ž&|IrŠ'¿Óì¹pÚ©zK6§Þ:wæºi™1ÜIæ¯Ïš±vrÊ”Ò×G›=‡FòQ"Ÿ<ó¹©)‰Cû±34,yU»ÊkêÏõ¨ wDdîû뀭‘¡o† וàö(CМ°ÐD….îŸV\ |fƒ-`‡• @kÃd~;2­î„ßÍp/¬„»¡ç´îÙóã0 ÛÀ2æø}/7òNê ç”‰q ÀV0ô»®zË·OfCW¤ð¥jPtC\±Z0žzÖHÛ§VÚ½.žÚÕ·Š«c…^¦Zq„ à Ȝà€8m ÀQB jïºhà-%øßåÞÂ%ý¼ÓÖ/š¹ö”Ò+ó쎨g£No)2K‡%Êc¤”™[¼ÔÞºº²­}˜%«Æ—Œû®µí±ŠVçpØ< ð$gÂ«àƒ ê£s&ÜU0 ¦B#ܨ¾œSal… P‹am˜XíÐùp7¸áB(„×"U: .‡"U½´µÒ €\8€åС¹ 2àžXiÍð3¸€T¸nÛÃÊ!fÀ[ðuØ à„Áh òVÂ'0 NU#_À*ðÅWW}’¯€n‡"8 î†úÈ82XàçðXäõxêY#mŸZi÷ºxÈ‚3À í=Î4¸þ °0LaàxáçWeïòÁÝj ˆÕÇ<ÏOñµ>ôqE¢N—lµ–ee..+›•XqÝ6g¸ÿ}_çþåïµ¥z»j"íŠ:sÚ²ñö/¶mþÈCá0JV‘ ‹ÆÝUxú㪷ú< wp¨‚[a)xàZøôêäà:êà\pAdÀdõcFhÀ(ƒ¥ð8¼)V#T†p9<D™o`¹úQ§92T[+ jsÕ+‹¡jU³X'töbSrBÁ[°Î ad´w`x`>\54åõÃ}ðüÞ€$X NXw]õÉ"H†×àB ü'V´káµA{ˆ§ž5ÒjkÕg¯‹‡ñ ÁfµÛÅ8¬PK¡^‚ا>Úk ­ÓàÖgypP]=x(ð`¿ÓjäÛ'÷ƒ¢®Ñ„ÌžÍ`@Šõ4?¶zÖN«¡•v¯‹³6.žêGL£Ú(—„•t/ì€pÀœÞËn‡v@âÕüï×Iîþ] í] ùF‰>çRzÇYYz3Å\Øc*x|aûÐîïÒu’ôàJ–’2ŠV”ê×Zñl[ /q‘øö¬9{ÜËæž»Eñ¶îï÷Ùä=Ç¿¹#—Õ©sàÝX ƒ°‡Ëa|Þƒ1êbÐ5,ô¹°@y˜XYýT 5D®ðîS+ º¡Nà È‚)ü{€r4ôX}–·~wÀµ°€G£®ú$4m*ì«6B=J®=jZi÷º8 -“±÷#¦ª`²:€'„ÖìêržM½¤N&pÇ wôgæ'•”oXTv¦ù¨OÉa·#/Jr²Åœe ý,Ó˦þ}Nþd›9Ó¤“‡X²dH¾yþŒU¦¸úšù­Pg~ëÁ6ó®Sª˜ÐÁ9P¦&?f«¯ózø 8¹¡&Ø œ xZ‘ÌU#oRw;auÔr m­´Y¯J+€ŸªŸGcF’ Ԫó#jÁKÏÖ®Ášùõ§¼… [U¤HZŽu®3p«/@:d«‡f~ ‘‹;ŽâØêY;­†VÚ½.ÎÚ(%ìÆ9ŠoÂõïIê" PW‘àPà#ÐA ˆ5 1øBý$/8>‘d›Ñh4Ž+™ò÷Ó Ë̆D£¾gS¸)1÷æ²ÜYIS’æ¿vѬ'Ë’ŽZ™b°çþnѬ s cmfÃ89t’-©cŸ_4eIº}L¢íð/Á’8´¶ûüìP©še^S­F=ßêCÏ÷ýð¼§>t²ûz§úèéYkªÀ7ÔÐï«Wºc­ÔÖJ›;ÕýÂ&˜¦J>jHèÁº^„ó"ƒŒ°E]Nù&ô¬Áï_ð"Üv½ÏòÊaƒú‚H™ý©«ÞòÕFV*°öÅZíÙŸÁo õ¬V[«;5{]<µaU­É±BCöÕ¨P3})Ìœ5< À»ªûõ^Œ]?í·V‚/ÑûüŒi+æV? YVÎÍ*7¶¼Þ§@Àçu[s–LÉK’q»Ú?ؾíÉšöð5)@Àß]ã!©ÃÝ>ÂÐI–uz– ¦•]päškÍ;Ÿ¿äže/1é„Sà7päC%ü>VC×Ã3ø–‡¹›Ò½ŠáðÁSP ÷Á,x€50®Ü caIØ~m­´ÙÀàíÐ Æ0/Sá”C9T„m¡¼°þsABÅ`×yÈÆ›¶ ±ÏòáWpìƒ÷Ò‚Úùj„eP×A)xàÃH¿\ý$žzŽN«­•v¯‹§6\ð0ü†ùªeµ‡— ¦A&TÃjx8̼ N†GàTpÃãpS,+q9\Þ¨OÔàK‚î€\õß$¨5?þ«HPj­ƒ„Á>_ÝÿwÓHS  ÕZõ¼ªÞóÏ€.nÉÁ2Z}QóÂsP02¿ÛUcé#â.¾ÄH°ÞPýtÔÀíÐÁÈc‡;`;ÉËy4¼ ‹Åé6@ @ @ @ à¿ÿ`‹Ž-ùœ%tEXtdate:create2018-01-14T15:45:43+01:00œçò%tEXtdate:modify2018-01-14T15:45:43+01:00íÜ_NIEND®B`‚coloredlogs-15.0.1/docs/images/defaults.png0000644000175000017500000022023313622012676021113 0ustar peterpeter00000000000000‰PNG  IHDR¾Åü¹ÉgAMA± üa cHRMz&€„ú€èu0ê`:˜pœºQ<bKGDÿÿÿ ½§“ oFFs8ÒdtIMEâ.Òw;6 vpAgâHD’ ~€IDATxÚìw|ÕÚÇ3Û7[²I6›Þ+I B@‚¢ˆÅŽ/ ˆ±!^õ½ê{í×r­W/ê,ØA:z(!½·M²ÙÞwgæý#Òg7ÙPÔù~øƒì™ç9Ï)sæ™3Ï9àààààààààààààààààààààààààààààààààààààààààààààààààààààààøÝ¡ŒÉY3N!9Ûfppppppppppœƒü&”†/™4~õ8…:&gýeþ/æŸv;Ä㞯c|ìý“† ^ãíÿb½÷øC©‚sʪ3U^zƒ<Ù­“3f£ý ›¡½úχvX)ú´Ûá<þÔxuddÒåkõÔÙ®“sÝ*Ž³Â€ùdT5IâÝS¬=, ½Uæ¬ê0;Έ!”Ý ³ÃnpPÌÙ®“sÞ*޳Á€Yg¯ÛÑNó C#ˆ)$B²þëçJ3Ã0Œ³£|ëkWÅœrÏ ùØ¥ïîjp0 ãn=ðñŠUà!첊ٛîŸçÇå-ygw““a¦O2æ–W7WY†qÔn~îò˜¾o ÂøyÿØTjd†q^™ÀFiý”¨—f¦¿Udèù÷}²¿ÙÉ0 ÃØ[½7_3Œœƒµ¼CÖ•xÂK5íŸ]>õÁ´.í¦¥i ?©r9O¼0Y6íËÁÁÁÁÁÁÁñ›„ŒKÌþßÜ)_^ZðÙ°— RîÜleš7®œ“Ÿœ>þâ›zx^¬Ï÷âÇÿé[3Ó¸îžé ©“½[F¹~}0CØG^:õ½vÏ QÅþd³79˜ªMEmu_ÿí¦Ù7½ÝÐ;~—sÃF½§ü?‹§¦'f_ö÷Ý6ÇÎ;O9ϤzîMŒóàë·f'%[¸NG÷ý¡UìšÅ^¬g ß>tɘ„¸ä1“æÜ¼`Bè™ð4Ù­b©+ñ„—jMÇ7ïýöÅg¿ÓÓußíÚ¿öé·KÝõ/Ÿ'¸}98888888~á±1廹žHQ(Ÿ~V\²ÖÀ4¼29d4Qþ?k™ŽÕ+|KÎ{±žÑ}XØçÚ!œT¿²ŠÙ›œ cØxs¼¤¯*qõ¸ƒ¢üÖ2 /Oô½„L_ÓéÝ·4–×úÕŒiã5‘]YºlndVùÑ2}M'£ýxA²xdÓû#„Ý*¶ºOx©qo[ÏW]³ašßœ&™òNSëê®Ô¾¿eŸçd:uͯ—[œb|VÎëyªÐÀ¼;Qò%SCÛ¾ûâ¸m`¡ÌžÄœø¶ØìûÁQñó!{øù“¢ýoî,ÃìdÅçÀSùâXé¸U{<õäK“ÿÐ{WÌ„uÇ­a¼ðÔˆ®©TAÂ¥óSÌ?¼¹¹}ØK!ýXåO³­èÉåènø¼F_þÓÛ«®ÉÆ6&‚ô‡º˜¼ÏO”Ên{]´ió«_5yi/e¯Yýî My(A·/Ço6±tT?©}-7qvñ3«ÿ…rA ùg(b·?^“ÖâÛƒ¡¨ž1®ï/×ÌûÎ4HùÃ’Â`lÐ{| CÕ!£c¿_Íîºu·ÝôÜ%‹î¹ïž¿n¸ëŸ™1óo{M¬GôÔ¾??ó+ñ©÷Æmhv”êÇ*Öºh·ÙìfÀ¼†½wTꉃƒƒƒƒƒƒã7ƒŸèZÚh¶[@JÈ€¦µ¿ì5©¯¸mŠjàåŒéÄÎ:"ïŠqÝñ’ÌÙ¥ºýû[=~õ# ªãÀ/õ¢) /¬ ”¥ÝMn²Œ@†NÿëÛ·†Xu~¬ H3m­ÚüÖCóó¢Æÿµz⪿*ÌÛkn©«é¡¶ÉàfJe·Š½®N_qpppppppü6*ãVæÆ^’•œ·nJòýÓ 6M‹K týš0íž­vÆqð{çO/˜:óº»äòže‚‹¾33MŸÝsaF|ʤEï–S®_d™ ÷à½9µ:"´gÞÔ¯l×—+5Š}ýcøùoóÇ¥$çL¿üµ«oˆñ͵ŠÇ?_Ë0µ-_ð§Ç?+7”}·½“,ÖyøV±kå>ò¿/ž_vÅ´ü´¸Ø´©w|ÞÎ4¿1éôÞè§¼,u%žðRMûº2@9ÿÓÁ;âxLz£¾u/œ9öåàààààààø]Á—DÜ3yÜgOùnî”ïæN|u\Lžp8S„lÌ—¾;©§†ñªw¾yMlïÍénww£“aöÀ'÷ܼL:õ½öîÝc¤ô 'a—eu"dÌ¢7wÔÛ†qé*w­ýûué§œTBqþ#ßÖ»Æp쳇/ˆ8Ä2ÁXÕWs\ÁëÍžƒwÆû\vžú¢•ïÿ|¼Åìe†±7üúá=ç)ÏÄþÊ;d]ùsi_Žß'ʘœ5ÃÞœŽc(x±‹w»ë.–¯Šƒƒƒƒƒƒƒƒƒãw…xÜ_¾Ùðüís§ä$Å¥NZð;ÌLÝÓägt':Žß¤jò¯w´ÙÊ0 c©ÿuíã³ã¸À_ŽQ…Ûðƒƒƒƒã4Bä꘨p™ˆ¤=N«¡CÛaö0@ˆÔiéÑÊã´ÚZÚ|i=ÒbMzºFèl­¬êpu'‘!ñ™©*Ò\WVg¦º~â)’²’äTgME³>ÛEæààøÃïÿÁ“\{yLhzˆ@ ZoèXs¬î—^#‘@¶(/qN„XB»Kš^/íh¢úhQF=81y Õ|ïΆº¾#Á—^š•|s¬BÍ£;:µomØçdÁäëÿ²¼EÓÆÞÀÔ/ÛÕÒ¨Élš Qä+—¤fô¾ÔÝöð¶š2jʵ*ÍÊŽ´6F! 154ØÎH~þáe-L™¡ozÿǹtÔ¸z)n¾Þ÷ÿŸnB™áì˜ÁKÅ­o x)·žCV ËæÓ‹³Ö"»×.ïž]xÿY¸ˆ‘~Æ^M,l¥Øó2J›|—¡˜ú0ÆäC*cAãVìX ½³GíÈeHs;&Ï„\ËQl5.^ƒ+§óäî}Õæž‡Ged&…‚‘tMݾ3)Õ$'Fó¼‚öæC„¥g§Äð=¼–Êæseø!R&½Q :¸ïè{ÆOA‚Ÿ••imÛÔéé—& ÏødÿÅÍ'÷y‡›!™’5îÀòò/'¶ºÎLAÏV¾gB—cBxžÄúì/¥]Âþd‡¥½?9Ìm4l­mÚÐæpœ™gúo›®3)æŠ][O–ýÛêTµ0?ù¡ñÎÒ=>‰à+–dÎq5?·«½E±|BÚ <ÏÇŒ–®º&Å3²ÓîLwX)ðÉl|NÎòÐÎWŠª+IåÍãSþ<Öºø@§1€v ._V’%“’Ón¬£ª™¡—Ul°ø"†r5 ÏãÚª`4û—Qm !–äO ­®46ظûšÝZ¼·üLÜüäÙ6圷ê¬Óþ6íFWf\>O””!6eïbk=…‚G1ëq´®€±Ë/!`9€ï×Àl<3Æv¬ýTв p.ÎÄÏ+Ñ.ÄäÇ0÷!|øØÀ…Ýwa_÷ ÿf^Haä˜lµöÆ£G*Û„X.±öRìÕ¿î­u ‘©csb³ób›mèžT!D±¡@¨âÂM­}ýu~d‚JÐÑH~ q å±Ó‘ÕîA‡X~vBÜíúï¸ÎA@×U»©†‡&¾~žø ôlå{Ú!xÒ+ÏË]æú¥¢ze«¹¦÷ËÌÐOv§¾úŽím‰ñË&Œ»°±üÑz=÷”õÀ±†rv¾s¼Ó÷‡£íÓ†¨éÉÒp-",*~žÄöá¾Æ";«n5þŽØ„K*M_Ù_’Å7¿µ»¬FóV€¼Ha®Š×P×¼Ëä¢àú¢1fzŒDN ×9¸|ÙU +E=*,7QÃñËÐL댦bÃ"V«‚ÑìGvdµÁqf`\p¸À·‚9—ƾsÓª³e…UßÿGZ‡í¯vÿÑŽ¢o‘q-B>÷—1àØ7¾DËV¿SâÁƒÏý F|ÄeCÿ*+A~DÆ ˆy°{Àmê™cv¸2Ð2’Byp´Ö6ém4àtX.b¼n§ÃjwXŸŒŽ™¦Œ”󜾧¾ ¬ËsȰ¸PAk{ß<üÈ• ½ÝÃyΣ€×ÞñïCg2Gšòš)¸<ôް9[ùž^þ„œ1Ë”æ×vUüØ¢ó4b»¾¡ûí„—-çYê÷:€PÇ&ÍvµW1‘…a‚¯ín`܆·"F=˜6Ú]f¦$hÒ›Êia´°¹ÕÐPÏ ._VüËâÙyñjmå‹®¤§#GU3À#ICÞ½¤8|ÕÔôq–Ú¶iûùþ¬¹fvÙ‘Ö†/¼á“é³"ÆDóì ú¾Ö5:z®„+.˜ž›(x= ‡ÚÚe³<¬±É C®\Ãû¦v§$ü’BEŒŒ€®cõƒÑŸr¾F½èzþö/ùWEDjÛ¿ØÊL¾^“á5~±¶CÛkæK¤QΤDþË˰¸ð$ÄNbÏ ¨î~¥&£p9²sÀó¢m¶¿ mÀ_ØeŸÂ|V¿‡I÷aLxÀ®Å½ÄȺ —A)ù¶¿„ÚÎ^ªùH¾…WB2ŒŽP‰hîm•(-Gzx€×€²×°µºèì6U^! ߃ìmh¯À©Ø¶ÔBÌ,Dñ#Ø]6 mÔÛ¼¤)pëVÑ…Q—b|,N¼9DàÄpe½h­ÆÄyÐlF+…ôé0ì€)èç'í2š½I’Çfv,os°ÞvAM÷4Ÿ@FÂ¥­sj’”áqJ~»®¯M|u‚JÐaP%¨‡ã9“!K§gGœ,/OÌ\¬°¾YTçIË~ šþºèćÆîYxžä¢Ìä…ñÊhݦk}çXãþ^á…!ʨ»sc§)…Àí²m=Qúf[Ït,{*Áf¤Ü– Ôøf,Ïo9±óTKÂóÓRnORÅù dû±/íL V ?$æÂð/·ÿÙ-½ezþ|ãÉ[‹MYì«ç ^Ý]WEAžþÑäˆp®ÝY¼Î:ìw\’/••²(^ê±|s¬âƒv÷°b‡ìC•—¯¸ÿ¢œüÆcw•ÛºkŽ_pÞ„‡‰ª¥‡ôffäu,í«ŒÉýdŒã‰ÝÚøŒ”…±2¥ÛôyqÅÚN社‡lýú$;BEì½qÄ΃U›‡ˆõg÷ FßV÷ÏZåˉ緔ï ,ë ÛhÃËNÏ\"5¾~Ø`òÅE¥„Íd73 EaËR˜uÛÒ'Gʸ¨gï¡’ªŸ 2ŸŸ*Þê’ç[jÿRe ¨u‚Í7M\Ê­2ÿÍÉ£®›Éäó/c´wÔ5­k²ZúÞ×<¾$YLÈ!QÐö¹wüY5rÍì²AÕÁ‹P]yƒÈr°ãÛbñ”Ùaó.²øƒ½«ý™|öBMxEÛÆÿ8œ¡ŠK¯Š™k¬[ÔCÉ®º+&Yá‹Ó'c:Üøñß{1›lwÖÊü˜kÕÞ£ÛZŠã5sâo áødÇq{TAØ…"ÊUj6M–g„é´¾× ¶ùKeG97®@Ãûøt7¼!ÐäãTiH5f¿õ~|¹V9&®ÄuOãÓG`ÀË D–ŒÆ¼ç`ß„M›pɪÞÂÈX…KñËh´bÌý˜÷>z–®þC é>Ì¿G_Ç·ÇÀËÁ5ZÍ~¬b×,Ĥ¿ ¹_߃²xȤf×쯼áWAPÆ,L¾ v Nj‘1{Ë@×F½Í‹þ¦Å`Ë3è}ÈÏÂ-/AÉ€Ú×±çÄ(É2¨ %/âºWQj@|=¾ü £àýxt'5‡Mˆ M›43¶­üø‰ê6ûjy²ø”0€6j-ÝWðCcÃyp7×ÔDIù*u¬‚§Ó÷ç«äDB$N£Kð|8A&&%JÌíGBcoÃ7zt?Ûc§G‹×mn„°0?÷A¹þýGŽzÄ3ó2çºs_[»ïQrã„äI–º'wê›h2,$DãîõA…=•Η÷p¸íócÇ·š(edò3Ù½l&ççæ=ãÙt¢ä™N—@•ð㤽RY­¯ËÞJG§‰É-„ü< BȰxž©Q¢téu8ô5K·Ô C¢Ÿ/ ÍŸ|þ„¿©y Ïÿ*¼ví£»j{ÖÀâYƤyÛWj MH]26~÷¶ê“Á÷–òz­ß48g%DeVW÷O~½šÞ¹ßdf‚ª+ÿ°·oWÔÄÄ1)ŽÖŽ´¥§§Ü8>±x»ÏH­ÏÚ'ýÀËIÖhl-O꼃ÑŸW *jK’R¯R ‹šÝÜ7¡Òu&“’3ÿ‘Dý·¨rkÏÐKJI¸<Eð'fÅKëJ÷8y D|2À:hÊÝd÷8%¢ña|C­;àhô`ó1=4ö ¹í¥ÍTVä¯Ë‘È£n‹¢¿ÙS»ÙDÎåó'G޵ÿìôÍg*ùðxÜ­v—ކÎî¨è«™%U¢Š_¦¡¿+*ÿDO1@§ÅãèTª@}Woïácïj= ¸Œ´W*«U,ЮJ‚”'©TF]"t²”g–‹]§ïCCYÜ_H ÖæÞâcG—òÅ—MsIgÙã5/ÀÐÞ¾o0¢lgå}Gt DžÐk d â$¬ëÅZ^º¡©µ"5ñÚˆ†Z2>>&ÃÑözwçy]ÐsØZ y² SÙŠ#ƒ½ÅÅ“U…2ò¸‘öÛúì}Ò<é”p^{³A;جr ^AwO1ï°·GI%Ín{°5õ;fp×™ŒMÈ|.\¿¯ô SïîOÛix¤",a‰´ý™ã.Š+yp{é€:#)¾|bÎ-hxhV'ýGAöËüÒJŒÝïˆâ«§Ž»]yÊfZjŽß[Öõ²\¾lšÙSÆ$åšêïiqÓ÷í©Õ›úmõÚm9ùÏ%&VŸø¾Ïûc±Z-õjÄšÙeƒ¯ oUû®ê®þÄXu2øÂ®F!xQIÈU7?Ôk¿Q !a¥†±™<‚¢hÆeñ˜úÅÆ³Ëú í¶ör À¸¯îý=!·¤JuãµæTÔ6ã>øqý®6_2ã²®ôÒ §¤ØéfD4Ýç–²D¤ / 12ÔíÄ ^6ˆ< Ý£š· í.h2Až€Ÿ”e˱}hÍX;Lw‚$ `Âë˜ÐK¥R t€|”vür8àH‰€­ò£Ù‰¢7¹‹§¡a އšõÐ »föò‚A×°PPS0ýŒ6Ô^@tu£šƒkÿ„CbÅ€4,­°´BwÍ,ZŒ´ïQªZ–±O¢øü>X“qå ¸!Ÿ½ÑXnÏxŒ Çv·ÔÆŽ™0.Q;n¢Å°«²W<OŸ¢hGg]Å‰ÒÆSsÎŒrnnû¡¡}ŸÙÛãI²¥’qšP…³ógã ~%¡ŽPEyoè}ñôg ´§ÖÁ\¦”¤ ¤º–ê"~ØÅâã ¾±3 Ï¶.—Kë&Ì4ãõ¸ÚìÎÁÞþ­žÔutu4å£0­å§¼”£sƒ.ñÑ”°È¶¶6žìÊaEE{t]ù…½õ†2¼UnèzPyœÂCù]ÕÁÞúì}Ò_eñ„I"tšÝƒÏÍätÙàm¶ÓB©XFÀÎM;É ®3™üLÓþ“_ôk`ÚSogdʈ%¡²]ÅuM4±$UÅÈö\Ò°„Ea®u;´õcó³ÇäŒKšWwÔVŸ~:tdoÏ<2ãõtw‚àòeÓì§rä—GñÅHùpNJ÷O‰ÿ™“èÐWß½¯½c4{•·Jk¶%*„„ÿ'Õð¬Žfv«‚® Æëè™Ó+HØÝö^ŽUÓüîzÛÈ6 ò'˸l=¯Y½#Údúæ}+¯§o0®^Q~ E»i€Ê2ȈË^"?åeâ,­Â¤m=“ÍLï |s#jÛùK¬¬pžòydŒÒ˦_Íæíøtâ/Aþ˜7mëðåÇpÐ!Ù5³—4NÍɸ:uˆDZ€«—áècØ_îçJëI8H„*}°²Â|LÍÃþ¥èteøîU,^…¼¯°¿a”JÅx-MÇ‹(Ñ%£Ñá¢*kÏ€ä¨)úµÊètõÛ» ‰Òˆˆ4ÉišîòEk¤æn·›që:¼QÑ|ÀÔÐæ$ÇÚáe|/¶Noÿ°5´áÉ-e±aÚZªïmkuEbÜ ñ•U'Ÿ¨°Øü§r)žžQF(èýBMÈ%|x\Ý» €/ˆ‰À­bn3yåaÊU\k=$v/ŒQå ÞÑyŽ1TOXüè=ý”—ñªÑY'Ç\*ëøV[H_Öº¨eƒ+-k냦<=o‘ žV_ì{ëûé“~k+à·?^€áVt³3p_gAèc#tåÅŸòbDU¶Z˜±š1u'Þ0Ó¡ŽL‡}µ>o³„T"’ÂÛý:ÍX­v#BÔ‚S_¿»Ó5Ä‚`òe×ÌŠ×øü¶#"_$RÇü-¼ã‰íZ¯§s”»& »®ÿŸËBÂܶúÞAGój8šÙeG³6D’Ü ¾µÜê‹ýd¨¶z/_#¶Õ:—`h†"H±``‚Y6hÚj ¿§_‰†•ÚJ‹VR.Åî“\@ºãÀ¨CÐh~<"Eh(À{ F°—Ã"@æÔ$ÕmTPŠÑá!ÃäûèžOþ¬ D3ã@÷høêqóBĬïïïŠbF§q6³—÷ôÕ3ä˜þ,`™ÿk%©xÑiYa$„ N=ÿõ°rù0Ë>R¢Ž ±·wÚ¼¾HÆãéót¡=Î~3@J5ÑR0ú㻎´{²Ô)““d1‘â*ë©ñÜ£¯m4*"yæš6’FëÛ c2šÚÉÈ*þÁŽ!K†r©¯;Rß’6ö´¸œšÒý^¿©ŒÝEA% '¡¥@ŠTKrB°t;=ŒÃMC$ÕðQí!PÜ”«–Ã>,«†€î4»ÈĈi^ó³vª¥ÍdIÖÌðº6 c>…q3„(Àà3Õ ƒö{äœäp\él))vC6XãX[¿~V|˜ÊÙù«/>‰½õƒ´ÇÕäF¾\ȇß)Å¡¼!H!VçðWŠþ¡à:‹êIB×7vA’²;¡;¬ €Ñk6¥çÎQ†æÊÜíÒÈ{ÇÈ­Íe[NÝ~"àñAÈyIr¡@I3^¯×F`LFC#â—µUt¶òdsÇDGºu»ÚE!˜|ýÁ"ËÐÇ)oŒ”z†övØmv)V«Dʸûp´ÃÚäF”:zIª¸£±tOß®,ž4=>ÎÙúàŽºŠžè?V\3»lµ<© TáqKÅ9Få’–ïŠNíÃtÒU‹ž3ßýÓv³ŽæG$ÈÇD9¶ý`9uû2§ÖÎËœ¢,Ûjµ E1jº¶¤këvÿ²§ –ùMeÆ¢ÕH]ŽkhìÛ™°nömï ÿuó1k~üV&®‚´‡ºJD HhиºŸ(ÊU‹]{0÷Q^BY¤IȘ…Ö7QÑ ¦"˜ÿ„Â;@AÚÍP·À;h• Û*vͼ$\¶ ¿@Û' ILèwH / Þ…J‡Ï– ­×÷ivÍìåe'˜z¦"E#mˆHïþ‰†¥/ˆÆaÆ$Tì@{'ã1ãè7¢Ö4 ²ŽRè LîO`bì=›QYXR?vJ¬Àk7™lnBƒ³±Zçÿ»!ŽŒ‘æ–v³½ë˱»µÓ“«ˆ‰×6œ’÷vžØµµ«CGϯs[Z?ÐF>6.£ñXý6 £’+¦ÇÊJOVït2ò˜•i‚#Íúr«Ë Q†œwO$k*ÝÐj´$¨ïÊ´|nÍ̈Ít9<"RJvM!1Ú6}[zÌíÙQ<ojZLŠÝl‘ò´Š§Ýfæ+Bõ \ÖδæBÂÔ8Øì“X P i·ÇÛ7ÄÏSmô„FÇ^ÖR·×É‹“:Ûu'Gs!)”LŸ·ÿòÒöŸj­ rÒÁ±ö¨µ÷F×Õ ù²ÃÞúž &D¤õò³âï'vi®¤iýà { ô,M¨¦ÂÖ4@Y ^A<±ò"}²Ò>‚‰¨?DáñEÜp~Þ =¿õlŽÃx-«‹Ê©¼Ä?OÓî’¦ªU¥ó)VñLω5’ç.ŽPV|pe‹‡<–æ¿"ïÉŒùû´”¶³í¥¢ú#ÄL¾ì#ŒfÊãvHc‹%á°›w—–¬©3÷‹Ù§¼Î:B-ópæEƒÑˆìȤFÝ’ €6Õ›¾[««èµYcµü¸–(œ1÷¶p>E[m¥‡\}Æ8sÏW:éìˆË"ár×n¯ \ö´ÁR"¿©¬¿Ã:; oÄåsAP0•b÷f_ÝBár\ýxÚv`ý[ƒmÝ@â¢wq {ë¾ôÍw*;(4*_ÄÏ·cÊc(ÁÙ‚º­h§jðýû˜wæ b6Ç‚óS2|«úk.ÁàéN¥ ÐÚ1nÂÂ@–Rl{² €¶Bg€´Î~½ÝfÖòú©ª ê™Lz“zýxj3>Ê "—]! O+ÊßÁžï{Öù#KÕá«§0c1®x`*ÆO+Ñô±G”­¹¦I£S†K¯ÃÐ\_~²ºÃ¿ÏEˆ#b€£½óÔ½ì5·éXuh\¸°q°Õ $ô¦D÷ž£'^ÉJùÓ¸±·ð‹Ýz°¹µª»²(—µÜ7?O/â‘ ; º·5t»G~RíúúçªE¤¦>Öõ «>6-:Iì‹Áu››ž+“<ž™üçHûΪ²' ÿŠ÷ô[V«Øñ8m€©ÍfàµíÔÓJlíŸ,„øº)ç]jç¾CÏwö ËËËW SÿT0þNPÍÚÂ^½ó ¹{úÄ»ºÒ#+j»£¨ü——iom9”qž©uK¿Ã²¬«Aóe…½}<ÕÓTœvÓGŽÜê>UÍì­ÞãµÆ‚˜mÿ0Ñð“——áÑ=® ÖÿáààxY Óïž#¯é·Á­¼g Ù,Ü·ñï£pŽ"ƬõXpñÙ6cD$>…åOCx¶Íø@„Çå~=+=Ÿ;|ê·ƒ2&÷›™©9g¥Éጉ“¾»4óRéÈÞ! utúÚ¹“þ#äzœ?¸ó—888ÎaÔ7a’%¿BßéL»¶Íhã¾&rü!SÒ2nâën³68h¥*ré¹¾¹¾btv äø½Ã¸·+Ož”ý@anVYÃW­æ&w€»ñÂåŠ â%„´TŸ|¹u”ö¥ü=ùÎç0æ#°-ÄÌ+"†§ÕŸãÇõø}lÖ½ ÷w:cÝŒ_F`ñkg! ߯„ÞàÃ]:Ét»ÎЙ½"QƃÃa)ª.}±Öð¤t·iõÞâIq×%§¿e}ú—Ò}ĉIÂ’_Ÿæ2֬ܨîäŽ €Ó}¦G?H" ì5sAÛa1\ßé¶VQok°϶U¸XgŽÓŸ™ª`hÊí0éZ[;íÔ ÉÝ0îÎêŠf; €kÒÓ5b`šrÛ Ú&­©{…(!R§¥G‹\Úʪv@ JÍŒ—8[*ªu½V‘B¥&&R"„Û¢ooë0¹F÷ÐtŽ? âæI.H‰½<&4=D ­7t¬9V÷K¯cv’°Ey‰s"ÄÚ]ÒÔðziGSßLB”QNLžB5ß»³¡®ï0Eð¥—f%ß«PóèŽNíÛGö¼x0ùúÅ¿,/dÑ´±70õËvµ´ guÿPš Qä+=¦Ümo«)Ö®0ƒYŒfvÙѱydbñØ ÃQCƒ-xe£/kaÊ }Óû?8Î¥mÔKqóõ¾ÿÿtÊ Ai1¼TÜúŠ—úã8G¬–ͧ1f­E¶¬çÏ.¼ÿ,ÜÄH¿c/‚&¶Rìy¥M¾ËˆPL}cò!‚± q+v¬†ÞÙ£vä²$ȹ“gB.‚å(¶¿€š®£E¸x òT=RðÞ_ÈJ|R™”ÓóœÉ“ÝrdÏ‘&{×`HJ5ɉÑ}v‘uÍ•Ív „ªø¤DiORF†öÈŽƒMÆ—˜œbsÕW·»€à)b“•[mM·ëÌ IÈ/ÈíQÕyàÇ_µçÒýú[B¤Lz£@upßÑ÷Œž‘?+!*ÓÚ¶©³ÿyê’ðŒO&ñ_Ü|2­úB¦d{#E°¼üˉ­®3SÐÑÌW¨H|ï‚Яwø•cG“ûÉÇcÛªKÎÖæp„ /1þÆ„ð<‰õÙ¾»s°øH,¾™8,íýÉan£akmÓ†6Ç0Î}?×xš @š+vm=Yöo«RÕÂü䇯;K÷ø<3‚¯XR9ÇÕüÜ®öqÄò i/ðü ì àÂî»°¯{‹3‡[TCñ¶ƒ¤\“>.7&&l›n_SïY}ñ¶C¾ç4ãí·«¬­jOQ[=fbŽ&*=.¤¥ÒÈ ÃËž’+³åÄ‘ ­RUT””›s9”ÇvLGV¾1$?;!îŠvý÷\ç  ë*ÝTCˆC_?O| z¶ò=Ë<é•çå. sýRQ½²Õ\sÊofõdØ}3§¾úŽím‰ñË&Œ»°±üÑzýïäù=Àu¦œïïôýáhû´!jz²4œD €‹ŠŸ'±}¸¯±ÈÎÀªÛc¿#6á’JÓWvÁ—dñÍoí.«Q缕0 /R˜«â5Ô5ï2¹(¸¾hŒ™#‘Àu._vÕÈ dQ¤ ËMTÆpüò4Ó:£©Ø0¡†Õª`4³Ëe3Çé†qÁáß æ\¡ÎM«Î:”V}ÿi¶¿ÚýG;оEƵøÜ_Æ€cßø-[qüL‰>÷7Yð— ýW¨¬ ø3 æÁî·©gŽÙá†{Zíq9ígí±b•º V¬7×÷š‚¢=.§s¨Ù`Æëv:¬öÆsŽ&œ/âeHˆc²“$€­b_q­™à°[:‘䯽ã߇:ÎdŽ4å5Spyè3ü¼9[ùžMþ„œ1Ë”æ×vUül£û¦°x2~|3€±;,[ËJ‹ )ÿ:/ã Kñ£uÎa~8a?…§Ûõ Ý3‹¼ôh9ÏR¿×Á„:6i¶«½Š‰, |mw3ã6¼}Ô1êÁ´Ñî23½ A“ÞÔPÆH £…Í­†¶€úfpù²â_–Ï΋Wk+_t%=9ªšI’òþ$Å᫦¦³Ô>p°MÛÏçðgÕÈ5û“eO²¤]á ŸN1&šgoÐÿðµ®±×fÿ‚pÅ3Ãs¯§áPûO»lÍ-ù•†\¹<†÷MíNIø%…Š]Çê5£?å|zÑõüí_:󯊈Զ±•™|½&Ãkübm‡¶×—j‘F9cù//;ÂfàÂ[x`8‰=/ ºûÉ/LFárdç€çEÛlÚ€¿‡°Ë&>…ù¬~“îØð€]‹{0ˆ‘u .ƒRól µ½>’oFá•P… ³sø-Ñͽ­eà¢åHÏðPö¶!PÝæ¡Ê+Dá{½ í¸ ÛV‚Zˆ™…(~»ËF¡z›—4îc}Ã*º êRŒÅ‰7‡œ®¬­Õ˜8šÍh¥>†0öSÎcl1Ò±j™ZÆ«w G9! U´YohX¨bU`¨ª· ÿã7²tzvÄÉòòÄÌÅ ë›Euž´ì¢é¯‹N|h잣çI.ÊL^¯ŒæÑmºÖwŽ5îï5¢Œº;7všR(Ü.ÛÖ¥o¶õLDz§ ÓáÆ·øÞ^Ùd»³VæÇ\«öÝÖR¯™x ÇÏ ;ŽÛ£ Â.Q®R³i²<#L§õ½n°•È_*;Ê9¸qÞǧ»á &§JCª1û¨÷ãË¥°Ê1q%®{Ÿ>CŽH ²d4æ=û&lÚ„KVõFÆ*\šˆ_ž@£cîǼÇðÑ£ðy&’îÃü‹qôu|{ ¼\óH ÕìÇ*vÍBLú ’ëðõ0¸!‹‡<ð@jvÍþÊ~ÕhÌÂä»`·à¤Ó±· TpmÔÛ¼è?aZ ¶<ƒÞ1‚ü,Üò”|¨}{NŒ’,ƒú·Pò"®{¥Ä×ãËÏ0ú!—´Ûá„b€÷”e²øŒl Œ³½¦®³OP€D“6F*ŽNP hýɓڀN’$E 8ô&7RŸ/#ÚÚXÙØ9A&&%JÌíGBcoÃ7zt?Ûc§G‹×mn„°0?÷A¹þýGŽzÄ3ó2çºs_[»ïArã„äI–º'wê›h2,$Dãîõ¹…=•Η÷p¸íócÇ·š(edò3Ù½fø Áù¹yOÆx6(y¦Ó%P%ü߸^¡àìV ×eo¥£ÓÄäB~ž!dX<ÏÔ(Qºô: úš¥[ê„!ÑÏ„æO>ÂßÔ<ç• ^»öÑ]µ=k`ñ¬ cÒ¼í«µ„&¤.¿{[õÉàûKy½Öoœ³¢2««{€' ¿^MïÜo23AÕUVÕFOzåÄ1)ŽÖŽ´¥§§Ü8>±x»¯Aåë^N²FckyRç^ Ã7£*jK’R¯R ‹š§Áé:“IÉ™ÿH¢þ[T¹µgè%¥$\Š"ø³â¥u¥{œ¼">àF4ån²{œÑø0¾¡ÖpÌx°ùŽž8âžlÙ‰’â½.$ªfÆcx½è¤’ÇSI¥yQš+óò¦(O®(1õöD=Öæ•;án[]ßQ†Ýª`4³Ë¢™ A´¸}Cý–jŠÕ• ¿.E.°·z"Ò<Æÿn1·yƒawyèõc¥Òc&+¸m›×Ô •Ê«nTÔ¯o:¤gÐ.o÷hÂ*뻡qÞ>l-³ TAÓ»ÎB!y´yw¥XS£îÐ~TÄæ…ˆùº'5‡.‘ÿT¤(XçFü´Þw2³±º'1ìr${°ñ5t-¥Úñ<ßÀÄ,l>á_q@²Ñ°=ï·±èýúÁKÂSQ¼'+àðŒ{ ¡(é^2.º ÕOcÇ0OOÀ£#»U~4“H@Y`ÒÂê†U m ÙúÑÌ^^Pñðõjh21/?ÞfRå *¸6êî{ˆ¸W]‰}«PÚÞ'Å[ Ë R!ª+p}6|Ú·NF*˸`hGƒ„<Ø7`t&ûÃÐ ¢ïØ-ŽJIóý×F5×÷uyªøä®%Š# ‹+å1$ €¦hSɇÇãnµ»t4tvGE_Í,©Uü2 ý]Qù'zŠ:-D§Ròè»âx{{Wëa¡Àíd¤½RY­bvUºø¤<™H¥2êê¡“¥<³\ì²8}ŸÉÊâ¦øBj°á->vt)_|ÙÄ1—t–=^ãð íÕ÷¹T”í¬¼ïˆ®ƒÈzM,A@œ¤‚uŸXËK74µV¤&^ÑpBëa@ÆÇÇd8Ú^ïþh0òºòoUPmDòd¦²' F{=Š‹'« eäq¿ßHýåëžtJ8¯½Ù v„Ê0|3ÚeÞa!n’JšÝöáæsÎ1¸ëLÆ&d>—N®ßWú…©w§í41ç4<´G«“Çþ£ ûe~é%Æî·@ñÕSÇÝ®ñ}Ÿ÷ ÆbµZ†kÕˆ5û• HóÐx«ÚwUwõ'ƪ£Áv5 Á‹J@®ºù¡^‹ø +0ŒÍäqE3.‹ÇÔ/6ž]ÖWXh·µ—[Æ}uoìï ¹%Uª—¨5§¢Å÷Áëwµù’—ýp¥—fÀx<%ÅN7#¢é>·Ì% uhxQˆ‘¡n'ñ² Däuèè{¼MhwA“ òüŒ{Ê–cûК±v>˜îIÀ„×1¡—J¥èù(íøåpÀ‘[åG³Eo"r%OCÃÿ55þê¡vÍì僆/a¡ ¦`úm¨½€ è6êF5×þ ‡ÅþŠiXZai…î$š-X´iߣT´,cŸDðù}°&ãÊpC>{£¼(žà‹xãõôñœ Çvö-¤=Î~ud¯Ù°™VĤ禆§Ÿ?Ö´å`ë`³V}î-Æãpaˆˆ„ÅÛqhû‘q…ã#‡±V…¡ŽÔéu “ÂÐÚ¦¶ /’{¦† eh¨«/˜|u€3ZH Ë¢,Ÿ–´§Íø0Êy¸¹í‡†ö}fo'É–JÆiBÎΟƒú•„:Bå5¾¡ôµÔŸU,ОZs™R’&êZª‹øaGˆ+øÆÎ€>êº\.­›0ÓŒ×ãj³²ný𤮣k$¤) …I/?å¥t‰¦„E¶µµñdW&+*Ú›è ëÊŸUA¶CÞ*7t=äXYa>¦æaÿRtº€2|÷*¯BÞWØß0šE#ÅJ9°m}f%)—ÃnjP¦Ý6‹Ñj2YɈ™c•áQr^k§ ½4Ò7 ‚'ä º|rÆeÐ9 ”DÄ(ø:½×åpóK4C;¼Œïµ×éíÔ€6<¹¥ìÀà_Ò™¶–ê{ÛšÇÅE]‘÷DB|eÕÉ'*,6ÿ©„\ʇ§g  z¿nr W÷þFà b"p«X ÛL^y˜²@@×Z‰Ý cT¹@cÃ0+mÈʤz‚æGï¹é§¼ŒçPÎ:9æRYÇ·²ØBÒø²ÖE(„QA¶MyNçó"<}ß{t |AÀùú5{„ï2ÃôÍÌïc­ø€Ç!½cl„®¼âóA^|©ÊV #׌ÑÕn4Ó¡ŽL‡}>B*Iáí~)b¬V»|uÏë'cwº´vg÷?—ÎsªŠƒÉ—]3+^ãóÛŽ,ÝÞõ¯ø©F7co~|Ç‘{tvŽrã“Qa²¸ëú?ð ¹L–ØoªrxV Gs ²¤²#’äfð­ÕV_ì'CµÕ{x1Š˜¡wbh†"H±``‚Y6hÚjò˜ŒÝÿL^çȾR÷+ѰRûCiÑjCÊ¥ lºã@ÔÝËÚøñˆA[€÷Œ,`/‡E€Ì1ƒ§º€ J12L¾¶‡?«ÑÌ8Ðð-6Ý…ÿ~Íõˆð¡Rœ€ðÐáÙÌ^ÞÓWÏcúC°|€ýeþ¯•¤BâE§ad…‘28åß9ëaäò៞,.;M8Z[_Ü )’ о -ÚmsЀ$ÅM¹jù0­ºÓì"åÓøÖ#vª¥Íd‘kfHܕØmaÜ !êh9#ø/¯Ã ýÁ.ž“~YŠÒÙÒRì†ìˆ­½6âgŇ©œ†_»×íQ4M“dWg&EªÅcB{ulö|ýM¹šÜ“ ù‹t3ߌ$„»sø«LÏAT•X¡ž$t}c$)»ÓºÃê0ѽ¶aSzîeh®ÌÝ.¼wŒÜÚ\¶åÔ F!„œG) ”4ãõzm4Æd44"~ÙØX[Eg+O6wLt¤[·; 4˜|ýÁ"ËÐÇ©Õé¤ÔÃ0´·Ãîl °áY­)ãîOÀÑk“Qêè%©âŽÆÒ=}ÝP,ö¥éñqÎÖwÔUôDø±jäšýÉ¢™­>xRA¨Âã–Šs.ŒÊ%-ßÚ¥†é8¤«=g¾û§ífÍH‰rlûÁrê&cN­—9EY¶ÕjŠbÔtmI×ëþeO,%ò›Ê† E«‘º×ÐØ· >"2aÝìÛÞAÿ-êæcÖ üø1¬2L\i) t•ˆРpu?3• ª»ö`î£0¼„²:H“1 ­o¢¢LE0ÿ …w€8‚´›¡n3vÐ*¶UìšyI¸l!~¶N@“ ˜Ðï^"¼ •Ÿ-A[¯/ÐìšÙËËN0õ,LEŠGÚ‘Þý K=ºö£ÃŒI¨ØöN(ÆcÆÐoD­id¥Ð˜þÜŸÀ(ÄØ{ 7£²>°ë—°œ©ŽËC„àn>Qmî;6‡çLžá»_½'ö—è{ÆŸwž RU„BXêëÍ]#–×P×ꉌ ͽ袽C!'h}U/´µ¶¸,º0+4uʥѽ;dønÁ¸-­h#—Ñx¬~›…QÉÓce¥'«w:yÌÊ4Á‘f}¹Õe†(C·»'ÎŒ5•nh5ZÔweZ>7‹ffÄfº)%»–W0Ú6}[zÌíÙQ<ojZLŠÝl‘ò´Š§Ýfæ+Bõ \ÖδæBÂÔ8˜ÿ#”BÚíñö ôT=¡Ñ±—µÔíuòâäÎvÝÉÑ\ FJ%Óç±î¿¼´ý§Z난´Ep¬=jí½½QÀu5H¾¬ÛFO"ÒzùYq‰÷Ç»4Wv? =['/ú†äpÒ&™“i¶yDæëʱ×@ÏÒ„j*lMÕ¯óã›õ‚'V^$£OVÚþ :÷x$ /‚ä†óónèù­g‹ÆkY]TNå%þyzœ˜v—4U­*5˜Oy°ÂˆgzN›“E[m¥‡\}F1sÏW:éìˆË"ár×n¯ \ö´ÁR"¿©¬¿Ã:; oÄåsAP0•b÷f_ÝBár\ýxÚv`ý[ƒmÝ@â¢wq {ë¾ôÍw*;(4*_ÄÏ·cÊc(ÁÙ‚º­h§jðýû˜wæ b6Ç‚óS2|«úk.ÁàéN¥ ÐÚ1nÂÂ@–Rl{² €¶Bg€´ý‚hýØÌZ^?UD="ðIOcR¯OmÆG™Aäಫ $áiEù;Øó}Ï:¿`d©:|õf,Æo‚LÅøi%F°¡Þ॒*í¶´7”Ÿ(×ø&U(Oýáí7KL„DD…´Û¢­-9^Õí3î¶c¿õæfÄ…‡©C—±©äĉº^eªÜ»Ãž‘©Š‚ñØ:õÎÑ ­aÜ{Žžx%+åOãÆÞÂc,vëÁæÖªîª¤\ÖroÜüp÷ô‰wu¥GVÔ:OõåeÚ[[egœgjÝÒï(­ëjÐ|Yé×FëÃ^Ž <_’§z`š €ÓnúáÈñ[ݧÁcmy½J¶2-ãIʾ³²ô)sô›jáPùöï~ð¯í0Ä,ˆhûWGÿ(vO†Ý7ë/;%.ã{|DÑØPxY Óïž#¯é·Á­¼g Ù,Ü·ñ’³mGˆ1k=\|¶Í‰OaùÓ¯ˆ#(ˆð¸Ü¯g¥çŸ¥Eç0Ãï„pÆÄIß]šy©ôtÝêèôµs'ý=Fø{é­£ø‹ƒƒƒc´Qß„IR”ü }¤c0ínØ6£íwñ̓c8)i7ñõ?·Y´R¹tŒ\ß\_qZöäømtß`ÜÛ•'OÊ~ 07«¬á«Vs“;°ÌØ!xárÅ q‹BZªO¾Üzzv¼< p®3Ç9Œùl 1ó „ˆáiGõçøq=~[êˆ^…û»±nÆÇ/cø›C„(|z‚8Û&ý¡Ûu†Îôè‰Ò0KQu鋵–€O(åø3 }ƒq›Vï->‘w]rúÛYÖ§)Ýôö#’°ä×'…¹Œ†õ+7¶;Çú8ÝgŠpppppôƒ€$½´ÓvXL#×wº­G@ÔÛZ,ƳmÇ.Ö™ƒƒƒƒã´ NÏSúšò¦î — QdZz”ÈÙ\QÝéfÈøÌTUï=wguE³@ʳ“•]»Y1”Ûaélmé°u/]"Äšôt˜†¦Üvƒ¶Ikê»~”(4qQaR¾×ÖÙÚÜnñôK•«c¢Âe"’ö8­†m‡ï$B°ZÅÁÁñ‡gÀOrAJìå1¡é!1h½¡cͱº_zí3/„-ÊKœ!–Ðî’¦†×K;šún7¢ŒzpbòªùÞ u}‡‚/½4+ùæX…šGwtjß>Ú°/à£+‚É×/þey!‹¦½©_¶«¥e8«û‡ÒLˆ"_éÙfàn{x[MÙ°ön̪`4û—%xɱ ËÒÔc¥<‚¡šZ«;Ú©?ÛbñØ ÃQCƒ-xe£/kaÊ }Óû?8Î¥mÔKqóõ¾ÿÿtÊ Ai1¼TÜúŠ—úã8G¬–ͧ1f­E¶¬çÏ.¼ÿ,ÜÄH¿c/‚&¶Rìy¥M¾ËˆPL}cò!‚± q+v¬†ÞÙ£vä²$ȹ“gB.‚å(¶¿€š®£E¸x òT=RðÞ_ÀzyJ“˜ Šp7µ”[h DšŒ¬d•³¦¡”@J5ɉÑ}özuÍ•ÍvàI£“Õ½¦wÒ³3öí<ÖîfBU|Rb¯3×32´Gvlê>ÈŒ”%?-/Òç§ff´ï>ÜØíý’²äIÓrÕ½ÜcýáŸö4w‰Õ*ŽÀÏÀÍ/¢nv–H#=š&-F¿'‰pn?.@ÍðGý³5望cdn¿¡åÜÜÖ“¸Ë1ibÕønaŸæ¥ãÒ Õ‰Oף–Âÿ"ª·#¾¸­.äá¶Â[‰Ò8¼ûtìÈ4ð4A4WìÚz²ìßV¤ª…ùÉw–îñyf_±¤ sŽ«ù¹]í-âˆåÒ^àyî„ÿ;¸°û.ìëÄâÁÌ@‹hnÖybC¢#%• ÂðØPÀÝÞjéý*¯/Þv¨Ã7ÌxûîýÊèŽl?¢'eIyù‰²„¬ØÊŽZ{Ï `«ÚSTç–F™˜£‰J i©´ÒÈÄq¹‘Æ\sðHCžrÞ„¤è±ù±º¢F@9&[-€½ñè‘Êv!–‡…K¬ýI6«8†mFÓ!t º‡ Ñ—#¿Ç‹1ŠU|¶Æn¬6bŒÿ;¦ç ôc|± §üf!²nÇ…ó`iDƒ 2hx‡êºÿr¡³ûmÞs-Eʘþ2ÀúÃ6Ê·ï×™rv¾s¼Ó÷‡£íÓ†¨éÉÒp-",*~žÄöá¾Æ";«n5þŽØ„K*M_Ù_’Å7¿µ»¬FóV€¼Ha®Š×P×¼Ëä¢àú¢1fzŒDN ×9¸|ÙU +E=*,7QÃñËÐL댦bÃ?²ZŒæ!eIqø]!¥Ç‹ÿÝä¢8\MçìvZT.ð­`Î¥7ŒsÓª³e…UßÿGZ‡í¯vÿÑŽ¢o‘q-B>÷—1àØ7¾DËV¿SâÁƒÏçF|ÄeCÿ*+A~DÆ ˆy°{Àmê™cv¸@Oóšš:©Ø(y¬ZTcs0¨âÂx:ZÌ}žd´ÇåtñÎÐn§Óîu6VÖ&%æ)ù^Ó“Œ×ítXí æM8_Ä&Câ’Uœ5GË´f æÒcê˜)ñ)ÑÒæ R(áŽÖÚ&½œ«q`ÎlVq Z‹­ÿ8£9ž­1‡ë†Ä{0=[îFIsß ¢dØv/:&â–yƒÉ2°T ¡dpÅî6”½Æ“¸ño˜W _æ‹™¿#QHÑy±]ßÐ=ïÈK–ó,õ{ @¨c“f»Ú«˜ÈÂ0Á×v70nÃÛG £Lí.3Ó 4éM eŒ´0ZØÜjh È» ._VüËâÙyñjmå‹®¤§#GU3À#IôPu@ŠÃWMMg©}à`›¶ÿ¹ò~¬¹æ¡eC#4chÓZ׺ /¼á“é³"ÆDóì ú¾Ö5öÚ²]®¸`fxn¢@àõ4jÿi—ͰëÏ&+ ¹ry ï›Ú’ðK 12ºŽÕk FÊùõ¢ëùÛ¿tæ_©mÿb+3ùzM†×øÅÚm¯/Õ"rÆ %ò_^v„ÍÀ…· !ðÀp{^@u÷+­0…Ë‘žm;°ýmhþÂ.›øæ °ú=LºcrÀv-îÀ FÖm(¸ J ÌG°ý%ÔvöRÍGòÍ(¼ªaw?% ¹·U¢ \´éà^Ê^ÃÖ"úØb·y¨ò QødoC{.HŶ• bf!ŠÁî²Qh£Þæ%MûXß°Š.ˆºãcqâÍ!'†+ëEk5&΃f3Z)¤O‡aLAŸ‰à16uÒQ‘ÊØQ}£“F‚jo6[1)ŠS®NÝ Ç„(‰Íw£Ý ÁX,}Á7i¸÷ìovä,ÅÔYÚqäì.Âè4×På•`æÄÿˆW÷|Iù.#°æ)øÂFTW~:_?£7@„ ï̄ĄÏ¡èhOÏa¯üôº jƒŸ†‹g¡âIœlîŸÄ˜°ý8¤8)@ŸéØö⻸áV$mEµ£›ëÌËNÏ\"5¾~Ø`òÅE¥„Íd73 EaËR˜uÛÒ'Gʸˆ{ó*©ú© óù©â­.y¾¥ö/U¶€N— 6ß` 4q)·Ê ÿ:l4'ºnþ%“Ï¿ŒÑbÜQ×´®ÉjéÛx|I²˜C¢ ¡íã®ú³jäšYdIJLÚ:LŠè•Y1“ä¤ÝbÜT^÷U§'@OšàE¨®¼Ad9Øñm±xÊì°yÙ?üÁÞÕ~„L>{¡&¼¢mãÎPÅ¥WÅÌ5Ö­?ꡈdWÝ“,€ðÅé“€1nüx‹ÓëW¶;ke~̵jïÑm-Åñš9q7pü ²ã¸=ª ìBå*5›&Ë3ÂtZßë[‰ü¥²£œƒW á}|ºÞhò{ž¤³_z?¾\ «W⺧ñé#0àŒ"KFcÞs°o¦M¸dUoad¬Â¥‰øå 4Z1æ~Ì{ = ŸoB é>Ì¿G_Ç·ÇÀËÁ5ZÍ~¬b×,Ĥ¿ ¹_߃²xÈ.d×쯼áWAPÆ,L¾ v Nj‘1{Ë@×F½Í‹þ¦Å`Ë3ÝN? ·¼%j_Çž£$Ë þ-”¼ˆë^E©ñõøò³Ñ˜§ñè› Ldxh¬JÐÔ¡ˆàƒîh6ô›Ë•Ågd«h`œí5u½cIEbÖ5_¯"Ü-%冾FI4ic¤âèµ€ÖŸ<©í’$„!B.Ë©µ4”Óê¤"©€‡GwòXsØ„ØÐ´I3cÛÊŸ¨n³(,›Uì ÇÒ7üô+öþÌžÊCÖã¸,û_FY$“pÍ]}¬yoÚ£‘jœä!1 "!„Ы!ÑÃêÏI¬Y~®{iñ”§qÅù€$,¿h-Ößé‹Xí*TÎ_iÃî@:ÓDÕ­£°ËR^Š¿GÎù¡IÙØu|ƒ5°†D‹Û7Ôo©¦X] òëRdá{«1!"Ícüïs›0v—‡^?V*=f²2€Û¶yM­P©¼êFEýú¦CzíòžZhÏ&뻡qÞ>l-³ TAÓ»ÎB!y´yw¥XS£îÐ~TÄæ…ˆù=¯¹C—È* R,s#~Zï;™ÙXÝ“v9’=Øøº-íx‰o`b6Ÿð¯8 ÙhØžÇ÷Û€Xô~ýà%á‚©(^“px Æ=„P”t/]†ê§±c€'ƒ'àQŠÝ*?šIH$ ,0iauê…6Ðlýhf//H¨xøz54™˜—‚o³ ©r\u÷=D\«®Ä¾U(mï“â­Æ†e©U€‚¸> >í['#•e\0´À£ABì0:Á½Œ»³ÉˆpUXœJäÒ¨€¾Yßÿ&G¥¤ùþk£šëû:©â¨äT` 'viî¿°œ§ŠOîZÀH1±€°¸I éž¯æ Í Iß,ãh>²Ý¦ËÎËI ÕdNÒÄ77Ú耭bµoøíWlý™5U8Ó pl%öžk-¼½ûs0½7Ú Hˆ†8 ÒRèR‘G"¼õÝk³¼pšÁ³€¬ö^Á)rþì#ظ4ÀxÑoF-ºÿ} | &¼Œ0Ù(¸ÎìåÕÿ„¶0a"šwÂfCÓŽ-åÉÃ(ä;Äè €CS…u¯ÁN£ÆŠì瑞€¦2ÀïxÅÚ낪 RóaÙ2’¯[Œ¿¬„T©±Ó1î~¤¦á¿ÿÆÀ'*êPx[YÙ ƒ»ÎdlBæséäú}¥_˜¨^–Ðv©KX"m渋"äJÜ^: !…_>1ç4<´G«“Çþ£ ûe~é%F³oO|õÔq·+O9ÃLKÍñ{˺n¢àòeÓÌ.(˜2&)×TO‹›8¸/PhO­¾+RX¿­^»-'ÿ¹Ä„Âêß÷yŸ`,V«e¸VX³?Y—† ÄTrø?M. ¨+¯JÔäω‘|Sa( Ð[Õ¾«º«?1V… ¾°«Q^T’rÕÍõZÄoHHX)€al&ƒ (šqY<¦~±ñì²¾ÂB»­½ÜÂ0î«{cO©RݸD­9-θ~\¿«Í—̸ì‡+½4Æã))vºM÷¹e†,Q©CËBŒ u;1H­ˆÈêÐѽØßÛ„v4™ OøûŽ l9¶ï  kçƒéNdALxz©T*NO€ÒŽ_ÿµÞŸU~4;Qô&"Wbñ44lÁñïPSè÷\vÍì僆/a¡ ¦`úm¨½€ è6êF5×þ ‡ÅþŠiXZai…î$š-X´iߣT´,cŸDðù}°&ãÊpC>{Op ãÒ5›¡R„ÇǹU"ÀÔ¬sõ×i8¶ã°oAíé7uÄtûµ6ô¼‰ âÐØHI}m_÷öšý›iELznjxúùcM[¶º†ryD‚î÷\B æðº{hŒÇØplwKmì˜ ã±ã&Z »*{G‰±YÅZâ¡û†ß~ÅÞŸYSUS!Ñ¡¤bp£‚êí,xÑ¡EN:Ô2X·¢FЬ hNƒ=°5^L8= ­0·&Â`÷;¾)LÆŠo¸; ¿¼tœë ÿf!ÆÍ…öcœúR2òºòÇ(ä;Äè €qaÛè hòê`¤]ÛÓø¯X{]Pµ!B¸ Öš}ÝòB×=QöÊîÆuó‘þ9Ž·¸’†±ühˆx£4 ê:¡‘ÉÏdñ7í?ù…‘ês›Ñžz;#SF, •í*®k¢Aˆ%©"è,ž@<'iX¢0׺ÚzбùÙcòÆ%Í«;º®kvqýtèÈÞžydÆëq{F#_6Í~*G~y_Œ”ç¤tÿ”øŸ9‰}õÝûÚ;Fs€·Jk¶%*„„ÿ'Õð¬Žf?VÑ@Ÿ4vGh0ÞV7#ò|«`¼êTÇ+HØÝ½£©šæw×Û\éê‡?YÆeëyÍê½|ƒ6™¾yßÊë錫×:CÑn †² ²"{‰ü”—ˆÑxBŒÚÖ3]Ñ{ä%xðͨl£(±°ÂÙ]^ž ‚QzÙô«Ù¼ŸîCü%È¿óæ¡m¾ü®:;»föò‚†»ûIãê¥àËn¤¸zŽ>†ýå~®´ž„ƒD¨Ð++ÌÇÔ<ì_ŠNP†ï^ÅâUÈûj$Á©ý`œ-V(dÑY ,͇r9ìC½3”Ã¬ÕžÐÆLŒReÑ´lí#O»m£Õd²’3Ç*ãä¼ÖN/ã2[ÂCöÁ. »>5QýJ"½cl„®¼âó~~3P•­F®£«Ýh¦"B™û} ßf ©D$…Wç»–±ZíFðÕ‚¯ÅîtiíÎî.ç”L¾ìšYñŸßvdéö®ÅO5º{óã;ŽÜ{¤³s”Ï’Qa²¸ëú?S¹L–ØoªrxV G³YF§3´Câó4 ¾tBZŒ®á?\D’Ü ¾µÚê‹¥b¨¶z/F#R‚¡Š Å‚ þeÙ i«Éc2vÿ3y#{-íW¢a¥ö‡Ò¢Õ†”K!Ø> tÇ$¨»úðã)‚¶<ï-YÀ^‹™cOu”b d˜|mV¢™q á[lº ÿýšë#í8á¡Ã³™½¼§¯ž!Çô‡`ùûËü_+I…Ä‹NÃ(È #!d`é~þ9ëaäòá ´½­ÕŽ®Ç¤­µ}‹òW[I©ž?*73lÐO¥¤H*@û>EzMM ,-QÁÀW%§*w{s×ΤDrʳ$x<ŒÇCòÀ>ô+öþD€nÐ….<„GÃÝ×hÎp …Ä õ$¡ë» IÙÆÐV‡‰Àèµ ›Òsç(Cseîviä½cäÖæ²-§ÞÓ 2DÀãƒó’ åB’f¼^¯À˜Œ†FÄ/k«èlåɿމŽtëv´‹B0ùúƒE–¡ =/¼¤ÔÃ0´·Ãîl pxeµJ¤Œ»?G;¬MnD©£—¤Š;K÷ôup²Ø—¦ÇÇ9[ÜQWÑ}àǪ‘kö'ë¶´®íˆz(7ýFoÝ6»  3­jÿK›;ÀIð¤‚P…Ç-ç\•KZ¾+rv{’LÇ!]Õ¸è9óÝ?m7ëh~D‚|L”cÛ–SSÀŒÃ©µó2§(˶ZmBQŒš®-q8˜€dO,%ò›Ê† E«‘º×ÐØ· >"2aÝì[¶¬ÿuó1k~üV&®‚´‡ºJD Hhиº'• ª»ö`î£0¼„²:H“1 ­o¢¢LE0ÿ …w€8‚´›¡n3vÐ*¶UìšyI¸l!~¶N@“ ˜Ðï^"¼ •Ÿ-A[¯8-vÍìåe'˜z¦"E#mˆHïþ‰†¥/ˆÆaÆ$Tì@{'ã1ãè7¢Ö4 ²ŽRè LîO`bì=›QYXõmÓjé)bÀѦlXÏ™:=Ãw¿z;Oì/Ñ÷¿Uh{ãñªä Óe‰y)u;+̧”„Äç§‚T¡–úzß®w]Y¹>*7,£pF¤Þ%ƒê(-÷é%¥ñc§Ä ¼v“Éæ&¤aa!<8«užaZ5Øû{fOíÜ ç\\¸j½QP*…¾ÔÓ×Û=mpJ!)E§ Þz4»É‡~à~2rHðÚáé]‘4:Ê ½¹[Q­GX<ûÐ2Š›! 6æø/¯'¾ÄÄ{0(z±Oì\ u5X¾þ >ß¡ªA€Ð˜ˆš…™³QùhëþNË>^±÷º ¬r¡úr¦@ñÉ`K¨ ˆä ˆÅ x)!ñ€¶£k®ŽŸ™óÐt#1íFX~@•nLÈpd$¡õ¿£èŒÁŽDáñEÜp~Þ =¿Ùßß~ìK;€ñZV•Sy‰ž'¦Ý%MU«J æS¬0♞³è$Ï]  ¬øàÊx,Í=DÞ“ó÷i (mgÛKEõG›± &_v‚‘ F3åq;¤1‹ÆÅ‡’pØÍ»KKÖÔ™ûíƒAyu.„Zæá¼-£Ù,ãÞzä„xLÊÍçåßBP-Úg÷6>ç,Hº%mª7}·VWÑkpe¬–×…³"æÞΧ(c«­ô«Oˆ„ǹç+tvÄ‚e‘p¹ë·×.{Ú`)‘ßTVŒßa…7âò¹ (˜J±{³/‰îÀ¡p9®þ< m;°þ­Áƽ‹‹Ý»X÷¥oþ PÙA¡Qù"~¾SCÎÔmE{w¼¬ýн?³§ºá‡ÏqÙ ˜ëFËÏXÿ-æ¾ðp ðwÓÛ½°Ž"¸À‰Šdªa觘ø2&⇣}R´«±[…)/áBÀp[÷NMŸÊwà˜Hy-;Q;«p²q-è'ß6ß! $¸ô-ð´âøÿaﮞøöñÊÏŒU š7Âþ·Í6Ù T¸ª×y×­€ÖðÅV`¬ðDaÊ£ àÑ¢ò=ìùz5‚ ½Qfl<pppœ;ð²¦ß=G"^Óoƒ?ZyϲY¸oâ%gÛŽ cÖz,¸øl›1"ŸÂò§! ^ÇÙãwrqüÖá!ë)Ü¿c¢O‹zùt,ûó/õ}øÁ«àààà8]¨oÂ$)J~…¾Ò1˜v7l›ÑüÆ®$¸ûˆã\„Bùˈø'.}ÑàÈvèG%V‡„,ió0u. Ÿã§m£¼’›s988ÎiÌG`[ˆ™W D O;ª?Çëè»ç6Ñ«p÷±ÖÍøøeœ£§> Qø6&ô=p¶Mâ&¿ãûˆã7 cÆîÑ|5λ ·,Å·7£&è­K¹¸éŸð–ãà“8¼¯Ïç£Ä™\ÔÊÁÁÁÁ€€$Â^3´–€÷Š:óÖŠ# êm­ãÙ¶ŠƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒãëÌÁÁÁÁqz Äšôt¸Ïƒ†¶·TTëÜ ‘:-=Zhk(¯5z@ JÍŒ—8}É „©1Ò>ûJy5e §6‡& M\T˜”ïµu¶6·[‚ÝŸƒƒƒÃ?vØ x’ Rb/ MˆAë kŽÕýÒë($lQ^✱„v—45¼^ÚÑÔ÷èâeÔƒ“§PÍ÷îl¨ë»#Á—^š•|s¬BÍ£;:µomØðÑÁäëÿ²¼EÓÆÞÀÔ/ÛÕÒ2œÑy(Í„(ò•žS·Õ” ëèÁ¬ F3»¬(4ùƒ©Qª¾"uÇo?iÕszµL,;Ab8jhzñí(ÁËZ˜2CßôþŽsi[õRÜ|½ïÿ?Ý„2CPÚF /·¾â¥¾Ã8Ϋ†eóéEŒYk‘-ëùÁ³ ï? 71Ò¯ÃØ‹ ‰…€€­{^Fi“ï2"SƘ|H…`,hÜŠ«¡wö¨¹, rnÇ䙋`9Ší/ ¦ëH0.^ƒ¼^w>uïý5 Ó¹¡*>)±ßÉè{mÎÍ€ªâ“C ruìª²Ò xŠØäD¥ÅÖ• BŸœ(ë#K‰Z+|®3)K:Z^¤oóôÔÌŒÖâ݇í£½ Õéù¯Ù~ù÷3Æ=¸ßÞ? ›r×òIåïþû—¶~Où%_´ü¾0â’o†½ÎU<îù²#«E‹¢.ø¤íÌ4Þ(äËVWþáG]ö×÷_{`^¦^ãñÏ)x°hZGuÑ=Oýå®k/Œ?tMìe›L@„d^·ò‰{nšu~†&„pµìýøñÅ÷Tî8%$Jºæ™÷^¼ëÒ™³q×ê'îX¹¶Ìîs)B.\SµùjÇÁï?yåé—6ž´p÷0Øi‚i®ØµõdÙ¿­HU ó“ï,Ýãó̾bIAæWós»Ú[ÄË'¤½ÀóÜyÌè;pŽÏÈN»3AÜa¥;•œ?>'gyhç+EÕ•¤òæñ)k]| Ó€'\¾¬$K&%§Ý ël-¿šúpYņîžÈP®†áuÊ¡­ Fóв[Û¿›%§&ñe¹ J›gXÞþ!Ä’ü©¡Õ•Æ7¯Ä‚n-Þ[~&n~òl›rÎ[uÖi ›vûÎÐb\>O””!6eïbk=…‚G1ëq´®@×´,Xàû50[ ÏÇ̇q…k?´,$܇‹3ñóJ´ 1ù1Ì}þvpa÷]Ø×=ˆÅ?‚™—‘¶Tíú¹ŽäÉÓ/(HÛ*÷ì­³Ó´ÇÝg@R¤eª· åŠ;ëŠöTöŒHnßaÚ!‰ãr#Œ¹æà‘:‡<å¼ IÑcócuEnˆÝ‘m?Kt 6ÀSM¹û¯Ë¿ùê®s8?5^ý?dÒ+‡¿N;ƒ…|ÙêÊ‚Ô{¾ÚôgÑ[‹§\¹W'ŒI ©­¹'"dì_ízeZÝÇ»}êÿ¶w¿ÌðTc ãj×>tÅ]%mDòO~úï5ŸWüzþK• …/lßp§öŸ7ä¿_û§w7|¼3D—½ø‡Nl;nÏÌxïÊ{ž~å%7ÿçê ïùªe¤ÿ­3Àu¦œïï>}ÜÑöiCÔôdi8‰ ?Obûp_c‘U·ÇGlÂ%•¦¯ì ‚/Éâ›ßÚ]V£Îy+a@^¤0WÅk¨kÞerQp}Ñ3=F"'€ë\¾ìªÈ¢H–›¨Œáøåh¦uFS±a„/q¬V£yHYÚc?¤=õnL„Eg,§;_ku ×™#0.ð­`Î%÷áÜ´ê¬CYaÕ÷ÿ‘Öaû«Ý´£è[d\‹Ïýe 8ö/ѲǯÁ”xðàsƒ‘qÙÐ…ÊJÐÀ‘1bì^p›zæ˜n ãl.ÆëvyA ½4Æër9ÇA̘¤ŠŽ¡Žª§½.ç)2$.YEÀYs´Lk¦`.=¦Ž™‘-m®±qc#ÂSûÉ]Wr&s¤ìvƒƒ:³#CðùQWdäE·L4}rÑÿ-²¨­­R‘á—½ñÓ+wÜ>vÁ•}N»ñ6ýoŲÿùþ¨ÿÏ“oÝwÃÊü*=x1×>{Oâ‘U3ÿþu•¥Ÿn8ùä¿ýsÑÓ[þUÕõbà5×ýúɪ˶üúÞþ/¿X_’sÑk•§ý;ó¹ûHŠÎÓˆíz}÷¼#/=Zγtìu0¡ŽMšíj¯bB Ã]‘ŒÛðöцjð‹v—™é¤M:àI £…Í­†À¾“—/+þe ñì¼xµ¶úãÎáí«ˆU<’diRþç‹ >;_50$ÝŸU#×ìOÖw$bE®üÈñÚ}ÝC¾ƒ©eå¬?¥>°*ãŽ#ú+W\tCòòU>”|í…!²áœÉ&+ ¹ò¡ôkÒøyšîIpUƃKT¡(çkÔK–G§Äª®¾7ýÎk•*•böé+–¨£úž@,¼DþË˰‹qõ‡¸ÿGÜ¿ ‹žGjx¯"%ã’—±üGÜÿ-n|Q²a(f—M| ÷ýdI¸¸ëš1¡÷ù¨bdÝ…Û¾Äý?bñ?‘ÞW5É‹°hîÿËß„|8 è§D½4ß?À*Q.{Ýgí½ëpIÁpVp°ÛøƒÖ¥Ý´4#má'U.ç‰&÷´2æ–W7WY†qÔn~îò˜ÞóLdèù÷}²¿ÙÉ0 ÃØ[½7_à 4„$ýÆW¶ÔX™nvßÑ«èÂøyÿØTj<•zü¡TA`V ‰ cU‰cß’¢ÜT1†µ3ä€0ëñâòWΓ€ì¢O»3,ÿköHY'å¹KÞýµÕÍпþëŠèÑ:lmÈòÊ/ú ©ù¿|qÏ¥W~e4}suéO68ØëJ~ÉÏ/WÅu×Fûî—/ïWüиP¦£ªcû–]úî®Ã0îÖ¯(P c•ŒÿóÛ‹…Ÿ-Z²º’õ”Haâì+SÍÛ7žô̓)&Þ0™죯ê<?á–×–µ¾È;öú "úæímýzÅõ¯4Oyúù¹£}¬õo¶àe§g.‘ß9i0ùâ"‰RÂf±›¢°e)̺“mÇœ— eæ=TRõûüÔŒû'f]l©ýG•- ¿+Ø|ƒÐÄ¥Ü*3¼Uf•ã!ûêæ_2ùüMs >-̺#^&ðÜàñ%ÉbB.—(ú7“?«F®Ù¿,’+Æ%§¶U½Ýî üu…àE¨®¼!L\ÝñíFG|ؼ‹¤§†B&Ÿ½P“dêÜøŸÚ¾4ó'ÄÌÍølÉ®º?ãþ;Ôá¤`ÒâôWe<¸*}ÉL1?ÙîK”ù1×^À«ßÖò}ñ0^€¾pü içq;™váœP¢Ôl “g„õD¬°”È_*;Ê9¸q<ßãÓÛðÑØ·¯çQRÙ¯ I‡/—bÍJtd⺧¡ 졈,yÏ!ä06=‡>am$2VáÒó±ÿ |xN 1ï1ô¸)’îÃüëÑð>¹ÿ}¯bðg»f!&ýÉF|}>¸ ^Aƒ.ðöeÕ쯼áW!¾L¾ 〓ZdL÷EfÓF½Í‹þ¦Å`û;è‚ÀÏÂmßâþM¸atï`ωQ’ePÿJx¸îUÌü²ë±é3œ™JæšF;øQÙÉŠÁ½^qDJVvY)ê®%‡„0DÀe9Õf”Óê‘T˜Nˆrîù’lÎûë¿VßO¬û°6㆙>WŒ³à“Ý«çÔ={YFÒ˜«ÖHîûßgKOµ xÜë_¿¼ýåy9‰ñ)9-yyK“«§šÙSùñ·|¶Ýâ¿‹ ²R³ Wlë3ŸNªç¾½÷ÛUÑ›˜>&9eü-Ÿuöî“ìV G{¬Ê71AÌÓL›ŒÐ×dK ŠŸ Öjt€uÏ)êȸ þY=H“‡ÎÿÎȸ«^Îå'?~´ë}À]óï)½ØùÉKÿ·õé¤m^}õ£EY|ðôäÑè,åµì}í½êäe÷È»MH¸îϳŸ¿¸YGUW~a­«µ±oÌC<5©»®ÄãÿyÒé:ñd:?ûŸen†aû¡G³ºŸ üø[Öí~nÓs—e&¦>zxÒ¿v|wF O Å´‡—%•¿úôO:¶‡2¡œúäÆÒ\qÿ¦Ž®ë„šÜ$¡©äX‡¼èk_yÄõôýïmk!âÆÆôÏ™±xå©]’+œ«ùÃûÎCö$2)9óIÔ‹*·ö ½¤”„ËCQbV¼´®t“—À@Ä'œ- )w“Ý㔈Ƈñ µî€CÒ‚ÍwÄðÄ÷dËN”ïu!iT53ÃëE'•<žJ*Í‹Ò\™—7EyrE‰ÉÒ«N<Öæ•;án[]ß[”ݪ`4" É)é·ŠuO4š‡5/ˆ·o¨ßRM1°ºä×¥ÈÂöV"bBDšÇøß-æ6/`0ì.½~¬TzÌde·móšZ¡RyÕŠúõM‡ô Úåížc•õ]‚Ð8ï¶–Yª é¸@ &„BòhóîJ±¦ FÝ¡ý¨ˆ)Ì ó øâSYJä?•) –À¹?­÷Ìl¬îI »Él| ÍvØñ<ßÀÄ,l>á_q@²Ñ°=ï·±èýbÄKÂSQ¼'+àðŒ{ ¡(é^2.º ÕOcÇ0O†À÷:`·Êf ( LZXݰj¡ ¸?²kf//H¨xøz54™˜—‚o³ ©r\u÷=D\«®Ä¾U(mï“â­Æ†e©U€‚¸> >í['#•e\0´À£ABìà>S‘X”¹¦º#v¼:%+ºz°! O õýßA´Öu8€ 4ÝÄÐ ’DÏ ÊÚüŠLþæ>öåùç?¾aܱ[²ž£^\|U˜´Ë{åÞ÷ÜÕÖ×Ï_±ú ¨|éñÿ­Øºt¦æƒš)àÉÔ2¸ôM55MN¦©öäþ>šÙRå<ùÊ|û[Ó¯þë.34ou1‰§REy¾±Dþ嵨ØNbU“ÎíIe·ŠgÃ!­jVŠ\u¹¦èÓããç\‘&Óå$9NTù†IU¯³ #lƒÍ,˜·,—ªH¾ýÛ_m¹|æKen€ñ˜Z½¯IžÚtó¸›Ö5z!ÕÏ^¹kbŽŠ·Çlb-¯ë䝸óó+/{tçú¢ì¥Ÿßðî²ýÖ`ëÊ/lu5Xmì—®$µÓ\%/ÌÊþhìÊÍßÎZ;sÞê¼ ];DQÎ=ÿ˜çZsÉoí4øø…y³>ñçÉï-ÙÀâx阫g(ë?þ¶†e>’É{àËVXžšqóÇ ÝOPR¬ÃÞi£Èˆ9Ïÿ]ñêÜõͲl7$Jñ@ÿ˜Ònûì8ÿ¥kòe·Žþdâo‰Á]g26!ó¹trý¾Ò/L½ch; T„%,‘¶?sÜEr%n/ÐS’_>1ç4<´G«“Çþ£ ûe~é%Ýî!¾zê¸Û•§FN¦¥æø½e]ÓÒÁå˦™]P0eLR®©þž7=Œà¾À =µú®~ý¶zí¶œüç «O|ßç}‚±X­–áZ5bÍÉ dѧ ¶h86ÜÞªö]Õ]ý‰±ê(dð}óC/*I¹êæ‡z-â7 $$¬À06“ÇAP͸,S¿ØxvY_a¡ÝÖ^na÷Õ½±¿'ä–T©n\¢îùšÊ¸~\¿«Í—̸ì‡+½4Æã))vºM÷¹e†,Q©CËBŒ u;1HˆÈêÐÑsîmB» šL'àç @€²åؾ4€f¬¦;A’0áuLè¥R©:@>J;~9ˆÏ2<«ühv¢èMD®ÄâihØ‚ãß¡¦Æ_=t¼`Ðð%,ÔL?£ÍµÝFݨæàÚ?áУØ_1 ÍK+,­ÐD³‹#í{”ꃖåcì“(>¿Öd\ùnÁgoàL¬¹£]­eµYêTuVÊ`ÉÎúý{«|_@hO×$-C¹¼"A·£LÄ|^w€á«´ió«_5yéñ”½fõ»,t¾‡B÷œ³zò¥Iˆè€ý¡êÔ>º/[Ñ“Ë?˜¸æóšëžùù£÷ß}çýoŽê{b[ØR%™WÍŠhúüÃN;.ŸbþáŽÍíƒõV±àn=ZG-=/s‚jLÓ§K¿Q\wË¥i;ƫ۶6:áÚ®­«éäé\”ÛÐT[Sãx s`ÕŸ7z»Óâdø"~ðóZ~Êë­ÿâÅŸŸ_÷Èu _½]')xàÎøýû°Ìt]O¿Ú€H&$ã64ÕÚU7åêl¨­©é=ÄÊÜéỈo‹»}RGÅχì+ÏŸ-ØUå÷aKHr£Ð|´Ù5ä%¢Œ;þ·ý)á Ïþ¿½fÃh§Ù ‘L>ãÙR>¸úö:/¿ R§yE  ô56IjªŠóz±à ®3™üLÓþ“_ûB´§ÞÎÈ”KBe»ŠëšhbIª:‹''J–°(̵n‡¶žb`l~ö˜üƒqIóꎮëzíe\?:²·g™ñzÜžÑÈ—M³ŸÊ‘_Å#åÃ9§ôÄÿÌItè«ïÞ×Þ1šOo•ÖlKT$ ÿOªáY5ÍXE ²ã⌵Oé‡ù €ñ:¨S£–XAÂîî½UÓüîz›k˜J“e\¶ž×¬ÞKÕh“é›÷­¼ž¾Á¸z&«ÁP´›€¡,ƒ °—ÈOyYèú"=ܽbF ÚÖ3ÙÌô²—àÁ77¢v°±°ÂÙ]^ž ‚QzÙô«Ù¼ŸîCü%È¿óæ¡m¾ü®z'»föò‚†»Û3vuꈴW/ÃÑǰ¿Üϕ֓pUú`e…ù˜š‡ýKÑéÊðÝ«X¼ y_aè–m(SMYGòxõ s9´Ça·÷»w—ÙâB¦&'"e¨p™¬~ï Ýf³›ðôýÜ€ëûË5ó¾|Ã5wݺÛÇnzî’E÷ÜwÏ_7ÜõƒÏ̘ù·½¾ÈF¶T~XRô _~„$<¬×ä?,) Æ}÷óIªán öºÃá…_¥²ýòÊ¡b›Ÿ¼ñÊBP¥ï˜F§ëR–ŽS{mÞ“ÑOyéö_øÜ°íÁÅYkÞÌ~tøÇ?mhô({Zé_Äiÿ>€ I`è…Ø¼È+ÞúùEõ—^òûû¾¶¹ÛNÔºUnxaÒÄ/n~ Ü 2"{¼ÇZ݃çC€¦þð ¾<ÞAèc#t埾¼S•­F®£«Ýh¦"B™û} c!•ˆ¤ðê|×2V«Ý¾ZÐãµØ.­ÝÙýÏ¥óœj`òe×ÌŠ×øü¶#K·wý+~ªÑÍØ›ßqäÞ#£ÜoȨ0YÜuýø„\&Kì7U9<«†£9Y¾|V8YÝdÔU"InßZmõ=@ª­ÞËQĈ‡”`h†"HñÀàödÙ i«Éc2vÿ3y#›“èW¢a¥ö‡Ò¢Õ†”K1Ȳ)ºã@ÔÝ¡„üxDŠ -À{ F°—Ã"@æ˜ÁSÝF@¥&߇@ÛßUhfhø›îÂ?‚æzÄHû_ N@xèðlf/ïé«gÈ1ý!X>Àþ2ÿ×JR!ñ¢Ó0 ²ÂHXºßœõ°r¹=£ãl-«s CÀkjêðai‰ ¾*9U¸Û›Í£0«Huø¥^4eáa,C$m­ÚüÖCóó¢Æÿµz⪿*I¥,mÄäÅŠ€§¹â…7f‹Dwj»šÜd€ þ×·o ¦UCàn>\Oæ-¼Nq`s­¹jÓOùwÞ’Øv°!€Ig_y¼N) 9ƒoôþËk)zí½šô;ZpûŸgZ×½¸¥ç±L]%Ó‰uDÞ㺿K2gO”êöï$ÈŒ£©\‡˜Ê"ì²WWßÜôçÏîø¹Ã|ðó"zìÝl^þÒ1À›·t"ŽmØÝ1ÈxÅWç¤J-U•†?ú¾Z\g±B=Iè:n$)CÒºþ)$JßeŒ^Û°É¥24W&JŒŒ{dŒÜÚܰ¥gJ’  ”BœG) ”B~H·¬Éhh„|ÙØØóâ8UÄmyÑ‘nãnk O“`òõ‹,C}nÚÛaw¶¹ÛʃÕ*‘2nU^ÜeQ¡9a¡—df>“.îhlÜÓ×ÁÈb_šž÷Ö´Ä>ÛÏù³jäšå Ť·uD[ú<© TÁWFɦ^“KZv9»=I¦ã®ŠÏ™ž)PFHR'D^1W.ë5è1§ÖÎËœ¢ŒUñC5!cr%ÝûKû—=m°”Èo*6­†p6®¹)yˆ¼{¶wЋ:f­@l,”™¸ðQHKqh «D@¤€D Q¯¡4PÙÁ j±k2Åä(£]€ ÿ†Œn«LE0 PxÒ/Áì×Ü:Ä2Áá[Å®™—„¹O ·1EC“ ˜Ðï^"¼‡[þ Mß§ »föò²L= S‘¢@S"ÒÙõ/’îÙXÑ8̾)™E æR\qôQkYG)ô¦?€äT¨²1íÈͨ¬ÈfILÎyçŸ^nŒ€4aìyçŸ?!{°Í4(SMyç0æ@=º²r= YFáŒÂ©…3.H‘€ê(-×Êgdç±WÙHÜôég?.%9gêüå¯m\}CŒo¸å>ò¿/ž_vÅ´ü´¸ØÔüIyjèªÚ»çèXSí%_üØqëëÿ·ôú%O}hýåÚr#VøfžÝ5›¾ªÍyùå{üéñÿîûúŠêz:P«XalµÅŠ4åÉoOÚa/Ù°Ó"¬*èü0µ:"LÖoš‚ê8²¯CsÃã·¦%¤¿ìÖÛ.ˆU/š("ÔjuDh¯Ixÿåu–¼ÿ¯ƒêÅkžPóözonh] –oÀ6QW#ÄUòÖß¿Þúñ»w_˜Ÿ2iÑ«Ÿ> Ùûìóû;Ì^òån[Òü9Iƒ#ÛáõÛk#Æž×͸Lµo<¤Z6>þï:DNš{á˜äÜy]ûÚ†µT3ˆÇνì¦\çžÿÖ¿G‰Âã‹ ¹áü¼z~³¿¿ýØ—v㵬.*§òÿ<=NL»KšªV•N½Åˆgz΢“S)voö%Ñøá!.ÇÕ€G¡mÖ¿…A¦³I\ô..tïbÝ—¾ùÎ@e…F勸ùvLy "8[P·íÝñòT ¾ónÃÜT¬ÃÆãXpÞ`J†oUÍ%¸q<Ý©´Z;Æ­@XÀRŠmO¢ßÙ´:¤õè»çÇfÖòú©ª ê™Lz“zý¸k±ïŒCÊ "—]! O+ÊßÁžï{Öù#KÕá«§0c1®x`*ÆO+Ñô’(¢b¢º?!Q!€ÅP^Þ6 ¦†q´–ÖgMKô{m«Û¿‡ÉÉMU…K(§¾¡üxIÃh…fS­ë]pë o?ýÙ‘§$îΪý?®}íp·£ém;°ÏüøŠwïÎŽpØ z€IDAT–óàhÜûÙ½óÿr°{Μ=Õ¼ã‘ÿ™òécïálܽú¶éoEqôá¼!œÅÏ.X•³þÙ7>Ÿüóg.Ÿ¹ç†}³¦ÚN Ãj;ÎÆC @Ç7‡L `=òùnçMñƒM:óRÝÝô(ÌŸ]{Ó¶ÞÍoß÷ø5jÞzgåk0Uüô﻾Õ1–wÞ¿Ohÿ 0u«5Þ@Ëë­ÿâÅŸ^üü²Ã/¯)ë{ÛXWƒæ¨ÍCÕÕñ6~rã4áKoýý§ò7EÞ¶ƒŸ=táŠ7*ÜB™1ìxåÓ¶?~É{‹Ô÷sHI¨™O|¿ÿ‰žßN<œ6á•jƼçÑ×xÞ{éó q6í^}ëô•ß²O¡œºê‰Ië.ÙÜWgŽñís|úwº"˜|ýâ_–²hÚØ˜úe»ZZ†³Ât(Í„(ò•žS·Õ” ë|ËÁ¬ F³_Ù`Z0(±xì‰á¨¡á\Ù¨‰—µ0e†¾éýçÒ¶ꥸùzßÿº e† ´^*n}ÅK}‡qœ#V ËæÓ‹³Ö"»×~½ž]xÿY¸ˆ‘~Æ^M,l¥Øó2J›|—¡˜ú0ÆäC*cAãVìX ½³GíÈeHs;&Ï„\ËQl5.^ƒÜ×Xdg`Õí±Æß›pI¥é+;€àK²øæ·v—Õ¨sÞJ)ÌUñêšw™\\_4ÆL‘È àx—/»êd²¨R…å&*c8~yšiÑTlaw`µ*ÍCËŽ¼9ÎŒ øV0çR£œ›Vu(+¬úþ?Ò:lµûv}‹Œk"𹿌Ǿñ%Z¶âø5˜|îo0²à#.ú¯PY 8ð#2f@ÌƒÝ nSϳÃ=‚³´1c’*:úFO†Ä%«8kŽ–iÍÌ¥ÇÔ1Sâ#R¢¥Í56Úc5€¤¢(”Ãd4ôúþ ÆëvyA ½4Æër9{´Nˆc²“$€­b_q­™àh0w ¨lËé<—¾ývaL%mß”œÑ,½NÊ ÚåÅUÎV¾pZ! ™±@­ihû䓱Ïy)Œµ¼}s¹ïóÑÎcäç©y< çNõz´ ö–AoBš67›wýÏÞrYÂü+c:?hVˆŸ‘ó‹‚Ö×Þ°:¯^_÷ÎÁÏ+•„¢ìóÌõo¬tùGœ3ò’q"@Kóë¯5· ½ÂuI±sæ%ŽÏкkZ¿ú°é }x<¤ÁÊ«ÏN]x¹yçÒòõ þŒLÑçÝ”&|Vöñ~I9üº JW€Ê+ßjŠ:Ë[ÝúÕGå“&%ŸzbL¦E;\{74¬Þâ -$2„VÐéÇÌI™9ɧGrzjö4}±ÊnëÞèDH™‘2^cûèó>~s_41Q£âäª5žÞW Z j‡AɾÒok6ggÏ:9ªäCû±r"‹šë¬›_¸ÐÜö·-­Ö®¸]ŽYè°:ÚDCÂ#•·¬ÏŸ‘2Ç¢Óá !îÍ·y÷/‹ ›e\é¶L¶•Ýw #©ðó !uÄÈk¢[ÿß–¶ö¼a×­=mÆñ§¡´ÙÚÖ”W½]eïsj”FkÊ3 L1"u½„`V¾fuÙÃmÁNÅš¤øó/3Ø~lüd›q漄';^ýÜÑ)/D[æ]™š¸¯þý:]q1g\qv[ù²í^0D_psFž ñºüë–CÿúÆå *ëÏ:vrÆEɾí«j¶e¥Îzé§ž"6ît¤%œdÜÅíÖ–‚„¦º®Ï µKU'v>—/¦òeÞ\‡/ŠÔÉ=_éb2óž&y\ÝÂô»¹ø!Þü ­!x9¡ÈŠé,xÇ V¬à´%Â,ጾý=‡ìŒ»÷òú=ty&¹·qÞ©lÿŸì@3žŸý&Ôjb•ºf='ÜG^9ÝD«‡è,,¡R«kVÞÄ Ð•rh 3nÆacOsù¾)¼6 4/ý*fgðÍþ/´cøÅ“ÄjÊþÆú]Ã$«Pñ»Ÿàâg(n%«‚Þa¸¼Îöƒ‡´#³ÒÆæÅl øzôQzÀmëv$—Ý fƒY/à ç)bL8[¬ªOFgŒ—WÃÁòæPO©TïÔ{$mJâ¹§G7­ªþ×^O§OÕ9n õTÑsöÕi#êZ¾úw{½G“wƈ“æsÔiWeޱ·}ûVÍ!›1wÄü€a›úÉQ:<òq‹aDT,¢¶@¯­ôXÒ4Ž}^€\óUÙ +…øéY—ô“Ö{b\ì9—<;š>Þ¨™4?ùÌÙöW¾†$*åõT·íh‹tœé‡®Yˆ)LÈõÙ–Wtù͇[W!ѧ¼gœhåK§@°ŒO¿lž¡ì몥¥>CV¼³³.*þçG¼&U[u“~–}Z¢ã»+4)†xCVJÏÍVyõ¦ã&ëZ¨®P2˜Š.LŠ+«_Q*>e‚)æ¢Å1ÈRSYû¶ÿ´ìª•x=®-ëSçÅçEÙ÷ÆÄ‘`P×YÌÍ+|0WzkÃþ•=]¯hq{%IÐN“e./^ïÒd+´bˆuÈ’§Êáu™ S´­ež¿ÂÍ÷°Ñ“n½k÷¶ïÝä«fÅÛú· {b5šx³ybZêù'Όݳx·5ÐÇõÚ«ïþ®-ÑÓQÞû ¦nU8šƒÊn  K76,¯ø¦TR°»³-ŒNÔ9j½€4-i´·í­oÚë}ÐÚºnoÜ%“ÌæV»žŽ¯—–écc/¸<¦bYÕæÝ>Ï«*Ûu q#|Ÿ¿Z[b#.F–Cwõzq{õºýÆÔ¢Œäƺ×7(s&FµþAÍÁKÆÛJ{Î!ÏËû¥sIÓšÇÈù;ÓÇðõ®àŠC’M§ã1>[™vš\NœÅ¶ÅìÙ°e)S#;ŽÝÍš‹Ò‡X³4ÑCð|Ô­ ¢YÄdB²a­ÃîÁ^G]È÷£ºfõò"¯á£×H-dÁH¾¸åFFYA ¯ü÷IrÁùl\BqC¯_)ËoÄOZE‹¹$åoö®“ÕUÜ´ÖàM%{"Žå cè¯Ô~°´1sjòÈ1饶 €,÷Äñ(²ˆ"=Ùá!ˆ" Kê/cÚÈÑ]ÿìª+BwÕz† =’ ×èP\6¯µÝçÃgmvõÖ¬’*fÌNåm{j 6Ùb{D“¦§Œ×ÛW,k8à£MQ’Rƒö“ƒ6ž»ÃhŽÕkÌ£´µ{Ü)#£ãôÖÄ¥ÉÕ'{$§G0y Ç Ò{k´¯¨ø¬Ø'#¸ò.KÓgXNAË+yvÿè:á¤øœ5ŽýÐè'o´m«÷O~]…Dïò^šª3NŸýäÙQÒ®ªo¶:=Àî†Ï“£®˜™¶½®Ú¼&ÕZôY‰³sä-ÿ®Û\+´{*†áÞ´IÑ# ÞâR¯Zw¡3L»0sª§ùV´ÛIWiý{ïhtmlŠ©`rüéWE§¼W¹²|ï¹£ÒÖ$&N÷ Çàÿ00°ë,ff>š/.ÛXüž5°²CF§c²šÞé–K¬/´µ¢ñœéãAå]ëëš,™}J[|Çî¶ö®ï<ã…³¦ÜÛݯ*5wÞZÒ9¨^¾jšÕu3ÇåN°VÜR㑇ÜÙ[ÖÒyðnËªŠºUã'?š“=§t×g½¼QÅf·Û†jÕak*«Þ‚AñhXÛõũ؛$ ´úÎF4i¹:,ñWܰì¢Mg±K (V¯S$YqÛ¼Ö>‘Õê²]…¥nUÃ^›´m,ÿû¦ž[1>þò…É©Ý#7ŠçÇU¬­ïJVÜŽ-û}²‚âõîÞæò(YîõÈ Z¢RG“FF4åß 4‰%4Êiôoà«¢ÁMj!â.‚ô)!Êîeõd š7ÎCñ'˜ÆÓþÆ´•±±Ð `™F¬ƒo· Ýß fUÍ.6·®äpWW°¿}ûí§,Ìš27zS…µ¿2Åå±z…¸xX&¾ó®³—’÷ðíŠM{ÞkëÝÉÞ ‡›´0.zí¶ò*Áhe Éæ evÅœ}u‚ûí5u’B[õ#;,¯LÉ]P¾ýíÎ/Åýåæ­ß÷Œ#+>¯Ç;ùªiR9–sÒ´FF¾:¿»»ÏùçügKé¯664gÈï@]{GNL¶^þ¦šUCÑ̪ -´|N©ûI4ƈ8<»¨J«_\Ö1ä-ŠB’UÜ=ŸY_å²ÕúñËvMϽ¡¸ £H²GÉ6@Ä™z‰‚”W@ê^1ÄÜÑ3ج½^>¾œ²¶E2¦‚—¿¼šhtÃô±TsûjÞÜHÖiL>— ¨›þ…;„[R]³zy‘ñø]wc¨qˆ˜‹¸ðF¶ß˦½A®´ïÁ) -áÊê'3k"›®§Ù %|ú ×-aâ‡lªžBIÖƒ%yS“^9Š»Ýæ%Æ”£¬.ClœÜV{¸ƒŽŠ»µÉI¬))+^ר8hw/¹ÇaÄëT{$É»÷‹òƒÍã¦ÆOž™1i¶kãÛUÿ©‘ƒ§Šb¬W{÷Hº`2 =ã¢kÄj0 BèV©àõ68ÅÌìhƒ×±¹®#Ú–X˜oBñì8¼Îº²G {Œy`TÊ«8:~(‘.™¿³-q†E{°nï! pÞGG«¼j ¨ãqØåí¼É- yfæsÛòwZêÔ‡+Ýîý‡ä)Ù³Û@‘m(ò1³Ð¼ßëMÐÅÝ4)©iï¾wÛúøKûkmŠ%u\SÙûí2IÉ)ù8Ö·„r#f“ÁŒ¯©ëZÅnw´¡MÖõx-—»Îáòÿ¹›zfÂÉW]³*¾¶ÇVm½~uçß¶yGõïÖl½uksó0·Ÿ˜–…§¼ï _°DGçôªšUCÑD6h †ŽÁ4¡@k/µwÅ~*R}…W““aTB‘Iºþ ÁeÕe»ÕkmóÿY}®ÃWèS¢!¥öEª£¶ƒ‘g`è_µ M;!—dÿ²6m)êö†à½…# ޽ØtŽ8ÕÓñÄ„hfÜF¨í̪P4+N*?aÅͼõ:©—aî{1›Ä¸¡Ù¬^Þ#WÏX˜{¶WØTüZÓ(L>š[‡AVŸ‚^ÁæÿNpUà‹eèÅ´Z\µ%å½Ã!}ÖªF/$ŒÎ‰ÑÚø¼Q1ài¨n{tO¶U”µƒ.sbarW?'êcbÃ={8@9Cꑼ­Ží+«ÿõlÅÚŒÓO4BIUäQÉÚÎjóèäSòzEvx0'u-4d%ž6A3T«Fò5X…¤qC­£Ýã9X&%Mޱt¸l!GîÚ{ÍVë6[­ñqlj=>W.ÙäpAöÈàvW[Imðß B|žQëtÕŽæfM*í.·9z|Æ@2á•×gó8Ñ&GìóRÎë[÷Q0¿Ðê²ÒElnÇ@¿h6Äéä¶Öcfwç~£ÎƘäôîºÜXš"7ÚVPZê*WäO˜7!ÚÓ`N¹uœÅ^]òM÷p¦ Fé4Z‹FÑ¢×ÅÊŠÏçëÅÚÖzˆ¬'evìk®ÕDŸ=.=ÅÓ´.¤À•pò †Š¬"·:»#ÍD³WQd_£ÃUbã©Zeˆq{6ÛíUÒ’ÓŽ26*^ßÛÁÕEg>97k„«öÎ5åûz¢‚XuøšƒÈ†Ó‚‚Ƭ‹‹ñzÌÆñ'¥MmŸnè^)¢4nn:0%}þyž/W·7ÉÚ¤l˸4çªÏm݆âtÕ94…3cKVÚ;ô†Œd¹l·Ó©„${ÄP)QÐT5:Øð£ñ3™«pjI*Äþu×ö-ŸP~g.æ‹afúÌÅlîï* b0ÉÈNºgC•©Œµë9ûZŸ¤¤s.gRû,ûš¬h¿Š97!leô$×àʰʆl•ºfM.g]Iå·ÔUâ‚Ô<°Òg‘&‡K_$¾‰w8a¨®Y½¼ê„SÏúQŒŒak=IùþŸdlt.$2Lá”Ø·††fb¦rÊM´¼O™udÅ´̽Ï¿iÓ3é,íì¯É摬÷6çNIìq_½M%{[Ò&$Ì9%¥ÅmLŒ3"5ïm åALãÆešE]Œ0gO:.Þ'Ù+w—Ô»@î(ߺ'mθ„¼¢ÓSZšBT|¼Ùú×ÿ© è°ÇÏš[ÐÕOøšwmÚRÎAPï‘„ÄÒŠLŽâRW‹U"ƘdÂYÑ==¥šêõì+“&MH9±º¥16fÖ cG‹¥»B¬%ïÁýÞ™3’çN*õÑ3fÚIq¦­RG¶6HúlMí¥yŸÓ7Õ¢©ðômDÁhÒ˜|ŠÛÕkV}ðÞ{xDÑdÖ(²âuÉ>´]Ðòúš¬[êN9;‰–æ/êzÙb] ”oHžíë:&/H;­¶öû>Cv¼éšÚU­‡›„R“¶‚ûPÓúÊÜS/Ê”W·”ÔI‹>-Ö·çÇÎm4Âz‡z›ì5ÞØ‘#uÿiðôóÄ”‰QÆö6«Ùê¿e·¥¥ó–ROL›¤8Êk<A—;=ù„xßÎ÷ìe*DçY}Î ÇD° t$ŠFkÀtÙñ/ëùÍñòê8@ñÙ^Û°Wš˜óÛ¹#Œ²gwÕ%Å­Ýó‚>éáž³èLžš”lûñî¯^[õ6‹·füiv¶€T×\ÿ䆊­¡M–…“¯:áȆ£YòzœæŒ«§dʼn8íëŠw/-oïá#ù\ånâlÎö¡Ü/áhV— §t£Ò~1 ­ÖOßh ÜãU±Û¾xC˜sfÒÙ×&j%©­¶£x³»W×ìu­ÿ°ÉrL~NjBJ>GkumGï-ÁÓ³ÌÎÚR„Š©Ö#)Ž:—§(îô©†(=ø|µÅ ¯íDPM•«V×nŠK?a^ºÏæÜýÙ¡íQéWoˆêšàV¾¯]›”qâéé£m—UÕŒÍÎÉ»'Ãè'[½¤Ò:ðÔÛj|K¯ÿà —pÙ- xlËž«=øÞ{ BZÊÕ·¦€{ÍK•[üAÀÁË+{÷mê˜s^TÃÖ>[¹…XWæÎcÛ]û®&ù´G\{† w¸ö®<´zKïÕº!ÔäÀ­ y·¿_á>1yÆìŒIFd··vOãž!–w`\ÎÍ{¤KOÈÞVWÞo#L­A$!á«z~ Ø0ÑÝ.Çž4¶Fƒl=d_óNã¶Ê–9ŒÓg]ÅU•‘Ó>#üC3æÊü_Í7ý”Sv‘òþ7}&·-'˾¦£Š‘3—qé©GÛŒÃ"ç=„þh›AA;þÊü[Î5Gº GÑsþ¿º0&îH,е猼óŽÌ1–#½£ÚPІ¯"B„ŽÉ?ç3»ÿCK#æqÌþ_Sï _q„ÿMh 3ÎKÔ°¨ñØ|šŒIÉ'gúö¬‰œ•áˆ#ÛÚ¿|ßpñ¥iW]iZû]ëÞCža9 \Ðk“²¢'ÏJš˜êÝônÝÞPvtùɈ¸Î"D8†ißJÇ•œ~.QF¼ ”¾ËËuÿÝc›ô%Üî?tÆþ5ÿzŠcÔÏÑ3çy¦‚ÿp´MŠÐÉWqÐWt\êäyZ²­ÆþÃÿÔn®:fbC#üWãªl|çeÇ´¦žŸ;§¶ú¥÷ÂßœDÌ<#ç¢|¹î@ËG+ZC<̰r,€Gˆ!Âÿ LIèF.d6ëáë;ÒÖ“0ZëÄÖv´­Š!B„"Dˆ!B„"Dˆ!B„"Dˆ!B„"Dˆ!B„ÿ'ˆÄ:Gˆ!B„#BJþ„4½½¼¤Â7ª Óà¨Ø{ЦKÏ(Õì+mö¯öŒ©ùù©zWíþ‡7‰–œ±y±û])’Çik®­iìèÚäX0$ÎO×wTî-kóèâGf™\5ûJ›>+/'ŠxwãÚvA“™—kë(;ØäQôñY¹9}Nd·9zUd4QÙ“‹&gö(ÓüÃÿ©;–žõÿM…§_×ó½wÊ3JÿS-&ˆ‹ÆóâÿÈõ}Þ½fñ½O´‰òœ¶vèækJþ¥É`ÃÞ?W~šÏž£•ïp˜®ÖFGš´iš®/š*lþ­ç¬uˆÂ™¿Ô<}®8>dön–yZz£œ‡C'üì—š'~&Ž4qh›üûG}oTøSMÂÒÿÑ]èV>ûBzèMyÏ(OÿÓuæ F÷Ê=%ÿ°{1Ç_99ﮩ®âõ]ž™ YXT8ß]ýèÚ†cÒ¢i£×x¹£­Ë§ŒýËlc£]b€½±µSÇ_×üô†ÒýbìSGþv’ýºšCÙt$¼|U IVÌÍ}Y él­ šyKɾ嶮GK‘Ü•C{Ê·*ÍƒËÆ¥Žzjj̶={Õà±$fÜ1aÜåí÷–‡z¼tXFÓäYq¥ûÛ*;ޱMjŽ-šÞà¥eh ¹âþ£mÊ1oÕQ§á9V¬ëêìw—'*F“™DÉ‹¬¬€4ŠîáÌßQ»˜ÎáQl?ðÙRÚmX&sú¯9×Á¯#…-‹@ömœZÈWwÓ gƽœ}¯Þ‡C7ënf£¿Ëú §‡ZD§S"NgÔ„=`Œ1itf£ˆ·£gW0$eÆñ#tUµ}D½OŸÛírõï–ŒcsMбoã¶²v p:lÍD8||Ê¿óýû§ÌQ¦µ ŒŠó'þà9Zù†ÏOßF$ÎÐ~y»¸æÏÞKW(½Nº’•o—û]‹zåñ÷•_þRHÕÑéÚk’ÄG.¶þÃû§ï/Ê›«”ûïÿ2_øæ¥³ûðu(ÿù\:ëå¥W´ïýE3þiÿ°~¨÷€¢á¸T££¥Å?î¨ÉO·hlß;’3sç¹(QstsjЧõùí•ßÙ¤oÙSÒ.çf§ækAcž“®¯®m í33¼|U .+çMÌJ®+ýW³oHïýP¬Òˆ¢J ˆÆÄßžZôÎñ©iýCÒƒYuøš“´É:Ú;<ÝoPIRÐÇE‡ôí:˜::5öÌ«Fݱ¤à¦Ë“ú¦¬KŒ9ù²¼EK î¼+¢BS‚¬>êü»ò6Z›41õ²[òï\RpçÂø¸”kS“.J™á­ù¿¼(6>>fÞMù‹&§õ>Ø0p‰‚—W„S¹ðUnÿ‚ÛWpõcŒJ (R§=Å¢/¸ý.ÿ iÑCP¬.›ó·ý™è\Ní¼æ ¦¥$s3×~Àí_pÝ_ÈKì­ZKÞÕ\½œÛ¿`ѳX†Ò€AJ ùö~V 8ëo]ÖÞú6§ e‡ºÍƒ•WÏœ¥ÌŸÁÔ‡Yô6ã3³„E+˜=fxÚ(мܙxvô«èDGÚYLÍdׇƒN UÖGm)‰ H5ƒü¹´®Á§ÃZ“9Æ¢Cñ*cÍÆ(=Š«£{üWŸ™ â®+·*hGÄrL—hNîæ&Gß5zÔ˜TÃa.ÛHVŸ/@ë ÛaŒ L»M×ð8ërmÝwºç £ÏÒøN¿k‘ÐsŒ›§ùz™^ù^ï|_ûè‰B`‘Åhá¶?骿Ó+ßë•պͿSÅPSÈ?CóÍr½ò}×ߺ3z= Y'jV¼Ó“ºóç‚.4«E+,yK¿ñA„ 7ꔯµ§˜A'üî_º§;Ÿ“øæ×]Ùí](Îñí‚0áí>Ñ+ÿÑÿç1}¸Îz¼¼'ÿ^¯,×L°5i®¶íí…qáÕU˜5Iö)Ò:×jÏKÞ£«ú®wûšÅ÷Vê¿ÛS“ëÔ¤z©Ëê÷•:á·KDý×¾…Ÿ*ƒž+>^|øçÂÞ¤MNaÇŠ34Êëß)^ЦŠ=_y¹„I§ I½»p_“¼ø÷RõÍc3CþÜ 5mš±ù… Ím/ìiµvÅEèrÌB‡ÍÑ® n©¼½§~‡‹D‹.´zòmÞ}àK!ó±Y·Osª­ìÁ!DË…Ÿo8©#F^Ýú\I[ûðëÖž6ãøg½9gÌMYÑýh×hMyFÁb1Åôm¦`V¾æÁee÷ŽViDNF‘Y“’29B+£Ë ù%h’âÏ¿,ÁXÚøÉçmά„'›»R!Ú2ïÊÔ\kóûÿ,{ýƒví´Œ³'êºl3D_p{Áí7%'Šº®Ë¿sIÁKòžnÔ†"ë¿$vrÆE'j*VÕ|¶m@‚V?õsóN‡8*á¤ùqBq»5ÁRÐ]`µKU'v>—/Áûo^Ëëw°q#Ý̼§ÉmâƒëYz7…\üñ¡uݡȊé,x”¨-¬x[ “"R°„3ŽgÓïyõ&öèYp/–îT ÷6λ„Êø÷5¼õ8!¯bf•ºf='ÜG^ÝÄ+ײüi*CŸ™S׬¼‰UÎ!3nf ì©£`nWdV8mh^úUÌÎ`õ 8 ÓŽáÚO¸}—-¦éÖï&Y…ŠçØ­áâg8ýAÆV°âžOò9Sl¢¹µºEÖYââL"žžx m\f¢OýÁ²ò6Ð%gÆôñĘœ1ãÆO™9{B¼à©Ù½·µ—Qí9Ц͋ºK5ˆ¬hˆ1 àl±zÄè¬Â±cÇŽ[˜ú×¼a¤øÔtå•„ 5¯]ÆÛŸ(§‹…þ§?ã4íºûÄò¥Þ‚ ½|*Üögí´Ù)×jÿ6[yê.oÎùÞñ·HOý ˦žš5O»éAð•¯è2ïØ›¥U½_¯É³´ß?©Ißä›ûsïÈ«}ïô>GݪÁXÙQň±EaöLhág¹ ¦Å³¹§üË‹<)çyÿR=€tÜmÛ÷ú‹m†f{ç÷ÀZÝ?&ôº&ï<íÊ_²êYß…ÏÊc.Ó>4~Èí< *åýþ]©4Cs{·áâ«Dç7Ò×máÕU˜5¬}´ÂÖþ1QþÍß õ}krÜÏ5Œó'¨¶QÙ`÷•:1“57¦+ϼ&7 8ÂhþºL¯üG_ó²ö¬¾óŸW¬þÎ,u¤ ·+;ZA.º]ã~Mzi³"$ ýzYûùmœûóÞ™a3ho.ææ>˜+½µaÿÊž®W4‹¸½’$h§É2—¯wi² Z1DïI–9¤·¤hÐ…ÝF~âçsÑUl¾‡Mûú¥y±Õb«¥iÕ6®¾ŽÑŸQܶ¬–I÷SïÞ†=óç²(Þù;!p ˆâéð€9J‹ÜÒÚÖ§h“cAv9ºüu%#En]zþÙ€ Æ´´¨â¶öžzRšwü§,î¸éÙÆ¸ÌSEYGï*”ݵ%ec’G%9dë–U¼N˜ôQ›¯qóê­SæLMÊ ¶u“üarâ¨V^܃œ¯HþyuM¼pF:Y?×9~Þs}é´þ˜ó /û^£}w¹þáòËJ/¯UZ•TSŽxfœòî'Jû@-¦KÏËäóGå†îÀ V©P{@‘Î …q Òõk5ÏGo’[äC!L)Ë.¥¼M’W©ªQ4®ðÃ?¤w;Pel´ºaØR7Hy%å½7äÇÒ\œ*?_KÑåbÖéÕŠa¨«pjR½};Qå7Oˇ|€òÄ/§Ôý cDžÀ¨Eé`õ‹Ë:Ü!*ëM0YÅÝÑó™èêËVëÇ/Û5=÷†âî¬F‘d (’m€õ)¯ €0\1}CDîèlÜXI¼||9eu?ÆT°ãò—Wn˜>6ƒjn_Í›É:Éç²`õoóÁ¿p‡p³«kV//2¿gìn õý"æ".¼‘í÷²io+í{pŠÄÅBK¸²úÉ̚ȦëivC Ÿ>ÃuK˜ø!›*Ã)Šâs9}ÄiÁÙêð:Ú]$›Àãt£ÒR€!5otª¿驿}í=㻊äl¯«ÛU—1=-~̸Ԛkû4®d=XÒ˜75ùpâM’UÜ­MNbMI1Ú¦ŸÛéÚ*ðtàQЀÏÖËñ…®‡û³»= Ö"[+ßp•çÑéâ-—hþð݃ÅÒ)‹¥ïíÁSµ1BTúD †µÚP*»ütB²qV©à¨UcÄSçÒñƒ²ù{¹úñü)HåŠu˜ [ÛØß-Xy6Èï¶kï%Rj_¤:j;y„‘+4í„\’£º~Ðf‘b noÞ[8²àØ‹MGá¸S=mO¬@ˆfÆm„ÚÁ¬ E³â¤òVÜÌ[¯“z æ¾³IŒšÍêå=rõŒ…¹wa{…M%Á¯5Â䣹udõ)èlþïW°X†^üÞÈn{çÌa‡ÕåsY;§žÝ]¡Î¢95݌Ҳó»o¿ýöÛo¿]µ±ÜÑ)Æ>w¾â®ß]Ü¢ M›P˜ÐÏEV\µ%åΠ¦ È@²²­²¼ 9“ ’B›( ©Uù¶Ž™g‰ *Šel’ïú7íj©t¬æ“CJ•:°!LL@Î]¤™Ð]Jl2‘¹×i®‰¢UƒàiT*DáÊSù᥽JþÒ*üò,ê‹q…¬ÁçA4 Q?áXAðò:ä¿~¤ä_ ¹ô<Íéù‰zÜ»pê*œšToߣ…ú}…ªJH @¹?Úxqr廿bÛ‹å Šð«Iò¢7'h“…ëDzc•Ò8P›œ'˜Ê~[ð\B§ŸëlŒI>AïÞéÐåÆFîü‹1Åv]¦´ÔU®p7!Ú“2â7ã,öêÊoº'AŒÒëbõ:‹FÑ¢×ÅêµQ~Yk[ë!,7NÊ<>Æ8">éÚ‰é)ž¶u!…“o0Td¹ÕÙÛá–}W½;´­eÖauÓ"0÷òF?–Ùw`igEH6« x:gƒœmIñ9ln@vvÆkÆ”Œh°Õ4´;‡Ãao©möBLFR_ßÙqhç;s&Žì¿¸Y²ÜÛÜ«WLã;þøã&d˜sö¤ãŽ?~ÚØ6âè/‹l/ÛVÒ¦=jæ§Î>~lÒ0l àÇ£<ówY8CûÎuâ”LaüDqÑÚ×N÷Ï1é„ß<¢}ì|qv¾0"Y˜<^HF9Ðýe¤šê(“¿°rÍ]šëOz\»ìDöz1F •å©–?¬eþbí­§‰¿{@÷ÑeM{ÈV©·°SÙfet”òI¸”åÛHÏ”ø«5’GB¿†÷* âïÎF§ Sgˆ×Nòé êè¢HŽ#):ÀÝ ¡¼»?–Œ—Þ,|_ú!ðã*äº ß0jR½}‡‹ÁÚh0‚ÜWÁؽZîHç§”->󀿖ÙBAŠ?Iüëcš©eÒïÖu ~KMòïþG!^<{š7RüÃýÚÛåß}¦ O Î:Spíwæ×õ Õ÷Q£5`ºìø‰—õüæxyõŽ  øl¯mØ+MÌùíÜFÙ³»êÀ’âÖîÐAŸôpÏYt¦GOMJ¶ýxwW¯­ú›Å[ 3þ4;[@ªk®rCÅÖÐ¶Ú '_u‘ G³äõ8ÍWOÉŠq:Ú×ï^ZÞÞçd>Éç*wgs¶eÂ*ÍÁd5Ù¹×j5È­M/~_ñiÛP&At£Ò~1 ­ÖOßh ÜMU±Û¾xC˜sfÒÙ×&j%©­¶£x³»—óåu­ÿ°ÉqpAlV-oª £žZ8á!Nøqíu]gJíã9ëô"ÞZö¾ÀúÏzÖù…#+•óáœrç>‹Öm|y7•C:j ŸÓé#^ì°ºdd—Õ†®AgÁ˜”Άæî§Õ×^Û&g&ÇHÔªê€%µ—î¬Ìž™mÉŸ0âÐ÷•½SgmqŘÙyÝó‚.&-#Í?ý F%¥E­uïÞú~“hýdɺÿû5Ž‚±ùY)ñIfoGs‹k˜âjWùN|Pûü/µ[oÄcU6mÿº×ïhJÊ{øÝ¥š_å g½òΓ¾ûº¿¹ÔS;äßüAù€æåG8´]¾öWRú#º_BNÀ£<ò{iü_4XÜùtÎmòe¯ˆ³œ=!jV©ãas=´)›í[¿‘]g?ÖpáÈ«tUWÑþµ/óràåØãûÙ³Ú—oÒí¿k¥üÇC[Ä2ÇýZW÷k(•F]#ô)hy}uò5ïÎPžúTé¶b] ˜ïáפzûƒµÑà6¹¯ÔiÝ*½Ù¢ûõµâKË-}d¼Ê!Q³ä~ͳQàTÖ|é›õ¼¼±»¨ ëŸõý̧yò!Ý}&ª¶Ë×üÊ÷YÛYÄNÔü~oß&7Eˆð¿®}ަHyÿW}&·-gH{d‹9s—žz´Í8,r`ÑCνŽ4É⺵ú·§m;"üwq÷Õˆ³´¶ïõœ#† *ºTñOôíOŠ#†;h'¢"Dˆa¸Iþ9'˜ÙýZ1cö¯èøšúÐ)#Dˆ€1_óÞB>^!_†+^¸þ6í‰MÒœ=á+Žðšð﫪¯}çåë¾ú½nýxéwïJk*BZã”èdá¤S4ºYœR)þ€\5ÜGG\ç"ôo¥ãJN?—(#ÞJßå‹exþ+æÞÒ—pû’®Û¿æ_O1¬GÅzæ<Ï´Ìž¤޶I††§Nþ´QsÛ½º&Sùþ;iþŸ¤uŽðGø?Í0ÜW2«žõnÕüéâ»oj6Ýã9k]Øf™Äç–j/p++þí»ü-ùàámÜ¥ÊO±˜*B„" `JB0r!;° 実ØZc†@kØÚ޶U"Dˆ!B„"Dˆ!B„"Dˆ!B„"Dˆ!B„"Dˆáÿ‘Xç"Dˆpt–䌴Ähƒ({]öÖÆºÆöÎ3Q É£óÓ îºýÜ  ‹U˜erÕì+m X *ècS3Râ£ôxì- uVw¯3N£² GÅî©xšK÷U;ä`V…’ah\Yð迹¹Ì`§ïY<^x¡à"¢t]î¯ÒÊŽ»m+Ùù3ff¡¡Ëý G-#ÆÒò!û÷#Ã_Pp F €ÇÚ3Æìô€jE½%JÎÚ²ª–\N{[¨²‚1cl® :ömÜVÖ.ÎÊöÆÐR»«Óëv¹ú¨[ŽÍçÃð6œ[Ḽðl@¬‚Ρކ}½5dÃ¥í°>ƒöSµpÌ3Ð ˆva>œ À ÷â¬nÕ€èà>Pà˜7ÂK°î€hø ˆð€üï°·^ÔÃÏ`*l€÷»oWU$h‡êÅ–W÷@&<þ+“áPOÐuÀô`uJ¾ê Ö¾fø34£þ˜„@†zG³L‚ !*a%ì%´Ô#wOªs/Ì„ pfoïÖøï&8e ^g5”¤Ö_À:øfÀýðëÃm‘AP?E4—jt´TúGC5ùé­â{§BrfîêüEšË¾3%ž6'&#Z ©ñµ¥­mÁ”kS“¯¾D»ú×ä ’RêÞ[©Ì¸$µÀ×öÞu•!5ö”J¼¼ê$œÂI¿ ;¼´îaýã”ú?iõyÌYÄØñh|Ô¯aõóÔ…<¢.›óçéxí%N¸qãÑÀÚ댌¹–¢³ˆ5Ѿ•ÕORÖ ZKÞÌ9Ÿø¨P Ѫþš­2pò"ò Ѐ¯•’¿²r¡ºèê6V^=s^"úyêÎåÄQ¬ºéJNŸÃ¶ß°®dÚ(мܙxvô«èDGÚLÍd׳ƒN UÖGm)Óú5µùsi]ƒÕG˜Èî¶vѦ¼I…Í?î­we @Ÿ/@ë ›4ÔÔp¬ Çæ9p+Üêÿï8 €ø€øfù/¸N‚ïüÿß÷Ž£<>-5>Ù©VxÄïZ™á=XÐÛÚ?ù]gu«­F8 á)¸‚n†ÅP €~±þëé=E:®™\á‹Uð|€ë›a¤ÿ¿÷ö¨›ÁÊ+nÜîO½Áoý~óáÕU(¨´¯n‡ð¤ßuþHðgûŠð'øco…éPBê‘»'ÕIƒ»Á?hTXw@LSÁ oö»æq(†¯a=ôùv¸öÁ­ð„¿°Ã„Úàfl~áBsÛ {Z­]qº³Ðas´+ˆ†„G*oï©ßá"Ñ¢Ó…”™oóî_ ™Í*¸}ú˜Smeè)x,Ü|ÃAH1òšèÖçJÚBÿ Y·ö´ǯ8»èÍ9cnÊŠ¶ô‹;×hMyFÁb1Åôm&«ÄÔx£ØaµÆ¤ß=ë¸÷Î:~é¬ü‹ušP4«×sØ­ h’âÏ¿,ÁXÚøÉçmά„'›»ç´„h˼+Ss­Íïÿ³ìõÚµÓ2Ξ¨ë²Í}Áí·ß”œ(êN¸.ÿÎ%w.É_xºQЬÿ’ØÉ¨©XUóÙ6_蟂V?õsóN‡8*á¤ùqBq»5ÁRÐÝPj% –ªNì|._‚÷3Þ¼–×ï`ãFº_ßb2óž&·‰®géÝ4rñCćv,h(²b: %j +Åè4ˆ,áŒãÙô{^½‰=zÜ‹¥ûÆȽó.¡òþ} o=NÈ«‚Y¥®YÏ ÷‘ׯG7ñʵ,šÊ¦ÐÛWUs°ò&^@V9‡t̸™)°§Ž‚¹]‘Yá´Q yéW1;ƒÕ/à 0L;†k?áö\¶˜¦X¿k˜d*žc·†‹Ÿáô[ÁŠwð¬oÓžÕ.ĸÑ'œ~ê ©æ§îDCŒIg‹u OsõÔn¢³ Æv2&/Qßýèª[uø6wáÿà$x€)þ¤‡`¼£àZžñ/,ƒ†l˜7Ai€Z•TžÙð=Ì€‰ýâƒï‡P sa,4ôNU·j0$(†(Hò!œ ;@;Œ„½KÑÍ8¸æp&Ü÷À"z…7ja$< Wp=˜†Ø¢RÞWAk 3Ü^øwxu ê­¯ÎÙðGhƒs ΆV^ª§¡{2(g–2r¬ƒßÀ]p*Ûš¸¸þká?6’ƒðà´áh íÍÅܼÂs¥·6ì_ÙÓõŠf·W’íô1Yæòâõ.M¶‚A+†¸Q‡,yª^—É05AÛZæq†úr 7ßÃFcLºelô®ÝÛ¾w“;¬šoëß6ì‰ÕhâÍæ‰i©çOœ83vÏâÝÖÀ¸a¯½úîïÚ=å½ß`ªV &½F4§Þ7M%û—´)9Yyw0–µ;—Û•`šÕë9ìVÐ¥–W|S*)ØÝÙ–‹GF'êµ^@Hš–4ÚÛöÖ7íõ>hm]·7î’Ifó«]OÇ×KËô±±\S±¬js‹ÈnŸµ¶ÄF\Œ,µ‘½^Ü^½n¿1µ(#¹±îõ Êœ‰QF­Ðý;x‰‚§ª`¦h!®÷ùrYWïÖÐ%œCž—÷ÿJµ`ÍcäüécøzWpÅ!ɦÓñŸ­‚L¼®³&—g±m1{ölYÊ”ÇÈŽcw3€&“Ï¢ô!Ö¬GM4¡oG nUÍ"&’ kvöº! -¨kV//"ñ>zÔBŒä‹Pnd”¤ðÚÈï‘t!œÏÆ%÷vs|¥,¿C$Õ ÇA4Œ…?B¼ç2Ü ÇÃ"(‚7á¬~wšËáB8} Aë0Øu3³ Í—m,~Ï*ôɲCF§c²šÞé–K¬Oé-)Ï™>þTÞµ¾®É’ù`ÑØ§´ÅwìnkïŒΚrCl·¦ÔÜykIç°txùªiVÔÍ—;ÁZqKG=¸/DdoYKçGTËªŠºUã'?š“=§t×g½¾'›ÝÞw"#˜U^ŸŒ.ʺ{Ë?«Ü”ï=“:y~†éã}¯ºæ õ^+¾ kK;ï'ÅÞ$Q í4i¹:,ñWܰˆ¿Mg±K (V¯S$YqÛ¼Ö>±ñê²]…¥nUÃ^›´m,ÿû¦ž[1>þò…É©ÝÊçÇU¬­÷¿^ÝŽ-û}²‚âõîÞæò(YîõÈ Z¢RG“FF4åß1€—-4Êiô)ùªhp“Zˆ¸‹ oöe÷²z 2PÍç¡øLcˆicZ€ÊØXh°L#ÖÁ·[BŽ”Ùª š]lx–”»¹n6•ß°óS V~Ô5«—…ʰI$KX¿¢ÞI²Ï?PNù‰ŸÏEW±ù6õ9õb«ÅVKÓªm\}£?£¸%lY-“î§Þ½ {ç?ÎeQ¼ówBàPAñ¶UîXWS–9nÚ”œ˜Ì)Óm­k÷%ô–rzÀd°ÅÞó!¤vÓºcÍ–®e‚²×%÷Ö fUÈ6Äй¼åŸ½ßåIÀ½¯ò»)†qp6¼ /ÃK°$`°M%54°iYé°@q@ü.C±J…NWiž¿°7Âu@h›‚9à tÎ5ÀÁ®i¥íˆÃ±¡®zyexÎ…»a¹ßé|Ê?\N]E½õUÐCðÅzê‘»'Õ sk°ÁP  ΂8¼ÝÙû°JàTHH[ç7OÈf!2€ë,Ä¥ä=}†ë–0ñC6US©Ÿ­jçÉpÚô´˜ôDûSAöÉ€èïœ^H^Iwk““XSRV¼®±±o/£žÚäv:*=Ô@V…š:8ÝÏ}Ÿ{§ó–iœA¶kj…0n……p¤Ãþ([•ÔÎ0—ßñLgªÛŸš C±J…λãjðÀKp#Ìø=tsˆ%†þ5Œ åÝ`2\'ÂNØ6u•öíS 9ðÐ#ûGâ ¬ŸZõÔ#wOª£ø7½6„P3Vh‡øA{kÀÑ`(Õì×0¬ô{½ º¸›&%5íÝ÷n¿@Ú_kS,©ãšÊÞo—AHJNÉDZ¾%”¹YÁl2˜ñ5u]«ØíŽ6´Éº¯Åár×9\þ?w“·ÛÇ '_uͪøÚ[µõúÕÛ8äQÕ¿[³õÖ­ÍÍÃü4‹i ÑQxÊû¾ðKttNŸ¡Ê V)MM­ èr£ºüAAkžEM›ÛTsz³1˜&hí¥öÖÎEª¯ðj2b2ŒƒJ(²" ¢±DY²jȲÝêµ¶ùÿ¬>×áÍR÷)ÑRû"ÕQÛÁÈ30ôŸ(4í„\’ýËÚ´Y¤¨Û‚÷Ž,8öbÓQ8nàTOÄk¢™q¡¶G0«BѬ8©ü„7óÖë¤^B†¹ïÆlã†f³zy\=caî]Ø^aSIðkM£0ùhnY} z›ß×sUà‹eèÅïhJÎHŠÒúïdA£o§s,{:œ2˜Œ" ’£ÀÕÒuøˆl«(k]æÄÂ䮾JÔÇÄ;ßZê©aX$5ša3$À/ü¿ÄÂ~×V¿†LØ7ùC fúõÔz&AÀg–ûsé ÛiŸõvAÔ­R§\ »`ìÀê …6¿mäÛ¼ |‚–× Oð:OD¿„SW꨷¯œnщVðt>²Œñ{¥ê©Gîž Jç(xÑ@IfXè÷zÓ!Êüw‹®õ£ pDCC¿þN:În»zÓï&5Æ$Ÿ wìÐåÆúÓ¹Ñî´Ê€ÒRW¹"Âüظ ÑžsÊ­ã,öê’oº¿Ä1J§Ñ"X4‚(ˆ½.VV|>_‡ (Ö¶ÖCdÝ8)³c_s­&úìqé)ž¦u!Í€…“o0Td¹ÕÙ&š½Š"û®ú;PU« ±#nÏf{£½ÊCZrúÂQÆÆCÅë{»ÎºèÌ'çfpÕÞ¹¦|_OôA«<¶Ú7Óîš¹¯|•CWT8zŽÔp_½Gª9H=k… õ¡1ëâb¼³qüIiDÛ§\~ORiÜÜt`Júüó<_®no’µIÙ–qiÎUŸÛº‡€§«Î¡)œ[²ÒÞ¡7d$Ëe»N%$Ù#†J‰‚¦ªÑÁ†×µˆŸÉl\…SKR!ö¯»¶whù„òó8s1_ü {4Ó—`.fsWIÀƒIFvâö'…*;Rk×sö=´>II9æ\ ΤöYö5X7Ð~snBØÊè+H®Á•9`• Ù*uÍš\κ’Êo©«Ä©y`¥Ï!5š.}‘ø&ÞYH}@œ–ºfõòªN=ëG12†­õ$åû’±Uàô¦pÊ ì[CC31S9å&ZÞ§Ì: ²ÎbZæÞçß´é™t –vöW„d³ ¢9kÒÌLÏaµvxsBB”סҦÎ&òµ–×zS2ã&œ|rF‹S—dä–åí]}’ÜQ¾uOÚœq yE§§´4;„¨øx³õ‡/ÿS'Mí"qü¬¹]=¯yצÝ-¾ V©§†ƒn… ð<\˜ xœ Âbx¶C¥ÿ<ˆÍþÁ9õÔ(†±P0Œå!:ëáD(È1U·J'TÁhÿ޼ŸC>TöŽ¥îf)Øà7þ‰øN¾à.˜ ‰0’‡uŒ0Þ< [B.ï2xÌÐæ÷;‡ZWýóUG½}°Žƒ½ƒ¬‡{.“  öBDì¡¡’zäîÉ |¿kàñ~7Œ^—á;ÐøÝßE~Í:x^ƒ}ÝöÝåÿ$øœá¥ÿ‘(­ÓeÇO¼¬ç7ÇË«w|àPÅg{mÃ^ibÎoçŽ0ÊžÝU–·¶w{°ú¤‡{NÈ3=zj:P²íÇ»k¼ xmÕØ,ÞR˜ñ§ÙÙR]sý“*¶†Ö…“¯:áȆ£YòzœæŒ«§dʼn8íëŠw/-oïs¶ˆäs•»‰³9Û‡4¬xVnÝe7òŠã&ÿBjëù¾j›7$Íêõ¬žݨ´_Œdk…õÓ7šöÌ)vÛosÎL:ûÚD­$µÕvov÷ ‘ðºÖØdž—té)¸=[†.{ÄP)QÐTUÚ>åms.眳$¬Å¬ûº+Inä󻘳ˆ _A#Q¿†eÏ1Àp¶ÈÉ/r24½ÈÛtw†*; 2ûŸà«˜y/E\5”¯¤Á//ä³—Yp-g±ïmÞßÉ¥Ç ¤dèVõÕ¼›Ë§áõ§Ê­Ô9˜²˜„°³êþ^þ1 ÛijÅ\AïP×`6«–7HU…QÏ‚-œðP¯³²º7ã“ÚÆsÖèE¼µì}õŸõ¬ó GV*çÃ8å:Î}¬Ûøòn*Þ“–:ªV2’bÍàs¶VWìÝSÚØµZOñÔïøÏvß„‚‰ ÉQŠ»­j÷®]åcR{é†Uö‘còsRR¢ð9Z«k;¤ÐR;«ÄÓ½7>ÿ<›ºUê©a²N†§ œ°^òÇuxàp “Áÿ†;ýáê©nø¼¡ž„kaä@«ÿ¯÷ vÁŸà0̪«X¥ŽÂhø €`1ìd]`ç²°Gz»ÎÅp <§A üs·;Î`i€ ´¼ð6\¯ùG:CiÁ ùª×¤Jûúà*x¦A üé-Þ'À#p)L„fø8 C=õÝ“AÙ »`Üÿè䀿ÁÏü;·¬û`?Õ /À…þ ×ÀÃðM?ýÜ™° B¸ˆáC3æÊü_Í7ùÝþ¯•÷'#úLn[NÖ°ìPu1ræ2.=õh›qXä<À¢‡"‡¥ýo"n ˜FŸ l;ò¡"¨3PàÆ!œ³zø(à…±Ãoøpï!B„ÃHòÏYp=¹c‰I"m.ó~EÇ·ÔûÀT„ÿ½ÄÀ³ÐßÂjXÀCƒŒ Gˆð“±Î¿5ÞKp޲ ðOh„A  xø |uFˆá¦}+Wrú¹Dñ6Pú._,cxæÎ6éK¸}I׿í_ó¯§?šöˆ gÎóL ÿáh›a(ì…ßÂÕp*Èðø |r´­Šx6Áoa>\÷n7¨ƒóÁ ¯Ã#þ¥«ÃÍ‘>S$B„"ôAÀ”„>`äBv`îý“†ÑZc†@kØÚ޶U"Dˆ!B„"Dˆ!B„"Dˆ!B„"Dˆ!B„"Dˆáÿ‘Xç"Dˆp„£² GÅ.›W<Í¥ûª2 ZrÆæÅv9¯H§­¹¶¦±Ã¿ïƒz*‚.&uDZ‚Yëëh®­n°uoS‚l„"ývØ4¦Gfž“—¥3"·´6.ÝQþmÀõ:SÂÕsæ'M²gwUåߊ«zï›vçô¼™Rõ­ßU–÷>ƒ@КÏ“wEfL²Fnl®{~{寮'ß —ÕD]={ÒeJÅkkj†²º0Í‚!åéžSðÔÿzÕÁ’!=˜U‚&/3ûÆÑÉ“ÌA‘ªjKïÝÞÜšÙG´žÁhœ4ÍÔº½µ2”}ú 4c®yJKÕËŸ;¥m’¯çŠKºþýåÏ)i KÛa£Å5gÛõ]‡q#V Éæ#‹‘3ß`ltÏÞµ¼üÀHþÅL:™ÔLtŬŠâª®Ë„8fýšq“1ëQlZÉš×hqõ¨=|YÀÄø˜q:¶í¬~œƒG'8u)ã{.”~à¥?à!Dsj^Nº&ð'P½¿Ú 1§çå$ àä-¨ÜøÝŽ4ÄèÜãgOLérËGÔn[·åC®9Âa šî›”{jkù‚ gÿCã, WG¹ßªïhêS¿š¨Lˉ?°÷ÊÖ!½Ú Q©ßLLêÜØeë½—4ù~š÷ÍÑÊ÷@HŽI¸#3~^Œn×¾}×ôm2qBÖÈ3ù˶Ò:n¢î¬¬Œ{S¢³5J­­õɃõ:å®d1ꉩ9gÉÎUÍÿ¨mß?ä[àØ¥ÿi‚:ó£{åž’ؽ˜ã¯œœw×TWñú.ÏLÐÆ,,*œï®~tmC1iÑ´Ñk¼¿ÜÑÖu žhirfÓ†CΠ²EÚmí0:|™1Ñ ·¥µÕÐÏu·£ñœ›5Ó}³r~‚­|6â˜ôì÷rÌU ÷î¶nèèëç̉Odú²-Ÿ÷|Šïùý¥ïº´ŽÌzjœØº½zuç³.wüvÛþ·ã~›õeRëÍ{j¿úoùtíw$Šäj~a硯íUNwUsý›•NLæÄ®Ë„„´¬¦Ž¥Ûm°¹*›šÖÛ‰ÍÌ>ÍÔõm/hMc´íÏ­ÛöXµ{€Ï Q?!^SYQ½ÖêªnmxïKk2YBŠ /_uÕ!Èê¢Óî¥ßk•†Ôè!h–›Ú¬Ûšºþ¶·º†Ô©f•hL¼¹ ªxgñ?*­•Nw•µíÛj›-$ÍG°ž#ü4(nœVœv”c©‡:6­:êHvì-t´ÐÑ‚Ã?›"7±úvÿ@k­;Øð ¤åxPZÙñ1եبYÉÎ2¢²z>cÑEˈ±´|Ìþý´îæ‡/Ó0ú“=Ö.;;Zp†4ÚÜÙëvùq÷ÅSdËåho:´¿Ì hu!xª5"/^ÀU¶½¤®½ÃZ]¼ã1idºY Us„!¡x>(«¼¯ÑóÓE½(²ÕçkñJ!ÏMÿ/Ï÷¨—þzŽqãÁ–6}e÷¶÷õ+ ׌JJ±;m½ÖècîNÕí>TõÿZ]•ÎŽ[Üèâ~“ܳï¦$y·4Õ_½½r™ÿü„Üÿ–PýHÑp\ªÑÑRé Õä§[4¶Šï É™¹óÜ ””9 ºOëóÛ[AÈHH›ì)i—/ÍNͯª,QÌsÒõÕµ­õ!³†—¯*Áe㼉YÉuûŸpç>”2¬šA#Š"ò`u —ÌÊŸb+»ãÇúº>7òàVÅ%¥Ž“[ï¯SónÑ|ë¹+¼áß[ô³ÎL—®qT¶|þQÓ¡€‰?]b̉§'NÈÑé|ÞÊÍ _®í°‡<¯&«:Q†æã²ïL‰§Í‰Éˆhj|mik[0åÚÔä«/Ñ®þÀ5ù‚¤”º†÷V*3.I-ðµ½÷Fc]€ï`H=e€/¯: §pÒ/ÈÎ/­{Xÿ8¥Íþ"å1gcÇ£ñQ¿†ÕÏSò|ˆºlΜ§ãµ—8á6ÆGk¯ `02æZŠÎ"ÖDûVV?IYs€j-yW0ç|⣆|{)Q?ÍV 8yùhÀ×JÉ_Y¹Pßyê6V^=s^"úyêÎåÄQ¬ºéJNŸÃ¶ß°®dÚ(мܙxvô«èDGÚLÍd׳ƒN UÖGm)Óú5µùsi]ƒõ§ Íi#bÀÝÜ䃦 ºØä(ð6ÕÙ:;:Ÿµ¦EÊJ³¤X4;ä¡hî0!gôR}ÝMö„²;ÊÊ’“_ë®-»°ÒéðëÌOJùãˆø¢ÛÝñZyÕS­¾îWÔš®ÊM¿9Á”*‚ìÛÕT³°ÌÖ=«ž bnbÊÃÙñ³ ]ß›÷—\ÚÜ=B"¤Ç%?”“pª©ë«f_Åþsj»ÝY5«/®þ—“FÏ«ÝwQƒ4:kô©Î+·V}/n™˜PZúp‡Œ&ê™i¹çiʘWírŒš ¤¤þ9+nšNÞR[}K¥­ax¼ÒÁÊ+Ì+¶mÁöúb‹ÇÇg¯Í’­•_ú¨«°¬ˆŽËþ¡P¸mk}|fúÉæ4±W ª§ ã%9é·'™ÓE¥±Ãú|Yݿ쒚æ`&›n΋Ó5W.ið¸HrR2n×·ßuÀwßK`BtTìÁõh‹×CìŸR|ïv(—&˜j= —I^Ûýûš‹&¤Üßvk‹ô_£v·fl~áBsÛ {Z­]óõº³Ðas´+ˆ†„G*oï©ßá"Ñ¢ íìDßæÝ¾2›Upûô1§ÚÊ<ÐZ´\˜ù†ƒ:bä5Ñ­Ï•´µ¿níi3Ž_qvÑ›sÆÜ”Ý^£5å‹ÅÓ·™T¬Sãb‡Õ“~÷¬ãÞ;ëø¥³ò/JÔiBÑ|„ëYÐ$ÅŸY‚±´ñ“ÏÛœY N6ë»Ó¢-ó®L͵6¿ÿϲ×?h×NË8{¢®Ë6Cô·Ü~Sr¢¨;áºü;—ܹ$áéFm(²þKb'g\t¢¦bUÍgÛ|¡÷Ù‚V?õsóN‡8*á¤ùqBq»5ÁRÐÝPj% –ªNì|._‚÷3Þ¼–×ï`ãFº;1™yO“ÛÄ׳ôn ¹ø!âC;4Y1µ…b ìâD –pÆñlú=¯ÞÄ= îÅÒ}c äÞÆy—Pùÿ¾†·'ô› V©kÖsÂ}äµñÑM¼r-ËŸ¦²)ôöUÕ¬¼‰UÎ!3nf ì©£`n× n8mh^úUÌÎ`õ 8 ÓŽáÚO¸}—-¦éÖï&Y…ŠçØ­áâg8ýAÆV°â†or):«`l'còõ½û:1&g̸ñSfΞ/xjvïíb9pª Òn[w›I.»ƒ9@»ºfÕÊ×›ëzÏ*œ’™þDšðqƒ'/1v¤þ551ó½Q–ªêŠS·øe£pM~Ö¥†ž~a\fÖŸâ|/ï=0{Ëþ³öT¿lõLSIMOña~œÐTý³íûÏØ]û}o/#!.}ù˜¤kÝeÛ÷´³jEï5“ªV Žâ+q)iQ:ƒ =>V6ê,“ˆ¨› õíôÈ’ãw[K¦o){~ ‡:&>g{ѸÕ9!ù³Æ,pFþ–ÀX‘œõÖ݆ÊC7W:F¥gÜ-·*„6¼¼ò–ºÖJCüuÝ º³3£]ÍMk}áÕUXVu_¢¿¼ g±Þþ—}Uoö`,UÐ]Ÿ÷hœ÷ù’ý³·•=Öaºo|öµÆ¡hœhKâå÷kUö—¡h qÎ2¬)«_Û× ’Ì:ä.ñ)Úù9I·Û}‚Á˜Ò¯…ͳ §§Y’†£–:ƒöæbn^ჹÒ[ö¯ìézE³ˆÛ+I‚vú˜,syñz—&[Á C¼ådÉSåðºL†© ÚÖ23Ô¦ 7ßÃFcLºelô®ÝÛ¾w“;¬šoëß6ì‰ÕhâÍæ‰i©çOœ83vÏâÝÖÀÈ ¯½úîïÚ=å½;|U«“^#šSï›Æ¦’ýKÚ”œ¬¼»NËÚËíJ0ÍG¸žu鯆åß”J vw¶åâ‘щ:G­’¦%ö¶½õM{½Z[×í»d’Ù¼ÃjWÀÓñõÒ2}lì—ÇT,«ÚÜ¢²ÛçˆUe».!n„ïóWkKlÄÅÈòˆP ôzq{õºýÆÔ¢Œäƺ×7(s&FµþAÍÁKJ£=UçøÈa<9^oöFÈ®Š.IÅá“‚4`D¡ÝZ½`«˜•’óF²ýúâæƒ2 Ø¼½\þ,‹÷öU+< ¢47=w’I£±ÉáÞ^ªåõ8Û^µ'Ý“ýh{{ èMñ7Dyß:èŸ48üº ˪®;ýtOÕüýÖZôÇ÷V0XªÞ”pgœ²lOÍí2ð~yuaìÈ[3Mï”:¡iV1:?!Êân[é¨Ýyyilµgµú$sßDƒFD– ñq©‹5Í [¼f“‚(úëQ|ß7¹591c5m ÿû>vÅÌìÂGóÅe‹ßëJ+;dt1&!{¡¹áánI°Äjðøäz$ÑxÎôñ¿ ò®õuM–Ì‹Æ>¥-¾cw[WL`¼pÖ”b»4¥æàÎ[K:‡¥ÃËWM³º næ¸Ü ÖŠ[j<2Ãò™€ì-ké‡W]s˜õ߆µ¥÷“bo’(Ðv š´\–ø+î XÄߦ3‰Ø%P”«×)H’¬¸m^kŸe¥ê²]…¥nUÃ^›´m,ÿû¦ž[1>þò…É©Ýc‰ŠçÇU¬­ïJVÜŽ-û}²‚âõîÞæò(YîõÈ Z¢RG“FF4åß1€—-4Êiô÷–¾*ܤ"î"È4Xˆ²{Y½¨æóPü ¦1ÄÀ´¿1-@el,4X¦ëàÛ-!GJ„lUÍ.65æ×Ö¶wë[ßmuôZj©F£eŽÖûiƒsÀà­>útƒ¼ú ½y Ô`V© 4txädÓÈ(Íhõ·­šùIQ¹íÆoGmõ%˾*· úY‘êÜž׺館û´ëcIîÑ ÇÛ4Hyϧµ÷ŒNšo°½é¦¦Å§ÛþÇ3‡QWáYÕYÝ8ÿRÞ^«ž—v¿¬(™–j1›GàZÙr$»×vÈ7F™’G…’æÁ2ÌZ<®ºÚNHNHûcŒóÑíÖ:…þ±[’D£6êîlý{ûjªaªND–ŠúPÚ\‡¨ÏÖ mÝØ±È®³—’÷ðíŠM{Þkë]@Ù[áP¢c“ÆE¯ÝV^%#M£ 4Ù¼¡„>™²¯Np¿½¦®BRh«~d‡å•)¹ Ê·¿Ý9:¨¸¿Ü¼õûžñMÅçõx‡#_5ÍA*ÇrNšÖÈÈWçôÿ”óÏù9ΖÒ_mlhζ÷¨kïȉÉÖ ÁßTA¬’›m^÷´ùŸTÅWëQLúz«0ë9h;øœR÷ƒlŒqx#¥ƒÕ/.ëpŽæ ²Š»£Çý\ª&[­¿lïY;¤(î€ÁyE’=2 H¶F¬ÔK¤¼*ÂO¼‡Iw•tô 6+Û)^>¾œ²¶4¦‚—¿¼šhtÃô±TsûjÞÜHÖiL>— ¨›þ…;„ÇS]³zy‘ñø=cwc¨qˆ˜‹¸ðF¶ß˦½A®´ïÁ) -áÊê'3k"›®§Ù %|ú ×-aâ‡lª–2In§Ã1H?¢HÎöºº]uÓÓâÇŒK­ù±6°ùNUÜí6/1¦„½`u) bã à¶Ú½JˆšÕP¼’ì H>ï@»@)«Kö.lØ3ñº­¿Ýn{>6„Û îìh¼bOÃ)xªF«EªéžQ5±BÏç¶V«‹Eªé94 }—=ªY¥‚ÓíjÖ™g&hœíM;Û´u#bϰ 9[mCU4Hevxå#ÞªVÞæ¶¦O¥Üë“õËë ¿L×”vú”áÖU˜V(R£ßµRú{·ê©Ar>LÙÎŽo gCœ–+òÈÔqøºwʸ{%Ço·—¿çQš^¯ÖxNvúÄæª‡œ hFEiq»ioaî,ý^o‚.î¦IIM{÷½ÛÖÿÃ@Ú_kS,©ãšÊÞo—AHJNÉDZ¾%”¹YÁl2˜ñ5u]«ØíŽ6´Éº¯Åár×9\þ?w“·ÛÇ '_uͪøÚ[µõúÕÛ8äQÕ¿[³õÖ­ÍÍÃüÍ$¦%DGá)ïÛ¯ –èèœ>C•A¬RššZÐåFuuª‚Ö<-Šš¶>+;Òn=‡ŽÁ4¡@k/µ·v¾#©¾Â«ÉˆÉ0*¡ÈŠ$ˆÆþA×!Ȫ!Ëv«×Úæÿ³ú\‡×•ö)ÑRû"ÕQÛÁÈ3 öN¡i'ä’ì_Ö¦Í"Å@ÝÞ:¤pdÁ±›ŽÂq§zÚ žX#€ÍŒÛµ=‚YŠfÅIå'¬¸™·^'õ2úM+³IŒšÍêå=rõŒ…¹wa{…M%Á¯5Â䣹udõ)èlþïW°X‚ëwýîâmÚ„Âm©>kU£FçÄhm|Þ¨ð4T·KCÑ|8H>çz·05ɧv•\amyxïv6TD%Ý£ %U–}è ;;fA{ZvúI"ø½gIòu -0tiN‘~‘v¨V Œ×ã¬ÆxA‚¸£ÍkwÙÖúŒ?OÖ5uxCÉdEµæ¯ÿ)ZAr¼VïÉMMZ’<[¶¾0ƒN]…kÕábs8ª0žfö-‰†“¢ÅV»s8ñ”Z§„Þ˜:Àp‡ôÝþ}'oÝßùwæÞÖœolÍÏrS.MŒ¿«päsñ¾ƒ2Ði´×mûÊ-œœ“vUbÜ-ù#_Šónô…l•*ŠìÝãs´îo2²ûóv9Å TÌšu£Ñhuš¸~£Ý-G‹.æ–sŽA?>.îb‹fxgÍtM‚N¯zÚ/xy•} Í;uqOd+ë›w&äº ßpî0ð8[ži.~eŒ>Ý`úYîˆëtŽgkº·| y«Ãa°œ4ÐBI§×[éötþòH^Eiõx+ݾÎ$Oûõ^t¦“-†,³å¶ÑiÇImO ¸ƒ¡ “htÛÚ‡vìÛ±Jÿ#Q4Z¦ËŽŸxYÏoŽ—WïøÀ¡ŠÏöÚ†½ÒÄœßÎa”=»«,)níÞPÐ'=ÜsBžéÑSÓ’m?Þ]ãUÀk«þÃfñ–ÂŒ?ÍÎêšëŸÜP±5´P€pòU'Ùp4K^Óœqõ”¬8§£}]ñî¥åí}v_–|®r7q6gû¦8ÏÊ­»ŒãF^qÜä_RMcÝ#ßWmó†¤ùÈÕ3€nTÚ/F²µÂúéMûâù»í‹7„9g&}m¢V’Új;Š7»{9_^×ú›Ìó’.½1·§bKÃÁÐe*% šªJÛ§¼í`Îåœs6‚„µ˜u_w%É|~sqá+h$ê×°ì9Î9ùEN†¦yûƒ®ñÎPeDfÿ|u3ï¥È€«†ò•4øgt¥ƒ|ö2 ®åì"ö½Íû;¹ô¸” ݪ¾šwsù4¼þT¹•:S“€¶bVÝO}ïu ²¦VÌô ± b³jyƒTUõ,РqBÀÝ›ñIíã9ëô"ÞZö¾ÀúÏzÖù…#+•óáœrç>‹Öm|y7•‡±¡Þ Å2ÇÄvÿÇ7pпÔ^º³2{f¶%ˆCßW:ÕS¹£|Ózeü„üÌøD“äj©Ü»swåÀoýdÃ,ÒÐ\}‰˜úЈŸŒ½>Ïö¶¶×:üëÞi‡Mº%-ã&m”€Ëãø¤¬ò©î1"õTÉñ—ýMÙ£“ÍWjm­wïnIÉ}ƒY«ëŒ”•]Ïî¯/ÈO¹?ß²·¹ñúbÇ9¢ŽëY(©j•:²w—¼¶] ïiv¸“t;n²3òþ“½¹¼hG Óæ´5Ü\©}4+oU.6—ý_C;J T„ y£7å£îäÍ•þ„ å•Üí/µ¥ý=ÎùrcŸ ÍëjÀ|ø7ÂAñ~°¿L—“~û˜üE¥©ÃúÈîº×‡éEgmoúÈ›wcFÔ;¥ö¶¡‰Ê›+Ë~¥dÜ[0z‘¨ÔÙZïÞ]¿z ®ÎbIº5Ú·bOÇ1y–l„Ç&š1Wæÿj¾éÈï&xŒð­¼?ÑgrÛr²LGÛŽ01ræ2.=õh›qXä<À¢‡y£ÅG>îfŒùë°Œ£Gø¿Ž–”½«hÌ Éú#ñdkõ±ÿï¸ñ; cÓþo‰!B„G•äŸs‚™Ýÿ¡¥ó8fÿŠŽ¯©w…¯8B„ÿ]¢’ÿ‘)~Ó`ÛâôºuæË²Óó´=6„]C"D ¥®©úFsî¿FZf©¢ÖºÑ)΄Èû7]IDAT©¡}ÌzÃŒ„„Û³âǹš~Qj­ûoˆs†ˆë!B„cšö­t\ÉéçeÄÛ@é»|±Œ¡ìöì’¾„Û—týÛþ5ÿzŠaÙÊføÑ3çy¦õì/ŒôÃÑ6éÿ"^·}•'åš‘ Ñ‹HÞ-­M×húñ¿"r4Â1€ô}eÙi¶„ʼnŸœº}ï¾kB?Ah04æ‡&æœ);¿­©\\k«ü/úÊûo=!B„ÿ5˜’ÐŒ\ÈlÖÃ×w¤­5&a´Ö‰­íh[!B„"Dˆ!B„"Dˆ!B„"Dˆ!B„"Dˆ!B„þO‰uŽ!B„GA›š‘¥Çcoi¨k´ºe@´äŒÍ‹í<.B‘è¿Áøµp<eCÌN ¿ƒÎE¯2ü?Ø÷“óhåÛÍáÕsPÙ£^ pŒ €àúÞ×xàAh Èý8l°v\ùs(€u°T¶âï·Ã† 182󜌸ü(¹¥µqéŽòoö¿Ñ™®ž˜3?Éh’=»«*ÿVÜXÕ{fTlÚÓófJÕ·~WYÞ{E¥ 5Ÿ1&ïŠÌ˜dÜØ\÷üöÊ!ïèN¾A .«‰ºzö¤Ë”Š×ÖÔ ¥·L³`Hyºçx‘ÎÆ­ÿõªƒC;ig0«M^fö£“'™5‚"UÕ–Þ»½¹%4³Uê9è½qŒÆIÓL­Û[+;ÂW6,hÆ\9ò”–ª—?wKÛ"$_Ï—týûËŸSr”¶Ÿ×Œâš¿³íú®Ã8Ž«†dó‘ÅÈ™o06ºçïZ^~`$ÿb&Lj&:ŽbÖ?EqU×eB³~͸ɘõ(6­dÍk´¸zÔ¾,`bü Ì8‹ÛvV?ÎÁÎót œº”‰ñ=J?ðÒuó*MTöä¢É™=§4Éüá‹ÿÔyAcNÏËIðoóÇTnünGƒG}|VnNŸÃm޲ƒME4§ÌèlG¹¡no…MV“ fUWuÓ sãP¢Û*›ª|gAŸ•›c¶ÙËF\çáài8b`q¿¤<8?@}±?.7Ëu^9þÿ.û ]磒o7‡WÏAebmˆ°þŸÿ¿û]çñpS¿‹ÿæwð>Ì÷ÿþ\KýÿWPWÂ÷ƒÛßÇy‚ѽrOÉ?ì^ÌñWNλkª«x}—g&hcÎwW?º¶¡Æ˜´hÚèÇ5Þ_îhë:9H4ž2vô/³v‰Æ´SÇ_×üô†ÒýbìSGþv’ýºšÛBè|ÂËW½òC‘sóF_5ø'ÙáiVä-%û–ÛºîTErqï–Á¬sòÆ>]¨]½{ï-.Yo*Œ–BôîÔëYýÞ8²FÓäYq¥ûÛ*;"/+šÞà¥eh ¹âþ£mÊ1oÕQ§á9V¬£ó~VÜ]ž¨Mf%/²²Ò(º‡3GíbÚ:G@l?ðÙRÚmX&sú¯9×Á¯#…-‹@ömœZÈWwÓ gƽœ}¯Þ‡C7ënf£¿Ëú §¡”Ú„±3'gšpÕìÚº¯Î!D'edF÷r9•¦­«·¶ˆÑI¹'çDgÉÜßXæP@¶XûU¹¨±äŸX”kìØ¿þûr‡,{=2àkÞ±vN!*wúÔgùæ-UNEötH¨Ë†d•`HÊŒâG$èªj‡c“Ûòÿ@„Wªì\0´ð4üâ',æÑÊ·›pêyØÛhXjã7ð(¿¡´wê+ðŽÿßø‡¸ æC1üÆÃ›ð"| ‡¸ƒ%p ¬ƒY°q ¬û¹Î’«ù…Í]ÿqÖ¿Y™67Ïœ(R#BBZÖSÇ«mp(Ø›ÖÛ³nÊÌ>m¿õC‡ZÓmûsëJ&.»_^¢~B¼¦²¼z­Õ-á~ïPÆÜ “E ×9¼|ÕU‡ «‹N»c”~¯U*Š_‚f¹©Íº­õ0Gm³J4&Þ\U¼sÛ?ªÜàtW…ºéUzV½7"(nœn´v”cé ãØ´ê¨#Ù±·ôýQnbõ3þÿ4°á ."J×åþ*­ìø¸+Ѷ’?cfºÜßpdÑ2b,-²?2üð§`Ôàðx¬=cÌN„|‚`Ì›k‚Ž}·•µK€³²½±÷5Šìq¹>סýe¹9cµ:  øo忆/×vØCþ¨P“ÕG¿(CóqÙw¦ÄÓæÄdD 45¾¶´µ-˜rmjòÕ—hWàš|ARJ]Ã{+•—¤øÚÞ{£±.`Ê{Ê% ^^uNá¤_^Z÷°þqJýŸ-ú<æ,bìx4>ê×°úyêBžQ—Íy€ót¼ö'ÜÆ¸ñh`íu FÆ\KÑYÄšhßÊê')kP­%ï æœO|T¨Æ„hUÍV 8yùhÀ×JÉ_Y¹!¤{p›+¯ž9/ý}Ì©¶²t„4 n¾á ¤ŽyMtës%míï[{ÚŒãWœ]ôæœ17eE[ú-ÙÔhMyFÁb1Åôm&«ÄÔx£ØaµÆ¤ß=ë¸÷Î:~é¬ü‹ušP4¡žûÝ¡W“þe ÆÒÆO>osf%,8Ù¬ïN‹¶Ì»25×Úüþ?Ë^ÿ ];-ã쉺.Û ÑÜ^pûMɉ¢î„ëòï\Rpç’ü…§µ¡Èú/‰œqщšŠU5Ÿmó…Þ‰ ZýÔSÌÍ;⨄“æÇ ÅíÖKABwC©•(Xª:±ó¹| ÞÏxóZ^¿ƒ{ÐÄdæ=Mn\ÏÒ»i,ä⇈íXÐPdÅtòÚøè&^¹–åOSÙj¾A4+oâd•sHÇŒ›™{ê(˜Û™Nš—~³3XýÎôc¸ön_Áe‹izõ»†IV¡â9vk¸øN±¬x‡°ç“DCŒIg‹U%*XŒÉ3nü”™³'Ä žšÝ{Ã?Ä,l«´q™‰<õËÊÛ@—œ3ÔHÀÁÑù+çÁgà…q~gº„ýp< p—` 8&ÀNyp>¼ V=õtxœp9äÂç½Mšÿ®‡¼€¸OB°J…ÎïÈp& 0¦Bt¾¸~ )~¨Fø“?b5–À=p$õ¾l¬„s¡ÆÁ¤áh •ò–ÀFÈ„¹þ‹ð]'v]% >3Üy0‚šÞ׈`‚à…Þ¿‡SÏ*²A­R¿ëÂ! Îë@Nm7ÇÃð6ÔD6w–«<ð$äöHöúþ_ä(Ú›‹¹y…æJomØ¿²§ëÍ"n¯$ Úéc²ÌåÅë]šlƒV q£YòT9¼.“aj‚¶µÌã õån¾‡Æ˜tËØè]»·}ï&wX5+ÞÖ¿mØ«ÑÄ›ÍÓRÏŸ8qfìžÅ»­¶€:ñÚ«ïþ®-ÑÓQÞûU¢j•`ÒkDsê}ÓØT²I›’“•w× cY»s¹] ¦9ÄzðÞ]º±ayÅ7¥’‚Ým¹xdt¢ÎQ네iI£½mo}Ó^ïƒÖÖu{ã.™d6ï°Úðt|½´L{Áå1˪6·(€ìöu/ÃW“íº„¸¾Ï_­-±#Ë#B5XÐëÅíÕëöS‹2’ë^ß Ì™eÔ Ýcƒ—(xª fŠâzŸ/—uõÇmA\ ççåý¿RíXó9gú¾Þ\qH²ét<Æg« o€ë¬ÉåÄYl[Ìž}[–2å1²ãØÝ  Éãä³(}ˆ5ëQ@7ä[Cݪ šEL&$Ö:ììu½f¾ÕQ׬^^Dâ5|ô©…,É7 ÜÈ(K×”d8mä¿÷Hº ÎgãŠz¥øJY~#†xÒŠ(ZÌ% ,³w®¬â¦µo*Ùq,Ç3¬ Š€,©Ž#ÓòF(­»Öm­ý£ëˆY¥‰ÉHÖá­ª²v8ªÚˆKI·hZچǥß¿…kÀ ·Á:Ðú÷ºê\ƒUª &ûƒ8;Ý͉p ü>î­V%U„ßp=¼ ô lè<þn0kŸ¯Ou«T¨`,œêÿå|ȃJÿ„¾ì͆Vȃ¥-¾cw[{§°`¼pÖ”b»­Wjî¼µ¤sX:¼|Õ4« êfŽË`­¸¥Æ#f$ÖàÈÞ²–Îä–Uu«ÆO~4'{Né®Ïz9£ŠÍn· Ñ*¯OFeݽåÿ·wîáQ•gÿÍ$sK2™sH ˜p‹HP ˆ–«Ôj]Ek}¼TžÅ‚ÛuYY·m}Ô§-ewu©º‘®¥‹ºxT¼¹ TÈŠ¡"„pÍÈý2™ÉLf&3gÿ˜œd&™œ3ÃL¤ûì÷{æ<ó÷;ïûž/ç¼ó}ï÷žM—Ü>¨®:—Ÿ=uIŽé½3N¯rÏùy¨±=çšžÈHŽõ‹¢I°ŽÑaN¿ÿÉ Mü:“‡$©Ëæui|>¿ä¶{mrã•e{¥a_S•]:ŽVo,ïO¹Õ¦§¯x$3»oFIò|ñfÍÁÆÞfÉíüòl_BòzOïöH¿?ä_fH‹"hš+9)TF˜([CF TÓ,/@õ\¢ÉMvÚ¯QYæŽP¶Šýð—Ùú$¹Á4‘T˜ñïÌêÒbVó ,Nö|ý¤šV*=wsäe²Öòðj?åÄ..\PóƒŒrÏÊö"Q»»L¶?Ñè"³Gž:Œåɤ/á{?àØ:Êï;÷b¯Ç^OË).ÛyðaÆ}He[̲‰Lù9eðöc¹c=÷&óÖF¢úu<Éëò€É`6jC×0BjýêÏÓJoÈ3¦åf™j.{Ñ5­Ì9YzpëFŽŸè7à£Õš\ÙÑÅvÈãáÐçD˜À-pKÐ÷}áàqx~ë`üÖ- +´š €½áô1Ð;Æ?תª•ÍÐ7@ | á>ȃ­¨ÿâ°À¹. !ò3pò¤oì“iªöî†&X0Ìð¢Æâ+U¦ð±¢ëZa ¿†%¢E£ý|Z)º±P7D&Lôͼ å0æÃï!õ¤Áï ÖC)Žpîê;¤‡ ”ÄΚ´¬±ÏOL|¿üÔ;¡±‘ß[ã”R,¤¥<^}ÉÆh*4Ðb÷F²ƒ"iDÞƒ#ÜÛ4Ôø$:.¿ð•yó´1˪ÿ²-0;(¹?9Vñyÿü¦Ôãõxãq^¥ž•I4ßnM4RðÆ’¾—üMKò]mçWmjŽçÔHϹ†Î®üÔ<½FýI¥¢•¿Õîÿ©¯O6·Þ#™ô 걿ºŸ‡‘\‡—¯opSµ8=Á9¾ —_{·Ë}UþS“•Ü]ýáðV5¿ÍöÞ뎄þ±!¹ƒ&ç%Ÿßã H>{˜¹0e‹TìU@ ‰ß qTø»ú'›¥ }5€—÷Vp1Ü„1tËö&¤ ‹ÓMÕž;÷󇣌¾•©ËY¶ŒÆmìxw£S¹ge{ñã‘#cwstOU’ʸó1þò4åU*G:NáÒ’f¶XeõS¹©„òGiuÃiv½ÈÃOQ²“òÚXL‘Üí-.,¦ŒÑéºææ!n»’ÏÕÙÐðuCÎ Öô‰“³¯|QÉå>­´ÉÖl#`È;.[öëÈì¤3‘o¿P ï|®Ð¿_.–4„ôÃ/a< ÃMðŒ“ão…ÖÀ:¾Dof» ¦›+gÇZu0;­è†Z9ˆÜV˜ÀÿÄÁ‹½Äž€>ØÉÊöÚá5xÖÀ"^‡¯T DçcÔ¼Ñ[°g<­VÊ£.Fí)é³0,4‚ u‚]ÞY.úO¸Â5 z¼iti+§d´Ty;Llä;[o—ÌÙ“[.nïôƒk<ÎÃm‘¬Íj’L†$zZz•g‰™ºþ¨ÅÙínpvËw‹·/Ɖå¼Ê=+ÒÓñ«}î|Ž?[瑜—ÿù@Å*Z[ã|g×ZG¤$ã©øÄИSRòLUªh%µ´´7¡“Üj“f$s¥ÃíUíYÍÏŠc#* ¦â ‰ŽóŽöÀ¿·äk¬ñ&䤿‡¾†~ɧÑ'·G «„ßï°ymòÇÖÓ}u‹²,Šªu ¾ê»(ø6†Ás(-'` ™ò¶¶ÄÑdh¨Š z‹EœUØuMßêé€t,FM ³ÖéõPÓ*’ž%µðþßò_ÿIöß“4ðc×¥E§³²½ÃçgÌÌ{ûfÊO«k*ÄÔCk{dõYè%ìòï„îœ`6Go~(~{ÍÅNÐå–eöÞo´úT‹qà“Gr7ž¬l“H´ˆ6+<¾Zi“²G&!µølÏž={öìÙw´ºRr²Œ±Ïi**ïðS0wÉSwÀÝ0Ú`=Œƒc …´z  40 L°Yž \/40ôðÜV xƒŽÂùïʈ}ˆ¬ò©ÍqšÁå*o€k`ì ²1_©H^%ÿü2åí}±sÕ~VÐJyÔÅH ˜÷d»èNè»qÃ2@^é‚O8{aü"gz,è¡:´`á­0¦fÞ¨wŸpêÆX’Ç>©&KïaR[Cíû.,–´âC~Ö¨œlv\®ý´o¢T£MÖë,z9A£ÕhÍzEŸ˜,ËÚ:Úë0?6%wfªqTzÆC%#³<‡"úËyÕP•üí®Ð€ÛßÓììntû"z*je°ŒzªdÔ"kÚõ#Òn-*z~¼±¹®îphè¬KÉÝ0¯ä•9ù!åçÔ´òØë·6KӊǯÈJ²¦Xî˜2n®¯é¿jÏj~Vø#!I—–šh±¦ÜôÝœb­ýÀ‘n9’”šµœÓ˜—|çºÂ,%ÃT8#kùRsJГJru78Šf[rÓÓ²“'›LšHe‡ ‹T[•èâÈô‹¹k %ŒœNÉ ÆÊ¯hû€j Ÿ 7KßZGR%LJJ ©˜,‚î-‘ʆÃw‘ƒ‡)ZǬ2,VF–ñ­Ÿ2AÖÊv„NsW2þV¿ÄØú!¶ F¯•rÏ cXúŠËÈÈ!e$ÙcÁÆ€—Ô$äsÏoyà7d‡Þf•{V¶W™Xü¬/¤ •KdŒ'+ð)Ä$“†i,^IA)ä|›å+iÛÎE[d]•´i˜÷cÆ’>‰9?ÆÜÉÙšˆtVÂßU]qªÍOòزÛn¹yVÙœ‹Í»>mðšŠßYw✌ù%íËSÎõ¥3g–ç$IySJgΜ1)ÛÉÿ¶Š¬‚VcVN د4u:N§Óéh«oõBjNFHìl7sμ^nž–—¸ú ¨‚p>‚Fø#ôí͘á|{¡T^aWmuË>Ü'‹¤Ð¿` tª(µR&ùz‚v‰…Uka;Üúe |£¡ö€-4¬ ÏÁvx:{ka—ü÷úÐ…þÈ}5ø¼ÊTÀ&0BTB4Éû/£"?–UÐJyÔÅè*h€ r8>€»á$4À)8&Ø åHðð@ì…J°Ân8®ŸGx‡0¹“ƒ_‰’hÀtïÌ’{û¿s¾¾ÿ«Î@Mû–#U¾’üš7Êè÷œ¼tî©ÊöξVŸñ|ÿòL¿\08}ü‹µW¼xí—Ÿ9¦}¼(çgsò4øZ7©©ˆ¬Xf,çU&ÙXzöy=®¤œ§NÓârvª<ù»êN{è)}=ÝÕnÒì®èRì$ÏÞŠ¯“ î/ú€Æw¥¹á…Ï/÷FÔ³²Ÿ•dž:ºBë…€ßVcÛµµåLP±.Éaÿx«fîÂŒ¥]—èóuÔwUs‡_ÞîÃ;[’gÜóXnOÍ—M"—6,RmU¤cÛœÌ]ÁíKÑø°Urhwo“¿™ždîjîÜL‚Ƽû a¦³µÌùÐòÛvôÎwF*?gÍŸ~Èì§)3Ð}…ê½4Éùò¾ |ø:Ëbig¶±ý÷”†ë$z­ö|’3ðÊ­þvœL{‚#Ѐ½’}?§1tƒßAK;I5t‡ŽvíUqU ~ÖH„ŸãÆ /ûŠñù:Ñ\Ï¢ï¢×â­§ê?8üaÿ>¿Xd}Õì|–[fùËhÀvœOÖR{õáë<dŸ£`âøüìYÉô8Û/×wùÂx¢6ovžy|ñ¨ºÏk]]ª5Ç*/!h“3¬É`o¯ªjTOèP•J+1#'\M­}÷žÎúnfÚ¨ëôuA¯4˜-ùo­I®E˜ /Á]§á%8"·¾V¸U.iwÖ½Y¹õWP?/üNÃz˜ ;x&ÁjpÂs0 Ú¥¬•27TB;èƒÞ‡Ìt˜§‚J&¸6ÃàS8«ÈN±‘Pµ×àv¨ƒÏ¢¹‚ÊçUÆÃ)x&‚‡¾A:Bbñó`Ye­”G],ÞpÂFx6Âm ¬Ï¹ÆÀLȆ ð l Ê`97Ão`¸`üC¸ü–é°·-'Ùˆ·‰óoóñ»x¾‘|œáfäSü\€Õ±›7ÿ…Èò×¾qôÌ}•¹ý_øâX#Apé†Õ°n‚R¨ °!²ÒfÁ5$𜿇ûá{ðoñø½7 `?¼ï „õMl¦ALèƒf.üNì¶«ïo¸µ5f`ÖÖ…½ãZk%@ @ @ @ @ @ @ Qñ¿08É êÙ­%tEXtdate:create2018-01-14T15:46:03+01:00óüR %tEXtdate:modify2018-01-14T15:46:03+01:00‚¡ê·IEND®B`‚coloredlogs-15.0.1/docs/examples/0000775000175000017500000000000014060634561017147 5ustar peterpeter00000000000000coloredlogs-15.0.1/docs/examples/custom-colors.sh0000775000175000017500000000045613227716544022332 0ustar peterpeter00000000000000export COLOREDLOGS_LOG_FORMAT='%(asctime)s - %(message)s' export COLOREDLOGS_DATE_FORMAT='%H:%M:%S' export COLOREDLOGS_FIELD_STYLES='' # no styles export COLOREDLOGS_LEVEL_STYLES='spam=22;debug=28;verbose=34;notice=220;warning=202;success=118,bold;error=124;critical=background=red' coloredlogs --demo coloredlogs-15.0.1/docs/examples/custom-log-format.txt0000644000175000017500000000122213622012676023262 0ustar peterpeter00000000000000$ export COLOREDLOGS_LOG_FORMAT='[%(hostname)s] %(asctime)s %(message)s' $ coloredlogs --demo [peter-mbp] 2018-01-14 15:45:44 message with level spam (5) [peter-mbp] 2018-01-14 15:45:45 message with level debug (10) [peter-mbp] 2018-01-14 15:45:46 message with level verbose (15) [peter-mbp] 2018-01-14 15:45:47 message with level info (20) [peter-mbp] 2018-01-14 15:45:48 message with level notice (25) [peter-mbp] 2018-01-14 15:45:49 message with level warning (30) [peter-mbp] 2018-01-14 15:45:50 message with level success (35) [peter-mbp] 2018-01-14 15:45:51 message with level error (40) [peter-mbp] 2018-01-14 15:45:52 message with level critical (50)coloredlogs-15.0.1/docs/examples/defaults.sh0000775000175000017500000000002313227716544021316 0ustar peterpeter00000000000000coloredlogs --demo coloredlogs-15.0.1/docs/examples/custom-log-format.sh0000775000175000017500000000013213227716544023067 0ustar peterpeter00000000000000export COLOREDLOGS_LOG_FORMAT='[%(hostname)s] %(asctime)s %(message)s' coloredlogs --demo coloredlogs-15.0.1/docs/examples/custom-colors.txt0000644000175000017500000000125713622012676022524 0ustar peterpeter00000000000000$ export COLOREDLOGS_LOG_FORMAT='%(asctime)s - %(message)s' $ export COLOREDLOGS_DATE_FORMAT='%H:%M:%S' $ export COLOREDLOGS_FIELD_STYLES='' # no styles $ export COLOREDLOGS_LEVEL_STYLES='spam=22;debug=28;verbose=34;notice=220;warning=202;success=118,bold;error=124;critical=background=red' $ coloredlogs --demo 15:45:23 - message with level spam (5) 15:45:24 - message with level debug (10) 15:45:25 - message with level verbose (15) 15:45:26 - message with level info (20) 15:45:27 - message with level notice (25) 15:45:28 - message with level warning (30) 15:45:29 - message with level success (35) 15:45:30 - message with level error (40) 15:45:31 - message with level critical (50)coloredlogs-15.0.1/docs/examples/defaults.txt0000644000175000017500000000151513622012676021517 0ustar peterpeter00000000000000$ coloredlogs --demo 2018-01-14 15:45:54 peter-mbp coloredlogs.demo[23238] SPAM message with level spam (5) 2018-01-14 15:45:55 peter-mbp coloredlogs.demo[23238] DEBUG message with level debug (10) 2018-01-14 15:45:56 peter-mbp coloredlogs.demo[23238] VERBOSE message with level verbose (15) 2018-01-14 15:45:57 peter-mbp coloredlogs.demo[23238] INFO message with level info (20) 2018-01-14 15:45:58 peter-mbp coloredlogs.demo[23238] NOTICE message with level notice (25) 2018-01-14 15:45:59 peter-mbp coloredlogs.demo[23238] WARNING message with level warning (30) 2018-01-14 15:46:00 peter-mbp coloredlogs.demo[23238] SUCCESS message with level success (35) 2018-01-14 15:46:01 peter-mbp coloredlogs.demo[23238] ERROR message with level error (40) 2018-01-14 15:46:02 peter-mbp coloredlogs.demo[23238] CRITICAL message with level critical (50)coloredlogs-15.0.1/docs/examples/custom-datetime-format.txt0000644000175000017500000000076413622012676024307 0ustar peterpeter00000000000000$ export COLOREDLOGS_LOG_FORMAT='%(asctime)s - %(message)s' $ export COLOREDLOGS_DATE_FORMAT='%H:%M:%S' $ coloredlogs --demo 15:45:34 - message with level spam (5) 15:45:35 - message with level debug (10) 15:45:36 - message with level verbose (15) 15:45:37 - message with level info (20) 15:45:38 - message with level notice (25) 15:45:39 - message with level warning (30) 15:45:40 - message with level success (35) 15:45:41 - message with level error (40) 15:45:42 - message with level critical (50)coloredlogs-15.0.1/docs/examples/custom-datetime-format.sh0000775000175000017500000000016713227716544024112 0ustar peterpeter00000000000000export COLOREDLOGS_LOG_FORMAT='%(asctime)s - %(message)s' export COLOREDLOGS_DATE_FORMAT='%H:%M:%S' coloredlogs --demo coloredlogs-15.0.1/docs/changelog.rst0000664000175000017500000000003613270365757020023 0ustar peterpeter00000000000000.. include:: ../CHANGELOG.rst coloredlogs-15.0.1/coloredlogs.pth0000644000175000017500000000022313621625252017424 0ustar peterpeter00000000000000import os; exec('try: __import__("coloredlogs").auto_install() if os.environ.get("COLOREDLOGS_AUTO_INSTALL") else None\nexcept ImportError: pass') coloredlogs-15.0.1/coloredlogs/0000775000175000017500000000000014060634561016715 5ustar peterpeter00000000000000coloredlogs-15.0.1/coloredlogs/__init__.py0000664000175000017500000017564714060634527021054 0ustar peterpeter00000000000000# Colored terminal output for Python's logging module. # # Author: Peter Odding # Last Change: June 11, 2021 # URL: https://coloredlogs.readthedocs.io """ Colored terminal output for Python's :mod:`logging` module. .. contents:: :local: Getting started =============== The easiest way to get started is by importing :mod:`coloredlogs` and calling :mod:`coloredlogs.install()` (similar to :func:`logging.basicConfig()`): >>> import coloredlogs, logging >>> coloredlogs.install(level='DEBUG') >>> logger = logging.getLogger('some.module.name') >>> logger.info("this is an informational message") 2015-10-22 19:13:52 peter-macbook some.module.name[28036] INFO this is an informational message The :mod:`~coloredlogs.install()` function creates a :class:`ColoredFormatter` that injects `ANSI escape sequences`_ into the log output. .. _ANSI escape sequences: https://en.wikipedia.org/wiki/ANSI_escape_code#Colors Environment variables ===================== The following environment variables can be used to configure the :mod:`coloredlogs` module without writing any code: ============================= ============================ ================================== Environment variable Default value Type of value ============================= ============================ ================================== ``$COLOREDLOGS_AUTO_INSTALL`` 'false' a boolean that controls whether :func:`auto_install()` is called ``$COLOREDLOGS_LOG_LEVEL`` 'INFO' a log level name ``$COLOREDLOGS_LOG_FORMAT`` :data:`DEFAULT_LOG_FORMAT` a log format string ``$COLOREDLOGS_DATE_FORMAT`` :data:`DEFAULT_DATE_FORMAT` a date/time format string ``$COLOREDLOGS_LEVEL_STYLES`` :data:`DEFAULT_LEVEL_STYLES` see :func:`parse_encoded_styles()` ``$COLOREDLOGS_FIELD_STYLES`` :data:`DEFAULT_FIELD_STYLES` see :func:`parse_encoded_styles()` ============================= ============================ ================================== If the environment variable `$NO_COLOR`_ is set (the value doesn't matter, even an empty string will do) then :func:`coloredlogs.install()` will take this as a hint that colors should not be used (unless the ``isatty=True`` override was passed by the caller). .. _$NO_COLOR: https://no-color.org/ Examples of customization ========================= Here we'll take a look at some examples of how you can customize :mod:`coloredlogs` using environment variables. .. contents:: :local: About the defaults ------------------ Here's a screen shot of the default configuration for easy comparison with the screen shots of the following customizations (this is the same screen shot that is shown in the introduction): .. image:: images/defaults.png :alt: Screen shot of colored logging with defaults. The screen shot above was taken from ``urxvt`` which doesn't support faint text colors, otherwise the color of green used for `debug` messages would have differed slightly from the color of green used for `spam` messages. Apart from the `faint` style of the `spam` level, the default configuration of `coloredlogs` sticks to the eight color palette defined by the original ANSI standard, in order to provide a somewhat consistent experience across terminals and terminal emulators. Available text styles and colors -------------------------------- Of course you are free to customize the default configuration, in this case you can use any text style or color that you know is supported by your terminal. You can use the ``humanfriendly --demo`` command to try out the supported text styles and colors: .. image:: http://humanfriendly.readthedocs.io/en/latest/_images/ansi-demo.png :alt: Screen shot of the 'humanfriendly --demo' command. Changing the log format ----------------------- The simplest customization is to change the log format, for example: .. literalinclude:: examples/custom-log-format.txt :language: console Here's what that looks like in a terminal (I always work in terminals with a black background and white text): .. image:: images/custom-log-format.png :alt: Screen shot of colored logging with custom log format. Changing the date/time format ----------------------------- You can also change the date/time format, for example you can remove the date part and leave only the time: .. literalinclude:: examples/custom-datetime-format.txt :language: console Here's what it looks like in a terminal: .. image:: images/custom-datetime-format.png :alt: Screen shot of colored logging with custom date/time format. Changing the colors/styles -------------------------- Finally you can customize the colors and text styles that are used: .. literalinclude:: examples/custom-colors.txt :language: console Here's an explanation of the features used here: - The numbers used in ``$COLOREDLOGS_LEVEL_STYLES`` demonstrate the use of 256 color mode (the numbers refer to the 256 color mode palette which is fixed). - The `success` level demonstrates the use of a text style (bold). - The `critical` level demonstrates the use of a background color (red). Of course none of this can be seen in the shell transcript quoted above, but take a look at the following screen shot: .. image:: images/custom-colors.png :alt: Screen shot of colored logging with custom colors. .. _notes about log levels: Some notes about log levels =========================== With regards to the handling of log levels, the :mod:`coloredlogs` package differs from Python's :mod:`logging` module in two aspects: 1. While the :mod:`logging` module uses the default logging level :data:`logging.WARNING`, the :mod:`coloredlogs` package has always used :data:`logging.INFO` as its default log level. 2. When logging to the terminal or system log is initialized by :func:`install()` or :func:`.enable_system_logging()` the effective level [#]_ of the selected logger [#]_ is compared against the requested level [#]_ and if the effective level is more restrictive than the requested level, the logger's level will be set to the requested level (this happens in :func:`adjust_level()`). The reason for this is to work around a combination of design choices in Python's :mod:`logging` module that can easily confuse people who aren't already intimately familiar with it: - All loggers are initialized with the level :data:`logging.NOTSET`. - When a logger's level is set to :data:`logging.NOTSET` the :func:`~logging.Logger.getEffectiveLevel()` method will fall back to the level of the parent logger. - The parent of all loggers is the root logger and the root logger has its level set to :data:`logging.WARNING` by default (after importing the :mod:`logging` module). Effectively all user defined loggers inherit the default log level :data:`logging.WARNING` from the root logger, which isn't very intuitive for those who aren't already familiar with the hierarchical nature of the :mod:`logging` module. By avoiding this potentially confusing behavior (see `#14`_, `#18`_, `#21`_, `#23`_ and `#24`_), while at the same time allowing the caller to specify a logger object, my goal and hope is to provide sane defaults that can easily be changed when the need arises. .. [#] Refer to :func:`logging.Logger.getEffectiveLevel()` for details. .. [#] The logger that is passed as an argument by the caller or the root logger which is selected as a default when no logger is provided. .. [#] The log level that is passed as an argument by the caller or the default log level :data:`logging.INFO` when no level is provided. .. _#14: https://github.com/xolox/python-coloredlogs/issues/14 .. _#18: https://github.com/xolox/python-coloredlogs/issues/18 .. _#21: https://github.com/xolox/python-coloredlogs/pull/21 .. _#23: https://github.com/xolox/python-coloredlogs/pull/23 .. _#24: https://github.com/xolox/python-coloredlogs/issues/24 Classes and functions ===================== """ # Standard library modules. import collections import logging import os import re import socket import sys # External dependencies. from humanfriendly import coerce_boolean from humanfriendly.compat import coerce_string, is_string, on_windows from humanfriendly.terminal import ANSI_COLOR_CODES, ansi_wrap, enable_ansi_support, terminal_supports_colors from humanfriendly.text import format, split # Semi-standard module versioning. __version__ = '15.0.1' DEFAULT_LOG_LEVEL = logging.INFO """The default log level for :mod:`coloredlogs` (:data:`logging.INFO`).""" DEFAULT_LOG_FORMAT = '%(asctime)s %(hostname)s %(name)s[%(process)d] %(levelname)s %(message)s' """The default log format for :class:`ColoredFormatter` objects (a string).""" DEFAULT_DATE_FORMAT = '%Y-%m-%d %H:%M:%S' """The default date/time format for :class:`ColoredFormatter` objects (a string).""" CHROOT_FILES = ['/etc/debian_chroot'] """A list of filenames that indicate a chroot and contain the name of the chroot.""" DEFAULT_FIELD_STYLES = dict( asctime=dict(color='green'), hostname=dict(color='magenta'), levelname=dict(color='black', bold=True), name=dict(color='blue'), programname=dict(color='cyan'), username=dict(color='yellow'), ) """Mapping of log format names to default font styles.""" DEFAULT_LEVEL_STYLES = dict( spam=dict(color='green', faint=True), debug=dict(color='green'), verbose=dict(color='blue'), info=dict(), notice=dict(color='magenta'), warning=dict(color='yellow'), success=dict(color='green', bold=True), error=dict(color='red'), critical=dict(color='red', bold=True), ) """Mapping of log level names to default font styles.""" DEFAULT_FORMAT_STYLE = '%' """The default logging format style (a single character).""" FORMAT_STYLE_PATTERNS = { '%': r'%\((\w+)\)[#0 +-]*\d*(?:\.\d+)?[hlL]?[diouxXeEfFgGcrs%]', '{': r'{(\w+)[^}]*}', '$': r'\$(\w+)|\${(\w+)}', } """ A dictionary that maps the `style` characters ``%``, ``{`` and ``$`` (see the documentation of the :class:`python3:logging.Formatter` class in Python 3.2+) to strings containing regular expression patterns that can be used to parse format strings in the corresponding style: ``%`` A string containing a regular expression that matches a "percent conversion specifier" as defined in the `String Formatting Operations`_ section of the Python documentation. Here's an example of a logging format string in this format: ``%(levelname)s:%(name)s:%(message)s``. ``{`` A string containing a regular expression that matches a "replacement field" as defined in the `Format String Syntax`_ section of the Python documentation. Here's an example of a logging format string in this format: ``{levelname}:{name}:{message}``. ``$`` A string containing a regular expression that matches a "substitution placeholder" as defined in the `Template Strings`_ section of the Python documentation. Here's an example of a logging format string in this format: ``$levelname:$name:$message``. These regular expressions are used by :class:`FormatStringParser` to introspect and manipulate logging format strings. .. _String Formatting Operations: https://docs.python.org/2/library/stdtypes.html#string-formatting .. _Format String Syntax: https://docs.python.org/2/library/string.html#formatstrings .. _Template Strings: https://docs.python.org/3/library/string.html#template-strings """ def auto_install(): """ Automatically call :func:`install()` when ``$COLOREDLOGS_AUTO_INSTALL`` is set. The `coloredlogs` package includes a `path configuration file`_ that automatically imports the :mod:`coloredlogs` module and calls :func:`auto_install()` when the environment variable ``$COLOREDLOGS_AUTO_INSTALL`` is set. This function uses :func:`~humanfriendly.coerce_boolean()` to check whether the value of ``$COLOREDLOGS_AUTO_INSTALL`` should be considered :data:`True`. .. _path configuration file: https://docs.python.org/2/library/site.html#module-site """ if coerce_boolean(os.environ.get('COLOREDLOGS_AUTO_INSTALL', 'false')): install() def install(level=None, **kw): """ Enable colored terminal output for Python's :mod:`logging` module. :param level: The default logging level (an integer or a string with a level name, defaults to :data:`DEFAULT_LOG_LEVEL`). :param logger: The logger to which the stream handler should be attached (a :class:`~logging.Logger` object, defaults to the root logger). :param fmt: Set the logging format (a string like those accepted by :class:`~logging.Formatter`, defaults to :data:`DEFAULT_LOG_FORMAT`). :param datefmt: Set the date/time format (a string, defaults to :data:`DEFAULT_DATE_FORMAT`). :param style: One of the characters ``%``, ``{`` or ``$`` (defaults to :data:`DEFAULT_FORMAT_STYLE`). See the documentation of the :class:`python3:logging.Formatter` class in Python 3.2+. On older Python versions only ``%`` is supported. :param milliseconds: :data:`True` to show milliseconds like :mod:`logging` does by default, :data:`False` to hide milliseconds (the default is :data:`False`, see `#16`_). :param level_styles: A dictionary with custom level styles (defaults to :data:`DEFAULT_LEVEL_STYLES`). :param field_styles: A dictionary with custom field styles (defaults to :data:`DEFAULT_FIELD_STYLES`). :param stream: The stream where log messages should be written to (a file-like object). This defaults to :data:`None` which means :class:`StandardErrorHandler` is used. :param isatty: :data:`True` to use a :class:`ColoredFormatter`, :data:`False` to use a normal :class:`~logging.Formatter` (defaults to auto-detection using :func:`~humanfriendly.terminal.terminal_supports_colors()`). :param reconfigure: If :data:`True` (the default) multiple calls to :func:`coloredlogs.install()` will each override the previous configuration. :param use_chroot: Refer to :class:`HostNameFilter`. :param programname: Refer to :class:`ProgramNameFilter`. :param username: Refer to :class:`UserNameFilter`. :param syslog: If :data:`True` then :func:`.enable_system_logging()` will be called without arguments (defaults to :data:`False`). The `syslog` argument may also be a number or string, in this case it is assumed to be a logging level which is passed on to :func:`.enable_system_logging()`. The :func:`coloredlogs.install()` function is similar to :func:`logging.basicConfig()`, both functions take a lot of optional keyword arguments but try to do the right thing by default: 1. If `reconfigure` is :data:`True` (it is by default) and an existing :class:`~logging.StreamHandler` is found that is connected to either :data:`~sys.stdout` or :data:`~sys.stderr` the handler will be removed. This means that first calling :func:`logging.basicConfig()` and then calling :func:`coloredlogs.install()` will replace the stream handler instead of adding a duplicate stream handler. If `reconfigure` is :data:`False` and an existing handler is found no further steps are taken (to avoid installing a duplicate stream handler). 2. A :class:`~logging.StreamHandler` is created and connected to the stream given by the `stream` keyword argument (:data:`sys.stderr` by default). The stream handler's level is set to the value of the `level` keyword argument. 3. A :class:`ColoredFormatter` is created if the `isatty` keyword argument allows it (or auto-detection allows it), otherwise a normal :class:`~logging.Formatter` is created. The formatter is initialized with the `fmt` and `datefmt` keyword arguments (or their computed defaults). The environment variable ``$NO_COLOR`` is taken as a hint by auto-detection that colors should not be used. 4. :func:`HostNameFilter.install()`, :func:`ProgramNameFilter.install()` and :func:`UserNameFilter.install()` are called to enable the use of additional fields in the log format. 5. If the logger's level is too restrictive it is relaxed (refer to `notes about log levels`_ for details). 6. The formatter is added to the handler and the handler is added to the logger. .. _#16: https://github.com/xolox/python-coloredlogs/issues/16 """ logger = kw.get('logger') or logging.getLogger() reconfigure = kw.get('reconfigure', True) stream = kw.get('stream') or sys.stderr style = check_style(kw.get('style') or DEFAULT_FORMAT_STYLE) # Get the log level from an argument, environment variable or default and # convert the names of log levels to numbers to enable numeric comparison. if level is None: level = os.environ.get('COLOREDLOGS_LOG_LEVEL', DEFAULT_LOG_LEVEL) level = level_to_number(level) # Remove any existing stream handler that writes to stdout or stderr, even # if the stream handler wasn't created by coloredlogs because multiple # stream handlers (in the same hierarchy) writing to stdout or stderr would # create duplicate output. `None' is a synonym for the possibly dynamic # value of the stderr attribute of the sys module. match_streams = ([sys.stdout, sys.stderr] if stream in [sys.stdout, sys.stderr, None] else [stream]) match_handler = lambda handler: match_stream_handler(handler, match_streams) handler, logger = replace_handler(logger, match_handler, reconfigure) # Make sure reconfiguration is allowed or not relevant. if not (handler and not reconfigure): # Make it easy to enable system logging. syslog_enabled = kw.get('syslog') # We ignore the value `None' because it means the caller didn't opt in # to system logging and `False' because it means the caller explicitly # opted out of system logging. if syslog_enabled not in (None, False): from coloredlogs.syslog import enable_system_logging if syslog_enabled is True: # If the caller passed syslog=True then we leave the choice of # default log level up to the coloredlogs.syslog module. enable_system_logging() else: # Values other than (None, True, False) are assumed to # represent a logging level for system logging. enable_system_logging(level=syslog_enabled) # Figure out whether we can use ANSI escape sequences. use_colors = kw.get('isatty', None) # In the following indented block the expression (use_colors is None) # can be read as "auto detect is enabled and no reason has yet been # found to automatically disable color support". if use_colors or (use_colors is None): # Respect the user's choice not to have colors. if use_colors is None and 'NO_COLOR' in os.environ: # For details on this see https://no-color.org/. use_colors = False # Try to enable Windows native ANSI support or Colorama? if (use_colors or use_colors is None) and on_windows(): # This can fail, in which case ANSI escape sequences would end # up being printed to the terminal in raw form. This is very # user hostile, so to avoid this happening we disable color # support on failure. use_colors = enable_ansi_support() # When auto detection is enabled, and so far we encountered no # reason to disable color support, then we will enable color # support if 'stream' is connected to a terminal. if use_colors is None: use_colors = terminal_supports_colors(stream) # Create a stream handler and make sure to preserve any filters # the current handler may have (if an existing handler is found). filters = handler.filters if handler else None if stream is sys.stderr: handler = StandardErrorHandler() else: handler = logging.StreamHandler(stream) handler.setLevel(level) if filters: handler.filters = filters # Prepare the arguments to the formatter, allowing the caller to # customize the values of `fmt', `datefmt' and `style' as desired. formatter_options = dict(fmt=kw.get('fmt'), datefmt=kw.get('datefmt')) # Only pass the `style' argument to the formatter when the caller # provided an alternative logging format style. This prevents # TypeError exceptions on Python versions before 3.2. if style != DEFAULT_FORMAT_STYLE: formatter_options['style'] = style # Come up with a default log format? if not formatter_options['fmt']: # Use the log format defined by the environment variable # $COLOREDLOGS_LOG_FORMAT or fall back to the default. formatter_options['fmt'] = os.environ.get('COLOREDLOGS_LOG_FORMAT') or DEFAULT_LOG_FORMAT # If the caller didn't specify a date/time format we'll use the format # defined by the environment variable $COLOREDLOGS_DATE_FORMAT (or fall # back to the default). if not formatter_options['datefmt']: formatter_options['datefmt'] = os.environ.get('COLOREDLOGS_DATE_FORMAT') or DEFAULT_DATE_FORMAT # Python's logging module shows milliseconds by default through special # handling in the logging.Formatter.formatTime() method [1]. Because # coloredlogs always defines a `datefmt' it bypasses this special # handling, which is fine because ever since publishing coloredlogs # I've never needed millisecond precision ;-). However there are users # of coloredlogs that do want milliseconds to be shown [2] so we # provide a shortcut to make it easy. # # [1] https://stackoverflow.com/questions/6290739/python-logging-use-milliseconds-in-time-format # [2] https://github.com/xolox/python-coloredlogs/issues/16 if kw.get('milliseconds'): parser = FormatStringParser(style=style) if not (parser.contains_field(formatter_options['fmt'], 'msecs') or '%f' in formatter_options['datefmt']): pattern = parser.get_pattern('asctime') replacements = {'%': '%(msecs)03d', '{': '{msecs:03}', '$': '${msecs}'} formatter_options['fmt'] = pattern.sub( r'\g<0>,' + replacements[style], formatter_options['fmt'], ) # Do we need to make %(hostname) available to the formatter? HostNameFilter.install( fmt=formatter_options['fmt'], handler=handler, style=style, use_chroot=kw.get('use_chroot', True), ) # Do we need to make %(programname) available to the formatter? ProgramNameFilter.install( fmt=formatter_options['fmt'], handler=handler, programname=kw.get('programname'), style=style, ) # Do we need to make %(username) available to the formatter? UserNameFilter.install( fmt=formatter_options['fmt'], handler=handler, username=kw.get('username'), style=style, ) # Inject additional formatter arguments specific to ColoredFormatter? if use_colors: for name, environment_name in (('field_styles', 'COLOREDLOGS_FIELD_STYLES'), ('level_styles', 'COLOREDLOGS_LEVEL_STYLES')): value = kw.get(name) if value is None: # If no styles have been specified we'll fall back # to the styles defined by the environment variable. environment_value = os.environ.get(environment_name) if environment_value is not None: value = parse_encoded_styles(environment_value) if value is not None: formatter_options[name] = value # Create a (possibly colored) formatter. formatter_type = ColoredFormatter if use_colors else BasicFormatter handler.setFormatter(formatter_type(**formatter_options)) # Adjust the level of the selected logger. adjust_level(logger, level) # Install the stream handler. logger.addHandler(handler) def check_style(value): """ Validate a logging format style. :param value: The logging format style to validate (any value). :returns: The logging format character (a string of one character). :raises: :exc:`~exceptions.ValueError` when the given style isn't supported. On Python 3.2+ this function accepts the logging format styles ``%``, ``{`` and ``$`` while on older versions only ``%`` is accepted (because older Python versions don't support alternative logging format styles). """ if sys.version_info[:2] >= (3, 2): if value not in FORMAT_STYLE_PATTERNS: msg = "Unsupported logging format style! (%r)" raise ValueError(format(msg, value)) elif value != DEFAULT_FORMAT_STYLE: msg = "Format string styles other than %r require Python 3.2+!" raise ValueError(msg, DEFAULT_FORMAT_STYLE) return value def increase_verbosity(): """ Increase the verbosity of the root handler by one defined level. Understands custom logging levels like defined by my ``verboselogs`` module. """ defined_levels = sorted(set(find_defined_levels().values())) current_index = defined_levels.index(get_level()) selected_index = max(0, current_index - 1) set_level(defined_levels[selected_index]) def decrease_verbosity(): """ Decrease the verbosity of the root handler by one defined level. Understands custom logging levels like defined by my ``verboselogs`` module. """ defined_levels = sorted(set(find_defined_levels().values())) current_index = defined_levels.index(get_level()) selected_index = min(current_index + 1, len(defined_levels) - 1) set_level(defined_levels[selected_index]) def is_verbose(): """ Check whether the log level of the root handler is set to a verbose level. :returns: ``True`` if the root handler is verbose, ``False`` if not. """ return get_level() < DEFAULT_LOG_LEVEL def get_level(): """ Get the logging level of the root handler. :returns: The logging level of the root handler (an integer) or :data:`DEFAULT_LOG_LEVEL` (if no root handler exists). """ handler, logger = find_handler(logging.getLogger(), match_stream_handler) return handler.level if handler else DEFAULT_LOG_LEVEL def set_level(level): """ Set the logging level of the root handler. :param level: The logging level to filter on (an integer or string). If no root handler exists yet this automatically calls :func:`install()`. """ handler, logger = find_handler(logging.getLogger(), match_stream_handler) if handler and logger: # Change the level of the existing handler. handler.setLevel(level_to_number(level)) # Adjust the level of the selected logger. adjust_level(logger, level) else: # Create a new handler with the given level. install(level=level) def adjust_level(logger, level): """ Increase a logger's verbosity up to the requested level. :param logger: The logger to change (a :class:`~logging.Logger` object). :param level: The log level to enable (a string or number). This function is used by functions like :func:`install()`, :func:`increase_verbosity()` and :func:`.enable_system_logging()` to adjust a logger's level so that log messages up to the requested log level are propagated to the configured output handler(s). It uses :func:`logging.Logger.getEffectiveLevel()` to check whether `logger` propagates or swallows log messages of the requested `level` and sets the logger's level to the requested level if it would otherwise swallow log messages. Effectively this function will "widen the scope of logging" when asked to do so but it will never "narrow the scope of logging". This is because I am convinced that filtering of log messages should (primarily) be decided by handlers. """ level = level_to_number(level) if logger.getEffectiveLevel() > level: logger.setLevel(level) def find_defined_levels(): """ Find the defined logging levels. :returns: A dictionary with level names as keys and integers as values. Here's what the result looks like by default (when no custom levels or level names have been defined): >>> find_defined_levels() {'NOTSET': 0, 'DEBUG': 10, 'INFO': 20, 'WARN': 30, 'WARNING': 30, 'ERROR': 40, 'FATAL': 50, 'CRITICAL': 50} """ defined_levels = {} for name in dir(logging): if name.isupper(): value = getattr(logging, name) if isinstance(value, int): defined_levels[name] = value return defined_levels def level_to_number(value): """ Coerce a logging level name to a number. :param value: A logging level (integer or string). :returns: The number of the log level (an integer). This function translates log level names into their numeric values.. """ if is_string(value): try: defined_levels = find_defined_levels() value = defined_levels[value.upper()] except KeyError: # Don't fail on unsupported log levels. value = DEFAULT_LOG_LEVEL return value def find_level_aliases(): """ Find log level names which are aliases of each other. :returns: A dictionary that maps aliases to their canonical name. .. note:: Canonical names are chosen to be the alias with the longest string length so that e.g. ``WARN`` is an alias for ``WARNING`` instead of the other way around. Here's what the result looks like by default (when no custom levels or level names have been defined): >>> from coloredlogs import find_level_aliases >>> find_level_aliases() {'WARN': 'WARNING', 'FATAL': 'CRITICAL'} """ mapping = collections.defaultdict(list) for name, value in find_defined_levels().items(): mapping[value].append(name) aliases = {} for value, names in mapping.items(): if len(names) > 1: names = sorted(names, key=lambda n: len(n)) canonical_name = names.pop() for alias in names: aliases[alias] = canonical_name return aliases def parse_encoded_styles(text, normalize_key=None): """ Parse text styles encoded in a string into a nested data structure. :param text: The encoded styles (a string). :returns: A dictionary in the structure of the :data:`DEFAULT_FIELD_STYLES` and :data:`DEFAULT_LEVEL_STYLES` dictionaries. Here's an example of how this function works: >>> from coloredlogs import parse_encoded_styles >>> from pprint import pprint >>> encoded_styles = 'debug=green;warning=yellow;error=red;critical=red,bold' >>> pprint(parse_encoded_styles(encoded_styles)) {'debug': {'color': 'green'}, 'warning': {'color': 'yellow'}, 'error': {'color': 'red'}, 'critical': {'bold': True, 'color': 'red'}} """ parsed_styles = {} for assignment in split(text, ';'): name, _, styles = assignment.partition('=') target = parsed_styles.setdefault(name, {}) for token in split(styles, ','): # When this code was originally written, setting background colors # wasn't supported yet, so there was no need to disambiguate # between the text color and background color. This explains why # a color name or number implies setting the text color (for # backwards compatibility). if token.isdigit(): target['color'] = int(token) elif token in ANSI_COLOR_CODES: target['color'] = token elif '=' in token: name, _, value = token.partition('=') if name in ('color', 'background'): if value.isdigit(): target[name] = int(value) elif value in ANSI_COLOR_CODES: target[name] = value else: target[token] = True return parsed_styles def find_hostname(use_chroot=True): """ Find the host name to include in log messages. :param use_chroot: Use the name of the chroot when inside a chroot? (boolean, defaults to :data:`True`) :returns: A suitable host name (a string). Looks for :data:`CHROOT_FILES` that have a nonempty first line (taken to be the chroot name). If none are found then :func:`socket.gethostname()` is used as a fall back. """ for chroot_file in CHROOT_FILES: try: with open(chroot_file) as handle: first_line = next(handle) name = first_line.strip() if name: return name except Exception: pass return socket.gethostname() def find_program_name(): """ Select a suitable program name to embed in log messages. :returns: One of the following strings (in decreasing order of preference): 1. The base name of the currently running Python program or script (based on the value at index zero of :data:`sys.argv`). 2. The base name of the Python executable (based on :data:`sys.executable`). 3. The string 'python'. """ # Gotcha: sys.argv[0] is '-c' if Python is started with the -c option. return ((os.path.basename(sys.argv[0]) if sys.argv and sys.argv[0] != '-c' else '') or (os.path.basename(sys.executable) if sys.executable else '') or 'python') def find_username(): """ Find the username to include in log messages. :returns: A suitable username (a string). On UNIX systems this uses the :mod:`pwd` module which means ``root`` will be reported when :man:`sudo` is used (as it should). If this fails (for example on Windows) then :func:`getpass.getuser()` is used as a fall back. """ try: import pwd uid = os.getuid() entry = pwd.getpwuid(uid) return entry.pw_name except Exception: import getpass return getpass.getuser() def replace_handler(logger, match_handler, reconfigure): """ Prepare to replace a handler. :param logger: Refer to :func:`find_handler()`. :param match_handler: Refer to :func:`find_handler()`. :param reconfigure: :data:`True` if an existing handler should be replaced, :data:`False` otherwise. :returns: A tuple of two values: 1. The matched :class:`~logging.Handler` object or :data:`None` if no handler was matched. 2. The :class:`~logging.Logger` to which the matched handler was attached or the logger given to :func:`replace_handler()`. """ handler, other_logger = find_handler(logger, match_handler) if handler and other_logger and reconfigure: # Remove the existing handler from the logger that its attached to # so that we can install a new handler that behaves differently. other_logger.removeHandler(handler) # Switch to the logger that the existing handler was attached to so # that reconfiguration doesn't narrow the scope of logging. logger = other_logger return handler, logger def find_handler(logger, match_handler): """ Find a (specific type of) handler in the propagation tree of a logger. :param logger: The logger to check (a :class:`~logging.Logger` object). :param match_handler: A callable that receives a :class:`~logging.Handler` object and returns :data:`True` to match a handler or :data:`False` to skip that handler and continue searching for a match. :returns: A tuple of two values: 1. The matched :class:`~logging.Handler` object or :data:`None` if no handler was matched. 2. The :class:`~logging.Logger` object to which the handler is attached or :data:`None` if no handler was matched. This function finds a logging handler (of the given type) attached to a logger or one of its parents (see :func:`walk_propagation_tree()`). It uses the undocumented :class:`~logging.Logger.handlers` attribute to find handlers attached to a logger, however it won't raise an exception if the attribute isn't available. The advantages of this approach are: - This works regardless of whether :mod:`coloredlogs` attached the handler or other Python code attached the handler. - This will correctly recognize the situation where the given logger has no handlers but :attr:`~logging.Logger.propagate` is enabled and the logger has a parent logger that does have a handler attached. """ for logger in walk_propagation_tree(logger): for handler in getattr(logger, 'handlers', []): if match_handler(handler): return handler, logger return None, None def match_stream_handler(handler, streams=[]): """ Identify stream handlers writing to the given streams(s). :param handler: The :class:`~logging.Handler` class to check. :param streams: A sequence of streams to match (defaults to matching :data:`~sys.stdout` and :data:`~sys.stderr`). :returns: :data:`True` if the handler is a :class:`~logging.StreamHandler` logging to the given stream(s), :data:`False` otherwise. This function can be used as a callback for :func:`find_handler()`. """ return (isinstance(handler, logging.StreamHandler) and getattr(handler, 'stream') in (streams or (sys.stdout, sys.stderr))) def walk_propagation_tree(logger): """ Walk through the propagation hierarchy of the given logger. :param logger: The logger whose hierarchy to walk (a :class:`~logging.Logger` object). :returns: A generator of :class:`~logging.Logger` objects. .. note:: This uses the undocumented :class:`logging.Logger.parent` attribute to find higher level loggers, however it won't raise an exception if the attribute isn't available. """ while isinstance(logger, logging.Logger): # Yield the logger to our caller. yield logger # Check if the logger has propagation enabled. if logger.propagate: # Continue with the parent logger. We use getattr() because the # `parent' attribute isn't documented so properly speaking we # shouldn't break if it's not available. logger = getattr(logger, 'parent', None) else: # The propagation chain stops here. logger = None class BasicFormatter(logging.Formatter): """ Log :class:`~logging.Formatter` that supports ``%f`` for millisecond formatting. This class extends :class:`~logging.Formatter` to enable the use of ``%f`` for millisecond formatting in date/time strings, to allow for the type of flexibility requested in issue `#45`_. .. _#45: https://github.com/xolox/python-coloredlogs/issues/45 """ def formatTime(self, record, datefmt=None): """ Format the date/time of a log record. :param record: A :class:`~logging.LogRecord` object. :param datefmt: A date/time format string (defaults to :data:`DEFAULT_DATE_FORMAT`). :returns: The formatted date/time (a string). This method overrides :func:`~logging.Formatter.formatTime()` to set `datefmt` to :data:`DEFAULT_DATE_FORMAT` when the caller hasn't specified a date format. When `datefmt` contains the token ``%f`` it will be replaced by the value of ``%(msecs)03d`` (refer to issue `#45`_ for use cases). """ # The default value of the following argument is defined here so # that Sphinx doesn't embed the default value in the generated # documentation (because the result is awkward to read). datefmt = datefmt or DEFAULT_DATE_FORMAT # Replace %f with the value of %(msecs)03d. if '%f' in datefmt: datefmt = datefmt.replace('%f', '%03d' % record.msecs) # Delegate the actual date/time formatting to the base formatter. return logging.Formatter.formatTime(self, record, datefmt) class ColoredFormatter(BasicFormatter): """ Log :class:`~logging.Formatter` that uses `ANSI escape sequences`_ to create colored logs. :class:`ColoredFormatter` inherits from :class:`BasicFormatter` to enable the use of ``%f`` for millisecond formatting in date/time strings. .. note:: If you want to use :class:`ColoredFormatter` on Windows then you need to call :func:`~humanfriendly.terminal.enable_ansi_support()`. This is done for you when you call :func:`coloredlogs.install()`. """ def __init__(self, fmt=None, datefmt=None, style=DEFAULT_FORMAT_STYLE, level_styles=None, field_styles=None): """ Initialize a :class:`ColoredFormatter` object. :param fmt: A log format string (defaults to :data:`DEFAULT_LOG_FORMAT`). :param datefmt: A date/time format string (defaults to :data:`None`, but see the documentation of :func:`BasicFormatter.formatTime()`). :param style: One of the characters ``%``, ``{`` or ``$`` (defaults to :data:`DEFAULT_FORMAT_STYLE`) :param level_styles: A dictionary with custom level styles (defaults to :data:`DEFAULT_LEVEL_STYLES`). :param field_styles: A dictionary with custom field styles (defaults to :data:`DEFAULT_FIELD_STYLES`). :raises: Refer to :func:`check_style()`. This initializer uses :func:`colorize_format()` to inject ANSI escape sequences in the log format string before it is passed to the initializer of the base class. """ self.nn = NameNormalizer() # The default values of the following arguments are defined here so # that Sphinx doesn't embed the default values in the generated # documentation (because the result is awkward to read). fmt = fmt or DEFAULT_LOG_FORMAT self.level_styles = self.nn.normalize_keys(DEFAULT_LEVEL_STYLES if level_styles is None else level_styles) self.field_styles = self.nn.normalize_keys(DEFAULT_FIELD_STYLES if field_styles is None else field_styles) # Rewrite the format string to inject ANSI escape sequences. kw = dict(fmt=self.colorize_format(fmt, style), datefmt=datefmt) # If we were given a non-default logging format style we pass it on # to our superclass. At this point check_style() will have already # complained that the use of alternative logging format styles # requires Python 3.2 or newer. if style != DEFAULT_FORMAT_STYLE: kw['style'] = style # Initialize the superclass with the rewritten format string. logging.Formatter.__init__(self, **kw) def colorize_format(self, fmt, style=DEFAULT_FORMAT_STYLE): """ Rewrite a logging format string to inject ANSI escape sequences. :param fmt: The log format string. :param style: One of the characters ``%``, ``{`` or ``$`` (defaults to :data:`DEFAULT_FORMAT_STYLE`). :returns: The logging format string with ANSI escape sequences. This method takes a logging format string like the ones you give to :class:`logging.Formatter` and processes it as follows: 1. First the logging format string is separated into formatting directives versus surrounding text (according to the given `style`). 2. Then formatting directives and surrounding text are grouped based on whitespace delimiters (in the surrounding text). 3. For each group styling is selected as follows: 1. If the group contains a single formatting directive that has a style defined then the whole group is styled accordingly. 2. If the group contains multiple formatting directives that have styles defined then each formatting directive is styled individually and surrounding text isn't styled. As an example consider the default log format (:data:`DEFAULT_LOG_FORMAT`):: %(asctime)s %(hostname)s %(name)s[%(process)d] %(levelname)s %(message)s The default field styles (:data:`DEFAULT_FIELD_STYLES`) define a style for the `name` field but not for the `process` field, however because both fields are part of the same whitespace delimited token they'll be highlighted together in the style defined for the `name` field. """ result = [] parser = FormatStringParser(style=style) for group in parser.get_grouped_pairs(fmt): applicable_styles = [self.nn.get(self.field_styles, token.name) for token in group if token.name] if sum(map(bool, applicable_styles)) == 1: # If exactly one (1) field style is available for the group of # tokens then all of the tokens will be styled the same way. # This provides a limited form of backwards compatibility with # the (intended) behavior of coloredlogs before the release of # version 10. result.append(ansi_wrap( ''.join(token.text for token in group), **next(s for s in applicable_styles if s) )) else: for token in group: text = token.text if token.name: field_styles = self.nn.get(self.field_styles, token.name) if field_styles: text = ansi_wrap(text, **field_styles) result.append(text) return ''.join(result) def format(self, record): """ Apply level-specific styling to log records. :param record: A :class:`~logging.LogRecord` object. :returns: The result of :func:`logging.Formatter.format()`. This method injects ANSI escape sequences that are specific to the level of each log record (because such logic cannot be expressed in the syntax of a log format string). It works by making a copy of the log record, changing the `msg` field inside the copy and passing the copy into the :func:`~logging.Formatter.format()` method of the base class. """ style = self.nn.get(self.level_styles, record.levelname) # After the introduction of the `Empty' class it was reported in issue # 33 that format() can be called when `Empty' has already been garbage # collected. This explains the (otherwise rather out of place) `Empty # is not None' check in the following `if' statement. The reasoning # here is that it's much better to log a message without formatting # then to raise an exception ;-). # # For more details refer to issue 33 on GitHub: # https://github.com/xolox/python-coloredlogs/issues/33 if style and Empty is not None: # Due to the way that Python's logging module is structured and # documented the only (IMHO) clean way to customize its behavior is # to change incoming LogRecord objects before they get to the base # formatter. However we don't want to break other formatters and # handlers, so we copy the log record. # # In the past this used copy.copy() but as reported in issue 29 # (which is reproducible) this can cause deadlocks. The following # Python voodoo is intended to accomplish the same thing as # copy.copy() without all of the generalization and overhead that # we don't need for our -very limited- use case. # # For more details refer to issue 29 on GitHub: # https://github.com/xolox/python-coloredlogs/issues/29 copy = Empty() copy.__class__ = record.__class__ copy.__dict__.update(record.__dict__) copy.msg = ansi_wrap(coerce_string(record.msg), **style) record = copy # Delegate the remaining formatting to the base formatter. return logging.Formatter.format(self, record) class Empty(object): """An empty class used to copy :class:`~logging.LogRecord` objects without reinitializing them.""" class HostNameFilter(logging.Filter): """ Log filter to enable the ``%(hostname)s`` format. Python's :mod:`logging` module doesn't expose the system's host name while I consider this to be a valuable addition. Fortunately it's very easy to expose additional fields in format strings: :func:`filter()` simply sets the ``hostname`` attribute of each :class:`~logging.LogRecord` object it receives and this is enough to enable the use of the ``%(hostname)s`` expression in format strings. You can install this log filter as follows:: >>> import coloredlogs, logging >>> handler = logging.StreamHandler() >>> handler.addFilter(coloredlogs.HostNameFilter()) >>> handler.setFormatter(logging.Formatter('[%(hostname)s] %(message)s')) >>> logger = logging.getLogger() >>> logger.addHandler(handler) >>> logger.setLevel(logging.INFO) >>> logger.info("Does it work?") [peter-macbook] Does it work? Of course :func:`coloredlogs.install()` does all of this for you :-). """ @classmethod def install(cls, handler, fmt=None, use_chroot=True, style=DEFAULT_FORMAT_STYLE): """ Install the :class:`HostNameFilter` on a log handler (only if needed). :param fmt: The log format string to check for ``%(hostname)``. :param style: One of the characters ``%``, ``{`` or ``$`` (defaults to :data:`DEFAULT_FORMAT_STYLE`). :param handler: The logging handler on which to install the filter. :param use_chroot: Refer to :func:`find_hostname()`. If `fmt` is given the filter will only be installed if `fmt` uses the ``hostname`` field. If `fmt` is not given the filter is installed unconditionally. """ if fmt: parser = FormatStringParser(style=style) if not parser.contains_field(fmt, 'hostname'): return handler.addFilter(cls(use_chroot)) def __init__(self, use_chroot=True): """ Initialize a :class:`HostNameFilter` object. :param use_chroot: Refer to :func:`find_hostname()`. """ self.hostname = find_hostname(use_chroot) def filter(self, record): """Set each :class:`~logging.LogRecord`'s `hostname` field.""" # Modify the record. record.hostname = self.hostname # Don't filter the record. return 1 class ProgramNameFilter(logging.Filter): """ Log filter to enable the ``%(programname)s`` format. Python's :mod:`logging` module doesn't expose the name of the currently running program while I consider this to be a useful addition. Fortunately it's very easy to expose additional fields in format strings: :func:`filter()` simply sets the ``programname`` attribute of each :class:`~logging.LogRecord` object it receives and this is enough to enable the use of the ``%(programname)s`` expression in format strings. Refer to :class:`HostNameFilter` for an example of how to manually install these log filters. """ @classmethod def install(cls, handler, fmt, programname=None, style=DEFAULT_FORMAT_STYLE): """ Install the :class:`ProgramNameFilter` (only if needed). :param fmt: The log format string to check for ``%(programname)``. :param style: One of the characters ``%``, ``{`` or ``$`` (defaults to :data:`DEFAULT_FORMAT_STYLE`). :param handler: The logging handler on which to install the filter. :param programname: Refer to :func:`__init__()`. If `fmt` is given the filter will only be installed if `fmt` uses the ``programname`` field. If `fmt` is not given the filter is installed unconditionally. """ if fmt: parser = FormatStringParser(style=style) if not parser.contains_field(fmt, 'programname'): return handler.addFilter(cls(programname)) def __init__(self, programname=None): """ Initialize a :class:`ProgramNameFilter` object. :param programname: The program name to use (defaults to the result of :func:`find_program_name()`). """ self.programname = programname or find_program_name() def filter(self, record): """Set each :class:`~logging.LogRecord`'s `programname` field.""" # Modify the record. record.programname = self.programname # Don't filter the record. return 1 class UserNameFilter(logging.Filter): """ Log filter to enable the ``%(username)s`` format. Python's :mod:`logging` module doesn't expose the username of the currently logged in user as requested in `#76`_. Given that :class:`HostNameFilter` and :class:`ProgramNameFilter` are already provided by `coloredlogs` it made sense to provide :class:`UserNameFilter` as well. Refer to :class:`HostNameFilter` for an example of how to manually install these log filters. .. _#76: https://github.com/xolox/python-coloredlogs/issues/76 """ @classmethod def install(cls, handler, fmt, username=None, style=DEFAULT_FORMAT_STYLE): """ Install the :class:`UserNameFilter` (only if needed). :param fmt: The log format string to check for ``%(username)``. :param style: One of the characters ``%``, ``{`` or ``$`` (defaults to :data:`DEFAULT_FORMAT_STYLE`). :param handler: The logging handler on which to install the filter. :param username: Refer to :func:`__init__()`. If `fmt` is given the filter will only be installed if `fmt` uses the ``username`` field. If `fmt` is not given the filter is installed unconditionally. """ if fmt: parser = FormatStringParser(style=style) if not parser.contains_field(fmt, 'username'): return handler.addFilter(cls(username)) def __init__(self, username=None): """ Initialize a :class:`UserNameFilter` object. :param username: The username to use (defaults to the result of :func:`find_username()`). """ self.username = username or find_username() def filter(self, record): """Set each :class:`~logging.LogRecord`'s `username` field.""" # Modify the record. record.username = self.username # Don't filter the record. return 1 class StandardErrorHandler(logging.StreamHandler): """ A :class:`~logging.StreamHandler` that gets the value of :data:`sys.stderr` for each log message. The :class:`StandardErrorHandler` class enables `monkey patching of sys.stderr `_. It's basically the same as the ``logging._StderrHandler`` class present in Python 3 but it will be available regardless of Python version. This handler is used by :func:`coloredlogs.install()` to improve compatibility with the Python standard library. """ def __init__(self, level=logging.NOTSET): """Initialize a :class:`StandardErrorHandler` object.""" logging.Handler.__init__(self, level) @property def stream(self): """Get the value of :data:`sys.stderr` (a file-like object).""" return sys.stderr class FormatStringParser(object): """ Shallow logging format string parser. This class enables introspection and manipulation of logging format strings in the three styles supported by the :mod:`logging` module starting from Python 3.2 (``%``, ``{`` and ``$``). """ def __init__(self, style=DEFAULT_FORMAT_STYLE): """ Initialize a :class:`FormatStringParser` object. :param style: One of the characters ``%``, ``{`` or ``$`` (defaults to :data:`DEFAULT_FORMAT_STYLE`). :raises: Refer to :func:`check_style()`. """ self.style = check_style(style) self.capturing_pattern = FORMAT_STYLE_PATTERNS[style] # Remove the capture group around the mapping key / field name. self.raw_pattern = self.capturing_pattern.replace(r'(\w+)', r'\w+') # After removing the inner capture group we add an outer capture group # to make the pattern suitable for simple tokenization using re.split(). self.tokenize_pattern = re.compile('(%s)' % self.raw_pattern, re.VERBOSE) # Compile a regular expression for finding field names. self.name_pattern = re.compile(self.capturing_pattern, re.VERBOSE) def contains_field(self, format_string, field_name): """ Get the field names referenced by a format string. :param format_string: The logging format string. :returns: A list of strings with field names. """ return field_name in self.get_field_names(format_string) def get_field_names(self, format_string): """ Get the field names referenced by a format string. :param format_string: The logging format string. :returns: A list of strings with field names. """ return self.name_pattern.findall(format_string) def get_grouped_pairs(self, format_string): """ Group the results of :func:`get_pairs()` separated by whitespace. :param format_string: The logging format string. :returns: A list of lists of :class:`FormatStringToken` objects. """ # Step 1: Split simple tokens (without a name) into # their whitespace parts and non-whitespace parts. separated = [] pattern = re.compile(r'(\s+)') for token in self.get_pairs(format_string): if token.name: separated.append(token) else: separated.extend( FormatStringToken(name=None, text=text) for text in pattern.split(token.text) if text ) # Step 2: Group tokens together based on whitespace. current_group = [] grouped_pairs = [] for token in separated: if token.text.isspace(): if current_group: grouped_pairs.append(current_group) grouped_pairs.append([token]) current_group = [] else: current_group.append(token) if current_group: grouped_pairs.append(current_group) return grouped_pairs def get_pairs(self, format_string): """ Tokenize a logging format string and extract field names from tokens. :param format_string: The logging format string. :returns: A generator of :class:`FormatStringToken` objects. """ for token in self.get_tokens(format_string): match = self.name_pattern.search(token) name = match.group(1) if match else None yield FormatStringToken(name=name, text=token) def get_pattern(self, field_name): """ Get a regular expression to match a formatting directive that references the given field name. :param field_name: The name of the field to match (a string). :returns: A compiled regular expression object. """ return re.compile(self.raw_pattern.replace(r'\w+', field_name), re.VERBOSE) def get_tokens(self, format_string): """ Tokenize a logging format string. :param format_string: The logging format string. :returns: A list of strings with formatting directives separated from surrounding text. """ return [t for t in self.tokenize_pattern.split(format_string) if t] class FormatStringToken(collections.namedtuple('FormatStringToken', 'text, name')): """ A named tuple for the results of :func:`FormatStringParser.get_pairs()`. .. attribute:: name The field name referenced in `text` (a string). If `text` doesn't contain a formatting directive this will be :data:`None`. .. attribute:: text The text extracted from the logging format string (a string). """ class NameNormalizer(object): """Responsible for normalizing field and level names.""" def __init__(self): """Initialize a :class:`NameNormalizer` object.""" self.aliases = {k.lower(): v.lower() for k, v in find_level_aliases().items()} def normalize_name(self, name): """ Normalize a field or level name. :param name: The field or level name (a string). :returns: The normalized name (a string). Transforms all strings to lowercase and resolves level name aliases (refer to :func:`find_level_aliases()`) to their canonical name: >>> from coloredlogs import NameNormalizer >>> from humanfriendly import format_table >>> nn = NameNormalizer() >>> sample_names = ['DEBUG', 'INFO', 'WARN', 'WARNING', 'ERROR', 'FATAL', 'CRITICAL'] >>> print(format_table([(n, nn.normalize_name(n)) for n in sample_names])) ----------------------- | DEBUG | debug | | INFO | info | | WARN | warning | | WARNING | warning | | ERROR | error | | FATAL | critical | | CRITICAL | critical | ----------------------- """ name = name.lower() if name in self.aliases: name = self.aliases[name] return name def normalize_keys(self, value): """ Normalize the keys of a dictionary using :func:`normalize_name()`. :param value: The dictionary to normalize. :returns: A dictionary with normalized keys. """ return {self.normalize_name(k): v for k, v in value.items()} def get(self, normalized_dict, name): """ Get a value from a dictionary after normalizing the key. :param normalized_dict: A dictionary produced by :func:`normalize_keys()`. :param name: A key to normalize and get from the dictionary. :returns: The value of the normalized key (if any). """ return normalized_dict.get(self.normalize_name(name)) coloredlogs-15.0.1/coloredlogs/tests.py0000664000175000017500000007410714060634527020444 0ustar peterpeter00000000000000# Automated tests for the `coloredlogs' package. # # Author: Peter Odding # Last Change: June 11, 2021 # URL: https://coloredlogs.readthedocs.io """Automated tests for the `coloredlogs` package.""" # Standard library modules. import contextlib import logging import logging.handlers import os import re import subprocess import sys import tempfile # External dependencies. from humanfriendly.compat import StringIO from humanfriendly.terminal import ANSI_COLOR_CODES, ANSI_CSI, ansi_style, ansi_wrap from humanfriendly.testing import PatchedAttribute, PatchedItem, TestCase, retry from humanfriendly.text import format, random_string # The module we're testing. import coloredlogs import coloredlogs.cli from coloredlogs import ( CHROOT_FILES, ColoredFormatter, NameNormalizer, decrease_verbosity, find_defined_levels, find_handler, find_hostname, find_program_name, find_username, get_level, increase_verbosity, install, is_verbose, level_to_number, match_stream_handler, parse_encoded_styles, set_level, walk_propagation_tree, ) from coloredlogs.demo import demonstrate_colored_logging from coloredlogs.syslog import SystemLogging, is_syslog_supported, match_syslog_handler from coloredlogs.converter import ( ColoredCronMailer, EIGHT_COLOR_PALETTE, capture, convert, ) # External test dependencies. from capturer import CaptureOutput from verboselogs import VerboseLogger # Compiled regular expression that matches a single line of output produced by # the default log format (does not include matching of ANSI escape sequences). PLAIN_TEXT_PATTERN = re.compile(r''' (?P \d{4}-\d{2}-\d{2} ) \s (?P``. By not emitting the wrapper element when no other HTML is generated, cron will not send out an email. """ output = main('coloredlogs', '--convert', 'true', capture=True) assert not output.strip() def test_implicit_usage_message(self): """Test that the usage message is shown when no actions are given.""" assert 'Usage:' in main('coloredlogs', capture=True) def test_explicit_usage_message(self): """Test that the usage message is shown when ``--help`` is given.""" assert 'Usage:' in main('coloredlogs', '--help', capture=True) def test_custom_record_factory(self): """ Test that custom LogRecord factories are supported. This test is a bit convoluted because the logging module suppresses exceptions. We monkey patch the method suspected of encountering exceptions so that we can tell after it was called whether any exceptions occurred (despite the exceptions not propagating). """ if not hasattr(logging, 'getLogRecordFactory'): return self.skipTest("this test requires Python >= 3.2") exceptions = [] original_method = ColoredFormatter.format original_factory = logging.getLogRecordFactory() def custom_factory(*args, **kwargs): record = original_factory(*args, **kwargs) record.custom_attribute = 0xdecafbad return record def custom_method(*args, **kw): try: return original_method(*args, **kw) except Exception as e: exceptions.append(e) raise with PatchedAttribute(ColoredFormatter, 'format', custom_method): logging.setLogRecordFactory(custom_factory) try: demonstrate_colored_logging() finally: logging.setLogRecordFactory(original_factory) # Ensure that no exceptions were triggered. assert not exceptions def check_contents(filename, contents, match): """Check if a line in a file contains an expected string.""" with open(filename) as handle: assert any(contents in line for line in handle) == match def main(*arguments, **options): """Wrap the command line interface to make it easier to test.""" capture = options.get('capture', False) saved_argv = sys.argv saved_stdout = sys.stdout try: sys.argv = arguments if capture: sys.stdout = StringIO() coloredlogs.cli.main() if capture: return sys.stdout.getvalue() finally: sys.argv = saved_argv sys.stdout = saved_stdout @contextlib.contextmanager def cleanup_handlers(): """Context manager to cleanup output handlers.""" # There's nothing to set up so we immediately yield control. yield # After the with block ends we cleanup any output handlers. for match_func in match_stream_handler, match_syslog_handler: handler, logger = find_handler(logging.getLogger(), match_func) if handler and logger: logger.removeHandler(handler) coloredlogs-15.0.1/coloredlogs/demo.py0000664000175000017500000000344113227716544020223 0ustar peterpeter00000000000000# Demonstration of the coloredlogs package. # # Author: Peter Odding # Last Change: January 14, 2018 # URL: https://coloredlogs.readthedocs.io """A simple demonstration of the `coloredlogs` package.""" # Standard library modules. import os import time # Modules included in our package. import coloredlogs # If my verbose logger is installed, we'll use that for the demo. try: from verboselogs import VerboseLogger as getLogger except ImportError: from logging import getLogger # Initialize a logger for this module. logger = getLogger(__name__) DEMO_DELAY = float(os.environ.get('COLOREDLOGS_DEMO_DELAY', '1')) """The number of seconds between each message emitted by :func:`demonstrate_colored_logging()`.""" def demonstrate_colored_logging(): """Interactively demonstrate the :mod:`coloredlogs` package.""" # Determine the available logging levels and order them by numeric value. decorated_levels = [] defined_levels = coloredlogs.find_defined_levels() normalizer = coloredlogs.NameNormalizer() for name, level in defined_levels.items(): if name != 'NOTSET': item = (level, normalizer.normalize_name(name)) if item not in decorated_levels: decorated_levels.append(item) ordered_levels = sorted(decorated_levels) # Initialize colored output to the terminal, default to the most # verbose logging level but enable the user the customize it. coloredlogs.install(level=os.environ.get('COLOREDLOGS_LOG_LEVEL', ordered_levels[0][1])) # Print some examples with different timestamps. for level, name in ordered_levels: log_method = getattr(logger, name, None) if log_method: log_method("message with level %s (%i)", name, level) time.sleep(DEMO_DELAY) coloredlogs-15.0.1/coloredlogs/converter/0000775000175000017500000000000014060634561020724 5ustar peterpeter00000000000000coloredlogs-15.0.1/coloredlogs/converter/__init__.py0000644000175000017500000004366113621625252023044 0ustar peterpeter00000000000000# Program to convert text with ANSI escape sequences to HTML. # # Author: Peter Odding # Last Change: February 14, 2020 # URL: https://coloredlogs.readthedocs.io """Convert text with ANSI escape sequences to HTML.""" # Standard library modules. import codecs import os import pipes import re import subprocess import tempfile # External dependencies. from humanfriendly.terminal import ( ANSI_CSI, ANSI_TEXT_STYLES, clean_terminal_output, output, ) # Modules included in our package. from coloredlogs.converter.colors import ( BRIGHT_COLOR_PALETTE, EIGHT_COLOR_PALETTE, EXTENDED_COLOR_PALETTE, ) # Compiled regular expression that matches leading spaces (indentation). INDENT_PATTERN = re.compile('^ +', re.MULTILINE) # Compiled regular expression that matches a tag followed by a space at the start of a line. TAG_INDENT_PATTERN = re.compile('^(<[^>]+>) ', re.MULTILINE) # Compiled regular expression that matches strings we want to convert. Used to # separate all special strings and literal output in a single pass (this allows # us to properly encode the output without resorting to nasty hacks). TOKEN_PATTERN = re.compile(r''' # Wrap the pattern in a capture group so that re.split() includes the # substrings that match the pattern in the resulting list of strings. ( # Match URLs with supported schemes and domain names. (?: https?:// | www\\. ) # Scan until the end of the URL by matching non-whitespace characters # that are also not escape characters. [^\s\x1b]+ # Alternatively ... | # Match (what looks like) ANSI escape sequences. \x1b \[ .*? m ) ''', re.UNICODE | re.VERBOSE) def capture(command, encoding='UTF-8'): """ Capture the output of an external command as if it runs in an interactive terminal. :param command: The command name and its arguments (a list of strings). :param encoding: The encoding to use to decode the output (a string). :returns: The output of the command. This function runs an external command under ``script`` (emulating an interactive terminal) to capture the output of the command as if it was running in an interactive terminal (including ANSI escape sequences). """ with open(os.devnull, 'wb') as dev_null: # We start by invoking the `script' program in a form that is supported # by the Linux implementation [1] but fails command line validation on # the MacOS (BSD) implementation [2]: The command is specified using # the -c option and the typescript file is /dev/null. # # [1] http://man7.org/linux/man-pages/man1/script.1.html # [2] https://developer.apple.com/legacy/library/documentation/Darwin/Reference/ManPages/man1/script.1.html command_line = ['script', '-qc', ' '.join(map(pipes.quote, command)), '/dev/null'] script = subprocess.Popen(command_line, stdout=subprocess.PIPE, stderr=dev_null) stdout, stderr = script.communicate() if script.returncode == 0: # If `script' succeeded we assume that it understood our command line # invocation which means it's the Linux implementation (in this case # we can use standard output instead of a temporary file). output = stdout.decode(encoding) else: # If `script' failed we assume that it didn't understand our command # line invocation which means it's the MacOS (BSD) implementation # (in this case we need a temporary file because the command line # interface requires it). fd, temporary_file = tempfile.mkstemp(prefix='coloredlogs-', suffix='-capture.txt') try: command_line = ['script', '-q', temporary_file] + list(command) subprocess.Popen(command_line, stdout=dev_null, stderr=dev_null).wait() with codecs.open(temporary_file, 'rb') as handle: output = handle.read() finally: os.unlink(temporary_file) # On MacOS when standard input is /dev/null I've observed # the captured output starting with the characters '^D': # # $ script -q capture.txt echo example ...`` element (a boolean, defaults to :data:`True`). :param tabsize: Refer to :func:`str.expandtabs()` for details. :returns: The text converted to HTML (a string). """ output = [] in_span = False compatible_text_styles = { # The following ANSI text styles have an obvious mapping to CSS. ANSI_TEXT_STYLES['bold']: {'font-weight': 'bold'}, ANSI_TEXT_STYLES['strike_through']: {'text-decoration': 'line-through'}, ANSI_TEXT_STYLES['underline']: {'text-decoration': 'underline'}, } for token in TOKEN_PATTERN.split(text): if token.startswith(('http://', 'https://', 'www.')): url = token if '://' in token else ('http://' + token) token = u'%s' % (html_encode(url), html_encode(token)) elif token.startswith(ANSI_CSI): ansi_codes = token[len(ANSI_CSI):-1].split(';') if all(c.isdigit() for c in ansi_codes): ansi_codes = list(map(int, ansi_codes)) # First we check for a reset code to close the previous # element. As explained on Wikipedia [1] an absence of codes # implies a reset code as well: "No parameters at all in ESC[m acts # like a 0 reset code". # [1] https://en.wikipedia.org/wiki/ANSI_escape_code#CSI_sequences if in_span and (0 in ansi_codes or not ansi_codes): output.append('') in_span = False # Now we're ready to generate the next element (if any) in # the knowledge that we're emitting opening and closing # tags in the correct order. styles = {} is_faint = (ANSI_TEXT_STYLES['faint'] in ansi_codes) is_inverse = (ANSI_TEXT_STYLES['inverse'] in ansi_codes) while ansi_codes: number = ansi_codes.pop(0) # Try to match a compatible text style. if number in compatible_text_styles: styles.update(compatible_text_styles[number]) continue # Try to extract a text and/or background color. text_color = None background_color = None if 30 <= number <= 37: # 30-37 sets the text color from the eight color palette. text_color = EIGHT_COLOR_PALETTE[number - 30] elif 40 <= number <= 47: # 40-47 sets the background color from the eight color palette. background_color = EIGHT_COLOR_PALETTE[number - 40] elif 90 <= number <= 97: # 90-97 sets the text color from the high-intensity eight color palette. text_color = BRIGHT_COLOR_PALETTE[number - 90] elif 100 <= number <= 107: # 100-107 sets the background color from the high-intensity eight color palette. background_color = BRIGHT_COLOR_PALETTE[number - 100] elif number in (38, 39) and len(ansi_codes) >= 2 and ansi_codes[0] == 5: # 38;5;N is a text color in the 256 color mode palette, # 39;5;N is a background color in the 256 color mode palette. try: # Consume the 5 following 38 or 39. ansi_codes.pop(0) # Consume the 256 color mode color index. color_index = ansi_codes.pop(0) # Set the variable to the corresponding HTML/CSS color. if number == 38: text_color = EXTENDED_COLOR_PALETTE[color_index] elif number == 39: background_color = EXTENDED_COLOR_PALETTE[color_index] except (ValueError, IndexError): pass # Apply the 'faint' or 'inverse' text style # by manipulating the selected color(s). if text_color and is_inverse: # Use the text color as the background color and pick a # text color that will be visible on the resulting # background color. background_color = text_color text_color = select_text_color(*parse_hex_color(text_color)) if text_color and is_faint: # Because I wasn't sure how to implement faint colors # based on normal colors I looked at how gnome-terminal # (my terminal of choice) handles this and it appears # to just pick a somewhat darker color. text_color = '#%02X%02X%02X' % tuple( max(0, n - 40) for n in parse_hex_color(text_color) ) if text_color: styles['color'] = text_color if background_color: styles['background-color'] = background_color if styles: token = '' % ';'.join(k + ':' + v for k, v in sorted(styles.items())) in_span = True else: token = '' else: token = html_encode(token) output.append(token) html = ''.join(output) html = encode_whitespace(html, tabsize) if code: html = '%s' % html return html def encode_whitespace(text, tabsize=4): """ Encode whitespace so that web browsers properly render it. :param text: The plain text (a string). :param tabsize: Refer to :func:`str.expandtabs()` for details. :returns: The text converted to HTML (a string). The purpose of this function is to encode whitespace in such a way that web browsers render the same whitespace regardless of whether 'preformatted' styling is used (by wrapping the text in a ``
...
`` element). .. note:: While the string manipulation performed by this function is specifically intended not to corrupt the HTML generated by :func:`convert()` it definitely does have the potential to corrupt HTML from other sources. You have been warned :-). """ # Convert Windows line endings (CR+LF) to UNIX line endings (LF). text = text.replace('\r\n', '\n') # Convert UNIX line endings (LF) to HTML line endings (
). text = text.replace('\n', '
\n') # Convert tabs to spaces. text = text.expandtabs(tabsize) # Convert leading spaces (that is to say spaces at the start of the string # and/or directly after a line ending) into non-breaking spaces, otherwise # HTML rendering engines will simply ignore these spaces. text = re.sub(INDENT_PATTERN, encode_whitespace_cb, text) # The conversion of leading spaces we just did misses a corner case where a # line starts with an HTML tag but the first visible text is a space. Web # browsers seem to ignore these spaces, so we need to convert them. text = re.sub(TAG_INDENT_PATTERN, r'\1 ', text) # Convert runs of multiple spaces into non-breaking spaces to avoid HTML # rendering engines from visually collapsing runs of spaces into a single # space. We specifically don't replace single spaces for several reasons: # 1. We'd break the HTML emitted by convert() by replacing spaces # inside HTML elements (for example the spaces that separate # element names from attribute names). # 2. If every single space is replaced by a non-breaking space, # web browsers perform awkwardly unintuitive word wrapping. # 3. The HTML output would be bloated for no good reason. text = re.sub(' {2,}', encode_whitespace_cb, text) return text def encode_whitespace_cb(match): """ Replace runs of multiple spaces with non-breaking spaces. :param match: A regular expression match object. :returns: The replacement string. This function is used by func:`encode_whitespace()` as a callback for replacement using a regular expression pattern. """ return ' ' * len(match.group(0)) def html_encode(text): """ Encode characters with a special meaning as HTML. :param text: The plain text (a string). :returns: The text converted to HTML (a string). """ text = text.replace('&', '&') text = text.replace('<', '<') text = text.replace('>', '>') text = text.replace('"', '"') return text def parse_hex_color(value): """ Convert a CSS color in hexadecimal notation into its R, G, B components. :param value: A CSS color in hexadecimal notation (a string like '#000000'). :return: A tuple with three integers (with values between 0 and 255) corresponding to the R, G and B components of the color. :raises: :exc:`~exceptions.ValueError` on values that can't be parsed. """ if value.startswith('#'): value = value[1:] if len(value) == 3: return ( int(value[0] * 2, 16), int(value[1] * 2, 16), int(value[2] * 2, 16), ) elif len(value) == 6: return ( int(value[0:2], 16), int(value[2:4], 16), int(value[4:6], 16), ) else: raise ValueError() def select_text_color(r, g, b): """ Choose a suitable color for the inverse text style. :param r: The amount of red (an integer between 0 and 255). :param g: The amount of green (an integer between 0 and 255). :param b: The amount of blue (an integer between 0 and 255). :returns: A CSS color in hexadecimal notation (a string). In inverse mode the color that is normally used for the text is instead used for the background, however this can render the text unreadable. The purpose of :func:`select_text_color()` is to make an effort to select a suitable text color. Based on http://stackoverflow.com/a/3943023/112731. """ return '#000' if (r * 0.299 + g * 0.587 + b * 0.114) > 186 else '#FFF' class ColoredCronMailer(object): """ Easy to use integration between :mod:`coloredlogs` and the UNIX ``cron`` daemon. By using :class:`ColoredCronMailer` as a context manager in the command line interface of your Python program you make it trivially easy for users of your program to opt in to HTML output under ``cron``: The only thing the user needs to do is set ``CONTENT_TYPE="text/html"`` in their crontab! Under the hood this requires quite a bit of magic and I must admit that I developed this code simply because I was curious whether it could even be done :-). It requires my :mod:`capturer` package which you can install using ``pip install 'coloredlogs[cron]'``. The ``[cron]`` extra will pull in the :mod:`capturer` 2.4 or newer which is required to capture the output while silencing it - otherwise you'd get duplicate output in the emails sent by ``cron``. """ def __init__(self): """Initialize output capturing when running under ``cron`` with the correct configuration.""" self.is_enabled = 'text/html' in os.environ.get('CONTENT_TYPE', 'text/plain') self.is_silent = False if self.is_enabled: # We import capturer here so that the coloredlogs[cron] extra # isn't required to use the other functions in this module. from capturer import CaptureOutput self.capturer = CaptureOutput(merged=True, relay=False) def __enter__(self): """Start capturing output (when applicable).""" if self.is_enabled: self.capturer.__enter__() return self def __exit__(self, exc_type=None, exc_value=None, traceback=None): """Stop capturing output and convert the output to HTML (when applicable).""" if self.is_enabled: if not self.is_silent: # Only call output() when we captured something useful. text = self.capturer.get_text() if text and not text.isspace(): output(convert(text)) self.capturer.__exit__(exc_type, exc_value, traceback) def silence(self): """ Tell :func:`__exit__()` to swallow all output (things will be silent). This can be useful when a Python program is written in such a way that it has already produced output by the time it becomes apparent that nothing useful can be done (say in a cron job that runs every few minutes :-p). By calling :func:`silence()` the output can be swallowed retroactively, avoiding useless emails from ``cron``. """ self.is_silent = True coloredlogs-15.0.1/coloredlogs/converter/colors.py0000664000175000017500000001241313227716544022606 0ustar peterpeter00000000000000# Mapping of ANSI color codes to HTML/CSS colors. # # Author: Peter Odding # Last Change: January 14, 2018 # URL: https://coloredlogs.readthedocs.io """Mapping of ANSI color codes to HTML/CSS colors.""" EIGHT_COLOR_PALETTE = ( '#010101', # black '#DE382B', # red '#39B54A', # green '#FFC706', # yellow '#006FB8', # blue '#762671', # magenta '#2CB5E9', # cyan '#CCC', # white ) """ A tuple of strings mapping basic color codes to CSS colors. The items in this tuple correspond to the eight basic color codes for black, red, green, yellow, blue, magenta, cyan and white as defined in the original standard for ANSI escape sequences. The CSS colors are based on the `Ubuntu color scheme`_ described on Wikipedia and they are encoded as hexadecimal values to get the shortest strings, which reduces the size (in bytes) of conversion output. .. _Ubuntu color scheme: https://en.wikipedia.org/wiki/ANSI_escape_code#Colors """ BRIGHT_COLOR_PALETTE = ( '#808080', # black '#F00', # red '#0F0', # green '#FF0', # yellow '#00F', # blue '#F0F', # magenta '#0FF', # cyan '#FFF', # white ) """ A tuple of strings mapping bright color codes to CSS colors. This tuple maps the bright color variants of :data:`EIGHT_COLOR_PALETTE`. """ EXTENDED_COLOR_PALETTE = ( '#000000', '#800000', '#008000', '#808000', '#000080', '#800080', '#008080', '#C0C0C0', '#808080', '#FF0000', '#00FF00', '#FFFF00', '#0000FF', '#FF00FF', '#00FFFF', '#FFFFFF', '#000000', '#00005F', '#000087', '#0000AF', '#0000D7', '#0000FF', '#005F00', '#005F5F', '#005F87', '#005FAF', '#005FD7', '#005FFF', '#008700', '#00875F', '#008787', '#0087AF', '#0087D7', '#0087FF', '#00AF00', '#00AF5F', '#00AF87', '#00AFAF', '#00AFD7', '#00AFFF', '#00D700', '#00D75F', '#00D787', '#00D7AF', '#00D7D7', '#00D7FF', '#00FF00', '#00FF5F', '#00FF87', '#00FFAF', '#00FFD7', '#00FFFF', '#5F0000', '#5F005F', '#5F0087', '#5F00AF', '#5F00D7', '#5F00FF', '#5F5F00', '#5F5F5F', '#5F5F87', '#5F5FAF', '#5F5FD7', '#5F5FFF', '#5F8700', '#5F875F', '#5F8787', '#5F87AF', '#5F87D7', '#5F87FF', '#5FAF00', '#5FAF5F', '#5FAF87', '#5FAFAF', '#5FAFD7', '#5FAFFF', '#5FD700', '#5FD75F', '#5FD787', '#5FD7AF', '#5FD7D7', '#5FD7FF', '#5FFF00', '#5FFF5F', '#5FFF87', '#5FFFAF', '#5FFFD7', '#5FFFFF', '#870000', '#87005F', '#870087', '#8700AF', '#8700D7', '#8700FF', '#875F00', '#875F5F', '#875F87', '#875FAF', '#875FD7', '#875FFF', '#878700', '#87875F', '#878787', '#8787AF', '#8787D7', '#8787FF', '#87AF00', '#87AF5F', '#87AF87', '#87AFAF', '#87AFD7', '#87AFFF', '#87D700', '#87D75F', '#87D787', '#87D7AF', '#87D7D7', '#87D7FF', '#87FF00', '#87FF5F', '#87FF87', '#87FFAF', '#87FFD7', '#87FFFF', '#AF0000', '#AF005F', '#AF0087', '#AF00AF', '#AF00D7', '#AF00FF', '#AF5F00', '#AF5F5F', '#AF5F87', '#AF5FAF', '#AF5FD7', '#AF5FFF', '#AF8700', '#AF875F', '#AF8787', '#AF87AF', '#AF87D7', '#AF87FF', '#AFAF00', '#AFAF5F', '#AFAF87', '#AFAFAF', '#AFAFD7', '#AFAFFF', '#AFD700', '#AFD75F', '#AFD787', '#AFD7AF', '#AFD7D7', '#AFD7FF', '#AFFF00', '#AFFF5F', '#AFFF87', '#AFFFAF', '#AFFFD7', '#AFFFFF', '#D70000', '#D7005F', '#D70087', '#D700AF', '#D700D7', '#D700FF', '#D75F00', '#D75F5F', '#D75F87', '#D75FAF', '#D75FD7', '#D75FFF', '#D78700', '#D7875F', '#D78787', '#D787AF', '#D787D7', '#D787FF', '#D7AF00', '#D7AF5F', '#D7AF87', '#D7AFAF', '#D7AFD7', '#D7AFFF', '#D7D700', '#D7D75F', '#D7D787', '#D7D7AF', '#D7D7D7', '#D7D7FF', '#D7FF00', '#D7FF5F', '#D7FF87', '#D7FFAF', '#D7FFD7', '#D7FFFF', '#FF0000', '#FF005F', '#FF0087', '#FF00AF', '#FF00D7', '#FF00FF', '#FF5F00', '#FF5F5F', '#FF5F87', '#FF5FAF', '#FF5FD7', '#FF5FFF', '#FF8700', '#FF875F', '#FF8787', '#FF87AF', '#FF87D7', '#FF87FF', '#FFAF00', '#FFAF5F', '#FFAF87', '#FFAFAF', '#FFAFD7', '#FFAFFF', '#FFD700', '#FFD75F', '#FFD787', '#FFD7AF', '#FFD7D7', '#FFD7FF', '#FFFF00', '#FFFF5F', '#FFFF87', '#FFFFAF', '#FFFFD7', '#FFFFFF', '#080808', '#121212', '#1C1C1C', '#262626', '#303030', '#3A3A3A', '#444444', '#4E4E4E', '#585858', '#626262', '#6C6C6C', '#767676', '#808080', '#8A8A8A', '#949494', '#9E9E9E', '#A8A8A8', '#B2B2B2', '#BCBCBC', '#C6C6C6', '#D0D0D0', '#DADADA', '#E4E4E4', '#EEEEEE', ) """ A tuple of strings mapping 256 color mode color codes to CSS colors. The items in this tuple correspond to the color codes in the 256 color mode palette. """ coloredlogs-15.0.1/coloredlogs/syslog.py0000644000175000017500000002711113764416727020623 0ustar peterpeter00000000000000# Easy to use system logging for Python's logging module. # # Author: Peter Odding # Last Change: December 10, 2020 # URL: https://coloredlogs.readthedocs.io """ Easy to use UNIX system logging for Python's :mod:`logging` module. Admittedly system logging has little to do with colored terminal output, however: - The `coloredlogs` package is my attempt to do Python logging right and system logging is an important part of that equation. - I've seen a surprising number of quirks and mistakes in system logging done in Python, for example including ``%(asctime)s`` in a format string (the system logging daemon is responsible for adding timestamps and thus you end up with duplicate timestamps that make the logs awful to read :-). - The ``%(programname)s`` filter originated in my system logging code and I wanted it in `coloredlogs` so the step to include this module wasn't that big. - As a bonus this Python module now has a test suite and proper documentation. So there :-P. Go take a look at :func:`enable_system_logging()`. """ # Standard library modules. import logging import logging.handlers import os import socket import sys # External dependencies. from humanfriendly import coerce_boolean from humanfriendly.compat import on_macos, on_windows # Modules included in our package. from coloredlogs import ( DEFAULT_LOG_LEVEL, ProgramNameFilter, adjust_level, find_program_name, level_to_number, replace_handler, ) LOG_DEVICE_MACOSX = '/var/run/syslog' """The pathname of the log device on Mac OS X (a string).""" LOG_DEVICE_UNIX = '/dev/log' """The pathname of the log device on Linux and most other UNIX systems (a string).""" DEFAULT_LOG_FORMAT = '%(programname)s[%(process)d]: %(levelname)s %(message)s' """ The default format for log messages sent to the system log (a string). The ``%(programname)s`` format requires :class:`~coloredlogs.ProgramNameFilter` but :func:`enable_system_logging()` takes care of this for you. The ``name[pid]:`` construct (specifically the colon) in the format allows rsyslogd_ to extract the ``$programname`` from each log message, which in turn allows configuration files in ``/etc/rsyslog.d/*.conf`` to filter these log messages to a separate log file (if the need arises). .. _rsyslogd: https://en.wikipedia.org/wiki/Rsyslog """ # Initialize a logger for this module. logger = logging.getLogger(__name__) class SystemLogging(object): """Context manager to enable system logging.""" def __init__(self, *args, **kw): """ Initialize a :class:`SystemLogging` object. :param args: Positional arguments to :func:`enable_system_logging()`. :param kw: Keyword arguments to :func:`enable_system_logging()`. """ self.args = args self.kw = kw self.handler = None def __enter__(self): """Enable system logging when entering the context.""" if self.handler is None: self.handler = enable_system_logging(*self.args, **self.kw) return self.handler def __exit__(self, exc_type=None, exc_value=None, traceback=None): """ Disable system logging when leaving the context. .. note:: If an exception is being handled when we leave the context a warning message including traceback is logged *before* system logging is disabled. """ if self.handler is not None: if exc_type is not None: logger.warning("Disabling system logging due to unhandled exception!", exc_info=True) (self.kw.get('logger') or logging.getLogger()).removeHandler(self.handler) self.handler = None def enable_system_logging(programname=None, fmt=None, logger=None, reconfigure=True, **kw): """ Redirect :mod:`logging` messages to the system log (e.g. ``/var/log/syslog``). :param programname: The program name to embed in log messages (a string, defaults to the result of :func:`~coloredlogs.find_program_name()`). :param fmt: The log format for system log messages (a string, defaults to :data:`DEFAULT_LOG_FORMAT`). :param logger: The logger to which the :class:`~logging.handlers.SysLogHandler` should be connected (defaults to the root logger). :param level: The logging level for the :class:`~logging.handlers.SysLogHandler` (defaults to :data:`.DEFAULT_LOG_LEVEL`). This value is coerced using :func:`~coloredlogs.level_to_number()`. :param reconfigure: If :data:`True` (the default) multiple calls to :func:`enable_system_logging()` will each override the previous configuration. :param kw: Refer to :func:`connect_to_syslog()`. :returns: A :class:`~logging.handlers.SysLogHandler` object or :data:`None`. If an existing handler is found and `reconfigure` is :data:`False` the existing handler object is returned. If the connection to the system logging daemon fails :data:`None` is returned. As of release 15.0 this function uses :func:`is_syslog_supported()` to check whether system logging is supported and appropriate before it's enabled. .. note:: When the logger's effective level is too restrictive it is relaxed (refer to `notes about log levels`_ for details). """ # Check whether system logging is supported / appropriate. if not is_syslog_supported(): return None # Provide defaults for omitted arguments. programname = programname or find_program_name() logger = logger or logging.getLogger() fmt = fmt or DEFAULT_LOG_FORMAT level = level_to_number(kw.get('level', DEFAULT_LOG_LEVEL)) # Check whether system logging is already enabled. handler, logger = replace_handler(logger, match_syslog_handler, reconfigure) # Make sure reconfiguration is allowed or not relevant. if not (handler and not reconfigure): # Create a system logging handler. handler = connect_to_syslog(**kw) # Make sure the handler was successfully created. if handler: # Enable the use of %(programname)s. ProgramNameFilter.install(handler=handler, fmt=fmt, programname=programname) # Connect the formatter, handler and logger. handler.setFormatter(logging.Formatter(fmt)) logger.addHandler(handler) # Adjust the level of the selected logger. adjust_level(logger, level) return handler def connect_to_syslog(address=None, facility=None, level=None): """ Create a :class:`~logging.handlers.SysLogHandler`. :param address: The device file or network address of the system logging daemon (a string or tuple, defaults to the result of :func:`find_syslog_address()`). :param facility: Refer to :class:`~logging.handlers.SysLogHandler`. Defaults to ``LOG_USER``. :param level: The logging level for the :class:`~logging.handlers.SysLogHandler` (defaults to :data:`.DEFAULT_LOG_LEVEL`). This value is coerced using :func:`~coloredlogs.level_to_number()`. :returns: A :class:`~logging.handlers.SysLogHandler` object or :data:`None` (if the system logging daemon is unavailable). The process of connecting to the system logging daemon goes as follows: - The following two socket types are tried (in decreasing preference): 1. :data:`~socket.SOCK_RAW` avoids truncation of log messages but may not be supported. 2. :data:`~socket.SOCK_STREAM` (TCP) supports longer messages than the default (which is UDP). """ if not address: address = find_syslog_address() if facility is None: facility = logging.handlers.SysLogHandler.LOG_USER if level is None: level = DEFAULT_LOG_LEVEL for socktype in socket.SOCK_RAW, socket.SOCK_STREAM, None: kw = dict(facility=facility, address=address) if socktype is not None: kw['socktype'] = socktype try: handler = logging.handlers.SysLogHandler(**kw) except IOError: # IOError is a superclass of socket.error which can be raised if the system # logging daemon is unavailable. pass else: handler.setLevel(level_to_number(level)) return handler def find_syslog_address(): """ Find the most suitable destination for system log messages. :returns: The pathname of a log device (a string) or an address/port tuple as supported by :class:`~logging.handlers.SysLogHandler`. On Mac OS X this prefers :data:`LOG_DEVICE_MACOSX`, after that :data:`LOG_DEVICE_UNIX` is checked for existence. If both of these device files don't exist the default used by :class:`~logging.handlers.SysLogHandler` is returned. """ if sys.platform == 'darwin' and os.path.exists(LOG_DEVICE_MACOSX): return LOG_DEVICE_MACOSX elif os.path.exists(LOG_DEVICE_UNIX): return LOG_DEVICE_UNIX else: return 'localhost', logging.handlers.SYSLOG_UDP_PORT def is_syslog_supported(): """ Determine whether system logging is supported. :returns: :data:`True` if system logging is supported and can be enabled, :data:`False` if system logging is not supported or there are good reasons for not enabling it. The decision making process here is as follows: Override If the environment variable ``$COLOREDLOGS_SYSLOG`` is set it is evaluated using :func:`~humanfriendly.coerce_boolean()` and the resulting value overrides the platform detection discussed below, this allows users to override the decision making process if they disagree / know better. Linux / UNIX On systems that are not Windows or MacOS (see below) we assume UNIX which means either syslog is available or sending a bunch of UDP packets to nowhere won't hurt anyone... Microsoft Windows Over the years I've had multiple reports of :pypi:`coloredlogs` spewing extremely verbose errno 10057 warning messages to the console (once for each log message I suppose) so I now assume it a default that "syslog-style system logging" is not generally available on Windows. Apple MacOS There's cPython issue `#38780`_ which seems to result in a fatal exception when the Python interpreter shuts down. This is (way) worse than not having system logging enabled. The error message mentioned in `#38780`_ has actually been following me around for years now, see for example: - https://github.com/xolox/python-rotate-backups/issues/9 mentions Docker images implying Linux, so not strictly the same as `#38780`_. - https://github.com/xolox/python-npm-accel/issues/4 is definitely related to `#38780`_ and is what eventually prompted me to add the :func:`is_syslog_supported()` logic. .. _#38780: https://bugs.python.org/issue38780 """ override = os.environ.get("COLOREDLOGS_SYSLOG") if override is not None: return coerce_boolean(override) else: return not (on_windows() or on_macos()) def match_syslog_handler(handler): """ Identify system logging handlers. :param handler: The :class:`~logging.Handler` class to check. :returns: :data:`True` if the handler is a :class:`~logging.handlers.SysLogHandler`, :data:`False` otherwise. This function can be used as a callback for :func:`.find_handler()`. """ return isinstance(handler, logging.handlers.SysLogHandler) coloredlogs-15.0.1/coloredlogs/cli.py0000664000175000017500000000664513223561304020043 0ustar peterpeter00000000000000# Command line interface for the coloredlogs package. # # Author: Peter Odding # Last Change: December 15, 2017 # URL: https://coloredlogs.readthedocs.io """ Usage: coloredlogs [OPTIONS] [ARGS] The coloredlogs program provides a simple command line interface for the Python package by the same name. Supported options: -c, --convert, --to-html Capture the output of an external command (given by the positional arguments) and convert ANSI escape sequences in the output to HTML. If the `coloredlogs' program is attached to an interactive terminal it will write the generated HTML to a temporary file and open that file in a web browser, otherwise the generated HTML will be written to standard output. This requires the `script' program to fake the external command into thinking that it's attached to an interactive terminal (in order to enable output of ANSI escape sequences). If the command didn't produce any output then no HTML will be produced on standard output, this is to avoid empty emails from cron jobs. -d, --demo Perform a simple demonstration of the coloredlogs package to show the colored logging on an interactive terminal. -h, --help Show this message and exit. """ # Standard library modules. import functools import getopt import logging import sys import tempfile import webbrowser # External dependencies. from humanfriendly.terminal import connected_to_terminal, output, usage, warning # Modules included in our package. from coloredlogs.converter import capture, convert from coloredlogs.demo import demonstrate_colored_logging # Initialize a logger for this module. logger = logging.getLogger(__name__) def main(): """Command line interface for the ``coloredlogs`` program.""" actions = [] try: # Parse the command line arguments. options, arguments = getopt.getopt(sys.argv[1:], 'cdh', [ 'convert', 'to-html', 'demo', 'help', ]) # Map command line options to actions. for option, value in options: if option in ('-c', '--convert', '--to-html'): actions.append(functools.partial(convert_command_output, *arguments)) arguments = [] elif option in ('-d', '--demo'): actions.append(demonstrate_colored_logging) elif option in ('-h', '--help'): usage(__doc__) return else: assert False, "Programming error: Unhandled option!" if not actions: usage(__doc__) return except Exception as e: warning("Error: %s", e) sys.exit(1) for function in actions: function() def convert_command_output(*command): """ Command line interface for ``coloredlogs --to-html``. Takes a command (and its arguments) and runs the program under ``script`` (emulating an interactive terminal), intercepts the output of the command and converts ANSI escape sequences in the output to HTML. """ captured_output = capture(command) converted_output = convert(captured_output) if connected_to_terminal(): fd, temporary_file = tempfile.mkstemp(suffix='.html') with open(temporary_file, 'w') as handle: handle.write(converted_output) webbrowser.open(temporary_file) elif captured_output and not captured_output.isspace(): output(converted_output) coloredlogs-15.0.1/README.rst0000644000175000017500000002420113764262064016072 0ustar peterpeter00000000000000coloredlogs: Colored terminal output for Python's logging module ================================================================ .. image:: https://travis-ci.org/xolox/python-coloredlogs.svg?branch=master :target: https://travis-ci.org/xolox/python-coloredlogs .. image:: https://coveralls.io/repos/github/xolox/python-coloredlogs/badge.svg?branch=master :target: https://coveralls.io/github/xolox/python-coloredlogs?branch=master The `coloredlogs` package enables colored terminal output for Python's logging_ module. The ColoredFormatter_ class inherits from `logging.Formatter`_ and uses `ANSI escape sequences`_ to render your logging messages in color. It uses only standard colors so it should work on any UNIX terminal. It's currently tested on Python 2.7, 3.5+ and PyPy (2 and 3). On Windows `coloredlogs` automatically tries to enable native ANSI support (on up-to-date Windows 10 installations) and falls back on using colorama_ (if installed). Here is a screen shot of the demo that is printed when the command ``coloredlogs --demo`` is executed: .. image:: https://coloredlogs.readthedocs.io/en/latest/_images/defaults.png Note that the screenshot above includes custom logging levels defined by my verboselogs_ package: if you install both `coloredlogs` and `verboselogs` it will Just Work (`verboselogs` is of course not required to use `coloredlogs`). .. contents:: :local: Installation ------------ The `coloredlogs` package is available on PyPI_ which means installation should be as simple as: .. code-block:: console $ pip install coloredlogs There's actually a multitude of ways to install Python packages (e.g. the `per user site-packages directory`_, `virtual environments`_ or just installing system wide) and I have no intention of getting into that discussion here, so if this intimidates you then read up on your options before returning to these instructions 😉. Optional dependencies ~~~~~~~~~~~~~~~~~~~~~ Native ANSI support on Windows requires an up-to-date Windows 10 installation. If this is not working for you then consider installing the colorama_ package: .. code-block:: console $ pip install colorama Once colorama_ is installed it will be used automatically. Usage ----- Here's an example of how easy it is to get started: .. code-block:: python import coloredlogs, logging # Create a logger object. logger = logging.getLogger(__name__) # By default the install() function installs a handler on the root logger, # this means that log messages from your code and log messages from the # libraries that you use will all show up on the terminal. coloredlogs.install(level='DEBUG') # If you don't want to see log messages from libraries, you can pass a # specific logger object to the install() function. In this case only log # messages originating from that logger will show up on the terminal. coloredlogs.install(level='DEBUG', logger=logger) # Some examples. logger.debug("this is a debugging message") logger.info("this is an informational message") logger.warning("this is a warning message") logger.error("this is an error message") logger.critical("this is a critical message") Format of log messages ---------------------- The ColoredFormatter_ class supports user defined log formats so you can use any log format you like. The default log format is as follows:: %(asctime)s %(hostname)s %(name)s[%(process)d] %(levelname)s %(message)s This log format results in the following output:: 2015-10-23 03:32:22 peter-macbook coloredlogs.demo[30462] DEBUG message with level 'debug' 2015-10-23 03:32:23 peter-macbook coloredlogs.demo[30462] VERBOSE message with level 'verbose' 2015-10-23 03:32:24 peter-macbook coloredlogs.demo[30462] INFO message with level 'info' ... You can customize the log format and styling using environment variables as well as programmatically, please refer to the `online documentation`_ for details. Enabling millisecond precision ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ If you're switching from `logging.basicConfig()`_ to `coloredlogs.install()`_ you may notice that timestamps no longer include milliseconds. This is because coloredlogs doesn't output milliseconds in timestamps unless you explicitly tell it to. There are three ways to do that: 1. The easy way is to pass the `milliseconds` argument to `coloredlogs.install()`_:: coloredlogs.install(milliseconds=True) This became supported in `release 7.1`_ (due to `#16`_). 2. Alternatively you can change the log format `to include 'msecs'`_:: %(asctime)s,%(msecs)03d %(hostname)s %(name)s[%(process)d] %(levelname)s %(message)s Here's what the call to `coloredlogs.install()`_ would then look like:: coloredlogs.install(fmt='%(asctime)s,%(msecs)03d %(hostname)s %(name)s[%(process)d] %(levelname)s %(message)s') Customizing the log format also enables you to change the delimiter that separates seconds from milliseconds (the comma above). This became possible in `release 3.0`_ which added support for user defined log formats. 3. If the use of ``%(msecs)d`` isn't flexible enough you can instead add ``%f`` to the date/time format, it will be replaced by the value of ``%(msecs)03d``. Support for the ``%f`` directive was added to `release 9.3`_ (due to `#45`_). Custom logging fields ~~~~~~~~~~~~~~~~~~~~~ The following custom log format fields are supported: - ``%(hostname)s`` provides the hostname of the local system. - ``%(programname)s`` provides the name of the currently running program. - ``%(username)s`` provides the username of the currently logged in user. When `coloredlogs.install()`_ detects that any of these fields are used in the format string the applicable logging.Filter_ subclasses are automatically registered to populate the relevant log record fields. Changing text styles and colors ------------------------------- The online documentation contains `an example of customizing the text styles and colors `_. Colored output from cron ------------------------ When `coloredlogs` is used in a cron_ job, the output that's e-mailed to you by cron won't contain any ANSI escape sequences because `coloredlogs` realizes that it's not attached to an interactive terminal. If you'd like to have colors e-mailed to you by cron there are two ways to make it happen: .. contents:: :local: Modifying your crontab ~~~~~~~~~~~~~~~~~~~~~~ Here's an example of a minimal crontab:: MAILTO="your-email-address@here" CONTENT_TYPE="text/html" * * * * * root coloredlogs --to-html your-command The ``coloredlogs`` program is installed when you install the `coloredlogs` Python package. When you execute ``coloredlogs --to-html your-command`` it runs ``your-command`` under the external program ``script`` (you need to have this installed). This makes ``your-command`` think that it's attached to an interactive terminal which means it will output ANSI escape sequences which will then be converted to HTML by the ``coloredlogs`` program. Yes, this is a bit convoluted, but it works great :-) Modifying your Python code ~~~~~~~~~~~~~~~~~~~~~~~~~~ The ColoredCronMailer_ class provides a context manager that automatically enables HTML output when the ``$CONTENT_TYPE`` variable has been correctly set in the crontab. This requires my capturer_ package which you can install using ``pip install 'coloredlogs[cron]'``. The ``[cron]`` extra will pull in capturer_ 2.4 or newer which is required to capture the output while silencing it - otherwise you'd get duplicate output in the emails sent by ``cron``. The context manager can also be used to retroactively silence output that has already been produced, this can be useful to avoid spammy cron jobs that have nothing useful to do but still email their output to the system administrator every few minutes :-). Contact ------- The latest version of `coloredlogs` is available on PyPI_ and GitHub_. The `online documentation`_ is available on Read The Docs and includes a changelog_. For bug reports please create an issue on GitHub_. If you have questions, suggestions, etc. feel free to send me an e-mail at `peter@peterodding.com`_. License ------- This software is licensed under the `MIT license`_. © 2020 Peter Odding. .. External references: .. _#16: https://github.com/xolox/python-coloredlogs/issues/16 .. _#45: https://github.com/xolox/python-coloredlogs/issues/45 .. _ANSI escape sequences: https://en.wikipedia.org/wiki/ANSI_escape_code#Colors .. _capturer: https://pypi.org/project/capturer .. _changelog: https://coloredlogs.readthedocs.org/en/latest/changelog.html .. _colorama: https://pypi.org/project/colorama .. _ColoredCronMailer: https://coloredlogs.readthedocs.io/en/latest/api.html#coloredlogs.converter.ColoredCronMailer .. _ColoredFormatter: https://coloredlogs.readthedocs.io/en/latest/api.html#coloredlogs.ColoredFormatter .. _coloredlogs.install(): https://coloredlogs.readthedocs.io/en/latest/api.html#coloredlogs.install .. _cron: https://en.wikipedia.org/wiki/Cron .. _GitHub: https://github.com/xolox/python-coloredlogs .. _logging.basicConfig(): https://docs.python.org/2/library/logging.html#logging.basicConfig .. _logging.Filter: https://docs.python.org/3/library/logging.html#filter-objects .. _logging.Formatter: https://docs.python.org/2/library/logging.html#logging.Formatter .. _logging: https://docs.python.org/2/library/logging.html .. _MIT license: https://en.wikipedia.org/wiki/MIT_License .. _online documentation: https://coloredlogs.readthedocs.io/ .. _per user site-packages directory: https://www.python.org/dev/peps/pep-0370/ .. _peter@peterodding.com: peter@peterodding.com .. _PyPI: https://pypi.org/project/coloredlogs .. _release 3.0: https://coloredlogs.readthedocs.io/en/latest/changelog.html#release-3-0-2015-10-23 .. _release 7.1: https://coloredlogs.readthedocs.io/en/latest/changelog.html#release-7-1-2017-07-15 .. _release 9.3: https://coloredlogs.readthedocs.io/en/latest/changelog.html#release-9-3-2018-04-29 .. _to include 'msecs': https://stackoverflow.com/questions/6290739/python-logging-use-milliseconds-in-time-format .. _verboselogs: https://pypi.org/project/verboselogs .. _virtual environments: http://docs.python-guide.org/en/latest/dev/virtualenvs/ coloredlogs-15.0.1/requirements-screenshots.txt0000644000175000017500000000004113622014240022201 0ustar peterpeter00000000000000capturer >= 2.4 executor >= 21.3 coloredlogs-15.0.1/coloredlogs.egg-info/0000775000175000017500000000000014060634561020407 5ustar peterpeter00000000000000coloredlogs-15.0.1/coloredlogs.egg-info/entry_points.txt0000664000175000017500000000006614060634560023706 0ustar peterpeter00000000000000[console_scripts] coloredlogs = coloredlogs.cli:main coloredlogs-15.0.1/coloredlogs.egg-info/PKG-INFO0000664000175000017500000003364714060634560021520 0ustar peterpeter00000000000000Metadata-Version: 2.1 Name: coloredlogs Version: 15.0.1 Summary: Colored terminal output for Python's logging module Home-page: https://coloredlogs.readthedocs.io Author: Peter Odding Author-email: peter@peterodding.com License: MIT Description: coloredlogs: Colored terminal output for Python's logging module ================================================================ .. image:: https://travis-ci.org/xolox/python-coloredlogs.svg?branch=master :target: https://travis-ci.org/xolox/python-coloredlogs .. image:: https://coveralls.io/repos/github/xolox/python-coloredlogs/badge.svg?branch=master :target: https://coveralls.io/github/xolox/python-coloredlogs?branch=master The `coloredlogs` package enables colored terminal output for Python's logging_ module. The ColoredFormatter_ class inherits from `logging.Formatter`_ and uses `ANSI escape sequences`_ to render your logging messages in color. It uses only standard colors so it should work on any UNIX terminal. It's currently tested on Python 2.7, 3.5+ and PyPy (2 and 3). On Windows `coloredlogs` automatically tries to enable native ANSI support (on up-to-date Windows 10 installations) and falls back on using colorama_ (if installed). Here is a screen shot of the demo that is printed when the command ``coloredlogs --demo`` is executed: .. image:: https://coloredlogs.readthedocs.io/en/latest/_images/defaults.png Note that the screenshot above includes custom logging levels defined by my verboselogs_ package: if you install both `coloredlogs` and `verboselogs` it will Just Work (`verboselogs` is of course not required to use `coloredlogs`). .. contents:: :local: Installation ------------ The `coloredlogs` package is available on PyPI_ which means installation should be as simple as: .. code-block:: console $ pip install coloredlogs There's actually a multitude of ways to install Python packages (e.g. the `per user site-packages directory`_, `virtual environments`_ or just installing system wide) and I have no intention of getting into that discussion here, so if this intimidates you then read up on your options before returning to these instructions 😉. Optional dependencies ~~~~~~~~~~~~~~~~~~~~~ Native ANSI support on Windows requires an up-to-date Windows 10 installation. If this is not working for you then consider installing the colorama_ package: .. code-block:: console $ pip install colorama Once colorama_ is installed it will be used automatically. Usage ----- Here's an example of how easy it is to get started: .. code-block:: python import coloredlogs, logging # Create a logger object. logger = logging.getLogger(__name__) # By default the install() function installs a handler on the root logger, # this means that log messages from your code and log messages from the # libraries that you use will all show up on the terminal. coloredlogs.install(level='DEBUG') # If you don't want to see log messages from libraries, you can pass a # specific logger object to the install() function. In this case only log # messages originating from that logger will show up on the terminal. coloredlogs.install(level='DEBUG', logger=logger) # Some examples. logger.debug("this is a debugging message") logger.info("this is an informational message") logger.warning("this is a warning message") logger.error("this is an error message") logger.critical("this is a critical message") Format of log messages ---------------------- The ColoredFormatter_ class supports user defined log formats so you can use any log format you like. The default log format is as follows:: %(asctime)s %(hostname)s %(name)s[%(process)d] %(levelname)s %(message)s This log format results in the following output:: 2015-10-23 03:32:22 peter-macbook coloredlogs.demo[30462] DEBUG message with level 'debug' 2015-10-23 03:32:23 peter-macbook coloredlogs.demo[30462] VERBOSE message with level 'verbose' 2015-10-23 03:32:24 peter-macbook coloredlogs.demo[30462] INFO message with level 'info' ... You can customize the log format and styling using environment variables as well as programmatically, please refer to the `online documentation`_ for details. Enabling millisecond precision ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ If you're switching from `logging.basicConfig()`_ to `coloredlogs.install()`_ you may notice that timestamps no longer include milliseconds. This is because coloredlogs doesn't output milliseconds in timestamps unless you explicitly tell it to. There are three ways to do that: 1. The easy way is to pass the `milliseconds` argument to `coloredlogs.install()`_:: coloredlogs.install(milliseconds=True) This became supported in `release 7.1`_ (due to `#16`_). 2. Alternatively you can change the log format `to include 'msecs'`_:: %(asctime)s,%(msecs)03d %(hostname)s %(name)s[%(process)d] %(levelname)s %(message)s Here's what the call to `coloredlogs.install()`_ would then look like:: coloredlogs.install(fmt='%(asctime)s,%(msecs)03d %(hostname)s %(name)s[%(process)d] %(levelname)s %(message)s') Customizing the log format also enables you to change the delimiter that separates seconds from milliseconds (the comma above). This became possible in `release 3.0`_ which added support for user defined log formats. 3. If the use of ``%(msecs)d`` isn't flexible enough you can instead add ``%f`` to the date/time format, it will be replaced by the value of ``%(msecs)03d``. Support for the ``%f`` directive was added to `release 9.3`_ (due to `#45`_). Custom logging fields ~~~~~~~~~~~~~~~~~~~~~ The following custom log format fields are supported: - ``%(hostname)s`` provides the hostname of the local system. - ``%(programname)s`` provides the name of the currently running program. - ``%(username)s`` provides the username of the currently logged in user. When `coloredlogs.install()`_ detects that any of these fields are used in the format string the applicable logging.Filter_ subclasses are automatically registered to populate the relevant log record fields. Changing text styles and colors ------------------------------- The online documentation contains `an example of customizing the text styles and colors `_. Colored output from cron ------------------------ When `coloredlogs` is used in a cron_ job, the output that's e-mailed to you by cron won't contain any ANSI escape sequences because `coloredlogs` realizes that it's not attached to an interactive terminal. If you'd like to have colors e-mailed to you by cron there are two ways to make it happen: .. contents:: :local: Modifying your crontab ~~~~~~~~~~~~~~~~~~~~~~ Here's an example of a minimal crontab:: MAILTO="your-email-address@here" CONTENT_TYPE="text/html" * * * * * root coloredlogs --to-html your-command The ``coloredlogs`` program is installed when you install the `coloredlogs` Python package. When you execute ``coloredlogs --to-html your-command`` it runs ``your-command`` under the external program ``script`` (you need to have this installed). This makes ``your-command`` think that it's attached to an interactive terminal which means it will output ANSI escape sequences which will then be converted to HTML by the ``coloredlogs`` program. Yes, this is a bit convoluted, but it works great :-) Modifying your Python code ~~~~~~~~~~~~~~~~~~~~~~~~~~ The ColoredCronMailer_ class provides a context manager that automatically enables HTML output when the ``$CONTENT_TYPE`` variable has been correctly set in the crontab. This requires my capturer_ package which you can install using ``pip install 'coloredlogs[cron]'``. The ``[cron]`` extra will pull in capturer_ 2.4 or newer which is required to capture the output while silencing it - otherwise you'd get duplicate output in the emails sent by ``cron``. The context manager can also be used to retroactively silence output that has already been produced, this can be useful to avoid spammy cron jobs that have nothing useful to do but still email their output to the system administrator every few minutes :-). Contact ------- The latest version of `coloredlogs` is available on PyPI_ and GitHub_. The `online documentation`_ is available on Read The Docs and includes a changelog_. For bug reports please create an issue on GitHub_. If you have questions, suggestions, etc. feel free to send me an e-mail at `peter@peterodding.com`_. License ------- This software is licensed under the `MIT license`_. © 2020 Peter Odding. .. External references: .. _#16: https://github.com/xolox/python-coloredlogs/issues/16 .. _#45: https://github.com/xolox/python-coloredlogs/issues/45 .. _ANSI escape sequences: https://en.wikipedia.org/wiki/ANSI_escape_code#Colors .. _capturer: https://pypi.org/project/capturer .. _changelog: https://coloredlogs.readthedocs.org/en/latest/changelog.html .. _colorama: https://pypi.org/project/colorama .. _ColoredCronMailer: https://coloredlogs.readthedocs.io/en/latest/api.html#coloredlogs.converter.ColoredCronMailer .. _ColoredFormatter: https://coloredlogs.readthedocs.io/en/latest/api.html#coloredlogs.ColoredFormatter .. _coloredlogs.install(): https://coloredlogs.readthedocs.io/en/latest/api.html#coloredlogs.install .. _cron: https://en.wikipedia.org/wiki/Cron .. _GitHub: https://github.com/xolox/python-coloredlogs .. _logging.basicConfig(): https://docs.python.org/2/library/logging.html#logging.basicConfig .. _logging.Filter: https://docs.python.org/3/library/logging.html#filter-objects .. _logging.Formatter: https://docs.python.org/2/library/logging.html#logging.Formatter .. _logging: https://docs.python.org/2/library/logging.html .. _MIT license: https://en.wikipedia.org/wiki/MIT_License .. _online documentation: https://coloredlogs.readthedocs.io/ .. _per user site-packages directory: https://www.python.org/dev/peps/pep-0370/ .. _peter@peterodding.com: peter@peterodding.com .. _PyPI: https://pypi.org/project/coloredlogs .. _release 3.0: https://coloredlogs.readthedocs.io/en/latest/changelog.html#release-3-0-2015-10-23 .. _release 7.1: https://coloredlogs.readthedocs.io/en/latest/changelog.html#release-7-1-2017-07-15 .. _release 9.3: https://coloredlogs.readthedocs.io/en/latest/changelog.html#release-9-3-2018-04-29 .. _to include 'msecs': https://stackoverflow.com/questions/6290739/python-logging-use-milliseconds-in-time-format .. _verboselogs: https://pypi.org/project/verboselogs .. _virtual environments: http://docs.python-guide.org/en/latest/dev/virtualenvs/ Platform: UNKNOWN Classifier: Development Status :: 5 - Production/Stable Classifier: Environment :: Console Classifier: Intended Audience :: Developers Classifier: Intended Audience :: Information Technology Classifier: Intended Audience :: System Administrators Classifier: License :: OSI Approved :: MIT License Classifier: Operating System :: MacOS Classifier: Operating System :: Microsoft :: Windows Classifier: Operating System :: POSIX Classifier: Operating System :: Unix Classifier: Programming Language :: Python Classifier: Programming Language :: Python :: 2 Classifier: Programming Language :: Python :: 2.7 Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3.5 Classifier: Programming Language :: Python :: 3.6 Classifier: Programming Language :: Python :: 3.7 Classifier: Programming Language :: Python :: 3.8 Classifier: Programming Language :: Python :: Implementation :: CPython Classifier: Programming Language :: Python :: Implementation :: PyPy Classifier: Topic :: Communications Classifier: Topic :: Scientific/Engineering :: Human Machine Interfaces Classifier: Topic :: Software Development Classifier: Topic :: Software Development :: Libraries :: Python Modules Classifier: Topic :: Software Development :: User Interfaces Classifier: Topic :: System Classifier: Topic :: System :: Shells Classifier: Topic :: System :: System Shells Classifier: Topic :: System :: Console Fonts Classifier: Topic :: System :: Logging Classifier: Topic :: System :: Systems Administration Classifier: Topic :: Terminals Classifier: Topic :: Utilities Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.* Provides-Extra: cron coloredlogs-15.0.1/coloredlogs.egg-info/SOURCES.txt0000664000175000017500000000204014060634561022267 0ustar peterpeter00000000000000CHANGELOG.rst LICENSE.txt MANIFEST.in README.rst coloredlogs.pth requirements-checks.txt requirements-screenshots.txt requirements-tests.txt requirements-travis.txt requirements.txt setup.cfg setup.py coloredlogs/__init__.py coloredlogs/cli.py coloredlogs/demo.py coloredlogs/syslog.py coloredlogs/tests.py coloredlogs.egg-info/PKG-INFO coloredlogs.egg-info/SOURCES.txt coloredlogs.egg-info/dependency_links.txt coloredlogs.egg-info/entry_points.txt coloredlogs.egg-info/requires.txt coloredlogs.egg-info/top_level.txt coloredlogs/converter/__init__.py coloredlogs/converter/colors.py docs/api.rst docs/changelog.rst docs/conf.py docs/index.rst docs/readme.rst docs/examples/custom-colors.sh docs/examples/custom-colors.txt docs/examples/custom-datetime-format.sh docs/examples/custom-datetime-format.txt docs/examples/custom-log-format.sh docs/examples/custom-log-format.txt docs/examples/defaults.sh docs/examples/defaults.txt docs/images/custom-colors.png docs/images/custom-datetime-format.png docs/images/custom-log-format.png docs/images/defaults.pngcoloredlogs-15.0.1/coloredlogs.egg-info/dependency_links.txt0000664000175000017500000000000114060634560024454 0ustar peterpeter00000000000000 coloredlogs-15.0.1/coloredlogs.egg-info/requires.txt0000664000175000017500000000005114060634560023002 0ustar peterpeter00000000000000humanfriendly>=9.1 [cron] capturer>=2.4 coloredlogs-15.0.1/coloredlogs.egg-info/top_level.txt0000664000175000017500000000001414060634560023133 0ustar peterpeter00000000000000coloredlogs