pax_global_header00006660000000000000000000000064150553467100014520gustar00rootroot0000000000000052 comment=16644ff1bcd38ca5523eb817e8b2a40aa379de30 mufeedali-Wordbook-c0cb87f/000077500000000000000000000000001505534671000157355ustar00rootroot00000000000000mufeedali-Wordbook-c0cb87f/.editorconfig000066400000000000000000000004441505534671000204140ustar00rootroot00000000000000# http://editorconfig.org root = true [*] indent_style = space indent_size = 4 trim_trailing_whitespace = true insert_final_newline = true charset = utf-8 end_of_line = lf [*.bat] indent_style = tab end_of_line = crlf [LICENSE] insert_final_newline = false [Makefile] indent_style = tab mufeedali-Wordbook-c0cb87f/.github/000077500000000000000000000000001505534671000172755ustar00rootroot00000000000000mufeedali-Wordbook-c0cb87f/.github/FUNDING.yml000066400000000000000000000000531505534671000211100ustar00rootroot00000000000000liberapay: 'mufeedali' github: 'mufeedali' mufeedali-Wordbook-c0cb87f/.github/ISSUE_TEMPLATE.md000066400000000000000000000004061505534671000220020ustar00rootroot00000000000000* Wordbook version: * Python version: * Operating System: ### Description Describe what you were trying to get done. Tell us what happened, what went wrong, and what you expected to happen. ### What I Did ``` Paste the command(s) you ran and the output. ``` mufeedali-Wordbook-c0cb87f/.github/codeql/000077500000000000000000000000001505534671000205445ustar00rootroot00000000000000mufeedali-Wordbook-c0cb87f/.github/codeql/codeql-config.yml000066400000000000000000000002251505534671000240000ustar00rootroot00000000000000name: "Wordbook CodeQL Config" paths-ignore: # File from flatpak/flatpak-builder-tools for convenience - build-aux/flatpak/flatpak-pip-generatormufeedali-Wordbook-c0cb87f/.github/workflows/000077500000000000000000000000001505534671000213325ustar00rootroot00000000000000mufeedali-Wordbook-c0cb87f/.github/workflows/CI.yml000066400000000000000000000012631505534671000223520ustar00rootroot00000000000000on: push: branches: [main] pull_request: name: CI jobs: codespell: name: Check for spelling errors runs-on: ubuntu-latest steps: - uses: codespell-project/actions-codespell@master flatpak-builder: name: "Flatpak" runs-on: ubuntu-latest container: image: bilelmoussaoui/flatpak-github-actions:gnome-nightly options: --privileged steps: - uses: actions/checkout@v4 - uses: flatpak/flatpak-github-actions/flatpak-builder@v6 with: bundle: "wordbook-devel.flatpak" manifest-path: "build-aux/flatpak/dev.mufeed.Wordbook.Devel.json" run-tests: "true" cache-key: flatpak-builder-${{ github.sha }} mufeedali-Wordbook-c0cb87f/.github/workflows/codeql.yml000066400000000000000000000015651505534671000233330ustar00rootroot00000000000000name: "CodeQL" on: push: branches: ["main"] pull_request: branches: ["main"] schedule: - cron: "51 4 * * 2" jobs: analyze: name: Analyze runs-on: ubuntu-latest permissions: actions: read contents: read security-events: write strategy: fail-fast: false matrix: language: [python] steps: - name: Checkout uses: actions/checkout@v4 - name: Initialize CodeQL uses: github/codeql-action/init@v3 with: languages: ${{ matrix.language }} queries: +security-and-quality config-file: ./.github/codeql/codeql-config.yml - name: Autobuild uses: github/codeql-action/autobuild@v3 - name: Perform CodeQL Analysis uses: github/codeql-action/analyze@v3 with: category: "/language:${{ matrix.language }}" mufeedali-Wordbook-c0cb87f/.gitignore000066400000000000000000000037201505534671000177270ustar00rootroot00000000000000# Self-defined .vscode/ .buildconfig *.ui~ .pylintrc *.pyc *.backup .idea/ deprecated_stuff/ # Flatpak/Meson build artifacts _build/ .flatpak/ .flatpak-builder/ .flatplay/ # Byte-compiled / optimized / DLL files __pycache__/ *.py[cod] *$py.class # C extensions *.so # Distribution / packaging .Python build/ develop-eggs/ dist/ downloads/ eggs/ .eggs/ lib/ lib64/ parts/ sdist/ var/ wheels/ pip-wheel-metadata/ share/python-wheels/ *.egg-info/ .installed.cfg *.egg MANIFEST # PyInstaller # Usually these files are written by a python script from a template # before PyInstaller builds the exe, so as to inject date/other infos into it. *.manifest *.spec # Installer logs pip-log.txt pip-delete-this-directory.txt # Unit test / coverage reports htmlcov/ .tox/ .nox/ .coverage .coverage.* .cache nosetests.xml coverage.xml *.cover *.py,cover .hypothesis/ .pytest_cache/ # Translations *.mo # Django stuff: *.log local_settings.py db.sqlite3 db.sqlite3-journal # Flask stuff: instance/ .webassets-cache # Scrapy stuff: .scrapy # Sphinx documentation docs/_build/ # PyBuilder target/ # Jupyter Notebook .ipynb_checkpoints # IPython profile_default/ ipython_config.py # pyenv .python-version # pipenv # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. # However, in case of collaboration, if having platform-specific dependencies or dependencies # having no cross-platform support, pipenv may install dependencies that don't work, or not # install all needed dependencies. #Pipfile.lock # PEP 582; used by e.g. github.com/David-OConnor/pyflow __pypackages__/ # Celery stuff celerybeat-schedule celerybeat.pid # SageMath parsed files *.sage.py # Environments .env .venv env/ venv/ ENV/ env.bak/ venv.bak/ # Spyder project settings .spyderproject .spyproject # Rope project settings .ropeproject # mkdocs documentation /site # mypy .mypy_cache/ .dmypy.json dmypy.json # Pyre type checker .pyre/ /subprojects/blueprint-compiler mufeedali-Wordbook-c0cb87f/.gitmodules000066400000000000000000000002421505534671000201100ustar00rootroot00000000000000[submodule "build-aux/flatpak/flatpak-builder-tools"] path = build-aux/flatpak/flatpak-builder-tools url = https://github.com/flatpak/flatpak-builder-tools.git mufeedali-Wordbook-c0cb87f/.zed/000077500000000000000000000000001505534671000165755ustar00rootroot00000000000000mufeedali-Wordbook-c0cb87f/.zed/settings.json000066400000000000000000000004161505534671000213310ustar00rootroot00000000000000// Folder-specific settings // // For a full list of overridable settings, and general information on folder-specific settings, // see the documentation: https://zed.dev/docs/configuring-zed#settings-files { "file_scan_exclusions": ["**/flatpak-builder-tools/**"] } mufeedali-Wordbook-c0cb87f/LICENSE000066400000000000000000001045131505534671000167460ustar00rootroot00000000000000 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . mufeedali-Wordbook-c0cb87f/README.md000066400000000000000000000062511505534671000172200ustar00rootroot00000000000000

Wordbook
Wordbook

Look up definitions for words

Wordbook is an offline English-English dictionary application built for GNOME using the Open English WordNet database for definitions and the reliable eSpeak for pronunciations (both audio and phoneme).

## Features * Fully offline after initial data download * Random Word * Live Search * Double click to search * Support for GNOME Dark Mode and launching app in dark mode. ## Requirements * GTK 4.6+ [Arch: `gtk4`] * libadwaita 1.7.0+ [Arch: `libadwaita`] * Python 3 [Arch: `python`] * Python modules: * Standalone WordNet Python module [Arch AUR: `python-wn`] * RapidFuzz [Arch: `python-rapidfuzz`] * Pydantic [Arch: `python-pydantic`] * Python GObject [Arch: `python-gobject`] * eSpeak-ng (For pronunciations and audio) [Arch: `espeak-ng`] ## Installation ### Using Flatpak Download on Flathub ### Using Nix [![](https://raw.githubusercontent.com/dch82/Nixpkgs-Badges/main/nixpkgs-badge-light.svg)](https://search.nixos.org/packages?size=1&show=wordbook) This method can be used anywhere the Nix package manager is installed. ### Using distro-specific packages Right now, Wordbook is only packaged for Arch through the AUR as [`wordbook`](https://aur.archlinux.org/packages/wordbook). On NixOS, Wordbook can be installed using the Nix package manager as shown above. Additionally, the following code can be added to your NixOS configuration file, usually located in `/etc/nixos/configuration.nix`. ``` environment.systemPackages = [ pkgs.wordbook ]; ``` ## Contributing Contributions are welcome. There are many ways to contribute: 1. Open GitHub issues to report bugs or for feature requests. 2. Develop a feature or a bug fix. It would be best to open an issue or discussion first before developing a feature. 3. Add new translations or improve existing translations. ### Development The best way to work with Wordbook is to either use [GNOME Builder](https://apps.gnome.org/Builder/) or to use [flatplay](https://github.com/mufeedali/flatplay) with your editor of choice. ### Translations The easiest way to contribute to translations right now is to do one of the following: 1. Approve the LLM-generated translations by removing the line that says `# llm-generated`. 2. Replacing the LLM-generated translations. 3. Improving the human-translated strings. The LLM-generated translations are to try and ease the burden on translators. The idea is to have temporary translations until a human can review them. All strings translated by LLMs are tagged as `llm-generated`. ## Code of Conduct This project adheres to the [GNOME Code of Conduct](https://conduct.gnome.org/). By participating through any means, including PRs, Issues or Discussions, you are expected to uphold this code. mufeedali-Wordbook-c0cb87f/Wordbook.doap000066400000000000000000000021561505534671000203740ustar00rootroot00000000000000 Wordbook Look up definitions for words Python GTK 4 Libadwaita Mufeed Ali mufeedali mufeedali-Wordbook-c0cb87f/build-aux/000077500000000000000000000000001505534671000176275ustar00rootroot00000000000000mufeedali-Wordbook-c0cb87f/build-aux/flatpak/000077500000000000000000000000001505534671000212515ustar00rootroot00000000000000mufeedali-Wordbook-c0cb87f/build-aux/flatpak/.prettierrc000066400000000000000000000000501505534671000234300ustar00rootroot00000000000000{ "tabWidth": 2, "useTabs": false } mufeedali-Wordbook-c0cb87f/build-aux/flatpak/dev.mufeed.Wordbook.Devel.json000066400000000000000000000160131505534671000270120ustar00rootroot00000000000000{ "id": "dev.mufeed.Wordbook.Devel", "runtime": "org.gnome.Platform", "runtime-version": "master", "sdk": "org.gnome.Sdk", "command": "wordbook", "finish-args": [ "--share=network", "--socket=pulseaudio", "--share=ipc", "--device=dri", "--socket=fallback-x11", "--socket=wayland" ], "cleanup": ["*blueprint*", "*.a", "*.la", "/lib/pkgconfig", "/include"], "modules": [ { "name": "blueprint-compiler", "buildsystem": "meson", "cleanup": ["*"], "sources": [ { "type": "git", "url": "https://gitlab.gnome.org/jwestman/blueprint-compiler", "branch": "main" } ] }, { "name": "pcaudiolib", "sources": [ { "type": "archive", "url": "https://github.com/espeak-ng/pcaudiolib/archive/1.2.tar.gz", "sha256": "44b9d509b9eac40a0c61585f756d76a7b555f732e8b8ae4a501c8819c59c6619" } ] }, { "name": "espeak-ng", "no-parallel-make": true, "sources": [ { "type": "git", "url": "https://github.com/espeak-ng/espeak-ng.git", "tag": "1.52.0", "commit": "4870adfa25b1a32b4361592f1be8a40337c58d6c" } ] }, { "name": "python3-modules", "buildsystem": "simple", "build-commands": [ "pip3 install --verbose --exists-action=i --no-index --find-links=\"file://${PWD}\" --prefix=${FLATPAK_DEST} \"wn\" \"pydantic\" \"rapidfuzz\" --no-build-isolation" ], "sources": [ { "type": "file", "url": "https://files.pythonhosted.org/packages/a1/ee/48ca1a7c89ffec8b6a0c5d02b89c305671d5ffd8d3c94acf8b8c408575bb/anyio-4.9.0-py3-none-any.whl", "sha256": "9f76d541cad6e36af7beb62e978876f3b41e3e04f2c1fbf0884604c0a9c4d93c" }, { "type": "file", "url": "https://files.pythonhosted.org/packages/84/ae/320161bd181fc06471eed047ecce67b693fd7515b16d495d8932db763426/certifi-2025.6.15-py3-none-any.whl", "sha256": "2e0c7ce7cb5d8f8634ca55d2ba7e6ec2689a2fd6537d8dec1296a477a4910057" }, { "type": "file", "url": "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl", "sha256": "63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86" }, { "type": "file", "url": "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl", "sha256": "2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55" }, { "type": "file", "url": "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", "sha256": "d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad" }, { "type": "file", "url": "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", "sha256": "946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3" }, { "type": "file", "url": "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", "sha256": "2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2" }, { "type": "file", "url": "https://files.pythonhosted.org/packages/6e/c2/61d3e0f47e2b74ef40a68b9e6ad5984f6241a942f7cd3bbfbdbd03861ea9/tomli-2.2.1-py3-none-any.whl", "sha256": "cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc" }, { "type": "file", "url": "https://files.pythonhosted.org/packages/65/a8/d6cc78f0cb30434207be11f09e0b2f1271eac6acac935807a0d23896b9d5/wn-0.13.0-py3-none-any.whl", "sha256": "ee1f2574078b592faa44ee254d4d8115ec951036800537f8915f201cb4d02541" }, { "type": "file", "url": "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", "sha256": "1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53" }, { "type": "file", "url": "https://files.pythonhosted.org/packages/69/e0/552843e0d356fbb5256d21449fa957fa4eff3bbc135a74a691ee70c7c5da/typing_extensions-4.14.0-py3-none-any.whl", "sha256": "a1514509136dd0b477638fc68d6a91497af5076466ad0fa6c338e44e359944af" }, { "type": "file", "url": "https://files.pythonhosted.org/packages/17/69/cd203477f944c353c31bade965f880aa1061fd6bf05ded0726ca845b6ff7/typing_inspection-0.4.1-py3-none-any.whl", "sha256": "389055682238f53b04f7badcb49b989835495a96700ced5dab2d8feae4b26f51" }, { "type": "file", "url": "https://files.pythonhosted.org/packages/6a/c0/ec2b1c8712ca690e5d61979dee872603e92b8a32f94cc1b72d53beab008a/pydantic-2.11.7-py3-none-any.whl", "sha256": "dde5df002701f6de26248661f6835bbe296a47bf73990135c7d07ce741b9623b" }, { "type": "file", "url": "https://files.pythonhosted.org/packages/eb/3c/f4abd740877a35abade05e437245b192f9d0ffb48bbbbd708df33d3cda37/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", "sha256": "9fdac5d6ffa1b5a83bca06ffe7583f5576555e6c8b3a91fbd25ea7780f825f7d", "only-arches": ["x86_64"] }, { "type": "file", "url": "https://files.pythonhosted.org/packages/6f/5e/a0a7b8885c98889a18b6e376f344da1ef323d270b44edf8174d6bce4d622/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", "sha256": "0a9f2c9dd19656823cb8250b0724ee9c60a82f3cdf68a080979d13092a3b0fef", "only-arches": ["aarch64"] }, { "type": "file", "url": "https://files.pythonhosted.org/packages/9b/df/6096bc669c1311568840bdcbb5a893edc972d1c8d2b4b4325c21d54da5b1/rapidfuzz-3.13.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", "sha256": "1343d745fbf4688e412d8f398c6e6d6f269db99a54456873f232ba2e7aeb4939", "only-arches": ["x86_64"] }, { "type": "file", "url": "https://files.pythonhosted.org/packages/59/cf/c3ac8c80d8ced6c1f99b5d9674d397ce5d0e9d0939d788d67c010e19c65f/rapidfuzz-3.13.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", "sha256": "0da54aa8547b3c2c188db3d1c7eb4d1bb6dd80baa8cdaeaec3d1da3346ec9caa", "only-arches": ["aarch64"] } ] }, { "name": "wordbook", "buildsystem": "meson", "config-opts": ["-Dprofile=development"], "sources": [ { "type": "dir", "path": "../../." } ] } ] } mufeedali-Wordbook-c0cb87f/build-aux/flatpak/flatpak-builder-tools/000077500000000000000000000000001505534671000254555ustar00rootroot00000000000000mufeedali-Wordbook-c0cb87f/data/000077500000000000000000000000001505534671000166465ustar00rootroot00000000000000mufeedali-Wordbook-c0cb87f/data/dev.mufeed.Wordbook.SearchProvider.ini000066400000000000000000000001661505534671000261000ustar00rootroot00000000000000[Shell Search Provider] DesktopId=@APP_ID@.desktop BusName=@APP_ID@.SearchProvider ObjectPath=@object_path@ Version=2 mufeedali-Wordbook-c0cb87f/data/dev.mufeed.Wordbook.SearchProvider.service.in000066400000000000000000000001171505534671000273620ustar00rootroot00000000000000[D-BUS Service] Name=@APP_ID@.SearchProvider Exec=@pkgdatadir@/search_provider mufeedali-Wordbook-c0cb87f/data/dev.mufeed.Wordbook.desktop.in.in000066400000000000000000000007271505534671000250700ustar00rootroot00000000000000[Desktop Entry] Version=1.0 Name=Wordbook Exec=wordbook Comment=Look up definitions for words Terminal=false Type=Application Icon=@app-id@ Categories=Dictionary;Education;GTK; # Translators: These are search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. Keywords=dictionary; # Translators: Do NOT translate or transliterate this text (these are enum types)! X-Purism-FormFactor=Workstation;Mobile; mufeedali-Wordbook-c0cb87f/data/dev.mufeed.Wordbook.gschema.xml.in000066400000000000000000000002421505534671000252100ustar00rootroot00000000000000 mufeedali-Wordbook-c0cb87f/data/dev.mufeed.Wordbook.metainfo.xml.in.in000066400000000000000000000142071505534671000260160ustar00rootroot00000000000000 @app-id@ CC0-1.0 GPL-3.0-or-later Wordbook Look up definitions for words

Wordbook is an offline English-English dictionary application powered by WordNet and eSpeak.

Features:

  • Fully offline after initial data download
  • Pronunciations
  • Random Word
  • Favorites
  • History
  • Double click to search
  • Dark mode
Mufeed Ali me@mufeed.dev https://github.com/mufeedali/Wordbook https://github.com/mufeedali/Wordbook/issues https://github.com/mufeedali/Wordbook https://github.com/mufeedali/Wordbook/tree/main/po https://github.com/sponsors/mufeedali @app-id@.desktop wordbook https://raw.githubusercontent.com/mufeedali/Wordbook/main/screenshots/light.png https://raw.githubusercontent.com/mufeedali/Wordbook/main/screenshots/dark.png
  • Added a clear button for search
  • Added a small delay for live search
  • Added duplicate checks for related words
  • Added Occitan translation
  • Updated some metadata and docs
  • Significant UI changes
  • Added Favorites
  • Added "Did you mean" suggestions for typos
  • Added a context menu action to search for selected text
  • Added support for auto-pasting clipboard content on launch
  • Improved persistent history management
  • Added GNOME Search Provider integration
  • The app now remembers window dimensions
  • Several performance and responsiveness improvements
  • Improved keyboard navigation and accessibility
  • Several bug fixes
  • Added Italian and Hindi translations
  • Updated translations for German, French, Dutch, Russian, and Turkish
  • Ported the UI to use Blueprint
  • BREAKING: Settings schema has changed
  • GTK4 + libadwaita Port
  • Persistent history storage
  • Default to live search
  • Update WordNet library and database
  • Made some minor tweaks to the UI
  • Fixed search entry focus on launch
  • Switched to a brand new icon
  • Moved history from completions to a new sidebar
  • Added "--look-up" CLI argument
  • Made some UI improvements to adapt better to different display sizes
  • Made some other minor improvements
  • Updated WordNet dependency, will need a redownload of the database
  • Fixed symbolic icon issues
  • Improved responsiveness
  • Removed a feature called "Hide window buttons when maximized"
  • Fixed some issues with the Flatpak
  • Fixed several minor bugs

Initial release

360 keyboard pointing touch ModernToolkit HiDpiIcon mobile #99c1f1 #1a5fb4
mufeedali-Wordbook-c0cb87f/data/icons/000077500000000000000000000000001505534671000177615ustar00rootroot00000000000000mufeedali-Wordbook-c0cb87f/data/icons/dev.mufeed.Wordbook-symbolic.svg000066400000000000000000000062231505534671000261330ustar00rootroot00000000000000 mufeedali-Wordbook-c0cb87f/data/icons/dev.mufeed.Wordbook.Devel.svg000066400000000000000000000345061505534671000253570ustar00rootroot00000000000000 mufeedali-Wordbook-c0cb87f/data/icons/dev.mufeed.Wordbook.Source.svg000066400000000000000000001456631505534671000255670ustar00rootroot00000000000000 Adwaita Icon Template Adwaita Icon Template Hicolor Symbolic mufeedali-Wordbook-c0cb87f/data/icons/dev.mufeed.Wordbook.svg000066400000000000000000000167261505534671000243250ustar00rootroot00000000000000 mufeedali-Wordbook-c0cb87f/data/icons/meson.build000066400000000000000000000005331505534671000221240ustar00rootroot00000000000000message('Installing icons') # Scalable icondir = join_paths(get_option('datadir'), 'icons/hicolor/scalable/apps') install_data ( application_id + '.svg', install_dir: icondir ) # Symbolic icondir = join_paths(get_option('datadir'), 'icons/hicolor/symbolic/apps') install_data ( base_id + '-symbolic.svg', install_dir: icondir ) mufeedali-Wordbook-c0cb87f/data/meson.build000066400000000000000000000060571505534671000210200ustar00rootroot00000000000000subdir('icons') subdir('resources') # Desktop file desktop_conf = configuration_data() desktop_conf.set('app-id', application_id) desktop_file = i18n.merge_file( input: configure_file( input: '@0@.desktop.in.in'.format(base_id), output: '@BASENAME@', configuration: desktop_conf ), output: '@0@.desktop'.format(application_id), type: 'desktop', po_dir: '../po', install: true, install_dir: join_paths(get_option('datadir'), 'applications') ) desktop_utils = find_program('desktop-file-validate', required: false) if desktop_utils.found() test('Validate desktop file', desktop_utils, args: [desktop_file.full_path()] ) endif # Metainfo file appdata_conf = configuration_data() appdata_conf.set('app-id', application_id) appstream_file = i18n.merge_file( input: configure_file( input: '@0@.metainfo.xml.in.in'.format(base_id), output: '@BASENAME@', configuration: appdata_conf ), output: '@0@.metainfo.xml'.format(application_id), po_dir: '../po', install: true, install_dir: join_paths(get_option('datadir'), 'metainfo') ) appstreamcli = find_program('appstreamcli', required: false) if appstreamcli.found() test('Validate appstream file', appstreamcli, args: ['validate', '--no-net', appstream_file.full_path()] ) endif # GSettings schema gschema_conf = configuration_data() gschema_conf.set('app-id', application_id) configure_file( input: '@0@.gschema.xml.in'.format(base_id), output: '@0@.gschema.xml'.format(application_id), configuration: gschema_conf, install: true, install_dir: join_paths(get_option('datadir'), 'glib-2.0/schemas') ) compile_schemas = find_program('glib-compile-schemas', required: false) if compile_schemas.found() test('Validate schema file', compile_schemas, args: ['--strict', '--dry-run', meson.current_source_dir()] ) endif conf = configuration_data() conf.set('APP_ID', application_id) conf.set('PYTHON', python.find_installation('python3').full_path()) conf.set('localedir', join_paths(get_option('prefix'), get_option('localedir'))) conf.set('pkgdatadir', pkgdatadir) conf.set('BIN', join_paths(get_option('prefix'), get_option('bindir'), meson.project_name())) if get_option('profile') == 'development' object_path = '/dev/mufeed/Wordbook/Devel/SearchProvider' else object_path = '/dev/mufeed/Wordbook/SearchProvider' endif object_path conf.set('object_path', object_path) search_provider_dir = join_paths(get_option('prefix'), get_option('datadir'), 'gnome-shell', 'search-providers') service_dir = join_paths(get_option('prefix'), get_option('datadir'), 'dbus-1', 'services') configure_file( input: '@0@.SearchProvider.ini'.format(base_id), output: '@0@.SearchProvider.ini'.format(application_id), configuration: conf, install_dir: search_provider_dir, ) configure_file( input: '@0@.SearchProvider.service.in'.format(base_id), output: '@0@.SearchProvider.service'.format(application_id), configuration: conf, install_dir: service_dir, ) configure_file( input: 'search_provider.in', output: 'search_provider', configuration: conf, install_dir: pkgdatadir, ) mufeedali-Wordbook-c0cb87f/data/resources/000077500000000000000000000000001505534671000206605ustar00rootroot00000000000000mufeedali-Wordbook-c0cb87f/data/resources/meson.build000066400000000000000000000010601505534671000230170ustar00rootroot00000000000000pkgdatadir = join_paths(get_option('prefix'), get_option('datadir'), meson.project_name()) gnome = import('gnome') blueprints = custom_target('blueprints', input: files( 'ui/shortcuts_window.blp', 'ui/settings_window.blp', 'ui/window.blp', ), output: '.', command: [find_program('blueprint-compiler'), 'batch-compile', '@OUTPUT@', '@CURRENT_SOURCE_DIR@', '@INPUT@'], ) gnome.compile_resources( 'resources', 'resources.gresource.xml', dependencies: blueprints, gresource_bundle: true, install: true, install_dir: pkgdatadir, ) mufeedali-Wordbook-c0cb87f/data/resources/resources.gresource.xml000066400000000000000000000007021505534671000254100ustar00rootroot00000000000000 style.css ui/shortcuts_window.ui ui/settings_window.ui ui/window.ui mufeedali-Wordbook-c0cb87f/data/resources/style.css000066400000000000000000000022341505534671000225330ustar00rootroot00000000000000/* History items styling */ .history-item { padding-left: 4px; padding-right: 4px; } /* Favorite items styling */ .favorite-item { background-color: alpha(@accent_color, 0.1); } .favorite-item:hover { background-color: alpha(@accent_color, 0.15); } /* History list row styling for favorites */ listbox row.favorite-item { background-color: alpha(@accent_color, 0.08); } listbox row.favorite-item:hover { background-color: alpha(@accent_color, 0.12); } listbox row.favorite-item:selected { background-color: alpha(@accent_color, 0.2); } .example-text { font-style: italic; color: @accent_color; } .term-view, .pos-header { font-size: large; font-weight: bold; } .pronunciation-view { font-style: italic; } .relation-type, .definition-number, .synset-header { font-weight: bold; } .definition { font-size: large; } /* Lemma buttons (eg: synonym buttons) */ .lemma-button { padding-left: 6px; padding-right: 6px; padding-top: 1px; padding-bottom: 1px; color: @accent_fg_color; background-color: @accent_bg_color; } .lemma-button:hover { background-color: alpha(@accent_bg_color, 0.7); } mufeedali-Wordbook-c0cb87f/data/resources/ui/000077500000000000000000000000001505534671000212755ustar00rootroot00000000000000mufeedali-Wordbook-c0cb87f/data/resources/ui/settings_window.blp000066400000000000000000000024341505534671000252260ustar00rootroot00000000000000using Gtk 4.0; using Adw 1; template $SettingsDialog: Adw.PreferencesDialog { content-width: 450; content-height: 350; Adw.PreferencesPage { Adw.PreferencesGroup appearance { title: _("Appearance"); Adw.SwitchRow dark_ui_switch { title: _("Force Dark Mode"); } } Adw.PreferencesGroup { title: _("Behavior"); Adw.SwitchRow live_search_switch { title: _("Live Search"); subtitle: _("Show definition as the terms are typed in"); } Adw.SwitchRow double_click_switch { title: _("Double Click Search"); subtitle: _("Search any word by double clicking on it"); } Adw.SwitchRow auto_paste_switch { title: _("Auto Paste on Launch"); subtitle: _("Automatically paste and search clipboard content on launch"); } Adw.ComboRow pronunciations_accent_row { title: _("Pronunciations Accent"); model: StringList { strings [ "American English", "British English", ] }; } } } } mufeedali-Wordbook-c0cb87f/data/resources/ui/shortcuts_window.blp000066400000000000000000000027461505534671000254320ustar00rootroot00000000000000using Gtk 4.0; ShortcutsWindow help_overlay { modal: true; ShortcutsSection { section-name: "shortcuts"; max-height: 10; ShortcutsGroup { title: C_("shortcut window", "General"); ShortcutsShortcut { title: C_("shortcut window", "Show Shortcuts"); action-name: "win.show-help-overlay"; } ShortcutsShortcut { title: C_("shortcut window", "Preferences"); action-name: "win.preferences"; } ShortcutsShortcut { title: C_("shortcut window", "Paste and Search"); action-name: "win.paste-search"; } ShortcutsShortcut { title: C_("shortcut window", "Random Word"); action-name: "win.random-word"; } ShortcutsShortcut { title: C_("shortcut window", "Search Selected Text"); action-name: "win.search-selected"; } ShortcutsShortcut { title: C_("shortcut window", "Toggle Sidebar"); action-name: "win.toggle-sidebar"; } ShortcutsShortcut { title: C_("shortcut window", "Show Menu"); action-name: "win.toggle-menu"; } ShortcutsShortcut { title: C_("shortcut window", "Quit"); action-name: "win.quit"; } } } } mufeedali-Wordbook-c0cb87f/data/resources/ui/window.blp000066400000000000000000000315211505534671000233050ustar00rootroot00000000000000using Gtk 4.0; using Adw 1; menu app-menu { section { id: "search-section"; item { label: _("Paste & Search"); action: "win.paste-search"; } item { label: _("Search Selected Text"); action: "win.search-selected"; } item { label: _("_Random Word"); action: "win.random-word"; } } section { id: "help-section"; item { label: _("_Preferences"); action: "win.preferences"; } item { label: _("_Keyboard Shortcuts"); action: "win.show-help-overlay"; } item { label: _("_About Wordbook"); action: "app.about"; } } } template $WordbookWindow: Adw.ApplicationWindow { default-width: 800; default-height: 600; focus-widget: search_entry; default-widget: search_button; icon-name: "accesories-dictionary"; Adw.Breakpoint { condition ("max-width: 550sp") setters { main_split_view.collapsed: true; } } content: Adw.ToastOverlay toast_overlay { child: Adw.OverlaySplitView main_split_view { min-sidebar-width: 200; max-sidebar-width: 200; sidebar: Adw.ToolbarView { [top] Adw.HeaderBar { [title] Adw.WindowTitle { title: _("History"); } [start] ToggleButton favorites_filter_button { icon-name: "non-starred-symbolic"; tooltip-text: _("Show Favorites Only"); action-name: "win.toggle-favorites"; styles [ "flat", ] } [end] Button clear_history_button { icon-name: "user-trash-symbolic"; tooltip-text: _("Clear History"); sensitive: false; styles [ "flat", ] } } content: Adw.ViewStack history_stack { vexpand: true; Adw.ViewStackPage { name: "list"; child: ScrolledWindow { hscrollbar-policy: never; has-frame: false; child: Viewport { child: ListBox history_listbox { selection-mode: none; styles [ "navigation-sidebar", ] }; }; }; } Adw.ViewStackPage { name: "empty"; child: Adw.StatusPage { icon-name: "document-open-recent-symbolic"; title: _("No recent searches or favorites"); styles [ "compact", ] }; } }; }; content: Adw.ToolbarView { [top] Adw.HeaderBar header_bar { centering-policy: strict; [title] Adw.Clamp title_clamp { tightening-threshold: 300; Box { hexpand: true; spacing: 4; Entry search_entry { hexpand: true; primary-icon-name: "edit-find-symbolic"; primary-icon-activatable: false; primary-icon-sensitive: false; activates-default: true; secondary-icon-tooltip-text: _("Clear"); } Button search_button { icon-name: "edit-find-symbolic"; tooltip-text: _("Search"); styles [ "suggested-action", ] } } } ToggleButton split_view_toggle_button { icon-name: "sidebar-show-symbolic"; tooltip-text: _("Show History"); } [end] MenuButton wordbook_menu_button { menu-model: app-menu; receives-default: true; direction: none; tooltip-text: _("Main Menu"); } } content: ScrolledWindow main_scroll { hexpand: true; vexpand: true; hscrollbar-policy: never; child: Adw.Clamp main_clamp { tightening-threshold: 500; Adw.ViewStack main_stack { Adw.ViewStackPage { name: "download_page"; child: Adw.StatusPage download_status_page { title: _("Setting things up…"); description: _("Downloading WordNet…"); child: Adw.Clamp { tightening-threshold: 200; ProgressBar loading_progress { ellipsize: end; } }; }; } Adw.ViewStackPage { name: "welcome_page"; child: Adw.StatusPage before_search_page { icon-name: "dev.mufeed.Wordbook-symbolic"; title: _("Wordbook"); description: _("Look up definitions of any English term"); }; } Adw.ViewStackPage { name: "content_page"; child: Box { orientation: vertical; Box { hexpand: false; Box { margin-start: 18; margin-end: 18; margin-top: 12; margin-bottom: 16; orientation: vertical; hexpand: false; Label term_view { label: "Term"; use-markup: true; selectable: true; single-line-mode: true; ellipsize: end; xalign: 0; hexpand: false; styles [ "term-view", ] } Label pronunciation_view { label: "/Pronunciation/"; use-markup: true; selectable: true; ellipsize: end; single-line-mode: true; xalign: 0; hexpand: false; styles [ "pronunciation-view", ] } } Button speak_button { margin-start: 4; margin-end: 12; margin-top: 12; margin-bottom: 12; receives-default: true; halign: center; valign: center; icon-name: "audio-volume-high-symbolic"; has-frame: false; hexpand: false; tooltip-text: _("Listen to Pronunciation"); styles [ "circular", ] } } ListBox definitions_listbox { margin-start: 12; margin-end: 12; margin-bottom: 12; selection-mode: none; show-separators: false; vexpand: true; styles [ "boxed-list-separate", ] } }; } Adw.ViewStackPage { name: "search_fail_page"; child: Adw.StatusPage search_fail_status_page { vexpand: true; icon-name: "edit-find-symbolic"; title: _("No definition found"); child: Label search_fail_description_label { use-markup: true; wrap: true; selectable: true; }; }; } Adw.ViewStackPage { name: "network_fail_page"; child: Adw.StatusPage network_fail_status_page { icon-name: "network-error-symbolic"; title: _("Download failed"); child: Box { spacing: 12; halign: center; Button retry_button { label: _("Retry"); styles [ "pill", "suggested-action", ] } Button exit_button { label: _("Exit"); styles [ "pill", ] } }; }; } Adw.ViewStackPage { name: "spinner_page"; child: Adw.Spinner {}; } } }; }; }; }; }; EventControllerKey key_ctrlr {} } mufeedali-Wordbook-c0cb87f/data/search_provider.in000077500000000000000000000124141505534671000223620ustar00rootroot00000000000000#!@PYTHON@ # -*- coding: utf-8 -*- # SPDX-FileCopyrightText: 2016-2025 Mufeed Ali # SPDX-License-Identifier: GPL-3.0-or-later import os import sys import uuid from gi.repository import GLib, Gio pkgdatadir = "@pkgdatadir@" localedir = "@localedir@" from wordbook import base, utils import wn wn.config.data_directory = os.path.join(utils.WN_DIR) wn.config.allow_multithreading = True dbus_interface_description = """ """ # Search provider service for integration with GNOME Shell search class WordbookSearchService: _results = {} # Get results for first search def GetInitialResultSet(self, terms): self._results = {} for term in terms: try: definitionResult = base.get_definition(term, wn.Wordnet(base.WN_DB_VERSION))["result"] if definitionResult: for resultArray in definitionResult.values(): if resultArray: result = resultArray[0] self._results[str(uuid.uuid4())] = { "name": result["name"], "definition": result["definition"], } except: print("Error while searching, WordNet is probably not downloaded yet.") return self._results.keys() # Get results for next searches def GetSubsearchResultSet(self, previous_results, new_terms): return self.GetInitialResultSet(new_terms) # Get detailed information for results def GetResultMetas(self, ids): metas = [] for item in ids: if item in self._results: meta = dict( id=GLib.Variant("s", self._results[item]["name"]), name=GLib.Variant("s", self._results[item]["name"]), description=GLib.Variant("s", self._results[item]["definition"]), ) metas.append(meta) return metas # Open clicked result in app def ActivateResult(self, id, terms, timestamp): GLib.spawn_async_with_pipes(None, ["@BIN@", "--look-up", id], None, GLib.SpawnFlags.SEARCH_PATH, None) # Open app on its current page def LaunchSearch(self, terms, timestamp): GLib.spawn_async_with_pipes(None, ["@BIN@"], None, GLib.SpawnFlags.SEARCH_PATH, None) # GIO application for search provider class WordbookSearchServiceApplication(Gio.Application): def __init__(self): Gio.Application.__init__( self, application_id="@APP_ID@.SearchProvider", flags=Gio.ApplicationFlags.IS_SERVICE, inactivity_timeout=10000, ) self.service_object = WordbookSearchService() self.search_interface = Gio.DBusNodeInfo.new_for_xml(dbus_interface_description).interfaces[0] # Register DBUS search provider object def do_dbus_register(self, connection, object_path): try: connection.register_object( object_path=object_path, interface_info=self.search_interface, method_call_closure=self.on_dbus_method_call, ) except: self.quit() return False finally: return True # Handle incoming method calls def on_dbus_method_call(self, connection, sender, object_path, interface_name, method_name, parameters, invocation): self.hold() method = getattr(self.service_object, method_name) arguments = list(parameters.unpack()) results = (method(*arguments),) if results == (None,): results = () results_type = ( "(" + "".join( map( lambda argument_info: argument_info.signature, self.search_interface.lookup_method(method_name).out_args, ) ) + ")" ) wrapped_results = GLib.Variant(results_type, results) invocation.return_value(wrapped_results) self.release() # Run search provider application if __name__ == "__main__": app = WordbookSearchServiceApplication() sys.exit(app.run()) mufeedali-Wordbook-c0cb87f/justfile000066400000000000000000000013121505534671000175020ustar00rootroot00000000000000BUILD := "_build" default: @just --choose # Setup build folder. setup: mkdir -p {{BUILD}} meson setup . {{BUILD}} # Configure a local build. local-configure: meson configure {{BUILD}} -Dprefix=$(pwd)/{{BUILD}}/testdir ninja -C {{BUILD}} install # Configure a local build with debugging. develop-configure: meson configure {{BUILD}} -Dprefix=$(pwd)/{{BUILD}}/testdir -Dprofile=development ninja -C {{BUILD}} install # Run the local build. local-run: ninja -C {{BUILD}} run # Install system-wide. install: ninja -C {{BUILD}} install # Clean build files. clean: rm -r {{BUILD}} # Do everything needed and then run Wordbook for develpment in one command. run: setup develop-configure local-run cleanmufeedali-Wordbook-c0cb87f/meson.build000066400000000000000000000035401505534671000201010ustar00rootroot00000000000000project( 'wordbook', version: '0.6.0', meson_version: '>= 0.59.0', default_options: [ 'warning_level=2', ], ) i18n = import('i18n') gnome = import('gnome') python = import('python') base_id = 'dev.mufeed.Wordbook' message('Looking for dependencies') py_installation = python.find_installation('python3') if not py_installation.found() error('No valid python3 binary found') else message('Found python3 binary') endif dependency('gobject-introspection-1.0', version: '>= 1.35.0') dependency('gtk4', version: '>= 4.6') dependency('libadwaita-1', version: '>=1.0') dependency('glib-2.0') dependency('pygobject-3.0', version: '>= 3.29.1') glib_compile_resources = find_program('glib-compile-resources', required: true) glib_compile_schemas = find_program('glib-compile-schemas', required: true) desktop_file_validate = find_program('desktop-file-validate', required: false) appstreamcli = find_program('appstreamcli', required: false) version = meson.project_version() version_array = version.split('.') major_version = version_array[0].to_int() minor_version = version_array[1].to_int() version_micro = version_array[2].to_int() prefix = get_option('prefix') bindir = prefix / get_option('bindir') localedir = prefix / get_option('localedir') pkgdatadir = join_paths(get_option('prefix'), get_option('datadir'), meson.project_name()) profile = get_option('profile') moduledir = join_paths(pkgdatadir, meson.project_name()) if get_option('profile') == 'development' profile = 'Devel' vcs_tag = run_command('git', 'rev-parse', '--short', 'HEAD').stdout().strip() application_id = '@0@.@1@'.format(base_id, profile) else profile = '' application_id = base_id endif subdir('data') subdir('wordbook') subdir('po') gnome.post_install( gtk_update_icon_cache: true, glib_compile_schemas: true, update_desktop_database: true, ) mufeedali-Wordbook-c0cb87f/meson_options.txt000066400000000000000000000003031505534671000213660ustar00rootroot00000000000000option( 'profile', type: 'combo', choices: [ 'default', 'development' ], value: 'default', description: 'The build profile for Wordbook. One of "default" or "development".' ) mufeedali-Wordbook-c0cb87f/po/000077500000000000000000000000001505534671000163535ustar00rootroot00000000000000mufeedali-Wordbook-c0cb87f/po/LINGUAS000066400000000000000000000000301505534671000173710ustar00rootroot00000000000000de fr hi it nl oc ru tr mufeedali-Wordbook-c0cb87f/po/POTFILES000066400000000000000000000002521505534671000175220ustar00rootroot00000000000000data/resources/ui/settings_window.blp data/resources/ui/shortcuts_window.blp data/resources/ui/window.blp wordbook/main.py wordbook/settings_window.py wordbook/window.py mufeedali-Wordbook-c0cb87f/po/de.po000066400000000000000000000154111505534671000173050ustar00rootroot00000000000000# German translation for the Wordbook's package. # Copyright (C) 2024 THE Wordbook'S COPYRIGHT HOLDER # This file is distributed under the same license as the Wordbook's package. # gregorni , 2023. # msgid "" msgstr "" "Project-Id-Version: wordbook\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-08-27 13:36+0530\n" "PO-Revision-Date: 2023-02-18 22:39+0100\n" "Last-Translator: gregorni \n" "Language-Team: German \n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: data/resources/ui/settings_window.blp:10 msgid "Appearance" msgstr "Erscheinungsbild" #: data/resources/ui/settings_window.blp:13 msgid "Force Dark Mode" msgstr "Dunkelmodus benutzen" #: data/resources/ui/settings_window.blp:18 msgid "Behavior" msgstr "Verhalten" #: data/resources/ui/settings_window.blp:21 msgid "Live Search" msgstr "Live-Suche" #: data/resources/ui/settings_window.blp:22 msgid "Show definition as the terms are typed in" msgstr "Zeigt Ergebnisse an, während der Suchbegriff eingegeben wird" #: data/resources/ui/settings_window.blp:26 msgid "Double Click Search" msgstr "Doppelklick zum Suchen" #: data/resources/ui/settings_window.blp:27 msgid "Search any word by double clicking on it" msgstr "Doppelklicken Sie Wörter, um sie zu suchen" # llm-generated #: data/resources/ui/settings_window.blp:31 msgid "Auto Paste on Launch" msgstr "Beim Start automatisch einfĂĽgen" # llm-generated #: data/resources/ui/settings_window.blp:32 msgid "Automatically paste and search clipboard content on launch" msgstr "" "Beim Start automatisch Inhalte aus der Zwischenablage einfĂĽgen und suchen" #: data/resources/ui/settings_window.blp:36 msgid "Pronunciations Accent" msgstr "Akzent der Aussprache" #: data/resources/ui/shortcuts_window.blp:11 msgctxt "shortcut window" msgid "General" msgstr "Allgemein" #: data/resources/ui/shortcuts_window.blp:14 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "TastenkĂĽrzel anzeigen" #: data/resources/ui/shortcuts_window.blp:19 msgctxt "shortcut window" msgid "Preferences" msgstr "Einstellungen" #: data/resources/ui/shortcuts_window.blp:24 msgctxt "shortcut window" msgid "Paste and Search" msgstr "EinfĂĽgen und Suchen" #: data/resources/ui/shortcuts_window.blp:29 msgctxt "shortcut window" msgid "Random Word" msgstr "Zufälliges Wort" #: data/resources/ui/shortcuts_window.blp:34 msgctxt "shortcut window" msgid "Search Selected Text" msgstr "Ausgewählten Text Suchen" # llm-generated #: data/resources/ui/shortcuts_window.blp:39 msgctxt "shortcut window" msgid "Toggle Sidebar" msgstr "Seitenleiste ein-/ausblenden" # llm-generated #: data/resources/ui/shortcuts_window.blp:44 msgctxt "shortcut window" msgid "Show Menu" msgstr "MenĂĽ anzeigen" # llm-generated #: data/resources/ui/shortcuts_window.blp:49 msgctxt "shortcut window" msgid "Quit" msgstr "Beenden" #: data/resources/ui/window.blp:9 msgid "Paste & Search" msgstr "EinfĂĽgen & Suchen" #: data/resources/ui/window.blp:14 wordbook/window.py:211 msgid "Search Selected Text" msgstr "Ausgewählten Text Suchen" #: data/resources/ui/window.blp:19 msgid "_Random Word" msgstr "_Zufälliges Wort" #: data/resources/ui/window.blp:28 msgid "_Preferences" msgstr "_Einstellungen" #: data/resources/ui/window.blp:33 msgid "_Keyboard Shortcuts" msgstr "_TastenkĂĽrzel" #: data/resources/ui/window.blp:38 msgid "_About Wordbook" msgstr "_Ăśber Wordbook" #: data/resources/ui/window.blp:69 msgid "History" msgstr "Verlauf" # llm-generated #: data/resources/ui/window.blp:75 msgid "Show Favorites Only" msgstr "Nur Favoriten anzeigen" # llm-generated #: data/resources/ui/window.blp:86 msgid "Clear History" msgstr "Verlauf löschen" # llm-generated #: data/resources/ui/window.blp:122 msgid "No recent searches or favorites" msgstr "Keine letzten Suchen oder Favoriten" # llm-generated #: data/resources/ui/window.blp:152 msgid "Clear" msgstr "Löschen" #: data/resources/ui/window.blp:157 msgid "Search" msgstr "Suchen" #: data/resources/ui/window.blp:168 msgid "Show History" msgstr "Verlauf anzeigen" # llm-generated #: data/resources/ui/window.blp:176 msgid "Main Menu" msgstr "HauptmenĂĽ" #: data/resources/ui/window.blp:193 msgid "Setting things up…" msgstr "Die App wird vorbereitet…" #: data/resources/ui/window.blp:194 wordbook/window.py:793 msgid "Downloading WordNet…" msgstr "WordNet wird heruntergeladen…" #: data/resources/ui/window.blp:211 wordbook/main.py:35 wordbook/main.py:95 #: wordbook/main.py:143 msgid "Wordbook" msgstr "Wordbook" #: data/resources/ui/window.blp:212 msgid "Look up definitions of any English term" msgstr "Schlagen Sie die Definitionen englischer Wörter nach" #: data/resources/ui/window.blp:273 msgid "Listen to Pronunciation" msgstr "Aussprache anhören" #: data/resources/ui/window.blp:302 msgid "No definition found" msgstr "Keine Definition gefunden" #: data/resources/ui/window.blp:317 msgid "Download failed" msgstr "Download fehlgeschlagen" #: data/resources/ui/window.blp:324 msgid "Retry" msgstr "Erneut versuchen" #: data/resources/ui/window.blp:333 msgid "Exit" msgstr "Beenden" #: wordbook/main.py:145 msgid "Look up definitions for words" msgstr "Schlagen Sie die Definitionen englischer Wörter nach." #: wordbook/main.py:147 msgid "translator-credits" msgstr "gregorni https://gitlab.com/gregorni" #: wordbook/main.py:151 msgid "Copyright © 2016-2025 Mufeed Ali" msgstr "Copyright © 2016-2025 Mufeed Ali" #: wordbook/window.py:82 msgid "Building Database…" msgstr "Datenbank wird erstellt…" # llm-generated #: wordbook/window.py:304 msgid "Wordlist Loading" msgstr "Wortliste wird geladen" # llm-generated #: wordbook/window.py:305 msgid "The word list is still loading. Please try again in a moment." msgstr "" "Die Wortliste wird noch geladen. Bitte versuchen Sie es in einem Moment " "erneut." # llm-generated #: wordbook/window.py:503 msgid "History cleared" msgstr "Verlauf gelöscht" # llm-generated #: wordbook/window.py:504 msgid "Undo" msgstr "RĂĽckgängig" # llm-generated #: wordbook/window.py:661 msgid "Toggle Favorite" msgstr "Zu Favoriten hinzufĂĽgen/entfernen" # llm-generated #: wordbook/window.py:718 msgid "Dismiss" msgstr "SchlieĂźen" #: wordbook/window.py:744 msgid "Invalid input" msgstr "UngĂĽltige Eingabe" #: wordbook/window.py:745 msgid "Nothing definable was found in your search input" msgstr "Es wurde keine Definition fĂĽr Ihren Suchbegriff gefunden" #: wordbook/window.py:870 msgid "Ready." msgstr "Bereit." #~ msgid "/Pronunciation/" #~ msgstr "/Aussprache/" #~ msgid "Re-downloading WordNet database" #~ msgstr "Lade die WordNet-Datenbank erneut herunter" #~ msgid "Just a database upgrade." #~ msgstr "Die Datenbank wird aktualisiert." #~ msgid "This shouldn't happen too often." #~ msgstr "Dies sollte nicht zu häufig passieren." mufeedali-Wordbook-c0cb87f/po/fr.po000066400000000000000000000156711505534671000173340ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the wordbook package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: wordbook\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-08-27 13:36+0530\n" "PO-Revision-Date: 2022-07-03 00:53+0200\n" "Last-Translator: IrĂ©nĂ©e Thirion \n" "Language-Team: \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" "X-Generator: Poedit 3.1\n" #: data/resources/ui/settings_window.blp:10 msgid "Appearance" msgstr "Apparence" #: data/resources/ui/settings_window.blp:13 msgid "Force Dark Mode" msgstr "Forcer le mode sombre" #: data/resources/ui/settings_window.blp:18 msgid "Behavior" msgstr "Comportement" #: data/resources/ui/settings_window.blp:21 msgid "Live Search" msgstr "Recherche en direct" #: data/resources/ui/settings_window.blp:22 msgid "Show definition as the terms are typed in" msgstr "Afficher les dĂ©finitions pendant que les termes sont tapĂ©s" #: data/resources/ui/settings_window.blp:26 msgid "Double Click Search" msgstr "Recherche par double-clic" #: data/resources/ui/settings_window.blp:27 msgid "Search any word by double clicking on it" msgstr "Recherchez n’importe quel mot en double-cliquant dessus" # llm-generated #: data/resources/ui/settings_window.blp:31 msgid "Auto Paste on Launch" msgstr "Collage automatique au lancement" # llm-generated #: data/resources/ui/settings_window.blp:32 msgid "Automatically paste and search clipboard content on launch" msgstr "" "Coller et rechercher automatiquement le contenu du presse-papiers au " "lancement" #: data/resources/ui/settings_window.blp:36 msgid "Pronunciations Accent" msgstr "Accent de prononciation" #: data/resources/ui/shortcuts_window.blp:11 msgctxt "shortcut window" msgid "General" msgstr "GĂ©nĂ©ral" #: data/resources/ui/shortcuts_window.blp:14 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Afficher les raccourcis" #: data/resources/ui/shortcuts_window.blp:19 msgctxt "shortcut window" msgid "Preferences" msgstr "PrĂ©fĂ©rences" #: data/resources/ui/shortcuts_window.blp:24 msgctxt "shortcut window" msgid "Paste and Search" msgstr "Copier et rechercher" #: data/resources/ui/shortcuts_window.blp:29 msgctxt "shortcut window" msgid "Random Word" msgstr "Mot alĂ©atoire" #: data/resources/ui/shortcuts_window.blp:34 msgctxt "shortcut window" msgid "Search Selected Text" msgstr "Rechercher le texte sĂ©lectionnĂ©" # llm-generated #: data/resources/ui/shortcuts_window.blp:39 msgctxt "shortcut window" msgid "Toggle Sidebar" msgstr "Afficher/Masquer la barre latĂ©rale" # llm-generated #: data/resources/ui/shortcuts_window.blp:44 msgctxt "shortcut window" msgid "Show Menu" msgstr "Afficher le menu" # llm-generated #: data/resources/ui/shortcuts_window.blp:49 msgctxt "shortcut window" msgid "Quit" msgstr "Quitter" #: data/resources/ui/window.blp:9 msgid "Paste & Search" msgstr "Copier et rechercher" #: data/resources/ui/window.blp:14 wordbook/window.py:211 msgid "Search Selected Text" msgstr "Rechercher le texte sĂ©lectionnĂ©" #: data/resources/ui/window.blp:19 msgid "_Random Word" msgstr "_Mot alĂ©atoire" #: data/resources/ui/window.blp:28 msgid "_Preferences" msgstr "_PrĂ©fĂ©rences" #: data/resources/ui/window.blp:33 msgid "_Keyboard Shortcuts" msgstr "_Raccourcis clavier" #: data/resources/ui/window.blp:38 msgid "_About Wordbook" msgstr "Ă€ _propos de Wordbook" #: data/resources/ui/window.blp:69 msgid "History" msgstr "Historique" # llm-generated #: data/resources/ui/window.blp:75 msgid "Show Favorites Only" msgstr "Afficher uniquement les favoris" # llm-generated #: data/resources/ui/window.blp:86 msgid "Clear History" msgstr "Effacer l'historique" # llm-generated #: data/resources/ui/window.blp:122 msgid "No recent searches or favorites" msgstr "Pas de recherches rĂ©centes ni de favoris" # llm-generated #: data/resources/ui/window.blp:152 msgid "Clear" msgstr "Effacer" #: data/resources/ui/window.blp:157 msgid "Search" msgstr "Rechercher" #: data/resources/ui/window.blp:168 msgid "Show History" msgstr "Afficher l’historique" # llm-generated #: data/resources/ui/window.blp:176 msgid "Main Menu" msgstr "Menu principal" #: data/resources/ui/window.blp:193 msgid "Setting things up…" msgstr "PrĂ©paration…" #: data/resources/ui/window.blp:194 wordbook/window.py:793 msgid "Downloading WordNet…" msgstr "TĂ©lĂ©chargement de WordNet…" #: data/resources/ui/window.blp:211 wordbook/main.py:35 wordbook/main.py:95 #: wordbook/main.py:143 msgid "Wordbook" msgstr "Wordbook" #: data/resources/ui/window.blp:212 msgid "Look up definitions of any English term" msgstr "Recherchez les dĂ©finitions d’un terme anglais" #: data/resources/ui/window.blp:273 msgid "Listen to Pronunciation" msgstr "Écouter la prononciation" #: data/resources/ui/window.blp:302 msgid "No definition found" msgstr "Aucune dĂ©finition trouvĂ©e" #: data/resources/ui/window.blp:317 msgid "Download failed" msgstr "TĂ©lĂ©chargement Ă©chouĂ©" #: data/resources/ui/window.blp:324 msgid "Retry" msgstr "RĂ©essayer" #: data/resources/ui/window.blp:333 msgid "Exit" msgstr "Quitter" #: wordbook/main.py:145 msgid "Look up definitions for words" msgstr "Recherchez les dĂ©finitions d’un terme anglais" #: wordbook/main.py:147 msgid "translator-credits" msgstr "IrĂ©nĂ©e Thirion " #: wordbook/main.py:151 msgid "Copyright © 2016-2025 Mufeed Ali" msgstr "Copyright © 2016-2025 Mufeed Ali" #: wordbook/window.py:82 msgid "Building Database…" msgstr "Construction de la base de donnĂ©es…" # llm-generated #: wordbook/window.py:304 msgid "Wordlist Loading" msgstr "Chargement de la liste de mots" # llm-generated #: wordbook/window.py:305 msgid "The word list is still loading. Please try again in a moment." msgstr "" "La liste de mots est en cours de chargement. Veuillez rĂ©essayer dans un " "instant." # llm-generated #: wordbook/window.py:503 msgid "History cleared" msgstr "Historique effacĂ©" # llm-generated #: wordbook/window.py:504 msgid "Undo" msgstr "Annuler" # llm-generated #: wordbook/window.py:661 msgid "Toggle Favorite" msgstr "Ajouter/Retirer des favoris" # llm-generated #: wordbook/window.py:718 msgid "Dismiss" msgstr "Rejeter" #: wordbook/window.py:744 msgid "Invalid input" msgstr "EntrĂ©e invalide" #: wordbook/window.py:745 msgid "Nothing definable was found in your search input" msgstr "Rien de dĂ©finissable n’a Ă©tĂ© trouvĂ© dans votre entrĂ©e de recherche" #: wordbook/window.py:870 msgid "Ready." msgstr "PrĂŞt." #~ msgid "/Pronunciation/" #~ msgstr "/Prononciation/" #~ msgid "Re-downloading WordNet database" #~ msgstr "Re-tĂ©lĂ©chargement de la base de donnĂ©es WordNet" #~ msgid "Just a database upgrade." #~ msgstr "Simplement une mise Ă  jour de la base de donnĂ©es" #~ msgid "This shouldn't happen too often." #~ msgstr "Cela ne devrait pas se produire trop souvent." mufeedali-Wordbook-c0cb87f/po/hi.po000066400000000000000000000210341505534671000173130ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the wordbook package. # FIRST AUTHOR , YEAR. # Scrambled777 , 2024. # msgid "" msgstr "" "Project-Id-Version: wordbook\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-08-27 13:36+0530\n" "PO-Revision-Date: 2024-05-11 15:18+0530\n" "Last-Translator: Scrambled777 \n" "Language-Team: Hindi \n" "Language: hi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" "X-Generator: Gtranslator 46.1\n" #: data/resources/ui/settings_window.blp:10 msgid "Appearance" msgstr "दिखावट" #: data/resources/ui/settings_window.blp:13 msgid "Force Dark Mode" msgstr "बलपूर्वक गहरा मोड" #: data/resources/ui/settings_window.blp:18 msgid "Behavior" msgstr "व्यवहार" #: data/resources/ui/settings_window.blp:21 msgid "Live Search" msgstr "लाइव खोज" #: data/resources/ui/settings_window.blp:22 msgid "Show definition as the terms are typed in" msgstr "जŕĄŕ¤¸ŕĄ‡ ही शब्द टाइप किए जाएं, परिभाषा दिखाएं" #: data/resources/ui/settings_window.blp:26 msgid "Double Click Search" msgstr "डबल क्लिक पर खोजें" #: data/resources/ui/settings_window.blp:27 msgid "Search any word by double clicking on it" msgstr "किसी भी शब्द पर डबल क्लिक करके उसे खोजें" # llm-generated #: data/resources/ui/settings_window.blp:31 msgid "Auto Paste on Launch" msgstr "लॉन्च पर ऑटो पेस्ट" # llm-generated #: data/resources/ui/settings_window.blp:32 msgid "Automatically paste and search clipboard content on launch" msgstr "लॉन्च पर क्लिपबोर्ड सामग्री को स्वचालित रूप से चिपकाएठऔर खोजें" #: data/resources/ui/settings_window.blp:36 msgid "Pronunciations Accent" msgstr "उच्चारण लहजा" #: data/resources/ui/shortcuts_window.blp:11 msgctxt "shortcut window" msgid "General" msgstr "सामान्य" #: data/resources/ui/shortcuts_window.blp:14 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "शॉर्टकट दिखाएं" #: data/resources/ui/shortcuts_window.blp:19 msgctxt "shortcut window" msgid "Preferences" msgstr "प्राथमिकताएं" #: data/resources/ui/shortcuts_window.blp:24 msgctxt "shortcut window" msgid "Paste and Search" msgstr "पेस्ट करें और खोजें" #: data/resources/ui/shortcuts_window.blp:29 msgctxt "shortcut window" msgid "Random Word" msgstr "यादŕĄŕ¤šŕĄŤŕ¤›ŕ¤żŕ¤• शब्द" #: data/resources/ui/shortcuts_window.blp:34 msgctxt "shortcut window" msgid "Search Selected Text" msgstr "चयनित पाठ खोजें" # llm-generated #: data/resources/ui/shortcuts_window.blp:39 msgctxt "shortcut window" msgid "Toggle Sidebar" msgstr "साइडबार दिखाएŕ¤/छŕĄŕ¤Şŕ¤ľŕ¤Źŕ¤" # llm-generated #: data/resources/ui/shortcuts_window.blp:44 msgctxt "shortcut window" msgid "Show Menu" msgstr "मेन्यू दिखाएŕ¤" # llm-generated #: data/resources/ui/shortcuts_window.blp:49 msgctxt "shortcut window" msgid "Quit" msgstr "बाहर निकलें" #: data/resources/ui/window.blp:9 msgid "Paste & Search" msgstr "पेस्ट करें और खोजें" #: data/resources/ui/window.blp:14 wordbook/window.py:211 msgid "Search Selected Text" msgstr "चयनित पाठ खोजें" #: data/resources/ui/window.blp:19 msgid "_Random Word" msgstr "यादŕĄŕ¤šŕĄŤŕ¤›ŕ¤żŕ¤• शब्द (_R)" #: data/resources/ui/window.blp:28 msgid "_Preferences" msgstr "प्राथमिकताएं (_P)" #: data/resources/ui/window.blp:33 msgid "_Keyboard Shortcuts" msgstr "कीबोर्ड शॉर्टकट (_K)" #: data/resources/ui/window.blp:38 msgid "_About Wordbook" msgstr "Wordbook के बारे में (_A)" #: data/resources/ui/window.blp:69 msgid "History" msgstr "इतिहास" # llm-generated #: data/resources/ui/window.blp:75 msgid "Show Favorites Only" msgstr "केवल पसंदीदा दिखाएŕ¤" # llm-generated #: data/resources/ui/window.blp:86 msgid "Clear History" msgstr "इतिहास साफ़ करें" # llm-generated #: data/resources/ui/window.blp:122 msgid "No recent searches or favorites" msgstr "कोठहाल की खोज या पसंदीदा नहीं" # llm-generated #: data/resources/ui/window.blp:152 msgid "Clear" msgstr "साफ़ करें" #: data/resources/ui/window.blp:157 msgid "Search" msgstr "खोजें" #: data/resources/ui/window.blp:168 msgid "Show History" msgstr "इतिहास दिखाएं" # llm-generated #: data/resources/ui/window.blp:176 msgid "Main Menu" msgstr "मŕĄŕ¤–्य मेन्यू" #: data/resources/ui/window.blp:193 msgid "Setting things up…" msgstr "चीज़ें निर्धारित की जा रही हŕĄŕ¤‚…" #: data/resources/ui/window.blp:194 wordbook/window.py:793 msgid "Downloading WordNet…" msgstr "WordNet डाउनलोड हो रहा हŕĄâ€¦" #: data/resources/ui/window.blp:211 wordbook/main.py:35 wordbook/main.py:95 #: wordbook/main.py:143 msgid "Wordbook" msgstr "Wordbook" #: data/resources/ui/window.blp:212 msgid "Look up definitions of any English term" msgstr "किसी भी अंग्रेजी शब्द की परिभाषा देखें" #: data/resources/ui/window.blp:273 msgid "Listen to Pronunciation" msgstr "उच्चारण सŕĄŕ¤¨ŕĄ‡ŕ¤‚" #: data/resources/ui/window.blp:302 msgid "No definition found" msgstr "कोठपरिभाषा नहीं मिली" #: data/resources/ui/window.blp:317 msgid "Download failed" msgstr "डाउनलोड विफल" #: data/resources/ui/window.blp:324 msgid "Retry" msgstr "पŕĄŕ¤¨: प्रयास करें" #: data/resources/ui/window.blp:333 msgid "Exit" msgstr "बाहर निकलें" #: wordbook/main.py:145 msgid "Look up definitions for words" msgstr "किसी भी अंग्रेजी शब्द की परिभाषा देखें" #: wordbook/main.py:147 msgid "translator-credits" msgstr "Scrambled777 " #: wordbook/main.py:151 msgid "Copyright © 2016-2025 Mufeed Ali" msgstr "कॉपीराइट © 2016-2025 मŕĄŕ¤«ŕ¤ĽŕĄ€ŕ¤¦ अली" #: wordbook/window.py:82 msgid "Building Database…" msgstr "डेटाबेस का निर्माण…" # llm-generated #: wordbook/window.py:304 msgid "Wordlist Loading" msgstr "शब्दसूची लोड हो रही हŕĄ" # llm-generated #: wordbook/window.py:305 msgid "The word list is still loading. Please try again in a moment." msgstr "शब्द सूची अभी भी लोड हो रही हŕĄŕĄ¤ कŕĄŕ¤Şŕ¤Żŕ¤ľ कŕĄŕ¤› देर में पŕĄŕ¤¨: प्रयास करें।" # llm-generated #: wordbook/window.py:503 msgid "History cleared" msgstr "इतिहास साफ़ हो गया" # llm-generated #: wordbook/window.py:504 msgid "Undo" msgstr "पूर्ववत् करें" # llm-generated #: wordbook/window.py:661 msgid "Toggle Favorite" msgstr "पसंदीदा में जोड़ें/हटाएŕ¤" # llm-generated #: wordbook/window.py:718 msgid "Dismiss" msgstr "खारिज करें" #: wordbook/window.py:744 msgid "Invalid input" msgstr "अमान्य आगत" #: wordbook/window.py:745 msgid "Nothing definable was found in your search input" msgstr "आपके खोज आगत में कŕĄŕ¤› भी निश्चित नहीं मिला" #: wordbook/window.py:870 msgid "Ready." msgstr "तŕĄŕ¤Żŕ¤ľŕ¤°ŕĄ¤" #~ msgid "/Pronunciation/" #~ msgstr "/उच्चारण/" #~ msgid "Re-downloading WordNet database" #~ msgstr "WordNet डेटाबेस को पŕĄŕ¤¨ŕ¤ डाउनलोड किया जा रहा हŕĄ" #~ msgid "Just a database upgrade." #~ msgstr "बस एक डेटाबेस उन्नयन।" #~ msgid "This shouldn't happen too often." #~ msgstr "ŕ¤ŕ¤¸ŕ¤ľ अक्सर नहीं होना चाहिए।" mufeedali-Wordbook-c0cb87f/po/it.po000066400000000000000000000151231505534671000173310ustar00rootroot00000000000000# ITALIAN TRANSLATION. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the wordbook package. # ALBANO BATTISTELLA , 2023. # msgid "" msgstr "" "Project-Id-Version: wordbook\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-08-27 13:36+0530\n" "PO-Revision-Date: 2023-10-01 08:26+0100\n" "Last-Translator: Albano Battistella \n" "Language-Team: italian \n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: data/resources/ui/settings_window.blp:10 msgid "Appearance" msgstr "Aspetto" #: data/resources/ui/settings_window.blp:13 msgid "Force Dark Mode" msgstr "Forza la modalitĂ  scura" #: data/resources/ui/settings_window.blp:18 msgid "Behavior" msgstr "Comportamento" #: data/resources/ui/settings_window.blp:21 msgid "Live Search" msgstr "Ricerca in tempo reale" #: data/resources/ui/settings_window.blp:22 msgid "Show definition as the terms are typed in" msgstr "Mostra la definizione mentre i termini vengono digitati" #: data/resources/ui/settings_window.blp:26 msgid "Double Click Search" msgstr "Ricerca con doppio clic" #: data/resources/ui/settings_window.blp:27 msgid "Search any word by double clicking on it" msgstr "Cerca qualsiasi parola facendo doppio clic su di essa" # llm-generated #: data/resources/ui/settings_window.blp:31 msgid "Auto Paste on Launch" msgstr "Incolla automaticamente all'avvio" #: data/resources/ui/settings_window.blp:32 msgid "Automatically paste and search clipboard content on launch" msgstr "Incolla e cerca automaticamente il contenuto degli appunti all'avvio" #: data/resources/ui/settings_window.blp:36 msgid "Pronunciations Accent" msgstr "Accento delle pronunce" #: data/resources/ui/shortcuts_window.blp:11 msgctxt "shortcut window" msgid "General" msgstr "Generale" #: data/resources/ui/shortcuts_window.blp:14 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Mostra scorciatoie" #: data/resources/ui/shortcuts_window.blp:19 msgctxt "shortcut window" msgid "Preferences" msgstr "Preferenze" #: data/resources/ui/shortcuts_window.blp:24 msgctxt "shortcut window" msgid "Paste and Search" msgstr "Incolla e cerca" #: data/resources/ui/shortcuts_window.blp:29 msgctxt "shortcut window" msgid "Random Word" msgstr "Parola Casuale" #: data/resources/ui/shortcuts_window.blp:34 msgctxt "shortcut window" msgid "Search Selected Text" msgstr "Cerca testo selezionato" #: data/resources/ui/shortcuts_window.blp:39 msgctxt "shortcut window" msgid "Toggle Sidebar" msgstr "Apri/Chiudi la barra laterale" #: data/resources/ui/shortcuts_window.blp:44 msgctxt "shortcut window" msgid "Show Menu" msgstr "Mostra menu" #: data/resources/ui/shortcuts_window.blp:49 msgctxt "shortcut window" msgid "Quit" msgstr "Esci" #: data/resources/ui/window.blp:9 msgid "Paste & Search" msgstr "Incolla & Cerca" #: data/resources/ui/window.blp:14 wordbook/window.py:211 msgid "Search Selected Text" msgstr "Cerca testo selezionato" #: data/resources/ui/window.blp:19 msgid "_Random Word" msgstr "_Parola casuale" #: data/resources/ui/window.blp:28 msgid "_Preferences" msgstr "_Preferenze" #: data/resources/ui/window.blp:33 msgid "_Keyboard Shortcuts" msgstr "_Scorciatoie da tastiera" #: data/resources/ui/window.blp:38 msgid "_About Wordbook" msgstr "_Informazioni su Wordbook" #: data/resources/ui/window.blp:69 msgid "History" msgstr "Cronologia" #: data/resources/ui/window.blp:75 msgid "Show Favorites Only" msgstr "Mostra solo i preferiti" # llm-generated #: data/resources/ui/window.blp:86 msgid "Clear History" msgstr "Cancella cronologia" #: data/resources/ui/window.blp:122 msgid "No recent searches or favorites" msgstr "Nessuna ricerca recente o preferito." # llm-generated #: data/resources/ui/window.blp:152 msgid "Clear" msgstr "Cancella" #: data/resources/ui/window.blp:157 msgid "Search" msgstr "Cerca" #: data/resources/ui/window.blp:168 msgid "Show History" msgstr "Mostra Cronologia" #: data/resources/ui/window.blp:176 msgid "Main Menu" msgstr "Menu principale" #: data/resources/ui/window.blp:193 msgid "Setting things up…" msgstr "Impostazione delle cose…" #: data/resources/ui/window.blp:194 wordbook/window.py:793 msgid "Downloading WordNet…" msgstr "Download di WordNet…" #: data/resources/ui/window.blp:211 wordbook/main.py:35 wordbook/main.py:95 #: wordbook/main.py:143 msgid "Wordbook" msgstr "Wordbook" #: data/resources/ui/window.blp:212 msgid "Look up definitions of any English term" msgstr "Cerca le definizioni di qualsiasi termine inglese" #: data/resources/ui/window.blp:273 msgid "Listen to Pronunciation" msgstr "Ascolta la pronuncia" #: data/resources/ui/window.blp:302 msgid "No definition found" msgstr "Nessuna definizione trovata" #: data/resources/ui/window.blp:317 msgid "Download failed" msgstr "Download non riuscito" #: data/resources/ui/window.blp:324 msgid "Retry" msgstr "Riprova" #: data/resources/ui/window.blp:333 msgid "Exit" msgstr "Uscita" #: wordbook/main.py:145 msgid "Look up definitions for words" msgstr "Cerca le definizioni di qualsiasi termine inglese." #: wordbook/main.py:147 msgid "translator-credits" msgstr "Albano Battistella" #: wordbook/main.py:151 msgid "Copyright © 2016-2025 Mufeed Ali" msgstr "Copyright © 2016-2025 Mufeed Ali" #: wordbook/window.py:82 msgid "Building Database…" msgstr "Creazione del database…" #: wordbook/window.py:304 msgid "Wordlist Loading" msgstr "Caricamento della lista di parole." #: wordbook/window.py:305 msgid "The word list is still loading. Please try again in a moment." msgstr "La lista di parole è ancora in caricamento. Riprova tra un momento." # llm-generated #: wordbook/window.py:503 msgid "History cleared" msgstr "Cronologia cancellata" # llm-generated #: wordbook/window.py:504 msgid "Undo" msgstr "Annulla" # llm-generated #: wordbook/window.py:661 msgid "Toggle Favorite" msgstr "Aggiungi/Rimuovi dai preferiti" # llm-generated #: wordbook/window.py:718 msgid "Dismiss" msgstr "Ignora" #: wordbook/window.py:744 msgid "Invalid input" msgstr "Inserimento non valido" #: wordbook/window.py:745 msgid "Nothing definable was found in your search input" msgstr "Non è stato trovato nulla di definibile nel tuo input di ricerca" #: wordbook/window.py:870 msgid "Ready." msgstr "Pronto." #~ msgid "/Pronunciation/" #~ msgstr "/Pronuncia/" #~ msgid "Re-downloading WordNet database" #~ msgstr "Nuovo download del database WordNet" #~ msgid "Just a database upgrade." #~ msgstr "Solo un aggiornamento del database." #~ msgid "This shouldn't happen too often." #~ msgstr "Questo non dovrebbe accadere troppo spesso." mufeedali-Wordbook-c0cb87f/po/meson.build000066400000000000000000000000511505534671000205110ustar00rootroot00000000000000i18n.gettext('wordbook', preset: 'glib') mufeedali-Wordbook-c0cb87f/po/nl.po000066400000000000000000000153021505534671000173250ustar00rootroot00000000000000# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Heimen Stoffels , 2022. msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-08-27 13:36+0530\n" "PO-Revision-Date: 2022-09-19 20:14+0200\n" "Last-Translator: Heimen Stoffels \n" "Language-Team: Dutch\n" "Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Lokalize 22.08.1\n" #: data/resources/ui/settings_window.blp:10 msgid "Appearance" msgstr "Vormgeving" #: data/resources/ui/settings_window.blp:13 msgid "Force Dark Mode" msgstr "Donker thema gebruiken" #: data/resources/ui/settings_window.blp:18 msgid "Behavior" msgstr "Gedrag" #: data/resources/ui/settings_window.blp:21 msgid "Live Search" msgstr "Typen om te zoeken" #: data/resources/ui/settings_window.blp:22 msgid "Show definition as the terms are typed in" msgstr "Toon resultaten tijdens het typen" #: data/resources/ui/settings_window.blp:26 msgid "Double Click Search" msgstr "Dubbelklikken om te zoeken" #: data/resources/ui/settings_window.blp:27 msgid "Search any word by double clicking on it" msgstr "Zoek de betekenis van een woord door er op te dubbelklikken" # llm-generated #: data/resources/ui/settings_window.blp:31 msgid "Auto Paste on Launch" msgstr "Automatisch plakken bij opstarten" # llm-generated #: data/resources/ui/settings_window.blp:32 msgid "Automatically paste and search clipboard content on launch" msgstr "Plak en zoek automatisch de klembordinhoud bij het opstarten" #: data/resources/ui/settings_window.blp:36 msgid "Pronunciations Accent" msgstr "Accent" #: data/resources/ui/shortcuts_window.blp:11 msgctxt "shortcut window" msgid "General" msgstr "Algemeen" #: data/resources/ui/shortcuts_window.blp:14 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Sneltoetsen tonen" #: data/resources/ui/shortcuts_window.blp:19 msgctxt "shortcut window" msgid "Preferences" msgstr "Voorkeuren" #: data/resources/ui/shortcuts_window.blp:24 msgctxt "shortcut window" msgid "Paste and Search" msgstr "Plakken en zoeken" #: data/resources/ui/shortcuts_window.blp:29 msgctxt "shortcut window" msgid "Random Word" msgstr "Willekeurig woord tonen" #: data/resources/ui/shortcuts_window.blp:34 msgctxt "shortcut window" msgid "Search Selected Text" msgstr "Selectie zoeken" # llm-generated #: data/resources/ui/shortcuts_window.blp:39 msgctxt "shortcut window" msgid "Toggle Sidebar" msgstr "Zijbalk in-/uitschakelen" # llm-generated #: data/resources/ui/shortcuts_window.blp:44 msgctxt "shortcut window" msgid "Show Menu" msgstr "Menu tonen" # llm-generated #: data/resources/ui/shortcuts_window.blp:49 msgctxt "shortcut window" msgid "Quit" msgstr "Afsluiten" #: data/resources/ui/window.blp:9 msgid "Paste & Search" msgstr "Plakken en zoeken" #: data/resources/ui/window.blp:14 wordbook/window.py:211 msgid "Search Selected Text" msgstr "Selectie zoeken" #: data/resources/ui/window.blp:19 msgid "_Random Word" msgstr "Willekeu_rig woord tonen" #: data/resources/ui/window.blp:28 msgid "_Preferences" msgstr "_Voorkeuren" #: data/resources/ui/window.blp:33 msgid "_Keyboard Shortcuts" msgstr "_Sneltoetsen" #: data/resources/ui/window.blp:38 msgid "_About Wordbook" msgstr "_Over Woordenboek" #: data/resources/ui/window.blp:69 msgid "History" msgstr "Geschiedenis" # llm-generated #: data/resources/ui/window.blp:75 msgid "Show Favorites Only" msgstr "Alleen favorieten tonen" # llm-generated #: data/resources/ui/window.blp:86 msgid "Clear History" msgstr "Geschiedenis wissen" # llm-generated #: data/resources/ui/window.blp:122 msgid "No recent searches or favorites" msgstr "Geen recente zoekopdrachten of favorieten" # llm-generated #: data/resources/ui/window.blp:152 msgid "Clear" msgstr "Wissen" #: data/resources/ui/window.blp:157 msgid "Search" msgstr "Zoeken" #: data/resources/ui/window.blp:168 msgid "Show History" msgstr "Geschiedenis tonen" # llm-generated #: data/resources/ui/window.blp:176 msgid "Main Menu" msgstr "Hoofdmenu" #: data/resources/ui/window.blp:193 msgid "Setting things up…" msgstr "Bezig met voorbereiden…" #: data/resources/ui/window.blp:194 wordbook/window.py:793 msgid "Downloading WordNet…" msgstr "Bezig met ophalen van WordNet…" #: data/resources/ui/window.blp:211 wordbook/main.py:35 wordbook/main.py:95 #: wordbook/main.py:143 msgid "Wordbook" msgstr "Woordenboek" #: data/resources/ui/window.blp:212 msgid "Look up definitions of any English term" msgstr "Bekijk de betekenis van Engelstalige termen" #: data/resources/ui/window.blp:273 msgid "Listen to Pronunciation" msgstr "Voorlezen" #: data/resources/ui/window.blp:302 msgid "No definition found" msgstr "Er is geen betekenis gevonden" #: data/resources/ui/window.blp:317 msgid "Download failed" msgstr "Het downloaden is mislukt" #: data/resources/ui/window.blp:324 msgid "Retry" msgstr "Opnieuw" #: data/resources/ui/window.blp:333 msgid "Exit" msgstr "Afsluiten" #: wordbook/main.py:145 msgid "Look up definitions for words" msgstr "Bekijk de betekenis van Engelstalige termen." #: wordbook/main.py:147 msgid "translator-credits" msgstr "Heimen Stoffels " #: wordbook/main.py:151 msgid "Copyright © 2016-2025 Mufeed Ali" msgstr "Copyright © 2016-2025 Mufeed Ali" #: wordbook/window.py:82 msgid "Building Database…" msgstr "Bezig met samenstellen van databank…" # llm-generated #: wordbook/window.py:304 msgid "Wordlist Loading" msgstr "Woordenlijst wordt geladen" # llm-generated #: wordbook/window.py:305 msgid "The word list is still loading. Please try again in a moment." msgstr "De woordenlijst wordt nog geladen. Probeer het zo meteen opnieuw." # llm-generated #: wordbook/window.py:503 msgid "History cleared" msgstr "Geschiedenis gewist" # llm-generated #: wordbook/window.py:504 msgid "Undo" msgstr "Ongedaan maken" # llm-generated #: wordbook/window.py:661 msgid "Toggle Favorite" msgstr "Favoriet wisselen" # llm-generated #: wordbook/window.py:718 msgid "Dismiss" msgstr "Negeren" #: wordbook/window.py:744 msgid "Invalid input" msgstr "Ongeldige invoer" #: wordbook/window.py:745 msgid "Nothing definable was found in your search input" msgstr "Er is geen betekenis aangetroffen van de door u gezochte term" #: wordbook/window.py:870 msgid "Ready." msgstr "Klaar voor gebruik." #~ msgid "/Pronunciation/" #~ msgstr "/Uitspraak/" #~ msgid "Re-downloading WordNet database" #~ msgstr "Bezig met opnieuw ophalen van WordNet…" #~ msgid "Just a database upgrade." #~ msgstr "Gewoon een databankupdate." #~ msgid "This shouldn't happen too often." #~ msgstr "Dit zou niet al te vaak moeten gebeuren." mufeedali-Wordbook-c0cb87f/po/oc.po000066400000000000000000000142221505534671000173150ustar00rootroot00000000000000# Translation in Occitan. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the wordbook package. # Quentin PAGĂS, 2025 # #, fuzzy msgid "" msgstr "" "Project-Id-Version: wordbook\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-08-27 13:36+0530\n" "PO-Revision-Date: 2025-08-24 22:32+0200\n" "Last-Translator: Quentin PAGĂS\n" "Language-Team: \n" "Language: oc\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 3.7\n" #: data/resources/ui/settings_window.blp:10 msgid "Appearance" msgstr "AparĂ©ncia" #: data/resources/ui/settings_window.blp:13 msgid "Force Dark Mode" msgstr "Forçar lo mòde escur" #: data/resources/ui/settings_window.blp:18 msgid "Behavior" msgstr "Compòrtament" #: data/resources/ui/settings_window.blp:21 msgid "Live Search" msgstr "Recèrca en dirèct" #: data/resources/ui/settings_window.blp:22 msgid "Show definition as the terms are typed in" msgstr "Afichar la definicion quand òm pica lo tèrme" #: data/resources/ui/settings_window.blp:26 msgid "Double Click Search" msgstr "Recèrca en doble clic" #: data/resources/ui/settings_window.blp:27 msgid "Search any word by double clicking on it" msgstr "Recercar quin mot que siá en lo doble clicant" #: data/resources/ui/settings_window.blp:31 msgid "Auto Paste on Launch" msgstr "Pegament auto al lançament" #: data/resources/ui/settings_window.blp:32 msgid "Automatically paste and search clipboard content on launch" msgstr "Pegar automaticament e recercar dins lo quichapapièrs al lançament" #: data/resources/ui/settings_window.blp:36 msgid "Pronunciations Accent" msgstr "Accent de la prononciacion" #: data/resources/ui/shortcuts_window.blp:11 msgctxt "shortcut window" msgid "General" msgstr "General" #: data/resources/ui/shortcuts_window.blp:14 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Afichar los acorchis" #: data/resources/ui/shortcuts_window.blp:19 msgctxt "shortcut window" msgid "Preferences" msgstr "PreferĂ©ncias" #: data/resources/ui/shortcuts_window.blp:24 msgctxt "shortcut window" msgid "Paste and Search" msgstr "Pegar e recercar" #: data/resources/ui/shortcuts_window.blp:29 msgctxt "shortcut window" msgid "Random Word" msgstr "Mot aleatòri" #: data/resources/ui/shortcuts_window.blp:34 msgctxt "shortcut window" msgid "Search Selected Text" msgstr "Recercar lo tèxte seleccionat" #: data/resources/ui/shortcuts_window.blp:39 msgctxt "shortcut window" msgid "Toggle Sidebar" msgstr "Afichar o amagar lo panèl lateral" #: data/resources/ui/shortcuts_window.blp:44 msgctxt "shortcut window" msgid "Show Menu" msgstr "Mostrar lo menĂş" #: data/resources/ui/shortcuts_window.blp:49 msgctxt "shortcut window" msgid "Quit" msgstr "Quitar" #: data/resources/ui/window.blp:9 msgid "Paste & Search" msgstr "Pegar e recercar" #: data/resources/ui/window.blp:14 wordbook/window.py:211 msgid "Search Selected Text" msgstr "Recercar lo tèxte seleccionat" #: data/resources/ui/window.blp:19 msgid "_Random Word" msgstr "_Mot aleatòri" #: data/resources/ui/window.blp:28 msgid "_Preferences" msgstr "_PreferĂ©ncias" #: data/resources/ui/window.blp:33 msgid "_Keyboard Shortcuts" msgstr "_Acorchis clavièr" #: data/resources/ui/window.blp:38 msgid "_About Wordbook" msgstr "_A prepaus de Wordbook" #: data/resources/ui/window.blp:69 msgid "History" msgstr "Istoric" #: data/resources/ui/window.blp:75 msgid "Show Favorites Only" msgstr "Mostrar sonque los favorits" #: data/resources/ui/window.blp:86 msgid "Clear History" msgstr "Escafar l’istoric" #: data/resources/ui/window.blp:122 msgid "No recent searches or favorites" msgstr "Cap de recèrcas recentas o de favorits" # llm-generated #: data/resources/ui/window.blp:152 msgid "Clear" msgstr "Escafar" #: data/resources/ui/window.blp:157 msgid "Search" msgstr "Recercar" #: data/resources/ui/window.blp:168 msgid "Show History" msgstr "Visualizar l'istoric" #: data/resources/ui/window.blp:176 msgid "Main Menu" msgstr "MenĂş principal" #: data/resources/ui/window.blp:193 msgid "Setting things up…" msgstr "Configuracions de las causas…" #: data/resources/ui/window.blp:194 wordbook/window.py:793 msgid "Downloading WordNet…" msgstr "Telecargament de WordNet…" #: data/resources/ui/window.blp:211 wordbook/main.py:35 wordbook/main.py:95 #: wordbook/main.py:143 msgid "Wordbook" msgstr "Wordbook" #: data/resources/ui/window.blp:212 msgid "Look up definitions of any English term" msgstr "Consultar la definicion de quin tèrme anglĂ©s que siá" #: data/resources/ui/window.blp:273 msgid "Listen to Pronunciation" msgstr "Escotar la prononciacion" #: data/resources/ui/window.blp:302 msgid "No definition found" msgstr "Cap de definicion pas trobada" #: data/resources/ui/window.blp:317 msgid "Download failed" msgstr "FracĂ s del telecargament" #: data/resources/ui/window.blp:324 msgid "Retry" msgstr "Tornar ensajar" #: data/resources/ui/window.blp:333 msgid "Exit" msgstr "Quitar" #: wordbook/main.py:145 msgid "Look up definitions for words" msgstr "Consultar las definicions de mots" #: wordbook/main.py:147 msgid "translator-credits" msgstr "Quentin PAGĂS" #: wordbook/main.py:151 msgid "Copyright © 2016-2025 Mufeed Ali" msgstr "Copyright © 2016-2025 Mufeed Ali" #: wordbook/window.py:82 msgid "Building Database…" msgstr "Construccion de la basa de donadas…" #: wordbook/window.py:304 msgid "Wordlist Loading" msgstr "Cargament de la lista de mots" #: wordbook/window.py:305 msgid "The word list is still loading. Please try again in a moment." msgstr "La lista de mots es encara a cargar. Tornatz ensajar dins un moment." #: wordbook/window.py:503 msgid "History cleared" msgstr "Istoric escafat" #: wordbook/window.py:504 msgid "Undo" msgstr "Desfar" #: wordbook/window.py:661 msgid "Toggle Favorite" msgstr "Alternar marcatge en favorit per la seleccion" #: wordbook/window.py:718 msgid "Dismiss" msgstr "Ignorar" #: wordbook/window.py:744 msgid "Invalid input" msgstr "Entrada incorrècta" #: wordbook/window.py:745 msgid "Nothing definable was found in your search input" msgstr "Res de definible es estat trobat dins vòstra recèrca" #: wordbook/window.py:870 msgid "Ready." msgstr "Lèst." mufeedali-Wordbook-c0cb87f/po/ru.po000066400000000000000000000172211505534671000173440ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the wordbook package. # FIRST AUTHOR , 2022. # msgid "" msgstr "" "Project-Id-Version: wordbook\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-08-27 13:36+0530\n" "PO-Revision-Date: 2022-08-27 14:57+0300\n" "Last-Translator: Danila Daniilov \n" "Language-Team: \n" "Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 3.1\n" #: data/resources/ui/settings_window.blp:10 msgid "Appearance" msgstr "ВнеŃний вид" #: data/resources/ui/settings_window.blp:13 msgid "Force Dark Mode" msgstr "Đ’Ńегда иŃпользовать тёмный режим" #: data/resources/ui/settings_window.blp:18 msgid "Behavior" msgstr "Поведение" #: data/resources/ui/settings_window.blp:21 msgid "Live Search" msgstr "ПоиŃĐş в реальном времени" #: data/resources/ui/settings_window.blp:22 msgid "Show definition as the terms are typed in" msgstr "Показывать определение при вводе терминов" #: data/resources/ui/settings_window.blp:26 msgid "Double Click Search" msgstr "ПоиŃĐş по Đ´Đ˛ĐľĐąĐ˝ĐľĐĽŃ ĐşĐ»Đ¸ĐşŃ" #: data/resources/ui/settings_window.blp:27 msgid "Search any word by double clicking on it" msgstr "ПоиŃĐş любого Ńлова при двойном нажатии на него" # llm-generated #: data/resources/ui/settings_window.blp:31 msgid "Auto Paste on Launch" msgstr "ĐвтовŃтавка при запŃŃке" # llm-generated #: data/resources/ui/settings_window.blp:32 msgid "Automatically paste and search clipboard content on launch" msgstr "ĐвтоматичеŃки вŃтавлять и иŃкать Ńодержимое бŃфера обмена при запŃŃке" #: data/resources/ui/settings_window.blp:36 msgid "Pronunciations Accent" msgstr "Đкцент произноŃения" #: data/resources/ui/shortcuts_window.blp:11 msgctxt "shortcut window" msgid "General" msgstr "Общее" #: data/resources/ui/shortcuts_window.blp:14 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Показать комбинации клавиŃ" #: data/resources/ui/shortcuts_window.blp:19 msgctxt "shortcut window" msgid "Preferences" msgstr "НаŃтройки" #: data/resources/ui/shortcuts_window.blp:24 msgctxt "shortcut window" msgid "Paste and Search" msgstr "Đ’Ńтавить и иŃкать" #: data/resources/ui/shortcuts_window.blp:29 msgctxt "shortcut window" msgid "Random Word" msgstr "СлŃчайное Ńлово" #: data/resources/ui/shortcuts_window.blp:34 msgctxt "shortcut window" msgid "Search Selected Text" msgstr "ПоиŃĐş выделенного текŃта" # llm-generated #: data/resources/ui/shortcuts_window.blp:39 msgctxt "shortcut window" msgid "Toggle Sidebar" msgstr "Показать/Ńкрыть боковŃŃŽ панель" # llm-generated #: data/resources/ui/shortcuts_window.blp:44 msgctxt "shortcut window" msgid "Show Menu" msgstr "Показать меню" # llm-generated #: data/resources/ui/shortcuts_window.blp:49 msgctxt "shortcut window" msgid "Quit" msgstr "Выйти" #: data/resources/ui/window.blp:9 msgid "Paste & Search" msgstr "Đ’Ńтавить и иŃкать" #: data/resources/ui/window.blp:14 wordbook/window.py:211 msgid "Search Selected Text" msgstr "ПоиŃĐş выделенного текŃта" #: data/resources/ui/window.blp:19 msgid "_Random Word" msgstr "СлŃчайное Ńлово" #: data/resources/ui/window.blp:28 msgid "_Preferences" msgstr "НаŃтройки" #: data/resources/ui/window.blp:33 msgid "_Keyboard Shortcuts" msgstr "Комбинации клавиŃ" #: data/resources/ui/window.blp:38 msgid "_About Wordbook" msgstr "Đž Wordbook" #: data/resources/ui/window.blp:69 msgid "History" msgstr "ĐŃтория" # llm-generated #: data/resources/ui/window.blp:75 msgid "Show Favorites Only" msgstr "Показывать только избранное" # llm-generated #: data/resources/ui/window.blp:86 msgid "Clear History" msgstr "ОчиŃтить иŃторию" # llm-generated #: data/resources/ui/window.blp:122 msgid "No recent searches or favorites" msgstr "Нет недавних поиŃков или избранного" # llm-generated #: data/resources/ui/window.blp:152 msgid "Clear" msgstr "ОчиŃтить" #: data/resources/ui/window.blp:157 msgid "Search" msgstr "ПоиŃĐş" #: data/resources/ui/window.blp:168 msgid "Show History" msgstr "Показать иŃторию" # llm-generated #: data/resources/ui/window.blp:176 msgid "Main Menu" msgstr "Главное меню" #: data/resources/ui/window.blp:193 msgid "Setting things up…" msgstr "НаŃтройка..." #: data/resources/ui/window.blp:194 wordbook/window.py:793 msgid "Downloading WordNet…" msgstr "ЗагрŃзка WordNet..." # llm-generated #: data/resources/ui/window.blp:211 wordbook/main.py:35 wordbook/main.py:95 #: wordbook/main.py:143 msgid "Wordbook" msgstr "Словник" #: data/resources/ui/window.blp:212 msgid "Look up definitions of any English term" msgstr "ПоиŃĐş определений любых английŃких терминов" #: data/resources/ui/window.blp:273 msgid "Listen to Pronunciation" msgstr "ПроŃĐ»ŃŃать ПроизноŃение" #: data/resources/ui/window.blp:302 msgid "No definition found" msgstr "Определение не найдено" #: data/resources/ui/window.blp:317 msgid "Download failed" msgstr "ĐžŃибка загрŃзки" #: data/resources/ui/window.blp:324 msgid "Retry" msgstr "Попробовать Ńнова" #: data/resources/ui/window.blp:333 msgid "Exit" msgstr "Выйти" #: wordbook/main.py:145 msgid "Look up definitions for words" msgstr "ПоиŃĐş определений любых английŃких терминов." #: wordbook/main.py:147 msgid "translator-credits" msgstr "hdsujnb" # llm-generated #: wordbook/main.py:151 msgid "Copyright © 2016-2025 Mufeed Ali" msgstr "© 2016-2025 Mufeed Ali" #: wordbook/window.py:82 msgid "Building Database…" msgstr "Создание базы данных..." # llm-generated #: wordbook/window.py:304 msgid "Wordlist Loading" msgstr "ЗагрŃзка ŃпиŃка Ńлов" # llm-generated #: wordbook/window.py:305 msgid "The word list is still loading. Please try again in a moment." msgstr "СпиŃок Ńлов вŃŃ‘ ещё загрŃжаетŃŃŹ. Повторите ĐżĐľĐżŃ‹Ń‚ĐşŃ Ń‡ĐµŃ€ĐµĐ· минŃŃ‚Ń." # llm-generated #: wordbook/window.py:503 msgid "History cleared" msgstr "ĐŃтория очищена" # llm-generated #: wordbook/window.py:504 msgid "Undo" msgstr "Отменить" # llm-generated #: wordbook/window.py:661 msgid "Toggle Favorite" msgstr "Добавить/Ńбрать из избранного" # llm-generated #: wordbook/window.py:718 msgid "Dismiss" msgstr "Закрыть" #: wordbook/window.py:744 msgid "Invalid input" msgstr "Неправильный ввод" #: wordbook/window.py:745 msgid "Nothing definable was found in your search input" msgstr "Đ’ резŃльтате поиŃка ничего не было найдено" #: wordbook/window.py:870 msgid "Ready." msgstr "Готово." #~ msgid "/Pronunciation/" #~ msgstr "ПроизноŃение" #~ msgid "Re-downloading WordNet database" #~ msgstr "Повторная загрŃзка базы данных WordNet" #~ msgid "Just a database upgrade." #~ msgstr "Только обновление базы данных." #~ msgid "This shouldn't happen too often." #~ msgstr "Это не должно проиŃходить ŃлиŃком чаŃто." mufeedali-Wordbook-c0cb87f/po/tr.po000066400000000000000000000153541505534671000173500ustar00rootroot00000000000000# Turkish translation of dev.mufeed.Wordbook. # Copyright (C) 2024 dev.mufeed.Wordbook's COPYRIGHT HOLDER # This file is distributed under the same license as the dev.mufeed.Wordbook package. # # Sabri Ăśnal , 2023. # msgid "" msgstr "" "Project-Id-Version: dev.mufeed.Wordbook\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-08-27 13:36+0530\n" "PO-Revision-Date: 2023-05-25 17:42+0300\n" "Last-Translator: Sabri Ăśnal \n" "Language-Team: Turkish \n" "Language: tr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Poedit 3.2.2\n" #: data/resources/ui/settings_window.blp:10 msgid "Appearance" msgstr "GörĂĽnĂĽm" #: data/resources/ui/settings_window.blp:13 msgid "Force Dark Mode" msgstr "Karanlık Kipi Zorla" #: data/resources/ui/settings_window.blp:18 msgid "Behavior" msgstr "Davranış" #: data/resources/ui/settings_window.blp:21 msgid "Live Search" msgstr "Canlı Arama" #: data/resources/ui/settings_window.blp:22 msgid "Show definition as the terms are typed in" msgstr "Terimler yazılırken tanımı göster" #: data/resources/ui/settings_window.blp:26 msgid "Double Click Search" msgstr "Çift Tık Arama" #: data/resources/ui/settings_window.blp:27 msgid "Search any word by double clicking on it" msgstr "Ăśzerine çift tıklayarak herhangi bir kelimeyi ara" # llm-generated #: data/resources/ui/settings_window.blp:31 msgid "Auto Paste on Launch" msgstr "BaĹźlangıçta otomatik yapıştır" # llm-generated #: data/resources/ui/settings_window.blp:32 msgid "Automatically paste and search clipboard content on launch" msgstr "BaĹźlangıçta panodaki içeriÄźi otomatik olarak yapıştır ve ara" #: data/resources/ui/settings_window.blp:36 msgid "Pronunciations Accent" msgstr "Telaffuz Aksanı" #: data/resources/ui/shortcuts_window.blp:11 msgctxt "shortcut window" msgid "General" msgstr "Genel" #: data/resources/ui/shortcuts_window.blp:14 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Kısayolları Göster" #: data/resources/ui/shortcuts_window.blp:19 msgctxt "shortcut window" msgid "Preferences" msgstr "Tercihler" #: data/resources/ui/shortcuts_window.blp:24 msgctxt "shortcut window" msgid "Paste and Search" msgstr "Yapıştır ve Ara" #: data/resources/ui/shortcuts_window.blp:29 msgctxt "shortcut window" msgid "Random Word" msgstr "Rastgele SözcĂĽk" #: data/resources/ui/shortcuts_window.blp:34 msgctxt "shortcut window" msgid "Search Selected Text" msgstr "Seçilen Metni Ara" # llm-generated #: data/resources/ui/shortcuts_window.blp:39 msgctxt "shortcut window" msgid "Toggle Sidebar" msgstr "Kenar çubuÄźunu aç/kapat" # llm-generated #: data/resources/ui/shortcuts_window.blp:44 msgctxt "shortcut window" msgid "Show Menu" msgstr "MenĂĽyĂĽ göster" # llm-generated #: data/resources/ui/shortcuts_window.blp:49 msgctxt "shortcut window" msgid "Quit" msgstr "Çık" #: data/resources/ui/window.blp:9 msgid "Paste & Search" msgstr "Yapıştır ve Ara" #: data/resources/ui/window.blp:14 wordbook/window.py:211 msgid "Search Selected Text" msgstr "Seçilen Metni Ara" #: data/resources/ui/window.blp:19 msgid "_Random Word" msgstr "_Rastgele SözcĂĽk" #: data/resources/ui/window.blp:28 msgid "_Preferences" msgstr "Te_rcihler" #: data/resources/ui/window.blp:33 msgid "_Keyboard Shortcuts" msgstr "_Klavye Kısayolları" #: data/resources/ui/window.blp:38 msgid "_About Wordbook" msgstr "Wordbook _Hakkında" #: data/resources/ui/window.blp:69 msgid "History" msgstr "GeçmiĹź" # llm-generated #: data/resources/ui/window.blp:75 msgid "Show Favorites Only" msgstr "Yalnızca favorileri göster" # llm-generated #: data/resources/ui/window.blp:86 msgid "Clear History" msgstr "GeçmiĹźi temizle" # llm-generated #: data/resources/ui/window.blp:122 msgid "No recent searches or favorites" msgstr "Son aramalar veya favoriler yok" # llm-generated #: data/resources/ui/window.blp:152 msgid "Clear" msgstr "Temizle" #: data/resources/ui/window.blp:157 msgid "Search" msgstr "Ara" #: data/resources/ui/window.blp:168 msgid "Show History" msgstr "GeçmiĹźi Göster" # llm-generated #: data/resources/ui/window.blp:176 msgid "Main Menu" msgstr "Ana MenĂĽ" #: data/resources/ui/window.blp:193 msgid "Setting things up…" msgstr "Wordbook ayarlanıyor…" #: data/resources/ui/window.blp:194 wordbook/window.py:793 msgid "Downloading WordNet…" msgstr "WordNet İndiriliyor…" #: data/resources/ui/window.blp:211 wordbook/main.py:35 wordbook/main.py:95 #: wordbook/main.py:143 msgid "Wordbook" msgstr "Wordbook" #: data/resources/ui/window.blp:212 msgid "Look up definitions of any English term" msgstr "Herhangi bir İngilizce terimin tanımını ara" #: data/resources/ui/window.blp:273 msgid "Listen to Pronunciation" msgstr "Telaffuzu Dinle" #: data/resources/ui/window.blp:302 msgid "No definition found" msgstr "Tanım bulunamadı" #: data/resources/ui/window.blp:317 msgid "Download failed" msgstr "İndirilemedi" #: data/resources/ui/window.blp:324 msgid "Retry" msgstr "Yeniden Dene" #: data/resources/ui/window.blp:333 msgid "Exit" msgstr "Çıkış" #: wordbook/main.py:145 msgid "Look up definitions for words" msgstr "Herhangi bir İngilizce terimin tanımını ara." #: wordbook/main.py:147 msgid "translator-credits" msgstr "Sabri Ăśnal " #: wordbook/main.py:151 msgid "Copyright © 2016-2025 Mufeed Ali" msgstr "Telif Hakkı © 2016-2025 Mufeed Ali" #: wordbook/window.py:82 msgid "Building Database…" msgstr "Veritabanı inĹźa ediliyor…" # llm-generated #: wordbook/window.py:304 msgid "Wordlist Loading" msgstr "SözcĂĽk listesi yĂĽkleniyor" # llm-generated #: wordbook/window.py:305 msgid "The word list is still loading. Please try again in a moment." msgstr "" "SözcĂĽk listesi hâlâ yĂĽkleniyor. LĂĽtfen kısa sĂĽre sonra yeniden deneyin." # llm-generated #: wordbook/window.py:503 msgid "History cleared" msgstr "GeçmiĹź temizlendi" # llm-generated #: wordbook/window.py:504 msgid "Undo" msgstr "Geri al" # llm-generated #: wordbook/window.py:661 msgid "Toggle Favorite" msgstr "Favoriyi aç/kapat" # llm-generated #: wordbook/window.py:718 msgid "Dismiss" msgstr "Kapat" #: wordbook/window.py:744 msgid "Invalid input" msgstr "Geçersiz girdi" #: wordbook/window.py:745 msgid "Nothing definable was found in your search input" msgstr "Arama girdinizde tanımlanabilir hiçbir Ĺźey bulunamadı" #: wordbook/window.py:870 msgid "Ready." msgstr "Hazır." #~ msgid "/Pronunciation/" #~ msgstr "/Telaffuz/" #~ msgid "Re-downloading WordNet database" #~ msgstr "WordNet veri tabanı yeniden indiriliyor" #~ msgid "Just a database upgrade." #~ msgstr "Sadece veri tabanı gĂĽncellemesi." #~ msgid "This shouldn't happen too often." #~ msgstr "Bu çok sık olmamalı." mufeedali-Wordbook-c0cb87f/po/wordbook.pot000066400000000000000000000116031505534671000207260ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the wordbook package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: wordbook\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-08-27 13:36+0530\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: data/resources/ui/settings_window.blp:10 msgid "Appearance" msgstr "" #: data/resources/ui/settings_window.blp:13 msgid "Force Dark Mode" msgstr "" #: data/resources/ui/settings_window.blp:18 msgid "Behavior" msgstr "" #: data/resources/ui/settings_window.blp:21 msgid "Live Search" msgstr "" #: data/resources/ui/settings_window.blp:22 msgid "Show definition as the terms are typed in" msgstr "" #: data/resources/ui/settings_window.blp:26 msgid "Double Click Search" msgstr "" #: data/resources/ui/settings_window.blp:27 msgid "Search any word by double clicking on it" msgstr "" #: data/resources/ui/settings_window.blp:31 msgid "Auto Paste on Launch" msgstr "" #: data/resources/ui/settings_window.blp:32 msgid "Automatically paste and search clipboard content on launch" msgstr "" #: data/resources/ui/settings_window.blp:36 msgid "Pronunciations Accent" msgstr "" #: data/resources/ui/shortcuts_window.blp:11 msgctxt "shortcut window" msgid "General" msgstr "" #: data/resources/ui/shortcuts_window.blp:14 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "" #: data/resources/ui/shortcuts_window.blp:19 msgctxt "shortcut window" msgid "Preferences" msgstr "" #: data/resources/ui/shortcuts_window.blp:24 msgctxt "shortcut window" msgid "Paste and Search" msgstr "" #: data/resources/ui/shortcuts_window.blp:29 msgctxt "shortcut window" msgid "Random Word" msgstr "" #: data/resources/ui/shortcuts_window.blp:34 msgctxt "shortcut window" msgid "Search Selected Text" msgstr "" #: data/resources/ui/shortcuts_window.blp:39 msgctxt "shortcut window" msgid "Toggle Sidebar" msgstr "" #: data/resources/ui/shortcuts_window.blp:44 msgctxt "shortcut window" msgid "Show Menu" msgstr "" #: data/resources/ui/shortcuts_window.blp:49 msgctxt "shortcut window" msgid "Quit" msgstr "" #: data/resources/ui/window.blp:9 msgid "Paste & Search" msgstr "" #: data/resources/ui/window.blp:14 wordbook/window.py:211 msgid "Search Selected Text" msgstr "" #: data/resources/ui/window.blp:19 msgid "_Random Word" msgstr "" #: data/resources/ui/window.blp:28 msgid "_Preferences" msgstr "" #: data/resources/ui/window.blp:33 msgid "_Keyboard Shortcuts" msgstr "" #: data/resources/ui/window.blp:38 msgid "_About Wordbook" msgstr "" #: data/resources/ui/window.blp:69 msgid "History" msgstr "" #: data/resources/ui/window.blp:75 msgid "Show Favorites Only" msgstr "" #: data/resources/ui/window.blp:86 msgid "Clear History" msgstr "" #: data/resources/ui/window.blp:122 msgid "No recent searches or favorites" msgstr "" #: data/resources/ui/window.blp:152 msgid "Clear" msgstr "" #: data/resources/ui/window.blp:157 msgid "Search" msgstr "" #: data/resources/ui/window.blp:168 msgid "Show History" msgstr "" #: data/resources/ui/window.blp:176 msgid "Main Menu" msgstr "" #: data/resources/ui/window.blp:193 msgid "Setting things up…" msgstr "" #: data/resources/ui/window.blp:194 wordbook/window.py:793 msgid "Downloading WordNet…" msgstr "" #: data/resources/ui/window.blp:211 wordbook/main.py:35 wordbook/main.py:95 #: wordbook/main.py:143 msgid "Wordbook" msgstr "" #: data/resources/ui/window.blp:212 msgid "Look up definitions of any English term" msgstr "" #: data/resources/ui/window.blp:273 msgid "Listen to Pronunciation" msgstr "" #: data/resources/ui/window.blp:302 msgid "No definition found" msgstr "" #: data/resources/ui/window.blp:317 msgid "Download failed" msgstr "" #: data/resources/ui/window.blp:324 msgid "Retry" msgstr "" #: data/resources/ui/window.blp:333 msgid "Exit" msgstr "" #: wordbook/main.py:145 msgid "Look up definitions for words" msgstr "" #: wordbook/main.py:147 msgid "translator-credits" msgstr "" #: wordbook/main.py:151 msgid "Copyright © 2016-2025 Mufeed Ali" msgstr "" #: wordbook/window.py:82 msgid "Building Database…" msgstr "" #: wordbook/window.py:304 msgid "Wordlist Loading" msgstr "" #: wordbook/window.py:305 msgid "The word list is still loading. Please try again in a moment." msgstr "" #: wordbook/window.py:503 msgid "History cleared" msgstr "" #: wordbook/window.py:504 msgid "Undo" msgstr "" #: wordbook/window.py:661 msgid "Toggle Favorite" msgstr "" #: wordbook/window.py:718 msgid "Dismiss" msgstr "" #: wordbook/window.py:744 msgid "Invalid input" msgstr "" #: wordbook/window.py:745 msgid "Nothing definable was found in your search input" msgstr "" #: wordbook/window.py:870 msgid "Ready." msgstr "" mufeedali-Wordbook-c0cb87f/pyproject.toml000066400000000000000000000011111505534671000206430ustar00rootroot00000000000000[project] name = "Wordbook" dynamic = ["version"] requires-python = ">=3.12" dependencies = [ "rapidfuzz>=3.13.0", "pydantic>=2.11.5", "wn>=0.11.0", ] [tool.uv] package = false [tool.setuptools] packages = ["wordbook"] [tool.isort] profile = "black" line_length = 120 [tool.pylint.format] max-line-length = 120 [tool.black] line-length = 120 [tool.ruff] line-length = 120 [tool.pyright] reportMissingModuleSource = "none" [dependency-groups] dev = [ "basedpyright>=1.29.2", "pip>=25.0.1", "pygobject-stubs>=2.12.0", "requirements-parser>=0.11.0", ] mufeedali-Wordbook-c0cb87f/screenshots/000077500000000000000000000000001505534671000202755ustar00rootroot00000000000000mufeedali-Wordbook-c0cb87f/screenshots/dark.png000066400000000000000000002505221505534671000217320ustar00rootroot00000000000000‰PNG  IHDRRŠ7-tEXtCreation TimeThu 14 Aug 2025 10:29:35 AM ISTÜ]Ę IDATxśěÝwX•ő˙ÇńçY A9 ŽÄVŽÜ۲ĚĘU¶­,ł4-۶~–í˝SK[–Mż•-µ´\iî sď[@@@ŕÎ9ż?€#{ĂaĽ×u_ç>÷}źű~"9Żó7T_OPŽjŇ{©©\ž. PDDDDpą\¤§§ăp¤űz{ű  mäâı9”˛Ö=/÷qů­©¨ U’Ö¨üfäËŢ•ĎxţÝ»÷úĹd2µHN>Ł%µš‚”HÉ9ť.l6fłąCăĆŤ?~lg'›€vÓ+@ˇÁŞ$AŞ Ö¨üfĺË•˘˛ZŁüşví1Űd2µ8s&ĄďA¤fR)=»ÝŽÉdnÓ¨Qcż'ŽýCF—ľüĆ>eż‘/ąö—ŞUްÁEť¤°iĎłÂUöiÍ}/¸ ód//ݤ¤äâÖ'"Ůx{{gö ¶d°˛NkéÂápb·ŰIKK#--­<ʬւZt$¨y'ü›ăĺg‚®äĂĺÄ–ORôbDł٧+ŞµÎś9żż˙Č6mÚíŘąsËŻäś`"kö>'9óKîiĐ R`ÁÂ>…ĺ×­/żŕ”˝K_VkTÖ¸¨¬.}Ţőë·<˙üóćź9“bp8Hń'›0›ÍÔ­ëŹĹâUˇőŘí6“HOOŻĐëTEuĂhŃăü¶ôt)""R %ťÜÇţµ?’}ĐÓĄÔJfł‰:uüOíŮłýꤤ¤śť=k6ż¬–ެýň›Éň¶Z‘Ďs řAި™ú˛O.‘űćş^€çÎÝ?µXĚ]RRR ą¤HíRś ĺííM@@=*ďÔ.Nת֩ ‰č? FŇSN“p`=É'wcOŠĹĺŇl˘""’—Á`Äâ_ĂpšwĂě[\Nv-űL­Sâëë‹Édř`Ó¦ŤIdÜo*ż›ř5‹cŚUac¤Š¤ »ńnV‹”_Ë–­žNII5hr ‘łŠ#e6›©_ßJĺ…(>>ŢÔ–[Ô ăüËî‘ÓQ‘]ű5)§˘pŘÎPú±©""RóąpŘÎw„ë1űÔĹŰÚŔć‰?˛Ű™OXë8ťNĽ˝}[?~ô[2BTqďU*}‚+éŤz kĄ˛´kwÁ8§Ói¨ ĘDĘSÝşţTnĘbČĽvÍעÇ5îurÓ<µ@‰H‰ą\NNnšÇé¨H03ţ¶HĄs:ť8é ÂĂŰô"Ł1'+Źä—U ä™'‡’Ü ´°©Đs?f/ĐěăăÓŻ6Žą)‹Ě›Íyěú‹ŢŢŢ5ş‹_P‹Žř7lIzĘi˘7˙ćérDD¤š‹Ţüu‚[áß°%A-:Ş‹_6&“ źŚĎ6fłŁ1#*8ť÷…˛Űm¤¦¦QÖąŇÓÓ©SÇŻđW概ÂSÖ$ą'“(ěţS9g:ŞüXAQäŰÍĎl¶4MO×"%áíííéŞD )¨y'¬WK””™Ëĺ$áŔzŕěßÚÎd2QŻ^=ńóóÇËË Łńld0ŤxyyáççO`` őęŐĂd*ęMs8Ň1™ŚmÉf”»E*űzvĹÉ;y”t^ßÜ.č9î3e2}Ő­O¤d,‹§K¨5T$˙ŕć$źÜíŮBDD¤ĆČú›’ő7¦6óőő%0°>>>Ĺ~ŤŹŹ đőő-Ő5'N§!Śłˇ ŠÎ,Yë%OQ7HÉ]@î~FÁ¨I&DJ¨*ܨ·*ÔP‘Ľü¬Ř“b=\IŐ·ző O— "R-dýMÉúS[ůůŐˇnÝş”n¬·şuëâçW§ÄŻtą\ XÉ'“PĽˇb+ɩ܊Jpîç† +ߣGw\.ëÖ­Ż H­Ő¨Q#ž{îi:wîän•±Űí¬_˙Ď>ű'Nś¨„*<1ÉDnUˇ† ”yłÝâvëkѢ9}úô¦E‹řůŐ!))™ýű÷łrĺj8PaeŠHőáţ›R‹očîë닟_Ů'­ňóóÇét‘’’RŇ—f˙á4$É•íy©Z|ʤ<Ş~}+ 4Ŕj >ľöM1yŮeü±ČÓĄÔ8Ď=÷4=ztϱÍb±Đ»w/žzj÷Ý÷€‡*ËÉb±p×]c¸âŠË ,Ökbbbří·|ňÉLěv{WX3ŤF®şęJz÷î™c{@@=:vĽ€Ž/`ĺĘŐüúëÜZ1eĽHAL&SąÎü[·®?6›­Ě“PT„Š RůM/X®BCCÝë!!ˇ5"Hy{{±nÝj†ż–ýű¸÷µm{>ß|ó%\Đ…ĆŤóĆŻđß+©…¤öčÜ9c€č…^LBÂi‚‚YĽřşvíěÉŇr;öNFŽĽąDŻ â¶ŰF.¦O˙¨b «a˛B”ÝngÉ’eDFFź€ŐjĄS§Ž\rIúôé…Á?ýôK™®uăŤ7pýő×pÝu#Šýš†<őÔ$ÚµkËěŮß1kÖ—|ůĺgüţűBfÎüĽLőHŐ¶wďÎR˝®U«6ĺ\I???Ę÷ăż???Nź>]ňVp)k*Ő ĺ!$$Ä˝ÂÎťĄű%Ş®Ž?ÎG}‚ËĺâäÉ“ĹzÍÝwŹcüř»?˙w&MzŞ‚+¬^fÍšIÇŽäŮľ|ůŇ<ŰęÔ©Ă˙mp?ŹŚÜČí·ßYˇődĐ Ëxçť)ÄĹĹą·?˙ü3ôęŐ/ß×´oߎŹ>šÎŕÁ¤ŠˇE‹ćî5cĆGDErŤeѢĹěŢ˝›qăĆŇ»w/"#˙«ôn~÷ßuëÖĺľűâřńcŘl6ţúk۶mŻÔ:DD¤vËâĽřK—ŹŹÉÉÉem•*(·”z"‡Ň©âĚ|Qa¬V+ľľľ¤¤¤`0¨S§őęŐ+MR­¶śN'ďż?Ý#×6 Ô´ÉCĘň~<ůł Č˘Š˛yó–Ż•ÂőîÝ €%K–ĺQŮ<Ĺҥ˸ě˛ôîÝłŇTÆÁ¬]»–-[¶¸·M›öAĄÖ ""žQQ-KĄáăSřmSVŻ^Á˙mâ‰'ž$>>€€€^~ů:wîTŕ—ŔYçNN>SÖ Ë0%ţ@W]ű*´É¬[·®~ŕ;~üFŁ‘°°fôéÓ;ĎţŘŘŘ;…Őj寿Đ·oiŰö|î»o:´Çb±°gĎ^>ţřS–,YĘłĎNć꫇0dČ † ÄСĂ9tč—_~·ß~­Zµ$))‰ĺËWđî»SÝżŕ?ţř­Zµâ•W^ㆮ#44”áĂŻcÁ‚yL&®ľúzöíŰŔŔ—ň曯ËŔWT›ń"Y-JY-M\ĐĄĐă‹{śT-[¶ 22˛Đă"#7rŮeÝLJŮlfüř± <___,ř#GŽä8Ć`0pË-7qÍ5ñZëłwď^>űl«V­ćŠ+.ă™g&Đ®][n»íVž{î,řź~úžŻżžÍ?ĚaČAŚsS¦Lăž{ĆÓ°aC¶nÝĆ /ĽÄ±cÇÝ×ęŰ·cÇŢAXX'NśäÇćűď¨6˙‹gY,^…îß·o?\ĐiÓŢăŢ{\Ľ÷Ţ;DD„sđŕÁbś»ĚA rf—2}^ĺ§)č†\v»ťĂ‡sčĐ!l6[ľÇ*jşŔ*ČßßźŹ>šNŻ^=ٰá_~űíwZ¶lÁŰożA‡íٸńżÇ˙úë<’““ąîşkxýőWhÓ&‚˙Ť$55•«ŻάY3óĚßď˝÷P§ŽŰ·ďŕäÉ“¬Ył€¸ŹÉćÎťW#>| |EľëR{dM˝ZÔ8̬ýţţ~Ĺ>÷C=Ŕ!CxóÍw3fńńńÜrËM9ŽÉ÷î»S=z Ë—ŻŕŤ7^ĄGŹî,Y˛ŚˇCŻâřńăĚť;ʎCŻbÉ’eů^+00K/ŔĉŹ3zôüüüxâ‰ÇÜű»wďĆkŻ˝Ě‚0jÔť|đÁ ĆŚÍرžé¶*""ŐŹŮ\xÍCMäđáĂ´jŐ’iÓŢcęÔ÷çرc<ôĐ#e:·'äW‘ÇĆ=ĺgÝşő´iÓ†ćÍ›bccŮ´i3©©©îc/^‚ŹŹ:´'00pqčĐa¶oßᩲËěçźç”čř&MšŕďďŹĂáŕ™gžçÔ©SĚ™ó^^^ěÝ»—M›6Ó¨Q#÷©É“źÁh4r÷Ýăxýő·=űřůůńăŹßÓĽyC‡áűďp_cŐŞ5<ţř˙ໞýüóŻôéÓ›/ĺĂ?Ć××— /웹ŻlW^y‰ß~[g]jŹää3Ô«W«ŐJllÁ÷›˛ZÜÇ‡źźÆ áµ×Ţ`ɒڱx{÷îăĽóÎĄiÓ&řúúpÓM7ňÔSϰrĺ*ľüň çťw.×^{5k×®#6öTŽĄ &“‰—^z•3g2ęű⋯xöŮÉ·ß~łgÇ·ßţ€Ě]wÝÉÇZ¬÷$""•Ż*M6a4NžŚf„űy˙ý)´j•ŃăĉÜwß9zH”ćÜĺ,żÖŞ<ŰŞ^´ËĹét˛}űvbbbhßľôíŰ›ĺË˙v·Dy{{Ń·oo,/ŇŇŇŘĽy3ŃŃ1®ĽlöîÝKZÚŮ–6Z¶lQŕńűöíc÷î=„‡·fáÂůěÚµ›-[¶ňűď ü`âž2űĎ?˙ 99™•+WqíµWÓ®]ŰAjѢE9Ć-[ö§Oź&<Ľ5aaaśwŢąřřř°qă8Pxó¬Hu±oß>:vĽ€Nť:˛hŃâŹëÔ)c¦Çýű÷ëĽÍšťĹbaÓ¦Í9¶oŘđŻ;H………áăăĂ›oľFRR’ű˙łzGbb˘;DAƸ:łŮŚĹbÁfłŃ©SG:uęČ•WÍq ó†Š"""eg·§çřŚ›–fËńĽ:©ňA*Ktt4«Wݎ˙ ±X,Lg{%ŤF, .—‹Ő«W“’’ZČ™Ş‡‰+púóüŘívFŽĹСéŢ˝íÚµeÄ1â&MzŠůó/E9xzzzŽç6›Ťß_ČŤ7^Ď…öŁC‡ö@FK•HM±rĺj:vĽ€K.éĎîÝ»9x0*Ď1aa͸řâţ™ÇŻ*ć™3ľYËÝ9ż.ÉŁGŹ!!!g×Âôôň˝ź†ÍfăĂ?féŇeyö%&&–ëµDD¤üTĄÉ&śNWˇ-G :ő=Z´hîĆ´iď2aÂý…ö¬p:«ŢDgU~ŚTv]g ÄÇ'`2™éŢ˝˝zőÄËË›řř VO—éMš4ᆮĂl¶đŘc˙ÇŕÁW˛`ÁBúôéŕłäĺe2šRcb2ş* x)1$k–˛-[¶yÝ_~ÉM={v§w¤¤°páĺřÎD<ëŔ¬\ą‹Ĺ¸qc8pL&‚‚8đRĆŤ» ‹ĹLrňbbŠ×~đŕAěv;]şäś°¤K—ÎŮŽ‰"--ŤĐĐPŽ;î^BCC ?ZZ۶mĎs___¬VkŤď(""/÷—îą˝ýöî5aÂýLp?$,,Ś·ß~łLçö„jÓ"ШQ#Ěf}úôĆhĚČ˝zőŕĚ™7nÄńă…÷±¬‰L&÷ß/‹…ž=»Oßľă•Ö¬YŔáǸđÂ~Ěń>“'?Ëôé3<ůI}t"ýű_DÓ¦MiÔ(”2oŢü"Ż»uë6öěŮKßľaí—_ććč>$Rüúë\ †Ś©Đ/»l {R•ě’’’ń÷÷cüřqĚń!‰‰Iůśé¬3gÎđË/są÷Ţ»IHHŕŕÁ\zéš7oŽÝžŃĹ!%%…Ůłżă±Ç&b±Ů»w?:´çˇ‡îçŐWßŕ÷ßËoĚŢçź‘9ăf +W®"44”‰dÆH^zé•r»ŽÔ\v» /Ż‚gî‹`×®Ý<üđ#îÖ§ îçí·ß$""ĽČsW5Ő&HY,f‚đ÷ŻKĆ„‡HOO§yóć™wQ†ŕŕ`,3v{ŐK­)**Š‘#G1qâCôěŮŁŃČřę«ořő×y,XđÝ»wçŇK/ˇsçN4kv?üđ#)))Śu+ť;wr¸{÷Ý)¤¤¤ëÚżüň+'>ÔśI&˛<ńÄ“ů®W111Qż~ýbßK*« ftttE–VŁ8ťN~úé"#7ҧOoZ´hNÝşuIJJfßľ}¬\ąšĆŤKhhH±ĂÔ{ďM%--•Gy:uę°`ÁĚšő7ß<Â}̇~ĚéÓ§7n,!!!ś8q’·Ţz§\CŔÚµëxüńIŚ3š;ďÍ™3g?˙wM4!"RĹUĄÉ&RSÓđóó/p~÷‰ŠŤ=ŨQwëÜUMqfčË~ʍ¬uc¶Ç¬Ĺ”ą3/ŔXűőëż&!ˇl7ËmҤ1:tŕĚ™d¶lŮęN˛V«•öíŰąFoÚ´‰#GŽ–ézR|W_=śgźťLTTÆ]íérĘdѢ3jÔy¦ŚĎұăĚš5“ččh.˝´lS˘ÇĹĹc±ä˙}FÆ ‹|ýÝwŹă¶ŰF–ęÚłf}ÉŚyÜÉ“'Kuţę ÷SŘ3ď…r9źżżż;L9r”wßťR.ç­ VŻ^QčŤEDä¬ÖC3îń·jć}~­Ş¤ęŐ«‡ŹŹOąž355•Ó§‹ź%Ś\ßě€ HĎ\™‹3ŰâĘö5+ű:ٶąU›©´46›Ť#Gް{÷Žł­ăăăYąráá­iÚ´iµťůŁşéС=÷Ý7óĎ?€Ź>Şţß\Ďť;ź;YłfëXOű䓌:ľ˘ŔWçÍoż-ŕÓO?«ČŇjĄ¤¤$>üđcî¸ăö"ď;%""RŞŇd1´ŹŹ7ĺw÷$ÉÉÉĺt®ňUm‚TLL ‹/)pżÓédçÎ]ěÜą««ŞÝ:wîDÇŽpňd4ü sçÎótIeöÁ36l»+inŃŃŃĚť;ß}¬'Ůív¦O˙éÓ?ôt)’)))‰)S¦yş Źp8$&&•Ű­3“r4 T%Ő&HIŐóůç_đůç_xşŚre·ŰyゥĽ÷ŢTO—BFë±Çî…ť­†ĚĺÁËĄ™éDD¤ě †ĚI±kńß•””ŚFCˇăĄŠ#99©Řcö=ˇZM.R›8ž˙¸*ÔP‘lÉńXü=\IŐ§ńQ""Ĺ“ő7%ëoLm•ś|&ó>„ĄůRÖEbb"ÉÉU{&h)‘*Ęn·{ş„*QCEJŠ>€_ç\)®¬ż)Ycjł””bcO‘ššZěפ¦¦{ŞJ·DeQ©˘ŇŇböoôt9UŠĂáČěŞWµ»ë•„ľ‚©Â2nčę‰ \EŢL¶¦ŘżöGp9©×¬ ; UË””Á`¤a‡ˇÔkÖ \ÎŚż-Ră©EJ¤ KOO'!á4ő¨Ľü\$$ś&==˝’®çY‰Ńٵě3"úʦ^łNÔ nEÂő$źÜŤ=)Vłů‰Hľ #˙@ü†ĐĽfßzŕr˛kŮg$FôtyR ¤D޸´´4NťŠŁn]˙ ďćg·ŰHLLŞ5!*KĚţŤ¤%˝M‹×ŕß°%ç đĽž.KDDŞ‘¤“űŘżöG…¨ZDAJ¤HOO'..oooĽ˝˝±X,LFĘŢJĺÂápb·ŰIKK«ńc˘ “}MóŢ!¨EG‚šwÂ?¸9^~VPW?ɏˉ-9ž¤čÄÔ¨ZHAJ¤©ía§2Äěߨ?†"""R$}Ő*"""""RB R""""""%¤ %"""""RB R""""""%¤ %"""""RB R""""""%¤ %"""""RB R""""""%¤ %"""""RB R""""""%¤ %"""""RBfO›ÉâŃâ‹Ńě…Áhňt9"Ĺćr:p¦ŰpÚSpŘS=]ŽT *¤Ś& fߌf/O—"R*Ł “—oĆ’n#=%§Ăîé˛DDDD¤T‰®}&‹^u˘¤Ć0š˝đŞŚÉâăéRDDDD¤xęÎ'5žŃěĄ.~""""5ŚG”ŃâëÉË‹Tý®‹Ô,ž RjŤ’ZBżë""""5‹G”î%µ…~×EDDDj–*s)©ą|||8đRš6mBll,ţą¸¸8ú÷żĆŤńý÷s°ŰuĎ-©>¤D¤P/ľř7Ý4‡ĂADÄů%~}˝zőřţűoiÝşµ{Ű?˙l 00O>ůÁ€źź?üIy–-"""Rˇ¤D¤BŤq;DEFnäČ‘#ěŰ·źŕŕ ’’’đ÷÷çđáC®RDDD¤d¤D¤BµnÝ »ÝÎČ‘ŁHMM ::†ţý/Ąn]:ěÉEDDDJĚă7ä©J Ľű2ĽűÁÓĺTş‹/îĎĎ?Ďa۶M,]ú']tadž……ńÖ[o°fÍJvěŘÂź.`„»1›3ľź4čröîÝɵ×^€ĹbaëÖ˙ظńZµjɆ kY¶l1·Ý6€›oÁŢ˝;Ů»w'Vk/ľř˙üł†M›ţeĘ”whĐ Až:nşiżţú[¶l$2r=}4ťvíÚ–÷ŹFDDD$µH‰dÓľíątéÔ€óĎ‹`ë¶ť®¨ň p13f|€ŃńýJłfÍřčŁéü÷ߦ<ǶnÝšďľű†€€÷¶–-[đđĂŇ©SGîşëî2×ó Ď3xđîçC† &44”n¸É˝íĄ—žgÄÝĎ}}}0ŕúőë˨Qw°nÝú2×!"""’źŃ"5âú«óÍG%zMHĂ Ţç%ţZřăÇÜŠŹŹ7sľů;GŤ¨ *Ą:ĐżŹ{ý’ {{°’Ę÷ÄŹc4IOOç‰'&q饗óá‡ŃĄKç<Ç>÷ÜÓðaĂiÓ¦-“'?d´j t9 üADÄůĚź˙gΤq>]şč‡ IDATô(V=m۞Ƿ0lŘŐlÝş €.]:sŢyçĐŁGwwúěłY´kב‹.ş„­[·âĺĺĹ /<[Ö‰HjD*Ť'ڎ®ż÷>ü?ü4›ÍĆ_+Ö°műnO—&b0čź-<]ŇżO­éŢFË–-řůç_řţű9ě߀·ß~Ź-[¶ć86$¤!=zt`Ú´ضm;ééé|óÍlvěČhÁ»ě˛¸\.ééŽt‡ŁX5˝üňk¬_˙۶mcęÔ÷ÝŰ[´hŔ•W 66–—^z…””>´iÓŚVł¬÷$"""RŢjm׾† Xłî_6oÝáŢ6eúLV$žÖľíą„†»ź7nBDxKvîÚëÁŞ*GŁFˇîőÜÁiëÖm9Ć5oŢÜ0ź}öiž}öé<çkҤI™kŠŠŠrŻÇÄĸ׽ĽĽ2ë 00={vź¦M›°oßţ2×""""’[µ Rfł™»ÇÜĘ+ŕëëĂ‚?—rřČńÇ Fޏ†k‡Âj `ďľ|:k6«ÖüĂ—]ĚsO> @»óŰ0jäő<óŇŰ,řc)ż|÷)_Íţ‰ďśÇĐA;úfŢ}˙Sîw; ٲmĎżňÇŽźt_«_ďăš7kʉ“ŃĚůĺwľ›ó+N§«R.R2Sßzžî];yÜż›gۆČÍÜóऊ(«JČÝ g2ÜpÇŞU«ól?|řHą×•[ö:łşć_áuHíTí‚ÔĂ÷ŤeŔĹ}yýíé:ĚŔKúqË«IN>ă>ć®;náÚáyéő)ٱvŚ­©®î}ř)ţ7g..Wń[].?Ď]ŔýŹäíĘVÝEEE±wď>®ĽňJnľymÚD0iŇ´i‘ăŘcÇŽ Ŕ=÷ÜMÇŽ`2™čŃŁ;k×®dŐŞĺŚqC…×śŐ ĤIOŕďďŹŐŔkŻ˝Ěć̙͑ó>>ĄĚ""""…©V-RÍš6Áb1óßćí9¶oÜLÓ&Ť kŠŹŹ7o˝ú4IÉg[šüýüŘ Š’HLJćĚ™÷óSq Íf, 6›ŤÎŰŃąc;®zYŽëÔő÷'átb‰ßŁT›ÍĆŰS>bĺęőL~âA‚ňŢź(»¸¸^|í=ţ^]s§Ó~ĺ•×řčŁéÍ&^xá9ŇÓÓY˝z ˝zőĚqě“O>ÍěŮ_Ň9sľË±/55•eË–Wx˝+VüÍ÷ßĎáúëŻeôčQŚ=*Çţ•+WUZëXIŐ«WŹĎ?˙”k®ąŢÓĄH)U« •5$"÷Žü&Vu×C$$śÎ±-kö°ňbłŮńÉW,ůkež}u”ŞeíúHĆÜó(?˙ď“gčs:]Ü>î!Žź®äę*×ŇĄË7îxŕ>ÂĂ[sâÄI^xá%zôčž'HíÜą‹«®ş–ű>}úŘ€ŘŘXţúkď˝7•ăÇŹp•ňőÄ“ظq##FÜH«V-»ví⫯ľć§ź~©”JĘËË‹3Ţç‚ :ä»ذˇĽňĘ‹<řŕD-Z\ÉŐ‰HqU« u ę0v{:];w ęĐŮÁě];źý@r0ę0ii6…4dÇÎ=îíť;¶ă豓”§m;vścň‰–-šáíĺťc›Tmí۶)tšsŁŃ@ŰóÚÔř °dÉR–,YšgŰ+ŻĽ–çب¨(}ô‰"ĎůđĂŹđđĂŹäŮľwď>Zµj“cŰ7ßĚć›ofç962rcžcłĚžýłg—ᆰĆh4ň曯»§ŹĎ˙ľľľ<ýôS,_ľ˘Ŕ®Ç"""âYŐjŚÔ™3)ü2o!÷ŤÍ€ţ}iŐ˛9ăÇÜJó°sÜǤ¤¤ňí÷?óřĂ÷0pŔ…´jĆŐW^Á{o»ví˘I“Ć 8ŔUŠHqT«)€w¦}BjjŹ>8ž:u|ůýŹĄ|ţĺ÷Ü|ăp÷13>ůŠÓ§“çHBC‚9q2†7ßűß.)×ZÖ¬ű—Çžz™1·ßÄŰo"ůL ż-X‡3ż*×ëHĹ©ëďGĎťÝĎ].żĚűää3ÜtĂUŤß5ôîŮ•şţ~ę˛)%vÉ%óâ‹ĎRŕ1´iÁÍ7ßĬY_đí·ßńĚ3Oqůĺ—1ţď•X­W~ý™ro3dŰ–µnĚöµ2sćâXkż~ý×äŻŕcm\öw R/ż„g&=Ŕá#ÇxůŤilÜdÜglň¸[<ź{ůť2…ńÔřŁy¶ĹĹĹc±T»ď3¤V­Z^`Ęę®8dČ`¦Ly‡˙ţŰÄ5×\OëÖ­Y¸p>QQQ\|ńŔĘ,WDD¤Ú  2r}O °6 =sqd.Îl‹+ŰcÖ”ÎŮ×ɶͭZuí)o§ââI8ťČ׳â–;îs‡(€-ŰvrëůňŰ9ÄĹ'{*ΕJuUXKT–¬›GD„päHĆĐŕŕŕŠ+LDDDĘD_…K­¶fÝż\6ěć÷Űl6¦Ířśi3>ŻĽ˘¤Ö*ÁmÍDDDÄĂÔ"%"RŽ;Vä1}úô`×®]4mÚ€ččš?S¤HuĄ %"R&MzŞČ0uĎ=ăřĺ—ąôîÝ €M›6Wlq"""Rj R"’Gýúőąďľ Íů÷ţmŐŞ%{÷îäśsÎÉwv=ô˙üł†˙]‡ŻŻ/?ţř=m۶-ď’ 4hĐĺî`â Ë—˙MßľýiŐŞ 3g~žď1ÉÉÉDFnäŰogc4ąé¦X¸đŹJ¬TDDDJBc¤D$Ź‘#o¦}űv¤§§ç»żE‹¤ĄĄą'E(Č A—sűí·ńđĂŹpđŕ! čС=‡Ş˛óđóóă•W^â–[FUĘőŠňĘ+Ż’ç^R×_?½>|ř•„‡‡sřđţüsqe—("""Ť)ÉÁËË‹‘#o.°ő eËěŰ·§ÓYčą®şęJćĎ˙ťĹ‹—˛gĎZ¶lÉɓќ>ť÷vᆮcűölÝşµR®W§ÓÉ#Ź<ĆÚµë <&=ÝAZZ/ľř2v»˝«‘’đh‹”ËéŔ`4y˛‘Jár:<]B±]yĺ0NžŚfÍšµ„„4ä˙ţďqú÷ż€>AË–-Ůłg=ztç›oľtżţăŹ?!=ÝÁÝwŹso»ńĆë9r«Wݎwď~îí]ÎÝwŹ'<Ľ5ű÷`ňägřî»oąňĘkđňňâ‡f»Ź=qâ$˝{÷ă‰'ĄU«VDFndäČ[¨WŻ.‹-ćńÇ'‘––ć>Ţh42jÔmĽřâËó*%›ÍĆřń5kfľűç͛ϼyó+ą*))ʶH9ÓmžĽĽHĄ©NżëŁGŹr·Fůűűóż˙}KXXăÇOŕÖ[o§wď^ p1{öě`Ë–­Ś“šn»m4ďż?wŢyŹ=úpűíwrţůÜÁ,Ë7ňĆŻńý÷?0|řµ|ńĹ—LťúN§“}űö±uëVz÷î‡Ýnç‘Gcđŕa´nݚ޽{áp86l8ăÇO`Đ A\}őđçżě˛¸\N–,YZ‘?®R9}ú4W_}ť§Ë‘2đh‹”Óž‚ÉËד%T §=ĹÓ%Kź>˝iĐ »EäÎ;Gc49rÉÉÉ@Ć8źß~›ëRÉÉÉřúú`·ŰYłf-GFë[łfQlŢĽ%GK€ŐjĺÉ'ź`ňägů駟عsýű÷§M›RR2~^>>ľX,ţýw#ńńń„‡‡óÓO?óá‡đ÷ß+Ů»w/ˇˇ9o|{Ç·óŮg_ŮýPDDD¤4<Ú"ĺ°§V«oęEJĂ™nĂaOőtĹr督ůꫯÝcsFڏ‘ŻżţƢRR2ŢKVhŐŞűöíw‡(€˘ŁcÜ(».Áét2ţo9¶'$Äł{÷n÷óđđÖ¤ĄĄą'§đőőĄI“ĆĚź˙{Ž×qôčQ÷óÚŢš~SâźHqx|˛‰ô”O— RˇŞËďx«V-éŢ˝ß|“1.©Nť:4lĚöí;r׾}[ŇÓ8p€5kVrß}oÍĽyż¸Ź‹wß`6·đđÖěÚµ›-ç);vĚĐ""ÂsLjŃşu+ ;wž=oýúőiĐ »vť `cĆÜÁ˙ţ÷gÎś)ĹOBDDD¤hRN‡{ň)O—!R!ěɧp:ŞÇĚkwÜq;żüň+qqq¤ĄĄa·Ű pc6›ąóÎ;8xđ ééé nąĺVNźNäý÷§3věx÷±mÚDä7Ů9ťN‚‚‚rlëÚµ ­[·ĘŃ"ŐşuköîÝ›ăy\\§Nťý7#""—ËĹîÝ“_4jÔK/Ŕ¬Y_•á§!"""R8Ź)ČčâgKŚV7?©1śé6l‰ŃŐ¦K_ýúőąęŞ+ůěłYîm‡ĺËWpď˝÷Đ˝{7:vĽ€éÓ§ęž±Ż^˝şX­Vę×·˛}űŽÝř2Zťňo‘úëŻĺ4kvŹ<ň0mÚD0lŘPžzj»wďÁb±D›6;v«Ő d„¦ě­QŃJuôč1w÷ĂQŁneѢĹ;v¬ü~@""""ąT‰ -S¶¤ěɧpŘRŞŐtŃ"1ŹÖ‚=ů¶¤jÓpóÍ#X·n}ŽnuO>9™ýű÷óńÇ3xçť·X´h1{÷îu÷ŘcŹňÝwßđÁS kdłŔŔŔ[¤Ö®]ÇłĎ>Ď5× gö쯹ě˛L›ö>.—‹˝{÷1|ř•¬Ył’sĎmĂرw2uę»@FhĘ]cëÖ­Ý­XuęÔáĆŻçÓO?+żŽH> ĹŘfȶ-kÝí1k1e.ćĚĹ °Ö~ýúŻIH¨śpŠT'qqńX,ť<‹ĹŠËxä‘Çřűď•ĺrÎ^˝z2kÖL:uę–c˘ŠŠ6jÔm :ëŻQiבŞ% €ČČő=xŔŘ€ôĚĹ‘ą8ł-®lŹ®ĚÓd_'Ű6·*Ó"%"ž1lŘPâăăĘ%DŐ©S‡¶mŰ2jÔ­,_ľ˘RC”ŃhäöŰoećLµF‰HĹS©ĺ~üń'®¸bhąśkŔ€K=űk|}}yňɧËĺśĹĺt:ąřâüţűÂJ˝®ÔNžíS$"5ĘÜąó;wž§Ë©pj‘)!)‘R)!)‘R)!)‘R)!)‘R)!)‘R)!)‘\zôčN÷îÝ<]†TafO R•ÔŻoĄAX­ÄÇ'x¸"©ŠŞU‹ÔřńwńÇżĺŮţöŰođßhܸqŽí·Ţz +V,Ĺh,ß·ůî»ońěł“ËőśR5„††ş×CBB 9RDDDDjłj¤Ö¬YKHHçśÓÔ˝Í`0ĐĄKşwďšăř®]»°~ý?8ťÎJ­SŞŻ÷zhhH!GŠHmV­‚ÔćÍ[HNN¦k׳)""śzőę˛pátëvv»Ńh¤sçN¬YłÖĄJ5dµZńőő%%%…ÔÔTęÔ©C˝ző<]–TAŐjŚ”Ăá`ÆHşuëÂO?ý @·n]Ůłg/«V­ćž{Ć»ŹÍXőXłfţţţLśř—\Ňooo6nüŹwŢyŹť;wpŐUøűîq|ţůŚ7–Ť7ńĐC dҤ'čŮł6›ŤéÓ?¬ě·- [·®ĺ»ďřńŤFšѧOď<űcccY·n}E—(""""UXµj‘X»v-]»vq?ďÖ­+˙ţÉşu˙dvű;Ç˝ýرăDEEa0:ő]Ú¶=źÇű?FŹCLL 3g~BŁFgÇÁŃ«WOxŕa^yĺ5L&Ó§żOhh(÷ß˙&<@ďŢ˝čÔ©cĄżo)_&“)ßív»ťĂ‡sčĐ!l6[ľÇ †Š,MDDDDŞj¤˛Ź“2ŤtéŇ™µk×rôčQ>BŹÓVwíÚ…µk׺×;wîÄĉʱví:¶oßÁäÉĎrüřqnľů&÷ąŤF#O>ů4›6mćäÉ“ôěŮpyäqţůg[·nĺńÇ'ét °nÝz8¸€ŚV¦ĄK—±hŃb’’’HLLdńâ%,]şŚŘŘŘĚWą8tč˙üłÁcu‹HŐP­şöěŮł—XşvíJ˝z»đóócýúڶk×®Ł[·®Ě™óť;wâĺ—_ŕĽóÎ%::†C‡ąĎărąŚŚäĽóÎuoKLL"))ÉýĽuëVDGGsôčQ÷¶ÔÔT¶lŮZŃoS*ÓédűöíÄÄÄĐľ};éŰ·7Ë—˙ín‰ňöö˘oßŢX,^¤ĄĄ±yóf˘Łc<\yĺrą\¸2VDDDD2 Ôö¶…j¤ Ł5ˇS§ŽÔcűöí$&&AęŃG'Ţšşuë˛vmĆř¨Ň¶ eý’äż]j‚ččhVŻ^C˙ţb±X0™Î6ŇŤF, .—‹Ő«W“’’ęÁJ+—ÓéÂd2âăăťůs1a0čL‘ÚĚĺĘhŚp8ŘívŇŇŇp8śŤµóBµëÚă¤Ú·oÇt`íÚłţ×­[OPP b÷î=ś:u €m۶DÓ¦Mrś§cÇŽěرŁŔëěÚµ›ŕŕ Z¶láŢćëëK»vmËů‰'Y­€řřL&3Ý»wŁWŻžxyyź€Á` Ŕęé2+…ÓéÄ`0P·®?őë[©SNjŌѨ%""RŰ `4°XĚÔ©ăKýúVęÖőÇ`0ÔĘŰ UÓ µŽćÍĂčÜą“»Ő ..ŽÝ»÷pýő׹ÇGlŘđ/7ţÇ›oľN·n]9÷Ü6<÷ÜÓ4jÔoľů_ˇ×Ůąs'Żżţ*]»vˇm۶ĽúęK¤¦Öž–‰Ú QŁFÍ&úôéM`` V«•^˝z`±Xhܸ‘'K¬N§ooo¬V+ŢŢ^ž.GDDDŞooŻĚĎ޵.LUË uěŘq>L˝zőŚÜcßÚµëđ÷÷sO{'L¸źíŰwđ曯ńůçźĘwŚÉ1ţ)7‡ĂÁ=÷ÜGTTS¦ĽĂLeőę5î1YRýY,f‚đ÷Ż‹ŃhŕСCěßż0ŕçç@pp0Kµě [,N§__ßĚo•<]ŤT'ԭ돯Żo­ Sů}dĘ˝-ű@ˇ¬uc¶Ç¬Ĺ”ą3/ŔXűőëż&!átą/RVMš4¦C‡ś9“Ě–-[‰ŤÍčjµZißľţţţlÚ´‰#G ŢĄďń€–ŐU·®żGë‘ę/11‰´´4ŚFϵ׹ľ'Řžą82g¶Ĺ•í1k†­ěëdŰćVsżb)†´46›Ť#Gް{÷‡{_||<+W®"<Ľ5M›6%--˙űJUg.— “Éä‹""""eáďďOzzş{ÜuM¦ %µZLL ‹/)pżÓédçÎ]ěÜą««ŞY3ďřúúŞ;ź” !cr¶Ś[ ŐěÉŞŞĺ))­Q>>Ţž.DDDDjoL&y{ĆŐ, R"µ”Ë^^šťODDDĘź——®šťŁ¤Dj#—Ë…ËĺR‘ ‘¤2>oÔT R"µ–+łŮ]DDD¤|©kźÔh5}6ńŚÚđCAJ¤ĘjeŻ˙Ɖd}ƨÁ=ű¤Dj§üŻšT!5÷3‡‚”H )H‰”‚”H )H‰”‚”T /żü"ëׯaѢ…ž.EDDDDAJDDDDD¤¤¤DDDDDDJHAJDJěá‡dýú5¬_ż†ćÍĂrě{ě±GXż~ ëÖ­¦aÆԩăË˝÷Nŕçźç°rĺr~űm“&=A ÜŻkŢ<Ě}ΡCóôÓO±bĹ2ţď˙Ďsýŕŕ ¦M›Âʕ˙?˙Wîşk &“©bß´H6 R"Rbż˙~vśR˙ţĺŘׯ__ţý7’“'OâííÍÇȨQ·Ň¤IĽĽĽâ꫇óůç3iĐ ~žóßtÓ† ŠŹŹOž}&“‰·ß~‹=şăĺĺEÆ ;v “'?YÎďRDDD¤` R"RbŰ·o'** €‹.:¤Ú´‰ 44€ pŰm·Óéä©§ž¦gĎ>Ś;ŽÄÄD5 eěرyÎÎĚ`Ô¨;řöŰŮ9öůűű“’r†‘#ocěŘqg۶m8p0Ďţgź}ť;w±qăĽůć;îí}űö.Çw("""R0ł§ ‘ęiáÂ…Ś7ÁŔE]Čś9?rŃEAęďżW’Ńh¤iÓ& p ëׯÉsžŔŔ@ĽĽĽrlŰż×MLLäčŃŁîçŰ·ow݇„„”é=‰—‚””ʡC‡ŮşumŰžOź>˝ůëŻĺ´i“ѵnáÂ?ň}Íź.Ęw»ŃłqÜĺ*řş!×k )"""Rq¤D¤Ô,X@۶çÓąs'zöě@rr2+Vü €Óéäرc4iŇ„E‹3iŇSî×zyyałŮJ|MÂÂÂÜcŁÎ=÷\÷ľăÇO”ĺí›ĆH‰H©ýńÇ"śN'~~~Ś1€%K–ćHY­P—\r1]ŮlćśsÎaćĚOX˛äO&Mz˘Ä×}ć™É´oßžnÝşňČ#ÝŰW®\UĆw$"""R‡ĂÁ˛e•čšqqqřřx3sćÇ9¶Ď›7ź]»v•Z¤D¤L,8śbbbذaCŽý)))ÜyçX>űěs˘˘ałŮ8}:‘ż˙^ÉرăYµju‰®g·§óĐCʰví:l6'Nśŕ“O>ĺĹ_.—÷#"""RůŤŇνÍm[Öş1ŰcÖbĘ\Ě™‹`¬ýúő_“pşÜ‹©îâââ±X*żaŘétârąŞôk‹HíÁ`Č3©TE  2r}O °6 =sqd.Îl‹+ŰcÖ”WŮ×ɶÍM-R""""""%¤ %"""""RB R""""""%¤ %’KŹÝéŢ˝›§Ë‘*LÓź‹dSżľ• `µźŕáŠDDDD¤*Şv-R ĚcÄËtŽ^xŽ·Ţz˝ś*’š$44Ô˝ZČ‘""""R›U» %R‘BBBÜ롡!…)""""µ™‚”H&«ŐŠŻŻ/)))¤¦¦R§NęŐ«çé˛DDDD¤ Ş–c¤7nÄŚďÓąs'“řâ‹/™5ëK÷~???&N|.Ćh4˛aĂżL™2Ť}űöç{ľ^x€rŰm#1›Í¬Zµš—_~ŤS§NUĘ{’ĘŐ­[W‚‚ňżíńă'0Ť„…5ŁOźŢyöÇĆƲnÝúŠ.QDDDDްjŮ"5jÔ­¬Xń7·Ý6šü‰‡~.]:`0:ő]Î=· <đ0wÜ1–ÔÔTfÍšéžD ?_|Mš4áúëobäČQX­VŢJĄß‰Y*‡ÉdĘw»ÝnçđáĂ:t›Í–ď1ˇ"K‘j Z¶H}ýő·|ýő·ěر“+®¸ŚîÝ»±aĂżtéŇ™víÚrůĺC‹‹ŕÉ'źćĎ?gČA|ůĺ×ůžÓfłńâ‹/ăp8xę©§Y¸đ7şví˘Ö‡hÝşő´iÓ†ćÍ›bccŮ´i3©©©îc/^‚ŹŹ:´'00pqčĐa¶oßᱺEDDD¤j¨–A**ęPŽç'OFS§NÎ?˙<Ľ˝˝™7ďçÇřűűÓ¤I“Ďąk×nw‚Śî]11±„‡·VŞśN'Ű·o'&&†öíŰHßľ˝YľüowK”··}űöĆbń"--ŤÍҳн IDAT›7ăáĘEDDD¤*¨–AŞ(11±Üzëíy¶ź9“\ŕkĚćĽ?Šü¶IÍÍęŐkčß˙B, &ÓŮ®śFŁ‹Ĺ‚ËĺbőęŐ¤¤¤r&©MjÜ ;vbµ`łĄqôčQ÷ŽĂá,đumÚDŕííí~ŢĽyVk;w˛Ĺ¬ÖŔ@||&“™îݻѫWOĽĽĽ‰ŹOŔ`0`őt™""""R…Ô¸ őĎ?ŘĽy S¦ĽCŹÝiÓ¦ Ź>:‘7ß| «5ăĂpRRçśÓ”fÍšą_—žžÎ«ŻľL۶çÓ­[W^ý¶nÝĘż˙Fzę­H%iÔ¨fł‰>}zŐjĄWŻX, c¦H‘,5.H9ťN&L¸źm۶óĘ+/ňő׳čŘńĆŚǡCc«ćĚů_ß:üď_»?(˙űo$ëׯç¦ńŢ{ou{ď}§łŕV,©ţ,3ÁÁÁřű×Ĺh4pčĐ!öďßđóó 88‹E]=EDDD$C~ó8çŢfȶ-kÝí1k1e.ćĚĹ °Ö~ýúŻIH8]îĹ——^xŽ:u|™8ń1O—"•¬I“ĆtčĐČC·eËVbc3îfµZißľţţţlÚ´‰#GŽ–ëőăââ=ĐśN'.—‹ŕŕüďĄ%"""RVŃŃ1 †JżťP@@‘‘ë{ń€°陋#sqf[\Ů]™§ÉľN¶mnúŠ]jµ´46›Ť#Gް{÷ž37ĆÇÇłrĺ*ÂĂ[Ó´iSŇŇňżŻ”Ô> RR«ĹÄİxń’÷;ťNvîÜĄIGDDDD$)`ňäg<]‚T#5n˛ ©Ý5jÄúők¸á†ë=]Ją1âF–.]D§Nť<] óçĎĺĺ—_üöî;>ćűŕřë’»lId‘ógŻÚµ÷ŐAí˝JK©jUiU©]5«V•µ AÄLAÍ„+!‰„ČNî~ś\sr˛„ďçăqÉw|ľďď;wçűů~Ć7ŻĂČ·¬¬¬Řľ} óćÍÉöľů!÷ĎÇXĄJň¤OźŢy•>ĄRÉW_ŤĹËëGʦqăFy’"’Š”"WYXóĂ“đóóĹĎĎ—víÚćuHYÖĄKgüü|)Q˘x^‡˘ÇĆĆ ,--^ëqßÔ|ä'†r¨T*±¶¶ÁÎÎ.#{},,̱´´|öĚ>­©S§°˙Ţ<‹©wďžtďŢŤóç/°~ý._ľśg±!ň/éÚ'„Č5EŠaÁ‚ů+ćš×ˇĽU–-űuë܉‰ÉëPD.ŠŠ˘C‡N$%%ĺu(ŻĹ©S§iŢĽŐőţ­PˇQQQ|ýő7ň!DŽI‹”"×”/_ŽÂ… 1wî<®_żţĘŹW¬X1ć̙šCž9âĹ„ ß`bbbpŰĘ•+±`Á|>Čţý{ůő׹TŞTQ·~Ó¦őLśř›7oÂĎĎWעşőm۶aíÚ5?~„ť;·1yň÷88čO?uę¶oßB­Z5Yż~-§Nťŕ˝÷ŞÚîNß˙ 6dăF7Ž=ĚĚ™ż`aaAńâĹY˛d!>>ÇŘłg˝{÷Ô+·K—Î9âĄkŐpu-Šźź/­[·˘oß>ěŢ˝oZµ\zî†d–€ęŐßcÍšUřřcëÖÍtîÜ)]9*•Š!CłcÇVĽ˝Ź˛qŁC‡Ö=Ă/3YÉ»‰‰ŠáDZsç6NžôfĎž]ôďß/Ýt»íŰ·ĂÍí/||ŽáĺĺÉäÉ“tŹ7ČNĽYÍF9Üşu3S§NŃ;v»vmYąňňÄËË“YłfP¶lŮ,ĺÉzőŢgŐŞx{ĹĂĂťnݺҢEsüü|)]ş”Ţą|üńGzűăççËčŃŁtËLLL˝¨QŁ:«VýÉíŰ·‰ _ż>|ţůH||Nŕá±{>ü° 5kÖ¤Oź~ ăŔĎ sĐ­[WâââX´h ööö ĐŹ ćóŃG]yüřq–ĎÝŚňP¨“&}ʧçA||NđÁ0iŇD>|Żď) łgϤnÝ:¸»ďáćÍ[”-[†ÁQľ|yĆŽ—áůe5ďß~ű :´góć-\˝zŤ˛eË0bÄp,,ĚY˛äw:thĎŹ?NĆŰۇż˙ŢBÁ‚¶ôéÓ‡âĹ]4hhŽâÍ,˙™ĺ0­Ţ˝{2zô(X»Ö ĄRI—.ťůý÷Ĺ|ňI7=ŠĚ0WĎkܸłgĎ$((Ő«˙DĄ2ˇ˙~ܸ‘ó3fL§Qن9rwwwśśśčÚőĘ•+ËŔC˛TFll “'˙ČO?ýŔäÉ?Ŕ‘#G‰ŤŤŁU«–:tXożÖ­[rźóç/Ľ°ě÷Ţ«ĆâĹ căĆMh4Úµk˲eK3ć+Nť:Ť»ű^.]ş¬wüÔ¸„"»¤"%„Č5W®řż¶c >KKKúôéÇŤ¬[·žĄK§ŰöŰoÇx“!C†‘ŔßoaÓ¦őŚő9C† ĂŰŰ;jÔ¨Ž‡‡·oßŔŃŃ‘aÆ˛eËVfÎś­+óŕÁC¬^˝‚ž={đűďËtË­­­;vÇŹ{§‹ĂŢŢžţý’¨íŇĄT*=ú –.ýťµk×pü¸7;wnŁM›Ö™V¤ °bčĐáş®I÷îÝcîÜŮ4iŇ]»vgůÜ yQ>RU­Z•.]>&88€={<زe;vĐU¤Z´hNő™0a"zéö dôčQÔ®]???ÇĎjŢ m۶aĎćĚ™§ŰîÁzĎ…kßľÁÁÁŚ;ŤFű<Ĺë×oP˝zu,--‰‰‰ÉvĽ™ĺ?ł¦•ČÖ­Ű5kŽ®<_ßS¬Zµś&Mš°}űŽîű<…BÁ¸q_qď^0}ű 66€­[·˛qă†,—“–ąą9wîÜÁĎď 6lÔ-ŹŚŚbäČĎ(V¬wďŢÍ´śÄÄ$<<öQż~=ęÔ©Ť‡Ç>ÝşřřxŽ=JłfM177'..ĐN Sąr%V®\­űŰ2aÂ7„‡GĐ·ož<‰`ÆŤüő×jľűn]ş|„żż?ţţţ´hќҥKé_!˛Kşö !ňĄ&Msü¸·®śśŚ›Űz˝íJ•*E©R%ŮłgćććŘÚÚbkk‹R©äĉ“Ľ÷^5ĚĚĚ^xś¦M› R©Řşu›n_[[[BBBˇnÝ:zŰGGG¬D\¸pQW‰í…7ŔĹ‹˙µ ©Őj‚‚îáŕ`źiÜÝ÷ęŤď8{öÎÎ…sĺÜ3âë{JW‰ćÖ­Űşc´lŮ‚ČČHÎś9«—»Ôg·=ź»´˛šwŤFĂăÇŹ©PˇMDD­ZµÔµČ¶jŐîÜyq‹^ęűĹĐĂÓýýµď˘E‹růň•\‰S!@*RB|čżŢ=Štë …Áß—-[ÎĹ‹ –—Ńř“ÔýGŽüÂŕúÄÄÄL˘Í;/{îąqüĆŹ˙ÖŕúđpĂă…R÷…¬ĺýСÜ?žćÍ›QłfM:thOďŢ˝Xąrµ®ŰĺíŰwřä“OiÔ¨!uëÖˇFŤ|đAgÎś9Ë矏"%%ĺĄâ}YÓ¦MĄeËś:ušăÇŹs÷n7nÜŕďż7fľs:ÚČóź…-Ë –/_F‘".:twwwîŢ ÂŇŇ2ݤ/C­Vsŕ€'ü–––ŘŰŰS¶lYćĚ™›á~ťWFÝ…âeHEJ‘ďDGGóäI4ĺĘĄźŃ¬lŮ2zż§vź ăôiĂăq2’şHH÷îg˛ő›ĺeĎýĺŹڵµőkÉűŁG‘lٲŤ-[¶ˇT*™3gôcÝ:7ž>} @BBzéĆ? Đź#†SŻ^=Ľ˝˝_*Ţ—Q˛d Z¶lÁŠ«X¶ěÝrkkë•—:ÁIٲeđó;Ł·îůĎGR’¶5ÔÂB˙e66úÇnŐŞ%K–`ÄĎőĘlÖ¬iŽḃÇ>zôčNőqqq&%%%Óń‚AAA”+W6Ý9W¨P@Ż+ŞBä#%„Č—Ž=Jő)_ľśn™‰‰ŠŢ˝{émwăF ·nݦgĎz‹ĆĆĆüńÇďL™ňnYBBâłrLuË>Jrr2C† Ö»ëíääÄŽ[éŢ˝[®ź[nÉÎąb(Ůqŕ€'… â:ë-oҤ1[·n¦FŤę/Ü7«ywuueŐŞ´lŮB·Mrr2÷ďßÇČČFFFĚ›7‡1cFë#őâŰĚĚôĄă}‘¬ä0µ[Üó]źŹCK“i7şëׯL·n])P €nąłsátČŽ !! ęë-oßľýs1j»ĆÄüŁBˇ S§Ž9Š1!!á…Sŕ\ĺÖ­Ű4lŘ€† râÄI"#Ł2,/0đ&7oޤkWýs¶°° WŻ„„Ü—n}B\'-RB|iٲĺ4jÔĄKł{·;Ź?¦yófÇűüňË -ZŔúőkńđŘORR"Íš5Ł|ůr8p@·ÝŐ«×Đh4Śő9ľľ§Řµk7>dń⥌ý...řřř`iiIçÎť077çÂĂ]ćŢY=wC ĺ#íTď™ńň:ÄńăŢ|÷Ý·Ô®]‹«WŻQ¤H>ř ÷ďß78ž%UVóŠĄĄ%“&}OĺĘ• ĄB…ň´k×/ŻCş®‹ôěŮ;;;®\ń§PˇB|řáÜżŠŹĎ‰—Ž÷erxëÖmnÜdřđˇ899rźŠ+PştétĺÝżJŤŐéŰ·Ű·ď08V `ÎśyĚť;›żţZŤ‡Ç>T*:wîČ… ©_żžn»¤¤$öíŰĎtféŇĹś>íG±b®)⢛5ŕřńă|ńĹHfĎžÁŽ»‹‹ŁiÓ&XZZfŁ!WůŕÎ|űíxnÜdË–­zë÷íŰÇŔP©TLś8éĹ Ncúô,Y˛µk˙ÄĂc? ˇuëÖ8;fĚŻ¤‹ź"×I‹”â•čŮłµkż˙ʦ~đŕ ĺěŮstęÔ‘Ţ˝{qńâe˝©˛SýóĎy ÂÍ›·čÚőc FŁć‹/ľdË–mşínݺŌł(^Ľź}6Ś Ę°nť&LÄŘŘеë'\ąâOŻ^} ¸úJÎ/·dőÜ yQ>˛JŁŃđő×ß°té2Ę—/Çgź Łyó¦ěÜą‹>}úëf|{‘¬ä=))‰#>çСCĎžÁőŐŞUeőę5şgĚś9›+VRĄJeFŹţ‚öíŰqäČQŞ«0ĽlĽ†d%‡jµšQŁľäرătęÔ‘ű?›Lşm-ZĚÓ§1 >4]7˝´Ľ˝}řň˱DE=¦oß>´oß–ĺËWâéy0ݶsçţʶmŰ)[¶ ýúőÁÜÜśoľ™ ·ÍýűˇŚůˇˇˇôďß—nÝşrńâE~űmaŽbܱc'[¶lŁeË|ţůt] =<öcjjŠ‘‘ÇŽáy¦uáÂEĆť;wůôÓ®tďţ)!!! ö§NťÎRB‘†Fg>żL‘fYęĎFiţM}?{)ź˝L`ۨQSßÇŹł~SwEdd*ŐëoV«Őh4^ű±…y§cÇüđĂ$şwďůR3ř˝j&&*ĽĽ<9pŔ“©S§ĺu8B GˇPäÚĚžYeccĂ?˙ř˝DI@"üě•ňěĄNóҤů7µů:íϤY¦#-RB!„xŁ4mÚ333öěÉŮsŻ„âu1RB!„x#Ô«÷>µk×â:sĺŠ?çÎý“×! !Ä IEJ!„o„víÚҤI.\¸Ŕôé3ň:!„ČT¤„Bw„»űÜÝ÷äu/”v‚!„xÓÉ)!„B!„Č&©H !„B!D6IEJ!„B!˛I*RB!„B‘MR‘B!„Bl’Š”B!„Bd“L.„"cεQ¸Ô»r`á 㼎čĺhR 6]Crîű˝\yo[~rBrŞOňńzävž…Č&©H !„0̶ŠĘýÁˇR^G’»Ć`Y, ˇpm áWĐ\ţ˘nfŻś·5?9!9Ő'ůx=r+ĎBätíB‘žsmMfĽp•´çę\;ëűĽKůÉ É©>ÉÇë‘“< ń¤"%ÄsęÖ­Cť:ň%,Ţa¶ĄPÔůúÝę>¤0Öžłm©Ě·}ó“’S}’Ź×#;yâ%IEJ4 ´ĹÎÎ{{{lmmň:!ň„˘r˙wóNa¬=÷Ě6{Wó“’S}’Ź×#‹yâeIE*ŤĘ•+qđŕ~ęŐ{?ŻCy¤páÂşź *śÁ–BĽĄśkżŰ]‰*eÜ-č]ĎONHNőI>^ŹĚň,D.ŠT†qřđîÝ ÎŇöłfýÂôé?żâ¨ÄëT¨P!ÝĎ… Ę`K!ŢN —úyB¦LŚt«eIĺ"&zË‹Ů)éU׊îu¬(Z0çs)e”ĽČŹcczżo…cüŰBń¶ć´esZT0Ďö~’Ź×#?|ź‰üMfíKăáÇL›öK^‡!ň­­-ćććÄĹšP(°°°ŔÚÚš'Ožäuhâ:wîÄ'ź|DÉ’%III! ŕ*«Vý‰źźL›cvĺň:‚Lµ®dθ6¶Ü‹LćŁ%¨äb²ľ+|Ä˝Čäś Łd3?nť(SHĹ„­Źđş—éö¶Fă @‹ą÷‰ŽW3˘©5ŞZPÜ^É´=QŮ:ţă-Ě©łŤ1Ó?˛ ă‚PF§d}gÉÇ둾ĎDţ–ď*R...|ţůę×sssÎťű‡9s~%00SSĆŚM›6­)P W®řóÓOÓtëťťťůć›qÔ­[€Ă‡Ź2cĆ,žeařsń&ńąĎöb8{'A·ěŁ–+8}+?ODsé^bÎQň ?›ĎưőŮżŻÓď}¨QĚ”i{˘Řyţ%Ž˙ćôÁ“VyGŁÖ@ŘłJĂé‰EřxÉ‚2ŞČK>2”ÓýŇÉßg"ËW]űŚŤŤY¶l1NNŽ|ůĺWôí;€äädćÍ›­ŰfäČ4iŇ1cĆŃ©Soň믳12ŇžęÜął011ˇgĎ>ôęŐŹâĹ‹1věhÇ˨¬Ţ˝űqćĚYNť:M‹­9}Ú/Kń 2˝čر +W®â«ŻĆđŢ{ŐP(,\8źJ•*2~ü† FTT«WŻŔÎN{§§^˝şüúëÜÝ÷ňé§=™?!ź}6Ś#†żŠ´ż•ŚŤ w_HJJâŢ˝{‘hřBLˇPĽĘĐD(•Júőë Ŕôé3čÔ© mŰvŕďż7cddDßľ˝ó8Â|, pŹŚUóËŢ(\ůďî{A íwĽďÍxÎÜN !Y“ód”<ČŹH"SvGr54éµ;׼…9Ukŕ÷ŁOřăزýn“|ĽůŕűLäoůŞE*%%…ž=ű’śśL\śö?ĐuëÖóÇK±µµ%**Š˘E‹păF çĎ_`Ú´_011ѵÔ-Z„}űösëÖmFBB‚ÁăeTVTT$'§ˇŰ'łřvírg˙ţ¬_ż‘®]?ˇNťÚś?AwG˝cÇ.0iŇŹtčе:ĺYĚpsŰŔÚµÚV¬[·năääÄČ‘ĂY˛äwi•ʂӧý(W®%JDDDpńâ%âăăuŰxyÂĚĚŚŞU«`ooh şG@ŔŐ<‹[h™ššbb˘Ł˝ŞŃhXĽx ۶m'11 GGGÜÝwbddD·n=¸uë-Z4gĆŚéDDDĐľ}'ĆŤK×®źđŰo qpp sçŽh4¶oßÉâĹKĐh´—*”çłĎ†QĄJ /^dńâĄ\»ö/ăǏ˰‡,ĹłaĂ:J•*ĹčŃcč޽ժ˝‡żż?ăÇK§NůôÓn,hˡC‡™>}†®ÂߦMkúôéMÉ’%HNNćüů ,\¸7´­áĺĘ•ĄD‰xzĚńwDgź5µˇjQ”Ćpóa2«|˘9rMű}·q¨ĄULŮI‹ňćÔ(nJřÓ–‹f˙•X˝rF4łˇJâŐśJdÉ‘'=úďÎs«Šćô©W€’JÇŞńľĎďGꫦEys~ůŘŽë’ł)÷Q˙M 3Ş… ŁZŘđÁ˘P~ëá@ {%3÷Eéî´´4Âc”3FFđé˛Ü ‰»ÝĎ)haÄř¶¶Ô+mĆŁ–6Ü-¸u%súÖ+@q{%áOS8z-žÇŁyš`řďňu[şÖ˛dăé§Ěó|¬ű}×c¬ŚéTÍŤvśŹańˇ˙.b3Ëłh_Ő‚ľő P´ 1ŹăÔřÜgÉá'DĆŞŮ6˘n¬ŮĶ m\€ Bstů%§ ˝SŘFI›ĘćDƨ™´ăÖćFŚjaCq{%÷“řq×#B˘RôşČu˙ă!‡:éĘß:˘ű.Ç2yg¤äăą|© hP€U,°µ4âÁăö\ŠĺOźh¬Śő>Ďi÷S)ĐŔŠŽŐ,±ł4â^d2[Ďưí\ ę7¦ć&Ţ5ůŞE ´K­[·äűď'°lŮfÎśh/¬ÜÜ6PŁFu¶oßÂ7ß|MýúőôZ–/_É—_ŽbŐŞĺŚůĄJ•|áEEfeĺ$>ĐvKëŃŁG›kgV¨Pž°°p]% @­Vł{·;QQʍU«&}űöĆÇç¨î5aÂx¬­­±¶.Ą<ľëÔj5ś9sŽ„„ěííiذľîâ´ÝD6¬Ź˝˝= ś9s–Ë—Ż’ňôű~ÇĹÄÄpöě9¦NťÂĽysčŢ˝66¶Ţ$((°°0Nť:h++©Z¶lŔž={ő>ű=z|JŁF ą}űÖÖÖôëׇΝ;P¦LV¬řzőęq÷î]îÜąC˝zőXąr9ĄKë?«äEĺd7ž)S~ÄÇÇS«VM–-[JďŢ˝¸s禦¦tčĐž^˝zPłf ~ţů'J–,Áţýđó;CýúőX˛dćńÇżóóĎ?ŃŞUËĺÜĘÔĹ˝xż”)çî$°ďr%”ĚüŘ.ݤcZÚ 4Vp)8‘bvJ¦v)HÝRÚďŔ˙9©XŢבÚ%L9”ŔŤ°dZT0gy_Glźµ*}XÝ’iÚQÖIĹů D’Ô>ŞaÉ‚=× —¤aĎĹX˝e{.Ć—¤Áý‚vyÚÁď-Ę›cdWBsµĄćvł×+ôq ăŰÚRČZ˙Žx—ę–üÜĹŽ"¶JĽŻÇ—¨ˇg]+f~bGvŰş»×¶˘Q3îD$cmnDßzčôžµ<÷~ߊ:ÄÖÜŹËq<ŠQóÁ{–ĚîjŔˇçĆŰxúÇĺú9d$/r: a*8«xަ¸˝’éŮ1ő;Âź¦¬á=W&´/nżřçއî%ňĎÝ—č^jŔŰ’Ź_>˛c@D'¨ń¸‹ą‰‚áM¬ÖÄ:Ýç9í~?t¶eHckŽýʵ™¶R9 \÷Ľ“Ż*Ž[:  IDATR dóć |üńGÜľ}7· Lś8Yo›łgĎѶmG–/_‰‰ S§ţČŠËP*µwŐÖ®uŁC‡8pŔ“%Jđçź+=ú Çˬ¬śÄ—™¬tKHH`îÜ_éÚµ‡îŐ®]'ÚµëÄ“'ŃŮ:Ţ».,,Ś“'} *• că˙>FFF¨T*4 'Ož$,,<ďé|űíwěŰ·ź””5jČW_Ťe×®íLźţ3–––€¶őţ«¸››Ó°a˝u©"""čÖ­;ĆĂc€îQöÇÄĄÇŹĐŻß@úőČŃŁÇ055eĐ Y.';ńlÜř7ŁF}Éر_P¦Ě˙6l8ŁF}Éúőí#Ę–- @`ŕM¦Mű…qăĆ3fĚ8FŹKbbjµšóç/ÉÍ›7s’n\lŤ±25"E S÷Dňł{$#ÜÂůl]87Ăô»ůĆ3jC8_¬Ç+@{ńÝ­–ŔD©`“ßS&íä»mŹđ ĂÎŇOk[a¤€ˇŤµFó˝óĹúp>]ö˙Dž&¨Ó]4FÇ«™˛;źÚÖä^Ź™˛;’¨X5{/ŢVC WS]׿Vµˇ»/čWľ^VĄ"&T.b‚Zź­ c„[8c6EPŔ,ÍwŠF4Ő^ţ¸ëÓ÷F1Ň-ś°čj—0Ąf ÓoPDL Ý–=`ŕźax\ÖžO˝Rf@ćy8v=žď·?bđ_aüěÉř-ÚŢU‹šPŔĚE‡žpî®¶ÇĆ´=QĚ?ř8×Ď!#y‘Ó«÷“řg}V>äIśš˘•,9ň„/7FđĂ.mëRe“tűĄľSý´+’í˙äî¶·%«ĽŁ™ęI˙UaLŰĹŇ#ÚVµFeĚ^¸_ %m*Y VĂuáĚđbÔíűu@Ă©¤Ë˝ČůŞk_­Z5)T¨~ŘU׫I“ĆzŰ”*UŠččhöîÝÇŢ˝űذa#[·ţMůňĺ¸JĺĘ•đ÷`ăƿٸńoşw˙”±cGóŰo Ó/ٞ._ľ˘ëň“ťř2ăŁE‹ŃMĂ®P(řôÓnxy",,Ś+Wüqqq&$$D·_éŇĄ133Ő[&˛Fűŕ]QQQ+©S§6ĆĆĆřűő[[[lll‰‹ ÍëPEQQQLšôłf͡nÝ:ÔŻ_ź6mZŃŞUK’’’řá‡);vŚ'O˘ůß˙JS¬X1Ę—/‡™™/^äÎť;zĺ]ştY×Úxőę5Úµk‹……öî~ĹŠđô<¨ŰţŕA/š4iLĄJł\NvâIť &µ[­Vt€ű÷ď R©đń9ÁđáC©Pˇ<žžű¸ző/^b×®Ý$'k[]FŹ“ă\Ü OćĆĂ$ţç¤b÷…ąţ ˙$\‰%6Q˙»đřż˙u‘=úo<-*SŇAűßM5WíEWŹ:Vô¨cĄ·_ {%…¬Ť±·ŇV–>kILÖĐun»ŠÎY‹9üi ľ·â©_ÚŚ¦ĺĚńľO5WS’5z] sCęůG%p_[±Ľ’HČădŠŘj×90ÖµĄ¶ú¤UÂ^ÉŤ‡YŁr)8‰”gŤ×î'Ń®2Xšj/(3Ë3@ĐŁdJ;ŞčUW;]|iÇ˙. L”†/Lłrgnî.ź]y‘ÓÔm“5DĆŞ±67âN„vŮý(íçZ•GWNoK>Ă’([XĹwlq¶QR®°ö{LeüâĘPEgíűŮȶŹÔ4‰‰±gă\ma"«ňUEęöíŰÓ˝{7Ž=F±bĹ7N˙â`âÄoQ*•Ě™3ŹřřxzôčN\\ÁÁ!››łdÉ"öď?€›Ű °˘]»6złáeµ,жfÔ­[—RĄJú KńećěŮsś?9sf1wîŻÄÄÄĐ˝ű§´hŃŚµqË—ŻdáÂů<|ĆńăŢ8;;3aÂxNź>Ă?LÉAfßmÎÎÚ«2ĄŇ ęë&&©WŻ.±±Ú 9gBCĄ"ő¦(Y˛ 4 22’={örđ záëëË´iSiذ!‰‰I8p€O>ůFŤPąre }ë ×­îů›$y~ŰŚĘÉN<Ůq÷î]şvíN‡í©V­*•+W˘víZôěŮť^˝úęuΩ¤ ˙ Ł]e j•0Ą’‹Š®µ,éZË’É;#ŮwůżŠ‰qšţwĘg7ËS3‘ü,={’®ëSTlîŹďÜ}!–úĄÍhXĆ c#íűCWăIx5*žďzö×´>_®«ĄJ;F,+Ôi†<6YÉó·íléRÝ’¨dĽo$pôß8ľnc›á1sű˛âuć4?ČĎůP+XŐß‘RŽ*.'rînW‚éőľU†űĄž—F#ÜŇ÷yđDşÜ‹Ľ‘Żşö]ż~Żżţ–îÝ»±qŁýúőaţ|ý–¤ńăż%88„ůóçáćöĄK—břđ‘DFFňôéS† F±b®üő×*/^@XXcÇ~mđx•°fÍ:bbbŘ´i=Í›7ËR|™Q«ŐŚ9Š€€«Ě™3“+–áččŔ€u“Zś8q’/żüŠ–-›ăćö?ýôžž^Lź>#Y}·©TJ°˛*€‘‘‚   g(t]ÄQĺŐmH‘Ž••ŁGÁ¤I©V­* mąMm9ŠŹ˙olGj%ĄNť:Ľ˙~]âââđôôĚÖńüýýý±M©?űűd«¬ÜçyU«VˇS§Ž\˝z•/żK»v ĹÜÜśš5«ÚÉ&Ú´i­»Q].¶Ć|\Ă•1LÜţ.‹pŕY‹QýŇúÝ…ÚVÖvźSm*k[ăn>Ô^Ŕ„h/ęM• ÎŢIŕěťě,Ť([HEbІORxŞ˝(jý¬ž‰RÁ†ˇNü5Đ ×l>h÷řżń<‰Sóž« Ëh»˝í:ź»­Q7Ă´ççbŁÔŤ«äb‚łÍń>x’BäłJŚ‘âżóŻ\Ä„"Ť‰KҶîmü˙Cg–gřďo3Â-ś9űŁ ŽéI­«™(ł~ąĺMËiV¤Kő‚˝—ń6äăNJJ9Ş}’ÂŔ?ĂXtč ˇ*AĎďwíŮl‚1‰jn†'qöNWC©WÚ[ #âe¶ ‘7ňÝ•áž8 ŃQ­ZMÝĎŹřî»ď_¸żż3¸.$$$[e………Ńż˙ lĹ×¶mÇtĺ 4Tď÷§Oź2eĘT¦L™úÂc?îÍńăŢ/\/˛ĆÉÉIwaĂĺËWxh»TU©R+++ŚŚŚprrҵFŠĽuéŇeüüü¨]»6+VüÁÇ133ĂÚZ;6ŔÍmnŰ€€©_ż»wďѵ4fŐŞUҸq#Z´hÎęŐ+Q(TŞT‘„„V­Zť­˛r#žçąşş2|řPâââđň:„ąą9… "11‘sçÎë&›Híb:khv)ŃĚ•±‚Ú%ÍŠMˇAimĹäÔ-ý®\•\LX?D;c×˙ś´Ýv6ťy Ŕź'˘iXĆŚ~ő P®°v6ą&eµ¦KÁ‰=‚?ŽE3ˇ˝-ŁZŘPďf-hL[%Wď'•LŮBŞ,Çť˘a˙•8şÖ˛¤~i3B˘’9w'wşžĄĺ’ČĄ{‰T)j¢ž\ I¤\!ŹăÔş®VjŤv|ČW­mń±ľ7ă±·2¦ZQ¢Sđ ж”Ĺ%i0W)ÓŐžď·?ĘQ<™ćm×GׂJ&´/ČŤI4-o†Z­í>•*82™ZĹMŘ UŠ0ygd¦ç[Ţ´śfĹ˝¨d\ *™ţaA<.DZćDîŤ[~ň±ďr,j *`Ěͤ¨ˇešÉ`^´ßšÚŮA›–3gí@'ÎÝM R\ j'ÔČÍ÷ťŮ‘ŻZ¤„Čm ‰$&&rëÖ-Ľ˝Oč*Q ăăs‚›7o’HBBîÎŔ$^ÎW_ŤgĹŠUÜľ}[[[”J—.]ćÇbýú zŰş»ďŃýĽ{÷îlëúőë 2śS§NSŞTIJ–,Żď)† ¦›^<;^6žçíŮł— &B›6­©Wď}üüÎ0|řHîŢ˝›˝É&4†»Č=Jfŕźaśąť@ť’¦´«lApT2SvG¦›5oŃáÇGĄŕb«$čQ2ßďx¤7p?‰akĂ9}+ŞEM¨˙?3.'2řŻ0.k?cŰ˙‰aňÎHn„%QÝŐcŰÎĹ0jcxަ9Ţ}ńżA˙»/ÄfţŚ›ä Łu`ÜćÝ]Ń‚JćxĚ˝ç&şÉď)?îŠä^d2 ˙gF)%žţqô_FL‚µfěŤâÁ“*ş¨ř_6*Ťie%ĎăţŽŕ|P"UŠĐ¸¬ó=›¤ßlĹńhÎÜIŔĘĚúĄÍtXdtŮÉ[FëŢ´śfĹô=QÜ O¦˝’ĹŇOÂđßÉ˝›ůxđ$… Űq;"™6•,řź“ŠYűŁ2ÝŕűíÚJ|˛ZCËŠć)üy"šo·ePĚ(ĎBäCmĎĎ/S¤Y–úłQšS_ĆĎ^Ęg/@Ř6jÔÔ÷ńcĂĎ:â]•']Őj5ŤGÇwă©ď|Đ™ďż˙Ž»wřřă®yÎOZŠVKŔ˛Pćú©Ż·DpôZ|ć;Ľ&E *Ů6˘j |°(4óń1ĐxŽ0¸ęeňóN“śę“|ĽäYĽaaá(Šw+Ď)ţůÇď} HägŻ”g/uš—&Íż©w„ŇţLše:ů®kźBdU•*•ůěłáT¬X ŰÝđŢöx ztí­ą3Q*ßÝ^7ŁŮž‹±Y”ţčZĆëŢ’üĽV’S}’Ź×#Ł< ‘ ¤kźâ­őŢ{ďQ­ZU˘˘˘X°`{öě•x2ˇ 9‘×!äš …UTv1ÁL©`çůćčBdHF9x›ňó:INőI>^ÉĄxŐ¤kźyHşö‰7‘˘áOŕP)ŻĂČáWĐxgü őw:?9!9Ő'ůx=˛gńę˝í]ű¤EJ!„Íĺ?ßÍAÚšíąg¶Ů»šźśśę“|ĽYĚł/K*RB!ôEÝDszö»u!§IŃžsT&ł»™źśśę“|ĽŮÉł/ÉŘŔ˛¬tí3ô2ÂpW?łâĹK NHČýçv‘ßĹÇÇcüŞźh€ćŮÓ---^ű±E>ń4śEaU,śň:šW+ü ż9~%ëűĽKůÉ É©>ÉÇë‘“<‹W*66…BB‘ű©Î™™ˇˇ!+€x´]öŇvĺÓxAún|™’1RBä!#%ňçÚ(\ę]9°p…ˇ{pů&bĂáŃ5í`ôű~/WŢŰ–źśśę“|Ľąťg‘ëŢö1R2ýąBŚÝ÷C#(/&ůÉ}’S}’!ŢH2FJ!„B!˛I*RB!„B‘MR‘B!„Bl’Š”B!„Bd“T¤„B!„"›¤"%„B!„Ů$)!„B!„Č&©H !„B!D6IEJ!„B!˛I*RB!„B‘MR‘B!„Bl’Š”B!„Bd“T¤„B!„"›¤"%„B!„Ů$)!„B!„Č&e^ „ČŠ+–×!!„â5ą{÷n^‡đF’Š”"Űä U!„ď:éÚ'„B!„Ů$)!„B!„Č&©H !„B!D6IEJçÔ­[‡:ujçuB!„â &“M‘FÁ‚¶ŘŮŮ`kkCTÔă<ŽH!„BĽ‰¤Eʀʕ+qđŕ~ęŐ{?ŻCŻYáÂ…u?*T8-…B!Ä»,ßU¤fÍú…éÓ~Ąe>|ĆáĂG¸w/8WŹ#Ţ|… Ňý\¸pˇ ¶B!„ď2éÚgŔÇ™6í—ĽCĽf¶¶¶››‡BˇŔÂÂkkkžúčC °bßľřűűÓ»w/:vü ˛%2R»v- ® }€‘‘Ĺ‹ŁAúéÖGDDpú´ß«Q!„BĽÁňU׾޽űqćĚYNť:M‹­9}Ú…BÁÂ…ó)_ľŁGŹeŕŔ!ÄÇÇłfÍ*ݤ#GŽ I“ĆŚ3ŽNťşx“_ťŤ‘‘‘Á2 iٲ9Ý»÷běŘq´hŃś>}zëÖŹýÝşuećĚYôîÝŹ°°0ôę“"rÄŘŘŘŕň¤¤$îÝ»GPP‰‰‰·Q(Ż24!„B‘ä«©¨¨("""HNN!<<€ZµjRąr%Ú´é@dd$'NĆÓÓÚ±v­E‹áĆŤ@ÎźżŔ´iż`bb‚Z­6X¦!7oŢbéŇe€¶Ĺbď^ęÔ©ÍŠ«033Ł{÷nüňË,8Ŕż˙^§B…ň+VěU¦DäĐéÓ~”+WŽ%Š """¸xńńńńşmĽĽaffFŐŞU°··4Ý# ŕjžĹ-„B!Ţ ůŞ"eHĹŠ055ĹÝ}‡Ţr+++Š)€›Ű,ř•íŰ·ŕë{Š'NrâÄÉl'44Tď÷GŹQˇByJ–,™™çĎź×Űćôi?©H˝ˇÔj5„‡‡SĄJeěííiذ>ÇŽyëZ˘LMMhذ>*• \şt‰°°đ<Ž\!„BĽ ň}E <<‚>}ú§[ŔŮłçh۶#Ť5 fÍšLťú#·nÝfČá$''żôńŤŚ´ÝÄRRRô–?˙»xó„……qň¤/M›6FĄRalü_oW###T*Ť†“'OźAIB!„â]’ŻĆHh4˝ßŻ^˝†­­ ‰‰ „„„č^eË–!%E @©RĄ033cďŢ}Lť:ŤÁ‡QŁFuĘ—/g°Ěěş{÷.ÉÉÉT­ZEoyŤŐ_Ş\ńzŘÚÚ ˘˘cl¬¤NťÚÔ«÷>&&¦DE=FˇP`cc›×a !„B7Hľk‘ ŁnÝş”*U’ĐĐś9s–K—.ł`ÁŻüöŰ"˘˘ÓąsG>ý´+~Ř•ččh&NüĄRÉś9󏏧GŹîÄĹĹb°Ě슎ŽfÇŽ]Śó%qqqÜ˝DÓ¦M¨^ý=ž>ŤÉí\ćěě €RiLő12ŇŢ_¨WŻ.±±q¸¸8§ëŢ)„B!Ţ]ů®EjÍšuÄÄİiÓzš7o†Z­fäČQřűđË/?ă涆÷Ţ«ĆŕÁĂ `üřo aţüy¸ąýEéŇĄ>|¤nrŠçË̉3f±oß>&Oţžőë×RĽxqVŻ^“kç-^ •J‰ŁŁ#VV02RÄ­[·–––8::˘Rĺ»űB!„â14ŹóóËi–Ąţl”ćßÔ—ńł—ňŮËP¶Ť5ő}üří~¨©BˇŔŘŘXoĚŐ°aChŢĽź~Ú3#)RÄ…ŞU«Ú1u—/_!"â }@o•*•±˛˛ŕâĹ‹şVĚÜ•'4µZŤFŁÁŃŃđł´„B!^VXX8 …B×Űçu±±±áźüޢ€$ H~öJyöR§yiŇü›:ć'íϤY¦#·ŘsÉ?|Ź««+ .&""‚ *ĐłgÖŻßס‰ $$$’Hpp0ׯßĐ› $** ź”)ó?Š-Ş{ř˛B!„Ň"•Kěíířüó‘Ô«÷>ö¶ĚÄÄ„Á±aÇŹaď^wľůćklmłöpçzőŢgŐŞx{ĹĂĂ=Ăn5Ĺhkk‹źź/7®`ܸŻđóóeüřq€¶éČ/]+Rj«JëÖ­čŰ·»wďŔŰű(«V-§RĄŠzÇM›×M›Ö3qâwlŢĽ ??_\]‹đ㏓ٱC˙ľR©dĐ l۶źcěر•aÆ`b˘ßjµgĎn&Lř†† °~ýZ||ޱuëßtěŘ>ĂümÚ´??_lllhÖ¬)~~ľlÚ´^·ŢŢŢž‰'ŕááÎńăGX»v íŰ·Ó+#5]ştć›oľćđá,Y˛ĐŕńĆŹǶm[řöŰńşýŇrrrbŢĽ9=zýű÷2zôéZéT*C† fÇŽ­x{eăF7†śik^j¬íŰ·Ł˙~ěŢ˝/Ż 6€† °iÓNś8Ά nĽ˙ţűéĘptt`ňäďŮ·oGŽx±jŐrÚ¶mcp»ďż˙Ž;¶âăsŚ-[6ŃŻ_˝1©­“®®E™4i"^^8zô3fLO×ú”ö}Ú®[¶l˘xńâ,Z´€cÇ´ůúüó‘(•ú÷ÍĚĚ3f4{÷şăăsŚß_‚«kQ6mZĎś9ł2Ědţ>Čěóó"íÚµeĺĘ?8tČ//OfÍšAٲe3ܧvíÚşżaZK—.NץWĄRqěŘa~ţů§,ź dţž.V¬sćĚâĐ!OŽńb„o011É0n!ŢeŇ"%„Č …‚… ëZŁ‚‚î““Łî™\ąĹŢŢžU«–cbbÂÎť»‰ŠŠ¤yóf|˙ýwîwřđbcciÓ¦5‡Ö[׺u+‚9ţýúőáóĎGâăsŹ}88Řóá‡]¨Ył&}úôăÉ“O˘3cĆt5jČ‘#GqwwÇÉɉ®]?ˇ\ą˛ 8$Ă7nÄěŮ3 bőę?Q©LčßżwîÜI·mf1ĆĆĆ0yňŹ”-[–Ţ˝{rň¤/ű¸sçn†1tëÖ•¸¸8-Z‚˝˝=ôcÁ‚ů|ôQW?~śnű… —ЧO/jԨΪUrűöí »ŃÍš5 ęsŕ€'Ű·ď téR 8€jŐŞńůçŁôĆ—–+WŽjŐŞ˛qăß$''Ółgw~řa2<ÄĎďŚÁň.\BVüôÓŹ$&&ňóĎÓ‰Ž~ h»3®^˝këěÚµ›ęÖ­Ë”)?P¤H–/_ˇWÖ€ŚŚdٲ? }hđxîî{‰ŠŠbČÁ\¸p‘­[·qéŇĄ4[(5kWY˝z5Mš4ˇwď^$%%±dÉďÚ- fĎžIÝşupwßĂÍ›·([¶ ˘|ůňŚ›ńĹ;@ŹÝąxń"łf͡FŤę <{{;ęׯÇŇĄËHJJ˘˙ľĚť;‹O>ů”ű÷ďÚ ĂęŐ+ő>OŤ5bęÔ)ŘŰŰá榝ÖÚÚšU«V`ggÇîÝîÜąs—ŞU«đůç#±˛˛bńâĄzńLž<‰ëׯóË/3©XQ;›­ť]A†ý,Ăó033cćĚéěŰ·ź]»vÓ˘EsúőëCRR"Ë–-×ĺë×_çRŁFuöíŰĎŤT©R™_ť‹©©i¦ąĘĘű 'źźŢ˝{2zô(X»Ö ĄRI—.ťůý÷Ĺ|ňI7=Š4¸ß?˙üCll,uëÖaď^LMM©Zµ  ­hŢ J•Ę››ăăs"Ëç’–ˇ÷táÂ…Yµj9 …;věäÉ“'4oŢŚożźi.…xWIEJ‘+=ŠdÝ:7˝eŐ«WÇÉÉ‘¸¸8ţý÷z®oذ!ŘÚÚŇż˙@®°nÝz–-[’á~ xy˘M›ÖXXX €‹‹ •*UÔ]p8::2lŘP¶lŮŞ×-ěŕÁC¬^˝‚ž={đűďË ĂÜÜś;wîŕçw† 6ę–GFF1räg+VŚ»w _) ĆŤűŠ{÷‚éŰw€.ľ­[·˛qŁţă˛هÇ>oŇ»wO<<öáá±/Ă(`ĹСĂuš{÷î1wîlš4iĚ®]»ÓmďííŤ5jTÇĂĂ™Šós IDATŰ·ÓWúRµlŮ‚FŤ2oŢ|˝ü\Ľx‰ ľˇ}űv¸»ďŃ-ŻT©"mÚ´çŃ#í3ŢNś8É®]ŰźMľa¸"ĺíí h[ŠĽĽéťóđáC)TȉţýŔš5kůůçź&LäŕA/ÝľŚ=ęY‹…ß c eöěą?îM‰%řđĂ. <” .p•mŰ6Ó¬YSÝ#:† BčŐ«÷î°~ýFć̙ŰaCٱc111ŘŘŘpćĚYÜÝ÷pöě96lŘ••;vHW‘ú÷ßuń<č…±±1={ö H‘"żđ< *Äôé38qâ$žžůëŻ?éÔ©Ł®"Őşu+jŐŞÉÜąż˛qă&ÝľŁGAďŢ˝t7t^$«ďě~~ŮşułfÍŃ}~|}O±jŐrš4iÂöí; î—śśĚ©S§©S§¶nYőęďˇT*9~ܛڵkéÎłnÝş¨ŐjNžôÍÖą¤2ôž>|(–––ôéÓŹ7íwęŇĄ‹3<_!ŢeҵOńJ¸şş2cĆ4–.]¦«ä–fÍšâăsBW‰í…Čşuë3ŘKkď^LLLhҤ±nYëÖ­tëš6m‚JĄbëÖmŘÚÚę^!!!‡P·nť–Çoż-Ô«$şqHNNŽ/Ü·lŮ28;fóćÍz9 gď^ý™ß^&Ć̸»ďŐkJ˝hvv.śă2SµlŮ‚ččhţţ[¬ÉŽ; §uë–zË}|Nč*QŹ=âöí;9ŽĄeËĎŢ;zËW¬X‰‘‘Qşnź̰• xzÔýž’’ÂÉ“§pppĐuŰkٲ‘‘‘ś9sVďďéĺu KĎ3gô+–÷îÝC­Vsůňݲ   Ôj5˙Í`ŘŞUKNť:ÍÓ§1şăÚŘŘŕéysss]«HPPS¦LŐ˝ŚŤŤ‰ŽŽĆŢŢ>ÝÇ{öxčýžŐ÷Q\\ś®’ Ńh8wîNNNşc4oŢŚččh6oޢ·ďš5kŃhžź±8˝ěľ˛jóć-Ě1Kďó›ůgŔŰŰ]7ľ:ujsíÚ5NžôĄFŤęşsŻ[·W®ř•Łs1ôžnҤ1ÇŹ{ë*Q ýNusËü;Uw•´H !r]É’%XĽxvvvl۶=]…âeYYYakkk°•ëúőĚ[ľÎž=Ghh(mÚ´ÖÝ]nÓ¦5.\ÔÝŤOßła›Á2ŚŤŤ3<†ĄĄ%m۶ˇV­š”(QĚÍÍ2|ž†łł €ŢĹLŞÔn=©^6ĆŚ<_ńŤŹŹ@Ązůń®®Eąq#PďŘ }ľŮŐ«W)^\Ö?C•đřřřĹ’úŢ1ÔZqűöbcă(Z´¨ŢňÜ!&&&Ýă0RĎKĄR’””„«kQ ,§§áʬĚl—śśbpůóąP(´ďC+++ÝX˛fÍšÜßŢţżc;;;Óľ};*W®DńâĹ)\¸JĄ…BBˇ˙(ĘÔ DŞ˙ŢGŹůŠ‹‹KWŠŹO@ˇP T*ILL¤hŃ"ŢLwnQQQ„……eX~NŢYedôöî;>ćűŕřë.{‡ěÄ.’µ÷^U[‡UTŐ*Š5Şú+U”ÚUJŃRJkĎDIěÚ„ldďÜýţ8ąä$!!i¨÷óń¸G.źďřĽ?ß;qďűŚŻ’V­ZҲe ^{í5\\ś±˛˛z´íÉ˙&}|N˘V«iÔ¨·oߡAś% ŕ,ćć渺şŚ»»?˙Ľę™Űňř{ÚŇŇsssnß~úß!DI¤„ĹŞZµŞ,]ş„˛e˰mŰ_%˛ZZv"˘Rĺýp•őô{·©Őjöď?ŔŔ°´´ÄƦ,U«ľĆÜąßj÷Éţ@XĐjéééžßĘĘŠU«VâââĚ‘#^ěŢ˝›  `ĚĚĚt&ŐťNýą=^ö<1–¦üÚV”í%YwŢ{/ţ{ IIIL™2-ßíŃŃ%łt{ö5ń÷`íÚ_óÝ'00€š5=X¶l )))xyĹÇLJ»wďŃŞUKť^ţ JĄ^÷j|Úß’||ýőWtčĐžÓ§ĎŕííMPP0·nÝbË–§ˇĂőë7hĐ >»víĆŐµ:?ý´’;wîM˝zu°µŐôüeĎŹ*޶ää¬O˙»#„Č!‰”˘Ř¸»»łté",--ůűďí|÷ÝĽB ±)Ş„„RRR¨\ąržmŹßè {öěĺÓ˛e ěIOO×™—˘™O¦íĄ*¬ŽŰSąr%FŹţXgOAßöçh†ř=>˙§zőj:ż?OŚĄ)88„†  §§§Ó› P(puuÍ÷[ńâ’@\\®®yWP«Pˇ¦¦¦Oś»S’BBB±´´äĚ™'Ď*nŮ×$**ę©uđYYYôéÓ_g±•6mZ—tyÜżww7 …ÎßSSěíí¸qŁŕ9R%ő>¨\ą:´gőę5¬\™sÓޢ܌úÄ úöíMť:µÉĚĚäěŮs€fžUť:u°µµŐ&\ĹŐ–„„âăň=Çăw„9dŽ”˘XXZZ°bĹR톚5kňűďëٸq7nČwĺgĄV«9q‡V­Zę$NJĄ˛Đߊ߽{Ź+W®Đ˘EsZ´hÎńăŢ$$$h·{y#33“áÇé|#kooĎöíŰčׯOçÎľ“””3$MˇPĐ˝{·§ĆuóćMBCCéÓ§7Úr''G:w~Sgß牱$¤ĄizŔ źĽbÚˇCžXXXäYŇ˝WŻžŘŰŰqđࡋ1»ţćÍ›áîî®S>|řPT*•vNRQĺ´˙ن?Ńóđö>Aٲeµ·]ČÖŻ_ßB k-‰÷A~×Čóš>‰ŹŹtëÖ• .h‡Cž>}š×_ŻĹëŻ×Ň,ζ;vŚćÍ›áććŞ-344`ŕŔ…Ž]WŤôH !Š…±±‰ÎçŹß7ŞL™2ĹZßňĺ+hÖ¬)«W˙ĚŽ;‰‹‹§eËdffú{÷îcňäI¬YŁ»´tdd$Ë–­`üř±8;;ăăă™™=ztÇÄÄD»Z~Ľ˝˝;v óć}Ëöí;IIIˇM›Ö…^~ţüüđĂ<ÖŻ_Ëľ}ű100¤GŹnřűč,ń<1–„k×®ŁV«7îc|}Ołsç®|—÷ô‚·÷ >űl 6ŕڵ븸¸ĐłgwÂĂĂźş ÝóXąňgš7oĆ/ż¬b×®=DFFR»öë´nÝŠC‡<µ‹:äI»vmůůçź8zôFFFtëÖ…řřř§.¤PÜvîÜĹ[oőbĆŚéÔ­[‡ŔŔ»¸şV§zőęO\z?[IĽďrëÖm>úhööv„……Sن;Ż˝öZˇĎqĺĘU>|HűöíXĽx©¶üôé3”-[–˛es–Ł/ζ¬\ąŠ–-[°bĹ2víÚM\\íÚµ%<<˘đ@WŚ$RBbIÆyoňYRBBBůđĂáŚ;†wŢyĐÜ#ę×_׳uëć§­qŕŔ!m"uęÔ©<Űűíw"""xď˝ţ 2µZĹŮłçX¸pÁÁÁž7<<‚1cĆ2~üX>řŕ}bbŕééÉ™3ţ,YňăSă:q‡O>™ČĂy˙ýAÄĹűzőÝşuˇmŰ6DEE±fÍZÖ®ýµŔy/Ĺ%..Ž?ƨQ#éر=ćććÜ˝{Ź˙ýoÖs%qjµšéÓg0eĘdFŤÉúő¦EJ¤Ôj5ź~:•AjŻKbb";vědÉ’eĹľňen±±±|đÁ‡Ś9śvíÚR¦Ś5÷Y°ŕGťĄĹ==?Z"{#G'$$„Ő«×ŕääHŐŞ…OŠCFFŁFŤáăŹGÓ¦MkŢ|ł—.]fňä),^Ľđ©Ç—Äű@ĄR1nÜ'Lśř Ý»w###˙ĆŹźŔŢ˝yoPĐ9Nž|Ť7ÂĘĘŠâëëËŞU«e‘!^˙őˇ}Ň#%„xiůůůçą×’âŐÂ_|YÚa!^Q2GJ!„B!ŠH)!„B!„("I¤„B!„˘$‘B!„B"’DJ!„B!ŠH)!„B!„("I¤„B!„˘$‘B!„B"’DJ!„B!ŠHż´BgŐhüěkŮhO‹‡7‚¸±k6 ˇ—‹|>§úďŕţî§”…Só?ĹŘÚŹľđů¶ÉŃw‹1r]Żż˙3‰áWąsha‰ŐaîäF›Ż~ĺČô÷HŽşSbő…ű;ßŕܨ-G¦7G­Ę*íp„B"‘)!Ó¸q#5jXÚaB°p¶áţůűźőŢ_Ťć҆o10-C‹é«±ŞP·Hç2¶r˘ŢOąëµ…sG{Ç—ô¤BN'%&¨„Z†v”kú:ág˙*±:Ě\Qe@J &„EĺXż-žH%„âĄ$=RBäR¦Ś5eË–ŔÚÚŠŘظRŽHD©oI¸şmńÁç»w–űvŃěÓc¸˝=—Ó?v.ôůśö!%î\ -‹ľâIôĎbŹ=·JmÇ )1÷J´3GWďZ­*Ńz ˲|mŚ,!Čű—ŇE!„x&’HÁŹ?ţ@ll,_~ůÎÎÎěŰ·‹wŢéĂ­[·K´ŢŻľš…©© “&M)Ńz8::jź;88J"ő3s¨JH żŞS®Ve|j}‡‚Bj5Z §J‡ˇÚArÜÚ·ŚS°óxĆfkŹď¶Ú—›»r}ű´üÜ—ČËšçöµşPäś[ý noOÇÔâáě*ݡr6Ő[áÚë+¬+‘–áţŢ\Ý:5ßFi`LĄ¶orçĐm™‘•#}`_« %D_Ťŕüš!d$?ŔĐÜ÷wżĂ±nM”úpűŔ~Ś­1˛vÁoIwŚ­ť©Ńg>öµŞpsĎ_;ş’¦‰SĎČŚÎËsnő*´N™*ƤĆÂ即‰Ľ´·Đm±®Ô€}`]ɬ4ň>ĘŐż¦kŻąK“Tď6S;Hy×·/"ôô&@3Ś2čř 2SžĺĺB!Jť$RBäâŕŕ }îččŔőë×K1ń$Nî †¤ű7ňlKOBĎ(P٦Fďy¸4iÉĺŤóHŠĽ…Kă÷¨ýÁ¶}Ĺ“˝ŁŽÓúG ?{„»fŁÎĘ…sG¸}ŕM}Î5Pj€3‹űŁ40¦Ńص¸˝5‡ł?ż€CťÔů×ţÚĚ升±pń îđńDţÓ.ßž-UF*'4Ńţ®Ô7¤ĹgۉŽŕäwĂQeeĐ`ôŻTí:ť«NAßÄ’ćÓöň0żĄź˘ĘLĂýÝď±p6&ř„ŔŁ}ţ"=ü—M'35··ľĆ˛‚wŹěÉąv@…–Ăą˛e"i±áÔ¸śÚżŕĐä˝…j‹…łͧ/ĺćžý\Xłă˛ĺiüÉ·<¸Ů…ű÷PˇŐp<ú ĺâ†Ĺ<¸y§úoSűńDýsôÄ®o˙˘ß B!ÄżO)!±¶¶ĆÄÄ„”” ¦¦¦XZZ_Úˇ‰|;ą“ Yé)y¶YÚ“ž ĆfU±>•Ú·Ä{öP’cîbR¶†v¤Ĺ*3MÓ»’™Ž‰ ÄÝ @•‘ €‰MEôŚ!1ü Î$GÂą_Ţ×Öyů –ĺę odN­źqyÓ/„ś\‡‘•†ćv¨UV¸69şbb~Kfr ď9íÉJK jçiśYÔUf:˙üń ­ţ÷ aš8«tś 85żŁ¶·çĘź“iőĺ*í>Π‚s«ú0€Sp¨;…B‰žˇéSŰbëގ̸ąk6jµŠ¤¨Űü¤™i‰Ř×|“¨+ˇ„žŢŔťC?rďř*m[„B—ÝK•Huéň&łfýŹ–-Ű’šŞů°ó×_[000 {÷·022ÂŰŰ‹/ľĹţý077gҤ ´k×###ÎźżŔÂ…‹¸~]ó-vĎžÝ5j$żţşž‘#‡sţüE&L„­­ ź}6Ť&M“žžÎŠ+óŤÉÉÉ‘Ď?˙ Ź„‡‡łjŐvíÚ­Ýţ´úŞT©Â§źN¤NťÚ¤§gpěŘq~řaqqů€oÔ¨!K–üČś9ßčÔ% ŻaĂŘÚÚć»-"â>JĄ’Š+ĐĽył<Űcbb8sĆŻ¤COaîäNbxtľŰĘVmÁĂŰTî0Ą>´ń )ťĹ['81÷í"¦öUQ łŇź…s Ô*HŚĐôJš;»ćP§#KGRhć695荱5Ô0··†’úâ‚.ă3w¬6yšÄđkÄݦź®"ňŇM˘Żx°U»ÝĄq;îŰ®M˘2’¦é9«ŘúM=˙Ö2—•–üčüWµĄn§k“(Đ )L}¨I> Ó–Č˨Ţ}mż>Iä?ţD^ÜKÔĺýÚó…ťůş#&Ń|ú)b®&<`qAç u„B—ÁK•Hy{ű §§GÆőńööˇlٲTŞT Đ ĂŠ¸OÆ Đ××ÇÇç$ …‚%K~ÄĚĚŚ)S¦Ď€ýYłf5ďľŰ‡đpÍ-[[[š6mÂřń‰¸Źžž+V,###qă&’’ĘC©S§6^^Gubš6m*Ë—˙Ä×_CË–-=ű$&&ŕĺu¬PőŰÚÚ°víjNź>ĂС#055e„ń¬X±ŚA> +Kw5«:ujłhŃćÍűA’¨ç §§—oyFF!!!( śś144ĚłŹBˇ(éđD!;W&úď<ĺ†v8ŐŻÎ…u‹°prĺęÖż¸˝˙űĎeéRU$EŢŇ–e÷@e'-NpçŔ%ťă,ś+ręďGĎkuůa‘¸xś*+_·ŔÎă ě<:R˝ç(ŞvĹńYmAˇÔôšÝ Đ9¦ĚkMM¦odŽ‘Ä_ĐŮÇŞR}Ô*HşS۶„ݶ;× !4¶ĐmIş#Ó;áP·'¶®m©7ň îźďĎąŐó˙“‡gp¬Ű [·vTíÜ‹Vä˝ú™ŻŹBń"y©–?OHHŕěŮs4k¦é%hÚ´ ţţś={ަM5&š7oF@ŔYhĐ >őęŐeҤ)ś>}†«WŻ1sć—DDDđŢ{ýµçU*•Ěń/^"22’&MS˝z5&OžŠż˙üóS§~–ďč-[ţdĎž˝ÜĽy‹5k~eßľĽ˙ľćDaęďÓ§7))ÉLź>+W®âďŔřńpssÍÓRن;Ë–-féŇĺlÝZ˛K%˙ם9ăÇÝ»÷ͤřĽĽŽâéyÄÄD8|ř^^G‰‰‰yt”šŕŕ`üý <Żřw(JĚ á±…&”ĆÔş¤(óŰ €*#Skťýl\Ű`ăÚFű»…KM#ĐY†ŰÜą aš“˛Đ3ÎéőP(ő1sČ)ËĘHEßD·SŰĘ”k2…2˙Äý±FaU±>úĆD^ÚË?LŔŮ(Ě-¬ńh#+GťĂ*´ArdĄ'“•‘‚: ĚĘä\=ŞĽ1Q“fehÚël«ÓMYMÂ.Ş-z†¦”­ÚśŚ”8BN®çüÚ!Üر‡ÚŐ41ZŘcYľ)1÷ô\„ßҞܿx‡×»>ý:!„/‰—*‘8zôÍši’¦¦Măç珿M›6 Ył¦;vww7˘˘˘ ÖŻV«9wîîînÚ˛„„DµżW­úQQQ„…ĺĚkHMMĺňeÝ/ę~«{ţüyŞU«ZčúÝÝÝ8ţ‚NĎStt AAÁÔ¨á®-«^˝:›6ýFrr2ż˙ľ©°—K@ĄRqőęUüýĎ’––†ŤŤ -Z4Óé222¤E‹fŘŘŘ––†ż—/˙“§—PüűLl+ˇ4=}#,ËסlŐćTló­fĹÂŮ˙ĺ´IQřŮ­Tn×ÇzoaîčJ…VĂi4ö[,Ë×ÖžĎÂĄ& ˇ7uę°p®‘3§ČĹuVNŹ€™C5z9Ă#Îm§LeU»LĂÜч׻Ňř“M8Ő§P÷IR  ń'Ëđč»s'wl\[ăŃďG’"4udĄ's=•ęÝÇ`ëÖëJ ¨;t=ćŽfÚ!ŽjU‘—ٍÖm<6Ő[Q¦JcŚů“2h“B=CSLlÉ'‘2.t[Ěě_ŁŮ´¨ÔîcĚťÜpŞ˙U:ö%Ěď" YJľŮ”ź°«Ů g*·‡]MÂü˙,ü‹,„BĽŕ^Şˇ}^^ÇřôÓIŘŰŰÓ¸q#ţřc ˝{ż‹•*UäčŃcŔłÁŇ—÷ŘüÎ÷x™R©,p[µ¸Eýčh€ ĘłgĎ^ştéLűöí8|řH!Î-ž&**ŠS§|iÓ¦čéĺĽ~JĄÔj5§Nť"%%µ#ąeŻ:Wsŕ``°ćFł1q΋[űçiç z.FßÄššďMĹĐ Ăáâ†ĹÚE,\*rňďÇę€@ĎG‰”S ’rőč€&ŃĘJ‡äG÷Š»@ŔĘů¸öšLő˝H‹…ŕ“űąµçëBµI­Vá·d<ýŃrćZ˛R!ňň5ήś®MÄέHť!ki4n.)ŕĆ®ĹY:č$E×çő+h8î{ŇŕÖŢŐ( úçĚŹztírĎŰ20+‹ˇ$„ţS¨¶Ä‡\âÂÚ•Tí<’˝’Á>¸ą{AÇĆÔ¶µĎÂĐ#ŕÂŻKt®ąBń˛{é©ĐĐPnßľMŻ^=044äĘ͇==%o˝Ő“;wî˘ůćőĘ•«ŘŮŮR®ś‹¶  Nť:řúúXÇŤ7±łłĄJ•ĘÜą€‰‰ 5kzp˙ţ}ť}_˝gĎćL ®S§¶v!‰ÂÔőęUşwďŠR©DĄŇÜ›ĹƦ,*”çÚµśĄ·Ź9ĘgźÍ$22Š9sfx—;wrî]#žťµµ  66==}5jžžW®\%66kkk¬¬¬II‰(íPĹ#÷/îa÷°=…ÚW­Vqcç—ÜŘůeľŰ•úFŮC|ČEťň}ç,K~űŕÜ>řÎöđ€m„l{¬l+ṇ(އwNsbn“·§> ÁwAGť˛Ç““´¸ü–˝ĄS–{^RÜ˝vÓ­##éAž˛§µ%Řg-Á>kóݦĘLçĘ–É\ŮRŕáB!ÄKďĄÚpôčq €ŹĎ)T**•Š“'O1pŕ{=z\»_@ŔYÎźżŔüůßÓ°aÜÜ\™5ë śśśŘ¸qsç?}ú ׯ_çű¥Aúxxxđí·_kW Ě­gĎtíÚ…ŞU_cذéÔé ÖŻ˙­Đőoٲ333ćÎý ww7ęׯÇÂ…?păĆMNśđŃÖŁzôŤôâĹKąpá"?ţ8ssóbąžŻ:'''ôőőhŢ\3”ĎÚÚš¦Mc``€łłSi†(Jeů:Tí<…ĚTľ*˝ĽB!„(Ľ—2‘ňň:ŠĄĄ%>>'µeŢŢ>XXXhçGfĚ1ă¸zőóçÇŻżţ‚ŁŁ#~8LgţÓ㲲˛=z,AAA,^ĽĺË—pę”/~~y={ďľű6üń;={vgćĚ/µ1¦ţččh>ř`VVV¬YłŠ ćsď^#GŽĘw.ŽJĄbęÔéčëëóÍ7sdąçd` Źťťćć(• ‚ ™™`gg‡ÁK×+žŔ¸Ś -fü„Sý®Ú›Ű !„BV~źÂ/Ë=a(űą2×Ďě‡Ţهţه!`X·lŮĆ· {" Qš\\śyýő×HNNâňĺ)ť, IDAT‰ŃĚŻ±¶¶¦V­šÚžż‹/Z¸«ÖDZĄ’ ©T*Ôj5vvůßKK!„âyEEEŁP(tÖř7XYYqîś_ ČŇĚGʬGU®‡:×ĎěE r?'W™–|Ĺ.^iii餧§ĘÍ›·tzcccńń9IµjU)W®iiéO8“B!„x•H"%^iŃŃŃO\QĄRqýú í"B!„BŔK:GJ!„B!J“$RB!„BQD’H !„B!DI"%„B!„E$‰”B!„B‘$RB!„BQD’H !„B!DI"%„B!„E$‰”B!„B‘$RB!„BQD’H !„B!DI"%„B!„E$‰”B!„B‘$RB!„BQDúĄ€âĺSˇB…ŇA!„˙’   Ňá…$‰”˘ČäŞB!^u2´O!„B!ŠH)!„B!„("I¤„B!„˘$‘B!„B"’DJ!„B!ŠH)!„B!„("I¤„B!„˘$‘B!„B"’DJ!„B!ŠH)!„B!„("I¤„B!„˘$‘B!„B"’DJÇ4nÜFŤ–vB!„â¦_Úń")SĆš˛eË`mmEll\)G$„B!^D˙‰©ßc÷îĄĆKĄfM<=Đ´i“Ňĺ…âčč¨}îŕŕř„=…B!Ä«ě?‘H˝jľ˙ţćÎťó\ÇDFFáĺu”ĐâďĄćŕŕ }îččđ„=…B!Ä«L†ö˝˘"##ůúëoJ;Śеµ5&&&¤¤¤ P(055ĹŇŇ’řřřŇM!„BĽ`^şDJ__ź±cÇĐŁG7LMMŮ˝{/!!!:ű( † ̻ヘ­­-wďŢcŐŞ_8tČS»Źąą9“&M ]»6čëpţüy~üq17oŢ૯fajj¤IS´ÇŚ5’V­ZŇż˙@śťťŮ·oź|2‘?BµjU9~ܛٳżfüř±těŘ…BÁşuXłćWí9ĚĚĚ4iíŰ·E©Tp–Ĺ‹—rçN ¶^€°°0úö퍑‘‡ćëŻç’––ÎîÝ;(_ľ]»vfôč±řřś¤^˝şŚý5j¸“‘‘ÉŃŁG™7o‰‰‰ůx—}űvńÎ;}¸uë6mÚ´fÔ¨‘T®\‰đ×_ŰY˝z *•ŞP±˝L6l€­­mľŰ""îŁT*©X±Í›7Ëł=&&†3güJ:D!„Bń{é†öMťú)˝zőŕ›oľcŕŔÁ<|řÁéě3fĚ(† Ě’%Ë0ŕ}öěŮËwßÍĄ]»6€&ŃZ˛äG<ʤIźRż~}&LWŕ1ŹkÚ´ Ěăđá# đ> üH˙ţ}™&&& 4€… ±oß~nŢĽĹşuřóĎm > € ęSŻ^]&MšÂéÓg¸rĺ*3g~ÉwßÍGĄĘ*RLţą•PîݻǾ}ű111aÆߋ‹çŕAO‚‚‚©YÓ€úőëQł¦cĆŚăüů ÜĽy‹3ľ ##®];kĎyçN +V¬$"â>§NťfďŢ}Úĺ¸ccc‰‰‰!:ZóČČČ 88Îť»óí·ó¸qă&ţţěŰ·_›ŔĺwĚă†ĘţýůůçŐÜĽy‹=™;÷;úö퍕•eˇb{™ś9ăÇÝ»÷5 éeňň:ЧçaIHHŕđá#xy%&&ćŃQj‚ń÷(µ¸ĹÓ999áççKź>˝K;”bÓŻ__ĽĽ<©[·ni‡Ŕž=»ŠĎČČČ3ź&-- jÔpÇČČÝ»·ăăs źc?~\\\´ÇDDDčśăÁšš>1}}} Ŕś9łX·n ÂĐШĐípwwăěŮł:egĎžE__źjŐŞ=Wl/"•JĹŐ«Wń÷?KZZ666´hŃ CCCí>FF†´hŃ ŇŇŇđ÷ŕňĺČĘ*Z˛ý*Q*•ôíŰ›M›~ÇÇç8žž3g6NN/Ç ˝zőŔĎĎ—J•*–v(:¬¬¬055ĹĚěßý·ö˘^ŹgőŐWł8p`oi‡ń\fÎüśfÍš˛k×n6nü#×=B!ţm/Ů)ÍŞ' ­*̰«gšUCş˘Łc4č<ĺÉÉIĎ|Îúőë±|ůŽ;Ι3~ěÚµ‡Úµ_§GŹîĎ)¨ŐŮ?ŐĎužYTT§NůҦM+ ĐÓËůnA©Tb``€Z­ćÔ©S¤¤¤–b¤/‡Ź?Í AÉĚĚäÚµë8::Đ©ÓÔ­[‡Ţ˝ű‘śś\Ú!ľ”V®ü™ß~űť¤¤g˙;!ţjÔpçřqoľűn^i‡"„ŻĽ—ŞGęîÝ@222ň %Ëýűť;¤¦¦j‡µe«[·7nÜDĄRqĺĘUěěl)W.§HˇPĐŻ__ěěěHNNÎłAąrĺž+ţk×®cmmEzzaaaÚGőęŐČĘRú<Ź'6oĽŃ‘7n2eĘt¶ný‹Ó§Ď`iińÄcwőęµ<׬^˝şdffrëÖ­BÇö2˛¶¶ÄĆơ§§OŁF iÚ´ ††FÄĆơP(°˛˛.í0_xzzzôíŰ€ńă'0dČPŢ~»7ááŘŰŰç»pÇóŞPˇóçĎ‘#‡8zô0Ó§OŐéUĚ­fM/ţ//OŘËÂ…?ŕáQC»}óćŤĚńţą??_í"-oľŮ‰ Öáí}”;ţâ‹/>Ďó7⫯fń÷ß[iĐ >7nŕôé“Ô©SĐ ‡űüóĎhѢüń;ÇŽyńÝwß`jjJĹŠYľ| >>ÇŮłg'ľ§sŢ^˝zpôčamĎPůňĺđóóĺŤ7:ňţűصk;'NcÍšU:m*lŰóó´ëšż«ëÖ­ÁÇç8۶ý™ď—7 >ŚíŰ·qâÄ1ţřăwFڦí©/HQÚhhhȰaCŮ´éwĽ˝Ź˛wďn¦NýkkÍż[kkküü|yóÍN”-[??_öěŮĄSĎ;MsN===üü|?~ś¶ěIŻďł¶3[ÇŽXż~-ŢŢGŮż_|1Sű˙h^??_¬¬¬h۶ ~~ľlŢĽ±PçBQ2^Ş©¤¤d¶mű› ĆK`ŕ]:uz*U*“ž®™÷“’’Âďżob„ń¤¤¤pűömš6mBďŢď0eĘtÎrţüćĎ˙ž~XHRRýúőĄ}ű¶xzjVöó÷ _ż> <Ó§ĎĐĽy3š5kBxxDń=Ťż—.]fńâ…,Z´”ŘŘ8zôčFßľ˝yë­Ţ$$$ęOĎĂÚcoßľÍřńăhذ!~~Oľ•ŔÓÚhbb½{÷đóógÓ¦?´Ç=|Ë1ٍPˇAAAěŰ·źf͚ҨQCöíŰ˙Ä:ź$ż×·C‡öĎÜN;;;FŹĹŃŁÇ2ešvôŔž={ذacĆŚbÖ¬Ż8qBSß”)“9|řČsµA!Dńxé©ĚĚL.\ÄÂ…‹tĘ·lŮŞ}®V«YłćWťű7=.11‘YłľbÖ¬Ż ÜgéŇĺ,]ş\§,űśaaaÔ®]?϶ÇëěÓ§żÎďIIIĚ™ó sćä3Ü™3˙—§lĹŠ•¬X‘óA-**Š>ŞłĎ’%ËX˛D÷dîXň;ćńř˝ĽŽáĺu,߸ ŰËĆŢŢ^Ű•śśÄĺË˙óĐÜOŞV­š››ŁT*±··×é]«^˝]»v ((   ”JĄöĂpqhÝşŢŢ'´Ihţ>üţűFíp+€*UŞPĄJećĎ˙LLL´ŰNžÂřńăhܸŃS©§µ1%%…E‹–ä9.{>™˝˝AAAEn_Aň{}ź§ťŮďŻ5kÖę Áľuë6^^Gi×®_}őu±ţŰBQ<^şDJâ”––Nzz:ˇˇˇÜĽyKgEľŘŘX||NR­ZUĘ•+÷ŇÝt¸4ýúëz~űm#µjŐdîÜ9Lš4ccc~ýu}±śßŇŇsssnßľťgŰíŰwt~Ďž×3yň$&Ož”ďůĘ”±.pŘnöń›6ýžďöÇďI–ßí˛es|zą…âéSX_Ľ#;!20ĐĚ{޶?I~C5“““u樕/_Ž2eĘpčPţ˝'…ąoßÓÚš[cĽůf'4¨OĄJ•pvvĆÄÄ@űEIqÉďő}žv–/_µZÍŤ7ól»rĺ ;vŔƦ,QQŃĎ´B!‰”xĄEGGk‡|ćGĄRqýú ®_żń/Főr˛°°ŕµ×Ş••ĹĄK—ÉĚĚäÜąó:äI˙ţýhÖ¬Y±%R9_Üç]IóńŐ5ł_ąr/^Ě÷|<,°®ěăÇŚ›ďö‚nÜü"x޶GýIIIL™2-ßíŮC©ź‡••«V­ÄĹĹ™#GĽŘ˝{7AAÁ™™ńŐWłžűü…ń<íĚ~Ťň[(§Ln.„/"I¤„ĹÂÖÖ†U«4CÜFŹţ??LLL´7‘ŤŽ.ľoÔŹOŔŐµzžmŐ«WÓů={ř\TTgÎ{Ţăă÷ĂË}#ň§yžv‡ P(pu­®ssywww’“SxđŕA‘Ď+„˘ä˝TËź !^\w9rÄ €ĄKłeËěŮł77WRSSY·®xzٞ;vŚćÍ›áććŞ-344`ŕŔ:űÝşu›ŔŔ»Ľ÷^ťËzzzüüóOĚš•3÷/{řfî›Y{y#33“áÇéôvŮŰŰł}ű6úőëS¬í*NEi{~ň»Eqđŕ!čŮł‡Nyë֭ضíOęŐ«űLçÍM©Ô ­LJʨP(čŢ˝[ž}sß =[LL iiiy–çďŇĄKˇcxžvzy%##?˘óţŞZő5ÚµkË‘#Gä&ŕBń‚’)!D±ůüó/4h]şt¦\9’““ńň:ĘŞU«ąyłxďG¶rĺ*Z¶lÁŠËصk7qqq´k×6ßů>ß|ó-K—.făĆ ěŰw€ŚŚtÚ¶m‹››+ÔîwíÚuÔj5ăĆ}ŚŻďivîÜEdd$Ë–­`üř±8;;ăăă™™=ztÇÄÄ„ ň2÷˘(lŰó“ßőČ˝ÔűÓ>|oď|öŮ46lŔµk×qqqˇgĎ‡ËYoooĆŽĂĽy߲}űNRRRhÓ¦µvĹÍÜ®^˝FĎž=6m ·nÝfëÖmddd°˙zöěÁŠË8sĆŹ ĘăââLJJJ‰·3**ŠeË–óÉ'ăYąr§NůR¦Ś5Ýşu%66ŽeËV<óµBQ˛$‘B›ŚŚŚ§®Y\îßżĎС#7îcmďĂţýYłf-­[·ŇŮ÷Üąó :ś#†Ó»÷;pűömĆŽý___í~|űí÷ 2şuëpóćMNź>ĂożýNDDď˝×ź!C† V«8{ö .*Ň­ JCaŰžź‚®Ga©Őj>ýt* ¤[·.´mۆÄÄDvěŘÉ’%Ëň,$ń,ÂĂ#3f,ăÇŹĺŢ'&ćžžžś9ăĎ’%?ęě»}űŞV­JÇŽíyóÍNěÝ»Źääd~řa!YYYtčĐww7|}O3uętvěřű_içďżo"22ŠAđᇜśĚ±cÇYľü§b+„˘xĺ7őń2E®˛ěçĘ\?łzŹúʆ€`ݲeß˙úM]…xĆb`đR©P«ŐŘŮŮţëu !„âŐŤBˇ(öTźĆĘĘŠsçüš±@d>zd=z¨r=Ôą~fŻô“ű9ąĘ´dŽ”B!„B‘$RB!„BQD’H !„B!DI"%„B!„E$‰”B!„B‘$RB!„BQD’H !„B!DI"%„B!„E$‰”B!„B‘$RB!„BQDúĄŔăô ŚQ Ô7DˇÔ+íp„(4µ* Uf:ŞŚ˛2RK;!„BQ‚^DJ©g€ľ‰J}ĂŇEg˘Pęˇgh˘yd¦“™‡*+Ł´ĂB!„%ŕ…Ú§g`ڎ…ť$Qâ?C©oˇ…zĆĄŠB!„(ĄžH)ő 00+[ÚaQ" ĚʢÔ3(í0ţ“ŞuťAÇľyĘëŤŘH·Őľ;şę”Wn?–N‹}Ń34ĹĄqŢ\š÷ŘKĹ6Ńa^Ńę70±˘ţG[č˛Ü—& Ô3 Ĺ _<úýXBQţ7™;ąŃmµ/¦vUŠĺ|ýŇę‹â}/ŮToEóé§č˛Â—ó|y­Óäb=żBâQęCűôM¬J;!J”ľ‰é‰ŃĄĆNjl(Fć P(Q«UYŘăXWóŮČĘ‘ÄëÚý+¶@°·7YéÉ;ą“Ş~î\{ÍĆľćxĎiR¤ăĚ]I ‹+Z]oŤ™C|L"ĺA0jµšŘ;§ ÷˙łHçyŐ™;¸˘Ę€”č»Ĺrľä¨@âC.Ëą¬*֣ɤď <ěĂĄß6`ăÚŹ~ý‰ :GôŐĂĹVŹBçWމ”ž± ç˙yJ}Cô ŚeŠb–J00·!=! € ­†óđN ćN&Y:j÷µ©Ţ s'8łx9ćNî$†]~î,śjv­ČÇ™;ş‘~µđ(¸4jŔĺMKxpËG[|yÓř"×ýŞ3st%ń>Úäűy^\,çÉćT˙î_ĺĘ–IÄź§Z×ţX8{H"%„/RM¤”&ĄY˝˙Ą‰$RĹ,őa(F–¤'DˇPęQ±Mw®m[JŐ®cdé Ý·b›QÜżpźäč@,śĘu%„Ł·aëî‚Zwíććî9Úc Ímp÷;ëÖD©·ěÇŘĘ#k~ęM—ĺGAˇŮ·\3_OéMĘশ•p{{.öµŞ Î‚ˇ\\?‚ôÄšO?E™×4Ő6–:ŽeßčVŘşw áŘ/Ř7şŞĚtZ~îKäĄŘTıžę,¸}`·ö~Ł­GĎČŚęÝfâҤ ¦śĹĺMă»h’ţjÝfRˇEG Ě !.¬űřŕóůľ ĄU;OĄB«YAÔĺ"ÎíŔŁ˙Hö\p/ťKăţTë:S;†‹FŇę+ńž=Џ s8ÔéAµ®źaY2’ Čű7vÎŇ&@ ĄUŢHĹVď`\’ŁŕĆ΄ůmŃÖclíLŤ>󱯥饼ąçŻG˝wňŤËµ×W8ŐďČŃ™šŘő Mé´č‘Cđ_ń.–ĺjŃęËUźőI‘7éĽě0ľó?#úÚěkuˇţČ/8·úÜŢž®mßŮUď‘•Sg…VĂ©Ňa(¦vš¸oí[FČ© \űk†NLVębh±÷ü ĽžB!JG©Î‘’Ţ(ńŞ÷zńKŤ Đ&Lµ»Łga[I‹OĹČJÓ#edaŹSýĘYh>€›9@ĹÖM‰úç§ćŤ"Ě˙®˝şiçUé›XŇ|ÚLl*á·ôSN͇ŤkëŐ!1ě2ęĚtOí ŔĹu«84©WľI”uĄ†4ýôGRbîâóí.¬ť‰ű;s0µ…„0MŹ”©m%ZĚř¬´$NÍMŔĘXUtˇJÇ śš×šł+°LöŤnŤ*3 ç$G‚*3 ̡B«NDśý›#Ó»sűŔÜŢCőGíÖ§ÉDOĘVkÉąŐÓ85™©ńÔěźÓŁRgČŻ8ŐďČŮUÓđšŃ‡¤Č;ÔüSŻAÝa(ߢ˙lţŽs†“ň ÷wG’VđëVľŮ`ęOčé]śřz8AŢ«hřńJPCb„¦wŻ|‹i8ú3îź×ěóĎćĽöf'*w§=Oí!k¨Úů®ďX„÷WĂ÷?@˝±ŞX?×křföUđ_6ß>Ćν=µ=H, 709ę6&6ąbm1…ŚË”Ó–Ué8‘¨Ë±ÄźÇÂÉ€„°°p®ŇPÓ«tfqŽĎ‚ˇ9¸˝•“ ×č=מCąľc'ćŽäţĹcÔţ` z†¦yâqx˝+M&­ ěL oť,ř˘ !„(ĄÚ#%÷‰Ż yŻżŚä‡¨Ňs©Jí>&čřQT©¤Ĺ…i©ň-‡’ ŃW<0µ{ …\X»”ß߸ąs6[˙Ť‘•‰שÚyguŃ$*Ŕ?|B«˙ýDBŘÔjúĆ–D_=BZ\Dľ1ş÷žGäĄPÎýňľ¶ĚÜÉ «ŠH ×ôHyô[DÔ•[\Ü0 Cł˛[9ˇo )‚M˘df˙ ˇ™–¨=Ź…ł aš^9“˛Đ3† ë$âüî[‰ŰŰ=1)ăBŇýTn?CsŢs:ŁP(1wtĂĐĽ I‘9=%v5«pcçďÄ\? Ŕů5CP«˛ňm›ťÇ85¨ÂŃHŠş­ąF›>ÁĄńImbń8=CSÜßĹŐm۸˝ń!—p¨Ýu–#Yé)•Ąć{#řgóFí°ąřK”­Öç†ý¸sčGějv˘\WŽĎÎé-»zÇzťpnđ.q÷¨Ňq"(ŕÔüŽd¦&pĺĎÉ´úr aWňŤ/)ň6z†šEb2’RąĂ něÜIĹÖ=Í{Íą±;§NŐľsú\™ IDATI_ű{r$:Żwäĺ3X–«€UĹúTjßďŮCIŽą‹IŮ ZŘ‘ŞĚ4ťXŞv™Nő=ą±s·÷źoĽB!JW©/6!„Ď*5NóáÖ̡:6®ć\řu…¦<6s'7 %[÷äöţőÚc,śÜQ«4=WŮ ĚĘs—Ćí¸wl»6‰ČHzäę}pń@•É1wóŤM“1>su?gĄ'“žé‰1ÚVơŽŕ€}ͤ'@|h0—6ü@X®E$,\j’¨ssgw˘ţ9¨Ůî\µ "Îţ­Ýnü(‘L‰Ń$dîďöEˇć$#’îÇzf ÷Ž®Đę{÷ްóčDĚ5/BýţС|śKă÷ľ«M˘@3ď(3…)§zoŁ4„»G–ę”g$Ç’–łŹ*îÓí K‹ŹD˙ŃÝĘ5DäĄčs›ˇVŤk›|ۧVŁł2"h†Q˘(¸GJť•ˇíUĘV浦XUĘi_fj"†ćşCa-śkŕX·śv(fVZć6:űTh9}÷ßJVF ꬜žFĐ\×*oLÔĚ+ËĘČ7>Ôj’Ł51Y¸Xęű;Yé)¤'@ĹÖ‘žvćŠËVŰÖě×$wŰJ}ĚrĘT™y^×6y®qě]?έXl+ !„(’H !^Z©±ˇ8ŐŻCZY‚Ň\ÜYŕľpi7nŤĽ(۸;Ve˝©Ňaĺšu"+•'ŢĐ®ł • Tí4 «˛Ţ¸6ř:}´iä“đłżaQŞ˝ý•®L“1k ;˘şę·•˛MęŕÖ¨Ve˝y危Ôř¤'W¶®'5. Ť:‹ţTí4 űj-±­Üú~ÇĚÝue…IzpźJí^'řŔ_şľ”(¨Üţ w/×%ÚĆć9 »ŢĘŇÍ M–~o×ĂÇ.ěě6*µisÝwQ9»Sľe_™ŤUąZą(Ôô;µ{ýđČ8…B”<Ú'D …‚Ą‹ľ4 1 M!öċ!5ćF*¸öçý屡( !Â?&ß0.•3îy8é(Çťcżęžź[ÝťÚ=×ŃpčLR˘áúöĹX9é%+·ö-¦Ög“i9e=˙Śz“Śä˝:łŇ’đ[2ďOÓtÜ2Ăŕň–Ń45_w©¬ôN.ěGŤnßŃ|â*2SáÁĹ|fö!#EŰŁeĺVC7DOŻ‹'IąCů´CĘô‡Ó©\Ęs÷Dî6ť_׋KŁa Q( &0Žăss‡úůoBŤîËh{íXrÔĚěËqďä¦<űW;c_NRléâIŇC˝]–®žŮCFµCNoí[ڎ™ 5şŤĂŘĂŕâĆĹző* M°­äBčéŰŹŚS!DÉË˙5jţeŠ<Ër~Wćů™ó0Č~f?Ś#Ŕ¦E‹Öľqqńů2µqý÷[ ÄSTł†«–jŻ_č5`4—Ż\{juçLםWLL,FFĎ˙ű µZŤFŁÁŃŃáą·-ŠÇ˝ó4˝ÚăóőŁŻŁ*  í ĽCÖÜ;O§Św;ŽN/ýŰ'„B_DD$ …Ąňů‚ł¶¶ćÜ9żĆ@,¤™Ůʬě‡:ĎC“çgηčy'Ď2é‘"ʶ­›é~oÓ˛éSM¤„(SkĚ+áÚ°=!‡·=~…ťBAÓqGIşť›Ů“-8ŐęD•7Űqnő˘N!„(>I¤JŔŚ)cÉĘĘbĘŚ%ŠČCˇPĐşeSÝó6­›±dĹ2ĽO”joOÁĄ^mÂÎś×ÝO©TÓhđß<ĎŇrň:âB4śY1GoÚv!„˘´DJlŢ^ŐqvrÔ=wuq˘ZŐĘ\»řµ„x6.něĎĹŤ%ĹÓwű,'ćµ.é0„B§˘Ô%RÎNe5´őëig9:âăËüoW‹sţŘş†n=x+÷BÝ“‡·3jü4|NřŃéͶôíŮŤ9 —3fxěmąz=o–¬ćr€v¬˘”¨T±Ăőˇ¦·'=vŠo—­!>^{ČɆc``@ZZ:ŻżÖŠĺ«7ŇĺÝŽ”usŕŤv­>ć+NśŇż_Ťxöľ[0Ť†őë<¶Ü†Ußä[vćÜ%˙âY„%„B!J‰R7ýůěéă122¤gżôę?’re]: g±ę°łµˇűGď1zÂtŢý¸/W®Ţ`ÉÂ8•q(r{;[V|7‡Ä¤d ›Ŕř/gQ©b9ĎźŠAî=P^mŮ”¸řxzÍî˝č=`4gĎűăwćŢý§ĎĺżŃĄxöLLL_¨††Ź/$„B!^jĄ.‘rsqĆďĚ‚Cîr+ř†OdÖüĄŹ_1ccc,^Iŕ­ŰDFFóÍ’ŐDÇÄňN§×‹\ćýÎHIIaňôů\˝v“łç/1拸W}…& ëęęąÂŇëąL\|±qńDEÇč™OgÇbÇ<ň©Őz|>ź~Ď12!„Bń"+U‰”Ţ^Ő‰ŠŽfŰď;ůbĘ/[ËGĽ @JJ*öö¶şuÜ\ťóŐchh¨×kd``€§G5nŢ*r™«×ńör×»Áť­ ĺËşrýFĐŁ7D­Š·—{ wĄR—‡űsŚH!„BĽčJU"efjĘ·ó¦2zX*W*OÍ´oŰ’›AÁÄĆĹxë6ű÷¤–·' ęŐbÜČůęIĎČ`Äŕ>4¬W÷jŻ0uŇ(Tćü±}o‘Ëüöçn,ĚÍ™:iîŐ^ˇN­Ěýz"7nŢâřÉGĎÂM•Ę©XˇffO>éx:Ú·mőř2ݵ|‘!„BҢT%R‰II 1‘re]Yµt.‹ćN!22šń_ÎŇ•ůrę<232X˛hĂ÷aÍú­¤¤¦ęŐ“’’ʲ•ë7j «—ÎĹŮÉ‘Á#'Uä2‘QŃô2+Kß/žÍś_rçG}©wÝTA~Úú;IÉÉl\ó-­[4yŠ{H—ĄĘ‚ĆŤr'ŃN(±—ź¶ü®wí]ÓĆő±TY”DB!„âTĐx¦‡—)ň,Ëů]™çgÎĂ űaý0Ś›-ZűĆĹĹçkČÔĆőßoA1uzł-Cö¦ý[ÝţUńrčđz¦|1€»÷Â9o gÎ] †§;_ŽFĹ ĺ:s»öxâ¶RcCó-‹‰‰ĹČčůßÎM­VŁŃhpttx|a!„B'‰BˇĐ»ćy°¶¶ćÜ9żĆ@,¤™Ůʬě‡:ĎC“çgÎ58y'Ď2ťRŐ#%ÄÓK\|?můťOz Ń%QţW®ńiźálÜü+1±qDEÇ”`¤B!„âEňüż ââ{ęě#{ÓÓÓYňý,ůţ‡ç”B!„xáýç©»÷łc÷ţ]F!„Bńß%Cű„B!„˘$‘B!„Bb’DJ!„B!ŠI)!„B!„(¦ťlBŁÎBˇ4(É„x.4ęGߤą´)_ľ|I‡ „Bç$$$¤¤Cx!•h"ĄÎLÇŔج$CâąPg¦—tO•üAB!Ä]‰íSg¤”dóB<7ň^B!„xą”h"••‘úŇ}S/ÄĂÔ™éde¤–tB!„â)*ńÉ&2SâJ:!ž)yŹ !„BĽ|J<‘Rge‘]ŇańLd$EŁÎĘ(é0„B!ÄSVâ‰h‡řĄ'DČ0?ńŇPg¦“ž!Cú„B!^R%:k_^ę¬ Ň#102Eid†ŇĐX¦FĄŠFť…:3uFŠ$PB!„/ą&‘Ę‘•‘*'ˇB!„BÚ 1´O!„B!JI¤„B!„˘$‘B!„Bb’DJ!„B!ŠI)!„B!„(&I¤„B!„˘$‘B!„Bb’DJ!„B!ŠI)!„B!„(&I¤„B!„˘$‘B!„Bb’DJ!„B!ŠI)!ÄK«sç·ńóóĄbĹ %J±Lź>•˝{w=—¶jÖôfăĆő;v„Ő«W>—6˙« z?~ôQWÜGť:uJ0˛ÇëÜůţüówŽ;ÂŕÁJ:!„x!H"%„x&Ę•+‡źź/~~ľ<¸Ż¤Ăy!•+W??_Ţ˙˝ißÔÔ”E‹R¦L6mÚ¶mż–H/Łť;·3sćŚÇ–ł¶¶ĆÜÜ óçŐ“ńö®ÁĉHLL`Æ9|řHI‡$„/Ă’@MŁF Ńh4ś:ĺWҡ”jăĆŤ)éÄc¸ąąbeeÉüů Řşő—’ç?iĹŠ•üřăO$%%•t(…ňđđ`Ę”©ÜĽXÂŃ!Ä‹Cz¤„ČĂÖÖ;;;ěíí±±±.épJ­öíŰѨQCBCĂži;:ĽÉO?mŕر#ěß˙“'‰JĄĘWÎĐĐQŁFňĎ?{8|řsçÎĆÁÁ!_9ľůf!ű÷˙Ă˙°xń7x{×нޠAüü|éĐáM˝ő–/_Šźź/ŻĽRY·ĚČČ#G2cĆ´c;v4żý¶ €ńăÇâççKçÎoë•)S¦ ÎçđáěÝ»‹aÆ`dd”Ż®7ŢxťŤ×sôč!ţüó7&OžTŕöĺ°±±ÁĎĎ—-[60zô(üü|;vt‘÷äU«Yӛŋżáر#ôîÝĐOüý÷mT¨PĺË—rřđA~řa-•*UBĄR1iŇ<¸Ź÷1qâĚĚĚ Ť7Żví^cÆu=z={v2yň—8::ę•Éi»~ýzlÚ´‘“'ŹS»v­]oaCE6Ôľ/š7oN۶mđóóĄLGÚµ{ ??_¦OźZh»ť;żÍˇCűuućôR¶oߎ˙ýďS¶o˙źĂ¬]» //Ď|ëרáĹâĹßpđŕ>öîÝŢE ,W{{{&NśŔîÝ;8zô7®×{oçlË1ŁŘĽů'üü|i۶M‘ęB—ť$RĎ««+.śˇJ•WJ:QÎÎÎşßťśśQRĆ‚#†‘‘‘ÁĚ™łžY;;v`ęÔ)ÎĺËW<ů+ÝóÉ“żâ—_¶«€?ěBőY˛dË–}OąrĺXĽř¬­sżŕ©S§+V,§LGÖŻßŔÖ­?SˇBV­Z··÷#ë·¶¶fÝş5´k÷˙üłŹŐ«×ŔÔ©SčŰ·ŹŢ¶\`éŇeLžü—/_)öö!ÄËH†öâŔżY˛dżýöGI‡"ž#'''ÝďÎÎN\»v­Ł)ť řÖŻßHHČťgÖN‡orďŢ=FŽŤFŁŕĆŤ›Ô©S ˝ˇRÉÉÉŚ˙…îyRRďĽó6ĺË—'$$€ ĆĹ˙ţ×řř6oކ ëřâ‹ tîü™™™ś4hPź-[¶ШQ#Ôj5'Nř˙•+WHH§oß>ěŢ˝‡Ý»÷č˝nggËÂ…‹Ř»÷o6nü‰­[7ńÖ[ťX¶ě{ůüó~lŰö+sćĚÓ­»oßÖ­[M·nóý÷+ňµťžžÁîÝ{ ˘{÷nůÚ/ĘľČŮç‡bѢoóµcooĎŔC ŕöí6lXÇéÓgřúkm’}ô¨®®.Ľţz{fÍšSŕľĘŮÖpčĐaĆŽŻkçÎťlܸžA0uęt]y+++FŽÍŃŁ>…Öů$ő>Nxx8»wďađŕA\¸p!ßq-*KKýúőG­Vp÷î],G«V-ůëŻí€¶'300ľ}?'-- €źŢĆÖ­›:t0}ű~^hýýű÷ĂÉ© =zô& €őë72cĆ4úôéĹž={¸sç.»wďÁĆĆŹęěÚµ‡<Ńö!ÄËHz¤„Čfcc™™)))¤¦¦bnn^č7ú˘`îîŐčŇĺ"""Y»ví3m+&&;;;˝áfÇŽgÉ’Ąů®7ůé§ÍzĎ}|´˝D..Ú^ÇĘ•+Sąre~ůĺ]âÚ„kÓ¦-¸şşč†KůřĂÁÁA7ŚŻaĂ\»vŤ'|©[·JĄöĎjŁF ą|ů ±±±O´}iiiüóOî$YYYś8qÝđľÖ­[addÄŻżţ†ŤŤŤîĘ˝{ˇö=NqöEŽśž¬‡ĹÇÇë’(Đ&çĎź×+| LMM Ť+g[×®]§—ÄÝĽČÁ‡hÓ¦Ťnß$$$<6‰z’zź—;vé’(€3gÎżg+±sçNĚĚĚtÇŢĐĐăÇOP»v­GîĎ×^k˱cÇuITŽŐ«× T*iÓćŐg°UBńr)u=R …‚ž=?ăŢĂÁÁŔŔ V­Z͇te*W®Ě1#©]»éé>|„  ŻJ×®]011áźöóő×3±±±ĺďżµ'S¦|É”)_ҰaěíŘ˝{;“&MˇOź^ŘŮŮҢūů⠾ͪUkôN€Ä‹§Aú…Ů żŹR©¤B…ň4kÖ4ßëQQQ2E”J%ăÇŹC©T˛xńw$'§`mmóĚÚ[˝z µjŐdÍšUÜąs—łgĎräČQ||Žéť€$$Äë=ONÖ&ZFFĆ€öş€k×®çkçĘí0¦˛eËâď™cÇŽŁŃhhذ!AÔŻ_ź3gÎrćĚYT*îîîÜąsŹę¬\ąę‰·/)))ßv$''gÇmHFF†.îÍ›*°b·[ś}‘###˝Ŕş233‹¸\›Ŕ(•ŠGĆĄŃh¸~ýFqµk÷öövDDDfÇ”Qh]˙¦Ţç%çXçHMMňżgGŹĹčŃŁ ¬ĂÖÖ†°°đ|ËU*666ăŕŕŰ$'§P¶lŮżBü”şDjĐ tíÚ…™3çHóćÍ7oC† çřń88ŘłnÝjNžˇRĄŠĚź?ŹÖ®ý¶mŰł˙ß,]şśß~űť´´Ü“„Ď>ű”yópűvHľxnŢĽIÓ¦M3g&YY™zÉťx±v‚™‘‘ÁÝ»wQ(¸¸8cllśŻŚBQřÉŢYÝşu¨QĂ €®]?¤k×quu´'nëÖ­aŢĽş“ń+8ř6|Đ•-šÓ¨QCęÖ­Ë;ďĽÍéÓg#F Ó[ž“šš«ľŔŔ ‚‚‚čŇĄ –––şĺććć|ňÉÇ„††é e;vě–––tęÔ‘ .čđ“'ORł¦75kzë†>JNowA=źEqđŕa233éŰ·Ź^/C™2eřăŹ_ů裋]gq÷Ĺórđŕ!222čŐ«§Ţ¶V©ň mÚĽĘžčłYśzsţţ7o®?ä· *§§§ĺ;®9oĄ˛řC.vóf ·nÓ­ŰÇz˙» Xąň{¦NťňČő˙ůgÍš5Ő%Ç9úöíŤZ­f˙ţ˙:F!„xŮ•Ş©˘ ©z~ĂRdWéÁ‰ľ´nÝ### r“_ĄR‰‘‘Ť†'N’’úšÄó¤V«‰ŠŠ˘[·Ź±łłăňĺ+899ńî»ďţDCęfΜͲeKظńvďŢ hhßľ=..ÎŚ1JďďÇ•+ÄÄÄжm/^˘[~ňä)ěěě°łłË7ÁEA"""ŚŚ¤K—000ŕôé5ÝÜ IDATÓ\˝Zô™"}>§˙~tíÚ…Bż˙eľúj*—.ůë•U«Ő?~‚Ž;ŕë{R·<66–€€ŞV­Şw?ĄÂh4&LČرŁ0ŕs6l0/Öß)€ü‰đđpşuűž={˘Ń¨9{ö‹}«ëˇ+®âě‹çé§ź6óŕAź~ú ˝ző 99™Ă‡Ź°lŮ÷DF>ůdE­W­V3lŘHĆŤC۶mHNN毿vpřđaš4i˘Wç˘EßbaaÁgź}Ę•+>|?żÓlßľ“×^k­­íżN¤Îť;OďŢ}éׯ/]şĽŹ™™ 2_ß‚§ÝĎGŻ^}0ŕsÚµk‹JĄ"8ř6S¦Le×®Ý˙*.!„řŻ(¨KĺáeŠ<Ër~Wćů™ó0Č~f?Ś#Ŕ¦E‹Öľ93ćý[C‡ćý÷ßcćĚŮѤIc† Âđá#9zT;-ńożýĚńă'Xż~#ććć 6ccc>ůädee1}úTĚÍÍ5j¬®Ţ>§Ył¦tďţ[¶üĵk×ůá‡őÜşŚ««+»woçý÷?äćÍŔă ¤I“Ć >”±c'°˙¬¬¬8zô _}5ť}űö“o›DÉŞ[·NNN$&&`nnˇ’©Ń¨INNÁ‚ű÷ďë®yšbbb12zţßg¨Őj4 ŽŽĹ»Ů¨B!DQEDD˘P(žűĺ.ÖÖÖś;ç×2€t 3ű‘•ýPçyhňüĚéNÉű;y–锪)€ďľ[Jbb"ÇÁŢŢž[·‚;vGŹj'€ŚŚ¤GŹ>Ś3’µkW‘žžÁ‘#G™?A±ĆĎĎźż)S&ѱ㛼ývţńďĹăŕŕŔ­[ÁŚ?Q7ľ<>>žź~ÚĚ„ cqp°gŐŞ5˙n§ĘČČGGGT*K´JÜ!33“Š+baˇ˝¨ÜŃŃ1{Ęé‚§sB!„˙-Ą®GJ§ÉÍÍ•š5kÚ{ ůű_&*J;C—ŤŤ ŢŢ5P©T\ĽxQ7;äÓ"=RB!„xYIŹ”/±´´tŇÓÓąwď7nÜÔ뵌ŤŤĺرăT­Z…˛eËęÝOL!„Bü·I"%ţÓ"##9ÍŻZ­ćÚµëĎü~@B!„˘t‘ !„B!D1I"%„B!„Ĺ$‰”B!„B“$RB!„BQL’H !„B!D1I"%„B!„Ĺ$‰”B!„B“$RB!„BQL’H !„B!D1I"%„(•=ŰŃiµoˇŹ–“}pkô1o,ń-áh˙[ŚUtZí‹u…şĄ¶­ ­űóÚĽâ˝oŚĚ¬©×˙g:,óĄń˝X8Uĺµyľ¸ÖďňTc+Hű…ľ”kŢ«Ŕ×L­]˛÷Q˝gĂłř¬=||źdźĘß!ÄłbXŇ!Ä“ >Í‘©ý0¶°ĄńčYř˙¸žčŔd¦Ä rń ážć©¶­44ćÍeGđűn.ízŞuż ,ÝĽH żVjŰR9»“W¬uÜßű §ňř.EJôJ%÷/ś%úć±§ŰÌ̬1¶‚İ€_Wąxt˙úSkł ĎŔłř¬=||5YĹާE‰«é¸#ÄůđËŘ'Vńź#‰”˘TĘHŽ!#9Ű*Mx࿇äČ[zĺT.$†ú?Ő¶-śŞˇPBbŘ•§ZďËBĺâAJdĄ%•Ú¶TÎŐI($1)B[ĂúřoţNď$˙ŇŹźj\±pv‘Hąz ™© OŻÍ>ĎâłöđńMŽ .ö>-J\–.ĆÜń‘Ďł˘x$‘B”z–.¨3 %ęvŻ•#âĘ]ęü74júg7vĚĐ•10± Z§/qkÜ#sż“…˙ćˇÄÝ>“ŻľęďͤJ‡6´™˝…;>—ąđCoZLň%ęş掯P¦† §—~Ĺ˙=ŘWk‰{çéŘT4!-ÂN%`Ű84u±ŰVÓaůή\H¨ßĎTé0ęď˝Ăá)}H¸§=Y¬?đW %~KßEˇ4 Ę›ă(ßňmL¬!Â?śđsâőńçěÜkgĽş.¤ŚweJ çüÚžşDőa Ą•ŰŹ¤BË÷1µ…¤pýĎą„ťýM»Ď]=I ‹Ő[çqűÁŞ\-‹M%cŇáüşIX8Ů~.÷ÄÚܡ"Őß›IďĘh˛ ęú=.nčGzbÍ&śŔöuú ˇvŻ!ěŘ÷wg`[ą1Çç´ Ĺ$_\Ú‹™}śëVG“{˙äć®YEjGű0ˇÚŰ“)×´-F*?DdŔŇâ #YźçPąxžD…Vý¨öN/ŚL!âJ8×÷#-á5˙·•su˝ýc`bAŰYű >´‡ë}ĄW_aź§ýYüď%Ź.sőö©ŇŔ*'Rľĺ™Áý‹Á„ťŢF­žŁuďďGĹĺčŐžF#¦P«gŞvęĎ Ť ŚE!&×H !J=í‰"ş“ň ĄNPˇU".ďĺÄĽ„ž>‡{çN¨˛żĹW( i^\`[7wĎ&äČRcŕźQťąĽy(¨śÁĄ^sÂN˙‘i=Ľv§ÚoÓhÄ\ÂĎýĎĚ~\ýí[*żŢ{Ź6OÔ¶:3ť”h0ł+hO"+¶yMÚş`îP çÚnÜÜ=€:}6R®ůŰ\Ţ:ź}I‰ÁăĎI ŐÖ©44¦ů``lÎń9}9:ŁNÎTé8ˇĐý]«çZŞĽů>×ţü–Ł3úpďäźÔë?«˛ŢŮÇĂ‹„ĐËşňŹŰÖĺëĐl ď_ăřě\XűŐß›„ą#şz,]=Q(ÁľZ+ήĆéĺďçk+&Đ…XşyëÚ¶«Úś25¸ňóč·Ĺ¦bšŚů†”¨`ŽÍÄ…u_âńţ Ě !4 {źV¤ůÄ-dĄ%qbţ@άu7*·Ŕ‰y­8»b{˝Ćî­Pg¦céâ™»˛ß#ĺ[ľNřŮß90á-÷ţIő÷ŢÁ©Z‘Ú¨Űoĺ[´ĺň–řĚčGjĚ=Şż×‡Ä°Â{ä,]<°tłŔŃëuüáä·ă±pr¦ćg«tűÍŞĽ (şu*·Ú;?_}}žĹgíáă«ÝO˝ç5?[EĄ¶opĺço86űsŇâÂńúx´n(ßă⊺~„s«ľŕŕÝ9:ŁCˇ±!ÄäGJQęYşz‘”oąąă+( ŕÂş%Üőý€MŁB«ß1±v!1ü•ÚÁXĄŕčŚ7Q(”¨ś«c¬˛%éAţú2Sâ1˛°#ňę5ŇâÂ0łŻ€)řŻžÉýó`h˘Â»űřo^ĂÝăë1±vÁXĺF i±Ú,¦¸m$G$afŻM¤\t%)<‰Ä00µvŐÖůÚ0˘n¤tGŻö¸ÔŻĚˇ‰źŔĺÍĂqkt\w2ŞrvÇĚüľű’ř»—8:ŁmˇCĺkĽNŮĆî™Öźř;çH¸çOrD i ÚăábAč©€",#Ôď ţ›†ęÚQąTÇłëG$†^É=ơp~]O˝xň¶•y‹ô°®PW×ĂáńŢlBOěWŕöxt™ÇK÷8·ćzm[WřD7lÍëŁo‰¸r“‹`la‡©µ †¦h\‹2Żp2Óscss âň^@›üÂ… ß~ţOn^Aő÷ŢÁĚÖŤ¤ű×ŰŽ˝{+śë¸éíű€mă(×ě8 ˇ…KSąXšĘ™ĺ]t_6\ßţ uú Gˇ4 öÖI M?ǢL’îßŔČÂŽW^ďDŔ¶µzŰ“Ł Ď€…Sµ§ţY{řř>ĽO­+ÔŁlÓęř|=”Ř[§¸ňó(Ę69¦ĘW”żFv¤FCŇ›…Ć!„yá)#S”Ff( ŤQ( J:!ŠLŁÎBť™Ž:#…¬ŚÔ’ç?EĺbKČŃüź[şx QCč™mşeF¶@î0@Źş˘0€×ćýMF"$ÝŹăŢ©źą}hyˇíYş–ăîńßó<÷Dن˙=şe.ő»`jŢźô¦ú»˝IŤ¸ŽÍ˘;é}’¶“bf[€Jíscç\ëwÁÔĆC3+Ę7oĚéď§ŕÖ¨‘±ş$ ´˝v™)ą==‰aW‰» MƬâÁĄD^٧·żV¶É§<¸©;‘Ď‘3ÔĐČĚ›Üëu·Ěě+`űŠ‚+[WęŐ—žMV*¤Dß´×ůÜżř·^™‡Ű ŠĐÍđćTł#Ö• 9·fbŰbáT {wSŽÍś«·<+=™ôHOŚÂܡNµť'ĘÔđ!=âďÝáŇĆ„žţE·ŽĄ[ îĺ^źg`lŽ™=$ÜËíQÓ¨!ülîűĆÔÚ€”¨"µSˇŐçD\ŽŐŰ÷Ťš¬ŚÂŻŹ22łĆÄ.nŻ×c›™ŹB©í%J 3¬Ë×%éţ Şv@j,„]S`ťÚíyč3đ >k߇÷iĹWy%A—DöďpfjžžĚ"ÄeéęEBhÁĂ"…âQ^DJi`„ˇ™5JCă’E'˘P``l¦}d¦“™‡:+٤Ăzéĺś\t"©rő é>¨ó$¶–®^dĄCrT0&( ĐűFűq”FX”A¸‘«ÉĐ».ÇŇŐ“˙N~ófÁq?AŰÉX•«‰m•¦«ŕţůż°­Ôk'Ę7ďERDřďÍŽˇ:Wöë­ojí˘Ý_ŮÉś:+źŻ›ăčŐGŻvT{gU:ŕČÔWÉJOÉ׾ʹ ţű ŤOĺę  K·¬Üjä»FĆö•&$„ĺ>·t ż/ë•y¸-€Ř _śjż îď}Iđź|än‹vH]üÝ‹zË­+Ô#1,Mż:v |ôu3–n• =µ=÷yNlaą=jI÷Ať™–Űľ‹¶îäČ[”ń~ó±íX8U&ňĘ!˝e&VNÚRhŹTÎŚ}9×Ďĺ°©XŹ”ČÜxb±._‡č›>TlÓ‚3ßĎ@ŁÎ*°Î‚>ĎâłVĐ{ r÷©ĘĹ‹čGôÖ14łÂĚ67Ůz\\9Ď ë±BGy!®‘202ĹŘŇQ’(ńŇPclé‘iI‡ňŇS=bĆ2•‹ ˇwô—eCŁA“™02·Ń+ăÖ¨›®Ţ‡Y8UEa âŞrő$!ôž^ą¬ŚT Íôë5w¨DŮĆÝQ( ž¨mĐöH™Xj{'‚ţŢ„FťEJÔmŚUŽThő7w-Ň•ŐhŔÄĘYoýr-z"ű$XˇŔşB= M-ypi—·ŚŕôŇX8ˇ»nçaYii«ô–•ńW{íľpń =ÝDŹÝŮ'ë&Öąq™ŰŕZŻŽîd8gXÜĂł$>Ü@LŻözµ:ďbf7v|]čľĚHÖNon”'>S[7Ę6©«;YĎĘHEiĆfş2J#*¶€‘… íŐQ9ë'+*WO2’Đ }Sąz’p/DŻ}K7/Ârz•ßNfJ’®7%G•ăÇO}nhj©[fdnK…W;rďdnBx•ł;UŢGLP*÷/ě(tżřx굇ŹďĂűT“•ˇ·]•Ú eî±x\\Ú2&Ź)„…)ńDJi`¤ű'!ÄËĆČÂĄQI‡ńRSeÝIş#ßk–.îş“qÝ27/BŻÚŢűÂńüp¶UšbéVŹ.s©Őc(†fÖ¶ghj€E™*X9iëtőĚw"~îl+)¨Ňa<*gwśjv¤Ńđ͸Ô{_; ô ÚmŹ”©8x¸âŁz•u›25+ˇ0€°Äެ7•ŰŤ ţŔÉÚhŻŃ2łuCť•›=n?D'3Ľ?ýë uqđhK˝Ď·˘4Ęí5łtóuţ{E=Ü@l°†¦ŕŃe,7vü\čĚq!gI‹ź,ÁşB]kĽNAżąmÇ'-jő\‡UYol_iBýAżóĘ›źAv¨K,ňě3í5]™yžëO’S&áŢŐ"·s˙âNÜŐµAW¬ĘÖÄăýY¸Ôo˘M.â︍*WRcÁłË|¬+ÔázšŚŮMf*ÜÜ“;¤1öÖIl*»PľyC~)xbŽ~žÁgíáăűđ>˝qe×ŵAW,ÝjPĄĂx*·›ŚdHŤ +R\†fÚ¶Ěě+V9űîŢÉ#D]?B“1K©?h&‰ˇAźÓ™Ě”x]ą@_L¬!ü\±Á§ąß ú <‹ĎÚĂÇ÷á}ô÷BBŽÇ»űZL\ŤĘą:w|Ž’x/7Ů*J\7wî¤ňë©×ë#·[!¦(Â2Eže9ż+óüĚyd? łĆ€`Ó˘Ek߸¸xf`d*˝Qâ?!#)şŔ (bbb12zţ—*ŞŐj4 ŽŽŹ/,D)bdfM›Ů{ąôÓ7„žÚň\Útď< GŻöř|]zď?dWµ9ŤGÍçФŹHŽ .épŠDˇ4DŁÎÔ[Ölś1·| ťî^ń|EDD˘P(P*źoߍµµ5çÎů5b ČĚ~de?ÔyščJV:D]»Ď±Yýô¦űBg©D‡öĺ\ś,ÄAjöÍGó’ˇ}B!„xY˝ěCűJ|˛ !„B!„(m$‘B!„Bb’DJ!„B!ŠI)!„B!„(&I¤„ČCˇP°ě›™,űćkŠ‚ćbB!„˘„§?âEăíUťzuĽđô¨Ćĺ+×J8"!„Bń"’©Čź?ݎË{ťJ:Ś˙´¶­›é~oÓ˛i F"„B!^d’H˝d*–/ËÉĂŰ)ëćRҡ”: …‚Öy’§6­›Éđ>!„BQ I¤„ČćíUg'GÝsW'ŞU­\‚ !„BU©»FĘŮ© نöŁ~˝Zńńeţ·+HHH@eaÁĐ˝hŐ˘1F††\đ`É÷? h‡Ďý±}/ ęŐ¦vMOzôÉő›AT¬PŽűPÓŰ“¤¤$9Áе?éęU(t˙č=Ţďü&66ÖÝfÍú-÷= @§7ŰŇ·g7ľYş†Áź÷ ŚŁ=ţW®3mÖ"ÂÂ`llĚţ=hצ%*•W®Ţ`ö‚%Ý Ńmź‹SĎźFíš^$&%ńÓÖßůiËďş×+U,ÇđAÚ83228zěß.[C||o´•©Gđ릕\ľrŤ^F?ŰRJ}·` ë×ylą «ľÉ·ěĚąK ţĹłKŁg;Ťś^čëń!pdZcÜ}Ś÷§ĂŘ3¸ńsŚN•±ĘößěŕčôÄÝ>[hąö } řm%w|Öąî'YÇĄŢűx|03;81 ¦6®xuÁ±Ů‘\äzţ­š˙[‰•3~KŢynm>+­§űrôg‚ţ^Xŕó©µ Ż-řťŁÓwűLe,śŞŃdĚ.ošKŘŮßžs„BQ©ë‘š=}áÓnďłhÉjzôÁ᣾,5™F rOĆííěhצ#ÇOĺł~#P©ĚůbĚ`Ýëý{w§Eł†Śťô5|ŇŹ[Á!Ě™ţJeîařäŁw9ć{šľĆđ玿: ujŐȮߖßÍ!1)™Ă&0ţËYTŞXŽĹó§b``ŔCÇ0L{‚ßođ8†Ź›úlÂKŔÄÄô‰×544xŠ‘'|š#Sűsdj|çOŔ˙Çőşe§—} €ĘĹ„{š’ U<‚Ą›‰á…OěbdfŤ±$†ąŢ'YÇÔÚ…şýĆ|đg|f$6Č—ô¤(îž'üŽŽ *:†řř„§ąë_*GNbp˙|ř^§"_ĄŃhřsÇ^-YýŚŁE‘‘CF˛öýn[E{mŰ˙=$GŢŇ+§rń 1Ô˙ąÇ'ŠFĺâAJdĄ%ZĆÂŮ(ŢÉ÷“¬ăŇŕCR˘Đë)‰Ľ˛ŹČ+űŠ\Ç“°tń$!ôęCËŚą}¸ô'RNUP䇇ź? –.ĆÜńąňŻęPąz ™©…˙ßLŽâŇŹ˙U;{± !JN©K¤ÖnÜĘţ=iѬ!gĎűsôŘ)®Ý zµWŚŠÖ%Qjµ†]{čŐ‘3Ô.GőjUđň¨Ć?;6ë–)Đž\»ş:ŁP*155aÁěÉ$&ĺţłWYXp+8÷[Ę„Ä$]‡ˇˇ!FFF¤§§łuŰvćĎšÄÖ Ë8yú<'ýÎá{J(KŢŘ""Ł13Óöž¸W}…‹ţWuIh¦»ˇTwŻ˘KňÄ㥧§łpńJŽťđăËńĂqt°{dů8fĚůVöń ĘŇĹu¤DÝ.ŕµrD\ąKýżâŕá†F A˙ěŕĆŽş2&Tëô%nŤ[cdńw˛đß<´Đ!>Nµß¦jÇ/°* é‰rd'×wĚŤöË«rµđü`.¶U­ÉL…‹ëgŕŮe·Źh‡4•ńî@ý“9»zďŤĂŘ÷üνS[đęş72SŕŇO3¸a‡®]s‡ŠTo&eĽ+ŁÉ‚¨ë÷¸¸ˇé‰Q´äKÔuĚ_ˇL N/ýŠţ{p©÷U;ŽFĺ I÷áŇĆQ4żŕ‘Cę·ŤFvTw.uëbh±ÁéřoBüť ”ńî@!“Ů=°%ęLí^VekŇň«•ěű!)Ń!Xşz’«kSihBµ·'S®i[ŚT~6Č€¤ĹAFrlţ ‹±Nů–}©üZoĚ!9nî^ĘÝqôjOŁÓtĺ:­öĺĆŽżąöÇdZLňĺżö÷2ި÷ůdέžEő÷&`îńwŕěŞn$GéÖ·ŻÖd‰čm IDAT÷ÎÓ±©hBZ„ť>JŔ¶qh4jý¸ŤLé°ěŮ˙n(ŰÔ—ýc»•ž‚‘J;ě±Ů„X—Wţ›őß Em'‡‰µ3^]RĆ»2 %D„s~mO2’cžřýř¸÷ąĄ‹'ętHÎţl>üĽ(ŰaS±>ž]bSѬ49z€ß&h‡÷f·Z=űSµSL(xŻĄ«ĚÁ®š.qiÓ`2’˘ě/\“¨ĐŞŐŢé…‘)D\ çâú~¤%hĎ<şĚŶrcŽĎi íďFaźˇâÄ.„xq•şDjóĎrđđ š7m@ÝÚ5ř´ŰűlţůO–­\Żűgô$őeŃ’Uů–ÇĆĆSˇBY>ë7‚¸¸x˝×33łň­Ssüéüaoš6®OÝÚ5řrü0n‡ÜeĐIdff>výGuśh42téIśô;GźcřcëęB{¦Ôj =>Ařýçť(*íIůN J,śŔܱ —·¬ĺĆ?Ę·ę‡{çN„ťţ…Äđk(”†4ą4jέOVz2îďLĄĆÇ‹96»Yí•kŢ‹Z˙ëǵ?·sqý_X8ąS«çhŇŁ>¸ ëňuh:~9w|Nđë:L¬śđčňćŽč†kYşz`]ľÇçuĆŞlMťFďŽÜŘ9‹ÎŕńţlĽ»OŇť¸š;T¤ůÄ-Ü?‰óbdnK­_SąÝ®ţ>  TÎ`lŮś«ż-ćęogIŽ ¦B«~xuíĹ•m‰ľ~›ĘŤ©×h 1ěęmَ‰ŠfăvˇÎ„ł«'‘ž‰ű;Si4|&ĽJVz –n^$ÝG—D¨\=ÉJ”;ŮÇ΋ř;çuŻ×í· »Şnř˙´€Äđk”mň)ŐßëC½Â{¬Š˛Žg—y¸5n˙¦y$=¸‰[ŁnÔę1°3żye»ˇŐ”C„ť=ŔőíÓĐdečögŕŢÜc¦4Ö^GujńÇ(ŤLi8dŐßťÁŮ•Ýí‰s˝Ďżŕęo[ńß´K7/ęôĆËmňőli2ÓŮ?® mçţÂĹő«¸q'iqáŘUm@…V°íkŇâÂńúř[j~6‰Fî(v;JCcšńńwÂ9>§/ę¬ ęü*'đËŘ'z?ĺ}®rő$1]ňýđóÇm‡Ą«Í&,áĆÎ=\X»S»r4>›čŘĎąUßR§ď0~Ńťôě¤čaVĺjŃlÜ î_ ÂwţW(ŤĚ¨Ősµ{®ĹoIgí±uńŔŇÍÇä×ń[< Ľ»Ď¦ćg«tשi{µŰU”żŹú …ř¬-RěB[©J¤ đ¬^•«×o˛í÷ťlű}']ŢëÄţ=Y¶r=WŻâ`o‡›«3÷BĂíuSĽŰ‘GŽYđŞk7i٬á÷#t ‰••%^Ő«áyŰ!wIKKÇĹ© WŻÝÔ­W·v BĂXgA*U,GBb{÷fďľĂüüëÝđÁË…ŹËÎqőz ^ĄR©hgkCů˛®\żˇý6T$TĹĺíĺţČá}JĄ/wI¤^`–®^$†ĺ[nîř ¸°n w}ŕĆ_Ó¨ĐęwL¬]H żFĄ¶C0V)8:ăM %*çę«lIzż>ĐöÂÔčÖŹË[7qk˙bâď^"#)Z÷ÍuŤO–ęw˙MCuë©\ŞăŮő#CŻčbN…khŻĹŚŚ€B1Ť»ľ‰¸ü7—˙Ƶˇ·®ŻŹľ%âĘM.n€±…¦Ö.šBJ´¶gÜĚ®<¦ŕżz&÷Ďk‡«ěńü°\ĆÝătń:Ő쥛3YéÉO´ŤU;MÄŔ|f¶Ó ‡:ż®'Ż» »j-‰đß›˝Ťw:Vž$†ˇ;‘¶t± ô”v—˝{+śë¸qdZ]r°mĺš'!´ŕáOEYÇşB=*¶mÁŃi˝IŽ ĆĚ®<ÖޤĹ:3M›€g¦cfq·Ď ÎHŐîOű BbXî1K~çÖüO×ţ˙SX•­ €ˇ‰ ďî_ŕży wŹŻÇÄÚc•#5¤Ĺ†ć‹]ŁQchjĄ=ţH‹ ĎnÇ4đöî;¬©ł ŕđ/!a†% Ë˝Ü➸ęîpÔUűąµÖ­µĂZ[gk[[G]µv8j«­Űş÷½.QöŢÉ÷G E}îëĘErňćĽĎ99 çÉ;α9Ý ­¬·wĎĄĆŔ‘(JLL-óT€ĆĄ"ŕ;wQ÷Îp`j C—ʧ9suś»V&ú~Ć˙ÍĚŹsłż=|H‰‡ëżD§ÓěÇöQ-IIÔOĄ¶*BBÄ>̨ăQUű,"řR€!ٸň÷×Ô:S R“âѸZŔÉźş~ą¶q5ŚBˇ4A§MĹÚÍ‘‡¶<ń{ăIź!mrB®bBĽÜ U"eanÎßLaÇîüąv++Z·hÂŤ´ůNź=ĎŮó—™1e"?,XFl\]ßę@ł&őŘ˝÷PŽë]·~+]ŢjĎäOFłfíFT*úő˘¨“#=˙7śřřVýő/Ť†J­âćÍ;T­âÁ2cöü,]s2aô0T*ćĚ˙™„„Dş˝Ýř„ď?ČŐë×­ßJ×·Ú3ĺł±ü±z–|0¸/×oÜâđ1}W‚ĐĐ´ZujW'%%ENţsˇu‹¦O.Ó˛ »ö|ѧˇqµçqkWtZ<ů·a™ÚĘČččŃĄ; hůÍv’c öA$Ç×pgďOŮÖĺZóm´)pgßBŁĺ!Wôß%±/«ŕŇź‹ŤžOŠ #5âĂŇZbÜ)UfX8BLZ‹Ô“ľ7rózRěB—_ˇJ¤bbc6úSF íÇ’ůúYnŽűž1 ţ×juŚůh #†őcú”Ź0U«9wá2?śHhÚ$ Ů cĐřph?ć}7Ą‰’cľ§>&ŁËÝÂĄĂţ˝qqvâÁĂf˙°(×IŔ§_ĚbäýůfÚ§Xk¬¸|ŐŹ‘ă>'<"2WŻ cЇ1ę,üq&ÉÉÉ<|ś9ó6ڛЉŤĺűą‹Üż7˝şżĹ;=ĺ:ľ×‘µĆŠzukë'”ŘNll=şu6̨ؠ^m¬5VDÇäÜ˝H SK,˛?ŃÖ¸yč»–Ąµ0€ţä%5íÄŐÄĚ … ś6‚[ÇsUźĆµ1©FÝŐ2łq×ϲůčř*ű˛ő‰Î4ŇÚnnżéqe´)ĆżN[»U&:ŕşáľ6 ¶ ËyEz‹IćجÝ<‰ТMI4ާLeśŮűTۨ2Ó`n‘™’ĐwŰR@ě«únqnŕ·ÍxÂk÷bÜ=¸ÎP0ś4[9—!ä’qLf6ÎŰ“c‚›×X»VäňßëđŰ–óěh6î^h“Ý˙ĆűÓÚnţwŢx{ÜJpďČ?i÷+|!ścsÚćXĎŁ4®•őÇE¦îŮW˘Î=RŹ'ŃáO]Ź65™ÓáäŮ'ĎVTč<”r퇲JZ7Ě<Źą9Îő-5ťÖ˘÷čăÜlGěkěţ¸ Î5:ăX±95Î3=8˝´ŹażDÜÎyěŞĆµQ÷Ś÷§Mńę$ÇBRl(öĄëĆI4€]©Zćč[-mKÖJ+s1WßOú ĺ&v!ÄËŻP%RW®Ţxě5|bbc™ţÍ\¦37Űç;wëźíňŰwď1öă/ł}ô'Ř+ţü‡ţ“íó›¶îbÓÖ]FËNť9Oݦ ŹĂÂ#<őŰëČ.¶ˇ#?6z|ë¶?#ÇOÎqkÖmbÍşMŹ-#ô7¬‹©Z č'úţÍɱN‚•›×Ü?ő7Ą}|p©ů—Š”h2:ÎĦxµLÇ…—ˇµĹ°,Óţ4Ľg™Ž3+çň(L2ŢŁ Ó˙b_ZAąvѸTÄąj{ęŽZ…k­w˛M˘T6¨­ŠčP(01łÂĽYŹ[73C˘“×z(¨;j>žÝżCăęCŦxľ;‡Ř }ěOs<ćć87·s×˙µuE©2ËňřIŰaU´, &~K)źáh\+áZëĘ´ęN oĆ÷´ĘBY8”Ěv˙†ű&!ŞöYmÉZ8VjNýq»Đé2ĆiÜ))‰y —3oáň”ČŤ«‡ľűUjrÖç\˛éZćV˙Ck ŹĎüŇŻ?Pwäw(îÉáŻsî˛uď'}CĹ7ÇS¶mâCŕöžuÜüOźś¤ÄGá;o"^=gŇđŁDŢMĺâę‘4řh^F—&×ĘÄ>łµ[9‚Nm6<¶*ZĄ*ă„:5)žcß Â«ç\}ş„”xxî2§0´úX»Â­ťĆÉQčŐ}\Xů;ĺÚőˇTs‚/ŢĺÚ¦éx˙$ÇVž'm#ŔąßăŐóGjźBa7"84#cÂmJçW,¦ŇŰhđŃ‚ĎßăöžT-6ŚřŰ€~üKÉćí©?î7vŽŻÇí]s1·sĂ«ÇhP@ŕńcřÜŽcĄŮĆ äę5·vţĘÂŻžaj1÷áÜď?pleĆţw/Á˝ĂĆ=2ďĎěßłĘiÝDőc™"ďśää˘ŮT|s:˝IbřŢĆŤÍÓrŚ˙ÖΩÖ÷sšLţ•cŰbéT0n2ł.ŠZ“q,䵝N‹ďÜ‘xľűŤ'ýBj<Ľp…S‹>ÖO˘đÇcnŽóč{çşuGĎ`ß˙ËňřIŰuď*đÉ&RŇ®,.Ä«JŽq!„BWOO®MM&96 µU‘‚E|—†65ą ĂâٸzŁpkE*‚Ą#(L :˘O— q!v]ŕa¸ď[Đ !„(`žHľ‹ź.:•…-J•iA‡#Ä3Ó¦$‘)I”(ÜěĘ đz= :’‚§0+g°rFQĽ „\Dwa9DÜ,čČ„BďÚ—N›šLRLɱa¤&ĹËtѢĐŃiSIMŠ'96ڤI˘DáćꍢéLI˘râč©ß?®Ţ‰BňR´He–šś ó…˘ Ů•AQgüëŮ…//&(ęŚG·o˘´L !ÄkčĄi‘BńrPx˝/ITn)LôűK!ÄkG)!„\˝Ą;_^9zJ?!„x I"%„Â@áÖŕ…×édmBďzś¬ o+XAě7!„ëĄ#%„ąŐ©SGşty›ŇĄK“ššĘĺËWX¶l9ľľ25őS+R1OĹW (Jyg5Ż cוř'–·łT˛}´+-ľ˝Ot‚–aÍlh_Ő’’*¦mŽxް \÷›BÂO)!Dˇ4hĐ@PP¦¦¦Ô®]‹š5k0räŽ=ZŔR–Ž/ĽĘżNư6íď‹´°Ź#5K1msëĎŐ~··T2á ;ę—5',6•{˘˛-×ÚÓ‚÷ę[SŇAEHL*ű®&°ô@41‰Ů×;ľŤ]k[±úx ßí4<ţqW$Ž:VłD§ĎÄ2wş´×y¸ŞÖÜ–*î¦Ä'i9ăźÄ‚˝Qř‡Ą ÚUµä˝úÖł7!2^ˡ ,ŘExś–uĂś)fŻ˙7ři{;5±¦ýŹAOµ B!^?Ň"%„(tbcc9yň_}5…ロͻďvĂÖÖ?ż›řűű̱cÇ}˛’®eËlŢĽĹ(ˇčŃŁ;Ť7âöí;ŘŘŘĐ·o:uę@ůňĺYşt1őë×çîݻܹs‡úőëóóĎK([¶ŚQl9­'ŻńL™2P@íÚµX´č'z÷îĹť;w033Ł}űvôęŐ€Zµj2uę—”.]Š˙ţŰŽŻď 4¨Ď‚ó°´´@©T˛xńB¦Ný’V­Z>Ő>Wßvs …‡A‘©LxĂgă–7kX1őÍ"¸Ű©8x=ř$=ëjŐĄŠ<Öů®·†ĆĺÍąš‚Ť…’÷ę[Ó±ş%努YňžŢĄĚ8ăźČŤŕZxX°ä='ě,ő˙Úz×Ó0ąŁ=vJ¶^',VKçęV|ÓՀݏŚéÚq)>ß·A!Ä«K)!Dˇ4qâ'lŰö©©©4nܱcǰaĂ?Lź>+++6lŘd$.4jÔĐčątˇˇˇtëö.ýú `ëÖmÔŻ_€~ýŢÇÔÔ”={öŇ·o?úöíÇľ}ű133Ł˙~ą^O^âY˝z #FŚḇ”/_ŽÁ‡0bÄ(V®\ €——~šň *ŕçw“iÓf0nÜFŹÇČ‘cHJJF«ŐrćĚYÂĂĂąyóé.ëénŠ—»)Z ý#a+Býg(Öć˙F” ÖĚ€/6„1}K¬!8:ďRfÔ*e–§:CcSé¶čý–łőBőËĐż‘5¦*úĆ0éßp>YĆ®Ëń±RŇÝ[Ŕţë |öO~ fę¦p&ü @Őb¦X›+™·;ŠSw¶9‚9;#ó}„BĽş¤kź˘PŠ`ҤÉ|ýőlęÖ­C hÓ¦­Zµ$99™É“§°˙~˘˘˘)W®,%J” RĄŠ››sîÜ9îÜąc´ľóç/šš Ŕ•+WiŰö ,-ő­•+W`ÇŽť†ň;wî˘iÓ&xzVÎőzňŹźźľK^PĐ´Z-ţţ÷¸˙>jµ€C‡3dČ <<*±cÇ6®\ąĘąsçٰa#))únn#GŽ~ę} PÚQ˙ď" "…Ë÷őc™.&™‚»ťţą˘Ö&†Ö ôVźĚJ9¨¸ń0÷ă Î$“šÖHwő~2m˝ŔĘLß&T­¸ľkgŹ:zÔŃd©Ŕ?,…˛NjzŐŐPĚ^EY§Śy¦ŞěŰ–rł 'n'ćz„BĽş$‘B:ĄK—˘aÆ„‡‡łyóvîÜĹÎť»8zô(Ó¦}EŁFŤHJJfűöítéňŤ7ÄËË ČÚúu«K•Ź–}ÜzňO^Ü˝{—®]ߥ}űvT«V//OĽ˝kÓłç»ôęőţţţĎ´ţĚ”Źä™*2=ľ2ÄĄK»”[ZmĆţ{ôII[÷âýQśľ›dô\Dśţɉmíxł†)Ľ‘ČľkńŚoc÷Ř:ó{„BĽş¤kź˘ĐŃh4Śů!“&}JµjUP(†–Ł„„ڱ/éIJť:u¨WŻ.ńńńěر#Oő]şt 0Ű”~˙ŇĄËyZW~Äó¨ŞU«Đ±c®\ąÂ¨Qch۶AAAXXXP«V @?ŮD›6­Q*źîk˙f°>płUáĺ®o ňt3ĹŐ6ă÷¸Q©„§%1J…‚“w9y'/wSÜíMOÖ‘9·4y†˙@—őÉ“™*Łž"VJ*8«IJŐWŇĆKß8lEł˙‹Č’p¤çj¦ŞÜoBŇ"%„(„Îźż€ŻŻ/ŢŢŢ,]ş‡bnnŽŤŤ~lËŠ« e/_ľŚźź Ô`ăĆÍÄĹ=ů±™-[¶ś&MÓ˘…żüň3 …OĎĘ$&&˛lŮ/yZW~Äó¨âĹ‹3dČ âăăٵk78;;“””Ä©Sg “M¤w1üďżíy®ăR`çď%QĄ)óz:r10‰ŠÎj"㵆®pZ,;ÍŘÖ¶Ě|§Go&ŕ 1ˇZ1S‚ŁSŮu9žŘDńÉ:,Ô fwuŕłžj›—ަQysú6°¦˘‹~Öľ¦ôaśH‰IĄ¸˝ŠŹŰŮsăA2Í*™ŁŐBć\2 <…Ú%Íč×Đš*î¦|ľ>ü‰Ű „B€´H ! ©±c'°té2nßľťť*•šóç/đĹ_˛rĺ*ٞ›6m6Ü߸qcžëş~ý:áرă”)SšŇĄKqôč1l^űěîŢőçťwşt8/]<™)Z-+炣đ‰}€nǰ‚ŽB!^*ÁÁ!(ЧîVţ´lmm9}Ú·$I@JÚ-5í¦ÍtÓeú›ţ‹YćűdZf ]ű„ČÄŢŢŽ"EŠ`ggKDDdG$žE•*^ :„Ę•=ňÜ ďUŹ'[aW%‘zaW :!„/XˇěÚ׫WvěŘĘÁ{±±±áÝw»łmŰfĂ °OËĹĹĹpßŮŮĺ1%EaP˝zuŞU«JDD?ţ8ŹÍ›·Hí[’$ %í–švÓfşé2ýŐĄ­&ó}2-3źŘĹk-11‰¤¤$¸~ý†Ń”ú:tňĺËQ¬X1łż®”B!„xýH"%^k!!!ěÚµ;ÇçµZ-WŻ^ăęŐk/0*!„Bń˛{ĺĆH !„B!Äó&‰”B!„Bä‘$RB!„B‘G’H !„B!DI"%„B!„y$‰”B!„Bä‘$RB!„B‘G’H !„B!DÉy…yV˘D‰‚A!„/ČÝ»w :„—’$RB<“/T!„BĽî¤kźB!„Bä‘$RB!„B‘G’H !„B!DI"%„B!„y$‰”B!„Bä‘$RB!„B‘G’H !„B!DI"%„B!„y$‰”B!„Bä‘$RB!„B‘G’H !„B!DI"%„B!„y$‰”B!„Bä‘$RB!„B‘G’H !„B!DI"%„B!„y$‰”B!„Bä‘$RB!„B‘G’H ńşuëP§ŽwA‡!„B!^b’H ‘‰˝˝EŠÁÁÁ;;Ű‚G<WWW|}ŹŇ­[×çVǬY3XżţlllžXvÆ™5kĆs‹Eč˝ůfgÖŻ˙‡C‡ö3|ř@Ţާ§ő¬Ç›““#ß}7›÷±}űV¨RĄ »wď OźŢy^_~oó›ovÂ×÷(ĄJ•Ě—ő !Ä«ä•H¤z÷îɦMëóôg–,Yȱc‡>|ćććlÜř/Ěő:ľţz‹-Čńůwßíζm›)R¤HžbÇĹĹĹpßŮŮĺ1%Evľúj ľľGłÜţůçď‚-_ŮŰŰcccŤZ­.čPPĄŠź~ú111ŃüöŰěŰ·(ďÓ¤IźŃ A}6nÜÄĘ•« ĹŇŇ++«§ú1çŃm.^ĽľľGyçť·ó;t!„xí© :€‚2nܬ­­4h($%%±gĎ^.\¸ëu=z +++ĂăÝ»·3oŢÖ­ű€«WݞgĎ^bccň=~ń|8;;8sőęŐŚ¦đ±··ŔĎĎŹřřĂňTHĎĹС`jjJ|||A‡"&OžÂŤ~†ĺ…á}Ş\Ůýű0kÖ7†eÇŽÇǧ±±±y^_aŘf!„xUĽ¶‰”łł3‡áěŮs†eß}7'OëHOrrúôNź>óTń‰ĎÎÎ âăăQ(XZZbccCTTTA‡Vh)˘O¤&Lř»wď>÷úJ”(ÁĂ©YłJĄ’˙ţŰÎĘ•«ł-ëĺĺÉ A©RĹ‹¤¤$.]şĚŇĄ?sńâ%Łr 2FŤbeeĹíŰ·Y˝z [¶l5”ůâ‹Ď©SÇ›6mÚ–YZZňÁCńńiŽŤŤ gĎžă‹/ľĚ6µZÍűď÷Ą}ű¶8::rďŢ=vďŢĂ/żüJrrrŽŰű曝řôÓOčÚµ;·oß1,ŻSÇ›ůóç2zô8<ŔćÍ9rä;wîběŘ1¸ąąňŕÁCÖ®]ËĘ•«ŃétFënŐŞ%}úô˘téŇÄĆĆrřđQ~úi!ÁÁÁ†2_}5ŹJŚ;ńăÇRµjâăăٸq3 ."%%%ÇŘóZŹ——'Ó¦Í`ĚQ”-[–Á‡rćĚYŁuµháĂĚ™Ó ŹW­ZŔĉź°k×î,ďÓ¬Y3hÔ¨!ďľŰ @˙ľýő×jÂÂÂéŰ÷hµÚcĎĎăíĎ?WR¦Lš7o†ŻďQnŢĽI÷î=)^ĽëÖýÍĚ™_łví:@˙~oĽŃ†1cFÓ´©Ź!®˙ýŻ/]şĽŤŁŁ#·oßaÉ’źŮ±c'nnnlÝş‘áĂG2p`*UŞH`ŕ}fÍúš#GŽ˝¨]üZđö®ŤŁŁc¶Ď=@©TR˛d 6lĺůĐĐPŽ÷}Ţ!Jé-RaaaĎ˝.–-[‚Bˇäß×…ŹOs&NśĄlŤ57ďüýýůő×ßP*•tčĐ%K1xđ0Îź?€­­-żüň366Ölذ‘ĐĐPęŐ«Ç”)“)Z´(Ë—˙šm,JĄ’yó~¤re¶lŮĆ­[·đňňdîÜ9™™•U(|óÍ,ę֭æM›ąyó*”gŔ€ţTŞT‰1cĆĺŰ>ŞT© 6`ŐŞ? ¤nÝ:Ś5ľýö{CąŢ˝{2räNź>ÍŇĄ?cggOçΩWŻ.ď˝÷>!!!†˛ćććĚš5ťmŰţcÆŤ´háCßľ}HNNbѢ%ŹŤ'/őŘŘŘ0mÚT¶lŮÂşu˙e}/^âóĎż GŹwńđ¨Äüů xđŕa–ä8ݬYßP«VM>úh<ÇŹ`ذ!8880jÔŘÇ&Qů}ĽÍť»kk _~ůIIILť:ťččÇ÷^¨X±"ŐŞUeőę5¤¤¤Đłç»Lžü9<Ä×÷D–ň›6m!""‚pöě9Ö®]g8Öíěěřĺ—ź155eýúŤDD„Ó¸qcľúj EX±bU¶1lÝşŤ7ß쌏Ź˙˝Ö°\ŁŃPż~=¶oß!I”âµQ詏>OëÖ-™6m·nݦM›ÖôíۇŚ.Æ ˇ[·®L™ň%·nݦyófüřㆠűť;wrěŘ1ţřăWŽ=ĆĽy ŽŽÎ¶.GGGÚ´i͇ŽÄÄDĹŚ_ńůçź2dČFĺ‚iѢ5»vmgţüźX·î“˛¬ď†Ň˝{W¦OźĹŤ7hĐ >łfM'55…Ý»÷•›1cAA9r8ß|3‹–-ßNůČÄÄ$ŰĺÉÉÉÜ»w…B«« ¦¦¦YĘ(Šç^ˇ¤P(°łł#%%…ľ}ßăŤ7ZcnnŽŻď ľűnŽŃIr~2dVVVôéÓ×ĐťëŹ?VňÓO󳔝8q~~78p0‰‰‰¬Yó7ţą’#†3pŕ`Ă:ťť‹ňţűýą|ů2żţú;3gN§]»¶¬\ą’¤¤¬-FíŰ·ŁJ/fĚĹşu˙–ţ}űö1*ۢ… 6ŕăŹ?eçÎ]†ĺ~~~Ś9ooo|}ó'QŻX± 2´ĽďÜą‹ÄÄDşwďĆ߯ăÎť;8991lŘPöîÝÇ„  -U›7oć÷ßĺ†2eĘW†u:;;3}úL>ŔŽ;ůí·ĺtěŘ᱉T^ë±±±aĚq8p0Çu±uë6ěěěđđ¨Ä–-ŰxřđaŽĺĂÂÂřöŰďůňË/hÖ¬÷îůÓµk~ýő7®_żţŘ}™ßÇ[zËá„ ăصk7[·n{lýžž•iÓ¦ťá‡ŠĂ‡Ź°aĂ?tčĐ>ŰDęŇĄKDGG1pŕ¶nÝfTÇŕÁ±¶¶¦WŻ>Ü»ŔĘ•«™=űkÄż˙nȶkáéÓg ˘uë–F‰TłfM155eË–'o‡BĽ* ŐdVVVĽőVgľűnŰ·ďäúőĚ›·€Ë—ŻĘXXXđŢ{˝™4i2»wďĺÖ­Ű,[¶śÝ»÷đî»ÝHLL"$$Ôč–]Ňú_™żřb ·oßÁĎĎŹĄKÁŰ»v–i­VKHH(ˇˇˇ„„„še]ôéÓ‹ďż˙­[·qýú ~ýőwţúk-0*;oŢΞ=Ç=ű{¬­­ńđ¨”{P¤;~Ü7­k”ţd.44”={ö˛sç.bbbŽŽf×®ÝěŮł—ĐĐô÷S‡żż?'Nś,°¸_fŤ•J…JĄ˘E .\¸Hrr ­ZµdîÜP©ň÷w›¦M›pŕŔAŁ11)))¬X±Ň¨\™2e(S¦4›7oĆÂÂ;;;ěěěP©T>|„ęŐ«ann@Ë–-8tč°!‰J7iŇdşu{7Ű$ ô'‘‘‘‘üűŻń¤7ż˙ţG–VŽ–-[Ή' ±ŘŮٱk×n@?ý~~ą~ýşQ÷e€U«ţDˇPФIcCějµšeË~1ęîwă†{öěĹÇÇĄ2ă_E||ůîÝ{ä8VžĎńV˘ŁŁ‰ŚŚ|¦·nÝĆâččHłfMą~ýşQ·G!„xŞ1R±±q¬]űŁGŹ uë–”/_ŽáÇQ¦LiC™¸¸8~˙}ź}ö1oĽŃ†rĺĘŇĄË;,X0—Úµk=×ř‚©V­ĄK—Ęň\||<+V¬bôč‘´iÓšrĺĘҧO/şv}‡%KžÜ?_aóć 9ŽmŮ»w66ÖtëÖĹhů˙ţ÷ż,-Ű·ďŔŮٙΝ;-oÚ´ k×ţEÍš5rÜćôä§Q#ăŮ$sşŘj±bĹhŐŞĄŃ˛~ýŢG«Ő˛˙öěŮKrr2ýúÇZ®\Y||šł{÷nRSSsŚ)·^T=O2tč`ÜÝÝ™3g.sçÎĂĘĘŠ1cF=ńuĎăx{Ň»ˇ?ÚâşcÇ.||šS¶lŁĺŁFŤdٲĄŘŮŮ?*•Ć­›Ű¶mG§ÓѲĄµjŐ”Ö(!Äk©PµH|óÍ·$$$đńÇaeeŦM[Xştď˝—13ÖĽy ŚŚdřđa¸şşô€™3żfăĆMĎ5¶ŮłżcňäĎhßľ-ť:e=±™;w>111ŚĄ˙ďÖ­ŰLśř©aąxńÔjNNNh4Ö¤O(‘’’B©RĄ \vrrB­VZDV:ťŽ#F3pŕZ´hŽ——'!!ˇüý÷Z–,ů9Ű.]ĎbѢ%4nÜź~šĎĆŤ›ŚŚÄǧy¶cOfĚÉĽy?˛rĺďlÝúÉÉI4oŢśJ•*˛}űvCą… Ó A~úi7n&,, oďÚx{×fţü9Îśąuë6Ţ~űMFŹ…§§'~~~T­Zď•ݵk7ä“O&âí]›+W®âîîNçÎą˙~¶c´Ňť={Ž;wîĐż?ÜÜܸ}ű6uëÖ%99űqIçĎ_`üř±Ô©ăM`ŕ}ęÖ­C­Z5ů㏕řűg´śĚźż€QŁF˛hŃO9r{{;:thODD$óç˙ôÄ÷"7^T=ŹăéY™ž={°bĹJĂŮE‹3zôHvíÚÍÁ‡r|íó8Ţ^„ŕŕ`BBBčÚµ &&&ś8q‚+W®˛hŃb6lŔĎ?/aăĆÍ<|řjŐŞŇ´ivěŘIDD÷ďëŹß~ýŢgëÖm:t€Nś8ɰaCQ©Tü÷ß‹Ý.!„xşD*%%…ďż˙ďż˙Áhůš5îët:~űí~űíŹ×Ó»wß,ËŢxŁáţúőYż~ŁŃó'Nś¤ZµŚV­I“&gyľcÇ·2­#Đh:ťŽeË–łlŮňlc 4Zşě–‰ü‘y¦±¸¸X.\¸h (čUŞxˇŃhP*•-Zôąw-ěbcc™3çćĚůáÉ…źŃčß#F §cGýgw۶í,[ö M›61*{úôú÷Č AéÚő,,,đóóăĂGqôhĆ‘‘‘ôë7€ˇCÓŞU ¬¬¬¸uë6ź}öůcOµZ-~8Š>J‹>řř4çäÉSŚ=–üި¬N§cüřŹčÓ§7:´ŁyófÄÄİ~ýćÎťźí„™ë9r }4ž-|‹‹cÆMěŰ·Źúőëg)ÄŹ?Îe„q´k×–2gÎY."»bĹ*> ¦Oź^ôë÷>qqqěŰ·ź ćë´ő/Şžě¨Őj>˙ü3‚‚‚XĽx©aůęŐҶíOěâ÷<Ž·A§ÓńńÇź2aÂ8†ĚożYrĺĘU"""x˙ý~ <źćŘŰŰô€ďľ›ĂęŐ^ďë{‚Ť7Ó˛Ąööö†D ô? Ô©ăͱcÇe"!Äk)»‘˝Ź.SdZ–~_™éoúÍ$í¦J»™jŔ®qăfG##Łň=x!ž•ŁŁ#ŐŞU% €ë×odéZ¤T*)_ľĹŠăěŮsů~˛ZýâĎĐjµčt:Łé‹Ĺ«eó捜={–O>ů¬ CݍęŐ«±dÉ"&Ož"]ű„Ů AˇP<öňĎ­­-§OűÖ"€d HI»Ą¦Ý´™nşLÓ»ĐdľO¦e…®EJüňŘ®•Z­–«WŻ=¶»•BĽŽÚ¶}¸¸xöîÝ[С!DDJ!„ąÖĄË;”/_Ž7ßěĚŠ+‰‹‹/脢@H"%„B\Q(Ľ÷^ĚÍÍXż~ .*脢ŔH"%„Ż öí;tâ¤ÓéčÔéÍ‚C!^ …ę:RB!„Bń2DJ!„B!ňH)!„B!„Č#I¤„B!„"Ź$‘B!„B<’DJ!„B!ňH)!„B!„Č#I¤„B!„"Ź$‘B!„B<’DJQ¨ąÖzźGiżč(EĘ7ĆÍ»;­fĹұTľŐŃ|ÚQĘ´ťoë{ž¬śËÓň›Ł¸Őîšë׸×íAŰůG[Ć­vWÚÎ{|!„âu’]"ĄËĺ2!„(Pć¶®Ô4žŰ{Öppú0"n%)6”{Çöz÷©ÖYńÍ/iüYF T™béŃó+ěçJ—šĚł§»q(ׯѸzô„2n•‰ľ˙ŚÁ !„…C®ň!Ő D!ž WďnćÂÍíß–…\ÚIČĄťO˝Nk×ĘD^1<¶*Z…˛đ$Rq!·9˙ǰ<˝FăęAlĐÍ'–‰ąĺ±e„B×I~$RşL7!„xîś<[Swô—†Ç–ĺú¦í\ý÷sv”‡ô÷˶Kąö]Ů5ˇ%)‰1¨Ě44üx'Ń·8µ¸‡Ń:•jsÚ-Ř ýăb ޞkBW4®¤ÄsŐö”iÝ ň‡ÓKzűđ†áőšPńÍŻ°+eFb4Ü?q€Ë„N§ÍŐ÷ˇq©Äᯛ–™YŃbĆ.îěűŹ«ë'cŞqŔŁË,\jxˇTßŰ0·uÁĚÎßą11ł˘íü]\Xů;ĹôÁ¦8lűЇ ťżŔľL=Ďj€BiBą¶Q˘I'Ěl!řBA§×ăŮc0ۆ×ŔÚµ8÷OíŔ«ç\Š7ôF›ţ‡d”˙\3IDATrůď‰č´)ú2nĄ8úŹQĽ:L½^3Ô–ĺźĘ…U#ĽsRż?U¦”ď0‰ŤZˇ¶‚č8űë˘üĎ<Ă;/„B<ł|Ë]žvŚTNK2%„xîB.ídËĐfÄÁŤ-»Ů2´×6L…Ť Dč[Źnď]€6J6@őż“š g~ů_–uęR’Řő‘~\Ńą_—°cě›Ä‡ůcíćĘŠViĎŮĺăńť7KG¨řćW†×:WďDÝŃ_tú_NÄ•u?P¦Mc<|˛Ť?Üď(6ĹÍ@ˇ0,+Ór$~ŰľAeaCÉ›±p(…ďĽń™=‡ŠÍp©YťŔ X»zŕćÝť+ë&±wRoR“âŇZÔ2ZĎj řťâŤ:qńĎYś:ř°»xtLL ţy…Ň+g(٤ɱaš1ó+ćP˛i#J·řШLtॴÇ*ęŤŮI‘ňŤ9˝t"GfŹ %! Ż?ę­ţżĺ¸ÖjĹ©%Ůói7bޤZß…ą}‹…Bç!_sgm‘ŇařýöŮBÜŇé´’„…DŢ9‰69 ‡’CĚ}ý jR<×7˙AŮ6˝ŃiS°+éĘ©ť ĺ]§Ę܀˻IŚÔҸzűNĚËĐştúm4.•P™i¨Ňű.¬ú™{‡ĹĚÖSŤ:-$FfÄ­c¨,cĺT–؇7P[ÚSöŤN\^»ś”Ä*˝=€ă?´C›’ŔĹŐŁh2yˇ!™±vóD›'ĽCRt°aÝÖîŽ_üĐ·ÜąÖ.ĂŢO{ě§_ĎŞQ¸×=lH¶,ťĘ˘0;ű·suýd˘îťÇ±b3ś«wććŽď±t*R1÷/PşĹ‡jÚ…B‰ĆĄ¦{bfttň*õ +˝ş€3Ëţ‡N›š›·W!„xň}ç5FJ‡tůBüŢcשqM›™N§˙ľŐ·¶ŔŤ-çŤĘY»—Ŕ˙Đş´:+|!ścsÚć>xťŽŰ1Ř”¨Ačő”nŃŚS‹g Ó¦`bfĄoi»}Ňč%öeë&|°vóĚ2†µ[e˘ď§·ZU"řŇ.Ł2ć¶®X8@LZ’§qó >’ă"ŚĘŮ•¬eXŹĆ­2±A Ó¦bbf…ÂNAÄ­ă9nâ…U#ąwÄ›˘UŰáęÝ• ť»rhć`˘üĎć~? !„/±gąŽ”î‘űŹfz†Ç:i“Bä3kw/bŇNîÓiÜ*ŃęaU´ŢĂżáÔ˘ď÷ÓRľÝÇŹ_§[ebŻ[8”LkőĘHX”&j¬ŠBLZ“šś€ĘÂÎh=–ŽĄ)VŻ7 ĄIŽu…űAăęAŮ6㸓DĐ™őú'Ňľ0Íl]ŚĘ—h2¸`HMŠK‹ŐŃ eŢţäX Ýu:0ł1^OńĆýA‘©eËŐ•™>iLg_¶>•¬8¶R_—«Ń÷oë×™’:P[oł{Ýžh\*úýnéXšŰľ\Ű0…CÓ Ó‚CĹf9î!„"ežé)»ĺŃ<ć©äÇy D‹q3šV§ÓęŠG‡R !ÄÓłv÷":ŕşń2·Ę†îtj«"Ôů÷Ž%Đw 7˙›M)źĆŰËqť* ÔVEô BĆŐ]*Ä>ČH®¬ś+ 0ÉHD‚N˙‹}iĺÚMDăRçŞí©;j®µŢyě [ǰ-áJÉ&Ť¸ü×xĂňÔ¤8BŻ&Pˇă8VňÁ®Tmjô˙ Ť‹1÷C€´.|Ždé:híćIL`ŠáńĂó[qŻëI±z˝±)V…rí>¦xä&@|żţ5®IMJ]fbS¬ îu{Pgä÷Ü?q×0ŤĽą˝;J•ćvnhS“yp6Ęݾľ\¬Ý˝đčú5ŐŢĘÂŹwfRkČ*lKÖ¶d-ĽzÍC©‚‡ç6ç¸?„Bü P(Đé ›ś„|J Ňĺ5‘Ęm§ËôW›šŞŤW*ó#gB=k÷F㣬]őM(U¦xđńˇŃ\Z3€ű§˙!ö!Tě49ÇuŢú{wE^Çqü3łÓnw)Ky˛=Ĺ;ĽD!ᔇrň?ghŁž9cĚEŤŢŁ&Fń!—h‚Ç=Hî9˝„÷^˘ń4=(ôŘXJ)‚śp´\[şŰvwÖ?¶ÓNggvg·ív)ďW2ŮŮ™Ůýý6„ßß|çϿ҂ű—hËŹ_R]¬IóÇMŘŮQ׸«”‘†n]‘”ovqö…g´ěáÚň“—´úó{tíô:űüî˘óďëyK±ĹҍΫďŇ©IçŢ>ü†ŢІ'¦Źĺ€ntľˇÁ˙ľ7©Š$© "5˙ý«4p}˘zvńŘĎuőä9­ţÂ7´á[‡TKčęÉ×'=X·±EúçŃ_(ľxą6˙đ>¶ë)ýë/Ňۇżćú™×´tŐ}úč®˝’¤sżţ˛ú˙Ó­Ö§žŐćďÖ‚ektrďÄRżÎß~S©ľëÚřízř;5ď}ŃÉ˝ONZ† ŔLDL™fîŠ&§0ÝúĘľ—*¨Lä=n¸Ž9ű¦ç52¶oŤmucŰüuëZ_1 ăÁááĐ×w[uuŐżUѶmĺr9-]ş¤ęcOÓŠjëÁż©ýŔOuăśíé7oľ+Ă0TÍ‚J4U}}Ý‘d˛ăI’FǶĚŘfKĘjr•Ę]˝’üCUAČ*çW}™ß«{đL:ťţ»eŃ×ŔÔ%>řVnýž2é|›r‡eYşÓ®|h’ łIĐ«Ţ RażŔ/<ą×!Ú’F;;“/¦™cy€©hXřmţÁóşoí§Ô~໲3Ăł=%P#LÓT$bővwwµ)_…rň_V‘ĘĎ<“LG™ČýP^oĘŽm#©Tş#­_›J>ÂH÷]Ó±Żnśíi€ŤFeŰŁż“4˘‰â SŽŞ5›đ»+hˇ{­ˇ¦Ň—/_ŢcYV. n 岬ęęę{/]şř˛¤´ C”ÓÝ/ĂT˛*éÚtĚ=AŰłeúún^ü},ÖPć@uµ¶nІ ëg{©ˇ!¦T*őěŕŕ`ź&šJ¸7©t'ż˛ŞTĹ‚T©/*–ćśI:%µŚ¤T2ŮńôČČČ…x{89Äď9·ĹşóyžŻ¤kź_éË[•r/ís˙ˇ3gN}릒ǥ†©çžűĄ’ÉłÚµk§ďů•+W(™<«öö¶ńcŹ?ţE%“g}·x<^Ń<07µ´´Śď77·ął-ŹË˛Ě?$“ű% ir!Ç»´/lž ĄTł w#‰ óŢ}wUJcźw·ĽsútŰöuëZŹ66Î{0•J+›Í†ťŻ¤ü3pvěئW_}­ŕÜöíŰ|żďöí÷ôÄ_+8žNÓüš››Ç÷[ZšŐŐŐ5‹ł€ËЍˇ!&ĂĐ‘sç:öKşŁ|“ ď󢂺öM©%•ßµĎ VΗžsŇD€rdTČ>sćÔg׬ůÄžĆĆĆOg2cxxD¶íý¨żăÇOhË–OjĹŠęéé?nš¦}t«Nś8©Ť['}&›ÍđŹbŐÔÔ¤X,¦T*%Ă0ŹÇ•H$Ôßß?ŰS€ň˙ŢŹFŁŞ««ďM§SűÎźď<¦|r?t×[‘ ęÜ'UXŤ’©bU© ÁĽĺłŚ|îźJ&;~´hŃŇCË—čéyóâkmŰ62™Ś2™¬lŰV.ç˙ő×®]Ó… ÝÚ±c›öíŰ?~|Ó¦G”HĚ׉mA p[ż~ť–,Yâ{îťwţ'Ó4őŔ÷kÓ¦G ÎßşuK§O·Ďôîy†a(1‰X˛,K‘՛ˍíé9˙ňŔŔ@Żň÷De•RYMn{îÜ#UIEŞd¨Şä9R»:ĺfkâţ« ‘”íí˝y±·÷ć—$ŐŻ^ýĐע[˘Ńč˛HÄŚ†ižgY–b±¸Ţ|óŻÚ˝{§^|ń7˛íüRľť;?ٶ¶·Ć§´`AB’ÔĐĐ Ă0Ć߉Ä|ůݧ7:šQż C˛¬«ľľ®ŕšááĆiűł”ËĺdYÓń8·rÇÍ˙GE"Áß 03FGGe† ŁÜFáăě\N·M3w%›µ;‡††Ú»»ĎW~ ß° ĂSĐłŁÂ<”·ěçJ»˙©Ôµ†ëŐ»ďŢLĎ~ÄőęÝ·$ŐąŽ›®ĎyçPÎÜÔ&żľ ~Ϧu–ďy«NîýrTP ŞĘ #•†)o¨rB’;0yĎI“C{ŚJç vÝłäm`çíŔçX~ÝůŠ-ĺ›r’*o6á}v@Űu˝łySĐľT¦RŔÝ+¨ ą7@í{—ń…ą'jĘ!JŞ<«L9Ża*T~K˙Š][llwŹ  S,…Yş¦5Ą%UÖl¨’Ę”sť{ËyöĺsŤ4ůáÁ„)ŕîU,ČŘ®cŢPTÎŇ=ż UjěЦ#€TZťňž3‹÷Žă7oÂPűü‚KPĂ ç˝;źń*”Űt…Ź0aĘűZjß ÂÜEjWPxń RĄUĐ4#!JŞ|iź—{Ižű}9źw/óóűN‚pw«$H…y­Z€rĚDđ(Uťň;ÔŤŻÜ) v… Rî÷~¨Ô˛˝QŇĚŹbÁ'l°*öŮRă¨]ĺT¦ÜűaÓŚ†(ifH©†ĺ„&šKsSŘćAűĹTб)«F Sť*÷\qÔž0ŹL z_éąiW­đ¦˘&8–€ą+LE)L`šŃ%U7„ FÜÜ»Â6¤(çŘ´«v8)6 €Łś@ćÜ´šŤfĚJçEčjWĄA'Ě窢¤Ů ĺŚM@î儢Ş(G-”Z€»Ë¬(G-…Zš €Ú4«ĘQËᥖç :j"8yÍĄ°2—~ 0WŐd0€{É˙#4ěš—´[IEND®B`‚mufeedali-Wordbook-c0cb87f/screenshots/light.png000066400000000000000000002506721505534671000221260ustar00rootroot00000000000000‰PNG  IHDRRŠ7-tEXtCreation TimeThu 14 Aug 2025 10:29:30 AM IST”˝†® IDATxśěÝwxĺŢĆńďÖ„„t:‘"E:"Š ;vEEĎk;vE**vŃŁ˘ Ř=VŠ *M ˝x ” Ţ۶÷Źe—ôBĘf“űs]sevfvć·!${ďóĚó€˙2řş€ZÔ^‹Hcĺňuµˇ!‡Ź†\›ÔŹĽRXiHµHĂÔ ‚UC/ ˇń/> Tľ 1Őą¶Â–HÓQťä“@ĺ‹€R•kžh] \""""" ׉†žŞ<Ż^U}ŹŠ®WŢ>…#‘¦§Ľ`TQ`Ş·0Uź!Ą¬kUu[EŰEDDDD¤ń¨N€Şę¶ZW_á¤*©˛Çĺm‘ơ*Á¨˛Çĺm«UőL* H'şŻ*ב†§˛SQP:Ń}µ®.ĂGe-J† ¶U´^Ń6ń/•µ(U¶^Q*o[ŤŐU©JKSEŰŞ¨*Ú.""""" OUîŞ(4U7PŐzŞ‹R^Ş,8U5X•ő¸˛í"""""â{UH˘˛ŕTÝ`UѵOHmŹĘBTYÁ©ş_ËşNeŰEDDDDÄ÷ŞÓUťŻ•SŮő«Í\Kç©N€ň|­lÝXÎsËş^eŰEDDDDÄ÷N$H9‹(»…Ş˘zDDDDDÄ”fŠ.%“‹âĘ;8K_•ëÖ¨eŞ:AęDCTÉ®{¦"_K®› ĹVÉ{§Ę«GDDDDDüOyM MŔŘŹ­;Žm7Yw9GyˇŞä˝R'¦Ş¤*ëÎçYŻ(@ LE Xwíúë˙"##FšLĆh—ËĐĚĺr),IŁ–™™Att´ŻËip ś@şÍćŘź››˝uűö]ëGŽO+”NMMűJ!JDDDDDj",,üÚŚŚŚé@0î¬aÁť=Šf‘Ęć©-O…ű+ Reť¨¬ąśŠî+Ů2ĺi‘2AIIÉ ťNW´B”ÔTłfA&%%Ý Q|4đ’Ł€W5ĎTIEŁöUµ5ŞčzÉn~E_Hł}űLSK”ȉ+,,¤  »ÝŽĂái•® &“łŮL@@V«µ6ĘôkŰf°ő`SóÉȵăÔď+)Ń` ,ČL‡Č@zwˇW‡0_—Ô¤………_»qăĆťýű÷_Bń&<Ł÷9)ž_J^žrGđ«é„ĽE·ťď©Ô}R×_?):$$äb§łŞsd‰‡Ýn'''›ÍVËgváp8p8`±XĆl®îŻ˙—’Ë·q‰ěOÎóu)""âś.i96Ňrll>EL‹4Ć÷kEtTŻKk˛z÷îsßČ‘#YµjU!î{¤ą¸„|˛ň &k«Ö)JJJţwűömçٸç›*kßĘFń* :QAŞhżĂ˘!ĘŚ;DY°””´µN§SoIDЍ,HŮívŇÓ3¨żĺa <<¬I´L%¤äňÖ˛8].ú´äěî! O""R-N,ߕŖCů nŐQ-S>b0j±XƸT!ĹGňó„©ŞÎ-UrÝ«ĽÁ&Ş;QoE­T–ť;wÝć™lWDŞ.''‡úQ®c×nüľŤKô†¨Ń=˘DD¤úŚÝ#„>íqş\|—čë’š,—‹ČźţeîžqE›(k´ľęfžbŞóqsEó–üZ´@sTTÔéŐ¸ŽŕîŇWű÷DUťÍfٰ°°QwńŰv0ýÉy„š8»{ŻË?wv÷öĄŘŘźśÇ¶ęâW„ű~l÷{‡ĂŽÓéţ Řh4`2™±X,X1™L5ľVŻ^=+Ź=,/)kţ¨ŞäťRŞ3Ź”ç„eÝ;UŢ… €Ńĺ24«ćuDš<»ÝîëD ué`j>ť[4ŢV7©_žż)žż1MY~~>iiéŐú`¶  €´´tňóOüűg±b(=oTYĘ›KŞJޤŞR@É~FÝ%R}îy˘TC]ĘČuĹ Ć?¨FMŤwľŻKń žż)žż1MUnnŮŮٜؽŢ.˛łłÉÍ=á)IÂ)#“Pµˇ*«É»‡Ę\ť‡§Ťăčßż_]_JšŁGyá…ٲe«÷>%‹ĹBßľ}ą˙ţ{iٲE=TŃşĂ6„ęŽg˛ÝŞvë;pŕk×®çŔäääDLL C† ¦cÇuX©ř Ďß”¦<ˇ{~~>ąą5´*77ŁŃ@```µžçrk,*ď–$W‘Ç'ôŹĺ·Ăfdd––@ff&ˇˇˇ>®¨ţ­\ą €3ÎéăJź^x‘?˙ÜXl›ÍfcÆ Ľüň«<őÔLUVśÝngţü÷Y¶l©©©UzNTT$ŁGŹâşë®iĂ›×§ÓÉwßýŔşuë‹mĎĚĚbË–­lٲ•ˇC3nÜ9ŤµŃĐ/""âźŮٵ7ňovv‹ĄVˇ¨muő.ެákUbb’w=))©Q©ÂÂBĆŹż€wß}‡Ž½{÷nţď˙î`éŇ8rä(O<ń={ö¬§’¦cË–­|ůĺg„„¸GsKMMăŠ+&˛yóf_–VĚ‚đé§źWë9))©|üń§ÜtÓ uQVŁă Q‹…ÓO?ŤSN9…ĐĐ222ٲe żüň+k׺CÖřńçÖčZ_~ůK–|Ă»ďľ]ĺç$%%ó /±cÇN.ąd'^Á?ţq'ŁFťÍ5×\UŁzDD¤a;őÔ'ôĽ5kV×r%nąąąÔnŹąąąŢ÷cŐPçy¤¦Aę„F¸¨ IIÇTbb±±±őqŮŁuëV\sÍŐŤFZ´ŞŇs,xź >`Ô¨łyôчë¸B˙rĎ=÷˛mŰöRŰ/ľř˛RŰňňň=úďăŢ˝{óňË/Ôi}ĺY¶l9·ß>™đđăC¬>óĚs|˙ý7e>gűöÜwß,]şLAŞ 8ŕ Q7Ţx=ŃŃí˝ű"##8㌑ÄĆvá˝÷ŢgíÚőôîݻ޻ůÍťű6ŮŮŮ<óĚS´nÝ «ŐĘđáĂčŢ˝[˝Ö!""M›{óÚń·  €   š¶J•—[N8őťhŞĘČu&##“üüpą\äĺĺ“••u"IŐo ź˝ vą\ ŤküáÄ»cůň[‘’âîÎW4DU¦gĎ“‹=W*¶nÝN?ý´b!ިččhFŚΊ+Yż~}˝©¤¤ŔÉ'÷đn»ĺ–IőZřF]µ,ť‚‚ ÷Źw>˝zőäńÇ#,ĚýŢ%33‹'źśĹćÍ[ĘýŘsî  ^Q†©v ŞŤ®}uÚd·‰ÔÔ´2÷µjŐ§ÓEBÂ!ÖŻ˙ŁÔţđF;EFF&—^z9‹NóćÍŮ˝{7óć˝Çöí;°Ůltî܉«ŻľŠ#Nă…^â»ďľÜ­Ë–-gţüwißľ?˙Ľ’O>ů”ýűÄ©§ĺ–[n&,ĚÝ]ň–[&łoß~îşëNľţúk“7ďm®ľú:śN'˙ůĎŰÄÄt`ŐŞ_9óI"##Y´čCżą_ÄÓ˘äiiZşô‡ ŹŻęqâ˙öďßŔ)§śRáq§śŇ‡+V˛oßţ*źŰn·óŢ{ďłté2ňňň5ę,Ú¶m[ě—ËĹgź}Á7ß|KFFť:uâšk&2xđ –/_ÁěŮîźÝť;wňńÇźňĐC÷söŮgqýő“¸ě˛K¸đÂóůé§ĄĽ˙ţGLž|3óć˝Grr =ztçţű˙IëÖ­˝×Złfďż˙! iѢ%çź?ž .ltśHÝđ ĐUžŽl۶ť‡~Śgź} ÁŔŁŹNeĎž˝tč]…s×ĘŚJEłKŤú 6řwąî »JłXĚ´mŰŽvíÚaµZĘ<¦)Mś““Ă>† pĘ)}5ęlöď?ŔŚO°cÇz÷îUěř±cÇÄ˙ű-O>9‹={öŇ»w/řî»ďůç?ď+5~˙»ďľGnn]»žD‹-8pŕOž0ĆŚí7!Ş"Ë—Ż(s]šŽśś\BC+nńöܧé9ľ*Ţ|s.?ýôwÜq;ŻĽňaaa|öŮĹŽY°ŕC>ýô3n»íVćĚy™áĂOĺńÇgđÇ1â4.|źV­ZqÎ9cY¸đ}FŚ8­ĚkĄ¦¦˛rĺ/Ěś9ť9s^&''‡W^yÍ»˙Ď?72s擌uŻ˝ö*7ß|#|đ |Pĺ×#""M›ĂQńďO=5“víÚ˛oß>~ř1~ř1öěŮKëÖ­yňÉ5:·/”Ő"ĺłűžĘŇŻ__öěŮCBÂ!\.w+SĎž'ŕ=fÄÓ(((`űö¤ĄĄc0@»vm9餓|UvŤÝtÓ-Ő:ţČ‘#äää`2™xŕűçĽóÎĹfłÓ‰“O>™ŁGŹzď‘zčˇp:ťĚź˙>˙řÇíLp!ąąąÜ|ód<ČO?-ă‚ Îó^cĐ <öŘŁŢO§ÇŤ;‡őë7°jŐ/\wÝ5äççłfÍZďľĆ`Ö¬g8űěłJ­KÓDff™DFF”{\ff¦÷řŞČÍÍĺűďäž{îäôÓÝ7 węԉݻ˙âďżîácżřâK¦LyˇC‡ĐˇĂeěŢý_ý öÇjµAddĺ×çt:ąďľ{hÖĚýiŢ•W^ÎěŮ/x»ę.Zô _|—\2áŘu˘INNaÁ‚¸ţúk«ôšDD¤ţ5¤Á&śÎŠ1Z´hÁěŮOóĐCʞoß>ŔÝĂĚ}Źoë ź[ŮąkYY­UĄ¶5ř±ŹŤF#]»v%22’;v’––Îşuë:tV«{ćčÂÂBÖ­[ŹÍf' ŔJŹ=ŠŠôqĺ5Ó©SŚ÷őäçpŕŔrŹŹ‰‰ˇsçÎÄÇÇsŐU×Ű…îÝ»söŮg–Űź4))Ů;dögś@PPC† âż˙ýŽ]»v R§ź>˘XźáÇB||< üő×˙((( WŻž•6ĎŠř‹cCśo©pŞÍ›·Đ±cÇ*ť7!áv»ťž={ŰŢ·ď)Ţ uđ`Lź>“ŕŕ`ď1999UľŽGóćÁŢŽÝnÇfłaµZŮĽy˱ţé?»@VVvµ®%""RłŮŚŐzĽAÄb±{ĎëO|ňŠŠbĐ üţűěv{±.N§»ÝŽÁ¨ö¤] ŃôéÓĘţĽ,fł™×^{…ĄK—±qc;wî⫯–đŐWKxôч5ęě×TrÎ!‹ĹÂYgťÉ’%_łfÍZvěŘ 4žÖ(€!CłeËV~ůĺWbc»]úC‚X˝ú7 C‡®ćŠŕUV—ä9s^.Őµ°¶çłZ­ÜpĂuŚ1ĽÔľćÍËx†4 i° ŁŃPaËQZZ?üđ~č~đ`Ź<2…Ůłź®°g…ŃŘđî×ő«›X233qąÜ÷*8N6nŚcÆ?°Ůl„††ŕrąGţhŠŽ9Â’%ß`łŮ™:u |0źłÎ:Ŕ;‰¨gd:ĎŤ€-[¶ 2ŇÝr·j•ű?annžwŕŽîÝ»WzÝqăĆîű+6lřŔŔ@Î<óŚÚ{a">Ö±c†ŚÍfă˝÷ŢççźW’šš†Ăá 55•ź^ÉüůďcłŮhÖ¬QQU›Ž C‡hĚf3qqĹç%Ű´éřăččh¬$&&Ňşukď’„Ăá¨Ő×Ů­[×R×ÉĎ/ ##łQÜď(""uĎdŞřCľ©S˙ĺ Qłg?ÍěŮOÓˇC4&0uęôťŰ^E8z4»ÝÁúő뽉wÆ?iÖ,đŘ1GiŐŞĄĎjô‡ĂÁĽyďbłŮřóĎŤ„……˛ví:ď íÚąG[łf-?ü(=ô7Üp/˝ô oĽń&ż˙ţ;˙}ÄÄD:tčŔ1Ł*˝n·nÝčÜą“7¬ťsÎŘb݇DO+ëÚµëY±b%+V¬,¶ß`0ĐĽy0ŮŮ9Ľűî|nşé†b]ńĘҬY3Î=wďĽ3ŹĐĐ:tfĺĘ_8pŕ ‹ĺŘ1\|ńćĚů7v»ť¶oßΛoľÍÝwßÉčŃ5oiö¸ęŞ+™>}&‘‘‘ :ŁGů÷żß˘oß>Üwß?kí:""ŇxY,l¶ň‡@ßłg±±]xňÉŢÖ§ŮłźfęÔéěŮł·Ňs74~¤ěv;)))€{T,Ď€fł™’››@JJ v»˝Ö»˝4tíŰ·gÎśWxë­ąüůçź8ťN:věŔ%—\Ěرc8óĚ3ظ1Ž_~YÍ–-[9tčoÎ;o<|úéglŢĽ…  fśsÎXn˝őć*w‘;v,o˝5h|Ýú¦Ly´Ěő†"**’””TŇÓ3Ş<—”gâáŞNä,î{5ÇŹ?—>}ú°ví:öďßONN.ÁÁAÄÄÄ0dČ`˘˘"yď˝÷ILL¬rşí¶[ŕő×ß$//—łĎ>‹‰ŻŕóĎżôsĂ ×Â{ď˝ORR-[¶ŕ˙ţď¶Z QŕţŔĺńÇă>âĂҬY3ĆŚĹu×i  ‘†¬! 6`%77§ÜýeÍÁ믿ZĄs74UˇŻčQžuc‘ŻžĹtl1[¬€ONN]Sӡȏ9Âöíî{p‚‚šŃ˝{w""Âw—ż;vz‡îŮłmÚ´©Ńő¤ęľűî{^xá%Ú·oĎüůó|]NŤ\yĺŐ¤¤¤đĘ+/Ň«WŻ2ŹŮ¶m÷ÜsQQQ|üńG5ş^zzşw®’’““+}ţ»ďÎçăŹ?=ˇkOśx7Ţx}ĄÇµhŃâ„Îďűx÷ŽŞťVěśśoj۶-·ß~k­ś·!7îü 'J‘ă^Z–ŔSWž\ç×jHA ++‹‚‚‚Z=g@@!!OCR’Őj9Hl@!`?¶8Ž-Î"‹«ČWOh)şN‘m^~ÓlcµZ±Z-´iӆΝ;a2™ĽűBCC|ÄoGţđ7;vě`ŢĽ÷صk7×^{µŹ+Şą1cF±hŃ'ÜsĎ}•;věčz¨¨b×]w K—.#%%µJĎiŃ"ŠŃŁG5Š݆&88oĽŽ?\äťĐZDD¤.5¤Á&Ŕ=tAA!5śë¶AAU›Z¤ľůMŠŚŚ,w˘Ipw˝‰ŤŤ%66¶«jÚ¶lŮĘÖ­ŰhѢ×^{5cĆř>XÔÔŤ7ŢŔO?-óv%-)**Š1cFqĂ •·ćÔ5łŮĚM7ÝŔM7ÝŕëRäŕŕ`&OľŮ×eř„Éd:vßpíLťŃĽyp±”†Äo‚”4Ý%"R5žż)žż1MUPP3š7oΉ}(k yóć5ě‘ ÷»$?ÖFžl5ÔĄ‘îOąâ“ËŞUDD¤:<S<cš˛ŔŔ@"" ¨ňsoĐ-Q R" Tu~é4ćęRďî€âň©`"v‘*qşÜSŕřߦÎd2BDDAAÁX,Öc˝»7ŤX,V‚‚‚‰ $$¤ÁŢURăţ¸YÄŹY­ÖcŰŮ|r}‹ĹŇčGŔěŐ!ŚiěOÎců®,F÷Đ=9qËwe‘•ď ¦E3zu¨ÚüŽM…Éd:ÖUŻaw׫µH‰4`î ]}qłŞˇŇÉd‹ńýZa4Řr(źĄ;łÔ2%""ŐćtÁŇťYl9”ŹŃ``|żVľ.IęZ¤D0łŮLhh™™YÔß~BCCýýQŃQALÖ–Eżfˡ|öĄŘčHçV"‚ĚÍODDĘätą–O.$.!ź¬|F‰ĂÚŐ0ç=’ÚŐ4Ţ)‰ř1«ŐJxx999uŢÍĎb±ÜdB”GŻaÜdá۸Dö'çńË˙rřĺ5˛UDDš–Í߯•BTŇ´Ţ-‰ř)łŮLXX………`·Űq8śÔĽ•Ę€ÉdÄl6ĐčHtT“GubŰÁ ¶Ěâ`j>ąvś.őő‘ŇŚaAf:DŇ»Cî‰j‚¤DüŐjmŇa§>ôę¦?†"""R) 6!"""""RM R""""""Ő¤ %"""""RM R""""""Ő¤ %"""""RM R""""""Ő¤ %"""""RM R""""""Ő¤ %"""""RM R""""""Ő¤ %"""""RMf_PRÝEľÍ‰ÍáÂátůş‘*3 XL-FĚ_—#""""u¨Á)›ĂEvB»Â“ř'‡ÓţómN¬fÍLXL T""""ŤQčÚW`w‘šcW’FŁđŘĎt~¦EDDD%ź)›ĂEz®Ý×eÔ‰ô\;6‡Â”Hcăó •]ŕđu "uJ?ă""""ŤŹOTÝĄî|ŇčÚ]ęâ'"""ŇČř4HĺŰśľĽĽH˝ŃĎşHăâÓ Ą{G¤©ĐĎşHăâÓ Ąy˘¤©ĐĎşHăŇ`ć‘‘Ć«  €•+áđáĂDDD0rä鄇‡ńŰożsäČQ.¸ŕ<,‹ŻË©2)©ĐłĎ>Ç—_~…Ńhä·ßVUűůYYŮLž|;ńńűĽŰúö=…´´4îż˙!\.ąąą\{íŐµXµHÝR‘:µxńWŢŐ»w/Ú¶mKLLGRRR &''‡víÚú¶H‘jR‘:µoß~, Żżţ*DEEňůç“““« %"""~GAJ¤—ËĹĚiS0Óž…Á`đuIőę×_ăťwć±gĎ^ZµjÉý÷ß[î± Ľóλ¬_żžĚĚ,ÚµkËąçŽăÚkŻĆl6ł|ů ¦L™ć=ŢfłqĆŁhŢĽ9K—~ĎţýűąňĘk¸˙ţ{ąüňKůâ‹ĹĚžý<?ţř-oĽń+VüLaˇŤáÇńŔ÷^¬Ž/żüŠĹ‹żb˙ţX,fúöíË-·L˘GŹîuđqS)b÷®ťl۲€˙ýµ›®ÝšÎ›ńŐ«塇ĹétĎy•p|„ž=O.ul|ü>&OţYYYŢmű÷ŕÍ7ç˛eËVž{î™×óěłĎ±lŮ ďăĄK—‘ČÜąox·=óĚl/^â}śźď~ëÖ­ă•W^˘˙~5®CDDD¤,>ţĽ¶|»ä+îľý–j='%9‰™Ó¦pÝ—°čp÷í·ňŮÇ ë¨Jńk~]í]_űŰŻ>¬¤ţÍ™ó:N§łŮĚcŹ=Ę'ź,äşë®aóć-ĄŽ}îąČĘĘ"22’ Ţeőęźyčˇw«ÖŠ?sÖYgňëŻ+=zÍš5ă×_WňăŹßV©ž]»ţâÍ7_gÁ‚ytďŢ €Í›·đ×_˙`ăĆ8oš8ń ~ţy)_~ů)Ý»wٰĐćmŮ© Ť"HťůóŢ!7'‡iOĚâśóÎÇjµ2äÔS9©k7_—&>ârąXűűoŢÇk~ű—«iĚ˙”Ŕţý7î.¸ŕ<:věŔm·ÝZŞ‹\rr27Ć0iŇŤtëÖłŮĚ%—LओbřůçU L&&“ Ŕ»n4Ví×ÎÝ?yŃĎ IDATwßAż~}éÖ­“&ÝäÝ~ŕŔAľ˙ţG"""¸çž» ¤m۶Lšt#ŕn5óĽ&‘ÚÖd»öĄ&'Ó·˙şuďáÝvíŤ7ű°"ńµÝ»v’ś”č}śxôűöîĄsl¬«ŞGŹÝ%S·nÝŘąs—÷ńÁ Ţ€ůüó/ňüó/–:ßáÇk\Stt{ďzTT¤wÝf+ŔégžĹ·ŢÄ.aÜyđó˛Ą|şčC®żé>\đ©)ÉśÔ­;wÜs/-[µö^ëŹőkůäŁ9t(-Z0vÜyś{Á…Mnóäô©lŽŰXéqßww©m˝úśÂô'ꮋ˛„’­pž{¦ĘÚĆ AJťŁmŰş…Żh™žî%………Őy"""Ň4ů]z÷íą¬ůőnľýÚGGóŰ/«X˛ř ‚‚‚ĽÇ|ňŃüřÝ·Ü~×Ý´kß ëÖđě“3xôńś:ü4úôíÇcÝGźľýxÍő—y­´Ô4~[ý ŹL›ŽĂádÎKĎńÖës:ăI6ÇmäąYOr퍓č?p0‡ňďW_"33‰×^_/ß91…'ü\‡ĂQ‹•4 mÚ˙p`çÎťĹöíŘQüqűöÇ[Šn˝ő.˝ôbďă‚‚ďđću-:ş7n$**’™3§{» zţ}<] EDDDę‚_Ý#•—›Ëňź~äÚofŘi#čÓ‰‰×^O—.'yŹ)ČĎ盯ľä˙îą—ÁC‡Ń>:š‹.ąŚ!§ă‡o˙‹Ĺj%<"‚đđcKD«µĚë9ťnżëÚµŹ¦CÇŽ\|élßşĹű‰üź~ĚyNŕü‹.¦}t4CNĆÄk®ăÇďţŰdî­ńWÓf>Ĺřó«×rh0}Îą<öŻ'ę°2ßhßľ=111€űŢŁ/ľXĚž={xĺ•×ŘłgO±c[·nEź>˝x÷Ýůl۶‡ĂÁĆŤqŚ!\p1_}µ¤Ô5j›§*%%•W_}Ťśś233yę©§9ë¬1Ü|ód jEDDD*âW-R˙}»ÝF÷“{ŰŢë”S8räoJ   €gźśAP‘–¦Üś˘;Tď^‰ŕŕć4kÖĚű84<»ÝŽÝfĂbµ˛}ë¶oݲź~(v€ěělBBBŞýĄ~X¬VnĽő6úĚŻľLjjJ…LJ……sű]÷0pđzްţÝ}÷<řŕ#8ďwfł™A˛aĂĹŽ}䑹ýö;HNNćć›'ŰŔ°a§Öy˝C‡á‚ ÎăëŻ˙ˢEź°hŃ'Ĺö<¸ŢZÇŞ+++›{yóćúş9A~¤Žßá*±ątëĎ3/ľR*ČLµűr­V+ŻąžˇĂ‡—ÚW^wAiXúöŔłźçÎ['•ŰŠh4yú…—iѲe=WWżN;m8łg?Ă;ďü‡˝{ăiٲ÷ŢűOţüóĎRA*66–÷Ţűóć˝ÇÚµëIOO'""‚aÆrË-“hŐŞU˝ÔüŘcŹŇ»w//^Âľ}űčŇĄ3—]v)çž{N˝ÔP]6›Ť‡z”íŰ·—ą˙Ç—2kÖ3Ěś9ť‘#ËDCDDD|ĎŻ‚T»čͶnŢDŰvÇďÓŘşyÓńcÚGc  )1‘.±Ç»ümßş…–­[S›b»v#))±Řŕ °° Ř6iŘţÚµłÂ®N§“żvďjôA `ÄáŚ1ĽÔ¶»ďľłÔ±íŰ·gÚ´Ç*=猏3cĆ㥶ÇÄİfÍębŰ.ąd—\2ˇÔ±˝{÷*u¬ÇE]ČE]Xi ÓédĆŚ'ظ±üN\.'ůůůĽřâ+ v*‹Ą+‘Şň«{¤š5kĆč±çđÁ{ďňűŻ«9°‹>XŔˇ„Ţc9˙ ĽóĆëüöË*ŘĎŇľcÖŚÇٱµôĢ5qÉĺWňÓ÷߲řóO9°¬_ÇłOü‹żýo­^GęÖŻ«VÖĘ1"•™3çu–.]^jű?ţq'“&MĆfł1fĚhbc»päČV­úĹUŠHUřU‹Ŕ ·ÜŠ5 €yo˝A^~#Ď8‹‹/»’oľúÂ{Ě•×\Góć!,úpÉIIDµhÁM“ogäYe‘|˘úöŔŹNĺłEń٢ŹlÖŚ3ĎĹW_W«×‘ş“““Cܟǻ­ FŤ9‡ ŕ ľůj±wč'''G]6ĄÚVŻţŤgź}ޤ¤¤rŹÉĚĚbĎž=|ůĺb®¸âr&L¸^x™+V2jÔŮőX­TUYC–•Üf(˛Íłn,ňŐłŽ-ćc‹°áÉÉ©kĘę:u4ÓVóW R«V,ăµ—ÝʶiŰŽŰ^}NÜ]ţŢó2 Ç&~˝óź÷Ő(Ś·-ÝE+==]Ć6r\pqą!ĘÓ]qéŇeLť:ťž={2oŢ\âă÷qŐU×ÝžĎ>ű¸>Ëi¬VË©@:` ű±ĹqlqY\Eľ”ˇd€)öŘďZ¤DjSXx!!ˇś5z4—_um±QŢşvďÁł/ľĘ' ?dŲź ŹđaĄâŻ*j‰ňđLjĽwď^Ú¶uO2žś\ńh’"""â; RҤőí?€˙|°°Üý«•kn¸‰kn¸©«’¦Ş:óš‰oůŐ`""ţ¦uëʇ‚_ż~=ŕşŕďżТETÝ&"""5˘ %"R‡}ôáJĂÔ{ď˝Ŕ¸qcذa'ź|rÝ'"""'LAJDJIOĎŕ?˙y»Ý^ćţýű÷sę©#8tčďJĎ5wî;ŚwcĆśK~~>“&Mf׮ݵ]rą–/_ÁúőT~`9őÔˇ|őŐ¬Yłš«®ş˛Ěc‚čÝ»&\„Óédńâ%śyćőYŞTî‘‘R>˙ü vě؉Ů\öŻýű`µZ˝"”gůň|üń§Ěń8íŰ·Çĺ‚;vĐ®]»ş(»”ÜÜ\fÍz–×_µ^®W™»îş¤¤¤RsIÍťű†wýűď`ďŢxÚ¶mËČ‘#ę»D©"µH‰H16›ŤĎ?˙˛ÜÖp©ŽŤ˙ ůᇟ5ęlFŚ8ŤÎť;±˙~˘˘˘ i^»E—cÉ’očÚő$şwďV/׫ŚŃhdúôiôďßżÜcL&V«•ţón,–ŇCć‹HĂŕÓ)“Ń€ĂYz~)‘ĆĆdôźŃŘ~řáGZ´bŕŔ$''óꫯńŰok¸á†ë8pŕť;w`ăĆ8ţńŹ;˝ĎżöÚ«1™LĚź˙ľwŰ’%_óÚkŻ0hĐ@ľůf±wűňĺ+?˙}âăăéС#?ü“'˙ůóçQXXČ­·Ţî=¶E‹|óÍb^{íßěŰ·ŹŢ˝{óŮg_ťťÍČ‘#:u V«Ő{ĽÓéä“O>ĺź˙Ľ»ľK'Îb±0{öÓÜsĎ˝eî3f4cĆŚ®çŞDDD¤ş|¤,&)i,&˙ R‹}ÂŐW_@NN“'˙đđpž}vAAAĽůć\vďŢÍĺ—_@÷îÝxá…ŮÜ˙CĚ™ó2'źÜfÍšqĺ•—3~ü…ĽňĘ‹ôď߯TëĘâĹKxůĺWąóÎ˙Ł˙ľlÝşŤ)S¦a4‰‰éÉdâ›osńĹ—3eĘ# ~*ńńűذáúöíËűďżË_ýŹ{ď}€0aÂ…ŢóŻ\ą ŁŃȧŐÓw®ęBBš3oŢŰľ.CDDDjŔ§A*Đb$ßćôe "ő"Đâ˝hׯß@zz:cĆŚ`áÂŹq:]ĽöÚ+p÷ÝwpÍ57x[¤‚‚‚ČĎ/Ŕb±0`@L&‡ GŹîĹZŠ222xĺ•9<ôĐŚ?€ŘŘX~ýőwöěŮC`` ůůůŘl6úôéEXX{÷Ć3~ü8®»î† L§NťJM|»páÇ\yĺĺ•v?9>}‡`6`5űĎ'ő"'Âj6ŕ'?ç}´Ë.»ÔŰz´xńW\zéĹŢxCN§NťĽŰöíŰGÇŽ˝! `Ďžx˘˘"˝¨¨Ő«Ĺh4z›Ghh(ť;wö>Ţ»7«Őęś"??ź#GŽ0jÔŮĹž—ššBëÖ­˝Ź·oßA||<çź^uż""""UâóŹj›*?HÄŹůËĎřţýűٸ1Ž . //Źääşv=©Řq;wîÂd2ѡC4çťw!˙ůĎ»ÄÇÇsÝu7zŹŰ»w/]şt)óZ{÷ĆŰĄTwż­[·• REµŹß‡Ëĺ⤓b˝Ç¤§g––Nlěńk}ôŃ".şčBš5kvß ‘ĘůďŢřr[¤†?•C‡ţćŤ7ŢbĎž=üřăR^~Ů=×SçÎť°Ůl¤¤¤˛gĎZµjIFFŕM%ĎOëÖ­˝Ý?ůäSFŽ<ťÖ­[ŐĘ÷FDDD¤, "H»e*"ČLx™@‹Ń݆‹÷ç#áAf"ü¨% ŕË/Óż?:uŠ)¶ýŃG&&¦#<đ0Ź?ţ/FŽ<ťÎť;y[‰^{í &OţŹ<ň î&ÜÝíŇĘm‘ęßżÔZ¤jÓŹ?.ĺé§źĄOźŢL›6…–-[úş$i‚ęŁEJĂĺ‰H­;v4cÇŽöu""""uN]űDDDDDDŞIAJDDDDD¤š¤DDDDDDŞIAJDDDDD¤š¤DDDDDDŞIAJDDDDD¤š¤DDDDDDŞIAJDDDDD¤š¤DDDDDDŞIAJDDDDD¤š¤DDDDDDŞIAJ¤„Ťăظ1Î×eHföu" IFFiiédffęăŠDDDD¤!ň«© >ફ®-µ}ĆŚ'=úŽ9ZlűçźÁĹ_†ËĺŞŐ:|/ĽđR­žS†ÄÄ$ďzRRRGŠHSćWAjŕŔţ$%%ń÷߇˝Ű\.›6m`Ó¦MĹŽß´i3ýúőĹ`0ÔkťâżŠ†§˘ˇJDDDD¤(ż R=zô ((¨X`Ú»7žěělÎ<ó ââŽową\lٲ•úű˘TńC™äç@@€•ĽĽ|˛˛˛|]–4@~uŹ”Éd˘Oź>lÚ´™sĎ@\Ü&:uęÄŕÁxď˝Ţc÷ěŮKVV–7HĺääđÖ[oó믿QPP@Ż^=™<ůVbc»đĂ?˛`Á\qĹĺĽ˙ţôęŐ“3¦“ššĆś9ŻńÇbµZ¸ţúëę˙…K­‹‹ŰDjjZ™űZµj‰Óé"!áë×˙QjDD8ýű÷«ë”Úî+"""ţK˝˝Üü*H ĐźĎ>űÜűxÓ¦MôéÓ›ľ}ű’””ġCÓľ};6mÚD«V­hßľ=.—‹©S'77—©SĄyóľřâKî˝÷~Ţyç-Zµj@jj*üńO<ń/Z¶l‰Ăáŕ‘G¦`6›yňÉňᇱmŰv†ć«oÔ§ÓYćv‹ĹL۶ípą\$&&RXh+uLS %_gSyÝ"""R>ÁPě=ASU~¤ěĎoĽÉߦmŰ6lŢĽ…Ľź6mZÓ¶m[ââ⎩ÍŢÖ¨M›6łeËVćĎ—öíŰđĐC0yňí|ůĺWÜvŰ­8~řA‚Xż~{÷îĺЦMk{ěQ&NĽĆŻ\jSż~}Ůłg ‡pąÜ­L={žL@@€÷#NŁ  €íŰw––ŽÁíڵ夓NňaĺuŻč/GĎzŃŕ©@%""Ňô LFŁŃ»Íóľ )*ż Rť:u"22’M›6‘ťťEnn.}űžŔ€ý‹ŰÄřńç˛eËVîşëNţúëDEEzC¸˙±{÷îÍîÝy·5oŢܢöíŰGTT”7DĐŁG÷ş~™RÇŚF#]»v%22’;v’––Îşuë:tV«€ÂÂBÖ­[ŹÍf' ŔJŹ=ŠŠôqĺu§d€˛Űí8'.——Ëĺ]DDD¤i1 E#&““É„Ůln˛Ę[¶nÝFVV]»vĄyóćôďďn­ŠŹßGvv6xîc)˙Ť_E˙ÖîŇĎŐűČĆ#**ŠAňűďk°ŰíĹZ^śN'v»@`` +­[ž_~žUXXŃh$00łŮŚŃhhRżEDD¤l.— §Óý~!??źÂÂB¬Vk±@ŐTŢ3řŐ¨}`ÇŽťlßľŁHX‚ţýű‘ššĆ˛eËéÜą3ááátíÚ•””T>\ě<[·n«°›V—.]HIIĺŔŢmůůůěÚµ«–_‘řRff&.„††ŕp8ٸ1Ž ţŔfł‚Ë™™Ťsô>—ëxr8äççc·Ű iNXX(VL&c“ů…("""3 LF¬„……ŇÜŞŔ±,>.´řeęßż lٲ•ţýŹoFçÎťůúëoŠ {Ţ·ď)ôîÝ‹™3ź$.n˙űßžţEŽ=Ę„ Uxť“NŠĺ‰'f±yófvíÚͬYĎ»ŹFüßŃŁ‰ŘíÖŻ_OZZ:™™YlŘđ'6›ýŘ1G+:…_ň´¸zZˇňňň°X,„……b6űecµÔ3łŮLXX(‹…ĽĽ<ěv{±÷Ť™_©V­ZѶm[˛˛˛čŐ«g±}ýű÷#77·X2 <őÔtíÚ•'žxŠţó>“x饊Ý˙T’ÉdbÖ¬§ŽnĎÔ©ÓyôŃÇ8p ÷ž,ńv»ť””rrrqą\´k×–Ž;.rsóHIIÁn·ű°ŇÚUt ‡ĂAnn.AAÍ jćăĘDDDÄyŢGäććâp8Ľ·K4ć0UVť’Ű E¶yÖŤEľzÓ±Ĺ|l± <99uMcţ&Š˙:räŰ·ďÜżşwďND„»Khff&;vě$''€ž={ЦM›Z˝~zz:11kőś•)˘śN'ůůůTŻuHă“““KAAŤĆb#üŐ'«Őr*Ř€BŔ~lq[śEW‘ŻžĐRÖ` Ĺ«˙Ž4iV««ŐB›6mčÜą&“É»/44”ÁĎáĂGĽŁůůł˘!ĘĺrałąçÉR‘ÚDAA6› «ŐŠÓéÄh46ĘA(¤¤I‹ŚŚdÄÓĘÝo4‰ŤŤ%66¶«Ş‡ÂÂBÂĂĂ|]Š4"!!ÍIOĎđŹŢXůĺ=R"R}%[ŁFŁ‹ĹâăĘDDD¤1±X,ŤFDZáŇçýR R"MÓéÄfł¤.}"""Rű‚‚‚°ŮlĹćčll¤Dš€˘îz‡ĂŐŞÖ(©}V«ĹŰ"ĺY qµJ)H‰4!ž ň<Íěž‘tDDDDj“ŃhôŢNŕyďŃŘč]”H“ăňţbklŁçHĂ`0ŠÜŐřB(H‰49Ç›Ö}\4jž÷Ť±5 ¤Dš¬ĆúKMDDD†Ćţ^CAJDDDDD¤š¤Dš¬Ćý)‘řZă~ݎ %"""""RM R""""""Ő¤ %"~aĘ”i 4ŚQŁĆůş)‘ęR©&)©¶_|™A†1hĐ0öíŰ_lßěŮĎ3hĐ0Nbb"ąąyĚ™óo.şčR†Éąç^Ŕ¬YĎššę}Ţľ}ű˝çüć›o™9ó)FŚ8‹Yłž-uý¤¤dî¸ă†Éřń1wî;8Žş}Ń""""E(H‰HµŤwŽwýçźWŰ·jŐj čO«V­(((ŕÖ[ocţü÷9tčo m$%%óĹ_qĂ 7“ššVęü .bÉ’oČĎĎ/µĎáppď˝°ví: m$&&2wî9ó©Z~•""""ĺS‘jëŮód:věŔĎ?Żňnßµk7GŽŕÜsÝakţüصë/ŚF#O=5“µkWóÎ;oҜÇŹ0wî;ĄÎż{÷˙řż˙»ť ćqőŐ‹íËÎÎ&(¨~8źwŢy“w˙ýďwěŢýWťĽ^‘’¤Dä„x‚ҶmŰINN`ĺĘ_°X,Śu6ß˙gťu&çś3“ÉDż~}9ďĽń¬X±˛ä©ąä’ Lšt={žL§N1Ąö˙ë_ÓčŢ˝ýúőĺîón_˝ú×Z|…""""ĺ3űşńOăĆŤĺ­·ŢĆĺr±rĺ/\zéŬ\énť1b8!!Íq:ť$$`ٲĺ 4¬ÔyRRR(,,,¶­K—Îĺ^7$¤9íÚµó>îŮł‡wÝÓ&"""RפDä„tčMŻ^=ٶm;«W˙ĘgśÎ®]»wČ*ËرŁËÜît:‹=6 ĺ^×ĺ*ů\WŮŠÔ!)9açž{۶mçĎ?ăXłfÁÁÁś~úŚF#m۶áСż=úlfÍzÂűÜÂÂB¬VkµŻ™ťťÍţýĽ÷FíرӻŻM›65y9""""U¦{¤D䄍;ŁŃHNN ~ Ŕ¨Qg HžV¨ĺËćŰożÇn·sŕŔAnşéVÎ:k łf=Síëţë_O°yóVÖŻßŔóĎżčÝ>bÄđľ"‘ŞQ‹”ś°ČČH†Ě￯-Ň­ďśbÇLšt#«W˙Ć_ýŹÇźÁăŹĎđî3™LśyćŐşfDD8Lštk±íçź?žnÝşžŕ+©µH‰HŤxFďhŃ"ŠAŰ߬Y3ć͛ˤI7бc¬V ˇˇ!Ś1ś·ß~“áĂK@Q‹ĹÂK/=ÇСC°Z-´nÝŠ[oťÄ´iSjĺőTEYwt—Üf(˛Íłn,ňŐłŽ-ćc‹°áÉÉ©k\%ďŇÓÓ˝÷úÔ%Ď˙?§Ó‰ĂáŔn·“••Ettű:ż¶4M ‡ Ál6c2™0Ým8 *U[¬VË©@:` ű±ĹqlqY\EľzBKŃuŠlóR‹”H5)H‰T“‚”H5)H‰”°qc7Ćůş iŔ4üąH¤ĄĄ™™Ihh¨Ź+‘†ČďZ¤®ąćz/^RŁsĚžý<3fYYYľ.KDDDD żĽG*1ń(Ź<2…-[¶Ěĺ—_Ęĺ—_ćÝź››Ë[oÍeőęßp:ťôéÓ‡[ną‰ŽËžřtöě玎ćÓO?Ăáp0hĐ@îľűNÂĂĂëĺ5IýŠ‹ŰDjjZ™űZµj‰Óé"!áë×˙QjDD8ýű÷«ëEDDD¤óË©O>ůŚ!C†đĘ+/qîąăxë­·ŮĽy .—‹©S篿ö0sćt^|ń9¸çžűHOO/÷śżýö;GŽaîÜ7yíµWČĚĚdĘ”©¸\%'4–ĆŔét–ąÝb1Ó¶m;Úµk‡Őj)óýL_©K.ąK.™ŔI'ĹrÓM7Đľ}{ââÜĂUoŢĽ…]»vóôÓOŇ«W/:wîĚĂ?ŮlfٲĺĺžÓb±pĎ=wѲe :věČĂ?ČîÝ·©ľ^–ÔŁ~ýúҡC{ ÷ăpN;m§ź>‚ŕŕ š7fÄÓ8í´aDD¸[% hßľ-}űžâĂĘEDDD¤!đË®}íÚµ+ö¸E‹(ňňňŘ˝ű/ ¸ţú›Š“““ĂáĂGĘ=g—.ť1™LŢÇ-[¶$22’řř}ęĆŐŤFşvíJdd$;vě$--ťuëÖ3tč¬V+………¬[·›ÍN@€•=zéăĘEDDD¤!đË U™ČČH^}őĺRŰ‚š•ű»ÝQĆ6{­Ö% OTT Ř~Ă IDATä÷ß×`·Ű‹uůs:ťŘív 8p>¬TDDDDżěÚW‘“NŠ%33«ŐJ›6­˝K|ü^ŚĆň_îŢ˝{)((đ>>x0ĚĚLbc»ÔGŮâC™™™¸\‚ĂádăĆ86lř›ÍFhh.dfjô>9®Ń©~ýúŇŁG¦M›ÎĆŤŮłgoĽń&3g>EFF&ÁÁÁ>|C‡yźg2™5ëvďŢM\Ü&žzjÝ»wç”SúřęĄH=9z4p·J®_żž´´t23łŘ°áOl6ű±cŽú˛Di`]×>ÁŔ¬YOđöŰ˙aÖ¬gÉÎÎ&6¶ Ď??›öíÝ÷VťwŢą¬[·ŽŰoż/żü €>}zsĘ)}xä‘ǰŰíŢáĎ žŃ¤Q˛Űí¤¤¤““‹ÁíÚµĹl6sđŕArsóHIIÁn·c67ş˙2""""rĘJ %·Šló¬‹|ő,¦c‹ůŘb,@xrrꚆ^—&ÍjµbµZhÓ¦ ť;w*6rchh(">>žĂ‡ŹxGóQ’&-22’#N+wżŃh$66–ŘŘŘz¬JDDDD:)ࡇđu """""âGݨ}"Ň´ýý÷a Ć'ź|ćëRjÍÂ…sć™cřóĎ8_—Ŕřń2eŠî)=QŮŮŮLp÷Ý÷`µźëßű’5nŢĽ•łÎĂ‚ú°Şâěv;Ď?˙gź}#GžÍŞUżřş$ńC R"R«rsóř׿ž`Đ a 4ŚożýŢ×%UŮâĹK4hűöí÷u)Ĺddd››CnnN˝^·ˇ~?üIYßC»ÝNff&))©>¬¬ţäĺĺ’““CzzşwŰ´i˙běŘó|VÓ|ĢEźĐŻ__®ľz"˝{÷öY-"âżÔµODj͡C‡¸ë®{9pŕ˙Ů»ď°(®Żă_ÚŇ)Š(*öĹ‚X{[,‰[4ĆüŚŃ$&5j,ńµ$ě5‰‰‰˝kě±bď±!EŽôe÷ýceĂĘJEô|žgavćÎťăÎ2gn™G]•·ĘđáC0 –––]‘lllصk&&&]•עAúüý÷ţ7ęó{ýúMlll3çí,bB‘[ňí!„Č77oŢâńăÇŚű?*V¬đĘ÷Ŕ矏§E‹V4kćÍôé3IMMŐ»îŐ«×5ę3š7oEëÖřěłĎąvíşöý^˝úňý÷3čŃŁîîýiܸíÚubćĚ9:-Múč@“&ŤéÜů{öěĎ6‘Š‹‹cٲĹÚ®IĄJ93fĚ8Ž9JçÎťr|ěúĽ(é._ľÂÖ­ŕě¬y¨s‡íđńéĂöí;µ‰ÔÁsâÄI~řaŢŢ^ÚmÝÜĘ3oŢBÎś9Gýúîz÷źÓ¸«ŐjvďŢK‡íůâ‹1ÚőJ–,©ó\¸ť;wăěěÄ˙ýßí +TpĂß˙"ńńńXZZćşľŮĹ?»f¤P(đńéĆřńcµĺ5lŘ_ß!>|„îÝ»ľpŰç©ŐjfĎžK©RĄX·nôčѝ޽ű渜Śqu-C˝zőčŰ··vą­­-?˙Ľ€€J—Îţáâ … íŰ·ĺźNqúôYÚ·o«}ĎĚĚŚćÍ›qčĐaµ VppWŻ^㣏eůĎéÓgbooĎşu«±¶¶ oßŢ ŕË´i?°uëfŞV­BŐŞU8xđoîŢ˝«ł!„Č-éÚ'„(”Ž9F“&žÚ$ ŔŘŘţýu/ďݻǽ{÷éر=‰‰‰DGGŤR©¤Qن\Ľx‰¤¤¤îçđá#¤¦¦âăÓM»mtt4NNŽ8;;súôťő­¬ŠčM˘j×®©M˘\\\¨Ył†v™ˇˇ!..ĄĎ´ýó:vě 3ľŁnÝ:„„<ΗcĎJÆ ´I€łł3eËşj÷ °˙AlmmpwŻŁ»–-5IĘó±Ë(§q700 hQkmk_ş~ýާOź^ÚßmmmŚŚÔéćĺéŮQŁFhÇîä¶ľŮĹ?7zőęÁW_ŤÓ)ĎŇR“=yň$WeÝľ}‡ÇôęŐC›D/^ŚÚçşnćććŚ=J'‰ĘXǰ°ÜŐńEÚµkKRRÇŽ×.Ű·o?@–IOúg˝WŻÚ$JS?KúőëCppH¶ÝY…"·¤EJQčÄĆĆńôéSť$*]ąreu~O“2{ö\fĎž«·Ľ¨¨hôľ¨ŮľOźţzßOKKÓůÝÄDńÂzë˙Ę}~ą*•ú…ĺ¤KżMgffhĆ ÁË{V2^¬¦ł°° %%Eű{`ŕ#˘˘˘ńön§·ŚČČĎZ—›¸Ź÷9'NˇcÇ®T®\‰şuëŕíÝR§…tČŹ¸té2ľľCqq)Eť:ďѬY7öÔ&/ą­ovńĎ •JĹŃŁÇ9zôwďŢ#((gÇŞĘfk]ÁÁ!9:?r#>>ž={öqîÜyîß@pp0‰‰IÚúç‡ ęaooĎľ}´-˛ű÷ Zµ*”)óâŻôĎzĄJ3˝Wµj¨^˝ZľÔS!@)!D!”Ţ˝G­Ö—lč.K_eذ!ÔŞUCĎúd9ţ$}űE‹č}_ˇxqâTĐ^öŘóc˙–––Ěž=CďűĹŠé/”ľ-ä,î^^-¨]»6‡ýÍąsçٱcëÖm䣏i»]şş–aóćß8vě§NťĆß˙[·nÇÝ˝.?˙<##Ł—ŞďËš0a"ű÷¤Aú4mÚ*TpŁgĎ÷s]VVç‡ţs&{111 <ś   Z¶ô˘S§¸¸¸źiŇŚ—ahhH›6ŢüńÇźÄÇÇÁ­[wtşmę“Őaeý}!„y'‰”˘Đ±˛*‚µµ•ŢÍnßţWç÷RĄ4ÝĎJ”(Nýúőr˝Żôíťśś´?/{ěů±˙×w;;[zôčNŹÝQ*•|ţůxV­ZÍ€})R¤¦¦¦x{{iÇ?­\ą†E‹–pňä)š4ń|©úľŚű÷°˙AÄđáşăíňÂÉÉĐtń«WOw Úť;şçGúěńń :Ëcbt÷˝˙AîßŔâĹ uĘ J­Vł}»ľŮ9łŻŁBˇ 5ULŞT©Lٲ®?~’cÇNШQClmm˛,Ż|ůr”+W–M›tŹ9!! ~ÁÉÉQşő !ňť´H ! ĄaĂsôčq†˙„Îť;P´hQúÇLë~ýőx>ůd4ďż?€víÚ P(8tč07oޢM›˙îtW®\ ćĎ˙‰† ëÓĄK'J”(ÁȑÙ?˙'‚‚‚iܸńńńlÝşÄÄjŐŞů:;×rzěúč‹GƩ޳ăííĹ®]žL›63gÎRąr%‚‚‚Ůşu;ŽŽŽzÇł¤ËiÜŹŹgęÔi\˝z ‡’ÜĽy‹]»öвĄ—¶ë˘ťť7ţJTTU«V!44ŚżţÚŠŁŁŤ7zéúľL Ë–uĹÍ­>>Ű:ęSµj¶nÝÎŚłps+OĎž>:ď·k׆+V“ššĘ´iY'üé&Lř’#FŃż˙‡´k×öîÝOHČcćÍ›“ĺŚB‘Ň"%„x%6n\Ëąs˙Ľ˛é…K–,ÉĘ•K©[·۶ídÝşŤÔ¨QCgŞětď˝W›+ü(_ľż˙ţ'+V¬ÂĐĐ€… çŃŁGwízĺʕ嫯ĆńđáC/^ĘŤ70 ?ü0Ť´´4V®\ͦM›©V­ 6¬ĄJ•ĘŻäřňKNŹ]źĹ#§ 3g&<ś›7o±xńR:L×®ťYż~•Në†>9‰»‰‰ ‹/ÄË«»wďaţüź¸xń}ČÔ©“´e}ůĺ âËĺËW?˙'víÚMóćMY±b©vší—­Ż>9‰ˇˇˇ! üMš4f۶¬\ąúŮÔř™'5jEŠańb?nßľýÂý6něÉĽy?bccĂš5ëٵkC†řŇŞUËLëŽű?şwďĘíŰwXłf‰‰IĚś©;NĚŃŃE‹ŕŕP’5kÖ˛iÓÔŞUŃŁG婎]»v¦GŹî8pź~Z¬Ób жm’““Q©T4kÖä…Ç™Q­Z5Y¶l eĘ”á·ß~ç—_6áä䄟ß"4¨źŁ2„"7ôÝžy~™A†eé?fř7ýeôěeüěĄL›đđČS2ČSĚ˘ŁŁłś‰*ż¤ź*•Š´´4”J%qqq2f@wĚöí;™<ů{~űmĺË—+čęĽPJJ*^^­iÝÚ›‰'tu„y„••ĆĆĆigI}-Ä …IC HRĺłWÚł—*ĂKťáßô¤%ăĎdX¦%-RB!„xŁ>|¤¤$:vĚŰsŻ„âu1RB!„x#ś|„Zµj2aÂW]!„Č’Ś‘˘É)!„BĽ­dŚ”B!„B’H !„B!D.I"%„B!„ą$‰”B!„Bä’$RB!„B‘K’H !„B!D.És¤„Bdéčí$ŢHär`2ŹcÓHStŤ^Ž‘!8XQł”)-«Ó´˘ŮK•÷¶Ĺ'/$¦ş$ŻG~ÇYÜ’çH Q€ä9RâMv3$•ybđH.誼RuJ›ň™wQ*;šäj»w%>y!1Ő%ńx=ňgńęČs¤„BĽsŽŢNbĐę°wâÎ? ™A«Ă8z;)ÇŰĽKńÉ ‰©.‰Çë‘—8 ń2$‘â9.\äÂ…‹] ! ĚÍTĆoŽx§şĄ©`üćn†¤f»î»źĽę’xĽą‰ł/K)!2‰‰!**š¨¨hbcc ş:BybŢÉ ¸4•ćŘłó®Ć'/$¦ş$ŻGNă,ÄË’D*›7oŃ»÷űś;wľ «" HXŘíĎOž<ÉbM!ŢNGo'˝Ó]‰ü’łěô®Ç'/$¦ş$ŻGvq"?H"•A±bö4jÔGGÇ­˙ý÷Ó™1cć+®•xť2&O“*!Ţo$t˛Ą02 —»%Őť:ËKŰÓŻAúÔ/B)ŰĽOJ›U ">Ĺ­Śčß°Ĺ­Ś^űľóËŰSď*ć´¬bžëí$ŻGař>…›LžA±bĹ=zTAWCX’’’133E­V“D\\VVV]5ń۶mçŹ?ţäŢ˝QĄJe|}Rżľ{AW­Đşřćß o]Íś±mlŚRŇ}Q(Őś,ý  #ÍLPwĂR ŚRć©ü¬bŰřl\‚ %Mřjs$ofQgcaČľ˙inćµü1„¸$#š[Óˇ¦e썙¶3:WűSĽŤ1u,jÄôîvt\đ°¸´o+ńx= Ă÷™(Ü ]"őřq(«V­ćüůó$&&QŁF †Š«kRRRđó[ÎáĂGŹŹ§RĄŠ|öŮhíűˇˇaüüób.\¸@ŁF|ňÉH¬¬Šđřq(ýűŔňĺKquuͲ¬>Dpp0bĆŚiÔ«çžmýúőű€ž=}¸rĺ*§OźÁ‚ž={Đł§ŹöăăăYşt'Nś$55•ęŐ«1dČG”-[V»Î?˙śbÍšuÇ•Ŕ”<—źU ">żźŹ`ół_§%ŠQ§´)ÓvFłőbŢ÷˙6Ć446Ť•ÇăP©áÉł¤áĚÍ#%|…ň(‹D^⑵Ľn÷ĽÂđ}& ·BŐµ/--Ťńăż"<<‚É“żcÁ‚y1yňTí:«WŻáÔ©SLž<‰5kVR¦Liľűn *•fÔćäÉSIMMaѢ…üôÓ‚‚‚đó[¦wY•µpá|jŐŞIť:ď±iÓŻĽ÷^íŐ`Æ_hҤ1k×®âý÷{łt©×®]4Ďűů曉ܺu‹oľůŠ9sfQ´hQţ÷ż±DGkîť?ďϤI“ńööbÉ’ź<Ř—µk×±zőšWö·Rúçáy&&Ć8::áää„Bˇ˙9ňL´‚§T*Yłf_=ž;¶°wďzőęJĄfíÚu\Ă«0 pŹJP1cW4ű®ýw÷ÝÖBóçěÔ˝$Î=H&Y™÷ó4«D|®§0y{7ŢYČŢĆŞÔ°äH,~Gc3=h&;Ź×Ł0|ź‰Â­PµHńóĎ 066ĆĚLóôjźn|ńĹ—ÄÄÄR´¨5!!ŹquuĄZµŞ|úé(RSSµ ˇE‹ć¸¸¸0gÎ, …ŢýeUVѢÖŘÚÚbdd„ťť­v›ěęĐşu+š7o@·n]Ůľ}'/^¤ZµŞ\şt™+W®˛fÍ*śťť7n,ÔĂĆŤżŕăÓť=4­X...„‡G°fÍZüPZĄr víZÜ˝{—ŔŔ ÔjM+SŐŞU055Ő®Ó¸±'ÉÉÉ\ż~¨¨h ŔÉÉ77·¬ąHNN&9YÓâP¤% y¸ß'źŚŔǧ&&&„…=ˇcÇ®¨T*6mÚHąršÝ1~üěííŮ˝{sćĚeӦ͌ý áál۶CşuëÂ'ź|¬=źnܸÉâĹKą|ů*jµšZµj0räÇTŞT€YłćdYΓ'á9ŞOź>ýąwď> Ěĺ×_7qńâ%ŞV­ĘěŮ?°}ű~ýuQQQxyµ`„/µß_{÷îgíÚőL¦”­ÝëXRŐIÁŔ•a:őJLUłórjZh—íĽś@bŞš—řÄËš–U̵‰TËĘćµŕ”|M˘ €{ŮSÝYABŠšÇ1iŚkkás÷µşľgÉ×ímOVsüNeěŤéŰ JšđɆđ\íłO˝"$+Ő<ŚPRÝYÁVD*Ův1!Gqîß°ŁZ%*^ĹTv0ˇKmKĘ3ađš'ş™Č˙ŤÝ=1GÇ_×´ÓAŤ­x®$⩊˛ĹŚ™ŢÝK…!7§ŕXÔÚ. ľjo˨Ťşĺ&=÷9ĽÂ…€Ľw/Őçm‰ÇŚîvxş™q÷I*˙ÜKÂÓÍŚáͬ156¤zF IDAT`ý©§/ÜnRgÚTł $&ŤŁ·“¨í˘`\[Šš˛âx\"*ÄË+T‰TLL #GŽÂÎΞf͚ҠA}ŚŚŚřę« ÚujÖ¬Á† k9sć,—.]föě9¸¸¸0{öLŚŤŤńńéNăĆŤ9uę4—/_fôčMôčŃťŹ>ňÍ´żěĘĘKý˛—ýź …BÁ AiҤq¦÷Š)’‹} {{{ÜÝëňĎ?§P*•:]ţT*JĄ¨[·Ž¶•QĽfΜƏ?ÎăŔC;v‚cÇN0gÎ˙Ńşµ7&|‰ĄĄ%ť:u|–¸bČ_9~ü$]ştŇ)ŻX1;V­ZŽ‘‘'Nf×®=śu ”­±öŘW0cn/{Ş;eîĹ’ţ9LO¦l‹z©±=úĽ-ńXy<ŽC7Ůw-‘dĄšNµ,ř¶Ł-M*±řp¬Ţí\‹Ó¦š*ŚXNl’ŠVFü2´[±áôS’RĄYJĽ~…*‘şté2aaOX±b™¶ Ö?˙śŇYçáĂŠ±ÄË«^^-čÖ­ ăßďRˇ‚·nݦbĹ té҉.]:±eË6–-[®7‘ĘŞ¬Ę•+eęB—“úe§B… DDD˘ť†]­Vłuëvš4ńÄŢŢžJ•*ŠCIív<$%%Yg™Č™ŘŘXÔj(ZÔŠ´4.\$--ŤJ•*bmmELL±±q’H˝alll:ő;ĆŤËéÓg8qâ${÷îcßľ0yňDš5kеµ˙ţ{—€€nŢĽERR5kÖ L™Ň:ĺUŻ^##ÍEzĺʕصk šVŚë×oŕíÝR»~«V-9rä(WŻ^Ďq9ą©OzŇôsÚĐĐ—R€¦‹)@jŞćNmăĆ,]ęÇŤ7ńönKĺĘ•¨Ył&]ştÔŢôY°`nžc p?\Éża©¸•0aű(r=8•}×HHŃ˝€9–áŮ-Gn'ѲŠ9e‹ięQËEsŃő~ý"Ľ__÷ĆŹ«˝1%­Ť°/˘‰ßg- )J5Wý÷8‚Ş9{BáOÓ8u?‰FĺÍh^Éśă˙&QËĹ”dĄZ§«a~H?ľ h%7B4Ş×‚SŽQâlŁyŻ„•6ĎĆrÍîiź© W{ă\]ä^ JŐŽą’J»ę`iŞů»”]śE*)_Ü„~ 4ÓĹ—/ţß%ÂXńśC~%RÓôuS”j˘TX›ň0Bł,$Z3qI]9˝-ń¸ű$•Š&|ÝÁǢĆTrĐŚG61zń°„ŞŽšĎłˇ!ü5R÷:Gad€cQŁ|ma"§ U"ĺâR •JĹÖ­ŰđđhH``K–ř鬳`ÁB”J%ÇĂĚĚ”-[¶bff†ŁŁIII|ůĺ×´hŃŚnÝşĎß˙Mٲ®z÷—UY iÍđ÷ż@@@Ĺ‹ĎQý˛S«VMŞWŻĆ”)ß3lŘP,,,ŘşuÇŹź iÓ&ôë×—oľ™H±bö4hPźĐĐ0~úégj×®ÍرcrÖw^h¨¦«R™ĆŮłgQ=ël}îś?ććfĎÖ ĄD‰â/,CĽ^÷ď?ŕřńŘŮŮѡC;Ľ˝˝đööÂĂŁ_=‘cÇŽ PЦMk~˙}3ÇŽťŕĘ•«@ćÖ@›ühä|śáóCł*'7őÉŤŇĄKóűďż°cÇn.]şĚŐ«×8{ö<7ţ† k)]ÚĺĄĘHMSă»ú íŞ[ŕîjJ5'zş[ŇÓÝ’‰[ŁŘsőżÄÄ(C_#ăg˝ÓS-ĺł żŁ±™ş>E'ä˙Čđí—hTŢŚĆĚ02Ôܱ?t3‘řäWs÷úůnVÍřYůdcx¦đÇĺ„*ĂŔçŹ&'qţ˛ť ]ßł$8ZÉń“9r;‘/ÚŘdąĎü>†śxť1- s’ß˙!C>ŇYç›oľĆÁÁI“&3rä§<|ŔĚ™Ó)Z´(–––Ě™3‹ŔŔ`FŹţ_ý öööLš4Qďţ˛*  gO,,,6lÇŹźĚQý˛c``Ŕ´iS©PˇS§NcěŘqDDDň˙÷ŁvR w÷şLž<‰cÇN0rä§Ě™ó#M›6aÔ¨‘yę»M©T@||jµ''Çgžj4wÄ#""P*ßľ?Č…ŐÓ§O™?˙'¦L™ĆĄK—MËíµkš–#3ł˙Ů©SNź>Ë©Sg077ÓsU«jĆE<ř·vŮš±Mé“ŃäT~Ôçy—/_a۶T®\‰ůódĎží88”$11 ÍŁnÝşÍŢ˝ű_8cevślŚđ©c‰‰Lř+’®?‡˛ďY‹QŁň¦:ë¶­®‰żЦş¦‹Î˝0Íůs#XsQojlŔů‡ÉśŚťĄ!Kš’¦&46Ť§š‹˘ÖĎşá)Ś řeh Öú–Ŕ%—Ú=v;‰ŘDµ]4® ą1˛íbţ¶FÜ{˘9>§˘ĆÚWsRŕXôżú†Ć¦ő,‰14řďř«;+p¶5"1UMĆIAŤ^â/tvq†˙ţoFlgÎŢh˝czŇs5…qÎŹ!żĽi1͉ô}™Ľ EďeĽ ńp+aLąâ&<ŽŐtKýéP¬Ţ)ĘźßîÖłŮăSTÜ OĺüĂdn>NÁŁĽ)6†$¦H·>Q0 U‹hşĆ4kÖTgŮ{µ?ŰÚÚňŐWă_¸}ĹŠřńÇYzßsp(™«˛ěíí™7ďÇ\ŐoƵ™ĘůńÇŮ:ż[ZZ2fĚgŚóŮ ÷Ý A}4¨˙Â÷E΄‡‡kďęZXS©R%lm5wdK”(ÎŤ7‰ŹO@ĄRŽCVʼnפFŤęÔŻďΙ3çřčŁa”(Q‚¤¤$bc53Xőď˙ľvÝŞU«Pľ|9NžüĐ$2ćzË}_ß;vś1pŕŕgIŰuLMMńő«˛ňŁ>Ď{ô(%K–annFË–^$&&†BaBť:µQ©T/=Ů„‘ˇ#ZXcbd@˝˛fD'¤áY^“śľŻŰ•«š“‚ŤC43vą•ĐtŰůíśfÜŇę“q4®`ƇŤ¬¨ä ™M®YEÍń_ JáQ$řŤă«ö6|Ú˛(nf”˛5ÂŮĆ›!©E+©XR˙Ł ôIISł÷Z"=Ý-iTŢŚŕh%ţó˙!ť×S¸BŤR ~ę[ŚkÁ)T*iBL˘JŰŐJĄÖŚůĽuQ~đ±ăÔ˝$ě‹Q«”‚'qiĽˇi)KLUcnbŔśžö|óWdžę“mśŃt}t±5ć«ö¶üšJóĘf¨TšîS邢”¸—1Ĺ×ÓŠÎ &nŤĘöň˛ӜŚVâbkĚôn¶ěľšČš“ů7 ÂŰŹ=WP©ˇ¤•:ئď*™ż˙ôĹńđ­DšW2gťo ü’©ć¬ŔĹÖăw’ňős'DnŞ)!ň›Bˇ@ˇ0ˇtięŐs×&QÖÖÖÔ«çN™2.(&/ś&_ŚśĹŕÁpu-CttJe*5jTgňä‰ôíŰGgÝôV €Îť;ćz_+V`ٲ%4hPźű÷ďóŕÁ6lŔňĺK´Ó‹çĆËÖçy:´cĆŚďqvvfďŢýś:uŠzőÜY˛dĄK—ÖN6akk“íd/şCý(R‰ďę'ś{Lý˛¦´«nAP´’ÉŰŁŘyY·…ç§żcŠNĂÉĆG‘JľŮ©7s#$•aëÂ9s?™šĄ4r3ărP ×ţ7óß_♸5Šź¤ňž‹…‘úÇóéŻáyšćxűĺ˙2şýRB¶Súdu—ţE况żGh/čJŮ3g_ ĎM8đŰ٧|·-ŠŔ(%ŤÝĚ(WĚý׸ę ńÉjTjřaW4ˇ±iTu2Á-IcF9‰óŘM\|”B gM+š1o ©ş-–ËŹĹqîa2EĚ iTŢ …±A¶Ç›¸eőޛӜľ3šűáJJŰS§ô‹˙fĽ«ńŤMă«?#yˇ¤M5 ÜJ0kot¶Ű|ó—&‰WŞÔxW5ÇĚŘ€Ő'ăřňĎ'‚ŻşĹM}mĎĎ/3Ȱ,ýgĂ ˙¦żŚž˝Śź˝€ `yJb*DfŃŃŃ™&xŇĎ?•JEZZJĄ’¸¸8J•r~ĺű~lÝşť©S§Sş´ ţą© «óĆŐ'Łn??&(:oă Ňź#őĹą•”ýŻI)[cţQ•şüô8ŰńÎ6Fü5RëóËÄç]&1Ő%ńx=˛Šłx=°˛˛ÂŘŘ###íc>^Ç3O “†@4 ¤ĘgŻ´g/U†—:ĂżéIKƟɰL«ĐuíBśşrĺ*‹-áúő›|ôŃ ©O6j–2%(:˙Ç…±óúŘkg4Űy9!GŇk–2Íň˝·%>Ż“ÄT—ÄăőČ*ÎBäiôBĽµ.\¸ÄĄK—±±)ʧź~B‡í¤>Ůh©gĽBaUĹÁ„ęN ĚŚ Řz1ž9zşé“U ަřĽNS]Ź×Cb)^5éÚ'D’®}âM4|]8ţů?!CaP§´)KËrťw9>y!1Ő%ńx=rgńę˝í]ű¤EJ!„ŽĎĽ‹ľ“´Ť 5Çžťw5>y!1Ő%ńx=rg!^–ś¦B!tTv4a¦Źý;u!gd3}ě©ěý fďb|ňBbŞKâńzä&ÎBĽ,9E…BdŇ´˘«– Né·°vťŇ¦¬X‚¦ÍrĽÍ»źĽę’xĽy‰ł/CĆH Q€dŚ”( ŽŢÖ<đňr`2ŹcÓHSeżÍ›ĚȬŤ¨YĘ”–UĚ_ú˘ëm‹O^HLuI<^ŹüŽłČoű)I¤„(@’H !„âmő¶'RҵO!„B!rI)!„B!„Č%I¤„B!„"—$‘B!„B\’DJ!„B!rI)!„B!„Č%I¤„B!„"—$‘B!„B\’DJ!„B!rI)!„B!„Č%I¤„B!„"—$‘B!„B\’DJ!„B!rI)!„B!„Č%I¤„B!„"—Ś şBÂçáĂ€‚®‚B!^“2eJtŢH’H !rMľP…Bń®“®}B!„B‘K’H !„B!D.I"%„B!„ą$‰”Ďąpá".\,čj!„B7L6!D111DEE‹µµu×H!„BĽ‰¤EJŹ›7oŃ»÷űś;wľ «"^ł°°'Úźź|„řřx*UŞČgźŤĆŐµŚŢ2]\\čß˙–/_Š««+łfÍŔÁˇ$۶m'99…¦M›0zô( *•Š5kÖ±{÷âăăiŢĽ+Vdóć?Y»vUDKdĺâĹKDFFé}ŻD‰â¨Tj8{6s÷N[[Ţ{Żö«®˘B!„xŞ®} ΧV­šÔ©ó›6ýĘ{ďŐF­VóÍ7ąsç.S¦LbîÜŮ™™2zô˘Ł5“¬^˝†S§N1yň$Ö¬YI™2Ąůî»)¨T*˝eęsěŘq/ţ™ďľ›Č±cÇůăŹ?µď/_ľ’íŰw0räÇ,\8{{{6nÜřę"ňDĄRé]nbbŚŁŁNNN(&z×Q«ŐݞjB!„˘(T-RE‹Zckk‹‘‘vv¶\şt™[·nłqă:Š- Ŕřń_ЧO?<„ŹOwBBăęęJµjUřôÓQ¤¦¦bhh¨·L}Ę”)Í  xńâ´léĹĹ‹éŰ·ÉÉÉlÝşŤQŁFҬYSĘ•+Ëť;w ~•!yT»v-îŢ˝K``jµ¦•©jŐ*ššj×iÜŘ“ääd®_żATT4ŕää››[Ö\!„BĽ U"ĄĎíŰwHNNćé,ŹŹŹ'$ä1ÝşuĺŰo'áë;„şuëŕî^w÷şąÚOńâĹu~·µµáß˙ ŕÉÉÉT«VMgť÷Ţ«-‰ÔĘĐĐ *`ggÇŤ7‰ŠŠćĚ™ł4hP_Ű]3%%…3gÎ’šŞÄÔTAĺĘ•±··+ŕš !„B7AˇO¤ěěěX°`^¦ĺćÔ¬Y ÖrćĚY.]şĚěŮspqqaö왿|Ň»‰é,ţwńć±··ÇÝ˝.˙üs ĄR©ÓĺOĄRˇT*10€şuë`ffV€5B!„o’B5F ŔŔŔ@çw7·ňÄĆƢP(pp(©}ÝżCCÍá=|@rr2^^-řß˙F3gÎ,®\ąĘż˙ŢŐ[fn9;;allĚŤ7t–_ąrőĄĘŻGll,j5X[[‘–¦âÂ…‹ś;wžÔÔT¬­­P«!66® «)„B!Ţ …®EĘŢŢ˙ PĽxqj×®EĺĘ•ůöŰI <kkköíŰ϶m;XľÜŹ"Eа`ÁB”J%ÇĂĚĚ”-[¶bff†ŁŁŢ2s«H‘"´iÓ?że™™áěěÄÉ“§¸ző*–ů‘ĎBCĂP*Ó8{ö,*•f2‰sçü177{¶N(%Jäţł!„B!ŢN…®EŞgO,,,6lÇŹźÄŔŔ€éÓ§R±b¦OźÉ'źŚćÚµëĚ™3 gg'ľůćk4i2#G~ĘÇĚś9];9ĹóećŨQ#iѢ˙÷ó9ňSéÝ»Wľ·x5”J%ÄÇ' V«qrr¤ti@MBB"(•ʬ©B!„x“čëÓöü2 ËŇ6ĚđoúËčŮËřŮK6áá‘§Ţö)ŁŐj5iii:c®Ö­ŰŔ‰'Y˛ä笙ČĘăÇŹą~ý& SW©R%lmmM—ż7nź@ŐŞ•qppČ×ýGGGS¦Lé|-SźôóOĄR‘––†R©$..ŽRĄś_ůľ…Bńn ÂĘĘ cccŚŚŚ´Ăn^vXMN(& h H”Ď^iĎ^Ş /u†Ó“–Ś?“a™VˇëÚ÷¦š;wÁÁÁřúÂÖÖ–;wîđ×_[čÖ­kAWMdAˇP Pŕŕŕ@ٲ®:„X[[SŻž;÷ďß'$ä±v6?!„B!¤E*źDEE±jŐÎť;OTTĹŠŁuëVôďß÷µdݢp’)!„BĽ­Ţö©B7FęMekkË1ź±qă:vďŢÁşu«0 ź$QB°§OźŇµkĆŚů˘ «ňҶo߉»»wďŢËÓö—/_ˇ˙4jÔ”Ź>Ŕ/żüFóć­đ÷ż«˛r×q㾦sçîÄĆĆć©Ţ/ăÉ“pĆŚůOĎć´jŐN;&ňuúöŰďhÝşĂkßoaPÎO}çĎ» 88ww6múŁ «"ÄG)!DľIMMeٲ•téâ‡GS:tčÂüů µ“vĄRIll,‘V‡7ARRź}ö9aaaôíű>={úCBB< ńą*O_\·lن»»<ÔY7**ŠŘŘ8RSS_ţ@riĘ”ď9qâ:wîHßľďcoo˙ĘöőčQ îîlŢü×+ŰÇۦ°śź/:„ď6#%„Č73fĚb۶ššR©REîݻǺuąuë‹-(:ŮŘذk×6LLL d˙oŠ  `bcăřâ‹1ôîÝS»|řđˇ ĐKËÜ=Ş!7q]˛ä'RRR077Ďu˝_Öőë7iÖ¬ ăÇŹ}íűŮ+,çç‹Î!Ä»MZ¤„ů"**š;v°rĄ«W/gƵrćĚYîÜů7ß÷ĸq_ăĺŐšfÍZ2yň÷<~Š»»7ţ¦]Ż{÷^|űíwěŮłwwú;Sy7ţŠ»»/^Ň.Ű˝{/ýű¤qătîěĂ”)Ó϶n))),[¶’>}úÓ¸q ÚµëÄĚ™sŽŽÎѱťeü¦+¤ŹOo> `äČŃ4i҂֭;°pá˘LʎHJJbîÜů´k× OĎf 6’GŹéŐ«/ź>>ËAöźěÎźٵkľľCiѢ^^­ůâ‹/ą}űN–Űś9sNűŃđáźdęŇ›ššJ“&-0abŽŹ˛˙LđůçăiѢÍšy3}úĚiI˘°)!DľP«ŐŚ5RŰŕâRŠbĹě {B||e'""‚A†’’’B—.ť°µµáСż™:uz–۵hŃ KK öěŮŹ—W ť÷öîÝŹłłµk×`Íšu,\¸OĎF´oß–đđpţüs+çÎťgýúŐX[[żp?ăÇͱc'hŢĽ)ť:u 44ŚßßĚ­[·XąrY–ueäČŹuę3yň÷T¬čĆ×_ŹçúőëlŘđ+QQ‘řů-Îň8’’’7î+ÚµkC—.9pŕoÖ¬Y‡Ba°aC´ńúěł±řűűÓ®][Ę—/ĎŐ«WůěłĎINNÎ6V9ůäĺüYż~#óć-¤jŐĘ ĐĄRÉ–-Ű6l›7oÂÎÎVďvuęÔĆŇ҂ӧĎŇľ};’““ą|ů2gÎśĄ|ůr\ąr•ÄÄ$<=ĺřX2Ň÷™~ü8”A†˘V«čÖ­ ÖÖÖ:ô73fĚĘ6–BĽ«$‘Bä ;;[ č§łĚß˙"aaO077ŁbĹ ůşżĄK—Íš5+¨RĄ2ýű÷ečĐYngjjJË–^ěÝ»Ź„„,,,ćÚµëÚ Ž°°',Y˛Śž=}tş…y{·dŕŔŹŘ°áW>ţx¨Ţ}$&&âęZ†zőęŃ·ooír[[[~ţy1”.­¶FµZÍěŮs)UŞëÖ­ŇÖŻGŹîôîÝWgÝśÖ±}ű¶¸ą•gýúŤ´k×–öíŰf#ţOňÇ IDAT€¸¸8–-[¬MhJ•rfĚq9r”Îť;eZżIO"""đ÷ż@űöY_h8pŁGŹ3fĚg:ń©U«&Ó§ĎdçÎÝtęôßä ×®]gßľťŘŮŮŕééA§NÝٱc× ©&M<5ëGZ¶lˇsĚK–,#44ŚŐ«—Sµj>üp&Ldůň•´k×—RÚő‹łgÉ’E(/î~Vµj¬¬¬đó[Aűö™cĹçź˙Ź6mZ0`@?zőę˶m;´‰ÔÁsâÄI~řaŢŢ^ÚmÝÜĘ3oŢBÎś9GýúúŹ7ťCIĆŤű€¦Ms˙ţţüs++V,ĄV­šT®\™îÝ{qřđúöíŔŇĄËyúô)6¬ŐÎćŮ·o>˙|>Ý?~¬öüiذľľC8|řÝ»ë,б±1 Ôçôé3Úe.\D©LŁIOΞ=Ż=ÎS§Î`hh@ŁF su,éô}¦/^J||<ëׯĆÍ­< ůN>ü“,ŹWw™tíBĽŹřňË |üńpmB_:‚§§‡6‰Í…H˙ţ}łŘJŁ}ű¶$'§přđQí˛˝{<{Os'řđá#¤¦¦âăÓŤččhíËÉÉgggť‹ťç™››3zô(ť$ŔŇR°°'/Üööí;„„<¦WŻ:1+^Ľ:´×Y÷eꝎ;č´ Ą_4‡„<Îs™éöď?•Uz÷Öíî×µkgŠ/Ćţýt–{z6Ň&Qvvv¸ş–!$$$Ďű÷ôôĐ^p¦2ä#T*U¦nź­Zyg™Dĺ„©©)­ZµÔţndd„‡GCÂĂ#´]§öď?­­ îîutţ?[¶Ô$U9ů˙|>±tqqÁĐĐ€ęŐ«i—•.킡ˇˇNŐ}űĐ A}бÔî7&&†V­Z’ÄĄKW´Ű~÷Ý·’(HKKĂÚÚŠHťî};ę~fÝÝsö9277ĂĂŁˇöwęÔyʰ°'Ú}<ř7VVEčŐK÷sôá‡r4cnn?9Ő«WľújśÎů“~î?yňâs qăF„‡Gh»ńť9s–Ę•+âáŃ˙ Úc?}ú ŐŞUĂĆĆ&OǢď3}äČ1š4ńÔ&QóďT!ŢUŇ"%„Čw÷ď?`ÄQDFFŇ˝{×L ĹËzúô)ŃŃŃT¬X1Ó{9iůŞ[·%Ů»wżöîňŢ˝ű¨U«¦ön|` f|Oź>ýő–‘–––ĺ>âăăŮłgçÎťçţý“éb3Łŕ`Mrńb&]ąreu~Ů:f%ýÂ/ť™™@¦1Lyř777ť`Rąr%> Ȳ.éőÉK]Ň?;éÝO3ru-……9A:ËóăaÜ–––:Ö€6QNMUbbbB`ŕ#˘˘˘ńön§·ŚçÇécl¬ďĎşA¦X¨TšÇˇ<}úT;–ěСĂŮî;88„]»vsőę5> ŕńăP”J%jµšçźůü ”ś~ŽĚÍ-2%Cfff¨Őj”J% …‚  @Ę—/źéŘlll(^Ľx–ĺçĺsS*•ŠŁGŹsôč1îŢ˝GPP0111¤Ą˝řÜÍMNźÖtă;{öĺćÍ[”.íÂŤ76lpžŹĺůĎtllOź>ÍŃ÷Žâ?’H !ňŐť;˙2rä§DFFáăÓŤ/żĚ˙çä'"FF™ŐźżXýöî;>ćűŕřë˛wdĘH{ {W©QŞZTQT[ÚҡԪ-ÚÚ›˘t©ÚjÔ¦”3ËŽě%ë.űî÷Ç%—ś$$żĐľźŹÇ=Ü}×çóů~/çŢ÷ů|Ţßâ( ^xáy~řáG]ęĺ7n2yrÁäôüď%e|Ř—ëäädFŽCDDť;w˘WŻžxxx T*ő&Ő—T7můEobţŕ˛Ç©cEzŘýŮ E±m˙”ý˙(˙a4mŔ5oŢśb×;:>™ÔíůÍőőmĆo»Ť··öËôŐ«×x÷Ý÷033§S§´iÓ/ŻŞ?~B/ÁË˙Cn®şÄż÷â> {’ďĎ>›ĆÁ‡xîą´k×||j0`ŔkŹÜ×ÁÁZµjâďžŢ˝{ÂŰoʦZµj899p‘řřÔjµn~Ty´ĺaź;EďG*„Č'”˘Ü1v줤¤ĐŻ_>ýôă'rSjkkkĚÍ͸}űN‘uŢè$={öŕűď7râÄ)bbb011¦k×.şőů=SnnnşçĄuđŕ!nßľĂňĺ‹ő†Z•ôkaů“˙CCݦő`ćĂÇ©cEŞRĄ çÎť#77WŻ7AŁŃ˘›P˙$X[[akkKHHh‘uaaa(•Ş ;—U޸“śśL‹Í˙Żĺćźgg§G–˝yóO°eËŹzÉVŽ9ö¤«YDĺĘ• FŁŃč}ΨTéÄĆĆŰcťďI˝nßľĂÁ‡9r8cĆ̡,Ëͨ۴iĹ/żláâĹKŃ´i@;ĎJHĹë®ňj‹µµ66ÖĹf -˙Ś«Bü[Č)!DąHIIĺí·Çéľ0\ąrŤÁß`Đ ˇ 4´Ř4Ę˙”Bˇ mŰ6;v\/pR«ŐüôÓĎĄ:†—WUęիÉ'9yňíÚµĹÚÚJ·ľcÇö±zőZ˝_icccéÓ§??˙ük‰ÇÎď1+|o&ŤFĂ®]»YŻš5}pwwă—_~#55M·<**š˝{÷émű8u|ň{Ŕ˛˛˛ş]·n]HMMă—_ôSşo۶ŘŘ8şuëúÄę_ţ©S§ Ň[ľjŐZ ts’ĘĘÔTŰţĚ̇·ż$]»v!&&–;vé-?vě8ýú˝Â… ˙踥+»3‡ŃK± đÝw‹>|”.mţĐ´ÂCöRRR9räč«[IÚµkCbbb‘Tř?˙üK©†µ>‰÷Aţßľ……ţ}ٶoßUÜćĹjÓ¦u^ňŽ˝4nÜH7˛eËç¸|ů*—.]ˇuk?˝ŕ±<ÚҡC{Nžü‹ŕŕݲ¬¬l~řas©ë.ÄŤôH !ĘEFFş^Šó{Oîß/Ýý“JëťwĆpęÔiŢ|ó-úôéEĄJ¶?~˛„9"ĹëŃăćÍű€ďľÓż/Śłł3ďľ;†… —I›6­P*•ěر›ôt•.ZqÚ¶mâEKůčŁOéŰ·7ććf=zĽÔ)ŕ?ţx&|Â믣GŹîdeełsçn|}›qěXA‚ŚÇ©ă“P»v-  .ˇeËôéÓ«Řń]şt˘]»¶,X°k×®áăS[·nłoßZ´đĄgĎâç•—1cFqęÔ_Ľýö8zőꉽ˝=gĎžĂß˙ü ú÷/]r‹çźďŞ ¤ňÓöúëquueóćźX·n= …M›6füř÷ńôô(ń¸®®.,[¶ łaĂFěííéÚµ3Í›7gܸYŻ6mZł`Á7¬Zµ† 6akkËČ‘Ăqp°× ¤§ŽOBµjŢLšô ëÖ­' €š5}xîąĹn;wîlÖŻßČîÝ{9rä(NNNĽůć0†VŞynŹĂÖÖ–ďż_Ͳe+9xđiiixyUećĚiş¬Ť˙„Bˇŕ«Żf1wî7,_ľ•JU¦@JˇP0ţ×lܸ™Ý»÷päČQ¬¬¬éŰ·7ăĆ˝Sî™/ «T©6¬eĹŠŐ>|„ű÷“pq©Ě„ đÚkŻč¶ëŇĄS§NfăĆM¬\ąwwwFŽNtt47nÜ|bő+ޱ±1+V,eńâĄ=zś}űöÓ AćĎ˙š÷Ţ˙ČýźÄűŔŔŔ€E‹ľăŰo°sçnŚŤŤńőmĘÂ…ßŇŁGďRŁU+?öěů–- ţ~*UŞDÝşµ ˝QäďŞ<ÚRąreÖ­[ÉÂ…KŮąS{sőîÝ»1bİ"ź;B­â&/<¸LQhYţsB˙ć? óFyŔ¨źx¦˘&ď ń4KJJ˘jŐâď'Tžň˙ţÔj5ąąąäääššúLÍ«)­»wĂčß “&}B˙ţ/Utu„ŕůç_¤Ył&ĚžýEEWE˙´đ𬭭122ÂĐĐP÷CŮ“?ý ă–@ d9yŹÜĽ‡şĐCSčßü Ąđs -Ó‘9RBgŇť;wůę«ydddč-?věPeLńšĆÜąóąw/\oy`` ň „xâdhźâ™ĆÖ­Ű8{ö˝{żąą9×®˛oß|}›Ń´i㊮˘â JMMĺŔCěŮłŹúSą˛3÷î…łk×nčׯOEWQń/'Cű„¨@2´ďńś;çφ ›¸rĺ*YYY¸şşŇ­[gŢxăuĚÍÍ+şzB'ěŢ˝pVŻ^Ë™3gINNĆŢŢ?ż–Śő&®®.]=!ţóţíCű$˘I %„B«{ %s¤„B!„˘Ś$B!„B2’@J!„B!ĘH)!„B!„(# ¤„B!„˘Ś$B!„B2’@J!„B!ĘH)!„B!„(# ¤„B!„˘Ś$B<łz/¸Śń#Ź8‚É#xŚ?ĹkË®r-BůŹŽ÷»µ?=ĺ補 Mâ׳±TťpŠ»ńĺ[ńĽ˝>„…î=Ń2B˘TŹ8Âí¸ô'ZNY|öŰM|>9M®úÁÇ !„O? ¤„x@@ŔE.Vt5D)E*éŐŘ˙Íů{ş/K^ŻIRzmgťçbXj™Ž•”Ĺ•×ÓŃť“ź5ăąę¶8XóZK<LźP .5›Í§Ły©™Ó+ $Z…™±UÍžh9e±í|ăşTÁĐ@QŃUB!Ę̨˘+ ÄÓ$99™ű÷“HIIÁĆƦ‚k$J’•Łć^b_öŻF#O+šTµćĹĆŽtţ:€©[o±k|ŁRď·s±Tu0ăç=tË:×µŁs]»rŻ{aˇS×ÝO‡'ŕ„F«¨ébâéZ.ßK#&9‹áíÜ*ş*B!Ä?"TL›ö9¶¶6|řáx˘Łc2d(kÖ¬ÄËË뉖;wî|ŇÓÓ™>}ę-G@llśîy\\śRO±ë1éäŞˇŽ›ĄŢrCŻ·rᣟo Ń@~ܰöX$‹†s+.ťjNć|ÜĂ“Á­\8x-‘ß\Ňío<âźőňbĆKŢř}áĎóőń’7\N`đŠk¬U—i[oq3.ťFVüđV]ĽťĚuűźMbƶŰřßNÁÉÚţÍť™3 z±LF¶š‡#xż[AđťśĹÇ?_çŹË 䪡S];ÖŚ¨ťĄöă:!-›É[n˛# ŽĚl ă»{“śEdR&ŰŢk@dR&ąÁ—řôE/BŁUÔuł@™™‹ÝŰÇŮ0ş.kŹGröf nv¦|7ȇ:”ş-çď¤ňŃĎ×ńżťŠ•©!ĂŰą2«uÝ9˙éL łwÝáV\:UěL™ŮŻź« h‡QľŮŢ k3ò_|!„â) Cű„($.® *T‰§OP¤řT¶(˛ÎŃÚef.´so&ţzĎ·ßfZ_oNNiĆ Ťő}0ެ\:×µ#ue{j»Z0±gURW¶gj/4íĽ˘şî–şňŇłÔlóŹeű 97Ă—„´l¦ý~KWńôřć˝›8rňłfĚzą:ßí»Ç‘ ¤bŰ`fl@äÂ6LěYĐö˛µťuU–šŁ“šrfš/7bT|˝ç.)é9ts» ü6¶>iĚń$¶ťŹŁn^@™’žC‡Ů¸›Îoă°˙ă&ĽĎî‹ńÔvŐnĄB¬=ÉĽ5ůÚŹúî–ŚY\ę¶F(i;ë<ëŘqé‹üüN} ×okŹEňîĆ>ëĺEđś–ĽŰą #ד– ŔŚ—Ľ™;°Ć?»řB!ÄS@z¤„Č“śśBFF&ff¦h4ŇÓ3HMMĹÚÚş˘«&ŠĄÂËŃ s“˘żĹĄfăhmŚBÁ…;©,ý3śłÓ›SŐŃŚ{‰ħfăbk‚©‘ &Fp'>¦U­13Ö/,!ÔŚ\]/N`„’•Íů~T]]9Ď7pŕň=í\¬´Ě\Ćm aÁ ^oíBtrq©Ů(p«dRŞ6…F«¸źÁ¶÷PżŠv¸â_S}±4ŐöÚĚ݆F;?h‰‘¶žßĽęďŚsş@jÁ{¨5|ÜD×Ű3w`ušL;§ë˝ ŚPbhFŐĹÝN;˙kp+vÄŁÖhPe©Ů–#A÷±57bJo/  Ş9›µ¨ VyuÝ5‘.őěyµĄ¶ę˝nĽŮŢM×!„âY÷LR‡aŢĽoŘľ}+¦¦Ú˙üGŽMvv6¬ 33“—^z™Ź?ţŽ; T*Yąr5§NýEff&őęŐeôčQTŻ^ €ýű°qă&^ye?ü°‰zőęňůçÓILĽĎâĹK8ţ&&Ć úz±uЉ‰eÁ‚Ĺ„„„Pąre~Ť®]»čÖ?Ş|€»wĂXľ|%×®]ĂŘŘ?ż–Ś3şÄ/đ™2e|đž^Y˘ô.^ĽDbâýb×9;;ˇVkŹŕÜąóEÖŰŮU˘I“ĆOşŠâ‚#•ş–ť MÂŻ†-Kţ '3GCë/ĎcknHUGsZůŘrâłfş$7cŇÉČVSżJÁń#•(¨ébˇ{Ýß×YŻśäLÝܦ­çb‰HĘâ˝ÍˇLűýnv¦4­j͉Ϛ~X’Z®–4­jM—ątoŕ@çşöôó-HBńó™hFwt×QöyCţň{ÎÖŤd\×*zCć,L´Ď븴Ĺ݆­.Ҷ% w;S ŠRµĄ[}{ľÜy‡z“ţ¦[}{ş7tŕůöşă˝Ň™×Węz­úů:ŃŘS~”BńďńLR-Z4G­Vsńâ%ž{®IIIÜ»ŽFŁ!..'''.]şLnn.Í›ű˘Ńh2e*•Š)S&aeeÍďżocüřYłf%ÎÎÚ/E‰‰‰ś?ž/ľ““ąąą|úédŚŚŚřňËĎ155cóćąv-V­üôę´dÉ2ŢxăuŢ,˙}–yóľÁŇŇ’V­üJU~bâ}ĆŹ˙¦M›đÍ7óHOOgőę5Lś8™Ĺ‹`h¨˙ëíµkL›6wŢ#AÔcP«ŐĹ.766ÂŐŐ ŤFCll,YYŮE¶Ńh$UóÓ (JE—zEAÄĄfóűů8V« h†9ŞóŃ ž%ëj„3cŞ;Ěu ŚPRÝŮ\´G©Đ]˙A‘*·Ş¬+§{ű2%¸x±ˇ‚SS›qđj"^KdćŽŰ|µűţź·@­Ńp7!“¦Uő‘Ó7SPµ\-HËĚ%*9‹†úŰśż›Š‘‚• z×äőx´EI˝Ľ@˛4mńq± řë–ě çhĐ}†¬¸FŻ&ެĎë±{ąą3-ŞŮ°ăBůĘ•ťŮ¶m‡î¸ąąąLśř1uęÔÁŃŃ‘ ¸uëÓ¦MˇaÆԪU“Ď>›Tě—ďŢ˝_¤K—Îx{{óę«éر[¶üPŞňwíÚŤąą9“&M¤fM5jČĚ™źsăĆ Îťó×++4ô:“'OařđaôěŮ㉜ă˙ŠĆŤááá®›ogW‰Ö­ýh۶ ––XYYҦMkZ·öĂή MZŕîîJŁF +°ć@­Ń­˘Î=RŮj†Ż ¤şł9Zh(136 I•Ł·Ý±ŕ$ŽĚ[şˇ¤–«…^î Č‚ůQ÷ň†ůŐs/(/G­!4FE]w«ËąźÁʧŁKuź$Ť.ÜI%5=—:đÍk>l[źĐt®Ç¨P(@¶ç¨°µÇ"ńv2ĂÂÄscLŚ$© ~ČÎŐđÝľ0jT6ÇŘP‘×6Ąn( îZö¨¶¨˛růëz2¶ćF iĺš7ë0­Ż7{.içGŦdq), O3Ću­Âďď5 GCGöć­B!ţ ž©@ ŔĎĎO4ť?FŤѨQCÎźżh«–-[pýú ěqw/řTˇPPż~}BCŻë–YYYaiYđĄâÎť;888ŕâRY·ĚÔÔ”Úµk©Oť:uô^ׯ_ŹŰ·ď”şüëׯSŻ^]˝ž'{{;ŞTq׫ă­[·xçť±››ÓŻ_ßRž-Q|||hذ&&ĆÜżźÄŮłçČĘ*ř’š••ĹŮłç¸? SS“Ľ şV‘^Bń˙w7>Śl5™9j.…Ąń×ődV‰ ĺçţE(ůőÝş ¨_3'– gű…8BŁU¬=ÉK‹.sů^šîxJę»?XD¤é†Â]‹TblXĐŁp#FEv®F·_ź&Nś»ťÂÜ˝w ŤV±÷R/~{‰ßýăJuź$ ^üî˙|ťŕ(%ÇC’řđ§Ôvµ ž»%&†´«]‰/wŢáHĐ}ÎßIeřę@m@™(čVßžY;ďp"4‰ł·R°ä ÷3uۨ˛rąźˇ ó:ŹjË­ŘtÚĎąŔ˛Cá„D©řÝ?ŽEîńrŢĐÇßÎĹŇen®&ˇdɟḚŔËÍő‡F !„ϲgjh@ëÖ~,_ľ‚řřx.ҧOovďŢC\\<÷îÝŁU«–y[—ü+đĂnĄ˘şUtßâFt=8ĚK­÷ËóŁËŘ(1EˇJFDDŇĄKg:ĚÉ“§hÓ¦uÉ;ŠRsppŔ×·§Oź!''GŻ×Q­V“““BÍš5ĹĚěéą‘é]P¤ €±?„Ú”Şfôięȇ/xboi¬Űvl×*$ĄçđÁ¦P”9Ôvµ`ŮĐZş$  š†´rŃ+#8JĄKK©Ä§PŹ@`„ KSÝ©¦^ÖlSŹ™Űo3sűmÜ*™2¤µ “^ô*U›  ¶żß ?^§ĺL¬L yľ›Ţާ ÄÖŹŞË¨uAô]xO3>ëĺELJ¶Ţ¬ĺoÔfěĆú.¸ŚŁµ1{V%=KMmWm©ÍŘWxźDe6±©ŮşŕęQm©_ĹŠ5#j3oo˝‰«­ C۸2ą—výČön܉Ďŕ­ďµYújşZ°zD˝s.„B<ëžą@ĘĹĹ/ŻŞěŰ·źěěljŐŞ €ZťËěŁjŐŞ¸şşŕăăCBB"QQQşeWŻ^ŁYł¦%–Q­Z5 ĂÓS;'"##śśő¶ ˘Aúş××®]Ó%’(Mů5kúpđŕAÔj5ÚÂű÷ďAŤŐuű´nÝŠO?ýľţzT­ZňśQz)))h4`kkMn®š€€‹äććR«VMll¬INN%%%U©§HŹFdŻëXŞm  ¦őńfZďb×g樹“Ný9C‰ËÚ鞏Ţ“ńĎë˙˝őóu˘źo{˝eý}ť‹$¤(‹Ől89ĄY‰ë«Ř™ňLJú‰N N\lMřm\˝e…ç%5ő˛.rîě-Ť‹,{T[ŢhăĘm\‹]gbdŔÜ5$˝ąBµgnhh‡÷mÝş _ßf(  ľľľüţű¶B˝QШQCęׯÇĚ™_rńâ%nܸÉüůßCßľ}J<~“&Ť©QŁ:_|1›Ë—/ĘěŮ_é2¶oßţüówîÜáÇćčŃcĽür˙R—ß«WO”J_}5—ë×opůň¦OźIőęŐhŃ˘ą®śü ëÍ7‡S·n¦O˙ĄRY.çóż.&&€śś\ÎťÓĺKIIĹß˙ŮŮ9yŰÄTdĹr),Ťů{ð63¤cť˘‰+„B!JňLR­Zů‘ššJóćľşe-Z´ --M7? ´CăfÍúľřb|0ŘŘ8ľűî˝ůO244döěYT©âΔ)Ó™4é3š5kVl’ >`Ďž˝ĽýöXöď?ŔÇ„ź_ËR—oooςߒ’’Ę„ 1cĆLŞTqgîÜŻŠť‹c``Ŕ”)“ÉÉÉaÎśŻ%ÜcĘÉÉ!!A;^©TˇŃhpssĹÓÓĐ RĄ@NNÎCŽ$ž5÷3iýĄ?żűDzu\—Gxč IDATLŤžÉŹC!„BTâf =¸LQhYţsB˙ć? óFyŔ¨źxFľđ‹§Qtt4ÁXXS«V-]–ľ””‚‚‚Q*µóqęÖ­Ť‹‹K‰Çú'’’’ţ/C4ó˙ţÔj5ąąąäääššJ•*îOĽl!„Bü7…‡G`mmŤ‘‘†††şVЇ%+('&&Ć-$ Črňąyuˇ‡¦ĐżůAKqIô^?ss¤„(O&&&ăââ‚··—^/ ŤŤ Í›űrűöm˘˘˘111©°z !„B§‹Râ?ÍŢŢţˇ ¨^˝:Ő«W/q!„Bńß#“„B!„˘Ś$B!„B2’@J!„B!ĘH)!„B!„(# ¤„B!„˘Ś$B!„B2’@J!„B!ĘH)!„B!„(# ¤„B!„˘Ś$B!„B2’@J!„B!ĘH)!„B!„(# ¤„B!„˘Ś$B!„B22Şč !ž=wď†Ut„BńRµŞgEWá©$”˘ĚäU!„˙u2´O!„B!ĘH)!„B!„(# ¤„B!„˘Ś$B!„B2’@J!„B!ĘH)!„B!„(# ¤„B!„˘Ś$B!„B2’@J!„B!ĘH)!„B!„(# ¤„B!„˘Ś$B!„B2’@J\$ ŕbEWC!„B<ĹŚ*şBŽŽ´jŐ WW×ň®Ţ3­pđT8¨B!„˘0Ú÷ĺččČűčjůwß}[×űRZ˝z˝««+UŞTˇcÇŽdddđňËý±¶¶¦}űv¸»»ŔĺËW eÎś/©WŻŢŢŢLśř1FFF:tXwĚŞU=:ôuśśśhÖ¬)ť;wââEm:n[[ěěě°łłĂŢŢ###ÜÝÝŘ´icÇľCµjŢ4lŘŽ;pőęŐ÷yĐŹ?ţDÇŽú@˙qąąąüüóŻ,Zô-ëׯa۶-¸şşËÉ“•{™aaa|řáD:věJűö]=űk]đ®^˝Ć¸qСCWşuëÉ|ȵkşőŻĽ2/żśŔË/żŠŻŻ÷î…ëÖ˙ńÇ~† F›6éÝ»?3gÎ">>^ŻŚ©SgĐ·ďËřűźgĐ ˇ´hŃš‹µźW=zôć‹/fsâÄ)L»vťřä“ɨT*îŢ ăťwĆŃşu{zôčæM?ęwűöť´oß…;wîpď^8ľľ~8pŤ7ńâ‹}iÝş#FŚŇkSiŰ^śGťĐ~öľńĆZ·nOż~ݰsç®"ÇÉÎÎfŐŞµôéÓźÖ­;0pŕ`V­ZSâuĘW–6fee±ző:^}umÚtä…zńő×óusO“’’đőőăŹ?ö“ŻŻ=zôÖ+gëÖmzÇĚÍÍĹ×׏ ë–=ěúţÓvć;pŕO†N›6yţůůüó/őnÁđĘ+đőő#99™Ă‡ŹâëëÇ+Ż *Ő±…B<ĎTŹ”……9=zĽŔęŐk°±±ĆÓÓŁGŹvccmb333úő{‰U«Ö`ff†—WUÎźżŔîÝ{2e2Ť5¤~ýzĚśů%o˝5 věŘÉÉ“§t™ý5jČŽ;ٲĺ7š4iÂąsç8ţ<ÎÎÎ˙¸ţŤ7˘víÚLť:ť‘#‡cccĂŮąs7kÖ¬ÂĘĘęŃAŰ‹ráBaaa899áááÁÁň×_§ńđđŕüůóěß@/m÷űôüňËo››3nÜ»$$$°nÝĆŤ϶mżbkk[ę¶çaç#˙üĎś9‹®]»Đşu+¶oßÉĚ™łqvv¦eËçíT}ô)˙}–^˝zâííMhh(«WŻ#88„ożť÷Čë\š6Nś8™'NѡC;zőęILL,[¶l%$$„uëVcaaÉ̙ә6ísfÎśŽąů?PÜő}ÜvnÚô# ,¦iÓĆŚ5‚ű÷“رc'gÎüÍ?|ŹŁŁ#ăĆ˝Kjj*Ó¦}މ‰1S¦Lţ×6 !ÄÓî™ ¤Ţ~ű-LMMYĽxi^úóN ô*[¶lŐm3bÄ0,--Xłf- ‰xzz0yň§´iÓĐöÎĚšő+W®ć‹/f‘ťťMÝşuůî»o°·· ]»¶ ü?ýô ?ü°™Îť;ńňËý9~üÄ?®»Bˇ`öě/X˝z-łgMZZŐ«WcţüązóµeŔ€ţ‡đÖ[ď0aÂxúôéEbb"óć}@‹Í8đöîýŁÄ}4Đ˙ňäëŰŚ3¦±qă&~řa3•*U˘wď4čµÜŢgANNŽ®R©TˇP€››+FFFÜ»w•*€„„rrrŠMÔ! äPýušýűrĺĘU˘˘˘yĺ•ţş/×ĺeůň•(•J6mZOŤŐ2dcĆŚ-˛íW_ÍĄzőę¬YłSSS^yĺe^ye0‹-aÍš´mŰš„„.\ GŹîş9A±±q¬X±šúë §ęŇĄ3Æ˝ÉćÍ?óöŰŁuËSRRřöŰy´kצH=âăXż~­.#dNN .áťwŢbčĐÁ´mŰ†Ţ˝Ż±oßÁGR©©©¬^˝\ף]ĄŠ;&|±cÇéÝ»W©Ű^ś’ÎGľË—ݰcÇo¸»»Đłç ôď˙*»víŃ]ëC‡ŽpęÔ_|őŐ,şt)YŁFu,XĚŮłţ´háűXmLOOÇË«*Í›7gĐ ‚[MŘŮٱtérÂÂÂđôô¤GŹîś>}†ż˙>GŹÝZćĂw}˙üóđ?ngllK—® C‡vĚ›÷•nôŔ‹/ö`Ča,Y˛ś3¦Ň¶­ö˙Żąsżˇs玏Ő!„ĺă™űVhddÄčŃ#=z¤Ţň^˝^Ô=W(Ľúę@˝ű7=ČŇŇ’ >`„JÜfřđa >LoYţ1]\*óçźű‹¬{°Ě•+—ë˝¶°°ŕý÷Ç•x3ÜO>):î}čĐ×:ôuÝk,řFo›#†1bÄu}ĺˇű>—§?aÂÓ 4ô:{öhyOO<==Q«ŐeΊů0ÇŽť mŰÖş ´źC† Ň ·¸uë·nÝćăŹ'žžNzzşn]«V-Ůľ}'%Î;zôŮŮŮôď˙’Ţm ÜÜ\qwwçďżĎęRÖÖVĹQŤ7ÔK«ďáá@Æ tË đđ¨BBB|‘ýôâ‹=őÎiłfMtÉk·íÓ˛ĺsş ŔÝÝoo/˝Ä9ÂήľľMőÎ]çÎťX°`1˙}ö‘ÔŁÚhnn^ě穥Ąv>^llśî>}塸ëű8íĚ˝ůćp˝!Ř5jT§S§>|„iÓ>+׿!„ĺă™ ¤„(O&&&ăââ‚··—®GŔĆƆćÍ}ą}ű6QQŃĎÜM‡+ҰaC2dW®\eҤ)Ěź˙ 6´\Žź’’JZZš^•ŻZ5o˝×ůózćÍű–yóľ-öx÷ď'•U0<\»˙«Ż)v}nn®Ţkcă’ß'%őh>¸\ˇPčü‡ÉňĺDYYÚy9ŹŰö‡)n¨¦……YYYş×áá÷¸?‰.]^(öÎC-ÎŁÚÚ̧űöŔß˙<·oß!22’ôô  ä{ĆýSĹ]ßÇigxx8 …‚š5}Ь«[·üIBB"NNŽ˙ĽŇB!ž ¤Äš˝˝˝nČgq ¨^˝:Ő«ýÂ.ôĄ¦¦qóćM iĐ >FFFş,’?ţř §Nť.·@*˙—űâoެż,“·ŢEŁF ŠŮÝŢâäďżl٢b×?Íöă¶˝<Ę·´´dŢĽ9Ĺ®/|ű*99™‘#ÇAçÎťčŐ«'(•J¦NťńŘÇ/ŤÇigţ5*.!ĐĂßçB!*šRBrĎČ‘cXľ|1Í›ű’žž®»‰lyţ˘nmm…ŤŤ5ˇˇ×‹¬ ŐżŻY•*ÚágÎÎN´hŃĽĚeĺďďćć¦{ţ¬xܶ—GůÉÉÉO´ěqűöÝ{.ßáĂGKµ~˘"ĄRĄ·<99ĄÔuxśvzxTAŁŃJť:µőÖaaa.÷ŻB§” şB” oo/:uęŔ»ďľĎ€ŻŃŁGo‚C033ăŤ7Ęw.]‡í9yň/‚Ct˲˛˛ůá‡ÍzŰŐ¨Qoo/6oţ •ŞŕËrnn.ŁF˝Íôé3uË ßŚ9_ÇŽí122bőęµz=±±±ôéÓ_—ňýiT–¶§¸óQ]»v!&&–;ôÓ˘;vś~ý^áÂ…€tÜÂň‡îľÇ–FŁa×®ÝE¶511!;[ż-öššrę”~zţ={ö–şŹÓÎÚcllĚÚµß뽿nܸÉáĂGéÔ©ŁŢc!„Oé‘B”›Ył>ç‡j˛gĎ„‡G`aaA§N5ęM||j”kYo˝5’ăÇO2fĚXz÷­-‡ÁĹŵȶ“'OděŘ÷yíµ×yá…ç111áđᣇđüó™ńj×®…Bˇ`áÂ%´lŮ‚>}záěěĚ»ďŽaáÂ%DDDҦM+”J%;vě&=]EŁF ˵]ĺ­´m/NqçŁpŞ÷GéŇĄ{÷¶fÖ¬9ś={ŽÚµkÉŽ»puuĄV­šŹŰ<Ú¶mâEKůčŁOéŰ·7ććf=zĄRYdŰşuë°cÇ.ćĚ™KŤŐ0 ?ĆĆĆtďŢŤ;v1fĚXZ´hNXX‘‘‘şŰ<Év:;;1věŰ|÷Ý"FŹ~?ż–$%Ýg×®=TŞdËرo˙ăs#„âÉ’@JQnŚŤŤ‹Í ů$T®\™uëV˛páRvîÜ@÷îÝ1bÇŽ×۶I“Ƭ]»ŠU«Ö°eËďdd¤S˝z5/^€ź_AZöjŐĽ™4éÖ­[O@@5kúđÜs-xýőÁ¸şş˛yóO¬[·…€¦M3~üűxzz<ń¶>ŽŇ¶˝8%ťŹŇR(Ěź˙57nf÷î=9r++kúöí͸qď`aańč<‚«« Ë–-bÁ‚Ĺlذ{{{şvíLóćÍ7N?+kßľ˝ą~ýbßľôěů|ôŃx ůóĎĂÓ˛ĺs|ýőz÷~é˙ŇÎÁ_ĂÉɉM›6łnÝz,,,hßľďĽ3GGI2!„O«˘ł[‹.SZ–˙Ü ĐżůĂĽ‡QŢĂ0*ĹÇ'ž‘ɲB•””DŐŞĺ—šą$ůjµšÜÜ\rrrHMM}ććü!„âٵµ5FFFęnĺP\‚ťňfbbÜH˛, 'ď‘›÷Pzh ý›´~Nˇe:2GJ!„B!ĘH)!„B!„(# ¤„B!„˘Ś$B!„B2’@J!„B!ĘH)!„B!„(# ¤„B!„˘Ś$B!„B2’@J!„B!ĘH)!„B!„(#ŁŠ®Ŕ2s4dd«ÉÎŐ«ÖTtu„(5CƆ ĚŚ 05RTtu„B!ÄôÔRŮąŇ2sÉĘ‘ŕI<›rŐÚŕ?#[Ť‰‘+SCŚ % B!„ř7z*†öećhHTćH%ţ5˛ňŢÓ™ňžB!„řWŞđ@*;WC’*§˘«!Ä‘¤Ę!;W‚©'aÎî;xŚ?Udůë+Ża<âˇŃ*˝ĺK˙ Çyě TYąüňw ď˙UµUG"¨öŃ_eÚ'9=‡AËŻa;ć=ľąDv®†Ö_žgÂOןP-˙ťB˘TŹ8Âí¸ôr9އ?]§ůŚsĺr¬|'B“h;ë<ÖoĂűĂżřv_Xą_!Dů¨đ@*-3·˘« Ä%ďń'Ă˝’)q©Y¨5jlJŰ/ÄťśĄ·ý꣑ o犅‰!A‘*ęş[>vfl»ŤßţeŢ/$ZEmײ•?më-BcTüńacV«…B-ŞŮđ˛Żs™Ë˙/ ‰Vafl@UGłr9ž·“9ďv®R.Ǹ›J÷ůiYĂ–“ź5cBwO&ţz“Ă÷Ë­ !„ĺŁBçHećhd8źř×ËĘљّĺĚŐΔ\5$¤ĺŕdm ŔÚă‘´¬nCp”J/:šDP”’í4 8JI˝r¤‚"•Ôu+űqBŁUÔvł(őö üüw פ•Ź­nůw|Ę\ö]h´Šš.(Ęçďql—ň ˘~÷ŹŁg#Gć ¬@#O+ćěľC`¤’Nuíʵ,!„ʧB©ŚluE/Ä˙MF¶S#ĂŠ®ĆżŠ{%S@Ű ĺdmL®ZĂ꣑|Ůż_íľKlJA µňp=9â•× ©˘s=;^Yz•É*xŻ«“{yéöIHËfň–›ě#3[ĂřîÄ$g™”ÉOo×ÇvĚ1ň‹n<Í­ů­đ°7-RĎżo¦0iË üo§âhmĚęuŤVѧ©“n›»ńLŮz“}W12PжV%–żQ +cÚÎ:Ď™›) ]Č5A$ŻhǡŔűô[t…äí012Ŕď ş7p ,!íçă06R0ţyO&ö¬Ş+G™™Ë¬]wřét IŞzXńÝ šzY•ŁfÖ®;¬?E˘2‡úU,YńFmyZ{ rŐćí cíńH˘’2yľ˝›82áÇë$,kWâµűĺďćěşË­¸tzX±ěŤZ4›~Žs3|iě©­Ë®‹ńĚŮu‡+áJě-ŤŃÎŤ©}ĽtP®ZĂ‚ý÷Xs,’{‰Ts2gj_o4/衋LĘdâ/7řărźľčEh´Šş%±Ó·Ýb›—g=€*+—q'yˇˇżĽ[€«ái4ťvŽs3šSٞ9vog˙ÇŤéXÇŽ?.'0xĹ5ÖŹŞË´­·¸—N#+~x«.ŢNćşrÖ‹dńÁpnĹĄSÍÉśŹ{x2¸• _ôݦW§‹a©Ä§fÓ,ď !„xzTčĐ>™;"ţ+ä˝^ţ\ó©Ľž§ÝăQeĺŇĎ×g[]ŹTlJŰ.Äńn^ĎA®ZĂőX«ŽFŇ­ľ=NlÂËľÎLßv[7Ż*%=‡s.p7!ßĆ6ŕŔ'Ť9’ĶóqÔułÄÄHÁŤy­X5Ľ6÷ľk]lĺ;….s¨ę`ĆŃIMY5Ľ6“·ÜäN|µ]µ_ćďĆgŕ÷…?–¦†ř¸1›ÇÔăÂť¸Ŕˇ‰MŘ<¦÷—·#)/p ŠTRٞ9&Fh4Úą?kŹEҧ©Á_ű1ţyO¦l˝ĹőĽ6ĺ¨5tź‘SˇÉ¬U—ź4ĆĆÜń?̱ą.mţql]ŹŔŮĎQĂŮś1‚KĽĂVňý‰Hć˝Z3Ó|ń°7cŇ–›ÔyH/ݧ˘ş*-ťůkj3ŢlďF˙ĹW0P@-í~ëOD1`Éz5qäôÔfĚ͇oţcÉÁpÝqF­ fŢw™ń’7OoN˙ćÎ YqŤ wR ®áě ÜMç·q Ř˙qŢg÷Ĺř‡UVw2',1C÷zĂÉhr5"îgę–-ŘŹn ěiäiEp” 膉E*IĎRłÍ?–í4äÜ _Ҳ™öű-Ýţ˝ÁçŰo3­Ż7'§4ă…FŚú>UVŃ!Ŕ{/%đüĽ‹ĽŇÂż¶EÖ !„¨XÚ#%÷‰˙ň^/v–FXčzž–Ž`D;7ĚŚ pµ5ŃXßź˘ş“9ťó†EÝŠM'+GÆQµä§íř¬·7+ŹF•”EM ćî CŁť4ÄÄHű{Ó7Żúŕ;ăuÝ,1P(HM×&ÉéXÇ[“bëřé–›ĽĐĐďGŐŐ- ‰RqánŞ.Ř˙ăuşÖłgÉĐZ$¦e•”EjF.žÚŢ3#nŦSßÝ+Ó‚^ÍŔĄî÷3HÍČeůµčÝÄ€QܲőI™ř¸X°ôĎpÓ˛9=Íu^ŕź–M 炞’ýWÖÇ›öµ+°ćÍ:?îŕµD~;ǵŮĎQ-ďߪÁOg˘Kś¦ĘĘeŇ–Ě~ą:ľŕ @ý*V쾏‘s•Ů|đc(ó_őŃ ›«_ĹŠS‰°D IDATˇÉüz6–÷şypŕj"›OGsvzs]oY=wov\c«,M˝¬YpŕjŤ†7ÁÚL{Ţć¬N“içJ ôŞ9›ŁĚT“¨ĚĆÎÂĹď1µ·7«ŹF“’ĹĎǰ÷ĂĆşk`oiDeÝë•Íő®÷ó ¸|OÜ]¸“ĘŇ?Ă9;˝9U͸—A|j6.¶&é˙®ůőž»|±ă6SűxóQŢąBńtyjî#%„eĺZÉ””,®G«8śÄŞáµp©dJH” µFĂšc‘|Ř˝ŕ‹hP” #ý %iHRečü|&šŃÝuA€˝Ąöă2?H¸©ÄÂÄ€ŞĹ'-ČŻÓ©)Íô–[âdmŚ•1wâ3ŘuQ›cß•śmL¨çnÉҡµxąĐµkiEćtF*éVßA÷ÜČ@AßfĂóIO{mý&mąIv®ď˙ÂÁĘ•-آ2out×í3ČĎ…‰żŢŕŔŐD:Ô©Ä+-*ănW´§M{ŽbčT×ND(Řš•8olűů8ŇłÔĽó@r†JFşóşý|&†ŚîষŤłŤ1iÚ^›ÍEÓ˝C‘!‡NÖ&şmÖŤd\×*ş ŔÂDűĽN CűňŰžÉ_ד176 żŻ3wÜFه#hěiM»ZÚ@30R©4F*é˙@ňŹäL]PĽäĎp2s´ŮmÍ ©ęhN+[N|ÖL/`ŤLĘdú¶[lU—ĎU.¶®B!*žRBg–[%âSłYq$‚žŤt_XÝ*™p*4‰Wď“–ÍÖ.ş}‚Ł”řT6Ç̸ HşˇÄŇT)3są›IÓŞúsRNßLAÔĘ’©¤¶«%%ĺ,ŤŃ¦×nPE˙Ëţ…;˝QÚ`,yEű‡¶óZ„’-ôż G©xż›‡î85]Ěőz5ó=/'m›˛s5ü5µÍ˝mJ,ç»A> ö«Ě—Řr6–™ŰďplrSzť#u-BI×zözˢ’˛¸›QbŹO`¤ŠZ®›<°\I—şöşvŐqłÔ b.…ĄQ3ďÜG©xľ~Ů9j ×"ŇčÝÄ‘´Ě\˘’łhčˇ ĎßMĹČ@AŤĘĹR®¶¦X•”ĹŇCáŚëęA{3˛s5Ĥd±úhËި]Pďýd#ÁQ*&t×ď= ŠT1¸Ue];ç ¨ţȦČű™ lQąČ5Bńt©đôçBńOąU2%Q™ÍćÓŃş9PůËď+sXw<’7Úşę ‰ .&őy`ˇ Hˇ=:ůÖ‹ÄŰÉL׫ˇ,1i€­ąv»Â÷É‹¸źÉ¦ż˘©“™Ł&=« ńNv®†•G"HTj{ÉrÔB˘UÔs/fî%h‡ňŐÓÍÍQé ŚĐ¶É@ˇŔÄČEîŮ÷ó™ÝĽ°›±é܉ĎŔ×ۆ©}´ówŚ  N*¶}† bRôĎŃ÷'"Qk(qh걎B×c”ďĚÍdüo§RżŠv+3C]ŰóE*ŮÇ żĘۤéoóýń(’ÓµsäĚŤ 01RčzA{^żŰFŤĘćý*ŕíhΙ›É\ Wňš_eĚM p¶6fŐѬŚéŐŘQŻ^ůçýÁkÚkŁ˘n޵336(r Ž'9ÇľŢ6l]·Ü2 !„x2$B<łÜěLůÝ?ŽĘ6&t¬SÚµ’)÷3Ř{9w:é# ŠR ¤" ҡ[Ň®v%ľÜy‡#A÷9'•á« ŤVéő´¤där_•Ch´ M1SŕšTµĆŐÖ„÷7‡p7•Wéżř €î8~5lq˛6aäş ®†§qćf2//ľÂĽ˝wuC˝nĨČĘŃPżPťŻE*14m@v-"­H›‚"UşŕÄŘPÁ‹Ť™řË NßHćZ„’O˝É¨ďIΛë5yËM^]v• wRąp'•÷7]'3[MŹFĹžűî ěůéL ?žŽćjx_ďąË†“QX››xŕ…†G©˝ëWĂÓŘr.–a«tÉKMť¸ŁbćŽŰşmş|@żfÎôÍËt8 ą3›NGó󙮆§1˙Ź0ŢŰĘüWkŕZÉCÝęŰ3kçN„&qöV –\!â~ćCa€vxߢ÷x§s]ź§Ł ÷ß㣪ęz UYąÜ‰/č}»©ÄŘPż·ëFŚŠěÜ‚kׯ™Ë…łýBˇŃÚä /-şĚĺ{iş}4°ä o® zh=…BT< ¤„(DŁŃđů”IĚś2 MqߎĹSĹÝΔř´lŢ~ Xr«dJfކµ+QٞąŢş¨â{o /[?Ş.^Nfô]x™a«yľuÜ,őľ„ŹíR…€»©4ű{÷EŐpř·›Ţ$„:„z©^¤€RDš©ŠŠT@DDĐEz’:¤“žě¦můţŘdI… !xŢçŮ'ŮÉě˝wîÎlćĚ=swÎé<Ł 6&lźP—{±©´_|–YŰoňńŐČĐꨙYŽ•ą’=“ę‘N‹ůgxőÓK¸Ú™qd¦/V†ĚëË!Rô˛†©đv}Ę—•—]îď¸Z7Ľ&őÜméµę"­žáâ˝dţ™ŢĐę·j@uÜť-č¶â.–*^Ţ ysU«U(Ô:!÷îňí†ő`fjFă¦M<üMlm ß]ňĹ'+Ńjµ[säŕŢ8„?÷ě""<€Ă÷3cÎ<4Ęů…ť˘ř-3“‹çĎ=r˝i“&äYV»n=ć,XTÍB!„ĄD©Kí[±ř#222X´|-[AxxßmÚP¤2âăůmÇv¦ÍśÍęµđ®Vťůł> &ú~ˇ×‰Ź‹cÎűÓ°¶±fîÂĹLš>{÷X8gZíďI9yâvvö,Xú1­Űw`áŇřÔ©KÝú řjÓ÷Ô©W˙ÉtŚ(’ô´´Ç~mö÷W!„Bü7•ş@*22‚zőR±R%*ą{0gţGŚ;ľHe¤§§3lähÜ=Ĺ !„Bg]©JíKKK壹łhŃŞ ]{ľ„Z­âčˇxxVŔÎŢOO6łsss24vnß–§333ľŮ°ŽľýbkkÇÎ?ŁV«čř‹…^§ó‹]ůs÷.>[ąśž/÷&55…Íßn˘r/4ň}čv89;séÂyBCîáRĆKKË'×I˘ČŽ:X¨uüZ¶z ­B!„ĄA© ¤¬­m˝`ßmÜŔ¬éďPŻAC†Śi\çť÷¦ńĺęO?űÜ*Tdıć(ÇŇŇŠţ†đĺgźCe/ofÍ[ł‹Kˇ×qrrfޢĄ|»a=s>fţĽISŹx3Ç}Sůéůň«\żĚÔ‰ă=nmÚuxR]$ŠHĄRĺDˇPбs¬m¬ů}çŻĆÇsgNŁR©°±±)©¦ !„BgH~9fą—)˛-Ëú]™ígÖĂ$óašů0ĚÇččŘůĄNE&füű-(˘űţ滍ŘđýŹ˙jń|8´ź­Z@y· Ś~{<µëÖ )kVŻ"äŢ=ĆMśD›ö»®röfy–ĹÇÇăééńŘeVÖń§ÓéĐjµh4’’’¨T©b±×-„B˙¦Pěěě055ĹÄÄĄŇpWQQfM~\ććfÍx H4™mćC—íˇĎö3+hÉţ;Ů–•Ş)!ž4G'ěěěiß©Żż1 ăߪըɒź˛őÇÍěß÷ŽN%ŘR!„Bń,‘@Jü§ŐoŘčˇ#Źfćć 2ŚC†=ĹV !„BgÝ.j×±í:vú×ë!„B!ţ»JŐôçB!„Bń,@J!„B!ŠH)!„B!„(" ¤„B!„˘Jt˛ Ą­.ď÷K ńĽ1Q˙÷%w÷G !„Bg CŠźłŤ©¤ů‰ç†yć>-)}B!„ϧgf(ČĚD“µ)i=©:2´z™ŃO”*&Jf& ,Í”@ !„B<çž™@*‹…© Są§D!„Bńěz&Rű„B!„˘4‘@J!„B!ŠH)!„B!„(" ¤„B!„˘$B!„B"’@J!„B!ŠH)!„B!„(" ¤„B!„˘$B!„B"’@J!„B!ŠH)!„B!„(" ¤„B!„˘$B<·~ýő7|}ý¸}űNI7ĄHfÍšË /t*u]Ľx‰‡Ň˘EFŚýTęüŻĘoüńÇ-´k×™łgĎ—`ËmÇŽťôęő*-Z´aőę/Jş9BńL@JQ,îŢ˝‡ŻŻľľ~´k׹¤›óLşw/__?¶oßQ"ő§¦¦2qâd˘˘˘čß˙ ^˝w‰´ăyÔ­[/fĚőČőP«U¨ŐŞ§ĐŞÇséŇe.\Śťť-¤mŰ6%Ý$!„x&–t„xÖś;g¸2ܰanIé¶dÉň’n‚x„ĐĐ0“2e}űľ^ŇÍůO3f ŔĆƦ¤›R ŔŔ >üpU«z—pk„âŮ!#RBd“@\\ůd5yĘúăŹ˙1pŕPZµjOŻ^˝™7oaľŰ—%>>__?úöŔ˛e+đőőcéŇÁďŁú¤Ş]Ľx‰ńă'Ҳe[6lŘŇ_~ů5îÜąË1ăhÓ¦C†ŚŕćÍ[$''3ţG´k×™ví:łpábRRR lov{÷ţÍŕÁĂhŐŞ=]şôŕĂu?Ç:Yuűűźˇ˙Á4mÚ’óç/üër J=uę4ľľ~>|”}űţÁ×׏¨¨űěÝű7ľľ~Ěš5·Ŕzýő7Ú¶íd,3k”rďŢżřöŰďéŃăeZ¶lÇđá#ąr% Ďë/_ľÂřńi×®3/ĽĐť‰'ç»^~bbbX°`/ľŘV­Ú3pŕĐűvÖ¶,]ú1ýú Ä×׏}űţ)TůBńĽ“@ŞEDDŇ©Snßľ]ŇM…ýÄéţýűYSDĄR±bĹ'™™ńÁÓ‹­žÝ»˙`öěy¸şş2mÚČÁ‡0aRžu?ůd5aaá <?żćüóϦNť‘cťóç/0ränßľMż~}éß˙ BCĂ5j,'Ož QŁŘŘXsňäiăëŇŇҸxń"`8ˇÎréŇeRRRiٲEľíďŃŁ;ŁFŤ ~ýzĚ›7_ßĆŮÖĐ3eĘű”-[–áÇRˇ‚ß}÷ëÖmČQÎ7ß|ǬYsqqqaěŘŃtęÔžţ9ŔđᣠĽ`mmĂĽys8°?~~Í7o=zt/t_d7sćěěě8qÍš55.OIIeÁ‚EôěŮť3¦ŁR©1c&Ľ‹R©dŢĽ9ôéó;wţĆĘ•źćŰÖěľ˙ţfĚ…ĄĄ%#G§k×.8p!C†ç “1cÍš5aęÔÉT¨Pቔű(µk×fŢĽ9ĆçóćÍy¬”É-[~ćÔ)ĆŹ›·ßĂÝ»!Ś˙. ĆuΞ=ϨQouźˇCŃŻßëÜąs—7ßĂĹ‹—Rşá˘ŃСoň×_űxá…NŚ9;;[fĎžÇW_mȱ-µjŐ`ܸ·7oµk×.ňö!ÄóHRű đúëý6l(Ýş˝XŇMOQöŕ)*ę>ŢŢ’ĆRT_|±–čč† „»»{±Őł{÷T¬X•+—ŁP(¨V­*gĎžGĄRĺH•˛¶¶aÉ’…ĆçóçÄÎť»¸{÷.|ôŃ\\\řî»MŘŰŰĐż_ ÎÂ…‹Ůąs;¦¦¦4kÖ4G0qîÜy4-­[·äôé3ĽńF_Nś8…R© E‹ćů¶ßǧvvv|őŐşu{1ĎgMll“'żK—.†űË @ź>ýůí·ß;v `ŘGżürŻżŢ›iÓŢ3ľ¶S§Ž :‚͛⭷Fĺ©ŰÜÜŚnÝ^¤jUoľ˙ţşvÍYaú"«ĎÚµkˤIďä©'&&†5k>ĹËË wŽŻoccݦM+ÂÂÂřß˙ţbĆŚiůöUÖ¶~ţů—´k׆eËëďŃŁĺłĎÖ0wî{’Y±bmÚ´*°ĚÇ)÷QĘ—/G·n/ňŮg_Đ AýÇţ’””ÄşukP* ×;+UŞČ¤IS9xđ˝ző`ńâĄx{{ł~ý—XXXЧĎkôé3€O?ýŚőëż,°ü/ż\Gdd›6­ÇǧC† âfł~ý×tíÚw÷Jtëö"ńń Ń­Ű‹”-[ö±¶G!žG2"%D¦„„DRSÓ°´´ŔÂÂś””T’’’JşYĄĘŐ«Ál۶W×2Ś1¬Xërrr$666GşYË–-?~lžűM x#ÇóV­ZŔÍ›7ąyó}úĽf lll0 aaáĆt©V­ZcLă;uę45kVÇĎŻ9gĎžC§Ópňä)j×®ŤŁŁăcmź……ť;w4>711ÁĎŻ9ŃŃ1Ćôľ’‘‘AďŢŻo|T¨ŕFĹŠó=z”˘ôE–=şĺ[–˝˝˝1ŚuÆős¬Wą˛'*•ŠÔÔÔŰ•µ­#F ËÄU­ęM‡ířçźýĆľ°łł}dő8ĺ>-=zt7QŤ7ňîł=zt#%%ĹřŢk4Z´hÎůóÚźýµŹ–-ýŚAT–‘#G ÓéřçźýŰUBń|)u#Rz˝ž-[¶ńűﻉ‹‹ĂÓÓúçHźąsç.kÖ¬ĺĘ•+™™áçל1cFagg8)Čş |ůrüöŰ.ŇŇŇiÓ¦5ďĽ3ž„„DŢxĂpßŔŠ+Y±b%{öě"66Ž3mÚ~řá'âăăٱăç퉍ŤĹÝ˝ô§M›ÖOżsDˇť?Řظ|˙V¶¬+:ťžPNź>“çďNNŽ2E>t:‹-E§Ó1aÂ8¬­­ŹŹ/¶úFŽÁ… >|îî•hÔ¨!m۶¦U«–9N@€ŤŤ5é醀äŢ˝jÔ¨ž§ž¬ÍPęÔ©MË–-P(śCăĆŤđőmDrr2AAWńđp'00ŃŁß|ěíł±±ÉłÖÖ†vgdh033#$ÄĐî~ýć[†V«-r˝Eé‹,ćććů–ejš˙żÜËłťN_`»BBBP(TŻ^-ßvíÝű711±¸ş–ŔĚ,˙6ýŰrź–¬}4‹ĄĄ%wź]¶lË–­Č·Ś¸¸xÜÜĘçYžśśL|||ľďqĺĘžX[[úŻÚ/„˙Ą.Ú´é~űíwĆŹGĺĘžś:ušůó˛`Á<|}Ç»ďN¦Qن|üń2RRRX·n=Ó¦Í`őęUpřđ^˝7kÖ|ÎÝ»÷řđĂůT¬X‘7ŢčËÖ­?ѧO?† B×®]sś$lÝú3o˝5šŠ+ćiO•*žřűźaáÂExo„(y]a633ĹÍ­z˝ž¨¨(ăIKvz}Á'{˙egĎžăňĺ+lٲŤ-[¶N܆}“©S'çąţ¸*Wödűö->|”'Nröě9vîÜ…Żoc>˙üă±^{KłNňłŢwjÔ¨Žż˙zőęÎŐ«Wyë­QxyyáęZ†sçÎN§+öĎ€¬vńEţ÷ŕ¦Ěüäî‹§)«ĘěŁFYţM»Š«Üâ–դѣGRż~Ý|×qvvzčk ˘P(žÉmBgM© ¤RSSůůç_xűí±tčĐ/Ż*xzşSľ|9víú+++ŢšńDjŢĽéׯ?§OűÓĽy3<==üÁÓ;v<ˇk×.( ţ÷żżŹ`ŐŞĺ9>?||jáääČľ}˙0aÂ8ăňfÍšKll,ľ‘_59¸şşR¦Ś ۶ýŚV«ˇI_jÖ¬Qč6—-[–·ßĂ'ź|Fhh­Zµ@ĄR±sç襤¨©_ż^Ń:!SQúâi)[Ö•qăŢbĺĘO5j,~~Í‰ŹŹc×®Ý8::0nÜ[Ĺ^nýúőđôô`ýúŻ ŁJ•Ęś8q ssł<ĺúřÔâС#¬_˙5ŐŞUĄmŰ6Ćű•6lŘD·n/ţ묅3¦1nÜ;ĽńĆ şv킹ą9˙üs€  «ĆŮ 2fĚHŽ=Ć[oŤ§gĎî8;;sęÔiüýĎ0zôHăȤB‚•Ş@ĘĂĂ ._ľbìK•*U˘jUoŞWŻĆ_ý…N§3ިGHHh‘ľ‘˝0' µçňĺ+x{{•ČɆ(şÄÄDôzpp°C«ŐqîÜy´Z-5jTÇŢŢŽ„„$“$z ŢŢ^řű/–˛§Oź‚«köěů“żţÚ‡˝˝íÚµáí·Ç`eeUäňęׯǺu_ňĺ—ëزez=Ô©S›?śMÝş9Gť•J%-Zř±{÷4oţŕ{“ńń©Ipđőß§T…BÁâĹ YşôcÖ¬Y‹Z­.R †iŃÝÜÜŘĽůGľţz …’FŤđî»ďG芪(}ń4 đ®®®|˙ýfľţzÖÖÖ´mۆ±cÇP¦ĚăOQŘr•J%ź~ş‚Ĺ‹—±oß~¬­­éŐ«íÚµáر9Ęś8qÉÉ*ľůć;|||h۶ MšřŇłgwţţ{qqń˙:jذ6|ĹW_­g۶_HMMÁŰۋիWáç×졯upp`ăĆu|ńĹZţúkÉÉÉT®ěÉĽyłéÖ­ëżj—BüWäw¦ź{™"۲¬ß•Ů~f=L2¦™sŔ pŚŽŽ=ń¤ŇÜ6lŘČîÝ{0ažžřűźeÆŻůđĂ94kÖ”ŘŘXFŚE“&ľĽţúk¤¤¤°~ý×dd¤óŮgźbbbÂŇĄËIIIaÎśß ňí·ßqú´?«WR…ŢzëmĽ˝˝éŰ÷uÜÝ݉dŕŔÁ¬_ż–Ę•+ç۞ʕ=9sć,ëÖm`ćĚĆôźW^éÍäÉďŇşu+lmmźH?'çŇĄËÜżŤŤŤ5)))ƙà VV–¨Ő)¸ş–)–Čřřx<==žxąąe:ť­V‹FŁ!))IîB!D± ĹÎÎSSSLLLŚOc°ÁÜܬ9dé€&óˇÍ|č˛=ôŮ~f-Ů'Ű2ŁR5"0|řPll¬Yż~±±qxxx0sć ăŐ_gggV­ZÁš5k™4é=ĚĚĚhŢĽo˝5şHůóo˝5šŹ?^Ĺľ}˙°qă†Bµ'&&wfĚnüž;;[^}ő>űě bcăň|źŤ(YŤ†T*µqB SSSîÝ»‡Zm¸o.&&ŤFSŕtÎB!„⿥ԍH ń$EDD€µµ5jÔŔÉÉđމ‰‰ˇRnäöń©Iůňyż“ĺß)!„B<ŻdDJçąą9ććf”/_ž*U*çµ´··§I_nÝşExxÄc}'ŹB!„x>I %ţÓśťťŤiůQ*•x{{ăí]ř‰J„B!ÄóŻT}Ź”B!„B< $B!„B"’@J!„B!ŠH)!„B!„(" ¤„B!„˘$B!„B"’@J!„B!ŠH)!„B!„(" ¤„B!„˘$B”J_‰ĹlřţM?< Ŕ–“‘¸Ś=T­ýo‰NÎŔlř~ÎÝI*µu}µ?Ż÷Žé5 )úŻą‚Ătűř×#S¨2ů?źŽz˘mËOĄ‰GŘt8<ßż…ǧc6|?goďűQÇZî÷÷qúT>„ĹĹ´¤ „ŹŁqe{üç6 NťAçĄçůlPuš{;ŕ`mřx SăSŃć‰Öť®Ńá0ćżL¨K×z.O´ěçA@¨ P˝Ľu©­ëj„ššnEŰofożIp¤š?&7ŔÝŮťz4(C‹jO´mą%¤hLĚ f…üű (\@µ'ŘGůĹq¬ĺ~ÍLEîÓ´«ýâł4ór`qďÓ\!ÄŚRBRÉÉĆ'[Ž_O K]*—±Ě±^P¸ŠÚOřäîZd ťź O¶ÜçEP  l,LJm]Áę“üčőđÓÉHV ¨žă$ő ęO´]ů ŽPř…«©ŕhŽťĺ“ëŁüŽâ8Örżżže,‹Ü§…iWPša­Ü»ťB˙&IíB”zAáj¬Ě”x¸Xäý[ ú|~™2o˘ü„Ă|´ëvŽuTiZfü|*“ŹáôÖ!Ú~t¶Ŕ4¨™ŰoŇ`Ö)ŞN=ΨŤAřÍ÷gę–ëĽţŮ%ěFä—b8OÇ%çpsŞSŽ1mëutzýcŐť®Ńa1b?۲Ą5-Ů}łáűąŞ2.ëóůe^[} ­NĎâßďPmęqlG ÷ęK|s$ľ€ă[q÷(»/ÄPgĆIVýď\ŚÁń­|{$śęSŹÓjÁ™:CőňÖxżë‡×bćĎ7¸y?Ĺ’¦BŁŐsčj<ߏ©Í–·ëä©«™·é=—C•GŻ%đÇĹ–˛ĺ+‘NKĎáébÉ÷ńŐ°šĚŘvŰŃ©Ôt3ŚH݉NĹoľ?6&ěťŇ€Ícjsöv"źě5yű¦5dóÚÄ­iCü—m07U¦˘vf۲ö‘ Ăx©‘+AKüx·‹3·ßäZćľř¨z­ `á0>~ŁÇgůRÁÉ‚YŰoć \ł Ws%$™˝—cŮ1ˇ.żM¬Ďµ5c6]Íě7{ÎßI"[\Ë'{ďˇP(ô˘Gžňň;ŠăXËýţf=ŻťíůMA|ţwKúVĺŕŚF”s0gň׌űÍŁÚŐşş#ߏö hqsŽĎö-°-B‘›¤ö !J˝Ŕ0µÜň¦aÝŚJ!]Łç›‘5éďW€zUaí0ÂăÓ©^ŢšĎ˙!69ăł}ŃežěF'gPµ¬UľuŮ[™«Ę }-'Ę;p7&•¤T-ߌňˇg2$§i˙íUVőŻĆ –ĺ‰HHç~R&J Ż+jÝ^e­ącš¶ťŠ¤ş› 5Ü <ްěÓżîŃŞş#M˝ěůëJ,?źľĎ•Źšá•YćŠţUůńD„ńD38BÍíčTvL¨KťJ†TÉcł| L•Ű{9–ÍÇ#85§ ő= ë×®hWY+Ęض+(\Eßfe Ýăż ćő&ĺX5 š±ž«ánLţéşń$: ÔpB˝~D­íÉ^Wĺ2–”µ3ăÜť$U¶3Ľß?ß oł˛řV±Ďw{¦o»A×z.lé“­n5gď$ë~÷‡kt®íĚgk›śAx|:I©Z<\ i¤ć¦JnFĄP§˘ ¶Ůú- LĹ uś¸kŘGÖ ©A݆†}dd» ĚÜ~“Đř4Ş•·~d=‡®Ćłóěý}ż¨’7߉ ÖCŇÂTÔŞhĂOck/6|Đ«2CעŐéięeObŞ–Q)T-gE¬*ŢeqźŞ9¶'K~ÇŔµő?Örżżąűôěí$ľ;ÁŃYŤi’ůţ.ë[•ÍÇ"Ś©|…ů Uiđp¶Ŕű!íBüsjpTBІđ„tÖ ­™cÄÖŢĘŤNŹF§§¦› V&ś˝“DŐrV,Ů}‡ ŽůSYrĹq¬ĺ~s÷éÚýˇt¬íd ˘Ŕđ9lgibÜż Ó®€PC )„EőĚRZ=ÉiZŇ5<‰ŇI«3˙©:ĚMŘZ`f"UqË:ąĘďFű pŐĘYaiö ‹ůJ¨  %ž.–¨Ň´dhőËvEűQ2´z®GĄŕSńÁÉl@¨ŠŞĺ¬07}PO@Šë:łëÝúů–ó8ux•µäbH2ÇŻ'«Ę g2śş™HdB›‡ăUÖĘxĹţJ¨ŠÎµťsĽ><>ť;1©Ć`ÎĚDÁŃYŤůër,_‰eŢÎ[,ţý6ţ6ĹĘť&űt± ŽČ:ąĘ›Ú”Ď´Ça*jşŮ PR˛” WçśXá§‘Ćű:r»©&C«Ç'[}aę<'˛–fĘ<ĺŢŽNĺ‡ăhuúÇŞŔ«¬÷ÓYw Św^pÇD©ŔÓĹ’č¤tľ:ĆÔnžĆuM” "3'Ȳńp:=řT´AŻ7śP'ĄhéZĎ…Źß¨Ć¶quŽLáZdţm°µ4É1ů&‚řëŠarŤ 05ĺěÍp˛1-T?dť¬G$ąŢăÜu4ór 8BÍŻgďs/&•÷{T.°/¬LŚőe ŤKăűcĆTQK3%i)é&°ČĐęY»?”X•ˇ4:=W#ÔÔÎX†©p¶15¦ľ†©óĚňjŘłF•Uʵ)ńą&YşűzxäÔçI©^§ŇđĺţPú5/÷ ßĽí WłlĎ]šyŰÓ˝~ÁÓúçw DZ–űýÍݧf& ’Sµ9^óĹľP´:ŚďĹŁÚ•U®ĚŔ)„x%Hehőy>X…x^Ä«5dh%*NAa†ÔťŞĺňžH†«ňžD…> 9ë;i¦mąÎńë \ U1}ë Fn "!%˙ĎĄÄÉŰő¨cr%49O ÷RCWNßJdéž;G¨Ůs!†+.đ‹˙}chQëđ.kĹ˝Ř4ţ 5¦^y¸XňÇĹ4:=˝łĄĺ˝X×™ODňĂń.‡$łd÷ľ9nL™Ó٧ÇĘ LůéAá*]ŤgňŹ×©éf]ŕtŃŻ7)Ë·G#Řv:ŠË!É|˛÷}?żLxćdˇqi›*Ť(<ŞüŞÚă`eÂŰß^ĺÜť$ţ Ł˙š+¤fčŚ}z%L…‰2ďwEĺ® Ŕ·Š‰)Ţßv=+ç˛rkči‡›9ďlćÜť$ö^ŽĄwćl‡Y±_U\íĚyóë@.‡$sâFŻ­ľÄ˛=wŚAŕőHĂýAŮG}®„ćś$áJhrž}10LMťJ…ݧ[=~<ÉÖSQ\ş—Ě?ß`űé(śmL)gožď6†©©čhÎÔ-78{;‰ýqt^v;KŢëú`„Ż©—§n&˛ńpKúT-°Ď ˙c 8޵Üďoî>íVż ›ŹG°őTWBU,Ýs‡•˙»‹“µ)n™÷ß=Ş]†íŃ—ĆÝĚI\„˘°Jz%!J1ŮÇ‹W`¸ ď˛Vů¦Q^ Ď ű˛uĂkRĎÝ–^«.Ňzá.ŢKćźé L?j\ĹŽž Ęđę§—ŚSsĺSOŁĘvlS›ÍÇ"h4ű7Ó§YY~ĚĽéqęđrµBŁÓ3°ĄŰďÖq±$1UËä=r¤cMëîÉŕ–ĺ™đ}0=V\ 1EĂŕ–nĆŮč” żľSŹ p5ÍçůÓÍe*—±d¦uŤn_‘©Ý°źŐ+—0aĚ›T«^…ËVďRJ-3“‹çĎ=r˝i“&äYV»n=ć,XTÍEđ÷•Xş~|ˇŔż7ô´ĺÔś&l9ÉŘo®óE›§Ř:QXŃɸM8©9ľ4ô´+p˝Jʰ ·7C[»şěÇyÍ/ţ÷™ńó îŦňż÷źÎ”ź®qhFc<ËXşśkě7W‰HHç— uźZťĹĄţĚ“ k]‰]Üó}ţ,ŹOÇcŇQNÎöĄQĺü÷Ăkj:/=ÇĘŐyĄ±ëSnˇâYTęF¤V,ţŚŚ -_ĹGËVĆw›6†`gÉ‚yܸvŤw¦Lgö‚EŘŮŰ3çýi$$ÄËŘóŰŻ´nŰžĺź~A…Š•HŹgÎűSqptdÁ’ĺĽ;e:AWX˛ŕCăk¶ţđ=;ŮÎ7G˛čăOhŇÜŹ% >äÂąłĆuâbă8vä0ÓgÍaŃÇź V«Xűůjăß·üđgNťä˝3ůôËuTr÷ŕăĹ ĐétĆu~Űń ű2ń2:vîÂw7xĺ2ńqqĚyÖ6ÖĚ]¸IÓgrď çĚB«ŐŇĽEKć,\ ŔĽEKyÎö‹śŇÓŇűµZ­ö ¶D<®Ć•íńźŰ˙ąMřkj>TݸlëۆĐŔ05>mJ˛©â!BU(€ęĺ­ \'!ECdb5+ĽÎ“xMx|:×^aLűŠů 1ÍĽp±5ăŤćĺqw±(t9E5wÇ-üćűçX®z.ö[ŤNϵČăűűů“Đ~ńY¦o˝ńŻĘ WPí!űˇ©‰‚ž ]ń«ęđŻęĘîI´]QrJÝTdd-[·ĄbĄJĚ™˙fćć\ľDŕ•Ë|úĺzĘ»®@ľýÎ$řĄŇÄXFŰťčĐůăóťŰ·Q¶Ľcßy…BŔřIď1yüXnÝĽA… ů}ç&N™Nă&M¨Xé5n\ ć{vSża#t:-cĆż••ŻôîĂę•ËŃëő( "#"p÷ô¤FÍZŚ3MFJĺx¶[Ď—čÖó%ŞxysěČa._Ľ@­ÚuŘűç,­,?i &&†í™:cc†ćüŮ34nŇGG'ťś±µ-řęîݬy ŮüÍFţŘ˝«Đ÷A) :ľđ"CFŚ,ćÖ‰Âp˛1ĹÉĆ0b|üz]ęşP9רAP¸ŠÚĎÁ éó*(L…‡‹6&®ˇ ¦[áßÇÇyÍϧŁđt±Ě1RŇŃljŽ>N….ăq†©đ©łťAajFµ«X¬ő> 7"SČĐę©•ů>ä~ţ$…©ÖŞđŁŽů–®¦‚Ł9v–ď‡U\­X=¨úżŞ'O˝O íB’Sę©Ţ}úńý¦Żń?uź:uiÜ´ŢU«pëĆ śśťŤAN~Ű´ďŁ ×˛es<żyă:ׯ2l@ß 3O®Ł""Đëő¤ĄĄ±dÁ‡XŰ<řđW«TTr–gcck ˘ěŃh4h22037§[Ď—X˛p“ĆŤˇ^ý†ÔkŘČ„eÉŢv'ggRSS3·ď:5jÖ2QŽNN¸U¨Č­׍Ažx43ss†ŽMCß&¬ůt±±1]ßÁÁ‘1ăß‘>~F…«±2Sâ‘ϨAPšŽµťčóůeţ ĹÔDÁ„ÎîĚčYٸŽ*MËÂ]·ůńx$ńj őÜmYŮżZ)>»ÎGłh×m.‡¨p±5ăͶŃł2™×b¸x/™é[opězPťzî†÷Ź‹1Ľúé%ľlą©á‚Ńţ•Î IDATĄ{É4šsš›Ëüpw±$ LMÍlADšFÇ‚ť·ůöh81ÉĽŇŘ•öµśps0ÇŃ:˙Y…}͆a¬ţ+„›÷SđrµbJ7´(Ď_Wbé–-MÔlř~>čY™ąŻTÁoľ?]ę¸0÷•*üq1†_^aÓHfożÉŤű)Ôw·ĺ»Ń>Tq}đŮ88žą;ná+W;3z7)ˢ׽Qfu\¦Ô c˘ËĽ–óíŃn.o•ą’čä ˘“2h˝đ î&SŢÁś•ŞçŘ [O–CšâcĐę Źë‡×ÂÉĆô±÷ÇGíça*¬Í•x¸.pä~^í8s;‰÷~ş†˙­$l-LÖĆŤ…˝˝ů;ŕÁű6âë îşÍŐ%~ůn{@¨Š?ßŕđUCvJ÷eX5 Î6†ă&(LE 7Ö ăĂ_o‘˘ˇSmgÖ ©AY{ĂĹÚé[opňfű§ţoćsŁ c¨(mB<»J] Ő˝×Ë4őkÁŮÓ§¸|™ťżüL÷^/ÓđPô<ţ kM›űĺ;Ň`oď@hh‹W|‚ť]ΓÂwa­Úuř|ÝFÎť9MŔĺË|ńéJ*Vrgöü……*çˇ#'üăWża#ć/]θ‘Ă ě_ĄRɢŹWQĆUrâźUa*Ş»Yç9Ôęô\‹Rsă~ +űWcFOOÖcÎŽ[ĽÖ¤,ŐË[ŁŃéyqůy” ›Fú`mˇdŢŻ·x÷‡kśŃ(ßú6gĚ7AĚyą _ «ÉŐ5ŁľÂĹÖŚ1*rţníťeh« |ôş‘ Lßzť›÷SŚéZa†T˘ów’ů{ZC.…$óŇŞ‹üq1†÷{VfÍ|đó Ć}{•î· A”ß|z5,ĂŢ) Siµ1OöŢcŢ«^čőp5\ÍýÄtôöfAoo<ËX˛ţ`“ĽĆâ>Ui]Ý“7ycÍe” ¨á–*ÓŁ¶19MK‡Eç07Sđͨڔ±5ăĂ_oŃcĹ®.ńĂĘ\I@¨Šj嬌AN¤m-L¨äliě‡z¶ĆżZŔ‘ŕx>Xťĺ­ůţxł¶ß¤v%ŰŢŹµ?v?Żáfmü•űůٶ# TEë…gŢĂ“ Ăkq/6Ť+/ĐŞš#|śř~´×´¸9N6ů˙˝x/™v‹ÎŇ˝ľ {§6$%]˨ŤAŚü:íă3S€ĂŐ\ Ifݵ);&ÔE•¦cüwWłéŞń>µŔ0µ3ţÂ|n<ěÚÚ­PmB<ŰJŐ‘«Őjąqý^ŢUéŇ­]şőŕĎÝ»řţ›Ťô</ďŞÄĹĆAąňĺCđńż=żÓĚŻ%NÎÎů–[ĹË˙S')ăZÖÚ—śśÄőŕ`śë»Pˇb%Ě-,¸…—wUăë._µ\ąB·?äŢ]llliŐ¦­Ú´ŁkŹž™é7©ZíŃé^U«qčź}čt:c:`B|<áaˇTńň$žz×®=4HŐét\ ľ*Ô3,0LE­|‚›Q)¤kô|3˛&ýý ź ôŞÂÚa„ǧS˝Ľ5ź˙BlrÇgű˘ËIňݮѹ¶3ź ®Alráńé$ĄjŤW÷ďŦ’”Şĺ›Q>ôlP€ä ¦ütťĎ×``‹ňĆöîąĂĺd¬Íó¦2fíşMrš†s3›ÓˇÖʍIąńG8Ď uś Ë{źO`ššśH…«čŰĚ%pčj<;ĎŢçÔś&ÔĎ ®UňćŰ#Ô*ྐྵ¥ćěí$>˙;„SsšŕYĆ’{±©D'ePŢÁ S%J…sS¸ťJ#O;,Í źŻwc ýé“YN@¨ŠŞĺ¬Ř8ŇÇX—ş.\Ľ—@rš–ńß^eU˙j jYž„tî'e`˘TPÁŃčU™ˇëŃęô(†©čR×ĐŹúÜxÔ1di¦,TŰ…϶RHĄĄĄňŃÜY´hŐ†®=_B­VqôĐAăŚ|>uęRł–+—.bаXY[óçî]ś:qść-ZXnç®ÝřßžÝ|ţÉ şvď‰F«eëßÍÇ«?ÇŇŇ’˝^fýšĎŃj4¸{zr50€MëżbÔŘq¸ćJ,Čú/ż@«Ń0xÄH,,,řó÷]XZZR¶lႱÎ/vĺĎÝ»řlĺrzľÜ›ÔÔ6»‰ĘUĽhĐČ0{ Ł“JĄ’KÎajj*'˙…pôĐÁB­ăײŕ}H”¬ p5Ăň™™-0\Ť©RÁ«ľŇyăŐĆŘŢßv ­ž*“ŹábkFŐrÖômZŽŃíóż?ĺ×3÷17Q2Ş]…ËŰ×2ŚÜŤIĺÄŤD–÷«–ăďζfŘYšŕîlH? SѥΩ›Q©huĐş†ŁqYp„ďr†“¬ŰŃ©ě: Ŕź—b(koNíŠ6|>¸Ż5)k,ÓT© KťŤvźŹF©€×›ćLiv¶1+p2Gm#ŔćcLxÁ=Ç=%ŽÖ¦™üź˝;Źé|8ţťÉd˛ďB b‰˝"(iѢöĄU­­^T•˘{Q~ŐVi--J[{©Vµ”*Ş­}ŻÚ©,ö Y'Ëdťĺýc’‘‘„چ÷çşÎ•™3Ďśç>'g’ąĎłiY¦ä 4ZK×ÝŔŔrCwŠ]ńŕ+W‰”ŁŁ“§~Ć÷Ë—ńÁ„whüXSs—<…BÁ„ÉńýňeĚ™ůąą:ęÖăăOgŕîQü`aO¦LźĹ+–ńÉäI ?ĺܽ8đ%śť]řiŐJâăńŞPˇ#Fu;o˝7•ß.eÖ§źˇŐR3 “>úW·’ÍäááÉ”Ďf˛rŮR>ś4Ţ4ýyó ~y¸yÜ”ŁŁC^ÁĎ«ľgÓ†őĚ[¸´Äń=Š´Z-'Ź3?W(´ďŘ G'G6˙¶Á<Łâ‰cGĐjµ89É?˝MFŽž+ YEN*kęZ–ߦ/÷Nv¦/®Úl=ąz#?hFs×Ő›A˝*NÝŐ :eę"uëřŞCR,ľäFÄfđf§›c,Ăb´Ř©W§Ăc´4¬złËQ­$eaŰbcËo1)[hŚ–ľNŘÝď?SčŢ´Â]ícz¶žhMMŞYîcxLąz#u}1MÇ˙Ý.Ő,Ę„FkÍÓ‘çw'Ë?.ç®gŇľĺßę©9D'g› ”ä=a1Z>ëP(–‚ÎDk±·UZ˙°h-oĎŘ ŢîląŤđ ¶®d®§s#O6˝Ő¤ŘznŁ%°˛“Eo‚Ř ÝŇ•±`ëŢÝÔckŁŕŔÍŘv&‰íˇILůí2Ó7Grôă¦+ĎÇ’śçŁ‘syçRQĎK˛µ}‰ń8›N$°;<™A CéŃ´+ňZĂb´4»ÍXĆŘ @#_ËóçÔŐ4ĽśUx9ŮrřR*€yßňŹLĂż‚=v*%Ç#Ó0ő«8•čďĆť>C%‰]ńŕ+W‰@Í€Z·˝‡ŹŁŁŻŽ~ťWGľ˙Ŕ×K–ąľŞŻ/ă˙÷a±ŰU(tďý,Ý{?[äëíÚw ]űë4lÄšß~7?wswgěŰď[GQ±}”7ťy>_żjLühJ±ŰčÜ˝ť»÷¸marěđ!rsM->•«đęč±4hÔ€–­BX0.Q×®‘››Ë±Ă‡¬JśĹýqîzF(˛ëWDSź‡řâŞV)Q*@“ˇł(óÓˇŐp)rJng{Ós-ÖťŤÍŕŔy Cž¬lnḞ’cľ*ŻÉбîh<=ň—ky]Ć Î&mš"˙ýůë^|Üô%ÝŢVI¶Î`7ňíŢú¶¨§“-á1…Ą‚)9ëśO!<6ńÝŠNNî´Źö¶JTJEˇ2Ó7GŇŘĎ™†ľÎ$¦ç˘Í6ŕV`˛‡Ó×Ň9{ýfŚ1Trµ5ŹqsTˇŃZţ.fţ~#;]vIŢco«,ô;Ţa‡Ô6ĐÔâm»Sđřś:ż¨ß™Î`äÜŤ ęWu.¶žČ„,ž×đbËJŰ6×­5wĚŁĄűc–Inh´–`—»ŞÇh„WŇđ÷v Kc/ş4ö⥚t”ó72đpTY}>–ä<ż’Ef®ÁÜ2xëó;íG¶ÎŔÉ+é´®íĆ Ö> jíC#?g¦nŚĽyüb´Ľ”×eµ(Îv6ä •ňşĄjłőĚßE˙Ç}P(nN}žß’ ¦Ŕ…»˘Í-Ýá1Z*8›şĺĺęŤwü»q§ĎRˇ¸cěB_ą»Ź”ĄÉÍÝWz>űłľüĘśDԮȌŮóčőÜ󸺹áć~o§@w'"ĆÔ}ŻVĄÂ_´‹şOXôÍéĐmmt¬ăľŔßRŤÖ2aÍE^YAJ¦®Đöž ňćB\o¸LX´–µGâč6ű$ϧ T(hUË7FŻ<ˉ+iě KfŔ‚P˛r ćd/4F‹­ŤÂ"Q»u l˝ÁČŮë4Čű’ŢŞ–Ţ.j†Ι¨t]Láůů˙2kËó—ÚĐčôB eçF^\ŠĎâë.q&*ťź˙ąÁ;«ĎŰĘs§}T)ôŞŔ” —Ů‘ĚńČ4^^Φ“ ,€‹˝ ¶JľÜzŤWŇŘp<ž‘+"̉Ctr6j•’óyS•wměĹęC7Xs8ŽŻĄ3é—‹¬;‡§“Ęü%řV%yĎsÍĽůfGŽÇsîzËöÄđěĽÓśľ–nq^ÜÚ"Qđxć˙Î žgnZŕňß׫©7G.§2sËÎ]Ď`Ë©DşĎ>ĹúŁńE&Q©Yz’3t¦ FÓ—ükIŮ…¦C‹ľ9ѵő1Ň}Î)Ţűé<±ZöžŐđÎę Vv¤AU§»<ď|žG'›î×›’M¶ÎPčůťöăR\&m?;Î7;˘8›ÁúŁńĚŰzŤç tŻLÍÔťśÍŐĬ"Źo«Z®řzŘ1ú»łŹLcwD2gž@©Ŕ<,<&ŞîjĆý|‘ă‘iě O¦ă¬¸ŘŰ[1C ´–äďĆť>C%‰]ńŕ“DJ<Ňš4 bŮ«4äeěě Oťm«V3đ˙†˛t叅¦Ş†đXS÷+[›Â_ ĎĆfů…´ŕş%ĂiěçLĎą§yrÚ1N_Kg焦ĹvŮiäçĚŹ#˛ţh->>ÂÇż^fäÓľ,fJ \T¬ۨ¤,Ú}vśŹ7\ć“>5ŃŚćÄ%<ĆÔĺ°`̡1Z‹Äćb\&Ů:Ł9ésP+Ůňv®§äĐú“c<7ď_Ľ]lŮ˙ż`ÜL-:Eěo›şîĚT‡ÄňÔôl8Ϥž5PP|+Ďťöŕ›˙ $Řß…>óţĄýŚ\OÉaĎűÍĚ]•Ô*%óŐáÔŐtžš~śŐßŕµöľ8Ř*ÍăÓžiäI®ŢČ3łN0ş/Ż´«ÂŰ?žŁóç'ÉČ10äÉ*·˝TIŢ3¦Ł/ovňăÍÎŃěĂ#,ÜÍ7ë2¶ŁďÍăť^č~cŹgQżł°č śěnNĺTĂ…U#°ęŕu‚&ćÍUçxˇeEVżÖ°ŘřÇtđĺÄ•4š}xM†Žł±¦Ö‚âRsHHĎ5Żł¶ĄBÁ†7›ÁăSŽ2`ÁjT°gë{MÍ“(X{>–äĹĺřĚBĎď´ }ťY:,ovDüŃ&¬ąŔŕ'*3ŻŔ˝śŢď^Ů^Ą˙‚Đ"÷]­R˛ůí&$isiűŮqúJ#_gvOlVŕsŁĄßă>™€‹˝ŤĹŚjB€ióź˙‰ăZR¶yě—Bä“DJ!Ä#):9›©G©ëăČş±Ť Íl(ÄWŰŁXą?–_Ć6*vśžâŃ%‰”BGRU;Ň·+ë0Älr/&÷ň/ë0„(ąü&„B!„V*ÓD޸é`…xŘČą.„Bńp)ÓDި銅xÉą.„Bńp)ÓDĘŢVzŠGśëB!„—2ývg§R VÉ•zńpS«ŘÉy.„BńP)óËäÎv6e‚÷”śăB!„ź2źţÜÖF»Ł M†®¬C˘Ôą;Şd|”(÷öžËbGx&§Ł˛ąžŞGo(ëî?%ř¸ÚĐŘ׎öőhSÇľ¬CBQĆĘ<‘S?O'éŮzrtƲG˙L­Rŕlg#I”(×"bs™»=…ăWłË:”2§7@´FO´&?ÎdTÍŽ7;¸Xٶ¬CBQFĘĽk_>[Ž*ÜUŘŰ*eşhQîŘ(ŘŰ*qwTá!-Q˘śŰ{.‹ˇ+â$‰*Ćń«Ů ]ÇŢsYeŠB2ň@´Hd§R`§’1%BQV"bsż.ń‘ěÂg ˝ĆŻKdůŠŇ2%„Ź ¦EJ!ÄaîöI˘JHo0/!„ŹI¤„Bí=—%Ýů¬tüj¶tńBG$RB!Ěv„gŢ÷:˝]lô¸3Ţ.ĺ·[wY7!„eë#%„%µqă&~ůe=—.EbccC˝z 6„-‚Ë:´rët”u­Q«†W¤v%[Ţ_—ÄŽ;'îŽJ¶ľU€ö_Ä’–eŕµv®tkěHu/Ó~×ÜUÜeÍÚă&„˘ü“DJQ.-^Ľ”Ĺ‹—ŕăS‰śś\Ž=ĆńăÇůňË9´jŐ˛Ś#,ź®§ęď{ťkŹiX—÷ó~ZřR‚ŞŮ1íw żťĽűúË⸠!„([ҵOQîčt:ľűî{&NĎćÍřëŻÍĽđÂó FV®üľŚ#,żĘb’‰°>Ţ”LÄőÜű_y)‘É9„âŃ#-RBr';;›ěěśťťP(Śó}ú<‹­­-qqńtďŢÁŔš5?Rł¦?;vědüřIxyyńÇůüó٬YłŽ7ŢCBB"7nBˇPňěł˝3f …é~`áá,X°Ó§Ď`4iҤŁGŹ˘nÝ:Ěśůům·źP˘xúőÄĄK—™7o6?ý´†“'OQż~}f͚ΦM›ůé§5$''óôÓO1iŇÔj5ýµŤ•+ 22•JE“&MxýőŃÔŞŔٳ猼BÇŽíQ*ďîš‡Ł’qťÝi`O’VĎ7»R‹,÷L·rˇş—Š„t={Îf±t_éŮEgďur§o°?Ngö¶óóy;R¨ŕlCŹ&ŽŤ°á¤–Żw¦’Űöz•myí)7UU“™cŕ䵾ٝʵ$ťéśş6vdp+|=lHÉ4pŕBßěJ%9ĂŔú×*áëaú78©›;#Ú¸ĐmŢő»Ú!„Źi‘B”;NNN4kŔ˙ţ÷o˝ő.?ý´ŤFC@@MŞUóŁbEoĽ;vě2żw۶tëÖĹ"ˇX˝z űöí§FŤ¤¦¦ňÝwßłqăfÎť;ĎđáŻrđŕ!ŞW÷ŁFŤj˙|={>Çĉ ŐšĆşôčŃ0µúdff˛˙Azőęa±˝ bܸwůçźĂ8pżţÚĘ֭۱µµĺăŹ'Ó¶m\]]¸pá"WŻ^%"â,YYY4nÜęŐ«YlŻaÆŘŘZWë˛eËźdd˛°°p:tho.ß±c{öěŮË™3a%ŢŽ5ńÔŞU 0M¤ T*ńóó JÓ¬wąą¦îŤO<ŃŠE‹A‡ť ¬KăĆŤéŐ«;*•éĎüĽyłďúXřW0m'ZŁ#<Ö4–)4&‡UÝMŻUt±1·ĺ·úTĂKĹ…¸’Źú7:×<öčll.]‚“ť©M¨‰ź©Kc˙Îôoá\¨€kI:ĽmŘŇ_Ţ7˙ĺ©UE·-•dŽFĘ }B!$‘B”C—/G˛˙<==éÖ­ :ďëĹ˙~Mş«}^q0Ť'jŰó­]¨ëcšµŻmÓqü7:‡k@Bş?ďwőŕÂŤ\ÚÚc0@ÁI Ł“uW·cX ŤŞŞ™ü[ň÷A!„i‘B”S_|1“áÇRŁFu4šdtş\5jČÇO6OĆ/ż gĎîV×U§Nm–,YHË–-¸|ů2‘‘‘<ţxK–.]hž^ÜţÔ IDAT˙5ž[uëÖ…Ď>›JŐŞUůëŻm:tćÍY¸đŞU«fŐdŵw×&š _źoM!*ٲ«ŰĎGŇůhc2QÉ:ž¨eOÍ *¶…e2dy<Úl##LߢáFŞžúUl©UÉö®ö9<6—WżOŕđĺlűŞi]ËžÓŃ9 _Ď™hSËÓ»k9y-‡FUŐ´©cĎÜm)däZ¶Č-Ý—ĆŃ+Ů8Ű+i`ožŔâvű`ÍqBńđ*j Ŕ­ëÖĺ?Vř™żŘä-ŞĽE Řî I‡ŚFé!ʇ'NĐ´éc÷Ľ.ŤFSh’{!˙óg0Đëőčt:ŇŇŇđő­zĎë~üöŰ&>ůäSŞUócýú5eÎOAĎ~}ťhŤľ¬Ă(wŞşŰđëhź˛C!(QQѸ¸¸ R©°±±1ßćCqëă{@­¶}Đą@ Ë[ôy‹ˇŔb,đ3?i)řë̤kꤤ¤ś¬ 55WW×2ŽHü˙ţ{†oľYHXX/ż+w‰TBB=zÜĽŃdÆ hذAY†%))©deecoo‡Ńh$33‹´´4\\\Ę:4!î«7;¸1tE\ˇ{(‰Âl”¦ă%„âŃS®©Á‡@çÎݨRĄ +W.篿¶˛hŃÖŻ_Kbb"ǿʀýčŰ÷y¶lů ±dÉB||d0°€“'O‘””\äk+zc0‰ŠŠćČ‘c…^÷đpż/QQV+Ű2ŁŹă×%J2u6JŃÇ‹ŔĘw7ó Bň­\Ť‘š?˙KŢ{ďVŻ^Ĺüů_*ăĺĺĹرŁY±b%ׯ_'))‰E‹–đꫯH%ĚŠ»)©­­ŠĘ•«PĄJÔꢿÉ ”âQЦŽ=ˇT$¨šL˘P” jv,RQşô !Ä#¬\µHąąąâéé €§§666E–{úé§Řż˙ ,ÂÉɉzőęŃ˝{·"ËŠGÓcŹ5áâĹ‹DEEc4šZ™ęׯ‡ťÝÍ/ŤO<Bvv6aaá$'kP( J•ĘÔŞU« #âţ ¬lË—*°÷\;Â39•ÍőTý#ŮJeŁWűÚŃľž$PB!ĘW"eŤ7Ţxť>}úđÓO«Ę8ń Q*•Ô®]OOOÂĂ#HNÖpřđZ¶lZ­ ''‡Ă‡Ź›«ĂÎNM`` ^^žeą÷_›:ö’8!„·(W]ű¬‘’rs*ôěl™}JÍËË‹ŕŕf( Óé,şü t: 4k$I”B!„0{()˝^Ďôéłxţů>ôéóÓ§ĎDŻ×—uX╚šŠŃ®®.čőNś8ÉŃŁÇČÍÍĹŐŐŁRSÓĘ:L!„Bńy(©~ř‘äädÄ!ILLbŐŞŐe–x@ݸ€N§çČ‘#$'kHMMăčŃăäćęňĘÜ(Ë…B!ÄćˇK¤Îť;ÇŹ?®ćí·ßÄŃŃŢzë V­ú‘łežxŔčt:Đj30ŤT©R™jŐü#™$&&˘ÓéĘ0R!„Bń Q”`ť˘ŔşüÇĘ?ó›ĽE•·¨[Ŕ=!!éL-Dׯ_',,GGęÖ­‹‡‡;`ęňV›@ýúĄ>…ľFَzőjĄşÍ˘äţ z˝ťNGZZľľUďyÝB!„x4EEEăââ‚JĄÂĆĆĄŇÔ†ŁP•‚”.µÚöq@ä9€.oŃç-†‹±ŔĎü¤Ąŕc ¬3{hgí˘$Ôj5jµ->>>řű×°RßŐŐ•ćÍą|ů2±±×Íłů !„B!‰”x¤yzzňÄ!Ĺľ®T*  ŕ>F%„B!tÝ)!„B!„¸×$‘B!„B+I"%„B!„V’DJ!„B!¬$‰”B!„BXI)!„B!„°’$RB!„Ba%I¤„B!„ÂJrC^!„Ő®\ąZÖ!!„â>©^˝ZY‡đ@’DJa5ů*„BGťtíB!„B+I"%„B!„V’DJ!„B!¬$‰”B!„BXI)!„B!„°’$RB!„Ba%I¤„B!„ÂJ’H !„B!„•$‘B!„B+I"%„B!„V’DJ!„B!¬$‰”B!„BXI)!„B!„°’$RB!„Ba%I¤„B!„ÂJ’H !„B!„•$‘B!„B+I"%„B!„V’DJ[ś8q’'N–uB!„â&‰”¤¤¤ś¬!9YCjjjY‡#îBLL,ÁÁ­Xłć—{VǸqéŮóąť#=z<˸qďY,Âä×_ŁgĎçhÝş óçX÷{ş[˙ő|‹ŹOŕí·ß#$¤;v!11‘Ó§ĎđÔSYąr•ŐŰ+í}ްa#ÁÁ­ŚĽR*ŰB‡ÉC‘H­[÷+µę=ńńńĽ÷ŢxşuëÉňĺ+ČÎÎć˙ţo(ß_ň\S§~ʸqďűú† 0ŕ%4ŤU±‰˛o~›’˘(|đÁÁ­ -˝{?_Öˇ•ŞäädRSÓČÍÍ-ëPđďżg6m:..Î <¶mŰĺă÷4eĘTř›ž=»3`@ĽĽĽČĚĚ@«ŐŢŐ˙Ž[÷ůÚµ(‚[±nÝŻĄşB<ňTe@YY°`éééĚš5źJ¨ŐjBBZX·ÄŰ "33ĂüĽoß~ :„®];P«V!!­qtt,őřĹ˝Q0yŠ‹‹'   Ł)’’’¨‰y}ĄJ•Ę*¤{báÂŻČÉɱŘGQvÂĂ#řřă©Uëćg¶<üžÂÂ"hŰöIĆŹ׼®eËěÚµ '''«·WöY!E‹ÔÝŹO 88úőëáéé‰Bˇ`ÄWhŢ<¸ÄŰčÚµ3}úĹŕÁCٲĺ‹2}ô ˝zY¶˛edd0sćtîÜť¶Ś5†¸¸¸"cÉÍÍeńâeôęŐ‡vĽřâ@/^zÇ–“âşY>|„ŕŕVěŰwŔĽ®kמ|ňɧ:ôĎ?ߏ֭Űđěł}Yµj5FŁ±Đ¶·nÝÎŕÁCy≧čÔ©;<Ő˘…L-Ž}úĽČ•+W=ú ž|ň)žy¦óçN§»měÖÖÓ»÷ó=zŚÓ˘E'Ož*´­;vÜŠ™3ż _żA·bÇŽť@áßÓ¸qiÝş WŻ^3ŻËČČ k×^ 4ÁpŰŘKó|{á…·"%%…ť;wÜŠ^Z‘Ú¶í`ŃŠÔµkO>ýtű÷`Ŕ€Á„„´ĺąç^dóć-őÜç™3?çŮgűđŮg3 nņ Íeăă2eť:u§mŰ ö üń×mŹÁÔ©źŃ˘Eů˘IAďĽ3ž6mž&++ë¶ŰB‡Eąk‘Ňét|űí ¶nÝFff&:´§J•*eŚF#kÖü¦M›ĐhRđ÷÷gĐ ´lŮ‚íŰw0}úLÂĂĂY˝ú'&LG‡í8p0}ű>OďŢ=ů믭¬\ů#GŽ`éŇeÄÇ'PŻ^ ď˝÷.>>¦«ë3g~Nff&Ż˝6Šţý0{öfϞÖ-›Řµk7‹-aýúµć¸~ţy-›7˙NRR~~ľ 8€6mžŕúő 4iÓ>aŐŞŐ\¸pźJŚý͚ݯCüH8yňT‘_*VôĆ`0Í‘#Ç ˝îááNÓ¦ŹÝëËĄ¤¤$<==ďy]ׯß`čĐŤž}¶®®®ěÜą‹Ď>›Y¨ěńă'3ćuüüü2ä% ›6ýÎđá#Y´č7nĆČ 2śÔÔ4zőꎗ—˙ý“'OáĆŤx†\d,ŃŁß ,,ś®];ăďďĎ™3ˇŚó&ŮŮŮeŤF#ďľ;ţ9LŹÝđ÷÷çÜąs,Yň-g™={V©Łł8púQąreţůç0sćĚăúőĽóΛćr?üđ#sçÎ'(č1^yeÉÉ~űm#‡ýĂ÷ß/§B… ć˛YYYŚ÷>]şt˘WŻîlßľ‹ďľűµÚ–W_}ĺ¶ńXSOjj'~@·n]xîąŢ…ţÎ4hĐ€)S>dőęź Ź`ĚQT¬X‘ Y˙„ ďŇ·ďqfĚřśŻżţ€Żż^Hbb"sç~ŽRYüµĹŇ>ßĆŽMZZ“'ŚZmË˙ţ7—ŰżłgĎqęÔiúő{•JĹęŐ?óŃGźP©RĹ"/vďŢ www/^F“&ŤéÓçY7n€FŁaČ—ÉÉɡWŻžxx¸łwď~>řŕ#’’’8°‘1tíÚ™ 6˛cÇNúöíc^źžžÎß˙Í3ĎtÄŢŢţ¶ű!„‹r—H}ýőöîÝÇ믏ˇZ5?vďŢĂÚµkqtĽŮbĹŠ•lÚ´™wŢy‹jŐü8pŕo>řŕC>ýt*mÚł(Wˇ‚kÖüÄ /ôcčĐ˙ŁK—.E¶B­Xń7nfěŘ1řűWçčŃcL›ö666„„´¶(7v켽˝Y¶ě[>ůd?˙ü#vvvĄtEqWžmmUT®\ŁŃH\\99…Ż6u5_Ž‹F“‚JĄbĹŠďůóĎżČĘʦE‹`Ţ~ű ‹/ÉĄaÁ‚EhµZ~řa…ą;× A9rLˇ˛Ó§Ď$ €ĄKš?G/Ľđ|”-JŢ2~;gĎžcٲE4iŇ€ŽŰcggÇO?­áů矣zőjÄĹĹóő× i×® łfMGˇPĐ˝{W ÂW_-࣏>0oóĆŤ8&Mš@ëÖ­ň¶Ů—^ĘĆŤ›o›HY[Ojj*łgϢM›'ŠÝ¦ŹO%şvíŚF“Bxx]»v¦bĹŠĹ–÷ôôäťwŢdňäŹŮµk~~ľ¬]»Ž!C^˘NťÚ·=–Ą}ľ=ůd3g~AűöO™»„ßNhh[·ţnľPŇŠ=žcóć-E&Rőë×ĂĹĹ…Ĺ‹—ѵkg‹:-ZJzz:«V­Ä×·*ôăťwĆłpábz÷îYdצMĂǧ۶m·H¤víÚCNN.]»vąă~!Äâ\uíËČČŕĎ?˙bÄá´mۆB­Z7˙feeńË/ë7î]BBZăççGż~/ŇšŤ7ˇV«ńôô°XŠëz§×ëyçť·ńóóĄFŤęôďߏS§Nú"­P(đôôŔĂĂO<== mË×z^ye8O?Ýúö}žîÝ»±jŐŹe‡Býúőđö®ŔČ‘#HOOçüů ˙ůř‰›{¬ ~~UÉű.‡‡‡;!!­xňÉ'prrÄŮى'ž!$¤î(Pµjeó—Ra)=]‹N§C§Ó±cÇN6l€­­Š­[·3fĚ›%îúUR{öěăÉ'C,ĆĨT* `QîŇĄK\şt™îÝ»’™™‰FŁAŁŃ ÓéhÝúqNžÂĽy_ńůçs¨VÍŹáĂ_ľăűîĹůf­Ö­˝žžžÔ¨QťŘŘX«·µuëvZ¶lłł“9Ć””:vlOff§Ný[äű ť;wâäÉSÄÇ'ŘŢ6*Vô&8XzO!ĺŞE***ŠÜÜ\6´ě¶ńŘcM‰‰ŕęŐkdggóż˙M¶¸š¦Őj©^˝şUő9;;ăčxsŔ®»»;:ťŽÜÜ\«Ç=ĺǕ߅(_ŁF Ů´iłErV±˘·Eť™™™VŐ'nO©TR»vm<== Ź 9YĂáĂGhٲ…ůw›““ĂáĂGČÍŐag§&00/Ż{ße­ĽrqqfĎžíDF^ˇNťÚŘÚÚ’ś¬ˇoßţ\¸p‘ÇŹŇşőăwŢP ¤¦¦‘žžnńĄ6_ÍšţĎŻ]‹`Ö¬ŮĚš5»Čí%'kpqqFŁŃP·nťBŻŰÚť@勍Ť% ŔżP×0777ĽĽĽ,ÖEE]#9YC‡E_ąĎďYüüü ­«Zµ*jµ-ׯÇćĹ…Bˇ(˛E¦~ýzlÝşťÄÄ$Ľ˝M-ŠŽ‰€˝˝=FŁťNWěßFkë±µ˝wcKß<]»öäÚµ(–-[Tl‚śď^śo•+űX·“Sቋěíí‹l9żťôôtóجť;wYćvça×®ťY±b%Ű·ď ˙IIIáđᣠŘď¶Ý#…âaS®©ü\ŁpתÂ]­ľůć+\]]-Ö©T6÷(˛’î`"///‚›ń÷߇ĐétWÄ :ť…š5 ’~˙w`0P(”ÔŞ`N<<<Ü©S§6‡!::şÔęĘ˙"_t7KËuůE^}őš4iTäö<==¬ţ2zk<ĹőřĽ5FŁśśś5ëł"ËW¨ŕUäú»ˇ×n4Ťčő ˙šÖßš\WÝYďW=%‘á (Ń„2÷â|+Ků17cذ˙+˛Śżż‘ëÁ”<Ö­[›m۶ӿ˙‹ěر ˝^/Ýú„Źśr•Hůůůakkˉ§đőő5Ż?qâd2ľŘŮŮgqĺóôéÓTŞdý@kő!_µjŐ°łłăĚ™P‹ŘĎś %  ćmß+î­ÔÔTŚFpssAŻ7pâÄIôz=uëÖÁŐŐ…””4RSÓ$‘ş˙=ĂË/żŠŁŁżţş///bcŻ`u‹đí¸¸8ăęęÂąsç ˝vîśe7Řüń+zÓ˘Eób·igg‡››gĎž+ôšV«E­VŰ2UĄJeŽ?Á`°¸"ź””Lb˘ĺ•}_ߪ¤¤¤Ü6–âäן‘‘a±>%Ąč›Ż^¸p±Đşóç/ ×ë©ZŐ4yźź/FŁ‘łgĎQŻ^ Eٰ°pJĄ%ö~Ős'999L™ň)­[?Ž»»;Ó¦MgÍšŐ¸¸8űž{qľ•%gÜÜÜţSŚ]ştćË/ż"!!]»vS§Ní"[ě„âaV®ÚŕčÚµ K–,eĎž˝\ľ|™ĺËWXLeëŕŕ@ź>Ď1wîlŘśśYşt‰‰IT«ćÇĉxâ‰{—(žN§#11­6…ÂôeUĄRqíÚ522LcÓŃét¨Tĺî#sß( ćĎźĂâĹËرc'g΄Rˇ‚}ú<Ç/—z«ë«ŻgďŢýŚ9†ž=»áććĆÎť»đń©\¨ěĉă3ć ú÷‰.]:ˇV«Ůąs7géÔ©ŁąÜČ‘ŻpŕŔAFŤKŹÝđôôäČ‘#9rŚ1cFŰ*ŮĄK'Ö­ű•ŮłçF@@MNźţ—ŘŘëćä'_‡OłeKÓ¦}ĆáĂG ¬Ktt żý¶‰Ę•+9F+_“&Ť©^˝K—~Ktt ţţ58tčp±c|5jȬY_päČQóôçÇŽgĐ řů™ZĆ+VôfĚQĚ™3Ź#^ŁU«ÇŃh’Ů´éwÜÝÝ3fÔ~%sżęąťĐĐ0V­ú‰AúSłfMFŽÁěŮ_ҡĂÓ·ý[|/ηűÁŰŰ› ĽX»öôzÍ›X×|®6‚=şQ±bENť:Íž={yć™ćńąůcą–-[A×®ťÍ3ĚV¨Pŕŕ`ľţz:ťŽNťžąŻű%„‚r÷­PĄR1bÄpFŚn±ľGŹîćÇ …‚ľ}űXLÍz«ůóż,´nŐŞ•ćÇť:=SčC“&ŤŮľýćÍ ÇŤ{×âőĆŤóÝwßšźűřXnCˇPĐŻß‹ôë÷b‘1ůřT˛Ř~ľ˘Ö‰Ň‘€Á`ş:îčč@ÝşuÍłôU¬čMxxZm‘„„||îm÷ĐňÎÉɉ·Ţzť·Ţzýž×U©R%ľýv_~ů57ţ®’6„={öZ”mÚô1–-[ĚâĹKY»v=YY™Ôdţüą´jŐŇ\ÎÍÍŤĺË—đÍ7‹Ř¶mZ­˙L›6ĺ¶_€•J%_}5—ŻľZŔŽ»ŘąsAAM™;÷sĆŽ}ˢ¬BˇŕóĎg°rĺ*6oţť]»văěěBďŢ=;ö5 O(P°žyóf3}ú,věŘ…ŁŁ#={v§]»6řyŮÝŐ6?úő2­>9j~žŁ3p)>‹úUťJ+ě{ĘÖFA÷Ç*Đş¶[‰ß“AÇ;”ŃXůöe„B‡D‰ň!Ő}D!î‰_ŽÄQÝËž7;ů™×µŻďAűúw˝Íđ-ő«ÜLš.ÜČDg0Z¬{UŻ`Ďü—ęXőžX-uď$EÄfPŻś!„â~(Ť®}Ć‹BÜsŰB“°¶‹·WźçB\&¶ĂvńŃŻ—hőÉQóă9]Ĺçő}¤gëHĎÖÓlňa- ފΓ›IDAT-´Í¬\v/ďbý±xV¸Ží°]\KĘ&Ţ`Š=1=—W—Gŕóú>ó˙ĺ»ý±x覓ż·=o¬:‡Ç¨˝T»Źq?_@g¸˙­-RÚl=ą˙;ńµ—¶źçxdšůőť˝Dő·ŕňęZ}r”SWÓ‹<B!Ä}TjąËÝ&RĹU,É”âžk_ß´Em ¬ěČřnŐI[Ô–zŐŔh„ł±ćnx#źňEmŁdń®h†. Ă^mĂŇ—ëÚ¦ZĄŕ¬Ö,ȵ9!řyÚ“AJ¦ž-§Y44őŻ7ćJB®żd~煉 týâ=›V`˙¤fL{>€9^cW¸¦Čř[¸ręjó¬ůۢx§K5R3u´űě8WłřeL#¶Ž{Ś˝g5üz,ŢÜ2›XsřSűÔäôÔ–8ŞmŹŃŇ @ËŃ%a,ßì~µ849?O{Ţ_{ŃÜş¤79—Á˛=1x:ٲoRóŐaÉîľŢe.sîúÍ)ťÁHçĎOrŕ\ +^©ĎÖqŹáę`Ă[?ž7×;üŰ~=ĎĘ ű´%µ*:0ň»’˙’…BŇWŞ9ĚíÚgĄB””Rˇ@­‚Č„,‚Ş»`okş&t51‹´,=ő«ZNÔJ&tŻÎě?Ż˘R*8™ĆÁÉÁćň·n3-SŔSő<đqS¦noµ+9đË؆(¦?w˝‚Ľ9{=0µrŤ]y–ąjóR×SrOËĹF© Š»şČř[Ôt%%SĎĄřL*:¬ŐńĹźW™Ö§&Îv6üoÝ%ŚFŘřfcÔ*S¬_ô«MđGG̉TX´;•‚5ŁáíbkŢvXŚ–gz¦–»_ŽÄúiKjVt`ö€Z¬>tÝśl^ŠË$GgdxŰŞ|ŘŰ€†ľÎě=«aÓÉŢxĆŹËńYdëŚćDęëíQ$Ąçň÷ä` yÉkBz.µňęřëßD&÷ň§m ;K_®‡ŤňÖB!Ä}Sęó@Ü«1RF¤Ëźâşx#“¬\ }o¶ľ„ĹhQ)' o[…7Vťçťź.püăćTr-:ąŤŃâ¨VRÝËŢĽ.<6ľ-*š“(€dm®ąĚş#qDkrx}Ő9&ŻżD;‚Ş»°oRP±cŠ+;áć`É+iTt`ÖWđqS3¬m~:tťOU5'QžN¦?×ů PXŚ–ć5]-’¨Ś=WnNŚńÓˇ<]ßĂśD)atsP™˛đŘ l”XŚ3p±W‘•c0×e§RPŁ‚iźß_{‘\˝˙wâĺlK­JŽĽŘ˘Ż>UŐüţ­|żć[Ď$Ń®ž;/´¨DUŹ»›D!„¸ ÷<‘É&„ĺŇ™h-ö¶J $ aŃZ*:X$ ‡/ĄšWőĽýyÓ8 'ňs&ŃČąŘ Ćw«nQ.,FËK!•ÍŹ;7ňdÓ[MJ»BÁţ®śĽšÎuÜůz{ßżÚ•R6[Ď•Äl‚Ş»XĽçď‹©(Ŕ<)DX´e>Sü¦î~ů \h´–Ž <-ĘÄjr¸’e.«Ĺ×ĂwGËÇŻ¤™Ë„Çh©ëăM^|ąz#?hFs×b÷qÎ€Ú lU‰?N'˛öpS6D˛gbŤýśK|ś„BŮ™lÂxËă[3=i‰BÜ3ˇŃ¦™ć v ŹÉ°¦üb\&Ďő/?Žj@«Z®ĚřýĘm·­5w ¸šMf®Á"aÉŐ9#Óܢco«D“ˇłŘNdB?ţ}˝ˇř?-\9«eöźW ŞáBϦS’Ąn¤äX”_¶'o{Ő6yűŞ-ÔâŁĹÓIeî–hŁTp#Őr;Ë÷Ĺ`0ŢlŮŠÉ@›m°ăĐĹv…'ÓďńJye´ćŐĄV)Q*(´Ď?şÁąĽîŽă2‰LČ"Řß•zůł˙ÍPŮ(ŘQô1!„˘4) <-*Gą5Źą+Ą5k_ÁÇ,›Ń …B’*!D© ‹ÖŇđ–{;…F§S//JŇćŇsÎ)´ňˇoóŠĽŐ©ßě&*9»Řm¦féIÎĐqîzFŁ)1±µQP»@WÁó×3ČŐiWwݦŢąśĘĚ-W8w=-§é>űëŹĆßvLP‹šnś¸’ĆŇ=1Ěxˇ–y˝ŁÚ†6îLÝÉ®đdŽE¦1tIĹd9z"˛ %RˇŃ–ÉUçFž¬>t˙ľÎ™¨tfü~…ďöÇâbo_^ë\x¬©ŰŢĵ—8•ÎĎ˙Ü çśÓôm^Ń<Ť|´&‡ťM¶ů>UăľŔßRŤÖ2aÍE^YAJŢł‰k/Ňď›3ŹLăxdoüpžě\]›x{<„BR¤ˇś„RJ ňY›H•43řiP(Ś™Ĺ”B»ťnNfňEÄfPżŠ9:}ż:Cµ öĚzŃ”¤ôň¦v%¦ţvąŘmŽéŕˉ+i4űđš ťy˘ [›› QhŚ';%ŐňĆHŐpaŐȬ:xť É‡ysŐ9^hY‘ŐŻ5Ľmü-\ą’M§†ž´¨iŮEnĹ+ő©ámOď/O3dIťyQŻŠÓÍîx·táËwë=°Ćw«Îŕ^˙áÝgź"5SÇŕĘÓźŤÍ`ö€:\IČäń)G÷óFµŻĘŠWnÎlŘ'Ř›mˇIĽżć"K†ŇŘĎ™žsOóä´cśľ–ÎÎ MÍ]ý欟§]gźä™Y'¸—ÁŽ M-şa !„÷Jn®ţ –‰SIfëłz,Uq—Ko]Ż(°.˙±ň–ź6yŹUy‹mŢâź°FˇPÖ1sO!UŤ†ęŐ«Ýózň?{˝^ŹN§#-- _ߪwxç)[gŔcÔ^ÖżŢÎŤ¤•C!„xEEEăââ‚JĄÂĆĆĄŇÔ†ŁPÜŰY\SR4?x{{¤ąy‹.o1z,[© ¶^A ‡-YÓ"UÜĆŠúY°r]bbâ>+ęBbťşšÎç[®âboĂSő<Ę:!„B<`BC#Ž`Jš pnRÜOŠy^¬â©’n ¨ä©`?DXw‘Ś“BüWŃÉŮ„L=ĘúŁq¬Ű;Ui óB!ÄĂBˇ ©]»'˙ĆÔ •źŹ•«€ő9Ź…ŇţĽŕMyoM˘ôyKŽ^Ż;®TÚ4“î}B»UŐĂŽôĹíĘ: !„B< ââ~r¸™‡ÜšLĺ»o“M5«¸~„űć'SYďľ;ţi•B!„BÜ Iýűżř3Eá$*Jô˘r»J˛îfÖľâÖ Đpˢ[ąňۨ´´´_ďőŕ2!ţ«'NrâÄɲC!„BXáĚ™3ł÷îÝ›ĚÍI% .pç™ü¬jôą]"u§ Ý.›Ë2żIMdÖ¨QíŁŃpN’)ń JII!9YCr˛†ÔÔÔ˛G!„B”@JŠć‡¦M›ţdbĘ=ňó˘îs{»ŮůnUěëÖŚ‘Ę •ż±‚ă˘(đšS‚fČ[§ăć4éŢŢú'%%˙f0ŕ{7ăĄ&MšĚ?˙üĂoĽNŹÝ ˝Éđ˙oď~^Ł8ă8Žv&ŮÄJÖ&t% Iţ ‰—B žŠ—ŢZŹ‚­ţ …^zi Ĺł›K©MA¶Ĺ‚č-µX(ŃĐě%běĆü0Énë$Ď>;3űĚ$»;IŢ/XöŮgfóĚ‚?<Ďó}>ťTooŻîÜůY’tëÖ÷şvízčß›™ůQÇŽq¶ ęĘ;írą¬Bˇs7şmmmő§b±xUŇŞ'rěĄ}Q*MŠ–AĘ,$uÝn›łRŇn ®˝ü¨\^Ľ™öl)ĎóT*•BT©ô«|ßoę/ ššúş©żżż?ńř8ĽĘĺÝ µ°PÖččhźqŢśuUŇ+Ő‹LŘçEEUíŰÓl””~ŹTÔ!Uf‘‰ťýQÚM…[’6$UŠĹw>YYYůÁóĽZŇĄ~çÎŤëÉ“y=}ú¬ˇżZ­ęîÝß4>>Öôß÷5::Úôb™!/_ţ§őő ő÷÷©Ż/ݵµuU*•n?,ąś–?žű˘X,~«úÁ»ÚÍöŚTTĺ>)ĺl”ä¶´/nV*j0{úlK!ű§Îśy÷ËK—._źšúć«7ĄŃs’Ôj–jxxX###*•~Ńääg;ýłłż«R©hllLţáđÓpT=zô§––^„^;y˛¨jµ¦çĎ˙ŐěěæëoëěŮ÷Úý°ärZZ\\şyńâÇßÝ»woIő=QŰŞźµ­Ć˛çÁ©43R-CUšs¤Ě˝Rćž)S°OJŠţľ¤íéé˙LO߸$)??˙÷çCCľďť®ŐrÇ‚`e:~ü-ĺóy]¸đˇnߞѕ+—ĺyőĄ|÷ď?Đůóčĉ‚ …ÂÎlS__ź}Âß÷•Ďç›ú{{}ť:uZµZMËË/ôúőVÓ====űöoÉ÷;{ l.—Űyy‡Ů€öń<Żá˙IĺrŞJZŢÜÜ~¶şşň×ÜÜüěÄÄűT_·ˇćđuv”ˡĽ‰÷%ůEö˝9ăÝn›/ĎjűĆ»Ýî‘Ôkô{Ć÷ěg _XÝ…°łi7ŐX‘ŻŇN ˘B”S¨JF҆);T!É Lö5©1„™c¤}~ٵgÉ.`gWŕ3VXuľ¸Ą|{QRňĄ}ö~©¸ĺ}a‚’č揱ST[jS)ŕŕŠ*Cn¨¨¶˝ŚĎeOÔžC””>ÄÍLď.3TaK˙âîŤŔÁdâ‚ËŇ=—¨=…()]±‰` 43SÁ}ć«fµrŹÔXŞť0\qA¦jô١(ÉŇ˝° Őjlgű@ŇÎNŮ׼~{ś°ç&LŮ\˘ NźÍPŐßöY(Ó~…—0eż·jŰĘeoa Č®¨đ¤Z*—ĐÔ–%Ą_Úg3—䙟“|ß\ćö7 RŔÁ–&HąĽw,@Ú # SPDX-License-Identifier: GPL-3.0-or-later """Top-level package for wordbook. Empty because everything is in sub-modules.""" mufeedali-Wordbook-c0cb87f/wordbook/base.py000066400000000000000000000360101505534671000210470ustar00rootroot00000000000000# SPDX-FileCopyrightText: 2016-2025 Mufeed Ali # SPDX-License-Identifier: GPL-3.0-or-later """ Base module for Wordbook, containing UI-independent logic. """ import difflib import os import subprocess import threading from collections.abc import Callable from concurrent.futures import ThreadPoolExecutor from functools import lru_cache from shutil import rmtree from typing import Any import wn from wordbook import utils POOL = ThreadPoolExecutor() WN_DB_VERSION: str = "oewn:2024" # Global lock for WordNet database operations to prevent concurrent access. # This is critical for ensuring that wordlist loading and search operations # do not interfere with each other. WN_DATABASE_LOCK = threading.Lock() wn.config.data_directory = os.path.join(utils.WN_DIR) wn.config.allow_multithreading = True POS_MAP: dict[str, str] = { "s": "adjective", "n": "noun", "v": "verb", "r": "adverb", "a": "adjective", # Note: 'a' and 's' both map to adjective "t": "phrase", "c": "conjunction", "p": "adposition", "x": "other", "u": "unknown", } DARK_MODE_SENTENCE_COLOR = "cyan" LIGHT_MODE_SENTENCE_COLOR = "blue" SEARCH_TERM_CLEANUP_CHARS = '<>"-?`![](){}/:;,' SEARCH_TERM_REPLACE_CHARS = ["(", ")", "<", ">", "[", "]", "&", "\\", "\n"] def _threadpool(func: Callable) -> Callable: """ Wraps around a function allowing it to run in a separate thread and return a future object. """ def wrap(*args: Any, **kwargs: Any) -> Any: return (POOL).submit(func, *args, **kwargs) return wrap def clean_search_terms(search_term: str) -> str: """ Cleans up search terms by removing leading/trailing whitespace, specific punctuation, and unwanted characters. """ text = search_term.strip().strip(SEARCH_TERM_CLEANUP_CHARS) for char in SEARCH_TERM_REPLACE_CHARS: text = text.replace(char, "") return text def create_required_dirs() -> None: """Make required directories if they don't already exist.""" os.makedirs(utils.CONFIG_DIR, exist_ok=True) os.makedirs(utils.DATA_DIR, exist_ok=True) os.makedirs(utils.WN_DIR, exist_ok=True) def fetch_definition(term: str, wn_instance: wn.Wordnet, accent: str = "us") -> dict[str, Any]: """ Obtains the definition and pronunciation data for a term from WordNet. Args: term: The term to define. wn_instance: The initialized Wordnet instance. accent: The espeak-ng accent code. Returns: A dictionary containing the definition data with pronunciation information. """ definition_data = get_definition(term, wn_instance) pronunciation_term = definition_data.get("term") or term pron = get_pronunciation(pronunciation_term, accent) final_pron = pron if pron and not pron.isspace() else "Pronunciation unavailable (is espeak-ng installed?)" final_data: dict[str, Any] = { "term": definition_data.get("term", term), "pronunciation": final_pron, "result": definition_data.get("result"), } return final_data def _normalize_lemma(lemma: str) -> str: """Normalize a lemma by replacing underscores with spaces and stripping whitespace.""" return lemma.replace("_", " ").strip() def _find_best_lemma_match(term: str, lemmas: list[str]) -> str: """Finds the best matching lemma for the search term, prioritizing exact matches.""" normalized_term = term.lower().strip() for lemma in lemmas: if _normalize_lemma(lemma).lower() == normalized_term: return _normalize_lemma(lemma) diff_match = difflib.get_close_matches(term, lemmas, n=1, cutoff=0.8) if diff_match: return _normalize_lemma(diff_match[0]) return _normalize_lemma(lemmas[0]) if lemmas else "" def _get_lemmas_from_related(matched_lemma: str, synset: wn.Synset, relation: str) -> list[str]: """Get normalized lemmas from a relation group.""" target_list: list[str] = [] for related_synset in synset.get_related(relation): for lemma in related_synset.lemmas(): normalized_lemma = _normalize_lemma(lemma) if normalized_lemma.lower() != matched_lemma.lower() and normalized_lemma not in target_list: target_list.append(normalized_lemma) return target_list def _extract_related_lemmas(synset: wn.Synset, matched_lemma: str) -> dict[str, list[str]]: """Extracts synonyms, antonyms, similar terms, and 'also sees'.""" related: dict[str, list[str]] = {"syn": [], "ant": [], "sim": [], "also_sees": []} related["syn"] = [ _normalize_lemma(lemma) for lemma in synset.lemmas() if _normalize_lemma(lemma).lower() != matched_lemma.lower() ] for sense in synset.senses(): for ant_sense in sense.get_related("antonym"): ant_name = _normalize_lemma(ant_sense.word().lemma()) if ant_name not in related["ant"]: related["ant"].append(ant_name) related["sim"] = _get_lemmas_from_related(matched_lemma, synset, "similar") related["also_sees"] = _get_lemmas_from_related(matched_lemma, synset, "also") return related def get_definition(term: str, wn_instance: wn.Wordnet) -> dict[str, Any]: """ Gets the definition from WordNet, processes it, and prepares data structure. Args: term: The term to define. wn_instance: The initialized Wordnet instance. Returns: A dictionary with the processed definition data ('term', 'result'). """ first_match: str | None = None result_dict: dict[str, Any] = {pos: [] for pos in POS_MAP.values()} synsets = wn_instance.synsets(term.lower()) if not synsets: clean_def = {"term": term, "result": None} return clean_def for synset in synsets: pos_tag = synset.pos pos_name = POS_MAP.get(pos_tag) if not pos_name: utils.log_warning(f"Unknown POS tag encountered: {pos_tag} for term '{term}'") pos_name = POS_MAP["u"] # Default to 'unknown' lemmas = synset.lemmas() if not lemmas: continue # Skip synsets with no lemmas matched_lemma = _find_best_lemma_match(term, lemmas) if first_match is None: first_match = matched_lemma related_lemmas = _extract_related_lemmas(synset, matched_lemma) synset_data: dict[str, Any] = { "name": matched_lemma, "definition": synset.definition() or "No definition available.", "examples": synset.examples() or [], **related_lemmas, } result_dict[pos_name].append(synset_data) clean_def = { "term": first_match or term, "result": result_dict, } return clean_def @lru_cache(maxsize=128) def get_pronunciation(term: str, accent: str = "us") -> str | None: """ Gets the pronunciation of a term using the 'espeak-ng' command-line tool. Args: term: The word or phrase to pronounce. accent: The espeak-ng accent code (e.g., "us", "gb"). Returns: The pronunciation in IPA format (e.g., "/tËÉ›st/"), or None if espeak-ng fails. """ try: process = subprocess.Popen( [ "espeak-ng", "-v", f"en-{accent}", "--ipa=3", "-q", term, ], stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True, ) stdout, stderr = process.communicate(timeout=5) if process.returncode == 0 and stdout: ipa_pronunciation = stdout.strip().replace("\n", " ").replace(" ", " ") return f"/{ipa_pronunciation.strip('/')}/" utils.log_warning(f"espeak-ng failed for term '{term}'. RC: {process.returncode}. Stderr: {stderr.strip()}") return None except FileNotFoundError: utils.log_error("'espeak-ng' command not found. Please install espeak-ng.") return None except subprocess.TimeoutExpired: utils.log_error(f"espeak-ng timed out for term '{term}'.") return None except OSError as ex: utils.log_error(f"OS error executing espeak-ng for term '{term}': {ex}") return None def get_version_info(app_version: str) -> None: """Prints application and dependency version info to the console.""" print(f"Wordbook - {app_version}") print("Copyright 2016-2025 Mufeed Ali") print() try: process = subprocess.Popen( ["espeak-ng", "--version"], stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True ) stdout, stderr = process.communicate(timeout=5) if process.returncode == 0 and stdout: print(stdout.strip()) else: utils.log_error(f"Failed to get espeak-ng version. RC: {process.returncode}. Stderr: {stderr.strip()}") print("Could not retrieve espeak-ng version information.") except FileNotFoundError: utils.log_error("'espeak-ng' command not found during version check.") print("Dependency missing: espeak-ng is not installed or not in PATH.") except subprocess.TimeoutExpired: utils.log_error("espeak-ng --version command timed out.") print("Could not retrieve espeak-ng version information (timeout).") except OSError as ex: utils.log_error(f"OS error executing espeak-ng --version: {ex}") print(f"Could not retrieve espeak-ng version information (OS error: {ex})") @_threadpool def get_wn_instance(reloader: Callable[[], None]) -> wn.Wordnet: """ Initializes the WordNet instance in a thread. Handles potential WordNet database errors and triggers the reloader function. Args: reloader: A function to call if WordNet initialization fails (e.g., to trigger download). Returns: The initialized WordNet instance. """ utils.log_info("Initializing WordNet...") try: wn_instance: wn.Wordnet = wn.Wordnet(lexicon=WN_DB_VERSION) utils.log_info(f"WordNet instance ({WN_DB_VERSION}) created and ready.") return wn_instance except (wn.Error, wn.DatabaseError) as e: utils.log_error(f"WordNet initialization failed: {e}. Triggering reloader.") reloader() raise e except Exception as e: utils.log_error(f"Unexpected error during WordNet initialization: {e}. Retrying.") reloader() raise e @_threadpool def get_wn_wordlist(wn_instance: wn.Wordnet) -> list[str]: """ Fetches the word list from an initialized WordNet instance. Uses _threadpool decorator to run in a separate thread. Uses WN_DATABASE_LOCK for each individual lemma access to allow search operations to interrupt. Args: wn_instance: The initialized WordNet instance. Returns: A list of lemmas from the WordNet database. """ utils.log_info("Fetching WordNet wordlist...") try: # Get all words first with WN_DATABASE_LOCK: words = list(wn_instance.words()) # Process lemmas one by one # This allows other WordNet actions to interrupt wn_lemmas = [] for word in words: try: with WN_DATABASE_LOCK: lemma = word.lemma() wn_lemmas.append(lemma) except Exception as e: utils.log_warning(f"Error getting lemma for word {e}") continue utils.log_info(f"WordNet wordlist fetched ({len(wn_lemmas)} lemmas).") return wn_lemmas except Exception as e: utils.log_error(f"Error fetching WordNet wordlist: {e}") return [] def format_output(text: str, wn_instance: wn.Wordnet, accent: str = "us") -> dict[str, Any] | None: """ Determines colors, handles special commands (fortune, exit), and fetches definitions. Uses WN_DATABASE_LOCK to prevent concurrent access with wordlist loading. Args: text: The input text (search term or command). wn_instance: The initialized Wordnet instance. accent: The espeak-ng accent code. Returns: A dictionary containing definition data, or None if input is invalid/empty. Exits the program for specific commands. """ if text and not text.isspace(): cleaned_text = clean_search_terms(text) if cleaned_text: with WN_DATABASE_LOCK: definition_data = fetch_definition(cleaned_text, wn_instance, accent=accent) return definition_data else: utils.log_info(f"Input '{text}' became empty after cleaning.") return None else: utils.log_info(f"Input text is empty or whitespace: '{text}'") return None def read_term(text: str, speed: int = 120, accent: str = "us") -> None: """ Uses espeak-ng to speak the given text aloud. Args: text: The text to speak. speed: Speaking speed (words per minute). accent: The espeak-ng accent code. """ try: subprocess.run( ["espeak-ng", "-s", str(speed), "-v", f"en-{accent}", text], stdout=subprocess.DEVNULL, stderr=subprocess.PIPE, check=False, timeout=10, text=True, ) except FileNotFoundError: utils.log_error("'espeak-ng' command not found. Cannot read term aloud.") except subprocess.TimeoutExpired: utils.log_error(f"espeak-ng timed out while trying to read term: '{text}'") except OSError as ex: utils.log_error(f"OS error executing espeak-ng to read term '{text}': {ex}") class WordnetDownloader: @staticmethod def check_status() -> bool: """ Checks if the primary WordNet database file exists. """ db_path = os.path.join(utils.WN_DIR, "wn.db") utils.log_info(f"Checking for WordNet DB at: {db_path}") return os.path.isfile(db_path) @staticmethod def download(progress_handler: Callable[[int, int], None] | None = None) -> None: """ Downloads the specified WordNet database version using wn.download. Removes the temporary 'downloads' directory first if it exists. Args: progress_handler: An optional callback function for progress updates. """ download_dir = os.path.join(utils.WN_DIR, "downloads") if os.path.isdir(download_dir): utils.log_info(f"Removing existing temporary download directory: {download_dir}") rmtree(download_dir) utils.log_info(f"Starting download of WordNet version: {WN_DB_VERSION}") try: _ = wn.download(WN_DB_VERSION, progress_handler=progress_handler) utils.log_info(f"WordNet download completed for {WN_DB_VERSION}.") except Exception as e: utils.log_error(f"WordNet download failed for {WN_DB_VERSION}: {e}") raise @staticmethod def delete_wn() -> None: """ Deletes the WordNet data directory. """ try: utils.log_info(f"Deleting WordNet data directory: {utils.WN_DIR}") rmtree(utils.WN_DIR) except OSError as e: utils.log_error(f"Failed to delete WordNet data directory '{utils.WN_DIR}': {e}") mufeedali-Wordbook-c0cb87f/wordbook/main.py000066400000000000000000000141551505534671000210670ustar00rootroot00000000000000# SPDX-FileCopyrightText: 2016-2025 Mufeed Ali # SPDX-License-Identifier: GPL-3.0-or-later from gettext import gettext as _ import gi gi.require_version("Gdk", "4.0") gi.require_version("Gtk", "4.0") gi.require_version("Adw", "1") from gi.repository import Adw, Gio, GLib, Gtk # noqa from wordbook import base, utils # noqa from wordbook.window import WordbookWindow # noqa from wordbook.settings import Settings # noqa class Application(Adw.Application): """Manages the windows, properties, and application lifecycle for Wordbook.""" app_id: str = "" development_mode: bool = False version: str = "0.0.0" lookup_term: str | None = None auto_paste_requested: bool = False win: WordbookWindow | None = None def __init__(self, app_id: str, version: str): """Initializes the application, command-line options, and theme.""" super().__init__( application_id=app_id, flags=Gio.ApplicationFlags.HANDLES_COMMAND_LINE, ) GLib.set_application_name(_("Wordbook")) GLib.set_prgname(self.app_id) self.app_id = app_id self.version = version self.add_main_option( "look-up", b"l", GLib.OptionFlags.NONE, GLib.OptionArg.STRING, "Term to look up", None, ) self.add_main_option( "info", ord("i"), GLib.OptionFlags.NONE, GLib.OptionArg.NONE, "Print version info", None, ) self.add_main_option( "verbose", ord("v"), GLib.OptionFlags.NONE, GLib.OptionArg.NONE, "Make it scream louder", None, ) self.add_main_option( "auto-paste", b"p", GLib.OptionFlags.NONE, GLib.OptionArg.NONE, "Automatically paste and search clipboard content", None, ) Adw.StyleManager.get_default().set_color_scheme( Adw.ColorScheme.FORCE_DARK if Settings.get().gtk_dark_ui else Adw.ColorScheme.PREFER_LIGHT ) base.create_required_dirs() def do_startup(self): """GApplication lifecycle method for one-time setup, like setting resource paths.""" self.set_resource_base_path(utils.RES_PATH) Adw.Application.do_startup(self) def do_activate(self): """ The main entry point for when the application is launched. It ensures a window is created (if it doesn't exist) and presented. """ self.win = self.get_active_window() if not self.win: self.win = WordbookWindow( application=self, title=_("Wordbook"), term=self.lookup_term, auto_paste_requested=self.auto_paste_requested, ) self.setup_actions() self.win.present() def do_command_line(self, command_line): """ Handles command-line argument parsing. This can be called before do_activate(). It processes options like --look-up, --info, and --auto-paste, and can trigger actions in an existing window or set state for a new window. Returns: 0 on success. """ options = command_line.get_options_dict().end().unpack() term = "" if "verinfo" in options: base.get_version_info(self.version) return 0 if "look-up" in options: term = options["look-up"] if "auto-paste" in options: self.auto_paste_requested = True utils.log_init(self.development_mode or "verbose" in options or False) if self.win is not None: if term: self.win.trigger_search(term) elif self.auto_paste_requested: self.win.queue_auto_paste() else: self.lookup_term = term self.activate() return 0 def on_about(self, _action, _param): """Callback for the 'about' action to display the application's about window.""" about_window = Adw.AboutWindow() about_window.set_application_icon(Gio.Application.get_default().app_id) about_window.set_application_name(_("Wordbook")) about_window.set_version(Gio.Application.get_default().version) about_window.set_comments(_("Look up definitions for words")) about_window.set_developer_name("Mufeed Ali") about_window.set_translator_credits(_("translator-credits")) about_window.set_license_type(Gtk.License.GPL_3_0) about_window.set_website("https://github.com/mufeedali/Wordbook") about_window.set_issue_url("https://github.com/mufeedali/Wordbook/issues") about_window.set_copyright(_("Copyright © 2016-2025 Mufeed Ali")) about_window.set_transient_for(self.win) about_window.present() def on_quit(self, _action, _param): """Callback for the 'quit' action.""" self.quit() def setup_actions(self): """ Creates and connects global application actions and keyboard shortcuts. These are actions that are not specific to a single window, such as 'About' and 'Quit'. It also defines the application-wide keyboard accelerators. """ about_action = Gio.SimpleAction.new("about", None) about_action.connect("activate", self.on_about) self.add_action(about_action) quit_action = Gio.SimpleAction.new("quit", None) quit_action.connect("activate", self.on_quit) self.add_action(quit_action) self.set_accels_for_action("app.quit", ["q"]) self.set_accels_for_action("win.quit", ["w"]) self.set_accels_for_action("win.search-selected", ["s"]) self.set_accels_for_action("win.random-word", ["r"]) self.set_accels_for_action("win.paste-search", ["v"]) self.set_accels_for_action("win.preferences", ["comma"]) self.set_accels_for_action("win.toggle-sidebar", ["F9"]) self.set_accels_for_action("win.toggle-menu", ["F10"]) mufeedali-Wordbook-c0cb87f/wordbook/meson.build000066400000000000000000000021231505534671000217230ustar00rootroot00000000000000pkgdatadir = join_paths(get_option('prefix'), get_option('datadir'), meson.project_name()) moduledir = join_paths(pkgdatadir, 'wordbook') python = import('python') conf = configuration_data() conf.set_quoted('APP_ID', application_id) conf.set_quoted('VERSION', meson.project_version()) conf.set_quoted('PROFILE', profile) conf.set('PYTHON', python.find_installation('python3').full_path()) conf.set_quoted('localedir', join_paths(get_option('prefix'), get_option('localedir'))) conf.set_quoted('pkgdatadir', pkgdatadir) conf.set('datadir', get_option('datadir')) conf.set('prefix', get_option('prefix')) configure_file( input: 'wordbook.in', output: 'wordbook', configuration: conf, install: true, install_dir: get_option('bindir') ) program_executable = join_paths( meson.project_build_root(), meson.project_name(), meson.project_name() ) run_target('run', command: [program_executable] ) wordbook_sources = [ '__init__.py', 'base.py', 'main.py', 'settings.py', 'settings_window.py', 'utils.py', 'window.py', ] install_data(wordbook_sources, install_dir: moduledir) mufeedali-Wordbook-c0cb87f/wordbook/settings.py000066400000000000000000000236441505534671000220060ustar00rootroot00000000000000# SPDX-FileCopyrightText: 2016-2025 Mufeed Ali # SPDX-License-Identifier: GPL-3.0-or-later from __future__ import annotations import json import os from enum import Enum from pathlib import Path from typing import Any from pydantic import BaseModel, Field, field_validator from wordbook import utils class PronunciationAccent(Enum): """Enumeration of supported pronunciation accents.""" US = ("us", "American English") GB = ("gb", "British English") def __init__(self, code: str, display_name: str): self.code = code self.display_name = display_name @classmethod def from_code(cls, code: str) -> "PronunciationAccent": """Get accent enum from code string.""" for accent in cls: if accent.code == code: return accent return cls.US # Default fallback @classmethod def from_index(cls, index: int) -> "PronunciationAccent": """Get accent enum from index.""" accents = list(cls) if 0 <= index < len(accents): return accents[index] return cls.US # Default fallback @property def index(self) -> int: """Get the index of this accent in the enum.""" return list(PronunciationAccent).index(self) class BehaviorSettings(BaseModel): """Settings related to application behavior.""" live_search: bool = Field(default=True, description="Enable live search") double_click: bool = Field(default=False, description="Search on double click") pronunciations_accent: str = Field(default="us", description="Pronunciation accent") auto_paste_on_launch: bool = Field(default=False, description="Auto paste from clipboard on launch") @field_validator("pronunciations_accent") @classmethod def validate_accent(cls, accent: str) -> str: """Validate pronunciation accent.""" if accent not in [a.code for a in PronunciationAccent]: return PronunciationAccent.US.code # Default fallback return accent class AppearanceSettings(BaseModel): """Settings related to application appearance.""" force_dark_mode: bool = Field(default=False, description="Force dark mode") class StateSettings(BaseModel): """State settings.""" history: list[str] = Field(default_factory=list, description="Search history") favorites: list[str] = Field(default_factory=list, description="Favorite search terms") window_width: int = Field(default=400, description="Window width") window_height: int = Field(default=600, description="Window height") @field_validator("history") @classmethod def validate_history(cls, v: list[str]) -> list[str]: """Validate and limit history size.""" # Keep only last 20 items return v[-20:] if len(v) > 20 else v class WordbookSettings(BaseModel): """Main settings model for Wordbook application.""" behavior: BehaviorSettings = Field(default_factory=BehaviorSettings) appearance: AppearanceSettings = Field(default_factory=AppearanceSettings) state: StateSettings = Field(default_factory=StateSettings) class Settings: """Manages all the settings of the application using Pydantic models.""" _autosave_disabled: bool = False _instance: Settings | None = None _settings: WordbookSettings def __init__(self): """Initialize settings.""" self._autosave_disabled = True self._config_file: Path = Path(utils.CONFIG_DIR) / "wordbook.json" # Ensure config directory exists os.makedirs(utils.CONFIG_DIR, exist_ok=True) self._load_settings() self._autosave_disabled = False def __setattr__(self, name: str, value: Any) -> None: """Override setattr to automatically save settings when properties are changed.""" super().__setattr__(name, value) # Auto-save after setting any property # Avoid during initialization or for private attributes if not self._autosave_disabled and not name.startswith("_"): self._save_settings() @classmethod def get(cls) -> Settings: """Get singleton instance of Settings.""" if cls._instance is None: cls._instance = cls() return cls._instance def _load_settings(self) -> None: """Load settings from file.""" if self._config_file.exists(): self._load_from_json() else: # Create default settings self._settings = WordbookSettings() self._save_settings() def _load_from_json(self) -> None: """Load settings from JSON file.""" try: with open(self._config_file, "r") as f: data = json.load(f) self._settings = WordbookSettings.model_validate(data) utils.log_info("Loaded settings from JSON configuration") except Exception as e: utils.log_error(f"Failed to load JSON settings: {e}") utils.log_info("Creating default settings") self._settings = WordbookSettings() self._save_settings() def _save_settings(self) -> None: """Save settings to JSON file.""" try: with open(self._config_file, "w") as f: json.dump(self._settings.model_dump(), f, indent=4) utils.log_debug("Settings saved successfully") except Exception as e: utils.log_error(f"Failed to save settings: {e}") # Behavior settings properties @property def live_search(self) -> bool: """Get live search status.""" return self._settings.behavior.live_search @live_search.setter def live_search(self, value: bool) -> None: """Set live search status.""" self._settings.behavior.live_search = value @property def double_click(self) -> bool: """Get double click search status.""" return self._settings.behavior.double_click @double_click.setter def double_click(self, value: bool) -> None: """Set double click search status.""" self._settings.behavior.double_click = value @property def auto_paste_on_launch(self) -> bool: """Get auto paste on launch status.""" return self._settings.behavior.auto_paste_on_launch @auto_paste_on_launch.setter def auto_paste_on_launch(self, value: bool) -> None: """Set auto paste on launch status.""" self._settings.behavior.auto_paste_on_launch = value @property def pronunciations_accent(self) -> PronunciationAccent: """Get pronunciations accent as enum.""" return PronunciationAccent.from_code(self._settings.behavior.pronunciations_accent) @pronunciations_accent.setter def pronunciations_accent(self, value: PronunciationAccent) -> None: """Set pronunciations accent by enum value.""" self._settings.behavior.pronunciations_accent = value.code @property def pronunciations_accent_enum(self) -> PronunciationAccent: """Get pronunciations accent as enum.""" return PronunciationAccent.from_code(self._settings.behavior.pronunciations_accent) # Appearance settings properties @property def gtk_dark_ui(self) -> bool: """Get GTK dark theme setting.""" return self._settings.appearance.force_dark_mode @gtk_dark_ui.setter def gtk_dark_ui(self, value: bool) -> None: """Set GTK dark theme setting.""" self._settings.appearance.force_dark_mode = value # State settings properties @property def history(self) -> list[str]: """Get search history.""" return self._settings.state.history.copy() @history.setter def history(self, value: list[str]) -> None: """Set search history.""" self._settings.state.history = value def clear_history(self) -> None: """Clear search history.""" self._settings.state.history = [] @property def favorites(self) -> list[str]: """Get favorites.""" return self._settings.state.favorites.copy() @favorites.setter def favorites(self, value: list[str]) -> None: """Set favorites.""" self._settings.state.favorites = value def add_favorite(self, term: str) -> None: """Add a term to favorites.""" if term not in self._settings.state.favorites: self._settings.state.favorites.append(term) def remove_favorite(self, term: str) -> None: """Remove a term from favorites.""" if term in self._settings.state.favorites: self._settings.state.favorites.remove(term) def is_favorite(self, term: str) -> bool: """Check if a term is favorited.""" return term in self._settings.state.favorites @property def window_width(self) -> int: """Get window width.""" return self._settings.state.window_width @window_width.setter def window_width(self, value: int) -> None: """Set window width.""" self._settings.state.window_width = value @property def window_height(self) -> int: """Get window height.""" return self._settings.state.window_height @window_height.setter def window_height(self, value: int) -> None: """Set window height.""" self._settings.state.window_height = value def batch_update(self, settings_dict: dict[str, Any]) -> None: """Update multiple settings at once and save only once.""" self._autosave_disabled = True try: for key, value in settings_dict.items(): if hasattr(self, key): setattr(self, key, value) else: utils.log_warning(f"Attempted to set unknown setting: {key}") finally: self._autosave_disabled = False self._save_settings() # Utility methods def reset_to_defaults(self) -> None: """Reset all settings to defaults.""" utils.log_info("Resetting settings to defaults") self._settings = WordbookSettings() self._save_settings() mufeedali-Wordbook-c0cb87f/wordbook/settings_window.py000066400000000000000000000072301505534671000233660ustar00rootroot00000000000000# SPDX-FileCopyrightText: 2016-2025 Mufeed Ali # SPDX-License-Identifier: GPL-3.0-or-later import os from gi.repository import Adw, Gtk from wordbook import utils from wordbook.settings import PronunciationAccent, Settings PATH: str = os.path.dirname(__file__) @Gtk.Template(resource_path=f"{utils.RES_PATH}/ui/settings_window.ui") class SettingsDialog(Adw.PreferencesDialog): """A dialog window that allows the user to customize Wordbook.""" __gtype_name__ = "SettingsDialog" _dark_ui_switch: Adw.SwitchRow = Gtk.Template.Child("dark_ui_switch") _double_click_switch: Adw.SwitchRow = Gtk.Template.Child("double_click_switch") _live_search_switch: Adw.SwitchRow = Gtk.Template.Child("live_search_switch") _auto_paste_switch: Adw.SwitchRow = Gtk.Template.Child("auto_paste_switch") _pronunciations_accent_row: Adw.ComboRow = Gtk.Template.Child("pronunciations_accent_row") def __init__(self, parent: Adw.ApplicationWindow, **kwargs): """Initializes the Settings window, loads current settings, and connects signals.""" super().__init__(**kwargs) self.parent = parent self.load_settings() self._double_click_switch.connect("notify::active", self._double_click_switch_activate) self._live_search_switch.connect("notify::active", self._on_live_search_activate) self._auto_paste_switch.connect("notify::active", self._on_auto_paste_switch_activate) self._dark_ui_switch.connect("notify::active", self._on_dark_ui_switch_activate) self._pronunciations_accent_row.connect("notify::selected", self._on_pronunciations_accent_activate) def load_settings(self): """Loads settings from the Settings singleton and applies them to the UI widgets.""" self._double_click_switch.set_active(Settings.get().double_click) self._live_search_switch.set_active(Settings.get().live_search) self._auto_paste_switch.set_active(Settings.get().auto_paste_on_launch) self._pronunciations_accent_row.set_selected(Settings.get().pronunciations_accent.index) self._dark_ui_switch.set_active(Settings.get().gtk_dark_ui) @staticmethod def _double_click_switch_activate(switch, _gparam): """Callback for the 'double-click to search' switch. Saves the new state.""" Settings.get().double_click = switch.get_active() def _on_live_search_activate(self, switch, _gparam): """Callback for the 'live search' switch. Toggles UI elements and saves the new state.""" self.parent.completer.set_popup_completion(not switch.get_active()) self.parent.search_button.set_visible(not switch.get_active()) if not switch.get_active(): self.parent.set_default_widget(self.parent.search_button) Settings.get().live_search = switch.get_active() @staticmethod def _on_auto_paste_switch_activate(switch, _gparam): """Callback for the 'auto-paste on launch' switch. Saves the new state.""" Settings.get().auto_paste_on_launch = switch.get_active() @staticmethod def _on_pronunciations_accent_activate(row, _gparam): """Callback for the pronunciation accent dropdown. Saves the new selection.""" Settings.get().pronunciations_accent = PronunciationAccent.from_index(row.get_selected()) @staticmethod def _on_dark_ui_switch_activate(switch, _gparam): """Callback for the 'force dark mode' switch. Applies the theme and saves the setting.""" Settings.get().gtk_dark_ui = switch.get_active() Adw.StyleManager.get_default().set_color_scheme( Adw.ColorScheme.FORCE_DARK if switch.get_active() else Adw.ColorScheme.PREFER_LIGHT ) mufeedali-Wordbook-c0cb87f/wordbook/utils.py000066400000000000000000000045171505534671000213040ustar00rootroot00000000000000# SPDX-FileCopyrightText: 2016-2025 Mufeed Ali # SPDX-License-Identifier: GPL-3.0-or-later """ This module provides project-wide utilities, including: - Global constants for important file paths (CONFIG_DIR, DATA_DIR, etc.). - A centralized logging setup with helper functions. """ from __future__ import annotations import logging import os import traceback from typing import TYPE_CHECKING from gi.repository import GLib if TYPE_CHECKING: from logging import Logger RES_PATH = "/dev/mufeed/Wordbook" CONFIG_DIR: str = os.path.join(GLib.get_user_config_dir(), "wordbook") CONFIG_FILE: str = os.path.join(CONFIG_DIR, "wordbook.conf") DATA_DIR: str = os.path.join(GLib.get_user_data_dir(), "wordbook") WN_DIR: str = os.path.join(DATA_DIR, "wn") logging.basicConfig(format="%(asctime)s - [%(levelname)s] [%(threadName)s] (%(module)s:%(lineno)d) %(message)s") LOGGER: Logger = logging.getLogger() def log_init(debug: bool) -> None: """Initialize logging level based on debug flag.""" if debug: level = logging.DEBUG else: level = logging.WARNING LOGGER.setLevel(level) def log_critical(message: str) -> None: """Log a critical error. If called inside an except block, logs the traceback.""" LOGGER.critical(message) trace = traceback.format_exc() if "NoneType: None" not in trace: LOGGER.critical(trace) def log_debug(message: str) -> None: """Log a debug message. If called inside an except block, logs the traceback.""" LOGGER.debug(message) trace = traceback.format_exc() if "NoneType: None" not in trace: LOGGER.debug(trace) def log_error(message: str) -> None: """Log an error. If called inside an except block, logs the traceback.""" LOGGER.error(message) trace = traceback.format_exc() if "NoneType: None" not in trace: LOGGER.error(trace) def log_info(message: str) -> None: """Log an info message. If called inside an except block, logs the traceback.""" LOGGER.info(message) trace = traceback.format_exc() if "NoneType: None" not in trace: LOGGER.info(trace) def log_warning(message: str) -> None: """Log a warning. If called inside an except block, logs the traceback.""" LOGGER.warning(message) trace = traceback.format_exc() if "NoneType: None" not in trace: LOGGER.warning(trace) mufeedali-Wordbook-c0cb87f/wordbook/window.py000066400000000000000000001252761505534671000214610ustar00rootroot00000000000000# SPDX-FileCopyrightText: 2016-2025 Mufeed Ali # SPDX-License-Identifier: GPL-3.0-or-later from __future__ import annotations import random import sys import threading import time from enum import Enum, auto from gettext import gettext as _ from typing import TYPE_CHECKING from gi.repository import Adw, Gdk, Gio, GLib, GObject, Gtk, Pango from rapidfuzz import fuzz, process from wn import Error from wn.util import ProgressHandler from wordbook import base, utils from wordbook.settings import Settings from wordbook.settings_window import SettingsDialog if TYPE_CHECKING: from typing import Any class SearchStatus(Enum): NONE = auto() SUCCESS = auto() FAILURE = auto() RESET = auto() class Page(str, Enum): CONTENT = "content_page" DOWNLOAD = "download_page" NETWORK_FAIL = "network_fail_page" SEARCH_FAIL = "search_fail_page" SPINNER = "spinner_page" WELCOME = "welcome_page" class HistoryObject(GObject.Object): term = "" is_favorite = False def __init__(self, term, is_favorite=False): super().__init__() self.term = term self.is_favorite = is_favorite class ProgressUpdater(ProgressHandler): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self._last_update_time = 0 self._update_interval = 0.1 # 100ms def update(self, n: int = 1, force: bool = False): """Update the progress bar, but throttle UI updates to avoid performance issues.""" self.kwargs["count"] += n current_time = time.time() if not force and (current_time - self._last_update_time) < self._update_interval: return self._last_update_time = current_time if self.kwargs["total"] > 0: progress_fraction = self.kwargs["count"] / self.kwargs["total"] GLib.idle_add( Gio.Application.get_default().win.loading_progress.set_fraction, progress_fraction, ) @staticmethod def flash(message): """Update the progress label on the download page.""" if message == "Database": GLib.idle_add( Gio.Application.get_default().win.download_status_page.set_description, _("Building Database…"), ) else: GLib.idle_add( Gio.Application.get_default().win.download_status_page.set_description, message, ) @Gtk.Template(resource_path=f"{utils.RES_PATH}/ui/window.ui") class WordbookWindow(Adw.ApplicationWindow): __gtype_name__ = "WordbookWindow" search_button: Gtk.Button = Gtk.Template.Child("search_button") # type: ignore download_status_page: Adw.StatusPage = Gtk.Template.Child("download_status_page") # type: ignore loading_progress: Gtk.ProgressBar = Gtk.Template.Child("loading_progress") # type: ignore _key_ctrlr: Gtk.EventControllerKey = Gtk.Template.Child("key_ctrlr") # type: ignore _title_clamp: Adw.Clamp = Gtk.Template.Child("title_clamp") # type: ignore _split_view_toggle_button: Gtk.ToggleButton = Gtk.Template.Child("split_view_toggle_button") # type: ignore _search_entry: Gtk.Entry = Gtk.Template.Child("search_entry") # type: ignore _speak_button: Gtk.Button = Gtk.Template.Child("speak_button") # type: ignore _menu_button: Gtk.MenuButton = Gtk.Template.Child("wordbook_menu_button") # type: ignore _main_split_view: Adw.OverlaySplitView = Gtk.Template.Child("main_split_view") # type: ignore _history_stack: Gtk.ListBox = Gtk.Template.Child("history_stack") # type: ignore _history_listbox: Gtk.ListBox = Gtk.Template.Child("history_listbox") # type: ignore _main_stack: Adw.ViewStack = Gtk.Template.Child("main_stack") # type: ignore _toast_overlay: Adw.ToastOverlay = Gtk.Template.Child("toast_overlay") # type: ignore _main_scroll: Gtk.ScrolledWindow = Gtk.Template.Child("main_scroll") # type: ignore _definitions_listbox: Gtk.ListBox = Gtk.Template.Child("definitions_listbox") # type: ignore _pronunciation_view: Gtk.Label = Gtk.Template.Child("pronunciation_view") # type: ignore _term_view: Gtk.Label = Gtk.Template.Child("term_view") # type: ignore _network_fail_status_page: Adw.StatusPage = Gtk.Template.Child("network_fail_status_page") # type: ignore _search_fail_status_page: Adw.StatusPage = Gtk.Template.Child("search_fail_status_page") # type: ignore _search_fail_description_label: Gtk.Label = Gtk.Template.Child("search_fail_description_label") # type: ignore _retry_button: Gtk.Button = Gtk.Template.Child("retry_button") # type: ignore _exit_button: Gtk.Button = Gtk.Template.Child("exit_button") # type: ignore _clear_history_button: Gtk.Button = Gtk.Template.Child("clear_history_button") # type: ignore _favorites_filter_button: Gtk.ToggleButton = Gtk.Template.Child("favorites_filter_button") # type: ignore _style_manager: Adw.StyleManager | None = None _wn_downloader: base.WordnetDownloader = base.WordnetDownloader() _wn_instance: base.wn.Wordnet | None = None _wn_wordlist: list[str] = [] _doubled: bool = False _completion_request_count: int = 0 _searched_term: str | None = None _search_history: Gio.ListStore | None = None _active_thread: threading.Thread | None = None _search_cancellation_event: threading.Event | None = None _primary_clipboard_text: str | None = None _show_favorites_only: bool = False # A timer is used to delay adding terms to history during live search, # preventing every keystroke from being saved. _history_delay_timer = None _pending_history_text = None # A timer for live search to avoid searching on every keystroke. _live_search_delay_timer = None # A flag to queue auto-pasting until the window is active. _auto_paste_queued: bool = False def __init__(self, term="", auto_paste_requested=False, **kwargs): """Initializes the main application window.""" super().__init__(**kwargs) self.set_default_size(Settings.get().window_width, Settings.get().window_height) self.lookup_term = term self.auto_paste_requested = auto_paste_requested app = self.get_application() if app.development_mode: self.get_style_context().add_class("devel") self.set_default_icon_name(app.app_id) self.setup_widgets() self.setup_actions() def setup_widgets(self): """Sets up widgets, binds models, and connects signal handlers.""" self._search_history = Gio.ListStore.new(HistoryObject) self._history_listbox.bind_model(self._search_history, self._create_history_label) self._history_listbox.connect("row-activated", self._on_history_item_activated) self._search_history.connect("items-changed", self._on_history_items_changed) self.connect("notify::is-active", self._on_is_active_changed) self.connect("unrealize", self._on_destroy) self._key_ctrlr.connect("key-pressed", self._on_key_pressed) self._search_fail_description_label.connect("activate-link", self._on_link_activated) self.search_button.connect("clicked", self.on_search_clicked) self._search_entry.connect("changed", self._on_entry_changed) self._search_entry.connect("icon-press", self._on_entry_icon_clicked) self._speak_button.connect("clicked", self._on_speak_clicked) self._retry_button.connect("clicked", self._on_retry_clicked) self._exit_button.connect("clicked", self._on_exit_clicked) self._clear_history_button.connect("clicked", self._on_clear_history) self._main_split_view.bind_property( "show-sidebar", self._split_view_toggle_button, "active", GObject.BindingFlags.BIDIRECTIONAL | GObject.BindingFlags.SYNC_CREATE, ) self._style_manager = self.get_application().get_style_manager() self._dl_wn() # FIXME: Remove use of EntryCompletion self.completer = Gtk.EntryCompletion() self.completer.set_popup_single_match(True) self.completer.set_text_column(0) self.completer.set_popup_completion(not Settings.get().live_search) self.completer.set_popup_set_width(True) self._search_entry.set_completion(self.completer) history_items = [HistoryObject(term, Settings.get().is_favorite(term)) for term in Settings.get().history] self._search_history.splice(0, 0, history_items) self._update_clear_button_sensitivity() self.search_button.set_visible(not Settings.get().live_search) if not Settings.get().live_search: self.set_default_widget(self.search_button) def_extra_menu_model = Gio.Menu.new() item = Gio.MenuItem.new(_("Search Selected Text"), "win.search-selected") def_extra_menu_model.append_item(item) self._def_extra_menu_model = def_extra_menu_model def setup_actions(self): """Sets up the Gio actions and accelerators for the application window.""" paste_search_action = Gio.SimpleAction.new("paste-search", None) paste_search_action.connect("activate", self.on_paste_search) self.add_action(paste_search_action) # Sidebar toggle action toggle_sidebar_action = Gio.SimpleAction.new("toggle-sidebar", None) toggle_sidebar_action.connect("activate", self.on_toggle_sidebar) self.add_action(toggle_sidebar_action) # Menu toggle action toggle_menu_action = Gio.SimpleAction.new("toggle-menu", None) toggle_menu_action.connect("activate", self.on_toggle_menu) self.add_action(toggle_menu_action) preferences_action = Gio.SimpleAction.new("preferences", None) preferences_action.connect("activate", self.on_preferences) self.add_action(preferences_action) random_word_action = Gio.SimpleAction.new("random-word", None) random_word_action.connect("activate", self.on_random_word) self.add_action(random_word_action) search_selected_action = Gio.SimpleAction.new("search-selected", None) search_selected_action.connect("activate", self.on_search_selected) search_selected_action.set_enabled(False) self.add_action(search_selected_action) toggle_favorites_action = Gio.SimpleAction.new("toggle-favorites", None) toggle_favorites_action.connect("activate", self.on_toggle_favorites) self.add_action(toggle_favorites_action) quit_action = Gio.SimpleAction.new("quit", None) quit_action.connect("activate", lambda action, param: self.close()) self.add_action(quit_action) clipboard = self.get_primary_clipboard() clipboard.connect("changed", self.on_clipboard_changed) def on_clipboard_changed(self, clipboard: Gdk.Clipboard | None): """Callback for when the primary clipboard (text selection) changes.""" clipboard = Gdk.Display.get_default().get_primary_clipboard() def on_selection(_clipboard, result): try: text = clipboard.read_text_finish(result) if text and text.strip(): self._primary_clipboard_text = text.replace(" ", "").replace("\n", "") self.lookup_action("search-selected").props.enabled = True else: self._primary_clipboard_text = None self.lookup_action("search-selected").props.enabled = False except GLib.GError: self._primary_clipboard_text = None self.lookup_action("search-selected").props.enabled = False cancellable = Gio.Cancellable() clipboard.read_text_async(cancellable, on_selection) def on_paste_search(self, _action=None, _param=None): """Callback for the 'paste-search' action. Pastes and searches clipboard content.""" clipboard = Gdk.Display.get_default().get_clipboard() def on_paste(_clipboard: Gdk.Clipboard, result: Gio.AsyncResult): try: text = clipboard.read_text_finish(result) if text: text = base.clean_search_terms(text) if text and text.strip(): self.trigger_search(text) except GLib.GError: pass # Ignore errors from empty or non-text clipboard cancellable = Gio.Cancellable() clipboard.read_text_async(cancellable, on_paste) def on_preferences(self, _action, _param): """Callback for the 'preferences' action. Shows the settings window.""" window = SettingsDialog(self) window.present(self) def on_random_word(self, _action, _param): """Callback for the 'random-word' action. Searches for a random word.""" if self._wn_wordlist: random_word = random.choice(self._wn_wordlist).replace("_", " ") self.trigger_search(random_word) else: self._new_error( _("Wordlist Loading"), _("The word list is still loading. Please try again in a moment."), ) def on_search_selected(self, _action, _param): """Callback for the 'search-selected' action. Searches for the currently selected text.""" self.trigger_search(self._primary_clipboard_text) def on_toggle_favorites(self, _action, _param): """Callback for the 'toggle-favorites' action. Toggles the history filter.""" self._toggle_favorites_filter() def on_search_clicked(self, _button=None, pass_check=False, text=None): """Initiates a search, cancelling any previous search.""" self._clear_definitions() if text is None: text = self._search_entry.get_text().strip() if not text: self._page_switch(Page.WELCOME) return if self._active_thread and self._active_thread.is_alive(): if self._search_cancellation_event: self._search_cancellation_event.set() self._page_switch(Page.SPINNER) self._search_cancellation_event = threading.Event() self._active_thread = threading.Thread( target=self.threaded_search, args=[text, pass_check, self._search_cancellation_event], daemon=True, ) self._active_thread.start() def threaded_search(self, text, pass_check, cancellation_event): """ Performs the search in a background thread. This prevents the UI from freezing during network or intensive search operations. """ if cancellation_event.is_set(): return self._searched_term = text out = self._search(text) if cancellation_event.is_set(): return GLib.idle_add(self._on_search_finished, out) def _on_search_finished(self, result): """Handles the result of a search on the main thread.""" if not result: self._page_switch(Page.WELCOME) return status = result.get("status", SearchStatus.SUCCESS if result.get("result") else SearchStatus.FAILURE) if status == SearchStatus.SUCCESS: self._populate_definitions(result["result"]) self._term_view.set_text(result["term"].strip()) self._term_view.set_tooltip_text(result["term"].strip()) self._pronunciation_view.set_text(result["pronunciation"].strip().replace("\n", "")) self._pronunciation_view.set_tooltip_text(result["pronunciation"].strip().replace("\n", "")) self._speak_button.set_visible(True) self._page_switch(Page.CONTENT) if Settings.get().live_search: self._add_to_history_delayed(result["term"]) else: self._add_to_history(result["term"]) elif status == SearchStatus.FAILURE: suggestions = process.extract( self._searched_term, self._wn_wordlist if self._wn_wordlist else [], limit=5, scorer=fuzz.QRatio, ) suggestion_links = [ f'{suggestion.replace("_", " ")}' for suggestion, score, _ in suggestions if score > 70 ] if suggestion_links: suggestions_markup = f"Did you mean: {', '.join(suggestion_links)}?" self._search_fail_description_label.set_markup(suggestions_markup) self._search_fail_description_label.show() else: self._search_fail_description_label.set_markup("") self._search_fail_description_label.hide() self._page_switch(Page.SEARCH_FAIL) else: # RESET or other cases self._page_switch(Page.WELCOME) self._active_thread = None def trigger_search(self, text): """A convenience method to trigger a search from other parts of the app.""" GLib.idle_add(self._search_entry.set_text, text) GLib.idle_add(self.on_search_clicked, None, False, text) def _on_def_press_event(self, _click, n_press, _x, _y): """Handles the first part of a double-click event on the definition view.""" if Settings.get().double_click: self._doubled = n_press == 2 else: self._doubled = False def _on_def_stop_event(self, _click): """Handles the second part of a double-click, triggering a search if detected.""" if self._doubled: clipboard = Gdk.Display.get_default().get_primary_clipboard() def on_paste(_clipboard, result): text = clipboard.read_text_finish(result) text = base.clean_search_terms(text) if text and text.strip(): self.trigger_search(text) cancellable = Gio.Cancellable() clipboard.read_text_async(cancellable, on_paste) def queue_auto_paste(self): """Queues an auto-paste action, to be executed once the window is active.""" if self.props.is_active: GLib.idle_add(self.on_paste_search) else: self._auto_paste_queued = True def _on_is_active_changed(self, *_args): """Executes a queued auto-paste action when the window becomes active.""" if self._auto_paste_queued and self.props.is_active: self._auto_paste_queued = False GLib.idle_add(self.on_paste_search) def _on_destroy(self, _window: Gtk.Window): """Saves window state and history upon closing the window.""" if self._history_delay_timer is not None: GLib.source_remove(self._history_delay_timer) self._history_delay_timer = None if self._live_search_delay_timer is not None: GLib.source_remove(self._live_search_delay_timer) self._live_search_delay_timer = None history_list = [] if self._search_history: for i in range(self._search_history.get_n_items()): item = self._search_history.get_item(i) if item: history_list.append(item.term) width, height = self.get_default_size() settings_to_update = { "history": history_list, "window_width": width, "window_height": height, } Settings.get().batch_update(settings_to_update) def _on_entry_changed(self, _entry): """Handles text changes in the search entry, triggering live search and completions.""" self._completion_request_count += 1 if self._completion_request_count == 1: threading.Thread( target=self._update_completions, args=[self._search_entry.get_text()], daemon=True, ).start() # Show/hide clear button based on whether there's text text = self._search_entry.get_text() self._search_entry.props.secondary_icon_name = "edit-clear-symbolic" if text else "" if Settings.get().live_search: if self._live_search_delay_timer is not None: GLib.source_remove(self._live_search_delay_timer) self._live_search_delay_timer = GLib.timeout_add(400, self._execute_delayed_search) def _on_entry_icon_clicked(self, _widget, icon_position): if icon_position == Gtk.EntryIconPosition.SECONDARY: self._search_entry.set_text("") def _on_clear_history(self, _widget): """Clears non-favorited items from the search history.""" items_to_remove = [] for i in range(self._search_history.get_n_items()): item = self._search_history.get_item(i) if not item.is_favorite: items_to_remove.append((i, item)) if not items_to_remove: return # Remove items from the history, iterating backwards through the indices # to ensure that the indices of items yet to be removed are not affected. for i, _item in reversed(items_to_remove): self._search_history.remove(i) self._update_clear_button_sensitivity() toast = Adw.Toast.new(_("History cleared")) toast.set_button_label(_("Undo")) toast.connect("button-clicked", self._on_undo_clear_history, items_to_remove) self._toast_overlay.add_toast(toast) def _on_undo_clear_history(self, _toast, items_to_restore): """Restores the history that was just cleared.""" for i, item in items_to_restore: self._search_history.insert(i, item) self._update_clear_button_sensitivity() def _update_clear_button_sensitivity(self): """ Updates the sensitivity of the clear history button based on whether there is history, and switches the history stack page if needed. """ has_history = self._search_history.get_n_items() > 0 if self._search_history else False self._clear_history_button.set_sensitive(has_history) # Switch the stack page to 'empty' if no history self._history_stack.set_visible_child_name("list" if has_history else "empty") @staticmethod def _on_exit_clicked(_widget): """Callback for the exit button on the network failure page.""" sys.exit() def _on_link_activated(self, _widget, data): """Handles clicks on hyperlinks in the UI, such as 'Did you mean' suggestions.""" if data.startswith("search;"): GLib.idle_add(self._search_entry.set_text, data[7:]) self.on_search_clicked(text=data[7:]) return Gdk.EVENT_STOP def _on_key_pressed(self, _button, keyval, _keycode, state): """Handles key presses for quick search functionality when the search entry is not focused.""" modifiers = state & Gtk.accelerator_get_default_mod_mask() shift_mask = Gdk.ModifierType.SHIFT_MASK unicode_key_val = Gdk.keyval_to_unicode(keyval) if ( GLib.unichar_isgraph(chr(unicode_key_val)) and modifiers in (shift_mask, 0) and not self._search_entry.is_focus() ): self._search_entry.grab_focus_without_selecting() text = self._search_entry.get_text() + chr(unicode_key_val) self._search_entry.set_text(text) self._search_entry.set_position(len(text)) return Gdk.EVENT_STOP return Gdk.EVENT_PROPAGATE def _on_history_item_activated(self, _widget, row: Gtk.ListBoxRow): """Handles clicks on history items, triggering a search for that term.""" index = row.get_index() history_object: HistoryObject = self._search_history.get_item(index) if history_object: self.trigger_search(history_object.term) def _on_history_items_changed(self, store, position, removed, added): """Applies styling to newly added history rows.""" if added > 0: GLib.idle_add(self._apply_styling_to_new_rows, store, position, added) def on_toggle_sidebar(self, action, param): """Action handler to toggle the sidebar.""" self._split_view_toggle_button.set_active(not self._split_view_toggle_button.get_active()) def on_toggle_menu(self, action, param): """Action handler to toggle the menu.""" self._menu_button.grab_focus() self._menu_button.set_active(not self._menu_button.get_active()) def _apply_styling_to_new_rows(self, store, position, added): """Waits for rows to be created, then applies styling.""" for i in range(position, position + added): item = store.get_item(i) row = self._history_listbox.get_row_at_index(i) if row: self._update_row_visuals(row, item) return False def _on_retry_clicked(self, _widget): """Handles the retry button click on the network failure page.""" self._wn_downloader.delete_wn() self._start_download() def _add_to_history(self, text): """Adds a term to the history, moving it to the top if it already exists.""" for i in range(self._search_history.get_n_items()): item = self._search_history.get_item(i) if item.term == text: self._search_history.remove(i) break is_favorite = Settings.get().is_favorite(text) history_object = HistoryObject(text, is_favorite) self._search_history.insert(0, history_object) self._update_clear_button_sensitivity() def _add_to_history_delayed(self, text): """Adds a term to history after a delay, cancelling any previously pending additions.""" if self._history_delay_timer is not None: GLib.source_remove(self._history_delay_timer) self._pending_history_text = text self._history_delay_timer = GLib.timeout_add(2000, self._execute_delayed_history_add) def _execute_delayed_history_add(self): """Executes the delayed history addition.""" if self._pending_history_text is not None: self._add_to_history(self._pending_history_text) self._pending_history_text = None self._history_delay_timer = None return False def _execute_delayed_search(self): """Executes the delayed search.""" self.on_search_clicked() self._live_search_delay_timer = None return False def _on_speak_clicked(self, _button): """Callback for the speak button. Reads the current term aloud in a background thread.""" def speak(): if self._searched_term: base.read_term( self._searched_term, speed=120, accent=Settings.get().pronunciations_accent.code, ) threading.Thread(target=speak, daemon=True).start() def _create_history_label(self, element): """Factory method to create a history row widget.""" box = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, visible=True, spacing=8) content_box = Gtk.Box( orientation=Gtk.Orientation.HORIZONTAL, visible=True, tooltip_text=element.term, ) content_box.set_hexpand(True) label = Gtk.Label( label=element.term, ellipsize=Pango.EllipsizeMode.END, margin_top=8, margin_bottom=8, margin_start=8, margin_end=8, halign=Gtk.Align.START, ) content_box.append(label) favorite_button = Gtk.Button( icon_name="starred-symbolic" if element.is_favorite else "non-starred-symbolic", margin_top=4, margin_bottom=4, valign=Gtk.Align.CENTER, tooltip_text=_("Toggle Favorite"), ) favorite_button.add_css_class("flat") favorite_button.add_css_class("circular") favorite_button.connect("clicked", self._on_favorite_toggled, element) box.append(content_box) box.append(favorite_button) return box def _on_favorite_toggled(self, button: Gtk.Button, item: HistoryObject): """Toggles the favorite status of a history item and updates the UI.""" settings = Settings.get() is_now_favorite = not item.is_favorite item.is_favorite = is_now_favorite if is_now_favorite: settings.add_favorite(item.term) else: settings.remove_favorite(item.term) row = button.get_ancestor(Gtk.ListBoxRow) if row: self._update_row_visuals(row, item) def _update_row_visuals(self, row: Gtk.ListBoxRow, item: HistoryObject): """Updates the icon, CSS class, and visibility of a history row.""" box = row.get_child() favorite_button: Gtk.ToggleButton = box.get_last_child() favorite_button.set_icon_name("starred-symbolic" if item.is_favorite else "non-starred-symbolic") row.add_css_class("history-item") if item.is_favorite: row.add_css_class("favorite-item") else: row.remove_css_class("favorite-item") row.set_visible(not self._show_favorites_only or item.is_favorite) def _toggle_favorites_filter(self): """Toggles the visibility of history items based on their favorite status.""" self._show_favorites_only = not self._show_favorites_only self._favorites_filter_button.set_active(self._show_favorites_only) self._favorites_filter_button.set_icon_name( "starred-symbolic" if self._show_favorites_only else "non-starred-symbolic" ) for i in range(self._search_history.get_n_items()): item = self._search_history.get_item(i) row = self._history_listbox.get_row_at_index(i) if row: row.set_visible(not self._show_favorites_only or item.is_favorite) def _new_error(self, primary_text, secondary_text) -> None: """Shows an error dialog.""" dialog = Adw.AlertDialog.new(primary_text, secondary_text) dialog.add_response("dismiss", _("Dismiss")) dialog.choose(self) def _page_switch(self, page: str) -> bool: """Switches the visible page in the main stack.""" utils.log_info(f"Switching to page: {page}") if page == "content_page": GLib.idle_add(self._main_scroll.get_vadjustment().set_value, 0) GLib.idle_add(self._main_stack.set_visible_child_name, page) return False def _search(self, search_text: str) -> dict[str, Any] | None: """Cleans input text, passes it to the backend for definition, and handles errors.""" text = base.clean_search_terms(search_text) if text and text.strip(): if self._wn_instance: return base.format_output( text, self._wn_instance, accent=Settings.get().pronunciations_accent.code, ) else: return None # WordNet instance not ready yet if not Settings.get().live_search: GLib.idle_add( self._new_error, _("Invalid input"), _("Nothing definable was found in your search input"), ) self._searched_term = None return None def _update_completions(self, text): """Updates the search entry's completion model based on the current text.""" while self._completion_request_count > 0: completer_liststore = Gtk.ListStore(str) _complete_list = [] if self._wn_wordlist: for item in self._wn_wordlist: if len(_complete_list) >= 10: break item = item.replace("_", " ") if item.lower().startswith(text.lower()) and item not in _complete_list: _complete_list.append(item) _complete_list = sorted(_complete_list, key=str.casefold) for item in _complete_list: completer_liststore.append((item,)) self._completion_request_count -= 1 GLib.idle_add(self.completer.set_model, completer_liststore) GLib.idle_add(self.completer.complete) def _set_header_sensitive(self, status): """Disables or enables header buttons during long-running operations.""" self._title_clamp.set_sensitive(status) self._split_view_toggle_button.set_sensitive(status) self._menu_button.set_sensitive(status) def _dl_wn(self): """ Manages the WordNet data download and initialization process. This is the main entry point for the application's data setup. """ self._set_header_sensitive(False) if self._wn_downloader.check_status(): self._init_wordnet() else: self._start_download() def _start_download(self): """Starts the WordNet download process in a background thread.""" self._page_switch(Page.DOWNLOAD) self.download_status_page.set_description(_("Downloading WordNet…")) threading.Thread(target=self._download_wordnet_thread, daemon=True).start() def _init_wordnet(self): """Initializes the WordNet instance, handling potential failures.""" def handle_init_failure(): """Callback passed to the backend to handle initialization failures.""" GLib.idle_add(self._handle_init_failure) wn_future = base.get_wn_instance(handle_init_failure) wn_future.add_done_callback(self._on_wordnet_init_complete) def _handle_init_failure(self): """Handles WordNet initialization failure by deleting the data and re-downloading.""" self._wn_downloader.delete_wn() self._start_download() def _on_wordnet_init_complete(self, future): """Callback for when WordNet initialization is complete.""" if future.exception(): return # Exception is handled by the reloader callback try: self._wn_instance = future.result() if not self._wn_instance: utils.log_warning("WordNet instance is None, triggering download") self._handle_init_failure() return self._complete_initialization() wordlist_future = base.get_wn_wordlist(self._wn_instance) wordlist_future.add_done_callback(self._on_wordlist_loaded) except Exception as e: utils.log_warning(f"Error getting WordNet instance: {e}") self._handle_init_failure() def _on_wordlist_loaded(self, future): """Callback for when the wordlist has been loaded.""" if future.exception(): utils.log_error(f"Error loading wordlist: {future.exception()}") return try: wordlist = future.result() GLib.idle_add(self._on_wordlist_loaded_success, wordlist) except Exception as e: utils.log_error(f"Error getting wordlist result: {e}") def _on_wordlist_loaded_success(self, wordlist): """Handles successful wordlist loading.""" self._wn_wordlist = wordlist utils.log_info(f"Wordlist loaded with {len(self._wn_wordlist)} words. Completions now available.") def _complete_initialization(self): """Finalizes the initialization process and shows the main welcome screen.""" self._set_header_sensitive(True) self._page_switch(Page.WELCOME) if self.lookup_term: self.trigger_search(self.lookup_term) elif Settings.get().auto_paste_on_launch or self.auto_paste_requested: self.queue_auto_paste() self._search_entry.grab_focus_without_selecting() def _download_wordnet_thread(self): """Downloads WordNet data in a background thread.""" try: self._wn_downloader.download(ProgressUpdater) GLib.idle_add(self._on_download_complete) except Error as err: GLib.idle_add(self._on_download_failed, err) def _on_download_complete(self): """Callback for successful WordNet download.""" self.download_status_page.set_title(_("Ready.")) self._init_wordnet() def _on_download_failed(self, error): """Callback for failed WordNet download.""" self._network_fail_status_page.set_description(f"Error: {error}") utils.log_warning(error) self._page_switch(Page.NETWORK_FAIL) def _clear_definitions(self) -> None: """Clears all definitions from the listbox.""" while (child := self._definitions_listbox.get_first_child()) is not None: self._definitions_listbox.remove(child) def _create_definition_widget(self, pos: str, synsets: list[dict[str, Any]]) -> Gtk.Widget: """Creates a widget to display definitions for a specific part of speech.""" pos_box = Gtk.Box( orientation=Gtk.Orientation.VERTICAL, spacing=12, margin_top=12, margin_bottom=12, margin_start=12, margin_end=12, ) pos_header = Gtk.Label( label=pos, xalign=0.0, use_markup=True, css_classes=[ "pos-header", ], ) pos_box.append(pos_header) synset_groups: dict[str, list[dict[str, Any]]] = {} for synset in sorted(synsets, key=lambda k: k["name"]): name = synset["name"] if name not in synset_groups: synset_groups[name] = [] synset_groups[name].append(synset) overall_definition_number = 1 total_synsets = len([s for group in synset_groups.values() for s in group]) for synset_name, group_synsets in synset_groups.items(): definition_number = 1 if len(synset_groups) > 1: synset_header = Gtk.Label( label=synset_name, use_markup=True, xalign=0.0, margin_top=8, css_classes=[ "synset-header", ], ) pos_box.append(synset_header) for synset in group_synsets: def_main_box = Gtk.Box( orientation=Gtk.Orientation.HORIZONTAL, spacing=12, ) number_label = Gtk.Label( label=str(definition_number), use_markup=True, valign=Gtk.Align.START, margin_top=2, css_classes=[ "definition-number", ], ) number_label.set_size_request(20, -1) def_main_box.append(number_label) content_box = Gtk.Box( orientation=Gtk.Orientation.VERTICAL, spacing=6, hexpand=True, ) def_label = Gtk.Label( label=synset["definition"], wrap=True, xalign=0.0, selectable=True, extra_menu=self._def_extra_menu_model, css_classes=[ "definition", ], ) click = Gtk.GestureClick.new() click.connect("pressed", self._on_def_press_event) click.connect("stopped", self._on_def_stop_event) def_label.add_controller(click) content_box.append(def_label) for example in synset.get("examples", []): example_label = Gtk.Label( label=example, wrap=True, xalign=0.0, selectable=True, extra_menu=self._def_extra_menu_model, ) example_label.add_css_class("example-text") click = Gtk.GestureClick.new() click.connect("pressed", self._on_def_press_event) click.connect("stopped", self._on_def_stop_event) example_label.add_controller(click) content_box.append(example_label) for relation_type, relation_key in [ ("Synonyms", "syn"), ("Antonyms", "ant"), ("Similar to", "sim"), ("Also see", "also_sees"), ]: words = synset.get(relation_key, []) if words: relation_box = self._create_relation_widget(relation_type, words) if relation_box: content_box.append(relation_box) def_main_box.append(content_box) pos_box.append(def_main_box) if overall_definition_number < total_synsets: spacer = Gtk.Separator(margin_top=4, margin_bottom=4) pos_box.append(spacer) definition_number += 1 overall_definition_number += 1 return pos_box def _create_relation_widget(self, relation_type: str, words: list[str]) -> Gtk.Widget | None: """Creates a widget to display related words (e.g., synonyms) as clickable buttons.""" if not words: return None wrap_box = Adw.WrapBox( valign=Gtk.Align.START, line_spacing=4, child_spacing=6, ) type_label = Gtk.Label( label=f"{relation_type}:", xalign=0.0, valign=Gtk.Align.CENTER, css_classes=[ "relation-type", ], ) wrap_box.append(type_label) for word in words: button = Gtk.Button(label=word, css_classes=["lemma-button"]) button.connect("clicked", self._on_word_button_clicked, word) wrap_box.append(button) return wrap_box def _on_word_button_clicked(self, _button: Gtk.Button, word: str) -> None: """Handles clicks on related word buttons, triggering a new search.""" self._search_entry.set_text(word) self._search_entry.emit("activate") def _populate_definitions(self, result: dict[str, Any]) -> None: """Populates the definitions listbox with the search results.""" self._clear_definitions() for pos, synsets in result.items(): if synsets: pos_widget = self._create_definition_widget(pos, synsets) row = Gtk.ListBoxRow( margin_top=4, margin_bottom=4, margin_start=4, margin_end=4, ) row.set_child(pos_widget) self._definitions_listbox.append(row) # NOTE Apparently `append` is what adds the `activatable` class. # So, now that the row has been added, we can remove the class. row.remove_css_class("activatable") mufeedali-Wordbook-c0cb87f/wordbook/wordbook.in000077500000000000000000000024421505534671000217460ustar00rootroot00000000000000#!@PYTHON@ # -*- coding: utf-8 -*- # SPDX-FileCopyrightText: 2016-2025 Mufeed Ali # SPDX-License-Identifier: GPL-3.0-or-later import gettext import locale import os import sys import signal APP_ID = @APP_ID@ VERSION = @VERSION@ pkgdatadir = @pkgdatadir@ localedir = @localedir@ builddir = os.environ.get("MESON_BUILD_ROOT") if builddir: sys.dont_write_bytecode = True sys.path.insert(1, os.environ["MESON_SOURCE_ROOT"]) data_dir = os.path.join(builddir, "@prefix@", "@datadir@") os.putenv( "XDG_DATA_DIRS", "%s:%s" % (data_dir, os.getenv("XDG_DATA_DIRS", "/usr/local/share/:/usr/share/")), ) sys.path.insert(1, pkgdatadir) signal.signal(signal.SIGINT, signal.SIG_DFL) locale.bindtextdomain("wordbook", localedir) locale.textdomain("wordbook") gettext.bindtextdomain("wordbook", localedir) gettext.textdomain("wordbook") if __name__ == "__main__": from gi.repository import Gio resource = Gio.Resource.load(os.path.join(pkgdatadir, "resources.gresource")) resource._register() from wordbook.main import Application Application.development_mode = @PROFILE@ == "Devel" app = Application(APP_ID, VERSION) try: status = app.run(sys.argv) except SystemExit as e: status = e.code sys.exit(status)