pax_global_header00006660000000000000000000000064144402020640014506gustar00rootroot0000000000000052 comment=351d47990e14f8e105cac3a0e5481c1840cfcaaa wiRedPanda-4.1.12/000077500000000000000000000000001444020206400136115ustar00rootroot00000000000000wiRedPanda-4.1.12/.gitattributes000066400000000000000000000005721444020206400165100ustar00rootroot00000000000000# Auto detect text files and perform LF normalization * text=auto # Custom for Visual Studio *.cs diff=csharp # Standard to msysgit *.doc diff=astextplain *.DOC diff=astextplain *.docx diff=astextplain *.DOCX diff=astextplain *.dot diff=astextplain *.DOT diff=astextplain *.pdf diff=astextplain *.PDF diff=astextplain *.rtf diff=astextplain *.RTF diff=astextplain wiRedPanda-4.1.12/.github/000077500000000000000000000000001444020206400151515ustar00rootroot00000000000000wiRedPanda-4.1.12/.github/workflows/000077500000000000000000000000001444020206400172065ustar00rootroot00000000000000wiRedPanda-4.1.12/.github/workflows/build.yml000066400000000000000000000044251444020206400210350ustar00rootroot00000000000000# Copyright 2015 - 2022, GIBIS-Unifesp and the WiRedPanda contributors # SPDX-License-Identifier: GPL-3.0-or-later name: Build on: [push] jobs: build: strategy: fail-fast: false matrix: os: [ubuntu-latest, windows-latest, macos-latest] qt_version: [5.12.12, 5.13.2, 5.14.2, 5.15.2, 6.2.4, 6.3.2, 6.4.3, 6.5.0] # ================================= runs-on: ${{ matrix.os }} if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name steps: - uses: actions/checkout@v3 with: submodules: recursive fetch-depth: 0 - name: Install Qt5 if: startsWith(matrix.qt_version, '5') uses: jurplel/install-qt-action@v3 with: version: ${{ matrix.qt_version }} cache: true aqtversion: ==3.1.6 - name: Install Qt6 if: startsWith(matrix.qt_version, '6') uses: jurplel/install-qt-action@v3 with: version: ${{ matrix.qt_version }} modules: qtmultimedia cache: true aqtversion: ==3.1.6 - name: ccache uses: hendrikmuhs/ccache-action@v1.2 with: key: ${{ matrix.os }} # ================================= - name: Build Ubuntu if: runner.os == 'Linux' run: | sudo apt install libgstreamer-gl1.0-0 mkdir build cd build qmake ../WPanda.pro make -j2 - name: Test Ubuntu if: runner.os == 'Linux' run: | cd build/test ./WPanda-test -platform offscreen # ================================= - name: Setup MSVC Toolchain if: runner.os == 'Windows' uses: seanmiddleditch/gha-setup-vsdevenv@v4 - name: Build Windows if: runner.os == 'Windows' run: | choco install jom mkdir build cd build qmake ../WPanda.pro jom - name: Test Windows if: runner.os == 'Windows' run: | cd build jom check # ================================= - name: Build macOS if: runner.os == 'macOS' run: | mkdir build cd build qmake ../WPanda.pro make -j3 - name: Test macOS if: runner.os == 'macOS' run: | cd build make check wiRedPanda-4.1.12/.github/workflows/codeql.yml000066400000000000000000000020711444020206400212000ustar00rootroot00000000000000name: "CodeQL" on: push: branches: [ "master" ] jobs: analyze: name: Analyze runs-on: ubuntu-latest permissions: actions: read contents: read security-events: write strategy: fail-fast: false matrix: language: [ 'cpp' ] steps: - name: Checkout repository uses: actions/checkout@v3 - name: Initialize CodeQL uses: github/codeql-action/init@v2 with: languages: ${{ matrix.language }} - name: Install Qt uses: jurplel/install-qt-action@v3 with: version: 5.15.2 cache: true aqtversion: ==3.1.6 - name: ccache uses: hendrikmuhs/ccache-action@v1.2 with: key: ${{ matrix.os }} - name: Build run: | sudo apt install libgstreamer-gl1.0-0 mkdir build cd build qmake ../WPanda.pro make -j2 - name: Test run: | cd build/test ./WPanda-test -platform offscreen - name: Perform CodeQL Analysis uses: github/codeql-action/analyze@v2 wiRedPanda-4.1.12/.github/workflows/coverage.yml000066400000000000000000000021271444020206400215260ustar00rootroot00000000000000# Copyright 2015 - 2022, GIBIS-Unifesp and the WiRedPanda contributors # SPDX-License-Identifier: GPL-3.0-or-later name: Coverage on: push: branches: - 'master' jobs: Ubuntu-Qt5_12_12-Code_Coverage: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 with: submodules: recursive fetch-depth: 0 - name: Install Qt uses: jurplel/install-qt-action@v3 with: version: 5.12.12 cache: true aqtversion: ==3.1.6 - name: ccache uses: hendrikmuhs/ccache-action@v1.2 with: key: ubuntu-latest - name: Build run: | sudo apt install libgstreamer-gl1.0-0 mkdir build cd build qmake ../WPanda.pro CONFIG+=coverage make -j2 - name: Test run: | cd build/test ./WPanda-test -platform offscreen - name: Upload coverage data run: | cd build/test gcov -abcfu build_files/obj/*.o curl -Os https://uploader.codecov.io/latest/linux/codecov chmod +x ./codecov ./codecovwiRedPanda-4.1.12/.github/workflows/deploy.yml000066400000000000000000000102671444020206400212330ustar00rootroot00000000000000# Copyright 2015 - 2022, GIBIS-Unifesp and the WiRedPanda contributors # SPDX-License-Identifier: GPL-3.0-or-later name: Deploy on: release: types: [published] jobs: build: strategy: fail-fast: false matrix: os: [ubuntu-20.04, windows-latest, macos-latest] # ================================= runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v3 with: submodules: recursive fetch-depth: 0 - name: Install Qt 32bit if: matrix.os == 'windows-latest' uses: jurplel/install-qt-action@v3 with: version: 5.15.2 cache: true aqtversion: ==3.1.6 arch: win32_msvc2019 - name: Install Qt 64bit if: matrix.os != 'windows-latest' uses: jurplel/install-qt-action@v3 with: version: 5.15.2 cache: true aqtversion: ==3.1.6 - name: ccache uses: hendrikmuhs/ccache-action@v1.2 with: key: ${{ matrix.os }} # ================================= - name: Build Ubuntu if: runner.os == 'Linux' run: | sudo apt install libgstreamer-gl1.0-0 libfuse2 libfontconfig1-dev libfreetype6-dev libx11-dev libx11-xcb-dev libxext-dev libxfixes-dev libxi-dev libxrender-dev libxcb1-dev libxcb-glx0-dev libxcb-keysyms1-dev libxcb-image0-dev libxcb-shm0-dev libxcb-icccm4-dev libxcb-sync0-dev libxcb-xfixes0-dev libxcb-shape0-dev libxcb-randr0-dev libxcb-render-util0-dev libxkbcommon-dev libxkbcommon-x11-dev mkdir build cd build qmake ../WPanda.pro make -j2 - name: Test Ubuntu if: runner.os == 'Linux' run: | cd build/test ./WPanda-test -platform offscreen - name: linuxdeployqt if: runner.os == 'Linux' run: | mkdir appimage cp app/resources/wpanda.desktop appimage/wpanda.desktop cp app/resources/wpanda.svg appimage/wpanda_icon.svg cp build/app/wiredpanda appimage wget https://github.com/probonopd/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-x86_64.AppImage chmod +x ./linuxdeployqt-continuous-x86_64.AppImage VERSION=4 ./linuxdeployqt-continuous-x86_64.AppImage appimage/wiredpanda -appimage rm ./linuxdeployqt-continuous-x86_64.AppImage mv WiRedPanda-4-x86_64.AppImage WiRedPanda-Ubuntu-Qt5.AppImage - name: Publish Ubuntu uses: softprops/action-gh-release@v1 if: runner.os == 'Linux' with: fail_on_unmatched_files: true files: '*.AppImage' # ================================= - name: Setup MSVC Toolchain if: startsWith(matrix.os, 'windows') uses: seanmiddleditch/gha-setup-vsdevenv@v4 with: arch: x86 - name: Build Windows if: runner.os == 'Windows' run: | choco install jom mkdir build cd build qmake ../WPanda.pro jom - name: Test Windows if: runner.os == 'Windows' run: | cd build jom check - name: windeployqt if: runner.os == 'Windows' run : | cp -r examples build/app/release cd build/app/release windeployqt --compiler-runtime wiredpanda.exe rm wiredpanda_pch.obj rm wiredpanda_pch.pch cd .. ren release wpanda Compress-Archive -Path wpanda -DestinationPath WiRedPanda-Windows-Qt5-Portable.zip - name: Publish Windows uses: softprops/action-gh-release@v1 if: startsWith(matrix.os, 'windows') with: fail_on_unmatched_files: true files: 'build/app/*.zip' # ================================= - name: Build macOS if: runner.os == 'macOS' run: | mkdir build cd build qmake ../WPanda.pro make -j3 - name: Test macOS if: runner.os == 'macOS' run: | cd build make check - name: macdeployqt if: runner.os == 'macOS' run: | cd build/app macdeployqt wiredpanda.app -dmg mv wiredpanda.dmg WiRedPanda-macOS-Qt5.dmg - name: Publish macOS uses: softprops/action-gh-release@v1 if: runner.os == 'macOS' with: fail_on_unmatched_files: true files: 'build/app/*.dmg' wiRedPanda-4.1.12/.gitignore000066400000000000000000000005741444020206400156070ustar00rootroot00000000000000# C++ objects and libs *.slo *.lo *.o *.a *.la *.lai *.so *.dll *.dylib # Qt-es /.qmake.cache /.qmake.stash *.pro.user *.pro.user.* *.moc moc_*.cpp qrc_*.cpp ui_*.h Makefile* *-build-* # QtCreator *.autosave #QtCtreator Qml *.qmlproject.user *.qmlproject.user.* /.project *.db .sass-cache _site /build* .vscode *~ *# *.deb *.rpm *.exe *.tar.gz *.lintian Deploy/* *.info wiRedPanda-4.1.12/LICENSE000066400000000000000000001037241444020206400146250ustar00rootroot00000000000000 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 . wiRedPanda-4.1.12/README.md000066400000000000000000000074361444020206400151020ustar00rootroot00000000000000# WiRedPanda ![GitHub All Releases](https://img.shields.io/github/downloads/gibis-unifesp/wiredpanda/total?style=flat-square) ![GitHub release (latest by date)](https://img.shields.io/github/v/release/gibis-unifesp/wiredpanda?style=flat-square) ![GitHub](https://img.shields.io/github/license/gibis-unifesp/wiredpanda?style=flat-square) [![codecov](https://codecov.io/gh/GIBIS-UNIFESP/wiRedPanda/branch/master/graph/badge.svg?token=5YBYB4J705)](https://codecov.io/gh/GIBIS-UNIFESP/wiRedPanda) WiRedPanda is a free software designed to help students learn about logic circuits and simulate them in an easy and friendly way. The main features of the software are: - Works on Windows, macOS and Linux; - Real time logic simulation; - User-friendly interface; - It's intuitive and easy to use; - Export your work as an image or a PDF. _Leia-me em [português](README_pt_BR.md). Léame en [español](README_es.md)._ ![Main screen](https://gibis-unifesp.github.io/wiRedPanda/images/demo.gif) ## Downloads Compiled binaries for Windows, Linux and macOS are available [here](https://github.com/GIBIS-UNIFESP/wiRedPanda/releases). ## Building ### On Linux & macOS #### Dependencies Qt 5.12.0+ or 6.2.0+ and the QtMultimedia module is needed for building. On distros such as Arch Linux, Gentoo, Manjaro, Debian Testing, etc., Qt 5.12+ can be installed from the standard repos. * Debian Testing ```bash sudo apt install qtbase5-dev qt5-make qtbase5-dev-tools qtchooser libqt5multimedia5-dev ``` * Arch Linux-based ```bash sudo pacman -S qt5-base qt5-multimedia ``` * macOS ```bash brew install qt5 ``` * Others Qt5 may be installed directly from the [Qt website](https://www.qt.io/download), from unofficial installers such as [aqtinstall](https://github.com/miurahr/aqtinstall), from community-maintained repositories or [built from source](https://wiki.qt.io/Building_Qt_5_from_Git). Here's how one could use aqtinstall to install Qt 5.15.1 (Python 3 needed) alongside with the necessary plugins on a Debian-based distro. ```bash sudo apt-get update sudo apt-get install build-essential libgl1-mesa-dev libxkbcommon-x11-0 libpulse-dev -y python3 -m pip install setuptools wheel python3 -m pip install py7zr==0.10.1 python3 -m pip install aqtinstall==0.9.7 python3 -m pip install importlib-metadata==2.0.0 python3 -m aqt install 5.15.1 linux desktop -m qtmultimedia -O ~/Qt export Qt5_Dir=~/Qt5/5.15.1 export Qt5_DIR=~/Qt5/5.15.1 export QT_PLUGIN_PATH=~/Qt/5.15.1/gcc_64/plugins PATH=~/Qt/5.15.1/gcc_64/bin:$PATH export PATH ``` #### Build process ```bash git clone https://github.com/GIBIS-UNIFESP/wiredpanda.git mkdir wiredpanda/build cd wiredpanda/build qmake ../WPanda.pro make -j ``` This process could take a while. Once concluded, the binary will be located at `wiredpanda/build/app/wiredpanda`, on Linux, and at `wiredpanda/build/app/wiredpanda.app/Contents/MacOS/wiredpanda` on macOS. ## Licensing WiRedPanda is licensed under the [GNU General Public License, Version 3.0](http://www.gnu.org/licenses/). See [`LICENSE`](LICENSE) for the full license text. Copyright (C) 2022 - Davi Morales, Fábio Cappabianco, Lucas Lellis, Rodrigo Torres and Vinícius Miguel. 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 .wiRedPanda-4.1.12/README_es.md000066400000000000000000000100061444020206400155540ustar00rootroot00000000000000# WiRedPanda ![Todos los lanzamientos de GitHub](https://img.shields.io/github/downloads/gibis-unifesp/wiredpanda/total?style=flat-square) ![Lanzamiento de GitHub (último por fecha)](https://img.shields.io/github/v/release/gibis-unifesp/wiredpanda?style=flat-square) ![GitHub](https://img.shields.io/github/license/gibis-unifesp/wiredpanda?style=flat-square) [![codecov](https://codecov.io/gh/GIBIS-UNIFESP/wiRedPanda/branch/master/graph/badge.svg?token=5YBYB4J705)](https://codecov.io/gh/GIBIS-UNIFESP/wiRedPanda) WiRedPanda es un software gratuito diseñado para ayudar a los estudiantes a aprender sobre circuitos lógicos y simularlos de una manera fácil y amigable. Las principales características del software son: - Funciona en Windows, macOS y Linux; - Simulación lógica en tiempo real; - Interfaz amigable; - Es intuitivo y fácil de usar; - Exporta tu trabajo como una imagen o un PDF. _Leia-me em [português](README_pt_BR.md). Léame en [english](README.md)._ ![Pantalla principal](https://gibis-unifesp.github.io/wiRedPanda/images/demo.gif) ## Descargas Los binarios compilados para Windows, Linux y macOS están disponibles [aquí](https://github.com/GIBIS-UNIFESP/wiRedPanda/releases). ## Compilando ### En Linux y macOS #### Dependencias Se necesita Qt 5.12.0+ o 6.2.0+ y el módulo QtMultimedia para compilar. En distribuciones como Arch Linux, Gentoo, Manjaro, Debian Testing, etc., Qt 5.12+ se puede instalar desde los repositorios estándar. * Debian Testing ```bash sudo apt install qtbase5-dev qt5-make qtbase5-dev-tools qtchooser libqt5multimedia5-dev ``` * Basado en Arch Linux ```bash sudo pacman -S qt5-base qt5-multimedia ``` * macOS ```bash brew install qt5 ``` * Otros Qt5 se puede instalar directamente desde el [sitio web de Qt] (https://www.qt.io/download), desde instaladores no oficiales como [aqtinstall] (https://github.com/miurahr/aqtinstall), desde repositorios mantenidos por la comunidad o [construidos desde la fuente] (https://wiki.qt.io/Building_Qt_5_from_Git). Así es como se podría usar aqtinstall para instalar Qt 5.15.1 (se necesita Python 3) junto con los complementos necesarios en una distribución basada en Debian. ```bash sudo apt-get update sudo apt-get install build-essential libgl1-mesa-dev libxkbcommon-x11-0 libpulse-dev -y python3 -m pip install setuptools wheel python3 -m pip install py7zr==0.10.1 python3 -m pip install aqtinstall==0.9.7 python3 -m pip install importlib-metadata==2.0.0 python3 -m aqt install 5.15.1 linux desktop -m qtmultimedia -O ~/Qt export Qt5_Dir=~/Qt5/5.15.1 export Qt5_DIR=~/Qt5/5.15.1 export QT_PLUGIN_PATH=~/Qt/5.15.1/gcc_64/plugins PATH=~/Qt/5.15.1/gcc_64/bin:$PATH export PATH ``` #### Proceso de compilación ```bash git clone https://github.com/GIBIS-UNIFESP/wiredpanda.git mkdir wiredpanda/build cd wiredpanda/build qmake ../WPanda.pro make -j ``` Este proceso podría llevar un tiempo. Una vez concluido, el binario se ubicará en `wiredpanda/build/app/wiredpanda`, en Linux, y en `wiredpanda/build/app/wiredpanda.app/Contents/MacOS/wiredpanda` en macOS. ## Licencia WiRedPanda tiene licencia bajo la [Licencia pública general de GNU, versión 3.0] (http://www.gnu.org/licenses/). Consulte [`LICENCIA`](LICENCIA) para obtener el texto completo de la licencia. Copyright (C) 2022 - Davi Morales, Fábio Cappabianco, Lucas Lellis, Rodrigo Torres y Vinícius Miguel. Este programa es software libre: puedes redistribuirlo y/o modificar bajo los términos de la Licencia Pública General GNU publicada por la Free Software Foundation, ya sea la versión 3 de la Licencia, o (a su elección) cualquier versión posterior. Este programa se distribuye con la esperanza de que sea útil, pero SIN NINGUNA GARANTIA; sin siquiera la garantía implícita de COMERCIABILIDAD o IDONEIDAD PARA UN FIN DETERMINADO. Ver el Licencia Pública General GNU para más detalles. Debería haber recibido una copia de la Licencia Pública General GNU junto con este programa. Si no, consulte .wiRedPanda-4.1.12/README_pt_BR.md000066400000000000000000000077211444020206400161650ustar00rootroot00000000000000# WiRedPanda ![GitHub All Releases](https://img.shields.io/github/downloads/gibis-unifesp/wiredpanda/total?style=flat-square) ![GitHub release (latest by date)](https://img.shields.io/github/v/release/gibis-unifesp/wiredpanda?style=flat-square) ![GitHub](https://img.shields.io/github/license/gibis-unifesp/wiredpanda?style=flat-square) [![codecov](https://codecov.io/gh/GIBIS-UNIFESP/wiRedPanda/branch/master/graph/badge.svg?token=5YBYB4J705)](https://codecov.io/gh/GIBIS-UNIFESP/wiRedPanda) WiRedPanda é um software gratuito projetado para ajudar os alunos a aprender sobre circuitos lógicos e simulá-los de maneira fácil e amigável. As principais características do software são: - Funciona em Windows, macOS e Linux; - Simulação lógica em tempo real; - Interface amigável; - É intuitivo e fácil de usar; - Exporte seu trabalho como imagem ou PDF. _Read me in [english](README.md). Léame en [español](README_es.md)._ ![Tela principal](https://gibis-unifesp.github.io/wiRedPanda/images/demo.gif) ## Downloads Binários compilados para Windows, Linux e macOS estão disponíveis [aqui](https://github.com/GIBIS-UNIFESP/wiRedPanda/releases). ## Compilação ### No Linux e macOS #### Dependências Qt 5.12.0+ ou 6.2.0+ e o módulo QtMultimedia são necessários para compilar. Em distribuições como Arch Linux, Gentoo, Manjaro, Debian Testing, etc., o Qt 5.12+ pode ser instalado a partir dos repositórios padrão. * Debian Testing ```bash sudo apt install qtbase5-dev qt5-make qtbase5-dev-tools qtchooser libqt5multimedia5-dev ``` * Baseado em Arch Linux ```bash sudo pacman -S qt5-base qt5-multimedia ``` * macOS ```bash brew install qt5 ``` * Outras Qt5 pode ser instalado diretamente do [site Qt](https://www.qt.io/download), de instaladores não oficiais como [aqtinstall](https://github.com/miurahr/aqtinstall), de repositórios mantidos pela comunidade ou [construídos a partir da fonte](https://wiki.qt.io/Building_Qt_5_from_Git). Aqui está como alguém pode usar o aqtinstall para instalar o Qt 5.15.1 (Python 3 necessário) junto com os plugins necessários em uma distribuição baseada no Debian. ```bash sudo apt-get update sudo apt-get install build-essential libgl1-mesa-dev libxkbcommon-x11-0 libpulse-dev -y python3 -m pip install setuptools wheel python3 -m pip install py7zr==0.10.1 python3 -m pip install aqtinstall==0.9.7 python3 -m pip install importlib-metadata==2.0.0 python3 -m aqt install 5.15.1 linux desktop -m qtmultimedia -O ~/Qt export Qt5_Dir=~/Qt5/5.15.1 export Qt5_DIR=~/Qt5/5.15.1 export QT_PLUGIN_PATH=~/Qt/5.15.1/gcc_64/plugins PATH=~/Qt/5.15.1/gcc_64/bin:$PATH export PATH ``` #### Processo de compilação ```bash git clone https://github.com/GIBIS-UNIFESP/wiredpanda.git mkdir wiredpanda/build cd wiredpanda/build qmake ../WPanda.pro make -j ``` Este processo pode demorar um pouco. Uma vez concluído, o binário estará localizado em `wiredpanda/build/app/wiredpanda`, no Linux, e em `wiredpanda/build/app/wiredpanda.app/Contents/MacOS/wiredpanda` no macOS. ## Licença WiRedPanda está licenciado sob a [GNU General Public License, Versão 3.0](http://www.gnu.org/licenses/). Consulte [`LICENSE`](LICENSE) para obter o texto completo da licença. Copyright (C) 2022 - Davi Morales, Fábio Cappabianco, Lucas Lellis, Rodrigo Torres e Vinícius Miguel. Este programa é um software livre: você pode redistribuí-lo e/ou modificá-lo sob os termos da Licença Pública Geral GNU conforme publicada pela Free Software Foundation, seja a versão 3 da Licença, ou (a seu critério) qualquer versão posterior. Este programa é distribuído na esperança de que seja útil, mas SEM QUALQUER GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou ADEQUAÇÃO A UM DETERMINADO FIM. Veja a Licença Pública Geral GNU para mais detalhes. Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este programa. Caso contrário, consulte .wiRedPanda-4.1.12/TODO.md000066400000000000000000000024441444020206400147040ustar00rootroot00000000000000## TODO List - [x] Add `.panda` to files when saving. [link](https://github.com/GIBIS-UNIFESP/wiRedPanda/issues/10) - [x] Undo/Redo. [link](https://github.com/GIBIS-UNIFESP/wiRedPanda/issues/1) - [x] Boxes. [link](https://github.com/GIBIS-UNIFESP/wiRedPanda/issues/9) - [ ] Installer. [link](https://github.com/GIBIS-UNIFESP/wiRedPanda/issues/3) - [x] Add keyboard shortcuts to inputs. [link](https://github.com/GIBIS-UNIFESP/wiRedPanda/issues/11) - [x] Line Split. - [x] Zoom. - [x] Dynamic scene resizing - [x] Align to grid [link](https://github.com/GIBIS-UNIFESP/wiRedPanda/issues/14). - [ ] ~~Align lines to grid ()~~ - [x] Hide Lines, Wires and Ports. - [x] Show Lines with issues. - [x] Search. - [ ] Flip Elements in the latteral pannel. - [X] 16-seg Display. - [ ] ~~Allow gates with more than 8 in/out.~~ - [ ] ~~Labels always in horizontal.~~ - [ ] Verify if file changed outside. - [x] MUX and DEMUX. - [x] Ctrl + Drag copy. - [x] Lauch box in new instance. ## Features we have yet to implement - [ ] Karnaught Map or Truth Table. - [ ] Limited Clock Frequencies. - [ ] Images as buttons. - [ ] Labels as separate elements. - [ ] Verilog Script Generator. - [ ] Add support to custom image backgrounds.. - [ ] ~~Create separate modules for execution and edition.~~ - [ ] Bugs and Warnings highlights. wiRedPanda-4.1.12/WPanda.pro000066400000000000000000000000461444020206400155050ustar00rootroot00000000000000TEMPLATE = subdirs SUBDIRS = app test wiRedPanda-4.1.12/app/000077500000000000000000000000001444020206400143715ustar00rootroot00000000000000wiRedPanda-4.1.12/app/app.pro000066400000000000000000000010271444020206400156730ustar00rootroot00000000000000TARGET = wiredpanda TEMPLATE = app include(../config.pri) include(install.pri) win32 { QMAKE_TARGET_COMPANY = GIBIS-UNIFESP QMAKE_TARGET_PRODUCT = WiRedPanda - Logic Circuit Simulator QMAKE_TARGET_DESCRIPTION = WiRedPanda - Logic Circuit Simulator QMAKE_TARGET_COPYRIGHT = GIBIS-UNIFESP and the WiRedPanda contributors RC_ICONS = resources/wpanda.ico } SOURCES += main.cpp DISTFILES += resources/postinst TRANSLATIONS += \ resources/translations/wpanda_en.ts \ resources/translations/wpanda_pt_BR.ts wiRedPanda-4.1.12/app/application.cpp000066400000000000000000000011041444020206400173740ustar00rootroot00000000000000#include "application.h" #include Application::Application(int &argc, char **argv) : QApplication(argc, argv) { } bool Application::notify(QObject *receiver, QEvent *event) { bool done = false; try { done = QApplication::notify(receiver, event); } catch (const std::exception &e) { QMessageBox::critical(nullptr, tr("Error!"), e.what()); } return done; } MainWindow *Application::mainWindow() const { return m_mainWindow; } void Application::setMainWindow(MainWindow *mainWindow) { m_mainWindow = mainWindow; } wiRedPanda-4.1.12/app/application.h000066400000000000000000000010471444020206400170470ustar00rootroot00000000000000#pragma once #include "mainwindow.h" #include #if defined(qApp) #undef qApp #endif #define qApp (qobject_cast(QCoreApplication::instance())) class Application : public QApplication { Q_OBJECT public: Application(int &argc, char **argv); ~Application() override = default; bool notify(QObject *receiver, QEvent *event) override; MainWindow *mainWindow() const; void setMainWindow(MainWindow *mainWindow); private: Q_DISABLE_COPY(Application) MainWindow *m_mainWindow = nullptr; }; wiRedPanda-4.1.12/app/arduino/000077500000000000000000000000001444020206400160325ustar00rootroot00000000000000wiRedPanda-4.1.12/app/arduino/codegenerator.cpp000066400000000000000000000502201444020206400213560ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #include "codegenerator.h" #include "clock.h" #include "common.h" #include "graphicelement.h" #include "qneconnection.h" #include "qneport.h" #include #if QT_VERSION >= QT_VERSION_CHECK(5, 15, 0) #define endl Qt::endl #endif CodeGenerator::CodeGenerator(const QString &fileName, const QVector &elements) : m_file(fileName) , m_elements(elements) { if (!m_file.open(QIODevice::WriteOnly | QIODevice::Text)) { return; } m_stream.setDevice(&m_file); m_availablePins = QStringList{ "A0", "A1", "A2", "A3", "A4", "A5", // "0", // "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13" }; } static inline QString highLow(const Status val) { return (val == Status::Active) ? "HIGH" : "LOW"; } QString CodeGenerator::removeForbiddenChars(const QString &input) { return input.toLower().trimmed().replace(' ', '_').replace('-', '_').replace(QRegularExpression("\\W"), ""); } QString CodeGenerator::otherPortName(QNEPort *port) { if (!port) { return "LOW"; } if (port->connections().isEmpty()) { return highLow(port->defaultValue()); } auto *otherPort = port->connections().constFirst()->otherPort(port); if (!otherPort) { return highLow(port->defaultValue()); } return m_varMap.value(otherPort); } void CodeGenerator::generate() { m_stream << "// ==================================================================== //" << endl; m_stream << "// ======= This code was generated automatically by WiRedPanda ======== //" << endl; m_stream << "// ==================================================================== //" << endl; m_stream << endl << endl; m_stream << "#include " << endl; /* Declaring input and output pins; */ declareInputs(); declareOutputs(); declareAuxVariables(); /* Setup section */ setup(); /* Loop section */ loop(); } void CodeGenerator::declareInputs() { int counter = 1; m_stream << "/* ========= Inputs ========== */" << endl; for (auto *elm : m_elements) { const auto type = elm->elementType(); if ((type == ElementType::InputButton) || (type == ElementType::InputSwitch)) { QString varName = elm->objectName() + QString::number(counter); const QString label = elm->label(); if (!label.isEmpty()) { varName += "_" + label; } varName = removeForbiddenChars(varName); m_stream << QString("const int %1 = %2;").arg(varName, m_availablePins.constFirst()) << endl; m_inputMap.append(MappedPin(elm, m_availablePins.constFirst(), varName, elm->outputPort(0), 0)); m_availablePins.removeFirst(); m_varMap[elm->outputPort()] = varName + QString("_val"); counter++; } } m_stream << endl; } void CodeGenerator::declareOutputs() { int counter = 1; m_stream << "/* ========= Outputs ========== */" << endl; for (auto *elm : m_elements) { if (elm->elementGroup() == ElementGroup::Output) { QString label = elm->label(); for (int i = 0; i < elm->inputs().size(); ++i) { QString varName = elm->objectName() + QString::number(counter); if (!label.isEmpty()) { varName = QString("%1_%2").arg(varName, label); } QNEPort *port = elm->inputPort(i); if (!port->name().isEmpty()) { varName = QString("%1_%2").arg(varName, port->name()); } varName = removeForbiddenChars(varName); m_stream << QString("const int %1 = %2;").arg(varName, m_availablePins.constFirst()) << endl; m_outputMap.append(MappedPin(elm, m_availablePins.constFirst(), varName, port, i)); m_availablePins.removeFirst(); } } counter++; } m_stream << endl; } void CodeGenerator::declareAuxVariablesRec(const QVector &elements, const bool isBox) { for (auto *elm : elements) { if (elm->elementType() == ElementType::IC) { // IC *ic = qgraphicsitem_cast(elm); // FIXME: Get code generator to work again // if (ic) { // out << "// " << ic->getLabel() << endl; // declareAuxVariablesRec(ic->getElements(), true); // out << "// END of " << ic->getLabel() << endl; // for (int i = 0; i < ic->outputSize(); ++i) { // QNEPort *port = ic->outputMap.at(i); // varMap[ic->outputPort(i)] = otherPortName(port); // } // } } else { QString varName = QString("aux_%1_%2").arg(removeForbiddenChars(elm->objectName()), m_globalCounter++); const auto outputs = elm->outputs(); if (outputs.size() == 1) { QNEPort *port = outputs.constFirst(); if (elm->elementType() == ElementType::InputVcc) { m_varMap[port] = "HIGH"; continue; } if (elm->elementType() == ElementType::InputGnd) { m_varMap[port] = "LOW"; continue; } if (m_varMap.value(port).isEmpty()) { m_varMap[port] = varName; } } else { int portCounter = 0; for (auto *port : outputs) { QString portName = varName; portName.append(QString("_%1").arg(portCounter++)); if (!port->name().isEmpty()) { portName.append(QString("_%1").arg(removeForbiddenChars(port->name()))); } m_varMap[port] = portName; } } for (auto *port : outputs) { QString varName2 = m_varMap.value(port); m_stream << "boolean " << varName2 << " = " << highLow(port->defaultValue()) << ";" << endl; switch (elm->elementType()) { case ElementType::Clock: { if (!isBox) { auto *clk = qgraphicsitem_cast(elm); m_stream << "elapsedMillis " << varName2 << "_elapsed = 0;" << endl; m_stream << "int " << varName2 << "_interval = " << 1000 / clk->frequency() << ";" << endl; } break; } case ElementType::DFlipFlop: { m_stream << "boolean " << varName2 << "_inclk = LOW;" << endl; m_stream << "boolean " << varName2 << "_last = LOW;" << endl; break; } case ElementType::TFlipFlop: case ElementType::SRFlipFlop: case ElementType::JKFlipFlop: { m_stream << "boolean " << varName2 << "_inclk = LOW;" << endl; break; } default: break; } } } } } void CodeGenerator::declareAuxVariables() { m_stream << "/* ====== Aux. Variables ====== */" << endl; declareAuxVariablesRec(m_elements); m_stream << endl; } void CodeGenerator::setup() { m_stream << "void setup() {" << endl; for (const auto &pin : qAsConst(m_inputMap)) { m_stream << " pinMode(" << pin.m_varName << ", INPUT);" << endl; } for (const auto &pin : qAsConst(m_outputMap)) { m_stream << " pinMode(" << pin.m_varName << ", OUTPUT);" << endl; } m_stream << "}" << endl << endl; } void CodeGenerator::assignVariablesRec(const QVector &elements) { for (auto *elm : elements) { if (elm->elementType() == ElementType::IC) { throw Pandaception(tr("IC element not supported: ") + elm->objectName()); // TODO: CodeGenerator::assignVariablesRec for IC Element // IC *ic = qgraphicsitem_cast(elm); // out << " // " << ic->getLabel() << endl; // for (int i = 0; i < ic->inputSize(); ++i) { // QNEPort *port = ic->inputPort(i); // QNEPort *otherPort = port->connections().constFirst()->otherPort(port); // QString value = highLow(port->defaultValue()); // if (!m_varMap.value(otherPort).isEmpty()) { // value = m_varMap.value(otherPort); // } // out << " " << m_varMap.value(ic->inputMap.at(i)) << " = " << value << ";" << endl; // } // QVector icElms = ic->getElements(); // if (icElms.isEmpty()) { // continue; // } // icElms = Simulation::sortElements(icElms); // assignVariablesRec(icElms); // out << " // End of " << ic->getLabel() << endl; } if (elm->inputs().isEmpty() || elm->outputs().isEmpty()) { continue; } QString firstOut = m_varMap.value(elm->outputPort(0)); switch (elm->elementType()) { case ElementType::DFlipFlop: { QString secondOut = m_varMap.value(elm->outputPort(1)); QString data = otherPortName(elm->inputPort(0)); QString clk = otherPortName(elm->inputPort(1)); QString inclk = firstOut + "_inclk"; QString last = firstOut + "_last"; m_stream << QString(" //D FlipFlop") << endl; m_stream << QString(" if (%1 && !%2) { ").arg(clk, inclk) << endl; m_stream << QString(" %1 = %2;").arg(firstOut, last) << endl; m_stream << QString(" %1 = !%2;").arg(secondOut, last) << endl; m_stream << QString(" }") << endl; QString prst = otherPortName(elm->inputPort(2)); QString clr = otherPortName(elm->inputPort(3)); m_stream << QString(" if (!%1 || !%2) { ").arg(prst, clr) << endl; m_stream << QString(" %1 = !%2; //Preset").arg(firstOut, prst) << endl; m_stream << QString(" %1 = !%2; //Clear").arg(secondOut, clr) << endl; m_stream << QString(" }") << endl; /* Updating internal clock. */ m_stream << " " << inclk << " = " << clk << ";" << endl; m_stream << " " << last << " = " << data << ";" << endl; m_stream << QString(" //End of D FlipFlop") << endl; break; } case ElementType::DLatch: { QString secondOut = m_varMap.value(elm->outputPort(1)); QString data = otherPortName(elm->inputPort(0)); QString clk = otherPortName(elm->inputPort(1)); m_stream << QString(" //D Latch") << endl; m_stream << QString(" if (%1) { ").arg(clk) << endl; m_stream << QString(" %1 = %2;").arg(firstOut, data) << endl; m_stream << QString(" %1 = !%2;").arg(secondOut, data) << endl; m_stream << QString(" }") << endl; m_stream << QString(" //End of D Latch") << endl; break; } case ElementType::JKFlipFlop: { QString secondOut = m_varMap.value(elm->outputPort(1)); QString j = otherPortName(elm->inputPort(0)); QString clk = otherPortName(elm->inputPort(1)); QString k = otherPortName(elm->inputPort(2)); QString inclk = firstOut + "_inclk"; m_stream << QString(" //JK FlipFlop") << endl; m_stream << QString(" if (%1 && !%2) { ").arg(clk, inclk) << endl; m_stream << QString(" if (%1 && %2) { ").arg(j, k) << endl; m_stream << QString(" boolean aux = %1;").arg(firstOut) << endl; m_stream << QString(" %1 = %2;").arg(firstOut, secondOut) << endl; m_stream << QString(" %1 = aux;").arg(secondOut) << endl; m_stream << QString(" } else if (%1) {").arg(j) << endl; m_stream << QString(" %1 = 1;").arg(firstOut) << endl; m_stream << QString(" %1 = 0;").arg(secondOut) << endl; m_stream << QString(" } else if (%1) {").arg(k) << endl; m_stream << QString(" %1 = 0;").arg(firstOut) << endl; m_stream << QString(" %1 = 1;").arg(secondOut) << endl; m_stream << QString(" }") << endl; m_stream << QString(" }") << endl; QString prst = otherPortName(elm->inputPort(3)); QString clr = otherPortName(elm->inputPort(4)); m_stream << QString(" if (!%1 || !%2) { ").arg(prst, clr) << endl; m_stream << QString(" %1 = !%2; //Preset").arg(firstOut, prst) << endl; m_stream << QString(" %1 = !%2; //Clear").arg(secondOut, clr) << endl; m_stream << QString(" }") << endl; /* Updating internal clock. */ m_stream << " " << inclk << " = " << clk << ";" << endl; m_stream << QString(" //End of JK FlipFlop") << endl; break; } case ElementType::SRFlipFlop: { QString secondOut = m_varMap.value(elm->outputPort(1)); QString s = otherPortName(elm->inputPort(0)); QString clk = otherPortName(elm->inputPort(1)); QString r = otherPortName(elm->inputPort(2)); QString inclk = firstOut + "_inclk"; m_stream << QString(" //SR FlipFlop") << endl; m_stream << QString(" if (%1 && !%2) { ").arg(clk, inclk) << endl; m_stream << QString(" if (%1 && %2) { ").arg(s, r) << endl; m_stream << QString(" %1 = 1;").arg(firstOut) << endl; m_stream << QString(" %1 = 1;").arg(secondOut) << endl; m_stream << QString(" } else if (%1 != %2) {").arg(s, r) << endl; m_stream << QString(" %1 = %2;").arg(firstOut, s) << endl; m_stream << QString(" %1 = %2;").arg(secondOut, r) << endl; m_stream << QString(" }") << endl; m_stream << QString(" }") << endl; QString prst = otherPortName(elm->inputPort(3)); QString clr = otherPortName(elm->inputPort(4)); m_stream << QString(" if (!%1 || !%2) { ").arg(prst, clr) << endl; m_stream << QString(" %1 = !%2; //Preset").arg(firstOut, prst) << endl; m_stream << QString(" %1 = !%2; //Clear").arg(secondOut, clr) << endl; m_stream << QString(" }") << endl; /* Updating internal clock. */ m_stream << " " << inclk << " = " << clk << ";" << endl; m_stream << QString(" //End of SR FlipFlop") << endl; break; } case ElementType::TFlipFlop: { QString secondOut = m_varMap.value(elm->outputPort(1)); QString t = otherPortName(elm->inputPort(0)); QString clk = otherPortName(elm->inputPort(1)); QString inclk = firstOut + "_inclk"; // QString last = firstOut + "_last"; m_stream << QString(" //T FlipFlop") << endl; m_stream << QString(" if (%1 && !%2) { ").arg(clk, inclk) << endl; m_stream << QString(" if (%1) { ").arg(t) << endl; m_stream << QString(" %1 = !%1;").arg(firstOut) << endl; m_stream << QString(" %1 = !%2;").arg(secondOut, firstOut) << endl; m_stream << QString(" }") << endl; m_stream << QString(" }") << endl; QString prst = otherPortName(elm->inputPort(2)); QString clr = otherPortName(elm->inputPort(3)); m_stream << QString(" if (!%1 || !%2) { ").arg(prst, clr) << endl; m_stream << QString(" %1 = !%2; //Preset").arg(firstOut, prst) << endl; m_stream << QString(" %1 = !%2; //Clear").arg(secondOut, clr) << endl; m_stream << QString(" }") << endl; /* Updating internal clock. */ m_stream << " " << inclk << " = " << clk << ";" << endl; // out << " " << last << " = " << data << ";" << endl; m_stream << QString(" //End of T FlipFlop") << endl; break; } case ElementType::And: case ElementType::Or: case ElementType::Nand: case ElementType::Nor: case ElementType::Xor: case ElementType::Xnor: case ElementType::Not: case ElementType::Node: assignLogicOperator(elm); break; default: throw Pandaception(tr("Element type not supported: ") + elm->objectName()); } } } void CodeGenerator::assignLogicOperator(GraphicElement *elm) { bool negate = false; bool parentheses = true; QString logicOperator; switch (elm->elementType()) { case ElementType::And: { logicOperator = "&&"; break; } case ElementType::Or: { logicOperator = "||"; break; } case ElementType::Nand: { logicOperator = "&&"; negate = true; break; } case ElementType::Nor: { logicOperator = "||"; negate = true; break; } case ElementType::Xor: { logicOperator = "^"; break; } case ElementType::Xnor: { logicOperator = "^"; negate = true; break; } case ElementType::Not: { negate = true; parentheses = false; break; } default: break; } if (elm->outputs().size() == 1) { QString varName = m_varMap.value(elm->outputPort()); QNEPort *inPort = elm->inputPort(); m_stream << " " << varName << " = "; if (negate) { m_stream << "!"; } if (parentheses && negate) { m_stream << "("; } if (!inPort->connections().isEmpty()) { m_stream << otherPortName(inPort); for (int i = 1; i < elm->inputs().size(); ++i) { inPort = elm->inputs().at(i); m_stream << " " << logicOperator << " "; m_stream << otherPortName(inPort); } } if (parentheses && negate) { m_stream << ")"; } m_stream << ";" << endl; } else { /* ... */ } } void CodeGenerator::loop() { m_stream << "void loop() {" << endl; m_stream << " // Reading input data //." << endl; for (const auto &pin : qAsConst(m_inputMap)) { m_stream << QString(" %1_val = digitalRead(%1);").arg(pin.m_varName) << endl; } m_stream << endl; m_stream << " // Updating clocks. //" << endl; for (auto *elm : m_elements) { if (elm->elementType() == ElementType::Clock) { const auto elmOutputs = elm->outputs(); QString varName = m_varMap.value(elmOutputs.constFirst()); m_stream << QString(" if (%1_elapsed > %1_interval){").arg(varName) << endl; m_stream << QString(" %1_elapsed = 0;").arg(varName) << endl; m_stream << QString(" %1 = ! %1;").arg(varName) << endl; m_stream << QString(" }") << endl; } } /* Aux variables. */ m_stream << endl; m_stream << " // Assigning aux variables. //" << endl; assignVariablesRec(m_elements); m_stream << "\n"; m_stream << " // Writing output data. //\n"; for (const auto &pin : qAsConst(m_outputMap)) { QString varName = otherPortName(pin.m_port); if (varName.isEmpty()) { varName = highLow(pin.m_port->defaultValue()); } m_stream << QString(" digitalWrite(%1, %2);").arg(pin.m_varName, varName) << endl; } m_stream << "}" << endl; } wiRedPanda-4.1.12/app/arduino/codegenerator.h000066400000000000000000000031521444020206400210250ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include #include #include #include #include class GraphicElement; class QNEPort; class MappedPin { public: MappedPin() = default; MappedPin(GraphicElement *elm, const QString &pin, const QString &varName, QNEPort *port, const int portNumber = 0) : m_elm(elm) , m_port(port) , m_pin(pin) , m_varName(varName) , m_portNumber(portNumber) { } GraphicElement *m_elm = nullptr; QNEPort *m_port = nullptr; QString m_pin; QString m_varName; int m_portNumber = 0; }; class CodeGenerator { Q_DECLARE_TR_FUNCTIONS(CodeGenerator) public: CodeGenerator(const QString &fileName, const QVector &elements); void generate(); private: static QString removeForbiddenChars(const QString &input); QString otherPortName(QNEPort *port); void assignLogicOperator(GraphicElement *elm); void assignVariablesRec(const QVector &elements); void declareAuxVariables(); void declareAuxVariablesRec(const QVector &elements, const bool isBox = false); void declareInputs(); void declareOutputs(); void loop(); void setup(); QFile m_file; QHash m_varMap; QStringList m_availablePins; QTextStream m_stream; QVector m_inputMap; QVector m_outputMap; const QVector m_elements; int m_globalCounter = 1; }; wiRedPanda-4.1.12/app/bewaveddolphin.cpp000066400000000000000000001215421444020206400200750ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #include "bewaveddolphin.h" #include "ui_bewaveddolphin.h" #include "clockdialog.h" #include "common.h" #include "elementfactory.h" #include "globalproperties.h" #include "graphicelement.h" #include "graphicelementinput.h" #include "lengthdialog.h" #include "mainwindow.h" #include "settings.h" #include "simulationblocker.h" #include #include #include #include #include #include #include #include #include #include #include SignalModel::SignalModel(const int inputs, const int rows, const int columns, QObject *parent) : QStandardItemModel(rows, columns, parent) , m_inputCount(inputs) { } Qt::ItemFlags SignalModel::flags(const QModelIndex &index) const { Qt::ItemFlags flags = Qt::ItemIsSelectable | Qt::ItemIsEnabled; if (index.row() < m_inputCount) { flags |= Qt::ItemIsEditable; } return flags; } SignalDelegate::SignalDelegate(QObject *parent) : QItemDelegate(parent) { } void SignalDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const { QStyleOptionViewItem itemOption(option); itemOption.rect.adjust(-4, 0, 0, 0); QItemDelegate::paint(painter, itemOption, index); } BewavedDolphin::BewavedDolphin(Scene *scene, const bool askConnection, MainWindow *parent) : QMainWindow(parent) , m_ui(new Ui::BewavedDolphin) , m_mainWindow(parent) , m_externalScene(scene) , m_askConnection(askConnection) { m_ui->setupUi(this); m_ui->retranslateUi(this); setAttribute(Qt::WA_DeleteOnClose); setWindowModality(Qt::WindowModal); setWindowTitle(tr("beWavedDolphin Simulator")); resize(800, 500); restoreGeometry(Settings::value("beWavedDolphin/geometry").toByteArray()); m_signalTableView->setItemDelegate(new SignalDelegate(this)); m_scene->addWidget(m_signalTableView); m_view.setScene(m_scene); m_view.setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); m_view.setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); m_ui->verticalLayout->addWidget(&m_view); m_ui->mainToolBar->setToolButtonStyle(Settings::value("labelsUnderIcons").toBool() ? Qt::ToolButtonTextUnderIcon : Qt::ToolButtonIconOnly); loadPixmaps(); connect(m_ui->actionAbout, &QAction::triggered, this, &BewavedDolphin::on_actionAbout_triggered); connect(m_ui->actionAboutQt, &QAction::triggered, this, &BewavedDolphin::on_actionAboutQt_triggered); connect(m_ui->actionClear, &QAction::triggered, this, &BewavedDolphin::on_actionClear_triggered); connect(m_ui->actionCombinational, &QAction::triggered, this, &BewavedDolphin::on_actionCombinational_triggered); connect(m_ui->actionCopy, &QAction::triggered, this, &BewavedDolphin::on_actionCopy_triggered); connect(m_ui->actionCut, &QAction::triggered, this, &BewavedDolphin::on_actionCut_triggered); connect(m_ui->actionExit, &QAction::triggered, this, &BewavedDolphin::on_actionExit_triggered); connect(m_ui->actionExportToPdf, &QAction::triggered, this, &BewavedDolphin::on_actionExportToPdf_triggered); connect(m_ui->actionExportToPng, &QAction::triggered, this, &BewavedDolphin::on_actionExportToPng_triggered); connect(m_ui->actionFitScreen, &QAction::triggered, this, &BewavedDolphin::on_actionFitScreen_triggered); connect(m_ui->actionInvert, &QAction::triggered, this, &BewavedDolphin::on_actionInvert_triggered); connect(m_ui->actionLoad, &QAction::triggered, this, &BewavedDolphin::on_actionLoad_triggered); connect(m_ui->actionPaste, &QAction::triggered, this, &BewavedDolphin::on_actionPaste_triggered); connect(m_ui->actionResetZoom, &QAction::triggered, this, &BewavedDolphin::on_actionResetZoom_triggered); connect(m_ui->actionSave, &QAction::triggered, this, &BewavedDolphin::on_actionSave_triggered); connect(m_ui->actionSaveAs, &QAction::triggered, this, &BewavedDolphin::on_actionSaveAs_triggered); connect(m_ui->actionSetClockWave, &QAction::triggered, this, &BewavedDolphin::on_actionSetClockWave_triggered); connect(m_ui->actionSetLength, &QAction::triggered, this, &BewavedDolphin::on_actionSetLength_triggered); connect(m_ui->actionSetTo0, &QAction::triggered, this, &BewavedDolphin::on_actionSetTo0_triggered); connect(m_ui->actionSetTo1, &QAction::triggered, this, &BewavedDolphin::on_actionSetTo1_triggered); connect(m_ui->actionShowNumbers, &QAction::triggered, this, &BewavedDolphin::on_actionShowNumbers_triggered); connect(m_ui->actionShowWaveforms, &QAction::triggered, this, &BewavedDolphin::on_actionShowWaveforms_triggered); connect(m_ui->actionZoomIn, &QAction::triggered, this, &BewavedDolphin::on_actionZoomIn_triggered); connect(m_ui->actionZoomOut, &QAction::triggered, this, &BewavedDolphin::on_actionZoomOut_triggered); } BewavedDolphin::~BewavedDolphin() { Settings::setValue("beWavedDolphin/geometry", saveGeometry()); delete m_ui; } void BewavedDolphin::loadPixmaps() { m_lowGreen = QPixmap(":/dolphin/low_green.svg").scaled(100, 38); m_highGreen = QPixmap(":/dolphin/high_green.svg").scaled(100, 38); m_fallingGreen = QPixmap(":/dolphin/falling_green.svg").scaled(100, 38); m_risingGreen = QPixmap(":/dolphin/rising_green.svg").scaled(100, 38); m_lowBlue = QPixmap(":/dolphin/low_blue.svg").scaled(100, 38); m_highBlue = QPixmap(":/dolphin/high_blue.svg").scaled(100, 38); m_fallingBlue = QPixmap(":/dolphin/falling_blue.svg").scaled(100, 38); m_risingBlue = QPixmap(":/dolphin/rising_blue.svg").scaled(100, 38); } void BewavedDolphin::createWaveform(const QString &fileName) { prepare(fileName); if (fileName.isEmpty()) { setWindowTitle(tr("beWavedDolphin Simulator")); run(); } else { QFileInfo fileInfo(m_mainWindow->currentDir(), QFileInfo(fileName).fileName()); if (!fileInfo.exists()) { m_ui->statusbar->showMessage(tr("File \"%1\" does not exist!").arg(fileName), 4000); return; } load(fileInfo.absoluteFilePath()); } qCDebug(zero) << tr("Resuming digital circuit main window after waveform simulation is finished."); m_edited = false; } void BewavedDolphin::createWaveform() { prepare(); loadFromTerminal(); } void BewavedDolphin::loadFromTerminal() { QTextStream cin(stdin); QString str = cin.readLine(); const auto wordList(str.split(',')); if (wordList.size() < 2) { throw Pandaception(""); } int rows = wordList.at(0).toInt(); const int cols = wordList.at(1).toInt(); if (rows > m_inputPorts) { rows = m_inputPorts; } if ((cols < 2) || (cols > 2048)) { throw Pandaception(""); } setLength(cols, false); for (int row = 0; row < rows; ++row) { str = cin.readLine(); const auto wordList2(str.split(',')); if (wordList2.size() < cols) { throw Pandaception(""); } for (int col = 0; col < cols; ++col) { const int value = wordList2.at(col).toInt(); createElement(row, col, value, true); } } run(); } void BewavedDolphin::prepare(const QString &fileName) { qCDebug(zero) << tr("Updating window name with current: ") << fileName; m_simulation = m_externalScene->simulation(); qCDebug(zero) << tr("Loading elements. All elements initially in elements vector. Then, inputs and outputs are extracted from it."); loadElements(); qCDebug(zero) << tr("Loading initial data into the table."); loadNewTable(); } void BewavedDolphin::loadElements() { m_inputs.clear(); m_outputs.clear(); m_inputPorts = 0; const auto elements = Common::sortGraphicElements(m_externalScene->elements()); if (elements.isEmpty()) { throw Pandaception(tr("Could not load enough elements for the simulation.")); } for (auto *elm : elements) { if (!elm || (elm->type() != GraphicElement::Type)) { continue; } if (elm->elementGroup() == ElementGroup::Input) { m_inputs.append(qobject_cast(elm)); m_inputPorts += elm->outputSize(); } if (elm->elementGroup() == ElementGroup::Output) { m_outputs.append(elm); } } std::stable_sort(m_inputs.begin(), m_inputs.end(), [](const auto &elm1, const auto &elm2) { return QString::compare(elm1->label(), elm2->label(), Qt::CaseInsensitive) < 0; }); std::stable_sort(m_outputs.begin(), m_outputs.end(), [](const auto &elm1, const auto &elm2) { return QString::compare(elm1->label(), elm2->label(), Qt::CaseInsensitive) < 0; }); if (m_inputs.isEmpty() || m_outputs.isEmpty()) { throw Pandaception(tr("Could not load enough elements for the simulation.")); } } void BewavedDolphin::loadNewTable() { qCDebug(zero) << tr("Getting initial value from inputs and writing them to oldvalues. Used to save current state of inputs and restore it after simulation. Not saving memory states though..."); qCDebug(zero) << tr("Also getting the name of the inputs. If no label is given, the element type is used as a name."); QStringList inputLabels; QStringList outputLabels; loadSignals(inputLabels, outputLabels); // --------------------------------------- qCDebug(zero) << tr("Num iter = ") << m_length; m_model = new SignalModel(inputLabels.size(), inputLabels.size() + outputLabels.size(), m_length, this); m_signalTableView->setModel(m_model); m_model->setVerticalHeaderLabels(inputLabels + outputLabels); m_signalTableView->setAlternatingRowColors(true); m_signalTableView->setShowGrid(false); m_signalTableView->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeMode::Fixed); m_signalTableView->verticalHeader()->setSectionResizeMode(QHeaderView::ResizeMode::Fixed); m_signalTableView->horizontalHeader()->setDefaultSectionSize(1); qCDebug(zero) << tr("Inputs: ") << inputLabels.size() << tr(", outputs: ") << outputLabels.size(); on_actionClear_triggered(); connect(m_signalTableView->selectionModel(), &QItemSelectionModel::selectionChanged, this, &BewavedDolphin::on_tableView_selectionChanged); } void BewavedDolphin::on_tableView_selectionChanged() { m_externalScene->clearSelection(); const auto indexes = m_signalTableView->selectionModel()->selectedIndexes(); for (auto index : indexes) { if (index.row() < m_inputs.size()) { m_inputs.at(index.row())->setSelected(true); } } m_externalScene->view()->update(); } void BewavedDolphin::loadSignals(QStringList &inputLabels, QStringList &outputLabels) { QVector oldValues(m_inputPorts); int oldIndex = 0; for (auto *input : qAsConst(m_inputs)) { QString label = input->label(); if (label.isEmpty()) { label = ElementFactory::translatedName(input->elementType()); } for (int port = 0; port < input->outputSize(); ++port) { if (input->outputSize() > 1) { inputLabels.append(label + "[" + QString::number(port) + "]"); } else { inputLabels.append(label); } oldValues[oldIndex] = input->outputPort(port)->status(); ++oldIndex; } } qCDebug(zero) << tr("Getting the name of the outputs. If no label is given, element type is used as a name."); for (auto *output : qAsConst(m_outputs)) { QString label = output->label(); if (label.isEmpty()) { label = ElementFactory::translatedName(output->elementType()); } for (int port = 0; port < output->inputSize(); ++port) { if (output->inputSize() > 1) { outputLabels.append(label + "[" + QString::number(port) + "]"); } else { outputLabels.append(label); } } } m_oldInputValues = oldValues; } void BewavedDolphin::run() { run2(); run2(); } void BewavedDolphin::run2() { qCDebug(zero) << tr("Creating class to pause main window simulator while creating waveform."); SimulationBlocker simulationBlocker(m_simulation); for (int column = 0; column < m_model->columnCount(); ++column) { qCDebug(four) << tr("Itr: ") << column << tr(", inputs: ") << m_inputs.size(); int row = 0; for (auto *input : qAsConst(m_inputs)) { for (int port = 0; port < input->outputSize(); ++port) { const bool value = static_cast(m_model->index(row, column).data().toInt()); input->setOn(value, port); ++row; } } qCDebug(four) << tr("Updating the values of the circuit logic based on current input values."); m_simulation->update(); m_simulation->update(); m_simulation->update(); qCDebug(four) << tr("Setting the computed output values to the waveform results."); row = m_inputPorts; for (auto *output : qAsConst(m_outputs)) { for (int port = 0; port < output->inputSize(); ++port) { const int value = static_cast(output->inputPort(port)->status()); createElement(row, column, value, false); row++; } } } qCDebug(three) << tr("Setting inputs back to old values."); restoreInputs(); } void BewavedDolphin::restoreInputs() { qCDebug(zero) << tr("Restoring old values to inputs, prior to simulation."); for (int index = 0; index < m_inputs.size(); ++index) { for (int port = 0; port < m_inputs.value(index)->outputSize(); ++port) { auto *input = m_inputs.at(index); const bool oldValue = static_cast(m_oldInputValues.at(index)); if (m_inputs.value(index)->outputSize() > 1) { input->setOn(oldValue, port); } else { input->setOn(oldValue); } } } } void BewavedDolphin::resizeEvent(QResizeEvent *event) { QMainWindow::resizeEvent(event); resizeScene(); } void BewavedDolphin::resizeScene() { const int newWidth = m_ui->centralwidget->width(); const int newHeight = m_ui->centralwidget->height() - 2; if (newWidth > 4000 or newHeight > 4000) { on_actionResetZoom_triggered(); throw Pandaception(tr("Waveform would be too big! Resetting zoom.")); } m_signalTableView->resize(newWidth, newHeight); m_scene->setSceneRect(m_scene->itemsBoundingRect()); } void BewavedDolphin::on_actionExit_triggered() { close(); } void BewavedDolphin::closeEvent(QCloseEvent *event) { (m_askConnection && checkSave()) ? event->accept() : event->ignore(); } bool BewavedDolphin::checkSave() { if (!m_edited) { return true; } auto reply = QMessageBox::question( this, tr("WiRedPanda - beWavedDolphin"), tr("Save simulation before closing?"), QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel); switch(reply){ case QMessageBox::Save: on_actionSave_triggered(); return (!m_edited); case QMessageBox::Discard: return true; case QMessageBox::Cancel: return false; default: return true; } } void BewavedDolphin::createElement(const int row, const int col, const int value, const bool isInput, const bool changeNext) { (value == 0) ? createZeroElement(row, col, isInput, changeNext) : createOneElement(row, col, isInput, changeNext); } void BewavedDolphin::createZeroElement(const int row, const int col, const bool isInput, const bool changeNext) { const auto index = m_model->index(row, col); qCDebug(three) << tr("Getting current value to check if need to refresh next cell"); const int currentValue = index.data().toInt(); qCDebug(three) << tr("Changing current item."); m_model->setData(index, 0, Qt::DisplayRole); if (m_type == PlotType::Number) { m_model->setData(index, Qt::AlignCenter, Qt::TextAlignmentRole); } if (m_type == PlotType::Line) { m_model->setData(index, Qt::AlignLeft, Qt::TextAlignmentRole); const auto previousIndex = index.siblingAtColumn(col - 1); const bool hasPreviousItem = previousIndex.isValid(); const bool isPreviousHigh = hasPreviousItem ? previousIndex.data().toInt() == 1 : false; if (isInput) { m_model->setData(index, hasPreviousItem && isPreviousHigh ? m_fallingBlue : m_lowBlue, Qt::DecorationRole); } else { m_model->setData(index, hasPreviousItem && isPreviousHigh ? m_fallingGreen : m_lowGreen, Qt::DecorationRole); } if (!changeNext) { return; } const auto nextIndex = m_model->index(row, col + 1); if (nextIndex.isValid() && (currentValue == 1)) { qCDebug(three) << tr("Changing next item."); createElement(row, col + 1, nextIndex.data().toInt(), isInput, false); } } } void BewavedDolphin::createOneElement(const int row, const int col, const bool isInput, const bool changeNext) { const auto index = m_model->index(row, col); qCDebug(three) << tr("Getting current value to check if need to refresh next cell"); const int currentValue = index.data().toInt(); qCDebug(three) << tr("Changing current item."); m_model->setData(index, 1, Qt::DisplayRole); if (m_type == PlotType::Number) { m_model->setData(index, Qt::AlignCenter, Qt::TextAlignmentRole); } if (m_type == PlotType::Line) { m_model->setData(index, Qt::AlignLeft, Qt::TextAlignmentRole); const auto previousIndex = index.siblingAtColumn(col - 1); const bool hasPreviousItem = previousIndex.isValid(); const bool isPreviousLow = hasPreviousItem ? previousIndex.data().toInt() == 0 : false; if (isInput) { m_model->setData(index, hasPreviousItem && isPreviousLow ? m_risingBlue : m_highBlue, Qt::DecorationRole); } else { m_model->setData(index, hasPreviousItem && isPreviousLow ? m_risingGreen : m_highGreen, Qt::DecorationRole); } if (!changeNext) { return; } const auto nextIndex = m_model->index(row, col + 1); if (nextIndex.isValid() && (currentValue == 0)) { qCDebug(three) << tr("Changing next item."); createElement(row, col + 1, nextIndex.data().toInt(), isInput, false); } } } void BewavedDolphin::show() { QMainWindow::show(); qCDebug(zero) << tr("Getting table dimensions."); resizeScene(); } void BewavedDolphin::print() { std::cout << m_model->rowCount() << ","; std::cout << m_model->columnCount() << ",\n"; for (int row = 0; row < m_model->rowCount(); ++row) { for (int col = 0; col < m_model->columnCount(); ++col) { std::cout << m_model->item(row, col)->text().toStdString() << ","; } std::cout << "\n"; } } void BewavedDolphin::saveToTxt(QTextStream &stream) { on_actionCombinational_triggered(); const int truthTableSize = std::pow(2, m_inputPorts); setLength(truthTableSize, false); for (int row = 0; row < m_inputs.size(); ++row) { for (int col = 0; col < m_model->columnCount(); ++col) { stream << m_model->item(row, col)->text(); } QString label = m_model->verticalHeaderItem(row)->text(); stream << " : \"" << label << "\"\n"; } stream << "\n"; for (int row = m_inputs.size(); row < m_model->rowCount(); ++row) { for (int col = 0; col < m_model->columnCount(); ++col) { stream << m_model->item(row, col)->text(); } QString label = m_model->verticalHeaderItem(row)->text(); stream << " : \"" << label << "\"\n"; } } void BewavedDolphin::on_actionSetTo0_triggered() { qCDebug(zero) << tr("Pressed 0."); const auto itemList = m_signalTableView->selectionModel()->selectedIndexes(); for (const auto &item : itemList) { const int row = item.row(); const int col = item.column(); qCDebug(zero) << tr("Editing value."); createZeroElement(row, col); } m_edited = true; qCDebug(zero) << tr("Running simulation."); run(); } void BewavedDolphin::on_actionSetTo1_triggered() { qCDebug(zero) << tr("Pressed 0."); const auto itemList = m_signalTableView->selectionModel()->selectedIndexes(); for (const auto &item : itemList) { const int row = item.row(); const int col = item.column(); qCDebug(zero) << tr("Editing value."); createOneElement(row, col); } m_edited = true; qCDebug(zero) << tr("Running simulation."); run(); } void BewavedDolphin::on_actionInvert_triggered() { qCDebug(zero) << tr("Pressed Not."); const auto itemList = m_signalTableView->selectionModel()->selectedIndexes(); for (const auto &item : itemList) { const int row = item.row(); const int col = item.column(); int value = m_model->index(row, col, QModelIndex()).data().toInt(); value = (value + 1) % 2; qCDebug(zero) << tr("Editing value."); createElement(row, col, value); } m_edited = true; qCDebug(zero) << tr("Running simulation."); run(); } int BewavedDolphin::sectionFirstColumn(const QItemSelection &ranges) { int firstCol = m_model->columnCount() - 1; for (const auto &range : ranges) { if (range.left() < firstCol) { firstCol = range.left(); } } return firstCol; } int BewavedDolphin::sectionFirstRow(const QItemSelection &ranges) { int firstRow = m_model->rowCount() - 1; for (const auto &range : ranges) { if (range.top() < firstRow) { firstRow = range.top(); } } return firstRow; } void BewavedDolphin::on_actionSetClockWave_triggered() { qCDebug(zero) << tr("Getting first column."); const auto ranges = m_signalTableView->selectionModel()->selection(); if (ranges.isEmpty()) { throw Pandaception(tr("No cells selected.")); } const int firstCol = sectionFirstColumn(ranges); qCDebug(zero) << tr("Setting the signal according to its column and clock period."); ClockDialog dialog(m_clockPeriod, this); const int clockPeriod = dialog.frequency(); if (clockPeriod < 0) { return; } m_clockPeriod = clockPeriod; const int halfClockPeriod = clockPeriod / 2; const auto itemList = m_signalTableView->selectionModel()->selectedIndexes(); for (const auto &item : itemList) { const int row = item.row(); const int col = item.column(); const int value = ((col - firstCol) % clockPeriod < halfClockPeriod ? 0 : 1); qCDebug(zero) << tr("Editing value."); createElement(row, col, value); } m_edited = true; qCDebug(zero) << tr("Running simulation."); run(); } void BewavedDolphin::on_actionCombinational_triggered() { const int truthTableSize = std::pow(2, m_inputPorts); if (m_length < truthTableSize) { setLength(truthTableSize, false); } qCDebug(zero) << tr("Setting the signal according to its columns and clock period."); int halfClockPeriod = 1; int clockPeriod = 2; for (int row = 0; row < m_inputPorts; ++row) { for (int col = 0; col < m_model->columnCount(); ++col) { const int value = (col % clockPeriod < halfClockPeriod ? 0 : 1); createElement(row, col, value); } halfClockPeriod = std::min(clockPeriod, 524'288); clockPeriod = std::min(2 * clockPeriod, 1'048'576); } m_edited = true; qCDebug(zero) << tr("Running simulation."); run(); } void BewavedDolphin::on_actionSetLength_triggered() { qCDebug(zero) << tr("Setting the simulation length."); const int currentLength = m_length > 0 ? m_length : m_model->columnCount(); LengthDialog dialog(currentLength, this); const int simLength = dialog.length(); if (simLength < 0) { return; } setLength(simLength, true); } void BewavedDolphin::setLength(const int simLength, const bool runSimulation) { if (m_length == simLength) { return; } m_length = simLength; if (simLength <= m_model->columnCount()) { qCDebug(zero) << tr("Reducing or keeping the simulation length."); m_model->setColumnCount(simLength); resizeScene(); m_edited = true; return; } qCDebug(zero) << tr("Increasing the simulation length."); const int oldLength = m_model->columnCount(); m_model->setColumnCount(simLength); for (int row = 0; row < m_inputPorts; ++row) { for (int col = oldLength; col < m_model->columnCount(); ++col) { createZeroElement(row, col, true, false); } } resizeScene(); m_edited = true; qCDebug(zero) << tr("Running simulation."); if (runSimulation) { run(); } } void BewavedDolphin::on_actionZoomOut_triggered() { m_scale *= m_scaleFactor; m_view.zoomOut(); resizeScene(); zoomChanged(); } void BewavedDolphin::on_actionZoomIn_triggered() { m_scale /= m_scaleFactor; m_view.zoomIn(); resizeScene(); zoomChanged(); } void BewavedDolphin::on_actionResetZoom_triggered() { m_view.resetZoom(); m_scale = 1.0; resizeScene(); zoomChanged(); } void BewavedDolphin::zoomChanged() { m_ui->actionZoomIn->setEnabled(m_view.canZoomIn()); m_ui->actionZoomOut->setEnabled(m_view.canZoomOut()); } void BewavedDolphin::on_actionFitScreen_triggered() { m_view.scale(1.0 / m_scale, 1.0 / m_scale); const double wScale = static_cast(m_view.width()) / (m_signalTableView->horizontalHeader()->length() + m_signalTableView->columnWidth(0)); const double hScale = static_cast(m_view.height()) / (m_signalTableView->verticalHeader()->length() + m_signalTableView->rowHeight(0) + 10); m_scale = std::min(wScale, hScale); m_view.scale(1.0 * m_scale, 1.0 * m_scale); resizeScene(); } void BewavedDolphin::on_actionClear_triggered() { for (int row = 0; row < m_inputPorts; ++row) { for (int col = 0; col < m_model->columnCount(); ++col) { createZeroElement(row, col); } } m_edited = true; qCDebug(zero) << tr("Running simulation."); run(); } void BewavedDolphin::on_actionCopy_triggered() { const auto ranges = m_signalTableView->selectionModel()->selection(); if (ranges.isEmpty()) { QApplication::clipboard()->clear(); return; } QByteArray itemData; QDataStream stream(&itemData, QIODevice::WriteOnly); stream.setVersion(QDataStream::Qt_5_12); copy(ranges, stream); auto *mimeData = new QMimeData(); mimeData->setData("bdolphin/copydata", itemData); QApplication::clipboard()->setMimeData(mimeData); } void BewavedDolphin::copy(const QItemSelection &ranges, QDataStream &stream) { qCDebug(zero) << tr("Serializing data into data stream."); const int firstRow = sectionFirstRow(ranges); const int firstCol = sectionFirstColumn(ranges); const auto itemList = m_signalTableView->selectionModel()->selectedIndexes(); stream << static_cast(itemList.size()); for (const auto &item : itemList) { const int row = item.row(); const int col = item.column(); const int data_ = m_model->index(row, col).data().toInt(); stream << static_cast(row - firstRow); stream << static_cast(col - firstCol); stream << static_cast(data_); } } void BewavedDolphin::on_actionCut_triggered() { const auto ranges = m_signalTableView->selectionModel()->selection(); if (ranges.isEmpty()) { QApplication::clipboard()->clear(); return; } QByteArray itemData; QDataStream stream(&itemData, QIODevice::WriteOnly); stream.setVersion(QDataStream::Qt_5_12); cut(ranges, stream); auto *mimeData = new QMimeData(); mimeData->setData("bdolphin/copydata", itemData); QApplication::clipboard()->setMimeData(mimeData); m_edited = true; } void BewavedDolphin::cut(const QItemSelection &ranges, QDataStream &stream) { copy(ranges, stream); on_actionSetTo0_triggered(); } void BewavedDolphin::on_actionPaste_triggered() { const auto ranges = m_signalTableView->selectionModel()->selection(); if (ranges.isEmpty()) { return; } const auto *mimeData = QApplication::clipboard()->mimeData(); if (mimeData->hasFormat("bdolphin/copydata")) { QByteArray itemData = mimeData->data("bdolphin/copydata"); QDataStream stream(&itemData, QIODevice::ReadOnly); stream.setVersion(QDataStream::Qt_5_12); paste(ranges, stream); } m_edited = true; } void BewavedDolphin::paste(const QItemSelection &ranges, QDataStream &stream) { const int firstCol = sectionFirstColumn(ranges); const int firstRow = sectionFirstRow(ranges); quint64 itemListSize; stream >> itemListSize; for (int i = 0; i < static_cast(itemListSize); ++i) { quint64 row; stream >> row; quint64 col; stream >> col; quint64 data_; stream >> data_; const int newRow = static_cast(firstRow + row); const int newCol = static_cast(firstCol + col); if ((newRow < m_inputPorts) && (newCol < m_model->columnCount())) { createElement(newRow, newCol, static_cast(data_)); } } run(); } void BewavedDolphin::on_actionSave_triggered() { if (m_currentFile.fileName().isEmpty()) { on_actionSaveAs_triggered(); return; } save(m_currentFile.absoluteFilePath()); m_ui->statusbar->showMessage(tr("Saved file successfully."), 4000); m_edited = false; } void BewavedDolphin::on_actionSaveAs_triggered() { const QString path = m_mainWindow->currentFile().absolutePath(); QFileDialog fileDialog; fileDialog.setObjectName(tr("Save File as...")); const QString fileFilter = m_currentFile.fileName().endsWith(".csv") ? tr("CSV files (*.csv);;Dolphin files (*.dolphin);;All supported files (*.dolphin *.csv)") : tr("Dolphin files (*.dolphin);;CSV files (*.csv);;All supported files (*.dolphin *.csv)"); fileDialog.setNameFilter(fileFilter); fileDialog.setAcceptMode(QFileDialog::AcceptSave); fileDialog.setDirectory(path); fileDialog.setFileMode(QFileDialog::AnyFile); if (fileDialog.exec() == QDialog::Rejected) { return; } const auto files = fileDialog.selectedFiles(); QString fileName = files.constFirst(); if (fileName.isEmpty()) { return; } if (!fileName.endsWith(".dolphin") && !fileName.endsWith(".csv")) { if (fileDialog.selectedNameFilter().contains("dolphin")) { fileName.append(".dolphin"); } else { fileName.append(".csv"); } } save(fileName); m_currentFile = QFileInfo(fileName); associateToWiredPanda(fileName); setWindowTitle(tr("beWavedDolphin Simulator") + " [" + m_currentFile.fileName() + "]"); m_ui->statusbar->showMessage(tr("Saved file successfully."), 4000); m_edited = false; } void BewavedDolphin::save(const QString &fileName) { QSaveFile file(fileName); if (!file.open(QIODevice::WriteOnly)) { throw Pandaception(tr("Error opening file: ") + file.errorString()); } if (fileName.endsWith(".dolphin")) { qCDebug(zero) << tr("Saving dolphin file."); QDataStream stream(&file); stream.setVersion(QDataStream::Qt_5_12); save(stream); } else { qCDebug(zero) << tr("Saving CSV file."); save(file); } if (!file.commit()) { throw Pandaception(tr("Error saving file: ") + file.errorString()); } } void BewavedDolphin::save(QDataStream &stream) { stream << QString("beWavedDolphin 1.0"); qCDebug(zero) << tr("Serializing data into data stream."); stream << static_cast(m_inputPorts); stream << static_cast(m_model->columnCount()); for (int col = 0; col < m_model->columnCount(); ++col) { for (int row = 0; row < m_inputPorts; ++row) { const int val = m_model->index(row, col).data().toInt(); stream << static_cast(val); } } } void BewavedDolphin::save(QSaveFile &file) { file.write(QString::number(m_model->rowCount()).toUtf8()); file.write(","); file.write(QString::number(m_model->columnCount()).toUtf8()); file.write(",\n"); for (int row = 0; row < m_model->rowCount(); ++row) { for (int col = 0; col < m_model->columnCount(); ++col) { const QString val = m_model->index(row, col).data().toString(); file.write(val.toUtf8()); file.write(","); } file.write("\n"); } } void BewavedDolphin::associateToWiredPanda(const QString &fileName) { if ((m_mainWindow->dolphinFileName() != fileName) && GlobalProperties::verbose) { const auto reply = QMessageBox::question( this, tr("WiRedPanda - beWavedDolphin"), tr("Do you want to link this beWavedDolphin file to your current WiRedPanda file and save it?"), QMessageBox::Yes | QMessageBox::No); if (reply == QMessageBox::Yes) { m_mainWindow->setDolphinFileName(fileName); m_mainWindow->save(); } } } void BewavedDolphin::on_actionLoad_triggered() { QDir defaultDirectory; if (m_currentFile.exists()) { defaultDirectory.setPath(m_currentFile.absolutePath()); } else { if (m_mainWindow->currentFile().exists()) { m_mainWindow->currentFile().dir(); } else { defaultDirectory.setPath(QDir::homePath()); } } const QString homeDir(m_mainWindow->currentDir().absolutePath()); QFileDialog fileDialog; fileDialog.setObjectName(tr("Open File")); fileDialog.setFileMode(QFileDialog::ExistingFile); fileDialog.setNameFilter(tr("All supported files (*.dolphin *.csv);;Dolphin files (*.dolphin);;CSV files (*.csv)")); fileDialog.setDirectory(homeDir); if (fileDialog.exec() == QDialog::Rejected) { return; } const auto files = fileDialog.selectedFiles(); const QString fileName = files.constFirst(); if (fileName.isEmpty()) { return; } load(fileName); m_edited = false; m_ui->statusbar->showMessage(tr("File loaded successfully."), 4000); } void BewavedDolphin::load(const QString &fileName) { QFile file(fileName); if (!file.exists()) { throw Pandaception(tr("File \"%1\" does not exist!").arg(fileName)); } qCDebug(zero) << tr("File exists."); if (!file.open(QIODevice::ReadOnly)) { qCDebug(zero) << tr("Could not open file in ReadOnly mode: ") << file.errorString(); throw Pandaception(tr("Could not open file in ReadOnly mode: ") + file.errorString() + "."); } if (fileName.endsWith(".dolphin")) { qCDebug(zero) << tr("Dolphin file opened."); QDataStream stream(&file); stream.setVersion(QDataStream::Qt_5_12); qCDebug(zero) << tr("Loading in editor."); load(stream); qCDebug(zero) << tr("Current file set."); m_currentFile = QFileInfo(fileName); } else if (fileName.endsWith(".csv")) { qCDebug(zero) << tr("CSV file opened."); qCDebug(zero) << tr("Loading in editor."); load(file); qCDebug(zero) << tr("Current file set."); m_currentFile = QFileInfo(fileName); } else { qCDebug(zero) << tr("Format not supported. Could not open file: ") << fileName; throw Pandaception(tr("Format not supported. Could not open file: ") + fileName); } qCDebug(zero) << tr("Closing file."); file.close(); associateToWiredPanda(fileName); setWindowTitle(tr("beWavedDolphin Simulator") + " [" + m_currentFile.fileName() + "]"); } void BewavedDolphin::load(QDataStream &stream) { QString str; stream >> str; if (!str.startsWith("beWavedDolphin")) { throw Pandaception(tr("Invalid file format. Starts with: ") + str); } qint64 rows; stream >> rows; qint64 cols; stream >> cols; if (rows > m_inputPorts) { rows = m_inputPorts; } if ((cols < 2) || (cols > 2048)) { throw Pandaception(tr("Invalid number of columns.")); } setLength(static_cast(cols), false); qCDebug(zero) << tr("Update table."); for (int col = 0; col < cols; ++col) { for (int row = 0; row < rows; ++row) { qint64 value; stream >> value; createElement(row, col, static_cast(value), true); } } run(); } void BewavedDolphin::load(QFile &file) { const QByteArray content = file.readAll(); const auto wordList(content.split(',')); int rows = wordList.at(0).toInt(); const int cols = wordList.at(1).toInt(); if (rows > m_inputPorts) { rows = m_inputPorts; } if ((cols < 2) || (cols > 2048)) { throw Pandaception(tr("Invalid number of columns.")); } setLength(cols, false); qCDebug(zero) << tr("Update table."); for (int row = 0; row < rows; ++row) { for (int col = 0; col < cols; ++col) { int value = wordList.at(2 + col + row * cols).toInt(); createElement(row, col, value, true); } } run(); } void BewavedDolphin::on_actionShowNumbers_triggered() { m_type = PlotType::Number; for (int row = 0; row < m_model->rowCount(); ++row) { for (int col = 0; col < m_model->columnCount(); ++col) { m_model->setData(m_model->index(row, col), QVariant(), Qt::DecorationRole); } } for (int row = 0; row < m_inputPorts; ++row) { for (int col = 0; col < m_model->columnCount(); ++col) { createElement(row, col, m_model->index(row, col).data().toInt()); } } qCDebug(zero) << tr("Running simulation."); run(); } void BewavedDolphin::on_actionShowWaveforms_triggered() { m_type = PlotType::Line; for (int row = 0; row < m_inputPorts; ++row) { for (int col = 0; col < m_model->columnCount(); ++col) { createElement(row, col, m_model->index(row, col).data().toInt()); } } qCDebug(zero) << tr("Running simulation."); run(); } void BewavedDolphin::on_actionExportToPng_triggered() { QString pngFile = QFileDialog::getSaveFileName(this, tr("Export to Image"), m_currentFile.absolutePath(), tr("PNG files (*.png)")); if (pngFile.isEmpty()) { return; } if (!pngFile.endsWith(".png", Qt::CaseInsensitive)) { pngFile.append(".png"); } QRectF sceneRect = m_scene->sceneRect(); QPixmap pixmap(sceneRect.size().toSize()); QPainter painter; painter.begin(&pixmap); painter.setRenderHint(QPainter::Antialiasing); m_scene->render(&painter, QRectF(), sceneRect); painter.end(); pixmap.toImage().save(pngFile); } void BewavedDolphin::on_actionExportToPdf_triggered() { QString pdfFile = QFileDialog::getSaveFileName(this, tr("Export to PDF"), m_currentFile.absolutePath(), tr("PDF files (*.pdf)")); if (pdfFile.isEmpty()) { return; } if (!pdfFile.endsWith(".pdf", Qt::CaseInsensitive)) { pdfFile.append(".pdf"); } QPrinter printer(QPrinter::HighResolution); printer.setPageSize(QPageSize(QPageSize::A4)); printer.setPageOrientation(QPageLayout::Orientation::Landscape); printer.setOutputFormat(QPrinter::PdfFormat); printer.setOutputFileName(pdfFile); QPainter painter; if (!painter.begin(&printer)) { throw Pandaception(tr("Could not print this circuit to PDF.")); } m_scene->render(&painter, QRectF(), m_scene->sceneRect().adjusted(-64, -64, 64, 64)); painter.end(); } void BewavedDolphin::on_actionAbout_triggered() { QMessageBox::about(this, "beWavedDolphin", tr("

beWavedDolphin is a waveform simulator for the WiRedPanda software developed by the Federal University of São Paulo." " This project was created in order to help students learn about logic circuits.

" "

Software version: %1

" "

Creators:

" "
    " "
  • Prof. Fábio Cappabianco, Ph.D.
  • " "
" "

beWavedDolphin is currently maintained by Prof. Fábio Cappabianco, Ph.D. and Vinícius R. Miguel.

" "

Please file a report at our GitHub page if bugs are found or if you wish for a new functionality to be implemented.

" "

Visit our website!

") .arg(QApplication::applicationVersion())); } void BewavedDolphin::on_actionAboutQt_triggered() { QMessageBox::aboutQt(this); } wiRedPanda-4.1.12/app/bewaveddolphin.h000066400000000000000000000112061444020206400175350ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include "graphicsview.h" #include "scene.h" #include #include #include #include #include class GraphicsView; class MainWindow; class QItemSelection; class QSaveFile; namespace Ui { class BewavedDolphin; } enum class PlotType { Number, Line }; class SignalModel : public QStandardItemModel { Q_OBJECT public: SignalModel(const int inputs, const int rows, const int columns, QObject *parent = nullptr); Qt::ItemFlags flags(const QModelIndex &index) const override; private: const int m_inputCount; }; class SignalDelegate : public QItemDelegate { Q_OBJECT public: SignalDelegate(QObject *parent); void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const override; }; class BewavedDolphin : public QMainWindow { Q_OBJECT public: explicit BewavedDolphin(Scene *scene, const bool askConnection = true, MainWindow *parent = nullptr); ~BewavedDolphin() override; void createWaveform(); void createWaveform(const QString &fileName); void print(); void saveToTxt(QTextStream &stream); void show(); protected: void closeEvent(QCloseEvent *event) override; void resizeEvent(QResizeEvent *event) override; private: Q_DISABLE_COPY(BewavedDolphin) bool checkSave(); int sectionFirstColumn(const QItemSelection &ranges); int sectionFirstRow(const QItemSelection &ranges); void associateToWiredPanda(const QString &fileName); void copy(const QItemSelection &ranges, QDataStream &stream); void createElement(const int row, const int col, const int value, const bool isInput = true, const bool changeNext = true); void createOneElement(const int row, const int col, const bool isInput = true, const bool changeNext = true); void createZeroElement(const int row, const int col, const bool isInput = true, const bool changeNext = true); void cut(const QItemSelection &ranges, QDataStream &stream); void load(QDataStream &stream); void load(QFile &file); void load(const QString &fileName); void loadElements(); void loadFromTerminal(); void loadNewTable(); void loadPixmaps(); void loadSignals(QStringList &inputLabels, QStringList &outputLabels); void on_actionAboutQt_triggered(); void on_actionAbout_triggered(); void on_actionClear_triggered(); void on_actionCombinational_triggered(); void on_actionCopy_triggered(); void on_actionCut_triggered(); void on_actionExit_triggered(); void on_actionExportToPdf_triggered(); void on_actionExportToPng_triggered(); void on_actionFitScreen_triggered(); void on_actionInvert_triggered(); void on_actionLoad_triggered(); void on_actionPaste_triggered(); void on_actionResetZoom_triggered(); void on_actionSaveAs_triggered(); void on_actionSave_triggered(); void on_actionSetClockWave_triggered(); void on_actionSetLength_triggered(); void on_actionSetTo0_triggered(); void on_actionSetTo1_triggered(); void on_actionShowNumbers_triggered(); void on_actionShowWaveforms_triggered(); void on_actionZoomIn_triggered(); void on_actionZoomOut_triggered(); void on_tableView_selectionChanged(); void paste(const QItemSelection &ranges, QDataStream &stream); void prepare(const QString &fileName = {}); void resizeScene(); void restoreInputs(); void run(); void run2(); void save(QDataStream &stream); void save(QSaveFile &file); void save(const QString &fileName); void setLength(const int simLength, const bool runSimulation); void zoomChanged(); Ui::BewavedDolphin *m_ui; GraphicsView m_view; MainWindow *m_mainWindow = nullptr; PlotType m_type = PlotType::Line; QFileInfo m_currentFile; QGraphicsScene *m_scene = new QGraphicsScene(this); QPixmap m_fallingBlue; QPixmap m_fallingGreen; QPixmap m_highBlue; QPixmap m_highGreen; QPixmap m_lowBlue; QPixmap m_lowGreen; QPixmap m_risingBlue; QPixmap m_risingGreen; QStandardItemModel *m_model = nullptr; QTableView *m_signalTableView = new QTableView(); QVector m_outputs; QVector m_inputs; QVector m_oldInputValues; Scene *m_externalScene = nullptr; Simulation *m_simulation = nullptr; bool m_edited = false; const bool m_askConnection; const double m_scaleFactor = 0.8; double m_scale = 1.0; int m_clockPeriod = 0; int m_inputPorts = 0; int m_length = 32; }; wiRedPanda-4.1.12/app/bewaveddolphin.ui000066400000000000000000000321771444020206400177350ustar00rootroot00000000000000 BewavedDolphin 0 0 800 600 MainWindow :/toolbar/dolphin_icon.svg:/toolbar/dolphin_icon.svg 0 0 0 0 0 0 0 toolBar TopToolBarArea false 0 0 800 21 File Help Edit View :/dolphin/help.svg:/dolphin/help.svg About Ctrl+H :/dolphin/folder.svg:/dolphin/folder.svg Load Ctrl+L :/dolphin/exit.svg:/dolphin/exit.svg Exit Ctrl+W :/toolbar/wavyIcon.svg:/toolbar/wavyIcon.svg Combinational Alt+C :/dolphin/pdf.svg:/dolphin/pdf.svg Export to PDF Ctrl+P :/dolphin/save.svg:/dolphin/save.svg Save Ctrl+S :/dolphin/save.svg:/dolphin/save.svg Save As... Ctrl+Shift+S :/toolbar/copy.svg:/toolbar/copy.svg Copy Ctrl+C :/dolphin/paste.svg:/dolphin/paste.svg Paste Ctrl+V :/input/0.svg:/input/0.svg Set to 0 0 :/input/1.svg:/input/1.svg Set to 1 1 :/input/clock1.svg:/input/clock1.svg Set clock frequency Set clock frequency Alt+W :/basic/not.svg:/basic/not.svg Invert Space false Merge false Split :/dolphin/png.svg:/dolphin/png.svg Export to PNG Ctrl+Shift+P :/dolphin/range.svg:/dolphin/range.svg Set Length Alt+L :/toolbar/helpQt.svg:/toolbar/helpQt.svg About Qt Ctrl+Shift+H :/dolphin/zoomIn.svg:/dolphin/zoomIn.svg Zoom In Ctrl+= :/dolphin/zoomOut.svg:/dolphin/zoomOut.svg Zoom Out Ctrl+- :/dolphin/zoomRange.svg:/dolphin/zoomRange.svg Fit to screen Fit to screen Ctrl+Shift+R :/dolphin/zoomReset.svg:/dolphin/zoomReset.svg Reset Zoom Ctrl+Home :/dolphin/reloadFile.svg:/dolphin/reloadFile.svg Clear Alt+X :/dolphin/cut.svg:/dolphin/cut.svg Cut Ctrl+X Show Numbers Show Waveforms wiRedPanda-4.1.12/app/clockdialog.cpp000066400000000000000000000014001444020206400173430ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #include "clockdialog.h" #include "ui_clockdialog.h" ClockDialog::ClockDialog(const int currentFrequency, QWidget *parent) : QDialog(parent) , m_ui(new Ui::ClockDialog) { m_ui->setupUi(this); m_ui->frequencySpinBox->setValue(currentFrequency); setWindowTitle(tr("Clock Frequency Selection")); connect(m_ui->buttonBox, &QDialogButtonBox::accepted, this, &QDialog::accept); connect(m_ui->buttonBox, &QDialogButtonBox::rejected, this, &QDialog::reject); } ClockDialog::~ClockDialog() { delete m_ui; } int ClockDialog::frequency() { return (exec() == QDialog::Accepted) ? m_ui->frequencySpinBox->value() : -1; } wiRedPanda-4.1.12/app/clockdialog.h000066400000000000000000000011311444020206400170110ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include namespace Ui { class ClockDialog; } //! //! \brief The clockDialog class handles dialogs for setting the frequency at which a clock ticks //! class ClockDialog : public QDialog { Q_OBJECT public: explicit ClockDialog(const int currentFrequency, QWidget *parent = nullptr); ~ClockDialog() override; //! Returns the clock frequency in Hz int frequency(); private: Q_DISABLE_COPY(ClockDialog) Ui::ClockDialog *m_ui; }; wiRedPanda-4.1.12/app/clockdialog.ui000066400000000000000000000063171444020206400172120ustar00rootroot00000000000000 ClockDialog 0 0 184 116 Dialog :/toolbar/wavyIcon.svg:/toolbar/wavyIcon.svg QDialogButtonBox::Cancel|QDialogButtonBox::Ok Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter 2 1024 2 2 1024 2 Qt::Horizontal Clock Frequency 1024 Qt::AlignRight|Qt::AlignTop|Qt::AlignTrailing 2 Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop frequencySlider valueChanged(int) frequencySpinBox setValue(int) 334 47 499 21 frequencySpinBox valueChanged(int) frequencySlider setValue(int) 499 21 334 47 wiRedPanda-4.1.12/app/commands.cpp000066400000000000000000000602261444020206400167040ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #include "commands.h" #include "common.h" #include "elementfactory.h" #include "globalproperties.h" #include "graphicelement.h" #include "qneconnection.h" #include "qneport.h" #include "scene.h" #include "serialization.h" #include "simulation.h" #include "simulationblocker.h" #include #include void storeIds(const QList &items, QList &ids) { ids.reserve(items.size()); for (auto *item : items) { if (auto *itemId = dynamic_cast(item)) { ids.append(itemId->id()); } } } void storeOtherIds(const QList &connections, const QList &ids, QList &otherIds) { for (auto *item : connections) { if (auto *conn = qgraphicsitem_cast(item); conn && (item->type() == QNEConnection::Type)) { if (auto *port1 = conn->startPort(); port1 && port1->graphicElement() && !ids.contains(port1->graphicElement()->id())) { otherIds.append(port1->graphicElement()->id()); } if (auto *port2 = conn->endPort(); port2 && port2->graphicElement() && !ids.contains(port2->graphicElement()->id())) { otherIds.append(port2->graphicElement()->id()); } } } } const QList loadList(const QList &items, QList &ids, QList &otherIds) { QList elements; /* Stores selected graphicElements */ for (auto *item : items) { if (item->type() == GraphicElement::Type) { if (!elements.contains(item)) { elements.append(item); } } } QList connections; /* Stores all the wires linked to these elements */ for (auto *item : elements) { if (auto *elm = qgraphicsitem_cast(item)) { for (auto *port : elm->inputs()) { for (auto *conn : port->connections()) { if (!connections.contains(conn)) { connections.append(conn); } } } for (auto *port : elm->outputs()) { for (auto *conn : port->connections()) { if (!connections.contains(conn)) { connections.append(conn); } } } } } /* Stores the other wires selected */ for (auto *item : items) { if (item->type() == QNEConnection::Type) { if (!connections.contains(item)) { connections.append(item); } } } /* Stores the ids of all elements listed in items; */ storeIds(elements + connections, ids); /* Stores all the elements linked to each connection that will not be deleted. */ storeOtherIds(connections, ids, otherIds); return elements + connections; } const QList findItems(const QList &ids) { QList items; items.reserve(ids.size()); for (const int id : ids) { if (auto *item = dynamic_cast(ElementFactory::itemById(id))) { items.append(item); } } if (items.size() != ids.size()) { throw Pandaception(QObject::tr("One or more items was not found on the scene.")); } return items; } const QList findElements(const QList &ids) { QList items; items.reserve(ids.size()); for (const int id : ids) { if (auto *item = dynamic_cast(ElementFactory::itemById(id))) { items.append(item); } } if (items.size() != ids.size()) { throw Pandaception(QObject::tr("One or more elements was not found on the scene.")); } return items; } QNEConnection *findConn(const int id) { return dynamic_cast(ElementFactory::itemById(id)); } GraphicElement *findElm(const int id) { return dynamic_cast(ElementFactory::itemById(id)); } void saveItems(QByteArray &itemData, const QList &items, const QList &otherIds) { itemData.clear(); QDataStream stream(&itemData, QIODevice::WriteOnly); stream.setVersion(QDataStream::Qt_5_12); const auto others = findElements(otherIds); for (auto *elm : others) { elm->save(stream); } Serialization::serialize(items, stream); } void addItems(Scene *scene, const QList &items) { for (auto *item : items) { if (item->scene() != scene) { scene->addItem(item); } if (item->type() == GraphicElement::Type) { item->setSelected(true); } } } const QList loadItems(Scene *scene, QByteArray &itemData, const QList &ids, QList &otherIds) { if (itemData.isEmpty()) { return {}; } QDataStream stream(&itemData, QIODevice::ReadOnly); stream.setVersion(QDataStream::Qt_5_12); QMap portMap; const QVersionNumber version = GlobalProperties::version; for (auto *elm : findElements(otherIds)) { elm->load(stream, portMap, version); } /* Assuming that all connections are stored after the elements, we will deserialize the elements first. * We will store one additional information: The element IDs! */ const auto items = Serialization::deserialize(stream, portMap, version); if (items.size() != ids.size()) { throw Pandaception(QObject::tr("One or more elements were not found on scene. Expected %1, found %2.").arg(ids.size(), items.size())); } for (int i = 0; i < items.size(); ++i) { if (auto *itemId = dynamic_cast(items.at(i))) { ElementFactory::updateItemId(itemId, ids.at(i)); } } addItems(scene, items); return items; } void deleteItems(Scene *scene, const QList &items) { /* Delete items on reverse order */ for (auto it = items.rbegin(); it != items.rend(); ++it) { scene->removeItem(*it); delete *it; } } AddItemsCommand::AddItemsCommand(const QList &items, Scene *scene, QUndoCommand *parent) : QUndoCommand(parent) , m_scene(scene) { SimulationBlocker blocker(m_scene->simulation()); const auto items_ = loadList(items, m_ids, m_otherIds); addItems(m_scene, items_); setText(tr("Add %1 elements").arg(items_.size())); } void AddItemsCommand::undo() { qCDebug(zero) << text(); SimulationBlocker blocker(m_scene->simulation()); const auto items = findItems(m_ids); saveItems(m_itemData, items, m_otherIds); deleteItems(m_scene, items); m_scene->setCircuitUpdateRequired(); } void AddItemsCommand::redo() { qCDebug(zero) << text(); SimulationBlocker blocker(m_scene->simulation()); loadItems(m_scene, m_itemData, m_ids, m_otherIds); m_scene->setCircuitUpdateRequired(); } DeleteItemsCommand::DeleteItemsCommand(const QList &items, Scene *scene, QUndoCommand *parent) : QUndoCommand(parent) , m_scene(scene) { SimulationBlocker blocker(m_scene->simulation()); const auto items_ = loadList(items, m_ids, m_otherIds); setText(tr("Delete %1 elements").arg(items_.size())); } void DeleteItemsCommand::undo() { qCDebug(zero) << text(); SimulationBlocker blocker(m_scene->simulation()); loadItems(m_scene, m_itemData, m_ids, m_otherIds); m_scene->setCircuitUpdateRequired(); } void DeleteItemsCommand::redo() { qCDebug(zero) << text(); SimulationBlocker blocker(m_scene->simulation()); const auto items = findItems(m_ids); saveItems(m_itemData, items, m_otherIds); deleteItems(m_scene, items); m_scene->setCircuitUpdateRequired(); } RotateCommand::RotateCommand(const QList &items, const int angle, Scene *scene, QUndoCommand *parent) : QUndoCommand(parent) , m_angle(angle) , m_scene(scene) { setText(tr("Rotate %1 degrees").arg(m_angle)); m_ids.reserve(items.size()); m_positions.reserve(items.size()); for (auto *item : items) { m_positions.append(item->pos()); item->setPos(item->pos()); m_ids.append(item->id()); } } void RotateCommand::undo() { qCDebug(zero) << text(); const auto elements = findElements(m_ids); for (int i = 0; i < elements.size(); ++i) { auto *elm = elements.at(i); elm->setRotation(elm->rotation() - m_angle); elm->setPos(m_positions.at(i)); elm->update(); elm->setSelected(true); } m_scene->setAutosaveRequired(); } void RotateCommand::redo() { qCDebug(zero) << text(); const auto elements = findElements(m_ids); double cx = 0; double cy = 0; int sz = 0; for (auto *elm : elements) { cx += elm->pos().x(); cy += elm->pos().y(); sz++; } if (sz != 0) { cx /= sz; cy /= sz; } QTransform transform; transform.translate(cx, cy); transform.rotate(m_angle); transform.translate(-cx, -cy); for (auto *elm : elements) { elm->setPos(transform.map(elm->pos())); elm->setRotation(elm->rotation() + m_angle); } m_scene->setAutosaveRequired(); } MoveCommand::MoveCommand(const QList &list, const QList &oldPositions, Scene *scene, QUndoCommand *parent) : QUndoCommand(parent) , m_oldPositions(oldPositions) , m_scene(scene) { m_newPositions.reserve(list.size()); m_ids.reserve(list.size()); for (auto *elm : list) { m_ids.append(elm->id()); m_newPositions.append(elm->pos()); } setText(tr("Move elements")); } void MoveCommand::undo() { qCDebug(zero) << text(); const auto elements = findElements(m_ids); for (int i = 0; i < elements.size(); ++i) { elements.at(i)->setPos(m_oldPositions.at(i)); } m_scene->setAutosaveRequired(); } void MoveCommand::redo() { qCDebug(zero) << text(); const auto elements = findElements(m_ids); for (int i = 0; i < elements.size(); ++i) { elements.at(i)->setPos(m_newPositions.at(i)); } m_scene->setAutosaveRequired(); } UpdateCommand::UpdateCommand(const QList &elements, const QByteArray &oldData, Scene *scene, QUndoCommand *parent) : QUndoCommand(parent) , m_oldData(oldData) , m_scene(scene) { m_ids.reserve(elements.size()); QDataStream stream(&m_newData, QIODevice::WriteOnly); stream.setVersion(QDataStream::Qt_5_12); for (auto *elm : elements) { elm->save(stream); m_ids.append(elm->id()); } setText(tr("Update %1 elements").arg(elements.size())); } void UpdateCommand::undo() { qCDebug(zero) << text(); loadData(m_oldData); m_scene->setCircuitUpdateRequired(); } void UpdateCommand::redo() { qCDebug(zero) << text(); loadData(m_newData); m_scene->setCircuitUpdateRequired(); } void UpdateCommand::loadData(QByteArray &itemData) { const auto elements = findElements(m_ids); if (elements.isEmpty()) { return; } QDataStream stream(&itemData, QIODevice::ReadOnly); stream.setVersion(QDataStream::Qt_5_12); QMap portMap; const QVersionNumber version = GlobalProperties::version; for (auto *elm : elements) { elm->load(stream, portMap, version); elm->setSelected(true); } } SplitCommand::SplitCommand(QNEConnection *conn, QPointF mousePos, Scene *scene, QUndoCommand *parent) : QUndoCommand(parent) , m_scene(scene) { auto *node = ElementFactory::buildElement(ElementType::Node); /* Align node to Grid */ m_nodePos = mousePos - node->pixmapCenter(); const int gridSize = GlobalProperties::gridSize; qreal xV = qRound(m_nodePos.x() / gridSize) * gridSize; qreal yV = qRound(m_nodePos.y() / gridSize) * gridSize; m_nodePos = QPointF(xV, yV); /* Rotate line according to angle between p1 and p2 */ const int angle = static_cast(conn->angle()); m_nodeAngle = static_cast(360 - 90 * (std::round(angle / 90.0))); /* Assigning class attributes */ m_elm1Id = conn->startPort()->graphicElement()->id(); m_elm2Id = conn->endPort()->graphicElement()->id(); m_c1Id = conn->id(); m_c2Id = (new QNEConnection())->id(); m_nodeId = node->id(); setText(tr("Wire split")); } void SplitCommand::redo() { qCDebug(zero) << text(); auto *conn1 = findConn(m_c1Id); auto *conn2 = findConn(m_c2Id); auto *node = findElm(m_nodeId); auto *elm1 = findElm(m_elm1Id); auto *elm2 = findElm(m_elm2Id); if (!conn2) { conn2 = new QNEConnection(); ElementFactory::updateItemId(conn2, m_c2Id); } if (!node) { node = ElementFactory::buildElement(ElementType::Node); ElementFactory::updateItemId(node, m_nodeId); } if (!conn1 || !conn2 || !elm1 || !elm2 || !node) { throw Pandaception(tr("Error trying to redo ") + text()); } node->setPos(m_nodePos); node->setRotation(m_nodeAngle); auto *endPort = conn1->endPort(); conn2->setStartPort(node->outputPort()); conn2->setEndPort(endPort); conn1->setEndPort(node->inputPort()); m_scene->addItem(node); m_scene->addItem(conn2); conn1->updatePosFromPorts(); conn2->updatePosFromPorts(); m_scene->setCircuitUpdateRequired(); } void SplitCommand::undo() { qCDebug(zero) << text(); auto *conn1 = findConn(m_c1Id); auto *conn2 = findConn(m_c2Id); auto *node = findElm(m_nodeId); auto *elm1 = findElm(m_elm1Id); auto *elm2 = findElm(m_elm2Id); if (!conn1 || !conn2 || !elm1 || !elm2 || !node) { throw Pandaception(tr("Error trying to undo ") + text()); } conn1->setEndPort(conn2->endPort()); conn1->updatePosFromPorts(); m_scene->removeItem(conn2); m_scene->removeItem(node); delete conn2; delete node; m_scene->setCircuitUpdateRequired(); } MorphCommand::MorphCommand(const QList &elements, ElementType type, Scene *scene, QUndoCommand *parent) : QUndoCommand(parent) , m_newType(type) , m_scene(scene) { m_ids.reserve(elements.size()); m_types.reserve(elements.size()); for (auto *oldElm : elements) { m_ids.append(oldElm->id()); m_types.append(oldElm->elementType()); } setText(tr("Morph %1 elements to %2").arg(elements.size()).arg(elements.constFirst()->objectName())); } void MorphCommand::undo() { qCDebug(zero) << text(); auto newElms = findElements(m_ids); decltype(newElms) oldElms; oldElms.reserve(m_ids.size()); for (int i = 0; i < m_ids.size(); ++i) { oldElms << ElementFactory::buildElement(m_types.at(i)); } transferConnections(newElms, oldElms); m_scene->setCircuitUpdateRequired(); } void MorphCommand::redo() { qCDebug(zero) << text(); auto oldElms = findElements(m_ids); decltype(oldElms) newElms; newElms.reserve(m_ids.size()); for (int i = 0; i < m_ids.size(); ++i) { newElms << ElementFactory::buildElement(m_newType); } transferConnections(oldElms, newElms); m_scene->setCircuitUpdateRequired(); } void MorphCommand::transferConnections(QList from, QList to) { for (int elm = 0; elm < from.size(); ++elm) { auto *oldElm = from.at(elm); auto *newElm = to.at(elm); newElm->setInputSize(oldElm->inputSize()); newElm->setPos(oldElm->pos()); if ((oldElm->elementType() == ElementType::Not) && (newElm->elementType() == ElementType::Node)) { newElm->moveBy(16, 16); } if ((oldElm->elementType() == ElementType::Node) && (newElm->elementType() == ElementType::Not)) { newElm->moveBy(-16, -16); } if (newElm->isRotatable() && oldElm->isRotatable()) { newElm->setRotation(oldElm->rotation()); } if (newElm->hasLabel() && oldElm->hasLabel() && (oldElm->elementType() != ElementType::Buzzer)) { newElm->setLabel(oldElm->label()); } if (newElm->hasColors() && oldElm->hasColors()) { newElm->setColor(oldElm->color()); } if (newElm->hasFrequency() && oldElm->hasFrequency()) { newElm->setFrequency(oldElm->frequency()); } if (newElm->hasTrigger() && oldElm->hasTrigger()) { newElm->setTrigger(oldElm->trigger()); } for (int port = 0; port < oldElm->inputSize(); ++port) { while (!oldElm->inputPort(port)->connections().isEmpty()) { if (auto *conn = oldElm->inputPort(port)->connections().constFirst(); conn && (conn->endPort() == oldElm->inputPort(port))) { conn->setEndPort(newElm->inputPort(port)); } } } for (int port = 0; port < oldElm->outputSize(); ++port) { while (!oldElm->outputPort(port)->connections().isEmpty()) { if (auto *conn = oldElm->outputPort(port)->connections().constFirst(); conn && (conn->startPort() == oldElm->outputPort(port))) { conn->setStartPort(newElm->outputPort(port)); } } } const int oldId = oldElm->id(); m_scene->removeItem(oldElm); delete oldElm; ElementFactory::updateItemId(newElm, oldId); m_scene->addItem(newElm); newElm->updatePortsProperties(); } } // FIXME: verticalFlip is rotating on the horizontal axis too FlipCommand::FlipCommand(const QList &items, const int axis, Scene *scene, QUndoCommand *parent) : QUndoCommand(parent) , m_scene(scene) , m_axis(axis) { if (items.isEmpty()) { return; } setText(tr("Flip %1 elements in axis %2").arg(items.size(), axis)); m_ids.reserve(items.size()); m_positions.reserve(items.size()); double xmin = items.constFirst()->pos().rx(); double ymin = items.constFirst()->pos().ry(); double xmax = xmin; double ymax = ymin; for (auto *item : items) { m_positions.append(item->pos()); m_ids.append(item->id()); xmin = qMin(xmin, item->pos().rx()); ymin = qMin(ymin, item->pos().ry()); xmax = qMax(xmax, item->pos().rx()); ymax = qMax(ymax, item->pos().ry()); } m_minPos = QPointF(xmin, ymin); m_maxPos = QPointF(xmax, ymax); } void FlipCommand::undo() { qCDebug(zero) << text(); redo(); } void FlipCommand::redo() { qCDebug(zero) << text(); for (auto *elm : findElements(m_ids)) { auto pos = elm->pos(); (m_axis == 0) ? pos.setX(m_minPos.rx() + (m_maxPos.rx() - pos.rx())) : pos.setY(m_minPos.ry() + (m_maxPos.ry() - pos.ry())); elm->setPos(pos); if (elm->isRotatable()) { elm->setRotation(elm->rotation() + 180); } } m_scene->setAutosaveRequired(); } ChangeInputSizeCommand::ChangeInputSizeCommand(const QList &elements, const int newInputSize, Scene *scene, QUndoCommand *parent) : QUndoCommand(parent) , m_scene(scene) , m_newInputSize(newInputSize) { m_ids.reserve(elements.size()); for (auto *elm : elements) { m_ids.append(elm->id()); } setText(tr("Change input size to %1").arg(newInputSize)); } void ChangeInputSizeCommand::redo() { qCDebug(zero) << text(); const auto m_elements = findElements(m_ids); QList serializationOrder; serializationOrder.reserve(m_elements.size()); m_oldData.clear(); QDataStream stream(&m_oldData, QIODevice::WriteOnly); stream.setVersion(QDataStream::Qt_5_12); for (auto *elm : m_elements) { elm->save(stream); serializationOrder.append(elm); for (int port = m_newInputSize; port < elm->inputSize(); ++port) { for (auto *conn : elm->inputPort(port)->connections()) { auto *outputPort = conn->startPort(); outputPort->graphicElement()->save(stream); serializationOrder.append(outputPort->graphicElement()); } } } for (auto *elm : m_elements) { for (int port = m_newInputSize; port < elm->inputSize(); ++port) { while (!elm->inputPort(port)->connections().isEmpty()) { auto *conn = elm->inputPort(port)->connections().constFirst(); conn->save(stream); m_scene->removeItem(conn); auto *outputPort = conn->startPort(); elm->inputPort(port)->disconnect(conn); outputPort->disconnect(conn); } } elm->setInputSize(m_newInputSize); } m_order.clear(); for (auto *elm : serializationOrder) { m_order.append(elm->id()); } m_scene->setCircuitUpdateRequired(); } void ChangeInputSizeCommand::undo() { qCDebug(zero) << text(); const auto m_elements = findElements(m_ids); const auto serializationOrder = findElements(m_order); QDataStream stream(&m_oldData, QIODevice::ReadOnly); stream.setVersion(QDataStream::Qt_5_12); QMap portMap; const QVersionNumber version = GlobalProperties::version; for (auto *elm : serializationOrder) { elm->load(stream, portMap, version); } for (auto *elm : m_elements) { for (int in = m_newInputSize; in < elm->inputSize(); ++in) { auto *conn = new QNEConnection(); conn->load(stream, portMap); m_scene->addItem(conn); } elm->setSelected(true); } m_scene->setCircuitUpdateRequired(); } ChangeOutputSizeCommand::ChangeOutputSizeCommand(const QList &elements, const int newOutputSize, Scene *scene, QUndoCommand *parent) : QUndoCommand(parent) , m_scene(scene) , m_newOutputSize(newOutputSize) { m_ids.reserve(elements.size()); for (auto *elm : elements) { m_ids.append(elm->id()); } setText(tr("Change input size to %1").arg(newOutputSize)); } void ChangeOutputSizeCommand::redo() { qCDebug(zero) << text(); const auto m_elements = findElements(m_ids); QList serializationOrder; m_oldData.clear(); QDataStream stream(&m_oldData, QIODevice::WriteOnly); stream.setVersion(QDataStream::Qt_5_12); serializationOrder.reserve(m_elements.size()); for (auto *elm : m_elements) { elm->save(stream); serializationOrder.append(elm); for (int port = m_newOutputSize; port < elm->outputSize(); ++port) { for (auto *conn : elm->outputPort(port)->connections()) { auto *inputPort = conn->endPort(); inputPort->graphicElement()->save(stream); serializationOrder.append(inputPort->graphicElement()); } } } for (auto *elm : m_elements) { for (int port = m_newOutputSize; port < elm->outputSize(); ++port) { while (!elm->outputPort(port)->connections().isEmpty()) { auto *conn = elm->outputPort(port)->connections().constFirst(); conn->save(stream); m_scene->removeItem(conn); auto *inputPort = conn->endPort(); elm->outputPort(port)->disconnect(conn); inputPort->disconnect(conn); } } elm->setOutputSize(m_newOutputSize); elm->setSelected(true); } m_order.clear(); for (auto *elm : serializationOrder) { m_order.append(elm->id()); } m_scene->setCircuitUpdateRequired(); } void ChangeOutputSizeCommand::undo() { qCDebug(zero) << text(); const auto elements = findElements(m_ids); const auto serializationOrder = findElements(m_order); QDataStream stream(&m_oldData, QIODevice::ReadOnly); stream.setVersion(QDataStream::Qt_5_12); QMap portMap; const QVersionNumber version = GlobalProperties::version; for (auto *elm : serializationOrder) { elm->load(stream, portMap, version); } for (auto *elm : elements) { for (int out = m_newOutputSize; out < elm->outputSize(); ++out) { auto *conn = new QNEConnection; conn->load(stream, portMap); m_scene->addItem(conn); } elm->setSelected(true); } m_scene->setCircuitUpdateRequired(); } wiRedPanda-4.1.12/app/commands.h000066400000000000000000000136211444020206400163460ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include "graphicelement.h" #include "scene.h" #include class QNEConnection; const QList findElements(const QList &ids); const QList findItems(const QList &ids); const QList loadItems(Scene *scene, QByteArray &itemData, const QList &ids, QList &otherIds); const QList loadList(const QList &items, QList &ids, QList &otherIds); void addItems(Scene *scene, const QList &items); void deleteItems(Scene *scene, const QList &items); void saveItems(QByteArray &itemData, const QList &items, const QList &otherIds); void storeIds(const QList &items, QList &ids); void storeOtherIds(const QList &connections, const QList &ids, QList &otherIds); class AddItemsCommand : public QUndoCommand { Q_DECLARE_TR_FUNCTIONS(AddItemsCommand) public: //! \param item A list of items in the form of GraphicElements (an IO elem., a gate or an IC) //! \param editor The editor to which the command will be added to explicit AddItemsCommand(const QList &items, Scene *scene, QUndoCommand *parent = nullptr); void redo() override; void undo() override; private: QByteArray m_itemData; QList m_ids; QList m_otherIds; Scene *m_scene; }; //! Represents a single action of removing a list of elements on the editor class DeleteItemsCommand : public QUndoCommand { Q_DECLARE_TR_FUNCTIONS(DeleteItemsCommand) public: //! \param items A list of QGraphicsItems to be removed from the editor //! \param editor The editor from where the items will be removed explicit DeleteItemsCommand(const QList &items, Scene *scene, QUndoCommand *parent = nullptr); void redo() override; void undo() override; private: QByteArray m_itemData; QList m_ids; QList m_otherIds; Scene *m_scene; }; //! Represents a single action of rotating a list of elements on the editor class RotateCommand : public QUndoCommand { Q_DECLARE_TR_FUNCTIONS(RotateCommand) public: //! \param items are the items to be rotated //! \param angle defines how many degrees will be rotated, in clockwise direction, by this command. explicit RotateCommand(const QList &items, const int angle, Scene *scene, QUndoCommand *parent = nullptr); void redo() override; void undo() override; private: //! Defines how many degrees will be rotated, in clockwise direction, in this command. int m_angle; QList m_positions; QList m_ids; Scene *m_scene; }; //! Represents a single action of moving a list of actions on the editor class MoveCommand : public QUndoCommand { Q_DECLARE_TR_FUNCTIONS(MoveCommand) public: explicit MoveCommand(const QList &list, const QList &oldPositions, Scene *scene, QUndoCommand *parent = nullptr); void redo() override; void undo() override; private: QList m_newPositions; QList m_oldPositions; QPointF m_offset; QList m_ids; Scene *m_scene; }; class UpdateCommand : public QUndoCommand { Q_DECLARE_TR_FUNCTIONS(UpdateCommand) public: explicit UpdateCommand(const QList &elements, const QByteArray &oldData, Scene *scene, QUndoCommand *parent = nullptr); void redo() override; void undo() override; private: void loadData(QByteArray &itemData); QByteArray m_newData; QByteArray m_oldData; QList m_ids; Scene *m_scene; }; class SplitCommand : public QUndoCommand { Q_DECLARE_TR_FUNCTIONS(SplitCommand) public: explicit SplitCommand(QNEConnection *conn, QPointF mousePos, Scene *scene, QUndoCommand *parent = nullptr); void undo() override; void redo() override; private: QPointF m_nodePos; Scene *m_scene; int m_c1Id; int m_c2Id; int m_elm1Id; int m_elm2Id; int m_nodeAngle; int m_nodeId; }; class MorphCommand : public QUndoCommand { Q_DECLARE_TR_FUNCTIONS(MorphCommand) public: explicit MorphCommand(const QList &elements, ElementType type, Scene *scene, QUndoCommand *parent = nullptr); void redo() override; void undo() override; private: void transferConnections(QList from, QList to); ElementType m_newType; QList m_types; QList m_ids; Scene *m_scene; }; class ChangeInputSizeCommand : public QUndoCommand { Q_DECLARE_TR_FUNCTIONS(ChangeInputSizeCommand) public: explicit ChangeInputSizeCommand(const QList &elements, const int newInputSize, Scene *scene, QUndoCommand *parent = nullptr); void redo() override; void undo() override; private: QByteArray m_oldData; QList m_ids; QList m_order; Scene *m_scene; int m_newInputSize; }; class FlipCommand : public QUndoCommand { Q_DECLARE_TR_FUNCTIONS(FlipCommand) public: explicit FlipCommand(const QList &items, const int axis, Scene *scene, QUndoCommand *parent = nullptr); void redo() override; void undo() override; private: QList m_positions; QList m_ids; QPointF m_maxPos; QPointF m_minPos; Scene *m_scene; int m_axis; }; class ChangeOutputSizeCommand : public QUndoCommand { Q_DECLARE_TR_FUNCTIONS(ChangeOutputSizeCommand) public: explicit ChangeOutputSizeCommand(const QList &elements, const int newOutputSize, Scene *scene, QUndoCommand *parent = nullptr); void redo() override; void undo() override; private: QByteArray m_oldData; QList m_ids; QList m_order; Scene *m_scene; int m_newOutputSize; }; wiRedPanda-4.1.12/app/common.cpp000066400000000000000000000044751444020206400163770ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #include "common.h" #include "graphicelement.h" #include "qneport.h" #include "qneconnection.h" Q_LOGGING_CATEGORY(zero, "0") Q_LOGGING_CATEGORY(one, "1") Q_LOGGING_CATEGORY(two, "2") Q_LOGGING_CATEGORY(three, "3") Q_LOGGING_CATEGORY(four, "4") Q_LOGGING_CATEGORY(five, "5") void Comment::setVerbosity(const int verbosity) { QString rules; switch (verbosity) { default: [[fallthrough]]; case 0: rules += "0 = false\n"; [[fallthrough]]; case 1: rules += "1 = false\n"; [[fallthrough]]; case 2: rules += "2 = false\n"; [[fallthrough]]; case 3: rules += "3 = false\n"; [[fallthrough]]; case 4: rules += "4 = false\n"; [[fallthrough]]; case 5: rules += "5 = false\n"; } QLoggingCategory::setFilterRules(rules); qSetMessagePattern("%{if-debug}%{line}: %{function} => %{endif}%{message}"); } Pandaception::Pandaception(const QString &message) : std::runtime_error(message.toStdString()) { } QVector Common::sortGraphicElements(QVector elements) { QHash beingVisited; QHash priorities; for (auto *elm : elements) { calculatePriority(elm, beingVisited, priorities); } std::sort(elements.begin(), elements.end(), [priorities](const auto &e1, const auto &e2) { return priorities.value(e1) > priorities.value(e2); }); return elements; } int Common::calculatePriority(GraphicElement *elm, QHash &beingVisited, QHash &priorities) { if (!elm) { return 0; } if (beingVisited.contains(elm) && beingVisited.value(elm)) { return 0; } if (priorities.contains(elm)) { return priorities.value(elm); } beingVisited[elm] = true; int max = 0; for (auto *port : elm->outputs()) { for (auto *conn : port->connections()) { if (auto *successor = conn->endPort()) { max = qMax(calculatePriority(successor->graphicElement(), beingVisited, priorities), max); } } } int priority = max + 1; priorities[elm] = priority; beingVisited[elm] = false; return priority; } wiRedPanda-4.1.12/app/common.h000066400000000000000000000026161444020206400160370ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include #include Q_DECLARE_LOGGING_CATEGORY(zero) Q_DECLARE_LOGGING_CATEGORY(one) Q_DECLARE_LOGGING_CATEGORY(two) Q_DECLARE_LOGGING_CATEGORY(three) Q_DECLARE_LOGGING_CATEGORY(four) Q_DECLARE_LOGGING_CATEGORY(five) #undef qCDebug // to add noquote() and nospace() #if QT_VERSION < QT_VERSION_CHECK(6, 3, 0) #define qCDebug(category, ...) \ for (bool qt_category_enabled = category().isDebugEnabled(); qt_category_enabled; qt_category_enabled = false) \ QMessageLogger(QT_MESSAGELOG_FILE, QT_MESSAGELOG_LINE, QT_MESSAGELOG_FUNC, category().categoryName()).debug(__VA_ARGS__).noquote().nospace() #else #define qCDebug(category, ...) QT_MESSAGE_LOGGER_COMMON(category, QtDebugMsg).debug(__VA_ARGS__).noquote().nospace() #endif class Comment { public: static void setVerbosity(const int verbosity); }; class Pandaception : public std::runtime_error { public: explicit Pandaception(const QString &message); private: Q_DISABLE_COPY(Pandaception) }; class GraphicElement; class Common { public: static QVector sortGraphicElements(QVector elements); static int calculatePriority(GraphicElement *elm, QHash &beingVisited, QHash &priorities); }; wiRedPanda-4.1.12/app/element/000077500000000000000000000000001444020206400160225ustar00rootroot00000000000000wiRedPanda-4.1.12/app/element/and.cpp000066400000000000000000000010621444020206400172670ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #include "and.h" #include "globalproperties.h" namespace { int id = qRegisterMetaType(); } And::And(QGraphicsItem *parent) : GraphicElement(ElementType::And, ElementGroup::Gate, ":/basic/and.svg", tr("AND"), tr("And"), 2, 8, 1, 1, parent) { if (GlobalProperties::skipInit) { return; } m_defaultSkins << m_pixmapPath; m_alternativeSkins = m_defaultSkins; setPixmap(0); setCanChangeSkin(true); } wiRedPanda-4.1.12/app/element/and.h000066400000000000000000000004521444020206400167360ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include "graphicelement.h" class And : public GraphicElement { Q_OBJECT public: explicit And(QGraphicsItem *parent = nullptr); }; Q_DECLARE_METATYPE(And) wiRedPanda-4.1.12/app/element/buzzer.cpp000066400000000000000000000062731444020206400200570ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #include "buzzer.h" #include "globalproperties.h" #include "qneport.h" #include #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) #include #else #include #include #endif #include namespace { int id = qRegisterMetaType(); } Buzzer::Buzzer(QGraphicsItem *parent) : GraphicElement(ElementType::Buzzer, ElementGroup::Output, ":/output/buzzer/BuzzerOff.svg", tr("BUZZER"), tr("Buzzer"), 1, 1, 0, 0, parent) { if (GlobalProperties::skipInit) { return; } m_defaultSkins = QStringList{ ":/output/buzzer/BuzzerOff.svg", ":/output/buzzer/BuzzerOn.svg" }; m_alternativeSkins = m_defaultSkins; setPixmap(0); m_label->setPos(64, 34); setCanChangeSkin(true); setHasAudio(true); setHasLabel(true); setRotatable(false); #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) m_hasOutputDevice = !QAudioDeviceInfo::defaultOutputDevice().deviceName().isEmpty(); #else m_hasOutputDevice = !QMediaDevices::defaultAudioOutput().description().isEmpty(); #endif if (m_hasOutputDevice) { m_audio = new QSoundEffect(this); } } void Buzzer::refresh() { if (!isValid()) { stop(); return; } const Status inputValue = m_inputPorts.constFirst()->status(); (inputValue == Status::Active) ? play() : stop(); } void Buzzer::setAudio(const QString ¬e) { if (note.isEmpty()) { return; } m_note = note; if (!m_hasOutputDevice) { return; } #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) m_audio->setVolume(0.35); #else m_audio->setVolume(0.35f); #endif m_audio->setSource(QUrl::fromLocalFile(":output/audio/" + note + ".wav")); m_audio->setLoopCount(QSoundEffect::Infinite); // TODO: fix audio clipping when repeating } QString Buzzer::audio() const { return m_note; } void Buzzer::mute(const bool mute) { if (!m_hasOutputDevice) { return; } m_audio->setMuted(mute); } void Buzzer::play() { if (m_isPlaying) { return; } setPixmap(1); if (m_hasOutputDevice) { if (m_audio->source().isEmpty()) { setAudio("C6"); } m_audio->play(); } m_isPlaying = true; } void Buzzer::stop() { if (!m_isPlaying) { return; } setPixmap(0); if (m_hasOutputDevice) { m_audio->stop(); } m_isPlaying = false; } void Buzzer::save(QDataStream &stream) const { GraphicElement::save(stream); QMap map; map.insert("note", audio()); stream << map; } void Buzzer::load(QDataStream &stream, QMap &portMap, const QVersionNumber version) { GraphicElement::load(stream, portMap, version); if (version < VERSION("2.4")) { return; } if (version < VERSION("4.1")) { QString note; stream >> note; setAudio(note); } if (version >= VERSION("4.1")) { QMap map; stream >> map; if (map.contains("note")) { setAudio(map.value("note").toString()); } } } wiRedPanda-4.1.12/app/element/buzzer.h000066400000000000000000000016111444020206400175130ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include "graphicelement.h" #include #include class Buzzer : public GraphicElement { Q_OBJECT public: explicit Buzzer(QGraphicsItem *parent = nullptr); Buzzer(const Buzzer &other) : Buzzer(other.parentItem()) {} QString audio() const override; void load(QDataStream &stream, QMap &portMap, const QVersionNumber version) override; void mute(const bool mute = true); void refresh() override; void save(QDataStream &stream) const override; void setAudio(const QString ¬e) override; private: void play(); void stop(); QSoundEffect *m_audio = nullptr; QString m_note; bool m_isPlaying = false; bool m_hasOutputDevice = false; }; Q_DECLARE_METATYPE(Buzzer) wiRedPanda-4.1.12/app/element/clock.cpp000066400000000000000000000067321444020206400176310ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #include "clock.h" #include "globalproperties.h" #include "qneport.h" #include using namespace std::chrono_literals; namespace { int id = qRegisterMetaType(); } Clock::Clock(QGraphicsItem *parent) : GraphicElementInput(ElementType::Clock, ElementGroup::Input, ":/input/clock1.svg", tr("CLOCK SIGNAL"), tr("Clock"), 0, 0, 1, 1, parent) { if (GlobalProperties::skipInit) { return; } m_defaultSkins = QStringList{ ":/input/clock0.svg", ":/input/clock1.svg" }; m_alternativeSkins = m_defaultSkins; setPixmap(0); m_locked = false; setCanChangeSkin(true); setHasFrequency(true); setHasLabel(true); setRotatable(false); Clock::setFrequency(1.0); Clock::setOff(); } void Clock::updateClock() { if (m_locked) { return; } if (m_reset) { resetClock(); return; } const auto duration = std::chrono::duration(std::chrono::steady_clock::now() - m_timePoint); if (duration > m_interval) { m_timePoint = std::chrono::steady_clock::now(); setOn(!m_isOn); } } bool Clock::isOn(const int port) const { Q_UNUSED(port) return m_isOn; } void Clock::setOff() { Clock::setOn(false); } void Clock::setOn() { Clock::setOn(true); } void Clock::setOn(const bool value, const int port) { Q_UNUSED(port) m_isOn = value; setPixmap(static_cast(m_isOn)); outputPort()->setStatus(static_cast(m_isOn)); } void Clock::save(QDataStream &stream) const { GraphicElement::save(stream); QMap map; map.insert("frequency", frequency()); map.insert("locked", m_locked); stream << map; } void Clock::load(QDataStream &stream, QMap &portMap, const QVersionNumber version) { GraphicElement::load(stream, portMap, version); if (version < VERSION("1.1")) { return; } if (version < VERSION("4.1")) { float freq; stream >> freq; setFrequency(freq); if (version >= VERSION("3.1")) { stream >> m_locked; } } if (version >= VERSION("4.1")) { QMap map; stream >> map; if (map.contains("frequency")) { setFrequency(map.value("frequency").toFloat()); } if (map.contains("locked")) { m_locked = map.value("locked").toBool(); } } } float Clock::frequency() const { return static_cast(m_frequency); } void Clock::setFrequency(const float freq) { if (qFuzzyIsNull(freq)) { return; } std::chrono::duration auxInterval = 1s / (2 * freq); if (auxInterval.count() <= 0) { return; } m_interval = auxInterval; m_frequency = static_cast(freq); m_timePoint = std::chrono::steady_clock::now(); m_reset = true; } void Clock::resetClock() { setOn(); m_timePoint = std::chrono::steady_clock::now(); m_reset = false; } QString Clock::genericProperties() { return QString::number(frequency()) + " Hz"; } void Clock::setSkin(const bool defaultSkin, const QString &fileName) { if (defaultSkin) { m_alternativeSkins = m_defaultSkins; } else { m_alternativeSkins[static_cast(m_isOn)] = fileName; } m_usingDefaultSkin = defaultSkin; setPixmap(static_cast(m_isOn)); } wiRedPanda-4.1.12/app/element/clock.h000066400000000000000000000021131444020206400172630ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include "graphicelementinput.h" class Clock : public GraphicElementInput { Q_OBJECT public: explicit Clock(QGraphicsItem *parent = nullptr); QString genericProperties() override; bool isOn(const int port = 0) const override; float frequency() const override; void load(QDataStream &stream, QMap &portMap, const QVersionNumber version) override; void resetClock(); void save(QDataStream &stream) const override; void setFrequency(const float freq) override; void setOff() override; void setOn() override; void setOn(const bool value, const int port = 0) override; void setSkin(const bool defaultSkin, const QString &fileName) override; void updateClock(); private: bool m_isOn = false; bool m_reset = true; double m_frequency = 0; std::chrono::duration m_interval{}; std::chrono::steady_clock::time_point m_timePoint; }; Q_DECLARE_METATYPE(Clock) wiRedPanda-4.1.12/app/element/demux.cpp000066400000000000000000000016761444020206400176620ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #include "demux.h" #include "globalproperties.h" #include "qneport.h" namespace { int id = qRegisterMetaType(); } Demux::Demux(QGraphicsItem *parent) : GraphicElement(ElementType::Demux, ElementGroup::Mux, ":/basic/demux.svg", tr("DEMULTIPLEXER"), tr("Demux"), 2, 2, 2, 2, parent) { if (GlobalProperties::skipInit) { return; } m_defaultSkins << m_pixmapPath; m_alternativeSkins = m_defaultSkins; setPixmap(0); setCanChangeSkin(true); Demux::updatePortsProperties(); } void Demux::updatePortsProperties() { inputPort(0)->setPos(16, 32); inputPort(0)->setName("In"); inputPort(1)->setPos(32, 56); inputPort(1)->setName("S"); outputPort(0)->setPos(48, 16); outputPort(0)->setName("Out0"); outputPort(1)->setPos(48, 48); outputPort(1)->setName("Out1"); } wiRedPanda-4.1.12/app/element/demux.h000066400000000000000000000005341444020206400173170ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include "graphicelement.h" class Demux : public GraphicElement { Q_OBJECT public: explicit Demux(QGraphicsItem *parent = nullptr); void updatePortsProperties() override; }; Q_DECLARE_METATYPE(Demux) wiRedPanda-4.1.12/app/element/dflipflop.cpp000066400000000000000000000027561444020206400205170ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #include "dflipflop.h" #include "globalproperties.h" #include "qneport.h" namespace { int id = qRegisterMetaType(); } DFlipFlop::DFlipFlop(QGraphicsItem *parent) : GraphicElement(ElementType::DFlipFlop, ElementGroup::Memory, pixmapPath(), tr("D-FLIPFLOP"), tr("D-FlipFlop"), 4, 4, 2, 2, parent) { if (GlobalProperties::skipInit) { return; } m_defaultSkins << m_pixmapPath; m_alternativeSkins = m_defaultSkins; setPixmap(0); setCanChangeSkin(true); DFlipFlop::updatePortsProperties(); } void DFlipFlop::updatePortsProperties() { inputPort(0)->setPos( 0, 16); inputPort(0)->setName("Data"); inputPort(1)->setPos( 0, 48); inputPort(1)->setName("Clock"); inputPort(2)->setPos(32, 0); inputPort(2)->setName("~Preset"); inputPort(3)->setPos(32, 64); inputPort(3)->setName("~Clear"); outputPort(0)->setPos(64, 16); outputPort(0)->setName("Q"); outputPort(1)->setPos(64, 48); outputPort(1)->setName("~Q"); inputPort(2)->setRequired(false); inputPort(3)->setRequired(false); inputPort(2)->setDefaultStatus(Status::Active); inputPort(3)->setDefaultStatus(Status::Active); outputPort(0)->setDefaultStatus(Status::Inactive); outputPort(1)->setDefaultStatus(Status::Active); } void DFlipFlop::updateTheme() { setPixmap(pixmapPath()); GraphicElement::updateTheme(); } wiRedPanda-4.1.12/app/element/dflipflop.h000066400000000000000000000010341444020206400201500ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include "graphicelement.h" #include "thememanager.h" class DFlipFlop : public GraphicElement { Q_OBJECT public: explicit DFlipFlop(QGraphicsItem *parent = nullptr); static QString pixmapPath() { return ":/memory/" + ThemeManager::themePath() + "/D-flipflop.svg"; } void updatePortsProperties() override; void updateTheme() override; }; Q_DECLARE_METATYPE(DFlipFlop) wiRedPanda-4.1.12/app/element/display_14.cpp000066400000000000000000000163211444020206400205020ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #include "display_14.h" #include "display_7.h" #include "globalproperties.h" #include "qneport.h" #include namespace { int id = qRegisterMetaType(); } Display14::Display14(QGraphicsItem *parent) : GraphicElement(ElementType::Display14, ElementGroup::Output, ":/output/counter/counter_14_on.svg", tr("14-SEGMENT DISPLAY"), tr("14-Segment Display"), 15, 15, 0, 0, parent) { if (GlobalProperties::skipInit) { return; } m_defaultSkins = QStringList{ ":/output/counter/counter_14_off.svg", ":/output/counter/counter_a.svg", ":/output/counter/counter_b.svg", ":/output/counter/counter_c.svg", ":/output/counter/counter_d.svg", ":/output/counter/counter_e.svg", ":/output/counter/counter_f.svg", ":/output/counter/counter_g1.svg", ":/output/counter/counter_g2.svg", ":/output/counter/counter_h.svg", ":/output/counter/counter_j.svg", ":/output/counter/counter_k.svg", ":/output/counter/counter_l.svg", ":/output/counter/counter_m.svg", ":/output/counter/counter_n.svg", ":/output/counter/counter_dp.svg", }; m_alternativeSkins = m_defaultSkins; setPixmap(0); a = QVector(5, m_defaultSkins.at(1)); b = QVector(5, m_defaultSkins.at(2)); c = QVector(5, m_defaultSkins.at(3)); d = QVector(5, m_defaultSkins.at(4)); e = QVector(5, m_defaultSkins.at(5)); f = QVector(5, m_defaultSkins.at(6)); g1 = QVector(5, m_defaultSkins.at(7)); g2 = QVector(5, m_defaultSkins.at(8)); h = QVector(5, m_defaultSkins.at(9)); j = QVector(5, m_defaultSkins.at(10)); k = QVector(5, m_defaultSkins.at(11)); l = QVector(5, m_defaultSkins.at(12)); m = QVector(5, m_defaultSkins.at(13)); n = QVector(5, m_defaultSkins.at(14)); dp = QVector(5, m_defaultSkins.at(15)); Display7::convertAllColors(a); Display7::convertAllColors(b); Display7::convertAllColors(c); Display7::convertAllColors(d); Display7::convertAllColors(e); Display7::convertAllColors(f); Display7::convertAllColors(g1); Display7::convertAllColors(g2); Display7::convertAllColors(h); Display7::convertAllColors(j); Display7::convertAllColors(k); Display7::convertAllColors(l); Display7::convertAllColors(m); Display7::convertAllColors(n); Display7::convertAllColors(dp); setCanChangeSkin(true); setHasColors(true); setHasLabel(true); setRotatable(false); Display14::updatePortsProperties(); } void Display14::refresh() { update(); } void Display14::updatePortsProperties() { inputPort( 0)->setPos( 0, -8); inputPort(0)->setName("G1 (" + tr("middle left") + ")"); inputPort( 1)->setPos( 0, 8); inputPort(1)->setName("F (" + tr("upper left") + ")"); inputPort( 2)->setPos( 0, 24); inputPort(2)->setName("E (" + tr("lower left") + ")"); inputPort( 3)->setPos( 0, 40); inputPort(3)->setName("D (" + tr("bottom") + ")"); inputPort( 4)->setPos(64, -8); inputPort(4)->setName("A (" + tr("top") + ")"); inputPort( 5)->setPos(64, 8); inputPort(5)->setName("B (" + tr("upper right") + ")"); inputPort( 6)->setPos(64, 24); inputPort(6)->setName("DP (" + tr("dot") + ")"); inputPort( 7)->setPos(64, 40); inputPort(7)->setName("C (" + tr("lower right") + ")"); inputPort( 8)->setPos( 0, 56); inputPort(8)->setName("G2 (" + tr("middle right") + ")"); inputPort( 9)->setPos( 0, 72); inputPort(9)->setName("H (" + tr("middle upper left") + ")"); inputPort(10)->setPos( 0, 88); inputPort(10)->setName("J (" + tr("middle top") + ")"); inputPort(11)->setPos(64, 56); inputPort(11)->setName("K (" + tr("middle upper right") + ")"); inputPort(12)->setPos(64, 72); inputPort(12)->setName("L (" + tr("middle lower right") + ")"); inputPort(13)->setPos(64, 88); inputPort(13)->setName("M (" + tr("middle bottom") + ")"); inputPort(14)->setPos(64, 104); inputPort(14)->setName("N (" + tr("middle lower left") + ")"); for (auto *port : qAsConst(m_inputPorts)) { port->setRequired(false); port->setDefaultStatus(Status::Inactive); } } void Display14::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) { GraphicElement::paint(painter, option, widget); if (inputPort(0)->status() == Status::Active) { painter->drawPixmap(0, 0, g1.at(m_colorNumber)); } if (inputPort(1)->status() == Status::Active) { painter->drawPixmap(0, 0, f.at(m_colorNumber)); } if (inputPort(2)->status() == Status::Active) { painter->drawPixmap(0, 0, e.at(m_colorNumber)); } if (inputPort(3)->status() == Status::Active) { painter->drawPixmap(0, 0, d.at(m_colorNumber)); } if (inputPort(4)->status() == Status::Active) { painter->drawPixmap(0, 0, a.at(m_colorNumber)); } if (inputPort(5)->status() == Status::Active) { painter->drawPixmap(0, 0, b.at(m_colorNumber)); } if (inputPort(6)->status() == Status::Active) { painter->drawPixmap(0, 0, dp.at(m_colorNumber)); } if (inputPort(7)->status() == Status::Active) { painter->drawPixmap(0, 0, c.at(m_colorNumber)); } if (inputPort(8)->status() == Status::Active) { painter->drawPixmap(0, 0, g2.at(m_colorNumber)); } if (inputPort(9)->status() == Status::Active) { painter->drawPixmap(0, 0, h.at(m_colorNumber)); } if (inputPort(10)->status() == Status::Active) { painter->drawPixmap(0, 0, j.at(m_colorNumber)); } if (inputPort(11)->status() == Status::Active) { painter->drawPixmap(0, 0, k.at(m_colorNumber)); } if (inputPort(12)->status() == Status::Active) { painter->drawPixmap(0, 0, l.at(m_colorNumber)); } if (inputPort(13)->status() == Status::Active) { painter->drawPixmap(0, 0, m.at(m_colorNumber)); } if (inputPort(14)->status() == Status::Active) { painter->drawPixmap(0, 0, n.at(m_colorNumber)); } } void Display14::setColor(const QString &color) { m_color = color; if (color == "White") { m_colorNumber = 0; } if (color == "Red") { m_colorNumber = 1; } if (color == "Green") { m_colorNumber = 2; } if (color == "Blue") { m_colorNumber = 3; } if (color == "Purple") { m_colorNumber = 4; } } QString Display14::color() const { return m_color; } void Display14::save(QDataStream &stream) const { GraphicElement::save(stream); QMap map; map.insert("color", color()); stream << map; } void Display14::load(QDataStream &stream, QMap &portMap, const QVersionNumber version) { GraphicElement::load(stream, portMap, version); if ((VERSION("3.1") <= version) && (version < VERSION("4.1"))) { QString color_; stream >> color_; setColor(color_); } if (version >= VERSION("4.1")) { QMap map; stream >> map; if (map.contains("color")) { setColor(map.value("color").toString()); } } } wiRedPanda-4.1.12/app/element/display_14.h000066400000000000000000000015551444020206400201520ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include "graphicelement.h" class Display14 : public GraphicElement { Q_OBJECT public: explicit Display14(QGraphicsItem *parent = nullptr); QString color() const override; void load(QDataStream &stream, QMap &portMap, const QVersionNumber version) override; void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override; void refresh() override; void save(QDataStream &stream) const override; void setColor(const QString &color) override; void updatePortsProperties() override; private: QString m_color = "Red"; QVector bkg, a, b, c, d, e, f, g1, g2, h, j, k, l, m, n, dp; int m_colorNumber = 1; }; Q_DECLARE_METATYPE(Display14) wiRedPanda-4.1.12/app/element/display_7.cpp000066400000000000000000000152071444020206400204260ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #include "display_7.h" #include "common.h" #include "globalproperties.h" #include "qneport.h" #include #include namespace { int id = qRegisterMetaType(); } Display7::Display7(QGraphicsItem *parent) : GraphicElement(ElementType::Display7, ElementGroup::Output, ":/output/counter/counter_on.svg", tr("7-SEGMENT DISPLAY"), tr("7-Segment Display"), 8, 8, 0, 0, parent) { if (GlobalProperties::skipInit) { return; } m_defaultSkins = QStringList{ ":/output/counter/counter_off.svg", ":/output/counter/counter_a.svg", ":/output/counter/counter_b.svg", ":/output/counter/counter_c.svg", ":/output/counter/counter_d.svg", ":/output/counter/counter_e.svg", ":/output/counter/counter_f.svg", ":/output/counter/counter_g.svg", ":/output/counter/counter_dp.svg", }; m_alternativeSkins = m_defaultSkins; setPixmap(0); qCDebug(three) << tr("Allocating pixmaps."); a = QVector(5, m_defaultSkins.at(1)); b = QVector(5, m_defaultSkins.at(2)); c = QVector(5, m_defaultSkins.at(3)); d = QVector(5, m_defaultSkins.at(4)); e = QVector(5, m_defaultSkins.at(5)); f = QVector(5, m_defaultSkins.at(6)); g = QVector(5, m_defaultSkins.at(7)); dp = QVector(5, m_defaultSkins.at(8)); qCDebug(three) << tr("Converting segments to other colors."); convertAllColors(a); convertAllColors(b); convertAllColors(c); convertAllColors(d); convertAllColors(e); convertAllColors(f); convertAllColors(g); convertAllColors(dp); setCanChangeSkin(true); setHasColors(true); setHasLabel(true); setRotatable(false); Display7::updatePortsProperties(); } void Display7::convertAllColors(QVector &pixmaps) { QImage tmp(pixmaps.at(0).toImage()); pixmaps[0] = convertColor(tmp, true, true, true); pixmaps[1] = convertColor(tmp, true, false, false); pixmaps[2] = convertColor(tmp, false, true, false); pixmaps[3] = convertColor(tmp, false, false, true); pixmaps[4] = convertColor(tmp, true, false, true); } QPixmap Display7::convertColor(const QImage &source, const bool red, const bool green, const bool blue) { QImage target(source); for (int y = 0; y < target.height(); ++y) { QRgb *line = reinterpret_cast(target.scanLine(y)); for (int x = 0; x < target.width(); ++x) { QRgb &rgb = line[x]; const int value = qRed(rgb); rgb = qRgba(red ? value : 0, green ? value : 0, blue ? value : 0, value); } } return QPixmap::fromImage(target); } void Display7::refresh() { update(); } void Display7::updatePortsProperties() { inputPort(0)->setPos( 0, 8); inputPort(0)->setName("G (" + tr("middle") + ")"); inputPort(1)->setPos( 0, 24); inputPort(1)->setName("F (" + tr("upper left") + ")"); inputPort(2)->setPos( 0, 40); inputPort(2)->setName("E (" + tr("lower left") + ")"); inputPort(3)->setPos( 0, 56); inputPort(3)->setName("D (" + tr("bottom") + ")"); inputPort(4)->setPos(64, 8); inputPort(4)->setName("A (" + tr("top") + ")"); inputPort(5)->setPos(64, 24); inputPort(5)->setName("B (" + tr("upper right") + ")"); inputPort(6)->setPos(64, 40); inputPort(6)->setName("DP (" + tr("dot") + ")"); inputPort(7)->setPos(64, 56); inputPort(7)->setName("C (" + tr("lower right") + ")"); for (auto *in : qAsConst(m_inputPorts)) { in->setRequired(false); in->setDefaultStatus(Status::Inactive); } } void Display7::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) { GraphicElement::paint(painter, option, widget); if (inputPort(0)->status() == Status::Active) { painter->drawPixmap(0, 0, g.at(m_colorNumber)); } if (inputPort(1)->status() == Status::Active) { painter->drawPixmap(0, 0, f.at(m_colorNumber)); } if (inputPort(2)->status() == Status::Active) { painter->drawPixmap(0, 0, e.at(m_colorNumber)); } if (inputPort(3)->status() == Status::Active) { painter->drawPixmap(0, 0, d.at(m_colorNumber)); } if (inputPort(4)->status() == Status::Active) { painter->drawPixmap(0, 0, a.at(m_colorNumber)); } if (inputPort(5)->status() == Status::Active) { painter->drawPixmap(0, 0, b.at(m_colorNumber)); } if (inputPort(6)->status() == Status::Active) { painter->drawPixmap(0, 0, dp.at(m_colorNumber)); } if (inputPort(7)->status() == Status::Active) { painter->drawPixmap(0, 0, c.at(m_colorNumber)); } } void Display7::setColor(const QString &color) { m_color = color; if (color == "White") { m_colorNumber = 0; } if (color == "Red") { m_colorNumber = 1; } if (color == "Green") { m_colorNumber = 2; } if (color == "Blue") { m_colorNumber = 3; } if (color == "Purple") { m_colorNumber = 4; } } QString Display7::color() const { return m_color; } void Display7::save(QDataStream &stream) const { GraphicElement::save(stream); QMap map; map.insert("color", color()); stream << map; } void Display7::load(QDataStream &stream, QMap &portMap, const QVersionNumber version) { GraphicElement::load(stream, portMap, version); /* * 0, 7, 2, 1, 3, 4, 5, 6 * 7, 5, 4, 2, 1, 4, 6, 3, 0 * 4, 5, 7, 3, 2, 1, 0, 6 * 2, 1, 4, 5, 0, 7, 3, 6 */ if (version < VERSION("1.6")) { qCDebug(zero) << tr("Remapping inputs."); QVector order{2, 1, 4, 5, 0, 7, 3, 6}; QVector aux = inputs(); for (int i = 0; i < aux.size(); ++i) { aux[order[i]] = m_inputPorts.value(i); } setInputs(aux); updatePortsProperties(); } if (version < VERSION("1.7")) { qCDebug(zero) << tr("Remapping inputs."); QVector order{2, 5, 4, 0, 7, 3, 6, 1}; QVector aux = inputs(); for (int i = 0; i < aux.size(); ++i) { aux[order[i]] = m_inputPorts.value(i); } setInputs(aux); updatePortsProperties(); } if ((VERSION("3.1") <= version) && (version < VERSION("4.1"))) { QString color_; stream >> color_; setColor(color_); } if (version >= VERSION("4.1")) { QMap map; stream >> map; if (map.contains("color")) { setColor(map.value("color").toString()); } } } wiRedPanda-4.1.12/app/element/display_7.h000066400000000000000000000020061444020206400200640ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include "graphicelement.h" class QNEPort; class Display7 : public GraphicElement { Q_OBJECT public: explicit Display7(QGraphicsItem *parent = nullptr); static QPixmap convertColor(const QImage &source, const bool red, const bool green, const bool blue); static void convertAllColors(QVector &pixmaps); QString color() const override; void load(QDataStream &stream, QMap &portMap, const QVersionNumber version) override; void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override; void refresh() override; void save(QDataStream &stream) const override; void setColor(const QString &color) override; void updatePortsProperties() override; private: QString m_color = "Red"; QVector a, b, c, d, e, f, g, dp; int m_colorNumber = 1; }; Q_DECLARE_METATYPE(Display7) wiRedPanda-4.1.12/app/element/dlatch.cpp000066400000000000000000000022141444020206400177640ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #include "dlatch.h" #include "globalproperties.h" #include "qneport.h" namespace { int id = qRegisterMetaType(); } DLatch::DLatch(QGraphicsItem *parent) : GraphicElement(ElementType::DLatch, ElementGroup::Memory, pixmapPath(), tr("D-LATCH"), tr("D-Latch"), 2, 2, 2, 2, parent) { if (GlobalProperties::skipInit) { return; } m_defaultSkins << m_pixmapPath; m_alternativeSkins = m_defaultSkins; setPixmap(0); setCanChangeSkin(true); DLatch::updatePortsProperties(); } void DLatch::updatePortsProperties() { inputPort(0)->setPos(0, 16); inputPort(0)->setName("Data"); inputPort(1)->setPos(0, 48); inputPort(1)->setName("Enable"); outputPort(0)->setPos(64, 16); outputPort(0)->setName("Q"); outputPort(1)->setPos(64, 48); outputPort(1)->setName("~Q"); outputPort(0)->setDefaultStatus(Status::Inactive); outputPort(1)->setDefaultStatus(Status::Active); } void DLatch::updateTheme() { setPixmap(pixmapPath()); GraphicElement::updateTheme(); } wiRedPanda-4.1.12/app/element/dlatch.h000066400000000000000000000010201444020206400174230ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include "graphicelement.h" #include "thememanager.h" class DLatch : public GraphicElement { Q_OBJECT public: explicit DLatch(QGraphicsItem *parent = nullptr); static QString pixmapPath() { return ":/memory/" + ThemeManager::themePath() + "/D-latch.svg"; } void updatePortsProperties() override; void updateTheme() override; }; Q_DECLARE_METATYPE(DLatch) wiRedPanda-4.1.12/app/element/element.pri000066400000000000000000000023071444020206400201710ustar00rootroot00000000000000SOURCES += \ $$PWD/and.cpp \ $$PWD/buzzer.cpp \ $$PWD/clock.cpp \ $$PWD/demux.cpp \ $$PWD/dflipflop.cpp \ $$PWD/display_14.cpp \ $$PWD/display_7.cpp \ $$PWD/dlatch.cpp \ $$PWD/inputbutton.cpp \ $$PWD/inputgnd.cpp \ $$PWD/inputrotary.cpp \ $$PWD/inputswitch.cpp \ $$PWD/inputvcc.cpp \ $$PWD/jkflipflop.cpp \ $$PWD/led.cpp \ $$PWD/line.cpp \ $$PWD/mux.cpp \ $$PWD/nand.cpp \ $$PWD/node.cpp \ $$PWD/nor.cpp \ $$PWD/not.cpp \ $$PWD/or.cpp \ $$PWD/srflipflop.cpp \ $$PWD/text.cpp \ $$PWD/tflipflop.cpp \ $$PWD/xnor.cpp \ $$PWD/xor.cpp HEADERS += \ $$PWD/and.h \ $$PWD/buzzer.h \ $$PWD/clock.h \ $$PWD/demux.h \ $$PWD/dflipflop.h \ $$PWD/display_14.h \ $$PWD/display_7.h \ $$PWD/dlatch.h \ $$PWD/inputbutton.h \ $$PWD/inputgnd.h \ $$PWD/inputrotary.h \ $$PWD/inputswitch.h \ $$PWD/inputvcc.h \ $$PWD/jkflipflop.h \ $$PWD/led.h \ $$PWD/line.h \ $$PWD/mux.h \ $$PWD/nand.h \ $$PWD/node.h \ $$PWD/nor.h \ $$PWD/not.h \ $$PWD/or.h \ $$PWD/srflipflop.h \ $$PWD/text.h \ $$PWD/tflipflop.h \ $$PWD/xnor.h \ $$PWD/xor.h wiRedPanda-4.1.12/app/element/inputbutton.cpp000066400000000000000000000052231444020206400211230ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #include "inputbutton.h" #include "globalproperties.h" #include "qneport.h" #include namespace { int id = qRegisterMetaType(); } InputButton::InputButton(QGraphicsItem *parent) : GraphicElementInput(ElementType::InputButton, ElementGroup::Input, ":/input/buttonOff.svg", tr("PUSH BUTTON"), tr("Push Button"), 0, 0, 1, 1, parent) { if (GlobalProperties::skipInit) { return; } m_defaultSkins = QStringList{ ":/input/buttonOff.svg", ":/input/buttonOn.svg", }; m_alternativeSkins = m_defaultSkins; setPixmap(0); m_locked = false; setCanChangeSkin(true); setHasLabel(true); setHasTrigger(true); setRotatable(false); InputButton::setOff(); } void InputButton::mousePressEvent(QGraphicsSceneMouseEvent *event) { if (!m_locked && (event->button() == Qt::LeftButton)) { setOn(); event->accept(); } QGraphicsItem::mousePressEvent(event); } void InputButton::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) { if (!m_locked && (event->button() == Qt::LeftButton)) { setOff(); event->accept(); } QGraphicsItem::mouseReleaseEvent(event); } void InputButton::save(QDataStream &stream) const { GraphicElement::save(stream); QMap map; map.insert("locked", m_locked); stream << map; } void InputButton::load(QDataStream &stream, QMap &portMap, const QVersionNumber version) { GraphicElement::load(stream, portMap, version); if ((VERSION("3.1") <= version) && (version < VERSION("4.1"))) { stream >> m_locked; } if (version >= VERSION("4.1")) { QMap map; stream >> map; if (map.contains("locked")) { m_locked = map.value("locked").toBool(); } } } bool InputButton::isOn(const int port) const { Q_UNUSED(port) return m_isOn; } void InputButton::setOff() { InputButton::setOn(false); } void InputButton::setOn() { InputButton::setOn(true); } void InputButton::setOn(const bool value, const int port) { Q_UNUSED(port) m_isOn = value; setPixmap(static_cast(m_isOn)); outputPort()->setStatus(static_cast(m_isOn)); } void InputButton::setSkin(const bool defaultSkin, const QString &fileName) { if (defaultSkin) { m_alternativeSkins = m_defaultSkins; } else { m_alternativeSkins[static_cast(m_isOn)] = fileName; } m_usingDefaultSkin = defaultSkin; setPixmap(static_cast(m_isOn)); } wiRedPanda-4.1.12/app/element/inputbutton.h000066400000000000000000000016331444020206400205710ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include "graphicelementinput.h" class InputButton : public GraphicElementInput { Q_OBJECT public: explicit InputButton(QGraphicsItem *parent = nullptr); bool isOn(const int port = 0) const override; void load(QDataStream &stream, QMap &portMap, const QVersionNumber version) override; void save(QDataStream &stream) const override; void setOff() override; void setOn() override; void setOn(const bool value, const int port = 0) override; void setSkin(const bool defaultSkin, const QString &fileName) override; protected: void mousePressEvent(QGraphicsSceneMouseEvent *event) override; void mouseReleaseEvent(QGraphicsSceneMouseEvent *event) override; private: bool m_isOn = false; }; Q_DECLARE_METATYPE(InputButton) wiRedPanda-4.1.12/app/element/inputgnd.cpp000066400000000000000000000011541444020206400203570ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #include "inputgnd.h" #include "globalproperties.h" namespace { int id = qRegisterMetaType(); } InputGnd::InputGnd(QGraphicsItem *parent) : GraphicElement(ElementType::InputGnd, ElementGroup::StaticInput, ":/input/0.svg", tr("GROUND"), tr("GND"), 0, 0, 1, 1, parent) { if (GlobalProperties::skipInit) { return; } m_defaultSkins << m_pixmapPath; m_alternativeSkins = m_defaultSkins; setPixmap(0); setCanChangeSkin(true); setRotatable(false); } wiRedPanda-4.1.12/app/element/inputgnd.h000066400000000000000000000004711444020206400200250ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include "graphicelement.h" class InputGnd : public GraphicElement { Q_OBJECT public: explicit InputGnd(QGraphicsItem *parent = nullptr); }; Q_DECLARE_METATYPE(InputGnd) wiRedPanda-4.1.12/app/element/inputrotary.cpp000066400000000000000000000214531444020206400211330ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #include "inputrotary.h" #include "globalproperties.h" #include "qneport.h" #include #include namespace { int id = qRegisterMetaType(); } InputRotary::InputRotary(QGraphicsItem *parent) : GraphicElementInput(ElementType::InputRotary, ElementGroup::Input, ":/input/rotary_icon.svg", tr("ROTARY SWITCH"), tr("Rotary Switch"), 0, 0, 2, 16, parent) { if (GlobalProperties::skipInit) { return; } m_defaultSkins = QStringList{ ":/input/rotary.svg", ":/input/rotary_arrow.svg" }; m_alternativeSkins = m_defaultSkins; setPixmap(0); m_rotary = m_defaultSkins.at(0); m_arrow = m_defaultSkins.at(1); setCanChangeSkin(true); setHasLabel(true); setHasTrigger(true); setLocked(false); InputRotary::updatePortsProperties(); } void InputRotary::refresh() { if (m_currentPort >= InputRotary::outputSize()) { m_currentPort = 0; } update(); } void InputRotary::updatePortsProperties() { switch (InputRotary::outputSize()) { case 2: { outputPort(0)->setPos(32, 0); outputPort(0)->setName("0"); outputPort(1)->setPos(32, 64); outputPort(1)->setName("1"); break; } case 3: { outputPort(0)->setPos(32, 0); outputPort( 0)->setName("0"); outputPort(1)->setPos(64, 48); outputPort( 1)->setName("1"); outputPort(2)->setPos(0, 48); outputPort( 2)->setName("2"); break; } case 4: { outputPort(0)->setPos(32, 0); outputPort(0)->setName("0"); outputPort(1)->setPos(64, 32); outputPort(1)->setName("1"); outputPort(2)->setPos(32, 64); outputPort(2)->setName("2"); outputPort(3)->setPos( 0, 32); outputPort(3)->setName("3"); break; } case 6: { outputPort(0)->setPos(32, 0); outputPort( 0)->setName("0"); outputPort(1)->setPos(64, 16); outputPort( 1)->setName("1"); outputPort(2)->setPos(64, 48); outputPort( 2)->setName("2"); outputPort(3)->setPos(32, 64); outputPort( 3)->setName("3"); outputPort(4)->setPos( 0, 48); outputPort( 4)->setName("4"); outputPort(5)->setPos( 0, 16); outputPort( 5)->setName("5"); break; } case 8: { outputPort(0)->setPos(32, 0); outputPort(0)->setName("0"); outputPort(1)->setPos(64, 0); outputPort(1)->setName("1"); outputPort(2)->setPos(64, 32); outputPort(2)->setName("2"); outputPort(3)->setPos(64, 64); outputPort(3)->setName("3"); outputPort(4)->setPos(32, 64); outputPort(4)->setName("4"); outputPort(5)->setPos( 0, 64); outputPort(5)->setName("5"); outputPort(6)->setPos( 0, 32); outputPort(6)->setName("6"); outputPort(7)->setPos( 0, 0); outputPort(7)->setName("7"); break; } case 10: { outputPort(0)->setPos(32, 0); outputPort(0)->setName("0"); outputPort(1)->setPos(56, 0); outputPort(1)->setName("1"); outputPort(2)->setPos(64, 24); outputPort(2)->setName("2"); outputPort(3)->setPos(64, 40); outputPort(3)->setName("3"); outputPort(4)->setPos(56, 64); outputPort(4)->setName("4"); outputPort(5)->setPos(32, 64); outputPort(5)->setName("5"); outputPort(6)->setPos( 8, 64); outputPort(6)->setName("6"); outputPort(7)->setPos( 0, 40); outputPort(7)->setName("7"); outputPort(8)->setPos( 0, 24); outputPort(8)->setName("8"); outputPort(9)->setPos( 8, 0); outputPort(9)->setName("9"); break; } case 12: { outputPort( 0)->setPos(32, 0); outputPort( 0)->setName("0"); outputPort( 1)->setPos(48, 0); outputPort( 1)->setName("1"); outputPort( 2)->setPos(64, 16); outputPort( 2)->setName("2"); outputPort( 3)->setPos(64, 32); outputPort( 3)->setName("3"); outputPort( 4)->setPos(64, 48); outputPort( 4)->setName("4"); outputPort( 5)->setPos(48, 64); outputPort( 5)->setName("5"); outputPort( 6)->setPos(32, 64); outputPort( 6)->setName("6"); outputPort( 7)->setPos(16, 64); outputPort( 7)->setName("7"); outputPort( 8)->setPos( 0, 48); outputPort( 8)->setName("8"); outputPort( 9)->setPos( 0, 32); outputPort( 9)->setName("9"); outputPort(10)->setPos( 0, 16); outputPort(10)->setName("A"); outputPort(11)->setPos(16, 0); outputPort(11)->setName("B"); break; } case 16: { outputPort( 0)->setPos(32, 0); outputPort( 0)->setName("0"); outputPort( 1)->setPos(48, 0); outputPort( 1)->setName("1"); outputPort( 2)->setPos(64, 0); outputPort( 2)->setName("2"); outputPort( 3)->setPos(64, 16); outputPort( 3)->setName("3"); outputPort( 4)->setPos(64, 32); outputPort( 4)->setName("4"); outputPort( 5)->setPos(64, 48); outputPort( 5)->setName("5"); outputPort( 6)->setPos(64, 64); outputPort( 6)->setName("6"); outputPort( 7)->setPos(48, 64); outputPort( 7)->setName("7"); outputPort( 8)->setPos(32, 64); outputPort( 8)->setName("8"); outputPort( 9)->setPos(16, 64); outputPort( 9)->setName("9"); outputPort(10)->setPos( 0, 64); outputPort(10)->setName("A"); outputPort(11)->setPos( 0, 48); outputPort(11)->setName("B"); outputPort(12)->setPos( 0, 32); outputPort(12)->setName("C"); outputPort(13)->setPos( 0, 16); outputPort(13)->setName("D"); outputPort(14)->setPos( 0, 0); outputPort(14)->setName("E"); outputPort(15)->setPos(16, 0); outputPort(15)->setName("F"); break; } } InputRotary::refresh(); } void InputRotary::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) { GraphicElement::paint(painter, option, widget); for (int port = 0; port < outputSize(); ++port) { painter->save(); const double angle = 360. / outputSize() * port; const QPointF center = pixmapCenter(); QRectF mark{30.2, 8.727, 3.6, 6.4}; painter->setBrush(QBrush{QColor{255, 246, 213}}); painter->translate(center.x(), center.y()); painter->rotate(angle); painter->translate(-center.x(), -center.y()); painter->drawRect(mark); painter->restore(); if (m_currentPort != port) { continue; } painter->save(); painter->translate(center.x(), center.y()); painter->rotate(angle); painter->translate(-center.x(), -center.y()); painter->drawPixmap(0, 0, m_arrow); painter->restore(); } } bool InputRotary::isOn(const int port) const { return (m_currentPort == port); } void InputRotary::setOff() { } void InputRotary::setOn() { const int port = (outputValue() + 1) % outputSize(); InputRotary::setOn(true, port); } void InputRotary::setOn(const bool value, const int port) { Q_UNUSED(value) m_currentPort = port; if (m_currentPort >= outputSize()) { m_currentPort = 0; } update(); for (int index = 0; index < outputSize(); ++index) { outputPort(index)->setStatus((m_currentPort == index) ? Status::Active : Status::Inactive); } } void InputRotary::mousePressEvent(QGraphicsSceneMouseEvent *event) { if (!m_locked && (event->button() == Qt::LeftButton)) { setOn(true, (m_currentPort + 1) % outputSize()); event->accept(); } QGraphicsItem::mousePressEvent(event); } void InputRotary::save(QDataStream &stream) const { GraphicElement::save(stream); QMap map; map.insert("currentPort", m_currentPort); map.insert("locked", m_locked); stream << map; } void InputRotary::load(QDataStream &stream, QMap &portMap, const QVersionNumber version) { GraphicElement::load(stream, portMap, version); if (version < VERSION("4.1")) { stream >> m_currentPort; if (version >= VERSION("3.1")) { stream >> m_locked; } } if (version >= VERSION("4.1")) { QMap map; stream >> map; if (map.contains("currentPort")) { m_currentPort = map.value("currentPort").toInt(); } if (map.contains("locked")) { m_locked = map.value("locked").toBool(); } } setOn(true, m_currentPort); } void InputRotary::setSkin(const bool defaultSkin, const QString &fileName) { if (defaultSkin) { m_alternativeSkins = m_defaultSkins; } else { m_alternativeSkins[0] = fileName; } m_usingDefaultSkin = defaultSkin; setPixmap(0); } int InputRotary::outputSize() const { return outputs().size(); } int InputRotary::outputValue() const { return m_currentPort; } wiRedPanda-4.1.12/app/element/inputrotary.h000066400000000000000000000021721444020206400205750ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include "graphicelementinput.h" class InputRotary : public GraphicElementInput { Q_OBJECT public: explicit InputRotary(QGraphicsItem *parent = nullptr); bool isOn(const int port = 0) const override; int outputSize() const override; int outputValue() const override; void load(QDataStream &stream, QMap &portMap, const QVersionNumber version) override; void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override; void refresh() override; void save(QDataStream &stream) const override; void setOff() override; void setOn() override; void setOn(const bool value, const int port = 0) override; void setSkin(const bool defaultSkin, const QString &fileName) override; void updatePortsProperties() override; protected: void mousePressEvent(QGraphicsSceneMouseEvent *event) override; private: QPixmap m_arrow; QPixmap m_rotary; int m_currentPort = 0; }; Q_DECLARE_METATYPE(InputRotary) wiRedPanda-4.1.12/app/element/inputswitch.cpp000066400000000000000000000051441444020206400211130ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #include "inputswitch.h" #include "globalproperties.h" #include "qneport.h" #include namespace { int id = qRegisterMetaType(); } InputSwitch::InputSwitch(QGraphicsItem *parent) : GraphicElementInput(ElementType::InputSwitch, ElementGroup::Input, ":/input/switchOn.svg", tr("INPUT SWITCH"), tr("Input Switch"), 0, 0, 1, 1, parent) { if (GlobalProperties::skipInit) { return; } m_defaultSkins = QStringList{ ":/input/switchOff.svg", ":/input/switchOn.svg", }; m_alternativeSkins = m_defaultSkins; setPixmap(0); m_locked = false; setCanChangeSkin(true); setHasLabel(true); setHasTrigger(true); setRotatable(false); } bool InputSwitch::isOn(const int port) const { Q_UNUSED(port) return m_isOn; } void InputSwitch::setOff() { InputSwitch::setOn(!isOn()); } void InputSwitch::setOn() { InputSwitch::setOn(!isOn()); } void InputSwitch::setOn(const bool value, const int port) { Q_UNUSED(port) m_isOn = value; setPixmap(static_cast(m_isOn)); outputPort()->setStatus(static_cast(m_isOn)); } void InputSwitch::mousePressEvent(QGraphicsSceneMouseEvent *event) { if (!m_locked && (event->button() == Qt::LeftButton)) { setOn(!m_isOn); event->accept(); } QGraphicsItem::mousePressEvent(event); } void InputSwitch::save(QDataStream &stream) const { GraphicElement::save(stream); QMap map; map.insert("isOn", m_isOn); map.insert("locked", m_locked); stream << map; } void InputSwitch::load(QDataStream &stream, QMap &portMap, const QVersionNumber version) { GraphicElement::load(stream, portMap, version); if (version < VERSION("4.1")) { stream >> m_isOn; if (version >= VERSION("3.1")) { stream >> m_locked; } } if (version >= VERSION("4.1")) { QMap map; stream >> map; if (map.contains("isOn")) { m_isOn = map.value("isOn").toBool(); } if (map.contains("locked")) { m_locked = map.value("locked").toBool(); } } setOn(m_isOn); } void InputSwitch::setSkin(const bool defaultSkin, const QString &fileName) { if (defaultSkin) { m_alternativeSkins = m_defaultSkins; } else { m_alternativeSkins[static_cast(m_isOn)] = fileName; } m_usingDefaultSkin = defaultSkin; setPixmap(static_cast(m_isOn)); } wiRedPanda-4.1.12/app/element/inputswitch.h000066400000000000000000000015251444020206400205570ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include "graphicelementinput.h" class InputSwitch : public GraphicElementInput { Q_OBJECT public: explicit InputSwitch(QGraphicsItem *parent = nullptr); bool isOn(const int port = 0) const override; void load(QDataStream &stream, QMap &portMap, const QVersionNumber version) override; void save(QDataStream &stream) const override; void setOff() override; void setOn() override; void setOn(const bool value, const int port = 0) override; void setSkin(const bool defaultSkin, const QString &fileName) override; protected: void mousePressEvent(QGraphicsSceneMouseEvent *event) override; private: bool m_isOn = false; }; Q_DECLARE_METATYPE(InputSwitch) wiRedPanda-4.1.12/app/element/inputvcc.cpp000066400000000000000000000012721444020206400203630ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #include "inputvcc.h" #include "globalproperties.h" #include "qneport.h" namespace { int id = qRegisterMetaType(); } InputVcc::InputVcc(QGraphicsItem *parent) : GraphicElement(ElementType::InputVcc, ElementGroup::StaticInput, ":/input/1.svg", tr("VCC"), tr("VCC"), 0, 0, 1, 1, parent) { if (GlobalProperties::skipInit) { return; } m_defaultSkins << m_pixmapPath; m_alternativeSkins = m_defaultSkins; setPixmap(0); setCanChangeSkin(true); setRotatable(false); m_outputPorts.constFirst()->setStatus(Status::Active); } wiRedPanda-4.1.12/app/element/inputvcc.h000066400000000000000000000004711444020206400200300ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include "graphicelement.h" class InputVcc : public GraphicElement { Q_OBJECT public: explicit InputVcc(QGraphicsItem *parent = nullptr); }; Q_DECLARE_METATYPE(InputVcc) wiRedPanda-4.1.12/app/element/jkflipflop.cpp000066400000000000000000000033531444020206400206720ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #include "jkflipflop.h" #include "globalproperties.h" #include "qneport.h" namespace { int id = qRegisterMetaType(); } JKFlipFlop::JKFlipFlop(QGraphicsItem *parent) : GraphicElement(ElementType::JKFlipFlop, ElementGroup::Memory, pixmapPath(), tr("JK-FLIPFLOP"), tr("JK-FlipFlop"), 5, 5, 2, 2, parent) { if (GlobalProperties::skipInit) { return; } m_defaultSkins << m_pixmapPath; m_alternativeSkins = m_defaultSkins; setPixmap(0); setCanChangeSkin(true); JKFlipFlop::updatePortsProperties(); } void JKFlipFlop::updatePortsProperties() { inputPort(0)->setPos( 0, 16); inputPort(0)->setName("J"); inputPort(1)->setPos( 0, 32); inputPort(1)->setName("Clock"); inputPort(2)->setPos( 0, 48); inputPort(2)->setName("K"); inputPort(3)->setPos(32, 0); inputPort(3)->setName("~Preset"); inputPort(4)->setPos(32, 64); inputPort(4)->setName("~Clear"); outputPort(0)->setPos(64, 16); outputPort(0)->setName("Q"); outputPort(1)->setPos(64, 48); outputPort(1)->setName("~Q"); inputPort(0)->setRequired(false); inputPort(2)->setRequired(false); inputPort(3)->setRequired(false); inputPort(4)->setRequired(false); inputPort(0)->setDefaultStatus(Status::Active); inputPort(2)->setDefaultStatus(Status::Active); inputPort(3)->setDefaultStatus(Status::Active); inputPort(4)->setDefaultStatus(Status::Active); outputPort(0)->setDefaultStatus(Status::Inactive); outputPort(1)->setDefaultStatus(Status::Active); } void JKFlipFlop::updateTheme() { setPixmap(pixmapPath()); GraphicElement::updateTheme(); } wiRedPanda-4.1.12/app/element/jkflipflop.h000066400000000000000000000010411444020206400203270ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later7 #pragma once #include "graphicelement.h" #include "thememanager.h" class JKFlipFlop : public GraphicElement { Q_OBJECT public: explicit JKFlipFlop(QGraphicsItem *parent = nullptr); static QString pixmapPath() { return ":/memory/" + ThemeManager::themePath() + "/JK-flipflop.svg"; } void updatePortsProperties() override; void updateTheme() override; }; Q_DECLARE_METATYPE(JKFlipFlop) wiRedPanda-4.1.12/app/element/led.cpp000066400000000000000000000117661444020206400173050ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #include "led.h" #include "globalproperties.h" #include "qneport.h" #include namespace { int id = qRegisterMetaType(); } Led::Led(QGraphicsItem *parent) : GraphicElement(ElementType::Led, ElementGroup::Output, ":/output/led/LedOff.svg", tr("LED"), tr("LED"), 1, 4, 0, 0, parent) { if (GlobalProperties::skipInit) { return; } m_defaultSkins = QStringList{ // Single input values: ":/output/led/LedOff.svg", // 0 ":/output/led/WhiteLed.svg", // 1 ":/output/led/LedOff.svg", // 2 ":/output/led/RedLed.svg", // 3 ":/output/led/LedOff.svg", // 4 ":/output/led/GreenLed.svg", // 5 ":/output/led/LedOff.svg", // 6 ":/output/led/BlueLed.svg", // 7 ":/output/led/LedOff.svg", // 8 ":/output/led/PurpleLed.svg", // 9 // Multiple input values: ":/output/led//BlackLed.png", // 10 ":/output/led//NavyBlueLed.png", // 11 ":/output/led//GreenLed.png", // 12 ":/output/led//TealLed.png", // 13 ":/output/led//DarkRedLed.png", // 14 ":/output/led//MagentaLed.png", // 15 ":/output/led//OrangeLed.png", // 16 ":/output/led//LightGrayLed.png", // 17 ":/output/led/LedOff.svg", // 18 ":/output/led/RoyalLed.png", // 19 ":/output/led/LimeGreenLed.png", // 20 ":/output/led/AquaLightLed.png", // 21 ":/output/led/RedLed.png", // 22 ":/output/led/HotPinkLed.png", // 23 ":/output/led/YellowLed.png", // 24 ":/output/led/WhiteLed.png", // 25 }; m_alternativeSkins = m_defaultSkins; setPixmap(0); setCanChangeSkin(true); setHasColors(true); setHasLabel(true); setRotatable(false); Led::updatePortsProperties(); } /* Color pallets: * * 4 bit 3 bit 2 bit * 0000: black, 000: dark gray, 00: dark gray, * 0001: blue, 001: light blue, 01: light blue, * 0010: green, 010: light green, 10: light green, * 0011: teal, 011: yellow, 11: light red * 0100: red, 100: light red, * 0101: magenta, 101: magenta, * 0110: orange, 110: cyan, * 0111: light gray 111: white * 1000: dark gray, * 1001: light blue, * 1010: light green, * 1011: cyan, * 1100: light red, * 1101: pink, * 1110: yellow, * 1111: white */ int Led::colorIndex() { if (!isValid()) { return 0; } std::bitset<4> indexBit; for (int i = 0; i < inputSize(); ++i) { indexBit[i] = static_cast(inputPort(i)->status() == Status::Active); } const int index = static_cast(indexBit.to_ulong()); int index2 = 0; switch (inputSize()) { case 1: index2 = m_colorIndex + index; break; case 2: index2 = (index == 3) ? 25 : 18 + index; break; case 3: index2 = 18 + index; break; case 4: index2 = 10 + index; break; } return index2; } void Led::refresh() { setPixmap(colorIndex()); } void Led::setColor(const QString &color) { m_color = color; if (color == "White") { m_colorIndex = 0; } if (color == "Red") { m_colorIndex = 2; } if (color == "Green") { m_colorIndex = 4; } if (color == "Blue") { m_colorIndex = 6; } if (color == "Purple") { m_colorIndex = 8; } } QString Led::color() const { return m_color; } void Led::save(QDataStream &stream) const { GraphicElement::save(stream); QMap map; map.insert("color", color()); stream << map; } void Led::load(QDataStream &stream, QMap &portMap, const QVersionNumber version) { GraphicElement::load(stream, portMap, version); if ((VERSION("1.1") <= version) && (version < VERSION("4.1"))) { QString color_; stream >> color_; setColor(color_); } if (version >= VERSION("4.1")) { QMap map; stream >> map; if (map.contains("color")) { setColor(map.value("color").toString()); } } } QString Led::genericProperties() { return color(); } void Led::updatePortsProperties() { setHasColors(inputSize() == 1); for (auto *port : qAsConst(m_inputPorts)) { port->setName(QString::number(m_inputPorts.indexOf(port))); port->setRequired(false); } GraphicElement::updatePortsProperties(); } void Led::setSkin(const bool useDefaultSkin, const QString &fileName) { const int index = colorIndex(); if (useDefaultSkin) { m_alternativeSkins = m_defaultSkins; } else { m_alternativeSkins[index] = fileName; } m_usingDefaultSkin = useDefaultSkin; setPixmap(index); } wiRedPanda-4.1.12/app/element/led.h000066400000000000000000000015671444020206400167500ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include "graphicelement.h" class Led : public GraphicElement { Q_OBJECT public: explicit Led(QGraphicsItem *parent = nullptr); QString color() const override; QString genericProperties() override; void load(QDataStream &stream, QMap &portMap, const QVersionNumber version) override; void refresh() override; void save(QDataStream &stream) const override; void setColor(const QString &color) override; void setSkin(const bool useDefaultSkin, const QString &fileName) override; void updatePortsProperties() override; private: int colorIndex(); QString m_color = "White"; int m_colorIndex = 0; /* white = 0, red = 2, green = 4, blue = 6, purple = 8 */ }; Q_DECLARE_METATYPE(Led) wiRedPanda-4.1.12/app/element/line.cpp000066400000000000000000000011211444020206400174500ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #include "line.h" #include "globalproperties.h" namespace { int id = qRegisterMetaType(); } Line::Line(QGraphicsItem *parent) : GraphicElement(ElementType::Line, ElementGroup::Other, ":/misc/line.svg", tr("LINE"), tr("Line"), 0, 0, 0, 0, parent) { if (GlobalProperties::skipInit) { return; } m_defaultSkins << m_pixmapPath; m_alternativeSkins = m_defaultSkins; setPixmap(0); setCanChangeSkin(true); setHasLabel(true); } wiRedPanda-4.1.12/app/element/line.h000066400000000000000000000004551444020206400171260ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include "graphicelement.h" class Line : public GraphicElement { Q_OBJECT public: explicit Line(QGraphicsItem *parent = nullptr); }; Q_DECLARE_METATYPE(Line) wiRedPanda-4.1.12/app/element/mux.cpp000066400000000000000000000016311444020206400173400ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #include "mux.h" #include "globalproperties.h" #include "qneport.h" namespace { int id = qRegisterMetaType(); } Mux::Mux(QGraphicsItem *parent) : GraphicElement(ElementType::Mux, ElementGroup::Mux, ":/basic/mux.svg", tr("MULTIPLEXER"), tr("Mux"), 3, 3, 1, 1, parent) { if (GlobalProperties::skipInit) { return; } m_defaultSkins << m_pixmapPath; m_alternativeSkins = m_defaultSkins; setPixmap(0); setCanChangeSkin(true); Mux::updatePortsProperties(); } void Mux::updatePortsProperties() { inputPort(0)->setPos(16, 16); inputPort(0)->setName("In0"); inputPort(1)->setPos(16, 48); inputPort(1)->setName("In1"); inputPort(2)->setPos(32, 56); inputPort(2)->setName("S"); outputPort(0)->setPos(48, 32); outputPort(0)->setName("Out"); } wiRedPanda-4.1.12/app/element/mux.h000066400000000000000000000005261444020206400170070ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include "graphicelement.h" class Mux : public GraphicElement { Q_OBJECT public: explicit Mux(QGraphicsItem *parent = nullptr); void updatePortsProperties() override; }; Q_DECLARE_METATYPE(Mux) wiRedPanda-4.1.12/app/element/nand.cpp000066400000000000000000000010721444020206400174460ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #include "nand.h" #include "globalproperties.h" namespace { int id = qRegisterMetaType(); } Nand::Nand(QGraphicsItem *parent) : GraphicElement(ElementType::Nand, ElementGroup::Gate, ":/basic/nand.svg", tr("NAND"), tr("Nand"), 2, 8, 1, 1, parent) { if (GlobalProperties::skipInit) { return; } m_defaultSkins << m_pixmapPath; m_alternativeSkins = m_defaultSkins; setPixmap(0); setCanChangeSkin(true); } wiRedPanda-4.1.12/app/element/nand.h000066400000000000000000000004551444020206400171170ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include "graphicelement.h" class Nand : public GraphicElement { Q_OBJECT public: explicit Nand(QGraphicsItem *parent = nullptr); }; Q_DECLARE_METATYPE(Nand) wiRedPanda-4.1.12/app/element/node.cpp000066400000000000000000000014031444020206400174510ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #include "node.h" #include "globalproperties.h" #include "qneport.h" namespace { int id = qRegisterMetaType(); } Node::Node(QGraphicsItem *parent) : GraphicElement(ElementType::Node, ElementGroup::Gate, ":/basic/node.svg", tr("NODE"), tr("Node"), 1, 1, 1, 1, parent) { if (GlobalProperties::skipInit) { return; } m_defaultSkins << m_pixmapPath; m_alternativeSkins = m_defaultSkins; setPixmap(0); setCanChangeSkin(true); inputPort()->setRequired(true); Node::updatePortsProperties(); } void Node::updatePortsProperties() { inputPort()->setPos( 0, 16); outputPort()->setPos(32, 16); } wiRedPanda-4.1.12/app/element/node.h000066400000000000000000000005311444020206400171170ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include "graphicelement.h" class Node : public GraphicElement { Q_OBJECT public: explicit Node(QGraphicsItem *parent = nullptr); void updatePortsProperties() override; }; Q_DECLARE_METATYPE(Node) wiRedPanda-4.1.12/app/element/nor.cpp000066400000000000000000000010621444020206400173230ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #include "nor.h" #include "globalproperties.h" namespace { int id = qRegisterMetaType(); } Nor::Nor(QGraphicsItem *parent) : GraphicElement(ElementType::Nor, ElementGroup::Gate, ":/basic/nor.svg", tr("NOR"), tr("Nor"), 2, 8, 1, 1, parent) { if (GlobalProperties::skipInit) { return; } m_defaultSkins << m_pixmapPath; m_alternativeSkins = m_defaultSkins; setPixmap(0); setCanChangeSkin(true); } wiRedPanda-4.1.12/app/element/nor.h000066400000000000000000000004521444020206400167720ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include "graphicelement.h" class Nor : public GraphicElement { Q_OBJECT public: explicit Nor(QGraphicsItem *parent = nullptr); }; Q_DECLARE_METATYPE(Nor) wiRedPanda-4.1.12/app/element/not.cpp000066400000000000000000000010621444020206400173250ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #include "not.h" #include "globalproperties.h" namespace { int id = qRegisterMetaType(); } Not::Not(QGraphicsItem *parent) : GraphicElement(ElementType::Not, ElementGroup::Gate, ":/basic/not.svg", tr("NOT"), tr("Not"), 1, 1, 1, 1, parent) { if (GlobalProperties::skipInit) { return; } m_defaultSkins << m_pixmapPath; m_alternativeSkins = m_defaultSkins; setPixmap(0); setCanChangeSkin(true); } wiRedPanda-4.1.12/app/element/not.h000066400000000000000000000004521444020206400167740ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include "graphicelement.h" class Not : public GraphicElement { Q_OBJECT public: explicit Not(QGraphicsItem *parent = nullptr); }; Q_DECLARE_METATYPE(Not) wiRedPanda-4.1.12/app/element/or.cpp000066400000000000000000000010521444020206400171440ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #include "or.h" #include "globalproperties.h" namespace { int id = qRegisterMetaType(); } Or::Or(QGraphicsItem *parent) : GraphicElement(ElementType::Or, ElementGroup::Gate, ":/basic/or.svg", tr("OR"), tr("Or"), 2, 8, 1, 1, parent) { if (GlobalProperties::skipInit) { return; } m_defaultSkins << m_pixmapPath; m_alternativeSkins = m_defaultSkins; setPixmap(0); setCanChangeSkin(true); } wiRedPanda-4.1.12/app/element/or.h000066400000000000000000000004471444020206400166200ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include "graphicelement.h" class Or : public GraphicElement { Q_OBJECT public: explicit Or(QGraphicsItem *parent = nullptr); }; Q_DECLARE_METATYPE(Or) wiRedPanda-4.1.12/app/element/srflipflop.cpp000066400000000000000000000032031444020206400207040ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #include "srflipflop.h" #include "globalproperties.h" #include "qneport.h" namespace { int id = qRegisterMetaType(); } SRFlipFlop::SRFlipFlop(QGraphicsItem *parent) : GraphicElement(ElementType::SRFlipFlop, ElementGroup::Memory, pixmapPath(), tr("SR-FLIPFLOP"), tr("SR-FlipFlop"), 5, 5, 2, 2, parent) { if (GlobalProperties::skipInit) { return; } m_defaultSkins << m_pixmapPath; m_alternativeSkins = m_defaultSkins; setPixmap(0); setCanChangeSkin(true); SRFlipFlop::updatePortsProperties(); } void SRFlipFlop::updatePortsProperties() { inputPort(0)->setPos( 0, 16); inputPort(0)->setName("S"); inputPort(1)->setPos( 0, 32); inputPort(1)->setName("Clock"); inputPort(2)->setPos( 0, 48); inputPort(2)->setName("R"); inputPort(3)->setPos(32, 0); inputPort(3)->setName("~Preset"); inputPort(4)->setPos(32, 64); inputPort(4)->setName("~Clear"); outputPort(0)->setPos(64, 16); outputPort(0)->setName("Q"); outputPort(1)->setPos(64, 48); outputPort(1)->setName("~Q"); inputPort(0)->setRequired(false); inputPort(2)->setRequired(false); inputPort(3)->setRequired(false); inputPort(4)->setRequired(false); inputPort(3)->setDefaultStatus(Status::Active); inputPort(4)->setDefaultStatus(Status::Active); outputPort(0)->setDefaultStatus(Status::Inactive); outputPort(1)->setDefaultStatus(Status::Active); } void SRFlipFlop::updateTheme() { setPixmap(pixmapPath()); GraphicElement::updateTheme(); } wiRedPanda-4.1.12/app/element/srflipflop.h000066400000000000000000000010401444020206400203460ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include "graphicelement.h" #include "thememanager.h" class SRFlipFlop : public GraphicElement { Q_OBJECT public: explicit SRFlipFlop(QGraphicsItem *parent = nullptr); static QString pixmapPath() { return ":/memory/" + ThemeManager::themePath() + "/SR-flipflop.svg"; } void updatePortsProperties() override; void updateTheme() override; }; Q_DECLARE_METATYPE(SRFlipFlop) wiRedPanda-4.1.12/app/element/text.cpp000066400000000000000000000011631444020206400175130ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #include "text.h" #include "globalproperties.h" namespace { int id = qRegisterMetaType(); } Text::Text(QGraphicsItem *parent) : GraphicElement(ElementType::Text, ElementGroup::Other, ":/misc/text.png", tr("TEXT"), tr("Text"), 0, 0, 0, 0, parent) { if (GlobalProperties::skipInit) { return; } m_defaultSkins = QStringList{ ":/misc/no_text.png", ":/misc/text.png", }; m_alternativeSkins = m_defaultSkins; setPixmap(0); setHasLabel(true); } wiRedPanda-4.1.12/app/element/text.h000066400000000000000000000004551444020206400171630ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include "graphicelement.h" class Text : public GraphicElement { Q_OBJECT public: explicit Text(QGraphicsItem *parent = nullptr); }; Q_DECLARE_METATYPE(Text) wiRedPanda-4.1.12/app/element/tflipflop.cpp000066400000000000000000000030211444020206400205210ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #include "tflipflop.h" #include "globalproperties.h" #include "qneport.h" namespace { int id = qRegisterMetaType(); } TFlipFlop::TFlipFlop(QGraphicsItem *parent) : GraphicElement(ElementType::TFlipFlop, ElementGroup::Memory, pixmapPath(), tr("T-FLIPFLOP"), tr("T-FlipFlop"), 4, 4, 2, 2, parent) { if (GlobalProperties::skipInit) { return; } m_defaultSkins << m_pixmapPath; m_alternativeSkins = m_defaultSkins; setPixmap(0); setCanChangeSkin(true); TFlipFlop::updatePortsProperties(); } void TFlipFlop::updatePortsProperties() { inputPort(0)->setPos( 0, 16); inputPort(0)->setName("T"); inputPort(1)->setPos( 0, 48); inputPort(1)->setName("Clock"); inputPort(2)->setPos(32, 0); inputPort(2)->setName("~Preset"); inputPort(3)->setPos(32, 64); inputPort(3)->setName("~Clear"); outputPort(0)->setPos(64, 16); outputPort(0)->setName("Q"); outputPort(1)->setPos(64, 48); outputPort(1)->setName("~Q"); inputPort(0)->setRequired(false); inputPort(2)->setRequired(false); inputPort(3)->setRequired(false); inputPort(2)->setDefaultStatus(Status::Active); inputPort(3)->setDefaultStatus(Status::Active); outputPort(0)->setDefaultStatus(Status::Inactive); outputPort(1)->setDefaultStatus(Status::Active); } void TFlipFlop::updateTheme() { setPixmap(pixmapPath()); GraphicElement::updateTheme(); } wiRedPanda-4.1.12/app/element/tflipflop.h000066400000000000000000000010341444020206400201700ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include "graphicelement.h" #include "thememanager.h" class TFlipFlop : public GraphicElement { Q_OBJECT public: explicit TFlipFlop(QGraphicsItem *parent = nullptr); static QString pixmapPath() { return ":/memory/" + ThemeManager::themePath() + "/T-flipflop.svg"; } void updatePortsProperties() override; void updateTheme() override; }; Q_DECLARE_METATYPE(TFlipFlop) wiRedPanda-4.1.12/app/element/xnor.cpp000066400000000000000000000010721444020206400175140ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #include "xnor.h" #include "globalproperties.h" namespace { int id = qRegisterMetaType(); } Xnor::Xnor(QGraphicsItem *parent) : GraphicElement(ElementType::Xnor, ElementGroup::Gate, ":/basic/xnor.svg", tr("XNOR"), tr("Xnor"), 2, 8, 1, 1, parent) { if (GlobalProperties::skipInit) { return; } m_defaultSkins << m_pixmapPath; m_alternativeSkins = m_defaultSkins; setPixmap(0); setCanChangeSkin(true); } wiRedPanda-4.1.12/app/element/xnor.h000066400000000000000000000004551444020206400171650ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include "graphicelement.h" class Xnor : public GraphicElement { Q_OBJECT public: explicit Xnor(QGraphicsItem *parent = nullptr); }; Q_DECLARE_METATYPE(Xnor) wiRedPanda-4.1.12/app/element/xor.cpp000066400000000000000000000010621444020206400173350ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #include "xor.h" #include "globalproperties.h" namespace { int id = qRegisterMetaType(); } Xor::Xor(QGraphicsItem *parent) : GraphicElement(ElementType::Xor, ElementGroup::Gate, ":/basic/xor.svg", tr("XOR"), tr("Xor"), 2, 8, 1, 1, parent) { if (GlobalProperties::skipInit) { return; } m_defaultSkins << m_pixmapPath; m_alternativeSkins = m_defaultSkins; setPixmap(0); setCanChangeSkin(true); } wiRedPanda-4.1.12/app/element/xor.h000066400000000000000000000004521444020206400170040ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include "graphicelement.h" class Xor : public GraphicElement { Q_OBJECT public: explicit Xor(QGraphicsItem *parent = nullptr); }; Q_DECLARE_METATYPE(Xor) wiRedPanda-4.1.12/app/elementeditor.cpp000066400000000000000000000734661444020206400177550ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #include "elementeditor.h" #include "ui_elementeditor.h" #include "commands.h" #include "common.h" #include "elementfactory.h" #include "inputrotary.h" #include "scene.h" #include "thememanager.h" #include #include #include #include #include ElementEditor::ElementEditor(QWidget *parent) : QWidget(parent) , m_ui(new Ui::ElementEditor) { m_ui->setupUi(this); setEnabled(false); hide(); m_ui->lineEditTrigger->setValidator(new QRegularExpressionValidator(QRegularExpression("[a-z]| |[A-Z]|[0-9]"), this)); fillColorComboBox(); m_ui->checkBoxLocked->installEventFilter(this); m_ui->comboBoxAudio->installEventFilter(this); m_ui->comboBoxColor->installEventFilter(this); m_ui->comboBoxInputSize->installEventFilter(this); m_ui->comboBoxOutputSize->installEventFilter(this); m_ui->comboBoxValue->installEventFilter(this); m_ui->doubleSpinBoxFrequency->installEventFilter(this); m_ui->lineEditElementLabel->installEventFilter(this); m_ui->lineEditTrigger->installEventFilter(this); m_ui->spinBoxPriority->installEventFilter(this); connect(m_ui->checkBoxLocked, &QCheckBox::clicked, this, &ElementEditor::inputLocked); connect(m_ui->comboBoxAudio, qOverload(&QComboBox::currentIndexChanged), this, &ElementEditor::apply); connect(m_ui->comboBoxColor, qOverload(&QComboBox::currentIndexChanged), this, &ElementEditor::apply); connect(m_ui->comboBoxInputSize, qOverload(&QComboBox::currentIndexChanged), this, &ElementEditor::inputIndexChanged); connect(m_ui->comboBoxOutputSize, qOverload(&QComboBox::currentIndexChanged), this, &ElementEditor::outputIndexChanged); connect(m_ui->comboBoxValue, &QComboBox::currentTextChanged, this, &ElementEditor::outputValueChanged); connect(m_ui->doubleSpinBoxFrequency, qOverload(&QDoubleSpinBox::valueChanged), this, &ElementEditor::apply); connect(m_ui->lineEditElementLabel, &QLineEdit::textChanged, this, &ElementEditor::apply); connect(m_ui->lineEditTrigger, &QLineEdit::textChanged, this, &ElementEditor::triggerChanged); connect(m_ui->pushButtonChangeSkin, &QPushButton::clicked, this, &ElementEditor::updateElementSkin); connect(m_ui->pushButtonDefaultSkin, &QPushButton::clicked, this, &ElementEditor::defaultSkin); connect(m_ui->spinBoxPriority, qOverload(&QSpinBox::valueChanged), this, &ElementEditor::priorityChanged); } ElementEditor::~ElementEditor() { delete m_ui; } QAction *addElementAction(QMenu *menu, GraphicElement *selectedElm, ElementType type, const bool hasSameType) { if (hasSameType && (selectedElm->elementType() == type)) { return nullptr; } auto *action = menu->addAction(QIcon(ElementFactory::pixmap(type)), ElementFactory::translatedName(type)); action->setData(static_cast(type)); return action; } void ElementEditor::contextMenu(QPoint screenPos, QGraphicsItem *itemAtMouse) { QMenu menu; QString changeSkinText(tr("Change skin to ...")); QString colorMenuText(tr("Change color to...")); QString frequencyText(tr("Change frequency")); QString morphMenuText(tr("Morph to...")); QString priorityText(tr("Change priority")); QString renameText(tr("Rename")); QString revertSkinText(tr("Set skin to default")); QString rotateLeftText(tr("Rotate left")); QString rotateRightText(tr("Rotate right")); QString triggerText(tr("Change trigger")); menu.addAction(priorityText)->setData(priorityText); if (m_hasLabel) { menu.addAction(QIcon(QPixmap(":/toolbar/rename.svg")), renameText)->setData(renameText); } if (m_hasTrigger) { menu.addAction(QIcon(ElementFactory::pixmap(ElementType::InputButton)), triggerText)->setData(triggerText); } if (m_canChangeSkin) { menu.addAction(changeSkinText); menu.addAction(revertSkinText); } menu.addAction(QIcon(QPixmap(":/toolbar/rotateL.svg")), rotateLeftText)->setData(rotateLeftText); menu.addAction(QIcon(QPixmap(":/toolbar/rotateR.svg")), rotateRightText)->setData(rotateRightText); if (m_hasFrequency) { menu.addAction(QIcon(ElementFactory::pixmap(ElementType::Clock)), frequencyText)->setData(frequencyText); } QMenu *submenuColors = nullptr; if (m_hasColors) { submenuColors = menu.addMenu(colorMenuText); for (int i = 0; i < m_ui->comboBoxColor->count(); ++i) { if (m_ui->comboBoxColor->currentIndex() != i) { submenuColors->addAction(m_ui->comboBoxColor->itemIcon(i), m_ui->comboBoxColor->itemText(i)); } } } QMenu *submenuMorph = nullptr; if (auto *selectedElm = dynamic_cast(itemAtMouse); selectedElm && m_canMorph) { submenuMorph = menu.addMenu(morphMenuText); switch (selectedElm->elementGroup()) { case ElementGroup::Gate: { if (selectedElm->inputSize() == 1) { addElementAction(submenuMorph, selectedElm, ElementType::Node, m_hasSameType); addElementAction(submenuMorph, selectedElm, ElementType::Not, m_hasSameType); } else { addElementAction(submenuMorph, selectedElm, ElementType::And, m_hasSameType); addElementAction(submenuMorph, selectedElm, ElementType::Nand, m_hasSameType); addElementAction(submenuMorph, selectedElm, ElementType::Nor, m_hasSameType); addElementAction(submenuMorph, selectedElm, ElementType::Or, m_hasSameType); addElementAction(submenuMorph, selectedElm, ElementType::Xnor, m_hasSameType); addElementAction(submenuMorph, selectedElm, ElementType::Xor, m_hasSameType); } break; } case ElementGroup::StaticInput: [[fallthrough]]; case ElementGroup::Input: { addElementAction(submenuMorph, selectedElm, ElementType::Clock, m_hasSameType); addElementAction(submenuMorph, selectedElm, ElementType::InputButton, m_hasSameType); addElementAction(submenuMorph, selectedElm, ElementType::InputGnd, m_hasSameType); addElementAction(submenuMorph, selectedElm, ElementType::InputRotary, m_hasSameType); addElementAction(submenuMorph, selectedElm, ElementType::InputSwitch, m_hasSameType); addElementAction(submenuMorph, selectedElm, ElementType::InputVcc, m_hasSameType); break; } case ElementGroup::Memory: { if (selectedElm->inputSize() == 2) { addElementAction(submenuMorph, selectedElm, ElementType::DLatch, m_hasSameType); break; } if (selectedElm->inputSize() == 4) { addElementAction(submenuMorph, selectedElm, ElementType::DFlipFlop, m_hasSameType); addElementAction(submenuMorph, selectedElm, ElementType::TFlipFlop, m_hasSameType); break; } if (selectedElm->inputSize() == 5) { addElementAction(submenuMorph, selectedElm, ElementType::JKFlipFlop, m_hasSameType); addElementAction(submenuMorph, selectedElm, ElementType::SRFlipFlop, m_hasSameType); } break; } case ElementGroup::Output: { if ((selectedElm->elementType() == ElementType::Display7) || (selectedElm->elementType() == ElementType::Display14)) { addElementAction(submenuMorph, selectedElm, ElementType::Display7, m_hasSameType); addElementAction(submenuMorph, selectedElm, ElementType::Display14, m_hasSameType); } else { addElementAction(submenuMorph, selectedElm, ElementType::Buzzer, m_hasSameType); addElementAction(submenuMorph, selectedElm, ElementType::Led, m_hasSameType); } break; } case ElementGroup::IC: [[fallthrough]]; case ElementGroup::Mux: [[fallthrough]]; case ElementGroup::Other: [[fallthrough]]; case ElementGroup::Unknown: break; } if (submenuMorph->actions().empty()) { menu.removeAction(submenuMorph->menuAction()); } } menu.addSeparator(); if (m_hasElements) { QAction *copyAction = menu.addAction(QIcon(QPixmap(":/toolbar/copy.svg")), tr("Copy")); QAction *cutAction = menu.addAction(QIcon(QPixmap(":/toolbar/cut.svg")), tr("Cut")); connect(copyAction, &QAction::triggered, m_scene, &Scene::copyAction); connect(cutAction, &QAction::triggered, m_scene, &Scene::cutAction); } QAction *deleteAction = menu.addAction(QIcon(QPixmap(":/toolbar/delete.svg")), tr("Delete")); connect(deleteAction, &QAction::triggered, m_scene, &Scene::deleteAction); QAction *action = menu.exec(screenPos); if (!action) { return; } const QString actionData = action->data().toString(); const QString actionText = action->text(); if (actionData == renameText) { renameAction(); return; } if (actionData == rotateLeftText) { emit sendCommand(new RotateCommand(m_elements, -90.0, m_scene)); return; } if (actionData == rotateRightText) { emit sendCommand(new RotateCommand(m_elements, 90.0, m_scene)); return; } if (actionData == triggerText) { changeTriggerAction(); return; } if (actionData == priorityText) { updatePriorityAction(); return; } if (actionText == changeSkinText) { updateElementSkin(); return; } if (actionText == revertSkinText) { m_isDefaultSkin = true; m_isUpdatingSkin = true; apply(); return; } if (actionData == frequencyText) { m_ui->doubleSpinBoxFrequency->setFocus(); return; } if (submenuMorph && submenuMorph->actions().contains(action)) { if (auto type = static_cast(action->data().toInt()); type != ElementType::Unknown) { emit sendCommand(new MorphCommand(m_elements, type, m_scene)); } return; } if (submenuColors && submenuColors->actions().contains(action)) { m_ui->comboBoxColor->setCurrentText(action->text()); return; } if ((actionText == tr("Copy")) || (actionText == tr("Cut")) || (actionText == tr("Delete"))) { return; } throw Pandaception(tr("Unknown context menu option.")); } void ElementEditor::renameAction() { m_ui->lineEditElementLabel->setFocus(); m_ui->lineEditElementLabel->selectAll(); } void ElementEditor::changeTriggerAction() { m_ui->lineEditTrigger->setFocus(); m_ui->lineEditTrigger->selectAll(); } void ElementEditor::updatePriorityAction() { m_ui->spinBoxPriority->setFocus(); m_ui->spinBoxPriority->selectAll(); } void ElementEditor::updateElementSkin() { QFileDialog fileDialog; fileDialog.setObjectName(tr("Open File")); fileDialog.setFileMode(QFileDialog::ExistingFile); fileDialog.setNameFilter(tr("Images (*.png *.gif *.jpg *.jpeg)")); if (fileDialog.exec() == QDialog::Rejected) { return; } const auto files = fileDialog.selectedFiles(); QString fileName = files.constFirst(); if (fileName.isEmpty()) { return; } qCDebug(zero) << tr("File name: ") << fileName; m_isUpdatingSkin = true; m_skinName = fileName; m_isDefaultSkin = false; apply(); } void ElementEditor::setScene(Scene *scene) { if (m_scene) { disconnect(m_scene, &QGraphicsScene::selectionChanged, this, &ElementEditor::selectionChanged); disconnect(m_scene, &Scene::contextMenuPos, this, &ElementEditor::contextMenu); disconnect(this, &ElementEditor::sendCommand, m_scene, &Scene::receiveCommand); } m_scene = scene; if (m_scene) { connect(m_scene, &QGraphicsScene::selectionChanged, this, &ElementEditor::selectionChanged); connect(m_scene, &Scene::contextMenuPos, this, &ElementEditor::contextMenu); connect(this, &ElementEditor::sendCommand, m_scene, &Scene::receiveCommand); } } void ElementEditor::fillColorComboBox() { QSignalBlocker blocker(m_ui->comboBoxColor); m_ui->comboBoxColor->clear(); m_ui->comboBoxColor->addItem(QIcon(QPixmap(":/output/led/WhiteLed.svg")), tr("White"), "White"); m_ui->comboBoxColor->addItem(QIcon(QPixmap(":/output/led/RedLed.svg")), tr("Red"), "Red"); m_ui->comboBoxColor->addItem(QIcon(QPixmap(":/output/led/GreenLed.svg")), tr("Green"), "Green"); m_ui->comboBoxColor->addItem(QIcon(QPixmap(":/output/led/BlueLed.svg")), tr("Blue"), "Blue"); m_ui->comboBoxColor->addItem(QIcon(QPixmap(":/output/led/PurpleLed.svg")), tr("Purple"), "Purple"); } void ElementEditor::retranslateUi() { m_ui->retranslateUi(this); fillColorComboBox(); if (m_scene) { selectionChanged(); } } void ElementEditor::setCurrentElements(const QList &elements) { m_elements = elements; m_hasLabel = m_hasColors = m_hasAudio = m_hasFrequency = m_canChangeInputSize = m_canChangeOutputSize = m_hasTrigger = false; m_hasRotation = m_hasSameLabel = m_hasSameColors = m_hasSameFrequency = m_hasSameAudio = m_hasOnlyInputs = false; m_hasSameInputSize = m_hasSameOutputSize = m_hasSameOutputValue = m_hasSameTrigger = m_canMorph = m_hasSameType = false; m_canChangeSkin = m_hasSamePriority = false; m_hasElements = false; if (elements.isEmpty()) { hide(); m_ui->lineEditElementLabel->setText(""); return; } bool sameCheckState = true; m_hasLabel = m_hasColors = m_hasAudio = m_hasFrequency = m_canChangeInputSize = m_canChangeOutputSize = m_hasTrigger = true; m_hasSameInputSize = m_hasSameOutputSize = m_hasSameOutputValue = m_hasSameTrigger = m_canMorph = m_hasSameType = true; m_hasRotation = m_hasSameLabel = m_hasSameColors = m_hasSameFrequency = m_hasSameAudio = m_hasOnlyInputs = true; m_canChangeSkin = m_hasSamePriority = true; m_hasElements = true; show(); setEnabled(false); int minimumInputs = 0; int maximumInputs = 100000000; int minimumOutputs = 0; int maximumOutputs = 100000000; int maxCurrentOutputSize = 100000000; auto *firstElement = m_elements.constFirst(); auto *firstInput = qobject_cast(firstElement); auto elementType = firstElement->elementType(); for (auto *elm : qAsConst(m_elements)) { const auto group = elm->elementGroup(); const auto firstGroup = firstElement->elementGroup(); m_hasLabel &= elm->hasLabel(); m_canChangeSkin &= elm->canChangeSkin(); m_hasColors &= elm->hasColors(); m_hasAudio &= elm->hasAudio(); m_hasFrequency &= elm->hasFrequency(); minimumInputs = std::max(minimumInputs, elm->minInputSize()); maximumInputs = std::min(maximumInputs, elm->maxInputSize()); minimumOutputs = std::max(minimumOutputs, elm->minOutputSize()); maximumOutputs = std::min(maximumOutputs, elm->maxOutputSize()); m_hasTrigger &= elm->hasTrigger(); m_hasRotation &= elm->isRotatable(); m_hasSameLabel &= (elm->label() == firstElement->label()); m_hasSameColors &= (elm->color() == firstElement->color()); m_hasSameFrequency &= qFuzzyCompare(elm->frequency(), firstElement->frequency()); m_hasSameInputSize &= (elm->inputSize() == firstElement->inputSize()); m_hasSameOutputSize &= (elm->outputSize() == firstElement->outputSize()); maxCurrentOutputSize = std::min(maxCurrentOutputSize, elm->outputSize()); if (auto *elmInput = qobject_cast(elm); elmInput && (group == ElementGroup::Input) && (firstElement->elementGroup() == ElementGroup::Input)) { m_hasSameOutputValue &= (elmInput->outputValue() == firstInput->outputValue()); sameCheckState &= (elmInput->isLocked() == firstInput->isLocked()); } m_hasSameTrigger &= (elm->trigger() == firstElement->trigger()); m_hasSameType &= (elm->elementType() == firstElement->elementType()); m_hasSameAudio &= (elm->audio() == firstElement->audio()); m_hasSamePriority &= (elm->priority() == firstElement->priority()); bool sameElementGroup = (group == firstGroup); sameElementGroup |= (group == ElementGroup::Input && (firstGroup == ElementGroup::StaticInput)); sameElementGroup |= (group == ElementGroup::StaticInput && (firstGroup == ElementGroup::Input)); m_hasOnlyInputs &= (group == ElementGroup::Input); m_canMorph &= sameElementGroup; } if (!m_hasSameType) { elementType = ElementType::Unknown; } m_canChangeInputSize = (minimumInputs < maximumInputs); m_canChangeOutputSize = (minimumOutputs < maximumOutputs); /* Element type */ m_ui->groupBox->setTitle(ElementFactory::typeToTitleText(elementType)); /* Labels */ m_ui->lineEditElementLabel->setVisible(m_hasLabel); m_ui->lineEditElementLabel->setEnabled(m_hasLabel); m_ui->labelLabels->setVisible(m_hasLabel); if (m_hasLabel) { m_ui->lineEditElementLabel->setText(m_hasSameLabel ? firstElement->label() : m_manyLabels); } /* Color */ m_ui->labelColor->setVisible(m_hasColors); m_ui->comboBoxColor->setVisible(m_hasColors); m_ui->comboBoxColor->setEnabled(m_hasColors); if (m_ui->comboBoxColor->findText(m_manyColors) == -1) { m_ui->comboBoxColor->addItem(m_manyColors); } if (m_hasColors) { if (m_hasSameColors) { m_ui->comboBoxColor->removeItem(m_ui->comboBoxColor->findText(m_manyColors)); m_ui->comboBoxColor->setCurrentIndex(m_ui->comboBoxColor->findData(firstElement->color())); } else { m_ui->comboBoxColor->setCurrentText(m_manyColors); } } /* Sound */ m_ui->labelAudio->setVisible(m_hasAudio); m_ui->comboBoxAudio->setVisible(m_hasAudio); m_ui->comboBoxAudio->setEnabled(m_hasAudio); if (m_ui->comboBoxAudio->findText(m_manyAudios) == -1) { m_ui->comboBoxAudio->addItem(m_manyAudios); } if (m_hasAudio) { if (m_hasSameAudio) { m_ui->comboBoxAudio->removeItem(m_ui->comboBoxAudio->findText(m_manyAudios)); m_ui->comboBoxAudio->setCurrentText(firstElement->audio()); } else { m_ui->comboBoxAudio->setCurrentText(m_manyAudios); } } /* Priority */ if (m_hasSamePriority) { m_ui->spinBoxPriority->setValue(firstElement->priority()); } else { m_ui->spinBoxPriority->setValue(0); } /* Frequency */ m_ui->doubleSpinBoxFrequency->setVisible(m_hasFrequency); m_ui->doubleSpinBoxFrequency->setEnabled(m_hasFrequency); m_ui->labelFrequency->setVisible(m_hasFrequency); if (m_hasFrequency) { if (m_hasSameFrequency) { m_ui->doubleSpinBoxFrequency->setMinimum(0.1); m_ui->doubleSpinBoxFrequency->setSpecialValueText({}); m_ui->doubleSpinBoxFrequency->setValue(static_cast(firstElement->frequency())); } else { m_ui->doubleSpinBoxFrequency->setMinimum(0.0); m_ui->doubleSpinBoxFrequency->setSpecialValueText(m_manyFreq); m_ui->doubleSpinBoxFrequency->setValue(0.0); } } /* Input size */ m_ui->comboBoxInputSize->clear(); m_ui->labelInputs->setVisible(m_canChangeInputSize); m_ui->comboBoxInputSize->setVisible(m_canChangeInputSize); m_ui->comboBoxInputSize->setEnabled(m_canChangeInputSize); for (int port = minimumInputs; port <= maximumInputs; ++port) { m_ui->comboBoxInputSize->addItem(QString::number(port), port); } if (m_ui->comboBoxInputSize->findText(m_manyIS) == -1) { m_ui->comboBoxInputSize->addItem(m_manyIS); } if (m_canChangeInputSize) { if (m_hasSameInputSize) { m_ui->comboBoxInputSize->removeItem(m_ui->comboBoxInputSize->findText(m_manyIS)); QString inputSize = QString::number(firstElement->inputSize()); m_ui->comboBoxInputSize->setCurrentText(inputSize); } else { m_ui->comboBoxInputSize->setCurrentText(m_manyIS); } } /* Output size */ m_ui->comboBoxOutputSize->clear(); m_ui->labelOutputs->setVisible(m_canChangeOutputSize); m_ui->comboBoxOutputSize->setVisible(m_canChangeOutputSize); m_ui->comboBoxOutputSize->setEnabled(m_canChangeOutputSize); if (m_canChangeOutputSize) { m_ui->comboBoxOutputSize->addItem("2", 2); m_ui->comboBoxOutputSize->addItem("3", 3); m_ui->comboBoxOutputSize->addItem("4", 4); m_ui->comboBoxOutputSize->addItem("6", 6); m_ui->comboBoxOutputSize->addItem("8", 8); m_ui->comboBoxOutputSize->addItem("10", 10); m_ui->comboBoxOutputSize->addItem("12", 12); m_ui->comboBoxOutputSize->addItem("16", 16); } if (m_ui->comboBoxOutputSize->findText(m_manyOS) == -1) { m_ui->comboBoxOutputSize->addItem(m_manyOS); } if (m_canChangeOutputSize) { if (m_hasSameOutputSize) { m_ui->comboBoxOutputSize->removeItem(m_ui->comboBoxOutputSize->findText(m_manyOS)); QString outputSize = QString::number(firstElement->outputSize()); m_ui->comboBoxOutputSize->setCurrentText(outputSize); } else { m_ui->comboBoxOutputSize->setCurrentText(m_manyOS); } } /* Output value */ m_ui->comboBoxValue->clear(); m_ui->labelValue->setVisible(m_hasOnlyInputs); m_ui->comboBoxValue->setVisible(m_hasOnlyInputs); m_ui->comboBoxValue->setEnabled(m_hasOnlyInputs); if (m_hasOnlyInputs) { if (maxCurrentOutputSize == 1) { maxCurrentOutputSize++; } for (int val = 0; val < maxCurrentOutputSize; ++val) { m_ui->comboBoxValue->addItem(QString::number(val), val); } } if (m_ui->comboBoxValue->findText(m_manyOV) == -1) { m_ui->comboBoxValue->addItem(m_manyOV); } if (m_hasOnlyInputs) { if (m_hasSameOutputValue) { m_ui->comboBoxValue->removeItem(m_ui->comboBoxValue->findText(m_manyOV)); QString outputValue = QString::number(firstInput->outputValue()); m_ui->comboBoxValue->setCurrentText(outputValue); } else { m_ui->comboBoxValue->setCurrentText(m_manyOV); } } /* Input locked */ m_ui->labelLocked->setVisible(m_hasOnlyInputs); m_ui->checkBoxLocked->setVisible(m_hasOnlyInputs); m_ui->checkBoxLocked->setEnabled(m_hasOnlyInputs); if (m_hasOnlyInputs) { if (sameCheckState) { m_ui->checkBoxLocked->setCheckState(firstInput->isLocked() ? Qt::CheckState::Checked : Qt::CheckState::Unchecked); } else { m_ui->checkBoxLocked->setCheckState(Qt::CheckState::PartiallyChecked); } } /* Trigger */ m_ui->lineEditTrigger->setVisible(m_hasTrigger); m_ui->lineEditTrigger->setEnabled(m_hasTrigger); m_ui->labelTrigger->setVisible(m_hasTrigger); if (m_hasTrigger) { m_ui->lineEditTrigger->setText(m_hasSameTrigger ? firstElement->trigger().toString() : m_manyTriggers); } setEnabled(true); show(); /* Skin */ m_ui->pushButtonChangeSkin->setVisible(m_canChangeSkin); m_ui->pushButtonDefaultSkin->setVisible(m_canChangeSkin); } void ElementEditor::selectionChanged() { setCurrentElements(m_scene->selectedElements()); } void ElementEditor::apply() { qCDebug(three) << tr("Apply."); if (m_elements.isEmpty() || !isEnabled()) { return; } QByteArray oldData; QDataStream stream(&oldData, QIODevice::WriteOnly); stream.setVersion(QDataStream::Qt_5_12); for (auto *elm : qAsConst(m_elements)) { elm->save(stream); elm->setPriority(m_ui->spinBoxPriority->value()); if (elm->hasColors() && m_ui->comboBoxColor->currentData().isValid()) { elm->setColor(m_ui->comboBoxColor->currentData().toString()); } if (elm->hasAudio() && (m_ui->comboBoxAudio->currentText() != m_manyAudios)) { elm->setAudio(m_ui->comboBoxAudio->currentText()); } if (elm->hasLabel() && (m_ui->lineEditElementLabel->text() != m_manyLabels)) { elm->setLabel(m_ui->lineEditElementLabel->text()); } if (elm->hasFrequency() && (m_ui->doubleSpinBoxFrequency->text() != m_manyFreq)) { elm->setFrequency(static_cast(m_ui->doubleSpinBoxFrequency->value())); } if (elm->hasTrigger() && (m_ui->lineEditTrigger->text() != m_manyTriggers)) { if (m_ui->lineEditTrigger->text().size() <= 1) { elm->setTrigger(QKeySequence(m_ui->lineEditTrigger->text())); } } if (m_isUpdatingSkin) { elm->setSkin(m_isDefaultSkin, m_skinName); } } if (m_isUpdatingSkin) { m_isUpdatingSkin = false; } emit sendCommand(new UpdateCommand(m_elements, oldData, m_scene)); } void ElementEditor::inputIndexChanged(const int index) { if (m_elements.isEmpty() || !isEnabled()) { return; } if (m_canChangeInputSize && (m_ui->comboBoxInputSize->currentText() != m_manyIS)) { emit sendCommand(new ChangeInputSizeCommand(m_elements, m_ui->comboBoxInputSize->currentData().toInt(), m_scene)); } qCDebug(zero) << tr("Input size changed to ") << index; update(); } void ElementEditor::outputIndexChanged(const int index) { if (m_elements.isEmpty() || !isEnabled()) { return; } if (m_canChangeOutputSize && (m_ui->comboBoxOutputSize->currentText() != m_manyOS)) { emit sendCommand(new ChangeOutputSizeCommand(m_elements, m_ui->comboBoxOutputSize->currentData().toInt(), m_scene)); } qCDebug(zero) << tr("Output size changed to ") << index; update(); } void ElementEditor::outputValueChanged(const QString &value) { if (m_elements.isEmpty() || !isEnabled()) { return; } const int newValue = value.toInt(); for (auto *elm : qAsConst(m_elements)) { if (elm->elementType() == ElementType::InputRotary) { if (auto *input = qobject_cast(elm)) { input->setOn(true, newValue); } } else { if (auto *input = qobject_cast(elm)) { input->setOn(static_cast(newValue)); } } } apply(); } void ElementEditor::inputLocked(const bool value) { if (m_elements.isEmpty() || !isEnabled()) { return; } for (auto *elm : qAsConst(m_elements)) { if (auto *input = qobject_cast(elm)) { input->setLocked(value); } } qCDebug(zero) << tr("Input locked."); apply(); } void ElementEditor::triggerChanged(const QString &cmd) { m_ui->lineEditTrigger->setText(cmd.toUpper()); apply(); } void ElementEditor::priorityChanged(const int value) { m_ui->spinBoxPriority->setValue(value); apply(); } bool ElementEditor::eventFilter(QObject *obj, QEvent *event) { if (event->type() == QEvent::KeyPress) { auto *keyEvent = dynamic_cast(event); if (keyEvent && (m_elements.size() == 1)) { const bool moveFwd = (keyEvent->key() == Qt::Key_Tab); const bool moveBack = (keyEvent->key() == Qt::Key_Backtab); if (moveBack || moveFwd) { auto *elm = m_elements.constFirst(); auto elements = m_scene->visibleElements(); std::stable_sort(elements.begin(), elements.end(), [](const auto &elm1, const auto &elm2) { return elm1->pos().ry() < elm2->pos().ry(); }); std::stable_sort(elements.begin(), elements.end(), [](const auto &elm1, const auto &elm2) { return elm1->pos().rx() < elm2->pos().rx(); }); const int elmPos = elements.indexOf(elm); qCDebug(zero) << tr("Pos = ") << elmPos << tr(" from ") << elements.size(); int step = 1; if (moveBack) { step = -1; } auto *widget = qobject_cast(obj); int pos = (elements.size() + elmPos + step) % elements.size(); for (; pos != elmPos; pos = ((elements.size() + pos + step) % elements.size())) { qCDebug(zero) << tr("Pos = ") << pos; elm = elements.at(pos); setCurrentElements({elm}); if (widget->isEnabled()) { break; } } m_scene->clearSelection(); if (!widget->isEnabled()) { elm = elements.at(elmPos); } elm->setSelected(true); elm->ensureVisible(); widget->setFocus(); event->accept(); return true; } } } return QWidget::eventFilter(obj, event); } void ElementEditor::defaultSkin() { m_isUpdatingSkin = true; m_isDefaultSkin = true; apply(); } void ElementEditor::update() { setCurrentElements(m_elements); } void ElementEditor::updateTheme() { const QString borderColor = (ThemeManager::theme() == Theme::Light) ? "216" : "66"; const QString styleSheet = "QGroupBox {" " border: 1px solid rgb(%1,%1,%1);" " border-radius: 2px;" " margin-top: 8px;" "}" "" "QGroupBox::title {" " subcontrol-origin: margin;" " subcontrol-position: top;" "}"; m_ui->groupBox->setStyleSheet(styleSheet.arg(borderColor)); } wiRedPanda-4.1.12/app/elementeditor.h000066400000000000000000000051641444020206400174100ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include "scene.h" #include namespace Ui { class ElementEditor; } class ElementEditor : public QWidget { Q_OBJECT public: explicit ElementEditor(QWidget *parent = nullptr); ~ElementEditor() override; bool eventFilter(QObject *obj, QEvent *event) override; void changeTriggerAction(); void contextMenu(QPoint screenPos, QGraphicsItem *itemAtMouse); void fillColorComboBox(); void renameAction(); void retranslateUi(); void setScene(Scene *scene); void update(); void updateElementSkin(); void updatePriorityAction(); void updateTheme(); signals: void sendCommand(QUndoCommand *cmd); private: Q_DISABLE_COPY(ElementEditor) void apply(); void defaultSkin(); void inputIndexChanged(const int index); void inputLocked(const bool value); void outputIndexChanged(const int index); void outputValueChanged(const QString &value); void selectionChanged(); void setCurrentElements(const QList &elements); void triggerChanged(const QString &cmd); void priorityChanged(const int value); void updateSkins(); Ui::ElementEditor *m_ui; QList m_elements; QString m_manyAudios = tr(""); QString m_manyColors = tr(""); QString m_manyFreq = tr(""); QString m_manyIS = tr(""); QString m_manyLabels = tr(""); QString m_manyOS = tr(""); QString m_manyOV = tr(""); QString m_manyPriorities = tr(""); QString m_manyTriggers = tr(""); QString m_skinName; Scene *m_scene = nullptr; bool m_canChangeInputSize = false; bool m_canChangeOutputSize = false; bool m_canChangeSkin = false; bool m_canMorph = false; bool m_hasAnyProperty = false; bool m_hasAudio = false; bool m_hasColors = false; bool m_hasElements = false; bool m_hasFrequency = false; bool m_hasLabel = false; bool m_hasOnlyInputs = false; bool m_hasRotation = false; bool m_hasSameAudio = false; bool m_hasSameColors = false; bool m_hasSameFrequency = false; bool m_hasSameInputSize = false; bool m_hasSameLabel = false; bool m_hasSameOutputSize = false; bool m_hasSameOutputValue = false; bool m_hasSamePriority = false; bool m_hasSameTrigger = false; bool m_hasSameType = false; bool m_hasTrigger = false; bool m_isDefaultSkin = true; bool m_isUpdatingSkin = false; }; wiRedPanda-4.1.12/app/elementeditor.ui000066400000000000000000000163161444020206400175770ustar00rootroot00000000000000 ElementEditor 0 0 205 346 Form 0 0 0 0 0 true Title Input Ports: Value: Audio: Trigger: Output Ports: Frequency: Label: Color: C6 D6 E6 F6 G6 A7 B7 C7 Hz 1 0.000000000000000 50.000000000000000 0.100000000000000 QLayout::SetNoConstraint Change skin to ... 0 0 Default :/toolbar/default.svg:/toolbar/default.svg 16 16 Locked: Priority: 9 wiRedPanda-4.1.12/app/elementfactory.cpp000066400000000000000000000127701444020206400201250ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #include "elementfactory.h" #include "common.h" #include "globalproperties.h" #include "graphicelement.h" #include "logicand.h" #include "logicdemux.h" #include "logicdflipflop.h" #include "logicdlatch.h" #include "logicinput.h" #include "logicjkflipflop.h" #include "logicmux.h" #include "logicnand.h" #include "logicnode.h" #include "logicnone.h" #include "logicnor.h" #include "logicnot.h" #include "logicor.h" #include "logicoutput.h" #include "logicsrflipflop.h" #include "logictflipflop.h" #include "logicxnor.h" #include "logicxor.h" #include ElementType ElementFactory::textToType(const QString &text) { qCDebug(four) << text; return static_cast(QMetaEnum::fromType().keyToValue(text.toLatin1())); } QString ElementFactory::typeToText(const ElementType type) { qCDebug(four) << type; if (type == ElementType::Unknown) { return "UNKNOWN"; } return QVariant::fromValue(type).toString(); } QString ElementFactory::typeToTitleText(const ElementType type) { qCDebug(four) << type; if (type == ElementType::Unknown) { return tr("MULTIPLE TYPES"); } return property(type, "titleText"); } QString ElementFactory::translatedName(const ElementType type) { if (type == ElementType::Unknown) { return tr("Unknown"); } return property(type, "translatedName"); } QPixmap ElementFactory::pixmap(const ElementType type) { if (type == ElementType::Unknown) { return {}; } return QPixmap{property(type, "pixmapPath")}; } GraphicElement *ElementFactory::buildElement(const ElementType type) { qCDebug(four) << type; if (type == ElementType::Unknown) { throw Pandaception(tr("Unknown type: ") + typeToText(type)); } #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) const int id = QMetaType::type(typeToText(type).toLatin1()); if (id == QMetaType::UnknownType) { throw Pandaception(tr("Unknown type: ") + typeToText(type)); } auto *elm = static_cast(QMetaType::create(id)); #else const auto metaType = QMetaType::fromName(typeToText(type).toLatin1()); if (!metaType.isValid() || (metaType.id() == QMetaType::UnknownType)) { throw Pandaception(tr("Unknown type: ") + typeToText(type)); } auto *elm = static_cast(metaType.create()); #endif return elm; } QString ElementFactory::property(const ElementType type, const QString &property) { GlobalProperties::skipInit = true; auto *elm = buildElement(type); GlobalProperties::skipInit = false; QString value = elm->property(property.toUtf8()).toString(); delete elm; return value; } ItemWithId *ElementFactory::itemById(const int id) { return instance().m_map.contains(id) ? instance().m_map.value(id) : nullptr; } bool ElementFactory::contains(const int id) { return instance().m_map.contains(id); } void ElementFactory::addItem(ItemWithId *item) { if (item) { item->setId(instance().nextId()); instance().m_map[item->id()] = item; } } void ElementFactory::removeItem(ItemWithId *item) { instance().m_map.remove(item->id()); } void ElementFactory::updateItemId(ItemWithId *item, const int newId) { instance().m_map.remove(item->id()); instance().m_map[newId] = item; item->setId(newId); } int ElementFactory::nextId() { return m_lastId++; } std::shared_ptr ElementFactory::buildLogicElement(GraphicElement *elm) { switch (elm->elementType()) { case ElementType::Clock: case ElementType::InputButton: case ElementType::InputRotary: case ElementType::InputSwitch: return std::make_shared(false, elm->outputSize()); case ElementType::Buzzer: case ElementType::Display14: case ElementType::Display7: case ElementType::Led: return std::make_shared(elm->inputSize()); case ElementType::And: return std::make_shared(elm->inputSize()); case ElementType::DFlipFlop: return std::make_shared(); case ElementType::Demux: return std::make_shared(); case ElementType::InputGnd: return std::make_shared(false); case ElementType::InputVcc: return std::make_shared(true); case ElementType::JKFlipFlop: return std::make_shared(); case ElementType::Mux: return std::make_shared(); case ElementType::Nand: return std::make_shared(elm->inputSize()); case ElementType::Node: return std::make_shared(); case ElementType::Nor: return std::make_shared(elm->inputSize()); case ElementType::Not: return std::make_shared(); case ElementType::Or: return std::make_shared(elm->inputSize()); case ElementType::SRFlipFlop: return std::make_shared(); case ElementType::TFlipFlop: return std::make_shared(); case ElementType::Xnor: return std::make_shared(elm->inputSize()); case ElementType::Xor: return std::make_shared(elm->inputSize()); case ElementType::DLatch: return std::make_shared(); case ElementType::Line: case ElementType::Text: return std::make_shared(); default: throw Pandaception(tr("Not implemented yet: ") + elm->objectName()); } } wiRedPanda-4.1.12/app/elementfactory.h000066400000000000000000000024131444020206400175630ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include "enums.h" #include #include class GraphicElement; class ItemWithId; class LogicElement; class QNEConnection; class ElementFactory : public QObject { Q_OBJECT public: static ElementFactory &instance() { static ElementFactory instance; return instance; } static ElementType textToType(const QString &text); static GraphicElement *buildElement(const ElementType type); static ItemWithId *itemById(const int id); static std::shared_ptr buildLogicElement(GraphicElement *elm); static QPixmap pixmap(const ElementType type); static QString property(const ElementType type, const QString &property); static QString translatedName(const ElementType type); static QString typeToText(const ElementType type); static QString typeToTitleText(const ElementType type); static bool contains(const int id); static void addItem(ItemWithId *item); static void removeItem(ItemWithId *item); static void updateItemId(ItemWithId *item, const int newId); private: int nextId(); QMap m_map; int m_lastId = 0; }; wiRedPanda-4.1.12/app/elementlabel.cpp000066400000000000000000000063111444020206400175270ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #include "elementlabel.h" #include "elementfactory.h" #include #include #include #include #include ElementLabel::ElementLabel(const QPixmap *pixmap, ElementType type, const QString &icFileName, QWidget *parent) : ElementLabel(*pixmap, type, icFileName, parent) { // for compiling on Qt versions < 5.15 } ElementLabel::ElementLabel(const QPixmap &pixmap, ElementType type, const QString &icFileName, QWidget *parent) : QFrame(parent) , m_elementType(type) , m_pixmap(pixmap) , m_icFileName(icFileName) { m_iconLabel.setPixmap(pixmap); m_iconLabel.setScaledContents(true); m_iconLabel.setFixedSize(64, 64); m_nameLabel.setText((type == ElementType::IC) ? QFileInfo(icFileName).baseName().toUpper() : ElementFactory::translatedName(type)); auto *itemLayout = new QHBoxLayout(); itemLayout->setSpacing(6); itemLayout->setObjectName(QStringLiteral("itemLayout")); setLayout(itemLayout); itemLayout->addWidget(&m_iconLabel); itemLayout->addStretch(); itemLayout->addWidget(&m_nameLabel); itemLayout->addStretch(); itemLayout->setContentsMargins(0, 0, 0, 0); } void ElementLabel::updateName() { if (m_elementType != ElementType::IC) { m_nameLabel.setText(ElementFactory::translatedName(m_elementType)); } } void ElementLabel::mousePressEvent(QMouseEvent *event) { Q_UNUSED(event) startDrag(); } const ElementType &ElementLabel::elementType() const { return m_elementType; } const QPixmap &ElementLabel::pixmap() const { return m_pixmap; } QString ElementLabel::name() const { return m_nameLabel.text(); } QString ElementLabel::icFileName() const { return m_icFileName; } void ElementLabel::startDrag() { #if (QT_VERSION < QT_VERSION_CHECK(5, 15, 0)) QPoint offset = m_iconLabel.pixmap()->rect().center(); #else QPoint offset = m_iconLabel.pixmap(Qt::ReturnByValue).rect().center(); #endif QByteArray itemData; QDataStream stream(&itemData, QIODevice::WriteOnly); stream.setVersion(QDataStream::Qt_5_12); stream << offset << m_elementType << m_icFileName; auto *mimeData = new QMimeData(); mimeData->setData("wpanda/x-dnditemdata", itemData); auto *drag = new QDrag(parent()); drag->setMimeData(mimeData); drag->setPixmap(pixmap()); drag->setHotSpot(offset); drag->exec(Qt::CopyAction, Qt::CopyAction); } QMimeData *ElementLabel::mimeData() { #if (QT_VERSION < QT_VERSION_CHECK(5, 15, 0)) QPoint offset = m_iconLabel.pixmap()->rect().center(); #else QPoint offset = m_iconLabel.pixmap(Qt::ReturnByValue).rect().center(); #endif QByteArray itemData; QDataStream stream(&itemData, QIODevice::WriteOnly); stream.setVersion(QDataStream::Qt_5_12); stream << offset << m_elementType << m_icFileName; auto *mimeData = new QMimeData(); mimeData->setData("wpanda/x-dnditemdata", itemData); return mimeData; } void ElementLabel::updateTheme() { m_pixmap = ElementFactory::pixmap(m_elementType); m_iconLabel.setPixmap(m_pixmap); } wiRedPanda-4.1.12/app/elementlabel.h000066400000000000000000000017211444020206400171740ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include "enums.h" #include #include #include class ElementLabel : public QFrame { Q_OBJECT public: explicit ElementLabel(const QPixmap *pixmap, ElementType type, const QString &icFileName, QWidget *parent = nullptr); explicit ElementLabel(const QPixmap &pixmap, ElementType type, const QString &icFileName, QWidget *parent = nullptr); QMimeData *mimeData(); QString icFileName() const; QString name() const; const ElementType &elementType() const; const QPixmap &pixmap() const; void startDrag(); void updateName(); void updateTheme(); protected: void mousePressEvent(QMouseEvent *event) override; private: ElementType m_elementType = ElementType::Unknown; QLabel m_iconLabel; QLabel m_nameLabel; QPixmap m_pixmap; QString m_icFileName; }; wiRedPanda-4.1.12/app/elementmapping.cpp000066400000000000000000000063111444020206400201030ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #include "elementmapping.h" #include "common.h" #include "elementfactory.h" #include "graphicelement.h" #include "ic.h" #include "qneconnection.h" #include "qneport.h" ElementMapping::ElementMapping(const QVector &elements) : m_elements(elements) { qCDebug(three) << tr("Generate Map."); generateMap(); qCDebug(three) << tr("Connect."); connectElements(); } ElementMapping::~ElementMapping() { m_globalGND.clearSucessors(); m_globalVCC.clearSucessors(); } void ElementMapping::generateMap() { for (auto *elm : qAsConst(m_elements)) { if (elm->elementType() == ElementType::IC) { auto *ic = qobject_cast(elm); m_logicElms.append(ic->generateMap()->m_logicElms); continue; } generateLogic(elm); } } void ElementMapping::generateLogic(GraphicElement *elm) { auto logic = ElementFactory::buildLogicElement(elm); elm->setLogic(logic.get()); m_logicElms.append(logic); } void ElementMapping::connectElements() { for (auto *elm : qAsConst(m_elements)) { for (auto *inputPort : elm->inputs()) { applyConnection(elm, inputPort); } } } void ElementMapping::applyConnection(GraphicElement *elm, QNEInputPort *inputPort) { LogicElement *currentLogic; int inputIndex = 0; if (elm->elementType() == ElementType::IC) { auto *ic = qobject_cast(elm); currentLogic = ic->inputLogic(inputPort->index()); } else { currentLogic = elm->logic(); inputIndex = inputPort->index(); } const auto connections = inputPort->connections(); if ((connections.size() == 0) && !inputPort->isRequired()) { auto *predecessorLogic = (inputPort->defaultValue() == Status::Active) ? &m_globalVCC : &m_globalGND; currentLogic->connectPredecessor(inputIndex, predecessorLogic, 0); } if (connections.size() == 1) { if (auto *outputPort = connections.constFirst()->startPort()) { if (auto *predecessorElement = outputPort->graphicElement()) { if (predecessorElement->elementType() == ElementType::IC) { auto *predecessorLogic = qobject_cast(predecessorElement)->outputLogic(outputPort->index()); currentLogic->connectPredecessor(inputIndex, predecessorLogic, 0); } else { currentLogic->connectPredecessor(inputIndex, predecessorElement->logic(), outputPort->index()); } } } } } void ElementMapping::sort() { sortLogicElements(); validateElements(); } void ElementMapping::sortLogicElements() { for (auto logic : qAsConst(m_logicElms)) { logic->calculatePriority(); } std::sort(m_logicElms.begin(), m_logicElms.end(), [](const auto &logic1, const auto &logic2) { return *logic1 > *logic2; }); } void ElementMapping::validateElements() { for (auto logic : qAsConst(m_logicElms)) { logic->validate(); } } const QVector> &ElementMapping::logicElms() const { return m_logicElms; } wiRedPanda-4.1.12/app/elementmapping.h000066400000000000000000000021041444020206400175440ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include "logicinput.h" #include #include class Clock; class GraphicElement; class GraphicElementInput; class IC; class ICMapping; class QNEInputPort; class QNEPort; class ElementMapping { Q_DECLARE_TR_FUNCTIONS(ElementMapping) public: explicit ElementMapping(const QVector &elements); ~ElementMapping(); const QVector > &logicElms() const; void sort(); private: Q_DISABLE_COPY(ElementMapping) void applyConnection(GraphicElement *elm, QNEInputPort *inputPort); void connectElements(); void generateLogic(GraphicElement *elm); void generateMap(); void setDefaultValue(GraphicElement *elm, QNEPort *in); void sortLogicElements(); void validateElements(); LogicInput m_globalGND{false}; LogicInput m_globalVCC{true}; QVector m_elements; QVector> m_logicElms; }; wiRedPanda-4.1.12/app/enums.cpp000066400000000000000000000007201444020206400162230ustar00rootroot00000000000000#include "enums.h" #include ElementType &operator++(ElementType &type) { return type = static_cast(static_cast(type) + 1); } QDataStream &operator>>(QDataStream &stream, ElementType &type) { quint64 temp; stream >> temp; type = static_cast(temp); return stream; } QDataStream &operator<<(QDataStream &stream, const ElementType &type) { stream << static_cast(type); return stream; } wiRedPanda-4.1.12/app/enums.h000066400000000000000000000026071444020206400156760ustar00rootroot00000000000000#pragma once #include #include class Enums { Q_GADGET public: Enums() = delete; enum class Status { Invalid = -1, Inactive = 0, Active = 1 }; Q_ENUM(Status) enum class ElementType { And = 5, Buzzer = 26, Clock = 9, DFlipFlop = 17, DLatch = 15, Demux = 25, Display14 = 27, Display7 = 14, IC = 22, InputButton = 1, InputGnd = 13, InputRotary = 21, InputSwitch = 2, InputVcc = 12, JKFlipFlop = 18, JKLatch = 16, Led = 3, Line = 29, Mux = 24, Nand = 7, Node = 23, Nor = 8, Not = 4, Or = 6, SRFlipFlop = 19, TFlipFlop = 20, Text = 28, Unknown = 0, Xnor = 11, Xor = 10, }; Q_ENUM(ElementType) enum class ElementGroup { Gate = 4, IC = 2, Input = 3, Memory = 5, Mux = 7, Other = 1, Output = 6, StaticInput = 8, Unknown = 0, }; Q_ENUM(ElementGroup) }; using Status = Enums::Status; using ElementType = Enums::ElementType; using ElementGroup = Enums::ElementGroup; ElementType &operator++(ElementType &type); QDataStream &operator>>(QDataStream &stream, ElementType &type); QDataStream &operator<<(QDataStream &stream, const ElementType &type); wiRedPanda-4.1.12/app/globalproperties.h000066400000000000000000000010711444020206400201160ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include #include #define VERSION(string) QVersionNumber::fromString(string) class GlobalProperties { public: inline static QString currentDir = {}; inline static bool skipInit = false; inline static bool verbose = true; inline static const QVersionNumber version = VERSION(QString(APP_VERSION)); inline static const int gridSize = 16; inline static const int maxRecentFiles = 10; }; wiRedPanda-4.1.12/app/graphicelement.cpp000066400000000000000000000701171444020206400200720ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #include "graphicelement.h" #include "common.h" #include "elementfactory.h" #include "globalproperties.h" #include "qneconnection.h" #include "qneport.h" #include "thememanager.h" #include #include #include #include #include #include #include #include #include namespace { int id = qRegisterMetaType(); } const int maximumValidInputSize = 256; GraphicElement::GraphicElement(ElementType type, ElementGroup group, const QString &pixmapPath, const QString &titleText, const QString &translatedName, const int minInputSize, const int maxInputSize, const int minOutputSize, const int maxOutputSize, QGraphicsItem *parent) : QGraphicsObject(parent) , m_pixmapPath(pixmapPath) , m_titleText(titleText) , m_translatedName(translatedName) , m_elementGroup(group) , m_elementType(type) , m_maxInputSize(maxInputSize) , m_maxOutputSize(maxOutputSize) , m_minInputSize(minInputSize) , m_minOutputSize(minOutputSize) { if (GlobalProperties::skipInit) { return; } qCDebug(four) << tr("Setting flags of elements."); setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable | QGraphicsItem::ItemSendsGeometryChanges); qCDebug(four) << tr("Setting attributes."); m_label->hide(); QFont font("SansSerif"); font.setBold(true); m_label->setFont(font); m_label->setPos(0, 64); m_label->setParentItem(this); m_label->setDefaultTextColor(Qt::black); setPortName(m_translatedName); setToolTip(m_translatedName); qCDebug(four) << tr("Including input and output ports."); for (int i = 0; i < minInputSize; ++i) { addInputPort(); } for (int i = 0; i < minOutputSize; ++i) { addOutputPort(); } GraphicElement::updatePortsProperties(); GraphicElement::updateTheme(); setCacheMode(QGraphicsItem::DeviceCoordinateCache); } ElementType GraphicElement::elementType() const { return m_elementType; } ElementGroup GraphicElement::elementGroup() const { return m_elementGroup; } QPixmap GraphicElement::pixmap() const { return m_pixmap ? *m_pixmap : QPixmap(); } void GraphicElement::setPixmap(const int index) { setPixmap(m_usingDefaultSkin ? m_defaultSkins.at(index) : m_alternativeSkins.at(index)); } void GraphicElement::setPixmap(const QString &pixmapPath) { if (pixmapPath.isEmpty() || (pixmapPath == m_currentPixmapPath)) { return; } if (!QPixmapCache::find(pixmapPath, m_pixmap.get())) { if (!m_pixmap->load(pixmapPath)) { m_pixmap->load(m_defaultSkins.constFirst()); qCDebug(zero) << tr("Problem loading pixmapPath: ") << pixmapPath; throw Pandaception(tr("Couldn't load pixmap.")); } QPixmapCache::insert(pixmapPath, *m_pixmap); } setTransformOriginPoint(pixmapCenter()); update(); m_currentPixmapPath = pixmapPath; } const QVector &GraphicElement::outputs() const { return m_outputPorts; } void GraphicElement::setOutputs(const QVector &outputs) { m_outputPorts = outputs; } QNEInputPort *GraphicElement::inputPort(const int index) { return m_inputPorts.at(index); } QNEOutputPort *GraphicElement::outputPort(const int index) { return m_outputPorts.at(index); } void GraphicElement::save(QDataStream &stream) const { qCDebug(four) << tr("Saving element. Type: ") << objectName(); QMap map; map.insert("pos", pos()); map.insert("rotation", rotation()); map.insert("label", label()); map.insert("minInputSize", m_minInputSize); map.insert("maxInputSize", m_maxInputSize); map.insert("minOutputSize", m_minOutputSize); map.insert("maxOutputSize", m_maxOutputSize); map.insert("trigger", m_trigger); map.insert("priority", m_priority); stream << map; // ------------------------------------------- QList> inputMap; for (auto *port : m_inputPorts) { QMap tempMap; tempMap.insert("ptr", reinterpret_cast(port)); tempMap.insert("name", port->name()); tempMap.insert("flags", port->portFlags()); inputMap << tempMap; } stream << inputMap; // ------------------------------------------- QList> outputMap; for (auto *port : m_outputPorts) { QMap tempMap; tempMap.insert("ptr", reinterpret_cast(port)); tempMap.insert("name", port->name()); tempMap.insert("flags", port->portFlags()); outputMap << tempMap; } stream << outputMap; // ------------------------------------------- QList> skinsMap; for (const auto &skinName : m_alternativeSkins) { QString skinName2 = skinName; QFileInfo fileInfo(skinName2); if (!skinName2.startsWith(":/") && (fileInfo.absoluteDir() != GlobalProperties::currentDir)) { const QString newFile = GlobalProperties::currentDir + "/" + fileInfo.fileName(); QFile::copy(skinName2, newFile); skinName2 = newFile; } // ------------------------------------------- QMap tempMap; tempMap.insert("skinName", skinName2); skinsMap << tempMap; } stream << skinsMap; // ------------------------------------------- qCDebug(four) << tr("Finished saving element."); } void GraphicElement::load(QDataStream &stream, QMap &portMap, const QVersionNumber version) { qCDebug(four) << tr("Loading element. Type: ") << objectName(); (version < VERSION("4.1")) ? loadOldFormat(stream, portMap, version) : loadNewFormat(stream, portMap); qCDebug(four) << tr("Updating port positions."); updatePortsProperties(); setRotation(m_angle); qCDebug(four) << tr("Finished loading element."); } void GraphicElement::loadOldFormat(QDataStream &stream, QMap &portMap, const QVersionNumber version) { loadPos(stream); loadRotation(stream, version); /* */ loadLabel(stream, version); /* <\Version1.2> */ /* */ loadPortsSize(stream, version); /* <\Version1.3> */ /* */ loadTrigger(stream, version); /* <\Version4.01> */ loadPriority(stream, version); /* <\Version1.9> */ loadInputPorts(stream, portMap); loadOutputPorts(stream, portMap); /* <\Version2.7> */ loadPixmapSkinNames(stream, version); } void GraphicElement::loadNewFormat(QDataStream &stream, QMap &portMap) { QMap map; stream >> map; if (map.contains("pos")) { setPos(map.value("pos").toPointF()); } if (map.contains("rotation")) { m_angle = map.value("rotation").toReal(); } if (map.contains("label")) { setLabel(map.value("label").toString()); } // ------------------------------------------- const quint64 minInputSize = map.value("minInputSize").toULongLong(); const quint64 maxInputSize = map.value("maxInputSize").toULongLong(); const quint64 minOutputSize = map.value("minOutputSize").toULongLong(); const quint64 maxOutputSize = map.value("maxOutputSize").toULongLong(); if ((m_minInputSize != m_maxInputSize) || (m_minInputSize <= maxInputSize)) { m_minInputSize = minInputSize; m_maxInputSize = maxInputSize; } if ((m_minOutputSize != m_maxOutputSize) || (m_minOutputSize <= maxOutputSize)) { m_minOutputSize = minOutputSize; m_maxOutputSize = maxOutputSize; } // ------------------------------------------- if (map.contains("trigger")) { setTrigger(map.value("trigger").toString()); } if (map.contains("priority")) { setPriority(map.value("priority").toULongLong()); } // ------------------------------------------- QList> inputMap; stream >> inputMap; int port = 0; for (const auto &input : qAsConst(inputMap)) { const quint64 ptr = input.value("ptr").toULongLong(); const QString name = input.value("name").toString(); if (port < m_inputPorts.size()) { m_inputPorts.value(port)->setPtr(ptr); if (elementType() == ElementType::IC) { m_inputPorts.value(port)->setName(name); } } else { addPort(name, false, static_cast(ptr)); } portMap[ptr] = m_inputPorts.value(port); port++; } removeSurplusInputs(inputMap.size(), portMap); // ------------------------------------------- QList> outputMap; stream >> outputMap; port = 0; for (const auto &output : qAsConst(outputMap)) { const quint64 ptr = output.value("ptr").toULongLong(); const QString name = output.value("name").toString(); if (port < m_outputPorts.size()) { m_outputPorts.value(port)->setPtr(ptr); if (elementType() == ElementType::IC) { m_outputPorts.value(port)->setName(name); } } else { addPort(name, true, static_cast(ptr)); } portMap[ptr] = m_outputPorts.value(port); port++; } removeSurplusOutputs(outputMap.size(), portMap); // ------------------------------------------- QList> skinsMap; stream >> skinsMap; int skin = 0; for (const auto &skinName : qAsConst(skinsMap)) { const QString name = skinName.value("skinName").toString(); if (!name.startsWith(":/")) { m_alternativeSkins[skin] = name; } skin++; } m_usingDefaultSkin = (m_defaultSkins == m_alternativeSkins); refresh(); } void GraphicElement::loadPos(QDataStream &stream) { QPointF pos; stream >> pos; setPos(pos); } void GraphicElement::loadRotation(QDataStream &stream, const QVersionNumber version) { qreal angle; stream >> angle; m_angle = angle; if (version < VERSION("4.1")) { if ((m_elementGroup == ElementGroup::Input) || (m_elementGroup == ElementGroup::StaticInput)) { m_angle += 90; } if ((m_elementGroup == ElementGroup::Output) || (m_elementGroup == ElementGroup::IC) || (m_elementGroup == ElementGroup::Gate)) { if ((m_elementType == ElementType::Display7) || (m_elementType == ElementType::Display14) || (m_elementType == ElementType::Node)) { return; } m_angle -= 90; } } } void GraphicElement::loadLabel(QDataStream &stream, const QVersionNumber version) { if (version >= VERSION("1.2")) { QString labelText; stream >> labelText; setLabel(labelText); } } void GraphicElement::loadPortsSize(QDataStream &stream, const QVersionNumber version) { if (version >= VERSION("1.3")) { quint64 minInputSize; stream >> minInputSize; quint64 maxInputSize; stream >> maxInputSize; quint64 minOutputSize; stream >> minOutputSize; quint64 maxOutputSize; stream >> maxOutputSize; if ((m_minInputSize != m_maxInputSize) || (m_minInputSize <= maxInputSize)) { m_minInputSize = minInputSize; m_maxInputSize = maxInputSize; } if ((m_minOutputSize != m_maxOutputSize) || (m_minOutputSize <= maxOutputSize)) { m_minOutputSize = minOutputSize; m_maxOutputSize = maxOutputSize; } } } void GraphicElement::loadTrigger(QDataStream &stream, const QVersionNumber version) { if (version >= VERSION("1.9")) { QKeySequence trigger; stream >> trigger; setTrigger(trigger); } } void GraphicElement::loadPriority(QDataStream &stream, const QVersionNumber version) { if (version >= VERSION("4.01")) { quint64 priority; stream >> priority; setPriority(priority); } } void GraphicElement::loadInputPorts(QDataStream &stream, QMap &portMap) { qCDebug(four) << tr("Loading input ports."); quint64 inputSize; stream >> inputSize; if (inputSize > maximumValidInputSize) { throw Pandaception(tr("Corrupted DataStream!")); } for (size_t port = 0; port < inputSize; ++port) { loadInputPort(stream, portMap, static_cast(port)); } removeSurplusInputs(inputSize, portMap); } void GraphicElement::loadInputPort(QDataStream &stream, QMap &portMap, const int port) { quint64 ptr; stream >> ptr; QString name; stream >> name; int flags; stream >> flags; if (port < m_inputPorts.size()) { m_inputPorts.value(port)->setPtr(ptr); if (elementType() == ElementType::IC) { m_inputPorts.value(port)->setName(name); } } else { addPort(name, false, static_cast(ptr)); } portMap[ptr] = m_inputPorts.value(port); } void GraphicElement::removeSurplusInputs(const quint64 inputSize_, QMap &portMap) { while ((inputSize() > static_cast(inputSize_)) && (inputSize_ >= m_minInputSize)) { auto *deletedPort = m_inputPorts.constLast(); removePortFromMap(deletedPort, portMap); delete deletedPort; m_inputPorts.removeLast(); } } void GraphicElement::removeSurplusOutputs(const quint64 outputSize_, QMap &portMap) { while ((outputSize() > static_cast(outputSize_)) && (outputSize_ >= m_minOutputSize)) { auto *deletedPort = m_outputPorts.constLast(); removePortFromMap(deletedPort, portMap); delete deletedPort; m_outputPorts.removeLast(); } } void GraphicElement::setLogic(LogicElement *newLogic) { m_logic = newLogic; } LogicElement *GraphicElement::logic() const { return m_logic; } void GraphicElement::removePortFromMap(QNEPort *deletedPort, QMap &portMap) { for (auto it = portMap.begin(); it != portMap.end();) { if (it.value() == deletedPort) { it = portMap.erase(it); } else { ++it; } } } void GraphicElement::loadOutputPorts(QDataStream &stream, QMap &portMap) { qCDebug(four) << tr("Loading output ports."); quint64 outputSize; stream >> outputSize; if (outputSize > maximumValidInputSize) { throw Pandaception(tr("Corrupted DataStream!")); } for (size_t port = 0; port < outputSize; ++port) { loadOutputPort(stream, portMap, static_cast(port)); } removeSurplusOutputs(outputSize, portMap); } void GraphicElement::loadOutputPort(QDataStream &stream, QMap &portMap, const int port) { quint64 ptr; stream >> ptr; QString name; stream >> name; int flags; stream >> flags; if (port < m_outputPorts.size()) { m_outputPorts.value(port)->setPtr(ptr); if (elementType() == ElementType::IC) { m_outputPorts.value(port)->setName(name); } } else { addPort(name, true, static_cast(ptr)); } portMap[ptr] = m_outputPorts.value(port); } void GraphicElement::loadPixmapSkinNames(QDataStream &stream, const QVersionNumber version) { if (version >= VERSION("2.7")) { qCDebug(four) << tr("Loading pixmap skin names."); quint64 outputSize; stream >> outputSize; if (outputSize > maximumValidInputSize) { throw Pandaception(tr("Corrupted DataStream!")); } for (size_t skin = 0; skin < outputSize; ++skin) { loadPixmapSkinName(stream, static_cast(skin)); } m_usingDefaultSkin = (m_defaultSkins == m_alternativeSkins); refresh(); } } void GraphicElement::loadPixmapSkinName(QDataStream &stream, const int skin) { QString name; stream >> name; if (skin >= m_alternativeSkins.size()) { qCDebug(zero) << tr("Could not load some of the skins."); } if (!name.startsWith(":/")) { m_alternativeSkins[skin] = name; } } const QVector &GraphicElement::inputs() const { return m_inputPorts; } void GraphicElement::setInputs(const QVector &inputs) { m_inputPorts = inputs; } QPointF GraphicElement::pixmapCenter() const { return QRectF(pixmap().rect()).center(); } QRectF GraphicElement::boundingRect() const { return portsBoundingRect().united(pixmap().rect()); } QRectF GraphicElement::portsBoundingRect() const { QRectF rectChildren; const auto children = childItems(); for (auto *child : children) { if (auto *port = qgraphicsitem_cast(child)) { rectChildren = rectChildren.united(mapRectFromItem(port, port->boundingRect())); } } return rectChildren; } void GraphicElement::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) { Q_UNUSED(widget) Q_UNUSED(option) if (isSelected()) { painter->save(); painter->setBrush(m_selectionBrush); painter->setPen(QPen(m_selectionPen, 0.5, Qt::SolidLine)); painter->drawRoundedRect(boundingRect(), 5, 5); painter->restore(); } painter->drawPixmap(QPoint(0, 0), pixmap()); } void GraphicElement::addPort(const QString &name, const bool isOutput, const int ptr) { if (isOutput && (static_cast(m_outputPorts.size()) >= m_maxOutputSize)) { return; } if (!isOutput && (static_cast(m_inputPorts.size()) >= m_maxInputSize)) { return; } qCDebug(four) << tr("New port."); QNEPort *port = nullptr; if (isOutput) { m_outputPorts.push_back(new QNEOutputPort(this)); port = m_outputPorts.constLast(); port->setIndex(outputSize() - 1); } else { m_inputPorts.push_back(new QNEInputPort(this)); port = m_inputPorts.constLast(); port->setIndex(inputSize() - 1); } port->setGraphicElement(this); port->setPtr(ptr); port->setName(name); port->show(); } void GraphicElement::addInputPort(const QString &name) { addPort(name, false); } void GraphicElement::addOutputPort(const QString &name) { addPort(name, true); } void GraphicElement::setPortName(const QString &name) { setObjectName(name); } void GraphicElement::setPriority(const int value) { m_priority = value; } void GraphicElement::setRotation(const qreal angle) { m_angle = std::fmod(angle, 360); isRotatable() ? QGraphicsItem::setRotation(m_angle) : rotatePorts(m_angle); } void GraphicElement::rotatePorts(const qreal angle) { for (auto *port : qAsConst(m_inputPorts)) { port->setTransformOriginPoint(mapToItem(port, pixmapCenter())); port->setRotation(angle); port->updateConnections(); } for (auto *port : qAsConst(m_outputPorts)) { port->setTransformOriginPoint(mapToItem(port, pixmapCenter())); port->setRotation(angle); port->updateConnections(); } } qreal GraphicElement::rotation() const { return m_angle; } void GraphicElement::setSkin(const bool defaultSkin, const QString &fileName) { if (defaultSkin) { m_alternativeSkins = m_defaultSkins; } else { m_alternativeSkins[0] = fileName; } m_usingDefaultSkin = defaultSkin; setPixmap(0); } void GraphicElement::updatePortsProperties() { qCDebug(five) << tr("Updating port positions that belong to the IC."); const int step = GlobalProperties::gridSize / 2; if (!m_inputPorts.isEmpty()) { int y = 32 - (m_inputPorts.size() * step) + step; for (auto *port : qAsConst(m_inputPorts)) { qCDebug(five) << tr("Setting input at ") << 0 << tr(", ") << y; if (!isRotatable()) { port->setRotation(0); } port->setPos(0, y); if (!isRotatable()) { port->setTransformOriginPoint(mapToItem(port, pixmapCenter())); port->setRotation(m_angle); } y += step * 2; } } if (!m_outputPorts.isEmpty()) { int y = 32 - (m_outputPorts.size() * step) + step; for (auto *port : qAsConst(m_outputPorts)) { qCDebug(five) << tr("Setting output at ") << 64 << tr(", ") << y; if (!isRotatable()) { port->setRotation(0); } port->setPos(64, y); if (!isRotatable()) { port->setTransformOriginPoint(mapToItem(port, pixmapCenter())); port->setRotation(m_angle); } y += step * 2; } } } void GraphicElement::refresh() { setPixmap(0); } QVariant GraphicElement::itemChange(QGraphicsItem::GraphicsItemChange change, const QVariant &value) { if (!scene()) { return QGraphicsItem::itemChange(change, value); } if (change == ItemPositionChange) { qCDebug(four) << tr("Align to grid."); QPointF newPos = value.toPointF(); const int gridSize = GlobalProperties::gridSize / 2; const int xV = qRound(newPos.x() / gridSize) * gridSize; const int yV = qRound(newPos.y() / gridSize) * gridSize; return QPoint(xV, yV); } if ((change == ItemScenePositionHasChanged) || (change == ItemRotationHasChanged) || (change == ItemTransformHasChanged)) { qCDebug(four) << tr("Moves wires."); for (auto *port : qAsConst(m_outputPorts)) { port->updateConnections(); } for (auto *port : qAsConst(m_inputPorts)) { port->updateConnections(); } } if (change == ItemSelectedHasChanged) { m_selected = value.toBool(); highlight(m_selected); } return QGraphicsItem::itemChange(change, value); } bool GraphicElement::sceneEvent(QEvent *event) { if (auto mouseEvent = dynamic_cast(event)) { if (mouseEvent->modifiers().testFlag(Qt::ControlModifier)) { return true; } } return QGraphicsItem::sceneEvent(event); } bool GraphicElement::hasAudio() const { return m_hasAudio; } void GraphicElement::setHasAudio(const bool hasAudio) { m_hasAudio = hasAudio; } QKeySequence GraphicElement::trigger() const { return m_trigger; } void GraphicElement::setTrigger(const QKeySequence &trigger) { m_trigger = trigger; updateLabel(); } QString GraphicElement::genericProperties() { return {}; } void GraphicElement::updateLabel() { QString label = m_labelText; if (!hasTrigger() || trigger().toString().isEmpty()) { m_label->setPlainText(label); } else { if (!label.isEmpty()) { label += " "; } m_label->setPlainText(label + QString("(%1)").arg(trigger().toString())); } } void GraphicElement::setLabel(const QString &label) { m_labelText = label; updateLabel(); } QString GraphicElement::label() const { return m_labelText; } void GraphicElement::updateTheme() { const ThemeAttributes theme = ThemeManager::attributes(); m_label->setDefaultTextColor(theme.m_graphicElementLabelColor); m_selectionBrush = theme.m_selectionBrush; m_selectionPen = theme.m_selectionPen; for (auto *input : qAsConst(m_inputPorts)) { input->updateTheme(); } for (auto *output : qAsConst(m_outputPorts)) { output->updateTheme(); } update(); } bool GraphicElement::isValid() { qCDebug(four) << tr("Checking if the element has the required signals to compute its value."); const bool valid = std::all_of(m_inputPorts.cbegin(), m_inputPorts.cend(), [](auto *input) { return input->isValid(); }); if (!valid) { for (auto *output : qAsConst(m_outputPorts)) { for (auto *conn : output->connections()) { conn->setStatus(Status::Invalid); if (auto *port = conn->otherPort(output)) { port->setStatus(Status::Invalid); } } } } return valid; } bool GraphicElement::hasColors() const { return m_hasColors; } bool GraphicElement::hasTrigger() const { return m_hasTrigger; } void GraphicElement::setColor(const QString &color) { Q_UNUSED(color) } QString GraphicElement::color() const { return {}; } void GraphicElement::setAudio(const QString &audio) { Q_UNUSED(audio) } QString GraphicElement::audio() const { return {}; } void GraphicElement::setHasColors(const bool hasColors) { m_hasColors = hasColors; } void GraphicElement::setCanChangeSkin(const bool canChangeSkin) { m_canChangeSkin = canChangeSkin; } void GraphicElement::setHasTrigger(const bool hasTrigger) { m_hasTrigger = hasTrigger; } bool GraphicElement::hasFrequency() const { return m_hasFrequency; } void GraphicElement::setHasFrequency(const bool hasFrequency) { m_hasFrequency = hasFrequency; } bool GraphicElement::hasLabel() const { return m_hasLabel; } bool GraphicElement::canChangeSkin() const { return m_canChangeSkin; } void GraphicElement::setHasLabel(const bool hasLabel) { m_hasLabel = hasLabel; m_label->setVisible(hasLabel); } bool GraphicElement::isRotatable() const { return m_rotatable; } void GraphicElement::setRotatable(const bool rotatable) { m_rotatable = rotatable; } int GraphicElement::minOutputSize() const { return static_cast(m_minOutputSize); } int GraphicElement::inputSize() const { return m_inputPorts.size(); } void GraphicElement::setInputSize(const int size) { if ((size >= minInputSize()) && (size <= maxInputSize())) { if (inputSize() < size) { while (inputSize() < size) { addInputPort(); } } else { qDeleteAll(m_inputPorts.begin() + size, m_inputPorts.end()); m_inputPorts.resize(size); } updatePortsProperties(); } } int GraphicElement::outputSize() const { return m_outputPorts.size(); } int GraphicElement::priority() const { return m_priority; } void GraphicElement::setOutputSize(const int size) { if ((size >= minOutputSize()) && (size <= maxOutputSize())) { if (outputSize() < size) { for (int port = outputSize(); port < size; ++port) { addOutputPort(); } } else { qDeleteAll(m_outputPorts.begin() + size, m_outputPorts.end()); m_outputPorts.resize(size); } updatePortsProperties(); } } float GraphicElement::frequency() const { return 0.0; } void GraphicElement::setFrequency(const float freq) { Q_UNUSED(freq) } void GraphicElement::setMinOutputSize(const int minOutputSize) { m_minOutputSize = minOutputSize; } int GraphicElement::minInputSize() const { return static_cast(m_minInputSize); } void GraphicElement::setMinInputSize(const int minInputSize) { m_minInputSize = minInputSize; } int GraphicElement::maxOutputSize() const { return static_cast(m_maxOutputSize); } void GraphicElement::setMaxOutputSize(const int maxOutputSize) { m_maxOutputSize = maxOutputSize; } int GraphicElement::maxInputSize() const { return static_cast(m_maxInputSize); } void GraphicElement::setMaxInputSize(const int maxInputSize) { m_maxInputSize = maxInputSize; } void GraphicElement::highlight(const bool isSelected) { QVector ports; for (auto *port : qAsConst(m_inputPorts)) { ports << port; } for (auto *port : qAsConst(m_outputPorts)) { ports << port; } for (auto *port : qAsConst(ports)) { for (auto *connection : port->connections()) { if (connection->highLight() == isSelected) { continue; } connection->setHighLight(isSelected); } } } void GraphicElement::retranslate() { m_translatedName = ElementFactory::translatedName(m_elementType); setPortName(m_translatedName); setToolTip(m_translatedName); } QDataStream &operator<<(QDataStream &stream, const GraphicElement *item) { qCDebug(four) << QObject::tr("Writing element."); const auto *elm = qgraphicsitem_cast(item); stream << GraphicElement::Type; stream << elm->elementType(); elm->save(stream); return stream; } wiRedPanda-4.1.12/app/graphicelement.h000066400000000000000000000206471444020206400175420ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include "enums.h" #include "itemwithid.h" #include "logicelement.h" #include #include #include #include #include class GraphicElement; class QNEInputPort; class QNEOutputPort; class QNEPort; /** * @brief Virtual class to implement graphical element appearance, input and output ports, and tooltips. * * The appearance includes editable features such as pose, colors, skins, shortcuts, and labels. * It also implements the functions to handle loading and saving the element into files. */ class GraphicElement : public QGraphicsObject, public ItemWithId { Q_OBJECT Q_PROPERTY(QString pixmapPath MEMBER m_pixmapPath CONSTANT) Q_PROPERTY(QString titleText MEMBER m_titleText CONSTANT) Q_PROPERTY(QString translatedName MEMBER m_translatedName CONSTANT) public: enum { Type = QGraphicsItem::UserType + 3 }; int type() const override { return Type; } explicit GraphicElement(ElementType type, ElementGroup group, const QString &pixmapPath, const QString &titleText, const QString &translatedName, const int minInputSize, const int maxInputSize, const int minOutputSize, const int maxOutputSize, QGraphicsItem *parent = nullptr); explicit GraphicElement(QGraphicsItem *parent = nullptr) : QGraphicsObject(parent) {} GraphicElement(const GraphicElement &other) : GraphicElement(other.parentItem()) {} //! Saves the graphic element through a binary data stream. virtual void save(QDataStream &stream) const; /** * @brief Loads the graphic element through a binary data stream. * @param portMap receives a reference to each input and output port. */ virtual void load(QDataStream &stream, QMap &portMap, const QVersionNumber version); //! Updates the number and the connected elements to the ports whenever needed (e.g. loading the element, changing the number of inputs/outputs). virtual void updatePortsProperties(); //! virtual function overloaded by clock element. Other elements have frequency of 0. virtual float frequency() const; //! Updates the GraphicElement theme according to the dark/light WiRedPanda theme. virtual void updateTheme(); ElementGroup elementGroup() const; ElementType elementType() const; LogicElement *logic() const; QKeySequence trigger() const; QNEInputPort *inputPort(const int index = 0); QNEOutputPort *outputPort(const int index = 0); QPointF pixmapCenter() const; QRectF boundingRect() const override; QString label() const; bool canChangeSkin() const; bool hasAudio() const; bool hasColors() const; bool hasFrequency() const; bool hasLabel() const; bool hasTrigger() const; bool isRotatable() const; bool isValid(); const QVector &inputs() const; const QVector &outputs() const; int inputSize() const; int maxInputSize() const; int maxOutputSize() const; int minInputSize() const; int minOutputSize() const; int outputSize() const; int priority() const; qreal rotation() const; virtual QString audio() const; virtual QString color() const; virtual QString genericProperties(); virtual void refresh(); virtual void setAudio(const QString &audio); virtual void setColor(const QString &color); virtual void setFrequency(const float freq); virtual void setSkin(const bool defaultSkin, const QString &fileName); void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override; void retranslate(); void rotatePorts(const qreal angle); void setInputSize(const int size); void setInputs(const QVector &inputs); void setLabel(const QString &label); void setLogic(LogicElement *newLogic); void setOutputSize(const int size); void setOutputs(const QVector &outputs); void setPixmap(const QString &pixmapPath); void setPixmap(const int index); void setPortName(const QString &name); void setPriority(const int value); void setRotation(const qreal angle); void setTrigger(const QKeySequence &trigger); void updateLabel(); protected: QPixmap pixmap() const; QRectF portsBoundingRect() const; QVariant itemChange(GraphicsItemChange change, const QVariant &value) override; bool sceneEvent(QEvent *event) override; void setCanChangeSkin(const bool canChangeSkin); void setHasAudio(const bool hasAudio); void setHasColors(const bool hasColors); void setHasFrequency(const bool hasFrequency); void setHasLabel(const bool hasLabel); void setHasTrigger(const bool hasTrigger); void setMaxInputSize(const int maxInputSize); void setMaxOutputSize(const int maxOutputSize); void setMinInputSize(const int minInputSize); void setMinOutputSize(const int minOutputSize); void setRotatable(const bool rotatable); //! Path to all default skins. The default skin is in a resource file. QStringList m_defaultSkins; //! Path to all custom skins. Custom skin names are system file paths defined by the user. QStringList m_alternativeSkins; //! input port vector QVector m_inputPorts; //! output port vector QVector m_outputPorts; //! Current pixmap displayed for this GraphicElement. std::unique_ptr m_pixmap = std::make_unique(); QColor m_selectionBrush; QColor m_selectionPen; QGraphicsTextItem *m_label = new QGraphicsTextItem(this); QString m_pixmapPath; QString m_titleText; QString m_translatedName; bool m_usingDefaultSkin = true; private: static void removePortFromMap(QNEPort *deletedPort, QMap &portMap); //! adds an input port at the end of the input port vector. void addInputPort(const QString &name = {}); //! adds an output port at the end of the output port vector. void addOutputPort(const QString &name = {}); //! adds an input or output port at the end of the port vector. void addPort(const QString &name, const bool isOutput, const int ptr = 0); //! functions to load GraphicElement atributes through a binary data stream void loadPos(QDataStream &stream); void highlight(const bool isSelected); void loadInputPort(QDataStream &stream, QMap &portMap, const int port); void loadInputPorts(QDataStream &stream, QMap &portMap); void loadLabel(QDataStream &stream, const QVersionNumber version); void loadNewFormat(QDataStream &stream, QMap &portMap); void loadOldFormat(QDataStream &stream, QMap &portMap, const QVersionNumber version); void loadOutputPort(QDataStream &stream, QMap &portMap, const int port); void loadOutputPorts(QDataStream &stream, QMap &portMap); void loadPixmapSkinName(QDataStream &stream, const int skin); void loadPixmapSkinNames(QDataStream &stream, const QVersionNumber version); void loadPortsSize(QDataStream &stream, const QVersionNumber version); void loadPriority(QDataStream &stream, const QVersionNumber version); void loadRotation(QDataStream &stream, const QVersionNumber version); void loadTrigger(QDataStream &stream, const QVersionNumber version); void removeSurplusInputs(const quint64 inputSize_, QMap &portMap); void removeSurplusOutputs(const quint64 outputSize_, QMap &portMap); ElementGroup m_elementGroup = ElementGroup::Unknown; ElementType m_elementType = ElementType::Unknown; LogicElement *m_logic = nullptr; QKeySequence m_trigger; QString m_currentPixmapPath; QString m_labelText; bool m_canChangeSkin = false; bool m_hasAudio = false; bool m_hasColors = false; bool m_hasFrequency = false; bool m_hasLabel = false; bool m_hasTrigger = false; bool m_rotatable = true; bool m_selected = false; qreal m_angle = 0; quint64 m_maxInputSize = 0; quint64 m_maxOutputSize = 0; quint64 m_minInputSize = 0; quint64 m_minOutputSize = 0; quint64 m_priority = 0; }; Q_DECLARE_METATYPE(GraphicElement) QDataStream &operator<<(QDataStream &stream, const GraphicElement *item); // FIXME: connecting more than one source makes element stop working wiRedPanda-4.1.12/app/graphicelementinput.h000066400000000000000000000025311444020206400206120ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include "graphicelement.h" class GraphicElementInput : public GraphicElement { Q_OBJECT public: explicit GraphicElementInput(ElementType type, ElementGroup group, const QString &pixmapPath, const QString &titleText, const QString &translatedName, const int minInputSize, const int maxInputSize, const int minOutputSize, const int maxOutputSize, QGraphicsItem *parent = nullptr) : GraphicElement(type, group, pixmapPath, titleText, translatedName, minInputSize, maxInputSize, minOutputSize, maxOutputSize, parent) {} bool isLocked() const { return m_locked; } virtual bool isOn(const int port = 0) const = 0; virtual int outputSize() const { return 1; } virtual int outputValue() const { return static_cast(isOn()); } virtual void setOff() = 0; virtual void setOn() = 0; virtual void setOn(const bool value, const int port = 0) = 0; void setLocked(const bool locked) { m_locked = locked; } void updateOutputs(); protected: bool m_locked = false; }; inline void GraphicElementInput::updateOutputs() { for (int portIndex = 0; portIndex < outputSize(); ++portIndex) { logic()->setOutputValue(portIndex, isOn(portIndex)); } } wiRedPanda-4.1.12/app/graphicsview.cpp000066400000000000000000000063171444020206400175770ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #include "graphicsview.h" #include #include #include #include GraphicsView::GraphicsView(QWidget *parent) : QGraphicsView(parent) { setAcceptDrops(true); setMouseTracking(true); setTransformationAnchor(QGraphicsView::AnchorUnderMouse); setResizeAnchor(QGraphicsView::AnchorUnderMouse); setViewportUpdateMode(QGraphicsView::BoundingRectViewportUpdate); setCacheMode(QGraphicsView::CacheBackground); } bool GraphicsView::canZoomIn() const { return m_zoomLevel < 3; } bool GraphicsView::canZoomOut() const { return m_zoomLevel > -3; } void GraphicsView::mousePressEvent(QMouseEvent *event) { if (event->button() == Qt::MiddleButton) { m_pan = true; m_panStartX = event->pos().x(); m_panStartY = event->pos().y(); viewport()->setCursor(Qt::ClosedHandCursor); event->accept(); return; } QGraphicsView::mousePressEvent(event); } void GraphicsView::mouseMoveEvent(QMouseEvent *event) { if (m_pan || m_space) { horizontalScrollBar()->setValue(horizontalScrollBar()->value() - (event->pos().x() - m_panStartX)); verticalScrollBar()->setValue(verticalScrollBar()->value() - (event->pos().y() - m_panStartY)); m_panStartX = event->pos().x(); m_panStartY = event->pos().y(); event->accept(); return; } m_panStartX = event->pos().x(); m_panStartY = event->pos().y(); QGraphicsView::mouseMoveEvent(event); } void GraphicsView::mouseReleaseEvent(QMouseEvent *event) { if (event->button() == Qt::MiddleButton) { m_pan = false; viewport()->unsetCursor(); event->accept(); return; } QGraphicsView::mouseReleaseEvent(event); } void GraphicsView::keyPressEvent(QKeyEvent *event) { if (event->key() == Qt::Key_Space) { m_space = true; viewport()->setCursor(Qt::ClosedHandCursor); event->accept(); } QGraphicsView::keyPressEvent(event); } void GraphicsView::keyReleaseEvent(QKeyEvent *event) { if (event->key() == Qt::Key_Space) { m_space = false; viewport()->unsetCursor(); event->accept(); } QGraphicsView::keyReleaseEvent(event); } void GraphicsView::wheelEvent(QWheelEvent *event) { if (QApplication::keyboardModifiers() == Qt::ControlModifier) { double deltaY = event->angleDelta().y(); (deltaY > 0) ? m_zoomLevel++ : m_zoomLevel--; double factor = (deltaY > 0) ? 1.25 : 0.8; scale(factor, factor); return; } QGraphicsView::wheelEvent(event); } void GraphicsView::setFastMode(const bool fastMode) { setRenderHint(QPainter::Antialiasing, !fastMode); setRenderHint(QPainter::TextAntialiasing, !fastMode); setRenderHint(QPainter::SmoothPixmapTransform, !fastMode); } void GraphicsView::zoomIn() { scale(1.25, 1.25); m_zoomLevel++; emit zoomChanged(); } void GraphicsView::zoomOut() { scale(0.8, 0.8); m_zoomLevel--; emit zoomChanged(); } void GraphicsView::resetZoom() { resetTransform(); m_zoomLevel = 0; emit zoomChanged(); } wiRedPanda-4.1.12/app/graphicsview.h000066400000000000000000000016601444020206400172400ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include class GraphicsView : public QGraphicsView { Q_OBJECT public: explicit GraphicsView(QWidget *parent = nullptr); bool canZoomIn() const; bool canZoomOut() const; void resetZoom(); void setFastMode(const bool fastMode); void zoomIn(); void zoomOut(); signals: void zoomChanged(); protected: void keyPressEvent(QKeyEvent *event) override; void keyReleaseEvent(QKeyEvent *event) override; void mouseMoveEvent(QMouseEvent *event) override; void mousePressEvent(QMouseEvent *event) override; void mouseReleaseEvent(QMouseEvent *event) override; void wheelEvent(QWheelEvent *event) override; private: bool m_pan = false; bool m_space = false; int m_panStartX = 0; int m_panStartY = 0; int m_zoomLevel = 0; }; wiRedPanda-4.1.12/app/ic.cpp000066400000000000000000000301511444020206400154700ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #include "ic.h" #include "application.h" #include "common.h" #include "elementfactory.h" #include "globalproperties.h" #include "qneconnection.h" #include "qneport.h" #include "scene.h" #include "serialization.h" #include #include #include namespace { int id = qRegisterMetaType(); } IC::IC(QGraphicsItem *parent) : GraphicElement(ElementType::IC, ElementGroup::IC, "", tr("INTEGRATED CIRCUIT"), tr("IC"), 0, 0, 0, 0, parent) { if (GlobalProperties::skipInit) { return; } m_label->setRotation(90); setHasLabel(true); connect(&m_fileWatcher, &QFileSystemWatcher::fileChanged, this, [=](const QString &filePath) { loadFile(filePath); if (auto *scene_ = qobject_cast(scene())) { scene_->simulation()->restart(); } }); } void IC::save(QDataStream &stream) const { GraphicElement::save(stream); QMap map; map.insert("fileName", QFileInfo(m_file).fileName()); stream << map; } void IC::load(QDataStream &stream, QMap &portMap, const QVersionNumber version) { GraphicElement::load(stream, portMap, version); if ((VERSION("1.2") <= version) && (version < VERSION("4.1"))) { stream >> m_file; if (IC::needToCopyFiles) { copyFile(); } loadFile(m_file); } if (version >= VERSION("4.1")) { QMap map; stream >> map; if (map.contains("fileName")) { m_file = map.value("fileName").toString(); if (IC::needToCopyFiles) { copyFile(); } loadFile(m_file); } } } void IC::copyFile() { QFileInfo fileInfo; fileInfo.setFile(GlobalProperties::currentDir, QFileInfo(m_file).fileName()); const QString srcFile = IC::path + "/" + m_file; const QString destFile = GlobalProperties::currentDir + "/" + fileInfo.fileName(); QFile file; if (!file.exists(destFile) && !file.copy(srcFile, destFile)) { throw Pandaception(tr("Error copying file: ") + file.errorString()); } } void IC::loadInputs() { setMaxInputSize(m_icInputs.size()); setMinInputSize(m_icInputs.size()); setInputSize(m_icInputs.size()); qCDebug(three) << tr("IC ") << m_file << tr(" -> Inputs. min: ") << minInputSize() << tr(", max: ") << maxInputSize() << tr(", current: ") << inputSize() << tr(", m_inputs: ") << m_inputPorts.size(); for (int inputIndex = 0; inputIndex < m_icInputs.size(); ++inputIndex) { auto *inpPort = inputPort(inputIndex); inpPort->setName(m_icInputLabels.at(inputIndex)); inpPort->setRequired(m_icInputs.at(inputIndex)->isRequired()); inpPort->setDefaultStatus(m_icInputs.at(inputIndex)->status()); inpPort->setStatus(m_icInputs.at(inputIndex)->status()); } } void IC::loadOutputs() { setMaxOutputSize(m_icOutputs.size()); setMinOutputSize(m_icOutputs.size()); setOutputSize(m_icOutputs.size()); for (int outputIndex = 0; outputIndex < m_icOutputs.size(); ++outputIndex) { auto *outPort = outputPort(outputIndex); outPort->setName(m_icOutputLabels.at(outputIndex)); } qCDebug(three) << tr("IC ") << m_file << tr(" -> Outputs. min: ") << minOutputSize() << tr(", max: ") << maxOutputSize() << tr(", current: ") << outputSize() << tr(", m_outputs: ") << m_outputPorts.size(); } void IC::loadFile(const QString &fileName) { qCDebug(zero) << QObject::tr("Reading IC."); m_icInputs.clear(); m_icOutputs.clear(); setInputSize(0); setOutputSize(0); qDeleteAll(m_icElements); m_icElements.clear(); // ---------------------------------------------- QFileInfo fileInfo; fileInfo.setFile(GlobalProperties::currentDir, QFileInfo(fileName).fileName()); if (!fileInfo.exists() || !fileInfo.isFile()) { throw Pandaception(fileInfo.absoluteFilePath() + tr(" not found.")); } m_fileWatcher.addPath(fileInfo.absoluteFilePath()); m_file = fileInfo.absoluteFilePath(); setToolTip(m_file); // ---------------------------------------------- QFile file(fileInfo.absoluteFilePath()); if (!file.open(QIODevice::ReadOnly)) { throw Pandaception(QObject::tr("Error opening file: ") + file.errorString()); } QDataStream stream(&file); stream.setVersion(QDataStream::Qt_5_12); const QVersionNumber version = Serialization::loadVersion(stream); Serialization::loadDolphinFileName(stream, version); Serialization::loadRect(stream, version); const auto items = Serialization::deserialize(stream, {}, version); for (auto *item : items) { if (item->type() != GraphicElement::Type) { continue; } auto *elm = qgraphicsitem_cast(item); switch(elm->elementGroup()){ case ElementGroup::Input: loadInputElement(elm); break; case ElementGroup::Output: loadOutputElement(elm); break; default: m_icElements.append(elm); break; } } file.close(); m_icInputLabels = QVector(m_icInputs.size()); m_icOutputLabels = QVector(m_icOutputs.size()); sortPorts(m_icInputs); sortPorts(m_icOutputs); loadInputsLabels(); loadOutputsLabels(); loadInputs(); loadOutputs(); // ---------------------------------------------- if (label().isEmpty()) { setLabel(fileInfo.baseName().toUpper()); } const qreal bottom = portsBoundingRect().united(QRectF(0, 0, 64, 64)).bottom(); m_label->setPos(30, bottom + 5); generatePixmap(); qCDebug(zero) << QObject::tr("Finished reading IC."); } void IC::generatePixmap() { // make pixmap const QSize size = portsBoundingRect().united(QRectF(0, 0, 64, 64)).size().toSize(); QPixmap tempPixmap(size); tempPixmap.fill(Qt::transparent); QPainter tmpPainter(&tempPixmap); tmpPainter.setBrush(QColor(126, 126, 126)); tmpPainter.setPen(QPen(QBrush(QColor(78, 78, 78)), 0.5, Qt::SolidLine)); // draw package QPoint topLeft = tempPixmap.rect().topLeft(); topLeft.setX(topLeft.x() + 7); QSize finalSize = tempPixmap.rect().size(); finalSize.setWidth(finalSize.width() - 14); QRectF finalRect = QRectF(topLeft, finalSize); tmpPainter.drawRoundedRect(finalRect, 3, 3); QPixmap panda(":/basic/ic-panda2.svg"); QPointF pandaOrigin = finalRect.center(); pandaOrigin.setX(pandaOrigin.x() - panda.width() / 2); pandaOrigin.setY(pandaOrigin.y() - panda.height() / 2); tmpPainter.drawPixmap(pandaOrigin, panda); // draw shadow tmpPainter.setBrush(QColor(78, 78, 78)); tmpPainter.setPen(QPen(QBrush(QColor(78, 78, 78)), 0.5, Qt::SolidLine)); QRectF shadowRect(finalRect.bottomLeft(), finalRect.bottomRight()); shadowRect.adjust(0, -3, 0, 0); tmpPainter.drawRoundedRect(shadowRect, 3, 3); // draw semicircle QRectF topCenter = QRectF(finalRect.topLeft() + QPointF(18, -12), QSize(24, 24)); tmpPainter.drawChord(topCenter, 0, -180 * 16); m_pixmap = std::make_unique(tempPixmap); } void IC::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) { event->accept(); qApp->mainWindow()->loadPandaFile(m_file); } void IC::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) { Q_UNUSED(widget) Q_UNUSED(option) if (isSelected()) { painter->save(); painter->setBrush(m_selectionBrush); painter->setPen(QPen(m_selectionPen, 0.5, Qt::SolidLine)); painter->drawRoundedRect(portsBoundingRect().united(QRectF(0, 0, 64, 64)), 5, 5); painter->restore(); } painter->drawPixmap(boundingRect().topLeft(), pixmap()); } void IC::loadInputElement(GraphicElement *elm) { for (auto *outputPort : elm->outputs()) { auto *nodeElm = ElementFactory::buildElement(ElementType::Node); nodeElm->setPos(elm->pos()); nodeElm->setLabel(elm->label().isEmpty() ? ElementFactory::typeToText(elm->elementType()) : elm->label()); auto *nodeInput = nodeElm->inputPort(); nodeInput->setName(outputPort->name()); nodeInput->setRequired(elm->elementType() == ElementType::Clock); nodeInput->setDefaultStatus(outputPort->status()); nodeInput->setStatus(outputPort->status()); m_icInputs.append(nodeInput); m_icElements.append(nodeElm); const auto conns = outputPort->connections(); for (auto *conn : conns) { conn->setStartPort(nodeElm->outputPort()); } } delete elm; } void IC::loadOutputElement(GraphicElement *elm) { for (auto *inputPort : elm->inputs()) { auto *nodeElm = ElementFactory::buildElement(ElementType::Node); nodeElm->setPos(elm->pos()); nodeElm->setLabel(elm->label().isEmpty() ? ElementFactory::typeToText(elm->elementType()) : elm->label()); auto *nodeOutput = nodeElm->outputPort(); nodeOutput->setName(inputPort->name()); m_icOutputs.append(nodeOutput); m_icElements.append(nodeElm); for (auto *conn : inputPort->connections()) { conn->setEndPort(nodeElm->inputPort()); } } delete elm; } bool IC::comparePorts(QNEPort *port1, QNEPort *port2) { QPointF p1 = port1->graphicElement()->pos(); QPointF p2 = port2->graphicElement()->pos(); if (p1 != p2) { return (p1.y() < p2.y()) || (qFuzzyCompare(p1.y(), p2.y()) && (p1.x() < p2.x())); } p1 = port1->pos(); p2 = port2->pos(); return (p1.x() < p2.x()) || (qFuzzyCompare(p1.x(), p2.x()) && (p1.y() < p2.y())); } void IC::sortPorts(QVector &map) { std::stable_sort(map.begin(), map.end(), comparePorts); } LogicElement *IC::inputLogic(const int index) { return m_icInputs.at(index)->logic(); } LogicElement *IC::outputLogic(const int index) { return m_icOutputs.at(index)->logic(); } void IC::loadInputsLabels() { for (int portIndex = 0; portIndex < inputSize(); ++portIndex) { auto *inputPort = m_icInputs.at(portIndex); auto *elm = inputPort->graphicElement(); QString lb = elm->label(); if (!inputPort->name().isEmpty()) { lb += " "; lb += inputPort->name(); } if (!elm->genericProperties().isEmpty()) { lb += " [" + elm->genericProperties() + "]"; } m_icInputLabels[portIndex] = lb; } } void IC::loadOutputsLabels() { for (int portIndex = 0; portIndex < outputSize(); ++portIndex) { auto *outputPort = m_icOutputs.at(portIndex); auto *elm = outputPort->graphicElement(); QString label = elm->label(); if (!outputPort->name().isEmpty()) { label += " "; label += outputPort->name(); } if (!elm->genericProperties().isEmpty()) { label += " [" + elm->genericProperties() + "]"; } m_icOutputLabels[portIndex] = label; } } ElementMapping *IC::generateMap() const { return new ElementMapping(m_icElements); } void IC::refresh() { } void IC::copyFiles(const QFileInfo &srcFile) { IC::needToCopyFiles = true; const QString destFile = GlobalProperties::currentDir + "/" + srcFile.fileName(); QFile file; if (!file.exists(destFile) && !file.copy(srcFile.absoluteFilePath(), destFile)) { throw Pandaception(tr("Error copying file: ") + file.errorString()); } file.setFileName(destFile); if (!file.open(QIODevice::ReadOnly)) { throw Pandaception(QObject::tr("Error opening file: ") + file.errorString()); } QDataStream stream(&file); stream.setVersion(QDataStream::Qt_5_12); const QVersionNumber version = Serialization::loadVersion(stream); Serialization::loadDolphinFileName(stream, version); Serialization::loadRect(stream, version); IC::path = srcFile.absolutePath(); Serialization::deserialize(stream, {}, version); IC::needToCopyFiles = false; IC::path.clear(); } wiRedPanda-4.1.12/app/ic.h000066400000000000000000000034451444020206400151430ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include "elementmapping.h" #include "graphicelement.h" #include #include class ICPrototype; class IC : public GraphicElement { Q_OBJECT friend class CodeGenerator; public: explicit IC(QGraphicsItem *parent = nullptr); ~IC() override = default; IC(const IC &other) : IC(other.parentItem()) {} static void copyFiles(const QFileInfo &srcFile); ElementMapping *generateMap() const; LogicElement *inputLogic(const int index); LogicElement *outputLogic(const int index); void load(QDataStream &stream, QMap &portMap, const QVersionNumber version) override; void loadFile(const QString &fileName); void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override; void refresh() override; void save(QDataStream &stream) const override; protected: void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) override; private: static bool comparePorts(QNEPort *port1, QNEPort *port2); static void sortPorts(QVector &map); inline static bool needToCopyFiles = false; inline static QString path; void copyFile(); void generatePixmap(); void loadInputElement(GraphicElement *elm); void loadInputs(); void loadInputsLabels(); void loadOutputElement(GraphicElement *elm); void loadOutputs(); void loadOutputsLabels(); QFileSystemWatcher m_fileWatcher; QString m_file; QVector m_icElements; QVector m_icInputs; QVector m_icOutputs; QVector m_icInputLabels; QVector m_icOutputLabels; }; Q_DECLARE_METATYPE(IC) wiRedPanda-4.1.12/app/install.pri000066400000000000000000000056651444020206400165670ustar00rootroot00000000000000unix { #VARIABLES isEmpty(PREFIX) { PREFIX = /usr/local } BINDIR = $$PREFIX/bin DATADIR = $$PREFIX/share DEFINES += DATADIR=\\\"$$DATADIR\\\" PKGDATADIR=\\\"$$PKGDATADIR\\\" #MAKE INSTALL INSTALLS += target shell desktop mime icon26 icon32 icon48 icon64 icon128 fileIcon26 fileIcon32 fileIcon48 fileIcon64 fileIcon128 postinst target.path = $$BINDIR shell.path = $$BINDIR shell.files = $${PWD}/resources/wpanda.sh desktop.path = $$DATADIR/applications desktop.files += resources/$${TARGET}.desktop mime.path = $$DATADIR/xml/misc mime.files += $${PWD}/resources/$${TARGET}-mime.xml icon128.path = $$DATADIR/icons/hicolor/128x128/apps icon128.files += resources/icons/128x128/$${TARGET}.png icon64.path = $$DATADIR/icons/hicolor/64x64/apps icon64.files += resources/icons/64x64/$${TARGET}.png icon48.path = $$DATADIR/icons/hicolor/48x48/apps icon48.files += resources/icons/48x48/$${TARGET}.png icon32.path = $$DATADIR/icons/hicolor/32x32/apps icon32.files += resources/icons/32x32/$${TARGET}.png icon26.path = $$DATADIR/icons/hicolor/26x26/apps icon26.files += resources/icons/26x26/$${TARGET}.png fileIcon128.path = $$DATADIR/icons/hicolor/128x128/apps fileIcon128.files += resources/icons/128x128/$${TARGET}-file.png fileIcon64.path = $$DATADIR/icons/hicolor/64x64/apps fileIcon64.files += resources/icons/64x64/$${TARGET}-file.png fileIcon48.path = $$DATADIR/icons/hicolor/48x48/apps fileIcon48.files += resources/icons/48x48/$${TARGET}-file.png fileIcon32.path = $$DATADIR/icons/hicolor/32x32/apps fileIcon32.files += resources/icons/32x32/$${TARGET}-file.png fileIcon26.path = $$DATADIR/icons/hicolor/26x26/apps fileIcon26.files += resources/icons/26x26/$${TARGET}-file.png postinst.path += $$DATADIR postinst.commands += desktop-file-install /usr/local/share/applications/wpanda.desktop ; postinst.commands += xdg-mime install --mode system /usr/local/share/xml/misc/wpanda-mime.xml ; #postinst.commands += xdg-mime default /usr/local/share/applications/wpanda.desktop application/x-wpanda ; postinst.commands += xdg-icon-resource install --context mimetypes --size 128 /usr/local/share/icons/hicolor/128x128/apps/wpanda-file.png application-x-wpanda ; postinst.commands += xdg-icon-resource install --context mimetypes --size 64 /usr/local/share/icons/hicolor/64x64/apps/wpanda-file.png application-x-wpanda ; postinst.commands += xdg-icon-resource install --context mimetypes --size 48 /usr/local/share/icons/hicolor/48x48/apps/wpanda-file.png application-x-wpanda ; postinst.commands += xdg-icon-resource install --context mimetypes --size 32 /usr/local/share/icons/hicolor/32x32/apps/wpanda-file.png application-x-wpanda ; postinst.commands += xdg-icon-resource install --context mimetypes --size 26 /usr/local/share/icons/hicolor/26x26/apps/wpanda-file.png application-x-wpanda } wiRedPanda-4.1.12/app/itemwithid.cpp000066400000000000000000000006321444020206400172450ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #include "itemwithid.h" #include "elementfactory.h" ItemWithId::ItemWithId() { ElementFactory::addItem(this); } ItemWithId::~ItemWithId() { ElementFactory::removeItem(this); } int ItemWithId::id() const { return m_id; } void ItemWithId::setId(const int id) { m_id = id; } wiRedPanda-4.1.12/app/itemwithid.h000066400000000000000000000005231444020206400167110ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include class ItemWithId { public: ItemWithId(); virtual ~ItemWithId(); int id() const; void setId(const int id); private: Q_DISABLE_COPY(ItemWithId) int m_id = 0; }; wiRedPanda-4.1.12/app/lengthdialog.cpp000066400000000000000000000013731444020206400175420ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #include "lengthdialog.h" #include "ui_lengthdialog.h" LengthDialog::LengthDialog(const int currentLength, QWidget *parent) : QDialog(parent) , m_ui(new Ui::LengthDialog) { m_ui->setupUi(this); m_ui->lengthSpinBox->setValue(currentLength); setWindowTitle(tr("Simulation Length Selection")); connect(m_ui->buttonBox, &QDialogButtonBox::accepted, this, &QDialog::accept); connect(m_ui->buttonBox, &QDialogButtonBox::rejected, this, &QDialog::reject); } LengthDialog::~LengthDialog() { delete m_ui; } int LengthDialog::length() { return (exec() == QDialog::Accepted) ? m_ui->lengthSpinBox->value() : -1; } wiRedPanda-4.1.12/app/lengthdialog.h000066400000000000000000000007051444020206400172050ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include namespace Ui { class LengthDialog; } class LengthDialog : public QDialog { Q_OBJECT public: explicit LengthDialog(const int currentLength, QWidget *parent = nullptr); ~LengthDialog() override; int length(); private: Q_DISABLE_COPY(LengthDialog) Ui::LengthDialog *m_ui; }; wiRedPanda-4.1.12/app/lengthdialog.ui000066400000000000000000000065211444020206400173750ustar00rootroot00000000000000 LengthDialog 0 0 184 116 Dialog :/toolbar/wavyIcon.svg:/toolbar/wavyIcon.svg 2 2048 1 64 Qt::Horizontal 2 Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop Simulation Length 2048 Qt::AlignRight|Qt::AlignTop|Qt::AlignTrailing Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter 2 2048 1 64 QDialogButtonBox::Cancel|QDialogButtonBox::Ok lengthSlider valueChanged(int) lengthSpinBox setValue(int) 334 47 499 21 lengthSpinBox valueChanged(int) lengthSlider setValue(int) 499 21 334 47 wiRedPanda-4.1.12/app/logicelement.cpp000066400000000000000000000046211444020206400175470ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #include "logicelement.h" LogicElement::LogicElement(const int inputSize, const int outputSize) : m_inputValues(inputSize, false) , m_inputPairs(inputSize, {}) , m_outputValues(outputSize, false) { } bool LogicElement::isValid() const { return m_isValid; } void LogicElement::clearSucessors() { for (const auto &logic : qAsConst(m_successors)) { for (auto &inputPair : logic->m_inputPairs) { if (inputPair.logic == this) { inputPair.logic = nullptr; inputPair.port = 0; } } } m_successors.clear(); } bool LogicElement::updateInputs() { if (!m_isValid) { return false; } for (int index = 0; index < m_inputPairs.size(); ++index) { m_inputValues[index] = inputValue(index); } return true; } void LogicElement::connectPredecessor(const int index, LogicElement *logic, const int port) { m_inputPairs[index] = {logic, port}; logic->m_successors.insert(this); } void LogicElement::setOutputValue(const int index, const bool value) { m_outputValues[index] = value; } void LogicElement::setOutputValue(const bool value) { setOutputValue(0, value); } void LogicElement::validate() { m_isValid = std::all_of(m_inputPairs.cbegin(), m_inputPairs.cend(), [](auto pair) { return pair.logic != nullptr; }); if (!m_isValid) { for (auto *logic : qAsConst(m_successors)) { logic->m_isValid = false; } } } bool LogicElement::operator>(const LogicElement &other) const { return (m_priority > other.m_priority); } int LogicElement::calculatePriority() { if (m_beingVisited) { return 0; } if (m_priority != -1) { return m_priority; } m_beingVisited = true; int max = 0; for (auto *logic : qAsConst(m_successors)) { max = qMax(logic->calculatePriority(), max); } const int priority = max + 1; m_priority = priority; m_beingVisited = false; return priority; } bool LogicElement::outputValue(const int index) const { return m_outputValues.at(index); } bool LogicElement::inputValue(const int index) const { auto *pred = m_inputPairs.at(index).logic; int port = m_inputPairs.at(index).port; return pred->outputValue(port); } wiRedPanda-4.1.12/app/logicelement.h000066400000000000000000000023351444020206400172140ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include #include class LogicElement; struct InputPair { LogicElement *logic = nullptr; int port = 0; }; //! Represent logic elements in the simulation layer class LogicElement { public: explicit LogicElement(const int inputSize, const int outputSize); virtual ~LogicElement() = default; bool operator>(const LogicElement &other) const; bool inputValue(const int index = 0) const; bool isValid() const; bool outputValue(const int index = 0) const; int calculatePriority(); virtual void updateLogic() = 0; void clearSucessors(); void connectPredecessor(const int index, LogicElement *logic, const int port); void setOutputValue(const bool value); void setOutputValue(const int index, const bool value); void validate(); protected: bool updateInputs(); QVector m_inputValues; private: Q_DISABLE_COPY(LogicElement) QSet m_successors; QVector m_inputPairs; QVector m_outputValues; bool m_beingVisited = false; bool m_isValid = true; int m_priority = -1; }; wiRedPanda-4.1.12/app/logicelement/000077500000000000000000000000001444020206400170405ustar00rootroot00000000000000wiRedPanda-4.1.12/app/logicelement/logicand.cpp000066400000000000000000000007201444020206400213230ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #include "logicand.h" #include LogicAnd::LogicAnd(const int inputSize) : LogicElement(inputSize, 1) { } void LogicAnd::updateLogic() { if (!updateInputs()) { return; } const auto result = std::accumulate(m_inputValues.cbegin(), m_inputValues.cend(), true, std::bit_and<>()); setOutputValue(result); } wiRedPanda-4.1.12/app/logicelement/logicand.h000066400000000000000000000005061444020206400207720ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include "logicelement.h" class LogicAnd : public LogicElement { public: explicit LogicAnd(const int inputSize); void updateLogic() override; private: Q_DISABLE_COPY(LogicAnd) }; wiRedPanda-4.1.12/app/logicelement/logicdemux.cpp000066400000000000000000000010561444020206400217060ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #include "logicdemux.h" LogicDemux::LogicDemux() : LogicElement(2, 2) { } void LogicDemux::updateLogic() { if (!updateInputs()) { return; } const bool data = m_inputValues.at(0); const bool choice = m_inputValues.at(1); bool out0 = false; bool out1 = false; if (!choice) { out0 = data; } else { out1 = data; } setOutputValue(0, out0); setOutputValue(1, out1); } wiRedPanda-4.1.12/app/logicelement/logicdemux.h000066400000000000000000000004711444020206400213530ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include "logicelement.h" class LogicDemux : public LogicElement { public: explicit LogicDemux(); void updateLogic() override; private: Q_DISABLE_COPY(LogicDemux) }; wiRedPanda-4.1.12/app/logicelement/logicdflipflop.cpp000066400000000000000000000015131444020206400225410ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #include "logicdflipflop.h" LogicDFlipFlop::LogicDFlipFlop() : LogicElement(4, 2) { setOutputValue(0, false); setOutputValue(1, true); } void LogicDFlipFlop::updateLogic() { if (!updateInputs()) { return; } bool q0 = outputValue(0); bool q1 = outputValue(1); const bool D = m_inputValues.at(0); const bool clk = m_inputValues.at(1); const bool prst = m_inputValues.at(2); const bool clr = m_inputValues.at(3); if (clk && !m_lastClk) { q0 = m_lastValue; q1 = !m_lastValue; } if (!prst || !clr) { q0 = !prst; q1 = !clr; } m_lastClk = clk; m_lastValue = D; setOutputValue(0, q0); setOutputValue(1, q1); } wiRedPanda-4.1.12/app/logicelement/logicdflipflop.h000066400000000000000000000005771444020206400222170ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include "logicelement.h" class LogicDFlipFlop : public LogicElement { public: explicit LogicDFlipFlop(); void updateLogic() override; private: Q_DISABLE_COPY(LogicDFlipFlop) bool m_lastClk = false; bool m_lastValue = true; }; wiRedPanda-4.1.12/app/logicelement/logicdlatch.cpp000066400000000000000000000011341444020206400220200ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #include "logicdlatch.h" LogicDLatch::LogicDLatch() : LogicElement(2, 2) { setOutputValue(0, false); setOutputValue(1, true); } void LogicDLatch::updateLogic() { if (!updateInputs()) { return; } bool q0 = outputValue(0); bool q1 = outputValue(1); const bool D = m_inputValues.at(0); const bool enable = m_inputValues.at(1); if (enable) { q0 = D; q1 = !D; } setOutputValue(0, q0); setOutputValue(1, q1); } wiRedPanda-4.1.12/app/logicelement/logicdlatch.h000066400000000000000000000004741444020206400214730ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include "logicelement.h" class LogicDLatch : public LogicElement { public: explicit LogicDLatch(); void updateLogic() override; private: Q_DISABLE_COPY(LogicDLatch) }; wiRedPanda-4.1.12/app/logicelement/logicelement.pri000066400000000000000000000016531444020206400222300ustar00rootroot00000000000000SOURCES += \ $$PWD/logicand.cpp \ $$PWD/logicdemux.cpp \ $$PWD/logicdflipflop.cpp \ $$PWD/logicdlatch.cpp \ $$PWD/logicinput.cpp \ $$PWD/logicjkflipflop.cpp \ $$PWD/logicmux.cpp \ $$PWD/logicnand.cpp \ $$PWD/logicnode.cpp \ $$PWD/logicnor.cpp \ $$PWD/logicnot.cpp \ $$PWD/logicor.cpp \ $$PWD/logicoutput.cpp \ $$PWD/logicsrflipflop.cpp \ $$PWD/logictflipflop.cpp \ $$PWD/logicxnor.cpp \ $$PWD/logicxor.cpp HEADERS += \ $$PWD/logicand.h \ $$PWD/logicdemux.h \ $$PWD/logicdflipflop.h \ $$PWD/logicdlatch.h \ $$PWD/logicinput.h \ $$PWD/logicjkflipflop.h \ $$PWD/logicmux.h \ $$PWD/logicnand.h \ $$PWD/logicnode.h \ $$PWD/logicnone.h \ $$PWD/logicnor.h \ $$PWD/logicnot.h \ $$PWD/logicor.h \ $$PWD/logicoutput.h \ $$PWD/logicsrflipflop.h \ $$PWD/logictflipflop.h \ $$PWD/logicxnor.h \ $$PWD/logicxor.h wiRedPanda-4.1.12/app/logicelement/logicinput.cpp000066400000000000000000000006361444020206400217260ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #include "logicinput.h" LogicInput::LogicInput(const bool defaultValue, const int nOutputs) : LogicElement(0, nOutputs) { setOutputValue(0, defaultValue); for (int port = 1; port < nOutputs; ++port) { setOutputValue(port, false); } } void LogicInput::updateLogic() { } wiRedPanda-4.1.12/app/logicelement/logicinput.h000066400000000000000000000005601444020206400213670ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include "logicelement.h" class LogicInput : public LogicElement { public: explicit LogicInput(const bool defaultValue = false, const int nOutputs = 1); void updateLogic() override; private: Q_DISABLE_COPY(LogicInput) }; wiRedPanda-4.1.12/app/logicelement/logicjkflipflop.cpp000066400000000000000000000020641444020206400227240ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #include "logicjkflipflop.h" LogicJKFlipFlop::LogicJKFlipFlop() : LogicElement(5, 2) { setOutputValue(0, false); setOutputValue(1, true); } void LogicJKFlipFlop::updateLogic() { if (!updateInputs()) { return; } bool q0 = outputValue(0); bool q1 = outputValue(1); const bool j = m_inputValues.at(0); const bool clk = m_inputValues.at(1); const bool k = m_inputValues.at(2); const bool prst = m_inputValues.at(3); const bool clr = m_inputValues.at(4); if (clk && !m_lastClk) { if (m_lastJ && m_lastK) { std::swap(q0, q1); } else if (m_lastJ) { q0 = true; q1 = false; } else if (m_lastK) { q0 = false; q1 = true; } } if (!prst || !clr) { q0 = !prst; q1 = !clr; } m_lastClk = clk; m_lastK = k; m_lastJ = j; setOutputValue(0, q0); setOutputValue(1, q1); } wiRedPanda-4.1.12/app/logicelement/logicjkflipflop.h000066400000000000000000000006271444020206400223740ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include "logicelement.h" class LogicJKFlipFlop : public LogicElement { public: explicit LogicJKFlipFlop(); void updateLogic() override; private: Q_DISABLE_COPY(LogicJKFlipFlop) bool m_lastClk = false; bool m_lastJ = true; bool m_lastK = true; }; wiRedPanda-4.1.12/app/logicelement/logicmux.cpp000066400000000000000000000007051444020206400213750ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #include "logicmux.h" LogicMux::LogicMux() : LogicElement(3, 1) { } void LogicMux::updateLogic() { if (!updateInputs()) { return; } const bool data1 = m_inputValues.at(0); const bool data2 = m_inputValues.at(1); const bool choice = m_inputValues.at(2); setOutputValue(choice ? data2 : data1); } wiRedPanda-4.1.12/app/logicelement/logicmux.h000066400000000000000000000004631444020206400210430ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include "logicelement.h" class LogicMux : public LogicElement { public: explicit LogicMux(); void updateLogic() override; private: Q_DISABLE_COPY(LogicMux) }; wiRedPanda-4.1.12/app/logicelement/logicnand.cpp000066400000000000000000000007251444020206400215060ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #include "logicnand.h" #include LogicNand::LogicNand(const int inputSize) : LogicElement(inputSize, 1) { } void LogicNand::updateLogic() { if (!updateInputs()) { return; } const auto result = std::accumulate(m_inputValues.cbegin(), m_inputValues.cend(), true, std::bit_and<>()); setOutputValue(!result); } wiRedPanda-4.1.12/app/logicelement/logicnand.h000066400000000000000000000005111444020206400211440ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include "logicelement.h" class LogicNand : public LogicElement { public: explicit LogicNand(const int inputSize); void updateLogic() override; private: Q_DISABLE_COPY(LogicNand) }; wiRedPanda-4.1.12/app/logicelement/logicnode.cpp000066400000000000000000000005001444020206400215020ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #include "logicnode.h" LogicNode::LogicNode() : LogicElement(1, 1) { } void LogicNode::updateLogic() { if (!updateInputs()) { return; } setOutputValue(m_inputValues.at(0)); } wiRedPanda-4.1.12/app/logicelement/logicnode.h000066400000000000000000000004661444020206400211620ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include "logicelement.h" class LogicNode : public LogicElement { public: explicit LogicNode(); void updateLogic() override; private: Q_DISABLE_COPY(LogicNode) }; wiRedPanda-4.1.12/app/logicelement/logicnone.cpp000066400000000000000000000004331444020206400215210ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-Unifesp and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #include "logicnone.h" LogicNone::LogicNone() : LogicElement(0, 0) { } void LogicNone::_updateLogic(const std::vector &inputs) { Q_UNUSED(inputs); } wiRedPanda-4.1.12/app/logicelement/logicnone.h000066400000000000000000000005171444020206400211710ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include "logicelement.h" class LogicNone : public LogicElement { public: explicit LogicNone() : LogicElement(0, 0) {} private: Q_DISABLE_COPY(LogicNone) void updateLogic() override {} }; wiRedPanda-4.1.12/app/logicelement/logicnor.cpp000066400000000000000000000007211444020206400213600ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #include "logicnor.h" #include LogicNor::LogicNor(const int inputSize) : LogicElement(inputSize, 1) { } void LogicNor::updateLogic() { if (!updateInputs()) { return; } const auto result = std::accumulate(m_inputValues.cbegin(), m_inputValues.cend(), false, std::bit_or<>()); setOutputValue(!result); } wiRedPanda-4.1.12/app/logicelement/logicnor.h000066400000000000000000000005061444020206400210260ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include "logicelement.h" class LogicNor : public LogicElement { public: explicit LogicNor(const int inputSize); void updateLogic() override; private: Q_DISABLE_COPY(LogicNor) }; wiRedPanda-4.1.12/app/logicelement/logicnot.cpp000066400000000000000000000004751444020206400213700ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #include "logicnot.h" LogicNot::LogicNot() : LogicElement(1, 1) { } void LogicNot::updateLogic() { if (!updateInputs()) { return; } setOutputValue(!m_inputValues.at(0)); } wiRedPanda-4.1.12/app/logicelement/logicnot.h000066400000000000000000000004631444020206400210320ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include "logicelement.h" class LogicNot : public LogicElement { public: explicit LogicNot(); void updateLogic() override; private: Q_DISABLE_COPY(LogicNot) }; wiRedPanda-4.1.12/app/logicelement/logicor.cpp000066400000000000000000000007141444020206400212040ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #include "logicor.h" #include LogicOr::LogicOr(const int inputSize) : LogicElement(inputSize, 1) { } void LogicOr::updateLogic() { if (!updateInputs()) { return; } const auto result = std::accumulate(m_inputValues.cbegin(), m_inputValues.cend(), false, std::bit_or<>()); setOutputValue(result); } wiRedPanda-4.1.12/app/logicelement/logicor.h000066400000000000000000000005031444020206400206450ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include "logicelement.h" class LogicOr : public LogicElement { public: explicit LogicOr(const int inputSize); void updateLogic() override; private: Q_DISABLE_COPY(LogicOr) }; wiRedPanda-4.1.12/app/logicelement/logicoutput.cpp000066400000000000000000000007011444020206400221200ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #include "logicoutput.h" LogicOutput::LogicOutput(const int inputSize) : LogicElement(inputSize, inputSize) { } void LogicOutput::updateLogic() { if (!updateInputs()) { return; } for (int index = 0; index < m_inputValues.size(); ++index) { setOutputValue(index, m_inputValues.at(index)); } } wiRedPanda-4.1.12/app/logicelement/logicoutput.h000066400000000000000000000005171444020206400215720ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include "logicelement.h" class LogicOutput : public LogicElement { public: explicit LogicOutput(const int inputSize); void updateLogic() override; private: Q_DISABLE_COPY(LogicOutput) }; wiRedPanda-4.1.12/app/logicelement/logicsrflipflop.cpp000066400000000000000000000017001444020206400227400ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #include "logicsrflipflop.h" LogicSRFlipFlop::LogicSRFlipFlop() : LogicElement(5, 2) { setOutputValue(0, false); setOutputValue(1, true); } void LogicSRFlipFlop::updateLogic() { if (!updateInputs()) { return; } bool q0 = outputValue(0); bool q1 = outputValue(1); const bool s = m_inputValues.at(0); const bool clk = m_inputValues.at(1); const bool r = m_inputValues.at(2); const bool prst = m_inputValues.at(3); const bool clr = m_inputValues.at(4); if (clk && !m_lastClk) { if (s && r) { q0 = true; q1 = true; } else if (s != r) { q0 = s; q1 = r; } } if (!prst || !clr) { q0 = !prst; q1 = !clr; } m_lastClk = clk; setOutputValue(0, q0); setOutputValue(1, q1); } wiRedPanda-4.1.12/app/logicelement/logicsrflipflop.h000066400000000000000000000005451444020206400224130ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include "logicelement.h" class LogicSRFlipFlop : public LogicElement { public: explicit LogicSRFlipFlop(); void updateLogic() override; private: Q_DISABLE_COPY(LogicSRFlipFlop) bool m_lastClk = false; }; wiRedPanda-4.1.12/app/logicelement/logictflipflop.cpp000066400000000000000000000015471444020206400225700ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #include "logictflipflop.h" LogicTFlipFlop::LogicTFlipFlop() : LogicElement(4, 2) { setOutputValue(0, false); setOutputValue(1, true); } void LogicTFlipFlop::updateLogic() { if (!updateInputs()) { return; } bool q0 = outputValue(0); bool q1 = outputValue(1); const bool T = m_inputValues.at(0); const bool clk = m_inputValues.at(1); const bool prst = m_inputValues.at(2); const bool clr = m_inputValues.at(3); if (clk && !m_lastClk) { if (m_lastValue) { q0 = !q0; q1 = !q0; } } if (!prst || !clr) { q0 = !prst; q1 = !clr; } m_lastClk = clk; m_lastValue = T; setOutputValue(0, q0); setOutputValue(1, q1); } wiRedPanda-4.1.12/app/logicelement/logictflipflop.h000066400000000000000000000005771444020206400222370ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include "logicelement.h" class LogicTFlipFlop : public LogicElement { public: explicit LogicTFlipFlop(); void updateLogic() override; private: Q_DISABLE_COPY(LogicTFlipFlop) bool m_lastClk = false; bool m_lastValue = true; }; wiRedPanda-4.1.12/app/logicelement/logicxnor.cpp000066400000000000000000000007261444020206400215550ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #include "logicxnor.h" #include LogicXnor::LogicXnor(const int inputSize) : LogicElement(inputSize, 1) { } void LogicXnor::updateLogic() { if (!updateInputs()) { return; } const auto result = std::accumulate(m_inputValues.cbegin(), m_inputValues.cend(), false, std::bit_xor<>()); setOutputValue(!result); } wiRedPanda-4.1.12/app/logicelement/logicxnor.h000066400000000000000000000005111444020206400212120ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include "logicelement.h" class LogicXnor : public LogicElement { public: explicit LogicXnor(const int inputSize); void updateLogic() override; private: Q_DISABLE_COPY(LogicXnor) }; wiRedPanda-4.1.12/app/logicelement/logicxor.cpp000066400000000000000000000007211444020206400213720ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #include "logicxor.h" #include LogicXor::LogicXor(const int inputSize) : LogicElement(inputSize, 1) { } void LogicXor::updateLogic() { if (!updateInputs()) { return; } const auto result = std::accumulate(m_inputValues.cbegin(), m_inputValues.cend(), false, std::bit_xor<>()); setOutputValue(result); } wiRedPanda-4.1.12/app/logicelement/logicxor.h000066400000000000000000000005061444020206400210400ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include "logicelement.h" class LogicXor : public LogicElement { public: explicit LogicXor(const int inputSize); void updateLogic() override; private: Q_DISABLE_COPY(LogicXor) }; wiRedPanda-4.1.12/app/main.cpp000066400000000000000000000105171444020206400160250ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #include "application.h" #include "common.h" #include "globalproperties.h" #include "mainwindow.h" #include #include #ifdef Q_OS_WIN #include #endif int main(int argc, char *argv[]) { Comment::setVerbosity(-1); #ifdef Q_OS_WIN FILE *fpstdout = stdout, *fpstderr = stderr; if (AttachConsole(ATTACH_PARENT_PROCESS)) { freopen_s(&fpstdout, "CONOUT$", "w", stdout); freopen_s(&fpstderr, "CONOUT$", "w", stderr); } #endif #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling); QCoreApplication::setAttribute(Qt::AA_UseHighDpiPixmaps); #endif Application app(argc, argv); app.setOrganizationName("GIBIS-UNIFESP"); app.setApplicationName("WiRedPanda"); app.setApplicationVersion(APP_VERSION); app.setStyle("Fusion"); app.setWindowIcon(QIcon(":/toolbar/wpanda.svg")); try { QCommandLineParser parser; parser.setApplicationDescription(app.applicationName()); parser.addHelpOption(); parser.addVersionOption(); parser.addPositionalArgument("file", QCoreApplication::translate("main", "Circuit file to open.")); QCommandLineOption verbosityOption( {"v2", "verbosity"}, QCoreApplication::translate("main", "Verbosity level 0 to 5, disabled by default."), QCoreApplication::translate("main", "verbosity level")); parser.addOption(verbosityOption); QCommandLineOption arduinoFileOption( {"a", "arduino-file"}, QCoreApplication::translate("main", "Export circuit to "), QCoreApplication::translate("main", "arduino file")); parser.addOption(arduinoFileOption); QCommandLineOption waveformFileOption( {"w", "waveform"}, QCoreApplication::translate("main", "Export circuit to waveform text file"), QCoreApplication::translate("main", "waveform input text file")); parser.addOption(waveformFileOption); QCommandLineOption terminalFileOption( {"c", "terminal"}, QCoreApplication::translate("main", "Export circuit to waveform text file, reading input from terminal")); parser.addOption(terminalFileOption); parser.process(app); if (const QString verbosity = parser.value(verbosityOption); !verbosity.isEmpty()) { Comment::setVerbosity(verbosity.toInt()); } QStringList args = parser.positionalArguments(); if (const QString arduFile = parser.value(arduinoFileOption); !arduFile.isEmpty()) { if (!args.empty()) { GlobalProperties::verbose = false; MainWindow window; window.loadPandaFile(args.at(0)); window.exportToArduino(arduFile); } exit(0); } if (const QString wfFile = parser.value(waveformFileOption); !wfFile.isEmpty()) { if (!args.empty()) { GlobalProperties::verbose = false; MainWindow window; window.loadPandaFile(args.at(0)); window.exportToWaveFormFile(wfFile); } exit(0); } if (const bool isTerminal = parser.isSet(terminalFileOption); isTerminal) { if (!args.empty()) { GlobalProperties::verbose = false; MainWindow window; window.loadPandaFile(args.at(0)); window.exportToWaveFormTerminal(); } exit(0); } auto *window = new MainWindow(); app.setMainWindow(window); window->show(); if (!args.empty()) { window->loadPandaFile(args.at(0)); } } catch (const std::exception &e) { if (GlobalProperties::verbose) { QMessageBox::critical(nullptr, QObject::tr("Error!"), e.what()); } exit(1); } return app.exec(); } // TODO: Tests for all elements // TODO: Create arduino version of all elements // TODO: Select some elements, and input wires become input buttons, output wires become leds... // ...Connections are then transferred to the IC's ports. // TODO: ambiguous shortcut overloads (ctrl+y) wiRedPanda-4.1.12/app/mainwindow.cpp000066400000000000000000001254231444020206400172600ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #include "mainwindow.h" #include "ui_mainwindow.h" #include "bewaveddolphin.h" #include "codegenerator.h" #include "common.h" #include "dflipflop.h" #include "elementfactory.h" #include "elementlabel.h" #include "globalproperties.h" #include "graphicsview.h" #include "ic.h" #include "recentfiles.h" #include "settings.h" #include "simulation.h" #include "simulationblocker.h" #include "thememanager.h" #include "workspace.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #if QT_VERSION < QT_VERSION_CHECK(5, 14, 0) #define SKIPEMPTYPARTS QString::SkipEmptyParts #else #define SKIPEMPTYPARTS Qt::SkipEmptyParts #endif MainWindow::MainWindow(const QString &fileName, QWidget *parent) : QMainWindow(parent) , m_ui(new Ui::MainWindow) { qCDebug(zero) << tr("WiRedPanda Version = ") << APP_VERSION << tr(" OR ") << GlobalProperties::version; m_ui->setupUi(this); qCDebug(zero) << tr("Settings fileName: ") << Settings::fileName(); loadTranslation(Settings::value("language").toString()); connect(m_ui->tab, &QTabWidget::currentChanged, this, &MainWindow::tabChanged); connect(m_ui->tab, &QTabWidget::tabCloseRequested, this, &MainWindow::closeTab); qCDebug(zero) << tr("Restoring geometry and setting zoom controls."); restoreGeometry(Settings::value("MainWindow/geometry").toByteArray()); restoreState(Settings::value("MainWindow/windowState").toByteArray()); m_ui->splitter->restoreGeometry(Settings::value("MainWindow/splitter/geometry").toByteArray()); m_ui->splitter->restoreState(Settings::value("MainWindow/splitter/state").toByteArray()); qCDebug(zero) << tr("Preparing theme and UI modes."); auto *themeGroup = new QActionGroup(this); const auto actions = m_ui->menuTheme->actions(); for (auto *action : actions) { themeGroup->addAction(action); } themeGroup->setExclusive(true); connect(&ThemeManager::instance(), &ThemeManager::themeChanged, this, &MainWindow::updateTheme); updateTheme(); setFastMode(Settings::value("fastMode").toBool()); m_ui->actionLabelsUnderIcons->setChecked(Settings::value("labelsUnderIcons").toBool()); m_ui->mainToolBar->setToolButtonStyle(Settings::value("labelsUnderIcons").toBool() ? Qt::ToolButtonTextUnderIcon : Qt::ToolButtonIconOnly); qCDebug(zero) << tr("Setting left side menus."); auto *shortcut = new QShortcut(QKeySequence(Qt::CTRL | Qt::Key_F), this); connect(shortcut, &QShortcut::activated, m_ui->lineEditSearch, qOverload<>(&QWidget::setFocus)); populateLeftMenu(); m_ui->tabElements->setTabIcon(0, QIcon(":/input/buttonOff.svg")); m_ui->tabElements->setTabIcon(1, QIcon(":/basic/xor.svg")); m_ui->tabElements->setTabIcon(2, QIcon(DFlipFlop::pixmapPath())); m_ui->tabElements->setTabIcon(3, QIcon(":/basic/ic-panda.svg")); m_ui->tabElements->setTabIcon(4, QIcon(":/misc/text.png")); m_ui->tabElements->setTabEnabled(5, false); qCDebug(zero) << tr("Loading recent file list."); m_recentFiles = new RecentFiles(this); connect(this, &MainWindow::addRecentFile, m_recentFiles, &RecentFiles::addRecentFile); createRecentFileActions(); connect(m_recentFiles, &RecentFiles::recentFilesUpdated, this, &MainWindow::updateRecentFileActions); qCDebug(zero) << tr("Checking playing simulation."); m_ui->actionPlay->setChecked(true); qCDebug(zero) << tr("Window title."); setWindowTitle("WiRedPanda " + QString(APP_VERSION)); qCDebug(zero) << tr("Building a new tab."); createNewTab(); qCDebug(zero) << tr("Opening file if not empty."); if (!fileName.isEmpty()) { loadPandaFile(fileName); } qCDebug(zero) << tr("Disabling Arduino export."); m_ui->actionExportToArduino->setEnabled(false); QPixmapCache::setCacheLimit(100'000); qCDebug(zero) << tr("Adding examples to menu"); QDir examplesDir("examples"); if (examplesDir.exists()) { const auto entryList = examplesDir.entryList({"*.panda"}, QDir::Files); for (const auto &entry : entryList) { auto *action = new QAction(entry); connect(action, &QAction::triggered, this, [this] { if (auto *action = qobject_cast(sender())) { loadPandaFile("examples/" + action->text()); }}); m_ui->menuExamples->addAction(action); } } if (m_ui->menuExamples->isEmpty()) { m_ui->menuExamples->menuAction()->setVisible(false); } qCDebug(zero) << tr("Setting connections"); connect(m_ui->actionAbout, &QAction::triggered, this, &MainWindow::on_actionAbout_triggered); connect(m_ui->actionAboutQt, &QAction::triggered, this, &MainWindow::on_actionAboutQt_triggered); connect(m_ui->actionAboutThisVersion, &QAction::triggered, this, &MainWindow::aboutThisVersion); connect(m_ui->actionChangeTrigger, &QAction::triggered, m_ui->elementEditor, &ElementEditor::changeTriggerAction); connect(m_ui->actionDarkTheme, &QAction::triggered, this, &MainWindow::on_actionDarkTheme_triggered); connect(m_ui->actionEnglish, &QAction::triggered, this, &MainWindow::on_actionEnglish_triggered); connect(m_ui->actionExit, &QAction::triggered, this, &MainWindow::on_actionExit_triggered); connect(m_ui->actionExportToArduino, &QAction::triggered, this, &MainWindow::on_actionExportToArduino_triggered); connect(m_ui->actionExportToImage, &QAction::triggered, this, &MainWindow::on_actionExportToImage_triggered); connect(m_ui->actionExportToPdf, &QAction::triggered, this, &MainWindow::on_actionExportToPdf_triggered); connect(m_ui->actionFastMode, &QAction::triggered, this, &MainWindow::on_actionFastMode_triggered); connect(m_ui->actionFlipHorizontally, &QAction::triggered, this, &MainWindow::on_actionFlipHorizontally_triggered); connect(m_ui->actionFlipVertically, &QAction::triggered, this, &MainWindow::on_actionFlipVertically_triggered); connect(m_ui->actionFullscreen, &QAction::triggered, this, &MainWindow::on_actionFullscreen_triggered); connect(m_ui->actionGates, &QAction::triggered, this, &MainWindow::on_actionGates_triggered); connect(m_ui->actionLabelsUnderIcons, &QAction::triggered, this, &MainWindow::on_actionLabelsUnderIcons_triggered); connect(m_ui->actionLightTheme, &QAction::triggered, this, &MainWindow::on_actionLightTheme_triggered); connect(m_ui->actionMute, &QAction::triggered, this, &MainWindow::on_actionMute_triggered); connect(m_ui->actionNew, &QAction::triggered, this, &MainWindow::on_actionNew_triggered); connect(m_ui->actionOpen, &QAction::triggered, this, &MainWindow::on_actionOpen_triggered); connect(m_ui->actionPlay, &QAction::toggled, this, &MainWindow::on_actionPlay_toggled); connect(m_ui->actionPortuguese, &QAction::triggered, this, &MainWindow::on_actionPortuguese_triggered); connect(m_ui->actionReloadFile, &QAction::triggered, this, &MainWindow::on_actionReloadFile_triggered); connect(m_ui->actionRename, &QAction::triggered, m_ui->elementEditor, &ElementEditor::renameAction); connect(m_ui->actionResetZoom, &QAction::triggered, this, &MainWindow::on_actionResetZoom_triggered); connect(m_ui->actionRestart, &QAction::triggered, this, &MainWindow::on_actionRestart_triggered); connect(m_ui->actionRotateLeft, &QAction::triggered, this, &MainWindow::on_actionRotateLeft_triggered); connect(m_ui->actionRotateRight, &QAction::triggered, this, &MainWindow::on_actionRotateRight_triggered); connect(m_ui->actionSave, &QAction::triggered, this, &MainWindow::on_actionSave_triggered); connect(m_ui->actionSaveAs, &QAction::triggered, this, &MainWindow::on_actionSaveAs_triggered); connect(m_ui->actionSelectAll, &QAction::triggered, this, &MainWindow::on_actionSelectAll_triggered); connect(m_ui->actionWaveform, &QAction::triggered, this, &MainWindow::on_actionWaveform_triggered); connect(m_ui->actionWires, &QAction::triggered, this, &MainWindow::on_actionWires_triggered); connect(m_ui->actionZoomIn, &QAction::triggered, this, &MainWindow::on_actionZoomIn_triggered); connect(m_ui->actionZoomOut, &QAction::triggered, this, &MainWindow::on_actionZoomOut_triggered); connect(m_ui->lineEditSearch, &QLineEdit::returnPressed, this, &MainWindow::on_lineEditSearch_returnPressed); connect(m_ui->lineEditSearch, &QLineEdit::textChanged, this, &MainWindow::on_lineEditSearch_textChanged); connect(m_ui->pushButtonAddIC, &QPushButton::clicked, this, &MainWindow::on_pushButtonAddIC_clicked); connect(m_ui->pushButtonRemoveIC, &QPushButton::clicked, this, &MainWindow::on_pushButtonRemoveIC_clicked); connect(m_ui->pushButtonRemoveIC, &TrashButton::removeICFile, this, &MainWindow::removeICFile); } MainWindow::~MainWindow() { delete m_ui; } void MainWindow::loadAutosaveFiles() { QStringList autosaves(Settings::value("autosaveFile").toStringList()); qCDebug(zero) << tr("All autosave files: ") << autosaves; for (auto it = autosaves.begin(); it != autosaves.end();) { QFile file(*it); if (!file.exists()) { qCDebug(zero) << tr("Removing from config the autosave file that does not exist."); it = autosaves.erase(it); continue; } try { loadPandaFile(*it); } catch (const std::exception &e) { QMessageBox::critical(nullptr, tr("Error!"), e.what()); qCDebug(zero) << tr("Removing autosave file that is corrupted."); it = autosaves.erase(it); continue; } m_currentTab->setAutosaveFile(); ++it; } Settings::setValue("autosaveFile", autosaves); } void MainWindow::createNewTab() { qCDebug(zero) << tr("Creating new workspace."); auto *workspace = new WorkSpace(this); connect(workspace, &WorkSpace::fileChanged, this, &MainWindow::setCurrentFile); workspace->view()->setFastMode(m_ui->actionFastMode->isChecked()); workspace->scene()->updateTheme(); qCDebug(zero) << tr("Adding tab. #tabs: ") << m_ui->tab->count() << tr(", current tab: ") << m_tabIndex; m_ui->tab->addTab(workspace, tr("New Project")); qCDebug(zero) << tr("Selecting the newly created tab."); m_ui->tab->setCurrentIndex(m_ui->tab->count() - 1); qCDebug(zero) << tr("Finished #tabs: ") << m_ui->tab->count() << tr(", current tab: ") << m_tabIndex; } void MainWindow::removeUndoRedoMenu() { if (!m_currentTab) { return; } m_ui->menuEdit->removeAction(m_ui->menuEdit->actions().constFirst()); m_ui->menuEdit->removeAction(m_ui->menuEdit->actions().constFirst()); } void MainWindow::addUndoRedoMenu() { m_ui->menuEdit->insertAction(m_ui->menuEdit->actions().at(0), m_currentTab->scene()->undoAction()); m_ui->menuEdit->insertAction(m_ui->menuEdit->actions().at(1), m_currentTab->scene()->redoAction()); } void MainWindow::setFastMode(const bool fastMode) { m_ui->actionFastMode->setChecked(fastMode); if (m_currentTab) { m_currentTab->view()->setFastMode(fastMode); } } void MainWindow::on_actionExit_triggered() { close(); } void MainWindow::save(const QString &fileName) { if (!m_currentTab) { return; } m_currentTab->save(fileName); updateICList(); m_ui->statusBar->showMessage(tr("File saved successfully."), 4000); } void MainWindow::show() { QMainWindow::show(); if (!Settings::contains("hideV4Warning")) { aboutThisVersion(); } qCDebug(zero) << tr("Checking for autosave file recovery."); loadAutosaveFiles(); } void MainWindow::aboutThisVersion() { qCDebug(zero) << tr("'hideV4Warning' message box."); auto *checkBox = new QCheckBox(tr("Don't show this again.")); QMessageBox msgBox; msgBox.setParent(this); msgBox.setStandardButtons(QMessageBox::Ok); msgBox.setIcon(QMessageBox::Icon::Information); msgBox.setWindowTitle("WiRedPanda " + QString(APP_VERSION)); msgBox.setText( tr("This version is not 100% compatible with previous versions of WiRedPanda.\n" "To open old version projects containing ICs (or boxes), skins, and/or " "beWavedDolphin simulations, their files must be moved to the same directory " "as the main project file.\n" "WiRedPanda %1 will automatically list all other .panda files located " "in the same directory of the current project as ICs in the editor tab.\n" "You have to save new projects before accessing ICs and skins, or running " "beWavedDolphin simulations.") .arg(APP_VERSION)); msgBox.setWindowModality(Qt::WindowModal); msgBox.setDefaultButton(QMessageBox::Ok); msgBox.setCheckBox(checkBox); connect(checkBox, &QCheckBox::stateChanged, this, [](int state) { if (static_cast(state) == Qt::CheckState::Checked) { Settings::setValue("hideV4Warning", "true"); } else { Settings::remove("hideV4Warning"); } }); msgBox.exec(); } int MainWindow::closeTabAnyway() { QMessageBox msgBox; msgBox.setParent(this); msgBox.setStandardButtons(QMessageBox::Yes | QMessageBox::No); msgBox.setText(tr("File not saved. Close tab anyway?")); msgBox.setWindowModality(Qt::WindowModal); msgBox.setDefaultButton(QMessageBox::No); return msgBox.exec(); } int MainWindow::confirmSave(const bool multiple) { QMessageBox msgBox; msgBox.setParent(this); if (multiple) { msgBox.setStandardButtons(QMessageBox::Yes | QMessageBox::YesToAll | QMessageBox::No | QMessageBox::NoToAll | QMessageBox::Cancel); } else { msgBox.setStandardButtons(QMessageBox::Yes | QMessageBox::No | QMessageBox::Cancel); } const QString fileName = m_currentFile.fileName().isEmpty() ? tr("New Project") : m_currentFile.fileName(); msgBox.setText(fileName + tr(" has been modified. \nDo you want to save your changes?")); msgBox.setWindowModality(Qt::WindowModal); msgBox.setDefaultButton(QMessageBox::Yes); return msgBox.exec(); } void MainWindow::on_actionNew_triggered() { createNewTab(); } void MainWindow::on_actionWires_triggered(const bool checked) { if (m_currentTab) { m_currentTab->scene()->showWires(checked); } } void MainWindow::on_actionRotateRight_triggered() { if (m_currentTab) { m_currentTab->scene()->rotateRight(); } } void MainWindow::on_actionRotateLeft_triggered() { if (m_currentTab) { m_currentTab->scene()->rotateLeft(); } } void MainWindow::loadPandaFile(const QString &fileName) { createNewTab(); qCDebug(zero) << tr("Loading in editor."); m_currentTab->load(fileName); updateICList(); m_ui->statusBar->showMessage(tr("File loaded successfully."), 4000); } void MainWindow::on_actionOpen_triggered() { const QString path = m_currentFile.exists() ? "" : "./examples"; const QString fileName = QFileDialog::getOpenFileName(this, tr("Open File"), path, tr("Panda files (*.panda)")); if (fileName.isEmpty()) { return; } loadPandaFile(fileName); } void MainWindow::on_actionSave_triggered() { // TODO: if current file is autosave ask for filename QString fileName = m_currentFile.absoluteFilePath(); if (fileName.isEmpty()) { fileName = QFileDialog::getSaveFileName(this, tr("Save File as ..."), "", tr("Panda files (*.panda)")); if (fileName.isEmpty()) { return; } if (!fileName.endsWith(".panda")) { fileName.append(".panda"); } } save(fileName); } void MainWindow::on_actionSaveAs_triggered() { QString path; if (!m_currentFile.fileName().isEmpty()) { path = m_currentFile.absoluteFilePath(); } QString fileName = QFileDialog::getSaveFileName(this, tr("Save File as ..."), path, tr("Panda files (*.panda)")); if (fileName.isEmpty()) { return; } if (!fileName.endsWith(".panda")) { fileName.append(".panda"); } save(fileName); } void MainWindow::on_actionAbout_triggered() { QMessageBox::about( this, "WiRedPanda", tr("

WiRedPanda is a software developed by the students of the Federal University of São Paulo." " This project was created in order to help students learn about logic circuits.

" "

Software version: %1

" "

Creators:

" "
    " "
  • Davi Morales
  • " "
  • Lucas Lellis
  • " "
  • Rodrigo Torres
  • " "
  • Prof. Fábio Cappabianco, Ph.D.
  • " "
" "

WiRedPanda is currently maintained by Prof. Fábio Cappabianco, Ph.D. and Vinícius R. Miguel.

" "

Please file a report at our GitHub page if bugs are found or if you wish for a new functionality to be implemented.

" "

Visit our website!

") .arg(QApplication::applicationVersion())); } void MainWindow::on_actionAboutQt_triggered() { QMessageBox::aboutQt(this); } bool MainWindow::closeFiles() { while (m_ui->tab->count() != 0) { if (!closeTab(m_ui->tab->count() - 1)) { return false; } } return true; } void MainWindow::closeEvent(QCloseEvent *event) { bool closeWindow = false; if (!hasModifiedFiles()) { auto reply = QMessageBox::question( this, tr("Exit ") + QApplication::applicationName(), tr("Are you sure?"), QMessageBox::Cancel | QMessageBox::Yes, QMessageBox::Yes); if (reply == QMessageBox::Yes) { closeWindow = true; } } else if (closeFiles()) { closeWindow = true; } if (closeWindow) { updateSettings(); event->accept(); } else { event->ignore(); } } void MainWindow::updateSettings() { Settings::setValue("MainWindow/geometry", saveGeometry()); Settings::setValue("MainWindow/windowState", saveState()); Settings::setValue("MainWindow/splitter/geometry", m_ui->splitter->saveGeometry()); Settings::setValue("MainWindow/splitter/state", m_ui->splitter->saveState()); } bool MainWindow::hasModifiedFiles() { const QStringList autosaves = Settings::value("autosaveFile").toStringList(); const auto workspaces = m_ui->tab->findChildren(); for (auto *workspace : workspaces) { auto *undoStack = workspace->scene()->undoStack(); if (!undoStack->isClean()) { return true; } const QString fileName = workspace->fileInfo().fileName(); if (!fileName.isEmpty() && autosaves.contains(fileName)) { return true; } } return false; } QFileInfo MainWindow::currentFile() const { return m_currentTab ? m_currentTab->fileInfo() : QFileInfo(); } QDir MainWindow::currentDir() const { return m_currentTab ? m_currentTab->fileInfo().absoluteDir() : QDir(); } void MainWindow::setCurrentFile(const QFileInfo &fileInfo) { m_currentFile = fileInfo; QString text = fileInfo.exists() ? fileInfo.fileName() : tr("New Project"); if (!m_currentTab->scene()->undoStack()->isClean()) { text += "*"; } m_ui->tab->setTabText(m_tabIndex, text); qCDebug(zero) << tr("Adding file to recent files."); emit addRecentFile(fileInfo.absoluteFilePath()); } void MainWindow::on_actionSelectAll_triggered() { m_currentTab->scene()->selectAll(); } void MainWindow::updateICList() { m_ui->scrollAreaWidgetContents_IC->layout()->removeItem(m_ui->verticalSpacer_IC); const auto items = m_ui->scrollAreaWidgetContents_IC->findChildren(); for (auto *item : items) { item->deleteLater(); } const auto items2 = m_ui->scrollAreaWidgetContents_Search->findChildren(); for (auto *item : items2) { if (item->elementType() == ElementType::IC) { item->deleteLater(); } } if (m_currentFile.exists()) { qCDebug(zero) << tr("Show files."); QDir directory(m_currentFile.absoluteDir()); QStringList files = directory.entryList({"*.panda", "*.PANDA"}, QDir::Files); files.removeAll(m_currentFile.fileName()); for (int i = files.size() - 1; i >= 0; --i) { if (files.at(i).at(0) == '.') { files.removeAt(i); } } qCDebug(zero) << tr("Files: ") << files.join(", "); for (const QString &file : qAsConst(files)) { QPixmap pixmap(":/basic/ic-panda.svg"); auto *item = new ElementLabel(pixmap, ElementType::IC, file, this); m_ui->scrollAreaWidgetContents_IC->layout()->addWidget(item); auto *item2 = new ElementLabel(pixmap, ElementType::IC, file, this); m_ui->scrollAreaWidgetContents_Search->layout()->addWidget(item2); } } m_ui->scrollAreaWidgetContents_IC->layout()->addItem(m_ui->verticalSpacer_IC); } bool MainWindow::closeTab(const int tabIndex) { qCDebug(zero) << tr("Closing tab ") << tabIndex + 1 << tr(", #tabs: ") << m_ui->tab->count(); m_ui->tab->setCurrentIndex(tabIndex); qCDebug(zero) << tr("Checking if needs to save file."); if (!m_currentTab->scene()->undoStack()->isClean()) { const int selectedButton = confirmSave(false); if (selectedButton == QMessageBox::Cancel) { return false; } if (selectedButton == QMessageBox::Yes) { try { save(); } catch (const std::exception &e) { QMessageBox::critical(this, tr("Error"), e.what()); if (closeTabAnyway() == QMessageBox::No) { return false; } } } } qCDebug(zero) << tr("Deleting tab."); m_currentTab->deleteLater(); m_ui->tab->removeTab(tabIndex); qCDebug(zero) << tr("Closed tab ") << tabIndex << tr(", #tabs: ") << m_ui->tab->count() << tr(", current tab: ") << m_tabIndex; return true; } void MainWindow::disconnectTab() { if (!m_currentTab) { return; } m_ui->elementEditor->setScene(nullptr); qCDebug(zero) << tr("Stopping simulation."); m_currentTab->simulation()->stop(); qCDebug(zero) << tr("Disconnecting zoom from UI."); disconnect(m_currentTab->view(), &GraphicsView::zoomChanged, this, &MainWindow::zoomChanged); qCDebug(zero) << tr("Removing undo and redo actions from UI menu."); removeUndoRedoMenu(); disconnect(m_ui->actionClearSelection, &QAction::triggered, m_currentTab->scene(), &Scene::clearSelection); disconnect(m_ui->actionCopy, &QAction::triggered, m_currentTab->scene(), &Scene::copyAction); disconnect(m_ui->actionCut, &QAction::triggered, m_currentTab->scene(), &Scene::cutAction); disconnect(m_ui->actionDelete, &QAction::triggered, m_currentTab->scene(), &Scene::deleteAction); disconnect(m_ui->actionPaste, &QAction::triggered, m_currentTab->scene(), &Scene::pasteAction); disconnect(m_ui->elementEditor, &ElementEditor::sendCommand, m_currentTab->scene(), &Scene::receiveCommand); } void MainWindow::connectTab() { qCDebug(zero) << tr("Connecting undo and redo functions to UI menu."); addUndoRedoMenu(); qCDebug(zero) << tr("Setting Panda file info."); m_currentFile = m_currentTab->fileInfo(); updateICList(); qCDebug(zero) << tr("Connecting current tab to element editor menu in UI."); m_ui->elementEditor->setScene(m_currentTab->scene()); connect(m_currentTab->view(), &GraphicsView::zoomChanged, this, &MainWindow::zoomChanged); connect(m_ui->actionClearSelection, &QAction::triggered, m_currentTab->scene(), &Scene::clearSelection); connect(m_ui->actionCopy, &QAction::triggered, m_currentTab->scene(), &Scene::copyAction); connect(m_ui->actionCut, &QAction::triggered, m_currentTab->scene(), &Scene::cutAction); connect(m_ui->actionDelete, &QAction::triggered, m_currentTab->scene(), &Scene::deleteAction); connect(m_ui->actionPaste, &QAction::triggered, m_currentTab->scene(), &Scene::pasteAction); if (m_ui->actionPlay->isChecked()) { qCDebug(zero) << tr("Restarting simulation."); m_currentTab->simulation()->start(); m_currentTab->scene()->clearSelection(); } m_currentTab->view()->setFastMode(m_ui->actionFastMode->isChecked()); m_ui->actionZoomIn->setEnabled(m_currentTab->view()->canZoomIn()); m_ui->actionZoomOut->setEnabled(m_currentTab->view()->canZoomOut()); } void MainWindow::tabChanged(const int newTabIndex) { disconnectTab(); // disconnect previously selected tab m_tabIndex = newTabIndex; m_ui->elementEditor->hide(); if (newTabIndex == -1) { m_currentTab = nullptr; return; } m_currentTab = qobject_cast(m_ui->tab->currentWidget()); qCDebug(zero) << tr("Selecting tab: ") << newTabIndex; connectTab(); qCDebug(zero) << tr("New tab selected. Dolphin fileName: ") << m_currentTab->dolphinFileName(); } void MainWindow::on_lineEditSearch_textChanged(const QString &text) { m_ui->scrollAreaWidgetContents_Search->layout()->removeItem(m_ui->verticalSpacer_Search); if (text.isEmpty()) { m_ui->tabElements->tabBar()->show(); m_ui->tabElements->setCurrentIndex(m_lastTabIndex); m_ui->tabElements->setTabEnabled(5, false); m_lastTabIndex = -1; } else { if (m_lastTabIndex == -1) { m_lastTabIndex = m_ui->tabElements->currentIndex(); } m_ui->tabElements->tabBar()->hide(); m_ui->tabElements->setCurrentIndex(5); m_ui->tabElements->setTabEnabled(5, true); const auto allItems = m_ui->scrollArea_Search->findChildren(); QRegularExpression regex1(QString("^label_.*%1.*").arg(text), QRegularExpression::CaseInsensitiveOption); auto searchResults = m_ui->scrollArea_Search->findChildren(regex1); QRegularExpression regex2(QString(".*%1.*").arg(text), QRegularExpression::CaseInsensitiveOption); for (auto *item : allItems) { if (regex2.match(item->name()).hasMatch()) { if (!searchResults.contains(item)) { searchResults.append(item); } } } const auto ics = m_ui->scrollArea_Search->findChildren("label_ic"); for (auto *ic : ics) { if (regex2.match(ic->icFileName()).hasMatch()) { searchResults.append(ic); } } for (auto *item : allItems) { item->setHidden(true); } for (auto *item : qAsConst(searchResults)) { item->setVisible(true); } } m_ui->scrollAreaWidgetContents_Search->layout()->addItem(m_ui->verticalSpacer_Search); } void MainWindow::on_lineEditSearch_returnPressed() { if (!m_currentTab) { return; } auto allLabels = m_ui->scrollArea_Search->findChildren(); for (auto *label : allLabels) { if (label->isVisible()) { m_currentTab->scene()->addItem(label->mimeData()); m_ui->lineEditSearch->clear(); return; } } } void MainWindow::on_actionReloadFile_triggered() { if (!m_currentFile.exists() || !m_currentTab) { return; } const QString file = m_currentFile.absoluteFilePath(); closeTab(m_tabIndex); loadPandaFile(file); } void MainWindow::on_actionGates_triggered(const bool checked) { if (!m_currentTab) { return; } m_ui->actionWires->setEnabled(checked); m_currentTab->scene()->showWires(checked ? m_ui->actionWires->isChecked() : checked); m_currentTab->scene()->showGates(checked); } void MainWindow::exportToArduino(QString fileName) { if (!m_currentTab) { return; } if (fileName.isEmpty()) { throw Pandaception(tr("Missing file name.")); } auto elements = m_currentTab->scene()->elements(); if (elements.isEmpty()) { throw Pandaception(tr("The panda file is empty.")); } SimulationBlocker simulationBlocker(m_currentTab->simulation()); if (!fileName.endsWith(".ino")) { fileName.append(".ino"); } elements = Common::sortGraphicElements(elements); CodeGenerator arduino(QDir::home().absoluteFilePath(fileName), elements); arduino.generate(); m_ui->statusBar->showMessage(tr("Arduino code successfully generated."), 4000); qCDebug(zero) << tr("Arduino code successfully generated."); } void MainWindow::exportToWaveFormFile(const QString &fileName) { if (fileName.isEmpty()) { throw Pandaception(tr("Missing file name.")); } auto *bewavedDolphin = new BewavedDolphin(m_currentTab->scene(), false, this); bewavedDolphin->createWaveform(fileName); bewavedDolphin->print(); } void MainWindow::exportToWaveFormTerminal() { auto *bewavedDolphin = new BewavedDolphin(m_currentTab->scene(), false, this); bewavedDolphin->createWaveform(); bewavedDolphin->print(); } void MainWindow::on_actionExportToArduino_triggered() { if (!m_currentTab) { return; } QString path; if (m_currentFile.exists()) { path = m_currentFile.absolutePath(); } const QString fileName = QFileDialog::getSaveFileName(this, tr("Generate Arduino Code"), path, tr("Arduino file (*.ino)")); if (!fileName.isEmpty()) { exportToArduino(fileName); } } void MainWindow::on_actionZoomIn_triggered() const { if (!m_currentTab) { return; } m_currentTab->view()->zoomIn(); } void MainWindow::on_actionZoomOut_triggered() const { if (!m_currentTab) { return; } m_currentTab->view()->zoomOut(); } void MainWindow::on_actionResetZoom_triggered() const { if (!m_currentTab) { return; } m_currentTab->view()->resetZoom(); } void MainWindow::zoomChanged() { if (!m_currentTab) { return; } m_ui->actionZoomIn->setEnabled(m_currentTab->view()->canZoomIn()); m_ui->actionZoomOut->setEnabled(m_currentTab->view()->canZoomOut()); } void MainWindow::updateRecentFileActions() { const auto files = m_recentFiles->recentFiles(); const int numRecentFiles = qMin(files.size(), GlobalProperties::maxRecentFiles); if (numRecentFiles > 0) { m_ui->menuRecentFiles->setEnabled(true); } auto actions = m_ui->menuRecentFiles->actions(); for (int i = 0; i < numRecentFiles; ++i) { const QString text = "&" + QString::number(i + 1) + " " + QFileInfo(files.at(i)).fileName(); actions.at(i)->setText(text); actions.at(i)->setData(files.at(i)); actions.at(i)->setVisible(true); } for (int i = numRecentFiles; i < GlobalProperties::maxRecentFiles; ++i) { actions.at(i)->setVisible(false); } } void MainWindow::openRecentFile() { if (auto *action = qobject_cast(sender())) { loadPandaFile(action->data().toString()); } } void MainWindow::createRecentFileActions() { m_ui->menuRecentFiles->clear(); for (int i = 0; i < GlobalProperties::maxRecentFiles; ++i) { auto *action = new QAction(this); action->setVisible(false); connect(action, &QAction::triggered, this, &MainWindow::openRecentFile); m_ui->menuRecentFiles->addAction(action); } updateRecentFileActions(); } void MainWindow::on_actionExportToPdf_triggered() { if (!m_currentTab) { return; } m_currentTab->scene()->clearSelection(); QString path; if (m_currentFile.exists()) { path = m_currentFile.absolutePath(); } QString pdfFile = QFileDialog::getSaveFileName(this, tr("Export to PDF"), path, tr("PDF files (*.pdf)")); if (pdfFile.isEmpty()) { return; } if (!pdfFile.endsWith(".pdf", Qt::CaseInsensitive)) { pdfFile.append(".pdf"); } QPrinter printer(QPrinter::HighResolution); printer.setPageSize(QPageSize(QPageSize::A4)); printer.setPageOrientation(QPageLayout::Orientation::Landscape); printer.setOutputFormat(QPrinter::PdfFormat); printer.setOutputFileName(pdfFile); QPainter painter; if (!painter.begin(&printer)) { throw Pandaception(tr("Could not print this circuit to PDF.")); } auto *scene = m_currentTab->scene(); scene->render(&painter, QRectF(), scene->itemsBoundingRect().adjusted(-64, -64, 64, 64)); painter.end(); m_ui->statusBar->showMessage(tr("Exported file successfully."), 4000); QDesktopServices::openUrl(QUrl::fromLocalFile(pdfFile)); } void MainWindow::on_actionExportToImage_triggered() { if (!m_currentTab) { return; } m_currentTab->scene()->clearSelection(); QString path; if (m_currentFile.exists()) { path = m_currentFile.absolutePath(); } QString pngFile = QFileDialog::getSaveFileName(this, tr("Export to Image"), path, tr("PNG files (*.png)")); if (pngFile.isEmpty()) { return; } if (!pngFile.endsWith(".png", Qt::CaseInsensitive)) { pngFile.append(".png"); } QRectF rect = m_currentTab->scene()->itemsBoundingRect().adjusted(-64, -64, 64, 64); QPixmap pixmap(rect.size().toSize()); QPainter painter; painter.begin(&pixmap); painter.setRenderHint(QPainter::Antialiasing); m_currentTab->scene()->render(&painter, QRectF(), rect); painter.end(); pixmap.save(pngFile); m_ui->statusBar->showMessage(tr("Exported file successfully."), 4000); QDesktopServices::openUrl(QUrl::fromLocalFile(pngFile)); } void MainWindow::retranslateUi() { m_ui->retranslateUi(this); m_ui->elementEditor->retranslateUi(); const auto items = m_ui->tabElements->findChildren(); for (auto *item : items) { item->updateName(); } for (int index = 0; index < m_ui->tab->count(); ++index) { auto *workspace = qobject_cast(m_ui->tab->widget(index)); auto *undoStack = workspace->scene()->undoStack(); auto fileInfo = workspace->fileInfo(); QString text = fileInfo.exists() ? fileInfo.fileName() : tr("New Project"); if (!undoStack->isClean()) { text += "*"; } m_ui->tab->setTabText(index, text); for (auto *elm : workspace->scene()->elements()) { elm->retranslate(); } } } void MainWindow::loadTranslation(const QString &language) { if (language.isEmpty()) { return; } Settings::setValue("language", language); qApp->removeTranslator(m_pandaTranslator); qApp->removeTranslator(m_qtTranslator); delete m_pandaTranslator; delete m_qtTranslator; m_pandaTranslator = nullptr; m_qtTranslator = nullptr; if (language == "en") { retranslateUi(); return; } // --------------------------------------------- QString pandaFile; QString qtFile; if (language == "pt_BR") { pandaFile = ":/translations/wpanda_pt_BR.qm"; qtFile = ":/translations/qt_pt_BR.qm"; } if (!pandaFile.isEmpty()) { m_pandaTranslator = new QTranslator(this); if (!m_pandaTranslator->load(pandaFile) || !qApp->installTranslator(m_pandaTranslator)) { throw Pandaception(tr("Error loading WiRedPanda translation!")); } } if (!qtFile.isEmpty()) { m_qtTranslator = new QTranslator(this); if (!m_qtTranslator->load(qtFile) || !qApp->installTranslator(m_qtTranslator)) { throw Pandaception(tr("Error loading Qt translation!")); } } retranslateUi(); } void MainWindow::on_actionEnglish_triggered() { loadTranslation("en"); } void MainWindow::on_actionPortuguese_triggered() { loadTranslation("pt_BR"); } void MainWindow::on_actionPlay_toggled(const bool checked) { if (!m_currentTab) { return; } auto *simulation = m_currentTab->simulation(); checked ? simulation->start() : simulation->stop(); } void MainWindow::on_actionRestart_triggered() { if (!m_currentTab) { return; } m_currentTab->simulation()->restart(); } void MainWindow::populateMenu(QSpacerItem *spacer, const QStringList &names, QLayout *layout) { layout->removeItem(spacer); for (const auto &name : names) { auto type = ElementFactory::textToType(name); auto pixmap(ElementFactory::pixmap(type)); layout->addWidget(new ElementLabel(pixmap, type, name, this)); m_ui->scrollAreaWidgetContents_Search->layout()->addWidget(new ElementLabel(pixmap, type, name, this)); } layout->addItem(spacer); } void MainWindow::populateLeftMenu() { m_ui->tabElements->setCurrentIndex(0); populateMenu(m_ui->verticalSpacer_InOut, {"InputVcc", "InputGnd", "InputButton", "InputSwitch", "InputRotary", "Clock", "Led", "Display7", "Display14", "Buzzer"}, m_ui->scrollAreaWidgetContents_InOut->layout()); populateMenu(m_ui->verticalSpacer_Gates, {"And", "Or", "Not", "Nand", "Nor", "Xor", "Xnor", "Mux", "Demux", "Node"}, m_ui->scrollAreaWidgetContents_Gates->layout()); populateMenu(m_ui->verticalSpacer_Memory, {"DLatch", "DFlipFlop", "JKFlipFlop", "SRFlipFlop", "TFlipFlop"}, m_ui->scrollAreaWidgetContents_Memory->layout()); populateMenu(m_ui->verticalSpacer_Misc, {"Text", "Line"}, m_ui->scrollAreaWidgetContents_Misc->layout()); } void MainWindow::on_actionFastMode_triggered(const bool checked) { setFastMode(checked); Settings::setValue("fastMode", checked); } void MainWindow::on_actionWaveform_triggered() { if (!m_currentTab) { return; } qCDebug(zero) << tr("BD fileName: ") << m_currentTab->dolphinFileName(); auto *bewavedDolphin = new BewavedDolphin(m_currentTab->scene(), true, this); bewavedDolphin->createWaveform(m_currentTab->dolphinFileName()); bewavedDolphin->show(); } void MainWindow::on_actionLightTheme_triggered() { ThemeManager::setTheme(Theme::Light); } void MainWindow::on_actionDarkTheme_triggered() { ThemeManager::setTheme(Theme::Dark); } void MainWindow::updateTheme() { switch (ThemeManager::theme()) { case Theme::Dark: m_ui->actionDarkTheme->setChecked(true); break; case Theme::Light: m_ui->actionLightTheme->setChecked(true); break; } m_ui->tabElements->setTabIcon(2, QIcon(DFlipFlop::pixmapPath())); const auto labels = m_ui->memory->findChildren(); for (auto *label : labels) { label->updateTheme(); } m_ui->elementEditor->updateTheme(); } void MainWindow::on_actionFlipHorizontally_triggered() { if (!m_currentTab) { return; } m_currentTab->scene()->flipHorizontally(); } void MainWindow::on_actionFlipVertically_triggered() { if (!m_currentTab) { return; } m_currentTab->scene()->flipVertically(); } QString MainWindow::dolphinFileName() { if (!m_currentTab) { return {}; } return m_currentTab->dolphinFileName(); } void MainWindow::setDolphinFileName(const QString &fileName) { if (!m_currentTab) { return; } m_currentTab->setDolphinFileName(fileName); } void MainWindow::on_actionFullscreen_triggered() { isFullScreen() ? showNormal() : showFullScreen(); } void MainWindow::on_actionMute_triggered(const bool checked) { if (!m_currentTab) { return; } m_currentTab->scene()->mute(checked); m_ui->actionMute->setText(checked ? tr("Unmute") : tr("Mute")); } void MainWindow::on_actionLabelsUnderIcons_triggered(const bool checked) { m_ui->mainToolBar->setToolButtonStyle(checked ? Qt::ToolButtonTextUnderIcon : Qt::ToolButtonIconOnly); Settings::setValue("labelsUnderIcons", checked); } bool MainWindow::event(QEvent *event) { switch (event->type()) { case QEvent::WindowActivate: { if (m_ui->actionPlay->isChecked()) { on_actionPlay_toggled(true); } break; } case QEvent::WindowDeactivate: { on_actionPlay_toggled(false); break; } default: break; }; return QMainWindow::event(event); } void MainWindow::on_pushButtonAddIC_clicked() { if (!m_currentTab) { return; } if (!m_currentTab->fileInfo().isReadable()) { throw Pandaception(tr("Save file first.")); } QFileDialog fileDialog; fileDialog.setObjectName(tr("Open File")); fileDialog.setFileMode(QFileDialog::ExistingFile); fileDialog.setNameFilter(tr("Panda (*.panda)")); if (fileDialog.exec() == QDialog::Rejected) { return; } const auto files = fileDialog.selectedFiles(); if (files.isEmpty()) { return; } QMessageBox::information(this, tr("Info"), tr("Selected files (and their dependencies) will be copied to current file folder.")); for (const auto &file : files) { IC::copyFiles(QFileInfo(file)); } updateICList(); } void MainWindow::on_pushButtonRemoveIC_clicked() { QMessageBox::information(this, tr("Info"), tr("Drag here to remove.")); } void MainWindow::removeICFile(const QString &icFileName) { if (!m_currentTab) { return; } SimulationBlocker blocker(m_currentTab->simulation()); auto elements = m_currentTab->scene()->elements(); for (auto it = elements.rbegin(); it != elements.rend(); ++it) { if ((*it)->elementType() == ElementType::IC && (*it)->label().append(".panda").toLower() == icFileName) { m_currentTab->scene()->removeItem(*it); delete *it; } } QFile file(GlobalProperties::currentDir + "/" + icFileName); if (!file.remove()) { throw Pandaception(tr("Error removing file: ") + file.errorString()); } updateICList(); on_actionSave_triggered(); } wiRedPanda-4.1.12/app/mainwindow.h000066400000000000000000000115321444020206400167200ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include #include #include #include class ElementLabel; class RecentFiles; class WorkSpace; namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(const QString &fileName = {}, QWidget *parent = nullptr); ~MainWindow() override; //! Creates a new tab with the given tab_name. Used by new and load actions. void createNewTab(); //! Saves the project to a .panda file. Removes the autosave file in the process. void save(const QString &fileName = {}); //! Sets the main window as visible, as well as its child widgets. Cleans the editor. void show(); //! Returns the file name of the currently loaded Panda file. QFileInfo currentFile() const; //! Returns the dir name of the currently loaded Panda file. QDir currentDir() const; //! Sets the current file to the given value. //! Mostly used by `loadPandaFile` and clearing functions void setCurrentFile(const QFileInfo &fileInfo); //! Exports the current simulation to an void exportToArduino(QString fileName); //! Saves the current beWavedDolphin (waveform simulator) file void exportToWaveFormFile(const QString &fileName); //! Loads a .panda file void loadPandaFile(const QString &fileName); //! Opens a message box asking the user if he wishes to save his progress int confirmSave(const bool multiple = true); QString dolphinFileName(); bool closeFiles(); bool event(QEvent *event) override; void exportToWaveFormTerminal(); void loadTranslation(const QString &language); void populateMenu(QSpacerItem *spacer, const QStringList &names, QLayout *layout); void retranslateUi(); void setDolphinFileName(const QString &fileName); void setFastMode(const bool fastMode); signals: void addRecentFile(const QString &fileName); protected: void closeEvent(QCloseEvent *event) override; private: Q_DISABLE_COPY(MainWindow) static void on_actionDarkTheme_triggered(); static void on_actionLightTheme_triggered(); bool closeTab(const int tabIndex); bool hasModifiedFiles(); int closeTabAnyway(); void aboutThisVersion(); void createRecentFileActions(); void loadAutosaveFiles(); void on_actionAboutQt_triggered(); void on_actionAbout_triggered(); void on_actionEnglish_triggered(); void on_actionExit_triggered(); void on_actionExportToArduino_triggered(); void on_actionExportToImage_triggered(); void on_actionExportToPdf_triggered(); void on_actionFastMode_triggered(const bool checked); void on_actionFlipHorizontally_triggered(); void on_actionFlipVertically_triggered(); void on_actionFullscreen_triggered(); void on_actionGates_triggered(const bool checked); void on_actionLabelsUnderIcons_triggered(const bool checked); void on_actionMute_triggered(const bool checked); void on_actionNew_triggered(); void on_actionOpen_triggered(); void on_actionPlay_toggled(const bool checked); void on_actionPortuguese_triggered(); void on_actionReloadFile_triggered(); void on_actionResetZoom_triggered() const; void on_actionRestart_triggered(); void on_actionRotateLeft_triggered(); void on_actionRotateRight_triggered(); void on_actionSaveAs_triggered(); void on_actionSave_triggered(); void on_actionSelectAll_triggered(); void on_actionWaveform_triggered(); void on_actionWires_triggered(const bool checked); void on_actionZoomIn_triggered() const; void on_actionZoomOut_triggered() const; void on_lineEditSearch_returnPressed(); void on_lineEditSearch_textChanged(const QString &text); void on_pushButtonAddIC_clicked(); void on_pushButtonRemoveIC_clicked(); void openRecentFile(); void populateLeftMenu(); void removeICFile(const QString &icFileName); void tabChanged(const int newTabIndex); void updateICList(); void updateRecentFileActions(); void updateSettings(); void updateTheme(); void zoomChanged(); //! Adds undo and redo of selected tab into the UI menu. void addUndoRedoMenu(); //! Removes undo and redo of current tab from the UI menu. void removeUndoRedoMenu(); //! Function used to disconnect elements of current tab, to safely change or close a tab. void disconnectTab(); //! Function called as a tab is selected. The tab is connected to the UI. void connectTab(); Ui::MainWindow *m_ui; QTranslator *m_pandaTranslator = nullptr; QTranslator *m_qtTranslator = nullptr; RecentFiles *m_recentFiles = nullptr; QFileInfo m_currentFile; WorkSpace *m_currentTab = nullptr; int m_tabIndex = -1; int m_lastTabIndex = -1; }; wiRedPanda-4.1.12/app/mainwindow.ui000066400000000000000000001136551444020206400171170ustar00rootroot00000000000000 MainWindow 0 0 886 765 0 150 :/toolbar/wpanda.svg:/toolbar/wpanda.svg Qt::ToolButtonTextBesideIcon true 0 0 QFrame::NoFrame 1 2 Qt::Horizontal false 8 false 280 0 600 16777215 0 0 0 0 0 0 0 220 0 QTabBar::tab:disabled { width: 0; height: 0; margin: 0; padding: 0; border: none; } QTabWidget::pane { margin: 0px 0px 0px 0px; } 0 :/input/buttonOff.svg:/input/buttonOff.svg Inputs/Outputs QFrame::NoFrame true 0 0 260 581 Qt::Vertical 20 40 :/basic/xor.svg:/basic/xor.svg Gates QFrame::NoFrame true 0 0 260 581 Qt::Vertical 20 40 :/memory/light/D-flipflop.svg:/memory/light/D-flipflop.svg Memory QFrame::NoFrame true 0 0 260 581 Qt::Vertical 20 40 :/basic/ic-panda.svg:/basic/ic-panda.svg Integrated Circuits QFrame::NoFrame true 0 0 260 549 Qt::Vertical 20 40 Add IC files 0 0 Remove IC :/toolbar/trashcan.svg:/toolbar/trashcan.svg :/misc/text.png:/misc/text.png Miscellaneous QFrame::NoFrame true 0 0 260 581 0 0 Qt::Vertical 210 227 true 0 0 258 579 Qt::Vertical 20 234 0 0 0 0 16777215 16777215 0 0 Search: 0 0 true 255 0 570 0 16777215 16777215 -1 true Qt::PreventContextMenu Qt::ToolButtonFollowStyle TopToolBarArea false 0 0 886 21 &File false false &Recent files: :/toolbar/recentFiles.svg:/toolbar/recentFiles.svg &Edit &Help &View &Theme &Language Sim&ulation Examples :/toolbar/folder.svg:/toolbar/folder.svg &Open... Open Ctrl+O :/toolbar/save.svg:/toolbar/save.svg &Save Ctrl+S :/toolbar/save.svg:/toolbar/save.svg Save &As... Ctrl+Shift+S :/toolbar/cut.svg:/toolbar/cut.svg Cu&t Ctrl+X :/toolbar/copy.svg:/toolbar/copy.svg &Copy Ctrl+C :/toolbar/paste.svg:/toolbar/paste.svg &Paste Ctrl+V :/toolbar/delete.svg &Delete Del :/toolbar/new.svg:/toolbar/new.svg &New Ctrl+N :/toolbar/zoomIn.svg:/toolbar/zoomIn.svg Zoom &in Ctrl+= :/toolbar/zoomOut.svg:/toolbar/zoomOut.svg Zoom &out Ctrl+- true true :/toolbar/wires.svg:/toolbar/wires.svg &Wires Ctrl+1 true true :/basic/nor.svg:/basic/nor.svg &Gates Ctrl+2 :/toolbar/help.svg:/toolbar/help.svg &About F1 :/toolbar/exit.svg:/toolbar/exit.svg &Exit Ctrl+Q :/toolbar/rotateR.svg:/toolbar/rotateR.svg R&otate right Ctrl+R :/toolbar/rotateL.svg:/toolbar/rotateL.svg Rotate &left Ctrl+Shift+R :/toolbar/helpQt.svg:/toolbar/helpQt.svg About &Qt :/toolbar/selectAll.svg:/toolbar/selectAll.svg &Select all Ctrl+A :/toolbar/reloadFile.svg:/toolbar/reloadFile.svg Re&load File Ctrl+F5 :/toolbar/arduino.svg:/toolbar/arduino.svg E&xport to Arduino Ctrl+Alt+I :/toolbar/zoomReset.svg:/toolbar/zoomReset.svg &Reset Zoom Ctrl+0 :/toolbar/pdf.svg:/toolbar/pdf.svg Export to &PDF Ctrl+Shift+P :/toolbar/usa.svg:/toolbar/usa.svg &English :/toolbar/brasil.svg:/toolbar/brasil.svg &Portuguese true :/toolbar/play.svg :/toolbar/pause.svg:/toolbar/play.svg &Play/Pause Play or Pause simulation. F5 :/toolbar/rename.svg:/toolbar/rename.svg &Rename F2 :/input/buttonOff.svg:/input/buttonOff.svg Cha&nge Trigger F3 :/toolbar/clearSelection.svg:/toolbar/clearSelection.svg Cl&ear selection Esc true :/toolbar/fast.svg:/toolbar/fast.svg &Fast Mode true true &Panda Light true Panda &Dark :/toolbar/dolphin_icon.svg:/toolbar/dolphin_icon.svg &Waveform Ctrl+W :/toolbar/png.svg:/toolbar/png.svg Export to &Image Ctrl+E &Flip horizontally Ctrl+H Flip &vertically F&ullscreen F11 true :/output/buzzer/BuzzerOff.svg :/toolbar/mute.svg:/output/buzzer/BuzzerOff.svg Mute Mutes and unmutes circuit buzzers Ctrl+M true Labels under icons About this version :/toolbar/reset.svg:/toolbar/reset.svg &Restart Restart simulation. ElementEditor QWidget
elementeditor.h
1
TrashButton QPushButton
trashbutton.h
lineEditSearch tabElements scrollAreaInOut scrollAreaMemory scrollArea_Box scrollAreaGates
wiRedPanda-4.1.12/app/nodes/000077500000000000000000000000001444020206400155015ustar00rootroot00000000000000wiRedPanda-4.1.12/app/nodes/qneconnection.cpp000066400000000000000000000213611444020206400210530ustar00rootroot00000000000000/* Copyright (c) 2012, STANISLAW ADASZEWSKI * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * Neither the name of STANISLAW ADASZEWSKI nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL STANISLAW ADASZEWSKI BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "qneconnection.h" #include "common.h" #include "qneport.h" #include "thememanager.h" #include #include #include #include #include #include #include namespace { int id = qRegisterMetaType(); } QNEConnection::QNEConnection(QGraphicsItem *parent) : QGraphicsPathItem(parent) { setFlag(QGraphicsItem::ItemIsSelectable); setCacheMode(QGraphicsItem::DeviceCoordinateCache); setZValue(-1); updateTheme(); setPen(QPen(m_invalidColor, 5)); } QNEConnection::~QNEConnection() { if (m_startPort) { m_startPort->disconnect(this); } if (m_endPort) { m_endPort->disconnect(this); } } void QNEConnection::setStartPos(const QPointF point) { m_startPos = point; } void QNEConnection::setEndPos(const QPointF point) { m_endPos = point; } void QNEConnection::setStartPort(QNEOutputPort *port) { auto *oldPort = m_startPort; m_startPort = port; if (oldPort && (oldPort != port)) { oldPort->disconnect(this); } if (port) { port->connect(this); setStartPos(port->scenePos()); setStatus(port->status()); } } void QNEConnection::setEndPort(QNEInputPort *port) { auto *oldPort = m_endPort; m_endPort = port; if (oldPort && (oldPort != port)) { oldPort->disconnect(this); } if (port) { port->connect(this); setEndPos(port->scenePos()); port->setStatus(status()); } } void QNEConnection::updatePosFromPorts() { if (m_startPort) { m_startPos = m_startPort->scenePos(); } if (m_endPort) { m_endPos = m_endPort->scenePos(); } updatePath(); } void QNEConnection::updatePath() { QPainterPath path; path.moveTo(m_startPos); qreal dx = m_endPos.x() - m_startPos.x(); qreal dy = m_endPos.y() - m_startPos.y(); QPointF ctr1(m_startPos.x() + dx * 0.25, m_startPos.y() + dy * 0.1); QPointF ctr2(m_startPos.x() + dx * 0.75, m_startPos.y() + dy * 0.9); path.cubicTo(ctr1, ctr2, m_endPos); setPath(path); } QNEOutputPort *QNEConnection::startPort() const { return m_startPort; } QNEInputPort *QNEConnection::endPort() const { return m_endPort; } double QNEConnection::angle() { QNEPort *port1 = m_startPort; QNEPort *port2 = m_endPort; if (port1 && port2) { if (port2->isOutput()) { std::swap(port1, port2); } return QLineF(port1->scenePos(), port2->scenePos()).angle(); } return 0.0; } void QNEConnection::save(QDataStream &stream) const { stream << reinterpret_cast(m_startPort); stream << reinterpret_cast(m_endPort); } void QNEConnection::load(QDataStream &stream, const QMap &portMap) { quint64 ptr1; stream >> ptr1; quint64 ptr2; stream >> ptr2; if (portMap.isEmpty()) { qCDebug(three) << tr("Empty port map."); auto *port1 = reinterpret_cast(ptr1); auto *port2 = reinterpret_cast(ptr2); if (port1 && port2) { if (port1->isInput() && port2->isOutput()) { setStartPort(dynamic_cast(port2)); setEndPort(dynamic_cast(port1)); } else if (port1->isOutput() && port2->isInput()) { setStartPort(dynamic_cast(port1)); setEndPort(dynamic_cast(port2)); } } } if (!portMap.isEmpty()) { if (!portMap.contains(ptr1) || !portMap.contains(ptr2)) { return; } qCDebug(three) << tr("Port map with elements: ptr1(") << ptr1 << tr("), ptr2(") << ptr2 << ")"; auto *port1 = portMap.value(ptr1); auto *port2 = portMap.value(ptr2); qCDebug(three) << tr("Before if 1."); if (port1 && port2) { qCDebug(three) << tr("Before if 2."); if (port1->isInput() && port2->isOutput()) { qCDebug(three) << tr("Setting start 1."); setStartPort(dynamic_cast(port2)); qCDebug(three) << tr("Setting end 1."); setEndPort(dynamic_cast(port1)); } else if (port1->isOutput() && port2->isInput()) { qCDebug(three) << tr("Setting start 2."); setStartPort(dynamic_cast(port1)); qCDebug(three) << tr("Setting end 2."); setEndPort(dynamic_cast(port2)); } qCDebug(three) << tr("After ifs."); } } qCDebug(three) << tr("Updating pos from ports."); updatePosFromPorts(); } QNEPort *QNEConnection::otherPort(const QNEPort *port) const { if (port == m_startPort) { return m_endPort; } return m_startPort; } Status QNEConnection::status() const { return m_status; } void QNEConnection::setStatus(const Status status) { if (status == m_status) { return; } m_status = status; switch (status) { case Status::Invalid: setPen(QPen(m_invalidColor, 5)); break; case Status::Inactive: setPen(QPen(m_inactiveColor, 3)); break; case Status::Active: setPen(QPen(m_activeColor, 3)); break; } if (endPort()) { endPort()->setStatus(status); } } void QNEConnection::updateTheme() { const ThemeAttributes theme = ThemeManager::attributes(); m_invalidColor = theme.m_connectionInvalid; m_inactiveColor = theme.m_connectionInactive; m_activeColor = theme.m_connectionActive; m_selectedColor = theme.m_connectionSelected; } void QNEConnection::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) { Q_UNUSED(widget) Q_UNUSED(option) if (m_highLight) { painter->save(); painter->setPen(QPen(Qt::blue, 10)); painter->drawPath(path()); painter->restore(); } painter->setPen(isSelected() ? QPen(m_selectedColor, 5) : pen()); painter->drawPath(path()); } QVariant QNEConnection::itemChange(GraphicsItemChange change, const QVariant &value) { if (change == ItemSelectedChange) { if (value.toBool()) { if (startPort()) startPort()->hoverEnter(); if (endPort()) endPort()->hoverEnter(); } else { if (startPort()) startPort()->hoverLeave(); if (endPort()) endPort()->hoverLeave(); } } return QGraphicsPathItem::itemChange(change, value); } bool QNEConnection::highLight() { return m_highLight; } void QNEConnection::setHighLight(const bool highLight) { m_highLight = highLight; update(); } QRectF QNEConnection::boundingRect() const { return path().boundingRect().adjusted(-10, -10, 10, 10); } bool QNEConnection::sceneEvent(QEvent *event) { if (auto mouseEvent = dynamic_cast(event)) { if (mouseEvent->modifiers().testFlag(Qt::ControlModifier)) { return true; } } return QGraphicsPathItem::sceneEvent(event); } QDataStream &operator<<(QDataStream &stream, const QNEConnection *conn) { qCDebug(zero) << QObject::tr("Writing Connection."); stream << conn->type(); conn->save(stream); return stream; } wiRedPanda-4.1.12/app/nodes/qneconnection.h000066400000000000000000000066301444020206400205220ustar00rootroot00000000000000/* Copyright (c) 2012, STANISLAW ADASZEWSKI * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * Neither the name of STANISLAW ADASZEWSKI nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL STANISLAW ADASZEWSKI BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #pragma once #include "enums.h" #include "itemwithid.h" #include #include class QNEPort; class QNEInputPort; class QNEOutputPort; class QNEConnection : public QGraphicsPathItem, public ItemWithId { Q_DECLARE_TR_FUNCTIONS(QNEConnection) public: enum { Type = QGraphicsItem::UserType + 2 }; int type() const override { return Type; } explicit QNEConnection(QGraphicsItem *parent = nullptr); ~QNEConnection() override; QNEConnection(const QNEConnection &other) : QNEConnection(other.parentItem()) {} QNEInputPort *endPort() const; QNEOutputPort *startPort() const; QNEPort *otherPort(const QNEPort *port) const; QRectF boundingRect() const override; Status status() const; bool highLight(); double angle(); void load(QDataStream &stream, const QMap &portMap = {}); void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override; void save(QDataStream &stream) const; void setEndPort(QNEInputPort *port); void setEndPos(const QPointF point); void setHighLight(const bool highLight); void setStartPort(QNEOutputPort *port); void setStartPos(const QPointF point); void setStatus(const Status status); void updatePath(); void updatePosFromPorts(); void updateTheme(); protected: QVariant itemChange(GraphicsItemChange change, const QVariant &value) override; bool sceneEvent(QEvent *event) override; private: QColor m_activeColor; QColor m_inactiveColor; QColor m_invalidColor; QColor m_selectedColor; QNEInputPort *m_endPort = nullptr; QNEOutputPort *m_startPort = nullptr; QPointF m_endPos; QPointF m_startPos; Status m_status = Status::Invalid; bool m_highLight = false; }; Q_DECLARE_METATYPE(QNEConnection) QDataStream &operator<<(QDataStream &stream, const QNEConnection *conn); wiRedPanda-4.1.12/app/nodes/qneport.cpp000066400000000000000000000166251444020206400177070ustar00rootroot00000000000000/* Copyright (c) 2012, STANISLAW ADASZEWSKI * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * Neither the name of STANISLAW ADASZEWSKI nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL STANISLAW ADASZEWSKI BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "enums.h" #include "graphicelement.h" #include "qneconnection.h" #include "qneport.h" #include "thememanager.h" #include #include #include #include #include #include namespace { int id = qRegisterMetaType(); int id2 = qRegisterMetaType(); } QNEPort::QNEPort(QGraphicsItem *parent) : QGraphicsPathItem(parent) { setFlag(QGraphicsItem::ItemSendsScenePositionChanges); setCacheMode(QGraphicsItem::DeviceCoordinateCache); QPainterPath path; path.addPolygon(QRectF(QPointF(-m_radius, -m_radius), QPointF(m_radius, m_radius))); setPath(path); } LogicElement *QNEPort::logic() const { return graphicElement() ? graphicElement()->logic() : nullptr; } const QList &QNEPort::connections() const { return m_connections; } void QNEPort::connect(QNEConnection *conn) { if (!conn) { return; } if (!m_connections.contains(conn)) { m_connections.append(conn); } updateConnections(); } void QNEPort::disconnect(QNEConnection *conn) { m_connections.removeAll(conn); if (conn->startPort() == this) { conn->setStartPort(nullptr); } if (conn->endPort() == this) { conn->setEndPort(nullptr); } updateConnections(); } int QNEPort::portFlags() const { return m_portFlags; } void QNEPort::setPtr(const quint64 ptr) { m_ptr = ptr; } bool QNEPort::isConnected(QNEPort *otherPort) { return std::any_of(m_connections.cbegin(), m_connections.cend(), [&](auto *conn) { return (conn->startPort() == otherPort) || (conn->endPort() == otherPort); }); } void QNEPort::updateConnections() { for (auto *conn : qAsConst(m_connections)) { conn->updatePosFromPorts(); } if (!isValid()) { setStatus(Status::Invalid); return; } if (m_connections.empty() && isInput()) { setStatus(defaultValue()); } } QVariant QNEPort::itemChange(GraphicsItemChange change, const QVariant &value) { if (change == ItemScenePositionHasChanged) { updateConnections(); } return QGraphicsPathItem::itemChange(change, value); } int QNEPort::index() const { return m_index; } void QNEPort::setIndex(const int index) { m_index = index; } QString QNEPort::name() const { return m_name; } void QNEPort::setName(const QString &name) { m_name = name; setToolTip(name); } Status QNEPort::defaultValue() const { return m_defaultStatus; } void QNEPort::setDefaultStatus(const Status defaultStatus) { m_defaultStatus = defaultStatus; setStatus(defaultStatus); } QBrush QNEPort::currentBrush() const { return m_currentBrush; } void QNEPort::setCurrentBrush(const QBrush ¤tBrush) { m_currentBrush = currentBrush; if (brush().color() != Qt::yellow) { setBrush(currentBrush); } } bool QNEPort::isRequired() const { return m_required; } void QNEPort::setRequired(const bool required) { m_required = required; setDefaultStatus(required ? Status::Invalid : Status::Inactive); } Status QNEPort::status() const { return m_status; } GraphicElement *QNEPort::graphicElement() const { return m_graphicElement; } void QNEPort::setGraphicElement(GraphicElement *graphicElement) { m_graphicElement = graphicElement; } void QNEPort::hoverLeave() { setBrush(currentBrush()); } void QNEPort::hoverEnter() { setBrush(QBrush(ThemeManager::attributes().m_portHoverPort)); } QNEInputPort::QNEInputPort(QGraphicsItem *parent) : QNEPort(parent) { m_label->setPos(-m_radius - m_margin - m_label->boundingRect().width(), -m_label->boundingRect().height() / 2); QNEInputPort::setStatus(defaultValue()); } QNEInputPort::~QNEInputPort() { while (!m_connections.isEmpty()) { auto *conn = m_connections.constLast(); m_connections.removeAll(conn); conn->setEndPort(nullptr); delete conn; } } void QNEInputPort::setStatus(const Status status) { if (status == m_status) { return; } m_status = QNEInputPort::isValid() ? status : Status::Invalid; const auto theme = ThemeManager::attributes(); switch (m_status) { case Status::Invalid: { setPen(theme.m_portInvalidPen); setCurrentBrush(theme.m_portInvalidBrush); break; } case Status::Inactive: { setPen(theme.m_portInactivePen); setCurrentBrush(theme.m_portInactiveBrush); break; } case Status::Active: { setPen(theme.m_portActivePen); setCurrentBrush(theme.m_portActiveBrush); break; } } } bool QNEInputPort::isInput() const { return true; } bool QNEInputPort::isOutput() const { return false; } bool QNEInputPort::isValid() const { return m_connections.isEmpty() ? !isRequired() : (m_connections.size() == 1); } void QNEInputPort::updateTheme() { } QNEOutputPort::QNEOutputPort(QGraphicsItem *parent) : QNEPort(parent) { m_label->setPos(m_radius + m_margin, -m_label->boundingRect().height() / 2); QNEOutputPort::updateTheme(); } QNEOutputPort::~QNEOutputPort() { while (!m_connections.isEmpty()) { auto *conn = m_connections.constLast(); m_connections.removeAll(conn); conn->setStartPort(nullptr); delete conn; } } void QNEOutputPort::setStatus(const Status status) { if (status == m_status) { return; } m_status = status; for (auto *conn : connections()) { conn->setStatus(status); } } bool QNEOutputPort::isInput() const { return false; } bool QNEOutputPort::isOutput() const { return true; } bool QNEOutputPort::isValid() const { return (m_status != Status::Invalid); } void QNEOutputPort::updateTheme() { const auto theme = ThemeManager::attributes(); setPen(theme.m_portOutputPen); setCurrentBrush(theme.m_portOutputBrush); } wiRedPanda-4.1.12/app/nodes/qneport.h000066400000000000000000000105351444020206400173460ustar00rootroot00000000000000/* Copyright (c) 2012, STANISLAW ADASZEWSKI * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * Neither the name of STANISLAW ADASZEWSKI nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL STANISLAW ADASZEWSKI BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #pragma once #include "enums.h" #include #include class GraphicElement; class LogicElement; class QNEConnection; class QNEPort; class QNEPort : public QGraphicsPathItem { public: enum { Type = QGraphicsItem::UserType + 1 }; int type() const override { return Type; } explicit QNEPort(QGraphicsItem *parent = nullptr); GraphicElement *graphicElement() const; LogicElement *logic() const; QBrush currentBrush() const; QString name() const; Status defaultValue() const; Status status() const; bool isConnected(QNEPort *otherPort); bool isRequired() const; const QList &connections() const; int index() const; int portFlags() const; virtual bool isInput() const = 0; virtual bool isOutput() const = 0; virtual bool isValid() const = 0; virtual void setStatus(Status status) = 0; void connect(QNEConnection *conn); void disconnect(QNEConnection *conn); void hoverEnter(); void hoverLeave(); void setCurrentBrush(const QBrush ¤tBrush); void setDefaultStatus(const Status defaultStatus); void setGraphicElement(GraphicElement *graphicElement); void setIndex(const int index); void setName(const QString &name); void setPtr(const quint64 ptr); void setRequired(const bool required); void updateConnections(); protected: QVariant itemChange(GraphicsItemChange change, const QVariant &value) override; virtual void updateTheme() = 0; GraphicElement *m_graphicElement = nullptr; QBrush m_currentBrush; QGraphicsTextItem *m_label = new QGraphicsTextItem(this); QList m_connections; // use smart pointers QString m_name; Status m_defaultStatus = Status::Invalid; Status m_status = Status::Inactive; bool m_required = true; int m_index = 0; int m_margin = 2; int m_portFlags = 0; // change this to std::bitset? int m_radius = 5; quint64 m_ptr = 0; }; class QNEInputPort : public QNEPort { public: explicit QNEInputPort(QGraphicsItem *parent = nullptr); ~QNEInputPort() override; QNEInputPort(const QNEInputPort &other) : QNEInputPort(other.parentItem()) {} bool isInput() const override; bool isOutput() const override; bool isValid() const override; void setStatus(const Status status) override; void updateTheme() override; }; Q_DECLARE_METATYPE(QNEInputPort) class QNEOutputPort : public QNEPort { public: explicit QNEOutputPort(QGraphicsItem *parent = nullptr); ~QNEOutputPort() override; QNEOutputPort(const QNEOutputPort &other) : QNEOutputPort(other.parentItem()) {} bool isInput() const override; bool isOutput() const override; bool isValid() const override; void setStatus(const Status status) override; void updateTheme() override; }; Q_DECLARE_METATYPE(QNEOutputPort) wiRedPanda-4.1.12/app/recentfiles.cpp000066400000000000000000000031061444020206400174000ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #include "recentfiles.h" #include "common.h" #include "globalproperties.h" #include "settings.h" #include #include #include RecentFiles::RecentFiles(QObject *parent) : QObject(parent) { if (Settings::contains("recentFileList")) { m_files = Settings::value("recentFileList").toStringList(); } connect(&m_fileWatcher, &QFileSystemWatcher::fileChanged, this, [=](const QString &filePath) { if (!QFile::exists(filePath)) { m_files.removeAll(filePath); emit recentFilesUpdated(); } }); } void RecentFiles::addRecentFile(const QString &filePath) { qCDebug(three) << tr("Setting recent file to: ") << filePath; if (!QFile(filePath).exists()) { return; } m_fileWatcher.addPath(filePath); m_files.removeAll(filePath); m_files.prepend(filePath); if (m_files.size() > GlobalProperties::maxRecentFiles) { m_files.erase(m_files.begin() + GlobalProperties::maxRecentFiles, m_files.end()); } saveRecentFiles(); emit recentFilesUpdated(); } QStringList RecentFiles::recentFiles() { int i = 0; while (i < m_files.size()) { QFileInfo fileInfo(m_files.at(i)); if (!fileInfo.exists()) { m_files.removeAt(i); continue; } ++i; } saveRecentFiles(); return m_files; } void RecentFiles::saveRecentFiles() { Settings::setValue("recentFileList", m_files); } wiRedPanda-4.1.12/app/recentfiles.h000066400000000000000000000011001444020206400170350ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include #include /** * Class to hold the list of recent open files */ class RecentFiles : public QObject { Q_OBJECT public: explicit RecentFiles(QObject *parent = nullptr); QStringList recentFiles(); void addRecentFile(const QString &filePath); signals: void recentFilesUpdated(); private: void saveRecentFiles(); QStringList m_files; QFileSystemWatcher m_fileWatcher; }; wiRedPanda-4.1.12/app/resources/000077500000000000000000000000001444020206400164035ustar00rootroot00000000000000wiRedPanda-4.1.12/app/resources/basic/000077500000000000000000000000001444020206400174645ustar00rootroot00000000000000wiRedPanda-4.1.12/app/resources/basic/and.svg000066400000000000000000000072551444020206400207600ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/basic/basic.qrc000066400000000000000000000007051444020206400212560ustar00rootroot00000000000000 and.svg demux.svg ic-panda.svg ic-panda2.svg ic.svg mux.svg nand.svg node.svg nor.svg not.svg or.svg xnor.svg xor.svg wiRedPanda-4.1.12/app/resources/basic/demux.svg000066400000000000000000000112551444020206400213330ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/basic/ic-panda.svg000066400000000000000000000265341444020206400216730ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/basic/ic-panda2.svg000066400000000000000000000266731444020206400217610ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/basic/ic.svg000066400000000000000000000124721444020206400206060ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/basic/mux.svg000066400000000000000000000112271444020206400210210ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/basic/nand.svg000066400000000000000000000073571444020206400211410ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/basic/node.svg000066400000000000000000000060261444020206400211360ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/basic/nor.svg000066400000000000000000000101771444020206400210110ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/basic/not.svg000066400000000000000000000102141444020206400210030ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/basic/or.svg000066400000000000000000000074171444020206400206360ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/basic/xnor.svg000066400000000000000000000133171444020206400212000ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/basic/xor.svg000066400000000000000000000125231444020206400210200ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/convertIcons.sh000077500000000000000000000006661444020206400214260ustar00rootroot00000000000000# Copyright 2015 - 2022, GIBIS-Unifesp and the WiRedPanda contributors # SPDX-License-Identifier: GPL-3.0-or-later find . -type f -name '*.svg' | while read file; do inkscape -z $file -e ${file%.*}.png; done; for size in 26 32 48 64 128; do mkdir -p icons/${size}x${size} inkscape -z wpanda.svg -e icons/${size}x${size}/wpanda.png -h ${size}; inkscape -z pandaFile.svg -e icons/${size}x${size}/wpanda-file.png -h ${size}; done; wiRedPanda-4.1.12/app/resources/dolphin/000077500000000000000000000000001444020206400200405ustar00rootroot00000000000000wiRedPanda-4.1.12/app/resources/dolphin/cut.svg000066400000000000000000006631611444020206400213710ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/dolphin/delete.svg000066400000000000000000006734341444020206400220440ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/dolphin/dolphin.qrc000066400000000000000000000016311444020206400222050ustar00rootroot00000000000000 cut.svg delete.svg exit.svg falling_blue.svg falling_green.svg folder.svg help.svg helpQt.svg high_blue.svg high_green.svg low_blue.svg low_green.svg new.svg paste.svg pdf.svg play.svg png.svg range.svg reloadFile.svg rising_blue.svg rising_green.svg save.svg zoomIn.svg zoomOut.svg zoomRange.svg zoomReset.svg wiRedPanda-4.1.12/app/resources/dolphin/exit.svg000066400000000000000000000051671444020206400215430ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/dolphin/falling_blue.svg000066400000000000000000000036621444020206400232130ustar00rootroot00000000000000 wiRedPanda-4.1.12/app/resources/dolphin/falling_green.svg000066400000000000000000000036571444020206400233700ustar00rootroot00000000000000 wiRedPanda-4.1.12/app/resources/dolphin/folder.svg000066400000000000000000000050361444020206400220400ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/dolphin/help.svg000066400000000000000000000102641444020206400215140ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/dolphin/helpQt.svg000066400000000000000000000103301444020206400220130ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/dolphin/high_blue.svg000066400000000000000000000033271444020206400225140ustar00rootroot00000000000000 wiRedPanda-4.1.12/app/resources/dolphin/high_green.svg000066400000000000000000000033161444020206400226630ustar00rootroot00000000000000 wiRedPanda-4.1.12/app/resources/dolphin/low_blue.svg000066400000000000000000000033621444020206400223750ustar00rootroot00000000000000 wiRedPanda-4.1.12/app/resources/dolphin/low_green.svg000066400000000000000000000033561444020206400225510ustar00rootroot00000000000000 wiRedPanda-4.1.12/app/resources/dolphin/new.svg000066400000000000000000006557551444020206400214010ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/dolphin/paste.svg000066400000000000000000006556431444020206400217200ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/dolphin/pdf.svg000066400000000000000000000046701444020206400213410ustar00rootroot00000000000000 image/svg+xml PDF wiRedPanda-4.1.12/app/resources/dolphin/play.svg000066400000000000000000006575761444020206400215600ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/dolphin/png.svg000066400000000000000000000047061444020206400213540ustar00rootroot00000000000000 image/svg+xml PNG wiRedPanda-4.1.12/app/resources/dolphin/range.svg000066400000000000000000000055551444020206400216670ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/dolphin/reloadFile.svg000066400000000000000000000060601444020206400226310ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/dolphin/rising_blue.svg000066400000000000000000000037011444020206400230640ustar00rootroot00000000000000 wiRedPanda-4.1.12/app/resources/dolphin/rising_green.svg000066400000000000000000000036751444020206400232470ustar00rootroot00000000000000 wiRedPanda-4.1.12/app/resources/dolphin/save.svg000066400000000000000000000075151444020206400215270ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/dolphin/zoomIn.svg000066400000000000000000000070141444020206400220360ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/dolphin/zoomOut.svg000066400000000000000000000063141444020206400222410ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/dolphin/zoomRange.svg000066400000000000000000000075611444020206400225330ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/dolphin/zoomReset.svg000066400000000000000000000076641444020206400225650ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/icons/000077500000000000000000000000001444020206400175165ustar00rootroot00000000000000wiRedPanda-4.1.12/app/resources/icons/128x128/000077500000000000000000000000001444020206400204535ustar00rootroot00000000000000wiRedPanda-4.1.12/app/resources/icons/128x128/wpanda-file.png000066400000000000000000000044151444020206400233540ustar00rootroot00000000000000PNG  IHDR>asBIT|d pHYsetEXtSoftwarewww.inkscape.org<IDATx}Prw  Rƒj Sji'iMoh'/ՉmiubXmҼ VmvRk@DbĆ w>{.<7z֣{>KO>u(gdk @cWe9UjOVk @%bWbS;'y jR\~4+s1QTBDs,G1 @`h*se8D?/7ɐ`¸+3Ϫ+2p%)j˩Q+uGPTRz=_^YLuT@%6QZ_m_rɌ~V^~(*E:ǘK>U# zd9(Խ+"dԫ J#] G ʲ&iPbby /=hҘRڼ K!5M @t[ 5 epe}& aLL[22uV4DH4i:,MZ@VpiVڵll$t09 QL`r(&G09 Q((&G09 QL`rcfJ͑Dg.j9:W Hu%p.`$q4n/zOn#No|ɡG"z륞ng=":<\ks Miewi0IX0sg)b`keC:vtONt_8Hp"g^ $\iZ^;b{6G*qoM o֤_PHZ߄w,s^v0Z}MέJ{px=Lxq!;N,gD7 xa uw^:N³Vug9[[E7fYw>.vVlzsf@vߏhF#-:k x[6zLN- l{vC:>b{ŊȼGH[N fܶMa՗Z/KpÞ@g0F擃{fRl(y skڵߡk}xh |7-D׸O%!Y_0|&Ih.`0-sP%>_vJAdޚwt@_I_ C/#qz6֣Cp,v8q`!c85zm0&mIsnDdfYwFh'om5侾2j/js 3wp'\Em}:/9v<,x2W@0wM$Y&c߇;0*- LO(!\‡̞?ߡ0ֿ A˲݈kCnos!ynʣDM8b3pӑ`KYw5VIOҜzO¨h0_[+̞?ӾaER R`ށŷ904l~>+[,nxŠ9U+ Qjj^1 > ^7l~,OGhxb`BH͆` @\'iזhNI|{gM-s) ]x~j^-,k!ќq[[~6sP"~hsS.E¥CQ'*oz<<&IX;4lA`P0'JqP[`r(&G09 QL`Ltc`r(&G09 QL`rS/x7pWO<pc_cW o n}o=4[4{DAx Cއ /+o?w!B!B!B?J#?IENDB`wiRedPanda-4.1.12/app/resources/icons/128x128/wpanda.png000066400000000000000000000270321444020206400224370ustar00rootroot00000000000000PNG  IHDR>asBIT|d pHYsetEXtSoftwarewww.inkscape.org< IDATxw\U̶l6l@ H$ AQy£#ExIG)R$H#uCz%:3s?n;wޙn&;s9{m\ 3 `<05E:n 4ٟM'@XZagS"RjSu-\`0G)Ou|*@DN]xxxF).jG0-.&a WԊ]ݘ`fn^  <%(O=LH #:XqQFVe{vc1ϔRMܠ/K@D~`H!e&k4lP].QPϒnaldN-`PJ -We "3;Cz[fq}˒)K3F_%ʸd*3 (zG.cfmAapٮr!w:H9p3p)W]<)MWI| gUFc21IE&zHQJuH`2< Lϗ7eKzxt2bD=ͻ.]'^)19~G3R {@D%sZ)n\ :M@$`H.Lv={p8|W)uOޜ}~g)n/kRܼs\,98/w 芴v8L9 o(ȕ! E1LZ= (6\ɺYQݬ2"Yc#B8@)$,C f)"Dn`ג٢UK#`(ӗ ^3ϼyc\'XXzbBٔuf7L>bb]k͎&ZK_^/0\᤼<e4qAeb}Dg\׵u^FYd,_T $Jx>HϿgݷa&oayoi9E\1*Fz(pG[Vb/Q6 nM ?;Lk/(SY|Q@^؂fv@9'ld4͝`1+9s1׃.-l]z6L&A\(eXߕ ( :P({\3&(3j8?"l"v.Ty }_$LsRxxqOcB@DbɓEL&B0SR u8]w(#:Iϰƕ\\ҴO &`Ϟyi.S+ȃKB%F, >Mkk RzQI5p5aw8_+_{瘹wb~4)nVwIV'cSg:\[n%p @_ Jcs.unZdج`33tP.cZ%7ٿOK&8՛g3eM B#U!K>1k%+4fpȂE[H=Us?Ȍτ! .em̀r+߿ֆhO$N *](e J+f,oѼcGlKt@莵P{9g tz yh~!ds7Y bJ>q6\A *5T®RzD ;OywF@)A@UGcKB2/f ՛eXwʰ@$+VG 6z'< '@q'}L_c1C_l'Spe[t&6qѮʊ9pG(0+6֣}Oq!޴:e *Ѯe:iɛ:ԼeРR.h9c_ M^Wi'k7_rCavw_pmE_mǾƥCS3 BcN&T51'F`pј?])㥔uĺU ,_ԨrԉHBOS#C6o.kVK\h5zg:}c\cl wt~0%(6WP[% kNQ kg%"V3~pM&0(R | iQ,k :_t#(u K;C q%8FfKL/?itmnO3FK,/:\X/)ődrlbX:cOlL֧/}}HզzZ2+C Η 5v^ tX^y~o.,} *aUvw7n`D^0ѭaBO%n :_t. cFW T$ʨs/be^bW/@EÏ-IusKWt^zb}[rm4;\mZl {'yJ}]DKy^J RF}-0xM y rdn_lT@~Gt b! tsi3ࠜɴmZAp8i*u0 |VP ; j8&0r? U{: Wr?. /cI Ew' U{!},/qm]Hnma. Ęo~}cg]FnMjeK(&Ͼt;n P#O3@֝la@PuP*Z%ʼ|}ޥĊj(?Ys8='@ffJ7 =ޞwx^<_q=cP$Kp8~AIHy 7T$Jy}a'6q;Twl! :ѭV3TS9T@ 0@E@ElsưǍ m{ ƨqbѿۄ07s[rZ:d >}9<s0ݴ| 0L+ksA|k ^z=g'BigS^?>>Dɠ@ M9G q=fw%?ɽELb&;P$#2DGB%@ ֈ y1>u/pa; ҉ޖ">[[4/+\%^Aԝ2S"P ./%"pHwh9_cXyMD'eq3cOcl厄dI4nq%֮{韼~2}ȘPb*6FEe{V [e)*w[⚥4/8OWCEKo=*~3{Ͻx ǐ#LXk4BJdK=w>{*E8ûg>%s?’PZ_augHe͝%#'0,LM:n!h6r;shpٓxck&$[jFr7պmHt_Lig) >'g}bF|{2u#}ɶEжC]AՁNkP}%Յa:ʪ1bbѾnX9D@9;^Ye7ܱU/o sCN}B-#wŸT^b^+_te+q#"iwySĞqV&\'8{h(K/,1a6{==Qtbgn=[ &1m +jpLn_lwE)%Z,i-%Ճz :Z_gS?MvZԀC+R pŠ[a[nsuFDŽ"܆z2' EW6>mKv\(~<`)3J^wp!K-!l3i|TbҰRr*%vQzа.]g};' YLDee5Y[=Fw cc,1Na_jK;mAafN 07a*5,t.@T:14ώ6#cćbN}-g.p-,EG+3Q2xSn%B o8qPȷ\y֕s ;:-8e{u7%;XQWc/3 !LRs$HfzڣNd`h sarg3]q]^ǵ=\&XcC-/d-#0t3lY0PF$^R1cC~ҷA|X ?=Pt6 F3Ǚ?S2wZKkik4@#= * LLcDžRX/´8IO:xkx߉xİ="aBe!/̲__SԎdJ1by >x|lf7BOzѡ-o^Pg؛f^u7oV3Cg=L|Eڗ-!thf${]+%'Á D4]1l_JLԢ7f>eЈ* a]m}d pq',F3Kxw si2PUPF|hu#{?N<%OnN<߽69 W^ZԎQ2Rx>&_[Ί]#jw@ϳ٧Hl,lg^JG4ϯielU5e 8sylU<]zV]  Kȵ/Q`[PyD&4_T\/kL/LGuh{]"6qU &N7ÇWP΋khh!= IDATi tA̙y(sO:+2}2BS !6JV̴ =oogksviMJm̎g^wfǰyG9b.a{ w ?0Nc"'m=|Җ  F/;1ʬ,S+7& č~CG-2 ziԝsZ啭QqɌETӲ-1oǹ2(SflE1w tCNu:)f1 ;ʚjk6jJ++WVI:͜p4IHMh+jb4*wijoD/pN@wm uoU <~S=5T6}!AWzlU7URX(ugXAwS#߾gOMEK-n:,5Myg2z$Eć+Iܘ9؋'["sԌUtɺeStEC_[`;IwNM8rލ} Aӽ?fę1{oq0y`vC/.Ԣ} ڤu70 }eUM#Y[=Uc8`4e4 !QR+{{5}2m|bT?wݩV>~k}/TC1]8gOsڔPo6|ݭt`әNZl ql-F`y|.}mw굜ADw5vˆLzI#Y( sL2IM ٫q1#QL{]+#fG;Aʕlʫ+M>3Cgsq=k q@JI )+hS7HgJ>1 )'(Xh 7͋r$8FHӨUo_1<W6"b`A]=tGUd#N@|O$L*J21|ϭJN(敞?Lãj MVOyw"~4 ~kAV|$mlPcfCX_5?liNe{Y-'J'$xVQˆ\>)F5 $s-VepK)_W͇@)YX k7m)vI"kSh9Cg yH¿Ɵa37i\P-8)} ,֜oEP)$ZAHl (8u>#r~2NہYJ׭R_r6HPODsS#ߴEHN|dzBEl.Q/G4Z#R}rxB1|kAG[q"`d[vuwbiBg 5* ,`T" ]-Kz%QB`ߦ2 N _ Jѧ "GtK?)<TMG%SqTgD*0 0dpЮ(9$_dbmmkJ+@Db1 ݉ѕ~f߆w;V '=k*p|~7H)Qnda;X>5΍'lN+ߞXDamF3W'>W/3(v@%wbFKG4[Bm ǖsRV. Baq-&r3dx *A\G#iGPpڔ8?by~')m9t)n&dQǂ=\\6XT.F QqDI"iuQ~}|93F*pRufN"r֢oOsZ%y WbD!)u9$凖qXν6ڰ/S{OD&b8{)N6m!*Kb>Ӧ wRevzO*Frz1%?/ɜ06oX(mSJe-O첡$"˗vgG=,ܴ{C"w3E;aMإT鼯δ7X9w3!M) 8áOQ0mxƖ1&fJ7v e*"a0u ob$oI1Mх$D8CK8xLxQ\jV݂P2Jx XdesiV5Yݤ[L =D1TQS(*Q 0aH#6zkȅkJ ;t*4ɧE&nJdBD#ۛ{stڟvqs° x xD)շ>5 CDNN:fW < CDC!>@M?U,:V0'O> L1Xk!@PwM;zf|uD*`ao>çwrm];PIENDB`wiRedPanda-4.1.12/app/resources/icons/26x26/000077500000000000000000000000001444020206400203055ustar00rootroot00000000000000wiRedPanda-4.1.12/app/resources/icons/26x26/wpanda-file.png000066400000000000000000000011411444020206400231770ustar00rootroot00000000000000PNG  IHDRJLsBIT|d pHYsvVtEXtSoftwarewww.inkscape.org<IDATHݔOSQsbHD@`iBH4q! ~m@`fB?" G'FLPXP Ŵ޶ ɽm Ky7^J}̈,B߉T|ON8XlA#HBk=-ZU- w+c+xwImhВѰEݻz 0% ~5\ 59V9o%.$SMA I~ {`G`ˤg4b?+2WÊG:]z/M/}w|/ni;߰^a]0 `t]@+EP_0m2琖0 wTO@\0DءGZ5?WJ|]xJuw'rIϻZӓSur3gM`s U)(7QP9`I)byκOoY[tIENDB`wiRedPanda-4.1.12/app/resources/icons/26x26/wpanda.png000066400000000000000000000030731444020206400222700ustar00rootroot00000000000000PNG  IHDRJLsBIT|d pHYsvVtEXtSoftwarewww.inkscape.org<IDATHlU?qoo-eЖZ•1d8l,SftN1Ȣ6-Š@m3"(XZ^qg- lorr{|Q`1~I^MC.yJ!1@Ck+< X/"/ƀWSYmY?KwZ8]I [“"tHUAx녃[_Y|qBv7I`J.1eծ +`ZHiHr᥅ey ¤u>%-Y R?|kŋ ˒-6Z%hg/ 9}21Yd8ee?Svyv04!#UhVѺq:Z SfBX2`a;6s̡qb[n)ZُC"t LwDd8wg\e54:"| aKˣ|ܼ#E>>.%V-{{Alv9&ŒUZ&Y<{)MyE= &jZgtz @L?ҽ3;N%}c9>c~W,e 'ju]'@=^bOd2X 7pGw㍝4KlZ=~S~/3k|6"hr@v2e~EkosÉ{oO/\ND_N^Ƈ`#g\cGb i(6:,awM/&{f'Kl%]Z C;4Ob'3_@Cp77q|%`<xg=b! j =Oa{/V0u>ņMߔ#kDX*'WWY6`0'5pz"$ܷho 했9,qzVbÑu? F3gOs:Dd)h_ %ʖG|څh=O. VN#5" Hky<fU֚E?o"IE*z'/µxbQ'3Ҿ,s͈ Z!h!"ab {z[23b@ d^|;Mw6 xybJp`?Bm)OO`w(l}f{yce hUبBje\Mkn/|mڗ+-;4= 1"P \1bݝa&W,Jƣێ0UZKzX\F xxܮJK[ c8[_ [4M$tm_uEP X\dh/+(IENDB`wiRedPanda-4.1.12/app/resources/icons/32x32/000077500000000000000000000000001444020206400202775ustar00rootroot00000000000000wiRedPanda-4.1.12/app/resources/icons/32x32/wpanda-file.png000066400000000000000000000011631444020206400231750ustar00rootroot00000000000000PNG  IHDR szzsBIT|d pHYsbb8ztEXtSoftwarewww.inkscape.org<IDATXAHQ?mS_%Fv/zK$t:%:(* uނPceܜd»}}uXJ؅>`hSp-Wx35uݪ_-kpj?vhwjH$ɼ9>qSjZȅmHUԿbғ"aNT ]8v_-K]N\*'"J+Xʀ8}k$,g r& ZI:f$VCRv>=dXEds3_)pes/^/-W񍭷 R#?}Rט=XqfΟo|,0*jgY1Nz;ZWNnD"H3]d+<ױV1ok[eBhU'lN?hujH ,iyUVIENDB`wiRedPanda-4.1.12/app/resources/icons/32x32/wpanda.png000066400000000000000000000037471444020206400222720ustar00rootroot00000000000000PNG  IHDR szzsBIT|d pHYsbb8ztEXtSoftwarewww.inkscape.org<dIDATXpT?罷qf $RPfXt jN)-:jѶV8#PFC:LmX¯!HBh~?{% ™ٙ}{sϹ+ܠjB>P/"gotFTWzP/R-OA'JR' (0g=#- ^&Ӂ .D_O]Q* ( HjL@3 CGnc>9h:X|lM—4&͆lX>b3,7K@UV},ɋ 6jv 6T@(?UP`F)dA/IY/ͩ£,Wc, os?ǹ\ҨM rdbEV: ,sa鬍}tq&fHo ir89'k/#^PsARE}! ,H/y"Z}3'x;tbi}NXNOIZxTvNǩj.ʼn7hESiMX긺OwqCu9jboWflo4R  ig 1%"Zݿ~~D_/&[W0rrWF7e⺊:ڠtƔOTn彃``a3i}'m8@26]ILmly vVpRdR?uwU/wPsvFF{fwfc䀫't:V˸J"j$ЗHz֋ ]3k&?7 (0rf]::r熴 v1Q<b0G?jh|*6aCn{luW3榗 07Ɲ2CzyU$1 u].lL`h E=Lhw=pt-:B~lX)^@[p϶S0c/{`!5omV˹7QWPpuB_@sAT\,OuWX+D8t7xyN%pv'WKF.69U 0.K`ͼ&X fU-V%:SWUUIU-<D磁t+j{S9eM`-ԭyIENDB`wiRedPanda-4.1.12/app/resources/icons/48x48/000077500000000000000000000000001444020206400203155ustar00rootroot00000000000000wiRedPanda-4.1.12/app/resources/icons/48x48/wpanda-file.png000066400000000000000000000017451444020206400232210ustar00rootroot00000000000000PNG  IHDR00WsBIT|d pHYs  tEXtSoftwarewww.inkscape.org<bIDATh_hSW?6M6iZmڥQ+mQ͹/>8dX(T؃n+_t8^V*?H6PAAb_k]kcmM4={2lͽmn|sw~rr92dx8S9W>xvhM[V?1W\sHY E6J3RGdP`g#<\<7o_QlZ Ec_l.mbDѣə' ^(*Dp o,TeLpYORPTuԱLhWIY()WR?ǫc$Ank-uGdƐ?[dzJEk5A nIϾnU{' [X(Q+Ybg=_| Ăv;مS<XW$MMijx6̍ mC@/ŷf)c}ݎ{f*6n#:Ƿv(w_anMU dTogi񥓈⅋{w]L{rj/:^o_k=G/ݰ%R:ٓx6}j$ՑD46aq:[Tf]7eJ9{]Ç'(Ow> >wVuSzxYUiaRgZpVk[VHA-ئ2}<<ب)7 {0֪iWʁVC>NM ?J@V!HaC%Gw(ޮeYEu*b <$EwM<2) eBIENDB`wiRedPanda-4.1.12/app/resources/icons/48x48/wpanda.png000066400000000000000000000066131444020206400223030ustar00rootroot00000000000000PNG  IHDR00WsBIT|d pHYs  tEXtSoftwarewww.inkscape.org< IDAThiUՕ7<0CQ2L"SR!L6B6&ͲcӝW٬YjL;5IF`f!8 c@* p}ޫ[uS—,*`/ۀVD\lZT@_wDb1\LU}YU¥UUW q33fMGv W!Q2W*CF2>TD6PR={oU'Y^cD_NH*U EF@UIľQ Jpidm„t9, M@UXDNǔnQ-jPvNX,DGxjVĀE" &<uIy{DtK58#d hIa 5E&_8{0ɏH3>=\*Ufp@Es&WktoHId[RZIJN4D.0oD9]#"K&q\$ۼH9 h׻7; .I"x6/:S#qdn.|.{4@ y5"%g$u,zm5mH]Z8 WobA)LдdҗP.m@Pņe7]3EdS]c@;dG$ZT8HQTC=Ά4ÇEbh r,GJGqtL$I3t[4>Ί77P+Cm_p6&v Ɇz~5I&yR 'SD8od6MҧF4]E. R>cMu @am ҇L0C[Q\ux.PW'n\;Z|v1b ʶ3KO?&>n*kKwpfUST Z"kK;bAW |̩(ho@q"Gɺs'Q\ʠwL+xRvr?^ju.SYxNB>:Ө*A0 h2aG.[&iٱWOUYUk2 DYὃ)3./4M  \Dc5 ܎6z%SgP8r:o^Wy&|\{˧Zkk aGnG\Al,cwdQ0RVI7 ' ';9Q:*Տ&Ei Nf|-m -K1TL,=2{/xn%DkUǬ+|\Z)oM|`JMuX/d\nU7?bypflf(?>{Oz =Tzh]0s]1vXbcPcxnG[70b #p|D~q"P}9sAUk꛱*]2Ǐ]^HyMK)7n"[rcǟ3a4oc(lo`\ͺ8=FdZ'k@A 5̿K$2{Vс7-p1Km{%e] u2ʯs#Q rPUE3t=M߹ioh$ϛpy Z][ |cؙPGR |v]qFo=>LS?.gp^|=A8߳cu^A!?|N/@k~0k/&'63%]g+Sylmr+1P: l~H%ͮlT{1?k9 WTr ኃ]b,ʮ`W+X s (DcvrO)o9L+8Z;ՆeM`ed_IX=]^쵴 Τgwl .zc.a/Ul͞>pMT jSA#)Q$ڢ"FsSDW>+|:bk_2zz޻MC.u+ zp ^j:Ꝋ^^ϕaNj,ko;%UͮR(?x 4T02_.΁VĴ3t>7u"wVSӘD5LF<<N>(AT)M7 "0׀@=<׶ynʽڑV5DSsSrx*P"Zo!!- ~)>9fs# HՈ0߯ҲT\5U-?v7)nIQ8f}x$\4@Tu ?']|4G v׻htoh[RaDe3\"dt.tAUu\ĿKy@DYK%[Zu={"ҽVsrzU VQDjo[.M!IENDB`wiRedPanda-4.1.12/app/resources/icons/64x64/000077500000000000000000000000001444020206400203115ustar00rootroot00000000000000wiRedPanda-4.1.12/app/resources/icons/64x64/wpanda-file.png000066400000000000000000000022131444020206400232040ustar00rootroot00000000000000PNG  IHDR@@iqsBIT|d pHYs+tEXtSoftwarewww.inkscape.org<IDATx_lSU?]׹9EU6m<@"1NE^0LLA$>L>d1(qAE,fBX4$dMHBMtСIhw{ ò V'=󻟞˹)88888*0UDj`}2R" 7RvJ?T պ s.)47tW|%D"1\2&wvʛt^ 6 yb"te^A5next^laü{:m/@ g=7Ro{#n== ׳8pj߭'tozkK*Tm/VB _0'%eĤZ%ߣ`܂sRdiV`5 GX# bl)pk))~V|eűA;m7:S#D! [;sy?61#j*i z@2*W6SY)L&x:[QIDc|[/q 福< Vq'k199s'<-/aΒ 8߳v@~tq@2YGJH\qrj wۺy6rMgjw/7;Q'|-k} Y];jY^|w.a߯}bj5]nQxעW/\wG9\ 2eD) 2FG8S$.hXF׳:9Hc 4.WH7BaqD\u.uw6lgSCN,=4p{9~= 1 94G'(Mxg09=ӝepëgm_{!%ԶuV'}pg_eA$W:A&&F*V`5 GX#4R*`Pq\Q \+ 26C|%Fppppp5+FJK[XIENDB`wiRedPanda-4.1.12/app/resources/icons/64x64/wpanda.png000066400000000000000000000115321444020206400222730ustar00rootroot00000000000000PNG  IHDR@@iqsBIT|d pHYs+tEXtSoftwarewww.inkscape.org<IDATxyՕǿmnYD@D$F(bt$:bT51NF|8ND?nqM&4ج4{{qU~3O{~sϹk@Us`0T t~Vv?tQ)RU=|qTU]U'q)WEORիT5aטk[1ۖcE+t!k j^*IGx'HE_䎤GD۲s,Қƌt_^$.ha2ή *z&Fb8,T X5Blln{%C;d[㫬Hs7Hb9dTXIU`_dxĦ82| @b2QIR[iF3"P:x ~?v!GտOJK@_va67ߋie#@5|, Z@ )cH+ "uS N" \%"k@B1XƿdVq}&Ɉ KpGL~ Pճ Wvp,e<}h"Dy4zz |gF3GrD䅾IN+kr>Ь&,}(]+f%8uT@B;0GD6Xo{ ~otcI${""$|A*??%CB)/~|`F.D@0 4` K{W+: Dp%@UO^ECVKOxd6EIS+,+?x,U+VfyxGOP߰׺FD]${cCICr], tK,x mȼ~Rf&" cbK9N9s ftuʄE,u;fveڭVw'kMd_ZubG߮`B,a H//< ׋Ƚ% "X;6ӽ;FEVT:ohtnvl5>gYVMaC&2޳vDŽEC[[.zL~i;pX'zـu]v= ? Wc'0a.̾h@{!`O1D’)VU"h)f\NVn܂Վ**Xw L s[[K>_aÄ  RG@ ?f\Vn AK@m$M{ '&p#ϒ:jTgFYQ}p7_ u5c^{U]=+>^^ W7_u Am2%|PQ8}nZ2ٜoQǍU#o$UÃkV˄_X>A6$bٰeaP3~+˴h`^v0]qXt=@KYS T[p3CT9{ej.'? W"2 6tȺA'jM@fxzm ?6HQvZozq޻d,Nn8=m6B5ݍ?{-\K ϊN^p t`Ul< baûB- J6{ݸ2a)y鶠{]__!P5;&C~LSga>E|/lj)Ț9P9ez# e:-TF0v O@ڙs PC,7Mirm%9fh2澽_V2ltIw4{>*;#ԅ HG3#xM`bAU/Uλ1Gq'f2~䥲OO`+dPXƇV,*9H,_ыz|$iP9ij{Φ%XNy- \D"E PTcMی6YEo0S1a'Q[q!g7ճN*2-L߶"Goh+v?,T@yÇ j7}ž\mpa`%dX|r-9"ϝѠ-#vd hSvy77"FSVtޛv2d~XC2k>bp]I;ok)sմ>kL8*;mw-btd߬TAqYbBQUe8q5 \2ߧ{d%LO[ NG;}Ic9[z<$f-xs=cɺR[qrG?;Fx(|Za`oMxt=T{}AvІ7}-+KBht4lb鷞-7x}cLuC~lS'ԖySa^ö7Eᳩ:0U7m8.];hZ=\>t?q 56 X~|BW@fc bc.0a]ĐS읡o݌V7qīk;Z~_ Yᔱ5a^D|bR1+?zV_h@<樓hKUQ]]49>V8O/cܵ7G9dNi 8o9+"3c*LyT`"D]d?z8tf|HҺn%EˤFao1z ۶y_ w᫁© LIcf|jSY%H' 5%jƉ:=ozxƎ͙ގ)%\l͍*{x@IT_7Mg`vEB8kbַiO@$Ո41q1{4%۹eBմoZ۝_k:hl)Ԥ[BՌIOQ>3gKPsmHME'z`\:U,@b#敋EN Ob3k˘Y[FTW_ŲmItm-efQ|ULUP F rl&BTÏ|V4tpq,Uo2 4bљHaIF fE*o6C+,enY;E$>;Ě26=b bϴ' b#^+kClXtFkoUF:6wX "ң7+4/o&{&d6}.z t+ $KnL#S98Cq{rL޿Y` oos[[v'GUZvluŎZ~>6"A"‚ .}u#2tds΃ټurQ. ٿu5VcY7$6BC5mn̊x!kJ f*Y;'&ʤq\,OD+䋘YڳXZ .`PXt+q$bOuĠm5*?rV\3P Uj/a/hp) 2x*&ObNSB$# XAEԞ֏. c #BD2812", ",. c #C13521", "'. c #C23A26", "). c #C64532", "!. c #C84C3A", "~. c #CE6050", "{. c #D36F60", "]. c #D77C6F", "^. c #DB8B7F", "/. c #DF988E", "(. c #E4A69C", "_. c #E8B4AC", ":. c #ECC1BB", "<. c #F8E8E6", "[. c #FEFBFA", "}. c #B0695E", "|. c #FAF5F5", "1. c #FCF7F6", "2. c #F4DBD7", "3. c #ECC1BA", "4. c #E4A79E", "5. c #DD8F83", "6. c #D57668", "7. c #CD5B4A", "8. c #C5412E", "9. c #BE2B16", "0. c #C23925", "a. c #C84B39", "b. c #CC5A49", "c. c #AF2D1A", "d. c #A5220F", "e. c #9F210F", "f. c #99200E", "g. c #931E0E", "h. c #8D1D0D", "i. c #BB7E75", "j. c #F2E7E5", "k. c #FAEFED", "l. c #EFCCC6", "m. c #E5AAA1", "n. c #DB887C", "o. c #CF6454", "p. c #C54330", "q. c #BD2913", "r. c #BB2811", "s. c #B52611", "t. c #AF2410", "u. c #A72310", "v. c #97200D", "w. c #901E0D", "x. c #891C0C", "y. c #8C2314", "z. c #B7766C", "A. c #F9ECEA", "B. c #EBBEB7", "C. c #DD9186", "D. c #D06555", "E. c #BC2712", "F. c #AE2510", "G. c #A52210", "H. c #9B210F", "I. c #921F0D", "J. c #891F0F", "K. c #B26C62", "L. c #EAD8D5", "M. c #E19E94", "N. c #D26E5F", "O. c #B42611", "P. c #AB2410", "Q. c #A1220F", "R. c #96200E", "S. c #8B1C0C", "T. c #AE6459", "U. c #E7D2CE", "V. c #C84B38", "W. c #A9230F", "X. c #9E210F", "Y. c #8A1D0C", "Z. c #8C1D0C", "`. c #8F1D0C", " + c #921E0D", ".+ c #951F0D", "++ c #A74B3D", "@+ c #DCB0A9", "#+ c #FBFBFB", "$+ c #CE6C5E", "%+ c #BA2812", "&+ c #AD2411", "*+ c #A0210F", "=+ c #8E1D0D", "-+ c #98200E", ";+ c #9C210F", ">+ c #A5230F", ",+ c #AA230F", "'+ c #AD2410", ")+ c #B02511", "!+ c #B72712", "~+ c #B92712", "{+ c #C13520", "]+ c #C94F3D", "^+ c #CD5B4B", "/+ c #D1695A", "(+ c #E19D93", "_+ c #E7B0A8", ":+ c #F3D7D3", "<+ c #F8E9E7", "[+ c #FEFCFC", "}+ c #FAFAFA", "|+ c #ECECEC", "1+ c #E1E1E1", "2+ c #D08A7F", "3+ c #AC2410", "4+ c #9D200E", "5+ c #8F1E0D", "6+ c #A42210", "7+ c #B12611", "8+ c #B72611", "9+ c #BC2812", "0+ c #BE2C17", "a+ c #C5422F", "b+ c #E4A89F", "c+ c #EDC4BE", "d+ c #F8F8F8", "e+ c #E9E9E9", "f+ c #E2E2E2", "g+ c #D7ACA6", "h+ c #B12511", "i+ c #A1210F", "j+ c #A6230F", "k+ c #BF2D18", "l+ c #C74A37", "m+ c #D16A5A", "n+ c #DB897D", "o+ c #E5A9A0", "p+ c #F0CFCA", "q+ c #FBF3F2", "r+ c #F7F7F7", "s+ c #E8E8E8", "t+ c #DCCDCB", "u+ c #DC8D82", "v+ c #FEFEFE", "w+ c #F5F5F5", "x+ c #E3E3E3", "y+ c #C03823", "z+ c #CE5F4E", "A+ c #DB8A7E", "B+ c #E8B6AE", "C+ c #F2F2F2", "D+ c #E7E7E7", "E+ c #C75A4A", "F+ c #C33B27", "G+ c #E09B90", "H+ c #EFCCC7", "I+ c #FDF8F8", "J+ c #FCFCFC", "K+ c #E6E6E6", "L+ c #E4E4E4", "M+ c #CD7C70", "N+ c #BF301A", "O+ c #CD5D4D", "P+ c #DE9489", "Q+ c #F0F0F0", "R+ c #E5E5E5", "S+ c #D49E96", "T+ c #C0301B", "U+ c #CF6252", "V+ c #E0998F", "W+ c #F1D1CD", "X+ c #EFEFEF", "Y+ c #DBC1BD", "Z+ c #C23824", "`+ c #D37061", " @ c #EDEDED", ".@ c #E1DEDD", "+@ c #BE2D18", "@@ c #BE2A14", "#@ c #CB5644", "$@ c #DF978D", "%@ c #F5DDDA", "&@ c #F6F6F6", "*@ c #EAEAEA", "=@ c #C44C3A", "-@ c #F4F4F4", ";@ c #CB6F61", ">@ c #F3F3F3", ",@ c #D19087", "'@ c #C5402D", ")@ c #EDC6C0", "!@ c #FEFCFB", "~@ c #D9B4AE", "{@ c #C43E2A", "]@ c #DC8C81", "^@ c #F5E0DD", "/@ c #F1F1F1", "(@ c #E0D7D5", "_@ c #FCF4F3", ":@ c #C13E2B", "<@ c #BF2F19", "[@ c #F9F9F9", "}@ c #EEEEEE", "|@ c #C86252", "1@ c #EBEBEB", "2@ c #D08479", "3@ c #ECC2BC", "4@ c #D6A69F", "5@ c #C64633", "6@ c #FBF2F0", "7@ c #DCC7C4", "8@ c #C0331E", "9@ c #D77E71", "0@ c #FDFDFD", "a@ c #E2E1E1", "b@ c #BF321D", "c@ c #CF6151", "d@ c #C65443", "e@ c #C84D3B", "f@ c #FDF9F8", "g@ c #CD7669", "h@ c #C33B26", "i@ c #D3988F", "j@ c #DE9388", "k@ c #DABAB6", "l@ c #C1341F", "m@ c #FAF0EE", "n@ c #E1DBDB", "o@ c #BE2B15", "p@ c #C0321D", "q@ c #F9EAE8", "r@ c #C34532", "s@ c #C0311C", "t@ c #C96657", "u@ c #FBF2F1", "v@ c #D0877D", "w@ c #D7AAA3", "x@ c #DECCC9", "y@ c #E9B7B0", "z@ c #BF3420", "A@ c #C65545", "B@ c #F7E7E4", "C@ c #CD786B", "D@ c #D39990", "E@ c #DBBBB7", "F@ c #F7E4E1", "G@ c #E2DCDC", "H@ c #EBBFB8", "I@ c #CA6758", "J@ c #D1887E", "K@ c #DECDCA", "L@ c #CA5140", "M@ c #F2D5D1", "N@ c #CB5543", "O@ c #D49A91", "P@ c #E2A198", "Q@ c #E8B3AB", "R@ c #CA6859", "S@ c #F0CDC8", "T@ c #D18B80", "U@ c #DAB0AA", "V@ c #E0D3D2", "W@ c #C4402C", "X@ c #C13C28", "Y@ c #C96051", "Z@ c #F9EBE9", "`@ c #D7A8A1", " # c #DFCCC9", ".# c #FDF7F7", "+# c #E4E3E3", "@# c #C03521", "## c #CA5240", "$# c #F7E6E3", "%# c #C75948", "&# c #EEC9C4", "*# c #CF7D71", "=# c #D6A199", "-# c #DEC6C3", ";# c #BF331F", "># c #C75847", ",# c #D07F74", "'# c #E6AFA7", ")# c #D7A59E", "!# c #E0CDCA", "~# c #C03824", "{# c #C95F4F", "]# c #D1857A", "^# c #F3D9D5", "/# c #D8ACA5", "(# c #F0CEC9", "_# c #E0D3D1", ":# c #C23D2A", "<# c #E6ACA4", "[# c #C96455", "}# c #E2A197", "|# c #D28D83", "1# c #DCB9B4", "2# c #DC8B80", "3# c #E4E0DF", "4# c #D88174", "5# c #C55140", "6# c #D77D70", "7# c #CF7C70", "8# c #D8A7A0", "9# c #D37162", "0# c #E1D2D0", "a# c #C2402D", "b# c #CB6B5D", "c# c #D3948B", "d# c #D6796B", "e# c #DDC0BC", "f# c #D77B6E", "g# c #E4E2E2", "h# c #BF311C", "i# c #D98477", "j# c #C75949", "k# c #D2897F", "l# c #DBB8B3", "m# c #E3A299", "n# c #E4E1E0", "o# c #BF301B", "p# c #C85B4B", "q# c #D28A80", "r# c #DDBBB6", "s# c #E5E3E2", "t# c #F8E7E5", "u# c #C85C4C", "v# c #FCF5F4", "w# c #D38C82", "x# c #D06656", "y# c #DDBCB7", "z# c #D49389", "A# c #F1D0CB", "B# c #DFC8C5", "C# c #C33C28", "D# c #C3422F", "E# c #D26D5E", "F# c #D9ABA5", "G# c #DE958A", "H# c #E4DDDC", "I# c #EABBB4", "J# c #D38E84", "K# c #C74936", "L# c #DEC4C0", "M# c #D26B5C", "N# c #C23E2B", "O# c #E2A096", "P# c #CD7265", "Q# c #EFCAC4", "R# c #D9A8A1", "S# c #BE2E18", "T# c #C96152", "U# c #D79E96", "V# c #E3D8D6", "W# c #D57567", "X# c #D5978D", "Y# c #E2D4D2", "Z# c #C65342", "`# c #BF2E19", " $ c #CF6353", ".$ c #D38F85", "+$ c #DE9287", "@$ c #CB5746", "#$ c #E1CDCA", "$$ c #F7E5E2", "%$ c #C44B3A", "&$ c #D26C5D", "*$ c #D1887D", "=$ c #F4DCD9", "-$ c #E0CBC8", ";$ c #EEC7C2", ">$ c #C65241", ",$ c #F3D8D4", "'$ c #D57769", ")$ c #D5978E", "!$ c #C94E3C", "~$ c #C74734", "{$ c #E3D9D7", "]$ c #C9503F", "^$ c #CA6354", "/$ c #DAABA4", "($ c #E7B2AA", "_$ c #E5E2E1", ":$ c #C03622", "<$ c #EDC3BD", "[$ c #CE776A", "}$ c #D88175", "|$ c #E6E5E5", "1$ c #C44431", "2$ c #E19C92", "3$ c #D2897E", "4$ c #DA867A", "5$ c #E3A49B", "6$ c #C85A4A", "7$ c #E19F95", "8$ c #D8A59E", "9$ c #CB5645", "0$ c #C13B27", "a$ c #C64431", "b$ c #D08176", "c$ c #EABCB5", "d$ c #F6E1DE", "e$ c #C95E4E", "f$ c #DAAEA7", "g$ c #CA5442", "h$ c #E9B6AF", "i$ c #D5948B", "j$ c #E4DCDB", "k$ c #C0341F", "l$ c #D07C6F", "m$ c #EAB9B2", "n$ c #D16B5B", "o$ c #E1CCC9", "p$ c #CA6657", "q$ c #DDBEBA", "r$ c #C75747", "s$ c #DBB0A9", "t$ c #D06657", "u$ c #D8A29A", "v$ c #D88073", "w$ c #EBBCB6", "x$ c #E5E3E3", "y$ c #C34431", "z$ c #D6786A", "A$ c #E6E4E4", "B$ c #C34330", "C$ c #EDC5BF", "D$ c #E6ADA5", "E$ c #D69D94", "F$ c #F6E3E0", "G$ c #CD5C4C", "H$ c #E6E3E2", "I$ c #C3412E", "J$ c #DD9185", "K$ c #C44734", "L$ c #D67B6D", "M$ c #E3A59C", "N$ c #D98376", "O$ c #D47163", "P$ c #DA8679", "Q$ c #F4DAD6", "R$ c #C65140", "S$ c #DBB3AD", "T$ c #F2D6D1", "U$ c #E8B5AD", "V$ c #F1D2CE", "W$ c #C85A49", "X$ c #DFC3BE", "Y$ c #CD7062", "Z$ c #E2D5D3", "`$ c #EBBDB7", " % c #E5DFDF", ".% c #C23F2C", "+% c #E7B1A9", "@% c #D7A29A", "#% c #DEC6C2", "$% c #D08074", "%% c #F3D7D2", "&% c #E3DEDD", "*% c #FAEEEC", "=% c #E2D3D1", "-% c #D4988F", ";% c #C23723", ">% c #BF2F1A", ",% c #E9B8B1", "'% c #D39187", ")% c #CE5E4D", "!% c #E1D0CE", "~% c #D59E96", "{% c #E2D6D4", "]% c #C03A26", "^% c #DBB5B0", "/% c #DC8E82", "(% c #D08478", "_% c #DA877B", ":% c #C03723", "<% c #D9AEA8", "[% c #E1D9D8", "}% c #D6A098", "|% c #DFC9C6", "1% c #CF8075", "2% c #E3DCDB", "3% c #D59B93", "4% c #E3E2E2", "5% c #C54E3C", "6% c #DAB5B0", "7% c #C96354", "8% c #DEC8C5", "9% c #CC7163", "0% c #DFCECB", "a% c #CD796C", "b% c #E1D5D3", "c% c #CE7A6E", "d% c #CD7568", "e% c #DECBC8", "f% c #DBBBB6", "g% c #D6A59E", "h% c #E2E0E0", "i% c #D18C81", "j% c #E0D4D2", "k% c #CB6A5C", "l% c #DAB5AF", "m% c #C34735", "n% c #D29187", "o% c #DFD2D1", "p% c #BD2B16", "q% c #D7A69F", "r% c #E3E0DF", "s% c #CC7569", "t% c #DAB6B0", "u% c #C13D29", "v% c #CD776A", "w% c #D9B0AA", "x% c #E1D6D4", "y% c #C5503E", "z% c #DBB7B1", "A% c #9A200E", "B% c #A1210E", "C% c #A82410", "D% c #B72711", "E% c #E3E1E0", "F% c #BF331E", "G% c #8D1E0D", "H% c #8A1C0C", "I% c #941F0E", "J% c #AF2510", "K% c #C96252", "L% c #BA2712", "M% c #961F0E", "N% c #891D0D", "O% c #AC2510", "P% c #DCBBB6", "Q% c #8C1D0D", "R% c #881B0C", "S% c #A82511", "T% c #8C1C0D", "U% c #B44B3C", "V% c #B82711", "W% c #8E1D0C", "X% c #D7A39B", "Y% c #D18377", "Z% c #BB2711", "`% c #911E0D", " & c #912313", ".& c #FBF7F6", "+& c #D9ADA6", "@& c #BE756B", "#& c #E2D9D7", "$& c #A92310", "%& c #8C200F", "&& c #F7F0EF", "*& c #C44937", "=& c #891C0D", "-& c #BC776D", ";& c #951F0E", ">& c #8B2011", ",& c #FAF6F5", "'& c #AA2410", ")& c #D2A7A0", "!& c #DFCAC7", "~& c #AD5749", "{& c #A72410", "]& c #932A1A", "^& c #8B1F0E", "/& c #CD7467", "(& c #9D210E", "_& c #891D0C", ":& c #881D0C", "<& c #DCBAB5", "[& c #931E0D", "}& c #E3DBDA", "|& c #8C1E0E", "1& c #C2422F", "2& c #B42410", "3& c #8A1208", "4& c #BB2712", "5& c #CA6556", "6& c #750A04", "7& c #5F0000", "8& c #740904", "9& c #B52410", "0& c #941F0D", "a& c #992C1C", "b& c #841007", "c& c #6A0402", "d& c #AA200E", "e& c #A43C2C", "f& c #D8AAA3", "g& c #95170A", "h& c #640201", "i& c #9F1B0C", "j& c #B65B4E", "k& c #A61E0D", "l& c #610100", "m& c #901509", "n& c #CB897F", "o& c #B22310", "p& c #670301", "q& c #780B05", "r& c #A82310", "s& c #E7C9C4", "t& c #B92711", "u& c #720804", "v& c #9F1C0C", "w& c #8D1E0E", "x& c #7F0E06", "y& c #810F07", "z& c #B82611", "A& c #A13A2B", "B& c #91150A", "C& c #6D0603", "D& c #A9200E", "E& c #C07469", "F& c #D39086", "G& c #AB200F", "H& c #6E0703", "I& c #8C1309", "J& c #B92611", "K& c #9F220F", "L& c #EFDAD7", "M& c #DAABA5", "N& c #BA2711", "O& c #881108", "P& c #600000", "Q& c #690402", "R& c #9A190B", "S& c #9A2F20", "T& c #DEC5C1", "U& c #A11C0D", "V& c #7A0B05", "W& c #AF220F", "X& c #C37C72", "Y& c #E4DFDF", "Z& c #B72511", "`& c #831007", " * c #620101", ".* c #8D1409", "+* c #FAF3F1", "@* c #A41D0D", "#* c #96180B", "$* c #BA675A", "%* c #C75746", "&* c #94170A", "** c #6A0502", "=* c #97180B", "-* c #8D1E0F", ";* c #F8EFEE", ">* c #CC6D5F", ",* c #B62511", "'* c #6B0502", ")* c #CA867D", "!* c #D08075", "~* c #750904", "{* c #99180B", "]* c #9B200E", "^* c #A74233", "/* c #D5958C", "(* c #9D1A0C", "_* c #8D1309", ":* c #B32410", "<* c #A03829", "[* c #FAF4F2", "}* c #D9A9A2", "|* c #710804", "1* c #7E0D06", "2* c #A81F0E", "3* c #B56255", "4* c #DEBEB9", "5* c #8B1E0D", "6* c #D3A29B", "7* c #E2D2D0", "8* c #A21C0D", "9* c #9A3323", "0* c #830F07", "a* c #620201", "b* c #670402", "c* c #881208", "d* c #B32511", "e* c #8A1E0D", "f* c #BF7B71", "g* c #700703", "h* c #670302", "i* c #AA4D3F", "j* c #F1E4E1", "k* c #C6513F", "l* c #A71E0E", "m* c #800E06", "n* c #9E3626", "o* c #E6C8C4", "p* c #CA6455", "q* c #BA2611", "r* c #630201", "s* c #8B1308", "t* c #932717", "u* c #D6A39B", "v* c #9C1A0C", "w* c #7C0D06", "x* c #770A05", "y* c #8F1509", "z* c #A71F0E", "A* c #AF3A29", "B* c #C17A6F", "C* c #FDFBFB", "D* c #820F07", "E* c #730804", "F* c #871107", "G* c #AE220F", "H* c #AE210F", "I* c #7B0C05", "J* c #650301", "K* c #8A1308", "L* c #9B1A0C", "M* c #D8A49C", "N* c #A61E0E", "O* c #8F1409", "P* c #6F0703", "Q* c #A01B0C", "R* c #AD210F", "S* c #DF968C", "T* c #B12310", "U* c #891208", "V* c #630101", "W* c #851007", "X* c #92160A", "Y* c #AC210F", "Z* c #E0C4BF", "`* c #9E1B0C", " = c #A21D0D", ".= c #E3D2D0", "+= c #B0220F", "@= c #A01C0C", "#= c #9D1B0C", "$= c #A51E0D", "%= c #B22410", "&= c #E6E2E1", "*= c #7D0C06", "== c #660301", "-= c #A31D0D", ";= c #9B190B", ">= c #93160A", ",= c #B52511", "'= c #C6503E", ")= c #C95C4C", "!= c #CB6859", "~= c #C33D29", "{= c #CE7366", "]= c #D07F73", "^= c #D38A80", "/= c #D6968D", "(= c #DBADA7", "_= c #DEBAB4", ":= c #E0C4C0", "<= c #E2CFCC", "[= c #E5D9D7", "}= c #E7E2E2", "|= c #E5ABA2", "1= c #C44735", "2= c #B83522", "3= c #C39E99", "4= c #BC2A15", "5= c #C77366", "6= c #F7EFEE", "7= c #CB6455", "8= c #CA5949", "9= c #CD6E60", "0= c #CF776A", "a= c #D18074", "b= c #D3897E", "c= c #BE331F", "d= c #BE412F", "e= c #BE4C3C", "f= c #BE5444", "g= c #BE5B4C", "h= c #BE6457", "i= c #BE6A5E", "j= c #BE7266", "k= c #BE796E", "l= c #BE8279", "m= c #BD877F", "n= c #BE8C85", "o= c #BD8B84", "p= c #BC8A83", "q= c #BC857D", "r= c #BD8178", "s= c #BC8077", "t= c #BC7B72", "u= c #BC7368", "v= c #BB685C", "w= c #BC5F51", "x= c #BC5040", "y= c #BC3F2D", "z= c #BD2F1A", "A= c #D59288", "B= c #BD311D", "C= c #BF4735", "D= c #BF5848", "E= c #C0685B", "F= c #C1766B", "G= c #C1847B", "H= c #C2948E", "I= c #C2A19C", "J= c #C2B1AE", "K= c #C3BFBE", "L= c #C2C2C2", "M= c #C1C1C1", "N= c #C0C0C0", "O= c #BFBFBF", "P= c #BEBEBE", "Q= c #BDBDBD", "R= c #BCBCBC", "S= c #BBBBBB", "T= c #BABABA", "U= c #B9B9B9", "V= c #B9ACAA", "W= c #B9938E", "X= c #BA7C72", "Y= c #BB6053", "Z= c #BC3F2C", "`= c #D79B92", " - c #BF3B28", ".- c #C0503F", "+- c #C26659", "@- c #C27B71", "#- c #C39189", "$- c #C5A6A2", "%- c #C5BBB9", "&- c #C6C6C6", "*- c #C5C5C5", "=- c #C4C4C4", "-- c #C3C3C3", ";- c #B8B8B8", ">- c #B7B7B7", ",- c #B6B6B6", "'- c #B8ABA9", ")- c #B8827A", "!- c #BA5343", "~- c #BD2D17", "{- c #D9A49C", "]- c #BF4635", "^- c #C16052", "/- c #C47D73", "(- c #C69791", "_- c #C7B0AD", ":- c #C8C4C3", "<- c #C8C8C8", "[- c #C7C7C7", "}- c #B5ADAC", "|- c #B7827A", "1- c #BA5444", "2- c #DBADA6", "3- c #BD2A15", "4- c #BF3E2B", "5- c #C2594A", "6- c #C47469", "7- c #C79088", "8- c #C8AAA6", "9- c #CAC6C5", "0- c #CBCBCB", "a- c #CACACA", "b- c #C9C9C9", "c- c #B5B5B5", "d- c #B4B4B4", "e- c #B5B0AF", "f- c #B78A83", "g- c #B95A4C", "h- c #BD2E19", "i- c #DEB7B1", "j- c #C14C3B", "k- c #C46D61", "l- c #C78E86", "m- c #CBB0AC", "n- c #CDCAC9", "o- c #CDCDCD", "p- c #CCCCCC", "q- c #B4ACAB", "r- c #B68179", "s- c #BA5445", "t- c #BC2D17", "u- c #E0BFBA", "v- c #C04331", "w- c #C46557", "x- c #C7867D", "y- c #CAA7A2", "z- c #CEC9C9", "A- c #CFCFCF", "B- c #CECECE", "C- c #B3B3B3", "D- c #B2B2B2", "E- c #B4AEAE", "F- c #B58881", "G- c #BC2E19", "H- c #E3C9C5", "I- c #C0402D", "J- c #C56759", "K- c #C98C83", "L- c #CDAEAA", "M- c #D0CDCC", "N- c #D0D0D0", "O- c #B2ABAA", "P- c #B48179", "Q- c #B95445", "R- c #E4D1CE", "S- c #C24D3B", "T- c #C67367", "U- c #CC9C95", "V- c #D0C2C0", "W- c #D2D2D2", "X- c #D1D1D1", "Y- c #B1B1B1", "Z- c #B0B0B0", "`- c #B1AAA9", " ; c #B5827B", ".; c #B85B4D", "+; c #BB3420", "@; c #DD9084", "#; c #EEC8C3", "$; c #E7DAD8", "%; c #BE301B", "&; c #C2503F", "*; c #C8786D", "=; c #CDA099", "-; c #D3CAC9", ";; c #D3D3D3", ">; c #AFAFAF", ",; c #B19894", "'; c #B57065", "); c #B94B3B", "!; c #E9E3E3", "~; c #C55C4D", "{; c #CA897F", "]; c #D2B6B2", "^; c #D4D2D2", "/; c #D5D5D5", "(; c #D4D4D4", "_; c #AEAEAE", ":; c #AFA6A4", "<; c #B2837C", "[; c #B6655A", "}; c #B94938", "|; c #BC2F1A", "1; c #C13924", "2; c #D06758", "3; c #C45241", "4; c #CA8075", "5; c #D0ADA8", "6; c #D7D4D3", "7; c #D6D6D6", "8; c #ADADAD", "9; c #ACACAC", "0; c #ACAAAA", "a; c #AF9591", "b; c #B27870", "c; c #B65D50", "d; c #BA4130", "e; c #BC2B16", "f; c #B73C2A", "g; c #BA5647", "h; c #CB7D71", "i; c #E6B4AD", "j; c #C14634", "k; c #C97569", "l; c #D0A49D", "m; c #D6CFCE", "n; c #D7D7D7", "o; c #ABABAB", "p; c #AAAAAA", "q; c #AAA8A8", "r; c #AB9794", "s; c #AF8680", "t; c #B2746A", "u; c #B46155", "v; c #B74F40", "w; c #B93C29", "x; c #BD2C17", "y; c #B93420", "z; c #B5402F", "A; c #B24C3C", "B; c #AF584B", "C; c #A9675D", "D; c #A37872", "E; c #AC9794", "F; c #CFCDCD", "G; c #C23D29", "H; c #BF3521", "I; c #C7685A", "J; c #CF9A92", "K; c #D7C9C7", "L; c #D8D8D8", "M; c #A9A9A9", "N; c #A8A8A8", "O; c #A7A7A7", "P; c #A7A09F", "Q; c #AA9895", "R; c #AB8C88", "S; c #AD837D", "T; c #AD7870", "U; c #AF6E65", "V; c #B1655A", "W; c #B26257", "X; c #B16156", "Y; c #B25A4D", "Z; c #B2594C", "`; c #B1584B", " > c #B15E52", ".> c #B06256", "+> c #AD685D", "@> c #AC6D64", "#> c #AA7067", "$> c #A8766F", "%> c #A87C75", "&> c #A38782", "*> c #A09290", "=> c #9C9B9B", "-> c #9C9C9C", ";> c #9B9B9B", ">> c #9A9A9A", ",> c #A4A4A4", "'> c #C44532", ")> c #C1402D", "!> c #C97568", "~> c #D2ABA5", "{> c #DAD7D6", "]> c #D9D9D9", "^> c #A6A6A6", "/> c #A5A5A5", "(> c #A3A3A3", "_> c #A2A2A2", ":> c #A1A1A1", "<> c #A0A0A0", "[> c #9F9F9F", "}> c #9E9E9E", "|> c #9D9D9D", "1> c #DDDDDD", "2> c #C64E3C", "3> c #CD887D", "4> c #D7C0BD", "5> c #DBDBDB", "6> c #DADADA", "7> c #C85747", "8> c #BF3622", "9> c #C86556", "0> c #D19A92", "a> c #DAD1D0", "b> c #DCDCDC", "c> c #CA6051", "d> c #CB776A", "e> c #D6B3AE", "f> c #DCDBDB", "g> c #CC6A5B", "h> c #DDDCDC", "i> c #DEDEDE", "j> c #CF7467", "k> c #C96A5C", "l> c #D5A8A1", "m> c #DEDCDB", "n> c #DFDFDF", "o> c #D28074", "p> c #CA6B5D", "q> c #DFDDDC", "r> c #E0E0E0", "s> c #D58C81", "t> c #E0DEDD", "u> c #D8978E", "v> c #C44D3B", "w> c #DFD5D3", "x> c #D9A29A", "y> c #CF7F74", "z> c #DCAEA7", "A> c #BE2F19", "B> c #DFB9B4", "C> c #C54D3B", "D> c #E1DAD9", "E> c #E2C5C1", "F> c #D9B2AC", "G> c #E5D1CE", "H> c #E1D1CF", "I> c #E8DDDB", "J> c #D8A69F", "K> c #EBE8E7", "L> c #CF786B", "M> c #DFC7C3", "N> c #C03420", "O> c #D2877C", "P> c #E4DAD8", "Q> c #C13A26", "R> c #D48F84", "S> c #E5DFDE", "T> c #C75342", "U> c #E8E3E3", "V> c #CB6253", "W> c #C54C3A", "X> c #E8E6E6", "Y> c #CF7264", "Z> c #DDB3AD", "`> c #D28175", " , c #C75240", "., c #DCAFA8", "+, c #D69085", "@, c #C54836", "#, c #DCAAA3", "$, c #EAE9E9", "%, c #D99F96", "&, c #C33E2B", "*, c #DAA49C", "=, c #DDAFA8", "-, c #D38378", ";, c #E9E2E1", ">, c #E1C0BB", ",, c #D07568", "', c #E8DAD8", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + @ # $ % & * = - ; > , ' > > > ) ! ~ { ] ^ / ( _ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . : < ^ [ } | 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 4 5 6 7 @ 8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 0 a ' 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 b c { d _ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e f 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 g h i j k . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . l 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 m a n o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 q r 0 s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . t 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 f u v k . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . $ 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 w x : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . y z 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 A B C D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . E 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 F 6 G . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . H I 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 J K 8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . L 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 M N _ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . y m 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 O P C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Q R R S T T T U V V W T T T T T S R X . . . . . . . . . . . . . . . . . . Y 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 c Y 8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 Z ` ...+.@.#.$.%.&.*.=.-.;.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.,.'.).!.*.~.{.].^./.(._.:.V <.[.. . }.2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 M L |.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.3.4.5.6.7.8.9.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.0.a.b.c.d.e.f.g.h.2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 i.j.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . k.l.m.n.o.p.q.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.r.s.t.u.e.v.w.x.2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 y.z.9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.B.C.D.'.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.E.s.F.G.H.I.x.2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 J.K.L.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . M.N.8.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.E.O.P.Q.R.S.2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 T.U.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . V.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.O.W.X.g.2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 Y.Z.`.`. +g.g.R.R.R.R.R.R.R..+g.I.++@+R R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . #+$+>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.%+&+*+g.2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 =+g.-+;+*+>+,+'+)+O.!+~+>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.{+8.]+^+/+6.n.(+_+:.:+<+[+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . }+|+1+2+>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.%+3+4+h.2 2 2 2 2 2 x.5+-+X.6+P.7+8+9+>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.0+a+^+6.5.b+c+T [+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . d+e+f+1+1+g+>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.h+i+X.j+F.s.E.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.k+l+m+n+o+p+q+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . r+s+f+f+1+1+1+t+>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.p.%.u+_.W D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . v+w+s+x+f+f+f+1+f+1+1+y+>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.{+z+A+B+T . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . v+C+D+x+x+x+f+f+f+f+f+1+1+E+>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.F+%.G+H+I+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . J+C+K+L+L+x+x+x+x+f+f+f+1+f+1+M+>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.N+O+P+ .X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . #+Q+R+L+L+L+x+L+x+f+x+f+x+f+1+f+1+S+>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.T+U+V+W+8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . }+X+R+R+R+L+R+L+x+L+x+x+x+f+f+f+f+1+1+Y+>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.Z+`+o+<+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . d+ @R+K+R+R+R+L+L+L+L+L+x+x+x+x+f+x+f+1+f+.@+@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.@@#@$@%@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . &@*@K+K+K+K+R+R+R+R+L+R+L+x+L+x+x+x+f+f+f+f+1+1+=@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.).#.H+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . v+-@e+D+D+K+D+K+R+K+R+R+R+L+R+L+L+L+x+x+x+x+f+f+f+1+f+;@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.p.#.H+D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . v+>@s+s+D+D+D+K+D+K+K+K+R+R+R+R+L+L+L+x+L+x+f+x+f+x+f+1+f+,@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.'@#.)@!@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . J+C+e+s+s+s+D+D+D+D+K+K+K+R+K+R+R+R+L+R+L+x+L+x+x+x+f+f+f+f+1+~@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.{@]@^@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . #+/@*@e+s+s+s+D+s+D+K+D+K+D+K+R+K+R+R+R+L+L+L+L+x+L+x+x+x+f+x+f+1+(@q.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.*.o+_@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . }+Q+*@e+s+e+s+s+s+D+s+D+D+D+K+K+K+K+K+K+R+R+R+L+R+L+x+L+x+x+x+f+f+f+f+1+:@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.<@`+)@D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . [@}@*@e+e+e+e+e+e+s+s+s+D+s+D+D+D+K+D+K+R+K+R+R+R+L+R+L+L+L+x+x+x+x+f+f+f+1+|@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.'@]@T . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . d+ @1@*@*@*@e+*@e+s+e+s+e+s+D+s+D+D+D+K+K+K+K+K+R+R+R+R+L+L+L+x+L+x+f+x+f+x+f+1+2@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.@@D.3@D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . v+&@ @1@*@1@*@*@*@e+*@e+e+e+s+s+s+s+s+D+D+D+D+K+K+K+R+K+R+R+R+L+R+L+x+L+x+x+x+x+f+f+f+4@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.5@G+6@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . v+&@ @1@1@1@1@*@*@*@*@*@e+e+e+e+e+s+s+s+D+s+D+K+D+K+D+K+R+K+R+R+R+R+L+L+L+x+L+x+x+x+f+x+f+7@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.8@9@%@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . 0@-@ @|+1@|+1@1@1@*@1@*@e+*@e+*@e+s+e+s+s+s+s+s+D+D+D+D+K+K+K+R+K+R+R+R+L+R+L+x+L+x+x+x+f+f+f+a@b@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.@@c@B.D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . J+>@ @|+|+|+1@|+1@1@1@*@1@*@*@*@*@e+e+e+e+e+s+s+s+D+s+D+D+D+K+D+K+R+K+R+R+R+L+L+L+L+L+x+x+x+x+f+f+f+d@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.e@m.f@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . }+C+ @ @ @|+|+|+|+1@|+1@1@1@*@1@*@*@*@e+*@e+s+e+s+e+s+D+s+D+D+D+K+K+K+K+K+R+R+R+R+L+L+L+x+L+x+f+x+f+f+f+g@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.h@G+1.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . }+/@}@ @}@ @|+ @|+ @|+1@|+1@1@1@*@1@*@*@*@e+*@e+e+e+s+s+s+s+D+D+D+D+D+K+K+K+R+K+R+L+R+L+R+L+L+L+x+x+x+x+f+f+i@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.0.j@6@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . v+d+Q+}@}@}@ @ @ @ @ @|+|+|+|+|+1@1@1@1@*@*@*@*@*@e+e+e+s+e+s+s+s+D+s+D+D+D+K+D+K+K+K+R+R+R+R+L+L+L+x+L+x+x+x+f+x+k@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.l@]@m@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . 0@r+X+X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@e+*@e+*@e+e+e+s+s+s+s+s+D+D+D+D+K+K+K+R+K+R+R+R+L+R+L+x+L+x+x+x+f+f+n@o@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.p@#.q@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . 0@&@Q+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@1@1@*@*@*@*@e+e+e+e+e+s+s+s+D+s+D+D+D+K+D+K+R+K+R+R+R+L+L+L+L+L+x+x+x+x+f+f+r@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.s@n.A.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . J+w+X+X+X+X+X+X+}@}@}@}@}@ @ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+*@e+s+e+s+e+s+D+s+D+D+D+K+K+K+K+K+R+R+R+R+L+R+L+x+L+x+x+x+f+f+t@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.s@]@u@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . J+w+X+Q+X+Q+X+X+X+}@X+}@X+}@ @}@ @}@ @|+ @|+ @|+1@|+1@1@1@*@1@*@*@*@e+e+e+e+e+s+s+s+s+D+D+D+D+D+K+D+K+R+K+R+R+R+L+R+L+L+L+x+x+x+x+f+v@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.Z+G+I+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " v+#+>@Q+Q+Q+Q+Q+Q+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+|+1@1@1@1@*@*@*@*@*@e+e+e+s+e+s+e+s+D+s+D+D+D+K+D+K+K+K+R+R+R+R+L+L+L+x+L+x+f+x+f+w@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.8.o+[+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " d+-@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+*@e+e+e+s+s+s+s+s+D+D+D+D+K+K+K+R+K+R+R+R+L+R+L+x+L+x+x+x+f+x@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.!.y@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " C+/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+|+|+1@1@1@1@1@*@*@*@*@e+e+e+e+e+s+s+s+D+s+D+K+D+K+D+K+R+K+R+R+R+L+L+L+L+L+L+x+x+x+a@z@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.b.H+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " /@/@/@/@/@Q+Q+Q+Q+Q+X+X+X+X+X+}@}@}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@e+*@e+*@e+s+e+s+e+s+D+s+D+D+D+K+K+K+K+K+K+R+R+R+L+R+L+x+L+x+x+x+f+A@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.q.`+B@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " w+/@C+/@Q+/@Q+/@Q+X+Q+X+Q+X+Q+X+}@X+}@X+}@ @}@ @}@ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+e+e+e+e+s+s+s+s+D+s+D+D+D+K+D+K+R+K+R+R+R+L+R+L+L+L+x+x+x+x+C@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.s@j@X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " C+/@/@/@/@/@/@Q+Q+Q+Q+Q+Q+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+1@1@1@1@1@*@*@*@*@*@e+*@e+s+e+s+e+s+D+s+D+D+D+K+D+K+K+K+R+R+R+R+L+L+L+x+L+x+f+x+D@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.=.3@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " -@/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@|+1@*@1@*@*@*@e+*@e+e+e+s+s+s+s+s+D+D+D+D+K+K+K+R+K+R+R+R+L+R+L+x+L+x+x+x+E@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.%.F@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " C+C+C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @ @ @|+|+|+|+|+1@1@1@1@*@*@*@*@*@e+e+e+e+e+s+s+s+D+s+D+K+D+K+D+K+R+K+R+R+R+R+L+L+L+x+L+x+x+G@o@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.N+j@I+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " &@C+C+/@C+/@/@/@/@/@Q+Q+Q+Q+Q+X+X+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@e+*@e+*@e+s+e+s+s+s+D+s+D+D+D+D+K+K+K+K+K+R+R+R+L+R+L+x+L+x+x+x+r@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.).H@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " >@C+C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@X+}@ @}@ @}@ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+e+e+e+e+e+s+s+s+D+s+D+D+D+K+D+K+R+K+R+R+R+L+L+L+L+L+x+x+x+I@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.%.<+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " C+C+C+C+C+C+/@/@/@/@/@Q+Q+Q+Q+Q+Q+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+1@1@1@1@1@*@1@*@*@*@e+*@e+s+e+s+e+s+D+s+D+D+D+K+K+K+K+K+R+R+R+R+L+L+L+x+L+x+f+J@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.,.o+D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " w+>@C+>@C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+ @|+1@|+1@1@1@*@1@*@*@*@e+*@e+e+e+s+s+s+s+s+D+D+D+D+K+K+K+R+K+R+L+R+L+R+L+L+L+x+x+w@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.O+^@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " >@C+C+C+C+C+C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+|+1@1@1@1@*@*@*@*@*@e+e+e+e+e+s+s+s+D+s+D+K+D+K+D+K+K+K+R+R+R+R+L+L+L+x+L+x+K@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.T+G+[+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " w+>@C+>@C+C+C+/@C+/@/@/@/@/@Q+Q+Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@e+*@e+*@e+s+e+s+s+s+s+s+D+D+D+D+K+K+K+R+K+R+R+R+L+R+L+x+L+x+x+z@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.L@M@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " -@>@C+>@C+C+C+/@C+/@C+/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@*@e+e+e+e+e+s+s+s+D+s+D+D+D+K+D+K+R+K+R+R+R+L+L+L+L+L+x+x+A@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.k+P+!@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " >@>@>@C+>@C+C+C+C+C+/@/@/@/@/@Q+Q+Q+Q+Q+X+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+1@|+1@1@1@*@1@*@*@*@e+*@e+s+e+s+e+s+D+s+D+D+D+K+K+K+K+K+R+R+R+R+L+L+L+x+L+x+C@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.N@U . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " w+>@>@>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @}@ @|+ @|+ @|+1@|+1@1@1@*@1@*@*@*@e+*@e+e+e+s+s+s+s+D+D+D+D+D+K+K+K+R+K+R+R+R+L+R+L+L+L+x+O@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.N+P@D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " >@>@>@>@>@C+C+C+C+C+C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+|+1@1@1@1@*@*@*@*@*@e+e+e+s+e+s+s+s+D+s+D+D+D+K+D+K+K+K+R+R+R+R+L+L+L+x+L+E@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.U+<.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " >@-@>@C+>@C+>@C+C+C+/@C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@e+*@e+*@e+e+e+s+s+s+s+s+D+D+D+D+K+K+K+R+K+R+R+R+L+R+L+x+L+G@o@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.,.Q@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " r+>@>@>@>@>@C+>@C+C+C+C+C+/@C+/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@1@1@*@*@*@*@e+e+e+e+e+s+s+s+D+s+D+D+D+K+D+K+R+K+R+R+R+L+L+L+L+L+x+r@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.`+R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " >@-@>@-@>@>@>@C+>@C+C+C+/@C+/@/@/@/@/@Q+Q+Q+Q+Q+X+X+X+X+X+X+}@}@}@}@}@ @ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+*@e+s+e+s+e+s+D+s+D+D+D+K+K+K+K+K+R+R+R+R+L+R+L+x+L+R@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.p.S@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " &@-@-@>@>@>@>@>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+X+Q+X+Q+X+X+X+}@X+}@X+}@ @}@ @}@ @|+ @|+ @|+1@|+1@1@1@*@1@*@*@*@e+e+e+e+e+s+s+s+s+D+D+D+D+D+K+D+K+R+K+R+R+R+L+R+L+L+L+T@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.9.j@8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " w+-@>@-@>@>@>@>@>@C+C+C+C+C+C+/@/@/@/@/@Q+Q+Q+Q+Q+Q+Q+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+|+1@1@1@1@*@*@*@*@*@e+e+e+s+e+s+e+s+D+s+D+D+D+K+D+K+K+K+R+R+R+R+L+L+L+x+U@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.~.A.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " -@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+*@e+e+e+s+s+s+s+s+D+D+D+D+K+K+K+R+K+R+R+R+L+R+L+x+V@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.W@l.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " r+-@-@-@-@>@>@>@>@>@>@>@C+C+C+C+C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+|+|+1@1@1@1@1@*@*@*@*@e+e+e+e+e+s+s+s+D+s+D+K+D+K+D+K+R+K+R+R+R+L+L+L+L+L+X@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.9.j@8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " &@-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@/@/@/@/@Q+Q+Q+Q+Q+X+X+X+X+X+}@}@}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@e+*@e+*@e+s+e+s+s+s+D+s+D+D+D+K+K+K+K+K+K+R+R+R+L+R+L+x+Y@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.~.Z@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " -@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+X+Q+X+Q+X+Q+X+}@X+}@X+}@ @}@ @}@ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+e+e+e+e+s+s+s+s+D+s+D+D+D+K+D+K+R+K+R+R+R+L+R+L+L+2@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.-.H+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " r+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+/@/@/@/@/@/@Q+Q+Q+Q+Q+Q+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+1@1@1@1@1@*@*@*@*@*@e+*@e+s+e+s+e+s+D+s+D+D+D+K+K+K+K+K+R+R+R+R+L+L+L+`@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.9.G+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " w+-@-@-@-@-@>@-@>@-@>@C+>@C+>@C+>@C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+*@e+e+e+s+s+s+s+s+D+D+D+D+K+K+K+R+K+R+R+R+L+R+L+ #>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.6..#. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " -@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @ @ @|+|+|+|+|+1@1@1@1@*@*@*@*@*@e+e+e+e+e+s+s+s+D+s+D+K+D+K+D+K+R+K+R+R+R+R+L+L++#@#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.##$#. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " r+w+w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@/@/@/@/@Q+Q+Q+Q+Q+X+X+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@e+*@e+*@e+s+e+s+s+s+D+s+D+D+D+D+K+K+K+R+K+R+R+R+L+R+L+%#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.'.&#. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " &@w+-@w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@X+}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+e+e+e+e+e+s+s+s+D+s+D+D+D+K+D+K+R+K+R+R+R+L+L+L+*#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.9.G+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+>@C+C+C+C+C+/@/@/@/@/@Q+Q+Q+Q+Q+Q+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+1@1@1@1@1@*@1@*@*@*@e+*@e+s+e+s+e+s+D+s+D+D+D+K+K+K+K+K+R+R+R+R+L+L+=#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.6..#. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " d+w+w+w+w+-@-@-@-@-@-@-@>@-@>@>@>@C+>@C+>@C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+ @|+1@|+1@1@1@*@1@*@*@*@e+*@e+e+e+s+s+s+s+s+D+D+D+D+K+K+K+R+K+R+L+R+L+R+-#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.^+k.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " r+w+&@w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+|+1@1@1@1@*@*@*@*@*@e+e+e+s+e+s+s+s+D+s+D+K+D+K+D+K+K+K+R+R+R+R+L++#;#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.).%@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " w+w+w+w+w+w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@/@/@/@/@Q+Q+Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@e+*@e+*@e+s+e+s+s+s+s+s+D+D+D+D+K+K+K+R+K+R+R+R+L+R+>#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.;.&#. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " w+&@w+w+w+-@w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+C+C+/@C+/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@*@e+e+e+e+e+s+s+s+D+s+D+D+D+K+D+K+R+K+R+R+R+L+L+,#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.k+'#. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " r+w+&@w+w+w+-@w+-@w+-@>@-@>@-@>@-@>@>@>@C+>@C+C+C+/@C+/@/@/@/@/@Q+Q+Q+Q+Q+X+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+1@|+1@1@1@*@1@*@*@*@e+*@e+s+e+s+e+s+D+s+D+D+D+K+K+K+K+K+R+R+R+R+L+)#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.#.8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " w+&@w+w+w+w+w+w+w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+X+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @}@ @|+ @|+ @|+1@|+1@1@1@*@1@*@*@*@e+*@e+e+e+s+s+s+s+D+D+D+D+D+K+K+K+R+K+R+R+R+L+!#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.{..#. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " &@&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+/@/@/@/@/@Q+/@Q+Q+Q+Q+Q+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+|+1@1@1@1@*@*@*@*@*@e+e+e+s+e+s+s+s+D+s+D+D+D+K+D+K+K+K+R+R+R+R+L+~#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.b.m@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " [@&@&@&@w+w+w+w+w+w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@e+*@e+*@e+e+e+s+s+s+s+s+D+D+D+D+K+K+K+R+K+R+R+R+L+{#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.V.B@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " r+&@w+&@w+&@w+w+w+-@w+-@-@-@-@-@-@>@>@>@>@>@>@>@C+C+C+C+C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@1@1@*@*@*@*@e+e+e+e+e+s+s+s+D+s+D+D+D+K+D+K+R+K+R+R+R+L+]#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.{@^#. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " &@&@&@&@w+w+w+w+w+-@w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@/@/@/@/@Q+Q+Q+Q+Q+X+X+X+X+X+}@}@}@}@}@}@}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+*@e+s+e+s+e+s+D+s+D+D+D+K+K+K+K+K+R+R+R+R+/#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.;.(#. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " &@&@&@w+&@w+&@w+w+w+w+w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+X+Q+X+Q+X+Q+X+}@X+}@X+}@ @}@ @}@ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+e+e+e+e+s+s+s+s+D+D+D+D+D+K+D+K+R+K+R+R+R+_#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.s@:.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " d+&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+/@/@/@/@/@/@Q+Q+Q+Q+Q+Q+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+|+1@1@1@1@*@*@*@*@*@e+e+e+s+e+s+e+s+D+s+D+D+D+K+D+K+K+K+R+R+R+R+:#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.9.<#. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " r+r+&@&@&@&@&@w+w+w+w+w+w+-@-@-@-@-@>@-@>@-@>@C+>@C+>@C+>@C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+*@e+e+e+s+s+s+s+s+D+D+D+D+K+K+K+R+K+R+R+R+[#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.q.}#. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " &@r+&@&@&@w+&@w+&@w+w+w+-@w+-@-@-@-@-@>@-@>@>@>@>@>@>@C+C+C+C+C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+|+|+1@1@1@1@1@*@*@*@*@e+e+e+e+e+s+s+s+D+s+D+K+D+K+D+K+R+K+R+R+R+|#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.]@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " d+r+&@&@&@&@&@&@w+w+w+w+w+w+w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@/@/@/@/@Q+Q+Q+Q+Q+X+X+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@e+*@e+*@e+s+e+s+s+s+D+s+D+D+D+K+K+K+K+K+K+R+R+1#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.2#. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " &@r+&@r+&@r+&@w+&@w+&@w+w+w+w+w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+Q+X+}@X+}@X+}@ @}@ @}@ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+e+e+e+e+s+s+s+s+D+s+D+D+D+K+D+K+R+K+R+R+3#+@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.4#D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " d+r+r+&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+C+/@/@/@/@/@Q+Q+Q+Q+Q+Q+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+1@1@1@1@1@*@*@*@*@*@e+*@e+s+e+s+e+s+D+s+D+D+D+K+K+K+K+K+R+R+R+5#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.6#8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " r+&@r+&@r+&@&@&@w+&@w+w+w+w+w+w+-@-@-@-@-@>@-@>@-@>@>@>@C+>@C+>@C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+*@e+e+e+s+s+s+s+s+D+D+D+D+K+K+K+R+K+R+R+7#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.$.!@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " d+r+r+r+&@&@&@&@&@w+&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+|+1@1@1@1@*@*@*@*@*@e+e+e+e+e+s+s+s+D+s+D+K+D+K+D+K+R+K+R+R+8#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.9#[.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " r+&@r+&@r+&@&@&@&@&@&@&@w+w+w+w+w+w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@/@/@/@/@Q+Q+Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@e+*@e+*@e+s+e+s+s+s+D+s+D+D+D+D+K+K+K+R+K+R+0#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.{.!@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " r+r+r+r+r+&@r+&@&@&@w+&@w+&@w+w+w+-@w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+/@C+/@C+/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@X+}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+e+e+e+e+e+s+s+s+D+s+D+D+D+K+D+K+R+K+R+R+a#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.{.!@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " d+r+r+r+&@r+&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+>@C+C+C+C+C+/@/@/@/@/@Q+Q+Q+Q+Q+X+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+1@|+1@1@1@*@1@*@*@*@e+*@e+s+e+s+e+s+D+s+D+D+D+K+K+K+K+K+R+R+b#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.9#[+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " r+r+r+r+&@r+&@r+&@&@&@w+&@w+w+w+w+w+w+-@-@-@-@-@-@-@>@-@>@>@>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @}@ @|+ @|+ @|+1@|+1@1@1@*@1@*@*@*@e+*@e+e+e+s+s+s+s+D+D+D+D+D+K+K+K+R+K+R+c#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.d#8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " [@r+r+r+r+r+r+&@&@&@&@&@w+&@w+&@w+&@w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+|+1@1@1@1@*@*@*@*@*@e+e+e+s+e+s+s+s+D+s+D+K+D+K+D+K+K+K+R+e#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.f#D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " [@r+d+r+&@r+&@r+&@r+&@&@&@&@&@w+w+w+w+w+w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@e+*@e+*@e+e+e+s+s+s+s+s+D+D+D+D+K+K+K+R+K+g#h#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.i#. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " r+d+r+r+r+r+r+r+&@r+&@&@&@w+&@w+&@w+w+w+-@w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+C+C+/@C+/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@1@1@*@*@*@*@e+e+e+e+e+s+s+s+D+s+D+D+D+K+D+K+R+K+R+j#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.A+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " r+d+r+d+r+r+r+&@r+&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@>@-@>@-@>@-@>@>@>@C+>@C+C+C+/@C+/@/@/@/@/@Q+Q+Q+Q+Q+X+X+X+X+X+X+}@}@}@}@}@ @ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+*@e+s+e+s+e+s+D+s+D+D+D+K+K+K+K+K+R+k#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.V+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " d+d+d+r+r+r+r+r+&@r+&@r+&@&@&@w+&@w+w+w+w+w+w+w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+X+Q+X+Q+X+X+X+}@X+}@X+}@ @}@ @}@ @|+ @|+ @|+1@|+1@1@1@*@1@*@*@*@e+e+e+e+e+s+s+s+s+D+D+D+D+D+K+D+K+R+K+l#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.m#. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " r+d+r+d+r+r+r+r+r+r+&@&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+/@/@/@/@/@Q+Q+Q+Q+Q+Q+Q+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+|+1@1@1@1@*@*@*@*@*@e+e+e+s+e+s+e+s+D+s+D+D+D+K+D+K+K+K+n#o#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.@@B+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " [@d+r+d+r+d+r+r+r+&@r+&@r+&@&@&@&@&@w+w+w+w+w+w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+*@e+e+e+s+s+s+s+s+D+D+D+D+K+K+K+R+K+p#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.0+3@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " d+r+d+r+d+r+r+r+r+r+r+&@r+&@&@&@w+&@w+&@w+w+w+-@w+-@-@-@-@-@-@>@>@>@>@>@>@>@C+C+C+C+C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+|+|+1@1@1@1@1@*@*@*@*@e+e+e+e+e+s+s+s+D+s+D+K+D+K+D+K+R+K+q#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.T+S@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " d+d+d+r+d+r+d+r+r+r+&@r+&@&@&@&@&@&@w+w+w+w+w+-@w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@/@/@/@/@Q+Q+Q+Q+Q+X+X+X+X+X+}@}@}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+*@e+s+e+s+e+s+D+s+D+D+D+K+K+K+K+K+r#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.Z+` . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " d+d+d+d+d+r+r+r+r+r+r+&@r+&@r+&@&@&@w+&@w+&@w+w+w+w+w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+X+Q+X+Q+X+Q+X+}@X+}@X+}@ @}@ @}@ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+e+e+e+e+s+s+s+s+D+s+D+D+D+K+D+K+R+s#b@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.-.t#. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " d+d+d+r+d+r+d+r+r+r+r+r+r+r+&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+/@/@/@/@/@/@Q+Q+Q+Q+Q+Q+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+|+1@1@1@1@*@*@*@*@*@e+*@e+s+e+s+e+s+D+s+D+D+D+K+D+K+K+K+u#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.##v#. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " r+d+d+d+d+d+d+r+r+r+r+r+&@r+&@r+&@&@&@w+&@w+w+w+w+w+w+-@-@-@-@-@>@-@>@-@>@C+>@C+>@C+>@C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@|+1@*@1@*@*@*@e+*@e+e+e+s+s+s+s+s+D+D+D+D+K+K+K+R+w#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.x#!@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " [@d+[@d+r+d+r+d+r+r+r+r+r+r+&@r+&@&@&@w+&@w+&@w+w+w+-@w+-@-@-@-@-@>@-@>@>@>@>@>@>@C+C+C+C+C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @ @ @|+|+|+|+|+1@1@1@1@*@*@*@*@*@e+e+e+e+e+s+s+s+D+s+D+K+D+K+D+K+R+y#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.f#. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " d+d+d+d+d+d+r+d+r+d+r+&@r+&@r+&@&@&@&@&@&@w+w+w+w+w+w+w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@/@/@/@/@Q+Q+Q+Q+Q+X+X+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@e+*@e+*@e+s+e+s+s+s+D+s+D+D+D+D+K+K+K+s#b@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>./.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " #+d+[@d+d+d+d+d+r+r+r+r+r+r+&@r+&@r+&@&@&@w+&@w+&@w+w+w+w+w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@X+}@ @}@ @}@ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+e+e+e+e+e+s+s+s+D+s+D+D+D+K+D+K+R+{#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.q.Q@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " #+d+d+d+d+d+r+d+r+d+r+d+r+r+r+&@r+&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+C+/@/@/@/@/@Q+Q+Q+Q+Q+Q+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+1@1@1@1@1@*@1@*@*@*@e+*@e+s+e+s+e+s+D+s+D+D+D+K+K+K+K+z#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.<@A#. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " [@[@d+[@d+d+d+d+d+d+r+r+r+r+r+&@r+&@r+&@&@&@w+&@w+w+w+w+w+w+-@-@-@-@-@>@-@>@-@>@>@>@C+>@C+>@C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+ @|+1@|+1@1@1@*@1@*@*@*@e+*@e+e+e+s+s+s+s+s+D+D+D+D+K+K+K+B#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.C#B@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " [@[@d+[@d+[@d+r+d+r+d+r+r+r+r+r+r+&@&@&@&@&@w+&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+|+1@1@1@1@*@*@*@*@*@e+e+e+e+e+s+s+s+D+s+D+K+D+K+D+K+K+D#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.L@Q . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " [@d+[@d+d+d+d+d+d+r+d+r+d+r+&@r+&@r+&@&@&@&@&@&@&@w+w+w+w+w+w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@/@/@/@/@Q+Q+Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@e+*@e+*@e+s+e+s+s+s+s+s+D+D+D+D+K+K+K+g@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.E#D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " [@d+[@d+[@d+d+d+d+d+r+r+r+r+r+r+r+r+&@r+&@&@&@w+&@w+&@w+w+w+-@w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+/@C+/@C+/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@*@e+e+e+e+e+s+s+s+D+s+D+D+D+K+D+K+F#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.G#. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " [@[@[@d+d+d+d+d+d+d+r+d+r+d+r+r+r+&@r+&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+>@C+C+C+C+C+/@/@/@/@/@Q+Q+Q+Q+Q+X+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+1@|+1@1@1@*@1@*@*@*@e+*@e+s+e+s+e+s+D+s+D+D+D+K+K+K+H#0+>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.q.I#. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " [@[@[@d+[@d+[@d+d+d+d+d+d+r+r+r+r+r+&@r+&@r+&@&@&@w+&@w+w+w+w+w+w+-@-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @}@ @|+ @|+ @|+1@|+1@1@1@*@1@*@*@*@e+*@e+e+e+s+s+s+s+D+D+D+D+D+K+K+K+%#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.p@` . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " }+[@[@[@[@d+[@d+d+d+r+d+r+d+r+r+r+r+r+r+&@&@&@&@&@w+&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+|+1@1@1@1@*@*@*@*@*@e+e+e+s+e+s+s+s+D+s+D+D+D+K+D+K+J#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.K#q+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " #+[@d+[@d+[@d+d+d+d+d+d+r+d+r+d+r+&@r+&@r+&@r+&@&@&@&@&@w+w+w+w+w+w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@e+*@e+*@e+e+e+s+s+s+s+s+D+D+D+D+K+K+L#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.M#D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " [@[@[@[@d+[@d+[@d+[@d+r+d+r+d+r+r+r+r+r+r+&@r+&@&@&@w+&@w+&@w+w+w+-@w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+C+C+/@C+/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@1@1@*@*@*@*@e+e+e+e+e+s+s+s+D+s+D+D+D+K+D+K+N#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.O#. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " [@}+[@[@[@[@[@d+d+d+d+d+d+r+d+r+d+r+r+r+&@r+&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@>@-@>@-@>@-@>@>@>@C+>@C+C+C+/@C+/@/@/@/@/@Q+Q+Q+Q+Q+X+X+X+X+X+X+}@}@}@}@}@ @ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+*@e+s+e+s+e+s+D+s+D+D+D+K+K+K+P#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.9.Q#. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " [@[@[@[@[@d+[@d+[@d+d+d+d+d+d+r+r+r+r+r+&@r+&@r+&@&@&@w+&@w+w+w+w+w+w+w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+X+Q+X+Q+X+X+X+}@X+}@X+}@ @}@ @}@ @|+ @|+ @|+1@|+1@1@1@*@1@*@*@*@e+e+e+e+e+s+s+s+s+D+D+D+D+D+K+D+R#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.{@S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " }+[@[@[@[@[@[@d+[@d+d+d+r+d+r+d+r+r+r+r+r+r+r+&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+/@/@/@/@/@Q+Q+Q+Q+Q+Q+Q+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+|+1@1@1@1@*@*@*@*@*@e+e+e+s+e+s+e+s+D+s+D+D+D+K+D+H#S#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.D.D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " }+}+[@[@[@d+[@d+[@d+d+d+d+d+d+d+d+r+d+r+r+r+&@r+&@r+&@&@&@&@&@w+w+w+w+w+w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+*@e+e+e+s+s+s+s+s+D+D+D+D+K+K+T#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.M.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " #+[@[@[@[@[@[@[@[@d+[@d+[@d+r+d+r+d+r+r+r+r+r+r+&@r+&@&@&@w+&@w+&@w+w+w+-@w+-@-@-@-@-@-@>@>@>@>@>@>@>@C+C+C+C+C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+|+|+1@1@1@1@1@*@*@*@*@e+e+e+e+e+s+s+s+D+s+D+K+D+K+D+U#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.0+A#. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " #+[@}+[@}+[@[@[@d+[@d+d+d+d+d+d+r+d+r+d+r+r+r+&@r+&@&@&@&@&@&@w+w+w+w+w+-@w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@/@/@/@/@Q+Q+Q+Q+Q+X+X+X+X+X+}@}@}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@e+*@e+*@e+s+e+s+e+s+D+s+D+D+D+K+K+V#9.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.).q+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " }+}+[@[@[@[@[@[@d+[@d+[@d+d+d+d+d+r+r+r+r+r+r+&@r+&@r+&@&@&@w+&@w+&@w+w+w+w+w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+X+Q+X+Q+X+Q+X+}@X+}@X+}@ @}@ @}@ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+e+e+e+e+s+s+s+s+D+s+D+D+D+K+D+j#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.W#. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " [@}+[@}+[@[@[@[@[@[@d+[@d+d+d+r+d+r+d+r+d+r+r+r+r+r+&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+/@/@/@/@/@/@Q+Q+Q+Q+Q+Q+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+1@1@1@1@1@*@*@*@*@*@e+*@e+s+e+s+e+s+D+s+D+D+D+K+D+X#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.B+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " }+}+[@}+[@[@[@d+[@d+[@d+[@d+d+d+d+d+d+r+r+r+r+r+&@r+&@r+&@&@&@w+&@w+w+w+w+w+w+-@-@-@-@-@>@-@>@-@>@C+>@C+>@C+>@C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+*@e+e+e+s+s+s+s+s+D+D+D+D+K+Y#@@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.,.t#. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " }+[@}+[@}+[@[@[@[@[@[@d+[@d+[@d+r+d+r+d+r+r+r+r+r+r+&@r+&@&@&@w+&@w+&@w+w+w+-@w+-@-@-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @ @ @|+|+|+|+|+1@1@1@1@*@*@*@*@*@e+e+e+e+e+s+s+s+D+s+D+K+D+K+D+Z#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.`#N+>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>. $D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " }+}+}+[@}+[@}+[@[@[@d+[@d+d+d+d+d+d+r+d+r+d+r+&@r+&@r+&@&@&@&@&@&@&@w+w+w+w+w+w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@/@/@/@/@Q+Q+Q+Q+Q+X+X+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@e+*@e+*@e+s+e+s+s+s+D+s+D+D+D+D+K+.$>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.'@E#/.c+k.. . .#F@B.+$@$o@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.o+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " #+[@}+[@}+[@[@[@[@[@[@d+[@d+[@d+d+d+d+d+r+r+r+r+r+r+r+r+&@r+&@&@&@w+&@w+&@w+w+w+w+w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@X+}@ @}@ @}@ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+e+e+e+e+e+s+s+s+D+s+D+D+D+K+#$>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.p.2#M@. . . . . . . . . . . . m@y@&.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.p@$$. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " }+}+}+[@}+[@}+[@[@[@[@[@[@d+d+d+d+d+d+d+r+d+r+d+r+r+r+&@r+&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+C+/@/@/@/@/@Q+Q+Q+Q+Q+Q+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+1@1@1@1@1@*@1@*@*@*@e+*@e+s+e+s+e+s+D+s+D+D+D+K+K+%$>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.x#S@D . . . . . . . . . . . . . . . . . W+&$@@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.D.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " #+}+}+}+}+[@[@[@[@[@[@[@d+[@d+[@d+d+d+d+d+d+r+r+r+r+r+&@r+&@r+&@&@&@w+&@w+w+w+w+w+w+-@-@-@-@-@>@-@>@-@>@>@>@C+>@C+>@C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+ @|+1@|+1@1@1@*@1@*@*@*@e+*@e+e+e+s+s+s+s+s+D+D+D+D+K+*$>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.z+S@. . . . . . . . . . . . . . . . . . . . . . =$&$>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.Q@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " }+}+}+}+[@}+[@}+[@[@[@[@[@[@d+[@d+d+d+r+d+r+d+r+r+r+r+r+r+&@&@&@&@&@w+&@w+&@w+&@w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+|+1@1@1@1@*@*@*@*@*@e+e+e+s+e+s+s+s+D+s+D+K+D+K+-$q.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.<@m#. . . . . . . . . . . . . . . . . . . . . . . . . . ;$a.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.0.S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " }+}+}+}+}+}+[@}+[@}+[@d+[@d+[@d+d+d+d+d+d+r+d+r+d+r+&@r+&@r+&@r+&@&@&@&@&@w+w+w+w+w+w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@/@/@/@/@Q+Q+Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@e+*@e+*@e+s+e+s+s+s+s+s+D+D+D+D+K+>$>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.K#,$. . . . . . . . . . . . . . . . . . . . . . . . . . . . X V+`#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.'$. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " #+}+}+[@}+[@}+[@[@[@[@[@[@d+[@d+[@d+d+d+d+d+r+d+r+r+r+r+r+r+&@r+&@&@&@w+&@w+&@w+w+w+-@w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+/@C+/@C+/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@*@e+e+e+e+e+s+s+s+D+s+D+D+D+K+)$>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.!$k.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . M@~$>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.Q#. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " }+}+}+}+}+[@}+[@}+[@[@[@[@[@[@[@d+d+d+d+d+d+r+d+r+d+r+r+r+&@r+&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@>@-@>@-@>@-@>@>@>@C+>@C+C+C+C+C+/@/@/@/@/@Q+Q+Q+Q+Q+X+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+1@|+1@1@1@*@1@*@*@*@e+*@e+s+e+s+e+s+D+s+D+D+D+K+{$+@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.~$Z@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . _@W#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.]$[+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " #+}+}+}+}+}+}+}+[@[@[@[@[@[@d+[@d+[@d+d+d+d+d+d+r+r+r+r+r+&@r+&@r+&@&@&@w+&@w+w+w+w+w+w+w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @}@ @|+ @|+ @|+1@|+1@1@1@*@1@*@*@*@e+*@e+e+e+s+s+s+s+D+D+D+D+D+K+^$>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.;.B@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (+q.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.4.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " }+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@d+[@d+d+d+r+d+r+d+r+r+r+r+r+r+&@&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+|+1@1@1@1@*@*@*@*@*@e+e+e+s+e+s+s+s+D+s+D+D+D+K+/$>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>._.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ($0+>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.0.m@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " }+#+}+}+}+}+}+}+[@}+[@}+[@d+[@d+[@d+d+d+d+d+d+r+d+r+d+r+r+r+&@r+&@r+&@&@&@&@&@w+w+w+w+w+w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@C+/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@e+*@e+*@e+e+e+s+s+s+s+s+D+D+D+D+_$:$>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.{.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . <$T+>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.2#. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " }+#+}+}+}+[@}+[@}+[@[@[@[@[@[@d+[@d+[@d+[@d+r+d+r+d+r+r+r+r+r+r+&@r+&@&@&@w+&@w+&@w+w+w+-@w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+C+C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@1@1@*@*@*@*@e+e+e+e+e+s+s+s+D+s+D+D+D+K+[$>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.o@^@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . )@k+>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.<@t#. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " #+}+}+}+}+}+}+[@}+[@}+[@}+[@[@[@d+[@d+d+d+d+d+d+r+d+r+d+r+r+r+&@r+&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@-@>@>@>@C+>@C+C+C+/@C+/@/@/@/@/@Q+Q+Q+Q+Q+X+X+X+X+X+}@}@}@}@}@}@ @ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+*@e+s+e+s+e+s+D+s+D+D+D+K+y#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.d#. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Q@@@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.}$. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " #+}+#+}+#+}+}+}+[@}+[@[@[@[@[@[@d+[@d+[@d+d+d+d+d+d+r+r+r+r+r+&@r+&@r+&@&@&@w+&@w+&@w+w+w+w+w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+X+Q+X+Q+X+X+X+}@X+}@X+}@ @}@ @}@ @|+ @|+ @|+1@|+1@1@1@*@1@*@*@*@e+e+e+e+e+s+s+s+s+D+D+D+D+D+|$1$>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.q.W . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2$>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.0+F@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " #+}+#+}+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@d+[@d+d+d+r+d+r+d+r+r+r+r+r+r+r+&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+/@/@/@/@/@Q+Q+Q+Q+Q+Q+Q+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+|+1@1@1@1@*@*@*@*@*@e+e+e+s+e+s+e+s+D+s+D+D+D+K+3$>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.b.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . N.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.4$. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " J+}+#+}+#+}+}+}+}+}+}+[@}+[@[@[@d+[@d+[@d+d+d+d+d+d+d+d+r+d+r+r+r+&@r+&@r+&@&@&@&@&@w+w+w+w+w+w+-@-@-@-@-@>@-@>@-@>@C+>@C+>@C+>@C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+*@e+e+e+s+s+s+s+s+D+D+D+D+!#q.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.5$. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . _@K#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.8@6@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " J+#+}+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@[@[@d+[@d+[@d+r+d+r+d+r+r+r+r+r+r+&@r+&@&@&@w+&@w+&@w+w+w+-@w+-@-@-@-@-@>@-@>@>@>@>@>@>@C+C+C+C+C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+|+|+1@1@1@1@1@*@*@*@*@e+e+e+e+e+s+s+s+D+s+D+K+D+K+6$>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.q.Z@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . V 9.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.7$. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " [@#+}+#+}+}+}+}+}+}+}+}+[@}+[@}+[@[@[@d+[@d+d+d+d+d+d+r+d+r+d+r+r+r+&@r+&@&@&@&@&@&@w+w+w+w+w+w+w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@/@/@/@/@Q+Q+Q+Q+Q+X+X+X+X+X+}@}@}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@e+*@e+*@e+s+e+s+s+s+D+s+D+D+D+K+8$>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.!$. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A+>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.9$. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " #+#+#+#+}+#+}+#+}+}+}+[@}+[@[@[@[@[@[@d+[@d+[@d+d+d+d+d+r+r+r+r+r+r+&@r+&@r+&@r+&@w+&@w+&@w+w+w+w+w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+Q+X+}@X+}@X+}@ @}@ @}@ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+e+e+e+e+s+s+s+s+D+s+D+D+D+_$0$>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.i#. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.a$>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.q.t#. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " #+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@d+d+d+d+d+r+d+r+d+r+d+r+r+r+r+r+&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+C+/@/@/@/@/@Q+Q+Q+Q+Q+Q+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+1@1@1@1@1@*@*@*@*@*@e+*@e+s+e+s+e+s+D+s+D+D+D+K+b$>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.y@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . c$>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.4.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " #+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@[@[@d+[@d+[@d+[@d+d+d+d+d+d+r+r+r+r+r+&@r+&@r+&@&@&@w+&@w+w+w+w+w+w+-@-@-@-@-@>@-@>@-@>@>@>@C+>@C+>@C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+*@e+e+e+s+s+s+s+s+D+D+D+D+!#@@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.d$. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @$>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.D.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " #+#+}+#+}+}+}+}+}+}+[@}+[@}+[@}+[@[@[@[@[@[@d+[@d+[@d+r+d+r+d+r+r+r+r+r+r+&@&@&@&@&@w+&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+|+1@1@1@1@*@*@*@*@*@e+e+e+e+e+s+s+s+D+s+D+K+D+K+e$>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.T+8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . c+>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.`#q+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " }+#+}+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@[@[@d+[@d+d+d+d+d+d+r+d+r+d+r+&@r+&@r+&@&@&@&@&@&@&@w+w+w+w+w+w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@/@/@/@/@Q+Q+Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@e+*@e+*@e+s+e+s+s+s+D+s+D+D+D+D+f$>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.g$. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . b.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.B+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " #+#+#+#+#+#+}+#+}+#+}+[@}+[@}+[@[@[@[@[@[@d+[@d+[@d+d+d+d+d+r+r+r+r+r+r+r+r+&@r+&@&@&@w+&@w+&@w+w+w+-@w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+/@C+/@C+/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@X+}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+e+e+e+e+e+s+s+s+D+s+D+D+D+|$r@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.9#. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . h$>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.N.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " #+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@d+d+d+d+d+d+d+r+d+r+d+r+r+r+&@r+&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+>@C+C+C+C+C+/@/@/@/@/@Q+Q+Q+Q+Q+X+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+1@1@1@1@1@*@1@*@*@*@e+*@e+s+e+s+e+s+D+s+D+D+D+K+i$>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.n+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . !@-.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.<@q+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " J+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@[@[@[@[@[@[@d+[@d+[@d+d+d+d+d+d+r+r+r+r+r+&@r+&@r+&@&@&@w+&@w+w+w+w+w+w+-@-@-@-@-@-@-@>@-@>@>@>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+ @|+1@|+1@1@1@*@1@*@*@*@e+*@e+e+e+s+s+s+s+s+D+D+D+D+j$k$>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.}#. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.Q@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " J+#+}+#+}+#+}+}+}+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@d+[@d+d+d+r+d+r+d+r+r+r+r+r+r+&@&@&@&@&@w+&@w+&@w+&@w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+|+1@1@1@1@*@*@*@*@*@e+e+e+s+e+s+s+s+D+s+D+K+D+K+l$>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.m$. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . U >.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.n$. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " #+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@d+[@d+[@d+d+d+d+d+d+r+d+r+d+r+&@r+&@r+&@r+&@&@&@&@&@w+w+w+w+w+w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@e+*@e+*@e+s+e+s+s+s+s+s+D+D+D+D+o$@@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.W+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.<@q+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " #+J+#+#+#+#+#+#+}+#+}+}+}+[@}+[@}+[@[@[@[@[@[@d+[@d+[@d+d+d+d+d+r+d+r+r+r+r+r+r+&@r+&@&@&@w+&@w+&@w+w+w+-@w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+C+C+/@C+/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@*@e+e+e+e+e+s+s+s+D+s+D+D+D+K+p$>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.<.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P+>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.'#. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " #+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@[@d+d+d+d+d+d+r+d+r+d+r+r+r+&@r+&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@>@-@>@-@>@-@>@>@>@C+>@C+C+C+/@C+/@/@/@/@/@Q+Q+Q+Q+Q+X+X+X+X+X+X+}@}@}@}@}@ @ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+*@e+s+e+s+e+s+D+s+D+D+D+K+q$>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.9.[+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p+>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.&.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+}+[@[@[@[@[@[@d+[@d+[@d+d+d+d+d+d+r+r+r+r+r+&@r+&@r+&@&@&@w+&@w+w+w+w+w+w+w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+X+Q+X+Q+X+X+X+}@X+}@X+}@ @}@ @}@ @|+ @|+ @|+1@|+1@1@1@*@1@*@*@*@e+*@e+e+e+s+s+s+s+D+D+D+D+D+K+r$>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.-.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . !@l@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.q.T . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " #+#+#+#+}+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@d+[@d+d+d+r+d+r+d+r+r+r+r+r+r+&@&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+/@/@/@/@/@Q+Q+Q+Q+Q+Q+Q+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+|+1@1@1@1@*@*@*@*@*@e+e+e+s+e+s+s+s+D+s+D+D+D+K+s$>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.g$. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . t$>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.P+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " #+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@d+[@d+[@d+d+d+d+d+d+r+d+r+d+r+r+r+&@r+&@r+&@&@&@&@&@w+w+w+w+w+w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+*@e+e+e+s+s+s+s+s+D+D+D+D+K+%$>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.m+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . j@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.p.8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " #+J+#+J+#+#+#+#+#+#+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@d+[@d+[@d+[@d+r+d+r+d+r+r+r+r+r+r+&@r+&@&@&@w+&@w+&@w+w+w+-@w+-@-@-@-@-@-@>@>@>@>@>@>@>@C+C+C+C+C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+|+|+1@1@1@1@1@*@*@*@*@e+e+e+e+e+s+s+s+D+s+D+K+D+K+u$>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.v$. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . w$>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.&#. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@}+[@[@[@d+[@d+d+d+d+d+d+r+d+r+d+r+r+r+&@r+&@&@&@&@&@&@w+w+w+w+w+-@w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@/@/@/@/@Q+Q+Q+Q+Q+X+X+X+X+X+}@}@}@}@}@}@}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+*@e+s+e+s+e+s+D+s+D+D+D+K+x$y$>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.P+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . F@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.z$. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " J+#+J+#+#+#+#+#+#+}+#+}+#+}+#+}+}+}+[@}+[@[@[@[@[@[@d+[@d+[@d+d+d+d+d+r+r+r+r+r+r+&@r+&@r+&@&@&@w+&@w+&@w+w+w+w+w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+X+Q+X+Q+X+Q+X+}@X+}@X+}@ @}@ @}@ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+e+e+e+e+s+s+s+s+D+s+D+D+D+K+U#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.o+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 k+>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.s@_@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " #+#+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@d+[@d+d+d+r+d+r+d+r+r+r+r+r+r+r+&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+/@/@/@/@/@/@Q+Q+Q+Q+Q+Q+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+|+1@1@1@1@*@*@*@*@*@e+e+e+s+e+s+e+s+D+s+D+D+D+K+A$B$>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.C$. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.D$. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " #+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@[@[@d+[@d+[@d+d+d+d+d+d+d+d+r+r+r+r+r+&@r+&@r+&@&@&@w+&@w+w+w+w+w+w+-@-@-@-@-@>@-@>@-@>@C+>@C+>@C+>@C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@|+1@*@1@*@*@*@e+*@e+e+e+s+s+s+s+s+D+D+D+D+K+E$>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.F$. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ~.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.G$. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " J+J+#+J+#+J+#+#+#+#+#+}+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@[@[@d+[@d+[@d+r+d+r+d+r+r+r+r+r+r+&@r+&@&@&@w+&@w+&@w+w+w+-@w+-@-@-@-@-@>@-@>@>@>@>@>@>@C+C+C+C+C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @ @ @|+|+|+|+|+1@1@1@1@*@*@*@*@*@e+e+e+e+e+s+s+s+D+s+D+K+D+K+H$I$>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.k+[+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.q.d$. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+}+}+[@}+[@}+[@[@[@d+[@d+d+d+d+d+d+r+d+r+d+r+r+r+&@r+&@&@&@&@&@&@w+w+w+w+w+w+w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@/@/@/@/@Q+Q+Q+Q+Q+X+X+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@e+*@e+*@e+s+e+s+s+s+D+s+D+D+D+K+K+E$>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.]$. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . v$>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.J$. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " J+#+J+#+J+#+#+#+#+#+#+#+#+}+#+}+#+}+[@}+[@}+[@[@[@[@[@[@d+[@d+[@d+d+d+d+d+r+r+r+r+r+r+&@r+&@r+&@&@&@w+&@w+&@w+w+w+w+w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@X+}@ @}@ @}@ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+e+e+e+e+e+s+s+s+D+s+D+D+D+K+A$K$>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.L$. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4$>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.h@f@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " J+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@d+d+d+d+d+r+d+r+d+r+d+r+r+r+&@r+&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+C+/@/@/@/@/@Q+Q+Q+Q+Q+Q+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+1@1@1@1@1@*@1@*@*@*@e+*@e+s+e+s+e+s+D+s+D+D+D+K+K+8#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.M$. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . k.y@N$/+N@K#^+O$P$b+Q$8 . . . . . N$>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.Q@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " #+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@[@[@d+[@d+[@d+[@d+d+d+d+d+d+r+r+r+r+r+&@r+&@r+&@&@&@w+&@w+w+w+w+w+w+-@-@-@-@-@>@-@>@-@>@>@>@C+>@C+>@C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+ @|+1@|+1@1@1@*@1@*@*@*@e+*@e+e+e+s+s+s+s+s+D+D+D+D+K+|$R$>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.C$. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . D c+U+@@>.>.>.>.>.>.>.>.>.>.;.9#<$8 . . v$>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.@$. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " J+J+J+J+#+J+#+J+#+#+#+}+#+}+}+}+}+}+}+[@}+[@}+[@}+[@[@[@[@[@[@d+[@d+[@d+r+d+r+d+r+r+r+r+r+r+&@&@&@&@&@w+&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+|+1@1@1@1@*@*@*@*@*@e+e+e+e+e+s+s+s+D+s+D+K+D+K+D+S$>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.2.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ,$N@>.>.>.>.>.>.q.x#($V T$U$m+@@>.>.p.m.8 ].>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.V$. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " #+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@d+[@d+[@d+d+d+d+d+d+r+d+r+d+r+&@r+&@r+&@&@&@&@&@&@&@w+w+w+w+w+w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@/@/@/@/@Q+Q+Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@e+*@e+*@e+s+e+s+s+s+s+s+D+D+D+D+K+K+W$>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.B@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . D V+k+>.>.>.>.>.>.C#c+. . . . . . .'@>.>.>.N@7.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.'$. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+[@}+[@}+[@[@[@[@[@[@d+[@d+[@d+d+d+d+d+r+r+r+r+r+r+r+r+&@r+&@&@&@w+&@w+&@w+w+w+-@w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+/@C+/@C+/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@*@e+e+e+e+e+s+s+s+D+s+D+D+D+K+D+X$@@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.<.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . [+6#>.>.>.>.>.>.>.'.` . . . . . . . . T -.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.`#A.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@d+d+d+d+d+d+d+r+d+r+d+r+r+r+&@r+&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+>@C+C+C+C+C+/@/@/@/@/@Q+Q+Q+Q+Q+X+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+1@|+1@1@1@*@1@*@*@*@e+*@e+s+e+s+e+s+D+s+D+D+D+K+K+K+Y$>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.B@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 `+>.>.>.>.>.>.>.>.... . . . . . . . . . ;$q.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.$@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@[@[@[@[@[@[@d+[@d+[@d+d+d+d+d+d+r+r+r+r+r+&@r+&@r+&@&@&@w+&@w+w+w+w+w+w+-@-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @}@ @|+ @|+ @|+1@|+1@1@1@*@1@*@*@*@e+*@e+e+e+s+s+s+s+D+D+D+D+D+K+K+Z$b@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.:+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.>.>.>.>.>.>.>.>.o.. . . . . . . . . . . . N.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.{@[.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " J+#+J+J+J+J+#+J+#+#+#+}+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@d+[@d+d+d+r+d+r+d+r+r+r+r+r+r+&@&@&@&@&@w+&@w+&@w+&@w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+|+1@1@1@1@*@*@*@*@*@e+e+e+s+e+s+s+s+D+s+D+D+D+K+D+K+3$>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.C$. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . `$q.>.>.>.>.>.>.>.>.3.. . . . . . . . . . . . l.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.y@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@J+J+#+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@d+[@d+[@d+d+d+d+d+d+r+d+r+d+r+&@r+&@r+&@r+&@&@&@&@&@w+w+w+w+w+w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@e+*@e+*@e+e+e+s+s+s+s+s+D+D+D+D+K+K+ %.%>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.+%. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . u@{@>.>.>.>.>.>.>.>.<@I+. . . . . . . . . . . . [+;.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.^+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+}+}+[@}+[@}+[@[@[@[@[@[@d+[@d+[@d+d+d+d+d+r+d+r+r+r+r+r+r+&@r+&@&@&@w+&@w+&@w+w+w+-@w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+C+C+/@C+/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@1@1@*@*@*@*@e+e+e+e+e+s+s+s+D+s+D+D+D+K+D+K+@%>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.2#. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . N$>.>.>.>.>.>.>.>.>.9$. . . . . . . . . . . . . . U+>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.M@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@[@d+d+d+d+d+d+r+d+r+d+r+r+r+&@r+&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@>@-@>@-@>@-@>@>@>@C+>@C+C+C+/@C+/@/@/@/@/@Q+Q+Q+Q+Q+X+X+X+X+X+X+}@}@}@}@}@ @ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+*@e+s+e+s+e+s+D+s+D+D+D+K+K+K+K+W$>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.o.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . q@<@>.>.>.>.>.>.>.>.>.n$. . . . . . . . . . . . . . 6.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.9#. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+#+}+}+}+[@}+[@[@[@[@[@[@d+[@d+[@d+d+d+d+d+d+r+r+r+r+r+&@r+&@r+&@&@&@w+&@w+w+w+w+w+w+w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+X+Q+X+Q+X+X+X+}@X+}@X+}@ @}@ @}@ @|+ @|+ @|+1@|+1@1@1@*@1@*@*@*@e+e+e+e+e+s+s+s+s+D+D+D+D+D+K+D+K+#%0+>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.h@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P$>.>.>.>.>.>.>.>.>.>.{.. . . . . . . . . . . . . . ].>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.o@W . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " J+J+#+J+#+J+#+#+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@d+[@d+d+d+r+d+r+d+r+r+r+r+r+r+&@&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+/@/@/@/@/@Q+Q+Q+Q+Q+Q+Q+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+|+1@1@1@1@*@*@*@*@*@e+e+e+s+e+s+e+s+D+s+D+D+D+K+D+K+K+$%>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.%%. . . . . . . . . . . . . . . . . . . . . . . . . . . . . I+,.>.>.>.>.>.>.>.>.>.>.z+. . . . . . . . . . . . . . m+>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.].. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@[@[@d+[@d+[@d+d+d+d+d+d+r+d+r+d+r+r+r+&@r+&@r+&@&@&@&@&@w+w+w+w+w+w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+*@e+e+e+s+s+s+s+s+D+D+D+D+K+K+K+&%.%>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.G#. . . . . . . . . . . . . . . . . . . . . . . . . . . . . h$>.>.>.>.>.>.>.>.>.>.>.h@D . . . . . . . . . . . . . 5@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.0+$#. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@d+[@d+[@d+[@d+r+d+r+d+r+r+r+r+r+r+&@r+&@&@&@w+&@w+&@w+w+w+-@w+-@-@-@-@-@-@>@>@>@>@>@>@>@C+C+C+C+C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+|+|+1@1@1@1@1@*@*@*@*@e+e+e+e+e+s+s+s+D+s+D+K+D+K+D+K+R+8#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.*.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . `+>.>.>.>.>.>.>.>.>.>.>.>.^#. . . . . . . . . . . . F@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.n.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+}+}+[@}+[@}+[@[@[@d+[@d+d+d+d+d+d+r+d+r+d+r+r+r+&@r+&@&@&@&@&@&@w+w+w+w+w+-@w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@/@/@/@/@Q+Q+Q+Q+Q+X+X+X+X+X+}@}@}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@e+*@e+*@e+s+e+s+e+s+D+s+D+D+D+K+K+K+K+K+^$>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.V . . . . . . . . . . . . . . . . . . . . . . . . . . . D '.>.>.>.>.>.>.>.>.>.>.>.>.N$. . . . . . . . . . . . u+>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.s@*%. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+#+#+}+#+}+#+}+}+}+[@}+[@[@[@[@[@[@d+[@d+[@d+d+d+d+d+r+r+r+r+r+r+&@r+&@r+&@&@&@w+&@w+&@w+w+w+w+w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+X+Q+X+Q+X+Q+X+}@X+}@X+}@ @}@ @}@ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+e+e+e+e+s+s+s+s+D+s+D+D+D+K+D+K+R+=%;#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.9#. . . . . . . . . . . . . . . . . . . . . . . . . . . ^#>.>.>.>.>.>.>.>.>.>.>.>.>.T+T . . . . . . . . . . <.{+>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.j@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@J+J+J+#+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@d+[@d+d+d+r+d+r+d+r+r+r+r+r+r+r+&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+/@/@/@/@/@/@Q+Q+Q+Q+Q+Q+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+1@1@1@1@1@*@*@*@*@*@e+*@e+s+e+s+e+s+D+s+D+D+D+K+D+K+K+K+-%>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.o@^@. . . . . . . . . . . . . . . . . . . . . . . . . . ($>.>.>.>.>.>.>.>.>.>.>.>.>.>.7.I+. . . . . . . . [. $>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.;%_@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@[@[@d+[@d+[@d+[@d+d+d+d+d+d+r+r+r+r+r+&@r+&@r+&@&@&@w+&@w+w+w+w+w+w+-@-@-@-@-@>@-@>@-@>@C+>@C+>@C+>@C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@|+1@*@1@*@*@*@e+*@e+e+e+s+s+s+s+s+D+D+D+D+K+K+K+R+|$6$>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.N.. . . . . . . . . . . . . . . . . . . . . . . . . . J$>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.x#q+. . . . . . Q E#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.M.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+}+}+}+}+}+}+[@}+[@}+[@}+[@[@[@[@[@[@d+[@d+[@d+r+d+r+d+r+r+r+r+r+r+&@r+&@&@&@w+&@w+&@w+w+w+-@w+-@-@-@-@-@>@-@>@>@>@>@>@>@C+C+C+C+C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @ @ @|+|+|+|+|+1@1@1@1@*@*@*@*@*@e+e+e+e+e+s+s+s+D+s+D+K+D+K+D+K+R+K+-$>%>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.,%. . . . . . . . . . . . . . . . . . . . . . . . . 6.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.'@D$v#. . .#+%).>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.{@I+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@[@[@d+[@d+d+d+d+d+d+r+d+r+d+r+&@r+&@r+&@&@&@&@&@&@w+w+w+w+w+w+w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@/@/@/@/@Q+Q+Q+Q+Q+X+X+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@e+*@e+*@e+s+e+s+s+s+D+s+D+D+D+D+K+K+K+K+K+'%>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.{+W . . . . . . . . . . . . . . . . . . . . . . . . m+>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.k+5@~$k+>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.P@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@J+0@J+J+J+J+J+J+#+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+[@}+[@}+[@[@[@[@[@[@d+[@d+[@d+d+d+d+d+r+r+r+r+r+r+&@r+&@r+&@&@&@w+&@w+&@w+w+w+w+w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@X+}@ @}@ @}@ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+e+e+e+e+e+s+s+s+D+s+D+D+D+K+D+K+R+K++#>#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.p.$#. . . . . . . . . . . . . . . . . . . . . . . )%>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.'.v#. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " J+J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@d+d+d+d+d+d+d+r+d+r+d+r+r+r+&@r+&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+C+/@/@/@/@/@Q+Q+Q+Q+Q+Q+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+1@1@1@1@1@*@1@*@*@*@e+*@e+s+e+s+e+s+D+s+D+D+D+K+K+K+K+K+R+!%z@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.p.:+. . . . . . . . . . . . . . . . . . . . . . U+>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.G+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@[@[@[@[@[@[@d+[@d+[@d+d+d+d+d+d+r+r+r+r+r+&@r+&@r+&@&@&@w+&@w+w+w+w+w+w+-@-@-@-@-@>@-@>@-@>@>@>@C+>@C+>@C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+ @|+1@|+1@1@1@*@1@*@*@*@e+*@e+e+e+s+s+s+s+s+D+D+D+D+K+K+K+R+K+R+~%>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.s@^.^@. . . . . . . . . . . . . . . . . . . . M#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.;.6@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " J+J+J+J+0@J+J+J+J+J+J+#+J+#+J+#+}+#+}+#+}+}+}+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@d+[@d+[@d+r+d+r+d+r+r+r+r+r+r+&@&@&@&@&@w+&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+|+1@1@1@1@*@*@*@*@*@e+e+e+e+e+s+s+s+D+s+D+K+D+K+D+K+K+K+R+R+R@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.q.&.B+X . . . . . . . . . . . . . . . . . 9@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.P+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@d+[@d+[@d+d+d+d+d+d+r+d+r+d+r+&@r+&@r+&@r+&@&@&@&@&@w+w+w+w+w+w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@/@/@/@/@Q+Q+Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@e+*@e+*@e+s+e+s+s+s+s+s+D+D+D+D+K+K+K+R+K+R+{%]%>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.;.9@Q$. . . . . . . . . . . . . . . M.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.{+m@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " J+0@J+0@J+J+J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+}+}+[@}+[@}+[@[@[@[@[@[@d+[@d+[@d+d+d+d+d+r+d+r+r+r+r+r+r+&@r+&@&@&@w+&@w+&@w+w+w+-@w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+/@C+/@C+/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@*@e+e+e+e+e+s+s+s+D+s+D+D+D+K+D+K+R+K+R+R+^%o@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.q.z+D$u@. . . . . . . . . . . . c+>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>./%. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " v+J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@[@d+d+d+d+d+d+r+d+r+d+r+r+r+&@r+&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@>@-@>@-@>@>@>@>@>@C+>@C+C+C+C+C+/@/@/@/@/@Q+Q+Q+Q+Q+X+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+1@|+1@1@1@*@1@*@*@*@e+*@e+s+e+s+e+s+D+s+D+D+D+K+K+K+K+K+R+R+R+(%>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.<@E#m$Q . . . . . . . . . 1.<@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.s@A.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " v+J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+}+[@[@[@[@[@[@d+[@d+[@d+d+d+d+d+d+r+r+r+r+r+&@r+&@r+&@&@&@w+&@w+w+w+w+w+w+w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @}@ @|+ @|+ @|+1@|+1@1@1@*@1@*@*@*@e+*@e+e+e+s+s+s+s+D+D+D+D+D+K+K+K+R+K+R+R++#%#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.k+z+G+%%D . . . . . . o.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>._%. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@d+[@d+d+d+r+d+r+d+r+r+r+r+r+r+&@&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+|+1@1@1@1@*@*@*@*@*@e+e+e+s+e+s+s+s+D+s+D+D+D+K+D+K+K+K+R+R+R+!%:%>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.F+f#c$Q . . . I#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.<@$$. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@J+0@J+J+J+J+J+J+#+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@d+[@d+[@d+d+d+d+d+d+r+d+r+d+r+r+r+&@r+&@r+&@&@&@&@&@w+w+w+w+w+w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@e+*@e+*@e+e+e+s+s+s+s+s+D+D+D+D+K+K+K+R+K+R+R+R+<%q.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.<@x#/.I#`$`#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.W#. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@J+0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+}+}+[@}+[@}+[@[@[@[@[@[@d+[@d+[@d+[@d+r+d+r+d+r+r+r+r+r+r+&@r+&@&@&@w+&@w+&@w+w+w+-@w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+C+C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@1@1@*@*@*@*@e+e+e+e+e+s+s+s+D+s+D+D+D+K+D+K+R+K+R+R+R+L+g@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.q.V$. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@}+[@[@[@d+[@d+d+d+d+d+d+r+d+r+d+r+r+r+&@r+&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@>@-@>@-@>@-@>@>@>@C+>@C+C+C+/@C+/@/@/@/@/@Q+Q+Q+Q+Q+X+X+X+X+X+X+}@}@}@}@}@ @ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+*@e+s+e+s+e+s+D+s+D+D+D+K+K+K+K+K+R+R+R+R+[%]%>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.G$. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+#+}+}+}+[@}+[@[@[@[@[@[@d+[@d+[@d+d+d+d+d+d+r+r+r+r+r+&@r+&@r+&@&@&@w+&@w+&@w+w+w+w+w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+X+Q+X+Q+X+X+X+}@X+}@X+}@ @}@ @}@ @|+ @|+ @|+1@|+1@1@1@*@1@*@*@*@e+e+e+e+e+s+s+s+s+D+D+D+D+D+K+D+K+R+K+R+R+R+L+}%>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.c$. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@d+[@d+d+d+r+d+r+d+r+r+r+r+r+r+r+&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+/@/@/@/@/@Q+Q+Q+Q+Q+Q+Q+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+|+1@1@1@1@*@*@*@*@*@e+e+e+s+e+s+e+s+D+s+D+D+D+K+D+K+K+K+R+R+R+R+L+%#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.=.[.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " v+J+0@J+0@J+J+J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@[@[@d+[@d+[@d+d+d+d+d+d+d+d+r+d+r+r+r+&@r+&@r+&@&@&@&@&@w+w+w+w+w+w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+*@e+e+e+s+s+s+s+s+D+D+D+D+K+K+K+R+K+R+R+R+L+|%+@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.5$. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " J+0@J+0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@[@[@d+[@d+[@d+r+d+r+d+r+r+r+r+r+r+&@r+&@&@&@w+&@w+&@w+w+w+-@w+-@-@-@-@-@-@-@>@>@>@>@>@>@C+C+C+C+C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+|+|+1@1@1@1@1@*@*@*@*@e+e+e+e+e+s+s+s+D+s+D+K+D+K+D+K+R+K+R+R+R+L+L+1%>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.0.u@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+}+}+[@}+[@}+[@[@[@d+[@d+d+d+d+d+d+r+d+r+d+r+r+r+&@r+&@&@&@&@&@&@w+w+w+w+w+w+w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@/@/@/@/@Q+Q+Q+Q+Q+X+X+X+X+X+}@}@}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@e+*@e+*@e+s+e+s+s+s+D+s+D+D+D+K+K+K+K+K+K+R+R+R+L+2%]%>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.]@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+#+#+}+#+}+#+}+}+}+[@}+[@[@[@[@[@[@d+[@d+[@d+d+d+d+d+r+r+r+r+r+r+&@r+&@r+&@r+&@w+&@w+&@w+w+w+w+w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+X+Q+X+Q+X+Q+X+}@X+}@X+}@ @}@ @}@ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+e+e+e+e+s+s+s+s+D+s+D+D+D+K+D+K+R+K+R+R+R+L+R+3%>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.<@T . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@d+d+d+d+d+r+d+r+d+r+d+r+r+r+r+r+&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+C+/@/@/@/@/@Q+Q+Q+Q+Q+Q+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+1@1@1@1@1@*@*@*@*@*@e+*@e+s+e+s+e+s+D+s+D+D+D+K+K+K+K+K+R+R+R+R+L+4%5%>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.n$. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " v+0@J+0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@[@[@d+[@d+[@d+[@d+d+d+d+d+d+r+r+r+r+r+&@r+&@r+&@&@&@w+&@w+w+w+w+w+w+-@-@-@-@-@>@-@>@-@>@>@>@C+>@C+>@C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+*@e+e+e+s+s+s+s+s+D+D+D+D+K+K+K+R+K+R+R+R+L+R+6%>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.:.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@J+0@J+0@J+J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+}+#+}+}+}+}+}+}+[@}+[@}+[@}+[@[@[@[@[@[@d+[@d+[@d+r+d+r+d+r+r+r+r+r+r+&@&@&@&@&@w+&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @ @ @|+|+|+|+|+1@1@1@1@*@*@*@*@*@e+e+e+e+e+s+s+s+D+s+D+K+D+K+D+K+R+K+R+R+R+R+L+L+7%>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.K#X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@[@[@d+[@d+d+d+d+d+d+r+d+r+d+r+&@r+&@r+&@&@&@&@&@&@&@w+w+w+w+w+w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@/@/@/@/@Q+Q+Q+Q+Q+X+X+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@e+*@e+*@e+s+e+s+s+s+D+s+D+D+D+D+K+K+K+R+K+R+R+R+L+R+8%9.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.2$. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@0@0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+[@}+[@}+[@[@[@[@[@[@d+[@d+[@d+d+d+d+d+r+r+r+r+r+r+r+r+&@r+&@&@&@w+&@w+&@w+w+w+-@w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@X+}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+e+e+e+e+e+s+s+s+D+s+D+D+D+K+D+K+R+K+R+R+R+L+L+L+9%>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.8@<+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@J+0@J+0@J+J+J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@d+d+d+d+d+d+d+r+d+r+d+r+r+r+&@r+&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+>@C+C+C+C+C+/@/@/@/@/@Q+Q+Q+Q+Q+Q+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+1@1@1@1@1@*@1@*@*@*@e+*@e+s+e+s+e+s+D+s+D+D+D+K+K+K+K+K+R+R+R+R+L+L+0%+@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.6.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@0@0@0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@[@[@[@[@[@[@d+[@d+[@d+d+d+d+d+d+r+r+r+r+r+&@r+&@r+&@&@&@w+&@w+w+w+w+w+w+-@-@-@-@-@-@-@>@-@>@>@>@C+>@C+>@C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+ @|+1@|+1@1@1@*@1@*@*@*@e+*@e+e+e+s+s+s+s+s+D+D+D+D+K+K+K+R+K+R+L+R+L+R+L+a%>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.q. .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@0@J+0@J+0@J+J+J+J+J+J+J+J+J+J+J+#+J+#+J+#+}+#+}+#+}+}+}+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@d+[@d+d+d+r+d+r+d+r+r+r+r+r+r+&@&@&@&@&@w+&@w+&@w+&@w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+|+1@1@1@1@*@*@*@*@*@e+e+e+s+e+s+s+s+D+s+D+K+D+K+D+K+K+K+R+R+R+R+L+L+V@h#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.]$[+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " J+0@0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@d+[@d+[@d+d+d+d+d+d+r+d+r+d+r+&@r+&@r+&@r+&@&@&@&@&@w+w+w+w+w+w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@e+*@e+*@e+s+e+s+s+s+s+s+D+D+D+D+K+K+K+R+K+R+R+R+L+R+L+1%>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.P@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@J+0@0@0@0@J+0@J+0@J+J+J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+}+}+[@}+[@}+[@[@[@[@[@[@d+[@d+[@d+d+d+d+d+r+d+r+r+r+r+r+r+&@r+&@&@&@w+&@w+&@w+w+w+-@w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+C+C+/@C+/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@*@e+e+e+e+e+s+s+s+D+s+D+D+D+K+D+K+R+K+R+R+R+L+L+L+b%h#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.8@<.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@0@J+0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@[@d+d+d+d+d+d+r+d+r+d+r+r+r+&@r+&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@>@-@>@-@>@-@>@>@>@C+>@C+C+C+/@C+/@/@/@/@/@Q+Q+Q+Q+Q+X+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+1@|+1@1@1@*@1@*@*@*@e+*@e+s+e+s+e+s+D+s+D+D+D+K+K+K+K+K+R+R+R+R+L+L+L+c%>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.`+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@0@0@0@0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+}+[@[@[@[@[@[@d+[@d+[@d+d+d+d+d+d+r+r+r+r+r+&@r+&@r+&@&@&@w+&@w+w+w+w+w+w+w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+X+Q+X+Q+X+X+X+}@X+}@X+}@ @}@ @}@ @|+ @|+ @|+1@|+1@1@1@*@1@*@*@*@e+*@e+e+e+s+s+s+s+D+D+D+D+D+K+K+K+R+K+R+R+R+L+R+L+0#S#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.H@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@d+[@d+d+d+r+d+r+d+r+r+r+r+r+r+&@&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+/@/@/@/@/@Q+Q+Q+Q+Q+Q+Q+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+|+1@1@1@1@*@*@*@*@*@e+e+e+s+e+s+s+s+D+s+D+D+D+K+D+K+K+K+R+R+R+R+L+L+L+d%>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.a+Q . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " J+0@0@0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@d+[@d+[@d+d+d+d+d+d+r+d+r+d+r+r+r+&@r+&@r+&@&@&@&@&@w+w+w+w+w+w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@e+*@e+*@e+e+e+s+s+s+s+s+D+D+D+D+K+K+K+R+K+R+R+R+L+R+L+e%9.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>./%. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@0@J+0@J+0@0@J+0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@d+[@d+[@d+[@d+r+d+r+d+r+r+r+r+r+r+&@r+&@&@&@w+&@w+&@w+w+w+-@w+-@-@-@-@-@-@>@>@>@>@>@>@>@C+C+C+C+C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@1@1@*@*@*@*@e+e+e+e+e+s+s+s+D+s+D+D+D+K+D+K+R+K+R+R+R+L+L+L+L+R@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.k+` . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@0@0@0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@}+[@[@[@d+[@d+d+d+d+d+d+r+d+r+d+r+r+r+&@r+&@&@&@&@&@&@w+w+w+w+w+-@w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@/@/@/@/@Q+Q+Q+Q+Q+X+X+X+X+X+}@}@}@}@}@}@}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+*@e+s+e+s+e+s+D+s+D+D+D+K+K+K+K+K+R+R+R+R+L+R+L+f%>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.G$D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " v+0@0@0@0@0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+#+}+}+}+[@}+[@[@[@[@[@[@d+[@d+[@d+d+d+d+d+r+r+r+r+r+r+&@r+&@r+&@&@&@w+&@w+&@w+w+w+w+w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+X+Q+X+Q+X+Q+X+}@X+}@X+}@ @}@ @}@ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+e+e+e+e+s+s+s+s+D+D+D+D+D+K+D+K+R+K+R+R+R+L+R+L+L+Z#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.b+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " v+0@0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@d+[@d+d+d+r+d+r+d+r+r+r+r+r+r+r+&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+/@/@/@/@/@/@Q+Q+Q+Q+Q+Q+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+|+1@1@1@1@*@*@*@*@*@e+e+e+s+e+s+e+s+D+s+D+D+D+K+D+K+K+K+R+R+R+R+L+L+L+g%>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.l@t#. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " J+0@0@0@0@0@J+0@J+0@J+J+J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@[@[@d+[@d+[@d+d+d+d+d+d+d+d+r+d+r+r+r+&@r+&@r+&@&@&@w+&@w+w+w+w+w+w+-@-@-@-@-@>@-@>@-@>@C+>@C+>@C+>@C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@|+1@*@1@*@*@*@e+*@e+e+e+s+s+s+s+s+D+D+D+D+K+K+K+R+K+R+R+R+L+R+L+h%I$>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.m+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@0@J+0@J+0@J+0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+}+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@[@[@d+[@d+[@d+r+d+r+d+r+r+r+r+r+r+&@r+&@&@&@w+&@w+&@w+w+w+-@w+-@-@-@-@-@>@-@>@>@>@>@>@>@C+C+C+C+C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @ @ @|+|+|+|+|+1@1@1@1@1@*@*@*@*@e+e+e+e+e+s+s+s+D+s+D+K+D+K+D+K+R+K+R+R+R+L+L+L+L+i%>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.B+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@0@0@0@0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+}+}+[@}+[@}+[@[@[@d+[@d+d+d+d+d+d+r+d+r+d+r+r+r+&@r+&@&@&@&@&@&@w+w+w+w+w+w+w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@/@/@/@/@Q+Q+Q+Q+Q+X+X+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@e+*@e+*@e+s+e+s+s+s+D+s+D+D+D+K+K+K+K+K+K+R+R+R+L+R+L+j%+@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.0.S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@0@0@0@0@0@0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+#+#+}+#+}+#+}+[@}+[@}+[@[@[@[@[@[@d+[@d+[@d+d+d+d+d+r+r+r+r+r+r+&@r+&@r+&@&@&@w+&@w+&@w+w+w+w+w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@X+}@ @}@ @}@ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+e+e+e+e+s+s+s+s+D+s+D+D+D+K+D+K+R+K+R+R+R+L+R+L+L+k%>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.'$. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " v+0@0@0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@d+d+d+d+d+r+d+r+d+r+d+r+r+r+r+r+&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+C+/@/@/@/@/@Q+Q+Q+Q+Q+Q+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+1@1@1@1@1@*@*@*@*@*@e+*@e+s+e+s+e+s+D+s+D+D+D+K+K+K+K+K+R+R+R+R+L+L+L+l%>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.3@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . 0@0@0@0@0@0@J+0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@[@[@d+[@d+[@d+[@d+d+d+d+d+d+r+r+r+r+r+&@r+&@r+&@&@&@w+&@w+w+w+w+w+w+-@-@-@-@-@>@-@>@-@>@>@>@C+>@C+>@C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+ @|+1@|+1@1@1@*@1@*@*@*@e+*@e+e+e+s+s+s+s+s+D+D+D+D+K+K+K+R+K+R+R+R+L+R+L+x+m%>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.8._@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@0@0@0@0@J+0@J+0@J+J+J+J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+}+#+}+}+}+}+}+}+[@}+[@}+[@}+[@[@[@[@[@[@d+[@d+[@d+r+d+r+d+r+r+r+r+r+r+&@&@&@&@&@w+&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+|+1@1@1@1@*@*@*@*@*@e+e+e+e+e+s+s+s+D+s+D+K+D+K+D+K+R+K+R+R+R+R+L+L+L+n%>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.#.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " v+0@0@0@0@0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@d+[@d+[@d+d+d+d+d+d+r+d+r+d+r+&@r+&@r+&@&@&@&@&@&@&@w+w+w+w+w+w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@/@/@/@/@Q+Q+Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@e+*@e+*@e+s+e+s+s+s+D+s+D+D+D+D+K+K+K+R+K+R+R+R+L+R+L+o%p%>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.@@S@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " J+0@0@0@J+0@0@0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+[@}+[@}+[@[@[@[@[@[@d+[@d+[@d+d+d+d+d+r+r+r+r+r+r+r+r+&@r+&@&@&@w+&@w+&@w+w+w+-@w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+/@C+/@C+/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@*@e+e+e+e+e+s+s+s+D+s+D+D+D+K+D+K+R+K+R+R+R+L+L+L+L+T#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.l+I+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@0@0@0@0@0@J+0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@d+d+d+d+d+d+d+r+d+r+d+r+r+r+&@r+&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+>@C+C+C+C+C+/@/@/@/@/@Q+Q+Q+Q+Q+X+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+1@|+1@1@1@*@1@*@*@*@e+*@e+s+e+s+e+s+D+s+D+D+D+K+K+K+K+K+R+R+R+R+L+L+L+q%>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.+$. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " v+0@v+0@0@0@0@0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@[@[@[@[@[@[@d+[@d+[@d+d+d+d+d+d+r+r+r+r+r+&@r+&@r+&@&@&@w+&@w+w+w+w+w+w+-@-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @}@ @|+ @|+ @|+1@|+1@1@1@*@1@*@*@*@e+*@e+e+e+s+s+s+s+D+D+D+D+D+K+K+K+R+K+R+L+R+L+R+L+r%:%>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.9.%%. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@0@0@0@0@0@J+0@J+0@J+J+J+J+J+J+#+J+J+J+J+#+J+#+#+#+}+#+}+#+}+}+}+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@d+[@d+d+d+r+d+r+d+r+r+r+r+r+r+&@&@&@&@&@w+&@w+&@w+&@w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+|+1@1@1@1@*@*@*@*@*@e+e+e+s+e+s+s+s+D+s+D+D+D+K+D+K+K+K+R+R+R+R+L+L+L+s%>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.9$[+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " v+v+0@0@0@0@0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@d+[@d+[@d+d+d+d+d+d+r+d+r+d+r+&@r+&@r+&@r+&@&@&@&@&@w+w+w+w+w+w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@e+*@e+*@e+e+e+s+s+s+s+s+D+D+D+D+K+K+K+R+K+R+R+R+L+R+L+t%>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.O#. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@0@0@0@J+0@0@0@0@J+0@J+0@J+J+J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+}+}+[@}+[@}+[@[@[@[@[@[@d+[@d+[@d+d+d+d+d+r+d+r+r+r+r+r+r+&@r+&@&@&@w+&@w+&@w+w+w+-@w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+C+C+/@C+/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@1@1@*@*@*@*@e+e+e+e+e+s+s+s+D+s+D+D+D+K+D+K+R+K+R+R+R+L+L+L+4%X@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.T+d$. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@0@0@0@0@0@0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@[@d+d+d+d+d+d+r+d+r+d+r+r+r+&@r+&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@>@-@>@-@>@-@>@>@>@C+>@C+C+C+/@C+/@/@/@/@/@Q+Q+Q+Q+Q+X+X+X+X+X+X+}@}@}@}@}@ @ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+*@e+s+e+s+e+s+D+s+D+D+D+K+K+K+K+K+R+R+R+R+L+L+L+a%>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.z+D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@0@0@v+0@0@0@0@0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+}+[@[@[@[@[@[@d+[@d+[@d+d+d+d+d+d+r+r+r+r+r+&@r+&@r+&@&@&@w+&@w+w+w+w+w+w+w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+X+Q+X+Q+X+X+X+}@X+}@X+}@ @}@ @}@ @|+ @|+ @|+1@|+1@1@1@*@1@*@*@*@e+e+e+e+e+s+s+s+s+D+D+D+D+D+K+D+K+R+K+R+R+R+L+R+L+l#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.<#. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . 0@0@0@0@0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@d+[@d+d+d+r+d+r+d+r+r+r+r+r+r+&@&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+/@/@/@/@/@Q+Q+Q+Q+Q+Q+Q+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+|+1@1@1@1@*@*@*@*@*@e+e+e+s+e+s+e+s+D+s+D+D+D+K+D+K+K+K+R+R+R+R+L+L+4%u%>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.;.q@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@v+0@0@0@0@0@0@J+0@J+0@J+J+J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@d+[@d+[@d+d+d+d+d+d+r+d+r+d+r+r+r+&@r+&@r+&@&@&@&@&@w+w+w+w+w+w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+*@e+e+e+s+s+s+s+s+D+D+D+D+K+K+K+R+K+R+R+R+L+R+L+v%>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>./+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@0@0@0@0@J+0@J+0@J+0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@d+[@d+[@d+[@d+r+d+r+d+r+r+r+r+r+r+&@r+&@&@&@w+&@w+&@w+w+w+-@w+-@-@-@-@-@-@>@>@>@>@>@>@>@C+C+C+C+C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+|+|+1@1@1@1@1@*@*@*@*@e+e+e+e+e+s+s+s+D+s+D+K+D+K+D+K+R+K+R+R+R+L+L+L+w%>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.m$. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " v+0@v+0@0@0@0@0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@}+[@[@[@d+[@d+d+d+d+d+d+r+d+r+d+r+r+r+&@r+&@&@&@&@&@&@w+w+w+w+w+-@w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@/@/@/@/@Q+Q+Q+Q+Q+X+X+X+X+X+}@}@}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+*@e+s+e+s+e+s+D+s+D+D+D+K+K+K+K+K+K+R+R+R+L+R+n#;#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.C#R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@0@0@v+0@0@0@0@0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+#+#+}+#+}+#+}+}+}+[@}+[@[@[@[@[@[@d+[@d+[@d+d+d+d+d+r+r+r+r+r+r+&@r+&@r+&@&@&@w+&@w+&@w+w+w+w+w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+X+Q+X+Q+X+Q+X+}@X+}@X+}@ @}@ @}@ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+e+e+e+e+s+s+s+s+D+s+D+D+D+K+D+K+R+K+R+R+R+L+R+L+R@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.L$. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " v+0@0@0@0@0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@d+[@d+d+d+r+d+r+d+r+r+r+r+r+r+r+&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+/@/@/@/@/@/@Q+Q+Q+Q+Q+Q+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+1@1@1@1@1@*@*@*@*@*@e+*@e+s+e+s+e+s+D+s+D+D+D+K+D+K+K+K+R+R+R+R+L+L+}%>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.c+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " v+0@v+0@0@0@0@0@0@J+0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@[@[@d+[@d+[@d+d+d+d+d+d+d+d+r+r+r+r+r+&@r+&@r+&@&@&@w+&@w+w+w+w+w+w+-@-@-@-@-@>@-@>@-@>@C+>@C+>@C+>@C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@|+1@*@1@*@*@*@e+*@e+e+e+s+s+s+s+s+D+D+D+D+K+K+K+R+K+R+R+R+L+R+x%@@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.).Q . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@0@0@0@0@0@0@0@J+0@J+0@J+J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+}+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@[@[@d+[@d+[@d+r+d+r+d+r+r+r+r+r+r+&@r+&@&@&@w+&@w+&@w+w+w+-@w+-@-@-@-@-@>@-@>@>@>@>@>@>@C+C+C+C+C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @ @ @|+|+|+|+|+1@1@1@1@*@*@*@*@*@e+e+e+e+e+s+s+s+D+s+D+K+D+K+D+K+R+K+R+R+R+R+L+L+y%>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.n.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " v+0@v+0@0@0@0@0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@[@[@d+[@d+d+d+d+d+d+r+d+r+d+r+&@r+&@r+&@&@&@&@&@&@w+w+w+w+w+w+w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@/@/@/@/@Q+Q+Q+Q+Q+X+X+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@e+*@e+*@e+s+e+s+s+s+D+s+D+D+D+D+K+K+K+K+K+R+R+R+L+R+(%>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.9.:+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " v+0@0@0@0@0@0@0@0@0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+[@}+[@}+[@[@[@[@[@[@d+[@d+[@d+d+d+d+d+r+r+r+r+r+r+&@r+&@r+&@&@&@w+&@w+&@w+w+w+w+w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@X+}@ @}@ @}@ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+e+e+e+e+e+s+s+s+D+s+D+D+D+K+D+K+R+K+R+R+R+L+L+z%>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.9+'+e.A%B%C%D%>.>.>.b.D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@v+0@0@0@0@0@0@J+0@J+0@J+J+J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@d+d+d+d+d+r+d+r+d+r+d+r+r+r+&@r+&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+C+/@/@/@/@/@Q+Q+Q+Q+Q+Q+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+1@1@1@1@1@*@1@*@*@*@e+*@e+s+e+s+e+s+D+s+D+D+D+K+K+K+K+K+R+R+R+R+L+E%F%>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.P.G%2 H%2 x.2 2 I%J%>.>.'#. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@0@v+0@0@0@0@0@0@0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@[@[@[@[@d+[@d+[@d+d+d+d+d+d+r+r+r+r+r+&@r+&@r+&@&@&@w+&@w+w+w+w+w+w+-@-@-@-@-@>@-@>@-@>@>@>@C+>@C+>@C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+ @|+1@|+1@1@1@*@1@*@*@*@e+*@e+e+e+s+s+s+s+s+D+D+D+D+K+K+K+R+K+R+L+R+L+R+K%>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.L%-+2 x.2 2 2 2 2 2 x.2 M%8+h@R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@v+0@0@0@0@0@0@J+0@J+0@J+J+J+J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+}+#+}+}+}+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@d+[@d+[@d+r+d+r+d+r+r+r+r+r+r+&@&@&@&@&@w+&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+|+1@1@1@1@*@*@*@*@*@e+e+e+e+e+s+s+s+D+s+D+K+D+K+D+K+K+K+R+R+R+R+L+|#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.8+w.2 2 2 2 2 2 2 2 2 2 2 N%Y.O%}$. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@v+0@v+0@0@0@0@0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@d+[@d+[@d+d+d+d+d+d+r+d+r+d+r+&@r+&@r+&@&@&@&@&@&@&@w+w+w+w+w+w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@/@/@/@/@Q+Q+Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@e+*@e+*@e+s+e+s+s+s+s+s+D+D+D+D+K+K+K+R+K+R+R+R+L+P%>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.O.Q%2 R%2 2 2 2 2 2 2 2 2 2 2 x.2 S%` . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@0@0@0@0@0@J+0@0@0@0@J+0@J+0@J+J+J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+[@}+[@}+[@[@[@[@[@[@d+[@d+[@d+d+d+d+d+r+r+r+r+r+r+r+r+&@r+&@&@&@w+&@w+&@w+w+w+-@w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+/@C+/@C+/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@*@e+e+e+e+e+s+s+s+D+s+D+D+D+K+D+K+R+K+R+R+R+L+r%>%>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.s.T%x.2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 U%. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@v+0@0@0@0@0@0@J+0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@[@d+d+d+d+d+d+r+d+r+d+r+r+r+&@r+&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@>@-@>@-@>@>@>@>@>@C+>@C+C+C+C+C+/@/@/@/@/@Q+Q+Q+Q+Q+X+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+1@|+1@1@1@*@1@*@*@*@e+*@e+s+e+s+e+s+D+s+D+D+D+K+K+K+K+K+R+R+R+R+L+A@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.V%W%x.2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 X%. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@0@0@v+0@v+0@0@0@0@0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+}+[@[@[@[@[@[@d+[@d+[@d+d+d+d+d+d+r+r+r+r+r+&@r+&@r+&@&@&@w+&@w+w+w+w+w+w+-@-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @}@ @|+ @|+ @|+1@|+1@1@1@*@1@*@*@*@e+*@e+e+e+s+s+s+s+D+D+D+D+D+K+K+K+R+K+R+R+R+L+Y%>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.Z%`%x.2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 &.&. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@v+0@0@0@0@0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@d+[@d+d+d+r+d+r+d+r+r+r+r+r+r+&@&@&@&@&@w+&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+|+1@1@1@1@*@*@*@*@*@e+e+e+s+e+s+s+s+D+s+D+D+D+K+D+K+K+K+R+R+R+R++&>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.H.x.2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 @&. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " v+v+0@v+0@0@0@0@0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@d+[@d+[@d+d+d+d+d+d+r+d+r+d+r+r+r+&@r+&@r+&@&@&@&@&@w+w+w+w+w+w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@e+*@e+*@e+e+e+s+s+s+s+s+D+D+D+D+K+K+K+R+K+R+R+R+#&@@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.$&2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 %&&&. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@0@0@0@0@0@0@J+0@J+0@0@J+0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+}+}+[@}+[@}+[@[@[@[@[@[@d+[@d+[@d+[@d+r+d+r+d+r+r+r+r+r+r+&@r+&@&@&@w+&@w+&@w+w+w+-@w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+C+C+/@C+/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@1@1@*@*@*@*@e+e+e+e+e+s+s+s+D+s+D+D+D+K+D+K+R+K+R+R+R+L+*&>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.s.=&2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -&. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@v+0@0@0@0@0@0@0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@}+[@[@[@d+[@d+d+d+d+d+d+r+d+r+d+r+r+r+&@r+&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@>@-@>@-@>@-@>@>@>@C+>@C+C+C+/@C+/@/@/@/@/@Q+Q+Q+Q+Q+X+X+X+X+X+X+}@}@}@}@}@ @ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+*@e+s+e+s+e+s+D+s+D+D+D+K+K+K+K+K+R+R+R+R+d%>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.;&x.2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 >&,&. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " v+0@0@0@0@v+0@0@0@0@0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+#+}+}+}+[@}+[@[@[@[@[@[@d+[@d+[@d+d+d+d+d+d+r+r+r+r+r+&@r+&@r+&@&@&@w+&@w+&@w+w+w+w+w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+X+Q+X+Q+X+X+X+}@X+}@X+}@ @}@ @}@ @|+ @|+ @|+1@|+1@1@1@*@1@*@*@*@e+e+e+e+e+s+s+s+s+D+D+D+D+D+K+D+K+R+K+R+R+R+}%>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.'&2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 )&. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@v+0@0@0@0@0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@d+[@d+d+d+r+d+r+d+r+r+r+r+r+r+&@&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+/@/@/@/@/@Q+Q+Q+Q+Q+Q+Q+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+|+1@1@1@1@*@*@*@*@*@e+e+e+s+e+s+e+s+D+s+D+D+D+K+D+K+K+K+R+R+R+!&>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.r.h.x.2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 N%~&. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@v+0@v+0@0@0@0@0@0@J+0@J+0@J+J+J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@[@[@d+[@d+[@d+d+d+d+d+d+d+d+r+d+r+r+r+&@r+&@r+&@&@&@&@&@w+w+w+w+w+w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+*@e+e+e+s+s+s+s+s+D+D+D+D+K+K+K+R+K+R+R++#h#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.{&2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 ]&. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . 0@0@0@0@0@0@J+0@J+0@J+0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@[@[@d+[@d+[@d+r+d+r+d+r+r+r+r+r+r+&@r+&@&@&@w+&@w+&@w+w+w+-@w+-@-@-@-@-@-@>@>@>@>@>@>@>@C+C+C+C+C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+|+|+1@1@1@1@1@*@*@*@*@e+e+e+e+e+s+s+s+D+s+D+K+D+K+D+K+R+K+R+R+R+>$>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.5+2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 ^&. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@v+0@v+0@0@0@0@0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+}+}+[@}+[@}+[@[@[@d+[@d+d+d+d+d+d+r+d+r+d+r+r+r+&@r+&@&@&@&@&@&@w+w+w+w+w+-@w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@/@/@/@/@Q+Q+Q+Q+Q+X+X+X+X+X+}@}@}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@e+*@e+*@e+s+e+s+e+s+D+s+D+D+D+K+K+K+K+K+K+R+R+/&>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.&+2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " v+0@0@0@0@0@0@0@0@0@0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+#+#+}+#+}+#+}+}+}+[@}+[@[@[@[@[@[@d+[@d+[@d+d+d+d+d+r+r+r+r+r+r+&@r+&@r+&@r+&@w+&@w+&@w+w+w+w+w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+X+Q+X+Q+X+Q+X+}@X+}@X+}@ @}@ @}@ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+e+e+e+e+s+s+s+s+D+s+D+D+D+K+D+K+R+K+R+R+)$>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.(&_&2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 :&. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . 0@v+0@0@0@0@0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@d+d+d+d+d+r+d+r+d+r+d+r+r+r+r+r+&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+/@/@/@/@/@/@Q+Q+Q+Q+Q+Q+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+1@1@1@1@1@*@*@*@*@*@e+*@e+s+e+s+e+s+D+s+D+D+D+K+D+K+K+K+R+R+<&>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.[&2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 =&. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@v+0@v+0@0@0@0@0@0@J+0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@[@[@d+[@d+[@d+[@d+d+d+d+d+d+r+r+r+r+r+&@r+&@r+&@&@&@w+&@w+w+w+w+w+w+-@-@-@-@-@>@-@>@-@>@>@>@C+>@C+>@C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+*@e+e+e+s+s+s+s+s+D+D+D+D+K+K+K+R+K+R+}&@@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.w.2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 |&. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " v+0@0@0@0@0@0@0@0@J+0@J+0@J+J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+}+}+}+}+}+}+[@}+[@}+[@}+[@[@[@[@[@[@d+[@d+[@d+r+d+r+d+r+r+r+r+r+r+&@&@&@&@&@w+&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @ @ @|+|+|+|+|+1@1@1@1@*@*@*@*@*@e+e+e+e+e+s+s+s+D+s+D+K+D+K+D+K+R+K+R+R+1&>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.2&3&4&>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>. +2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 &. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@v+0@v+0@0@0@0@0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@[@[@d+[@d+d+d+d+d+d+r+d+r+d+r+&@r+&@r+&@&@&@&@&@&@&@w+w+w+w+w+w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@/@/@/@/@Q+Q+Q+Q+Q+X+X+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@e+*@e+*@e+s+e+s+s+s+D+s+D+D+D+D+K+K+K+R+K+R+5&>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.4&6&7&8&9&>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.0&2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 a&. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " v+0@0@0@0@0@0@0@0@0@0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+[@}+[@}+[@[@[@[@[@[@d+[@d+[@d+d+d+d+d+r+r+r+r+r+r+r+r+&@r+&@&@&@w+&@w+&@w+w+w+-@w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@X+}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+e+e+e+e+e+s+s+s+D+s+D+D+D+K+D+K+R+K+R+*$>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.b&7&7&7&c&d&>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.;&2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 x.e&. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@0@v+0@0@0@0@0@0@J+0@J+0@J+J+J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@d+d+d+d+d+d+d+r+d+r+d+r+r+r+&@r+&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+C+/@/@/@/@/@Q+Q+Q+Q+Q+Q+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+1@1@1@1@1@*@1@*@*@*@e+*@e+s+e+s+e+s+D+s+D+D+D+K+K+K+K+K+R+f&>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.g&7&7&7&7&7&h&i&>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.f.x.2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 x.j&. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@0@0@v+0@0@0@0@0@0@0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@[@[@[@[@[@[@d+[@d+[@d+d+d+d+d+d+r+r+r+r+r+&@r+&@r+&@&@&@w+&@w+w+w+w+w+w+-@-@-@-@-@-@-@>@-@>@>@>@C+>@C+>@C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+ @|+1@|+1@1@1@*@1@*@*@*@e+*@e+e+e+s+s+s+s+s+D+D+D+D+K+K+K+R+K+-#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.k&l&7&7&7&7&7&7&7&m&9+>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.B%x.2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 n&. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . 0@v+0@0@0@0@0@0@J+0@J+0@J+J+J+J+J+J+J+J+J+J+J+#+J+#+J+#+}+#+}+#+}+}+}+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@d+[@d+d+d+r+d+r+d+r+r+r+r+r+r+&@&@&@&@&@w+&@w+&@w+&@w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+|+1@1@1@1@*@*@*@*@*@e+e+e+s+e+s+s+s+D+s+D+K+D+K+D+K+K+K+3#o@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.o&p&7&7&7&7&7&7&7&7&7&q&2&>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.r&2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 s&. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@v+0@v+0@0@0@0@0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@d+[@d+[@d+d+d+d+d+d+r+d+r+d+r+&@r+&@r+&@r+&@&@&@&@&@w+w+w+w+w+w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@/@/@/@/@Q+Q+Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@e+*@e+*@e+s+e+s+s+s+s+s+D+D+D+D+K+K+K+R+K+a#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.t&u&7&7&7&7&7&7&7&7&7&7&7&p&v&>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.t.2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 w&D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . 0@0@0@0@0@0@J+0@0@0@0@J+0@J+0@J+J+J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+}+}+[@}+[@}+[@[@[@[@[@[@d+[@d+[@d+d+d+d+d+r+d+r+r+r+r+r+r+&@r+&@&@&@w+&@w+&@w+w+w+-@w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+C+C+/@C+/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@*@e+e+e+e+e+s+s+s+D+s+D+D+D+K+D+K+R+K+j#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.9+x&7&7&7&7&7&7&7&7&7&7&7&7&7&7&y&z&>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.t&2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 A&. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@v+0@0@0@0@0@0@J+0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@[@d+d+d+d+d+d+r+d+r+d+r+r+r+&@r+&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@>@-@>@-@>@-@>@>@>@C+>@C+C+C+/@C+/@/@/@/@/@Q+Q+Q+Q+Q+X+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+1@|+1@1@1@*@1@*@*@*@e+*@e+s+e+s+e+s+D+s+D+D+D+K+K+K+K+K+d%>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.B&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&C&D&>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.w.2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 x.E&. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " v+0@0@v+0@v+0@0@0@0@0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+}+[@[@[@[@[@[@d+[@d+[@d+d+d+d+d+d+r+r+r+r+r+&@r+&@r+&@&@&@w+&@w+w+w+w+w+w+w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+X+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @}@ @|+ @|+ @|+1@|+1@1@1@*@1@*@*@*@e+*@e+e+e+s+s+s+s+D+D+D+D+D+K+K+K+R+F&>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.G&H&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&l&I&J&>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.K&N%2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 L&. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@0@v+0@0@0@0@0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@d+[@d+d+d+r+d+r+d+r+r+r+r+r+r+&@&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+|+1@1@1@1@*@*@*@*@*@e+e+e+s+e+s+s+s+D+s+D+D+D+K+D+K+K+M&>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.N&O&P&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&Q&R&>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.&+2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 =&S&. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@v+0@v+0@0@0@0@0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@d+[@d+[@d+d+d+d+d+d+r+d+r+d+r+r+r+&@r+&@r+&@&@&@&@&@w+w+w+w+w+w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@C+/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@e+*@e+*@e+e+e+s+s+s+s+s+D+D+D+D+K+K+K+T&>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.U&Q&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&V&W&>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.9+Z.2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 X&. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . 0@0@0@0@0@0@J+0@J+0@0@J+0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+}+}+[@}+[@}+[@[@[@[@[@[@d+[@d+[@d+[@d+r+d+r+d+r+r+r+r+r+r+&@r+&@&@&@w+&@w+&@w+w+w+-@w+-@-@-@-@-@-@>@>@>@>@>@>@>@C+C+C+C+C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@1@1@*@*@*@*@e+e+e+e+e+s+s+s+D+s+D+D+D+K+D+K+Y&@@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.Z&`&P&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7& *.*t&>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.*+x.2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 |&+*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@v+0@0@0@0@0@0@0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@}+[@[@[@d+[@d+d+d+d+d+d+r+d+r+d+r+r+r+&@r+&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@-@>@>@>@C+>@C+C+C+/@C+/@/@/@/@/@Q+Q+Q+Q+Q+X+X+X+X+X+}@}@}@}@}@}@ @ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+*@e+s+e+s+e+s+D+s+D+D+D+K+K+K+K+:#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.@*C&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&Q&#*4&>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.s.2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 x.$*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " v+0@0@0@0@v+0@0@0@0@0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+#+}+}+}+[@}+[@[@[@[@[@[@d+[@d+[@d+d+d+d+d+d+r+r+r+r+r+&@r+&@r+&@&@&@w+&@w+&@w+w+w+w+w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+X+Q+X+Q+X+Q+X+}@X+}@X+}@ @}@ @}@ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+e+e+e+e+s+s+s+s+D+D+D+D+D+K+D+K+%*>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.4&&*h&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&**=*4&>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.v.x.2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 x.-*;*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@v+0@0@0@0@0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@d+[@d+d+d+r+d+r+d+r+r+r+r+r+r+r+&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+/@/@/@/@/@/@Q+Q+Q+Q+Q+Q+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+|+1@1@1@1@*@*@*@*@*@e+e+e+s+e+s+e+s+D+s+D+D+D+K+D+K+>*>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.,*O&P&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&'*=*9+>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.O.2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 )*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " v+v+0@v+0@0@0@0@0@0@J+0@J+0@J+J+J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@[@[@d+[@d+[@d+d+d+d+d+d+d+d+r+d+r+r+r+&@r+&@r+&@&@&@&@&@w+w+w+w+w+w+-@-@-@-@-@>@-@>@-@>@C+>@C+>@C+>@C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+*@e+e+e+s+s+s+s+s+D+D+D+D+K+K+!*>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.d&~*7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&H&{*N&>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.]*x.2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 ^*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@0@0@0@0@0@J+0@J+0@J+0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+}+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@[@[@d+[@d+[@d+r+d+r+d+r+r+r+r+r+r+&@r+&@&@&@w+&@w+&@w+w+w+-@w+-@-@-@-@-@>@-@>@>@>@>@>@>@C+C+C+C+C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+|+|+1@1@1@1@1@*@*@*@*@e+e+e+e+e+s+s+s+D+s+D+K+D+K+D+/*>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.9+(*C&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&p&_*:*>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.8+Y.2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 <*[*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@v+0@v+0@0@0@0@0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+}+}+[@}+[@}+[@[@[@d+[@d+d+d+d+d+d+r+d+r+d+r+r+r+&@r+&@&@&@&@&@&@w+w+w+w+w+w+w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@/@/@/@/@Q+Q+Q+Q+Q+X+X+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@e+*@e+*@e+s+e+s+s+s+D+s+D+D+D+K+K+}*>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.U&|*7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&l&1*2*>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.r&2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 :&2 3*8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@0@0@0@0@0@0@0@0@0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+#+#+}+#+}+#+}+}+}+[@}+[@[@[@[@[@[@d+[@d+[@d+d+d+d+d+r+r+r+r+r+r+&@r+&@r+&@r+&@w+&@w+&@w+w+w+w+w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+Q+X+}@X+}@X+}@ @}@ @}@ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+e+e+e+e+s+s+s+s+D+s+D+D+D+K+4*>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.9+i&|*7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&8&=*,*>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.v.x.2 2 2 2 2 2 2 2 2 2 2 2 x.5*6*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " v+v+0@0@0@0@0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@d+d+d+d+d+r+d+r+d+r+d+r+r+r+r+r+&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+C+/@/@/@/@/@Q+Q+Q+Q+Q+Q+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+1@1@1@1@1@*@*@*@*@*@e+*@e+s+e+s+e+s+D+s+D+D+D+K+7*>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.8*8&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7& *1*U&4&>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.V%=+x.2 2 2 2 2 2 2 2 2 2 2 9*( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " v+0@v+0@0@0@0@0@0@J+0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@[@[@d+[@d+[@d+[@d+d+d+d+d+d+r+r+r+r+r+&@r+&@r+&@&@&@w+&@w+w+w+w+w+w+-@-@-@-@-@>@-@>@-@>@>@>@C+>@C+>@C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+ @|+1@|+1@1@1@*@1@*@*@*@e+*@e+e+e+s+s+s+s+s+D+D+D+D+s#o@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.D&0*a*7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&b*c*D&9+>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.d*Y.2 2 2 2 2 2 2 2 x.e*f*[+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " v+0@0@0@0@0@0@0@J+0@J+0@J+J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+}+#+}+}+}+}+}+}+[@}+[@}+[@}+[@[@[@[@[@[@d+[@d+[@d+r+d+r+d+r+r+r+r+r+r+&@&@&@&@&@w+&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+|+1@1@1@1@*@*@*@*@*@e+e+e+e+e+s+s+s+D+s+D+K+D+K+X@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.z&=*g*7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&h*y&U&4&>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.3+2 2 2 2 2 2 x.2 i*j*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " v+0@v+0@0@0@0@0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@d+[@d+[@d+d+d+d+d+d+r+d+r+d+r+&@r+&@r+&@&@&@&@&@&@&@w+w+w+w+w+w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@/@/@/@/@Q+Q+Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@e+*@e+*@e+s+e+s+s+s+D+s+D+D+D+D+k*>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.l*m* *7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&h&x&(*z&>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.$&2 2 2 x.2 n*o*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " v+0@0@0@0@0@J+0@0@0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+[@}+[@}+[@[@[@[@[@[@d+[@d+[@d+d+d+d+d+r+r+r+r+r+r+r+r+&@r+&@&@&@w+&@w+&@w+w+w+-@w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+/@C+/@C+/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@X+}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+e+e+e+e+e+s+s+s+D+s+D+D+D+p*>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.q*U&y&r*7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&P&u&s*U&z&>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.r&2 2 t*u*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " v+0@0@0@0@0@0@J+0@J+0@J+J+J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@d+d+d+d+d+d+d+r+d+r+d+r+r+r+&@r+&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+>@C+C+C+C+C+/@/@/@/@/@Q+Q+Q+Q+Q+X+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+1@|+1@1@1@*@1@*@*@*@e+*@e+s+e+s+e+s+D+s+D+D+D+[$>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.z&v*w* *7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7& *x*y*z*N&>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.A*B*C*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@0@v+0@0@0@0@0@0@0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@[@[@[@[@[@[@d+[@d+[@d+d+d+d+d+d+r+r+r+r+r+&@r+&@r+&@&@&@w+&@w+w+w+w+w+w+-@-@-@-@-@-@-@>@-@>@>@>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @}@ @|+ @|+ @|+1@|+1@1@1@*@1@*@*@*@e+*@e+e+e+s+s+s+s+s+D+D+D+]#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.z&(*D*Q&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&l&E*F*R&G*9+>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.a+o+8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " v+0@0@0@0@0@0@J+0@J+0@J+J+J+J+J+J+J+J+J+J+J+#+J+#+#+#+}+#+}+#+}+}+}+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@d+[@d+d+d+r+d+r+d+r+r+r+r+r+r+&@&@&@&@&@w+&@w+&@w+&@w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+|+1@1@1@1@*@*@*@*@*@e+e+e+s+e+s+s+s+D+s+D+K+i$>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.H*&*I*h&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&J*q&K*L*G&4&>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.0.G+f@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " v+0@v+0@0@0@0@0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@d+[@d+[@d+d+d+d+d+d+r+d+r+d+r+&@r+&@r+&@r+&@&@&@&@&@w+w+w+w+w+w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@e+*@e+*@e+e+e+s+s+s+s+s+D+D+M*>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.4&N*O*I*h*7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&l&P*x&m&Q*R*4&>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.8@S*Q . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@0@0@0@0@J+0@0@0@0@J+0@J+0@J+J+J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+}+}+[@}+[@}+[@[@[@[@[@[@d+[@d+[@d+d+d+d+d+r+d+r+r+r+r+r+r+&@r+&@&@&@w+&@w+&@w+w+w+-@w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+C+C+/@C+/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@1@1@*@*@*@*@e+e+e+e+e+s+s+s+D+s+D+S$>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.T*(*U*~*V*7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&**q&W*X*v&Y*,*>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.q.`+B@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " v+0@0@0@0@0@0@J+0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@[@d+d+d+d+d+d+r+d+r+d+r+r+r+&@r+&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@>@-@>@-@>@-@>@>@>@C+>@C+C+C+/@C+/@/@/@/@/@Q+Q+Q+Q+Q+X+X+X+X+X+X+}@}@}@}@}@ @ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+*@e+s+e+s+e+s+D+s+D+Z*>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.4&G*`*y*x&g*l&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&h&H&V&W*O*R& =R*2&>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.N@p+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@0@0@v+0@0@0@0@0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+}+[@[@[@[@[@[@d+[@d+[@d+d+d+d+d+d+r+r+r+r+r+&@r+&@r+&@&@&@w+&@w+w+w+w+w+w+w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+X+Q+X+Q+X+X+X+}@X+}@X+}@ @}@ @}@ @|+ @|+ @|+1@|+1@1@1@*@1@*@*@*@e+*@e+e+e+s+s+s+s+D+D+.=>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.9++=@=&*U*1*u&h*7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&P&Q&g*V&D*U*y*#*#=$=Y*%=z&>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.Z++%D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . 0@0@0@0@0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@d+[@d+d+d+r+d+r+d+r+r+r+r+r+r+&@&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+/@/@/@/@/@Q+Q+Q+Q+Q+Q+Q+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+|+1@1@1@1@*@*@*@*@*@e+e+e+s+e+s+e+s+D+s+&=>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.t&G*@*v*&*I&b&*=~*C&J*l&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&P&==**P*8&V&1*W*U*O*R&@=d&:*4&>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.t$<.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@v+0@0@0@0@0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@d+[@d+[@d+d+d+d+d+d+r+d+r+d+r+r+r+&@r+&@r+&@&@&@&@&@w+w+w+w+w+w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+*@e+e+e+s+s+s+s+s+D+b@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.4&Z&T*Y*z*-=`*`*;==*=*>=B&B&B&B&B&B&B&B&B&B&B&B&X*=*=*=*R&`*i&@*N*d&G*T*,=,*9+>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.{+o+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " J+0@0@0@0@J+0@J+0@0@0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@d+[@d+[@d+[@d+r+d+r+d+r+r+r+r+r+r+&@r+&@&@&@w+&@w+&@w+w+w+-@w+-@-@-@-@-@-@>@>@>@>@>@>@>@C+C+C+C+C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+|+|+1@1@1@1@1@*@*@*@*@e+e+e+e+e+s+s+s+D+s+I$>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.c@<.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@v+0@0@0@0@0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@}+[@[@[@d+[@d+d+d+d+d+d+r+d+r+d+r+r+r+&@r+&@&@&@&@&@&@w+w+w+w+w+-@w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@/@/@/@/@Q+Q+Q+Q+Q+X+X+X+X+X+}@}@}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+*@e+s+e+s+e+s+D+s+'=>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.q.J$[+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@0@0@v+0@0@0@0@0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+#+}+}+}+[@}+[@[@[@[@[@[@d+[@d+[@d+d+d+d+d+r+r+r+r+r+r+&@r+&@r+&@&@&@w+&@w+&@w+w+w+w+w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+X+Q+X+Q+X+Q+X+}@X+}@X+}@ @}@ @}@ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+e+e+e+e+s+s+s+s+D+)=>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.p@`$. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@0@0@0@0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@d+[@d+d+d+r+d+r+d+r+r+r+r+r+r+r+&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+/@/@/@/@/@/@Q+Q+Q+Q+Q+Q+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+|+1@1@1@1@*@*@*@*@*@e+*@e+s+e+s+e+s+D+!=>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.~=V . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " v+0@0@0@0@0@0@J+0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@[@[@d+[@d+[@d+d+d+d+d+d+d+d+r+r+r+r+r+&@r+&@r+&@&@&@w+&@w+w+w+w+w+w+-@-@-@-@-@>@-@>@-@>@C+>@C+>@C+>@C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@|+1@*@1@*@*@*@e+*@e+e+e+s+s+s+s+{=>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.=.$#. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " v+0@0@0@0@0@J+0@J+0@J+J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+}+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@[@[@d+[@d+[@d+r+d+r+d+r+r+r+r+r+r+&@r+&@&@&@w+&@w+&@w+w+w+-@w+-@-@-@-@-@>@-@>@>@>@>@>@>@C+C+C+C+C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @ @ @|+|+|+|+|+1@1@1@1@*@*@*@*@*@e+e+e+e+e+s+s+s+]=>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.l+<+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " v+0@0@0@0@0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+}+}+[@}+[@}+[@[@[@d+[@d+d+d+d+d+d+r+d+r+d+r+r+r+&@r+&@&@&@&@&@&@w+w+w+w+w+w+w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@/@/@/@/@Q+Q+Q+Q+Q+X+X+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@e+*@e+*@e+s+e+s+s+s+^=>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.]+S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@0@0@0@0@0@0@0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+[@}+[@}+[@[@[@[@[@[@d+[@d+[@d+d+d+d+d+r+r+r+r+r+r+&@r+&@r+&@&@&@w+&@w+&@w+w+w+w+w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@X+}@ @}@ @}@ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+e+e+e+e+e+s+s+/=>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.).q@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@0@0@0@0@J+0@J+0@J+J+J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@d+d+d+d+d+r+d+r+d+r+d+r+r+r+&@r+&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+C+/@/@/@/@/@Q+Q+Q+Q+Q+Q+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+1@1@1@1@1@*@1@*@*@*@e+*@e+s+e+s+e+u$>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.h@W . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@0@0@0@0@0@0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@[@[@d+[@d+[@d+[@d+d+d+d+d+d+r+r+r+r+r+&@r+&@r+&@&@&@w+&@w+w+w+w+w+w+-@-@-@-@-@>@-@>@-@>@>@>@C+>@C+>@C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+ @|+1@|+1@1@1@*@1@*@*@*@e+*@e+e+e+s+s+(=>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.'.Q$. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@0@0@0@0@J+0@J+0@J+J+J+J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+}+#+}+}+}+}+}+}+[@}+[@}+[@}+[@[@[@[@[@[@d+[@d+[@d+r+d+r+d+r+r+r+r+r+r+&@&@&@&@&@w+&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+|+1@1@1@1@*@*@*@*@*@e+e+e+e+e+s+_=>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.'.^#. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@0@0@0@0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@d+[@d+[@d+d+d+d+d+d+r+d+r+d+r+&@r+&@r+&@&@&@&@&@&@&@w+w+w+w+w+w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@/@/@/@/@Q+Q+Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@e+*@e+*@e+s+e+s+:=>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.'.^#. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@0@0@J+0@0@0@0@J+0@J+0@J+J+J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+[@}+[@}+[@[@[@[@[@[@d+[@d+[@d+d+d+d+d+r+r+r+r+r+r+r+r+&@r+&@&@&@w+&@w+&@w+w+w+-@w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+/@C+/@C+/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@*@e+e+e+e+e+<=>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.'.,$. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@0@0@0@J+0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@d+d+d+d+d+d+d+r+d+r+d+r+r+r+&@r+&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+>@C+C+C+C+C+/@/@/@/@/@Q+Q+Q+Q+Q+X+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+1@|+1@1@1@*@1@*@*@*@e+*@e+s+e+[=>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.~$U . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " v+0@0@0@0@0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+}+[@[@[@[@[@[@d+[@d+[@d+d+d+d+d+d+r+r+r+r+r+&@r+&@r+&@&@&@w+&@w+w+w+w+w+w+-@-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @}@ @|+ @|+ @|+1@|+1@1@1@*@1@*@*@*@e+*@e+e+e+}=>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>. $6@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " v+0@0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+J+#+#+#+#+#+}+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@d+[@d+d+d+r+d+r+d+r+r+r+r+r+r+&@&@&@&@&@w+&@w+&@w+&@w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+|+1@1@1@1@*@*@*@*@*@e+e+e+s+e+0+>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.9@[.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@0@0@0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@d+[@d+[@d+d+d+d+d+d+r+d+r+d+r+&@r+&@r+&@r+&@&@&@&@&@w+w+w+w+w+w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@e+*@e+*@e+e+e+z@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.T+|=. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@0@J+0@J+0@0@J+0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+}+}+[@}+[@}+[@[@[@[@[@[@d+[@d+[@d+d+d+d+d+r+d+r+r+r+r+r+r+&@r+&@&@&@w+&@w+&@w+w+w+-@w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+C+C+/@C+/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@1@1@*@*@*@*@e+e+e+e+:#>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.!$^#. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " v+0@0@0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@}+[@[@[@[@[@d+d+d+d+d+d+r+d+r+d+r+r+r+&@r+&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@>@-@>@-@>@-@>@>@>@C+>@C+C+C+/@C+/@/@/@/@/@Q+Q+Q+Q+Q+X+X+X+X+X+X+}@}@}@}@}@ @ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+*@e+s+1=>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.q.#.X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " v+0@0@0@0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+#+}+}+}+[@}+[@[@[@[@[@[@d+[@d+[@d+d+d+d+d+d+r+r+r+r+r+&@r+&@r+&@&@&@w+&@w+w+w+w+w+w+w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+X+Q+X+Q+X+X+X+}@X+}@X+}@ @}@ @}@ @|+ @|+ @|+1@|+1@1@1@*@1@*@*@*@e+e+e+e+R$>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.2=3=. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@d+[@d+d+d+r+d+r+d+r+r+r+r+r+r+&@&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+/@/@/@/@/@Q+Q+Q+Q+Q+Q+Q+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+|+1@1@1@1@*@*@*@*@*@e+e+e+6$>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.4=5=6=. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@0@0@0@J+0@J+0@J+J+J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@[@[@d+[@d+[@d+d+d+d+d+d+r+d+r+d+r+r+r+&@r+&@r+&@&@&@&@&@w+w+w+w+w+w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+*@e+7=>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.8=2.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " J+0@J+0@J+0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@[@[@d+[@d+[@d+r+d+r+d+r+r+r+r+r+r+&@r+&@&@&@w+&@w+&@w+w+w+-@w+-@-@-@-@-@-@>@>@>@>@>@>@>@C+C+C+C+C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+|+|+1@1@1@1@1@*@*@*@*@e+e+9=>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.C#+%D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@0@0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+}+}+[@}+[@}+[@[@[@d+[@d+d+d+d+d+d+r+d+r+d+r+r+r+&@r+&@&@&@&@&@&@w+w+w+w+w+-@w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@/@/@/@/@Q+Q+Q+Q+Q+X+X+X+X+X+}@}@}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@e+*@e+*@0=>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.8@]@u@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@0@0@0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+#+#+}+#+}+#+}+}+}+[@}+[@[@[@[@[@[@d+[@d+[@d+d+d+d+d+r+r+r+r+r+r+&@r+&@r+&@&@&@w+&@w+&@w+w+w+w+w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+X+Q+X+Q+X+Q+X+}@X+}@X+}@ @}@ @}@ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+e+a=>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.T+]@R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@d+[@d+d+d+r+d+r+d+r+d+r+r+r+r+r+&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+/@/@/@/@/@/@Q+Q+Q+Q+Q+Q+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+1@1@1@1@1@*@*@*@*@*@e+b=>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.c=d=e=f=g=h=i=j=k=l=m=n=n=o=o=p=p=q=r=s=t=u=v=w=x=y=z=>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.`##.A.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@0@J+0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@[@[@d+[@d+[@d+[@d+d+d+d+d+d+r+r+r+r+r+&@r+&@r+&@&@&@w+&@w+w+w+w+w+w+-@-@-@-@-@>@-@>@-@>@C+>@C+>@C+>@C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+A=>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.B=C=D=E=F=G=H=I=J=K=L=L=M=M=M=N=N=O=N=O=O=P=P=P=Q=Q=R=R=R=S=S=T=T=T=U=U=U=V=W=X=Y=Z=>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.0.C.A.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " v+J+0@J+0@J+J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+}+}+}+}+}+}+[@}+[@}+[@}+[@[@[@[@[@[@d+[@d+[@d+r+d+r+d+r+r+r+r+r+r+&@r+&@&@&@w+&@w+&@w+w+w+-@w+-@-@-@-@-@>@-@>@>@>@>@>@>@C+C+C+C+C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @ @ @|+|+|+|+|+1@1@1@1@*@*@*@*@*@`=>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.@@ -.-+-@-#-$-%-&-&-*-*-=-=-=-----L=--L=L=M=M=M=N=N=N=O=O=P=P=P=Q=Q=R=Q=R=S=S=T=S=T=U=U=;-U=;->->-,-'-)-!-~->.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.=.4.1.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@[@[@d+[@d+d+d+d+d+d+r+d+r+d+r+&@r+&@r+&@&@&@&@&@&@w+w+w+w+w+w+w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@/@/@/@/@Q+Q+Q+Q+Q+X+X+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@e+*@{->.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.+@]-^-/-(-_-:-<-<-<-[-[-[-&-&-*-&-*-*-=-=-=-------L=L=M=L=M=N=N=O=N=O=P=P=P=P=Q=R=R=R=R=S=T=S=T=T=U=;-U=;-;->->->-,-,-}-|-1-~->.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.@@U+`$8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+[@}+[@}+[@[@[@[@[@[@d+[@d+[@d+d+d+d+d+r+r+r+r+r+r+r+r+&@r+&@&@&@w+&@w+&@w+w+w+w+w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@X+}@ @}@ @}@ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@2->.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.3-4-5-6-7-8-9-0-a-a-a-b-b-<-b-<-<-[-[-[-&-&-&-*-*-=-*-=-----L=--L=M=M=M=M=N=O=N=O=O=P=Q=P=Q=Q=R=R=R=S=S=T=S=T=U=U=;-U=;->->-,->-,-c-c-d-e-f-g-h->.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.W@]@T . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " J+0@J+0@J+J+J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@d+d+d+d+d+d+d+r+d+r+d+r+r+r+&@r+&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+C+/@/@/@/@/@Q+Q+Q+Q+Q+Q+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+1@1@1@1@1@*@1@*@*@i->.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.~-j-k-l-m-n-o-p-p-p-0-0-0-0-a-b-a-b-b-<-<-<-[-[-[-&-&-*-&-*-=-=-=-=---L=--L=L=M=M=M=N=N=O=O=O=P=P=P=P=Q=R=R=R=R=S=T=S=T=T=U=;-U=;-;->-,->-,-,-c-d-c-d-d-q-r-s-t->.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.N+6.;$8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@[@[@[@[@[@[@d+[@d+[@d+d+d+d+d+d+r+r+r+r+r+&@r+&@r+&@&@&@w+&@w+w+w+w+w+w+-@-@-@-@-@>@-@>@-@>@>@>@C+>@C+>@C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+ @|+1@|+1@1@1@*@1@*@*@u->.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.3-v-w-x-y-z-A-B-B-o-B-o-p-o-p-p-0-0-0-a-a-a-b-b-<-b-<-[-[-[-[-&-*-&-*-*-=-=-=-------L=L=M=M=M=M=N=O=N=O=O=P=P=P=Q=Q=R=R=R=S=S=T=T=T=U=U=U=;-;->->->-,-,-c-c-c-d-d-C-C-D-E-F-g-G->.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.N+%._+q+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@J+0@J+J+J+J+0@J+J+J+J+J+J+#+J+#+J+#+}+#+}+#+}+}+}+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@d+[@d+[@d+r+d+r+d+r+r+r+r+r+r+&@&@&@&@&@w+&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+|+1@1@1@1@*@*@*@H->.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.I-J-K-L-M-N-N-N-A-A-A-A-B-o-B-o-o-p-p-p-0-0-0-a-a-a-a-b-<-b-<-<-[-[-[-&-&-&-*-*-=-=-=-=---L=--L=L=M=M=M=N=N=N=O=O=P=P=P=Q=Q=R=Q=R=S=S=T=S=T=U=U=;-U=;->->-,->-,-,-c-d-c-d-d-C-D-C-D-D-O-P-Q-t->.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.;.6.w$.#. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@d+[@d+[@d+d+d+d+d+d+r+d+r+d+r+&@r+&@r+&@r+&@&@&@&@&@w+w+w+w+w+w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@/@/@/@/@Q+Q+Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@R->.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.3-S-T-U-V-W-W-X-X-X-N-N-N-N-A-B-A-B-B-B-o-o-p-o-p-0-0-0-0-a-b-a-b-b-<-<-<-[-[-[-[-&-*-&-*-*-=-=-=-------L=L=M=L=M=N=N=O=N=O=P=P=P=P=Q=R=R=R=R=S=T=T=T=T=U=U=U=;-;->->->-,-,-c-c-c-d-d-C-C-C-D-D-Y-Y-Z-`- ;.;+;>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.o@9$@;#;[.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " v+0@J+0@J+0@J+J+J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+}+}+[@}+[@}+[@[@[@[@[@[@d+[@d+[@d+d+d+d+d+r+d+r+r+r+r+r+r+&@r+&@&@&@w+&@w+&@w+w+w+-@w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+/@C+/@C+/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@$;>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.%;&;*;=;-;;;;;;;W-;;W-X-X-X-X-N-A-N-A-A-A-B-B-o-B-o-p-p-p-p-0-0-0-a-a-a-a-b-<-b-<-<-[-[-[-&-&-&-*-*-=-*-=-----L=--L=M=M=M=M=N=O=N=O=O=P=Q=P=Q=Q=R=Q=R=S=S=T=S=T=U=U=;-U=;->->-,->-,-c-c-d-c-d-C-C-D-C-D-Y-Y-Z-Y-Z->;>;,;';);p%>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.).9@y@R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@[@d+d+d+d+d+d+r+d+r+d+r+r+r+&@r+&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@>@-@>@-@>@>@>@>@>@C+>@C+C+C+C+C+/@/@/@/@/@Q+Q+Q+Q+Q+X+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+1@|+1@1@1@*@1@!;>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.%;~;{;];^;/;(;(;(;;;(;;;W-W-W-W-X-X-X-N-N-N-A-A-B-A-B-o-B-o-o-p-o-p-0-0-0-0-a-b-a-b-b-<-<-<-[-[-[-&-&-*-&-*-=-=-=-=---L=--L=L=M=M=M=N=N=O=N=O=P=P=P=P=Q=R=R=R=R=S=T=S=T=T=U=;-U=;-;->-,->-,-,-c-d-c-d-d-C-D-C-D-D-Y-Y-Z-Z-Z->;>;_;_;:;<;[;};|;>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.1;2;G#:.*%. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+}+[@[@[@[@[@[@d+[@d+[@d+d+d+d+d+d+r+r+r+r+r+&@r+&@r+&@&@&@w+&@w+w+w+w+w+w+w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @}@ @|+ @|+ @|+1@|+1@1@1@*@1@*@o@>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.p%3;4;5;6;7;7;/;/;/;(;/;(;;;;;;;;;W-W-W-X-X-X-X-N-N-N-A-A-A-B-B-o-B-o-p-o-p-p-0-0-0-a-a-a-b-b-<-b-<-[-[-[-[-&-*-&-*-*-=-=-=---------L=M=M=M=M=N=O=N=O=O=P=Q=P=Q=Q=R=R=R=S=S=T=T=T=U=U=;-;-;->->->-,-,-c-c-c-c-d-C-C-D-C-D-Y-Y-Z-Y-Z->;>;_;>;_;8;8;9;0;a;b;c;d;p%>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.e;f;g;h;i;$$. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@d+[@d+d+d+r+d+r+d+r+r+r+r+r+r+&@&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+|+1@1@1@1@*@*@k$>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.j;k;l;m;n;n;n;7;7;7;/;7;/;(;(;(;(;;;(;;;W-W-W-W-X-X-X-N-N-N-A-A-A-A-B-o-B-o-o-p-p-p-0-0-0-a-a-b-a-b-<-b-<-<-[-[-[-&-&-&-&-*-=-=-=-=---L=--L=L=M=M=M=N=N=N=O=O=P=P=P=Q=Q=R=R=R=S=S=T=S=T=U=U=;-U=;-;->-,->-,-,-c-d-c-d-d-C-D-C-D-D-Y-Z-Y-Z-Z->;_;_;_;_;8;9;9;9;9;o;p;q;r;s;t;u;v;w;x;>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.4=y;z;A;B;C;D;E;F;w+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@J+0@J+J+J+J+J+J+#+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@d+[@d+[@d+d+d+d+d+d+r+d+r+d+r+r+r+&@r+&@r+&@&@&@&@&@w+w+w+w+w+w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@G;>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.H;I;J;K;L;L;L;L;n;n;n;7;n;7;7;/;/;/;(;/;(;;;;;;;;;W-W-W-X-X-X-N-N-N-N-A-B-A-B-B-B-o-o-p-o-p-0-0-0-0-a-b-a-b-b-<-b-<-[-[-[-[-&-*-&-*-*-=-=-=-------L=L=M=M=M=N=N=O=N=O=P=P=P=P=Q=R=R=R=R=S=S=T=T=T=U=U=U=;-;->->->-,-,-c-c-c-d-d-C-C-C-D-D-Y-Y-Z-Z-Z->;>;_;_;_;8;8;9;9;9;o;o;p;p;M;M;M;N;N;O;P;Q;R;S;T;U;V;W;W;X;Y;Z;`;`;`; >.>+>@>#>$>%>&>*>=>->;>>>,>&- @. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@0@J+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+}+}+[@}+[@}+[@[@[@[@[@[@d+[@d+[@d+[@d+r+d+r+d+r+r+r+r+r+r+&@r+&@&@&@w+&@w+&@w+w+w+-@w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+C+C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@1@1@'>>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.)>!>~>{>]>]>]>]>L;]>L;n;L;n;n;7;7;7;/;7;/;(;/;(;(;;;;;;;W-;;W-X-X-X-X-N-A-N-A-A-A-B-B-o-B-o-p-p-p-p-0-p-0-a-a-a-a-b-<-b-<-<-[-[-[-&-&-&-*-*-=-*-=-----L=--L=M=M=M=M=N=O=N=O=O=P=P=P=Q=Q=R=Q=R=S=S=T=S=T=U=U=;-U=;->->-,->-,-c-c-d-c-d-C-C-D-C-D-Y-Y-Z-Y-Z-Z->;_;_;_;_;8;9;9;9;9;o;p;p;M;p;M;N;N;O;O;O;^>^>/>/>,>(>,>(>(>_>:>:>:>:><><>[>}>}>}>}>|>->}>;-1>0@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@}+[@[@[@d+[@d+d+d+d+d+d+r+d+r+d+r+r+r+&@r+&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@-@>@>@>@C+>@C+C+C+/@C+/@/@/@/@/@Q+Q+Q+Q+Q+X+X+X+X+X+X+}@}@}@}@}@ @ @ @ @|+ @|+|+|+1@|+1@1@1@*@2>>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.3-3;3>4>5>5>6>6>6>]>6>]>L;L;L;L;n;n;n;7;n;7;/;7;/;/;(;(;(;;;(;;;W-W-W-W-X-X-X-N-N-N-N-A-B-A-B-B-B-o-o-p-o-p-0-0-0-0-a-b-a-b-b-<-<-<-[-[-[-&-&-*-&-*-=-=-=-=---L=--L=L=M=L=M=N=N=O=N=O=P=P=P=P=Q=R=R=R=R=S=T=S=T=T=U=;-U=;-;->-,->-,-,-c-d-c-d-d-C-C-C-D-D-Y-Y-Z-Z-Z->;>;_;_;_;8;8;9;o;9;o;o;p;M;M;M;M;N;O;O;^>O;^>/>/>,>,>,>,>(>_>_>:>:>:><><>[>[>}>|>}>Y-(;r+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+#+}+}+}+[@}+[@[@[@[@[@[@d+[@d+[@d+d+d+d+d+d+r+r+r+r+r+&@r+&@r+&@&@&@w+&@w+&@w+w+w+w+w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+X+Q+X+Q+X+X+X+}@X+}@X+}@ @}@ @}@ @|+ @|+ @|+1@|+1@1@1@*@7>>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.8>9>0>a>b>b>5>5>5>6>5>6>]>]>]>]>L;L;L;n;L;n;7;7;7;7;/;/;/;(;/;(;;;;;;;;;W-;;W-X-X-X-X-N-N-N-A-A-A-B-B-o-B-o-p-o-p-p-0-0-0-a-a-a-b-b-<-b-<-[-[-[-[-&-*-&-*-*-=-*-=---------L=M=M=M=M=N=O=N=O=O=P=Q=P=Q=Q=R=R=R=S=S=T=T=T=U=U=;-;-;->->->->-,-c-c-d-c-d-C-C-D-C-D-Y-Y-Z-Y-Z->;>;_;>;_;8;8;9;9;9;o;o;p;p;M;M;M;N;N;O;O;O;^>^>/>/>,>,>,>(>(>_>:>:>:>:><>[>[>M;<- @. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@d+[@d+d+d+r+d+r+d+r+r+r+r+r+r+r+&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+/@/@/@/@/@Q+Q+Q+Q+Q+Q+Q+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+|+1@1@1@1@c>>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.X@d>e>f>1>1>b>5>b>5>5>5>6>6>6>6>]>]>]>L;]>L;n;n;n;n;7;7;7;/;7;/;/;(;(;(;;;(;;;W-W-W-W-X-X-X-N-N-N-A-A-A-A-B-o-B-o-o-p-p-p-0-0-0-a-a-b-a-b-<-b-<-<-[-<-[-&-&-*-&-*-=-=-=-=---L=--L=L=M=M=M=N=N=O=O=O=P=P=P=Q=Q=R=R=R=S=S=T=S=T=T=U=;-U=;-;->-,->-,-,-c-d-c-d-d-C-D-C-D-D-Y-Z-Y-Z-Z->;_;_;_;_;8;9;9;o;9;o;o;p;M;p;M;M;N;O;O;O;O;^>/>/>,>,>,>(>(>_>_>:>:>:>(>N=f+0@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " J+J+J+J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@[@[@d+[@d+[@d+d+d+d+d+d+d+d+r+d+r+r+r+&@r+&@r+&@&@&@&@&@w+w+w+w+w+w+-@-@-@-@-@>@-@>@-@>@C+>@C+>@C+>@C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@g>>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.0$d>e>h>1>i>1>b>1>b>b>b>5>5>5>5>6>6>6>]>6>]>L;L;L;L;n;L;n;7;n;7;7;/;/;/;(;/;(;;;;;;;;;W-W-W-X-X-X-N-N-N-N-A-B-A-B-B-o-o-o-p-o-p-p-0-0-0-a-a-a-b-b-<-b-<-[-[-[-[-&-*-&-*-*-=-=-=-------L=L=M=M=M=N=N=O=N=O=P=P=P=P=Q=Q=R=R=R=S=S=T=T=T=U=U=U=;-;->->->-,-,-c-c-c-d-d-C-C-C-D-D-Y-Y-Z-Z-Z->;>;_;>;_;8;8;9;9;9;o;o;p;p;M;M;M;N;N;O;^>O;^>^>/>,>,>,>,>(>_>_>:>d-]>}+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " #+0@J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@[@[@d+[@d+[@d+r+d+r+d+r+r+r+r+r+r+&@r+&@&@&@w+&@w+&@w+w+w+-@w+-@-@-@-@-@-@-@>@>@>@>@>@>@C+C+C+C+C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+|+|+1@1@1@j>>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.:%k>l>m>i>n>i>1>i>1>1>1>b>b>b>b>5>6>5>6>6>6>6>]>]>]>L;]>L;n;L;n;n;7;7;7;/;7;/;(;(;(;(;;;;;;;W-;;W-X-X-X-X-N-A-N-A-A-A-A-B-o-B-o-o-p-p-p-0-0-0-a-a-a-a-b-<-b-<-<-[-[-[-&-&-&-*-*-=-*-=-----L=--L=M=M=M=M=N=N=N=O=O=P=P=P=Q=Q=R=Q=R=S=S=T=S=T=U=U=;-U=;->->-,->-,-c-c-d-c-d-C-C-D-C-D-D-Y-Z-Y-Z-Z->;_;_;_;_;8;9;9;9;9;o;p;p;M;p;M;N;N;O;O;O;^>^>/>/>,>(>,>(>_;o-C+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+}+}+[@}+[@}+[@[@[@d+[@d+d+d+d+d+d+r+d+r+d+r+r+r+&@r+&@&@&@&@&@&@w+w+w+w+w+w+w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@/@/@/@/@Q+Q+Q+Q+Q+X+X+X+X+X+}@}@}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@o>>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.:%p>l>q>n>r>n>i>i>i>i>1>1>1>b>1>b>b>b>5>5>5>5>6>6>6>]>6>]>L;L;L;L;n;n;n;7;n;7;/;/;/;/;(;(;(;;;(;;;W-W-W-W-X-W-X-N-N-N-N-A-B-A-B-B-B-o-o-p-o-p-0-0-0-0-a-b-a-b-b-<-<-<-[-[-[-&-&-*-&-*-=-=-=-=-------L=L=M=L=M=N=N=O=N=O=P=P=P=P=Q=R=R=R=R=S=T=S=T=T=U=;-U=;-;->-,->-,-,-c-c-c-d-d-C-C-C-D-D-Y-Y-Z-Z-Z->;>;_;_;_;8;8;9;o;9;o;o;p;M;M;M;M;N;O;O;^>O;^>^>/>,>M;*-D+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+#+#+}+#+}+#+}+}+}+[@}+[@[@[@[@[@[@d+[@d+[@d+d+d+d+d+r+r+r+r+r+r+&@r+&@r+&@r+&@w+&@w+&@w+w+w+w+w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+X+Q+X+Q+X+Q+X+}@X+}@X+}@ @}@ @}@ @|+ @|+|+|+1@|+1@1@s>>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.S#t@l>t>r>r>r>n>n>n>n>i>n>i>1>i>1>1>1>b>b>b>b>5>5>5>6>6>6>]>]>]>]>L;L;L;n;L;n;7;7;7;7;/;/;/;(;/;(;(;;;;;;;W-;;W-X-X-X-X-N-N-N-A-A-A-B-B-o-B-o-p-p-p-p-0-0-0-a-a-a-b-b-<-b-<-[-[-[-[-&-&-&-*-*-=-*-=---------L=M=M=M=M=N=O=N=O=O=P=Q=P=Q=Q=R=R=R=S=S=T=T=T=U=U=;-U=;->->-,->-,-c-c-d-c-d-C-C-D-C-D-Y-Y-Z-Y-Z->;>;_;_;_;8;8;9;9;9;o;o;p;p;M;p;M;N;N;O;O;O;^>O;Q=i>J+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " J+J+J+#+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@d+d+d+d+d+r+d+r+d+r+d+r+r+r+r+r+&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+C+/@/@/@/@/@Q+Q+Q+Q+Q+Q+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+1@1@1@u>>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.v>,@w>1+1+1+1+r>r>r>n>r>n>i>n>i>i>i>1>1>1>1>b>5>b>5>5>5>6>6>6>6>]>]>]>L;]>L;n;n;n;n;7;n;7;/;7;/;/;(;(;(;;;(;;;W-W-W-W-X-X-X-N-N-N-A-A-A-A-B-o-B-o-o-p-p-p-0-0-0-0-a-b-a-b-b-<-<-<-[-[-[-&-&-*-&-*-=-=-=-=---L=--L=L=M=M=M=N=N=O=O=O=P=P=P=Q=Q=R=R=R=R=S=T=S=T=T=U=;-U=;-;->-,->-,-,-c-d-c-d-d-C-D-C-D-D-Y-Z-Y-Z-Z->;_;_;_;_;8;8;9;o;9;o;o;p;M;p;M;M;N;O;O;d-;;-@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@[@[@d+[@d+[@d+[@d+d+d+d+d+d+r+r+r+r+r+&@r+&@r+&@&@&@w+&@w+w+w+w+w+w+-@-@-@-@-@>@-@>@-@>@>@>@C+>@C+>@C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@x>>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.u%y>7@f+f+1+f+1+r>1+r>r>r>n>n>n>n>i>i>i>1>i>1>b>1>b>b>b>5>5>5>5>6>6>6>]>]>]>]>L;L;L;n;L;n;7;n;7;7;/;/;/;(;/;(;;;;;;;;;W-W-W-X-X-X-N-N-N-N-A-B-A-B-B-o-B-o-p-o-p-p-0-0-0-a-a-a-b-b-<-b-<-[-[-[-[-&-*-&-*-*-=-=-=-------L=L=M=M=M=N=N=O=N=O=O=P=P=P=Q=Q=R=R=R=S=S=T=T=T=U=U=U=;-;->->->-,-,-c-c-c-d-d-C-C-D-D-D-Y-Y-Z-Y-Z->;>;_;>;_;8;8;9;9;9;o;o;p;p;M;M;M;_;0-*@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " J+0@J+J+J+J+J+J+#+J+#+J+#+#+#+#+#+}+}+}+}+}+}+[@}+[@}+[@}+[@[@[@[@[@[@d+[@d+[@d+r+d+r+d+r+r+r+r+r+r+&@&@&@&@&@w+&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @ @ @|+|+|+|+|+1@z>>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.A>I@w@h%x+f+x+f+1+f+1+1+1+r>r>r>r>n>n>n>i>n>i>1>i>1>1>1>b>b>b>b>5>5>5>6>6>6>6>]>]>]>L;]>L;n;L;n;n;7;7;7;/;7;/;(;(;(;(;;;;;;;W-W-W-X-X-X-X-N-N-N-A-A-A-A-B-o-B-o-o-p-p-p-0-0-0-a-a-a-a-b-<-b-<-<-[-[-[-&-&-&-*-*-=-=-=-----L=--L=L=M=M=M=N=N=N=O=O=P=P=P=Q=Q=R=Q=R=S=S=T=S=T=U=U=;-U=;->->-,->-,-c-c-d-c-d-d-C-D-C-D-D-Y-Z-Y-Z-Z->;_;_;_;_;8;9;9;9;9;o;p;p;p;M=r>#+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@[@[@d+[@d+d+d+d+d+d+r+d+r+d+r+&@r+&@r+&@&@&@&@&@&@&@w+w+w+w+w+w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@/@/@/@/@Q+Q+Q+Q+Q+X+X+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+B>>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.C>3%D>L+x+x+x+f+f+f+f+1+1+1+r>1+r>n>r>n>n>n>i>i>i>i>1>i>1>b>1>b>b>b>5>5>5>5>6>6>6>]>6>]>L;L;L;L;n;n;n;7;n;7;/;/;/;/;(;(;(;;;(;;;;;W-W-W-X-W-X-N-N-N-N-A-B-A-B-B-B-o-o-p-o-p-0-0-0-0-a-b-a-b-b-<-<-<-[-[-[-&-&-*-&-*-*-=-=-=-------L=L=M=L=M=N=N=O=N=O=P=P=P=P=Q=R=R=R=R=S=T=S=T=T=U=;-U=;-;->->->-,-,-c-c-c-d-d-C-C-C-D-D-Y-Y-Z-Z-Z->;>;_;_;_;8;8;9;o;9;o;;-n;r+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " J+J+J+J+J+#+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+[@}+[@}+[@[@[@[@[@[@d+[@d+[@d+d+d+d+d+r+r+r+r+r+r+r+r+&@r+&@&@&@w+&@w+&@w+w+w+-@w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+/@C+/@C+/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@X+}@ @}@ @ @ @|+ @|+|+|+1@|+E>>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.0+I@F>L+L+L+L+x+x+x+x+f+f+f+1+f+1+r>1+r>r>r>r>n>n>n>i>n>i>1>i>1>1>1>b>b>b>b>5>5>5>6>6>6>]>]>]>]>L;L;L;n;L;n;7;7;7;7;/;7;/;(;/;(;(;;;;;;;W-;;W-X-X-X-X-N-N-N-A-A-A-B-B-o-B-o-p-p-p-p-0-0-0-a-a-a-a-b-<-b-<-<-[-[-[-&-&-&-*-*-=-*-=-----L=--L=M=M=M=M=N=O=N=O=O=P=Q=P=Q=Q=R=R=R=S=S=T=S=T=U=U=;-U=;->->-,->-,-c-c-d-c-d-C-C-D-C-D-Y-Y-Z-Y-Z->;>;_;_;_;8;8;9;D-B-X+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@d+d+d+d+d+d+d+r+d+r+d+r+r+r+&@r+&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+>@C+C+C+C+C+/@/@/@/@/@Q+Q+Q+Q+Q+Q+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+1@G>>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.0$!*H>R+R+L+L+L+x+L+x+f+x+f+f+f+f+f+1+1+1+1+r>r>r>n>r>n>i>n>i>i>i>1>1>b>1>b>5>b>5>5>5>6>6>6>6>]>]>]>L;]>L;L;n;n;n;7;n;7;/;7;/;/;(;(;(;;;(;;;W-W-W-W-X-X-X-N-N-N-A-A-B-A-B-o-B-o-o-p-o-p-0-0-0-0-a-b-a-b-b-<-<-<-[-[-[-&-&-*-&-*-=-=-=-=---L=--L=L=M=M=M=N=N=O=O=O=P=P=P=P=Q=R=R=R=R=S=T=S=T=T=U=;-U=;-;->-,->-,-,-c-d-c-d-d-C-D-C-D-D-Y-Z-Y-Z-Z->;>;_;_;Z-*-x+v+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@[@[@[@[@[@[@d+[@d+[@d+d+d+d+d+d+r+r+r+r+r+&@r+&@r+&@&@&@w+&@w+w+w+w+w+w+-@-@-@-@-@-@-@>@-@>@>@>@C+>@C+>@C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+ @|+1@I>>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.d@J>_$K+R+L+R+L+R+L+L+L+x+x+x+x+f+f+f+1+f+1+r>1+r>r>r>n>n>n>n>i>i>i>1>i>1>b>1>b>b>b>5>5>5>5>6>5>6>]>]>]>]>L;L;L;n;L;n;7;n;7;7;/;/;/;(;/;(;;;;;;;;;W-W-W-X-X-X-N-N-N-N-A-A-A-B-B-o-B-o-p-o-p-p-0-0-0-a-a-a-b-b-<-b-<-[-[-[-[-&-*-&-*-*-=-=-=-------L=L=M=M=M=M=N=O=N=O=O=P=P=P=Q=Q=R=R=R=S=S=T=T=T=U=U=U=;-;->->->-,-,-c-c-c-d-d-C-C-D-C-D-Y-Y-Z-Y-Z->;>;P=1>[@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " J+J+J+J+J+#+J+#+J+#+}+#+}+#+}+}+}+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@d+[@d+d+d+r+d+r+d+r+r+r+r+r+r+&@&@&@&@&@w+&@w+&@w+&@w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+K>q.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.b@L>M>D+K+K+K+R+R+R+R+L+L+L+x+L+x+x+x+f+x+f+1+f+1+1+1+r>r>r>r>n>n>n>i>n>i>1>i>1>1>1>1>b>b>b>5>5>5>6>6>6>6>]>]>]>L;]>L;n;n;n;n;7;7;7;/;7;/;(;(;(;(;;;;;;;W-W-W-W-X-X-X-N-N-N-A-A-A-A-B-o-B-o-o-p-p-p-0-0-0-a-a-a-a-b-<-b-<-<-[-[-[-&-&-&-*-*-=-=-=-=---L=--L=L=M=M=M=N=N=N=O=O=P=P=P=Q=Q=R=Q=R=S=S=T=S=T=U=U=;-U=;->->-,->-,-,-c-d-c-d-d-C-D-C-D-D-Y-Z-Y-U=7;C+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@J+#+J+#+J+#+#+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@d+[@d+[@d+d+d+d+d+d+r+d+r+d+r+&@r+&@r+&@r+&@&@&@&@&@w+w+w+w+w+w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@N>>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.:%O>P>D+D+K+K+K+R+K+R+R+R+L+R+L+x+L+x+x+x+f+f+f+f+1+1+1+r>1+r>n>r>n>n>n>n>i>i>i>1>i>1>b>1>b>b>b>5>5>5>5>6>6>6>]>6>]>L;L;L;L;n;n;n;7;n;7;/;/;/;/;(;/;(;;;;;;;;;W-W-W-X-X-X-N-N-N-N-A-B-A-B-B-B-o-o-p-o-p-0-0-0-0-a-b-a-b-b-<-b-<-[-[-[-[-&-*-&-*-*-=-=-=-------L=L=M=L=M=N=N=O=N=O=P=P=P=P=Q=R=R=R=R=S=T=T=T=T=U=U=U=;-;->->->-,-,-c-c-c-d-d-C-C-C-D-D-C-0-D+v+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@J+J+J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+}+}+[@}+[@}+[@[@[@[@[@[@d+[@d+[@d+d+d+d+d+r+d+r+r+r+r+r+r+&@r+&@&@&@w+&@w+&@w+w+w+-@w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+C+C+/@C+/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@B$>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.Q>R>S>s+D+D+D+K+D+K+R+K+R+R+R+L+L+L+L+L+x+x+x+x+f+f+f+1+f+1+1+1+r>r>r>r>n>n>n>i>n>i>1>i>1>1>1>b>b>b>b>5>5>5>6>6>6>]>]>]>]>L;L;L;n;L;n;n;7;7;7;/;7;/;(;/;(;(;;;;;;;W-;;W-X-X-X-X-N-A-N-A-A-A-B-B-o-B-o-p-p-p-p-0-p-0-a-a-a-a-b-<-b-<-<-[-[-[-&-&-&-*-*-=-*-=-----L=--L=M=M=M=M=N=O=N=O=O=P=Q=P=Q=Q=R=Q=R=S=S=T=S=T=U=U=;-U=;->->-,->-,-c-c-d-c-d-C-C-D-L=r>#+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@[@d+d+d+d+d+d+r+d+r+d+r+r+r+&@r+&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@>@-@>@-@>@-@>@>@>@C+>@C+C+C+/@C+/@/@/@/@/@Q+Q+Q+Q+Q+X+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+T>>.>.>.>.>.>.>.>.>.>.>.>.>.D#i$U>s+D+s+D+D+D+K+K+K+K+K+R+R+R+R+L+L+L+x+L+x+x+x+f+f+f+f+f+1+1+1+1+r>r>r>n>r>n>i>n>i>i>i>1>1>b>1>b>5>b>5>5>5>6>6>6>6>]>6>]>L;]>L;L;n;n;n;7;n;7;/;7;/;/;(;(;(;;;(;;;W-W-W-W-X-X-X-N-N-N-A-A-B-A-B-B-B-o-o-p-o-p-0-0-0-0-a-b-a-b-b-<-<-<-[-[-[-&-&-*-&-*-=-=-=-=---L=--L=L=M=M=M=N=N=O=N=O=P=P=P=P=Q=R=R=R=R=S=T=S=T=T=U=;-U=;-;->-,->-,-,-c-d-c-d-Q=n;-@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " J+J+#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+}+[@[@[@[@[@[@d+[@d+[@d+d+d+d+d+d+r+r+r+r+r+&@r+&@r+&@&@&@w+&@w+w+w+w+w+w+w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+X+Q+X+Q+X+X+X+}@X+}@X+}@ @}@ @}@ @|+ @|+ @|+V>>.>.>.>.>.>.>.>.>.>.>.W>x>X>s+s+s+s+D+D+D+D+D+K+K+K+R+K+R+R+R+L+R+L+L+L+x+x+x+x+f+f+f+1+f+1+r>1+r>r>r>n>n>n>n>i>i>i>1>i>1>b>1>b>b>b>b>5>5>5>6>5>6>]>]>]>]>L;L;L;n;L;n;7;7;7;7;/;/;/;(;/;(;;;;;;;;;W-W-W-X-X-X-X-N-N-N-A-A-A-B-B-o-B-o-p-o-p-p-0-0-0-a-a-a-b-b-<-b-<-[-[-[-[-&-*-&-*-*-=-*-=---------L=M=M=M=M=N=O=N=O=O=P=Q=P=Q=Q=R=R=R=S=S=T=T=T=U=U=;-;-;->->->-,-,-c-U=N-1@v+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " #+J+#+#+#+#+#+#+}+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@d+[@d+d+d+r+d+r+d+r+r+r+r+r+r+&@&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+/@/@/@/@/@Q+Q+Q+Q+Q+Q+Q+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+Y>>.>.>.>.>.>.>.>.>.7>Z>e+e+s+e+s+s+s+D+s+D+D+D+K+D+K+K+K+R+R+R+R+L+L+L+x+L+x+f+x+f+x+f+1+f+1+1+1+r>r>r>r>n>n>n>i>n>i>i>i>1>1>1>1>b>b>b>5>5>5>6>6>6>6>]>]>]>L;]>L;n;n;n;n;7;7;7;/;7;/;(;(;(;(;;;(;;;W-W-W-W-X-X-X-N-N-N-A-A-A-A-B-o-B-o-o-p-p-p-0-0-0-a-a-b-a-b-<-b-<-<-[-<-[-&-&-&-&-*-=-=-=-=---L=--L=L=M=M=M=N=N=N=O=O=P=P=P=Q=Q=R=R=R=S=S=T=S=T=U=U=;-U=;-;->-,-;-[-1+#+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " 0@#+J+#+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@d+[@d+[@d+d+d+d+d+d+r+d+r+d+r+r+r+&@r+&@r+&@&@&@&@&@w+w+w+w+w+w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+`>>.>.>.>.>.>.>. ,.,*@e+*@e+e+e+s+s+s+s+s+D+D+D+D+K+K+K+R+K+R+R+R+L+R+L+x+L+x+x+x+f+f+f+f+1+1+1+r>1+r>r>r>n>n>n>n>i>i>i>1>i>1>b>1>b>b>b>5>5>5>5>6>6>6>]>6>]>L;L;L;L;n;n;n;7;n;7;7;/;/;/;(;/;(;;;;;;;;;W-W-W-X-X-X-N-N-N-N-A-B-A-B-B-o-o-o-p-o-p-0-0-0-0-a-a-a-b-b-<-b-<-[-[-[-[-&-*-&-*-*-=-=-=-------L=L=M=M=M=N=N=O=N=O=P=P=P=P=Q=R=R=R=R=S=S=T=T=T=U=U=U=;-;-L=5>&@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " J+J+#+J+#+J+#+#+#+#+#+#+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@d+[@d+[@d+[@d+r+d+r+d+r+r+r+r+r+r+&@r+&@&@&@w+&@w+&@w+w+w+-@w+-@-@-@-@-@-@>@>@>@>@>@>@>@C+C+C+C+C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|++,>.>.>.>.>.@,#,$,*@*@*@e+e+e+e+e+s+s+s+D+s+D+D+D+K+D+K+R+K+R+R+R+L+L+L+L+L+x+x+x+x+f+x+f+1+f+1+1+1+r>r>r>r>n>n>n>i>n>i>1>i>1>1>1>b>b>b>b>5>5>5>6>6>6>]>]>]>]>L;]>L;n;L;n;n;7;7;7;/;7;/;(;(;(;(;;;;;;;W-;;W-X-X-X-X-N-A-N-A-A-A-B-B-o-B-o-o-p-p-p-0-p-0-a-a-a-a-b-<-b-<-<-[-[-[-&-&-&-*-*-=-*-=-----L=--L=M=M=M=M=N=O=N=O=O=P=P=P=Q=Q=R=Q=R=S=S=T=S=T=U=U=R=/;}@v+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " #+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@}+[@[@[@d+[@d+d+d+d+d+d+r+d+r+d+r+r+r+&@r+&@&@&@&@&@&@w+w+w+w+w+-@w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@/@/@/@/@Q+Q+Q+Q+Q+X+X+X+X+X+}@}@}@}@}@}@}@ @ @ @|+ @|+%,>.>.>.&,*,$,*@1@*@*@*@e+*@e+s+e+s+e+s+D+s+D+D+D+K+K+K+K+K+R+R+R+R+L+R+L+x+L+x+x+x+f+f+f+f+1+1+1+1+1+r>r>r>n>r>n>i>n>i>i>1>1>1>b>1>b>5>b>5>5>5>5>6>6>6>]>6>]>L;L;L;L;n;n;n;7;n;7;/;/;/;/;(;(;(;;;(;;;W-W-W-W-X-X-X-N-N-N-N-A-B-A-B-B-B-o-o-p-o-p-0-0-0-0-a-b-a-b-b-<-<-<-[-[-[-&-&-*-&-*-=-=-=-=-------L=L=M=L=M=N=N=O=N=O=P=P=P=P=Q=R=R=R=R=S=T=S=R=A-s+0@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " J+#+J+#+#+#+#+#+#+}+#+}+#+}+#+}+}+}+[@}+[@[@[@[@[@[@d+[@d+[@d+d+d+d+d+r+r+r+r+r+r+&@r+&@r+&@&@&@w+&@w+&@w+w+w+w+w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+X+Q+X+Q+X+Q+X+}@X+}@X+}@ @}@ @}@ @|+ @|+=,>.o#-,;,1@1@*@1@*@*@*@e+e+e+e+e+s+s+s+s+D+D+D+D+D+K+D+K+R+K+R+R+R+L+R+L+L+L+x+x+x+x+f+f+f+1+f+1+r>1+r>r>r>n>n>n>n>i>i>i>1>i>1>1>1>b>b>b>b>5>5>5>6>5>6>]>]>]>]>L;L;L;n;L;n;7;7;7;7;/;/;/;(;/;(;;;;;;;;;W-;;W-X-X-X-X-N-N-N-A-A-A-B-B-o-B-o-p-o-p-p-0-0-0-a-a-a-b-b-<-b-<-[-[-[-[-&-&-&-*-*-=-*-=---------L=M=M=M=M=N=O=N=O=O=P=Q=P=Q=Q=R=R=R=S=&-i>[@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " #+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@d+[@d+d+d+r+d+r+d+r+r+r+r+r+r+r+&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+/@/@/@/@/@/@Q+Q+Q+Q+Q+Q+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+>,,,',|+1@1@1@1@*@*@*@*@*@e+e+e+s+e+s+e+s+D+s+D+D+D+K+D+K+K+K+R+R+R+R+L+L+L+x+L+x+f+x+f+x+f+1+f+1+1+1+r>r>r>r>n>r>n>i>n>i>i>i>1>1>1>1>b>5>b>5>5>5>6>6>6>6>]>]>]>L;]>L;n;n;n;n;7;7;7;/;7;/;/;(;(;(;;;(;;;W-W-W-W-X-X-X-N-N-N-A-A-A-A-B-o-B-o-o-p-p-p-0-0-0-a-a-b-a-b-b-b-<-<-[-<-[-&-&-*-&-*-=-=-=-=---L=--L=L=M=M=M=N=N=O=O=O=P=P=P=Q=Q=R=N=n;C+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " #+J+#+#+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@[@[@d+[@d+[@d+d+d+d+d+d+d+d+r+d+r+r+r+&@r+&@r+&@&@&@&@&@w+w+w+w+w+w+-@-@-@-@-@>@-@>@-@>@C+>@C+>@C+>@C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+*@e+e+e+s+s+s+s+s+D+D+D+D+K+K+K+R+K+R+R+R+L+R+L+x+L+x+x+x+f+f+f+f+1+f+1+r>1+r>r>r>n>n>n>n>i>i>i>1>i>1>b>1>b>b>b>5>5>5>5>6>6>6>]>]>]>L;L;L;L;n;L;n;7;n;7;7;/;/;/;(;/;(;;;;;;;;;W-W-W-X-X-X-N-N-N-N-A-B-A-B-B-o-o-o-p-o-p-p-0-0-0-a-a-a-b-b-<-b-<-[-[-[-[-&-*-&-*-*-=-=-=-------L=L=M=M=M=N=N=O=N=O=P=P=P=N=X-e+0@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " J+#+J+#+#+#+#+#+}+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@[@[@d+[@d+[@d+r+d+r+d+r+r+r+r+r+r+&@r+&@&@&@w+&@w+&@w+w+w+-@w+-@-@-@-@-@>@-@>@>@>@>@>@>@C+C+C+C+C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @ @ @|+|+|+|+|+1@1@1@1@1@*@*@*@*@e+e+e+e+e+s+s+s+D+s+D+K+D+K+D+K+R+K+R+R+R+L+L+L+L+x+L+x+x+x+f+x+f+1+f+1+1+1+r>r>r>r>n>n>n>i>n>i>1>i>1>1>1>b>b>b>b>5>6>5>6>6>6>6>]>]>]>L;]>L;n;L;n;n;7;7;7;/;7;/;(;(;(;(;;;;;;;W-W-W-X-X-X-X-N-A-N-A-A-A-A-B-o-B-o-o-p-p-p-0-0-0-a-a-a-a-b-<-b-<-<-[-[-[-&-&-&-*-*-=-*-=-----L=--L=L=M=M=M=N=N=N=O=O=0-x+}+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " #+#+#+#+#+}+#+}+#+}+}+}+}+}+}+}+}+[@}+[@}+[@[@[@d+[@d+d+d+d+d+d+r+d+r+d+r+r+r+&@r+&@&@&@&@&@&@w+w+w+w+w+w+w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@/@/@/@/@Q+Q+Q+Q+Q+X+X+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@e+*@e+*@e+s+e+s+s+s+D+s+D+D+D+K+K+K+K+K+K+R+R+R+L+R+L+x+L+x+x+x+f+f+f+f+1+1+1+r>1+r>r>r>n>r>n>i>i>i>i>1>1>1>b>1>b>b>b>5>5>5>5>6>6>6>]>6>]>L;L;L;L;n;n;n;7;n;7;/;/;/;/;(;(;(;;;(;;;W-W-W-W-X-W-X-N-N-N-N-A-B-A-B-B-B-o-o-p-o-p-0-0-0-0-a-b-a-b-b-<-<-<-[-[-[-&-&-*-&-*-*-=-=-=-------L=L=M=L=M=N=N=*-5>-@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " #+#+#+#+#+#+#+#+}+#+}+#+}+}+}+[@}+[@[@[@[@[@[@d+[@d+[@d+d+d+d+d+r+r+r+r+r+r+&@r+&@r+&@&@&@w+&@w+&@w+w+w+w+w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+Q+X+}@X+}@X+}@ @}@ @}@ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+e+e+e+e+s+s+s+s+D+s+D+D+D+K+D+K+R+K+R+R+R+L+R+L+L+L+x+x+x+x+f+f+f+1+f+1+r>1+r>r>r>n>n>n>n>i>n>i>1>i>1>1>1>b>b>b>b>5>5>5>6>6>6>]>]>]>]>L;L;L;n;L;n;7;7;7;7;/;/;/;(;/;(;(;;;;;;;W-;;W-X-X-X-X-N-N-N-A-A-A-B-B-o-B-o-p-p-p-p-0-0-0-a-a-a-b-b-<-b-<-<-[-[-[-&-&-&-*-*-=-*-=-----L=--L=M=M=--7;|+v+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " #+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@d+d+d+d+d+r+d+r+d+r+d+r+r+r+r+r+&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+C+/@/@/@/@/@Q+Q+Q+Q+Q+Q+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+1@1@1@1@1@*@1@*@*@*@e+*@e+s+e+s+e+s+D+s+D+D+D+K+K+K+K+K+R+R+R+R+L+L+L+x+L+x+f+x+f+x+f+1+f+1+1+1+1+r>r>r>n>r>n>i>n>i>i>i>1>1>1>1>b>5>b>5>5>5>6>6>6>6>]>]>]>L;]>L;n;n;n;n;7;n;7;/;7;/;/;(;(;(;;;(;;;W-W-W-W-X-X-X-N-N-N-A-A-B-A-B-o-B-o-o-p-p-p-0-0-0-0-a-b-a-b-b-<-<-<-[-[-[-&-&-*-&-*-=-=-=-=---L=--L=B-D+J+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " J+#+#+#+#+}+#+}+#+}+}+}+}+}+}+[@}+[@[@[@d+[@d+[@d+[@d+d+d+d+d+d+r+r+r+r+r+&@r+&@r+&@&@&@w+&@w+w+w+w+w+w+-@-@-@-@-@>@-@>@-@>@>@>@C+>@C+>@C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+ @|+1@|+1@1@1@*@1@*@*@*@e+*@e+e+e+s+s+s+s+s+D+D+D+D+K+K+K+R+K+R+R+R+L+R+L+x+L+x+x+x+x+f+f+f+1+f+1+r>1+r>r>r>n>n>n>n>i>i>i>1>i>1>b>1>b>b>b>5>5>5>5>6>6>6>]>]>]>]>L;L;L;n;L;n;7;n;7;7;/;/;/;(;/;(;;;;;;;;;W-W-W-X-X-X-N-N-N-N-A-B-A-B-B-o-B-o-p-o-p-p-0-0-0-a-a-a-b-b-<-b-<-[-[-[-[-&-*-&-*-*-=-=-=---a-n>r+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " J+#+#+}+#+}+}+}+}+}+}+[@}+[@}+[@}+[@[@[@[@[@[@d+[@d+[@d+r+d+r+d+r+r+r+r+r+r+&@&@&@&@&@w+&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+|+1@1@1@1@*@*@*@*@*@e+e+e+e+e+s+s+s+D+s+D+K+D+K+D+K+R+K+R+R+R+R+L+L+L+x+L+x+x+x+f+x+f+1+f+1+1+1+r>r>r>r>n>n>n>i>n>i>1>i>1>1>1>b>b>b>b>5>5>5>6>6>6>6>]>]>]>L;]>L;n;n;n;n;7;7;7;/;7;/;(;(;(;(;;;;;;;W-W-W-X-X-X-X-N-N-N-A-A-A-A-B-o-B-o-o-p-p-p-0-0-0-a-a-a-a-b-<-b-<-<-[-[-[-&-&-&-*-*-=-<-6>X+v+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " J+#+}+#+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@d+[@d+[@d+d+d+d+d+d+r+d+r+d+r+&@r+&@r+&@&@&@&@&@&@&@w+w+w+w+w+w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@/@/@/@/@Q+Q+Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@e+*@e+*@e+s+e+s+s+s+s+s+D+D+D+D+K+K+K+R+K+R+R+R+L+R+L+x+L+x+x+x+f+f+f+f+1+1+1+r>1+r>n>r>n>n>n>i>i>i>i>1>i>1>b>1>b>b>b>5>5>5>5>6>6>6>]>6>]>L;L;L;L;n;n;n;7;n;7;/;/;/;/;(;(;(;;;(;;;;;W-W-W-X-X-X-N-N-N-N-A-B-A-B-B-B-o-o-p-o-p-0-0-0-0-a-b-a-b-b-<-<-<-[-[-[-[-&-*-&-W-s+J+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " #+#+#+#+#+}+#+}+#+}+[@}+[@}+[@[@[@[@[@[@d+[@d+[@d+d+d+d+d+r+r+r+r+r+r+r+r+&@r+&@&@&@w+&@w+&@w+w+w+-@w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+/@C+/@C+/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@*@e+e+e+e+e+s+s+s+D+s+D+D+D+K+D+K+R+K+R+R+R+L+L+L+L+L+x+x+x+x+f+f+f+1+f+1+r>1+r>r>r>r>n>n>n>i>n>i>1>i>1>1>1>b>b>b>b>5>5>5>6>6>6>]>]>]>]>L;L;L;n;L;n;7;7;7;7;/;7;/;(;/;(;(;;;;;;;W-;;W-X-X-X-X-N-A-N-A-A-A-B-B-o-B-o-p-p-p-p-0-0-0-a-a-a-a-b-<-b-<-<-[-[-[-A-f+d+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " J+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@d+d+d+d+d+d+d+r+d+r+d+r+r+r+&@r+&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+>@C+C+C+C+C+/@/@/@/@/@Q+Q+Q+Q+Q+X+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+1@|+1@1@1@*@1@*@*@*@e+*@e+s+e+s+e+s+D+s+D+D+D+K+K+K+K+K+R+R+R+R+L+L+L+x+L+x+f+x+f+f+f+f+f+1+1+1+1+r>r>r>n>r>n>i>n>i>i>i>1>1>b>1>b>5>b>5>5>5>6>6>6>6>]>]>]>L;]>L;L;n;n;n;7;n;7;/;7;/;/;(;(;(;;;(;;;W-W-W-W-X-X-X-N-N-N-A-A-B-A-B-o-B-o-o-p-o-p-0-0-0-0-a-b-a-b-b-<-<-<-0-1>C+v+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " J+#+}+#+}+#+}+}+}+}+}+}+[@[@[@[@[@[@[@d+[@d+[@d+d+d+d+d+d+r+r+r+r+r+&@r+&@r+&@&@&@w+&@w+w+w+w+w+w+-@-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @}@ @|+ @|+ @|+1@|+1@1@1@*@1@*@*@*@e+*@e+e+e+s+s+s+s+D+D+D+D+D+K+K+K+R+K+R+L+R+L+R+L+L+L+x+x+x+x+f+f+f+1+f+1+r>1+r>r>r>n>n>n>n>i>i>i>1>i>1>b>1>b>b>b>5>5>5>5>6>5>6>]>]>]>]>L;L;L;n;L;n;7;n;7;7;/;/;/;(;/;(;;;;;;;;;W-W-W-X-X-X-N-N-N-N-A-A-A-B-B-o-B-o-p-o-p-p-0-0-0-a-a-a-b-b-b-n;*@0@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " #+#+}+}+}+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@d+[@d+d+d+r+d+r+d+r+r+r+r+r+r+&@&@&@&@&@w+&@w+&@w+&@w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+|+1@1@1@1@*@*@*@*@*@e+e+e+s+e+s+s+s+D+s+D+D+D+K+D+K+K+K+R+R+R+R+L+L+L+x+L+x+x+x+f+x+f+1+f+1+1+1+r>r>r>r>n>n>n>i>n>i>1>i>1>1>1>1>b>b>b>5>5>5>6>6>6>6>]>]>]>L;]>L;n;n;n;n;7;7;7;/;7;/;(;(;(;(;;;;;;;W-W-W-W-X-X-X-N-N-N-A-A-A-A-B-o-B-o-o-p-p-p-0-0-0-a-a-a-;;K+}+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " J+}+#+}+#+}+}+}+}+}+}+[@}+[@}+[@d+[@d+[@d+d+d+d+d+d+r+d+r+d+r+&@r+&@r+&@r+&@&@&@&@&@w+w+w+w+w+w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@e+*@e+*@e+e+e+s+s+s+s+s+D+D+D+D+K+K+K+R+K+R+R+R+L+R+L+x+L+x+x+x+f+f+f+f+1+1+1+r>1+r>n>r>n>n>n>n>i>i>i>1>i>1>b>1>b>b>b>5>5>5>5>6>6>6>]>6>]>L;L;L;L;n;n;n;7;n;7;/;/;/;/;(;/;(;;;;;;;;;W-W-W-X-X-X-N-N-N-N-A-B-A-B-B-B-o-o-p-o-p-0-0-0-N-f+w+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " #+}+#+}+}+}+[@}+[@}+[@[@[@[@[@[@d+[@d+[@d+d+d+d+d+r+d+r+r+r+r+r+r+&@r+&@&@&@w+&@w+&@w+w+w+-@w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+C+C+/@C+/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@1@1@*@*@*@*@e+e+e+e+e+s+s+s+D+s+D+D+D+K+D+K+R+K+R+R+R+L+L+L+L+L+x+x+x+x+f+f+f+1+f+1+1+1+r>r>r>r>n>n>n>i>n>i>1>i>1>1>1>b>b>b>b>5>5>5>6>6>6>]>]>]>]>L;L;L;n;L;n;n;7;7;7;/;7;/;(;/;(;(;;;;;;;W-;;W-X-X-X-X-N-A-N-A-A-A-B-B-o-B-o-p-p-p-o-5>}@v+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " #+}+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@[@d+d+d+d+d+d+r+d+r+d+r+r+r+&@r+&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@>@-@>@-@>@-@>@>@>@C+>@C+C+C+/@C+/@/@/@/@/@Q+Q+Q+Q+Q+X+X+X+X+X+X+}@}@}@}@}@ @ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+*@e+s+e+s+e+s+D+s+D+D+D+K+K+K+K+K+R+R+R+R+L+L+L+x+L+x+x+x+f+f+f+f+1+1+1+1+1+r>r>r>n>r>n>i>n>i>i>i>1>1>b>1>b>5>b>5>5>5>6>6>6>6>]>6>]>L;]>L;L;n;n;n;7;n;7;/;7;/;/;(;(;(;;;(;;;W-W-W-W-X-X-X-N-N-N-A-A-B-A-B-B-B-o-o-7;e+#+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " }+#+}+}+}+}+}+}+}+[@[@[@[@[@[@d+[@d+[@d+d+d+d+d+d+r+r+r+r+r+&@r+&@r+&@&@&@w+&@w+w+w+w+w+w+w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+X+Q+X+Q+X+X+X+}@X+}@X+}@ @}@ @}@ @|+ @|+ @|+1@|+1@1@1@*@1@*@*@*@e+e+e+e+e+s+s+s+s+D+D+D+D+D+K+D+K+R+K+R+R+R+L+R+L+L+L+x+x+x+x+f+f+f+1+f+1+r>1+r>r>r>n>n>n>n>i>i>i>1>i>1>b>1>b>b>b>b>5>5>5>6>5>6>]>]>]>]>L;L;L;n;L;n;7;7;7;7;/;/;/;(;/;(;;;;;;;;;W-W-W-X-X-X-X-N-N-N-A-A-A-B-B-W-x+&@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " #+}+}+}+}+}+[@}+[@}+[@[@[@[@[@[@d+[@d+d+d+r+d+r+d+r+r+r+r+r+r+&@&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+/@/@/@/@/@Q+Q+Q+Q+Q+Q+Q+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+|+1@1@1@1@*@*@*@*@*@e+e+e+s+e+s+e+s+D+s+D+D+D+K+D+K+K+K+R+R+R+R+L+L+L+x+L+x+f+x+f+x+f+1+f+1+1+1+r>r>r>r>n>n>n>i>n>i>i>i>1>1>1>1>b>5>b>5>5>5>6>6>6>6>]>]>]>L;]>L;n;n;n;n;7;7;7;/;7;/;(;(;(;(;;;(;;;W-W-W-W-X-X-X-N-N-N-A-A-X-n>Q+v+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " #+}+}+}+}+}+}+[@}+[@}+[@d+[@d+[@d+d+d+d+d+d+r+d+r+d+r+r+r+&@r+&@r+&@&@&@&@&@w+w+w+w+w+w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+*@e+e+e+s+s+s+s+s+D+D+D+D+K+K+K+R+K+R+R+R+L+R+L+x+L+x+x+x+f+f+f+f+1+1+1+r>1+r>r>r>n>n>n>n>i>i>i>1>i>1>b>1>b>b>b>5>5>5>5>6>6>6>]>6>]>L;L;L;L;n;n;n;7;n;7;7;/;/;/;(;/;(;;;;;;;;;W-W-W-X-X-X-N-N-N-]>|+0@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " #+}+}+[@}+[@}+[@[@[@[@[@[@d+[@d+[@d+[@d+r+d+r+d+r+r+r+r+r+r+&@r+&@&@&@w+&@w+&@w+w+w+-@w+-@-@-@-@-@-@>@>@>@>@>@>@>@C+C+C+C+C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+|+|+1@1@1@1@1@*@*@*@*@e+e+e+e+e+s+s+s+D+s+D+K+D+K+D+K+R+K+R+R+R+L+L+L+L+L+x+x+x+x+f+x+f+1+f+1+1+1+r>r>r>r>n>n>n>i>n>i>1>i>1>1>1>b>b>b>b>5>5>5>6>6>6>]>]>]>]>L;]>L;n;L;n;n;7;7;7;/;7;/;(;(;(;(;;;;;;;W-;;W-X-X-X-n;K+d+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " }+}+}+}+[@}+[@}+[@}+[@[@[@d+[@d+d+d+d+d+d+r+d+r+d+r+r+r+&@r+&@&@&@&@&@&@w+w+w+w+w+-@w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@/@/@/@/@Q+Q+Q+Q+Q+X+X+X+X+X+}@}@}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+*@e+s+e+s+e+s+D+s+D+D+D+K+K+K+K+K+K+R+R+R+L+R+L+x+L+x+x+x+f+f+f+f+1+1+1+1+1+r>r>r>n>r>n>i>n>i>i>1>1>1>b>1>b>5>b>5>5>5>5>6>6>6>]>6>]>L;L;L;L;n;n;n;7;n;7;/;/;/;/;(;(;(;;;(;;;W-W-W-(;f+-@v+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " #+}+}+[@}+[@[@[@[@[@[@d+[@d+[@d+d+d+d+d+r+r+r+r+r+r+&@r+&@r+&@&@&@w+&@w+&@w+w+w+w+w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+X+Q+X+Q+X+Q+X+}@X+}@X+}@ @}@ @}@ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+e+e+e+e+s+s+s+s+D+s+D+D+D+K+D+K+R+K+R+R+R+L+R+L+L+L+x+x+x+x+f+f+f+1+f+1+r>1+r>r>r>n>n>n>n>i>i>i>1>i>1>1>1>b>b>b>b>5>5>5>6>5>6>]>]>]>]>L;L;L;n;L;n;7;7;7;7;/;/;/;(;/;(;;;;;;;;;b>}@0@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " #+}+[@}+[@}+[@[@[@[@[@[@d+[@d+d+d+r+d+r+d+r+r+r+r+r+r+r+&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+/@/@/@/@/@/@Q+Q+Q+Q+Q+Q+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+1@1@1@1@1@*@*@*@*@*@e+*@e+s+e+s+e+s+D+s+D+D+D+K+D+K+K+K+R+R+R+R+L+L+L+x+L+x+f+x+f+x+f+1+f+1+1+1+1+r>r>r>n>r>n>i>n>i>i>i>1>1>1>1>b>5>b>5>5>5>6>6>6>6>]>]>]>L;]>L;n;n;n;n;7;7;7;/;7;/;/;(;(;(;6>e+[@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " }+}+}+[@}+[@[@[@d+[@d+[@d+d+d+d+d+d+d+d+r+r+r+r+r+&@r+&@r+&@&@&@w+&@w+w+w+w+w+w+-@-@-@-@-@>@-@>@-@>@C+>@C+>@C+>@C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@|+1@*@1@*@*@*@e+*@e+e+e+s+s+s+s+s+D+D+D+D+K+K+K+R+K+R+R+R+L+R+L+x+L+x+x+x+f+f+f+f+1+f+1+r>1+r>r>r>n>n>n>n>i>i>i>1>i>1>b>1>b>b>b>5>5>5>5>6>6>6>]>]>]>L;L;L;L;n;L;n;7;n;7;7;/;/;/;7;K+w+v+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " J+[@}+[@[@[@[@[@[@[@[@d+[@d+[@d+r+d+r+d+r+r+r+r+r+r+&@r+&@&@&@w+&@w+&@w+w+w+-@w+-@-@-@-@-@>@-@>@>@>@>@>@>@C+C+C+C+C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @ @ @|+|+|+|+|+1@1@1@1@*@*@*@*@*@e+e+e+e+e+s+s+s+D+s+D+K+D+K+D+K+R+K+R+R+R+R+L+L+L+x+L+x+x+x+f+x+f+1+f+1+1+1+r>r>r>r>n>n>n>i>n>i>1>i>1>1>1>b>b>b>b>5>6>5>6>6>6>6>]>]>]>L;]>L;n;L;n;n;7;7;7;7;1+X+v+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " #+}+[@}+[@}+[@[@[@d+[@d+d+d+d+d+d+r+d+r+d+r+&@r+&@r+&@&@&@&@&@&@w+w+w+w+w+w+w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@/@/@/@/@Q+Q+Q+Q+Q+X+X+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@e+*@e+*@e+s+e+s+s+s+D+s+D+D+D+D+K+K+K+K+K+R+R+R+L+R+L+x+L+x+x+x+f+f+f+f+1+1+1+r>1+r>n>r>n>n>n>i>i>i>i>1>i>1>b>1>b>b>b>5>5>5>5>6>6>6>]>6>]>L;L;L;L;n;n;n;7;i>|+#+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " #+[@[@[@[@[@[@d+[@d+[@d+d+d+d+d+r+r+r+r+r+r+&@r+&@r+&@&@&@w+&@w+&@w+w+w+w+w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@X+}@ @}@ @}@ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+e+e+e+e+e+s+s+s+D+s+D+D+D+K+D+K+R+K+R+R+R+L+L+L+L+L+x+x+x+x+f+f+f+1+f+1+r>1+r>r>r>r>n>n>n>i>n>i>1>i>1>1>1>b>b>b>b>5>5>5>6>6>6>]>]>]>]>L;L;L;n;5>D+r+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " }+}+[@[@[@[@[@[@d+d+d+d+d+r+d+r+d+r+d+r+r+r+&@r+&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+C+/@/@/@/@/@Q+Q+Q+Q+Q+Q+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+1@1@1@1@1@*@1@*@*@*@e+*@e+s+e+s+e+s+D+s+D+D+D+K+K+K+K+K+R+R+R+R+L+L+L+x+L+x+f+x+f+f+f+f+f+1+1+1+1+r>r>r>n>r>n>i>n>i>i>i>1>1>1>1>b>5>b>5>5>5>6>6>6>6>]>]>]>L;6>L+C+v+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " J+[@[@[@d+[@d+[@d+[@d+d+d+d+d+d+r+r+r+r+r+&@r+&@r+&@&@&@w+&@w+w+w+w+w+w+-@-@-@-@-@>@-@>@-@>@>@>@C+>@C+>@C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+ @|+1@|+1@1@1@*@1@*@*@*@e+*@e+e+e+s+s+s+s+s+D+D+D+D+K+K+K+R+K+R+L+R+L+R+L+L+L+x+x+x+x+f+f+f+1+f+1+r>1+r>r>r>n>n>n>n>i>i>i>1>i>1>b>1>b>b>b>5>5>5>5>6>6>6>]>]>1+X+J+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " [@[@[@[@[@[@d+[@d+[@d+r+d+r+d+r+r+r+r+r+r+&@&@&@&@&@w+&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+|+1@1@1@1@*@*@*@*@*@e+e+e+e+e+s+s+s+D+s+D+K+D+K+D+K+K+K+R+R+R+R+L+L+L+x+L+x+x+x+f+x+f+1+f+1+1+1+r>r>r>r>n>n>n>i>n>i>1>i>1>1>1>1>b>b>b>5>5>5>6>6>i>*@d+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " J+[@d+[@d+[@d+d+d+d+d+d+r+d+r+d+r+&@r+&@r+&@&@&@&@&@&@&@w+w+w+w+w+w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@/@/@/@/@Q+Q+Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@e+*@e+*@e+s+e+s+s+s+s+s+D+D+D+D+K+K+K+R+K+R+R+R+L+R+L+x+L+x+x+x+f+f+f+f+1+1+1+r>1+r>n>r>n>n>n>n>i>i>i>1>i>1>b>1>b>b>b>5>5>b>D+-@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " #+[@[@d+[@d+[@d+d+d+d+d+r+r+r+r+r+r+r+r+&@r+&@&@&@w+&@w+&@w+w+w+-@w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+/@C+/@C+/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@*@e+e+e+e+e+s+s+s+D+s+D+D+D+K+D+K+R+K+R+R+R+L+L+L+L+L+x+x+x+x+f+f+f+1+f+1+1+1+r>r>r>r>n>n>n>i>n>i>1>i>1>1>1>b>b>b>x+/@0@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " [@[@[@[@d+d+d+d+d+d+r+d+r+d+r+r+r+&@r+&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+>@C+C+C+C+C+/@/@/@/@/@Q+Q+Q+Q+Q+X+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+1@|+1@1@1@*@1@*@*@*@e+*@e+s+e+s+e+s+D+s+D+D+D+K+K+K+K+K+R+R+R+R+L+L+L+x+L+x+x+x+f+f+f+f+f+1+1+1+1+r>r>r>n>r>n>i>n>i>i>i>1>1>b>1+|+}+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " [@d+[@d+[@d+d+d+d+d+d+r+r+r+r+r+&@r+&@r+&@&@&@w+&@w+w+w+w+w+w+-@-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @}@ @|+ @|+ @|+1@|+1@1@1@*@1@*@*@*@e+*@e+e+e+s+s+s+s+D+D+D+D+D+K+K+K+R+K+R+R+R+L+R+L+L+L+x+x+x+x+f+f+f+1+f+1+r>1+r>r>r>n>n>n>n>i>i>i>1>r>*@r+v+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " }+[@d+[@d+d+d+r+d+r+d+r+r+r+r+r+r+&@&@&@&@&@w+&@w+&@w+&@w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+|+1@1@1@1@*@*@*@*@*@e+e+e+s+e+s+s+s+D+s+D+D+D+K+D+K+K+K+R+R+R+R+L+L+L+x+L+x+x+x+f+x+f+1+f+1+1+1+r>r>r>r>n>n>n>i>n>R+C+0@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " [@d+d+d+d+d+d+r+d+r+d+r+&@r+&@r+&@r+&@&@&@&@&@w+w+w+w+w+w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@e+*@e+*@e+e+e+s+s+s+s+s+D+D+D+D+K+K+K+R+K+R+R+R+L+R+L+x+L+x+x+x+f+f+f+f+1+1+1+r>1+r>r>r>n>n>L+X+#+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " }+[@d+[@d+r+d+r+d+r+r+r+r+r+r+&@r+&@&@&@w+&@w+&@w+w+w+-@w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+C+C+/@C+/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@1@1@*@*@*@*@e+e+e+e+e+s+s+s+D+s+D+D+D+K+D+K+R+K+R+R+R+L+L+L+L+L+x+x+x+x+f+x+f+1+f+1+1+1+r>r>f+|+d+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " [@d+d+d+d+r+d+r+d+r+r+r+&@r+&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@>@-@>@-@>@-@>@>@>@C+>@C+C+C+/@C+/@/@/@/@/@Q+Q+Q+Q+Q+X+X+X+X+X+X+}@}@}@}@}@ @ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+*@e+s+e+s+e+s+D+s+D+D+D+K+K+K+K+K+R+R+R+R+L+R+L+x+L+x+x+x+f+f+f+f+1+1+1+1+e+-@v+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " [@d+d+d+d+d+r+r+r+r+r+&@r+&@r+&@&@&@w+&@w+&@w+w+w+w+w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+X+Q+X+Q+X+X+X+}@X+}@X+}@ @}@ @}@ @|+ @|+ @|+1@|+1@1@1@*@1@*@*@*@e+e+e+e+e+s+s+s+s+D+D+D+D+D+K+D+K+R+K+R+R+R+L+R+L+L+L+x+x+x+x+f+f+f+1+D+/@J+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " }+d+r+d+r+d+r+r+r+r+r+r+&@&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+/@/@/@/@/@Q+Q+Q+Q+Q+Q+Q+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+|+1@1@1@1@*@*@*@*@*@e+e+e+s+e+s+e+s+D+s+D+D+D+K+D+K+K+K+R+R+R+R+L+L+L+x+L+x+f+x+f+K+X+}+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " [@d+d+d+r+d+r+r+r+&@r+&@r+&@&@&@&@&@w+w+w+w+w+w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+*@e+e+e+s+s+s+s+s+D+D+D+D+K+K+K+R+K+R+R+R+L+R+L+x+L+x+L+|+w+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " [@[@r+d+r+r+r+r+r+r+&@r+&@&@&@w+&@w+&@w+w+w+-@w+-@-@-@-@-@-@>@>@>@>@>@>@>@C+C+C+C+C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+|+|+1@1@1@1@1@*@*@*@*@e+e+e+e+e+s+s+s+D+s+D+K+D+K+D+K+R+K+R+R+R+L+L+L+L+*@>@0@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " d+d+r+d+r+r+r+&@r+&@&@&@&@&@&@w+w+w+w+w+-@w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@/@/@/@/@Q+Q+Q+Q+Q+X+X+X+X+X+}@}@}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@e+*@e+*@e+s+e+s+s+s+D+s+D+D+D+K+K+K+K+K+K+R+R+R+D+Q+#+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " [@r+r+r+r+r+&@r+&@r+&@r+&@w+&@w+&@w+w+w+w+w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+X+Q+X+Q+X+Q+X+}@X+}@X+}@ @}@ @}@ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+e+e+e+e+s+s+s+s+D+s+D+D+D+K+D+K+R+K+R+}@r+v+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " d+d+r+r+r+r+r+&@&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+/@/@/@/@/@/@Q+Q+Q+Q+Q+Q+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+1@1@1@1@1@*@*@*@*@*@e+*@e+s+e+s+e+s+D+s+D+D+D+K+D+K+1@w+0@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " d+r+r+&@r+&@r+&@&@&@w+&@w+w+w+w+w+w+-@-@-@-@-@>@-@>@-@>@C+>@C+>@C+>@C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+*@e+e+e+s+s+s+s+s+D+D+D+1@>@J+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " [@d+r+r+&@r+&@&@&@w+&@w+&@w+w+w+-@w+-@-@-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @ @ @|+|+|+|+|+1@1@1@1@*@*@*@*@*@e+e+e+e+e+s+s+s+D+*@X+[@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " [@&@r+&@&@&@&@&@&@&@w+w+w+w+w+w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@/@/@/@/@Q+Q+Q+Q+Q+X+X+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@|+1@1@1@*@1@*@e+*@e+*@e+s+e+s+s+ @w+v+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " d+&@r+&@&@&@w+&@w+&@w+w+w+w+w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@X+}@ @}@ @}@ @|+ @|+|+|+1@|+1@1@1@*@1@*@*@*@e+e+e+e+ @-@J+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " [@r+&@&@&@&@&@w+&@w+w+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+C+/@/@/@/@/@Q+Q+Q+Q+Q+Q+X+X+X+X+X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+1@1@1@1@1@*@1@*@*@*@*@>@[@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " d+&@&@&@w+&@w+w+w+w+w+w+-@-@-@-@-@>@-@>@-@>@>@>@C+>@C+>@C+/@C+/@C+/@Q+/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+ @|+1@|+1@1@1@*@1@1@Q+d+v+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " r+&@w+&@w+&@w+&@w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@}@}@ @ @ @ @ @|+|+|+|+|+1@1@1@X+w+0@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " [@r+&@&@w+w+w+w+w+w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@/@/@/@/@Q+Q+Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+|+1@}@>@#+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " r+&@w+&@w+w+w+-@w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+/@C+/@C+/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@X+}@}@}@ @}@ @ @ @|+ @|+|+/@d+v+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " r+&@w+w+w+-@w+-@w+-@>@-@>@-@>@-@>@>@>@C+>@C+C+C+C+C+/@/@/@/@/@Q+Q+Q+Q+Q+X+X+X+X+X+X+}@}@}@}@}@ @ @ @ @/@&@v+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " r+w+w+w+w+w+-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@Q+X+Q+X+Q+X+X+X+}@X+}@}@}@ @}@X+w+J+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " r+w+-@w+-@w+-@-@-@>@-@>@>@>@>@>@C+C+C+C+C+C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+X+X+}@}@}@-@#+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " r+w+-@w+-@-@-@>@-@>@-@>@C+>@C+>@C+C+C+/@C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+X+X+}@C+d+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " &@-@-@-@-@-@-@>@>@>@>@>@C+>@C+C+C+C+C+/@/@/@/@/@Q+/@Q+Q+Q+X+Q+X+Q+r+J+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " &@-@-@-@>@-@>@-@>@>@>@C+>@C+C+C+/@C+/@/@/@/@/@Q+Q+Q+Q+Q+w+#+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " w+-@-@-@>@>@>@>@>@C+>@C+C+C+/@C+/@C+/@Q+/@Q+/@>@[@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " r+>@-@>@>@>@>@>@C+C+C+C+C+C+/@/@/@/@>@d+0@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " &@>@-@>@C+>@C+>@C+>@C+/@C+C+r+J+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " &@>@>@>@>@>@C+C+C+w+}+v+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " &@>@>@C+w+[@0@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " &@J+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "}; wiRedPanda-4.1.12/app/resources/input/000077500000000000000000000000001444020206400175425ustar00rootroot00000000000000wiRedPanda-4.1.12/app/resources/input/0.svg000066400000000000000000000167371444020206400204400ustar00rootroot00000000000000 image/svg+xml     wiRedPanda-4.1.12/app/resources/input/1.svg000066400000000000000000000130701444020206400204240ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/input/buttonOff.svg000066400000000000000000000064101444020206400222320ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/input/buttonOn.svg000066400000000000000000000073351444020206400221030ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/input/clock0.svg000066400000000000000000000126421444020206400214430ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/input/clock1.svg000066400000000000000000000124771444020206400214520ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/input/input.qrc000066400000000000000000000007101444020206400214060ustar00rootroot00000000000000 0.svg 1.svg buttonOff.svg buttonOn.svg clock0.svg clock1.svg input.qrc switchOff.svg switchOn.svg rotary.svg rotary_arrow.svg rotary_icon.svg wiRedPanda-4.1.12/app/resources/input/rotary.svg000066400000000000000000000116011444020206400216020ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/input/rotary_arrow.svg000066400000000000000000000055001444020206400230150ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/input/rotary_icon.svg000066400000000000000000000246771444020206400226330ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/input/switchOff.svg000066400000000000000000000070321444020206400222210ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/input/switchOn.svg000066400000000000000000000101761444020206400220660ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/inspiration.jpg000066400000000000000000001170161444020206400214520ustar00rootroot00000000000000JFIF    ++&.%#%.&D5//5DNB>BN_UU_wqw    ++&.%#%.&D5//5DNB>BN_UU_wqw% "4 zO.z,qN k$$ kt4K;KNjiJ f4.DBb-nWN9؅U9EL2Eh Be+H$Hh54c6*e5e E{otf~)גK'auf<[oO⾇zyQ?BtwW7O6?Y"X̥>>=J}>==9KHEd]UצjUmkL^i҃tGDNe}:V^xUZ\8X$J^MdP;3>Vw]f̓qt[ߜg'~~?UxuO_Q76>f/}'z*qꮼ/ |)ώ|9|* l+:yv׳&վTCY1.1fn ;k1Z1rE$@) *WZd;>_*\W*ʫ;s=pzEM+=Y_=~_7|yd35>/_[f8utu/N? ~j;?G:l[{fåa?;g0̗6;V^jlVVYeiJ쪻@, >u!0ʕpmLm|35qY7wKOseo_|Uycwz\zuoeg}IiO|o5a}9{9ҝ~[n߻IE~/wu`kl^V;Ae 9LŤ3<)rX/ #Q]g˻Hw=^KHqPNdt6f mfIKjilݜ}GE{|x}j}\4d:sv{q5x~<_Qk=rV:jVn#%W}G2ݷ|}]]|gSG3Ltla#c)K ɵ.ΚUJuשm[Idlsqkl?W{Ѻifz*z-D[ʕm|᮵|/{/u_<~>y7ђS&;z-wNm:kh޳g+4ꯠOfg%(}I[1!M:󧼺ZUM6UUT:Zf~]ej@(:ܞ/r5UedhͳTUUX+DbMB56kougcrߎ9yLfph}t㟵rݣEz:yu8㧠U.Mi藫*Y̲7gqyѳ&Vb-VP2( NaǿD2 v~>NEdf[kjWik 6WqzN-׏c&o7q'w.1<=|o3j=pN\7pȼژ;9uoXZ6_^=>/?}rÃ߆?}~V멻Ķj&fXU1sU:j2YkW5y}N]2nO[R.[[>h٬Uj;E|\[գ6cM}p_?|o]^]^2~鲕mfh:==lNӿ.׆t㳹yf';?7OCӇ*ׅP$[۫,k%km%KJAiDIEJ.n#zג :/al=gwj晸'X&Yj_\\;\X:Cn|^j5QnŴ[eٝ[C:>|piu}?uu|;g:}?|+>z|Pz,/ߙu@56|՚׍EluU&{sY^vFK $qw#əŨy[.dk\]Dߟ=DQȝp )rz_%61."=1dS_F83_s][s^=8:>:kd-?V>_YY^nz?R~eJ/F:߲xԼv<g[X&&+nVk@Rf%9tN~^쮭c]IÖ؋PMedȥ)"ؓr$iUވR!5SSm^;wuէ(MN秉/Kӹ{_|z~o94Sk=k7OVTjfHelUj3BQ.P,+V[&Է&a9v.oCKscCkΩ1[3ztj2jݮ|MyְL+nb%nb ij&o {ZvBȪn sZW o +9(4K-(Wd̶ݙk|tӕAmѝtkz>w5oչ_:g_a>'O.͟e/\/>C~?uW٧Ml[F Zkmu)~u#9S&!+ jd[59tj˫=^etR&d+a%Ղ]{(Y%s5e w -lenol^ۏ窄bIӑ~Wνkwzw\'y|65;^!h*KPEkPb`֙i L;qt2@$Ĵ#,(W1lD0 D*̕ؤ~{s5ɫVzNƱ~NuWI34v9W齧9uzYuTMiٟnuEV!M %gZHJڪ%]EUdql ,10@@LĭLCDŀLA0$ 3HXԚe@ fɾE6+[wZ3[re!&RkZZD"aU*dm,u~`Dǯ&L0DȡĄC!4Ē!DėTDs7Tmŧ1unK]qѝ1"͒2*e6%6RLMV)Yu7kC+%VUqNm @eV@Y$Pe$B !fiiA mJZ/et3Zwfw:̭L28"*Qb"%h赣TSs 5hyajZslŒ 0(CLHDH$"0),-dH́!) %ql%Izzb "0)!ȣAם߮8ӱ+-d<"YYZ*EUeq]vW-u][TWrk(5<3USu[-M\qh$ *@4@LI$bY,  (<4@0BX*Y @4@I$U՛^7tgO-fl5h"r -oVlVVku7[u6cM87a&& be$&& &  , &;Uqh[˖&**zzćIRSY.w+b#1ivB:Ms6U&$"`!$ $eA$VȲpW-nά^-eͪ5J D@T#%%v!UwUbD=;6N`YS+bדPPKV9ݙ*Ȭ,°q qDaA@q(]6flݖ{)ܒ:iΊWN`^8M)BYzT%(˵R>fZ[i样%`j|LxOƴ}ow<ϳqzObŋ!l?>b1LJ~S/ֵ,P VEvTԶ/z>hѮ!?@A(P_k5(zE߅O`2287+jjZqê=lCێx0*!071,P*(O/3YFG7}5 a%mol+;2ֹlvX~:k'_߉r#<9/GdxxWT@0ҁ**Q:1Q5޻íөBR: ay=2Xen%ȵp-6UÒ2Zd^s53*K,s*}c\UBS@-sX7704$V#l8XӾ|Ls m")|;Sn&wc`Q7rr\ʹz01ʺI%+cՌ;;c" a 0h6D cʄdU69GW*fr-i˷8VG/fmƝ*w6n 2j/Ʒȸo 0ttuul]A$_M %@#M53~ӀY\+c X_2ˡB\Y#7+~~*qt`{WN;uŻ|{" ض-cX`$HI$}ɯ[]jFNƮX-xk9>7+#&܋r͹ro7չ).Dɯ!5ߏ^6>OOwU Y"ĉ$Oo[X!PdCl:Kٔ|Lϵ5Co|^'≽ɺ?/NO"q6Z1ׇ8Y(Y0^;v/Uh3@,@% bv_n[GfM>%RSGz)ᯏxAE݃ɾF]:Rd'$Mn?qٴݏn G/  1Of-5x'AH/uC$bTVİZ[l?y2 bKj5f8*989N/vO$+`5 @aՁ؆VI?}5alSƪNUYWt18\!W+6w=;yFeyU?N@2Z3j{kEW&'dWBꫠ{3D00 c`Żv5-_;Az]V멋YZ h+|ѹ +NwU (MLJN50tPl9w÷N3b >fhL0͆ ֡OؕkѢ,U 9'իDzjc+Aj$,l^c/i4 n5)_'sU_#&>P!,va? ;AHZ!zy%ޫQb@,C1a?~ TVB]^ܶNGu97-31 c@ Iߣ & a;31$3A4H%Cmz\rP$ Kܳ|rɋi9a]g7/ɣ/\U+kza!FЂf7ܾ ؀fXa} }Ӿݫ+qZOCHعc+ˌ9TN0 hѡц}>7buf>'րL{PM1mJ{X09\+8N]JlګX@NN1˓0`gjhM&R`1B .!*4*Q)dSid: a@Db $ ن$@Bc}c-~.սs?'{+AX@&$$'ВDX=aL'~erBgq<@M0z$Ib}afa' &>v#?싌ǗY$ _KcF?BZB,0>f w-+#D{} h},X=e5$> C4D0I0,h ?M4T A}T $ϡ>oF40 $,XF4oZc7{ֵ5 ,0ZFaab#Fަ^5ZkBk@k^0WYkSS^֠= 'lLc 0ҪhC kc{}o{ه빲}o{"BIbI0vaI&"A,|djk_bD׮O 0 0XA$!?jkZ# ,>acz0 >,z$Ƅ:ֵ}PD/ %kFa40`ѡA&B ,X$Z40 0Mc{쪢؇,H*{v$} 0;*F (Dv߳ 0gQ,圓w~'w߿~ݻv۷nݻv۷nݻvX/?9C_Manݻw>O~O㹸9/k' + 3xx j-FO9|/!>ew5X7q~gr7go8Qr\ws-txټo'3QebSOMs+߀]oM !1AQa"q2R#Bb @Pr03`$Ccs%Sp?^ z P(%(P(t;PB  (@?ȴ΍Z~;O&M?Ԛ~ ݘ S( m MmjF-"(Н=E,ɘrUǭb-D:֔ lF+=ryc*Ze+NRJ`@Z?;Q7WIʦVIt Wa嵼aK􀯙WJ.w/2m,)‡߹mjETxڈވ 0Ub4? ⯽| y/D[]pF []yդ'(>k V@*|dQtwޏ4.3kw A4Öclc\K.͵YÉ+t,8k#!mB %"wC1~F>kl5*-U#PpZ Z36an)w QH.65!kVH7Q%ס N%x99݇b br 5pY`c⊱SC*^pMuҾQZK !/ƮJ774$ߵmW GJޮ*׭Ej~CU.V 1ڈsϭ]kP$1W@/teܓV`k΍]W]:ն+,zSM X@V[u),W\1Ώ 븭O/ZUC5Z3Q Cξ~j [θHV[PĀn,I {W h^كȕ9~6!Y|6%mrG%&<^\Foڡ%T6TI+@:~qE!2hV@o/`M' 5TnAտzVe]憠w"4L/RrH6;?|fn9߭c8\؄*]$PzOE::PRM!9KO,k|"uK &pGzQO@,otKIRFeK&B6Kp7K,kV7VC+A"F^f)#M#'p`|.mc` UEe9 `1ʜ :RB?>@oqc5J'7R\ ^=:^OQE27Ue:4XV؎cUtAC90=κV#PDx\;Js-N#9w*3vIN,5ku#m{R(rmJ$1ar>O^+f4`իd7vs{fK+3džrG潹enLTfB *:8"*lO:$@4/aΘy&sA>֑vWm$rFI@.R #}7uRv+B*\!uJ!RDnPs>p%ab:[M C{c\I܅5d3XGaj)S#afSnMڗfPra_x7#I k충bP4kg$RB╃_2؆G u(%}1؟qh.=k2#lES@ !3F$5J<,PL;TԘwZ)+Q}btu27 ֱ?=2BW`# Na3#E)DoЍk9ms709jb`o.cQSā:fOHxl׾TFێ`_aB5C u.Y `8L^ DXՕהy*~XwUa& Qg;mL@"nP7 zNkqom4w?qH fi u;Z~4 (0`VwnN"qowmΟ5│hwӿn- ؁=j,:2KX͋1JpQh oXDn\XK1Jjᱭ *~(apiRNdv&h:tUr2gY_ԎA"vhg*Zl2`1@x2 9MP'- Jt*HW:#HSDt K0lj 5˥:+[^\kYѕ`>S: +S Mih1Vқ[#Թ^ԎG3 rsO-fSoo܏ֲX~MQ XT.fx__Bєt6kPQ7_XB1Q+db kŽx1ZyU$a` ;2#5LsQKuq.x&0_߾±8b7U}r6za|XqQ%!èTAbxFAFW:Be5 fjh`1?:gD~P2JUB7CƲ7!O EF2Fe.tqIG]o1]֎8aR"Dd avZ"X9|9.캎w3&6O vH۪񞄊\DKP"=n ~qNWF+KWh!vF? O ;%I=O{@ҮNKi sNM;R Oh`ޗ4~EU {ڝ 606#MwԤAy@])H7`:Tȸ괮:-oH" [K5۵)o0ߧ:V![<\ f3Dtjx/W:F6C X#霚Y|- }:6Y+ # *BM;u5/KoP$ź)ؐ:t7\Tw^\*->5oF| sb&{SSkoI4B3PEEHY r$b6FYNՈal4Q9|jҙ##BuQm-^D'e60Fw[:W U.QxQʽJ:Xy2q$|kWlaBi` lZDQ1NmBB. zYM>ðk_}PÝ&(?se%uZE  +2M.d9[wⳫUe9B55aCV+S| :¡C*;N"QeaaǮ2|>VT{l@ѿJO:xa"9֟1@w),~c /\*%fʈlmscH?qH)TXіg{lRMoZX\Gcl6`¸r麝e u;%TECHOY{6q.&$jOZ_3_iZmނQ# <QQ\QZC{F:$Bi7SO8 }&AcYZӡ:P[[cCҬ VV>@1t)@ yvV:8AcrC±V,JW0feRf$) bK3Fj3Cp*a$oJBE^Fȷbr{TXX(S\&dn5p&9e^ʹ߾s`;U`I,B<Ԙ:٤=F]bW`:Qw0˖E<6'JipX(TA\7&UBW![ q24bꉜNH*6*-RG/*u/֖Hy1i4&hrAGxբɇvm :K uMQ%\K\F gO{'/A'XGQ$u k   -IPxQM/' K$RGGW7[E9?F鱸>WT呑a`n|v3(YQŕ}=6nhE9ibbgR,р$@O r$I//'_(ȃGz< \\y$cٗTpk9340641Ѷ=or*v7_#}t?qwDysҢc֡˜h6"+o"}ԷJH;3kA[b#E˯1}0+le8UR-R6f)=XrQ F2R]XiЊl$lO;GCt)a%-pχ$ej.FccpŪ#rč 3x6[=Φa3Ls)UUڣe a`P.LbKFqp]vܕp~dn`Ev`w9w#`c `83a Jp1 X. ?Έ{ x 0%BC n!)P`6W(V Cj B賢̈́tgTF:ب9n*O> 0#nkX.F ?Foۭ\F"pRR"5s#ˊ* Ub`oEKqIm!2T4{.Y7qXChB7md٨ q'/"X'k%bʍ"ĿQeH2{x3}e`yڋ'-iF&p }aq0# 4S[:C3~F2?xFidErN0meH1Da慵B̽3h(L69 'ƺe݅ߛJEՐ6A0zڞ9"ݦQG q֣oD[V[+ƸqqCt'fIKֱK޸c2@$Q#.f,#BPf jByù-5D| 3]3E,F[q#Nȭ`Ke)|Q QM~ڰ6G<0rq$7al .bjA#*zc9p Xs fԖr:QQoB? (}X=iMH_sKrЊV۰Z ,muW;f7'Qpv|ޙoJ;#mnt[F-(=z_q찹 .:n(8=t ҅Ԅ65g .t VJ@Sl7R5\Ti Bbٽ*hoCjF.0€@z ` reЀ5*)v!]G!XQ)|[ʰʱ:.U/&2bFH+ݽPiIfaqr;<_ATow чvnV7x߳’9Ō1>.BMpP6M V8\b#*^"BÁ!7où_rX= YsEnk+=k$ln&XXfLY<^KM+}7:23nɸƸp,d2Ea< gB~XeϹhs#0Xa uUFwF uM-K B2.I=ʾRH`Rqxh6*78},1J } (}M< Y׾nLF|TêЁ+{hRй>Vdg,O iU0̹o"#|~y@*h%B%+hASk-4ho`M) ǽLF{|(s{ԫCaP2B[tK#"QSʹ.T[ͯđW>^w5Kt]W!K "V"#6EצVPE+["_/Pk\(rc$oCo1 H .)yLПR`@F6&+Fs-.5QKB!$Q/\c}ZwY8RVdeU^1PXIAt^2FkM*YzX؃Xfp>9Sg(gM2/Reb\D9]P09݀'5g!D'wRēca"лbW?Vf%Wqѱ8=Yv P%$⋣Xپ"YB1N&Ap(x|YC2]9&r~7o / $pn}sP?6 =rؤ,9~I 89/i( ,Eq|4(9R( ʀbrhf[S<\6 UPBZE;PX4nReY4uu&|E ՎmZQ`G:H,S6!2cb̏k9Ҧ(3W!S@!>`rXn%lv p$X%#l4ü+ѭ49tuNہDam:.6>9B;ג뙀~ua<~4$AĢMF/h"pP#E_:(1eh]\/մ0=?H^Ҩ\򟎿^YN6[z) HI$RH[oZXc7⵷7M3z}Z]ى]Tz\Q.4ڈRsC})TޜXn=*2.[.SatY(ѵxXKVE؊"lV4 BU25=UMFI or$F*4$ }B0̐i@&!~ꣲڗ2g-Kw?]u9:/jhcBJxtxDX+xw*j e6y+8p5$   "`Aԍ+=᳴Dv`2]%[AC<<ؔ;x3*DM9AgJÇ,I#HF(ަ{4ñV1 wV e$? GrDn,-{q=h|Wyd_T7u2~*&$MurIexV &!›cKsy>[RwQjR06cDYlsffs5-+N0om, !TNj ?aB"Ϧn*~n3nD6,I KђYuRo^x=r@;e`F$@}nz s3# EWTBAfrlHzې֜⭅IxX: 6ć&bѴ+*`bKa|o鰹X!i&L'"v n#" ьq2!`Nsw IrJ{MO5"C/Px9HHc/e&OkK\;d:kqXdGAUnKgN l:rdIߚ kՅNq/D:ATTl.ua\1rTS1R--[3p\6EBU-ZjZ\&Eʢ&g#pļ+V|ei,[)C#tf 乬/'O!K2K+a:1^De 3:z5wφ F2ş Uo!lй"f3)3af@tN-cx'8&:iU"!hXhKف=AHtns VRxVLx4NU|dJTsD!wSRJT$Sٟz{?Iu׭9ǛwO^_ %TFu).V/1Xm,ȇn+L 2dtg$Ek,qj٥K-\+9IK<.Hc @bofPX ]*93XfeYj^܇A}(1,=)~`h/b 3R7X[g?,2K,gňo1󧭫op!1`t̮(aA,|˗ip [I$#`͗I|g;_36x#@($K#.toq`2:faW5$ M~liK|.:/P8ŘyߙҳXE=Z#8Gigy>]- rN9_4NIE~ùpba, <$]%3 l2FWu_"#j fT6׍uD?V!}G4)|1.^GrHJLNHӈƑ,e8DQ 2nf ~mr/<͖> 7?u Tؐ,PC!gEzM`ebqxK[`,_)fzx0x2T$ŀZXpY0\2@}Q&Ck 2? l<"{4> 6FۡD;v+P^,^`D|X C@.4䯕oRxE$^EX8{"_ t+j? J+:9-p| bGLV,7eӨj3 A!”֯!pڜc}\_Ou4(mILd;_y I#Fg n#ORI@, {mZ *BԀFJ D{,jMSNPn ǵAD[ ԚI˥B穦a+=فak~BejT!mX*U.orr"Q|ves&q]!Qf*h.\|s_7d0a6r;و>Upa6xFɫ(.Ͱ˥^?bR-B  B_=MF}@s=9EB6Dw=\}N:a Q@QC>.W#;76l)2κ,[9VK{|kVhC;'JV1!w4&V nEG#2Vş+n:=*#"7`EUbyG!Ex#KQwg |8%Usu4agB[G pߖCq[\_qnKk,V;D ;4bY7 mqYUN'eƶǑ5ՏT0\!3a ys\.VrMŦd1<2 C;R!6| F۷bz D>jsieS{2ODRˉ1ڠ"[@w@sjנ:0U★cpA?履|lIomjc ^"RF`I]Hxaq+^:VܓQԚ/\ky+pf^mVO*[π,>* ZH2:ie>U5/A`o4V0NE;;{6l3)A lO|C0 oQTk/7eM3],Xr(&RZВ-+羦dfw.{7Rd26]}(<-yğңv<ɹ5&+ȹ<1^A8g0W8YlԂ@q͆yʆ\D j\wglv#.,8kIw5I,"c$Z婴 pOp j:.wSYT[RERb@ Q}lZ…ny^ytz M|M>˶édoaYU9GAvBQ`y ac\*ۙ X=|p u|*z̝Aa<=8 ړr E(H].At' M(Um Qu,P5فJH3-AnRBaN*.{sm E=$Kv1A5#CqL26W,c֝ԫ)*E#pG5r2ݯr{ ,HU`:<ͷZniޔ:RޔUm`={҉`EnD .OOS֭ ڀV+bNӷ^kIy#ch-|lH/Pn4`IsmyV]7m(ڨ?ލ;Q&^vXHԝ9S֙ʋO) ,/*!]ǔ ]mNMm`t9(ؐ9 a6֑mf !6E9Jk{X2IbEyRȬ(V(D3&@fvcb'r0)'27GD h0cX_48gHIfiù~qU7Y\z 2[2};nN^JD`FBp/QD]#$&9]V Q)tW5JYv SOJ 57z^y9ݎp[$XBsOR P&DqLZ 9Ta1OaĄFg`r@5E,U-ٻȮ04VJHs x *IVGCE 9FN/[y@FN iuœѯ"{ԑTRωu|Qfq>C`M@nm -Eh]h9Q2TX[xeu 9#]h5!Sm9SHߠQm m; ΔpMڝtjV6]ӹt{E jI*bBZ\SPܹ o !UGJ#AmIK>Ȝv"7/qzhY}t# ;X v$M dF_<5@/vT ԬD-kuc dC11)-ӞHtA5@'1x "U'dȾiIܦ%DQrܽMc$ .St2;sɢQ%LF)jc,y+`hA>oM>ßW(4Wn,Ç24:fD>iA=䙧o<8%' XTQ&6F[1*nr-F8 q4&'7ѝ2@gҙ/L.d۟m2Ƨ%u5)v(Gsm&__5Bl:Ђ2C dVRΥ'dX&Q$P[,X Y(/B54TJDW\܇ZYJ͘ȇ޿ARbG.S{W6#DFVBnZbeÝ0: R,rx(3 2ʡe!f ڞZh԰93x`{Wif[45W/./k&gAW, PTAԝ وzPe4tU(ȃN}ik ai nNpVE7܏My*ߖalXr^C@܁~fu͙օ su]Iy vaFijnBQ[[=XQ}Hf7N74T>_Sږ?*%RܺiK&5y~=l"E HPdXg{$H#*DWf1Qa>΋KRk ȗr?L9T#ƒ $XU!u5ß4^Sͣk:i!eJ{Ae]nz6w3+f p@gjew1P3*e,o[j 9]A<ηKa6)2 { |2Ň\P,L(2 KHȹ"B9^жf:c1Yjh_ADܖ &ߝYA]1[t?5KpN4 (rrcΟ˶ZZA[/Mmt®cme.fֲؓP>AiSDjV#OZ.UKUem<ɥFb-zX@2-.MJX#wZAp+YG9-lQx̒tUyv;}XGIq l`D白˷%sbhYr1uf4#mBB06Rn͚\]hߔUwr|7e2-ioTk_?'O|sstB1U1E f9WrǰC2"P%;.=zL&!{i[X"Dֳ7|~:텫ހ-vQbIRC/j߀ Q|%q^XP]yM \rQ!\t/.^?[kb׮խ m|>AMGV\| M  +_oֵ4>[s޵kaC+zڵ [mס..+Ov}?5:DDY 7Ø$SV֤<)hPB ()zQFZZZZZZZZ?U?u=֤ԝ /CKChP GW($ԓ\&% .-3 5(ò)O>K4V<À07(%MSK8OLvI;1(IHe?HS^09"{ՍLYaQe0(όᘸYT[P a\ L&$>2y|HZp.bk8>-|6Tp{ 1Rp#By&Ċpp4av9X|6OԒ*^b'̱3hHڰCWiEy|ː5b8OpH6f1g"8$lC ǐke&8~v~ DDÄ@Ӗ.PPrY F-Ov lOs3ݧ}6?Q2rG[Mnբ2ii~Lf?^_D]mIᢩw)Sf(~e3M~W(BN'l$iUEQBVD[2[Ъk45N]Lh?z"QDk*rXi\riS]4uRVh7C}dNhΖ.].W}0Di4,\i\J28ygLHrnIVk efUW^I&'j!cưd^U()?M{uP3)YtIMɨ},]i~iCG˦yDdYߢ:ۣț]c"o.w.HJҬk?rkBS]^\N|'7N cYmU"ZN7D4\J M,I?Q-}U|o[3OUf[5%K9G+mbp)X!&M_^㗽{!aE]!/v(I ^:NT-8t[M#nh襻Y*BBKjIsHd=%6R13X_Hwm($V&> ib(Ҕuat$rMv$cc}^vإQɱ睻;;VN8E/䱟WQE:i7:TG`|QycT7wm+QCt%cW%g}3ܢ˾ߓ-U'p~II%c|һi$"$yGwa[ڄ=̽F>h=?4/Qc~ƶX4CQb߭pO֎WEQ[Q[Q[Vn5*{YtFXBCvJ6л4OddF7wzTV5]'CmPQE{l☚ԋ-LnG~`#/ג8bV)_D~WGBHISkYԐ"?46=c[G=Bފc詔~ e2LS)e2ޙL_77!1A Qa"0q2@P#3CR`?xaaX:=T(PGB8GC|p$nPp0?QBGwL]!;e2B44Px (Pt(QjX:qUvPA9j4 <"DZQP' °`_D'lqN؍ ~[S6q '.J O:5R!IӄnIXAׅ!0VT"u j9iErMbs[CJ™Z< ~CAH3NG4iXu*o_d'sI5{'A 1dS62x{dh $/Yf<<m!4Ή7څggU 9| ƪL6PsO`J%x*T*wO(qSF HJ̬g s ¥&jH&:"9JJpu@'NDSAfˑ9tiC 1y"dCP *xxO-%uE5X3F\< Cuj۴$LJ5BiuZ{fTFPg$5w4.8z#hplufЯQ PfaV)-0x'n<'` SP:dfE&\d=EĈ"ke}ЬOPr7[H`w }2}U(2AlA ""'[\F)pkF(pI7DSN# Ca9gӨQ4;+U*|M npB9B80GkܞBq[, -u$,$b06!l5 ;r:Ȝ'U%\'?Nq Yfb6q&;"}@3m,A|@& p_f'V`:r M}:U{KؼO$z\, dYH(;;yd'n"6'E@Д0ª21ID HUL$ [ @YHw-V*EII , #DѦ/(XV\AT&|` c8݇ƊZaǑ!O T=D㩛N1 `0,O{' : {&M h`)%؞ 9{d:p ?1DK1xww]͗鱟7|Yb#6Pn\@GdL.p$.uFSjQeWbxco&)xn(|oz%CmMݑ6DL XikC: K];w`Ӻ9B˱@tAlD1\&:@MmT[r>qG Y@k@NdU%I[-=/+K`BШ0\A<<~Hs{]GQ~bT'8JsAakmyLia穔 S.td5;"T$.9>^y̡~k8A!DyKZb{@q횮]f@2[*2@ I'8 ME.'HuXP0,nV+yM?d &ܓIDߝ>E4҅B `g@DLUBp &}e*n-!] #\V'R #xC$7J$m\xqd,@{ nPt SFWQ72Qx5I+* ]5l8+ g;Ÿ.TM1 :IΒb=swT7X\4O2073EQuiQ!~t J!eǜ<{B ya(%A <JnQ7q image/svg+xml         Q Q   D P C wiRedPanda-4.1.12/app/resources/memory/dark/D-latch.svg000066400000000000000000000211441444020206400226330ustar00rootroot00000000000000 image/svg+xml         D E Q Q wiRedPanda-4.1.12/app/resources/memory/dark/JK-flipflop.svg000066400000000000000000000270201444020206400234730ustar00rootroot00000000000000 image/svg+xml         J K Q Q   P C wiRedPanda-4.1.12/app/resources/memory/dark/JK-latch.svg000066400000000000000000000221601444020206400227530ustar00rootroot00000000000000 image/svg+xml         J K Q Q   wiRedPanda-4.1.12/app/resources/memory/dark/SR-flipflop.svg000066400000000000000000000271031444020206400235150ustar00rootroot00000000000000 image/svg+xml         Q Q   S R P C wiRedPanda-4.1.12/app/resources/memory/dark/T-flipflop.svg000066400000000000000000000257561444020206400234100ustar00rootroot00000000000000 image/svg+xml         Q Q   T P C wiRedPanda-4.1.12/app/resources/memory/dark/T-latch.svg000066400000000000000000000221701444020206400226530ustar00rootroot00000000000000 image/svg+xml         T E Q Q   wiRedPanda-4.1.12/app/resources/memory/dark/memory_dark.qrc000066400000000000000000000004721444020206400236570ustar00rootroot00000000000000 JK-flipflop.svg T-flipflop.svg T-latch.svg SR-flipflop.svg D-flipflop.svg JK-latch.svg D-latch.svg wiRedPanda-4.1.12/app/resources/memory/light/000077500000000000000000000000001444020206400210225ustar00rootroot00000000000000wiRedPanda-4.1.12/app/resources/memory/light/D-flipflop.svg000066400000000000000000000255261444020206400235510ustar00rootroot00000000000000 image/svg+xml         Q Q   D P C wiRedPanda-4.1.12/app/resources/memory/light/D-latch.svg000066400000000000000000000211421444020206400230170ustar00rootroot00000000000000 image/svg+xml         D E Q Q wiRedPanda-4.1.12/app/resources/memory/light/JK-flipflop.svg000066400000000000000000000265771444020206400237010ustar00rootroot00000000000000 image/svg+xml         J K Q Q   P C wiRedPanda-4.1.12/app/resources/memory/light/JK-latch.svg000066400000000000000000000221561444020206400231460ustar00rootroot00000000000000 image/svg+xml         J K Q Q   wiRedPanda-4.1.12/app/resources/memory/light/SR-flipflop.svg000066400000000000000000000266111444020206400237060ustar00rootroot00000000000000 image/svg+xml         Q Q   S R P C wiRedPanda-4.1.12/app/resources/memory/light/T-flipflop.svg000066400000000000000000000255151444020206400235670ustar00rootroot00000000000000 image/svg+xml         Q Q   T P C wiRedPanda-4.1.12/app/resources/memory/light/T-latch.svg000066400000000000000000000221561444020206400230450ustar00rootroot00000000000000 image/svg+xml         T E Q Q   wiRedPanda-4.1.12/app/resources/memory/light/memory_light.qrc000066400000000000000000000004731444020206400242340ustar00rootroot00000000000000 JK-flipflop.svg T-flipflop.svg D-flipflop.svg SR-flipflop.svg D-latch.svg T-latch.svg JK-latch.svg wiRedPanda-4.1.12/app/resources/misc/000077500000000000000000000000001444020206400173365ustar00rootroot00000000000000wiRedPanda-4.1.12/app/resources/misc/line.svg000066400000000000000000000042021444020206400210040ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/misc/misc.qrc000066400000000000000000000002321444020206400207750ustar00rootroot00000000000000 line.svg no_text.png text.png wiRedPanda-4.1.12/app/resources/misc/no_text.png000066400000000000000000000002631444020206400215250ustar00rootroot00000000000000PNG  IHDR@@iq pHYs+tEXtSoftwarewww.inkscape.org<@IDATxб 0a"jOe 7#bߜe;VU+ q#"{IENDB`wiRedPanda-4.1.12/app/resources/misc/text.png000066400000000000000000000045121444020206400210320ustar00rootroot00000000000000PNG  IHDR@@iq pHYs+tEXtSoftwarewww.inkscape.org<IDATx[[G>u. B9<`db4]+{b``?O( 9Hbw,J"1/UU,vOLOʚӧ..A}ӧOW.~cHeo%D189/~|^Gv9أRʈ$ɦB "!d! ^KJթA\PJtq-10"6a[!d"m1BObJǺu+&ٳgi8>EQ~sʕ+s2 @<#j07_Y "R0ی 9?]BDX\[1ipqqqeBH1։ y&.1/%׹QD?c qٲ,Rjl\DaNcO$',˨ιoZk)H H$AcWڹ~_:k*BPk}90$@5`6˲(tm;9PY(5h> nz5In9zÇ?%BCUo,hQFs竁 c]qҞRl B~5`6M$,TEeYm;vR*}g::o߾?H)eVXk벸Sځ9G[]]_e !j} >e P3R#bރ[Ykph !@YYܙ^oWxkcR9ι_l=罿LAXl (@}m眃OvknOP;ww@;1g"be4M'rE,"ֶD$NN̏ê jlTkJS3%"IJWKu1/J f-1,DlsqbsUa99grщJW_BU==.,CBHge,...|nB6<X !DׯiR80|Qx^[[{egPJeuy,KH4eT=@, Hʲ+lbA0|ogZGZZ4j4a00b!"R"L)ԃ`D缌1~S `9$I@Ĺ~b,9:i|_۴+\<ڇcyA1Aki.Jg)ʲzifc|P߄ XLn>(s~ZYIQX7Xk !2M0 tsN9j;v>26:c#GV{ey1BBg$[c՛{OC O;?~qSJ8qY image/svg+xml wiRedPanda-4.1.12/app/resources/output/000077500000000000000000000000001444020206400177435ustar00rootroot00000000000000wiRedPanda-4.1.12/app/resources/output/audio/000077500000000000000000000000001444020206400210445ustar00rootroot00000000000000wiRedPanda-4.1.12/app/resources/output/audio/A7.wav000066400000000000000000002570341444020206400220450ustar00rootroot00000000000000RIFF^WAVEfmt DXdata]<+;=K"UiYX@QUE5! mvR(yɳӈ)K@vϣ]%k8GRXYS4I:V'#DȿDh̨i`pY4$l7%GrRX)Y-TI;v(f ]ҫx} S;y #i6\FQ\XJYTJ;)Z'|ӓb{BuF 7 !a5EeQ*X^YUVK<*gԂ=ê<ދ _4DPW{YdU L=+o%e8ʨH yU3CRPWYUL>,X(dġۭQ0ɀmEG2CO_WY$VWM?.p!YY^\1R&51LUYWePCt3 dO.t§WÖՇ+=KZUwYWPDv4  S+jzE~*N,g"(8O.ȹ.' 2CPWYUL'?i-_LﵻҦw܄1BOCWYIVM @. nعŬ*E,:C0ANVYV:N@/D;ٲg{ƶ_`/AJNVYVNA0{~$ڰ*G9Ŏؿ*.%@MUVY?WpOB1_ۭuҦɫiׂ-@?MUYW PC2 ݳɵYLGAg,W>[LUYWPWD3 P <޽ߧ񪘴"@zP+e=K6UlY X#Q)E4B! +s߿T,# =.*yi'Uv;%8HSXXS I9'xї'm֨Ϊy$7RGRX%YTI::('%ҀŲl$xX H#6FRjX@YT}J;`)cBcuFI}Ez "5EQ7XWYT2K<*`$`M s. 4DPWqYVUK=+b|>ϴ˧Bk݈ 3DnPWYUL>,.ĄwæydɹHt2KCOxWYV6M?-O0(8`ydȎgRi1mB@O(WYhVMc@.z];`hھ!V0ANVYVyNJA0\ǵӬ) -h=@/@NVYWO)B14rTR ntC*.?fM/VYZWOC'2*Jb<ЭƦ|Ku->LUYWDPC83[ " Q49+=LqUxYWPD=4 hۺڮȪT´ԃ* =hKUcY XZQ~EJ5! (̪e:dMu)%wP4'f[KСI&79HRSXX_SHP9i&!jȱ^j9i]$%68GRX YSWIF:'a }ddĨxE&3~#87FXRX0YBTJ<;(R- xsg< "369FQWXLYTJ+<)cӼi+^ߌ !45dEPQXfYU{K=*ԱbժЮ˜K p %4DPWrYU L>,T-՛.-i$ וǵɦĭ%@(  2BORWY3V}M?O.a3؈ņMFc{1BOWYVN@`/\ـB ̬F/2AlNVYVNAn0>?};LUj.O@M_VY-WQOB1u$¸fަ۫) Ť3-n?&MVYtWOZC2bwɔppă~,>LUYW|P.D3 ވSΧ!d?+=KMUpYWQE4 !T 4ߌ& <>>zl*<$KT\Y6XQE5:" 0hP~?bK(>F);kJ|T;YrXRF6c# sռ3p⩻d Ґ$(:I TYXRcG7$έͰߨkVk'9HSXXS#H8%eόd3c;t! %83H%SXXSH9&M6ig۰½A$7uGRXYTI:(nNةtH缻͹ #6F"RwX7YuTVJ;)) 4Q6|V ́U X"5EQ>XWYTKS t &!4EQXpY@UK=j+eG ëڧm". 3FDPW}YUjLm>,`cYi܅2jCO{WYUMQ?- ثԦmٸ>1BbO7WY]VM6@.E9˶HAǣeX0ANVYV]NA/|"ƉXx$|/@*NVYWNA0aO7L!R~e.?MFVYNWOB1 'ʦٵ+BJ-?LUYW#PC3!L Nڹ>D' Fw2,&>8LUxYWPD4V )ʬî秞٪x;+;=K%UhYXDQPE5! n{N)yɳӈ)KG! fkձ'=&d9HfSXXFSqH9-&{6ྨOh9Goϩ]%k8GRXYS2I:W'L¿Hh̨j`qW1$p7!GwRX.Y)TI;(]_ҩw~ V9z #h6_FQ_XFYTJ<)X){Ӓ\=xD 7 !c5EiQ%XaYUXK<*jԂ>ê5އ ]4DPWwYhUL=+k&ŧ_3ʬE xT3CPPWYUL>,W&eģĦޭO2}gJC2COaWY&VWM?.uV^Z]2Q'51>B$OWYzVM@*/bQu0ܬ̷,.|!0_ANVYVNyA;0HIܷ5i6@/}@MsVYW4OUBN15BrGȠfcݦF@Tm-?FMVYfWO-C^2j'Mb쭑Jĸ7,>LUYWYP Dg3 fL2lͧQß~+=K_UuYWPDw4  U2e}B*^(:I#T&YXR4G7N$xy΁Шl5)ј6'9ISXXRG8y%$[JiDɾ^e&9\H=SXXqSH~9&c8nj)$8GRXYS{I{:'L4ĩte;#7FE4Q XjY-UKS=0+Z!‚骝⧸a r 2 3oDPWzYUEL@>M,k,9Q+˹2* 2CPWYUL!?o-ZP׿񵼫Ϧ} }1B~OFWYFVM @. oعŧ0K&?<0ANVYV?N@/G6ٲj}ƴ]`/AONVYVNA0zګ-F8Œغ'.#@MSVY@WmOB1e۰rԦȫi~-@?MUYWPC2 ݯɹZKDCi,U>\LUYWPYD3 S C޷ʃ⧚%@F+p=K,1ā{ycɼCz2CCOpWYV7M?-L1&9ߦcwfȌePn1fBHOWYdVMf@.x!d9gb!T0ANVYV}NFA 0\ǵӬ+ .fAyJ/@ NVY WO&B17xNV ro?0.?jM.VY]WOC#2/D];ҭɦ}Hw->LUYWAPC53^ % Q,9+=LsUuYWPD<4 p%Һ߮ɪS´Ԅ*=jK UeYX[Q~EI5! +̥j7gOr);(V*wte: "269FQVXKYTJ1<)jӾm2Zߑ !*5mEJQXeYU{K =*ԭeҪѮˡG p $4DPW}Y{U&L>,]$՞=Gg i A3C3PWYUL>1-nהȵƦ-Gܽ02BOSWY:VuM?H._4؊ŀRBcہ0BOWYVN@`/XقA#ɬ?/3AjNVYVNAp0@=|=R\c.L@MbVY2WLOB1v!wʸl٦ݫ( ũ׸,-k?&M VYwWO\C2dɊmtć{,>}LUYWyP0D3 ޅWѧ(_C+=KJUpYWQE4!V 6߉+ 6E=~f*<KTWY9XQE53" .hP~>cK'BC);hJ~T=YoXRF6e# wԼ2p᩾`Ґ"(:I TYXRdG7$ΪϰݨmYi&9HSXXS$H8%^ϊh/f:u%~%8;HSXXSH9&C>miް=$7|GRXYTI:(nLةqE漾Ͷ #6F$RrX,d`Zh܄2jCOyWYVMZ?-ԫ֦oܸA1BhO0WYYVM;@.I6˶G<ǣdX0ANVYVYN A/{ƒ$Rv&z/@+NVYWNA0dM9J#Rb.?M7LUxYWP}D4I %ʮ𧗦ݪx=+6=K"UfYX;QWE5! q|O(wȳӌ)H,U*`ħƦܭS-ɂkJ>2COfWY'VVM?.vTbW_4M 51;B'OWYVM@&/aNp(7%ڄ!0`ANVYVNxA:0HJٷ2k7? /@MxVY!W3OSBR1/HrGȠedݦGBLt-?DMVYmWO5CX2k#Jd쭐¦IĹ8,>LUYW_PDr3 bK3mʧTÜ+=KeUmYWPDt4  U.ixIz*L,f#(9M-˹6/ 2CPWYUL&?i-^L˦}܂1BOIWYNVM @.pػŦ0G,:B0ANVYV7N@/F9ٱjwƱ\a/AINVYVNA0}!ڮ)C6Ŏؿ(. @MNVY=WnOB1^۫𸙭wЦ˫hׁ-@?MUYWPC2 ݰɹ]IFAh,X>WLU{YWPWD3 U F޵ʃݧ񪙴%B|K+k=K:UiY X Q.E4B! *rN3 <.*{ Ҏ);DJhT5Y|X.RF6# Soҩ:Ul':ISYXRG7$_ ׽f}U$&9H~SXX,SLH8%G;ϴ@f'ZqA%8HSXXSI9'{ ј(l٨ΰu$7SGRX&YTI:C(({̲u*yV F#6FRlX=YT}J;c)_BbuFGwJu "5EQ+XbYT5K<*a"`O v5 4DPWqYWUK=+c}>δɧ@l݌ 3DoPWYUL>,3āy¦weɹEx2DCOpWYV4M?-M2&8ܦewgȉ`Vg1kBEO$WYjVMi@.v ^7deڿ!Y0ANVYVwNMA0_ǵլ&}/g=@/@NVYWO,B15zMYkuB..?lM+VY[WOC)2)H\;ЭɦvHw->LUYWAPC13c ,T0<+=LqUzYWPD@4 o غڮɪS²Ԉ* =eKU_Y#XZQ}EK5! &̨i7fE}),Z%ՠ=Bom >3C1PWYUL>/-mבɵ¦-A)  2BOQWY6VwM?H.^5؉łSBcۂ0BOWYVN@_/Yف@#ʬA/2AiNVYVNAr0?<|ڂ;S޶Xg.Q@MdVY+WVO|B1o#¸iڦ߫& Ť׽*-f?)M VYyWOYC2f܂ɉqmā~,>LUYWxP1D3 ނXӧ%aA+=KKUrYW QD4!X 7߉)7C?{h*<KTZY5XQE55" -jR{B`L'AC);hJ~T=YoXRF6c# xͼ9r⩺f Җ"(:ITYXRaG7$ έ˰i}Vj&9HSXXS#H8%aψh0d,\g^f܁2qCOWYVMW?-ԫզp׸@1BhO1WYXVM:@.I8ԶA>ǨhU0ANVYVWNA/| ƍ"Ty"}/@/NVYVNA0\Q7K O؂c.?MBVYMWOB1!yҦⵦ0?I-?LUYW$PC2#K S2J$ Gv2,&>8LUwYWPD4M %ʨŮ꧙ݪt@+9=K"UgYX>QTE5! lxR&zƳӋ)O,Q-`ĨɦO2|fL@2COdWY'VVM?.uT`W`4M01@B$OWY{VM@-/]!Ov1ܬʷ.-}%0]ANVYVNtA?0GLط/f 3< /@M{VY"W2OVBL17ApIȞi`ߦH@Sm-?GMVYjWO2CY2m)IfꭒPIJ8,>LUYW`PDk3 fM3l˧޴VÚՁ+=K^UuYWPDv4  U1f{G{*L,g!*:N2ƹ40 2CPWYUL)?g-dG쵿Φz܄1BOCWYEVM @. jţ3L%B?0ANVYVWnOB1f۳븝q֦ƫfׄ-A?MUYWPC2 ݬɼ]HBDg,Y>WLU{YWPXD3 Y E޸ʀݧ瀞*EyL+k=K:UjY X"Q-E4I! 0oQ4 >-*zϲ>f)Ux@%8HSXYS I9'xє*oӨ°έr$7PGRXYTI:@( $ҀƲo'{R F#6FRlXAYTJ;a)cAcuFG{G| "5EQ6XXYT3K<*^$aK# p4 4DPWmYWUK=+gyAʹϧ|Fg݄ 3DlPWYUL>,-Ąx¦uhɷGu2GCOqWYV4M?-T.%9_|iȉaVh1kBBO'WYiVMc@.x!X4ebX0ANVYVxNKA0a Dzլ* )k<@/@NVYWO'B13tQV nrA,.?gM/VY^WOC(2'Od>ЭȦzLq->LUYW?PC73\ *U.9+=LnU|YWPDC4 l#Һ߮ǪR´Ԇ*=aKU_Y$XUQEB5! +̧h8hIz)*1#;7FYRX0YBTJ:;(T, vrb; "664FQUXIYTJ7<)ot5W ߎ !.5lEIQXaYUwK$=* Է\ڪЮ ˛K r $4DPWyY}U'L>,]"ա;Ck j @3C0PWYUL>4-sבʵΦ}ƭ)C#2BORWY6VwM?E.b2؋ŀTBbۃ0BO WYVN@a/`~A(Ĭ?/1AnNVYVNAu0:B~ 6Sܶ ƽQl.N@M`VY0WMOB1t#øgܦݫ*ŧ׼/-n?#M VYxWOZC2gɎtm}ք,>{LUYWzP.D3 ހ[ӧ(_B+=KGUrYWQE4 !T 2ߍ' 9A>zl*<%KT]Y6XQE56" .hR}>dI(?E);kJ~T:YrXRF6b# tּ1q੿^Ҍ$(:IT$YXRaG7$ΫͰߨl{Ye&9HSXXS*H8%`ύb5b9x" %87H!SXXSH9&J5c }nⰼA$7wGRXYTI: (rNکqG伿Ͷ #6FRyX6YvTUJ;()! 5S2P ̂Q T"5EQGXNYT K,_e]e܅2uCOWYUMU?-֫Ԧr۸@1BeO0WYVVM:@.K4϶D>ǣa[0ANVYV]NA/}Ƒ$Nv&w/@%NVYWNA0bN7O&Q~j.?MAVYNWOB1 'Ǧص+BN-?LUYW(PC3"I Nݹ:C* Iv2,%>9LUzYWPD4U *ʬ짘ުu;+9=K!UjYXCQQE5! m|N(xdzӊ)K,U*`ĨȦL5zgID2CO_WY"VZM?.pRc[\.Q"31=B%OWYVM@$/_!Ms -ȷ/-z"0aANVYVNyA:0GIܷ3g 2=/@M}VY#W3ORBR11FpKȜj`ަI@Ms-?HMVYhWO-C`2f%O`¦Iĺ 4,>LUYW[PDi3 jQ-qǧߴXÖՆ+=K_UsYWPDu4  S0ixH{*>K,c%&8O.ǹ-& 2CPWYUL*?e-aIΦy܃1BO@WYDVM @. mػũ.K%@D0ANVYV:N@/E;ٴeuƯ[b/AONVYVNA0zګ*C;ŋؿ).'@MSVY;WrOB1h۲츜tҦʫh׀-=?MUYW PC2 ݶɴ[KEDi,V>XLUzYWPYD3 T D޶ʄ᧜󪘴(EuR+e=K:UeYXQ/E4D! *t߽T1 =.*yδΧBl݋ 3DfPW~YUL>,-Ąz𭀹_ɽC~2>COgWY V>M?-O1%9azeȎeSh1lBAO)WYlVMg@.z\4fc X0ANVYV{NJA0` DZ֬'}1d@}D/@ NVYWO&B1/rRV ns@-.?hM-VY[WOC&2-G_<ЭŦKq->LUYW>PC23a 'V.ռ 5+=LuUsYWPD<4 j"Ӻޮ˪Q³ԅ*=jK UeYX`QwEN5! -̤j9jIx)u'/:BIS YXRGU8>%zV-- hYQЛO&39HRSXX[SHK9l&dgc ;h\ %:8GRX YSVIG:'dy`h:-1#77FWRX.YETJ>;(U+ ozg; "26:FQYXJYTJ-<)er2]ߐ !+5lEKQXhYU|K=*Գ`ԪҮ ˚M t #4DPWxYU$L>,Z%՟:Joo =3C3PWYUL>+-mהƵæ/B& 2BOWWY7VxM?H.`4؋ŁQDd~0BO WYVN@c/Xك@&ƬA/3AkNVYVNAs0=?}=TWk.T@MdVY/WOOB1q zƸhܦޫ$ş.-i?(MVYtWOUC2h܂ɋnrĄ|,>zLU|YWyP/D3 ނ[է&`B+=KOUmYWQE4 !R /ߐ$ <= 9~g*<KTTY=XQE57" /gQ|AaL&?F);mJ{T;YtXRF6c# rӼ5q㩸hҖ"(:I T!YXReG7$Ψаݨl[g&9HSXXS'H8%]ϊe2d9w! %8;HSXXSH9&K6jfڰýA$7rGRXYSI: (sL٩pD缽͸ #6F$RrX=YoTYJ;&)  3S4}ÙU X"5EQ@XSYT KU x %!4EQXkYEUK=e+^'@çݧq*4 3EDPWYUpLh>,ba[h܇2kCOzWYUMZ?-ҫצoܸC1BaO5WYYVM;@.N1˶H=ǝ_Z0ANVYVXNA/|!ƎWw&y/@&NVYWNA0aO9HVzi.?MAVYNWOB1 #zѦ൨/?P-?LUYW!PC2#I Mݹ:G$ Iv1,(>5LUxYWPD 4P (ʩî駜۪v9+3=KUmYX@QUE5! o{M,zʳ~)F,S+dĠܭO3{fLA2CO\WY VYM?.o!W^[Z/R 01@B$OWY|VM@+/\!Pw.ķ4'ځ0cANVYVN}A70JGݷ4i5@ /@MtVYW4OUBO11HsHȟh_P:Qn-?HMVYkWO-Ca2f%Mc쭐æEĽֽ3,>LUYW\PDl3 eN0oɧ޴X×Յ+=KbUnYWPDu4  [5`A*P,m.9R)̹3, 2CPWYUL'?g-cGﵼӦt ܀1B}OFWYKVM@.nؼŦ1I*:I0ANVYV;N@/C<ٰi{ƱZc/AMNVYVNA0{ڪ+B:ʼn+.$@MSVY?WoOB1a۫򸖭yΦΫfׁ-i,W>XLU|YWPXD3 R A޺~ڧ%@|L+j=K8UkYX&Q(E4D! ,s߽U0 A,*x<KTZY>XQE5u" v$`x.?ҍ);BJjT3YX)RF6#VpЩ7Sn':ISYXRG7$\ԽkxT%&9HSXX-SHH8%C?϶@g'Wt?%8HSXYS I9'xї'jبΫr$7JGRX)YTI:?("+xβt(P E#6FRjXAYTJ;b)_?hnOxOyFw "5EQ6XZYT0K<*Z'^Pn5 4DPWqYTUK=+czAʹ˧Bk݊ 3DhPWYUL>,,ćv¦{bɼCw2ECOqWYV5M?-P1$9ۦhr`ȑhPj1kBBO'WYjVMd@.x! [2k\"V0ANVYVxNJA0\ǴҬ+ /f?}G/@ NVYWO&B13oWP muD/.?jM-VY]WOC)2*H^?ͭƦyMq->LUYW?PC53^ 'X.<+=LtUwYWPD=4 jۺ׮ʪQ´Ԅ*=gKUaY!X[Q}EH5! 2̟p2cE|),Y'՝;Fl k ?3C5PWYUL>2-m# וȵʦ.E* 2BOQWY6VzM?H.c3؉ŁQD`ۂ0BOWYVN@a/Wم< )Ŭ>/5AgNVYVNAp0A=~8R߶Wh.P@MaVY+WVO}B1p"}ĸh٦"ţ׼*-i?(MVYvWOYC2c}ɍppĀր,>zLUYW{P-D3 ށZԧ&]F+=KNUmYXQ E4!R 6ߊ*7@ 9d*$7xGRXYSI:(qNکoA켸ͻ #6F RvX:YpTZJ;&)!1S4}V̄Q U"5EQ?XWYTK,_e^f ܁2pCOWYVMU?-׫ӦqٸC1B^O9WYaVM?@.I7˶F<Ǣ^_0ANVYV\NA/ƑPwٿ${/@)NVYWNA0[O6N&N؃`.?MHVYOWOB1%̦۵2;P- ?LUYW$PC3 L P5G$ Dz.,)>7LUyYWPD4M (~ʩŮ觚ݪu<+9=K UjYX@QUE5! r|K.ijӉ)L,W(bĥƦ߭P0ɀlEH2CO`WY%VXM?.q V^Z].U$31?B#OWYVM@)/]Pu .ݬ˷--0aANVYVNyA:0IIٷ/h9>/z@MrVYW:OLBW1+MxAȤecަK>Qq-?BMVYhWO-C_2h$Lc쭐¦GĻֿ 4,>LUYW`PDo3 fS+tçQÝՁ+=KbUqYWPDz4  V0gzH{*O,g#(:M/ʹ3* 2CPWYUL)?f-_M򵻫Цz܃1BODWYHVM @.qغũ-F,9G0ANVYV=N@/B<ٳevƯ[a/AJNVYVNA0yڮ*E<Ŏؾ..(@MSVY@WlOB1aۭtӦʫhׁ->?MUYWPC2 ݰɷ]HDDg,X>YLU}YWPZD3 Q @޺~ߧ" :H+k=K7UjY X#Q+E4D! .pP2 B)*|XQE5r" s'cu1g(XrC%8HSXYSI9'yњ$hڨήr$7OGRX$YTI:@(#&}ʲp'yU D#6F RhXCYTJ;f)\G_vGJ{Fu "5E}Q8XWYT2K<*\'\R r7 4DPWnY[UK=+^<дȧ,.Ă{{aɼBy2ECOqWYV:M?-P/(6ܦdygȊdSj1jBCO&WYkVMh@.v]7edW0ANVYVwNMA0_ǵѬ.)k<H/@ NVYWO(B1 6sQU prE(.?cM1VY\WOC'2*Ia<ЭƦ{Lt->LUYWAPC63] )T/8+=LtUtYWPDC4 g׺ܮƪT±Ԇ*=iK UfYX]Q|EL5! /̣j8fGz),W'՞8Fql A3C0PWYUL>0-k"ג̵˦,C(  2BOPWY3V|M?I.^6؇łQF_ہ0BOWYVN@`/\ف@&Ŭ?/4AjNVYVNAu09B~9PYi.Q@MaVY.WQOB1n!ۀeަݫ%Ţ׿--l?%M VYwWOZC2d|ɍksĀփ,>LUYW~P-D3 ބYҧ']F+=KKUqYW QD4!T 6߈+4E@}d*<KT]Y3XQE5:" 4cNYmTYJ;&)% 5R6zZ̆Q W"5EQ?XVYTK,^eZk ܆2pCOWYVMR?-ϫۦjٸA1BaO6WY\VM?@.M2˶F<ǟbZ0ANVYV[NA/Ǝ#Ru(y/@(NVYWNA0[Q7L$Qc.?MAVYLWOB1 #zЦܵ/>M-?LUYW#PC3O T7F%Ev5,">>LUYWPD 4T )ʭ®駝ڪv9+6=KUiYX@QTE5! o{N(wʳӆ)HI glӱ*?&_9HdSXXASwH92&.澥Pi;Esϣc%h8GRXYS0I:Q''CȿFj˨lal]7$i7(GoRX(Y-TI;y(b[үq R:y #f6_FQ_XFYTJ<)U.uӗZ:{E 9 !d5EgQ*XZY UPK<*iԂ?=ފ ^4DPWpYmUL=+q(ŧ_3ʫH ~N3CMPWYUL>,U+bĥĦۭT.~eM@2COaWY&VUM? .qV]Y_3P"11AB"OWYVM@'/aOs .ݬ˷-.|%0\ANVYVNqA?0DM׷0h39/{@MpVYW7OTBL16CuCȤbeަL<Os-?CMVYgWO0C\2i!Fi筓LĶ 1,>LUYWXP Dh3 bK3ļ޴WÙՂ+=K]UuYWPDt4  T/g|D~*M,g"&5U*̹52 2CPWYUL.?d-]N񵼫Цy܂1BOCWYFVM @. mؼŧ0M%?@0ANVYV:N@/B;ٵezƱYe/AJNVYVNA0xڬ-I<œط).'@MOVY;WpOB1b۱츝sӦǫn{->?MUYWPC2 ݰɹ\KHAa,_>PLUuYWPZD3 R A޹ʀݧ򪗴$CwR+c=K5UkY X!Q,E4B! *rP4>/*v<KTXY@XQE5t" q'_y/<"ҏ );HJeT9YxX2RF6#Smҩ6Po':ISYXRG7$c Խf~V#&9H~SXX,SLH8%A@ϷCc*Vt>%8HSXXSI9'zј'kبΦu$7PGRX YTI:<(&&}ɲp'|R B#6F RfXCYTJ;d)^DavFGDw "5EQ0X]YT2K<*['\R o2 4DPWwYPUK=+dyCȴҧzFh݆ 3DpPWYUL>,.ā|xeɺDu2JCOsWYV9M?-O1#;bwaȐgSh1lBBO%WYjVMi@.v _5gdڿ"[0ANVYVyNJA0ZǹѬ),k9لB/@ NVYWO-B10tQV mtC,.?dM2VYYWOB-2'J`>ϭȦxNq->LUYW?PC53^ )S1:+=LmU~YWPDE4 j!պܮɪR³Ԇ* =gKUaY!XZQ}EJ5! *̨h8dHx),[#՝7Fl l @3C2PWYUL>0-l אε̦ŭ'?) 2BORWY7VvM?D.`5؆ņR@h|0B OWYVN@\/ Vن; 'ɬ@/0AlNVYVNAq0>>ڀ:PVi.Q@MbVY,WTO~B1oyƸhۦ߫$ţ׿2-o?#M VYuWOVC2azɑoqĂ~,>zLUYWzP/D3 ރZԧ´!cA+=KGUsYW QD4!Y 7ߊ(4F>}f*<KTXY8XQE56" /fP~>cL$CC);lJ{T=YrXRF6e# rѼ8r㩹g ғ"(:I TYXRbG7$ΩΰhYh&9HSXXS'H8%aψk,h8v$%8=HSXXSH9&E;jhݰ>$7uGRXYSI: (pN٩pB뼻Ͷ #6F'RoX@YlT\J;*)8M8|T ̃R W"5EQAXRYT K,]f]e܈2oCOzWYUMX?-ͫݦh׸@1BcO5WY\VM=@.M1˶G>Ǟ_]0ANVYV`NA/x"ƎRyټ#|/@*NVYVNB0aQ5N&P؀c.?MEVYRWOB1"˦ܵ.>O- ?LUYW PC2 N S7@,Iv2,(>4LUwYWPD4L )ʮ律ܪw:+:=K&UcYX:QYE5! p}L+yȳӉ)J,R,dģŦ߭Q/ɀkGE2CO]WY V^M?.vQdZ[.S$61;B(OWYwVN@,/^ Mr +Ƿ2)ڀ%0]ANVYVNvA@0GKڷ1l8= /@MxVYW7OQBO15CnKțl^N:Ul-?JMVYiWO.C`2e"Ie뭑æGļֿ 6,>LUYW^PDi3 eK3nɧVÚՀ+=K\UwYWPDv4  V-jyHy*O,i *8R+˹3/ 2CPWYUL%?k-_L񵻫Ѧz ܀1B}OEWYIVM @. iؾŧ.L%A@0ANVYV9N@/=@ٵdtƬXe/ALNVYVNA0z$ڲ&C9ŏؼ'."@MSVY?WoOB1bۯr֦ūk}-C?LUYWPC2 ݱɷ\IEAi,W>ZLUYWPVD3 Q @޺ʀݧ򪗴#AzO+e=K6UlYX#Q*E4E! ,rR0 =1*t<KTXYAXQE5z" y$aw/>Ґ);JJ`T>YvX0RF6#Snө:Ul':ISYXRG7$ZؽhzT"&9HSXX*SOH8%CAϹBf&Zp@%8HSXYS I9'tї&i٨αp$7PGRX#YTI:B(&Dzl ü~S F#6F RiX@YT{J;_)aI[zEIwJw "5EQ.X`YT4K<*a#^Q q3 4DPWmYYUK=+dyBʴЧ{Fh݈ 3DhPWYUL>,3~}bɻEu2ICOrWYV7M?-M3$8ۦgr`ȐdUg1mB?O,WYpVMh@.t#!_9fa!V0ANVYV{NHA0]ǷѬ, -i<ـB/@NVYWO&B16{J\lq>/.?iM.VY[WOC*2&Nd=ѭ˦wLs->LUYW;PC/3e +V2:+=LsUuYWPDB4 i!պܮʪP¯ԉ*=jK UfYX^QzEM5! &̨j5dD{),U*՛9Hlo ;3C5PWYUL>+-j!׏εΦ­-F* 2BORWY9VvM?H.^6؆ŅRBbہ0BO WYVN@[/ XفC ˬ?/4AlNVYVNAs0<@z8MRk.R@MdVY/WROB1s(ۀŸl֦& Ť׻*-h?)MVYtWOWC2cyɑmqā,>}LU~YWvP/D3 ހ\ѧ$`C+=KHUqYWQE4 !T 4ߋ' 5C=|j*<&KTYY;XQE5:" 1dO~>dI(D?);fJT,d`Zh ܋2rCOWYVMX?-ҫצlԸC1BaO5WYVVM7@.G9ѶEBǡ_^0ANVYVVN A/y#Ƌ!Vz)u/@(NVYVNA0cR4N%M؆a.?M?VYKWOB1Ȧص,AG-?LUYW PC2!N Qڹ=H% Jr8,>?LU{YWPD4T *}ʫ맚ܪw9+6=K#UfYX>QVE5! kˀJ,w̳ӈ)O,W)aħŦۭU+ɃkL=2COeWY$VYM?.r ZZݦaW,S"/1@B&OWYvVM@(/`Pu/ݬ˷.,}!0bANVYVNtA@0EM׷/g6>/|@MsVYW5OTBM17@lMșn\L?Nq-?EMVYmWO/C_2f&MaבֿƦGĽּ0,>LUYWZPDi3 iO0pǧ޴ZÓՊ+=KZUxYWPDu4  V0hyIy*R,j )9N2ƹ0+ 2CPWYUL(?i-^M񵺫Ԧt܇1BOCWYHVM @. jؿŤ2I*:B0ANVYV9N@/G7ٶexƯTk/ AHNVYVNA0{ گ*G:Ŏؿ,.(@MTVY?WnOB1b۰wΦΫi~-A?MUYWPC2 ݱɸ`GF@j,V>ZLU~YWP[D3 S E޴ʆ㧚%@|K+k=K7UmYX)Q%E4A! ,rS/ >-*| Ґ );IJdT9YwX2RF6#Plө4Or':ISYXRG7$\ ׽kwQ&&9H}SXX2SHH8%E?ϹEb,Tv?%8HSXXS I9'{ ќ!eݨΰt$7QGRX%YTI:@(!)|ʲr*wW F#6F RhXBYTzJ;^)cBbtHJ|Ex "5EQ4XZYT0K<*^#bK# m3 4DPWpYWUK=+`~?̴Ч}Ef݃ 3DkPWYUL>,2Ā}xfɷGv2FCOpWYV9M?-O1%8ۦeu`ȐbWe1mBCO%WYlVMk@.w^9`gڿ V0ANVYVyNIA0a DZ֬( -h=F/@ NVYWO,B15xNW qp>,.?cM3VY`WOC#20CZ;ЭŦ}Lr->LUYW:PC03b 'U18+=LtUwYWPDA4 j"պݮʪQ®ԋ*=kKUaY#XWQEI5! )̦j6cF})d`%%68GRX YSSIJ:'a fh}@)1|#97FXRX-YETJ<;(P0 pyh5 "364FQPXPYTJ/<)kr0[ߐ !,5kELQXfYUyK$=*!ԫj˪֮ ˛I o $4DPWvY~U&L>,[%՞;Hnl @3C2PWYUL>.-k"ב̵˦­)?% 2BOVWY9VxM?K.\6؉ŀRD`ۅ0BO WYVN@\/^}B'ƬB/6AiNVYVNAs0>=ڀ7RXh.S@MbVY*WWOzB1myƸcի.ť׾2-n?%M VYuWOZC2hɍqoă},>}LU}YWuP4D3 ޅWӧ!e?+=KRUhYXQE4!T 3ߍ$6C<e*< KT[Y5XQE55" 1fR}?`Q DE);lJzT>YqXRF6a# pԼ3n㩼bґ#(:I T!YXRdG7$ά̰j~Zf&9HSXXS%H8%aώc3c;t$%8;HSXXSH9&G:iiڰ½:$7vGRX YSI:(oLةqD鼻͹ #6F$RrX=YmT^J;-) 6Q3S }X W"5EQ;XYYTK,bb_c܃2qCOWYVMX?-ҫצnظ<1B`O6WYYVM5@.E8϶D?ǟ^\0ANVYVXNA/~ƉQxٽ"|/@*NVYVNA0]S3P#P؂b.?MDVYPWOB1%{Цⵣ86P- ?LUYW"PC2Q Sݹ=G$Cz/,)>6LUxYWPD 4Q *ʪ®짘ߪs;+:=K"UiYXBQQE5~! lJ-y̳Ӄ)J;ދ ]4DPWrYlUL=+r*ħb6ʩG {P3CJPWYUL>,T+aĦæݭO3|mFE2COaWY"V[M?.sTaW]+Xۿ#01BB!OWYVM@(/_!Lr -Ʒ4&ڂ!0aANVYVNzA;0HHݷ3k;>/@MvVYW4OVBL16BmOȘl`ܦECQn-?IMVYiWO,C_2h&Hi字Kķ6,>LUYW_PDl3 gO-tTÛՀ+=K`UuYWPDu4  ],jxG}*M,l-?MUYW PC2 ݭɻYNJ=m,S>\LU|YWP_D3 M A޷ʄ槙&@{M+h=K8UjY X!Q-E4F! -qS." @-*z"Ҍ);HJcT;YwX1RF6#Rmө8Rm':ISYXRG7$]ؽd~U&&9H|SXX,SNH8%F?ϹAi!_m<%8HSXYSI9'sѕ(iۨήt$7RGRXYTI:D(-xβu)yW K#6FRlX@YT~J;f)[@gqHLuJw "5EQ/X_YT5K<*]&_N r4 4DPWrYUUK=+a|?ʹΧ|Eh݆ 3DjPWYUL>,+ĈtƦzbɽA~2>COlWYV4M?-T+(9bwbȎhOm1iBBO(WYoVMl@.{_:_jڼ"Y0ANVYVxNNA0_ǷѬ, )l:فD/@ NVYWO-B1:xQS op=3.?lM+VYZWOC(2*J`<ѭȦHv->LUYWDPC73^ 'Y.7+=LtUuYWPD?4 k#Ӻ߮ƪS±ԇ*=gKUaY#XVQEE5! (̪f8gJx))2}#87FZRX0YCTJ>;(L4 vre= "763FQUXJYTJ1<)ix|8T ߐ !+5kEKQXbYUwK"=*Դ^٪Ϯ ˗M n )4DPW~YxU*L >,Y%ՠ=Hnl ?3C3PWYUL>2-k$ זȵͦŭ)E) 2BONWY3V{M?H.b3؉łU?h{1BO WYVN@b/Vم?Ь>/5AjNVYVNAq0>?z9JVk.V@MhVY-WTOB1s"{Ƹjڦޫ&Š0-k?&M VYzWO[C2a{ɏrl|ք,>}LUYWzP/D3 ~_ڧ%aB+=KLUnYWQE4 !T 6߉* :? :~h*<#KTZY8XQE58" 5bP;gI'=J);pJzT=YpXRF6e# sӼ6q㩺f Ҕ(:ITYXRfG7$ΩΰiWi&9HSXXS#H8%eϊe3c;t$%88H SXXSH9&K6jj߰>$7{GRXYTI:(rSߩkB鼼ͷ #6F#RtX:YrTXJ;') 3S3~ŬM R"5EQ@XVYTK,c_]c܃2oCO}WYVMV?-} ګӦpܸC1B`O7WY[VM>@.L2ҶA@ǤcZ0ANVYVVN#A/u&Ɖ Mt%y/@'NVYVNA0aM:HS~g.?M=VYKWOB1#{Цߵ3;M-?LUYW$PC2P T߹:G$Cz.,)>7LU{YWPD 4N %ʯ淪r@+>=K&UfYX@QSE5! oˀJ+wɳӈ)K,W*^ĦĦ߭M4{hK@2COeWY'VVM?.q!ZZ\[,V۾(71;B&OWY~VM@,/^!Nu1ݬǷ3(ځ 0cANVYVNzA;0FNԷ.h7>/|@MqVYW8OPBS10GtFȠgbަJ?Oq-?DMVYkWO-C`2f#Fk㭗IĹ 8,>LUYW^PDl3 hN0oɧSÜՂ+=KZUxYWPDt4  V,kxF~*M,g")9R'ι60 2CPWYUL#?l-[O򵸫֦t܆1BOFWYLVM@. pغŦ1F,9C0ANVYV4N@/K6ٳgvƲ\a/AGNVYVNA0{~&ڶ##?7Ŏؽ(.%@MWVYCWlOB1i۴븛vѦɫk~-=?MUYWPC2 ݲɴ!\IEAl,S>\LU~YWPTD3 U B޷ʄ᧞𪚴%AzO+g=K6UlY X!Q/E4N! 6kP2 ?+*}(#%ҀDzn'vX D#6F RiXAYTJ;e)]CctGIxIz "5EQ-X`YT6K<*^&]P k8 4DPWpYWUK=+fz?δ˧Ck݊ 3DqPWYUL>,4|xeɹE{2ACOnWYV6M?-O0'7ݦet]ȔjNl1jBCO'WYmVMj@.s$_;eeھ!U0ANVYVyNJA0` ǴԬ) .e@}G/@N}VY WO%B11pUS sl=,.?iM+VYXWOC&2-Ha@ϭƦ|Jv->LUYWCPC53` -U37+=LsUwYWPD?4 l!Ժ߮ʪO¯Ԉ*=hKUcY X\Q{EK5! &̨k3bKu);(Q0 vre: "763FQRXMYTJ1<)po/[ ߅ !.5kEKQXdYUzK=*ԯcԪѮ˛L r $4DPWwYU%L>,Y%գ@Atu 8 3C1PWYUL>.-l בʵǦ(=%  2BOQWY2V~M?L.^6؆ŇLH`0BO WYVN@Z/ ZB%Ǭ:/6AhNVYVNAs0><ڀ:PUi.N@MaVY.WQOB1nzȸm֦&š 6-p?#M VYzWO\C2eyɓrl}ք,>}LUYWyP0D3 ބXէ*]F+=KLUpYW QD4!U 3ߌ' 9? :f*<KTWY9XQE5<" 1hN>bM%AC);jJ|T>YmXRF6b# wԼ3n婸g Ғ&(:IT YXRfG7$ΪͰeZh&9HSXXS'H8%bϊh/i4y#%88H"SXXSH9&I8jgذĽ=$7yGRXYSI:(pLܩk@鼾ʹ #6F"RvX9YqTZJ;*) 1T5z[̄T Z"5EQ:X[YTK,ad^d܁2qCOWYVMS?-ѫئn׸I1BbO6WY[VM9@.J5϶D>ǨgX0ANVYV]NA/~Ə"Pwٿ%x/@)NVYVNA0aN7N$V{f.?M>VYKWOB1 )̦ݵ,BQ- ?LUYW%PC2#M R8I" It4,$>:LU{YWPD4M %ʨŮ駙ުu<+8=K!UgYX;QYE5! r|O'vʳӇ)H,T+aħĦ׭X*ɄkHC2CO`WY&VVM?.sW_Ub2R$/1CB OWYVM@)/]"Mr +ŷ4&ڄ0dANVYVNxA<0HI۷1j;B/}@MsVYW4OTBO13DoKȝi_M;Tn-?CMVYhWO)Cf2_LbĦFĻ־1,>LUYW\PDk3 fL2oȧ޴Y×Ճ+=K_UsYWPDt4  W/h|B*R}X5Y\T2Jq;(m (*rjͯ;̿ "6 FQHXQYTJd< *"׳"?h˓I `!4@E/QXhY.UKO=2+Y# ƒ쪗觳^ n 5 3kDPWYUKL>>L,g +;O.ȹ1- 2CPWYUL%?i-bHϦx }1B}OGWYLVM@. oؼţ5M(:G0ANVYV8N@/D<ٲhwƵ]a/ALNVYVNA0z!ڱ)E;Ōؾ(. @MLVY:WrOB1b۰츟pզȫh~-;?MUYWPC2 ݳɵ\KI?i,W>XLU|YWP[D3 P C޶ʅ槙%?~I+m=K7UmYX&Q)E4D! *s߿S0 65*t<KTVYAXQE5v" s']|+?!ҏ );GJeT8YzX,RF6#Rkթ;Tl':ISYXRG7$[ٽhyP'&9HSXX*SOH8%BCϹAe)Xq@%8HSXXS I9'uє(hۨήr$7NGRX(YTI:@(#&~Ȳp(wX H#6F RfXEYTJ;`)d?erI}MwIx "5EQ0X]YT1K<*_#aM  v7 4DPWsYTUK=+a~<дΧ}Dj݇ 3DgPWYUL>,3~xfɹD|2ACOlWYV5M?-Q1%8ܦeveȌaVg1mBBO%WYiVMg@.x\9agھ"\0ANVYVzNKA0a Ǵ֬%}/f?|H/@ NVY WO$B1:yOV qpD*.?gM/VY[WOC'2,G^:ҭʦ{Hv->LUYW:PC23^ %V25+=LoUzYWPD@4 g׺ݮǪSµԃ*=jK UeYXZQEF5! )̦k6gHx),Y$դ?Fpr :3C2PWYUL>0-m"ה˵Φí)>$ 2BOVWYyLU~YWyP0D3 އTϧ$c?+=KNUlYXQE4 !R 4߉+ 8C@xm*<$KT]Y4XQE57" 2cQzC]R BF);nJyT@YlXRF6e# tռ4q᩾aҏ!(:IT$YXR^G7$ΩϰިmXk'9HSXXS#H8%hωh/h5{#%87H#SXXSH9&E,cb]e܄2pCOWYUMR?- ԫئkոB1BbO4WYWVM7@.H7ҶA;ǟ`Z0ANVYV[NA/|ƍ!Rw%{/@*NVYWNB0^P6N'O؁a.?MBVYKWOB1 zͦ۵.@N- ?LUYW#PC3L Mڹ>C' Fx1,'>7LUzYWPD4Z /|ʮr;+;=K$UhYXBQSE5! l|M*w˳ӈ)Iª?ޏ [4DPWoYpUK=+n)Ƨa9ʦK M3CLPWYUL>,T+aĥŦݭQ/ɁlHC2COgWY+VRM? .l$X\`W+W۾&41=B&OWYzVM@(/Z&Iq -Ʒ4%چ0_ANVYVNqA@0BMڷ5h4? /@MuVYW4OTBN16AnIȡf`KALr-?FMVYiWO-Cb2c Em߭JĹ 2,>LUYWZPDk3 gP-sŧTÚՃ+=KaUsYWPDv4  O -jxH{*#7F@R{X8YWT7Jo;(l4|cϯ> "5FQIXRYTJb<*ڳ"?gˏP e!4=E5Q XkY.UKT=.+[!„誜槲b o 7 3uDPWwYUIL=>O,g"*7S)ɹ.* 2CPWYUL#?k-^KϦw܂1BOAWYHVM@. oػŦ1J)<@0ANVYV8N@/F:ٵe{ƳZe/ AHNVYVNA0}~$ڲ'F>ŏؼ*.$@MPVY:WsOB1e۲鸡mڦënz-D?LUYW PC2 ݳɷWPH@k,T>[LU|YWPZD3 W E޶ʁߧ񪙴$=J+j=K8UjY X!Q.E4I! 0oQ1 =.*y҈ );GJfT7YzX/RF6#Uqϩ6Sn':ISYXRG7$^ ٽjyS'&9HSXX%SSH8%C@Ϸ@g&Zq?%8HSXYS I9'wї&eߨΰo$7JGRX!YTI:<(%%~Ȳo%|R D#6FRnX,2~~vfɻB|2CCOsWYV4M?-H8#:ߦdtaȏcTi1kBBO(WYqVMm@.zY3bfX0ANVYVNEA 0a ǴҬ-'m:ق?/@NVYWO(B16tSS rn?,.?fM1VY]WOC(2)JbA̭ŦzMs->LUYW@PC63\ #W-;+=LoU{YWPD>4 n$ѺŪV¶Ԅ* =jK UgYX^Q|EH5! ,̣m4dHw),P,գ?Gmq : 3C8PWYUL>.-j$דɵʦí)C,2BOXWY>VsM?E.b2؊łPDcہ0BOWYVN@]/Uه:%ɬ>/1AlNVYVNAv09C~LUYWP,D3 ބUϧ'^E+=KIUsYW QD4!V 2ߏ# :A=}f*<KTZY8XQE59" 3bO|B^P$AD);iJ|T>YmXRF6`# uӼ4k穸eҍ (:I T YXRgG7$ΫͰjVn'9HSXXS%H8%bόd2e9w&}%88H"SXXSH9&F,baZj܃2jCOyWYUMU?-ϫ٦lظG1BaO8WY[VM9@.I5ζE<ǠdU0ANVYV]NA/{ƋUw(v/@'NVYWNA0`K;IX{_.?MGVYNWOB1#~̦۵-AK-?LUYW%PC3N Q޹7I$ Lr5,$>9LUxYWPD4V .yʧî짘ݪv8+7=K$UdYX:QYE5! n|O'v˳Ӆ)GJifٱ$=&e9HiSXXESrH9,&0徤Sd8Grϣb%h8GRXYS2I:V' LHj˨eenY2$n7$GsRX(Y/TI ;(YeҦt S:x #c6bFQaXDYTJ<)T-xӖ`>yF 8 !b5EfQ(X_YUUK<*dԃ<ê7ބ ]4DPWxYgUL=+q&ŧ^ 3ʪG ~O3CNPWYUL>,R0`ĦĦޭP1}kGF2CObWY*VSM?.uT`[Z*Yۼ(61=B&OWYxVM@&/bPx3ܬɷ1(ڃ0bANVYVNvA<0FKڷ0f 6C/@MyVY#W.OZBI19AmMȚm\O:Sn-?HMVYjWO1C[2i$IcæHļ־-,>LUYW]PDh3 gM2nɧߴWØՃ+=KZUxYWPDy4  X1d~C*G7W$z{ͨo8+ј8'9!IS YXSG8|% [KkE˾\f&9`H7SXXsSH9&aR|X9YUT9Jn;(s ,&vgͯ< "6 FQMXNYTJd<*ٳ&K,b&':O*̹0* 2CPWYUL(?i-]Oﵿ̦~ ~1B~OFWYKVM@. qػŦ1J*;B0ANVYV:N@/F9ٮkyƵ`^/AHNVYVNA0}~#گ)D:ōؾ+.(@MXVYBWnOB1h۶긛vѦʫhׁ-=?MUYW PC2 ݲɵ XLEBg,X>YLU}YWPZD3 N A޶ʅ様$AzN+h=K:UgY X!Q+E4@! 'w߽S1 <-*|҉);HJeT8YxX1RF6#Nkթ8Um':ISYXRG7$bڽf{R(&9H{SXX,SNH8%@CϹCe(XrA%8HSXYSI9#'pє(hۨΨv$7RGRX%YTI:B(*{ʲp$|R D#6F RhXCYTJ;e)]?imM}H|H{ "5EQ.X`YT5K<*^%^P p2 4DPWuYQUK=+dyB˴ͧ|Gd݄ 3DiPWYUL>,1Ă{~`ɾBt2ICOqWYV2M?-X)&:bwdȍdSi1mB@O'WYfVM_@.u$![3edU0ANVYVwNKA0]dzԬ) (m9قB/@ NVYWO-B14vQU orD%.?bM0VYVWOB,2(Jb@̭ǦuPq->LUYW=PC73[ 'U/վ 6+=LrUyYWPDC4 j ׺ۮƪW¹Ԁ* =fKUeYX]Q|EJ5! &̪g:hKt))2#;7FYRX/YDTJ;;(W*uvn7 "-6=FQZXGYTJ/<)hp0Z ߍ !*5nEIQXeYU|K=*ԯcժˮĺ˟J q #4DPWsYU(L >,U)՛7Jnl @3C1PWYUL>,-i"ג̵̦ĭ(?"2BOSWY5V{M?O.W:؆ŃQE`ۄ0BO WYVN@[/ [ق= &ɬ=/1AlNVYVNAt0;@}:OVi.P@M^VY,WSOB1nyȸkڦݫ' Ţ2-m?&M VYzWO^C2g~ɍqpą{,>xLU}YWvP4D3 ބWҧ&aA+=KIUqYW QD4!U 4ߊ*7@ 9i*<(KTaY2XQE5<" 3fR}>dL%AE);iJ}TUK=h+a#Déܧo%1 3DDPWYUkLn>,_f_f܅2pCO}WYVMU?-իզpڸ?1BdO4WY[VM<@.H;ѶFBǟ[b0ANVYVXN!A/|Ɛ#Tx#~/@0NVYWNB0dI:K#Q؃c.?MI-?LUYW#PC2%G O5F)Ey2,#>&c9HdSXXFSsH9/&~2侤Tb9EtϠb%h8GRXYS1I:W'K¿JnǨl\tU3$n7#GtRX+Y,TI;x(baҩs S:z #f6`FQ`XEYTJ<)V,wӗ`}BtC 8 !a5EdQ+X\YUTK<*hԃ=>ތ [4DPWuYiUL=+p(Ƨ_1ʮE zP3CLPWYUL>,T,bĦɦ߭R-ɃpBI2CObWY'VVM?.uW\\^1P&71:B'OWY{VM@+/]!Ns *ķ2+~0hANVYVNqAA0GJڷ0g6@/@MsVYW6OTBN14EuCȤdcަL=Tm-?IMVYfWO,C_2h#Fi譑ŦFļ 5,>LUYW^PDm3 eK3mɧSÛՂ+=KbUqYWPDv4  Z/jwH}*L,j,:Q-ǹ0/ 2CPWYUL%?i-^Kͦz܂1B{OGWYJVM@~.lػŨ.F-7C0ANVYV:N@/A<ٹazƶ^c/ AGNVYVNA0|#ڴ%E>Ō,.#@MOVYZLU}YWPYD3 R B޸ʀۧ$>}M+h=K5UmYX#Q+E4B! +rN3 </*z,4|weɺDy2DCOqWYV9M?-P-*7ߦeq[ȔgSi1kB@O)WYkVMi@.q%^6haW0ANVYVvNMA0b ǵҬ*~/f>~J/@NVYWO'B18{KY tk<-.?dM2VYYWOB-2(I_=ЭƦzJw->LUYW>PC53\ %V/<+=LzUqYWPD=4 iֺۮɪS°ԉ* =hKUbY"XXQEG5! *̦i8fIy),W'ա=Dpn @3C-PWYUL>/-l!הƵŦ­)C*  2BOSWY:VvM?H.a1؊ŁPF^ۂ0BO WYVN@a/\B#ɬB/5AiNVYVNAu0>=ڀ:T߶Wi.R@MaVY.WROB1o{Ǹjڦݫ' Ţ0-o?#MVYyWOZC2dɋnqĂ~,>~LUYWyP/D3 އTЧ&`C+=KNUlYWQE4!W 8߇+ 7D>{i*< KTWY:XQE5:" 1gP}@`P ?I);pJyT=YpXRF6d# uѼ6r⩻d Ғ$(:I TYXRdG7$ΪͰi[f&9HSXXS%H8%cτn*k3z$~%8:HSXXSH9&I6e i۰ý>$7yGRX YSI:(pN۩oG弽ͷ #6F RuX;YqTWJ;#)% 3R6zZ̆N P"5EQ9XYYTK,`b[h܈2jCO{WYUMR?-Ы٦m۸G1B`O6WY[VM>@.K6ʶKCǡ_]0ANVYVZNA/}!Ƌ"Ryٿ${/@*NVYVNA0aO8JXzf.?M=VYKWOB1 'zЦⵤ4<H-?LUYW'PC3M Q7F( Fy/,'>8LUyYWPD 4S .yʩ®맙ݪv@+<=K%UfYX>QWE5! mI/}ųӈ)H@ސ \4DPWyYfUL=+l&ħ`3ʭE zR3CLPWYUL>,R/bĢޭP1}hJD2CO^WY"V\M?.vW^W`2Q$21@B#OWYxVN@+/^ Ot *ŷ1,|%0_ANVYVNzA;0FKٷ4i4? /@MwVY W4ORBQ13EpIȟh`K=Sn-?JMVYkWO2C]2h#Ke譓¦Aּ 8,>LUYW[PDk3 lO1oȧߴYÕՆ+=K^UwYWPDw4  T.jvJz*Pz`8);JTEYcXQrF6(# 2^jͧx޲D?^(:I$T#YXR8G7R${|~Шl6+ј9'9#ISYXRH8%^F"dK̾`a &9^H8SXXvSH9&` U,m,>K,̹3- 2CPWYUL+?d-cH򵸫Ԧv܅1BOEWYJVM @.qعŪ-I)=>0ANVYVٱh}Ƹ]c/AHNVYVNA0w ڮ)H?őغ'.#@MOVY[LU~YWP[D3 O C޷ʁڧ몟+B}I+l=K6UnYX%Q+E4G! /qQ2 @+*{Ҍ);IJdT8Y{X-RF6#Pmө8Pr':ISYXRG7$] ۽jxS'&9H}SXX*SOH8%?B϶Cb,Tt?%8HSXXS I9'yі)mרαj$7JGRX$YTI:A(!*z̲q%u\ K#6FRrX8YTwJ;_)d?duEJvKz "5EQ)XaYT1K<*^%_N m2 4DPWuYSUK=+b:ҴѧyHh݋ 3DkPWYUL>,+Ćw¦tiɸD~2BCOpWYV6M?-Q0&7ۦgscȍcTj1iBDO'WYlVMg@.x Z4fa W0ANVYVwNMA0a Dzլ(}1e>ـC/@ NVYWO'B15vOYmr?0.?kM,VY\WO C!2/G`>ϭŦwPp->LUYW?PC53] & T.6+=LtUuYWPD@4 g׺ݮǪR¯ԇ*=fKU`Y"XYQEG5! +̦j5cKv),S*ՠ;Gmn >3C2PWYUL>0-oב˵Ϧ~ǭ$>& 2BOPWY8VwM?I.^7؅ņRBcۄ0BO WYVN@_/Yق?&Ǭ=/+AqNVYVNAs0;Cy:QVj.V@MiVY1WQOB1p#~¸i٦$ţ׾0-m?%M VYvWO[C2j܀ɍqnւ,>yLU}YWwP1D3 ކUѧ'^F+=KNUlYXQE4 !S 0ߏ& 8A;~e*<KTVY;XQE56" .fQ}?bL%=L);rJtTDYkXRF6b# sּ1m婹d Ґ*(:IT$YXRaG7$%ΰȰdZg&9HSXXS'H8%cϊf1f9t$!%8>HSXXSH9&@Aljް?$7rGRXYTI: (pJ֩sE缾Ͷ #6F$RqX?YmT\J;+),[fXk܅2lCO|WYUMS?-׫ҦsݸG1BcO5WYYVM<@.N0϶F?ǡa[0ANVYVXNA/|!ƌ Uzٽ$z/@'NVYWNB0bQ5M!J؉a.?MBVYPWOB1#Ǧٵ.@Q- ?LUYW PC2!M Oڹ=K!B|,,+>5LUzYWPD 4Q 'ʰs>+9=K UjYX@QTE5! m|M+|ijӊ)HG  hhر%D&f9HhSXXBSvH95&}0澣Tc6Hpϥ]%m8GRX YS0I:V'!LKjΨn]rX4$l7&GqRX)Y-TI;x(c Yұs S={ #e6cFQbXDYTJ;)S0tӗ^>xI7 !e5EiQ&X_YUSK<*d~A;ސ Z4DPWvYiUL=+t+ǧ_4ʬD tW3CPPWYUL>,O1]ĩƦ߭P1lHC2COgWY*VSM?.r X^Wa2Rۿ(71;B'OWY}VM@'/[%Iq ,Ƿ0*ڀ0aANVYVNzA:0KFݷ/f 4</}@MuVYW6OQBR10IvBȥbgڦKLUYW`PDo3 `J1r§QÜՂ+=K`UsYWPDt4  Y2f{F{*hˍR h!4@E4Q XlY,UKU=++` ˆ窚觰cp 7 3uDPW|YUKL=>N,j)4V+ʹ41 2CPWYUL#?k-aH쵾Ѧx 1B~OEWYHVM @. oػŦ2I*<>0ANVYV3N@/B?ٵczƵ[c/ALNVYVNA0y!ڮ+H<ŋؿ(. @MQVY>WpOB1_۬򸖭yΦͫi-C?MUYWPC2 ݲɸ^HCDh,V>ZLU|YWPZD3 R A޸ʃ⧙%DzK+l=K6UnYX&Q+E4H! 0pP2 A,*y,4~}zaɾBw2ECOoWYV6M?-S,'7ۦiqbȍcVf1lBCO%WYiVMd@.|T .i` V0ANVYV{NJA0fǯ٬$}/f?}E/@ NVY WO%B17xL[lrB0.?jM.VYZWOC(2+G];ЭȦvLw->LUYWEPC53a +U+:+=LrUyYWPDA4 lںծͪO³ԅ* =eKU_Y"X\QzEM5! +̤m4gJw),X'ՠ;Ipp ;3C3PWYUL>1-oאʵƦ,A' 2BORWY5VyM?J.Z:؆ŁUBaۀ0B OWYVN@a/]ف?$ɬA/0AnNVYVNAx08B}?WݶXg.S@MjVY2WPOB1s#|Ÿj٦߫& Ť1-o?!MVY|WOYC2h܁ɋnpց,>}LUYW|P-D3 ހ\ԧ%a@+=KJUqYW QD4!W 5ߌ' ;> :e*YnXRF6e# xμ9p䩹f Ґ (:I T!YXR^G7$Ϋΰިl]e&9HSXXS(H8%aωg/g8w$%89H SXXSH9&I7ilⰼ<$7|GRXYTI:(nKשrC꼺͸ #6FRxX9YoT\J;*)9N8{ŴT V"5EQ=XVYTK,ac[i ܃2kCO}WYVMS?-Ы֦r޸C1BaO5WYWVM9@.L1˶G=ǠaZ0ANVYVVN!A/z!Ə&Qxٿ'u/@!NVYVNA0cL8L"R~f.?MFVYOWOB1!~ͦ޵1>J-?LUYW%PC3!K N߹7H& Fy0,&>8LUxYWPD4O .xʥȮ姝ܪu<+;=K#UgYX?QUE5! l~L,~óӍ)L,X*`ĥæܭR.ɁmFD2COcWY(VSM? .m"SdW^4N!41>B$OWY{VM@,/X%Lu0ެɷ/+~'0YANVYVNwA=0KH۷2j5:/|@MuVY#W0OUBO13ElMȚkaަJ>Qo-?DM!VYnWO2C\2i#Hg譒æGĻ 5,>LUYWaPDl3 hM3k˧ߴW×Ճ+=KaUrYWPDy4  W-jwIz*tg,$8GRXYS}Iy:'M1ĩpb;#6F;RX4Y[T2Js;(r1|dЯ9̼ "5FQFXWYTJ]<*۳'N,i-@I1ɹ4. 2CPWYUL?n-bHͦ{܀1B|OIWYKVM@~.iŠ6H-9D0ANVYV6N@/A>ٱh{Ƶ^a/AKNVYVNA0{"ڱ(B:ŋ,.$@MNVY7WvOB1bۮvѦ˫h׀-B?MUYWPC2 ݰɹ\ICEg,W>ZLU|YWP_D3 K B޶ʄߧ򪘴)DyL+l=K:UjYX%Q)E4E! +t߾R3:0*xʹӧxGh݊ 3DmPWYUL>,5{wfɸGx2ECOtWYV4M?-S,%;ayfȋbWe1mBCO$WYjVMk@.w]7fbU0ANVYVyNKA0c Dzլ) -g>ـ;/@NVYWO*B12tQWmq=1.?hM0VY]WOC+2'L`<ЭǦyKu->LUYWDPC93[ % R2վ 5+=LrUwYWPD94 n(̺󧗦ȪR²Ԋ*=cKU^Y%XXQ}EJ5! ,̤l5gLs)"g~0BOWYVN@_/Yك>&Ǭ?/4AhNVYVNAr0:C|;S޶ Sk.U@MeVY/WROB1t#}ĸlզ š0-o?"MVYzWOYC2c~ɎsnĂ~,~>LUYW{P-D3 ށ\ק '_B+=KNUnYWQE4!O 4ߊ+>< 9a*<KTWY8XQE59" .kWyAbL%F@);gJT;YqXRF6a# sѼ6s੼e ґ#(:I T YXRcG7$ά̰gZg'9ISYXS&H8%`όc4c8z$~%89H"SXXSH9&I9kl᰾>$7xGRXYTI:(tMةqD輻ͻ{#6FRyX7YsTXJ;') 0T5|V ́S U"5EQ7X\YT K,`c\h܃2pCO~WYVMU?-ҫ٦l׸B1B]O;WY]VM:@.J7̶IAǚ_[0ANVYVZNA/{ Ǝ$Nvٿ"|/@&NVYWNA0\R5L"R؀c.?M>VYIWOB1+ɦ׵+AO- ?LUYW&PC3Q S޹9K! Gu6, >=LU{YWPD 4R ,|ʪ陸mA +>=K$UfYX=QVE5! n{N+}ijӋ)GKhhױ%>&d9HiSXXBStH9.&2⾧Qd5Joϥ`%j8GRXYS1I:U'#AʿDgϨn]qY8$h7)GnRX'Y0TI;v(caҪpL?{ #h6^FQ]XIYTJ<)X(|ӑZ;zD 9 !d5EgQ'X`YUTK<*k}F>ސ X4DPWpYmUL=+q$c8ʦL }R3CQPWYUL>,R-_ĩȦޭQ/kFF2CO^WY#VXM?.vRbX_1Q"01@B%OWYxVN@,/_Pv0ެɷ.-~0aANVYVNsA@0HJ۷0e 2@ /@MuVY"W0OYBJ15FrHȝj_MLUYWZPDk3 iR-rŧXÖՅ+=KYUwYWPDw4  V4c~C*R{X;YST "6 FQDXVYTJ_<*׳%>gːM b!4AE.QXgY-UKP=/+]! ˆ骘觳`t 0 3nDPW~YUML:>P,i!*=L-ʹ5, 2CPWYUL)?g-dGΦ{܄1BOCWYJVM@. mؽŦ/J);?0ANVYV9N@/H6ٶfwƳ\c/ AHNVYVNA0}"ڰ(D<Ŋ). @MRVY@WmOB1e۵渣mצɫc׃-:?MUYWPC2 ݲɷ\IEBm,R>^LUYWPRD3 U D޶ʃߧ񪙴%?}L+i=K4UoYX%Q+E4E! /pQ0 <-*|,:vzcɻDz2BCOoWYV3M?-S-)7aydȍeSi1kBAO)WYjVMh@.s"^9ceW0ANVYVxNHA0^ ǰ٬$|1e?~B/@NVYWO%B16xMZktA,.?gM/VY\WOC)2*I_9ԭȦ}Sl->LUYW=PC63Z # Q/ 5+=LoU|YWPDG4 i$кɪR´ԇ* =iKUaY"XXQED5! &̩h8fC)v',:EIS YXRGN8C%X-+gYLТE&:9HQSXX\SHJ9n&hñcg9j\%%58GRXYSVII:'d kq>)3{#37GURX4Y,U+՜8Jnp <3C2PWYUL>2-n זŵɦǭ%Gܼ/2BOTWY5V}M?N.^4؋ŁMH`ۀ0BO WYVN@`/Vم>"̬</4AgNVYVNA|05D{@V޶Vj.T@MfVY-WUO|B1l"~øk٦ޫ' Ţ 3-o?$M VYrWOVC2`yɏlq}օ,>yLU}YWwP1D3 ބWЧ(]F+=KCUvYWQE4 !R 7߉) 9B<c*<KTYY6XQE59" 3eSzD^P!AE);kJ}T=YnXRF6b# vּ2p⩻e Ґ(:I T!YXReG7$#άϰިlXh&9HSXXS"H8%cχh1d:u&%86H!SXXSH9&E9kdݰD$7rGRXYTI:(sQݩm@ͺ #6F$RrX=YmT]J;*)6P6}ÛU W"5EQ>XSYT K,baYj܊2lCOzWYVMT?- ҫ٦jոA1BbO5WYZVM;@.N2̶HBǟ`[0ANVYVUN A/{"ƍ$Tx&z/@)NVYWNA0`O6N#Wyg.?MAVYLWOB1 #}̦ݵ+DK-?LUYW$PC3N O޹8H$Dz0,&>:LU~YWPD4O *~ʬ®꧛۪v:+6=KUmY XEQPE5! nxP(|ųӋ)I,X%dĥǦޭR.ɁlHC2COcWY&VVM?.q!Y[_X-Uۿ&31?B"OWYVM@#/bNs /ݬʷ/+~0eANVYVNvA=0FKڷ5k5>/|@MrVYW5OTBO11HqJțjaK=Rm-?GMVYfWO)Cc2c Fj㭛Jĺ 6,>LUYW`PDp3 hT,rȧܴZÖՃ+=K`UrYWPDu4  U3c~C*`(:I#T$YX{R?G7X$xt·Өl:*њ6'9ISXXRH8% \I dKξ_b&9\H:SXXwSH9&b:ml*$8GRXYSIu:'L4ȩnb=#7F;RX7YVT9Jl;(i4|bү8̿ "6 FQDXUYTJ_<*!۳$>hˑM b!4AE/QXgY1UKX=(+b ‰檜䧴a p 5 3oDPW}YULL:>S,m+wiRedPanda-4.1.12/app/resources/output/audio/B7.wav000066400000000000000000002464121444020206400220440ustar00rootroot00000000000000RIFFMWAVEfmt DXdataL/BPeXXRE43˿Z}i(I=MVY]UuJ9_$, ڿig~YGQ!!7HWTeYWN?+2)|+(񦸧v|0zC7QXX>R!E2 NK?08]#j)=oMVYU J9#i J<%ŵ(kijè؊ "7ITsYTWLN?*qcj߬ڦܧ̯ћ_1DQXXQD1NUҼ= ¦иh{*l>MWYTIz8" ْIh/gWRo "S8wITY!WM>M*︙Ħ%)ZO1}DQXXQ$DM14ԦɬLX˕)?*>5NBW}YT%I7?" ۳©d3 x#8IUYVM>)RG}K$d2E(RXXMQC0Ѭ§¹Hr+?NuWnY_THF7! %kykS +$9UJNUYV'Ms=(+߮ Rٰz3}EvRXrXP"C/5R\)6d;",@NW_YT
sXor#xە $:JUYVL<;(oH ɐ«s?+-ԖL3ER YOXPBU/[oϤ@}~,@LOWSYSG6 yH± xɪൾ)\ %:0KUY_V\LP<')r{WiN4qFS!Y*XPPB."`2:yG9-AOWCYSPGo5[ּIzI\%DG&E;KUY'VK;&nǥBҨL*4FVS5Y XOA .mΡ?GJN7 +.AP X4YISF4 e2̨LǗ&; L/VYUK.;%&$9;xX25nGSJYWO A\- [#+j:..1BYP4XYS_F/4F4Ԝ0Fޯ'i !a7HlToYmWNn?V+.˰ɧĽ 50CWQXX RDK2l%]es)!>MWYUI8\# ĄhƩ _"75ITzY>W#N>*u::צEg19DQXXQiD1.7 zϦ-e*>M2WzYTaI98"U &?JݩdZī٣ #8ITY WMP>)\AʼvLӾvҬo 2DQXXxQC0@fzb¯ҧ+:?_NWWuYTH7! hػïf8ĴA[j #19J)UYV`M=N)}D.5Yqn,27ELRXX)QeC]0}km3G̝LU+?NWnY>TH63!&Omon2 2N $9JdUYVL3=(Ef̷쫝d/6P3ERYbXPB/~z\n,Q@OW\YS Ha6z +דYnSG&5y_{ި%0y&;KVYVK|;&oݔu#}$t15'GsSAYWOTA-!h6\nΏbPv.A2PX-Y%SF4Ri;A_I'<5LGVYUYK:% iu‚5I5GSKYWmO@ -ͭzxtP%/dBPAXYR#F3jd\bȜ$'MWYTI8# ٚVd^ABY ">8pITY%WM>]*ŦE> 1sDQXXQ/DZ1DӦ¬>Kˀ,*>%NEWvYT,I7K" ©h# c#8IUYWM>)fVʇU'rW2D RXXVQC0 #Ѻʧ8d+y?NmWnYjTH[7!3 7yÂfTũ $v9KJGUYV1M=(C"߸ HӰh2lEsRXvXP-C0%N`q3AZ0,@NWaY%TIH6 kR]kbdۂ $:JUYVLp 4FPS0YXOA.+|ίEKGEy%.AO X4YPSF4  y:ʨH~&;K/VYUK6;:&8GHyO"h}5YGSFYWOAm-.7i+*j6.$BOP3XYSkF?4ZGԯ%}9ޖ'`MVY UI8j#$ Đj C"7*IT~Y>W.N>*0LC¬ԦD\1*DQXXQtD1 CG!҄$ͦX*>M,W}YTmIF8"a AJ['ީgMĔٕ "8ITYWM^>*i[øCƾcҞ_1DQXXQC1N~tƯ٧ަxn +#?[NPWxYTH7! yþi2/MS #$9 J&UYViM=`) Y-/HY_2)EFRXX0QrCl0Ёm17̊:?+?NWlYETH 7I!6Uxil&B g$9yJfUYVMB=(Yqݷ﫠_ֿ$E3ERXgXPB/"~hG`,?@OW_YTHs6 9ץDpaƭ #%L:JUYVL<'& dWdc3&FRY>XPhB /+QyzŮu"ŭy -@mOWLYSG5Q5‹xߪjܢ %:ZKUYHV:L5GSKYWwO@-ԭ!ulb@ /`BwPBXYR0F3ytd_ȏ'岕 s f6GTTYWOT@t,]}  /BP_XYRET3:2 _ηa@߷(6=LVYlUJ9$U 26qivC)ס,!6{H@TkYWN?+RUH5emгy[0_C)QXXMR{G)=UMVY2UJ49# p`A˴6gÂf !7HTsY\W^NMWYTI8# ٯ\bP0-G "08eITY(WN>p*/ ˦z3*1iDQXXQ=Dj1LЦ/?k*>N;W~YT;I8\" ǩh Q#8IUYVM>)zbʗYpF2DRXX]QC0!5'ƽȧ%T+k?}NkWnYpTHh7!G &F؋ÊjItŚڱ $g9>JDUYV:M=)V6AϰaӮm2aEkRX|XQ9C#08br@IO){,?NWfY)TVH6 c$cjX Mw $9JUYVL=b(x1ɣԫs#tz)3ERYYXPBv/򮈧%͘XX,~@:OWSYSG266 gŲ(xȵ4_ l%:KUYkVmLp<'Mޒ33A/4YFSY5X[P3B.+Dm+$YU- AOWFYSkG57]x<2% &*;KUY1VL;&ǿLĨ&i 4FLS,YXPA&. >IQDMVYUI8v#=  Řjؿ 7"7ITsYJW2N>*?2]PƬڦ0D1$DQXXQD1ZY.җ)ȦJ*>M#WYTzIU8"u UZn+gEĄك "|8IT~YWMm>!*|pԸŦ >Y҄J1DQXXQD1dȯЦb[q*?NNNWyYTI7 " ųh*"8Dh #9JUYVmM=l)$ ]:.ALG2E>RXX3QCz0Ќw&${$.+?NWgYVTH'7N!F^|je + X$9oJ`UYV MQ=(i߅YĿ53ERX`XPB/!1 qa8O,2@ OW^Y TH6 ' G׵JoRƜ %<:JUYVL<(9nKYRz3FRYGXP|B+/+>cχȮŭںh,@dOWOYSG5^M&–wݪQܓ %:JKUYRV?L.<^'xUKq Յ9r4F S$Y&X5PA.ixv^7[ άvm-@AOWBYS1GI5+՛,yf Twt&j;K VYVK;&CݱǍ.ۨmJc5GmS7YWOkA-=·%DOdֻf>)S.APX-Y8SF4n; бV߶ȿ6&'<LFVYUkK;% v vb $5GSIYWO@0-,ح&q\W(.TBnP>XYR?F4}qMz'8i>(2l|<)=VMVY0U*J>9# oQմMW}YTI8(# پfcة >"6 ""8XITY.W N>*BЦ n 1ZDQXXQED~1ZЦ',Z*>N6W}YTFI8s" (˩k{ >#8IUYWM+>)%{ʝ`m72DRXXhQC0 9E8ֽЧG+W?zN`WvYrTHw7!] 6ZؘÔfGߴhņڠ #Y92J@UYVDM=$)bP,=ưxNӠ^2VEbRXzXQEC20NpROHm{+?NWcY5T\H6!v )lfH4i} $9JwUYVL=p(@ɮثe$be{3ERYWXPB/ϼ ͈CG,p@3OWYYSG<6K vʲ3s$H ]%: KUYlV|Ly<'^ޟB04SFR Y2XkP9B.>Mk)C H-@OWJYSuG5Fg}-+Ǧ &;zKUY5VL; '!ȶVƨڱT4F@S1YX PA3.T˻SS@6X-AO X1YdSF5F2[ר6^ݬ&;K VYUKU;]&^6g\|<եE]5AGSCYWO.A-P]K5^. B=P,X!YSFa4r| `ov'BN ?*UCl[Ϭܦݧޯ ѵy:1DQXXQD12jn?ң1æ7*>M WYTIf8" fny8g>}un "i8ITYWM~>.*|⸆ɦ6Cvp71DQXXQD01vٯݧݦЬ`sˮKY* ?ENHW|YTI7" ѳi%&2S #9IUYVxM=)5/j@+3742E2RXX@QC0Рy§عf+?NzWhY]TH37g! Pkgc  H$9hJTUYVMa=(~ߓS찺$3ERXiXP C/0H-mR&;,$@OWgYT,H6 >[On}Bƍ۸ $6:JUYVL< (N/Ȁ|JDDԷj3 FRYIXPB;/@Nyϑ׮zкY,@\OWOYSG5v\2Ÿq۪C} %:FKUYQVML;.APX/Y?SF4LܱSжȱ&';L;VYUtK;&*#uhN5yGSEYWO@E-=&mOG.FBdP>XYRHF4$ԍz@b'<|LpVYU K:X%@ ۍƺt3вxֻR B6GSYYW0Oj@,?;͔Ҽ/BP^XYREu3dV e׫Fߕ|(=LVYsUJ9$ X5I|mh0è׃ !6`H7TdYWN?+rhL񦲧PVАxV80GCQxXXZRUE2WCx<+To%)=EMVY;U1JS9# ^@k]Aa !|7HwTrYdWpNZ?:+˞Ƨս=Q:0CgQXXRD22be|ʑ2)1>MVYTI8<# r iΩ/" x"8FITwY;WN>*T' ˦d1GDQXXQWD1g Ԧ A*>N3W|YTOI"8"2 7 ѩikļ 3#8ITYWM:>)<$ʥn\美'2D RXXpQC0J\FὲΧ3+I?rN^WqY~TH7!f Nnؠåk>״Uyډ #G9,J5UYVFM=/)xe/%>o9ӏK2KEXRX}XQTC?0eZ[B `̸no+?NWjY7TlH6!?epvF-Lp $9JkUYVL=()Mɻ᫛iNTn3ERX_XPB/ؼ y,4,c@*OW_YSGD6c ׈вXkPNB."OZr%ܭ 46-@OWJYSG5 Us|!Ǔ & ;rKUY?VL;#'0ն\èϱCv4F;S+YXPAD.)3aӻ^PC+F-rAOX9YgSG5ZAc٨4Jݚ&;K"VY VKj;l&oN|e~3Փ7I57GS;YWODA-kkX ;Wή~p.A;P#X%YSFp42vP\d'1Ǧݸn%*r>MWYTIu8" {ًAc3mfW "Y8ITY#WM>@*Ŧ+5_b1~DQXXQDE1(ѦҬPc˝7F*>;NFWyYTI70" ޳g# $< #8IUYVM=)BCrJ($!%v2E1RXXEQC0ў̹U+?NsWoY]TH<7~! gpiZ 2$9\JQUYV"Ml=(#ߦRⰫ3EvRXiXPC/ )JO%1bH-,@NWdYT5H6 T0kMtu3zۥ $%:JUYVL<4(^G Ʌy?90ԩ_3FR YOXPBK/QdϟۮĺG,@UOWVYSG5 tD¨!vͪ2j %:4KUY]VSLL<'~jxfpT4zFSY1XCPB.^6D͊KM~-.AOW=YSDGk5OֶF[Z*QR&K;KUY&VK;&eǟ?~רT(54FZS3Y XOA-aΞ6HKQD2.A PX/YGSF4V-ޱʨ}Uǜ'; L8VYUK#;&71zb>5jGSDYWOAN-U*lE2.7B`P6XYRTF*4:-Ԙ 66GSRYW4O}@,TM͞¼Ͽ}/BPTX YRE3"ul"pի6 |d(=LVYzUJ9$ mIUlc(k 6UH/TfYWN?+t%MGJ}g>,08CQvXXdRaE2iVӇðI?])=9MVY>U>J`9$ jBmM.L !m7HuTmYjWzNd?P+˥ʧʽ.;)0CcQXXRDF2g!cq{)">MVYTI8H# {fʩ e"8*i30ӦQr1ADQXXQaD1%+v˦ 1q*>M5WzYT[I/8"H 6?թg[ĭٵ #8ITYWMF>)O4ʻmP޾zҿ2DQXXsQC04\nY콼ѧ!+B?_N`WqYTH7! `}سëh9ʹHev #<9J2UYVZM=H)v@'7a)z{72@ENRXXQdCM0xk_9K̬U_+?NWjY=TxH6'!$Dmoq9:^ $9JlUYVL-=(4aƷ嫡`7AY3ERY^XPB/ }f {,T@!OWYYSG]6p ז۲@nz @%e:JUYyVL<'޿Vlr 43FRY@XtP\B/ 4aeu ׭+-@OWPYSG54kztǃ %;aKUYDV(L<3'G! aʱ1ջi4F/S.YX#PA].6JtbW>#z:-bAOW7YpSG5kXtܨ&;݅&;KVYVKt;&e݋q+{!<5,GxSAYWOJA-za9XvΞgay.A0P!X'Y&SF4DpDNgV'!<@Y,@fw)/BPfXXRE;3Ϳ[wa(I=MVYbUxJ9f$5 $hkyV@N!7HPTgYWN?+@+,-np0{C.QXXDR$E2UWH17Uh)=pMVY"U J9#s QE*ź,jÞ؅ "7ITvYUWNN(?*~gsݬ֧̯ tѕX1CQXXQD1X\¾@ ¦}θ_s*j>MWYTI8" ٙJa hLJh "J8tITY'WM>Q*̦$!SF1{DQXXQ(DS1;ԦƬEW˃+.*>.NDWyYT'I7B" ée . m#8IUYVM >)UVyU%|_2D"RXXUQC0 ѲħDp+?NpWoYbTHI7!# *t{jSŴ &${9SJKUYV&M=(6߲ Mذx2zEqRXpXP$C0!=[d+AT@, @NW_Y#T@H6 bCYmi$fۘ $:JUYVL?&>;KUY*VK;&zǯ?˨?%4FXS.YXOA."sΥFEKH3.APX/YPSF4p2ɨJLj&;K4VYUK0;2&)@B~Z/t5cGSJYWO Ae-%'d(-g9".'BXP1XYSeF54L@ԧ(Aޤ'eO@,ad)ͮϩqo/BPVXYRE33!)vѫ%gU(MVYUI8\# ċjé S"73ITyYBW#N>* tK3ǬͦE_17DQXXQmD17?҃Φ&c*>M%WYTdIC8"^ 1DRݩgWğ١ #8ITYWM[>*aMŸuIξmҦi2DQXXQC1Fngï֧ݦw} +5?WNZWsYTH7! uök1Ŵ7Td #,9J-UYVcM=U) K/5Wlc&22EFRX}X1QfCf0yh0<̚@N+?NWfYITH 7:!4Ltml. $L t$9JdUYVL;=(Jlַ櫧Y׿4N3ERXeXPB/tXh,J@OWYYT Hl6 ,מo'-XAOW;YtS!G-5iՀ#ਂ!~'r&;KVYVK;&u*ݕ"#~i}.5GwS9YWOYA-*j!9Ym·YLh.A%P"X%Y0SF4T'űd29VD'<1LHVYUYK:% n wz,B5GSLYWsO@-ϭxtnE /gB}PBXYR)F3sj^\Ȕ'MWYTI8 # ٩RcS?3Z "A8bIT|Y-WM>f*%Ǧ D.1sDQXXQ7D`1HѦ¬4Js#*>$N>W}YT8I7V" k ^#8I UYVM>) j_ʍUu M2DRXXXQC0'!ѻ§.`+o?NiWrYjTH\7!8 >؂ÂcPxŪڷ $o9HJCUYV5M=)F2O˰fӼy2lEjRXsXQ/C01Qor=CT. ,?NW`Y*TMH6 sZ _jZV $:J~UYVL<\(m%ɞΫt+ԁ93ER YTXPBm/wϺ쮉(ͪ]g,@BOWYYSG%6, `¹.rêѵ>h z%:!KUYgVgLk<'Fއ--(&7;KUY1VL;&ǺHŨ.q4FIS5Y XPA.8}ιHHL+eU> 0 CPmXXrRzE3xӟ۰L ɠ4(y=)MVYKURJ~9'$ ڐXeys( $ !L7HcToYqWN?m+FĹ 0CKQXX$RD]2 |$OOV)>MVYUI8n#1 ďd© @"7&ITyYCW1N>*6%TIìڦ4T1$DQXXQD1LP$Ҏ$ȦQ*>M)W~YTqIN8"n FSc&bKĒي "}8ITYWMf>*w]͸¦ @\ҖS1DQXXQD1X}ί֧ܬrkw+!?TNOW{YTI7" ³j.)ELv #9J'UYVjM=h)[32HRX 2#EARXX/Q}Cp0Єr(-̄09+?N|WlYMTH7K!DRdl"; ^$9uJcUYV ME=(_|޷\Ͽ>3ERXhXPB/*ygDV,:@OW_YTHy6 =ׯInVƪ %K:JUYVL<(3jT^]3FRYHXPwB/$0Z{ʮwŭs-@lOWQYSG5W?tYܟ %:NKUYRV9L$XYR4F4 rpXȆ ' e˷W;߮('=LVYoUJ9$] >7tmlGל(!6uH@ThYWN?+dSN;dfЪoU0ZC%Q|XXORAE29||)e<(?rC)=UMVY/U"J89# xgHϴ7lza{ !7HTuYYWhNM WYTI8# ٴbgשB.!B ".8ZITY0WN>l*8Ϧt/1_DQXXQ?Du1MӦ.4f*>N=W}YTGI8l"  ˩g} H#8IUYWM'>)~mʚZm?2DRXXaQC0'B)νɧ$J+d?{NgWpYtTHq7!Q .MؓËgGkŕڨ $]9=J?UYV>M=)XD%CɰYӧj2cE_RXvXQ>C'0Dh|CPOz+?NWdY/TWH6 n)cmVHj $9JUYVL =g(~ 2ɭӫp!lr 3ERYUXPB/ȼ͗LQ,u@=OW]YSG56> lƲ0sµ2P j%:KUYlVrLv<'Uޘ7,9(4VFR Y0XeP6B.5Cl(N S-AOWBYSkG5Bdy40Ƕ&$;KUY8V L;'ĶO!_4FBS3YX PA3.>OQB:b -AO X4Y[SF47*Uب}>hݸ&;K)VYVKO;S&O3dT{A֯Sb5MGSFYWO(A-JNA/b. BIP'X&YSFU4rih y~'I*F:dT̬צ'Ѽ?1DQXXQD1&^f1Ҟ-ɦ@*>M#WYTIW8"z ^do5jB{} "s8ITYWMv>&*s۸Ʀ1DQXXQD'1lүצڬc}˸Wd*?GNNWyYT I7" dzg)/=^ # 9I!UYVrM={)''d:.9>D2E0TCQXXXRNE2M?oA&0`x1)=JMVY9U*JH9# zTܴMWYTI83# neש9 5 |""8OITY3W N>*D!˦n 1UDQXXQMD1 _Ϧ(O*>N:WzYTLI8{"& /ҩg q 8#8IUY WM4>)/}ʤd`/2D RXXkQC0?Q=ڽѧ@+Q?tNcWpY{TH}7!a Acؙàm>\Ńڔ #N93J7UYVFM=()nU/CuFӖQ2PE_RX~XQMC60XzUSEfvz+?NWiY1ThH6 ! 2hm|J5Yz $9JqUYVL=w("@ɺ֫d Rd v3ERYXXPB/м ́<:,h@0OWXYSGA6U zҲ2uA T%: KUYiVL}<'bެ>w 4NFRY6XlPBB.IPm& >=-@OWHYSyG5Nh q (ǟ &;wKUY=VL;'% жUܱN4F@S-YXPA@.+T̻YS>5U-{AOX9YbSG5M9\ ը7Tݥ&;K"VYVK];g&`Hv[{9՜?T5MWYTIm8" qu@l5*縉ɦ18qh,1DQXXQD>1z&ۯצӬTrˡFR* ?;NLWwYTI7&" ϳd&)K #8IUYV}M=)8=gJ)).+{2 E3RXXEQC0Оç!͹] +?NxWjY]TH77q! agf_  @$9_JXUYVMf=(ߜQ鰰3E{RXfXP C/;K/fP7,@NW]YT,H6 E'`Pmu>Ƅ۱ $*:JUYVL<((U9Ȅ}AC:Աg3 FR YTXPB=/KTϘڮ|ɺT,@ROWMYSG5c5©}ͪ9x %:;KUYVVRL=<}'xcyq|^4FS Y*XCPB.b. C͐ZS-/AOWAYSAG`5C֭<{Zi;YZ&Y;KVY"VK;&_Ǚ=~֨W0C4F[S9YXOA-_ΐ8AOXĻM1.A PX1Y?SF4Q ݱèQ̶ȫ ';L9VYUzK;& .+wgH 5sGSIYWO@H- F'nK? .?BcP8XYRSF4)%ԕ{;_'zMWYTI8A# ueϩ'  p"8DIT}Y7WN>*\+*ѦW}1CDQXXQ[D1"m Ǧ <}*>N1WYTUI'8": $> ֩gjĽٿ *#8ITYWM>>)D-ʮmX⾆2DRXXkQC0,OeL꽲ҧ򬐹)+I?iN]WqYTH7!t WpخâfA̴Vkڄ #B9$J5UYVQM=9)i6%;f5Ӂ<2AEYRXXQ^CD0k]_@ T̸_i+?NWhYFRYLQVYULK:% W۪x%–J^5GSPYWkO@-mܺĭ~Ȯb='-/xBPHXYRF3|[QTnȪ 4(Y! j)=jMVYUJ9#h F9$ų(ldzåؒ "7ITyYNWPN?*l`n٬ަ٧ү ўd1DQXXQD1JTҹ< иh*p>MWYTI|8" ~ًIe,k[Qu "W8wITY$WM>I* Ȧ'+[S1DQXXQ"DH1,ާݦĬP[˔/?*>4NEWzYT"I78" ߳f 5 z#8IUYVM>)SAG"h2E&RXXMQC0ѮǧLw+?NvWjYbTH@7! "ksfZ 1$9]JIUYV'Mq=()ߩ Sڰ 3~ExRXnXPC/4M]%8a@),@NW`Y!T6H6 W=nWmm0oۡ $:JUYVL<:(gNɊūx>+2ԘR3ER YNXPBX/WlϤ~B,@NOWSYSG 6 zJ«#wɪ㵾,` %:/KUY]VYLP<'&p~Xl K4zF S$Y+XJPB. #`5?́F>-!AOW?YSNGn5YּHz N[%FL&E;KUY*VK;&pǦBѨI-4FXS1YXOA.gΣ9ԣ1Nެ'oMVYUI8R# ~d˩ ["86IT{Y;W#N>*m@0ҦOk1:DQXXQgD1,3 vȦ/m*>M,WYTbI58"J .2Qީe]ĭ٨ #8ITY WMN>)VAʻrSо|ҭo2DQXXzQC0>cx^ԧꬃ+;?_NXWwYTH7! hعïe:ƴAbh #59J.UYVZM=I){B-7Y$pt.29EMRXX#QgCX0|pc5ḌNU+?NWiYAT~H63!(Kmnq13S $9JgUYVL1=(Bd˷뫞` 53T3ERY_XPB/~|]p,S@OWXYSHc6v  כ@qo 5%a:JUY}VL<'Ygoy33FRY>X}P[B /Baqw!ѭ!-@{OWOYSG5; t}xzܽ %:`KUYFV+L<9'N,)`DZ)ղc4F/S)YX%PAa.CLeXMWYTI8# ٞTi!`DC_ "G8jIT~Y*WM>X*ǦK<1wDQXXQ0DZ1>Ӧì@Nˀ(*>-N?W{YT.I7N" ĩd k#8IUYVM>)eSʆR!z\2D%RXXTQC0Ѽɧ;i+w?NhWtYcTHR7!+ 2yÀgTũ #$r9NJJUYV'M=(B"ߺ Fٰr2qErRXuXQ'C0#M[q/AZ5,?NWeY#TFH6 gRYnc_ی $ :JUYVL(=1MVYGULJu9$ ڄOkz30 !X7HiTmYoWNw?i+A˻̧ 0CUQXXRDU2 w"U[\)>MVY UI8d#& či O"73IT{YBW'N>*+JDڦ=_1,DQXXQxD1 ?GҊǦX*>M(WYTpIB8"a :MV%eRĜٔ #8ITY WMZ>*gXȸx¦EȾeҟ`1DQXXQC1Mzrůڧ٦tt+-?TNXWsYTH7! ~ùh14K]{ ##9J)UYVeM=X) R35N[b2*EHRXX+QuCf0l+4̑;A+?NWhYKTH7A!:Pxjl'B l$9J`UYVM?=(Vpܷꫤ^ٿ "@3ERXiXPB/ yoKb,B@OW\YTHs6 0תBt]Ƶ &%M:JUYVL<'$d^aj3%FRYDXPmB/!TvvǮq%ǭz-@sOWOYSG5O4Šxjܨ %:ZKUYMV1L"YWO_A-2r!=Tm}QCc.A$PX*Y/SF4`%ñ`(.O9'<)LGVYUdK:% |y s$75GSLYWxO@-ȭ+mgk; /[BPMWYTI8# ٮ_oөL5.M "<8[IT}Y-WM>l** ˦~8+1fDQXXQ6Do1Hצ5?m *>N?W{YT;I7_" ʩe Q#8IUYVM>)sfʑYsK2DRXXZQC0"0&ƽ˧)Z+g?NfWrYmTHd7!? 'C؇ËgNxşڮ $n9=JFUYV8M=)M<B̰ZӺt2fEgRXvXQ7C09]s{CCS(,?NWcY,TPH6 ~b&_m[ Su $9J{UYVLuIn6(MVYUI8w#8  ĕ!c޳ <"7$ITzYDW7N>*;/[MǬڦ/H1$DQXXQ}D1TZ)Ҙ$ŦJ*>M"WYT|IP8"v OZk)dFąن "{8ITYWMk>*zjӸĦ ;RҐQ1DQXXQD1` ϯܧۦܬm_p*?ONOWxYTI7 " ³d0';Do #9J#UYVoM=o) Z:-<KI 2#E_ρЮu!ݺm,@eOWMYSG5]J$”vܪWܔ %:MKUYTV:L1T`ݻk>/R.APX*Y6SF4t<ұ`ض=('<"L=VYUpK;% x vb%5GSIYWO@.-*ۭ"t`X+.VBpP>XYR>F4zoR~'e·R4ߣ(%=LVYqUJ9$f E!;yjn=ו!6mH?TfYWN?+j`XB򦱧__РiJ0ZCQXX\R=E2?0i7!=o|B)=TMVY;UJE9# oOӴ:ktTw !7HToY`WgNH?(+ˊܦԧSaU)0CrQXXRD2޾Yjʣ2@)>>MWYTI8,# ٺhhש B#< ")8TITY-WN>*@̦ r%1ZDQXXQED}1UԦ*,^ *>N=WyYTAI8m" '̩gs @#8ITYVM(>) vʟ\¦oᄃ52DRXXdQC06C6ѽͧH+\?xNeWqYtTHv7!\ .`؎ÙiDeŌڡ #V98Jd $9JyUYVL=o(>ɮիj ck3ERYWXPB/ʼ͑@M,s@3OWUYSG<6H rʲ2t(K ^%:KUYmVvL<'_ޝ>|',!4MFRYMWYTIc8" dlv8f9sr "q8ITYWM|>-*}ݸæ5Ezq<1DQXXQ D21pدާۦӬau˯P[*?ANOWuYT I7" ˳e))1] # 9IUYV|M=)0/fC26;3z2E2RXX>QC0Й}"عk+?NxWjYZTH07d!Ueja! E$9fJYUYVM_=( uߔX谿(3ERXlXP C/-E+kU"D,"@OWeY T,H6 :\׼Mm~EƎ۽ $4:JUYVL< (J,y~JFHԸk3 FRYIXPB=/7RrϒҮ}պX,@_OWSYSG5sZ3›r٪G| %:AKUYQVML7VYUsK;&'"vkO5{GSJYWO@=-@ "rTG.DBjP:XYRGF4'ԍvGk'QA0CeQXXRD02bc}ʓ2)4>MWYTI89# s eԩ5' x"8IIT}Y5WN>*L)ͦa}1SDQXXQSD1 e Φ I*>N4W~YTSI8"* 9٩a k -#8ITY WM>>)7%ʩg^龐+2D RXXpQC0IXFܽɧ򬘹4+O?mNcWoYTH7!g NdاÛg?ڴW|ډ #N9+J5UYVPM=2)w]0%Cr=ӏL2RESRXvXQNC?0aYZF e̺nt+?NWiY6TiH6!9mf>,Ot $9JtUYVL=~(&Kɹ૛kRS j3ERY^XPB/ؼ |.9,f@,OW]YSGM6W  ׀Ӳ9p8 N%x:KUYtVL<'mޮFr4CFRY>XjPKB.NUl*ڭ 2?-@OWIYS~G5Vt|" ǖ &;sKUY9VL;"'-Ѷ]ұ?4F1K-vAOX6YhSG5Y?d ڨ}6Lݜ&;K!VY VKe;m&jNzc{3՗7P55GS>YWO=A-ekT 9[έr.A9P'X%YSFj42vS_g'3:% IƂkNS4 6#HT_YWO,@D,1^l5-/CPkXXRE,3ӿT췋r(U=MVYXUoJ9T$ ڭ_jeI^!'7HTTjY{WN?+$sܹ%|0C9QXX@6-MW~YTIt8" x|و?d1se[ "_8}ITYWM>=*鸑Ħ+4g]*1DQXXQDC1+ޯצЬPh˝9N*?:NFW{YTI7/" ܳe$ !D #8IUYVM=)A?sF*(#+w2E1RXXCQC0Ц§ɹ U+?NvWkY_TH>7v! \uj[ 4$9YJUUYVMn=(!ߡQ䰬3EyRXoXPC/ )BS1dJ2,@NW^YT0H6 J2g Qqy0ƀۦ $*:JUYVL<7(XDɇyA:5ԥZ3FRYIXPBL/N`ϡخźK,@SOWRYSG6 jB¤#tЪ3l %:8KUY^VPLI<'fydx\4vFSY.XEP B.]5@͇RL-.AOW?YSHGe5P ְFxOj9I\&I;KUY%VK;&fǤ8ѨT+:4F[S7YXOA-[Ο4HKRĻJ 2.A PX0YGSF4X&èMǶǟ&;LMWYUI8L# { kƩ e" 8:ITyY*e2.ԦRu1?DQXXQ_D1.tѦ ;w*>N0W}YTYI-8"= &%K کfdIJٹ "#8ITYWMI>)I:ʲqTھҼ~2DRXXqQC0._f[齹ӧߦ𬊹&+??gNYWvYTH7! [{سæi:δIhx #>9J3UYVTM=?)n>&9e(Ӏ{92;EVRXX!Q^CN0ugc9O̭We+?NWhY=TxH6*!Fnjw7=] $9JhUYVL(=(7\ķ嫡`6Jb3ERYaXPB/}c" |,Z@OWVYSG\6k יԲEjw$ >%g:JUYtVL<' ޽Sf~49FRY?XuPVB/,bat!ح''-@|OWKYSG51jy vDž %:mKUYBV%L<4'>''۶aϱ3ռg4F9S&YXPAX.6FraW<'{:-gAOW9YmSG5kRnܨ,;݉&;KVY VKo;&\݆o|,Հ C5'GS:YWOIA-vc9[tΟlc{.A6PX-YSF}4? qIPlV'%<=LJVYUSK:% XwDT5GSQYWoO@-mŭyɮ^/% /xBPJXYRF3^\RcȤ. (MWYTI8" ّNf*aVFo "M8tITY&WM>O*󸘬Ȧ""SN1xDQXXQ(DM15ۦMRˏ$9*>.NFWwYT#I7;" 㳿j- u#8I UYVM >)ZJʀN&}c2D*RXXNQC0 Ѳ§Ar+~?NmWpYdTHN7!! $uxkQż ($9OJSUYV#M}=(6߬ Iܰ|3yEtRXqXP%C0#6Za+=^8!,@NWdYTBH6 ZHvWng)hۙ $:JUYVLܦ͵Ūr,\֘3 !6GSUYW@O@,ba,ͤꮼϱvp/BPUXYRE35~0mͫ&kV(MWY UI8\# ĈgƩ U"77ITY;W'N>* y@<֦Ca18DQXXQjD189}˦$c*>M)WYTeI=8"V 2?ScTĠ٥ #8ITYWMZ>)aI¸uKξqҨm2DQXXyQC1Fm}hاۦz+1?[NXWuYTH7! mؾôg5Ĵ9Z` #29J/UYVUM=I)F2-x„voܳ %:ZKUYLV,L<>'Y40e±!թV4F-S)YX,PAm.HXpRBx#-[AOW6YxSG15d~"~(z%w&;KVYVK;&r&ݕ|!$k/5GyS7YWOZA-%o?StΆ\Ph.A%P!X&Y-SF4Uf4:[B'<,LMVYU[K:% jvy2A5GSLYWqO@- ͭ!uowB% /bBP!7HETmY~WN?+M?;5𦶧kv`0qC&QXXHR3E2%dgS60K [)=eMVY+UJ,9# `S:ſ6eÎt !7HTwYTW\N/?+yyڦ٧iтqH1CyQXXQD2fk;H¦uƸJe*X>MWYTI8# ٦TeVB4] "C8eIT~Y*WM>d*Ц@91qDQXXQ5D\1A٦>D{&*>(N=W~YT4I7V" Ʃh _#8IUYVM>)jZʎS wS2D!RXXWQC0(ѿʧ 4`+t?NlWnYmTH[7!3 8؀ÄfRﴄŤھ $q9IJDUYV0M=)J'߻FӰg{2lEkRXrXQ.C0.Qir9CS2,@NW`Y(TJH6 vT`k^Yۄ $ :JUYVL5)&8;KUY2VK;&ǹFȨ3s4FMS1YXOA.2}ζHIHCu! .AOX1YTSF4$zDШ@ǁ&;K-VYUK<;@&;OK~Pfv5XGSDYWOAs-48v5.f,.BOP2XYSgFJ4^QԲ}.ޗ'X<_LaVYU.K:%t Yܻյ̪r'Pօ" 6GSTYWGO@,ut9ͷ鮬ϝybb/BPPX YRE3D*7qWrH(MVYUI8h#1 ďeé F"7)ITzYCW.N>*2$VBǬԦ6T1'DQXXQzD1JM#ҋ%ͦQ*>M'WYTtIJ8"i EOc%eMĐّ "8ITYWMg>*r]͸|æ EaҔX1DQXXQC1Tyίԧܬuk{+%?SNQWzYTI7" üd30@Wq #9 J&UYViM=a)S86KZR2'EDRXX/QzCm0Ѓo16̃67+?N}WjYNTH7H!>U{gl"8 f$9yJbUYVME=(_t쫨Vѿ:3ERXeXPB/& tkBY,=@OWaYTHw6 7ׯCtTƲ %Q:JUYVL<(*lU_a3!FRY?XPoB"/3RyȮzɭt-@gOWLYSG5W:t]ܣ %:WKUYNV7L$VYUjK:% y |j-5GSKYW{O@!-$׭!teb5 /[BvPAXYR6F3tkVȅ '; eŷa8ߴ(+=LVYmUJ9$] 78thtB#ם'!6sHETcYWN?+[XP@ZrдvR0cCQXXMRAE26y{&b8$EuF)=YMVY0UJ:9# wbJʴ:g{b !7HTuY[WbN@? +˂ۦاYma20CwQXXQD2}ӾYoʮ:O)G>M WYTI8# ٳ`e۩I-'@ "(8bIT~Y0WN>o*<Ȧt)(1hDQXXQADo1QϦ-7g*>N)ypʑajB2DRXX[QC0(:,ɽȧ!Q+d?}NhWoYtTHn7!J -M؋ÒlEmŖګ $b9;JCUYV8M=)YADǰYӫh2aEeRXzXQ?C$0BdzEKP!{,?NWiY)T[H6 n'clS Hn $9JvUYVL=`(y 0ɪѫk' nr(3ER YUXPBz/͛KW,{@9OWSYSG66< lŲ-uõ1U l%:KUYhVsLs<'Xސ:*;#4]FRY5X_P5B.4Cl(VR-AOWCYSlG5=c{0:ǰ&%;KUY4V L;'ŶMè$a4FES1YX PA1.CûMOD;d-AOX7YXSF47$LӨ=hݼ&;K(VYUKO;M&Q*aQ{DֵWc5NGSCYWO)A-GN@3a . BKP*X YSxFV4pe~lހ'JM!WYTIX8"{ Z`q0g?yـ "v8IT}YWMr>$*oڸƦe #9IUYVvM=x)&(]?0;DD2E>RXXYS5GM50՘6}fzOpp&d;K VYVK;&Kݵǎ4~ڨbA^5GoS1YXOwA-BΊ)CO`ֻc7$P.APX1Y6SF4{;ұ[Ӷȵ/#';L=VYUwK;&  ytZ5GSHYWO@8-0ݭ%p[O$.LBnPiiQj !7H~TrY_WoNI?4+ːܦէG]J 0CnQXXRD"2[eʡ!@)?>M WYTI8+# ټofة<3 " 8RIT|Y5W N>*Fͦ e1UDQXXQND1cϦ'"Z*>N2WYTII8t"% )ʩlx ;#8ITYWM4>)1xʥaf쾞12DRXXiQC0 CH>ٽЧC+P?{N]WuYxTH}7!_ @]؜ÙiB޴bńڗ #V9/JP(X%YSF`4&vw Yjq'>/BPMX YR F3kBDI{.N#( 6+HTaYWO"@?,Mn,B8/CPlXXRE$3ӷQ|(]=MVYQUlJ9I$ ګbgiU  g!37HZTjY{WN?+jٹ0C?QXX6RE}2093.Dj.9)=}MVYUI9#R 3!š(gҳûب !"7ITvYLWDN?*SNs^Ҭܦۧݯѱw21DQXXQD16ovAҪ2Ŧ2*|>MWYTIp8" is;h;yqe "f8IT}Y$WM>4*縈Ȧ1=qk11DQXXQD51{ݯ֦֬Wp˩BZ*?;NLWzYTI7%" ճh$ %'T #9IUYV{M=);5kD*..4}2 E4RXXBQC0Йѹ^+?N}WgY_TH87l! ^ii^ @$9`JWUYVM`=(~ߚQ밳 3ERXnXPC/;G,gR 9,@OW`YT*H6 D#^Sk{<Ɖ۱ $0:JUYVL<((O8~DAAԭa3FR YOXPBB/BW|ϕخ~̺T,@XOWLYSG5~a4¥wӪ>w %::KUYXVOL=G^5C֨?{Yo?Y`&W;KVY%VK;&_ǟ4Ҩ[6A4F_S5YXOA-UΓ4CPT̻O%@.APX2Y@SF4TޱQ϶Ȱ& '; L?VYUzK;& ,*zhG 5mGSDYWO@D-E&mHD.?BgP7XYRNF4.Ԏ~<^'{<|LkVYUK:\%G %ۖƷo5ͲrֲK =6GSYYW2Oo@,EA͕ͼ/BP[XYRE{3dak٫>߆m(=LVYxUJ9$ a:Lme0 ãׁ !6cH0ThYWN?+|jIMUЏnS00HCQ~XX`RYE2^OvŰ?*Mj)=AMVY8U:JO9# eߴHf\9Z !v7HuTrYdWvNZ?C+˝Χֽ9F: 0CaQXXRD92h_uʋ+)1>MWYTI8?# qfΩ($ l"8?ITwY;WN>*X."̦\}1KDQXXQTD1oɦD*>N6WyYTUI!8"5 %7ѩjfĺ )#8ITY WM@>)B*ʲg\ྎ#2D RXXpQC0"S]Pίͧ񬓹.+I?jN^WtY}TH7!t Rnحàh<ִPtڃ #A9+J1UYVSM=9)}i4'?n3ӉE2EEYRXXQUCI0ea\@\̵do+?NWfYLVVYUHK:% Sުs(™Jd5GSUYWdO@,fۺ­{ήb?,,/}BPJXYRF3VROrȱ9(: % HƏtGF) 6HT]YWO/@Q,5_s! 1$/CPkXXRE53ÿS췀o(U= MVY_UoJ9V$+ ڹgh}_GQ!'7HPTnYxWN?+-!} #򦸧xy0C7QXXǦոn*o>MWYTI}8" |ٌDc)o]R| "]8tITY#WM>G*Ʀ$*`V 1DQXXQ"DF1.զ̬N]˛,E*>9NBW|YT"I76" ޳i; {#8IUYVM>)IGvM(##e2E%RXXIQC0вǧǹR{+?NqWmYaTHE7~! jthZ -$9WJPUYV(Mn=(+ ߣR۰~3{ERXtXPC/0NV'4_E ),@NWeYT
3ԡ2Mޱ'oMVYUI8Q# zaͩ ^"8;IT~Y9W"N>*i>/ѦMm1M.WYT`I48"J *1Mةi`į٬ #8ITYWMO>)R?ʼpLپwҶs2DQXXwQC06cu\֧ަ+;?`N\WsYTH7! jظîj5̴Abp #79J3UYVTM=B)rB/<_$vr62?EMRXXQgCV0yig5E̪I`+?NWeYCTzH6,!'Gqkq63X $9JkUYVL3=(C^̷ꫛg87W3ERY\XPB/ y_x,O@OWYYSH`6u  זAos 6%c:JUY}VL<'޾Zdtz33FRY>X|PZB /8ggq&Э -@yOWHYSG56q}xǂܹ %:^KUYFV+L<>'D2,`ȱ)նb4F1S+YX(PAe.:O|gU>"u5-_AOWMWYTI8# ٛQiީ'\KBd "J8lITY'WM>W*ʦID1wDQXXQ,DW1@Ԧ¬EJˋ7*>&NEWyYT(I7@" f' j#8I UYVM>)`SʂU'x]2D"RXXVQC0Ѱŧ?g+~?NqWnYfTHP7!. 3uÀiSŮ $w9PJFUYV1M}=(>߳ Kְo2wEnRXrXP*C 0$E^i49`1, @NWfYTIH6 eMXpjiۊ $:JUYVLO@,pa(ʹ򮫼Ϣog/BPSXYRE370sʫgzR(MVY UI8e# ĆdƩ O"71ITzY@W)N>*&|L<ìҦ@Z11DQXXQrD1 ;E҅Φ#^*>M"WYTlIB8"] =EV#fRĝٛ #8ITYWMZ> *dTǸxC;dҦf1DQXXQC1Jvjܧڦzr +.?XNTWxYTH7! xöj/´0SZ #)9J)UYVhM=]) Q06Q`e2,EGRXX-QqCh0xp-7̔;G+?N~WmYFTH 7@!6Oyho("D o$9{JhUYVM==(Spط뫣]ڿ#&D3ERY`XPB/  {pN `,J@OWXYTHq6 0ץCqaƷ #%T:JUYVL<'$b_ao3'FRYBXPgB/(H|qîvͭ-@qOWJYSG5J2…rcܮ %:YKUYKV1LYWO^A--rAPpTEd.A"PX(Y/SF4X%f.1Q='<*LJVYUbK:% t r|t&=5GSLYWwO@-ӭxrgD /eByPBXYR1F3xkf[ȍ'ƴ5iÉj !7HTsYZW\N:?+˂ݦ֧iro;1C}QXXQD 2rsѾNvʹ@c)\>MWYTI8# ٭YfܩM=+Q "48gITY-WM>g*. ̦;-1lDQXXQ8Df1JЦ4Ap *>#N>WzYT5I7X" Ʃh ]#8IUYVM>)pdʎ\!pM2DRXX[QC00"ýȧ+\+j?NkWmYqTHc7!@ !C؄ÊiLyşڵ $j9DJCUYV9M= )N5HͰ`ӹq2dEmRXxXQ6C05ZqxBDN0},?NWeY)TPH6 xc bk\Sz $:JUYVL<](q(ɣϫo+v*3ERYVXPBv/w¼쮉$͠]\,@>OWYYSG'66 d¿,sªʵ :e o%:KUYjVjLk<'Eގ0:E/4`FSY4XWP1B.34g+#X'`- AOW@YScG5~.Vw9=(#&1;KUY4VL;&ǿHŨ/f 4FMS1Y XPA&.8θLKG>l.AO X1YZSF4,FͨAp&;K'VYUKG;D&C$ZK ~Nּ^q5OGSBYWOA|-;A~=2c&.BLP-X!Y SrFO4mSԵ|r*ދ'O<`LYVYU1K:% W+ܻߵ̪r(O~ 6GSTYWMO@,{Bͷ㮦ϑuXZ/BPPX YRE3L*.9xī Kp:(MVYUI8r#6 Ĕgݳ ="7%ITyYGW1N>*:,[Hʬզ6R1DQXXQ{D1XP-Ғ%Ǧ L*>M%WYTuIT8"t K[d0ߩlMċل "~8ITYWMi>*vjиæ A\ҋQ1DQXXQD1^ ͯۧܦܬo_w*#?LNQWyYT I7" ³g/+9Lk #9J$UYVoM=n)^3-ANN 2!EARXX0QCv0Єx(#̈<+?N{WpYITH7R!@\{kd#- d$9|JYUYVMQ=(d߀Xʿ ;3ERXkXPB/4#w`8W,4@ OW\Y TH6 " @׵IpTƤ %J:JUYVL< (5mP\V3FRYDXPvB)/"=Z|Ѯt!ߺn,@fOWMYSG5^D–zڪZܖ %:OKUYPVY~S.GC5(Ք/}lWu&s;K VYVK;&?ݭNJ,٨nQd5 GlS9YWOjA-9΄#BRb޻o@1V.APX(Y;SF4l6ͱ]ܶ?)'< LCVYUlK;% yzh-5GSKYWO@0-&׭'m\],.SBvP:XYRb_ФmM0XC"Q{XXQREE2?/h>+6n<)=RMVY5U JB9# ypJҴ=eyT| !7H~TtY_WeNE?(+ˑӧPhU-0CpQXXRD2}Moʫ.H)E>MWYTI8# ٹgg֩?)? "(8YITY.WN>|*8Φj 1cDQXXQGDt1XԦ-/\*>N=W{YTCI 8l" *ϩdx G#8ITYWM,>)% qʜ`e<2DRXXaQC0 .F/ҽ˧B+d?tNiWoYvTHq7!R 6RؕÒjDjŌڢ #d90JCUYV@M=)`L"AðPӤ_2_E\RXuXQAC.0IlLPG r+?NWbY3TZH6!v/aoQAf $9J|UYVL =k(=ɩګn!bo~3ER YSXPB/ļ͏GK,s@5OWRYSG?6B tDz1s+L d%:KUYmVwLx<'^ޚ<"7%4PFRY8XaPA|=X+(M%W}YT}Ic8" dgw5iAwv "k8ITYWMo>2*z߸Ŧ7Kxx;1DQXXQ D+1rկާۦլax˳P_*?GNJW|YTI7" γj%*8X #9IUYVxM=w)/.c@+7>:2E9RXX=QC0Д~#۹q(+?N{WkYWTH/7_!Ph}n\! H$9kJWUYVM]=( xߍS$3ERXlXPC//?+kW&B,*@OW]YT$H6 7QNoEƑ %4:JUYVL<(G-x~LFLԸl3FRYFXPB>/4MqώԮ{Ӻ[,@`OWQYSG5o[7•"pڪK~ %:EKUYUVHL7PA.x ]6 Rͥae-:AOWAYS?GN5?բ8{`vHfj&];KVYVK;&Sݸǘ2ب d@M5G`S;YWOxA-MΊ1?TYѻ[.F.APX0Yݭ(mRK.HBhPMWYTI87# o gЩ0( ~"8LITzY9W N>*M "Ѧc 1QDQXXQTD1cԦ"N*>N3W~YTJI 8y"3  - ѩe j 0#8ITY WM;>)8ʫa¦c辖&2D RXXfQC0CX@ཬѧߦ0+X?iNfWoY|TH7!h Ej؝ák?۴Xŀڋ #J90J6UYVKM=/)tZ/#Dt=ӔP2PEXRXyXQPC;0^S[Bbpv+?NWfY5TlH6!0ni|F-Ut $9JvUYVL=~(#Fɾ׫gO]r3ERY[XPB/ټ{66,f@+OWVYSGI6V }Ӳ7p7 S%y: KUYkVL<'nުHu4CFRY?XiPIB.PPk*ܭ 4=-@OWEYS{G5 Mky# ǜ%;kKUYEVL;'+ԶWձF4F7S1YXPA@.'+_ѻ_NB/N-tAOX7YgSG 5QBe ڨ2Uݙ&;KVYVK_;l&hIwb=Ց6Q5:GS@YWO7.=f).{)=zMVYUI9#Y ;+ũ)eȳðء "7ITyYNWBN?*eR}^ڬئߧԯѫn,1 DQXXQD1?vJҫ<˦޸t)*v>MWYTIq8" vzقDp;rfb "a8~ITYWM>@*踏Ʀ-7hb,1DQXXQD<1%ާܦʬYeˤ9P*?9NJWwYTI7," ܳi I #8IUYVM=)>>qE&$#,x2E0RXXBQC0ТԹ^+?NwWlY]TH=7r! Xy{rU 8$9^JSUYVMg=(ߟQ䰱3E}RXoXPC/)=R.fL.,@NW\YT.H6 J-f Opy3ƃۨ $+:JUYVL<.([=ɀë>>6ԪZ3ER YNXPBI/J`ϝڮźL,@TOWUYSG5 i=¤%o֪5n %:6KUYZVSLD<'wd~a\4|FS#Y)XGP B.^4C͎PR--AOWDYSHGa5Nֲ>uQh4UU&R;KVY#VK;&dǣ7ѨQ(>4F^S5YXOA-bΖ9BPQŻK..APX$YOSF4Z"ŨVȘ';L5VYUK;&4+u_?5rGSJYWO@N- P*kE:.9BbP7XYRRF%49$ԕ9V޾'zMVY;UMWYUI8H# | iɩ! i" 8CITY8WN>* _4(ΦUx1DDQXXQ_D1+rЦ9z*> N-WYTXI,8"A )E _aķٸ #8ITY WMC>)E8ʮqZھ2DRXXqQC01TlQ콶ӧ񬉹&+F?`NcWpYTH7!~ Wzدçh;ϴLj| #>9"J2UYVWM=B)p8,?f.>2GENRXXQ`CI0slW>M̵Vf+?NWkY9TyH6&!Cmky4H] $9JpUYVL(=(4Z÷䫠a@D`3ERXcXPB/ h"#,V@&OW[YSGY6h ׌ݲ:qz' A%k:JUYwVL<'~޽Ply 3>FRY;XwPRB/,`^p$֭+(-@|OWHYSG5-gx tǃ %;dKUYCV#L<-'@ #ڶ`ϱ2o4F7S(YXPAW.3Bq޻eR@&~;-fAOW*ų0då؇ "7ITyYKWWN?+sdk֦ǯzїV"1CQXXQD1UWҾ≠fv*g>MWYTI8" ِJd'iQPm "M8vITY$WM>P*Ȧ(*TM1}DQXXQ'DM11٦ƬHZˌ+8*>4NBW{YT%I7A" ܳée 3 t#8IUYVM>)SKK"h2D'RXXHQC0 ѭŧHu+?NlWuY[THC7!! )ovhVź ($9UJMUYV'Mv=(/߮ Qװx 3uEwRXpXP#C0;Pd'<ZC !, @NWeYTBH6 [@zRrq"rۗ $:JUYVLͿy{,@NOWTYSG 6 N®'qϪ׵ay %:/KUYaVYLW<'+vUhO4oF S"Y+XPPB.)e09xB9w-!AOWCYSSGs5[־Hx KUAE&A;KUY)VK;&tǭ=ɨA)4FVS5YXOA .mΤAEMJ9.AOX-YOSF4i/ŨFǓ&;L0VYUK.;*&&><yZ7w5aGS?YWOAY-%a%)k8,..BXP4XYS`F34G<Ԩ.Cޭ'gymY302CQtXXgRjE2wcӎϰFɴ4L )=9MVYCUDJm9 $ vIkC? !a7HoTlYoWNp?\+)˰Ƨ!,0C[QXXRDP2q Zbp)>MVYUI8X# ąhĩ Y"76IT}Y*pD6զAg15DQXXQmD12:~ɦ*h*>N$WYThI:8"T 19Te^ĩ٥ #8ITYWMV>)^FʾuLоsҪj 2DQXX|QC1=pwg֧ߦ+9?YNZWtYTH7! pîg5Ĵ?Wi #.9J*UYV_M=O)G.3R#hn)26EKRXX%QjC^0vf3@̞FP+?N~WmYATH75!.Gxip0 0J }$9JkUYVL3=(Ieҷ髠b-3P3ERX_XPB/ ~y[ i,P@OWUYTHm6x )כ@pj .%[:JUYVL<']fkt3,FRYEXyPeB/>omt#έ-@rOWJYSG5B&v „ yuܶ %:\KUYGV2L =LVYlU~J9q$G !.lkvN4װ7!7HETnY{WN?+DB;-pud0pC+QXXBR3E2#beT72M Y)=bMVY(UJ%9#} fH?Ÿ:aÏw !7HT{YSWYN/? +{wܦا¯jхuG1CQXXQD1hgϾCzøPf*_>MWYTI8# ٥Qd"SG8Z "<8lITY*WM>d* ̦C:1oDQXXQ-Dd1CΦŬ8My!*>)N?WzYT1I7T" ũh b#8I UYVM>)c^ʆW"v R2DRXXUQC0#Ѹç 5^+y?NmWqYgTHW7!5 5؁hNŬڼ $w9FJIUYV1M=(F' LҰm2sEhRXnXQ.C0.Lgp7BU1,?NWcY(TGH6 nW`jdbہ $ :JUYVL&7OF{Pix5VGSAYWOAq-34s2,g..BQP1XYSfFF4XRԴ${6ޕ'YMVY UI8l#( Đh© C"7,IT~Y=W1N>*-"OF٦7T1*DQXXQyD1DMҋ"ȦU*>M%WYTlIK8"` KFf!gPĔِ "8ITYWMb>*pZ˸zŦ HfҕX1DQXXQC1Suǯڧܦsn~+*?QNUWvYTI7" ÿg32DVx # 9 J&UYVkM=`)U47R]X2$EGRXX,QxCn0Њe/1̊6<+?NWiYLTH7G!=Q~dp!< g$9yJdUYVMB=(Yv޷﫢\ѿ!?3ERXjXPB/% vjC[,A@ OW[YTHv6 :תIm[ư !%H:JUYVL<'/ dY]e3$FRYBXPoB/*Xz}îzȭu -@nOWPYSG5P=ˆu_ܥ %:RKUYKV9L M WYTI8# ٯ_dݩN-*E "/8`ITY+WN>r*3Ϧw3#1gDQXXQ;Du1PҦ45m*> N9WYT=I8`" ʩey Q#8IUYVM>){iʔ^ mC2DRXX\QC0"<%ͽΧ$S+f?NhWpYqTHl7!M %M؋ÌeNyŐڴ $e9;JEUYVMVYUI8#5 " řhسؾ 1"7ITzYFW7N>*B5_Rɬ٦,D1DQXXQD1"Wb,Ҝ(Ȧ@*>M(W|YT{IU8"w Vak3iEĂ "x8ITYWMn>#*oո 6M҈I1DQXXQD#1gӯۧۦܬe˽[k*?LNMWyYT I7" ijh(;;i #9I UYVtM=r)%$_;0=DG2E8RXX9QC~0Ѝx${*+?NyWjYVTH+7Q!J]dj) W$9pJ\UYVMP=(j߆Yȿ 13ERXgXPB/%4 "sZ.N,.@ OWcYT&H6 'G׼NlNƛ %A:JUYVL<(>!nNQTw3FR YHXPzB1/,@iωͮ{ٺh,@eOWKYSG5iI&™vܪQ܍ %:JKUYVV=L5<\'VMsՃ4r4FS(Y"X8PA.n|}\6UΥwf-BAOW9YS3GF56Օ9娂j|Rsp&k;K VYVK;&OݫǕ,ڨkLX5 GiS7YXOnA-BΈ&DPa׻j3.J.APX'Y=SF4x7ͱ^նȾ7$'; L=VYUoK ;% s pX5GSIYWO@7-3 ح%t]Q%.PBlP?XYRCF4 ԁqJt'M WYTI80# f cة=3 "$8QITY/WN>*FΦ l!1UDQXXQKD1[Ц%(X*>N1WYTDI8p"$ (Ωg t <#8ITYWM.>)(|ʟef42D RXXgQC09L6۽Ч:+_?oNhWnYzTHy7!Z ?ZؚÚlAcņژ #W93J:UYVCM= )nK,=ðxJӜW2TE^RXxXQFC30TqWMJly+?NWkY.TdH6!{ /iiH5b~ $9JvUYVL=w(:ɸիh]d{3ERY[XPB/μ ͈=E,o@0OWUYSG?6N rв3o!F Z%: KUYoVzL<'aޢAw-4LFRY5XiPAB.=Pl(EG-@OWHYStG5 Jg{.$Ǩ  &;{KUY8VL;'" ̶TޱS4FAS.YXPA>."VλUPD1R-AOX2YeSF5I3X ը}?Qݯ&;K$VYVKZ;`&]Ao\|;՞A[5@GSAYWO4A-[YJ 0cξ. BB/BPKXYR F3j>GA|/T#(ҧ4ɦ0*>M!WYTIj8" es|8b8~pl "g8IT}Y"WM>3*~帊Ħ1Bqn61DQXXQD51vܯߧئլZq˭EW* ?CNIWzYTI7!" ʳ`*"0N #8IUYVxM=)85gF.060{2E2RXX4J)yd Pͭlxkѷ< \#)/9tCKQYVXY3XTOH#@"6*[1ݢѽ',kЪ㯻5AX(_!-87BuJ QUXYXxUPIuA7, 7F:8f_uucZ>콨ǚҠM+ 7@eI8P?UkXYXVRQJB9+.I"tԳɲ%5 qA4܂:O*5?LH\OTXYYVRKC:/#mG 5Cܦ?rl%۳cO( 4Q>,G{NTWqY9YVRL$E;\1%9' 4ط`eL}ǨӬF`w5 &2<FMYSSWSY`YkWSMTFM=2c'gZDοÓæbNU C%0;DLRV,YzYW/TNzG>s4)B(*糶`zy߰U6v #`/ :CKQeVXY+XTOH@5*vQoѓ}٩)jܶ_Iuԍ^!-8_BJ!QUXYX`UvPIKAs7^,R T AEggj\T'ʵތK ),67AIUPOUuXYXU7QJB8-"a3ɒ#𪽧g"Ʃa׼Z8ݺ3qP*5?lH{OT!XYYuVRKCW:/#0 {XwGġUT(94z>MGNTWvY3YVRLE;,1% RZ؈8=4tרɲeΪ)m -'2=,FMvSZWZY\Y[WzSM3F#=23' *)Ηjв٨m5۱:-RE t%&1;DLRV0YzYWTNWG>G4(ciۡġóM F֋o ##/R:CKQyVXY$XTOuH?5*[|@?fܼǴc˩"hxɤ+W!-8BJ>QUXYrXYURPIAJ7+, Vϵ/Tbeib>4M}K R,k7AAIkPdUxXYXU#QJfB8-!$i{Vb檮j%۩sfGo*5?HOT(XYXlVQKC(:p/# EZ%ʸఀ|[߳ϋ#3)k4>sGN,TWyY0YVRLD;0K% d%[ !ñ#g¦岊4(]o#.yxH٦ <'־< a#/{:CKRVYYXTaOWH?5T*'C9ƸOiç5^8"&. 9BJQQVXYoX@UAPgI@7+]ިү9e\xo[ b(93&~ ,7kAIPrUXYXU Q|JCB8-!m1eJ%@Ѫf2婍Ɣ}$Q*6#@HOT5XYXWVQKC:7/a# L 'զʌܷq|kȭGVn7)4>GNGTWY$YVRLDl;0%| .'U gډ0.'3j=vFMSwW_YUYDWJSyME<]2&`Y JٶA&_}XT e%1 3s(.1FϧRo6٦ &a#W˱ ~ *$/:DK+RVYY XTLO.H?n5 *uSƎ2pǧHBҿ1Cn"Y.59BJjQVXYbX1U%PII@6+Y"qw҃̽4Re|v*Wdq.h ,7AIPUXYXUP\JBb8n-l!5-ϯe9 Bѯa+J6@@HOT:XYXLVQcK\C9/+#k wd^y{ܭ!y*یC,o)4>GNWTWYYVzRhLDE;0$\C c̷ݸJʦ(ֺĝ@ڿif'C3=FMSWeYNY7W7SYME<.2&(" يsq. ͐7 &1:3H(cJy4ja!צ+̫DM,\ ^$0:5DLIRVYYXT/O H`?;5)8"yܲjl qѧ.ac9g?|".c9BKQ!VXYWX!U P,I@6+|p+b(9ye)4?GOfTWYYVgRELqD;n0$# p2ˏq?˦8?4sU'l3=FNSWiYJY(W$S9ME{<1e& IKVڹ`Jʹ>-&z G&1f+(3=F8NSWpYAYW SMEM<1.& a+¹A~jke[ z& 2I P.UUXYX VsQKBQ9v."c-L)WU'ͧp &xvžЖ0W *L5o?H9OTXYYV;R L#D:0K$ @ lAq;*٦(gxA*`z[(3>FSNSWoYAY WRL_E%<1%~~ "~̜“'g ,Õ0ّB 7&>24])/vc ܭmve˷p .{ ?#/9kCqKQTVXY5XTOH6@36+ sFݵ61k˪د& -BH!-t8*BhJQUXYXUPI{A7, KYPIv!fveV7 ߽LjҊ7n+6@WI/P:UdXYX V`QJB*9?.]"-5@Ƨm9(h(6*5?EHPOTXYYV"RKD:/$yi EQ ~ަ8|dWۚI?(3;>#GmNSWwY5Y WRL.E4$)UC4׻ǭ]xvϰ淞Ae y#G/:CKQZVXY/XTOH @6*:e݆ѡ򴃮(lܪ϶N8_yJ!-8TBJQUXY~XqUxPIZA7v,g m(RPmkiZKǼҼp2,,7 AzIFPKUoXYXUJQJB8.'"uLԖɛ(kUPݠa8l*5?_HqOTXYY|VRKCk:/#G) j,wDĉDA~y(*4h>AGNTWyY2YVRLE;;1% isؠCP@tԨ۬U|͎ c '2 =FMgSYWWY]YdW}SM>F7=2J' D:'Ωv娷c2ʱ0n:0| `%1;DLRV*YYW(TNcG>T4(q$~۵Ū׳Uz 5tW #}/;:CKQmVXY&XTO|H?5*oU6M|״kҩ"l tfɑԮ@!-8sBJ-QUXYyX\UaPI4AS7G,, o1+ݵ8Zehb\7޵,ޭ7i1 B,W71AI^P`UtXYXU1QJvB8-!@dxꪲl!թi״L5Yp*5?HOT"XYXoVQKC@:y/# Zq7 밅 uPг Žv "r(S4>bGN%TW}Y*YVRLD;1^% }/;l*ѱ+jܨײ~(;B G'25=?FMS_WaYUYYWiSMF =2' X zYެШrEVA te %>1;ELRV1Y{YWTNBGg>+4(w>DۉĆH~-j֧. B#/n:CK RVXYXTnO`H?5o*7\!NRƩq$Lv$".8BJIQUXYjXOUFPyI A,7 , .r޹LZhmlNN#sh t,7ZAIyPqU{XYXUQJQB8-!Mub5P̶תj)䩃ƅe7*6@HOT/XYX_VQKC:H/w# c=ֹʝΰtzcջ8ϱ<\')4>GN9TWY%YVRLDw;0-% A;eȦ Zt{{'2\=eFMSuW\YWYJWRSME3(;OTϼ`|6|"$KA˝ e ~$/:CK$RV YYXTSOBH?57*&c$Ɲ?lȧ C0ſ0["B.'9BJ`Q VXYfX9U-PYI@6+m8ވҖ۽=Rfw}g"uIOZN ,7AIPUXYXUPjJ(Bw8~-!D=1)ۯŪf3򩗮0ƴјKo+662@HOT6XYXRVQoKkC9/D# (ՉvƷfxq٭bx(T)4>GNLTWY!YVRrLDT;0$rZ z븓 MæźÌ)ڪUM'-3=FMS|WfYNY=WBS`ME3W( te*ϋBul$ܦ*wNX}) 57?GOsTWYYVXR6LWD:M0$ T_״w`ޫ7ͦDQ PΑ"}(3=F+NSWjYEY$WS)MEc<1I& v+(9ȹK_ܹ[NG a&2zVXYHXUOHl@v6G+&Ti? :kT8!?-18A7JPUXYXUPJA7, &hߑӊȬOlD'uZA>pz+6@+I P UXXYXVQKBa9."|?g8db,ԧn nfŭ|#6)<5]?H.OTXYYVERL4D:0]$ [&R}Gȫ/צ$\o2vS\D(3=FCNSWqY=YWR MiE7<1& >ͧ¦/qvÉف% %&.2WJYgYWSMF==3'bkAڝպ%ƦM۸e׹F [$0>;DaLRV"Y~YWTTNG>4l).A.vޭyuXexʼi .#/9XCgKQNVXY=XTOHI@B6+cE 2kĪ̯48q!k-b8BYJPUXYXUPIA7, e1oeXȈ,rxhP4˽rt#T+6@MI"P4U`XYXVlQJB59X.m"E1տ=Nͧl1жSw$*o5?8HCOT XY YV-RKD:/&$z #Y$^)#ܦ0vWJڊ/,w(3)>G^NSWrY4;) sTBɭl{pðڷ( J d#4/:CKQZVXY3XTOH@6*P$}ݖѷ/iӪ鯿A#N`7e!-8EByJQUXYXrUPIhA7, +84+b [qrgWEǧҧ\+7@jI?PBUlXYXUTQJB9+.7"c ԧɭ3nI=ܐG#W*5?XHaOTXYYVRKCy:/#^C }+@ ߦB{y.ۼ#o^(4T>7G}N TWuY6YVRLE;Q1%, })دW^JyͨӬJk̀E &2<FM_SUWTY^YkWSMKFG=2[' XS=ζÊæe#ƱX%b R%0;DLRV-Y{YW0TNxG>n4)7 žܳVz۰"\D #j/(:CKQeVXY'XTOH?5*jChчܴ{ө(lfS|ԛi'!-8gBJ$QUXYX`UlPITGNTW{Y/YVRLD;1|% JOׁ,<ڱ5kۨϲlΰ'+ 6'2$=4FMwS_WZY[Y\WoSM'F=2+' t  ΐb̲ڨn8@8‡\Q %*1;ELRV3YvYWTNRGt>?4(SW۠ĚL|S֕y 0#/V:CKRvVYY&XT|OlH?5*Lt37]Լ`ȩnɭ2b"-8BJ>QUXYmXVUOPIA@7 , Gȵ+P`elbJFUO b,p7IAImPjUzXYXU!QJ]B8-!ctH_۶媧n%ܩzlU$t*5?HOT)XYXhVQKC#:a/# *[ʮܰyx`'ϔ/>)v4>~GN5TWY&YVRLD;0@% XP"`BZfc'2K=WFMSgWeYNYXWTSMF<2& =uh;ʬͨyNba·3ؒ+ 5%Z1;#ELRW7YtYWTwN3GI>4(Ua,gr:}? ,ˋL i#/:CKRVYYXT]OMH?5N*?y4ƮMiç 5$pF"/.9BJSQVXYfXDU4PhI@7+UޤҢ񽧵AUjpvam2=G= ,7nAIP{UXYXUQwJ8B8-!d!_;"5Ϫl,&ƞш0Y*"6&@HOT5XYXVVQ{K{C90/V# =ՠʂַkzoʭRa|H)4>GNETW}Y(YVRzLDe;0%r "" Uæuڔ:;'3t={FMSwWcYPYDWGSoME3q()|CϖTq.ڦ$/d/]˽* 5$/:DK2RV YYXT>O.H|?`5*jI ƃ-m̧NIڿ8H|"`.?9BJpQVXY]X2UPJI@6+Hek~ý/Oizy/_qxGNXTWYYVwR_LD7;0$Q: [˯ոBĦ)&ۺĥK'xl'F3=FNSWdYNY4W4STME<#2& yu ـ pp:͚F &1AK.C9."H% yH0Dr@5h7Bk)4"?GOlTWYYVcR>LiD ;e0$ c{&ˇm?Φ".9'C7KQ5VXYDXUOI}@6^+:j.&tOƮ Daoᾷ߰:m#!*-"8A/JPUXYXUPJA8,!:ߧӛȻ]iDٮfG1%\a+6@IOUUXYX%VQKCu9."ONir1קr_WŔm%~).5J?H#O~TWYYVPRLFD:60p$ r0?֔`Nի,Φ#Rb$fϲ7K4(3=FYWSMvEI<1#& S ͷ¹3mrkk ~&2$ ; eF_NSWoY@Y WRLYE<1%yn t̔h0ã4٢F G&I2K#|ûƦUb %0W;DrLRV$YYWHTNG>4Q) %j] ҭmr`ȷ4 J#$/9nCzKQSVXYݬ0 1iΪۯ+6MS!-w8:BhJ QUXYXuUPI{A7, BMI ŧm@.s,B*5?IHTOTXYYV RKC:/ $sY 7Iݦ=jaۥUH(4H>%GvNTWtY9YVRL1E;h1%E2 =enS|ɨʬ=Ve1z &y2y4)L4/̻[uwװ鷭E*q |#X/:CKQcVXY*XTOH@5*.^xќ 봁ܩ+iߪԶY=mԀW !-8UBJQUXYXgUyPIWAw7j,^ c HLfndaK$ŵ = ,27AILPPUnXYXUAQJB8 ."k?ԎɐjȩVƼZ' ݮ+eDx*5?gHuOTXYYzV RKC]:/#? b %wBđQG{(14q>GGNTWwY2YVRL E;71%  _d ؑ>J>rӨò`Δk '2 =)FMoSZWXY[YcWwSM7F.=2@' <.ΜvӲڨk0ֱ3&uE; l%1;DLRV.YyYW TNZG>I4(iqۮŤϳNw @~d #/F:CKQqVXY"XTOwH?5*fK'HrݼԴaթn~oɚԺN!-8BJ0QUXYoX^UXPI*AN77,( ]+#ص2Xbibe4,޶>x9 N,_79AIfP]U}XYXU*QJnB8-!/ tdg檴g'ԩpݴ]9c|*5?HOT)XYXjVQKC4:s/# Mg/尃wWݳφ,(`4>lGN+TW}Y,YVRLD; 1R% p&._ α'eⲂ6LJ T'2B=AFMSgW`YSYXWcSMF=2 ' PvLԬѨtH[K§~r %%N1;ELRV4(d|-;ۂāE| 4 qַ3 S#/r:CKRVYYXTeO^H?5b*,V CƻPj§.[|4".9BJLQUXYkXHUCPqIA!7,%iޯҼE\fopSV&(/ yr ~,7aAIPsUXYXUQJKB8-!t>oT0Eɶ٪l*穆ƆyF*6@HOT0XYX]VQKC:F/h# U1հʗݷΰkufíٻ@ϹIh4)4>GN@TW}Y)YVRLDs;0$% :<Zæ _y(!'3h=jFMSqWdYPYKWMS}ME3(7:PϮ]u9٦"XJ˪s "$/:DK(RV YY XTKO;H?v5.*_Ɣ7 v@9Ͽ'=d"L./9BJiQ VXY`X9U'PRI@6+`0{ހҌս7Rhuk)~PYf%[ ,7AIPUXYXUPdJ Bn8r-!<8$ѯǪh6𩦮AƾѦUv  +=6=@HOT8XYXIVQeKgC9/6#u Ղm^vuܭi'ۃ9f)4>GNRTWY$YVRcLDD;0$hO q߸O˦'кÕ4ڷ]Y'03=FMS~WeYOY:W;S^ME<;2&8( $ٌ#k+͆2 &1.3Q( kXυ8re#ڦ,ū@yFyO O$0:/D LCRVYYXT3OHb?I5)F+ܻsq! nէ"cX,_0u".W9B K|QVXYWX(U P4I@6+}*JKcǭy'Jj{K|Ȏӗ` ,7AJPUXYXUPFJAB8C-F![h:9dݏG?+j6g@HOUEXYX>VQKK=C9.#^: QFNp}3&Xܼ,rU)4?GNaTWYYVnRHLzD;z0$3 u<˛{DΦ:6-lK'g3=FNSWgYKY,W'S@ME<2r& UXedEĹ6ͷj 9&1Z1 ͦEx?׎x .$s0#;rDOLhRVYYWgTNG?4)Zl/"QЛ!8צּuKAXʏ= \#.9eaH!C-?8A>JPUXYXUPJA7, Y߉ȦFgK%xbLI(~+6@4I P)UUXYXVQ KBW9."r3\/[_'ҧn "qpŵЊ(H*C5f?H2OTXYYVAR L/D:0R$ P}B~:ɫ)ئ$ep;#Yj N(3>FJNSWmYCYWRMfE*<1&~ 6͞¢$sÓّ+ 4&624d)!8&k߭pr`my :#/9^CnKQOVXYGiNSWoYAYVRL;E TNG>41)dJ?ۻǭdyuư䷑7T o#>/ :CKQ[VXY0XTOH@6*Aq݋Ѱ/fѪL+Xl>x!-8HBJQUXY|XxUxPI\A7{,t z /+ ]Woof\EǵҬk, ,7AuI=PLUjXYXUPQJB9.1"~Yԝɦ+kSEܖR.a*5?]HeOTXYXV RKCm:/#Y1 r 2 {C<,}e(4`>:GN TWsY9YVRLE;K1%! s|ؤPTCx̨۬QsͅR '2=FMdSVWVY\YiWSMDF==2P' NH7ΪÆ޲ߨf*Ʊ*h1$p W%1;DLRV,YzYW)TNlG>b4()Ŷ۳\},iL #q/5:CKQlVXY*XTOH?5*d>[рմwЩ&mqXɉԥr4!-8qBJ+QUXYzX`UcPI5Ac7J,; x=4<^hcgU3ص!ޛ"f >,J7-AI^PWUyXYXU3QJB8-!KlɁ󪯧pѩfϴrG'Jd*5?HOTXYXmVRKC?:/# c}@ yL˳Ůsg(I4>YGNTWtY5YVRLD;1l% 64(ENۗĕG{*\֞ A#/X:CKRuVYYXTvOcH?5w*Ci',Uͼ^!j! ɵBj" .8BJ@QUXYiXUUGPIA47, =~ ĵ#PZjikIHbX l,z7QAIvPhUXYXUQJYB8-!ReERض઩k(ߩ{Y &*6@HOT,XYX`VQKC:N/# i-Gʣϰ}zbŻ6Ϭ,S){4>GN7TWY$YVRLD;0>% KK^Rgro'2X=ZFMSkWcYQYOWXSMF3(FXeϽl=ݦ~ "@5˔V t $/:CKRVYY XTTOHH?5I*6u,Ƣ>nç 9/#yO"8.9BJWQ VXYjX8U8PYI@6+ |AޒҞ彥 =Uhr}`o>HNB ,7xAIP}UXYXUQqJ0B~8-!UO70˪j.򩔮+ƪёGNCTWwY*YVRxLDZ;0%|h  NĦx'ښIA' 3=FMSyWcYRY>WEShME3h(!j1ϕEk)ަ{.:d z6/BݧuB@sANx)5-?G OsTWYYV^R9L`D;Z0$  Yl ׻˂f=ҦHGGΊ n (3=F$NSWhYIY'WS6MEs<1R& 27E͹SS۹SA? Y&1p;DdLrRVYYWZTNG>4z)3S8|#|xU]rʯ` }##.9UC\KQIVXY;XTOHI@V6+ iN#5jƯ  !g!b-X8BRJPUXYXUPIA7, pGZNSWoY?Y WRLPE<1%jd h̉ˆ\!5ð<٭R Q&R24I){bPҭfshѷ@ W#-/9zC|KQVVXY3XTOH$@#6*T5ݟ#-lҪ᯼6CW'b!-8:BsJ QUXYX{UPIsA7, 7C>4i^uuc[?꽨ǞҚQ+ 7@eI5PFUaXYXVWQJB91.C"mԲɳ%7ŧjH.܁:J*5?PH[OTXYYVRKC:/#gN 0?}=sn%۱fO( 4Q>,GzN TW|Y0YWRL(E;^1%9' 5ظ^gM}ŨӬCao; &2<FM]SMWYY\YlWSMVFM=2g'd]FοÏ喝\$RY E%0;DLRV(Y~YW4TN|G>u4)D')»糶_}հV2| #Z/(:CKQ_VXY.XTOH?5*u!Qpђ֩-dܪضaGvԋb!-8]BJ QUXY}XeUrPILAq7^,S U AHdij[T'̵ފF ,C7AIHPYUnXYXU?QJB8-"_5Ԃɋkȩ_Լ]6ݹ2uM*5?jH~OT&XYYsVRKCW:/#+ ~V ~OóğZN(94w>RGNTWzY0YVRLE;-1}% P\؉6@6tب̲d Ψ"t ''2=,FMqS\WZYZYaWsSM/F%=24' ,&ΖkѲ٨l8ױ;/}LI v%#1;DLRV0YyYWTNVG>B4([ d۩ġȳR} E֎i (#/M:CKRsVYY$XTOsH?5*U>=j׼ʴaΩl{ɣ.Q"-8BJ9QUXYsXWUUPIAI7)," M$ӵ-Sdegd>6߽FE U,j7@AIlPaU|XYXU'QJiB8-!*izVd᪲h&۩rfFo*5?HOT)XYXeVQKC,:i/# D^ʴ|vY߳ώ8)k4>sGN,TW|Y)YVRLD;0O% g)Zɱ#b䲊;P\ ['2E=LFMSlW\YWYRW`SMF<2& E~nGѬШqN^V°&؊} .%S1;ELRV4YxYWT{N8GU>4([p$*~F٦ ?(}ֿF W#/~:CKRVYYXTdOSH?5V*%E9ƶIo. `:"&. 9BJOQVXYeXHU;PlI@7+`ޫҬBYgpuW^.38,w ,7jAIPsUXYXUQwJEB8-!l1fG)<Ķ֪l/㩕%Ɩ~$N*6 @HOT7XYX[VQK|C:9/\# N)ըʊ޷syg˭KSq 9)4>GNCTWY'YVRLDo;0%~ -+U l ڇ3.' 3s=mFMSvWbYRYEWLSuME3{(&7EϧUu1ڦ %`#X˲ "$/:DK*RV YY XTFO2H?i5'* oXƑ3rƧHBҿ3Gm"X.79BJkQVXY_X6U PMI@6+T#st҆ʽ5Qe{s+Tik3d ,7AIPUXYXUP`JBd8m-o!21˯Īl2#@Ѱb+I6B@HOTAXYXHVQfKWC9/1#j {a^vwx*ۊ@0j)4>GNSTW}Y#YV~RdLDD;0$XH g˸ܸK˦'Ӻ Ĝ? jb'=3=FMSWfYLY:W3S^ME<)2&$$ نww) ͐> &163E(]P}-r[%Ԧ(Ы>I-` [$"0:7DLIRVYYXT-OHZ?@5)<ܬgnvΧ-d`-8!Mg=>iݔS'G+u6m@HOUFXYX?VQFK5C9."R0 N:Hx;,_+8|`)4?GNjTWYYVfRDLrD;q0$' n3ˑpAΦ8A:xW'o3=FNSWiYHY-WS>MEx<2]& GO]޹]F͹>-%{ F&1eFPNSWpY@YWRM\E$<1%w '}̜“'g$Ý)ٗ8 ?&A24Y)+vaحpuaɷr)} ;#!/9oCkKQOVXY7XTOH2@66+rCݯ51jɪد% ,EK!-u8*BgJQUXYXUPI}A7, JXPJu"g|wgT:ܽlj҇:k+6@SI0P:UdXYXV\QJB'9E.V".ſ2@çr9$i$9*~5?BHQOTXY YV'RKC:/$}b GQܦ9{d[ۜO9(3>> GnNSWrY;YWRL6E;o1%ID JulPƨĬ0S^"p w&t2̭D ,%0|;DLRV)Y{YW9TNG>4$)WA5ػƭ\rsа緝= ` {#D/:CKQaVXY-XTOH@ 6*8g݁ѧ &nߪѶL9`vM}!-8SBJQUXY|XqUwPISA7p,i k(RPkng\JǿҸt8,(7 AzIEPMUnXYXUHQJB8.("pRԔɛ&nǩQQݟ\:l*5?]HqOTXYYwVRKCd:/#F+ d+{FĉF;r(#4m>>GNTWzY3YVRLE;?1% hqؚHOAuШܬU~͕ _ '2 =FMdS]WRY`YcW}SM=F6=2J' A<"Ϋx۲ݨi.ͱ0o;/| b%1;DLRV0YxYW&TNhG>X4(t!zۻ ůӳUz 7tU #~/=:CKQkVXY'XTOH?5*nT/TyմmЩ%j tfɓԪ>!-8uBJ,QUXYtX`U^PI1AW7A,3 i5*ߵ8Xgef[6޵,ެ5k/ E,U70AI[PaUtXYXU/QJyB8-!?az 몳i&ϩoӴyR2Xr*5?HOT%XYXlVQKC>:z/# Xt4 찃 uPг źz!v(W4>eGN'TW|Y,YVRLD;1b% v58q1ʱ0gݨܲx%<@ C'22=CFMSaW`YSY]WdSMF =2' W}U۬ҨuAQC¡we %<1;ELRV6YtYWTNDGd>+4(x?FۈąF*l֦- D#/m:CK R|VYYXThOdH?5l*9[OT f'ɽJw$".8BJHQUXYoXKUFPyI A'7,3w޼ G_floLN$lg r,7XAI|PlUXYXUQJVB8-!~Mv_9Mж۪j+੅Ƈa2* 6@HOT0XYX`VQKC:M/v# ^#;ֶʠаt{eӻ8ϯ?X()4>GN:TWY%YVRLD~;0.% BA ]Qmy'2a=_FMSsW`YRYMWQSME3(@IXϹb|7ߦ!MB˛ e z$/:DK%RVYY XTRO?H?~58*$hƠ=mǧ?3Ŀ.\"A.'9BJcQ VXYeX8U0PVI@6+k:ކҙٽ9Thtf!xFRWN ,7AIP|UXYXUQeJ.Br8-!JE) ֯ɪg3򩚮2ƱўEr*<6-@HOT7XYXNVQlKnC9/?#} * Տp˷ewnڭe{/_)4>GNLTWY!YVRnLDL;0$vY 㸚OĦÆ-ڨUL'-3=FMSWbYPY=W>SfME8 )ٚ(h%|'x &1+3_(ya(ώ;c*ڦ*ī6v:wI H$ 0:#D L7RV YYXT7OHl?O5 *S1ܼux& q̧&WW U&g"s.S9BKwQVXY^X&UP8I@6+/PXjǵ)Ki|=nȇӋT ,7AIPUXYXUPKJBH8O-P!j k85Y95+^6b@HOTCXYX@VQOKHC9.#nD YOOr~/Mܴ%aP)4?GNbTWYYVpRPLD#;0$@ JˢŸx>Ŧ 05)IJf>'Y3=FNSWhYIY2W(SJME< 2}& aboh9)ͯa 3&1QʮQ)޳6vFe+6@ IOUNXYX/VQ.K"C9."0 zn/$|?ۧuMC{LX)52?GOwTWYYV_R/L[D:Q0$ Ob׳x`ޫ7ЦIO OΑ$z(3=F+NSWkYFY&WS0MEd<1E& u*+?ɹL^ڹXMG a&2} =fT=!8-:8A@JPUXYXUPJA7, &kߖӆȯKdK!pUF=nw+6@*I P"UVXYXVQ KB_9."zAe;\j%֧p miűz!9)?5Y?H+OTXYYVLR LFENSWnYBYWS MhE:<1& > ͫ£/rwÄ}$ '&,24n)-C+vrr[`|ʻi /#/9\C_KQCVXYDXTOHH@E6+]F0nêϯ*3r!j-c8BXJPUXYXUPIA7, d2nfXȈ*u|dT.Խ}|l(R+6@HI&P1UcXYXVjQJB99U.r"A - ٿGaNSWrY=YWRLEE <1%cV Y{†aǬ(?÷Hٹ \ ^&b24>) oWFǭlykǰ׷)L a#6/:CKQ^VXY2XTOH@6*Q"ݑѻ0i֪ƶ;(Je/p!-8CB|J QUXYXwUPIjA7,w ,75*b XunhYDǭң]+7@oI=PBUkXYXVRQJB 9).5"^ԥɮ0nI;܎F#W*5?WHbOTXYYVRKCy:/#_@ |(9|>zs3۹%m^(4U>5GN TWvY5YVRLE;Q1%, /ب\[F}ϨЬFm͂C '2<FM`STWTY`YhWSMPFC=2[' [R=εÊ訸\+$ \"g H%0;DLRV+Y|YW.TNsG>j4)2#ŽೲZ{%[D #f/.:CKQfVXY)XTOH?5*lGdюr۩%jaZvԝi(!-8oBJ,QUXY|XbUlPIBAi7U,I M;D^keaU,ӵޓU /,C7$AIZPSUvXYXU8QJB8- "Q,uɆoͩbȴڼg?<Z*5?wH|OT"XYXtVRKCO:/#' kG }QʳĨd_(B4>TGNTW{Y/YVRLD;#1u% KMׁ*@Ա;hިӲkή(* 0'2$=0FMtSaWYY[YZWsSM*F=2&' q$Ώdʲ٨l:B6‡XU %.1;ELRV/Y|YWTNQGw><4(RZۜĕijJw T֔w 2#/Y:CKRxVXYXTyOnH?5~*Qq36\Լ^ɩjɨ7]".8BJAQUXYnXUUQPIA87(, I͵&S^hhgC? XR `,q7HAIlPlUvXYXU!QJcB8-!_oNZ߶䪩l'ک}lV"w*5?HOT*XYXiVQKC":_/# x6Sʯݰzw\ǻ#ϗ+B)r4>xGN2TW}Y*YVRLD;0>% \ M ña¦貕I`dg'2L=XFMSiW`YTYRWZSMF<2& 5o`DЬʨxObd²:؋( 9%b1;+ELRW3YwYWT~N)GR> 4(V^'ls<@.ˉN d$/:CKRV YYXT[OPH?5N*<~5ƬHl 2) qK"(.9BJTQVXYbXEU7PcI@ 7+}UޟҦ>\`yqbi4=F9 ,7oAIP{UXYXUQyJ5B8-!^)WC8Ъk-쩒%Ɲщ/]*&6@HOT1XYXWVQ}KzC9+/Z# ?՝ʄշhuk̭WZG)4>GNHTW}Y(YVRxLDc;0%q $#R qڐ>8'3x=uFMS{WcYNYFWDSrME3q('~>ϝMp-ݦ%/d._˹/ 3$/:DK5RVYY XTEO(H?^5*gK Ƅ-lЧTC޿:P{"`.@9BJrQVXY[X2UPDI@6+Hel{Ľ/Pgys7bnzGNUTWY YV|RZLD8;0$J? ]˵ϸIǦ('ںħI(wm'H3=FNSWfYMY4W4SQME<&2& xv zwy1͛I &1B(QF s(h\٦1˫MZ:k j$%0:K-C9."J" C4Bt?5k2Bk)4!?G OiTWYYVdR>LhD;b0$ it.׿ːq?Ϧ@B;~a(v3=F'NSWhYGY)WS8MEu<1^& C>PعTUʹA43 P&1n+;sի| >".9'C7KQ4VXYNX UOI{@6\+<h.Hɮ Cdt߾߮:m%!&-$8A+JPUXYXUPJA8, <~ߦӜȻ\hEڮeC4$_l}+6@"IOURXYX+VQ"KCs9."PL pm3էuaYŖm'y)%5P?G%O~TWYYVJR"LBD:10t$ t.?֑fRҫ0ӦX_$h϶4M6(3=F:NSWqY@YWSMzEF<1%& T ͻ²GZNSWsY;YWRLSE<1%vq t̕Œ d0ä4٣@ M&H24N)!h[ Эq|jͷ6 J#'/9rCwKQTVXY:XTOH+@.6*`@ݫ. 2g̪ݯ.5NR!-81BpJQUXYX~UPIrA7, BPG=n]mmPA߽ǏҔDx +7@bI0P>UfXYX VXQJB9<.L"u%Ըɻ,< ɧhE*t->*5?DH\OTXY YV#RKC:/$xT ;Dܦ=}g`ۤ XH(4A>-GoNTWvY7YWRL,E;d1%>7 AؾilPȨɬ9^l0z &x2~4)S22Ȼﳻ_wwְH+l #S/:CKQeVXY*XTOH?6*+]xќ 봂۩,g٪ԶUDbԌN!-8XBJQUXYxXoUrPIPA|7h,] a  PPene]O#ĵހ < ,,7A}IJPRUoXYXUFQJB8."lBԉɕ né]μT+ݯ*fCx*5?jHoOTXYYuVRKCa:/#> ` (}GĔOJ(74j>OGNTWyY1YVRLE;31%  aa؎AI>qըެŲ\Π c '2=$FMlSZWZYYYeWvSM4F1=2@' 62Ρoײܨg4ӱ6"xE< j%1;DLRV,YYW%TN[G>H4(hi۷ĪʳOz A~c #/D:CKQnVYY)XTO{H?5*jN$Lmдdөn|oɜԷ!H!-8}BJ2QUXYsX[UZPI+AL79,' ^)%ص/[_kd_;.޲>w; N,]7;AIbPeUtXYXU*QJoB8-!3 wah骰j$֩qٴ|c6 \v*5?HOT'XYXnVQKC5:q/# Sc0 xVڳς')_4>lGN-TW|Y,YVRLD;1X% l(.b"ϱ#j}0JK T'2==GFMSfW`YSYXWbSMF=2 ' RpR֬ѨwDTP¥~p "%I1;ELRV5YwYWTNAGZ>"4(hz/:ۂĂC}9!pָ1 T#/u:CKRVYYXTiO[H?5_*2NFƻOk*Y1".9BJOQUXYiXIUCPoIA7,(dްһKYgplX["(0}s ,7cAIPpUXYXUQJDB8-!y;pS2Cɶժi*詆ƏoD*6@HOT.XYX^VQKC :@/n# V7ճʒǰqvdĭ׻DϽDl4)4>GNATWY(YVRLDs;0#% 93Z] w+'3e=mFMStW^YVYEWSSxME3(.DQϬ`~.{##WJ˪j $/:DK*RV YYXTTO2H?q50*~`ƕ:jɧD:̿&;`"Q.,9BJcQVXYaX9U&PRI@6+_2yނҋԽ6Sfxm'PZc'Z ,7AIPUXYXUPbJBq8o-!=> ԯªg39ƼѧSy+;6?@HOT:XYXJVQfKeC9/8#u ~oZtvحq:f)4>GNSTWYYVRhLDJ;0$cR uݸLæ˺ď;ڮ[^'=3=FMSWcYOY:W:S`ME<72&5* ْ |o'ͅ5 &1-3Q(kXς+k6e@HOUHXYX;VQIK?C9.#^< RGKt4$S"ܺ1k\)4?GNcTWYYVoRGL{D;v0$. @˘tBϦ881ľkM'd3=FNSWeYNY*W(S@ME<2q& SYcc=ǹ6͵#q ;&1[?GOtTWYYVVR.LPD:E0$ EV ׫lWܫ5ҦQPSΚ&/"(3=F0NSWmYDY WS"MET<16& q$5¹F]dTY m& 2 \#.9VXYGXTOHg@h6B+G b8:g [E!B-C8ADJPUXYXUPIA7, _ߑxȪDdM$xbMH&+6@/IP&UXXYXV|QKB[9}."r4Y4W`)̧vtoŵЋ$M*C5g?H3OTXYYVAR L.D:0S$ R %րB}<ȫ*ڦ#er7Vl W(3>FPNSWtY:YWRMcE,<1& .ͤœ(r| Óَ* 7&82S6WSYbYWSMF=53'^Y5ڐʺ%ʦLu׿R e$0I;DhLRV&Y|YWOTNG>4d)"5r٭vs\js 6#/9cCkKQMVXY;XTOH9@A6 +|Sݿ=4iŪԯ=@|!t-l8#BaJPUXYXUPIA7, \#hWQȀ&mxfT5ֽǁz1`+6@OI+P5UcXYXVbQJB09K.f"5!Ϳ9Dǧo7н_1*r5?9HLOT XY YV(RK D:/$p LZ ٦8uZPۏB2(33>GiNSWwY5Y WRL;E40)bLFһkyrǰ巏1M u#;/ :CKQWVXY6XTOH@ 6*Cr݋Ѳ.j٪ɶD2Rp=v!-8HBJQUXYXoUPIeA7,n v!,+#XRqnh[DǴүh*,#7@uIAPGUmXYXUMQJB9.0"ZԞɡ# oSEܘL2_*5?YHjOTXYY~VRKCq:/#W0 q 6ݦHĀ;-|e(4]>?GNTWyY5YVRLE;G1% xy"آRQ@{ϨլNu͆P  '2=FMhSPW\YYYjWSMDF@=2U' QD/αÀ㨻e)ɱ&`,'q U%1;DLRV(YYW+TNkG>_4)|0 ۼŲڳVy*jL #r/4:CKQeVYY(XTOH?5*w] ;^~ִuҩ%ll]ɇԣw 2!-8pBJ+QUXYwXdUaPI6Ac7H,@ rB/7e_m^\.ܵޣ,]* 4,R7%AI[PYUuXYXU1QJB8-!Mrzk өaӴ߼rG'H`*5?{HOT%XYXqVQKCI:/# c~@밐~QͳŲko(K4>_GN$TW|Y.YVRLD;1l% 04(}DSۑĐH㦀 ' ^֟! :#/^:CK RyVYYXToOkH?5w*Bj$,Tͼ]éj" ɴCk".8BJBQUXYnXPULP~IA17, = 'JaekjIE _Y m,z7OAIsPkUXYXUQJWB8-! Ui?ZѶ٪j(} z\-*5@HOT-XYX^VQKC:U/# r%M ʦӰzza˻0Ϥ6J)4>GN6TW|Y*YVRLD;05% PH_Ngr o'2T=`FMSiWdYRYNWXSMF3(FWag;}E7˕W s $/:CKRVYYXTYOHH?5B*1w*ƥDlŧ <)%wL"<.9BJ\QVXYkX:U4P`I@7+xFޔҞ⽫CRgwver;JLC ,7zAIP|UXYXUQmJ4B{8-!VQ52ɪi0𩖮 .Ʃѓ:g*-6+@HOT8XYXSVQvKtC9&/K# 4ՎʃƷbvpЭ Yl% N)4>GNFTW}Y%YVRvLDZ;0%|i  O y(ښDF'3=|FMSuWhYMY@WFSgME3i("p6ϑK|o'ݦ(5j7i 8 ?$0:DL7RVYY XT>O%Hr?[5*a9{'nͧ!QQE\"o.E9BJsQVXY\X-UP?I@6+=Xfoǿ-Li{}7f~Mw ,7AIPUXYXUPPJ BO8Z-Z!tɯg7.Rr4,+X6V@HOTCXYXDVQYKHC9.#rV iQPt~+B ܣ]?)4?GNXTWYYVuRVLD.;0$F/ WˬɸMϦ/,ĭY.s'P3=F NSWeYJY8W(SQME<2&  sgrn{<ͧ V %&1GnFJw) 5*?G OsTWYYV^R8LbD;[0$ Zmy]:զ KE C·m (3=F NSWlYHY$WS0MEj<1N& 72BʹUVٹVE> _&1sD:+0d$ i$4֍YM˫1צ\e-nϺDV>(3=F@NSWqY@YWSMnEB<1& Hͺ¦7up  wx &)24y)7M 5 "yu\\oʲ Z ##.9SC\KQCVXYBXTOHI@T6+#jJ'7gʯ '~g!^-_8 BZJPUXYXUPIA7, s:{ncȌ7swjM1ɽvqbG+6@EIP0U_XYXVsQJB<9d.w"N;ݿEPͧk/ЩGl*`5~?+HBOT XY YV2RKD:/2$ ,b+g-&ݦ,rQ@|*p(3">G]NSWoY=YWRLGE<1%hg j̇Œg>æC٫M T&T24I)|aQϭjxlԷB Y#,/9{CzKQUVXY3XTOH&@"6*X2ݡѿ%-jΪ䯺7BX(`!-8=BpJ QUXYXzUPIoA7, 6BA0k\xsd[=ǠҚQ+7@iI4PEUcXYXVUQJB90.B"j Բɲ&5 pC8|>L*5?NH\OTXYYVRKC:/$dP 2?(G~NTWwY5YVRL%E;[1%7' 5صadOxΨ̬C`q: &2< FM[SSWQYbYkWSMSFN=2g'baGοÎ쨺]$QY A%0;DLRV*YYW6TN{G>q4)J"(Ż㳼Uq wڰU6w #`/!:CKQfVXY,XTOH?5*wPpђ}۩%o۶`Huԋb!-8eBJ&QUXYXdUsPIMAp7_,T X CKalg^R(˵ޅ N %,=7AIOPTUpXYXU=QJB8."_7ԁɏmʩ\Ĵмa3ݷ2sO}*5?rHtOTXYXzVRKCV:/#- |SyJ³ě\V(<4x>QGNTWvY6YVRLE;'1% P]׉5Cݱ=lبϲ` Τ t %'2=/FMsS\WZYZY`WuSM4F!=20' -&ΕlѲ٨n4۱9/~MI u%!1;DLRV1YzYW"TN]Gz>H4(acۧĚͳT⦀J։m "#/P:CKQvVXY"XTOsH?5*^z??d߼Ŵdʩ"iyɡ(U"-8BJ5QUXYtXVUUPI"AC70, Uе.TaghaA; OD Y,g7AAIkPbU}XYXU$QJfB8-!(fuZa骪m$۩rhBm*5?HOT(XYXlVQKC,:j/# @_ ʳܰ~]೽ύ#1 )h4>rGN.TW~Y)YVRLD;0K% g&Z˱i粉:QZ \'2E=OFMSgW`YTYTW_SMF<2& GoEЬШwI\W¯'؉} -%R1;ELRV9YqYWTN1G[>4(\o"1ză<}7)z@ ]#/z:CKR|V YYXTbOUH?5V*&D @ƯIiç.# b9"&. 9BJTQVXYjXCU@PgI@7,]ޥҴEXhotY _/.?.| ,7hAIP{U|XYXU Q}JAB8-!l0fH)=Ԫk+꩎ Ɯu.F*6@HOT3XYXZVQ~KC9=/]# J $բʐٷŰlwh˭GTq <)4>GN;TW|Y'YVRLDi;0% (.W mڐ,1'3p=qFMSvW`YSYEWLSuME<`2&_[ MٴA%è_`غV e%13}($8GϦSo8֦ *\&V˱$x &$/:DK1RVYY XTEO5H?n5#* uTƎ6lʧJ@Կ2Hl"Y.59BJgQVXYcX0U&PGI@6+S$tr҇˽4Ojvp0[bq0f ,7AIPUXYXUP^JBe8j-q!1-ϯc7$@Ѱ^+H6D@HOT@XYXJVQeKXC9//#h we[sxޭs1ۑA.l)4>GNUTWY#YVRaLDA;0$YF c̷ܸIŦ"#Ѻ Ĝ?ڿm`'<3=FMSWhYKY;W4SYME<02&&% ~هzr/͎< &1<3H(dJw6ia!צ/ǫF~P+^ \$ 0:3DLERVYYXT-OH\??5); {ܰjj mԧ+da~".b9BKQVXY[XU P*I@6+~r:GUǨr!JfLȘӡl) ,7AJPUXYXUP;JA887-=!Ol7DfݐS(F+v6m@HOUMXYX5VQBK8C9."V/ M;Eq9/`+4~a)4?GNiTWYYVjRCLpD;n0$! q4˒n<ͦ :@8sY'l3=FNSWkYHY+W!SdP%~kWQ4+6@8IP*UZXYXV}QJBN9v."j%S%UW&˧t #yvžЗ/U*P5m?H8OTXYYV=RL$D: 0I$ JmEk>*ئ)f{=)dta(3>FXNSWmYAYWRMXE'<1%x ${̖™!m&Ü)ٖ< <&D2S?WNYdYWSMF=*3'OR (ډƦR{] p$0V;DtLRV$Y}YWLTNG>4[))weԭuxbȷs ,} @#/9jCqKQPVXY9XTOH5@36+ qHݶ6.mΪԯ% 0@F!-s8,BhJPUXYXUPI~A7, OZQFzhrlP;޽Nj҅;l+6@XI-P"GlNTWuY9YWRL7E;q1%KA HotUɬ2RZ)k y&o24*)YA7ѻhxsϰ跞 8$^ w#J/:CKQ]VXY/XTOH@6*6i}Ѭ *kߪѶL7buN|!-8RBJQUXYXlU{PI[A7v,b j&PPipe]JǽҸw/,+7 AzIEPOUhXYXVBQJB9 .+"qNԚɗ#i V¼Qݝ[:l*5?`HnOTXYYyVRKCo:/#J' g.{EċD;q(%4l>>GNTW{Y0YVRLE;B1% jp؜FQCsШݬV͔` '2 =FMiSUW[YYYgW{SM>F7=2I' H7#Ϊx޲ᨻj+б,k82z d% 1;DLRV4YuYW%TNeG>W4(u"}۶Ū׳Vx 8rY #x/?:CKQnVXY"XTOH?5*nR4O|ִkө!n tgɏԱ~?!-8tBJ.QUXYvX_U^PI.AY7B,1 j5,ݵ7[efgW;ܵ+ޫ4m, H,R74AI]PbUrXYXU/QJwB8-!@ft誷e'ѩlԴ{N6So*5?HOT'XYYeVQKC>:z/# Xs6 簊{Pҳ źx x(X4>jGN(TWyY.YVRLD;1a% y55f#(ұ-eިٲ|*9G G'26==FM~SdW\YXYXWgSMF=2' \ UެΨx>OG™jm %@1;ELRV3YxYWTNEGe>*4(r>BیĉC{,l֤0 D#/d:CKRxVYYXTpO_H?5j*;["LļSũo#Qr'".8BJGQUXYiXQUBP|I A(7,5t޻ H_emmNQ" ri q,7WAIyPmUXYXUQJOB8-!Kw_9M϶תh+⩂ i8* 6 @HOT0XYX[VQKC:G/{# `!;ֶʝ̰wv_ĭ׻4ϭ?\))4>GN:TW|Y,YVRLDu;0)% A@ \Tp}|'2d=^FMSoWdYPYLWSSME>3(;M^ϰl0ᦀMA˜b $/:DK'RV YYXTROAH?57* n#Ɯ<qçF)Ϳ-X"E.#9BJbQ VXYcX;U.PUI@6+l9މҔ޽:Rhv}h xFRWM ,7AIPUXYXUPjJ)Bu8-!MD, %ׯ˪m-6ƹїJn*863@HOT=XYXRVQrKjC9/?# )Պuŷavs֭av2])4>GNKTW}Y&YVRhLDL;0$q] w鸕OÅ0ڥVK''3=FMSWaYQY=W>SfME<=2&:< )ٜ$j&&w %1*3X( uc*ϊ@|b0Ц%ī9r=tD G$0:*DL@RVYYXT8OHo?M5 *P4ܻvw)nϧ$ZQ)O(h"t.R9BKyQVXYYX)UP6I@6+3RWkdz)MeAtȃӎR ,7AIPUXYXUPFJBF8O-Q!kh98V݂A ;+a6Y@HOU@XYX>VQNKGC9. #kD _KOu~)"Kܭ!dM)4 ?GNdTWYYVmRSL}D(;0$= H˟ǸzE˦ .6&ķ`?'W3=FNSWcYOY,W-SEME<2w&  \eod?&ͱ_ /&1S<{E#MS WAYoYWS6NF=3((>-`]PѦ2׫UgL8 x$A0:PD#LRRVYYW}TOH??&5)la܎P[ tק6us\Ճb".9 C'KQ.VXYOXUOI@6w+]N):Ǒ_֮DicžȴߋH! -8AJPUXYXUP-JA8-!a/ӷԾnk?ͮP-ޭ4vGd+6@ IOUHXYX4VQ6KC9."1 zo.$9qP@yLW)54?GOvTWYYVXR4LYD:S0$ Kc׳w\5ͦES SΗ)y(3=F*NSWkYFY"WS+MEa<1B& {&*:ƹNbعXOE c&1~< ϦBq2ׄo ($m0;lDHLfRVYYWiTOG?4)a~4,`Н.8nI=Hʌս* X".94CDKQ:VXYDXUOHh@x6E+)Qj@ :lS=!7-:8A>JPUXYXUP JA7, *fߕӇȭOgG%rPN1{+6@*I PU\XYXVQKBb9."zBc<be)ԧp pcŨЂ:)<5^?H/OTXYYVFRL6D:0_$ `,քNDʫ.ڦfg4{KaK(3>FNNSWmY?YWRMiE8<1& :ͱ 2pvÄ ,&.24n),C*xޭyy\dxʿg '# /9`C`KQFVXY?XTOHF@E6+]A :eêʯ14t!h-f8B^JPUXYXUPIA7, c5kgWȈ,s|dT0ͽvr"W+6@LI#P3U^XYXVhQJB29\.i"G4οFEǧo3бWq+*e5?0HHOT XY YV-RKD:/'$x &T)Z,$ަ/uVHڇ9%{(3->GeNSWrY;YWRLFE<1%_X c̄€a%AôLٷ X `&Y24@) pTN޻ȭhwnðٷ'O ^#8/:CKQUVXY8XTOH@6*M&{ݘѶ)mժ>'Je0m!-8CB|J QUXYXtUPIgA7,z *91.a YtpgYCǥҩX",7@lI=PCUlXYXVSQJB 9#.>"d Ԣɯ1kQ@܊G![*5?OHfOTXYYVRKC|:/#ZD ~'8{?zu1ۿ)k^(4Z>0GNTWsY8YVRLE;P1%( ,ثY]JuѨѬLhzD '2<FMbSRWUYaYeWSMNFF=2_' ^P<ηÉd#ƱZ(j L%0;DLRV)Y{YW+TNqG>h4 )4"ŻೳXzܰ$[C #c/1:CKQnVXY'XTOH?5*oFdэyө+f߶hS}Ԙk,!-8iBJ(QUXY}X`UnPI@Ak7R,J M9@dei_V-ѵޓX 3,@7&AI[PRUvXYXU6QJB8-"U+yɅ򪶧j"ʩeƴټk;@{^*5?zHxOTXYXwVQKCQ:/#& mIyOϳţh ^(C4>XGNTWxY2YVRLD;#1w% BUׂ,;ڱ5mרϲlέ)* 2'2(=-FMtS]W^YVYaWmSM+F=2)' p$ΐc˲ըq7A6‰YV %,1;ELRV.YyYWTNKG{>:4(TZ۞ęM}W֑{ -#/X:CKRxVXY XT{OmH?5}*Rp57\ռ\˩nɭ8Z"-8BJ?QUXYsXPUSPIA:7', L ѵ%PbelcFD ]Y Z,w7CAIhPoUvXYXUQJ_B8-!ZmOZ޶᪬j'ݩxlTz*5?HOT'XYXeVQKC:d/# v8Rʭ۰zx]Ż&Ϛ)C)x4>zGN2TW~Y'YVRLD;0E% UR'^¦벐F]eg'2L=WFMSkW_YVYOW]SMF<2& 9sf<ˬʨId]»1ؓ( ;%d1;+ELRV?YmYWTyN0GM> 4(Ra$nrD٦= 0ˆL g$/:CKRVYYXTZOQH?5N*9/ưJo0,pH"-.9BJTQVXYhXBU5PjI@7+Vޣң@Xdwrbj6:G7 ,7rAIPyUXYXU QsJ=B8-!`%]<#0Ъh/멓(ơх4V*'6 @HOT8XYXUVQ|KzC9-/V# AաʁַiviέV]F)4>GNBTW}Y%YVRzLD^;0 %s !$SŦxڔ<:'3x=wFMSyWbYQYCWISlMEYqYWS\NG#>3s(+@ϜNq.ڦ*g-^˼. 5$/:DK3RV YYXTIO'H}?c5*gNƊ-nΧUB޿<M}"\.E9BJmQVXYaX.UPDI@6+F`ttʽ1Mjyw3box>o ,7AIPUXYXUPWJBY8c-d!# ̯f8'Iѿf)&+N6L@HOT>XYXDVQYKWC9.##~_ m_Usz!y;ۚ M8x)4>GNXTWYYVuRaLD9;0$L? [ˮָEƦ(&ܺĨG'xl'H3=FNSWdYPY4W2SRME<&2& uzـ ot8͛H "&1CLjD ;c0$ dw*ˇh=Ц AC>b(s3=FNSWfYLY%W S3MEo<1U& B=NչWNйF73 R&1n4)C[?І'{uSRiʧW p#.9MCXKQFVXYAXTOHR@[6)+/vV*9gƯsU!]-M8BMJPUXYXUPIA7, xIxlȔ=xziL.񮆵rdY;+6@>IP+U^XYXVsQJBI9i."^JLVΧn+~~Ф9b*]5q?&H>OT XYYV6RLD:0=$ : i7i6(٦-iE1l h(3>GTNSWrY=YWRLUE<1%zl p̏‘f/ä4٣E E&H24O)pVխnxhη{0 I#'/9pC{KQYVXY7XTOH-@+6*e<ݩ. .kʪ߯-6MS!-}82BpJQUXYXxUPI|A7, H SD@nb{teX; 潜ǖҎIt+7@_I1PAU`XYX VWQJB9;.N"|Էɽ+< ǧiA*t3 E*5?KHTOTXYYV"RKC:/ $qZ 8Jߦ9lfۧXG(4F>'GrNTWzY4YWRL2E;h1%E/ AؼlhNǨʬ~4)M6.ͻ볽]yyӰ﷥ G,l }#W/:CKQfVXY,XTOH@5*2fpѣ}(k۪ӶWBgԅT !-8XBJ QUXY~XlUtPIQAy7l,[ cFHkii\O"Ƶ y@ ,27AILPNUqXYXU?QJB8."fEԏɏoƩZ˼W*ݫ#m@w*5?kHqOTXYYzV RKC^:/#> Z'~GęLE(64l>LGNTWpY;YVRL E;01% _d ؐAEL4(dp۲ũ̳Q| >ք[ #/D:CKRiVYY$XTO{H?5*cK)Frϴeөm򶁿lɛԻI!-8zBJ2QUXYvXWU^PI.AK7:,& ^+#׵3Vdhcb80޵FnD E,d77AIeP_U{XYXU0QJpB8-!1 x]m骯m!٩nܴZ= ^u*5?HOT(XYYdVQKC7:p/# Qe,ʶ ݰ{Xٳρ'(f4>qGN,TWzY.YVRLD;0`% p#4h+ñ0`߲6GP P'29=KFMSgW[YXYUWcSMF=2 ' NpR׬ϨvFUQ£ |s !%H1;ELRV4YwYWTN:Gc>4(b~+>}āC~ 4!oֶ7 Q#/o:CKRVYYXTgO]H?5\*3OJƷL©n([|5".9BJNQUXYhXKUBPqIA"7,$jޱһLWinpSY"++{q },7_AI~PrUXYXUQ}JMB8-!xGN>TW~Y%YVRLDr;0% 90[Ŧa~&"'3i=fFMSvW`YRYIWOS{MEELRW=YqYWShNG3>3(2CTϬ\t8ۦ#XNˤm $/:DK'RVYYXTCOCH?z5**}cƗ8oǧD;ʿ 3f"J.29BJeQ VXYfX4U*PPI@6+_1xކ҄ݽ5Rgxm&~QZe%Z ,7AIPUXYXUP`J"Bn8t-|!>9#!ԯǪm/9ƽѥVw+:6=@HOT=XYXMVQkKbC9/8#y Մjaxuܭj&ۇ5#c)4>GNTTWY YVRkLDN;0$aT p߸RȦ!̺đ6ڶY^'73=FMSWcYPY:W;S]ME<=2&6+ #ٍ!}k,ͅ+  &1-3P(g]$π;rc%٦/«BwG{! T P$0:,DLARVYYXT2OHf?F5)M!ܰmt j٧eT8T8p".V9B K~QVXYZX"UP-I@6+}'CT[Dzv$NbFȊӜZ# ,7AIPUXYXUPAJA=8G-B!Zg<5e݈ F@+i6h@HOTIXYX=VQJK=C9.#\= UBHp4$Q%ܶ*rT)4?GNcTWYYVoRILxD;u0$. y>˘t@˦ 6:/jL'^3=FNSWpYAY6WSIME<2n& VYh`H-ͼn :&1^ЮV/!COq+6@IOUJXYX+VQ%KC9."& ka)r?֧vYDŃWa)5:?GO{TWYYVWR-LQD:D0$ DTקr^֫8ЦKUVΜ"4 (3=F2NSWpYAY%W S(MEY<18& i"/C^eUW l& 2RL,D:0R$ OzGx?ƫ,ئ%ct8"Yl Q(3 >FNNSWsY>YWRMbE.<1& 3͝ )l{ Ñٌ0 0&824b)$5%lޭpt_ly :# /9`ClKQMVXY=XTOH:@A6 +wX<4gĪӯ"7>w!v-n8 BdJPUXYXUPIA7, Z%eZPȀ&muiR4ٽǂz2\+6@PI*P5UcXYX VfQJB19K.e">)ɿGeNSWqY43)^P?ۻɭ_pl̰߷1W i#B/ :CKQYVXY2XTOH@6*Coݐѩ*kתȶE2Qq=u!-8MB}JQUXYXpUPIeA7,o {/&'XVmqgYHDzұf+,!7AvI>PKUjXYXUOQJB9.3"Uԛɥ,lQCܗR,e*5?ZHgOTXYY~VRKCk:/#W2 p!5E}=0xi("4^>;GN TWxY0YVRLE;J1%! vx#ءSSFsѨ׬Sp͆P '2=FMbSXWTYaYbWSMMF6=2J' NG3έÄ޲ݨe,ű)d-(m W%1;DLRV/YyYW)TNmG>a4(+ŹֳX禀.iJ #t/1:CKQlVXY)XTOH?5*x^ @Xчl٩!ngdɀԨs5!-8nBJ(QUXYzX_UfPI:A]7P,7 {;2<^fh`\.ڵ$ޥ,\* 5,O7+AI_PWUtXYXU5QJB8-!Mty쪸f'ʩl̴qG)Ig*5?{HOT#XYXmVQKCG:/# ^:및RͳĶjl(O4>aGN'TWY)YVRLD;1n% @Aq*/ڱ+oݲlο-< >'2(==FMzScWZYYYZWmSM"F=2' f΂_Ųެ֨mBL=‘ d` %61;ELRV/YyYWTNIGq>/4({FQۑďI㦀 # _֡ <#/c:CKR{VYYXTtOgH?5x*Bi& 'ZǼUʩp#ɶCk" .8BJCQUXYiXUUIPIA27, : ~µ%L_flgMN d\ i,{7RAIuPjU~XYXUQJYB8-!WiCUӶܪk' z[**6@HOT2XYX`VQKC:S/# i0Dʢϰ|z^л+Ϡ7M)z4>GN5TWY'YVRLD;05% UG \𲙺Min n'2U=[FMSqW\YXYKWXSMEYnYWS|N GK>4(IVdh}=ܦJ :˓Y r $/:CKRVYYXTZOEH?5C*/u,Ƣ@n§ <)$wN"8. 9BJYQ VXYdX?U2P^I@7+xEޓҞ彥 =Uhuwfq>GM= ,7{AIPwUXYXUQmJ2B~8-!XQ50ݯͪj0練 -ƩђGNETW|Y&YVRuLDW;0$d 񸚱 PŦ|!ڟEE'$3=FMSxWeYOY@WDSjME3d(q4ϕDh-ۦ~,;e;h< @$0:DL4RVYYXT>O%Ht?Y5*^?ŀ~) qͧVNI\"m.F9BJwQVXY\X/UP@I@6+<[bsǽ*Qe}8f}ӀI| ,7AIPUXYXUPNJ BP8Z-X!růg8+Ux1*+Z6U@HOTBXYXFVQYKMC9.#vR fUPqy)? ܥXC)4?GN\TWY!YVyRTLD-;0$D3 S˫ȸF˦0-޺īX5x'N3=FNSWkYFY8W*SQME<2&  kowh|9!ͣ S )&1I&DܧvD=pBP{) 5'?GOtTWYYV_R9L`D;X0$ _f%׸˂d:ϦCKGΈ l (~3=F(NSWnYDY'WS5MEp<1P& 18FιSVعP=D ^&1wU<(3=FBNSWpY@YWSMuE<<1& KͰ¯0zt{sx #&&24x)7N 9| %zpVZpʲ [ !#.9TC\KQGVXY@XTOHK@R6+'gH*6fͯ (*|c!e-U8BRJPUXYXUPIA7, q=xocȌ7ucR/ƽwr_"B+6@FIP1U]XYXVqQJB>9d.u"U<ݿEQͧn+ ЩKe*g5y?,HDOTXYYV.RKD:/3$ 1`/c0'ڦ0nO;x& n(3">G[NSWqY4I)ybX ʭoymշ< Y#+/9xC}KQTVXY5XTOH%@$6*Y1ݠѿ%0hͪ毸8=]%_!-8=BoJQUXYXzUPIrA7, 8J5=c]xqhUC 齩ǜҜQ+7@eI8PBUgXYXVXQJB9/.C"l԰ɴ$7ħjJ5܀7K*5?LHaOTXY YVRKC:/#gO - ?0GvN TWxY4YWRL(E;`1%6* 5صadNy̨ϬE_r< &2< FM_SMWYYZYpWSMSFO=2j' kW@Ð䨿Z) X̽V I%0;DLRV+Y|YW1TNyG>s4)C(%ƻ㳺ZwzݰP7x #[/%:CKQeVXY)XTOH?5*x Tmє}٩,fݪ۶^JqԐ_!-8^BJQUXY|XfUqPIKAr7_,O R DDghh_Q(ʵމL ),67 AISPSUqXYXUDQJB8."`5ԊɅ g%dҼa0ݱ-yH*5?jHyOTXYXyVRKCV:/#3 vV LĢWQ(=4v>PGNTWuY4YVRLE;*1% T[׌3D߱9o٨Ͳb Υu ('2=*FMqS\WZYYYbWrSM/F$=21' )(Γp˲רj8ױ=,€LM y%"1;DLRV1YyYW"TNWG>?4(_ fۤĞȳHrLևo $#/O:CKRqVYY"XT}OvH?5*Z~= JG S,n7;AIfPeU{XYXU$QJbB8-!(g{Tg㪯k$٩x޴cJl*5?HOT+XYXgVQKC/:c/# A\"ʵްyWܳϏ6)l4>vGN1TWzY0YVRLD;0N% e#VƱ#d粉7M^ Z'2C=MFMSnWZYYYPWaSM F<2' DsCѬͨxI[X­)؈ +%S1;ELRV3YxYW TN4GX>4(]m&1vwC}8%ˀּ> ^#/{:CKRVYYXT`OUH?5Z*L =ƲJiç0 a8"%.9BJRQUXYkXBU@PhI@7+d޲ҧDWinvV`+49,~ ,7eAI~P{U}XYXU Q}JAB8-!n/hE+<¶ժm+詎Ɩz+H*6@HOT1XYXWVQ~KC9:/]# N'ըʋܷ°nyjʭDTr 7)4>GN@TW}Y'YVRLDm;0%x 2-Y¦fچ2.'3r=mFMSxW`YTYDWLStME<\2&_Y JٵB%`wXؽ[ _%1 YoYWSgNG0>3y(+2FϤXw0ܦ )\&X˯"{ '$/:DK+RVYY XTIO3H?p5"*vV ƒ6mɧJ@Կ - Cl"[.29BJlQVXYaX5UPPI@6+S&oxҁн0Sfyo0Zdo2d ,7AIPUXYXUP]JBf8j-o!1+үh3GѮb+E6E@HOT;XYXMVQgKWC9/.#i xb^w{ܭt/ۏF(q)4>GNSTW|Y&YVR]LD;;0$[H e˻׸KƦ# ֺĠ<ka'=3=FMSWdYOY6W8SXME<.2&+ ن{v- ͐; &143C(cK|.q\#ئ0ȫEM,\ ]$!0:5DLCRVYYXT.OH\?<5)@ܬji mէ)f`7i<".c9BKQ#VXYTX&UP/I@6+xp=DYǤt!LdPȕӥi( ,7AJPUXYXUP;JA48;-;4uU'q3=FNSWkYFY.WS;MEw<2]& FMVعbG̹<)*v F&1acڶ'6/ ̦G~øIח" <$0%;DNLtRVYYW^TNG ?4)Ig!SЇ!-qLL]ʟK f#.9DCQKQAVXYGXTOH`@_68+ ?\1;gfO!O-G8BHJPUXYXUPIA7, U߆oȣ?{jL'|hXQ1+6@4IP&U[XYXVtQ KBS9s."g'R%R]ҧn%xyЏ8N*X5d?$H4OTXY YV:RL&D:0E$ NtFTNSWrYS=WQYbYWSMF=.3'MT*ډź¦Ow ] p$0P;DjLRV"YYWKTNG>4Z)+ybحpucȷt+{ >#/9jCpKQPVXY;XTOH8@36+rEݰ52gĪޯ( *FF!{-y8&BkJPUXYXxUPIA7, MWRFx"cpkR;۽Nj҄=h+7@YI/P6UjXYXVcQJB"9F.X"/ÿ3@ŧm?!j)?*x5?=HSOT XYYV$RKD:/$~a EO "{4e\۟I@(3:>$GkNTWsY:YWRL4E;p1%JD JqsVǨĬ.T_#q t&p24()Z@8Իĭ_vuͰ췖Cd s#N/:CKQaVXY,XTOH@ 6*4h݂Ѧ *iܪնG=\zJ!-8SBJQUXYXlU|PIXA7q,k r%WUhpd^JǻҺs8,(7 A|ICPOUlXYXUFQJB8.!"{Gԕɜ#qƩTżK"ܞ`6n*5?`HoOTXYYV RKCm:/#G+ k0}Eč@B~y(.4a>GGNTWuY6YVRLE;A1% jnؘJMBrϨެV}͏ e  '2=FMgSYWWY]YdW|SMY4(w{۹ ŮԳX} 5tW #w/A:CKQpVXY(XTOH?5*pU4N~ٴhթ"j sdɕԫ@!-8wBJ/QUXYxX[UcPI7AR7D,1 i7-ݵ7[egd\4(ެ7g4 A,W71AIbP[UyXYXU/QJvB8-!@~gv 몵f(ͩpӴyQ3Un*5?|HOT%XYXlVQKCA:w/# Uu4氋}SѳŶ} u(T4>eGN%TWxY/YVRLD;1c% y38o0ͱ-iިڲ});D B'22=@FM~SbW`YUYXWjSMF=2' ^ ̀T۬ӨpESCŸsi %B1;ELRV8YtYWTNIGa>-4(u=IۆĊBz-e֭* F#/h:CKRyVYYXTnOaH?5p*6^$IƼT©g§(Lu&".8BJEQUXYkXMUGPwI A)7,/{޿J]glmPV%!ic u,7ZAI{PlUXYXUQJOB8-!Iz^8Nζتh-ߩ h3*6 @HOT0XYX\VQKC :P/q# iCջʝаsxcֻ5Ϯ>Z#)4>GN8TW}Y(YVRLD;01% A; ZWs|x'3[=eFMSnWdYPYMWSSME3(8QXϹb{9ݦOB˜` $/:DK#RV YYXTRODH?55* l$ƛ=iʧ B1Ŀ/S"K.9BJbQ VXYfX8U1PSI@6+k:ވҖܽ9Tfyxm{GOZM ,7}AIPUXYXUQdJ/Bq8-!JC, $֯ʪl.8ƺєNl+862@HOTGNUTWY"YVRpLDT;0$o_ |츐GºÈ-ڦVM'+3=FMS}WfYMY?W>ScME8 (ٚ(n ~"{ %1$<^ELRW3^(te)ώ<~c*ڦ+:r?qH B$0:&D L7RV YYXT6OHm?O5*P5v{! sͧ#ZT&P*d"x.N9BKvQVXYZX(UP6I@6+1OZhǷ+JhAuȃӌW ,7AIPUXYXUPEJBE8O-P!gj73Z݁91+f6[@HOTEXYXCVQRKCC9.#gL ZNPw2Gܮ eL)4?GNfTWYYVpRTLyD,;{0$3) H˝˸u@ɦ /5(ĵ`B'^3=FNSWiYIY3W'SHME<2u&  b^ii=%ͳ_ 2&1V<{E"MSWEYkYWS:NF=3&(;.`Ҧ0ګQiM5 $80:FD)LQRVYYW|TOGE?!5)qc܎VS pڧ6rwXՄd".|9C"KQ'VXYOXUOI@6w+]N*8Ǖ\ծAj`žȱ߇K!- 8AJPUXYXUP*JA8-!a0ӲվndD̮S-޴6zAi+6@ IO UTXYX/VQ0K"C9."6 si3xAܧrNAzLU~)52?GOuTWYYVZR3LYD:O0$ Ld״wc۫:ΦCUTΓ%z(3=F(NSWoYAY(WS-MEa<1C& {&.@̹IdعWKJ b&2yVXYDXUOHn@s6J+$Th?@eQ`c-Чr iiŨЂ=)>5[?H/OTXYYVJRL7D:0`$ [*ւQ}E˫,Ҧ'[p/|N_I(3>FINSWrY=YWRMfE:<1& >ͨ£2ny~! (&/24m)+D1swuZdzʼ n ,#/9ZCgKQPVXY;XTOH>@N6+X?"5iªѯ/2n!o-`8B[JPUXYXUPIA7, c0s^_ȅ+v|eS0ѽ~|k*Q+6@DI*P.UbXYXVjQJB99U.p"C - ٿGbNSWwY9Y WRLCE<1%bV `̄}Y*=÷Iٷ \ \&[2TNG>46)oTIέbqkİڷ'K `#8/:CKQ^VXY2XTOH@6*J)|ݒѼ)mتǶ8+Hc5h!-8DBxJQUXYXrUPIlA7,y *85)b WvngZCǦҩY,7@gIBP@UmXYXVQQJB9).8"b ԩɪ1mK< ܊I!Z*5?VH`OTXYYVRKCy:/#ZF '< @|x0ۼ$m^(4X>3GN TWxY4YVRL#E;T1%(! .ةZ\IyΨӬGkA '2< FM_SRWXY\YkWSMLFE=2]' ^O:ιÆ註`&ıV$c L%0;DLRV(YYW1TNvG>j4 )2$Żೲ\~߰&XF #h/.:CKQgVXY-XTOH?5*~jIcьߴwة%mbWyԜi(!-8eBJ'QUXY|XbUmPIBAh7U,H K>Aeck_S2̵ޖ!R /,D7!AIRPXUtXYXU3QJB8-"X$zɃj"ʩdȴټgAB{[*5?uH}OT XYXuVQKCL:/#% lH zKóĭ_^(F4|>ZGNTWsY7YVRLD;!1x% JM~/:ٱ7kըβmά*) 4'2$=1FMuS^W^YVY_WoSM&F =2+' t"Αbβެݨl:?8‡ZR %(1;ELRV/Y{YWTNSGt>>4(P[۝ĚI} S֕x 1#/V:CKRuVYYXTtOsH?5*Nt1.eͼƴZ̩nɬ1e ".8BJ;QUXYpXSURPIA:7%, Jʵ*P`ghfGD WT _,q7JAIsPdUXYXU"QJ^B8-!]oM[޶媨m&ک}mS!v*5?HOT.XYXbVQKC(:\/# {3Wʫװ~xY˻ϒ0=)s4>zGN0TWyY,YVRLD;0?% \ R$^C\g l'2Q=QFMSkW`YRYSW[SMF<2& :m^Dά˨zL^g±7ؐ% 8%Z1;"ELRV8YsYWT~N+GO>4(Tc$pt=}?.ˈH l#/:CKRVYYXTXOTH?5G*89Ʀ@n§8#qG"-.9BJZQVXYgXBU9PcI@7+ xZޢҧ齯 EThstai6;F8 ,7oAIPuUXYXUQuJ:B8-!]*XA2ܯ֪n,쩒(Ɵш0]*#6#@HOT4XYXZVQKsC9(/Z# ?՛ʇҷhvjέQ czD)4>GN@TWY#YVR}LDf;0%q #"󸤱 WĦuڕ:<'3t=|FMSvWcYRYAWISmME<[2&WO =ٯ6!ah e j%13w(*y>ϛQp/٦$/c/_˺0 3$/:DK1RV YYXT>O/Hx?f5*lGƆ, rʧOF޿6K}"_.A9BJlQVXY^X/U PCI@6+Edl}½/Qf{t6artAl ,7AIPUXYXUPTJBZ8`-i!&)ïªj6)Iѽh% +Q6K@HOT=XYXKVQ`KRC9.'#zc n\Yv}' 5ܖ M8w)4>GN[TWYYVwRaLD<;0$S5 Y˲ѸIȦ&*غĨG*vl'F3=FNSWkYHY8W1SUME<"2& vy ur8͗O &1ELǠl߮GgWȟӯt3 ,7A JPUXYXUP8JA18--2!uHzn8Ftݠe*X+z6v@HOUCXYX;VQBK,C9."G) ~G.EsG.d8?i)4"?GOnTWYYVaR@LgD;`0$ kq/׿ˏqBҦ C@:΀a(u3=F"NSWlYGY)WS4MEq<1U& ?AOҹ\RιB44 J&1jޫg}oX $\0;aD:L_RVYYWnTOG-?5)vOAoд9HuݧA.8wiRedPanda-4.1.12/app/resources/output/audio/C7.wav000066400000000000000000002570341444020206400220470ustar00rootroot00000000000000RIFF^WAVEfmt DXdata]ST2EHSNY|WMz='> 򨐦 $#0DR"YWN>D)vPltmҷC1/yCQX7XO*@*UݾiЪ]^-=BQXXPrA,0L,nl<Ǜހ+@9PeXXSQB/. m/ܡ:M*?[OXYRC/h/C;%b(Q>xNW5YR'E]15iGĨar &( ddzN}ʌ%/CQYXO?*{iǴϩh~S-B4QXnXYP A0,QϵWbeV,@AkPzXX&QhB-)Om٩ഌH*?O,XXQCi/d~z\ܳ!Ŋ; )>NW2YRD0d%Z$沷Z ['G=MlWSYaSF2CLϬrP/} %;LVtYT/G4Y*zvߦ{֫; #v:KVYTXH5& ѶH0a<"9JVYHUjI7]\l`\7y 7IxUYUJ8!5G?實-#*6HTYYVK:a# Ս°ȭZ4GBTYV}Lq;% SĦh΍3 3tFSdYDWwM<&[ I@Ø\̿g1FER9YW]N3>v(8۟Ē-[X&/D.R Y XJO?'* zƉq@/EW.BjQXbX!P@+Rpށǒ5d,Usc,APXXPBm-01ȡêi%Ƹ݀+F@O=XXQ]C/ pTztqۨCp)>NW"Y~RD0TظCm'=N}WOY8SE02') &><MWhYSF3P3\צ-EO Z$:LVYTH<5k Чf:?"g9K%VY'U$I6wvLңFg 7JUYUkѓ {6H UY>V@K9"1 9+_;^4GmTYVCL;$ r4אq@̦=Yl3FSjY/W6M<`& J^ȹ<(y1ESIYW+N=(%NS۫bO0YD]RYWO2?)KܺJp>/ʛ2.CQXMXO@g+u*Qcf]-APXXPA-Jߠ`g_<{+@PIXXQC.s9nW_)D?OWYORMD;0~L˒ث^^Ĭ;((=6NWAYSxE1e*͹~j^ v&kO!J8FJUYUI7 RӟMY6:I&UYV KO9"('Zϧ %w0T5HTYV L:F$ ?9*ئg>,a3FStYWM)<%w w؞͙?>2E[)+dstdƷ,/kCQX9XO6@+mh̪AL-(BQXXPA,TSLc<ǃi+@,PeXX`QB@.--k"܏!:*?QOXY#RD/ ?T4۬N(@>mNW7YR1Es1KsXȨU[p &("vγXx s{/CQX(XO?*-Ѵԩkeɯ=-xB,QXtX_P3A>,pXiXjC,1A`PvXX1QvB-<jpͩشx3*?O%XXQCx/z|Uѳu&(>NW-YRD1x>k-.ߨݲ? C'9=MgWVYhSF2ZS଴sDi %;LV{Y TJG!4y9ϋe֒) #g:K{VYT^H56#ѿX"ԹM$"8JUYKUzI)7u^mNVhk 7IpUYUJ8!LZO񯦧-}6HTYcVK:t# "դưŭлA4G8T}YVL};.% ]Yq2aFSaYJWM<&o [TàèRw̧It10ER6YWlNA>(N۸ė7Q@ |/C(RYXQO?6*&"Ɩm3(>.B_QXcX.P@+jޖǝ:f} E[L,APXXP-Bz-FF ɮȪlƜo+6@O7XXQmC/+Ʒcsv jۘ&a)>NW$YRD0r ,ڳX'=MWLYBSEG28 $~~ %*<MWsYSF3c*@eۦ&;? D$:LVYTHO53v' ϧY$+"Q9KVY(U9I6YҷO|R 7IUYUJJG8R!h7]фa6HUYCVOK9#E KJЮ!M4G^TYVRL$;$! CצxF̦0躹D\3FShY1WJM<{& eg}(a1~E SDYW5N=((=dY׫N|70ODNRYWOD?)cXlŹYI c&{<>M)WmYSFl3U=˦Cm3s $;DLVYiTG4b7\-마?Ֆ2 "9EK8VYUHt6'j?T9!88;JUYU J7 hӬJ㮨Fuz6'I%UY$VKe9"?9bӧ i?5HTYVL:]$ SB.֦`-L3FSlYW M>< & ت-́&-2E5SLYWM='mB "ݸ˼_0DxR'YWN>r)Aqvu\{/ZCQX?XOF@+ iª/2i-BPXXPA,brU/f4mT+@PdXXnQBZ.E1BoƷp*?@OXY/RD/!T]1ڗ9v(0>cNW@YRGE1d|c=Lٹ] & )7X{~ce/CQX(XO?*I݉ԩrݪRɘ%-gB(QX{XiPCAS,ebZʵR/, AXPrXXNW0YRD"1R~;6ڨϲñ, 0''=MdWVYrS+F2m j଼m6R %;LVxYTOG=4Wϓ Xw #W:KvVYTpH5O2/׼Y!ԣ7 "8JUYRUI=7 )^mBE UT o7IiUYUJ8!^sZ-tju5HTYdVK":# 6֨ܰ𦷭Ļ)m4G-TYVL;?% ¾`C^2VFS\YSWM<& rcìɨIg̍3[1+ER;YWxNP>(d'ģ>|?2j/CR YX_O?O*;-Ʃq&/.BVQXfX7P@+ާǬ>fy9A6,qAPXXQ;B-bW ɻЪjƆZ*$@O3XXQ|C*/NW*YRD0"& ڛA'x=M{WLYLSEZ2Nie %KuԦ+)2 5$:KVYT+Hf5FЊ*ɧOݿ}">9JVY1UEI6lʽTw{o; 7IUYUTJ^8a! ˯6KjQ6HTYGV]K9"#\ ]9Е 24GYTYV`L6;$: ]׮@Ӧ!޺+nH3FSeY9WPM<& v wwF1sESBYWAN=:(Lllɫ>b)0;DJRYW-OL?)8pbp/h q.CQXRXP@+1KmiPȫ߮.,APXXPA--wsf I`P+u@OGXXQ2C.IBʏGo>5)#?OWYcRiDb0tˮ嫉G;ă'=NWDY SE1BLٹT5 Q&i<1M)WfYSF3nAҦ8i}#W $;:LVYnTG5xOu8ᧃ,vՂ "9)O/bwzJnZ/CQX-XO@**]ݝߩkުնEɀ -SB"QXXuPOAk, hhKƵޯ=,ALPpXXDQB.nnéPiu*?sOXXRC/4#|HP(m>NW2YRE81eK;ҨŲÞ '=MXW]YyS5F2.!p򬵦nұ'8 e%;LVvY&T[GQ4gϩ=d #F:KpVYTH5nDGg!zԇ#!8JUYXUIK7( + 6`i:3ҷ@< `7I^UYUJ8!vj ,gS]{5HTYkVK3:# N,ּ𦪭b4mG(T~YVL;U% "ȱf2D2FFS\YWWM=' pų̂B[|L1ER3YWN[>(v=ĵ>3 ˳T/CRYXkO?c*PGƮo.BKQXhXDPA,(޼ǴJcq$.|,bA~PXXQHB-up/ʶתinB*@O-XXQCA/W4m{dBŶf3)>NW(YRD067ً#'d=MpWUYNSEh2g+ì~MدK %P( jڄr)ǫxx%N0.D?RYX/Oi?)Cmo$`bk{.BQX]X P@+(D^| kBȑߙ,APXXPAE-ȇl>ݳG>+f@OJXXQ;C.aRʞMs5&u)?NWYrRsDy0+˺𫆦 61h'=NWHY$SE2\\蹖Cµ" <&Y<&M"WkYSF3$JԦ4\o D $:-LVY{TG5bMק~dl "9(K2VYUI6PGҊЮB;ә!8$JUYU"J8!!̾AԮ#ҾGQ6IUY,V-K9" gh{٧ Kg5GvTYV(L:~$ A uS=ΦL'3FSmYW)MV<=& G߹gR2E#SJYWN='h07 쫿ː3s0zDjRYWN?)q"ܖ5rNVY.8CQXHXOe@>+H7hC-APXXPA,|Hh&w_F$+@PWXX}QB|.o^['osŌF)b?4OXY@R+D0U|yë!xlT( >NNW@YRcE13͛p~ ِ+ &<`M;WdYSF93Uɺ ɦKq׵P $H;iLV~YUTG4$׭駴ir 9#9gKPVYTH;6Z@5կ$|!k8cJUYUI7 %]puTֽ36QI8UYVJ09d"ȿIħ;[r5=HTYVK:$o %"ئVUύ33GSqY WL<%K Ry ¬-fh2EJSVYsWMi='&먔470DR&YWN>0)b@guu޷2T>/CQX3XO@*Arݮjתȶ1ow-KBQX{XPWA,'+#ogGǮޚ$ ,@DPiXXMQB.~nFܹQa*?fOXYRC/V3|C?x(]>NW/YREL1 {YCɨpË '=MRW_YSEF2D4΀fɱ( Y%;LVyY+TkGb4϶䰾+M #9:KkVYTH5za]vp|!8JUY_UI^7= @5:hb3"ҡ'* K7I[UYUJ8!#| hHKc5{HTYqVKD:# dAhN4]G%TxYVL;n% :"رfu/29FySYY^WM=' لŲШ8Nh91ER1YWNq>(SľG|!˘9/C RYXuO?w*hZƷʩk i.BBQXoXJPA,<ĵLie j,QAtP~XXQWB-@ٶ۪mܩa&*@O)XXQCT/mHwy_0ŤL)>NW&YRD0MDtq'T=MlWUYXSE}2}->Ǭ{h=ؘ1 %;LVxYS*G4L chڦ ֽX $:KVYTIH5tСGɧ4{N"9JVY>U^I7K VrgoG 7IzUYUiJ8!3/ݯ/&6/6HTYPVyK9Q# ֭i 4GJTYVxLW;%f QƦΜC!3FSeYAWiM<&D 5.Ícw1SER=YWWN>d( ڕ}0|ëhh 80D:RYX5O{? *]}n"IB\g.BpQXXXP@+>Zpdž+g8kȃ|,APXXP BT-Ȗh*ݛ4'+X@OFXXQIC.vbʰPwy,ܾX)?NWYtRD0G˸-V'= NWNY)SE2ls󹟬9£ *&D<MWsYSF37!VӦ2P_/ v$:$LVY~TH(5zZ ҧr KZ"q9$K VYU!I6f]1Қ֮I} 8JUYU.J&8&!<۾@Ů}Ұ,;6I UY4V9K9" s.8vTr 5GnTYV̦Hu3FSjY'W/MmNW>YSnE1Iͧ{o{ &( `S{ʌ'/CQXXO?*f˴˩k~ɿT-B2QXpXVP#A.,QѵSh`V,BAgP|XX%QjB-%Z߶h۩ߴH*?O+XXQCg/_zZ޳ ō7 )>NW.YRD0c(V#!粷] ^'E=MjWYYYSF2?HԬyY%؄ %;LV}YTYWcN0>w(8ڦĊ3[X'/D,R Y XHO?%*tƈk>1EY.BmQXcX P@+Tqހǔ0i-Xne,APXXP Bg-1/ȝǪe"Ʒ!+I@O@XXQ\C/yʸ]swsۨCo)>NW#Y}RD0Wո# Dk'=MWKY7SE12#/ &5<MWoYSF3M0`Ԧ.DO Y$:LVYTH95j ҧd8@"d9KVYU0I6oBҫLg 7JUYU;J58>!P򾰯9mћ(u6HUY7VGK9"1 >*`7b4GmTYVBL;$ q5׏t<Ц:Yl3FSlY*W>Mx<%ݦbB)c3GSqYWL,<%~ ؗ#͘@<2E:SRY|WM='T. o0DRYWN>[)*h vqfķ)/eCQXmNW;YR7Eo1KqXĨR]i &(۳N~ q /CQX&XO?*8u״өifɲ?-vB3QXxX_P3AA,jڵ^e[޵iC,/AdPqXX,QyB-@gmϩ״x5*?O&XXQC{/qySճ y!(>NW)YRD1~7p*0ܲ@ D'7=MhWVYhSF2X[׬sJj %;LVvYTBG)4r>ϋ k֎- #o:KVYTcH5:"U+ԵM'"8JUYKUxI,7s ZoPQ mg 7IrUYUJ8!E`K󯨧' 6HTYcVK:u# ̰֞ԻB4G;TzYVL;*% ^Uu2`FS_YKWM<&q aOã¨Sw̫Ri1;ER:YWnN>>(I۹ĕ8T= /D"R YXTO?;*#!Ƙo20G.B_QXaX/P@+kޑǡ9dIWP,~APXXQ,B|-EIɶªnƟj *8@O:XXQiC/& ɷavs i۔.W)>NW&YRD0t-ڵS'=M}WPY>SEA2=!xs &"<MWpYSF3h&Bfצ*:> K$: LVYT!HM52t( ԧV&'"O9 KVY(U8I6 WҹP{T 7IUYUIJI8P!i9\тb6HUYBVNK9 #J MKЯL4GeT~YVOL(;$& Iס}AϦ.꺸E^3FShY1WFM]g`߻P-APXXPA-_߶ljT*xb+@OOXXQ%C.7/ʁ@nMM)0?OWY]RYDO0d˟ૂKUď*(=(NWCYSE1u+;ɹ`J a&<;M+WkYSFm3X>ʦBm1t $;ILVYeTG4a9]/৑:ՙ0 "9@K@VY UHx6$e®8Q=!68)7U|\m/CQX-XO?*Bݏߴ٩kVɚ+-kB$QXzXkP@AW,~`gVεW),(APPxXX=QB-T{mɩʹe|*?~O XXQC/&~Mdzf (~>NW0YRD#1N;4٨ϲï. 1'&=MbWXYrS'F2{a欹l1N ~%;LVyYTTG74PϖSz #^:K}VYTqH5Q38μ_ Ԧ3"8JUYSUI=7 'biFA PY j7IcUYUJ8!_r]&xju5HTYeVK":# :ֲӰ馹Ż.r4yG5TyYVL;C% »dJX2UFS]YSWM<& taì˨Q_̋4Z1,ER=YWNJ>(_'Ĥ<A1f/CR YX]O?I*@6Ɵl &0.BZQXmX2P@+ާǪAgt3E7,qAPXXQ@B-^Z ɹҪhƋS*(@O5XXQ~C+/Aշhzf KvH)>NW*YRD0 !ڟ<'v=MvWRYGSEX2Nda %(Urjɫ9g'0@DBRYW0OJ?)8oan0f n.BQX[XO@+ 3IokVȴߥ7,APXXPA*-zzg F`Q+u@OJXXQ+C.G>ʔAu@3)"?OWYeRiD`0z˯䫋 I;Ă'="NWMYSE1?QҹQ4 S&h<3M&WiYSF3n CϦܾӪ>%!%8/JUYUJ7 þFٮ0Yh6IUY)VKy9"RP nاWy)5HTYV#L:x$ 5dO0֦S%=3FSmYWMI<'& ؽ8uj !2E3SGYWN='V/̸ˢB0DyRYWN?)\܄)}rYrp.NCQXBXOS@++1(cY-BPXXPA,j;j)o[<+@PZXXrQBl.]EN m{ŢY*t?>OXY7RD0; ih-ڂd(>VNWWgYSF"3C|ξǦOh %];tLVYFTG4 mխ{ I#9xKPVYTH/6@/0ۯ04!}8pJUYUI7 CrfpZ罓J7`I>UY VJ9O"yԼ9ħCt 5BHTYVK:$X ۦfiϢH4&GTwYVL;%5 >g~ˬ92{{2EUSXYkWMP=w'xꨏ K P0DR)YWN> )N,]yyIkO/CQX.XO @*']ݟީnת޶=Ɉ-XBQXXsPPAm, heQެA,APPjXX?QB.k oéR kr*?pOXX RC/: (FN(p>NW6YR E61 gJ<ըòÞ '=MZW\YyS8F23r𬷦mѱ(> j%;LVuY%T^GL4dϬ D` #E:KlVYTH5dIIݼl}ԉ !8JUY`UIQ7& ($1de?0ҳD9 c7I_UYUJ8!sj%n\eu5HTYpVK9:# L,ּ]4nG-TvYVL;R% #ɱf1E2CFSZYYWM=' oýɨCY{O1ER3YWNc>(|=IJB|/"˲S/CRYXhO?c*OBƴq.BJQXjXCP@ ,#޽ǴJdp$0v,hAyPXXQLB-sr0ȶتioF*@O8XXQC@/V1ݷwrjCŶf3)>NW&YRD087ڃ+'k=MvWQYOSEf2j-uVاP %L(fڄr'ƫvV0*DBRYX3Oa?*Lsr&[Xv.B{QXVXP@+'Cav(dC~ȗߕ,APXXPAB-Ȃb 8ݭM;+d@O@XXQ?C.cOʢIu5l)?NWYrRtDv01˾쫉 71h'=NWLY"SE2Tc㹙E· ;&[<&MWnYSF3NҦ3_m C $:-LVY~TG5iG ۧycl "91K(VYUI6OG!҉ͮFʾӔ%!8"JUYU$J8!(ϾBѮCR6IUY/V)K9" n_z٧Kh5GxTYV+L:$ B qY8ϦO3FSnYW(MX<;& FaT 2E(SFYWN='k.8 ˉ.v0yDjRYWN?)q"ܗ3nRTb.@CQX@XO^@C+E>nF-APXXPA,zJl"z_C(+@PTXX~QB.r[Z(npŊF)d?3OXY@R+D0S yzū)plQ(>KNW>YRcE1.̡m{!"ٌ0 &-)\:ftu߷3T>/CQX0XO@*Arݭk֪ʶ.st-DBQXX~P`A},3ljCǫޝ! ,ABPlXXNQB.oDܺNe*?lOXYRC/R9>?~(d>NW2YREI1 {UEШw '=MSWaY|SKF2G.·cʱ# U%;LVY$TtGX4|ϴⰾ,K #6:KiVYTH5~[Ui(nv!8JUYbUId78 B2Ie 51 ER1YWNs>(OĹKz' ˡ=/CRYXqO?u*e[ƹȩjl.BFQXrXIPA,@ĵMgic,VAqP~XXQUB- Cֶߪi촟[,*?O)XXQCU/lJwya2šP!)>NW(YRD0LIrq'T=MjWYYRSFu2*8̬{d?ؖ4 %;LWuYT'G4DcmަֽV $:KVYTHH5xШ>§:yQ"9JVY>U_I7I TufoG 7IzUYUrJz8!6,ݯ0-=/6HTYVVuK9M# yϭk 4GOT}YVuLZ;%k MʦΜB#3FSbYAWlM<&@ 22Èiv1PERn(ڗ~.~«fm<0D9R Y X9Ov?*^ŃtPGWf.BnQXYXP@+?Xtǁ-g9iȄ|,APXXPBZ-ȓe+ݘ6&+X@OBXXQKC.reʫUr' ܾ[)?NWYtRD0Iȸ ) T'= NWKY,SE2lt򹡬;¤ +&F<MWiYSF36"S֦1P_+ r$: LVY~TH,5YקmMV"w9K)VYUI6i[2қԮMӁ  8JUYU3J"8)!6徥<ʮvҩ0:6IUY6V6K9" v+F)zMhyjҷA,/{CQX7XO'@*WhҪ!X`-=BQXXPmA,2J/ueCǙށ+@8PgXXVQB/.&p6ܥ:M*?_OX YRC/g/D>%_(G>NW(fdzN}ʌ'/CQYX~O?*} e̴ȩotS-B9QXoXYP!A,,WѵUfcV,@AkPxXX%QjB-*Soթ㴋F*?O(XXQCm/^z~WŐ4)>NW+YRD1k]&粶Y Z'G=MhWYY[SF2CHӬwV*؀ %;LVyYT9G4`%u|~֦A #{:KVYTSH5  ѱK/_<" 9JUYBUlI7\YpZb3| 7IsUYUxJ8!6CE௪)!+6HTY^VK:e# Ո˰í[4G@TYVLj;%| ^lΉ/3pFS`YGWwM<&Z L>Ø[d1GER>YWfN*>(3ڤĎ/^U"/D.RYXDO?%* s Ǝm>/FV.BcQXZX'P@+Tqǔ2g.Vpe,APXXPBl-3/ȥkƮ݆+G@ONW"Y~RD0\ܸ /ʚ3.$CQXMXO@c+w+Qfjc-APXXPA -Fߤ\c[>{+@OJXXQC.y1v\a)D?OWYXRDDA0M˖ԫ\cĦ@)(=6NWCY S|E1b';zee }&2EBSJYWM='T0 p0DR#YWN>Z),cnz`Ƿ)/kCQXmNW9YR9Ek1OpWƨVYq &ѻíɰ" t#:KbVYTH6 (L_F!8JUYkUI~7l jQRk^q.7uIPUYUJ8""Oԝ#X!Ѥ<5aHTY}VKh:#) gঙ?r(4EGTwYVL;% fCt۬XZ2FjSXYbWM0=K' G٬ֲ⨑..l:z 1DR0YWN>( z ճQ~r /CQX,XO?*0{Դөmgɬ9-wB-QXtXaP2A@,l޵]d^ڵl@,3A]PzXX6QqB-<giթԴz2*?O XXQC|/t {SԳ w%(>NW3YRD 1w(N۶Ę6PC /DR YXMO?6*$&Ɣq 7,F.BdQXeX-P@+nޖǝ;dJVR,yAPXXQ(B-IDɪ̪hƜp+3@O8XXQlC/)ŷdssdۓ*\)>NW YRD0n ,ڳW'=MWMY>SEB2: yx %(<MWoYSF3`.;j֦+8@ G$:LVYTHR5/v& ӧU ,"R9KVY&U:I6YҷI}}W 7IUYUGJK8N!k;_р h6HTY>VTK9#D NIаN4G`TYVPL);$) Jנ|E̦1溺D\3FSkY-WMM<|& _lz(c1~E SEYW9N=,(=_^ثK?0GDURYWOE?)bVn8uʇ.CQXPXO@}+>]e_I-APXXPA-d߯ogP,uf+@OLXXQ"C.7,ʄ>qNJ)4? OWYaRVDR0f˧ګOQĔ&(=,NWDYSE1v+9˹[O h&{<;M.WgYSFr3]:ͦAp3q $;JLVYeTG4c7`+⧎<՗3 "9DK;VYUHw6'm>Q>!28CJUYU J7 fӰG殥Kwx6)I"UY VKc9"?9bէ kA5HTYVL:X$ KI(ۦZ3K3FStYWM5<& ح.̀&/2E7SKYWM='kD ׸˷Z0DRYWN>o)Drwu[y/_CQX;XOB@+#m.2j-BPXXPA,hj](f3pR+@ PbXXjQBW.F.>mƱv"*?FO X Y*RD/Q`/ڕ7x(1>`NW;YRGE1c}cèBJٻ[ &"^ԯ.Kч 5QHTYVKy:#> |䦊zvϾf49G TtYVL;% (XwҬIH2 FbSTYkWMG=Z' Zٷ娑']#e0DR,YWN> );Zxaf/CQX,XO?*M݇ةjVɘ&-gB&QXyXjPCAT,`gSӵW-, AZPmXX6QB-Phҩp~*?OXYQC/'uTije (|>NW2YRD"1K78٨вò* .'(=M^W]YlS.F2q f䬷rܱ:U %;LVwYTNG;4OϘVw #Z:KwVYTqH5O48ͼcԤ4"8JUYVUIC7 'aiH?WQ r7IjUYUJ8!]s]${ow5HTYfVK&:# 2֨۰즺,p4|G1T~YVL;B% ¼bC\2SFS`YNWM<& qbïŨGk̖7\1(ER(a%ğA|B0f/CRYX]O?O*93Ʀq(6.BZQXhX8P@+~ޤǫ@gu5B9,sAPXXQ;B-`YɼЪiƊT*"@O.XXQ}C./AطgwmU|H)>NW'YRD0%'ڝ='w=MzWNYHSET2She %O׹V5 T&g<4M#WnYSF3l Kʦ>e~#X $;9LVYqTG5wMo>ڧ'yՀ "96K5VY UI6:0 xȮ>߾Ӯ:&!%8/JUYUJ7 Fٮ.Yh6IUY%V"Kr9"VM oէ [{,5HTYVL:q$ ._P3ѦX 73FSrYWMF<(& غ:pp2E+SMYW N='~T-͸ˣF0DuRYWN?)X ܈$rTfz.RCQXDXOV@*+0,iW- BPXXPA,m5b0p\;+@P\XXtQBm.XKSmxƛ_*v?:O X Y9RD08 fl*ځj(>]NW?YRSE1y̐e)<ٟG &)L2fr~IlT/CQX-XO@*(`ݙ٩sժݶ>ɇ-ZBQXyXxPNAl,ggOµǿ޴:,AIPsXXGQB .h nĩUfw*?rOXYRC/<&ER(s>NW1YR E41 iI<ҨIJÛ '=MXW]YwS:F22u물hױ"9 l%;LVuY'TZGQ4kϧ Ca #A:KlVYTH5eLMۼl Ԏ!8JUYYUIM7( ):^i;2ҶA; `7IaUYUJ8!qlv`ft5HTYiVK4:# N,ֻ릮f4iG+T{YVL;U% %Ʊh󬅺.I2IFS]YUWM= ' rúͨEX{K1ER5YWN[>(w=ıB}2˳T/C RYXgO?^*SHƮj~.BLQXiXDPA,$޾DZLcs()&,ZAP{XXQKB-xm3ƶتknG*@O3XXQCF/W3m|b?źa2)>NW)YRD066ڊ$'g=MrWVYKSEf2i*ì zMشC %V(pڇs&ƫyz R0+DBR YX0Od?)Dwt#^^n~.BQX[XP@+"KX}%d>Ȕߖ,APXXPAD-Ȉj:ݴG?+c@ODXXQ@C.dTʞKu7n)?NWYlRzDr03˾ 8/j'=NWHY#SE2Rc乗E¹ ;&\V6IUY-V,K9" nayڧ Kd5G}TYV)L:$ GsY7ЦO!3FSjY$W$MY<>& HcT2ESPYWN='l,: ˎ1s0zDkRYWN?)p ܚ0nQW^.=CQXEXO`@C+D:iA-APXXPA, wJn~ZG%+@ PZXX|QB{.tWV*npņL)a?3OXYAR+D0Vzz«"vjT( >ONW?YRbE12͠j}"ٓ+ &<_M,6HTYUVtK9K# zҭ p 4GKTYV{LS; %d PƦΞH3FSgY?WjM<&G 60Êht1PER=YWZN>i(ڕĀ*mf <0D6RYX=Ou?*_rND\l.BwQXaXP@+=NW;YSmE1Hͪzo z &xNW6YR$E`13fMȨ_u &(hʳL{ʅ#/CQX!X|O?*~lôϩkwS-B9QXqXWP"A.,S͵Wf_X,>AmPvXX$QjB-*Ol٩ഌH*?O)XXQCi/czTŒ2)>NW-YRD0f"]'沶Y Z'E=MeW[Y\SF2DAڬ\%؁ %;LVzY T5G4]%v{֤D #{:KVYTUH5' ѶI3g8" 9JVYIUhI7YYo]_5z 7IuUYU|J8!6G@寥*'6HTYYVK9a# Ս°ʭX4GFT|YVLi;% VĦ hΊ-3oFS_YIWtM<&\ JBÓèc~̻c1EER|(2ڪą8zZW%/D+R Y XHO?%* wƌrA-HZ.BlQXdXP@+QrǕ0h*Zmg,APXXPBl-30ȧo%Ʒ݀ +F@O?XXQ^C/uʾUyvx۪Cn)>NW%YzRD0^ Al'=MWMY7SE22"~. &:< MWmYSF3R6Y٦-DR ^$:LVYT HC5j ӧc8>"k9 K(VY(U$I6xvGҨKm 7 JUYU=J48>!P𾲯7hѕ&v6HUY5VIK9"3 9+_9_4GlTYVBL;$ r1דp@ͦ;Sj3FSfY0W9M~0I˓֫Zcĩ:$(=6NWGYSE1`+ͷh_ v&SPY|WM='O* q0DR#YWN>X).`pudķ(/jCQX9XO2@+rjʪ DI-*BPXXP}A,O[D!|e<Dži+@,PeXX`QBB.-1k(ܐ"9*?SOX Y RD/}FL};۰J(=>nNW6YR2Et1FrVĨP_q &(| ԳS}w{/CQX%XO?*4w״Щobɳ@-wB/QXvX`P0AD,gܵ]e\޵hE,-AePrXX.QyB-@fkѩִy2*?O&XXQC{/q xUҳ |(>NW*YRD 1x:o+,߲ۨC D'9=MjWRYmSF2[[جqCc %;LVvYTEG(4r?φj֐( #f:K}VYTaH59ǼN"*ԶN$"8JUYJUzI)7v!XrLUli 7IlUYUJ8!J]K. 6HTYaVK:s# "ա̰ѻ?4G5TYVLz;.% ZĦXq2cFS^YNWM<&q `OãĨZọIp17ER;YWmN>>(K۷Ę7MF}/C$R YXUO?;* &Ɣl//C.BaQXeX,P@+fޒǟ9h|HXO,APXXQ*B}-HE ɰȪiƛo+0@O:XXQhC/& Ʒduqcے-X)>NW YRD0o 0ڲU'=M{WRY:SE>2>'{w %%<MWqYSF3c*Af֦,7A L$:LVYT HO55z#ͧZ#,"R9KVY,U5I6YҸO~W 7JUYUIJI8N!m2U}b6HTY?VSK9#D KOЩ%H4GdTYVNL);$& Kמ@Ϧ0麶?X3FShY3WCM0IDTRYWOB?)\Si;tʇ.CQXTXO@}+>]iaI-APXXPA-b߲leO.sh+@OJXXQ C.44|DoPQ)4?OWYWR^DK0eˡ᫁LRĔ%(=+NWDYSE1t-8˹`I c&~<9M/WhYSFn3X;ͦ@p5o $;GLVYeTG4b6],姌?՟* "9EK9VYUHr6*k<ӿT;!68>JUYU J7 gӬ}NனFq~6+I#UY"VKf9"@6^اi >5HTYVL:]$ LH*٦[3O3FSpYWM9<& ج.̓+*2E3SNYWM='k@ڸ˹X0DR!YWN>m)Dswt\y/\CQX?XOE@+ k10i-BPXXPA,bqW+e2}uQ+@&P_XXkQBY.E/ApƱw )*?JOXY*RD/)ZY}6ښ6v(5>ZNW7YRDE1d̅\BIٻ\ &TG4Uʭ a#:KZVYTH6",?H4!8JUYpUI7| 4_[rV_7jIIUYVJ 9;"bԨ3L ю(5UHTYVKz:#? }঎t~ϵ*[49GT|YVL;% 'XyԬHG2 F^SZYeWMA=^' Xٷ稏(]"e0DR0YWN>)1Xi/CQX*XO?*K݈ԩqRɘ#-eB)QX{XjP@AX,_gUϵR/,"AUPsXX:QB-Stiҩm*?yO%XXRC/$I̳g (~>NW.YRD#1P;4٨ϲí1 6'$=M`WZYoS+F2w f⬽i2S %;LVzYTTG74PϗS{ #Z:KyVYTnH5N42Լ["ԟ7"8JUYTUI>7 +]nBD ]J y7InUYUJ8!]q_#|ox5HTYjVK':# 5ٰ֬û)p4~G.TYVL;>% ¿aD]2QFS]YQWM<& peëʨOb̋0a1#ER6YWzNM>(a'ħ9@3e/CRYX^O?N*;6ơr-0.BWQXjX7P@+ިǧDcz8?<,lAPXXQ;B-bV!ɻЪj ƇZ*"@O2XXQyC1/EзmtnT{B)>NW)YRD0$# ڞ<'x=M|WMYISEU2Td` %Noܦ!4) 3$:KVYT2H\5GЀ4 ̧R׿ y">9JVY1UCI6rýM}wn= 7IUYUUJY8g! ˯9KgU6HTYIV]K9$#\ ^ <В34GXTYV\L9;$: \ײHɦ)ں%rG3FSfY6WUM<& {tsF1pES@YW@N=;(Ssf"ҫ0k'0?DFRYW(OS?)4tjw)mu.CQXWXP@+1JofOȫ߭/,APXXPA.-vyg GbO+v@OHXXQ0C.J@ʑEsD7) ? OWY`RkD`0y˳⫋ F@~(=!NWGYSE1)L.`w{HnW/CQX1XO@**^ݚݩkުֶBɆ-\BQX}XuPPAk, jfNĵް<,ALPpXXDQB .l jȩW js*?qOXYRC/< (}HO(q>NW/YRE<1fI?٨× !'=MYW^YvS:F21t쬺kձ%: k%;LVzY"T_GO4mϣDa #F:KnVYTH5iDCc&zԑ!8JUYYUIJ7+ $(.fd>1ҴC9 a7I]UYUJ8!vl"s\`|5HTYiVK4:# P*ֽ즭~\4pG'TYVL;[% 'ʱf1F2DFSXY[WM=' xôҨDX{ I1ER9YWN^>(z9ĪIw/#˰M/CRXXfO?a*QAƳl~.BHQXgXEPA,&޸ǷGfp#.!},bA{PXXQHB-uq.̶ԪlrA*@O1XXQCC/Z.sxc=ż`/)>NW(YRD064ڊ"'b=MqWVYKSEe2h- zPدG %L( fځu%ǫw{"M00D?RYX7O]?*Htn*WYu.BQXUXP@+&E`u*a?Ȗߓ,APXXPBA-ȇh8ݰL;+e@OEXXQ9C.YYʛMs4!t)?NWYoRwDu00˿쫊 8-l'=NWMY"SE 2RdṛE» =&X<%M#WjYSF3!JӦ7WtH $:.LVY{TG5eG ߧwbm "9,K0VYU I6QEҋ̮GɾӒ(!8 JUYUJ8 !)ɾEЮ FQ6IUY.V)K9" jcxݧ Jc5GzTYV*L:$ FtX6ԦI3FShY'WM_<7& G^X 2E)SDYWN='k-8 﫼ˍ/u0yDlRYWN?)kܘ6xFP^.=CQXCXOa@A+F7f F-APXXPA, yHe)uaE#+@ P[XXQB~.sYZ'ooŇJ*^?6OX YAR-D0U}z"vkR( >LNW=YR^E18͚p|"ُ. &<]M>WaYSF;3TǺ$ĦNr״S $L;hLVYOTG4")po =#9oKHVYTH=6T>3կ&y!m8bJUYUI7 $^}pxPҽ/6QI8UYVJ-9f"ʿHç3_v58HTYVK: $l %ܦ{YTύ43GSsY WL <%P Tv-jf2EOSSYsWMd='"򨌦880DR'YWN>/)aCjtsⷭ7R>/CQX2XO@*CoݲeܪŶ4kz-KBQX{XP_A},2 odJǰޔ,,AAPiXXIQB.~m©FܸS_*?hOXYRC/R6=:x(`>NW4YREH1!}XDϨv 'FrS`YXWM=' لòը?Fc71 ER4YWNr>(PĻIz$ ˟?/CRYXtO?u*jWƺʩh n.BCQXqXKPA,>ŵLjc c,WAmPXX#QTB-C׶ܪmݩﴛ`%* @O/XXQCP/kJxxa3şR )>NW+YRD0MFu u'Q=MmWTYZSEz2)>Ȭ{g=ؘ2 %;LVuYT$G4Fdjݦ ֽV $:KVYTDH5{Ч?§;zO"9JVYb("~ڕ~.ji <0D;R Y X9Ot?*d{l$IFXf.BrQX`XP@+7\rǁ0e;hȅ|,APXXPB\-ȓf+ݞ./+P@O=XXQPC.ugʫSu|) ܾ[)?NW!YtRD0Gɸ*S'=NWJY+SE2sl9© &&H<MWkYSF36 WԦ1P_- o$:LVYTH+5v ZاmI["u9K%VYU$I6lV0Ҝ׮H~ 8JUYU-J'8$!=ܾAǮx ҫ/;6IUY1V7K9" s-ާ6wSu5GpTYV8L;$ U%{l4צ=r3FSlY&W1Mk(=CNWEYRrE1Kͫwr y &y 3 GSnYWL<%d j؅ ͯQV2EGSPYyWMy='> %$0DR%YWN>H)Vjygط?./zCQX0XO@*\hҪ Wb-:BQXXPqA,5D6wfAǓވ +@5PkXX[QB3.& l:ܩ4R*?^OXYRC/f0C>%c(M>}NW=YR)E\16dNɨbt &7IUUYUJ8 "6ԑ_Ѽ5Ѹ2O5mHTYyVKU:# zU覚U>4NGTuYVL;}% N3oav2)FrSWYbWM'=0' ,ٖвب2>}R"1DR2YWN}>(_ųP{ʊ)/CRX%XwO?*iǴͩlyV-B6QXnXZPA0,TԵRh`X,@AjP{XX*QeB-(RoשߴA*?O&XXQCc/Z~~Vŏ6 )>NW-YRD0i!\#貶[ Z'H=MkWVY^SF2@JѬwV) %;LVwYT9G4c!xwަ w֪@ #}:KVYTWH5  ѵF6a>"9JVYDUmI7\UvVc4y 7IwUYUzJ8!7G=篣.-6HTYWVK:c# Ր˭Y4GBTYVLi;%| ZgΌ4 3vFSaYHWsM<&] L?Øc{̻f~1HER>YWfN+>|(5ڨĈ4^T#/D,R Y XFO? *qƇnC0F].BkQX\X'P@+Sqހǖ,n|3Srb,APXXPBl-11Ȥm#Ƶ݃+A@O:XXQ]C/uʻZuyw۩Aq)>NW YRD0]ܸ @h'=MWLY6SE-2&2– &;< MWnYSF3I1]ئ+FN ]$:LVYTH;5i ԧc;>"h9K%VY$U*I6~pEҧIg 7JUYU?J68:!T>lі(r6HUY=VCK9"0 <0[6c4GhTYVAL;$ p6׎s?̦>Tn3FSgY-W*(=8NWDY SE1b)ͺ~ib ~&%ݦbB)c3FSmYWM)<%z |ؙ#͙@>2E9SUYvWM='T/  q0DR$YWN>W)-gpz]̷!/lCQX=XO4@+siǪ DJ-(BQXXPA,L[E!zi9ǁn+@-PbXX_QBE.12l&܎"9*?POXY&RD/ ?R~;ۮN(A>kNW:YR8Eo1Jk\ȨT[q &( z ճS{ t|/CQX"XO?*6wԴ֩ghɰA-|B+QXvX_P4A?,lXf\ߵkB,1A`PuXX-QyB-<kjԩӴ{1*?O!XXQCx/t }Nڳ~(>NW+YRD1}7q)/ۨಠ> D'5=MbW]YdSF2ZY۬tIi %;LVtYT=G.4o>ϊe֓) #k:KVYTaH58żSԽK%"8JUYOUuI.7o$XqNSmg 7IkUYUJ8!G_M𯩧) 6HTY_VK:v# ֜ϰíϻ<4G;T}YVL};,% b Zo3aFSbYIWM<&t aMåRv̨Mq11ER5YWkNA>(Q۱Ĝ5ME ~/C)RYXMO?4*( ƙp7!%<.B[QXaX0P@+hސǣ5jy#B^K,{APXXP+B-HE ɮɪiƚp+6@O=XXQlC/& Ʒcvp`ێ.Z)>NW%YRD0p +ڶT'=MWIYBSE>2A${y %'<MWtYSG3c(Caަ%<> H$:LVYTHS53{!̧Z&("Q9KVY,U4I6ZҷN~U 7IUYUNJC8V!f:\|c6HTYAVPK9 #H JJЯN4GaTYVQL';$& GפwIȦ4溸B^3FSfY3WGM<|& ek~)_1ESJYW;N=,(BgVիN}80NDPRYWOE?)aYr5vʆ.CQXPXO@w+;^hcH-APXXPA-_߯ogQ+te+@OMXXQ!C.12ʀ@pNO)0?OWYXRZDQ0\˞ૅOOĖ%(=*NWEYSE1v*;ɹbI i&uɦDl1q $;DLVYoTG4_8^-᧑9՛+ "9GK:VYUHu6'dŮ4P?!38>JUYU J7 mӱF箥Huy6&I%UY VK`9"?< & ب1͂-)2E6SJYWM='oC ָ̲Y0DRYWN>n)Drwu[x/[CQX9XOA@+ m.4m-BPXXPA,fmZ,j/qQ+@"P`XXlQB^.K,@oƶs%*?GO X Y0R D/"U]1ڔ9w(/>cNW=YRFE1d`èBJٷb &)3޳]u]h/CQX+XO?*EݎשmXɕ&-fB(QX|XiPAAV,ebXϵU.,!AVPsXXNW/YRD%1P98ݨ̲ì2 7'!=McWUYvS%F2p c鬴rܱ9U %;LVsY TMG=4TϚ Vw #Y:KtVYTqH5M54ԼZ" Ԟ6"8JUYUUIB7 %edL;\M s7IgUYUJ8!^tX,wq{5HTYgVK!:# ?֮ڰ»)q4|G1T}YVL;I% ¼bGZ2YFSbYNWM<& oeêͨQc̕:[1&ER6YW{NL>(^%ĥ9D/d/C RYX[O?M*:5Ƣl/.BUQXhX7P@+ީǩAex7B9,sAPXX Q9B-\`ö˪lƆX*'@O6XXQ{C-/?շhxjPzG)>NW%YRD0 ڞ:'v=MxWPYESEQ2W fa %(Vug ˫9d#0ADFRYW&OU?)-xgq/f o.CQXSXP@+1Ll dRȰߦ7,APXXPA,-zzkI^R+t@OHXXQ1C.J>ʔCrA7)$?OWYhRdDf0z˳䫆B@ā'="NWIYSE1?NعS3 R&i<2M'WhYSF3o DϦ;f"W $ ;3LVYpTG 5uQt9ާ,uՆ "99K4VYUH651 zǮ>Ӯ:&!&8.JUYUJ8 Eڮ2^d6IUY%VKv9"WN qէ Xz-5HTYV!L:r$ -^Q1ԦV!83FSlYWMG<)& 4uk2E)SNYWN='V2̸˥H0DvRYWN?~)^ ܉#nYhu.MCQXEXOV@,+-.kY- BPXXPA, xh;g-sX?+@PZXXoQBh._?H#n~ƞ_*w?9O X Y6RD08 gl)ځj(>[NW=YRSE1{̋k03٨A &.0ݯ,9!8hJUYUI7 GpcwR޽E7_I?UYVJ9T"xԺ<?x5LHTYVK: $U p^Ϫ L4)GTwYVL;%5 @e}ͬ7/w2FUSUYoWMZ=l'l訒EN0DR,YWN> )S3^}tEqV/CQX)XO@*2TݦgնDɂ -XBQXXsPQAl,jdOõ޲:,AHPrXX@QB.jjȩV hu*?rOXYRC/A*HN(p>NW5YR E51 hK=بØ "'=MXW\YwS;F21 s묿dٱ$> j%;LVvY%T[GQ4kϫ?f #G:KuVYTzH5gEFg!wԃ&!8JUYXUIL7( )!6^l83ҲC< _7IaUYUJ8!xk'nV[5HTYqVK<:# M)ܰ 㦵c4iG-TzYVL;W% %˱d2F2HFS`YSWM= ' rúͨDX̀"J1ER7YWNY>(u9ĮD|2˴T/CRYXnO?a*UCƯm.BLQXmX?PA,&޼ǵHgn"0 z,dA{PXXQHB-wn3Ŷ۪fpB*@O7XXQCF/Y2mzfFŲi4)>NW%YRD053ڄ)'g=MuWPYRSEl2c/vUتL %6HTYJVmK9;#p q߭#Ѕ%4GPTYVjLG;$P nRæ$ƺαY53FSaY?W]M<&( !l/1dERBYWMN >P( iڃt%īyz!P03D;RYX2Of?)Cop$]Zs}.B{QXWXP@+(C`x%iIyțߒ,APXXPAE-ȇk8ݵG>+c@OFXXQ=C.\WʝKu3!t)?NWYkRxDu00˾뫋 9.j'=NWKY"SE2Uc⹚A¶ 9&]XO`@B+D8dB-APXXPA,{Fg$}YJ!+@ PYXX}QB~.p]Y*lqŌF)d?2OXY>R/D0N$xxȫ)qmT( >NNW@YRdE1.͠j$ً0 & 馤cK4`G"TzYVL;f% 8#ױhp"-28FyS[Y[WM=' لIJԨ;Mj 51 ER2YWNp>(OķMy)˦C/C RYXtO?{*cT©o o.BBQXrXHPA,BŵMfj j,QArPXX QWB-FѶg봜_(*@O)XXQCR/nG{w_0ŢO)>NW"YRD0N J $qq'V=MoWTYWSEz2}07ά~f>ؘ2 %;LWsYT)G4K djܦֽY $:KVYTCH5 uХBƧ6yO"9J VYAU]I7DSvdnK  7I}UYUrJz8!32ׯ-.=/6HTYTVuK9M# yҭm4GGTYVtL\;%k QȦĺvΤF"3FSeY@WiM<&F 24Çfw1TER?YWXN >a(#{ڎą'jj;0!D4R Y XʶL.2CQXFXOp@W+[H k~u1-APXXPA,0ߐSjjP,+@PXXXQB.ul,qdt1)R?*OWYHRvNW4YR"Ea12bPʨ`u &( eȳMzʈ$/CRX#X{O?*|gɴ˩nwT-B4QXlX]PA4,MԵPj^X,>AlPzXX%QjB-+Poթ䴉I*?O)XXQCf/^zYŎ8 )>NW,YRD0d%Z%貶] ^'D=MkWTYbS F2FOͬuS.y# %;LVuY T3G4^%yx}֧@ #}:KVYTVH5#ѲM.g5"9JVYGUiI7^YrZ_6z 7IvUYUJ8!2L:鯤*%6HTYWVK9d# ՈȰƭW4GCT}YV~Lm;% VæjΉ/3sFSeYCWxM<&[ J?×\̿c1DER}(3ڧĊ3ZY'/ D0RYXFO?#*r Ɛq?2@T.BjQX_X#P@+OqބǏ5c)[kh,APXXPBq-50ȥk!Ƴ݄+G@O;XXQ`C/vʻYwupۤGk)>NW"Y|RD0]ٸ" Bl'=MWHY(v1ESHYW*N=(%OP᫝aP0VDaRYW O5?)KܹLnA2ʛ3.CQXKXO@h+s*Rkoc-APXXPA -Hߠ^d_:z+@OMXXQC. q+(=9NWEY S~E1_+͵gc ~&I$UYVKS9"&)Zϧ %x3O5 HTYV L:J$ ;@"ަbC(d 3GSrYWM'<%v zؚ$͙<D2EDSJYWM='Q+ u0DR#YWN>^))cmybķ-/fCQX>XO8@* kkƪJC{--BPXXPA,K]B#zh8LJg+@.PdXXdQBG.+4l%܍#:*?VO X Y"RD/xJK4ۮL(@>lNW8YR3Er1HqWǨS]p &s(4CGTrYVL;% iJxެV\2FeSYYfWM6=G' B٣۲ᨑ0+m81DR3YWN>(%s̳Xz sy/CQX#XO?*0zմЩpgɭ;-tB1QXvXaP1A@,nߵ[fZo<,7A[P{XX3QvB-?fjԩִv6*?O'XXQCz/nwVҳw#(>NW4YRD15r&5ղE I'4=MeWYYfSF2ZY۬uGk %;LVxYTEG%4x9χi֐+ #n:KVYT]H57!¼V$ԷM%"8JUYRUsI.7z]mQP"qe 7IoUYUJ8!M[O𯨧*6HTY]VK:v# ֚ϰíл?4G;T}YVLy;1% ` ]o2`FS]YNWM<&s `OãèVs̩Mp13ER8YWoN?>(P۵Ė;yHH /D%RYXQO?7*&#Ɠi/,C.B_QXaX/P@+iޑǣ5jz"C]I,APXXQ*B-MAɬȪkƞm+5@O9XXQkC/0ʾjpucۏ0X)>NW(YRD0o 1ڱV'=MWMY?SE@2>#yx %)<MWqYSF3b)Bdڦ(8C I$:LVYTHO58|!̧\')"Q9KVY&U:I6 TҽP~T 7IUYUFJI8R!g4W`6HTYDVNK9 #G NNЪ&F4GeTYVNL);$& Iע{CΦ/躺G~`3FSfY1WJM<~& fj,a1~E SBYW5N='(Ź\L f&|<;M-WhYSFn3Y@ɦAq5r $;ILVYcTG4e6`*槊@ՙ0 "9FK7VYUHv6&j;T8!;88JUYUJ7 dӬG䮨Ft{6,IUY!VK`9"H4dҧ f95HTYVL:\$ T@1զ]2O3FSrYWM8<& ب/̓',2E5SLYWM='j? "ܸ˸W0DRYWN>j)Hsvu[}/[CQXAXOH@+!iª00k-BPXXPA,`tS0i0oV+@#P`XXjQBY.B3@mƶs%*?JO XY1R D/"U]0ڕ8w(1>_NW8YRDE1c̅Y>KټY &I3!8zJUYxUI7| 3bXsX^7oICUYVJ97"dԭ/Mъ"5PHTYVK|:#F ᦊ{vϼ%]47GT|YVL;% (XxլHA2FaSTYlWMG=Z' Yٺ討)\$e0DR,YWN> )9!ݳ\x\i/CQX)XO?*J݆өpQɟ--iB'QX}XgPCAV,}chQԵO2, AVPsXX9QB-Wtqȩ˴e!~*?O XXRC/$Dϳc (>NW/YRD#1L79ܨ̲ì2 7' =M\W\YoS+F2ud㬼k2N {%;LVwYTSG:4Pϛ S} #W:KvVYTsH5V,1Ҽ^Ԣ5"8JUYSUI<7 *\oCC WQ r7IhUYUJ8!^p`!np5HTYhVK#:# 8ְӰ馺û*w4vG5T|YVL;B% ¿_?_2SFSbYKWM<& x_íʨOc̑9X1,ER9YWwNR>(f(Ĥ=}B0g/CRYX]O?P*80Ƨn $6.B[QXiX7P@+~ާǦH^~ <@9,oAPXX Q9B-bW!ɸԪfƇW*&@O5XXQ{C,/= ׷hyjPzB)>NW YRD0 ڛA'|=MyWSYCSEP2U"b` % 7IUYUVJZ8f! ɯ5MmO6HTYGV]K9"#] ] 9И94GUTYVbL4;$7 \ײFͦ&ܺ&tB3FSmY2WUM<& y tqJ1mESBYWEN==(Opg#Ы6g'0=DHRYW+OP?)2rbp,kr.BQXUXP@+0Nh#cQȭ߫0,APXXPA.-u{i E_P+w@OHXXQ5C.R;ʖ?yE9)$?OWYeRfDf0w˱㫉E?Ā '=$NWMYSE1?LٹO6 Q&i<3M&WiYSF3q FʦB`] $;9LVYoTG5yNs<ু0rՅ "95K6VY UI6=,}îDپӫ;&!&8.JUYUJ7 }ӼDܮ7`b6IUY)VKt9"UO n֧ [.5H{TYV&L:t$ -`M6ЦX63FSlYWMI<'& ض>rl2E+SOYWN='U-̸ˣH0DsR YWN?)Z܁-xxQev.NCQX>XOT@)+30lT- BPXXPA, zj9g+n[<+@P\XXqQBi.ZFPpŠ^*p?AOXY2R!D0>hl(ڃj(>ZNW;YRRE1z̒d/4٧B &WfYSF"3Dκ¦Ud %Z;sLV{YLTG4 kԭ N#9wKQVYTH-69(*ޯ+8!|8qJUY{UI7 EpgqX 㽘D7`I=UYVJ9P"xԿ6ǧGq5?HTYVK:$X naϦD4#GTsYWL;%7 =kϬ7/~y2EWSTYoWMV=q'r訑 M Q0DR*YWN> )P0\rLiO/CQX/XO @*&bݗکnܪضAɅ-VBQXXqPSAi, ldMȵޭ=,ANPlXX?QB .hr©Xb{*?vOXY RC/9#zIT(p>NW4YR E41 hK<ӨIJÛ '=MWW_YvS:F21q𬸦lӱ&= k%;LVuY'TZGR4lϬ @b #I:KuVYTzH5dJLܼj |ԋ"!8JUYVUIK7( )%1ch;1ҲD9 a7I^UYUJ8! ul%qZ^~5HTYiVK5:# K.ֺ񦫭a4kG*T}YVL;V% &ɱd򬅺0F2GFS_YRWM= ' zòҨGVx G1ER6YWNZ>(r7ĭC~5˵S/CRYXfO?b*PEưl}$.BTQXoX@PA,'޺ǴKau$. {,cA{PXXQIB-zj4Ƕ٪hnF* @O.XXQC=/S4qxfAŷe4)>NW)YRD086ڇ''h=MuWSYLSEb2l*Ĭ |NرH %P( jڄs&ƫx|Q02D $:)LVYtTG5dH s!_n "93K'VYUI6OG҈Ү?ҾӚ!8#JUYU#J8!#ϾDήFP6IUY2V'K9" gg{ܧ Hf5GwTYV-L:$ A sW9ѦJ%3FSpY W#M^<8& FcU2E&SGYWN='m+=¸ˑ3s0xDnRYWN?)mܛ0tIQ].;CQXEXOe@=+H8hE-APXXPA,|Gi%wbA'+@ PYXX|QB.r[['osŐB)a?6OWY>R/D0P$wzƫ(rg L(>JNW=YR_E11͠l!ُ- &<\M>WcYSF53Yʺ"ĦQr׳S $H;jLVYRTG4 ~)ޭ짳hs 9#9lKHVYTH:6U;.ί" }!n8]JUYUI7 *WӃlySս.6NI:UYVJ.9g"ͿDǧ;]v58HTYVK:$o !#ަx\Sύ43GSqYWL<%J Rw|0hf2EOSSYrWMb='$񨌦550DR%YWN>/)aNW2YREL1[CѨrÈ '=MSWaY|SKF2F1΂e˱# X%;LV~Y'TnG_4ϵ㰻1G #8:KmVYTH5yc^o( gu!8JUYcUI^7A ;4;gd1$Ҡ-" S7I^UYUJ8!!~iGId5|HTYrVKF:# d@ꦦmQ4[G'TuYVL;k% >$ױfu12:FvS^YYWM=' لIJԨ@Gd 81 ER2YWNp>(QĽF~' ˟</C RXXqO?u*j Sƽȩi q.BDQXqXKPA,<ĵLgj k,NAvP}XXQXB-HѶjީ]**@O-XXQCS/pC}w`/ţN)>NW0YRD0R Lrl']=MuWPYZSEz2.=Ŭxe?ؕ4 %;LWuYT'G4HanߦּX $:KVYTFH5yЦ@;{M"9JVY=U`I7LWtdpH 7I}UYUtJw8! 4-௜3/=*6HTYUVqK9G# ѭ p4GKT|YVtLX;%d SĦ|ΡH3FSaYCWjM<&@ 4.Ìi"r1RER>YWUN!>b(!ڕĀ+ne80D9R Y X;Ov?*\~pPHYh.BlQXVXP@+>YqDŽ-g;gȈx,APXXP BY-Ȕh*ݟ0++T@OAXXQOC.weʮPxy+ X)?NWYyRD0DŸ )U}'= NWNY)SE2lu񹣬=¨ &&J<MWmYSF3:%TҦ5Lc. q$:"LVYzTH)5V٧kIX"x9K)VYUI6a_1ҙۮC} 8JUYU0J$8%!=۾@Ů|ү.86HUY6V7K9" v+1ESIYW!N='}C@⫵}a0iDdRYWO$?):ܦArFCʮH..CQXGXOo@V+]I gwo7-APXXPA,3ߍTioJ2+@PSXXQC. p g/qfu1)T?'OXYMR7D-0j5˄ϫmkN7(>=NWCYRsE1Iͬxp y &( aųQyʊ&/CQYXO?*}eʹǩryR-B?QXvXTP!A/,T͵XcdT,EAeP~XX&QiB-*RiܩݴE*?O'XXQCg/^v]ݳŐ5 )>NW/YRD0g#\(岹_ ^'E=MkWTYbS F2IGѬwY&؃ %;LVsYT0G4\&wy֢F #|:KVYTYH5( ѴJ.`>"9JUYBUmI7]Zn]^7w 7ItUYUyJ8!6G?篣.!+6HTY[VK:`# Չư˭߻V4GGTyYV}Lp;% UŦ hΌ2 3qFS_YHWvM<&Y HAÖ[̿c1AER8YWcN,>{(6ڣČ3~X[)/ D/RYXFO?"*rƉj:*HW.BiQX^X%P@+Roބǐ4g.Us`,APXXPBh-/0ȡêgƯ݈+F@OAXXQ\C/zʷ^syxۯ=r)>NWYRD0W׸" Bk'=N~WSY0SE,2&}/‘ &:<MWsYSF3K3\֦.CS `$:LVYTH:5h ԧd:?"c9K"VY$U(I6|pBҩFd 7 JUYU-ʟ7.%CQXMXO@f+t'Tgi_-APXXPA-Lߝbh]=z+@OPXXQC.v3vZ_)J?OWYSRID?0G˓ի^bĥC+(=7NWCY SE1_,͵fd }&mNW6YR2Er1LxR¨R]n &(#vҳT{ xt/CQX"XO?*-ϴةheɲ>-xB/QXtXaP2A@,mߵXjWfD,1A`PuXX-QyB-=ilѩ״u8*?O XYQCv/t |R׳ł(>NW1YRD17o,+ۨݲH H'4=McWXYjSF2]WެuDd %;LVxYTAG+4s9Ϗ d֗% #m:KVYT`H5=ļV'ԴP""8JUYOUvI-7s`jTOng 7IpUYUJ8!K[Oﯪ)6HTY^VK:{# ֘԰ӻ?4G4TYVL~;-% VƦVt2dFSbYJWM<&s _PãèSv̫Np14ER6YWlN@>(K۷Ė9~LD~/C'RYXOO?2*,#Ɠh1-E.BaQXgX(P@+jޗǜ:g~JUR,~APXXP-B|-FF ɯȪkƗt+4@O;XXQkC/+ȷ_xpeۓ,[)>NW"YRD0p *ڸQ'=M}WPY>SED29$zy %%<M WuYSF3c*?gئ):? K$: LVYT!HM54y% ϧX&("R9KVY+U5I6YҵIQ 7IUYUKJF8T!d:Y{b6HTY>VRK9 #H N HаO4G_TYVLL);$" EףzF̦/꺵>V3FShY2WHM0LDNRYWOB?)_Wr3yʈ.CQXIXP@+:`jb߾K-APXXPA-_ߴmkT*rh+@OKXXQ!C.3.ʅ:tMH)4?OWY^RVDR0cˣܫSNĕ'(=)NWBYSE1s.6ι^L f&z<=M,WhYSFj3R9Ϧ=t4s $;BLVYkTG4b8`)㧏;՚/ "9DK;VYUHu6&nCRp)Bw{r\w /ZCQX=XOE@+jê/2j-BPXXPA,enW.h2mV+@PiXXmQBX.F-<m ƻm#*?LOXY.R D/(X[2ښ2~()>gNW>YRGE1c~b¨AKٺZ &"_Ԯ.L я(5ZHTYVK}:#A ~ᦋzvϼ%]40GTqYVL;% )TqάKH2 FdSRYmWME=^' \ٶߨ%S,]0DR/YWN> )=!߳X{_e/CQX1XO?*J݈թoUɗ!-dB'QXyXiPDAQ,`iRѵN2,!AUPsXX=QB-O}jͩǴi*?|O XXQC/&{Mȳb ({>NW,YRD%1S~:7٨Ҳô+ 4'"=M^W\YnS*F2w e䬹qݱ8U %;LV{YTSG94OϛTy #X:KvVYTsH5S02ԼZ"ԣ7 "8JUYTUI;7 +]lEB ZO u7IkUYUJ8!bn`)wjs5HTYeVK%:# 5֪ܰ*u4uG8TyYVL;E% ¾`IX2SFSaYMWM<& sdêͨNe̔:X1+ER>YWNG>(_(Ħ:?2i/CRYX]O?I*@2ƥo(..BTQXcX=P@+ ުǩ?it7B9,nAPXXQ9B-cXɽ̪p ƅ^*"@O9XXQxC//BѷkwjNwD)>NW'YRD0"' ژD'|=MxWQYFSEV2P jؽi %(Stf#ҫ4i'0?DFRYW-OO?)1sal1g o.CQXXXP@+ 2MkgSȭߪ2,APXXPA2-rxgBaO+w@ONXXQ-C.ICʏFq=4)%?OWYeRhDb0vˮ櫆AC}'=NWIYSE1AMֹT2 Q&j<1M'WjYSF3n EΦ%!$81JUYUJ8 Fٮ1^b6I UY)VKt9"XKjۧY{*5H|TYV$L:u$ /cK6ӦR':3FSlYWMC<,& ش@yh2E*SNYW N='U+ɸ˟B0DvRYWN?)W ܇&pYmp.ICQXFXOV@*+0.gW- BPXXPA,n6d.q[:+@PZXXrQBl.XITsŠ]*w?8O X Y8RD0: hi~0}|#c(>VNW9YROE1ẘm-9٠J &r 5HHTYVK: $V leϣC4$GTtYWL;%2 =f}ˬ9,v2FUSVYpWM[=k'l稓FK0DR)YWN>)P/]zyNgT/CQX-XO@*/WݢhߪնCɅ-YBQXXpPTAi, diMŵޯ;,APPkXXDQB.lpũUgv*?qOXYRC/>$~FR(v>NW1YRE;1dM:ҨòÚ '=M^WWY}S4F22v묻iֱ$; k%;LVyY TbGL4jϧ ?f #C:KmVYT|H5^QM޼g#yԈ#!8JUY[UIH7/ !%0fd=3Ҹ>? [7I[UYUJ8! ul )kZ`y5HTYhVK-:# P+ֽ馲\4nG*T{YVL;T% #ʱf1H2GFS[YXWM=' rùͨGSwJ1ER2YWNb>(z?İDz5˸Q/CRYXjO?e*NCƱm.BKQXhXEPA,$޼DzKbt&+#~,`A~PXXQLB-sq0ʶ֪ju=*@O0XXQCB/[-pzdDŴh2)>NW$YRD086ڈ&'f=MrWVYISEc2l/ yRحJ %S(lچq)ȫw{T0+DARYX2Oa?*Mqn*X\pz.B{QXZX P@+%Dbt)eE~Șߑ ,APXXPAF-Ȋj:ݲH=+g@OHXXQ;C.]UʜNq2 q)?NW"YgR{Dt0/˽쫊 9.j'=NWKY#SE 2Rf߹C¸ @&U<)M!WhYSF3#NΦ:ZmB $:/LVYwTG5fH ڧzdj "9,K,VYUI6RE ҉ήGʾӒ( !8$JUYU"J8!&ѾCѮ"FO6IUY.V-K9" lcwާGd5GvTYV0L:$ G qZ8ϦO 3FSlY!W%MZ<<& F߹fS2E#SJYWN='j.:髿ˌ.w0uDqRYWN?)lܘ5xFP_.MNW>YRaE1/͜q} ٍ0 &<]M1)`NW1YREJ1 ~[ĄpÉ '=MXWXYSAF2H/΄hƱ( W%;LV~Y'ToG^4ϴ氹/K #3:KkVYTH5xc^t!my!8JUYfUId79 B0=gb4!ҡ'* I7ISUYUJ8!|'aCGf5zHTYvVKI:# f= ꦢeL4_G$TvYVL;p% B%ֱhu328FwS_YVWM= ' مòԨ>Gd 71 ER3YWNq>(TļIz$ ˞:/C RYXqO?u*gWƼũm l.BBQXnXLPA,>ŵLgi l,OAuP}XXQ\B-EҶiީ^+*@O+XXQCO/lGw|]1šP)>NW'YRD0MIlj'\=MsWRYXSEx2*;ˬ|eAؒ9 %;LWuYT(G4H `p}־U $:KVYTDH5 wЩ>§:{N"9JVY;UbI7G UudpI  7IUYUpJz8!;&䯛40A+6HTYNVyK9N# ѭj4GCTYVpLa;$n Y~ΞA%3}FSaYCWhM<&D 6.Ëf!t1PER;YWUN>d("}ږ|0kg 90D7R YX>Or?*`~pRKVf.BnQXYXP@+:]nLj)h7mȀ,APXXP BY-ȗm,ݛ3++Q@O>XXQMC.vfʬSt{-ܺ])?NW$YqRD0Eɸ* R~'= NWIY.SE2nr:£ (&F<MWrYSF3:&Rզ2O`- r$:(LVYwTH(5y Zاo PU"u9K,VYUI6kW0ҚخH¾ӂ  7JUYU.J%8'!:ྨ>Ȯy Ҭ-<6I UY7V3K9" }|&٧ʦH n3FSfY*W.MnYSmE1Jͩxu v &%;LV{Y1T~Gm4,û۰5 #$:KdVYTH5rn|%`na!8JUYeUIq7P Z@Fl^(Ҍ 87IOUYUJ8"4ԋ\Լ2ѹ4J5jHTYwVKS:# |S妞R;4PGTuYVL;% U;ܱqi s2+FoS[Y^WM%=2' -ٖβۨ6:Q1ER4YWN>( gʳNxʇ$/CRXX~O?*|gʴȩq{Q-B=QXsXVP!A.,VԵTde}X,AAgPXX*QeB-#SުrթⴋF*?O(XXQCi/\v]ݳŏ7 )>NW)YRD0`(Y%벲X Z'G=MkWTYaS F2BJЬsV)؀ %;LVyYT7G4]'yz֣C #|:KVYTWH5$ ѹE1e8" 9JUYCUnI7`Yn_[:| 7IwUYU{J8!1M82!)6HTY[VK9f# Վð˭߻Q4G@TYVLm;% SƦ hΉ+3oFSfY?W|M<&a M@ÖX̼`1DER?YWdN.>x(7ڢď.^T!/D-R Y XFO?!*nƒq=-EX.BlQXcX!P@+Vnނǒ4e+Wra,APXXPBk-2-ȞǪcwiRedPanda-4.1.12/app/resources/output/audio/D6.wav000066400000000000000000002570341444020206400220470ustar00rootroot00000000000000RIFF^WAVEfmt DXdata]o +7BKR4WiY"YUV0QI5@4(, UѾ7+kN^OD #1N3a&Y EUe:@vÇ%23>HOUXYWSMYD9- 9Vכ_zϦu/+8BKR\WrYY,VPTI?V4' ];ѺElaת}ΡLm$1L=WG\O1UXY X TM)E:.6!bxؙ@Ω񦌦7ZfZ*!7#BHKQRW^Y/YVeQ J@W5( (Fk.Ɯf-u4us~ڐPBD#0`2%4ܻßXRinڹ'^ݝml -&3>tH?PUXYW\SLCC9,q#,辔JSYoXS1@,8gCGLSzWYXUPHA?3&8 Gg$пg󱻫ӧiz 5 8g2* %2=GOeUXYWS^MD7: . @^lÿHѮަΨ{lrԢ-+7BKR/WqYYYV QI#@4(v Iѵ+#oJ^^K7#1 &3$?HPUXYW"S]LC8l,dz*֖t8(H6z;ɚoH,9CLQSWYXUOPH>G3Q&L 8G}e=HØ%2=>!HOUXYWSMSD9-%JבP굈y̦ɴ~@+)8CKR]WtYY'VPFI?G4s'z M2ź@hiժŠΫU$1Y=_GfO2UXY XTME:.%!Ui؎2Ω=dzg*/7*BSKTRW[Y1Y|V`QJ@P5( 6\#ƒ߲^.o;v!͌ڟ]W#X#0nXsTBNE;/P":9ٗV&}hŬxJPN?( )26TAJQVLYGYVQJhAI6)K WonaլjB{lk"6"/;E8NdT?XYwXTNF<0q#Cs{ڗ -DLSWYXUP/HS>2%(ܯÕSJfv/"jݭ~x -7&-3>H@PUXYWVSLC;9,h ྇JGĦ!&b{k]EQ,8qCQLSW|YXUPH7?3&* 5[޺иY𱱫ӧiz*@EvB7%)2=GOkUXYWSUMD+:. /RZ ˺@Ȯަר{z԰/! :+7BKR:WnYYQVQI@4' h s=ѧ$ jSkcY #?#1<GOUXY!X;TME;/!g ̞UҳӅ ^#*6AJ%RV\Y9YVQVJ@5)< cҗ,Kw%Lدr " 0<7FNTXXY\XTNEF 53G&: y.8󹝱zdDMã%2K>%HOUXYWSMHD9n-=~PֵnϦҴɍL%+58CLReWrYYVP?I?<4e'l ?%Ž6kiݪɸšιh$1b=kGhO>UXYXSME:.!G\؁'̩ꦍ?)(zy*878BXK_RWaY.YxV\QI@@5( )Mƃ߲P1l<" ͚ڭmf0k#0}XiT@NE;/C"*+}vىK!}kͬ}W`]N8 )?6^AJQVGYLYVQJ[AB6): Gb_R~άg!G}y/*B"/;E2%ܤϼÊMDez>+|ݺ 9G&83>HFPUXYWUSLC)9,Rzؾ~AI )r$}iXa,8{CZLSWzYXUPH+?3& %MޯЩS屮Чe *P"T܆NL&%12=GOeUXYWSNMD:-| !CJʳ3Įݦר~ ս>2A+7BKR?WmYYPVQI @4'Y a,߻ѡ kRple1P $)1< G)OUXYX8TM|E ;/!Z̑Lڳ¼ӎ p0*6AK&RVVYuHH hЧ_Ŀ`11 &39?HPUX|YWSULmC8O,F\i|c"IIʸֆ#`,49CLWSWYXU@PH>,36&,v ~j!/乛qcIVì&%2S>1HPUXYWSL}ѲR&s8(ͩڼ{vAs#0~δͦyTG,-9YDMSWYXUOHA>2% ܕϰÂDAjE>Є OM&K3>HQPUXYWMSLC9,Ek̾v2=GOqUXYWS@MD:-m 1=ʤ-צبS;*S+7BKRDWlYYIVQI@4'H Vr#߬є oPtwp&>`!$41=G1O UXYX-TMhE;.!Fuuˈ߶H޳̼ԝ z?*6A K*RVVY"3&& d s`"ํqeN]ù7 %2]>Ȕ8*S7MBeKpRWiY&YsVNQIn@%5e( 3o̲K#s=0«ͳS#0ug8!.:$EMT XYX0U_OSGM=1k$L~κ¸ڪ^nK˺CVѾ 'X4?TIP)VYtYXWRKB8+ 2nƴЦ{_[4 -9_DMSWYXUOH4>2%}܉Ϧv?:f LPЎ Vf&M3>HYPUXYWCSLC 9,6\žl4B- C:rv,8ChL(SWYXU|PH?3& 1ݔД=رʧf?d?lܨin!D%J2=GOwUXYWS7MD:-` "/ʛ$Ӧۨ&^N7a+7BKRGWkYY=V QI?4': EeߤуtpR~z6Gs,1!$A1 = G1OUXYX)TMdE:.!5ehˀԶCټԮ#M*6AK)RVYY5YVQ?J@5(z 9xԻ@x'^쯽"44"80 <]FNT]XYTXTzN(F;/"r\ɯF}N=Ҁ \0)5 AjJQV3 -M9DLjSWYXU7PjH>3& Y _QӹjbRd E %2l>@HPUXYW|SL,D9L-`|\+õreʦѭ$ɹvW+X8,CLRjWvY YVP$I?4:'@ sŜ#ثmkͰ¹ $1=}GOEUXYWSMD~:U. 3[ x榓W2%nϘo74e bRЦ gq&[3>H[PUXYW;SLC 9,+R{ɸb29/HL,8CrL+SWYXUuPH ?3& '݋Ј2ұŧj"FtG~ܴ{z5K%]2=GOzUXYWS5MD9-S  }ʐ٦ߨ/l_En+7BKRIWpYY?VQ|I?4'- 3XߙxqjYDW~B6#$Y1=,G9OUXYX&TMZE:.!(TYnҶ7ἵԸ8X*6AK;RV_Y4YVQ,J@5(k q,kʻ{Ar.^ɷ:7J #B0,3&K N< ͹fhZiV" %2u>KHPUXYW{SL!D{9=-Ug|QldĦ ح&2Նb,d84C$LRmW{YYVP%Iq?4&'5 hđͫduӰ%$1=GOMUXYWSMDl:P.  !Uvꮼ㦔^BW1ȰW<*r7[B|KvR$WjY"YmV>QIU@5I(c cDpC?/o#0z2y%[mϏf.2jkaг x{&n3>H`PUXYW;SLC8,7vɪb"<3NX&,8C{L-SW~YXUrPH?3& ~x-DZħe#(MSϏܿC\%f2>GOUXYWS,MD9-I nʈ٦樝½A~kW}+7BKROWoYY;VPuI?4'! Lދkdk[ªNeۏLM:$[1%=/GEOUXYXTMNE:.s!HFfǶ1*H'"f*6A&K=RW]Y4YVQ.J@5(V e_x=s0aԷEFY#U04 `] <_N9)-`9DLqSWYXU*PWH>2%6 @s-zaf[t#e3, %2>UH PUXYWrSLDq9--A_gHbaĦ ߭2>Ւ$p,o8?C*LRoW}YYVPIm?4'%t [ċӫ٧mqٰ +$1=GONUXYWSzMDb:C. ~Gj殷গcN[CȺhH*}7dBKzR+WfY%YcV>QIN@4=(T T<oFK4#}#0 -9~D#MSWYXUOG>q2d%T`ψV-(g$qsо &|3>HhPUX~YW2SLC8,.cɞX78Yd5,8C~L:SWYXUoPH>s3& it±ħd),Z_ϝTh%t2>GOUXYWS)MuD9-< ez{ Ц騢ɽJ {g+7BKRQWpYY9VPoI?|4' :yeei[ʪVxۛ]Y E$l1-=:GIO$UXYXTMEE:.]!/?ؿ\)ߩ򦋦&8Q>*r*6B/KBRW^Y2YVwQ&J@5(D Vr RƵq:s1fڷOXc#&#]0C2%0 ,c"ýielcyĹ1u?A &2>ZH+PUXYWjSLDb9#-4M[8 cWƦBEբ2 {",x8LC1LRtW{YX VPI]?3'b pJ ȫڧju8 $1=GOSUXYWSuMDU:5. j:`⮰⦓ɨc[cPtW+7vBKR&WoYYbV5QIC@4-(G xH6rBK?0#0a2Z%BUyQ"#dȧͱ){ &3?HqPUXYW2SxLC8,"TֶɔQ38)_rB,8CL:SW~YXUePH>l3w&v bdg7+jmϬav%2>HOUXYWSMpD9-( Orױv{֦먪ԽZs+ 8BKRSWsYY4VPeI?n4' (g\ۺZm_̪f΅۩mh/T$x17=FGMO+UXYXTM]O9* 7B9KCRWYY5YVxQJ@k5(= Bd߀Iƪl3y,p [cx+/1#m0M2% SíjWddɹA݅MO  &3>jH+PUXYWdSLC^9-DF-\U¦ EWձB0',8PC,l~R*,9CLESWYXU^PH>Z3o&b R] h:3tÁϴu%2)> HOUXYWSMdD9- Dbצh|Ԧ޽i+8BKRWWsYY/VPYI?a4' ]NӺRiaӪrΓۺ|w=b$1B=OGVO-UXY XTM3E:.A!u}ح@ө3 VsYM*7BBKIRWZY5YVqQ J@`5(1 -[x:ƣi1u3pjpڅ?:?#y0ZHj>2% Eç`Uio׹W݊d\ &3>pH5PUXYWcSLCK9-|.>!򾛵QTQdLC&3,8YCHLSWwYYUPHM?3&L Nz-lէkw .1S+$2=GO_UXYWScMD?:. Qkx$οOծ⦑ӨnlvjԘv+7BKR8WgY#YVV)QI/@4(% Uѻ:/ uDWVB)# 1YVQiJA5,)Y ~ҲASx Dͯ]v"/;-FwNTOXY[XTNZF<50"5,$͗[%|>ӻ|Ʒ; (5@9JQV>YUYV,RKA6G* )ԣּIѶؼmg9!.;_EM&TXYXU4OG =>1$,,jM+xYixŤiEA '4?I QCVYlYFWRKB7[+4K[!գȦިצ)ʦא1# c -:D>MSWYXsUOG=L2<%$gjn9d>hʧ۱=ĕ1 &3?H{PUXYW!SmLC8v,p9֝ɀ? -B3rɍa;,9CLGSWYXUSPH>V3Z&X IMoC9~Ì%25>HOUXYWSMWD9- 5Uי_{Φƴx-+8BKRVWvYY,VPSI?Y4z' SBȺKieӪƒΛLp$1M=XG]O2UXYX TM'E:.5!dtؘ?˩򦋦7biY*&7$BEKYR WeY+YVeQ J@Y5( $Ij,ƛc0q8tv̀ڑOKN#0g2%2ܷÛ\Kcp Zݡqi ")&%3>yH=PUXYW\SLCF9,u#+쾎NMæ\m [U2<,8_CRL SWzYYUPHE?3&= H3L&K 5F}dAFÙ%2F>HOUXYWSMQD9-N׉T嵋vͦɴȉ9+'8CKRZWyY Y+VPMI?N4j' I1ú?jeܪø‘ά[$1^=\GhO5UXYXTME:.&!Tg،4ǩ𦏦B mxi*17.BOK[RWbY.Y{VcQI@H5( 7Y&Ǝ߲]-p=s%͌ڤ[]a#0tXYtXTNF<0s#<vuڛ+>p(SӲ|AҾ r(75w@ITQxV)YdYWcR`K!r.: EMSXYX?UqOnGo=1$sۣ͸il/4ё X^'04?=IP V YwYdWR LCA8+6U ٴĭͦnڵ={0 g-9BDLSWYXUP/HQ>2%'ܯÒUFcu3 qݩv 26&03>HDPUXYWVSLC69,b侂JGĦ%(fzo^KV,8sCSLS~WYXUPH:?3&) 3X޸зWЧi#FHxB;%+2=GOkUXYWSQMD):- .QT˳@ȮۦҨxԮ4;+7BKR7WpYYUVQI@4'j k7ѥ"mMdmQH#"1<G OUXYX=TME;/!b ̜Tϳӂ e*6AKRVRY>YVQVJ@5)= bҘ0Lw#Oدu"0;AFNT\XY]XTNBF <0" {ݯS!{H.⻘Z 5)5@MJQV=YTYV!RKA6+*n ӋüԳN]!/;wEM3T!XYX U%O G<+1#O-fgrPp +ߋb] '4 @IQLVYoY9WRKB7G+'CՁȚzԨڦƮ4שQD# -$:DPMSWYXiUOG=22"%JLVN,fҧQı L/ &3-?HPUXzYWSSLC8[,Lpsքl-%L=Ӿʧ~U,-9CLQSWYXUGPH>;3@&9 w+;칢tcENã%2P>#HPUXYWSLGD9k-;~Lٵr̦­ҴɎO*+68 CLR_WxY Y&VP@I?84e'i >%Ź:flݪƸ—οi$1k=bGrO7UXYXSME:}.!FV؆ ȩC&-Ȁ|*;79BWKbRWcY,YxVZQI@B5y( .PƅٲV(t9&͜گpd9d#0zXYpXTNFv<0g#-feڌ!3x%\ٲR-  (D5@IZQ}V)YdYW_RVK4B:7*tv#(?ȩ &XO!.:EMTXYX9UjOgG_=1$e۔۪ih:+?Ѣ pd'A4?AIP"V YwY]WRK C08+%FѴͦq۵NAt-9KDMSWYXUO'HD>2%ܞϿÆMDh|=-ݺ ;J&83>HMPUXYWLSLC+9,Qsؾ~>J%1m}l[`,8vCaLSW|YXUPH-?3& "MޮЧP豪ҧe.P&T܈PM %%72=GOoUXYWSKMD":- BIʳ2®٦֨~ B- J+7BKR?WmYYLVQI@4'\ ]*߽ћ jTukg1T #01<G&O UXY"X2TMwE ;/!QˑP ճǼӏ p0*6A KRVRY>YVQMJ@5)/ TҐ(D{$R⯮ #"!0 F;0" rݯF(uL*e =)5@UJQV=YSYVRJA6*] {ӀǺʳO j!/;EM9T$XYXUOF<1#>! Y^mSi"&<ߙqm '4@I#QMV YlY9WRKB73+-~ȇ{xըܦʮ>׶aS3 .-:DWMSWYXfUOG=&2%6=uBA dԧda7. &3;?HPUXY~WSOLqC8P,FWmw`% LHʶ֋$f,99CL\SWYXUDP{H>-3/&0q }j/幕wjKVï)%2V>1HPUXYWSL>D9_-z.s>ӵ~oʦ˭մɣZ?+D8C LRfWvY YVP2I?,4V'[ 0Ÿ(lj媾Ը«x$1r=pGwO2%ܒϰÁACjF=Ћ LT&H3>HQPUXYWLSLC9,Bh̾v8E+9z4}fo,8CeLSWzYXUPH?3& ;ݞПEݱȧj8Y3cܖbY/%G2=GOqUXYWSIMD:-n 46ʨ(ئݨQ?-V+7BKREWkYYFVQI@4'I Nx߳ы} iW{ur(?c"$:1=G,OUXYX-TMkE;.!Dsr@ݳѼԠ ?*6AK0RV[Y9YVQAJ@5( Iҁ޻Dv*T꯶/",03*&h jZ"ݹnbM]ÿ; %2c>8HPUXYWSL3D9V-p"g3̵umǦϭɫkO+P8"CLRjWuY YVP.I?#4F'M Ŧ)ګhlŰܸ°$1=wGO=UXYWSME:f. +9l ꦏQ7=!Ȓ@*R7PBgKlR!W`Y/YkVSQIr@ 5f(} 6tƲN"q?6¬ͳT#0nd0c̔ٝNG^"/;ERNsTFXYjXTNFa<0J#CK|rt5s/e벙5iJ)! (Y5@ JeQV,YbYWPRGKB"7*QjwX4Щ@tm 6!.:*EMTXYX.U]OSGK=1l$Fyμ³ժchPʺFU '\4?TIP+VYsYZWRKB8+ +p񨡦Ѧ{]W; -9cDMSWYXUOH0>2%{܅ϧs@7fSHК Yd&T3>HXPUXYWCSLC9,7^ɻq2>*?= sv,8CsLSW~YXUPH?3& -ݔБ=ױͧdBeAmܪml(?%R2=GOuUXYWS9MD:-_  -ʚ"ۦਐ$]R9f+7BKRGWoYYDVQI?4'5 Faߟцx jX}4Pn4- $F1 = G3OUXYX'TM^E:.!7`hv޶6󦍦ڼԩ+ L*6AK/RVWY;YVQ5J@5(q :uԻ@w+W󯽷(/;"80$<\FNT^XYRXTtN,F;/"qZǯEyS@҆ _1)5 AfJQVDYNYV RJA6*B dnǠ`%!-/4;ENBT-XYXT OF<1##BM\Oh*8_߰ 0(40@I'Q\V YjY3WRKB7+lcver̨⦦ڮPҿ&ywL .B:DcMSWYX`UOG= 2$X%, }eۧq3{XI &3K?IPVXYvW S?L[C85,&:L^N¦UR'֫<<-U9CLdSWYXU3PlH>3& Y XJѹgcQh J %2q>?HPUXYW~SL,D9I-\~](uaΦ ͭ)ɸyY+Z8.CLRlWuY YVP(I?4:'< y Ř$իgrҰ¿$1=GOJUXYWSMDz:Y. -^v릍V?G.ȟO0*i7RBsKsRWlY!YtV?QI[@5P(u $hJs?8) ½;]#02%n|Ϙl57l]XФ dw&Z3>HaPUXYW;SLC9,#Myɱh*>1HO,8CtL*SW}YXU|PH?3& ݉Ѓ6ͱƧf GsJςܳx8P%Z2>GOzUXYWS4MD9-P |ʅ#Ҧᨗ3q]Kq+7BKRDWsYY?VQ}I?4'' 5TߕwlqUA\A>+$U1=(G?OUXYX%TMXE:.z!'TSkӶ3༹4Z*6AK8RV\Y4YVQ3J@5(b s*jɻ|>v+cϷ9?E #G01yXP Ӓ o=)5ApJQVCYOYVRJA6)0 Q^ǚ}h5!:/A;E NIT,XYXTOF<0#3HRJl->j @!(47@I.Q`V!YiY0WRKzB7+`WnZpĨ⦬߮X޿2|g 1.K:DjMSWYXVUOG=1$  I!~cާë|:ޒ^c  '3_?IP VXYsWS8LPC8$,*@QC ĦV]-ִRA*-^9DLeSWYXU0P`H>3 &E Pz>͹~daXkV%# %2z>MHPUXYWqSLD}99-MluPnaŦݭ)3Շg,i84C#LRlWyYYVPIx? 4('2 ]Ĕҫߧmmհ$1=GOQUXYWS~MDm:M. Vo򮴩榓^GR7ȰY7*l7cByKxR%WhY&YgVCQIY@ 5G(d X|2q%_mϏ`2,gn`з z}&o3>HbPUXYW6SLC8,GOUXYWS&MD9-B  pʄӦ䨞ýBlZ+7BKRLWrYY=VPsI?4' !Jދhb mXȪOkۍRK8$c1 =5GBOUXYX TMRE:.h!=Mj6ܩ'-H-!g*6A'K2%< ;o/waicn'd7/ %2>UH PUXYWrSLDl9/-?\gD^d¦ݭ3>՗!u,p8CC)LRqW{YYVPIf?4'%r }UćΫۧksݰ1$1=GOSUXYWSyMDb:@. {Fi箳㦔Ĩ_TXGȻiE*u7nBK~R)WhY$YeV:QIK@58(T | R:nHN3&|#0YVQJ A6S) &)MV:zBtL"/;FgNTLXYeXTNlFIR/KA7j*%:J-$ߩ+`ˠؔC5b!.:GEMTXYXUIO6G+=e1D$U[wQΜ•Ǫ[kgfŁ> '|4?nIP7VYnYPWRKB7+ctFŽ㨣Ϧ ʂf< -9yD,MSWYXUOG>o2d%O`ςZ&-hű#up &v3?HrPUXwYW/SLC8,.cֽɠU78]f8,8C{L@SWYXUfPH>v3& om!h,-\gϙSj%w2>GOUXYWS%MxD9-6 bzxզ訥νR|h+7BKRPWtYY9VPhI?x4' :ހZWoZʪYzۜ`[!G$o1-=:GOOUXYXTMFE:.Y!19U(ݩ(5MC-v*7B4K@RW\Y6YVQJ@u5(G Sn TƱp8w-j޷TVh$##a0G2%) -aôtXca{ƹ3x?C &2>]H)PUXYWmSLD`9 -,PU=X_=Iա6!}%,y8KC6LR{WvYYVP I_?3'c lF{īݧit?$1=GOTUXYWSoMDW:/. c9a߮ݦ¨lTjNwU+7uBKR0WfY&Y\V8QID@4-(D tF3qEQ<4 #0b2W%?OyO"#cɧα*{ &3>HjPUXYW1StLC8,$OַɒN16,^|; ,8CL=SWYXUaPH>m3t&u ^eh8-jvϦcy%2">HOUXYWSMjD9-) On׳nΦ먫ֽ[w+ 8BKRWWnYY.VPaI?m4' ,pSTm`ʪdΊۨsg2U${18=FGPO)UXY XTM9E:.M! ,رQ%ש󦉦* C^R:*7B:KFR W\Y4YVuQJ@o5(6 FZvLƨn2v1l `cx4).#r0L2% QñgVefȹG݄QQ & 3>hH.PUXYWmSLDU9- =I+XW JXյ@5+,8RC?LS|WxYYVPIW?3&U ^8t٧kt'"L$2=GO^UXYWShMDM:!. V~+ݿP஦䦔˨m`r[Ԅ i+7{BKR3WhY"Y]V+QI1@4(7 g9-nHUK:#0[3j&d TV`/?mÀϷo%2+>HOUXYWSMeD9- Abסk񵚮|Ц񨮭޽f'+8BKRXWqYY-VPWI?]4' bFغIr[ժrΕۺwBb$1E=NGYO+UXY XTM0E:.@!nأGө戀8 Us_H*7BEKKRW]Y1YVkQJ@c5() 2Sq<Ɲa6p5rmqڇA=D#w0`2% ?è]Semع SݑeY &3>sH4PUXYWaSLCK9- 35 VMǦPfOH$3,8]CEL S|W{YYUPHK?3&C Qu+mۧd52Y&"$2=GO[UXYWS]MD<:. InuѿJ֮ߦͨrmvmԕt$+7BKR5WiY!YWV'QI+@4($ Sѻ5&iQbNL%#1!.:hEM(TXYXU/OG =@1$&,jH-y||So{ŦnFC '4?I QCVYlYHWRKB7^+4HZՠȧܨ٦'ʯ׍4(g - :D@MSWYXmUOG=H2<% ehk;^?lƧٱAė2 &3?HPUX}YW%ScLC8w,i 3֟{? +@8nɾɗZ<,9CLGSWYXUXPH>K3^&T GKi?@zË%26>HOUXYWSMXD9- 4Tח]}̦Ǵt3+!8BKR\WtYY(VPLI?Q4|' MCźKggԪΥRn$1M=[G\O2UXY XTM#E:.6! atؔ@ͩ=bnX*)7"BKKSRW_Y/YVfQJ@P5( );`2Ɣ\3p9sǘڒSJQ#0i2%5ܺÝXMdp&`ݡsn 0&!3>yH;PUXYW]SLC>9,m+澑IQ %Vu`Q;J,8jCLL SWyYXUPH@?3&; :kпaԧg} 9;i8+%"2=GOgUXYWSVMD.: . 8`c˿HʮڦϨztxԤ%-+7BKR=WfY#YRV QI@4(r JѴ'!jQhXT8#1YRYV"RKA67*x Ӛʼ۳ Jⶋ~tO!.;qEM0T XYX U*OG<01 $^5(ezpRn}Ŵ#zZK '4@IQGVYmY?WRKB7Q+&8KՓȞ֨ڦ®+ʽםB9w -:DEMSWYXqUOG=A2*%Q_c)U7}lʧJĦE &3(?HPUX}YWScLC8h,ct)֏w/ I:}̾ɟnK,"9CLOSWYXUMPH>@3O&G =>|b=JÛ%2D> HOUXYWS MKD9z-!G׍QᵍrѦȴȆ@+.8CLRaWsYY%VPEI?D4p'v E4žAldݪŒγ[$1Z=dGcO:UXYXTME:.&![]ؑ,̩즏?!n|k*47-BRK\RWdY,Y|VaQI@J5( 7\Ə߲[,s6~͑ڣ`Z)Z#0optڞ'>n+Pز|B y(55|@IZQsV0Y^YWaR_K2%$ܬÓOLlz1&mݱz 47&43>HBPUXYWUSLC39,\ "|ྈAN *ckfEP,8qCTLSWYXUPH/?3&* -Z޸гY챲ѧf !IJyF<%.2=GOhUXYWSOMD!:. /KX˼9ȮڦԨ~{Դ2' 8+7BKR8WpYYSVQI@4'g m9Ѣ%# lRlf["I# 1<G!OUXY#X6TM{E; /!a̙QҳӇ j*6AKRVYY7YVQXJ@5)6 eқ1Os(Kޯz"0<=FNT]XY[XTNHF<0" |ݯP'vI)컑Y 1)5@IJQV=YVYV!RKA6)*i ӌҳR궖a! /;|EM7TXYX U$OG<%1#K,cgqRl 1ߊh\ '4@IQSVYrY9WRKB7D+*9ՉȐ٨ܦî:ױOF' -!:DPMSWYXfUOG=02%FJN!I,fЧRijU&$ &34?HPUX~YWSYLsC8U,Ljvփj,#L<վʯxY,49CLSSWYXUAPH>83?&8 w)9ygJHë%2L>(HPUXYWSLED9l-9׀GٵnϦĭѴɏR++58CLRcWtY Y VP2%ܝϻÇM?b}<0Ёݻ <N&83>HMPUXYWQSLC"9,O vվ}@F%0q(qW_,8}C\LSW~YXUPH*?3& KݭЩJ鱪Чg +S'V܊SL"%;2=GOqUXYWSHMD:-y ;Mʱ1îަݨA7J+7BKRDWjYYMVQI @4'R a(߾ѕ jTspf6Q $*1< G)O UXY$X/TMqE;.!T|ˏJ سƼӑ r0*6A K RVRY>YVQIJ@5(/ PҌ#Ey$Vݯ"0+30&*s xc!)蹑wiMUó-%2Z>2HPUXYWSL=D9_-y)v9յ{oʦɭڴ ɜdA+D8C LRhWqYYVP5I?,4T'Y -ū3ݫepߪưθ¤x$1w=oGyO2%܏ϯÀ@ClL<Џ QT&J3>HUPUXYWNSLC9,DoȾu:C% 7|2dm,8CcL"SWYXUPH?3& 8ݝП@ᱦ˧i5_2fܖfZ4%C2=GOtUXYWSBMD:-k -<ʧ&צըSA-Y+7BKRCWpYYMVQI?4'H Ju߫ё ~mSzvv&F], $A1<G.OUXYX,TMhE;.!FkxˈݶD߳ҼԞ }B*6A K.RVZY9YVQAJ@5( DҀܻFu*V诺!"."/0 .5:DVMSWYX^UOG=2$!/c23}f֧f)nJ= &3J?HPUXYyWSCLgC8>,/LVe[TJ֝1*x,F9CL`SWYXU9PtH>3"&a m^ #ڹpiWW9  %2b>;H PUXYWSL3D9P-eh1ȵyiɦέɯlL+Q8"CLRhWyYYVP*I?4F'I |" ŧ(٫gnʰٸ²$1|=}G|ODUXYWSME:i. )7j 榑N>8(ȐD *Y7JBoKhR#WcY*YoVLQIh@%5`(| +hβH#s:.$ͶU#0ld~/c̙ٚTJd"/;ENNwTFXYpXTNFa<}0K# AM|pr7r1d첛7jK-" (\5@ JiQV1Y^YWOREKB7*QewW9ҩ;tm 2%y܆Ϡx9=i QMЛ aa&X3>H[PUXYW@SLC9,4]ɻo/B+@A sz,8CmL#SW}YXUPH?3& .ݖЍ<ձ˧fAi?sܪmr%G%M2=GOsUXYWS5MD:-^ #%ʙڦߨ(gL@f+7BKREWoYYDVQI?4'< :hߣsiZz;Lt5- $F1=G6OUXYX'TM_E:.!2acwض<ڼԬ- P*6AK0RV\Y5YVQ:J@5(p 3sλzHp.Zķ//<"C0$uVC҈ b3)5AhJQV?YRYV RJA6*? `lǜg. !-/7;ENDT+XYXTOF<1#CI]Km+8\߷ /(44@I+Q[V!YiY3WRKB7+k_wcq˨নڮO׿&{yN .K:DfMSWYXYUOG=2$R(* umӧ«p3ށUR &3Q?HPVYyYyWS@LXC8/, <G^KƦPX(֦H1 -U9CLeSWYXU1PlH>3& V [LιddVdJ %2m>DHPUXYW{SL)D9B-X{Y)tdǦԭ(ɽx Y+Y80CLRkWxYYVP"I?46'> tŚ իesҰ½$1=GOGUXYWSMDx:Y. ,[v禐UAJ+ȧJ.*h7RBxKpR$WeY'YmVEQI^@5S(o bIJB#mD>#¸f#0/ (n5@JkQV2Y]Y WHR?KB7*GOnN 0թ Kˆ|!H!.:9EMT XYX*UVOGG@=}1]$6qwkΰ§ΪchSۺNh$ 'h4?`IP0VYpYYWRKB 8+c֦ܽ}liH# -9iDMSWYXUOH&>2{%ovϚj38n^ZЧ oo&e3>HaPUXYW=SLC9,*K~ɻ^090GP,8C{L&SW~YXUzPH?3& ݃Ј-ұŧj$IwGωܮx:R%[2>GOyUXYWS4MD9-O |ʍ٦䨖7u_Kr+7BKRDWvYYBVP{I?4'/ *Zޘrof^A`~G;-$U1=,G9OUXYXTMSE:.{!%QRlͶ7伸Ծ7#Z*6A"K4RWXY7YVQ2J@5(c o(gȻz@s/]ɷ9p =&(46@I+Q`V&YbY6WRKxB7 +aWhadϨ禨W3^ +.P:DkMSWYX\UOG=2$ Jviܧ« v@ސe^ '3\? IP VX|YxWR9LLC8!,,8S? ¦[Y7ֽOF*-a9DLgSWYXU*PbH>3 &I G5ѹwieWp S- %2|>LHPUXYWrSLDz98-MitPk_ʦ ٭*3Նc ,`8>C LRlW|YYVPIw?4)'+ dĐѫirذ'$1=GOLUXYWS{MDk:I.  Rt箾ަaDX5ȵY<*q7`B~KuR)WeY(YeVCQIW@ 5F(^ ]@oDE,u#0;S${ ~|ᬣ@ǟ*| )t6AJQVRYAYVQJ0A 6]) "$`bv0r7̵ٹpj9"/;F^NTGXYhXTN{FJG4=s1M$(ag^Χ›Ǫ`jZYv2 'u4?hIP8VYtYPWRKB7+nZҽ䨨ɦtzS. -9vDMSWYXUOH>{2n%^mύa./fjfз {&t3>HfPUX}YW6SLC8,6rɫ\&82Q`",8CzL5SWYXUpPH?~3& yw-n+#UXϐKZ%o2>GO}UXYWS,MD9-A hʇ ֦䨡ɽFq[+7BKRMWpYY9VPrI?4' DނndoWǪOoۋXJ=$]1)=0GGOUXYXTMNE:.e!<Heö0#/E5f*6A,K9RWXY8YVQ%J@5(V _}]ƽx8y)jٷKEb#V0;2%8 :n+þy^e_u*g8/ %2>WH!PUXYWsSLDl9.-BVfFf[Ǧ 4AՖ(r,r8@C0LRrW{YY VPIl?3'"q {Uąʫߧisܰ0$1=GORUXYWSzMDd:;. w Gg鮰榒èdP_EȾjH*{7nBKR%WlY"YdV;QIK@54(V y R:oEH8'~#0 )6AJQVPYCYVQ{J'A6O) V^w6{B}zK"/;FeNTPXYhXTNqF@p2`%O]ρY&*dħ*qyп &3>HoPUX~YW1SLC8, 0\ɛU 19#Xj7 ,8CL8SWYXUkPH>t3& kng-+`gϞVm%x2>HOUXYWS MyD9-5 ^x׿w ӦꨦѽO ~l+7BKRPWqYY7VPlI?y4' 2y\[l]Ȫ]y۞d[%H$o10=2%( +^ órYffzƹ=qK= &3>aH'PUXYWjSL Da9--KT5 aWŦCHա9% ,~8OC2LRxWvYYVP I^?3 'b kHvߧfz@$1=GOWUXYWSjMDQ:3. f7Z宪妓ƨkWjPx\+7tBKR-WkYYdV0QI>@4)(D qD3pFQB0 #0AͥϷb,w;z ĻdƠ%m] (5@0JQV3Y_YV>RKA6^*%=!Կݩ:Ŷq˲إPOx!.:REMTXYXU=O.G=Y11$ >MdGΌŪUolsŎN/ '4?xIQ:VYmYLWRKB7z+Rdv<ճȽ䨟Ҧʗr K -9D1MSWYX}UOG>d2P%BM|J"$għȱ4{Ć &3?HqPUXYW1SsLC8,QֱɕI,<,^zD$,9CL>SW~YXUaPH>g3w&o Zfl42jxϧg{%2$>HOUXYWSMmD9-( Qj׳lӦ𨩭ٽaz+ 8BKRUWqYY/VP_I?k4' 'mRݺTl_ͪe΋ۭop/X$}17=KGNO+UXYXTM5E:.L!(زM%ԩ4GfMB*7B:KJRWaY/YVsQJ@l5(6 ?aCƪk6q6ibe{203#s0M2% MålUkkйD݆WL &3>fH2PUXYWfSLDQ9-":E1SYHZնF1#4,8UC@LS|WzYXVPIO?3&W Y7xë٧gz $%H#$2=GO]UXYWSgMDL:. Yv*׿Uٮߦʨoar_Ԋb+7BKR3WhY"Y\V+QI2@4(4 `?3rGVJ?#0Ѷw˽صaY0!.:YEM"TXYXU;O G=H1&$57yR<~ˆ~ªQqn|ŝ^;2 '4?IQEVYoYIWRKB7m+ESh*իȰި֦ʞ׈ ] -:D[3i&_ QV d5;qÃϸx%2/> HOUXYWSMhD9- @]צc󵙮yԦ򨮭k%+8BKRWWtYY+VPVI?^4' aC׺KlaԪpΜ۷~<j$1G=PGYO.UXYXTM3E:.8! pyث<ө󦉦3 Uv\Q*7B>KSR W^Y4Y~VsQJ@Z5(( 1Nk?ƚc4q7nmsڊB? C#~0Z;  v)"6?AJQVFYNYVQJ|A[6)f m+sܬs~4hSV"m/r;E,N\T8XYyXTNF<0#\ڮ!3Q禿| c7! g.{:EMSWYXDUO}G=1$ ۼ޸Ͱreث%!u E@'4?-IPVYxYjWRL%CS8+Nn"ѭǦiuƵ/ccM-93DLSWYXU PAHd>2% @å_Qfq߹Mݚaa !&3>uH2PUXYWaSLCO9,|*:UMŦUdUC0?,8cCBLSwWYXVPHG?3&A Nu(iڧhy //_&"$2=GO[UXYWS_MD=:. Jfy ȿQЮۦϨtk|hԖz+7BKR5WjY YWV'QI,@4(# SѸ5.pKcPJ )#1 (5@,9CLLSWYXURPH>O3Y&S HFh=@~Ñ%2<>HOUXYWSMWD9- -UוZzͦ򨸭Ŵt8+#8BKR_WpYY&VPMI?R4x' V8˺FieתΥPs$1S=VGcO1UXY XTM$E:.1! aoؗ:ϩ6^ic*%7&BLKRRW^Y/YVhQJ@R5( !A^3Ɛa,v3yu͇ړUKO#0f2%0ܲÖ\Hbn&\ݩot 0&%3>xH@PUXYWXSLCB9,m+澎KM!^q ^Z7G,8jCLLS{WYXUPH??3&6 >m62 %"2=GOeUXYWSWMD/: . 9\bĿ@ЮۦѨ{rtԥ&1+7BKR9WlYYXVQI@4(t zEѯ("mOf^Q7#1F}NTPXYWXTNNF<$0"!͇S&yD#ỊU ()5@IJQV5YZYV$RKA67*u Ӗɼ۳ J䶍}zP!.;rEM.T"XYXU%OG<41 $Y9 lpvUm|ż!~XQ '4 @IQIVYqY;WRKB7P+&3LՎȟ٨ݦŮ)ʾסA;w -:DFMSWYXnUOG=92+%QY])W/ kʧKħG &3)?HPUX~YWS^LC8g,\w'֌v0%H:~ξɠrN,#9CLNSWYXUMPH>>3O&B 2D|gFBß%2D> HOUXYWSMRD9z-!D׊QᵊtϦδȄF"+-8CKR^WtYY%VPEI?E4j'y E.>hgݪƸ”ΰ^$1[=cGfO9UXYXTM#E:.!Oe؈. Ω馒D#rvt*/72BRK\RWcY+Y~V^QI@C5( 2T#Ɗ߲\)t9y$͔ڣc\*]#0q2% ܨÍTEew7%pݵ 1>&13>~HJPUXYWVSLC29,\޾FH (h~u`NT,8qCYLSWYXUPH3?3&' ,Y ޸вVϧk}*EK{G>%-2=GOiUXYWSOMD$:- +LR ˴<ŮئԨ{ճ8#A+7BKR9WpYYQVQI@4' ` o8ѧjRmg[!N#1<G%OUXY$X5TM}E; /!c̚PҳӅ d'*6AJ RVXY;YVQRJ@5)6 ^Ҕ+Ix$M߯} "0WRKB7A+';ՅȐԨئƮ7ױQJ' -$:DNMSWYXjUOG=-2%FELJ(|lͧSij U') &38?HPUXYWSSLyC8],Ogpօh*"HCؾʮ}_,59CLUSWYXUBPH>53>&4 r(8깞vfGQå%2V>!H PUXYWSLFD9h-5׀DٵlЦĭҴɒS4+=8 CLRdWvYY%VPAI?94]'h 8$ŵ8gjߪƸ˜p$1j=jGpO:UXYXSME:|.!CS؀"ǩ릏B/$x'|*;7>BYKaRWaY-YwVXQI{@?5v( !HƃԲY%t:( ͡ڲti:l#02%ܞϸÆJDh}:8{ AJ&@3>HLPUXYWMSLC)9,O sϾ~=F(3p$}xU\,8}C]LSW|YXUPH+?3& JݫЦM䱫ϧh1T&[܊TT +%82=GOnUXYWSIMD:-r "6Iʪ3ܦبռL0"L+7BKRPH>,3-&(p yf)繏ymNWð,%2[>4HPUXYWSL7D9\-x%u8ӵ}jΦƭߴ ɠcA+G8CLRcWzYY"VP7I?*4R'V -ū1ݫeoŰѸ¨y$1p=xGsOBUXYWSME:q.!8BuJ17Ȉ5*L7FBbKhRWfY)YsVUQIv@.5l( >zͲO'p>.ͯھuMu#02%܎ϯ}@Ah}P=Ў NX&M3>HMPUXYWKSLC9,Dbʾr8E 5}1gm,8CgL"SWYXUPH?3& 8ݛМCݱɧj <]6gܚbd;%B2=GOvUXYWS@MD:-j -4ʡ)զڨW@4\+7BKRHWlYYHV QI?4'C Mq߮щyjWvv)Ee'#$;1=G2O UXYX-TMhE;.!Ano˃ݶCϼԨ @*6AK,RVYY:YVQ>J@5( A҂Ի"Ft+U믻$#/",0YUYVRJA6*F mrǫó] |!$/+;EM>T)XYXTOF< 1#*LS`Jp'/M߭ (4'@I Q\VYpY1WRKB7(+x m}mtϨݦѮLʿqhE .=:DbMSWYXdUOG=2%')`21}g֧i%sID &3G?HPVX~YyWS?LiC8B,5BZgUTL֜6* |,O9CL]SWYXU6PtH>3%&a jW߹rhQ^?  %2f>|ε³ԪbjPκG\ '^4?UIP.V YvYWWRKB8++i񨡦ҦycXB -9cDMSWYXUOH0>2%s܂Ϥp=:m VMН bb&\3>HYPUXYW@SLC 9,0]ɸo0?*?@v{,8CmL(SWYXU|PH?3& *ݒЍ<Աʧe>m@tܬqp,B%V2=GOwUXYWS6MD:-Y #ʘܦ㨑'aU=h+7BKRGWqYYFVQI?4'0 A^ߙчy nU7Sr9. $K1= G;OUXYX$TM_E:.!1`a|Ҷ>޼ԭ/V*6AK5RVXY;YVQ7J@5(j 5qл;}#aķ,59";0)<[FNTaXYPXTwN"F;/"hVůDvYH҉ a6)5AiJQV@YTYVRJA6*< ^gǡc + !./7;ENIT'XYXT OF<1#>MYKn/<[߻ 0(42@I+Q\V!YgY5WRKB7+k ]waǫߦ׮Uӿ*|{O .J:DjMSWYXZUOG=2$R$+ yj֧īv7~^K &3P?IPVX|YzWSALUC80, 9BbEUW&֬E8-T9CLaSWYXU2PiH>3& Q ZHѹifUfK %2o>HHPUXYW{SL%D9@-XwX%qc˦ ԭ +ɼ| Y+[81CLRlWvY YVP#I?47'8 oŕ$ѫfqͰ$1=GOMUXYWSMDs:V. )Yq妖YBI1ȤO/*c7ZBrKvR"WfY)YfVKQI`@5O(o "eD!nC>$´b#02 (j5@JsQV3Y]Y WHR2}%hvϗj43dç`^Ф lt&f3>H]PUXYW:SLC9,"Dzɲc,;1NN,8CrL-SW~YXUyPH ?3& ݃Ђ3ʱ§k'NsOτܷy>P%b2>GO}UXYWS2MD9-O  uʏҦߨ8y\U{+7BKRHWoYYOUXYX"TMWE:.r!*JTfӶ1㼽6&\*6A(K2RWYY5YVQ5J@5(f i%iû|;x*bз?>M  #J02@I0Q_V$YeY3WRKwB7 +Z~Vh\iǨ⦫V4g +.W:DqMSWYXTUOG=1$>tjڧū yHލia  '3]? IP VX{YwWR:LJC8,+5T< ƦV^1ֵZC--b9DLgSWYXU%PgH>3&H C|: dfUrY- %2~>KHPUXYWsSLDv99-MdwKeeĦ߭/4Ս h ,g89C%LRlW|YYVPIu?4$'/ ^ĎΫhsװ!$1=GOPUXYWS|MDj:J. Jf覒]LQ@ȯ_@*t7bB|KyR(WfY&YiVM#wx䬤DǛ2} )t6AJQVRY>YVQJ+A6Y) !'%_`x3s7̶ٻti>"/;FaNTIXYfXTNyFIu2r%Zhόa+0g§mgй |&v3>HePUXYW:SLC8,8lɦ_?1WU0,8CzL5SWYXUnPH>3& vx&ȱƧe)$X}`όEd%j2>GOUXYWS+MD9-> iʂ٦@r^+7BKRMWrYY=VPsI?4' Cނkhi]êMqېUP?$c1%=5GFOUXYXTMKE:.d!:Gaö0ީ%-K0'o*6B*K;RW[Y6YVQ'J@5(P ^{YƼu;t/eҷEP\#W0;YTYVRJA6)" CMǏ{ pG),!K/O;ENST*XY|XTNF<0#(9MHk5N| P5(4J@I>Q^V'YgY*WRKnB}7*JmG_SdĨ妮aB q <.]:DxMSWYXSUOG=1$2 ݰufߧ̫Tޜzn '3h?IP VY~YoWR,LFCq8,q*A9ɦYf>dW9$-p9DLlSWYXU&PVH>2%5 9k)ùpdiat,h:1 %2>UH'PUXYWzSLDc90-?WbBb_¦ 5E՜%z,w8AC.LRrW|YY VPIi?3'p xPĆ˫ۧomڰ6$1=GOOUXYWSnMDY:>. s>e殲䦓èePbDhH*|7mBK}R+WiY"YfV6QIH@48(N zP:rBG<%#0$PVoPΗ—ǪXmbcňE '~4?oIP -9D&MSWYXUOG>j2f%D\πW$+g§ı)uw &3>HoPUXYW5SzLC8,+_ֹɠP 46%\g=,8CL9SWYXUgPH>r3& gmh2(diϡXq%u2>GOUXYWS#MsD9-6 Z{׹xԦ먤νS k+7BKRPWqYY4VPkI?w4' 7|X]f`ɪa{۠g[&M$o11=@GHO)UXYXTM?E:.Z!-6عY(ݩ𦌦(9UC3z*7B4KBR W[Y5YVzQJ@w5(C Nk PƲo;n8c ݷVYm%$+#`0Kmqٽ>m0{\W+)Ӱ X)6(AJQVAYRYVQJAv6)~ 5F|x$S7<"X/\;ENST2XY~XTNF<0#x/DGl :Vҋ _B( 5P@I>QfV(YdY)WyR{KgBn7*9Z9XHa䦵kN J.j:DMSWYXMUOG=1$$ ذpkާѫ^޲ *%' 4m?!IPVYvYtWR,L4Cl8,k41ܭ ɦ^lJphK8-t9 DLySWYXUPQHx>2%& (]õnZd`ŹaH(PUXYWiSL DZ9#-0HQ7^XĦBMե:$%,}8OC7LRxW{YX VPIc?3 'a h@{ ëݧitE $1=GORUXYWSnMDR:1. i/U箨禐ɨjYkQx^+7uBKR-WjY!YbV/QI9@4%(A lG7pIX;:#0O-G=W10$@IbD΋ŒWphuőS+' '4?{IP=VYmYLWRKB7z+Khn6ղȽਟԦʘuR -9D/MSWYX}UOG>_2S%;SsN#cɧϱ0Ą &3 ?HuPUXYW-SvLC8,U֩əC*:,cyE&,9CL>SWYXUbPH>d3u&o Yci45grϰnw%2">HOUXYWSMmD9-# Nh׳hΦԽX z+ 8BKRTWvY Y8VPfI?p4' %iRۺUhdʪj΋ۮvj8W$|1@=DGUO)UXYXTM7E:.I!'{خM#թ󦋦- JhQB*7B?KERW\Y0YVjQJ@p5(- DZzEƥh6r4m ef}516#s0PYTYVQJAf6)r {!3|߬u}-_EJ "g/c;E"N[T5XY|XTNF<0#fڴ&:;uDcҙ oO(5\@IFQjV)YdY%WrRvKWBh7*0O1ICV馸x[) T.w:DMSWYXLUOG=1$ΰlkի! t޸ >1'4|?$IPV YqYsWR#L,Ca8+_ ~+ ҭ Ǧfmµ#\ s]I-|9,DLSWYXUPAHt>2% P îeWimҹF݈YO &3>hH2PUXYWeSLDT9-:F%XSŦF^նI3$4,8ZCSg*էȰਚڦ#ʟ׆'] -:D9MSWYXyUOG=O2J%(rswAkB jƧԱ8ď+ &3?H{PUXYW"StLC8y,xA֤Ɉ@(?1jɇT., 9CLBSWYXUYPH>[3b&e QS c6HOUXYWSM`D9- <`מgﵛuצj++8BKRUWxY Y4VP]I?b4' \GкOk`֪xΚۺyFe$1H=OG]O,UXYXTM/E:.;!l}ءBԩ𦌦4 RtbO*7BBKPRW^Y2YVkQ J@[5(% 1Kk;ƚ`5r3w ssڌDA H#z0b2% 9ã^Pchӹ# Xݔj]  &3>tH5PUXYW]SLCI9-x(8OQæSiTH.=,8dCDL S|W}YXUPHK?3&A Mn/gӧj{50b'%%2=GOgUXYWSbMD>:. Fio̿IծকШtk~lԚ w&+7BKR6WjY YWV$QI(@4(#~ RѸ2)jO]YE -# 1N3X&R BIg@?Ó%2=>HOUXYWS MXD9- 0MטV|ʦ悔|6+"8BKRZWvYY)VPPI?S4s' P;ƺGggԪ‚ΦK|$1V=[G^O7UXYX TM$E:.-! ]pؓ:̩𦍦:a q_*+7%BLKWRWeY)YVbQJ@N5( >b*Ɩb,u5x{͆ڔ[J N#0g2%,ܵØVNhs,gݤus !5&%3>}HѬ)$jQg]V 7#1YVQ\J@5)G kҞ4Tp+Dگr" 0;4FNTXXYZXTNJF< 0"&̈́R)uH$廈O ()5@JJQV9YZYV(RKA65*t ӗȼسJ綌xT!/;sEM.T#XYX U*OG<21$V8kotOsź&}^P '4@IQJVYmY?WRKB7K+6GՑȚبզ9ʺקB=x -:DKMSWYXmUOG=:2)%TQS0L7jʧMħJ &3-?HPUX}YWS[LC8h,^q&֌s1)E<ξɠuR,$9CLSSWYXUMPH><3M&? 4@zc;QÛ%2I>HOUXYWSMLD9q-"A׊OൈuͦʴȋC#+18CLR^WvY Y&VPII?E4j't ?2źBjf۪Žζg$1_=bGhO:UXYXTME:."!Kf؄0Ʃ𦋦@""szt*273BSK[RW_Y/YzV]QI@E5( .YƑײ_'u7}!͕ڧbb)_#0r2%ܧÍREct;"yݰ 0C&03>HBPUXYWUSLC29,[{ཱྀEJ)hsgKW,8rC\LSWvYXUPH2?3&) *T ޲гT뱱ϧi}-EKHC%+2=GOfUXYWSQMD(:- &IVʻ5ɮڦҨzշ5+<+7BKR>WjYYMVQI@4'a j3ѡ hWsbe,H # 1YVQIJ@5)5 YҐ)Lu'Mݯx"0 <=FNTZXYYXTN936&:x u&4weHOê %2O>.HOUXYWSLFD9m-8{DڵqΦִɔW6+<8CLRfWpYYVP@I?<4V'j 3&ű9lf㪻ʸ›o$1k=kGpO;UXYXSME:{.!CP!Ʃ즏G*. }(}*A7=B[KcRWfY*YyVVQI~@65}( HƁղU(q;'͞ڷvk<j#0|2%ܗϻÃJAg~A5Ё @R&93>HPPUXYWNSLC!9,LqӾ{;K 1r(s\b,8xCfLSWzYXUPH&?3& DݨФN౯ɧk6O/UܓRW +%;2=GOhUXYWSIMD:-u 8Gʱ+Įݦݨ F9K+7BKRSe q_ QHʾ֏)m,>9CL\SWYXU;P|H>%32&!q ue*๖phQT÷3%2Z>4H PUXYWSL>D9]-t&r8е|l˦ʭ޴ ɢb:+@8!C LReWvY YVP5I?-4L'Y (Ŭ-lhָªx$1w=sG{O;UXYXSME:n.!/Go©릌H81ȅ;*M7FBdKiRWeY(YvVOQIn@15h( 6 vβO%p?.ͪ}J{#02%܎Ϭ|B=jO@В XT&S3>HPPUXYWISLC9,<c¾x2F) <9fk,8CfL#SWYXUPH?3& 9ݜИDٱͧc8`7hܞdc;%C2=GOpUXYWS?MD:-g '8ʥ"ڦݨXC4a+7BKRBWoYYGV QI?4'@ Nkߦь {hY~wx*Id+!$@1=G,OUXYX,TMjE:.!Bjo}<ͼԨ ?*6AK-RVZY7YVQDJ@5( >~ֻCw(X믻"(0"70:D]MSWYX\UOG=2%")]23|fۧg'uKD &3D?HPVX|Y}W SGL]C89,-EShRUO֠7*x-L9CL`SWYXU3PvH>3&^ gU ׹oiPb< %2h>;HPUXYWSL0D9N-fd-ȵviɦӭɱrP+S8%CLRhWzYYVP/I?!4='K  ţ%۫hmư·$1=zGO>UXYWSME}:c. ":`yQ<@&ȘC#*\7MBqKjR$WbY)YqVHQId@!5_(w /kʲC)m?3 ®ͻV#0eì\,a#̗٥QP$a"/;EONzTCXYlXTNFa2%x܅Ϟt99h YNО _j&X3>HXPUXYWFSLC9,5Rɼj0?,DAv|,8CpL&SW|YXUPH?3& +݌Џ8ӱƧj%JgDxܩxp,I%R2=GOUXYWS=MD:-\ $ʘצ䨎&aX@n+7BKRJWkYY@VQI?4'2 =_ߢyr iY9Uu84#$L1=#G8OUXYX$TM\E:.!4Yauֶ8߼Բ.S*6AK2RV^Y0YVQ>J@5( m }4pͻ|Dt*_ȷ21C#=0*<[FNTgXYUXTuN%F;/"iTïD{SFҌ f5)5AhJQVDYPYV RJA6*6 clǛ󬅨\1 !1/;;ENET+XYXT OF<0#]߼ 4(47@I.QYV$YhY2WRKB7+h_u]uĨߦޮQؿ,{P .M:DlMSWYXZUOG=2$O!"whܧo6ބ[R &3T?IPVYzYyWS 3&P VC ӹjgVhG# %2s>FHPUXYW{SL"D9=-Tw} V&t_ͦ ӭ#)z^+`80CLRiW|YYVP%Iy?4.'= jĚѫbvа$1=GOHUXYXSMDw:S. &\{﮻禎¨UDM.ȩP4*h7ZBuKsR&WcY*YjVCQIY@5L(o bErA<)¼j#02y%guϓj25hc_Щ ss&h3>H[PUXYW@SLC9,!Juɯe%A0KV,8CxL*SW{YXUuPH?3& ~І+бȧe$ MwNωܵyCP%c2>GOzUXYWS.MD9-P  qʏҦ㨘5ucQv+7BKRIWsYYBVP}I?4'# -Pޑrh rUêDdہK? /$Y1=,G@OUXYX"TMWE:.r!%ITmɶ7!輺"<%_*6A$K7RWXY9YVQ.J@5(^ i!fv@u,a̷?=U #M042&@ Iu8ƹ|dlai^)) %2|>QHPUXYWtSLDt97-HfpMf`Ǧ07Ցg ,g8|2h%[dό]/,hrd &o3>HhPUXYW3SLC8,:fɤ["91!P^/,8C}L6SWYXUpPH>~3& uv%ƱƧc&)V\ϕO^%q2 >GOUXYWS*M~D9-:  fʃ צꨝĽDx[+7BKRMWqYYބech_êTnۖTTB$b1*=4GGO UXYXTMKE:.g!;B\ƶ,$.K4&l*6A-K=RW^Y1YV|Q%J@5(M _u]ƸrQ]V)YfY*WRKmB|7*IlH\ScߦcAu A.Y:DsMSWYXRUOG=1$1ްvf˫Uޢvv '3i?IPVY|YqWR)LDCr8,x#C4 æ`aBfVA.-j9DLnSWYXU PXH>2%3 5l&ùx]kfqù/h?2 %2>\H!PUXYWmSLDl9&-8X^B a_ 6F՛+u,q8GC-LRrW{YYVPIj?3'm xQĆ ͫۧlr 7$1=GONUXYWSvMD_:7. p=d䮴খèdU^InK+7wiRedPanda-4.1.12/app/resources/output/audio/E6.wav000066400000000000000000002570341444020206400220500ustar00rootroot00000000000000RIFF^WAVEfmt DXdata] /,=QHPVeYXeUNxE9+& UF̅1Ai#}A|J W)u7CkMyTXY^WRI;?F2#jY٦ʩٯ%Ħv"W1x>ZIQWYXTMZDN8Q*b %$2?^JdRWYrXCT M0C6(Jj'⫝̸o`{c{b &|,1:E!OUYXYVPG$I~Q WyYXT'ND8*. i+ˏHh8~}E *8DNTXyYWQ4I=>!1B"4}kÓۦ.{3^)#2m?%J:RpWYX_TGMnC=7) 3׽Y]lOM0o !,9EN{UXaYVP Hscx3 //t1"%8Ըѩ¦զLWұpl#.2%?IRWWYXTwMC7w)m Y ʣ)e@ l0̺ڝ; i+9dEN[UXeYVPgH;=/ g5Bŷ\ !r<e*%3k@JRWYMXSLB&6'0Q֛ynxح]X S-:FOU#YGY:V7PQG;w.NUݾΞ]~FǘQ&5AKmSXYWHSKTA4A&s.@Iı1.L1"FBҊ˦˦W[ #1>IQBWYXTMC7)A s_ijŢj&,d4 f+O9#EN=UXnYV$QH=H0a!9ߓ4Itz7ůX$$L3"@JRWY`X TLBw67( 7ȳܲseQe ,:AFmOUYNYZV`PG<<.}5˱TH?հQ&4ZAKISWY XlSKA5&Fp ՐǍ vIQ(WYXTM6D28#*0 jٮ.wh٬ᾈj? +8D_NUXpYVPQH=0!*ЂY,YUOF:;-l`*weuu=YuuQ'5GBfLS@XYWRK@3_%~W{ƭJB  /=0HPV\YYsUNE9,_ ṟ$KJm`h ع@ ")I7xCNMeTXYkW7RJi?r2#Q &Ōu(ަįsёEL"/1H>;IQWYXTNzD8*  7pv.kS4ˣq A*8D,NTXxYWyQI >0"Q\?v9M>V#2?T1u"qĺί̩`tŤ%#S2C?J RcWYXvTbMCl7H)8 n2ɇs#nA9 Pf5 +9ENgUXaYVPHH =/ 7 I :a)ԐX5%3@JRWYDXSvLjB6'v.|[hy ́܈+ <w-;FOU&YDY/V!P8G;L.-.soݖ΁L~K-ǿ?~ &75AKSXYW.SK*A4&Nw .+ E'C.jQVnYX)UvNE9;+m &ڬeާ` ة; |* 8DMTXY4WQI>1"$X!kܩʦΦ/6L|57#1>IQKWYXTMC7) D8̽Eħl+ӴLˋ_ .+m9AENHUXiYVQHk='06! ]pr7hO (M$v3;@JRWY[XSLBQ6(b Ƞzsյu$! -:YFOU%YEYPVNPtG<.T׶x9߱omdJx&4wAKVS XYXXSKxA4u&Dbkq @v3$N.I ~f<߷npߟT2!(0k=HQViYXIUNCEk9+/ aC۴ 0hǧBʽ9ʌK )7CMTXYKWQI?1:#4zMҴ23ҦȦީl"W#"1>IQ.WYXTM D 8*y ;؊hاi꬟(h 9+9ErN-UXsYVPIQWYXTM]D^8Y*m IUhìiVٜ5 m*8DDNUXyYVqQH>0!(e0Ѯ]Dѹn#h*$2?TJ_RWYyXCTM8C6('Sq#+뫛p`pakU h,/:E OUYYYVPGNŴ;㦶u>]S"0!>IzQWzYXT.ND8*B o3˛Qf2sn: *}8{DNTX|YWQ9IL>(1T">uÝ%v!W#s2f?J4RmWYXcTPMvCK7!) B cghNG't` ,9ENxUXcYVP1H1"/HظѩƦҦ ENnҩ^b#2?I RTWYXTMC7~)t iʫ1i7 h̲ډ2 [+9YENRUXfYVQhHO=/ !-mMCȷ#a h1V}%3[@JRWYNXSLB06'8f֪yqӭ뵥IO ?-:|FOUYFYDV9P[G;|.d"jίf쨆;"𱐻NJsC& 5AKlS XYWKSK[A4M&>HU˱3 .;UN&EJ9l+ 8_)*dӧMȳZʺm E)7CMTXYCWQI>1 # ZS%ҔʦΦCK#1>IQ@WYXTMC7)Q iͳVҧf&M/ c+:9"EN:UXoYV(QH=Z0k!Iߠ?Pzn)šH$B3@JRWY]XTLB6G(H-Ჷq]DR ,:9FbOUYMY`VePGG<.2O;1ե u=&4KAK?SWYXmSKA5&M՘ǖF}ZΖݟZTs.;WG-PCVAY'YUOF:O- X[ܤͰ֭suvS*' 6BLSHXYWRJg@3 %-c:uX·<;a /==eHPVbYXVUNgE9+e :/o#Ļ"s1>mIQ&W~YXTMCD885*B uپ4weԬھwb* +8DXNUXtYVVQH=0!9 Џ@O빐JӒSF$2?lJoRWYtX0TMC6(x)Rܫqix̑ۂ' E,K:E2OUYQYVPG<-/" 2{_w=8'ڪ Av%e4AkKSWY!XSLAg5 'D{Ի2BP|Ԩ3|Uh4?.;GPVAY(YVOF@;-s1k1vdop0Qfm:'5AB[LS;XYWRK@3n%"aԉƵO>q /<'HPV`YX{UNE9,p ۂ̸/NNl\Z׫1 y)67tCEM^TXYoW=R!Jr?2#%g)Ŝv2٦jу}4@"#1<>5IQWwYXTND8* G~ ˀ9hF$˗e -*8D%NTX~YWQI.>1&"\fPÂ1F0B#2?5JERvWYXXT8MYC)7(eפHIpSZ@Ϳ5 8,9EOUY[YVPHZ1"x&ĿگʩئVnė#D2:?IRcWYXwTmMCv7V)G Bɏ"l@1HںY# +9|ENdUXfYVPPH*=/ H(±N.R I(%3~@JRWYLXSLnB6'?֍_kzyr" 0i- ;FOU&YDY4V*PA4(&U*5, 74.[1"+n&q ʦͦ*+IQHWYXTMC7)& TDսȨg. δ@|S +^9;ENGUXmYVQHv=20C!!cw߀?j~Dv@$j30@JRWYZXTLB\6 (oȢβm˵a -:YFtOUYJYRVVPzG-<.^~9ݱeaW<h&4pAKXSXYXaSKA4&$Wru~>nѶ?. s N4gǧ82~: )7CMTXYOWRI? 2D#DWҾ>8ҦŦܩ^ Q"1>IQ3W}YXTM'D8 * Hؙm٧k䬘V )+9DqN#UXnYV@QH=0!i,h^˰ wӵk$3?JRWYkX$TLB6|(V\/ϫuq6 ۦW q,q:FHOUYPYoVPGr< /M9N!&) g; &4-A{K2SWYXSLAF5&!Lǽ5IݨFrXp@.;,GP1V=Y+YUOF ;-K;xj{Ktȍ"i'5_BpLSAXYWR K@3D%c=eƛ: M ( /=?HPVcYXlUNE9+B w^̖=Bs!i'`, >)^7C[MoTXYhW%RJM?`2#1 }e!ڦѯĎѭag"H1]>LIQW|YXTNhDg8i*~ Q^#iìZFً% Z*8D>NUXzYVqQI >0":oC(ѷi;ùfXm" $2?NJXR}WYvXNTMFC6(2b{.3m^kW뿿\G `,:EOU YWYVPG'$+GZU~[);z-};FO V;Y0YVOFl;-l*!R|[ZV%2־2N'5B;LS2XYWS=K@$4%-_ԳݺlŪ1ۮ_w±Ϧ|:e n/<HPVXYYUOE:P, ;O۱Qd[n;4sE(7HC*MJTXYzWTRCJ?2$hL Yż;覵l7JA"0> IwQV{YXU6ND8*R ?ˤZd.gf$ v*r8sD NTX}YWQAIW>41c"KĦů oŹ=#e2[?J,RkWYXmTOMCN73) RojkJ@$mQ ,9ENtUXcYVP7H =/ ϴ–G >pJԥ sQ%3@ KRWYEXSkLSB5'W~jAulq"ͣܞM\-.;FOU.Y;Y-VP&G;1. [R|oD֨L9!ƻ[+&P5ALS"XYW(SvK Ax4&'a(&(_C^ /~1"<Tة¦ئCCeҗOV#2?I RPWYXTMC7) 0o&ʳ6çi3^̟ڃ L+9TENTUXhYVQtHV=0!8UVԷ*ba!Dk$3T@JRWYUXSLBA6'Lsָȉsxϭᵝ=B 5-:lFOU!YGYFVAPdG<.n4tηŶm𨃦>챆|d3&5AK`SXYXMSKdA4Z&,JT^ѱ5n./0=H!QVoYXCUN0EU9w+ Kg.ʹ0bѧIݽRʧe 5)7CMTXYGWQI>1#lb1Ҟ!#ɦЦy19"1>IQ?W~YXTMD7)[ rճZ֧g"񬲴B U+09EN4UXnYV/QH=i0u!ZߩN Y|k!Ŗ?$:3 @JRWYbXTLB6R(#X:˼費kV2}I ,:1F]OUYMYdVmPGU<.$, 3?5!՘`8&4HAK;SWYXvSKA5&b'թǜ"HV·ݓG Fd.;HG-P:VCY&YUOF;Z-% ieܵ͵ܭwpjȸF"'6wBLSJXYWRJr@3%:oE})X/-Q /4=[HPVgYXdUNsE9+o C:z,cIQ$W}YXTMODE8?*M +B gʬ|ɾrٻN *8DUNUXtYVZQH=0!JєNR㹆;ӅE9$2?eJhRWY{X3T M C6( =\߫mizq ̂v 6,B:E*OUY]Y{VPG<>/- Bq~M=$%֪4h%X4@`KSWY$XSLAo5'S7FT{Ϩ.tK\%1.;GOV9Y1YVOFI;-Aw:tffk'B]_+r'5=BKLS4XYWR'K@4y%2qԏX&IQ W|YXTND8* Yˈ@eBˇW !*8D$NTXxY WQ+I2>15"$qu^Î(:%m8#2t?1J>RrWY}XcT9MgC27)t'ױMWjRU5ſ(z *,9EN|UY]YVPHh1"1ʸޯѩڦRaĉ }|#624?IR^WYX}TqMC7f)[ Kʖ"dC(z8کL t+9tENbUXiYVP[H2=/ N3+¶V 'Bn:%3r@JRWYDXSL}B6'!G֕kpv߭jg "`-:FOU(Y?Y>V*PKG;h.B DݲΕ]㨃E#Ǧ"a&$5AKoSXYW;SKEA46&b 6?/ 3 %.Q1"?x9 ɦͦ!%3`j#1>IQ?WYXTMC7)2 iWؽ³Hϧg*ʴ1lD {+O96ENDUXnYVQH=A0O!.w߅,Erw= k/$Y3+@JRWY^XTLBj6*(*ȭҲsõsWs -:QFmOUYLYTV^PG7<.p超6ϱaQMտ,]&4hAKSSXYXaSKA4&5c~Ձdž=iȶαݿq7m.PHVFY"YUOlF:3- :D܈͞έuxxF'>6BLSRXYWRJS@3$kH#ab+ҷXR߂7!0U=tHQViYXQUNUE9+I }_6fŧ5!u* )7CMTXYPWRI?2O#WhG>զæة޸W>"1>yIQ'WYXTM.D&8*$ X٦!rݧj䬉{L +9DkNUXoYVGQH=0! t3qVȰbӰlc$3?~J{RWYmX(TLC6(bn8ѫqq&ͯۛF b,e: FEOUYRYsVPG</ `B`''+䪞[2%4AzK)SWYXSLAQ5&0TȻ 9Kب@hQY  5.;$GP,V;Y-YUOF%;-WK$񭮨ujtBgȂY'5QBjLS=XYWRK@3R%q NmƥCI /=>HPV\YXpUNE9,O j̡!BIkloS /)U7CXMgTXYdW5R Jd?b2#Bńo"ަǯĂѠO]":1S>BIQW{YXT NuDn8w* "hi,hV@˯~ U*8D5NUX}YVwQI>0"HN7qIpQVyYXU=ND8*] +D˳^i$\R} j*e8mDMTXYWQFId>@1o"[ IJȯǩjzů2#Y2S? J*RdWYXnT]MC_7>)- `%ysiI:Yz> +9ENoUXaYVPBH=/ ! œK:f<ԘfC%3@KRWYEXStL\B5'cwGwor͓ܐA Q-;FOU&YCY+VP-G;>. f]ݎtH٨G7N&=5AKSXYW+SK%A4 &<j&) S6O /q1"NZکʦͦ8;VҋEA# 2?IQMWYXTMC7)  8-ʿ<ħj1Q ̕p ;+u9MENOUXiYV Q|Hb=0&!Jca ַ7` W7[$3H@JRWYQXSLBG6(Xȓzq­ߵ~6, ,-:jFOUYJYJVFPmG<.~@̶v𨇦;xyoT)&4AKaS XYXRSKpA4h& 3Oefױ 5zb.(<~GUPOVPYYUrOZF:- h{˵rʲ֥m!([6BLTYXYWRJ3@h3$@wLiA}}ߪh @!50u=HQVlYXEUN8Eb9+  Uy<Ѵ/fͧDҽFʜT ))7CMTXYCWQI>1)#&yr<ҩ+)ͦɦo+h1"1>IQ3WYXTMD7)n +؁׳gѧm﬩4u E+&9 E~N-UXoYV8QH=u0!mߺW^bݰŊ/$'3@JRWYfXTLB6^(5dHڼǫnE)s7 ,:$FYOUYPYgVsPG\<.29 0𪸱4+ՉX%&4:AK8SWYX}SKA15&k0ծǫ (K{Ow݈69W.;>G)P2VGY#YUOF ;i-/ wxܹ筞zj^Ȩ:'6qBLSJXYWRJ~@3,%D~"Oƈ- Q%J /*=SHPVhYXhUN{E9+% YH̀ *Gf#}=yK W)t7CgM{TXYcWRI:?F2#k[ަ˩ٯ&Ħ}"[1w>XIQWYXTMYDN8O*_ LU|ʨ'p9W$.;GOV:Y.Y VOFU;-N>~[ga;LOj'53BFLS9XYWR4K@4%C~Ԝ˺\4oU /<HPV\YYUOE:6, 9ەο@XWkJI׍b(&7[C6MYT~XYrWGR4J?2#A*Bũ1妷}Qf`("1(>#IQWzYXT&ND8*2 b(ːJh8 ˂A *8DNTXYWQ0I>>!1D"/k×)z-\,#2n?$J;RoWYXbTCMqC;7)~ 1شcSoMN1h ,9EN|UXbYVP$Hq1"(5ظթ٦ MW{ҷkq#(2*?IRXWYXTzMC7t)g Xʛ#ħf<%r)ږC l+9jEN^UXeYVPbHC=/ g4Cŷ[x6 b. %3g@JRWYPXSLB%6'/T֞utsխ[Z Q-:FOU#YCYAV0PUG;t.PUݽΠ_FǗM&5AKpSXYWBSKOA4C&p 0=L±4".HF:,R C[q岼)FJ({6BLT\XYWRJ@G3$J.vyPCÜЬJk!X0=H.QVoYX3UNED9[+ ,M%gӧTϳk؁ Q)7CMTXY1#KF҉ǦѦ!"UZ  #1>IQ=WYXTMC7)A lYóRΧk"-_: h+N9!EN9UXoYV(QH=N0Z!@ߐ9Juv7űX&$H3'@JRWY^X TLBt6:( 7ȻղoiLi ,:IFfOUYMY\V^PG><.z󶉮;ϱRK;մO&4YAKGSWYXkSKA5&ErՑNjAfΠݳc(].;^G8PBVHYYUO|F:B- JMܙͤԭyr{e8'.6BLSJXYWRJ]@3$ wS.k `"̷NCt( !0K=lHPVgYXZUNbE9+W ,!g$3o3it |)7CMTXYVW RI?"2_#atOF ԦĦө۸F*"~1>tIQ'WYXTM8D-8**8 cٲ+wg٬㾄p8 +8DbNUXqYVRQH=0!,>x[UӡbR$2?{JpRWYtX,TLC6(mwG ٫tj̢ی9 W,Z:F;OUYPY{VPG<$/ %jSi6++ܪQ%q4ApK#SWYXS LA[5&:eͻ+~hmEL$.;G P&V=Y+YUOF4;-f#Z)wdvu<[syK'5IB`LS8XYWRK@3_%\wưF ;~ /=-HPV^YYsUNE9,\ q̯(HJo^h صD $)F7{CKMgTXYlW5RJh?s2#T%ŋx"䦶vёDN",1L>7IQ WYXT NDy8* 8mo5bR0˧n D*8D0NTXyYWyQI>0"STJ{;O@X#2?9JPRsWY~XTT,MVC7(Qי=CqTcDڿF) J,:E OUYYYVPH<{/p L޽ςh5iϺƊT% 4@>KRWY4XSDL B5U' ED+Za\zJ^-g;FOV6Y2YVOF;- D6`&Ũ}VQD ֠w,'5B)LS)XYWSNK@;4%Lz|̪"-ʮR_™όޡbH X/HiQVyYX UAND8*g 0W˷k e맏\Ht \*[8`DMTXYWQSIj>P1y"nĺЯɩߦbrť)#O2I?J'R\WYXwTcMCk7J): o4ɉt iF4Si1 +9ENgUXbYVPHH"=/ 4¥ Q5X2ԉW5%3@KRWYCXSvLlB5'x,}Zkw ̓܇* :y-;FOU(YAY0V$P1G;I.+)vnݕ΃NߨG/.m1" [hƦЦ-7J65#1>IQMWYXTMC7) O@ǽEħj/մLˌ` *+f9GENLUXmYVQHo=%04![ui9iO (M$s3@@JRWYSXSLBT6(fȜ}qӵo* -:\FOUYJYNVLPxG<.U׶x:ޱrlaA{&4xAKZSXYXXSKwA4s&Kano9xٶU.<{GHPQVHYYU}O`F:- ,o͉ѵ­t{֎d(V6BLSWXYWRJ@@r3$I& Sb>nqߜW/!.0f=HQVkYXLUNAEn9+0 cH״0hȧAʽ:ʍH )7CMTXYMWQI>17#4EҸ13ϦȦg[ "1>IQ6WYXTMD8) ;؏ cߧa!䬤(e 7+9DvN*UXrYV>QH=0!zc egѰŀ!y$!3?JRWYdX&TLB6m(AtQ"޼ʫpw>ۺc( ~,z: FLOUYRYjVzPGg</D'E +窱1 xG&40AK2SWYX{SKA@5&t8պǵ0GܨPps,*L.;6G!P2V@Y(YUOF;x-> /ꭢykTȚ.w'6fB}LSKXYWRK@37%U/\Ə6O 7 /=KHPVbYXgUNE9+0 iP̐ ;@mx0h@ K)l7CfMrTXY^W(RIH?S2#*ng⦷ȩԯĖѾlw"T1f>XIQWzYXTN^D]8[*n LVfƬdSٝ1 i*8DJNUXsYViQH>0!&e2Ѯ]DϹm%e}+$2?TJ^RWYyXBTM3C6(,Zx.髝n_t\kT !g,,:EOUYZYVPG<[/C !\ޚ^Qͮ)Ϫ|ƭ{J%:4@LKSWY,XS-LB5,'wINX|ƨ$c3G-;FOV;Y-YVOFb;-YEy`\],C@X'5 BDLS2XYWR:K@#4%TԩҺf6ޮmzϯKp }/< HPV_YYU OE:G, /?ۧտI^YkF<׃R(7UC-MRTXY{WIR?J?2#Q;Jŷ:䦴}C]V"0>IyQWvYXT2ND8*> q4˘W_1uo: *|8D NTXYWQ:II>,1Q"@vßܦ*s!R#t2g?J;RcWYXhTLMyCG7$) A ee hOF*v _ ,9ENtUX`YVP1H1"4E۸שڦLJpҥe\#"2?IRQWYXTMC7{)t mʲ:n4#k̴ډ1 X+9]ENUUXeYVPnHK=0 !.nKFǷ&\l.Pw!$3Z@JRWYMXSLB/6';iִwzoέOK C-:yFOUYIYAV8P^G;.c"hίe~DLjv>&5AKiSXYWHSKZA4N&:LṞ6{.AUN-EA9u+ ;](´'iΧRų^ʶp E)7CMTXY@WQI>1# YP'Ҕ"ԦƦ DI"1>IQ4WYXTMC7)O kγVҧg%!T) `+<9!EN:UXnYV+QH=X0k!IߛEUsu,ţK$F3@JRWYaX TLB6E(B(ɾ岳q^@T ,:mIQ*W{YXTMDD788*D tٿ4wfԬ׾}Y4  +8D\NUXvYVXQH=0!9 ЍBR蹕DӕUE$2?hJsRWYoX9TLC6(+Nګkp|{̔ہ& G,O:E2OU YWYxVPG<5/ .|arD0#ݪ Cu%`4 AgKSWY$XSLAj5'Jqܻ/CN̨9{Sk1@.;GP%V;Y,YVOFC;-t2i/xdon2Ogh@'5DBWLS;XYWRK@3n%(eԆƷPA򮄷q //IQ W{YXTND8* C}z 1%"_jL|ݦ;@3|I#2?3JGRtWY}X\T1MaC!7(`לMHhZTEȿ2 <,9EOUY\YVPHe˿tƬ h秉L;] K*R8VDMTXYWQWIx>Y1"{*ķĦ֦XlĘ#D2;?IR`WYXzTiMCt7Y)I ~Cɒ|$gD/?ڴ\$ +9~ENiUXgYVPPH,=/ E&¯O *M"ԁC-%3@JRWYFXS}LtB 6'?֌`qq߭|p% 1k-;FOU$YBY7V'P>G;T.;;yݤΊS|M#Dz0p&,5AKuSXYWQVzYX5UwNE'9D+t 2ں gէdٳ |ؖ2 q)7DMTXY9WQI>1".m&rȦѦ.)?mx'*#1>IQDWYXTMC7), RDԽF̧g, δ>wX +d94ENDUXnYVQHt=60?!"e~{ ?myGy?$e36@JRWYXXTLB^6(tȣ˲oε{e -:WFvOUYNYPVSPG"<.`z8 ڱfaW<l&4sAKSSXY X^SKA4&\ts=p϶νA. rVݴ3gƧ;0ʁ5 )7CMTXYMWRI ?2F#BYҾ>8ҦŦީ`I"1>IQ.WYXTM#D8* H؛jܧgଛX ++9DqN#UXsYVIQH=0! r$n]ͰnӾ |p$3?JRWYiX'TLB6w(Ob+ȫi{/ͻ۫U p,p:FKOUYPYpVPGq< /R5R)ꪥ( g: &4,A}K0SWYXSLAJ5&L7HڨHu`d ?.;-GP-V?Y+YUOF;-N@魯ppvGwȌ!i'5_BsLSHXYWR K@3F%b9jƕ>I% /=?HPVaYXkUNE9+B v[̜AArl}#^+ 9)b7C[MqTXYaW+R JK?e2#5 {iߦũ˯ďѭ_l"B1c>EIQWYXTNkDe8i*~ NX)faIً( `*8D;NUXyYVqQI>0"6t?+ѵhEùh[p$2?LJXRWY}XFT!M?C7(8_{-4n^iZ꿽\J a, :EOUY\YVPGItQWrYXT9ND8*P ~=˥[f񧖬+hb) u*s8qDNTXyYWQBIW>41c"J}Ģɯߦ!qŶB #j2Y?J-RjWYXkTUMCR73)# LpjjIDeQ ,9ENnUXaYVP7H =/ ϹB >qFԮiZ%3@KRWY?XSlLQB5'YcIz}cz!͟ܢIX-,;FOU+Y=Y,VP(G;3. ZP~l>ۨ{O6%Y-&O5ALS!XYW,SsK"Ax4&-_ &$,ZG\ /1"CPکĦҦ?EdҗVN#2?IRNWYXTMC7) .o&ʴ;q. `̦|! L+9TENSUXiYVQrHY= 0!9QZѷ.^b"Dj$3V@JRWYPXSLB@6'MvֺȆzpǭ赙A; 7-:pFOU!YFYHV>PfG<.q2vζƶl񨃦>}a8&5AK]SXYXQSKkA4b&'HV]ѱ7n.31#e[6ҝ %ѦǦ {4{<"1>IQeIQ#W~YXTMJDI8=*Q .D fͬvѾjٷQ *8DONUXyYV]QH=0!DіMQ幂@ӀD<$2?aJlRWYsX:TM$C6( :^ ޫkkxs̄s =},G:E,OU YVYVPG<5/3 @lނK<Ů#ת0c%U4A]KSWY*XSLAu5'X6IPʨ2qMY)..; GO"V7Y1YVOFM;-@x<vcgl#HX\.s'58BOLS3XYWR*K@4t%6mԗƺ^8vj /< HPVfYXUNE9,,z +ۊ¿:OYeRUם"s)27eC=M\TXYtW>R.Jz?2#<k(<Ş.㦶]xs"7"15>)IQ WzYXT$ND8*! UˇAg@ˋT #*8D$NTXyYWQ$I8>15"%pu]Éߦ19!r7#2v?0J?RqWYXaT8MlC+7)k!ׯQTmPU7" *,9EN~UXaYVPH(R =*J8HDMTXYWQ_I>d1"-˸֦ͩQbĊy#127?IR\WYXvT{MC7b)[ Nɚ&eB){7کJ o+9sEN_UXhYVPUH:=/ R,2¹S'|Fo;%3t@JRWYNXSLyB6'!M֖jpvޭjg b-:FOU&YBY1"Aw9 { ɦ˦)3ag#1>IQAWYXTMC7)3 dS۽Ļg+ʴ1kH |+Q91ENAUXlYV QH~=D0K!1u߈)Cqw= l.$]3(@JRWY^XTLBd60(|' ȪѲ{xõo] t -:LFqOUYTYMVbPG4<.m消5ѱ`QMս-Z&4bAKOSWY XhSKA4&3dxՊ{EjǶαݿs4n.{IQ)WYXTM0D%8*& V٥#qߧfݬF +9DgN UXsYVLQH=0!x/vb_Ӳle$3?yJRWYgX/TLC6(ah;ϫkt*ͭ۟A ],_:FCIQW|YXT NrDt8r* 'bg,c[=˴{ R*8D:NTXvYWuQI>0 "?I9s>]Qh$2?FJPR}WYXLT)MFC7(Fq׉6:k]cQ࿳K@ V,:EOU YYYVPGLB5O'0/(WX]x¨P",k-t;FO V8Y3YVOFw;-z6*\è~T[F*֬%7'5 B4LS+XYWSGK@14%=l vǪ /ӮYj¥Ϙ޲o,T e/IlQWrYXU?ND8*\ $Lˮai!`Wy c*m8dDNTXYWQII`>D1l"]Įͯئ$a ů2#\2R? J(RgWYXkT_MC_7>). _&{pjH9dsC +9ENpUXbYVPBH=/ ( о O?f=ԚdD%3@KRWY=XSlLaB5'brN~iv͒ܔ:K-!;FOU,Y=Y0VP.G;=. !cc݇zKڨ~N.J&A5AKSXYW-SK(A4 &8n'+ M;N/q1"N\ީæצ=8TҍH@# 2?IRHWYXTMC7) 2*½>§l/ݴU̘o <+z9JENPUXmYV QH^=0#!Hc` ط5a Y:]$3H@JRWYVXSLBC6(Uȓvuĭݵ}4/ 0-:oFOUYHYJVHPlG<.yEͶs<x|iS%&4AK_S XYXVSKsA4k&=Z]jֱ 8}߶].(<GRPUVIYYUtO[F:-} !a~˵oβנp(\6BLTZXYWRJ-@l3$=xE}l>~|߬f B!20w=HQViYXDUN;E^9+ Sy:Ӵ.hɧHӽFʙY !)7CMTXYFWQI>11##yjAҨ,*ЦƦq-h2"1>IQ3WYXTMD7)n /ܳbէiﬧ 5w B+,9EN'UXfYV3QH=l0!e߻U_aްŋ.$)3@JRWYgXTLB6d(8c?ͼqzM#v4 ,:+FROUYOYhVqPGZ<.5: 0򪴱9%ՇT)&4>AK5SWYXwSKA-5&q0ծǫ *EߨW{݄83].;BG&P6VBY%YUOF ;j-0 #qzܻୣup_ȩ:'6mBLSJXYWRJy@3*%DTƄ/ N#D /.=PHPVgYXjUN|E9+# ZD̄0CgB|K W)x7CmMwTXY_WRIWIQWYXTMTDS8L*_ :Kc Ǭoƾ_٥F v*8DINUXvYVbQH=0!Q( ѥSLڹ|,y7+$2?[JfRWYqXDT M,C6(Gd#䫝kgsi~\ ,u,7:E&OUYYYVPG R{ޏTFˮ ת~#W%I4@WKSWY'XSLBz5''c EFW|ɨ+jAL-;GOV!IQWyYXT%ND8*0 e)ːHi9{yK *8DNTX~Y WQ0IA> 1A"4|k×ߦ-z0c&#2p?$J9RqWYXdTAMuC77){ /׻\X lNO/~r $,9EN|UX`YVP%HY!VPG;.@2jT|4Ҩ|S@0ۻuH'i5ALS"XYWSoKAe4%tDת(3Cqdx3 //u1"";Ҹөڦ PU|ҵom#-2%?I R]WYXTyMC7l)e Y ʡ*g:)t,̹ڡ6 c+9fEN]UXlYVQ^HD=/ c8?[ "t8 `- %3g@JRWYQXSLB&6'+[֣sssխ[Y O-:FOU"YFY>V3PQG;q.VVݾΞ^騃@%ǘP&5AKoSXYWHSKUA4C&q +BGű2!.L1"JHҌ ˦ͦ#V\  #1>IQuIQ*WYXTM8D.8(*5 fٱ*rfڬ徂r8 +8D`NUXsYVQQH=0!-Ѐ>v]Rӣ_X$2?qJxRWYmX2TLC6(lxGϫjp!̥ۊ: T,X:F;OUYUYtVPG< / %lRi6*$䪓T%p4AwKSWY#XSLAa5&?gѻ&>Qyڨ6_u?Q,.;G P&V=Y,YUOF7;-g#Z)zcux8]t{J'5KBaLS;XYWRK@3Z%WzƯG> /=+HPVdYXyUNE9,_ s̮(GMjh`غ@  )I7yCJMlTXYdW;RJg?u2#RŐs'ᦹwяCP"+1L>7IQW{YXTN{D8* 9qw0aU1˦n ?*8D-NTX{YW}QI!>0"RXDt8M>X#2?:JNRvWY{XUT.MSC7(U}ז?DmX_G׿D* G,:EOUYWYVPH<{/s F޿kޮ7gкƇP%4@5KRWY6XSDL#B5X'?@1aYbwHX-b;FO V6Y2YVOF;- =;a"ƨ}UUA ֠r0'5B-LS*XYW SSK@@4%F˪ *ͮR\›ϋޡfP Q/HkQVxYX UDND8*l 9O˿f¬ d柳UH n Z*^8\DNTXwYWQPIn>M1{"kĶد¦֦\wš$#N2J?J#RdWYXrTcMCi7K)= l2Ɉt!hG2Ud7 +9ENeUXcYVPIH=/ 7§ N|jīZz?k(6BL ThXYWRJ?3}$x ְahdu!{0=H1"'V!jŦӦ42J}2;#1>IQNWYXTMC7) J?ŽAħm+״Ēf ,+i9FENKUXmYVQHm=)01!Vrm:fN -U$p3A@JRWYWXSLBR6(cȞ{q׵t' -:`F|OUYOYIVQPtG<.Qٶy= nkeJw&4zAK[SXYXWSKwA4x&Hfjq ˽7ʑE )7CMTXYMWQI>15#7zNұ8+˦ɦeY#"1>IQ2WYXTMD 8) ?؊dۧf笢'k 7+9DxN(UXsYVAQH=0!yehcװ z!w$#3?JRWYiX TLB6j(=xS ˫qx=۹b* ~,~:FOOUYUYiVzPGf<.A)E0몰- wI&43AK5SWYXSKA;5&{;պǴ1FݨOlw*-H.;2G"P1VBY(YUOF;z-: -譤yhX~ȝ,v'5kBxLSHXYWRJ@34%W.[ƒ2 R4 / =HHPVdYXjUNE9+3 hP̏4Ggx6t5 G)k7C`MwTXY`W%RJH?O2#'s`ަɩЯĚѽqr"Y1c>WIQWYXTM_DZ8_*s ARejWٜ2 e*8DDN UXxYVhQH>0!&f2ѰZFιp#g}.$2?UJ_RWYzX@TM1C6('Zr$)p_qagZ n,(:EOU YVYVPGOŲ5禴{JSO"0>IxQWzYXT.ND8*C q6˖W^4tq7 *~8{DNTX}YWQ:IJ>,1P"BtÛ¯٦.n! N#r2h?J7RjWYXiTGMCB7&) CbcpHJ)yd ,9ENwUXcYVP+H=/ Ϯ‰BORԺ\%3@KRWYCXSgLEB5'I|s[(λg7'W5A LS#XYW"SqKAo4%T%,6fVi$ %/1"1OѸѩæ֦GMpҨYh#2!?IRQWYXT}MC7)z !bʨ/§h8 f!̯ڎ+ T+9^ENVUXiYVQhHO=/!,sCN̷&Zg2T{%3]@JRWYNXSLB)6'6c֦ȂvrЭQF B-:yFOU YIY?VISα5 .A1#`X#ґʦʦHL"1>IQ1գrA&4PAKCSWYXnSKA5&NՙǗ$?aΗݣRNu.;SG2P@VBY'YUOF:P- W[ܩͨЭssuU0'&6BLSOXYWRJc@3 %.c9vY÷@7d />=fHPVeYXZUNgE9+f <3h!=j/We p)7CtMTXYXW RI#?.2m#mxQS ئѩϸ=Ŀ#"x1>oIQ'W~YXTMDD787*A x$ٺ7yeάؾxf% *8D[NUXpYVRQH=0!>ЏAQKӑUC$2?jJtRWYlX;TL!C6(y'Nܫrgw̖|+ F,N:E5OU YYYxVPG<5/ 0|_v>6#ܪ F{ %`4 AeK!SWY#XSLAe5 'Gvջ2BP~Ш4~Tg6<.;GP$V:Y.YUOFC;-s4f0|]tl3Ohm:'5DBWLS;XYWRK@3j%#`ԋƳQ?s /<%HPV^YYwUNE9$,u ہ̶2KRj Vcأ8)<7qCCMdTXYmW;R%Jo?2#)b,řz,঺dш2A"#1;>5IQ W|YXTND8* Bˆ3hG%˘c 4*8D)NTXxY WQI/>1-"bkLÂ1C-B#2?7JDRvWYXZT3M`C 7(aסJKiWY?ο7 :,9EOUYZYVPHm)ǨSKA ֑ h!'~5ALS%XYWSWK@L4%V#Ҫ!#ʮDWzޛI6 K/]1"|&Ľޯǩئ\fĔ#A2A?I R^WYXzThMCs7[)P u>ɑ|$iA3CڹZ" +9zENeUXhYVPNH-=/ D #®V0P"ԁ@1%3@JRWYBXS|LvB 6'9֊`sqܭ zq# /k- ;FOU&YBY8V#PCG;Y.89xݦΈR⨃D, Ǵ,i&*5AK|SXYW;SK@A4'&X)6* 80.]1"-n&oǦЦ,)=q{%+#1>IQFWYXTMC7)* SGӽF˧h, ϴ>wW +`9:ENGUXlYVQHs=70=!%a{{"Ci{Cy<$l31@JRWYWXTLB\6(u"ȣ̲o͵zh -:PF~OUYJYRVUP}G)<.\|6 Աl\Z;j&4sAKWSXY X\SKA4&$Wss~9wʶλ}Ix.IQ5W~YXTM)D8 * Jؓqاjଛ[ *+9DpN$UXtYVBQH=0!k*jW԰lӾ}q$3?JRWYkX$TLB6v(Na,˫ps5ͼ۬R j,m:FIOUYTYmVPGq< /Q4V!*骧%i= &4,AyK5SWYXSKAC5&K7GרLx_i=.;-GP0V?Y(YUOF;-J>viQpȐg'5[BtLSGXYWR K@3B%g:iƗ=I * /=@HPVaYXkUNE9+A xV̠?Ghtx"[/ =)_7C^MmTXYdW*R JP?_2#<Ńb!ܦé̯čѭ\m"B1b>HIQWYXTNkDe8j* T`!jeQ˹ِ# [*8D@NUXpYWlQI >0"4v>)Ѹg@Źe]x$2?GJ`RwWY{XFT"M>C7(;a׀(9髥gchX쿼]J \,#:EOU YUYVPGK@$4%-_ԴںmŪ0ۮ^x°ϧ~7g m/<HPV[YYUOE:R, 8P۱NhWq=3uD( 7IC(MLT~XYzWSRDJ?2$ gM YŽ<禲r8LB "0> IyQVzYXU5ND8*N Bˣ[e+hc' {*m8vD NTXYWQAIW>41c"Kéůܦ#pźD #j2Z?J2ReWYXmTRMCP73)! PvekJA!jO ,9ENqUXdYVP7H =/ ϵ–IDsHԩqR%3@KRWYAXSkLQB5'VdHz|ex͠ܠMY-&;FOU+Y1"AQ֩ȦЦ=FeҖUP#2?IRTWYXTMC7) 'xʸ8ħe9W̟ځ H+9VENOUXgYVQsHW=0!:USз-`c#Iq $3T@JRWYSXSLB96'Bzּȅuv˭嵛B: 5-:pFOU"YEYHV>PfG<.k7qκ¶o𨀦C򱁻ǁm+&5AKcS XYXLSKaA4X&(KQbͱ5m.01#h`0ҡ&ͦ˦~ 7y?"1>IQ;WYXTMD7)c y׳[ԧi 򬲴E R+39EN4UXsYV8QH=d0w![߬LYzm!œ;$83 @JRWYcXTLB6N( \;̼粽oP6G ,:6FVOUYQYcVkPGR<.& ,*H/%Օd5&4FAK;SWYXoSKA$5&^!բǤ(C`΍ݐJGe.;LG(P?V>Y*YUOF;Z-% hiܯͼ⭛wpgȴI'6~BLSGXYWRJq@3%>pHy+ S*2O /7=[HPVdYXbUNtE9+x R7z*>m)NV `)7CvM}TXY[WRI4?52#wcR٦ϩ߯ʸ.Ķ"g1>bIQ!WYXTMIDI8>*N 3D h ҬrҾlٹN *8DXN UXqYV[QH=0! IђPQ⹈9ӅL2$2?eJkRWYpX;T M C6(7Y㫕oh{r̃s 7,A:E)OUY]Y{VPG<:/3 GqM:Ʈ$֪0`%U4A[KSWY'XSLAp5'R8ESʨ3oOX)..; GO!V8Y0YVOFL;-=y2 vefk'C\_,p'55BTLS:XYWR-K@4x%5tԏºW:xd /<HPVZYYyUOE9&,x %ے̼>MXgSTי&n ),7kC:M_TXYmWFR'J}?2#6p%8Ţ3ᦶ_rk)2"15>(IQ WyYXT ND8*$ Xˈ@bEˆU )*8DNTXyY WQ+I5>18"!qs_Ìߦ1;$o8#2y?-J@RqWYXaT9MhC27)u&רXNeYM<%y &,9EN}UY^YVPH:,5 p qzin _ɑ; (6&CM?TnXYWgRiJ?25$G;ӈ޹N릱NL!0=HYQVpYXUSND8* UfԾsѬ h槀 @,R B*D8NDMTXY"WQfI}>j1",̸ޯЩݦTaċ }y#:20?IR]WYXTqMC7f)_ Jʘ'j=,}5ڦN v+9mEN_UXjYVPXH7=/  W*0·S ({Fn;%3n@JRWYLXSLxB6'"H֚dvpܭmf !^-:FOU(Y@Y=V+PJG;g.D FݯΗ\䨂E%ǥ#^&$5AKuSXYW@SKEA4/&i#3@..!.N1";~1zΦ̦% 0`b"#1>IQCWYXTMC7)5 ^PݽM˧j(Ŵ7pE {+R94ENCUXmYVQH=@0O!-y߄.Jkx:Ÿf4$W3.@JRWYZXTLBj6,(~*ȰѲqõp[ r -:PFnOUYNYSV_PG9<.k嶈7ӱ^SLվ+\&4cAKNSXY XbSKA4&3e|Մǂ>kǶΰq6m.! 0X=qH QVmYXQUNSE9+J [4j7%p. )7CMTXYPWRI?2Q#QcH; ϦȦ֩QD"1>IQ+WYXTM.D$8*+ Q٦ ldެ쾔 zK +9DgN UXsYVNQH=0!r5qV̰[ӳr_$3?|J}RWYlX+TLC6(bm8 ̫iu,Ͱ۝B _,e: FBOU YTYsVPG~</ bB]+#*媝`0%4A{K(SWY XSLAP5&,Zû%4P{ܨ?iN\  7.;(GP+V?Y(YUOF);-[J}dzBhȂW'5QBkLS?XYWRK@3O%t LoƣDE / =6HPV`YXpUNE9,R ḳCHlftQ 3)O7CQMlTXYiW0RJ]?h2#Jňn ߦǯѣMb"41X>?IQW~YXTNnDw8r* .\a0g\=˴~ L*8D3NUX|YVyQI>0 "GN7s;]Od $2?HJOR~WY~XKT+MEC7(Gu׎4;ib]VܿL< P,:EOUY[YVPH
g.K\t0VЋ w{/$?KmTXYTQL@0; C ,ǦȪ h0~U-V=IJSXWYUMA2 Ӑo쬎ñqS (+;HRCXwYRVNiC4I#/>ttaȻQʐۘE(9\GQWYVOE6%(_e{j{)\F(&7EP6WYWQF8'@`jUl:hh ׷gq$5:DiOVYXRH:*R˘/h%Q!"3B7NUpYnXSIo<@,AJ_DggX{¥w 1@L4Uj.I[v*[Љ u}/!?KiTXYTPL@0= > 1Ʀƪn/S-]=AJSXYYUMA2 ӗkűoW.+y;HR?X~YKVNiC4O#)Ctx\WʍۘD(9aGQWYVO E6%(^ggè{(\F(&7EP>WYWQF8'>`jVm9ik׺}jp$5;DgOVYXR H:*{W˕/h%L#"3B9NUnYqXSIho.B]w*[І x|/ ?KfTXYTML @07 E.Ǧƪ n-Y-T=JJSXTYUMA2! Ӑr笒DZlX )+;HRL_Eei[w«y 1@L6Um.E^t-ZЃ zz/$?KgTXYTKL @09 D/ŦȪ f5[-S=KJSXTYUMA2 ӗl쬏 ɱjY'+~;HR:XYKVNoC4S#)Aws]Xʋۜ}K(9^GQWYVO E6%*\i鮂cɨr2SM%&7EP>WYWQF8'Aaf\ p:gd׶fq$5,<M`DfhZ|§y 1@L5U?YXSJ@>i.I\t1 `Ѓ |w/%?KjTXYTML@0; A 3æɪ h2Z-T=JJSXQYUMA2 ӕlƱlX++};HR=X}YNVNkC4H#1eh ׻|is$5?DdOVYXRH:*S˖0i$K&"3B4NUkYsXSIlh.I\w,]Ѕ v~/?KiTXYTPL@09 B0Ŧɪ m.^-Q=JJSXXYUMA2 Әi񬋧 ȱk[&+;HR?X{YQVNkC4G#4:qneɻQʐۗH(9ZGQWYVO E6%&bb{gƨt2SJ)&7EP:WYWQF8'?_mRip.CZx0_І t/?KgTXYTML @0; A1¦̪k/Z-Q=OJSXVYUMA2 ӕn꬐ ʱh](+;HR=X}YMVNjC4I#0WYWQF8'B^kT o9fd״er$58DmOVYW!RH:*T˚(zʧb'R!"3B7NUkYtXSIkn.D[y- ZЉ w|/!?KgTXYTSL@0; A2Ϫ!g2X-T=KJSXUYUMA2 Ӓn쬏ȱj\*+};HRAXzYPVNkC4J#-@subɻOʓەH(9]GQWYVO E6%)^g~hèy-UL$&7EP6WYWQF8'=dfVj;gf׶hp$5;DgOVYXRH:*U˖0ŧc)O("3B5NUlYsXSIin.GVz/VЌ wy/%?KjTXYTSL@0; A.ȦĪl0Y-T=HJSXXYUMA2 Ӕm ˱jY'+;HR;XYLVNlC4J#/>sw\»Tʏۚ~K(9aGQWYVO E6%'`e뮀gèy+XK$&7EP=WYWQF8' GYpQf@cd׳fq$5=DcOVYXRH:*~T˗.ħe'L&"3B6NUlYrXSIj>l.Car+UІ {x/$?KkTX!YTVL@0; B3Ϊ#f1}U-W=FJSXYYUMA2 ӑp묏 DZmX -+y;HR=XYGVNfC4L#,@sv^ĻTʎۚ~L(9^GQWYVPE6%-]fzlz+WK&&7EP:WYWQF8'=cgY l,?LbAhh]x©w 1@L7U8YXSJ=>h.LYx)YЈ v{/$?KiTXYTML@0: D-ȦȪ k-Z-Q=LJSXUYUMA2! ӕnꬑ ʱh],+};HR;XYLVNiC4J#/>ux]ƻQʑۗE(9_GQWYVO E6%+\hꮀeǨu.WI'&7EP>WYWQF8'A^kVg@ch ׹gq$58DmOVYXR"H:*~Y˓1çg%M'"3B7NUpYoXSIhkfZy«| 1@L7U;YXSJ?>i.I[v,VЊ x}/ ?KgTXYTPL@0= Cѻ 1Ħʪk.~V-Y=DJSXXYUMA2 ӏs鬑 ɱlX&+;HRBXxYSVNoC4I#28vs_»Xʉ۞}J(9]GQWYVO E6%(_e~gŨw-UN!&7EPCWYWQF8'@^mQi=ei׻fs$5>j.H]s-WЊ v}/!?KfTXYTOL@07 D -ǦǪ j0X-V=GJSXWYUMA2 ӑq鬑 DZlZ++{;HR>X~YNVNmC4L#/=vu_ĻSʐۘG(9aGQWYVO E6%)^f뮁cɨu,YG(&7EP8WY|WQF8'@]mS li.I]u/[Ѕ yy/&?KjTXYTJL@0; B-ɦŪn-Y-V=GJSXUYUMA2 Ӑp쬍 ʱjZ*+};HR=X~YMVNlC4K#.>vtaŻUʌۜ{N(9]GQWYVOE6%(ac~fŨz'^C,&7EP>WYWQF8'A`gZ k;ge״gq$5:DkOVYXRH:*V˔0ħc)P""3B9NUnYpXSIni.I[w0 XЇ yz/#?KiTX YTRL@05 G2¦˪ j2Y-V=HJSXTYUMA2 ӗk ˱h\*+;HR;XYKVNdC4F#1=tqcŻTʏۗE(9\GQWYVO E6%+]g뮀fĨx,WM!&7EP?WYWQF8'?aiW o7kj ׹hq$5:DhOVY XR%H:*}O˝(}Ƨf$O%"3B5NUkYsXSIhjg\uªz 1@L6Ub.P[w)YЊ q/?KiTXYTNL@0> ?/Ħ˪ h1}S-Z=FJSXVYUMA2 Ӟd󬋧ıoW.+x;HR=X~YNVNlC4L#-?x޷qeʻOʒۗF(9^GQWYVO E6%.Ziꮁdƨw,ZF)&7EP8WYWQF8'=fb] m;fe׵gp$58DkOVYXRH:*U˕1g&K!"3BLaAig`s©{ 1@L3U?YXTJ>>k.F\s4ަ XЊ yz/%?KkTX YTTL@08 D.Ħ̪#d2~Q-[=DJSXYYUMA2 ӏt嬓 ʱg],+|;HR9XYGVNgC4O#'G|rx\ûTʏۗE(9\GQWYVOE6%%d`}gĨy*\D+&7EP?WYWQF8'B]lTh>ef ״au$5;DjOVYXRH:*{R˘-Ƨc(P%"3B5NUkYsXSIjl.F^t,[Љ wz/%?KmTX!YTSL@08 D0Ħʪ l,~T-Y=FJSXPYUMA2 әk쬏 ʱjX ,+{;HR9XYFVNkC4O#*?yܷw^ȻNʕۓG(9dGQWYVO E6%&bb}h¨{'`A-&7EP6WYWQF8'>bhX k=bc׷~iq$5i.J[u0 ]Ў u|/#?KjTXYTOL@0> ?2æ˪ g3U-Z=DJSXXYUMA2 Ӗi򬈧˱h\,+{;HR@X{YNVNgC4H#0=uu_ûWʋۜ}K(9[GQWYVOE6%,[j鮃_̨r1TM"&7EP;WYWQF8'B^kTg?cf׳dt$5g.K^r/WЍ x|/ ?KfTXYTPL@06 F1ĦȪ n-\-Q=KJSXWYUMA2 ӕlƱmW%+;HR=X~YLVNjC4L#-?tu_»Wʊ۝~I(9^GQWYVOE6%.Yk鮀eŨy)]D+&7EPDWYWQF8'<bjSm:fd ׹|ln$5:DiOVYXR H:*~P˜)~Ƨc+~L "3B9NUlYtXSIki.Gap0YІ w|/!?KgTXYTRL@09 D2æʪ o,~V-X=GJSXRYUMA2 әi񬈧 ɱlW )+;HR=X~YNVNnC4Q#'D~rzZTʐۙK(9`GQWYVOE6%'_ffĨx-VL$&7EP6WYzWQF8';dgYj=fj ׹hp$5:DjOVYW RH:*zQ˘/l#K%"3B5NUlYtXSIjp.D^r.YЅ xz/%?KkTXYTPL@05 F3¦ͪ!g1Y-U=HJSXVYUMA2 ӓp鬑 ɱjZ -+};HRYXSJ?>h.K[v,_Ї yy/$?KfTXYTOL@0; @2æʪ k0Z-T=IJSXUYUMA2 ӎrꬎƱnV '+;HR8XYJVNiC4J#/=x߷u_»UʐۖF(9]GQWYVOE6%-ZjhĨx+ZG)&7EP;WYWQF8'A^kVi=gj ׺}jn$57DkOVYXRH: *V˖.h$P$"3B4NUiYtXSIni.F_u1VЉ w|/!?KfTXYTPL@0; A/Ŧʪ m/Z-T=JJSXUYUMA2 Ӗm묐 ʱh\'+;HR?X|YMVNjC4L#,Btu^ûUʎۚ~J(9_GQWYVO E6%)`c{ièz)[G(&7EP;WYWQF8'?_kU m:hi ׹gr$5LaBgh[x®u 1@L;U9YXSJ?>j.HZx,WЈ zx/(?KqTX YTOL@06 G/Ŧɪ i0Z-T=IJSXWYUMA2 Ӓp鬒ɱh\,+};HR>XzYTVNrC4Q#)C~s߷z]ŻRʑۗJ(9]GQWYVOE6%'ad~fŨw.UL$&7EP;WYWQF8'D[mV o:gj׼{kn$5:DjOVYXRH:*zU˓3h#N("3B9NUoYqXSIim.E^s.ZІ zx/&?KkTXYTRL@0; Bѿ 2ĦȪ j/V-X=EJSXYYUMA2 Ӗm묐 ʱh\-+|;HR7XYKVNlC4N#+Av߷w]VʐەD(9\GQWYVO E6%+\ggèx,XJ&&7EP>WYWQF8'A^mRi=ef ׶du$5>DfOVYXR"H:*Y˔/j!S""3B4NUkYsXSIlLc@if\v­u 1@L9U;YXSJ9>o.E\u0 [Ћ x{/!?KgTXYTPL@0> @.ǦŪp){S-Y=EJSXZYUMA2 Ӗk﬌ ˱g]-+z;HR=XYIVNhC4J#/>qx\ĻTʏۗD(9cGQWYVO E6%)\g|j{*YH(&7EP:WY}WQF8'=bhXi>ej ׺}ir$5=DeOVYXR!H:*|W˔0ǧc(M&"3B3NUnYnXSIp<>,>Mc@gj`s¬s 1@L8U:YXSJ?>i.I_t,XЈ zy/%?KkTXYTRL@09 B.Ʀʪ h0~X-U=IJSXXYUMA2 Ӑr鬑 ʱi[ )+;HR7XYGVNiC4N#*Bt߷u_ŻTʌۜ~J(9`GQWYVOE6%*]f~hèx,XJ%&7EPBWYWQF8'=biUj;ij ׺}jp$5@DbOVYXRH: *X˒3§g&J("3B:NUmYuXSIem.E[u3ߦ \Њ v}/!?KiTXYTLL @09 B0æ˪ k.U-X=HJSXRYUMA2 Ӑq鬑 ͱg\/+x;HR>XYLVNlC4L#->pv^VʍۙG(9^GQWYVO E6%)`c{hĨz(]C,&7EP8WYWQF8'@_jUji.I\t.ZЇ zw/'?KmTXYTOL@0= <1æ̪!g0W-U=IJSXVYUMA2 Ӕn묐DZj\(+|;HRDXxYQVNoC4P#)Ctsa»XʋۚG(9[GQWYVO E6%%c`yky,WL"&7EP=WYWQF8'?`iW m:hf ׸}kn$5m.GZx- ^Ћ wy/&?KiTXYTTL?0= B1æ˪"g1Y-W=DJSXWYUMA2 Әl쬍 ˱g[ 2+u;HRAX{YNVNjC4L#,@v߷sbŻTʏۗG(9^GQWYVOE6%-]e|ièw.VL#&7EP9WY{WQF8'D]kV n9gh ׸~io$59DhOVYXRH: *T˘.çf(N("3B4NUpYoXSIm<>,;N_DggZxªs 1@L9U8YXSJ?>j.G^r3ަ]І zy/$?KgTXYTRL@08 EѾ)Ϧm.~S-Z=DJSX[YUMA2 ӗmꬑ ɱi\0+x;HRYXSJ<>k.I[u1 [Ї v|/"?KlTXYTPL@09 Cѿ 6ͪk/W-X=EJSXTYUMA2! ӎu嬔ȱjZ*+};HR=XYIVNkC4P#*CuqbŻUʍۚ}N(9VGQWYVO E6%*^e}gŨw,ZG(&7EPDcOVYXRH:*U˖0l"O!"3B:NUlYtXSIgk.Edp.WЍ xz/#?KfTXYTSL@0; C 3¦˪ k.~V-W=GJSXYYUMA2 Ӗk񬉧 ƱnW -+{;HRAXyYRVNnC4Q#)C~s~X»UʏۖE(9]GQWYVO E6%*[k箃bɨu-XG*&7EPbgYki.JZw*WЋ zx/&?KiTXYTOL@0< B *ɦƪ l.W-W=FJSXTYUMA2 ӕn묏ȱi\(+;HR;XYIVNhC4M#.q.A\w0 ZІ |w/%?KfTXYTQL@0; B4Ϊm)u"O-\=CJSXZYUMA2 ӗl묑ʱf_&+;HRLd@jdXzª{ 1@L5Ui.H\v2 ZЇ }u/'?KiTXYTRL@0< Aѽ 5̪l,}T-Y=EJSXYYUMA2 Ӕn쬋ϱf\++{;HRAX|YMVNgC4J#.>w߷rcɻMʖۑE(9ZGQWYVOE6%$f\wkèx+ZH'&7EP>WYWQF8' C^iYj=fi ׹hq$58DnOVYXR!H:*zY˓/§i"J*"3B5NUoYnXSImb.PYw.ZЉ t~/!?KgTXYTRL@06 E -Ŧ̪"f3Y-V=GJSXWYUMA2! ӓnñqT ++;HR;X~YOVNnC4R#&F}ps_ûUʌۜ}L(9[GQWYVOE6%*]g~gĨx,WK%&7EPk.GZv2WЇ w}/!?KjTXYTPL@09 Dѿ 2¦ͪ!i-~X-S=MJSXPYUMA2 Ӕn쬍 ̱g]/+y;HR?X}YMVNlC4R#'Cu{ZûTʎۙI(9]GQWYVOE6%.[gzkz+YH'&7EP:WYWQF8'?agZ o:gj׽|iq$5:DiOVYXRH: *Y˓0ŧd)~H%"3B6NUhYxXSIiYXSJ>>i.K\r0YІ zz/"?KgTXYTQL@0@ =2Ħɪ n-^-P=NJSXVYUMA2 Әj﬍ȱjZ++};HR>X~YMVNgC4J#.?uv^ǻQʒ۔D(9aGQWYVOE6%)^e{jz-VL"&7EP9WYWQF8'@_jW l;gg ״ds$5:DiOVYXR#H:*}S˘-Ƨd)~H""3B9NUkYuXSIkkfZz§{ 1@L7U;YXSJ@>g.KXz- YЉ x}/?KhTX YTSL@0: Bѿ 1Ŧɪi0U-X=GJSXTYUMA2 Ӕn쬍αhY ,+|;HR?X}YNVNlC4M#+B~orbĻUʌۜ}K(9^GQWYVOE6%)^f뮀eǨt/WH*&7EP?WYWQF8'B\pNj;ii ׵bv$5?DfOVYXRH: *S˗/i$N""3B9NUnYrXSIgi.HYw,SЎ s/?KdTXYTRL@07 C.Ȧƪ k1R-\=EJSXQYUMA2 Әj𬋧 ʱi[)+~;HR8XYJVNmC4N#->tt_ŻRʑۖG(9bGQWYVOE6%+]ggŨv.VK%&7EP=WYWQF8'>aiUj:ih ׵fq$58DkOVYWRH: *R˚*Ƨd&Q&"3B7NUjYuXSIlh.J[x(WЊ v|/"?KhTXYTPL@0; A.Ŧ˪!h0V-W=HJSXRYUMA2 Ӗo謓űnY)+;HR>XzYSVNpC4N#,@tqbƻSʎۙI(9_GQWYVOE6%-ZifŨv.XI'&7EP;WYWQF8'A`hY n9ii ׻}iq$5>DeOVYXR H:*|U˕0ħf%Q"3Bf.KZx-VЍ xz/$?KlTXYTQL@0< ?-ȦȪ"e4X-V=FJSX[YUMA2 ӛh﬍ ƱmX ,+{;HR=X~YLVNlC4M#,@tyZXʋۛI(9[GQWYVOE6%*\ifƨv.WI'&7EP?WYWQF8'@_lRj9lp׾{jp$59DiOVYXR H:*Z˓/ħg#P""3B:NUoYqXSIkMaCek]u­y 1@L7Uk.F^v. ZЅ z{/!?KfTXYTML@0< Aѿ,ȦȪ l.U-Y=FJSXWYUMA2 ӗh󬇧 ɱlV ,+{;HR@X{YOVNmC4L#->qraŻUʍۚ~K(9\GQWYVOE6%(`ddɨt/UK%&7EP>WYWQF8'D\mRj9ln׸bx$5DD^OVYXRH:*}R˘.ħe'O&"3B6NUkYtXSIki.I]t0ZЃ y{/"?KiTXYTPL@09 D 2ŦǪ n-Y-U=HJSXUYUMA2 Ӕo鬑 ɱj\++{;HR=XYJVNhC4K#/=x߷qcŻTʐەF(9_GQWYVOE6%,]f뮀fĨy)[G)&7EP=WYWQF8'>_kU p7ji ׺|lm$59DiOVYXR!H:*yV˖.ħe(N#"3B7NUoYpXSIn<>,>J_Eej[z©x 1@L3UBYXTJB>i.I]t,ZЈ zy/#?KgTXYTUL@0: B *ɦȪi0~V-X=FJSXZYUMA2 ӗm̱i[ ,+};HRDdOVYXR"H:*xT˕0ŧd)H'"3B5NUjYtXSIkl.HV}([Љ v}/?KdTXYTQL@09 D4Ϫi2W-X=EJSXRYUMA2 ӕm ƱoV *+~;HR=X~YNVNnC4N#,?tpb»Vʌۜ}L(9\GQWYVOE6%)^f|k~(YK$&7EP;WY~WQF8'=akSn8ji ׺}jp$5g.MVz-XЂ w{/#?KlTXYTSL@0B ;.Ŧ˪!h/|V-V=JJSXRYUMA2 Ӗm묏 ʱiZ'+;HR?X}YNVNkC4J#.?qs_Yʊ۝}K(9\GQWYVO E6%)^fgèz*ZG'&7EP_nQg?di ׹fs$5,9Si;nb[v©~z 1@L;U9YXSJ=>k.HZw.[Є xz/%?KjTXYTSL@0= @ѿ 3¦˪j-{R-Z=EJSXWYUMA2 Әj﬋̱g].+y;HR:XYHVNiC4L#,At߷y]ŻRʐۗC(9bGQWYVOE6%,]e}fŨx+[F'&7EP@WYWQF8'<cfYk:ih ׺|ln$5f.K[v2 [Љ r/!?KiTXYTSL@0? <5Ϊ i0W-U=JJSXYYUMA2 ӏq꬏ ɱkY .+y;HR image/svg+xml wiRedPanda-4.1.12/app/resources/output/buzzer/BuzzerOn.svg000066400000000000000000000361421444020206400235710ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/output/counter/000077500000000000000000000000001444020206400214225ustar00rootroot00000000000000wiRedPanda-4.1.12/app/resources/output/counter/counter_14_off.svg000066400000000000000000000162511444020206400247650ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/output/counter/counter_14_on.svg000066400000000000000000000160771444020206400246350ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/output/counter/counter_a.svg000066400000000000000000000060321444020206400241230ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/output/counter/counter_b.svg000066400000000000000000000060751444020206400241330ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/output/counter/counter_c.svg000066400000000000000000000060751444020206400241340ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/output/counter/counter_d.svg000066400000000000000000000060341444020206400241300ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/output/counter/counter_dp.svg000066400000000000000000000061271444020206400243130ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/output/counter/counter_e.svg000066400000000000000000000060751444020206400241360ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/output/counter/counter_f.svg000066400000000000000000000060741444020206400241360ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/output/counter/counter_g.svg000066400000000000000000000060331444020206400241320ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/output/counter/counter_g1.svg000066400000000000000000000063011444020206400242110ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/output/counter/counter_g2.svg000066400000000000000000000062761444020206400242250ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/output/counter/counter_h.svg000066400000000000000000000063461444020206400241420ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/output/counter/counter_j.svg000066400000000000000000000063411444020206400241370ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/output/counter/counter_k.svg000066400000000000000000000064221444020206400241400ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/output/counter/counter_l.svg000066400000000000000000000063521444020206400241430ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/output/counter/counter_m.svg000066400000000000000000000063521444020206400241440ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/output/counter/counter_n.svg000066400000000000000000000064221444020206400241430ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/output/counter/counter_off.svg000066400000000000000000000126511444020206400244610ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/output/counter/counter_on.svg000066400000000000000000000131061444020206400243170ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/output/led/000077500000000000000000000000001444020206400205075ustar00rootroot00000000000000wiRedPanda-4.1.12/app/resources/output/led/AquaLightLed.png000066400000000000000000000050341444020206400235230ustar00rootroot00000000000000PNG  IHDR@@iq pHYs B(x cHRMz%u0`:o_F IDATxܛ[lW؎nvJDT%U)H Ԫ @ O@Zj%$mAmZM4u\ϙٗ3>Nli4gfEU8r-]z⩿ꥰ$ {T$ :>K :bBփdǠMHDv8BD$k <>Lt4ϝH9DG ]+"5zp|$yL[ hӀ-!RDXmh$kuS;RG= ݒ^ \~sE%MBJ1nn#z)|x ;7\ITp$$ >zQ`+pA`C!v % yy0, *WR-}t>\L:aV7@@ @ÜyHK cGWQh0, E>\Uz`&~ -q +> -6 F. Iq ii*UaIH.|1{{.\xvL'_L @B؃s{@&1nf_ " .;Qv8ۗ- Ңk[q~?:[&oli7K@Q*o»f%ju"&`7𵲷 $'1ù:_&D2|a{/A!2XOA@~ C' EB/ *{Pv𗺵 ވ_n,mꐮ`P{+룾2H&w6Vx_~Q~_N*5izJ . ꡰ.V00=: A1G}B'b.d2o t}jΖ7嵊\K3v\t5ߤK7I *ng[$feo"HlBhſI=G!l * ?nҥ:ŕ_ Ʀ~ Uay?bP|o)@g :?^`FF-n2@2oDAV`!4 Bdt|)`pKt)˕0+Ì&&7}htn\ Hj;*@ۆ޷ 26Ul0,BWlP N1I*!d,3xNr=Q" !fP.OP,蹞 (_#ozM_?^恶% AAɞj(da(WT@Hg AVpnA$ZjFO4Iug*wG[ wFɾ@ΙWźVp㫠Вu3aeY:@BxDԟݘޗ՟ey@c ##H3;ѮAǑs{?H3;Ih7)QxRsE( ښPyQ}. +{2h1Y:7 (ؼ7 x BY:,?`/qz,&~&!ٱVUg\."HAU <;&!<'~ϰT*ЫjIɚ'2Sfp^Ͷr]qq&w¶}UT@yaps/(=c[m$yW_~3; ϗ=_7.(]7=wܠ'yX Y*rZZEhxv ɚkO DڳB4o"YsAɨDEsH,U%2L_1֞~h}QߪP#aW;mҥb(*A 9SѦI0Yl^@QvKGŹ5aUӵkqm$_՗$'MWDlbl<2 'ƃ6G+_0eI7EM/ٹ'_͔2 Knnfٻa[dFI&QQi[Uu[)'sK(x__̩i.[ SJB\FɩfirŹԺTH2&Fc"5Ie*UhU_ Jx{N;GP+(wL/оd{ Wm.RC5.~)w } \G*P @kF^a cχzM7QSPl|o E5't-=rwx뵇x6O !_&Wմ#mIENDB`wiRedPanda-4.1.12/app/resources/output/led/BlackLed.png000066400000000000000000000031151444020206400226560ustar00rootroot00000000000000PNG  IHDR@@iq pHYs B(x cHRMz%u0`:o_FIDATx]hU3MS5-QZ6X"((RZPD|",ď*'ј6vfƇ9^wff7;lv{f9^E!2Gz@a㿏:EHfѳ%u;ڗϾA2B9dDF v a#iM 0g[@`5"LoQ:aҬ؊f` ppRVe`QkhGEeӁ+ˁ '5ӿsB²=r-RW3]k> V6pXѰF+Wş/n88C>߷)`'cf74p&tJ5ӂzl`n)i~TpxC԰ y 0Y@#y`c!j$!gp0pȼ6|#ʘ)FL ÃVY&/Eψh%A;\Dz54`;s # wʽ^}|AQǧv[/p&,uItT.Ao[wpkr=FL5ct]췸i' v ؛'LWo8v+p{dPI[O^{( {ܳ3 m〟,ml*HuEfZo‟뎂ϾvDPMnNz6Hr2,6"s](vYy(Q[2KHPЛESB,hԉX7Rm.,m P[Te%,ȓpe)@ߚ,!`FOR'%$#<@LYlx79/*pUm" ԣyWa("aOa {U CU2"s/oWEy{V|gx.-Os$QX0^("g}N3!(6|< $D_%!7H uQ@| <*dP/3]BY ];p.˩u:9 P$&Lo$~颩HcS89+ǃT$#B@%(/ image/svg+xml wiRedPanda-4.1.12/app/resources/output/led/DarkRedLed.png000066400000000000000000000042751444020206400231660ustar00rootroot00000000000000PNG  IHDR@@iq pHYs B(x cHRMz%u0`:o_FCIDATxKGUݳ&!v1Hq8< bE$ nBp R$\@H  rn!"!H)JD`ǡgj{gzvgvwZ=3=]JDؽ{7+Q$"2p>P;rUȰ("`9&?39 u3w),5!Y][ݵ`(I0O-98"LBL>; #b Y[Og_ `JBDsKGG%{' Oܽ{VN`sGΟ?|SBҫ)Ce{L*.\.B8Hr[Y> ^qH<`P%ϥ68 M{J{S~I#r b`ֹu׀?:5J%A/|,y--` f2ڙKpUNp{C0g.wm /$=M}w@M^ni&Hw%v!W OPuH57 7[n«+!)p+km&&Q]S%;pmx!fWmW]ݚ>=@o:#.0.&n>0:@|ZHP-_wuk ~DTWkY&&!A+A]B`_FBCh=\Z?Z=O+>Zn+m^/SAC? T+v#doOA} ^oP7vp V}B^q@Vd1-L A z`ײr)Ԗ8sn7ݣ!bUnPA;Qa j(0+u oeƤ+C0 '9Cl+` mZ\=H68 =y0L#@sc* (`,U=l+l\MI% t{77ŝZc ܯ{tU@m;8#vO4w'2VTŀ;à^@$ݾ4N#B'=_;(\>2V*H uSV Z:pTP~bv_ը,x/~, *vYK;OmU ynp?CcӔJ "lݓ'5, +{ y?-XF'DBb!Q z$30aS&!,`Ok)z,7! K!]ƃpI f)̯|/H`f7*/蹧f|Wӈ鳨܍F^/p|JoXSs4 z~@= J2%,sX`Fm~%_FdwC[DC0$@d@gv𲙀4O+Few*{r"2**,M?3:ۧ"IENDB`wiRedPanda-4.1.12/app/resources/output/led/GreenLed.png000066400000000000000000000043271444020206400227100ustar00rootroot00000000000000PNG  IHDR@@iq pHYs B(x cHRMz%u0`:o_F]IDATx[]GsN[s4éP&iTSS// ^hި >EkBAEP*>i *4MN.MNBRs;g}>Yg^g۹80̾o[3صkKQl;}m)gv}^oKEHXdij(WAZYSBS_K:2jNS2*I:դ"",ԫbch >mZ5Q4T6b;6:9COGgYҖd3 aSx>> ^ Ih&*+ aS#=<|XYcRiίl>IxUH{G5F, bE_pЋyNLAIs_J}XGh{n6vh]]$r XcȝC.o:ܩh/j(U0G娯/~+_o;qTor!yp;K`2) :_| հ еoILe![ {wDgؗD^뎞$}ZF3lCW/4.Dll͊$~H觷VϷa`C)*Y؇McFc_|2)ö͗| cm3ld9CB7Ho11`3ٰľ>^[]eo2IzwCSp7"JT51vs OiŨ ֤'_ <*qMAakyA ~f8pkv9[ V:'KJ7W{GTlmqmY4vn~@zxo:0f3oqcR2w3O(N~@: !yMs|>% eWCLA ({Za=;@xe{N.&!u,bja# }ȱT Ʈ7 Y  =X/,i PXK'Y;@|$nygs~OP'TKkM_kdoJU`8;\Igf)A_K@bg'MҶ(efe2<6i?zY:lgM*Q^ˇLj"I@&Vכ4U.݋qi;Im/ȗz9maC["Zӥ@SbZa- l&^oPR<vO+zYc1bqM+ :B[mkjNϬ0#JE/~) XVOJ:fךDv-9脢Wl"kssL9IG}Hc<J #8\y")Ee=t^jLk`M9A~q&;.gJ"l;8I 4;Э@nx 鹔CVBL腿7}ИDɼ;4w3~<`;)= ũ a䨃yU1UYC BDQ'%pae7(J-' t݉*,E#Cz(zomQ- F7TIENDB`wiRedPanda-4.1.12/app/resources/output/led/GreenLed.svg000066400000000000000000000067341444020206400227270ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/output/led/HotPinkLed.png000066400000000000000000000044401444020206400232200ustar00rootroot00000000000000PNG  IHDR@@iq pHYs B(x cHRMz%u0`:o_FIDATxKGS]=I c<@Ŋx)E; ! X)6 $D Q%$ !pq}}âgj̝wcLIG?NU`zz(y@?}>];v.3`|].BRC@ Rd%6PGTs!$ŽxXMPs UyptA-U"ŽQUan@oWYgV(-5ZT616[wS~P=![K2D,H!FP \?1 |8 xӓTn$^t \|X[F5_y8aO³mUF%.|){Oy d=)kD"d-B>\.*H{ۑ$/| ݵ(7)vm 7Ȫ6٭!pһ oJUG%,|[k. VS(;PQہZ:nFeϿx۰(/Jo n!ۮ؍^l \emGWվG-@aH0C*7P@K | ٝ(wfMGÐ`TI U Cb,W2_Sކm όD)d|YאD e ô3dSFm(RkHv/{os4_<0נ|-Y.UWQ]`n;8m5#Aȶcu*8,S}5 L/ h1k](¼N3Б\KϏ+OzaNP7)kmDLgвKpAq 1mä6 "m>}x?FmL).>H&K7υq ?ڃjh}ؠ=MX&[ 7E[@\}eA'Xу%֫P[+6^\7hY11 `+kPo tlpU\j]E߂+1˺Mgi< i\(fZsI:xs44פ撉ʆ(`D>@ʒ~1/ŭN72cmx &P@UVZVK1@|s%Z7mVsUIENDB`wiRedPanda-4.1.12/app/resources/output/led/LedOff.svg000066400000000000000000000052741444020206400223770ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/output/led/LightGrayLed.png000066400000000000000000000031601444020206400235340ustar00rootroot00000000000000PNG  IHDR@@iq pHYs B(x cHRMz%u0`:o_FIDATxmU3;ww]RSH2W ")*2{aQ 92?؇B$?| * ̢,umk[KM{?ӹ}af{9 8`֭4ɂ*f4bppɀ7s! (2 СC(^!#n5|B谮}$ֹd>N*noۀ#ҹ,nK?FOl6Z]#S؂Ν@? 8X{A`8IlȠ^Sˀ*wc@AdGD„b-JfޖN`p5p9C; U"}ਾ;g0lF t=KS 0E=:"`1nYIfH Zm깅:K;0,>ޒ&jL8_b/EQKQH2XΓiu|vl)EB!J ?X ,LxNJA1;uJʓ޶jp֥iE"~zFownR`,VS+M_E]ܣs\ pzpk<d(]l(TJmj{E7F@Ac)GVxFe! 7~ 7/VeZnW.*6O]\KJٽq 0ugόTY0n)nP];/H=H; &:K*؉@ %Caق,o9$$bG L 07J9$|s8 `fxj )h 8RMvŁ+ӧ+*#M`D>;A:| )(&Um6bk`H0ߦ`XmL_sooX^52ejͽmx,΢m*\$DA6~`6/EBxZ m~S@iwxXnP:J &-~xriW~b`;2(bBIm:<|H %Yt^ORM[_-$!7"7h*V;Fg4<s~LA8ɾO3`IjqAH67nP{_Hf^&)=Y*!V< !)o/%)j}d:l0OYau xdi-ɦ }fc[j@L*x$%^vMT3]c޽֐>TyPٮ!-}ݢ:k')\d,}ѐܥ{g:)7X$܍TYԠh^@)=č<6>)3Q>bԳ EsIENDB`wiRedPanda-4.1.12/app/resources/output/led/LimeGreenLed.png000066400000000000000000000046661444020206400235250ustar00rootroot00000000000000PNG  IHDR@@iqsBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org< 3IDATx]l%eߜYH$ˊl/4/ Ѩȕ"`bQM4YIPa!vݶiOOxΜ9gi$ofΙyy}y&r%</&Iw-EW_:>dF緑wZv|X[ₑ*~E20L5XC ԸJ@h7|)mZ5;F;opUm?vrl`rqXo$|˃Lz?g zaۨ獮 V1kqÕɱnǂ^6#\;g΍qv ލ[Kogw&N/fҖg9 tOG| i#N@[Òy7#gYԓ2"JV@?|lŪ@XjƧw foְW Bܶ!o4!/'ٰbW+ x B.fɥS|0bưWlqLxb< 䲁`;%8&\a@)bp JHZj(>oޭx`OϗetzހLA'B?_^Q{-sWڗK-f6ی 8uǃJٟ%43nsnj|k! ZFlpsklu{Qj6c~i_ǜ^ʞ鴩_t'0',(g@%֝+pq)cAtIڏu i|3?+1 @Ij>ҥ0>֧Q ,;mAde W0 @t':o̸y/ޏӤ;) nS7aMbhcKju,%u#2aW?q%2%k9X#[/t{4v4٤ﴌ2ħ#;WVP*k|}ܒ/WJUu.]ʑO$!aNV/L<&W2ت#@=\sF0~AV8[`̸fEWN^ 8몶m'jU [udW@:gO 8vҤ[tƠ=i_9 [xD2hFؐMbH(缺 !%gFY5k^5#Wa|K>{[r5dF$ ԸEtUشLQk܍syk|-3~3;*2vFjH{MaYlhS3ci3- ۭ^ Z㕨:i)j]EHU6Æ 4`Ѐ>U} 45554-3gVM#yGݴ =o?Tvt%!cAGԺG0'F)NhZli{_]D {ōtU.FtfEU[\^SYo'~̶57/ǀ px3pɒ:*TR/,]6 *T#m7O$<\ ̰$e/^^S]p-)a>9b !H޲3;$%/>LY vݴ 7CG\,&oyM:m]:AEV aIf-y-u`P-!#7mv&&'8&-wlB[PԳ_{`JO;p3p wA ͝^t!| l]&ezo@~ f!` r'DG+.mV૶ &o@֟<$;P޶G+ `˶n !"}62&S='$xvtS[k*Wl&l~DTpvGw w+\A ̣x`R@Tȿ&c`>h[nu~A@ AyU*P#A6*x]fcH-VU?k 7>Aՠ vq?r-@/Qãj*E@ h>}\q[ q/ch Tw pףUCnA d׫x pCJ$;v0IWr Ԇwc%=W W Nأv0L#@*@0V*`/j 9.\NI%WhMvn.]xF֑[*`rv&q ԥ si025DXyCym+KŀIsyݛ*~i~U_ w8M | 1RA\s0}ABV_g~C2F*([?_^Ѩ7XYֵ pjKиk}]xֲrQ Ӯ $ZqZ?ݭCAg!̶bjH(luQ貰אQ?ހd!g4ZO$uK(( ;*8 JP3VVQk 4'5=ɟ ]Hg WhŃh Ih[aEd+ |u !="@aH\٧nʋ [>"}UThkwKBKzӫHB~$&Y:w~Y!=C(aȉ;bٲcO} pD<&d8֦ Q-(DžoY (D;*!iv 5DDRoѾkxBl^lVa%)/A0wFGAmp sEdntԅ?t`IUnj;/cKoB]t(CP&A1xR A}0$RKEMjE!=fP/=&Ш#K?4e|  Ba0}=QGgY40}FX8?;KRw/{vD>РC~{a.RHQ aA-oNWl䃗Su!a!"sVgZ_u;Y=C?7G40JB= ˄e:'jۂ$'$bd%Kms&9 Si$w |eMh.38W}H-5#D9%"*r> Ytycey ƽW%~m G{t[g+ n`%]*,MC޿b*%Cj7IENDB`wiRedPanda-4.1.12/app/resources/output/led/NavyBlueLed.png000066400000000000000000000042551444020206400233750ustar00rootroot00000000000000PNG  IHDR@@iq pHYs B(x cHRMz%u0`:o_F3IDATxܛ[GSS={1 :GZA8B kpyE"n h  / $.ȁK(N HرMױז֗CWtewvwfK*tOϩ:uU`ff(#Z5,=~_׊ʠëY Y 2*AH("C \H VJ𹈄IxX2\$Ϥ^SCb6{R&1"ؿ8bǂk".Ewݿ{?};jk/ v3f`w#1x"ǁ-Nsxy/jTK]&[}cmļV|%}v: \$5n~,1/L_܌&b+-MW"f73X}_miwt% _Ɂvz7yˉ{P|6A\φAo x(VwA`{CkUb66jzgcDuhIG>TF :8".Td ]~ŷmߩt$"9߀;{Kwb @>*E$cE*艀Wq: |)X <Tn E*0%}3щ1!0,7~3MʚNo?jm|wtK*Q-*iWA'tHc*rAnGY0S\u`|1?az!3eA {ϵ߹7z He^ *2{[0.r܀ ؙ1ڀl'Oyч0ލ X..%d>R}#FR&F2jcD,b̍X Y?]|2RZcN7K@sǁ%e1oϞ\á^Z/ҌV_=$c\j'L҄HtUеh1/ ?2bNQ| GJxh }涛rEe?-*ȞwΣtو QOTXhG|Z:DyJ6VvvDONY.B4X"9T~ږt# Pi/ A4{+Ĝön-Ul@\oϻe3*8g֨N>nwyTE,eSuGbA| "ZXAt6b^nuOrxɖR Zdu$'^Yo' 6h"V˧m8%P}Qַ"Hx cD\ KeDD=nS"0z T h%^y/QU=54hTpj W'שs/"@"1A塴+r4 ց:j8'ǡǩ]~È9}P@uF*sQ&8j:jDbg!z 8_qچφ ,E1`v" S",DLSPaIZ!Q#\aԑt31 rf(##{sx~^Et7PGY:O)e.UHwY 1 v'V|l.PsBb"vX 6HzjlDNIx\n!ʁ5T"p:/ѺATz|DU9=:DPV2rtYӹkPtϯZ J_YIENDB`wiRedPanda-4.1.12/app/resources/output/led/OrangeLed.png000066400000000000000000000051431444020206400230600ustar00rootroot00000000000000PNG  IHDR@@iq pHYs B(x cHRMz%u0`:o_F IDATx[dEUt\vݝ.,HDeEĨaF/K A}yI!&1jHhb$1 AP^ffgzé]sNwL vrr[WUb+^r RG$ fBd TY;/&cS]^6ȐόKF?+p9y$Oq}!M÷0\ hY c{v 0m \ \\\n?S/&ׁW7{svX6D^rw""j<7/@Ւ9*iMJ=20|& "$JqFB, K@hM^IXm3m>fPl 0 Pi)J!@AS|BI3)m0 <FF$6+0QXfv0ZO,0FVRU~cpҢ'D@ǀ{Xث/ʁ!x$)0Ӧ$LcxYW,ea_-=ޯ!ͫgm$0 {" |4$UK17D݀oDED>/)[mKB[kz`ppt.n:iTz Fw*6V >Ϥc WPQN@D1,>0$t;:]gpW=AeÍ՘/7XKN?DLȷZjz݈( ݳ!䤂Zk 'QWl1&<ȑǀVTvV1>V4Mِݱ9tQSXx|:`U.']0ot^Ј%ݑ'Q}o,,B=՝";˪s6Q+߲Oq+K\:F|mGoZ/l2Sjt"//qu">v>!^]{w"E·|Sfǽ2\Vvm2AޚxY&BZۮݷiV22ND./ZY02:Aj?ҘB|dxk doLǒ 40dbԾ4Vn0=tQ]1-6YWx1H(_xg#fB'quyN L. Eg4$m选a'h-m8!&|Dl0>0`+I(Ɣ3`\):,[>'  dA#AcIci$-o0Hxa~-B2ܲp gcKrhK ~w Mò LLLy|#eiG5_!φ- n YiX(tekLԹO^yaNzL48 &.O6\ad=}w,iYV}qKf!aܫֲPR7t,<81thR0V|ڹq\Y`ZO$u:K 5~*~M׻TV{or<WIBiZD-^. _L와sX<ǕY,qUx砦rL A/)RmlMv9I;1gɀ3|ġ4qF+@aSKܥ+163"R v53 \d҇M/qe!:1[ ~q.} ָq&2?j}*kJ{Jx{ *e2ײlWc"!Jҥ{|CNkO[aH iTpV4(_wy z V劦)|ОJEƤJ@k ` "W\)6]o#S 9q&E4jC+se=ދq_w] +w{/a $Os ᨁ t0sHWx׀s &|Kmc@e!}᣽~{;--2'-# !ݻ| hˍIENDB`wiRedPanda-4.1.12/app/resources/output/led/PurpleLed.svg000066400000000000000000000067611444020206400231360ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/output/led/RedLed.png000066400000000000000000000043421444020206400223570ustar00rootroot00000000000000PNG  IHDR@@iq pHYs B(x cHRMz%u0`:o_FhIDATxKGMLy0,HA!qbe^b@$ X@""  q  A$N@"^{{yqUz{YJ*L?WXtYr9rp}oVpA IOr.pߒ"! }2ID8d~/Y${GDfXDCzCw,7 (k@ \. ~֞"R]#%%` ] Ɓ? LsM#b$K/zy3p71Ț>\^ Hhx*bIE >ls2/;5.5wo)Oi@z1xK0r>Šnx Pq/ ׁkwyt{ J >zYA`ҳ Z=*m~ӿDŽJo5k82;TcPdKΒ7%nzxz&& o߭wer2` =o|}5iᥦC^,(O }/; e^P[< ]qWlHƞ$H*I_ƀ jOغ]-3,"vWW]ʮ> 'U^EA2pq^φNwW | p] A7)o26fS3\!:ohv-Y$Ļ 'T/X?!hl emZ?KE~dlߤ1O_V|od J7ÖD`SKu#;&h ܡnИ>mkjdG^`J*J^GUfCYA?Nz2y.4^j7ta3r#\@p 8KApTP]Z I?ɱs*`g c:$Az fF7yT/w,C) H.ѭsˬ\Gܻ7AYO5F_Zƪ2h[Un.9{ay,ɋAD{(C~0_!w(4B|%)ĩ2WW,@y iQPAC5AΒ,FK(o i//`iӺ]Y!Zg` ynp?@q]$ *زG9 + ykhg[F#'DBiU{Pi? S9PM$s˲^FP]$Cߒ~mZ ayߓ t]ఆ МYX]W|Sך5|W(豨܃Z7'5\$!Y*R$$7fX5k'ț@yx~y,T^io3ڮ4:D^% z:D~ 9 4=~0=BTnx)GR攦_mIBbL@' : | H44OEi2 }WimϿ"/DtX#ɇܞ#)S> lzGJPZr Cj  C3uMIC5JG_ ׻3g(!㭑$AN=ѰIE[ u84 ߁hv%\9O XBtQ7 k >a+onz؈] ]"\4p s#i k6NH j}6~$swA?ݣC:A9Hr_6r lқ|~Rkka9xzIENDB`wiRedPanda-4.1.12/app/resources/output/led/RedLed.svg000066400000000000000000000067431444020206400224010ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/output/led/RoyalLed.png000066400000000000000000000045621444020206400227370ustar00rootroot00000000000000PNG  IHDR@@iq pHYs B(x cHRMz%u0`:o_FIDATxܛKW{ '$ cPL c P v,@H@dBBDl r`b ) qD`Ǒ{aѷoTtϻ}9sۨ*;v`1}M~d.{ ]db.0j*(?wԲƄ,Apo;H"C+$&c>Hx\mT辊N>JTKU|Σ;5 #):p ׸Jkhu6 X 5? sѵ$@ĬIH>E]-3ȿ3d K;"Rd$Kt >}["iɯ|d rx6*IAIHz-/:]HYHAĒh׀+Kƙg#< %!%R#hж(d;$auWM ND+[=BVqwA AI_ \ | 4uj$=%<;*  AjlXvF&^`ANHšNϵD:b5wd+Ri OI5zc$a|AMX|#6+&8ۧJJcf|XآXl|-6ld/duѐ| ugfO>}vtʌ wfW` `H9)A~K^"ޯ|"̠!04y9"zXU*苀 ,nSvZC3 ld*`br~ ?1_Pe|h$U]HB[߉UW-6j .J6˶D*xlۉ$!-$7Mhƿm>mCe_bU[L0b__O° [k&a v$?= n!Pv1C!SmlPj>=LDtXIPu7L xJn- $2<_0Ca1N' ^čW6u`9Zsp ::# ܀ H;0V*B0Z6K H7 PL2aP]}{+@kz0%s:t}JPКSa-MƃCC ymgI=a 8P@%?1 ݌A_S$Wٗ\,4!R\kr:@&T3tz?_\_SFORk?0O D%iVe -/*02+ii-$b٣EÖ9#bM=a )o'R_|]d ̸_u?XdҪ?L,fPdsE.x4& %g|/E.YAZJ-杈NbFG ^3۪QߜA~"HQ2!S4pӈ(k?߶&)LTAm$7`:Ls9G-EM[ĔI wAx4o7a"ed;,r%cjS4hb^^nFK8KV1"_9= _T7;Rٚ62!ZA^-jlH5`wzƟ5Z>[\9$pfGѣv[.o2}(͵Sy;qzJ2䦦h Lir13J5}Wk>UIQahtKrf$bݭ$iʏٞ:n1Ŕ'ښƽK^t5{䣓(Y9Pνy؟r}dAw80Jcw7S"4NM$uG&o;R3o(dQ 2W}CS:>'y'tݍN2X F@P/ځ 8,yIENDB`wiRedPanda-4.1.12/app/resources/output/led/TealLed.png000066400000000000000000000050571444020206400225360ustar00rootroot00000000000000PNG  IHDR@@iq pHYs B(x cHRMz%u0`:o_F IDATxݏ]U33@)m(`).@54%&!?r M4DQ4-PZiz{Ξ5vW>g +~s>AĆy U;;!T^aq)Qp88OX7V7\nfdi8&;d\E^+Ow{-} '` !T%b-$\0x_eKׁ+O3bGth_ h$482?4&%/^/Ew_ v":i ]_@Q H,I`΃t*pxGf*K7ˀGJStiv "p^-J ,{ B &/[}7pat:^] odV )Z!B K_@bC$LMG@hE܋N/ ,[.EC.8dLt#j}XsZ} u5Suuku53kpR_4=B~h&#S$ɽG{#. T`&蔎?Y0H?]H]E]k8dh(1TP~?PwBAZ_ۭQEOuwj LDuyd . .ૺfM㝨>1fHL(cPF a.m]1G<@Xۣ+^ʚQgA (&mfCc.}ph" 8fuo"F*"! ٺ? ~Vf+.mblRAb4 } 0o apC}6`ŠJ |.}fGA.AQmzdRHA7s :cJApԶ-5=L݈ɐ.>,yZfS|X$PDejRt.+*+_l~!eK %J hx]r\f;k/,1JH:E,TG̗o (VP dt* M{dd],VSPEmv2B6{uqkn?$ q!k8&J17h<  4Z=u]{x$^Vk"_U o=NoOe05{0Yp?H !0F a81u°Hb@Lp.l,`CUASEWï2F@E !ı=EGQ= ҧ~O LOdny%p V1z⭚9Tג<4S_wmzC6QnD0ktÀo:`aT`#_42l.U  )IENDB`wiRedPanda-4.1.12/app/resources/output/led/WhiteLed.png000066400000000000000000000074421444020206400227310ustar00rootroot00000000000000PNG  IHDR@@iqsBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org<IDATx[]WVιU3Jd6ڄ`5ΏL(E"JyAB@ȖHG~$^HE$̇UWUc! uΩ:cL""kDjY1\pusFιqш-w }h4YkZ;E/D 3WD$XUrưSU!"'"VUm&\€A\ w 0%ollT|ߟ34s Q=n%9lj@@CE@|3&QMDP:ιo9R|b9Ism _@u<םs Ƙ_v<3׈%"Gh@EUAPTh-k:~]  :֌1ju`\aO|oc$y _p$Ai95l cHD@:**U2%jι^Z(:τocXVTAYfng,2!s/)]+V4F~]S-L+D9- va[J3}}ZTιCD@Es'03`PZ)!g4ce&""m7@􁪮A2Zǃ uq vv󼶵vܷ1lL9$e@x"_La<8*}[E;s n |&t:~~<E3ڧEsIsd>1@*siZ~An칈O<z^&3v\EIVaRiGʦ@Z;8*"G}f1sBDR=s Ξ=eEp[@@#%k( qba^~I?PɝOssW-yY8 珢."q6s_e9oh[Ƙ(f vx~Uf3ֹӓ-~Q%ck0f^F-TAD`Q5;kfjf=:2EY{tlBDe3 PUUI;4R4Q&4,Zf)_ D5iyI$*2980Xڙ'I9Y pP)]R9UsEa<o`F}t:2kP@Jr,HY>5Q`''n]qyr7 nݧ2t_((z?\fMe̮SΧs# ?'v  wzl6& lmCsSPŭ۷{z}}g/\~c>O(PؽsJA+׮}|[[3SasZ[(:Y[A0rĒLx zE` dO]xYe*"9P&欅s.Bί\?r;\wSrԩv<JI4m ׮ݎ{{ @_xr8sG$G63Y*+%"X[8p<>tÇ csZk0犂C(/s(ϕWSg-荛7t8W*ӯڿF;`c_o6k;ଝF&H5YZul=1H˄/,Aʍz;С[w ?wy^kqq|A˜Ɩ!wdLF`ƍnYk-'C^Sw 9ٳgzW 0j?rpСCzV%9\aTEt۷onq$---?SWg*wխ/O;~)}c cBm^Vk }CSZ' Gxc8 {ckƪùxW>|oS@LRh30x)#p9f+"9gU*[֏N<) ~/L0 @p1~ܹ' kW image/svg+xml wiRedPanda-4.1.12/app/resources/output/led/YellowLed.png000066400000000000000000000054031444020206400231170ustar00rootroot00000000000000PNG  IHDR@@iq pHYs B(x cHRMz%u0`:o_F IDATxm\U{gv/@ VJ-FPJ!hj!Ĩ#  1Ə5[@01ՠ"Bi̾}9=wL[v$'w̜{+`߾}%nhʙѣG0`5L2U )Yd<ZϺ^dHlo6OJ0|ֹ>"]m.g"_Awg]`+`(!& ;)žk+du6p ~[**".]32pD2 ir,Z`p2#k'a` 8 :J `O神Yl>z< b;>w \>Hx{^F4gR/88||1ζ(PR J#@=ǜir=#\=k0, jО`LE`,#È aXJaX yX`T5~ι%a`շw:PΏ.4 [ Ԑ%-+†$fgepPP56@9Sa x~WXΫ7vְE{aSҠ=-{ku6.X~e$L ue ;ujk8Jn"IJb_.Weڌ`o|+HTr1l*w*Rl ۫5.e79W"oid}].^jpi4ْM< TdO.wF)P]9i񠢈Mؠ <V(n Кu<7lA *#@C] $\؋E{_vpn糅7IrsuojKwȘtxEBy:e !Nc<-D`MdYƢgv#.I@KE#Euo&UfdºV&ˋa5ȞdYhӨo-TfdVy!lWrȄqR Carj˂vx5Ho~V;}wIOH[yߝTYN5&.O9B5gdg Se!{cSe91=##p ,QH ٪̍Oȱ("4&7քקF3dDttfq"{ZK@Oȱj}}"UQi)_>wR/JĘ%*) a+g7x>2-dV9)ۗm)|< WnɻMXPŭ[ԶQ6i(bł_kyueZ-ڸBј*kPbyTR_?|(Ag{հڌ|~7nP7Q6+Ҫk#%F)ڑອ$Ƹ|2єjNސP?p^61O ?1yg!_8iT`F6o(#EFQnO!%u: CZTuq,M?5RT߻E:Gh:0qZR};]Jh=dUK.7u\!#IENDB`wiRedPanda-4.1.12/app/resources/output/output.qrc000066400000000000000000000040731444020206400220160ustar00rootroot00000000000000 audio/A7.wav audio/B7.wav audio/C6.wav audio/C7.wav audio/D6.wav audio/E6.wav audio/F6.wav audio/G6.wav buzzer/BuzzerOff.svg buzzer/BuzzerOn.svg counter/counter_14_off.svg counter/counter_14_on.svg counter/counter_a.svg counter/counter_b.svg counter/counter_c.svg counter/counter_d.svg counter/counter_dp.svg counter/counter_e.svg counter/counter_f.svg counter/counter_g.svg counter/counter_g1.svg counter/counter_g2.svg counter/counter_h.svg counter/counter_j.svg counter/counter_k.svg counter/counter_l.svg counter/counter_m.svg counter/counter_n.svg counter/counter_off.svg counter/counter_on.svg led/AquaLightLed.png led/BlackLed.png led/BlueLed.svg led/DarkRedLed.png led/GreenLed.png led/GreenLed.svg led/HotPinkLed.png led/LedOff.svg led/LightGrayLed.png led/LimeGreenLed.png led/MagentaLed.png led/NavyBlueLed.png led/OrangeLed.png led/PurpleLed.svg led/RedLed.png led/RedLed.svg led/RoyalLed.png led/TealLed.png led/WhiteLed.png led/WhiteLed.svg led/YellowLed.png wiRedPanda-4.1.12/app/resources/pandaFile.ico000066400000000000000000013226261444020206400207760ustar00rootroot00000000000000 ( f ( @@ (B(00 %j   h.( ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( (((((p((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( (((K((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((<(((K((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((J(((K((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((D((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((()*+,,+*)((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((*+&  &+*(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((()+ !->Pguxxfu>P- "+)(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((*'4G3F'*(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((* $'' $*(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((* # 43 #*((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((()%0/%)(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((() ! )(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((+cqbp+(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((+%&4F " "4G+')(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((*  # !*++* !Vf+((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())K['&+((((+&'+(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((()(gv,((((((,iv)'((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((()) .B #)(((((() #0C0&)((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((+2%)(((((()%23%)(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((+mz*> $)(((((() #+?1%)((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((+IZ]l+((((((+_m*')(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((* #&: )*((((*) *(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((() !%,,,+%bp+(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((+u 5 51&)((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((* 5H{}s+((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((() #.A'((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((+vXh&,@-@ "*((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((* !5H++ 3F1D +((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((() "+')(+ !6 5 +(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((+p}GX+(((+$L]K[$*(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((* "/C+((((()*(<\k[j'<*)((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((* ,&)(((((((** # #**(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((+iwK[+(((((((((()+,,,,+)((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((* ",?+((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((() !/&)((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((+uP`+((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((+=O+(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((()%.1%)((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((*Qa+((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((,u+((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((,L])')(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((+ 2E9J +(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((+ #3kx,(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((* $-*(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((()*+,,+*)(((((((((((((((((((((((((((((((((((((+$*)&)(((((((((((((((((()*+,,+*)((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((*+&  &+*((((((((((((((((((((((((((((((((((, "--A "*(((((((((((((((((*+&  &+*(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((()+ !->Pguxxfu>P- "+)(((((((((((((((((((((((((((((((,!6L]+(((((((((((((((()+ !->Pguxxfu>P- "+)(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((*'4G3F'*(((((((((((((((((((((((((((()+9Kgu+((((((((((((((((*'4G3F'*(((((((((((((((((((((((((((((((((((((((((((((((((((((((((* $'' $*((((((((((((((((((((((((((+'[j{+((((((((((((((((* $'' $*(((((((((((((((((((((((((((((((((((((((((((((((((((((((* # 43 #*(((((((((((((((((((((((*+(*((((((((((((((((* # 43 #*((((((((((((((((((((((((((((((((((((((((((((((((((((()%0/%)((((((((((((((((((((*+ "JZ))((((((((((((((()%0/%)(((((((((((((((((((((((((((((((((((((((((((((((((((() ! )((((((((((((((((()+* 0C()(((((((((((((((() ! )(((((((((((((((((((((((((((((((((((((((((((((((((((+cqbp/,,,,,,,,,,,,,,,)% ;M !,-,,,,,,,,,,,,,,,,/bqbp+((((((((((((((((((((((((((((((((((((((((((((((((()',4F " "4G " !"6\kSc  "4F " "4G+')((((((((((((((((((((((((((((((((((((((((((((((((+Yi !*++* !v|{{{{{{{{{{{{|lz|{{{{{{{{{{{{{{{{{|u !*++* !Vf+((((((((((((((((((((((((((((((((((((((((((((((((+'&+((((+&''&+((((+&'+((((((((((((((((((((((((((((((((((((((((((((((()')gv,((((((,ivgv,((((((,iv)'((((((((((((((((((((((((((((((((((((((((((((((()&0.B #)(((((() #0C.B #)(((((() #0C0&)(((((((((((((((((((((((((((((((((((((((((((((()%32%)(((((()%22%)(((((()%23%)(((((((((((((((((((((((((((((((((((((((((((((()%1*> $)(((((() #+?*> $)(((((() #+?1%)(((((((((((((((((((((((((((((((((((((((((((((()'*]l+((((((+_m]l+((((((+_m*')(((((((((((((((((((((((((((((((((((((((((((((((* )*((((*)  )*((((*) *((((((((((((((((((((((((((((((((((((((((((((((((+cq%,,,+%%,,,+%bp+(((((((((((((((((((((((((((((((((((((((((((((((()&2 5 5)* 5 51&)(((((((((((((((((((((((((((((((((((((((((((((((((+t{}r.++++++++++++++++++++++++++++++++++++++++++++++++++++++.t{}s+(((((((((((((((((((((((((((((((((((((((((((((((((()(''(((((((((((((((((((((((((((((((((((((((((((((((((((((((()(''(((((((((((((((((((((((((((((((((((((((((((((((((((((* "-@-@ "*((((((((((((((((((((((((((((((((((((((((((((((((((((((((* "-@-@ "*(((((((((((((((((((((((((((((((((((((((((((((((((((((+ 3F1D +((((((((((((((((((((((((((((((((((((((((((((((((((((((((((+ 3F1D +(((((((((((((((((((((((((((((((((((((((((((((((((((((((+ !6 5 +((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((+ !6 5 +(((((((((((((((((((((((((((((((((((((((((((((((((((((((((+$L]K[$*((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((+$L]K[$*((((((((((((((((((((((((((((((((((((((((((((((((((((((((((()*(<\k[j'<*)(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((()*(<\k[j'<*)((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((** # #**((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((** # #**(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((()+,,,,+)(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((()+,,,,+)((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((()))))))))))))))))))))))))))))))))))))))'((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('""""""""""""""""""""""""""""""""""""""%3 ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((()$                                        K t(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((($                                        K ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((                                        M (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((                                        (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('                                         ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((()"                                       T  ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((()"                                     %D!((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((                                     K ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('                                     K!((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('                                   !((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('                                   "HO((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('                                    ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('                                 '!((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('                                 K x((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('                                K ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('                               M ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('                               A((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('                               ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('                             N-!((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('                           %D!((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('                           K ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('                          K!((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('                        !((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('                        "HO((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('                         ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('                      %!((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('                     'K ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('                     K ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('                    M"((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('                    A((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('                    ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('                 Y-!((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('               (D#((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('                K x((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('               K!((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('             " ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('             6u((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('              ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('           %$((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('          'K ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('          K ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('         M"(( ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('       #a((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('       "IO((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('      Y-!((z(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('    (D$(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('     K x((K((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('    K!((K(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('  " ((L((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((  8x((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((' U ((( ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((& .%((  (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((& ????????( ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((D(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((b((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((&(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((*+**+*(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((++(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((()'>P=O')((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((()'$$')((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((,*(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((-Wg\k\kZi+(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())P`*((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((*/B !-- !0C0&)((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((+!5'))'!5!5$)(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((,ZiQa--Rb)((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((* "*>:L:M+(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((*n|,@ ")((((((((((((((((((((((((((((((((((((((((((((((((((((((((((,kx ZiUe+((((((((((((((((((((((((((((((((((((((((((((((((((((((((((* ")= !,P=O')(((((((((((+)Ueo|,((((()'>P=O')((((((((((((((((((((((((((()'$$')((((((()+++((((()'$$')((((((((((((((((((((((((((*,*******&@Q,+*****,*(((((((((((((((((((((((((+[j\k\kXg !-P`q~  !Yh\k\kZi+((((((((((((((((((((((((**((((((((((((((((((((((()&0/B !-- !0C/B !-- !0C0&)(((((((((((((((((((((()$!6!5'))'!5!5'))'!5!5$)(((((((((((((((((((((((')Qa--RbQa--Rb)(((((((((((((((((((((((((+:L:MK\YhVfVfVfVfVfVfVfVfVfVfVfVfVfVfVfVfVfVfVfVfVfVfVfVfYhK\:L:M+((((((((((((((((((((((((* "-A(<)=,@ ")(((((((((((((((((((((((((+VfUe.++++++++++++++++++++++++++.VfUe+(((((((((((((((((((((((((((+P* "-++'Vf$- "+>P+ !*((((B(((B((* "2E.A)}.A2E "*(((B(((B((+ " "+(((B(((B((**(((B(((B((*P`O`& $%''% $&P`O`*(((B(((B(((*4Ft3F*((((((((*4Ft3F*((((B(((B((((* ! !*((((((((((* ! !*(((((B(((B(((((*+*((((((((((((*+*((((((B(((B(((((((((((((((((((((((((((((B(((B(((((((((((((((((((((((((((((B(((B(((((((((((((((((((((((((((((B(((B((((((((((((((((((((((((((()(B(((B(((((((((((((((((((((&&&&&&&&?&((B((((((((((((((((((()        ((B((((((((((((((((((('         ((B((((((((((((((((((('        ((B((((((((((((((((((('      7 ((B((((((((((((((((((('     U ((B((((((((((((((((((('    v ((A((((((((((((((((((('    ((B((((((((((((((((((('  + y (($((((((((((((((((((('   ((?((((((((((((((((((' ((  (((((((((((((((((((' ? ( @ (((((((((((((((((((((( ((((((((((((((((( ((J(((((((((((((((((((4((((((((((((((((((((((~(((~(((((((((((((((((((~((((((((((((((((((((((((((((((((((((((++(((((((((((((((((((*)((((((((((((((((()n{mz "((((((((((((((((+s+(((((((((((((,p}w+(((((((++(((+ 2E?Q('((((((()*+-%  ((((((((( "mzn| !rp} #((((((+s}s+((((++((((('(  ('((((((('(,++++,('(((((((((++((((((((++((((((((((((((((((((((((((~(((((((((((((((()))))()(((((((((((((((%####$j#(((((((((((((((     (((((((((((((('     (((((((((((((('     ((~(((((((((((('   9 (((((((((((((('  X ((I((((((((((((' x (((((((((((('! ( (((((((((((('?????????????(  ((O(({(}(}(}(}({((H(((((((((*(((((((((() '((((((((( #8J+'((())*-:L(()$ !Qaq~.A,'(( !,@YhtXhx+? !(( /BiwbqUehv/C (()%$$%)((()(++++))()((((((((!! ((((((('   y((((((('   ((O(({(}(}(|'"  wiRedPanda-4.1.12/app/resources/pandaFile.png000066400000000000000000000022131444020206400207720ustar00rootroot00000000000000PNG  IHDR@@iqsBIT|d pHYs+tEXtSoftwarewww.inkscape.org<IDATx_lSU?]׹9EU6m<@"1NE^0LLA$>L>d1(qAE,fBX4$dMHBMtСIhw{ ò V'=󻟞˹)88888*0UDj`}2R" 7RvJ?T պ s.)47tW|%D"1\2&wvʛt^ 6 yb"te^A5next^laü{:m/@ g=7Ro{#n== ׳8pj߭'tozkK*Tm/VB _0'%eĤZ%ߣ`܂sRdiV`5 GX# bl)pk))~V|eűA;m7:S#D! [;sy?61#j*i z@2*W6SY)L&x:[QIDc|[/q 福< Vq'k199s'<-/aΒ 8߳v@~tq@2YGJH\qrj wۺy6rMgjw/7;Q'|-k} Y];jY^|w.a߯}bj5]nQxעW/\wG9\ 2eD) 2FG8S$.hXF׳:9Hc 4.WH7BaqD\u.uw6lgSCN,=4p{9~= 1 94G'(Mxg09=ӝepëgm_{!%ԶuV'}pg_eA$W:A&&F*V`5 GX#4R*`Pq\Q \+ 26C|%Fppppp5+FJK[XIENDB`wiRedPanda-4.1.12/app/resources/pandaFile.svg000066400000000000000000000107721444020206400210160ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/pandaLogo.xcf000066400000000000000000030655761444020206400210370ustar00rootroot00000000000000gimp xcf fileCC5G gimp-commentCreated with GIMPgimp-image-grid(style solid) (fgcolor (color-rgba 0.000000 0.000000 0.000000 1.000000)) (bgcolor (color-rgba 1.000000 1.000000 1.000000 1.000000)) (xspacing 10.000000) (yspacing 10.000000) (spacing-unit inches) (xoffset 0.000000) (yoffset 0.000000) (offset-unit inches) pandaLogo.png     5l kB kN kZ kf kr   $ 4 D T d /?O_o9PScs r:JZjzr!"""("8"H"X"h"x""$''''((("(2(B*-H-X-h-x--------./%33)393I3Y3i3y58n8~88888888999.9>9N:E>U>e>u>>>CEGHL~OSYUVVVVVWWW$W4Y\\+\;\Kcwg%^n~ȏ.!{!!!!!$G&&) PuoEUeu (X2MMMMMMMNNN!N1OHT TT)T9TIYY iW( #3C@ G) Rry. 0@ڕw,'Ow%5E-ЛЫл~Վ/V{%!1[8._PbrXFVf_5CgW0Qaq;K[H(8Hy%LoExxxxy yy,z|~2W  3 = B& Rj j O ͎ ѫ i  - =  =- b-  Ȁ r *Q 7 9S 9c 9s 9 = > > > > > > > > M s m I         i   . > N ^ n ~   # ; Rs ZT Zd Zt Z Z Z [ ]v _ ` ` `) `9 `I `Y `i `y ` ` ` ` ` a cS dt e e ft g iR ib ir i i i i i i i i j j j" j2 jB jR jb jr j j j j j j j j k k k" k261 -)61 -)61 -)+f5M1 F}- D )M >5 -& $*0 5 >5 -& $*0 5 >5 -& $*0 5 >4+Df,#Fj&"Df EoDfDo# 6g)  7 ,8 7 ,8 7 ,8 7""/$4DUeu{ 8Mbs " @<8 5 2.+(%""%(+.1 3 69;> @<8 5 2.+(%""%(+.1 3 69;> @f;Ո<7^4w)1 ݑD-Z*o'o$Հ'!Հ3ք0"ր&%w'o*^ -M 0- 3w5U8-;o< ?=;86 4 1/,*(%#!"$&(*,.02 4 68:<>?=;86 4 1/,*(%#!"$&(*,.02 4 68:<>?=;86 4 1/,*(%#!"$&(*,.02 4 68:<>?D<w:D7w5D3 f 0 ..R+)*'M$o " 6M!^#o %')++8.A 0C 2M 4M6M8M:H<@= =<:86 4 2 1/ =<:86 4 2 1/ =<:86 4 2 1/ 2=&;!975w 3 `1 J0 -. ?<;:9765 3 2 1 0.-,*)('% ?<;:9765 3 2 1 0.-,*)('% ?<;:9765 3 2 1 0.-,*)('% ? <3:o99B765>3o2 12 0^ . -',Z*)(0'Y%;:875 3 2 0.-+)(&%#!  !#$&')*,-/0 2 3 5679:<=>;:875 3 2 0.-+)(&%#!  !#$&')*,-/0 2 3 5679:<=>;:875 3 2 0.-+)(&%#!  !#$&')*,-/0 2 3 5679:<=>9;&97^7353o2@ 0 .o -L+)f(0& %M#!o 1 ; >!"I$&L')H* ,9- . +0 o13U46D78 :U;;;;7 w9U;>-+)(&$"!!"$&')+,./1 3 4 679:<= -+)(&$"!!"$&')+,./1 3 4 679:<= -+)(&$"!!"$&')+,./1 3 4 679:<= , *f(@'+%#o!9 w G"#%I'(o*5+ -T/ 0w 26 3 5A6 8D9;O<=@=<;986 5 3 2 1/.,+*('%$#! !"#$&'(*+,-/@=<;986 5 3 2 1/.,+*('%$#! !"#$&'(*+,-/@=<;986 5 3 2 1/.,+*('%$#! !"#$&'(*+,-/@S=;O: 8>7504w2 #1 f0 .I-+$*\) '1&$#H" D !7"o$ %+&X()*5+_-<<;:98765 4 3 2 1 0/.-,+*)('&%$#"! <<;:98765 4 3 2 1 0/.-,+*)('&%$#"! <<;:98765 4 3 2 1 0/.-,+*)('&%$#"!  <;: 9*9)8072645<4>3@2H 1K 0M /V .Q -H,F+D*<):(8'1&/%-$'##"! $#"  !"$%&'()+,-./0 1 3 4 56789:;=>$#"  !"$%&'()+,-./0 1 3 4 56789:;=>$#"  !"$%&'()+,-./0 1 3 4 56789:;=>$#."V w'<c! "#0$S%o&()!*4+E,`- w. 0 1 2"364K5Y6h7w9:;<01 2 4 5 678:;<=> 01 2 4 5 678:;<=> 01 2 4 5 678:;<=> . /- 0T 1 34%5B6j89:;5;Y< =<;:987 5 4 3 2 10/.-+*)('&%$#"!  !"#$%&'()*+,-./01 2 3 4 =<;:987 5 4 3 2 10/.-+*)('&%$#"!  !"#$%&'()*+,-./01 2 3 4 =<;:987 5 4 3 2 10/.-+*)('&%$#"!  !"#$%&'()*+,-./01 2 3 4 <;%:39J8f764 3 2 &1 :0 H/ W.g-,*)( '&%$$(#-"4!6 8@BE N!P"R#V$W%N&L'I(A)>*7+5,3-,.* / 0 1 2  =<<;::987765 4 3 3 2 1 00/.--,+ =<<;::987765 4 3 3 2 1 00/.--,+ =<<;::987765 4 3 3 2 1 00/.--,+ =<[;0:9:9X8'7 76k55433{ 2@ 1 0 0 /@ . --s,3+  !!"#$%&'()**+,-./0 1 2 2 3 4 567789:;<<= !!"#$%&'()**+,-./0 1 2 2 3 4 567789:;<<= !!"#$%&'()**+,-./0 1 2 2 3 4 567789:;<<=| i!Z!K"5##$% &'()c*I*4+",- . / |0 S0 31 2 345b6>6'789:R:.;<~5 67789:;<=> ?5 67789:;<=> ?5 67789:;<=> ?34567w7g8X9G:8;%;< = ===<;:98776 5 4 3 2 1 10/.-,,+*)(('&%$$#"!!  !!"#$$%&''()===<;:98776 5 4 3 2 1 10/.-,,+*)(('&%$$#"!!  !!"#$$%&''()===<;:98776 5 4 3 2 1 10/.-,,+*)(('&%$$#"!!  !!"#$$%&''()=={<a;G:29$8766v5W463 2 1 0 0 f/ B.&-,++V*,)(''X&3%$##U")!  d2 t =!"##C$%&m&1' +*)(('&&%$##"!!  !!"##$%%&''())*++,,-../00 1 1 2 3 3 4 4 56677899::;;<+*)(('&&%$##"!!  !!"##$%%&''())*++,,-../00 1 1 2 3 3 4 4 56677899::;;<+*)(('&&%$##"!!  !!"##$%%&''())*++,,-../00 1 1 2 3 3 4 4 56677899::;;<+*V)#(('G&&%d$!##w"+!! ; NN  !K""#B# $%?% &'6'(s))*Q+ +,/,-n. . / L0 0 ~1 1 2 B33q445456d778'89@: 5½4ɾ45ɽ5ֽ4ڽ2ؽ0߽.½,Ƚ)н'ֽ%ܽ ݮX5ǖf7((4O+((4-((5P((5y((4((2((0)((.A((,c(()(('((%(( ڦuG5W#4=45?5k420..,T)|'% (½ ½ƿ% ,ɿ28~ Ʒ(vgWH9)(( ׿ycL:((д}aF/((ɩjL0(%( ܶqR3(,(⽙sO-(2(۱]4(8(0(~( (һ{hXF5% ӸkS:&ˬpQ3Ġ~Z:% دc@,߷e=2ש{M8~ J,Խ? J}pf]SF>5(,(59EKS]aos(?( JypaWMA3* , %28AMQ`e?Ⱦ)˼ #Dzè׻#()׈)(È('''&Ј&%Lj%$$##퉈""튈!!  Ԉ쌈 Lj"+ 3:ʹrhaYU)ԸaE. #رdH+徕mF!Y+~I#d1(U))3(( 'h''B&&3%%($$##s#"i" !s!$  3Q~# (5CQ_m{(/@Vi|F#(&$" ,(&$$"  3('%#!;(&$" ((ƴ{h]UMI)ѳvV8 #իY;  㹎c9  N  u= # Y# ( I )  ) % (  (  ' ] '  ' 5 &  & % %  %  $ { $  # i #  " ^ "  ! i !  } %    D  qx  !0@N^m}  -EZo8  "  , 5  ;󤫳#")/ 48<?<50 *%!!%)- 0 36I:0++9::IR`n|#4Md}"!@b)'Ir/:e 41`8"P<:w? <(&$# 5(%#!0 ('%#!+(&#!&('&#!!($" !(&# %(&# )(&# -(&" 0('# 4($! "#(6(%'((=,!+,,=FTds# &@Yt" 2W{) & !!"#$$%'( !##%%&'(( !#$%&'(#(  !"#$&'(,(!#$%(6($'((< 4m8 I5 *m1 M. 4+ 4( 5% 4" = M l# 1% M( "{+ D- # / M 2 %4 e7 =9 (; e < Z = )     $ - 6 @=:864 2 / -+)'%# !뻹-9 @=I::8)~6"u4Y2 I/ 9-6+.)'~'$|% o# `!('1HWaep},()6EQew9(;L^t(( @= =: ,8 u6 k4 M2 =/ +- (+ ) u' s% e#    T!5FQUap,"2@Ui}9&:Mfy@;2 +$$@:(-=Sp2 (:Wv+(6Sp$()Ae(+Eh$(0Sy@:)Aa2 &Fh+"Aa$.U2Y$Ak)*+,,-../01 1 2 3 3 4 5 5 677899:;;<==>?)*+,,-../01 1 2 3 3 4 5 5 677899:;;<==>?)*+,,-../01 1 2 3 3 4 5 5 677899:;;<==>?()Z)!*++D,-.^. / 0q 0- 1 2 2> 3 45L567Q789H9::D; ;;<< ==@===<<;::988776 5 5 4 4 3 2 2 1 10//..--,@===<<;::988776 5 5 4 4 3 2 2 1 10//..--,@===<<;::988776 5 5 4 4 3 2 2 1 10//..--,@1=<l<;;M: 99087h766G54x43 3 @2 1 k1 0 0 6/ .^.--%,,=+=<<<;;::998877665 5 4 4 3 3 2 2 1 1 00//..--,,++**)('(( ' ' %&%%$#$##"=<<<;;::998877665 5 4 4 3 3 2 2 1 1 00//..--,,++**)('(( ' ' %&%%$#$##"=<<<;;::998877665 5 4 4 3 3 2 2 1 1 00//..--,,++**)('(( ' ' %&%%$#$##")=<B;;c::t: :99887&76/65=54K43I 3 2F 2 1D 1 0B 0 /; / .:.-:-,-,++**) )n((\('J'&7&%%$ $l$#M#"'===;97532/-+(&%!    ===;97532/-+(&%!    ===;97532/-+(&%!    :_; ;|<<=~#!ǽͽӽڽ྽Ž˽ҽٽ ߾ ½ ʽнֽ޽ǽνԽ۽྽ý˽ѽٽ߽ȽϽս۽྽Ľ˽ѽؽ޽#7((!Y((|((((((/((O((r(((((( *(( D(( g((((((((:((\((}((((((-((J((m((((((((:((]((~((((((.(K(n((((;]~##!Ip=e  1 Y&Lr9_&Ms:`'Ms =Ľ=˽=ҽ=ٽ=߽=<Ƚ<ν<ս<ܽ<᾽;Ľ;˽;ҽ;ٽ;߽;:Ƚ:ν:ս: (.(=(L(=(n(=((=((=((=(<(<(^(<(~(<((<((<(.(;(L(;(n(;((;((;((;(<(:(^(:((:((:( =:=`====(<N<s<<<;:;`;;;;(:N:t::(((((*. 38;ٽ*(=h.(+Kv 3(+O8(;h(;(,S((*)Y.9h 3=r8'Y;Ax<840 ,)%"!$(+- 0 369<= <()J8(E~4(*K~0 (+Z,(1h)(E%(0a"(M(:v!(0h$(+Z'()V+(K-(*Z 0(*Z 3(+b6(/h9(7~<(K(=(*( (<7r82q49q0 I,Y)2x%Q";&h!Y$I'D+9-I 0I 3R6Y9#q<9= ;964 1 .,*'%#  #%')+- 0 2 468:<=ӽZ;(0p9(K6(.p3 (G1 (,m.(F,(.p*(S'(;%(+m#(P (;(.v (*a#(Q%(A'(9)(2+(-v-(*h /()h 2(a 4(a6(a8(a:(Z<(f(<()p((I;a986a3 41 ^.3,a*A'&%^#> 'h Q#@%.'%)x+h-Y /Y 2Q 4Q6Q8Q:I<W<a =;9753 2 0 .,*) =*p;(-~9(17(95(@3 (L2 (a0 (*p.(0,(<*(I) =a;q97%5,3 :2 Q0 a.,(*6)++**))(('&&%%$$##""!!    !!""##$$%%&&''(())**++,,---..//001 1 1 2 ++**))(('&&%%$$##""!!    !!""##$$%%&&''(())**++,,---..//001 1 1 2 ++**))(('&&%%$$##""!!    !!""##$$%%&&''(())**++,,---..//001 1 1 2 *Y* )v)((*''D&%^%$n$ #|#""!!#  0:E B !@!"?"#=#$<$%;%&6&&+''(()z) *i*+W+,E,-3--.. /c / 0B 0 0' "              "              "              "!!}  X + n:x  C!!!""E###n$$)$%%P&&&v''/(((M)))]***n+++|,,%---3... ./ / / #0 0 0 0 x1 1 1ܽ:᾽9Ľ9˽9ҽ9ٽ9߽98Ƚ8ν8ֽ8ݽ8⾽7Ž7˽7ҽ7ٽ776Ƚ6Ͻ6ֽ6ݽ6᾽5Ž5˽5ҽ5ٽ554Ƚ4Ͻ4ֽ4ݽ4⾽3Ž3˽3ҽ3ٽ33½2ɽ2ѽ2ٽ221Ƚ1н1ؽ1߽1俽0ǽ0ν0ս0ݽ0⿽/Ž/ͽ/ӽ/ܽ/㾽.ý.˽.ӽ.(:(.(9(L(9(o(9((9((9((9(<(8(^(8((8((8((8(.(7(M(7(o(7((7((7((7(<(6(^(6((6((6((6(.(5(M(5(o(5((5((5((5(<(4(^(4((4((4((4(.(3(M(3(o(3((3((3()(2(A(2(e(2((2((2((2(9(1(^(1((1((1((1(4(0(W(0({(0((0((0(/(/(P(/(t(/((/((/(+(.(H(.(l(.((.(:9:9a9999(8N8t8887;7a7777(6N6u6665;5a5555(4N4u4443;3a3332.2V2222%1N1w111 0F0o000/>/g///.6.^..(((((((('%#"  !#%&()+-. 0 1 34679:;<ܽ ?(h'(,%(=#(S"()p (2(H (h!(1#(O$()v&(6((Y)(,+(F-(p.(7 0(b 1(0 3(W4(,6(P7(+9(M:(+(;(L(<(,( ?(Y'x%)#A"a 5 Y!#=$h&"(H)+3-a.# 0R 1 3F46>79;:;:< ?=<:98653 2 0 / .,+*('&$#"  !#$%&()*+-. / =V<(0:([9(48(k6(;5()~3 (L2 (/0 (a/ (:.(v,(L+(0*(p((H'(.%(k$(@#(+"(k (H(/(v (P!(3"()$(f%(A&(/((~)(\*(?+(/-(.(e /(G =E<:J98\6'5q3 :2 0 Q/ &.h,:+*a(5'%[$-#"\ 5h >!"$V%.&(q)L*++-x.U /4 2 3 3 4 4 4 5 5 6667788899::;;;<<<==>==?2 3 3 4 4 4 5 5 6667788899::;;;<<<==>==?2 3 3 4 4 4 5 5 6667788899::;;;<<<==>==?1 1 2q 2 3P 3 4+44 5a563667j78:889s9:=:: ;`;;$;;:{::       n2 2 2 a3 33D444%5{55 5\666:7777b888-9z999F::::Z;;;!<j<<<=e==ڽ..½-˽-ҽ-ڽ-⾽,ý,̽,Խ,ܽ,㾽+Ľ+ͽ+ֽ+޽+*ǽ*ν*ֽ*߽*)Ƚ)Ͻ)ؽ))(ɽ(ѽ(ٽ((ý'˽'ս'ݽ'俽&ǽ&н&ؽ&&ý%˽%Խ%ܽ%$ǽ$ѽ$ڽ$㾽#Ľ#ͽ#ֽ#߽#"ʽ"ӽ"ݽ"俽!ǽ!ѽ!۽!侽 ǽ н (.()(-(B(-(i(-((-((-(+(,(H(,(o(,((,((,(-(+(N(+(v(+((+((+(0(*(U(*({(*((*((*(6()([()(()(()(()(:(((a((((((((()('(C('(l('(('(('(1(&(W(&((&((&((&(A(%(j(%((%((%(/($(W($(($(($(*(#(I(#(t(#((#((#(<("(g("(("(("(1(!(Y(!((!((!(.( (U( (( (.-/-[---,6,a,,,+<+i+++*D*o***")K)u)))&(R(}(('0'^'''&G&v&&&.%\%%%$G$w$$#7#g###("X"""!I!}!! E w (((((((((0 1 345679:;;<= 0(3 1(+ 3(y4(Y5(E6(37(+9(~:(c;(M(;(=(<(1(=(+( (0 1 3k4H52679q:S;;;)<= =;:987654 2 1 0 / .-,+*)('&%$"!  !"#$%&'()*+,-./ 0 1 2 2 3=(;(m:(W9(H8(;7(26(-5()4 (2 (n1 (a0 (T/ (J.(A-(7,(2+(.*(+)()(()'(&(%($("(|!(s (p(g(d(\ (Z!(U"(Q#(W$(Y%([&(a'(c((e)(k*(n+(p,(x-(z.(| /( 0( 1( 1() 2(+ 3(/=x;^:F958'7654 x2 _1 Q0 B/ 7..-#,+*)('&%~$s"o!e aXTL I!C"@#F$H%J&Q'S(U)\*_+a,j-l.o /y 0 1 1 2 3 4 4 3 3 3 2 2 2 2 1 1 1000////....---,,,,++++****))))((((''''&&&&&%%%%$$$$$ 4 4 3 3 3 2 2 2 2 1 1 1000////....---,,,,++++****))))((((''''&&&&&%%%%$$$$$ 4 4 3 3 3 2 2 2 2 1 1 1000////....---,,,,++++****))))((((''''&&&&&%%%%$$$$$ a3 3 2 W2 2 1 ;1 1 1 0 j0 0 / M/ / .1.|..-U---$,i,,+8+}++*L***)^)))(W((('P'''&I&&& %@%x%%%$V$$$#4#l###9988888777676676665645545543333342233321122 11101 00 111 0/0/0//00//9988888777676676665645545543333342233321122 11101 00 111 0/0/0//00//9988888777676676665645545543333342233321122 11101 00 111 0/0/0//00//99T99988U88877J7~776 6=6q6655"5Q55544!4P4}4443 3M 3y 3 3 3 2 2- 2T 2z 2 2 2 1 1' 1O 1u 1 1 1 0 0 07 0W 0v 0 0 0 0 / /                                              ڽ  ŽϽٽ㾽ŽϽٽ侽Žн۽侽ǽҽܽȽӽ޽ʽսýϽٽ㾽ǽҽݽʽսĽнܽ˽׽㾽ƽѽ޽̽ٽ㾽ɽսƽҽ߽ýнܽͽڽ忽˽( (+((P((((((+((L(({((((+((O((((((-((V((((((0((]((((((4((f((((((C((x((((,((U((((((7((h((((((I((((((5((h((((*((Q((((((;((q((((,((^(((()((Q((((((D((((((9((q((((0((g(( ?s;o=uF|M W0kE#Y7u!Z@}'cN?1s$dX((((((((((456789:;<<<= 4(45(:6(@7(G8(U9(`:(k;(x(;((<((<(+(=(0( (45&6,748C9O:[;j;<<= =<;:99876543 3 2 1 0 / ..-,+*))('&&%$#""!   !"##$%&&'(=9<(F;([:(q9(9(8(+7(06(:5(K4(^3 ({3 (2 (+1 (70 (I/ (d.(.(-(,,(9+(P*(l)()(*((6'(P&(v&(%(.$(A#(`"("()!(5 (P(((5(V ( (*!(;"(d#(#(+$(A%(q&(&(5'(d((=%<3;K:b99876&584M3 m3 2 1 #0 6/ T.}.-,%+>*]))("'>&h&%$.#P""!! >t!D  !&"T##$.%c&&!'T(#####"""""!!!!!           !!!!!!"""""""########$$$$$$$$%%#####"""""!!!!!           !!!!!!"""""""########$$$$$$$$%%#####"""""!!!!!           !!!!!!"""""""########$$$$$$$$%%"J""""!K!|!!! ? p   2cFqDn  A k    !%!H!l!!!!""B"f""""##.#K#h#####$//.//./...----. -- ..- ,, ,- -,, ,, -,, -, ,++,+,+,,,,,,,+,,,,,,********+//.//./...----. -- ..- ,, ,- -,, ,, -,, -, ,++,+,+,,,,,,,+,,,,,,********+//.//./...----. -- ..- ,, ,- -,, ,, -,, -, ,++,+,+,,,,,,,+,,,,,,********+/> /^ /| / / / / . ..-.E.].u......- -%->-V-j-}--------,,,),;,L,],m,{,,,,,,,,,,,,,,+++++#+%+(+,+0                                                                                                                     ؽ俽 ʽ ؽ 俽 ʽ ؽ 侽 ʽ ׽ 徽 ɽ ؽ 忽 ˽ ڽ νݽ½ѽ߽Ľӽǽ׽㿽̽ܽýѽǽ׽俽ͽܽýӽ⾽˽ܽ((0( (f( (( (/( (d( (( (/( (c( (( (.( (b( (( (0( (i( (( (6((u((((@((((((I(((()((U((((/((l((((A(((()((W((((2((q((((C((((,(h((D W   U   T   R   [  "h-v7D^.zGc0Y1 @=̽=ܽ=Ľ<Խ<俽;̽;ݽ;ƽ:ؽ:9ҽ9㾽8ͽ8޽8ǽ7ؽ7½6ӽ6 @(.(=(k(=((=(H(<((<(/(;(n(;((;(Q(:((:(<(9((9(.(8(o(8((8(U(7((7(@(6((6( @=]==6<<;`;;?::(9~98a88D77-66(((((((=<;;:::998887776665555444443 3 3 3 3 3 2 2 2 2 2 2 2 2 (6(<()(<((;(F(;((:(t:(/:(9(49(8(+8(r8(7(D7(7(6(P6(6(5(;5(v5(5(4(>4(o4(4(4(3(6 3([ 3( 3( 3( 3( 2(, 2(F 2(` 2(| 2( 2( 2( 2( "<<{;3;:f::|99}88d871776?665'5h554*4`4443" 3K 3u 3 3 3 2 23 2P 2o 2 2 2 2 ý- $ξտ!Ľ&ɽ+ . 0 2356789;;< ~(*Fkvc=(-(Iz Ǡk6($(FӜ_,((*Zw0((@!@((+q%P((-w+( (,. (g0 (@2(y3(55(G6(g7(r8(|9(|:(f;R< ~3[whS)-6l \"$3xϑNIi,!,b%?i+ x. X0 -2k3!546X7d8o9o:V;@< ~@ʽ=ʽ;Ž97׽6Ƚ4࿽2 ʽ1 ޾/ Ž.н-྽+*ǽ)ͽ(ҽ'ֽ&ٽ%ڽ$ؽ#׽"ӽ!ν ǽ½ ս ǽ!""ν#$$˽%&ؽ&½''ƽ((ɽ))Ƚ**Ľ+޽+,ӽ,-ɽ--.Ͻ.@(T(=(Q(;(C(9(4(7(|)(5(K(4(/(2( R(1( +(/( C(.(f(-(*(+(5(*(G()([(((k('(y(&((%(($((#(}("(p(!(_( (I((:((+(((( w(( G((!-(("(("^((#2(($(($V((%+((&((&9(('(('F((((((P(()(()M((*((*?((+((+,((,q((,((-N((-((-,((.c((.((@B=@;097o5842 @1 / 0.V-+!*4)J(\'k&x%{$u#p"a!N 6& i 4!""M#$$E%&r&%''3((>));**+++,b,-<--.S.()**+,,-.. / 0 0 1 2 2 3 34556678899::;;;;<<==Ž((0)(X*(*(,+(K,(,(+-(J.(.(- /(W 0( 0(4 1(g 2( 2(< 3(~ 3(*4(X5(5(;6(6(-7(g8(8(H9(9(=:(:(8;(;(2(;((;(/(<((<(4(=((=(C((()G**+9,,-7.. /F 0 0 1X 2 2( 3q 34G55'667X88599)::$;;;|;<<==0 @===<<<;;;:::999888777666555 @==W=(<(<(F<(;(;(T;():(:(b:(,9(9(q9(48(8(|8(67(7(y7(56(6(v6(35(5(r5 @==F=<}<3<;;B;::R:99c988o8"77k7!66h655d5%%%%%%%&&&&&&&&&&&&''''''''''''''(((((((((((((((((((((()))))))))%%%%%%%&&&&&&&&&&&&''''''''''''''(((((((((((((((((((((()))))))))%%%%%%%&&&&&&&&&&&&''''''''''''''(((((((((((((((((((((()))))))))$4$R$o$$$$$%%&%<%S%i%%%%%%& &&5&K&`&q&&&&&&&&&''"'2'B'R'b'q'{'''''''''''''(( (((( (#(&()+*** *+ *** *+ ** * ++ *** ** ** ++++*+*+,,,,,,+,++,+,,,,++++++,--,,, ,-,,, +*** *+ *** *+ ** * ++ *** ** ** ++++*+*+,,,,,,+,++,+,,,,++++++,--,,, ,-,,, +*** *+ *** *+ ** * ++ *** ** ** ++++*+*+,,,,,,+,++,+,,,,++++++,--,,, ,-,,, +4+7+;+=+@+E+H+K+N+Q+T+U+Q+N+K+H+E+A+=+;+8+5+1+-+)+%+#++++,,,,,,,,,,,,,,,z,j,Z,J,:,(,,---------y-h-R                                                                                                                                                                                                   俽5ν5྽4ʽ4޽4Ƚ3۽3Ľ2ؽ2½1ս10ѽ0㾽/Ͻ/⾽.ν.⾽-ͽ-⾽,̽,྽+ͽ+᾽*̽*྽)˽)྽(ͽ(⾽'н'&ѽ&%Խ%ý$׽$Ľ#ٽ#ƽ"ܽ"˽!྽ н ֽĽ۽ɽνԽŽܾͽֽƽ޾Ͻ׽ǽ0(5(u(5(+(4(f(4((4(X(3((3(K(2((2(?(1((1(6(0((0(/(/(x(/(-(.(v(.(,(-(s(-(,(,(q(,(+(+(o(+(+(*(m(*(+()(j()(+(((q(((/('(}('(3(&((&(9(%((%(A($(($(G(#((#(Q("()(!(g(!(.( (( (:((((J((((`((+((z((6((((L((*((q((7((((R((+((x((;((((V((5h54W44G33:22,11"0y0/k/.i.-f-,c,+a+*_*)\)(d('q'&}&%%%.$$5##?"!X! u &8Qm";d#Ak'F(((((((2 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 / / / / / / . ....-------------------...../ / / / 0 0 0 0 2( 1(2 1(G 1([ 1(r 1( 1( 1( 1( 1( 1( 0(0 0(F 0([ 0(q 0( 0( 0( 0( 0( /() /(@ /(_ /(| /( /( /( .(/ .(V.(.(.(-(/-(P-(f-(}-(-(-(-(-(-(-(-(-(-(-(-(z-(c-(K-(1.(.(.(.(w.(I.() /( /( /(N /() 0( 0(^ 0(* 2 1 14 1K 1d 1z 1 1 1 1 1 0 03 0K 0b 0z 0 0 0 0 / /- /N /o / / / . .E.u..-->-W-p------------l-S-8-....i.6. / /| /< / 0 0M 0  <;Ͻ;׽::9ʽ9ݽ88ν76Ƚ66Ƚ55ν44۽3Ľ3 3ؽ 3ƽ  ((3( (3( (3E( ( ((+j{5((QF((b((+5((]<((7((L k((*~2((((o)((F*((j((z)((V((h((T((Ft(#(*=("(}(!(/P( (( (;((N((((,(()R((Av((\((n((v((v((o((_((Ez((+W((0((((V((. /S / / 0D 0 0 0 1K 1 1 1 21 2^ 2 2 2 3 3; 3Z 3w 3 3 3 3 3 34"434;4>ƧuvAƌW" )Kw D o&[ G 5?H'%(Q>*Zm @3Rt!M(#: \q{`3ZlDYB3f#)"p!> t &<v@.hL_hh`N2lFE(4443 3 3 2 2 2 1 1 0 0 0 / / /..---,,+++**)))(('''&&%%$$$##""!!!    !!(04(4(p4(/3 (3 (_3 ()2 (2 (K2 (1 (1 (;0 (0 (r0 (0/ (/ ([/(.(.(9-(-(f-(*,(,(@+(+(q+(-*(*(F)()(j)(*((((:'('(['(&(&(3%(%(F$($(`$(#({#(."("(;!(!(N ( (j ()({(,((3((; ( (I!(!(Y44a43 3 N3 2 2 82 1 y1 &0 0 d0 / / J/..%--V-,,-++b+**3))Z)((&''J'&s&%%3$$P$#m#""&!!<  Z m'  6!!H)))))))))))))))))))))))))))))))((((((((((((((((((((((''''''''''')))))))))))))))))))))))))))))))((((((((((((((((((((((''''''''''')))))))))))))))))))))))))))))))(((((((((((((((((((((('''''''''''(-(0(3(7(:(=(@(D(G(J(N(N(J(G(D(@(=(:(6(3(0(-()(&(#((((( (''''''''''''''{'q'a'Q'A'1'!'&&&&&&&&&&o&`&J-- ,- - .. -- -- - -- ./ //././//0000/0/001111000111122122223233443335544-- ,- - .. -- -- - -- ./ //././//0000/0/001111000111122122223233443335544-- ,- - .. -- -- - -- ./ //././//0000/0/001111000111122122223233443335544-:-#- .......q.[.C.*.. / / / / /w /Y /< / / 0 0 0 0 0q 0S 04 0 0 1 1 1 1p 1K 1& 1 2 2 2 2w 2R 2, 2 3 3 3 3t 3I 3 4444x4L4!4555z5O                                                                                                                                                                                                                                                                                                            ߾ѽĽݾϽ½۽̽ٽʽ  ֽ ʽ  ٽ ̽ ½ܾнŽ޾ӽǽ࿽ؽͽĽ߿׽̽,((((H((+(({((B(()((q((<((((f( (5( (( (f( (9( (( (q( (B((+((((O((-((((X((3((((t((K((2((((n(Gz6n/c(W !  W %  c /u=Gg:`4=Խ=˽<ý;ܾ:Ͻ:ý9ٽ9ʽ8߿7ӽ7Ľ6۽6̽54ս4Ž3ܾ2˽2࿽1ѽ1½0ֽ0Ž/۽/˽.߿-н-,ӽ,½+ս+(/(=((=(k(<(E(;(,(:((:(B(9((9(c(8(1(7((7(K(6()(5(o(5(7(4((4(Q(3(*(2(l(2(0(1((1(>(0((0(P(/()(.(h(.(/(-((-(9(,((,(A(+((+(==]<2;:u:/99T877965a5#44@32^21{1+00>/.Z.-v-%,,.++((((((1 1 2 2 2 3 445567789:;;< ?1( 1(G 2( 2(j 2(* 3(m 3()4(b5(5(:6(w7(7(/8(D9(P:(V;([(;(F(<(2(=()( (1 14 2 2Z 2 3^ 34R55&6i77819?:E;J;3<= 2 2 2ս 2Ľ 1 1 1 1׽ 1̽ 1½ 0 0 0 0 0 0 0 0 0 ,*'&ǽ#н!۽!Ͻ#'* ̽- 0½3޽6ܽ 2( (2( (2v( (2?( (1( (1( (1( (1|( (1Z( (18( (0( (0( (0( (0( (0( (0( (0( (0( (0( (f,((>*((*a'+((<&G((*a#g(( 2( 2(6 3( 3(-4(v4(*5(_6(6(O7(7(A8(8(29(}9(*:(_;(;(I(;((;(6(<((<(+(=(`(?(""Q##Y$$_$%g%&n&'r'(o()l)*i*+g+,c,-Y..J/ /= 0 04 1 1* 2 2" 3 34h45N66=77.889p9:N;;6;;"<z<=O? =<<;;:998 =@<(<(/;(k;(:(G9(9(38 =-<<;\;:4998'''&&&&&&&&&&&%%%%%%%%%%$$$$$$$$########"""""""!!!!!!      '''&&&&&&&&&&&%%%%%%%%%%$$$$$$$$########"""""""!!!!!!      '''&&&&&&&&&&&%%%%%%%%%%$$$$$$$$########"""""""!!!!!!      &3&&%%%%%%%h%R%;%$%$$$$$$m$P$3$######g#J#-#"""""e"A"!!!!!l!H!$     j @ mCpF5455566666667788898989:9:::;;;:<<;<;<==<====5455566666667788898989:9:::;;;:<<;<;<==<====5455566666667788898989:9:::;;;:<<;<;<==<====5"5666k686 777x7E78888Q89999O9:::s:::;;;^;%<;;;H; <<<Q<===Y=                                                                                                                                                                                                                                           ===`==<<f<!<;;V;:::B:99t9-98                                                                                                                                                                     Ľ*ؽ*Ž)ٽ)ǽ(ܽ(ɽ'ݾ&ʽ&ݾ%ɽ%ܽ%Ƚ$۽$ǽ#ٽ#ƽ"ؽ"Ľ!׽!ý Խ н྽̽ݽǽٽĽԽѽ߾ɽؽ½ҽ྽˽ٽĽҽ´̽ٽ½Ͻ޽ƽԽ´ʽؽνܽýнݽýнݽĽG(*((*(P()(()(X((()('(`('(*(&(i(&(*(%(d(%()($(^($(($(Y(#((#(T("(("(N(!((!(G( (( (9((((/((p(()((\((((J((((9((((+((c((((B((((-((i((((G((((/((o((((A(((()((T((((/((h((((=((~((((F((((((H((((((K((5**?))G('Q'&[&%U%$O$$H##C""<!!5  %{cL8%zS/[4a.xCZ)r4z6|9(((((((((((87665544 3 2 2 1 0 0 / /.--,++**)(('&&%%$##"!!  !!"##$%%&''(()**+,(v8()7(Q6(6(75(5(+4([3 (3 (82 ({2 ()1 (I0 (0 (0/ (e/(.(=-(-(+,(U+(+(4*(r*()(F((((+'(P&(&(0%(^$($(7#(q#("(>!(!(* (I((.(V((0 (^!(!(4"(f#(#(8$(q%(%(=&({'('(C((((*)(H*(*(++(O,(h87@66#5u54K3 3 $2 m2 1 60 0 / U/.)-y-,C++*d*)3(('>&&%M$$##c#"*!v! 6E M!!"W##$$c%%)&m''0(w()5**+=,     !!!!!"""""#####$$$$$%%%%&&&&&''''(((())))****++++,,,,---.     !!!!!"""""#####$$$$$%%%%&&&&&''''(((())))****++++,,,,---.     !!!!!"""""#####$$$$$%%%%&&&&&''''(((())))****++++,,,,---.a1  n =  !!z!J!!"""H""##j#2##$$T$$%%v%?% %&&H&&''O''((V(())]))**K**+|+7++,h,#,-                                                                                                                                                                                                                        8_87778766U6 55r5#544B43 3 ^3 2 2 i2 1 1 p1 0 0 x0 #0 / / ,/..2.--%,,t,++f+**W*))J)((.('p'&&L&%%($$h$ ##                                                                                                                                                                                                                                    ѽ޽Žѽ߽ý Ͻ ۽  ̽ ׽ ⿽ ɽ ս  Ž н ۽ 㿽 ɽ Խ ߽ ýνؽ⾽ƽѽܽ㿽Ƚѽڽǽѽ۽ǽнٽý̽Խݽ㿽ǽϽؽýʽҽٽɽѽٽཽȽн((((M((((((F( (( (( (9( (q( (( (/( (`( (( ()( (P( (( (( (4( (e( (( (( (C((x((((-((V((((((2(([((((((/((W((((((.((U(((((()((E((n((((((1((W((((((((A((f((((((((=((b((((((((9(]((;4 t  % c   Q   > {    V   0kFKF|Dx2`Fu.W)R{%Mv(((((((((((,-.. / 0 0 1 2 2 3 4455677899::&#!  ɽ "#$%&''()*++,-- . / / 0 1 1 2 2 3 34445555,(--(V.(.(0 /(] 0( 0(3 1(f 2( 2(9 3(z 4(4(C5(5(+6(P7(7(08(^9(9(;:(:(*&('%! #&((U(#('!!$((("(" $((7( (%#((|((' %((*((&!((N(($&((#$((" "((!"(!#(!$("%(#&(%'(&'('(()(!*($+(',(',("-(&. ('. ("/ ('/ ( 0 (%1 (1 ($2 (2 ($3 (3(&4(!4(4(%5(#5( 5(5,-D.. /M 0 0 1V 2 2% 3l 440556>778M99':v:'  C# "  #   o    <      "  #  $  %  &  '  '  (  )  *  + -  ,  -  .  .  /  0  0  1  1  2  2  3  3  4  4  4  5  5  5  5 ==<<;;:998877655443 3 3 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1==5<(...////000 1 1 1 2 2 2 2 3 3 3 4 4 4 5 5 5666777888999:::;;;<<<====>...////000 1 1 1 2 2 2 2 3 3 3 4 4 4 5 5 5666777888999:::;;;<<<====>-T--.z... . / K/ / 0 h0 0 1 1 91 1 2 W2 2 3 _334g445n556v6$67}7*78w8 89i99:\: :;O;;<A<<=*>            ! ! !! "# $ # #$$ &% & '((' ( ())* * , , -,../ //011213344456            ! ! !! "# $ # #$$ &% & '((' ( ())* * , , -,../ //011213344456            ! ! !! "# $ # #$$ &% & '((' ( ())* * , , -,../ //011213344456C#"z"!!A! q 3h +  U !w!""'##H$$i$ %%&&8''K((\()n)**++,,*--:..;/ /< 0 0C 1 1E 2 2G 3 3I 44J55>6                                                                                                                                                                                                                                                                                                                                                            ֽ޽((+Gg4X|=Ž=̽=ҽ=ؽ=޽=侽<ý<Ƚ<Ͻ<ս<۽<<;Ž;˽;н;ֽ;۽;;徽:ý:Ƚ:ͽ:ҽ:ؽ:ܽ::9ý9ǽ9ͽ9ѽ9ֽ9ڽ9߽99濽8Ž8ɽ8̽8ѽ8ս8ٽ8ݽ8887Ž7Ƚ7ͽ7н7ӽ7׽7ڽ7ݽ7(/(=(L(=(m(=((=((=((=(+(<(B(<(^(<({(<((<((<((<(1(;(L(;(h(;((;((;((;((;(,(:(B(:(Z(:(t(:((:((:((:((:(/(9(D(9(Y(9(p(9((9((9((9((9((9(3(8(J(8(^(8(p(8((8((8((8((8((8()(7(6(7(J(7(\(7(o(7((7((7((7((7((7(=;=_====</<O<o<<<<;;;Z;v;;;;:/:J:g:::::919I9b9z99999888N8b8x888887"787L7a7t77777((((;`x9d__p8m__8y__8__7__6c__5j__4u__4__3_ _2a_ _1g_ _0q_ _/~_ _/_ _.`_ _-d__,n__,__.j_ _/_ _1d_ _2s_ _3a__5r__6a__8t__:d__;y__@(#(=( (<((;((:(&(8(#(7((6((5(&(3( !(2( (1( %(/( (.((-( "(+((*( $(((('( $(%(($( !("(&( ((( #((&((!((# ((% "((&$(((&((''((" ('(((&((&(&(($(%((" )"((* ((* ((*%((* (('*('(( &( $(!!($('  ( "(%%('(' *("-(  /(' 2('5('9(<(" (>(@=< ; :87 6 53 2  1 / . -+ *( '% $"   ! #%'( ( (  (  ( ) ) * *  *  + * ( &$"   " %' *- 0  2 6 9< > =_t:_e8_n5_b3 _i0 _n-_t*_n'_q$_m _c{_`u#_d{'_m*_`o._`o 3_i~c_5_bur_7_du ((=( '(:(!(8(%(5((3(  (0( "(-( $(*("('("($('( ( $((  ((# #(('%((+%((/#( (3 '((5 #(('7  = ;8 5 3 0  - * ' $ !   # ' + /  3 5  7;(!(<( <((577777555555555544444 3 3 3 3 2 2 2 1 1 1 0 0 / / ..--,,*(&$"!     !(7(7(7(7(7(7(7(5(5(5( 5(!5(#5(#5(%5('5(4(4( 4($4(&4 (3 (3 ("3 (&3 (2 (!2 (&2 (1 ("1 (&1 (0 ($0 (/ (#/ ('.(".('-(#-(,($,(*T((&)k(("&(('$#(&#8(#!e(('>(%($? (!$ ( j (I(' 4(' &(' {('X('@('+(*i(i(W(K!7 7 7 7 7 7 7  5  5  5  5  5  5  5  5  5 6  4  4  4  4 5  3  3  3  2  2  2 3  1  1  0  0  /  / 0  . /  - .  ,  * F ( _ &  $  " ) ! Y    1    1      ^   ; $   p  K  2 YZF9! 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 334444555667778899:;;< $1 *1 31 ?1 K1 ^1 w1 1 1 1 $2 62 R2 }2 2 2 -3 R3 33*4Y44 4F55 5R66-77"7r8!8y9%9:F; ;!!?  @B966687889:;:;;<== 66687889:;:;;<== 66687889:;:;;<== 6077'8899:: ;v;;c;<B==*                                                                                                                                                                                                                                  ==<}<;`;:@:9%887d765554r43 ?2 2 1 1 0 L0 / .o.-/,, +M+*)s)(5''&;%% $C##"H!!                                                                                                                                                                                                    77羽66Ž6Ƚ6˽6Ͻ6ҽ6ս6ؽ6ܽ6߽6665ý5ƽ5ɽ5̽5ν5ҽ5Խ5ֽ5ؽ5۽5޽555544ý4Ž4Ƚ4˽4ͽ4ѽ4ҽ4ս4ؽ4۽4ݽ4߽44444辽33ý3Ž3ǽ3ʽ3̽3ν3н3ҽ3Խ3ֽ3ؽ3۽3ݽ3߽3(7((7(,(6(;(6(J(6(Z(6(i(6(x(6((6((6((6((6((6((6()(5(3(5(C(5(Q(5(_(5(l(5(w(5((5((5((5((5((5((5((5((5((5(,(4(8(4(C(4(O(4(Z(4(g(4(r(4(~(4((4((4((4((4((4((4((4((4((4((4(/(3(8(3(B(3(L(3(U(3(_(3(h(3(r(3({(3((3((3((3((3((3((3((3(776'686I6Z6k6|6666665505@5P5^5k5x5555555554$404=4J4X4d4r4~44444444443$3/3:3D3O3Y3d3n3x3333333((((((~g_6_|f_2_ }h_._p`_)_}i_%_|j_ _sc__"~oa__)xk`_ _/{pb__7uk ?(# 6(! 2 (  .(#*(& %(%  (%#(" )($ /(&! 7($  ( ?( 6 2  . * %   # ) / 7  ?_gy6_br1 _gw+_gu$_gu _hu'_`it~ 0_amw:_bir{_>_a_=_󼳬wog`_2_ 𶰨~xsnjf_#_庵~~{xxtrrlkk  !'(6(%(1(  %(+(  &($(  &((  #'(((  $( (0 "&((: >=($! 3 (%" #(&%#    ( 7 1  + $   (  1 :~ 3  #    8_dkry+_aipw}"_dhntz )_cfknrvz~kmrruxx~툋 (!&(8(  #&(+(  #%(("  "$&( () #&((    "#$%'( ( 8 + "  )   ?ǽ<:99876432 1 0 / . -,,+*)('&%$#"! "#$&'(*+, - 0 134?(J(<(k(:(+(9(:9(T8(e7(~5()4(03(12(5 1(5 0(7 /(< .(5 -(0,(,+()+(*()(((x'(m&(k%(q$(t#("( ()(.(8(H(f() (2"(G#(o$(0&(K'()((A*(l+(1s, ()X- (>0 (+1(Y3(=4?7<[:9&9B8U7q5432 1! 0# /( . -,++*)w(j'^&[%b$f#r"~ $5V "4#`$&9'v(.*]+l, J- +0 x1H3)4"$&(*, - / 134679:; (A"(8$(1&(+((a*(K, (9- (*v/ (T1(62(h4(<6(|7(99(b:/; ."$$&u(Q*9, %- h/ B1"2Y4(6o7%9R:;  <=<;;:99 <=<;;:99 <=<;;:99 ?=<;:;: 9>:9 8F87 !!""##$$%%&&'(())**++,--..//0 1 1 2 2 3 4 4 5 5677889::;<<== !!""##$$%%&&'(())**++,--..//0 1 1 2 2 3 4 4 5 5677889::;<<== !!""##$$%%&&'(())**++,--..//0 1 1 2 2 3 4 4 5 5677889::;<<==/ # !!""z# #m$$[%%B&'&'((s))U**;+,$,--[. . 4/ 0 0 h1 1 >2 33u44D566e77/89 9K:;;i<<.     !! ""#$%&%'(())++,-,./0/0122345767899:<<==     !! ""#$%&%'(())++,-,./0/0122345767899:<<==     !! ""#$%&%'(())++,-,./0/0122345767899:<<==O J  <!!"-#w#$%c&&'C(()$*Y++ ,/-t-. /B 0 0 1 2; 3{ 34516l77 8'9Y::;;1<X==                                                                                                                                                                                                                            =<+;S::98$7@6e654 3 2 41 V0 ~0                                                                                                3333龽22½2Ľ2ƽ2Ƚ2ʽ2̽2ν2н2ҽ2Խ2ֽ2ؽ2۽2ݽ2߽222222龽11½1Ľ1ƽ1ɽ1ʽ1ν1н1ҽ1Խ1ֽ1ؽ1ڽ1ܽ1޽111111꾽00½0Ž0ǽ0ʽ0ͽ0н0ӽ0ս0׽0ڽ0޽00000(3((3((3((3(+(2(4(2(<(2(E(2(N(2(W(2(`(2(j(2(s(2({(2((2((2((2((2((2((2((2((2((2((2((2((2(.(1(7(1(@(1(I(1(R(1([(1(d(1(n(1(w(1((1((1((1((1((1((1((1((1((1((1((1((1(+(0(3(0(>(0(I(0(T(0(`(0(k(0(w(0((0((0((0((0((0((0((0((0((0(333322(222<2G2Q2[2e2n2x2222222222221#1-171A1K1T1`1j1t1~1111111111100*070C0P0]0j0w000000000 =ؽ8޽53޽/޽,*(%"߽߽߽ =(D~(8(C(5(Vl (8Sh~(.G`z(2I_y7!/>MZep{+ 2FWix!#;Nat$:Qg~+F_{ $C[s6Ro7Pnƽ (.4=?FKPVZbdmnnmowwqmmcc_YYQKC90((􎘠󻺰rbRA3( (pYA+((cA)( *,4:@FKTWbccbcllfbbVVQJJA;1&􇒜󻺮zgUC/ eJ/|W/<9630-*'$! (jG)(;(xH)(8(wI)(5(vG)(2(wI)(/(wI)(,(tE(*(sE('(sD($(sE)( (vH)((vH)((vI*((P*((zO,((]4((iA)( (^9((vQ0((vX:(_6;n78n85l62n8/n8,j3*i3'h2$i4 m7m8m9wAq@P ^0 {Q&mBmJ':5/) 񦨫  "$(bE-(:(|bH0(5(~fQ<*(/(kVB2()(qaQC6*( (񦛒yobZRJC;3,((  "${V4:tV85wZB)/yaH0){hUB1" 񦙎qeWMC:1(~}||{  "$=ٽ72. )#򻹸!$&),/1479=(+S(7(6f(2(+M|.(+Pz )(3R}#(3DWm()4DTet(*3=KXep(06=DJQXbjt!$&),/1479=Ax7"V2;o.>l )Ap#3Jc 4GZm,:87531 / ,*(%# "$'* .158>(6(:(0(8(.~7(05(03(71(@ /(L ,(*f *(3~((F%(-p#(F (0s()[(F(>!(8v$(<'(K* (*S.(>y1(.a5(+W8>":8q7z5y3#1- /: ,W *q(3%a#3 eK3*x!$h$(t'9* A.*k1Q5F868:;(,6(f8(M:@;x6V8;:,;87765 5 4 3 3 2 1 1 0/..-,,+*))(''&%$$#"!!  !!"#$$%&'(()*+,,-./0 1 1 2 3 4 5687765 5 4 3 3 2 1 1 0/..-,,+*))(''&%$$#"!!  !!"#$$%&'(()*+,,-./0 1 1 2 3 4 5687765 5 4 3 3 2 1 1 0/..-,,+*))(''&%$$#"!!  !!"#$$%&'(()*+,,-./0 1 1 2 3 4 567O654J43 28 2 1 0, 0n / . .Y-,+C+*) )X(' &/&j%$#B#"! < p1a  '!S"##$-%V&''(+)T*++,%- A. e/ 0 0 1 253O4s5             ! #$ $% &() )* +- . ./ 012 34 6789:;;<=             ! #$ $% &() )* +- . ./ 012 34 6789:;;<=             ! #$ $% &() )* +- . ./ 012 34 6789:;;<= / .-!,/+F*_))(' &%$$6#K"U!d }  !"##$(%*&0'2(5)<*>+H,J-L.U /Z 0P 1M 2K 3C4@5>66738-9*:*; ;<=                                                                                                                                                           =<;:u8d7U6K564#3 2 1      0/ý/Ž/ǽ/ʽ/ͽ/н/ӽ-׽+ڽ)޽&$" 뾽ŽȽ̽нԽ׽۽ ޽  ½ƽ)(/(3(/(>(/(J(/(U(/(`(/(l(/(x(/((-(8(+(K()(T(&(*a($(-m("(8( (B+((I9((JI((LX((Th((Uw((Z((Q((H( (@( (>( (7((0(()i-((Z=((EM(6`v//+/8/D/Q/^/k/y-$x+9)C&R$_"$} /7%87:HCYDjJ{@6 - * #ZI)2;"Pi  ߽߾(3t(N (3t (N(-p(9((N+ag< g <b%u<R      #%(+.0368<   #%(+.0368<   #%(+.0368<Ϻ  "%(*-0258:Ϻ  "%(*-0258:Ϻ  "%(*-0258:'*,/257: '*,/257: '*,/257: <<;:987665 4 3 2 1 0/.-,+*)('&%$#"!  !"#$%&'()*,-./0 1 2 3 4<<;:987665 4 3 2 1 0/.-,+*)('&%$#"!  !"#$%&'()*,-./0 1 2 3 4<<;:987665 4 3 2 1 0/.-,+*)('&%$#"!  !"#$%&'()*,-./0 1 2 3 4< ;:$929E8V7e7u65432 1 0 / .) -+,2+4*6)>(@'B&K%M$W#U"R!O MDA975 .!,"&#"$%& '()+u,e- U. E/ 30 $1 2 37789:;<== 7789:;<== 7789:;<== 667809E:^;v<=             !#$% &' (*, ,- /02246799;<=            !#$% &' (*, ,- /02246799;<=            !#$% &' (*, ,- /02246799;<= 0 u.b-G,0+"*)(u&O%2$# "!g>'  ~"R#*$%'[(0)*,S-'. 0d 12 2 3v5@679D:<e<.=                                                           @=W; :8F76\4 3 n1 -0 .:- +L*)N'%J$ "A! =   "%'*-0258:=   "%'*-0258:=   "%'*-0258:=  "$'),/247:=  "$'),/247:=  "$'),/247:=!#&)+.1469 =!#&)+.1469 =!#&)+.1469 =<:976<:976<:976?<:E8 8A6 573<<;:8765 4 2 1 0/-,+*('&$#"! !#$%'(*+,./ 1 2 3 5689;<<<;:8765 4 2 1 0/-,+*('&$#"! !#$%'(*+,./ 1 2 3 5689;<<<;:8765 4 2 1 0/-,+*('&$#"! !#$%'(*+,./ 1 2 3 5689;<>;P:399 86`5@4#31 0R /+ . ,+T*-)'&U%$$ "e!/ w; >"#o$/& 'Y)"*+@- . f0 1w2.45=7 8M:;P 5789:;<> 5789:;<> 5789:;<>46\7H819:;=  "$%((*-.022578:;= ?  "$%((*-.022578:;= ?  "$%((*-.022578:;= ? 1!m#%P& (/)d+-K.w 0 2C 3f5748\:;=: ?  "$&(*+-/3568<>?  "$&(*+-/3568<>?  "$&(*+-/3568<>?=[;w97)6=4d2 n0 .,*!(-&:%I#A!A@ >"=$=&8(%*,z.i 0T 3A5579g<<="?  !#&)+.1369==<97 4 2/-*(%#   !#&)+.1369==<97 4 2/-*(%#   !#&)+.1369==<97 4 2/-*(%#  < f:P8&5U3 *0 f.3+s)3& U#w!<^   #&(+-0369 |   #&(+-0369 |   #&(+-0369 |?:96?:96?:96:f 7$5M3o;:864 2 0.,*(&$"!#%(*,/ 1 469;>;:864 2 0.,*(&$"!#%(*,/ 1 469;>;:864 2 0.,*(&$"!#%(*,/ 1 469;>;>9B8M6C4B2A 0@ .7 +5)*'%#o !^M2 o "M$('w)P+ -. f 013w5D8r:D=4 3 1 /.,+)'&$"!!"$&()+-/ 1 2 468:<~4 3 1 /.,+)'&$"!!"$&()+-/ 1 2 468:<~4 3 1 /.,+)'&$"!!"$&()+-/ 1 2 468:<~24 0o / -H+ *,(o'%D#" <o6 ^! ##%='^(w*, +. @0 \1w3579$;0~!#&),/2 5 8;> ?!#&),/2 5 8;> ?!#&),/2 5 8;> ?!+#<&M) U,^ /o 2,5 o8o;^= ?=:6 30,(%!!%)-1 6: @=:6 30,(%!!%)-1 6: @=:6 30,(%!!%)-1 6: @^;W834^1 D.1|*U'"f#3w D!^%M)D- D 1 @x6M:+^ ?: 50*$ &-5 >: 50*$ &-5 >: 50*$ &-5 >=J9:73 /+'# $). 38>:73 /+'# $). 38>?9w35̈D3ݙU/ٜ] +ݙ^&ՙU"̑Uw? ̑^+o<#鷀I( 泀M"-բwM2Ób27"=3 1 .+(%""%(+. 2 59 3 1 .+(%""%(+. 2 59 3 1 .+(%""%(+. 2 59 0* -M *^ 'f%o"Հ#~+Հ(w$!o$o'W* ݑD-o1U 4z08U eeYY,,wiRedPanda-4.1.12/app/resources/postinst000077500000000000000000000015631444020206400202210ustar00rootroot00000000000000#!/bin/sh set -e case "$1" in configure) desktop-file-install /usr/share/applications/wpanda.desktop xdg-mime install --mode system /usr/share/xml/misc/wpanda-mime.xml xdg-mime default /usr/share/applications/wpanda.desktop application/x-wpanda xdg-icon-resource install --context mimetypes --size 128 /usr/share/icons/hicolor/128x128/apps/wpanda.png application-x-wpanda xdg-icon-resource install --context mimetypes --size 64 /usr/share/icons/hicolor/64x64/apps/wpanda.png application-x-wpanda xdg-icon-resource install --context mimetypes --size 48 /usr/share/icons/hicolor/48x48/apps/wpanda.png application-x-wpanda xdg-icon-resource install --context mimetypes --size 32 /usr/share/icons/hicolor/32x32/apps/wpanda.png application-x-wpanda xdg-icon-resource install --context mimetypes --size 26 /usr/share/icons/hicolor/26x26/apps/wpanda.png application-x-wpanda ;; esac wiRedPanda-4.1.12/app/resources/toolbar/000077500000000000000000000000001444020206400200455ustar00rootroot00000000000000wiRedPanda-4.1.12/app/resources/toolbar/arduino.svg000066400000000000000000000115171444020206400222340ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/toolbar/brasil.svg000066400000000000000000000274771444020206400220630ustar00rootroot00000000000000 wiRedPanda-4.1.12/app/resources/toolbar/clearSelection.svg000066400000000000000000000114311444020206400235220ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/toolbar/copy.svg000066400000000000000000006565561444020206400215670ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/toolbar/cut.svg000066400000000000000000006631531444020206400213770ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/toolbar/default.svg000066400000000000000000000075511444020206400222220ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/toolbar/delete.svg000066400000000000000000006734531444020206400220520ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/toolbar/dolphin_icon.svg000066400000000000000000000132041444020206400232330ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/toolbar/exit.svg000066400000000000000000000052161444020206400215430ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/toolbar/fast.svg000066400000000000000000000076511444020206400215340ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/toolbar/folder.svg000066400000000000000000000050701444020206400220430ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/toolbar/help.svg000066400000000000000000000103161444020206400215170ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/toolbar/helpQt.svg000066400000000000000000000103301444020206400220200ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/toolbar/mute.svg000066400000000000000000000305651444020206400215510ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/toolbar/new.svg000066400000000000000000006560721444020206400213770ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/toolbar/panelBox.svg000066400000000000000000000143221444020206400223400ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/toolbar/paste.svg000066400000000000000000006556521444020206400217250ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/toolbar/pause.svg000066400000000000000000006607441444020206400217240ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/toolbar/pdf.svg000066400000000000000000000046671444020206400213540ustar00rootroot00000000000000 image/svg+xml PDF wiRedPanda-4.1.12/app/resources/toolbar/play.svg000066400000000000000000006577311444020206400215560ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/toolbar/png.svg000066400000000000000000000047321444020206400213600ustar00rootroot00000000000000 image/svg+xml PNG wiRedPanda-4.1.12/app/resources/toolbar/recentFiles.svg000066400000000000000000000057471444020206400230460ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/toolbar/redo.svg000066400000000000000000000035131444020206400215210ustar00rootroot00000000000000 wiRedPanda-4.1.12/app/resources/toolbar/reloadFile.svg000066400000000000000000000060551444020206400226420ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/toolbar/rename.svg000066400000000000000000000065771444020206400220540ustar00rootroot00000000000000 image/svg+xml a b wiRedPanda-4.1.12/app/resources/toolbar/reset.svg000066400000000000000000000064141444020206400217150ustar00rootroot00000000000000 image/svg+xmlOpenclipartRefresh Icon2013-08-22T04:53:13A refresh iconhttps://openclipart.org/detail/182094/refresh-icon-by-pianobrad-182094pianoBraddesigniconrefreshweb wiRedPanda-4.1.12/app/resources/toolbar/rotateL.svg000066400000000000000000000052161444020206400222040ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/toolbar/rotateR.svg000066400000000000000000000052151444020206400222110ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/toolbar/save.svg000066400000000000000000000073371444020206400215360ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/toolbar/selectAll.svg000066400000000000000000000107321444020206400225010ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/toolbar/stop.svg000066400000000000000000006572061444020206400215730ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/toolbar/toolbar.qrc000066400000000000000000000025011444020206400222140ustar00rootroot00000000000000 arduino.svg brasil.svg clearSelection.svg copy.svg cut.svg default.svg delete.svg dolphin_icon.svg exit.svg fast.svg folder.svg help.svg helpQt.svg mute.svg new.svg panelBox.svg paste.svg pause.svg pdf.svg play.svg png.svg recentFiles.svg redo.svg reloadFile.svg rename.svg reset.svg rotateL.svg rotateR.svg save.svg selectAll.svg stop.svg trashcan.svg undo.svg usa.svg wavyIcon.svg wires.svg wpanda.svg zoomIn.svg zoomOut.svg zoomReset.svg wiRedPanda-4.1.12/app/resources/toolbar/trashcan.svg000066400000000000000000000045021444020206400223720ustar00rootroot00000000000000 Trash Can wiRedPanda-4.1.12/app/resources/toolbar/undo.svg000066400000000000000000000027221444020206400215360ustar00rootroot00000000000000 wiRedPanda-4.1.12/app/resources/toolbar/usa.svg000066400000000000000000000015521444020206400213610ustar00rootroot00000000000000 wiRedPanda-4.1.12/app/resources/toolbar/wavyIcon.svg000066400000000000000000000074011444020206400223670ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/toolbar/wires.svg000066400000000000000000000067771444020206400217400ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/toolbar/wpanda.svg000066400000000000000000000264011444020206400220430ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/toolbar/zoomIn.svg000066400000000000000000000067271444020206400220550ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/toolbar/zoomOut.svg000066400000000000000000000062421444020206400222460ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/toolbar/zoomReset.svg000066400000000000000000000074671444020206400225730ustar00rootroot00000000000000 image/svg+xml wiRedPanda-4.1.12/app/resources/translations/000077500000000000000000000000001444020206400211245ustar00rootroot00000000000000wiRedPanda-4.1.12/app/resources/translations/qt_pt_BR.qm000066400000000000000000006251661444020206400232150ustar00rootroot00000000000000)[`M\Dv]x2e_S_Eyg^1_BEb7Qn$}[,yy*G9~Ez" Z@%rUD3֍-֍q֍t֍{500S0045 5!  D0 D{+*Ce1 e|nįBįįEC=]F,Q|T֍VCV0KYQ0YVZabjN ~n(^mӕr|tY;k*ya*yȣ*T*0s+F +LϠ+fk"+zW+++z+k+w++}+į+įR+7 8O$;=<5@C:DdZ#Fn4 Fn4pGQGCH/lHw9R&I'}uIyAJ+ J6>jJ6J6RJ6Jcbs5Kr"L 1LZLL~Ms!M5?MeNNNO| PFE3Q "Q7RR]R|MR S8^3}T1TU?^U}|V1wV}w!V1VV4BV4oVVE4W WTb~WTkiWT6VX97XTX˙TX83YYYY;"YxZ+;yZg;Z[f3@\}n\]4\]4J\C^GatgchiQj5RYkQmm5Vn^~8oʙprxXuv*8Cvgdv[xuIzg_zlD_zy%a|^|^ev/v9hԱ 2cݣfH)CDA4LY5Y6C}#[TJI-N!s:qt-MQ#%17EF ȸɵn*ɵnTɵnGɵnjɵn!ɵn\ɵn]ɵnS˒M_ B8^+T8cI) a/8/8/9/9]/96u=<(?>M1OtvuMaPҞrASX۔\rhje~ N]ɤA?D<ܟ5 |#P$`pc%UT&=*4 +3,ҴF-ctI.H3f?4 D"l%%) )+-/=NA1$B;k*(>*(?*(?P*(?*(?*(@ *(@L*(@*(@*(AK*/eC+ Zm+,N;5=7>T?4DmKiO&[\cKE\\"`cփ,dfGmtip/TmqnszutuJ$u(!IueRv}Dd}kaN^9M.2aQߺ~S R2Ad/$$W$1w~Bg-Q3 6@(D1u.vr ^҅.(M֊9UB n'y,g VV?xtTTAo ~|Z n4M#&H+ Z.ߖ/`4!5"d?5)I%Cr:IxSpLPywHR>YMYu*_oc{C8c{D8@c{E8pdn,es6fk*^kD>lD0nocdpnx|ۊ9n(N]IR\III=(r~I&Y&i'&y'b%%&6&r%F%I(Y)i)B'((R('uDuD?%ݾzDoLos,q2,^,,=]-J];`.iC  tɘeϛ(ffRvt*sI9N>NvZQ~TPKTTQKTRKTSLTTLGTULwTVLTWLTXMTYM7ISPquVS6fRjB"4 Ur  QA^S, l$#S#Ԩk$&~p)2*e~.y5*j8*8+*8;x>1%?"oDH,FHOaKNL6)MN<O{@V|XG$]4 ]]]Ce4OTe6;Og^3k4nMrH$ww,:wy}ZTz^~/P;P15t7Fww8 uE8 8dG%ص:F%Q+:|&6`_0Yz& ;?>U=J xAs9\=sVX3%AC-5Dh52C^Ak˾ixZ>i}Dzcߺ3B`}サ䏥ft{롥X+! J3gE!/-dd  $~bv-~b{.33usGM3!%?@R)^+y[+nO+3,$/w0Y[(2~d^4~6P 26 : 8-O<<nW@7JAssBGGbzH9']LYLAU8L6OrGPѧR 5RC!SfgSnUTfUUTUTTV(c`YĻZ4l6Z9ZqZZ[Н]k*u^o2bW^~b^nح_PF_pmdJfg-j7kQ)n$4aoNpOq"{{v'}9d}u4}wk}h~_4_r-kB\Q=v|t2*tj3bP<>RHOz&bT<WUDYttLt_ 3pa4ALINF!ʢ-ʢ%Xƴ$d.uddd&Zd+-59@ 2Uэ}jV+ NS%ڋ%WD㵾f1EkGt]sasyUR^8)'[<4Xd Bh#p`w Ġm tNmF',%6wvaPjz 0b`p2^6R75}7k͗8ˍ:3$>*0?;4CU?DۖF ŭJ03KP'$L7JL:RrU|\j]/tarwf1ldmEn8|jz}wZ0o}$"@^Olϗ|Z}2Z6D;_`$G` '<\K<Sm|Fn2$··x\d׳vcN2CPfCG}[؞e *t_wYbp##%K' E+i[H+)Z,N-B'.YW|.0[~4i5kE1.E??@J;CtI~EfWEn FB_GHIlNP0NPi҆V%V%XU sVYea`^MA^MA_L`SbD=b^XmhIi$m5/tzx1 Nz*2~\!@d|UC*KKz_c.4WmQ# bPaD2y5Um%B97_bki}>CUUʴ5?ʶon)xPZϡ$^ Ԅӟ۔#ljDEldAV+dS^nF5GY*p1%1&D Is=i - }$+ qe ڤ} ڥu/ dMO  E E@ OH i,a AcxQ I "kn ##O + 3 en 35M - ] bb b` b` gUN hiI lau la lf= qzCk s-> tNj va v v wl9 xq @u | J| tw  .@ y`D( H g S ! d:6 LO D ҉c $ > :  n[ .^ U~S WY; $ Űe Y+ H ˰ B CG 5Y  O 팤 팤] E %'k vIK )~ x C$ 2% wD qi m$  D 'b }2 O (A " $ '( '(٘ (\?p )fH* )b */H *Ŏ56 .> .? 25! 7uځ ;ł =9 ? Cz H  HvdO7 J" Q Q Rۮހ Ty /8 T^ Uj4~ YHY'c \td ] ^&* ` `b ` bԺ c(r cEhP dht7 eu0 e{ f1 f*s g5Ui gyY gnٞ t) $ >rՈ E! nr8 o9 `}  M  B P P v=G +Tw +  l=z N< ˔E P> W6 68  I 3 V ԁ : F m8 f l   4 . "X) sq ?iw AA bGx 91 R 9Z !i&D r  l I V ݡK > ! > #-tS 'b )*Vy +i[~ 0z} 0N =@! ?C @ Am# B)q CU KE LN- L Mc\UI Oo S( V Z1 ]qt;P ]$+{ c39 c3 f=g io>T l#8 luAv o ֺ sp) wq=c" yCJ }QF< }Y]H @1 ny? R w  Ix1 HkS t Сm $p .@B = Q y e ѐ x zdX $O 5T . q7 Jq  '!c t.!9 x@ k 5 k ‘ ` eC Mq N> / ̷0 ̺ 'ړ -D ) . $n ٷ  % Gϣ ۷k 6\ k  N )yӶ T>1   9I 02 $r9 .t 4 5<  = I; > >- > > > >$ >t >: >V > > @ӊy A5 Ef' K K Kd Mb; OX RVx RVcp SG i Sw] WoZ Y [ [k ^U f hۮy j7oi p4 u  S& B _S LZ > T* T T T(r ( - $] > a> ?) B G c"; S W )d T־ e  .* . . .} . . .j  >| /5I M a U e s: ƝZ e  % ҂p c t $ > Y[  |N n, t aT) aqz  1 8   i] M  $ aT ^\ #=~i (I$GH +> .td 0E 4~/] 64 S 8>N :nPB ;ɾɐ C Fg K9 Pt S,>P feR iFC i it& ie jӮd m9t n u3 u v uo v&2 w w} |A |[ uD ` <= ΣC *z J3 ) x ^ KW [~ʬ U Y[ R6 %7  ] - kY yl "5 UO ̚à ̕ b Yt &l x- w, + f t5K Sk  *5 iՎwGTT*t[=gT?FMeke#!d**.t[/E/E.7=8dQ8;LJDJ%A'NeN޵OOV5[WܬXRu[ d[d `Ja.2gcIij#y$y?.{ ^C%5%eNnV3]04 -f+ZjMgڕÖ5f(>WsHdrS:'W1N03^X:.:1Ƹ(UK>$15rݖ]r/T\EKurFnq7d "   plDlK2>6L"#>%406%4z,--v0i),]0xe]0-1c12wT+<@=|#!=S>kF74FiHmu{KLL$.(U t[V[m4'b4r^c5c{t\:e3 {g3iiCiTwl?1p)Vtbpz3{`r{~a)&*& $tC$Q[$:ͣ5)ͣRqfFaNh~i  8ǻ<ut7ě4fCȌ4Ȭ3rFrRܴf-1YUos5t9l W{~Ofo*H6q[t2a%i{Fechar aba Close Tab CloseButtonSobre o %1About %1MAC_APPLICATION_MENUOcultar %1Hide %1MAC_APPLICATION_MENUOcultar outros Hide OthersMAC_APPLICATION_MENUPreferncias...Preferences...MAC_APPLICATION_MENUSair do %1Quit %1MAC_APPLICATION_MENUServiosServicesMAC_APPLICATION_MENUMostrar tudoShow AllMAC_APPLICATION_MENUAutomtico AutomaticPrint Device Input SlotAutomtico AutomaticPrint Device Output Bin Conexo recusadaConnection refusedQAbstractSocket4O tempo da conexo expirouConnection timed outQAbstractSocket,Mquina no encontradaHost not foundQAbstractSocket$Rede no acessvelNetwork unreachableQAbstractSocket@Operao de socket no suportada$Operation on socket is not supportedQAbstractSocket6O socket no est conectadoSocket is not connectedQAbstractSocket6Operao de socket expiradaSocket operation timed outQAbstractSocketlTentando conectar enquanto a conexo est em andamento1Trying to connect while connection is in progressQAbstractSocket &Selecionar tudo &Select AllQAbstractSpinBoxPa&sso acima&Step upQAbstractSpinBox&Passo &abaixo Step &downQAbstractSpinBoxDiminuirDecreaseQAccessibleActionInterfaceDiminui o valorDecrease the valueQAccessibleActionInterface Volta uma pginaGoes back a pageQAccessibleActionInterface8Avana para a prxima pginaGoes to the next pageQAccessibleActionInterfaceAumentarIncreaseQAccessibleActionInterfaceAumenta o valorIncrease the valueQAccessibleActionInterfacePrxima pgina Next PageQAccessibleActionInterfacePressionarPressQAccessibleActionInterfacePgina anterior Previous PageQAccessibleActionInterface Rolar para baixo Scroll DownQAccessibleActionInterface0Deslocar para a esquerda Scroll LeftQAccessibleActionInterface.Deslocar para a direita Scroll RightQAccessibleActionInterfaceRolar para cima Scroll UpQAccessibleActionInterface$Desloca para baixo Scrolls downQAccessibleActionInterface.Desloca para a esquerdaScrolls to the leftQAccessibleActionInterface,Desloca para a direitaScrolls to the rightQAccessibleActionInterface"Desloca para cima Scrolls upQAccessibleActionInterfaceDefinirFocoSetFocusQAccessibleActionInterfaceDefine o focoSets the focusQAccessibleActionInterfaceMostrarMenuShowMenuQAccessibleActionInterfaceMostra o menuShows the menuQAccessibleActionInterfaceAlternarToggleQAccessibleActionInterface Alterna o estadoToggles the stateQAccessibleActionInterfaceAtiva a aoTriggers the actionQAccessibleActionInterfaceNoNoQAndroidPlatformThemeNo para tudo No to AllQAndroidPlatformThemeSimYesQAndroidPlatformThemeSim para tudo Yes to AllQAndroidPlatformTheme necessrio o Qt %2 para o executvel '%1', mas foi encontrado o Qt %3.,Executable '%1' requires Qt %2, found Qt %3. QApplicationTErro de incompatibilidade da biblioteca QtIncompatible Qt Library Error QApplication SobreAboutQCocoaMenuItemSobre o QtAbout QtQCocoaMenuItemConfigurarConfigQCocoaMenuItem CopiarCopyQCocoaMenuItemRecortarCutQCocoaMenuItemSairExitQCocoaMenuItem OpesOptionsQCocoaMenuItem ColarPasteQCocoaMenuItemPreferncias PreferenceQCocoaMenuItemSairQuitQCocoaMenuItemSelecionar tudo Select AllQCocoaMenuItemConfiguraoSettingQCocoaMenuItemConfiguraoSetupQCocoaMenuItemNo salvar Don't Save QCocoaThemeD&Adicionar s cores personalizadas&Add to Custom Colors QColorDialogCores &bsicas &Basic colors QColorDialog*&Cores personalizadas&Custom colors QColorDialog&Verde:&Green: QColorDialog &HTML:&HTML: QColorDialog.&Selecionar cor na tela&Pick Screen Color QColorDialogVe&rmelho:&Red: QColorDialog &Sat:&Sat: QColorDialog &Val:&Val: QColorDialogCanal a&lfa:A&lpha channel: QColorDialog Az&ul:Bl&ue: QColorDialogXCursor em %1, %2 Pressione ESC para cancelar$Cursor at %1, %2 Press ESC to cancel QColorDialog &Tom:Hu&e: QColorDialogSelecionar cor Select Color QColorDialog FalsoFalse QComboBoxTAbrir menu de contexto da caixa de seleo"Open the combo box selection popup QComboBoxVerdadeiroTrue QComboBoxArgumentos: Arguments:QCommandLineParserrMostra a ajuda com incluso das opes especficas do Qt.,Displays help including Qt specific options.QCommandLineParser\Mostra a ajuda nas opes da linha de comando.%Displays help on commandline options.QCommandLineParserDMostra informaes sobre a verso.Displays version information.QCommandLineParser2Faltando valor aps '%1'.Missing value after '%1'.QCommandLineParserOpes:Options:QCommandLineParser6Valor inesperado aps '%1'.Unexpected value after '%1'.QCommandLineParser0Opo desconhecida '%1'.Unknown option '%1'.QCommandLineParser2Opes desconhecidas: %1.Unknown options: %1.QCommandLineParserUso: %1 Usage: %1QCommandLineParser[opes] [options]QCommandLineParser%1: ftok falhou%1: ftok failedQCoreApplication(%1: chave est vazia%1: key is emptyQCoreApplicationD%1: no foi possvel criar a chave%1: unable to make keyQCoreApplication(Separador de pginas Banner PagesQCupsJobWidget0Informaes de cobrana:Billing information:QCupsJobWidgetClassificado ClassifiedQCupsJobWidgetConfidencial ConfidentialQCupsJobWidget*Dia (06:00 at 17:59)Day (06:00 to 17:59)QCupsJobWidgetFim:End:QCupsJobWidget,Manter indefinidamenteHold IndefinitelyQCupsJobWidget TarefaJobQCupsJobWidget&Controle de tarefas Job ControlQCupsJobWidget*Prioridade da tarefa: Job priority:QCupsJobWidget.Noite (18:00 at 05:59)Night (18:00 to 05:59)QCupsJobWidgetNenhumaNoneQCupsJobWidget,Imprimir imediatamentePrint ImmediatelyQCupsJobWidget&Impresso agendada:Scheduled printing:QCupsJobWidget>Segundo turno (16:00 at 23:59)Second Shift (16:00 to 23:59)QCupsJobWidgetSecretoSecretQCupsJobWidgetHora especfica Specific TimeQCupsJobWidget PadroStandardQCupsJobWidgetIncio:Start:QCupsJobWidget@Terceiro turno (00:00 at 07:59)Third Shift (00:00 to 07:59)QCupsJobWidget"Altamente secreto Top SecretQCupsJobWidget"Sem classificao UnclassifiedQCupsJobWidget@Fim de semana (sbado a domingo)Weekend (Saturday to Sunday)QCupsJobWidget.Autenticao necessriaAuthentication NeededQCupsPrinterSupportVAutenticao necessria para usar %1 em %2.&Authentication needed to use %1 on %2.QCupsPrinterSupportJAutenticao necessria para usar %1. Authentication needed to use %1.QCupsPrinterSupport Senha: Password:QCupsPrinterSupport Nome de usurio: Username:QCupsPrinterSupportFNo foi possvel enviar a transaoUnable to commit transaction QDB2Driver2No foi possvel conectarUnable to connect QDB2DriverJNo foi possvel desfazer a transaoUnable to rollback transaction QDB2DriverVNo foi possvel definir o envio automticoUnable to set autocommit QDB2DriverHNo foi possvel associar a varivelUnable to bind variable QDB2ResultJNo foi possvel executar a instruoUnable to execute statement QDB2ResultBNo foi possvel obter o primeiroUnable to fetch first QDB2ResultBNo foi possvel obter o seguinteUnable to fetch next QDB2ResultHNo foi possvel obter o registro %1Unable to fetch record %1 QDB2ResultJNo foi possvel preparar a instruoUnable to prepare statement QDB2ResultOKOK QDBusTrayIconAMAMQDateTimeParserPMPMQDateTimeParseramamQDateTimeParserpmpmQDateTimeParserO que isto? What's This?QDialogOKOKQDialogButtonBox&Data de modificao Date Modified QDirModelTipoKind QDirModelNomeName QDirModelTamanhoSize QDirModelTipoType QDirModel$Operao canceladaOperation cancelled QDnsLookupVNo foi possvel expandir o nome do domnioCould not expand domain nameQDnsLookupRunnableJA mquina %1 no pode ser encontrada.Host %1 could not be found.QDnsLookupRunnable|Ainda no h suporte a endereos IPv6 para servidores de nomes:IPv6 addresses for nameservers are currently not supportedQDnsLookupRunnableDRegistro de endereo IPv4 invlidoInvalid IPv4 address recordQDnsLookupRunnableDRegistro de endereo IPv6 invlidoInvalid IPv6 address recordQDnsLookupRunnableDRegistro de nome cannico invlidoInvalid canonical name recordQDnsLookupRunnable0Nome de domnio invlidoInvalid domain nameQDnsLookupRunnable0Nome de mquina invlidoInvalid hostnameQDnsLookupRunnableJRegistro de troca de e-mails invlidoInvalid mail exchange recordQDnsLookupRunnableLRegistro de servidor de nomes invlidoInvalid name server recordQDnsLookupRunnable:Registro de ponteiro invlidoInvalid pointer recordQDnsLookupRunnable4Resposta invlida recebidaInvalid reply receivedQDnsLookupRunnable8Registro de servio invlidoInvalid service recordQDnsLookupRunnable4Registro de texto invlidoInvalid text recordQDnsLookupRunnable>Nenhum nome de mquina indicadoNo hostname givenQDnsLookupRunnable&Domnio inexistenteNon existent domainQDnsLookupRunnableFAinda no h suporte para o AndroidNot yet supported on AndroidQDnsLookupRunnableJFunes do resolvedor no encontradasResolver functions not foundQDnsLookupRunnableHFalha na inicializao do resolvedorResolver initialization failedQDnsLookupRunnableA biblioteca do resolvedor no pde ser carregada: No h suporte para carregamento de biblioteca em tempo de execuoDResolver library can't be loaded: No runtime library loading supportQDnsLookupRunnablePO servidor no pde processar a consultaServer could not process queryQDnsLookupRunnable"Falha no servidorServer failureQDnsLookupRunnableBO servidor se recusou a responderServer refused to answerQDnsLookupRunnable"Erro desconhecido Unknown errorQDnsLookupRunnable FecharClose QDockWidget6Fecha o widget de acoplvelCloses the dock widget QDockWidgetFlutuanteFloat QDockWidgetRDesencaixa e reencaixa o widget acoplvel'Undocks and re-attaches the dock widget QDockWidgetZOcorreu um erro ao processar a declarao XML/Error occurred while processing XML declaration QDomParservOcorreu um erro ao processar uma instruo de processamento8Error occurred while processing a processing instruction QDomParser`Ocorreu um erro ao processar um elemento inicial/Error occurred while processing a start element QDomParser\Ocorreu um erro ao processar um elemento final.Error occurred while processing an end element QDomParsernOcorreu um erro ao processar uma referncia de entidade3Error occurred while processing an entity reference QDomParserROcorreu um erro ao processar o comentrio'Error occurred while processing comment QDomParserVOcorreu um erro ao processar os comentrios(Error occurred while processing comments QDomParser|Ocorreu um erro ao processar a declarao de tipo de documento9Error occurred while processing document type declaration QDomParserjOcorreu um erro ao processar a declarao de entidade2Error occurred while processing entity declaration QDomParserhOcorreu um erro ao processar a declarao de notao4Error occurred while processing notation declaration QDomParserfOcorreu um erro ao processar o contedo do elemento3Error occurred while processing the element content QDomParserNMltiplas sees DTD no so permitidas%Multiple DTD sections are not allowed QDomParser*Etiqueta incompatvel Tag mismatch QDomParser@Elemento final no esperado '%1'Unexpected end element '%1' QDomParser$Token no esperadoUnexpected token QDomParser%1 falhou %1 failedQDtlsUm QUdpSocket vlido e um datagrama no-vazio so necessrios para continuar o handshakeNA valid QUdpSocket and non-empty datagram are needed to continue the handshakeQDtlslBIO_ADD_new falhou, no possvel iniciar o handshake*BIO_ADD_new failed, cannot start handshakeQDtlsNo possvel continuar o handshake, no est no estado EmAndamento2Cannot continue handshake, not in InProgress stateQDtlsNo possvel ler um datagrama, no est no estado criptografado.Cannot read a datagram, not in encrypted stateQDtlsxNo possvel continuar, no est no estado ErroVerificao-Cannot resume, not in VerificationError stateQDtlsNo possvel enviar um aviso de desligamento, no criptografado)Cannot send shutdown alert, not encryptedQDtlsNo possvel definir a configurao aps o incio do handshake0Cannot set configuration after handshake startedQDtlsnNo possvel definir o par aps o incio do handshake'Cannot set peer after handshake startedQDtlsNo possvel definir o nome de verificao aps o incio do handshake4Cannot set verification name after handshake startedQDtlsNo possvel iniciar o handshake, ele j est pronto ou em andamento0Cannot start handshake, already done/in progressQDtlsNo possvel iniciar o handshake, esperado cliente hello verificado:Cannot start the handshake, verified client hello expectedQDtlsNo possvel iniciar/continuar o handshake, pois seu estado invlido8Cannot start/continue handshake, invalid handshake stateQDtlsNo possvel gravar um datagrama, no est no estado criptografado/Cannot write a datagram, not in encrypted stateQDtls<Ocorreu um erro de leitura: %1Error while reading: %1QDtls$Erro ao gravar: %1Error while writing: %1QDtls0Segredo invlido (vazio)Invalid (empty) secretQDtls2Socket (nullptr) invlidoInvalid (nullptr) socketQDtlsxEsperado um SslMode, SslServerMode ou SslClientMode invlido8Invalid SslMode, SslServerMode or SslClientMode expectedQDtls"Endereo invlidoInvalid addressQDtlsnVerso do protocolo invlida, esperado o protocolo DTLS0Invalid protocol version, DTLS protocol expectedQDtlsjNo h suporte para endereos de multicast e boadcast3Multicast and broadcast addresses are not supportedQDtls\Nenhum handshake em andamento, nada a cancelar*No handshake in progress, nothing to abortQDtls6Falha na verificao do parPeer verification failedQDtls4A conexo DTLS foi fechada#The DTLS connection has been closedQDtls8A conexo DTLS foi desligada%The DTLS connection has been shutdownQDtlsPara iniciar um handshake voc precisa definir primeiro a porta e o endereo dos pares?To start a handshake you must set peer's address and port firstQDtlsPara iniciar um handshake, o servidor DTLS requer um datagrama no-vazio (ol cliente)LTo start a handshake, DTLS server requires non-empty datagram (client hello)QDtlsEra esperado um soquete UDP vlido, datagrama no-vazio, endereo/porta vlidosHA valid UDP socket, non-empty datagram, valid address/port were expectedQDtlsClientVerifier\BIO_ADDR_new falhou, ignorando o 'ol cliente'*BIO_ADDR_new failed, ignoring client helloQDtlsClientVerifier&OK&OK QErrorMessage@Mo&strar esta mensagem novamente&Show this message again QErrorMessageErro crtico:Critical Error: QErrorMessage,Mensagem de depurao:Debug Message: QErrorMessageErro fatal: Fatal Error: QErrorMessageInformao: Information: QErrorMessage Aviso:Warning: QErrorMessageHNo foi possvel criar %1 para sadaCannot create %1 for outputQFileLNo foi possvel abrir %1 para entradaCannot open %1 for inputQFile^No foi possvel abrir o arquivo de destino: %1 Cannot open destination file: %1QFileJNo foi possvel abrir para sada: %1Cannot open for output: %1QFileXNo foi possvel excluir o arquivo de origemCannot remove source fileQFile<O arquivo de destino j existeDestination file existsQFileNO arquivo de destino o mesmo arquivo."Destination file is the same file.QFile(Erro ao renomear: %1Error while renaming: %1QFile4Falha na gravao do blocoFailure to write blockQFile>O arquivo de origem no existe.Source file does not exist.QFileHNo foi possvel restaurar de %1: %2Unable to restore from %1: %2QFilevNo ir renomear o arquivo sequencial usando cpia em bloco0Will not rename sequential file using block copyQFileLNenhum mecanismo de arquivo disponvelNo file engine available QFileDeviceNenhum mecanismo de arquivo disponvel ou o mecanismo tem suporte a 'UnMapExtension'BNo file engine available or engine does not support UnMapExtension QFileDevice%1 Pasta no encontrada. Verifique se foi indicado um nome correto para a pasta.K%1 Directory not found. Please verify the correct directory name was given. QFileDialog%1 Arquivo no encontrado. Verifique se foi indicado um nome correto para o arquivo.A%1 File not found. Please verify the correct file name was given. QFileDialogArquivo %1%1 File QFileDialogD%1 j existe. Deseja substitu-la?-%1 already exists. Do you want to replace it? QFileDialogEs&colher&Choose QFileDialogE&xcluir&Delete QFileDialog&Nova pasta &New Folder QFileDialog &Abrir&Open QFileDialog&Renomear&Rename QFileDialog&Salvar&Save QFileDialog'%1' est protegido contra gravao. Deseja exclu-lo mesmo assim?9'%1' is write protected. Do you want to delete it anyway? QFileDialog Nome de exibioAlias QFileDialog*Todos os arquivos (*) All Files (*) QFileDialog*Todos os arquivos (*) All files (*) QFileDialogAlt+EsquerdaAlt+Left QFileDialogAlt+Direita Alt+Right QFileDialogAlt+AcimaAlt+Up QFileDialog<Deseja realmente excluir '%1'?%Are you sure you want to delete '%1'? QFileDialog VoltarBack QFileDialogRAlterar para o modo de exibio detalhadaChange to detail view mode QFileDialogPAlterar para o modo de exibio em listaChange to list view mode QFileDialogBNo foi possvel excluir a pasta.Could not delete directory. QFileDialog Criar nova pastaCreate New Folder QFileDialog&Cria uma nova pastaCreate a New Folder QFileDialogExcluirDelete QFileDialog$Exibio detalhada Detail View QFileDialog Pastas Directories QFileDialog Pasta: Directory: QFileDialogUnidadeDrive QFileDialogArquivoFile QFileDialog"&Nome do arquivo: File &name: QFileDialog"Pasta de arquivos File Folder QFileDialogArquivosFiles QFileDialog"Arquivos do tipo:Files of type: QFileDialog"Localizar a pastaFind Directory QFileDialog PastaFolder QFileDialogAvanarForward QFileDialog VoltarGo back QFileDialogAvanar Go forward QFileDialog0Ir para a pasta superiorGo to the parent directory QFileDialog"Exibio em lista List View QFileDialog6Lista de locais e favoritosList of places and bookmarks QFileDialogProcurar em:Look in: QFileDialogMeu computador My Computer QFileDialogNova pasta New Folder QFileDialog AbrirOpen QFileDialogPasta superiorParent Directory QFileDialogLocais recentes Recent Places QFileDialogRemoverRemove QFileDialogSalvar comoSave As QFileDialog AtalhoShortcut QFileDialogMostrar Show  QFileDialog2Mostrar arquivos &ocultosShow &hidden files QFileDialogBarra lateralSidebar QFileDialogDesconhecidoUnknown QFileDialog<b>O nome "%1" no pode ser usado.</b><p>Tente usar outro nome, com menos caracteres ou pontuao.mThe name "%1" cannot be used.

Try using another name, with fewer characters or no punctuation marks.QFileSystemModelComputadorComputerQFileSystemModel&Data de modificao Date ModifiedQFileSystemModel0Nome de arquivo invlidoInvalid filenameQFileSystemModelTipoKindQFileSystemModelMeu computador My ComputerQFileSystemModelNomeNameQFileSystemModelTamanhoSizeQFileSystemModelTipoTypeQFileSystemModelQualquerAny QFontDatabase rabeArabic QFontDatabaseArmnioArmenian QFontDatabaseBengaliBengali QFontDatabase PretoBlack QFontDatabaseNegritoBold QFontDatabaseCirlicoCyrillic QFontDatabaseSemiDemi QFontDatabaseSeminegrito Demi Bold QFontDatabaseDevangari Devanagari QFontDatabase ExtraExtra QFontDatabaseExtranegrito Extra Bold QFontDatabaseExtra leve Extra Light QFontDatabaseGeorgianoGeorgian QFontDatabase GregoGreek QFontDatabaseGuzerateGujarati QFontDatabaseGurmukhiGurmukhi QFontDatabaseHebraicoHebrew QFontDatabaseItlicoItalic QFontDatabaseJaponsJapanese QFontDatabaseCanarsKannada QFontDatabaseCambojanoKhmer QFontDatabaseCoreanoKorean QFontDatabaseLaocianoLao QFontDatabase LatimLatin QFontDatabase ClaroLight QFontDatabaseMalaiala Malayalam QFontDatabase MdioMedium QFontDatabaseBirmansMyanmar QFontDatabaseN'KoN'Ko QFontDatabase NormalNormal QFontDatabaseOblquoOblique QFontDatabase OghamOgham QFontDatabaseOriOriya QFontDatabase RnicoRunic QFontDatabase&Chins simplificadoSimplified Chinese QFontDatabaseCingalsSinhala QFontDatabaseSmboloSymbol QFontDatabaseSiracoSyriac QFontDatabase TmilTamil QFontDatabase TeluguTelugu QFontDatabase ThaanaThaana QFontDatabaseTailandsThai QFontDatabaseFinoThin QFontDatabaseTibetanoTibetan QFontDatabase$Chins tradicionalTraditional Chinese QFontDatabaseVietnamita Vietnamese QFontDatabase &Fonte&Font QFontDialog&Tamanho&Size QFontDialogS&ublinhado &Underline QFontDialogEfeitosEffects QFontDialog Es&tilo da fonte Font st&yle QFontDialogAmostraSample QFontDialog Selecionar fonte Select Font QFontDialogTac&hado Stri&keout QFontDialog(S&istema de gravaoWr&iting System QFontDialog>Falha na alterao da pasta: %1Changing directory failed: %1QFtp0Conectado ao servidor %1Connected to host %1QFtpDErro na conexo com o servidor: %1Connecting to host failed: %1QFtp"Conexo encerradaConnection closedQFtpPA conexo com o servidor %1 foi recusadaConnection refused to host %1QFtpFA conexo com o servidor %1 expirouConnection timed out to host %1QFtp4Falha ao criar a pasta: %1Creating directory failed: %1QFtp2Conexo de dados recusadaData Connection refusedQFtp:Falha ao baixar o arquivo: %1Downloading file failed: %1QFtp4Servidor %1 no encontradoHost %1 not foundQFtp<Falha na listagem da pasta: %1Listing directory failed: %1QFtp0Erro de autenticao: %1Login failed: %1QFtpNo conectado Not connectedQFtp8Falha ao remover a pasta: %1Removing directory failed: %1QFtp<Falha ao remover o arquivo: %1Removing file failed: %1QFtp"Erro desconhecido Unknown errorQFtp:Falha ao enviar o arquivo: %1Uploading file failed: %1QFtp&Cancelar&Cancel QGnomeThemeFe&char&Close QGnomeTheme&OK&OK QGnomeTheme&Salvar&Save QGnomeTheme Fecha sem salvarClose without Saving QGnomeThemePlugins adicionais a carregar, podem ser indicados vrias vezes.Formato de imagem no suportadoUnsupported image format QImageReaderlNo foi possvel abrir o dispositivo para gravao: %1"Cannot open device for writing: %1 QImageWriter0Dispositivo no definidoDevice is not set QImageWriter0Dispositivo no gravvelDevice not writable QImageWriter&A imagem est vaziaImage is empty QImageWriter"Erro desconhecido Unknown error QImageWriter>Formato de imagem no suportadoUnsupported image format QImageWriter Digite um valor:Enter a value: QInputDialog4restos no fim do documento"garbage at the end of the documentQJsonParseErrornmero invlidoillegal numberQJsonParseErrorvalor invlido illegal valueQJsonParseError*string UTF-8 invlidainvalid UTF8 stringQJsonParseError8sequncia de escape invlidainvalid escape sequenceQJsonParseError<terminao invlida por nmeroinvalid termination by numberQJsonParseError4separador de nomes ausentemissing name separatorQJsonParseError4separador de valor ausentemissing value separatorQJsonParseError&no ocorreram errosno error occurredQJsonParseError>objeto ausente aps uma vrgulaobject is missing after a commaQJsonParseError0documento muito agrupadotoo deeply nested documentQJsonParseError,documento muito grandetoo large documentQJsonParseError&lista no terminadaunterminated arrayQJsonParseError(objeto no terminadounterminated objectQJsonParseError(string no terminadaunterminated stringQJsonParseError%1, ...%1, ...QKeySequenceEdit"Pressionar atalhoPress shortcutQKeySequenceEditD'%1' um objeto ELF invlido (%2)"'%1' is an invalid ELF object (%2)QLibrary4'%1' no um plugin do Qt'%1' is not a Qt pluginQLibraryV'%1' no um executvel Mach-O vlido (%2)&'%1' is not a valid Mach-O binary (%2)QLibrary0'%1' no um objeto ELF'%1' is not an ELF objectQLibrary:'%1' no um objeto ELF (%2)'%1' is not an ELF object (%2)QLibraryZNo foi possvel carregar a biblioteca %1: %2Cannot load library %1: %2QLibrary`No foi possvel descarregar a biblioteca %1: %2Cannot unload library %1: %2QLibrary^Falha ao extrair os metadados do plugin de '%1',Failed to extract plugin meta data from '%1'QLibraryXO arquivo '%1' no um plugin vlido do Qt.'The file '%1' is not a valid Qt plugin.QLibraryO plugin '%1' usa uma biblioteca incompatvel do Qt. (%2.%3.%4) [%5]=The plugin '%1' uses incompatible Qt library. (%2.%3.%4) [%5]QLibraryO plugin '%1' usa uma biblioteca incompatvel do Qt. (No possvel mesclar bibliotecas de depurao e produo.)WThe plugin '%1' uses incompatible Qt library. (Cannot mix debug and release libraries.)QLibrary\A biblioteca compartilhada no foi encontrada.!The shared library was not found.QLibrary"Erro desconhecido Unknown errorQLibraryanunciada %n sesso, a cada %1 bytes, excede o tamanho do arquivoanunciadas %n sesses, a cada %1 bytes, excede o tamanho do arquivo:announced %n section(s), each %1 byte(s), exceed file sizeQLibraryJ.rodata. vazio, no uma biblioteca.empty .rodata. not a library.QLibrary2o arquivo est corrompidofile is corruptQLibrary*arquivo muito pequenofile too smallQLibrary$mgica invlida %1invalid magic %1QLibraryfdados da seo ausentes. Isto no uma biblioteca.,missing section data. This is not a library.QLibrary\nenhuma arquitetura adequada no executvel fat&no suitable architecture in fat binaryQLibrary:no uma biblioteca dinmicanot a dynamic libraryQLibrary0arquitetura CPU estranhaodd cpu architectureQLibrary$ordenao estranhaodd endiannessQLibraryfa seo de nome %1 de %2 depois do final do arquivo(section name %1 of %2 behind end of fileQLibrary\seo shstrtab do cabealho parece estar em %1)shstrtab section header seems to be at %1QLibraryHa tabela de texto parece estar em %1string table seems to be at %1QLibrary0e_shentsize no esperadounexpected e_shentsizeQLibrary*e_shsize no esperadounexpected e_shsizeQLibrary*arquitetura incorretawrong architectureQLibrary2arquitetura CPU incorretawrong cpu architectureQLibrary&Copiar&Copy QLineEdit C&olar&Paste QLineEdit&Refazer&Redo QLineEdit&Desfazer&Undo QLineEditRecor&tarCu&t QLineEditExcluirDelete QLineEditSelecionar tudo Select All QLineEdit&%1: Endereo em uso%1: Address in use QLocalServer %1: Erro do nome%1: Name error QLocalServer(%1: Permisso negada%1: Permission denied QLocalServer0%1: Erro desconhecido %2%1: Unknown error %2 QLocalServer"%1: Acesso negado%1: Access denied QLocalSocket&%1: Erro de conexo%1: Connection error QLocalSocket(%1: Conexo recusada%1: Connection refused QLocalSocket4%1: Datagrama muito grande%1: Datagram too large QLocalSocket"%1: Nome invlido%1: Invalid name QLocalSocket~%1: Operao no permitida quando o socket estiver neste estado8%1: Operation not permitted when socket is in this state QLocalSocket8%1: Conexo remota encerrada%1: Remote closed QLocalSocket8%1: Erro de acesso ao socket%1: Socket access error QLocalSocket^%1: A operao do socket atingiu o tempo limite%1: Socket operation timed out QLocalSocket:%1: Erro de recurso do socket%1: Socket resource error QLocalSocketP%1: A operao do socket no suportada)%1: The socket operation is not supported QLocalSocket*%1: Erro desconhecido%1: Unknown error QLocalSocket0%1: Erro desconhecido %2%1: Unknown error %2 QLocalSocket6O socket no est conectadoSocket is not connected QLocalSocketlTentando conectar enquanto a conexo est em andamento1Trying to connect while connection is in progress QLocalSocketNNo foi possvel alocar um objeto MYSQL!Unable to allocate a MYSQL object QMYSQLDriverHNo foi possvel iniciar a transaoUnable to begin transaction QMYSQLDriverFNo foi possvel enviar a transaoUnable to commit transaction QMYSQLDriver2No foi possvel conectarUnable to connect QMYSQLDriverXNo foi possvel abrir o banco de dados '%1'Unable to open database '%1' QMYSQLDriverJNo foi possvel desfazer a transaoUnable to rollback transaction QMYSQLDriverZNo foi possvel associar os valores externosUnable to bind outvalues QMYSQLResultBNo foi possvel associar o valorUnable to bind value QMYSQLResultXNo foi possvel executar a prxima pesquisaUnable to execute next query QMYSQLResultHNo foi possvel executar a pesquisaUnable to execute query QMYSQLResultJNo foi possvel executar a instruoUnable to execute statement QMYSQLResult>No foi possvel obter os dadosUnable to fetch data QMYSQLResultJNo foi possvel preparar a instruoUnable to prepare statement QMYSQLResultLNo foi possvel restaurar a instruoUnable to reset statement QMYSQLResult\No foi possvel armazenar o prximo resultadoUnable to store next result QMYSQLResultLNo foi possvel armazenar o resultadoUnable to store result QMYSQLResultjNo foi possvel armazenar os resultados da instruo!Unable to store statement results QMYSQLResult(Sem ttulo) (Untitled)QMdiArea%1 - [%2] %1 - [%2] QMdiSubWindowFe&char&Close QMdiSubWindow &Mover&Move QMdiSubWindow&Restaurar&Restore QMdiSubWindow&Tamanho&Size QMdiSubWindow - [%1]- [%1] QMdiSubWindow FecharClose QMdiSubWindow AjudaHelp QMdiSubWindowMa&ximizar Ma&ximize QMdiSubWindowMaximizarMaximize QMdiSubWindowMenuMenu QMdiSubWindowMi&nimizar Mi&nimize QMdiSubWindowMinimizarMinimize QMdiSubWindowRestaurarRestore QMdiSubWindow(Restaurar para baixo Restore Down QMdiSubWindowEnrolarShade QMdiSubWindowSempre &visvel Stay on &Top QMdiSubWindowDesenrolarUnshade QMdiSubWindow|<h3>Sobre o Qt</h3><p>Este programa usa a verso %1 do Qt.</p>8

About Qt

This program uses Qt version %1.

 QMessageBox <p>Qt um conjunto de ferramentas C++ para desenvolvimento de aplicativos multiplataforma.</p><p>O Qt oferece portabilidade de fonte nica em todos os principais sistemas operacionais para desktop. Tambm est disponvel para Linux embarcado e outros sistemas operacionais embarcados e mveis.</p><p>Est disponvel sob mltiplas opes de licenciamento projetadas para acomodar as necessidades de nossos vrios usurios.</p><p>O Qt licenciado sob nosso contrato de licena comercial apropriado para desenvolvimento de software proprietrio/comercial onde voc no quer compartilhar nenhum cdigo-fonte com terceiros ou no pode cumprir com os termos da GNU (L)GPL.</p><p>O Qt licenciado sob GNU (L)GPL apropriado para desenvolvimento de aplicativos Qt&nbsp;desde que voc possa cumprir com os termos e condies das respectivas licenas.</p><p>Consulte <a href="http://%2/">%2</a> para ter uma viso geral da licena do Qt.</p><p>Copyright (C) %1 The Qt Company Ltd e outros colaboradores.</p><p>Qt e o logotipo Qt so marcas registradas da The Qt Company Ltd.</p><p>Qt o produto da The Qt Company Ltd desenvolvido como um projeto de cdigo aberto. Consulte <a href="http://%3/">%3</a> para mais informaes.</p>]

Qt is a C++ toolkit for cross-platform application development.

Qt provides single-source portability across all major desktop operating systems. It is also available for embedded Linux and other embedded and mobile operating systems.

Qt is available under multiple licensing options designed to accommodate the needs of our various users.

Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of GNU (L)GPL.

Qt licensed under GNU (L)GPL is appropriate for the development of Qt applications provided you can comply with the terms and conditions of the respective licenses.

Copyright (C) %1 The Qt Company Ltd and other contributors.

Qt and the Qt logo are trademarks of The Qt Company Ltd.

Qt is The Qt Company Ltd product developed as an open source project. See %3 for more information.

 QMessageBoxSobre o QtAbout Qt QMessageBox&Ocultar detalhes...Hide Details... QMessageBox&Mostrar detalhes...Show Details... QMessageBox\Outro socket j est aguardando na mesma porta4Another socket is already listening on the same portQNativeSocketEngine|Tentativa de usar um socket IPv6 em uma plataforma sem suporte=Attempt to use IPv6 socket on a platform with no IPv6 supportQNativeSocketEngine Conexo recusadaConnection refusedQNativeSocketEngine6Conexo reiniciada pelo parConnection reset by peerQNativeSocketEngine Conexo expiradaConnection timed outQNativeSocketEngineDDatagrama muito grande para enviarDatagram was too large to sendQNativeSocketEngine4A mquina est inacessvelHost unreachableQNativeSocketEngine8Descritor de socket invlidoInvalid socket descriptorQNativeSocketEngineHA rede perdeu a conexo ao reiniciar#Network dropped connection on resetQNativeSocketEngineErro de rede Network errorQNativeSocketEngineZPassou o tempo-limite para a operao de redeNetwork operation timed outQNativeSocketEngine$Rede no acessvelNetwork unreachableQNativeSocketEngine8Operao sobre um no-socketOperation on non-socketQNativeSocketEngineSem recursosOut of resourcesQNativeSocketEngine Permisso negadaPermission deniedQNativeSocketEngineNNo h suporte para o tipo de protocoloProtocol type not supportedQNativeSocketEngineErro temporrioTemporary errorQNativeSocketEngine<O endereo no est disponvelThe address is not availableQNativeSocketEngine2O endereo est protegidoThe address is protectedQNativeSocketEngineFO endereo associado j est em uso#The bound address is already in useQNativeSocketEngineZO tipo de proxy invlido para esta operao,The proxy type is invalid for this operationQNativeSocketEngineBA mquina remota fechou a conexo%The remote host closed the connectionQNativeSocketEnginehNo foi possvel inicializar o socket de transmisso%Unable to initialize broadcast socketQNativeSocketEnginehNo foi possvel inicializar o socket no-bloqueante(Unable to initialize non-blocking socketQNativeSocketEngineJNo foi possvel receber uma mensagemUnable to receive a messageQNativeSocketEngineHNo foi possvel enviar uma mensagemUnable to send a messageQNativeSocketEngine.No foi possvel gravarUnable to writeQNativeSocketEngine"Erro desconhecido Unknown errorQNativeSocketEngineLNo h suporte para operao de socketUnsupported socket operationQNativeSocketEngine Erro ao abrir %1Error opening %1QNetworkAccessCacheBackend URI invlida: %1Invalid URI: %1QNetworkAccessDataBackendtA mquina remota fechou de forma prematura a conexo em %13Remote host closed the connection prematurely on %1QNetworkAccessDebugPipeBackend*Erro no socket %1: %2Socket error on %1: %2QNetworkAccessDebugPipeBackend4Erro de gravao em %1: %2Write error writing to %1: %2QNetworkAccessDebugPipeBackend^No possvel abrir %1: o local um diretrio#Cannot open %1: Path is a directoryQNetworkAccessFileBackend(Erro ao abrir %1: %2Error opening %1: %2QNetworkAccessFileBackend2Erro de leitura de %1: %2Read error reading from %1: %2QNetworkAccessFileBackendRPedido para abrir um arquivo no-local %1%Request for opening non-local file %1QNetworkAccessFileBackend4Erro de gravao em %1: %2Write error writing to %1: %2QNetworkAccessFileBackendLImpossvel de abrir %1: um diretrioCannot open %1: is a directoryQNetworkAccessFtpBackend@Ocorreu um erro ao baixar %1: %2Error while downloading %1: %2QNetworkAccessFtpBackendDOcorreu um erro ao enviar o %1: %2Error while uploading %1: %2QNetworkAccessFtpBackendZEntrando em %1 falhou: autenticao requerida0Logging in to %1 failed: authentication requiredQNetworkAccessFtpBackendLNenhum proxy apropriado foi encontradoNo suitable proxy foundQNetworkAccessFtpBackend`A solicitao do plano de fundo no permitida.Background request not allowed. QNetworkReply`Erro ao transferir %1 - o servidor respondeu: %2*Error transferring %1 - server replied: %2 QNetworkReply.Erro na sesso de rede.Network session error. QNetworkReply>O protocolo "%1" desconhecidoProtocol "%1" is unknown QNetworkReply2Falha temporria na rede.Temporary network failure. QNetworkReplyBerro de incio da infraestrutura.backend start error. QNetworkReplyLNenhum proxy apropriado foi encontradoNo suitable proxy foundQNetworkReplyHttpImpl$Operao canceladaOperation canceledQNetworkReplyHttpImpl$Operao canceladaOperation canceledQNetworkReplyImpl,Configurao invlida.Invalid configuration.QNetworkSessionhO encaminhamento foi interrompido ou no possvel.'Roaming was aborted or is not possible.QNetworkSessionPrivateImplfA operao solicitada no suportada pelo sistema.7The requested operation is not supported by the system.QNetworkSessionPrivateImpldA sesso foi interrompida pelo usurio ou sistema..The session was aborted by the user or system.QNetworkSessionPrivateImpl^A configurao especificada no pode ser usada.+The specified configuration cannot be used.QNetworkSessionPrivateImpl8Erro desconhecido na sesso.Unknown session error.QNetworkSessionPrivateImplHNo foi possvel iniciar a transaoUnable to begin transaction QOCIDriverFNo foi possvel enviar a transaoUnable to commit transaction QOCIDriver8No foi possvel inicializarUnable to initialize QOCIDriverBNo foi possvel iniciar a sessoUnable to logon QOCIDriverJNo foi possvel desfazer a transaoUnable to rollback transaction QOCIDriverFNo foi possvel alocar a instruoUnable to alloc statement QOCIResultxNo foi possvel associar as colunas para a execuo em lote'Unable to bind column for batch execute QOCIResultBNo foi possvel associar o valorUnable to bind value QOCIResultZNo foi possvel executar a instruo em lote!Unable to execute batch statement QOCIResultJNo foi possvel executar a instruoUnable to execute statement QOCIResultTNo foi possvel obter o tipo de instruoUnable to get statement type QOCIResultDNo foi possvel ir para o prximoUnable to goto next QOCIResultJNo foi possvel preparar a instruoUnable to prepare statement QOCIResultFNo foi possvel enviar a transaoUnable to commit transaction QODBCDriverHNo possvel estabelecer a conexoUnable to connect QODBCDriverNo possvel estabelecer a conexo - O driver no suporta todas as funcionalidades solicitadasEUnable to connect - Driver doesn't support all functionality required QODBCDriverbNo possvel desativar a confirmao automticaUnable to disable autocommit QODBCDriver\No possvel ativar a confirmao automticaUnable to enable autocommit QODBCDriverJNo foi possvel desfazer a transaoUnable to rollback transaction QODBCDriverQODBCResult::reset: no possvel definir o 'SQL_CURSOR_STATIC' como atributo da instruo. Verifique a configurao do seu driver de ODBCyQODBCResult::reset: Unable to set 'SQL_CURSOR_STATIC' as statement attribute. Please check your ODBC driver configuration QODBCResultHNo foi possvel associar a varivelUnable to bind variable QODBCResultJNo foi possvel executar a instruoUnable to execute statement QODBCResultBNo foi possvel obter o registroUnable to fetch QODBCResultTNo foi possvel obter o primeiro registroUnable to fetch first QODBCResult>No foi possvel obter o ltimoUnable to fetch last QODBCResultTNo foi possvel obter o registro seguinteUnable to fetch next QODBCResultBNo foi possvel obter o anteriorUnable to fetch previous QODBCResultJNo foi possvel preparar a instruoUnable to prepare statement QODBCResultHNo foi possvel iniciar a transaoCould not begin transaction QPSQLDriverLNo foi possvel confirmar a transaoCould not commit transaction QPSQLDriverJNo foi possvel desfazer a transaoCould not rollback transaction QPSQLDriverLNo foi possvel estabelecer a conexoUnable to connect QPSQLDriver4No foi possvel inscreverUnable to subscribe QPSQLDriverJNo foi possvel cancelar a inscrioUnable to unsubscribe QPSQLDriverResultado da consulta perdido - provavelmente descartado ao executar outra consulta SQL.GQuery results lost - probably discarded on executing another SQL query. QPSQLResultBNo foi possvel criar a pesquisaUnable to create query QPSQLResultDNo foi possvel obter o resultadoUnable to get result QPSQLResultJNo foi possvel preparar a instruoUnable to prepare statement QPSQLResultDNo foi possvel enviar a consultaUnable to send query QPSQLResultCCCCQPageSetupWidgetCcero (CC) Cicero (CC)QPageSetupWidgetPersonalizadoCustomQPageSetupWidgetDDDDQPageSetupWidgetDidot (DD) Didot (DD)QPageSetupWidgetFormulrioFormQPageSetupWidgetAltura:Height:QPageSetupWidgetPolegadas (in) Inches (in)QPageSetupWidgetPaisagem LandscapeQPageSetupWidgetMargensMarginsQPageSetupWidgetMilmetros (mm)Millimeters (mm)QPageSetupWidgetOrientao OrientationQPageSetupWidget Layout da pgina Page LayoutQPageSetupWidget Ordem da pgina: Page order:QPageSetupWidget$Tamanho da pgina: Page size:QPageSetupWidget$Pginas por folha:Pages per sheet:QPageSetupWidget PapelPaperQPageSetupWidget Origem do papel: Paper source:QPageSetupWidgetPaica (P8) Pica (P̸)QPageSetupWidgetPontos (pt) Points (pt)QPageSetupWidgetRetratoPortraitQPageSetupWidgetP8P̸QPageSetupWidget$Paisagem invertidaReverse landscapeQPageSetupWidget"Retrato invertidoReverse portraitQPageSetupWidgetLargura:Width:QPageSetupWidgetMargem inferior bottom marginQPageSetupWidgetininQPageSetupWidgetMargem esquerda left marginQPageSetupWidgetmmmmQPageSetupWidgetptptQPageSetupWidgetMargem direita right marginQPageSetupWidgetMargem superior top marginQPageSetupWidget%1 x %2 in %1 x %2 in QPageSizeA0A0 QPageSizeA1A1 QPageSizeA10A10 QPageSizeA2A2 QPageSizeA3A3 QPageSizeA3 ExtraA3 Extra QPageSizeA4A4 QPageSizeA4 ExtraA4 Extra QPageSizeA4 PlusA4 Plus QPageSizeA4 PequenoA4 Small QPageSizeA5A5 QPageSizeA5 ExtraA5 Extra QPageSizeA6A6 QPageSizeA7A7 QPageSizeA8A8 QPageSizeA9A9 QPageSize ANSI CANSI C QPageSize ANSI DANSI D QPageSize ANSI EANSI E QPageSizeArquiteto A Architect A QPageSizeArquiteto B Architect B QPageSizeArquiteto C Architect C QPageSizeArquiteto D Architect D QPageSizeArquiteto E Architect E QPageSizeB0B0 QPageSizeB1B1 QPageSizeB10B10 QPageSizeB2B2 QPageSizeB3B3 QPageSizeB4B4 QPageSizeB5B5 QPageSizeB5 ExtraB5 Extra QPageSizeB6B6 QPageSizeB7B7 QPageSizeB8B8 QPageSizeB9B9 QPageSizePersonalizadoCustom QPageSize6Personalizado (%1CC x %2CC)Custom (%1CC x %2CC) QPageSize6Personalizado (%1DD x %2DD)Custom (%1DD x %2DD) QPageSize6Personalizado (%1in x %2in)Custom (%1in x %2in) QPageSize6Personalizado (%1mm x %2mm)Custom (%1mm x %2mm) QPageSize6Personalizado (%1pc x %2pc)Custom (%1pc x %2pc) QPageSize6Personalizado (%1pt x %2pt)Custom (%1pt x %2pt) QPageSizePostal DuploDouble Postcard QPageSizeEnvelope B4 Envelope B4 QPageSizeEnvelope B5 Envelope B5 QPageSizeEnvelope B6 Envelope B6 QPageSizeEnvelope C0 Envelope C0 QPageSizeEnvelope C1 Envelope C1 QPageSizeEnvelope C2 Envelope C2 QPageSizeEnvelope C3 Envelope C3 QPageSizeEnvelope C4 Envelope C4 QPageSizeEnvelope C5 Envelope C5 QPageSizeEnvelope C6 Envelope C6 QPageSizeEnvelope C65 Envelope C65 QPageSizeEnvelope C7 Envelope C7 QPageSizeEnvelope Chou 3Envelope Chou 3 QPageSizeEnvelope Chou 4Envelope Chou 4 QPageSizeEnvelope DL Envelope DL QPageSize Envelope ConviteEnvelope Invite QPageSize"Envelope ItalianoEnvelope Italian QPageSizeEnvelope Kaku 2Envelope Kaku 2 QPageSizeEnvelope Kaku 3Envelope Kaku 3 QPageSize Envelope MonarchEnvelope Monarch QPageSizeEnvelope PRC 1Envelope PRC 1 QPageSizeEnvelope PRC 10Envelope PRC 10 QPageSizeEnvelope PRC 2Envelope PRC 2 QPageSizeEnvelope PRC 3Envelope PRC 3 QPageSizeEnvelope PRC 4Envelope PRC 4 QPageSizeEnvelope PRC 5Envelope PRC 5 QPageSizeEnvelope PRC 6Envelope PRC 6 QPageSizeEnvelope PRC 7Envelope PRC 7 QPageSizeEnvelope PRC 8Envelope PRC 8 QPageSizeEnvelope PRC 9Envelope PRC 9 QPageSize Envelope PessoalEnvelope Personal QPageSizeEnvelope EUA 10Envelope US 10 QPageSizeEnvelope EUA 11Envelope US 11 QPageSizeEnvelope EUA 12Envelope US 12 QPageSizeEnvelope EUA 14Envelope US 14 QPageSizeEnvelope EUA 9 Envelope US 9 QPageSizeEnvelope You 4Envelope You 4 QPageSize4Executivo (7,25 x 10,5 in)Executive (7.25 x 10.5 in) QPageSize.Executivo (7,5 x 10 in)Executive (7.5 x 10 in) QPageSize:Contnuo Alemo (8.5 x 12 in)Fan-fold German (8.5 x 12 in) QPageSizeHContnuo Ofcio Alemo (8.5 x 13 in)#Fan-fold German Legal (8.5 x 13 in) QPageSize:Contnuo EUA (14.875 x 11 in)Fan-fold US (14.875 x 11 in) QPageSize(Flio (8,27 x 13 in)Folio (8.27 x 13 in) QPageSize B0 JISJIS B0 QPageSize B1 JISJIS B1 QPageSizeB10 JISJIS B10 QPageSize B2 JISJIS B2 QPageSize B3 JISJIS B3 QPageSize B4 JISJIS B4 QPageSize B5 JISJIS B5 QPageSize B6 JISJIS B6 QPageSize B7 JISJIS B7 QPageSize B8 JISJIS B8 QPageSize B9 JISJIS B9 QPageSizeLivro / ANSI BLedger / ANSI B QPageSize OfcioLegal QPageSizeOfcio Extra Legal Extra QPageSizeCarta / ANSI ALetter / ANSI A QPageSizeCarta Extra Letter Extra QPageSizeCarta Plus Letter Plus QPageSizeCarta Pequena Letter Small QPageSizeNotaNote QPageSizePRC 16KPRC 16K QPageSizePRC 32KPRC 32K QPageSizePRC 32K Grande PRC 32K Big QPageSize PostalPostcard QPageSize QuartoQuarto QPageSize Recibo Statement QPageSizeSuper ASuper A QPageSizeSuper BSuper B QPageSize"Tabloide / ANSI BTabloid / ANSI B QPageSizeTabloide Extra Tabloid Extra QPageSize&No&NoQPlatformTheme&Sim&YesQPlatformThemeCancelarAbortQPlatformThemeAplicarApplyQPlatformThemeCancelarCancelQPlatformTheme FecharCloseQPlatformThemeDescartarDiscardQPlatformTheme AjudaHelpQPlatformThemeIgnorarIgnoreQPlatformThemeN&o para tudo N&o to AllQPlatformThemeOKOKQPlatformTheme AbrirOpenQPlatformThemeRestaurarResetQPlatformTheme"Restaurar padresRestore DefaultsQPlatformThemeRepetirRetryQPlatformTheme SalvarSaveQPlatformThemeSalvar tudoSave AllQPlatformThemeSim par&a tudo Yes to &AllQPlatformTheme6O plugin no foi carregado.The plugin was not loaded. QPluginLoader"Erro desconhecido Unknown error QPluginLoaderLO %1 j existe. Deseja sobrescrev-lo?/%1 already exists. Do you want to overwrite it? QPrintDialog@%1 no segue a sintaxe correta. Use ',' para separar intervalos e pginas, '-' para definir intervalos e certifique-se de que os intervalos no cruzem entre si.%1 does not follow the correct syntax. Please use ',' to separate ranges and pages, '-' to define ranges and make sure ranges do not intersect with each other. QPrintDialogj%1 uma pasta. Escolha um nome de arquivo diferente.7%1 is a directory. Please choose a different file name. QPrintDialog&Opes << &Options << QPrintDialog&Opes >> &Options >> QPrintDialog&Imprimir&Print QPrintDialog1 (1x1)1 (1x1) QPrintDialog16 (4x4)16 (4x4) QPrintDialog2 (2x1)2 (2x1) QPrintDialog4 (2x2)4 (2x2) QPrintDialog6 (2x3)6 (2x3) QPrintDialog9 (3x3)9 (3x3) QPrintDialog Todas as pginas All Pages QPrintDialog\De baixo para cima, da esquerda para a direitaBottom to Top, Left to Right QPrintDialog\De baixo para cima, da direita para a esquerdaBottom to Top, Right to Left QPrintDialogBConflitos de configuraes duplexDuplex Settings Conflicts QPrintDialogPginas pares Even Pages QPrintDialognO arquivo %1 no gravvel. Escolha um nome diferente.=File %1 is not writable. Please choose a different file name. QPrintDialog:Definio de pginas invlidaInvalid Pages Definition QPrintDialog\Da esquerda para a direita, de baixo para cimaLeft to Right, Bottom to Top QPrintDialog\Da esquerda para a direita, de cima para baixoLeft to Right, Top to Bottom QPrintDialogArquivo local Local file QPrintDialogOKOK QPrintDialogPginas mpares Odd Pages QPrintDialogAs opes 'Pginas por folha' e 'Conjunto de pginas' no podem ser usadas em conjunto. Desative uma das opes.gOptions 'Pages Per Sheet' and 'Page Set' cannot be used together. Please turn one of those options off. QPrintDialogImprimirPrint QPrintDialog0Imprimir para arquivo...Print To File ... QPrintDialog6Imprimir para arquivo (PDF)Print to File (PDF) QPrintDialog\Da direita para a esquerda, de baixo para cimaRight to Left, Bottom to Top QPrintDialog\Da direita para a esquerda, de cima para baixoRight to Left, Top to Bottom QPrintDialogdO valor 'De' no pode ser maior que o valor 'At'.7The 'From' value cannot be greater than the 'To' value. QPrintDialogtH conflitos nas configuraes duplex. Deseja corrigi-los?@There are conflicts in duplex settings. Do you want to fix them? QPrintDialog\De cima para baixo, da esquerda para a direitaTop to Bottom, Left to Right QPrintDialog\De cima para baixo, da direita para a esquerdaTop to Bottom, Right to Left QPrintDialog$Gravar arquivo PDFWrite PDF file QPrintDialog%1%%1%QPrintPreviewDialog"Exportar como PDF Export to PDFQPrintPreviewDialogPrimeira pgina First pageQPrintPreviewDialog Ajustar pginaFit pageQPrintPreviewDialog"Ajustar largura Fit widthQPrintPreviewDialogPaisagem LandscapeQPrintPreviewDialogltima pgina Last pageQPrintPreviewDialogPrxima pgina Next pageQPrintPreviewDialog,Configurao de pgina Page SetupQPrintPreviewDialog,Configurao da pgina Page setupQPrintPreviewDialogRetratoPortraitQPrintPreviewDialogPgina anterior Previous pageQPrintPreviewDialogImprimirPrintQPrintPreviewDialog(Visualizar impresso Print PreviewQPrintPreviewDialog.Mostrar pginas opostasShow facing pagesQPrintPreviewDialogNMostrar viso geral de todas as pginasShow overview of all pagesQPrintPreviewDialog(Mostrar nica pginaShow single pageQPrintPreviewDialogAmpliarZoom inQPrintPreviewDialogReduzirZoom outQPrintPreviewDialog6Conflitos da opo avanadaAdvanced Option ConflictsQPrintPropertiesDialog Opes da tarefa Job OptionsQPrintPropertiesDialogFConflitos de configurao de pginaPage Setup ConflictsQPrintPropertiesDialog4Propriedades da impressoraPrinter PropertiesQPrintPropertiesDialogH conflitos nas opes de configurao da pgina. Deseja corrigi-los?CThere are conflicts in page setup options. Do you want to fix them?QPrintPropertiesDialogzH conflitos em algumas opes avanadas. Deseja corrigi-los?FThere are conflicts in some advanced options. Do you want to fix them?QPrintPropertiesDialogAvanadoAdvancedQPrintPropertiesWidgetFormulrioFormQPrintPropertiesWidget PginaPageQPrintPropertiesWidgetVH conflitos em algumas opes. Corrija-os.5There are conflicts in some options. Please fix them.QPrintPropertiesWidgetAgruparCollateQPrintSettingsOutputColoridoColorQPrintSettingsOutputModo de cor Color ModeQPrintSettingsOutput CpiasCopiesQPrintSettingsOutputCpias:Copies:QPrintSettingsOutputPgina atual Current PageQPrintSettingsOutput.Impresso em dupla faceDouble Sided PrintingQPrintSettingsOutputFormulrioFormQPrintSettingsOutputTons de cinza GrayscaleQPrintSettingsOutput4Encadernao no lado longoLong side bindingQPrintSettingsOutputDesligadoOffQPrintSettingsOutput OpesOptionsQPrintSettingsOutput,Configuraes de sadaOutput SettingsQPrintSettingsOutput(Conjunto de pginas: Page Set:QPrintSettingsOutputPginasPagesQPrintSettingsOutputPginas de Pages fromQPrintSettingsOutputImprimir tudo Print allQPrintSettingsOutput,Intervalo de impresso Print rangeQPrintSettingsOutputInverterReverseQPrintSettingsOutputSeleo SelectionQPrintSettingsOutput4Encadernao no lado curtoShort side bindingQPrintSettingsOutputZIndique as pginas ou intervalos separados por vrgulas. Os intervalos so indicados por dois nmeros separados por um hfen. Ex.: 3,5-7,9 imprime as pginas 3, 5, 6, 7 e 9.Specify pages or ranges separated by commas. Ranges are specified by two numbers separated by a hyphen. E.g: 3,5-7,9 prints pages 3, 5, 6, 7 and 9.QPrintSettingsOutputatoQPrintSettingsOutput &Nome:&Name: QPrintWidget...... QPrintWidgetFormulrioForm QPrintWidgetLocalizao: Location: QPrintWidget$Arquivo de &sada: Output &file: QPrintWidgetP&ropriedades P&roperties QPrintWidgetVisualizaoPreview QPrintWidgetImpressoraPrinter QPrintWidget Tipo:Type: QPrintWidgetNo foi possvel abrir o redirecionamento de entrada para leitura,Could not open input redirection for readingQProcessNo foi possvel abrir o redirecionamento de sada para gravao-Could not open output redirection for writingQProcess6Erro de leitura do processoError reading from processQProcess8Erro de gravao no processoError writing to processQProcess0Nenhum programa definidoNo program definedQProcess"O processo travouProcess crashedQProcessFNo foi possvel iniciar o processoProcess failed to startQProcessNNo foi possvel iniciar o processo: %1Process failed to start: %1QProcess^A operao do processo expirou seu tempo limiteProcess operation timed outQProcessFErro de recurso (falha no fork): %1!Resource error (fork failure): %1QProcessCancelarCancelQProgressDialogPsintaxe invlida da classe de caracteresbad char class syntaxQRegExpNsintaxe invlida de pesquisa antecipadabad lookahead syntaxQRegExp:sintaxe de repetio invlidabad repetition syntaxQRegExpDuso de funcionalidade desabilitadadisabled feature usedQRegExp$categoria invlidainvalid categoryQRegExp$intervalo invlidoinvalid intervalQRegExp.valor em octal invlidoinvalid octal valueQRegExpdlookbehinds no suportadas. Veja o erro QTBUG-2371)lookbehinds not supported, see QTBUG-2371QRegExp0limite interno alcanadomet internal limitQRegExp8falta o delimitador esquerdomissing left delimQRegExp&no ocorreram errosno error occurredQRegExpfim inesperadounexpected endQRegExp:(*MARK) deve ter um argumento(*MARK) must have an argumentQRegularExpressionJ(*VERB) no reconhecido ou malformado#(*VERB) not recognized or malformedQRegularExpressionD(*alpha_assertion) no reconhecida!(*alpha_assertion) not recognizedQRegularExpression(?R (chamada de padro recursivo) deve ser seguida por um parntese de fechamentoF(?R (recursive pattern call) must be followed by a closing parenthesisQRegularExpressionn(?| e/ou (?J: ou (?x: os parnteses so muito agrupados9(?| and/or (?J: or (?x: parentheses are too deeply nestedQRegularExpressionbo subpadro DEFINE contm mais de uma ramificao/DEFINE subpattern contains more than one branchQRegularExpression8limite de pilha JIT atingidoJIT stack limit reachedQRegularExpression.argumento NULL aprovadoNULL argument passedQRegularExpressionfO PCRE2 no suporta \F, \L, \l, \N{name}, \U, ou \u6PCRE2 does not support \F, \L, \l, \N{name}, \U, or \uQRegularExpressionPCRE2_EXTRA_ALLOW_SURROGATE_ESCAPES no permitido no modo UTF-16APCRE2_EXTRA_ALLOW_SURROGATE_ESCAPES is not allowed in UTF-16 modeQRegularExpressionno h suporte de PCRE2_MATCH_INVALID_UTF para correspondncia DFA9PCRE2_MATCH_INVALID_UTF is not supported for DFA matchingQRegularExpressionZno h suporte para elementos ordenados POSIX*POSIX collating elements are not supportedQRegularExpressionno h suporte para classes de nome POSIX apenas dentro de uma classe5POSIX named classes are supported only within a classQRegularExpressionFErro UTF-16: low surrogate invlido#UTF-16 error: invalid low surrogateQRegularExpressionDErro UTF-16: low surrogate isolado$UTF-16 error: isolated low surrogateQRegularExpressionRErro UTF-16: falta low surrogate no final*UTF-16 error: missing low surrogate at endQRegularExpressionzErro UTF-32: pontos de cdigo 0xd800-0xdfff no so definidos7UTF-32 error: code points 0xd800-0xdfff are not definedQRegularExpressionErro UTF-32: pontos de cdigo maiores que 0x10ff no so definidos?UTF-32 error: code points greater than 0x10ffff are not definedQRegularExpressionFErro UTF-8: 1 byte ausente no final"UTF-8 error: 1 byte missing at endQRegularExpressionJErro UTF-8: 2 bytes ausentes no final#UTF-8 error: 2 bytes missing at endQRegularExpressionJErro UTF-8: 3 bytes ausentes no final#UTF-8 error: 3 bytes missing at endQRegularExpressionJErro UTF-8: 4 bytes ausentes no final#UTF-8 error: 4 bytes missing at endQRegularExpressionJErro UTF-8: 5 bytes ausentes no final#UTF-8 error: 5 bytes missing at endQRegularExpressionvErro UTF-8: no permitido caractere de 5 bytes (RFC 3629)7UTF-8 error: 5-byte character is not allowed (RFC 3629)QRegularExpressionvErro UTF-8: no permitido caractere de 6 bytes (RFC 3629)7UTF-8 error: 6-byte character is not allowed (RFC 3629)QRegularExpressionVErro UTF-8: byte 2 bits superiores no 0x80%UTF-8 error: byte 2 top bits not 0x80QRegularExpressionVErro UTF-8: byte 3 bits superiores no 0x80%UTF-8 error: byte 3 top bits not 0x80QRegularExpressionVErro UTF-8: byte 4 bits superiores no 0x80%UTF-8 error: byte 4 top bits not 0x80QRegularExpressionVErro UTF-8: byte 5 bits superiores no 0x80%UTF-8 error: byte 5 top bits not 0x80QRegularExpressionVErro UTF-8: byte 6 bits superiores no 0x80%UTF-8 error: byte 6 top bits not 0x80QRegularExpressionxErro UTF-8: pontos de cdigo 0xd800-0xdfff no so definidos6UTF-8 error: code points 0xd800-0xdfff are not definedQRegularExpressionErro UTF-8: pontos de cdigo maiores que 0x10ff no so definidos>UTF-8 error: code points greater than 0x10ffff are not definedQRegularExpressionLErro UTF-8: byte ilegal (0xfe ou 0xff)(UTF-8 error: illegal byte (0xfe or 0xff)QRegularExpressiondErro UTF-8: byte isolado com conjunto de bits 0x80,UTF-8 error: isolated byte with 0x80 bit setQRegularExpressionTErro UTF-8: sequncia excessiva de 2 bytes%UTF-8 error: overlong 2-byte sequenceQRegularExpressionTErro UTF-8: sequncia excessiva de 3 bytes%UTF-8 error: overlong 3-byte sequenceQRegularExpressionTErro UTF-8: sequncia excessiva de 4 bytes%UTF-8 error: overlong 4-byte sequenceQRegularExpressionTErro UTF-8: sequncia excessiva de 5 bytes%UTF-8 error: overlong 5-byte sequenceQRegularExpressionTErro UTF-8: sequncia excessiva de 6 bytes%UTF-8 error: overlong 6-byte sequenceQRegularExpression$\ no fim do padro\ at end of patternQRegularExpression|\C no permitido em uma declarao lookbehind no modo UTF-16:\C is not allowed in a lookbehind assertion in UTF-16 modeQRegularExpression8\N no suportado na classe\N is not supported in a classQRegularExpressionf\N{U+dddd} suportado apenas no modo Unicode (UTF)2\N{U+dddd} is supported only in Unicode (UTF) modeQRegularExpression&\c no fim do padro\c at end of patternQRegularExpressionz\c deve ser seguido por uma letra ou um dos caracteres [\]^_?0\c must be followed by a letter or one of [\]^_?QRegularExpressionj\c deve ser seguido por um caractere ASCII imprimvel2\c must be followed by a printable ASCII characterQRegularExpression\g no seguido por um colchete, parnteses de ngulo ou nome/nmero citado ou nmero simples[\g is not followed by a braced, angle-bracketed, or quoted name/number or by a plain numberQRegularExpression\k no seguido por um colchete, parnteses de ngulo ou nome citado?\k is not followed by a braced, angle-bracketed, or quoted nameQRegularExpressionRno permitido um valor relativo de zero'a relative value of zero is not allowedQRegularExpressionJafirmao esperada aps (?( ou (?(?C)&assertion expected after (?( or (?(?C)QRegularExpression\declarao atmica esperada aps (?( ou (?(?C)-atomic assertion expected after (?( or (?(?C)QRegularExpressioncondio de referncia anterior ou teste de repetio no so suportados para correspondncia DFAKbackreference condition or recursion test is not supported for DFA matchingQRegularExpressionopo JIT ruimbad JIT optionQRegularExpression&valor de dados ruimbad data valueQRegularExpressiondsequncia de escape ruim na string de substituio)bad escape sequence in replacement stringQRegularExpression<offset incorreto na string UTFbad offset into UTF stringQRegularExpression(valor de offset ruimbad offset valueQRegularExpression&valor de opo ruimbad option valueQRegularExpression0dados serializados ruinsbad serialized dataQRegularExpressionRm substituio na string de substituio&bad substitution in replacement stringQRegularExpression2cdigo de erro de chamadacallout error codeQRegularExpressionBa string de chamada muito longacallout string is too longQRegularExpressiono valor do ponto de cdigo de caracteres na sequncia \u.... muito grande:character code point value in \u.... sequence is too largeQRegularExpressiono valor do ponto de cdigo de caracteres em \x{} ou \o{} muito grande7character code point value in \x{} or \o{} is too largeQRegularExpression`era esperado o fechamento de parnteses para (?C$closing parenthesis for (?C expectedQRegularExpressionlsubpadro condicional contm mais de duas ramificaes6conditional subpattern contains more than two branchesQRegularExpressionno so permitidos nomes diferentes nos subpadres do mesmo nmeroBdifferent names for subpatterns of the same number are not allowedQRegularExpression>dgito esperado aps (?+ ou (?-digit expected after (?+ or (?-QRegularExpressionLfaltam dgitos em \x{}, \o{} ou \N{U+}(digits missing in \x{} or \o{} or \N{U+}QRegularExpressionno permitido ponto de cdigo Unicode (>= 0xd800 && <= 0xdfff)6disallowed Unicode code point (>= 0xd800 && <= 0xdfff)QRegularExpressionfsequncia de escape invlida na classe do caractere-escape sequence is invalid in character classQRegularExpressionrcolchete de fechamento esperado na string de substituio4expected closing curly bracket in replacement stringQRegularExpression@erro de alocao da memria heapfailed to allocate heap memoryQRegularExpressionZfuno no suportada para correspondncia DFA*function is not supported for DFA matchingQRegularExpression2limite de pilhas excedidoheap limit exceededQRegularExpressionperro interno - correspondncia de substituio duplicada-internal error - duplicate substitution matchQRegularExpressionDerro interno - padro substitudo?%internal error - pattern overwritten?QRegularExpression^erro interno no pcre2_study(): no deve ocorrer1internal error in pcre2_study(): should not occurQRegularExpressionnerro interno: valor do cdigo invlido em parsed_skip()/internal error: bad code value in parsed_skip()QRegularExpressionFerro interno: esgotamento do cdigointernal error: code overflowQRegularExpressionrerro interno: invaso do espao de trabalho de compilao+internal error: overran compiling workspaceQRegularExpressionXerro interno: superfluxo do padro analisado'internal error: parsed pattern overflowQRegularExpressionerro interno: o subpadro referenciado anteriormente verificado no foi encontradoBinternal error: previously-checked referenced subpattern not foundQRegularExpressionDerro interno: repetio inesperada!internal error: unexpected repeatQRegularExpressionjerro interno: cdigo desconhecido no padro analisado.internal error: unknown code in parsed patternQRegularExpressionzerro interno: cdigo meta desconhecido em check_lookbehinds()8internal error: unknown meta code in check_lookbehinds()QRegularExpressionjerro interno: configurao desconhecida de nova linha'internal error: unknown newline settingQRegularExpressionjerro interno: opo desconhecida em auto_possessify()3internal error: unknown opcode in auto_possessify()QRegularExpressiondados invlidos no espao de trabalho para reinicializao do DFA)invalid data in workspace for DFA restartQRegularExpressionXsequncia de escape invlida no nome (*VERB)'invalid escape sequence in (*VERB) nameQRegularExpressionNhfen invlido na configurao da opo invalid hyphen in option settingQRegularExpressionRbits de opo invlidos com PCRE2_LITERAL&invalid option bits with PCRE2_LITERALQRegularExpressionTintervalo invlido na classe de caracteres invalid range in character classQRegularExpression>string de substituio invlidainvalid replacement stringQRegularExpression sintaxe invlidainvalid syntaxQRegularExpressionba declarao lookbehind no de comprimento fixo(lookbehind assertion is not fixed lengthQRegularExpressionJa declarao lookbehind muito longa lookbehind assertion is too longQRegularExpression:lookbehind muito complicadolookbehind is too complicatedQRegularExpression*nmero mgico ausentemagic number missingQRegularExpression<sequncia invlida de \P ou \pmalformed \P or \p sequenceQRegularExpressionDlimite de correspondncia excedidomatch limit exceededQRegularExpressiona correspondncia com o fim antes do incio ou incio movido para trs no suportadoEmatch with end before start or start moved backwards is not supportedQRegularExpression\limite de profundidade correspondente excedidomatching depth limit exceededQRegularExpression>) ausente aps o comentrio (?#missing ) after (?# commentQRegularExpression@fechamento de parnteses ausentemissing closing parenthesisQRegularExpression^parntese de fechamento ausente para a condio)missing closing parenthesis for conditionQRegularExpression>falta abrir um colchete aps \omissing opening brace after \oQRegularExpression`falta de terminao ] para a classe do caractere)missing terminating ] for character classQRegularExpressiondelimitador de terminao ausente para chamada com argumento da string>missing terminating delimiter for callout with string argumentQRegularExpressionrnome muito longo em (*MARK), (*PRUNE), (*SKIP) ou (*THEN):name is too long in (*MARK), (*PRUNE), (*SKIP), or (*THEN)QRegularExpression\repetio agrupada na mesma posio do assunto-nested recursion at the same subject positionQRegularExpressionnenhum errono errorQRegularExpression&sem correspondnciano matchQRegularExpression&no h mais memriano more memoryQRegularExpression|caracteres no-hexadecimais em \x{} (falta fechar o colchete?)2non-hex character in \x{} (closing brace missing?)QRegularExpressionpcaracteres no-octais em \o{} (falta fechar o colchete?)4non-octal character in \o{} (closing brace missing?)QRegularExpression>nome de substring no exclusivonon-unique substring nameQRegularExpression>nmero aps (?C maior que 255$number after (?C is greater than 255QRegularExpressionNnmero muito grande no quantificador {}number too big in {} quantifierQRegularExpressionRnmeros fora de ordem no quantificador {}%numbers out of order in {} quantifierQRegularExpression@erro obsoleto (no deve ocorrer)!obsolete error (should not occur)QRegularExpressionro valor em octal maior que \377 no modo 8-bit non-UTF-88octal value is greater than \377 in 8-bit non-UTF-8 modeQRegularExpressionhlimite de offset definido sem PCRE2_USE_OFFSET_LIMIT/offset limit set without PCRE2_USE_OFFSET_LIMITQRegularExpressionJparnteses so extremamente aninhados!parentheses are too deeply nestedQRegularExpressionxparnteses so extremamente aninhados (verificao de pilha)/parentheses are too deeply nested (stack check)QRegularExpression.correspondncia parcial partial matchQRegularExpressionjpadro compilado no modo errado: erro de 8/16/32 bits1pattern compiled in wrong mode: 8/16/32-bit errorQRegularExpressionpadro contm um item que no suportado para correspondncia DFA?pattern contains an item that is not supported for DFA matchingQRegularExpression0padro passado como NULLpattern passed as NULLQRegularExpressiona string de padres mais longa do que o limite definido pelo aplicativo>pattern string is longer than the limit set by the applicationQRegularExpressionrnem todos os padres usam as mesmas tabelas de caracteres1patterns do not all use the same character tablesQRegularExpressionRquantificador no segue um item repetvel,quantifier does not follow a repeatable itemQRegularExpression\intervalo fora de ordem na classe do caractere%range out of order in character classQRegularExpressionDreferncia a subpadro inexistente$reference to non-existent subpatternQRegularExpressionLa expresso regular muito complicada%regular expression is too complicatedQRegularExpressionDa expresso regular muito granderegular expression is too largeQRegularExpressionHvalor solicitado no est disponvel requested value is not availableQRegularExpressionDvalor solicitado no est definidorequested value is not setQRegularExpressiona execuo de scripts requer suporte Unicode, ausente nesta verso do PCRE2Nscript runs require Unicode support, which this version of PCRE2 does not haveQRegularExpression4nome do subpadro esperadosubpattern name expectedQRegularExpressiono nome do subpadro muito longo (mximo 32 unidades de cdigo)3subpattern name is too long (maximum 32 code units)QRegularExpression^o nome do subpadro deve comear com no-dgito+subpattern name must start with a non-digitQRegularExpressionHo nmero do subpadro muito grandesubpattern number is too bigQRegularExpressionterro de sintaxe no nome do subpadro (falta o terminador?)5syntax error in subpattern name (missing terminator?)QRegularExpressionzerro de sintaxe ou nmero muito grande na condio (?(VERSION6syntax error or number too big in (?(VERSION conditionQRegularExpressionbesta verso do PCRE2 no possui suporte a Unicode3this version of PCRE2 does not have Unicode supportQRegularExpressionnesta verso do PCRE2 no possui suporte a \P, \p, ou \X=this version of PCRE2 does not have support for \P, \p, or \XQRegularExpressionNmuitos grupos de captura (mximo 65535))too many capturing groups (maximum 65535)QRegularExpressionRmuitos subpadres nomeados (mximo 10000)*too many named subpatterns (maximum 10000)QRegularExpressionLmuitas substituies (mais de INT_MAX))too many replacements (more than INT_MAX)QRegularExpressionPmuita repetio para correspondncia DFA#too much recursion for DFA matchingQRegularExpressiondois subpadres nomeados tm o mesmo nome (PCRE2_DUPNAMES no definido)Atwo named subpatterns have the same name (PCRE2_DUPNAMES not set)QRegularExpressionBnome da classe POSIX desconhecidounknown POSIX class nameQRegularExpression\nome da propriedade desconhecido aps \P ou \p$unknown property name after \P or \pQRegularExpression,substring desconhecidaunknown substringQRegularExpressionHparntese de fechamento incomparvelunmatched closing parenthesisQRegularExpressionrbit(s) de opo de tempo de compilao no reconhecido(s)'unrecognised compile-time option bit(s)QRegularExpressionPcaractere no reconhecido aps (? ou (?-&unrecognized character after (? or (?-QRegularExpressionDcaractere no reconhecido aps (?P unrecognized character after (?PQRegularExpressionLcaractere no reconhecido seguido de \ unrecognized character follows \QRegularExpressionbo delimitador de string no reconhecido segue (?C)unrecognized string delimiter follows (?CQRegularExpressionXo uso de UCP est desativado pelo aplicativo(using UCP is disabled by the applicationQRegularExpressionXo uso de UTF est desativado pelo aplicativo(using UTF is disabled by the applicationQRegularExpressionPo uso do \C desativado pelo aplicativo'using \C is disabled by the applicationQRegularExpressiondo uso do \C est desativado nesta biblioteca PCRE2*using \C is disabled in this PCRE2 libraryQRegularExpressionztamanho do espao de trabalho excedido na correspondncia DFA'workspace size exceeded in DFA matchingQRegularExpression<Erro ao abrir o banco de dadosError opening databaseQSQLite2DriverHNo foi possvel iniciar a transaoUnable to begin transactionQSQLite2DriverFNo foi possvel enviar a transaoUnable to commit transactionQSQLite2DriverJNo foi possvel desfazer a transaoUnable to rollback transactionQSQLite2DriverJNo foi possvel executar a instruoUnable to execute statementQSQLite2ResultHNo foi possvel obter os resultadosUnable to fetch resultsQSQLite2Result>Erro ao fechar o banco de dadosError closing database QSQLiteDriver<Erro ao abrir o banco de dadosError opening database QSQLiteDriverHNo foi possvel iniciar a transaoUnable to begin transaction QSQLiteDriverFNo foi possvel enviar a transaoUnable to commit transaction QSQLiteDriverJNo foi possvel desfazer a transaoUnable to rollback transaction QSQLiteDriver Nenhuma consultaNo query QSQLiteResultLO nmero de parmetros no correspondeParameter count mismatch QSQLiteResultNNo foi possvel associar os parmetrosUnable to bind parameters QSQLiteResulttNo foi possvel executar vrias instrues ao mesmo tempo/Unable to execute multiple statements at a time QSQLiteResultJNo foi possvel executar a instruoUnable to execute statement QSQLiteResult<No foi possvel obter a linhaUnable to fetch row QSQLiteResultLNo foi possvel reiniciar a instruoUnable to reset statement QSQLiteResultVO arquivo existente %1 no pode ser gravado Existing file %1 is not writable QSaveFileNO nome do arquivo se refere a uma pastaFilename refers to a directory QSaveFileO QSaveFile no pode abrir '%1' sem que a gravao direta seja ativada.AQSaveFile cannot open '%1' without direct write fallback enabled. QSaveFileDGravao cancelada pelo aplicativoWriting canceled by application QSaveFileInferiorBottom QScrollBarBorda esquerda Left edge QScrollBarPgina abaixo Page down QScrollBar"Pgina esquerda Page left QScrollBar Pgina direita Page right QScrollBarPgina acimaPage up QScrollBarBorda direita Right edge QScrollBar Rolar para baixo Scroll down QScrollBarRolar aqui Scroll here QScrollBar Rolar esquerda Scroll left QScrollBarRolar direita Scroll right QScrollBarRolar para cima Scroll up QScrollBarSuperiorTop QScrollBarBA mquina remota fechou a conexo%The remote host closed the connection QSctpSocketH%1: arquivo de chave UNIX no existe%1: UNIX key file doesn't exist QSharedMemory%1: j existe%1: already exists QSharedMemory"%1: nome invlido %1: bad name QSharedMemoryH%1: tamanho da criao menor que 0%1: create size is less then 0 QSharedMemory%1: no existe%1: doesn't exist QSharedMemory%1: ftok falhou%1: ftok failed QSharedMemory(%1: tamanho invlido%1: invalid size QSharedMemory"%1: erro na chave %1: key error QSharedMemory%1: chave vazia%1: key is empty QSharedMemory%1: no anexado%1: not attached QSharedMemory %1: sem recursos%1: out of resources QSharedMemory(%1: permisso negada%1: permission denied QSharedMemory8%1: pedido de tamanho falhou%1: size query failed QSharedMemory^%1: restries de tamanho impostas pelo sistema$%1: system-imposed size restrictions QSharedMemory6%1: no possvel bloquear%1: unable to lock QSharedMemory@%1: no possvel criar a chave%1: unable to make key QSharedMemory\%1: no possvel definir a chave de bloqueio%1: unable to set key on lock QSharedMemory<%1: no possvel desbloquear%1: unable to unlock QSharedMemory0%1: erro desconhecido %2%1: unknown error %2 QSharedMemory++ QShortcut$Adicionar favorito Add Favorite QShortcutAjustar brilhoAdjust Brightness QShortcut"Ajustar contrasteAdjust contrast QShortcutAltAlt QShortcut*Aplicativo esquerdaApplication Left QShortcut(Aplicativo direitaApplication Right QShortcut0Faixas de udio em cicloAudio Cycle Track QShortcut4Reproduzir udio aleatrioAudio Random Play QShortcutRepetir udio Audio Repeat QShortcutAusenteAway QShortcut VoltarBack QShortcut Retornar/Avanar Back Forward QShortcutBackspace Backspace QShortcutBacktabBacktab QShortcut"Aumento de graves Bass Boost QShortcutDiminuir graves Bass Down QShortcutAumentar gravesBass Up QShortcutBateriaBattery QShortcutAzulBlue QShortcutBluetooth Bluetooth QShortcut LivroBook QShortcutNavegadorBrowser QShortcutCDCD QShortcutCalculadora Calculator QShortcutCalendrioCalendar QShortcut LigarCall QShortcutFoco da cmera Camera Focus QShortcut(Disparador da cmeraCamera Shutter QShortcutCancelarCancel QShortcutCaps Lock Caps Lock QShortcutCapsLockCapsLock QShortcutPrximo canal Channel Down QShortcutCanal anterior Channel Up QShortcut LimparClear QShortcut"Limpar e capturar Clear Grab QShortcut FecharClose QShortcut"Entrada de cdigo Code input QShortcutComunidade Community QShortcutContexto1Context1 QShortcutContexto2Context2 QShortcutContexto3Context3 QShortcutContexto4Context4 QShortcut CopiarCopy QShortcutCtrlCtrl QShortcutRecortarCut QShortcutDOSDOS QShortcutDelDel QShortcut DeleteDelete QShortcutTelaDisplay QShortcutDocumentos Documents QShortcut AbaixoDown QShortcutEisu Shift Eisu Shift QShortcutEisu toggle Eisu toggle QShortcut EjetarEject QShortcutEndEnd QShortcut EnterEnter QShortcutEscEsc QShortcut EscapeEscape QShortcutExecutarExecute QShortcutSairExit QShortcutF%1F%1 QShortcutFavoritos Favorites QShortcutFinanasFinance QShortcutLocalizarFind QShortcutInverterFlip QShortcutAvanarForward QShortcutJogoGame QShortcutIrGo QShortcut VerdeGreen QShortcutGuiaGuide QShortcut HangulHangul QShortcutHangul Banja Hangul Banja QShortcutHangul End Hangul End QShortcutHangul Hanja Hangul Hanja QShortcutHangul Jamo Hangul Jamo QShortcutHangul Jeonja Hangul Jeonja QShortcut Hangul PostHanjaHangul PostHanja QShortcutHangul PreHanjaHangul PreHanja QShortcutHangul Romaja Hangul Romaja QShortcutHangul SpecialHangul Special QShortcutHangul Start Hangul Start QShortcutDesligarHangup QShortcutHankakuHankaku QShortcut AjudaHelp QShortcut HenkanHenkan QShortcutHibernar Hibernate QShortcutHiraganaHiragana QShortcut"Hiragana KatakanaHiragana Katakana QShortcutHistricoHistory QShortcutHomeHome QShortcut$Escritrio pessoal Home Office QShortcutPgina pessoal Home Page QShortcut"Links importantes Hot Links QShortcutInformaesInfo QShortcutInsIns QShortcut InsertInsert QShortcutKana Lock Kana Lock QShortcutKana Shift Kana Shift QShortcut KanjiKanji QShortcutKatakanaKatakana QShortcut:Reduzir iluminao do tecladoKeyboard Brightness Down QShortcut<Aumentar iluminao do tecladoKeyboard Brightness Up QShortcutHLigar/desligar iluminao do tecladoKeyboard Light On/Off QShortcutMenu do teclado Keyboard Menu QShortcut6Rediscagem do ltimo nmeroLast Number Redial QShortcutLanar (0) Launch (0) QShortcutLanar (1) Launch (1) QShortcutLanar (2) Launch (2) QShortcutLanar (3) Launch (3) QShortcutLanar (4) Launch (4) QShortcutLanar (5) Launch (5) QShortcutLanar (6) Launch (6) QShortcutLanar (7) Launch (7) QShortcutLanar (8) Launch (8) QShortcutLanar (9) Launch (9) QShortcutLanar (A) Launch (A) QShortcutLanar (B) Launch (B) QShortcutLanar (C) Launch (C) QShortcutLanar (D) Launch (D) QShortcutLanar (E) Launch (E) QShortcutLanar (F) Launch (F) QShortcutLanar (G) Launch (G) QShortcutLanar (H) Launch (H) QShortcutLanar e-mail Launch Mail QShortcutLanar mdia Launch Media QShortcutEsquerdaLeft QShortcutLmpada LightBulb QShortcutEncerrar sessoLogoff QShortcut"Encaminhar e-mail Mail Forward QShortcutMercadoMarket QShortcut MassyoMassyo QShortcut<Multimdia Avanar rapidamenteMedia Fast Forward QShortcut$Multimdia Prximo Media Next QShortcut"Multimdia Pausar Media Pause QShortcut*Multimdia Reproduzir Media Play QShortcut&Multimdia AnteriorMedia Previous QShortcut"Multimdia Gravar Media Record QShortcut&Multimdia Retornar Media Rewind QShortcut Multimdia Parar Media Stop QShortcutReunioMeeting QShortcutMemorandoMemo QShortcutMenuMenu QShortcutMenu PBMenu PB QShortcutMensageiro Messenger QShortcutMetaMeta QShortcut"Microfone sem somMicrophone Mute QShortcut8Diminuir volume do microfoneMicrophone Volume Down QShortcut8Aumentar volume do microfoneMicrophone Volume Up QShortcut2Reduzir brilho do monitorMonitor Brightness Down QShortcut4Aumentar brilho do monitorMonitor Brightness Up QShortcutMuhenkanMuhenkan QShortcut"Vrios candidatosMultiple Candidate QShortcutMsicasMusic QShortcutMeus sitesMy Sites QShortcutNovoNew QShortcutNotciasNews QShortcutNoNo QShortcutNumNum QShortcutNum LockNum Lock QShortcutNumLockNumLock QShortcutNumber Lock Number Lock QShortcut AbrirOpen QShortcutAbrir URLOpen URL QShortcut OpoOption QShortcutPage Down Page Down QShortcutPage UpPage Up QShortcut ColarPaste QShortcut PausePause QShortcut PgDownPgDown QShortcutPgUpPgUp QShortcutTelefonePhone QShortcutImagensPictures QShortcutReproduzirPlay QShortcutDesligar Power Down QShortcutDesligar Power Off QShortcut$Candidato anteriorPrevious Candidate QShortcut PrintPrint QShortcutPrint Screen Print Screen QShortcutImpressoraPrinter QShortcutVermelhoRed QShortcutRefazerRedo QShortcutAtualizarRefresh QShortcutRecarregarReload QShortcutResponderReply QShortcut ReturnReturn QShortcutDireitaRight QShortcut RomajiRomaji QShortcutGirar janelasRotate Windows QShortcutRotao KB Rotation KB QShortcutRotao PB Rotation PB QShortcut SalvarSave QShortcut Protetor de tela Screensaver QShortcutScroll Lock Scroll Lock QShortcutScrollLock ScrollLock QShortcutPesquisarSearch QShortcutSelecionarSelect QShortcut EnviarSend QShortcutConfiguraesSettings QShortcut ShiftShift QShortcutLojaShop QShortcutSuspenderSleep QShortcut EspaoSpace QShortcut.Verificador ortogrfico Spellchecker QShortcutDividir tela Split Screen QShortcutPlanilha Spreadsheet QShortcutSuspenderStandby QShortcut PararStop QShortcutLegendaSubtitle QShortcutSuporteSupport QShortcutSuspenderSuspend QShortcut SysReqSysReq QShortcutSystem RequestSystem Request QShortcutTabTab QShortcut"Painel de tarefas Task Panel QShortcutTerminalTerminal QShortcut TempoTime QShortcut Lista de tarefas To-do list QShortcut0Alternar Chamar/DesligarToggle Call/Hangup QShortcut@Alternar entre Reproduzir/PausarToggle Media Play/Pause QShortcutFerramentasTools QShortcutMenu superiorTop Menu QShortcut$Touchpad desligado Touchpad Off QShortcutTouchpad ligado Touchpad On QShortcut"Alternar touchpadTouchpad Toggle QShortcutTourokuTouroku QShortcut ViagemTravel QShortcutDiminuir agudos Treble Down QShortcutAumentar agudos Treble Up QShortcut"Banda ultra-largaUltra Wide Band QShortcutDesfazerUndo QShortcut AcimaUp QShortcut VdeoVideo QShortcut ExibirView QShortcut Discagem por voz Voice Dial QShortcutDiminuir volume Volume Down QShortcutSem som Volume Mute QShortcutAumentar volume Volume Up QShortcutWWWWWW QShortcut AtivarWake Up QShortcut WebcamWebCam QShortcutSem fioWireless QShortcut(Processador de textoWord Processor QShortcutXFerXFer QShortcutAmareloYellow QShortcutSimYes QShortcutZenkakuZenkaku QShortcutZenkaku HankakuZenkaku Hankaku QShortcutZoomZoom QShortcutAmpliarZoom In QShortcutReduzirZoom Out QShortcut iTouchiTouch QShortcut<Tipo de endereo no suportadoAddress type not supportedQSocks5SocketEngineVConexo no permitida pelo servidor SOCKSv5(Connection not allowed by SOCKSv5 serverQSocks5SocketEngineTConexo com o proxy fechada prematuramente&Connection to proxy closed prematurelyQSocks5SocketEngine8Conexo com o proxy recusadaConnection to proxy refusedQSocks5SocketEngineVTerminou o tempo limite da conexo ao proxyConnection to proxy timed outQSocks5SocketEngine>Falha geral no servidor SOCKSv5General SOCKSv5 server failureQSocks5SocketEngineZPassou o tempo limite para a operao de redeNetwork operation timed outQSocks5SocketEngine<Falha na autenticao do proxyProxy authentication failedQSocks5SocketEngineDFalha na autenticao do proxy: %1Proxy authentication failed: %1QSocks5SocketEngine>Mquina do proxy no encontradaProxy host not foundQSocks5SocketEngine@Erro no protocolo SOCKS verso 5SOCKS version 5 protocol errorQSocks5SocketEngine:Comando SOCKSv5 no suportadoSOCKSv5 command not supportedQSocks5SocketEngineTTL expirado TTL expiredQSocks5SocketEnginedCdigo de erro desconhecido do proxy SOCKSv5: 0x%1%Unknown SOCKSv5 proxy error code 0x%1QSocks5SocketEngine$mensagem de alerta alert messageQSpiAccessibleBridgeanimao animationQSpiAccessibleBridgeaplicativo applicationQSpiAccessibleBridgeassistente assistantQSpiAccessibleBridgemenu em boto button menuQSpiAccessibleBridge4boto com lista de seleobutton with drop downQSpiAccessibleBridgeFgrade do boto com lista de seleobutton with drop down gridQSpiAccessibleBridgerea de desenhocanvasQSpiAccessibleBridge clulacellQSpiAccessibleBridgegrficochartQSpiAccessibleBridge(caixa de verificao check boxQSpiAccessibleBridgerelgioclockQSpiAccessibleBridge seletor de cores color chooserQSpiAccessibleBridge colunacolumnQSpiAccessibleBridge&cabealho da coluna column headerQSpiAccessibleBridge caixa de seleo combo boxQSpiAccessibleBridge*contedo complementarcomplementary contentQSpiAccessibleBridge cursorcursorQSpiAccessibleBridge rea de trabalhodesktopQSpiAccessibleBridge discardialQSpiAccessibleBridgedilogodialogQSpiAccessibleBridgedocumentodocumentQSpiAccessibleBridgeequaoequationQSpiAccessibleBridgepreenchimentofillerQSpiAccessibleBridge rodapfooterQSpiAccessibleBridgeformulrioformQSpiAccessibleBridge quadroframeQSpiAccessibleBridgegrficographicQSpiAccessibleBridgepegagripQSpiAccessibleBridgecabealhoheadingQSpiAccessibleBridgebalo de ajuda help balloonQSpiAccessibleBridge0campo de tecla de atalho hotkey fieldQSpiAccessibleBridgeindicador indicatorQSpiAccessibleBridgepapel invlido invalid roleQSpiAccessibleBridgelegendalabelQSpiAccessibleBridge"painel em camadas layered paneQSpiAccessibleBridgelinklinkQSpiAccessibleBridge listalistQSpiAccessibleBridgeitem da lista list itemQSpiAccessibleBridgebarra de menumenu barQSpiAccessibleBridgeitem do menu menu itemQSpiAccessibleBridgenotanoteQSpiAccessibleBridgenotificao notificationQSpiAccessibleBridge&separador de pginapage tabQSpiAccessibleBridge<lista de separadores de pgina page tab listQSpiAccessibleBridge painelpanelQSpiAccessibleBridgepargrafo paragraphQSpiAccessibleBridge menu de contexto popup menuQSpiAccessibleBridge$barra de progresso progress barQSpiAccessibleBridge,pgina de propriedades property pageQSpiAccessibleBridge boto push buttonQSpiAccessibleBridgeboto de opo radio buttonQSpiAccessibleBridge linharowQSpiAccessibleBridge$cabealho da linha row headerQSpiAccessibleBridge barra de rolagem scroll barQSpiAccessibleBridge seosectionQSpiAccessibleBridgeseparador separatorQSpiAccessibleBridge barra deslizantesliderQSpiAccessibleBridgesomsoundQSpiAccessibleBridge espaospaceQSpiAccessibleBridge"campo incrementalspin boxQSpiAccessibleBridgeseparadorsplitterQSpiAccessibleBridgebarra de status status barQSpiAccessibleBridge tabelatableQSpiAccessibleBridgeterminalterminalQSpiAccessibleBridge textotextQSpiAccessibleBridgecursor do texto text caretQSpiAccessibleBridgebarra de ttulo title barQSpiAccessibleBridge(barra de ferramentastool barQSpiAccessibleBridgedicatool tipQSpiAccessibleBridge rvoretreeQSpiAccessibleBridgeitem da rvore tree itemQSpiAccessibleBridgedesconhecidounknownQSpiAccessibleBridge documento da web web documentQSpiAccessibleBridge4Dados de entrada invlidosInvalid input dataQSslDiffieHellmanParameterNenhum erroNo errorQSslDiffieHellmanParameternOs parmetros Diffie-Hellman so considerados inseguros5The given Diffie-Hellman parameters are deemed unsafeQSslDiffieHellmanParameterXUma mensagem foi recebida fora de sequncia.'A message was received out of sequence. QSslSocketAcesso negado Access denied QSslSocket,Algoritmo incompatvelAlgorithm mismatch QSslSocketdOcorreu um erro na tentativa de definir %1 para %2,An error occurred attempting to set %1 to %2 QSslSocketJUm identificador interno era invlidoAn internal handle was invalid QSslSocket:Um token interno era invlidoAn internal token was invalid QSslSocketNUma funo no suportada foi solicitada%An unsupported function was requested QSslSocketZTentativa de usar um protocolo no suportado.)Attempted to use an unsupported protocol. QSslSocket`No possvel fornecer um certificado sem chave(Cannot provide a certificate with no key QSslSockethNo possvel fornecer um certificado sem chave, %1,Cannot provide a certificate with no key, %1 QSslSocketdOs sockets do cliente no enviam respostas ao OCSP.Client-side sockets do not send OCSP responses QSslSocketfNo obteve os atributos necessrios para a conexo.7Did not get the required attributes for the connection. QSslSocketTOs parmetros Diffie-Hellman so invlidos'Diffie-Hellman parameters are not valid QSslSocketHErro ao criar o contexto de SSL (%1)Error creating SSL context (%1) QSslSocketBErro ao criar a sesso de SSL, %1Error creating SSL session, %1 QSslSocketBErro ao criar a sesso de SSL: %1Error creating SSL session: %1 QSslSocket:Erro na negociao de SSL: %1Error during SSL handshake: %1 QSslSocketPErro ao carregar o certificado local, %1#Error loading local certificate, %1 QSslSocketHErro ao carregar a chave privada, %1Error loading private key, %1 QSslSocket\Erro ao definir a configurao do OpenSSL (%1)1Error when setting the OpenSSL configuration (%1) QSslSocketPErro ao definir as curvas elpticas (%1)+Error when setting the elliptic curves (%1) QSslSocket<Ocorreu um erro de leitura: %1Error while reading: %1 QSslSocketXErro ao definir a verso mxima do protocolo0Error while setting the maximum protocol version QSslSocketXErro ao definir a verso mnima do protocolo0Error while setting the minimal protocol version QSslSocket:Aguardando QByteArray para %1Expecting QByteArray for %1 QSslSocketNFalha na decodificao da resposta OCSPFailed to decode OCSP response QSslSocketFalha ao decodificar um 'SingleResponse' da resposta de status OCSP;Failed to decode a SingleResponse from OCSP status response QSslSocketFFalha ao ativar o grampeamento OCSPFailed to enable OCSP stapling QSslSocketjFalha ao extrair 'this update time' do SingleResponseNo certificate verification store, cannot verify OCSP response QSslSocketLNenhum certificado pde ser verificado!No certificates could be verified QSslSocketPNenhum conjunto de criptografia em comumNo cipher suites in common QSslSockettNo existe um protocolo comum entre o cliente e o servidor;No common protocol exists between the client and the server QSslSocketSem credenciaisNo credentials QSslSocketNenhum erroNo error QSslSocketjO agente OCSP atingiu um estado interno inconsistente5OCSP responder reached an inconsistent internal state QSslSocketO agente OCSP no conseguiu retornar um status para o certificado solicitadoJOCSP responder was unable to return a status for the requested certificate QSslSocketfA identidade do agente OCSP no pode ser verificada,OCSP responder's identity cannot be verified QSslSocketA resposta do OCSP contm um nmero inesperado de estruturas 'SingleResponse'HOCSP response contains an unexpected number of SingleResponse structures QSslSocketHUm dos certificados da AC invlido%One of the CA certificates is invalid QSslSocket^Verso OpenSSL com curvas elpticas desativadas-OpenSSL version with disabled elliptic curves QSslSocketbA chave privada no certifica a chave pblica, %1+Private key does not certify public key, %1 QSslSocketFA renegociao foi mal-sucedida: %1"Renegotiation was unsuccessful: %1 QSslSocket2SSL_CONF_CTX_new() falhouSSL_CONF_CTX_new() failed QSslSocket0SSL_CONF_finish() falhouSSL_CONF_finish() failed QSslSocket`Schannel no conseguiu criptografar os dados: %1#Schannel failed to encrypt data: %1 QSslSocketO servidor no aceita nenhum certificado que poderamos apresentar.7Server did not accept any certificate we could present. QSslSocketxO QSslSocket do servidor no tem suporte a grampeamento OCSP5Server-side QSslSocket does not support OCSP stapling QSslSocket:Falha na inicializao do TLSTLS initialization failed QSslSocketfA solicitao de status OCSP tinha sintaxe invlida*The OCSP status request had invalid syntax QSslSocket:A conexo TLS/SSL foi fechada&The TLS/SSL connection has been closed QSslSocketO parmetro do tamanho da sequncia 'basicConstraints' foi excedidoComando no reconhecido %1 = %2Unrecognized command %1 = %2 QSslSocketDProtocolo indesejado foi negociado Unwanted protocol was negotiated QSslSocket8Valor incorreto para %1 (%2)Wrong value for %1 (%2) QSslSocket.protocolo no suportadounsupported protocol QSslSocket4Configurao do aplicativoApplication ConfigurationQStandardPaths&Dados do aplicativoApplication DataQStandardPathsAplicativos ApplicationsQStandardPaths CacheCacheQStandardPathsConfigurao ConfigurationQStandardPaths rea de trabalhoDesktopQStandardPathsDocumentos DocumentsQStandardPathsDownloadDownloadQStandardPaths FontesFontsQStandardPaths IncioHomeQStandardPaths FilmesMoviesQStandardPathsMsicasMusicQStandardPathsImagensPicturesQStandardPaths"Tempo de execuoRuntimeQStandardPaths&Cache compartilhado Shared CacheQStandardPaths4Configurao compartilhadaShared ConfigurationQStandardPaths(Dados compartilhados Shared DataQStandardPaths Pasta temporriaTemporary DirectoryQStandardPaths~O modo filho da mquina de estado '%1' no 'ExclusiveStates'.:Child mode of state machine '%1' is not 'ExclusiveStates'. QStateMachinevO estado padro no estado histrico '%1' no foi encontrado+Missing default state in history state '%1' QStateMachinevO estado inicial no estado composto '%1' no foi encontrado,Missing initial state in compound state '%1' QStateMachineNenhum ascendente comum para os destinos e origem da transio do estado '%1'GNo common ancestor for targets and source of transition from state '%1' QStateMachine"Erro desconhecido Unknown error QStateMachine%1: j existe%1: already existsQSystemSemaphore%1: no existe%1: does not existQSystemSemaphore %1: sem recursos%1: out of resourcesQSystemSemaphore(%1: permisso negada%1: permission deniedQSystemSemaphore0%1: erro desconhecido %2%1: unknown error %2QSystemSemaphore@No foi possvel abrir a conexoUnable to open connection QTDSDriverLNo foi possvel usar o banco de dadosUnable to use database QTDSDriver&Deslocar esquerda Scroll LeftQTabBar$Deslocar direita Scroll RightQTabBar@Operao de socket no suportada$Operation on socket is not supported QTcpServer:No foi possvel ler o rodapCould not read footerQTgaFileNNo foi possvel ler os dados da imagemCould not read image dataQTgaFile`No foi possvel restaurar os dados para leituraCould not reset to read dataQTgaFilexNo foi possvel mudar a posio para ler o rodap da imagem#Could not seek to image read footerQTgaFileFProfundidade da imagem no vlidaImage depth not validQTgaFileNFalha na leitura do cabealho da imagemImage header read failedQTgaFileFO tamanho da imagem excede o limiteImage size exceeds limitQTgaFilebTipo de imagem (no-TrueVision 2.0) no suportado-Image type (non-TrueVision 2.0) not supportedQTgaFile8Tipo de imagem no suportadoImage type not supportedQTgaFileFalha de posicionamento no arquivo/dispositivo para leitura da imagem&Seek file/device for image read failedQTgaFileDispositivo sequencial (ex: socket) no suportado para leitura de imagens:Sequential device (eg socket) for image read not supportedQTgaFilePNenhum datagrama disponvel para leitura!No datagram available for reading QUdpSocketHNo foi possvel enviar um datagramaUnable to send a datagram QUdpSocketRefazerRedo QUndoGroupRefazer %1Redo %1 QUndoGroupDesfazerUndo QUndoGroupDesfazer %1Undo %1 QUndoGroup<vazio> QUndoModelRefazerRedo QUndoStackRefazer %1Redo %1 QUndoStackDesfazerUndo QUndoStackDesfazer %1Undo %1 QUndoStack4FSI Isolado Forte PrimeiroFSI First strong isolateQUnicodeControlCharacterMenuJInserir caractere de controle Unicode Insert Unicode control characterQUnicodeControlCharacterMenujLRE Incio de incorporao da esquerda para a direita$LRE Start of left-to-right embeddingQUnicodeControlCharacterMenuLLRI Isolado da Esquerda para a DireitaLRI Left-to-right isolateQUnicodeControlCharacterMenuHLRM Marca da esquerda para a direitaLRM Left-to-right markQUnicodeControlCharacterMenujLRO Incio de substituio da esquerda para a direita#LRO Start of left-to-right overrideQUnicodeControlCharacterMenu:PDF Formatao direcional popPDF Pop directional formattingQUnicodeControlCharacterMenu4PDI Isolado Direcional PopPDI Pop directional isolateQUnicodeControlCharacterMenujRLE Incio de incorporao da direita para a esquerda$RLE Start of right-to-left embeddingQUnicodeControlCharacterMenuLRLI Isolado da Direita para a EsquerdaRLI Right-to-left isolateQUnicodeControlCharacterMenuHRLM Marca da direita para a esquerdaRLM Right-to-left markQUnicodeControlCharacterMenujRLO Incio de substituio da direita para a esquerda#RLO Start of right-to-left overrideQUnicodeControlCharacterMenu8ZWJ Incluso de tamanho nuloZWJ Zero width joinerQUnicodeControlCharacterMenu<ZWNJ Separao de tamanho nuloZWNJ Zero width non-joinerQUnicodeControlCharacterMenu6ZWSP Espao de tamanho nuloZWSP Zero width spaceQUnicodeControlCharacterMenuO que isto? What's This?QWhatsThisAction**QWidget&Copiar&CopyQWidgetTextControl Co&lar&PasteQWidgetTextControl&Refazer&RedoQWidgetTextControl&Desfazer&UndoQWidgetTextControl6Copiar localizao do &linkCopy &Link LocationQWidgetTextControlRecor&tarCu&tQWidgetTextControlExcluirDeleteQWidgetTextControlSelecionar tudo Select AllQWidgetTextControlrNo foi possvel carregar o plugin da plataforma direct2d$Cannot load direct2d platform pluginQWindowsDirect2DIntegrationfO Qt no pode carregar o plugin de plataforma direct2d pois a verso do Direct2D neste sistema muito antiga. O requisito mnimo de sistema para este plugin de plataforma Windows 7 SP1 com a Atualizao da Plataforma. A verso mnima necessria do Direct2D %1. A verso do Direct2D neste sistema %2.Qt cannot load the direct2d platform plugin because the Direct2D version on this system is too old. The minimum system requirement for this platform plugin is Windows 7 SP1 with Platform Update. The minimum Direct2D version required is %1. The Direct2D version on this system is %2.QWindowsDirect2DIntegrationC&oncluir&FinishQWizard A&juda&HelpQWizard&Prximo&NextQWizard&Prximo >&Next >QWizard< &Voltar< &BackQWizardCancelarCancelQWizard EnviarCommitQWizardContinuarContinueQWizardConcludoDoneQWizard VoltarGo BackQWizard AjudaHelpQWizarddeclarao de codificao ou autnoma era esperada ao ler a declarao XMLYencoding declaration or standalone declaration expected while reading the XML declarationQXmlferro na declarao de texto de uma entidade externa3error in the text declaration of an external entityQXmlLocorreu um erro ao analisar comentrio$error occurred while parsing commentQXmlLocorreu um erro ao analisar o contedo$error occurred while parsing contentQXmlxocorreu um erro ao analisar a definio de tipo de documento5error occurred while parsing document type definitionQXmlLocorreu um erro ao analisar o elemento$error occurred while parsing elementQXmlLocorreu um erro ao analisar referncia&error occurred while parsing referenceQXml6erro gerado pelo consumidorerror triggered by consumerQXml`referncia entidade geral no permitida no DTD;external parsed general entity reference not allowed in DTDQXmlreferncia entidade externa no permitida no valor do atributoGexternal parsed general entity reference not allowed in attribute valueQXml`referncia entidade geral no permitida no DTD4internal general entity reference not allowed in DTDQXml^nome invlido para o processamento da instruo'invalid name for processing instructionQXml(uma letra esperadaletter is expectedQXmlTmais de uma definio de tipo de documento&more than one document type definitionQXml&no ocorreram errosno error occurredQXml(entidades recursivasrecursive entitiesQXmlhdeclarao autnoma esperada ao ler a declarao XMLAstandalone declaration expected while reading the XML declarationQXml*Etiqueta incompatvel tag mismatchQXml,caractere no esperadounexpected characterQXml2fim de arquivo inesperadounexpected end of fileQXmlrreferncia entidade no contexto incorreto no analisada*unparsed entity reference in wrong contextQXmlNverso esperada ao ler a declarao XML2version expected while reading the XML declarationQXmlTvalor incorreto para a declarao autnoma&wrong value for standalone declarationQXmlL%1 um identificador PUBLIC invlido.#%1 is an invalid PUBLIC identifier. QXmlStreamJ%1 um nome de codificao invlido.%1 is an invalid encoding name. QXmlStreamh%1 um nome de instruo de processamento invlido.-%1 is an invalid processing instruction name. QXmlStream%1 ou '%2' %1 or '%2' QXmlStream%1, '%2'%1, '%2' QXmlStream%1 ou '%2' %1, or '%2' QXmlStream'%1''%1' QXmlStream2Atributo '%1' redefinido.Attribute '%1' redefined. QXmlStream@A codificao %1 no suportadaEncoding %1 is unsupported QXmlStreamjFoi encontrado um contedo codificado incorretamente.(Encountered incorrectly encoded content. QXmlStream8Entidade '%1' no declarada.Entity '%1' not declared. QXmlStreamA entidade expande para mais caracteres que o limite de expanso da entidade.BEntity expands to more characters than the entity expansion limit. QXmlStream:Esperado %1, mas obteve '%2'.Expected %1, but got '%2'. QXmlStream<Eram esperados dados de texto.Expected character data. QXmlStreamFContedo extra no fim do documento.!Extra content at end of document. QXmlStream>Declarao ilegal de namespace.Illegal namespace declaration. QXmlStream.Caractere XML invlido.Invalid XML character. QXmlStream$Nome XML invlido.Invalid XML name. QXmlStreamBO texto da verso XML invlido.Invalid XML version string. QXmlStreamHAtributo invlido na declarao XML.%Invalid attribute in XML declaration. QXmlStreamDReferncia de caracteres invlida.Invalid character reference. QXmlStream&Documento invlido.Invalid document. QXmlStream>O valor da entidade invlido.Invalid entity value. QXmlStreamXNome da instruo de processamento invlido.$Invalid processing instruction name. QXmlStreamTNDATA na declarao da entidade parmetro.&NDATA in parameter entity declaration. QXmlStreamhO prefixo do espao de nomes '%1' no est declarado"Namespace prefix '%1' not declared QXmlStream\Incompatibilidade de etiqueta de incio e fim. Opening and ending tag mismatch. QXmlStream6Fim prematuro do documento.Premature end of document. QXmlStreampReferncia entidade externa '%1' no valor do atributo.5Reference to external entity '%1' in attribute value. QXmlStreamRReferncia entidade no analisada '%1'."Reference to unparsed entity '%1'. QXmlStreamXEntidade referenciando a si mesmo detectada.!Self-referencing entity detected. QXmlStream\A sequncia ']]>' no permitida no contedo.&Sequence ']]>' not allowed in content. QXmlStream^O atributo de autnomo s aceita 'yes' ou 'no'."Standalone accepts only yes or no. QXmlStream4Etiqueta inicial esperada.Start tag expected. QXmlStreamxO pseudo-atributo autnomo deve aparecer aps a codificao.?The standalone pseudo attribute must appear after the encoding. QXmlStream$'%1' no esperado.Unexpected '%1'. QXmlStreamfCaractere inesperado '%1' no literal da ID pblica./Unexpected character '%1' in public id literal. QXmlStream2Verso XML no suportada.Unsupported XML version. QXmlStream^Declarao XML no est no incio do documento.)XML declaration not at start of document. QXmlStreamwiRedPanda-4.1.12/app/resources/translations/translations.qrc000066400000000000000000000002131444020206400243500ustar00rootroot00000000000000 qt_pt_BR.qm wpanda_pt_BR.qm wiRedPanda-4.1.12/app/resources/translations/wpanda_en.ts000066400000000000000000003622661444020206400234470ustar00rootroot00000000000000 AddItemsCommand Add %1 elements And And AND Application Error! BewavedDolphin MainWindow toolBar File Help Edit View About Ctrl+H Load Ctrl+L Exit Ctrl+W Combinational Alt+C Export to PDF Ctrl+P Save Ctrl+S Save As... Ctrl+Shift+S Copy Ctrl+C Paste Ctrl+V Set to 0 0 1 Space Fit to screen Show Numbers Show Waveforms Set to 1 Set clock frequency Alt+W Invert Merge Split Export to PNG Ctrl+Shift+P Set Length Alt+L About Qt Ctrl+Shift+H Zoom In Ctrl+= Zoom Out Ctrl+- Ctrl+Shift+R Reset Zoom Ctrl+Home Clear Alt+X Cut Ctrl+X beWavedDolphin Simulator WiRedPanda - beWavedDolphin Save simulation before closing? Could not load enough elements for the simulation. Changing current item. Restoring old values to inputs, prior to simulation. Itr: Updating the values of the circuit logic based on current input values. Setting the computed output values to the waveform results. Setting inputs back to old values. Setting the simulation length. Reducing or keeping the simulation length. Increasing the simulation length. Serializing data into data stream. Do you want to link this beWavedDolphin file to your current WiRedPanda file and save it? Save File as... CSV files (*.csv);;Dolphin files (*.dolphin);;All supported files (*.dolphin *.csv) Dolphin files (*.dolphin);;CSV files (*.csv);;All supported files (*.dolphin *.csv) Saved file successfully. Open File All supported files (*.dolphin *.csv);;Dolphin files (*.dolphin);;CSV files (*.csv) File loaded successfully. Error opening file: , inputs: No cells selected. Saving dolphin file. Saving CSV file. Error saving file: File exists. Could not open file in ReadOnly mode: Dolphin file opened. Loading in editor. Current file set. CSV file opened. Format not supported. Could not open file: Closing file. Invalid file format. Starts with: Invalid number of columns. Update table. Export to Image PNG files (*.png) PDF files (*.pdf) Could not print this circuit to PDF. <p>beWavedDolphin is a waveform simulator for the WiRedPanda software developed by the Federal University of São Paulo. This project was created in order to help students learn about logic circuits.</p><p>Software version: %1</p><p><strong>Creators:</strong></p><ul><li> Prof. Fábio Cappabianco, Ph.D. </li></ul><p> beWavedDolphin is currently maintained by Prof. Fábio Cappabianco, Ph.D. and Vinícius R. Miguel.</p><p> Please file a report at our GitHub page if bugs are found or if you wish for a new functionality to be implemented.</p><p><a href="http://gibis-unifesp.github.io/wiRedPanda/">Visit our website!</a></p> Waveform would be too big! Resetting zoom. Creating class to pause main window simulator while creating waveform. Num iter = Inputs: , outputs: Getting the name of the outputs. If no label is given, element type is used as a name. Updating window name with current: Loading elements. All elements initially in elements vector. Then, inputs and outputs are extracted from it. Getting initial value from inputs and writing them to oldvalues. Used to save current state of inputs and restore it after simulation. Not saving memory states though... Loading initial data into the table. Resuming digital circuit main window after waveform simulation is finished. Getting table dimensions. Pressed 0. Editing value. Running simulation. Pressed Not. Getting first column. Setting the signal according to its column and clock period. Setting the signal according to its columns and clock period. File "%1" does not exist! Getting current value to check if need to refresh next cell Changing next item. Also getting the name of the inputs. If no label is given, the element type is used as a name. Buzzer Buzzer BUZZER ChangeInputSizeCommand Change input size to %1 ChangeOutputSizeCommand Change input size to %1 Clock Clock CLOCK SIGNAL ClockDialog Dialog 2 Clock Frequency 1024 Clock Frequency Selection CodeGenerator IC element not supported: Element type not supported: DFlipFlop D-FlipFlop D-FLIPFLOP DLatch D-Latch D-LATCH DeleteItemsCommand Delete %1 elements Demux Demux DEMULTIPLEXER Display14 14-SEGMENT DISPLAY 14-Segment Display middle left upper left lower left bottom top upper right dot lower right middle right middle upper left middle top middle upper right middle lower right middle bottom middle lower left Display7 7-SEGMENT DISPLAY 7-Segment Display Allocating pixmaps. Converting segments to other colors. middle upper left lower left bottom top upper right dot lower right Remapping inputs. ElementEditor Form Title Input Ports: Value: Audio: Trigger: Output Ports: Frequency: Label: Color: C6 D6 E6 F6 G6 A7 B7 C7 Hz Change skin to ... Default Locked: Priority: Change color to... Change frequency Morph to... Rename Set skin to default Rotate left Rotate right Change trigger Change priority Copy Cut Delete Unknown context menu option. Open File Images (*.png *.gif *.jpg *.jpeg) File name: Input size changed to Output size changed to Pos = from Green Blue Purple Red White Apply. Input locked. <Many sounds> <Many colors> <Many values> <Many labels> <Many priorities> <Many triggers> ElementFactory MULTIPLE TYPES Unknown Unknown type: Not implemented yet: ElementMapping Generate Map. Connect. FlipCommand Flip %1 elements in axis %2 GraphicElement Setting flags of elements. Setting attributes. Including input and output ports. Couldn't load pixmap. Problem loading pixmapPath: Saving element. Type: Finished saving element. Loading element. Type: Updating port positions. Finished loading element. Loading input ports. Corrupted DataStream! Loading output ports. Loading pixmap skin names. Could not load some of the skins. Setting input at , Setting output at New port. Updating port positions that belong to the IC. Align to grid. Moves wires. Checking if the element has the required signals to compute its value. IC IC INTEGRATED CIRCUIT Error copying file: IC -> Inputs. min: , max: , current: , m_inputs: -> Outputs. min: , m_outputs: not found. InputButton PUSH BUTTON Push Button InputGnd GND GROUND InputRotary Rotary Switch ROTARY SWITCH InputSwitch Input Switch INPUT SWITCH InputVcc VCC JKFlipFlop JK-FlipFlop JK-FLIPFLOP Led LED LengthDialog Dialog 2 Simulation Length 2048 Simulation Length Selection Line Line LINE MainWindow Inputs/Outputs Gates Memory Integrated Circuits Add IC files Remove IC Miscellaneous Search: &File &Recent files: &Edit &Help &View &Theme &Language Sim&ulation Examples &Open... Open Ctrl+O &Save Ctrl+S Save &As... Ctrl+Shift+S Cu&t Ctrl+X &Copy Ctrl+C &Paste Ctrl+V &Delete Del &New Ctrl+N Zoom &in Ctrl+= Zoom &out Ctrl+- &Wires Ctrl+1 &Gates Ctrl+2 &About F1 &Exit Ctrl+Q R&otate right Ctrl+R Rotate &left Ctrl+Shift+R About &Qt &Select all Ctrl+A Re&load File Ctrl+F5 E&xport to Arduino Ctrl+Alt+I &Reset Zoom Ctrl+0 Export to &PDF Ctrl+Shift+P &English &Portuguese &Play/Pause Play or Pause simulation. F5 &Rename F2 Cha&nge Trigger F3 Cl&ear selection Esc &Fast Mode &Panda Light Panda &Dark &Waveform Ctrl+W Export to &Image Ctrl+E &Flip horizontally Ctrl+H Flip &vertically F&ullscreen F11 Mute Mutes and unmutes circuit buzzers Ctrl+M Labels under icons About this version Restoring geometry and setting zoom controls. Preparing theme and UI modes. Setting left side menus. Loading recent file list. Checking playing simulation. Adding examples to menu Setting connections All autosave files: Removing from config the autosave file that does not exist. Error! Removing autosave file that is corrupted. Creating new workspace. Adding tab. #tabs: , current tab: New Project Selecting the newly created tab. Finished #tabs: File saved successfully. Checking for autosave file recovery. 'hideV4Warning' message box. Don't show this again. This version is not 100% compatible with previous versions of WiRedPanda. To open old version projects containing ICs (or boxes), skins, and/or beWavedDolphin simulations, their files must be moved to the same directory as the main project file. WiRedPanda %1 will automatically list all other .panda files located in the same directory of the current project as ICs in the editor tab. You have to save new projects before accessing ICs and skins, or running beWavedDolphin simulations. File not saved. Close tab anyway? has been modified. Do you want to save your changes? Loading in editor. File loaded successfully. Open File Panda files (*.panda) Save File as ... <p>WiRedPanda is a software developed by the students of the Federal University of São Paulo. This project was created in order to help students learn about logic circuits.</p><p>Software version: %1</p><p><strong>Creators:</strong></p><ul><li> Davi Morales </li><li> Lucas Lellis </li><li> Rodrigo Torres </li><li> Prof. Fábio Cappabianco, Ph.D. </li></ul><p> WiRedPanda is currently maintained by Prof. Fábio Cappabianco, Ph.D. and Vinícius R. Miguel.</p><p> Please file a report at our GitHub page if bugs are found or if you wish for a new functionality to be implemented.</p><p><a href="http://gibis-unifesp.github.io/wiRedPanda/">Visit our website!</a></p> Exit Are you sure? Adding file to recent files. Show files. Files: Closing tab , #tabs: Checking if needs to save file. Error Deleting tab. Closed tab Stopping simulation. Disconnecting zoom from UI. Removing undo and redo actions from UI menu. Connecting undo and redo functions to UI menu. Setting Panda file info. Connecting current tab to element editor menu in UI. Restarting simulation. Selecting tab: New tab selected. Dolphin fileName: Missing file name. The panda file is empty. Arduino code successfully generated. Generate Arduino Code Arduino file (*.ino) Export to PDF PDF files (*.pdf) Could not print this circuit to PDF. Exported file successfully. Export to Image PNG files (*.png) Error loading WiRedPanda translation! Error loading Qt translation! BD fileName: Unmute Save file first. Panda (*.panda) Info Selected files (and their dependencies) will be copied to current file folder. Drag here to remove. Error removing file: Window title. Building a new tab. Opening file if not empty. Disabling Arduino export. WiRedPanda Version = OR Settings fileName: MorphCommand Morph %1 elements to %2 MoveCommand Move elements Mux Mux MULTIPLEXER Nand Nand NAND Node Node NODE Nor Nor NOR Not Not NOT Or Or OR QNEConnection Empty port map. Port map with elements: ptr1( ), ptr2( Before if 1. Before if 2. Setting start 1. Setting end 1. Setting start 2. Setting end 2. After ifs. Updating pos from ports. QObject One or more items was not found on the scene. One or more elements was not found on the scene. One or more elements were not found on scene. Expected %1, found %2. Reading IC. Error opening file: Finished reading IC. Error! Writing Connection. Stopping. Releasing. Writing element. RecentFiles Setting recent file to: RotateCommand Rotate %1 degrees SRFlipFlop SR-FlipFlop SR-FLIPFLOP Scene &Undo &Redo Updating theme. Finished updating theme. Ctrl + Drag action triggered. Paste at position: , , label: Valid element. Adding the element to the scene. Cleaning the selection. Setting created element as selected. Adjusting the position of the element. Serialization Type: Building connection. Loading connection. Appending connection. Invalid type. Data is possibly corrupted. Finished deserializing. Loading version. Invalid file format. String: Version: Invalid version number. Simulation Starting simulation. Simulation started. GENERATING SIMULATION LAYER. Elements read: Recreating mapping for simulation. Sorting. Finished simulation layer. SplitCommand Wire split Error trying to redo Error trying to undo TFlipFlop T-FlipFlop T-FLIPFLOP Text Text TEXT TrashButton File will be deleted. Are you sure? UpdateCommand Update %1 elements WorkSpace Getting autosave settings info. FileName: All auto save file names before save: Checking if it is an autosave file or a new project, and ask for a fileName. Should open window. Save File Panda files (*.panda) Error opening file: Could not save file: Remove from autosave list recovered file that has been saved. All auto save file names after removing recovered: Remove autosave from settings and delete it. All auto save file names after removing autosave: This file does not exist: File exists. Could not open file: Version: Dolphin name: Autosavepath: Setting current file to random file. All auto save file names before autosaving: All auto save file names after possibly removing autosave: of Setting current file to: All auto save file names after adding autosave: Loading file. Stopped simulation. Newer version file. Warning! Your WiRedPanda is possibly out of date. The file you are opening was saved in a newer version. Please check for updates. Old version file. Warning! This is an old version WiRedPanda project file (version < 4.0). To open it correctly, save all the ICs and skins in the main project directory. Finished loading items. Finished loading file. Defining autosave path. Starting autosave. Checking if autosave file exists and if it contains current project file. If so, remove autosave file from it. Removing current autosave file name. If autosave exists and undo stack is clean, remove it. Undo stack element: Undo stack is clean. Undo is !clean. Must set autosave file. Default value not set yet. Autosave path set to the current file's directory, if there is one. Error opening autosave file: Writing to autosave file. Xnor Xnor XNOR Xor Xor XOR main Circuit file to open. Verbosity level 0 to 5, disabled by default. verbosity level Export circuit to <arduino-file> arduino file Export circuit to waveform text file waveform input text file Export circuit to waveform text file, reading input from terminal wiRedPanda-4.1.12/app/resources/translations/wpanda_pt_BR.qm000066400000000000000000002010061444020206400240220ustar00rootroot00000000000000SxlNyyP%֍R0#%n:&$0Ena35t&8HDL~Uf6.:sBbb־"':g*yo*p*pn*%p*0q++tR+į+t4@ ;c0[<7a?KGVEG BH6 LH6 tH7 H7 J+NJ5>JBLbL`MNSGP&S)+V*V|Zg8 Zs8?[ %X]Za5~i\ZVm;s S{mQ9..PknJb#z'^l vkRl7I) 3ގDQ$3HFGB P `Ϟid>de;hkarpؑtw Ozn&n2nh.Fh^ȸ'^zC?aBK6ik?Pz>:> qyTrdD&o"6R.?^]DIHH>gJ6mKxm[@c0onqtr5tt[usÏjƏA|uUTX2~"fİApİʰZiLZi+ ~[.T?h^;i@^LhFP@DJ4lwZ*UBZb~\ f^ Ei>Ӫs/5t~|,+`^\t%$U~ZVRW1S7sg(ۈ`qU6U)SxPn1'0\I~4G4Kz 4DT 4J;E!`O+4-fO/@i2dp; FYPbK1l,cz=!sN*NW| =T6ZP`?dFkq%Jo:_ԓ,QW@Wm)J$jɖAɖA1ɖAtj!aGEa.̔%-yHQa "P~ hQ'U /28F5;%d|$~Q ]DH5Wo,ݎ/NN(hUL;YΙ>23]H#ܱ=#ܱ> ''-~b90)PE/"T+NT[_*_P',:C;./']C]I>n9 T%^O,l~)NͿe V^Ch bBmgN׊ :R<~b h8A"A$?%JBkM/0x3OM[hh\ rpòeiE+QN.e Lhm^;.+ 2.030Z<*@>@>J(~wNqXWOs[Cr|[Njha{zN R4I]u/η~~(EY ?F B  '0h + 39 :I~ DA J N T^M Tn la t oAI w=cy yþ {2NL n Ɖ  PaX =hZ t^L $ ڮ 0d< e  ^ x M.' M. b> bN /nU{ 0ATW ;Rn =` D( Yn ^U~ a` g%p r +& H~r v! 0 ,o € tQ q5 C ޻)_ -y o 3h   خ/y FF0 - / R U~ f< f=` f= f> JN R n{ Hs 8 t O`+ sG 5>u ޠ9 ` @ ^8u $ ֜ v E) EU Ec 1. BD BJA B BGd BK1 M N28p9 Ot Q`~ RV[= T ]$ a,] b v g2 g3! ms p^] qQ t  6 }֮ @: v] ȃxk ;^ ْ" XN ƀ& $5 0 AZ DY DZ DZ DZJ DZ DZy DZ G(O [^M t4e }aX NL k | & ` v n ^_OF_+o" "#/_, Pc?>AǴE-CFvExn.Umk9#shsYZwwsǰv ~  ! ^myOg 4j9N~n>?deQ9D\Y>^0@۸JHi3$Adicionar%1 portasAdd %1 elementsAddItemsCommandANDANDAndAndAndAnd Erro!Error! Application, entradas:  , inputs: BewavedDolphin, sadas:  , outputs: BewavedDolphin0BewavedDolphin1BewavedDolphin<p>beWavedDolphin um simulador de forma de onda para o software WiRedPanda desenvolvido pela Universidade Federal de So Paulo. Este projeto foi criado para ajudar os alunos a aprender sobre circuitos lgicos.</p><p>Verso do software: %1</p><p><strong>Criadores:</strong></p><ul>< li> Prof. Fbio Cappabianco, Ph.D. </li></ul><p> beWavedDolphin atualmente mantido pelo Prof. Fbio Cappabianco, Ph.D. e Vincius R. Miguel.</p><p> Envie um relatrio em nossa pgina do GitHub se forem encontrados bugs ou se desejar que uma nova funcionalidade seja implementada.</p><p><a href="http://gibis-unifesp.github.io/wiRedPanda/">Visite nosso site!</a></p>q

beWavedDolphin is a waveform simulator for the WiRedPanda software developed by the Federal University of São Paulo. This project was created in order to help students learn about logic circuits.

Software version: %1

Creators:

  • Prof. Fábio Cappabianco, Ph.D.

beWavedDolphin is currently maintained by Prof. Fábio Cappabianco, Ph.D. and Vinícius R. Miguel.

Please file a report at our GitHub page if bugs are found or if you wish for a new functionality to be implemented.

Visit our website!

BewavedDolphin SobreAboutBewavedDolphinSobre o QtAbout QtBewavedDolphinTodos os arquivos suportados (*.dolphin *.csv);;Arquivos Dolphin (*.dolphin);;Arquivos CSV (*.csv)SAll supported files (*.dolphin *.csv);;Dolphin files (*.dolphin);;CSV files (*.csv)BewavedDolphinObtendo tambm o nome das entradas. Se nenhum rtulo for fornecido, o tipo de elemento ser usado como um nome.^Also getting the name of the inputs. If no label is given, the element type is used as a name.BewavedDolphinAlt+CBewavedDolphinAlt+LBewavedDolphinAlt+WBewavedDolphinAlt+XBewavedDolphin&Arquivo CSV aberto.CSV file opened.BewavedDolphinArquivos CSV (*.csv);;Arquivos Dolphin (*.dolphin);;Todos os arquivos suportados (*.dolphin *.csv)SCSV files (*.csv);;Dolphin files (*.dolphin);;All supported files (*.dolphin *.csv)BewavedDolphin.Alterando o item atual.Changing current item.BewavedDolphin2Alterando o prximo item.Changing next item.BewavedDolphin LimparClearBewavedDolphin"Fechando arquivo. Closing file.BewavedDolphinCombinacional CombinationalBewavedDolphin CopiarCopyBewavedDolphinNo foi possvel carregar elementos suficientes para a simulao.2Could not load enough elements for the simulation.BewavedDolphinfNo foi possvel abrir o arquivo no modo ReadOnly: &Could not open file in ReadOnly mode: BewavedDolphin^No foi possvel imprimir este circuito em PDF.$Could not print this circuit to PDF.BewavedDolphinCriando classe para pausar o simulador da janela principal durante a criao da forma de onda.FCreating class to pause main window simulator while creating waveform.BewavedDolphinCtrl+-BewavedDolphinCtrl+=BewavedDolphinCtrl+CBewavedDolphinCtrl+HBewavedDolphin Ctrl+HomeBewavedDolphinCtrl+LBewavedDolphinCtrl+PBewavedDolphinCtrl+SBewavedDolphin Ctrl+Shift+HBewavedDolphin Ctrl+Shift+PBewavedDolphin Ctrl+Shift+RBewavedDolphin Ctrl+Shift+SBewavedDolphinCtrl+VBewavedDolphinCtrl+WBewavedDolphinCtrl+XBewavedDolphin4Configurado arquivo atual.Current file set.BewavedDolphinRecortarCutBewavedDolphinDeseja vincular este arquivo beWavedDolphin ao seu arquivo WiRedPanda atual e salv-lo?YDo you want to link this beWavedDolphin file to your current WiRedPanda file and save it?BewavedDolphin.Arquivo Dolphin aberto.Dolphin file opened.BewavedDolphinArquivos Dolphin (*.dolphin);;Arquivos CSV (*.csv);;Todos os arquivos suportados (*.dolphin *.csv)SDolphin files (*.dolphin);;CSV files (*.csv);;All supported files (*.dolphin *.csv)BewavedDolphin EditarEditBewavedDolphinEditando valor.Editing value.BewavedDolphin.Erro ao abrir arquivo: Error opening file: BewavedDolphin0Erro ao salvar arquivo: Error saving file: BewavedDolphinSairExitBewavedDolphin(Exportar para ImagemExport to ImageBewavedDolphin"Exportar para PDF Export to PDFBewavedDolphin"Exportar para PNG Export to PNGBewavedDolphinArquivoFileBewavedDolphin4O arquivo "%1" no existe!File "%1" does not exist!BewavedDolphin"O arquivo existe. File exists.BewavedDolphin<Arquivo carregado com sucesso.File loaded successfully.BewavedDolphinAjustar tela Fit to screenBewavedDolphin^Formato no suportado. No pode abrir arquivo: +Format not supported. Could not open file: BewavedDolphinObtendo o valor atual para verificar se necessrio atualizar a prxima clula;Getting current value to check if need to refresh next cellBewavedDolphin4Obtendo a primeira coluna.Getting first column.BewavedDolphin~Obtendo o valor inicial das entradas e gravando-os em valores antigos. Usado para salvar o estado atual das entradas e restaur-lo aps a simulao. No salvando estados de memria embora ...Getting initial value from inputs and writing them to oldvalues. Used to save current state of inputs and restore it after simulation. Not saving memory states though...BewavedDolphin>Obtendo as dimenses da tabela.Getting table dimensions.BewavedDolphinObtendo o nome das sadas. Se nenhum rtulo for fornecido, o tipo de elemento ser usado como nome.VGetting the name of the outputs. If no label is given, element type is used as a name.BewavedDolphin AjudaHelpBewavedDolphinDAumentando a durao da simulao.!Increasing the simulation length.BewavedDolphinEntradas: Inputs: BewavedDolphinRFormato de arquivo invlido. Comea com: "Invalid file format. Starts with: BewavedDolphin6Nmero invlido de colunas.Invalid number of columns.BewavedDolphinInverterInvertBewavedDolphinItr: BewavedDolphinCarregarLoadBewavedDolphinCarregando elementos. Todos os elementos inicialmente no vetor de elementos. Ento, entradas e sadas so extradas dele.lLoading elements. All elements initially in elements vector. Then, inputs and outputs are extracted from it.BewavedDolphin*Carregando no editor.Loading in editor.BewavedDolphinHCarregando dados iniciais na tabela.$Loading initial data into the table.BewavedDolphin Janela Principal MainWindowBewavedDolphin JuntarMergeBewavedDolphin6Nenhuma clula selecionada.No cells selected.BewavedDolphin Num iter = BewavedDolphinAbrir arquivo Open FileBewavedDolphin&Arquivos PDF(*.pdf)PDF files (*.pdf)BewavedDolphin(Arquivos PNG (*.png)PNG files (*.png)BewavedDolphin ColarPasteBewavedDolphinPressionado 0. Pressed 0.BewavedDolphin Pressionado Not. Pressed Not.BewavedDolphinRReduzir ou manter a durao da simulao.*Reducing or keeping the simulation length.BewavedDolphinRedefinir Zoom Reset ZoomBewavedDolphin|Restaurando valores antigos para entradas, antes da simulao.4Restoring old values to inputs, prior to simulation.BewavedDolphinRetomar a janela principal do circuito digital aps a concluso da simulao da forma de onda.KResuming digital circuit main window after waveform simulation is finished.BewavedDolphin$Rodando simulao.Running simulation.BewavedDolphin SalvarSaveBewavedDolphinSalvar como... Save As...BewavedDolphin,Salvar arquivo como...Save File as...BewavedDolphinBSalvar a simulao antes de sair?Save simulation before closing?BewavedDolphin4Arquivo salvo com sucesso.Saved file successfully.BewavedDolphin*Salvando arquivo CSV.Saving CSV file.BewavedDolphin2Salvando arquivo dolphin.Saving dolphin file.BewavedDolphinJSerializando dados em fluxo de dados."Serializing data into data stream.BewavedDolphinAlterar Durao Set LengthBewavedDolphin:Definir a frequncia do clockSet clock frequencyBewavedDolphinDefinir como 0Set to 0BewavedDolphinDefinir como 1Set to 1BewavedDolphinfDefinindo as entradas de volta aos valores antigos."Setting inputs back to old values.BewavedDolphinConfigurando os valores de sada calculados para os resultados da forma de onda.;Setting the computed output values to the waveform results.BewavedDolphinConfigurando o sinal de acordo com sua coluna e perodo de clock.  ElementEditor <Vrios rtulos>  ElementEditor(<Vrias prioridades> ElementEditor<Muitos sons>  ElementEditor <Vrios atalhos> ElementEditor <Vrios valores>  ElementEditorA7 ElementEditorAplicar.Apply. ElementEditorAudio: ElementEditorB7 ElementEditorAzulBlue ElementEditorC6 ElementEditorC7 ElementEditor&Alterar cor para...Change color to... ElementEditor Mudar frequnciaChange frequency ElementEditor Mudar prioridadeChange priority ElementEditor4Alterar aparncia para ...Change skin to ... ElementEditorMudar atalhoChange trigger ElementEditorCor:Color: ElementEditor CopiarCopy ElementEditorRecortarCut ElementEditorD6 ElementEditorOriginalDefault ElementEditorRemoverDelete ElementEditorE6 ElementEditorF6F6 ElementEditor"Nome do arquivo:  File name:  ElementEditor0Editor de Portas LgicasForm ElementEditorFrequncia: Frequency: ElementEditorG6 ElementEditor VerdeGreen ElementEditorDImagens (*.png *.gif *.jpg *.jpeg)!Images (*.png *.gif *.jpg *.jpeg) ElementEditorEntradas: Input Ports: ElementEditor$Entrada bloqueada. Input locked. ElementEditorBNmero de entradas alterado para Input size changed to  ElementEditorRtulo:Label: ElementEditorTravado:Locked: ElementEditor"Transformar em... Morph to... ElementEditorAbrir arquivo Open File ElementEditor Portas de Sada: Output Ports: ElementEditor>Nmero de sadas alterado para Output size changed to  ElementEditorPos =  ElementEditorPrioridade: Priority: ElementEditorRoxoPurple ElementEditorVermelhoRed ElementEditorRenomearRename ElementEditor*Rotacionar esquerda Rotate left ElementEditor(Rotacionar direita Rotate right ElementEditor0Colocar aparncia padroSet skin to default ElementEditor TtuloTitle ElementEditorGatilho:Trigger: ElementEditorNOpo de menu de contexto desconhecida.Unknown context menu option. ElementEditor Valor:Value: ElementEditor BrancoWhite ElementEditor<b>LATCH D</b>ElementFactoryVRIOS TIPOSMULTIPLE TYPESElementFactory0Ainda no implementado: Not implemented yet: ElementFactoryDesconhecidoUnknownElementFactory&Tipo desconhecido: Unknown type: ElementFactoryConectar.Connect.ElementMappingGerar Mapa. Generate Map.ElementMapping>Espelhando %1 portas no eixo %2Flip %1 elements in axis %2 FlipCommand, GraphicElement Alinhar grade.Align to grid.GraphicElementVerificando se o elemento possui os sinais necessrios para calcular seu valor.FChecking if the element has the required signals to compute its value.GraphicElement,DataStream corrompido!Corrupted DataStream!GraphicElementXNo foi possvel carregar algumas das skins.!Could not load some of the skins.GraphicElementFNo foi possvel carregar o pixmap.Couldn't load pixmap.GraphicElementFConcludo carregamento do elemento.Finished loading element.GraphicElementBConcludo salvamento do elemento.Finished saving element.GraphicElementHIncluindo portas de entrada e sada.!Including input and output ports.GraphicElement6Carregando elemento. Tipo: Loading element. Type: GraphicElement:Carregando portas de entrada.Loading input ports.GraphicElement6Carregando portas de sada.Loading output ports.GraphicElementLCarregando nome das skins dos pixmaps.Loading pixmap skin names.GraphicElementMove os fios. Moves wires.GraphicElementNova porta. New port.GraphicElementBProblema ao carregar pixmapPath: Problem loading pixmapPath: GraphicElement2Salvando elemento. Tipo: Saving element. Type: GraphicElement.Configurando atributos.Setting attributes.GraphicElementBConfigurando flags dos elementos.Setting flags of elements.GraphicElement0Configurando entrada em Setting input at GraphicElement,Configurando sada em Setting output at GraphicElementfAtualizando posio das portas que pertencem ao CI..Updating port positions that belong to the IC.GraphicElement>Atualizando posio das portas.Updating port positions.GraphicElement& -> Entradas. min:  -> Inputs. min: IC" -> Sadas. min:  -> Outputs. min: IC no encontrado. not found.IC, atual:  , current: IC , m_inputs: IC , m_outputs: IC, max: IC.Erro copiando arquivo: Error copying file: ICCIICICCI IC IC$CIRCUITO INTEGRADOINTEGRATED CIRCUITIC BOTO DE PRESSO PUSH BUTTON InputButton Boto de presso Push Button InputButtonGNDGNDInputGnd TERRAGROUNDInputGnd$COMUTADOR ROTATIVO ROTARY SWITCH InputRotary$Comutador Rotativo Rotary Switch InputRotary,INTERRUPTOR DE ENTRADA INPUT SWITCH InputSwitch,Interruptor de entrada Input Switch InputSwitchVCCVCCInputVccFLIPFLOP-JK JK-FLIPFLOP JKFlipFlopFlipFlop-JK JK-FlipFlop JKFlipFlopLEDLEDLed22 LengthDialog20482048 LengthDialogDilogoDialog LengthDialog(Durao da SimulaoSimulation Length LengthDialogFSeleo do Comprimento da SimulaoSimulation Length Selection LengthDialog LINHALINELine LinhaLineLine OU  OR  MainWindowf foi modificado. Voc quer salvar suas alteraes?6 has been modified. Do you want to save your changes? MainWindow &Sobre&About MainWindow&Copiar&Copy MainWindow&Remover&Delete MainWindow&Editar&Edit MainWindow&Ingls&English MainWindow &Sair&Exit MainWindow&Modo Rpido &Fast Mode MainWindow&Arquivo&File MainWindow2Espelhar &horizontalmente&Flip horizontally MainWindowPortas &Lgicas&Gates MainWindow &Ajuda&Help MainWindow&Idioma &Language MainWindow&Novo projeto&New MainWindow&Abrir...&Open... MainWindowPanda &Claro &Panda Light MainWindow Co&lar&Paste MainWindow&Play/Pause &Play/Pause MainWindow&Portugus &Portuguese MainWindow&&Arquivos recentes:&Recent files: MainWindow&Renomear&Rename MainWindow&Zoom Padro &Reset Zoom MainWindow&Salvar&Save MainWindow Selecionar &tudo &Select all MainWindow &Tema&Theme MainWindow&Exibir&View MainWindow&Forma de Onda &Waveform MainWindow &Fios&Wires MainWindowDcaixa de mensagem 'hideV4Warning'.'hideV4Warning' message box. MainWindow, #guias:  , #tabs:  MainWindow, guia atual: , current tab:  MainWindow`<p>WiRedPanda um software desenvolvido por estudantes da Universidade Federal de So Paulo. Este projeto foi desenvolvido para ajudar os estudantes a aprenderem mais sobre circuitos digitais.</p><p>Verso do software: %1</p><p><strong>Desenvolvedores:</strong></p><ul><li> Davi Morales </li><li> Lucas Lellis </li><li> Rodrigo Torres </li><li> Prof. Fbio Cappabianco, Ph.D. </li></ul><p> WiRedPanda atualmente mantido por Prof. Fbio Cappabianco, Ph.D. e Vincius R. Miguel.</p><p> Por favor, informe em nossa pgina do GitHub sobre eventuais bugs encontrados ou se deseja uma nova funcionalidade.</p><p><a href="http://gibis-unifesp.github.io/wiRedPanda/">Visite nosso site!</a></p>

WiRedPanda is a software developed by the students of the Federal University of São Paulo. This project was created in order to help students learn about logic circuits.

Software version: %1

Creators:

  • Davi Morales
  • Lucas Lellis
  • Rodrigo Torres
  • Prof. Fábio Cappabianco, Ph.D.

WiRedPanda is currently maintained by Prof. Fábio Cappabianco, Ph.D. and Vinícius R. Miguel.

Please file a report at our GitHub page if bugs are found or if you wish for a new functionality to be implemented.

Visit our website!

 MainWindowSobre o &Qt About &Qt MainWindow"Sobre esta versoAbout this version MainWindow,Adicionar arquivos CIs Add IC files MainWindow8Adicionando exemplos ao menuAdding examples to menu MainWindowPAdicionando arquivo a arquivos recentes.Adding file to recent files. MainWindow4Adicionando guia. #guias: Adding tab. #tabs:  MainWindowXTodos os arquivos de salvamento automtico: All autosave files:  MainWindowJCdigo de Arduino gerado com sucesso.$Arduino code successfully generated. MainWindow.Arquivo Arduino (*.ino)Arduino file (*.ino) MainWindowTem certeza? Are you sure? MainWindow(Nome do arquivo BD:  BD fileName:  MainWindow2Construindo uma nova aba.Building a new tab. MainWindow&Alterar atalhoCha&nge Trigger MainWindow|Verificando a recuperao de arquivo de salvamento automtico.$Checking for autosave file recovery. MainWindowPVerificando se precisa salvar o arquivo.Checking if needs to save file. MainWindow.Marcando boto de play.Checking playing simulation. MainWindow&Limpar seleoCl&ear selection MainWindowAba fechada  Closed tab  MainWindowFechando aba  Closing tab  MainWindowConectando a guia atual ao menu do editor de elementos na interface do usurio.4Connecting current tab to element editor menu in UI. MainWindowConectando as funes de desfazer e refazer ao menu da interface do usurio..Connecting undo and redo functions to UI menu. MainWindow^No foi possvel imprimir este circuito no PDF.$Could not print this circuit to PDF. MainWindow@Criando novo espao de trabalho.Creating new workspace. MainWindowCtrl+- MainWindowCtrl+0 MainWindowCtrl+1 MainWindowCtrl+2 MainWindowCtrl+= MainWindowCtrl+A MainWindow Ctrl+Alt+I MainWindowCtrl+C MainWindowCtrl+E MainWindowCtrl+F5 MainWindowCtrl+H MainWindowCtrl+M MainWindowCtrl+N MainWindowCtrl+O MainWindowCtrl+Q MainWindowCtrl+R MainWindowCtrl+S MainWindow Ctrl+Shift+P MainWindow Ctrl+Shift+R MainWindow Ctrl+Shift+S MainWindowCtrl+V MainWindowCtrl+W MainWindowCtrl+X MainWindowRecor&tarCu&t MainWindowDelDel MainWindowExcluindo guia. Deleting tab. MainWindowHDesativando a exportao do Arduino.Disabling Arduino export. MainWindowZDesconectando o zoom da interface do usurio.Disconnecting zoom from UI. MainWindow,No mostrar novamente.Don't show this again. MainWindow4Arraste aqui para remover.Drag here to remove. MainWindow,Exportar para &ArduinoE&xport to Arduino MainWindowErroError MainWindowDErro ao carregar a traduo do Qt!Error loading Qt translation! MainWindowTErro ao carregar a traduo do WiRedPanda!%Error loading WiRedPanda translation! MainWindow0Erro removendo arquivo: Error removing file:  MainWindow Erro!Error! MainWindowEscEsc MainWindowExemplosExamples MainWindowSair do Exit  MainWindow*Exportar para &ImagemExport to &Image MainWindow$Exportar para &PDFExport to &PDF MainWindow(Exportar para ImagemExport to Image MainWindow"Exportar para PDF Export to PDF MainWindow<Arquivo exportado com sucesso.Exported file successfully. MainWindow&Tela cheia F&ullscreen MainWindowF1F1 MainWindowF11F11 MainWindowF2F2 MainWindowF3F3 MainWindowF5F5 MainWindow<Arquivo carregado com sucesso.File loaded successfully. MainWindowTArquivo no foi salvo. Fechar mesmo assim?!File not saved. Close tab anyway? MainWindow4Arquivo salvo com sucesso.File saved successfully. MainWindowArquivos: Files:  MainWindow&#guias concludas: Finished #tabs:  MainWindow.Espelhar &verticalmenteFlip &vertically MainWindow PortasGates MainWindow2Gerar cdigo para ArduinoGenerate Arduino Code MainWindowInfo MainWindowEntradas/SadasInputs/Outputs MainWindow(Circuitos IntegradosIntegrated Circuits MainWindow.Nomes abaixo dos conesLabels under icons MainWindow*Carregando no editor.Loading in editor. MainWindowLCarregando lista de arquivos recentes.Loading recent file list. MainWindowMemriaMemory MainWindowDiversos Miscellaneous MainWindow0Falta o nome do arquivo.Missing file name. MainWindowSilenciarMute MainWindow^Ativa e desativa som das campanhias do cuicuito!Mutes and unmutes circuit buzzers MainWindowProjeto Novo New Project MainWindow`Nova guia selecionada. Nome do arquivo Dolphin: $New tab selected. Dolphin fileName:  MainWindow AbrirOpen MainWindowAbrir arquivo Open File MainWindowNAbrindo o arquivo se no estiver vazio.Opening file if not empty. MainWindow&Arquivos PDF(*.pdf)PDF files (*.pdf) MainWindow(Arquivos PNG (*.png)PNG files (*.png) MainWindowPanda &Escuro Panda &Dark MainWindowPanda (*.panda) MainWindow0Arquivos Panda (*.panda)Panda files (*.panda) MainWindow8Iniciar ou Pausar simulao.Play or Pause simulation. MainWindowjPreparando o tema e os modos de interface do usurio.Preparing theme and UI modes. MainWindow Girar &direita R&otate right MainWindow&Recarregar &Arquivo Re&load File MainWindowRemover CI Remove IC MainWindowRemovendo o arquivo de salvamento automtico que est corrompido.)Removing autosave file that is corrupted. MainWindowRemovendo da configurao o arquivo de salvamento automtico que no existe.;Removing from config the autosave file that does not exist. MainWindowRemovendo aes de desfazer e refazer do menu da interface do usurio.,Removing undo and redo actions from UI menu. MainWindow0Reiniciando a simulao.Restarting simulation. MainWindowxRestaurando a geometria e configurando os controles de zoom.-Restoring geometry and setting zoom controls. MainWindow"Girar &esquerda Rotate &left MainWindowSalvar &Como... Save &As... MainWindow,Salvar Arquivo como...Save File as ... MainWindow2Salve o arquivo primeiro.Save file first. MainWindowBuscar:Search: MainWindowOs arquivos selecionados (e suas dependncias) sero copiados para a pasta de arquivos atual.NSelected files (and their dependencies) will be copied to current file folder. MainWindow(Selecionando a aba: Selecting tab:  MainWindowBSelecionando a guia recm-criada. Selecting the newly created tab. MainWindowZConfigurando as informaes do arquivo Panda.Setting Panda file info. MainWindow*Configurando conexesSetting connections MainWindowHConfigurando menus do lado esquerdo.Setting left side menus. MainWindowDNome do arquivo de configuraes: Settings fileName:  MainWindow"Mostrar arquivos. Show files. MainWindow&Simulao Sim&ulation MainWindow(Parando a simulao.Stopping simulation. MainWindow6O arquivo panda est vazio.The panda file is empty. MainWindowEsta verso no 100% compatvel com as verses anteriores do WiRedPanda. Para abrir projetos de verso antiga contendo ICs (ou caixas), skins e/ou simulaes beWavedDolphin, seus arquivos devem ser movidos para o mesmo diretrio do arquivo principal do projeto. WiRedPanda %1 listar automaticamente todos os outros arquivos .panda localizados no mesmo diretrio do projeto atual como ICs na guia do editor. Voc precisa salvar novos projetos antes de acessar ICs e skins, ou executar simulaes beWavedDolphin.This version is not 100% compatible with previous versions of WiRedPanda. To open old version projects containing ICs (or boxes), skins, and/or beWavedDolphin simulations, their files must be moved to the same directory as the main project file. WiRedPanda %1 will automatically list all other .panda files located in the same directory of the current project as ICs in the editor tab. You have to save new projects before accessing ICs and skins, or running beWavedDolphin simulations. MainWindowAtivar somUnmute MainWindow(Verso WiRedPanda = WiRedPanda Version =  MainWindow"Ttulo da janela. Window title. MainWindowA&mpliarZoom &in MainWindowRed&uzir Zoom &out MainWindow6Transformar %1 portas em %2Morph %1 elements to %2 MorphCommandMover portas Move elements MoveCommandMULTIPLEXADOR MULTIPLEXERMuxMultiplexadorMuxMuxNANDNandNandNandNandNNODENodeNNodeNodeNORNorNorNorNorNOTNotNotNotNotOROrOrOrOr), ptr2( QNEConnectionDepois dos ifs. After ifs. QNEConnectionAntes do if 1. Before if 1. QNEConnectionAntes do if 2. Before if 2. QNEConnection,Mapa das portas vazio.Empty port map. QNEConnectionHMapa das portas com elementos: ptr1(Port map with elements: ptr1( QNEConnectionSetando fim 1.Setting end 1. QNEConnectionSetando fim 2.Setting end 2. QNEConnection"Setando comeo 1.Setting start 1. QNEConnection"Setando comeo 2.Setting start 2. QNEConnection6Atualizando pos das portas.Updating pos from ports. QNEConnection2Erro ao abrir o arquivo: Error opening file: QObject Erro!Error!QObject0Concludo leitura do CI.Finished reading IC.QObjectlUm ou mais elementos no foram encontrados no cenrio.0One or more elements was not found on the scene.QObjectUm ou mais elementos no foram encontrados no cenrio. Esperado %1, encontrado %2.DOne or more elements were not found on scene. Expected %1, found %2.QObjectdUm ou mais itens no foram encontrados no cenrio.-One or more items was not found on the scene.QObjectLendo CI. Reading IC.QObjectLiberando. Releasing.QObjectParando. Stopping.QObject&Escrevendo conexo.Writing Connection.QObject(Escrevendo elemento.Writing element.QObject<Setando arquivo recente para: Setting recent file to:  RecentFilesGirar %1 grausRotate %1 degrees RotateCommandFLIPFLOP-SR SR-FLIPFLOP SRFlipFlopFlipFlop-SR SR-FlipFlop SRFlipFlop na posio:  at position: Scene&Refazer&RedoScene&Desfazer&UndoScene, Scene, rtulo:  , label: SceneLAdicionando o elemento para o cenrio. Adding the element to the scene.Scene@Ajustando a posio do elemento.&Adjusting the position of the element.Scene&Limpando a seleo.Cleaning the selection.Scene<Ao Ctrl + Arrastar acionada.Ctrl + Drag action triggered.Scene<Concludo atualizao do tema.Finished updating theme.Scene ColarPasteSceneRSetando elemento criado como selecionado.$Setting created element as selected.Scene"Atualizando tema.Updating theme.Scene Elemento vlido.Valid element.Scene"Anexando conexo.Appending connection. Serialization Criando conexo.Building connection. Serialization4Desserializao concluda.Finished deserializing. Serialization8Formato de arquivo invlido.Invalid file format. SerializationpTipo invlido. Os dados esto possivelmente corrompidos.)Invalid type. Data is possibly corrupted. Serialization4Nmero de verso invlido.Invalid version number. Serialization&Carregando conexo.Loading connection. Serialization$Carregando verso.Loading version. SerializationString:  Serialization Tipo: Type:  SerializationVerso:  Version:  Serialization"Elementos lidos: Elements read:  Simulation>Camada de simulao finalizada.Finished simulation layer. Simulation8GERANDO CAMADA DA SIMULAO.GENERATING SIMULATION LAYER. Simulation<Recriando mapa para simulao."Recreating mapping for simulation. Simulation&Simulao iniciada.Simulation started. SimulationOrdenando.Sorting. Simulation(Iniciando simulao.Starting simulation. Simulation.Erro ao tentar refazer Error trying to redo  SplitCommand0Erro ao tentar desfazer Error trying to undo  SplitCommandDividir fio Wire split SplitCommandFLIPFLOP-T T-FLIPFLOP TFlipFlopFlipFlop-T T-FlipFlop TFlipFlop TEXTOTEXTText TextoTextTextFArquivo ser deletado. Tem certeza?#File will be deleted. Are you sure? TrashButton*Atualizar %1 porta(s)Update %1 elements UpdateCommand de  of  WorkSpaceTodos os nomes de arquivo de salvamento automtico aps adicionar o salvamento automtico: 0All auto save file names after adding autosave:  WorkSpaceTodos os nomes de arquivo de salvamento automtico aps possivelmente remover o salvamento automtico: ;All auto save file names after possibly removing autosave:  WorkSpaceTodos os nomes de arquivo de salvamento automtico aps a remoo do salvamento automtico: 2All auto save file names after removing autosave:  WorkSpaceTodos os nomes de arquivos de salvamento automtico aps a remoo recuperados: 3All auto save file names after removing recovered:  WorkSpaceTodos os nomes de arquivo de salvamento automtico antes do salvamento automtico: ,All auto save file names before autosaving:  WorkSpaceTodos os nomes de arquivo de salvamento automtico antes de salvar: &All auto save file names before save:  WorkSpaceCaminho de salvamento automtico definido para o diretrio do arquivo atual, se houver.CAutosave path set to the current file's directory, if there is one. WorkSpaceDCaminho de salvamento automtico: Autosavepath:  WorkSpaceHVerificando se o arquivo de salvamento automtico existe e se contm o arquivo de projeto atual. Em caso afirmativo, remova o arquivo de salvamento automtico dele.nChecking if autosave file exists and if it contains current project file. If so, remove autosave file from it. WorkSpaceVerificando se um arquivo de salvamento automtico ou um novo projeto, e pea um nome de arquivo.LChecking if it is an autosave file or a new project, and ask for a fileName. WorkSpace0No pode abrir arquivo: Could not open file:  WorkSpaceFNo foi possvel salvar o arquivo: Could not save file:  WorkSpace@Valor padro ainda no definido.Default value not set yet. WorkSpaceZDefinindo o caminho de salvamento automtico.Defining autosave path. WorkSpaceNome Dolphin: Dolphin name:  WorkSpacedErro ao abrir o arquivo de salvamento automtico: Error opening autosave file:  WorkSpace2Erro ao abrir o arquivo: Error opening file:  WorkSpace"O arquivo existe. File exists. WorkSpace"Nome do arquivo:  FileName:  WorkSpaceDConcludo carregamento do arquivo.Finished loading file. WorkSpaceBConcludo carregamento dos itens.Finished loading items. WorkSpace|Obtendo informaes de configuraes de salvamento automtico.Getting autosave settings info. WorkSpaceSe o salvamento automtico existir e a pilha de desfazer estiver limpa, remova-a.6If autosave exists and undo stack is clean, remove it. WorkSpace&Carregando arquivo. Loading file. WorkSpace8Arquivo de verso mais nova.Newer version file. WorkSpace2Arquivo de verso antiga.Old version file. WorkSpace0Arquivos Panda (*.panda)Panda files (*.panda) WorkSpacexRemova o salvamento automtico das configuraes e exclua-o.,Remove autosave from settings and delete it. WorkSpaceRemova da lista de salvamento automtico o arquivo recuperado que foi salvo.=Remove from autosave list recovered file that has been saved. WorkSpacevRemovendo o nome do arquivo de salvamento automtico atual.$Removing current autosave file name. WorkSpaceSalvar arquivo Save File WorkSpacehConfigurando o arquivo atual para arquivo aleatrio.$Setting current file to random file. WorkSpaceFConfigurando o arquivo atual para: Setting current file to:  WorkSpace$Deve abrir janela.Should open window. WorkSpaceDIniciando o salvamento automtico.Starting autosave. WorkSpace.Simulao interrompida.Stopped simulation. WorkSpace2Este arquivo no existe: This file does not exist:  WorkSpaceDesfazer !limpo. Deve definir o arquivo de salvamento automtico.'Undo is !clean. Must set autosave file. WorkSpace>Elemento da pilha de desfazer: Undo stack element:  WorkSpace>A pilha de desfazer est limpa.Undo stack is clean. WorkSpaceVerso:  Version:  WorkSpacePAviso! Este um arquivo de projeto WiRedPanda da verso antiga (verso < 4.0). Para abri-lo corretamente, salve todos os ICs e skins no diretrio principal do projeto.Warning! This is an old version WiRedPanda project file (version < 4.0). To open it correctly, save all the ICs and skins in the main project directory. WorkSpacePAviso! Seu WiRedPanda possivelmente est desatualizado. O arquivo que voc est abrindo foi salvo em uma verso mais recente. Por favor, verifique se h atualizaes.Warning! Your WiRedPanda is possibly out of date. The file you are opening was saved in a newer version. Please check for updates. WorkSpaceZGravando no arquivo de salvamento automtico.Writing to autosave file. WorkSpaceXNORXnorXnorXnorXnorXORXorXorXorXor>Arquivo de circuito para abrir.Circuit file to open.mainPExportar circuito para <arquivo arduino> Export circuit to maindExportar circuito em arquivo forma de onda textual$Export circuit to waveform text filemainExportar circuito em arquivo forma de onda textual, lendo a entrada do consoleAExport circuit to waveform text file, reading input from terminalmainhNvel de verbosidade 0 a 5, desabilitado por padro.,Verbosity level 0 to 5, disabled by default.mainarquivo arduino arduino filemain(nvel de verbosidadeverbosity levelmainVarquivo de forma de onda textual de entradawaveform input text filemainwiRedPanda-4.1.12/app/resources/translations/wpanda_pt_BR.ts000066400000000000000000003744001444020206400240440ustar00rootroot00000000000000 AddItemsCommand Add %1 elements Adicionar%1 portas And And And AND AND Application Error! Erro! BewavedDolphin MainWindow Janela Principal toolBar Barra de Ferramentas File Arquivo Help Ajuda Edit Editar View Visualizar About Sobre Ctrl+H Load Carregar Ctrl+L Exit Sair Ctrl+W Combinational Combinacional Alt+C Export to PDF Exportar para PDF Ctrl+P Save Salvar Ctrl+S Save As... Salvar como... Ctrl+Shift+S Copy Copiar Ctrl+C Paste Colar Ctrl+V Set to 0 Definir como 0 0 1 Space Espaço Fit to screen Ajustar à tela Show Numbers Mostrar Números Show Waveforms Mostrar Formas de Onda Set to 1 Definir como 1 Set clock frequency Definir a frequência do clock Alt+W Invert Inverter Merge Juntar Split Separar Export to PNG Exportar para PNG Ctrl+Shift+P Set Length Alterar Duração Alt+L About Qt Sobre o Qt Ctrl+Shift+H Zoom In Aumentar Zoom Ctrl+= Zoom Out Reduzir Zoom Ctrl+- Ctrl+Shift+R Reset Zoom Redefinir Zoom Ctrl+Home Clear Limpar Alt+X Cut Recortar Ctrl+X Save simulation before closing? Salvar a simulação antes de sair? Could not load enough elements for the simulation. Não foi possível carregar elementos suficientes para a simulação. Changing current item. Alterando o item atual. Restoring old values to inputs, prior to simulation. Restaurando valores antigos para entradas, antes da simulação. Itr: Updating the values of the circuit logic based on current input values. Atualizando os valores da lógica do circuito com base nos valores de entrada atuais. Setting the computed output values to the waveform results. Configurando os valores de saída calculados para os resultados da forma de onda. Setting inputs back to old values. Definindo as entradas de volta aos valores antigos. Creating class to pause main window simulator while creating waveform. Criando classe para pausar o simulador da janela principal durante a criação da forma de onda. Num iter = Inputs: Entradas: , outputs: , saídas: Getting the name of the outputs. If no label is given, element type is used as a name. Obtendo o nome das saídas. Se nenhum rótulo for fornecido, o tipo de elemento será usado como nome. Updating window name with current: Atualizando o nome da janela com o atual: Loading elements. All elements initially in elements vector. Then, inputs and outputs are extracted from it. Carregando elementos. Todos os elementos inicialmente no vetor de elementos. Então, entradas e saídas são extraídas dele. Getting initial value from inputs and writing them to oldvalues. Used to save current state of inputs and restore it after simulation. Not saving memory states though... Obtendo o valor inicial das entradas e gravando-os em valores antigos. Usado para salvar o estado atual das entradas e restaurá-lo após a simulação. Não salvando estados de memória embora ... Loading initial data into the table. Carregando dados iniciais na tabela. Resuming digital circuit main window after waveform simulation is finished. Retomar a janela principal do circuito digital após a conclusão da simulação da forma de onda. , inputs: , entradas: Getting table dimensions. Obtendo as dimensões da tabela. Pressed 0. Pressionado 0. Editing value. Editando valor. Running simulation. Rodando simulação. Pressed Not. Pressionado Not. Getting first column. Obtendo a primeira coluna. No cells selected. Nenhuma célula selecionada. Setting the signal according to its column and clock period. Configurando o sinal de acordo com sua coluna e período de clock. Setting the signal according to its columns and clock period. Configurando o sinal de acordo com suas colunas e período de clock. Setting the simulation length. Configurando a duração da simulação. Reducing or keeping the simulation length. Reduzir ou manter a duração da simulação. Increasing the simulation length. Aumentando a duração da simulação. Serializing data into data stream. Serializando dados em fluxo de dados. Do you want to link this beWavedDolphin file to your current WiRedPanda file and save it? Deseja vincular este arquivo beWavedDolphin ao seu arquivo WiRedPanda atual e salvá-lo? Save File as... Salvar arquivo como... CSV files (*.csv);;Dolphin files (*.dolphin);;All supported files (*.dolphin *.csv) Arquivos CSV (*.csv);;Arquivos Dolphin (*.dolphin);;Todos os arquivos suportados (*.dolphin *.csv) Dolphin files (*.dolphin);;CSV files (*.csv);;All supported files (*.dolphin *.csv) Arquivos Dolphin (*.dolphin);;Arquivos CSV (*.csv);;Todos os arquivos suportados (*.dolphin *.csv) Waveform would be too big! Resetting zoom. A forma de onda seria muito grande! Redefinindo o zoom. Saved file successfully. Arquivo salvo com sucesso. Open File Abrir arquivo All supported files (*.dolphin *.csv);;Dolphin files (*.dolphin);;CSV files (*.csv) Todos os arquivos suportados (*.dolphin *.csv);;Arquivos Dolphin (*.dolphin);;Arquivos CSV (*.csv) File loaded successfully. Arquivo carregado com sucesso. Error opening file: Erro ao abrir arquivo: Saving dolphin file. Salvando arquivo dolphin. Saving CSV file. Salvando arquivo CSV. Error saving file: Erro ao salvar arquivo: File "%1" does not exist! O arquivo "%1" não existe! Also getting the name of the inputs. If no label is given, the element type is used as a name. Obtendo também o nome das entradas. Se nenhum rótulo for fornecido, o tipo de elemento será usado como um nome. File exists. O arquivo existe. Could not open file in ReadOnly mode: Não foi possível abrir o arquivo no modo ReadOnly: Dolphin file opened. Arquivo Dolphin aberto. Current file set. Configurado arquivo atual. Loading in editor. Carregando no editor. Getting current value to check if need to refresh next cell Obtendo o valor atual para verificar se é necessário atualizar a próxima célula Changing next item. Alterando o próximo item. CSV file opened. Arquivo CSV aberto. Format not supported. Could not open file: Formato não suportado. Não pode abrir arquivo: Closing file. Fechando arquivo. Invalid file format. Starts with: Formato de arquivo inválido. Começa com: Invalid number of columns. Número inválido de colunas. Update table. Atualizar tabela. Export to Image Exportar para Imagem PNG files (*.png) Arquivos PNG (*.png) PDF files (*.pdf) Arquivos PDF(*.pdf) Could not print this circuit to PDF. Não foi possível imprimir este circuito em PDF. <p>beWavedDolphin is a waveform simulator for the WiRedPanda software developed by the Federal University of São Paulo. This project was created in order to help students learn about logic circuits.</p><p>Software version: %1</p><p><strong>Creators:</strong></p><ul><li> Prof. Fábio Cappabianco, Ph.D. </li></ul><p> beWavedDolphin is currently maintained by Prof. Fábio Cappabianco, Ph.D. and Vinícius R. Miguel.</p><p> Please file a report at our GitHub page if bugs are found or if you wish for a new functionality to be implemented.</p><p><a href="http://gibis-unifesp.github.io/wiRedPanda/">Visit our website!</a></p> <p>beWavedDolphin é um simulador de forma de onda para o software WiRedPanda desenvolvido pela Universidade Federal de São Paulo. Este projeto foi criado para ajudar os alunos a aprender sobre circuitos lógicos.</p><p>Versão do software: %1</p><p><strong>Criadores:</strong></p><ul>< li> Prof. Fábio Cappabianco, Ph.D. </li></ul><p> beWavedDolphin é atualmente mantido pelo Prof. Fábio Cappabianco, Ph.D. e Vinícius R. Miguel.</p><p> Envie um relatório em nossa página do GitHub se forem encontrados bugs ou se desejar que uma nova funcionalidade seja implementada.</p><p><a href="http://gibis-unifesp.github.io/wiRedPanda/">Visite nosso site!</a></p> beWavedDolphin Simulator Simulador beWavedDolphin WiRedPanda - beWavedDolphin WiRedPanda - beWavedDolphin Buzzer Buzzer Campainha BUZZER CAMPAINHA ChangeInputSizeCommand Change input size to %1 Mudar número de entradas para %1 ChangeOutputSizeCommand Change input size to %1 Mudar número de entradas para %1 Clock Clock Clock CLOCK SIGNAL SINAL DE CLOCK ClockDialog Dialog Diálogo 2 2 Clock Frequency Frequência do Clock 1024 1024 Clock Frequency Selection Seleção de Frequência do Clock CodeGenerator IC element not supported: Elemento IC não suportado: Element type not supported: Tipo de elemento não suportado: DFlipFlop D-FlipFlop FlipFlop-D D-FLIPFLOP FLIPFLOP-D DLatch D-Latch Latch-D D-LATCH LATCH-D DeleteItemsCommand Delete %1 elements Remover %1 portas(s) Demux Demux Demultiplexador DEMULTIPLEXER DEMULTIPLEXADOR Display14 14-SEGMENT DISPLAY DISPLAY DE 14 SEGMENTOS 14-Segment Display Display de 14 segmentos middle left centro-esquerdo upper left superior esquerdo lower left inferior esquerdo bottom inferior top superior upper right inferior direito dot ponto lower right inferior direito middle right centro-direito middle upper left centro-superior esquerdo middle top centro-superior middle upper right centro-superior direito middle lower right centro-inferior direito middle bottom centro-inferior middle lower left centro-inferior esquerdo Display7 7-SEGMENT DISPLAY DISPLAY DE 7 SEGMENTOS 7-Segment Display Display de 7 segmentos Allocating pixmaps. Alocando pixmaps. Converting segments to other colors. Convertendo segmentos para outras cores. middle centro upper left superior esquerdo lower left inferior esquerdo bottom inferior top superior upper right superior direito dot ponto lower right inferior direito Remapping inputs. Remapeando entradas. ElementEditor Form Editor de Portas Lógicas Frequency: Frequência: Input Ports: Entradas: Label: Rótulo: Blue Azul Green Verde Rotate left Rotacionar à esquerda Rotate right Rotacionar à direita Unknown context menu option. Opção de menu de contexto desconhecida. Purple Roxo Red Vermelho White Branco Apply. Aplicar. Input locked. Entrada bloqueada. Color: Cor: <Many labels> <Vários rótulos> <Many colors> <Várias cores> <Many values> <Vários valores> <Many priorities> <Várias prioridades> <Many triggers> <Vários atalhos> Rename Renomear Delete Remover Morph to... Transformar em... Change frequency Mudar frequência Change trigger Mudar atalho Change priority Mudar prioridade Copy Copiar Cut Recortar File name: Nome do arquivo: Input size changed to Número de entradas alterado para Output size changed to Número de saídas alterado para Pos = from de F6 F6 Open File Abrir arquivo Change skin to ... Alterar aparência para ... Default Original Hz Hz C6 Audio: Title Título Trigger: Gatilho: D6 E6 G6 A7 B7 C7 Locked: Travado: Priority: Prioridade: <Many sounds> <Muitos sons> Change color to... Alterar cor para... Set skin to default Colocar aparência padrão Output Ports: Portas de Saída: Value: Valor: Images (*.png *.gif *.jpg *.jpeg) Imagens (*.png *.gif *.jpg *.jpeg) ElementFactory <b>LATCH D</b> MULTIPLE TYPES VÁRIOS TIPOS Unknown Desconhecido Unknown type: Tipo desconhecido: Not implemented yet: Ainda não implementado: ElementMapping Generate Map. Gerar Mapa. Connect. Conectar. FlipCommand Flip %1 elements in axis %2 Espelhando %1 portas no eixo %2 GraphicElement Setting flags of elements. Configurando flags dos elementos. Setting attributes. Configurando atributos. Including input and output ports. Incluindo portas de entrada e saída. Couldn't load pixmap. Não foi possível carregar o pixmap. Problem loading pixmapPath: Problema ao carregar pixmapPath: Saving element. Type: Salvando elemento. Tipo: Finished saving element. Concluído salvamento do elemento. Loading element. Type: Carregando elemento. Tipo: Updating port positions. Atualizando posição das portas. Finished loading element. Concluído carregamento do elemento. Loading input ports. Carregando portas de entrada. Corrupted DataStream! DataStream corrompido! Loading output ports. Carregando portas de saída. Loading pixmap skin names. Carregando nome das skins dos pixmaps. Could not load some of the skins. Não foi possível carregar algumas das skins. Setting input at Configurando entrada em , Setting output at Configurando saída em New port. Nova porta. Updating port positions that belong to the IC. Atualizando posição das portas que pertencem ao CI. Align to grid. Alinhar à grade. Moves wires. Move os fios. Checking if the element has the required signals to compute its value. Verificando se o elemento possui os sinais necessários para calcular seu valor. IC IC CI INTEGRATED CIRCUIT CIRCUITO INTEGRADO Error copying file: Erro copiando arquivo: IC CI -> Inputs. min: -> Entradas. min: , max: , current: , atual: , m_inputs: -> Outputs. min: -> Saídas. min: , m_outputs: not found. não encontrado. InputButton PUSH BUTTON BOTÃO DE PRESSÃO Push Button Botão de pressão InputGnd GND GND GROUND TERRA InputRotary Rotary Switch Comutador Rotativo ROTARY SWITCH COMUTADOR ROTATIVO InputSwitch Input Switch Interruptor de entrada INPUT SWITCH INTERRUPTOR DE ENTRADA InputVcc VCC VCC JKFlipFlop JK-FlipFlop FlipFlop-JK JK-FLIPFLOP FLIPFLOP-JK Led LED LED LengthDialog Dialog Diálogo 2 2 Simulation Length Duração da Simulação 2048 2048 Simulation Length Selection Seleção do Comprimento da Simulação Line Line Linha LINE LINHA MainWindow Gates Portas Memory Memória Search: Buscar: &File &Arquivo &Edit &Editar &Help &Ajuda &View &Exibir &Open... &Abrir... Open Abrir &Save &Salvar Save &As... Salvar &Como... Cu&t Recor&tar &Copy &Copiar &Paste Co&lar &Delete &Remover &New &Novo projeto Zoom &in A&mpliar Zoom &out Red&uzir &Wires &Fios &Gates Portas &Lógicas &About &Sobre &Exit &Sair Panda files (*.panda) Arquivos Panda (*.panda) File loaded successfully. Arquivo carregado com sucesso. Restoring geometry and setting zoom controls. Restaurando a geometria e configurando os controles de zoom. Preparing theme and UI modes. Preparando o tema e os modos de interface do usuário. Setting left side menus. Configurando menus do lado esquerdo. Loading recent file list. Carregando lista de arquivos recentes. Checking playing simulation. Marcando botão de play. Adding examples to menu Adicionando exemplos ao menu Setting connections Configurando conexões Window title. Título da janela. Building a new tab. Construindo uma nova aba. Opening file if not empty. Abrindo o arquivo se não estiver vazio. Disabling Arduino export. Desativando a exportação do Arduino. All autosave files: Todos os arquivos de salvamento automático: Removing from config the autosave file that does not exist. Removendo da configuração o arquivo de salvamento automático que não existe. Removing autosave file that is corrupted. Removendo o arquivo de salvamento automático que está corrompido. Creating new workspace. Criando novo espaço de trabalho. Adding tab. #tabs: Adicionando guia. #guias: , current tab: , guia atual: Selecting the newly created tab. Selecionando a guia recém-criada. Finished #tabs: #guias concluídas: File saved successfully. Arquivo salvo com sucesso. Checking for autosave file recovery. Verificando a recuperação de arquivo de salvamento automático. 'hideV4Warning' message box. caixa de mensagem 'hideV4Warning'. has been modified. Do you want to save your changes? foi modificado. Você quer salvar suas alterações? Loading in editor. Carregando no editor. Open File Abrir arquivo Save File as ... Salvar Arquivo como... Adding file to recent files. Adicionando arquivo a arquivos recentes. Show files. Mostrar arquivos. Files: Arquivos: Closing tab Fechando aba , #tabs: , #guias: Checking if needs to save file. Verificando se precisa salvar o arquivo. Error Erro Deleting tab. Excluindo guia. Closed tab Aba fechada Stopping simulation. Parando a simulação. Disconnecting zoom from UI. Desconectando o zoom da interface do usuário. Removing undo and redo actions from UI menu. Removendo ações de desfazer e refazer do menu da interface do usuário. Connecting undo and redo functions to UI menu. Conectando as funções de desfazer e refazer ao menu da interface do usuário. Setting Panda file info. Configurando as informações do arquivo Panda. Connecting current tab to element editor menu in UI. Conectando a guia atual ao menu do editor de elementos na interface do usuário. Restarting simulation. Reiniciando a simulação. Selecting tab: Selecionando a aba: New tab selected. Dolphin fileName: Nova guia selecionada. Nome do arquivo Dolphin: Missing file name. Falta o nome do arquivo. The panda file is empty. O arquivo panda está vazio. Arduino code successfully generated. Código de Arduino gerado com sucesso. Generate Arduino Code Gerar código para Arduino Arduino file (*.ino) Arquivo Arduino (*.ino) Export to PDF Exportar para PDF PDF files (*.pdf) Arquivos PDF(*.pdf) Could not print this circuit to PDF. Não foi possível imprimir este circuito no PDF. Error loading WiRedPanda translation! Erro ao carregar a tradução do WiRedPanda! Error loading Qt translation! Erro ao carregar a tradução do Qt! BD fileName: Nome do arquivo BD: Save file first. Salve o arquivo primeiro. Panda (*.panda) Info Selected files (and their dependencies) will be copied to current file folder. Os arquivos selecionados (e suas dependências) serão copiados para a pasta de arquivos atual. Drag here to remove. Arraste aqui para remover. Error removing file: Erro removendo arquivo: F1 F1 Play or Pause simulation. Iniciar ou Pausar simulação. F5 F5 F2 F2 F3 F3 Esc Esc &Recent files: &Arquivos recentes: Add IC files Adicionar arquivos CIs Remove IC Remover CI &Theme &Tema &Language &Idioma Sim&ulation &Simulação Examples Exemplos Ctrl+= R&otate right Girar à &direita Rotate &left Girar à &esquerda About &Qt Sobre o &Qt &Select all Selecionar &tudo Re&load File Recarregar &Arquivo E&xport to Arduino Exportar para &Arduino &Reset Zoom &Zoom Padrão Export to &PDF Exportar para &PDF &English &Inglês &Portuguese &Português &Play/Pause &Play/Pause &Rename &Renomear Cha&nge Trigger &Alterar atalho Cl&ear selection &Limpar seleção &Fast Mode &Modo Rápido &Panda Light Panda &Claro Panda &Dark Panda &Escuro &Waveform &Forma de Onda Export to &Image Exportar para &Imagem &Flip horizontally Espelhar &horizontalmente Flip &vertically Espelhar &verticalmente F&ullscreen &Tela cheia F11 F11 Export to Image Exportar para Imagem PNG files (*.png) Arquivos PNG (*.png) Mute Silenciar Labels under icons Nomes abaixo dos ícones Ctrl+O Ctrl+S Ctrl+Shift+S Ctrl+X Ctrl+C Ctrl+V Del Del Ctrl+N Ctrl+- Ctrl+1 Ctrl+2 Ctrl+Q Ctrl+R Ctrl+Shift+R Ctrl+A Ctrl+F5 Ctrl+Alt+I Ctrl+0 Ctrl+Shift+P Ctrl+W Ctrl+E Ctrl+H Ctrl+M Inputs/Outputs Entradas/Saídas Miscellaneous Diversos Integrated Circuits Circuitos Integrados Mutes and unmutes circuit buzzers Ativa e desativa som das campanhias do cuicuito Unmute Ativar som New Project Projeto Novo WiRedPanda Version = Versão WiRedPanda = OR OU Settings fileName: Nome do arquivo de configurações: Error! Erro! File not saved. Close tab anyway? Arquivo não foi salvo. Fechar mesmo assim? Exit Sair do Exported file successfully. Arquivo exportado com sucesso. Don't show this again. Não mostrar novamente. About this version Sobre esta versão <p>WiRedPanda is a software developed by the students of the Federal University of São Paulo. This project was created in order to help students learn about logic circuits.</p><p>Software version: %1</p><p><strong>Creators:</strong></p><ul><li> Davi Morales </li><li> Lucas Lellis </li><li> Rodrigo Torres </li><li> Prof. Fábio Cappabianco, Ph.D. </li></ul><p> WiRedPanda is currently maintained by Prof. Fábio Cappabianco, Ph.D. and Vinícius R. Miguel.</p><p> Please file a report at our GitHub page if bugs are found or if you wish for a new functionality to be implemented.</p><p><a href="http://gibis-unifesp.github.io/wiRedPanda/">Visit our website!</a></p> <p>WiRedPanda é um software desenvolvido por estudantes da Universidade Federal de São Paulo. Este projeto foi desenvolvido para ajudar os estudantes a aprenderem mais sobre circuitos digitais.</p><p>Versão do software: %1</p><p><strong>Desenvolvedores:</strong></p><ul><li> Davi Morales </li><li> Lucas Lellis </li><li> Rodrigo Torres </li><li> Prof. Fábio Cappabianco, Ph.D. </li></ul><p> WiRedPanda atualmente é mantido por Prof. Fábio Cappabianco, Ph.D. e Vinícius R. Miguel.</p><p> Por favor, informe em nossa página do GitHub sobre eventuais bugs encontrados ou se deseja uma nova funcionalidade.</p><p><a href="http://gibis-unifesp.github.io/wiRedPanda/">Visite nosso site!</a></p> This version is not 100% compatible with previous versions of WiRedPanda. To open old version projects containing ICs (or boxes), skins, and/or beWavedDolphin simulations, their files must be moved to the same directory as the main project file. WiRedPanda %1 will automatically list all other .panda files located in the same directory of the current project as ICs in the editor tab. You have to save new projects before accessing ICs and skins, or running beWavedDolphin simulations. Esta versão não é 100% compatível com as versões anteriores do WiRedPanda. Para abrir projetos de versão antiga contendo ICs (ou caixas), skins e/ou simulações beWavedDolphin, seus arquivos devem ser movidos para o mesmo diretório do arquivo principal do projeto. WiRedPanda %1 listará automaticamente todos os outros arquivos .panda localizados no mesmo diretório do projeto atual como ICs na guia do editor. Você precisa salvar novos projetos antes de acessar ICs e skins, ou executar simulações beWavedDolphin. Are you sure? Tem certeza? MorphCommand Morph %1 elements to %2 Transformar %1 portas em %2 MoveCommand Move elements Mover portas Mux Mux Multiplexador MULTIPLEXER MULTIPLEXADOR Nand Nand Nand NAND Node Node NODE Nor Nor Nor NOR Not Not Not NOT Or Or Or OR QNEConnection Empty port map. Mapa das portas vazio. Port map with elements: ptr1( Mapa das portas com elementos: ptr1( ), ptr2( Before if 1. Antes do if 1. Before if 2. Antes do if 2. Setting start 1. Setando começo 1. Setting end 1. Setando fim 1. Setting start 2. Setando começo 2. Setting end 2. Setando fim 2. After ifs. Depois dos ifs. Updating pos from ports. Atualizando pos das portas. QObject One or more items was not found on the scene. Um ou mais itens não foram encontrados no cenário. One or more elements was not found on the scene. Um ou mais elementos não foram encontrados no cenário. One or more elements were not found on scene. Expected %1, found %2. Um ou mais elementos não foram encontrados no cenário. Esperado %1, encontrado %2. Error! Erro! Reading IC. Lendo CI. Error opening file: Erro ao abrir o arquivo: Finished reading IC. Concluído leitura do CI. Writing Connection. Escrevendo conexão. Stopping. Parando. Releasing. Liberando. Writing element. Escrevendo elemento. RecentFiles Setting recent file to: Setando arquivo recente para: RotateCommand Rotate %1 degrees Girar %1 graus SRFlipFlop SR-FlipFlop FlipFlop-SR SR-FLIPFLOP FLIPFLOP-SR Scene &Undo &Desfazer &Redo &Refazer Updating theme. Atualizando tema. Finished updating theme. Concluído atualização do tema. Ctrl + Drag action triggered. Ação Ctrl + Arrastar acionada. Paste Colar at position: na posição: , , label: , rótulo: Valid element. Elemento válido. Adding the element to the scene. Adicionando o elemento para o cenário. Cleaning the selection. Limpando a seleção. Setting created element as selected. Setando elemento criado como selecionado. Adjusting the position of the element. Ajustando a posição do elemento. Serialization Type: Tipo: Building connection. Criando conexão. Loading connection. Carregando conexão. Appending connection. Anexando conexão. Invalid type. Data is possibly corrupted. Tipo inválido. Os dados estão possivelmente corrompidos. Finished deserializing. Desserialização concluída. Loading version. Carregando versão. Invalid file format. Formato de arquivo inválido. String: Version: Versão: Invalid version number. Número de versão inválido. Simulation Starting simulation. Iniciando simulação. Simulation started. Simulação iniciada. GENERATING SIMULATION LAYER. GERANDO CAMADA DA SIMULAÇÃO. Elements read: Elementos lidos: Recreating mapping for simulation. Recriando mapa para simulação. Sorting. Ordenando. Finished simulation layer. Camada de simulação finalizada. SplitCommand Wire split Dividir fio Error trying to redo Erro ao tentar refazer Error trying to undo Erro ao tentar desfazer TFlipFlop T-FlipFlop FlipFlop-T T-FLIPFLOP FLIPFLOP-T Text Text Texto TEXT TEXTO TrashButton File will be deleted. Are you sure? Arquivo será deletado. Tem certeza? UpdateCommand Update %1 elements Atualizar %1 porta(s) WorkSpace Getting autosave settings info. Obtendo informações de configurações de salvamento automático. FileName: Nome do arquivo: All auto save file names before save: Todos os nomes de arquivo de salvamento automático antes de salvar: Checking if it is an autosave file or a new project, and ask for a fileName. Verificando se é um arquivo de salvamento automático ou um novo projeto, e peça um nome de arquivo. Should open window. Deve abrir janela. Save File Salvar arquivo Panda files (*.panda) Arquivos Panda (*.panda) Error opening file: Erro ao abrir o arquivo: Could not save file: Não foi possível salvar o arquivo: Remove from autosave list recovered file that has been saved. Remova da lista de salvamento automático o arquivo recuperado que foi salvo. All auto save file names after removing recovered: Todos os nomes de arquivos de salvamento automático após a remoção recuperados: Remove autosave from settings and delete it. Remova o salvamento automático das configurações e exclua-o. All auto save file names after removing autosave: Todos os nomes de arquivo de salvamento automático após a remoção do salvamento automático: This file does not exist: Este arquivo não existe: File exists. O arquivo existe. Could not open file: Não pode abrir arquivo: Version: Versão: Dolphin name: Nome Dolphin: Autosavepath: Caminho de salvamento automático: Setting current file to random file. Configurando o arquivo atual para arquivo aleatório. All auto save file names before autosaving: Todos os nomes de arquivo de salvamento automático antes do salvamento automático: All auto save file names after possibly removing autosave: Todos os nomes de arquivo de salvamento automático após possivelmente remover o salvamento automático: of de Setting current file to: Configurando o arquivo atual para: All auto save file names after adding autosave: Todos os nomes de arquivo de salvamento automático após adicionar o salvamento automático: Loading file. Carregando arquivo. Stopped simulation. Simulação interrompida. Newer version file. Arquivo de versão mais nova. Warning! Your WiRedPanda is possibly out of date. The file you are opening was saved in a newer version. Please check for updates. Aviso! Seu WiRedPanda possivelmente está desatualizado. O arquivo que você está abrindo foi salvo em uma versão mais recente. Por favor, verifique se há atualizações. Warning! This is an old version WiRedPanda project file (version < 4.0). To open it correctly, save all the ICs and skins in the main project directory. Aviso! Este é um arquivo de projeto WiRedPanda da versão antiga (versão < 4.0). Para abri-lo corretamente, salve todos os ICs e skins no diretório principal do projeto. Old version file. Arquivo de versão antiga. Finished loading items. Concluído carregamento dos itens. Finished loading file. Concluído carregamento do arquivo. Defining autosave path. Definindo o caminho de salvamento automático. Starting autosave. Iniciando o salvamento automático. Checking if autosave file exists and if it contains current project file. If so, remove autosave file from it. Verificando se o arquivo de salvamento automático existe e se contém o arquivo de projeto atual. Em caso afirmativo, remova o arquivo de salvamento automático dele. Removing current autosave file name. Removendo o nome do arquivo de salvamento automático atual. If autosave exists and undo stack is clean, remove it. Se o salvamento automático existir e a pilha de desfazer estiver limpa, remova-a. Undo stack element: Elemento da pilha de desfazer: Undo stack is clean. A pilha de desfazer está limpa. Undo is !clean. Must set autosave file. Desfazer é !limpo. Deve definir o arquivo de salvamento automático. Default value not set yet. Valor padrão ainda não definido. Autosave path set to the current file's directory, if there is one. Caminho de salvamento automático definido para o diretório do arquivo atual, se houver. Writing to autosave file. Gravando no arquivo de salvamento automático. Error opening autosave file: Erro ao abrir o arquivo de salvamento automático: Xnor Xnor Xnor XNOR Xor Xor Xor XOR main Circuit file to open. Arquivo de circuito para abrir. Verbosity level 0 to 5, disabled by default. Nível de verbosidade 0 a 5, desabilitado por padrão. verbosity level nível de verbosidade Export circuit to <arduino-file> Exportar circuito para <arquivo arduino> arduino file arquivo arduino Export circuit to waveform text file Exportar circuito em arquivo forma de onda textual waveform input text file arquivo de forma de onda textual de entrada Export circuit to waveform text file, reading input from terminal Exportar circuito em arquivo forma de onda textual, lendo a entrada do console wiRedPanda-4.1.12/app/resources/wpanda-mime.xml000066400000000000000000000006621444020206400213300ustar00rootroot00000000000000 WiRedPanda circuit file Arquivo de circuito WiRedPanda wiRedPanda-4.1.12/app/resources/wpanda.desktop000066400000000000000000000004241444020206400212500ustar00rootroot00000000000000[Desktop Entry] Type=Application Name=WiRedPanda GenericName=WiRedPanda Comment=Learn about logic circuits in an easy and friendly way. Icon=wpanda_icon Exec=wpanda Terminal=false Categories=Science; StartupNotify=false MimeType=application/x-wpanda; X-AppImage-Version=4.0.0 wiRedPanda-4.1.12/app/resources/wpanda.ico000066400000000000000000001237761444020206400203710ustar00rootroot00000000000000@@ (Bv00 %B(( hFh   V ޜ h(@ @  MzzM#~|"ZYcɛwU;-""-;Vwɛ`7ٹh+,jں5/0$﹂'ނ ܁ ݁)!?Գ5ނ ݁܀ ܁ ڀ ـ ׀ ۀ:ۼ<Qs߂݁ ݁ہ ڀڀ ـ   ~ ~ !ڀ}NNCނ ܂ ܁ ځ  ؀ ؀ ! !} } } } | ڀJNB5݂ ݁܁ ہ ځ ف ׀    ! }!}!| |!{ { z { 9<$.ށ ނ܂ ہځ ف ! jEt4 ~ }!| }!| | z z y y y y {ހ/"4ނ ݂!܁ ځ ـ ׀ ؀ ! lPu*[IkA} | | {!z y z y yx w vw w{<?݂܂ ܂ ځ ف ׁ   Հ !`K~(((16hOueIx$z y!z x x ww vvutq$l2s3$G8i݃ ܃!ہ ځ!ڂ ؁!ׁ ! !~!TF((((((,JBoRl]Si=(((((((((()1((((((((([j* ÌzU҄$т#Ђ#΁#̀"̀#"~#~"}"|"{"|!cN((((((((((((-es(((((((((( 5a hٓ<у#΂#΂#́#ˀ#"#~"~"|"|"{!|.p}ap2E(((((((9K0dr|(((((((NC!!!!!!!!!Jԉ.Ѓ#΂#͂$ˁ#ʀ##"~#}#|"|"{"q~(((qR###"""""""&̅&ʂ$ɀ$Ȁ#$#~"}#|"|"{!b(((((((((((((((;M(( .&####""####&·)ɂ$ǀ#ƀ$##}#}#{"z"z"3F((((((((((((((((((nU}$$$$$$$####-Έ,Ȃ$ǀ$ŀ#~#~#}#}"{#z"{+((((((((((((((((?P/((.܋2$$$$$$$$$#$3ю7Ɓ$ŀ#$~#~"|"{"{"z!=O(((((((((((((((((((((((o[%%%%%%%%%%%%EؚIŁ$$$}#|#{"z"z!y"(((((((((((((((((((((((nW&&%%%%%%%%%%%a|ߪdÀ$$~#}#|#{"y"x"x!x((,.A"6(((((((((((((((((VK)&&'''&&&&&&&&„zOϣ##}#|"{"z#y"w!|:t)=(((((((((((((NG*'''''''''&&&&&߽LÁ&}#|#|"z"y"x!w |*(((((((((((YM-(''''''((((((',Ϗ9|#{#z#z"x!v!v!1((((((((()}au*)))))((((((((((R|#z"y"y!w"u!u (((((((((/w[)))))))))))((((((ҡ~%~%z"x!v"w!u s-@((((((((TKٔ:****)***********)0"X$w"v!u t x?3F(((((((=?T+++++++++++********o[0ߙ)#sr {0(((((*VNU,,,,,,++++++,,,,,+++.Zf//+$3F(((*4  $144)ax?2ض)wل#ւ"ԁ"Ӂ"Ҁ"""}"}!}!tUi(((((/B#'((JZ::frL }(\ޖAׄ"Ղ"ҁ"Ҁ"!"~"}"}!{!LC(((((21(((,=Pl+IZظՄ$ԃ"҂"с"Ё#""~"}"|!v+,((((((`o/((((1p}A#ܽzӃ#҃#Ђ#ρ#΀#"~"~"|"|!}Z_(((((((';Xh)((((*ASݳ &ߝO҃#т#΁#̀#"~#~"|"{"s2=<((((((((5H"7((((((0C~; ]&4֍3σ#΂#́#ʀ##~"}"|"~.ͳs#8((((/\kXiO_,@+(((2pP!!!!!!<3:ц)΃#̂$ʀ#ɀ##}#}"|"–h2((((((/M]^m&:((ZJ*""""""-9=΄&˂$ʁ$Ȁ##~#|"|"{!DV(((((((((4O_((qR##"""""&==̅&Ɂ$Ȁ#$~#}#|"{"e((((((((((()=(+4%#######'=:͆)ȁ$ƀ$#~#}#{"z$ϽN_(((((((((((gu{(*_p$$$$$$##-94Ί0Ɓ$$~#}"|"{"G$8(((((((((((0DU?Q1(ICІ;%%%%%%%%:3&ԗEĀ$$}#|#z"y!zbp(*-)((((((((((((>>H&&&%%%%%%Y&ޭl$~#|#{#y"x%ҵeslyJ[-((((((((()4{O''''''&&&&ÂԲ$}#|"z"y"{3õap((((((((-6t\(''''((((')߻]ȋ7{#z#y"v!H*((((()PJƇF))))(((((((G[*׫o{#x"w"v!REV(((((#1jX֑<**)*****))))|(Τņ-w"v!u iM^+((((HE|Y4+++++++*****7ڮ4iޙ)Ņ$x!0C(+$2;?dVV,,,,,,,,+,,,,++i31.ߚ*ůZ_e[zc|np}_ӖC0....-----------0Lk00EV[]\ĩġe٢J;2////.../////.......nJ Z2111111111000110000000///0//////Z 'J333333222222222221111111111111I&<544434444443333333322222222223:XK65555555554444444444433334KW g[777677766666666565555555[g Wk9888788888877777776667mW >94&????((P   !7IV\\VI7!%TS$.oѪȚĒĒɚѪo.QִS?0% %0?T׵Qعf9('8g۽~6]ބ$܁ ۀ ـ ؀ ݀#`56ֵX݂ ہ ڀ ؀   ~ ~ ~ ۀZٸ5ЪHބ$ہ ځ ~#u3u1}#}!| { { { }"IҬճH݂!ہ ؀ ׀ z*{WhXH_Xl>w)z!z y x xy{}!ހ#Iط~RU݄$ہ ف ׀  x-`K~,%09:TFyWddGr+w t#f>qRfYJݸסy3"XQ/Yۂ!ق!ׁ!ր!Ԁ!!v/UF*((((((**((:Lߨ{3^.pմ܄%ق!ׁ!Հ!Ԁ!!~!t2LB)((((((((&"BOߴ׈B"#ںo%b؂!ׂ!Ձ!Ӏ!!~!~!q6B>(((.@QIY/B$9)  5C¾pWsm;!f$Tҭݐ8ւ"ԁ"Ӂ"р""}!}!kA68((( 5ET &"7-)sVQ&8׳S{و)Ԃ"ҁ"р""~"}"|!aS(2(((.x*(*1DuK"'"ޞRԃ"҂"Ё"΀""~"|"x'dNu)((((@QN_+((,IZ蹎( S!8ֵّ;҃#ρ#΀""~"}"{#k@=<(((((0x';((()-@K >ܼ7Jʠԉ-ς#́#ˀ#"}"|"€3zapVe/((?Ec'!!!/ѦIVĖЅ&͂#ʀ##~"}"|"ǚj0(((.6Ift}rJZ,(`Mۆ/!!!!'˙V\“̓$˂$Ȁ#~#}#|"|"J[)(((((-%9$8(pR$""""$ɓ\\“ʂ%Ȁ##~#|"{"e(((((((((.38%#####%ʓ\VÕɃ&ƀ$~#}#|"|+ҼYh(((((((((CU7I /bl$$$$$$(͘VJȝɆ+$}#|"z"L-@)*(((((((+*>#70eRч;%%%%%%1ӤI8үʌ7~#|#{"y#śhQaftftJ[!6)((((((+WKăE('&&&&&@ݺ7"ΙO}#{"z"z)ʩy2(((((*JEL*'''''''V!ٮr(y"x!~6о%9((() 0x^zْ9)))(((((/UͧÈ5x!v!=[j-((-ABhp4*******))>۰S%adž%{"T_n3-*5HFevN3++++++++++e%pޱ.ܘ*ʞeglUQ`Uwb}|_ˑG4------,,,,,.ݳo/Y/Besu޹~oȘT֛D;72/............[.SY4111111110111000000/00///1YQQ333333322222222111111111PީR7444444444433333333335Qݩ6[66666665555555555444Z66[888787777776666666\6kJ>9999999998=IjSՀbK?;;;;?KaԁR/pp/%UT%"8JV\\VJ8"( @   "D^p{{p]D"ByyB*״kYOOYk׵*Gϩd?'##(>dҬF|H݂"ۀ ـ ؀ ݁ I{|ΧQ܁ ـ }%{'~!} } ~Rѩ{GΧJ݄$ف ~#mA\`l@u-z#z z z|~ "IѩF+P܄%ځ ׀ }%_[47>Ԃ"ҁ"Ѐ""}"r4TF*(+Td:K( 5jxok݂+>ײ"D繁Ո+т"π""~"{$dL16((()=';().AԿK!)D^e҅'΁#̀"~"}"}4l}@L.A 5)+IZO_&:.)4՟t+ %i]q۠Vσ$ˀ##~"|"ǚiWg,(,HY~IZ"7)kUو7"!#Xp{؜Q̂$Ȁ#~#}"|"IZ)((*40CGX+pR$"""Q{{՜Qȁ$#}#|#b(((((((iw=N<=$$##$R{q՞UƁ%~#|"/ӹbp)((((((+>wO^6>gg%%%$&Yp^ץaÁ'|#{"ETdEV>P%9*((()1*6y\xՊ9&&&%*j]Dܵ~‚+{"z$”\*>((((.iÜ@)''''/ƅD#ͨŋ;y"z*ȧ9K((,08sa1))))((C۰"zդ^|#~0ҷiw!5/3:`Sw_0*******eyCӣږ*ʐ=־uzNPPL{dz|^ҔB2,,,,,,,,צBI9gĉǐԾ|`ÏOΕF92.....----J+W52211111111100000003V*HިU733333333222222225SܨG|ߨY6555555444444443Xݨ||N77777776666666N|HlOA<:99:;?NlG+یpebbdpڋ+CzzB#D^q{{q^D"(0   =nn= aԯʝĒĒʝԯ`wȜe<1++1pbԕd>"I׵w aގ6؁!ր!~#iG89(*,+)&u岇;9` ƙ؂"Ձ!Ҁ!}$eM16)%9QbHX&8"juzrz0ʜ>bԂ"Ҁ""{&^Y(2)4Ght->O{:c=oЬٓ>Ё"̀"~"v4cQ 2*0q~L\,3Yhx)=ծnƙԌ4̀#"}"do|2E*)={M]&:/w>"3̛’ω0#~"|"ʽ>P))';AR~ft4rQ&"/ȓˈ0~#}$Ô_(((((HYjvKH$$$0ʓėɉ3}#.Զx+?"6+((1FVJLna%%%6ϛoΩɎ={#=̵7J(((,6en܏5'''Bٮn>ѡ^z$YP`*#1DDK,*)))f=ǖȈ*ʡj}AIUNguP-+++++қ a@XȘЭǽn]͔F80.----=a xT52221111110003SwܡU444444333333TڡLD7776666655CLxߝnQGDDFPnݝxaa >oo> (( @  ?lۓקקۓl>-۾Ǘ}qq}ǘܾ,WЬU9*%%)7SЬWWxڄ(y,v/{%~ $xW-Ϭwތ2}%fNmQs[^j@w$s+pHʈX>0xЬ,~څ'Հ!z)}Xe$0+41)BRᰇۊ@?ٻSՁ"Ҁ!x,qSm /"7bqhv/?7G|d]ܽ>mĕ؏9Ѐ""s7ZK.!6{u.ARbɒiAȗlٔ{ч-"~"bsr?P1:LSc+?-@B-}ړקrͅ)~#}"ĸ!6,=Oapv(ɰUd* 0PJu]ߔ4((>Ϙl?׸ўUƔPS]FEs^P/+**Y?ĂQǗֽznPښ>1---1ɂ-ϭ}A2222211111?}Ϭ-W~9555444447}WWϭֆaK@==@JaԆϬW-ننߝ-?m۔ڧڧ۔m?p00p(     x$u2ǀGJC 3]lBQdrλʍ^ﺄkߧcЄ(~"xaRV&9IZp}>PScŦFe™ټٟVʁ&}"ͺCU3Zixt5HW+VݼػӝVÀ(ƕZ:M.*kYR2)8Ƃk<Ө`Ñ{[єC2--Lک< UڟX43222212W؟T vܠSC;88:BRڟvU؉pffp׈⬿U Ь&,}(]+f%8uT@B;0GD6Xo{ ~otcI${""$|A*??%CB)/~|`F.D@0 4` K{W+: Dp%@UO^ECVKOxd6EIS+,+?x,U+VfyxGOP߰׺FD]${cCICr], tK,x mȼ~Rf&" cbK9N9s ftuʄE,u;fveڭVw'kMd_ZubG߮`B,a H//< ׋Ƚ% "X;6ӽ;FEVT:ohtnvl5>gYVMaC&2޳vDŽEC[[.zL~i;pX'zـu]v= ? Wc'0a.̾h@{!`O1D’)VU"h)f\NVn܂Վ**Xw L s[[K>_aÄ  RG@ ?f\Vn AK@m$M{ '&p#ϒ:jTgFYQ}p7_ u5c^{U]=+>^^ W7_u Am2%|PQ8}nZ2ٜoQǍU#o$UÃkV˄_X>A6$bٰeaP3~+˴h`^v0]qXt=@KYS T[p3CT9{ej.'? W"2 6tȺA'jM@fxzm ?6HQvZozq޻d,Nn8=m6B5ݍ?{-\K ϊN^p t`Ul< baûB- J6{ݸ2a)y鶠{]__!P5;&C~LSga>E|/lj)Ț9P9ez# e:-TF0v O@ڙs PC,7Mirm%9fh2澽_V2ltIw4{>*;#ԅ HG3#xM`bAU/Uλ1Gq'f2~䥲OO`+dPXƇV,*9H,_ыz|$iP9ij{Φ%XNy- \D"E PTcMی6YEo0S1a'Q[q!g7ճN*2-L߶"Goh+v?,T@yÇ j7}ž\mpa`%dX|r-9"ϝѠ-#vd hSvy77"FSVtޛv2d~XC2k>bp]I;ok)sմ>kL8*;mw-btd߬TAqYbBQUe8q5 \2ߧ{d%LO[ NG;}Ic9[z<$f-xs=cɺR[qrG?;Fx(|Za`oMxt=T{}AvІ7}-+KBht4lb鷞-7x}cLuC~lS'ԖySa^ö7Eᳩ:0U7m8.];hZ=\>t?q 56 X~|BW@fc bc.0a]ĐS읡o݌V7qīk;Z~_ Yᔱ5a^D|bR1+?zV_h@<樓hKUQ]]49>V8O/cܵ7G9dNi 8o9+"3c*LyT`"D]d?z8tf|HҺn%EˤFao1z ۶y_ w᫁© LIcf|jSY%H' 5%jƉ:=ozxƎ͙ގ)%\l͍*{x@IT_7Mg`vEB8kbַiO@$Ո41q1{4%۹eBմoZ۝_k:hl)Ԥ[BՌIOQ>3gKPsmHME'z`\:U,@b#敋EN Ob3k˘Y[FTW_ŲmItm-efQ|ULUP F rl&BTÏ|V4tpq,Uo2 4bљHaIF fE*o6C+,enY;E$>;Ě26=b bϴ' b#^+kClXtFkoUF:6wX "ң7+4/o&{&d6}.z t+ $KnL#S98Cq{rL޿Y` oos[[v'GUZvluŎZ~>6"A"‚ .}u#2tds΃ټurQ. ٿu5VcY7$6BC5mn̊x!kJ f*Y;'&ʤq\,OD+䋘YڳXZ .`PXt+q$bOuĠm5*?rV\3P Uj/a/hp) 2x*&ObNSB$# XAEԞ֏ #include #include class GraphicsView; class Simulation; class WorkSpace : public QWidget { Q_OBJECT public: explicit WorkSpace(QWidget *parent = nullptr); GraphicsView *view(); QFileInfo fileInfo(); QString dolphinFileName(); Scene *scene(); Simulation *simulation(); void load(QDataStream &stream); void load(const QString &fileName); void save(QDataStream &stream); void save(const QString &fileName); void setAutosaveFile(); void setDolphinFileName(const QString &fileName); signals: void fileChanged(const QFileInfo &fileInfo); private: void autosave(); void setAutosaveFileName(); GraphicsView m_view; QFileInfo m_fileInfo; QString m_dolphinFileName; QTemporaryFile m_autosaveFile; Scene m_scene; }; wiRedPanda-4.1.12/config.pri000066400000000000000000000125361444020206400156010ustar00rootroot00000000000000equals(QT_MAJOR_VERSION, 5) : lessThan(QT_MINOR_VERSION, 12) { error("Use Qt 5.12 or newer") } equals(QT_MAJOR_VERSION, 6) : !versionAtLeast(QT_VERSION, 6.2.0) { error("For Qt6 the minimum version is 6.2.0") } !qtHaveModule(multimedia) { error("QtMultimedia is not installed. Please install with Qt Maintenance Tool or with system repository") } VERSION = 4.1.12 DEFINES += APP_VERSION=\\\"$$VERSION\\\" QT += core gui printsupport multimedia widgets svg CONFIG += c++17 warn_on strict_c strict_c++ DEFINES += QT_DEPRECATED_WARNINGS DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 DEFINES += QT_MESSAGELOGCONTEXT linux { MOLD_BIN = $$system(which mold) !isEmpty(MOLD_BIN) { QMAKE_LFLAGS += -fuse-ld=mold } } linux-g++ { contains(CONFIG, coverage) { QMAKE_CXXFLAGS += --coverage QMAKE_LFLAGS += --coverage } } linux-clang { contains(CONFIG, MemorySanitizer) { QMAKE_CXXFLAGS += -fsanitize=memory -fPIE QMAKE_LFLAGS += -fsanitize=memory -fPIE } contains(CONFIG, UBSan) { QMAKE_CXXFLAGS += -fsanitize=undefined,implicit-integer-truncation,implicit-integer-arithmetic-value-change,implicit-conversion,integer,nullability QMAKE_LFLAGS += -fsanitize=undefined,implicit-integer-truncation,implicit-integer-arithmetic-value-change,implicit-conversion,integer,nullability } contains(CONFIG, AddressSanitizer) { QMAKE_CXXFLAGS += -fsanitize=address QMAKE_LFLAGS += -fsanitize=address } contains(CONFIG, ThreadSanitizer) { QMAKE_CXXFLAGS += -fsanitize=thread QMAKE_LFLAGS += -fsanitize=thread } } unix: QMAKE_RPATHDIR += ${ORIGIN}/lib linux { CCACHE_BIN = $$system(which ccache) !isEmpty(CCACHE_BIN) { QMAKE_CC = ccache $$QMAKE_CC QMAKE_CXX = ccache $$QMAKE_CXX } else { PRECOMPILED_HEADER = $$PWD/pch.h CONFIG += precompile_header } } !linux { PRECOMPILED_HEADER = $$PWD/pch.h CONFIG += precompile_header } msvc { QMAKE_CXXFLAGS_WARN_ON ~= s/-W3/-W4 QMAKE_CXXFLAGS += /permissive- /external:I $$[QT_INSTALL_PREFIX] /external:W0 QMAKE_CXXFLAGS_DEBUG += /Ob1 QMAKE_CXXFLAGS_RELEASE += /GL QMAKE_LFLAGS_RELEASE += /LTCG } *-g++ { QMAKE_CXXFLAGS += -Wno-deprecated-copy -Wno-deprecated-enum-enum-conversion # can be removed after migrating to Qt6 } *-clang { QMAKE_CXXFLAGS += -Wno-deprecated-enum-enum-conversion # can be removed after migrating to Qt6 } mac { CONFIG += sdk_no_version_check } MOC_DIR = build_files/moc UI_DIR = build_files/ui UI_HEADERS_DIR = build_files/ui UI_SOURCES_DIR = build_files/ui OBJECTS_DIR = build_files/obj RCC_DIR = build_files/rcc include(app/element/element.pri) include(app/logicelement/logicelement.pri) SOURCES += \ $$PWD/app/application.cpp \ $$PWD/app/arduino/codegenerator.cpp \ $$PWD/app/bewaveddolphin.cpp \ $$PWD/app/clockdialog.cpp \ $$PWD/app/commands.cpp \ $$PWD/app/common.cpp \ $$PWD/app/elementeditor.cpp \ $$PWD/app/elementfactory.cpp \ $$PWD/app/elementlabel.cpp \ $$PWD/app/elementmapping.cpp \ $$PWD/app/enums.cpp \ $$PWD/app/graphicelement.cpp \ $$PWD/app/graphicsview.cpp \ $$PWD/app/ic.cpp \ $$PWD/app/itemwithid.cpp \ $$PWD/app/lengthdialog.cpp \ $$PWD/app/logicelement.cpp \ $$PWD/app/mainwindow.cpp \ $$PWD/app/nodes/qneconnection.cpp \ $$PWD/app/nodes/qneport.cpp \ $$PWD/app/recentfiles.cpp \ $$PWD/app/scene.cpp \ $$PWD/app/serialization.cpp \ $$PWD/app/settings.cpp \ $$PWD/app/simulation.cpp \ $$PWD/app/simulationblocker.cpp \ $$PWD/app/thememanager.cpp \ $$PWD/app/trashbutton.cpp \ $$PWD/app/workspace.cpp HEADERS += \ $$PWD/app/application.h \ $$PWD/app/arduino/codegenerator.h \ $$PWD/app/bewaveddolphin.h \ $$PWD/app/clockdialog.h \ $$PWD/app/commands.h \ $$PWD/app/common.h \ $$PWD/app/elementeditor.h \ $$PWD/app/elementfactory.h \ $$PWD/app/elementlabel.h \ $$PWD/app/elementmapping.h \ $$PWD/app/enums.h \ $$PWD/app/globalproperties.h \ $$PWD/app/graphicelement.h \ $$PWD/app/graphicelementinput.h \ $$PWD/app/graphicsview.h \ $$PWD/app/ic.h \ $$PWD/app/itemwithid.h \ $$PWD/app/lengthdialog.h \ $$PWD/app/logicelement.h \ $$PWD/app/mainwindow.h \ $$PWD/app/nodes/qneconnection.h \ $$PWD/app/nodes/qneport.h \ $$PWD/app/recentfiles.h \ $$PWD/app/scene.h \ $$PWD/app/serialization.h \ $$PWD/app/settings.h \ $$PWD/app/simulation.h \ $$PWD/app/simulationblocker.h \ $$PWD/app/thememanager.h \ $$PWD/app/trashbutton.h \ $$PWD/app/workspace.h INCLUDEPATH += \ $$PWD/app \ $$PWD/app/arduino \ $$PWD/app/element \ $$PWD/app/logicelement \ $$PWD/app/nodes FORMS += \ $$PWD/app/bewaveddolphin.ui \ $$PWD/app/clockdialog.ui \ $$PWD/app/elementeditor.ui \ $$PWD/app/lengthdialog.ui \ $$PWD/app/mainwindow.ui RESOURCES += \ $$PWD/app/resources/basic/basic.qrc \ $$PWD/app/resources/dolphin/dolphin.qrc \ $$PWD/app/resources/input/input.qrc\ $$PWD/app/resources/memory/dark/memory_dark.qrc \ $$PWD/app/resources/memory/light/memory_light.qrc \ $$PWD/app/resources/misc/misc.qrc \ $$PWD/app/resources/output/output.qrc\ $$PWD/app/resources/toolbar/toolbar.qrc \ $$PWD/app/resources/translations/translations.qrc wiRedPanda-4.1.12/examples/000077500000000000000000000000001444020206400154275ustar00rootroot00000000000000wiRedPanda-4.1.12/examples/counter.panda000066400000000000000000000266351444020206400201270ustar00rootroot00000000000000WiRedPanda 4.1@X@p@{@i` label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@X@wpriorityrotationtriggerK flagsname ptr 00skinName $:/input/clock0.svgskinName $:/input/clock1.svgfrequency&@ locked label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@n@ppriorityrotationVtriggerK flagsname 0ptr 0skinName .:/output/led/LedOff.svgskinName 2:/output/led/WhiteLed.svgskinName .:/output/led/LedOff.svgskinName .:/output/led/RedLed.svgskinName .:/output/led/LedOff.svgskinName 2:/output/led/GreenLed.svgskinName .:/output/led/LedOff.svgskinName 0:/output/led/BlueLed.svgskinName .:/output/led/LedOff.svgskinName 4:/output/led/PurpleLed.svgskinName 4:/output/led//BlackLed.pngskinName ::/output/led//NavyBlueLed.pngskinName 4:/output/led//GreenLed.pngskinName 2:/output/led//TealLed.pngskinName 8:/output/led//DarkRedLed.pngskinName 8:/output/led//MagentaLed.pngskinName 6:/output/led//OrangeLed.pngskinName <:/output/led//LightGrayLed.pngskinName .:/output/led/LedOff.svgskinName 2:/output/led/RoyalLed.pngskinName ::/output/led/LimeGreenLed.pngskinName ::/output/led/AquaLightLed.pngskinName .:/output/led/RedLed.pngskinName 6:/output/led/HotPinkLed.pngskinName 4:/output/led/YellowLed.pngskinName 2:/output/led/WhiteLed.png color White label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@v@ppriorityrotationVtriggerK flagsname 0ptr 00skinName .:/output/led/LedOff.svgskinName 2:/output/led/WhiteLed.svgskinName .:/output/led/LedOff.svgskinName .:/output/led/RedLed.svgskinName .:/output/led/LedOff.svgskinName 2:/output/led/GreenLed.svgskinName .:/output/led/LedOff.svgskinName 0:/output/led/BlueLed.svgskinName .:/output/led/LedOff.svgskinName 4:/output/led/PurpleLed.svgskinName 4:/output/led//BlackLed.pngskinName ::/output/led//NavyBlueLed.pngskinName 4:/output/led//GreenLed.pngskinName 2:/output/led//TealLed.pngskinName 8:/output/led//DarkRedLed.pngskinName 8:/output/led//MagentaLed.pngskinName 6:/output/led//OrangeLed.pngskinName <:/output/led//LightGrayLed.pngskinName .:/output/led/LedOff.svgskinName 2:/output/led/RoyalLed.pngskinName ::/output/led/LimeGreenLed.pngskinName ::/output/led/AquaLightLed.pngskinName .:/output/led/RedLed.pngskinName 6:/output/led/HotPinkLed.pngskinName 4:/output/led/YellowLed.pngskinName 2:/output/led/WhiteLed.png color White label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@}@ppriorityrotationVtriggerK flagsname 0ptr 0ѰskinName .:/output/led/LedOff.svgskinName 2:/output/led/WhiteLed.svgskinName .:/output/led/LedOff.svgskinName .:/output/led/RedLed.svgskinName .:/output/led/LedOff.svgskinName 2:/output/led/GreenLed.svgskinName .:/output/led/LedOff.svgskinName 0:/output/led/BlueLed.svgskinName .:/output/led/LedOff.svgskinName 4:/output/led/PurpleLed.svgskinName 4:/output/led//BlackLed.pngskinName ::/output/led//NavyBlueLed.pngskinName 4:/output/led//GreenLed.pngskinName 2:/output/led//TealLed.pngskinName 8:/output/led//DarkRedLed.pngskinName 8:/output/led//MagentaLed.pngskinName 6:/output/led//OrangeLed.pngskinName <:/output/led//LightGrayLed.pngskinName .:/output/led/LedOff.svgskinName 2:/output/led/RoyalLed.pngskinName ::/output/led/LimeGreenLed.pngskinName ::/output/led/AquaLightLed.pngskinName .:/output/led/RedLed.pngskinName 6:/output/led/HotPinkLed.pngskinName 4:/output/led/YellowLed.pngskinName 2:/output/led/WhiteLed.png color White label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@n@wpriorityrotationtriggerK flagsname Jptr 0p flagsname Clockptr 00 flagsname Kptr 00 flagsname ~Presetptr 00 flagsname ~Clearptr 0 flagsname Qptr 0 flagsname ~Qptr 0pskinName ::/memory/dark/JK-flipflop.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@v@wpriorityrotationtriggerK flagsname Jptr 0 flagsname Clockptr 0p flagsname Kptr 0 flagsname ~Presetptr 00 flagsname ~Clearptr 0 flagsname Qptr 00 flagsname ~Qptr 0ڰskinName ::/memory/dark/JK-flipflop.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@}@wpriorityrotationtriggerK flagsname Jptr /( flagsname Clockptr /$P flagsname Kptr /6P flagsname ~Presetptr /̕p flagsname ~Clearptr /Zp flagsname Qptr / flagsname ~Qptr /̐skinName ::/memory/dark/JK-flipflop.svg 00 00 0 0p 00 /$P /̐ 0 0ڰ 00 0p 0ѰwiRedPanda-4.1.12/examples/decoder.panda000066400000000000000000001413441444020206400200500ustar00rootroot00000000000000WiRedPanda 4.1n@@ label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@|@priorityrotationtriggerK flagsname 0ptr@skinName .:/output/led/LedOff.svgskinName 2:/output/led/WhiteLed.svgskinName .:/output/led/LedOff.svgskinName .:/output/led/RedLed.svgskinName .:/output/led/LedOff.svgskinName 2:/output/led/GreenLed.svgskinName .:/output/led/LedOff.svgskinName 0:/output/led/BlueLed.svgskinName .:/output/led/LedOff.svgskinName 4:/output/led/PurpleLed.svgskinName 4:/output/led//BlackLed.pngskinName ::/output/led//NavyBlueLed.pngskinName 4:/output/led//GreenLed.pngskinName 2:/output/led//TealLed.pngskinName 8:/output/led//DarkRedLed.pngskinName 8:/output/led//MagentaLed.pngskinName 6:/output/led//OrangeLed.pngskinName <:/output/led//LightGrayLed.pngskinName .:/output/led/LedOff.svgskinName 2:/output/led/RoyalLed.pngskinName ::/output/led/LimeGreenLed.pngskinName ::/output/led/AquaLightLed.pngskinName .:/output/led/RedLed.pngskinName 6:/output/led/HotPinkLed.pngskinName 4:/output/led/YellowLed.pngskinName 2:/output/led/WhiteLed.png color White label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@|@priorityrotationtriggerK flagsname 0ptr\`skinName .:/output/led/LedOff.svgskinName 2:/output/led/WhiteLed.svgskinName .:/output/led/LedOff.svgskinName .:/output/led/RedLed.svgskinName .:/output/led/LedOff.svgskinName 2:/output/led/GreenLed.svgskinName .:/output/led/LedOff.svgskinName 0:/output/led/BlueLed.svgskinName .:/output/led/LedOff.svgskinName 4:/output/led/PurpleLed.svgskinName 4:/output/led//BlackLed.pngskinName ::/output/led//NavyBlueLed.pngskinName 4:/output/led//GreenLed.pngskinName 2:/output/led//TealLed.pngskinName 8:/output/led//DarkRedLed.pngskinName 8:/output/led//MagentaLed.pngskinName 6:/output/led//OrangeLed.pngskinName <:/output/led//LightGrayLed.pngskinName .:/output/led/LedOff.svgskinName 2:/output/led/RoyalLed.pngskinName ::/output/led/LimeGreenLed.pngskinName ::/output/led/AquaLightLed.pngskinName .:/output/led/RedLed.pngskinName 6:/output/led/HotPinkLed.pngskinName 4:/output/led/YellowLed.pngskinName 2:/output/led/WhiteLed.png color White label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@|@|priorityrotationtriggerK flagsname 0ptr\\`skinName .:/output/led/LedOff.svgskinName 2:/output/led/WhiteLed.svgskinName .:/output/led/LedOff.svgskinName .:/output/led/RedLed.svgskinName .:/output/led/LedOff.svgskinName 2:/output/led/GreenLed.svgskinName .:/output/led/LedOff.svgskinName 0:/output/led/BlueLed.svgskinName .:/output/led/LedOff.svgskinName 4:/output/led/PurpleLed.svgskinName 4:/output/led//BlackLed.pngskinName ::/output/led//NavyBlueLed.pngskinName 4:/output/led//GreenLed.pngskinName 2:/output/led//TealLed.pngskinName 8:/output/led//DarkRedLed.pngskinName 8:/output/led//MagentaLed.pngskinName 6:/output/led//OrangeLed.pngskinName <:/output/led//LightGrayLed.pngskinName .:/output/led/LedOff.svgskinName 2:/output/led/RoyalLed.pngskinName ::/output/led/LimeGreenLed.pngskinName ::/output/led/AquaLightLed.pngskinName .:/output/led/RedLed.pngskinName 6:/output/led/HotPinkLed.pngskinName 4:/output/led/YellowLed.pngskinName 2:/output/led/WhiteLed.png color White label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@|@wpriorityrotationtriggerK flagsname 0ptr\jskinName .:/output/led/LedOff.svgskinName 2:/output/led/WhiteLed.svgskinName .:/output/led/LedOff.svgskinName .:/output/led/RedLed.svgskinName .:/output/led/LedOff.svgskinName 2:/output/led/GreenLed.svgskinName .:/output/led/LedOff.svgskinName 0:/output/led/BlueLed.svgskinName .:/output/led/LedOff.svgskinName 4:/output/led/PurpleLed.svgskinName 4:/output/led//BlackLed.pngskinName ::/output/led//NavyBlueLed.pngskinName 4:/output/led//GreenLed.pngskinName 2:/output/led//TealLed.pngskinName 8:/output/led//DarkRedLed.pngskinName 8:/output/led//MagentaLed.pngskinName 6:/output/led//OrangeLed.pngskinName <:/output/led//LightGrayLed.pngskinName .:/output/led/LedOff.svgskinName 2:/output/led/RoyalLed.pngskinName ::/output/led/LimeGreenLed.pngskinName ::/output/led/AquaLightLed.pngskinName .:/output/led/RedLed.pngskinName 6:/output/led/HotPinkLed.pngskinName 4:/output/led/YellowLed.pngskinName 2:/output/led/WhiteLed.png color White label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@|@rpriorityrotationtriggerK flagsname 0ptr\`skinName .:/output/led/LedOff.svgskinName 2:/output/led/WhiteLed.svgskinName .:/output/led/LedOff.svgskinName .:/output/led/RedLed.svgskinName .:/output/led/LedOff.svgskinName 2:/output/led/GreenLed.svgskinName .:/output/led/LedOff.svgskinName 0:/output/led/BlueLed.svgskinName .:/output/led/LedOff.svgskinName 4:/output/led/PurpleLed.svgskinName 4:/output/led//BlackLed.pngskinName ::/output/led//NavyBlueLed.pngskinName 4:/output/led//GreenLed.pngskinName 2:/output/led//TealLed.pngskinName 8:/output/led//DarkRedLed.pngskinName 8:/output/led//MagentaLed.pngskinName 6:/output/led//OrangeLed.pngskinName <:/output/led//LightGrayLed.pngskinName .:/output/led/LedOff.svgskinName 2:/output/led/RoyalLed.pngskinName ::/output/led/LimeGreenLed.pngskinName ::/output/led/AquaLightLed.pngskinName .:/output/led/RedLed.pngskinName 6:/output/led/HotPinkLed.pngskinName 4:/output/led/YellowLed.pngskinName 2:/output/led/WhiteLed.png color White label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@|@jpriorityrotationtriggerK flagsname 0ptr\f skinName .:/output/led/LedOff.svgskinName 2:/output/led/WhiteLed.svgskinName .:/output/led/LedOff.svgskinName .:/output/led/RedLed.svgskinName .:/output/led/LedOff.svgskinName 2:/output/led/GreenLed.svgskinName .:/output/led/LedOff.svgskinName 0:/output/led/BlueLed.svgskinName .:/output/led/LedOff.svgskinName 4:/output/led/PurpleLed.svgskinName 4:/output/led//BlackLed.pngskinName ::/output/led//NavyBlueLed.pngskinName 4:/output/led//GreenLed.pngskinName 2:/output/led//TealLed.pngskinName 8:/output/led//DarkRedLed.pngskinName 8:/output/led//MagentaLed.pngskinName 6:/output/led//OrangeLed.pngskinName <:/output/led//LightGrayLed.pngskinName .:/output/led/LedOff.svgskinName 2:/output/led/RoyalLed.pngskinName ::/output/led/LimeGreenLed.pngskinName ::/output/led/AquaLightLed.pngskinName .:/output/led/RedLed.pngskinName 6:/output/led/HotPinkLed.pngskinName 4:/output/led/YellowLed.pngskinName 2:/output/led/WhiteLed.png color White label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@|@`priorityrotationtriggerK flagsname 0ptr\l skinName .:/output/led/LedOff.svgskinName 2:/output/led/WhiteLed.svgskinName .:/output/led/LedOff.svgskinName .:/output/led/RedLed.svgskinName .:/output/led/LedOff.svgskinName 2:/output/led/GreenLed.svgskinName .:/output/led/LedOff.svgskinName 0:/output/led/BlueLed.svgskinName .:/output/led/LedOff.svgskinName 4:/output/led/PurpleLed.svgskinName 4:/output/led//BlackLed.pngskinName ::/output/led//NavyBlueLed.pngskinName 4:/output/led//GreenLed.pngskinName 2:/output/led//TealLed.pngskinName 8:/output/led//DarkRedLed.pngskinName 8:/output/led//MagentaLed.pngskinName 6:/output/led//OrangeLed.pngskinName <:/output/led//LightGrayLed.pngskinName .:/output/led/LedOff.svgskinName 2:/output/led/RoyalLed.pngskinName ::/output/led/LimeGreenLed.pngskinName ::/output/led/AquaLightLed.pngskinName .:/output/led/RedLed.pngskinName 6:/output/led/HotPinkLed.pngskinName 4:/output/led/YellowLed.pngskinName 2:/output/led/WhiteLed.png color White label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@|@HpriorityrotationtriggerK flagsname 0ptr\skinName .:/output/led/LedOff.svgskinName 2:/output/led/WhiteLed.svgskinName .:/output/led/LedOff.svgskinName .:/output/led/RedLed.svgskinName .:/output/led/LedOff.svgskinName 2:/output/led/GreenLed.svgskinName .:/output/led/LedOff.svgskinName 0:/output/led/BlueLed.svgskinName .:/output/led/LedOff.svgskinName 4:/output/led/PurpleLed.svgskinName 4:/output/led//BlackLed.pngskinName ::/output/led//NavyBlueLed.pngskinName 4:/output/led//GreenLed.pngskinName 2:/output/led//TealLed.pngskinName 8:/output/led//DarkRedLed.pngskinName 8:/output/led//MagentaLed.pngskinName 6:/output/led//OrangeLed.pngskinName <:/output/led//LightGrayLed.pngskinName .:/output/led/LedOff.svgskinName 2:/output/led/RoyalLed.pngskinName ::/output/led/LimeGreenLed.pngskinName ::/output/led/AquaLightLed.pngskinName .:/output/led/RedLed.pngskinName 6:/output/led/HotPinkLed.pngskinName 4:/output/led/YellowLed.pngskinName 2:/output/led/WhiteLed.png color White label maxInputSizemaxOutputSizeminInputSizeminOutputSizepostjpriorityrotation@VtriggerK flagsname ptr\` flagsname ptr\skinName :/basic/not.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposp`priorityrotation@VtriggerK flagsname ptreA flagsname ptre=skinName :/basic/not.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposhHpriorityrotation@VtriggerK flagsname ptreL flagsname ptreDskinName :/basic/not.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposvlpriorityrotationtriggerK flagsname ptreO flagsname ptreRskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposrbpriorityrotationtriggerK flagsname ptre^ flagsname ptreW@skinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposlPpriorityrotationtriggerK flagsname ptre1 flagsname ptre9@skinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposu@priorityrotation@VtriggerK flagsname ptre`@ flagsname ptreeskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposs@priorityrotation@VtriggerK flagsname ptrap flagsname ptrar@skinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposq@priorityrotation@VtriggerK flagsname ptra flagsname ptraskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposn@priorityrotation@VtriggerK flagsname ptrat flagsname ptra@skinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposj@priorityrotation@VtriggerK flagsname ptra flagsname ptra@skinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposf@priorityrotation@VtriggerK flagsname ptrau@ flagsname ptrai@skinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposs@Ppriorityrotation@VtriggerK flagsname ptra flagsname ptraskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposn@Hpriorityrotation@VtriggerK flagsname ptra flagsname ptra@skinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposf@@priorityrotation@VtriggerK flagsname ptra flagsname ptraskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposT@HpriorityrotationtriggerK flagsname ptra flagsname ptra flagsname ptra flagsname ptra@skinName :/basic/and.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposT@`priorityrotationtriggerK flagsname ptra flagsname ptra flagsname ptra flagsname ptra׀skinName :/basic/and.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposT@jpriorityrotationtriggerK flagsname ptra flagsname ptra@ flagsname ptra flagsname ptraskinName :/basic/and.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposT@rpriorityrotationtriggerK flagsname ptra flagsname ptra flagsname ptrP flagsname ptraskinName :/basic/and.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposT@wpriorityrotationtriggerK flagsname ptrP flagsname ptr flagsname ptr flagsname ptrskinName :/basic/and.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposT@|priorityrotationtriggerK flagsname ptrP flagsname ptrP flagsname ptr flagsname ptrskinName :/basic/and.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposT@priorityrotationtriggerK flagsname ptrP flagsname ptrP flagsname ptr flagsname ptrskinName :/basic/and.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposT@priorityrotationtriggerK flagsname ptr flagsname ptr flagsname ptr flagsname ptrPskinName :/basic/and.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposj@bpriorityrotation@VtriggerK flagsname ptr flagsname ptrʐskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposn@`priorityrotation@VtriggerK flagsname ptr flagsname ptrskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposs@\priorityrotation@VtriggerK flagsname ptr͐ flagsname ptrskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos}dpriorityrotationtriggerK flagsname ptrskinName *:/input/switchOff.svgskinName (:/input/switchOn.svgisOn locked label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos}TpriorityrotationtriggerK flagsname ptrPskinName *:/input/switchOff.svgskinName (:/input/switchOn.svgisOn locked label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos}npriorityrotationtriggerK flagsname ptrskinName *:/input/switchOff.svgskinName (:/input/switchOn.svgisOn locked label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposf@lpriorityrotation@VtriggerK flagsname ptr flagsname ptrPskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposq@jpriorityrotation@VtriggerK flagsname ptr flagsname ptrnӰskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposs@hpriorityrotation@VtriggerK flagsname ptrn flagsname ptrnpskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposj@spriorityrotation@VtriggerK flagsname ptrnp flagsname ptrn0skinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposq@rpriorityrotation@VtriggerK flagsname ptrn flagsname ptrnskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposs@qpriorityrotation@VtriggerK flagsname ptrn flagsname ptrnskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposu@vpriorityrotation@VtriggerK flagsname ptro flagsname ptroskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposn@wpriorityrotation@VtriggerK flagsname ptro flagsname ptro 0skinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposf@xpriorityrotation@VtriggerK flagsname ptrnp flagsname ptro skinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposj@}priorityrotation@VtriggerK flagsname ptrn flagsname ptropskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposn@|priorityrotation@VtriggerK flagsname ptro flagsname ptropskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposu@{priorityrotation@VtriggerK flagsname ptro1p flagsname ptro>skinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposf@priorityrotation@VtriggerK flagsname ptro&0 flagsname ptro;0skinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposq@priorityrotation@VtriggerK flagsname ptro4p flagsname ptro.pskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposu@priorityrotation@VtriggerK flagsname ptro%p flagsname ptrv70skinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposj@priorityrotation@VtriggerK flagsname ptrvKp flagsname ptrv?pskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposq@priorityrotation@VtriggerK flagsname ptrvJ flagsname ptrv8skinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposu@priorityrotation@VtriggerK flagsname ptrv5 flagsname ptrv40skinName :/basic/node.svgeOeR\`e^eW@eAPe1e9@eL\aeRoeW@e=aeDae9@a͐a@aaaa@aaaa@\a׀\l a\f a\`\j\\`\`P@ʐnpʐaonaaPnpPanӰnnӰa@npnnpan0nn0Pno4pnanapnaoo1po 0oo o&0o o 0oPopvKpopato>o%po>PopPopo;0au@o;0o.pvJo.pPv70v5v70Pv?pav?pv8av8v40e`@v40wiRedPanda-4.1.12/examples/dflipflop-masterslave.panda000066400000000000000000000232051444020206400227410ustar00rootroot00000000000000WiRedPanda 4.1@X@r@@u0 label DLATCHmaxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@upriorityrotationtriggerK flagsname Dptr2` flagsname CLKptr? flagsname Q 0ptrB  flagsname Q 0ptr"fileName dlatch.panda label CLKmaxInputSizemaxOutputSizeminInputSizeminOutputSizepos@X@priorityrotationtriggerK flagsname ptrskinName $:/input/clock0.svgskinName $:/input/clock1.svgfrequency&? locked label DLATCHmaxInputSizemaxOutputSizeminInputSizeminOutputSizepos@y@upriorityrotationtriggerK flagsname Dptr̠ flagsname CLKptrҠ flagsname Q 0ptr flagsname Q 0ptr`fileName dlatch.panda label QmaxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@wpriorityrotation@VtriggerK flagsname 0ptrskinName .:/output/led/LedOff.svgskinName 2:/output/led/WhiteLed.svgskinName .:/output/led/LedOff.svgskinName .:/output/led/RedLed.svgskinName .:/output/led/LedOff.svgskinName 2:/output/led/GreenLed.svgskinName .:/output/led/LedOff.svgskinName 0:/output/led/BlueLed.svgskinName .:/output/led/LedOff.svgskinName 4:/output/led/PurpleLed.svgskinName 4:/output/led//BlackLed.pngskinName ::/output/led//NavyBlueLed.pngskinName 4:/output/led//GreenLed.pngskinName 2:/output/led//TealLed.pngskinName 8:/output/led//DarkRedLed.pngskinName 8:/output/led//MagentaLed.pngskinName 6:/output/led//OrangeLed.pngskinName <:/output/led//LightGrayLed.pngskinName .:/output/led/LedOff.svgskinName 2:/output/led/RoyalLed.pngskinName ::/output/led/LimeGreenLed.pngskinName ::/output/led/AquaLightLed.pngskinName .:/output/led/RedLed.pngskinName 6:/output/led/HotPinkLed.pngskinName 4:/output/led/YellowLed.pngskinName 2:/output/led/WhiteLed.png color White label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@y@priorityrotationtriggerK flagsname ptr  flagsname ptr" skinName :/basic/not.svg label QmaxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@rpriorityrotationVtriggerK flagsname 0ptrskinName .:/output/led/LedOff.svgskinName 2:/output/led/WhiteLed.svgskinName .:/output/led/LedOff.svgskinName .:/output/led/RedLed.svgskinName .:/output/led/LedOff.svgskinName 2:/output/led/GreenLed.svgskinName .:/output/led/LedOff.svgskinName 0:/output/led/BlueLed.svgskinName .:/output/led/LedOff.svgskinName 4:/output/led/PurpleLed.svgskinName 4:/output/led//BlackLed.pngskinName ::/output/led//NavyBlueLed.pngskinName 4:/output/led//GreenLed.pngskinName 2:/output/led//TealLed.pngskinName 8:/output/led//DarkRedLed.pngskinName 8:/output/led//MagentaLed.pngskinName 6:/output/led//OrangeLed.pngskinName <:/output/led//LightGrayLed.pngskinName .:/output/led/LedOff.svgskinName 2:/output/led/RoyalLed.pngskinName ::/output/led/LimeGreenLed.pngskinName ::/output/led/AquaLightLed.pngskinName .:/output/led/RedLed.pngskinName 6:/output/led/HotPinkLed.pngskinName 4:/output/led/YellowLed.pngskinName 2:/output/led/WhiteLed.png color White label DmaxInputSizemaxOutputSizeminInputSizeminOutputSizepos@X@tpriorityrotationtriggerK flagsname ptr= skinName *:/input/buttonOff.svgskinName (:/input/buttonOn.svg locked label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@priorityrotation@ptriggerK flagsname ptrb flagsname ptrUskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@d@vpriorityrotationtriggerK flagsname ptrA flagsname ptr6`skinName :/basic/node.svgB "" b2` A= ̠U?6`ҠwiRedPanda-4.1.12/examples/dflipflop.panda000066400000000000000000000466111444020206400204230ustar00rootroot00000000000000WiRedPanda 4.1@r@f@@ label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@upriorityrotation@ptriggerK flagsname ptrNG flagsname ptrNGskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@priorityrotation@ptriggerK flagsname ptrNGP flagsname ptrNGskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@{@upriorityrotation@ptriggerK flagsname ptrNG flagsname ptrNN+pskinName :/basic/node.svg label DmaxInputSizemaxOutputSizeminInputSizeminOutputSizepos@r@rpriorityrotationtriggerK flagsname ptrNN0skinName *:/input/buttonOff.svgskinName (:/input/buttonOn.svg locked label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@~@rpriorityrotationtriggerK flagsname ptrNN flagsname ptrNN5 flagsname ptrNN pskinName :/basic/nand.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@@spriorityrotationtriggerK flagsname 0ptrNNpskinName .:/output/led/LedOff.svgskinName 2:/output/led/WhiteLed.svgskinName .:/output/led/LedOff.svgskinName .:/output/led/RedLed.svgskinName .:/output/led/LedOff.svgskinName 2:/output/led/GreenLed.svgskinName .:/output/led/LedOff.svgskinName 0:/output/led/BlueLed.svgskinName .:/output/led/LedOff.svgskinName 4:/output/led/PurpleLed.svgskinName 4:/output/led//BlackLed.pngskinName ::/output/led//NavyBlueLed.pngskinName 4:/output/led//GreenLed.pngskinName 2:/output/led//TealLed.pngskinName 8:/output/led//DarkRedLed.pngskinName 8:/output/led//MagentaLed.pngskinName 6:/output/led//OrangeLed.pngskinName <:/output/led//LightGrayLed.pngskinName .:/output/led/LedOff.svgskinName 2:/output/led/RoyalLed.pngskinName ::/output/led/LimeGreenLed.pngskinName ::/output/led/AquaLightLed.pngskinName .:/output/led/RedLed.pngskinName 6:/output/led/HotPinkLed.pngskinName 4:/output/led/YellowLed.pngskinName 2:/output/led/WhiteLed.png color White label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@spriorityrotationtriggerK flagsname ptrNNS0 flagsname ptrNNY flagsname ptrNN[p flagsname ptrNNGskinName :/basic/nand.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@priorityrotationtriggerK flagsname ptrNN` flagsname ptrNNfskinName :/basic/not.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@xpriorityrotationtriggerK flagsname ptrNN^p flagsname ptrNNCp flagsname ptrNNUp flagsname ptrNNEskinName :/basic/nand.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@rpriorityrotationtriggerK flagsname ptrNNe flagsname ptrNNRp flagsname ptrNNq0 flagsname ptrNNskinName :/basic/nand.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@spriorityrotationtriggerK flagsname ptrNNz flagsname ptrNN flagsname ptrNNtskinName :/basic/nand.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@xpriorityrotationtriggerK flagsname ptrNN0 flagsname ptrNNz0 flagsname ptrNNr flagsname ptrNNlskinName :/basic/nand.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@@xpriorityrotationtriggerK flagsname 0ptrN0skinName .:/output/led/LedOff.svgskinName 2:/output/led/WhiteLed.svgskinName .:/output/led/LedOff.svgskinName .:/output/led/RedLed.svgskinName .:/output/led/LedOff.svgskinName 2:/output/led/GreenLed.svgskinName .:/output/led/LedOff.svgskinName 0:/output/led/BlueLed.svgskinName .:/output/led/LedOff.svgskinName 4:/output/led/PurpleLed.svgskinName 4:/output/led//BlackLed.pngskinName ::/output/led//NavyBlueLed.pngskinName 4:/output/led//GreenLed.pngskinName 2:/output/led//TealLed.pngskinName 8:/output/led//DarkRedLed.pngskinName 8:/output/led//MagentaLed.pngskinName 6:/output/led//OrangeLed.pngskinName <:/output/led//LightGrayLed.pngskinName .:/output/led/LedOff.svgskinName 2:/output/led/RoyalLed.pngskinName ::/output/led/LimeGreenLed.pngskinName ::/output/led/AquaLightLed.pngskinName .:/output/led/RedLed.pngskinName 6:/output/led/HotPinkLed.pngskinName 4:/output/led/YellowLed.pngskinName 2:/output/led/WhiteLed.png color White label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@v@ypriorityrotationtriggerK flagsname ptrN flagsname ptrNskinName :/basic/not.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@xpriorityrotationtriggerK flagsname ptrN flagsname ptrNp flagsname ptrNskinName :/basic/nand.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@~@xpriorityrotationtriggerK flagsname ptrN0 flagsname ptrN flagsname ptrN0skinName :/basic/nand.svg label -PresetmaxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@fpriorityrotationtriggerK flagsname ptrNlskinName *:/input/switchOff.svgskinName (:/input/switchOn.svgisOn locked label -ClearmaxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@priorityrotationtriggerK flagsname ptrNlpskinName *:/input/switchOff.svgskinName (:/input/switchOn.svgisOn locked label CLKmaxInputSizemaxOutputSizeminInputSizeminOutputSizepos@r@priorityrotationtriggerK flagsname ptrN[@skinName $:/input/clock0.svgskinName $:/input/clock1.svgfrequency&? locked label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@x@priorityrotationtriggerK flagsname ptrNG flagsname ptrNl0skinName :/basic/not.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@{@zpriorityrotation@ptriggerK flagsname ptrNĄ flagsname ptrNĄaskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@ypriorityrotation@ptriggerK flagsname ptrNĄv flagsname ptrNĄsskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@{priorityrotation@ptriggerK flagsname ptrNĄ` flagsname ptrNĄdskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@priorityrotationtriggerK flagsname ptrNĄm flagsname ptrNĄo`skinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@hpriorityrotationtriggerK flagsname ptrNĄ  flagsname ptrNĄ skinName :/basic/node.svgNGNNNNfNGPNl0NĄNN+pNN5NlNĄ NNGNNpNNNN^pNNENNq0NNGNN0NNtNNYNNENpNNNNlN0NN0NNN0NNNNlNN[pNNNNzN0NNCpNNNz0NN pNNRpNlNNeNlpNĄ`NlpNĄmNl0NN`N[@NGNĄaNGNĄaN0NGNĄvNĄsNGNĄsNNĄdNNUpNĄo`NNrNĄ NNS0wiRedPanda-4.1.12/examples/dflipflop2.panda000066400000000000000000000454011444020206400205010ustar00rootroot00000000000000WiRedPanda 4.1@H@r@@{ label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@q@priorityrotationtriggerK flagsname ptr flagsname ptrpskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@|priorityrotation@ptriggerK flagsname ptrp flagsname ptr0skinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@priorityrotationtriggerK flagsname ptr0 flagsname ptr0skinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@j@upriorityrotationtriggerK flagsname ptrp flagsname ptrskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@rpriorityrotationtriggerK flagsname 0ptr0skinName .:/output/led/LedOff.svgskinName 2:/output/led/WhiteLed.svgskinName .:/output/led/LedOff.svgskinName .:/output/led/RedLed.svgskinName .:/output/led/LedOff.svgskinName 2:/output/led/GreenLed.svgskinName .:/output/led/LedOff.svgskinName 0:/output/led/BlueLed.svgskinName .:/output/led/LedOff.svgskinName 4:/output/led/PurpleLed.svgskinName 4:/output/led//BlackLed.pngskinName ::/output/led//NavyBlueLed.pngskinName 4:/output/led//GreenLed.pngskinName 2:/output/led//TealLed.pngskinName 8:/output/led//DarkRedLed.pngskinName 8:/output/led//MagentaLed.pngskinName 6:/output/led//OrangeLed.pngskinName <:/output/led//LightGrayLed.pngskinName .:/output/led/LedOff.svgskinName 2:/output/led/RoyalLed.pngskinName ::/output/led/LimeGreenLed.pngskinName ::/output/led/AquaLightLed.pngskinName .:/output/led/RedLed.pngskinName 6:/output/led/HotPinkLed.pngskinName 4:/output/led/YellowLed.pngskinName 2:/output/led/WhiteLed.png color White label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@x@priorityrotationtriggerK flagsname ptr flagsname ptrpskinName :/basic/not.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@zpriorityrotationtriggerK flagsname ptr flagsname ptr° flagsname ptr0skinName :/basic/nand.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@ypriorityrotationtriggerK flagsname ptr flagsname ptr0 flagsname ptrpskinName :/basic/nand.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@spriorityrotationtriggerK flagsname Dataptr0 flagsname Clockptr flagsname ~Presetptr flagsname ~Clearptrې flagsname Qptr flagsname ~QptrskinName 8:/memory/dark/D-flipflop.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@ypriorityrotationtriggerK flagsname ptr flagsname ptrP flagsname ptrPskinName :/basic/nand.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@@priorityrotationtriggerK flagsname ptr flagsname ptrP flagsname ptrskinName :/basic/nand.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@t@rpriorityrotationtriggerK flagsname ptrPskinName *:/input/switchOff.svgskinName (:/input/switchOn.svgisOn locked label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@priorityrotationtriggerK flagsname ptr flagsname ptrҐ flagsname ptrskinName :/basic/nand.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@j@ypriorityrotationtriggerK flagsname ptrP flagsname ptrskinName :/basic/not.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@zpriorityrotationtriggerK flagsname 0ptr0skinName .:/output/led/LedOff.svgskinName 2:/output/led/WhiteLed.svgskinName .:/output/led/LedOff.svgskinName .:/output/led/RedLed.svgskinName .:/output/led/LedOff.svgskinName 2:/output/led/GreenLed.svgskinName .:/output/led/LedOff.svgskinName 0:/output/led/BlueLed.svgskinName .:/output/led/LedOff.svgskinName 4:/output/led/PurpleLed.svgskinName 4:/output/led//BlackLed.pngskinName ::/output/led//NavyBlueLed.pngskinName 4:/output/led//GreenLed.pngskinName 2:/output/led//TealLed.pngskinName 8:/output/led//DarkRedLed.pngskinName 8:/output/led//MagentaLed.pngskinName 6:/output/led//OrangeLed.pngskinName <:/output/led//LightGrayLed.pngskinName .:/output/led/LedOff.svgskinName 2:/output/led/RoyalLed.pngskinName ::/output/led/LimeGreenLed.pngskinName ::/output/led/AquaLightLed.pngskinName .:/output/led/RedLed.pngskinName 6:/output/led/HotPinkLed.pngskinName 4:/output/led/YellowLed.pngskinName 2:/output/led/WhiteLed.png color White label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@priorityrotationtriggerK flagsname ptrp flagsname ptr flagsname ptrskinName :/basic/nand.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@H@ypriorityrotationtriggerK flagsname ptrpskinName $:/input/clock0.svgskinName $:/input/clock1.svgfrequency&? locked label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@~@priorityrotationtriggerK flagsname ptrp flagsname ptr flagsname ptrpskinName :/basic/nand.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@~@xpriorityrotationtriggerK flagsname ptr0 flagsname ptr0 flagsname ptrskinName :/basic/nand.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@priorityrotationtriggerK flagsname ptr flagsname ptr*skinName :/basic/not.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@p@priorityrotation@VtriggerK flagsname ptr;0 flagsname ptr;skinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@X@vpriorityrotation@ptriggerK flagsname ptr50 flagsname ptrpskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@|@spriorityrotationtriggerK flagsname ptr߰ flagsname ptr0skinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@priorityrotation@ptriggerK flagsname ptr flagsname ptrpskinName :/basic/node.svgpp00p0*0pp50P߰PPPp0PpP000P°Ґ;;0;ppp0000pp0pwiRedPanda-4.1.12/examples/display-3bits-counter.panda000066400000000000000000000315771444020206400226150ustar00rootroot00000000000000WiRedPanda 4.1@H@d@@~ label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@|priorityrotation@ptriggerK flagsname ptr6Р flagsname ptr6skinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@zpriorityrotationtriggerK flagsname ptr7 flagsname ptr7 skinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@\@vpriorityrotationtriggerK flagsname ptr6 flagsname ptr7skinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@priorityrotationtriggerK flagsname ptr7  flagsname ptr6 skinName :/basic/node.svg label BTNmaxInputSizemaxOutputSizeminInputSizeminOutputSizepos@\@dpriorityrotationtriggerK flagsname ptr7.`skinName *:/input/buttonOff.svgskinName (:/input/buttonOn.svg locked label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@zpriorityrotationtriggerK flagsname G (centro)ptr7- flagsname *F (superior esquerdo)ptr7,  flagsname *E (inferior esquerdo)ptr7) flagsname D (inferior)ptr7; flagsname A (superior)ptr7L` flagsname (B (superior direito)ptr77` flagsname DP (ponto)ptr78  flagsname (C (inferior direito)ptr7, skinName @:/output/counter/counter_off.svgskinName <:/output/counter/counter_a.svgskinName <:/output/counter/counter_b.svgskinName <:/output/counter/counter_c.svgskinName <:/output/counter/counter_d.svgskinName <:/output/counter/counter_e.svgskinName <:/output/counter/counter_f.svgskinName <:/output/counter/counter_g.svgskinName >:/output/counter/counter_dp.svg color Red label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@H@priorityrotationtriggerK flagsname ptr75skinName $:/input/clock0.svgskinName $:/input/clock1.svgfrequency&@ locked label DISPLAY-3BITSmaxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@zpriorityrotationtriggerK flagsname P1ptr7? flagsname P2ptr7T flagsname P3ptr7Y  flagsname &Display7 G (centro)ptr7V  flagsname <Display7 F (superior esquerdo)ptr7] flagsname <Display7 E (inferior esquerdo)ptr7Y flagsname *Display7 D (inferior)ptr7P flagsname *Display7 A (superior)ptr6~ flagsname :Display7 B (superior direito)ptr6h` flagsname &Display7 DP (ponto)ptr6r  flagsname :Display7 C (inferior direito)ptr6f fileName &display-3bits.panda label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@f@tpriorityrotationtriggerK flagsname Tptro flagsname Clockptro flagsname ~Presetptro flagsname ~Clearptro@ flagsname Qptroр flagsname ~QptroskinName 8:/memory/dark/T-flipflop.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@r@tpriorityrotationtriggerK flagsname Tptrp  flagsname Clockptro@ flagsname ~Presetptro flagsname ~Clearptro flagsname Qptro flagsname ~QptroskinName 8:/memory/dark/T-flipflop.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@y@tpriorityrotationtriggerK flagsname Tptrp@ flagsname Clockptrp@ flagsname ~Presetptro@ flagsname ~Clearptro flagsname Qptrp flagsname ~Qptro@skinName 8:/memory/dark/T-flipflop.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@n@|priorityrotationtriggerK flagsname ptro flagsname ptroskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@v@{priorityrotationtriggerK flagsname ptrp flagsname ptrpskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@~@wpriorityrotation@VtriggerK flagsname ptrp flagsname ptrp(skinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@w@fpriorityrotationtriggerK flagsname ptrp- flagsname ptrp1skinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@p@fpriorityrotationtriggerK flagsname ptrn flagsname ptrnskinName :/basic/node.svg678 7 7?ooopo@p6 6Р7567V 7-7]7, 7Y7)7P7;6~7L`6h`77`6f 7,757 op@oo@7o7.`o7.`no7Y p7Tp(7p1p@np-np wiRedPanda-4.1.12/examples/display-3bits.panda000066400000000000000000000540501444020206400211270ustar00rootroot00000000000000WiRedPanda 4.1w@l@X label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@spriorityrotation@ptriggerK flagsname ptr flagsname ptr.skinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos}PpriorityrotationtriggerK flagsname ptr flagsname ptr$ flagsname ptr-skinName :/basic/or.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos}dpriorityrotationtriggerK flagsname ptr flagsname ptr!0 flagsname ptrskinName :/basic/or.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos0XpriorityrotationtriggerK flagsname ptr0 flagsname ptr0 flagsname ptr!skinName :/basic/and.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@jXpriorityrotationtriggerK flagsname ptr flagsname ptr flagsname ptrskinName :/basic/or.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposnwpriorityrotationtriggerK flagsname ptr0 flagsname ptrpskinName :/basic/not.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos0@lpriorityrotationtriggerK flagsname ptrp flagsname ptr0 flagsname ptrskinName :/basic/and.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos0@@priorityrotationtriggerK flagsname ptr0 flagsname ptrp flagsname ptrskinName :/basic/and.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos0@XpriorityrotationtriggerK flagsname ptr flagsname ptr0 flagsname ptr, flagsname ptrpskinName :/basic/and.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos0rpriorityrotationtriggerK flagsname ptr+P flagsname ptrCP flagsname ptrKskinName :/basic/xnor.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos0@rpriorityrotationtriggerK flagsname ptrD flagsname ptrM flagsname ptr/skinName :/basic/and.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@j0priorityrotationtriggerK flagsname ptr) flagsname ptr> flagsname ptr* flagsname ptr&skinName :/basic/or.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@jlpriorityrotationtriggerK flagsname ptr? flagsname ptrf flagsname ptrP flagsname ptrPskinName :/basic/nand.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@j@HpriorityrotationtriggerK flagsname ptr flagsname ptrP flagsname ptr flagsname ptrskinName :/basic/or.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@jrpriorityrotationtriggerK flagsname ptr! flagsname ptr flagsname ptrskinName :/basic/or.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@xvpriorityrotationtriggerK flagsname G (centro)ptr flagsname *F (superior esquerdo)ptr flagsname *E (inferior esquerdo)ptr flagsname D (inferior)ptr flagsname A (superior)ptr  flagsname (B (superior direito)ptr flagsname DP (ponto)ptr銠 flagsname (C (inferior direito)ptr skinName @:/output/counter/counter_off.svgskinName <:/output/counter/counter_a.svgskinName <:/output/counter/counter_b.svgskinName <:/output/counter/counter_c.svgskinName <:/output/counter/counter_d.svgskinName <:/output/counter/counter_e.svgskinName <:/output/counter/counter_f.svgskinName <:/output/counter/counter_g.svgskinName >:/output/counter/counter_dp.svg color Red label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposnfpriorityrotationtriggerK flagsname ptr~ flagsname ptrs`skinName :/basic/not.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos0@priorityrotationtriggerK flagsname ptr` flagsname ptr` flagsname ptr铠 flagsname ptrskinName :/basic/and.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos0@vpriorityrotationtriggerK flagsname ptr  flagsname ptr flagsname ptr霠skinName :/basic/and.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos0@dpriorityrotationtriggerK flagsname ptrT` flagsname ptr[ flagsname ptr]`skinName :/basic/and.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos0lpriorityrotationtriggerK flagsname ptrg  flagsname ptrq flagsname ptry@skinName :/basic/and.svg label P3maxInputSizemaxOutputSizeminInputSizeminOutputSizeposLpriorityrotationtriggerK flagsname ptrskinName *:/input/switchOff.svgskinName (:/input/switchOn.svgisOn locked label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@jdpriorityrotationtriggerK flagsname ptr*P flagsname ptr* flagsname ptr*P flagsname ptr*P flagsname ptr*skinName :/basic/or.svg label P1maxInputSizemaxOutputSizeminInputSizeminOutputSizeposmpriorityrotationtriggerK flagsname ptr*skinName *:/input/switchOff.svgskinName (:/input/switchOn.svgisOn locked label P2maxInputSizemaxOutputSizeminInputSizeminOutputSizeposcpriorityrotationtriggerK flagsname ptr*skinName *:/input/switchOff.svgskinName (:/input/switchOn.svgisOn locked label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos0vpriorityrotationtriggerK flagsname ptr* flagsname ptr* flagsname ptr*PskinName :/basic/xnor.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@~jpriorityrotationtriggerK flagsname ptr*skinName :/input/0.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@jvpriorityrotationtriggerK flagsname ptr*P flagsname ptr*ܐ flagsname ptr*skinName :/basic/or.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos0dpriorityrotationtriggerK flagsname ptr*Ӑ flagsname ptr*P flagsname ptr*ǐskinName :/basic/and.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposnqpriorityrotationtriggerK flagsname ptr* flagsname ptr*PskinName :/basic/not.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos}npriorityrotationtriggerK flagsname ptr* flagsname ptr*P flagsname ptr*ِskinName :/basic/or.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposspriorityrotationtriggerK flagsname ptr+skinName :/input/0.svg.銠-铠-~+$00f*P*ܐ*!0+*pp?s`py@*P*ǐ*>!*P*P霠K*P*Pp!*s`qP * *PT`p*s`,p* s`M*ǐP*s`P&*P0s`[s`s`CPs`*]`)*P0p*Ӑ*P+P/*s`0*P`pg *ِ0*ِ`*ِp*ِD**P+*wiRedPanda-4.1.12/examples/display-4bits-counter.panda000066400000000000000000000467671444020206400226250ustar00rootroot00000000000000WiRedPanda 4.1l@O@P@h label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposl@XpriorityrotationtriggerK flagsname ptrP\skinName *:/input/buttonOff.svgskinName (:/input/buttonOn.svg locked label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposP@dpriorityrotationtriggerK flagsname ptrP< flagsname ptrPZskinName :/basic/not.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposl@npriorityrotationtriggerK flagsname ptrPYskinName $:/input/clock0.svgskinName $:/input/clock1.svgfrequency&@ locked label DISPLAY-4BITSmaxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@XpriorityrotationtriggerK flagsname AptrP; flagsname BptrP=` flagsname CptrPH flagsname DptrPB flagsname &Display7 G (centro)ptrPJ flagsname <Display7 F (superior esquerdo)ptrPP  flagsname <Display7 E (inferior esquerdo)ptrP  flagsname *Display7 D (inferior)ptrPn flagsname *Display7 A (superior)ptrPy` flagsname :Display7 B (superior direito)ptrP flagsname &Display7 DP (ponto)ptrP  flagsname :Display7 C (inferior direito)ptrP}fileName &display-4bits.panda label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@`priorityrotationtriggerK flagsname G (centro)ptrP flagsname *F (superior esquerdo)ptrPv flagsname *E (inferior esquerdo)ptrPI flagsname D (inferior)ptrPM flagsname A (superior)ptrPZ@ flagsname (B (superior direito)ptrPS flagsname DP (ponto)ptrPG flagsname (C (inferior direito)ptrP[ skinName @:/output/counter/counter_off.svgskinName <:/output/counter/counter_a.svgskinName <:/output/counter/counter_b.svgskinName <:/output/counter/counter_c.svgskinName <:/output/counter/counter_d.svgskinName <:/output/counter/counter_e.svgskinName <:/output/counter/counter_f.svgskinName <:/output/counter/counter_g.svgskinName >:/output/counter/counter_dp.svg color Red label JKFLIPFLOPmaxInputSizemaxOutputSizeminInputSizeminOutputSizepos@P@dpriorityrotationtriggerK flagsname -PresetptrPJ flagsname JptrPy flagsname CptrP flagsname KptrP flagsname -ClearptrP flagsname Q 0ptrP flagsname Q 0ptrP@fileName jkflipflop.panda label JKFLIPFLOPmaxInputSizemaxOutputSizeminInputSizeminOutputSizepos@f@dpriorityrotationtriggerK flagsname -PresetptrP2 flagsname JptrP3 flagsname CptrP3 flagsname KptrP3@ flagsname -ClearptrP3  flagsname Q 0ptrP3 flagsname Q 0ptrP3@fileName jkflipflop.panda label JKFLIPFLOPmaxInputSizemaxOutputSizeminInputSizeminOutputSizepos@x@dpriorityrotationtriggerK flagsname -PresetptrP5/ flagsname JptrP5@@ flagsname CptrP5P flagsname KptrP5G flagsname -ClearptrP58 flagsname Q 0ptrP5_ flagsname Q 0ptrP5\fileName jkflipflop.panda label JKFLIPFLOPmaxInputSizemaxOutputSizeminInputSizeminOutputSizepos@q@dpriorityrotationtriggerK flagsname -PresetptrPe flagsname JptrPf flagsname CptrPf flagsname KptrPf flagsname -ClearptrPf  flagsname Q 0ptrPfP flagsname Q 0ptrPf*fileName jkflipflop.panda label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@v@}priorityrotationtriggerK flagsname ptrPh flagsname ptrPh=skinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposd@priorityrotationtriggerK flagsname ptrPh+ flagsname ptrPh8skinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@priorityrotationtriggerK flagsname ptrPha flagsname ptrPhPskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@d@zpriorityrotation@VtriggerK flagsname ptrPhY flagsname ptrPhQP flagsname ptrPhb flagsname ptrPhA flagsname ptrPhpskinName :/basic/and.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@n@|priorityrotationtriggerK flagsname ptrPhg flagsname ptrPhBPskinName :/basic/not.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@w@qpriorityrotation@ptriggerK flagsname ptrPhF flagsname ptrPhJskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@q@ppriorityrotationftriggerK flagsname ptrPh flagsname ptrPh|skinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@f@ppriorityrotationftriggerK flagsname ptrPh flagsname ptrPhzskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@P@ppriorityrotationftriggerK flagsname ptrPhv flagsname ptrPhskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@{@xpriorityrotation@VtriggerK flagsname ptrPh flagsname ptrPhskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@s@wpriorityrotationftriggerK flagsname ptrPhP flagsname ptrPhskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@j@wpriorityrotation@ftriggerK flagsname ptrPh flagsname ptrPhskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@`@wpriorityrotationtriggerK flagsname ptrPh flagsname ptrPhskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@|@VpriorityrotationtriggerK flagsname ptrPh flagsname ptrPhskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@u@ZpriorityrotationtriggerK flagsname ptrPhP flagsname ptrPhskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@n@^priorityrotationtriggerK flagsname ptrPh flagsname ptrPhskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@`@apriorityrotationtriggerK flagsname ptrPhP flagsname ptrPhԐskinName :/basic/node.svgPJPP\P<PZPPZPyPP PvP PIPnPMPy`PZ@PPSP}P[Ph8PhaPhPPGPYPh+PYPP@P3P3@PfPf*P5PPPhPP3PhP5_PhPh=PhFP@PhP3PhPf*PhPP5_PhPhpPhgPhBPPhPhJP58PhJPhPh|Pf Ph|PhPhzPhvPhPPhzP3 PhPhYPhPhQPPhPhbPhPhAPfPPhPPhP;PhP=`PhPHPhԐPBwiRedPanda-4.1.12/examples/display-4bits.panda000066400000000000000000001265741444020206400211430ustar00rootroot00000000000000WiRedPanda 4.1@@@h@V label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@h@{priorityrotation@VtriggerK flagsname ptrP@n flagsname ptrP@@skinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@h@@priorityrotation@VtriggerK flagsname ptrP@z flagsname ptrP@bskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@r@|priorityrotation@VtriggerK flagsname ptrPA@ flagsname ptrPAskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@}priorityrotation@VtriggerK flagsname ptrPA flagsname ptrPA@skinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@}priorityrotationtriggerK flagsname ptrPA flagsname ptrPA flagsname ptrPAskinName :/basic/and.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@xpriorityrotation@VtriggerK flagsname ptrPA flagsname ptrPA@skinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@XpriorityrotationtriggerK flagsname ptrPA flagsname ptrPAskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@tpriorityrotation@VtriggerK flagsname ptrPA flagsname ptrPAskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@lpriorityrotationtriggerK flagsname ptrPAӀ flagsname ptrPAЀskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@{@ypriorityrotation@VtriggerK flagsname ptrPA flagsname ptrPAրskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@r@xpriorityrotation@VtriggerK flagsname ptrPA flagsname ptrPAskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@~@tpriorityrotation@VtriggerK flagsname ptrPA flagsname ptrPAskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@u@ppriorityrotation@VtriggerK flagsname ptrPB flagsname ptrPB@skinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@x@qpriorityrotation@VtriggerK flagsname ptrPA flagsname ptrPB@skinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@x@ipriorityrotation@VtriggerK flagsname ptrPA flagsname ptrPA@skinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@kpriorityrotation@VtriggerK flagsname ptrPA@ flagsname ptrPB@@skinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@priorityrotationtriggerK flagsname ptrPB flagsname ptrPB flagsname ptrPB3 flagsname ptrPB flagsname ptrPBskinName :/basic/or.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@zpriorityrotationtriggerK flagsname ptrPB5 flagsname ptrPB> flagsname ptrPB& flagsname ptrPB=@ flagsname ptrPB*skinName :/basic/or.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@h@fpriorityrotation@VtriggerK flagsname ptrPB flagsname ptrPB;skinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@spriorityrotation@VtriggerK flagsname ptrPBT flagsname ptrPBPskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@hpriorityrotation@VtriggerK flagsname ptrPB^@ flagsname ptrPBZskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@priorityrotationtriggerK flagsname ptrPBR@ flagsname ptrPBSskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@r@`priorityrotation@VtriggerK flagsname ptrPP flagsname ptrPskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@{@bpriorityrotation@VtriggerK flagsname ptrP flagsname ptrP PskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@~@dpriorityrotation@VtriggerK flagsname ptrP flagsname ptrPPskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@bpriorityrotationtriggerK flagsname ptrPP flagsname ptrPQ flagsname ptrPRP flagsname ptrPHskinName :/basic/or.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@tpriorityrotationtriggerK flagsname ptrPM flagsname ptrPN flagsname ptrPnskinName :/basic/or.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@jpriorityrotationtriggerK flagsname ptrP@ flagsname ptrP<` flagsname ptrP flagsname ptrPA@ flagsname ptrP  flagsname ptrP}@skinName :/basic/or.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@0priorityrotationtriggerK flagsname G (centro)ptrP flagsname *F (superior esquerdo)ptrP flagsname *E (inferior esquerdo)ptrP` flagsname D (inferior)ptrP  flagsname A (superior)ptrP  flagsname (B (superior direito)ptrP  flagsname DP (ponto)ptrP flagsname (C (inferior direito)ptrP skinName @:/output/counter/counter_off.svgskinName <:/output/counter/counter_a.svgskinName <:/output/counter/counter_b.svgskinName <:/output/counter/counter_c.svgskinName <:/output/counter/counter_d.svgskinName <:/output/counter/counter_e.svgskinName <:/output/counter/counter_f.svgskinName <:/output/counter/counter_g.svgskinName >:/output/counter/counter_dp.svg color Red label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@{@Rpriorityrotation@VtriggerK flagsname ptrP flagsname ptrPskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@Vpriorityrotation@VtriggerK flagsname ptrP flagsname ptrP skinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@u@@priorityrotation@VtriggerK flagsname ptrP?  flagsname ptrP$ skinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@@priorityrotationtriggerK flagsname ptrP&` flagsname ptrP1 flagsname ptrP. flagsname ptrP-skinName :/basic/or.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@~@8priorityrotation@VtriggerK flagsname ptrP2` flagsname ptrPskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@x@ priorityrotation@VtriggerK flagsname ptrP( flagsname ptrP* skinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@xRpriorityrotation@VtriggerK flagsname ptrPk` flagsname ptrPc skinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@hVpriorityrotation@VtriggerK flagsname ptrPr flagsname ptrPoskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@TpriorityrotationtriggerK flagsname ptrPb` flagsname ptrPx  flagsname ptrPO flagsname ptrP`  flagsname ptrPQ skinName :/basic/or.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@upriorityrotationtriggerK flagsname ptrPw` flagsname ptrPl flagsname ptrPu skinName :/basic/and.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@ypriorityrotationtriggerK flagsname ptrP flagsname ptrP flagsname ptrP{skinName :/basic/and.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@jpriorityrotationtriggerK flagsname ptrP  flagsname ptrP flagsname ptrPskinName :/basic/and.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@qpriorityrotationtriggerK flagsname ptrP flagsname ptrP flagsname ptrP skinName :/basic/and.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@0priorityrotationtriggerK flagsname ptrP` flagsname ptrP` flagsname ptrP`skinName :/basic/and.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@TpriorityrotationtriggerK flagsname ptrP flagsname ptrP flagsname ptrP skinName :/basic/and.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@Dpriorityrotation@VtriggerK flagsname ptrP flagsname ptrPӠskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@uLpriorityrotation@VtriggerK flagsname ptrP  flagsname ptrP skinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@HpriorityrotationtriggerK flagsname ptrP` flagsname ptrP flagsname ptrPskinName :/basic/and.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@~Zpriorityrotation@VtriggerK flagsname ptrP flagsname ptrP skinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@r^priorityrotation@VtriggerK flagsname ptrP flagsname ptrPskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@\priorityrotationtriggerK flagsname ptrP` flagsname ptrP flagsname ptrPskinName :/basic/and.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@~@priorityrotation@VtriggerK flagsname ptrPߠ flagsname ptrP`skinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@x@priorityrotation@VtriggerK flagsname ptrP  flagsname ptrP skinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@{@priorityrotation@VtriggerK flagsname ptrP flagsname ptrPskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@r@priorityrotation@VtriggerK flagsname ptrP$ flagsname ptrPskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@u@priorityrotation@VtriggerK flagsname ptrP flagsname ptrP `skinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@n@priorityrotation@VtriggerK flagsname ptrP4` flagsname ptrP.`skinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@h@priorityrotation@VtriggerK flagsname ptrP+` flagsname ptrP)skinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@priorityrotation@VtriggerK flagsname ptrP@` flagsname ptrPcskinName :/basic/node.svg label BmaxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@priorityrotationtriggerK flagsname ptrPg`skinName *:/input/switchOff.svgskinName (:/input/switchOn.svgisOn locked label AmaxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@priorityrotationtriggerK flagsname ptrPKskinName *:/input/switchOff.svgskinName (:/input/switchOn.svgisOn locked label CmaxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@}priorityrotationtriggerK flagsname ptrP<skinName *:/input/switchOff.svgskinName (:/input/switchOn.svgisOn locked label DmaxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@wpriorityrotationtriggerK flagsname ptrPR`skinName *:/input/switchOff.svgskinName (:/input/switchOn.svgisOn locked label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@fpriorityrotationtriggerK flagsname ptrPe  flagsname ptrPV skinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@qpriorityrotationtriggerK flagsname ptrPk flagsname ptrPzskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@w|priorityrotationtriggerK flagsname ptrP{ flagsname ptrP}skinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@}vpriorityrotationtriggerK flagsname ptrP` flagsname ptrP skinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@tpriorityrotation@VtriggerK flagsname ptrP flagsname ptrP`skinName :/basic/not.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@lpriorityrotation@VtriggerK flagsname ptrP  flagsname ptrP skinName :/basic/not.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@z{priorityrotation@VtriggerK flagsname ptrP flagsname ptrP`skinName :/basic/not.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@upriorityrotation@VtriggerK flagsname ptrP flagsname ptrPskinName :/basic/not.svgP@@PB=@P@@P@zPBPPB*PP PBP@bPB3P@bP+`PAPBP{PBP{PB&PAPB>PAPAPAP$PA@PAPA@P@`PA@PB5PAPAPAP.PAPNPAЀPAPAЀPPAրPPAրPPAPPAPA@P{PlPAPw`PAPߠPB@PPB@PPB@PPB@P PA@P PA@PAPB@@PPB@@PAPu P P PA@PPAӀPB;P@PB;P@nPBPPMPBZPBTPBZP<`PBSPB^@PBSP` PPPPPAP PPQP PPAPPPRPPPPAPHPPnP`P}@P P-P PQ P PPPPP PP PA@P PAP$ P1P$ PBP`P&`PP`PPP* P`P* PAPPBR@Pc POPoPx Pc P(PoPBPPb`PӠPPӠPP P`P P? P PP P2`PP`PPPP PP`PP}Pk`PzPPV PrP P4`P`P PR`P`PPPzPPV P P}PPg`PkPKPe P<P{P PwiRedPanda-4.1.12/examples/display-4bits.txt000066400000000000000000000006551444020206400206660ustar00rootroot000000000000000101010101010101 : "A" 0011001100110011 : "B" 0000111100001111 : "C" 0000000011111111 : "D" 0111111101111101 : "7-Segment Display[0]" 1111011101110101 : "7-Segment Display[1]" 1100111100000000 : "7-Segment Display[2]" 1101111101111101 : "7-Segment Display[3]" 1101111101111111 : "7-Segment Display[4]" 1111110011001111 : "7-Segment Display[5]" 0000000000000000 : "7-Segment Display[6]" 1111001111111111 : "7-Segment Display[7]" wiRedPanda-4.1.12/examples/dlatch.panda000066400000000000000000000231711444020206400176770ustar00rootroot00000000000000WiRedPanda 4.1@d@l@@q label QmaxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@ypriorityrotationtriggerK flagsname 0ptrP֠skinName .:/output/led/LedOff.svgskinName 2:/output/led/WhiteLed.svgskinName .:/output/led/LedOff.svgskinName .:/output/led/RedLed.svgskinName .:/output/led/LedOff.svgskinName 2:/output/led/GreenLed.svgskinName .:/output/led/LedOff.svgskinName 0:/output/led/BlueLed.svgskinName .:/output/led/LedOff.svgskinName 4:/output/led/PurpleLed.svgskinName 4:/output/led//BlackLed.pngskinName ::/output/led//NavyBlueLed.pngskinName 4:/output/led//GreenLed.pngskinName 2:/output/led//TealLed.pngskinName 8:/output/led//DarkRedLed.pngskinName 8:/output/led//MagentaLed.pngskinName 6:/output/led//OrangeLed.pngskinName <:/output/led//LightGrayLed.pngskinName .:/output/led/LedOff.svgskinName 2:/output/led/RoyalLed.pngskinName ::/output/led/LimeGreenLed.pngskinName ::/output/led/AquaLightLed.pngskinName .:/output/led/RedLed.pngskinName 6:/output/led/HotPinkLed.pngskinName 4:/output/led/YellowLed.pngskinName 2:/output/led/WhiteLed.png color White label QmaxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@npriorityrotationtriggerK flagsname 0ptrPskinName .:/output/led/LedOff.svgskinName 2:/output/led/WhiteLed.svgskinName .:/output/led/LedOff.svgskinName .:/output/led/RedLed.svgskinName .:/output/led/LedOff.svgskinName 2:/output/led/GreenLed.svgskinName .:/output/led/LedOff.svgskinName 0:/output/led/BlueLed.svgskinName .:/output/led/LedOff.svgskinName 4:/output/led/PurpleLed.svgskinName 4:/output/led//BlackLed.pngskinName ::/output/led//NavyBlueLed.pngskinName 4:/output/led//GreenLed.pngskinName 2:/output/led//TealLed.pngskinName 8:/output/led//DarkRedLed.pngskinName 8:/output/led//MagentaLed.pngskinName 6:/output/led//OrangeLed.pngskinName <:/output/led//LightGrayLed.pngskinName .:/output/led/LedOff.svgskinName 2:/output/led/RoyalLed.pngskinName ::/output/led/LimeGreenLed.pngskinName ::/output/led/AquaLightLed.pngskinName .:/output/led/RedLed.pngskinName 6:/output/led/HotPinkLed.pngskinName 4:/output/led/YellowLed.pngskinName 2:/output/led/WhiteLed.png color White label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@ypriorityrotationtriggerK flagsname ptrP flagsname ptrP  flagsname ptrPskinName :/basic/nand.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@npriorityrotationtriggerK flagsname ptrP  flagsname ptrP` flagsname ptrP"`skinName :/basic/nand.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@l@zpriorityrotationtriggerK flagsname ptrP flagsname ptrPskinName :/basic/not.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@x@ypriorityrotationtriggerK flagsname ptrP` flagsname ptrP` flagsname ptrPskinName :/basic/nand.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@x@mpriorityrotationtriggerK flagsname ptrP flagsname ptrP flagsname ptrP `skinName :/basic/nand.svg label CLKmaxInputSizemaxOutputSizeminInputSizeminOutputSizepos@t@spriorityrotationtriggerK flagsname ptrP!skinName $:/input/clock0.svgskinName $:/input/clock1.svgfrequency&? locked label DmaxInputSizemaxOutputSizeminInputSizeminOutputSizepos@d@lpriorityrotationtriggerK flagsname ptrP)skinName *:/input/buttonOff.svgskinName (:/input/buttonOn.svg lockedPP֠P"`PPP PP`P"`PP `P P)PP)PPP`P!P`P!PwiRedPanda-4.1.12/examples/ic.panda000066400000000000000000000767171444020206400170510ustar00rootroot00000000000000WiRedPanda 4.1r@@ label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos0hpriorityrotationtriggerK flagsname G (centro)ptrOa@ flagsname *F (superior esquerdo)ptrN flagsname *E (inferior esquerdo)ptrNp flagsname D (inferior)ptrN flagsname A (superior)ptrN0 flagsname (B (superior direito)ptrNp flagsname DP (ponto)ptrN0 flagsname (C (inferior direito)ptrNp skinName @:/output/counter/counter_off.svgskinName <:/output/counter/counter_a.svgskinName <:/output/counter/counter_b.svgskinName <:/output/counter/counter_c.svgskinName <:/output/counter/counter_d.svgskinName <:/output/counter/counter_e.svgskinName <:/output/counter/counter_f.svgskinName <:/output/counter/counter_g.svgskinName >:/output/counter/counter_dp.svg color Red label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@TpriorityrotationtriggerK flagsname JptrN flagsname ClockptrNp flagsname KptrN flagsname ~PresetptrNp flagsname ~ClearptrN0 flagsname QptrN flagsname ~QptrN0skinName ::/memory/dark/JK-flipflop.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@s@TpriorityrotationtriggerK flagsname JptrN flagsname ClockptrN flagsname KptrN0 flagsname ~PresetptrN0 flagsname ~ClearptrN flagsname QptrN flagsname ~QptrNskinName ::/memory/dark/JK-flipflop.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@y@TpriorityrotationtriggerK flagsname Jptr> flagsname Clockptr> flagsname Kptr>@ flagsname ~Presetptr>ƀ flagsname ~Clearptr> flagsname Qptr> flagsname ~Qptr>̀skinName ::/memory/dark/JK-flipflop.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@XpriorityrotationtriggerK flagsname G (centro)ptr> flagsname *F (superior esquerdo)ptr>ۀ flagsname *E (inferior esquerdo)ptr> flagsname D (inferior)ptr> flagsname A (superior)ptr>ɀ flagsname (B (superior direito)ptr>@ flagsname DP (ponto)ptr> flagsname (C (inferior direito)ptr> skinName @:/output/counter/counter_off.svgskinName <:/output/counter/counter_a.svgskinName <:/output/counter/counter_b.svgskinName <:/output/counter/counter_c.svgskinName <:/output/counter/counter_d.svgskinName <:/output/counter/counter_e.svgskinName <:/output/counter/counter_f.svgskinName <:/output/counter/counter_g.svgskinName >:/output/counter/counter_dp.svg color Red label DISPLAY-4BITSmaxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@hpriorityrotationtriggerK flagsname Aptr> flagsname Bptr> flagsname CptrN flagsname Dptr`p flagsname &Display7 G (centro)ptr` p flagsname <Display7 F (superior esquerdo)ptr_ flagsname <Display7 E (inferior esquerdo)ptr_0 flagsname *Display7 D (inferior)ptr_ flagsname *Display7 A (superior)ptr` flagsname :Display7 B (superior direito)ptr_ flagsname &Display7 DP (ponto)ptr_0 flagsname :Display7 C (inferior direito)ptr_fileName &display-4bits.panda label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposj@priorityrotationtriggerK flagsname G (centro)ptr ` flagsname *F (superior esquerdo)ptr,` flagsname *E (inferior esquerdo)ptr/` flagsname D (inferior)ptrx flagsname A (superior)ptr0 flagsname (B (superior direito)ptrZ flagsname DP (ponto)ptrf flagsname (C (inferior direito)ptr skinName @:/output/counter/counter_off.svgskinName <:/output/counter/counter_a.svgskinName <:/output/counter/counter_b.svgskinName <:/output/counter/counter_c.svgskinName <:/output/counter/counter_d.svgskinName <:/output/counter/counter_e.svgskinName <:/output/counter/counter_f.svgskinName <:/output/counter/counter_g.svgskinName >:/output/counter/counter_dp.svg color Red label DISPLAY-4BITSmaxInputSizemaxOutputSizeminInputSizeminOutputSizepost@HpriorityrotationtriggerK flagsname Aptri@ flagsname Bptrm flagsname Cptrh flagsname Dptry flagsname &Display7 G (centro)ptr`@ flagsname <Display7 F (superior esquerdo)ptr^ flagsname <Display7 E (inferior esquerdo)ptrO flagsname *Display7 D (inferior)ptr| flagsname *Display7 A (superior)ptrU flagsname :Display7 B (superior direito)ptrj flagsname &Display7 DP (ponto)ptrX flagsname :Display7 C (inferior direito)ptrgfileName &display-4bits.panda label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos0priorityrotationtriggerK flagsname ptrrPskinName $:/input/clock0.svgskinName $:/input/clock1.svgfrequency&@ locked label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposhrpriorityrotationVtriggerK flagsname 0ptrqskinName .:/output/led/LedOff.svgskinName 2:/output/led/WhiteLed.svgskinName .:/output/led/LedOff.svgskinName .:/output/led/RedLed.svgskinName .:/output/led/LedOff.svgskinName 2:/output/led/GreenLed.svgskinName .:/output/led/LedOff.svgskinName 0:/output/led/BlueLed.svgskinName .:/output/led/LedOff.svgskinName 4:/output/led/PurpleLed.svgskinName 4:/output/led//BlackLed.pngskinName ::/output/led//NavyBlueLed.pngskinName 4:/output/led//GreenLed.pngskinName 2:/output/led//TealLed.pngskinName 8:/output/led//DarkRedLed.pngskinName 8:/output/led//MagentaLed.pngskinName 6:/output/led//OrangeLed.pngskinName <:/output/led//LightGrayLed.pngskinName .:/output/led/LedOff.svgskinName 2:/output/led/RoyalLed.pngskinName ::/output/led/LimeGreenLed.pngskinName ::/output/led/AquaLightLed.pngskinName .:/output/led/RedLed.pngskinName 6:/output/led/HotPinkLed.pngskinName 4:/output/led/YellowLed.pngskinName 2:/output/led/WhiteLed.png color Green label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposqrpriorityrotationVtriggerK flagsname 0ptrr skinName .:/output/led/LedOff.svgskinName 2:/output/led/WhiteLed.svgskinName .:/output/led/LedOff.svgskinName .:/output/led/RedLed.svgskinName .:/output/led/LedOff.svgskinName 2:/output/led/GreenLed.svgskinName .:/output/led/LedOff.svgskinName 0:/output/led/BlueLed.svgskinName .:/output/led/LedOff.svgskinName 4:/output/led/PurpleLed.svgskinName 4:/output/led//BlackLed.pngskinName ::/output/led//NavyBlueLed.pngskinName 4:/output/led//GreenLed.pngskinName 2:/output/led//TealLed.pngskinName 8:/output/led//DarkRedLed.pngskinName 8:/output/led//MagentaLed.pngskinName 6:/output/led//OrangeLed.pngskinName <:/output/led//LightGrayLed.pngskinName .:/output/led/LedOff.svgskinName 2:/output/led/RoyalLed.pngskinName ::/output/led/LimeGreenLed.pngskinName ::/output/led/AquaLightLed.pngskinName .:/output/led/RedLed.pngskinName 6:/output/led/HotPinkLed.pngskinName 4:/output/led/YellowLed.pngskinName 2:/output/led/WhiteLed.png color Red label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos\rpriorityrotationVtriggerK flagsname 0ptrrskinName .:/output/led/LedOff.svgskinName 2:/output/led/WhiteLed.svgskinName .:/output/led/LedOff.svgskinName .:/output/led/RedLed.svgskinName .:/output/led/LedOff.svgskinName 2:/output/led/GreenLed.svgskinName .:/output/led/LedOff.svgskinName 0:/output/led/BlueLed.svgskinName .:/output/led/LedOff.svgskinName 4:/output/led/PurpleLed.svgskinName 4:/output/led//BlackLed.pngskinName ::/output/led//NavyBlueLed.pngskinName 4:/output/led//GreenLed.pngskinName 2:/output/led//TealLed.pngskinName 8:/output/led//DarkRedLed.pngskinName 8:/output/led//MagentaLed.pngskinName 6:/output/led//OrangeLed.pngskinName <:/output/led//LightGrayLed.pngskinName .:/output/led/LedOff.svgskinName 2:/output/led/RoyalLed.pngskinName ::/output/led/LimeGreenLed.pngskinName ::/output/led/AquaLightLed.pngskinName .:/output/led/RedLed.pngskinName 6:/output/led/HotPinkLed.pngskinName 4:/output/led/YellowLed.pngskinName 2:/output/led/WhiteLed.png color Blue label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposXpriorityrotationtriggerK flagsname ptrqskinName $:/input/clock0.svgskinName $:/input/clock1.svgfrequency&@ locked label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposfpriorityrotationtriggerK flagsname ptrrskinName $:/input/clock0.svgskinName $:/input/clock1.svgfrequency&? locked label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposppriorityrotationtriggerK flagsname ptrrskinName $:/input/clock0.svgskinName $:/input/clock1.svgfrequency&? locked label INPUTmaxInputSizemaxOutputSizeminInputSizeminOutputSizeposs`priorityrotationtriggerK flagsname x0ptrrE flagsname x1ptrrPP flagsname not_x0 0ptrrE flagsname and 0ptrrQ flagsname or 0ptrr&P flagsname xor 0ptrr-fileName input.panda label DISPLAY-3BITSmaxInputSizemaxOutputSizeminInputSizeminOutputSizepos\`priorityrotationtriggerK flagsname P1ptrqv flagsname P2ptrqp flagsname P3ptrqq flagsname &Display7 G (centro)ptrqrP flagsname <Display7 F (superior esquerdo)ptrq flagsname <Display7 E (inferior esquerdo)ptrq flagsname *Display7 D (inferior)ptrq flagsname *Display7 A (superior)ptrqd flagsname :Display7 B (superior direito)ptr` flagsname &Display7 DP (ponto)ptr`0 flagsname :Display7 C (inferior direito)ptr`0fileName &display-3bits.panda label JKFLIPFLOPmaxInputSizemaxOutputSizeminInputSizeminOutputSizepos@h@TpriorityrotationtriggerK flagsname -Presetptrtp flagsname Jptrtzp flagsname Cptrt{0 flagsname Kptrt0 flagsname -Clearptrt flagsname Q 0ptrtp flagsname Q 0ptrfileName jkflipflop.panda label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@@Tpriorityrotation@VtriggerK flagsname ptrqpskinName $:/input/clock0.svgskinName $:/input/clock1.svgfrequency&@ locked label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@hdpriorityrotationtriggerK flagsname Jptrp flagsname Clockptrp flagsname Kptr flagsname ~Presetptr0 flagsname ~Clearptrp flagsname Qptr0 flagsname ~QptrskinName ::/memory/dark/JK-flipflop.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@rnpriorityrotationVtriggerK flagsname 0ptr0skinName .:/output/led/LedOff.svgskinName 2:/output/led/WhiteLed.svgskinName .:/output/led/LedOff.svgskinName .:/output/led/RedLed.svgskinName .:/output/led/LedOff.svgskinName 2:/output/led/GreenLed.svgskinName .:/output/led/LedOff.svgskinName 0:/output/led/BlueLed.svgskinName .:/output/led/LedOff.svgskinName 4:/output/led/PurpleLed.svgskinName 4:/output/led//BlackLed.pngskinName ::/output/led//NavyBlueLed.pngskinName 4:/output/led//GreenLed.pngskinName 2:/output/led//TealLed.pngskinName 8:/output/led//DarkRedLed.pngskinName 8:/output/led//MagentaLed.pngskinName 6:/output/led//OrangeLed.pngskinName <:/output/led//LightGrayLed.pngskinName .:/output/led/LedOff.svgskinName 2:/output/led/RoyalLed.pngskinName ::/output/led/LimeGreenLed.pngskinName ::/output/led/AquaLightLed.pngskinName .:/output/led/RedLed.pngskinName 6:/output/led/HotPinkLed.pngskinName 4:/output/led/YellowLed.pngskinName 2:/output/led/WhiteLed.png color White label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@PdpriorityrotationtriggerK flagsname ptrpskinName $:/input/clock0.svgskinName $:/input/clock1.svgfrequency&? locked_>_>@_0>`>ɀ_>_0>_>ۀ` p>N>>NprrPPrrEN0>>̀>rPyqhrmri@r&PqqrQqprEqvr&PrrQqrEr `p`@ `^,`O/`|xU0jZXfgqrPOa@qNqNpqNqdN0`Np`0N0`0NptpNqpt{000ppNNwiRedPanda-4.1.12/examples/input.panda000066400000000000000000000342431444020206400176010ustar00rootroot00000000000000WiRedPanda 4.1jl@|@t label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposHlpriorityrotationtriggerK flagsname ptrP} flagsname ptrP}skinName :/basic/not.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposH@0priorityrotationtriggerK flagsname ptrP flagsname ptrPP flagsname ptrPskinName :/basic/xor.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposHPpriorityrotationtriggerK flagsname ptrPP flagsname ptrP}P flagsname ptrP°skinName :/basic/or.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposHbpriorityrotationtriggerK flagsname ptrP flagsname ptrPp flagsname ptrPskinName :/basic/and.svg label x0maxInputSizemaxOutputSizeminInputSizeminOutputSizeposjdpriorityrotationtriggerKA flagsname ptrP`skinName *:/input/buttonOff.svgskinName (:/input/buttonOn.svg locked label x1maxInputSizemaxOutputSizeminInputSizeminOutputSizeposjHpriorityrotationtriggerKS flagsname ptrPskinName *:/input/buttonOff.svgskinName (:/input/buttonOn.svg locked label xormaxInputSizemaxOutputSizeminInputSizeminOutputSizepos@\@0priorityrotationtriggerK flagsname 0ptrPpskinName .:/output/led/LedOff.svgskinName 2:/output/led/WhiteLed.svgskinName .:/output/led/LedOff.svgskinName .:/output/led/RedLed.svgskinName .:/output/led/LedOff.svgskinName 2:/output/led/GreenLed.svgskinName .:/output/led/LedOff.svgskinName 0:/output/led/BlueLed.svgskinName .:/output/led/LedOff.svgskinName 4:/output/led/PurpleLed.svgskinName 4:/output/led//BlackLed.pngskinName ::/output/led//NavyBlueLed.pngskinName 4:/output/led//GreenLed.pngskinName 2:/output/led//TealLed.pngskinName 8:/output/led//DarkRedLed.pngskinName 8:/output/led//MagentaLed.pngskinName 6:/output/led//OrangeLed.pngskinName <:/output/led//LightGrayLed.pngskinName .:/output/led/LedOff.svgskinName 2:/output/led/RoyalLed.pngskinName ::/output/led/LimeGreenLed.pngskinName ::/output/led/AquaLightLed.pngskinName .:/output/led/RedLed.pngskinName 6:/output/led/HotPinkLed.pngskinName 4:/output/led/YellowLed.pngskinName 2:/output/led/WhiteLed.png color White label not_x0maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@\lpriorityrotationtriggerK flagsname 0ptrPskinName .:/output/led/LedOff.svgskinName 2:/output/led/WhiteLed.svgskinName .:/output/led/LedOff.svgskinName .:/output/led/RedLed.svgskinName .:/output/led/LedOff.svgskinName 2:/output/led/GreenLed.svgskinName .:/output/led/LedOff.svgskinName 0:/output/led/BlueLed.svgskinName .:/output/led/LedOff.svgskinName 4:/output/led/PurpleLed.svgskinName 4:/output/led//BlackLed.pngskinName ::/output/led//NavyBlueLed.pngskinName 4:/output/led//GreenLed.pngskinName 2:/output/led//TealLed.pngskinName 8:/output/led//DarkRedLed.pngskinName 8:/output/led//MagentaLed.pngskinName 6:/output/led//OrangeLed.pngskinName <:/output/led//LightGrayLed.pngskinName .:/output/led/LedOff.svgskinName 2:/output/led/RoyalLed.pngskinName ::/output/led/LimeGreenLed.pngskinName ::/output/led/AquaLightLed.pngskinName .:/output/led/RedLed.pngskinName 6:/output/led/HotPinkLed.pngskinName 4:/output/led/YellowLed.pngskinName 2:/output/led/WhiteLed.png color White label andmaxInputSizemaxOutputSizeminInputSizeminOutputSizepos@\bpriorityrotationtriggerK flagsname 0ptrPӓskinName .:/output/led/LedOff.svgskinName 2:/output/led/WhiteLed.svgskinName .:/output/led/LedOff.svgskinName .:/output/led/RedLed.svgskinName .:/output/led/LedOff.svgskinName 2:/output/led/GreenLed.svgskinName .:/output/led/LedOff.svgskinName 0:/output/led/BlueLed.svgskinName .:/output/led/LedOff.svgskinName 4:/output/led/PurpleLed.svgskinName 4:/output/led//BlackLed.pngskinName ::/output/led//NavyBlueLed.pngskinName 4:/output/led//GreenLed.pngskinName 2:/output/led//TealLed.pngskinName 8:/output/led//DarkRedLed.pngskinName 8:/output/led//MagentaLed.pngskinName 6:/output/led//OrangeLed.pngskinName <:/output/led//LightGrayLed.pngskinName .:/output/led/LedOff.svgskinName 2:/output/led/RoyalLed.pngskinName ::/output/led/LimeGreenLed.pngskinName ::/output/led/AquaLightLed.pngskinName .:/output/led/RedLed.pngskinName 6:/output/led/HotPinkLed.pngskinName 4:/output/led/YellowLed.pngskinName 2:/output/led/WhiteLed.png color White label ormaxInputSizemaxOutputSizeminInputSizeminOutputSizepos@\PpriorityrotationtriggerK flagsname 0ptrP፰skinName .:/output/led/LedOff.svgskinName 2:/output/led/WhiteLed.svgskinName .:/output/led/LedOff.svgskinName .:/output/led/RedLed.svgskinName .:/output/led/LedOff.svgskinName 2:/output/led/GreenLed.svgskinName .:/output/led/LedOff.svgskinName 0:/output/led/BlueLed.svgskinName .:/output/led/LedOff.svgskinName 4:/output/led/PurpleLed.svgskinName 4:/output/led//BlackLed.pngskinName ::/output/led//NavyBlueLed.pngskinName 4:/output/led//GreenLed.pngskinName 2:/output/led//TealLed.pngskinName 8:/output/led//DarkRedLed.pngskinName 8:/output/led//MagentaLed.pngskinName 6:/output/led//OrangeLed.pngskinName <:/output/led//LightGrayLed.pngskinName .:/output/led/LedOff.svgskinName 2:/output/led/RoyalLed.pngskinName ::/output/led/LimeGreenLed.pngskinName ::/output/led/AquaLightLed.pngskinName .:/output/led/RedLed.pngskinName 6:/output/led/HotPinkLed.pngskinName 4:/output/led/YellowLed.pngskinName 2:/output/led/WhiteLed.png color WhiteP`P}PPpP°P፰PPӓP}PPPPPP}PPPpP`PP`PPP`PwiRedPanda-4.1.12/examples/jkflipflop.panda000066400000000000000000000403641444020206400206030ustar00rootroot00000000000000WiRedPanda 4.1ln@@ label DFLIPFLOPmaxInputSizemaxOutputSizeminInputSizeminOutputSizepos@y0priorityrotationtriggerK flagsname -PresetptrPg flagsname DptrPg} flagsname CLKptrPg flagsname -ClearptrPgw flagsname Led 0ptrPgz0 flagsname Led 0ptrPgzfileName dflipflop.panda label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@wlpriorityrotationtriggerK flagsname ptrPgXp flagsname ptrPg`skinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@w@qpriorityrotationtriggerK flagsname ptrP` flagsname ptrPskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@q@PpriorityrotationtriggerK flagsname ptrPȠ flagsname ptrPskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@`Xpriorityrotation@ftriggerK flagsname ptrP flagsname ptrPΠskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@`@Xpriorityrotation@ftriggerK flagsname ptrP flagsname ptrP`skinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@{@Xpriorityrotation@ftriggerK flagsname ptrP` flagsname ptrP skinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@{Xpriorityrotation@ftriggerK flagsname ptrP flagsname ptrPskinName :/basic/node.svg label CmaxInputSizemaxOutputSizeminInputSizeminOutputSizeposl@HpriorityrotationtriggerK flagsname ptrPskinName $:/input/clock0.svgskinName $:/input/clock1.svgfrequency&? locked label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos0DpriorityrotationtriggerK flagsname ptrPb` flagsname ptrPaskinName :/basic/not.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@`priorityrotationtriggerK flagsname ptrPB flagsname ptrP flagsname ptrPskinName :/basic/and.svg label -PresetmaxInputSizemaxOutputSizeminInputSizeminOutputSizepos@\npriorityrotationtriggerK flagsname ptrP`skinName *:/input/switchOff.svgskinName (:/input/switchOn.svgisOn locked label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@n8priorityrotationtriggerK flagsname ptrPE  flagsname ptrP4 flagsname ptrP#`skinName :/basic/or.svg label -ClearmaxInputSizemaxOutputSizeminInputSizeminOutputSizepos@`@ppriorityrotationtriggerK flagsname ptrP)`skinName *:/input/switchOff.svgskinName (:/input/switchOn.svgisOn locked label JmaxInputSizemaxOutputSizeminInputSizeminOutputSizeposT\priorityrotationtriggerK flagsname ptrP0 skinName *:/input/switchOff.svgskinName (:/input/switchOn.svgisOn locked label KmaxInputSizemaxOutputSizeminInputSizeminOutputSizeposT@`priorityrotationtriggerK flagsname ptrP=skinName *:/input/switchOff.svgskinName (:/input/switchOn.svgisOn locked label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos0@ priorityrotationtriggerK flagsname ptrPR flagsname ptrPiskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@`HpriorityrotationtriggerK flagsname ptrP  flagsname ptrP flagsname ptrP%skinName :/basic/and.svg label QmaxInputSizemaxOutputSizeminInputSizeminOutputSizepos@LpriorityrotationVtriggerK flagsname 0ptrP skinName .:/output/led/LedOff.svgskinName 2:/output/led/WhiteLed.svgskinName .:/output/led/LedOff.svgskinName .:/output/led/RedLed.svgskinName .:/output/led/LedOff.svgskinName 2:/output/led/GreenLed.svgskinName .:/output/led/LedOff.svgskinName 0:/output/led/BlueLed.svgskinName .:/output/led/LedOff.svgskinName 4:/output/led/PurpleLed.svgskinName 4:/output/led//BlackLed.pngskinName ::/output/led//NavyBlueLed.pngskinName 4:/output/led//GreenLed.pngskinName 2:/output/led//TealLed.pngskinName 8:/output/led//DarkRedLed.pngskinName 8:/output/led//MagentaLed.pngskinName 6:/output/led//OrangeLed.pngskinName <:/output/led//LightGrayLed.pngskinName .:/output/led/LedOff.svgskinName 2:/output/led/RoyalLed.pngskinName ::/output/led/LimeGreenLed.pngskinName ::/output/led/AquaLightLed.pngskinName .:/output/led/RedLed.pngskinName 6:/output/led/HotPinkLed.pngskinName 4:/output/led/YellowLed.pngskinName 2:/output/led/WhiteLed.png color White label QmaxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@8priorityrotation@VtriggerK flagsname 0ptrP`skinName .:/output/led/LedOff.svgskinName 2:/output/led/WhiteLed.svgskinName .:/output/led/LedOff.svgskinName .:/output/led/RedLed.svgskinName .:/output/led/LedOff.svgskinName 2:/output/led/GreenLed.svgskinName .:/output/led/LedOff.svgskinName 0:/output/led/BlueLed.svgskinName .:/output/led/LedOff.svgskinName 4:/output/led/PurpleLed.svgskinName 4:/output/led//BlackLed.pngskinName ::/output/led//NavyBlueLed.pngskinName 4:/output/led//GreenLed.pngskinName 2:/output/led//TealLed.pngskinName 8:/output/led//DarkRedLed.pngskinName 8:/output/led//MagentaLed.pngskinName 6:/output/led//OrangeLed.pngskinName <:/output/led//LightGrayLed.pngskinName .:/output/led/LedOff.svgskinName 2:/output/led/RoyalLed.pngskinName ::/output/led/LimeGreenLed.pngskinName ::/output/led/AquaLightLed.pngskinName .:/output/led/RedLed.pngskinName 6:/output/led/HotPinkLed.pngskinName 4:/output/led/YellowLed.pngskinName 2:/output/led/WhiteLed.png color WhitePgz0P PΠP PgzP`PgzP`PPP%PE PaPPgz0PP`PP PPPgwPg`PgPPȠPPgP0 Pb`PiPBP`PgXpP)`P`P#`Pg}PP4P=PRwiRedPanda-4.1.12/examples/notes.panda000066400000000000000000000260421444020206400175700ustar00rootroot00000000000000WiRedPanda 4.1@@@R@ @ label G6maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@vpriorityrotationtriggerK flagsname ptrP'skinName ::/output/buzzer/BuzzerOff.svgskinName 8:/output/buzzer/BuzzerOn.svgnote G6 label JKFLIPFLOPmaxInputSizemaxOutputSizeminInputSizeminOutputSizepos@h@TpriorityrotationtriggerK flagsname -PresetptrPA flagsname JptrP7 flagsname CptrP*@ flagsname KptrP, flagsname -ClearptrPD flagsname Q 0ptrP" flagsname Q 0ptrP-@fileName jkflipflop.panda label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@y@TpriorityrotationtriggerK flagsname JptrP& flagsname ClockptrP&.P flagsname KptrP& flagsname ~PresetptrP& flagsname ~ClearptrP& flagsname QptrP&P flagsname ~QptrP&skinName ::/memory/dark/JK-flipflop.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@s@TpriorityrotationtriggerK flagsname JptrP& flagsname ClockptrP& flagsname KptrP&P flagsname ~PresetptrP& flagsname ~ClearptrP&P flagsname QptrP& flagsname ~QptrP&skinName ::/memory/dark/JK-flipflop.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@TpriorityrotationtriggerK flagsname JptrP& flagsname ClockptrP& flagsname KptrP& flagsname ~PresetptrP&ې flagsname ~ClearptrP&Ґ flagsname QptrP&P flagsname ~QptrP&skinName ::/memory/dark/JK-flipflop.svg label F6maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@rpriorityrotationtriggerK flagsname ptrP&PskinName ::/output/buzzer/BuzzerOff.svgskinName 8:/output/buzzer/BuzzerOn.svgnote F6 label D6maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@dpriorityrotationtriggerK flagsname ptrP&PskinName ::/output/buzzer/BuzzerOff.svgskinName 8:/output/buzzer/BuzzerOn.svgnote D6 label B7maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@~priorityrotationtriggerK flagsname ptrP'skinName ::/output/buzzer/BuzzerOff.svgskinName 8:/output/buzzer/BuzzerOn.svgnote B7 label C6maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@XpriorityrotationtriggerK flagsname ptrP&skinName ::/output/buzzer/BuzzerOff.svgskinName 8:/output/buzzer/BuzzerOn.svgnote C6 label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@@TpriorityrotationtriggerK flagsname ptrPB@skinName $:/input/clock0.svgskinName $:/input/clock1.svgfrequency&@ locked label A7maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@zpriorityrotationtriggerK flagsname ptrP'PskinName ::/output/buzzer/BuzzerOff.svgskinName 8:/output/buzzer/BuzzerOn.svgnote A7 label DECODERmaxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@qpriorityrotationtriggerK flagsname InputSwitchptrP'L flagsname InputSwitchptrP'j flagsname InputSwitchptrP'fP flagsname Led 0ptrP'`P flagsname Led 0ptrP'k flagsname Led 0ptrP'C flagsname Led 0ptrP'[ flagsname Led 0ptrP'b flagsname Led 0ptrP'cP flagsname Led 0ptrP'd flagsname Led 0ptrP'KPfileName decoder.panda label E6maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@lpriorityrotationtriggerK flagsname ptrP&skinName ::/output/buzzer/BuzzerOff.svgskinName 8:/output/buzzer/BuzzerOn.svgnote E6 label C7maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@priorityrotationtriggerK flagsname ptrP'DskinName ::/output/buzzer/BuzzerOff.svgskinName 8:/output/buzzer/BuzzerOn.svgnote C7PB@P*@P'`PP&P&P&.PP&PP&P&P'jP'CP&P'[P&PP'bP'P&P'fPP&P'LP"P&P'cPP'PP'KPP'DP'kP&PP'dP'wiRedPanda-4.1.12/examples/register.panda000066400000000000000000000432121444020206400202620ustar00rootroot00000000000000WiRedPanda 4.1@w@e0@@s label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@spriorityrotationtriggerK flagsname DataptrP}X flagsname ClockptrP}90 flagsname ~PresetptrP}Sp flagsname ~ClearptrP}T0 flagsname QptrP}F flagsname ~QptrP}^skinName 8:/memory/dark/D-flipflop.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@xpriorityrotationtriggerK flagsname ptrP}⑰ flagsname ptrP}₰skinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@w@rpriorityrotationtriggerK flagsname ptrP}skinName $:/input/clock0.svgskinName $:/input/clock1.svgfrequency&@ locked label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@spriorityrotationtriggerK flagsname DataptrP} flagsname ClockptrP}p flagsname ~PresetptrP}l0 flagsname ~ClearptrP}qp flagsname QptrP}i flagsname ~QptrP}pskinName 8:/memory/dark/D-flipflop.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@jpriorityrotationVtriggerK flagsname 0ptrP}sskinName .:/output/led/LedOff.svgskinName 2:/output/led/WhiteLed.svgskinName .:/output/led/LedOff.svgskinName .:/output/led/RedLed.svgskinName .:/output/led/LedOff.svgskinName 2:/output/led/GreenLed.svgskinName .:/output/led/LedOff.svgskinName 0:/output/led/BlueLed.svgskinName .:/output/led/LedOff.svgskinName 4:/output/led/PurpleLed.svgskinName 4:/output/led//BlackLed.pngskinName ::/output/led//NavyBlueLed.pngskinName 4:/output/led//GreenLed.pngskinName 2:/output/led//TealLed.pngskinName 8:/output/led//DarkRedLed.pngskinName 8:/output/led//MagentaLed.pngskinName 6:/output/led//OrangeLed.pngskinName <:/output/led//LightGrayLed.pngskinName .:/output/led/LedOff.svgskinName 2:/output/led/RoyalLed.pngskinName ::/output/led/LimeGreenLed.pngskinName ::/output/led/AquaLightLed.pngskinName .:/output/led/RedLed.pngskinName 6:/output/led/HotPinkLed.pngskinName 4:/output/led/YellowLed.pngskinName 2:/output/led/WhiteLed.png color White label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@spriorityrotationtriggerK flagsname DataptrP} flagsname ClockptrP}p flagsname ~PresetptrP}p flagsname ~ClearptrP}0 flagsname QptrP}Ⲱ flagsname ~QptrP}pskinName 8:/memory/dark/D-flipflop.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@w@wpriorityrotationtriggerK flagsname ptrP}0skinName $:/input/clock0.svgskinName $:/input/clock1.svgfrequency&@ locked label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@jpriorityrotationVtriggerK flagsname 0ptrP}0skinName .:/output/led/LedOff.svgskinName 2:/output/led/WhiteLed.svgskinName .:/output/led/LedOff.svgskinName .:/output/led/RedLed.svgskinName .:/output/led/LedOff.svgskinName 2:/output/led/GreenLed.svgskinName .:/output/led/LedOff.svgskinName 0:/output/led/BlueLed.svgskinName .:/output/led/LedOff.svgskinName 4:/output/led/PurpleLed.svgskinName 4:/output/led//BlackLed.pngskinName ::/output/led//NavyBlueLed.pngskinName 4:/output/led//GreenLed.pngskinName 2:/output/led//TealLed.pngskinName 8:/output/led//DarkRedLed.pngskinName 8:/output/led//MagentaLed.pngskinName 6:/output/led//OrangeLed.pngskinName <:/output/led//LightGrayLed.pngskinName .:/output/led/LedOff.svgskinName 2:/output/led/RoyalLed.pngskinName ::/output/led/LimeGreenLed.pngskinName ::/output/led/AquaLightLed.pngskinName .:/output/led/RedLed.pngskinName 6:/output/led/HotPinkLed.pngskinName 4:/output/led/YellowLed.pngskinName 2:/output/led/WhiteLed.png color White label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@jpriorityrotationVtriggerK flagsname 0ptrP}skinName .:/output/led/LedOff.svgskinName 2:/output/led/WhiteLed.svgskinName .:/output/led/LedOff.svgskinName .:/output/led/RedLed.svgskinName .:/output/led/LedOff.svgskinName 2:/output/led/GreenLed.svgskinName .:/output/led/LedOff.svgskinName 0:/output/led/BlueLed.svgskinName .:/output/led/LedOff.svgskinName 4:/output/led/PurpleLed.svgskinName 4:/output/led//BlackLed.pngskinName ::/output/led//NavyBlueLed.pngskinName 4:/output/led//GreenLed.pngskinName 2:/output/led//TealLed.pngskinName 8:/output/led//DarkRedLed.pngskinName 8:/output/led//MagentaLed.pngskinName 6:/output/led//OrangeLed.pngskinName <:/output/led//LightGrayLed.pngskinName .:/output/led/LedOff.svgskinName 2:/output/led/RoyalLed.pngskinName ::/output/led/LimeGreenLed.pngskinName ::/output/led/AquaLightLed.pngskinName .:/output/led/RedLed.pngskinName 6:/output/led/HotPinkLed.pngskinName 4:/output/led/YellowLed.pngskinName 2:/output/led/WhiteLed.png color White label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@xpriorityrotationtriggerK flagsname ptrP} flagsname ptrP}skinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@jpriorityrotationVtriggerK flagsname 0ptrP}pskinName .:/output/led/LedOff.svgskinName 2:/output/led/WhiteLed.svgskinName .:/output/led/LedOff.svgskinName .:/output/led/RedLed.svgskinName .:/output/led/LedOff.svgskinName 2:/output/led/GreenLed.svgskinName .:/output/led/LedOff.svgskinName 0:/output/led/BlueLed.svgskinName .:/output/led/LedOff.svgskinName 4:/output/led/PurpleLed.svgskinName 4:/output/led//BlackLed.pngskinName ::/output/led//NavyBlueLed.pngskinName 4:/output/led//GreenLed.pngskinName 2:/output/led//TealLed.pngskinName 8:/output/led//DarkRedLed.pngskinName 8:/output/led//MagentaLed.pngskinName 6:/output/led//OrangeLed.pngskinName <:/output/led//LightGrayLed.pngskinName .:/output/led/LedOff.svgskinName 2:/output/led/RoyalLed.pngskinName ::/output/led/LimeGreenLed.pngskinName ::/output/led/AquaLightLed.pngskinName .:/output/led/RedLed.pngskinName 6:/output/led/HotPinkLed.pngskinName 4:/output/led/YellowLed.pngskinName 2:/output/led/WhiteLed.png color White label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@xpriorityrotationtriggerK flagsname ptrP}p flagsname ptrP}skinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@xpriorityrotationtriggerK flagsname ptrP} flagsname ptrP}skinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@spriorityrotationtriggerK flagsname DataptrP} flagsname ClockptrP}p flagsname ~PresetptrP}Ͱ flagsname ~ClearptrP} flagsname QptrP}Ӱ flagsname ~QptrP}pskinName 8:/memory/dark/D-flipflop.svgP}ⲰP}XP}₰P}90P}P}P}₰P}pP}P}⑰P}ӰP}sP}FP}0P}ⲰP}pP}0P}P}FP}P}P}pP}P}pP}P}pP}P}P}iP}P}ӰP}wiRedPanda-4.1.12/examples/sequential.panda000066400000000000000000001056061444020206400206160ustar00rootroot00000000000000WiRedPanda 4.1w@@ label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposP@}priorityrotationtriggerK flagsname ptr#` flagsname ptr#`skinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@b@`priorityrotationtriggerK flagsname Jptr# flagsname Clockptr#` flagsname Kptr#` flagsname ~Presetptr# ` flagsname ~Clearptr# flagsname Qptr# flagsname ~Qptr# skinName ::/memory/dark/JK-flipflop.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@H@`priorityrotationtriggerK flagsname Jptr#` flagsname Clockptr# flagsname Kptr# flagsname ~Presetptr#` flagsname ~Clearptr# flagsname Qptr# flagsname ~Qptr#skinName ::/memory/dark/JK-flipflop.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposH@`priorityrotationtriggerK flagsname JptrҜ flagsname Clockptr҇ flagsname Kptrҁ flagsname ~Presetptr҂ flagsname ~Clearptrң flagsname Qptr҇ flagsname ~QptrҊskinName ::/memory/dark/JK-flipflop.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposb@`priorityrotationtriggerK flagsname JptrҊ flagsname ClockptrҐ flagsname KptrҧP flagsname ~Presetptrҙ flagsname ~Clearptrҥ flagsname QptrҘP flagsname ~Qptr}PskinName ::/memory/dark/JK-flipflop.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposT@vpriorityrotationtriggerK flagsname ptrқP flagsname ptr~skinName :/basic/node.svg label SERIALIZEmaxInputSizemaxOutputSizeminInputSizeminOutputSizepos@t@xpriorityrotationtriggerK flagsname d0ptrҷ flagsname d1ptrҫ flagsname d2ptr#  flagsname d3ptr#q` flagsname Load -Shiftptr#U flagsname Clockptr#X flagsname Led 0ptr#[ flagsname Led 0ptr#ofileName serialize.panda label REGISTERmaxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@xpriorityrotationtriggerK flagsname ClockptrDwp flagsname ClockptrD^ flagsname Led 0ptrD0 flagsname Led 0ptrDf0 flagsname Led 0ptrDm flagsname Led 0ptrDlfileName register.panda label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@0@wpriorityrotationtriggerK flagsname ptr$ flagsname ptr$rskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@\@xpriorityrotationtriggerK flagsname ptr$o flagsname ptr$uskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@j@ypriorityrotationtriggerK flagsname ptr$i flagsname ptr$PskinName :/basic/node.svg label Load_ShiftmaxInputSizemaxOutputSizeminInputSizeminOutputSizepos@x@npriorityrotationVtriggerK flagsname 0ptr$qPskinName .:/output/led/LedOff.svgskinName 2:/output/led/WhiteLed.svgskinName .:/output/led/LedOff.svgskinName .:/output/led/RedLed.svgskinName .:/output/led/LedOff.svgskinName 2:/output/led/GreenLed.svgskinName .:/output/led/LedOff.svgskinName 0:/output/led/BlueLed.svgskinName .:/output/led/LedOff.svgskinName 4:/output/led/PurpleLed.svgskinName 4:/output/led//BlackLed.pngskinName ::/output/led//NavyBlueLed.pngskinName 4:/output/led//GreenLed.pngskinName 2:/output/led//TealLed.pngskinName 8:/output/led//DarkRedLed.pngskinName 8:/output/led//MagentaLed.pngskinName 6:/output/led//OrangeLed.pngskinName <:/output/led//LightGrayLed.pngskinName .:/output/led/LedOff.svgskinName 2:/output/led/RoyalLed.pngskinName ::/output/led/LimeGreenLed.pngskinName ::/output/led/AquaLightLed.pngskinName .:/output/led/RedLed.pngskinName 6:/output/led/HotPinkLed.pngskinName 4:/output/led/YellowLed.pngskinName 2:/output/led/WhiteLed.png color Red label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@r@priorityrotationtriggerK flagsname ptr$ flagsname ptr$skinName :/basic/node.svg label l1maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@ppriorityrotationVtriggerK flagsname 0ptr$skinName .:/output/led/LedOff.svgskinName 2:/output/led/WhiteLed.svgskinName .:/output/led/LedOff.svgskinName .:/output/led/RedLed.svgskinName .:/output/led/LedOff.svgskinName 2:/output/led/GreenLed.svgskinName .:/output/led/LedOff.svgskinName 0:/output/led/BlueLed.svgskinName .:/output/led/LedOff.svgskinName 4:/output/led/PurpleLed.svgskinName 4:/output/led//BlackLed.pngskinName ::/output/led//NavyBlueLed.pngskinName 4:/output/led//GreenLed.pngskinName 2:/output/led//TealLed.pngskinName 8:/output/led//DarkRedLed.pngskinName 8:/output/led//MagentaLed.pngskinName 6:/output/led//OrangeLed.pngskinName <:/output/led//LightGrayLed.pngskinName .:/output/led/LedOff.svgskinName 2:/output/led/RoyalLed.pngskinName ::/output/led/LimeGreenLed.pngskinName ::/output/led/AquaLightLed.pngskinName .:/output/led/RedLed.pngskinName 6:/output/led/HotPinkLed.pngskinName 4:/output/led/YellowLed.pngskinName 2:/output/led/WhiteLed.png color White label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@zpriorityrotationtriggerK flagsname ptr$ flagsname ptr$ flagsname ptr$PskinName :/basic/and.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@y@ypriorityrotationtriggerK flagsname ptr$ flagsname ptr$skinName :/basic/not.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@}@}priorityrotationtriggerK flagsname ptr$ flagsname ptr$PskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@x@priorityrotationtriggerK flagsname ptr$ʐ flagsname ptr$skinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@zpriorityrotationtriggerK flagsname ptr$ flagsname ptr$ flagsname ptr$skinName :/basic/and.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@ypriorityrotationtriggerK flagsname ptr$ flagsname ptr$P flagsname ptr$PskinName :/basic/and.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@xpriorityrotationtriggerK flagsname ptr$P flagsname ptr$ flagsname ptr$skinName :/basic/and.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@wpriorityrotationtriggerK flagsname ptr$ flagsname ptr$ flagsname ptr$skinName :/basic/and.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@priorityrotationtriggerK flagsname ptr#J flagsname ptr#DskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@priorityrotationtriggerK flagsname ptr#C flagsname ptr#R0skinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@priorityrotationtriggerK flagsname ptr#0 flagsname ptr#skinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@priorityrotationtriggerK flagsname ptr#+0 flagsname ptr#)skinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposi@RpriorityrotationtriggerK flagsname ptr#.0 flagsname ptr#2skinName :/basic/node.svg label RESETmaxInputSizemaxOutputSizeminInputSizeminOutputSizeposw@npriorityrotationtriggerK flagsname ptr$ ,skinName *:/input/buttonOff.svgskinName (:/input/buttonOn.svg locked label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposp@npriorityrotationtriggerK flagsname ptr$ M flagsname ptr$ CskinName :/basic/not.svg label FAST CLKmaxInputSizemaxOutputSizeminInputSizeminOutputSizepos`@zpriorityrotationtriggerK flagsname ptr$ :0skinName $:/input/clock0.svgskinName $:/input/clock1.svgfrequency&@0 locked label l3maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@ppriorityrotationVtriggerK flagsname 0ptr$ +skinName .:/output/led/LedOff.svgskinName 2:/output/led/WhiteLed.svgskinName .:/output/led/LedOff.svgskinName .:/output/led/RedLed.svgskinName .:/output/led/LedOff.svgskinName 2:/output/led/GreenLed.svgskinName .:/output/led/LedOff.svgskinName 0:/output/led/BlueLed.svgskinName .:/output/led/LedOff.svgskinName 4:/output/led/PurpleLed.svgskinName 4:/output/led//BlackLed.pngskinName ::/output/led//NavyBlueLed.pngskinName 4:/output/led//GreenLed.pngskinName 2:/output/led//TealLed.pngskinName 8:/output/led//DarkRedLed.pngskinName 8:/output/led//MagentaLed.pngskinName 6:/output/led//OrangeLed.pngskinName <:/output/led//LightGrayLed.pngskinName .:/output/led/LedOff.svgskinName 2:/output/led/RoyalLed.pngskinName ::/output/led/LimeGreenLed.pngskinName ::/output/led/AquaLightLed.pngskinName .:/output/led/RedLed.pngskinName 6:/output/led/HotPinkLed.pngskinName 4:/output/led/YellowLed.pngskinName 2:/output/led/WhiteLed.png color White label SLOW CLKmaxInputSizemaxOutputSizeminInputSizeminOutputSizeposj@priorityrotationtriggerK flagsname ptr$ skinName $:/input/clock0.svgskinName $:/input/clock1.svgfrequency&@ locked label l2maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@ppriorityrotationVtriggerK flagsname 0ptr$ AskinName .:/output/led/LedOff.svgskinName 2:/output/led/WhiteLed.svgskinName .:/output/led/LedOff.svgskinName .:/output/led/RedLed.svgskinName .:/output/led/LedOff.svgskinName 2:/output/led/GreenLed.svgskinName .:/output/led/LedOff.svgskinName 0:/output/led/BlueLed.svgskinName .:/output/led/LedOff.svgskinName 4:/output/led/PurpleLed.svgskinName 4:/output/led//BlackLed.pngskinName ::/output/led//NavyBlueLed.pngskinName 4:/output/led//GreenLed.pngskinName 2:/output/led//TealLed.pngskinName 8:/output/led//DarkRedLed.pngskinName 8:/output/led//MagentaLed.pngskinName 6:/output/led//OrangeLed.pngskinName <:/output/led//LightGrayLed.pngskinName .:/output/led/LedOff.svgskinName 2:/output/led/RoyalLed.pngskinName ::/output/led/LimeGreenLed.pngskinName ::/output/led/AquaLightLed.pngskinName .:/output/led/RedLed.pngskinName 6:/output/led/HotPinkLed.pngskinName 4:/output/led/YellowLed.pngskinName 2:/output/led/WhiteLed.png color White label l0maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@ppriorityrotationVtriggerK flagsname 0ptr$ _skinName .:/output/led/LedOff.svgskinName 2:/output/led/WhiteLed.svgskinName .:/output/led/LedOff.svgskinName .:/output/led/RedLed.svgskinName .:/output/led/LedOff.svgskinName 2:/output/led/GreenLed.svgskinName .:/output/led/LedOff.svgskinName 0:/output/led/BlueLed.svgskinName .:/output/led/LedOff.svgskinName 4:/output/led/PurpleLed.svgskinName 4:/output/led//BlackLed.pngskinName ::/output/led//NavyBlueLed.pngskinName 4:/output/led//GreenLed.pngskinName 2:/output/led//TealLed.pngskinName 8:/output/led//DarkRedLed.pngskinName 8:/output/led//MagentaLed.pngskinName 6:/output/led//OrangeLed.pngskinName <:/output/led//LightGrayLed.pngskinName .:/output/led/LedOff.svgskinName 2:/output/led/RoyalLed.pngskinName ::/output/led/LimeGreenLed.pngskinName ::/output/led/AquaLightLed.pngskinName .:/output/led/RedLed.pngskinName 6:/output/led/HotPinkLed.pngskinName 4:/output/led/YellowLed.pngskinName 2:/output/led/WhiteLed.png color White label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@b@RpriorityrotationtriggerK flagsname ptr$ v flagsname ptr$ m0skinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@H@RpriorityrotationtriggerK flagsname ptr$ e flagsname ptr$ \skinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposH@RpriorityrotationtriggerK flagsname ptr$ `p flagsname ptr$ g0skinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposb@RpriorityrotationtriggerK flagsname ptr$ fp flagsname ptr$ zskinName :/basic/node.svg$$ +$#U#R0#0##`#D#C~ҷ$rҫ$$qP$u# Dl$#[Dwp$$ʐ$ :0#X# $i$ Ґ##+0#$#$oҊ$҇#$P$$ ,$ M#o$$$#)$ҘP҇Df0$PDm$D0$#D$$ $$#J$$$ :0#`$PD^#`$$P#q`#R0$P$$ _$P$ A}PқP$ C#.0#2$ fp$ m0# `$ \$ v$ \#`$ g0$ e$ g0҂$ z$ `p$ zҙwiRedPanda-4.1.12/examples/serialize.panda000066400000000000000000000700501444020206400204250ustar00rootroot00000000000000WiRedPanda 4.1{X@@X label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposu@ypriorityrotationtriggerK flagsname ptr flagsname ptrEskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposl@ypriorityrotationtriggerK flagsname ptr< flagsname ptrHskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos\@ypriorityrotationtriggerK flagsname ptr/ flagsname ptr0skinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@ypriorityrotationtriggerK flagsname ptr# flagsname ptrGskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@`priorityrotation@ftriggerK flagsname ptr  flagsname ptr!skinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@L@0priorityrotation@VtriggerK flagsname ptr5 flagsname ptrYskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposL@0priorityrotation@VtriggerK flagsname ptrU@ flagsname ptrVskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepose@0priorityrotation@VtriggerK flagsname ptrw@ flagsname ptroskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@\@Ppriorityrotation@VtriggerK flagsname ptrʼn@ flagsname ptrsskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos0@Ppriorityrotation@VtriggerK flagsname ptrű flagsname ptrŢskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos`@Ppriorityrotation@VtriggerK flagsname ptrŲ flagsname ptrŚskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposn@Ppriorityrotation@VtriggerK flagsname ptrŨ flagsname ptrŷskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@u@upriorityrotation@VtriggerK flagsname ptrū flagsname ptrŽskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@tTpriorityrotationtriggerK flagsname ptrŢ flagsname ptrůskinName :/basic/node.svg label ClockmaxInputSizemaxOutputSizeminInputSizeminOutputSizepos{@xpriorityrotationtriggerKC flagsname ptrskinName *:/input/switchOff.svgskinName (:/input/switchOn.svgisOn locked label Load -ShiftmaxInputSizemaxOutputSizeminInputSizeminOutputSizepos@XXpriorityrotationtriggerKX flagsname ptr@skinName *:/input/switchOff.svgskinName (:/input/switchOn.svgisOn locked label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@l@upriorityrotationftriggerK flagsname 0ptrskinName .:/output/led/LedOff.svgskinName 2:/output/led/WhiteLed.svgskinName .:/output/led/LedOff.svgskinName .:/output/led/RedLed.svgskinName .:/output/led/LedOff.svgskinName 2:/output/led/GreenLed.svgskinName .:/output/led/LedOff.svgskinName 0:/output/led/BlueLed.svgskinName .:/output/led/LedOff.svgskinName 4:/output/led/PurpleLed.svgskinName 4:/output/led//BlackLed.pngskinName ::/output/led//NavyBlueLed.pngskinName 4:/output/led//GreenLed.pngskinName 2:/output/led//TealLed.pngskinName 8:/output/led//DarkRedLed.pngskinName 8:/output/led//MagentaLed.pngskinName 6:/output/led//OrangeLed.pngskinName <:/output/led//LightGrayLed.pngskinName .:/output/led/LedOff.svgskinName 2:/output/led/RoyalLed.pngskinName ::/output/led/LimeGreenLed.pngskinName ::/output/led/AquaLightLed.pngskinName .:/output/led/RedLed.pngskinName 6:/output/led/HotPinkLed.pngskinName 4:/output/led/YellowLed.pngskinName 2:/output/led/WhiteLed.png color Red label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@`@ppriorityrotationtriggerK flagsname ptr@ flagsname ptr flagsname ptr]skinName :/basic/and.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@l@ppriorityrotationtriggerK flagsname 0ptrp3skinName .:/output/led/LedOff.svgskinName 2:/output/led/WhiteLed.svgskinName .:/output/led/LedOff.svgskinName .:/output/led/RedLed.svgskinName .:/output/led/LedOff.svgskinName 2:/output/led/GreenLed.svgskinName .:/output/led/LedOff.svgskinName 0:/output/led/BlueLed.svgskinName .:/output/led/LedOff.svgskinName 4:/output/led/PurpleLed.svgskinName 4:/output/led//BlackLed.pngskinName ::/output/led//NavyBlueLed.pngskinName 4:/output/led//GreenLed.pngskinName 2:/output/led//TealLed.pngskinName 8:/output/led//DarkRedLed.pngskinName 8:/output/led//MagentaLed.pngskinName 6:/output/led//OrangeLed.pngskinName <:/output/led//LightGrayLed.pngskinName .:/output/led/LedOff.svgskinName 2:/output/led/RoyalLed.pngskinName ::/output/led/LimeGreenLed.pngskinName ::/output/led/AquaLightLed.pngskinName .:/output/led/RedLed.pngskinName 6:/output/led/HotPinkLed.pngskinName 4:/output/led/YellowLed.pngskinName 2:/output/led/WhiteLed.png color Green label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@lpriorityrotation@VtriggerK flagsname ptrp? flagsname ptrVskinName :/basic/not.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposD@`priorityrotation@VtriggerK flagsname ptrV@ flagsname ptrV flagsname ptrWskinName :/basic/and.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@hpriorityrotation@VtriggerK flagsname ptr flagsname ptr flagsname ptrpskinName :/basic/or.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@@`priorityrotation@VtriggerK flagsname ptrb^P flagsname ptrp6 flagsname ptr#`skinName :/basic/and.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@@rpriorityrotationtriggerK flagsname Dataptr#  flagsname Clockptr# flagsname ~Presetptr# flagsname ~Clearptr# flagsname Qptr# flagsname ~Qptr#skinName 8:/memory/dark/D-flipflop.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposT@`priorityrotation@VtriggerK flagsname ptr# flagsname ptr# flagsname ptr#skinName :/basic/and.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos\@hpriorityrotation@VtriggerK flagsname ptr#` flagsname ptr#` flagsname ptr#skinName :/basic/or.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposT@rpriorityrotationtriggerK flagsname Dataptr# flagsname Clockptr# flagsname ~Presetptr#` flagsname ~Clearptr#  flagsname Qptr# flagsname ~Qptr#`skinName 8:/memory/dark/D-flipflop.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposc@`priorityrotation@VtriggerK flagsname ptr#  flagsname ptr# flagsname ptr#`skinName :/basic/and.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposh@rpriorityrotationtriggerK flagsname Dataptr# flagsname Clockptr#٠ flagsname ~Presetptr# flagsname ~Clearptr#Р flagsname Qptr#  flagsname ~Qptr#skinName 8:/memory/dark/D-flipflop.svg label d0maxInputSizemaxOutputSizeminInputSizeminOutputSizeposwXpriorityrotationtriggerK flagsname ptr# skinName *:/input/switchOff.svgskinName (:/input/switchOn.svgisOn locked label d1maxInputSizemaxOutputSizeminInputSizeminOutputSizeposmXpriorityrotationtriggerK flagsname ptr#skinName *:/input/switchOff.svgskinName (:/input/switchOn.svgisOn locked label d2maxInputSizemaxOutputSizeminInputSizeminOutputSizepos^XpriorityrotationtriggerK flagsname ptr#skinName *:/input/switchOff.svgskinName (:/input/switchOn.svgisOn locked label d3maxInputSizemaxOutputSizeminInputSizeminOutputSizepos XpriorityrotationtriggerK flagsname ptr#skinName *:/input/switchOff.svgskinName (:/input/switchOn.svgisOn locked label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposp@`priorityrotation@VtriggerK flagsname ptr#` flagsname ptr# flagsname ptr#skinName :/basic/and.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposs@rpriorityrotationtriggerK flagsname Dataptr#3 flagsname Clockptr#  flagsname ~Presetptr#8 flagsname ~Clearptr#> flagsname Qptr# flagsname ~Qptr#%`skinName 8:/memory/dark/D-flipflop.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposh@`priorityrotation@VtriggerK flagsname ptr# flagsname ptr#9 flagsname ptr#`skinName :/basic/and.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizeposl@hpriorityrotation@VtriggerK flagsname ptr## flagsname ptr#$ flagsname ptr#/ skinName :/basic/or.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@lTpriorityrotationtriggerK flagsname ptr# flagsname ptr#n skinName :/basic/node.svgE# H#٠0#G#!w@!U@!5Yb^PV#o#s@ŢV@Ś# ŷ#`ůū@#Vʼn@]p3#@ #p6###VVűVŲVŨ#/# ##`Wp# ###`#`##`<##9# #3#/ ####`####$Ž#n Ţ#n p?wiRedPanda-4.1.12/examples/tflipflop.panda000066400000000000000000000315101444020206400204330ustar00rootroot00000000000000WiRedPanda 4.1@x@h@@ label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@wpriorityrotation@ftriggerK flagsname ptroP flagsname ptroskinName :/basic/node.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@wpriorityrotation@ftriggerK flagsname ptro flagsname ptroPskinName :/basic/node.svg label TmaxInputSizemaxOutputSizeminInputSizeminOutputSizepos@x@ypriorityrotationtriggerK flagsname ptroskinName *:/input/buttonOff.svgskinName (:/input/buttonOn.svg locked label CmaxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@priorityrotationtriggerK flagsname ptroԐskinName $:/input/clock0.svgskinName $:/input/clock1.svgfrequency&? locked label DFLIPFLOPmaxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@}priorityrotationtriggerK flagsname -PresetptroP flagsname Dptro flagsname CLKptrp flagsname -Clearptrp flagsname Led 0ptroP flagsname Led 0ptrofileName dflipflop.panda label QmaxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@zpriorityrotationVtriggerK flagsname 0ptr0skinName .:/output/led/LedOff.svgskinName 2:/output/led/WhiteLed.svgskinName .:/output/led/LedOff.svgskinName .:/output/led/RedLed.svgskinName .:/output/led/LedOff.svgskinName 2:/output/led/GreenLed.svgskinName .:/output/led/LedOff.svgskinName 0:/output/led/BlueLed.svgskinName .:/output/led/LedOff.svgskinName 4:/output/led/PurpleLed.svgskinName 4:/output/led//BlackLed.pngskinName ::/output/led//NavyBlueLed.pngskinName 4:/output/led//GreenLed.pngskinName 2:/output/led//TealLed.pngskinName 8:/output/led//DarkRedLed.pngskinName 8:/output/led//MagentaLed.pngskinName 6:/output/led//OrangeLed.pngskinName <:/output/led//LightGrayLed.pngskinName .:/output/led/LedOff.svgskinName 2:/output/led/RoyalLed.pngskinName ::/output/led/LimeGreenLed.pngskinName ::/output/led/AquaLightLed.pngskinName .:/output/led/RedLed.pngskinName 6:/output/led/HotPinkLed.pngskinName 4:/output/led/YellowLed.pngskinName 2:/output/led/WhiteLed.png color White label QmaxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@priorityrotation@VtriggerK flagsname 0ptr5pskinName .:/output/led/LedOff.svgskinName 2:/output/led/WhiteLed.svgskinName .:/output/led/LedOff.svgskinName .:/output/led/RedLed.svgskinName .:/output/led/LedOff.svgskinName 2:/output/led/GreenLed.svgskinName .:/output/led/LedOff.svgskinName 0:/output/led/BlueLed.svgskinName .:/output/led/LedOff.svgskinName 4:/output/led/PurpleLed.svgskinName 4:/output/led//BlackLed.pngskinName ::/output/led//NavyBlueLed.pngskinName 4:/output/led//GreenLed.pngskinName 2:/output/led//TealLed.pngskinName 8:/output/led//DarkRedLed.pngskinName 8:/output/led//MagentaLed.pngskinName 6:/output/led//OrangeLed.pngskinName <:/output/led//LightGrayLed.pngskinName .:/output/led/LedOff.svgskinName 2:/output/led/RoyalLed.pngskinName ::/output/led/LimeGreenLed.pngskinName ::/output/led/AquaLightLed.pngskinName .:/output/led/RedLed.pngskinName 6:/output/led/HotPinkLed.pngskinName 4:/output/led/YellowLed.pngskinName 2:/output/led/WhiteLed.png color White label -PresetmaxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@hpriorityrotationtriggerK flagsname ptrK0skinName *:/input/switchOff.svgskinName (:/input/switchOn.svgisOn locked label -ClearmaxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@@priorityrotationtriggerK flagsname ptrkpskinName *:/input/switchOff.svgskinName (:/input/switchOn.svgisOn locked label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@|priorityrotationtriggerK flagsname ptrQ flagsname ptrX flagsname ptrFskinName :/basic/or.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@ypriorityrotationtriggerK flagsname ptrd flagsname ptrOskinName :/basic/not.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@ypriorityrotationtriggerK flagsname ptr? flagsname ptrB0 flagsname ptrHskinName :/basic/and.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@@}priorityrotationtriggerK flagsname ptru0 flagsname ptrr0 flagsname ptr|skinName :/basic/and.svg label maxInputSizemaxOutputSizeminInputSizeminOutputSizepos@|@}priorityrotationtriggerK flagsname ptrp flagsname ptrp.skinName :/basic/node.svgoooP?oԐpoP0o5pK0oPkppOB0odFoHQ|XoPoPor0opp.u0wiRedPanda-4.1.12/installer/000077500000000000000000000000001444020206400156065ustar00rootroot00000000000000wiRedPanda-4.1.12/installer/Linux/000077500000000000000000000000001444020206400167055ustar00rootroot00000000000000wiRedPanda-4.1.12/installer/Linux/.qmake.stash000066400000000000000000000007171444020206400211320ustar00rootroot00000000000000QMAKE_DEFAULT_INCDIRS = \ /usr/include/c++/4.8 \ /usr/include/x86_64-linux-gnu/c++/4.8 \ /usr/include/c++/4.8/backward \ /usr/lib/gcc/x86_64-linux-gnu/4.8/include \ /usr/local/include \ /usr/lib/gcc/x86_64-linux-gnu/4.8/include-fixed \ /usr/include/x86_64-linux-gnu \ /usr/include QMAKE_DEFAULT_LIBDIRS = \ /usr/lib/gcc/x86_64-linux-gnu/4.8 \ /usr/lib/x86_64-linux-gnu \ /usr/lib \ /lib/x86_64-linux-gnu \ /lib wiRedPanda-4.1.12/installer/Linux/deploy000077500000000000000000000133531444020206400201340ustar00rootroot00000000000000#!/bin/bash set -e # set -v dirname=`dirname "$0"` tmp="${dirname#?}" if [ "${dirname%$tmp}" != "/" ]; then dirname=$PWD/$dirname fi PROJECTPATH=$(readlink -e "${dirname}/../../") echo PROJECTPATH $PROJECTPATH VERSION=$(cat ${PROJECTPATH}/includes.pri | grep "VERSION = " | awk '{split($0,a,"="); gsub (" ", "", a[2]); gsub ("-alpha", "", a[2]); print a[2] }') FORMATEDVERSION=$(echo $VERSION | awk '{gsub ("\\.", "_", $0); print $0}') echo VERSION $VERSION PKGNAMEDIR="wpanda-$VERSION" DEBPKGROOT="$PROJECTPATH/Deploy/$PKGNAMEDIR" DEBPKGFILES="$PROJECTPATH/Deploy/$PKGNAMEDIR/files" BUILDDIR=$PROJECTPATH/build echo DEBPKGFILES $DEBPKGFILES PTBNAME="WiredPanda_${FORMATEDVERSION}_Linux_Portable_x64" PTBDIR="$PROJECTPATH/Deploy/$PTBNAME"; echo PTBDIR $PTBDIR DEBPKGNAME="$PROJECTPATH/Deploy/WiredPanda_${FORMATEDVERSION}_Ubuntu_Installer_x64.deb"; echo DEBPKGNAME $DEBPKGNAME echo "CLEANING OLD FILES" rm -rf "${PROJECTPATH}/Deploy/" QT_PATH="/opt/Qt/5.8/gcc_64/"; QT_LIBRARY_PATH="$QT_PATH/lib" QT_PLATFORMS_PATH="$QT_PATH/plugins/platforms/" export PATH=$QT_PATH/bin/:$PATH export LD_LIBRARY_PATH=$QT_PATH/lib:$LD_LIBRARY_PATH WPANDA_BIN="$BUILDDIR/wpanda"; rm -rf $BUILDDIR mkdir -p $BUILDDIR pushd $BUILDDIR qmake -r config+=release ../app; echo "Building WiRedPanda on $BUILDDIR ..." make clean; make -j4; ldd $WPANDA_BIN popd; if [ ! -e ${WPANDA_BIN} ]; then echo "ERROR: ${WPANDA_BIN} not found!"; exit 1 fi DATADIR="${PTBDIR}/files"; CURRENTDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"; echo "Generating build tree for ${PKGNAMEDIR}.deb"; echo "Project path is ${PROJECTPATH}"; mkdir -p ${DEBPKGROOT}; pushd ${DEBPKGROOT} dh_make -y\ --native \ --single \ --email lucaslellis777@gmail.com popd echo \ "Source: wpanda Section: utils Priority: standard Maintainer: Lucas Lellis Build-Depends: debhelper (>= 9) Standards-Version: 3.9.5 Homepage: https://gibis-unifesp.github.io/wiRedPanda Vcs-Git: https://github.com/gibis-unifesp/wiredpanda Package: wpanda-${VERSION} Architecture: amd64 Depends: \${shlibs:Depends}, \${misc:Depends} Description: Learn about logic circuits and simulate them in an easy and friendly way. WiRedPanda is a free software designed to help students to learn about logic circuits. It was developed by the students of the Federal University of São Paulo." > $DEBPKGROOT/debian/control echo \ "#!/bin/sh set -e case "\$1" in configure) desktop-file-install /usr/share/applications/wpanda.desktop xdg-mime install --mode system /usr/share/xml/misc/wpanda-mime.xml xdg-mime default /usr/share/applications/wpanda.desktop application/x-wpanda xdg-icon-resource install --context mimetypes --size 128 /usr/share/icons/hicolor/128x128/apps/wpanda-file.png application-x-wpanda xdg-icon-resource install --context mimetypes --size 64 /usr/share/icons/hicolor/64x64/apps/wpanda-file.png application-x-wpanda xdg-icon-resource install --context mimetypes --size 48 /usr/share/icons/hicolor/48x48/apps/wpanda-file.png application-x-wpanda xdg-icon-resource install --context mimetypes --size 32 /usr/share/icons/hicolor/32x32/apps/wpanda-file.png application-x-wpanda xdg-icon-resource install --context mimetypes --size 26 /usr/share/icons/hicolor/26x26/apps/wpanda-file.png application-x-wpanda ;; esac" > "${DEBPKGROOT}/debian/postinst" echo "files/usr/* usr" > ${DEBPKGROOT}/debian/install echo -e "override_dh_shlibdeps:\n\tdh_shlibdeps --dpkg-shlibdeps-params=--ignore-missing-info\n" >> ${DEBPKGROOT}/debian/rules echo -e "override_dh_clean:\n\t" >> ${DEBPKGROOT}/debian/rules mkdir -p ${DEBPKGFILES}/usr/bin; mkdir -p ${DEBPKGFILES}/usr/lib/wpanda; mkdir -p ${DEBPKGFILES}/usr/share/applications; mkdir -p ${DEBPKGFILES}/usr/share/xml/misc; mkdir -p ${DEBPKGFILES}/usr/share/doc; cp ${WPANDA_BIN} ${PROJECTPATH}/app/resources/wpanda.sh ${DEBPKGFILES}/usr/bin/; cp ${PROJECTPATH}/app/resources/wpanda.desktop ${DEBPKGFILES}/usr/share/applications/; cp ${PROJECTPATH}/app/resources/wpanda-mime.xml ${DEBPKGFILES}/usr/share/xml/misc; chmod +x ${DEBPKGFILES}/usr/bin/* for SIZE in 26x26 32x32 48x48 64x64 128x128; do ICONDIR_SZ=${DEBPKGFILES}/usr/share/icons/hicolor/${SIZE}/apps/; mkdir -p ${ICONDIR_SZ}; cp ${PROJECTPATH}/app/resources/icons/${SIZE}/* ${ICONDIR_SZ}; done; for lib in libQt5PrintSupport.so.5 libQt5XcbQpa.so.5 libQt5DBus.so.5\ libQt5Widgets.so.5 libQt5Gui.so.5 \ libQt5Core.so.5 libicui18n.so.56 libicuuc.so.56 libicudata.so.56; do echo "Copying $lib"; if [ -f ${QT_LIBRARY_PATH}/$lib ]; then cp ${QT_LIBRARY_PATH}/$lib ${DEBPKGFILES}/usr/lib/wpanda; else echo "ERROR: $lib not found!"; locate "$lib"; exit 1; fi; done; cp ${QT_PLATFORMS_PATH}/libqxcb.so ${DEBPKGFILES}/usr/lib/wpanda pushd $DEBPKGROOT dpkg-buildpackage -d -uc -us #tree . popd echo "GENERATING PORTABLE PACKAGE" mkdir -p $DATADIR cp ${DEBPKGFILES}/usr/bin/wpanda $DATADIR cp ${CURRENTDIR}/portable_files/install.sh ${DATADIR} cp ${PROJECTPATH}/app/resources/wpanda.svg ${DATADIR} cp ${PROJECTPATH}/app/resources/wpanda-mime.xml ${DATADIR} cp ${CURRENTDIR}/portable_files/shared_qt.sh ${DATADIR}/wpanda.sh cp ${CURRENTDIR}/portable_files/wpanda.desktop ${PTBDIR}/wpanda.desktop for SIZE in 26x26 32x32 48x48 64x64 128x128; do ICONDIR_SZ=${DATADIR}/icons/${SIZE}; mkdir -p ${ICONDIR_SZ}; cp ${PROJECTPATH}/app/resources/icons/${SIZE}/* ${ICONDIR_SZ}; done; chmod +x ${DATADIR}/wpanda chmod +x ${DATADIR}/wpanda.sh chmod +x ${DATADIR}/install.sh chmod +x ${PTBDIR}/wpanda.desktop cp ${DEBPKGFILES}/usr/lib/wpanda/* $DATADIR; pushd $PROJECTPATH/Deploy echo "Generating ${PTBNAME}.tar.xz" tar -cvJf ${PTBNAME}.tar.xz $PTBNAME echo "Renaming to ${DEBPKGNAME}" mv wpanda*.deb $DEBPKGNAME mkdir -p /tmp/packages cp $PTBNAME.tar.xz /tmp/packages cp $DEBPKGNAME /tmp/packages popd wiRedPanda-4.1.12/installer/Linux/portable_files/000077500000000000000000000000001444020206400216775ustar00rootroot00000000000000wiRedPanda-4.1.12/installer/Linux/portable_files/install.sh000066400000000000000000000035161444020206400237060ustar00rootroot00000000000000#!/bin/sh # Copyright 2015 - 2022, GIBIS-Unifesp and the WiRedPanda contributors # SPDX-License-Identifier: GPL-3.0-or-later set -e set -v if [[ $(id -u) -ne 0 ]] ; then echo "Please run as root" ; exit 1 ; fi INSTALL_DIR="/opt/wpanda/" rm -rf $INSTALL_DIR install -d $INSTALL_DIR install -d $INSTALL_DIR/icons/26x26 $INSTALL_DIR/icons/32x32 $INSTALL_DIR/icons/48x48 install -d $INSTALL_DIR/icons/64x64 $INSTALL_DIR/icons/128x128 install *.so* $INSTALL_DIR install wpanda* $INSTALL_DIR install icons/26x26/* $INSTALL_DIR/icons/26x26 install icons/32x32/* $INSTALL_DIR/icons/32x32 install icons/48x48/* $INSTALL_DIR/icons/48x48 install icons/64x64/* $INSTALL_DIR/icons/64x64 install icons/128x128/* $INSTALL_DIR/icons/128x128 echo \ "[Desktop Entry] GenericName=WiRedPanda Name=WiRedPanda Comment=Learn about logic circuits in an easy and friendly way. Exec=/bin/sh $INSTALL_DIR/wpanda.sh %f Icon=$INSTALL_DIR/wpanda.svg Type=Application Categories=Utility; Terminal=false StartupNotify=false MimeType=application/x-wpanda;" > $INSTALL_DIR/wpanda.desktop desktop-file-install $INSTALL_DIR/wpanda.desktop xdg-mime install --mode system $INSTALL_DIR/wpanda-mime.xml xdg-mime default /usr/share/applications/wpanda.desktop application/x-wpanda xdg-icon-resource install --context mimetypes --size 128 $INSTALL_DIR/icons/128x128/wpanda-file.png application-x-wpanda xdg-icon-resource install --context mimetypes --size 64 $INSTALL_DIR/icons/64x64/wpanda-file.png application-x-wpanda xdg-icon-resource install --context mimetypes --size 48 $INSTALL_DIR/icons/48x48/wpanda-file.png application-x-wpanda xdg-icon-resource install --context mimetypes --size 32 $INSTALL_DIR/icons/32x32/wpanda-file.png application-x-wpanda xdg-icon-resource install --context mimetypes --size 26 $INSTALL_DIR/icons/26x26/wpanda-file.png application-x-wpanda wiRedPanda-4.1.12/installer/Linux/portable_files/shared_qt.sh000066400000000000000000000007031444020206400242050ustar00rootroot00000000000000#!/bin/sh # Copyright 2015 - 2022, GIBIS-Unifesp and the WiRedPanda contributors # SPDX-License-Identifier: GPL-3.0-or-later appname=`basename "$0" | sed s,\.sh$,,` dirname=`dirname "$0"` tmp="${dirname#?}" if [ "${dirname%$tmp}" != "/" ]; then dirname=$PWD/$dirname fi export LD_LIBRARY_PATH=$dirname export QT_QPA_PLATFORM_PLUGIN_PATH=$dirname sed -i "s,Icon=.*,Icon=${dirname}/wpanda.svg,g" "$dirname/../wpanda.desktop" "$dirname/$appname" "$@" wiRedPanda-4.1.12/installer/Linux/portable_files/wpanda.desktop000066400000000000000000000003521444020206400245440ustar00rootroot00000000000000[Desktop Entry] GenericName=WiRedPanda Name=WiRedPanda Comment=Learn about logic circuits in an easy and friendly way. Type=Application Icon=wpanda Categories=Science; Terminal=false StartupNotify=false MimeType=application/x-wpanda; wiRedPanda-4.1.12/installer/Linux/wpanda.dbp000066400000000000000000001165211444020206400206540ustar00rootroot00000000000000[DEBREATE-0.7.13] <> Package: wpanda Version: 2.3-beta Maintainer: Lucas Santana Lellis Section: utils Source: https://github.com/GIBIS-UNIFESP/wiRedPanda/archive/v2.3-beta.tar.gz Homepage: gibis-unifesp.github.io/wiRedPanda Architecture: amd64 Priority: standard Description: Learn about logic circuits and simulate them in an easy and friendly way. WiRedPanda is a free software designed to help students to learn about logic circuits. It was developed by the students of the Federal University of São Paulo. <> <> 1 /tmp/wpanda-build/wpanda* -> wpanda -> /usr/local/bin /home/lellis/projetos/wiRedPanda/app/resources/wpanda.sh* -> wpanda.sh -> /usr/local/bin /home/lellis/projetos/wiRedPanda/app/resources/wpanda.desktop -> wpanda.desktop -> /usr/local/share/applications /home/lellis/projetos/wiRedPanda/app/resources/wpanda-mime.xml -> wpanda-mime.xml -> /usr/local/share/xml/misc /home/lellis/projetos/wiRedPanda/app/resources/icons/128x128/wpanda-file.png -> wpanda-file.png -> /usr/local/share/icons/hicolor/128x128/apps /home/lellis/projetos/wiRedPanda/app/resources/icons/64x64/wpanda-file.png -> wpanda-file.png -> /usr/local/share/icons/hicolor/64x64/apps /home/lellis/projetos/wiRedPanda/app/resources/icons/48x48/wpanda-file.png -> wpanda-file.png -> /usr/local/share/icons/hicolor/48x48/apps /home/lellis/projetos/wiRedPanda/app/resources/icons/32x32/wpanda-file.png -> wpanda-file.png -> /usr/local/share/icons/hicolor/32x32/apps /home/lellis/projetos/wiRedPanda/app/resources/icons/26x26/wpanda-file.png -> wpanda-file.png -> /usr/local/share/icons/hicolor/26x26/apps /home/lellis/projetos/wiRedPanda/app/resources/icons/128x128/wpanda.png -> wpanda.png -> /usr/local/share/icons/hicolor/128x128/apps /home/lellis/projetos/wiRedPanda/app/resources/icons/64x64/wpanda.png -> wpanda.png -> /usr/local/share/icons/hicolor/64x64/apps /home/lellis/projetos/wiRedPanda/app/resources/icons/48x48/wpanda.png -> wpanda.png -> /usr/local/share/icons/hicolor/48x48/apps /home/lellis/projetos/wiRedPanda/app/resources/icons/32x32/wpanda.png -> wpanda.png -> /usr/local/share/icons/hicolor/32x32/apps /home/lellis/projetos/wiRedPanda/app/resources/icons/26x26/wpanda.png -> wpanda.png -> /usr/local/share/icons/hicolor/26x26/apps /home/lellis/Qt5.7.1/5.7/gcc_64/lib/libQt5PrintSupport.so.5 -> libQt5PrintSupport.so.5 -> /usr/local/lib/wpanda /home/lellis/Qt5.7.1/5.7/gcc_64/lib/libQt5XcbQpa.so.5 -> libQt5XcbQpa.so.5 -> /usr/local/lib/wpanda /home/lellis/Qt5.7.1/5.7/gcc_64/lib/libQt5DBus.so.5 -> libQt5DBus.so.5 -> /usr/local/lib/wpanda /home/lellis/Qt5.7.1/5.7/gcc_64/lib/libQt5Widgets.so.5 -> libQt5Widgets.so.5 -> /usr/local/lib/wpanda /home/lellis/Qt5.7.1/5.7/gcc_64/lib/libQt5Gui.so.5 -> libQt5Gui.so.5 -> /usr/local/lib/wpanda /home/lellis/Qt5.7.1/5.7/gcc_64/lib/libQt5Core.so.5 -> libQt5Core.so.5 -> /usr/local/lib/wpanda /home/lellis/Qt5.7.1/5.7/gcc_64/lib/libicui18n.so.56 -> libicui18n.so.56 -> /usr/local/lib/wpanda /home/lellis/Qt5.7.1/5.7/gcc_64/lib/libicuuc.so.56 -> libicuuc.so.56 -> /usr/local/lib/wpanda /home/lellis/Qt5.7.1/5.7/gcc_64/lib/libicudata.so.56 -> libicudata.so.56 -> /usr/local/lib/wpanda /home/lellis/Qt5.7.1/5.7/gcc_64/plugins/platforms/libqxcb.so -> libqxcb.so -> /usr/local/lib/wpanda /usr/lib/x86_64-linux-gnu/libX11-xcb.so.1 -> libX11-xcb.so.1 -> /usr/local/lib/wpanda /usr/lib/x86_64-linux-gnu/libxcb.so.1 -> libxcb.so.1 -> /usr/local/lib/wpanda /usr/lib/x86_64-linux-gnu/libxcb-dri2.so.0 -> libxcb-dri2.so.0 -> /usr/local/lib/wpanda /usr/lib/x86_64-linux-gnu/libxcb-xfixes.so.0 -> libxcb-xfixes.so.0 -> /usr/local/lib/wpanda <> <> <> 0 <> <> 1 #!/bin/sh set -e case "$1" in configure) desktop-file-install /usr/local/share/applications/wpanda.desktop xdg-mime install --mode system /usr/local/share/xml/misc/wpanda-mime.xml xdg-mime default /usr/local/share/applications/wpanda.desktop application/x-wpanda xdg-icon-resource install --context mimetypes --size 128 /usr/local/share/icons/hicolor/128x128/apps/wpanda-file.png application-x-wpanda xdg-icon-resource install --context mimetypes --size 64 /usr/local/share/icons/hicolor/64x64/apps/wpanda-file.png application-x-wpanda xdg-icon-resource install --context mimetypes --size 48 /usr/local/share/icons/hicolor/48x48/apps/wpanda-file.png application-x-wpanda xdg-icon-resource install --context mimetypes --size 32 /usr/local/share/icons/hicolor/32x32/apps/wpanda-file.png application-x-wpanda xdg-icon-resource install --context mimetypes --size 26 /usr/local/share/icons/hicolor/26x26/apps/wpanda-file.png application-x-wpanda ;; esac <> <> 0 <> <> 0 <> <> <> <>DEFAULT<> <> <> 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 . <> <> 1 Name=WiRedPanda Version=1.0 Exec=/bin/sh /usr/local/bin/wpanda.sh %f Comment=Learn about logic circuits in an easy and friendly way. Icon=wpanda Type=Application Terminal=false StartupNotify=false Encoding=UTF-8 Categories=Utility;Application; GenericName=WiRedPanda MimeType=application/x-wpanda; <> <> 1 1 1 <> wiRedPanda-4.1.12/installer/Windows/000077500000000000000000000000001444020206400172405ustar00rootroot00000000000000wiRedPanda-4.1.12/installer/Windows/.gitignore000066400000000000000000000000241444020206400212240ustar00rootroot00000000000000*.zip *.exe Build/* wiRedPanda-4.1.12/installer/Windows/FileAssociation.nsh000066400000000000000000000100451444020206400230260ustar00rootroot00000000000000; fileassoc.nsh ; File association helper macros ; Written by Saivert ; ; Features automatic backup system and UPDATEFILEASSOC macro for ; shell change notification. ; ; |> How to use <| ; To associate a file with an application so you can double-click it in explorer, use ; the APP_ASSOCIATE macro like this: ; ; Example: ; !insertmacro APP_ASSOCIATE "txt" "myapp.textfile" "Description of txt files" \ ; "$INSTDIR\myapp.exe,0" "Open with myapp" "$INSTDIR\myapp.exe $\"%1$\"" ; ; Never insert the APP_ASSOCIATE macro multiple times, it is only ment ; to associate an application with a single file and using the ; the "open" verb as default. To add more verbs (actions) to a file ; use the APP_ASSOCIATE_ADDVERB macro. ; ; Example: ; !insertmacro APP_ASSOCIATE_ADDVERB "myapp.textfile" "edit" "Edit with myapp" \ ; "$INSTDIR\myapp.exe /edit $\"%1$\"" ; ; To have access to more options when registering the file association use the ; APP_ASSOCIATE_EX macro. Here you can specify the verb and what verb is to be the ; standard action (default verb). ; ; And finally: To remove the association from the registry use the APP_UNASSOCIATE ; macro. Here is another example just to wrap it up: ; !insertmacro APP_UNASSOCIATE "txt" "myapp.textfile" ; ; |> Note <| ; When defining your file class string always use the short form of your application title ; then a period (dot) and the type of file. This keeps the file class sort of unique. ; Examples: ; Winamp.Playlist ; NSIS.Script ; Photoshop.JPEGFile ; ; |> Tech info <| ; The registry key layout for a file association is: ; HKEY_CLASSES_ROOT ; = <"description"> ; shell ; = <"menu-item text"> ; command = <"command string"> ; !macro APP_ASSOCIATE EXT FILECLASS DESCRIPTION ICON COMMANDTEXT COMMAND ; Backup the previously associated file class ReadRegStr $R0 HKCR ".${EXT}" "" WriteRegStr HKCR ".${EXT}" "${FILECLASS}_backup" "$R0" WriteRegStr HKCR ".${EXT}" "" "${FILECLASS}" WriteRegStr HKCR "${FILECLASS}" "" `${DESCRIPTION}` WriteRegStr HKCR "${FILECLASS}\DefaultIcon" "" `${ICON}` WriteRegStr HKCR "${FILECLASS}\shell" "" "open" WriteRegStr HKCR "${FILECLASS}\shell\open" "" `${COMMANDTEXT}` WriteRegStr HKCR "${FILECLASS}\shell\open\command" "" `${COMMAND}` !macroend !macro APP_ASSOCIATE_EX EXT FILECLASS DESCRIPTION ICON VERB DEFAULTVERB SHELLNEW COMMANDTEXT COMMAND ; Backup the previously associated file class ReadRegStr $R0 HKCR ".${EXT}" "" WriteRegStr HKCR ".${EXT}" "${FILECLASS}_backup" "$R0" WriteRegStr HKCR ".${EXT}" "" "${FILECLASS}" StrCmp "${SHELLNEW}" "0" +2 WriteRegStr HKCR ".${EXT}\ShellNew" "NullFile" "" WriteRegStr HKCR "${FILECLASS}" "" `${DESCRIPTION}` WriteRegStr HKCR "${FILECLASS}\DefaultIcon" "" `${ICON}` WriteRegStr HKCR "${FILECLASS}\shell" "" `${DEFAULTVERB}` WriteRegStr HKCR "${FILECLASS}\shell\${VERB}" "" `${COMMANDTEXT}` WriteRegStr HKCR "${FILECLASS}\shell\${VERB}\command" "" `${COMMAND}` !macroend !macro APP_ASSOCIATE_ADDVERB FILECLASS VERB COMMANDTEXT COMMAND WriteRegStr HKCR "${FILECLASS}\shell\${VERB}" "" `${COMMANDTEXT}` WriteRegStr HKCR "${FILECLASS}\shell\${VERB}\command" "" `${COMMAND}` !macroend !macro APP_ASSOCIATE_REMOVEVERB FILECLASS VERB DeleteRegKey HKCR `${FILECLASS}\shell\${VERB}` !macroend !macro APP_UNASSOCIATE EXT FILECLASS ; Backup the previously associated file class ReadRegStr $R0 HKCR ".${EXT}" `${FILECLASS}_backup` WriteRegStr HKCR ".${EXT}" "" "$R0" DeleteRegKey HKCR `${FILECLASS}` !macroend !macro APP_ASSOCIATE_GETFILECLASS OUTPUT EXT ReadRegStr ${OUTPUT} HKCR ".${EXT}" "" !macroend ; !defines for use with SHChangeNotify !ifdef SHCNE_ASSOCCHANGED !undef SHCNE_ASSOCCHANGED !endif !define SHCNE_ASSOCCHANGED 0x08000000 !ifdef SHCNF_FLUSH !undef SHCNF_FLUSH !endif !define SHCNF_FLUSH 0x1000 !macro UPDATEFILEASSOC ; Using the system.dll plugin to call the SHChangeNotify Win32 API function so we ; can update the shell. System::Call "shell32::SHChangeNotify(i,i,i,i) (${SHCNE_ASSOCCHANGED}, ${SHCNF_FLUSH}, 0, 0)" !macroend ;EOF wiRedPanda-4.1.12/installer/Windows/deploy.bat000066400000000000000000000011261444020206400212240ustar00rootroot00000000000000SET PATH=%PATH%;C:\Qt\Tools\mingw530_32\bin;C:\Qt\5.8\mingw53_32\bin;C:\Program Files\7-Zip;C:\Program Files (x86)\NSIS\ del WiredPanda_* if not exist Build mkdir Build cd Build qmake.exe ..\..\..\app\ mingw32-make.exe -j cd .. windeployqt.exe "Build\release\wpanda.exe" makensis.exe "wpanda.nsi" 7z.exe x WiredPanda_*.exe -o"%cd%\wpanda_32" FOR /F "tokens=*" %%i IN ( 'DIR /b /a-d WiredPanda_*.exe') DO (SET EXEFILE=%%i) ECHO %EXEFILE% set OUTFILE=%EXEFILE:Windows_Installer_x86_64.exe=Windows_Portable_x86_64.zip% 7z.exe a -tzip %OUTFILE% "%cd%\wpanda_32" RMDIR /S /Q "%cd%\wpanda_32" pause wiRedPanda-4.1.12/installer/Windows/logo.ico000066400000000000000000001237761444020206400207140ustar00rootroot00000000000000@@ (Bv00 %B(( hFh   V ޜ h(@ @  MzzM#~|"ZYcɛwU;-""-;Vwɛ`7ٹh+,jں5/0$﹂'ނ ܁ ݁)!?Գ5ނ ݁܀ ܁ ڀ ـ ׀ ۀ:ۼ<Qs߂݁ ݁ہ ڀڀ ـ   ~ ~ !ڀ}NNCނ ܂ ܁ ځ  ؀ ؀ ! !} } } } | ڀJNB5݂ ݁܁ ہ ځ ف ׀    ! }!}!| |!{ { z { 9<$.ށ ނ܂ ہځ ف ! jEt4 ~ }!| }!| | z z y y y y {ހ/"4ނ ݂!܁ ځ ـ ׀ ؀ ! lPu*[IkA} | | {!z y z y yx w vw w{<?݂܂ ܂ ځ ف ׁ   Հ !`K~(((16hOueIx$z y!z x x ww vvutq$l2s3$G8i݃ ܃!ہ ځ!ڂ ؁!ׁ ! !~!TF((((((,JBoRl]Si=(((((((((()1((((((((([j* ÌzU҄$т#Ђ#΁#̀"̀#"~#~"}"|"{"|!cN((((((((((((-es(((((((((( 5a hٓ<у#΂#΂#́#ˀ#"#~"~"|"|"{!|.p}ap2E(((((((9K0dr|(((((((NC!!!!!!!!!Jԉ.Ѓ#΂#͂$ˁ#ʀ##"~#}#|"|"{"q~(((qR###"""""""&̅&ʂ$ɀ$Ȁ#$#~"}#|"|"{!b(((((((((((((((;M(( .&####""####&·)ɂ$ǀ#ƀ$##}#}#{"z"z"3F((((((((((((((((((nU}$$$$$$$####-Έ,Ȃ$ǀ$ŀ#~#~#}#}"{#z"{+((((((((((((((((?P/((.܋2$$$$$$$$$#$3ю7Ɓ$ŀ#$~#~"|"{"{"z!=O(((((((((((((((((((((((o[%%%%%%%%%%%%EؚIŁ$$$}#|#{"z"z!y"(((((((((((((((((((((((nW&&%%%%%%%%%%%a|ߪdÀ$$~#}#|#{"y"x"x!x((,.A"6(((((((((((((((((VK)&&'''&&&&&&&&„zOϣ##}#|"{"z#y"w!|:t)=(((((((((((((NG*'''''''''&&&&&߽LÁ&}#|#|"z"y"x!w |*(((((((((((YM-(''''''((((((',Ϗ9|#{#z#z"x!v!v!1((((((((()}au*)))))((((((((((R|#z"y"y!w"u!u (((((((((/w[)))))))))))((((((ҡ~%~%z"x!v"w!u s-@((((((((TKٔ:****)***********)0"X$w"v!u t x?3F(((((((=?T+++++++++++********o[0ߙ)#sr {0(((((*VNU,,,,,,++++++,,,,,+++.Zf//+$3F(((*4  $144)ax?2ض)wل#ւ"ԁ"Ӂ"Ҁ"""}"}!}!tUi(((((/B#'((JZ::frL }(\ޖAׄ"Ղ"ҁ"Ҁ"!"~"}"}!{!LC(((((21(((,=Pl+IZظՄ$ԃ"҂"с"Ё#""~"}"|!v+,((((((`o/((((1p}A#ܽzӃ#҃#Ђ#ρ#΀#"~"~"|"|!}Z_(((((((';Xh)((((*ASݳ &ߝO҃#т#΁#̀#"~#~"|"{"s2=<((((((((5H"7((((((0C~; ]&4֍3σ#΂#́#ʀ##~"}"|"~.ͳs#8((((/\kXiO_,@+(((2pP!!!!!!<3:ц)΃#̂$ʀ#ɀ##}#}"|"–h2((((((/M]^m&:((ZJ*""""""-9=΄&˂$ʁ$Ȁ##~#|"|"{!DV(((((((((4O_((qR##"""""&==̅&Ɂ$Ȁ#$~#}#|"{"e((((((((((()=(+4%#######'=:͆)ȁ$ƀ$#~#}#{"z$ϽN_(((((((((((gu{(*_p$$$$$$##-94Ί0Ɓ$$~#}"|"{"G$8(((((((((((0DU?Q1(ICІ;%%%%%%%%:3&ԗEĀ$$}#|#z"y!zbp(*-)((((((((((((>>H&&&%%%%%%Y&ޭl$~#|#{#y"x%ҵeslyJ[-((((((((()4{O''''''&&&&ÂԲ$}#|"z"y"{3õap((((((((-6t\(''''((((')߻]ȋ7{#z#y"v!H*((((()PJƇF))))(((((((G[*׫o{#x"w"v!REV(((((#1jX֑<**)*****))))|(Τņ-w"v!u iM^+((((HE|Y4+++++++*****7ڮ4iޙ)Ņ$x!0C(+$2;?dVV,,,,,,,,+,,,,++i31.ߚ*ůZ_e[zc|np}_ӖC0....-----------0Lk00EV[]\ĩġe٢J;2////.../////.......nJ Z2111111111000110000000///0//////Z 'J333333222222222221111111111111I&<544434444443333333322222222223:XK65555555554444444444433334KW g[777677766666666565555555[g Wk9888788888877777776667mW >94&????((P   !7IV\\VI7!%TS$.oѪȚĒĒɚѪo.QִS?0% %0?T׵Qعf9('8g۽~6]ބ$܁ ۀ ـ ؀ ݀#`56ֵX݂ ہ ڀ ؀   ~ ~ ~ ۀZٸ5ЪHބ$ہ ځ ~#u3u1}#}!| { { { }"IҬճH݂!ہ ؀ ׀ z*{WhXH_Xl>w)z!z y x xy{}!ހ#Iط~RU݄$ہ ف ׀  x-`K~,%09:TFyWddGr+w t#f>qRfYJݸסy3"XQ/Yۂ!ق!ׁ!ր!Ԁ!!v/UF*((((((**((:Lߨ{3^.pմ܄%ق!ׁ!Հ!Ԁ!!~!t2LB)((((((((&"BOߴ׈B"#ںo%b؂!ׂ!Ձ!Ӏ!!~!~!q6B>(((.@QIY/B$9)  5C¾pWsm;!f$Tҭݐ8ւ"ԁ"Ӂ"р""}!}!kA68((( 5ET &"7-)sVQ&8׳S{و)Ԃ"ҁ"р""~"}"|!aS(2(((.x*(*1DuK"'"ޞRԃ"҂"Ё"΀""~"|"x'dNu)((((@QN_+((,IZ蹎( S!8ֵّ;҃#ρ#΀""~"}"{#k@=<(((((0x';((()-@K >ܼ7Jʠԉ-ς#́#ˀ#"}"|"€3zapVe/((?Ec'!!!/ѦIVĖЅ&͂#ʀ##~"}"|"ǚj0(((.6Ift}rJZ,(`Mۆ/!!!!'˙V\“̓$˂$Ȁ#~#}#|"|"J[)(((((-%9$8(pR$""""$ɓ\\“ʂ%Ȁ##~#|"{"e(((((((((.38%#####%ʓ\VÕɃ&ƀ$~#}#|"|+ҼYh(((((((((CU7I /bl$$$$$$(͘VJȝɆ+$}#|"z"L-@)*(((((((+*>#70eRч;%%%%%%1ӤI8үʌ7~#|#{"y#śhQaftftJ[!6)((((((+WKăE('&&&&&@ݺ7"ΙO}#{"z"z)ʩy2(((((*JEL*'''''''V!ٮr(y"x!~6о%9((() 0x^zْ9)))(((((/UͧÈ5x!v!=[j-((-ABhp4*******))>۰S%adž%{"T_n3-*5HFevN3++++++++++e%pޱ.ܘ*ʞeglUQ`Uwb}|_ˑG4------,,,,,.ݳo/Y/Besu޹~oȘT֛D;72/............[.SY4111111110111000000/00///1YQQ333333322222222111111111PީR7444444444433333333335Qݩ6[66666665555555555444Z66[888787777776666666\6kJ>9999999998=IjSՀbK?;;;;?KaԁR/pp/%UT%"8JV\\VJ8"( @   "D^p{{p]D"ByyB*״kYOOYk׵*Gϩd?'##(>dҬF|H݂"ۀ ـ ؀ ݁ I{|ΧQ܁ ـ }%{'~!} } ~Rѩ{GΧJ݄$ف ~#mA\`l@u-z#z z z|~ "IѩF+P܄%ځ ׀ }%_[47>Ԃ"ҁ"Ѐ""}"r4TF*(+Td:K( 5jxok݂+>ײ"D繁Ո+т"π""~"{$dL16((()=';().AԿK!)D^e҅'΁#̀"~"}"}4l}@L.A 5)+IZO_&:.)4՟t+ %i]q۠Vσ$ˀ##~"|"ǚiWg,(,HY~IZ"7)kUو7"!#Xp{؜Q̂$Ȁ#~#}"|"IZ)((*40CGX+pR$"""Q{{՜Qȁ$#}#|#b(((((((iw=N<=$$##$R{q՞UƁ%~#|"/ӹbp)((((((+>wO^6>gg%%%$&Yp^ץaÁ'|#{"ETdEV>P%9*((()1*6y\xՊ9&&&%*j]Dܵ~‚+{"z$”\*>((((.iÜ@)''''/ƅD#ͨŋ;y"z*ȧ9K((,08sa1))))((C۰"zդ^|#~0ҷiw!5/3:`Sw_0*******eyCӣږ*ʐ=־uzNPPL{dz|^ҔB2,,,,,,,,צBI9gĉǐԾ|`ÏOΕF92.....----J+W52211111111100000003V*HިU733333333222222225SܨG|ߨY6555555444444443Xݨ||N77777776666666N|HlOA<:99:;?NlG+یpebbdpڋ+CzzB#D^q{{q^D"(0   =nn= aԯʝĒĒʝԯ`wȜe<1++1pbԕd>"I׵w aގ6؁!ր!~#iG89(*,+)&u岇;9` ƙ؂"Ձ!Ҁ!}$eM16)%9QbHX&8"juzrz0ʜ>bԂ"Ҁ""{&^Y(2)4Ght->O{:c=oЬٓ>Ё"̀"~"v4cQ 2*0q~L\,3Yhx)=ծnƙԌ4̀#"}"do|2E*)={M]&:/w>"3̛’ω0#~"|"ʽ>P))';AR~ft4rQ&"/ȓˈ0~#}$Ô_(((((HYjvKH$$$0ʓėɉ3}#.Զx+?"6+((1FVJLna%%%6ϛoΩɎ={#=̵7J(((,6en܏5'''Bٮn>ѡ^z$YP`*#1DDK,*)))f=ǖȈ*ʡj}AIUNguP-+++++қ a@XȘЭǽn]͔F80.----=a xT52221111110003SwܡU444444333333TڡLD7776666655CLxߝnQGDDFPnݝxaa >oo> (( @  ?lۓקקۓl>-۾Ǘ}qq}ǘܾ,WЬU9*%%)7SЬWWxڄ(y,v/{%~ $xW-Ϭwތ2}%fNmQs[^j@w$s+pHʈX>0xЬ,~څ'Հ!z)}Xe$0+41)BRᰇۊ@?ٻSՁ"Ҁ!x,qSm /"7bqhv/?7G|d]ܽ>mĕ؏9Ѐ""s7ZK.!6{u.ARbɒiAȗlٔ{ч-"~"bsr?P1:LSc+?-@B-}ړקrͅ)~#}"ĸ!6,=Oapv(ɰUd* 0PJu]ߔ4((>Ϙl?׸ўUƔPS]FEs^P/+**Y?ĂQǗֽznPښ>1---1ɂ-ϭ}A2222211111?}Ϭ-W~9555444447}WWϭֆaK@==@JaԆϬW-ننߝ-?m۔ڧڧ۔m?p00p(     x$u2ǀGJC 3]lBQdrλʍ^ﺄkߧcЄ(~"xaRV&9IZp}>PScŦFe™ټٟVʁ&}"ͺCU3Zixt5HW+VݼػӝVÀ(ƕZ:M.*kYR2)8Ƃk<Ө`Ñ{[єC2--Lک< UڟX43222212W؟T vܠSC;88:BRڟvU؉pffp׈⬿U Pguxxfu>P- "+)(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((*'4G3F'*(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((* $'' $*(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((* # 43 #*((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((()%0/%)(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((() ! )(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((+cqbp+(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((+%&4F " "4G+')(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((*  # !*++* !Vf+((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())K['&+((((+&'+(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((()(gv,((((((,iv)'((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((()) .B #)(((((() #0C0&)((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((+2%)(((((()%23%)(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((+mz*> $)(((((() #+?1%)((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((+IZ]l+((((((+_m*')(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((* #&: )*((((*) *(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((() !%,,,+%bp+(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((+u 5 51&)((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((* 5H{}s+((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((() #.A'((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((+vXh&,@-@ "*((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((* !5H++ 3F1D +((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((() "+')(+ !6 5 +(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((+p}GX+(((+$L]K[$*(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((* "/C+((((()*(<\k[j'<*)((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((* ,&)(((((((** # #**(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((+iwK[+(((((((((()+,,,,+)((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((* ",?+((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((() !/&)((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((+uP`+((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((+=O+(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((()%.1%)((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((*Qa+((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((,u+((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((,L])')(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((+ 2E9J +(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((+ #3kx,(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((* $-*(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((()*+,,+*)(((((((((((((((((((((((((((((((((((((+$*)&)(((((((((((((((((()*+,,+*)((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((*+&  &+*((((((((((((((((((((((((((((((((((, "--A "*(((((((((((((((((*+&  &+*(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((()+ !->Pguxxfu>P- "+)(((((((((((((((((((((((((((((((,!6L]+(((((((((((((((()+ !->Pguxxfu>P- "+)(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((*'4G3F'*(((((((((((((((((((((((((((()+9Kgu+((((((((((((((((*'4G3F'*(((((((((((((((((((((((((((((((((((((((((((((((((((((((((* $'' $*((((((((((((((((((((((((((+'[j{+((((((((((((((((* $'' $*(((((((((((((((((((((((((((((((((((((((((((((((((((((((* # 43 #*(((((((((((((((((((((((*+(*((((((((((((((((* # 43 #*((((((((((((((((((((((((((((((((((((((((((((((((((((()%0/%)((((((((((((((((((((*+ "JZ))((((((((((((((()%0/%)(((((((((((((((((((((((((((((((((((((((((((((((((((() ! )((((((((((((((((()+* 0C()(((((((((((((((() ! )(((((((((((((((((((((((((((((((((((((((((((((((((((+cqbp/,,,,,,,,,,,,,,,)% ;M !,-,,,,,,,,,,,,,,,,/bqbp+((((((((((((((((((((((((((((((((((((((((((((((((()',4F " "4G " !"6\kSc  "4F " "4G+')((((((((((((((((((((((((((((((((((((((((((((((((+Yi !*++* !v|{{{{{{{{{{{{|lz|{{{{{{{{{{{{{{{{{|u !*++* !Vf+((((((((((((((((((((((((((((((((((((((((((((((((+'&+((((+&''&+((((+&'+((((((((((((((((((((((((((((((((((((((((((((((()')gv,((((((,ivgv,((((((,iv)'((((((((((((((((((((((((((((((((((((((((((((((()&0.B #)(((((() #0C.B #)(((((() #0C0&)(((((((((((((((((((((((((((((((((((((((((((((()%32%)(((((()%22%)(((((()%23%)(((((((((((((((((((((((((((((((((((((((((((((()%1*> $)(((((() #+?*> $)(((((() #+?1%)(((((((((((((((((((((((((((((((((((((((((((((()'*]l+((((((+_m]l+((((((+_m*')(((((((((((((((((((((((((((((((((((((((((((((((* )*((((*)  )*((((*) *((((((((((((((((((((((((((((((((((((((((((((((((+cq%,,,+%%,,,+%bp+(((((((((((((((((((((((((((((((((((((((((((((((()&2 5 5)* 5 51&)(((((((((((((((((((((((((((((((((((((((((((((((((+t{}r.++++++++++++++++++++++++++++++++++++++++++++++++++++++.t{}s+(((((((((((((((((((((((((((((((((((((((((((((((((()(''(((((((((((((((((((((((((((((((((((((((((((((((((((((((()(''(((((((((((((((((((((((((((((((((((((((((((((((((((((* "-@-@ "*((((((((((((((((((((((((((((((((((((((((((((((((((((((((* "-@-@ "*(((((((((((((((((((((((((((((((((((((((((((((((((((((+ 3F1D +((((((((((((((((((((((((((((((((((((((((((((((((((((((((((+ 3F1D +(((((((((((((((((((((((((((((((((((((((((((((((((((((((+ !6 5 +((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((+ !6 5 +(((((((((((((((((((((((((((((((((((((((((((((((((((((((((+$L]K[$*((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((+$L]K[$*((((((((((((((((((((((((((((((((((((((((((((((((((((((((((()*(<\k[j'<*)(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((()*(<\k[j'<*)((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((** # #**((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((** # #**(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((()+,,,,+)(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((()+,,,,+)((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((()))))))))))))))))))))))))))))))))))))))'((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('""""""""""""""""""""""""""""""""""""""%3 ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((()$                                        K t(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((($                                        K ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((                                        M (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((                                        (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('                                         ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((()"                                       T  ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((()"                                     %D!((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((                                     K ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('                                     K!((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('                                   !((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('                                   "HO((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('                                    ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('                                 '!((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('                                 K x((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('                                K ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('                               M ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('                               A((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('                               ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('                             N-!((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('                           %D!((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('                           K ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('                          K!((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('                        !((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('                        "HO((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('                         ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('                      %!((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('                     'K ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('                     K ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('                    M"((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('                    A((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('                    ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('                 Y-!((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('               (D#((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('                K x((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('               K!((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('             " ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('             6u((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('              ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('           %$((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('          'K ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('          K ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('         M"(( ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('       #a((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('       "IO((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('      Y-!((z(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('    (D$(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('     K x((K((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('    K!((K(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('  " ((L((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((  8x((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((' U ((( ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((& .%((  (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((& ????????( ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((D(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((b((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((&(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((*+**+*(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((++(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((()'>P=O')((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((()'$$')((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((,*(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((-Wg\k\kZi+(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())P`*((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((*/B !-- !0C0&)((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((+!5'))'!5!5$)(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((,ZiQa--Rb)((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((* "*>:L:M+(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((*n|,@ ")((((((((((((((((((((((((((((((((((((((((((((((((((((((((((,kx ZiUe+((((((((((((((((((((((((((((((((((((((((((((((((((((((((((* ")= !,P=O')(((((((((((+)Ueo|,((((()'>P=O')((((((((((((((((((((((((((()'$$')((((((()+++((((()'$$')((((((((((((((((((((((((((*,*******&@Q,+*****,*(((((((((((((((((((((((((+[j\k\kXg !-P`q~  !Yh\k\kZi+((((((((((((((((((((((((**((((((((((((((((((((((()&0/B !-- !0C/B !-- !0C0&)(((((((((((((((((((((()$!6!5'))'!5!5'))'!5!5$)(((((((((((((((((((((((')Qa--RbQa--Rb)(((((((((((((((((((((((((+:L:MK\YhVfVfVfVfVfVfVfVfVfVfVfVfVfVfVfVfVfVfVfVfVfVfVfVfYhK\:L:M+((((((((((((((((((((((((* "-A(<)=,@ ")(((((((((((((((((((((((((+VfUe.++++++++++++++++++++++++++.VfUe+(((((((((((((((((((((((((((+P* "-++'Vf$- "+>P+ !*((((B(((B((* "2E.A)}.A2E "*(((B(((B((+ " "+(((B(((B((**(((B(((B((*P`O`& $%''% $&P`O`*(((B(((B(((*4Ft3F*((((((((*4Ft3F*((((B(((B((((* ! !*((((((((((* ! !*(((((B(((B(((((*+*((((((((((((*+*((((((B(((B(((((((((((((((((((((((((((((B(((B(((((((((((((((((((((((((((((B(((B(((((((((((((((((((((((((((((B(((B((((((((((((((((((((((((((()(B(((B(((((((((((((((((((((&&&&&&&&?&((B((((((((((((((((((()        ((B((((((((((((((((((('         ((B((((((((((((((((((('        ((B((((((((((((((((((('      7 ((B((((((((((((((((((('     U ((B((((((((((((((((((('    v ((A((((((((((((((((((('    ((B((((((((((((((((((('  + y (($((((((((((((((((((('   ((?((((((((((((((((((' ((  (((((((((((((((((((' ? ( @ (((((((((((((((((((((( ((((((((((((((((( ((J(((((((((((((((((((4((((((((((((((((((((((~(((~(((((((((((((((((((~((((((((((((((((((((((((((((((((((((((++(((((((((((((((((((*)((((((((((((((((()n{mz "((((((((((((((((+s+(((((((((((((,p}w+(((((((++(((+ 2E?Q('((((((()*+-%  ((((((((( "mzn| !rp} #((((((+s}s+((((++((((('(  ('((((((('(,++++,('(((((((((++((((((((++((((((((((((((((((((((((((~(((((((((((((((()))))()(((((((((((((((%####$j#(((((((((((((((     (((((((((((((('     (((((((((((((('     ((~(((((((((((('   9 (((((((((((((('  X ((I((((((((((((' x (((((((((((('! ( (((((((((((('?????????????(  ((O(({(}(}(}(}({((H(((((((((*(((((((((() '((((((((( #8J+'((())*-:L(()$ !Qaq~.A,'(( !,@YhtXhx+? !(( /BiwbqUehv/C (()%$$%)((()(++++))()((((((((!! ((((((('   y((((((('   ((O(({(}(}(|'"  wiRedPanda-4.1.12/installer/Windows/wpanda.nsi000066400000000000000000000154011444020206400212260ustar00rootroot00000000000000;NSIS Modern User Interface ;Basic Example Script ;Written by Joost Verburg ;-------------------------------- ;Include Modern UI !include "MUI2.nsh" ;Include File Association Library !include "FileAssociation.nsh" ;-------------------------------- ;General ;Name and file !define MUI_PRODUCT "WiRedPanda" !define MUI_FILE "wpanda" # These three must be integers !define VERSIONMAJOR 4 !define VERSIONMINOR 0 !define VERSIONBUILD 0 !define MUI_VERSION "${VERSIONMAJOR}.{VERSIONMINOR}" !define MUI_BRANDINGTEXT "${MUI_PRODUCT} ${MUI_VERSION}" !define COMPANYNAME "UNIFESP" !define DESCRIPTION "WiRedPanda is a software designed to help students learn about logic circuits and simulate them in an easy and friendly way." !define FILEICON "pandaFile.ico" !define BUILD_DIR "Build/release" CRCCheck On Name "${MUI_PRODUCT}" Icon "logo.ico" # These will be displayed by the "Click here for support information" link in "Add/Remove Programs" # It is possible to use "mailto:" links in here to open the email client !define HELPURL "https://github.com/GIBIS-UNIFESP/wiRedPanda/issues/" # "Support Information" link !define UPDATEURL "https://github.com/GIBIS-UNIFESP/wiRedPanda/" # "Product Updates" link !define ABOUTURL "https://github.com/GIBIS-UNIFESP/wiRedPanda/" # "Publisher" link # This is the size (in kB) of all the files copied into "Program Files" !define INSTALLSIZE 40332 ;Get installation folder from registry if available InstallDirRegKey HKCU "Software\${MUI_PRODUCT}" "" ;Request application privileges for Windows Vista RequestExecutionLevel admin OutFile "WiredPanda_${VERSIONMAJOR}_${VERSIONMINOR}_${VERSIONBUILD}_Windows_Installer_x86_64.exe" ShowInstDetails "nevershow" ShowUninstDetails "nevershow" ;SetCompressor "bzip2" !define MUI_ICON "logo.ico" !define MUI_UNICON "logo.ico" ###### !define MUI_SPECIALBITMAP "Bitmap.bmp" ;-------------------------------- ;Interface Settings !define MUI_ABORTWARNING ;-------------------------------- ;Folder selection page InstallDir "$PROGRAMFILES\${MUI_PRODUCT}" ;-------------------------------- ;Pages !insertmacro MUI_PAGE_LICENSE "..\..\LICENSE" !insertmacro MUI_PAGE_COMPONENTS !insertmacro MUI_PAGE_DIRECTORY !insertmacro MUI_PAGE_INSTFILES !insertmacro MUI_UNPAGE_CONFIRM !insertmacro MUI_UNPAGE_INSTFILES ;-------------------------------- ;Languages !insertmacro MUI_LANGUAGE "English" ;-------------------------------- ;Installer Sections ;-------------------------------- ;Installer Sections Section "WiRedPanda" Installationinfo ;Add files SetOutPath "$INSTDIR" File /nonfatal /a /r "${BUILD_DIR}\" ;create desktop shortcut CreateShortCut "$DESKTOP\${MUI_PRODUCT}.lnk" "$INSTDIR\${MUI_FILE}.exe" "" "$INSTDIR\logo.ico" 0 ;create start-menu items CreateDirectory "$SMPROGRAMS\${MUI_PRODUCT}" CreateShortCut "$SMPROGRAMS\${MUI_PRODUCT}\Uninstall.lnk" "$INSTDIR\Uninstall.exe" "" "$INSTDIR\Uninstall.exe" 0 CreateShortCut "$SMPROGRAMS\${MUI_PRODUCT}\${MUI_PRODUCT}.lnk" "$INSTDIR\${MUI_FILE}.exe" "" "$INSTDIR\logo.ico" 0 ;Register .panda File Association # ${registerExtension} ".panda" "" "" !insertmacro APP_ASSOCIATE "panda" "wiredpanda.pandafile" "WiRedPanda File" \ "$INSTDIR\${FILEICON}" "Open with WiRedPanda" "$INSTDIR\${MUI_FILE}.exe $\"%1$\"" ;write uninstall information to the registry WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${MUI_PRODUCT}" "DisplayName" "${MUI_PRODUCT} (remove only)" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${MUI_PRODUCT}" "UninstallString" "$INSTDIR\uninstall.exe" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${MUI_PRODUCT}" "QuietUninstallString" "$INSTDIR\uninstall.exe /S" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${MUI_PRODUCT}" "InstallLocation" "$INSTDIR" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${MUI_PRODUCT}" "DisplayIcon" "$INSTDIR\logo.ico" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${MUI_PRODUCT}" "Publisher" "${COMPANYNAME}" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${MUI_PRODUCT}" "HelpLink" "${HELPURL}" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${MUI_PRODUCT}" "URLUpdateInfo" "${UPDATEURL}" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${MUI_PRODUCT}" "URLInfoAbout" "${ABOUTURL}" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${MUI_PRODUCT}" "DisplayVersion" "${VERSIONMAJOR}.${VERSIONMINOR}.${VERSIONBUILD}" WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${MUI_PRODUCT}" "VersionMajor" ${VERSIONMAJOR} WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${MUI_PRODUCT}" "VersionMinor" ${VERSIONMINOR} # There is no option for modifying or repairing the install WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${MUI_PRODUCT}" "NoModify" 1 WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${MUI_PRODUCT}" "NoRepair" 1 # Set the INSTALLSIZE constant (!defined at the top of this script) so Add/Remove Programs can accurately report the size WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${MUI_PRODUCT}" "EstimatedSize" ${INSTALLSIZE} WriteUninstaller "$INSTDIR\Uninstall.exe" SectionEnd ;-------------------------------- ;Descriptions ;Language strings LangString DESC_InstInfo ${LANG_ENGLISH} "Install WiRedPanda." ;Assign language strings to sections !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN !insertmacro MUI_DESCRIPTION_TEXT ${Installationinfo} $(DESC_InstInfo) !insertmacro MUI_FUNCTION_DESCRIPTION_END ;-------------------------------- ;Uninstaller Section ;-------------------------------- ;Uninstaller Section Section "Uninstall" ;Delete Files RMDir /r "$INSTDIR\*.*" ;Remove the installation directory RMDir "$INSTDIR" ;Delete Start Menu Shortcuts Delete "$DESKTOP\${MUI_PRODUCT}.lnk" Delete "$SMPROGRAMS\${MUI_PRODUCT}\*.*" RmDir "$SMPROGRAMS\${MUI_PRODUCT}" ;Delete Uninstaller And Unistall Registry Entries DeleteRegKey HKEY_LOCAL_MACHINE "SOFTWARE\${MUI_PRODUCT}" DeleteRegKey HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\${MUI_PRODUCT}" # ${unregisterExtension} ".panda" "WiRedPanda File" !insertmacro APP_UNASSOCIATE "panda" "wiredpanda.pandafile" SectionEnd ;-------------------------------- ;MessageBox Section ;Function that calls a messagebox when installation finished correctly Function .onInstSuccess MessageBox MB_OK "You have successfully installed ${MUI_PRODUCT}. Use the desktop icon to start the program." FunctionEnd Function un.onUninstSuccess MessageBox MB_OK "You have successfully uninstalled ${MUI_PRODUCT}." FunctionEnd ;eof wiRedPanda-4.1.12/pch.h000066400000000000000000000023071444020206400145360ustar00rootroot00000000000000#if defined __cplusplus // Add C++ includes here #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #endif wiRedPanda-4.1.12/test/000077500000000000000000000000001444020206400145705ustar00rootroot00000000000000wiRedPanda-4.1.12/test/test.pro000066400000000000000000000007411444020206400162730ustar00rootroot00000000000000include(../config.pri) QT += testlib CONFIG += testcase TARGET = WPanda-test DEFINES += CURRENTDIR=\\\"$$_PRO_FILE_PWD_\\\" SOURCES += \ testmain.cpp \ testelements.cpp \ testfiles.cpp \ testcommands.cpp \ testsimulation.cpp \ testwaveform.cpp \ testicons.cpp \ testlogicelements.cpp HEADERS += \ testelements.h \ testfiles.h \ testcommands.h \ testsimulation.h \ testwaveform.h \ testicons.h \ testlogicelements.h wiRedPanda-4.1.12/test/testcommands.cpp000066400000000000000000000020401444020206400177710ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #include "testcommands.h" #include "and.h" #include "commands.h" #include "scene.h" #include "workspace.h" #include void TestCommands::testAddDeleteCommands() { QList items{new And(), new And(), new And(), new And()}; WorkSpace workspace; auto *scene = workspace.scene(); auto *undoStack = scene->undoStack(); undoStack->setUndoLimit(1); scene->receiveCommand(new AddItemsCommand(items, scene)); QCOMPARE(scene->elements().size(), items.size()); undoStack->undo(); undoStack->redo(); undoStack->undo(); undoStack->redo(); undoStack->undo(); undoStack->redo(); scene->receiveCommand(new DeleteItemsCommand(scene->items(), scene)); undoStack->undo(); undoStack->redo(); undoStack->undo(); undoStack->redo(); undoStack->undo(); undoStack->redo(); QCOMPARE(scene->elements().size(), 0); QCOMPARE(undoStack->index(), 1); } wiRedPanda-4.1.12/test/testcommands.h000066400000000000000000000004001444020206400174340ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include class TestCommands : public QObject { Q_OBJECT private slots: void testAddDeleteCommands(); }; wiRedPanda-4.1.12/test/testelements.cpp000066400000000000000000000212411444020206400200100ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #include "testelements.h" #include "and.h" #include "demux.h" #include "dflipflop.h" #include "dlatch.h" #include "globalproperties.h" #include "ic.h" #include "inputbutton.h" #include "inputgnd.h" #include "inputswitch.h" #include "inputvcc.h" #include "jkflipflop.h" #include "led.h" #include "mux.h" #include "node.h" #include "or.h" #include "qneconnection.h" #include "qneport.h" #include "scene.h" #include "simulation.h" #include "srflipflop.h" #include "tflipflop.h" #include void TestElements::init() { for (int i = 0; i < connections.size(); ++i) { connections[i] = new QNEConnection(); switches[i] = new InputSwitch(); connections.at(i)->setStartPort(switches.at(i)->outputPort()); } } void TestElements::cleanup() { qDeleteAll(switches); } void TestElements::testNode() { Node elm; QCOMPARE(elm.inputSize(), elm.inputs().size()); QCOMPARE(elm.inputSize(), 1); QCOMPARE(elm.outputSize(), elm.outputs().size()); QCOMPARE(elm.outputSize(), 1); QCOMPARE(elm.minInputSize(), 1); QCOMPARE(elm.elementType(), ElementType::Node); } void TestElements::testAnd() { And elm; QCOMPARE(elm.inputSize(), elm.inputs().size()); QCOMPARE(elm.inputSize(), 2); QCOMPARE(elm.outputSize(), elm.outputs().size()); QCOMPARE(elm.outputSize(), 1); QCOMPARE(elm.minInputSize(), 2); QCOMPARE(elm.elementType(), ElementType::And); } void TestElements::testOr() { Or elm; QCOMPARE(elm.inputSize(), elm.inputs().size()); QCOMPARE(elm.inputSize(), 2); QCOMPARE(elm.outputSize(), elm.outputs().size()); QCOMPARE(elm.outputSize(), 1); QCOMPARE(elm.minInputSize(), 2); QCOMPARE(elm.elementType(), ElementType::Or); } void TestElements::testVCC() { InputVcc vcc; QCOMPARE(vcc.outputSize(), 1); QCOMPARE(vcc.inputSize(), 0); QCOMPARE(vcc.outputPort()->status(), Status::Active); } void TestElements::testGND() { InputGnd gnd; QCOMPARE(gnd.outputSize(), 1); QCOMPARE(gnd.inputSize(), 0); QCOMPARE(gnd.outputPort()->status(), Status::Inactive); } void TestElements::testMux() { Mux elm; QCOMPARE(elm.inputSize(), elm.inputs().size()); QCOMPARE(elm.inputSize(), 3); QCOMPARE(elm.outputSize(), elm.outputs().size()); QCOMPARE(elm.outputSize(), 1); QCOMPARE(elm.minInputSize(), 3); QCOMPARE(elm.elementType(), ElementType::Mux); } void TestElements::testDemux() { Demux elm; QCOMPARE(elm.inputSize(), elm.inputs().size()); QCOMPARE(elm.inputSize(), 2); QCOMPARE(elm.outputSize(), elm.outputs().size()); QCOMPARE(elm.outputSize(), 2); QCOMPARE(elm.minInputSize(), 2); QCOMPARE(elm.elementType(), ElementType::Demux); } void TestElements::testDFlipFlop() { DFlipFlop elm; QCOMPARE(elm.inputSize(), elm.inputs().size()); QCOMPARE(elm.inputSize(), 4); QCOMPARE(elm.outputSize(), elm.outputs().size()); QCOMPARE(elm.outputSize(), 2); QCOMPARE(elm.minInputSize(), 4); QCOMPARE(elm.maxInputSize(), 4); QCOMPARE(elm.minOutputSize(), 2); QCOMPARE(elm.maxOutputSize(), 2); QCOMPARE(elm.elementType(), ElementType::DFlipFlop); } void TestElements::testDLatch() { DLatch elm; QCOMPARE(elm.inputSize(), elm.inputs().size()); QCOMPARE(elm.inputSize(), 2); QCOMPARE(elm.outputSize(), elm.outputs().size()); QCOMPARE(elm.outputSize(), 2); QCOMPARE(elm.minInputSize(), 2); QCOMPARE(elm.maxInputSize(), 2); QCOMPARE(elm.minOutputSize(), 2); QCOMPARE(elm.maxOutputSize(), 2); QCOMPARE(elm.elementType(), ElementType::DLatch); } void TestElements::testJKFlipFlop() { JKFlipFlop elm; QCOMPARE(elm.inputSize(), elm.inputs().size()); QCOMPARE(elm.inputSize(), 5); QCOMPARE(elm.outputSize(), elm.outputs().size()); QCOMPARE(elm.outputSize(), 2); QCOMPARE(elm.minInputSize(), 5); QCOMPARE(elm.maxInputSize(), 5); QCOMPARE(elm.minOutputSize(), 2); QCOMPARE(elm.maxOutputSize(), 2); QCOMPARE(elm.elementType(), ElementType::JKFlipFlop); } void TestElements::testSRFlipFlop() { SRFlipFlop elm; QCOMPARE(elm.inputSize(), elm.inputs().size()); QCOMPARE(elm.inputSize(), 5); QCOMPARE(elm.outputSize(), elm.outputs().size()); QCOMPARE(elm.outputSize(), 2); QCOMPARE(elm.minInputSize(), 5); QCOMPARE(elm.maxInputSize(), 5); QCOMPARE(elm.minOutputSize(), 2); QCOMPARE(elm.maxOutputSize(), 2); QCOMPARE(elm.elementType(), ElementType::SRFlipFlop); } void TestElements::testTFlipFlop() { TFlipFlop elm; QCOMPARE(elm.inputSize(), elm.inputs().size()); QCOMPARE(elm.inputSize(), 4); QCOMPARE(elm.outputSize(), elm.outputs().size()); QCOMPARE(elm.outputSize(), 2); QCOMPARE(elm.minInputSize(), 4); QCOMPARE(elm.maxInputSize(), 4); QCOMPARE(elm.minOutputSize(), 2); QCOMPARE(elm.maxOutputSize(), 2); QCOMPARE(elm.elementType(), ElementType::TFlipFlop); } void TestElements::testICData(IC *ic) { QCOMPARE(ic->inputSize(), 5); QCOMPARE(ic->outputSize(), 2); QCOMPARE(ic->inputPort(0)->isRequired(), false); QCOMPARE(ic->inputPort(1)->isRequired(), false); QCOMPARE(ic->inputPort(2)->isRequired(), true); QCOMPARE(ic->inputPort(3)->isRequired(), false); QCOMPARE(ic->inputPort(4)->isRequired(), false); QCOMPARE(ic->inputPort(0)->status(), Status::Active); QCOMPARE(ic->inputPort(1)->status(), Status::Active); QCOMPARE(ic->inputPort(2)->status(), Status::Invalid); QCOMPARE(ic->inputPort(3)->status(), Status::Active); QCOMPARE(ic->inputPort(4)->status(), Status::Active); } void TestElements::testIC() { const QString icFile = QString(CURRENTDIR) + "/../examples/jkflipflop.panda"; GlobalProperties::currentDir = QString(CURRENTDIR) + "/../examples/"; auto *ic = new IC(); ic->loadFile(icFile); testICData(ic); auto *clkButton = new InputButton(); auto *prstButton = new InputButton(); auto *led1 = new Led(); auto *led2 = new Led(); auto *connection1 = new QNEConnection(); connection1->setStartPort(clkButton->outputPort()); connection1->setEndPort(ic->inputPort(2)); auto *connection2 = new QNEConnection(); connection2->setStartPort(prstButton->outputPort()); connection2->setEndPort(ic->inputPort(0)); auto *connection3 = new QNEConnection(); connection3->setStartPort(ic->outputPort(0)); connection3->setEndPort(led1->inputPort()); auto *connection4 = new QNEConnection(); connection4->setStartPort(ic->outputPort(1)); connection4->setEndPort(led2->inputPort()); Scene scene; scene.addItem(led1); scene.addItem(led2); scene.addItem(clkButton); scene.addItem(prstButton); scene.addItem(ic); scene.addItem(connection1); scene.addItem(connection2); scene.addItem(connection3); scene.addItem(connection4); Simulation simulation(&scene); simulation.initialize(); for (int i = 0; i < 10; ++i) { clkButton->setOff(); prstButton->setOff(); simulation.update(); simulation.update(); simulation.update(); QCOMPARE(ic->inputPort(2)->status(), Status::Inactive); QCOMPARE(ic->outputPort(0)->status(), Status::Active); QCOMPARE(ic->outputPort(1)->status(), Status::Inactive); // ------------------------------- clkButton->setOff(); prstButton->setOn(); simulation.update(); simulation.update(); simulation.update(); QCOMPARE(ic->inputPort(2)->status(), Status::Inactive); QCOMPARE(ic->outputPort(0)->status(), Status::Active); QCOMPARE(ic->outputPort(1)->status(), Status::Inactive); // ------------------------------- clkButton->setOff(); simulation.update(); simulation.update(); simulation.update(); QCOMPARE(ic->inputPort(2)->status(), Status::Inactive); QCOMPARE(ic->outputPort(0)->status(), Status::Active); QCOMPARE(ic->outputPort(1)->status(), Status::Inactive); // ------------------------------- clkButton->setOn(); simulation.update(); simulation.update(); simulation.update(); QCOMPARE(ic->inputPort(2)->status(), Status::Active); QCOMPARE(ic->outputPort(0)->status(), Status::Inactive); QCOMPARE(ic->outputPort(1)->status(), Status::Active); } } void TestElements::testICs() { const QDir examplesDir(QString(CURRENTDIR) + "/../examples/"); const auto files = examplesDir.entryInfoList(QStringList{"*.panda"}); for (const auto &fileInfo : files) { GlobalProperties::currentDir = fileInfo.absolutePath(); IC ic; ic.loadFile(fileInfo.absoluteFilePath()); } } wiRedPanda-4.1.12/test/testelements.h000066400000000000000000000013741444020206400174620ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include #include class IC; class InputSwitch; class QNEConnection; class TestElements : public QObject { Q_OBJECT private slots: void cleanup(); void init(); void testAnd(); void testDFlipFlop(); void testDLatch(); void testDemux(); void testGND(); void testIC(); void testICs(); void testJKFlipFlop(); void testMux(); void testNode(); void testOr(); void testSRFlipFlop(); void testTFlipFlop(); void testVCC(); private: void testICData(IC *ic); QVector switches{5}; QVector connections{5}; }; wiRedPanda-4.1.12/test/testfiles.cpp000066400000000000000000000031251444020206400172770ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #include "testfiles.h" #include "qneconnection.h" #include "scene.h" #include "workspace.h" #include #include void TestFiles::testFiles() { const QDir examplesDir(QString(CURRENTDIR) + "/../examples/"); const auto files = examplesDir.entryInfoList(QStringList("*.panda")); QVERIFY(!files.empty()); for (const auto &fileInfo : files) { WorkSpace workspace; QVERIFY(fileInfo.exists()); QFile pandaFile(fileInfo.absoluteFilePath()); QVERIFY(pandaFile.exists()); QVERIFY(pandaFile.open(QIODevice::ReadOnly)); QDataStream stream(&pandaFile); stream.setVersion(QDataStream::Qt_5_12); workspace.load(stream); const auto items = workspace.scene()->items(); for (auto *item : items) { if (auto *conn = qgraphicsitem_cast(item)) { QVERIFY(conn != nullptr); QVERIFY(conn->startPort() != nullptr); QVERIFY(conn->endPort() != nullptr); } } QTemporaryFile tempFile; QVERIFY(tempFile.open()); QDataStream stream2(&tempFile); stream2.setVersion(QDataStream::Qt_5_12); workspace.save(stream2); tempFile.close(); QFile pandaFile2(tempFile.fileName()); QVERIFY(pandaFile2.open(QIODevice::ReadOnly)); QDataStream stream3(&pandaFile2); stream3.setVersion(QDataStream::Qt_5_12); workspace.load(stream3); } } wiRedPanda-4.1.12/test/testfiles.h000066400000000000000000000003611444020206400167430ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include class TestFiles : public QObject { Q_OBJECT private slots: void testFiles(); }; wiRedPanda-4.1.12/test/testicons.cpp000066400000000000000000000011541444020206400173100ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #include "testicons.h" #include "elementfactory.h" #include void TestIcons::testIcons() { for (auto type = ElementType::InputButton; type < ElementType::Demux; ++type) { if ((type == ElementType::JKLatch) || (type == ElementType::IC)) { continue; } const auto pixmap = ElementFactory::pixmap(type); const auto text = ElementFactory::typeToText(type); QVERIFY2(!pixmap.isNull(), QString(text + " pixmap not found.").toUtf8()); } } wiRedPanda-4.1.12/test/testicons.h000066400000000000000000000003611444020206400167540ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include class TestIcons : public QObject { Q_OBJECT private slots: void testIcons(); }; wiRedPanda-4.1.12/test/testlogicelements.cpp000066400000000000000000000267311444020206400210370ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #include "testlogicelements.h" #include "logicand.h" #include "logicdemux.h" #include "logicdflipflop.h" #include "logicdlatch.h" #include "logicinput.h" #include "logicjkflipflop.h" #include "logicmux.h" #include "logicnode.h" #include "logicor.h" #include "logicsrflipflop.h" #include "logictflipflop.h" #include void TestLogicElements::init() { std::generate(switches.begin(), switches.end(), [] { return new LogicInput(); }); } void TestLogicElements::cleanup() { qDeleteAll(switches); } void TestLogicElements::testLogicNode() { LogicNode elm; elm.connectPredecessor(0, switches.at(0), 0); const QVector> truthTable{ {1, 1}, {0, 0}, }; for (const auto &test : truthTable) { switches.at(0)->setOutputValue(test.at(0)); elm.updateLogic(); QCOMPARE(elm.outputValue(), test.at(1)); } } void TestLogicElements::testLogicAnd() { LogicAnd elm(2); elm.connectPredecessor(0, switches.at(0), 0); elm.connectPredecessor(1, switches.at(1), 0); const QVector> truthTable{ {1, 1, 1}, {1, 0, 0}, {0, 1, 0}, {0, 0, 0}, }; for (const auto &test : truthTable) { switches.at(0)->setOutputValue(test.at(0)); switches.at(1)->setOutputValue(test.at(1)); elm.updateLogic(); QCOMPARE(elm.outputValue(), test.at(2)); } } void TestLogicElements::testLogicOr() { LogicOr elm(2); elm.connectPredecessor(0, switches.at(0), 0); elm.connectPredecessor(1, switches.at(1), 0); const QVector> truthTable{ {1, 1, 1}, {1, 0, 1}, {0, 1, 1}, {0, 0, 0}, }; for (const auto &test : truthTable) { switches.at(0)->setOutputValue(test.at(0)); switches.at(1)->setOutputValue(test.at(1)); elm.updateLogic(); QCOMPARE(elm.outputValue(), test.at(2)); } } void TestLogicElements::testLogicInput() { LogicInput elm; QCOMPARE(elm.outputValue(), false); elm.setOutputValue(true); QCOMPARE(elm.outputValue(), true); elm.setOutputValue(false); QCOMPARE(elm.outputValue(), false); } void TestLogicElements::testLogicMux() { LogicMux elm; elm.connectPredecessor(0, switches.at(0), 0); elm.connectPredecessor(1, switches.at(1), 0); elm.connectPredecessor(2, switches.at(2), 0); const QVector> truthTable{ {0, 0, 0, 0}, {0, 0, 1, 0}, {0, 1, 0, 0}, {0, 1, 1, 1}, {1, 0, 0, 1}, {1, 0, 1, 0}, {1, 1, 0, 1}, {1, 1, 1, 1}, }; for (const auto &test : truthTable) { switches.at(0)->setOutputValue(test.at(0)); switches.at(1)->setOutputValue(test.at(1)); switches.at(2)->setOutputValue(test.at(2)); elm.updateLogic(); QCOMPARE(elm.outputValue(), test.at(3)); } } void TestLogicElements::testLogicDemux() { LogicDemux elm; elm.connectPredecessor(0, switches.at(0), 0); elm.connectPredecessor(1, switches.at(1), 0); const QVector> truthTable{ /* i S o0 o1 */ {0, 0, 0, 0}, {0, 1, 0, 0}, {1, 0, 1, 0}, {1, 1, 0, 1}, }; for (const auto &test : truthTable) { switches.at(0)->setOutputValue(test.at(0)); switches.at(1)->setOutputValue(test.at(1)); elm.updateLogic(); QCOMPARE(elm.outputValue(0), test.at(2)); QCOMPARE(elm.outputValue(1), test.at(3)); } } void TestLogicElements::testLogicDFlipFlop() { LogicDFlipFlop elm; elm.connectPredecessor(0, switches.at(0), 0); elm.connectPredecessor(1, switches.at(1), 0); elm.connectPredecessor(2, switches.at(2), 0); elm.connectPredecessor(3, switches.at(3), 0); const QVector> truthTable{ /* L D C p c Q ~Q */ {0, 0, 1, 1, 1, 0, 1}, /* Clk up and D = 0 */ {0, 1, 1, 1, 1, 1, 0}, /* Clk up and D = 1 */ {0, 0, 0, 0, 1, 1, 0}, /* Preset = false */ {0, 0, 1, 1, 0, 0, 1}, /* Clear = false */ {0, 0, 1, 0, 0, 1, 1}, /* Clear and Preset = false */ {1, 0, 0, 1, 1, 1, 0}, /* Clk dwn and D = 0 (must maintain current state)*/ {1, 1, 0, 1, 1, 1, 0}, /* Clk dwn and D = 1 (must maintain current state)*/ }; for (const auto &test : truthTable) { switches.at(0)->setOutputValue(test.at(1)); /* DATA */ switches.at(1)->setOutputValue(test.at(0)); /* CLK */ switches.at(2)->setOutputValue(false); /* PRST */ switches.at(3)->setOutputValue(false); /* CLR */ elm.updateLogic(); elm.setOutputValue(0, test.at(0)); elm.setOutputValue(1, !test.at(0)); for (int port = 0; port < 4; ++port) { switches.at(port)->setOutputValue(test.at(port + 1)); } elm.updateLogic(); QCOMPARE(elm.outputValue(0), test.at(5)); QCOMPARE(elm.outputValue(1), test.at(6)); } } void TestLogicElements::testLogicDLatch() { LogicDLatch elm; elm.connectPredecessor(0, switches.at(0), 0); elm.connectPredecessor(1, switches.at(1), 0); const QVector> truthTable{ /* D E Q A */ {0, 0, 0, 0}, {0, 0, 1, 1}, {1, 0, 0, 0}, {1, 0, 1, 1}, {0, 1, 0, 1}, {1, 1, 1, 0}, }; for (const auto &test : truthTable) { elm.setOutputValue(0, test.at(3)); elm.setOutputValue(1, !test.at(3)); for (int port = 0; port < 2; ++port) { switches.at(port)->setOutputValue(test.at(port)); } elm.updateLogic(); QCOMPARE(elm.outputValue(0), test.at(2)); QCOMPARE(elm.outputValue(1), !test.at(2)); } } void TestLogicElements::testLogicJKFlipFlop() { LogicJKFlipFlop elm; elm.connectPredecessor(0, switches.at(0), 0); elm.connectPredecessor(1, switches.at(1), 0); elm.connectPredecessor(2, switches.at(2), 0); elm.connectPredecessor(3, switches.at(3), 0); elm.connectPredecessor(4, switches.at(4), 0); const QVector> truthTable{ /* L J C K p c Q Q A */ {0, 0, 0, 0, 0, 1, 1, 0, 0}, /* Preset = false */ {0, 0, 0, 0, 1, 0, 0, 1, 0}, /* Clear = false */ {0, 0, 0, 1, 0, 0, 1, 1, 0}, /* Clear and Preset = false*/ {1, 1, 0, 0, 1, 1, 0, 1, 0}, /* Clk dwn and J = 0 (must maintain current state)*/ {1, 1, 0, 0, 1, 1, 0, 1, 0}, /* Clk dwn and J = 1 (must maintain current state)*/ {0, 1, 1, 1, 1, 1, 1, 0, 0}, /* Clk up J = 1 K = 1 (must swap Q and ~Q)*/ {0, 1, 1, 1, 1, 1, 0, 1, 1}, /* Clk up J = 1 K = 1 (must swap Q and ~Q)*/ {0, 1, 1, 0, 1, 1, 1, 0, 0}, /* Clk up J = 1 K = 0 */ {0, 1, 1, 0, 1, 1, 1, 0, 1}, /* Clk up J = 1 K = 0 */ {0, 0, 1, 1, 1, 1, 0, 1, 0}, /* Clk up J = 0 K = 1 */ {0, 0, 1, 1, 1, 1, 0, 1, 1}, /* Clk up J = 0 K = 1 */ {0, 0, 1, 0, 1, 1, 0, 1, 0}, /* Clk up J = 0 K = 0 */ {0, 0, 1, 0, 1, 1, 1, 0, 1}, /* Clk up J = 0 K = 0 */ }; elm.updateLogic(); for (const auto &test : truthTable) { switches.at(0)->setOutputValue(test.at(1)); switches.at(1)->setOutputValue(test.at(0)); switches.at(2)->setOutputValue(test.at(3)); switches.at(3)->setOutputValue(false); switches.at(4)->setOutputValue(false); elm.updateLogic(); elm.setOutputValue(0, test.at(8)); elm.setOutputValue(1, !test.at(8)); for (int port = 0; port < 5; ++port) { switches.at(port)->setOutputValue(test.at(port + 1)); } elm.updateLogic(); QCOMPARE(elm.outputValue(0), test.at(6)); QCOMPARE(elm.outputValue(1), test.at(7)); } } void TestLogicElements::testLogicSRFlipFlop() { LogicSRFlipFlop elm; elm.connectPredecessor(0, switches.at(0), 0); elm.connectPredecessor(1, switches.at(1), 0); elm.connectPredecessor(2, switches.at(2), 0); elm.connectPredecessor(3, switches.at(3), 0); elm.connectPredecessor(4, switches.at(4), 0); const QVector> truthTable{ /* L S C R p c Q Q A */ {0, 0, 0, 0, 0, 1, 1, 0, 0}, /* Preset = false */ {0, 0, 0, 0, 1, 0, 0, 1, 1}, /* Clear = false*/ {0, 0, 0, 0, 0, 0, 1, 1, 1}, /* Preset || Clear = false*/ {0, 0, 0, 0, 1, 1, 0, 1, 0}, /* No change */ {0, 0, 0, 0, 1, 1, 1, 0, 1}, /* No change */ {0, 1, 0, 0, 1, 1, 0, 1, 0}, /* No change */ {0, 1, 0, 0, 1, 1, 1, 0, 1}, /* No change */ {0, 0, 0, 1, 1, 1, 0, 1, 0}, /* No change */ {0, 0, 0, 1, 1, 1, 1, 0, 1}, /* No change */ {1, 0, 1, 0, 1, 1, 0, 1, 0}, /* No change */ {1, 0, 1, 0, 1, 1, 1, 0, 1}, /* No change */ {1, 1, 1, 0, 1, 1, 0, 1, 0}, /* No change */ {1, 1, 1, 0, 1, 1, 1, 0, 1}, /* No change */ {1, 0, 1, 1, 1, 1, 0, 1, 0}, /* No change */ {1, 0, 1, 1, 1, 1, 1, 0, 1}, /* No change */ {0, 0, 1, 0, 1, 1, 0, 1, 0}, /* No change */ {0, 0, 1, 0, 1, 1, 1, 0, 1}, /* No change */ {0, 0, 1, 1, 1, 1, 0, 1, 0}, /* Q = 0 */ {0, 0, 1, 1, 1, 1, 0, 1, 1}, /* Q = 0 */ {0, 1, 1, 0, 1, 1, 1, 0, 0}, /* Q = 1 */ {0, 1, 1, 0, 1, 1, 1, 0, 1}, /* Q = 1 */ {0, 1, 1, 1, 1, 1, 1, 1, 0}, /* Not permitted */ {0, 1, 1, 1, 1, 1, 1, 1, 1}, /* Not permitted */ }; elm.updateLogic(); for (const auto &test : truthTable) { switches.at(0)->setOutputValue(false); switches.at(1)->setOutputValue(test.at(0)); switches.at(2)->setOutputValue(false); elm.updateLogic(); elm.setOutputValue(0, test.at(8)); elm.setOutputValue(1, !test.at(8)); for (int port = 0; port < 5; ++port) { switches.at(port)->setOutputValue(test.at(port + 1)); } elm.updateLogic(); QCOMPARE(elm.outputValue(0), test.at(6)); QCOMPARE(elm.outputValue(1), test.at(7)); } } void TestLogicElements::testLogicTFlipFlop() { LogicTFlipFlop elm; elm.connectPredecessor(0, switches.at(0), 0); elm.connectPredecessor(1, switches.at(1), 0); elm.connectPredecessor(2, switches.at(2), 0); elm.connectPredecessor(3, switches.at(3), 0); const QVector> truthTable{ /* L T C p c Q ~Q A */ {1, 0, 1, 1, 1, 0, 1, 0}, /* No change */ {1, 1, 1, 1, 1, 0, 1, 0}, /* No change */ {1, 0, 1, 1, 1, 1, 0, 1}, /* No change */ {1, 1, 1, 1, 1, 1, 0, 1}, /* No change */ {1, 0, 0, 1, 1, 0, 1, 0}, /* No change */ {1, 0, 0, 1, 1, 1, 0, 1}, /* No change */ {0, 1, 1, 1, 1, 1, 0, 0}, /* Toggle */ {0, 1, 1, 1, 1, 0, 1, 1}, /* Toggle */ {1, 0, 1, 0, 1, 1, 0, 0}, /* Preset = false */ {1, 0, 1, 1, 0, 0, 1, 1}, /* Clear = false */ {1, 0, 1, 0, 0, 1, 1, 1}, /* Clear and Preset = false */ /* Test Prst and clr */ }; elm.updateLogic(); for (const auto &test : truthTable) { switches.at(0)->setOutputValue(test.at(1)); // T switches.at(1)->setOutputValue(test.at(0)); // CLK switches.at(2)->setOutputValue(true); switches.at(3)->setOutputValue(true); elm.updateLogic(); elm.setOutputValue(0, test.at(7)); elm.setOutputValue(1, !test.at(7)); for (int port = 0; port < 4; ++port) { switches.at(port)->setOutputValue(test.at(port + 1)); } elm.updateLogic(); QCOMPARE(elm.outputValue(0), test.at(5)); QCOMPARE(elm.outputValue(1), test.at(6)); } } wiRedPanda-4.1.12/test/testlogicelements.h000066400000000000000000000012231444020206400204710ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include #include class LogicInput; class TestLogicElements : public QObject { Q_OBJECT private slots: void cleanup(); void init(); void testLogicAnd(); void testLogicDFlipFlop(); void testLogicDLatch(); void testLogicDemux(); void testLogicInput(); void testLogicJKFlipFlop(); void testLogicMux(); void testLogicNode(); void testLogicOr(); void testLogicSRFlipFlop(); void testLogicTFlipFlop(); private: QVector switches{5}; }; wiRedPanda-4.1.12/test/testmain.cpp000066400000000000000000000021351444020206400171210ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #include "common.h" #include "testcommands.h" #include "testelements.h" #include "testfiles.h" #include "testicons.h" #include "testlogicelements.h" #include "testsimulation.h" #include "testwaveform.h" #include int main(int argc, char **argv) { Comment::setVerbosity(-1); QApplication app(argc, argv); app.setOrganizationName("GIBIS-UNIFESP"); app.setApplicationName("WiRedPanda"); app.setApplicationVersion(APP_VERSION); int status = 0; status |= QTest::qExec(new TestCommands(), argc, argv); status |= QTest::qExec(new TestElements(), argc, argv); status |= QTest::qExec(new TestFiles(), argc, argv); status |= QTest::qExec(new TestIcons(), argc, argv); status |= QTest::qExec(new TestLogicElements(), argc, argv); status |= QTest::qExec(new TestSimulation(), argc, argv); status |= QTest::qExec(new TestWaveForm(), argc, argv); qInfo() << (status != 0 ? "Some test failed!" : "All tests have passed!"); return status; } wiRedPanda-4.1.12/test/testsimulation.cpp000066400000000000000000000026031444020206400203610ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #include "testsimulation.h" #include "and.h" #include "common.h" #include "inputbutton.h" #include "led.h" #include "qneconnection.h" #include "scene.h" #include "workspace.h" #include void TestSimulation::testCase1() { WorkSpace workspace; InputButton button1; InputButton button2; And andItem; Led led; QNEConnection connection1; QNEConnection connection2; QNEConnection connection3; auto *scene = workspace.scene(); scene->addItem(&led); scene->addItem(&andItem); scene->addItem(&button1); scene->addItem(&button2); scene->addItem(&connection1); scene->addItem(&connection2); scene->addItem(&connection3); connection1.setStartPort(button1.outputPort()); connection1.setEndPort(andItem.inputPort(0)); connection2.setStartPort(button2.outputPort()); connection2.setEndPort(andItem.inputPort(1)); connection3.setStartPort(andItem.outputPort()); connection3.setEndPort(led.inputPort()); const auto elements(Common::sortGraphicElements(scene->elements())); QVERIFY((elements.at(0) == &button1) || (elements.at(1) == &button1)); QVERIFY((elements.at(0) == &button2) || (elements.at(1) == &button2)); QVERIFY(elements.at(2) == &andItem); QVERIFY(elements.at(3) == &led); } wiRedPanda-4.1.12/test/testsimulation.h000066400000000000000000000003661444020206400200320ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include class TestSimulation : public QObject { Q_OBJECT private slots: void testCase1(); }; wiRedPanda-4.1.12/test/testwaveform.cpp000066400000000000000000000022361444020206400200250ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #include "testwaveform.h" #include "bewaveddolphin.h" #include "workspace.h" #include #include void TestWaveForm::testDisplay4Bits() { WorkSpace workspace; const QDir examplesDir(QString(CURRENTDIR) + "/../examples/"); const QString fileName = examplesDir.absoluteFilePath("display-4bits.panda"); QFile pandaFile(fileName); QVERIFY(pandaFile.open(QIODevice::ReadOnly)); QDataStream stream(&pandaFile); stream.setVersion(QDataStream::Qt_5_12); workspace.load(stream); BewavedDolphin bewavedDolphin(workspace.scene(), false); bewavedDolphin.createWaveform(""); QTemporaryFile tempFile; QVERIFY(tempFile.open()); QTextStream tempStream(&tempFile); bewavedDolphin.saveToTxt(tempStream); tempStream.flush(); QVERIFY(tempFile.reset()); QFile referenceFile(examplesDir.absoluteFilePath("display-4bits.txt")); QVERIFY(referenceFile.open(QIODevice::ReadOnly)); QCOMPARE(tempFile.readAll().replace("\r\n", "\n"), referenceFile.readAll().replace("\r\n", "\n")); } wiRedPanda-4.1.12/test/testwaveform.h000066400000000000000000000003731444020206400174720ustar00rootroot00000000000000// Copyright 2015 - 2022, GIBIS-UNIFESP and the WiRedPanda contributors // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include class TestWaveForm : public QObject { Q_OBJECT private slots: void testDisplay4Bits(); };

Please see %2 for an overview of Qt licensing.

KSWY-XS:LB5N'03" P^Y}K(%k-p;FOV5Y3YVOFu;-v8(^ƨx\RQ!ֳ;'5 B6LS.XYWSMK@:4%5rt˪+ԮXk¦ϗ޴m+W c/C MITzXY~WYRKJ?2$rYcǹ>ꦱf)?u5!0 >IoQVzYXU>ND8*[ 'G˰cd戮"^Q l*d8lDNTXYWQFIb>C1k"` İ̯ܦjxŮ6#Z2T? J)ReWYXkT`MCe77)) a#wtiH;^y= +9ENiUXdYVP:H=/ +м K:f;ԜeA%3@ KRWYEXSqL`B5'l rN}jw͓ܐAL- ;FOU,Y>Y0VP/G;D.fd݂LרI6K&B5AKSXYW'SK$A4 &:j',&I=K /s1" S WݩǦЦ7?Y҈ED#2 ?IRMWYXTMC7) 3*½?§k1R̙m <+y9IENMUXlYVQ}H_=0#!Ig]۷/g Z2Z$3F@JRWYQXSLBC6(Sȍytȭٵ|7* +-:nF~OUYLYHVIPjG<.zF̶t󨂦@xuu_ &4AKaSXYXXSKrA4i&=Z^hٱ 8ܶ`.(<|GWPQVKYYUsO\F:- j{ʵmͲןl#(Z6BLT]XYWRJ2@i3$@uFeD"xЂߦkD!00x=HQVdYX@UN6Ec9+  Ys4ش1fɧIԽEʛV ')7CMTXYCWQI>1&#+tm=Ҭ'.ϦȦm&m-"1>IQ:WYXTMD7)l ,Z_$鬬7 t F+%9EzN0UXsYV9QH=t0!h߸U]fݰň.$*3@JRWYfXTLB6[(0gFԼn|J&s8 ,:(FVOUYNYiVqPG[<.49 2񪴱:$ՆY%&4?AK:SWYXvSKA35&j0ճǦ'J}Rt݊45X.;;G+P2VFY$YUOF ;j-/ !r{ܹ孡uq]Ȩ:'6pBLSCXYWRJ|@3)%H}"Qƅ0 T #? /0=NHPVfYXiUNE9+}' XC̅ .Ch!BH T)w7CjM{TXY\WRI^IQW~YXTMRDS8L*` TM)C6(Gg$櫙odtlqk &y,6:E%OU YVYVPGNPǨ,gCN".;GO V3Y6YVOFY;-M A Yi`;MOe'5+BJLS4XYWR7K@4% F{ԡźa7tϼS /<HPV`YXUOE:6, %-۝ʿCVXiIJ׏^(#7]C6MWTXYvWGR2J?2#Jz4Dū5㦶Phb,"1.>IQWzYXT(ND8*2 _$ˑKg1C"3~hÓ'~,a*#2p?#JMvC77)~ 5ص_ZgTJ1l ,9ENyUXcYVP(HXS\L?B5|'8mcV*ukfu2ͽܻk/w-C;FOU1Y9Y%VPG;.;9dW|3ԨzT?2ֻyH 'e5ALS"XYWSgK Aa4%s? ݪ#7v1"<Ҹѩئ MV|ҵql#-2(?IRSWYXTzMC7s)l Zʦ/i;&q.̺ڟ9 d+9gEN]UXhYVPgH<=/ b;;¾ Y $r: `/ %3f@JRWYKXSLB"6')]֦qqv٭[Z X-:FOU&YCY?V2PTG;t.RVݿΟ`訁EǗ~U&5AKnSXYWDSKPA4=&x.AGƱ2!.L1#RMҐ ̦ͦ "V\ #1>IQ=WYXTMC7)B q_ƳQͧi'+c5 j+K9$EN:UXlYV&QH=L0]!<ߏ;Osq5ų^$P3 @JRWY`X TLBt6:(;"ȺֲqcNf ,:FFiOUYKY]V]PG:<. 󶈮6ȱVI;մN&4\AKJSWYXhSKA 5&=yՏNj@b¶Οݳc&b~.;\G8PFVBY%YUO|F:I- OJܜ͠έtr_;'.6BLSIXYWRJ]@3%~Y2hZ)ķGGs'!0E=pHPVjYXWUN\E9+] 2g!7i0fs ~)7CMTXYNWRI? 2^#bpLI֦ĦөڸD3"1>tIQ,W}YXTM=D,8&*0 iٮ0{ܧlڬྉk? +8DbNUXuYVRQH=0!.Ѓ7|TVӜhN$2?vJuRWYmX2TLC6(pyDիmo!̢ۍ7 T,W:F9OUYQYyVPG<$/ "kUe9))ܪI|#%q4AsKSWY XS LAa5&:iͻ,9Ty٨7`qFI'.;GP+V9Y.YUOF;;-n\%vip{6]v~F'5HBbLS:XYWRK@3b%T}ƫL>  /<0HPV]YXsUNE9,] u̫,CQh`gؼ> ()C7}CJMhTXYmW0R"J_?{2#R %ōu&সuђAQ",1I>:IQW~YXTN|D|8* 6rx-hP0˥q >*8D+NTX|YWzQI>0"T[Bw8P>S#2?>JIR{WY~XTT-MTC7(Pט>DjY^IֿA, J,:E OUY\YVP H9`%Ĩ~VPG֤o3'5B.LS/XYWSIK@84%I}躃Ǫ#'ҮM`šϊޤ`M R/HlQVyYX UCND8*l :S˺ji맋SJk Z*\8`DMTXYWQPIm>M1|"kĴد©ڦdoş$#Q2E?J!RdWYXsTcMCi7K); o5ɅygG3Sj2 +9ENeUX_YVPIH#=/ 1¥J5a(ԑX5%3@JRWYIXS{LhB5'{0Vnu ͆܂2 >x-;FOU(Y>Y8VP9G;J.-.soݔ΃NߨI0=|&<5AKSXYW4SK2A4&Fy /2@.=.i1""[fĦӦ33I}95#1?IQFWYXTMC7) H9ʽBǧi.ٴGˉ_ .+k9BENFUXgYVQHn=$06!Zpmݷ@aO 'L$r3?@JRWYQXTLBP6(_ țww­ӵo,  -:aFOU!YEYSVKPvG<.Mضz7߱sieNr&4xAKWS XYX\SK~A4{&F_qj <{ֶS.IQ/WYXTMD8) ?؇ݳkקg嬣+f 4+"9DxN)UXpYV;QH=0!scidҰ}!x$!3?JRWYjXTLB6m(AwU߼ȫox;۸b- v,s:$FMOUYQYjV{PGh<.A*D-,}J&42AK4SWYXSKA85&|?սDz0IߨMjv,,M.;=GP8V?Y'YUOF;u-? 2歧to}Rț,u'6dB{LSCXYWRJ@38%S/Yƒ3P 5 /=LHPVdYXhUNE9+4 gS̊1Gj"q5l= L)j7CeMsTXY`W$RJH?M2##rbۦƩүęѾlz"P1j>QIQWYXTM_D_8W*l DPgìhUٚ6 m*8DGNUXvYVjQH>0!&f2ѭ_Eѹl(b*$2?VJ]RWYxXATM3C6(*Uq%)뫝mar\pQ g,/:E"OU YVYVPGIQW|YXT.ND8*H o0˟Lj򧞬/wu3 *8zDNTXuYWQ@IG>+1T"<sØůڦ,r% O#z2c?J7RhWYXgTLM{CF7$) Cؿk^kME+{` ,9ENxUXbYVP,H=/  ϨŽEH{WԶ_%3@KRWY?XS^LMB5'I{s`4~mks+ͬܯ[ j-6;FOU,Y;Y(V PG;&.MAu_=ҨL@'ϻn6&\5ALS#XYWStKAs4%Qު(,8c[d) !/*!0=HPQVqYXUcND8+= mڅ侅۬hu*h2 %*089DMTXY'WQqI>|1"0Hٸשզ ENrң`b#2?IRYWYXTzMC7)u kʯ4j8 e ̱ڌ. V+9_ENWUXlYVQmHG=0!.nIIɷ(Yj/Uz%3[@JRWYMXSLB06'9e֭{zqѭ쵦OI I-:FOUYHYBV9P[G;~.b%fίi먃Aljv@& 5AKhSXYXGSK\A4R&|:JUɱ6{.>[!N0=H&QVoYX1# ZM+ҎѦŦEM"1>IQ9EN4UXlYV.QH=U0l!KߞCTxn,ŤI$C3@JRWYcXTLB6B(K,Ⱦ㲶s\BU ,::FeOUYJYbVdPGF<.2űJ>0դ mF&4RAKASWYXnSKA5&RՔǝ$B]ΒݦPNw.;TG2P@VCY$YUOF:T- _YܤͰ٭tsvW''!6BLSHXYWRJk@3%,c;r# W";;b /B=`HPVeYXYUNfE9+b 71l ?f) Y g p)7CzMTXYVWRI#?22g#tzSP ٦ҩѸ:&"v1>nIQ'WYXTMBD;83*B tٽ5|dѬپuf& +8D\NUXtYVXQH=0!<ЉFT칐IӒVC$2?nJoRWYqX5TMC6(*M۫okv̕( F,N:E5OUYRY~VPG<-/% 9sgpD0᪌ Au%e4 AfK"SWYXS LA_5'Cwջ4>TzԨ3}Th4?.;G P V'5ABZLS;XYWR K@3j%(cԊƳS9~r /<HPVeYX|UNE9",m !{̻1IUe[]ת/ w)87qCDMdTXYlW:R(Jj?2#+]1ŕ|+ߦhх1E"1B>/IQ W}YXTND8* A ~;fG*ˑj 1*8D&NTX|YWQI1>1,"ahM|4E3zK#2?8JCRwWYXZT3M]C&7(fמLGpUVCʿ5 8,9EOUY_YVPHk)˨{VK> ֔h'5A*LS,XYWS\K@Q4%S!Ъ$(ƮHR’wޛM< H/\ N*N8\DMTXYWQYIw>Z1"x!گʩڦ[iĕ#D21".j+t ɦЦ/&:t~#,#1>IQCWYXTMC7)+ SEԽGʧh+ дIQ,WYXTM"D8 * Hؙjݧg⬙W )+9DnN'UXuYVEQH=0! k-f\Ͱqӻ|q$3?J}RWYjX'TLB6u(Nb*˫jz4ͿۧW m,k:FEOUYQYpV~PGn</R4T(몥&o7&4*AK,SWYXSKAC5&KǸ2JרK|faD.;3GP1V>Y*YUOF;-M@򭧨vk{MqȒe'5dBmLSFXYWRK@3H%b8lƓBK & /=>HPV_YXjUNE9+B v]̗:Gkoz!X2 =)_7C]MmTXYeW+R JQ?^2#8 }e#צүČѮ[n"C1`>JIQWYXTNlDe8j*| U\'e]Eي& `*8D0!9mG#ѻgAȹ`Up $2?NJXR~WY}XGT!M?C6(5a|-4kbf\\H ], :EOUYZYVPGItQWuYXT9ND8*P z:˩Vh񧖬+gb) w*r8qDNTXyYWQAIX>41b"K}Ģʯݦ$kžF#m2X?J+RnWYXkTRMCR7/) RnjhN<%jP ,9ENrUXbYVP6H =/ ϸA?oLԥ yM%3@KRWYAXSgLYB5'WhAviw͢ܟKW--;FOU'YBY(VP&G;6.  \OmD֨K;ʻZ,&S5ALS"XYW#S|KA|4&*\%$*^Ab /1"DN۩¦Ԧ>FaҜPS#2?IRSWYXTMC7) *s#ʵ3Ƨe9[̢~! K+9SENSUXkYV QrHV=0!7SYԷ*aa#Gm $3T@JRWYSXSLB>6'Euֶȉutͭ㵜B< 4-:nFOU$YEYIVUN-EW9w+ Fm2ʴ*i˧LڽUʦc 7)7CMTXYHWQI>1"#m_4қ%"˦ͦ 48"1>IQ5WYXTM D7)^ {׳\ӧh!򬴴A Q+59EN0UXnYV.QH=f0x!ZߩP _tmő:$53 @JRWYeXTLB6S((T5ż첺nP7F ,:2FZOUYQYbVlPGS<.+ / 0D1#՘d5&4IAK?SWYXwSKA5&b$եǞ#E[ΊݑIHc.;HG*P>VAY&YUOF;X-' bmܭͼݭtrkȹE"'6{BLSHXYWRJv@3%6sG|&S.0O /4=\HPVeYX_UNpE9+t H=v*?i%J\ i)7CuMzTXY\WRI1?82{#}aR٦̩Ǹ2İ"o1|>cIQWYXTMLDH8=*O *? ~cȬ~ɾpٵW *8DVNUXtYV\QH=0!HјLK޹<ӂI5$2?gJgRWYvX8T M"C6(;[᫘ljzq ̈o 7,B:E0OU YXY|VPG<:/1 DqހK=î !ت4h%T4A^KSWY$XSLAw5'Z~:BXxѨ-tLY). .; GO V:Y/YVOFO;-?x5 |^kh(C\`,s'59BQLS6XYWR&K@4x%5lԘƻY:zd /<HPV^YYUNE9,,z &ێ̿;RRmOUל&v)47gC9MbT~XYpW@R-Jx?2#8n'<Ş-䦶W|r$3"15>'IQWYXT%ND8*( W˄Di?ˌR $*8D$NTXtYWQ)I6>15"&nvZÈݦ5~8!s4#2|?*JBRqWYX_T9MkC-7 )o%׫URiVP9( { /,9ENUX^YVP Hj1"9ɩ¦֦S_ĉ {|#920?IRZWYXTkMC|7i)^ Mɞ)eC'u=گF n+9vENcUXiYVPYH5=/ T*3·U+{Ep;%3n@JRWYKXSL{B6'N֘hssܭif "^-:FOU&YBY;V-PIG;f.FLݲΓX娃B)Ǭ_& 5AKsSXYWDSKHA46&a$1D2 /,.R1":{6 |Φɦ#!/ci#1>IQFWYXTMC7)7 bSٽ³IΧh'ƴ5pC y+T90EN?UXkYV QH=C0K!1u߇)Dpy9Ŷa6$W3.@JRWY^XTLBk6)('ȫԲoȵm\ p -:MFsOUYKYUV\PG/<.t趆0 ϱ]WH,]&4dAKNSXYX^SKA5&2fՁDŽ>kʶέo;f.ҦĦ۩P?"1>IQ0W}YXTM0D"8*! ]٥nߧi⬍ホ|K !+9DfN UXoYVIQH=0!s8kU˰_ӱoa$3?zJRWYmX*TLC6(ao4ѫix$ ͬ۞B \,b: FBOUYTYrVPG</ \GY.!(檝\.%|4A{K$SWY&XS LAT5&*Zǻ"6P|بBlPY2.;(GP/V:Y,YUOF';-WIyfyBhȂU'5NBpLSEXYWRK@3R%qGsơFH /=@IQW{YXT NuDn8z* *`c0dZ@˯ف M*8D;NTXuYWtQI>0 "DM5p>W J`#2?HJQRyWYyXRT#MKC 7(Fr׉7;󫣧k\fL翫T7 R,:EOUY^YVPHIqQVyYXU?ND8*[ #L˭bi짓"^Q} h*h8gDNTX{YWQJIa>B1n"[ İ̯ݦizů2#X2S? J*ReWYXqTZMC^7>), `(|qiF>[sE +9ENkUXcYVP?H=/ )и¦P=j7ԝfE%3@KRWY>XSmLaB5'grQdy͔ܒ;I-!;FOU*YAY-VP+G;<.  dc݇yI٨H6M&E5AKSXYW,SK&A4 &<k')T6O /t1"Q ]۩Ŧզ;<]҂KA# 2?IRNWYXTMC7) 6)ƽAn-۴U̙l @+{9IENOUXlYV Q}H`=0'!Mj\ط4b U8W$3G@JRWYQXSLBF6(Uȓ}rʭٵ/1 (-:jFOU YFYNVCPoG<.{Cοжq?pvX%&4AK`SXYXWSKtA4o& 6W_iױ ;x].&1+#$|q<Ҭ&0Цɦ r'o+"1>IQ9WYXTMD7)o ,؀ܳ_ڧc#묩 7 v D+)9E~N0UXtYV;QH=q0!h߼UfvoӰŎ/$'3@JRWYhXTLB6b(5gKټīn}J&u7 ,:/FOOUYOYjVpPG^<.5: .󪳱;"ՅX$&49AK5SWYXwSKA-5&o2ձǪ +FTw݆85].;EG#P8VCY#YUOF;l-- zsܽ孟wn`Ȧ@ ' 6tBLSKXYWRJz@3)%G|$Oƈ,K! D /*=SHPVdYXcUNwE9+ [Í +Fe ?zL Z)r7CcMTXYXW#RI@?B2#kWצȩگø īv"U1|>VIQW~YXTMYDM8Q*b 8Gc Ǭpž_٩C x*8DMN UXsYV_QH=0!S*ѫLOٹ{0t8*$2?_JbRWYxX>TM-C6(He$䫜lexc{b (z,3:E#OU YWYVPGxbaf;LM!d'5)BNLS7XYWR0K@4% D~ԝɺ^7pϿV /<HPV]YYUOE:4, 4ۜǿGQ\iJJ׍^) 7_C6MUTXYyWDR4J?2#C-BŪ2妶Oib*"1+> IQW{YXT%ND8*0 d&˒Jc:~ ~C *8DNTX~Y WQ0IA>1C"5{hÑߦ-x+d'#2n?%J;RnWYX_TGMpC97)z /׷_YdVH2i ,9EN|UX_YVP#Hq1"$9Ӹө٦ MW|Ҵvg#02&?IRTWYXTyMC7p)f Z ʝ'§f=#o-̾ژ@ j+9dENVUXeYVP]HF=/  _<=Ʒ\w6 ^. %3k@JRWYFXSLB%6',W֡tquح^U L-:FOUYHY>V2PTG;t.R[ݶΣa訃A ǘQ&5AKnSXYWESKSA4F&m,@K/.GF:,T ?^t߲,KB(6BLT^XYWRJ@A3$N)nuT=ãХRc!_0=H-QVqYX9]+ 'T%iѧTѳpʾ؂ M)7DMTXY;WQI>1"JBҁŦѦ %T^#1>IQ@WYXTMC7)@ p[óRͧi(Ĵ"X? l+M9 EN8UXnYV(QH=I0`!:ߏ9Lwo2ŬW%$P3@JRWY[X TLBu69(;"ȹֲrhL` ,:CFkOUYGY_V]PG<<.}򶉮8ͱRK;մL&4\AKKSWY XlSKA5&CtՋǏ?fΧݫi"d~.;]G6PEVFY!YUOyF:C- IOܘͤϭtub;'/6BLSNXYWRJ_@3$ yW1lY)ŷEKn,!0E=qHPVgYXWUN]E9+[ -"e9g§/fu ~)7CMTXYTW RI?2`#aoLIئ¦өոL+"~1>rIQ*WYXTMBD'8-*7 e٭/ueڬ徂p; +8D^NUXpYVNQH=0!)Ё;zXWӠeQ$2?tJwRWYmX1TLC6(q uG֫op̜ے3 S,U: F3OU YUYxVPG<(/ !mRh6+'ߪT%o4AlK)SWYXS LAX5&7iλ+:Q|ب6[x?O(.;G P&V>Y,YUOF7;-e%Y)vgqy;ZxF'5NB_LS=XYWRK@3_%~V}ƫLA| /=-HPV_YXsUNE9,^ u̮'IJm cc ظC ")I7xCMMgTXYjW5RJe?t2#T#Ŏt(ަ¯tђCO"-1H>;IQWYXTN}D8*  4po4gP.˪l E*8D1NTXxYW{QI>0" PVGz;N@V#2?7JQRuWYXNT3MOC7(Rט=EkZ]Iֿ@. G,:E OUY]YVPH<~/p Ji2iͺƅQ%4@9KRWY4XSEL!B5Y'?>0\_]zH\-b;FOV3Y8YVOF;->;_&ƨzWRD ֝t0'5B.LS3XYW SRK@@4%F~}ʪ#(ѮLa›φޫYJ R/N1z"lĵկũ٦\wģ'#T2D?J$RbWYXpTgMCk7J)< l/ɂzfH2Mi5 +9ENdUXbYVPKH=/ 5£I 3].ԋW5%3@KRWYGXSzLiB5'y-ւTjzͅ܂0 <x-;FOU'YBY2VP:G;M.+/prݓ΄PڨD0ǿ;w&75AKSXYW4SK0A4&H|.*@-?/exoƫ޼ Ux?l(6BL&TcXYWRJ?3$xӰf𦯦|mhþs!{0=H=QVpYX)UyND98+m 'کhڧeا= ~) 8DMTXY2WQI>1"_fĦЦ,:M|39#1?IQIWYXTMC7) L<ɽGn+ڴD̄d 5+s9=ENHUXmYVQHs= 0:! ]uk޷>cN &P$h3G@JRWY_XSLBT6(cț²ztյv$ -:[FOU YHYOVMPvG<.Uն{󨉦8omcIv&4zAK\SXYXXSKvA4u&Ieko :{նQ.17#6|Jҵ24Ϧɦީaa"1>IQ2WYXTMD 8*{ ;ؑ e٧i謠$n 9+9DwN)UXoYV;QH=0!za!d`ְ |z$3?JRWYfX!TLB6n(ErP#ܼūqu>۸c) },z:FQOUYOYmVwPGe<.@*C,/ xG&45AK2SWYX|SKA85& ~<յǹ2FܨQto0,J.;5G!P3V=Y,YUOF;v-@ .筦wi[{ȟ*t'6eB|LSCXYWRJ@37%V2XƓ2 N 6 /"=EHPVhYXlUNE9+4 hȌ3He|4m= M)g7C`MwTXYcW!RJC?S2#&r`ۦĩկęѻqs"W1c>XIQWYXTMeDW8_*o HVd iTٝ3 l*8DFN UXxYVjQH>0!(e1Ѭ`A͹o%d}+$2?VJ\RWYwXETM5C6(,Tr"+뫛ndkfhY k,+:EOUY\YVPG4@RK SWY+XS)LB5/'uFPXy˨f4D -~;FOV7Y2Y VOFc;-VI}XeV,??Z'5'B?LS/XYWS6K@4%NԩҺf3j~ϲGt x/< HPV\YYU OE :C, ,AۦտJ]YmA?ׂT(7RC/MST}XYtWORI|QWwYXT2ND8*@ n1˚Sd2so9 *8yDNTXYWQ;II>,1Q"@uÜ&u#S#v2e?J4RmWYXgTJM}CC7&) Eؿja hPD,x ] ,9ENsUX^YVP4HШJ?&ӻd6'U5A LS#XYW#SpKAo4%N&,7eUj& !/DMTX~Y+WQuI>1"2CܸөĦԦ FMoҨa_#!2?I RUWYXTMC7)w eʧ/k5$h̰ڍ. W+9dEN[UXkYVQiHL=0 !.lMDȷ$`i/Vz$3\@JRWYSXSLB06':e֯{tuϭﵣQI J-:~FOUYHYBV9P[G;.a&dέg먄>!𱑻ǎtC&5AKkSXYWJSK]A4O&=FYű-~.8WQI>1 # \R%ҒȦΦKS#1>IQg. Yk r)7CM}TXYYWRI(?,2m#mzYLզæΩθ;%"w1>lIQ!WYXTMCD887*F rٻ8|d̬Ծz_- +8DZNUXtYVVQH=0!=Џ@O蹑KӎZ>$2?tJjRWYwX0TMC6(~+Nݫlo}|̒ۂ' H,S:E5OU YZYwVPGXYWR$K@3n%#_ԌƯXC𮇷u /<&HPVcYXzUNE9,l ~̻-QKo Vbإ5 )>7nCEMcTXYlW.IQ WzYXTND8* D };cI%˗c 0*8D'NTXzYWQI+>1'"ajNÀ4>+C#2?5JGRrWYXVT8MYC(7(eפGLpQ]=Ͽ7 3,:EOUY\YVPHde\~? K-V;FO V/Y9YVOG;. Q?k*ǨPO< ֑d$'~5A!LS#XYWSQK@H4%X'Ѫ!$ʮEV{ޙM6 O/_1"~*ĺޯȩܦVoě#>2D?I"R]WYX{TgMCr7Z)K {@ɏdE/BڸY$ +9wENaUXcYVPQH+=/ G(°N +M$|O$%3~@JRWY?XSwLxB 6':֊_nuyt! 1h- ;FOU)Y@Y8V%P@G;V.::{ݣΊR㨁E+ ǯ1l&,5AKzSXYW;SK>A4*&U&7. 74.^1"/l'o ̦̦),?mu))#1>IQ@WYXTMC7)! U@ڽMħl+ Ҵ9xT %+e96ENEUXlYVQHz=.0F!jy"Ch}Gu@$g33@JRWYWXTLB_6(uȡͲq̵zh  -:UFwOUYOYPVUP}G)<._|8 ٱfbV=g&4mAKRSXYXdSKA4&#Xnzx:tͶB|.6Ϧɦک[M"1>IQ3WYXTM+D8* PؔlݧfᬙV '+9DoN&UXuYVGQH=0!n'n^ͰoӼj$3?JRWYiX&TLB6y(R]/Ϋqu1ͿۧV j,i:FEOUYRYoVPGw</M:M")ꪧ#j< &4-A}KwiRedPanda-4.1.12/app/resources/output/audio/F6.wav000066400000000000000000002570341444020206400220510ustar00rootroot00000000000000RIFF^WAVEfmt DXdata]"a2 @&KVS-XYoWQIL=%/0 1~YԲW:ůR(v#)8%EOUAYYsUjNID~7v(R/ҋy7%hʫ?Bl K0C>I`RWYWRmJ?C1}!g܉#.uਸɷ_0s'6CMUXQY'VOEk9*C%rS̩=ɾj /.oItRWYWRKJ>1R!5x["tɮ+CZ'6CM#UXJYV~OEC9*_I? V؝5 CU.OUBY YSU;N D-7!(*CA |v~R; 0>IRWYWR5J>0$!I9ľxQs"'6C N1UYKY VoOE!9X*m-ʹ#!hۼf- r.JRWYWRJ>0 q{̟ճ{"|ҤL'7C!NCUYDYVQOE8,*=pƣ"+rr#2@KSSXYCWQH<.r1 iԼt%Ĺ!)gU*9EhO VIYY6U NC6' yPy ľ2̲ۓF!0>:JRWYWRJ>0 {ń+70k* .=HQVWY@XwS_KO@2#f? Ӭkzönƒwq%.5eBLTXpYV`PF:0, 2 IЦrev5/I r,+;HGPVzYXTTLB4\%" tƭaf Xf)5#$3@KSWXY7WrQpHQJRWYWvRIm>q0 t )_ګux!`bZK(Q7,DONbUY*g9EO&VQYXUMC6u'-gҳɷިy3dy!B1?kJRWYWbRIF>L0p CەCΫg%4z)Nx(v7MDdNsUY;YUO*E8)(z&ԓJϯ}2]̲\zم, -"/K=HQoWY1XTS(K @^2"MEݣմ̧n% p<&z5B*MTXkYV2PFn:+( WT׺+˦妔Ȉu -q;GPV}YX3TLAn4%(߶Ͼ=Gj 2΃ޕW#y3@KSkXY"WIQ8HQ<. Bpz$ שiJ*o*9EO3VWYXUMmCm6G'7ѐìҨvC6+6%!f1:?JRWYWKRI">#0B Sspa/K(U} (7jD~NUY4YUNE^8)Km/uD_nپT"UM/p=IQyWY+X=SK?B2"yٿʧi<<c&5BBMTXgYxVPFO:+` *1Oºװ"¦ԻȲL *-;GPV~YX$TcLAA4$QhߏϚ#?hD ή0&$3AKSrXYW7QH/<-k iGXݪ{@ƀ`/ +9FODVYYXTMKCI6'hnÐȨsTRKaV!1W?JRXYW9RI>/ #~GR\@^NӇ:(7DNU#Y0YUND<8X)HCjFxOw/=3IQWY$X*SJ?2`"^Q͸pO:*.n2&5BZMTXfYlVPF$:+0 z,Ǡ°Ʊ -S-;GPVYXTML|A"4$$[>gt x7iZõ2 fL$33ALS~XY WQH<-= v;"7˪󩗰VƠ_ ++9;FOPVZYXTM+C 6&6Eu~o]ud͉܆8"1~?J S XYW'RsI=/Ky$ܽ;RIvθtӹi(7DNU,Y&YUND8,)N%SFC/=TIRWYX SJ?19"(s(͔xlaXR_g&5CxMTXbY^VOaF9c+ Ou۱ج= Y-;G QVYXT1L]A3~$5 COc2a.eR4(~$3ZA/LSXYWQG;-b H౽vD X+9ZFO^V_YXTvMC5&mfV&Xfmy ͻܴi"1"1?JSXYWRWI=/Qʽ#P[ŠI )8DNU)Y(YUND7)m|ԸxMU7ؽuB/=nI"RWYX SJ?1 "@prfpxpB|щ7&6"CMTX]YOVOkǧҿu"42? K>S&XY{WQ!Iq=U/bg٪}lIGRWYXRJ7?u1!/;ܱ0:FsҨ-C'd6jCMUXTY8VOF9*s 4W՘#k٩ $plɉ9 -P<0HHQWYgXSKAx3$b0hF5ϐ߸x"$f4AyL3TX~YVPGv; -| &׋ȶȦ(ӺwPQ +m:F0PVjYXT2MB5B&wо1o̧Ӵ?G"]2@&KPS.XYpWQIJ=0/. 2ك]ղY:ȯI#n#)8%E OU5YYpUlNSDx7(\5Ғ{:'jƫ;9m B0C>I]RWYWRpJ?I1!j܈ "3tܨ]'k'6CMUXQY+VOEo9*I-sV˩8ɻe &.qIoRWYWRTJ>1X!9~c"xή߷EY'6CM$UXSYVOEK9*eN;ĩU؛+ =S.IRWYWR:J>0(! I=ɾ|Gv'6CN4UXNY VkOE!9^*r5)ɹ& oҼc( l|.JRWYWR!J>0  mֳ̧uuҟF'6CN@UYHYUZOE9.*>yƨ,:X .BLqTXnYVuPG:],! h>:WئئdJUׇ Ez,;&GPVwYXhTL(B4%U%5-‘gi@|>sg#3@KSRXYAWQH<.|0 rּx" !.kU*9EhOVLYX8UNC6',x\ y 4̢ۘ<!0>/JRWYWRJ>0 @[ˆs :;Ĥ!x(%7 D4NQU YBYU=OlE8 *C~ň*7,d' .NJRWYWwRIn>z0 z0e߫nWaMI(M7&DPN^UY@YU,OIE8)\\Զn篋/E1VʌZ .=HQcWY9XiSDK1@2"6y ìקmඊ¨Т< &P5B MTXpYVIPF: ,\ ֤ @ʦ㦁yVWw@ ,D;jGPV|YXITLA48%]YQl oQ^$#M3@KSdXY5WXQ^Ht<4.  o؛əDʩMh Չ7*d9EO VUYXUMC6z'3lҵзw4 zau!;1?bJRWYW_RIH>R0t JۚGϫh$2v%Gp(t7HDeNnUY7YU O1E8)0z/ԓPЯ4WϲSzʿ~+ +/E=HQmWY0XVS.K @k2"PMݧബקe&n3&|5B,MTXoYV;PFx:+- _`z.ɦ福Ȁq ,l;GPVYX9TLAv4%3߼;Hg*vޗL#x3@KSiXY!WKQ=HR< . Dr|) թfMմ*j*9EO0VVYXUMmCs6L'>єîҨyA6#.!d14?JRWYWRRI&>)0E Yxsd.KV{(7dD~N}UY6YUNEe8)Lp/n9gqٹMMN/f=IQyWY)XDSK?A2"#ۿô˧k<8]&5BGMTXcY}VPFT:+i 23YǿްŦ̻ȨK &-;GPVYX%TkLAP4$QnߓϞ'DfCΩ-$3AKSoXYW7QH0<-v cTY}9vZ* +9FOFVPYXTMJCO6'joÕɨuWIM_N!1S?JRXYW:RI>/ ,Q[];aGӄ8(7DNUY0YUND@8])S$MiFuK|w/=9IQWY$X/SJ?2k"]RͿpO6(%k,&5B\MTXaYpVPF*:+4 2Ǣư񦮪z "T-;GPVYXTMLA!4$%dBh~~9d"Oǵ* ]K$35ALSzXYWQH <-E x>&;ͪ󩑰XƣV %+95FOLV_YXTM/C%6&<Nusdhj̊2!1u?JS XYW'RyI=/X{&;WKsɸjӺ b(7DNU#Y.YUND82)!R+򸓯WH={/=NIRWYX!SJ?1>".v0͖{obRNYe&5CuMTX`YaVOdF:c+ R}ֱת6 Wx-;GQVYXT0LgA3$4A[p)j&gߵP-x$3XA*LSXYW QG;-d G䱾uB Q+9TFOUVfYXTyMC6&okY,Wmor!ʹܰb )"1?JSXYWR_I=/ VĽ!KVŞB ) 8DNU*Y&YUND7)u!ٸxPR0۽qA/=lI RWY XSJ?1"Iwsgmxk?xф'&6&CMTXcYMVO?F98+m &`+-i1 -1>WoGQV"2?J-SXYWR@I=/\%ʜ {E_@m@J)58DNU1Y!YUND7(I[ĻcBXLA˖s /=I4RWYXRJf?1!ejQ\UmɨbáѱX';6CCMTX[YCVOF9+5 nD멱ת M@Yb -<H'QWYyXSLA3-$BDcAb|H$:4A`LTX}YVPG;4-  Y״ڻ¦ٰS֧ R+D:FPuVeYXTNMB5m&K CfͧͿp ~".2?K@S"XYyWQ$It=^/^.dٰkAp%f@px)V8ENU6YYUNtD7(j-ӺěQ4^edڞH 3 0>IERWYWRJ@?u1!2?ܷ1=Ly̨';'d6cCMUXWY8VOF9* I`RWYWRoJ ?I1!o܌$5tިķ Y"h'6CMUXRY+VOEm9*K /{Xͩ9ɯe '.gIkRWYWRWJ>$1X!Bi"vɮ :.v9)8aE4OU;YYRUCND57,(2NA r쫯}K/ 0>IRWYWR:J>0,!O@̾{Bl'6CN3UXOY VtOE+9`*x9,˹+hм \" hv. JRWYWRJ>0!#r̪ٳzsҙF'6CN=UYEYVXOE96*E} ư"&4O .r9%59BLoTXsYVuPG:j,  p>?W٦צbJL ֊ 9|,:%GPVxYXiTL)B4%X+91•jh;z6kc#2@KSNXYDWQH<.}: tݼv#!YK*9EaOVNYX>U NC6'(\ y 泽*̧ۉ=!0>,JRWYWRJ>0 Daˌu 6:Ĝo(#7D9NIUYBYUCOmE8*KŎ'6)^" .IJRWYW{RIt>|0 2h߫s}V[LA(L7!DNN[UYX0u T ۝LΫk!4m!|Dk(q7CDdNlUY8YUO0E8)41ԜO֯~6T̲Qtʺ} !/E=HQjWY3XVS2K @n2"TSݨݴΧo%i0&u5B)MTXlYV:PFz:+/ e`ֆ޺0Ǧ馌}{f ,m;|GPV}YX6TLAy4 %8CNf *pޕC#v3@KSiXY#WNQ>HX<. K{{/ өdBյ!b*9EO4VRYXUMqCw6R'Aіóרt?1#*!e1+?JRWYWURI*>/0H !`x'q`+IRv(7dD{NxU Y.YUNEk8)Vz0q=cmٱMOD/g=IQrWY+X@SK?H2""(´˧j87\&5B=MTXiYxV'PF\:+o 43` Ħ聯ɻȦC %-;GPVzYX&TlLAP4$Xrߗϣ&Ag=΢޿y,$3AKSpXYW9Q!H6<-} "iV[ߪ{3sW" *9FO=VYYXTMUCK6)'noÛͨtUGHWK!1N?JRXYW:RI>0 -RY_;\BӀ1(7DNUY1YUNDD8`)T%Sd@vExp/=.IQWY"X2SJ?2p"bZͼħkJ5"$b+&5BYMTXaYqV PF-:+;  7Ǧư񦭪s Q-;GPVYXTQLA&4$'mCnρ 8eR)]@$3.ALS{XYW"QH<-J |?/;ѪTƞ P !+92FOKV[YXTM4C&6&AO{¨paeḣx/!1t?JSXYW.RvI=/]|1BTIm͸uӨ_(7DNU$Y-YUND$81)'U*]L9t/=KI RWYX$SJ?1F"/1͚}seKGV\&5BuMTX^YcVOfF :j+  ZDŽر ע4 Qw-;GQVYXT;LbA4$8C_o,h'bH-s$3SA(LSXYWQG;-i O t9 L+9PFOUVcYXT~MC6& {oa,[qttͮܫ^%"1?JSXYWR]I=/(Y˽ KUś: )8DNU%Y,YUND7)w& ڸ|QS1Խk:/=jIRWYXSJ?1"K ywiksk9t&&6CMTX]YRVO@F95+m *gŪ+*e* -;GQWY{XSLIA3c$s !5ڵS+b5slS0H$4sABL TXYVPG;e-= ̱$n !w+:rFOfVdYXThMB5&H|D3 =[lDJQ"2?J&SXYWRDI=/_,ʦ D\7n8I),8DNU)Y'YUND7(K_Ŀh@UI:˖i /=I0RWYXRJf?1!gpWZ]tĨ^ÛѯW';6>CMTX]YEVO,F9+; uC橸ڪH?R\ -"<H.QWYvXSLA32$EJh:~Y}?$44AVL$TXYVPG;7- \׸߻԰H֛ L+>:FPpVkYXTMMB5y&L "Ejǧɿl v",2?K9S%XY|WQ'Iy=^/j,nٴʃm@l#]6gs)R8ENU1YYUNuD7(k4ӻĢQ7^caښB. 0>IDRWYWRJG?u1!5Fܸ8>MtШ%<'[6bCMTXQY>VO F9* Ff՝-mߩlaɁ. -G<,H@Q WYoXSKA3 $e5gF3τ߯m$\4AuL.TX|YVPG|;- /אǦ%ͺmHG {+b:F'PVfYXT6MB5G&#5pɧϴ뿗2="W2?!KLS.XYrWQ IV=7/77ٌdٲ^:xɯ;i){8E OUIURWYWRrJ$?M1!u ܔ&9tި T`'6CMUXQY-VOEz9*U6|_̩7ɬ` #.cK^S3XY`WQH7=/ mi?ŲL4ۯ^?ԘD)8?EOU:YYbU^N3Dc7Z(1gte'!|pԫUe h0X>IhRWYWRWJ?&1a!Bf )t8K'6CMUXNYVOER9*"rYG L؍% 6F.IRWYWR9J>06!ZBҾvۮDd}'6CN*UYIYVrOE+9g*C1Ϲ,fͼټT" ^w.YYDU.NC7(a*+}{˳oZ 0> JRWYWRJ>0!${̭ݳzlғ@'6CN>UYIYV^OE 98*JƯ&!.M . z#߼{ [I*9EdOVIYY8UNC6'5` { ᳼$̣ۄ8!0>-JRWYWR J>0 O`ˌw0:Ĕr("7C1NPUYFYUGOoE8 *Rŕ%6`| .! 1>FJRWYWyRIr>0 ˦wzRKk5 ,@;`GPV}YXPTLA4D%e^VfoIT#A3@KS]XY.WfQ]H<<.' ئɞJǩKd|6*a9EOVUYXUMC6'=w(ҾԷ{1yTo!01 ?aJRWYWfRIN>_0y YۡQثf!.m#pEq(c7GD]NkUY9YUO2E8)<4ԜWԯ6Q˲Moʵz /8=HQmWY7XWS3K@n2"UZݭ䴲էj"a,&q5B&MTXkYV:PF:+5 jd֋,ͦ榋xwi ,d;|GPV|YX3TLA4%<JQe (pދB#o3@KSmXY)WLQDH\<. P{Ʌ+ ֩^AխZ*~9EO0VUYXUMyCx6W'Eјúۨr93!!Y1/?zJRWYWVRI0>00O (`|/oīa+EHr(7^DxN{UY8YUOEt8)W x8wMTXjYzV&PFY:+n 78dĺ"Ʀ릛ʻȣ? -;GPVYX+TlLAS4$ ]tߞϦ)Bf9Ν޺u%$3 AKSqXY W2Q.H1<-~ #p\Zڪs4oQ *9FO?VUYXTMWCS6*'uwÝѨoKL=SC!1M?JRXYW 0 1W_a:X=}*(7|DNU#Y/YUNDL8a)S"OiCr x?vj/=,IQWY'X0SK?"2p"j_;pQ*"\&&5BUMTXkYiVPF4:+= :ǨͰæ嶺o I-;GPVYXTQLA+4$-qHw~}=dO'W>$3-A LS}XYWQH<-O H/Cת穓MƔ {R +94FOKV]YXTM7C,6'DV{¨p_bd̂s)!1p?JS XYW-R{I=/[,?UFoøhӨ\(7DNU&Y-YUND$88))\-_M|6p/=DIRWYXSJ?1B"91͢~lbE@PV&5BmMTXbYbVOiF:k+ [NJ Ա נ( Hs-;GQVYX T:LhA4$9$Chu*l"eصG(h$3MA&LS~XYVQG;-o V r9 K+9PFOZV^YXTMC6&tf.djlp|ͭܦW"1?JSXYWR`I=/1V ý+OSœ6)8DNU*Y&YUND7)~, ڸKK,н e7/=fIRWYXSJ?1" M{xprri5l& 6CMTX_YUVOIF9@+s +pƪ& Z* u-;GQWY|XSLHA3_$#>ֵ^$f4ncS(D $ 4oA?L TXYVQG;j-B #ϱg q+:lFOcVdYXTlMB5&JD< B^o?AN"1?J#SXYWRFI=/f4ʫ H^8żg2A))8DNU-Y$YUND7(Q`hG\J7ˎh  /=I/RWYXSJk?1!psZ`YlɨY×ѪM '/6BCMTXWYKVO,F9+A zJԪE9NZ -< H/Q WYsXSL'A39$IJd>vWv8$14AULTX}YVPG;@- g׽㻶򦿦ΰB֓ J+=:FPqVgYXTPMB5u&[/Bnɿgww"+2?K1S-XYWQ+I}=d/k5rڴʌt;h Y4ho)P8DNU4YYUNwD7(%r6ģT9]`\˾ړ@0 0>I?RWYXRJD?1!?Hܿ8EJsϨ}1'\6\CMTXUY=VOF9* @cզ,rީg^|) -=<-H=QWYiXSKA3 $q4hB,πߪf$^4AuL*TX|YVPG};- 4וæ&ʺjB@ u+a:F*P}VkYXT2MB5M&(1j̴̧꿍34"O2?KPS)XYuWQIY=9/@@ٓc[=xį=c)r8EOU5YYsUvNXD7(kE ӟĂC)h}-g5S >01>ITRWYWRwJ$?T1!v ܔ'=sܨM_'6}CMUXUY-VOE|9*W9Հ\ѩ8ɦZ  .]TXzYVP{GZ;,b iuȞȦ6ﺌqt@ +:F;PVhYXT"MBk5#&ZРeڧ ab"u2@5K^S5XYhWQH7=/ smDƲO4گY;ԐD)8?EOU7YYbUbN5Dh7_(7kzg+j֫R` d0V>IlRWYWR]J?.1a!Mp#q®ڷ4F'6CMUXMY"VOE[9*0nWDǩO؇ ,J.5%%Єζ~lܧʬ,͋ݔK"2<@QKrS9XYYWQH=. AB&=1|gԿ&p)8YE3OUAY Y[UCND<77(:UI}u䫭sC" 0{>IRWYWR=J>18![IӾzڮ;e{ '6CN,UYJYVqOE09l*K:͹2dȼغO \q.WYUXSK@3#KΚIibխ~ 8p%4BL`TX}YVP9G;,[ 0&b\iަҦO/&R E,:GjPVqYX}TLSB5%Wbj`°tj۬Qι|5,#2c@fKSDXYSWQH<.r R2&ŐU)*8tEMOUHYYLU-NC7 (d2+u³oS 0> JRWYWR'J>0 !/z̺سw m҉:'6CN8U YBY V[OE 9A*SƱ$|(I .(JRWYWRJ>0 Ogˑ³v~ 22ēҽg(7D,NMUYCYUEOuE8*WŐ&3!Uz .WyQHAJRWYWzRIw>0 Csu{OWļ? 7(C7DKNWUY>YU.OXE8)j#fv﯍'G,EʂH .=HQ]WY^0 Z۪Oիi +mxr7](o77D_NnU YEYU!O1E8)B9ԢWگ1RDzImʯu /8=HQkWY3X_S/K@o2"aZݲ ⴹӧj!нa$&n5BMTXoYV;PF~:+? lnև0ͦ㦌rs c ,[;}GPVYX@TLAz4%?HLi)hފ9#h3@KSjXY(WOQGH`<. V؂Ƀ5שY~CբY*w9EO2VRYXUM}C{6]'Hџúڨr:,!X1)?wJRWYWVRI1>90O 2aڃ.wëd-AGl(7UD}NrUY3YUOEq8)\z;ïv<]h٤@>B/[=IQuWY/XGSK?J2"2,ݍ˴ҧd-'T&5B9MTXjYzV+PF`:+s ;=gʺ(¦ƻȜ; -;GPV|YX)TqLAU4$e{ߡϫ)=l:Δ޹n$3 AKSlXYW=Q'H><- "|Xfߪ v)dK *9FO>VWYXUM_CV6.'{}ÛΨrKF>O?!1J?JRWYWGRI> 0% 4X\]9UAn)(7yDNUY6YUNDK8n)d0VmAqu:og/=+IQ~WY$X5SK?$2v"obſħkE/V"&5BPMTXcYsVPF5:+@ >ǫаŦg E-;GPVYXT[LA54$3tQtϊ8hNO;$3+ALSwXYW'QH<-V H8@Ԫ穒GƎxK +9.FOIV[YXTM:C/6'IWÀèp\``}o$!1m?JSXYW0RI=/c0DXHjĸdӦQ(7DNU%Y,YUND,89)-b5[D.m/=JIRWYX)SJ?1M"=:ͣlZI BFM&5BmMTXdY`VPfF:m+ bLJѱח) Ik-;GPVYX TI;RWYXRJH?1!DM>EOuͨyþ{-'W6XCMTX[Y9VOF9* Fcկ*yܩdYy" -7<*H/FIّmܲf6s¯IYRWYWRzJ)?X1! ܜ,IiRWYWRbJ?01j!Lu&t訾ٷ.xC'6CMUXMY#VOEY9*.v_GǩG؂ +B.I{RWYWRFJ> 1:!eF޾ |ծ<[t'6CM-UXJYVrOE39o*G8ӹ5dشL ]e.<{H{QJRWYWR*J>0 !.(̳x cҊ4'6CN›kh7n*YZ#2@KSLXYGWQH<.H /|""ƷP=* 9E]OVGYY?UNC6'=g| ٳ̗}+ !0>$JRWYWR J>0 Tp˕ȳ|{0+đҴ d (7C.NGU YCYUHOxE8*&Zř&0Qr .W}QHDJRWYW|RI|>0 !FvrHVĵ81(A7DHNVUYAYU2OZE8)o'i{﯑,@&@ʁ= .=HQ`WY=XqSQK=@2"J.ˬܧl Ҷ}•А&%A5sB MTXkYVSPF:,o ֲ @Ѧަ}nJ>Z3 ,3;]GPVuYXITLA4L%q iZgg~7R#;3@KS[XY/WkQbHj0 eۮPѫp}!*fzi7`(c7;DXNkUY80X 5gچ4wȫa'C ?b(7VDvNrUY4YUOEz8)b>ǯr6b۲hٝ?<:/Y= IQuWY/XJSK?M2"90ݐ˴˧l2 T&5B4MTXlY}V+PFb:+z DAoǺ"Ǧ릗»Ț3 -;GPVYX2TnLAT4$ rߣϮ/Eg1Εޫo $3AKSpXYW0* ;^`]7U4q$(7rDN~U$Y-YUNDP8o)e2^iClt/p`/{=,IQWY#XvV|ψ1EJ -<H$QWY{XS L2A3E$R&Sk6qKl.$)4ARLTXYVPG;J- s黼˰5փ C+5:FPqVcYXT[MB5& c1Hkçcnn"2?J7S XYWQ3I=l/x<ʎpEhW*Yd)G8DNU+Y$YUND7(.wDĩ[9]\ Q˸چ7$ 0 >IARWYXRJN?1!FS@KMrΨuùq+'R6XCMUX^Yנƻæ"úa<ֵ> q+[:F'PxVkYXT@MB5W&.7mɧǴ⿅(,"I2?KCS-XYtWQIa=C/IKٚpݲk1mů3y X )m8EOU7YYxUzN^D7(nNӪĆI)^īp.zڸe#O 10->ITRWYWR|J+?_1!'ܟ0IeRWYWR`J ?-1v!Nv1zԷ +qA'6CMUXMY%VOE_9*7~fKǩK؀ (9.<]HdQ/WYaXSK@B3#VHރοljVedB%4ALITXwYVPcG?;,: kMPȌu}Φ>njd ,:FMPViYXTMyBL5&4 iڧȬ)݈̈́B"28@IKmS;XY`WQH=. IK,C.s`Ա!l)8SE*OU=YY]UHN"DF7?(FZR|vޫk5 0r>IvRWYWRDJ> 1C!!kM޾vή:Sk'6CM(UXMYVOE@9n*K7޹/YƼحF Sg. JRWYWR,J>0!9$̽ ya҂0'6CN8UYFY VaOE9H*[ƻ!t%w@ .M>¡of5h)ZO#2v@KSNXYFWQH<.N 0뼂"#ƲL;*9E^OUJYYAUNC6'@o{} ճ̏|"!0>"JRWYWRJ>0 ]p̖ʳz}-(ċұc'7C.NEU YBYUKO{E8*-^ş$.J q .>JRWYW|RI>0 %Kyv{GPij9-(:7D@NYU YBYU5O]E8)x0n|󯒩-<Bv? . =HQaWYDXkSZK@@2 #V6Ьܧjζ|Ў!%95uBLTXvYVXPF:&,s !ָEΦvp|I9[# ,=;OGPVxYXNTLA4P%x hŭTocz2M#23@KS\XY3WkQgHWJRWYWkRI\>e0 `۰Wثl&gre/X(c71D\NeUYPF:+E zu֓1Φ妆mgX ,X;uGPV|YXBTLA4&%GOQh#fu8#_3@KScXY(WTQNHe@0] 7qډ8yɫc'= :b(7[DnNuUY7YU OE8)eԀDį{9]ڲd٘; :3/V= IQsWY0XJS$K?U2"4=ݐдͧl1M&5B3MTXgYV-PFh:+ LJnϺ%Ȧ馗Ȕ1 -y;GPVYX/TxLAb4$oߧϵ.Cf1Βާg$3@KSpXY W?Q1H@<- /]qݩm+_@ *9FO7VXYXUMcC_68'$хâѨrFC2A8!v1F?JRWYWHRI>00 Cbfd9P2j(7uDNUY2YUNET8u)q?`$qEgi0d`/x=&IQ}WY&X;SK?*2"y jϿ§lB%Oq&5BMMTXiYrVPF>:+M KǬٰ¦򦢪ڻȺe ;-;GPVYX"TZLA:4$@z^|ϒ:iIξF.$3ALSvXYW,QH<-` S>J֪驆GƋlA +9$FODV[YXTM?C;6 'V`ÇǨqX\Tlj!1f?JRXYW5RI=/ m=L[Dg]әI(7DNU Y1YUND28E)7n;dMy+a/=DIQWY"X&SJ?2U"IEͩoWC9?|F&5BbMTXkY^VPjF!:t+& g ǔ 򦶪̱א ;g-;GPVYX TDLrA4$ T&]ht3e'Wֵ8xY$3=A"LS~XYWQG;-z1 c-/ʪdƲ*q ?+9IFOUV^YXTM#C6&'s=gyunsx ͚ܙF"1?J SXYWRoI=/AeϽ2MKٸņ'y)7DNU%Y+YUND8")8븄TL&ĽW&/=ZIRWYXSJ?1%"Z"́nlm\,`lt&6CMTXbYWVONF9K+ ?mJ i-;GQWYXS+LPA3p$!/K۵h"l+mXI9$3cA9LTX}YWPG;x-O 1ձW k+:fFOaV`YXTtMB5&XQJO_k}3t7?"1?JSXYWRRI=/u DʹJ\&ųW$4)8DNU/Y"YUND7(]n̸oHR;'˂X/=vI-RWYXSJv?1!/{gebmŨ{IÏј:&$62CMTX\YKVO3F9%+T Y򩴦Ϫ<*CJ - <H!Q WYsXS L3A3C$\,Rf:} ~mGg*$#4ALLTXYVPG;V- xȰ5 ք 8+0:FPjVfYXTXMB5&*b(/Nl§Ycl"2?J/S$XYWQ0I=o/xKw ʏv?dIQY)J8DNU.Y!YUND7(1}FĪ^9YUP˭ډ+ 0>I9RWYXRJT?1!RR@POwǨwñ m('K6VCMTXXYAVOF9*) Nlչ/|㩯 ۪[Rov -7<HgB#vߕ\$M4AnL"TX~YVPG;'- Dנϻ%ްú[8ֲ4 i+X:F&PvVkYXTAMB5_&1=lʧ´~( "D2?KCS+XYvWQIi=D/ORٗwg:q/xT)j8ENU8YY|UzNeD7(wPӥĒE.an*uڵ] J ,0(>IRRWYWRJ,?d1!)ܥ"3?t֨; S's6sCMUXPY6VOE9*j(GՎgѩ -|xɚJ .UIfRWYWRaJ?81r![x+s㨿η#q5z'6CMUXSY"VOEa9*6hQĩ?t 9.y<\H`Q0WYbXSK@I3#`HތοrfZcc9%4ALHTXxYVPeGD;,@ mNWȍz{˦>ǎb ,:FHPVnYXTM|BS5&;ЉݶmקƬ#݂̀>"20@KKiS9XY]WQH=. RO0C/nYԲ^)8OE)OU=YY^UJN'DH7E(K`Srޫf1 0i>IpRWYWRJJ>1D!)mS߾vѮ/Tk'6CM(UXPYV}OE?9t*TBٹ8cةA O`.3r^F 0>JRWYWR-J>0!;-̼ x [Ҁ+'6CN7UYIY VcOE9O*c'!Ʒ%s"s9 |.JRWYWRJ>0  [~ˠɳ{}$*ăҭ^' 7C$NIUYEYUNO}E8!*1cŝ &,Ij .̺۠T .!0>?JRWYWRI>0 2Jzt DKİ/.(27D?NSUY>YU6O_E8)~2p&A!8u6 .=HQcWYEXmS]K@@2#V5άh̶w‹Ѕ%65pBLTXlYVVPF:),| +ֻBӦݦwl|A8Y ,5;QGPVwYXMTLA4P%q_fas0F#93@KS]XY9WgQpHTJRWYWqRIb>k0 k۹V֫n%bo \/X(Z74DTNfUY>YU!OAE8)HC԰`ே/PC]ʣd /0=HQgWY:X`S=K%@}2")pe 򴺬קl붘·бP&b5BMTXhYVAPF:+I ֓5ͦ䦆cgT ,U;pGPV}YXDTLA4+%LMOh ~ap4#U3@KSbXY)WYQLHoH0_ >uڋ<}ȫf&>z<\(7QDnNsUY9YU OE8)oԉCʯz7]ײ_ٖ1 03/O= IQqWY+XUSK @Q2"?=ݖϴʧm+ {G&5B0MTXjYV.PFm:+ UQpӺ'ȦꦓȊ/ -x;GPV~YX0TyLAf4$!r߱ϲ7Hg0Ύޠd$3@KSoXYWFQ0HH<- 7gm# کm&[7 v*9FO9VUYXUMgCa6?'*цç֨nAB.?1!s1??JRWYWERI>05 Jfd]3Q.c(7tDNUY1YUNE]8r)l?d&q@j񲀽ٽm$dZ/r=&IQyWY$X=S K?02" qпtD! Ht&5BJMTXgYsVPFE:+P  NDzװĦ׻ȸ[ 5-;GPVYXT`LA>4$F`߃ϓ=gEζ?,$3ALSvXYW*QH <-` YDJԪ쩀Gƈm8 +9'FOGVWYXTMCC<6'XdË˨nXUWn_!1Z?JRXYW9RI=/ o>M[Cc\ӐF(7DNU#Y.YUND38L)?r= aD| $Z/=?IRWYX2SJ?2]"KJͫoY;0/CMTX\YNVO8F9&+V W򩴦Ϫ:';uH - <H!Q WY|XSL3A3H$`*ʵM%c8~fBc"$#4AMLTXYVPG;U-% zűĦʰ1ց 1+*:FPlVdYXT^MB5&-j,"1RnT^i"2?J4S XYWQ5I=r/LʗwBdKJS)H8DNU0Y#YUND7(3EĬ_>`ZQ˦ڃ& />I>RWYXRJT?1!P]KLTqͨmðg#'H6QCMTX]Y>VOF9+- Vtն;y穯ܪYMir -.2?KBS*XYzWQIk=K/RR٥sh9n,uQ)e8ENU1YY|U|NjD7(U"ӪēI0bm&qڮYG '0%>IMRWYWRJ4?d1!1ܨ%6AtԨ;O'n6oCMUXSY2VOE9*n0PՏiԩ -xtɓI  .V<8HLQ#WYmXSK@y3#Oz޺+fJ<Ϝ,%k4A|L9TX~YVPGq;,u ȴɦ-ߺ|_a) +v:F6PVkYXT,MB~54&nб'g֧FS"e2@'K[S-XYpWQIB=%/" #{TͲ[/zүO,|.)8)EOU>YYpUfNFDw7q(M)҅w3#gЫFGs R0G>I_RWYWRgJ?=1x!^~1q樸Ϸ$e7t'6CMUXPY'VOEf9*;pRȩ@ɼz 2.yIrRWYWRTJ>1I!0o\ xЮ*Pg'6CM&UXLYVOE?9~*YGܹ8bؤ9 Dc.JRWYWR6J>0!?5̾ yWy,'6CN4UYGY VlOE"9M*f/&ƻ$ sڼl4 x.JRWYWRJ>0 `̠г~|"$āҩS' 7C#NGUYIYUTO~E8'*3nŢ &)Cg .#A]%ht𭯶LbOJ%5KBLuTXqYVnPG:Z, a/9QئئhP[ ך G,;5GPVvYXeTL B4% H)&‹حghEGt#3@KSVXYEWQH<}.m+ ^ Ҽn(Ĺ-9r\*"9ElOVKYX2U NC6'lQzȾ:̳۞L $!0>9JRWYWRI>0 5P~t ;LĨ+)(.7D;NUU YAYU8OeE8)6rł+:4s, .=HQZWYBXsS[KJ@2#X8 Ѭާl{̶m{{%55iBLTXqYV[PF:),} 1!CԦܦxfz=3O y,+;PGPV~YXXTLA4V%pǭ[ghq.<#03@KSVXY4WoQnHZJRWYWsRId>r0 r%۹]۫m&\nZ'S(W7/DTNbUY?YU(O=E8)[ JԳf߯4J>Zʜc /*=HQcWY5XfS>K)@2"*wkìѧrᶘ±ЪQ &a5BMTXnYVFPF:,M {֞:ɦ禃^dJ ,V;hGPVYXHTLA4,%RUQi}[l,#X3@KSeXY*W\QQHn<+. iؐɓ<ͩTs,Տ K*o9EO'VSYXUMC6m'*\ѳ·ܨw6 i!E1?nJRWYW^RIA>H0g A{ڏ@~̫g'9z6Y}(~7MDnNoUY6YU O$E8)%q"ԋI˯{7YײZٍ0 .-/L=IQqWY.XVSK @Y2"J:ݣش˧p+wA&5B.MTXmYV.PFi:+! RRu׺-Ħ즐ȍ#{  -t;GPV}YX2T{LAg4%"z߷ϲ>Ig1·ޠY#3@KSmXY"WBQ9HG<. Btj* ܩi#W4 p*9FO9VSYXUMeCk6>'0ъëԨuI62<+!o1:?JRWYWIRI> 08 Kke\1Q(b(7nDNUY3YUNEb8w)uFl$j \-;GQWYXT+L\A3{$( 6Qd,f,jS@ 3~$3]A1LTXYWQG;-] C ױy O b+9`FOZVdYXTvMC5&fbM$Oiou,ͽܿm+4"1?JSXYWRPI=/~GʹO[#ŦL-)8DNU/Y!YUND7(lzѸuIQ6߽ yN/=tI%RWYXSJy?1";rhhs|tFÃя7&"6)CMTX^YOVO>F9.+\ \̪7 =x; -NmUTh" 2?J.S!XYWQ9I=y/NʚtIe LzJT)?8DNU*Y'YUND7(?Mı`?_XJ˥z% /=I6RWYXRJ\?1! UaLQUpͨkéd'E6KCMTXTYGVOF9** c{ռ9⩵ު XIbt -,<H3QWYyXSLA3$6@dA kߌP$F4AgL!TX}YVPG;2- UׯϻݰW*֫' [+I:FPyVfYXTCMB5k&=AqħԿ{"62? KGS#XYxWQIm=O/XZ٫sdAq.iEx)c8 ENU3YY|UNiD7( \#ӲĔK2dnpګR= $0#>IQRWYWRJ9?i1!'5ܪ,7CtԨ6H'k6mCMUXXY1VOE9*o0RՒ!dܩ+sqɐ@ .N<7HKQWYhXSK@z3#W޻2 gK<Ϙ߼(%l4AL4TXYVPGt;-u "׈ȰȦ*ٺy[\# +u:F5PVjYXT*MBy5?&p й-kҧ۴JG"e2@)KTS-XYjWQHK=%/, *ـWҲW9˯L'v0)8*E OU5YYoUhNMDv7z(O(҆~./xpǫ?Hj Q0A>IcRWYWRkJ?>1!b܃ 3r㨶ͷc1u'6CMUXYY VOEk9*E%pVƩ >ɹs 1.qIpRWYWRPJ>1O!3v_ tʮ'Ja'6CM(UXPYV}OE@9*\J<Yء5 FU.IRWYWR1J>0*!M5ľ{Pw '6CN7UXKY VkOE9U*l2'(oּk- s..*8EQOVDYYCU"NC7'Qx"zѳ ̃g 0>JRWYWRJ>0 i̡Գu ${ҦP'7C!NDUYFYUUOE8)*;nƠ#( AZ .?ts#2@KSXXYBWQH<.n3 cӼs"ƹ#/n]*9EhO VKYY4U NC6'uRyľ6̯ۗH#!0>9JRWYWRI>0 =T˄t~ ?AĨ& (07D@NKUY=YU9OfE8* @ņ'<0j. .=HQVWYAXuS_KN@2#f9άjzǶkˆto%15fBLTXkYV[PF:/, 7#GѦݦwa{42M w,.;HGPVwYXVTLB4]% kͭZi_o$<##3@KSYXY7WpQrHPJRWYWnRId>v0 v (۾aګsz]fU$M(U7'DXNZUY7YUONE8)WOԹcꯃ,J:UʝT .,=HQ`WY5XhSAK-@2"0}oۧhⶒ­ШA&V5BMTXlYVHPF: ,Y ֠ 7Φ妀aX{F ,S;eGPV|YXDTLA45%SYTg{Vh'#R3@KSaXY,WZQXHo<3. pؔɗAϩPo%ՏC*o9EO'VOYXUMC6q'.bѵƷܨu+% c!=1?dJRWYW_RIA>O0k BۑBͫg!YUO*E8)(v$ԔE֯t-bʲ_{َ$ $,/F=IQoWY2XPS+K@b2"FKݛմЧi(u;&~5B,MTXmYV6PFp:++ RT{ۺ,ɦ榕Ȋz -s;GPVYX9TyLAk4%(߱:Gi 3΁ޚW#y3@KSiXY#WFQ9HN<. @qu&թjRջ1q*9EO2VYYXUMkCm6F'6яéϨwC9*6&!n13?JRWYWLRI>&0; Npk^.O ` (7gDN}UY7YUNEd8|)uHl-q:kzټW$TT/j=IQvWY XHSK?92"uڿƧm@>c&5BAMTXkYwVPFM:+` %&XǸܰĦֻȴM ,-;GPVYX#TeLAI4$Lk߉ϝC`= ή8"$3AKSwXYW0QH+<-l dHW 㩁;za. +9FO?V]YXTMMCD6'ciÒ˨pSRNcW!1Z?JRXYW8RI=/ "}IQV:dNӋ:(7DNUY2YUND@8Q)IzK _ByOz/=;IQWY#X-SJ?2`"[NͷqR:.,r3&5B\MTXeYiVP|F$:++ {0ǚŰűׁ (]-;GPVYXTJLA4$ \;dvz6f!T˵-iK$39ALSxXY WQG<-< u;:Ϫ\ƥ_ -+98FOLV^YXTM+C6&1zLosgko̍܈7!1y?JSXYW"RvI=/Mx߽6PFxϸvӼk(7DNU&Y(YUND8+)M󸋯YKF/=TIRWYXSJ?17"'p*͐ulgR"Q^c&5 CsMTXdY[VO[F:W+ L {ر ج? Y-;G QVYXT/L^A3}$3>Si,d.cL<.|$3[A/LSXYW QG;-] A ౽yL \+9[FOYVdYXTwMC5&h\[!Vjov"Ϳܳl#2"1?JSXYWRUI=/OL]ţH&)8DNU)Y%YUND7)kvѸyIO1޽tH/=pI$RWYX SJ?1">pnjt|pAÂц3&6)CMTXaYMVO:F9-+_ cͪ23o6 - WLAˣs /=I1RWYXRJ`?1! ^fRRWpʨiäѼ_'A6JCMTX^Y@VO F9+. jվ?穱تPH]k -*<H2QWYsXSKA3%$;Dg>g߆K$A4AaL#TXYVPG;4- Yװ׻ŦݰS)֢& ]+L:FPuVgYXTIMB5p&> ?g˧Կu"32? K>S)XY}WQ!Io=V/\$^٫|n;m'jCt})\8ENU4YYUNjD7(^+ӴĕP1`jlڦO; 0>IKRWYWRJ=?l1!*:ܰ/:DuӨ.F'e6mCM UXXY6VOF9*t 3S՚nש (pmɊ< .L<4HGQWYmXSK@~3# W1fH5ϖ߶|#$j4AyL7TXYVPG|;-} &ׇȹƦ+ֺvTU +m:F2PVlYXT-MB5A&yк/jЧ״?G"X2 @#KTS-XYnWQHQ=(/1 1ف\Ӳ[8|̯Fx)8)E OU6YYnUnNMD|7~(V3ғx:%dϫ}A>l C0F>I`RWYWRlJ?I1!j ܇8wިɷa(n'6CMUXMY.VOEd9*?-oPϩ=ɻf -.mIpRWYWRRJ>1Q!=xb&yˮ"F['6CM$UXOYVOEE9*fO=]؝0 >V.+oΩ^h]ĭrY%4BLRTXuYVPPG-;,| W:7{htߦҦD"Ǫ.} *,:FcPVtYXTLjB45%uuŶ ynݧӬ :͜ݥ\#2G@_KoSGXY\WQH =. 3m6>&y<)8^E?OUDY YRU>ND27#(.G@ x|䫼zL9 0>J}RWYWR9J>0&! J=ƾ{Jt'6CN5UXLY VoOE%9[*s7*Ź(nӼ a+ n{.JRWYWRJ>0 k ̮̳y}ҘM'6C N>U YBYVXOE9-*=wƧ&%@W .=pn#2@KSTXYDWQH<.y3 lۼq%$*hT*9EfOVDYY3U NC6''}Sz 3̩ۓC!0>3JRWYWRJ>0 >[ˆ{| 9?ģ!z((7D8NQU Y@YUTJRWYWwRIi>|0 {.c۫s}\_RK(L7*DNN`UY>YU(OIE8)cSԹnᯑ3D3VʐX .=HQaWY7XgSHK+@2"4uŬקl޶¨Т> &S5BMTXqYVIPF: ,] ֨ <˦妀xUZvF ,G;hGPVYXJTLA45%\^[cpUa"#Q3@KS`XY+W`QXHw<1. tؚəBΩMm!Չ=*c9EO(VPYXUMC6t'3hҳзw4dt!A1?kJRWYWaRIJ>N0s JڞA˫k'2v(Kw(q7LDcNqUY$0G Wx ob2H#S|(7fDNyUY3YUNEm8{) vJr-r?dtٶVUJ/l=IQyWY+XASK?72"z߿çq?:c&5B@MTXkYuV"PFR:+c .3Wǽ߰ŦԻȯJ +-;GPVYX#TjLAK4$TpߎϠ#Af?Ϋ/$3AKSqXYW6QH0<-u cQWު~7v[+ +9FO;VaYXUMQCK6'okÕͨoNSE\S!1Y?JRXYW7RI=0 #JW`>^HӇ6(7DNU Y2YUND?8Z)NKcBxM~w/=7IQWYX5SJ?2e"^UͶnT0$,i2&5BZMTXeYjV P|F.:+8 | 0ǡǰ Ǧ즳u )R-;GPV~YXTQLA 4$,YHb4h Rǵ,`J$34ALS|XYW QH <-A z@"=ЪRơU %+94FOIVaYXTM.C$6&?Jw}ociǩ܀6"1x?JS XYW+RsI=/Q}%߽>UHwɸpӶe(7DNU#Y,YUND8.)"L(󸒯VHEz/=PIRWYX SJ?1;".s.͕{ofOPU_&5CyMTXbY^VOaF:b+ N ǃֱ أ= V~-;GQVYXT4L_A3$5AWj-f+dN2'r$3UA,LT}XYV QG;-` H䱼vC T+9\FO_V]YXTzMC5& ne\'Yjkq ͹ܭj/"1?JSXYWR_I=/XƽMZşE  )8DNU,Y$YUND7(w~ڸvOO3׽pB/=mI"RWYXSJ?1 "Fqvfnvq:р.&6%CMTX]YTVOFF9:+m $dê*1n1 -A3W$p8εX$e5wtW6P$4{ABLTXYVPG;f-1 ȱ °%p %}+":rFPeVeYXTcMB5&<}55>VoMM\"2?J1SXYWR9I=/W$ʟ |Da > v=O)18DNU0YYUND7(EWĹf=WM>˞n /=I5RWYXRJ^?1!aiP[Tm˨càѸW'96ICMTXZYEVO&F9+= gE쩯ت P@\` -&<H/QWYrXSKA3*$CHg<]߈A$>4A^L"TXYVPG;8- Vױٻ򦾦 ҰJ$֠ R+?:FP{VaYXTMMB5o&H Enŧʿw }"/2?K?S$XY|WQ%Is=Y/a(g٭ʀm=l&c?pu)^8ENU2Y YUNrD7(g*ӼĖV/^dcڟL< 0 >ILRWYWRJ;?w1!1>ܵ0@CqԨ'='g6aCMTXWY4VOE9* ;Wաs֩ &liɆ7 -H<2HAQ"WYpXSK@3$ f4iD4ϋ߷q#$g4AzL/TXYVPG}; - )׉Ƚ¦/ֺpPO +i:F-PVgYXT7MB5<&0kϧѴITRWYWRoJ?K1!p܈8uިǷaf'6CMUXVY&VOEo9*J.xTѩ:ɳd #.nJ3ݯcIԜL)8AE"OU>YYcUZN.D^7S(-^ nb%nثY j m0`>IpRWYWRVJ>#1W!?_ "uʮ!=S'6CM"UXNY VOEG9*iTETؕ, =L.YYQUEN D:7&(0KB q~Q+ 0>IRWYWR7J>0/! R;;yݮIl'6CN/UYEYViOE(9[*q4+ʹ*n˼\# mt.JRWYWR"J>0 x̪ԳxrҚJ'7CNEUXLYU[OE96*Iw Ʈ%#9R .z,:&GPVyYXmTL*B4%X(81gi>z;nf#2@KSQXYEWQH<.{; n޼s #^O*9EcO VFYY3UNC6'.}^ y,̤ۑ9!0>,JRWYWRJ>0 >dˋx~ 4>ěr($7D5NOU YCYU@OmE8 *FŎ+3(c! ., C%LѦަq_q.(׷B k, ;HGPVxYXZTL B4h%&vέ^hWa0# 3@KSXXY:WtQxHKJRWYWwRIp>}0 /gޫuzX`IE(I7&DKN_UY=YU'ORE8)_YԺt⯓1C2OʏN .=HQbWYU0w OۡFЫi#1s&yJp(p7GD_NrUY20C $X}!ve1EQy(7^DNwUY4YUNEe8)St2u@amٲONI/b=IQ|WY/X@SK?A2"$!݄ۿŴʧj43[&5BAMTXjYyV PFP:+g 57[º æ連ͻȨG %-;GPV|YX%TkLAP4$WpߕϤ"=j>Χ޽)$3AKSmXYW7Q#H0<-z nP\ݪ |2pV$ *9FO:V_YXTMRCP6!'qpŲ̀uWGHVO!1Y?JRXYW:RI>0 ,NVY7_Mw1(7DNUY0YUNDB8a)U"ObAu~Iwt/=/IQ}WYX7SJ?2k"e^ͷŧjL2!'b/&5BZMTXaYrVPF*:+8 8Ǡ˰񦬪t $M-;GPVYXTRLA&4$&iDm~ ~9fPƵ$^A$3/ALSyXYW QH<-K y;/:Ъ󩎰WƛX $+93FOIV]YXTM4C%6&>M|~¨obfg̃,!1t?JS XYW(RyI=/R&8PIlϸqӰY(7DNU(Y)YUND 82)%Q.^M> r/=NI RWYX#SJ?1D"./͛|oaQPO[&5CnMTX`YaVOeF:i+ Vǃӱء5 Nz-;G QVYXT6LdA3$5B]m-g)aF3&k$3PA*LS~XYWQG;-k I l? O+9QFOWV_YXTMC6&wl`+\mor!ͮܭa*"1?JSXYWR`I=/)R½%MRŖ<)8DNU(Y(YUND7)y ܸyOM0ѽg?/=lIRWYXSJ?1"J uxhnsm9w~*&6!CMTX]YUVOIF9:+k *eŪ)(e- -;GQWYzXSLEA3^$u 9ҵ] j.{rQ1M$4pAEL TXYVPG;b-= DZ 'r y+:pFPbVhYXT`MB5&C}>7AXpHGV"2?J(SXYWRCI=/a+ʥ ~E\> k=H)08DNU-Y#YUND7(L\ĻhB]L9˛i /=I3RWYXRJa?1!gnVZ[sŨ_ÞѰW '>6>CMTXaY?VO%F9+> pF詶تN:Y_ -"<H2Q WYrXSL"A31$EHh;}]|A$:4A^LTX~YVPG;9- _׷ܻ󦿦԰I֝ K+>:FPoVkYXTKMB5v&I !Frʿn x")2?K=S$XY}WQ%Iy=[/j*mٲʂo=k#`;mt)V8DNU3YYUNrD7(m0ӽĜU2Z^^ڜA/ 0>IFRWYWRJE?w1!4Gܴ:_՞+lީmaɅ. -J<*HCQWYoXSK@3$e4gE3υ߮s$\4AvL/TXYVPG~;- 0׏Ŧ(κpGG {+c:F*PVjYXT2MB5K&1lͧдᅮ99"Q2?#KKS/XYoWQIV=5/67ِ]޲Z<{ǯ@c )}8EOU7YYrUtNQD7(f?Ӗă;*i1u4_ @07>IWRWYWRwJ?R1!rܑ)5vڨXb'6CMUXRY.VOEs9*R3|Yϩ 5ɯ` ".gIkRWYWRWJ>'1]!Di#w̮ڷ8M'6CMUXSYVOEM9* nZGR؍( 7I.IyRWYWR?J>1+!PAѾtٮDj'6CN4UXPY VrOE+9d*x8+ι.iʼٽX ct.WYYXSK@3~#WΆPehҭ"<{%4BLcTX{YVP6G;,S )cTjܦӦR0,[ M,:GiPVlYXuTLLB5%S\fW±vhܬ"T 55#2d@pKSHXYUWQH<.s H/$ ŗa**8EGOUAY YGU)NC7(d ,) y}ijvZ 0>JRWYWR!J>0!)r̴׳zjҘC'6CN?UYEYVVOE9=*L~ Ʊ &/S . y#޼{ "_L*9E_O VGYY:UNC6'1` w ߳"̧ۆ6 !0>2JRWYWR J>0 Idˎ}w86Ěu("7D/NQUYFYUEOnE8*HŊ%5 &\ .DJRWYW{RIu>~0 7lqR\G>(G7 DMNYUY+MʈM .=HQbWY?XhSMK7@2"E(ĬܧkضžЛ4&H5B MTXlYVPPF:,k ֫ @ϦަnMPm9 ,B;`GPVwYXGTLA4=%jfZdqE\#E3@KS`XY/WcQ`H{<@. ئɛLũNg6*`9EOVTYXUMC6~'=u%ҹ׷w,vYj!81?bJRWYWdRIO>Z0y U ۣIͫn!2l vCm(l7ADaNmUY?YUO0E8)94ԟNܯz1VƲSmʺx />=HQsWY8XVS1K@l2"WUݮᴶϧn$g)&v5B(MTXnYV:PF{:+6 ffւ2ʦ䦏vzi ,f;}GPVYX;TLA{4%7IQb%tމF#k3@KSlXY)WJQFHW<. O}. өaGը%c*9EO/VVYX UMvCy6T' FњõԨx@/&!\1.?|JRWYWRRI+>00P "d|)t`)INs(7`DzNxUY4YUNEl8) V|1ïs?_kٮGIC/c=IQwWY-XBSK?H2"()݄ƴʧl9,]&5B9MTXhY|V#PF[:+m 57bĺ$Żȥ? -;GPVYX+TkLAO4$byߘϧ(Ah;Σ޶{#$3 AKSsXYW9Q%H6<-y zNex1hO *9FO;VXYXTMUCQ6)'tzÕ˨tPGFWE!1P?JRXYW>RI >0 .X]];WEz%(7DNUY/YUNDG8d)Z+Te>w zBvl/=/IQ}WYX6SJ? 2n"j^ŧhG1%]&&5BPMTXeYpV PF2:+;  =ǡҰĦ𦪪n N-;GPVYXTZLA/4$-lJryB^$K&OI$33A LSyXYW%QH<-L H-AӪUƞQ !+92FOJV[YXTM3C-6&DQ~ƨk\ed̀y(!1s?JSXYW*R}I=/Z0DWIkʸjӫ](7DNU"Y/YUND"89))[,\J;p/=JI RWYX$SJ?1B"9/͢qbHENS&5BoMTX`YbVOcF:f+ [Ljӱ ל0 Lt-;GQVYXT$AKf<{Uz;$24AWLTXYVPG;>- c׸廱ĦѰA ֎ K+9:FPwVaYXTRMB5|&Q(Ekŧɿgxy"+2?K9S#XY{WQ)Iy=e/h5oڶʇoAo#Z2cm)P8DNU3YYUN{D7(n7ӿģR:b`\˾ښ9& 0>IGRWYWRJI?x1!;Gܾ8CKsϨ3']6^CMTXSY=VO F9* Hfբ-oߩ !db|, -;<1H:QWYlXSKA3$g3eF1ρߪi$_4ArL/TXYVPG;- ;ח»Ʀ&Ⱥq>B w+`:F'PVfYXT8MB5O&! 3lΧϴ迒28"R2?KMS+XYqWQ I[=8/==ِf۲`9xƯ;`)w8EOU;YY~UlN^D7(mE ӗċ80eƫx5p1X =04>IVRWYWRqJ(?P1!wܚ-8v٨Qb'6CMUXSY.VOEv9*T3Յ_Ω 4ɦ^ .fIjRWYWRVJ?(1c!Hj'uǮ׷3J'6CM UXUYVOES9**lWBǩR؋! 3C.74(9SI~t櫬wG! 0>IRWYWRDJ>16!^FӾx֮F\w '6CM/UXLYVsOE09g*@1ѹ1iƼٶV ei.<|HQ=WYXXSK@3#PΒNgdҭ 7{%4BLbTXzYVP7G;,Z 1 eXkܦҦR,+O F,:GnPVsYX|TLQB5%U_kZ¶xhڬ M θ20#2`@mKSBXYLWQH<.s Q/&ōT+*8xEHOUCY YJU+NC7(e ,. {|ƳrQ 0>JRWYWR"J>0!+|̳۳~| mҏ='6CN@UXLYV^OE9B*W|ƭ "-K .+JRWYWRJ>0 Te˒{{ 21Ęһm (7C3NJU YBYUFOrE8*Vő$6 \} .FJRWYWyRIv>0 ;nqNYĽA :(D7DKNWUY>YU.OTE8)l!ct﯍+B%N~L .=HQ^WY?XiSRK8@2"J'Ǭܧj ٶžВ4%I5wB MTXnYVSPF:,k ְ@Ϧ}rJKg3 ,?;]GPVzYXMTLA4B%p_Xfo@U#B3@KS]XY3WaQgH{]0 ZۦQ׫g3fo@i(i740V $m}.v«c*DMq(7_DuNzUY7YUNEl8) Zz;u9d޲m٣HGRI >0" 6UY\SJ?2w"lYͿrO% W"}&5BVMTXiYmVPF7:+F BǨΰn H-;GPV~YXTXLA24$/uJ{π~=gP$R:$3*A LSvXYW*QH<-M L3Cت橒IƔE +90FOLVZYXTM7C36&NUÁĨqd[d~o)!1r?JSXYW0R}I=/a/BXEndӦX(7DNU$Y,YUND)8;)/^2ZE;h/=FI RWYX#SJ?1F"@<͝{l^E=NR&5BjMTXaYdVOjF:m+ aDžбך) Gp-;GPVYX T=LkA4$A#Ifs.h%`ٵD$f$3GA(LSXYWQG;-u Z!êiƽ5| F+9KFOTVaYXTMC 6&|sk2bsqnzͣܥT"1?JSXYW!R\I=/2\ ǽ.QQŏ0)8DNU+Y%YUND7). ḀQO-ʽ _5/=eIRWYXSJ?1"O||ossc5h{& 6CMTX^YVVOGF9C+y 5k˪( T* o-;GQWY|XS LKA3e$(;ߵW-a4ocRH$4mA=L TXYVPG;s-B 'ұa q+:kFOcVbYXTjMB5&OI=D_q=?L"1?J%SXYWQPI=/g4ʬC\1Ž`3@))8DNU)Y'YUND7(ZfmCUD4ˊg/=|I1RWY XRJn?1!!sv^__w{[ÔѥM'26:CMTXVYNVO/F9+J wL况ҪE4MW -< H+QWYxXS L(A38$P$Nf;yNw2$.4ARLTXYVPG;@- h׿㻼ϰB֑ F+7:FPnVhYXTQMB5|&Z'Ilħǿamy"$2?K7S!XYxWQ!I=^/u6tھʇq?d\1_j)L8DNU2YYUNuD7(%u8ġ[4Y[Z˷ڕ5# 0>IFRWYWRJM?}1!?M>DNv̨z{0'X6ZCMTXUY?VOF9* Kcխ+t㩫 fYz& -<<'H@QWYkXSK A3 $q:iB-}ߣh $T4AoL,TXYVPG;- :וɻŦ'ͺcB> t+_:F)P|ViYXT @ْlڲe8sǯ6Z)r8EOU3YYtUxNYD7(eCӠćA+cūu1k*U 603>ITRWYWRxJ)?W1!ܜ*=wרIZ'6xCM UXPY0VOE9*Z=ՁZש0{ɪP .]PVkYXT!MBk5'&]Х jӧ ]_"o2@4K\S4XYiWQH6=/ qmGȲP3ܯT7ԎB)86EOU;YYiU^NIgRWYWRcJ?/1g!Ns,wط0zE'6CMUXRYVOE\9*/{ cLK؁ -A.<^HjQ/WY`XSK@;3#LDηkjUaoE%4ALMTX~YVPXG?;,2 bEMȄvwʦBǔn ,:FQPVnYXTMxBE5%/~ٶ kۧˬ,͈ݐI#2=@NKoS:XY]WQH=. FF'?0|kԴ*n)8\E*OU>YY[UDNDD74(BZIq櫩r>! 0v>IyRWYWRBJ>1;!`Hؾzܮ=Zs '6CN+UXMYVvOE49i*L<ѹ2fشN \j.<}H{QG;,^ 4&g\jަԦK1ǽO I,:GbPVrYXTLWB5%_dr[»vmެOζݿz.+#2\@iKS@XYLWQH<.| T 6#œW"*8wEEOUCYYJU1NC7 (k*6 y|ųlN 0> JRWYWR%J>0!1#̵߳v g҉:'6CN)JRWYWRJ>0 Ukːɳ}{+2ĎҺ e (7C/NGUY=YUCOyE8**QŒ "6Qv .>JRWYWyRIv>0 FxqKTĻ@0(D7DJNUUY=YU0OYE8)o$et)C*BC .=HQ[WYb0 \۪S׫j*iyl6`(e7TLA}4 %>HNh&iށ;#e3@KSfXY)WOQLH^<. X؃Ɇ5Щ_ 7զX*9EO-VTYXUMC}6a'MѢûبw:, w!R1(?uJRWYWSRI2>90Y ,oڄ2vǫb*@ Em(7]DrNxUY6YUOEu8)`Ԃ8ɯr8_c٢><?/V=IQsWY+XMSK?L2"15݊˴ͧk3 #K&5B:MTXlY|V)PF_:+u @EdѺ*æ즗»ȗ7 -;GPVxYX(TtLA[4$hߠϯ,?m >Θޮm $3AKSnXYW 0/ =\\[7U7q (7xDNUY3YUNDR8j)c4\f)3f6^I~/f/=BI RWYX(SJ?1N"EB͢kWH ABL&5BhMTXbYdVOkF:o+ e ljαג& Ei-;GPVYX TALnA 4$ E'Oju/i"aҵD {f$3LALSXYWQG;-x) Z!%Ūhƹ1v ?+9IFOTV_YXTMC6&"wo6euqj}yͣܜP "1?JSXYWRlI=/9aʽ0QR} ŋ. )7DNU(Y'YUND7)6~WO&̽]./=aIRWYXSJ?1!"X͂~pomd.gs&6CMTXWY^VOSF9I+~ 7t S p-;GQWYXS)LJA3i$*Cݵ`&g/obI@$4kA7L TXYVPG;v-E * ӱ] i+:eFO`VaYXTmMB5&QKCGao4}=D"1?J%SXYW RII=/r 3ʨJ\/Ŷ[-9)&8DNU.Y$YUND7(VgĸoDQ?-ˈ_/=I)RWY XSJm?1!(u~e^ex|TÐѢI&066CMTX\YKVO3F9+M U侀Ϊ?0JM -< H%QWYvXSL1A3C$P#µI#a=rLm2$,4AULTXYVPG;I- n̰8ֈ A+5:F PrVdYXTSMB5&)Y!.Jm§Ŀ\fw"2?J6S"XY}WQ.I=p/mFq ھʑtBmR,\e)J8DNU1YYUN}D7(&~=ĨY9ZVO˷ڏ/ 0>I=RWYXRJK?1!GPAFPsͨyúv,'S6XCMTXYYw8x U)s8EOU:YY|UvN`D7(tKӠĎC*aīr,~ھc&P 20/>IURWYWRJ'?`1!%ܚ",=qۨDU'{6xCMUXVY0VOE|9*_"BՇ_֩4ɞR .[=/ |rMȲS4կU5ԇ:)82EOUAY YsUXNHDc7n(@uҀm-$}oͫK \y _0M>IbRWYWRcJ?71h!Vu+s註ٷ .qB'6CMUXPY!VOE[9*1|bLé C؅ ):.<`HaQ4WYbXSK@?3#THނλoiUdiB%4ALNTXyYVP]GD;,/ pONȋt{˦Bǒk ,:FPPVnYXTM}BG5%5Іٶ d¬'݉ͅF"24@PKiS>XYbWQH=. IM(?1tYԽl)8PE2OUDY Y_UFN"DC7>(EWU~s᫪l; 0u>I~RWYWRIJ>1e.NYx-]Є xz/#?KhTXYTPL@08 D1Ŧɪ o+Y-U=GJSXVYUMA2 ӕp笔ıoU.+{;HR>X}YOVNpC4Q#(CuzZWʌۛ~J(9aGQWYVO E6%-\f|hŨv-ZF)&7EP5WYWQF8'8ehUj=fj ׸cv$5?DeOVYXR H:*X˕/ħg%O "3B8NUkYuXSIkJ[Ibk]v§w 1@L6U=YXSJC>d.N\s2 ^Њ v{/#?KjTXYTSL@08 H/Ŧʪ k-~X-U=GJSXUYUMA2 ӕo꬏ ˱jY*+{;HR?XYIVNgC4M#+Aqu]VʎۘF(9_GQWYVOE6%(^g鮂dǨw*\D-&7EP=WYWQF8'C]lT o8ij׼~gr$5g.MWz+ZЇ |v/'?KiTXYTPL@07 Hѻ 3æɪ k0Z-S=KJSXSYUMA2 Ӛi﬌ ɱkW '+;HR@X{YMVNhC4H#0NcBgh\y¥v 1@L8U:YXSJ;>m.F\v3ݦ[Љ t~/ ?KhTXYTPL@0: A4ʪ m,T-Y=FJSXRYUMA2 Әl쬏 ȱlW ,+|;HR>XzYTVNqC4N#-?uv]UʏۘF(9_GQWYVO E6%,[iꮀdǨv.WI%&7EPg.KXy/ WЌ t}/#?KkTXYTOL@0: @.ƦǪ k.Y-R=MJSXVYUMA2 Ӑr笔Ʊk[++{;HR?X|YOVNmC4P#(Dqpa»UʏۖE(9\GQWYVPE6%'`d}hĨx+XK$&7EP:WYWQF8'?^nQj;hl׼|iq$5>DfOVYXRH:*yT˔3i%M""3B7NUlYsXSIhm.HXx-YЈ xz/%?KlTXYTUL?0A < +ȦǪ j.|Q-[=EJSXSYUMA2 ӓq欔ȱjY .+y;HR>X~YMVNlC4N#+Avu^ûUʍۚH(9bGQWYVO E6%*\i鮂cǨw,YG(&7EP:WYWQF8' D[pNj;fb׷~ko$5j.H[u4ߦ YЎ r/!?KiTX YTUL@0: E3æȪ m.}T-Y=EJSXTYUMA2 "ӛk쬎 ˱jY ,+{;HRaiWm:gh ׶bx$5ADcOVYW$RH: *~W˓3§g'L*"3B2NUjYtXSIkkf]u«z 1@L:U9YXSJ:>o.C^v- [Ѝ wz/$?KgTXYTUL?0? >.Ʀɪ l-W-W=HJSXQYUMA2 әh󬆧 ȱmW ,+|;HR=X~YNVNkC4N#-=spcǻRʐۗG(9]GQWYVOE6%+\f|hèx.VJ%&7EP;WYWQF8' GZnRj;fi ׸ft$5h.LXz- \Є {w/&?KjTXYTRL@0= @ѿ 4˪ j/U-X=IJSXQYUMA2 ӓo묍αf]++{;HRm.EYz+ZЈ }v/&?KiTX YTRL@03 H ,ɦêq+[-T=HJSXYYUMA2 ӑq묍 ˱jX ++;HR9XYNVNmC4L#-AsoeɻQʎۚI(9_GQWYVOE6%-Yj鮂cǨv.WJ$&7EP=WYWQF8'B_jVm9ii ׷fq$5i.H]s/VЌ u~/?KdTXYTOL@0< @2¦˪ g4V-X=HJSXXYUMA2 ӕl ɱkX *+};HR>X}YLVNhC4H#/?sw]»VʍۘE(9aGQWYVO E6%(ab~eǨw*\E)&7EPii[{¥y 1@L3U@YXTJD>e.K^r0WЍ u{/%?KlTXYTPL@0> =1¦ͪ$e2Z-R=LJSXRYUMA2 !әi𬋧 ʱh^++~;HRv߷y[ĻRʒ۔E(9aGQWYVOE6%*_d{i¨{)[F)&7EP>WYWQF8'?_kTj>cc׳cw$5ADdOVYXR!H:*{T˖.ħg#L("3B5NUlYsXSIki.I\v/ ZЃ {{/?KfTXYTOL@09 B 7Ѫ"g0W-V=GJSXWYUMA2 Әk ʱjZ (+;HR9XYJVNjC4L#-?vrbŻSʎۚI(9_GQWYVO E6%+\hfŨx+ZG'&7EP7WY|WQF8'@`jUl;fe׵et$5>DeOVYXRH:*}T˔1ǧ`,~K&"3B6NUjYvXSIhYXTJ@>j.H^s/\Њ zx/$?KgTXYTPL@0= @/Ʀɪ k.~T-Y=EJSXUYUMA2! ӗj﬊̱g\++};HR=X}YPVNpC4O#,=y޷w\»SʑۖF(9bGQWYVOE6%*[k箄aɨt.XI&&7EP;WYWQF8'A^lRi>dd׵gq$59DkOVYW RH:*zS˖0i$Q#"3B4NUgYxXSIjh.H\t2 XЌ v|/#?KhTXYTTL?0: C )ͦªl/[-S=JJSXVYUMA2 әi﬍DZlX *+};HRDdOVYXRH:*R˙.§h$R!"3B:NUmYrXSIm<@,@J_Delas«t 1@L3U>YXSJ<>m.E`u*UЋ zy/$?KiTXYTRL@0> ?1æʪ m+|U-W=JJSXTYUMA2! әkȱj['+;HR9XYIVNjC4N#+Bv޷uaŻUʎۘE(9^GQWYVO E6%,\g~hĨx+YH(&7EP>WYWQF8' FYoRl9hg ׶ev$5@DfOVYWRH:*X˕-ħf'L%"3B1NUlYmXSIs<=,>McCcnas®{ 1@L4U?YXSJ=>m.FV|/ YЊ x{/!?KgTXYTRL@0: D 0Ȧêq+}X-U=JJSXUYUMA2 Әh򬉧 ȱnT (+~;HR>XYKVNiC4K#/ahY o:ee ׸gt$5ADbOVYXRH:*R˘-§h$N("3B0NUgYvXSIkk.G`s*XЋ yx/'?KkTXYTNL@08 E 3¦˪ l.\-P=LJSXYYUMA2 Ӛh񬉧̱hZ&+;HR?X}YNVNmC4N#+@qqaZʇ۠{J(9`GQWYVO E6%'aaxlx.VK%&7EPq.C`s-VЊ v|/#?KkTXYTRL@08 F.Ŧʪl-W-X=EJSXSYUMA2! ӑq鬐 ˱jX -+y;HR?X~YJVNgC4K#-@qt_ŻSʐۘH(9_GQWYVOE6%'^gꮂcǨw+YI&&7EPDeOVYXRH:*{S˗.i$N'"3B2NUkYqXSIlj.G[v0YЌ xy/&?KiTXYTFL@0? ;2¦˪i1U-X=FJSXYYUMA2 ӕm쬎 ƱnU *+~;HR=XYKVNgC4H#1=os`ǻQʒ۔B(9cGQWYVOE6%,^d|hĨw-WJ&&7EP;WY|WQF8'>`iWkYXSJA>h.J\u.[Ї xy/(?KqTX YTQL@0> ?.ǦǪ i/~U-X=EJSXYYUMA2 ӗl쬐uP,+{;HR@X{YPVNnC4P#)D~pt_ûSʐۘJ(9YGQWYVOE6%&c`yiĨw/TM#&7EP8WYWQF8'A_kUi?be׵dv$5?DeOVYXRH:*U˘*j$K#"3B9NUnYrXSIo<>,=Nc@hi]xªq 1@L6U=YXSJ>>i.JT}+WЉ w{/$?KiTXYTNL@09 B.ȦǪ g4~S-Z=EJSXXYUMA2 Ӓnαf^&+;HR@XxYSVNmC4G#2;pݭoc»Xʉ۞|L(9`GQWYVOE6%)\i鮃aɨv+[E*&7EPBWYWQF8'C\nRh>de׵gq$59DjOVYXRH:*~X˒1çf%O$"3B9NUoYqXSIfYXSJ@>g.LXw2 ]Ј xy/%?KjTXYTQL@08 D/Ħʪ m,~V-V=IJSXUYUMA2 Ӓp묍αe_'+;HR=X|YQVNmC4L#,B~syZXʌۛ~I(9aGQWYVO E6%*]ggŨw+ZG)&7EPde׵cv$5@DeOVYXRH:*}^ˌ8l O("3B4NUlYqXSIlYXSJ;>m.HS}-\Ї zz/"?KgTXYTVL?0> A/Ǧƪ i0}U-V=IJSXTYUMA2 ӓo쬍 ˱jW *+;HR=X~YLVNiC4L#-?uu_ŻSʏۙH(9bGQWYVOE6%'ad{hĨy+YG)&7EP;WYWQF8'C\nRg?eg ׳ax$5>DeOVYXR"H:*~W˕0j#P&"3B4NUkYtXSIhj.GW})YЅ |w/$?KhTXYTOL@0: C0Ŧʪh1Y-T=IJSXUYUMA2 ӓo묏 ̱h[ /+z;HR9XYGVNhC4M#*D}pscɻQʐۘH(9]GQWYVO E6%(ac}eȨt/VJ(&7EP9WYWQF8'=`lQj;gi׽xpj$59DiOVYXR!H:*~X˖,~Ƨf%P""3B6NUnYqXSIjj.JZy'WЅ w}/!?KhTXYTSL@0B :1Ħʪ i0Y-T=JJSXRYUMA2 Ӓl𬈧̱iY'+;HR;XYLVNmC4N#+AoqbȻRʐۘI(9`GQWYVOE6%&ad쮁dƨv-YG*&7EP;WYWQF8'C\nRi=eh ׷du$5?DeOVYXRH:*~T˗.k#P!"3B3NUeYyXSIm<>,?K_Cfj^tª~z 1@L7U=YXSJ<>j.J\t0 XЌ r/ ?KjTXYTPL@0= ?-Ȧƪ l/W-V=JJSXTYUMA2 ӓoꬑ ˱f`1+x;HR:XYJVNkC4M#+Bw߷v]WʌۚJ(9]GQWYVOE6%)aa{ièy*[F)&7EP9WYWQF8'=biVl:hg ׶hp$57DmOVYWRH:*U˕1j%J("3B6NUlYsXSIl<@,>LbBfkas©t 1@L9U7YXSJ9>n.F\v1 WЊ u/?KeTXYTSL@0: A2æɪ j1V-Y=EJSXRYUMA2 ӓp묎 ɱkY-+y;HR>XYKVNnC4S#'Byܷv^ŻRʑەI(9]GQWYVOE6%(b`yj¨{([I%&7EP:WYWQF8'B`hX k;fe׵ho$59DiOVYXRH:*\˒/§j!O&"3B4NUkYqXSIp<=,>L`Ddm`u§w 1@L:U:YXTJC>f.J[x+ [Њ s/!?KfTXYTML@09 D,ʦĪ i3W-V=IJSXWYUMA2 ӗl DZlZ)+~;HR=XYIVNcC4G#/>rpbûVʋۜF(9aGQWYVOE6%.Zjgèy-WH)&7EP;WYWQF8'@_lRi=fi׻~gs$5=DgOVYXRH: *U˔1§f'N!"3B:NUoYqXSIl>h.K]r0SЊ w{/#?KjTXYTTL@07 E/ƦȪ l-|R-\=CJSXVYUMA2 Ӕn쬍 ͱf_,+z;HRCXxYSVNnC4N#*D|mݭnb»VʎۗG(9^GQWYVO E6%%ca{hĨy*YJ%&7EPaiVh?dh ׺ft$5@DfOVYXR"H:*zU˖-çi!P)"3B5NUkYvXSIk<@,@I^Dfk_t©w 1@Ll.GWz0 ZЊ s/ ?KfTXYTPL@0< B.ƦȪ j1Z-R=MJSXTYUMA2 ӗl쬏 DZnU ++};HR?X{YQVNnC4J#1:wrbĻUʍۚI(9aGQWYVOE6%&ad}h¨|&`A-&7EPi.JZx- YЉ x{/"?KfTXYTQL@09 B-Ȧƪ n)xR-Y=FJSXUYUMA2 Ӗl ʱjX -+{;HR;XYIVNhC4K#-@usaǻQʑۘG(9`GQWYVOE6%*_e{j}'\F(&7EPi.H[y+WЉ w{/#?KgTXYTML@08 C-ʦĪ l,xR-Y=GJSXYYUMA2 Ӓo묏 ɱjZ%+;HR;XYLVNkC4P#(Bw޷v^VʎۗD(9]GQWYVO E6%'^fzi¨y.VI'&7EP=WYWQF8'B\nSj>df ׸~hs$5BD`OVYXR#H:*W˕0ŧc)O#"3B5NUlYqXSImk.H]t0 \Ј u/?KfTXYTHL @09 D-ɦĪm/[-T=HJSXVYUMA2 Ӓo쬍 ʱj[(+;HR:XYJVNiC4N#*Cst_ŻSʏۘH(9_GQWYVOE6%+_dyjŨt2QO#&7EP:WYWQF8'HUuMl:gg ׵du$5k.F^t/ZЈ x{/"?KgTXYTPL@08 D 3¦ʪ l,}W-V=FJSXYYUMA2 Ӓq鬐ƱlZ&+;HRei ׺}jo$5;DgOVYXRH:*T˗,{ɧb)O""3B8NUqYlXSIke.M]s1 ZЉ yy/%?KhTXYTYL?0A =0¦ͪk-~V-X=EJSXWYUMA2 ӓm ɱlW /+y;HR=X~YMVNkC4J#.@qsaûVʌۛF(9dGQWYVO E6%*]g뮀dɨs0VH)&7EP;WYWQF8'=cgX o8hj׻{lo$5:DhOVYXRH:*}R˖1j X "3B7NUnYqXSIjle`q­y 1@L9U8YXSJA>g.J]v,UЈ x{/#?KkTXYTPL@0> A0æ̪"f4\-S=IJSXUYUMA2 Ӎs鬏 ͱg\)+~;HR6XYDVNbC4F#1g.K\t-ZЊ v}/ ?KgTXYTPL@0: B.ǦǪ j.{R-Z=FJSXRYUMA2 Ӓp쬍 ʱi\*+|;HR9XYIVNjC4L#.>su^ŻTʍۛ}M(9]GQWYVO E6%+]f~gĨx,WK%&7EP;WYWQF8'B]mSi>cc׵hp$5;DfOVYXRH:*R˛*ħh#M$"3B;NUnYrXSImf.MWx3ߦ \Љ zy/$?KgTXYTNL@0; A/Ŧʪ i/~Y-S=KJSXVYUMA2 Ӕl﬋ ɱkZ(+~;HR>XYKVNhC4N#)CtpdǻSʎۙI(9]GQWYVO E6%(_e|i¨{)ZH'&7EP;WYWQF8'>bhVj;ij ׸hp$5>DeOVYXR H:*|X˓1h&I#"3B7NUiYuXSIjn.EZw/ZЃ {y/$?KlTX"YTTL@0> ?0¦Ϊ#e2|R-Z=FJSXVYUMA2 Ӓn쬏 DZlY *+~;HRk.IWz+VЅ v~/?KfTXYTSL@09 E.ɦĪl.V-U=JJSXWYUMA2 ӕm쬎 ϱca*+};HRg.L\u-ZЇ zw/(?KiTXYTNL@0> A,ɦƪ j/}T-Y=EJSXXYUMA2 ӗj𬊧ͱf^(+;HR?X}YMVNfC4E#3:sneȻRʏۙJ(9_GQWYVO E6%%cayk}'\F(&7EP=WYWQF8'?ahW p6ln׼}hs$5=DfOVY XR&H:*~V˕/§h$N$"3B7NUlYsXSIjm.HXy-UЈ y|/ ?KdTXYTRL@0; A5ͪk/X-U=JJSXRYUMA2 ӕm쬎 ʱi[++{;HR>XYKVNhC4I#.?tw[VʎۗD(9bGQWYVO E6%$f^wl|)ZH%&7EPCWYW QF8';dgWi=ee׶hp$5:DiOVYXRH:*xQ˙-ħf&P'"3B5NUnYpXSIl>k.GZy, \І t/?KiTXYTRL@0= @/Ħʪ k,|S-Y=DJSX[YUMA2! Ӕpꬎαf\ &+;HR:XYNVNkC4K#0:vsbʻMʔ۔F(9]GQWYVPE6%+`b{hĨy*ZI#&7EP,AI^Dgj^u©x 1@L9U;YXSJA>f.M[u,SЊ |v/)?KnTX YTTL@08 E.ȦĪp,^-O=MJSXXYUMA2 Ӓp鬐 ͱe_/+x;HRAXyYRVNnC4K#.?uy\ŻRʏۚI(9cGQWYVO E6%%cbdȨu.VK%&7EP=WYWQF8'@^lTii.J`o3 XЊ v|/$?KnTX"YTTL@0> ?2æ̪h2W-V=IJSXXYUMA2 Ӗl ȱj])+};HR=X~YMVNoC4M#->sw[WʍۙI(9_GQWYVO E6%*]gꮃ`˨s/WJ%&7EPm.EZx-\Ї s/?KhTX YTVL@0: Bѽ 1ƦȪ k.}U-Y=DJSXYYUMA2! Ӌt謏 ˱i['+;HRAXyYRVNnC4Q#(D~o߭qbƻTʌۜ~I(9`GQWYVOE6%,\geƨu1RP&7EP;WYWQF8'@_kUk;gh ׶et$5=DgOVYXRH:*]ː4§f(P""3B7NUlYsXSIp<<,>LaBhh]tª}z 1@L9U9YXSJ?>g.MZu1VІ w}/!?KfTXYTRL@0< A +ȦǪ l,|T-X=GJSXTYUMA2 ӗj﬌ DZoU ++|;HR?X~YLVNhC4K#/>v޷y]ŻRʐۘJ(9_GQWYVOE6%(^g뮀fĨw.UM#&7EP9WYWQF8'C\lUi=gi ׸fs$5=DfOVYXR"H:*|Y˓0§h$O"3BmaW}£{| 1@L;U8YXSJ>>j.IVz.UЋ w|/!?KeTXYTQL@09 D0ƦȪ l.V-V=GJSXYYUMA2 ӗm쬍αhY-+|;HR;XYJVNhC4J#.>z޷u[ZʌۙG(9dGQWYVO E6%*^e|hèy+YI&&7EP=WYWQF8'@_kTj:jl׽zmm$5ig^v¨}} 1@L3U=YXSJ<>l.H]v*YЄ v~/ ?KfTXYTSL@0A <2¦ʪ l/U-X=HJSXSYUMA2 Ӑq鬏 ̱g\)+};HRtw]ûRʑۗH(9^GQWYVO E6%/Zh|i|(]D*&7EP;WYWQF8'?`iWj=ec׳hp$5l.G\v+\Љ t/?KeTXYTRL@0: B 5¦ʪ m.X-V=GJSXVYUMA2! Ӗl쬏 ȱkZ,+{;HR:XYHVNhC4K#.>urcȻPʓەG(9\GQWYVOE6%*aa}dɨt-[C-&7EP?WYWQF8'A_jU o7kk ׹du$5>DeOVYXR"H:*T˙*~Ƨd(J)"3B8NUmYtXSIgk.H]u,ZЍ u|/"?KhTXYTSL@0= Bѿ 3Ϊ!i.}W-U=JJSXTYUMA2 Ӝi ̱g\-+{;HRv޷uaûVʌ۝}J(9aGQWYVO E6%%ad쮂bȨu-YI&&7EPYXSJ>>f.MV{*VЇ }v/&?KhTXYTML@0: C .Ħʪ l.Z-S=KJSXUYUMA2 Ӗm묐DZlX ++|;HR@X|YMVNhC4M#+Atu_»Wʉ۟|K(9\GQWYVOE6%+]edȨr1UK&&7EP>WYWQF8'?aiVj:hi ׸gt$5>DfOVYXR#H:*{V˕0h%N$"3B8NUoYoXSIn<>,>L_Eek_r¬y 1@L6Un.D^u,V}Б vy/&?KjTXYTPL@0> =ѿ 8Ъ!f3S-Y=HJSXRYUMA2 ӗk ȱkY*+|;HR=XYKVNjC4L#,@rw]ûTʏۙF(9aGQWYVOE6%'^g뮁cǨv-YI%&7EP@WYWQF8'E[lV n8ieײes$5;DiOVYWRH:*S˙-i%L&"3B7NUkYsXSIlg.K[t3 ^Љ s~/!?KgTXYTQL@08 E +Ǧʪi0X-U=IJSXUYUMA2 Ӗk DZlY )+;HR:XYLVNmC4O#*AutaŻSʎۚF(9_GQWYVO E6%)`c{ièx,YH(&7EP>WYWQF8'>bfZ k;gi ׸gs$5@DdOVYXRH:*S˙,j&G)"3B5NUjYuXSIjg.K^r-TЋ v}/!?KgTXYTNL@0= @/ƦȪ k.W-W=HJSXVYUMA2 Ӓp鬑 ȱi]++|;HR;XYJVNkC4O#)D~rw`ɻPʐۙH(9^GQWYVOE6%(_f뮂aʨs1TK&&7EP7WYWQF8'@`hY p9gi ׷dt$5;DiOVYXRH:*~Y˒1nK'"3B8NUoYpXSImk.E^u/ XЋ xz/#?KhTXYTNL@06 HѾ 6Ϊi0W-V=HJSXRYUMA2 Ӗn묏 ȱmV*+};HR:XYMVNlC4K#.?qqa»Wʊ۞|L(9ZGQWYVO E6%)ba}dʨs.XH)&7EPAWYWQF8'B\pQn8ih ׶jn$59DiOVYXR"H:*|U˔1ħf%N'"3B6NUnYpXSIn<=,;Pd?jg\wªw 1@L6U>YXTJA>g.KWy,\І zx/%?KhTXYTNL@0: D/Ʀɪ l-V-X=FJSXRYUMA2 ӕlDZlY)+|;HR:XYHVNiC4J#0;us_»VʍۚG(9]GQWYVO E6%*]hꮀfĨy+ZF)&7EPAWYWQF8' C_jVn8ln׼~ft$5=DhOVYXRH:*{V˓3k#J$"3B4NUmYoXSIp<>,?I\FfhYz©u 1@L5U=YXSJ?>j.HZy- ZІ }w/$?KgTXYTLL @07 C-ʦêl/~T-X=HJSXQYUMA2 Ӓm﬉ ˱h\*+~;HR=XYLVNmC4O#)C~mݭs]VʎۘE(9fGQWYVO E6%*]hfŨx+YI(&7EP=WYW QF8'A^mT n;df ׸gt$5BDbOVYXR"H:*wV˕.ŧe'J$"3B5NUoYnXSIp<=,<Oe>jh]w©| 1@L5U?YXTJB>h.I[x'XЉ w{/$?KmTXYTQL@0: C1æ̪#e4Y-U=IJSXVYUMA2 Әi𬍧ƱmY.+y;HR?X~YKVNiC4K#-?tu_ĻUʌۚE(9`GQWYVOE6%-Zi}hĨv/WG*&7EP5WYWQF8'A_jV o9fe ׺{ln$5=DfOVYX RH: *V˕0§g%N'"3B5NUpYmXSIkg.LYy. [Ђ }y/!?KcTXYTQL@0< @ 2ŦǪ o+X-V=GJSXWYUMA2 ӑq鬏 ͱe^(+;HRkc[x¬t 1@Lh.H^u.YЈ t/?KfTXYTOL@0; CѾ -ɦŪ o+}V-W=GJSXZYUMA2 Ӓp꬐ ɱkZ(+};HR@X{YOVNkC4J#/>rt]VʎۘD(9cGQWYVOE6%,^cxk{*YH'&7EP@WYWQF8'=`lRi=fh ׼|iq$5@DdOVYWRH:*U˗-çi"R""3B3NUgYuXSIp<=,>LaAjeX{©v 1@L3U>YXSJ>>k.G[w2 \Ѕ x{/!?KeTXYTQL@09 C*Ʀ̪"g0T-[=CJSXVYUMA2 Ӑr謐 ȱmU ,+};HR:XYJVNhC4K#/>rs`ǻPʓ۔D(9_GQWYVOE6%*^f}eȨs1UJ'&7EPk.IWz+ \Ј xy/&?KlTXYTPL@0; Cѿ 0Ʀƪ j0Z-R=MJSXRYUMA2 Ӕn묐ƱlY'+;HR:XYIVNjC4M#+BqVVʎۘF(9\GQWYVO E6%+\hꮀeƨw,YG(&7EP:WYWQF8'C\lUk,@KaBgi[z§v 1@L0UAYXSJ>>j.JWz. [Ј y{/!?KcTXYTPL@07 E*̦ªi2[-T=HJSXUYUMA2 Ӓq謒ȱkZ-+x;HR?X|YOVNoC4O#+Ast`ûVʋ۝|L(9_GQWYVO E6%(^gꮃaɨs1VI'&7EP6WY}WQF8'=biTjj.F]v/ ZЃ ~w/%?KiTXYTNL@0C ;.Ʀʪ!f2~R-\=BJSXVYUMA2 ӕl ɱj[)+};HR?X|YOVNjC4N#*CutaʻMʕۓD(9^GQWYVO E6%,\gfŨw,YJ$&7EP=WYWQF8'?aiUk=dd׷~jn$56DmOVYXR H:*~U˘+}ȧc'M""3Bi.JZx/ [Њ o/ ?KjTXYTLL@08 D.ȦŪ m/U-[=AJSXZYUMA2 Ӗk DZmV++;HR8XYKVNnC4P#)Btv_ƻTʌۜ}K(9[GQWYVO E6%&ba{hŨv,[E*&7EPf.K_r1 ^Ї v{/#?KhTXYTQL@0; A2Ϊ!h1V-T=LJSXUYUMA2 ӑp묎 ȱkX 0+y;HRAXzYPVNmC4L#-?rt`ŻSʎۚI(9`GQWYVOE6%(]g뮀fĨx,YI#&7EP:WYWQF8'=bhY n9il׽zmm$59DkOVYXR!H:*{U˖.çg%Q$"3B5NUjYsXSIkp.?`u+YЉ v~/?KdTXYTOL@0; A0æͪ%c4U-X=GJSXSYUMA2 ӗlƱlY*+};HR8XYKVNnC4N#,A~lwZWʍۘE(9^GQWYVO E6%*]f{hŨv.YF(&7EP;WYWQF8'>ahXlk.H[w-WЈ v}/"?KjTXYTVL?0B ;5ͪi1U-X=HJSXVYUMA2 Ӝd ˱i[-+x;HRDXyYPVNjC4L#-@uu^ûUʎۙ~M(9YGQWYVO E6%-[hfŨx,WJ&&7EPm.Ebp3 ZІ v~/ ?KiTXYTRL@0; B0Ŧɪk.}U-W=HJSXWYUMA2 ӏs嬕˱ea*+~;HR;XYKVNiC4L#,@psaƻSʍۛG(9`GQWYVOE6%&bcfƨw*\E+&7EP>WYWQF8'>_mQm9hf׶gs$5?DdOVYXR H:*{S˙,çh#L*"3B;NUtYkXSIp<>,>McAgj^v¤~z 1@L1U@YXSJ;>k.I[v- [Ї yz/#?KgTXYTNL@0= @0Ŧɪk/\-R=KJSXUYUMA2 Ӕm ȱkY(+;HR9XYMVNlC4O#)A{ܷt_Yʈ۟|L(9^GQWYVOE6%)_d}gŨv.VM!&7EP?WYWQF8'A^kTi>de׳fp$5=DdOVYXR H:*[˒0}ǧe%M$"3B;NUlYtXSImJ]DidX{§y 1@L4U>YXSJ:>n.FXx2UЊ xz/#?KgTXYTNL@08 D2ŦǪ o-Y-T=JJSXUYUMA2 ӕm ɱi],+{;HR=X~YLVNgC4G#0>ttaȻPʑۗJ(9`GQWYVOE6%,^f뮁bɨv,XI'&7EP;WYWQF8'?bgY kh.H`r3ߦ YЋ {x/$?KgTXYTQL@0> >1æʪk-^-P=KJSXXYUMA2 ӑo˱lV *+|;HRAXzYPVNnC4O#)C~opbŻTʎۚ~K(9^GQWYVOE6%*_e뮂bȨv+\D+&7EP;WYWQF8';dgX l:ik׻}io$5:DhOVYXR"H:*zY˓/~ǧd%L*"3B6NUpYoXSIhl.HZv/UЊ }v/%?KeTXYTSL@0> ?Ѿ 2ŦȪ i0}S-X=GJSXXYUMA2 ӎs鬐 ȱlX ,+|;HRAXzYOVNhC4L#,@vrbɻPʒۗH(9fGQWYVO E6%&bceŨy+WM!&7EP:WYWQF8';edZ k9jk ׸gp$58DjOVY XR"H:*Zː4§h"Q$"3B4NUjYtXSImj.IVz/ [Ј zx/&?KiTXYTQL@0: C 4ͪk.~V-W=HJSXWYUMA2 ӕm ˱h^3+t;HR@X|YPVNoC4N#,?ts`ĻRʓۓD(9`GQWYVO E6%&ac}gŨw,XJ%&7EP=WYWQF8'=bjU r5ki ׹~jn$58DkOVYXR H:*{\ˏ4çd)~J+"3B6NUqYnXSIm<@,<Of?hh\y¨v 1@L8U;YXSJ>>i.KYu2XЉ v}/!?KfTXYTNL@0= ?/ȦĪ k/V-W=FJSX\YUMA2 Ӕn쬎 ˱iZ )+;HRuv^VʍۚH(9cGQWYVO E6%*^f{jz-VJ&&7EP;WYWQF8'A^mRf?cf ׶fr$5:DkOVYXR"H:*zX˓1k!Q&"3B:NUmYsXSIo<>,BGa@iiar«x 1@L9U:YXSJ=>j.IYy. YІ {y/#?KiTXYTTL@0< A3¦˪h2T-Y=FJSXWYUMA2 Ӗl ˱iY )+;HR>X|YNVNjC4J#.?tsbȻPʒەF(9`GQWYVO E6%%da{gƨw-WH)&7EP?WYWQF8'B]lTh>ei ׹~hq$5ii^tªw 1@L7U:YXSJ?>h.LZv4ߦ YЇ yz/"?KdTXYTNL@0A ;5˪ h3Z-U=HJSXWYUMA2 ӑn̱h[)+};HR9XYFVNfC4H#/=x޷saŻSʎۙH(9^GQWYVOE6%*`czjèx-UN!&7EP8WYWQF8'?`kU j=ei׺gr$5;DjOVYXR H:*Zˑ3i#N)"3B7NUoYqXSIhg.LXv3 WЍ v{/#?KiTXYTSL@0= A *ʦƪ j0W-V=IJSXWYUMA2 ӓn쬏ȱi](+;HR;XYIVNfC4K#,ArrbŻSʏۙF(9aGQWYVO E6%.[hgèz+WL$&7EP`kT o7ig ׶gr$5l.G[x*UЅ x}/?KdTXYTRL@0: D,ɦǪ g2V-X=DJSX[YUMA2! әg򬋧 ȱk[,+{;HR>X|YPVNnC4N#*Cv޷t`ȻRʏۘJ(9]GQWYVO E6%*^f|hĨw.WJ&&7EP>WYWQF8'?ahWh;jm׺eu$5?DfOVYXR H:*vWˑ5ħe&P%"3B7NUkYwX SIem.C`p1VЇ v}/!?KjTXYTPL@08 B-Ȧƪ k/\-Q=MJSXSYUMA2 ӓo쬌 ȱkX%+;HR,>K_Edlas§~z 1@L6U=YXSJ>>l.E^v*ZЊ zx/%?KkTXYTRL@0@ >ѿ 3¦ͪ j-~U-W=IJSXSYUMA2 ӕl﬊αf\)+~;HRf.MVy1UЇ zz/!?KgTXYTUL@0@ =0æ̪"g2[-S=KJSXUYUMA2 ӓm DZlY++{;HRAX{YNVNhC4H#1;vv^ĻTʐۖH(9`GQWYVO E6%)_czjèv0RP"&7EP4WY}WQF8'@_kU o9fg ׺}jn$58DkOVYXRH:*Zˑ4§e(N""3B9NUpYoXSIlMd@ifY{«u 1@L:U8YXSJ>>i.JV{2ަ^Ѕ |w/(?KjTXYTKL @0: B/Ŧʪ f4X-W=GJSXWYUMA2 Ӕo鬒ȱh^++~;HR;XYLVNiC4G#1;{ڷv^»VʍۚI(9\GQWYVPE6%*]i鮁dƨy*YI&&7EP:WYWQF8'@]nQl:hj׼|ht$5@DdOVYXR!H:*}W˒4g&N("3B4NUnYoXSImo.DW|.WЊ wz/$?KjTX YTSL@07 C1Ħ˪i0X-U=IJSXTYUMA2 Ӗl ɱj[++|;HR>X}YMVNfC4C#58vs`Wʋۜ~J(9dGQWYVO E6%(ad~gè{)[E,&7EP>WYWQF8'B\nQh?ab׸}kn$58DlOVYXRH:*U˖-ħf&N&"3B4NUkYsXSIp<>,<Ne?ig\w¨y 1@L8U;YXSJC>f.J\v/ \Ј zw/(?KkTXYTRL@0: Dѻ 0ǦŪ j0X-W=GJSXSYUMA2 ӗk ɱkY(+;HR>j.JVz0 ZЊ r/?KgTXYTSL@0< A/ŦȪ m,X-U=HJSXVYUMA2 ӖkınV 0+x;HRajVk=de׵fs$5;DiOVYW!RH: *Zˑ2Ƨa-|J("3B5NUkYtXSIjl.F[x.XЈ {v/'?KiTXYTOL@08 Dѽ 4¦˪i2Z-T=JJSXVYUMA2 ӎr鬐DZjZ)+;HR=XYKVNgC4L#+Bsw^ƻRʒەE(9^GQWYVOE6%)_d{k¨x-UN"&7EP=WYWQF8' E[nS o7km׸dv$5J[Gej\x«p 1@L9U:YXSJ9>p.C^t/ZІ xz/$?KkTXYTOL@09 D *ʦĪn,[-R=KJSXWYUMA2 Ӕm ͱf]'+;HR:XYJVNjC4N#)D}rw^ȻOʓەG(9^GQWYVOE6%'ba{ièy+ZF)&7EP9WYWQF8'<chUhh.LXx0WЊ wz/$?KmTXYTQL@0B ;0ƦǪ i0}R-Y=HJSXPYUMA2 ӓm ȱkZ%+;HR>X~YLVNiC4K#-?xݷt_WʌۙG(9^GQWYVOE6%&ca{hƨv-VJ'&7EP;WYWQF8'@_lRh=ej ׹fs$5;DhOVYXRH: *X˕/i#M%"3B;NUnYrXSIlo.C^u/UЏ yw/&?KjTXYTNL @07 D/ȦĪk.zN-^=CJSXXYUMA2 ӗk ̱g] ,+};HR;XYJVNjC4L#-=vv]»Xʉ۟zN(9[GQWYVOE6%*`c~eȨu-XH)&7EP:WYWQF8'C]mPg=gg ׶hn$57DkOVYXR"H:*{Zː2çg$M'"3B5NUkYtXSIki.G^s1XІ zy/$?KiTXYTRL@0< @ ,ȦȪ g3Y-U=JJSXTYUMA2 Ӓq鬑 ȱkY 0+w;HRCX{YOVNmC4Q#)D{lw_ƻRʏۚ~L(9^GQWYVOE6%&c`{gŨx+ZF(&7EP?WYW QF8'B_jUl:hfײer$5U6YXSJ<>k.G]v,VЍ v}/!?KlTX#YTWL@0= @1æʪ j/W-U=IJSXUYUMA2 ӓo꬐ıoV '+;HR:XYLVNlC4L#.=vscǻSʎۙG(9^GQWYVOE6%'ba}eƨw-XI%&7EPAWYWQF8';efVk;hh ׶es$5;DiOVYXR!H:*xS˘-§h%M&"3B:NUrYmXSImn.EY{, ]Ј v~/?KfTXYTOL@06 G.Ʀɪ"f2X-V=FJSXWYUMA2 әh򬇧 ȱnU %+;HR@X{YOVNmC4M#,@tsaĻTʏۘG(9`GQWYVO E6%+^cziĨw-WK$&7EPAWYWQF8'?ahVj;ih ׵ds$5;DiOVYXR!H:*zU˖.h%L("3B6NUnYqXSIil.F]u0 ]Ї wy/%?KnTX!YTSL@0: A.Ŧʪl,{R-Z=EJSXVYUMA2 ӑqꬎ ȱmW)+};HR@X|YMVNkC4M#+Aru^»Uʎۛ}L(9^GQWYVOE6%-\g{k{*XK%&7EP8WY{WQF8'A^lT t3mi ׹}kl$59DiOVY XR$H:*~Z˔-~Ƨe%N%"3B8NUoYqXSIjj.F[y+[Ѝ u}/!?KgTXYTML@0: Cѿ 1Ħʪ#d6Z-U=GJSXVYUMA2 Ӕn꬐ɱiZ ,+|;HR>X}YNVNjC4N#+@w߷zZĻRʐۗG(9bGQWYVO E6%&_f~fƨt0WI&&7EP;WYWQF8' E\lUn:da׵}ml$5;DeOVYXRH:*[ˑ2§g&K#"3B9NUiYwXSIn<=,;OaCfj]w¤|} 1@L:U:YXSJ:>n.FYx0 YЈ v~/?KgTXYTLL@09 Cѿ1Ħɪ m,V-Y=CJSXYYUMA2 ӕk﬈ͱiX -+y;HR?X}YNVNnC4N#+AopeʻOʓەD(9_GQWYVO E6%(`dcɨr3QP &7EP@WYWQF8'A^lU l;fi ׻{lm$58DkOVYXRH:*~U˗,ħg$N"3B;NUlYtXSIhj.H[u3ߦ ]Ј xz/#?KiTXYTQL@0: A 5¦˪g3S-\=AJSXYYUMA2 Ӛi𬊧 DZmV 0+y;HR>XYIVNfC4J#,C}otcǻSʍۜ~I(9]GQWYVOE6%-\f|ièz)\C,&7EP;WYWQF8'B\pPl;fe׶gp$5;DhOVYXRH:*~R˘-Ƨc(P#"3B9NUlYtXSIli.I[w*[Ћ t/?KgTXYTRL@09 E0Ŧɪ f4V-W=HJSXTYUMA2 Ӕn쬍ϱd`)+|;HR?X|YNVNkC4K#-?urbƻRʒ۔E(9_GQWYVOE6%%d`yjèx,XI'&7EP=WYWQF8'@^lTj?aa׶du$5=DhOVYXR!H:*}Y˔.~Ƨf$P'"3B5NUlYrXSIjg.L[u/ZЅ u~/ ?KfTXYTNL@0; BѾ 1ŦȪ n+|U-W=HJSXWYUMA2! Ӗj񬈧̱g[,+{;HR@X{YOVNiC4I#.@vw]ŻQʑۙ}M(9aGQWYVO E6%,\f{l|*WL#&7EP?WYWQF8'D[oPj;gg ׷fs$5i.J\t1 XЍ w|/"?KjTX YTSL@09 D 1ŦȪ j/~W-W=FJSXZYUMA2 ӗj𬋧 ̱f_)+};HR:XYJVNjC4L#,@us`ŻQʓےD(9^GQWYVOE6%*^e~fǨu.VJ(&7EP;WY~WQF8'@`iWj=df ׸~hr$5@DcOVYXR H:*~U˗.ŧd)N'"3B9NUoYrXSIk<@,<N`Edj[z¦}{ 1@L4U>YXSJ<>j.JZx+]Љ v|/"?KfTXYTQL@0= @1Ħɪ h3X-V=IJSXVYUMA2 Ӗj񬊧 ȱkZ*+|;HR>X}YOVNoC4P#*Aw߷rcǻPʒەF(9_GQWYVO E6%*^e|ièz)YJ&&7EP>WYWQF8'@_jVk;hl׻}jo$58DjOVYXRH:*R˘-§h#P!"3B8NUiYvXSIim.Cbq5ަ YЊ wz/%?KlTXYTOL@0; C (˦Ū h1X-U=IJSXTYUMA2 ӓnϱe_&+;HR>X~YKVNgC4I#.@qv\»SʑۖD(9]GQWYVO E6%(_f~gĨx-XH&&7EP=WYWQF8'E[mUj=gl׻~gs$5?DdOVYX RH:*}Yː5h%O#"3B6NUkYuXSIgk.H[y(\Љ vz/$?KhTXYTSL@0> > (Φo,Y-T=JJSXXYUMA2 ӕlDZlY 0+v;HRBXzYPVNlC4L#*EzosaɻNʕےE(9cGQWYVO E6%(ab|gƨv.VK%&7EP;WYWQF8'A_kUkj.H\v,UЋ yy/%?KiTXYTRL@0; @ 3¦˪ m,V-V=IJSXSYUMA2! ӕk﬋ ȱkZ*+};HR9XYIVNlC4P#)BrqcǻSʍۜ}I(9cGQWYVO E6%)^h鮃aɨu/VI'&7EP=WYWQF8'B^lSf@cg ׻|jo$56DoOVYW!RH:*R˙,çf&O""3B4NUkYtXSIli.IZy. \Є yz/$?KkTX"YTTL@0: B2æʪ h2V-W=GJSXUYUMA2 Ӕp꬏ ˱h]++~;HR7XYLVNlC4L#/Mc@ig\w«u 1@L4Ui.I\w- \Ї u}/"?KfTXYTRL@0> >1Ϫl+}Z-R=MJSXMYUMA2 ӕl ȱnU &+;HR?XzYQVNkC4E#4;pqcɻPʑۖF(9\GQWYVOE6%+^d{hĨw/TM#&7EPCWYWQF8'D\kW o6no׹et$5:DkOVYXRH:*Q˚,çf(~J""3B=NUoYqXSIhk.H\v1 ^Љ s/?KeTXYTTL@0? = 0ƦȪ i0~W-V=GJSXZYUMA2 Ӗm묐 ͱhZ)+;HR9XYKVNkC4M#,?yܷy]ĻTʎۚI(9]GQWYVO E6%&`eeƨv.WJ%&7EP9WY{WQF8'DZpQl:im׻~gs$5=DgOVYXRH:*S˘.§f(~I'"3B8NUlYsXSIlh.H^v*\Љ u}/!?KhTXYTOL@0= ?/ŦȪ j/U-V=JJSXUYUMA2 ӘlꬒȱjZ ,+{;HR>X~YMVNiC4G#1=sx]ƻSʎۘE(9\GQWYVO E6%*_edǨw,YH'&7EP:WYWQF8'?aiUk;gi ׹|jp$5;DhOVYXRH:*~V˔1çd(N'"3B;NUqYnXSIln.EZx1 ^Ї t/?KiTXYTRL@08 E1Ŧɪ l,{U-V=IJSXVYUMA2 ӕn묎 αd^++};HR>X}YMVNjC4O#)Bsw\VʍۚH(9aGQWYVO E6%'ab|gǨs0VJ'&7EP?WYWQF8'B^kVj=ff ׶jm$55DnOVYWRH:*|T˗-ŧe'K'"3B;NUpYpXSIo<>,@I\Fej_tªx 1@L8U;YXSJ;>n.F]u- _Ѓ y{/"?KdTXYTML@0; @ -Ȧƪ l-{S-Y=GJSXYYUMA2 Ӗmꬑ ɱj[++};HRs.A\v1 WЍ {v/'?KhTXYTLL @0; ?.Ʀʪ f5[-T=HJSXSYUMA2 Әk ȱkZ'+~;HRAX{YNVNhC4J#,BtrbǻQʑۖF(9]GQWYVOE6%-Zj鮁cɨs0VJ&&7EP>WYWQF8'B_hY iA`e ׼{ko$5;DhOVYXR#H:*~S˗/çf&L$"3B5NUgYxXSIj<@,9SeAhgZy«y 1@L5U>YXSJA>h.JZw/VЌ w{/"?KeTXYTNL@09 D0Ŧɪ m,}V-X=FJSXWYUMA2 Ӗk ˱f^1+w;HRBXzYPVNiC4K#/`kTi,=Of?hi[y¥~y 1@L9U8YXSJ=>k.G`r/YЇ x{/$?KjTXYTTL@09 F +ʦƪ k/~V-X=GJSXXYUMA2! Ӎt笐 DZlX*+};HR;XYNVNoC4M#-?su_ĻUʍۚI(9^GQWYVO E6%'ba{hĨy*[F(&7EPNUnYtXSIhNcAgh]t«u 1@L4U?YXSJ=>k.HZx. ]Ѕ x{/"?KhTXYTVL@0= Aѿ /Ʀɪ i0X-U=IJSXTYUMA2 Ӛh𬌧 ʱjZ)+};HR>X~YKVNkC4K#/=sw[ûUʌۜ}K(9]GQWYVOE6%+\f|ièz(]E*&7EP;WYWQF8'A^lSn8ig ׹~hq$5=DgOVYXRH:*X˓1~ǧb*N!"3B9NUlYsXSIn<>,?J`?naWy©u 1@L=U6YXSJB>f.K_s.WЎ u~/?KgTX"YTXL?09 Eѿ 2æ˪i0}U-Y=FJSXTYUMA2 ӗj򬅧бf\++|;HR>X~YMVNlC4Q#'Dru^ĻSʐۖG(9]GQWYVOE6%(_gfĨz*YH(&7EPldYy«v 1@L7U;YXSJ@>j.G[w/ZЇ {y/"?KcTXYTQL@01 Kѿ/Ħ̪ h1[-R=KJSXVYUMA2 ӓn ˱jY '+;HRWYWQF8'>ahW p6mn׽{kl$56DmOVYXR!H:*V˗,~ŧf'I)"3B6NUjYsXSInk.IWy,[Ѕ x|/!?KgTXYTNL@0= @,˦ªo*zR-Z=FJSXVYUMA2 "әj ȱkY$+;HR8XYMVNnC4O#,?usaûTʎۘD(9cGQWYVO E6%+]e|hĨw-XH(&7EP4WYWQF8'@]nSj=fk ׸es$5jg^v§~z 1@L8U:YXSJ?>h.LT|,YЋ v|/!?KfTXYTML@0> =-Ǧɪ h0}R-[=BJSXZYUMA2 Ӑq鬐 ̱f^,+z;HR>X}YOVNqC4R#*?y޷v]ĻUʍۛ|M(9YGQWYVOE6%+^cxlx/TN!&7EP8WY~WQF8' D]kUm9jj ׸dt$57DnOVYXR#H:*X˒3çd*M#"3B8NUnYpXSIm<@,BH_Ake]v¨w 1@L;U8YXSJ;>l.HXx-YЇ w{/"?KhTXYTOL@0A =,ʦêo-Z-T=IJSXVYUMA2 Ӗo꬐ ̱f^,+{;HRbgXfAbf ׵bu$5=DfOVYXRH:*V˔/|ɧc$O%"3B7NUlYtXSIfi.I]t0S}Џ zw/&?KkTX!YTVL?0> > 7Ϊk.V-Z=CJSXZYUMA2 Ӗq欔űmW -+{;HR@X|YOVNlC4K#0:wyZWʌۚH(9_GQWYVOE6%+[iꮁdƨw+[F)&7EP7WYWQF8'A_jV n8jg״gp$59DiOVYXR H:*|V˕0g(K$"3B6NUkYuXSIj>j.H[u0 YЋ wz/$?KlTXYTRL@06 H,ȦǪ l-Y-T=IJSX[YUMA2 ӓn ʱkY++z;HR>XYJVNiC4K#.?st^»UʏۗI(9ZGQWYVO E6%&bc|iĨw.UL&&7EP=WYW QF8'=biUo7kk׻}jn$5:DhOVYXRH:*N˛,§f&M%"3B5NUgYwXSIkh.KV|/XЈ x{/"?KgTXYTSL@0> > 3æ˪i1]-P=NJSXWYUMA2 Ӗm묐 ˱g\-+y;HR>XYJVNeC4H#1;zݷv\WʍۙI(9\GQWYVO E6%)`cxm|)ZH(&7EPo.C_t, [Љ zx/&?KkTXYTQL@0: D1ĦȪ n*|U-W=GJSXVYUMA2 ӓn ɱkZ%+;HR=XYKVNiC4L#+Btu_»Wʊ۝}K(9_GQWYVO E6%*]g뮀eŨy)]E(&7EPh.I\v0 \Ї yx/'?KiTXYTNL@0; C +ʦŪ m-[-T=HJSXXYUMA2 Ӕo謒 ɱi[*+|;HR@X}YLVNjC4N#)Du߷v_ƻQʑۖC(9`GQWYVO E6%$cc~eǨv+\C.&7EP:WYWQF8'DZoS n:ff״gr$5=DeOVYXRH: *Y˕.ħe)~M("3B6NUqYlXSIoq.B]u0 YЊ w|/!?KjTXYTOL@06 E3ͪ"g1X-T=JJSXVYUMA2 Ӓp鬒±nY)+;HR7XYIVNkC4P#)CpޭndĻUʍۛH(9]GQWYVO E6%)\g}gĨw.WJ$&7EP?WYWQF8'CZpPim.GYw-YЊ u~/?KeTXYTNL@0; A5Ϊn,X-U=IJSXUYUMA2! ӗk ɱlX -+y;HR@X|YPVNmC4M#.=vraǻRʎۚJ(9]GQWYVO E6%*_e쮀dȨt/UM#&7EP?WYWQF8'=chUm8ih ׷gt$5ADbOVYXR$H:*{U˕0~ɧ`+K""3Ble\y¦x 1@L8U:YXSJ;>l.G[w1 [Ќ t/?KfTXYTVL?0A >.Ȧƪ k0^-P=NJSXVYUMA2 ӛf򬊧 ɱjZ 1+v;HR?X~YKVNhC4I#0LaCek`s©z 1@L:U8YXSJ?>g.M_q+WЊ yz/#?KfTXYTPL@0< A *˦Īl/\-Q=LJSXXYUMA2 Ӕl𬉧 ʱjY 1+w;HR>XYJVNeC4F#0>ty\»VʍۚI(9\GQWYVO E6%*`deŨx+[E,&7EP5WY}WQF8'>_jX m:jk׻}jo$5:DjOVYXR#H:*~Yˑ3k"N$"3B8NUnYpXSIoh.LVy/ \Ѕ v}/"?KjTXYTQL@09 F2Ϊ#e3Y-Q=OJSXWYUMA2 Ӗm꬐ȱjY(+;HR;XYKVNjC4J#.>t߷y\»Wʊ۝~J(9aGQWYVO E6%,[j讁dǨw,XI%&7EP8WYWQF8'D[nS n9ii ׹~jo$5i.IYy+RЋ zz/!?KbTYYTPL@0B ;.Ʀɪ j0Y-V=GJSXVYUMA2 әi﬌ ˱i[)+~;HR=X}YNVNjC4J#/=y޷s`»VʌۚJ(9]GQWYVO E6%%e^wl}(ZI%&7EP=WYWQF8'A_kUn:ff ׹~gs$5?DdOVYXRH:*}U˔1h'M#"3B6NUmYrXSIl<@,?Ka@ke\t­{ 1@L2U@YXTJA>h.I\u/ [Ћ yz/#?KiTXYTQL@09 D-Ʀ˪!h/[-T=GJSXZYUMA2 ӓo꬐ ˱f_*+~;HRahWk;gj ׹gs$5>DfOVYXRH:*|P˙,~ǧb)P$"3B6NUlYtXSIgYXSJ?>i.KZw/XЏ v{/#?KiTXYTNL @07 B/Ŧʪh1X-W=FJSXUYUMA2! Ӕm ʱkX )+;HR?XzYOVNiC4H#/>u߷zXZʉۜJ(9\GQWYVO E6%)^f뮁dŨy*[G&&7EP?WYWQF8'C]mQj;hj ׹~io$56DoOVYWRH:*yT˖-§h#O!"3Bo.FXx1YЅ t/?KhTXYTPL@06 F2Ħɪ j0Y-T=KJSXPYUMA2 ӕn ʱi[*+;HRWYW QF8'B\mRk;gg׳bv$5l.D[z. YЌ w{/!?KcTXYTPL@0@ =0æ̪m,\-Q=LJSXVYUMA2 Ӗm쬏ƱmW 0+w;HR?X~YKVNiC4K#->w޷taŻSʎۛ}L(9^GQWYVO E6%'`d{j¨x.UN&7EP6WYWQF8'DZpQk=cb״hn$58DkOVYXRH:*{U˗.§i$R#"3B9NUpYoXSIkq.Bar/ \Ќ v|/!?KhTXYTRL@09 Fѽ 3æʪ m+zS-Y=FJSXTYUMA2 ӛiƱmX%+;HRii\w¬v 1@L6U:YXSJ@>g.J^t/ ZЉ {y/#?KhTXYTOL@0: C0Ħʪ l.|S-[=CJSXZYUMA2 ӏp ɱlX&+~;HR?X~YKVNfC4E#3;ot^ûVʍۘE(9\GQWYVO E6%,[gfƨt1RP &7EP:WYWQF8'>bhWl:hh ׸~ip$5:DhOVYXRH:*yV˔/ŧd(M#"3B8NUlYqXSIm<@,?MbBhh\v©w 1@L7Ue.J]x'[Њ u~/?KhTXYTSL@0: A2æ˪i1V-W=GJSXWYUMA2 ӕn묎 αf^++{;HR=XYMVNoC4R#)@rݭqaĻSʐۘG(9bGQWYVO E6%#cd뮁eŨy)[G)&7EP9WYWQF8'A_kTl:gf׶hr$5;DjOVYWRH:*W˘)ħg$M""3B7NUmYsXSIim.E]u,ZЈ xz/#?KhTXYTPL@0: Eѿ 0Ǧƪ j1W-X=EJSXWYUMA2 !Ӝf󬉧 ʱkY(+;HR=XYKVNeC4F#2=ux[YʊۚF(9`GQWYVOE6%(_ezjèw0TK&&7EP;WYWQF8'@`jU o9fc׳ds$5o.F^t/VЊ w|/"?KgTXYTRL@0> ?ѿ 5̪i0|V-U=KJSXTYUMA2 ӖlıpT *+|;HR?XYJVNiC4M#,?tqcĻTʐۗF(9_GQWYVOE6%*_dzj¨y,XI&&7EP9WYWQF8'B^jW ji.I[w+VЌ s}/$?KoTXYTPL@0< A 4¦ʪ k/V-W=GJSXRYUMA2 ӓn묏 ̱f]*+~;HR?X}YNVNhC4H#0?qpdȻPʓ۔F(9\GQWYVOE6%%bb{iĨv/UL$&7EP>WYWQF8'B]mRi=eg ׺|ll$58DjOVYXR"H:*zW˔/j"N%"3B7NUnYrXSIhp.B\w,XЎ wy/&?KjTXYTPL@0; D-Ȧƪ k0\-Q=MJSXVYUMA2 Ӛg򬊧 ɱh^)+;HR=X~YMVNkC4J#.?q{WTʐۗF(9fGQWYVO E6%-[iꮀdƨy)]D(&7EP;WYWQF8' D\nQh>ef ׷hs$5>DdOVYXRH: *T˕1g'P%"3B5NUmYqXSIn<>,<M_Dfi\w«s 1@L;U:YXSJ@>h.J\v/VЎ zw/&?KhTXYTML @09 Cѿ -ɦƪ h2~S-Y=HJSXTYUMA2 Ӗm묑 ʱh] -+{;HR?X{YQVNoC4M#,@sraĻUʋ۝}K(9_GQWYVPE6%'_gꮂdĨy,XJ$&7EP;WYWQF8'EYqPkm.G[v1 YЌ q/?KgTXYTNL@0: B+˦êm-}S-[=DJSXYYUMA2 ӗk﬋ ̱g\-+|;HR;XYNVNpC4P#*?vu_ĻUʌۜ~I(9cGQWYVOE6%+^ezl%[K!&7EP8WYWQF8'C\oOf=gi ׹}jp$5;DgOVYXR!H:*X˓2f(I!"3B9NUlYuXSIgh.G_t-[Є w~/?KfTXYTVL?0@ ; -Ŧ˪j/[-T=HJSXSYUMA2! ӕm쬏 ʱjZ $+;HR6XYKVNgC4L#+D~rw\WʌۙH(9\GQWYVOE6%+_bxjèx/RP!&7EPk.IXw-]І xz/$?KjTXYTML@0: Bѿ 1ŦȪ k/W-U=IJSXVYUMA2 Ӕk𬊧 DZlX)+;HR=X~YNVNjC4L#-@tv]ûUʏۗJ(9XGQWYVOE6%)`cc˨r/VJ(&7EP>WYWQF8'@^lSm8ij ׺~gt$5?DgOVYWRH:*~Zː4g&J'"3B5NUiYuXSIl<@,=L_CheXz§x 1@L7U;YXSJ=>k.E`r0WЋ s}/$?KjTXYTNL@0; C/Ŧʪ!f5Z-U=HJSXXYUMA2 Әj ȱj\'+;HR7XYIVNgC4H#0=pqcǻRʐۖF(9aGQWYVOE6%)_b|gèz)]F&&7EP;WYWQF8'C]nPj