pax_global_header00006660000000000000000000000064151414534110014511gustar00rootroot0000000000000052 comment=bd9126a071eea57db7ea1f84ad08bcb19bf06189 diegopvlk-Dosage-bd9126a/000077500000000000000000000000001514145341100153075ustar00rootroot00000000000000diegopvlk-Dosage-bd9126a/.github/000077500000000000000000000000001514145341100166475ustar00rootroot00000000000000diegopvlk-Dosage-bd9126a/.github/workflows/000077500000000000000000000000001514145341100207045ustar00rootroot00000000000000diegopvlk-Dosage-bd9126a/.github/workflows/build-flatpak.yml000066400000000000000000000011571514145341100241520ustar00rootroot00000000000000name: Build Flatpak Bundle on: push: branches: - "**" pull_request: branches: - "**" concurrency: group: release-${{ github.sha }} jobs: flatpak: name: Flatpak runs-on: ubuntu-latest container: image: bilelmoussaoui/flatpak-github-actions:gnome-47 options: --privileged steps: - name: Checkout uses: actions/checkout@v4 - name: Flatpak Builder uses: flatpak/flatpak-github-actions/flatpak-builder@v6.4 with: bundle: io.github.diegopvlk.Dosage.flatpak manifest-path: build-aux/io.github.diegopvlk.Dosage.json diegopvlk-Dosage-bd9126a/.gitignore000066400000000000000000000001301514145341100172710ustar00rootroot00000000000000_build build builddir /subprojects/blueprint-compiler .flatpak .flatpak-builder .vscode diegopvlk-Dosage-bd9126a/.prettierrc000066400000000000000000000005301514145341100174710ustar00rootroot00000000000000{ "tabWidth": 2, "overrides": [ { "files": ["*.js"], "options": { "printWidth": 100, "singleQuote": true, "arrowParens": "avoid", "endOfLine": "lf", "trailingComma": "all", "quoteProps": "as-needed", "bracketSpacing": true, "useTabs": true } } ] } diegopvlk-Dosage-bd9126a/COPYING000066400000000000000000001045141514145341100163470ustar00rootroot00000000000000 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 . diegopvlk-Dosage-bd9126a/Dosage.doap000066400000000000000000000022631514145341100173610ustar00rootroot00000000000000 Dosage Keep track of your treatments Dosage helps you remember to take your medications at the right time. Options for different frequencies, dose amounts, tracking stock, defining duration and checking your medication history. JavaScript GTK 4 Libadwaita Diego Povliuk diegopvlk diegopvlk-Dosage-bd9126a/README.md000066400000000000000000000043401514145341100165670ustar00rootroot00000000000000 ### Dosage Keep track of your treatments
Download on Flathub Get it from the Snap Store ### Features - **Notifications** — Get reminders at the right time - **History** — See which medications you took, skipped or missed - **Dosage management** — Multiple doses with different times - **Frequency modes** — Every day, selected days, cycle or just when necessary - **Color and icon** — Give a shape for your treatment - **Inventory tracking** — Monitor your stock and get reminded when it's low - **Duration** — Define the start and end dates

Other screenshots

### Donate If you want to help with a donation (thank you!), you can use: - [PayPal](https://www.paypal.com/donate?hosted_button_id=DVL7H35GA66X6) - [Ko-fi](https://ko-fi.com/diegopvlk) - Pix: diego.pvlk@gmail.com ### Translations You can help translate using [Weblate](https://hosted.weblate.org/projects/dosage/dosage/) Translation status ### Code of Conduct This project follows the [GNOME Code of Conduct](https://conduct.gnome.org) ### Build from source Clone the repo in GNOME Builder and press run diegopvlk-Dosage-bd9126a/build-aux/000077500000000000000000000000001514145341100172015ustar00rootroot00000000000000diegopvlk-Dosage-bd9126a/build-aux/io.github.diegopvlk.Dosage.json000066400000000000000000000020011514145341100251410ustar00rootroot00000000000000{ "app-id": "io.github.diegopvlk.Dosage", "runtime": "org.gnome.Platform", "runtime-version": "49", "sdk": "org.gnome.Sdk", "command": "io.github.diegopvlk.Dosage", "finish-args": [ "--share=ipc", "--socket=fallback-x11", "--device=dri", "--socket=wayland", "--system-talk-name=org.freedesktop.login1", "--socket=pulseaudio" ], "cleanup": [ "/include", "/lib/pkgconfig", "/man", "/share/doc", "/share/gtk-doc", "/share/man", "/share/pkgconfig", "*.la", "*.a" ], "modules": [ { "name": "libportal", "buildsystem": "meson", "config-opts": ["-Ddocs=false", "-Dvapi=false"], "sources": [ { "type": "git", "url": "https://github.com/flatpak/libportal", "tag": "0.9.1" } ] }, { "name": "dosage", "buildsystem": "meson", "builddir": true, "sources": [ { "type": "dir", "path": ".." } ] } ] } diegopvlk-Dosage-bd9126a/data/000077500000000000000000000000001514145341100162205ustar00rootroot00000000000000diegopvlk-Dosage-bd9126a/data/icons/000077500000000000000000000000001514145341100173335ustar00rootroot00000000000000diegopvlk-Dosage-bd9126a/data/icons/hicolor/000077500000000000000000000000001514145341100207725ustar00rootroot00000000000000diegopvlk-Dosage-bd9126a/data/icons/hicolor/io.github.diegopvlk.Dosage.Source.svg000066400000000000000000001537471514145341100300470ustar00rootroot00000000000000 Adwaita Icon Templateimage/svg+xmlGNOME Design TeamAdwaita Icon TemplateHicolorSymbolic diegopvlk-Dosage-bd9126a/data/icons/hicolor/scalable/000077500000000000000000000000001514145341100225405ustar00rootroot00000000000000diegopvlk-Dosage-bd9126a/data/icons/hicolor/scalable/apps/000077500000000000000000000000001514145341100235035ustar00rootroot00000000000000diegopvlk-Dosage-bd9126a/data/icons/hicolor/scalable/apps/io.github.diegopvlk.Dosage.svg000066400000000000000000000257771514145341100313220ustar00rootroot00000000000000 diegopvlk-Dosage-bd9126a/data/icons/hicolor/symbolic/000077500000000000000000000000001514145341100226135ustar00rootroot00000000000000diegopvlk-Dosage-bd9126a/data/icons/hicolor/symbolic/apps/000077500000000000000000000000001514145341100235565ustar00rootroot00000000000000diegopvlk-Dosage-bd9126a/data/icons/hicolor/symbolic/apps/io.github.diegopvlk.Dosage-symbolic.svg000066400000000000000000000060571514145341100332020ustar00rootroot00000000000000diegopvlk-Dosage-bd9126a/data/icons/meson.build000066400000000000000000000007331514145341100215000ustar00rootroot00000000000000application_id = 'io.github.diegopvlk.Dosage' scalable_dir = join_paths('hicolor', 'scalable', 'apps') install_data( join_paths(scalable_dir, ('@0@.svg').format(application_id)), install_dir: join_paths(get_option('datadir'), 'icons', scalable_dir) ) symbolic_dir = join_paths('hicolor', 'symbolic', 'apps') install_data( join_paths(symbolic_dir, ('@0@-symbolic.svg').format(application_id)), install_dir: join_paths(get_option('datadir'), 'icons', symbolic_dir) ) diegopvlk-Dosage-bd9126a/data/icons/scalable/000077500000000000000000000000001514145341100211015ustar00rootroot00000000000000diegopvlk-Dosage-bd9126a/data/icons/scalable/apps/000077500000000000000000000000001514145341100220445ustar00rootroot00000000000000diegopvlk-Dosage-bd9126a/data/icons/scalable/apps/io.github.diegopvlk.Cine.svg000066400000000000000000000073461514145341100273270ustar00rootroot00000000000000 diegopvlk-Dosage-bd9126a/data/icons/scalable/apps/io.github.diegopvlk.Tomatillo.svg000066400000000000000000000173301514145341100304070ustar00rootroot00000000000000 diegopvlk-Dosage-bd9126a/data/icons/ui/000077500000000000000000000000001514145341100177505ustar00rootroot00000000000000diegopvlk-Dosage-bd9126a/data/icons/ui/all-done-symbolic.svg000066400000000000000000000063161514145341100240110ustar00rootroot00000000000000diegopvlk-Dosage-bd9126a/data/icons/ui/ampoule-symbolic.svg000066400000000000000000000017141514145341100237550ustar00rootroot00000000000000diegopvlk-Dosage-bd9126a/data/icons/ui/check-auto-confirmed-symbolic.svg000066400000000000000000000105611514145341100263020ustar00rootroot00000000000000 diegopvlk-Dosage-bd9126a/data/icons/ui/check-confirmed-symbolic.svg000066400000000000000000000027071514145341100253370ustar00rootroot00000000000000diegopvlk-Dosage-bd9126a/data/icons/ui/clock-symbolic.svg000066400000000000000000000014001514145341100233760ustar00rootroot00000000000000 diegopvlk-Dosage-bd9126a/data/icons/ui/color-filled-symbolic.svg000066400000000000000000000025621514145341100246700ustar00rootroot00000000000000 diegopvlk-Dosage-bd9126a/data/icons/ui/cross-large-symbolic.svg000066400000000000000000000006111514145341100245270ustar00rootroot00000000000000diegopvlk-Dosage-bd9126a/data/icons/ui/dosage-auto-clear-history-symbolic.svg000066400000000000000000000012571514145341100273100ustar00rootroot00000000000000diegopvlk-Dosage-bd9126a/data/icons/ui/dosage-auto-start-symbolic.svg000066400000000000000000000013011514145341100256460ustar00rootroot00000000000000 diegopvlk-Dosage-bd9126a/data/icons/ui/dosage-notification-bell-symbolic.svg000066400000000000000000000006461514145341100271600ustar00rootroot00000000000000 diegopvlk-Dosage-bd9126a/data/icons/ui/dosage-notification-low-stock-symbolic.svg000066400000000000000000000010251514145341100301540ustar00rootroot00000000000000 diegopvlk-Dosage-bd9126a/data/icons/ui/dosage-notification-sound-symbolic.svg000066400000000000000000000003531514145341100273650ustar00rootroot00000000000000 diegopvlk-Dosage-bd9126a/data/icons/ui/dosage-stock-warning-symbolic.svg000066400000000000000000000112611514145341100263370ustar00rootroot00000000000000diegopvlk-Dosage-bd9126a/data/icons/ui/dosage-treatments-sorting-symbolic.svg000066400000000000000000000036531514145341100274300ustar00rootroot00000000000000 diegopvlk-Dosage-bd9126a/data/icons/ui/history-empty-symbolic.svg000066400000000000000000000013261514145341100251470ustar00rootroot00000000000000diegopvlk-Dosage-bd9126a/data/icons/ui/history-symbolic.svg000066400000000000000000000037321514145341100240160ustar00rootroot00000000000000diegopvlk-Dosage-bd9126a/data/icons/ui/injection-symbolic.svg000066400000000000000000000015351514145341100242760ustar00rootroot00000000000000diegopvlk-Dosage-bd9126a/data/icons/ui/magic-potion-symbolic.svg000066400000000000000000000036331514145341100247030ustar00rootroot00000000000000diegopvlk-Dosage-bd9126a/data/icons/ui/med-bottle-symbolic.svg000066400000000000000000000023021514145341100243410ustar00rootroot00000000000000diegopvlk-Dosage-bd9126a/data/icons/ui/med-confirmed-symbolic.svg000066400000000000000000000005451514145341100250250ustar00rootroot00000000000000 diegopvlk-Dosage-bd9126a/data/icons/ui/med-drop-symbolic.svg000066400000000000000000000006451514145341100240240ustar00rootroot00000000000000diegopvlk-Dosage-bd9126a/data/icons/ui/med-skipped-symbolic.svg000066400000000000000000000006551514145341100245200ustar00rootroot00000000000000 diegopvlk-Dosage-bd9126a/data/icons/ui/month-symbolic.svg000066400000000000000000000027301514145341100234370ustar00rootroot00000000000000 diegopvlk-Dosage-bd9126a/data/icons/ui/pill-alt-symbolic.svg000066400000000000000000000011311514145341100240220ustar00rootroot00000000000000diegopvlk-Dosage-bd9126a/data/icons/ui/pill-capsule-symbolic.svg000066400000000000000000000007571514145341100247130ustar00rootroot00000000000000diegopvlk-Dosage-bd9126a/data/icons/ui/pill-round-alt-symbolic.svg000066400000000000000000000005571514145341100251620ustar00rootroot00000000000000diegopvlk-Dosage-bd9126a/data/icons/ui/pill-round-symbolic.svg000066400000000000000000000012361514145341100243770ustar00rootroot00000000000000diegopvlk-Dosage-bd9126a/data/icons/ui/pill-square-alt-symbolic.svg000066400000000000000000000007671514145341100253360ustar00rootroot00000000000000diegopvlk-Dosage-bd9126a/data/icons/ui/pill-square-symbolic.svg000066400000000000000000000013401514145341100245440ustar00rootroot00000000000000diegopvlk-Dosage-bd9126a/data/icons/ui/pill-symbolic.svg000066400000000000000000000011341514145341100232470ustar00rootroot00000000000000diegopvlk-Dosage-bd9126a/data/icons/ui/pill-triangle-alt-symbolic.svg000066400000000000000000000007521514145341100256350ustar00rootroot00000000000000diegopvlk-Dosage-bd9126a/data/icons/ui/pill-triangle-symbolic.svg000066400000000000000000000013121514145341100250500ustar00rootroot00000000000000diegopvlk-Dosage-bd9126a/data/icons/ui/pin-symbolic.svg000066400000000000000000000011441514145341100230760ustar00rootroot00000000000000 diegopvlk-Dosage-bd9126a/data/icons/ui/plus-circle-outline-symbolic.svg000066400000000000000000000004371514145341100262130ustar00rootroot00000000000000 diegopvlk-Dosage-bd9126a/data/icons/ui/show-when-needed-symbolic.svg000066400000000000000000000011601514145341100254470ustar00rootroot00000000000000 diegopvlk-Dosage-bd9126a/data/icons/ui/skip-med-symbolic-rtl.svg000066400000000000000000000015301514145341100246170ustar00rootroot00000000000000 diegopvlk-Dosage-bd9126a/data/icons/ui/skip-med-symbolic.svg000066400000000000000000000014011514145341100240150ustar00rootroot00000000000000 diegopvlk-Dosage-bd9126a/data/icons/ui/today-icn-symbolic.svg000066400000000000000000000006761514145341100242100ustar00rootroot00000000000000diegopvlk-Dosage-bd9126a/data/icons/ui/treatments-symbolic.svg000066400000000000000000000027011514145341100244760ustar00rootroot00000000000000diegopvlk-Dosage-bd9126a/data/icons/ui/unselect-meds-symbolic.svg000066400000000000000000000044151514145341100250640ustar00rootroot00000000000000diegopvlk-Dosage-bd9126a/data/io.github.diegopvlk.Dosage.appdata.xml.in000066400000000000000000000446031514145341100260430ustar00rootroot00000000000000 io.github.diegopvlk.Dosage.desktop CC0-1.0 GPL-3.0-only Diego Povliuk diego.pvlk@gmail.com io.github.diegopvlk.Dosage.desktop dosage https://github.com/diegopvlk/Dosage https://github.com/diegopvlk/Dosage/issues https://github.com/diegopvlk/Dosage https://hosted.weblate.org/projects/dosage/dosage/ https://github.com/diegopvlk/Dosage#donate Dosage Keep track of your treatments

Easily manage and track treatments with Dosage: notifications, history, multiple doses, flexible frequency, customization, stock monitoring, and duration control

Features:

  • Notifications — Get reminders at the right time
  • History — See which medications you took, skipped or missed
  • Dosage management — Multiple doses with different times
  • Frequency modes — Every day, specific days, cycle or just when necessary
  • Color and icon — Give a shape for your treatment
  • Inventory tracking — Monitor your stock and get reminded when it's low
  • Duration — Define the start and end dates
#e4e9fc #5e6490 Dosage today window in light theme https://raw.githubusercontent.com/diegopvlk/Dosage/2bfc40f370418bcf1a72112582a2390836262de1/screenshots/today-light.png Dosage preferences window in light theme https://raw.githubusercontent.com/diegopvlk/Dosage/2bfc40f370418bcf1a72112582a2390836262de1/screenshots/preferences.png Dosage edit treatment window in light theme https://raw.githubusercontent.com/diegopvlk/Dosage/2bfc40f370418bcf1a72112582a2390836262de1/screenshots/med-dialog.png Dosage today window in dark theme https://raw.githubusercontent.com/diegopvlk/Dosage/2bfc40f370418bcf1a72112582a2390836262de1/screenshots/today-dark.png 360 pointing keyboard touch
  • Updated translations
  • New options for sorting treatments
  • New keyboard shortcuts
  • Improvements and fixes
  • Added Catalan translation
  • Updated translations
  • Improvements and fixes
  • Updated translations
  • New: Sort treaments by remaining stock
  • New: Export treatments as HTML
  • New: Export history as HTML
  • New: Export history using ISO date
  • Updated design to better match GNOME's style
  • Added Vietnamese translation
  • Updated translations
  • Updated GNOME Runtime to 49
  • Long treatment notes are now displayed on multiple lines
  • Updated German translation
  • Added Arabic translation
  • Updated translations
  • Updated translations
  • Updated Persian translation
  • Fixed the time not following 24h/12h preference when exporting CSV
  • Updated Estonian and Persian translation
  • The time now follows GNOME Settings time format
  • Added Estonian translation
  • Updated Persian translation
  • Updated GNOME Runtime to 48
  • Updated Turkish and Chinese translations
  • Added Chinese (Traditional) translation
  • Updated Swedish translation
  • Added Danish translation
  • Updated Finnish translation
  • New: Mark as confirmed (edit treatment to learn more)
  • Added a button to show 'When necessary' treatments on today page
  • The inventory badge now opens the refill dialog
  • You can now customize the refill amount
  • Notification priority is now set individually for each treatment
  • It's now possible to remove multiple history entries at once
  • Enable rubberband selection for Today and History lists
  • Fix: items confirmed/skipped from yesterday notifications will now update missed items from yesterday
  • Performance and UI/UX improvements
  • Small improvements and updated translations
  • Fixed last treatment of today page not being select correctly when using time button
  • Fixed confirming/skipping from yesterday notification removing treatment of today page
  • Added a button to show all/less history
  • Added a refill item to right click/treatment menu
  • Increased dose and inventory upper limit
  • Improvements and fixes
  • Added Korean translation
  • Minor improvement to save treatment with ctrl/shift + enter
  • Fixed a bug that can cause treatments to not save
  • Added a option to duplicate treatment
  • Added a new frequency mode: Day of the month
  • Fixed desktop icon not rendering correctly for KDE
  • Updated translations
  • Added a preference to disable low stock notifications
  • Redesign for GNOME 47 and accent colors
  • It's now possible to search the history
  • Fixed treatment list not showing if it the list was too big when using one-time entry
  • Performance and UI improvements
  • Updated translations
  • Fixed small history issues
  • Added Persian translation
  • Fixed an issue that was removing some recent history entries when auto-clear history was on
  • Improvements and fixed issues with displayed time
  • Fixed an issue with low stock notifications
  • Added Bulgarian translation
  • Notifications are now grouped by the same time
  • You can now select the time group in today tab (by clicking on title time)
  • Ported dialogs to the new Adwaita Adaptive Dialogs
  • Added German translation
  • Added Hindi translation
  • Fixed repeated notifications after confirming/skipping
  • Fixed crash related to history
  • Fixes for history issues
  • It's now possible to edit history entries
  • New preference to auto-clear history
  • New row style for select frequency
  • New row style for select date
  • New badge style for history confirmed item
  • (Snap) Added a preference to disable auto-start
  • Fixes, improvements and translation updates
  • Added Czech translation
  • Added Portuguese (Portugal) translation
  • Fixed UI issues with right-to-left languages
  • Fixed duration date showing if the frequency was 'When necessary'
  • The start date will now shown on treatment list
  • New: when selecting a today treatment, you can now change it's dose
  • Fixed an issue of treatment being marked as missed if had multiple doses, was removed from history and confirmed again
  • Fixed an issue with suspension
  • Small bug fix
  • Fixed an issue of treatments not being confirmed or skipped when using the notification button
  • Fixed an issue when adding a treatment using one-time entry with the today date being marked as missed if the time was the same from today list
  • UI improvements
  • Added release version history to about window
  • New: the cycle next active date will be displayed on inactive days (on treatment list)
  • New: option to add one-time entry as confirmed, skipped or missed
  • Fixed issues with cycle mode and missed items
  • Added Finnish translation (by Jiri Grönroos)
  • New feature: track missed items, when forgetting to confirm/skip the treatment will go to history as missed
  • UI changes, improvements and fixes
  • Fixed notification sound being played on suspension event
  • Fixed duration date text not being shown in local time
  • Slight changed background color of dark theme
  • Added a preference for notification sound
  • Added purism form factor tag for mobile
  • Fixed today page reload sometimes being delayed at midnight
  • Added Dutch translation (by Heimen Stoffels)
  • Fixed a problem with loading a treatment without recurring notification
  • Updated translations
  • Added a preference to disable notification buttons
  • Minor changes to treatment list and other minor fixes
  • Added a donate link in the about window - details
  • Added Belarusian translation (by Yahor Haurylenka)
  • Updated translations
  • Added notification buttons to confirm or skip
  • When inventory is enabled, it will always be visible on treatment list
  • Added an icon for when it's all done for today
  • Some minor fixes
  • New: custom interval for recurring notifications
  • Added Spanish translation (by Sergio Varela)
  • Added Turkish translation (by Sabri Ünal)
  • New feature: recurring notifications
  • Fixed specific days not showing correctly on treatment list
  • Changed notification style and added the time to it
  • Added a description for notification priority
  • Added Russian and Ukrainian translations (by Vovkiv)
  • Added French translation (by Xenelio)
  • Added Norwegian Bokmål translation (by Allan Nordhøy)
  • Added Swedish translation (by skøldis)
  • Added Italian translation (by Albano Battistella)
  • Fixed notifications being delayed after suspension
  • Fixed notifications being sent more than once after saving an existing treatment
  • Added a label to show the frequency on treatments list
  • Brazilian translation updated
  • Initial Release
diegopvlk-Dosage-bd9126a/data/io.github.diegopvlk.Dosage.data.gresource.xml000066400000000000000000000111071514145341100267230ustar00rootroot00000000000000 styles/style.css styles/card-colors.css sounds/ding.ogg ui/edit-hist-dialog.ui ui/med-dialog.ui ui/one-time-dialog.ui ui/preferences.ui ui/refill-dialog.ui ui/shortcuts-dialog.ui ui/window.ui icons/ui/today-icn-symbolic.svg icons/ui/history-symbolic.svg icons/ui/history-empty-symbolic.svg icons/ui/plus-circle-outline-symbolic.svg icons/ui/treatments-symbolic.svg icons/ui/unselect-meds-symbolic.svg icons/ui/skip-med-symbolic.svg icons/ui/skip-med-symbolic-rtl.svg icons/ui/clock-symbolic.svg icons/ui/show-when-needed-symbolic.svg icons/ui/pin-symbolic.svg icons/ui/dosage-treatments-sorting-symbolic.svg icons/ui/dosage-stock-warning-symbolic.svg icons/ui/cross-large-symbolic.svg icons/ui/color-filled-symbolic.svg icons/ui/pill-symbolic.svg icons/ui/pill-alt-symbolic.svg icons/ui/pill-capsule-symbolic.svg icons/ui/pill-round-symbolic.svg icons/ui/pill-round-alt-symbolic.svg icons/ui/ampoule-symbolic.svg icons/ui/injection-symbolic.svg icons/ui/pill-square-symbolic.svg icons/ui/pill-square-alt-symbolic.svg icons/ui/pill-triangle-symbolic.svg icons/ui/pill-triangle-alt-symbolic.svg icons/ui/med-bottle-symbolic.svg icons/ui/med-drop-symbolic.svg icons/ui/magic-potion-symbolic.svg icons/ui/med-confirmed-symbolic.svg icons/ui/med-skipped-symbolic.svg icons/ui/month-symbolic.svg icons/ui/check-confirmed-symbolic.svg icons/ui/check-auto-confirmed-symbolic.svg icons/ui/all-done-symbolic.svg icons/ui/dosage-auto-clear-history-symbolic.svg icons/ui/dosage-auto-start-symbolic.svg icons/ui/dosage-notification-bell-symbolic.svg icons/ui/dosage-notification-sound-symbolic.svg icons/ui/dosage-notification-low-stock-symbolic.svg icons/scalable/apps/io.github.diegopvlk.Cine.svg icons/scalable/apps/io.github.diegopvlk.Tomatillo.svg diegopvlk-Dosage-bd9126a/data/io.github.diegopvlk.Dosage.desktop.in000066400000000000000000000012051514145341100252720ustar00rootroot00000000000000[Desktop Entry] # TRANSLATORS: App name, translate to your language and follow the capitalization Name=Dosage Exec=io.github.diegopvlk.Dosage Icon=io.github.diegopvlk.Dosage Terminal=false Type=Application Categories=GTK;GNOME;Utility;MedicalSoftware;Calendar; # TRANSLATORS: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! Keywords=Medication;Tracker;Reminder;Today;Treatments;Pill;Drug;Remedy; X-GNOME-UsesNotifications=true # Translators: Do NOT translate or transliterate this text (these are enum types)! X-Purism-FormFactor=Workstation;Mobile; StartupNotify=truediegopvlk-Dosage-bd9126a/data/io.github.diegopvlk.Dosage.gschema.xml000066400000000000000000000022721514145341100254270ustar00rootroot00000000000000 800 591 false false true true true false false false 'name-ascending' 0 diegopvlk-Dosage-bd9126a/data/meson.build000066400000000000000000000036511514145341100203670ustar00rootroot00000000000000pkgdatadir = join_paths(get_option('datadir'), meson.project_name()) datadir = get_option('prefix') / get_option('datadir') blueprints = custom_target( 'blueprints', input: files( 'ui/edit-hist-dialog.blp', 'ui/med-dialog.blp', 'ui/one-time-dialog.blp', 'ui/preferences.blp', 'ui/refill-dialog.blp', 'ui/shortcuts-dialog.blp', 'ui/window.blp', ), output: '.', command: [ find_program('blueprint-compiler'), 'batch-compile', '@OUTPUT@', '@CURRENT_SOURCE_DIR@', '@INPUT@', ], ) data_res = gnome.compile_resources( 'io.github.diegopvlk.Dosage.data', 'io.github.diegopvlk.Dosage.data.gresource.xml', gresource_bundle: true, install: true, install_dir: pkgdatadir, dependencies: blueprints, ) desktop_file = i18n.merge_file( input: 'io.github.diegopvlk.Dosage.desktop.in', output: 'io.github.diegopvlk.Dosage.desktop', type: 'desktop', po_dir: '../po', install: true, install_dir: join_paths(get_option('datadir'), 'applications'), ) desktop_utils = find_program('desktop-file-validate', required: false) if desktop_utils.found() test('Validate desktop file', desktop_utils, args: [desktop_file]) endif appstream_file = i18n.merge_file( input: 'io.github.diegopvlk.Dosage.appdata.xml.in', output: 'io.github.diegopvlk.Dosage.appdata.xml', po_dir: '../po', install: true, install_dir: join_paths(get_option('datadir'), 'metainfo'), ) appstreamcli = find_program('appstreamcli', required: false) if appstreamcli.found() test( 'Validate appstream file', appstreamcli, args: ['validate', '--no-net', '--explain', appstream_file], ) endif install_data( 'io.github.diegopvlk.Dosage.gschema.xml', install_dir: join_paths(get_option('datadir'), 'glib-2.0/schemas'), ) compile_schemas = find_program('glib-compile-schemas', required: false) if compile_schemas.found() test( 'Validate schema file', compile_schemas, args: ['--strict', '--dry-run', meson.current_source_dir()], ) endif subdir('icons') diegopvlk-Dosage-bd9126a/data/sounds/000077500000000000000000000000001514145341100175335ustar00rootroot00000000000000diegopvlk-Dosage-bd9126a/data/sounds/ding.ogg000066400000000000000000000746741514145341100211740ustar00rootroot00000000000000OggS\A0k<vorbisDOggS\cvorbis TITLE=Dingvorbis%BCV@$s*FsBPBkBL2L[%s!B[(АU@AxA!%=X'=!9xiA!B!B!E9h'A08 8E9X'A B9!$5HP9,(05(0ԃ BI5gAxiA!$AHAFAX9A*9 4d((  @Qqɑɱ  YHHH$Y%Y%Y扪,˲,˲,2 HPQ Eq Yd8Xh爎4CSR,1\wD3$ R1s9R9sBT1ƜsB!1sB!RJƜsB!RsB!J)sB!B)B!J(B!BB!RB(!R!B)%R !RBRJ)BRJ)J %R))J!RJJ)TJ J)%RJ!J)8A'Ua BCVdR)-E"KFsPZr RͩR $1T2B BuL)-BrKsA3stG DfDBpxP S@bB.TX\]\@.!!A,pox N)*u \adhlptx||$%@DD4s !"#$ OggS\_ZIMT! DQ[S7G[NK/)N:53#K63'&B87% :*%!7)L;(L:'e酡3;Y]aoqa~'[׷ -˻|.=XlTۍ '0u^Ë`^z?~k|R͟Z@(@ĿU'@?BBy"DU*^g4NޚstP۟_`LT7 h?{6˄hՂ ` G4 _@ΆLKi3(YEw[NNչj;c6aiU `?{vj@}[[C.[kMFsR5G|^F5KW_d@0JUeW߻yj u JR{r]%zUU4P a@NQ0pR[9~  U;w4oö0Dkx)Emxxq_Em]-WfL08f?!c`1Um OVsTK4=z6@3)cG/ #?(Jj $@\x@0:1L0L`/TW @O>Y\ ¿>`g볼ʹ1#}cS&@#L(,X%@9}OJ &#XmV)`,~` @\-L%(KUW!{x;<ht^@ r@rO%@ hO wZM65j,k@cpd Tic 0( d ~)V֩c8iTtYL2A0Dz˳ mG-S k5֎'-da0unO]ot%WPT$`2 ټȑ{raDcGi6Uep=Xgl7K5zF%LJ2B1*q+ͲI@y)`T1eWUb\|&@dVTbooѹЯ#D${ R_H$I@]A`u뱫# >VX d9.겧EP+$ͻ ~[\_4XZyO' u ν >@8L&ӄNc_7[_|мV2l[-P&῏ A\P0 ?>O@pcͨh(J n$tAsQKy|IBd;@[@G7@cN ( *EUt"',Rthf!C oֹ1} #/.P@i4x O~P=4ҽ Pg ">7&gktE&8줥 @7s`~<R=`m9m 7 ̠O9^70m!'/KٻEl#p@ް X܀-^o } x!HeY<dz@4\W͋1P{w4+@7= IM@ n k[@wxca۞O?U#EcFd0kyUQ~O(y~&|h?~*b4-(ٜ,L ^9.CDP [!bEakx?i7`/PB4!x6xZ f?!Ƴ&JaG!O g(yE(/|sA)R(@P_^/Ar}N"Yo(Sd,&c^U#pn\&t;oju^Ma( @k^Px/o }!2 @0`'6.e~)6Ӊ޻<#piӫECd~p>L%sW p*pp&A4ЋV/d[~dq}Z\2[t\?>JFW]%SٙKw1/d9rPwC/{/aK+zޠ?7!t BYڼ7 mӽufk |^4MQO7w-v1%`Ϧ-v#@/8~)>7pY)QYZE| ?M7sΥ{*C _v}oИ! @. j#=0,Y\s7(">?py|? e 3፯zC@|D |O`h&|p^^%/_y^jO~pxqZOq\;@Lpo4 ~= a941DA;Gw^<$ :h.yoL{\2@ϹrJq/\A¸d d=+@ H/*ɮb2:xMIZ]#|]bޮ{j^*,@  иd myds.Bnd*p MksU5 <Qw ֝HBQ X`=rOCvE]l_kl<;ԥa?֞q W gt괅 /H`? !17?x’f h{{▏'={~n20xB{ j uQ=9){W:O,@I48بq.lJL!g }jΙRTLJ ;T5L* Ƈc( (aVǯ* _<I\6}G2n>c=7Ş>9 SD>vxƚt"us2~8}i_/=TP V O6582lm(=f,= pvU8@~ { l@V@3 ) 0u;bӹ_.TCxc6IM+` PkH`4遑P6O$`Mx p]\a 3vN ?+X]}yn0ƻk aVP&[6Llc(OB^gvW wrs(rSX ~l 9d{5R@T(`q<)->)T nն hu >N?'MI>|4A+GaG!(dh=IǚB7SGa2Xvqvcq3kL~wTلWlxA iB;(#q w# ЀJ` V.#m;@~݇|ӲH?MHc0Sm/)> @6MQO0c`D- 5 TG6\`p0:}x;DBM7ȡ `<,6!Q'`੃_/~6KCh%%@34Ѹ|1c ̡K% @n` @ @ A9q [;c81gG\(>ʈU}Z;sl( wtxH'|T aQC0!*96* kyrfC,=@)R]s~:s-sPJ!g F96V ;o  tgX=ҮmM"ypZkP뷯=f)gr@ \q@΀ >ed}Rp(N2Wa T"Okչw^xo+z8]  PcIRH!؀<>W ՚2l @.wss֧z!<Ʌ<O]2. \.f0w_ ʲ(׍w@|Z);@wWٿ![.YFCK;V~no^_AoA۬7OlgzzxCUŧ ;$'@ 6b2@C >=R/W4;ЯqbXf`ئ^i?/;9g?0<;x*. 05sXw¡]WޞzDaw״Ά1{KU6? ' G#YA ug!B`$ {=v|S{! svG*3߰?Dx`w8 gU \%޵0DO9܀1P0!lWG{vb^=x@)N0I2-2/S(|^+P&*{mQl f=ye @?'1`w_?  У8]`+&VP's p 4|.[sEvQQ;޻` xp&"1D*S kq}WcEMC.+PM93&[;Cc\"~ӝy<m #,i.@)wuo +8B-EJ8]"< #s"g2ᕼS?-xhm1kz*L83d?E;JRjVQ5)?kW.mpa 4Nn27qa6 4.^G݇5|[?@;d#,'"\=: a _?XC4ma R0MA 1B _ˍ<;z>,z=І%<|8  @[m;tKR_˥S>O095>SJι,J>|qHyʤ*h(ș_ytY΁a5 k?=34vn@!>7etfnA~1^7]F7kط~t})L;5Dv +ixk` Dп~}&|4ȪJN0:v_N!Y]y e [ )vf{L dvT8m^j@(n~Y>6@u zڽBz@d>dw?pO 3X8S *@ `7&  j1~']A}3ޢu0=ʃbx2a.`;}?'/_~+6[^ xڇpU 0&ɪ="iam:}~=/> \d 7u_|?/.sO_`,Mi/m ǹ m۶ `i8[8;-o7piP)0px8B@JP(`M3r>탥i}YqY7f\+ν-~Vk@7/̹K 4dzU'+}!42T=,_92~}{} v@n`+ XUjt'ny1~?ݕ@98w}}/_ d~D8 9@ZL{:?kͽ 3(0B#0%/lKY/Y:gxw ek_uBXj H ЄaW#_%>K{=6_^ړa:/6MxeC/Y?"bw:{ɋp o賮sJɔRh34TO>G G+M4r[Л(-6Pk$ ]EXĹuy$3Ot})=^%_&C>,_=с׻?@qK|a9 L40RD`U((V9mjyk {ȿTUU/xr z<9@ _P&W~l% Ҡpo9D}e \ wq9w`?81B@cX}*Ba.a. k:@ z4Ϲ6T`l:`B` P'&yQoreK.K.P$2 rC/')yʢ(m@,{mǶb>Ozy {4zI ?4zZoraYwO?@Fw@~)  ͕DDz+̘@.xdtFƸ #{ }~'0׊;רsr0?pU_&~TgPcE"TU cj?_΀g0i<lq0B|E|a[dG-?H+f%k gX>=>\rQt^cE@ǚ :\& &P_>F c.*X0jC k p>@x-BSc"{ Sooe/0.E~ xrXo p5P?4P7~i-hV?X UG߃ЭmZn "X>|6+z;?8LM`+71Y~7T?i} h;`vӀo sXU#y$ 2xC S^3^>eW<_na1.6-[ms ~#a0r ~y4~ً` F+x,.lM2To:ZoN,-M$8a;04!]ڨxM}\ {%^=oƌ59?ln&^ 0u9Kn` #~`BlT*3= (;6u+wU qם䳳<P2 g>*xSLj_XI,6x x  f){Wd9y[Ba0}Ozfǂ" \*>]^c_nJd>tBs!O|{ 6z`5g i<4B }>xd^ ش# x 1o?l'|l6:vKw1wmwj ns1_\,&+L2)%o^> gJ!9կhE)+LJ7~y?V%ׯU0 ࣄ[`0zjNeYݓNvz6pnT>\2Vk؝_ˈԲdɍ 7 _|_w~+`"X|j\k%`.`HHJBpVulN{@?T PMpO[=>@_{{{@Wy|7Y\vɍw|+ X3Ŧ@o _@?xZ!fQ#fh(׀ >\bOl0Iq>SLSj9a"zA@',/8ol J܀pU"N@>x_5q7_eoe Eȓ> DEk]FB-__X/PwDce1.'nS;-ZwBXh\iE_gťir]+Ti fb g J>pZ?^ Z j3Tğ}d'  V}p= 2|^y@N?@&O|wχxB_ޟZĐs9~v39۾-@E!q; 9zD3Ss~0;oֈ]pz}*C}ep9Nç0VUU䷗+p( ޱI:r^VpKJ.d\?M?ᅵKYǓ\ȓqa<\Lv3@K!ɘש!ADmlv~„Yo}/+Á7 !жK?(Y9:p)jsH>lh@<ֳk|G uOͯ074~\R|p pkw0ڀ6%ƄgRUW z?\r* k<@t'=q~x|Lz {o޽ҧ~x +G0 )(; R E4\W|1sB73N(h8 ^܃:̵5>~4e].yqiKo띧( ϼxwW7~cۉ;Ԙp0RUBV0R+8><|!7䕿R C8xP a A"?6O. P|@0>jb^bVIdHdwXPw@@~|~cb[_ Aښ+]E>ƈϖǶLܽ$gPD7iи@@0H3wrm_vlz3@a5EL)\P2 V|Lv@ pn$[_ mt_8/hw TC42d 98tQYH"D1sSrW#sIB!4]0(AsmPFl#ql-R[5g4k&ǶI`";O xO6x쪪"1|%{:,NLG)myɬ;"SPwNU"Eڜ?=>? "d>& gF,4@\GPy~Pzh@;.yr=»xJbԥ}^ŵIFdM~2ˣ2> ϊ[JQY7 FP ot AЀ9Չ,*xpakC?^kB:x=·ja10?qN>n*%_=rLj:t[ry?,GPǯ_~O`c \jg B yhbeZeڤMil1YÙ8h ~pc<.r[]v8 \ />/֏k=6 00?m /!7'@ɥ\O+^oMݻ;U36(PꫀXmo ^O_ g XlGƀu!H_4hivg^0- pó9 4 ~\4gr#irWo,woi?0?|5ୁ5opU0*@Լ8@?77sp'{]2ߘ [Oxxbx_r:| |wNpK|HO(/ _ b}@`pݍ!~}mwv@?&,rt QOwRc24\.Žo?-iɛ\t߂a.-!!2ss[|濾w`sᭁ54k8 ?cׄAUUU6X}3{?dr_a˫%V&dS/v(cJ33hcko20T'uw̧ C|f8czɘ:M3NaZP=JSh; bw @t7ܭEῺlOP))f {xh %@ %1Q&<)8.04T Jnd4{t\JGx_ Pv{M *\0wja\ZK[ra. Kx@ywo0XQ:y@=Ĥ& HB ^E t~U-gƑHehù@,pUy y\4ET0 *$:x9Ϩ@)1pr(L|:-eE!ƍGaD.weh; h_?WXicjVo:1P\piQO } !#A (^-@ff+Wߏ]Βw.-23|$~S 89*&TUUM{(^ϯoC PB 62d2o^p"Zo o{:^97h}'et+20ml}[N&~q<=[8v w0!JTqGҍm\A?1nsf~)}ksm1z ;L #y* xţ U"4?@{x Bz,B@ߍl)@(Y'!QfjD0e}Xߡzϳ]{.>ǎv'0bt 5<=Pvv9^ u׎PY ~<ԫUh?*=N3R嗤63 pl^}>4@P/_1`JEX]pqZX}ݏxyͯ'vv =!x_ ޣ] Y5OIm(012=|0&9ai< s>NcnPE?2,ϟG " 棭<6 S=) pNKRo|_LRģDbUU!7>2?|q@佐3(dY3ӜP_mr04'P@2/7 OX `0s9vf|Mn zr_MwY.MiL3\f#s 7 4`h^<Ջu'n꞊;ƒ{??0jR6~_V §|25 5TUU@؛i`@kygev>PȻImaνeY87lƶpvo_Y  F0Bv 欶_9_JU$b_P;osx1̦+Hu\jVL fkmec ^<ԋ{nH*węUg ~ 77@z9W AOQO>)@!f<]٘o8~v[宇_XKҿT 9 ]pU*h㣷'/o_.+@!?;ܝrέR9+|>oۙo\ūv;gn?Xd_@_P @@@Y_g&۲~3* ^m Px ~ ғLiVVz;Doy;'ʁWn/@14wPZ6>L䇔Ozڵx([kAo*tX0\~v D/_nx?rUUU xW̜qR9#^jg9Z]+W'k:o#gfgiw oΊ9\ kg`M{Jn,} H@u:4]{8o.D/WFu`0LN~XV#Lma^Unx68sf/@VȀc>L%E{$ZkY څ1}}{CLcgpolN3(FXUUUOa|yA.B.%L'K yRP]QSy =M;SZ  ~Lϔߣ*(K&m:/'f$ PxۀӸ@CS*'e?MJ y_ 00q̷Ζh} :~O4zkmo~X~m8_6~0LX <@ԜR r;Ƀx}B.B_\5duٷ( 2e* T|p_>G_[*e-ڷo%}Vd&n@. c*sݼg)J΅\ ~}K(PNꜽ߼`aD89SR~~.0ӽ<Dt<@C34g2:wnXBcn6U],_W;ZD 7, ]\g'?v8ch (^fp{PA?<|=%)Ys?:pW(*|;s}@P/ӛڤ@UUhoh_]pܸ @KxO!xqOqoy;ksxW 0i5D4nb/adRnfcNF3198r.`e\Mi Tv=;^Q7=LJU}^yRqT#nev_^@&+ZР9 *@^f]ܪ8cP|,حqNʩ Ϟ 0~`a (c *N| @>< xxx@ -~ ; JZ?Q[=> 4G;:_sd<;Y))q.VNW5T{MCh ʐL?7\BqY~]/5T ʙUUUB>W=M \>K _(2ykp Oh _vlz\Y+0CEDE(J~j]ݤ1awB^kT bƖUݨgcU~U,_)|;+7{ˌKP؇_/S> o$ov\j` Z}g?8x|>z=)<@K!x Li_`0 @0g0כ_68gLG5js0 ^WWXe %. vqrC\ۿ|Ҥi^a&wݹA' Ї@~|Uھ5 -F|%?I❇Tj`PKnϷ&3SwRna13@y{r(4T - *j*<ɜ&aNۯO*GΆ+o.s7?yѸ"90p"Cl#O9cXNbڇ3Kt8=xwIXoDՃN0\˙=N ^\Uʴ싾_iƘʭRhAP癕g=L hP^)6Q!UU7NjW9g(ݼ)Hv8_ق0K\;'^`oif}GS6^,_8otpU˹ rσdAiSrp Ii"ɄۑJe!N-ǂ_' R3Vv Ab8z-֛T204 >]eE͔%6}t`|7#^nhgkPb$%UPUU~w5w 2@%lPrJ.ygp;>y+ hmz}=z:x^p൏/g;p{~ ɤB^WU4tPZf],5 ~'y{tN~Z::3_ܵǁ#@wyvu$R/L1ț[ It1:Ƞ` 2d ^^`=c0JW売gAΨoz,~|pր2GAUPU@=6dJ&jڿC<.,{#@@]7zhw)Y0^LceΟb$8wQ IwFh_UX}N11E?׉A 3/`0݊ Gs$Jgp~V=-y||E<ϙ>G=@zÇO:\hiUUUUPd$/\=z. @aLΓՕ m)cZLA 433l{<jA$]lx= 5I"[.ΜrXr.C+.ziUsNܨ #@ş%mAa]g/^/)K>U=Zء?<5lZ U UU \).aDH2gGV#ޞot >xCw83k}P79ZtZoO$4РR'I\Lny^zV=JxۥpzQ2Xu6/c:i%VP+A@G5k$oz3%{;H 0Ɓ(@~f|]._|Z~IcɎ_R"z<&1G 5?rT B"ۇ{=-*oLϟ?>X.K;WUU!s|@У@9Rv6qmɣ@7/*9L_Rr*Iv%@@)piU~ 4SLWvmFubEX%)|˷OFc3tor6xm׳ה9ztL*nY'q>t%a @ d~|Uʣ[o/OߕԵ,{[?gm|Ǜ;%JBC֮SC&x  @_)l? S2ӛsp({P2_Lc g =qx@@w[V`86+<|{Kܕ {L)#_0Q 0J6L fqh={wf"g;Dukog w@ ZVd)oQEB籡 1`ô9Ͽ|$~u2^ս8UT<0 2Zdg z{Bl]_1Kk~w6wXz{͔tA{-X;J@ ^|UL"Dɵ,%c̻QG}$`ßrSѸ@ FE*_aݓxrw@.ygk;ɥЦج;@7mo?7c:lc>&CÀp8ׁs _/>D󺒣_5~_RUy?=K$݈KIhi_eJD~FЂWG$VtY@nؒP]q,H'97k@^ _&iZW(q-{a5'=7ȕ"J~va VU/W{2 Or„ǯs8>kzιXf6NM}C?oo]5 `so_9;ԗfcρzRQ#c[khj–[؅|1Yǘ6JW*#q[T˓yo `PF^o?V=,,V w3_"p3iX3Ne \CPf;8 Kx5g6oWƽ9SSn 3S㌟gۃ S0L_NH']I%87|ddT.I[Q5Q!dsҜV3{6bZue*g٠.K< ilp~o[1V8G_U%*yO֬Wf+DnjP Q%%TACͅ?O2dOrϐ*H*fzs`߽[>Ә9E*g?{] Np/d :߶ygL~-J'} dYP HIߢaq4~RTbu! hb$hlu ^>e-m\Ywmۺ;%<3K&M5TUA2[fAcȧ5:wzӣ[kJRq؇z_'Ls:w59a 4Xi>7/4w`} 㸲ʈp,rϨHyl0/|_ZI3._; .mgVJ-nPl|mO3 J~{Kub!7L? scrollbar.vertical:dir(ltr), preferencespage scrolledwindow > scrollbar.vertical:dir(ltr) { margin-left: -11px; } .scrollbar-visible > scrollbar.vertical:dir(rtl), preferencespage scrolledwindow > scrollbar.vertical:dir(rtl) { margin-right: -11px; } statuspage .icon { margin-top: -30px; } statuspage .title { margin-bottom: 32px; } #preferences scrolledwindow viewport clamp { margin-top: -24px; margin-bottom: -6px; } #preferences preferencespage preferencesgroup:first-child, #preferences preferencespage preferencesgroup:nth-child(2) { margin-bottom: -10px; } item-box { min-height: 46px; padding: 5px 0; color: var(--card-fg-color); } item-box:dir(ltr) { box-shadow: var(--list-border), var(--list-shadow), inset 53px 0 0 -50px var(--med-color); border-radius: var(--list-border-radius); } item-box:dir(rtl) { box-shadow: var(--list-border), var(--list-shadow), inset -53px 0 0 -50px var(--med-color); border-radius: var(--list-border-radius); } item-box label.title:first-child { margin-top: -4px; } item-box label.subtitle:last-child { margin-bottom: -4px; } .dosage-list > row item-box { background-color: var(--card-bg-color); transition: var(--background-transition); } .dosage-list > row:hover item-box { background-image: image(color-mix(in srgb, currentColor 3%, transparent)); } .dosage-list > row:active item-box { background-image: image(color-mix(in srgb, currentColor 8%, transparent)); } .dosage-list > header { padding: 2px; padding-top: 14px; padding-bottom: 0px; min-height: 21px; } .dosage-list > header, .dosage-list > row { margin-left: 10px; margin-right: 10px; } .dosage-list > row { border-radius: calc(var(--list-border-radius) + 2px); background: none; } .dosage-list { background-color: transparent; padding-bottom: 75px; } .list-no-extra-padding-bottom { padding-bottom: 20px; } row.expander row.spin:focus-within { outline: 2px solid rgb(from var(--accent-color) r g b / calc(alpha * 0.5)); outline-offset: -2px; } #preferences .boxed-list, #one-time-dialog .boxed-list, #refill-dialog .boxed-list { margin: 2px 0; } button.specific-day { min-width: 40px; padding-left: 1px; padding-right: 1px; } .popover-scrolled > contents scrollbar.vertical > range > trough > slider { min-height: 16px; } .one-time-menu popover contents:dir(ltr) { padding: 6px; padding-right: 0; } .one-time-menu popover contents:dir(rtl) { padding: 6px; padding-left: 0; } button.one-time-name { font-weight: 400; } row.combo popover > contents listview row { padding-top: 8px; padding-bottom: 8px; } #medication-dialog row.combo .dropdown-arrow { background-color: rgb(from currentColor r g b / calc(alpha * 0.1)); min-height: 34px; padding: 0 9px; border-radius: 99px; transition: var(--background-transition); } #medication-dialog row.combo .dropdown-arrow:hover { background-color: rgb(from currentColor r g b / calc(alpha * 0.15)); } #med-dialog-dosage-list { margin: -2px; margin-bottom: -3px; background-color: var(--card-bg-color); border-radius: 12px; } #med-dialog-dosage-list row { border-color: var(--card-shade-color); } #med-dialog-dosage-list row:first-child { border-top-left-radius: 12px; border-top-right-radius: 12px; } #med-dialog-dosage-list row:last-child { border-bottom-left-radius: 12px; border-bottom-right-radius: 12px; } /* When using ListView.scroll_to(0) the view will scroll to the first item instead of the first header. The same thing happens in today list when confirming so use this little hack to scroll to header instead */ listview.scroll-to-top-hack > :nth-child(1) { margin-bottom: -35px; } listview.scroll-to-top-hack > :nth-child(2) { margin-top: 35px; } time-group-selection { transition: all 200ms var(--cubic-bezier); min-height: 21px; padding: 0 2px; margin: 0 -2px 0px; background-size: 0.75em; background-repeat: no-repeat; } time-group-selection label { text-decoration: underline; text-decoration-color: var(--window-bg-color); transition: 200ms var(--cubic-bezier); } time-group-selection:hover label { text-decoration: underline; text-decoration-color: currentColor; } time-group-selection:active label { text-decoration: underline; color: rgb(from currentColor r g b / calc(alpha * 0.65)); transition: none; text-decoration-color: currentColor; } time-group-selection:dir(ltr) { background-position: 92% 50%; } time-group-selection:dir(rtl) { background-position: 6% 50%; } time-group-selection:hover:dir(ltr) { padding-right: 1.25em; } time-group-selection:hover:dir(rtl) { padding-left: 1.25em; } .t-d-row box.suffixes > spinbutton > text:dir(ltr) { margin-left: -18px; } .t-d-row box.suffixes > spinbutton > text:dir(rtl) { margin-right: -18px; } time-picker button { border-radius: 99px; padding: 3px; } time-picker time-spinbutton text { padding: 6px 0px; margin: 2px; } .today-amount > button { min-width: 30px; min-height: 30px; } .spin-box row.spin { outline: none; } .spin-box > row.spin > box { margin: -4px 4px; } .spin-box:dir(ltr) > row.spin > box { margin-left: 10px; } .spin-box:dir(rtl) > row.spin > box { margin-right: 10px; } .spin-today-amount:dir(ltr) > row.spin > box { margin-left: -16px; } .spin-today-amount:dir(rtl) > row.spin > box { margin-right: -16px; } badge-box label { padding: 5px 8px; } badge-box { background-color: rgb(from currentColor r g b / calc(alpha * 0.1)); border-radius: 99px; font-weight: 600; font-size: 0.902em; } badge-icon { background-color: rgb(from currentColor r g b / calc(alpha * 0.1)); padding: 0 5px; } badge-icon:dir(ltr) { border-top-right-radius: 99px; border-bottom-right-radius: 99px; padding-left: 4px; margin-left: -4px; } badge-icon:dir(rtl) { border-top-left-radius: 99px; border-bottom-left-radius: 99px; padding-right: 4px; margin-right: -4px; } .badge-button { border-radius: 99px; font-weight: 600; font-size: 0.902em; padding: 1px 9px; } .badge-button label { text-transform: capitalize; } .badge-button.warning:dir(ltr) { padding-right: 0; } .badge-button.warning:dir(rtl) { padding-left: 0; } .badge-button.warning image:dir(ltr) { background-color: rgb(from currentColor r g b / calc(alpha * 0.1)); border-top-right-radius: 99px; border-bottom-right-radius: 99px; margin: -1px 0 -1px 4px; padding-left: 4px; padding-right: 5px; } .badge-button.warning image:dir(rtl) { background-color: rgb(from currentColor r g b / calc(alpha * 0.1)); border-top-left-radius: 99px; border-bottom-left-radius: 99px; margin: -1px 4px -1px 0; padding-right: 4px; padding-left: 5px; } button.secondary.floating { padding-left: 10px; padding-right: 10px; } button.floating.secondary image { min-width: 1.2em; } button.floating { margin: 13px 4px; } #medication-dialog headerbar button, #edit-hist-dialog headerbar button { min-width: 56px; } .popover-calendar contents { padding: 1px; } calendar { padding: 5px 4px; border-color: transparent; background-color: transparent; } calendar button, calendar .day-number { border-radius: 99px; } calendar button, calendar .month, calendar .year { margin-bottom: 5px; margin-top: -1px; } calendar .month label, calendar .year, calendar .day-name { font-weight: bold; text-transform: capitalize; } calendar .day-name { opacity: 0.5; } calendar .day-number { border-radius: 99px; padding: 2px 0; min-width: 28px; min-height: 28px; } .calendar-error { border-radius: 14px; animation: flashCalendar 0.8s; } @keyframes flashCalendar { 10% { background-color: rgb( from var(--error-bg-color) r g b / calc(alpha * 0.33) ); } } @media (prefers-color-scheme: light) { button.floating:not(.suggested-action) { background-color: #e6e6e7; } button.floating:not(.suggested-action):hover { background-color: #dcdcde; } button.floating:not(.suggested-action):active { background-color: #bebec0; } button.floating.destructive-action { background-color: #f2d5d5; } button.floating.destructive-action:hover { background-color: #efc8c9; } button.floating.destructive-action:active { background-color: #e7a3a3; } time-group-selection:hover { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 16 16'%3E%3Cpath fill='%23823a5f' d='m14.983 3.5-1-1-7.469 7.516L3.1 6.539l-2 2 5.414 5.477L15.983 4.5z' style='fill:%232f2f34'/%3E%3C/svg%3E"); } } @media (prefers-color-scheme: dark) and (prefers-contrast: no-preference) { button.floating { box-shadow: 0 1px 3px 0px rgba(10, 10, 10, 0.2); } } @media (prefers-color-scheme: dark) { button.floating:not(.suggested-action) { background-color: #48484b; } button.floating:not(.suggested-action):hover { background-color: #525255; } button.floating:not(.suggested-action):active { background-color: #717173; } button.floating.destructive-action { background-color: #5b4244; } button.floating.destructive-action:hover { background-color: #684748; } button.floating.destructive-action:active { background-color: #8f5555; } time-group-selection:hover { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 16 16'%3E%3Cpath fill='%23823a5f' d='m14.983 3.5-1-1-7.469 7.516L3.1 6.539l-2 2 5.414 5.477L15.983 4.5z' style='fill:%23ffffff'/%3E%3C/svg%3E"); } *, item-box.default { --list-border: 0 0 0 transparent; --list-shadow: 0px 2px 3px 0px rgba(0, 0, 0, 0.22); } #med-dialog-dosage-list { background-color: #343437; } } @media (prefers-contrast: more) { *, item-box.default { --list-border: inset 0 0 0 1px var(--border-color); } row.combo .dropdown-arrow { box-shadow: inset 0 0 0 1px rgb(from currentColor r g b / calc(alpha * 0.6)); } } diegopvlk-Dosage-bd9126a/data/ui/000077500000000000000000000000001514145341100166355ustar00rootroot00000000000000diegopvlk-Dosage-bd9126a/data/ui/edit-hist-dialog.blp000066400000000000000000000043551514145341100224720ustar00rootroot00000000000000using Gtk 4.0; using Adw 1; template $EditHistDialog: Adw.Dialog { name: "edit-hist-dialog"; content-width: 394; title: _("Edit Entry"); Adw.ToolbarView { [top] Adw.HeaderBar headerBar { show-start-title-buttons: false; show-end-title-buttons: false; decoration-layout: ""; [start] Button cancelButton { label: _("Cancel"); name: "cancel"; can-shrink: true; clicked => $_closeDialog(); } [end] Button saveButton { styles [ "suggested-action", ] label: _("Save"); name: "save"; can-shrink: true; clicked => $_save(); } } content: ScrolledWindow { styles [ "scrollbar-visible", ] Adw.Clamp editHistDialogClamp { maximum-size: 380; Box { orientation: vertical; margin-start: 12; margin-end: 12; margin-top: 12; margin-bottom: 17; ListBox { styles [ "boxed-list", ] selection-mode: none; Adw.SpinRow nameDoseSpinRow { title: "name"; subtitle: "dose unit"; digits: 2; adjustment: Adjustment { lower: 0.25; upper: 9999; step-increment: 0.25; value: 1; }; } Adw.ActionRow takenRow { styles [ "property", ] title: "confirmed/skipped at"; subtitle: "time"; [suffix] Box { spacing: 10; MenuButton { styles [ "circular", ] valign: center; tooltip-text: _("Change Time"); icon-name: "clock-symbolic"; popover: Popover { styles [ "popover-scrolled", ] ScrolledWindow popoverScrollTime { propagate-natural-height: true; propagate-natural-width: true; } }; } Adw.ToggleGroup takenButtons { valign: center; notify::active => $_handleTakenRowStatus(); Adw.Toggle { icon-name: "med-skipped-symbolic"; tooltip: _("Skipped"); name: 'skipped'; } Adw.Toggle { tooltip: _("Confirmed"); icon-name: "med-confirmed-symbolic"; name: 'confirmed'; } } } } } } } }; } } diegopvlk-Dosage-bd9126a/data/ui/med-dialog.blp000066400000000000000000000442201514145341100213400ustar00rootroot00000000000000using Gtk 4.0; using Adw 1; template $MedDialog: Adw.Dialog { name: 'medication-dialog'; content-width: 442; title: _("New Treatment"); Adw.ToastOverlay toastOverlay { Adw.ToolbarView { [top] Adw.HeaderBar headerBar { show-start-title-buttons: false; show-end-title-buttons: false; decoration-layout: ''; [start] Button cancelButton { label: _("Cancel"); name: 'cancel'; can-shrink: true; clicked => $_close(); } [end] Button saveButton { styles [ 'suggested-action', ] label: _("Add"); name: 'save'; can-shrink: true; clicked => $_save(); } } content: ScrolledWindow { styles [ 'scrollbar-visible', ] Adw.Clamp medDialogClamp { maximum-size: 440; Box { orientation: vertical; margin-start: 12; margin-end: 12; margin-top: 12; margin-bottom: 17; ListBox { styles [ 'boxed-list-separate', ] selection-mode: none; Adw.EntryRow medName { title: _("Name"); MenuButton dosageColorButton { styles [ 'circular', ] valign: center; tooltip-text: _("Color"); name: 'default'; icon-name: 'color-filled-symbolic'; popover: Popover dosageColorPopover { styles [ "popover-scrolled", ] ScrolledWindow { propagate-natural-height: true; propagate-natural-width: true; Box dosageColorBox { spacing: 4; Button { styles [ 'circular', 'default-clr', ] valign: center; name: 'default'; // TRANSLATORS: Tooltip for the colors (from Default until Purple) tooltip-text: _("Default"); icon-name: 'color-filled-symbolic'; } Button { styles [ 'circular', 'red-clr', ] valign: center; name: 'red'; tooltip-text: _("Red"); icon-name: 'color-filled-symbolic'; } Button { styles [ 'circular', 'orange-clr', ] valign: center; name: 'orange'; tooltip-text: _("Orange"); icon-name: 'color-filled-symbolic'; } Button { styles [ 'circular', 'yellow-clr', ] valign: center; name: 'yellow'; tooltip-text: _("Yellow"); icon-name: 'color-filled-symbolic'; } Button { styles [ 'circular', 'green-clr', ] valign: center; name: 'green'; tooltip-text: _("Green"); icon-name: 'color-filled-symbolic'; } Button { styles [ 'circular', 'cyan-clr', ] valign: center; name: 'cyan'; tooltip-text: _("Cyan"); icon-name: 'color-filled-symbolic'; } Button { styles [ 'circular', 'blue-clr', ] valign: center; name: 'blue'; tooltip-text: _("Blue"); icon-name: 'color-filled-symbolic'; } Button { styles [ 'circular', 'purple-clr', ] valign: center; name: 'purple'; tooltip-text: _("Purple"); icon-name: 'color-filled-symbolic'; } } } }; } } Adw.EntryRow medUnit { title: _("Unit"); text: _("Pill(s)"); MenuButton dosageIconButton { styles [ 'circular', ] valign: center; tooltip-text: _("Icon"); icon-name: 'pill-symbolic'; popover: Popover dosageIconPopover { styles [ "popover-scrolled", ] ScrolledWindow { propagate-natural-height: true; propagate-natural-width: true; Grid dosageIconBox { row-spacing: 3; Button { layout { row: "0"; column: "0"; } styles [ 'flat', 'circular', ] valign: center; icon-name: 'pill-symbolic'; // TRANSLATORS: Tooltip for the icons (from Pill until Potion) tooltip-text: _("Pill"); } Button { layout { row: "0"; column: "1"; } styles [ 'flat', 'circular', ] valign: center; icon-name: 'pill-alt-symbolic'; tooltip-text: _("Alternative Pill"); } Button { layout { row: "0"; column: "2"; } styles [ 'flat', 'circular', ] valign: center; icon-name: 'pill-capsule-symbolic'; tooltip-text: _("Capsule"); } Button { layout { row: "0"; column: "3"; } styles [ 'flat', 'circular', ] valign: center; icon-name: 'pill-round-symbolic'; tooltip-text: _("Round Pill"); } Button { layout { row: "0"; column: "4"; } styles [ 'flat', 'circular', ] valign: center; icon-name: 'pill-round-alt-symbolic'; tooltip-text: _("Alternative Round Pill"); } Button { layout { row: "0"; column: "5"; } styles [ 'flat', 'circular', ] valign: center; icon-name: 'ampoule-symbolic'; tooltip-text: _("Ampoule"); } Button { layout { row: "0"; column: "6"; } styles [ 'flat', 'circular', ] valign: center; icon-name: 'injection-symbolic'; tooltip-text: _("Injection"); } Button { layout { row: "1"; column: "0"; } styles [ 'flat', 'circular', ] valign: center; icon-name: 'pill-square-symbolic'; tooltip-text: _("Square Pill"); } Button { layout { row: "1"; column: "1"; } styles [ 'flat', 'circular', ] valign: center; icon-name: 'pill-square-alt-symbolic'; tooltip-text: _("Alternative Square Pill"); } Button { layout { row: "1"; column: "2"; } styles [ 'flat', 'circular', ] valign: center; icon-name: 'pill-triangle-symbolic'; tooltip-text: _("Triangle pill"); } Button { layout { row: "1"; column: "3"; } styles [ 'flat', 'circular', ] valign: center; icon-name: 'pill-triangle-alt-symbolic'; tooltip-text: _("Alternative Triangle Pill"); } Button { layout { row: "1"; column: "4"; } styles [ 'flat', 'circular', ] valign: center; icon-name: 'med-bottle-symbolic'; tooltip-text: _("Bottle"); } Button { layout { row: "1"; column: "5"; } styles [ 'flat', 'circular', ] valign: center; icon-name: 'med-drop-symbolic'; tooltip-text: _("Drops"); } Button { layout { row: "1"; column: "6"; } styles [ 'flat', 'circular', ] valign: center; icon-name: 'magic-potion-symbolic'; tooltip-text: _("Potion"); } } } }; } } Adw.EntryRow medNotes { title: _("Notes"); } Adw.ComboRow frequencyMenu { styles [ 'property', 'numeric', ] title: _("Frequency"); use-subtitle: true; model: StringList { strings [ _("Every Day"), _("Specific Days"), _("Day of Month"), _("Cycle"), _("As Needed"), ] }; [prefix] MenuButton frequencySpecificDays { styles [ 'circular', ] visible: false; valign: center; tooltip-text: _("Choose Days"); Adw.ButtonContent { icon-name: 'view-more-horizontal-symbolic'; } popover: Popover { styles [ "popover-scrolled", ] ScrolledWindow { propagate-natural-width: true; Box specificDaysBox { spacing: 4; ToggleButton { styles [ 'flat', 'specific-day', ] valign: center; active: false; } ToggleButton { styles [ 'flat', 'specific-day', ] valign: center; active: false; } ToggleButton { styles [ 'flat', 'specific-day', ] valign: center; active: false; } ToggleButton { styles [ 'flat', 'specific-day', ] valign: center; active: false; } ToggleButton { styles [ 'flat', 'specific-day', ] valign: center; active: false; } ToggleButton { styles [ 'flat', 'specific-day', ] valign: center; active: false; } ToggleButton { styles [ 'flat', 'specific-day', ] valign: center; active: false; } } } }; } [prefix] MenuButton frequencyDayOfMonth { styles [ 'circular', ] visible: false; valign: center; tooltip-text: _("Choose Day"); Adw.ButtonContent { icon-name: 'view-more-horizontal-symbolic'; } popover: Popover { styles [ "popover-scrolled", ] ScrolledWindow { propagate-natural-height: true; propagate-natural-width: true; Box { styles [ 'spin-box', ] Adw.SpinRow dayOfMonth { activatable: false; selectable: false; climb-rate: 0.2; adjustment: Adjustment { lower: 1; upper: 28; step-increment: 1; value: 1; }; } } } }; } [prefix] MenuButton frequencyCycle { styles [ 'circular', ] visible: false; valign: center; tooltip-text: _("Change Cycle"); Adw.ButtonContent { icon-name: 'view-more-horizontal-symbolic'; } popover: Popover { styles [ "popover-scrolled", ] ScrolledWindow { propagate-natural-height: true; propagate-natural-width: true; Box { styles [ 'spin-box', ] orientation: vertical; Adw.SpinRow cycleActive { activatable: false; selectable: false; title: _("Days Active"); climb-rate: 0.2; adjustment: Adjustment { lower: 1; upper: 365; step-increment: 1; value: 21; }; } Adw.SpinRow cycleInactive { activatable: false; selectable: false; title: _("Days Inactive"); climb-rate: 0.2; adjustment: Adjustment { lower: 1; upper: 365; step-increment: 1; value: 7; }; } Adw.SpinRow cycleCurrent { activatable: false; selectable: false; // TRANSLATORS: Day in cycle, try to keep it short title: _("Today is Cycle Day…"); climb-rate: 0.2; adjustment: Adjustment { lower: 1; upper: 365; step-increment: 1; value: 1; }; } } } }; } } ListBox dosageList { selection-mode: none; show-separators: true; name: "med-dialog-dosage-list"; } Adw.SwitchRow increasePriority { title: _("Increase Notification Priority"); subtitle: _("Show in fullscreen mode or with 'Do Not Disturb' enabled"); } Adw.ExpanderRow recurringNotif { title: _("Recurring Notifications"); subtitle: _("Renotify until it's confirmed or skipped"); show-enable-switch: true; enable-expansion: false; Adw.SpinRow { title: _("Interval in Minutes"); climb-rate: 0.2; adjustment: Adjustment recurringInterval { lower: 5; upper: 60; step-increment: 1; value: 5; }; } } Adw.ExpanderRow medInventory { title: _("Inventory"); subtitle: _("Manage your stock"); show-enable-switch: true; enable-expansion: false; expanded: true; Adw.SpinRow { title: _("Current"); climb-rate: 0.2; digits: 2; adjustment: Adjustment medCurrrentInv { lower: 0; upper: 99999; step-increment: 1; value: 30; }; } Adw.SpinRow { title: _("Remind Me At"); climb-rate: 0.2; digits: 2; adjustment: Adjustment medReminderInv { lower: 0; upper: 99999; step-increment: 1; value: 7; }; } Adw.SpinRow { title: _("Refill Amount"); climb-rate: 0.2; adjustment: Adjustment refillAmount { lower: 0; upper: 99999; step-increment: 1; value: 30; }; } } Adw.ExpanderRow medDuration { title: _("Duration"); subtitle: _("Set start and end dates"); show-enable-switch: true; enable-expansion: false; Adw.ActionRow calendarStartRow { styles [ 'property', 'numeric', ] title: _("Start"); activatable-widget: calendarStartBtn; [suffix] MenuButton calendarStartBtn { Adw.ButtonContent { icon-name: 'month-symbolic'; } valign: center; tooltip-text: _("Choose Date"); styles [ 'circular', ] popover: Popover { styles [ "popover-scrolled", "popover-calendar", ] ScrolledWindow { propagate-natural-height: true; propagate-natural-width: true; Calendar calendarStart { show-day-names: true; show-week-numbers: false; show-heading: true; } } }; } } Adw.ActionRow calendarEndRow { styles [ 'property', 'numeric', ] title: _("End"); activatable-widget: calendarEndBtn; [suffix] MenuButton calendarEndBtn { Adw.ButtonContent { icon-name: 'month-symbolic'; } valign: center; tooltip-text: _("Choose Date"); styles [ 'circular', ] popover: Popover { styles [ "popover-scrolled", "popover-calendar", ] ScrolledWindow { propagate-natural-height: true; propagate-natural-width: true; Calendar calendarEnd { show-day-names: true; show-week-numbers: false; show-heading: true; } } }; } } } Adw.SwitchRow markAsConfirmed { title: _("Mark as Confirmed"); subtitle: _("If not manually confirmed or skipped, it will be recorded as confirmed in history, reducing stock if enabled"); } Adw.ButtonRow deleteButton { styles [ 'destructive-action', ] start-icon-name: 'user-trash-symbolic'; title: _("Delete"); name: 'delete'; visible: false; } } } } }; } } } diegopvlk-Dosage-bd9126a/data/ui/one-time-dialog.blp000066400000000000000000000143461514145341100223160ustar00rootroot00000000000000using Gtk 4.0; using Adw 1; template $OneTimeDialog: Adw.Dialog { name: "one-time-dialog"; content-width: 424; title: _("One-Time Entry"); presentation-mode: bottom_sheet; Adw.ToastOverlay toastOverlay { Adw.ToolbarView { [top] Adw.HeaderBar headerBar {} content: Overlay { ScrolledWindow { styles [ "scrollbar-visible", ] Adw.Clamp oneTimeDialogClamp { maximum-size: 410; Box { orientation: vertical; margin-start: 12; margin-end: 12; margin-bottom: 68; ListBox { styles [ "boxed-list", ] selection-mode: none; Adw.ButtonRow oneTimeBtnRow { sensitive: false; styles [ "one-time-menu", ] title: _("From Treatment List"); end-icon-name: "pan-down-symbolic"; } Adw.EntryRow medName { title: _("Name"); [suffix] MenuButton colorButton { styles [ "circular", ] valign: center; tooltip-text: _("Color"); name: "default"; icon-name: "color-filled-symbolic"; popover: Popover colorPopover { styles [ "popover-scrolled", ] ScrolledWindow { propagate-natural-height: true; propagate-natural-width: true; Box colorBox { spacing: 4; Button { styles [ "circular", "default-clr", ] valign: center; name: "default"; // TRANSLATORS: Tooltip for the colors (from Default until Purple) tooltip-text: _("Default"); icon-name: "color-filled-symbolic"; } Button { styles [ "circular", "red-clr", ] valign: center; name: "red"; tooltip-text: _("Red"); icon-name: "color-filled-symbolic"; } Button { styles [ "circular", "orange-clr", ] valign: center; name: "orange"; tooltip-text: _("Orange"); icon-name: "color-filled-symbolic"; } Button { styles [ "circular", "yellow-clr", ] valign: center; name: "yellow"; tooltip-text: _("Yellow"); icon-name: "color-filled-symbolic"; } Button { styles [ "circular", "green-clr", ] valign: center; name: "green"; tooltip-text: _("Green"); icon-name: "color-filled-symbolic"; } Button { styles [ "circular", "cyan-clr", ] valign: center; name: "cyan"; tooltip-text: _("Cyan"); icon-name: "color-filled-symbolic"; } Button { styles [ "circular", "blue-clr", ] valign: center; name: "blue"; tooltip-text: _("Blue"); icon-name: "color-filled-symbolic"; } Button { styles [ "circular", "purple-clr", ] valign: center; name: "purple"; tooltip-text: _("Purple"); icon-name: "color-filled-symbolic"; } } } }; } } Adw.EntryRow medUnit { title: _("Unit"); text: _("Pill(s)"); } Adw.SpinRow medAmount { title: _("Amount"); subtitle: _("Dose"); digits: 2; adjustment: Adjustment adjAmount { lower: 0; upper: 99999; step-increment: 0.25; value: 1; }; } Adw.ActionRow medTime { styles [ "property", ] title: _("Time"); subtitle: "time"; activatable-widget: timeBtn; [suffix] MenuButton timeBtn { styles [ "circular", ] valign: center; tooltip-text: _("Change Time"); icon-name: "clock-symbolic"; popover: Popover { styles [ "popover-scrolled", ] ScrolledWindow popoverScrollTime { propagate-natural-height: true; propagate-natural-width: true; } }; } } Adw.ActionRow dateOneEntry { styles [ "property", "numeric", ] title: _("Date"); subtitle: "date"; activatable-widget: calOneEntryBtn; [suffix] MenuButton calOneEntryBtn { Adw.ButtonContent { icon-name: "month-symbolic"; } valign: center; tooltip-text: _("Choose Date"); styles [ "circular", ] popover: Popover { styles [ "popover-calendar", ] ScrolledWindow { propagate-natural-height: true; propagate-natural-width: true; Calendar calOneEntry { show-day-names: true; show-week-numbers: false; show-heading: true; } } }; } } } } } } [overlay] Box { halign: center; valign: end; margin-bottom: 3; Button confirmBtn { styles [ "suggested-action", "floating", "pill", ] label: _("Confirm"); sensitive: false; } } }; } } } Popover oneTimePopover { styles [ "menu", ] visible: false; ScrolledWindow { propagate-natural-height: true; propagate-natural-width: true; max-content-height: 310; max-content-width: 340; Box oneTimeEntries { orientation: vertical; halign: start; margin-end: 10; } } } diegopvlk-Dosage-bd9126a/data/ui/preferences.blp000066400000000000000000000064111514145341100216370ustar00rootroot00000000000000using Gtk 4.0; using Adw 1; template $PrefsDialog: Adw.Dialog { name: "preferences"; content-width: 472; title: _("Preferences"); Adw.ToolbarView { [top] Adw.HeaderBar headerBar {} content: Adw.Clamp { Adw.PreferencesPage prefsPage { Adw.PreferencesGroup { Adw.SwitchRow autoStart { title: _("Auto-Start at Login"); active: bind $_setSwitchStartStateFromKey("autostart", autoStart) as ; notify::active => $_handleAutostart(); [prefix] Image { icon-name: "dosage-auto-start-symbolic"; } } Adw.SwitchRow autoClear { title: _("Auto-Clear History"); subtitle: _("Keeps a maximum of 30 days"); active: bind $_setSwitchStartStateFromKey("clear-old-hist", autoClear) as ; notify::active => $_setSwitchSettingsKey(); [prefix] Image { icon-name: "dosage-auto-clear-history-symbolic"; } } Adw.SwitchRow lowNotif { title: _("Low Stock Notification"); subtitle: _("Send reminders when treatments are low in stock"); active: bind $_setSwitchStartStateFromKey("low-stock-notif", lowNotif) as ; notify::active => $_setSwitchSettingsKey(); [prefix] Image { icon-name: "dosage-notification-low-stock-symbolic"; } } Adw.SwitchRow notifSound { title: _("Notification Sound"); active: bind $_setSwitchStartStateFromKey("sound", notifSound) as ; notify::active => $_setSwitchSettingsKey(); [prefix] Image { icon-name: "dosage-notification-sound-symbolic"; } } Adw.ExpanderRow { title: _("Notification Buttons"); subtitle: _("Show or hide confirm/skip"); expanded: false; [prefix] Image { icon-name: "dosage-notification-bell-symbolic"; } Adw.SwitchRow confirmBtn { title: _("Confirm"); active: bind $_setSwitchStartStateFromKey("confirm-button", confirmBtn) as ; notify::active => $_setSwitchSettingsKey(); [prefix] Image { icon-name: "med-confirmed-symbolic"; } } Adw.SwitchRow skipBtn { title: _("Skip"); active: bind $_setSwitchStartStateFromKey("skip-button", skipBtn) as ; notify::active => $_setSwitchSettingsKey(); [prefix] Image { icon-name: "med-skipped-symbolic"; } } } } Adw.PreferencesGroup { Adw.ComboRow exportHistFmt { title: _("Export History As"); icon-name: "history-symbolic"; model: StringList { strings [ "CSV", "CSV (ISO)", "HTML", "HTML (ISO)", ] }; } Adw.ButtonRow saveHistoryBtn { title: _("Save"); sensitive: false; start-icon-name: "document-save-symbolic"; activated => $_saveHistory(); } } Adw.PreferencesGroup { Adw.ComboRow exportTreatmentsFormat { title: _("Export Treatments As"); icon-name: "treatments-symbolic"; model: StringList { strings [ "HTML", ] }; } Adw.ButtonRow saveTreatmentsBtn { title: _("Save"); sensitive: false; start-icon-name: "document-save-symbolic"; activated => $_saveTreatments(); } } } }; } } diegopvlk-Dosage-bd9126a/data/ui/refill-dialog.blp000066400000000000000000000022471514145341100220530ustar00rootroot00000000000000using Gtk 4.0; using Adw 1; template $RefillDialog: Adw.Dialog { name: 'refill-dialog'; content-width: 420; title: _("Refill"); Adw.ToolbarView { [top] Adw.HeaderBar headerBar {} content: ScrolledWindow { Adw.Clamp refillDialogClamp { maximum-size: 402; Box { orientation: vertical; margin-start: 10; margin-end: 10; margin-bottom: 16; spacing: 16; ListBox { styles [ "boxed-list", ] selection-mode: none; Adw.SpinRow refillRow { styles [ "property", ] title: _("Inventory"); climb-rate: 0.2; digits: 2; adjustment: Adjustment refillInventory { lower: 0; upper: 99999; step-increment: 1; }; } } Box { halign: center; spacing: 16; Button refillButton { styles [ "numeric", "pill", ] clicked => $_refill(); } Button saveButton { styles [ "suggested-action", "pill", ] label: _("Save"); name: "save"; can-shrink: true; clicked => $_save(); } } } } }; } } diegopvlk-Dosage-bd9126a/data/ui/shortcuts-dialog.blp000066400000000000000000000013751514145341100226350ustar00rootroot00000000000000using Gtk 4.0; using Adw 1; Adw.ShortcutsDialog shortcuts_dialog { content-width: 524; Adw.ShortcutsSection { title: _("Shortcuts"); Adw.ShortcutsItem { title: C_("shortcut window", "Show/Hide 'As Needed'"); action-name: "app.sh-when-needed"; } Adw.ShortcutsItem { title: C_("shortcut window", "New One-Time Entry"); action-name: "app.new-one-time"; } Adw.ShortcutsItem { title: C_("shortcut window", "Add New Treatment"); action-name: "app.new-treatment"; } Adw.ShortcutsItem { title: C_("shortcut window", "Show Shortcuts"); action-name: "app.shortcuts"; } Adw.ShortcutsItem { title: C_("shortcut window", "Quit"); action-name: "app.quit"; } } } diegopvlk-Dosage-bd9126a/data/ui/window.blp000066400000000000000000000145651514145341100206560ustar00rootroot00000000000000using Gtk 4.0; using Adw 1; template $DosageWindow: Adw.ApplicationWindow { name: 'io-github-diegopvlk-Dosage'; title: _("Dosage"); Adw.Breakpoint { condition ('max-width: 512sp') setters { switcherBar.reveal: true; headerBar.title-widget: null; } } content: Adw.ToolbarView { [top] Adw.HeaderBar headerBar { [start] ToggleButton btnWhenNeeded { icon-name: "show-when-needed-symbolic"; tooltip-text: _("Show/Hide 'As Needed'"); toggled => $setShowWhenNeeded(); visible: false; } [start] ToggleButton buttonSearch { icon-name: "edit-find-symbolic"; tooltip-text: _("Search"); visible: false; } [start] MenuButton buttonTreatmentsSorter { menu-model: menuTreatmentsSorter; icon-name: 'dosage-treatments-sorting-symbolic'; tooltip-text: _("Sort Treatments"); visible: false; } [end] MenuButton buttonMenu { menu-model: appMenu; icon-name: 'open-menu-symbolic'; primary: true; tooltip-text: _("Main Menu"); } title-widget: Adw.ViewSwitcher { stack: viewStack; policy: wide; }; } [top] SearchBar searchBar { SearchEntry searchEntry { search-delay: 100; placeholder-text: _("Search…"); width-request: 276; } } content: Adw.ViewStack viewStack { vexpand: true; Adw.ViewStackPage todayPage { name: 'today-page'; title: _("Today"); icon-name: 'today-icn-symbolic'; child: Overlay { ScrolledWindow { styles [ 'scrollbar-visible', ] Adw.ClampScrollable { ListView todayList { styles [ 'dosage-list', 'scroll-to-top-hack', 'today', ] activate => $selectTodayItems(); single-click-activate: true; enable-rubberband: true; } } } [overlay] Adw.StatusPage emptyToday { visible: true; } [overlay] Adw.Spinner spinnerToday {} [overlay] Box { halign: center; valign: end; margin-bottom: 3; Button unselectBtn { styles [ 'pill', 'secondary', 'floating', ] clicked => $unselectTodayItems(); tooltip-text: _("Unselect"); visible: false; icon-name: 'unselect-meds-symbolic'; } Button entryBtn { styles [ 'pill', 'floating', ] clicked => $addTodayOrOneTimeToHist(); name: '1'; child: Adw.ButtonContent entryBtnContent { icon-name: 'list-add-symbolic'; label: _("One-Time Entry"); }; } Button skipBtn { styles [ 'pill', 'secondary', 'floating', ] clicked => $addTodayOrOneTimeToHist(); name: '0'; tooltip-text: _("Skip"); visible: false; icon-name: 'skip-med-symbolic'; } } }; } Adw.ViewStackPage historyPage { name: 'history-page'; title: _("History"); icon-name: 'history-symbolic'; child: Overlay historyOverlay { ScrolledWindow { styles [ 'scrollbar-visible', ] Adw.ClampScrollable { ListView historyList { styles [ 'dosage-list', 'scroll-to-top-hack', ] activate => $_editHistoryItem(); single-click-activate: true; enable-rubberband: true; } } } [overlay] Adw.StatusPage emptyHistory { icon-name: 'history-empty-symbolic'; visible: false; } [overlay] Box { halign: center; valign: end; margin-bottom: 3; Button toggleHistAmountBtn { halign: center; valign: end; clicked => $toggleHistoryAmount(); styles [ 'pill', 'floating', ] } Button unselectHistItemsBtn { styles [ 'pill', 'secondary', 'floating', ] clicked => $unselectHistItems(); tooltip-text: _("Unselect"); visible: false; icon-name: 'unselect-meds-symbolic'; } Button removeHistItemsBtn { halign: center; valign: end; clicked => $removeHistItems(); visible: false; label: _("Remove Entries"); styles [ 'pill', 'floating', 'destructive-action', ] } } }; } Adw.ViewStackPage treatmentsPage { name: 'treatments-page'; title: _("Treatments"); icon-name: 'treatments-symbolic'; child: Overlay { ScrolledWindow { styles [ 'scrollbar-visible', ] Adw.ClampScrollable { vexpand: true; ListView treatmentsList { styles [ 'dosage-list', ] activate => $_presentMedDialog(); single-click-activate: true; } } } [overlay] Adw.StatusPage emptyTreatments { icon-name: 'treatments-symbolic'; title: _("No Treatments"); visible: false; } [overlay] Box { halign: center; valign: end; Button addNewMedication { halign: center; valign: end; margin-bottom: 3; clicked => $_presentMedDialog(); styles [ 'pill', 'suggested-action', 'floating', ] child: Adw.ButtonContent { icon-name: 'list-add-symbolic'; label: _("Add"); }; } } }; } }; [bottom] Adw.ViewSwitcherBar switcherBar { stack: viewStack; } }; } menu menuTreatmentsSorter { item { label: _("Name Ascending"); action: "app.treatments-sorter"; target: "name-ascending"; } item { label: _("Remaining Stock (Lowest First)"); action: "app.treatments-sorter"; target: "amount-remaining-less"; } item { label: _("Remaining Stock (Highest First)"); action: "app.treatments-sorter"; target: "amount-remaining-more"; } item { label: _("As Needed Last"); action: "app.treatments-sorter"; target: "when-needed-last"; } item { label: _("Ended Last"); action: "app.treatments-sorter"; target: "ended-last"; } item { label: _("As Needed/Ended Last"); action: "app.treatments-sorter"; target: "when-needed-ended-last"; } } menu appMenu { item { label: _("Preferences"); action: 'app.preferences'; } item { label: _("Keyboard Shortcuts"); action: "app.shortcuts"; } item { label: _("About Dosage"); action: 'app.about'; } item { label: _("Quit"); action: 'app.quit'; } } diegopvlk-Dosage-bd9126a/generate_pot.sh000077500000000000000000000017251514145341100203270ustar00rootroot00000000000000#!/bin/bash OUTPUT="po/io.github.diegopvlk.Dosage.pot" PACKAGE_NAME="io.github.diegopvlk.Dosage" ENCODING="UTF-8" LANGUAGE_BLP="--language=JavaScript" LINGUAS_FILE="po/LINGUAS" grep -v '\.blp$' po/POTFILES > /tmp/POTFILES_DOSAGE grep '\.blp$' po/POTFILES > /tmp/POTFILES_DOSAGE.blp # create pot xgettext --files-from=/tmp/POTFILES_DOSAGE \ --output="$OUTPUT" --package-name="$PACKAGE_NAME" \ --from-code="$ENCODING" --add-comments \ --keyword=_ --keyword=C_:1c,2 # join pot xgettext --files-from=/tmp/POTFILES_DOSAGE.blp \ --output="$OUTPUT" --package-name="$PACKAGE_NAME" \ --from-code="$ENCODING" --add-comments \ --keyword=_ --keyword=C_:1c,2 \ $LANGUAGE_BLP \ --join-existing rm /tmp/POTFILES_DOSAGE /tmp/POTFILES_DOSAGE.blp sed -i 's/charset=CHARSET/charset=UTF-8/g' $OUTPUT sed -i '2,3c\ # Copyright (C) 2023 Diego Povliuk\ # This file is distributed under the license GPLv3-or-later.' $OUTPUT diegopvlk-Dosage-bd9126a/meson.build000066400000000000000000000005211514145341100174470ustar00rootroot00000000000000project( 'dosage', version: '2.1.2', meson_version: '>= 0.62.0', default_options: [ 'warning_level=2', 'werror=false', ], ) i18n = import('i18n') gnome = import('gnome') subdir('data') subdir('src') subdir('po') gnome.post_install( glib_compile_schemas: true, gtk_update_icon_cache: true, update_desktop_database: true, ) diegopvlk-Dosage-bd9126a/po/000077500000000000000000000000001514145341100157255ustar00rootroot00000000000000diegopvlk-Dosage-bd9126a/po/LINGUAS000066400000000000000000000002661514145341100167560ustar00rootroot00000000000000# keep this file sorted alphabetically, one language code per line be bg cs da de en_GB es et fa fi fr he hi ia it ko nb_NO nl pl pt_BR pt ru sv ta tr uk zh_HK zh_TW sk ar ota vi ca diegopvlk-Dosage-bd9126a/po/POTFILES000066400000000000000000000014161514145341100170770ustar00rootroot00000000000000# List of source files containing translatable strings. # Please keep this file sorted alphabetically. data/ui/edit-hist-dialog.blp data/ui/med-dialog.blp data/ui/one-time-dialog.blp data/ui/preferences.blp data/ui/refill-dialog.blp data/ui/shortcuts-dialog.blp data/ui/window.blp data/io.github.diegopvlk.Dosage.appdata.xml.in data/io.github.diegopvlk.Dosage.desktop.in src/utils/getHistoryExportFile.js src/utils/getTreatmentsExportFile.js src/utils/helpers.js src/utils/locale.js src/utils/saveFiles.js src/utils/upgradeItems.js src/editHistDialog.js src/historyFactory.js src/main.js src/medDialog.js src/medication.js src/oneTimeDialog.js src/prefsDialog.js src/refillDialog.js src/timeDoseRow.js src/timePicker.js src/todayFactory.js src/treatmentsFactory.js src/window.js diegopvlk-Dosage-bd9126a/po/ar.po000066400000000000000000000565311514145341100167010ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) 2023 Diego Povliuk # This file is distributed under the license GPLv3-or-later. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: io.github.diegopvlk.Dosage\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-12-19 16:12-0300\n" "PO-Revision-Date: 2025-07-30 17:37+0000\n" "Last-Translator: Ahmed Najmawi \n" "Language-Team: Arabic \n" "Language: ar\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " "&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n" "X-Generator: Weblate 5.13-dev\n" #. TRANSLATORS: App name, translate to your language and follow the capitalization #: data/io.github.diegopvlk.Dosage.appdata.xml.in:20 #: data/io.github.diegopvlk.Dosage.desktop.in:3 #: src/utils/getTreatmentsExportFile.js:173 src/utils/saveFiles.js:22 #: src/utils/saveFiles.js:44 src/main.js:60 src/window.js:1060 #: data/ui/window.blp:6 msgid "Dosage" msgstr "جرعة" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:21 msgid "Keep track of your treatments" msgstr "تتبّع علاجاتك" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:24 msgid "" "Easily manage and track treatments with Dosage: notifications, history, " "multiple doses, flexible frequency, customization, stock monitoring, and " "duration control" msgstr "" "أدِر وتتبَّع علاجاتك بسهولة مع تطبيق «جرعة»: استلِم التنبيهات، واطَّلِع على السجل، " "وأدِر الجرعات المتعدِّدة، واختر التكرار المرن، وخصِّص المظهر، وراقِب المخزون، " "وتحكَّم في المدَّة" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:25 msgid "Features:" msgstr "الميزات:" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:27 msgid "Notifications — Get reminders at the right time" msgstr "التنبيهات — استلِم تذكيرات في الوقت المناسب" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:28 msgid "History — See which medications you took, skipped or missed" msgstr "السجل — اطَّلِع على الأدوية التي أخذتها أو تخطَّيتها أو فوَّتَّها" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:29 msgid "Dosage management — Multiple doses with different times" msgstr "إدارة الجرعات — أدِر جرعات متعدَّدة بأوقات مختلفة" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:30 msgid "" "Frequency modes — Every day, specific days, cycle or just when necessary" msgstr "" "أوضاع التكرار — اختر بين كل يوم، أو أيام محدَّدة، أو دورة، أو عند الضرورة فقط" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:31 msgid "Color and icon — Give a shape for your treatment" msgstr "اللون والأيقونة — أعطِ شكلًا لعلاجك" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:32 msgid "Inventory tracking — Monitor your stock and get reminded when it's low" msgstr "تتبُّع المخزون — راقِب مخزونك واستلِم تذكيرًا عندما ينخفض" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:33 msgid "Duration — Define the start and end dates" msgstr "المدَّة — حدِّد تاريخي البداية والنهاية" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:44 msgid "Dosage today window in light theme" msgstr "نافذة «جرعة اليوم» بالسمة الفاتحة" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:49 msgid "Dosage preferences window in light theme" msgstr "نافذة تفضيلات «جرعة» بالسمة الفاتحة" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:54 msgid "Dosage edit treatment window in light theme" msgstr "نافذة تحرير العلاج في «جرعة» بالسمة الفاتحة" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:59 msgid "Dosage today window in dark theme" msgstr "نافذة «جرعة اليوم» بالسمة الداكنة" #. TRANSLATORS: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/io.github.diegopvlk.Dosage.desktop.in:10 msgid "Medication;Tracker;Reminder;Today;Treatments;Pill;Drug;Remedy;" msgstr "دواء;متعقّب;تذكير;اليوم;علاجات;حبّة;عقار;علاج;جرعة;Dosage;Medication;Tracker;Reminder;Today;Treatments;Pill;Drug;Remedy;" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:232 msgid "Date" msgstr "التاريخ" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:199 msgid "Time" msgstr "الوقت" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/med-dialog.blp:61 data/ui/one-time-dialog.blp:49 msgid "Name" msgstr "الاسم" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:183 msgid "Dose" msgstr "الجرعة" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 msgid "Status" msgstr "الحالة" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 msgid "Time Confirmed" msgstr "وقت التأكيد" #: src/utils/getHistoryExportFile.js:38 src/utils/getHistoryExportFile.js:117 #: src/editHistDialog.js:68 src/historyFactory.js:186 msgid "Missed" msgstr "مُفوَّت" #: src/utils/getHistoryExportFile.js:41 src/utils/getHistoryExportFile.js:121 #: src/historyFactory.js:183 data/ui/edit-hist-dialog.blp:111 msgid "Skipped" msgstr "متخطَّى" #: src/utils/getHistoryExportFile.js:44 src/utils/getHistoryExportFile.js:55 #: src/utils/getHistoryExportFile.js:125 src/utils/getHistoryExportFile.js:138 #: src/editHistDialog.js:73 src/historyFactory.js:190 #: data/ui/edit-hist-dialog.blp:116 msgid "Confirmed" msgstr "مؤكَّد" #: src/utils/getHistoryExportFile.js:52 src/utils/getHistoryExportFile.js:134 #: src/editHistDialog.js:56 src/historyFactory.js:178 msgid "Auto-Confirmed" msgstr "مؤكَّد آليًا" #: src/utils/getHistoryExportFile.js:55 src/utils/getHistoryExportFile.js:138 #: src/editHistDialog.js:74 msgid "Time Unknown" msgstr "الوقت مجهول" #. TRANSLATORS: Context: 1 Pill at 19:00 #: src/utils/getTreatmentsExportFile.js:69 #, fuzzy #| msgid "Date" msgid "at" msgstr "التاريخ" #: src/utils/getTreatmentsExportFile.js:89 data/ui/med-dialog.blp:443 msgid "Notes" msgstr "ملاحظات" #: src/utils/getTreatmentsExportFile.js:96 src/utils/locale.js:37 #: src/treatmentsFactory.js:268 msgid "Daily" msgstr "يوميًا" #: src/utils/getTreatmentsExportFile.js:102 src/medDialog.js:428 #: data/ui/med-dialog.blp:459 msgid "Day of Month" msgstr "يوم من الشهر" #. TRANSLATORS: Context: 2 day(s) on, 1 day(s) off #: src/utils/getTreatmentsExportFile.js:109 msgid "day(s) on" msgstr "" #. TRANSLATORS: Context: 2 day(s) on, 1 day(s) off #: src/utils/getTreatmentsExportFile.js:111 msgid "day(s) off" msgstr "" #: src/utils/getTreatmentsExportFile.js:122 src/todayFactory.js:41 #: src/treatmentsFactory.js:298 data/ui/med-dialog.blp:461 msgid "As Needed" msgstr "عند الضرورة" #: src/utils/getTreatmentsExportFile.js:132 data/ui/med-dialog.blp:764 msgid "Duration" msgstr "المدة" #: src/utils/getTreatmentsExportFile.js:135 #, fuzzy #| msgid "Starts On" msgid "Started on" msgstr "يبدأ في" #: src/utils/getTreatmentsExportFile.js:136 data/ui/med-dialog.blp:775 #, fuzzy #| msgid "Starts On" msgid "Start" msgstr "يبدأ في" #: src/utils/getTreatmentsExportFile.js:138 src/treatmentsFactory.js:256 msgid "Ended on" msgstr "انتهى في" #: src/utils/getTreatmentsExportFile.js:138 data/ui/med-dialog.blp:817 #, fuzzy #| msgid "Ends On" msgid "End" msgstr "ينتهي في" #: src/utils/getTreatmentsExportFile.js:173 src/utils/saveFiles.js:44 #: data/ui/window.blp:234 msgid "Treatments" msgstr "العلاجات" #: src/utils/getTreatmentsExportFile.js:184 #, fuzzy #| msgctxt "shortcut window" #| msgid "General" msgid "Generated on" msgstr "عام" #: src/utils/getTreatmentsExportFile.js:187 msgid "Ongoing" msgstr "" #: src/utils/getTreatmentsExportFile.js:188 msgid "Non-scheduled" msgstr "" #: src/utils/getTreatmentsExportFile.js:189 msgid "Finished" msgstr "" #: src/utils/locale.js:33 msgid "Weekends" msgstr "عطلات نهاية الأسبوع" #: src/utils/locale.js:35 msgid "Weekdays" msgstr "أيام الأسبوع" #: src/utils/saveFiles.js:22 data/ui/window.blp:156 msgid "History" msgstr "التأريخ" #: src/editHistDialog.js:60 src/editHistDialog.js:89 src/editHistDialog.js:110 msgid "Confirmed At" msgstr "أُكِّد في" #: src/editHistDialog.js:64 src/editHistDialog.js:114 msgid "Skipped At" msgstr "تُخُطِّيَ في" #: src/historyFactory.js:47 msgid "Select to be Removed" msgstr "حدِّد للإزالة" #. TRANSLATORS: "Your Name " #: src/main.js:69 msgid "translator-credits" msgstr "أحمد النجماوي " #: src/main.js:73 msgid "Thanks to These Projects!" msgstr "شكرًا لهذه المشاريع!" #: src/medDialog.js:99 msgid "Edit Treatment" msgstr "حرِّر العلاج" #: src/medDialog.js:100 data/ui/edit-hist-dialog.blp:30 #: data/ui/preferences.blp:112 data/ui/preferences.blp:132 #: data/ui/refill-dialog.blp:67 msgid "Save" msgstr "احفظ" #: src/medDialog.js:114 msgid "Copy" msgstr "انسخ" #: src/medDialog.js:217 msgid "Add Dose" msgstr "أضِف جرعة" #: src/medDialog.js:419 msgid "Choose" msgstr "اختر" #: src/medDialog.js:429 src/treatmentsFactory.js:274 msgid "Day" msgstr "يوم" #: src/medDialog.js:456 data/ui/med-dialog.blp:458 msgid "Specific Days" msgstr "أيام محدَّدة" #: src/medDialog.js:463 src/treatmentsFactory.js:295 data/ui/med-dialog.blp:460 msgid "Cycle" msgstr "دورة" #: src/medDialog.js:467 data/ui/med-dialog.blp:452 msgid "Frequency" msgstr "التكرار" #: src/medDialog.js:500 msgid "Empty Name" msgstr "اسم فارغ" #: src/medDialog.js:506 msgid "Empty Unit" msgstr "وحدة فارغة" #: src/medDialog.js:513 msgid "Choose at Least One Day" msgstr "اختر يومًا واحدًا على الأقل" #: src/medDialog.js:527 src/oneTimeDialog.js:187 msgid "Name Already on Treatment List" msgstr "الاسم موجود بالفعل في قائمة العلاجات" #: src/medDialog.js:542 msgid "Duplicated Time" msgstr "الوقت مكرَّر" #: src/medDialog.js:582 msgid "Are You Sure?" msgstr "هل أنت متأكِّد؟" #: src/medDialog.js:583 msgid "will be deleted" msgstr "سيُحذَف" #: src/medDialog.js:586 data/ui/edit-hist-dialog.blp:18 #: data/ui/med-dialog.blp:19 msgid "Cancel" msgstr "ألغِ" #: src/medDialog.js:587 src/treatmentsFactory.js:128 data/ui/med-dialog.blp:865 msgid "Delete" msgstr "احذف" #: src/oneTimeDialog.js:110 msgid "New" msgstr "جديد" #: src/oneTimeDialog.js:121 data/ui/med-dialog.blp:189 #: data/ui/one-time-dialog.blp:178 msgid "Pill(s)" msgstr "حبَّة (حبوب)" #: src/prefsDialog.js:63 msgid "Accept to allow running in the background and receive notifications" msgstr "وافق للسماح بالتشغيل في الخلفية واستلام التنبيهات" #: src/prefsDialog.js:74 src/window.js:259 msgid "An Issue Has Occurred" msgstr "حدثت مشكلة" #: src/prefsDialog.js:77 src/window.js:267 src/window.js:289 src/window.js:311 #: src/window.js:329 msgid "Close" msgstr "أغلِق" #: src/timeDoseRow.js:34 msgid "Remove Dose" msgstr "أزِل الجرعة" #: src/timeDoseRow.js:40 data/ui/edit-hist-dialog.blp:90 #: data/ui/one-time-dialog.blp:210 msgid "Change Time" msgstr "غيِّر الوقت" #: src/todayFactory.js:134 msgid "Change Dose" msgstr "غيِّر الجرعة" #: src/treatmentsFactory.js:96 src/treatmentsFactory.js:126 #: data/ui/refill-dialog.blp:7 msgid "Refill" msgstr "أعِد الملء" #: src/treatmentsFactory.js:125 msgid "Edit" msgstr "حرِّر" #: src/treatmentsFactory.js:127 msgid "Duplicate" msgstr "كرِّر" #: src/treatmentsFactory.js:146 msgid "Options" msgstr "خيارات" #. TRANSLATORS: keep the %d it's where the number goes #: src/treatmentsFactory.js:244 #, javascript-format msgid "%d Remaining" msgstr "المتبقي %d" #. TRANSLATORS: label for when duration is enabled #: src/treatmentsFactory.js:254 msgid "Starts on" msgstr "يبدأ في" #: src/treatmentsFactory.js:255 msgid "Until" msgstr "حتى" #: src/treatmentsFactory.js:283 src/treatmentsFactory.js:286 msgid "Next Dose" msgstr "الجرعة التالية" #: src/window.js:173 src/window.js:943 msgid "Reminder" msgstr "تذكير" #. TRANSLATORS: Notification text for when the inventory is low #: src/window.js:175 msgid "You have treatments low in stock" msgstr "لديك علاجات مخزونها منخفض" #: src/window.js:492 msgid "Show All" msgstr "اعرض الكل" #: src/window.js:515 msgid "Show Less" msgstr "اعرض أقل" #: src/window.js:648 msgid "No Results Found" msgstr "لم يُعثَر على أي نتائج" #: src/window.js:648 src/window.js:1517 #, fuzzy #| msgid "History" msgid "No History" msgstr "التأريخ" #: src/window.js:818 data/ui/window.blp:260 #, fuzzy #| msgid "Treatments" msgid "No Treatments" msgstr "العلاجات" #: src/window.js:818 msgid "All Done for Today" msgstr "أُنجِز كل شيء لهذا اليوم" #: src/window.js:906 src/window.js:1090 data/ui/one-time-dialog.blp:285 #: data/ui/preferences.blp:73 msgid "Confirm" msgstr "أكِّد" #: src/window.js:906 msgid "Confirm All" msgstr "أكِّد الكل" #: src/window.js:907 data/ui/preferences.blp:84 data/ui/window.blp:146 msgid "Skip" msgstr "تخطَّ" #: src/window.js:907 msgid "Skip All" msgstr "تخطَّ الكل" #. TRANSLATORS: keep the %d it's where the number goes #: src/window.js:938 #, javascript-format msgid "and %d more" msgstr "و %d أكثر" #: src/window.js:1090 data/ui/one-time-dialog.blp:7 data/ui/window.blp:133 msgid "One-Time Entry" msgstr "مدخلة لمرة واحدة" #: src/window.js:1295 data/ui/window.blp:353 msgid "Quit" msgstr "اخرج" #: data/ui/edit-hist-dialog.blp:7 msgid "Edit Entry" msgstr "حرِّر المدخلة" #: data/ui/med-dialog.blp:7 msgid "New Treatment" msgstr "علاج جديد" #: data/ui/med-dialog.blp:31 data/ui/window.blp:283 msgid "Add" msgstr "أضِف" #: data/ui/med-dialog.blp:69 data/ui/one-time-dialog.blp:58 msgid "Color" msgstr "اللون" #. TRANSLATORS: Tooltip for the colors (from Default until Purple) #: data/ui/med-dialog.blp:94 data/ui/one-time-dialog.blp:83 msgid "Default" msgstr "مبدئي" #: data/ui/med-dialog.blp:106 data/ui/one-time-dialog.blp:95 msgid "Red" msgstr "أحمر" #: data/ui/med-dialog.blp:118 data/ui/one-time-dialog.blp:107 msgid "Orange" msgstr "برتقالي" #: data/ui/med-dialog.blp:130 data/ui/one-time-dialog.blp:119 msgid "Yellow" msgstr "أصفر" #: data/ui/med-dialog.blp:142 data/ui/one-time-dialog.blp:131 msgid "Green" msgstr "أخضر" #: data/ui/med-dialog.blp:154 data/ui/one-time-dialog.blp:143 msgid "Cyan" msgstr "سماوي" #: data/ui/med-dialog.blp:166 data/ui/one-time-dialog.blp:155 msgid "Blue" msgstr "أزرق" #: data/ui/med-dialog.blp:178 data/ui/one-time-dialog.blp:167 msgid "Purple" msgstr "بنفسجي" #: data/ui/med-dialog.blp:188 data/ui/one-time-dialog.blp:177 msgid "Unit" msgstr "الوحدة" #: data/ui/med-dialog.blp:197 msgid "Icon" msgstr "الأيقونة" #. TRANSLATORS: Tooltip for the icons (from Pill until Potion) #: data/ui/med-dialog.blp:226 msgid "Pill" msgstr "حبَّة" #: data/ui/med-dialog.blp:242 msgid "Alternative Pill" msgstr "حبَّة بديلة" #: data/ui/med-dialog.blp:258 msgid "Capsule" msgstr "كبسولة" #: data/ui/med-dialog.blp:274 msgid "Round Pill" msgstr "حبَّة دائرية" #: data/ui/med-dialog.blp:290 msgid "Alternative Round Pill" msgstr "حبَّة دائرية بديلة" #: data/ui/med-dialog.blp:306 msgid "Ampoule" msgstr "أمبولة" #: data/ui/med-dialog.blp:322 msgid "Injection" msgstr "حقنة" #: data/ui/med-dialog.blp:338 msgid "Square Pill" msgstr "حبَّة مربعة" #: data/ui/med-dialog.blp:354 msgid "Alternative Square Pill" msgstr "حبَّة مربعة بديلة" #: data/ui/med-dialog.blp:370 msgid "Triangle pill" msgstr "حبَّة مثلثة" #: data/ui/med-dialog.blp:386 msgid "Alternative Triangle Pill" msgstr "حبَّة مثلثة بديلة" #: data/ui/med-dialog.blp:402 msgid "Bottle" msgstr "زجاجة" #: data/ui/med-dialog.blp:418 msgid "Drops" msgstr "قطرات" #: data/ui/med-dialog.blp:434 msgid "Potion" msgstr "شراب" #: data/ui/med-dialog.blp:457 msgid "Every Day" msgstr "كل يوم" #: data/ui/med-dialog.blp:473 msgid "Choose Days" msgstr "اختر الأيام" #: data/ui/med-dialog.blp:572 msgid "Choose Day" msgstr "اختر اليوم" #: data/ui/med-dialog.blp:617 msgid "Change Cycle" msgstr "غيِّر الدورة" #: data/ui/med-dialog.blp:642 msgid "Days Active" msgstr "أيام النشاط" #: data/ui/med-dialog.blp:656 msgid "Days Inactive" msgstr "أيام الخمول" #. TRANSLATORS: Day in cycle, try to keep it short #: data/ui/med-dialog.blp:671 msgid "Today is Cycle Day…" msgstr "اليوم هو يوم الدورة…" #: data/ui/med-dialog.blp:694 msgid "Increase Notification Priority" msgstr "زِد أولوية التنبيه" #: data/ui/med-dialog.blp:695 msgid "Show in fullscreen mode or with 'Do Not Disturb' enabled" msgstr "اعرض في وضع ملء الشاشة أو مع تفعيل وضع «عدم الإزعاج»" #: data/ui/med-dialog.blp:699 msgid "Recurring Notifications" msgstr "تنبيهات متكرِّرة" #: data/ui/med-dialog.blp:700 msgid "Renotify until it's confirmed or skipped" msgstr "أعِد التنبيه حتى تأكيده أو تخطِّيه" #: data/ui/med-dialog.blp:705 msgid "Interval in Minutes" msgstr "الفاصل الزمني (بالدقائق)" #: data/ui/med-dialog.blp:718 data/ui/refill-dialog.blp:36 msgid "Inventory" msgstr "المخزون" #: data/ui/med-dialog.blp:719 msgid "Manage your stock" msgstr "أدِر مخزونك" #: data/ui/med-dialog.blp:725 msgid "Current" msgstr "الحالي" #: data/ui/med-dialog.blp:738 msgid "Remind Me At" msgstr "ذكِّرني عند" #: data/ui/med-dialog.blp:751 msgid "Refill Amount" msgstr "كمية إعادة الملء" #: data/ui/med-dialog.blp:765 msgid "Set start and end dates" msgstr "عيِّن تاريخي البداية والنهاية" #: data/ui/med-dialog.blp:785 data/ui/med-dialog.blp:827 #: data/ui/one-time-dialog.blp:243 msgid "Choose Date" msgstr "اختر التاريخ" #: data/ui/med-dialog.blp:855 msgid "Mark as Confirmed" msgstr "علِّمه كمؤكَّد" #: data/ui/med-dialog.blp:856 msgid "" "If not manually confirmed or skipped, it will be recorded as confirmed in " "history, reducing stock if enabled" msgstr "" "إن لم يؤكَّد أو يُتخطَّ يدويًا، فسيُسجَّل كمؤكَّد في السجل، مع خفض المخزون إن كان مفعَّلًا" #: data/ui/one-time-dialog.blp:44 msgid "From Treatment List" msgstr "من قائمة العلاجات" #: data/ui/one-time-dialog.blp:182 msgid "Amount" msgstr "الكمية" #: data/ui/preferences.blp:7 data/ui/window.blp:338 msgid "Preferences" msgstr "التفضيلات" #: data/ui/preferences.blp:17 msgid "Auto-Start at Login" msgstr "بدء التشغيل آليًا عند الولوج" #: data/ui/preferences.blp:28 msgid "Auto-Clear History" msgstr "محو التأريخ آليًا" #: data/ui/preferences.blp:29 msgid "Keeps a maximum of 30 days" msgstr "يحتفظ ب‍ 30 يومًا كحد أقصى" #: data/ui/preferences.blp:40 msgid "Low Stock Notification" msgstr "تنبيه انخفاض المخزون" #: data/ui/preferences.blp:41 msgid "Send reminders when treatments are low in stock" msgstr "أرسِل تذكيرات عندما ينخفض مخزون العلاجات" #: data/ui/preferences.blp:52 msgid "Notification Sound" msgstr "صوت التنبيه" #: data/ui/preferences.blp:63 msgid "Notification Buttons" msgstr "أزرار التنبيه" #: data/ui/preferences.blp:64 msgid "Show or hide confirm/skip" msgstr "اعرض أو أخفِ أزرار التأكيد\\التخطي" #: data/ui/preferences.blp:98 #, fuzzy #| msgid "Export History as CSV" msgid "Export History As" msgstr "صدِّر السجل كملف CSV" #: data/ui/preferences.blp:121 #, fuzzy #| msgid "Empty Treatments" msgid "Export Treatments As" msgstr "العلاجات الفارغة" #: data/ui/shortcuts-dialog.blp:8 #, fuzzy #| msgctxt "shortcut window" #| msgid "Show Shortcuts" msgid "Shortcuts" msgstr "اعرض الاختصارات" #: data/ui/shortcuts-dialog.blp:11 #, fuzzy #| msgid "Show/Hide 'As Needed'" msgctxt "shortcut window" msgid "Show/Hide 'As Needed'" msgstr "اعرض\\أخفِ «عند الضرورة»" #: data/ui/shortcuts-dialog.blp:16 #, fuzzy #| msgid "One-Time Entry" msgctxt "shortcut window" msgid "New One-Time Entry" msgstr "مدخلة لمرة واحدة" #: data/ui/shortcuts-dialog.blp:21 #, fuzzy #| msgid "New Treatment" msgctxt "shortcut window" msgid "Add New Treatment" msgstr "علاج جديد" #: data/ui/shortcuts-dialog.blp:26 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "اعرض الاختصارات" #: data/ui/shortcuts-dialog.blp:31 msgctxt "shortcut window" msgid "Quit" msgstr "اخرُج" #: data/ui/window.blp:23 msgid "Show/Hide 'As Needed'" msgstr "اعرض\\أخفِ «عند الضرورة»" #: data/ui/window.blp:31 msgid "Search" msgstr "ابحث" #: data/ui/window.blp:39 #, fuzzy #| msgid "Treatments" msgid "Sort Treatments" msgstr "العلاجات" #: data/ui/window.blp:48 msgid "Main Menu" msgstr "القائمة الرئيسة" #: data/ui/window.blp:61 msgid "Search…" msgstr "ابحث…" #: data/ui/window.blp:71 msgid "Today" msgstr "اليوم" #: data/ui/window.blp:117 data/ui/window.blp:210 msgid "Unselect" msgstr "ألغِ التحديد" #: data/ui/window.blp:220 msgid "Remove Entries" msgstr "أزِل المُدخلات" #: data/ui/window.blp:300 msgid "Name Ascending" msgstr "" #: data/ui/window.blp:306 msgid "Remaining Stock (Lowest First)" msgstr "" #: data/ui/window.blp:312 msgid "Remaining Stock (Highest First)" msgstr "" #: data/ui/window.blp:318 #, fuzzy #| msgid "As Needed" msgid "As Needed Last" msgstr "عند الضرورة" #: data/ui/window.blp:324 #, fuzzy #| msgid "Ended on" msgid "Ended Last" msgstr "انتهى في" #: data/ui/window.blp:330 #, fuzzy #| msgid "As Needed" msgid "As Needed/Ended Last" msgstr "عند الضرورة" #: data/ui/window.blp:343 #, fuzzy #| msgctxt "shortcut window" #| msgid "Show Shortcuts" msgid "Keyboard Shortcuts" msgstr "اعرض الاختصارات" #: data/ui/window.blp:348 msgid "About Dosage" msgstr "عَنْ «جرعة»" #~ msgid "Empty Treatments" #~ msgstr "العلاجات الفارغة" #~ msgid "Empty History" #~ msgstr "التأريخ فارغ" #~ msgid "No Treatments Added" #~ msgstr "لم تُضَف أي علاجات بعد" #~ msgctxt "shortcut window" #~ msgid "General" #~ msgstr "عام" #~ msgctxt "shortcut window" #~ msgid "Preferences" #~ msgstr "التفضيلات" #~ msgid "After meal" #~ msgstr "بعد الأكل" #~ msgid "Refill Stock" #~ msgstr "أعِد ملء المخزون" #~ msgid "Low Stock" #~ msgstr "مخزون منخفض" diegopvlk-Dosage-bd9126a/po/be.po000066400000000000000000000643111514145341100166600ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) 2023 Diego Povliuk # This file is distributed under the license GPLv3-or-later. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: io.github.diegopvlk.Dosage\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-12-19 16:12-0300\n" "PO-Revision-Date: 2025-02-10 23:31+0000\n" "Last-Translator: Diego Povliuk \n" "Language-Team: Belarusian \n" "Language: be\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "X-Generator: Weblate 5.10-dev\n" #. TRANSLATORS: App name, translate to your language and follow the capitalization #: data/io.github.diegopvlk.Dosage.appdata.xml.in:20 #: data/io.github.diegopvlk.Dosage.desktop.in:3 #: src/utils/getTreatmentsExportFile.js:173 src/utils/saveFiles.js:22 #: src/utils/saveFiles.js:44 src/main.js:60 src/window.js:1060 #: data/ui/window.blp:6 msgid "Dosage" msgstr "Дазоўка" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:21 msgid "Keep track of your treatments" msgstr "Сачыце за вашымі курсамі лячэння" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:24 msgid "" "Easily manage and track treatments with Dosage: notifications, history, " "multiple doses, flexible frequency, customization, stock monitoring, and " "duration control" msgstr "" "Адсочвайце курсы лячэння з дапамогай Дазоўкі: апавяшчэнні, гісторыя, " "некалькі доз, гнуткая частата, налады, маніторынг запасаў і кантроль " "працягласці" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:25 msgid "Features:" msgstr "Функцыі:" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:27 msgid "Notifications — Get reminders at the right time" msgstr "Апавяшчэнні — сваечасова атрымлівайце апавяшчэнні" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:28 msgid "History — See which medications you took, skipped or missed" msgstr "Гісторыя - праглядайце спіс лекаў якія вы прынялі або прапусцілі" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:29 msgid "Dosage management — Multiple doses with different times" msgstr "Кіраванне дозамі - некалькі доз у розны час" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:30 msgid "" "Frequency modes — Every day, specific days, cycle or just when necessary" msgstr "Частата прыёму - кожны дзень, абраныя дні, цыклы ці проста калі трэба" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:31 msgid "Color and icon — Give a shape for your treatment" msgstr "" "Колер і значок — каб выбраць значок і колер для запісу ў спісе курсаў лячэння" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:32 msgid "Inventory tracking — Monitor your stock and get reminded when it's low" msgstr "" "Маніторынг запасу - маніторыце ваш запас і атрымлівайце апавяшчэнні, калі ён " "будзе вычэрпвацца" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:33 msgid "Duration — Define the start and end dates" msgstr "Працягласць — вызначыце пачатковую і апошнюю даты" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:44 msgid "Dosage today window in light theme" msgstr "Раздзел \"Сёння\" Дазоўкі ў светлай тэме" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:49 msgid "Dosage preferences window in light theme" msgstr "Акно налад у светлай тэме" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:54 msgid "Dosage edit treatment window in light theme" msgstr "Раздзел \"Курсы лячэння\" Дазоўкі ў светлай тэме" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:59 msgid "Dosage today window in dark theme" msgstr "Раздзел \"Сёння\" Дазоўкі ў цёмнай тэме" #. TRANSLATORS: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/io.github.diegopvlk.Dosage.desktop.in:10 msgid "Medication;Tracker;Reminder;Today;Treatments;Pill;Drug;Remedy;" msgstr "Medication;Tracker;Reminder;Today;History;Treatments;Pill;Drug;Remedy;таблеткі;лячэнне;курс;нагадаць;прыняць;гісторыя;працэдура;доза;лекі;" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:232 msgid "Date" msgstr "Дата" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:199 msgid "Time" msgstr "Час" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/med-dialog.blp:61 data/ui/one-time-dialog.blp:49 msgid "Name" msgstr "Назва" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:183 msgid "Dose" msgstr "Доза" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 msgid "Status" msgstr "Статус" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 msgid "Time Confirmed" msgstr "Час пацверджання" #: src/utils/getHistoryExportFile.js:38 src/utils/getHistoryExportFile.js:117 #: src/editHistDialog.js:68 src/historyFactory.js:186 msgid "Missed" msgstr "Адсутнічае" #: src/utils/getHistoryExportFile.js:41 src/utils/getHistoryExportFile.js:121 #: src/historyFactory.js:183 data/ui/edit-hist-dialog.blp:111 msgid "Skipped" msgstr "Прапушчана" #: src/utils/getHistoryExportFile.js:44 src/utils/getHistoryExportFile.js:55 #: src/utils/getHistoryExportFile.js:125 src/utils/getHistoryExportFile.js:138 #: src/editHistDialog.js:73 src/historyFactory.js:190 #: data/ui/edit-hist-dialog.blp:116 msgid "Confirmed" msgstr "Пацверджана" #: src/utils/getHistoryExportFile.js:52 src/utils/getHistoryExportFile.js:134 #: src/editHistDialog.js:56 src/historyFactory.js:178 msgid "Auto-Confirmed" msgstr "Аўтаматычна пацверджана" #: src/utils/getHistoryExportFile.js:55 src/utils/getHistoryExportFile.js:138 #: src/editHistDialog.js:74 msgid "Time Unknown" msgstr "Невядомы час" #. TRANSLATORS: Context: 1 Pill at 19:00 #: src/utils/getTreatmentsExportFile.js:69 #, fuzzy #| msgid "Date" msgid "at" msgstr "Дата" #: src/utils/getTreatmentsExportFile.js:89 data/ui/med-dialog.blp:443 msgid "Notes" msgstr "Заўвагі" #: src/utils/getTreatmentsExportFile.js:96 src/utils/locale.js:37 #: src/treatmentsFactory.js:268 msgid "Daily" msgstr "Штодзённа" #: src/utils/getTreatmentsExportFile.js:102 src/medDialog.js:428 #: data/ui/med-dialog.blp:459 msgid "Day of Month" msgstr "Дзень месяца" #. TRANSLATORS: Context: 2 day(s) on, 1 day(s) off #: src/utils/getTreatmentsExportFile.js:109 msgid "day(s) on" msgstr "" #. TRANSLATORS: Context: 2 day(s) on, 1 day(s) off #: src/utils/getTreatmentsExportFile.js:111 msgid "day(s) off" msgstr "" #: src/utils/getTreatmentsExportFile.js:122 src/todayFactory.js:41 #: src/treatmentsFactory.js:298 data/ui/med-dialog.blp:461 msgid "As Needed" msgstr "Пры неабходнасці" #: src/utils/getTreatmentsExportFile.js:132 data/ui/med-dialog.blp:764 msgid "Duration" msgstr "Працягласць" #: src/utils/getTreatmentsExportFile.js:135 #, fuzzy #| msgid "Starts On" msgid "Started on" msgstr "Пачынаецца" #: src/utils/getTreatmentsExportFile.js:136 data/ui/med-dialog.blp:775 #, fuzzy #| msgid "Starts On" msgid "Start" msgstr "Пачынаецца" #: src/utils/getTreatmentsExportFile.js:138 src/treatmentsFactory.js:256 msgid "Ended on" msgstr "Завяршылася на" #: src/utils/getTreatmentsExportFile.js:138 data/ui/med-dialog.blp:817 #, fuzzy #| msgid "Ends On" msgid "End" msgstr "Сканчаецца" #: src/utils/getTreatmentsExportFile.js:173 src/utils/saveFiles.js:44 #: data/ui/window.blp:234 msgid "Treatments" msgstr "Курсы лячэння" #: src/utils/getTreatmentsExportFile.js:184 #, fuzzy #| msgctxt "shortcut window" #| msgid "General" msgid "Generated on" msgstr "Агульныя" #: src/utils/getTreatmentsExportFile.js:187 msgid "Ongoing" msgstr "" #: src/utils/getTreatmentsExportFile.js:188 msgid "Non-scheduled" msgstr "" #: src/utils/getTreatmentsExportFile.js:189 msgid "Finished" msgstr "" #: src/utils/locale.js:33 msgid "Weekends" msgstr "Выхадныя" #: src/utils/locale.js:35 msgid "Weekdays" msgstr "Будні" #: src/utils/saveFiles.js:22 data/ui/window.blp:156 msgid "History" msgstr "Гісторыя" #: src/editHistDialog.js:60 src/editHistDialog.js:89 src/editHistDialog.js:110 msgid "Confirmed At" msgstr "Пацверджана ў" #: src/editHistDialog.js:64 src/editHistDialog.js:114 msgid "Skipped At" msgstr "Прапушчана ў" #: src/historyFactory.js:47 msgid "Select to be Removed" msgstr "Выберыце для выдалення" #. TRANSLATORS: "Your Name " #: src/main.js:69 msgid "translator-credits" msgstr "Yahor Haurylenka " #: src/main.js:73 msgid "Thanks to These Projects!" msgstr "Вялікі дзякуй гэтым праектам!" #: src/medDialog.js:99 msgid "Edit Treatment" msgstr "Рэдагаваць курс лячэння" #: src/medDialog.js:100 data/ui/edit-hist-dialog.blp:30 #: data/ui/preferences.blp:112 data/ui/preferences.blp:132 #: data/ui/refill-dialog.blp:67 msgid "Save" msgstr "Захаваць" #: src/medDialog.js:114 msgid "Copy" msgstr "Капіяваць" #: src/medDialog.js:217 msgid "Add Dose" msgstr "Дадаць дозу" #: src/medDialog.js:419 msgid "Choose" msgstr "Выбраць" #: src/medDialog.js:429 src/treatmentsFactory.js:274 msgid "Day" msgstr "Дзень" #: src/medDialog.js:456 data/ui/med-dialog.blp:458 msgid "Specific Days" msgstr "Выбраныя дні" #: src/medDialog.js:463 src/treatmentsFactory.js:295 data/ui/med-dialog.blp:460 msgid "Cycle" msgstr "Цыкл" #: src/medDialog.js:467 data/ui/med-dialog.blp:452 msgid "Frequency" msgstr "Частата" #: src/medDialog.js:500 msgid "Empty Name" msgstr "Адсутнічае назва запісу" #: src/medDialog.js:506 msgid "Empty Unit" msgstr "Пустая адзінка вымярэння" #: src/medDialog.js:513 msgid "Choose at Least One Day" msgstr "Выберыце хаця б адзін дзень" #: src/medDialog.js:527 src/oneTimeDialog.js:187 msgid "Name Already on Treatment List" msgstr "Імя ўжо ў спісе лячэння" #: src/medDialog.js:542 msgid "Duplicated Time" msgstr "Аднолькавы час у прыёмаў доз" #: src/medDialog.js:582 msgid "Are You Sure?" msgstr "Вы ўпэўнены?" #: src/medDialog.js:583 msgid "will be deleted" msgstr "будзе выдалены" #: src/medDialog.js:586 data/ui/edit-hist-dialog.blp:18 #: data/ui/med-dialog.blp:19 msgid "Cancel" msgstr "Скасаваць" #: src/medDialog.js:587 src/treatmentsFactory.js:128 data/ui/med-dialog.blp:865 msgid "Delete" msgstr "Выдаліць" #: src/oneTimeDialog.js:110 msgid "New" msgstr "Новы" #: src/oneTimeDialog.js:121 data/ui/med-dialog.blp:189 #: data/ui/one-time-dialog.blp:178 msgid "Pill(s)" msgstr "Таблетка(і)" #: src/prefsDialog.js:63 msgid "Accept to allow running in the background and receive notifications" msgstr "Дазвольце праграме працаваць у фонавым рэжыме і адпраўляць апавяшчэнні" #: src/prefsDialog.js:74 src/window.js:259 msgid "An Issue Has Occurred" msgstr "Узнікла праблема" #: src/prefsDialog.js:77 src/window.js:267 src/window.js:289 src/window.js:311 #: src/window.js:329 msgid "Close" msgstr "Закрыць" #: src/timeDoseRow.js:34 msgid "Remove Dose" msgstr "Выдаліць дозу" #: src/timeDoseRow.js:40 data/ui/edit-hist-dialog.blp:90 #: data/ui/one-time-dialog.blp:210 msgid "Change Time" msgstr "Змяніць час" #: src/todayFactory.js:134 msgid "Change Dose" msgstr "Зменіць дозу" #: src/treatmentsFactory.js:96 src/treatmentsFactory.js:126 #: data/ui/refill-dialog.blp:7 msgid "Refill" msgstr "Папоўніць" #: src/treatmentsFactory.js:125 msgid "Edit" msgstr "Рэдагаваць" #: src/treatmentsFactory.js:127 msgid "Duplicate" msgstr "Дублікат" #: src/treatmentsFactory.js:146 msgid "Options" msgstr "Параметры" #. TRANSLATORS: keep the %d it's where the number goes #: src/treatmentsFactory.js:244 #, javascript-format msgid "%d Remaining" msgstr "%d Засталося" #. TRANSLATORS: label for when duration is enabled #: src/treatmentsFactory.js:254 msgid "Starts on" msgstr "Пачынаецца" #: src/treatmentsFactory.js:255 msgid "Until" msgstr "Да" #: src/treatmentsFactory.js:283 src/treatmentsFactory.js:286 msgid "Next Dose" msgstr "Наступная дозу" #: src/window.js:173 src/window.js:943 msgid "Reminder" msgstr "Напамін" #. TRANSLATORS: Notification text for when the inventory is low #: src/window.js:175 msgid "You have treatments low in stock" msgstr "У вас засталося мала лекаў у запасе" #: src/window.js:492 msgid "Show All" msgstr "Паказаць усё" #: src/window.js:515 msgid "Show Less" msgstr "Паказаць менш" #: src/window.js:648 msgid "No Results Found" msgstr "Няма знойдзеных вынікаў" #: src/window.js:648 src/window.js:1517 #, fuzzy #| msgid "History" msgid "No History" msgstr "Гісторыя" #: src/window.js:818 data/ui/window.blp:260 #, fuzzy #| msgid "Treatments" msgid "No Treatments" msgstr "Курсы лячэння" #: src/window.js:818 msgid "All Done for Today" msgstr "Вы прынялі ўсе лекі на сёння" #: src/window.js:906 src/window.js:1090 data/ui/one-time-dialog.blp:285 #: data/ui/preferences.blp:73 msgid "Confirm" msgstr "Пацвердзіць" #: src/window.js:906 msgid "Confirm All" msgstr "Пацвердзіць усё" #: src/window.js:907 data/ui/preferences.blp:84 data/ui/window.blp:146 msgid "Skip" msgstr "Прапусціць" #: src/window.js:907 msgid "Skip All" msgstr "Прапусціць усё" #. TRANSLATORS: keep the %d it's where the number goes #: src/window.js:938 #, javascript-format msgid "and %d more" msgstr "і яшчэ %d" #: src/window.js:1090 data/ui/one-time-dialog.blp:7 data/ui/window.blp:133 msgid "One-Time Entry" msgstr "Аднаразовы прыём" #: src/window.js:1295 data/ui/window.blp:353 msgid "Quit" msgstr "Выйсці" #: data/ui/edit-hist-dialog.blp:7 msgid "Edit Entry" msgstr "Рэдагаваць запіс" #: data/ui/med-dialog.blp:7 msgid "New Treatment" msgstr "Новы курс лячэння" #: data/ui/med-dialog.blp:31 data/ui/window.blp:283 msgid "Add" msgstr "Дадаць" #: data/ui/med-dialog.blp:69 data/ui/one-time-dialog.blp:58 msgid "Color" msgstr "Колер" #. TRANSLATORS: Tooltip for the colors (from Default until Purple) #: data/ui/med-dialog.blp:94 data/ui/one-time-dialog.blp:83 msgid "Default" msgstr "Стандартны" #: data/ui/med-dialog.blp:106 data/ui/one-time-dialog.blp:95 msgid "Red" msgstr "Чырвоны" #: data/ui/med-dialog.blp:118 data/ui/one-time-dialog.blp:107 msgid "Orange" msgstr "Аранжавы" #: data/ui/med-dialog.blp:130 data/ui/one-time-dialog.blp:119 msgid "Yellow" msgstr "Жоўты" #: data/ui/med-dialog.blp:142 data/ui/one-time-dialog.blp:131 msgid "Green" msgstr "Зялёны" #: data/ui/med-dialog.blp:154 data/ui/one-time-dialog.blp:143 msgid "Cyan" msgstr "Блакітны" #: data/ui/med-dialog.blp:166 data/ui/one-time-dialog.blp:155 msgid "Blue" msgstr "Сіні" #: data/ui/med-dialog.blp:178 data/ui/one-time-dialog.blp:167 msgid "Purple" msgstr "Фіялетавы" #: data/ui/med-dialog.blp:188 data/ui/one-time-dialog.blp:177 msgid "Unit" msgstr "Адзінка вымярэння" #: data/ui/med-dialog.blp:197 msgid "Icon" msgstr "Значок" #. TRANSLATORS: Tooltip for the icons (from Pill until Potion) #: data/ui/med-dialog.blp:226 msgid "Pill" msgstr "Таблетка" #: data/ui/med-dialog.blp:242 msgid "Alternative Pill" msgstr "Іншы від таблеткі" #: data/ui/med-dialog.blp:258 msgid "Capsule" msgstr "Капсула" #: data/ui/med-dialog.blp:274 msgid "Round Pill" msgstr "Круглая таблетка" #: data/ui/med-dialog.blp:290 msgid "Alternative Round Pill" msgstr "Іншы від круглай таблеткі" #: data/ui/med-dialog.blp:306 msgid "Ampoule" msgstr "Ампула" #: data/ui/med-dialog.blp:322 msgid "Injection" msgstr "Ін'екцыя" #: data/ui/med-dialog.blp:338 msgid "Square Pill" msgstr "Квадратная таблетка" #: data/ui/med-dialog.blp:354 msgid "Alternative Square Pill" msgstr "Іншы від квадратнай таблеткі" #: data/ui/med-dialog.blp:370 msgid "Triangle pill" msgstr "Трохкутная таблетка" #: data/ui/med-dialog.blp:386 msgid "Alternative Triangle Pill" msgstr "Іншы від трохкутнай таблеткі" #: data/ui/med-dialog.blp:402 msgid "Bottle" msgstr "Бутэлька" #: data/ui/med-dialog.blp:418 msgid "Drops" msgstr "Кроплі" #: data/ui/med-dialog.blp:434 msgid "Potion" msgstr "Мікстура" #: data/ui/med-dialog.blp:457 msgid "Every Day" msgstr "Кожны дзень" #: data/ui/med-dialog.blp:473 msgid "Choose Days" msgstr "Выберыце дні" #: data/ui/med-dialog.blp:572 msgid "Choose Day" msgstr "Выберыце дзень" #: data/ui/med-dialog.blp:617 msgid "Change Cycle" msgstr "Змяніць цыкл" #: data/ui/med-dialog.blp:642 msgid "Days Active" msgstr "Актыўных дзён" #: data/ui/med-dialog.blp:656 msgid "Days Inactive" msgstr "Неактыўных дзён" #. TRANSLATORS: Day in cycle, try to keep it short #: data/ui/med-dialog.blp:671 msgid "Today is Cycle Day…" msgstr "Сёння дзень цыкла…" #: data/ui/med-dialog.blp:694 msgid "Increase Notification Priority" msgstr "Павялічыць прыярытэт апавяшчэнняў" #: data/ui/med-dialog.blp:695 msgid "Show in fullscreen mode or with 'Do Not Disturb' enabled" msgstr "" "Паказвае апавяшчэнне ў поўнаэкранным рэжыме або нават калі ўключаны рэжым " "'Не турбаваць'" #: data/ui/med-dialog.blp:699 msgid "Recurring Notifications" msgstr "Паўтаральныя апавяшчэнні" #: data/ui/med-dialog.blp:700 msgid "Renotify until it's confirmed or skipped" msgstr "" "Паўторна апавяшчаць да таго часу, пакуль не будзе пацверджана або прапушчана" #: data/ui/med-dialog.blp:705 msgid "Interval in Minutes" msgstr "Інтэрвал у хвілінах" #: data/ui/med-dialog.blp:718 data/ui/refill-dialog.blp:36 msgid "Inventory" msgstr "Запас" #: data/ui/med-dialog.blp:719 msgid "Manage your stock" msgstr "Кіраванне вашымі запасамі лекаў" #: data/ui/med-dialog.blp:725 msgid "Current" msgstr "Бягучы запас лекаў" #: data/ui/med-dialog.blp:738 msgid "Remind Me At" msgstr "Нагадаць мне, калі запас лекаў апусціцца да" #: data/ui/med-dialog.blp:751 msgid "Refill Amount" msgstr "Памер папаўнення" #: data/ui/med-dialog.blp:765 msgid "Set start and end dates" msgstr "Устанавіць пачатковую і канчатковыя даты курса лячэння" #: data/ui/med-dialog.blp:785 data/ui/med-dialog.blp:827 #: data/ui/one-time-dialog.blp:243 msgid "Choose Date" msgstr "Выберыце дату" #: data/ui/med-dialog.blp:855 msgid "Mark as Confirmed" msgstr "Адзначыць як пацверджанае" #: data/ui/med-dialog.blp:856 msgid "" "If not manually confirmed or skipped, it will be recorded as confirmed in " "history, reducing stock if enabled" msgstr "" "Калі не пацверджана або не прапушчана ўручную, будзе запісана як " "пацверджанае ў гісторыі, са зніжэннем запасу, калі ўключана" #: data/ui/one-time-dialog.blp:44 msgid "From Treatment List" msgstr "Са спісу курса лячэння" #: data/ui/one-time-dialog.blp:182 msgid "Amount" msgstr "Колькасць" #: data/ui/preferences.blp:7 data/ui/window.blp:338 msgid "Preferences" msgstr "Налады" #: data/ui/preferences.blp:17 msgid "Auto-Start at Login" msgstr "Аўтаматычны запуск праграмы пры ўваходзе ў сістэму" #: data/ui/preferences.blp:28 msgid "Auto-Clear History" msgstr "Аўтаматычна ачышчаць гісторыю" #: data/ui/preferences.blp:29 msgid "Keeps a maximum of 30 days" msgstr "Захоўвае максімум 30 дзён" #: data/ui/preferences.blp:40 msgid "Low Stock Notification" msgstr "Апавяшчэнне аб нізкім запасе" #: data/ui/preferences.blp:41 msgid "Send reminders when treatments are low in stock" msgstr "Адпраўляць напаміны, калі лячэнні маюць нізкі запас" #: data/ui/preferences.blp:52 msgid "Notification Sound" msgstr "Гук апавяшчэння" #: data/ui/preferences.blp:63 msgid "Notification Buttons" msgstr "Кнопкі апавяшчэнняў" #: data/ui/preferences.blp:64 msgid "Show or hide confirm/skip" msgstr "Паказаць або схаваць пацвярджэнне/пропуск" #: data/ui/preferences.blp:98 #, fuzzy #| msgid "Export History as CSV" msgid "Export History As" msgstr "Экспартаваць гісторыю як CSV" #: data/ui/preferences.blp:121 #, fuzzy #| msgid "Empty Treatments" msgid "Export Treatments As" msgstr "Пустыя працэдуры" #: data/ui/shortcuts-dialog.blp:8 #, fuzzy #| msgctxt "shortcut window" #| msgid "Show Shortcuts" msgid "Shortcuts" msgstr "Паказаць спалучэнні клавіш" #: data/ui/shortcuts-dialog.blp:11 #, fuzzy #| msgid "Show/Hide 'As Needed'" msgctxt "shortcut window" msgid "Show/Hide 'As Needed'" msgstr "Паказаць/схаваць 'Пры неабходнасці'" #: data/ui/shortcuts-dialog.blp:16 #, fuzzy #| msgid "One-Time Entry" msgctxt "shortcut window" msgid "New One-Time Entry" msgstr "Аднаразовы прыём" #: data/ui/shortcuts-dialog.blp:21 #, fuzzy #| msgid "New Treatment" msgctxt "shortcut window" msgid "Add New Treatment" msgstr "Новы курс лячэння" #: data/ui/shortcuts-dialog.blp:26 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Паказаць спалучэнні клавіш" #: data/ui/shortcuts-dialog.blp:31 msgctxt "shortcut window" msgid "Quit" msgstr "Выйсці" #: data/ui/window.blp:23 msgid "Show/Hide 'As Needed'" msgstr "Паказаць/схаваць 'Пры неабходнасці'" #: data/ui/window.blp:31 msgid "Search" msgstr "Пошук" #: data/ui/window.blp:39 #, fuzzy #| msgid "Treatments" msgid "Sort Treatments" msgstr "Курсы лячэння" #: data/ui/window.blp:48 msgid "Main Menu" msgstr "Галоўнае меню" #: data/ui/window.blp:61 msgid "Search…" msgstr "Пошук…" #: data/ui/window.blp:71 msgid "Today" msgstr "Сёння" #: data/ui/window.blp:117 data/ui/window.blp:210 msgid "Unselect" msgstr "Скасаваць выбар" #: data/ui/window.blp:220 msgid "Remove Entries" msgstr "Выдаліць запісы" #: data/ui/window.blp:300 msgid "Name Ascending" msgstr "" #: data/ui/window.blp:306 msgid "Remaining Stock (Lowest First)" msgstr "" #: data/ui/window.blp:312 msgid "Remaining Stock (Highest First)" msgstr "" #: data/ui/window.blp:318 #, fuzzy #| msgid "As Needed" msgid "As Needed Last" msgstr "Пры неабходнасці" #: data/ui/window.blp:324 #, fuzzy #| msgid "Ended on" msgid "Ended Last" msgstr "Завяршылася на" #: data/ui/window.blp:330 #, fuzzy #| msgid "As Needed" msgid "As Needed/Ended Last" msgstr "Пры неабходнасці" #: data/ui/window.blp:343 #, fuzzy #| msgctxt "shortcut window" #| msgid "Show Shortcuts" msgid "Keyboard Shortcuts" msgstr "Паказаць спалучэнні клавіш" #: data/ui/window.blp:348 msgid "About Dosage" msgstr "Пра Дазоўку" #~ msgid "Empty Treatments" #~ msgstr "Пустыя працэдуры" #~ msgid "Empty History" #~ msgstr "Гісторыя пустая" #~ msgid "No Treatments Added" #~ msgstr "Лекі не дададзены" #~ msgctxt "shortcut window" #~ msgid "General" #~ msgstr "Агульныя" #~ msgctxt "shortcut window" #~ msgid "Preferences" #~ msgstr "Налады" #~ msgid "After meal" #~ msgstr "Пасля ежы" #~ msgid "Refill Stock" #~ msgstr "Папоўніць запас" #~ msgid "Low Stock" #~ msgstr "Нізкі запас" #~ msgid "Form" #~ msgstr "Форма" #~ msgid "Color and icon" #~ msgstr "Колер і значок" #~ msgid "Time and amount" #~ msgstr "Час прыёму і памер дозы" #~ msgid "Restore" #~ msgstr "Аднавіць" #~ msgid "New entry" #~ msgstr "Новы запіс" #~ msgid "Name already exists" #~ msgstr "Гэта назва ўжо занята" #~ msgid "Add to history" #~ msgstr "Дадаць да гісторыі" #~ msgid "medication" #~ msgstr "лекі" #~ msgid "tracker" #~ msgstr "трэкер" #~ msgid "treatments" #~ msgstr "курсы лячэння" #~ msgid "pill" #~ msgstr "таблетка" #~ msgid "drug" #~ msgstr "лекі" #~ msgid "remedy" #~ msgstr "сродак" #~ msgid "Su" #~ msgstr "Нд" #~ msgid "Mo" #~ msgstr "Пн" #~ msgid "Tu" #~ msgstr "Аў" #~ msgid "We" #~ msgstr "Срд" #~ msgid "Th" #~ msgstr "Чцв" #~ msgid "Fr" #~ msgstr "Пт" #~ msgid "Sa" #~ msgstr "Сб" #~ msgid "Sunday" #~ msgstr "Нядзеля" #~ msgid "Monday" #~ msgstr "Панядзелак" #~ msgid "Tuesday" #~ msgstr "Аўторак" #~ msgid "Wednesday" #~ msgstr "Серада" #~ msgid "Thursday" #~ msgstr "Чацвер" #~ msgid "Friday" #~ msgstr "Пятніца" #~ msgid "Saturday" #~ msgstr "Субота" diegopvlk-Dosage-bd9126a/po/bg.po000066400000000000000000000624311514145341100166630ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) 2023 Diego Povliuk # This file is distributed under the license GPLv3-or-later. # FIRST AUTHOR , YEAR. # twlvnn , 2024. # msgid "" msgstr "" "Project-Id-Version: io.github.diegopvlk.Dosage\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-12-19 16:12-0300\n" "PO-Revision-Date: 2025-12-06 10:48+0000\n" "Last-Translator: Kiril Panayotov \n" "Language-Team: Bulgarian \n" "Language: bg\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 5.15-dev\n" #. TRANSLATORS: App name, translate to your language and follow the capitalization #: data/io.github.diegopvlk.Dosage.appdata.xml.in:20 #: data/io.github.diegopvlk.Dosage.desktop.in:3 #: src/utils/getTreatmentsExportFile.js:173 src/utils/saveFiles.js:22 #: src/utils/saveFiles.js:44 src/main.js:60 src/window.js:1060 #: data/ui/window.blp:6 msgid "Dosage" msgstr "Дозировка" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:21 msgid "Keep track of your treatments" msgstr "Следете лечението си" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:24 msgid "" "Easily manage and track treatments with Dosage: notifications, history, " "multiple doses, flexible frequency, customization, stock monitoring, and " "duration control" msgstr "" "Лесно управлявайте и следете лечението си с „Дозировка“: Известия, История, " "Многократни Дози, Управление на Периоди, Персонализация, Следене на Запаса, " "и Контрол на Продължителността" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:25 msgid "Features:" msgstr "Функции:" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:27 msgid "Notifications — Get reminders at the right time" msgstr "Известия — Получавайте напомняния в точния момент" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:28 msgid "History — See which medications you took, skipped or missed" msgstr "История — Вижте кои лекарства сте приемали, пропускали или изпуснали" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:29 msgid "Dosage management — Multiple doses with different times" msgstr "Управление на дозировката — Многократни дози по различно време" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:30 msgid "" "Frequency modes — Every day, specific days, cycle or just when necessary" msgstr "" "Режими на период — Всеки ден, определени дни, цикъл или само при необходимост" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:31 msgid "Color and icon — Give a shape for your treatment" msgstr "Цвят и иконка - Дайте форма на лечението си" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:32 msgid "Inventory tracking — Monitor your stock and get reminded when it's low" msgstr "" "Следене на запаса — Следете запаса си и получавайте напомняне, когато е " "близо до изчерпване" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:33 msgid "Duration — Define the start and end dates" msgstr "Продължителност — Дефинирайте началната и крайната дата" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:44 msgid "Dosage today window in light theme" msgstr "„Дозировка“ прозореца за „Днес“ в светла тема" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:49 msgid "Dosage preferences window in light theme" msgstr "„Дозировка“ прозореца за „Настройки“ в светла тема" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:54 msgid "Dosage edit treatment window in light theme" msgstr "„Дозировка“ прозореца за „Редактиране на лечението“ в светла тема" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:59 msgid "Dosage today window in dark theme" msgstr "„Дозировка“ прозореца за „Днес“ в тъмна тема" #. TRANSLATORS: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/io.github.diegopvlk.Dosage.desktop.in:10 msgid "Medication;Tracker;Reminder;Today;Treatments;Pill;Drug;Remedy;" msgstr "Лекарства;Следене;Напомняне:Днес;Лечение;Хапче;Лекарство;" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:232 msgid "Date" msgstr "Дата" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:199 msgid "Time" msgstr "Час" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/med-dialog.blp:61 data/ui/one-time-dialog.blp:49 msgid "Name" msgstr "Име" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:183 msgid "Dose" msgstr "Доза" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 msgid "Status" msgstr "Състояние" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 msgid "Time Confirmed" msgstr "Часът е потвърден" #: src/utils/getHistoryExportFile.js:38 src/utils/getHistoryExportFile.js:117 #: src/editHistDialog.js:68 src/historyFactory.js:186 msgid "Missed" msgstr "Изпуснати" #: src/utils/getHistoryExportFile.js:41 src/utils/getHistoryExportFile.js:121 #: src/historyFactory.js:183 data/ui/edit-hist-dialog.blp:111 msgid "Skipped" msgstr "Пропуснати" #: src/utils/getHistoryExportFile.js:44 src/utils/getHistoryExportFile.js:55 #: src/utils/getHistoryExportFile.js:125 src/utils/getHistoryExportFile.js:138 #: src/editHistDialog.js:73 src/historyFactory.js:190 #: data/ui/edit-hist-dialog.blp:116 msgid "Confirmed" msgstr "Потвърдено" #: src/utils/getHistoryExportFile.js:52 src/utils/getHistoryExportFile.js:134 #: src/editHistDialog.js:56 src/historyFactory.js:178 msgid "Auto-Confirmed" msgstr "Автоматично потвърдено" #: src/utils/getHistoryExportFile.js:55 src/utils/getHistoryExportFile.js:138 #: src/editHistDialog.js:74 msgid "Time Unknown" msgstr "Времето е неизвестно" #. TRANSLATORS: Context: 1 Pill at 19:00 #: src/utils/getTreatmentsExportFile.js:69 msgid "at" msgstr "в" #: src/utils/getTreatmentsExportFile.js:89 data/ui/med-dialog.blp:443 msgid "Notes" msgstr "Бележки" #: src/utils/getTreatmentsExportFile.js:96 src/utils/locale.js:37 #: src/treatmentsFactory.js:268 msgid "Daily" msgstr "Ежедневно" #: src/utils/getTreatmentsExportFile.js:102 src/medDialog.js:428 #: data/ui/med-dialog.blp:459 msgid "Day of Month" msgstr "Ден от месеца" #. TRANSLATORS: Context: 2 day(s) on, 1 day(s) off #: src/utils/getTreatmentsExportFile.js:109 msgid "day(s) on" msgstr "" #. TRANSLATORS: Context: 2 day(s) on, 1 day(s) off #: src/utils/getTreatmentsExportFile.js:111 msgid "day(s) off" msgstr "" #: src/utils/getTreatmentsExportFile.js:122 src/todayFactory.js:41 #: src/treatmentsFactory.js:298 data/ui/med-dialog.blp:461 msgid "As Needed" msgstr "При необходимост" #: src/utils/getTreatmentsExportFile.js:132 data/ui/med-dialog.blp:764 msgid "Duration" msgstr "Продължителност" #: src/utils/getTreatmentsExportFile.js:135 msgid "Started on" msgstr "Започнат от" #: src/utils/getTreatmentsExportFile.js:136 data/ui/med-dialog.blp:775 msgid "Start" msgstr "Начало" #: src/utils/getTreatmentsExportFile.js:138 src/treatmentsFactory.js:256 msgid "Ended on" msgstr "Завършено на" #: src/utils/getTreatmentsExportFile.js:138 data/ui/med-dialog.blp:817 msgid "End" msgstr "Край" #: src/utils/getTreatmentsExportFile.js:173 src/utils/saveFiles.js:44 #: data/ui/window.blp:234 msgid "Treatments" msgstr "Лечения" #: src/utils/getTreatmentsExportFile.js:184 msgid "Generated on" msgstr "Създаден на" #: src/utils/getTreatmentsExportFile.js:187 msgid "Ongoing" msgstr "Текущ" #: src/utils/getTreatmentsExportFile.js:188 msgid "Non-scheduled" msgstr "" #: src/utils/getTreatmentsExportFile.js:189 msgid "Finished" msgstr "" #: src/utils/locale.js:33 msgid "Weekends" msgstr "Почивни дни" #: src/utils/locale.js:35 msgid "Weekdays" msgstr "Делнични дни" #: src/utils/saveFiles.js:22 data/ui/window.blp:156 msgid "History" msgstr "История" #: src/editHistDialog.js:60 src/editHistDialog.js:89 src/editHistDialog.js:110 msgid "Confirmed At" msgstr "Потвърдено в" #: src/editHistDialog.js:64 src/editHistDialog.js:114 msgid "Skipped At" msgstr "Пропуснати в" #: src/historyFactory.js:47 msgid "Select to be Removed" msgstr "Изберете за изтриване" #. TRANSLATORS: "Your Name " #: src/main.js:69 msgid "translator-credits" msgstr "twlvnn " #: src/main.js:73 msgid "Thanks to These Projects!" msgstr "Благодарение на тези проекти!" #: src/medDialog.js:99 msgid "Edit Treatment" msgstr "Редактиране на лечението" #: src/medDialog.js:100 data/ui/edit-hist-dialog.blp:30 #: data/ui/preferences.blp:112 data/ui/preferences.blp:132 #: data/ui/refill-dialog.blp:67 msgid "Save" msgstr "Запазване" #: src/medDialog.js:114 msgid "Copy" msgstr "Копиране" #: src/medDialog.js:217 msgid "Add Dose" msgstr "Добавяне на доза" #: src/medDialog.js:419 msgid "Choose" msgstr "Избиране" #: src/medDialog.js:429 src/treatmentsFactory.js:274 msgid "Day" msgstr "Ден" #: src/medDialog.js:456 data/ui/med-dialog.blp:458 msgid "Specific Days" msgstr "Конкретни дни" #: src/medDialog.js:463 src/treatmentsFactory.js:295 data/ui/med-dialog.blp:460 msgid "Cycle" msgstr "Цикъл" #: src/medDialog.js:467 data/ui/med-dialog.blp:452 msgid "Frequency" msgstr "Период" #: src/medDialog.js:500 msgid "Empty Name" msgstr "Празно име" #: src/medDialog.js:506 msgid "Empty Unit" msgstr "Празна единица" #: src/medDialog.js:513 msgid "Choose at Least One Day" msgstr "Изберете поне един ден" #: src/medDialog.js:527 src/oneTimeDialog.js:187 msgid "Name Already on Treatment List" msgstr "Името вече е в списъка за лечение" #: src/medDialog.js:542 msgid "Duplicated Time" msgstr "Дублирано време" #: src/medDialog.js:582 msgid "Are You Sure?" msgstr "Сигурни ли сте?" #: src/medDialog.js:583 msgid "will be deleted" msgstr "ще бъде изтрит" #: src/medDialog.js:586 data/ui/edit-hist-dialog.blp:18 #: data/ui/med-dialog.blp:19 msgid "Cancel" msgstr "Отказване" #: src/medDialog.js:587 src/treatmentsFactory.js:128 data/ui/med-dialog.blp:865 msgid "Delete" msgstr "Изтриване" #: src/oneTimeDialog.js:110 msgid "New" msgstr "Ново" #: src/oneTimeDialog.js:121 data/ui/med-dialog.blp:189 #: data/ui/one-time-dialog.blp:178 msgid "Pill(s)" msgstr "Хапче(та)" #: src/prefsDialog.js:63 msgid "Accept to allow running in the background and receive notifications" msgstr "" "Приемете, за да позволите работа във фонов режим и получаване на известия" #: src/prefsDialog.js:74 src/window.js:259 msgid "An Issue Has Occurred" msgstr "Възникна проблем" #: src/prefsDialog.js:77 src/window.js:267 src/window.js:289 src/window.js:311 #: src/window.js:329 msgid "Close" msgstr "Затваряне" #: src/timeDoseRow.js:34 msgid "Remove Dose" msgstr "Премахване на дозата" #: src/timeDoseRow.js:40 data/ui/edit-hist-dialog.blp:90 #: data/ui/one-time-dialog.blp:210 msgid "Change Time" msgstr "Променяне на часа" #: src/todayFactory.js:134 msgid "Change Dose" msgstr "Променяне на дозата" #: src/treatmentsFactory.js:96 src/treatmentsFactory.js:126 #: data/ui/refill-dialog.blp:7 msgid "Refill" msgstr "Презареди" #: src/treatmentsFactory.js:125 msgid "Edit" msgstr "Редактиране" #: src/treatmentsFactory.js:127 msgid "Duplicate" msgstr "Дублиране" #: src/treatmentsFactory.js:146 msgid "Options" msgstr "Опции" #. TRANSLATORS: keep the %d it's where the number goes #: src/treatmentsFactory.js:244 #, javascript-format msgid "%d Remaining" msgstr "%d Оставащо" #. TRANSLATORS: label for when duration is enabled #: src/treatmentsFactory.js:254 msgid "Starts on" msgstr "Започва от" #: src/treatmentsFactory.js:255 msgid "Until" msgstr "До" #: src/treatmentsFactory.js:283 src/treatmentsFactory.js:286 msgid "Next Dose" msgstr "Следваща доза" #: src/window.js:173 src/window.js:943 msgid "Reminder" msgstr "Напомняне" #. TRANSLATORS: Notification text for when the inventory is low #: src/window.js:175 msgid "You have treatments low in stock" msgstr "Имате лечения с малко запас" #: src/window.js:492 msgid "Show All" msgstr "Покажи всичко" #: src/window.js:515 msgid "Show Less" msgstr "Покажи по-малко" #: src/window.js:648 msgid "No Results Found" msgstr "Не са намерени резултати" #: src/window.js:648 src/window.js:1517 #, fuzzy #| msgid "History" msgid "No History" msgstr "История" #: src/window.js:818 data/ui/window.blp:260 #, fuzzy #| msgid "Treatments" msgid "No Treatments" msgstr "Лечения" #: src/window.js:818 msgid "All Done for Today" msgstr "Всичко е готово за днес" #: src/window.js:906 src/window.js:1090 data/ui/one-time-dialog.blp:285 #: data/ui/preferences.blp:73 msgid "Confirm" msgstr "Потвърждаване" #: src/window.js:906 msgid "Confirm All" msgstr "Потвърждаване на всички" #: src/window.js:907 data/ui/preferences.blp:84 data/ui/window.blp:146 msgid "Skip" msgstr "Пропускане" #: src/window.js:907 msgid "Skip All" msgstr "Пропускане на всички" #. TRANSLATORS: keep the %d it's where the number goes #: src/window.js:938 #, javascript-format msgid "and %d more" msgstr "и още %d" #: src/window.js:1090 data/ui/one-time-dialog.blp:7 data/ui/window.blp:133 msgid "One-Time Entry" msgstr "Еднократен запис" #: src/window.js:1295 data/ui/window.blp:353 msgid "Quit" msgstr "Спиране на програмата" #: data/ui/edit-hist-dialog.blp:7 msgid "Edit Entry" msgstr "Редактиране на запис" #: data/ui/med-dialog.blp:7 msgid "New Treatment" msgstr "Ново лечение" #: data/ui/med-dialog.blp:31 data/ui/window.blp:283 msgid "Add" msgstr "Добавяне" #: data/ui/med-dialog.blp:69 data/ui/one-time-dialog.blp:58 msgid "Color" msgstr "Цвят" #. TRANSLATORS: Tooltip for the colors (from Default until Purple) #: data/ui/med-dialog.blp:94 data/ui/one-time-dialog.blp:83 msgid "Default" msgstr "Стандартно" #: data/ui/med-dialog.blp:106 data/ui/one-time-dialog.blp:95 msgid "Red" msgstr "Червено" #: data/ui/med-dialog.blp:118 data/ui/one-time-dialog.blp:107 msgid "Orange" msgstr "Оранжево" #: data/ui/med-dialog.blp:130 data/ui/one-time-dialog.blp:119 msgid "Yellow" msgstr "Жълто" #: data/ui/med-dialog.blp:142 data/ui/one-time-dialog.blp:131 msgid "Green" msgstr "Зелено" #: data/ui/med-dialog.blp:154 data/ui/one-time-dialog.blp:143 msgid "Cyan" msgstr "Синьо-зелен" #: data/ui/med-dialog.blp:166 data/ui/one-time-dialog.blp:155 msgid "Blue" msgstr "Синьо" #: data/ui/med-dialog.blp:178 data/ui/one-time-dialog.blp:167 msgid "Purple" msgstr "Лилаво" #: data/ui/med-dialog.blp:188 data/ui/one-time-dialog.blp:177 msgid "Unit" msgstr "Единица" #: data/ui/med-dialog.blp:197 msgid "Icon" msgstr "Иконка" #. TRANSLATORS: Tooltip for the icons (from Pill until Potion) #: data/ui/med-dialog.blp:226 msgid "Pill" msgstr "Хапче" #: data/ui/med-dialog.blp:242 msgid "Alternative Pill" msgstr "Алтернативно хапче" #: data/ui/med-dialog.blp:258 msgid "Capsule" msgstr "Капсула" #: data/ui/med-dialog.blp:274 msgid "Round Pill" msgstr "Кръгло хапче" #: data/ui/med-dialog.blp:290 msgid "Alternative Round Pill" msgstr "Алтернативно кръгло хапче" #: data/ui/med-dialog.blp:306 msgid "Ampoule" msgstr "Ампула" #: data/ui/med-dialog.blp:322 msgid "Injection" msgstr "Инжекция" #: data/ui/med-dialog.blp:338 msgid "Square Pill" msgstr "Квадратно хапче" #: data/ui/med-dialog.blp:354 msgid "Alternative Square Pill" msgstr "Алтернативно квадратно хапче" #: data/ui/med-dialog.blp:370 msgid "Triangle pill" msgstr "Триъгълно хапче" #: data/ui/med-dialog.blp:386 msgid "Alternative Triangle Pill" msgstr "Алтернативно триъгълно хапче" #: data/ui/med-dialog.blp:402 msgid "Bottle" msgstr "Бутилка" #: data/ui/med-dialog.blp:418 msgid "Drops" msgstr "Капки" #: data/ui/med-dialog.blp:434 msgid "Potion" msgstr "Отвара" #: data/ui/med-dialog.blp:457 msgid "Every Day" msgstr "Всяки ден" #: data/ui/med-dialog.blp:473 msgid "Choose Days" msgstr "Избиране на дни" #: data/ui/med-dialog.blp:572 msgid "Choose Day" msgstr "Изберете ден" #: data/ui/med-dialog.blp:617 msgid "Change Cycle" msgstr "Променяне на цикъла" #: data/ui/med-dialog.blp:642 msgid "Days Active" msgstr "Активни дни" #: data/ui/med-dialog.blp:656 msgid "Days Inactive" msgstr "Неактивни дни" #. TRANSLATORS: Day in cycle, try to keep it short #: data/ui/med-dialog.blp:671 msgid "Today is Cycle Day…" msgstr "Ден на цикъл…" #: data/ui/med-dialog.blp:694 msgid "Increase Notification Priority" msgstr "Увеличаване на приоритета на известията" #: data/ui/med-dialog.blp:695 msgid "Show in fullscreen mode or with 'Do Not Disturb' enabled" msgstr "" "Прави така, че известието да се показва в режим на цял екран или дори ако " "режим „Не безпокойте!“ е активирано" #: data/ui/med-dialog.blp:699 msgid "Recurring Notifications" msgstr "Повтарящи се известия" #: data/ui/med-dialog.blp:700 msgid "Renotify until it's confirmed or skipped" msgstr "Повторно известяване, докато не бъде потвърдено или пропуснато" #: data/ui/med-dialog.blp:705 msgid "Interval in Minutes" msgstr "Интервал в минути" #: data/ui/med-dialog.blp:718 data/ui/refill-dialog.blp:36 msgid "Inventory" msgstr "Запас" #: data/ui/med-dialog.blp:719 msgid "Manage your stock" msgstr "Управление на стоката" #: data/ui/med-dialog.blp:725 msgid "Current" msgstr "Сегашен" #: data/ui/med-dialog.blp:738 msgid "Remind Me At" msgstr "Напомнете ме в" #: data/ui/med-dialog.blp:751 msgid "Refill Amount" msgstr "Презареждане на бройката" #: data/ui/med-dialog.blp:765 msgid "Set start and end dates" msgstr "Задаване на начална и крайна дата" #: data/ui/med-dialog.blp:785 data/ui/med-dialog.blp:827 #: data/ui/one-time-dialog.blp:243 msgid "Choose Date" msgstr "Избиране на дата" #: data/ui/med-dialog.blp:855 msgid "Mark as Confirmed" msgstr "Маркиране като потвърдено" #: data/ui/med-dialog.blp:856 msgid "" "If not manually confirmed or skipped, it will be recorded as confirmed in " "history, reducing stock if enabled" msgstr "" "Ако не бъде потвърдено ръчно или пропуснато, то ще бъде записано като " "потвърдено в историята, като ще намали запасите, ако е включено" #: data/ui/one-time-dialog.blp:44 msgid "From Treatment List" msgstr "От списъка за лечения" #: data/ui/one-time-dialog.blp:182 msgid "Amount" msgstr "Брой" #: data/ui/preferences.blp:7 data/ui/window.blp:338 msgid "Preferences" msgstr "Настройки" #: data/ui/preferences.blp:17 msgid "Auto-Start at Login" msgstr "Автоматично пускане при вписване" #: data/ui/preferences.blp:28 msgid "Auto-Clear History" msgstr "Автоматично изчистване на историята" #: data/ui/preferences.blp:29 msgid "Keeps a maximum of 30 days" msgstr "Запазва максимум 30 дни" #: data/ui/preferences.blp:40 msgid "Low Stock Notification" msgstr "Уведомление за нисък запас" #: data/ui/preferences.blp:41 msgid "Send reminders when treatments are low in stock" msgstr "Изпращайте напомняния, когато лечението е с нисък запас" #: data/ui/preferences.blp:52 msgid "Notification Sound" msgstr "Звук за известията" #: data/ui/preferences.blp:63 msgid "Notification Buttons" msgstr "Бутони за известията" #: data/ui/preferences.blp:64 msgid "Show or hide confirm/skip" msgstr "Скриване или показване на потвърждаване/пропускане" #: data/ui/preferences.blp:98 msgid "Export History As" msgstr "Изнасяне на историята като" #: data/ui/preferences.blp:121 msgid "Export Treatments As" msgstr "Изнасяне на леченията като" #: data/ui/shortcuts-dialog.blp:8 #, fuzzy #| msgctxt "shortcut window" #| msgid "Show Shortcuts" msgid "Shortcuts" msgstr "Показване на клавишните комбинации" #: data/ui/shortcuts-dialog.blp:11 #, fuzzy #| msgid "Show/Hide 'As Needed'" msgctxt "shortcut window" msgid "Show/Hide 'As Needed'" msgstr "Показване/скриване „при необходимост“" #: data/ui/shortcuts-dialog.blp:16 #, fuzzy #| msgid "One-Time Entry" msgctxt "shortcut window" msgid "New One-Time Entry" msgstr "Еднократен запис" #: data/ui/shortcuts-dialog.blp:21 #, fuzzy #| msgid "New Treatment" msgctxt "shortcut window" msgid "Add New Treatment" msgstr "Ново лечение" #: data/ui/shortcuts-dialog.blp:26 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Показване на клавишните комбинации" #: data/ui/shortcuts-dialog.blp:31 msgctxt "shortcut window" msgid "Quit" msgstr "Спиране на програмата" #: data/ui/window.blp:23 msgid "Show/Hide 'As Needed'" msgstr "Показване/скриване „при необходимост“" #: data/ui/window.blp:31 msgid "Search" msgstr "Търсене" #: data/ui/window.blp:39 msgid "Sort Treatments" msgstr "Сортирай леченията" #: data/ui/window.blp:48 msgid "Main Menu" msgstr "Основно меню" #: data/ui/window.blp:61 msgid "Search…" msgstr "Търсене…" #: data/ui/window.blp:71 msgid "Today" msgstr "Днес" #: data/ui/window.blp:117 data/ui/window.blp:210 msgid "Unselect" msgstr "Демаркиране" #: data/ui/window.blp:220 msgid "Remove Entries" msgstr "Премахване на записите" #: data/ui/window.blp:300 msgid "Name Ascending" msgstr "Поимено в растящ ред" #: data/ui/window.blp:306 msgid "Remaining Stock (Lowest First)" msgstr "Оставащ запас (във възходящ ред)" #: data/ui/window.blp:312 msgid "Remaining Stock (Highest First)" msgstr "Оставащ запас (в низходящ ред)" #: data/ui/window.blp:318 #, fuzzy #| msgid "As Needed" msgid "As Needed Last" msgstr "При необходимост" #: data/ui/window.blp:324 #, fuzzy #| msgid "Ended on" msgid "Ended Last" msgstr "Завършено на" #: data/ui/window.blp:330 #, fuzzy #| msgid "As Needed" msgid "As Needed/Ended Last" msgstr "При необходимост" #: data/ui/window.blp:343 #, fuzzy #| msgctxt "shortcut window" #| msgid "Show Shortcuts" msgid "Keyboard Shortcuts" msgstr "Показване на клавишните комбинации" #: data/ui/window.blp:348 msgid "About Dosage" msgstr "Относно „Дозировка“" #~ msgid "Empty Treatments" #~ msgstr "Пустыя працэдуры" #~ msgid "Empty History" #~ msgstr "Изчистване на историята" #~ msgid "No Treatments Added" #~ msgstr "Не са добавени лечения" #~ msgctxt "shortcut window" #~ msgid "General" #~ msgstr "Общи" #~ msgctxt "shortcut window" #~ msgid "Preferences" #~ msgstr "Настройки" #~ msgid "After meal" #~ msgstr "След хранене" #~ msgid "Refill Stock" #~ msgstr "Презареждане на стоката" #~ msgid "Low Stock" #~ msgstr "Свършва запаса" #~ msgid "Form" #~ msgstr "Вид" #~ msgid "Color and icon" #~ msgstr "Цвят и иконка" #~ msgid "Time and amount" #~ msgstr "Време и количество" #~ msgid "Restore" #~ msgstr "Възстановяване" #~ msgid "New entry" #~ msgstr "Нов запис" #~ msgid "Name already exists" #~ msgstr "Името вече съществува" diegopvlk-Dosage-bd9126a/po/ca.po000066400000000000000000000513771514145341100166650ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) 2023 Diego Povliuk # This file is distributed under the license GPLv3-or-later. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: io.github.diegopvlk.Dosage\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-12-19 16:12-0300\n" "PO-Revision-Date: 2026-01-22 13:22+0000\n" "Last-Translator: Àlex Bravo \n" "Language-Team: Catalan \n" "Language: ca\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 5.16-dev\n" #. TRANSLATORS: App name, translate to your language and follow the capitalization #: data/io.github.diegopvlk.Dosage.appdata.xml.in:20 #: data/io.github.diegopvlk.Dosage.desktop.in:3 #: src/utils/getTreatmentsExportFile.js:173 src/utils/saveFiles.js:22 #: src/utils/saveFiles.js:44 src/main.js:60 src/window.js:1060 #: data/ui/window.blp:6 msgid "Dosage" msgstr "Dosi" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:21 msgid "Keep track of your treatments" msgstr "Fes un seguiment dels teus tractaments" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:24 msgid "" "Easily manage and track treatments with Dosage: notifications, history, " "multiple doses, flexible frequency, customization, stock monitoring, and " "duration control" msgstr "" "Gestiona i fes un seguiment dels tractaments fàcilment amb Dosi: " "notificacions, historial, dosis múltiples, freqüència flexible, " "personalització, seguiment d'estocs i control de durada" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:25 msgid "Features:" msgstr "Característiques:" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:27 msgid "Notifications — Get reminders at the right time" msgstr "Notificacions: rep recordatoris en el moment adequat" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:28 msgid "History — See which medications you took, skipped or missed" msgstr "Historial: consulta quins medicaments has pres, saltat o oblidat" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:29 msgid "Dosage management — Multiple doses with different times" msgstr "Gestió de dosis: dosis múltiples amb diferents horaris" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:30 msgid "" "Frequency modes — Every day, specific days, cycle or just when necessary" msgstr "" "Modes de freqüència: cada dia, dies específics, cicle o només quan sigui " "necessari" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:31 msgid "Color and icon — Give a shape for your treatment" msgstr "Color i icona: dona forma al teu tractament" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:32 msgid "Inventory tracking — Monitor your stock and get reminded when it's low" msgstr "" "Seguiment d'inventari: controla el teu estoc i rep un recordatori quan sigui " "baix" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:33 msgid "Duration — Define the start and end dates" msgstr "Durada: Defineix les dates d'inici i de finalització" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:44 msgid "Dosage today window in light theme" msgstr "Finestra de Dosi d'avui en tema clar" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:49 msgid "Dosage preferences window in light theme" msgstr "Finestra de preferències de Dosi en tema clar" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:54 msgid "Dosage edit treatment window in light theme" msgstr "Finestra de tractament d'edició de Dosi en tema clar" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:59 msgid "Dosage today window in dark theme" msgstr "Finestra de Dosi d'avui en tema fosc" #. TRANSLATORS: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/io.github.diegopvlk.Dosage.desktop.in:10 msgid "Medication;Tracker;Reminder;Today;Treatments;Pill;Drug;Remedy;" msgstr "Medicament;Rastreig;Recordatori;Avui;Tractaments;Píndola;Medicació;Remei;" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:232 msgid "Date" msgstr "Data" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:199 msgid "Time" msgstr "Hora" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/med-dialog.blp:61 data/ui/one-time-dialog.blp:49 msgid "Name" msgstr "Nom" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:183 msgid "Dose" msgstr "Dosi" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 msgid "Status" msgstr "Estat" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 msgid "Time Confirmed" msgstr "Hora de confirmació" #: src/utils/getHistoryExportFile.js:38 src/utils/getHistoryExportFile.js:117 #: src/editHistDialog.js:68 src/historyFactory.js:186 msgid "Missed" msgstr "Descuidada" #: src/utils/getHistoryExportFile.js:41 src/utils/getHistoryExportFile.js:121 #: src/historyFactory.js:183 data/ui/edit-hist-dialog.blp:111 msgid "Skipped" msgstr "Saltada" #: src/utils/getHistoryExportFile.js:44 src/utils/getHistoryExportFile.js:55 #: src/utils/getHistoryExportFile.js:125 src/utils/getHistoryExportFile.js:138 #: src/editHistDialog.js:73 src/historyFactory.js:190 #: data/ui/edit-hist-dialog.blp:116 msgid "Confirmed" msgstr "Confirmada" #: src/utils/getHistoryExportFile.js:52 src/utils/getHistoryExportFile.js:134 #: src/editHistDialog.js:56 src/historyFactory.js:178 msgid "Auto-Confirmed" msgstr "Confirmada automàticament" #: src/utils/getHistoryExportFile.js:55 src/utils/getHistoryExportFile.js:138 #: src/editHistDialog.js:74 msgid "Time Unknown" msgstr "Hora desconeguda" #. TRANSLATORS: Context: 1 Pill at 19:00 #: src/utils/getTreatmentsExportFile.js:69 msgid "at" msgstr "a les" #: src/utils/getTreatmentsExportFile.js:89 data/ui/med-dialog.blp:443 msgid "Notes" msgstr "Notes" #: src/utils/getTreatmentsExportFile.js:96 src/utils/locale.js:37 #: src/treatmentsFactory.js:268 msgid "Daily" msgstr "Diàriament" #: src/utils/getTreatmentsExportFile.js:102 src/medDialog.js:428 #: data/ui/med-dialog.blp:459 msgid "Day of Month" msgstr "Dia del mes" #. TRANSLATORS: Context: 2 day(s) on, 1 day(s) off #: src/utils/getTreatmentsExportFile.js:109 msgid "day(s) on" msgstr "" #. TRANSLATORS: Context: 2 day(s) on, 1 day(s) off #: src/utils/getTreatmentsExportFile.js:111 msgid "day(s) off" msgstr "" #: src/utils/getTreatmentsExportFile.js:122 src/todayFactory.js:41 #: src/treatmentsFactory.js:298 data/ui/med-dialog.blp:461 msgid "As Needed" msgstr "Segons necessitat" #: src/utils/getTreatmentsExportFile.js:132 data/ui/med-dialog.blp:764 msgid "Duration" msgstr "Durada" #: src/utils/getTreatmentsExportFile.js:135 msgid "Started on" msgstr "Començat el" #: src/utils/getTreatmentsExportFile.js:136 data/ui/med-dialog.blp:775 msgid "Start" msgstr "Inici" #: src/utils/getTreatmentsExportFile.js:138 src/treatmentsFactory.js:256 msgid "Ended on" msgstr "Acabat el" #: src/utils/getTreatmentsExportFile.js:138 data/ui/med-dialog.blp:817 msgid "End" msgstr "Final" #: src/utils/getTreatmentsExportFile.js:173 src/utils/saveFiles.js:44 #: data/ui/window.blp:234 msgid "Treatments" msgstr "Tractaments" #: src/utils/getTreatmentsExportFile.js:184 msgid "Generated on" msgstr "Generat el" #: src/utils/getTreatmentsExportFile.js:187 msgid "Ongoing" msgstr "En curs" #: src/utils/getTreatmentsExportFile.js:188 msgid "Non-scheduled" msgstr "No programat" #: src/utils/getTreatmentsExportFile.js:189 msgid "Finished" msgstr "Acabat" #: src/utils/locale.js:33 msgid "Weekends" msgstr "Caps de setmana" #: src/utils/locale.js:35 msgid "Weekdays" msgstr "Entre setmana" #: src/utils/saveFiles.js:22 data/ui/window.blp:156 msgid "History" msgstr "Historial" #: src/editHistDialog.js:60 src/editHistDialog.js:89 src/editHistDialog.js:110 msgid "Confirmed At" msgstr "Confirmat a les" #: src/editHistDialog.js:64 src/editHistDialog.js:114 msgid "Skipped At" msgstr "" #: src/historyFactory.js:47 msgid "Select to be Removed" msgstr "" #. TRANSLATORS: "Your Name " #: src/main.js:69 msgid "translator-credits" msgstr "" #: src/main.js:73 msgid "Thanks to These Projects!" msgstr "Gràcies als següents projectes!" #: src/medDialog.js:99 msgid "Edit Treatment" msgstr "Editar el tractament" #: src/medDialog.js:100 data/ui/edit-hist-dialog.blp:30 #: data/ui/preferences.blp:112 data/ui/preferences.blp:132 #: data/ui/refill-dialog.blp:67 msgid "Save" msgstr "Guarda" #: src/medDialog.js:114 msgid "Copy" msgstr "Copia" #: src/medDialog.js:217 msgid "Add Dose" msgstr "Afegir una dosi" #: src/medDialog.js:419 msgid "Choose" msgstr "Escollir" #: src/medDialog.js:429 src/treatmentsFactory.js:274 msgid "Day" msgstr "Dia" #: src/medDialog.js:456 data/ui/med-dialog.blp:458 msgid "Specific Days" msgstr "Dies concrets" #: src/medDialog.js:463 src/treatmentsFactory.js:295 data/ui/med-dialog.blp:460 msgid "Cycle" msgstr "Cicle" #: src/medDialog.js:467 data/ui/med-dialog.blp:452 msgid "Frequency" msgstr "Freqüència" #: src/medDialog.js:500 msgid "Empty Name" msgstr "Nom buit" #: src/medDialog.js:506 msgid "Empty Unit" msgstr "Unitat buida" #: src/medDialog.js:513 msgid "Choose at Least One Day" msgstr "Escull un dia com a mínim" #: src/medDialog.js:527 src/oneTimeDialog.js:187 msgid "Name Already on Treatment List" msgstr "El nom ja existeix a la llista de tractaments" #: src/medDialog.js:542 msgid "Duplicated Time" msgstr "Hora duplicada" #: src/medDialog.js:582 msgid "Are You Sure?" msgstr "N'estàs segur?" #: src/medDialog.js:583 msgid "will be deleted" msgstr "s'eliminarà" #: src/medDialog.js:586 data/ui/edit-hist-dialog.blp:18 #: data/ui/med-dialog.blp:19 msgid "Cancel" msgstr "Cancel·la" #: src/medDialog.js:587 src/treatmentsFactory.js:128 data/ui/med-dialog.blp:865 msgid "Delete" msgstr "Elimina" #: src/oneTimeDialog.js:110 msgid "New" msgstr "Nou" #: src/oneTimeDialog.js:121 data/ui/med-dialog.blp:189 #: data/ui/one-time-dialog.blp:178 msgid "Pill(s)" msgstr "Comprimit(s)" #: src/prefsDialog.js:63 msgid "Accept to allow running in the background and receive notifications" msgstr "Accepta per permetre l'execució en segon pla i rebre notificacions" #: src/prefsDialog.js:74 src/window.js:259 msgid "An Issue Has Occurred" msgstr "S'ha produït un problema" #: src/prefsDialog.js:77 src/window.js:267 src/window.js:289 src/window.js:311 #: src/window.js:329 msgid "Close" msgstr "Tanca" #: src/timeDoseRow.js:34 msgid "Remove Dose" msgstr "Eliminar la dosi" #: src/timeDoseRow.js:40 data/ui/edit-hist-dialog.blp:90 #: data/ui/one-time-dialog.blp:210 msgid "Change Time" msgstr "Canviar l'hora" #: src/todayFactory.js:134 msgid "Change Dose" msgstr "Canviar la dosi" #: src/treatmentsFactory.js:96 src/treatmentsFactory.js:126 #: data/ui/refill-dialog.blp:7 msgid "Refill" msgstr "Reomple" #: src/treatmentsFactory.js:125 msgid "Edit" msgstr "Edita" #: src/treatmentsFactory.js:127 msgid "Duplicate" msgstr "Duplica" #: src/treatmentsFactory.js:146 msgid "Options" msgstr "Opcions" #. TRANSLATORS: keep the %d it's where the number goes #: src/treatmentsFactory.js:244 #, javascript-format msgid "%d Remaining" msgstr "%d restants" #. TRANSLATORS: label for when duration is enabled #: src/treatmentsFactory.js:254 msgid "Starts on" msgstr "Comença el" #: src/treatmentsFactory.js:255 msgid "Until" msgstr "Fins al" #: src/treatmentsFactory.js:283 src/treatmentsFactory.js:286 msgid "Next Dose" msgstr "Propera dosi" #: src/window.js:173 src/window.js:943 msgid "Reminder" msgstr "Recordatori" #. TRANSLATORS: Notification text for when the inventory is low #: src/window.js:175 msgid "You have treatments low in stock" msgstr "Tens tractaments amb estoc baix" #: src/window.js:492 msgid "Show All" msgstr "Mostra'ls tots" #: src/window.js:515 msgid "Show Less" msgstr "Mostra'n menys" #: src/window.js:648 msgid "No Results Found" msgstr "Cap resultat" #: src/window.js:648 src/window.js:1517 msgid "No History" msgstr "Cap historial" #: src/window.js:818 data/ui/window.blp:260 msgid "No Treatments" msgstr "Cap tractament" #: src/window.js:818 msgid "All Done for Today" msgstr "Fet per avui" #: src/window.js:906 src/window.js:1090 data/ui/one-time-dialog.blp:285 #: data/ui/preferences.blp:73 msgid "Confirm" msgstr "Confirma" #: src/window.js:906 msgid "Confirm All" msgstr "Confirma-les totes" #: src/window.js:907 data/ui/preferences.blp:84 data/ui/window.blp:146 msgid "Skip" msgstr "Salta" #: src/window.js:907 msgid "Skip All" msgstr "Salta-les totes" #. TRANSLATORS: keep the %d it's where the number goes #: src/window.js:938 #, javascript-format msgid "and %d more" msgstr "i %d més" #: src/window.js:1090 data/ui/one-time-dialog.blp:7 data/ui/window.blp:133 msgid "One-Time Entry" msgstr "Entrada única" #: src/window.js:1295 data/ui/window.blp:353 msgid "Quit" msgstr "Sortir" #: data/ui/edit-hist-dialog.blp:7 msgid "Edit Entry" msgstr "Editar l'entrada" #: data/ui/med-dialog.blp:7 msgid "New Treatment" msgstr "Nou tractament" #: data/ui/med-dialog.blp:31 data/ui/window.blp:283 msgid "Add" msgstr "Afegeix" #: data/ui/med-dialog.blp:69 data/ui/one-time-dialog.blp:58 msgid "Color" msgstr "Color" #. TRANSLATORS: Tooltip for the colors (from Default until Purple) #: data/ui/med-dialog.blp:94 data/ui/one-time-dialog.blp:83 msgid "Default" msgstr "Per defecte" #: data/ui/med-dialog.blp:106 data/ui/one-time-dialog.blp:95 msgid "Red" msgstr "Vermell" #: data/ui/med-dialog.blp:118 data/ui/one-time-dialog.blp:107 msgid "Orange" msgstr "Taronja" #: data/ui/med-dialog.blp:130 data/ui/one-time-dialog.blp:119 msgid "Yellow" msgstr "Groc" #: data/ui/med-dialog.blp:142 data/ui/one-time-dialog.blp:131 msgid "Green" msgstr "Verd" #: data/ui/med-dialog.blp:154 data/ui/one-time-dialog.blp:143 msgid "Cyan" msgstr "Cian" #: data/ui/med-dialog.blp:166 data/ui/one-time-dialog.blp:155 msgid "Blue" msgstr "Blau" #: data/ui/med-dialog.blp:178 data/ui/one-time-dialog.blp:167 msgid "Purple" msgstr "Morat" #: data/ui/med-dialog.blp:188 data/ui/one-time-dialog.blp:177 msgid "Unit" msgstr "Unitat" #: data/ui/med-dialog.blp:197 msgid "Icon" msgstr "Icona" #. TRANSLATORS: Tooltip for the icons (from Pill until Potion) #: data/ui/med-dialog.blp:226 msgid "Pill" msgstr "Comprimit" #: data/ui/med-dialog.blp:242 msgid "Alternative Pill" msgstr "Comprimit alternatiu" #: data/ui/med-dialog.blp:258 msgid "Capsule" msgstr "Càpsula" #: data/ui/med-dialog.blp:274 msgid "Round Pill" msgstr "Comprimit rodó" #: data/ui/med-dialog.blp:290 msgid "Alternative Round Pill" msgstr "Comprimit rodó alternatiu" #: data/ui/med-dialog.blp:306 msgid "Ampoule" msgstr "Ampul·la" #: data/ui/med-dialog.blp:322 msgid "Injection" msgstr "Injecció" #: data/ui/med-dialog.blp:338 msgid "Square Pill" msgstr "Comprimit quadrat" #: data/ui/med-dialog.blp:354 msgid "Alternative Square Pill" msgstr "Comprimit quadrat alternatiu" #: data/ui/med-dialog.blp:370 msgid "Triangle pill" msgstr "Comprimit triangular" #: data/ui/med-dialog.blp:386 msgid "Alternative Triangle Pill" msgstr "Comprimit triangular alternatiu" #: data/ui/med-dialog.blp:402 msgid "Bottle" msgstr "Ampolla" #: data/ui/med-dialog.blp:418 msgid "Drops" msgstr "Gotes" #: data/ui/med-dialog.blp:434 msgid "Potion" msgstr "Xarop" #: data/ui/med-dialog.blp:457 msgid "Every Day" msgstr "Cada dia" #: data/ui/med-dialog.blp:473 msgid "Choose Days" msgstr "Escollir els dies" #: data/ui/med-dialog.blp:572 msgid "Choose Day" msgstr "Escollir el dia" #: data/ui/med-dialog.blp:617 msgid "Change Cycle" msgstr "Canviar el cicle" #: data/ui/med-dialog.blp:642 msgid "Days Active" msgstr "Dies actius" #: data/ui/med-dialog.blp:656 msgid "Days Inactive" msgstr "Dies inactius" #. TRANSLATORS: Day in cycle, try to keep it short #: data/ui/med-dialog.blp:671 msgid "Today is Cycle Day…" msgstr "Dia del cicle avui…" #: data/ui/med-dialog.blp:694 msgid "Increase Notification Priority" msgstr "Augmenta la prioritat de notificació" #: data/ui/med-dialog.blp:695 msgid "Show in fullscreen mode or with 'Do Not Disturb' enabled" msgstr "Mostra en mode de pantalla completa o amb \"No molestar\" activat" #: data/ui/med-dialog.blp:699 msgid "Recurring Notifications" msgstr "Notificacions recurrents" #: data/ui/med-dialog.blp:700 msgid "Renotify until it's confirmed or skipped" msgstr "Torna a notificar-ho fins que es confirmi o s'ometi" #: data/ui/med-dialog.blp:705 msgid "Interval in Minutes" msgstr "Interval en minuts" #: data/ui/med-dialog.blp:718 data/ui/refill-dialog.blp:36 msgid "Inventory" msgstr "Inventari" #: data/ui/med-dialog.blp:719 msgid "Manage your stock" msgstr "Gestiona el teu estoc" #: data/ui/med-dialog.blp:725 msgid "Current" msgstr "Actual" #: data/ui/med-dialog.blp:738 msgid "Remind Me At" msgstr "Recorda'm en arribar a" #: data/ui/med-dialog.blp:751 msgid "Refill Amount" msgstr "Quantitat" #: data/ui/med-dialog.blp:765 msgid "Set start and end dates" msgstr "Estableix dates d'inici i finalització" #: data/ui/med-dialog.blp:785 data/ui/med-dialog.blp:827 #: data/ui/one-time-dialog.blp:243 msgid "Choose Date" msgstr "Escollir una data" #: data/ui/med-dialog.blp:855 msgid "Mark as Confirmed" msgstr "Marcar com a confirmada" #: data/ui/med-dialog.blp:856 msgid "" "If not manually confirmed or skipped, it will be recorded as confirmed in " "history, reducing stock if enabled" msgstr "" "Si no es confirma o omet manualment, es registrarà com a confirmada a " "l'historial, reduint l'estoc si està activat" #: data/ui/one-time-dialog.blp:44 msgid "From Treatment List" msgstr "De la llista de tractaments" #: data/ui/one-time-dialog.blp:182 msgid "Amount" msgstr "Quantitat" #: data/ui/preferences.blp:7 data/ui/window.blp:338 msgid "Preferences" msgstr "Preferències" #: data/ui/preferences.blp:17 msgid "Auto-Start at Login" msgstr "Inicia automàticament en iniciar la sessió" #: data/ui/preferences.blp:28 msgid "Auto-Clear History" msgstr "Esborra automàticament l'historial" #: data/ui/preferences.blp:29 msgid "Keeps a maximum of 30 days" msgstr "Es conserva un màxim de 30 dies" #: data/ui/preferences.blp:40 msgid "Low Stock Notification" msgstr "Notificació d'estoc baix" #: data/ui/preferences.blp:41 msgid "Send reminders when treatments are low in stock" msgstr "Envia recordatoris quan els tractaments estiguin baixos d'estoc" #: data/ui/preferences.blp:52 msgid "Notification Sound" msgstr "So de les notificacions" #: data/ui/preferences.blp:63 msgid "Notification Buttons" msgstr "Botons de les notificacions" #: data/ui/preferences.blp:64 msgid "Show or hide confirm/skip" msgstr "Mostra o amaga \"confirma/salta\"" #: data/ui/preferences.blp:98 msgid "Export History As" msgstr "Exporta l'historial com a" #: data/ui/preferences.blp:121 msgid "Export Treatments As" msgstr "Exporta els tractaments com a" #: data/ui/shortcuts-dialog.blp:8 msgid "Shortcuts" msgstr "Dreceres" #: data/ui/shortcuts-dialog.blp:11 msgctxt "shortcut window" msgid "Show/Hide 'As Needed'" msgstr "Mostra o amaga \"Segons sigui necessari\"" #: data/ui/shortcuts-dialog.blp:16 msgctxt "shortcut window" msgid "New One-Time Entry" msgstr "Entrada única nova" #: data/ui/shortcuts-dialog.blp:21 msgctxt "shortcut window" msgid "Add New Treatment" msgstr "Afegir nou tractament" #: data/ui/shortcuts-dialog.blp:26 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Mostra les dreceres" #: data/ui/shortcuts-dialog.blp:31 msgctxt "shortcut window" msgid "Quit" msgstr "Sortir" #: data/ui/window.blp:23 msgid "Show/Hide 'As Needed'" msgstr "Mostra o amaga \"Segons sigui necessari\"" #: data/ui/window.blp:31 msgid "Search" msgstr "Cerca" #: data/ui/window.blp:39 msgid "Sort Treatments" msgstr "Ordenar els tractaments" #: data/ui/window.blp:48 msgid "Main Menu" msgstr "Menú principal" #: data/ui/window.blp:61 msgid "Search…" msgstr "Cercar…" #: data/ui/window.blp:71 msgid "Today" msgstr "Avui" #: data/ui/window.blp:117 data/ui/window.blp:210 msgid "Unselect" msgstr "Desfer la selecció" #: data/ui/window.blp:220 msgid "Remove Entries" msgstr "Elimina les entrades" #: data/ui/window.blp:300 msgid "Name Ascending" msgstr "Per nom (ascendent)" #: data/ui/window.blp:306 msgid "Remaining Stock (Lowest First)" msgstr "Per estoc disponible (més baix primer)" #: data/ui/window.blp:312 msgid "Remaining Stock (Highest First)" msgstr "Per estoc disponible (més alt primer)" #: data/ui/window.blp:318 msgid "As Needed Last" msgstr "Segons necessitat últims" #: data/ui/window.blp:324 msgid "Ended Last" msgstr "Acabats últims" #: data/ui/window.blp:330 msgid "As Needed/Ended Last" msgstr "Segons necessitat i acabats últims" #: data/ui/window.blp:343 msgid "Keyboard Shortcuts" msgstr "Dreceres del teclat" #: data/ui/window.blp:348 msgid "About Dosage" msgstr "Quant a Dosi" #~ msgid "Empty Treatments" #~ msgstr "Cap tractament" #~ msgid "Empty History" #~ msgstr "Historial buit" #~ msgid "No Treatments Added" #~ msgstr "Cap tractament afegit" diegopvlk-Dosage-bd9126a/po/cs.po000066400000000000000000000546171514145341100167070ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) 2023 Diego Povliuk # This file is distributed under the license GPLv3-or-later. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: io.github.diegopvlk.Dosage\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-12-19 16:12-0300\n" "PO-Revision-Date: 2025-02-10 23:31+0000\n" "Last-Translator: Diego Povliuk \n" "Language-Team: Czech \n" "Language: cs\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=((n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2);\n" "X-Generator: Weblate 5.10-dev\n" #. TRANSLATORS: App name, translate to your language and follow the capitalization #: data/io.github.diegopvlk.Dosage.appdata.xml.in:20 #: data/io.github.diegopvlk.Dosage.desktop.in:3 #: src/utils/getTreatmentsExportFile.js:173 src/utils/saveFiles.js:22 #: src/utils/saveFiles.js:44 src/main.js:60 src/window.js:1060 #: data/ui/window.blp:6 msgid "Dosage" msgstr "Dávkování" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:21 msgid "Keep track of your treatments" msgstr "Mějte přehled o svých léčbách" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:24 msgid "" "Easily manage and track treatments with Dosage: notifications, history, " "multiple doses, flexible frequency, customization, stock monitoring, and " "duration control" msgstr "" "Jednoduše spravujte a sledujte léčby s Dávkováním: Upomínky, Historie, Více " "Dávek, Flexibilní Frekvence, Přizpůsobení, Sledování Zásob a Kontrola " "Průběhu Léčby" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:25 msgid "Features:" msgstr "Funkce:" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:27 msgid "Notifications — Get reminders at the right time" msgstr "Upomínky - Dostanete připomínku ve správný čas" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:28 msgid "History — See which medications you took, skipped or missed" msgstr "" "Historie - Sledujete které léky jste si vzali, které jste vynechali a na " "které jste zapomněli" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:29 msgid "Dosage management — Multiple doses with different times" msgstr "Správa dávkování - Několik dávek v různých časech" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:30 msgid "" "Frequency modes — Every day, specific days, cycle or just when necessary" msgstr "" "Možnosti opakování - Každý Den, Vybrané Dny, Cyklus nebo Jen Když Je Potřeba" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:31 msgid "Color and icon — Give a shape for your treatment" msgstr "Barva a ikona - Dejte tvar vaší léčbě" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:32 msgid "Inventory tracking — Monitor your stock and get reminded when it's low" msgstr "" "Správa seznamu - Sledujte vaše zásoby a dostaňte připomínku když vám začnou " "docházet" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:33 msgid "Duration — Define the start and end dates" msgstr "Průběh - Nastavte si počáteční a koncové datum léčby" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:44 msgid "Dosage today window in light theme" msgstr "Dávkování, okno \"Dnes\" ve světlém režimu" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:49 msgid "Dosage preferences window in light theme" msgstr "Dávkování, okno \"Nastavení\" ve světlém režimu" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:54 msgid "Dosage edit treatment window in light theme" msgstr "Dávkování, okno \"Upravit léčbu\" ve světlém režimu" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:59 msgid "Dosage today window in dark theme" msgstr "Dávkování, okno \"Dnes\" ve tmavém režimu" #. TRANSLATORS: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/io.github.diegopvlk.Dosage.desktop.in:10 msgid "Medication;Tracker;Reminder;Today;Treatments;Pill;Drug;Remedy;" msgstr "Léčba;Sledovač;Upomínka;Dnes;Léčby;Pilulka;Lék;" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:232 msgid "Date" msgstr "Datum" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:199 msgid "Time" msgstr "Čas" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/med-dialog.blp:61 data/ui/one-time-dialog.blp:49 msgid "Name" msgstr "Jméno" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:183 msgid "Dose" msgstr "Dávka" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 msgid "Status" msgstr "Stav" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 msgid "Time Confirmed" msgstr "Potvrdit" #: src/utils/getHistoryExportFile.js:38 src/utils/getHistoryExportFile.js:117 #: src/editHistDialog.js:68 src/historyFactory.js:186 msgid "Missed" msgstr "Zapomenutý" #: src/utils/getHistoryExportFile.js:41 src/utils/getHistoryExportFile.js:121 #: src/historyFactory.js:183 data/ui/edit-hist-dialog.blp:111 msgid "Skipped" msgstr "Přeskočeno" #: src/utils/getHistoryExportFile.js:44 src/utils/getHistoryExportFile.js:55 #: src/utils/getHistoryExportFile.js:125 src/utils/getHistoryExportFile.js:138 #: src/editHistDialog.js:73 src/historyFactory.js:190 #: data/ui/edit-hist-dialog.blp:116 msgid "Confirmed" msgstr "Potvrzeno" #: src/utils/getHistoryExportFile.js:52 src/utils/getHistoryExportFile.js:134 #: src/editHistDialog.js:56 src/historyFactory.js:178 msgid "Auto-Confirmed" msgstr "Automaticky Potvrzeno" #: src/utils/getHistoryExportFile.js:55 src/utils/getHistoryExportFile.js:138 #: src/editHistDialog.js:74 msgid "Time Unknown" msgstr "Čas Neznámý" #. TRANSLATORS: Context: 1 Pill at 19:00 #: src/utils/getTreatmentsExportFile.js:69 #, fuzzy #| msgid "Date" msgid "at" msgstr "Datum" #: src/utils/getTreatmentsExportFile.js:89 data/ui/med-dialog.blp:443 msgid "Notes" msgstr "Poznámky" #: src/utils/getTreatmentsExportFile.js:96 src/utils/locale.js:37 #: src/treatmentsFactory.js:268 msgid "Daily" msgstr "Denně" #: src/utils/getTreatmentsExportFile.js:102 src/medDialog.js:428 #: data/ui/med-dialog.blp:459 msgid "Day of Month" msgstr "Den v Měsíci" #. TRANSLATORS: Context: 2 day(s) on, 1 day(s) off #: src/utils/getTreatmentsExportFile.js:109 msgid "day(s) on" msgstr "" #. TRANSLATORS: Context: 2 day(s) on, 1 day(s) off #: src/utils/getTreatmentsExportFile.js:111 msgid "day(s) off" msgstr "" #: src/utils/getTreatmentsExportFile.js:122 src/todayFactory.js:41 #: src/treatmentsFactory.js:298 data/ui/med-dialog.blp:461 msgid "As Needed" msgstr "Dle potřeby" #: src/utils/getTreatmentsExportFile.js:132 data/ui/med-dialog.blp:764 msgid "Duration" msgstr "Průběh" #: src/utils/getTreatmentsExportFile.js:135 #, fuzzy #| msgid "Starts On" msgid "Started on" msgstr "Počáteční Datum" #: src/utils/getTreatmentsExportFile.js:136 data/ui/med-dialog.blp:775 #, fuzzy #| msgid "Starts On" msgid "Start" msgstr "Počáteční Datum" #: src/utils/getTreatmentsExportFile.js:138 src/treatmentsFactory.js:256 msgid "Ended on" msgstr "Ukončeno dne" #: src/utils/getTreatmentsExportFile.js:138 data/ui/med-dialog.blp:817 #, fuzzy #| msgid "Ends On" msgid "End" msgstr "Koncové Datum" #: src/utils/getTreatmentsExportFile.js:173 src/utils/saveFiles.js:44 #: data/ui/window.blp:234 msgid "Treatments" msgstr "Léčby" #: src/utils/getTreatmentsExportFile.js:184 #, fuzzy #| msgctxt "shortcut window" #| msgid "General" msgid "Generated on" msgstr "Obecné" #: src/utils/getTreatmentsExportFile.js:187 msgid "Ongoing" msgstr "" #: src/utils/getTreatmentsExportFile.js:188 msgid "Non-scheduled" msgstr "" #: src/utils/getTreatmentsExportFile.js:189 msgid "Finished" msgstr "" #: src/utils/locale.js:33 msgid "Weekends" msgstr "Víkendy" #: src/utils/locale.js:35 msgid "Weekdays" msgstr "Všední Dny" #: src/utils/saveFiles.js:22 data/ui/window.blp:156 msgid "History" msgstr "Historie" #: src/editHistDialog.js:60 src/editHistDialog.js:89 src/editHistDialog.js:110 msgid "Confirmed At" msgstr "Potvrzený V" #: src/editHistDialog.js:64 src/editHistDialog.js:114 msgid "Skipped At" msgstr "Přeskočený V" #: src/historyFactory.js:47 msgid "Select to be Removed" msgstr "Vyberte K Odstranění" #. TRANSLATORS: "Your Name " #: src/main.js:69 msgid "translator-credits" msgstr "Jindřich Šilhan " #: src/main.js:73 msgid "Thanks to These Projects!" msgstr "Děkujeme Následujícím Projektům!" #: src/medDialog.js:99 msgid "Edit Treatment" msgstr "Upravit Léčbu" #: src/medDialog.js:100 data/ui/edit-hist-dialog.blp:30 #: data/ui/preferences.blp:112 data/ui/preferences.blp:132 #: data/ui/refill-dialog.blp:67 msgid "Save" msgstr "Uložit" #: src/medDialog.js:114 msgid "Copy" msgstr "Kopírovat" #: src/medDialog.js:217 msgid "Add Dose" msgstr "Přidat Dávku" #: src/medDialog.js:419 msgid "Choose" msgstr "Vybrat" #: src/medDialog.js:429 src/treatmentsFactory.js:274 msgid "Day" msgstr "Den" #: src/medDialog.js:456 data/ui/med-dialog.blp:458 msgid "Specific Days" msgstr "Vybrané Dny" #: src/medDialog.js:463 src/treatmentsFactory.js:295 data/ui/med-dialog.blp:460 msgid "Cycle" msgstr "Cyklus" #: src/medDialog.js:467 data/ui/med-dialog.blp:452 msgid "Frequency" msgstr "Frekvence" #: src/medDialog.js:500 msgid "Empty Name" msgstr "Prázné Jméno" #: src/medDialog.js:506 msgid "Empty Unit" msgstr "Prázdná Jednotka" #: src/medDialog.js:513 msgid "Choose at Least One Day" msgstr "Vyberte Alespoň Jeden Den" #: src/medDialog.js:527 src/oneTimeDialog.js:187 msgid "Name Already on Treatment List" msgstr "Jméno Již Na Seznamu Ošetření" #: src/medDialog.js:542 msgid "Duplicated Time" msgstr "Duplikovaný Čas" #: src/medDialog.js:582 msgid "Are You Sure?" msgstr "Jste Si Jisti?" #: src/medDialog.js:583 msgid "will be deleted" msgstr "bude smazán" #: src/medDialog.js:586 data/ui/edit-hist-dialog.blp:18 #: data/ui/med-dialog.blp:19 msgid "Cancel" msgstr "Zrušit" #: src/medDialog.js:587 src/treatmentsFactory.js:128 data/ui/med-dialog.blp:865 msgid "Delete" msgstr "Smazat" #: src/oneTimeDialog.js:110 msgid "New" msgstr "Nový" #: src/oneTimeDialog.js:121 data/ui/med-dialog.blp:189 #: data/ui/one-time-dialog.blp:178 msgid "Pill(s)" msgstr "Pilulka(y)" #: src/prefsDialog.js:63 msgid "Accept to allow running in the background and receive notifications" msgstr "" "Potvrďte abyste umožnili aplikaci běžet na pozadí a zobrazovat notifikace" #: src/prefsDialog.js:74 src/window.js:259 msgid "An Issue Has Occurred" msgstr "Vyskytl Se Problém" #: src/prefsDialog.js:77 src/window.js:267 src/window.js:289 src/window.js:311 #: src/window.js:329 msgid "Close" msgstr "Zavřít" #: src/timeDoseRow.js:34 msgid "Remove Dose" msgstr "Odebrat Dávku" #: src/timeDoseRow.js:40 data/ui/edit-hist-dialog.blp:90 #: data/ui/one-time-dialog.blp:210 msgid "Change Time" msgstr "Změnit Čas" #: src/todayFactory.js:134 msgid "Change Dose" msgstr "Změnit Dávku" #: src/treatmentsFactory.js:96 src/treatmentsFactory.js:126 #: data/ui/refill-dialog.blp:7 msgid "Refill" msgstr "Doplnit" #: src/treatmentsFactory.js:125 msgid "Edit" msgstr "Upravit" #: src/treatmentsFactory.js:127 msgid "Duplicate" msgstr "Duplikovat" #: src/treatmentsFactory.js:146 msgid "Options" msgstr "Možnosti" #. TRANSLATORS: keep the %d it's where the number goes #: src/treatmentsFactory.js:244 #, javascript-format msgid "%d Remaining" msgstr "%d Zbývá" #. TRANSLATORS: label for when duration is enabled #: src/treatmentsFactory.js:254 msgid "Starts on" msgstr "Počáteční datum" #: src/treatmentsFactory.js:255 msgid "Until" msgstr "Dokud" #: src/treatmentsFactory.js:283 src/treatmentsFactory.js:286 msgid "Next Dose" msgstr "Další Dávka" #: src/window.js:173 src/window.js:943 msgid "Reminder" msgstr "Připomínka" #. TRANSLATORS: Notification text for when the inventory is low #: src/window.js:175 msgid "You have treatments low in stock" msgstr "Docházejí Vám Léky" #: src/window.js:492 msgid "Show All" msgstr "Zobrazit Vše" #: src/window.js:515 msgid "Show Less" msgstr "Zobrazit Méně" #: src/window.js:648 msgid "No Results Found" msgstr "Nebyly Nalezeny Žádné Výsledky" #: src/window.js:648 src/window.js:1517 #, fuzzy #| msgid "History" msgid "No History" msgstr "Historie" #: src/window.js:818 data/ui/window.blp:260 #, fuzzy #| msgid "Treatments" msgid "No Treatments" msgstr "Léčby" #: src/window.js:818 msgid "All Done for Today" msgstr "Pro Dnešek Máte Hotovo" #: src/window.js:906 src/window.js:1090 data/ui/one-time-dialog.blp:285 #: data/ui/preferences.blp:73 msgid "Confirm" msgstr "Potvrdit" #: src/window.js:906 msgid "Confirm All" msgstr "Potvrdit Všechny" #: src/window.js:907 data/ui/preferences.blp:84 data/ui/window.blp:146 msgid "Skip" msgstr "Přeskočit" #: src/window.js:907 msgid "Skip All" msgstr "Přeskočit Všechny" #. TRANSLATORS: keep the %d it's where the number goes #: src/window.js:938 #, javascript-format msgid "and %d more" msgstr "a ještě %d" #: src/window.js:1090 data/ui/one-time-dialog.blp:7 data/ui/window.blp:133 msgid "One-Time Entry" msgstr "Jednorázový Záznam" #: src/window.js:1295 data/ui/window.blp:353 msgid "Quit" msgstr "Konec" #: data/ui/edit-hist-dialog.blp:7 msgid "Edit Entry" msgstr "Upravit Záznam" #: data/ui/med-dialog.blp:7 msgid "New Treatment" msgstr "Nová Léčba" #: data/ui/med-dialog.blp:31 data/ui/window.blp:283 msgid "Add" msgstr "Přidat" #: data/ui/med-dialog.blp:69 data/ui/one-time-dialog.blp:58 msgid "Color" msgstr "Barva" #. TRANSLATORS: Tooltip for the colors (from Default until Purple) #: data/ui/med-dialog.blp:94 data/ui/one-time-dialog.blp:83 msgid "Default" msgstr "Výchozí" #: data/ui/med-dialog.blp:106 data/ui/one-time-dialog.blp:95 msgid "Red" msgstr "Červená" #: data/ui/med-dialog.blp:118 data/ui/one-time-dialog.blp:107 msgid "Orange" msgstr "Oranžová" #: data/ui/med-dialog.blp:130 data/ui/one-time-dialog.blp:119 msgid "Yellow" msgstr "Žlutá" #: data/ui/med-dialog.blp:142 data/ui/one-time-dialog.blp:131 msgid "Green" msgstr "Zelená" #: data/ui/med-dialog.blp:154 data/ui/one-time-dialog.blp:143 msgid "Cyan" msgstr "Azurová" #: data/ui/med-dialog.blp:166 data/ui/one-time-dialog.blp:155 msgid "Blue" msgstr "Modrá" #: data/ui/med-dialog.blp:178 data/ui/one-time-dialog.blp:167 msgid "Purple" msgstr "Fialová" #: data/ui/med-dialog.blp:188 data/ui/one-time-dialog.blp:177 msgid "Unit" msgstr "Jednotka" #: data/ui/med-dialog.blp:197 msgid "Icon" msgstr "Ikona" #. TRANSLATORS: Tooltip for the icons (from Pill until Potion) #: data/ui/med-dialog.blp:226 msgid "Pill" msgstr "Pilulka" #: data/ui/med-dialog.blp:242 msgid "Alternative Pill" msgstr "Alternativní Pilulka" #: data/ui/med-dialog.blp:258 msgid "Capsule" msgstr "Kapsle" #: data/ui/med-dialog.blp:274 msgid "Round Pill" msgstr "Kulatá Pilulka" #: data/ui/med-dialog.blp:290 msgid "Alternative Round Pill" msgstr "Alternativní Kulatá Pilulka" #: data/ui/med-dialog.blp:306 msgid "Ampoule" msgstr "Ampule" #: data/ui/med-dialog.blp:322 msgid "Injection" msgstr "Injekce" #: data/ui/med-dialog.blp:338 msgid "Square Pill" msgstr "Čtvercová Pilulka" #: data/ui/med-dialog.blp:354 msgid "Alternative Square Pill" msgstr "Alternativní Čtvercová Pilulka" #: data/ui/med-dialog.blp:370 msgid "Triangle pill" msgstr "Trojúhelníková pilulka" #: data/ui/med-dialog.blp:386 msgid "Alternative Triangle Pill" msgstr "Alternativní Trojúhelníková Pilulka" #: data/ui/med-dialog.blp:402 msgid "Bottle" msgstr "Láhev" #: data/ui/med-dialog.blp:418 msgid "Drops" msgstr "Kapky" #: data/ui/med-dialog.blp:434 msgid "Potion" msgstr "Nápoj" #: data/ui/med-dialog.blp:457 msgid "Every Day" msgstr "Každý Den" #: data/ui/med-dialog.blp:473 msgid "Choose Days" msgstr "Vybrat Dny" #: data/ui/med-dialog.blp:572 msgid "Choose Day" msgstr "Vyberte Den" #: data/ui/med-dialog.blp:617 msgid "Change Cycle" msgstr "Změnit Cyklus" #: data/ui/med-dialog.blp:642 msgid "Days Active" msgstr "Aktivní Dny" #: data/ui/med-dialog.blp:656 msgid "Days Inactive" msgstr "Neaktivní Dny" #. TRANSLATORS: Day in cycle, try to keep it short #: data/ui/med-dialog.blp:671 msgid "Today is Cycle Day…" msgstr "Dnes je Den Cyklu…" #: data/ui/med-dialog.blp:694 msgid "Increase Notification Priority" msgstr "Zvýšit Prioritu Upomínky" #: data/ui/med-dialog.blp:695 msgid "Show in fullscreen mode or with 'Do Not Disturb' enabled" msgstr "" "Způsobí, že se oznámení zobrazí v režimu celé obrazovky nebo i když je " "povolena funkce 'Režim Nerušit'" #: data/ui/med-dialog.blp:699 msgid "Recurring Notifications" msgstr "Opakující Se Upomínky" #: data/ui/med-dialog.blp:700 msgid "Renotify until it's confirmed or skipped" msgstr "Upomínat znova dokud není potvrzený nebo přeskočený" #: data/ui/med-dialog.blp:705 msgid "Interval in Minutes" msgstr "Interval v Minutách" #: data/ui/med-dialog.blp:718 data/ui/refill-dialog.blp:36 msgid "Inventory" msgstr "Inventář" #: data/ui/med-dialog.blp:719 msgid "Manage your stock" msgstr "Spravujte své zásoby" #: data/ui/med-dialog.blp:725 msgid "Current" msgstr "Momentálně" #: data/ui/med-dialog.blp:738 msgid "Remind Me At" msgstr "Připomeňte Mi Na" #: data/ui/med-dialog.blp:751 msgid "Refill Amount" msgstr "Částka Pro Doplnění" #: data/ui/med-dialog.blp:765 msgid "Set start and end dates" msgstr "Nastavte počáteční a koncové datum" #: data/ui/med-dialog.blp:785 data/ui/med-dialog.blp:827 #: data/ui/one-time-dialog.blp:243 msgid "Choose Date" msgstr "Vyberte Datum" #: data/ui/med-dialog.blp:855 msgid "Mark as Confirmed" msgstr "Označit Jako Potvrzeno" #: data/ui/med-dialog.blp:856 msgid "" "If not manually confirmed or skipped, it will be recorded as confirmed in " "history, reducing stock if enabled" msgstr "" "Pokud není ručně potvrzeno nebo přeskočeno, bude zaznamenáno jako potvrzeno " "v historii a sníží zásoby, pokud je povoleno" #: data/ui/one-time-dialog.blp:44 msgid "From Treatment List" msgstr "Ze Seznamu Léčeb" #: data/ui/one-time-dialog.blp:182 msgid "Amount" msgstr "Množství" #: data/ui/preferences.blp:7 data/ui/window.blp:338 msgid "Preferences" msgstr "Nastavení" #: data/ui/preferences.blp:17 msgid "Auto-Start at Login" msgstr "Zapnout Při Přihlášení" #: data/ui/preferences.blp:28 msgid "Auto-Clear History" msgstr "Automaticky Vymazat Historii" #: data/ui/preferences.blp:29 msgid "Keeps a maximum of 30 days" msgstr "Uchovává maximálně 30 dní" #: data/ui/preferences.blp:40 msgid "Low Stock Notification" msgstr "Oznámení O Nízkém Stavu Zásob" #: data/ui/preferences.blp:41 msgid "Send reminders when treatments are low in stock" msgstr "Odesílat připomínky, když jsou léčby s nízkým stavem zásob" #: data/ui/preferences.blp:52 msgid "Notification Sound" msgstr "Zvuk Notifikace" #: data/ui/preferences.blp:63 msgid "Notification Buttons" msgstr "Akce Notifikace" #: data/ui/preferences.blp:64 msgid "Show or hide confirm/skip" msgstr "Zobrazit nebo skrýt tlačítka potvrdit/přeskočit" #: data/ui/preferences.blp:98 #, fuzzy #| msgid "Export History as CSV" msgid "Export History As" msgstr "Exportovat Historii Jako CSV" #: data/ui/preferences.blp:121 #, fuzzy #| msgid "Empty Treatments" msgid "Export Treatments As" msgstr "Prázdné Léčby" #: data/ui/shortcuts-dialog.blp:8 #, fuzzy #| msgctxt "shortcut window" #| msgid "Show Shortcuts" msgid "Shortcuts" msgstr "Zobrazit Zkratky" #: data/ui/shortcuts-dialog.blp:11 #, fuzzy #| msgid "Show/Hide 'As Needed'" msgctxt "shortcut window" msgid "Show/Hide 'As Needed'" msgstr "Zobrazit/skrýt „Dle potřeby“" #: data/ui/shortcuts-dialog.blp:16 #, fuzzy #| msgid "One-Time Entry" msgctxt "shortcut window" msgid "New One-Time Entry" msgstr "Jednorázový Záznam" #: data/ui/shortcuts-dialog.blp:21 #, fuzzy #| msgid "New Treatment" msgctxt "shortcut window" msgid "Add New Treatment" msgstr "Nová Léčba" #: data/ui/shortcuts-dialog.blp:26 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Zobrazit Zkratky" #: data/ui/shortcuts-dialog.blp:31 msgctxt "shortcut window" msgid "Quit" msgstr "Konec" #: data/ui/window.blp:23 msgid "Show/Hide 'As Needed'" msgstr "Zobrazit/skrýt „Dle potřeby“" #: data/ui/window.blp:31 msgid "Search" msgstr "Hledat" #: data/ui/window.blp:39 #, fuzzy #| msgid "Treatments" msgid "Sort Treatments" msgstr "Léčby" #: data/ui/window.blp:48 msgid "Main Menu" msgstr "Hlavní Menu" #: data/ui/window.blp:61 msgid "Search…" msgstr "Hledat…" #: data/ui/window.blp:71 msgid "Today" msgstr "Dnes" #: data/ui/window.blp:117 data/ui/window.blp:210 msgid "Unselect" msgstr "Zrušit výběr" #: data/ui/window.blp:220 msgid "Remove Entries" msgstr "Odebrat Položky" #: data/ui/window.blp:300 msgid "Name Ascending" msgstr "" #: data/ui/window.blp:306 msgid "Remaining Stock (Lowest First)" msgstr "" #: data/ui/window.blp:312 msgid "Remaining Stock (Highest First)" msgstr "" #: data/ui/window.blp:318 #, fuzzy #| msgid "As Needed" msgid "As Needed Last" msgstr "Dle potřeby" #: data/ui/window.blp:324 #, fuzzy #| msgid "Ended on" msgid "Ended Last" msgstr "Ukončeno dne" #: data/ui/window.blp:330 #, fuzzy #| msgid "As Needed" msgid "As Needed/Ended Last" msgstr "Dle potřeby" #: data/ui/window.blp:343 #, fuzzy #| msgctxt "shortcut window" #| msgid "Show Shortcuts" msgid "Keyboard Shortcuts" msgstr "Zobrazit Zkratky" #: data/ui/window.blp:348 msgid "About Dosage" msgstr "O Dávkování" #~ msgid "Empty Treatments" #~ msgstr "Prázdné Léčby" #~ msgid "Empty History" #~ msgstr "Prázdná Historie" #~ msgid "No Treatments Added" #~ msgstr "Zatím Nebyly Přidány Žádné Léčby" #~ msgctxt "shortcut window" #~ msgid "General" #~ msgstr "Obecné" #~ msgctxt "shortcut window" #~ msgid "Preferences" #~ msgstr "Nastavení" #~ msgid "After meal" #~ msgstr "Po jídle" #~ msgid "Refill Stock" #~ msgstr "Doplňování Zásob" #~ msgid "Low Stock" #~ msgstr "Malá Zásoba" #~ msgid "Form" #~ msgstr "Forma" #~ msgid "Color and icon" #~ msgstr "Barva a ikona" #~ msgid "Time and amount" #~ msgstr "Čas a množství" #~ msgid "Restore" #~ msgstr "Obnovit" #~ msgid "New entry" #~ msgstr "Nový záznam" #~ msgid "Name already exists" #~ msgstr "Jméno již existuje" #~ msgid "Add to history" #~ msgstr "Přidat záznam" #~ msgid "medication" #~ msgstr "Léčba" #~ msgid "tracker" #~ msgstr "Připomínkovač" #~ msgid "treatments" #~ msgstr "léčby" #~ msgid "pill" #~ msgstr "pilulka" #~ msgid "drug" #~ msgstr "léčivo" #~ msgid "remedy" #~ msgstr "prostředek" diegopvlk-Dosage-bd9126a/po/da.po000066400000000000000000000524631514145341100166630ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) 2023 Diego Povliuk # This file is distributed under the license GPLv3-or-later. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: io.github.diegopvlk.Dosage\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-12-19 16:12-0300\n" "PO-Revision-Date: 2025-02-24 18:10+0000\n" "Last-Translator: MiniClemme \n" "Language-Team: Danish \n" "Language: da\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 5.10.1-dev\n" #. TRANSLATORS: App name, translate to your language and follow the capitalization #: data/io.github.diegopvlk.Dosage.appdata.xml.in:20 #: data/io.github.diegopvlk.Dosage.desktop.in:3 #: src/utils/getTreatmentsExportFile.js:173 src/utils/saveFiles.js:22 #: src/utils/saveFiles.js:44 src/main.js:60 src/window.js:1060 #: data/ui/window.blp:6 msgid "Dosage" msgstr "Dosering" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:21 msgid "Keep track of your treatments" msgstr "Hold styr på din medicinering" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:24 msgid "" "Easily manage and track treatments with Dosage: notifications, history, " "multiple doses, flexible frequency, customization, stock monitoring, and " "duration control" msgstr "" "Administrer og spor nemt behandlinger med Dosering: notifikationer, " "historik, flere doser, fleksibel frekvens, tilpasning, overvågning af lager " "og varighedskontrol" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:25 msgid "Features:" msgstr "Funktioner:" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:27 msgid "Notifications — Get reminders at the right time" msgstr "Notifikationer — Bliv påmindet på det rette tidspunkt" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:28 msgid "History — See which medications you took, skipped or missed" msgstr "Historik — Se hvilken medicin du har taget, sprunget over eller misset" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:29 msgid "Dosage management — Multiple doses with different times" msgstr "Dosering håndtering — Flere dosis med forskellige tidspunkter" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:30 msgid "" "Frequency modes — Every day, specific days, cycle or just when necessary" msgstr "" "Frekvens-tilstand — Hverdag, bestemte dage, cyklus eller når det er " "nødvendigt" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:31 msgid "Color and icon — Give a shape for your treatment" msgstr "Farve og ikon — Giv din behandling et unik udsende" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:32 msgid "Inventory tracking — Monitor your stock and get reminded when it's low" msgstr "" "Lagerstyring - Overvåg dit lager og bliv mindet om det, når det er lavt" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:33 msgid "Duration — Define the start and end dates" msgstr "Varighed — Sæt start- og slutdato" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:44 msgid "Dosage today window in light theme" msgstr "Dosering idag vindue i lyst tema" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:49 msgid "Dosage preferences window in light theme" msgstr "Dosering præferencer vindue i lyst tema" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:54 msgid "Dosage edit treatment window in light theme" msgstr "Dosering rediger behandling vindue i lyst tema" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:59 msgid "Dosage today window in dark theme" msgstr "Dosering idag vindue i mørk tema" #. TRANSLATORS: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/io.github.diegopvlk.Dosage.desktop.in:10 msgid "Medication;Tracker;Reminder;Today;Treatments;Pill;Drug;Remedy;" msgstr "Medicin;Tracker;Påmindelse;Idag;Behandlinger;Pille;Lægemiddel;Middel;Dosering;" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:232 msgid "Date" msgstr "Dato" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:199 msgid "Time" msgstr "Tid" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/med-dialog.blp:61 data/ui/one-time-dialog.blp:49 msgid "Name" msgstr "Navn" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:183 msgid "Dose" msgstr "Dosis" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 msgid "Status" msgstr "Status" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 msgid "Time Confirmed" msgstr "Tid Bekræftet" #: src/utils/getHistoryExportFile.js:38 src/utils/getHistoryExportFile.js:117 #: src/editHistDialog.js:68 src/historyFactory.js:186 msgid "Missed" msgstr "Misset" #: src/utils/getHistoryExportFile.js:41 src/utils/getHistoryExportFile.js:121 #: src/historyFactory.js:183 data/ui/edit-hist-dialog.blp:111 msgid "Skipped" msgstr "Sprunget over" #: src/utils/getHistoryExportFile.js:44 src/utils/getHistoryExportFile.js:55 #: src/utils/getHistoryExportFile.js:125 src/utils/getHistoryExportFile.js:138 #: src/editHistDialog.js:73 src/historyFactory.js:190 #: data/ui/edit-hist-dialog.blp:116 msgid "Confirmed" msgstr "Bekræftet" #: src/utils/getHistoryExportFile.js:52 src/utils/getHistoryExportFile.js:134 #: src/editHistDialog.js:56 src/historyFactory.js:178 msgid "Auto-Confirmed" msgstr "Automatisk Bekræftet" #: src/utils/getHistoryExportFile.js:55 src/utils/getHistoryExportFile.js:138 #: src/editHistDialog.js:74 msgid "Time Unknown" msgstr "Tidspunkt Ukendt" #. TRANSLATORS: Context: 1 Pill at 19:00 #: src/utils/getTreatmentsExportFile.js:69 #, fuzzy #| msgid "Date" msgid "at" msgstr "Dato" #: src/utils/getTreatmentsExportFile.js:89 data/ui/med-dialog.blp:443 msgid "Notes" msgstr "Noter" #: src/utils/getTreatmentsExportFile.js:96 src/utils/locale.js:37 #: src/treatmentsFactory.js:268 msgid "Daily" msgstr "Daglig" #: src/utils/getTreatmentsExportFile.js:102 src/medDialog.js:428 #: data/ui/med-dialog.blp:459 msgid "Day of Month" msgstr "Dag på Måneden" #. TRANSLATORS: Context: 2 day(s) on, 1 day(s) off #: src/utils/getTreatmentsExportFile.js:109 msgid "day(s) on" msgstr "" #. TRANSLATORS: Context: 2 day(s) on, 1 day(s) off #: src/utils/getTreatmentsExportFile.js:111 msgid "day(s) off" msgstr "" #: src/utils/getTreatmentsExportFile.js:122 src/todayFactory.js:41 #: src/treatmentsFactory.js:298 data/ui/med-dialog.blp:461 msgid "As Needed" msgstr "Efter Behov" #: src/utils/getTreatmentsExportFile.js:132 data/ui/med-dialog.blp:764 msgid "Duration" msgstr "Varighed" #: src/utils/getTreatmentsExportFile.js:135 #, fuzzy #| msgid "Starts On" msgid "Started on" msgstr "Starter Den" #: src/utils/getTreatmentsExportFile.js:136 data/ui/med-dialog.blp:775 #, fuzzy #| msgid "Starts On" msgid "Start" msgstr "Starter Den" #: src/utils/getTreatmentsExportFile.js:138 src/treatmentsFactory.js:256 msgid "Ended on" msgstr "Sluttede den" #: src/utils/getTreatmentsExportFile.js:138 data/ui/med-dialog.blp:817 #, fuzzy #| msgid "Ends On" msgid "End" msgstr "Slutter Den" #: src/utils/getTreatmentsExportFile.js:173 src/utils/saveFiles.js:44 #: data/ui/window.blp:234 msgid "Treatments" msgstr "Behandlinger" #: src/utils/getTreatmentsExportFile.js:184 #, fuzzy #| msgctxt "shortcut window" #| msgid "General" msgid "Generated on" msgstr "Generelt" #: src/utils/getTreatmentsExportFile.js:187 msgid "Ongoing" msgstr "" #: src/utils/getTreatmentsExportFile.js:188 msgid "Non-scheduled" msgstr "" #: src/utils/getTreatmentsExportFile.js:189 msgid "Finished" msgstr "" #: src/utils/locale.js:33 msgid "Weekends" msgstr "Weekender" #: src/utils/locale.js:35 msgid "Weekdays" msgstr "Hverdage" #: src/utils/saveFiles.js:22 data/ui/window.blp:156 msgid "History" msgstr "Historik" #: src/editHistDialog.js:60 src/editHistDialog.js:89 src/editHistDialog.js:110 msgid "Confirmed At" msgstr "Bekræftet" #: src/editHistDialog.js:64 src/editHistDialog.js:114 msgid "Skipped At" msgstr "Sprunget Over" #: src/historyFactory.js:47 msgid "Select to be Removed" msgstr "Vælg Hvad der Skal Fjernes" #. TRANSLATORS: "Your Name " #: src/main.js:69 msgid "translator-credits" msgstr "Magnus C. " #: src/main.js:73 msgid "Thanks to These Projects!" msgstr "Tak til Følgende Projekter!" #: src/medDialog.js:99 msgid "Edit Treatment" msgstr "Rediger Behandling" #: src/medDialog.js:100 data/ui/edit-hist-dialog.blp:30 #: data/ui/preferences.blp:112 data/ui/preferences.blp:132 #: data/ui/refill-dialog.blp:67 msgid "Save" msgstr "Gem" #: src/medDialog.js:114 msgid "Copy" msgstr "Kopier" #: src/medDialog.js:217 msgid "Add Dose" msgstr "Tilføj Dosis" #: src/medDialog.js:419 msgid "Choose" msgstr "Vælg" #: src/medDialog.js:429 src/treatmentsFactory.js:274 msgid "Day" msgstr "Dag" #: src/medDialog.js:456 data/ui/med-dialog.blp:458 msgid "Specific Days" msgstr "Specifikke Dage" #: src/medDialog.js:463 src/treatmentsFactory.js:295 data/ui/med-dialog.blp:460 msgid "Cycle" msgstr "Cyklus" #: src/medDialog.js:467 data/ui/med-dialog.blp:452 msgid "Frequency" msgstr "Frekvens" #: src/medDialog.js:500 msgid "Empty Name" msgstr "Tomt Navn" #: src/medDialog.js:506 msgid "Empty Unit" msgstr "Tom Enhed" #: src/medDialog.js:513 msgid "Choose at Least One Day" msgstr "Vælg Minimum Én Dag" #: src/medDialog.js:527 src/oneTimeDialog.js:187 msgid "Name Already on Treatment List" msgstr "Dette Navn er Allerede på Behandlingslisten" #: src/medDialog.js:542 msgid "Duplicated Time" msgstr "Dobbelt Tid" #: src/medDialog.js:582 msgid "Are You Sure?" msgstr "Er Du Sikker?" #: src/medDialog.js:583 msgid "will be deleted" msgstr "Vil blive slettet" #: src/medDialog.js:586 data/ui/edit-hist-dialog.blp:18 #: data/ui/med-dialog.blp:19 msgid "Cancel" msgstr "Afbryd" #: src/medDialog.js:587 src/treatmentsFactory.js:128 data/ui/med-dialog.blp:865 msgid "Delete" msgstr "Slet" #: src/oneTimeDialog.js:110 msgid "New" msgstr "Ny" #: src/oneTimeDialog.js:121 data/ui/med-dialog.blp:189 #: data/ui/one-time-dialog.blp:178 msgid "Pill(s)" msgstr "Pille(r)" #: src/prefsDialog.js:63 msgid "Accept to allow running in the background and receive notifications" msgstr "Tillad Dosering at køre i baggrunden og at modtage notifikationer" #: src/prefsDialog.js:74 src/window.js:259 msgid "An Issue Has Occurred" msgstr "Der Skete en Fejl" #: src/prefsDialog.js:77 src/window.js:267 src/window.js:289 src/window.js:311 #: src/window.js:329 msgid "Close" msgstr "Luk" #: src/timeDoseRow.js:34 msgid "Remove Dose" msgstr "Fjern Dosis" #: src/timeDoseRow.js:40 data/ui/edit-hist-dialog.blp:90 #: data/ui/one-time-dialog.blp:210 msgid "Change Time" msgstr "Ændre Tid" #: src/todayFactory.js:134 msgid "Change Dose" msgstr "Ændre Dosis" #: src/treatmentsFactory.js:96 src/treatmentsFactory.js:126 #: data/ui/refill-dialog.blp:7 msgid "Refill" msgstr "Genopfyld" #: src/treatmentsFactory.js:125 msgid "Edit" msgstr "Ændre" #: src/treatmentsFactory.js:127 msgid "Duplicate" msgstr "Duplikat" #: src/treatmentsFactory.js:146 msgid "Options" msgstr "Indstillinger" #. TRANSLATORS: keep the %d it's where the number goes #: src/treatmentsFactory.js:244 #, javascript-format msgid "%d Remaining" msgstr "%d Tilbage" #. TRANSLATORS: label for when duration is enabled #: src/treatmentsFactory.js:254 msgid "Starts on" msgstr "Starter den" #: src/treatmentsFactory.js:255 msgid "Until" msgstr "Indtil" #: src/treatmentsFactory.js:283 src/treatmentsFactory.js:286 msgid "Next Dose" msgstr "Næste Dosis" #: src/window.js:173 src/window.js:943 msgid "Reminder" msgstr "Påmindelse" #. TRANSLATORS: Notification text for when the inventory is low #: src/window.js:175 msgid "You have treatments low in stock" msgstr "Du har behandlinger der er ved at løbe tør for dossier" #: src/window.js:492 msgid "Show All" msgstr "Vis Alle" #: src/window.js:515 msgid "Show Less" msgstr "Vis Mindre" #: src/window.js:648 msgid "No Results Found" msgstr "Ingen Resultater Fundet" #: src/window.js:648 src/window.js:1517 #, fuzzy #| msgid "History" msgid "No History" msgstr "Historik" #: src/window.js:818 data/ui/window.blp:260 #, fuzzy #| msgid "Treatments" msgid "No Treatments" msgstr "Behandlinger" #: src/window.js:818 msgid "All Done for Today" msgstr "Færdig for i Dag" #: src/window.js:906 src/window.js:1090 data/ui/one-time-dialog.blp:285 #: data/ui/preferences.blp:73 msgid "Confirm" msgstr "Bekræft" #: src/window.js:906 msgid "Confirm All" msgstr "Bekræft Alle" #: src/window.js:907 data/ui/preferences.blp:84 data/ui/window.blp:146 msgid "Skip" msgstr "Spring Over" #: src/window.js:907 msgid "Skip All" msgstr "Spring Alle Over" #. TRANSLATORS: keep the %d it's where the number goes #: src/window.js:938 #, javascript-format msgid "and %d more" msgstr "og %d flere" #: src/window.js:1090 data/ui/one-time-dialog.blp:7 data/ui/window.blp:133 msgid "One-Time Entry" msgstr "Engangsindtastning" #: src/window.js:1295 data/ui/window.blp:353 msgid "Quit" msgstr "Stop" #: data/ui/edit-hist-dialog.blp:7 msgid "Edit Entry" msgstr "Rediger Indtastning" #: data/ui/med-dialog.blp:7 msgid "New Treatment" msgstr "Ny Behandling" #: data/ui/med-dialog.blp:31 data/ui/window.blp:283 msgid "Add" msgstr "Tilføj" #: data/ui/med-dialog.blp:69 data/ui/one-time-dialog.blp:58 msgid "Color" msgstr "Farve" #. TRANSLATORS: Tooltip for the colors (from Default until Purple) #: data/ui/med-dialog.blp:94 data/ui/one-time-dialog.blp:83 msgid "Default" msgstr "Standard" #: data/ui/med-dialog.blp:106 data/ui/one-time-dialog.blp:95 msgid "Red" msgstr "Rød" #: data/ui/med-dialog.blp:118 data/ui/one-time-dialog.blp:107 msgid "Orange" msgstr "Orange" #: data/ui/med-dialog.blp:130 data/ui/one-time-dialog.blp:119 msgid "Yellow" msgstr "Gul" #: data/ui/med-dialog.blp:142 data/ui/one-time-dialog.blp:131 msgid "Green" msgstr "Grøn" #: data/ui/med-dialog.blp:154 data/ui/one-time-dialog.blp:143 msgid "Cyan" msgstr "Blågrøn" #: data/ui/med-dialog.blp:166 data/ui/one-time-dialog.blp:155 msgid "Blue" msgstr "Blå" #: data/ui/med-dialog.blp:178 data/ui/one-time-dialog.blp:167 msgid "Purple" msgstr "Lilla" #: data/ui/med-dialog.blp:188 data/ui/one-time-dialog.blp:177 msgid "Unit" msgstr "Enhed" #: data/ui/med-dialog.blp:197 msgid "Icon" msgstr "Ikon" #. TRANSLATORS: Tooltip for the icons (from Pill until Potion) #: data/ui/med-dialog.blp:226 msgid "Pill" msgstr "Pille" #: data/ui/med-dialog.blp:242 msgid "Alternative Pill" msgstr "Alternativ Pille" #: data/ui/med-dialog.blp:258 msgid "Capsule" msgstr "Kapsel" #: data/ui/med-dialog.blp:274 msgid "Round Pill" msgstr "Rund Pille" #: data/ui/med-dialog.blp:290 msgid "Alternative Round Pill" msgstr "Alternativ Rund Pille" #: data/ui/med-dialog.blp:306 msgid "Ampoule" msgstr "Ampul" #: data/ui/med-dialog.blp:322 msgid "Injection" msgstr "Indsprøjtning" #: data/ui/med-dialog.blp:338 msgid "Square Pill" msgstr "Firkantet Pille" #: data/ui/med-dialog.blp:354 msgid "Alternative Square Pill" msgstr "Alternativ Firkantet Pille" #: data/ui/med-dialog.blp:370 msgid "Triangle pill" msgstr "Trekantet pille" #: data/ui/med-dialog.blp:386 msgid "Alternative Triangle Pill" msgstr "Alternativ Trekantet Pille" #: data/ui/med-dialog.blp:402 msgid "Bottle" msgstr "Flaske" #: data/ui/med-dialog.blp:418 msgid "Drops" msgstr "Dråbe" #: data/ui/med-dialog.blp:434 msgid "Potion" msgstr "Drik" #: data/ui/med-dialog.blp:457 msgid "Every Day" msgstr "Hver Dag" #: data/ui/med-dialog.blp:473 msgid "Choose Days" msgstr "Vælg Dage" #: data/ui/med-dialog.blp:572 msgid "Choose Day" msgstr "Vælg Dag" #: data/ui/med-dialog.blp:617 msgid "Change Cycle" msgstr "Ændre Cyklus" #: data/ui/med-dialog.blp:642 msgid "Days Active" msgstr "Aktive Dage" #: data/ui/med-dialog.blp:656 msgid "Days Inactive" msgstr "Inaktive Dage" #. TRANSLATORS: Day in cycle, try to keep it short #: data/ui/med-dialog.blp:671 msgid "Today is Cycle Day…" msgstr "Idag er det dag nr.…" #: data/ui/med-dialog.blp:694 msgid "Increase Notification Priority" msgstr "Forøg Meddelelsesprioritet" #: data/ui/med-dialog.blp:695 msgid "Show in fullscreen mode or with 'Do Not Disturb' enabled" msgstr "Vis i fuldskærm eller med 'Forstyr ikke' tilstand" #: data/ui/med-dialog.blp:699 msgid "Recurring Notifications" msgstr "Gentagende Notifikationer" #: data/ui/med-dialog.blp:700 msgid "Renotify until it's confirmed or skipped" msgstr "Bliv ved med at påminde indtil bekræftet eller sprunget over" #: data/ui/med-dialog.blp:705 msgid "Interval in Minutes" msgstr "Interval i Minutter" #: data/ui/med-dialog.blp:718 data/ui/refill-dialog.blp:36 msgid "Inventory" msgstr "Lager" #: data/ui/med-dialog.blp:719 msgid "Manage your stock" msgstr "Administrer dit lager" #: data/ui/med-dialog.blp:725 msgid "Current" msgstr "Nuværende" #: data/ui/med-dialog.blp:738 msgid "Remind Me At" msgstr "Påmind Mig" #: data/ui/med-dialog.blp:751 msgid "Refill Amount" msgstr "Mængde til Genopfyldning" #: data/ui/med-dialog.blp:765 msgid "Set start and end dates" msgstr "Sæt start- og slutdato" #: data/ui/med-dialog.blp:785 data/ui/med-dialog.blp:827 #: data/ui/one-time-dialog.blp:243 msgid "Choose Date" msgstr "Vælg Dato" #: data/ui/med-dialog.blp:855 msgid "Mark as Confirmed" msgstr "Markér som Bekræftet" #: data/ui/med-dialog.blp:856 msgid "" "If not manually confirmed or skipped, it will be recorded as confirmed in " "history, reducing stock if enabled" msgstr "" "Hvis det ikke bekræftes manuelt eller springes over, registreres det som " "bekræftet i historikken, hvilket reducerer lagerbeholdningen, hvis det er " "aktiveret" #: data/ui/one-time-dialog.blp:44 msgid "From Treatment List" msgstr "Fra Behandlingslisten" #: data/ui/one-time-dialog.blp:182 msgid "Amount" msgstr "Antal" #: data/ui/preferences.blp:7 data/ui/window.blp:338 msgid "Preferences" msgstr "Præferencer" #: data/ui/preferences.blp:17 msgid "Auto-Start at Login" msgstr "Begynd Automatisk ved Login" #: data/ui/preferences.blp:28 msgid "Auto-Clear History" msgstr "Ryd Historikken Automatisk" #: data/ui/preferences.blp:29 msgid "Keeps a maximum of 30 days" msgstr "Gemmer maks 30 dage" #: data/ui/preferences.blp:40 msgid "Low Stock Notification" msgstr "Få Tilbage Notifikation" #: data/ui/preferences.blp:41 msgid "Send reminders when treatments are low in stock" msgstr "Send påmindelser når lagerbeholdningen er lav" #: data/ui/preferences.blp:52 msgid "Notification Sound" msgstr "Notifikationslyd" #: data/ui/preferences.blp:63 msgid "Notification Buttons" msgstr "Notifikationsknapper" #: data/ui/preferences.blp:64 msgid "Show or hide confirm/skip" msgstr "Vis eller skjul bekræft/spring over" #: data/ui/preferences.blp:98 #, fuzzy #| msgid "Export History as CSV" msgid "Export History As" msgstr "Eksporter Historik som CSV" #: data/ui/preferences.blp:121 #, fuzzy #| msgid "Empty Treatments" msgid "Export Treatments As" msgstr "Tomme Behandlinger" #: data/ui/shortcuts-dialog.blp:8 #, fuzzy #| msgctxt "shortcut window" #| msgid "Show Shortcuts" msgid "Shortcuts" msgstr "Vis genveje" #: data/ui/shortcuts-dialog.blp:11 #, fuzzy #| msgid "Show/Hide 'As Needed'" msgctxt "shortcut window" msgid "Show/Hide 'As Needed'" msgstr "Vis/Skjul 'Efter Behov'" #: data/ui/shortcuts-dialog.blp:16 #, fuzzy #| msgid "One-Time Entry" msgctxt "shortcut window" msgid "New One-Time Entry" msgstr "Engangsindtastning" #: data/ui/shortcuts-dialog.blp:21 #, fuzzy #| msgid "New Treatment" msgctxt "shortcut window" msgid "Add New Treatment" msgstr "Ny Behandling" #: data/ui/shortcuts-dialog.blp:26 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Vis genveje" #: data/ui/shortcuts-dialog.blp:31 msgctxt "shortcut window" msgid "Quit" msgstr "Afslut" #: data/ui/window.blp:23 msgid "Show/Hide 'As Needed'" msgstr "Vis/Skjul 'Efter Behov'" #: data/ui/window.blp:31 msgid "Search" msgstr "Søg" #: data/ui/window.blp:39 #, fuzzy #| msgid "Treatments" msgid "Sort Treatments" msgstr "Behandlinger" #: data/ui/window.blp:48 msgid "Main Menu" msgstr "Hovedmenu" #: data/ui/window.blp:61 msgid "Search…" msgstr "Søg…" #: data/ui/window.blp:71 msgid "Today" msgstr "Idag" #: data/ui/window.blp:117 data/ui/window.blp:210 msgid "Unselect" msgstr "Fjern markeringen" #: data/ui/window.blp:220 msgid "Remove Entries" msgstr "Fjern Indtastninger" #: data/ui/window.blp:300 msgid "Name Ascending" msgstr "" #: data/ui/window.blp:306 msgid "Remaining Stock (Lowest First)" msgstr "" #: data/ui/window.blp:312 msgid "Remaining Stock (Highest First)" msgstr "" #: data/ui/window.blp:318 #, fuzzy #| msgid "As Needed" msgid "As Needed Last" msgstr "Efter Behov" #: data/ui/window.blp:324 #, fuzzy #| msgid "Ended on" msgid "Ended Last" msgstr "Sluttede den" #: data/ui/window.blp:330 #, fuzzy #| msgid "As Needed" msgid "As Needed/Ended Last" msgstr "Efter Behov" #: data/ui/window.blp:343 #, fuzzy #| msgctxt "shortcut window" #| msgid "Show Shortcuts" msgid "Keyboard Shortcuts" msgstr "Vis genveje" #: data/ui/window.blp:348 msgid "About Dosage" msgstr "Om Dosering" #~ msgid "Empty Treatments" #~ msgstr "Tomme Behandlinger" #~ msgid "Empty History" #~ msgstr "Tom Historik" #~ msgid "No Treatments Added" #~ msgstr "Ingen Behandlinger Tilføjet" #~ msgctxt "shortcut window" #~ msgid "General" #~ msgstr "Generelt" #~ msgctxt "shortcut window" #~ msgid "Preferences" #~ msgstr "Præferencer" #~ msgid "After meal" #~ msgstr "Efter måltid" #~ msgid "Refill Stock" #~ msgstr "Genopfyld Lager" #~ msgid "Low Stock" #~ msgstr "Få Tilbage" diegopvlk-Dosage-bd9126a/po/de.po000066400000000000000000000532741514145341100166700ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) 2023 Diego Povliuk # This file is distributed under the license GPLv3-or-later. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: io.github.diegopvlk.Dosage\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-12-19 16:12-0300\n" "PO-Revision-Date: 2026-01-29 20:27+0000\n" "Last-Translator: Diego Povliuk \n" "Language-Team: German " "\n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 5.16-dev\n" #. TRANSLATORS: App name, translate to your language and follow the capitalization #: data/io.github.diegopvlk.Dosage.appdata.xml.in:20 #: data/io.github.diegopvlk.Dosage.desktop.in:3 #: src/utils/getTreatmentsExportFile.js:173 src/utils/saveFiles.js:22 #: src/utils/saveFiles.js:44 src/main.js:60 src/window.js:1060 #: data/ui/window.blp:6 msgid "Dosage" msgstr "Dosierung" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:21 msgid "Keep track of your treatments" msgstr "Verfolgen Sie Ihre Behandlungen" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:24 msgid "" "Easily manage and track treatments with Dosage: notifications, history, " "multiple doses, flexible frequency, customization, stock monitoring, and " "duration control" msgstr "" "Verwalten Sie den Fortschritt Ihrer Behandlungen mit Dosage: " "Benachrichtigungen, Verlauf, Mehrfachdosen, flexible Frequenzen, " "Personalisierung, Vorratsverwaltung und Steuerung der Behandlungsdauer" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:25 msgid "Features:" msgstr "Funktionen:" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:27 msgid "Notifications — Get reminders at the right time" msgstr "Benachrichtigungen – Erhalten Sie rechtzeitig Erinnerungen" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:28 msgid "History — See which medications you took, skipped or missed" msgstr "Verlauf – Eingenommene, übersprungene und vergessene Medikamente" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:29 msgid "Dosage management — Multiple doses with different times" msgstr "Verwaltung der Dosierung – Mehrere Dosen zu verschiedenen Zeitpunkten" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:30 msgid "" "Frequency modes — Every day, specific days, cycle or just when necessary" msgstr "" "Wiederholungen – Täglich, an bestimmten Tagen, zyklisch(?) oder nur bei " "Bedarf" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:31 msgid "Color and icon — Give a shape for your treatment" msgstr "Farben und Symbole – Bringen Sie Farbe in Ihre Behandlung" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:32 msgid "Inventory tracking — Monitor your stock and get reminded when it's low" msgstr "" "Vorratsverwaltung – Verfolgen Sie Ihre Vorräte und lassen Sie sich erinnern, " "wenn sie zur Neige gehen" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:33 msgid "Duration — Define the start and end dates" msgstr "Dauer – Legen Sie Start- und Enddaten fest" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:44 msgid "Dosage today window in light theme" msgstr "Fenster „Heute“ in hellem Thema" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:49 msgid "Dosage preferences window in light theme" msgstr "Dosierungseinstellungen in hellem Thema" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:54 msgid "Dosage edit treatment window in light theme" msgstr "Fenster zur Erfassung von Dosierungen in hellem Thema" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:59 msgid "Dosage today window in dark theme" msgstr "Fenster „Heute“ in dunklem Thema" #. TRANSLATORS: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/io.github.diegopvlk.Dosage.desktop.in:10 msgid "Medication;Tracker;Reminder;Today;Treatments;Pill;Drug;Remedy;" msgstr "Medikament;Verfolgung;Erinnerung;Heute;Behandlungen;Pille;Mittel;Behandlung;" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:232 msgid "Date" msgstr "Datum" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:199 msgid "Time" msgstr "Uhrzeit" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/med-dialog.blp:61 data/ui/one-time-dialog.blp:49 msgid "Name" msgstr "Name" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:183 msgid "Dose" msgstr "Dosis" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 msgid "Status" msgstr "Status" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 msgid "Time Confirmed" msgstr "Uhrzeit Der Bestätigung" #: src/utils/getHistoryExportFile.js:38 src/utils/getHistoryExportFile.js:117 #: src/editHistDialog.js:68 src/historyFactory.js:186 msgid "Missed" msgstr "Verpasst" #: src/utils/getHistoryExportFile.js:41 src/utils/getHistoryExportFile.js:121 #: src/historyFactory.js:183 data/ui/edit-hist-dialog.blp:111 msgid "Skipped" msgstr "Übersprungen" #: src/utils/getHistoryExportFile.js:44 src/utils/getHistoryExportFile.js:55 #: src/utils/getHistoryExportFile.js:125 src/utils/getHistoryExportFile.js:138 #: src/editHistDialog.js:73 src/historyFactory.js:190 #: data/ui/edit-hist-dialog.blp:116 msgid "Confirmed" msgstr "Bestätigt" #: src/utils/getHistoryExportFile.js:52 src/utils/getHistoryExportFile.js:134 #: src/editHistDialog.js:56 src/historyFactory.js:178 msgid "Auto-Confirmed" msgstr "Automatisch Bestätigt" #: src/utils/getHistoryExportFile.js:55 src/utils/getHistoryExportFile.js:138 #: src/editHistDialog.js:74 msgid "Time Unknown" msgstr "Uhrzeit Unbekannt" #. TRANSLATORS: Context: 1 Pill at 19:00 #: src/utils/getTreatmentsExportFile.js:69 msgid "at" msgstr "um" #: src/utils/getTreatmentsExportFile.js:89 data/ui/med-dialog.blp:443 msgid "Notes" msgstr "Notizen" #: src/utils/getTreatmentsExportFile.js:96 src/utils/locale.js:37 #: src/treatmentsFactory.js:268 msgid "Daily" msgstr "Täglich" #: src/utils/getTreatmentsExportFile.js:102 src/medDialog.js:428 #: data/ui/med-dialog.blp:459 msgid "Day of Month" msgstr "Tag des Monats" #. TRANSLATORS: Context: 2 day(s) on, 1 day(s) off #: src/utils/getTreatmentsExportFile.js:109 msgid "day(s) on" msgstr "Tag(e) ein" #. TRANSLATORS: Context: 2 day(s) on, 1 day(s) off #: src/utils/getTreatmentsExportFile.js:111 msgid "day(s) off" msgstr "Tag(e) aus" #: src/utils/getTreatmentsExportFile.js:122 src/todayFactory.js:41 #: src/treatmentsFactory.js:298 data/ui/med-dialog.blp:461 msgid "As Needed" msgstr "Nach Bedarf" #: src/utils/getTreatmentsExportFile.js:132 data/ui/med-dialog.blp:764 msgid "Duration" msgstr "Dauer" #: src/utils/getTreatmentsExportFile.js:135 msgid "Started on" msgstr "Begonnen am" #: src/utils/getTreatmentsExportFile.js:136 data/ui/med-dialog.blp:775 msgid "Start" msgstr "Beginn" #: src/utils/getTreatmentsExportFile.js:138 src/treatmentsFactory.js:256 msgid "Ended on" msgstr "Beendet am" #: src/utils/getTreatmentsExportFile.js:138 data/ui/med-dialog.blp:817 msgid "End" msgstr "Ende" #: src/utils/getTreatmentsExportFile.js:173 src/utils/saveFiles.js:44 #: data/ui/window.blp:234 msgid "Treatments" msgstr "Behandlungen" #: src/utils/getTreatmentsExportFile.js:184 msgid "Generated on" msgstr "Erzeugt am" #: src/utils/getTreatmentsExportFile.js:187 msgid "Ongoing" msgstr "Fortlaufend" #: src/utils/getTreatmentsExportFile.js:188 msgid "Non-scheduled" msgstr "Nicht geplant" #: src/utils/getTreatmentsExportFile.js:189 msgid "Finished" msgstr "Abgeschlossen" #: src/utils/locale.js:33 msgid "Weekends" msgstr "Wochenenden" #: src/utils/locale.js:35 msgid "Weekdays" msgstr "Wochentage" #: src/utils/saveFiles.js:22 data/ui/window.blp:156 msgid "History" msgstr "Verlauf" #: src/editHistDialog.js:60 src/editHistDialog.js:89 src/editHistDialog.js:110 msgid "Confirmed At" msgstr "Bestätigt Um" #: src/editHistDialog.js:64 src/editHistDialog.js:114 msgid "Skipped At" msgstr "Übersprungen Um" #: src/historyFactory.js:47 msgid "Select to be Removed" msgstr "Zur Entfernung Auswählen" #. TRANSLATORS: "Your Name " #: src/main.js:69 msgid "translator-credits" msgstr "Thomas Maeder" #: src/main.js:73 msgid "Thanks to These Projects!" msgstr "Danke An Diese Projekte!" #: src/medDialog.js:99 msgid "Edit Treatment" msgstr "Behandlung Bearbeiten" #: src/medDialog.js:100 data/ui/edit-hist-dialog.blp:30 #: data/ui/preferences.blp:112 data/ui/preferences.blp:132 #: data/ui/refill-dialog.blp:67 msgid "Save" msgstr "Speichern" #: src/medDialog.js:114 msgid "Copy" msgstr "Kopie" #: src/medDialog.js:217 msgid "Add Dose" msgstr "Dosis Hinzufügen" #: src/medDialog.js:419 msgid "Choose" msgstr "Auswählen" #: src/medDialog.js:429 src/treatmentsFactory.js:274 msgid "Day" msgstr "Tag" #: src/medDialog.js:456 data/ui/med-dialog.blp:458 msgid "Specific Days" msgstr "An Gewissen Tagen" #: src/medDialog.js:463 src/treatmentsFactory.js:295 data/ui/med-dialog.blp:460 msgid "Cycle" msgstr "Zyklus" #: src/medDialog.js:467 data/ui/med-dialog.blp:452 msgid "Frequency" msgstr "Frequenz" #: src/medDialog.js:500 msgid "Empty Name" msgstr "Leerer Name" #: src/medDialog.js:506 msgid "Empty Unit" msgstr "Leere Einheit" #: src/medDialog.js:513 msgid "Choose at Least One Day" msgstr "Wählen Sie Mindestens Einen Tag" #: src/medDialog.js:527 src/oneTimeDialog.js:187 msgid "Name Already on Treatment List" msgstr "Name Steht Bereits Auf Der Behandlungsliste" #: src/medDialog.js:542 msgid "Duplicated Time" msgstr "Duplizierte Zeit" #: src/medDialog.js:582 msgid "Are You Sure?" msgstr "Sind Sie Sicher?" #: src/medDialog.js:583 msgid "will be deleted" msgstr "wird gelöscht" #: src/medDialog.js:586 data/ui/edit-hist-dialog.blp:18 #: data/ui/med-dialog.blp:19 msgid "Cancel" msgstr "Abbrechen" #: src/medDialog.js:587 src/treatmentsFactory.js:128 data/ui/med-dialog.blp:865 msgid "Delete" msgstr "Löschen" #: src/oneTimeDialog.js:110 msgid "New" msgstr "Neu" #: src/oneTimeDialog.js:121 data/ui/med-dialog.blp:189 #: data/ui/one-time-dialog.blp:178 msgid "Pill(s)" msgstr "Pille(n)" #: src/prefsDialog.js:63 msgid "Accept to allow running in the background and receive notifications" msgstr "Ausführung im Hintergrund samt Benachrichtigungen erlauben" #: src/prefsDialog.js:74 src/window.js:259 msgid "An Issue Has Occurred" msgstr "Ein Problem Ist Aufgetreten" #: src/prefsDialog.js:77 src/window.js:267 src/window.js:289 src/window.js:311 #: src/window.js:329 msgid "Close" msgstr "Schließen" #: src/timeDoseRow.js:34 msgid "Remove Dose" msgstr "Dosis Entfernen" #: src/timeDoseRow.js:40 data/ui/edit-hist-dialog.blp:90 #: data/ui/one-time-dialog.blp:210 msgid "Change Time" msgstr "Uhrzeit Ändern" #: src/todayFactory.js:134 msgid "Change Dose" msgstr "Dosis Ändern" #: src/treatmentsFactory.js:96 src/treatmentsFactory.js:126 #: data/ui/refill-dialog.blp:7 msgid "Refill" msgstr "Nachfüllen" #: src/treatmentsFactory.js:125 msgid "Edit" msgstr "Bearbeiten" #: src/treatmentsFactory.js:127 msgid "Duplicate" msgstr "Duplizieren" #: src/treatmentsFactory.js:146 msgid "Options" msgstr "Optionen" #. TRANSLATORS: keep the %d it's where the number goes #: src/treatmentsFactory.js:244 #, javascript-format msgid "%d Remaining" msgstr "%d Verbleibend" #. TRANSLATORS: label for when duration is enabled #: src/treatmentsFactory.js:254 msgid "Starts on" msgstr "Beginnt am" #: src/treatmentsFactory.js:255 msgid "Until" msgstr "Bis" #: src/treatmentsFactory.js:283 src/treatmentsFactory.js:286 msgid "Next Dose" msgstr "Nächste Dosis" #: src/window.js:173 src/window.js:943 msgid "Reminder" msgstr "Erinnerung" #. TRANSLATORS: Notification text for when the inventory is low #: src/window.js:175 msgid "You have treatments low in stock" msgstr "Der Vorrate einiger Ihrer Medikamente ist knapp" #: src/window.js:492 msgid "Show All" msgstr "Alle Anzeigen" #: src/window.js:515 msgid "Show Less" msgstr "Weniger Anzeigen" #: src/window.js:648 msgid "No Results Found" msgstr "Keine Ergebnisse Gefunden" #: src/window.js:648 src/window.js:1517 msgid "No History" msgstr "Kein Verlauf" #: src/window.js:818 data/ui/window.blp:260 msgid "No Treatments" msgstr "Keine Behandlungen" #: src/window.js:818 msgid "All Done for Today" msgstr "Heute Alles Erledigt" #: src/window.js:906 src/window.js:1090 data/ui/one-time-dialog.blp:285 #: data/ui/preferences.blp:73 msgid "Confirm" msgstr "Bestätigen" #: src/window.js:906 msgid "Confirm All" msgstr "Alle Bestätigen" #: src/window.js:907 data/ui/preferences.blp:84 data/ui/window.blp:146 msgid "Skip" msgstr "Überspringen" #: src/window.js:907 msgid "Skip All" msgstr "Alles Überspringen" #. TRANSLATORS: keep the %d it's where the number goes #: src/window.js:938 #, javascript-format msgid "and %d more" msgstr "und noch %d" #: src/window.js:1090 data/ui/one-time-dialog.blp:7 data/ui/window.blp:133 msgid "One-Time Entry" msgstr "Einmal-Eintrag" #: src/window.js:1295 data/ui/window.blp:353 msgid "Quit" msgstr "Beenden" #: data/ui/edit-hist-dialog.blp:7 msgid "Edit Entry" msgstr "Eintrag Bearbeiten" #: data/ui/med-dialog.blp:7 msgid "New Treatment" msgstr "Neue Behandlung" #: data/ui/med-dialog.blp:31 data/ui/window.blp:283 msgid "Add" msgstr "Hinzufügen" #: data/ui/med-dialog.blp:69 data/ui/one-time-dialog.blp:58 msgid "Color" msgstr "Farbe" #. TRANSLATORS: Tooltip for the colors (from Default until Purple) #: data/ui/med-dialog.blp:94 data/ui/one-time-dialog.blp:83 msgid "Default" msgstr "Vorgabe" #: data/ui/med-dialog.blp:106 data/ui/one-time-dialog.blp:95 msgid "Red" msgstr "Rot" #: data/ui/med-dialog.blp:118 data/ui/one-time-dialog.blp:107 msgid "Orange" msgstr "Orange" #: data/ui/med-dialog.blp:130 data/ui/one-time-dialog.blp:119 msgid "Yellow" msgstr "Gelb" #: data/ui/med-dialog.blp:142 data/ui/one-time-dialog.blp:131 msgid "Green" msgstr "Grün" #: data/ui/med-dialog.blp:154 data/ui/one-time-dialog.blp:143 msgid "Cyan" msgstr "Cyan" #: data/ui/med-dialog.blp:166 data/ui/one-time-dialog.blp:155 msgid "Blue" msgstr "Blau" #: data/ui/med-dialog.blp:178 data/ui/one-time-dialog.blp:167 msgid "Purple" msgstr "Violett" #: data/ui/med-dialog.blp:188 data/ui/one-time-dialog.blp:177 msgid "Unit" msgstr "Einheit" #: data/ui/med-dialog.blp:197 msgid "Icon" msgstr "Symbol" #. TRANSLATORS: Tooltip for the icons (from Pill until Potion) #: data/ui/med-dialog.blp:226 msgid "Pill" msgstr "Pille" #: data/ui/med-dialog.blp:242 msgid "Alternative Pill" msgstr "Alternative Pille" #: data/ui/med-dialog.blp:258 msgid "Capsule" msgstr "Kapsel" #: data/ui/med-dialog.blp:274 msgid "Round Pill" msgstr "Runde Pille" #: data/ui/med-dialog.blp:290 msgid "Alternative Round Pill" msgstr "Alternative Runde Pille" #: data/ui/med-dialog.blp:306 msgid "Ampoule" msgstr "Ampulle" #: data/ui/med-dialog.blp:322 msgid "Injection" msgstr "Spritze" #: data/ui/med-dialog.blp:338 msgid "Square Pill" msgstr "Quadratische Pille" #: data/ui/med-dialog.blp:354 msgid "Alternative Square Pill" msgstr "Alternative Quadratische Pille" #: data/ui/med-dialog.blp:370 msgid "Triangle pill" msgstr "Dreieckige Pille" #: data/ui/med-dialog.blp:386 msgid "Alternative Triangle Pill" msgstr "Alternative Dreieckige Pille" #: data/ui/med-dialog.blp:402 msgid "Bottle" msgstr "Flasche" #: data/ui/med-dialog.blp:418 msgid "Drops" msgstr "Tropfen" #: data/ui/med-dialog.blp:434 msgid "Potion" msgstr "Arznei" #: data/ui/med-dialog.blp:457 msgid "Every Day" msgstr "Jeden Tag" #: data/ui/med-dialog.blp:473 msgid "Choose Days" msgstr "Tage Auswählen" #: data/ui/med-dialog.blp:572 msgid "Choose Day" msgstr "Tag Auswählen" #: data/ui/med-dialog.blp:617 msgid "Change Cycle" msgstr "Zyklus Ändern" #: data/ui/med-dialog.blp:642 msgid "Days Active" msgstr "Aktive Tage" #: data/ui/med-dialog.blp:656 msgid "Days Inactive" msgstr "Inaktive Tage" #. TRANSLATORS: Day in cycle, try to keep it short #: data/ui/med-dialog.blp:671 msgid "Today is Cycle Day…" msgstr "Heute ist Zyklus-Tag…" #: data/ui/med-dialog.blp:694 msgid "Increase Notification Priority" msgstr "Benachrichtigungspriorität Erhöhen" #: data/ui/med-dialog.blp:695 msgid "Show in fullscreen mode or with 'Do Not Disturb' enabled" msgstr "" "Stellt die Benachrichtigung im Ganzschirmmodus dar oder sogar wenn „Nicht " "Stören“ aktiviert ist" #: data/ui/med-dialog.blp:699 msgid "Recurring Notifications" msgstr "Wiederkehrende Benachrichtigungen" #: data/ui/med-dialog.blp:700 msgid "Renotify until it's confirmed or skipped" msgstr "Von Neuem benachrichtigen bis zur Bestätigung oder Ablehnung" #: data/ui/med-dialog.blp:705 msgid "Interval in Minutes" msgstr "Intervall in Minuten" #: data/ui/med-dialog.blp:718 data/ui/refill-dialog.blp:36 msgid "Inventory" msgstr "Inventar" #: data/ui/med-dialog.blp:719 msgid "Manage your stock" msgstr "Verwalten Sie Ihren Vorrat" #: data/ui/med-dialog.blp:725 msgid "Current" msgstr "Aktuell" #: data/ui/med-dialog.blp:738 msgid "Remind Me At" msgstr "Erinnerung Bei" #: data/ui/med-dialog.blp:751 msgid "Refill Amount" msgstr "Nachfüllmenge" #: data/ui/med-dialog.blp:765 msgid "Set start and end dates" msgstr "Start- und Enddatum festlegen" #: data/ui/med-dialog.blp:785 data/ui/med-dialog.blp:827 #: data/ui/one-time-dialog.blp:243 msgid "Choose Date" msgstr "Datum Auswählen" #: data/ui/med-dialog.blp:855 msgid "Mark as Confirmed" msgstr "Als Bestätigt Markieren" #: data/ui/med-dialog.blp:856 msgid "" "If not manually confirmed or skipped, it will be recorded as confirmed in " "history, reducing stock if enabled" msgstr "" "Bestätigt Einnahme automatisch, wenn sie nicht manuell bestätigt oder " "übersprungen wurde und reduziert Vorrat falls aktiviert" #: data/ui/one-time-dialog.blp:44 msgid "From Treatment List" msgstr "Aus Der Liste Der Behandlungen" #: data/ui/one-time-dialog.blp:182 msgid "Amount" msgstr "Menge" #: data/ui/preferences.blp:7 data/ui/window.blp:338 msgid "Preferences" msgstr "Einstellungen" #: data/ui/preferences.blp:17 msgid "Auto-Start at Login" msgstr "Bei Der Anmeldung Automatisch Starten" #: data/ui/preferences.blp:28 msgid "Auto-Clear History" msgstr "Verlauf Automatisch Löschen" #: data/ui/preferences.blp:29 msgid "Keeps a maximum of 30 days" msgstr "Hält maximal 30 Tage" #: data/ui/preferences.blp:40 msgid "Low Stock Notification" msgstr "Benachrichtigung Über Niedrigen Lagerbestand" #: data/ui/preferences.blp:41 msgid "Send reminders when treatments are low in stock" msgstr "" "Erinnerungen senden, wenn Behandlungen einen niedrigen Lagerbestand haben" #: data/ui/preferences.blp:52 msgid "Notification Sound" msgstr "Benachrichtigungston" #: data/ui/preferences.blp:63 msgid "Notification Buttons" msgstr "Benachrichtigungsschaltflächen" #: data/ui/preferences.blp:64 msgid "Show or hide confirm/skip" msgstr "„Überspringen“ anzeigen oder verstecken" #: data/ui/preferences.blp:98 msgid "Export History As" msgstr "Verlauf exportieren als" #: data/ui/preferences.blp:121 msgid "Export Treatments As" msgstr "Behandlungen exportieren als" #: data/ui/shortcuts-dialog.blp:8 msgid "Shortcuts" msgstr "Kurzbefehle" #: data/ui/shortcuts-dialog.blp:11 msgctxt "shortcut window" msgid "Show/Hide 'As Needed'" msgstr "„Nach Bedarf“ anzeigen/ausblenden" #: data/ui/shortcuts-dialog.blp:16 msgctxt "shortcut window" msgid "New One-Time Entry" msgstr "Neuer Einmal-Eintrag" #: data/ui/shortcuts-dialog.blp:21 msgctxt "shortcut window" msgid "Add New Treatment" msgstr "Neue Behandlung hinzufügen" #: data/ui/shortcuts-dialog.blp:26 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Kurzbefehle anzeigen" #: data/ui/shortcuts-dialog.blp:31 msgctxt "shortcut window" msgid "Quit" msgstr "Beenden" #: data/ui/window.blp:23 msgid "Show/Hide 'As Needed'" msgstr "Zeige/Verstecke „Nach Bedarf“" #: data/ui/window.blp:31 msgid "Search" msgstr "Suche" #: data/ui/window.blp:39 msgid "Sort Treatments" msgstr "Behandlungen sortieren" #: data/ui/window.blp:48 msgid "Main Menu" msgstr "Hauptmenü" #: data/ui/window.blp:61 msgid "Search…" msgstr "Suche…" #: data/ui/window.blp:71 msgid "Today" msgstr "Heute" #: data/ui/window.blp:117 data/ui/window.blp:210 msgid "Unselect" msgstr "Abwählen" #: data/ui/window.blp:220 msgid "Remove Entries" msgstr "Einträge Entfernen" #: data/ui/window.blp:300 msgid "Name Ascending" msgstr "Name aufsteigend" #: data/ui/window.blp:306 msgid "Remaining Stock (Lowest First)" msgstr "" #: data/ui/window.blp:312 msgid "Remaining Stock (Highest First)" msgstr "" #: data/ui/window.blp:318 #, fuzzy #| msgid "As Needed" msgid "As Needed Last" msgstr "Nach Bedarf" #: data/ui/window.blp:324 #, fuzzy #| msgid "Ended on" msgid "Ended Last" msgstr "Beendet am" #: data/ui/window.blp:330 #, fuzzy #| msgid "As Needed" msgid "As Needed/Ended Last" msgstr "Nach Bedarf" #: data/ui/window.blp:343 #, fuzzy #| msgctxt "shortcut window" #| msgid "Show Shortcuts" msgid "Keyboard Shortcuts" msgstr "Kurzbefehle anzeigen" #: data/ui/window.blp:348 msgid "About Dosage" msgstr "Über Dosierung" #~ msgid "Empty Treatments" #~ msgstr "Leere Behandlungen" #~ msgid "Empty History" #~ msgstr "Verlauf Leeren" #~ msgid "No Treatments Added" #~ msgstr "Bisher Keine Behandlungen Eingegeben" #~ msgctxt "shortcut window" #~ msgid "General" #~ msgstr "Allgemein" #~ msgctxt "shortcut window" #~ msgid "Preferences" #~ msgstr "Einstellungen" #~ msgid "After meal" #~ msgstr "Nach Mahlzeit" #~ msgid "Refill Stock" #~ msgstr "Vorrat Nachfüllen" #~ msgid "Low Stock" #~ msgstr "Wenig Vorrat" #~ msgid "Form" #~ msgstr "Form" #~ msgid "Color and icon" #~ msgstr "Farbe und Symbol" #~ msgid "Time and amount" #~ msgstr "Zeit und Menge" #~ msgid "Restore" #~ msgstr "Wiederherstellen" #~ msgid "New entry" #~ msgstr "Neuer Eintrag" #~ msgid "Name already exists" #~ msgstr "Name existiert bereits" #~ msgid "Alles bestätigen" #~ msgstr "Bestätigen" diegopvlk-Dosage-bd9126a/po/en_GB.po000066400000000000000000000516001514145341100172410ustar00rootroot00000000000000# British English translation of Cartridges. # Copyright (C) 2023 Diego Povliuk # This file is distributed under the license GPLv3-or-later. # Bruce Cowan \n" "Language-Team: English (United Kingdom) \n" "Language: en_GB\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 5.10\n" #. TRANSLATORS: App name, translate to your language and follow the capitalization #: data/io.github.diegopvlk.Dosage.appdata.xml.in:20 #: data/io.github.diegopvlk.Dosage.desktop.in:3 #: src/utils/getTreatmentsExportFile.js:173 src/utils/saveFiles.js:22 #: src/utils/saveFiles.js:44 src/main.js:60 src/window.js:1060 #: data/ui/window.blp:6 msgid "Dosage" msgstr "Dosage" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:21 msgid "Keep track of your treatments" msgstr "Keep track of your treatments" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:24 msgid "" "Easily manage and track treatments with Dosage: notifications, history, " "multiple doses, flexible frequency, customization, stock monitoring, and " "duration control" msgstr "" "Easily manage and track treatments with Dosage: notifications, history, " "multiple doses, flexible frequency, customization, stock monitoring, and " "duration control\"" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:25 msgid "Features:" msgstr "Features:" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:27 msgid "Notifications — Get reminders at the right time" msgstr "Notifications — Get reminders at the right time" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:28 msgid "History — See which medications you took, skipped or missed" msgstr "History — See which medications you took, skipped or missed" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:29 msgid "Dosage management — Multiple doses with different times" msgstr "Dosage management — Multiple doses with different times" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:30 msgid "" "Frequency modes — Every day, specific days, cycle or just when necessary" msgstr "" "Frequency modes — Every day, specific days, cycle or just when necessary" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:31 msgid "Color and icon — Give a shape for your treatment" msgstr "Colour and icon — Give a shape for your treatment" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:32 msgid "Inventory tracking — Monitor your stock and get reminded when it's low" msgstr "Inventory tracking — Monitor your stock and get reminded when it's low" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:33 msgid "Duration — Define the start and end dates" msgstr "Duration — Define the start and end dates" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:44 msgid "Dosage today window in light theme" msgstr "Dosage today window in light theme" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:49 msgid "Dosage preferences window in light theme" msgstr "Dosage preferences window in light theme" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:54 msgid "Dosage edit treatment window in light theme" msgstr "Dosage edit treatment window in light theme" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:59 msgid "Dosage today window in dark theme" msgstr "Dosage today window in dark theme" #. TRANSLATORS: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/io.github.diegopvlk.Dosage.desktop.in:10 msgid "Medication;Tracker;Reminder;Today;Treatments;Pill;Drug;Remedy;" msgstr "Medication;Tracker;Reminder;Today;Treatments;Pill;Drug;Remedy;" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:232 msgid "Date" msgstr "Date" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:199 msgid "Time" msgstr "Time" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/med-dialog.blp:61 data/ui/one-time-dialog.blp:49 msgid "Name" msgstr "Name" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:183 msgid "Dose" msgstr "Dose" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 msgid "Status" msgstr "Status" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 msgid "Time Confirmed" msgstr "Time Confirmed" #: src/utils/getHistoryExportFile.js:38 src/utils/getHistoryExportFile.js:117 #: src/editHistDialog.js:68 src/historyFactory.js:186 msgid "Missed" msgstr "Missed" #: src/utils/getHistoryExportFile.js:41 src/utils/getHistoryExportFile.js:121 #: src/historyFactory.js:183 data/ui/edit-hist-dialog.blp:111 msgid "Skipped" msgstr "Skipped" #: src/utils/getHistoryExportFile.js:44 src/utils/getHistoryExportFile.js:55 #: src/utils/getHistoryExportFile.js:125 src/utils/getHistoryExportFile.js:138 #: src/editHistDialog.js:73 src/historyFactory.js:190 #: data/ui/edit-hist-dialog.blp:116 msgid "Confirmed" msgstr "Confirmed" #: src/utils/getHistoryExportFile.js:52 src/utils/getHistoryExportFile.js:134 #: src/editHistDialog.js:56 src/historyFactory.js:178 msgid "Auto-Confirmed" msgstr "Auto-Confirmed" #: src/utils/getHistoryExportFile.js:55 src/utils/getHistoryExportFile.js:138 #: src/editHistDialog.js:74 msgid "Time Unknown" msgstr "Time Unknown" #. TRANSLATORS: Context: 1 Pill at 19:00 #: src/utils/getTreatmentsExportFile.js:69 msgid "at" msgstr "at" #: src/utils/getTreatmentsExportFile.js:89 data/ui/med-dialog.blp:443 msgid "Notes" msgstr "Notes" #: src/utils/getTreatmentsExportFile.js:96 src/utils/locale.js:37 #: src/treatmentsFactory.js:268 msgid "Daily" msgstr "Daily" #: src/utils/getTreatmentsExportFile.js:102 src/medDialog.js:428 #: data/ui/med-dialog.blp:459 msgid "Day of Month" msgstr "Day of Month" #. TRANSLATORS: Context: 2 day(s) on, 1 day(s) off #: src/utils/getTreatmentsExportFile.js:109 msgid "day(s) on" msgstr "day(s) on" #. TRANSLATORS: Context: 2 day(s) on, 1 day(s) off #: src/utils/getTreatmentsExportFile.js:111 msgid "day(s) off" msgstr "day(s) off" #: src/utils/getTreatmentsExportFile.js:122 src/todayFactory.js:41 #: src/treatmentsFactory.js:298 data/ui/med-dialog.blp:461 msgid "As Needed" msgstr "As Needed" #: src/utils/getTreatmentsExportFile.js:132 data/ui/med-dialog.blp:764 msgid "Duration" msgstr "Duration" #: src/utils/getTreatmentsExportFile.js:135 msgid "Started on" msgstr "Started on" #: src/utils/getTreatmentsExportFile.js:136 data/ui/med-dialog.blp:775 msgid "Start" msgstr "Starts on" #: src/utils/getTreatmentsExportFile.js:138 src/treatmentsFactory.js:256 msgid "Ended on" msgstr "Ended on" #: src/utils/getTreatmentsExportFile.js:138 data/ui/med-dialog.blp:817 msgid "End" msgstr "Ends on" #: src/utils/getTreatmentsExportFile.js:173 src/utils/saveFiles.js:44 #: data/ui/window.blp:234 msgid "Treatments" msgstr "Treatments" #: src/utils/getTreatmentsExportFile.js:184 msgid "Generated on" msgstr "Generated on" #: src/utils/getTreatmentsExportFile.js:187 msgid "Ongoing" msgstr "Ongoing" #: src/utils/getTreatmentsExportFile.js:188 msgid "Non-scheduled" msgstr "Non-scheduled" #: src/utils/getTreatmentsExportFile.js:189 msgid "Finished" msgstr "Finished" #: src/utils/locale.js:33 msgid "Weekends" msgstr "Weekends" #: src/utils/locale.js:35 msgid "Weekdays" msgstr "Weekdays" #: src/utils/saveFiles.js:22 data/ui/window.blp:156 msgid "History" msgstr "History" #: src/editHistDialog.js:60 src/editHistDialog.js:89 src/editHistDialog.js:110 msgid "Confirmed At" msgstr "Confirmed At" #: src/editHistDialog.js:64 src/editHistDialog.js:114 msgid "Skipped At" msgstr "Skipped At" #: src/historyFactory.js:47 msgid "Select to be Removed" msgstr "Select to be Removed" #. TRANSLATORS: "Your Name " #: src/main.js:69 msgid "translator-credits" msgstr "" "Diego Povliuk \n" "Bruce Cowan " #: src/main.js:73 msgid "Thanks to These Projects!" msgstr "Thanks to These Projects!" #: src/medDialog.js:99 msgid "Edit Treatment" msgstr "Edit Treatment" #: src/medDialog.js:100 data/ui/edit-hist-dialog.blp:30 #: data/ui/preferences.blp:112 data/ui/preferences.blp:132 #: data/ui/refill-dialog.blp:67 msgid "Save" msgstr "Save" #: src/medDialog.js:114 msgid "Copy" msgstr "Copy" #: src/medDialog.js:217 msgid "Add Dose" msgstr "Add Dose" #: src/medDialog.js:419 msgid "Choose" msgstr "Choose" #: src/medDialog.js:429 src/treatmentsFactory.js:274 msgid "Day" msgstr "Day" #: src/medDialog.js:456 data/ui/med-dialog.blp:458 msgid "Specific Days" msgstr "Specific Days" #: src/medDialog.js:463 src/treatmentsFactory.js:295 data/ui/med-dialog.blp:460 msgid "Cycle" msgstr "Cycle" #: src/medDialog.js:467 data/ui/med-dialog.blp:452 msgid "Frequency" msgstr "Frequency" #: src/medDialog.js:500 msgid "Empty Name" msgstr "Empty Name" #: src/medDialog.js:506 msgid "Empty Unit" msgstr "Empty Unit" #: src/medDialog.js:513 msgid "Choose at Least One Day" msgstr "Choose at Least One Day" #: src/medDialog.js:527 src/oneTimeDialog.js:187 msgid "Name Already on Treatment List" msgstr "Name Already on Treatment List" #: src/medDialog.js:542 msgid "Duplicated Time" msgstr "Duplicated Time" #: src/medDialog.js:582 msgid "Are You Sure?" msgstr "Are You Sure?" #: src/medDialog.js:583 msgid "will be deleted" msgstr "will be deleted" #: src/medDialog.js:586 data/ui/edit-hist-dialog.blp:18 #: data/ui/med-dialog.blp:19 msgid "Cancel" msgstr "Cancel" #: src/medDialog.js:587 src/treatmentsFactory.js:128 data/ui/med-dialog.blp:865 msgid "Delete" msgstr "Delete" #: src/oneTimeDialog.js:110 msgid "New" msgstr "New" #: src/oneTimeDialog.js:121 data/ui/med-dialog.blp:189 #: data/ui/one-time-dialog.blp:178 msgid "Pill(s)" msgstr "Pill(s)" #: src/prefsDialog.js:63 msgid "Accept to allow running in the background and receive notifications" msgstr "Accept to allow running in the background and receive notifications" #: src/prefsDialog.js:74 src/window.js:259 msgid "An Issue Has Occurred" msgstr "An Issue Has Occurred" #: src/prefsDialog.js:77 src/window.js:267 src/window.js:289 src/window.js:311 #: src/window.js:329 msgid "Close" msgstr "Close" #: src/timeDoseRow.js:34 msgid "Remove Dose" msgstr "Remove Dose" #: src/timeDoseRow.js:40 data/ui/edit-hist-dialog.blp:90 #: data/ui/one-time-dialog.blp:210 msgid "Change Time" msgstr "Change Time" #: src/todayFactory.js:134 msgid "Change Dose" msgstr "Change Dose" #: src/treatmentsFactory.js:96 src/treatmentsFactory.js:126 #: data/ui/refill-dialog.blp:7 msgid "Refill" msgstr "Refill" #: src/treatmentsFactory.js:125 msgid "Edit" msgstr "Edit" #: src/treatmentsFactory.js:127 msgid "Duplicate" msgstr "Duplicate" #: src/treatmentsFactory.js:146 msgid "Options" msgstr "Options" #. TRANSLATORS: keep the %d it's where the number goes #: src/treatmentsFactory.js:244 #, javascript-format msgid "%d Remaining" msgstr "%d Remaining" #. TRANSLATORS: label for when duration is enabled #: src/treatmentsFactory.js:254 msgid "Starts on" msgstr "Starts on" #: src/treatmentsFactory.js:255 msgid "Until" msgstr "Until" #: src/treatmentsFactory.js:283 src/treatmentsFactory.js:286 msgid "Next Dose" msgstr "Next Dose" #: src/window.js:173 src/window.js:943 msgid "Reminder" msgstr "Reminder" #. TRANSLATORS: Notification text for when the inventory is low #: src/window.js:175 msgid "You have treatments low in stock" msgstr "You have treatments low in stock" #: src/window.js:492 msgid "Show All" msgstr "Show All" #: src/window.js:515 msgid "Show Less" msgstr "Show Less" #: src/window.js:648 msgid "No Results Found" msgstr "No Results Found" #: src/window.js:648 src/window.js:1517 msgid "No History" msgstr "No History" #: src/window.js:818 data/ui/window.blp:260 msgid "No Treatments" msgstr "No Treatments" #: src/window.js:818 msgid "All Done for Today" msgstr "All Done for Today" #: src/window.js:906 src/window.js:1090 data/ui/one-time-dialog.blp:285 #: data/ui/preferences.blp:73 msgid "Confirm" msgstr "Confirm" #: src/window.js:906 msgid "Confirm All" msgstr "Confirm All" #: src/window.js:907 data/ui/preferences.blp:84 data/ui/window.blp:146 msgid "Skip" msgstr "Skip" #: src/window.js:907 msgid "Skip All" msgstr "Skip All" #. TRANSLATORS: keep the %d it's where the number goes #: src/window.js:938 #, javascript-format msgid "and %d more" msgstr "and %d more" #: src/window.js:1090 data/ui/one-time-dialog.blp:7 data/ui/window.blp:133 msgid "One-Time Entry" msgstr "One-Time Entry" #: src/window.js:1295 data/ui/window.blp:353 msgid "Quit" msgstr "Quit" #: data/ui/edit-hist-dialog.blp:7 msgid "Edit Entry" msgstr "Edit Entry" #: data/ui/med-dialog.blp:7 msgid "New Treatment" msgstr "New Treatment" #: data/ui/med-dialog.blp:31 data/ui/window.blp:283 msgid "Add" msgstr "Add" #: data/ui/med-dialog.blp:69 data/ui/one-time-dialog.blp:58 msgid "Color" msgstr "Colour" #. TRANSLATORS: Tooltip for the colors (from Default until Purple) #: data/ui/med-dialog.blp:94 data/ui/one-time-dialog.blp:83 msgid "Default" msgstr "Default" #: data/ui/med-dialog.blp:106 data/ui/one-time-dialog.blp:95 msgid "Red" msgstr "Red" #: data/ui/med-dialog.blp:118 data/ui/one-time-dialog.blp:107 msgid "Orange" msgstr "Orange" #: data/ui/med-dialog.blp:130 data/ui/one-time-dialog.blp:119 msgid "Yellow" msgstr "Yellow" #: data/ui/med-dialog.blp:142 data/ui/one-time-dialog.blp:131 msgid "Green" msgstr "Green" #: data/ui/med-dialog.blp:154 data/ui/one-time-dialog.blp:143 msgid "Cyan" msgstr "Cyan" #: data/ui/med-dialog.blp:166 data/ui/one-time-dialog.blp:155 msgid "Blue" msgstr "Blue" #: data/ui/med-dialog.blp:178 data/ui/one-time-dialog.blp:167 msgid "Purple" msgstr "Purple" #: data/ui/med-dialog.blp:188 data/ui/one-time-dialog.blp:177 msgid "Unit" msgstr "Unit" #: data/ui/med-dialog.blp:197 msgid "Icon" msgstr "Icon" #. TRANSLATORS: Tooltip for the icons (from Pill until Potion) #: data/ui/med-dialog.blp:226 msgid "Pill" msgstr "Pill" #: data/ui/med-dialog.blp:242 msgid "Alternative Pill" msgstr "Alternative Pill" #: data/ui/med-dialog.blp:258 msgid "Capsule" msgstr "Capsule" #: data/ui/med-dialog.blp:274 msgid "Round Pill" msgstr "Round Pill" #: data/ui/med-dialog.blp:290 msgid "Alternative Round Pill" msgstr "Alternative Round Pill" #: data/ui/med-dialog.blp:306 msgid "Ampoule" msgstr "Ampoule" #: data/ui/med-dialog.blp:322 msgid "Injection" msgstr "Injection" #: data/ui/med-dialog.blp:338 msgid "Square Pill" msgstr "Square Pill" #: data/ui/med-dialog.blp:354 msgid "Alternative Square Pill" msgstr "Alternative Square Pill" #: data/ui/med-dialog.blp:370 msgid "Triangle pill" msgstr "Triangle pill" #: data/ui/med-dialog.blp:386 msgid "Alternative Triangle Pill" msgstr "Alternative Triangle Pill" #: data/ui/med-dialog.blp:402 msgid "Bottle" msgstr "Bottle" #: data/ui/med-dialog.blp:418 msgid "Drops" msgstr "Drops" #: data/ui/med-dialog.blp:434 msgid "Potion" msgstr "Potion" #: data/ui/med-dialog.blp:457 msgid "Every Day" msgstr "Every Day" #: data/ui/med-dialog.blp:473 msgid "Choose Days" msgstr "Choose Days" #: data/ui/med-dialog.blp:572 msgid "Choose Day" msgstr "Choose Day" #: data/ui/med-dialog.blp:617 msgid "Change Cycle" msgstr "Change Cycle" #: data/ui/med-dialog.blp:642 msgid "Days Active" msgstr "Days Active" #: data/ui/med-dialog.blp:656 msgid "Days Inactive" msgstr "Days Inactive" #. TRANSLATORS: Day in cycle, try to keep it short #: data/ui/med-dialog.blp:671 msgid "Today is Cycle Day…" msgstr "Today is Cycle Day…" #: data/ui/med-dialog.blp:694 msgid "Increase Notification Priority" msgstr "Increase Notification Priority" #: data/ui/med-dialog.blp:695 msgid "Show in fullscreen mode or with 'Do Not Disturb' enabled" msgstr "Show in fullscreen mode or with 'Do Not Disturb' enabled" #: data/ui/med-dialog.blp:699 msgid "Recurring Notifications" msgstr "Recurring Notifications" #: data/ui/med-dialog.blp:700 msgid "Renotify until it's confirmed or skipped" msgstr "Renotify until it's confirmed or skipped" #: data/ui/med-dialog.blp:705 msgid "Interval in Minutes" msgstr "Interval in Minutes" #: data/ui/med-dialog.blp:718 data/ui/refill-dialog.blp:36 msgid "Inventory" msgstr "Inventory" #: data/ui/med-dialog.blp:719 msgid "Manage your stock" msgstr "Manage your stock" #: data/ui/med-dialog.blp:725 msgid "Current" msgstr "Current" #: data/ui/med-dialog.blp:738 msgid "Remind Me At" msgstr "Remind Me At" #: data/ui/med-dialog.blp:751 msgid "Refill Amount" msgstr "Refill Amount" #: data/ui/med-dialog.blp:765 msgid "Set start and end dates" msgstr "Set start and end dates" #: data/ui/med-dialog.blp:785 data/ui/med-dialog.blp:827 #: data/ui/one-time-dialog.blp:243 msgid "Choose Date" msgstr "Choose Date" #: data/ui/med-dialog.blp:855 msgid "Mark as Confirmed" msgstr "Mark as Confirmed" #: data/ui/med-dialog.blp:856 msgid "" "If not manually confirmed or skipped, it will be recorded as confirmed in " "history, reducing stock if enabled" msgstr "" "If not manually confirmed or skipped, it will be recorded as confirmed in " "history, reducing stock if enabled" #: data/ui/one-time-dialog.blp:44 msgid "From Treatment List" msgstr "From Treatment List" #: data/ui/one-time-dialog.blp:182 msgid "Amount" msgstr "Amount" #: data/ui/preferences.blp:7 data/ui/window.blp:338 msgid "Preferences" msgstr "Preferences" #: data/ui/preferences.blp:17 msgid "Auto-Start at Login" msgstr "Auto-Start at Login" #: data/ui/preferences.blp:28 msgid "Auto-Clear History" msgstr "Auto-Clear History" #: data/ui/preferences.blp:29 msgid "Keeps a maximum of 30 days" msgstr "Keeps a maximum of 30 days" #: data/ui/preferences.blp:40 msgid "Low Stock Notification" msgstr "Low Stock Notification" #: data/ui/preferences.blp:41 msgid "Send reminders when treatments are low in stock" msgstr "Send reminders when treatments are low in stock" #: data/ui/preferences.blp:52 msgid "Notification Sound" msgstr "Notification Sound" #: data/ui/preferences.blp:63 msgid "Notification Buttons" msgstr "Notification Buttons" #: data/ui/preferences.blp:64 msgid "Show or hide confirm/skip" msgstr "Show or hide confirm/skip" #: data/ui/preferences.blp:98 msgid "Export History As" msgstr "Export History As" #: data/ui/preferences.blp:121 msgid "Export Treatments As" msgstr "Export Treatments As" #: data/ui/shortcuts-dialog.blp:8 msgid "Shortcuts" msgstr "Shortcuts" #: data/ui/shortcuts-dialog.blp:11 msgctxt "shortcut window" msgid "Show/Hide 'As Needed'" msgstr "Show/Hide 'As Needed'" #: data/ui/shortcuts-dialog.blp:16 msgctxt "shortcut window" msgid "New One-Time Entry" msgstr "New One-Time Entry" #: data/ui/shortcuts-dialog.blp:21 msgctxt "shortcut window" msgid "Add New Treatment" msgstr "Add New Treatment" #: data/ui/shortcuts-dialog.blp:26 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Show Shortcuts" #: data/ui/shortcuts-dialog.blp:31 msgctxt "shortcut window" msgid "Quit" msgstr "Quit" #: data/ui/window.blp:23 msgid "Show/Hide 'As Needed'" msgstr "Show/Hide 'As Needed'" #: data/ui/window.blp:31 msgid "Search" msgstr "Search" #: data/ui/window.blp:39 msgid "Sort Treatments" msgstr "Sort Treatments" #: data/ui/window.blp:48 msgid "Main Menu" msgstr "Main Menu" #: data/ui/window.blp:61 msgid "Search…" msgstr "Search…" #: data/ui/window.blp:71 msgid "Today" msgstr "Today" #: data/ui/window.blp:117 data/ui/window.blp:210 msgid "Unselect" msgstr "Unselect" #: data/ui/window.blp:220 msgid "Remove Entries" msgstr "Remove Entries" #: data/ui/window.blp:300 msgid "Name Ascending" msgstr "Name Ascending" #: data/ui/window.blp:306 msgid "Remaining Stock (Lowest First)" msgstr "Remaining Stock (Lowest First)" #: data/ui/window.blp:312 msgid "Remaining Stock (Highest First)" msgstr "Remaining Stock (Highest First)" #: data/ui/window.blp:318 msgid "As Needed Last" msgstr "As Needed Last" #: data/ui/window.blp:324 msgid "Ended Last" msgstr "Ended Last" #: data/ui/window.blp:330 msgid "As Needed/Ended Last" msgstr "As Needed/Ended Last" #: data/ui/window.blp:343 msgid "Keyboard Shortcuts" msgstr "Keyboard Shortcuts" #: data/ui/window.blp:348 msgid "About Dosage" msgstr "About Dosage" #~ msgid "Empty Treatments" #~ msgstr "Empty Treatments" #~ msgid "Empty History" #~ msgstr "Empty History" #~ msgid "No Treatments Added" #~ msgstr "No Treatments Added" #~ msgctxt "shortcut window" #~ msgid "General" #~ msgstr "General" #~ msgctxt "shortcut window" #~ msgid "Preferences" #~ msgstr "Preferences" #~ msgid "After meal" #~ msgstr "After meal" #~ msgid "Refill Stock" #~ msgstr "Refill Stock" #~ msgid "Low Stock" #~ msgstr "Low Stock" #~ msgid "Form" #~ msgstr "Form" #~ msgid "Color and icon" #~ msgstr "Colour and icon" #~ msgid "Time and amount" #~ msgstr "Time and amount" #~ msgid "Restore" #~ msgstr "Restore" #~ msgid "New entry" #~ msgstr "New entry" #~ msgid "Delete dose" #~ msgstr "Delete dose" #~ msgid "Name already exists" #~ msgstr "Name already exists" diegopvlk-Dosage-bd9126a/po/es.po000066400000000000000000000546241514145341100167070ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) 2023 Diego Povliuk # This file is distributed under the license GPLv3-or-later. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: io.github.diegopvlk.Dosage\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-12-19 16:12-0300\n" "PO-Revision-Date: 2025-12-19 12:22+0000\n" "Last-Translator: Diego Povliuk \n" "Language-Team: Spanish \n" "Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 5.15.1\n" #. TRANSLATORS: App name, translate to your language and follow the capitalization #: data/io.github.diegopvlk.Dosage.appdata.xml.in:20 #: data/io.github.diegopvlk.Dosage.desktop.in:3 #: src/utils/getTreatmentsExportFile.js:173 src/utils/saveFiles.js:22 #: src/utils/saveFiles.js:44 src/main.js:60 src/window.js:1060 #: data/ui/window.blp:6 msgid "Dosage" msgstr "Dosificacion" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:21 msgid "Keep track of your treatments" msgstr "Lleve un registro de sus tratamientos" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:24 msgid "" "Easily manage and track treatments with Dosage: notifications, history, " "multiple doses, flexible frequency, customization, stock monitoring, and " "duration control" msgstr "" "Administre fácilmente los tratamientos con Dosis: Notificaciones, Historial, " "Dosis Múltiples, Frecuencia Flexible, Personalización, Monitoreo del Stock y " "duración" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:25 msgid "Features:" msgstr "Características:" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:27 msgid "Notifications — Get reminders at the right time" msgstr "Notificaciones — Reciba recordatorios en el momento oportuno" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:28 msgid "History — See which medications you took, skipped or missed" msgstr "Historial — Vea qué medicamentos ha tomado, saltó u omitido" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:29 msgid "Dosage management — Multiple doses with different times" msgstr "Gestión de la dosificación — Múltiples dosis con diferentes tiempos" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:30 msgid "" "Frequency modes — Every day, specific days, cycle or just when necessary" msgstr "" "Modos de frecuencia - Todos los días, días concretos, un ciclo o sólo cuando " "sea necesario" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:31 msgid "Color and icon — Give a shape for your treatment" msgstr "Color e icono — Dé forma a su tratamiento" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:32 msgid "Inventory tracking — Monitor your stock and get reminded when it's low" msgstr "" "Seguimiento del inventario — Controle sus existencias y reciba recordatorios " "cuando se agoten" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:33 msgid "Duration — Define the start and end dates" msgstr "Duración — Defina las fechas de inicio y fin" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:44 msgid "Dosage today window in light theme" msgstr "Ventana de \"Dosis para hoy\" en tema claro" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:49 msgid "Dosage preferences window in light theme" msgstr "Ventana de preferencias de Dosis en tema claro" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:54 msgid "Dosage edit treatment window in light theme" msgstr "Ventana del tratamiento de edición de la Dosis en tema claro" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:59 msgid "Dosage today window in dark theme" msgstr "Ventana de la Dosis para hoy en tema oscuro" #. TRANSLATORS: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/io.github.diegopvlk.Dosage.desktop.in:10 msgid "Medication;Tracker;Reminder;Today;Treatments;Pill;Drug;Remedy;" msgstr "Medicación;Rastreador;Recordatorio;Hoy;Tratamientos;Pastilla;Medicamento;Remedio;" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:232 msgid "Date" msgstr "Fecha" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:199 msgid "Time" msgstr "Tiempo" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/med-dialog.blp:61 data/ui/one-time-dialog.blp:49 msgid "Name" msgstr "Nombre" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:183 msgid "Dose" msgstr "Dosis" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 msgid "Status" msgstr "Estado" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 msgid "Time Confirmed" msgstr "Tiempo Confirmado" #: src/utils/getHistoryExportFile.js:38 src/utils/getHistoryExportFile.js:117 #: src/editHistDialog.js:68 src/historyFactory.js:186 msgid "Missed" msgstr "Perdido" #: src/utils/getHistoryExportFile.js:41 src/utils/getHistoryExportFile.js:121 #: src/historyFactory.js:183 data/ui/edit-hist-dialog.blp:111 msgid "Skipped" msgstr "Omitido" #: src/utils/getHistoryExportFile.js:44 src/utils/getHistoryExportFile.js:55 #: src/utils/getHistoryExportFile.js:125 src/utils/getHistoryExportFile.js:138 #: src/editHistDialog.js:73 src/historyFactory.js:190 #: data/ui/edit-hist-dialog.blp:116 msgid "Confirmed" msgstr "Confirmado" #: src/utils/getHistoryExportFile.js:52 src/utils/getHistoryExportFile.js:134 #: src/editHistDialog.js:56 src/historyFactory.js:178 msgid "Auto-Confirmed" msgstr "Automáticamente Confirmado" #: src/utils/getHistoryExportFile.js:55 src/utils/getHistoryExportFile.js:138 #: src/editHistDialog.js:74 msgid "Time Unknown" msgstr "Tiempo Desconocido" #. TRANSLATORS: Context: 1 Pill at 19:00 #: src/utils/getTreatmentsExportFile.js:69 msgid "at" msgstr "a las" #: src/utils/getTreatmentsExportFile.js:89 data/ui/med-dialog.blp:443 msgid "Notes" msgstr "Notas" #: src/utils/getTreatmentsExportFile.js:96 src/utils/locale.js:37 #: src/treatmentsFactory.js:268 msgid "Daily" msgstr "Diario" #: src/utils/getTreatmentsExportFile.js:102 src/medDialog.js:428 #: data/ui/med-dialog.blp:459 msgid "Day of Month" msgstr "Día del Mes" #. TRANSLATORS: Context: 2 day(s) on, 1 day(s) off #: src/utils/getTreatmentsExportFile.js:109 msgid "day(s) on" msgstr "día(s) sí" #. TRANSLATORS: Context: 2 day(s) on, 1 day(s) off #: src/utils/getTreatmentsExportFile.js:111 msgid "day(s) off" msgstr "día(s) no" #: src/utils/getTreatmentsExportFile.js:122 src/todayFactory.js:41 #: src/treatmentsFactory.js:298 data/ui/med-dialog.blp:461 msgid "As Needed" msgstr "En Caso Necesario" #: src/utils/getTreatmentsExportFile.js:132 data/ui/med-dialog.blp:764 msgid "Duration" msgstr "Duración" #: src/utils/getTreatmentsExportFile.js:135 msgid "Started on" msgstr "Iniciado el" #: src/utils/getTreatmentsExportFile.js:136 data/ui/med-dialog.blp:775 msgid "Start" msgstr "Inicio" #: src/utils/getTreatmentsExportFile.js:138 src/treatmentsFactory.js:256 msgid "Ended on" msgstr "Terminado el" #: src/utils/getTreatmentsExportFile.js:138 data/ui/med-dialog.blp:817 msgid "End" msgstr "Fin" #: src/utils/getTreatmentsExportFile.js:173 src/utils/saveFiles.js:44 #: data/ui/window.blp:234 msgid "Treatments" msgstr "Tratamientos" #: src/utils/getTreatmentsExportFile.js:184 msgid "Generated on" msgstr "Generado el" #: src/utils/getTreatmentsExportFile.js:187 msgid "Ongoing" msgstr "En curso" #: src/utils/getTreatmentsExportFile.js:188 msgid "Non-scheduled" msgstr "No programado" #: src/utils/getTreatmentsExportFile.js:189 msgid "Finished" msgstr "Terminado" #: src/utils/locale.js:33 msgid "Weekends" msgstr "Fines de Semana" #: src/utils/locale.js:35 msgid "Weekdays" msgstr "Días Laborables" #: src/utils/saveFiles.js:22 data/ui/window.blp:156 msgid "History" msgstr "Historial" #: src/editHistDialog.js:60 src/editHistDialog.js:89 src/editHistDialog.js:110 msgid "Confirmed At" msgstr "Confirmado En" #: src/editHistDialog.js:64 src/editHistDialog.js:114 msgid "Skipped At" msgstr "Omitido En" #: src/historyFactory.js:47 msgid "Select to be Removed" msgstr "Selecciona Para Eliminar" #. TRANSLATORS: "Your Name " #: src/main.js:69 msgid "translator-credits" msgstr "Sergio Varela " #: src/main.js:73 msgid "Thanks to These Projects!" msgstr "¡Gracias a Estos Proyectos!" #: src/medDialog.js:99 msgid "Edit Treatment" msgstr "Editar Tratamiento" #: src/medDialog.js:100 data/ui/edit-hist-dialog.blp:30 #: data/ui/preferences.blp:112 data/ui/preferences.blp:132 #: data/ui/refill-dialog.blp:67 msgid "Save" msgstr "Guardar" #: src/medDialog.js:114 msgid "Copy" msgstr "Copia" #: src/medDialog.js:217 msgid "Add Dose" msgstr "Añadir Dosis" #: src/medDialog.js:419 msgid "Choose" msgstr "Seleccione" #: src/medDialog.js:429 src/treatmentsFactory.js:274 msgid "Day" msgstr "Día" #: src/medDialog.js:456 data/ui/med-dialog.blp:458 msgid "Specific Days" msgstr "Días Específicos" #: src/medDialog.js:463 src/treatmentsFactory.js:295 data/ui/med-dialog.blp:460 msgid "Cycle" msgstr "Ciclo" #: src/medDialog.js:467 data/ui/med-dialog.blp:452 msgid "Frequency" msgstr "Frecuencia" #: src/medDialog.js:500 msgid "Empty Name" msgstr "Nombre Vacío" #: src/medDialog.js:506 msgid "Empty Unit" msgstr "Unidad Vacía" #: src/medDialog.js:513 msgid "Choose at Least One Day" msgstr "Elija al Menos un Día" #: src/medDialog.js:527 src/oneTimeDialog.js:187 msgid "Name Already on Treatment List" msgstr "Nombre Ya Incluido en la Lista de Tratamiento" #: src/medDialog.js:542 msgid "Duplicated Time" msgstr "Hora Duplicada" #: src/medDialog.js:582 msgid "Are You Sure?" msgstr "¿Estás Seguro?" #: src/medDialog.js:583 msgid "will be deleted" msgstr "será eliminado" #: src/medDialog.js:586 data/ui/edit-hist-dialog.blp:18 #: data/ui/med-dialog.blp:19 msgid "Cancel" msgstr "Cancelar" #: src/medDialog.js:587 src/treatmentsFactory.js:128 data/ui/med-dialog.blp:865 msgid "Delete" msgstr "Eliminar" #: src/oneTimeDialog.js:110 msgid "New" msgstr "Nuevo" #: src/oneTimeDialog.js:121 data/ui/med-dialog.blp:189 #: data/ui/one-time-dialog.blp:178 msgid "Pill(s)" msgstr "Píldora(s)" #: src/prefsDialog.js:63 msgid "Accept to allow running in the background and receive notifications" msgstr "" "Aceptar para permitir la ejecución en segundo plano y recibir notificaciones" #: src/prefsDialog.js:74 src/window.js:259 msgid "An Issue Has Occurred" msgstr "Un Problema Ha Ocurrido" #: src/prefsDialog.js:77 src/window.js:267 src/window.js:289 src/window.js:311 #: src/window.js:329 msgid "Close" msgstr "Cerrar" #: src/timeDoseRow.js:34 msgid "Remove Dose" msgstr "Remover Dosis" #: src/timeDoseRow.js:40 data/ui/edit-hist-dialog.blp:90 #: data/ui/one-time-dialog.blp:210 msgid "Change Time" msgstr "Cambiar Tiempo" #: src/todayFactory.js:134 msgid "Change Dose" msgstr "Cambiar la Dosis" #: src/treatmentsFactory.js:96 src/treatmentsFactory.js:126 #: data/ui/refill-dialog.blp:7 msgid "Refill" msgstr "Rellenar" #: src/treatmentsFactory.js:125 msgid "Edit" msgstr "Editar" #: src/treatmentsFactory.js:127 msgid "Duplicate" msgstr "Duplicar" #: src/treatmentsFactory.js:146 msgid "Options" msgstr "Opciones" #. TRANSLATORS: keep the %d it's where the number goes #: src/treatmentsFactory.js:244 #, javascript-format msgid "%d Remaining" msgstr "%d Restantes" #. TRANSLATORS: label for when duration is enabled #: src/treatmentsFactory.js:254 msgid "Starts on" msgstr "Comienza el" #: src/treatmentsFactory.js:255 msgid "Until" msgstr "Hasta" #: src/treatmentsFactory.js:283 src/treatmentsFactory.js:286 msgid "Next Dose" msgstr "Siguiente Dosis" #: src/window.js:173 src/window.js:943 msgid "Reminder" msgstr "Recordatorio" #. TRANSLATORS: Notification text for when the inventory is low #: src/window.js:175 msgid "You have treatments low in stock" msgstr "Dispone de tratamientos bajos en stock" #: src/window.js:492 msgid "Show All" msgstr "Mostrar Todo" #: src/window.js:515 msgid "Show Less" msgstr "Mostrar Menos" #: src/window.js:648 msgid "No Results Found" msgstr "No se Encontraron Resultados" #: src/window.js:648 src/window.js:1517 msgid "No History" msgstr "Historial Vacío" #: src/window.js:818 data/ui/window.blp:260 msgid "No Treatments" msgstr "Sin Tratamientos" #: src/window.js:818 msgid "All Done for Today" msgstr "Todo Hecho por Hoy" #: src/window.js:906 src/window.js:1090 data/ui/one-time-dialog.blp:285 #: data/ui/preferences.blp:73 msgid "Confirm" msgstr "Confirmar" #: src/window.js:906 msgid "Confirm All" msgstr "Confirmar Todo" #: src/window.js:907 data/ui/preferences.blp:84 data/ui/window.blp:146 msgid "Skip" msgstr "Omitir" #: src/window.js:907 msgid "Skip All" msgstr "Omitir Todo" #. TRANSLATORS: keep the %d it's where the number goes #: src/window.js:938 #, javascript-format msgid "and %d more" msgstr "y %d más" #: src/window.js:1090 data/ui/one-time-dialog.blp:7 data/ui/window.blp:133 msgid "One-Time Entry" msgstr "Entrada Única" #: src/window.js:1295 data/ui/window.blp:353 msgid "Quit" msgstr "Salir" #: data/ui/edit-hist-dialog.blp:7 msgid "Edit Entry" msgstr "Editar Entrada" #: data/ui/med-dialog.blp:7 msgid "New Treatment" msgstr "Nuevo Tratamiento" #: data/ui/med-dialog.blp:31 data/ui/window.blp:283 msgid "Add" msgstr "Añadir" #: data/ui/med-dialog.blp:69 data/ui/one-time-dialog.blp:58 msgid "Color" msgstr "Color" #. TRANSLATORS: Tooltip for the colors (from Default until Purple) #: data/ui/med-dialog.blp:94 data/ui/one-time-dialog.blp:83 msgid "Default" msgstr "Predeterminado" #: data/ui/med-dialog.blp:106 data/ui/one-time-dialog.blp:95 msgid "Red" msgstr "Rojo" #: data/ui/med-dialog.blp:118 data/ui/one-time-dialog.blp:107 msgid "Orange" msgstr "Naranja" #: data/ui/med-dialog.blp:130 data/ui/one-time-dialog.blp:119 msgid "Yellow" msgstr "Amarillo" #: data/ui/med-dialog.blp:142 data/ui/one-time-dialog.blp:131 msgid "Green" msgstr "Verde" #: data/ui/med-dialog.blp:154 data/ui/one-time-dialog.blp:143 msgid "Cyan" msgstr "Cian" #: data/ui/med-dialog.blp:166 data/ui/one-time-dialog.blp:155 msgid "Blue" msgstr "Azul" #: data/ui/med-dialog.blp:178 data/ui/one-time-dialog.blp:167 msgid "Purple" msgstr "Morado" #: data/ui/med-dialog.blp:188 data/ui/one-time-dialog.blp:177 msgid "Unit" msgstr "Unidad" #: data/ui/med-dialog.blp:197 msgid "Icon" msgstr "Icono" #. TRANSLATORS: Tooltip for the icons (from Pill until Potion) #: data/ui/med-dialog.blp:226 msgid "Pill" msgstr "Píldora" #: data/ui/med-dialog.blp:242 msgid "Alternative Pill" msgstr "Píldora Alternativa" #: data/ui/med-dialog.blp:258 msgid "Capsule" msgstr "Cápsula" #: data/ui/med-dialog.blp:274 msgid "Round Pill" msgstr "Píldora Redonda" #: data/ui/med-dialog.blp:290 msgid "Alternative Round Pill" msgstr "Píldora Redonda Alternativa" #: data/ui/med-dialog.blp:306 msgid "Ampoule" msgstr "Ampolla" #: data/ui/med-dialog.blp:322 msgid "Injection" msgstr "Inyección" #: data/ui/med-dialog.blp:338 msgid "Square Pill" msgstr "Pastilla Cuadrada" #: data/ui/med-dialog.blp:354 msgid "Alternative Square Pill" msgstr "Píldora Cuadrada Alternativa" #: data/ui/med-dialog.blp:370 msgid "Triangle pill" msgstr "Píldora Triangular" #: data/ui/med-dialog.blp:386 msgid "Alternative Triangle Pill" msgstr "Píldora Triangular Alternativa" #: data/ui/med-dialog.blp:402 msgid "Bottle" msgstr "Botella" #: data/ui/med-dialog.blp:418 msgid "Drops" msgstr "Gotas" #: data/ui/med-dialog.blp:434 msgid "Potion" msgstr "Poción" #: data/ui/med-dialog.blp:457 msgid "Every Day" msgstr "Cada Día" #: data/ui/med-dialog.blp:473 msgid "Choose Days" msgstr "Elegir Días" #: data/ui/med-dialog.blp:572 msgid "Choose Day" msgstr "Elige el Día" #: data/ui/med-dialog.blp:617 msgid "Change Cycle" msgstr "Cambiar Ciclo" #: data/ui/med-dialog.blp:642 msgid "Days Active" msgstr "Días Activos" #: data/ui/med-dialog.blp:656 msgid "Days Inactive" msgstr "Días Inactivos" #. TRANSLATORS: Day in cycle, try to keep it short #: data/ui/med-dialog.blp:671 msgid "Today is Cycle Day…" msgstr "Hoy Es el Día del Ciclo…" #: data/ui/med-dialog.blp:694 msgid "Increase Notification Priority" msgstr "Aumentar la Prioridad de las Notificaciones" #: data/ui/med-dialog.blp:695 msgid "Show in fullscreen mode or with 'Do Not Disturb' enabled" msgstr "" "Hace que la notificación se muestre en modo de pantalla completa o incluso " "si el modo «No molestar» está activado" #: data/ui/med-dialog.blp:699 msgid "Recurring Notifications" msgstr "Notificaciones Recurrentes" #: data/ui/med-dialog.blp:700 msgid "Renotify until it's confirmed or skipped" msgstr "Notificar de nuevo hasta que se confirme o se omita" #: data/ui/med-dialog.blp:705 msgid "Interval in Minutes" msgstr "Intervalo en Minutos" #: data/ui/med-dialog.blp:718 data/ui/refill-dialog.blp:36 msgid "Inventory" msgstr "Inventario" #: data/ui/med-dialog.blp:719 msgid "Manage your stock" msgstr "Gestione sus existencias" #: data/ui/med-dialog.blp:725 msgid "Current" msgstr "Actual" #: data/ui/med-dialog.blp:738 msgid "Remind Me At" msgstr "Recuérdemelo En" #: data/ui/med-dialog.blp:751 msgid "Refill Amount" msgstr "Rellenar Cantidad" #: data/ui/med-dialog.blp:765 msgid "Set start and end dates" msgstr "Fijar fechas de inicio y fin" #: data/ui/med-dialog.blp:785 data/ui/med-dialog.blp:827 #: data/ui/one-time-dialog.blp:243 msgid "Choose Date" msgstr "Elija la Fecha" #: data/ui/med-dialog.blp:855 msgid "Mark as Confirmed" msgstr "Marcar como Confirmado" #: data/ui/med-dialog.blp:856 msgid "" "If not manually confirmed or skipped, it will be recorded as confirmed in " "history, reducing stock if enabled" msgstr "" "Si no es marcado como confirmado o saltado, sera registrado en el historial, " "reduciendo la cantidad del stock cuando aplique" #: data/ui/one-time-dialog.blp:44 msgid "From Treatment List" msgstr "De la Lista de Tratamientos" #: data/ui/one-time-dialog.blp:182 msgid "Amount" msgstr "Cantidad" #: data/ui/preferences.blp:7 data/ui/window.blp:338 msgid "Preferences" msgstr "Preferencias" #: data/ui/preferences.blp:17 msgid "Auto-Start at Login" msgstr "Arranque Automático al Iniciar Sesión" #: data/ui/preferences.blp:28 msgid "Auto-Clear History" msgstr "Borrar Historial Automáticamente" #: data/ui/preferences.blp:29 msgid "Keeps a maximum of 30 days" msgstr "Mantener máximo 30 días" #: data/ui/preferences.blp:40 msgid "Low Stock Notification" msgstr "Notificación de Stock Bajo" #: data/ui/preferences.blp:41 msgid "Send reminders when treatments are low in stock" msgstr "Enviar recordatorios cuando se agoten las existencias de tratamientos" #: data/ui/preferences.blp:52 msgid "Notification Sound" msgstr "Sonido de Notificación" #: data/ui/preferences.blp:63 msgid "Notification Buttons" msgstr "Botones de Notificación" #: data/ui/preferences.blp:64 msgid "Show or hide confirm/skip" msgstr "Mostrar u ocultar confirmar/saltar" #: data/ui/preferences.blp:98 msgid "Export History As" msgstr "Exportar Historial Como" #: data/ui/preferences.blp:121 msgid "Export Treatments As" msgstr "Exportar Tratamientos Como" #: data/ui/shortcuts-dialog.blp:8 msgid "Shortcuts" msgstr "Atajos" #: data/ui/shortcuts-dialog.blp:11 msgctxt "shortcut window" msgid "Show/Hide 'As Needed'" msgstr "Mostrar / Ocultar \"Cuando Sea Necesario\"" #: data/ui/shortcuts-dialog.blp:16 msgctxt "shortcut window" msgid "New One-Time Entry" msgstr "Nueva Entrada Única" #: data/ui/shortcuts-dialog.blp:21 msgctxt "shortcut window" msgid "Add New Treatment" msgstr "Añadir Nuevo Tratamiento" #: data/ui/shortcuts-dialog.blp:26 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Mostrar Atajos" #: data/ui/shortcuts-dialog.blp:31 msgctxt "shortcut window" msgid "Quit" msgstr "Salir" #: data/ui/window.blp:23 msgid "Show/Hide 'As Needed'" msgstr "Mostrar / Ocultar \"Cuando Sea Necesario\"" #: data/ui/window.blp:31 msgid "Search" msgstr "Buscar" #: data/ui/window.blp:39 msgid "Sort Treatments" msgstr "Ordenar Tratamientos" #: data/ui/window.blp:48 msgid "Main Menu" msgstr "Menú Principal" #: data/ui/window.blp:61 msgid "Search…" msgstr "Buscar…" #: data/ui/window.blp:71 msgid "Today" msgstr "Hoy" #: data/ui/window.blp:117 data/ui/window.blp:210 msgid "Unselect" msgstr "Deseleccionar" #: data/ui/window.blp:220 msgid "Remove Entries" msgstr "Eliminar Entradas" #: data/ui/window.blp:300 msgid "Name Ascending" msgstr "Nombre Ascendente" #: data/ui/window.blp:306 msgid "Remaining Stock (Lowest First)" msgstr "Stock Restante (Menor Cantidad Primero)" #: data/ui/window.blp:312 msgid "Remaining Stock (Highest First)" msgstr "Stock Restante (Mayor Cantidad Primero)" #: data/ui/window.blp:318 msgid "As Needed Last" msgstr "En Caso Necesarios al Final" #: data/ui/window.blp:324 msgid "Ended Last" msgstr "Terminados al Final" #: data/ui/window.blp:330 msgid "As Needed/Ended Last" msgstr "En Caso Necesarios/Terminados al Final" #: data/ui/window.blp:343 msgid "Keyboard Shortcuts" msgstr "Atajos de teclado" #: data/ui/window.blp:348 msgid "About Dosage" msgstr "Acerca de Dosis" #~ msgid "Empty Treatments" #~ msgstr "Tratamientos Vacíos" #~ msgid "Empty History" #~ msgstr "Historial Vacío" #~ msgid "No Treatments Added" #~ msgstr "Sin Tratamientos Añadidos" #~ msgctxt "shortcut window" #~ msgid "General" #~ msgstr "General" #~ msgctxt "shortcut window" #~ msgid "Preferences" #~ msgstr "Preferencias" #~ msgid "After meal" #~ msgstr "Después de Comer" #~ msgid "Refill Stock" #~ msgstr "Rellenar Cantidad" #~ msgid "Low Stock" #~ msgstr "Pocas Existencias" #~ msgid "Form" #~ msgstr "Forma" #~ msgid "Color and icon" #~ msgstr "Color e icono" #~ msgid "Time and amount" #~ msgstr "Tiempo y cantidad" #~ msgid "Restore" #~ msgstr "Restaurar" #~ msgid "New entry" #~ msgstr "Nueva entrada" #~ msgid "Name already exists" #~ msgstr "El nombre ya existe" #~ msgid "Add to history" #~ msgstr "Añadir al historial" #~ msgid "medication" #~ msgstr "medicamentos" #~ msgid "tracker" #~ msgstr "rastreador" #~ msgid "treatments" #~ msgstr "tratamientos" #~ msgid "pill" #~ msgstr "pastilla" #~ msgid "drug" #~ msgstr "fármaco" #~ msgid "remedy" #~ msgstr "remedio" #~ msgid "Su" #~ msgstr "Do" #~ msgid "Mo" #~ msgstr "Lu" #~ msgid "Tu" #~ msgstr "Mar" #~ msgid "We" #~ msgstr "Mie" #~ msgid "Th" #~ msgstr "Ju" #~ msgid "Fr" #~ msgstr "Vi" #~ msgid "Sa" #~ msgstr "Sa" #~ msgid "Sunday" #~ msgstr "Domingo" #~ msgid "Monday" #~ msgstr "Lunes" #~ msgid "Tuesday" #~ msgstr "Martes" #~ msgid "Wednesday" #~ msgstr "Miércoles" #~ msgid "Thursday" #~ msgstr "Jueves" #~ msgid "Friday" #~ msgstr "Viernes" #~ msgid "Saturday" #~ msgstr "Sábado" diegopvlk-Dosage-bd9126a/po/et.po000066400000000000000000000526361514145341100167110ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) 2023 Diego Povliuk # This file is distributed under the license GPLv3-or-later. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: io.github.diegopvlk.Dosage\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-12-19 16:12-0300\n" "PO-Revision-Date: 2025-12-22 17:18+0000\n" "Last-Translator: Priit Jõerüüt \n" "Language-Team: Estonian \n" "Language: et\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 5.15.1\n" #. TRANSLATORS: App name, translate to your language and follow the capitalization #: data/io.github.diegopvlk.Dosage.appdata.xml.in:20 #: data/io.github.diegopvlk.Dosage.desktop.in:3 #: src/utils/getTreatmentsExportFile.js:173 src/utils/saveFiles.js:22 #: src/utils/saveFiles.js:44 src/main.js:60 src/window.js:1060 #: data/ui/window.blp:6 msgid "Dosage" msgstr "Ravimiannused" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:21 msgid "Keep track of your treatments" msgstr "Pea arvet oma ravimite annuste üle ravikuurides" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:24 msgid "" "Easily manage and track treatments with Dosage: notifications, history, " "multiple doses, flexible frequency, customization, stock monitoring, and " "duration control" msgstr "" "Ravimiannuste rakendus aitab sul mugavalt pidada arvet oma ravikuuride üle: " "teavitused, erinevad annustused, ajalugu, paindlik sagedus, kohandamine, " "varude seis ka kestuse haldus" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:25 msgid "Features:" msgstr "Funktsionaalsused:" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:27 msgid "Notifications — Get reminders at the right time" msgstr "Teavitused - saad meeldetuletusi õigel ajal" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:28 msgid "History — See which medications you took, skipped or missed" msgstr "" "Ajalugu - näed, mis ravimeid sa oled võtnud, vahele jätnud või unustanud" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:29 msgid "Dosage management — Multiple doses with different times" msgstr "Annuste haldus - võid kasutada eri annuseid eri aegadel" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:30 msgid "" "Frequency modes — Every day, specific days, cycle or just when necessary" msgstr "" "Erinevad sageduste võimalused - iga päev, kindlatel päevadel, tsüklite kaupa " "või just siis, kui vaja" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:31 msgid "Color and icon — Give a shape for your treatment" msgstr "Värvid ja ikoonid - säti ravikuuri välimus vastavaks oma eelistustele" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:32 msgid "Inventory tracking — Monitor your stock and get reminded when it's low" msgstr "" "Laovarude arvestus - jälgi, mis sul varudes leidub ning saa teavitusi, kui " "need lõppema hakkavad" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:33 msgid "Duration — Define the start and end dates" msgstr "Kestus - vali algus- ja lõppkuupäevad" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:44 msgid "Dosage today window in light theme" msgstr "Tänased ravimiannused heledas kujunduses" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:49 msgid "Dosage preferences window in light theme" msgstr "Rakenduse eelistuste vaade heledas kujunduses" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:54 msgid "Dosage edit treatment window in light theme" msgstr "Uue ravikuuri muutmisvaade heledas kujunduses" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:59 msgid "Dosage today window in dark theme" msgstr "Tänased ravimiannused tumedas kujunduses" #. TRANSLATORS: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/io.github.diegopvlk.Dosage.desktop.in:10 msgid "Medication;Tracker;Reminder;Today;Treatments;Pill;Drug;Remedy;" msgstr "Medication;Tracker;Reminder;Today;Treatments;Pill;Drug;Remedy;ravim;annustus;annustamine;ravimid;ravimiannus;ravimiannused;tablett;tabletid;" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:232 msgid "Date" msgstr "Kuupäev" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:199 msgid "Time" msgstr "Aeg" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/med-dialog.blp:61 data/ui/one-time-dialog.blp:49 msgid "Name" msgstr "Nimi" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:183 msgid "Dose" msgstr "Ravimidoos" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 msgid "Status" msgstr "Olek" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 msgid "Time Confirmed" msgstr "Aeg on kinnitatud" #: src/utils/getHistoryExportFile.js:38 src/utils/getHistoryExportFile.js:117 #: src/editHistDialog.js:68 src/historyFactory.js:186 msgid "Missed" msgstr "Jäänud märkamata" #: src/utils/getHistoryExportFile.js:41 src/utils/getHistoryExportFile.js:121 #: src/historyFactory.js:183 data/ui/edit-hist-dialog.blp:111 msgid "Skipped" msgstr "Vahelejäetud" #: src/utils/getHistoryExportFile.js:44 src/utils/getHistoryExportFile.js:55 #: src/utils/getHistoryExportFile.js:125 src/utils/getHistoryExportFile.js:138 #: src/editHistDialog.js:73 src/historyFactory.js:190 #: data/ui/edit-hist-dialog.blp:116 msgid "Confirmed" msgstr "Kinnitatud" #: src/utils/getHistoryExportFile.js:52 src/utils/getHistoryExportFile.js:134 #: src/editHistDialog.js:56 src/historyFactory.js:178 msgid "Auto-Confirmed" msgstr "Automaatselt kinnitatud" #: src/utils/getHistoryExportFile.js:55 src/utils/getHistoryExportFile.js:138 #: src/editHistDialog.js:74 msgid "Time Unknown" msgstr "Aeg pole teada" #. TRANSLATORS: Context: 1 Pill at 19:00 #: src/utils/getTreatmentsExportFile.js:69 msgid "at" msgstr "kell" #: src/utils/getTreatmentsExportFile.js:89 data/ui/med-dialog.blp:443 msgid "Notes" msgstr "Märkused" #: src/utils/getTreatmentsExportFile.js:96 src/utils/locale.js:37 #: src/treatmentsFactory.js:268 msgid "Daily" msgstr "Iga päev" #: src/utils/getTreatmentsExportFile.js:102 src/medDialog.js:428 #: data/ui/med-dialog.blp:459 msgid "Day of Month" msgstr "Kuu konkreetsel päeval" #. TRANSLATORS: Context: 2 day(s) on, 1 day(s) off #: src/utils/getTreatmentsExportFile.js:109 msgid "day(s) on" msgstr "päev(a) sissevõtmiseks" #. TRANSLATORS: Context: 2 day(s) on, 1 day(s) off #: src/utils/getTreatmentsExportFile.js:111 msgid "day(s) off" msgstr "päev(a) vahelejätmiseks" #: src/utils/getTreatmentsExportFile.js:122 src/todayFactory.js:41 #: src/treatmentsFactory.js:298 data/ui/med-dialog.blp:461 msgid "As Needed" msgstr "Vastavalt vajadusele" #: src/utils/getTreatmentsExportFile.js:132 data/ui/med-dialog.blp:764 msgid "Duration" msgstr "Kestus" #: src/utils/getTreatmentsExportFile.js:135 msgid "Started on" msgstr "Algas" #: src/utils/getTreatmentsExportFile.js:136 data/ui/med-dialog.blp:775 msgid "Start" msgstr "Algab" #: src/utils/getTreatmentsExportFile.js:138 src/treatmentsFactory.js:256 msgid "Ended on" msgstr "Lõppes" #: src/utils/getTreatmentsExportFile.js:138 data/ui/med-dialog.blp:817 msgid "End" msgstr "Lõppeb" #: src/utils/getTreatmentsExportFile.js:173 src/utils/saveFiles.js:44 #: data/ui/window.blp:234 msgid "Treatments" msgstr "Ravikuurid" #: src/utils/getTreatmentsExportFile.js:184 msgid "Generated on" msgstr "Loodud" #: src/utils/getTreatmentsExportFile.js:187 msgid "Ongoing" msgstr "Kestmas" #: src/utils/getTreatmentsExportFile.js:188 msgid "Non-scheduled" msgstr "Pole ajastatud" #: src/utils/getTreatmentsExportFile.js:189 msgid "Finished" msgstr "Lõpetatud" #: src/utils/locale.js:33 msgid "Weekends" msgstr "Nädalavahetuse päevad" #: src/utils/locale.js:35 msgid "Weekdays" msgstr "Tööpäevad" #: src/utils/saveFiles.js:22 data/ui/window.blp:156 msgid "History" msgstr "Ajalugu" #: src/editHistDialog.js:60 src/editHistDialog.js:89 src/editHistDialog.js:110 msgid "Confirmed At" msgstr "Kinnitatud kell" #: src/editHistDialog.js:64 src/editHistDialog.js:114 msgid "Skipped At" msgstr "Vahelejäetud kell" #: src/historyFactory.js:47 msgid "Select to be Removed" msgstr "Vali eemaldatav" #. TRANSLATORS: "Your Name " #: src/main.js:69 msgid "translator-credits" msgstr "Priit Jõerüüt 2025" #: src/main.js:73 msgid "Thanks to These Projects!" msgstr "Suur tänu järgnevatele projektidele!" #: src/medDialog.js:99 msgid "Edit Treatment" msgstr "Muuda ravikuuri" #: src/medDialog.js:100 data/ui/edit-hist-dialog.blp:30 #: data/ui/preferences.blp:112 data/ui/preferences.blp:132 #: data/ui/refill-dialog.blp:67 msgid "Save" msgstr "Salvesta" #: src/medDialog.js:114 msgid "Copy" msgstr "Kopeeri" #: src/medDialog.js:217 msgid "Add Dose" msgstr "Lisa ravimiannus" #: src/medDialog.js:419 msgid "Choose" msgstr "Vali" #: src/medDialog.js:429 src/treatmentsFactory.js:274 msgid "Day" msgstr "Päev" #: src/medDialog.js:456 data/ui/med-dialog.blp:458 msgid "Specific Days" msgstr "Kindlatel päevadel" #: src/medDialog.js:463 src/treatmentsFactory.js:295 data/ui/med-dialog.blp:460 msgid "Cycle" msgstr "Tsüklitena" #: src/medDialog.js:467 data/ui/med-dialog.blp:452 msgid "Frequency" msgstr "Sagedus" #: src/medDialog.js:500 msgid "Empty Name" msgstr "Tühi nimi" #: src/medDialog.js:506 msgid "Empty Unit" msgstr "Tühi ühik" #: src/medDialog.js:513 msgid "Choose at Least One Day" msgstr "Palun vali vähemalt üks päev" #: src/medDialog.js:527 src/oneTimeDialog.js:187 msgid "Name Already on Treatment List" msgstr "Selline nimi on juba ravikuuride loendis" #: src/medDialog.js:542 msgid "Duplicated Time" msgstr "Kattuv aeg" #: src/medDialog.js:582 msgid "Are You Sure?" msgstr "Kas oled kindel?" #: src/medDialog.js:583 msgid "will be deleted" msgstr "kuulub kustutamisele" #: src/medDialog.js:586 data/ui/edit-hist-dialog.blp:18 #: data/ui/med-dialog.blp:19 msgid "Cancel" msgstr "Katkesta" #: src/medDialog.js:587 src/treatmentsFactory.js:128 data/ui/med-dialog.blp:865 msgid "Delete" msgstr "Kustuta" #: src/oneTimeDialog.js:110 msgid "New" msgstr "Uus" #: src/oneTimeDialog.js:121 data/ui/med-dialog.blp:189 #: data/ui/one-time-dialog.blp:178 msgid "Pill(s)" msgstr "Tablett(i)" #: src/prefsDialog.js:63 msgid "Accept to allow running in the background and receive notifications" msgstr "" "Nõustu sellega võimaldamaks tööd taustateenusena ja teavituste saatmist" #: src/prefsDialog.js:74 src/window.js:259 msgid "An Issue Has Occurred" msgstr "Tekkis viga" #: src/prefsDialog.js:77 src/window.js:267 src/window.js:289 src/window.js:311 #: src/window.js:329 msgid "Close" msgstr "Sulge" #: src/timeDoseRow.js:34 msgid "Remove Dose" msgstr "Eemalda ravimiannus" #: src/timeDoseRow.js:40 data/ui/edit-hist-dialog.blp:90 #: data/ui/one-time-dialog.blp:210 msgid "Change Time" msgstr "Muuda aega" #: src/todayFactory.js:134 msgid "Change Dose" msgstr "Muuda ravimiannust" #: src/treatmentsFactory.js:96 src/treatmentsFactory.js:126 #: data/ui/refill-dialog.blp:7 msgid "Refill" msgstr "Lisa ravimivarusid" #: src/treatmentsFactory.js:125 msgid "Edit" msgstr "Muuda" #: src/treatmentsFactory.js:127 msgid "Duplicate" msgstr "Tee koopia" #: src/treatmentsFactory.js:146 msgid "Options" msgstr "Valikud" #. TRANSLATORS: keep the %d it's where the number goes #: src/treatmentsFactory.js:244 #, javascript-format msgid "%d Remaining" msgstr "%d on alles" #. TRANSLATORS: label for when duration is enabled #: src/treatmentsFactory.js:254 msgid "Starts on" msgstr "Algab" #: src/treatmentsFactory.js:255 msgid "Until" msgstr "Kuni" #: src/treatmentsFactory.js:283 src/treatmentsFactory.js:286 msgid "Next Dose" msgstr "Järgmine ravimiannus" #: src/window.js:173 src/window.js:943 msgid "Reminder" msgstr "Meeldetuletus" #. TRANSLATORS: Notification text for when the inventory is low #: src/window.js:175 msgid "You have treatments low in stock" msgstr "Ravikuuriks vajalikud ravimid hakkavad lõppema" #: src/window.js:492 msgid "Show All" msgstr "Näita kõiki" #: src/window.js:515 msgid "Show Less" msgstr "Näita vähem" #: src/window.js:648 msgid "No Results Found" msgstr "Tulemusi ei leidu" #: src/window.js:648 src/window.js:1517 msgid "No History" msgstr "Ajalugu pole" #: src/window.js:818 data/ui/window.blp:260 msgid "No Treatments" msgstr "Ravikuure pole" #: src/window.js:818 msgid "All Done for Today" msgstr "Tänaseks on kõik tehtud" #: src/window.js:906 src/window.js:1090 data/ui/one-time-dialog.blp:285 #: data/ui/preferences.blp:73 msgid "Confirm" msgstr "Kinnita" #: src/window.js:906 msgid "Confirm All" msgstr "Kinnita kõik" #: src/window.js:907 data/ui/preferences.blp:84 data/ui/window.blp:146 msgid "Skip" msgstr "Jäta vahele" #: src/window.js:907 msgid "Skip All" msgstr "Jäta kõik vahele" #. TRANSLATORS: keep the %d it's where the number goes #: src/window.js:938 #, javascript-format msgid "and %d more" msgstr "ja veel %d" #: src/window.js:1090 data/ui/one-time-dialog.blp:7 data/ui/window.blp:133 msgid "One-Time Entry" msgstr "Ühekordne kirje" #: src/window.js:1295 data/ui/window.blp:353 msgid "Quit" msgstr "Välju" #: data/ui/edit-hist-dialog.blp:7 msgid "Edit Entry" msgstr "Muuda kirjet" #: data/ui/med-dialog.blp:7 msgid "New Treatment" msgstr "Uus ravikuur" #: data/ui/med-dialog.blp:31 data/ui/window.blp:283 msgid "Add" msgstr "Lisa" #: data/ui/med-dialog.blp:69 data/ui/one-time-dialog.blp:58 msgid "Color" msgstr "Värv" #. TRANSLATORS: Tooltip for the colors (from Default until Purple) #: data/ui/med-dialog.blp:94 data/ui/one-time-dialog.blp:83 msgid "Default" msgstr "Vaikimisi värv" #: data/ui/med-dialog.blp:106 data/ui/one-time-dialog.blp:95 msgid "Red" msgstr "Punane" #: data/ui/med-dialog.blp:118 data/ui/one-time-dialog.blp:107 msgid "Orange" msgstr "Oranž" #: data/ui/med-dialog.blp:130 data/ui/one-time-dialog.blp:119 msgid "Yellow" msgstr "Kollane" #: data/ui/med-dialog.blp:142 data/ui/one-time-dialog.blp:131 msgid "Green" msgstr "Roheline" #: data/ui/med-dialog.blp:154 data/ui/one-time-dialog.blp:143 msgid "Cyan" msgstr "Rohekassinine" #: data/ui/med-dialog.blp:166 data/ui/one-time-dialog.blp:155 msgid "Blue" msgstr "Sinine" #: data/ui/med-dialog.blp:178 data/ui/one-time-dialog.blp:167 msgid "Purple" msgstr "Purpurpunane" #: data/ui/med-dialog.blp:188 data/ui/one-time-dialog.blp:177 msgid "Unit" msgstr "Ühik" #: data/ui/med-dialog.blp:197 msgid "Icon" msgstr "Ikoon" #. TRANSLATORS: Tooltip for the icons (from Pill until Potion) #: data/ui/med-dialog.blp:226 msgid "Pill" msgstr "Tablett" #: data/ui/med-dialog.blp:242 msgid "Alternative Pill" msgstr "Tableti teine variant" #: data/ui/med-dialog.blp:258 msgid "Capsule" msgstr "Kapsel" #: data/ui/med-dialog.blp:274 msgid "Round Pill" msgstr "Ümmargune tablett" #: data/ui/med-dialog.blp:290 msgid "Alternative Round Pill" msgstr "Ümmarguse tableti teine variant" #: data/ui/med-dialog.blp:306 msgid "Ampoule" msgstr "Ampull" #: data/ui/med-dialog.blp:322 msgid "Injection" msgstr "Süst" #: data/ui/med-dialog.blp:338 msgid "Square Pill" msgstr "Kandiline tablett" #: data/ui/med-dialog.blp:354 msgid "Alternative Square Pill" msgstr "Kandilise tableti teine variant" #: data/ui/med-dialog.blp:370 msgid "Triangle pill" msgstr "Kolmnurkne tablett" #: data/ui/med-dialog.blp:386 msgid "Alternative Triangle Pill" msgstr "Kolmnurkse tableti teine variant" #: data/ui/med-dialog.blp:402 msgid "Bottle" msgstr "Pudel" #: data/ui/med-dialog.blp:418 msgid "Drops" msgstr "Tilgad" #: data/ui/med-dialog.blp:434 msgid "Potion" msgstr "Ravimiannus" #: data/ui/med-dialog.blp:457 msgid "Every Day" msgstr "Iga päev" #: data/ui/med-dialog.blp:473 msgid "Choose Days" msgstr "Vali päevad" #: data/ui/med-dialog.blp:572 msgid "Choose Day" msgstr "Vali päev" #: data/ui/med-dialog.blp:617 msgid "Change Cycle" msgstr "Muuda tsüklit" #: data/ui/med-dialog.blp:642 msgid "Days Active" msgstr "Aktiivseid päevi" #: data/ui/med-dialog.blp:656 msgid "Days Inactive" msgstr "Mitteaktiivseid päevi" #. TRANSLATORS: Day in cycle, try to keep it short #: data/ui/med-dialog.blp:671 msgid "Today is Cycle Day…" msgstr "Täna on tsükli päev…" #: data/ui/med-dialog.blp:694 msgid "Increase Notification Priority" msgstr "Suurenda teavituse olulisust" #: data/ui/med-dialog.blp:695 msgid "Show in fullscreen mode or with 'Do Not Disturb' enabled" msgstr "Näita täisekraanivaates või siis, kui „Ära sega“ režiim on kasutusel" #: data/ui/med-dialog.blp:699 msgid "Recurring Notifications" msgstr "Teavita korduvalt" #: data/ui/med-dialog.blp:700 msgid "Renotify until it's confirmed or skipped" msgstr "Teavita uuesti kuni kinnitamiseni või vahelejätmiseni" #: data/ui/med-dialog.blp:705 msgid "Interval in Minutes" msgstr "Välp minutites" #: data/ui/med-dialog.blp:718 data/ui/refill-dialog.blp:36 msgid "Inventory" msgstr "Laovaru" #: data/ui/med-dialog.blp:719 msgid "Manage your stock" msgstr "Halda oma ravimivarusid" #: data/ui/med-dialog.blp:725 msgid "Current" msgstr "Tagavara praegu" #: data/ui/med-dialog.blp:738 msgid "Remind Me At" msgstr "Teavita, kui varuks on vaid" #: data/ui/med-dialog.blp:751 msgid "Refill Amount" msgstr "Juurdelisatav kogus" #: data/ui/med-dialog.blp:765 msgid "Set start and end dates" msgstr "Lisa alguse ja lõpu kuupäevad" #: data/ui/med-dialog.blp:785 data/ui/med-dialog.blp:827 #: data/ui/one-time-dialog.blp:243 msgid "Choose Date" msgstr "Vali Kuupäev" #: data/ui/med-dialog.blp:855 msgid "Mark as Confirmed" msgstr "Märgi kinnitatuks" #: data/ui/med-dialog.blp:856 msgid "" "If not manually confirmed or skipped, it will be recorded as confirmed in " "history, reducing stock if enabled" msgstr "" "Kui sa seda käsitsi ei kinnita või jäta vahele, siis ta läheb ajaloos kirja " "kinnitatuna ja vähendab seega ka varusid" #: data/ui/one-time-dialog.blp:44 msgid "From Treatment List" msgstr "Ravikuuride loendist" #: data/ui/one-time-dialog.blp:182 msgid "Amount" msgstr "Kogus" #: data/ui/preferences.blp:7 data/ui/window.blp:338 msgid "Preferences" msgstr "Eelistused" #: data/ui/preferences.blp:17 msgid "Auto-Start at Login" msgstr "Käivita sisselogimisel automaatselt" #: data/ui/preferences.blp:28 msgid "Auto-Clear History" msgstr "Kustuta ajalugu automaatselt" #: data/ui/preferences.blp:29 msgid "Keeps a maximum of 30 days" msgstr "Sel juhul säilib ajalugu kuni 30 päeva" #: data/ui/preferences.blp:40 msgid "Low Stock Notification" msgstr "Teavita varude lõppemisest" #: data/ui/preferences.blp:41 msgid "Send reminders when treatments are low in stock" msgstr "Teavita, kui laovarud hakkavad lõppema" #: data/ui/preferences.blp:52 msgid "Notification Sound" msgstr "Teavituse heli" #: data/ui/preferences.blp:63 msgid "Notification Buttons" msgstr "Teavituse nupud" #: data/ui/preferences.blp:64 msgid "Show or hide confirm/skip" msgstr "Näita või peida kinnituse ja vahelejätmise nupud" #: data/ui/preferences.blp:98 msgid "Export History As" msgstr "Ekspordi ajalugu kui" #: data/ui/preferences.blp:121 msgid "Export Treatments As" msgstr "Ekspordi ravikuur kui" #: data/ui/shortcuts-dialog.blp:8 msgid "Shortcuts" msgstr "Kiirklahvid" #: data/ui/shortcuts-dialog.blp:11 msgctxt "shortcut window" msgid "Show/Hide 'As Needed'" msgstr "Näita/peida „Vastavalt vajadusele“" #: data/ui/shortcuts-dialog.blp:16 msgctxt "shortcut window" msgid "New One-Time Entry" msgstr "Uus ühekordne kirje" #: data/ui/shortcuts-dialog.blp:21 msgctxt "shortcut window" msgid "Add New Treatment" msgstr "Lisa uus ravikuur" #: data/ui/shortcuts-dialog.blp:26 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Näita kiirklahve" #: data/ui/shortcuts-dialog.blp:31 msgctxt "shortcut window" msgid "Quit" msgstr "Välju" #: data/ui/window.blp:23 msgid "Show/Hide 'As Needed'" msgstr "Näita/peida „Vastavalt vajadusele“" #: data/ui/window.blp:31 msgid "Search" msgstr "Otsi" #: data/ui/window.blp:39 msgid "Sort Treatments" msgstr "Järjesta ravikuure" #: data/ui/window.blp:48 msgid "Main Menu" msgstr "Põhimenüü" #: data/ui/window.blp:61 msgid "Search…" msgstr "Otsi…" #: data/ui/window.blp:71 msgid "Today" msgstr "Täna" #: data/ui/window.blp:117 data/ui/window.blp:210 msgid "Unselect" msgstr "Eemalda valik" #: data/ui/window.blp:220 msgid "Remove Entries" msgstr "Eemalda kirjed" #: data/ui/window.blp:300 msgid "Name Ascending" msgstr "Nime järgi kahanevalt" #: data/ui/window.blp:306 msgid "Remaining Stock (Lowest First)" msgstr "Järelejäänud varu (väikseim enne)" #: data/ui/window.blp:312 msgid "Remaining Stock (Highest First)" msgstr "Järelejäänud varu (suurim enne)" #: data/ui/window.blp:318 msgid "As Needed Last" msgstr "Vastavalt vajadusele viimasena" #: data/ui/window.blp:324 msgid "Ended Last" msgstr "Lõppes viimasena" #: data/ui/window.blp:330 msgid "As Needed/Ended Last" msgstr "Vastavalt vajadusele või lõppes viimasena" #: data/ui/window.blp:343 msgid "Keyboard Shortcuts" msgstr "Klaviatuuri kiirklahvid" #: data/ui/window.blp:348 msgid "About Dosage" msgstr "Rakenduse teave: Ravimiannused" #~ msgid "Empty Treatments" #~ msgstr "Lisamiseks klõpsi allolevat nuppu" #~ msgid "Empty History" #~ msgstr "Ajalugu on tühi" #~ msgid "No Treatments Added" #~ msgstr "Ravi pole lisatud" #~ msgctxt "shortcut window" #~ msgid "General" #~ msgstr "Üldised" #~ msgctxt "shortcut window" #~ msgid "Preferences" #~ msgstr "Eelistused" #~ msgid "After meal" #~ msgstr "Peale sööki" #~ msgid "Refill Stock" #~ msgstr "Täienda laovarusid" #~ msgid "Low Stock" #~ msgstr "Ravimivarud on lõppemas" diegopvlk-Dosage-bd9126a/po/fa.po000066400000000000000000000563451514145341100166700ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) 2023 Diego Povliuk # This file is distributed under the license GPLv3-or-later. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: io.github.diegopvlk.Dosage\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-12-19 16:12-0300\n" "PO-Revision-Date: 2025-12-19 19:21+0000\n" "Last-Translator: Danial Behzadi \n" "Language-Team: Persian \n" "Language: fa\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 5.15.1\n" #. TRANSLATORS: App name, translate to your language and follow the capitalization #: data/io.github.diegopvlk.Dosage.appdata.xml.in:20 #: data/io.github.diegopvlk.Dosage.desktop.in:3 #: src/utils/getTreatmentsExportFile.js:173 src/utils/saveFiles.js:22 #: src/utils/saveFiles.js:44 src/main.js:60 src/window.js:1060 #: data/ui/window.blp:6 msgid "Dosage" msgstr "چنده ‏گذاری" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:21 msgid "Keep track of your treatments" msgstr "پیگیری داروهایتان" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:24 msgid "" "Easily manage and track treatments with Dosage: notifications, history, " "multiple doses, flexible frequency, customization, stock monitoring, and " "duration control" msgstr "" "مدیریت و پیگیری آسان داروها با چنده گذاری: آگاهی‌ها، تاریخچه، چندین چنده، " "بسامد انعطاف‌پذیر، سفارشی سازی، پایش مانده و واپایش دوره" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:25 msgid "Features:" msgstr "ویژگی‌ها:" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:27 msgid "Notifications — Get reminders at the right time" msgstr "آگاهی — گرفتن یادآوری در زمان درست" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:28 msgid "History — See which medications you took, skipped or missed" msgstr "تاریخچه — دیدن داروهایی که گرفتید، پریدید یا از دست دادید" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:29 msgid "Dosage management — Multiple doses with different times" msgstr "مدیریت چنده گذاری — چندین چنده با زمان‌های متفاوت" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:30 msgid "" "Frequency modes — Every day, specific days, cycle or just when necessary" msgstr "حالت‌های بسامدی — هر روز، روزهای خاص، چرخه یا فقط هنگام نیاز" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:31 msgid "Color and icon — Give a shape for your treatment" msgstr "رنگ و نقشک — دادن طرحی از دارویتان" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:32 msgid "Inventory tracking — Monitor your stock and get reminded when it's low" msgstr "ردیابی موجودی — پایش مانده و گرفتن یادآوری هنگام کم بودنش" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:33 msgid "Duration — Define the start and end dates" msgstr "دوره — تعیین تاریخ‌های آغاز و پایان" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:44 msgid "Dosage today window in light theme" msgstr "پنجرهٔ امروز چنده گذاری در زمینهٔ روشن" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:49 msgid "Dosage preferences window in light theme" msgstr "پنجرهٔ ترجیحات چنده گذاری در زمینهٔ روشن" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:54 msgid "Dosage edit treatment window in light theme" msgstr "پنجرهٔ ویرایش داروی چنده گذاری در زمینهٔ روشن" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:59 msgid "Dosage today window in dark theme" msgstr "پنجرهٔ امروز چنده گذاری در زمینهٔ تیره" #. TRANSLATORS: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/io.github.diegopvlk.Dosage.desktop.in:10 msgid "Medication;Tracker;Reminder;Today;Treatments;Pill;Drug;Remedy;" msgstr "Medication;Tracker;Reminder;Today;Treatments;Pill;Drug;Remedy;درمان;دارو;ردیاب;یادآور;امروز;قرص;دوا;" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:232 msgid "Date" msgstr "تاریخ" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:199 msgid "Time" msgstr "زمان" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/med-dialog.blp:61 data/ui/one-time-dialog.blp:49 msgid "Name" msgstr "نام" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:183 msgid "Dose" msgstr "چنده" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 msgid "Status" msgstr "وضعیت" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 msgid "Time Confirmed" msgstr "زمان تأیید شد" #: src/utils/getHistoryExportFile.js:38 src/utils/getHistoryExportFile.js:117 #: src/editHistDialog.js:68 src/historyFactory.js:186 msgid "Missed" msgstr "از دست رفته" #: src/utils/getHistoryExportFile.js:41 src/utils/getHistoryExportFile.js:121 #: src/historyFactory.js:183 data/ui/edit-hist-dialog.blp:111 msgid "Skipped" msgstr "پریده" #: src/utils/getHistoryExportFile.js:44 src/utils/getHistoryExportFile.js:55 #: src/utils/getHistoryExportFile.js:125 src/utils/getHistoryExportFile.js:138 #: src/editHistDialog.js:73 src/historyFactory.js:190 #: data/ui/edit-hist-dialog.blp:116 msgid "Confirmed" msgstr "تأیید شده" #: src/utils/getHistoryExportFile.js:52 src/utils/getHistoryExportFile.js:134 #: src/editHistDialog.js:56 src/historyFactory.js:178 msgid "Auto-Confirmed" msgstr "تأیید شده به صورت خودکار" #: src/utils/getHistoryExportFile.js:55 src/utils/getHistoryExportFile.js:138 #: src/editHistDialog.js:74 msgid "Time Unknown" msgstr "زمان نامشخّص" #. TRANSLATORS: Context: 1 Pill at 19:00 #: src/utils/getTreatmentsExportFile.js:69 msgid "at" msgstr "در" #: src/utils/getTreatmentsExportFile.js:89 data/ui/med-dialog.blp:443 msgid "Notes" msgstr "یادداشت‌ها" #: src/utils/getTreatmentsExportFile.js:96 src/utils/locale.js:37 #: src/treatmentsFactory.js:268 msgid "Daily" msgstr "روزانه" #: src/utils/getTreatmentsExportFile.js:102 src/medDialog.js:428 #: data/ui/med-dialog.blp:459 msgid "Day of Month" msgstr "روز ماه" #. TRANSLATORS: Context: 2 day(s) on, 1 day(s) off #: src/utils/getTreatmentsExportFile.js:109 msgid "day(s) on" msgstr "روز گرفتن" #. TRANSLATORS: Context: 2 day(s) on, 1 day(s) off #: src/utils/getTreatmentsExportFile.js:111 msgid "day(s) off" msgstr "روز وقفه" #: src/utils/getTreatmentsExportFile.js:122 src/todayFactory.js:41 #: src/treatmentsFactory.js:298 data/ui/med-dialog.blp:461 msgid "As Needed" msgstr "هنگام نیاز" #: src/utils/getTreatmentsExportFile.js:132 data/ui/med-dialog.blp:764 msgid "Duration" msgstr "دوره" #: src/utils/getTreatmentsExportFile.js:135 msgid "Started on" msgstr "آغاز شده در" #: src/utils/getTreatmentsExportFile.js:136 data/ui/med-dialog.blp:775 msgid "Start" msgstr "آغاز" #: src/utils/getTreatmentsExportFile.js:138 src/treatmentsFactory.js:256 msgid "Ended on" msgstr "به پایان رسید در" #: src/utils/getTreatmentsExportFile.js:138 data/ui/med-dialog.blp:817 msgid "End" msgstr "پایان" #: src/utils/getTreatmentsExportFile.js:173 src/utils/saveFiles.js:44 #: data/ui/window.blp:234 msgid "Treatments" msgstr "داروها" #: src/utils/getTreatmentsExportFile.js:184 msgid "Generated on" msgstr "ایجاد شده در" #: src/utils/getTreatmentsExportFile.js:187 msgid "Ongoing" msgstr "ادامه دار" #: src/utils/getTreatmentsExportFile.js:188 msgid "Non-scheduled" msgstr "زمان‌بندی نشده" #: src/utils/getTreatmentsExportFile.js:189 msgid "Finished" msgstr "پایان یافته" #: src/utils/locale.js:33 msgid "Weekends" msgstr "پایان‌هفته‌ها" #: src/utils/locale.js:35 msgid "Weekdays" msgstr "روزهای هفته" #: src/utils/saveFiles.js:22 data/ui/window.blp:156 msgid "History" msgstr "تاریخچه" #: src/editHistDialog.js:60 src/editHistDialog.js:89 src/editHistDialog.js:110 msgid "Confirmed At" msgstr "تأیید شده در" #: src/editHistDialog.js:64 src/editHistDialog.js:114 msgid "Skipped At" msgstr "پریده در" #: src/historyFactory.js:47 msgid "Select to be Removed" msgstr "گزیدن برای برداشته شدن" #. TRANSLATORS: "Your Name " #: src/main.js:69 msgid "translator-credits" msgstr "" "دانیال بهزادی \n" "پارسا نوبهاری " #: src/main.js:73 msgid "Thanks to These Projects!" msgstr "با سپاس از این پروژه‌ها!" #: src/medDialog.js:99 msgid "Edit Treatment" msgstr "ویرایش دارو" #: src/medDialog.js:100 data/ui/edit-hist-dialog.blp:30 #: data/ui/preferences.blp:112 data/ui/preferences.blp:132 #: data/ui/refill-dialog.blp:67 msgid "Save" msgstr "ذخیره" #: src/medDialog.js:114 msgid "Copy" msgstr "کپی" #: src/medDialog.js:217 msgid "Add Dose" msgstr "افزودن چنده" #: src/medDialog.js:419 msgid "Choose" msgstr "گزینش" #: src/medDialog.js:429 src/treatmentsFactory.js:274 msgid "Day" msgstr "روز" #: src/medDialog.js:456 data/ui/med-dialog.blp:458 msgid "Specific Days" msgstr "روزهای خاص" #: src/medDialog.js:463 src/treatmentsFactory.js:295 data/ui/med-dialog.blp:460 msgid "Cycle" msgstr "چرخه" #: src/medDialog.js:467 data/ui/med-dialog.blp:452 msgid "Frequency" msgstr "بسامد" #: src/medDialog.js:500 msgid "Empty Name" msgstr "نام خالی" #: src/medDialog.js:506 msgid "Empty Unit" msgstr "واحد خالی" #: src/medDialog.js:513 msgid "Choose at Least One Day" msgstr "گزینش لااقل یک روز" #: src/medDialog.js:527 src/oneTimeDialog.js:187 msgid "Name Already on Treatment List" msgstr "نام در حال حاضر در لیست درمان است" #: src/medDialog.js:542 msgid "Duplicated Time" msgstr "تاریخ تکراری" #: src/medDialog.js:582 msgid "Are You Sure?" msgstr "مطمئنید؟" #: src/medDialog.js:583 msgid "will be deleted" msgstr "حذف خواهد شد" #: src/medDialog.js:586 data/ui/edit-hist-dialog.blp:18 #: data/ui/med-dialog.blp:19 msgid "Cancel" msgstr "لغو" #: src/medDialog.js:587 src/treatmentsFactory.js:128 data/ui/med-dialog.blp:865 msgid "Delete" msgstr "حذف" #: src/oneTimeDialog.js:110 msgid "New" msgstr "جدید" #: src/oneTimeDialog.js:121 data/ui/med-dialog.blp:189 #: data/ui/one-time-dialog.blp:178 msgid "Pill(s)" msgstr "قرص" #: src/prefsDialog.js:63 msgid "Accept to allow running in the background and receive notifications" msgstr "پذیرش برای اجازهٔ اجرا در پس‌زمینه و دریافت آگاهی‌ها" #: src/prefsDialog.js:74 src/window.js:259 msgid "An Issue Has Occurred" msgstr "مشکلی رخ داد" #: src/prefsDialog.js:77 src/window.js:267 src/window.js:289 src/window.js:311 #: src/window.js:329 msgid "Close" msgstr "بستن" #: src/timeDoseRow.js:34 msgid "Remove Dose" msgstr "برداشتن چنده" #: src/timeDoseRow.js:40 data/ui/edit-hist-dialog.blp:90 #: data/ui/one-time-dialog.blp:210 msgid "Change Time" msgstr "تغییر زمان" #: src/todayFactory.js:134 msgid "Change Dose" msgstr "تغییر چنده" #: src/treatmentsFactory.js:96 src/treatmentsFactory.js:126 #: data/ui/refill-dialog.blp:7 msgid "Refill" msgstr "پر کردن" #: src/treatmentsFactory.js:125 msgid "Edit" msgstr "ویرایش" #: src/treatmentsFactory.js:127 msgid "Duplicate" msgstr "تکرار" #: src/treatmentsFactory.js:146 msgid "Options" msgstr "گزینه‌ها" #. TRANSLATORS: keep the %d it's where the number goes #: src/treatmentsFactory.js:244 #, javascript-format msgid "%d Remaining" msgstr "%d مانده" #. TRANSLATORS: label for when duration is enabled #: src/treatmentsFactory.js:254 msgid "Starts on" msgstr "آغاز در" #: src/treatmentsFactory.js:255 msgid "Until" msgstr "تا" #: src/treatmentsFactory.js:283 src/treatmentsFactory.js:286 msgid "Next Dose" msgstr "چندهٔ بعدی" #: src/window.js:173 src/window.js:943 msgid "Reminder" msgstr "یادآور" #. TRANSLATORS: Notification text for when the inventory is low #: src/window.js:175 msgid "You have treatments low in stock" msgstr "دارویی ماندهٔ کم دارد" #: src/window.js:492 msgid "Show All" msgstr "نمایش همه" #: src/window.js:515 msgid "Show Less" msgstr "نمایش کم‌تر" #: src/window.js:648 msgid "No Results Found" msgstr "هیچ نتیجه‌ای پیدا نشد" #: src/window.js:648 src/window.js:1517 msgid "No History" msgstr "بدون تاریخچه" #: src/window.js:818 data/ui/window.blp:260 msgid "No Treatments" msgstr "بدون دارو" #: src/window.js:818 msgid "All Done for Today" msgstr "امروز چیزی نمانده" #: src/window.js:906 src/window.js:1090 data/ui/one-time-dialog.blp:285 #: data/ui/preferences.blp:73 msgid "Confirm" msgstr "تأیید" #: src/window.js:906 msgid "Confirm All" msgstr "تأیید همه" #: src/window.js:907 data/ui/preferences.blp:84 data/ui/window.blp:146 msgid "Skip" msgstr "پرش" #: src/window.js:907 msgid "Skip All" msgstr "پرش از همه" #. TRANSLATORS: keep the %d it's where the number goes #: src/window.js:938 #, javascript-format msgid "and %d more" msgstr "و %d بیش‌تر" #: src/window.js:1090 data/ui/one-time-dialog.blp:7 data/ui/window.blp:133 msgid "One-Time Entry" msgstr "ورودی یک باره" #: src/window.js:1295 data/ui/window.blp:353 msgid "Quit" msgstr "خروج" #: data/ui/edit-hist-dialog.blp:7 msgid "Edit Entry" msgstr "ویرایش ورودی" #: data/ui/med-dialog.blp:7 msgid "New Treatment" msgstr "داروی جدید" #: data/ui/med-dialog.blp:31 data/ui/window.blp:283 msgid "Add" msgstr "افزودن" #: data/ui/med-dialog.blp:69 data/ui/one-time-dialog.blp:58 msgid "Color" msgstr "رنگ" #. TRANSLATORS: Tooltip for the colors (from Default until Purple) #: data/ui/med-dialog.blp:94 data/ui/one-time-dialog.blp:83 msgid "Default" msgstr "پیش‌گزیده" #: data/ui/med-dialog.blp:106 data/ui/one-time-dialog.blp:95 msgid "Red" msgstr "قرمز" #: data/ui/med-dialog.blp:118 data/ui/one-time-dialog.blp:107 msgid "Orange" msgstr "نارنجی" #: data/ui/med-dialog.blp:130 data/ui/one-time-dialog.blp:119 msgid "Yellow" msgstr "زرد" #: data/ui/med-dialog.blp:142 data/ui/one-time-dialog.blp:131 msgid "Green" msgstr "سبز" #: data/ui/med-dialog.blp:154 data/ui/one-time-dialog.blp:143 msgid "Cyan" msgstr "فیروزه‌ای" #: data/ui/med-dialog.blp:166 data/ui/one-time-dialog.blp:155 msgid "Blue" msgstr "آبی" #: data/ui/med-dialog.blp:178 data/ui/one-time-dialog.blp:167 msgid "Purple" msgstr "بنفش" #: data/ui/med-dialog.blp:188 data/ui/one-time-dialog.blp:177 msgid "Unit" msgstr "واحد" #: data/ui/med-dialog.blp:197 msgid "Icon" msgstr "نقشک" #. TRANSLATORS: Tooltip for the icons (from Pill until Potion) #: data/ui/med-dialog.blp:226 msgid "Pill" msgstr "قرص" #: data/ui/med-dialog.blp:242 msgid "Alternative Pill" msgstr "قرص جایگزین" #: data/ui/med-dialog.blp:258 msgid "Capsule" msgstr "کپسول" #: data/ui/med-dialog.blp:274 msgid "Round Pill" msgstr "قرص گرد" #: data/ui/med-dialog.blp:290 msgid "Alternative Round Pill" msgstr "قرص گرد جایگزین" #: data/ui/med-dialog.blp:306 msgid "Ampoule" msgstr "آمپول" #: data/ui/med-dialog.blp:322 msgid "Injection" msgstr "تزریق" #: data/ui/med-dialog.blp:338 msgid "Square Pill" msgstr "قرص چهارگوش" #: data/ui/med-dialog.blp:354 msgid "Alternative Square Pill" msgstr "قرص چهارگوش جایگزین" #: data/ui/med-dialog.blp:370 msgid "Triangle pill" msgstr "قرص سه‌گوش" #: data/ui/med-dialog.blp:386 msgid "Alternative Triangle Pill" msgstr "قرص سه‌گوش جایگزین" #: data/ui/med-dialog.blp:402 msgid "Bottle" msgstr "بطری" #: data/ui/med-dialog.blp:418 msgid "Drops" msgstr "قطرات" #: data/ui/med-dialog.blp:434 msgid "Potion" msgstr "شربت" #: data/ui/med-dialog.blp:457 msgid "Every Day" msgstr "هر روز" #: data/ui/med-dialog.blp:473 msgid "Choose Days" msgstr "گزینش روزها" #: data/ui/med-dialog.blp:572 msgid "Choose Day" msgstr "روز را انتخاب کنید" #: data/ui/med-dialog.blp:617 msgid "Change Cycle" msgstr "تغییر چرخه" #: data/ui/med-dialog.blp:642 msgid "Days Active" msgstr "روزهای فعّال" #: data/ui/med-dialog.blp:656 msgid "Days Inactive" msgstr "روزهای غیرفعّال" #. TRANSLATORS: Day in cycle, try to keep it short #: data/ui/med-dialog.blp:671 msgid "Today is Cycle Day…" msgstr "امروز در چرخه است…" #: data/ui/med-dialog.blp:694 msgid "Increase Notification Priority" msgstr "افزایش اولویت آگاهی" #: data/ui/med-dialog.blp:695 msgid "Show in fullscreen mode or with 'Do Not Disturb' enabled" msgstr "نمایش در حالت تمام صفحه یا با به کار افتادن «مزاحم نشوید»" #: data/ui/med-dialog.blp:699 msgid "Recurring Notifications" msgstr "آگاهی‌های تکرار شونده" #: data/ui/med-dialog.blp:700 msgid "Renotify until it's confirmed or skipped" msgstr "آگاهی دوباره تا زمان تأیید یا پرش" #: data/ui/med-dialog.blp:705 msgid "Interval in Minutes" msgstr "دوره به دقیقه" #: data/ui/med-dialog.blp:718 data/ui/refill-dialog.blp:36 msgid "Inventory" msgstr "موجودی" #: data/ui/med-dialog.blp:719 msgid "Manage your stock" msgstr "مدیریت مانده‌تان" #: data/ui/med-dialog.blp:725 msgid "Current" msgstr "کنونی" #: data/ui/med-dialog.blp:738 msgid "Remind Me At" msgstr "یادآوری در" #: data/ui/med-dialog.blp:751 msgid "Refill Amount" msgstr "مقدار پر کردن دوباره" #: data/ui/med-dialog.blp:765 msgid "Set start and end dates" msgstr "تنظیم تاریخ‌های آغاز و پایان" #: data/ui/med-dialog.blp:785 data/ui/med-dialog.blp:827 #: data/ui/one-time-dialog.blp:243 msgid "Choose Date" msgstr "گزینش تاریخ" #: data/ui/med-dialog.blp:855 msgid "Mark as Confirmed" msgstr "علامت به تأیید شده" #: data/ui/med-dialog.blp:856 msgid "" "If not manually confirmed or skipped, it will be recorded as confirmed in " "history, reducing stock if enabled" msgstr "" "اگر به صورت دستی تأیید یا رد نشود، به عنوان تأیید شده در تاریخچه ثبت شده و " "مانده را در صورت به کار افتاده بودن می‌کاهد" #: data/ui/one-time-dialog.blp:44 msgid "From Treatment List" msgstr "از سیاههٔ دارو" #: data/ui/one-time-dialog.blp:182 msgid "Amount" msgstr "مقدار" #: data/ui/preferences.blp:7 data/ui/window.blp:338 msgid "Preferences" msgstr "ترجیحات" #: data/ui/preferences.blp:17 msgid "Auto-Start at Login" msgstr "آغاز خودکار هنگام ورود" #: data/ui/preferences.blp:28 msgid "Auto-Clear History" msgstr "پاک سازی خودکار تاریخچه" #: data/ui/preferences.blp:29 msgid "Keeps a maximum of 30 days" msgstr "نگه داشتن بیشینه ۳۰ روز" #: data/ui/preferences.blp:40 msgid "Low Stock Notification" msgstr "آگاهی کمبود مانده" #: data/ui/preferences.blp:41 msgid "Send reminders when treatments are low in stock" msgstr "فرستادن یادآورهایی هنگام کم بودن ماندهٔ داروها" #: data/ui/preferences.blp:52 msgid "Notification Sound" msgstr "صدای آگاهی" #: data/ui/preferences.blp:63 msgid "Notification Buttons" msgstr "دکمه‌های آگاهی" #: data/ui/preferences.blp:64 msgid "Show or hide confirm/skip" msgstr "نمایش یا نهفتن تأیید و پرش" #: data/ui/preferences.blp:98 msgid "Export History As" msgstr "برون‌ریزی تاریخچه به شکل" #: data/ui/preferences.blp:121 msgid "Export Treatments As" msgstr "برون‌ریزی داروها به شکل" #: data/ui/shortcuts-dialog.blp:8 msgid "Shortcuts" msgstr "میان‌برها" #: data/ui/shortcuts-dialog.blp:11 msgctxt "shortcut window" msgid "Show/Hide 'As Needed'" msgstr "نمایش یا نهفتن «هنگام نیاز»" #: data/ui/shortcuts-dialog.blp:16 msgctxt "shortcut window" msgid "New One-Time Entry" msgstr "ورودی یک بارهٔ جدید" #: data/ui/shortcuts-dialog.blp:21 msgctxt "shortcut window" msgid "Add New Treatment" msgstr "افزودن داروی جدید" #: data/ui/shortcuts-dialog.blp:26 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "نمایش میان‌برها" #: data/ui/shortcuts-dialog.blp:31 msgctxt "shortcut window" msgid "Quit" msgstr "خروج" #: data/ui/window.blp:23 msgid "Show/Hide 'As Needed'" msgstr "نمایش یا نهفتن «هنگام نیاز»" #: data/ui/window.blp:31 msgid "Search" msgstr "جست‌وجو" #: data/ui/window.blp:39 msgid "Sort Treatments" msgstr "چینش داروها" #: data/ui/window.blp:48 msgid "Main Menu" msgstr "فهرست اصلی" #: data/ui/window.blp:61 msgid "Search…" msgstr "جستجو…" #: data/ui/window.blp:71 msgid "Today" msgstr "امروز" #: data/ui/window.blp:117 data/ui/window.blp:210 msgid "Unselect" msgstr "ناگزینش" #: data/ui/window.blp:220 msgid "Remove Entries" msgstr "حذف ورودی‌ها" #: data/ui/window.blp:300 msgid "Name Ascending" msgstr "نام افزایشی" #: data/ui/window.blp:306 msgid "Remaining Stock (Lowest First)" msgstr "مقدار مانده (نخست کم‌ترین)" #: data/ui/window.blp:312 msgid "Remaining Stock (Highest First)" msgstr "مقدار مانده (نخست بیش‌ترین)" #: data/ui/window.blp:318 #, fuzzy #| msgid "As Needed" msgid "As Needed Last" msgstr "هنگام نیاز" #: data/ui/window.blp:324 #, fuzzy #| msgid "Ended on" msgid "Ended Last" msgstr "به پایان رسید در" #: data/ui/window.blp:330 #, fuzzy #| msgid "As Needed" msgid "As Needed/Ended Last" msgstr "هنگام نیاز" #: data/ui/window.blp:343 msgid "Keyboard Shortcuts" msgstr "میان‌برهای صفحه‌کلید" #: data/ui/window.blp:348 msgid "About Dosage" msgstr "دربارهٔ چنده گذاری" #~ msgid "Empty Treatments" #~ msgstr "درمان‌های خالی" #~ msgid "Empty History" #~ msgstr "تاریخچه خالی" #~ msgid "No Treatments Added" #~ msgstr "هیچ درمانی اضافه نشده است" #~ msgctxt "shortcut window" #~ msgid "General" #~ msgstr "کلی" #~ msgctxt "shortcut window" #~ msgid "Preferences" #~ msgstr "ترجیحات" #~ msgid "After meal" #~ msgstr "پس از غذا" #~ msgid "Refill Stock" #~ msgstr "پر کردن دوبارهٔ مانده" #~ msgid "Low Stock" #~ msgstr "ماندهٔ کم" #~ msgid "Form" #~ msgstr "از" #~ msgid "Color and icon" #~ msgstr "رنگ و نقشک" #~ msgid "Time and amount" #~ msgstr "زمان و مقدار" #~ msgid "Restore" #~ msgstr "بازآوری" #~ msgid "New entry" #~ msgstr "ورودی جدید" #~ msgid "Name already exists" #~ msgstr "نام از پیش وجود دارد" diegopvlk-Dosage-bd9126a/po/fi.po000066400000000000000000000547331514145341100166770ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) 2023 Diego Povliuk # This file is distributed under the license GPLv3-or-later. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: io.github.diegopvlk.Dosage\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-12-19 16:12-0300\n" "PO-Revision-Date: 2026-01-11 16:48+0000\n" "Last-Translator: Jiri Grönroos \n" "Language-Team: Finnish \n" "Language: fi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 5.15.1\n" #. TRANSLATORS: App name, translate to your language and follow the capitalization #: data/io.github.diegopvlk.Dosage.appdata.xml.in:20 #: data/io.github.diegopvlk.Dosage.desktop.in:3 #: src/utils/getTreatmentsExportFile.js:173 src/utils/saveFiles.js:22 #: src/utils/saveFiles.js:44 src/main.js:60 src/window.js:1060 #: data/ui/window.blp:6 msgid "Dosage" msgstr "Annostus" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:21 msgid "Keep track of your treatments" msgstr "Pidä kirjaa lääkityksistä" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:24 msgid "" "Easily manage and track treatments with Dosage: notifications, history, " "multiple doses, flexible frequency, customization, stock monitoring, and " "duration control" msgstr "" "Seuraa vaivatta hoitoja tällä sovelluksella: ilmoitukset, historia, useat " "annostukset, joustavat toistot, mukautus, varastonhallinta ja vaikutuksen " "valvonta" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:25 msgid "Features:" msgstr "Ominaisuudet:" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:27 msgid "Notifications — Get reminders at the right time" msgstr "Ilmoitukset — Muistutukset oikea-aikaisesti" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:28 msgid "History — See which medications you took, skipped or missed" msgstr "Historia — Tarkista mitkä lääkkeet otit, jätit ottamatta tai unohdit" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:29 msgid "Dosage management — Multiple doses with different times" msgstr "Annostelun seuranta — Useita annoksia eri aikoihin" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:30 msgid "" "Frequency modes — Every day, specific days, cycle or just when necessary" msgstr "" "Toistuvuusvälit — Päivittäin, tiettyinä päivinä, jaksottain tai vain tarpeen " "vaatiessa" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:31 msgid "Color and icon — Give a shape for your treatment" msgstr "Väri ja kuvake — Anna hoidolle ilme" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:32 msgid "Inventory tracking — Monitor your stock and get reminded when it's low" msgstr "" "Varastonseuranta — Seuraa jäljellä olevia lääkkeitä ja vastaanota ilmoitus, " "kun lääkkeet ovat vähissä" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:33 msgid "Duration — Define the start and end dates" msgstr "Kesto — Määritä aloitus- ja lopetuspäivät" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:44 msgid "Dosage today window in light theme" msgstr "Sovelluksen Tänään-ikkuna vaalealla teemalla" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:49 msgid "Dosage preferences window in light theme" msgstr "Sovelluksen Asetukset-ikkuna vaalealla teemalla" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:54 msgid "Dosage edit treatment window in light theme" msgstr "Hoidon muokkausikkuna vaalealla teemalla" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:59 msgid "Dosage today window in dark theme" msgstr "Sovelluksen Tänään-ikkuna tummalla teemalla" #. TRANSLATORS: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/io.github.diegopvlk.Dosage.desktop.in:10 msgid "Medication;Tracker;Reminder;Today;Treatments;Pill;Drug;Remedy;" msgstr "Medication;Tracker;Reminder;Today;Treatments;Pill;Drug;Remedy;lääkitys;pilleri;hoito;lääke;seuranta;" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:232 msgid "Date" msgstr "Päivämäärä" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:199 msgid "Time" msgstr "Aika" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/med-dialog.blp:61 data/ui/one-time-dialog.blp:49 msgid "Name" msgstr "Nimi" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:183 msgid "Dose" msgstr "Annos" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 msgid "Status" msgstr "Tila" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 msgid "Time Confirmed" msgstr "Aika vahvistettu" #: src/utils/getHistoryExportFile.js:38 src/utils/getHistoryExportFile.js:117 #: src/editHistDialog.js:68 src/historyFactory.js:186 msgid "Missed" msgstr "Jäänyt huomiotta" #: src/utils/getHistoryExportFile.js:41 src/utils/getHistoryExportFile.js:121 #: src/historyFactory.js:183 data/ui/edit-hist-dialog.blp:111 msgid "Skipped" msgstr "Ohitettu" #: src/utils/getHistoryExportFile.js:44 src/utils/getHistoryExportFile.js:55 #: src/utils/getHistoryExportFile.js:125 src/utils/getHistoryExportFile.js:138 #: src/editHistDialog.js:73 src/historyFactory.js:190 #: data/ui/edit-hist-dialog.blp:116 msgid "Confirmed" msgstr "Vahvistettu" #: src/utils/getHistoryExportFile.js:52 src/utils/getHistoryExportFile.js:134 #: src/editHistDialog.js:56 src/historyFactory.js:178 msgid "Auto-Confirmed" msgstr "Automaattisesti vahvistettu" #: src/utils/getHistoryExportFile.js:55 src/utils/getHistoryExportFile.js:138 #: src/editHistDialog.js:74 msgid "Time Unknown" msgstr "Tuntematon aika" #. TRANSLATORS: Context: 1 Pill at 19:00 #: src/utils/getTreatmentsExportFile.js:69 msgid "at" msgstr "klo" #: src/utils/getTreatmentsExportFile.js:89 data/ui/med-dialog.blp:443 msgid "Notes" msgstr "Muistiinpanot" #: src/utils/getTreatmentsExportFile.js:96 src/utils/locale.js:37 #: src/treatmentsFactory.js:268 msgid "Daily" msgstr "Päivittäin" #: src/utils/getTreatmentsExportFile.js:102 src/medDialog.js:428 #: data/ui/med-dialog.blp:459 msgid "Day of Month" msgstr "Kuukauden päivä" #. TRANSLATORS: Context: 2 day(s) on, 1 day(s) off #: src/utils/getTreatmentsExportFile.js:109 msgid "day(s) on" msgstr "" #. TRANSLATORS: Context: 2 day(s) on, 1 day(s) off #: src/utils/getTreatmentsExportFile.js:111 msgid "day(s) off" msgstr "" #: src/utils/getTreatmentsExportFile.js:122 src/todayFactory.js:41 #: src/treatmentsFactory.js:298 data/ui/med-dialog.blp:461 msgid "As Needed" msgstr "Tarvittaessa" #: src/utils/getTreatmentsExportFile.js:132 data/ui/med-dialog.blp:764 msgid "Duration" msgstr "Kesto" #: src/utils/getTreatmentsExportFile.js:135 msgid "Started on" msgstr "Alkoi" #: src/utils/getTreatmentsExportFile.js:136 data/ui/med-dialog.blp:775 #, fuzzy #| msgid "Starts On" msgid "Start" msgstr "Alkaa" #: src/utils/getTreatmentsExportFile.js:138 src/treatmentsFactory.js:256 msgid "Ended on" msgstr "Päättynyt" #: src/utils/getTreatmentsExportFile.js:138 data/ui/med-dialog.blp:817 #, fuzzy #| msgid "Ends On" msgid "End" msgstr "Loppuu" #: src/utils/getTreatmentsExportFile.js:173 src/utils/saveFiles.js:44 #: data/ui/window.blp:234 msgid "Treatments" msgstr "Hoidot" #: src/utils/getTreatmentsExportFile.js:184 #, fuzzy #| msgctxt "shortcut window" #| msgid "General" msgid "Generated on" msgstr "Yleiset" #: src/utils/getTreatmentsExportFile.js:187 msgid "Ongoing" msgstr "Meneillään" #: src/utils/getTreatmentsExportFile.js:188 msgid "Non-scheduled" msgstr "Ei ajastettu" #: src/utils/getTreatmentsExportFile.js:189 msgid "Finished" msgstr "Valmistunut" #: src/utils/locale.js:33 msgid "Weekends" msgstr "Viikonloppuisin" #: src/utils/locale.js:35 msgid "Weekdays" msgstr "Viikonpäivät" #: src/utils/saveFiles.js:22 data/ui/window.blp:156 msgid "History" msgstr "Historia" #: src/editHistDialog.js:60 src/editHistDialog.js:89 src/editHistDialog.js:110 msgid "Confirmed At" msgstr "Vahvistettu" #: src/editHistDialog.js:64 src/editHistDialog.js:114 msgid "Skipped At" msgstr "Ohitettu" #: src/historyFactory.js:47 msgid "Select to be Removed" msgstr "Valitse poistettava" #. TRANSLATORS: "Your Name " #: src/main.js:69 msgid "translator-credits" msgstr "" "Jiri Grönroos \n" "Ricky Tigg " #: src/main.js:73 msgid "Thanks to These Projects!" msgstr "Kiitos näille projekteille!" #: src/medDialog.js:99 msgid "Edit Treatment" msgstr "Muokkaa hoitoa" #: src/medDialog.js:100 data/ui/edit-hist-dialog.blp:30 #: data/ui/preferences.blp:112 data/ui/preferences.blp:132 #: data/ui/refill-dialog.blp:67 msgid "Save" msgstr "Tallenna" #: src/medDialog.js:114 msgid "Copy" msgstr "Kopio" #: src/medDialog.js:217 msgid "Add Dose" msgstr "Lisää annos" #: src/medDialog.js:419 msgid "Choose" msgstr "Valitse" #: src/medDialog.js:429 src/treatmentsFactory.js:274 msgid "Day" msgstr "Päivä" #: src/medDialog.js:456 data/ui/med-dialog.blp:458 msgid "Specific Days" msgstr "Valitut päivät" #: src/medDialog.js:463 src/treatmentsFactory.js:295 data/ui/med-dialog.blp:460 msgid "Cycle" msgstr "Sykli" #: src/medDialog.js:467 data/ui/med-dialog.blp:452 msgid "Frequency" msgstr "Toistuvuus" #: src/medDialog.js:500 msgid "Empty Name" msgstr "Tyhjä nimi" #: src/medDialog.js:506 msgid "Empty Unit" msgstr "Tyhjä yksikkö" #: src/medDialog.js:513 msgid "Choose at Least One Day" msgstr "Valitse vähintään yksi päivä" #: src/medDialog.js:527 src/oneTimeDialog.js:187 msgid "Name Already on Treatment List" msgstr "Nimi on jo hoitolistalla" #: src/medDialog.js:542 msgid "Duplicated Time" msgstr "Päällekkäinen aika" #: src/medDialog.js:582 msgid "Are You Sure?" msgstr "Oletko varma?" #: src/medDialog.js:583 msgid "will be deleted" msgstr "tullaan poistamaan" #: src/medDialog.js:586 data/ui/edit-hist-dialog.blp:18 #: data/ui/med-dialog.blp:19 msgid "Cancel" msgstr "Peru" #: src/medDialog.js:587 src/treatmentsFactory.js:128 data/ui/med-dialog.blp:865 msgid "Delete" msgstr "Poista" #: src/oneTimeDialog.js:110 msgid "New" msgstr "Uusi" #: src/oneTimeDialog.js:121 data/ui/med-dialog.blp:189 #: data/ui/one-time-dialog.blp:178 msgid "Pill(s)" msgstr "Pilleri(t)" #: src/prefsDialog.js:63 msgid "Accept to allow running in the background and receive notifications" msgstr "" "Hyväksy, jotta suoritus taustalla ja ilmoitusten vastaanottaminen sallitaan" #: src/prefsDialog.js:74 src/window.js:259 msgid "An Issue Has Occurred" msgstr "Ongelma on ilmennyt" #: src/prefsDialog.js:77 src/window.js:267 src/window.js:289 src/window.js:311 #: src/window.js:329 msgid "Close" msgstr "Sulje" #: src/timeDoseRow.js:34 msgid "Remove Dose" msgstr "Poista annos" #: src/timeDoseRow.js:40 data/ui/edit-hist-dialog.blp:90 #: data/ui/one-time-dialog.blp:210 msgid "Change Time" msgstr "Muuta aikaa" #: src/todayFactory.js:134 msgid "Change Dose" msgstr "Muuta annosta" #: src/treatmentsFactory.js:96 src/treatmentsFactory.js:126 #: data/ui/refill-dialog.blp:7 msgid "Refill" msgstr "Täytä uudelleen" #: src/treatmentsFactory.js:125 msgid "Edit" msgstr "Muokkaa" #: src/treatmentsFactory.js:127 msgid "Duplicate" msgstr "Monista" #: src/treatmentsFactory.js:146 msgid "Options" msgstr "Vaihtoehdot" #. TRANSLATORS: keep the %d it's where the number goes #: src/treatmentsFactory.js:244 #, javascript-format msgid "%d Remaining" msgstr "%d jäljellä" #. TRANSLATORS: label for when duration is enabled #: src/treatmentsFactory.js:254 msgid "Starts on" msgstr "Alkaa" #: src/treatmentsFactory.js:255 msgid "Until" msgstr "Asti" #: src/treatmentsFactory.js:283 src/treatmentsFactory.js:286 msgid "Next Dose" msgstr "Seuraava annos" #: src/window.js:173 src/window.js:943 msgid "Reminder" msgstr "Muistutus" #. TRANSLATORS: Notification text for when the inventory is low #: src/window.js:175 msgid "You have treatments low in stock" msgstr "Hoitoannokset ovat käymässä vähiin" #: src/window.js:492 msgid "Show All" msgstr "Näytä kaikki" #: src/window.js:515 msgid "Show Less" msgstr "Näytä vähemmän" #: src/window.js:648 msgid "No Results Found" msgstr "Tuloksia ei löytynyt" #: src/window.js:648 src/window.js:1517 msgid "No History" msgstr "Ei historiaa" #: src/window.js:818 data/ui/window.blp:260 msgid "No Treatments" msgstr "Ei hoitoja" #: src/window.js:818 msgid "All Done for Today" msgstr "Kaikki kunnossa tämän päivän osalta" #: src/window.js:906 src/window.js:1090 data/ui/one-time-dialog.blp:285 #: data/ui/preferences.blp:73 msgid "Confirm" msgstr "Vahvista" #: src/window.js:906 msgid "Confirm All" msgstr "Vahvista kaikki" #: src/window.js:907 data/ui/preferences.blp:84 data/ui/window.blp:146 msgid "Skip" msgstr "Ohita" #: src/window.js:907 msgid "Skip All" msgstr "Ohita kaikki" #. TRANSLATORS: keep the %d it's where the number goes #: src/window.js:938 #, javascript-format msgid "and %d more" msgstr "ja vielä %d" #: src/window.js:1090 data/ui/one-time-dialog.blp:7 data/ui/window.blp:133 msgid "One-Time Entry" msgstr "Kertakirjaus" #: src/window.js:1295 data/ui/window.blp:353 msgid "Quit" msgstr "Lopeta" #: data/ui/edit-hist-dialog.blp:7 msgid "Edit Entry" msgstr "Muokkaa merkintää" #: data/ui/med-dialog.blp:7 msgid "New Treatment" msgstr "Uusi hoito" #: data/ui/med-dialog.blp:31 data/ui/window.blp:283 msgid "Add" msgstr "Lisää" #: data/ui/med-dialog.blp:69 data/ui/one-time-dialog.blp:58 msgid "Color" msgstr "Väri" #. TRANSLATORS: Tooltip for the colors (from Default until Purple) #: data/ui/med-dialog.blp:94 data/ui/one-time-dialog.blp:83 msgid "Default" msgstr "Oletus" #: data/ui/med-dialog.blp:106 data/ui/one-time-dialog.blp:95 msgid "Red" msgstr "Punainen" #: data/ui/med-dialog.blp:118 data/ui/one-time-dialog.blp:107 msgid "Orange" msgstr "Oranssi" #: data/ui/med-dialog.blp:130 data/ui/one-time-dialog.blp:119 msgid "Yellow" msgstr "Keltainen" #: data/ui/med-dialog.blp:142 data/ui/one-time-dialog.blp:131 msgid "Green" msgstr "Vihreä" #: data/ui/med-dialog.blp:154 data/ui/one-time-dialog.blp:143 msgid "Cyan" msgstr "Syaani" #: data/ui/med-dialog.blp:166 data/ui/one-time-dialog.blp:155 msgid "Blue" msgstr "Sininen" #: data/ui/med-dialog.blp:178 data/ui/one-time-dialog.blp:167 msgid "Purple" msgstr "Liila" #: data/ui/med-dialog.blp:188 data/ui/one-time-dialog.blp:177 msgid "Unit" msgstr "Yksikkö" #: data/ui/med-dialog.blp:197 msgid "Icon" msgstr "Kuvake" #. TRANSLATORS: Tooltip for the icons (from Pill until Potion) #: data/ui/med-dialog.blp:226 msgid "Pill" msgstr "Pilleri" #: data/ui/med-dialog.blp:242 msgid "Alternative Pill" msgstr "Vaihtoehtoinen pilleri" #: data/ui/med-dialog.blp:258 msgid "Capsule" msgstr "Kapseli" #: data/ui/med-dialog.blp:274 msgid "Round Pill" msgstr "Pyöreä pilleri" #: data/ui/med-dialog.blp:290 msgid "Alternative Round Pill" msgstr "Vaihtoehtoinen pyöreä pilleri" #: data/ui/med-dialog.blp:306 msgid "Ampoule" msgstr "Ampulli" #: data/ui/med-dialog.blp:322 msgid "Injection" msgstr "Injektio" #: data/ui/med-dialog.blp:338 msgid "Square Pill" msgstr "Neliömäinen pilleri" #: data/ui/med-dialog.blp:354 msgid "Alternative Square Pill" msgstr "Vaihtoehtoinen neliömäinen pilleri" #: data/ui/med-dialog.blp:370 msgid "Triangle pill" msgstr "Kolmiomainen pilleri" #: data/ui/med-dialog.blp:386 msgid "Alternative Triangle Pill" msgstr "Vaihtoehtoinen kolmiomainen pilleri" #: data/ui/med-dialog.blp:402 msgid "Bottle" msgstr "Pullo" #: data/ui/med-dialog.blp:418 msgid "Drops" msgstr "Pisarat" #: data/ui/med-dialog.blp:434 msgid "Potion" msgstr "Lääkeannos" #: data/ui/med-dialog.blp:457 msgid "Every Day" msgstr "Päivittäin" #: data/ui/med-dialog.blp:473 msgid "Choose Days" msgstr "Valitse päivät" #: data/ui/med-dialog.blp:572 msgid "Choose Day" msgstr "Valitse päivä" #: data/ui/med-dialog.blp:617 msgid "Change Cycle" msgstr "Vaihda sykli" #: data/ui/med-dialog.blp:642 msgid "Days Active" msgstr "Aktiiviset päivät" #: data/ui/med-dialog.blp:656 msgid "Days Inactive" msgstr "Passiiviset päivät" #. TRANSLATORS: Day in cycle, try to keep it short #: data/ui/med-dialog.blp:671 msgid "Today is Cycle Day…" msgstr "Tänään syklin päivä…" #: data/ui/med-dialog.blp:694 msgid "Increase Notification Priority" msgstr "Korota ilmoituksen tärkeysastetta" #: data/ui/med-dialog.blp:695 msgid "Show in fullscreen mode or with 'Do Not Disturb' enabled" msgstr "" "Näyttää ilmoituksen koko näytön tilassa tai vaikka \"Älä häiritse\" olisi " "käytössä" #: data/ui/med-dialog.blp:699 msgid "Recurring Notifications" msgstr "Toistuvat ilmoitukset" #: data/ui/med-dialog.blp:700 msgid "Renotify until it's confirmed or skipped" msgstr "Muistuta uudelleen, kunnes on saatu vahvistus tai ohitus" #: data/ui/med-dialog.blp:705 msgid "Interval in Minutes" msgstr "Väli minuuteissa" #: data/ui/med-dialog.blp:718 data/ui/refill-dialog.blp:36 msgid "Inventory" msgstr "Inventaario" #: data/ui/med-dialog.blp:719 msgid "Manage your stock" msgstr "Hallitse varastoa" #: data/ui/med-dialog.blp:725 msgid "Current" msgstr "Nykyinen" #: data/ui/med-dialog.blp:738 msgid "Remind Me At" msgstr "Muistuta kun jäljellä" #: data/ui/med-dialog.blp:751 msgid "Refill Amount" msgstr "Täyttömäärä" #: data/ui/med-dialog.blp:765 msgid "Set start and end dates" msgstr "Aseta alku- ja loppupäivät" #: data/ui/med-dialog.blp:785 data/ui/med-dialog.blp:827 #: data/ui/one-time-dialog.blp:243 msgid "Choose Date" msgstr "Valitse päivämäärä" #: data/ui/med-dialog.blp:855 msgid "Mark as Confirmed" msgstr "Merkitse vahvistetuksi" #: data/ui/med-dialog.blp:856 msgid "" "If not manually confirmed or skipped, it will be recorded as confirmed in " "history, reducing stock if enabled" msgstr "" "Jos sitä ei vahvisteta tai ohiteta manuaalisesti, se kirjataan vahvistetuksi " "historiaan, mikä vähentää varastoa, jos varasto on otettu käyttöön" #: data/ui/one-time-dialog.blp:44 msgid "From Treatment List" msgstr "Hoitoluettelosta" #: data/ui/one-time-dialog.blp:182 msgid "Amount" msgstr "Määrä" #: data/ui/preferences.blp:7 data/ui/window.blp:338 msgid "Preferences" msgstr "Asetukset" #: data/ui/preferences.blp:17 msgid "Auto-Start at Login" msgstr "Käynnistä kirjautumisen yhteydessä" #: data/ui/preferences.blp:28 msgid "Auto-Clear History" msgstr "Automaattinen historian tyhjennys" #: data/ui/preferences.blp:29 msgid "Keeps a maximum of 30 days" msgstr "Säilyy enintään 30 päivää" #: data/ui/preferences.blp:40 msgid "Low Stock Notification" msgstr "Vähäisen varaston ilmoitus" #: data/ui/preferences.blp:41 msgid "Send reminders when treatments are low in stock" msgstr "Lähetä muistutuksia, kun hoidot ovat alhaiset varastossa" #: data/ui/preferences.blp:52 msgid "Notification Sound" msgstr "Ilmoituksen ääni" #: data/ui/preferences.blp:63 msgid "Notification Buttons" msgstr "Ilmoituksen painikkeet" #: data/ui/preferences.blp:64 msgid "Show or hide confirm/skip" msgstr "Näytä tai piilota vahvistus- ja ohituspainikkeet" #: data/ui/preferences.blp:98 msgid "Export History As" msgstr "Historian viennin muoto" #: data/ui/preferences.blp:121 msgid "Export Treatments As" msgstr "Hoitojen viennin muoto" #: data/ui/shortcuts-dialog.blp:8 msgid "Shortcuts" msgstr "Pikanäppäimet" #: data/ui/shortcuts-dialog.blp:11 msgctxt "shortcut window" msgid "Show/Hide 'As Needed'" msgstr "Näytä/piilota \"Tarvittaessa\"" #: data/ui/shortcuts-dialog.blp:16 msgctxt "shortcut window" msgid "New One-Time Entry" msgstr "Uusi kertakirjaus" #: data/ui/shortcuts-dialog.blp:21 msgctxt "shortcut window" msgid "Add New Treatment" msgstr "Lisää uusi hoito" #: data/ui/shortcuts-dialog.blp:26 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Näytä pikanäppäimet" #: data/ui/shortcuts-dialog.blp:31 msgctxt "shortcut window" msgid "Quit" msgstr "Lopeta" #: data/ui/window.blp:23 msgid "Show/Hide 'As Needed'" msgstr "Näytä/piilota \"Tarvittaessa\"" #: data/ui/window.blp:31 msgid "Search" msgstr "Haku" #: data/ui/window.blp:39 msgid "Sort Treatments" msgstr "Järjestä hoidot" #: data/ui/window.blp:48 msgid "Main Menu" msgstr "Päävalikko" #: data/ui/window.blp:61 msgid "Search…" msgstr "Haku…" #: data/ui/window.blp:71 msgid "Today" msgstr "Tänään" #: data/ui/window.blp:117 data/ui/window.blp:210 msgid "Unselect" msgstr "Älä valitse" #: data/ui/window.blp:220 msgid "Remove Entries" msgstr "Poista merkinnät" #: data/ui/window.blp:300 msgid "Name Ascending" msgstr "Nimi nousevasti" #: data/ui/window.blp:306 msgid "Remaining Stock (Lowest First)" msgstr "Määrä jäljellä (vähäisin ensin)" #: data/ui/window.blp:312 msgid "Remaining Stock (Highest First)" msgstr "Määrä jäljellä (eniten ensin)" #: data/ui/window.blp:318 msgid "As Needed Last" msgstr "Viimeksi tarvittu" #: data/ui/window.blp:324 #, fuzzy #| msgid "Ended on" msgid "Ended Last" msgstr "Päättynyt" #: data/ui/window.blp:330 #, fuzzy #| msgid "As Needed" msgid "As Needed/Ended Last" msgstr "Tarvittaessa" #: data/ui/window.blp:343 msgid "Keyboard Shortcuts" msgstr "Pikanäppäimet" #: data/ui/window.blp:348 msgid "About Dosage" msgstr "Tietoja - Dosage" #~ msgid "Empty Treatments" #~ msgstr "Tyhjät hoidot" #~ msgid "Empty History" #~ msgstr "Historia on tyhjä" #~ msgid "No Treatments Added" #~ msgstr "Hoitoja Ei Ole Vielä Lisätty" #~ msgctxt "shortcut window" #~ msgid "General" #~ msgstr "Yleiset" #~ msgctxt "shortcut window" #~ msgid "Preferences" #~ msgstr "Asetukset" #~ msgid "After meal" #~ msgstr "Aterian jälkeen" #~ msgid "Refill Stock" #~ msgstr "Täytä Varasto" #~ msgid "Low Stock" #~ msgstr "Loppumaisillaan" #~ msgid "Form" #~ msgstr "Muoto" #~ msgid "Color and icon" #~ msgstr "Väri ja kuvake" #~ msgid "Time and amount" #~ msgstr "Aika ja määrä" #~ msgid "Restore" #~ msgstr "Palauttaa" #~ msgid "New entry" #~ msgstr "Uusi merkintä" #~ msgid "Name already exists" #~ msgstr "Nimi on jo olemassa" #~ msgid "Add to history" #~ msgstr "Lisää historiaan" #~ msgid "medication" #~ msgstr "lääkitys" #~ msgid "tracker" #~ msgstr "seuranta" #~ msgid "treatments" #~ msgstr "hoidot" #~ msgid "pill" #~ msgstr "pilleri" #~ msgid "drug" #~ msgstr "lääke" #~ msgid "Su" #~ msgstr "Su" #~ msgid "Mo" #~ msgstr "Ma" #~ msgid "Tu" #~ msgstr "Ti" #~ msgid "We" #~ msgstr "Ke" #~ msgid "Th" #~ msgstr "To" #~ msgid "Fr" #~ msgstr "Pe" #~ msgid "Sa" #~ msgstr "La" #~ msgid "Sunday" #~ msgstr "Sunnuntai" #~ msgid "Monday" #~ msgstr "Maanantai" #~ msgid "Tuesday" #~ msgstr "Tiistai" #~ msgid "Wednesday" #~ msgstr "Keskiviikko" #~ msgid "Thursday" #~ msgstr "Torstai" #~ msgid "Friday" #~ msgstr "Perjantai" #~ msgid "Saturday" #~ msgstr "Lauantai" diegopvlk-Dosage-bd9126a/po/fr.po000066400000000000000000000555051514145341100167060ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) 2023 Diego Povliuk # This file is distributed under the license GPLv3-or-later. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: io.github.diegopvlk.Dosage\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-12-19 16:12-0300\n" "PO-Revision-Date: 2025-07-13 16:59+0000\n" "Last-Translator: Diego Povliuk \n" "Language-Team: French \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 5.13-dev\n" #. TRANSLATORS: App name, translate to your language and follow the capitalization #: data/io.github.diegopvlk.Dosage.appdata.xml.in:20 #: data/io.github.diegopvlk.Dosage.desktop.in:3 #: src/utils/getTreatmentsExportFile.js:173 src/utils/saveFiles.js:22 #: src/utils/saveFiles.js:44 src/main.js:60 src/window.js:1060 #: data/ui/window.blp:6 msgid "Dosage" msgstr "Dosage" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:21 msgid "Keep track of your treatments" msgstr "Suivre vos traitements" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:24 msgid "" "Easily manage and track treatments with Dosage: notifications, history, " "multiple doses, flexible frequency, customization, stock monitoring, and " "duration control" msgstr "" "Gérez facilement le suivi de vos traitements médicamenteux avec Dosage : " "notifications, historique, doses multiples, fréquences flexibles, " "personnalisation, gestion des stocks, et contrôle de la durée" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:25 msgid "Features:" msgstr "Fonctionnalités :" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:27 msgid "Notifications — Get reminders at the right time" msgstr "Notifications — Pour être rappelé à temps" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:28 msgid "History — See which medications you took, skipped or missed" msgstr "Historique — Médicaments pris, sautés ou oubliés" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:29 msgid "Dosage management — Multiple doses with different times" msgstr "Gestion des dosages — Plusieurs doses avec des horaires différents" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:30 msgid "" "Frequency modes — Every day, specific days, cycle or just when necessary" msgstr "Fréquences — Tous les jours, certains jours, par cycle ou au besoin" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:31 msgid "Color and icon — Give a shape for your treatment" msgstr "Couleurs et icônes — Donnez une forme à vos traitements" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:32 msgid "Inventory tracking — Monitor your stock and get reminded when it's low" msgstr "Gestion de stock — Gérez vos stocks avec des rappels avant épuisement" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:33 msgid "Duration — Define the start and end dates" msgstr "Durée — Définissez le début et la fin des traitements" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:44 msgid "Dosage today window in light theme" msgstr "Fenêtre « Aujourd’hui » de Dosage avec thème clair" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:49 msgid "Dosage preferences window in light theme" msgstr "Fenêtre « Préférences » de Dosage avec thème clair" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:54 msgid "Dosage edit treatment window in light theme" msgstr "Fenêtre d’édition des traitements de Dosage avec thème clair" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:59 msgid "Dosage today window in dark theme" msgstr "Fenêtre « Aujourd’hui » de Dosage avec thème sombre" #. TRANSLATORS: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/io.github.diegopvlk.Dosage.desktop.in:10 msgid "Medication;Tracker;Reminder;Today;Treatments;Pill;Drug;Remedy;" msgstr "Médicament;Suivi;Rappel;Aujourd'hui;Traitements;Comprimé;Remède;Pilule;" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:232 msgid "Date" msgstr "Date" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:199 msgid "Time" msgstr "Heure" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/med-dialog.blp:61 data/ui/one-time-dialog.blp:49 msgid "Name" msgstr "Nom" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:183 msgid "Dose" msgstr "Dose" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 msgid "Status" msgstr "Statut" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 msgid "Time Confirmed" msgstr "Heure Confirmée" #: src/utils/getHistoryExportFile.js:38 src/utils/getHistoryExportFile.js:117 #: src/editHistDialog.js:68 src/historyFactory.js:186 msgid "Missed" msgstr "Manqué" #: src/utils/getHistoryExportFile.js:41 src/utils/getHistoryExportFile.js:121 #: src/historyFactory.js:183 data/ui/edit-hist-dialog.blp:111 msgid "Skipped" msgstr "Sauté" #: src/utils/getHistoryExportFile.js:44 src/utils/getHistoryExportFile.js:55 #: src/utils/getHistoryExportFile.js:125 src/utils/getHistoryExportFile.js:138 #: src/editHistDialog.js:73 src/historyFactory.js:190 #: data/ui/edit-hist-dialog.blp:116 msgid "Confirmed" msgstr "Confirmé" #: src/utils/getHistoryExportFile.js:52 src/utils/getHistoryExportFile.js:134 #: src/editHistDialog.js:56 src/historyFactory.js:178 msgid "Auto-Confirmed" msgstr "Auto-Confirmé" #: src/utils/getHistoryExportFile.js:55 src/utils/getHistoryExportFile.js:138 #: src/editHistDialog.js:74 msgid "Time Unknown" msgstr "Heure Inconnue" #. TRANSLATORS: Context: 1 Pill at 19:00 #: src/utils/getTreatmentsExportFile.js:69 #, fuzzy #| msgid "Date" msgid "at" msgstr "Date" #: src/utils/getTreatmentsExportFile.js:89 data/ui/med-dialog.blp:443 msgid "Notes" msgstr "Notes" #: src/utils/getTreatmentsExportFile.js:96 src/utils/locale.js:37 #: src/treatmentsFactory.js:268 msgid "Daily" msgstr "Quotidiennement" #: src/utils/getTreatmentsExportFile.js:102 src/medDialog.js:428 #: data/ui/med-dialog.blp:459 msgid "Day of Month" msgstr "Jour du Mois" #. TRANSLATORS: Context: 2 day(s) on, 1 day(s) off #: src/utils/getTreatmentsExportFile.js:109 msgid "day(s) on" msgstr "" #. TRANSLATORS: Context: 2 day(s) on, 1 day(s) off #: src/utils/getTreatmentsExportFile.js:111 msgid "day(s) off" msgstr "" #: src/utils/getTreatmentsExportFile.js:122 src/todayFactory.js:41 #: src/treatmentsFactory.js:298 data/ui/med-dialog.blp:461 msgid "As Needed" msgstr "Au Besoin" #: src/utils/getTreatmentsExportFile.js:132 data/ui/med-dialog.blp:764 msgid "Duration" msgstr "Durée" #: src/utils/getTreatmentsExportFile.js:135 #, fuzzy #| msgid "Starts On" msgid "Started on" msgstr "Débute le" #: src/utils/getTreatmentsExportFile.js:136 data/ui/med-dialog.blp:775 #, fuzzy #| msgid "Starts On" msgid "Start" msgstr "Débute le" #: src/utils/getTreatmentsExportFile.js:138 src/treatmentsFactory.js:256 msgid "Ended on" msgstr "Terminé le" #: src/utils/getTreatmentsExportFile.js:138 data/ui/med-dialog.blp:817 #, fuzzy #| msgid "Ends On" msgid "End" msgstr "S’achève le" #: src/utils/getTreatmentsExportFile.js:173 src/utils/saveFiles.js:44 #: data/ui/window.blp:234 msgid "Treatments" msgstr "Traitements" #: src/utils/getTreatmentsExportFile.js:184 #, fuzzy #| msgctxt "shortcut window" #| msgid "General" msgid "Generated on" msgstr "Général" #: src/utils/getTreatmentsExportFile.js:187 msgid "Ongoing" msgstr "" #: src/utils/getTreatmentsExportFile.js:188 msgid "Non-scheduled" msgstr "" #: src/utils/getTreatmentsExportFile.js:189 msgid "Finished" msgstr "" #: src/utils/locale.js:33 msgid "Weekends" msgstr "Fins de Semaine" #: src/utils/locale.js:35 msgid "Weekdays" msgstr "Jours de Semaine" #: src/utils/saveFiles.js:22 data/ui/window.blp:156 msgid "History" msgstr "Historique" #: src/editHistDialog.js:60 src/editHistDialog.js:89 src/editHistDialog.js:110 msgid "Confirmed At" msgstr "Confirmé à" #: src/editHistDialog.js:64 src/editHistDialog.js:114 msgid "Skipped At" msgstr "Sauté à" #: src/historyFactory.js:47 msgid "Select to be Removed" msgstr "Sélectionner pour être Supprimé" #. TRANSLATORS: "Your Name " #: src/main.js:69 msgid "translator-credits" msgstr "" "Xenelio \n" "rene-coty " #: src/main.js:73 msgid "Thanks to These Projects!" msgstr "Merci pour ces Projets !" #: src/medDialog.js:99 msgid "Edit Treatment" msgstr "Modifier le Traitement" #: src/medDialog.js:100 data/ui/edit-hist-dialog.blp:30 #: data/ui/preferences.blp:112 data/ui/preferences.blp:132 #: data/ui/refill-dialog.blp:67 msgid "Save" msgstr "Sauvegarder" #: src/medDialog.js:114 msgid "Copy" msgstr "Copier" #: src/medDialog.js:217 msgid "Add Dose" msgstr "Ajouter une Dose" #: src/medDialog.js:419 msgid "Choose" msgstr "Choisir" #: src/medDialog.js:429 src/treatmentsFactory.js:274 msgid "Day" msgstr "Jour" #: src/medDialog.js:456 data/ui/med-dialog.blp:458 msgid "Specific Days" msgstr "Certains Jours" #: src/medDialog.js:463 src/treatmentsFactory.js:295 data/ui/med-dialog.blp:460 msgid "Cycle" msgstr "Cycle" #: src/medDialog.js:467 data/ui/med-dialog.blp:452 msgid "Frequency" msgstr "Fréquence" #: src/medDialog.js:500 msgid "Empty Name" msgstr "Nom Vide" #: src/medDialog.js:506 msgid "Empty Unit" msgstr "Unité Vide" #: src/medDialog.js:513 msgid "Choose at Least One Day" msgstr "Choisir au Moins un Jour" #: src/medDialog.js:527 src/oneTimeDialog.js:187 msgid "Name Already on Treatment List" msgstr "Nom Déjà dans la Liste des Traitements" #: src/medDialog.js:542 msgid "Duplicated Time" msgstr "Heure Dupliquée" #: src/medDialog.js:582 msgid "Are You Sure?" msgstr "Êtes-vous Sûr ?" #: src/medDialog.js:583 msgid "will be deleted" msgstr "sera supprimé" #: src/medDialog.js:586 data/ui/edit-hist-dialog.blp:18 #: data/ui/med-dialog.blp:19 msgid "Cancel" msgstr "Annuler" #: src/medDialog.js:587 src/treatmentsFactory.js:128 data/ui/med-dialog.blp:865 msgid "Delete" msgstr "Supprimer" #: src/oneTimeDialog.js:110 msgid "New" msgstr "Nouveau" #: src/oneTimeDialog.js:121 data/ui/med-dialog.blp:189 #: data/ui/one-time-dialog.blp:178 msgid "Pill(s)" msgstr "Comprimé(s)" #: src/prefsDialog.js:63 msgid "Accept to allow running in the background and receive notifications" msgstr "Autoriser l’exécution en arrière-plan et l’envoi de notifications" #: src/prefsDialog.js:74 src/window.js:259 msgid "An Issue Has Occurred" msgstr "Un Problème est Survenu" #: src/prefsDialog.js:77 src/window.js:267 src/window.js:289 src/window.js:311 #: src/window.js:329 msgid "Close" msgstr "Fermer" #: src/timeDoseRow.js:34 msgid "Remove Dose" msgstr "Supprimer la Dose" #: src/timeDoseRow.js:40 data/ui/edit-hist-dialog.blp:90 #: data/ui/one-time-dialog.blp:210 msgid "Change Time" msgstr "Modifier l'Heure" #: src/todayFactory.js:134 msgid "Change Dose" msgstr "Changer la Dose" #: src/treatmentsFactory.js:96 src/treatmentsFactory.js:126 #: data/ui/refill-dialog.blp:7 msgid "Refill" msgstr "Recharger" #: src/treatmentsFactory.js:125 msgid "Edit" msgstr "Modifier" #: src/treatmentsFactory.js:127 msgid "Duplicate" msgstr "Dupliquer" #: src/treatmentsFactory.js:146 msgid "Options" msgstr "Options" #. TRANSLATORS: keep the %d it's where the number goes #: src/treatmentsFactory.js:244 #, javascript-format msgid "%d Remaining" msgstr "%d Restant" #. TRANSLATORS: label for when duration is enabled #: src/treatmentsFactory.js:254 msgid "Starts on" msgstr "Débute le" #: src/treatmentsFactory.js:255 msgid "Until" msgstr "Jusqu’à" #: src/treatmentsFactory.js:283 src/treatmentsFactory.js:286 msgid "Next Dose" msgstr "Prochaine Dose" #: src/window.js:173 src/window.js:943 msgid "Reminder" msgstr "Rappel" #. TRANSLATORS: Notification text for when the inventory is low #: src/window.js:175 msgid "You have treatments low in stock" msgstr "Certains de vos médicaments sont presque épuisés" #: src/window.js:492 msgid "Show All" msgstr "Montrer Tout" #: src/window.js:515 msgid "Show Less" msgstr "Montrer Moins" #: src/window.js:648 msgid "No Results Found" msgstr "Aucun Résultat Trouvé" #: src/window.js:648 src/window.js:1517 #, fuzzy #| msgid "History" msgid "No History" msgstr "Historique" #: src/window.js:818 data/ui/window.blp:260 #, fuzzy #| msgid "Treatments" msgid "No Treatments" msgstr "Traitements" #: src/window.js:818 msgid "All Done for Today" msgstr "C’est Bon pour Aujourd’hui" #: src/window.js:906 src/window.js:1090 data/ui/one-time-dialog.blp:285 #: data/ui/preferences.blp:73 msgid "Confirm" msgstr "Confirmer" #: src/window.js:906 msgid "Confirm All" msgstr "Confirmer Tout" #: src/window.js:907 data/ui/preferences.blp:84 data/ui/window.blp:146 msgid "Skip" msgstr "Sauter" #: src/window.js:907 msgid "Skip All" msgstr "Sauter Tout" #. TRANSLATORS: keep the %d it's where the number goes #: src/window.js:938 #, javascript-format msgid "and %d more" msgstr "et %d de plus" #: src/window.js:1090 data/ui/one-time-dialog.blp:7 data/ui/window.blp:133 msgid "One-Time Entry" msgstr "Entrée Unique" #: src/window.js:1295 data/ui/window.blp:353 msgid "Quit" msgstr "Quitter" #: data/ui/edit-hist-dialog.blp:7 msgid "Edit Entry" msgstr "Modifier l'Entrée" #: data/ui/med-dialog.blp:7 msgid "New Treatment" msgstr "Nouveau Traitement" #: data/ui/med-dialog.blp:31 data/ui/window.blp:283 msgid "Add" msgstr "Ajouter" #: data/ui/med-dialog.blp:69 data/ui/one-time-dialog.blp:58 msgid "Color" msgstr "Couleur" #. TRANSLATORS: Tooltip for the colors (from Default until Purple) #: data/ui/med-dialog.blp:94 data/ui/one-time-dialog.blp:83 msgid "Default" msgstr "Par Défaut" #: data/ui/med-dialog.blp:106 data/ui/one-time-dialog.blp:95 msgid "Red" msgstr "Rouge" #: data/ui/med-dialog.blp:118 data/ui/one-time-dialog.blp:107 msgid "Orange" msgstr "Orange" #: data/ui/med-dialog.blp:130 data/ui/one-time-dialog.blp:119 msgid "Yellow" msgstr "Jaune" #: data/ui/med-dialog.blp:142 data/ui/one-time-dialog.blp:131 msgid "Green" msgstr "Vert" #: data/ui/med-dialog.blp:154 data/ui/one-time-dialog.blp:143 msgid "Cyan" msgstr "Cyan" #: data/ui/med-dialog.blp:166 data/ui/one-time-dialog.blp:155 msgid "Blue" msgstr "Bleu" #: data/ui/med-dialog.blp:178 data/ui/one-time-dialog.blp:167 msgid "Purple" msgstr "Violet" #: data/ui/med-dialog.blp:188 data/ui/one-time-dialog.blp:177 msgid "Unit" msgstr "Unité" #: data/ui/med-dialog.blp:197 msgid "Icon" msgstr "Icône" #. TRANSLATORS: Tooltip for the icons (from Pill until Potion) #: data/ui/med-dialog.blp:226 msgid "Pill" msgstr "Comprimé" #: data/ui/med-dialog.blp:242 msgid "Alternative Pill" msgstr "Comprimé Alternatif" #: data/ui/med-dialog.blp:258 msgid "Capsule" msgstr "Gélule" #: data/ui/med-dialog.blp:274 msgid "Round Pill" msgstr "Comprimé Rond" #: data/ui/med-dialog.blp:290 msgid "Alternative Round Pill" msgstr "Comprimé Rond Alternatif" #: data/ui/med-dialog.blp:306 msgid "Ampoule" msgstr "Ampoule" #: data/ui/med-dialog.blp:322 msgid "Injection" msgstr "Injection" #: data/ui/med-dialog.blp:338 msgid "Square Pill" msgstr "Comprimé Carré" #: data/ui/med-dialog.blp:354 msgid "Alternative Square Pill" msgstr "Comprimé Carré Alternatif" #: data/ui/med-dialog.blp:370 msgid "Triangle pill" msgstr "Comprimé triangulaire" #: data/ui/med-dialog.blp:386 msgid "Alternative Triangle Pill" msgstr "Comprimé Triangulaire Alternatif" #: data/ui/med-dialog.blp:402 msgid "Bottle" msgstr "Bouteille" #: data/ui/med-dialog.blp:418 msgid "Drops" msgstr "Gouttes" #: data/ui/med-dialog.blp:434 msgid "Potion" msgstr "Potion" #: data/ui/med-dialog.blp:457 msgid "Every Day" msgstr "Tous les Jours" #: data/ui/med-dialog.blp:473 msgid "Choose Days" msgstr "Choisir les Jours" #: data/ui/med-dialog.blp:572 msgid "Choose Day" msgstr "Choisir le Jour" #: data/ui/med-dialog.blp:617 msgid "Change Cycle" msgstr "Changer le Cycle" #: data/ui/med-dialog.blp:642 msgid "Days Active" msgstr "Jours d’Activité" #: data/ui/med-dialog.blp:656 msgid "Days Inactive" msgstr "Jours d’Inactivité" #. TRANSLATORS: Day in cycle, try to keep it short #: data/ui/med-dialog.blp:671 msgid "Today is Cycle Day…" msgstr "Aujourd’hui Jour du Cycle…" #: data/ui/med-dialog.blp:694 msgid "Increase Notification Priority" msgstr "Augmenter la Priorité des Notifications" #: data/ui/med-dialog.blp:695 msgid "Show in fullscreen mode or with 'Do Not Disturb' enabled" msgstr "" "Rend la notification affichée en mode plein écran ou même si « Ne Pas " "Déranger » est activé" #: data/ui/med-dialog.blp:699 msgid "Recurring Notifications" msgstr "Notifications Récurrentes" #: data/ui/med-dialog.blp:700 msgid "Renotify until it's confirmed or skipped" msgstr "Notifier à nouveau jusqu’à confirmation ou saut" #: data/ui/med-dialog.blp:705 msgid "Interval in Minutes" msgstr "Intervalle en Minutes" #: data/ui/med-dialog.blp:718 data/ui/refill-dialog.blp:36 msgid "Inventory" msgstr "Inventaire" #: data/ui/med-dialog.blp:719 msgid "Manage your stock" msgstr "Gérer vos stocks" #: data/ui/med-dialog.blp:725 msgid "Current" msgstr "Actuel" #: data/ui/med-dialog.blp:738 msgid "Remind Me At" msgstr "Me le Rappeler À" #: data/ui/med-dialog.blp:751 msgid "Refill Amount" msgstr "Quantité de Recharge" #: data/ui/med-dialog.blp:765 msgid "Set start and end dates" msgstr "Définir les dates de début et de fin" #: data/ui/med-dialog.blp:785 data/ui/med-dialog.blp:827 #: data/ui/one-time-dialog.blp:243 msgid "Choose Date" msgstr "Choisir une Date" #: data/ui/med-dialog.blp:855 msgid "Mark as Confirmed" msgstr "Marquer comme Confirmé" #: data/ui/med-dialog.blp:856 msgid "" "If not manually confirmed or skipped, it will be recorded as confirmed in " "history, reducing stock if enabled" msgstr "" #: data/ui/one-time-dialog.blp:44 msgid "From Treatment List" msgstr "Depuis la Liste des Traitements" #: data/ui/one-time-dialog.blp:182 msgid "Amount" msgstr "Quantité" #: data/ui/preferences.blp:7 data/ui/window.blp:338 msgid "Preferences" msgstr "Préférences" #: data/ui/preferences.blp:17 msgid "Auto-Start at Login" msgstr "Lancer au Démarrage" #: data/ui/preferences.blp:28 msgid "Auto-Clear History" msgstr "Effacement Automatique de l'Historique" #: data/ui/preferences.blp:29 msgid "Keeps a maximum of 30 days" msgstr "Conserve un maximum de 30 jours" #: data/ui/preferences.blp:40 msgid "Low Stock Notification" msgstr "Notification de Faible Stock" #: data/ui/preferences.blp:41 msgid "Send reminders when treatments are low in stock" msgstr "Envoyer des rappels lorsque les traitements sont en faible stock" #: data/ui/preferences.blp:52 msgid "Notification Sound" msgstr "Son de Notification" #: data/ui/preferences.blp:63 msgid "Notification Buttons" msgstr "Boutons de Notification" #: data/ui/preferences.blp:64 msgid "Show or hide confirm/skip" msgstr "Afficher ou masquer Confirmer/Sauter" #: data/ui/preferences.blp:98 #, fuzzy #| msgid "Export History as CSV" msgid "Export History As" msgstr "Exporter l'Historique au Format CSV" #: data/ui/preferences.blp:121 #, fuzzy #| msgid "Empty Treatments" msgid "Export Treatments As" msgstr "Pas de Traitements" #: data/ui/shortcuts-dialog.blp:8 #, fuzzy #| msgctxt "shortcut window" #| msgid "Show Shortcuts" msgid "Shortcuts" msgstr "Afficher les Raccourcis" #: data/ui/shortcuts-dialog.blp:11 #, fuzzy #| msgid "Show/Hide 'As Needed'" msgctxt "shortcut window" msgid "Show/Hide 'As Needed'" msgstr "Afficher/Masquer « Au Besoin »" #: data/ui/shortcuts-dialog.blp:16 #, fuzzy #| msgid "One-Time Entry" msgctxt "shortcut window" msgid "New One-Time Entry" msgstr "Entrée Unique" #: data/ui/shortcuts-dialog.blp:21 #, fuzzy #| msgid "New Treatment" msgctxt "shortcut window" msgid "Add New Treatment" msgstr "Nouveau Traitement" #: data/ui/shortcuts-dialog.blp:26 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Afficher les Raccourcis" #: data/ui/shortcuts-dialog.blp:31 msgctxt "shortcut window" msgid "Quit" msgstr "Quitter" #: data/ui/window.blp:23 msgid "Show/Hide 'As Needed'" msgstr "Afficher/Masquer « Au Besoin »" #: data/ui/window.blp:31 msgid "Search" msgstr "Recherche" #: data/ui/window.blp:39 #, fuzzy #| msgid "Treatments" msgid "Sort Treatments" msgstr "Traitements" #: data/ui/window.blp:48 msgid "Main Menu" msgstr "Menu Principal" #: data/ui/window.blp:61 msgid "Search…" msgstr "Recherche…" #: data/ui/window.blp:71 msgid "Today" msgstr "Aujourd’hui" #: data/ui/window.blp:117 data/ui/window.blp:210 msgid "Unselect" msgstr "Désélectionner" #: data/ui/window.blp:220 msgid "Remove Entries" msgstr "Supprimer les Entrées" #: data/ui/window.blp:300 msgid "Name Ascending" msgstr "" #: data/ui/window.blp:306 msgid "Remaining Stock (Lowest First)" msgstr "" #: data/ui/window.blp:312 msgid "Remaining Stock (Highest First)" msgstr "" #: data/ui/window.blp:318 #, fuzzy #| msgid "As Needed" msgid "As Needed Last" msgstr "Au Besoin" #: data/ui/window.blp:324 #, fuzzy #| msgid "Ended on" msgid "Ended Last" msgstr "Terminé le" #: data/ui/window.blp:330 #, fuzzy #| msgid "As Needed" msgid "As Needed/Ended Last" msgstr "Au Besoin" #: data/ui/window.blp:343 #, fuzzy #| msgctxt "shortcut window" #| msgid "Show Shortcuts" msgid "Keyboard Shortcuts" msgstr "Afficher les Raccourcis" #: data/ui/window.blp:348 msgid "About Dosage" msgstr "À propos de Dosage" #~ msgid "Empty Treatments" #~ msgstr "Pas de Traitements" #~ msgid "Empty History" #~ msgstr "Historique Vide" #~ msgid "No Treatments Added" #~ msgstr "Aucun Traitement Ajouté" #~ msgctxt "shortcut window" #~ msgid "General" #~ msgstr "Général" #~ msgctxt "shortcut window" #~ msgid "Preferences" #~ msgstr "Préférences" #~ msgid "After meal" #~ msgstr "Après un repas" #~ msgid "Refill Stock" #~ msgstr "Recharger le Stock" #~ msgid "Low Stock" #~ msgstr "Stock Bas" #~ msgid "Form" #~ msgstr "Forme" #~ msgid "Color and icon" #~ msgstr "Couleur et icône" #~ msgid "Time and amount" #~ msgstr "Temps et quantité" #~ msgid "Restore" #~ msgstr "Restaurer" #~ msgid "New entry" #~ msgstr "Nouvelle entrée" #~ msgid "Name already exists" #~ msgstr "Nom déjà existant" #~ msgid "Add to history" #~ msgstr "Ajout à l’historique" #~ msgid "medication" #~ msgstr "médicament" #~ msgid "tracker" #~ msgstr "suivi" #~ msgid "treatments" #~ msgstr "traitements" #~ msgid "pill" #~ msgstr "pillule" #~ msgid "drug" #~ msgstr "comprimé" #~ msgid "remedy" #~ msgstr "remède" #~ msgid "Su" #~ msgstr "Di" #~ msgid "Mo" #~ msgstr "Lu" #~ msgid "Tu" #~ msgstr "Ma" #~ msgid "We" #~ msgstr "Me" #~ msgid "Th" #~ msgstr "Je" #~ msgid "Fr" #~ msgstr "Ve" #~ msgid "Sa" #~ msgstr "Sa" #~ msgid "Sunday" #~ msgstr "Dimanche" #~ msgid "Monday" #~ msgstr "Lundi" #~ msgid "Tuesday" #~ msgstr "Mardi" #~ msgid "Wednesday" #~ msgstr "Mercredi" #~ msgid "Thursday" #~ msgstr "Jeudi" #~ msgid "Friday" #~ msgstr "Vendredi" #~ msgid "Saturday" #~ msgstr "Samedi" #~ msgid "About" #~ msgstr "À Propos" diegopvlk-Dosage-bd9126a/po/he.po000066400000000000000000000415721514145341100166720ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) 2023 Diego Povliuk # This file is distributed under the license GPLv3-or-later. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: io.github.diegopvlk.Dosage\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-12-19 16:12-0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: he\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #. TRANSLATORS: App name, translate to your language and follow the capitalization #: data/io.github.diegopvlk.Dosage.appdata.xml.in:20 #: data/io.github.diegopvlk.Dosage.desktop.in:3 #: src/utils/getTreatmentsExportFile.js:173 src/utils/saveFiles.js:22 #: src/utils/saveFiles.js:44 src/main.js:60 src/window.js:1060 #: data/ui/window.blp:6 msgid "Dosage" msgstr "" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:21 msgid "Keep track of your treatments" msgstr "" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:24 msgid "" "Easily manage and track treatments with Dosage: notifications, history, " "multiple doses, flexible frequency, customization, stock monitoring, and " "duration control" msgstr "" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:25 msgid "Features:" msgstr "" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:27 msgid "Notifications — Get reminders at the right time" msgstr "" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:28 msgid "History — See which medications you took, skipped or missed" msgstr "" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:29 msgid "Dosage management — Multiple doses with different times" msgstr "" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:30 msgid "" "Frequency modes — Every day, specific days, cycle or just when necessary" msgstr "" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:31 msgid "Color and icon — Give a shape for your treatment" msgstr "" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:32 msgid "Inventory tracking — Monitor your stock and get reminded when it's low" msgstr "" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:33 msgid "Duration — Define the start and end dates" msgstr "" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:44 msgid "Dosage today window in light theme" msgstr "" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:49 msgid "Dosage preferences window in light theme" msgstr "" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:54 msgid "Dosage edit treatment window in light theme" msgstr "" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:59 msgid "Dosage today window in dark theme" msgstr "" #. TRANSLATORS: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/io.github.diegopvlk.Dosage.desktop.in:10 msgid "Medication;Tracker;Reminder;Today;Treatments;Pill;Drug;Remedy;" msgstr "" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:232 msgid "Date" msgstr "" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:199 msgid "Time" msgstr "" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/med-dialog.blp:61 data/ui/one-time-dialog.blp:49 msgid "Name" msgstr "" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:183 msgid "Dose" msgstr "" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 msgid "Status" msgstr "" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 msgid "Time Confirmed" msgstr "" #: src/utils/getHistoryExportFile.js:38 src/utils/getHistoryExportFile.js:117 #: src/editHistDialog.js:68 src/historyFactory.js:186 msgid "Missed" msgstr "" #: src/utils/getHistoryExportFile.js:41 src/utils/getHistoryExportFile.js:121 #: src/historyFactory.js:183 data/ui/edit-hist-dialog.blp:111 msgid "Skipped" msgstr "" #: src/utils/getHistoryExportFile.js:44 src/utils/getHistoryExportFile.js:55 #: src/utils/getHistoryExportFile.js:125 src/utils/getHistoryExportFile.js:138 #: src/editHistDialog.js:73 src/historyFactory.js:190 #: data/ui/edit-hist-dialog.blp:116 msgid "Confirmed" msgstr "" #: src/utils/getHistoryExportFile.js:52 src/utils/getHistoryExportFile.js:134 #: src/editHistDialog.js:56 src/historyFactory.js:178 msgid "Auto-Confirmed" msgstr "" #: src/utils/getHistoryExportFile.js:55 src/utils/getHistoryExportFile.js:138 #: src/editHistDialog.js:74 msgid "Time Unknown" msgstr "" #. TRANSLATORS: Context: 1 Pill at 19:00 #: src/utils/getTreatmentsExportFile.js:69 msgid "at" msgstr "" #: src/utils/getTreatmentsExportFile.js:89 data/ui/med-dialog.blp:443 msgid "Notes" msgstr "" #: src/utils/getTreatmentsExportFile.js:96 src/utils/locale.js:37 #: src/treatmentsFactory.js:268 msgid "Daily" msgstr "" #: src/utils/getTreatmentsExportFile.js:102 src/medDialog.js:428 #: data/ui/med-dialog.blp:459 msgid "Day of Month" msgstr "" #. TRANSLATORS: Context: 2 day(s) on, 1 day(s) off #: src/utils/getTreatmentsExportFile.js:109 msgid "day(s) on" msgstr "" #. TRANSLATORS: Context: 2 day(s) on, 1 day(s) off #: src/utils/getTreatmentsExportFile.js:111 msgid "day(s) off" msgstr "" #: src/utils/getTreatmentsExportFile.js:122 src/todayFactory.js:41 #: src/treatmentsFactory.js:298 data/ui/med-dialog.blp:461 msgid "As Needed" msgstr "" #: src/utils/getTreatmentsExportFile.js:132 data/ui/med-dialog.blp:764 msgid "Duration" msgstr "" #: src/utils/getTreatmentsExportFile.js:135 msgid "Started on" msgstr "" #: src/utils/getTreatmentsExportFile.js:136 data/ui/med-dialog.blp:775 msgid "Start" msgstr "" #: src/utils/getTreatmentsExportFile.js:138 src/treatmentsFactory.js:256 msgid "Ended on" msgstr "" #: src/utils/getTreatmentsExportFile.js:138 data/ui/med-dialog.blp:817 msgid "End" msgstr "" #: src/utils/getTreatmentsExportFile.js:173 src/utils/saveFiles.js:44 #: data/ui/window.blp:234 msgid "Treatments" msgstr "" #: src/utils/getTreatmentsExportFile.js:184 msgid "Generated on" msgstr "" #: src/utils/getTreatmentsExportFile.js:187 msgid "Ongoing" msgstr "" #: src/utils/getTreatmentsExportFile.js:188 msgid "Non-scheduled" msgstr "" #: src/utils/getTreatmentsExportFile.js:189 msgid "Finished" msgstr "" #: src/utils/locale.js:33 msgid "Weekends" msgstr "" #: src/utils/locale.js:35 msgid "Weekdays" msgstr "" #: src/utils/saveFiles.js:22 data/ui/window.blp:156 msgid "History" msgstr "" #: src/editHistDialog.js:60 src/editHistDialog.js:89 src/editHistDialog.js:110 msgid "Confirmed At" msgstr "" #: src/editHistDialog.js:64 src/editHistDialog.js:114 msgid "Skipped At" msgstr "" #: src/historyFactory.js:47 msgid "Select to be Removed" msgstr "" #. TRANSLATORS: "Your Name " #: src/main.js:69 msgid "translator-credits" msgstr "" #: src/main.js:73 msgid "Thanks to These Projects!" msgstr "" #: src/medDialog.js:99 msgid "Edit Treatment" msgstr "" #: src/medDialog.js:100 data/ui/edit-hist-dialog.blp:30 #: data/ui/preferences.blp:112 data/ui/preferences.blp:132 #: data/ui/refill-dialog.blp:67 msgid "Save" msgstr "" #: src/medDialog.js:114 msgid "Copy" msgstr "" #: src/medDialog.js:217 msgid "Add Dose" msgstr "" #: src/medDialog.js:419 msgid "Choose" msgstr "" #: src/medDialog.js:429 src/treatmentsFactory.js:274 msgid "Day" msgstr "" #: src/medDialog.js:456 data/ui/med-dialog.blp:458 msgid "Specific Days" msgstr "" #: src/medDialog.js:463 src/treatmentsFactory.js:295 data/ui/med-dialog.blp:460 msgid "Cycle" msgstr "" #: src/medDialog.js:467 data/ui/med-dialog.blp:452 msgid "Frequency" msgstr "" #: src/medDialog.js:500 msgid "Empty Name" msgstr "" #: src/medDialog.js:506 msgid "Empty Unit" msgstr "" #: src/medDialog.js:513 msgid "Choose at Least One Day" msgstr "" #: src/medDialog.js:527 src/oneTimeDialog.js:187 msgid "Name Already on Treatment List" msgstr "" #: src/medDialog.js:542 msgid "Duplicated Time" msgstr "" #: src/medDialog.js:582 msgid "Are You Sure?" msgstr "" #: src/medDialog.js:583 msgid "will be deleted" msgstr "" #: src/medDialog.js:586 data/ui/edit-hist-dialog.blp:18 #: data/ui/med-dialog.blp:19 msgid "Cancel" msgstr "" #: src/medDialog.js:587 src/treatmentsFactory.js:128 data/ui/med-dialog.blp:865 msgid "Delete" msgstr "" #: src/oneTimeDialog.js:110 msgid "New" msgstr "" #: src/oneTimeDialog.js:121 data/ui/med-dialog.blp:189 #: data/ui/one-time-dialog.blp:178 msgid "Pill(s)" msgstr "" #: src/prefsDialog.js:63 msgid "Accept to allow running in the background and receive notifications" msgstr "" #: src/prefsDialog.js:74 src/window.js:259 msgid "An Issue Has Occurred" msgstr "" #: src/prefsDialog.js:77 src/window.js:267 src/window.js:289 src/window.js:311 #: src/window.js:329 msgid "Close" msgstr "" #: src/timeDoseRow.js:34 msgid "Remove Dose" msgstr "" #: src/timeDoseRow.js:40 data/ui/edit-hist-dialog.blp:90 #: data/ui/one-time-dialog.blp:210 msgid "Change Time" msgstr "" #: src/todayFactory.js:134 msgid "Change Dose" msgstr "" #: src/treatmentsFactory.js:96 src/treatmentsFactory.js:126 #: data/ui/refill-dialog.blp:7 msgid "Refill" msgstr "" #: src/treatmentsFactory.js:125 msgid "Edit" msgstr "" #: src/treatmentsFactory.js:127 msgid "Duplicate" msgstr "" #: src/treatmentsFactory.js:146 msgid "Options" msgstr "" #. TRANSLATORS: keep the %d it's where the number goes #: src/treatmentsFactory.js:244 #, javascript-format msgid "%d Remaining" msgstr "" #. TRANSLATORS: label for when duration is enabled #: src/treatmentsFactory.js:254 msgid "Starts on" msgstr "" #: src/treatmentsFactory.js:255 msgid "Until" msgstr "" #: src/treatmentsFactory.js:283 src/treatmentsFactory.js:286 msgid "Next Dose" msgstr "" #: src/window.js:173 src/window.js:943 msgid "Reminder" msgstr "" #. TRANSLATORS: Notification text for when the inventory is low #: src/window.js:175 msgid "You have treatments low in stock" msgstr "" #: src/window.js:492 msgid "Show All" msgstr "" #: src/window.js:515 msgid "Show Less" msgstr "" #: src/window.js:648 msgid "No Results Found" msgstr "" #: src/window.js:648 src/window.js:1517 msgid "No History" msgstr "" #: src/window.js:818 data/ui/window.blp:260 msgid "No Treatments" msgstr "" #: src/window.js:818 msgid "All Done for Today" msgstr "" #: src/window.js:906 src/window.js:1090 data/ui/one-time-dialog.blp:285 #: data/ui/preferences.blp:73 msgid "Confirm" msgstr "" #: src/window.js:906 msgid "Confirm All" msgstr "" #: src/window.js:907 data/ui/preferences.blp:84 data/ui/window.blp:146 msgid "Skip" msgstr "" #: src/window.js:907 msgid "Skip All" msgstr "" #. TRANSLATORS: keep the %d it's where the number goes #: src/window.js:938 #, javascript-format msgid "and %d more" msgstr "" #: src/window.js:1090 data/ui/one-time-dialog.blp:7 data/ui/window.blp:133 msgid "One-Time Entry" msgstr "" #: src/window.js:1295 data/ui/window.blp:353 msgid "Quit" msgstr "" #: data/ui/edit-hist-dialog.blp:7 msgid "Edit Entry" msgstr "" #: data/ui/med-dialog.blp:7 msgid "New Treatment" msgstr "" #: data/ui/med-dialog.blp:31 data/ui/window.blp:283 msgid "Add" msgstr "" #: data/ui/med-dialog.blp:69 data/ui/one-time-dialog.blp:58 msgid "Color" msgstr "" #. TRANSLATORS: Tooltip for the colors (from Default until Purple) #: data/ui/med-dialog.blp:94 data/ui/one-time-dialog.blp:83 msgid "Default" msgstr "" #: data/ui/med-dialog.blp:106 data/ui/one-time-dialog.blp:95 msgid "Red" msgstr "" #: data/ui/med-dialog.blp:118 data/ui/one-time-dialog.blp:107 msgid "Orange" msgstr "" #: data/ui/med-dialog.blp:130 data/ui/one-time-dialog.blp:119 msgid "Yellow" msgstr "" #: data/ui/med-dialog.blp:142 data/ui/one-time-dialog.blp:131 msgid "Green" msgstr "" #: data/ui/med-dialog.blp:154 data/ui/one-time-dialog.blp:143 msgid "Cyan" msgstr "" #: data/ui/med-dialog.blp:166 data/ui/one-time-dialog.blp:155 msgid "Blue" msgstr "" #: data/ui/med-dialog.blp:178 data/ui/one-time-dialog.blp:167 msgid "Purple" msgstr "" #: data/ui/med-dialog.blp:188 data/ui/one-time-dialog.blp:177 msgid "Unit" msgstr "" #: data/ui/med-dialog.blp:197 msgid "Icon" msgstr "" #. TRANSLATORS: Tooltip for the icons (from Pill until Potion) #: data/ui/med-dialog.blp:226 msgid "Pill" msgstr "" #: data/ui/med-dialog.blp:242 msgid "Alternative Pill" msgstr "" #: data/ui/med-dialog.blp:258 msgid "Capsule" msgstr "" #: data/ui/med-dialog.blp:274 msgid "Round Pill" msgstr "" #: data/ui/med-dialog.blp:290 msgid "Alternative Round Pill" msgstr "" #: data/ui/med-dialog.blp:306 msgid "Ampoule" msgstr "" #: data/ui/med-dialog.blp:322 msgid "Injection" msgstr "" #: data/ui/med-dialog.blp:338 msgid "Square Pill" msgstr "" #: data/ui/med-dialog.blp:354 msgid "Alternative Square Pill" msgstr "" #: data/ui/med-dialog.blp:370 msgid "Triangle pill" msgstr "" #: data/ui/med-dialog.blp:386 msgid "Alternative Triangle Pill" msgstr "" #: data/ui/med-dialog.blp:402 msgid "Bottle" msgstr "" #: data/ui/med-dialog.blp:418 msgid "Drops" msgstr "" #: data/ui/med-dialog.blp:434 msgid "Potion" msgstr "" #: data/ui/med-dialog.blp:457 msgid "Every Day" msgstr "" #: data/ui/med-dialog.blp:473 msgid "Choose Days" msgstr "" #: data/ui/med-dialog.blp:572 msgid "Choose Day" msgstr "" #: data/ui/med-dialog.blp:617 msgid "Change Cycle" msgstr "" #: data/ui/med-dialog.blp:642 msgid "Days Active" msgstr "" #: data/ui/med-dialog.blp:656 msgid "Days Inactive" msgstr "" #. TRANSLATORS: Day in cycle, try to keep it short #: data/ui/med-dialog.blp:671 msgid "Today is Cycle Day…" msgstr "" #: data/ui/med-dialog.blp:694 msgid "Increase Notification Priority" msgstr "" #: data/ui/med-dialog.blp:695 msgid "Show in fullscreen mode or with 'Do Not Disturb' enabled" msgstr "" #: data/ui/med-dialog.blp:699 msgid "Recurring Notifications" msgstr "" #: data/ui/med-dialog.blp:700 msgid "Renotify until it's confirmed or skipped" msgstr "" #: data/ui/med-dialog.blp:705 msgid "Interval in Minutes" msgstr "" #: data/ui/med-dialog.blp:718 data/ui/refill-dialog.blp:36 msgid "Inventory" msgstr "" #: data/ui/med-dialog.blp:719 msgid "Manage your stock" msgstr "" #: data/ui/med-dialog.blp:725 msgid "Current" msgstr "" #: data/ui/med-dialog.blp:738 msgid "Remind Me At" msgstr "" #: data/ui/med-dialog.blp:751 msgid "Refill Amount" msgstr "" #: data/ui/med-dialog.blp:765 msgid "Set start and end dates" msgstr "" #: data/ui/med-dialog.blp:785 data/ui/med-dialog.blp:827 #: data/ui/one-time-dialog.blp:243 msgid "Choose Date" msgstr "" #: data/ui/med-dialog.blp:855 msgid "Mark as Confirmed" msgstr "" #: data/ui/med-dialog.blp:856 msgid "" "If not manually confirmed or skipped, it will be recorded as confirmed in " "history, reducing stock if enabled" msgstr "" #: data/ui/one-time-dialog.blp:44 msgid "From Treatment List" msgstr "" #: data/ui/one-time-dialog.blp:182 msgid "Amount" msgstr "" #: data/ui/preferences.blp:7 data/ui/window.blp:338 msgid "Preferences" msgstr "" #: data/ui/preferences.blp:17 msgid "Auto-Start at Login" msgstr "" #: data/ui/preferences.blp:28 msgid "Auto-Clear History" msgstr "" #: data/ui/preferences.blp:29 msgid "Keeps a maximum of 30 days" msgstr "" #: data/ui/preferences.blp:40 msgid "Low Stock Notification" msgstr "" #: data/ui/preferences.blp:41 msgid "Send reminders when treatments are low in stock" msgstr "" #: data/ui/preferences.blp:52 msgid "Notification Sound" msgstr "" #: data/ui/preferences.blp:63 msgid "Notification Buttons" msgstr "" #: data/ui/preferences.blp:64 msgid "Show or hide confirm/skip" msgstr "" #: data/ui/preferences.blp:98 msgid "Export History As" msgstr "" #: data/ui/preferences.blp:121 msgid "Export Treatments As" msgstr "" #: data/ui/shortcuts-dialog.blp:8 msgid "Shortcuts" msgstr "" #: data/ui/shortcuts-dialog.blp:11 msgctxt "shortcut window" msgid "Show/Hide 'As Needed'" msgstr "" #: data/ui/shortcuts-dialog.blp:16 msgctxt "shortcut window" msgid "New One-Time Entry" msgstr "" #: data/ui/shortcuts-dialog.blp:21 msgctxt "shortcut window" msgid "Add New Treatment" msgstr "" #: data/ui/shortcuts-dialog.blp:26 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "" #: data/ui/shortcuts-dialog.blp:31 msgctxt "shortcut window" msgid "Quit" msgstr "" #: data/ui/window.blp:23 msgid "Show/Hide 'As Needed'" msgstr "" #: data/ui/window.blp:31 msgid "Search" msgstr "" #: data/ui/window.blp:39 msgid "Sort Treatments" msgstr "" #: data/ui/window.blp:48 msgid "Main Menu" msgstr "" #: data/ui/window.blp:61 msgid "Search…" msgstr "" #: data/ui/window.blp:71 msgid "Today" msgstr "" #: data/ui/window.blp:117 data/ui/window.blp:210 msgid "Unselect" msgstr "" #: data/ui/window.blp:220 msgid "Remove Entries" msgstr "" #: data/ui/window.blp:300 msgid "Name Ascending" msgstr "" #: data/ui/window.blp:306 msgid "Remaining Stock (Lowest First)" msgstr "" #: data/ui/window.blp:312 msgid "Remaining Stock (Highest First)" msgstr "" #: data/ui/window.blp:318 msgid "As Needed Last" msgstr "" #: data/ui/window.blp:324 msgid "Ended Last" msgstr "" #: data/ui/window.blp:330 msgid "As Needed/Ended Last" msgstr "" #: data/ui/window.blp:343 msgid "Keyboard Shortcuts" msgstr "" #: data/ui/window.blp:348 msgid "About Dosage" msgstr "" diegopvlk-Dosage-bd9126a/po/hi.po000066400000000000000000000641131514145341100166720ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) 2023 Diego Povliuk # This file is distributed under the license GPLv3-or-later. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: io.github.diegopvlk.Dosage\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-12-19 16:12-0300\n" "PO-Revision-Date: 2025-02-10 23:31+0000\n" "Last-Translator: Diego Povliuk \n" "Language-Team: Hindi \n" "Language: hi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 5.10-dev\n" #. TRANSLATORS: App name, translate to your language and follow the capitalization #: data/io.github.diegopvlk.Dosage.appdata.xml.in:20 #: data/io.github.diegopvlk.Dosage.desktop.in:3 #: src/utils/getTreatmentsExportFile.js:173 src/utils/saveFiles.js:22 #: src/utils/saveFiles.js:44 src/main.js:60 src/window.js:1060 #: data/ui/window.blp:6 msgid "Dosage" msgstr "डोसिज" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:21 msgid "Keep track of your treatments" msgstr "अपने उपचारों पर नज़र रखें" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:24 msgid "" "Easily manage and track treatments with Dosage: notifications, history, " "multiple doses, flexible frequency, customization, stock monitoring, and " "duration control" msgstr "" "डोसिज के साथ आसानी से उपचार प्रबंधित करें: सूचनाएं, इतिहास, एकाधिक खुराक, लचीली " "आवृत्ति, अनुकूलन, स्टॉक निगरानी और अवधि नियंत्रण" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:25 msgid "Features:" msgstr "विशेषताएं:" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:27 msgid "Notifications — Get reminders at the right time" msgstr "अधिसूचनाएं - सही समय पर अनुस्मारक प्राप्त करें" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:28 msgid "History — See which medications you took, skipped or missed" msgstr "इतिहास - देखें कि आपने कौन सी दवाएं लीं, छोड़ीं या छूट गईं" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:29 msgid "Dosage management — Multiple doses with different times" msgstr "खुराक प्रबंधन - अलग-अलग समय पर एकाधिक खुराक" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:30 msgid "" "Frequency modes — Every day, specific days, cycle or just when necessary" msgstr "आवृत्ति मोड - हर दिन, विशिष्ट दिन, चक्र या बस जब आवश्यक हो" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:31 msgid "Color and icon — Give a shape for your treatment" msgstr "रंग और आइकन - अपने उपचार को एक आकार दें" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:32 msgid "Inventory tracking — Monitor your stock and get reminded when it's low" msgstr "इन्वेंटरी ट्रैकिंग - अपने स्टॉक की निगरानी करें और कम होने पर याद दिलाएं" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:33 msgid "Duration — Define the start and end dates" msgstr "अवधि - आरंभ और समाप्ति तिथियां परिभाषित करें" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:44 msgid "Dosage today window in light theme" msgstr "डोसिज आज खिड़की हल्की थीम में" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:49 msgid "Dosage preferences window in light theme" msgstr "डोसिज प्राथमिकताएं खिड़की हल्की थीम मे" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:54 msgid "Dosage edit treatment window in light theme" msgstr "डोसिज उपचार संपादन खिड़की हल्की थीम में" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:59 msgid "Dosage today window in dark theme" msgstr "डोसिज आज खिड़की गहरी थीम में" #. TRANSLATORS: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/io.github.diegopvlk.Dosage.desktop.in:10 msgid "Medication;Tracker;Reminder;Today;Treatments;Pill;Drug;Remedy;" msgstr "दवा;ट्रैकर;रिमाइंडर;आज;उपचार;गोली;दवा;उपाय;" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:232 msgid "Date" msgstr "तारीख" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:199 msgid "Time" msgstr "समय" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/med-dialog.blp:61 data/ui/one-time-dialog.blp:49 msgid "Name" msgstr "नाम" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:183 msgid "Dose" msgstr "खुराक" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 msgid "Status" msgstr "स्थिति" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 msgid "Time Confirmed" msgstr "पुष्टि का समय" #: src/utils/getHistoryExportFile.js:38 src/utils/getHistoryExportFile.js:117 #: src/editHistDialog.js:68 src/historyFactory.js:186 msgid "Missed" msgstr "छुट्टा हुआ" #: src/utils/getHistoryExportFile.js:41 src/utils/getHistoryExportFile.js:121 #: src/historyFactory.js:183 data/ui/edit-hist-dialog.blp:111 msgid "Skipped" msgstr "छोड़ा गया" #: src/utils/getHistoryExportFile.js:44 src/utils/getHistoryExportFile.js:55 #: src/utils/getHistoryExportFile.js:125 src/utils/getHistoryExportFile.js:138 #: src/editHistDialog.js:73 src/historyFactory.js:190 #: data/ui/edit-hist-dialog.blp:116 msgid "Confirmed" msgstr "पुष्टि की गई" #: src/utils/getHistoryExportFile.js:52 src/utils/getHistoryExportFile.js:134 #: src/editHistDialog.js:56 src/historyFactory.js:178 msgid "Auto-Confirmed" msgstr "स्वतः पुष्टि की गई" #: src/utils/getHistoryExportFile.js:55 src/utils/getHistoryExportFile.js:138 #: src/editHistDialog.js:74 msgid "Time Unknown" msgstr "समय अज्ञात" #. TRANSLATORS: Context: 1 Pill at 19:00 #: src/utils/getTreatmentsExportFile.js:69 #, fuzzy #| msgid "Date" msgid "at" msgstr "तारीख" #: src/utils/getTreatmentsExportFile.js:89 data/ui/med-dialog.blp:443 msgid "Notes" msgstr "टिप्पणियां" #: src/utils/getTreatmentsExportFile.js:96 src/utils/locale.js:37 #: src/treatmentsFactory.js:268 msgid "Daily" msgstr "रोज" #: src/utils/getTreatmentsExportFile.js:102 src/medDialog.js:428 #: data/ui/med-dialog.blp:459 msgid "Day of Month" msgstr "महीने का दिन" #. TRANSLATORS: Context: 2 day(s) on, 1 day(s) off #: src/utils/getTreatmentsExportFile.js:109 msgid "day(s) on" msgstr "" #. TRANSLATORS: Context: 2 day(s) on, 1 day(s) off #: src/utils/getTreatmentsExportFile.js:111 msgid "day(s) off" msgstr "" #: src/utils/getTreatmentsExportFile.js:122 src/todayFactory.js:41 #: src/treatmentsFactory.js:298 data/ui/med-dialog.blp:461 msgid "As Needed" msgstr "जब आवश्यक हो" #: src/utils/getTreatmentsExportFile.js:132 data/ui/med-dialog.blp:764 msgid "Duration" msgstr "अवधि" #: src/utils/getTreatmentsExportFile.js:135 #, fuzzy #| msgid "Starts On" msgid "Started on" msgstr "शुरू होता है" #: src/utils/getTreatmentsExportFile.js:136 data/ui/med-dialog.blp:775 #, fuzzy #| msgid "Starts On" msgid "Start" msgstr "शुरू होता है" #: src/utils/getTreatmentsExportFile.js:138 src/treatmentsFactory.js:256 msgid "Ended on" msgstr "पर समाप्त हुआ" #: src/utils/getTreatmentsExportFile.js:138 data/ui/med-dialog.blp:817 #, fuzzy #| msgid "Ends On" msgid "End" msgstr "समाप्त होता है" #: src/utils/getTreatmentsExportFile.js:173 src/utils/saveFiles.js:44 #: data/ui/window.blp:234 msgid "Treatments" msgstr "उपचार" #: src/utils/getTreatmentsExportFile.js:184 #, fuzzy #| msgctxt "shortcut window" #| msgid "General" msgid "Generated on" msgstr "सामान्य" #: src/utils/getTreatmentsExportFile.js:187 msgid "Ongoing" msgstr "" #: src/utils/getTreatmentsExportFile.js:188 msgid "Non-scheduled" msgstr "" #: src/utils/getTreatmentsExportFile.js:189 msgid "Finished" msgstr "" #: src/utils/locale.js:33 msgid "Weekends" msgstr "सप्ताहांत" #: src/utils/locale.js:35 msgid "Weekdays" msgstr "कार्यदिवस" #: src/utils/saveFiles.js:22 data/ui/window.blp:156 msgid "History" msgstr "इतिहास" #: src/editHistDialog.js:60 src/editHistDialog.js:89 src/editHistDialog.js:110 msgid "Confirmed At" msgstr "पुष्टि की गई" #: src/editHistDialog.js:64 src/editHistDialog.js:114 msgid "Skipped At" msgstr "छोड़ा गया" #: src/historyFactory.js:47 msgid "Select to be Removed" msgstr "हटाने के लिए चुनें" #. TRANSLATORS: "Your Name " #: src/main.js:69 msgid "translator-credits" msgstr "Scrambled777 " #: src/main.js:73 msgid "Thanks to These Projects!" msgstr "इन परियोजनाओं को धन्यवाद!" #: src/medDialog.js:99 msgid "Edit Treatment" msgstr "उपचार संपादित करें" #: src/medDialog.js:100 data/ui/edit-hist-dialog.blp:30 #: data/ui/preferences.blp:112 data/ui/preferences.blp:132 #: data/ui/refill-dialog.blp:67 msgid "Save" msgstr "सहेजें" #: src/medDialog.js:114 msgid "Copy" msgstr "प्रतिलिपि" #: src/medDialog.js:217 msgid "Add Dose" msgstr "खुराक जोड़ें" #: src/medDialog.js:419 msgid "Choose" msgstr "चुनें" #: src/medDialog.js:429 src/treatmentsFactory.js:274 msgid "Day" msgstr "दिन" #: src/medDialog.js:456 data/ui/med-dialog.blp:458 msgid "Specific Days" msgstr "विशिष्ट दिन" #: src/medDialog.js:463 src/treatmentsFactory.js:295 data/ui/med-dialog.blp:460 msgid "Cycle" msgstr "चक्र" #: src/medDialog.js:467 data/ui/med-dialog.blp:452 msgid "Frequency" msgstr "आवृत्ति" #: src/medDialog.js:500 msgid "Empty Name" msgstr "खाली नाम" #: src/medDialog.js:506 msgid "Empty Unit" msgstr "रिक्त इकाई" #: src/medDialog.js:513 msgid "Choose at Least One Day" msgstr "कम से कम एक दिन चुनें" #: src/medDialog.js:527 src/oneTimeDialog.js:187 msgid "Name Already on Treatment List" msgstr "नाम पहले से ही उपचार सूची में है" #: src/medDialog.js:542 msgid "Duplicated Time" msgstr "डुप्लिकेट समय" #: src/medDialog.js:582 msgid "Are You Sure?" msgstr "क्या आप निश्चित हैं?" #: src/medDialog.js:583 msgid "will be deleted" msgstr "हटा दिया जाएगा" #: src/medDialog.js:586 data/ui/edit-hist-dialog.blp:18 #: data/ui/med-dialog.blp:19 msgid "Cancel" msgstr "रद्द करें" #: src/medDialog.js:587 src/treatmentsFactory.js:128 data/ui/med-dialog.blp:865 msgid "Delete" msgstr "मिटाएं" #: src/oneTimeDialog.js:110 msgid "New" msgstr "नया" #: src/oneTimeDialog.js:121 data/ui/med-dialog.blp:189 #: data/ui/one-time-dialog.blp:178 msgid "Pill(s)" msgstr "गोली(यां)" #: src/prefsDialog.js:63 msgid "Accept to allow running in the background and receive notifications" msgstr "पृष्ठभूमि में चलने और सूचनाएं प्राप्त करने की अनुमति स्वीकार करें" #: src/prefsDialog.js:74 src/window.js:259 msgid "An Issue Has Occurred" msgstr "एक समस्या उत्पन्न हुई है" #: src/prefsDialog.js:77 src/window.js:267 src/window.js:289 src/window.js:311 #: src/window.js:329 msgid "Close" msgstr "बंद करें" #: src/timeDoseRow.js:34 msgid "Remove Dose" msgstr "खुराक हटाएँ" #: src/timeDoseRow.js:40 data/ui/edit-hist-dialog.blp:90 #: data/ui/one-time-dialog.blp:210 msgid "Change Time" msgstr "समय बदलें" #: src/todayFactory.js:134 msgid "Change Dose" msgstr "खुराक बदलें" #: src/treatmentsFactory.js:96 src/treatmentsFactory.js:126 #: data/ui/refill-dialog.blp:7 msgid "Refill" msgstr "फिर से भरें" #: src/treatmentsFactory.js:125 msgid "Edit" msgstr "संपादित करें" #: src/treatmentsFactory.js:127 msgid "Duplicate" msgstr "दोहराना" #: src/treatmentsFactory.js:146 msgid "Options" msgstr "विकल्प" #. TRANSLATORS: keep the %d it's where the number goes #: src/treatmentsFactory.js:244 #, javascript-format msgid "%d Remaining" msgstr "%d शेष" #. TRANSLATORS: label for when duration is enabled #: src/treatmentsFactory.js:254 msgid "Starts on" msgstr "शुरू होता है" #: src/treatmentsFactory.js:255 msgid "Until" msgstr "तक" #: src/treatmentsFactory.js:283 src/treatmentsFactory.js:286 msgid "Next Dose" msgstr "अगली खुराक" #: src/window.js:173 src/window.js:943 msgid "Reminder" msgstr "रिमाइंडर" #. TRANSLATORS: Notification text for when the inventory is low #: src/window.js:175 msgid "You have treatments low in stock" msgstr "आपके पास उपचारों का स्टॉक कम है" #: src/window.js:492 msgid "Show All" msgstr "सब दिखाएँ" #: src/window.js:515 msgid "Show Less" msgstr "कम दिखाएँ" #: src/window.js:648 msgid "No Results Found" msgstr "कोई परिणाम नहीं मिला" #: src/window.js:648 src/window.js:1517 #, fuzzy #| msgid "History" msgid "No History" msgstr "इतिहास" #: src/window.js:818 data/ui/window.blp:260 #, fuzzy #| msgid "Treatments" msgid "No Treatments" msgstr "उपचार" #: src/window.js:818 msgid "All Done for Today" msgstr "आज के लिए सब कुछ हो गया" #: src/window.js:906 src/window.js:1090 data/ui/one-time-dialog.blp:285 #: data/ui/preferences.blp:73 msgid "Confirm" msgstr "पुष्टि करें" #: src/window.js:906 msgid "Confirm All" msgstr "सभी पुष्टि करें" #: src/window.js:907 data/ui/preferences.blp:84 data/ui/window.blp:146 msgid "Skip" msgstr "छोड़ें" #: src/window.js:907 msgid "Skip All" msgstr "सभी को छोड़ें" #. TRANSLATORS: keep the %d it's where the number goes #: src/window.js:938 #, javascript-format msgid "and %d more" msgstr "और %d अधिक" #: src/window.js:1090 data/ui/one-time-dialog.blp:7 data/ui/window.blp:133 msgid "One-Time Entry" msgstr "एक-बार की प्रविष्टि" #: src/window.js:1295 data/ui/window.blp:353 msgid "Quit" msgstr "छोड़ें" #: data/ui/edit-hist-dialog.blp:7 msgid "Edit Entry" msgstr "प्रविष्टि संपादित करें" #: data/ui/med-dialog.blp:7 msgid "New Treatment" msgstr "नया इलाज" #: data/ui/med-dialog.blp:31 data/ui/window.blp:283 msgid "Add" msgstr "जोड़ें" #: data/ui/med-dialog.blp:69 data/ui/one-time-dialog.blp:58 msgid "Color" msgstr "रंग" #. TRANSLATORS: Tooltip for the colors (from Default until Purple) #: data/ui/med-dialog.blp:94 data/ui/one-time-dialog.blp:83 msgid "Default" msgstr "तयशुदा" #: data/ui/med-dialog.blp:106 data/ui/one-time-dialog.blp:95 msgid "Red" msgstr "लाल" #: data/ui/med-dialog.blp:118 data/ui/one-time-dialog.blp:107 msgid "Orange" msgstr "नारंगी" #: data/ui/med-dialog.blp:130 data/ui/one-time-dialog.blp:119 msgid "Yellow" msgstr "पीला" #: data/ui/med-dialog.blp:142 data/ui/one-time-dialog.blp:131 msgid "Green" msgstr "हरा" #: data/ui/med-dialog.blp:154 data/ui/one-time-dialog.blp:143 msgid "Cyan" msgstr "आश्याम" #: data/ui/med-dialog.blp:166 data/ui/one-time-dialog.blp:155 msgid "Blue" msgstr "नीला" #: data/ui/med-dialog.blp:178 data/ui/one-time-dialog.blp:167 msgid "Purple" msgstr "बैंगनी" #: data/ui/med-dialog.blp:188 data/ui/one-time-dialog.blp:177 msgid "Unit" msgstr "इकाई" #: data/ui/med-dialog.blp:197 msgid "Icon" msgstr "आइकन" #. TRANSLATORS: Tooltip for the icons (from Pill until Potion) #: data/ui/med-dialog.blp:226 msgid "Pill" msgstr "गोली" #: data/ui/med-dialog.blp:242 msgid "Alternative Pill" msgstr "वैकल्पिक गोली" #: data/ui/med-dialog.blp:258 msgid "Capsule" msgstr "कैप्सूल" #: data/ui/med-dialog.blp:274 msgid "Round Pill" msgstr "गोल गोली" #: data/ui/med-dialog.blp:290 msgid "Alternative Round Pill" msgstr "वैकल्पिक गोल गोली" #: data/ui/med-dialog.blp:306 msgid "Ampoule" msgstr "इंजेक्शन की शीशी" #: data/ui/med-dialog.blp:322 msgid "Injection" msgstr "इंजेक्शन" #: data/ui/med-dialog.blp:338 msgid "Square Pill" msgstr "चौकोर गोली" #: data/ui/med-dialog.blp:354 msgid "Alternative Square Pill" msgstr "वैकल्पिक चौकोर गोली" #: data/ui/med-dialog.blp:370 msgid "Triangle pill" msgstr "त्रिकोण गोली" #: data/ui/med-dialog.blp:386 msgid "Alternative Triangle Pill" msgstr "वैकल्पिक त्रिकोण गोली" #: data/ui/med-dialog.blp:402 msgid "Bottle" msgstr "बोतल" #: data/ui/med-dialog.blp:418 msgid "Drops" msgstr "बूँदें" #: data/ui/med-dialog.blp:434 msgid "Potion" msgstr "औषधि" #: data/ui/med-dialog.blp:457 msgid "Every Day" msgstr "हर दिन" #: data/ui/med-dialog.blp:473 msgid "Choose Days" msgstr "दिन चुनें" #: data/ui/med-dialog.blp:572 msgid "Choose Day" msgstr "दिन चुनें" #: data/ui/med-dialog.blp:617 msgid "Change Cycle" msgstr "चक्र बदलें" #: data/ui/med-dialog.blp:642 msgid "Days Active" msgstr "सक्रिय दिन" #: data/ui/med-dialog.blp:656 msgid "Days Inactive" msgstr "निष्क्रिय दिन" #. TRANSLATORS: Day in cycle, try to keep it short #: data/ui/med-dialog.blp:671 msgid "Today is Cycle Day…" msgstr "आज चक्र दिवस है…" #: data/ui/med-dialog.blp:694 msgid "Increase Notification Priority" msgstr "अधिसूचना प्राथमिकता बढ़ाएं" #: data/ui/med-dialog.blp:695 msgid "Show in fullscreen mode or with 'Do Not Disturb' enabled" msgstr "अधिसूचना को फ़ुलस्क्रीन मोड में या 'परेशान न करें' सक्षम होने पर भी दिखाता है" #: data/ui/med-dialog.blp:699 msgid "Recurring Notifications" msgstr "आवर्ती सूचनाएं" #: data/ui/med-dialog.blp:700 msgid "Renotify until it's confirmed or skipped" msgstr "इसकी पुष्टि होने या छोड़े जाने तक पुनः सूचित करें" #: data/ui/med-dialog.blp:705 msgid "Interval in Minutes" msgstr "मिनटों में अंतराल" #: data/ui/med-dialog.blp:718 data/ui/refill-dialog.blp:36 msgid "Inventory" msgstr "इन्वेंटरी" #: data/ui/med-dialog.blp:719 msgid "Manage your stock" msgstr "अपना स्टॉक प्रबंधित करें" #: data/ui/med-dialog.blp:725 msgid "Current" msgstr "मौजूदा" #: data/ui/med-dialog.blp:738 msgid "Remind Me At" msgstr "मुझे तब याद दिलाएं" #: data/ui/med-dialog.blp:751 msgid "Refill Amount" msgstr "फिर से भरने की राशि" #: data/ui/med-dialog.blp:765 msgid "Set start and end dates" msgstr "शुरू और अंत तिथियां निर्धारित करें" #: data/ui/med-dialog.blp:785 data/ui/med-dialog.blp:827 #: data/ui/one-time-dialog.blp:243 msgid "Choose Date" msgstr "तारीख चुनें" #: data/ui/med-dialog.blp:855 msgid "Mark as Confirmed" msgstr "पुष्टि के रूप में चिह्नित करें" #: data/ui/med-dialog.blp:856 msgid "" "If not manually confirmed or skipped, it will be recorded as confirmed in " "history, reducing stock if enabled" msgstr "" #: data/ui/one-time-dialog.blp:44 msgid "From Treatment List" msgstr "उपचार सूची से" #: data/ui/one-time-dialog.blp:182 msgid "Amount" msgstr "राशि" #: data/ui/preferences.blp:7 data/ui/window.blp:338 msgid "Preferences" msgstr "प्राथमिकताएं" #: data/ui/preferences.blp:17 msgid "Auto-Start at Login" msgstr "लॉगिन पर ऑटो-स्टार्ट" #: data/ui/preferences.blp:28 msgid "Auto-Clear History" msgstr "इतिहास स्वतः साफ़ करें" #: data/ui/preferences.blp:29 msgid "Keeps a maximum of 30 days" msgstr "अधिकतम 30 दिन तक रखता है" #: data/ui/preferences.blp:40 msgid "Low Stock Notification" msgstr "कम स्टॉक सूचना" #: data/ui/preferences.blp:41 msgid "Send reminders when treatments are low in stock" msgstr "जब उपचारों का स्टॉक कम हो, तो याद दिलाने के लिए भेजें" #: data/ui/preferences.blp:52 msgid "Notification Sound" msgstr "अधिसूचना ध्वनि" #: data/ui/preferences.blp:63 msgid "Notification Buttons" msgstr "अधिसूचना बटन" #: data/ui/preferences.blp:64 msgid "Show or hide confirm/skip" msgstr "दिखाएं या छिपाएं पुष्टि करें/छोड़ें" #: data/ui/preferences.blp:98 #, fuzzy #| msgid "Export History as CSV" msgid "Export History As" msgstr "इतिहास CSV के रूप में निर्यात करें" #: data/ui/preferences.blp:121 #, fuzzy #| msgid "Empty Treatments" msgid "Export Treatments As" msgstr "कोई उपचार नहीं" #: data/ui/shortcuts-dialog.blp:8 #, fuzzy #| msgctxt "shortcut window" #| msgid "Show Shortcuts" msgid "Shortcuts" msgstr "शॉर्टकट दिखाएं" #: data/ui/shortcuts-dialog.blp:11 #, fuzzy #| msgid "Show/Hide 'As Needed'" msgctxt "shortcut window" msgid "Show/Hide 'As Needed'" msgstr "दिखाएँ/छिपाएँ 'जब आवश्यक हो'" #: data/ui/shortcuts-dialog.blp:16 #, fuzzy #| msgid "One-Time Entry" msgctxt "shortcut window" msgid "New One-Time Entry" msgstr "एक-बार की प्रविष्टि" #: data/ui/shortcuts-dialog.blp:21 #, fuzzy #| msgid "New Treatment" msgctxt "shortcut window" msgid "Add New Treatment" msgstr "नया इलाज" #: data/ui/shortcuts-dialog.blp:26 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "शॉर्टकट दिखाएं" #: data/ui/shortcuts-dialog.blp:31 msgctxt "shortcut window" msgid "Quit" msgstr "छोड़ें" #: data/ui/window.blp:23 msgid "Show/Hide 'As Needed'" msgstr "दिखाएँ/छिपाएँ 'जब आवश्यक हो'" #: data/ui/window.blp:31 msgid "Search" msgstr "खोजें" #: data/ui/window.blp:39 #, fuzzy #| msgid "Treatments" msgid "Sort Treatments" msgstr "उपचार" #: data/ui/window.blp:48 msgid "Main Menu" msgstr "मुख्य मेनू" #: data/ui/window.blp:61 msgid "Search…" msgstr "खोजें…" #: data/ui/window.blp:71 msgid "Today" msgstr "आज" #: data/ui/window.blp:117 data/ui/window.blp:210 msgid "Unselect" msgstr "अचयनित करें" #: data/ui/window.blp:220 msgid "Remove Entries" msgstr "प्रविष्टियां हटाएँ" #: data/ui/window.blp:300 msgid "Name Ascending" msgstr "" #: data/ui/window.blp:306 msgid "Remaining Stock (Lowest First)" msgstr "" #: data/ui/window.blp:312 msgid "Remaining Stock (Highest First)" msgstr "" #: data/ui/window.blp:318 #, fuzzy #| msgid "As Needed" msgid "As Needed Last" msgstr "जब आवश्यक हो" #: data/ui/window.blp:324 #, fuzzy #| msgid "Ended on" msgid "Ended Last" msgstr "पर समाप्त हुआ" #: data/ui/window.blp:330 #, fuzzy #| msgid "As Needed" msgid "As Needed/Ended Last" msgstr "जब आवश्यक हो" #: data/ui/window.blp:343 #, fuzzy #| msgctxt "shortcut window" #| msgid "Show Shortcuts" msgid "Keyboard Shortcuts" msgstr "शॉर्टकट दिखाएं" #: data/ui/window.blp:348 msgid "About Dosage" msgstr "डोसिज के बारे में" #~ msgid "Empty Treatments" #~ msgstr "कोई उपचार नहीं" #~ msgid "Empty History" #~ msgstr "इतिहास खाली है" #~ msgid "No Treatments Added" #~ msgstr "कोई ट्रीटमेंट नहीं जोड़ा गया" #~ msgctxt "shortcut window" #~ msgid "General" #~ msgstr "सामान्य" #~ msgctxt "shortcut window" #~ msgid "Preferences" #~ msgstr "प्राथमिकताएं" #~ msgid "After meal" #~ msgstr "भोजन के बाद" #~ msgid "Refill Stock" #~ msgstr "स्टॉक फिर से भरें" #~ msgid "Low Stock" #~ msgstr "कम स्टॉक" #~ msgid "Form" #~ msgstr "रूप" #~ msgid "Color and icon" #~ msgstr "रंग और आइकन" #~ msgid "Time and amount" #~ msgstr "समय एवं राशि" #~ msgid "Restore" #~ msgstr "पुनर्स्थापित करें" #~ msgid "New entry" #~ msgstr "नई प्रविष्टि" #~ msgid "Name already exists" #~ msgstr "नाम पहले से मौजूद है" diegopvlk-Dosage-bd9126a/po/ia.po000066400000000000000000000423541514145341100166660ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) 2023 Diego Povliuk # This file is distributed under the license GPLv3-or-later. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: io.github.diegopvlk.Dosage\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-12-19 16:12-0300\n" "PO-Revision-Date: 2025-10-29 11:11+0000\n" "Last-Translator: \"Emilio S.\" \n" "Language-Team: Interlingua \n" "Language: ia\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 5.14.1-dev\n" #. TRANSLATORS: App name, translate to your language and follow the capitalization #: data/io.github.diegopvlk.Dosage.appdata.xml.in:20 #: data/io.github.diegopvlk.Dosage.desktop.in:3 #: src/utils/getTreatmentsExportFile.js:173 src/utils/saveFiles.js:22 #: src/utils/saveFiles.js:44 src/main.js:60 src/window.js:1060 #: data/ui/window.blp:6 msgid "Dosage" msgstr "" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:21 msgid "Keep track of your treatments" msgstr "" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:24 msgid "" "Easily manage and track treatments with Dosage: notifications, history, " "multiple doses, flexible frequency, customization, stock monitoring, and " "duration control" msgstr "" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:25 msgid "Features:" msgstr "" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:27 msgid "Notifications — Get reminders at the right time" msgstr "" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:28 msgid "History — See which medications you took, skipped or missed" msgstr "" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:29 msgid "Dosage management — Multiple doses with different times" msgstr "" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:30 msgid "" "Frequency modes — Every day, specific days, cycle or just when necessary" msgstr "" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:31 msgid "Color and icon — Give a shape for your treatment" msgstr "" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:32 msgid "Inventory tracking — Monitor your stock and get reminded when it's low" msgstr "" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:33 msgid "Duration — Define the start and end dates" msgstr "" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:44 msgid "Dosage today window in light theme" msgstr "" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:49 msgid "Dosage preferences window in light theme" msgstr "" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:54 msgid "Dosage edit treatment window in light theme" msgstr "" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:59 msgid "Dosage today window in dark theme" msgstr "" #. TRANSLATORS: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/io.github.diegopvlk.Dosage.desktop.in:10 msgid "Medication;Tracker;Reminder;Today;Treatments;Pill;Drug;Remedy;" msgstr "" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:232 msgid "Date" msgstr "" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:199 msgid "Time" msgstr "" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/med-dialog.blp:61 data/ui/one-time-dialog.blp:49 msgid "Name" msgstr "Nomine" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:183 msgid "Dose" msgstr "" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 msgid "Status" msgstr "" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 msgid "Time Confirmed" msgstr "" #: src/utils/getHistoryExportFile.js:38 src/utils/getHistoryExportFile.js:117 #: src/editHistDialog.js:68 src/historyFactory.js:186 msgid "Missed" msgstr "" #: src/utils/getHistoryExportFile.js:41 src/utils/getHistoryExportFile.js:121 #: src/historyFactory.js:183 data/ui/edit-hist-dialog.blp:111 msgid "Skipped" msgstr "" #: src/utils/getHistoryExportFile.js:44 src/utils/getHistoryExportFile.js:55 #: src/utils/getHistoryExportFile.js:125 src/utils/getHistoryExportFile.js:138 #: src/editHistDialog.js:73 src/historyFactory.js:190 #: data/ui/edit-hist-dialog.blp:116 msgid "Confirmed" msgstr "" #: src/utils/getHistoryExportFile.js:52 src/utils/getHistoryExportFile.js:134 #: src/editHistDialog.js:56 src/historyFactory.js:178 msgid "Auto-Confirmed" msgstr "" #: src/utils/getHistoryExportFile.js:55 src/utils/getHistoryExportFile.js:138 #: src/editHistDialog.js:74 msgid "Time Unknown" msgstr "" #. TRANSLATORS: Context: 1 Pill at 19:00 #: src/utils/getTreatmentsExportFile.js:69 msgid "at" msgstr "" #: src/utils/getTreatmentsExportFile.js:89 data/ui/med-dialog.blp:443 msgid "Notes" msgstr "" #: src/utils/getTreatmentsExportFile.js:96 src/utils/locale.js:37 #: src/treatmentsFactory.js:268 msgid "Daily" msgstr "" #: src/utils/getTreatmentsExportFile.js:102 src/medDialog.js:428 #: data/ui/med-dialog.blp:459 msgid "Day of Month" msgstr "" #. TRANSLATORS: Context: 2 day(s) on, 1 day(s) off #: src/utils/getTreatmentsExportFile.js:109 msgid "day(s) on" msgstr "" #. TRANSLATORS: Context: 2 day(s) on, 1 day(s) off #: src/utils/getTreatmentsExportFile.js:111 msgid "day(s) off" msgstr "" #: src/utils/getTreatmentsExportFile.js:122 src/todayFactory.js:41 #: src/treatmentsFactory.js:298 data/ui/med-dialog.blp:461 msgid "As Needed" msgstr "" #: src/utils/getTreatmentsExportFile.js:132 data/ui/med-dialog.blp:764 msgid "Duration" msgstr "" #: src/utils/getTreatmentsExportFile.js:135 msgid "Started on" msgstr "" #: src/utils/getTreatmentsExportFile.js:136 data/ui/med-dialog.blp:775 msgid "Start" msgstr "" #: src/utils/getTreatmentsExportFile.js:138 src/treatmentsFactory.js:256 msgid "Ended on" msgstr "" #: src/utils/getTreatmentsExportFile.js:138 data/ui/med-dialog.blp:817 msgid "End" msgstr "" #: src/utils/getTreatmentsExportFile.js:173 src/utils/saveFiles.js:44 #: data/ui/window.blp:234 msgid "Treatments" msgstr "" #: src/utils/getTreatmentsExportFile.js:184 msgid "Generated on" msgstr "" #: src/utils/getTreatmentsExportFile.js:187 msgid "Ongoing" msgstr "" #: src/utils/getTreatmentsExportFile.js:188 msgid "Non-scheduled" msgstr "" #: src/utils/getTreatmentsExportFile.js:189 msgid "Finished" msgstr "" #: src/utils/locale.js:33 msgid "Weekends" msgstr "" #: src/utils/locale.js:35 msgid "Weekdays" msgstr "" #: src/utils/saveFiles.js:22 data/ui/window.blp:156 msgid "History" msgstr "" #: src/editHistDialog.js:60 src/editHistDialog.js:89 src/editHistDialog.js:110 msgid "Confirmed At" msgstr "" #: src/editHistDialog.js:64 src/editHistDialog.js:114 msgid "Skipped At" msgstr "" #: src/historyFactory.js:47 msgid "Select to be Removed" msgstr "" #. TRANSLATORS: "Your Name " #: src/main.js:69 msgid "translator-credits" msgstr "" #: src/main.js:73 msgid "Thanks to These Projects!" msgstr "" #: src/medDialog.js:99 msgid "Edit Treatment" msgstr "" #: src/medDialog.js:100 data/ui/edit-hist-dialog.blp:30 #: data/ui/preferences.blp:112 data/ui/preferences.blp:132 #: data/ui/refill-dialog.blp:67 msgid "Save" msgstr "" #: src/medDialog.js:114 msgid "Copy" msgstr "" #: src/medDialog.js:217 msgid "Add Dose" msgstr "" #: src/medDialog.js:419 msgid "Choose" msgstr "" #: src/medDialog.js:429 src/treatmentsFactory.js:274 msgid "Day" msgstr "" #: src/medDialog.js:456 data/ui/med-dialog.blp:458 msgid "Specific Days" msgstr "" #: src/medDialog.js:463 src/treatmentsFactory.js:295 data/ui/med-dialog.blp:460 msgid "Cycle" msgstr "" #: src/medDialog.js:467 data/ui/med-dialog.blp:452 msgid "Frequency" msgstr "" #: src/medDialog.js:500 msgid "Empty Name" msgstr "" #: src/medDialog.js:506 msgid "Empty Unit" msgstr "" #: src/medDialog.js:513 msgid "Choose at Least One Day" msgstr "" #: src/medDialog.js:527 src/oneTimeDialog.js:187 msgid "Name Already on Treatment List" msgstr "" #: src/medDialog.js:542 msgid "Duplicated Time" msgstr "" #: src/medDialog.js:582 msgid "Are You Sure?" msgstr "" #: src/medDialog.js:583 msgid "will be deleted" msgstr "" #: src/medDialog.js:586 data/ui/edit-hist-dialog.blp:18 #: data/ui/med-dialog.blp:19 msgid "Cancel" msgstr "" #: src/medDialog.js:587 src/treatmentsFactory.js:128 data/ui/med-dialog.blp:865 msgid "Delete" msgstr "" #: src/oneTimeDialog.js:110 msgid "New" msgstr "" #: src/oneTimeDialog.js:121 data/ui/med-dialog.blp:189 #: data/ui/one-time-dialog.blp:178 msgid "Pill(s)" msgstr "" #: src/prefsDialog.js:63 msgid "Accept to allow running in the background and receive notifications" msgstr "" #: src/prefsDialog.js:74 src/window.js:259 msgid "An Issue Has Occurred" msgstr "" #: src/prefsDialog.js:77 src/window.js:267 src/window.js:289 src/window.js:311 #: src/window.js:329 msgid "Close" msgstr "" #: src/timeDoseRow.js:34 msgid "Remove Dose" msgstr "" #: src/timeDoseRow.js:40 data/ui/edit-hist-dialog.blp:90 #: data/ui/one-time-dialog.blp:210 msgid "Change Time" msgstr "" #: src/todayFactory.js:134 msgid "Change Dose" msgstr "" #: src/treatmentsFactory.js:96 src/treatmentsFactory.js:126 #: data/ui/refill-dialog.blp:7 msgid "Refill" msgstr "" #: src/treatmentsFactory.js:125 msgid "Edit" msgstr "" #: src/treatmentsFactory.js:127 msgid "Duplicate" msgstr "" #: src/treatmentsFactory.js:146 msgid "Options" msgstr "" #. TRANSLATORS: keep the %d it's where the number goes #: src/treatmentsFactory.js:244 #, javascript-format msgid "%d Remaining" msgstr "" #. TRANSLATORS: label for when duration is enabled #: src/treatmentsFactory.js:254 msgid "Starts on" msgstr "" #: src/treatmentsFactory.js:255 msgid "Until" msgstr "" #: src/treatmentsFactory.js:283 src/treatmentsFactory.js:286 msgid "Next Dose" msgstr "" #: src/window.js:173 src/window.js:943 msgid "Reminder" msgstr "" #. TRANSLATORS: Notification text for when the inventory is low #: src/window.js:175 msgid "You have treatments low in stock" msgstr "" #: src/window.js:492 msgid "Show All" msgstr "" #: src/window.js:515 msgid "Show Less" msgstr "" #: src/window.js:648 msgid "No Results Found" msgstr "" #: src/window.js:648 src/window.js:1517 msgid "No History" msgstr "" #: src/window.js:818 data/ui/window.blp:260 msgid "No Treatments" msgstr "" #: src/window.js:818 msgid "All Done for Today" msgstr "" #: src/window.js:906 src/window.js:1090 data/ui/one-time-dialog.blp:285 #: data/ui/preferences.blp:73 msgid "Confirm" msgstr "" #: src/window.js:906 msgid "Confirm All" msgstr "" #: src/window.js:907 data/ui/preferences.blp:84 data/ui/window.blp:146 msgid "Skip" msgstr "" #: src/window.js:907 msgid "Skip All" msgstr "" #. TRANSLATORS: keep the %d it's where the number goes #: src/window.js:938 #, javascript-format msgid "and %d more" msgstr "" #: src/window.js:1090 data/ui/one-time-dialog.blp:7 data/ui/window.blp:133 msgid "One-Time Entry" msgstr "" #: src/window.js:1295 data/ui/window.blp:353 msgid "Quit" msgstr "" #: data/ui/edit-hist-dialog.blp:7 msgid "Edit Entry" msgstr "" #: data/ui/med-dialog.blp:7 msgid "New Treatment" msgstr "" #: data/ui/med-dialog.blp:31 data/ui/window.blp:283 msgid "Add" msgstr "Adder" #: data/ui/med-dialog.blp:69 data/ui/one-time-dialog.blp:58 msgid "Color" msgstr "" #. TRANSLATORS: Tooltip for the colors (from Default until Purple) #: data/ui/med-dialog.blp:94 data/ui/one-time-dialog.blp:83 msgid "Default" msgstr "" #: data/ui/med-dialog.blp:106 data/ui/one-time-dialog.blp:95 msgid "Red" msgstr "" #: data/ui/med-dialog.blp:118 data/ui/one-time-dialog.blp:107 msgid "Orange" msgstr "" #: data/ui/med-dialog.blp:130 data/ui/one-time-dialog.blp:119 msgid "Yellow" msgstr "" #: data/ui/med-dialog.blp:142 data/ui/one-time-dialog.blp:131 msgid "Green" msgstr "" #: data/ui/med-dialog.blp:154 data/ui/one-time-dialog.blp:143 msgid "Cyan" msgstr "" #: data/ui/med-dialog.blp:166 data/ui/one-time-dialog.blp:155 msgid "Blue" msgstr "" #: data/ui/med-dialog.blp:178 data/ui/one-time-dialog.blp:167 msgid "Purple" msgstr "" #: data/ui/med-dialog.blp:188 data/ui/one-time-dialog.blp:177 msgid "Unit" msgstr "" #: data/ui/med-dialog.blp:197 msgid "Icon" msgstr "" #. TRANSLATORS: Tooltip for the icons (from Pill until Potion) #: data/ui/med-dialog.blp:226 msgid "Pill" msgstr "" #: data/ui/med-dialog.blp:242 msgid "Alternative Pill" msgstr "" #: data/ui/med-dialog.blp:258 msgid "Capsule" msgstr "" #: data/ui/med-dialog.blp:274 msgid "Round Pill" msgstr "" #: data/ui/med-dialog.blp:290 msgid "Alternative Round Pill" msgstr "" #: data/ui/med-dialog.blp:306 msgid "Ampoule" msgstr "" #: data/ui/med-dialog.blp:322 msgid "Injection" msgstr "" #: data/ui/med-dialog.blp:338 msgid "Square Pill" msgstr "" #: data/ui/med-dialog.blp:354 msgid "Alternative Square Pill" msgstr "" #: data/ui/med-dialog.blp:370 msgid "Triangle pill" msgstr "" #: data/ui/med-dialog.blp:386 msgid "Alternative Triangle Pill" msgstr "" #: data/ui/med-dialog.blp:402 msgid "Bottle" msgstr "" #: data/ui/med-dialog.blp:418 msgid "Drops" msgstr "" #: data/ui/med-dialog.blp:434 msgid "Potion" msgstr "" #: data/ui/med-dialog.blp:457 msgid "Every Day" msgstr "" #: data/ui/med-dialog.blp:473 msgid "Choose Days" msgstr "" #: data/ui/med-dialog.blp:572 msgid "Choose Day" msgstr "" #: data/ui/med-dialog.blp:617 msgid "Change Cycle" msgstr "" #: data/ui/med-dialog.blp:642 msgid "Days Active" msgstr "" #: data/ui/med-dialog.blp:656 msgid "Days Inactive" msgstr "" #. TRANSLATORS: Day in cycle, try to keep it short #: data/ui/med-dialog.blp:671 msgid "Today is Cycle Day…" msgstr "" #: data/ui/med-dialog.blp:694 msgid "Increase Notification Priority" msgstr "" #: data/ui/med-dialog.blp:695 msgid "Show in fullscreen mode or with 'Do Not Disturb' enabled" msgstr "" #: data/ui/med-dialog.blp:699 msgid "Recurring Notifications" msgstr "" #: data/ui/med-dialog.blp:700 msgid "Renotify until it's confirmed or skipped" msgstr "" #: data/ui/med-dialog.blp:705 msgid "Interval in Minutes" msgstr "" #: data/ui/med-dialog.blp:718 data/ui/refill-dialog.blp:36 msgid "Inventory" msgstr "" #: data/ui/med-dialog.blp:719 msgid "Manage your stock" msgstr "" #: data/ui/med-dialog.blp:725 msgid "Current" msgstr "" #: data/ui/med-dialog.blp:738 msgid "Remind Me At" msgstr "" #: data/ui/med-dialog.blp:751 msgid "Refill Amount" msgstr "" #: data/ui/med-dialog.blp:765 msgid "Set start and end dates" msgstr "" #: data/ui/med-dialog.blp:785 data/ui/med-dialog.blp:827 #: data/ui/one-time-dialog.blp:243 msgid "Choose Date" msgstr "" #: data/ui/med-dialog.blp:855 msgid "Mark as Confirmed" msgstr "" #: data/ui/med-dialog.blp:856 msgid "" "If not manually confirmed or skipped, it will be recorded as confirmed in " "history, reducing stock if enabled" msgstr "" #: data/ui/one-time-dialog.blp:44 msgid "From Treatment List" msgstr "" #: data/ui/one-time-dialog.blp:182 msgid "Amount" msgstr "" #: data/ui/preferences.blp:7 data/ui/window.blp:338 msgid "Preferences" msgstr "" #: data/ui/preferences.blp:17 msgid "Auto-Start at Login" msgstr "" #: data/ui/preferences.blp:28 msgid "Auto-Clear History" msgstr "" #: data/ui/preferences.blp:29 msgid "Keeps a maximum of 30 days" msgstr "" #: data/ui/preferences.blp:40 msgid "Low Stock Notification" msgstr "" #: data/ui/preferences.blp:41 msgid "Send reminders when treatments are low in stock" msgstr "" #: data/ui/preferences.blp:52 msgid "Notification Sound" msgstr "" #: data/ui/preferences.blp:63 msgid "Notification Buttons" msgstr "" #: data/ui/preferences.blp:64 msgid "Show or hide confirm/skip" msgstr "" #: data/ui/preferences.blp:98 msgid "Export History As" msgstr "" #: data/ui/preferences.blp:121 msgid "Export Treatments As" msgstr "" #: data/ui/shortcuts-dialog.blp:8 #, fuzzy #| msgctxt "shortcut window" #| msgid "Show Shortcuts" msgid "Shortcuts" msgstr "Monstrar vias breve" #: data/ui/shortcuts-dialog.blp:11 msgctxt "shortcut window" msgid "Show/Hide 'As Needed'" msgstr "" #: data/ui/shortcuts-dialog.blp:16 msgctxt "shortcut window" msgid "New One-Time Entry" msgstr "" #: data/ui/shortcuts-dialog.blp:21 msgctxt "shortcut window" msgid "Add New Treatment" msgstr "" #: data/ui/shortcuts-dialog.blp:26 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Monstrar vias breve" #: data/ui/shortcuts-dialog.blp:31 msgctxt "shortcut window" msgid "Quit" msgstr "Quitar" #: data/ui/window.blp:23 msgid "Show/Hide 'As Needed'" msgstr "" #: data/ui/window.blp:31 msgid "Search" msgstr "" #: data/ui/window.blp:39 msgid "Sort Treatments" msgstr "" #: data/ui/window.blp:48 msgid "Main Menu" msgstr "" #: data/ui/window.blp:61 msgid "Search…" msgstr "" #: data/ui/window.blp:71 msgid "Today" msgstr "" #: data/ui/window.blp:117 data/ui/window.blp:210 msgid "Unselect" msgstr "" #: data/ui/window.blp:220 msgid "Remove Entries" msgstr "" #: data/ui/window.blp:300 msgid "Name Ascending" msgstr "" #: data/ui/window.blp:306 msgid "Remaining Stock (Lowest First)" msgstr "" #: data/ui/window.blp:312 msgid "Remaining Stock (Highest First)" msgstr "" #: data/ui/window.blp:318 msgid "As Needed Last" msgstr "" #: data/ui/window.blp:324 msgid "Ended Last" msgstr "" #: data/ui/window.blp:330 msgid "As Needed/Ended Last" msgstr "" #: data/ui/window.blp:343 #, fuzzy #| msgctxt "shortcut window" #| msgid "Show Shortcuts" msgid "Keyboard Shortcuts" msgstr "Monstrar vias breve" #: data/ui/window.blp:348 msgid "About Dosage" msgstr "" diegopvlk-Dosage-bd9126a/po/io.github.diegopvlk.Dosage.pot000066400000000000000000000416231514145341100235330ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) 2023 Diego Povliuk # This file is distributed under the license GPLv3-or-later. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: io.github.diegopvlk.Dosage\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-12-19 16:12-0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #. TRANSLATORS: App name, translate to your language and follow the capitalization #: data/io.github.diegopvlk.Dosage.appdata.xml.in:20 #: data/io.github.diegopvlk.Dosage.desktop.in:3 #: src/utils/getTreatmentsExportFile.js:173 src/utils/saveFiles.js:22 #: src/utils/saveFiles.js:44 src/main.js:60 src/window.js:1060 #: data/ui/window.blp:6 msgid "Dosage" msgstr "" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:21 msgid "Keep track of your treatments" msgstr "" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:24 msgid "" "Easily manage and track treatments with Dosage: notifications, history, " "multiple doses, flexible frequency, customization, stock monitoring, and " "duration control" msgstr "" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:25 msgid "Features:" msgstr "" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:27 msgid "Notifications — Get reminders at the right time" msgstr "" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:28 msgid "History — See which medications you took, skipped or missed" msgstr "" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:29 msgid "Dosage management — Multiple doses with different times" msgstr "" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:30 msgid "" "Frequency modes — Every day, specific days, cycle or just when necessary" msgstr "" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:31 msgid "Color and icon — Give a shape for your treatment" msgstr "" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:32 msgid "Inventory tracking — Monitor your stock and get reminded when it's low" msgstr "" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:33 msgid "Duration — Define the start and end dates" msgstr "" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:44 msgid "Dosage today window in light theme" msgstr "" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:49 msgid "Dosage preferences window in light theme" msgstr "" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:54 msgid "Dosage edit treatment window in light theme" msgstr "" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:59 msgid "Dosage today window in dark theme" msgstr "" #. TRANSLATORS: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/io.github.diegopvlk.Dosage.desktop.in:10 msgid "Medication;Tracker;Reminder;Today;Treatments;Pill;Drug;Remedy;" msgstr "" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:232 msgid "Date" msgstr "" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:199 msgid "Time" msgstr "" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/med-dialog.blp:61 data/ui/one-time-dialog.blp:49 msgid "Name" msgstr "" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:183 msgid "Dose" msgstr "" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 msgid "Status" msgstr "" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 msgid "Time Confirmed" msgstr "" #: src/utils/getHistoryExportFile.js:38 src/utils/getHistoryExportFile.js:117 #: src/editHistDialog.js:68 src/historyFactory.js:186 msgid "Missed" msgstr "" #: src/utils/getHistoryExportFile.js:41 src/utils/getHistoryExportFile.js:121 #: src/historyFactory.js:183 data/ui/edit-hist-dialog.blp:111 msgid "Skipped" msgstr "" #: src/utils/getHistoryExportFile.js:44 src/utils/getHistoryExportFile.js:55 #: src/utils/getHistoryExportFile.js:125 src/utils/getHistoryExportFile.js:138 #: src/editHistDialog.js:73 src/historyFactory.js:190 #: data/ui/edit-hist-dialog.blp:116 msgid "Confirmed" msgstr "" #: src/utils/getHistoryExportFile.js:52 src/utils/getHistoryExportFile.js:134 #: src/editHistDialog.js:56 src/historyFactory.js:178 msgid "Auto-Confirmed" msgstr "" #: src/utils/getHistoryExportFile.js:55 src/utils/getHistoryExportFile.js:138 #: src/editHistDialog.js:74 msgid "Time Unknown" msgstr "" #. TRANSLATORS: Context: 1 Pill at 19:00 #: src/utils/getTreatmentsExportFile.js:69 msgid "at" msgstr "" #: src/utils/getTreatmentsExportFile.js:89 data/ui/med-dialog.blp:443 msgid "Notes" msgstr "" #: src/utils/getTreatmentsExportFile.js:96 src/utils/locale.js:37 #: src/treatmentsFactory.js:268 msgid "Daily" msgstr "" #: src/utils/getTreatmentsExportFile.js:102 src/medDialog.js:428 #: data/ui/med-dialog.blp:459 msgid "Day of Month" msgstr "" #. TRANSLATORS: Context: 2 day(s) on, 1 day(s) off #: src/utils/getTreatmentsExportFile.js:109 msgid "day(s) on" msgstr "" #. TRANSLATORS: Context: 2 day(s) on, 1 day(s) off #: src/utils/getTreatmentsExportFile.js:111 msgid "day(s) off" msgstr "" #: src/utils/getTreatmentsExportFile.js:122 src/todayFactory.js:41 #: src/treatmentsFactory.js:298 data/ui/med-dialog.blp:461 msgid "As Needed" msgstr "" #: src/utils/getTreatmentsExportFile.js:132 data/ui/med-dialog.blp:764 msgid "Duration" msgstr "" #: src/utils/getTreatmentsExportFile.js:135 msgid "Started on" msgstr "" #: src/utils/getTreatmentsExportFile.js:136 data/ui/med-dialog.blp:775 msgid "Start" msgstr "" #: src/utils/getTreatmentsExportFile.js:138 src/treatmentsFactory.js:256 msgid "Ended on" msgstr "" #: src/utils/getTreatmentsExportFile.js:138 data/ui/med-dialog.blp:817 msgid "End" msgstr "" #: src/utils/getTreatmentsExportFile.js:173 src/utils/saveFiles.js:44 #: data/ui/window.blp:234 msgid "Treatments" msgstr "" #: src/utils/getTreatmentsExportFile.js:184 msgid "Generated on" msgstr "" #: src/utils/getTreatmentsExportFile.js:187 msgid "Ongoing" msgstr "" #: src/utils/getTreatmentsExportFile.js:188 msgid "Non-scheduled" msgstr "" #: src/utils/getTreatmentsExportFile.js:189 msgid "Finished" msgstr "" #: src/utils/locale.js:33 msgid "Weekends" msgstr "" #: src/utils/locale.js:35 msgid "Weekdays" msgstr "" #: src/utils/saveFiles.js:22 data/ui/window.blp:156 msgid "History" msgstr "" #: src/editHistDialog.js:60 src/editHistDialog.js:89 src/editHistDialog.js:110 msgid "Confirmed At" msgstr "" #: src/editHistDialog.js:64 src/editHistDialog.js:114 msgid "Skipped At" msgstr "" #: src/historyFactory.js:47 msgid "Select to be Removed" msgstr "" #. TRANSLATORS: "Your Name " #: src/main.js:69 msgid "translator-credits" msgstr "" #: src/main.js:73 msgid "Thanks to These Projects!" msgstr "" #: src/medDialog.js:99 msgid "Edit Treatment" msgstr "" #: src/medDialog.js:100 data/ui/edit-hist-dialog.blp:30 #: data/ui/preferences.blp:112 data/ui/preferences.blp:132 #: data/ui/refill-dialog.blp:67 msgid "Save" msgstr "" #: src/medDialog.js:114 msgid "Copy" msgstr "" #: src/medDialog.js:217 msgid "Add Dose" msgstr "" #: src/medDialog.js:419 msgid "Choose" msgstr "" #: src/medDialog.js:429 src/treatmentsFactory.js:274 msgid "Day" msgstr "" #: src/medDialog.js:456 data/ui/med-dialog.blp:458 msgid "Specific Days" msgstr "" #: src/medDialog.js:463 src/treatmentsFactory.js:295 data/ui/med-dialog.blp:460 msgid "Cycle" msgstr "" #: src/medDialog.js:467 data/ui/med-dialog.blp:452 msgid "Frequency" msgstr "" #: src/medDialog.js:500 msgid "Empty Name" msgstr "" #: src/medDialog.js:506 msgid "Empty Unit" msgstr "" #: src/medDialog.js:513 msgid "Choose at Least One Day" msgstr "" #: src/medDialog.js:527 src/oneTimeDialog.js:187 msgid "Name Already on Treatment List" msgstr "" #: src/medDialog.js:542 msgid "Duplicated Time" msgstr "" #: src/medDialog.js:582 msgid "Are You Sure?" msgstr "" #: src/medDialog.js:583 msgid "will be deleted" msgstr "" #: src/medDialog.js:586 data/ui/edit-hist-dialog.blp:18 #: data/ui/med-dialog.blp:19 msgid "Cancel" msgstr "" #: src/medDialog.js:587 src/treatmentsFactory.js:128 data/ui/med-dialog.blp:865 msgid "Delete" msgstr "" #: src/oneTimeDialog.js:110 msgid "New" msgstr "" #: src/oneTimeDialog.js:121 data/ui/med-dialog.blp:189 #: data/ui/one-time-dialog.blp:178 msgid "Pill(s)" msgstr "" #: src/prefsDialog.js:63 msgid "Accept to allow running in the background and receive notifications" msgstr "" #: src/prefsDialog.js:74 src/window.js:259 msgid "An Issue Has Occurred" msgstr "" #: src/prefsDialog.js:77 src/window.js:267 src/window.js:289 src/window.js:311 #: src/window.js:329 msgid "Close" msgstr "" #: src/timeDoseRow.js:34 msgid "Remove Dose" msgstr "" #: src/timeDoseRow.js:40 data/ui/edit-hist-dialog.blp:90 #: data/ui/one-time-dialog.blp:210 msgid "Change Time" msgstr "" #: src/todayFactory.js:134 msgid "Change Dose" msgstr "" #: src/treatmentsFactory.js:96 src/treatmentsFactory.js:126 #: data/ui/refill-dialog.blp:7 msgid "Refill" msgstr "" #: src/treatmentsFactory.js:125 msgid "Edit" msgstr "" #: src/treatmentsFactory.js:127 msgid "Duplicate" msgstr "" #: src/treatmentsFactory.js:146 msgid "Options" msgstr "" #. TRANSLATORS: keep the %d it's where the number goes #: src/treatmentsFactory.js:244 #, javascript-format msgid "%d Remaining" msgstr "" #. TRANSLATORS: label for when duration is enabled #: src/treatmentsFactory.js:254 msgid "Starts on" msgstr "" #: src/treatmentsFactory.js:255 msgid "Until" msgstr "" #: src/treatmentsFactory.js:283 src/treatmentsFactory.js:286 msgid "Next Dose" msgstr "" #: src/window.js:173 src/window.js:943 msgid "Reminder" msgstr "" #. TRANSLATORS: Notification text for when the inventory is low #: src/window.js:175 msgid "You have treatments low in stock" msgstr "" #: src/window.js:492 msgid "Show All" msgstr "" #: src/window.js:515 msgid "Show Less" msgstr "" #: src/window.js:648 msgid "No Results Found" msgstr "" #: src/window.js:648 src/window.js:1517 msgid "No History" msgstr "" #: src/window.js:818 data/ui/window.blp:260 msgid "No Treatments" msgstr "" #: src/window.js:818 msgid "All Done for Today" msgstr "" #: src/window.js:906 src/window.js:1090 data/ui/one-time-dialog.blp:285 #: data/ui/preferences.blp:73 msgid "Confirm" msgstr "" #: src/window.js:906 msgid "Confirm All" msgstr "" #: src/window.js:907 data/ui/preferences.blp:84 data/ui/window.blp:146 msgid "Skip" msgstr "" #: src/window.js:907 msgid "Skip All" msgstr "" #. TRANSLATORS: keep the %d it's where the number goes #: src/window.js:938 #, javascript-format msgid "and %d more" msgstr "" #: src/window.js:1090 data/ui/one-time-dialog.blp:7 data/ui/window.blp:133 msgid "One-Time Entry" msgstr "" #: src/window.js:1295 data/ui/window.blp:353 msgid "Quit" msgstr "" #: data/ui/edit-hist-dialog.blp:7 msgid "Edit Entry" msgstr "" #: data/ui/med-dialog.blp:7 msgid "New Treatment" msgstr "" #: data/ui/med-dialog.blp:31 data/ui/window.blp:283 msgid "Add" msgstr "" #: data/ui/med-dialog.blp:69 data/ui/one-time-dialog.blp:58 msgid "Color" msgstr "" #. TRANSLATORS: Tooltip for the colors (from Default until Purple) #: data/ui/med-dialog.blp:94 data/ui/one-time-dialog.blp:83 msgid "Default" msgstr "" #: data/ui/med-dialog.blp:106 data/ui/one-time-dialog.blp:95 msgid "Red" msgstr "" #: data/ui/med-dialog.blp:118 data/ui/one-time-dialog.blp:107 msgid "Orange" msgstr "" #: data/ui/med-dialog.blp:130 data/ui/one-time-dialog.blp:119 msgid "Yellow" msgstr "" #: data/ui/med-dialog.blp:142 data/ui/one-time-dialog.blp:131 msgid "Green" msgstr "" #: data/ui/med-dialog.blp:154 data/ui/one-time-dialog.blp:143 msgid "Cyan" msgstr "" #: data/ui/med-dialog.blp:166 data/ui/one-time-dialog.blp:155 msgid "Blue" msgstr "" #: data/ui/med-dialog.blp:178 data/ui/one-time-dialog.blp:167 msgid "Purple" msgstr "" #: data/ui/med-dialog.blp:188 data/ui/one-time-dialog.blp:177 msgid "Unit" msgstr "" #: data/ui/med-dialog.blp:197 msgid "Icon" msgstr "" #. TRANSLATORS: Tooltip for the icons (from Pill until Potion) #: data/ui/med-dialog.blp:226 msgid "Pill" msgstr "" #: data/ui/med-dialog.blp:242 msgid "Alternative Pill" msgstr "" #: data/ui/med-dialog.blp:258 msgid "Capsule" msgstr "" #: data/ui/med-dialog.blp:274 msgid "Round Pill" msgstr "" #: data/ui/med-dialog.blp:290 msgid "Alternative Round Pill" msgstr "" #: data/ui/med-dialog.blp:306 msgid "Ampoule" msgstr "" #: data/ui/med-dialog.blp:322 msgid "Injection" msgstr "" #: data/ui/med-dialog.blp:338 msgid "Square Pill" msgstr "" #: data/ui/med-dialog.blp:354 msgid "Alternative Square Pill" msgstr "" #: data/ui/med-dialog.blp:370 msgid "Triangle pill" msgstr "" #: data/ui/med-dialog.blp:386 msgid "Alternative Triangle Pill" msgstr "" #: data/ui/med-dialog.blp:402 msgid "Bottle" msgstr "" #: data/ui/med-dialog.blp:418 msgid "Drops" msgstr "" #: data/ui/med-dialog.blp:434 msgid "Potion" msgstr "" #: data/ui/med-dialog.blp:457 msgid "Every Day" msgstr "" #: data/ui/med-dialog.blp:473 msgid "Choose Days" msgstr "" #: data/ui/med-dialog.blp:572 msgid "Choose Day" msgstr "" #: data/ui/med-dialog.blp:617 msgid "Change Cycle" msgstr "" #: data/ui/med-dialog.blp:642 msgid "Days Active" msgstr "" #: data/ui/med-dialog.blp:656 msgid "Days Inactive" msgstr "" #. TRANSLATORS: Day in cycle, try to keep it short #: data/ui/med-dialog.blp:671 msgid "Today is Cycle Day…" msgstr "" #: data/ui/med-dialog.blp:694 msgid "Increase Notification Priority" msgstr "" #: data/ui/med-dialog.blp:695 msgid "Show in fullscreen mode or with 'Do Not Disturb' enabled" msgstr "" #: data/ui/med-dialog.blp:699 msgid "Recurring Notifications" msgstr "" #: data/ui/med-dialog.blp:700 msgid "Renotify until it's confirmed or skipped" msgstr "" #: data/ui/med-dialog.blp:705 msgid "Interval in Minutes" msgstr "" #: data/ui/med-dialog.blp:718 data/ui/refill-dialog.blp:36 msgid "Inventory" msgstr "" #: data/ui/med-dialog.blp:719 msgid "Manage your stock" msgstr "" #: data/ui/med-dialog.blp:725 msgid "Current" msgstr "" #: data/ui/med-dialog.blp:738 msgid "Remind Me At" msgstr "" #: data/ui/med-dialog.blp:751 msgid "Refill Amount" msgstr "" #: data/ui/med-dialog.blp:765 msgid "Set start and end dates" msgstr "" #: data/ui/med-dialog.blp:785 data/ui/med-dialog.blp:827 #: data/ui/one-time-dialog.blp:243 msgid "Choose Date" msgstr "" #: data/ui/med-dialog.blp:855 msgid "Mark as Confirmed" msgstr "" #: data/ui/med-dialog.blp:856 msgid "" "If not manually confirmed or skipped, it will be recorded as confirmed in " "history, reducing stock if enabled" msgstr "" #: data/ui/one-time-dialog.blp:44 msgid "From Treatment List" msgstr "" #: data/ui/one-time-dialog.blp:182 msgid "Amount" msgstr "" #: data/ui/preferences.blp:7 data/ui/window.blp:338 msgid "Preferences" msgstr "" #: data/ui/preferences.blp:17 msgid "Auto-Start at Login" msgstr "" #: data/ui/preferences.blp:28 msgid "Auto-Clear History" msgstr "" #: data/ui/preferences.blp:29 msgid "Keeps a maximum of 30 days" msgstr "" #: data/ui/preferences.blp:40 msgid "Low Stock Notification" msgstr "" #: data/ui/preferences.blp:41 msgid "Send reminders when treatments are low in stock" msgstr "" #: data/ui/preferences.blp:52 msgid "Notification Sound" msgstr "" #: data/ui/preferences.blp:63 msgid "Notification Buttons" msgstr "" #: data/ui/preferences.blp:64 msgid "Show or hide confirm/skip" msgstr "" #: data/ui/preferences.blp:98 msgid "Export History As" msgstr "" #: data/ui/preferences.blp:121 msgid "Export Treatments As" msgstr "" #: data/ui/shortcuts-dialog.blp:8 msgid "Shortcuts" msgstr "" #: data/ui/shortcuts-dialog.blp:11 msgctxt "shortcut window" msgid "Show/Hide 'As Needed'" msgstr "" #: data/ui/shortcuts-dialog.blp:16 msgctxt "shortcut window" msgid "New One-Time Entry" msgstr "" #: data/ui/shortcuts-dialog.blp:21 msgctxt "shortcut window" msgid "Add New Treatment" msgstr "" #: data/ui/shortcuts-dialog.blp:26 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "" #: data/ui/shortcuts-dialog.blp:31 msgctxt "shortcut window" msgid "Quit" msgstr "" #: data/ui/window.blp:23 msgid "Show/Hide 'As Needed'" msgstr "" #: data/ui/window.blp:31 msgid "Search" msgstr "" #: data/ui/window.blp:39 msgid "Sort Treatments" msgstr "" #: data/ui/window.blp:48 msgid "Main Menu" msgstr "" #: data/ui/window.blp:61 msgid "Search…" msgstr "" #: data/ui/window.blp:71 msgid "Today" msgstr "" #: data/ui/window.blp:117 data/ui/window.blp:210 msgid "Unselect" msgstr "" #: data/ui/window.blp:220 msgid "Remove Entries" msgstr "" #: data/ui/window.blp:300 msgid "Name Ascending" msgstr "" #: data/ui/window.blp:306 msgid "Remaining Stock (Lowest First)" msgstr "" #: data/ui/window.blp:312 msgid "Remaining Stock (Highest First)" msgstr "" #: data/ui/window.blp:318 msgid "As Needed Last" msgstr "" #: data/ui/window.blp:324 msgid "Ended Last" msgstr "" #: data/ui/window.blp:330 msgid "As Needed/Ended Last" msgstr "" #: data/ui/window.blp:343 msgid "Keyboard Shortcuts" msgstr "" #: data/ui/window.blp:348 msgid "About Dosage" msgstr "" diegopvlk-Dosage-bd9126a/po/it.po000066400000000000000000000563621514145341100167150ustar00rootroot00000000000000# ITALIAN TRANSLATION. # Copyright (C) 2023 Diego Povliuk # This file is distributed under the license GPLv3-or-later. # ALBANO BATTISTELLA , 2023. # msgid "" msgstr "" "Project-Id-Version: io.github.diegopvlk.Dosage\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-12-19 16:12-0300\n" "PO-Revision-Date: 2026-01-25 07:48+0000\n" "Last-Translator: albanobattistella \n" "Language-Team: Italian \n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 5.16-dev\n" #. TRANSLATORS: App name, translate to your language and follow the capitalization #: data/io.github.diegopvlk.Dosage.appdata.xml.in:20 #: data/io.github.diegopvlk.Dosage.desktop.in:3 #: src/utils/getTreatmentsExportFile.js:173 src/utils/saveFiles.js:22 #: src/utils/saveFiles.js:44 src/main.js:60 src/window.js:1060 #: data/ui/window.blp:6 msgid "Dosage" msgstr "Dosaggio" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:21 msgid "Keep track of your treatments" msgstr "Tieni traccia dei tuoi trattamenti" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:24 msgid "" "Easily manage and track treatments with Dosage: notifications, history, " "multiple doses, flexible frequency, customization, stock monitoring, and " "duration control" msgstr "" "Gestisci facilmente il tracciamento dei trattamenti con Dosaggio: notifiche, " "cronologia, dosi multiple, frequenza flessibile, personalizzazione, " "monitoraggio delle scorte e controllo della durata" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:25 msgid "Features:" msgstr "Funzionalità:" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:27 msgid "Notifications — Get reminders at the right time" msgstr "Notifiche — Ricevi promemoria al momento giusto" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:28 msgid "History — See which medications you took, skipped or missed" msgstr "Cronologia: guarda quali farmaci hai preso, saltati o dimenticati" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:29 msgid "Dosage management — Multiple doses with different times" msgstr "Gestione del dosaggio — Dosi multiple con tempi diversi" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:30 msgid "" "Frequency modes — Every day, specific days, cycle or just when necessary" msgstr "" "Modalità di frequenza — Ogni giorno, giorni specifici, ciclicamente o solo " "quando necessario" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:31 msgid "Color and icon — Give a shape for your treatment" msgstr "Colore e icona — Dai una forma al tuo trattamento" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:32 msgid "Inventory tracking — Monitor your stock and get reminded when it's low" msgstr "" "Monitoraggio dell'inventario — Monitora le tue scorte e ricevi un promemoria " "quando sono in esaurimento" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:33 msgid "Duration — Define the start and end dates" msgstr "Durata — Definisci le date di inizio e di fine" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:44 msgid "Dosage today window in light theme" msgstr "Finestra di Dosaggio oggi in tema chiaro" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:49 msgid "Dosage preferences window in light theme" msgstr "Finestra delle preferenze di dosaggio in tema chiaro" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:54 msgid "Dosage edit treatment window in light theme" msgstr "Finestra di modifica del dosaggio del trattamento in tema chiaro" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:59 msgid "Dosage today window in dark theme" msgstr "Finestra di Dosaggio oggi in tema scuro" #. TRANSLATORS: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/io.github.diegopvlk.Dosage.desktop.in:10 msgid "Medication;Tracker;Reminder;Today;Treatments;Pill;Drug;Remedy;" msgstr "Medicinale;Tracker;Promemoria;Oggi;Trattamenti;Pillola;Farmaco;Rimedio;" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:232 msgid "Date" msgstr "Data" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:199 msgid "Time" msgstr "Ora" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/med-dialog.blp:61 data/ui/one-time-dialog.blp:49 msgid "Name" msgstr "Nome" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:183 msgid "Dose" msgstr "Dose" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 msgid "Status" msgstr "Stato" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 msgid "Time Confirmed" msgstr "Orario Confermati" #: src/utils/getHistoryExportFile.js:38 src/utils/getHistoryExportFile.js:117 #: src/editHistDialog.js:68 src/historyFactory.js:186 msgid "Missed" msgstr "Perso" #: src/utils/getHistoryExportFile.js:41 src/utils/getHistoryExportFile.js:121 #: src/historyFactory.js:183 data/ui/edit-hist-dialog.blp:111 msgid "Skipped" msgstr "Saltato" #: src/utils/getHistoryExportFile.js:44 src/utils/getHistoryExportFile.js:55 #: src/utils/getHistoryExportFile.js:125 src/utils/getHistoryExportFile.js:138 #: src/editHistDialog.js:73 src/historyFactory.js:190 #: data/ui/edit-hist-dialog.blp:116 msgid "Confirmed" msgstr "Confermato" #: src/utils/getHistoryExportFile.js:52 src/utils/getHistoryExportFile.js:134 #: src/editHistDialog.js:56 src/historyFactory.js:178 msgid "Auto-Confirmed" msgstr "Confermato Automaticamente" #: src/utils/getHistoryExportFile.js:55 src/utils/getHistoryExportFile.js:138 #: src/editHistDialog.js:74 msgid "Time Unknown" msgstr "Orario Sconosciuto" #. TRANSLATORS: Context: 1 Pill at 19:00 #: src/utils/getTreatmentsExportFile.js:69 msgid "at" msgstr "alle" #: src/utils/getTreatmentsExportFile.js:89 data/ui/med-dialog.blp:443 msgid "Notes" msgstr "Note" #: src/utils/getTreatmentsExportFile.js:96 src/utils/locale.js:37 #: src/treatmentsFactory.js:268 msgid "Daily" msgstr "Giornaliero" #: src/utils/getTreatmentsExportFile.js:102 src/medDialog.js:428 #: data/ui/med-dialog.blp:459 msgid "Day of Month" msgstr "Giorno del Mese" #. TRANSLATORS: Context: 2 day(s) on, 1 day(s) off #: src/utils/getTreatmentsExportFile.js:109 msgid "day(s) on" msgstr "giorno(i) attivo(i)" #. TRANSLATORS: Context: 2 day(s) on, 1 day(s) off #: src/utils/getTreatmentsExportFile.js:111 msgid "day(s) off" msgstr "giorno(i) inattivo(i)" #: src/utils/getTreatmentsExportFile.js:122 src/todayFactory.js:41 #: src/treatmentsFactory.js:298 data/ui/med-dialog.blp:461 msgid "As Needed" msgstr "Secondo Necessità" #: src/utils/getTreatmentsExportFile.js:132 data/ui/med-dialog.blp:764 msgid "Duration" msgstr "Durata" #: src/utils/getTreatmentsExportFile.js:135 msgid "Started on" msgstr "Iniziato il" #: src/utils/getTreatmentsExportFile.js:136 data/ui/med-dialog.blp:775 msgid "Start" msgstr "Inizio" #: src/utils/getTreatmentsExportFile.js:138 src/treatmentsFactory.js:256 msgid "Ended on" msgstr "Terminato il" #: src/utils/getTreatmentsExportFile.js:138 data/ui/med-dialog.blp:817 msgid "End" msgstr "Fine" #: src/utils/getTreatmentsExportFile.js:173 src/utils/saveFiles.js:44 #: data/ui/window.blp:234 msgid "Treatments" msgstr "Trattamenti" #: src/utils/getTreatmentsExportFile.js:184 msgid "Generated on" msgstr "Generato il" #: src/utils/getTreatmentsExportFile.js:187 msgid "Ongoing" msgstr "In Corso" #: src/utils/getTreatmentsExportFile.js:188 msgid "Non-scheduled" msgstr "Non Pianificato" #: src/utils/getTreatmentsExportFile.js:189 msgid "Finished" msgstr "Finito" #: src/utils/locale.js:33 msgid "Weekends" msgstr "Fine Settimana" #: src/utils/locale.js:35 msgid "Weekdays" msgstr "Giorni Feriali" #: src/utils/saveFiles.js:22 data/ui/window.blp:156 msgid "History" msgstr "Cronologia" #: src/editHistDialog.js:60 src/editHistDialog.js:89 src/editHistDialog.js:110 msgid "Confirmed At" msgstr "Confermato a" #: src/editHistDialog.js:64 src/editHistDialog.js:114 msgid "Skipped At" msgstr "Saltato a" #: src/historyFactory.js:47 msgid "Select to be Removed" msgstr "Seleziona per Essere Rimosso" #. TRANSLATORS: "Your Name " #: src/main.js:69 msgid "translator-credits" msgstr "Albano Battistella " #: src/main.js:73 msgid "Thanks to These Projects!" msgstr "Grazie a Questi Progetti!" #: src/medDialog.js:99 msgid "Edit Treatment" msgstr "Modifica Trattamento" #: src/medDialog.js:100 data/ui/edit-hist-dialog.blp:30 #: data/ui/preferences.blp:112 data/ui/preferences.blp:132 #: data/ui/refill-dialog.blp:67 msgid "Save" msgstr "Salva" #: src/medDialog.js:114 msgid "Copy" msgstr "Copia" #: src/medDialog.js:217 msgid "Add Dose" msgstr "Aggiungi Dose" #: src/medDialog.js:419 msgid "Choose" msgstr "Scegli" #: src/medDialog.js:429 src/treatmentsFactory.js:274 msgid "Day" msgstr "Giorno" #: src/medDialog.js:456 data/ui/med-dialog.blp:458 msgid "Specific Days" msgstr "Giorni Specifici" #: src/medDialog.js:463 src/treatmentsFactory.js:295 data/ui/med-dialog.blp:460 msgid "Cycle" msgstr "Ciclo" #: src/medDialog.js:467 data/ui/med-dialog.blp:452 msgid "Frequency" msgstr "Frequenza" #: src/medDialog.js:500 msgid "Empty Name" msgstr "Nome Vuoto" #: src/medDialog.js:506 msgid "Empty Unit" msgstr "Unità Vuota" #: src/medDialog.js:513 msgid "Choose at Least One Day" msgstr "Scegli Almeno un Giorno" #: src/medDialog.js:527 src/oneTimeDialog.js:187 msgid "Name Already on Treatment List" msgstr "Nome Già Presente nell'Elenco dei Trattamenti" #: src/medDialog.js:542 msgid "Duplicated Time" msgstr "Tempo Duplicato" #: src/medDialog.js:582 msgid "Are You Sure?" msgstr "Sei Sicuro?" #: src/medDialog.js:583 msgid "will be deleted" msgstr "verrà eliminato" #: src/medDialog.js:586 data/ui/edit-hist-dialog.blp:18 #: data/ui/med-dialog.blp:19 msgid "Cancel" msgstr "Annulla" #: src/medDialog.js:587 src/treatmentsFactory.js:128 data/ui/med-dialog.blp:865 msgid "Delete" msgstr "Cancella" #: src/oneTimeDialog.js:110 msgid "New" msgstr "Nuovo" #: src/oneTimeDialog.js:121 data/ui/med-dialog.blp:189 #: data/ui/one-time-dialog.blp:178 msgid "Pill(s)" msgstr "Pillola(e)" #: src/prefsDialog.js:63 msgid "Accept to allow running in the background and receive notifications" msgstr "Accetta per consentire l'esecuzione in background e ricevere notifiche" #: src/prefsDialog.js:74 src/window.js:259 msgid "An Issue Has Occurred" msgstr "Si è Verificato un Problema" #: src/prefsDialog.js:77 src/window.js:267 src/window.js:289 src/window.js:311 #: src/window.js:329 msgid "Close" msgstr "Chiudi" #: src/timeDoseRow.js:34 msgid "Remove Dose" msgstr "Rimuovi Dose" #: src/timeDoseRow.js:40 data/ui/edit-hist-dialog.blp:90 #: data/ui/one-time-dialog.blp:210 msgid "Change Time" msgstr "Cambia Orario" #: src/todayFactory.js:134 msgid "Change Dose" msgstr "Cambia Dose" #: src/treatmentsFactory.js:96 src/treatmentsFactory.js:126 #: data/ui/refill-dialog.blp:7 msgid "Refill" msgstr "Ricarica" #: src/treatmentsFactory.js:125 msgid "Edit" msgstr "Modifica" #: src/treatmentsFactory.js:127 msgid "Duplicate" msgstr "Duplica" #: src/treatmentsFactory.js:146 msgid "Options" msgstr "Opzioni" #. TRANSLATORS: keep the %d it's where the number goes #: src/treatmentsFactory.js:244 #, javascript-format msgid "%d Remaining" msgstr "%d Rimanenti" #. TRANSLATORS: label for when duration is enabled #: src/treatmentsFactory.js:254 msgid "Starts on" msgstr "Inizia il" #: src/treatmentsFactory.js:255 msgid "Until" msgstr "Fino a" #: src/treatmentsFactory.js:283 src/treatmentsFactory.js:286 msgid "Next Dose" msgstr "Prossima Dose" #: src/window.js:173 src/window.js:943 msgid "Reminder" msgstr "Promemoria" #. TRANSLATORS: Notification text for when the inventory is low #: src/window.js:175 msgid "You have treatments low in stock" msgstr "Hai trattamenti in esaurimento" #: src/window.js:492 msgid "Show All" msgstr "Mostra Tutto" #: src/window.js:515 msgid "Show Less" msgstr "Mostra Meno" #: src/window.js:648 msgid "No Results Found" msgstr "Nessun Risultato Trovato" #: src/window.js:648 src/window.js:1517 msgid "No History" msgstr "Nessuna cronologia" #: src/window.js:818 data/ui/window.blp:260 msgid "No Treatments" msgstr "Nessun trattamento" #: src/window.js:818 msgid "All Done for Today" msgstr "Tutto Fatto per Oggi" #: src/window.js:906 src/window.js:1090 data/ui/one-time-dialog.blp:285 #: data/ui/preferences.blp:73 msgid "Confirm" msgstr "Conferma" #: src/window.js:906 msgid "Confirm All" msgstr "Conferma Tutto" #: src/window.js:907 data/ui/preferences.blp:84 data/ui/window.blp:146 msgid "Skip" msgstr "Salta" #: src/window.js:907 msgid "Skip All" msgstr "Salta Tutto" #. TRANSLATORS: keep the %d it's where the number goes #: src/window.js:938 #, javascript-format msgid "and %d more" msgstr "e %d in più" #: src/window.js:1090 data/ui/one-time-dialog.blp:7 data/ui/window.blp:133 msgid "One-Time Entry" msgstr "Unica Voce" #: src/window.js:1295 data/ui/window.blp:353 msgid "Quit" msgstr "Esci" #: data/ui/edit-hist-dialog.blp:7 msgid "Edit Entry" msgstr "Modifica Voce" #: data/ui/med-dialog.blp:7 msgid "New Treatment" msgstr "Nuovo Trattamento" #: data/ui/med-dialog.blp:31 data/ui/window.blp:283 msgid "Add" msgstr "Aggiungi" #: data/ui/med-dialog.blp:69 data/ui/one-time-dialog.blp:58 msgid "Color" msgstr "Colore" #. TRANSLATORS: Tooltip for the colors (from Default until Purple) #: data/ui/med-dialog.blp:94 data/ui/one-time-dialog.blp:83 msgid "Default" msgstr "Predefinito" #: data/ui/med-dialog.blp:106 data/ui/one-time-dialog.blp:95 msgid "Red" msgstr "Rosso" #: data/ui/med-dialog.blp:118 data/ui/one-time-dialog.blp:107 msgid "Orange" msgstr "Arancione" #: data/ui/med-dialog.blp:130 data/ui/one-time-dialog.blp:119 msgid "Yellow" msgstr "Giallo" #: data/ui/med-dialog.blp:142 data/ui/one-time-dialog.blp:131 msgid "Green" msgstr "Verde" #: data/ui/med-dialog.blp:154 data/ui/one-time-dialog.blp:143 msgid "Cyan" msgstr "Ciano" #: data/ui/med-dialog.blp:166 data/ui/one-time-dialog.blp:155 msgid "Blue" msgstr "Blu" #: data/ui/med-dialog.blp:178 data/ui/one-time-dialog.blp:167 msgid "Purple" msgstr "Viola" #: data/ui/med-dialog.blp:188 data/ui/one-time-dialog.blp:177 msgid "Unit" msgstr "Unità" #: data/ui/med-dialog.blp:197 msgid "Icon" msgstr "Icona" #. TRANSLATORS: Tooltip for the icons (from Pill until Potion) #: data/ui/med-dialog.blp:226 msgid "Pill" msgstr "Pillola" #: data/ui/med-dialog.blp:242 msgid "Alternative Pill" msgstr "Pillole Alternative" #: data/ui/med-dialog.blp:258 msgid "Capsule" msgstr "Capsula" #: data/ui/med-dialog.blp:274 msgid "Round Pill" msgstr "Pillola Rotonda" #: data/ui/med-dialog.blp:290 msgid "Alternative Round Pill" msgstr "Pillola Rotonda Alternativa" #: data/ui/med-dialog.blp:306 msgid "Ampoule" msgstr "Ampolla" #: data/ui/med-dialog.blp:322 msgid "Injection" msgstr "Iniezione" #: data/ui/med-dialog.blp:338 msgid "Square Pill" msgstr "Pillola Quadrata" #: data/ui/med-dialog.blp:354 msgid "Alternative Square Pill" msgstr "Pillola Quadrata Alternativa" #: data/ui/med-dialog.blp:370 msgid "Triangle pill" msgstr "Pillola triangolare" #: data/ui/med-dialog.blp:386 msgid "Alternative Triangle Pill" msgstr "Pillola Triangolare Alternativa" #: data/ui/med-dialog.blp:402 msgid "Bottle" msgstr "Bottiglia" #: data/ui/med-dialog.blp:418 msgid "Drops" msgstr "Gocce" #: data/ui/med-dialog.blp:434 msgid "Potion" msgstr "Pozione" #: data/ui/med-dialog.blp:457 msgid "Every Day" msgstr "Ogni Giorno" #: data/ui/med-dialog.blp:473 msgid "Choose Days" msgstr "Scegli Giorni" #: data/ui/med-dialog.blp:572 msgid "Choose Day" msgstr "Scegli Giorno" #: data/ui/med-dialog.blp:617 msgid "Change Cycle" msgstr "Cambia Ciclo" #: data/ui/med-dialog.blp:642 msgid "Days Active" msgstr "Giorni Attivi" #: data/ui/med-dialog.blp:656 msgid "Days Inactive" msgstr "Giorni Inattivi" #. TRANSLATORS: Day in cycle, try to keep it short #: data/ui/med-dialog.blp:671 msgid "Today is Cycle Day…" msgstr "Oggi è il Giorno del Ciclo…" #: data/ui/med-dialog.blp:694 msgid "Increase Notification Priority" msgstr "Aumenta la Priorità delle Notifiche" #: data/ui/med-dialog.blp:695 msgid "Show in fullscreen mode or with 'Do Not Disturb' enabled" msgstr "" "Mostra la notifica in modalità a schermo intero o anche se 'Non disturbare' " "è abilitato" #: data/ui/med-dialog.blp:699 msgid "Recurring Notifications" msgstr "Notifiche Ricorrenti" #: data/ui/med-dialog.blp:700 msgid "Renotify until it's confirmed or skipped" msgstr "Rinotificare finché non viene confermato o saltato" #: data/ui/med-dialog.blp:705 msgid "Interval in Minutes" msgstr "Intervallo in Minuti" #: data/ui/med-dialog.blp:718 data/ui/refill-dialog.blp:36 msgid "Inventory" msgstr "Inventario" #: data/ui/med-dialog.blp:719 msgid "Manage your stock" msgstr "Gestisci la tua scorta" #: data/ui/med-dialog.blp:725 msgid "Current" msgstr "Corrente" #: data/ui/med-dialog.blp:738 msgid "Remind Me At" msgstr "Ricordamelo a" #: data/ui/med-dialog.blp:751 msgid "Refill Amount" msgstr "Quantità di Rifornimento" #: data/ui/med-dialog.blp:765 msgid "Set start and end dates" msgstr "Impostare date di inizio e fine" #: data/ui/med-dialog.blp:785 data/ui/med-dialog.blp:827 #: data/ui/one-time-dialog.blp:243 msgid "Choose Date" msgstr "Scegli Data" #: data/ui/med-dialog.blp:855 msgid "Mark as Confirmed" msgstr "Contrassegna come Confermato" #: data/ui/med-dialog.blp:856 msgid "" "If not manually confirmed or skipped, it will be recorded as confirmed in " "history, reducing stock if enabled" msgstr "" "Se non confermato manualmente o saltato, verrà registrato come confermato " "nella cronologia, riducendo lo stock se abilitato" #: data/ui/one-time-dialog.blp:44 msgid "From Treatment List" msgstr "Dall'elenco dei Trattamenti" #: data/ui/one-time-dialog.blp:182 msgid "Amount" msgstr "Quantità" #: data/ui/preferences.blp:7 data/ui/window.blp:338 msgid "Preferences" msgstr "Preferenze" #: data/ui/preferences.blp:17 msgid "Auto-Start at Login" msgstr "Avvio Automatico al Login" #: data/ui/preferences.blp:28 msgid "Auto-Clear History" msgstr "Cancella Automaticamente la Cronologia" #: data/ui/preferences.blp:29 msgid "Keeps a maximum of 30 days" msgstr "Mantiene un massimo di 30 giorni" #: data/ui/preferences.blp:40 msgid "Low Stock Notification" msgstr "Notifica di Scorte in Esaurimento" #: data/ui/preferences.blp:41 msgid "Send reminders when treatments are low in stock" msgstr "Invia promemoria quando i trattamenti sono in esaurimento" #: data/ui/preferences.blp:52 msgid "Notification Sound" msgstr "Suono di Notifica" #: data/ui/preferences.blp:63 msgid "Notification Buttons" msgstr "Pulsanti di Notifica" #: data/ui/preferences.blp:64 msgid "Show or hide confirm/skip" msgstr "Mostra o nascondi conferma/salta" #: data/ui/preferences.blp:98 msgid "Export History As" msgstr "Esporta Cronologia Come" #: data/ui/preferences.blp:121 msgid "Export Treatments As" msgstr "Esporta Trattamenti Come" #: data/ui/shortcuts-dialog.blp:8 msgid "Shortcuts" msgstr "Scorciatoie" #: data/ui/shortcuts-dialog.blp:11 msgctxt "shortcut window" msgid "Show/Hide 'As Needed'" msgstr "Mostra/Nascondi 'Se necessario'" #: data/ui/shortcuts-dialog.blp:16 msgctxt "shortcut window" msgid "New One-Time Entry" msgstr "Nuova voce una tantum" #: data/ui/shortcuts-dialog.blp:21 msgctxt "shortcut window" msgid "Add New Treatment" msgstr "Aggiungi Nuovo Trattamento" #: data/ui/shortcuts-dialog.blp:26 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Mostra scorciatoie" #: data/ui/shortcuts-dialog.blp:31 msgctxt "shortcut window" msgid "Quit" msgstr "Esci" #: data/ui/window.blp:23 msgid "Show/Hide 'As Needed'" msgstr "Mostra/Nascondi 'Secondo Necessità'" #: data/ui/window.blp:31 msgid "Search" msgstr "Cerca" #: data/ui/window.blp:39 msgid "Sort Treatments" msgstr "Ordina Trattamenti" #: data/ui/window.blp:48 msgid "Main Menu" msgstr "Menu Principale" #: data/ui/window.blp:61 msgid "Search…" msgstr "Cerca…" #: data/ui/window.blp:71 msgid "Today" msgstr "Oggi" #: data/ui/window.blp:117 data/ui/window.blp:210 msgid "Unselect" msgstr "Deseleziona" #: data/ui/window.blp:220 msgid "Remove Entries" msgstr "Rimuovi Voci" #: data/ui/window.blp:300 msgid "Name Ascending" msgstr "Nome Crescente" #: data/ui/window.blp:306 msgid "Remaining Stock (Lowest First)" msgstr "Scorta Rimanente (Quantità Minore Prima)" #: data/ui/window.blp:312 msgid "Remaining Stock (Highest First)" msgstr "Scorta Rimanente (Quantità Maggiore Prima)" #: data/ui/window.blp:318 msgid "As Needed Last" msgstr "Se necessario alla fine" #: data/ui/window.blp:324 msgid "Ended Last" msgstr "Ultimo terminato" #: data/ui/window.blp:330 msgid "As Needed/Ended Last" msgstr "Secondo necessità/Terminato per ultimo" #: data/ui/window.blp:343 msgid "Keyboard Shortcuts" msgstr "Scorciatoie da tastiera" #: data/ui/window.blp:348 msgid "About Dosage" msgstr "Informazioni su Dosaggio" #~ msgid "Empty Treatments" #~ msgstr "Nessun Trattamento" #~ msgid "Empty History" #~ msgstr "Cronologia Vuota" #~ msgid "No Treatments Added" #~ msgstr "Nessun Trattamento Aggiunto" #~ msgctxt "shortcut window" #~ msgid "General" #~ msgstr "Generale" #~ msgctxt "shortcut window" #~ msgid "Preferences" #~ msgstr "Preferenze" #~ msgid "After meal" #~ msgstr "Dopo il pasto" #~ msgid "Refill Stock" #~ msgstr "Ricarica Scorta" #~ msgid "Low Stock" #~ msgstr "Scorta Bassa" #~ msgid "Form" #~ msgstr "Modulo" #~ msgid "Color and icon" #~ msgstr "Colore e icona" #~ msgid "Time and amount" #~ msgstr "Tempo e quantità" #~ msgid "Restore" #~ msgstr "Ristabilire" #~ msgid "New entry" #~ msgstr "Nuova voce" #~ msgid "Name already exists" #~ msgstr "Il nome esiste già" #~ msgid "Add to history" #~ msgstr "Agg. alla cronologia" #~ msgid "medication" #~ msgstr "farmaco" #~ msgid "tracker" #~ msgstr "Tracciatore" #~ msgid "treatments" #~ msgstr "trattamenti" #~ msgid "pill" #~ msgstr "pillola" #~ msgid "drug" #~ msgstr "Medicinale" #~ msgid "remedy" #~ msgstr "rimedio" #~ msgid "Su" #~ msgstr "Do" #~ msgid "Mo" #~ msgstr "Lu" #~ msgid "Tu" #~ msgstr "Ma" #~ msgid "We" #~ msgstr "Me" #~ msgid "Th" #~ msgstr "Gi" #~ msgid "Fr" #~ msgstr "Ve" #~ msgid "Sa" #~ msgstr "Sa" #~ msgid "Sunday" #~ msgstr "Domenica" #~ msgid "Monday" #~ msgstr "Lunedì" #~ msgid "Tuesday" #~ msgstr "Martedì" #~ msgid "Wednesday" #~ msgstr "Mercoledì" #~ msgid "Thursday" #~ msgstr "Giovedì" #~ msgid "Friday" #~ msgstr "Venerdì" #~ msgid "Saturday" #~ msgstr "Sabato" #~ msgid "Prossima dose" #~ msgstr "Cancella dose" #~ msgid "About" #~ msgstr "Informazioni" #~ msgid "Allow Dosage to run in background." #~ msgstr "Consenti l'esecuzione del Dosaggio in background." #~ msgid "Fixed notifications being delayed after suspension" #~ msgstr "" #~ "Risolto il problema con il ritardo delle notifiche dopo la sospensione" #~ msgid "" #~ "Fixed notifications being sent more than once after saving an existing " #~ "treatment" #~ msgstr "" #~ "Risolto il problema con cui le notifiche venivano inviate più di una " #~ "volta dopo aver salvato una trattamento esistente" #~ msgid "Added a label to show the frequency on treatments list" #~ msgstr "" #~ "Aggiunta un'etichetta per mostrare la frequenza nell'elenco dei " #~ "trattamenti" #~ msgid "Brazilian translation updated" #~ msgstr "Aggiornata la traduzione brasiliana" #~ msgid "Initial Release" #~ msgstr "Versione iniziale" diegopvlk-Dosage-bd9126a/po/ko.po000066400000000000000000000533101514145341100167000ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) 2023 Diego Povliuk # This file is distributed under the license GPLv3-or-later. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: io.github.diegopvlk.Dosage\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-12-19 16:12-0300\n" "PO-Revision-Date: 2025-02-10 23:31+0000\n" "Last-Translator: Diego Povliuk \n" "Language-Team: Korean \n" "Language: ko\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Weblate 5.10-dev\n" #. TRANSLATORS: App name, translate to your language and follow the capitalization #: data/io.github.diegopvlk.Dosage.appdata.xml.in:20 #: data/io.github.diegopvlk.Dosage.desktop.in:3 #: src/utils/getTreatmentsExportFile.js:173 src/utils/saveFiles.js:22 #: src/utils/saveFiles.js:44 src/main.js:60 src/window.js:1060 #: data/ui/window.blp:6 msgid "Dosage" msgstr "복용량" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:21 msgid "Keep track of your treatments" msgstr "치료 과정을 추적하세요" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:24 msgid "" "Easily manage and track treatments with Dosage: notifications, history, " "multiple doses, flexible frequency, customization, stock monitoring, and " "duration control" msgstr "" "복용량으로 치료를 쉽게 관리하고 추적하세요: 알림, 기록, 여러 복용량, 유연한 " "빈도, 사용자 정의, 재고 모니터링 및 기간 제어" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:25 msgid "Features:" msgstr "특징:" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:27 msgid "Notifications — Get reminders at the right time" msgstr "알림 — 적절한 시간에 알림 받기" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:28 msgid "History — See which medications you took, skipped or missed" msgstr "기록 — 어떤 약을 복용했는지, 건너뛰었는지, 놓쳤는지 보기" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:29 msgid "Dosage management — Multiple doses with different times" msgstr "복용량 관리 — 서로 다른 시간에 여러 복용량" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:30 msgid "" "Frequency modes — Every day, specific days, cycle or just when necessary" msgstr "빈도 모드 — 매일, 특정 요일, 주기 또는 필요할 때만" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:31 msgid "Color and icon — Give a shape for your treatment" msgstr "색상 및 아이콘 — 치료에 형태 부여하기" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:32 msgid "Inventory tracking — Monitor your stock and get reminded when it's low" msgstr "재고 추적 — 재고를 모니터링하고 부족할 때 알림 받기" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:33 msgid "Duration — Define the start and end dates" msgstr "기간 — 시작 및 종료 날짜 정의하기" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:44 msgid "Dosage today window in light theme" msgstr "오늘의 복용량 창 (라이트 테마)" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:49 msgid "Dosage preferences window in light theme" msgstr "복용량 설정 창 (라이트 테마)" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:54 msgid "Dosage edit treatment window in light theme" msgstr "복용량 치료 편집 창 (라이트 테마)" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:59 msgid "Dosage today window in dark theme" msgstr "오늘의 복용량 창 (다크 테마)" #. TRANSLATORS: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/io.github.diegopvlk.Dosage.desktop.in:10 msgid "Medication;Tracker;Reminder;Today;Treatments;Pill;Drug;Remedy;" msgstr "약물;추적기;알림;오늘;치료;알약;약;치료제;" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:232 msgid "Date" msgstr "날짜" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:199 msgid "Time" msgstr "시간" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/med-dialog.blp:61 data/ui/one-time-dialog.blp:49 msgid "Name" msgstr "이름" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:183 msgid "Dose" msgstr "복용량" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 msgid "Status" msgstr "상태" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 msgid "Time Confirmed" msgstr "확인 시간" #: src/utils/getHistoryExportFile.js:38 src/utils/getHistoryExportFile.js:117 #: src/editHistDialog.js:68 src/historyFactory.js:186 msgid "Missed" msgstr "놓친" #: src/utils/getHistoryExportFile.js:41 src/utils/getHistoryExportFile.js:121 #: src/historyFactory.js:183 data/ui/edit-hist-dialog.blp:111 msgid "Skipped" msgstr "건너뜀" #: src/utils/getHistoryExportFile.js:44 src/utils/getHistoryExportFile.js:55 #: src/utils/getHistoryExportFile.js:125 src/utils/getHistoryExportFile.js:138 #: src/editHistDialog.js:73 src/historyFactory.js:190 #: data/ui/edit-hist-dialog.blp:116 msgid "Confirmed" msgstr "확인됨" #: src/utils/getHistoryExportFile.js:52 src/utils/getHistoryExportFile.js:134 #: src/editHistDialog.js:56 src/historyFactory.js:178 msgid "Auto-Confirmed" msgstr "자동 확인됨" #: src/utils/getHistoryExportFile.js:55 src/utils/getHistoryExportFile.js:138 #: src/editHistDialog.js:74 msgid "Time Unknown" msgstr "시간 알 수 없음" #. TRANSLATORS: Context: 1 Pill at 19:00 #: src/utils/getTreatmentsExportFile.js:69 #, fuzzy #| msgid "Date" msgid "at" msgstr "날짜" #: src/utils/getTreatmentsExportFile.js:89 data/ui/med-dialog.blp:443 msgid "Notes" msgstr "메모" #: src/utils/getTreatmentsExportFile.js:96 src/utils/locale.js:37 #: src/treatmentsFactory.js:268 msgid "Daily" msgstr "매일" #: src/utils/getTreatmentsExportFile.js:102 src/medDialog.js:428 #: data/ui/med-dialog.blp:459 msgid "Day of Month" msgstr "월의 날짜" #. TRANSLATORS: Context: 2 day(s) on, 1 day(s) off #: src/utils/getTreatmentsExportFile.js:109 msgid "day(s) on" msgstr "" #. TRANSLATORS: Context: 2 day(s) on, 1 day(s) off #: src/utils/getTreatmentsExportFile.js:111 msgid "day(s) off" msgstr "" #: src/utils/getTreatmentsExportFile.js:122 src/todayFactory.js:41 #: src/treatmentsFactory.js:298 data/ui/med-dialog.blp:461 msgid "As Needed" msgstr "필요할 때" #: src/utils/getTreatmentsExportFile.js:132 data/ui/med-dialog.blp:764 msgid "Duration" msgstr "기간" #: src/utils/getTreatmentsExportFile.js:135 #, fuzzy #| msgid "Starts On" msgid "Started on" msgstr "시작일" #: src/utils/getTreatmentsExportFile.js:136 data/ui/med-dialog.blp:775 #, fuzzy #| msgid "Starts On" msgid "Start" msgstr "시작일" #: src/utils/getTreatmentsExportFile.js:138 src/treatmentsFactory.js:256 msgid "Ended on" msgstr "종료일" #: src/utils/getTreatmentsExportFile.js:138 data/ui/med-dialog.blp:817 #, fuzzy #| msgid "Ends On" msgid "End" msgstr "종료일" #: src/utils/getTreatmentsExportFile.js:173 src/utils/saveFiles.js:44 #: data/ui/window.blp:234 msgid "Treatments" msgstr "치료" #: src/utils/getTreatmentsExportFile.js:184 #, fuzzy #| msgctxt "shortcut window" #| msgid "General" msgid "Generated on" msgstr "일반" #: src/utils/getTreatmentsExportFile.js:187 msgid "Ongoing" msgstr "" #: src/utils/getTreatmentsExportFile.js:188 msgid "Non-scheduled" msgstr "" #: src/utils/getTreatmentsExportFile.js:189 msgid "Finished" msgstr "" #: src/utils/locale.js:33 msgid "Weekends" msgstr "주말" #: src/utils/locale.js:35 msgid "Weekdays" msgstr "평일" #: src/utils/saveFiles.js:22 data/ui/window.blp:156 msgid "History" msgstr "기록" #: src/editHistDialog.js:60 src/editHistDialog.js:89 src/editHistDialog.js:110 msgid "Confirmed At" msgstr "확인된 시간" #: src/editHistDialog.js:64 src/editHistDialog.js:114 msgid "Skipped At" msgstr "건너뛴 시간" #: src/historyFactory.js:47 msgid "Select to be Removed" msgstr "제거할 항목 선택" #. TRANSLATORS: "Your Name " #: src/main.js:69 msgid "translator-credits" msgstr "Diego Povliuk " #: src/main.js:73 msgid "Thanks to These Projects!" msgstr "이 프로젝트들에 감사드립니다!" #: src/medDialog.js:99 msgid "Edit Treatment" msgstr "치료 편집" #: src/medDialog.js:100 data/ui/edit-hist-dialog.blp:30 #: data/ui/preferences.blp:112 data/ui/preferences.blp:132 #: data/ui/refill-dialog.blp:67 msgid "Save" msgstr "저장" #: src/medDialog.js:114 msgid "Copy" msgstr "복사" #: src/medDialog.js:217 msgid "Add Dose" msgstr "복용량 추가" #: src/medDialog.js:419 msgid "Choose" msgstr "선택" #: src/medDialog.js:429 src/treatmentsFactory.js:274 msgid "Day" msgstr "날" #: src/medDialog.js:456 data/ui/med-dialog.blp:458 msgid "Specific Days" msgstr "특정 요일" #: src/medDialog.js:463 src/treatmentsFactory.js:295 data/ui/med-dialog.blp:460 msgid "Cycle" msgstr "주기" #: src/medDialog.js:467 data/ui/med-dialog.blp:452 msgid "Frequency" msgstr "빈도" #: src/medDialog.js:500 msgid "Empty Name" msgstr "이름이 비어 있습니다" #: src/medDialog.js:506 msgid "Empty Unit" msgstr "단위가 비어 있습니다" #: src/medDialog.js:513 msgid "Choose at Least One Day" msgstr "최소한 하루를 선택하세요" #: src/medDialog.js:527 src/oneTimeDialog.js:187 msgid "Name Already on Treatment List" msgstr "이름이 치료 목록에 이미 있습니다" #: src/medDialog.js:542 msgid "Duplicated Time" msgstr "중복된 시간" #: src/medDialog.js:582 msgid "Are You Sure?" msgstr "확실합니까?" #: src/medDialog.js:583 msgid "will be deleted" msgstr "삭제됩니다" #: src/medDialog.js:586 data/ui/edit-hist-dialog.blp:18 #: data/ui/med-dialog.blp:19 msgid "Cancel" msgstr "취소" #: src/medDialog.js:587 src/treatmentsFactory.js:128 data/ui/med-dialog.blp:865 msgid "Delete" msgstr "삭제" #: src/oneTimeDialog.js:110 msgid "New" msgstr "새로운" #: src/oneTimeDialog.js:121 data/ui/med-dialog.blp:189 #: data/ui/one-time-dialog.blp:178 msgid "Pill(s)" msgstr "알약" #: src/prefsDialog.js:63 msgid "Accept to allow running in the background and receive notifications" msgstr "백그라운드에서 실행하고 알림을 받으려면 수락하세요" #: src/prefsDialog.js:74 src/window.js:259 msgid "An Issue Has Occurred" msgstr "문제가 발생했습니다" #: src/prefsDialog.js:77 src/window.js:267 src/window.js:289 src/window.js:311 #: src/window.js:329 msgid "Close" msgstr "닫기" #: src/timeDoseRow.js:34 msgid "Remove Dose" msgstr "복용량 제거" #: src/timeDoseRow.js:40 data/ui/edit-hist-dialog.blp:90 #: data/ui/one-time-dialog.blp:210 msgid "Change Time" msgstr "시간 변경" #: src/todayFactory.js:134 msgid "Change Dose" msgstr "복용량 변경" #: src/treatmentsFactory.js:96 src/treatmentsFactory.js:126 #: data/ui/refill-dialog.blp:7 msgid "Refill" msgstr "재충전" #: src/treatmentsFactory.js:125 msgid "Edit" msgstr "편집" #: src/treatmentsFactory.js:127 msgid "Duplicate" msgstr "복제" #: src/treatmentsFactory.js:146 msgid "Options" msgstr "옵션" #. TRANSLATORS: keep the %d it's where the number goes #: src/treatmentsFactory.js:244 #, javascript-format msgid "%d Remaining" msgstr "%d 남은" #. TRANSLATORS: label for when duration is enabled #: src/treatmentsFactory.js:254 msgid "Starts on" msgstr "시작일" #: src/treatmentsFactory.js:255 msgid "Until" msgstr "까지" #: src/treatmentsFactory.js:283 src/treatmentsFactory.js:286 msgid "Next Dose" msgstr "다음 복용량" #: src/window.js:173 src/window.js:943 msgid "Reminder" msgstr "알림" #. TRANSLATORS: Notification text for when the inventory is low #: src/window.js:175 msgid "You have treatments low in stock" msgstr "재고가 부족한 치료가 있습니다" #: src/window.js:492 msgid "Show All" msgstr "모두 보기" #: src/window.js:515 msgid "Show Less" msgstr "덜 보기" #: src/window.js:648 msgid "No Results Found" msgstr "결과가 없습니다" #: src/window.js:648 src/window.js:1517 #, fuzzy #| msgid "History" msgid "No History" msgstr "기록" #: src/window.js:818 data/ui/window.blp:260 #, fuzzy #| msgid "Treatments" msgid "No Treatments" msgstr "치료" #: src/window.js:818 msgid "All Done for Today" msgstr "오늘은 모두 완료되었습니다" #: src/window.js:906 src/window.js:1090 data/ui/one-time-dialog.blp:285 #: data/ui/preferences.blp:73 msgid "Confirm" msgstr "확인" #: src/window.js:906 msgid "Confirm All" msgstr "모두 확인" #: src/window.js:907 data/ui/preferences.blp:84 data/ui/window.blp:146 msgid "Skip" msgstr "건너뛰기" #: src/window.js:907 msgid "Skip All" msgstr "모두 건너뛰기" #. TRANSLATORS: keep the %d it's where the number goes #: src/window.js:938 #, javascript-format msgid "and %d more" msgstr "그리고 %d개 더" #: src/window.js:1090 data/ui/one-time-dialog.blp:7 data/ui/window.blp:133 msgid "One-Time Entry" msgstr "일회성 입력" #: src/window.js:1295 data/ui/window.blp:353 msgid "Quit" msgstr "종료" #: data/ui/edit-hist-dialog.blp:7 msgid "Edit Entry" msgstr "항목 편집" #: data/ui/med-dialog.blp:7 msgid "New Treatment" msgstr "새 치료" #: data/ui/med-dialog.blp:31 data/ui/window.blp:283 msgid "Add" msgstr "추가" #: data/ui/med-dialog.blp:69 data/ui/one-time-dialog.blp:58 msgid "Color" msgstr "색상" #. TRANSLATORS: Tooltip for the colors (from Default until Purple) #: data/ui/med-dialog.blp:94 data/ui/one-time-dialog.blp:83 msgid "Default" msgstr "기본" #: data/ui/med-dialog.blp:106 data/ui/one-time-dialog.blp:95 msgid "Red" msgstr "빨간색" #: data/ui/med-dialog.blp:118 data/ui/one-time-dialog.blp:107 msgid "Orange" msgstr "주황색" #: data/ui/med-dialog.blp:130 data/ui/one-time-dialog.blp:119 msgid "Yellow" msgstr "노란색" #: data/ui/med-dialog.blp:142 data/ui/one-time-dialog.blp:131 msgid "Green" msgstr "녹색" #: data/ui/med-dialog.blp:154 data/ui/one-time-dialog.blp:143 msgid "Cyan" msgstr "시안색" #: data/ui/med-dialog.blp:166 data/ui/one-time-dialog.blp:155 msgid "Blue" msgstr "파란색" #: data/ui/med-dialog.blp:178 data/ui/one-time-dialog.blp:167 msgid "Purple" msgstr "보라색" #: data/ui/med-dialog.blp:188 data/ui/one-time-dialog.blp:177 msgid "Unit" msgstr "단위" #: data/ui/med-dialog.blp:197 msgid "Icon" msgstr "아이콘" #. TRANSLATORS: Tooltip for the icons (from Pill until Potion) #: data/ui/med-dialog.blp:226 msgid "Pill" msgstr "알약" #: data/ui/med-dialog.blp:242 msgid "Alternative Pill" msgstr "대체 알약" #: data/ui/med-dialog.blp:258 msgid "Capsule" msgstr "캡슐" #: data/ui/med-dialog.blp:274 msgid "Round Pill" msgstr "둥근 알약" #: data/ui/med-dialog.blp:290 msgid "Alternative Round Pill" msgstr "대체 둥근 알약" #: data/ui/med-dialog.blp:306 msgid "Ampoule" msgstr "앰플" #: data/ui/med-dialog.blp:322 msgid "Injection" msgstr "주사" #: data/ui/med-dialog.blp:338 msgid "Square Pill" msgstr "네모난 알약" #: data/ui/med-dialog.blp:354 msgid "Alternative Square Pill" msgstr "대체 사각형 알약" #: data/ui/med-dialog.blp:370 msgid "Triangle pill" msgstr "삼각형 알약" #: data/ui/med-dialog.blp:386 msgid "Alternative Triangle Pill" msgstr "대체 삼각형 알약" #: data/ui/med-dialog.blp:402 msgid "Bottle" msgstr "병" #: data/ui/med-dialog.blp:418 msgid "Drops" msgstr "액" #: data/ui/med-dialog.blp:434 msgid "Potion" msgstr "약물" #: data/ui/med-dialog.blp:457 msgid "Every Day" msgstr "매일" #: data/ui/med-dialog.blp:473 msgid "Choose Days" msgstr "요일 선택" #: data/ui/med-dialog.blp:572 msgid "Choose Day" msgstr "요일 선택" #: data/ui/med-dialog.blp:617 msgid "Change Cycle" msgstr "주기 변경" #: data/ui/med-dialog.blp:642 msgid "Days Active" msgstr "활성화된 날" #: data/ui/med-dialog.blp:656 msgid "Days Inactive" msgstr "비활성화된 날" #. TRANSLATORS: Day in cycle, try to keep it short #: data/ui/med-dialog.blp:671 msgid "Today is Cycle Day…" msgstr "오늘은 주기 날입니다…" #: data/ui/med-dialog.blp:694 msgid "Increase Notification Priority" msgstr "알림 우선순위 증가" #: data/ui/med-dialog.blp:695 msgid "Show in fullscreen mode or with 'Do Not Disturb' enabled" msgstr "" "알림이 전체 화면 모드로 표시되거나 '방해 금지'가 활성화되어 있어도 표시되도" "록 합니다" #: data/ui/med-dialog.blp:699 msgid "Recurring Notifications" msgstr "반복 알림" #: data/ui/med-dialog.blp:700 msgid "Renotify until it's confirmed or skipped" msgstr "확인되거나 건너뛰어질 때까지 재알림" #: data/ui/med-dialog.blp:705 msgid "Interval in Minutes" msgstr "간격 (분)" #: data/ui/med-dialog.blp:718 data/ui/refill-dialog.blp:36 msgid "Inventory" msgstr "재고" #: data/ui/med-dialog.blp:719 msgid "Manage your stock" msgstr "재고 관리" #: data/ui/med-dialog.blp:725 msgid "Current" msgstr "현재" #: data/ui/med-dialog.blp:738 msgid "Remind Me At" msgstr "나에게 알림" #: data/ui/med-dialog.blp:751 msgid "Refill Amount" msgstr "재충전량" #: data/ui/med-dialog.blp:765 msgid "Set start and end dates" msgstr "시작 및 종료 날짜 설정" #: data/ui/med-dialog.blp:785 data/ui/med-dialog.blp:827 #: data/ui/one-time-dialog.blp:243 msgid "Choose Date" msgstr "날짜 선택" #: data/ui/med-dialog.blp:855 msgid "Mark as Confirmed" msgstr "확인으로 표시" #: data/ui/med-dialog.blp:856 msgid "" "If not manually confirmed or skipped, it will be recorded as confirmed in " "history, reducing stock if enabled" msgstr "" "수동으로 확인되거나 건너뛰지 않으면 기록에 확인으로 기록되며, 활성화된 경우 " "재고가 줄어듭니다" #: data/ui/one-time-dialog.blp:44 msgid "From Treatment List" msgstr "치료 목록에서" #: data/ui/one-time-dialog.blp:182 msgid "Amount" msgstr "양" #: data/ui/preferences.blp:7 data/ui/window.blp:338 msgid "Preferences" msgstr "설정" #: data/ui/preferences.blp:17 msgid "Auto-Start at Login" msgstr "로그인 시 자동 시작" #: data/ui/preferences.blp:28 msgid "Auto-Clear History" msgstr "자동 기록 삭제" #: data/ui/preferences.blp:29 msgid "Keeps a maximum of 30 days" msgstr "최대 30일 유지" #: data/ui/preferences.blp:40 msgid "Low Stock Notification" msgstr "재고 부족 알림" #: data/ui/preferences.blp:41 msgid "Send reminders when treatments are low in stock" msgstr "치료 재고가 부족할 때 알림 전송" #: data/ui/preferences.blp:52 msgid "Notification Sound" msgstr "알림 소리" #: data/ui/preferences.blp:63 msgid "Notification Buttons" msgstr "알림 버튼" #: data/ui/preferences.blp:64 msgid "Show or hide confirm/skip" msgstr "확인/건너뛰기 표시 또는 숨기기" #: data/ui/preferences.blp:98 #, fuzzy #| msgid "Export History as CSV" msgid "Export History As" msgstr "CSV로 기록 내보내기" #: data/ui/preferences.blp:121 #, fuzzy #| msgid "Empty Treatments" msgid "Export Treatments As" msgstr "추가된 치료 없음" #: data/ui/shortcuts-dialog.blp:8 #, fuzzy #| msgctxt "shortcut window" #| msgid "Show Shortcuts" msgid "Shortcuts" msgstr "바로가기 표시" #: data/ui/shortcuts-dialog.blp:11 #, fuzzy #| msgid "Show/Hide 'As Needed'" msgctxt "shortcut window" msgid "Show/Hide 'As Needed'" msgstr "'필요할 때' 표시/숨기기" #: data/ui/shortcuts-dialog.blp:16 #, fuzzy #| msgid "One-Time Entry" msgctxt "shortcut window" msgid "New One-Time Entry" msgstr "일회성 입력" #: data/ui/shortcuts-dialog.blp:21 #, fuzzy #| msgid "New Treatment" msgctxt "shortcut window" msgid "Add New Treatment" msgstr "새 치료" #: data/ui/shortcuts-dialog.blp:26 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "바로가기 표시" #: data/ui/shortcuts-dialog.blp:31 msgctxt "shortcut window" msgid "Quit" msgstr "종료" #: data/ui/window.blp:23 msgid "Show/Hide 'As Needed'" msgstr "'필요할 때' 표시/숨기기" #: data/ui/window.blp:31 msgid "Search" msgstr "검색" #: data/ui/window.blp:39 #, fuzzy #| msgid "Treatments" msgid "Sort Treatments" msgstr "치료" #: data/ui/window.blp:48 msgid "Main Menu" msgstr "메인 메뉴" #: data/ui/window.blp:61 msgid "Search…" msgstr "검색…" #: data/ui/window.blp:71 msgid "Today" msgstr "오늘" #: data/ui/window.blp:117 data/ui/window.blp:210 msgid "Unselect" msgstr "선택 해제" #: data/ui/window.blp:220 msgid "Remove Entries" msgstr "항목 제거" #: data/ui/window.blp:300 msgid "Name Ascending" msgstr "" #: data/ui/window.blp:306 msgid "Remaining Stock (Lowest First)" msgstr "" #: data/ui/window.blp:312 msgid "Remaining Stock (Highest First)" msgstr "" #: data/ui/window.blp:318 #, fuzzy #| msgid "As Needed" msgid "As Needed Last" msgstr "필요할 때" #: data/ui/window.blp:324 #, fuzzy #| msgid "Ended on" msgid "Ended Last" msgstr "종료일" #: data/ui/window.blp:330 #, fuzzy #| msgid "As Needed" msgid "As Needed/Ended Last" msgstr "필요할 때" #: data/ui/window.blp:343 #, fuzzy #| msgctxt "shortcut window" #| msgid "Show Shortcuts" msgid "Keyboard Shortcuts" msgstr "바로가기 표시" #: data/ui/window.blp:348 msgid "About Dosage" msgstr "복용량 정보" #~ msgid "Empty Treatments" #~ msgstr "추가된 치료 없음" #~ msgid "Empty History" #~ msgstr "기록이 비어 있습니다" #~ msgid "No Treatments Added" #~ msgstr "치료법 추가 안됨" #~ msgctxt "shortcut window" #~ msgid "General" #~ msgstr "일반" #~ msgctxt "shortcut window" #~ msgid "Preferences" #~ msgstr "선호사항" #~ msgid "After meal" #~ msgstr "식사 후" #~ msgid "Refill Stock" #~ msgstr "재고 재충전" #~ msgid "Low Stock" #~ msgstr "재고 부족" #~ msgid "Form" #~ msgstr "형태" #~ msgid "Color and icon" #~ msgstr "색상 및 아이콘" #~ msgid "Time and amount" #~ msgstr "시간 및 양" #~ msgid "Restore" #~ msgstr "복원" #~ msgid "New entry" #~ msgstr "새 항목" diegopvlk-Dosage-bd9126a/po/meson.build000066400000000000000000000000471514145341100200700ustar00rootroot00000000000000i18n.gettext('dosage', preset: 'glib') diegopvlk-Dosage-bd9126a/po/nb_NO.po000066400000000000000000000546071514145341100172740ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) 2023 Diego Povliuk # This file is distributed under the same license as the io.github.diegopvlk.Dosage package. # Diego Povliuk , 2023. # msgid "" msgstr "" "Project-Id-Version: io.github.diegopvlk.Dosage\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-12-19 16:12-0300\n" "PO-Revision-Date: 2025-02-10 23:31+0000\n" "Last-Translator: Diego Povliuk \n" "Language-Team: Norwegian Bokmål \n" "Language: nb_NO\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 5.10-dev\n" #. TRANSLATORS: App name, translate to your language and follow the capitalization #: data/io.github.diegopvlk.Dosage.appdata.xml.in:20 #: data/io.github.diegopvlk.Dosage.desktop.in:3 #: src/utils/getTreatmentsExportFile.js:173 src/utils/saveFiles.js:22 #: src/utils/saveFiles.js:44 src/main.js:60 src/window.js:1060 #: data/ui/window.blp:6 msgid "Dosage" msgstr "Dosage" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:21 msgid "Keep track of your treatments" msgstr "Hold øye med behandlingene dine" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:24 msgid "" "Easily manage and track treatments with Dosage: notifications, history, " "multiple doses, flexible frequency, customization, stock monitoring, and " "duration control" msgstr "" "Lett administrer behandlinger med Dosage: varsler, historikk, flere doser, " "fleksibel frekvens, tilpasning, lagerovervåking, og varighetskontroll" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:25 msgid "Features:" msgstr "Funksjoner:" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:27 msgid "Notifications — Get reminders at the right time" msgstr "Varsler — få påminnelser til rett tid" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:28 msgid "History — See which medications you took, skipped or missed" msgstr "" "Historikk — ta rede på hvilken medisin du har tatt, hoppet over, eller mist" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:29 msgid "Dosage management — Multiple doses with different times" msgstr "Dosehåndtering — flere doser med forskjellige tider" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:30 msgid "" "Frequency modes — Every day, specific days, cycle or just when necessary" msgstr "Frekvensmodus — hver dag, spesifikke dager, eller syklus ved behov" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:31 msgid "Color and icon — Give a shape for your treatment" msgstr "Farge og ikon — gi behandlingen din en form" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:32 msgid "Inventory tracking — Monitor your stock and get reminded when it's low" msgstr "" "Inventar og sporing — hold øye med lageret og få påminnelse når det er lite " "igjen" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:33 msgid "Duration — Define the start and end dates" msgstr "Varighet — definer start- og sluttdatoer" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:44 msgid "Dosage today window in light theme" msgstr "I dag-vinduet med lys drakt" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:49 msgid "Dosage preferences window in light theme" msgstr "Brukervalgvindu med lys drakt" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:54 msgid "Dosage edit treatment window in light theme" msgstr "Behandlingsredigeringsvinduet med lys drakt" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:59 msgid "Dosage today window in dark theme" msgstr "I dag-vinduet med mørk drakt" #. TRANSLATORS: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/io.github.diegopvlk.Dosage.desktop.in:10 msgid "Medication;Tracker;Reminder;Today;Treatments;Pill;Drug;Remedy;" msgstr "Medisin;Sporing;Påminnelse;Idag;Behandlinger;Tablett;Legemiddel;Løsning;" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:232 msgid "Date" msgstr "Dato" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:199 msgid "Time" msgstr "Tid" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/med-dialog.blp:61 data/ui/one-time-dialog.blp:49 msgid "Name" msgstr "Navn" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:183 msgid "Dose" msgstr "Dose" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 msgid "Status" msgstr "Status" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 msgid "Time Confirmed" msgstr "Bekreftet Tid" #: src/utils/getHistoryExportFile.js:38 src/utils/getHistoryExportFile.js:117 #: src/editHistDialog.js:68 src/historyFactory.js:186 msgid "Missed" msgstr "Glemt" #: src/utils/getHistoryExportFile.js:41 src/utils/getHistoryExportFile.js:121 #: src/historyFactory.js:183 data/ui/edit-hist-dialog.blp:111 msgid "Skipped" msgstr "Hoppet over" #: src/utils/getHistoryExportFile.js:44 src/utils/getHistoryExportFile.js:55 #: src/utils/getHistoryExportFile.js:125 src/utils/getHistoryExportFile.js:138 #: src/editHistDialog.js:73 src/historyFactory.js:190 #: data/ui/edit-hist-dialog.blp:116 msgid "Confirmed" msgstr "Bekreftet" #: src/utils/getHistoryExportFile.js:52 src/utils/getHistoryExportFile.js:134 #: src/editHistDialog.js:56 src/historyFactory.js:178 msgid "Auto-Confirmed" msgstr "Automatisk Bekreftet" #: src/utils/getHistoryExportFile.js:55 src/utils/getHistoryExportFile.js:138 #: src/editHistDialog.js:74 msgid "Time Unknown" msgstr "Ukjent Tid" #. TRANSLATORS: Context: 1 Pill at 19:00 #: src/utils/getTreatmentsExportFile.js:69 #, fuzzy #| msgid "Date" msgid "at" msgstr "Dato" #: src/utils/getTreatmentsExportFile.js:89 data/ui/med-dialog.blp:443 msgid "Notes" msgstr "Notater" #: src/utils/getTreatmentsExportFile.js:96 src/utils/locale.js:37 #: src/treatmentsFactory.js:268 msgid "Daily" msgstr "Daglig" #: src/utils/getTreatmentsExportFile.js:102 src/medDialog.js:428 #: data/ui/med-dialog.blp:459 msgid "Day of Month" msgstr "Dag i Måneden" #. TRANSLATORS: Context: 2 day(s) on, 1 day(s) off #: src/utils/getTreatmentsExportFile.js:109 msgid "day(s) on" msgstr "" #. TRANSLATORS: Context: 2 day(s) on, 1 day(s) off #: src/utils/getTreatmentsExportFile.js:111 msgid "day(s) off" msgstr "" #: src/utils/getTreatmentsExportFile.js:122 src/todayFactory.js:41 #: src/treatmentsFactory.js:298 data/ui/med-dialog.blp:461 msgid "As Needed" msgstr "Ved Behov" #: src/utils/getTreatmentsExportFile.js:132 data/ui/med-dialog.blp:764 msgid "Duration" msgstr "Varighet" #: src/utils/getTreatmentsExportFile.js:135 #, fuzzy #| msgid "Starts On" msgid "Started on" msgstr "Starter" #: src/utils/getTreatmentsExportFile.js:136 data/ui/med-dialog.blp:775 #, fuzzy #| msgid "Starts On" msgid "Start" msgstr "Starter" #: src/utils/getTreatmentsExportFile.js:138 src/treatmentsFactory.js:256 msgid "Ended on" msgstr "Sluttet på" #: src/utils/getTreatmentsExportFile.js:138 data/ui/med-dialog.blp:817 #, fuzzy #| msgid "Ends On" msgid "End" msgstr "Slutter" #: src/utils/getTreatmentsExportFile.js:173 src/utils/saveFiles.js:44 #: data/ui/window.blp:234 msgid "Treatments" msgstr "Behandlinger" #: src/utils/getTreatmentsExportFile.js:184 #, fuzzy #| msgctxt "shortcut window" #| msgid "General" msgid "Generated on" msgstr "Generelt" #: src/utils/getTreatmentsExportFile.js:187 msgid "Ongoing" msgstr "" #: src/utils/getTreatmentsExportFile.js:188 msgid "Non-scheduled" msgstr "" #: src/utils/getTreatmentsExportFile.js:189 msgid "Finished" msgstr "" #: src/utils/locale.js:33 msgid "Weekends" msgstr "Helger" #: src/utils/locale.js:35 msgid "Weekdays" msgstr "Ukedager" #: src/utils/saveFiles.js:22 data/ui/window.blp:156 msgid "History" msgstr "Historikk" #: src/editHistDialog.js:60 src/editHistDialog.js:89 src/editHistDialog.js:110 msgid "Confirmed At" msgstr "Bekreftet Kl" #: src/editHistDialog.js:64 src/editHistDialog.js:114 msgid "Skipped At" msgstr "Hoppet Over Kl" #: src/historyFactory.js:47 msgid "Select to be Removed" msgstr "Velg for å Fjernes" #. TRANSLATORS: "Your Name " #: src/main.js:69 msgid "translator-credits" msgstr "Allan Nordhøy " #: src/main.js:73 msgid "Thanks to These Projects!" msgstr "Takk til Disse Prosjektene!" #: src/medDialog.js:99 msgid "Edit Treatment" msgstr "Rediger Behandling" #: src/medDialog.js:100 data/ui/edit-hist-dialog.blp:30 #: data/ui/preferences.blp:112 data/ui/preferences.blp:132 #: data/ui/refill-dialog.blp:67 msgid "Save" msgstr "Lagre" #: src/medDialog.js:114 msgid "Copy" msgstr "Kopiere" #: src/medDialog.js:217 msgid "Add Dose" msgstr "Legg til Dose" #: src/medDialog.js:419 msgid "Choose" msgstr "Velg" #: src/medDialog.js:429 src/treatmentsFactory.js:274 msgid "Day" msgstr "Dag" #: src/medDialog.js:456 data/ui/med-dialog.blp:458 msgid "Specific Days" msgstr "Spesifikke Dager" #: src/medDialog.js:463 src/treatmentsFactory.js:295 data/ui/med-dialog.blp:460 msgid "Cycle" msgstr "Syklus" #: src/medDialog.js:467 data/ui/med-dialog.blp:452 msgid "Frequency" msgstr "Frekvens" #: src/medDialog.js:500 msgid "Empty Name" msgstr "Tomt Navn" #: src/medDialog.js:506 msgid "Empty Unit" msgstr "Tom Enhet" #: src/medDialog.js:513 msgid "Choose at Least One Day" msgstr "Velg Minst Én Dag" #: src/medDialog.js:527 src/oneTimeDialog.js:187 msgid "Name Already on Treatment List" msgstr "Navn Er Allerede på Behandlingslisten" #: src/medDialog.js:542 msgid "Duplicated Time" msgstr "Duplisert Tid" #: src/medDialog.js:582 msgid "Are You Sure?" msgstr "Er Du Sikker?" #: src/medDialog.js:583 msgid "will be deleted" msgstr "vil bli slettet" #: src/medDialog.js:586 data/ui/edit-hist-dialog.blp:18 #: data/ui/med-dialog.blp:19 msgid "Cancel" msgstr "Avbryt" #: src/medDialog.js:587 src/treatmentsFactory.js:128 data/ui/med-dialog.blp:865 msgid "Delete" msgstr "Slett" #: src/oneTimeDialog.js:110 msgid "New" msgstr "Ny" #: src/oneTimeDialog.js:121 data/ui/med-dialog.blp:189 #: data/ui/one-time-dialog.blp:178 msgid "Pill(s)" msgstr "Pille(r)" #: src/prefsDialog.js:63 msgid "Accept to allow running in the background and receive notifications" msgstr "Godta for å tillate kjøring i bakgrunnen og motta varsler" #: src/prefsDialog.js:74 src/window.js:259 msgid "An Issue Has Occurred" msgstr "Et Problem Har Oppstått" #: src/prefsDialog.js:77 src/window.js:267 src/window.js:289 src/window.js:311 #: src/window.js:329 msgid "Close" msgstr "Lukk" #: src/timeDoseRow.js:34 msgid "Remove Dose" msgstr "Fjern Dose" #: src/timeDoseRow.js:40 data/ui/edit-hist-dialog.blp:90 #: data/ui/one-time-dialog.blp:210 msgid "Change Time" msgstr "Endre Tid" #: src/todayFactory.js:134 msgid "Change Dose" msgstr "Endre Dose" #: src/treatmentsFactory.js:96 src/treatmentsFactory.js:126 #: data/ui/refill-dialog.blp:7 msgid "Refill" msgstr "Fyll På" #: src/treatmentsFactory.js:125 msgid "Edit" msgstr "Rediger" #: src/treatmentsFactory.js:127 msgid "Duplicate" msgstr "Dupliser" #: src/treatmentsFactory.js:146 msgid "Options" msgstr "Alternativer" #. TRANSLATORS: keep the %d it's where the number goes #: src/treatmentsFactory.js:244 #, javascript-format msgid "%d Remaining" msgstr "%d Gjenstående" #. TRANSLATORS: label for when duration is enabled #: src/treatmentsFactory.js:254 msgid "Starts on" msgstr "Starter" #: src/treatmentsFactory.js:255 msgid "Until" msgstr "Til" #: src/treatmentsFactory.js:283 src/treatmentsFactory.js:286 msgid "Next Dose" msgstr "Neste Dose" #: src/window.js:173 src/window.js:943 msgid "Reminder" msgstr "Påminnelse" #. TRANSLATORS: Notification text for when the inventory is low #: src/window.js:175 msgid "You have treatments low in stock" msgstr "Du har behandlinger med manko på beholdning" #: src/window.js:492 msgid "Show All" msgstr "Vis Alt" #: src/window.js:515 msgid "Show Less" msgstr "Vis Mindre" #: src/window.js:648 msgid "No Results Found" msgstr "Ingen Resultater Funnet" #: src/window.js:648 src/window.js:1517 #, fuzzy #| msgid "History" msgid "No History" msgstr "Historikk" #: src/window.js:818 data/ui/window.blp:260 #, fuzzy #| msgid "Treatments" msgid "No Treatments" msgstr "Behandlinger" #: src/window.js:818 msgid "All Done for Today" msgstr "Ferdig For I Dag" #: src/window.js:906 src/window.js:1090 data/ui/one-time-dialog.blp:285 #: data/ui/preferences.blp:73 msgid "Confirm" msgstr "Bekreft" #: src/window.js:906 msgid "Confirm All" msgstr "Bekreft Alle" #: src/window.js:907 data/ui/preferences.blp:84 data/ui/window.blp:146 msgid "Skip" msgstr "Hopp Over" #: src/window.js:907 msgid "Skip All" msgstr "Hopp Over Alle" #. TRANSLATORS: keep the %d it's where the number goes #: src/window.js:938 #, javascript-format msgid "and %d more" msgstr "og %d til" #: src/window.js:1090 data/ui/one-time-dialog.blp:7 data/ui/window.blp:133 msgid "One-Time Entry" msgstr "Engangsoppføring" #: src/window.js:1295 data/ui/window.blp:353 msgid "Quit" msgstr "Avslutt" #: data/ui/edit-hist-dialog.blp:7 msgid "Edit Entry" msgstr "Rediger Oppføring" #: data/ui/med-dialog.blp:7 msgid "New Treatment" msgstr "Ny Behandling" #: data/ui/med-dialog.blp:31 data/ui/window.blp:283 msgid "Add" msgstr "Legg til" #: data/ui/med-dialog.blp:69 data/ui/one-time-dialog.blp:58 msgid "Color" msgstr "Farge" #. TRANSLATORS: Tooltip for the colors (from Default until Purple) #: data/ui/med-dialog.blp:94 data/ui/one-time-dialog.blp:83 msgid "Default" msgstr "Forvalg" #: data/ui/med-dialog.blp:106 data/ui/one-time-dialog.blp:95 msgid "Red" msgstr "Rød" #: data/ui/med-dialog.blp:118 data/ui/one-time-dialog.blp:107 msgid "Orange" msgstr "Oransje" #: data/ui/med-dialog.blp:130 data/ui/one-time-dialog.blp:119 msgid "Yellow" msgstr "Gul" #: data/ui/med-dialog.blp:142 data/ui/one-time-dialog.blp:131 msgid "Green" msgstr "Grønn" #: data/ui/med-dialog.blp:154 data/ui/one-time-dialog.blp:143 msgid "Cyan" msgstr "Cyanblå" #: data/ui/med-dialog.blp:166 data/ui/one-time-dialog.blp:155 msgid "Blue" msgstr "Blå" #: data/ui/med-dialog.blp:178 data/ui/one-time-dialog.blp:167 msgid "Purple" msgstr "Lilla" #: data/ui/med-dialog.blp:188 data/ui/one-time-dialog.blp:177 msgid "Unit" msgstr "Enhet" #: data/ui/med-dialog.blp:197 msgid "Icon" msgstr "Ikon" #. TRANSLATORS: Tooltip for the icons (from Pill until Potion) #: data/ui/med-dialog.blp:226 msgid "Pill" msgstr "Pille" #: data/ui/med-dialog.blp:242 msgid "Alternative Pill" msgstr "Alternativ Pille" #: data/ui/med-dialog.blp:258 msgid "Capsule" msgstr "Kapsel" #: data/ui/med-dialog.blp:274 msgid "Round Pill" msgstr "Rund Pille" #: data/ui/med-dialog.blp:290 msgid "Alternative Round Pill" msgstr "Alternativ Rund Pille" #: data/ui/med-dialog.blp:306 msgid "Ampoule" msgstr "Ampull" #: data/ui/med-dialog.blp:322 msgid "Injection" msgstr "Injeksjon" #: data/ui/med-dialog.blp:338 msgid "Square Pill" msgstr "Firkantig pille" #: data/ui/med-dialog.blp:354 msgid "Alternative Square Pill" msgstr "Alternativ Firkantig Pille" #: data/ui/med-dialog.blp:370 msgid "Triangle pill" msgstr "Trekantet pille" #: data/ui/med-dialog.blp:386 msgid "Alternative Triangle Pill" msgstr "Alternativ Trekantet Pille" #: data/ui/med-dialog.blp:402 msgid "Bottle" msgstr "Flaske" #: data/ui/med-dialog.blp:418 msgid "Drops" msgstr "Dråper" #: data/ui/med-dialog.blp:434 msgid "Potion" msgstr "Drikke" #: data/ui/med-dialog.blp:457 msgid "Every Day" msgstr "Hver Dag" #: data/ui/med-dialog.blp:473 msgid "Choose Days" msgstr "Velg Dager" #: data/ui/med-dialog.blp:572 msgid "Choose Day" msgstr "Velg Dag" #: data/ui/med-dialog.blp:617 msgid "Change Cycle" msgstr "Endre Syklusen" #: data/ui/med-dialog.blp:642 msgid "Days Active" msgstr "Dager Aktiv" #: data/ui/med-dialog.blp:656 msgid "Days Inactive" msgstr "Dager Inaktiv" #. TRANSLATORS: Day in cycle, try to keep it short #: data/ui/med-dialog.blp:671 msgid "Today is Cycle Day…" msgstr "I dag er syklusdag …" #: data/ui/med-dialog.blp:694 msgid "Increase Notification Priority" msgstr "Øk Merknadsprioritet" #: data/ui/med-dialog.blp:695 msgid "Show in fullscreen mode or with 'Do Not Disturb' enabled" msgstr "" "Gjør at varselet vises i fullskjermmodus eller selv om 'Ikke forstyrr' er " "aktivert" #: data/ui/med-dialog.blp:699 msgid "Recurring Notifications" msgstr "Gjentatte Varsler" #: data/ui/med-dialog.blp:700 msgid "Renotify until it's confirmed or skipped" msgstr "Gi beskjed på nytt til det er bekreftet eller hoppet over" #: data/ui/med-dialog.blp:705 msgid "Interval in Minutes" msgstr "Intervall i Minutter" #: data/ui/med-dialog.blp:718 data/ui/refill-dialog.blp:36 msgid "Inventory" msgstr "Inventar" #: data/ui/med-dialog.blp:719 msgid "Manage your stock" msgstr "Håndter din beholdning" #: data/ui/med-dialog.blp:725 msgid "Current" msgstr "Nåværende" #: data/ui/med-dialog.blp:738 msgid "Remind Me At" msgstr "Minn Meg På Dette" #: data/ui/med-dialog.blp:751 msgid "Refill Amount" msgstr "Påfyllingsmengde" #: data/ui/med-dialog.blp:765 msgid "Set start and end dates" msgstr "Angi start- og sluttdato" #: data/ui/med-dialog.blp:785 data/ui/med-dialog.blp:827 #: data/ui/one-time-dialog.blp:243 msgid "Choose Date" msgstr "Velg Dato" #: data/ui/med-dialog.blp:855 msgid "Mark as Confirmed" msgstr "Merk som Bekreftet" #: data/ui/med-dialog.blp:856 msgid "" "If not manually confirmed or skipped, it will be recorded as confirmed in " "history, reducing stock if enabled" msgstr "" "Hvis den ikke bekreftes manuelt eller hoppes over, vil den bli registrert " "som bekreftet i historikken, og redusere lageret hvis det er aktivert" #: data/ui/one-time-dialog.blp:44 msgid "From Treatment List" msgstr "Fra Behandlingsliste" #: data/ui/one-time-dialog.blp:182 msgid "Amount" msgstr "Mengde" #: data/ui/preferences.blp:7 data/ui/window.blp:338 msgid "Preferences" msgstr "Innstillinger" #: data/ui/preferences.blp:17 msgid "Auto-Start at Login" msgstr "Autostart Ved Innlogging" #: data/ui/preferences.blp:28 msgid "Auto-Clear History" msgstr "Automatisk Slett Historikk" #: data/ui/preferences.blp:29 msgid "Keeps a maximum of 30 days" msgstr "Beholder maksimalt 30 dager" #: data/ui/preferences.blp:40 msgid "Low Stock Notification" msgstr "Lav Lagerbeholdning Varsling" #: data/ui/preferences.blp:41 msgid "Send reminders when treatments are low in stock" msgstr "Send påminnelser når behandlinger har lav lagerbeholdning" #: data/ui/preferences.blp:52 msgid "Notification Sound" msgstr "Varsellyd" #: data/ui/preferences.blp:63 msgid "Notification Buttons" msgstr "Varselknapper" #: data/ui/preferences.blp:64 msgid "Show or hide confirm/skip" msgstr "Vis eller skjul bekreft/hopp over" #: data/ui/preferences.blp:98 #, fuzzy #| msgid "Export History as CSV" msgid "Export History As" msgstr "Eksporter Historikk som CSV" #: data/ui/preferences.blp:121 #, fuzzy #| msgid "Empty Treatments" msgid "Export Treatments As" msgstr "Tomme Behandlinger" #: data/ui/shortcuts-dialog.blp:8 #, fuzzy #| msgctxt "shortcut window" #| msgid "Show Shortcuts" msgid "Shortcuts" msgstr "Vis tastatursnarveier" #: data/ui/shortcuts-dialog.blp:11 #, fuzzy #| msgid "Show/Hide 'As Needed'" msgctxt "shortcut window" msgid "Show/Hide 'As Needed'" msgstr "Vis/Skjul 'Ved Behov'" #: data/ui/shortcuts-dialog.blp:16 #, fuzzy #| msgid "One-Time Entry" msgctxt "shortcut window" msgid "New One-Time Entry" msgstr "Engangsoppføring" #: data/ui/shortcuts-dialog.blp:21 #, fuzzy #| msgid "New Treatment" msgctxt "shortcut window" msgid "Add New Treatment" msgstr "Ny Behandling" #: data/ui/shortcuts-dialog.blp:26 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Vis tastatursnarveier" #: data/ui/shortcuts-dialog.blp:31 msgctxt "shortcut window" msgid "Quit" msgstr "Avslutt" #: data/ui/window.blp:23 msgid "Show/Hide 'As Needed'" msgstr "Vis/Skjul 'Ved Behov'" #: data/ui/window.blp:31 msgid "Search" msgstr "Søk" #: data/ui/window.blp:39 #, fuzzy #| msgid "Treatments" msgid "Sort Treatments" msgstr "Behandlinger" #: data/ui/window.blp:48 msgid "Main Menu" msgstr "Hovedmeny" #: data/ui/window.blp:61 msgid "Search…" msgstr "Søk…" #: data/ui/window.blp:71 msgid "Today" msgstr "I dag" #: data/ui/window.blp:117 data/ui/window.blp:210 msgid "Unselect" msgstr "Fjern Valg" #: data/ui/window.blp:220 msgid "Remove Entries" msgstr "Fjern Oppføringer" #: data/ui/window.blp:300 msgid "Name Ascending" msgstr "" #: data/ui/window.blp:306 msgid "Remaining Stock (Lowest First)" msgstr "" #: data/ui/window.blp:312 msgid "Remaining Stock (Highest First)" msgstr "" #: data/ui/window.blp:318 #, fuzzy #| msgid "As Needed" msgid "As Needed Last" msgstr "Ved Behov" #: data/ui/window.blp:324 #, fuzzy #| msgid "Ended on" msgid "Ended Last" msgstr "Sluttet på" #: data/ui/window.blp:330 #, fuzzy #| msgid "As Needed" msgid "As Needed/Ended Last" msgstr "Ved Behov" #: data/ui/window.blp:343 #, fuzzy #| msgctxt "shortcut window" #| msgid "Show Shortcuts" msgid "Keyboard Shortcuts" msgstr "Vis tastatursnarveier" #: data/ui/window.blp:348 msgid "About Dosage" msgstr "Om Dosage" #~ msgid "Empty Treatments" #~ msgstr "Tomme Behandlinger" #~ msgid "Empty History" #~ msgstr "Tom Historikk" #~ msgid "No Treatments Added" #~ msgstr "Ingen Behandlinger Lagt Til" #~ msgctxt "shortcut window" #~ msgid "General" #~ msgstr "Generelt" #~ msgctxt "shortcut window" #~ msgid "Preferences" #~ msgstr "Innstillinger" #~ msgid "After meal" #~ msgstr "Etter måltid" #~ msgid "Refill Stock" #~ msgstr "Fyll På Lager" #~ msgid "Low Stock" #~ msgstr "Lav Beholdning" #~ msgid "Form" #~ msgstr "Form" #~ msgid "Color and icon" #~ msgstr "Farge og ikon" #~ msgid "Time and amount" #~ msgstr "Tid og mengde" #~ msgid "Restore" #~ msgstr "Gjenopprett" #~ msgid "New entry" #~ msgstr "Ny oppføring" #~ msgid "Name already exists" #~ msgstr "Navnet finnes allerede" #~ msgid "Add to history" #~ msgstr "Legg til i historikk" #~ msgid "medication" #~ msgstr "medisin" #~ msgid "tracker" #~ msgstr "sporingsverktøy" #~ msgid "treatments" #~ msgstr "behandlinger" #~ msgid "pill" #~ msgstr "tablett" #~ msgid "drug" #~ msgstr "legemiddel" #~ msgid "remedy" #~ msgstr "løsning" #~ msgid "Su" #~ msgstr "Sø" #~ msgid "Mo" #~ msgstr "Ma" #~ msgid "Tu" #~ msgstr "Ti" #~ msgid "We" #~ msgstr "On" #~ msgid "Th" #~ msgstr "To" #~ msgid "Fr" #~ msgstr "Fr" #~ msgid "Sa" #~ msgstr "Lø" #~ msgid "Sunday" #~ msgstr "Søndag" #~ msgid "Monday" #~ msgstr "Mandag" #~ msgid "Tuesday" #~ msgstr "Tirsdag" #~ msgid "Wednesday" #~ msgstr "Onsdag" #~ msgid "Thursday" #~ msgstr "Torsdag" #~ msgid "Friday" #~ msgstr "Fredag" #~ msgid "Saturday" #~ msgstr "Lørdag" #~ msgid "About" #~ msgstr "Om" diegopvlk-Dosage-bd9126a/po/nl.po000066400000000000000000000552511514145341100167060ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) 2023 Diego Povliuk # This file is distributed under the license GPLv3-or-later. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: io.github.diegopvlk.Dosage\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-12-19 16:12-0300\n" "PO-Revision-Date: 2025-11-28 19:27+0000\n" "Last-Translator: Ralf Z \n" "Language-Team: Dutch \n" "Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 5.15-dev\n" #. TRANSLATORS: App name, translate to your language and follow the capitalization #: data/io.github.diegopvlk.Dosage.appdata.xml.in:20 #: data/io.github.diegopvlk.Dosage.desktop.in:3 #: src/utils/getTreatmentsExportFile.js:173 src/utils/saveFiles.js:22 #: src/utils/saveFiles.js:44 src/main.js:60 src/window.js:1060 #: data/ui/window.blp:6 msgid "Dosage" msgstr "Dosering" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:21 msgid "Keep track of your treatments" msgstr "Houd uw medicatie bij" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:24 msgid "" "Easily manage and track treatments with Dosage: notifications, history, " "multiple doses, flexible frequency, customization, stock monitoring, and " "duration control" msgstr "" "Houd uw medicatie bij met Dosering: meldingen, geschiedenis, meerdere " "doseringen, flexibele innametijden, aanpassingsmogelijkheden, voorraadbeheer " "en werkingstijden" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:25 msgid "Features:" msgstr "Kenmerken:" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:27 msgid "Notifications — Get reminders at the right time" msgstr "Meldingen — Ontvang meldingen op de innametijden" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:28 msgid "History — See which medications you took, skipped or missed" msgstr "" "Geschiedenis — Bekijk welke medicatie u heeft ingenomen, gemist of " "overgeslagen" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:29 msgid "Dosage management — Multiple doses with different times" msgstr "Doseringsbeheer — Meerdere doseringen op verschillende tijdstippen" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:30 msgid "" "Frequency modes — Every day, specific days, cycle or just when necessary" msgstr "Innamemomenten — Iedere dag, bepaalde dagen of alleen indien nodig" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:31 msgid "Color and icon — Give a shape for your treatment" msgstr "Kleur en pictogram — Voorzie medicatie van een bepaalde vorm en stijl" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:32 msgid "Inventory tracking — Monitor your stock and get reminded when it's low" msgstr "" "Voorraadbeheer — Houd uw voorraad bij en ontvang een melding als de voorraad " "op dreigt te raken" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:33 msgid "Duration — Define the start and end dates" msgstr "Duur — Geef de begin- en einddata aan" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:44 msgid "Dosage today window in light theme" msgstr "Vandaag-scherm (licht thema)" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:49 msgid "Dosage preferences window in light theme" msgstr "Doseringsvoorkeurenvenster in licht thema" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:54 msgid "Dosage edit treatment window in light theme" msgstr "Bewerkscherm (licht thema)" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:59 msgid "Dosage today window in dark theme" msgstr "Vandaag-scherm (donker thema)" #. TRANSLATORS: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/io.github.diegopvlk.Dosage.desktop.in:10 msgid "Medication;Tracker;Reminder;Today;Treatments;Pill;Drug;Remedy;" msgstr "Medicatie;Bijhouden;Herinnering;Vandaag;Behandelingen;Pil;Medicijn;Remedie;" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:232 msgid "Date" msgstr "Datum" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:199 msgid "Time" msgstr "Tijd" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/med-dialog.blp:61 data/ui/one-time-dialog.blp:49 msgid "Name" msgstr "Naam" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:183 msgid "Dose" msgstr "Dosis" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 msgid "Status" msgstr "Status" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 msgid "Time Confirmed" msgstr "Tijd Bevestigd" #: src/utils/getHistoryExportFile.js:38 src/utils/getHistoryExportFile.js:117 #: src/editHistDialog.js:68 src/historyFactory.js:186 msgid "Missed" msgstr "Vergeten" #: src/utils/getHistoryExportFile.js:41 src/utils/getHistoryExportFile.js:121 #: src/historyFactory.js:183 data/ui/edit-hist-dialog.blp:111 msgid "Skipped" msgstr "Overgeslagen" #: src/utils/getHistoryExportFile.js:44 src/utils/getHistoryExportFile.js:55 #: src/utils/getHistoryExportFile.js:125 src/utils/getHistoryExportFile.js:138 #: src/editHistDialog.js:73 src/historyFactory.js:190 #: data/ui/edit-hist-dialog.blp:116 msgid "Confirmed" msgstr "Bevestigd" #: src/utils/getHistoryExportFile.js:52 src/utils/getHistoryExportFile.js:134 #: src/editHistDialog.js:56 src/historyFactory.js:178 msgid "Auto-Confirmed" msgstr "Automatisch Bevestigd" #: src/utils/getHistoryExportFile.js:55 src/utils/getHistoryExportFile.js:138 #: src/editHistDialog.js:74 msgid "Time Unknown" msgstr "Tijd Onbekend" #. TRANSLATORS: Context: 1 Pill at 19:00 #: src/utils/getTreatmentsExportFile.js:69 #, fuzzy #| msgid "Date" msgid "at" msgstr "Datum" #: src/utils/getTreatmentsExportFile.js:89 data/ui/med-dialog.blp:443 msgid "Notes" msgstr "Opmerkingen" #: src/utils/getTreatmentsExportFile.js:96 src/utils/locale.js:37 #: src/treatmentsFactory.js:268 msgid "Daily" msgstr "Dagelijks" #: src/utils/getTreatmentsExportFile.js:102 src/medDialog.js:428 #: data/ui/med-dialog.blp:459 msgid "Day of Month" msgstr "Dag van de Maand" #. TRANSLATORS: Context: 2 day(s) on, 1 day(s) off #: src/utils/getTreatmentsExportFile.js:109 msgid "day(s) on" msgstr "" #. TRANSLATORS: Context: 2 day(s) on, 1 day(s) off #: src/utils/getTreatmentsExportFile.js:111 msgid "day(s) off" msgstr "" #: src/utils/getTreatmentsExportFile.js:122 src/todayFactory.js:41 #: src/treatmentsFactory.js:298 data/ui/med-dialog.blp:461 msgid "As Needed" msgstr "Zo nodig" #: src/utils/getTreatmentsExportFile.js:132 data/ui/med-dialog.blp:764 msgid "Duration" msgstr "Duur" #: src/utils/getTreatmentsExportFile.js:135 #, fuzzy #| msgid "Starts On" msgid "Started on" msgstr "Begint Op" #: src/utils/getTreatmentsExportFile.js:136 data/ui/med-dialog.blp:775 #, fuzzy #| msgid "Starts On" msgid "Start" msgstr "Begint Op" #: src/utils/getTreatmentsExportFile.js:138 src/treatmentsFactory.js:256 msgid "Ended on" msgstr "Beëindigd op" #: src/utils/getTreatmentsExportFile.js:138 data/ui/med-dialog.blp:817 #, fuzzy #| msgid "Ends On" msgid "End" msgstr "Eindigt Op" #: src/utils/getTreatmentsExportFile.js:173 src/utils/saveFiles.js:44 #: data/ui/window.blp:234 msgid "Treatments" msgstr "Medicatie" #: src/utils/getTreatmentsExportFile.js:184 #, fuzzy #| msgctxt "shortcut window" #| msgid "General" msgid "Generated on" msgstr "Algemeen" #: src/utils/getTreatmentsExportFile.js:187 msgid "Ongoing" msgstr "" #: src/utils/getTreatmentsExportFile.js:188 msgid "Non-scheduled" msgstr "" #: src/utils/getTreatmentsExportFile.js:189 msgid "Finished" msgstr "" #: src/utils/locale.js:33 msgid "Weekends" msgstr "Weekeinden" #: src/utils/locale.js:35 msgid "Weekdays" msgstr "Werkdagen" #: src/utils/saveFiles.js:22 data/ui/window.blp:156 msgid "History" msgstr "Geschiedenis" #: src/editHistDialog.js:60 src/editHistDialog.js:89 src/editHistDialog.js:110 msgid "Confirmed At" msgstr "Bevestigd Om" #: src/editHistDialog.js:64 src/editHistDialog.js:114 msgid "Skipped At" msgstr "Overgeslagen Om" #: src/historyFactory.js:47 msgid "Select to be Removed" msgstr "Selecteren Om Te Verwijderen" #. TRANSLATORS: "Your Name " #: src/main.js:69 msgid "translator-credits" msgstr "Heimen Stoffels " #: src/main.js:73 msgid "Thanks to These Projects!" msgstr "Met Dank Aan Deze Projecten!" #: src/medDialog.js:99 msgid "Edit Treatment" msgstr "Medicatie Bewerken" #: src/medDialog.js:100 data/ui/edit-hist-dialog.blp:30 #: data/ui/preferences.blp:112 data/ui/preferences.blp:132 #: data/ui/refill-dialog.blp:67 msgid "Save" msgstr "Opslaan" #: src/medDialog.js:114 msgid "Copy" msgstr "Kopie" #: src/medDialog.js:217 msgid "Add Dose" msgstr "Dosering Toevoegen" #: src/medDialog.js:419 msgid "Choose" msgstr "Kiezen" #: src/medDialog.js:429 src/treatmentsFactory.js:274 msgid "Day" msgstr "Dag" #: src/medDialog.js:456 data/ui/med-dialog.blp:458 msgid "Specific Days" msgstr "Bepaalde Dagen" #: src/medDialog.js:463 src/treatmentsFactory.js:295 data/ui/med-dialog.blp:460 msgid "Cycle" msgstr "Cyclus" #: src/medDialog.js:467 data/ui/med-dialog.blp:452 msgid "Frequency" msgstr "Frequentie" #: src/medDialog.js:500 msgid "Empty Name" msgstr "Naamloos" #: src/medDialog.js:506 msgid "Empty Unit" msgstr "Niets In Gevoerd" #: src/medDialog.js:513 msgid "Choose at Least One Day" msgstr "Kies Minimaal Één Dag" #: src/medDialog.js:527 src/oneTimeDialog.js:187 msgid "Name Already on Treatment List" msgstr "Naam Staat Al Op de Medicatielijst" #: src/medDialog.js:542 msgid "Duplicated Time" msgstr "Dit Tijdstip Is Al Gekozen" #: src/medDialog.js:582 msgid "Are You Sure?" msgstr "Weet U Het Zeker?" #: src/medDialog.js:583 msgid "will be deleted" msgstr "zal worden verwijderd" #: src/medDialog.js:586 data/ui/edit-hist-dialog.blp:18 #: data/ui/med-dialog.blp:19 msgid "Cancel" msgstr "Annuleren" #: src/medDialog.js:587 src/treatmentsFactory.js:128 data/ui/med-dialog.blp:865 msgid "Delete" msgstr "Verwijderen" #: src/oneTimeDialog.js:110 msgid "New" msgstr "Nieuw" #: src/oneTimeDialog.js:121 data/ui/med-dialog.blp:189 #: data/ui/one-time-dialog.blp:178 msgid "Pill(s)" msgstr "Pil(len)" #: src/prefsDialog.js:63 msgid "Accept to allow running in the background and receive notifications" msgstr "" "Keur goed dat de toepassing op de achtergrond mag worden uitgevoerd en " "meldingen mag tonen" #: src/prefsDialog.js:74 src/window.js:259 msgid "An Issue Has Occurred" msgstr "Er Is Een Probleem Opgetreden" #: src/prefsDialog.js:77 src/window.js:267 src/window.js:289 src/window.js:311 #: src/window.js:329 msgid "Close" msgstr "Sluiten" #: src/timeDoseRow.js:34 msgid "Remove Dose" msgstr "Verwijder Dosis" #: src/timeDoseRow.js:40 data/ui/edit-hist-dialog.blp:90 #: data/ui/one-time-dialog.blp:210 msgid "Change Time" msgstr "Verander Tijd" #: src/todayFactory.js:134 msgid "Change Dose" msgstr "Verander Dosis" #: src/treatmentsFactory.js:96 src/treatmentsFactory.js:126 #: data/ui/refill-dialog.blp:7 msgid "Refill" msgstr "Bijvullen" #: src/treatmentsFactory.js:125 msgid "Edit" msgstr "Bewerken" #: src/treatmentsFactory.js:127 msgid "Duplicate" msgstr "Dupliceer" #: src/treatmentsFactory.js:146 msgid "Options" msgstr "Opties" #. TRANSLATORS: keep the %d it's where the number goes #: src/treatmentsFactory.js:244 #, javascript-format msgid "%d Remaining" msgstr "%d Resterend" #. TRANSLATORS: label for when duration is enabled #: src/treatmentsFactory.js:254 msgid "Starts on" msgstr "Begint op" #: src/treatmentsFactory.js:255 msgid "Until" msgstr "Tot en met" #: src/treatmentsFactory.js:283 src/treatmentsFactory.js:286 msgid "Next Dose" msgstr "Volgende Dosis" #: src/window.js:173 src/window.js:943 msgid "Reminder" msgstr "Herinnering" #. TRANSLATORS: Notification text for when the inventory is low #: src/window.js:175 msgid "You have treatments low in stock" msgstr "De voorraad van enkele medicatie is laag" #: src/window.js:492 msgid "Show All" msgstr "Toon Alles" #: src/window.js:515 msgid "Show Less" msgstr "Toon Minder" #: src/window.js:648 msgid "No Results Found" msgstr "Geen Resultaten Gevonden" #: src/window.js:648 src/window.js:1517 #, fuzzy #| msgid "History" msgid "No History" msgstr "Geschiedenis" #: src/window.js:818 data/ui/window.blp:260 #, fuzzy #| msgid "Treatments" msgid "No Treatments" msgstr "Medicatie" #: src/window.js:818 msgid "All Done for Today" msgstr "U Bent Klaar Voor Vandaag" #: src/window.js:906 src/window.js:1090 data/ui/one-time-dialog.blp:285 #: data/ui/preferences.blp:73 msgid "Confirm" msgstr "Bevestigen" #: src/window.js:906 msgid "Confirm All" msgstr "Alles Bevestigen" #: src/window.js:907 data/ui/preferences.blp:84 data/ui/window.blp:146 msgid "Skip" msgstr "Overslaan" #: src/window.js:907 msgid "Skip All" msgstr "Alles Overslaan" #. TRANSLATORS: keep the %d it's where the number goes #: src/window.js:938 #, javascript-format msgid "and %d more" msgstr "en nog %d" #: src/window.js:1090 data/ui/one-time-dialog.blp:7 data/ui/window.blp:133 msgid "One-Time Entry" msgstr "Eenmalige Invoer" #: src/window.js:1295 data/ui/window.blp:353 msgid "Quit" msgstr "Afsluiten" #: data/ui/edit-hist-dialog.blp:7 msgid "Edit Entry" msgstr "Bewerk Invoer" #: data/ui/med-dialog.blp:7 msgid "New Treatment" msgstr "Medicatie Toevoegen" #: data/ui/med-dialog.blp:31 data/ui/window.blp:283 msgid "Add" msgstr "Toevoegen" #: data/ui/med-dialog.blp:69 data/ui/one-time-dialog.blp:58 msgid "Color" msgstr "Kleur" #. TRANSLATORS: Tooltip for the colors (from Default until Purple) #: data/ui/med-dialog.blp:94 data/ui/one-time-dialog.blp:83 msgid "Default" msgstr "Standaard" #: data/ui/med-dialog.blp:106 data/ui/one-time-dialog.blp:95 msgid "Red" msgstr "Rood" #: data/ui/med-dialog.blp:118 data/ui/one-time-dialog.blp:107 msgid "Orange" msgstr "Oranje" #: data/ui/med-dialog.blp:130 data/ui/one-time-dialog.blp:119 msgid "Yellow" msgstr "Geel" #: data/ui/med-dialog.blp:142 data/ui/one-time-dialog.blp:131 msgid "Green" msgstr "Groen" #: data/ui/med-dialog.blp:154 data/ui/one-time-dialog.blp:143 msgid "Cyan" msgstr "Blauwgroen" #: data/ui/med-dialog.blp:166 data/ui/one-time-dialog.blp:155 msgid "Blue" msgstr "Blauw" #: data/ui/med-dialog.blp:178 data/ui/one-time-dialog.blp:167 msgid "Purple" msgstr "Paars" #: data/ui/med-dialog.blp:188 data/ui/one-time-dialog.blp:177 msgid "Unit" msgstr "Eenheid" #: data/ui/med-dialog.blp:197 msgid "Icon" msgstr "Pictogram" #. TRANSLATORS: Tooltip for the icons (from Pill until Potion) #: data/ui/med-dialog.blp:226 msgid "Pill" msgstr "Pil" #: data/ui/med-dialog.blp:242 msgid "Alternative Pill" msgstr "Alternatieve Pil" #: data/ui/med-dialog.blp:258 msgid "Capsule" msgstr "Capsule" #: data/ui/med-dialog.blp:274 msgid "Round Pill" msgstr "Ronde Pil" #: data/ui/med-dialog.blp:290 msgid "Alternative Round Pill" msgstr "Alternatieve Ronde Pil" #: data/ui/med-dialog.blp:306 msgid "Ampoule" msgstr "Ampul" #: data/ui/med-dialog.blp:322 msgid "Injection" msgstr "Injectie" #: data/ui/med-dialog.blp:338 msgid "Square Pill" msgstr "Vierkante Pil" #: data/ui/med-dialog.blp:354 msgid "Alternative Square Pill" msgstr "Alternatieve Vierkante Pil" #: data/ui/med-dialog.blp:370 msgid "Triangle pill" msgstr "Driehoekige pil" #: data/ui/med-dialog.blp:386 msgid "Alternative Triangle Pill" msgstr "Alternatieve Driehoekige Pil" #: data/ui/med-dialog.blp:402 msgid "Bottle" msgstr "Flesje" #: data/ui/med-dialog.blp:418 msgid "Drops" msgstr "Druppels" #: data/ui/med-dialog.blp:434 msgid "Potion" msgstr "Drankje" #: data/ui/med-dialog.blp:457 msgid "Every Day" msgstr "Iedere Dag" #: data/ui/med-dialog.blp:473 msgid "Choose Days" msgstr "Dagen Kiezen" #: data/ui/med-dialog.blp:572 msgid "Choose Day" msgstr "Kies een Dag" #: data/ui/med-dialog.blp:617 msgid "Change Cycle" msgstr "Verander Cyclus" #: data/ui/med-dialog.blp:642 msgid "Days Active" msgstr "Innamedagen" #: data/ui/med-dialog.blp:656 msgid "Days Inactive" msgstr "Niet-innamedagen" #. TRANSLATORS: Day in cycle, try to keep it short #: data/ui/med-dialog.blp:671 msgid "Today is Cycle Day…" msgstr "Vandaag is een Cyclusdag…" #: data/ui/med-dialog.blp:694 msgid "Increase Notification Priority" msgstr "Meldingsprioriteit Verhogen" #: data/ui/med-dialog.blp:695 msgid "Show in fullscreen mode or with 'Do Not Disturb' enabled" msgstr "" "Zorgt ervoor dat de melding op volledig scherm wordt weergegeven of zelfs " "als niet-storenstand is ingeschakeld" #: data/ui/med-dialog.blp:699 msgid "Recurring Notifications" msgstr "Meldingen Herhalen" #: data/ui/med-dialog.blp:700 msgid "Renotify until it's confirmed or skipped" msgstr "Herhaal meldingen totdat ze bevestigd of overgeslagen zijn" #: data/ui/med-dialog.blp:705 msgid "Interval in Minutes" msgstr "Tussenpoos (In Minuten)" #: data/ui/med-dialog.blp:718 data/ui/refill-dialog.blp:36 msgid "Inventory" msgstr "Voorraad" #: data/ui/med-dialog.blp:719 msgid "Manage your stock" msgstr "Beheer uw voorraad" #: data/ui/med-dialog.blp:725 msgid "Current" msgstr "Huidige voorraad" #: data/ui/med-dialog.blp:738 msgid "Remind Me At" msgstr "Herinner Me Op" #: data/ui/med-dialog.blp:751 msgid "Refill Amount" msgstr "Bijvulhoeveelheid" #: data/ui/med-dialog.blp:765 msgid "Set start and end dates" msgstr "Stel begin- en einddata in" #: data/ui/med-dialog.blp:785 data/ui/med-dialog.blp:827 #: data/ui/one-time-dialog.blp:243 msgid "Choose Date" msgstr "Kies Datum" #: data/ui/med-dialog.blp:855 msgid "Mark as Confirmed" msgstr "Markeren Als Bevestigd" #: data/ui/med-dialog.blp:856 msgid "" "If not manually confirmed or skipped, it will be recorded as confirmed in " "history, reducing stock if enabled" msgstr "" "Indien niet handmatig bevestigd of overgeslagen, wordt dit vastgelegd als " "bevestigd in de geschiedenis, waardoor de voorraad wordt verminderd indien " "ingeschakeld" #: data/ui/one-time-dialog.blp:44 msgid "From Treatment List" msgstr "Van Medicatielijst" #: data/ui/one-time-dialog.blp:182 msgid "Amount" msgstr "Hoeveelheid" #: data/ui/preferences.blp:7 data/ui/window.blp:338 msgid "Preferences" msgstr "Voorkeuren" #: data/ui/preferences.blp:17 msgid "Auto-Start at Login" msgstr "Automatisch Opstarten" #: data/ui/preferences.blp:28 msgid "Auto-Clear History" msgstr "Automatisch Geschiedenis Wissen" #: data/ui/preferences.blp:29 msgid "Keeps a maximum of 30 days" msgstr "Bewaart maximaal 30 dagen" #: data/ui/preferences.blp:40 msgid "Low Stock Notification" msgstr "Laag Voorraadmelding" #: data/ui/preferences.blp:41 msgid "Send reminders when treatments are low in stock" msgstr "Stuur herinneringen wanneer behandelingen laag in voorraad zijn" #: data/ui/preferences.blp:52 msgid "Notification Sound" msgstr "Notificatie Geluid" #: data/ui/preferences.blp:63 msgid "Notification Buttons" msgstr "Meldingsknoppen" #: data/ui/preferences.blp:64 msgid "Show or hide confirm/skip" msgstr "Toon of verberg bevestigen/overslaan" #: data/ui/preferences.blp:98 #, fuzzy #| msgid "Export History as CSV" msgid "Export History As" msgstr "Exporteer Geschiedenis als CSV" #: data/ui/preferences.blp:121 #, fuzzy #| msgid "Empty Treatments" msgid "Export Treatments As" msgstr "Lege Medicatielijst" #: data/ui/shortcuts-dialog.blp:8 #, fuzzy #| msgctxt "shortcut window" #| msgid "Show Shortcuts" msgid "Shortcuts" msgstr "Sneltoetsen" #: data/ui/shortcuts-dialog.blp:11 #, fuzzy #| msgid "Show/Hide 'As Needed'" msgctxt "shortcut window" msgid "Show/Hide 'As Needed'" msgstr "Toon/Verberg 'Zo nodig'" #: data/ui/shortcuts-dialog.blp:16 #, fuzzy #| msgid "One-Time Entry" msgctxt "shortcut window" msgid "New One-Time Entry" msgstr "Eenmalige Invoer" #: data/ui/shortcuts-dialog.blp:21 #, fuzzy #| msgid "New Treatment" msgctxt "shortcut window" msgid "Add New Treatment" msgstr "Medicatie Toevoegen" #: data/ui/shortcuts-dialog.blp:26 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Sneltoetsen" #: data/ui/shortcuts-dialog.blp:31 msgctxt "shortcut window" msgid "Quit" msgstr "Afsluiten" #: data/ui/window.blp:23 msgid "Show/Hide 'As Needed'" msgstr "Toon/Verberg 'Zo nodig'" #: data/ui/window.blp:31 msgid "Search" msgstr "Zoekopdracht" #: data/ui/window.blp:39 #, fuzzy #| msgid "Treatments" msgid "Sort Treatments" msgstr "Medicatie" #: data/ui/window.blp:48 msgid "Main Menu" msgstr "Hoofdmenu" #: data/ui/window.blp:61 msgid "Search…" msgstr "Zoekopdracht…" #: data/ui/window.blp:71 msgid "Today" msgstr "Vandaag" #: data/ui/window.blp:117 data/ui/window.blp:210 msgid "Unselect" msgstr "Deselecteren" #: data/ui/window.blp:220 msgid "Remove Entries" msgstr "Verwijder Invoeren" #: data/ui/window.blp:300 msgid "Name Ascending" msgstr "" #: data/ui/window.blp:306 msgid "Remaining Stock (Lowest First)" msgstr "" #: data/ui/window.blp:312 msgid "Remaining Stock (Highest First)" msgstr "" #: data/ui/window.blp:318 #, fuzzy #| msgid "As Needed" msgid "As Needed Last" msgstr "Zo nodig" #: data/ui/window.blp:324 #, fuzzy #| msgid "Ended on" msgid "Ended Last" msgstr "Beëindigd op" #: data/ui/window.blp:330 #, fuzzy #| msgid "As Needed" msgid "As Needed/Ended Last" msgstr "Zo nodig" #: data/ui/window.blp:343 #, fuzzy #| msgctxt "shortcut window" #| msgid "Show Shortcuts" msgid "Keyboard Shortcuts" msgstr "Sneltoetsen" #: data/ui/window.blp:348 msgid "About Dosage" msgstr "Over Dosering" #~ msgid "Empty Treatments" #~ msgstr "Lege Medicatielijst" #~ msgid "Empty History" #~ msgstr "Er Is Geen Geschiedenis" #~ msgid "No Treatments Added" #~ msgstr "Geen Behandelingen Toegevoegd" #~ msgctxt "shortcut window" #~ msgid "General" #~ msgstr "Algemeen" #~ msgctxt "shortcut window" #~ msgid "Preferences" #~ msgstr "Voorkeuren" #~ msgid "After meal" #~ msgstr "Na de maaltijd" #~ msgid "Refill Stock" #~ msgstr "Voorraad Bijvullen" #~ msgid "Low Stock" #~ msgstr "Weinig Voorraad" #~ msgid "Form" #~ msgstr "Vorm" #~ msgid "Color and icon" #~ msgstr "Kleur en pictogram" #~ msgid "Time and amount" #~ msgstr "Tijdstip en hoeveelheid" #~ msgid "Restore" #~ msgstr "Herstellen" #~ msgid "New entry" #~ msgstr "Nieuw invoer" #~ msgid "Name already exists" #~ msgstr "Deze naam is al in gebruik" #~ msgid "Add to history" #~ msgstr "Tonen in geschiedenis" #~ msgid "medication" #~ msgstr "medicatie" #~ msgid "tracker" #~ msgstr "bijhouden" #~ msgid "treatments" #~ msgstr "medicatie" #~ msgid "pill" #~ msgstr "pil" #~ msgid "drug" #~ msgstr "medicijn" #~ msgid "remedy" #~ msgstr "remedie" #~ msgid "Su" #~ msgstr "Zo" #~ msgid "Mo" #~ msgstr "Ma" #~ msgid "Tu" #~ msgstr "Di" #~ msgid "We" #~ msgstr "Wo" #~ msgid "Th" #~ msgstr "Do" #~ msgid "Fr" #~ msgstr "Vr" #~ msgid "Sa" #~ msgstr "Za" #~ msgid "Sunday" #~ msgstr "Zondag" #~ msgid "Monday" #~ msgstr "Maandag" #~ msgid "Tuesday" #~ msgstr "Dinsdag" #~ msgid "Wednesday" #~ msgstr "Woensdag" #~ msgid "Thursday" #~ msgstr "Donderdag" #~ msgid "Friday" #~ msgstr "Vrijdag" #~ msgid "Saturday" #~ msgstr "Zaterdag" diegopvlk-Dosage-bd9126a/po/ota.po000066400000000000000000000416501514145341100170560ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) 2023 Diego Povliuk # This file is distributed under the license GPLv3-or-later. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: io.github.diegopvlk.Dosage\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-12-19 16:12-0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: ota\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #. TRANSLATORS: App name, translate to your language and follow the capitalization #: data/io.github.diegopvlk.Dosage.appdata.xml.in:20 #: data/io.github.diegopvlk.Dosage.desktop.in:3 #: src/utils/getTreatmentsExportFile.js:173 src/utils/saveFiles.js:22 #: src/utils/saveFiles.js:44 src/main.js:60 src/window.js:1060 #: data/ui/window.blp:6 msgid "Dosage" msgstr "" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:21 msgid "Keep track of your treatments" msgstr "" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:24 msgid "" "Easily manage and track treatments with Dosage: notifications, history, " "multiple doses, flexible frequency, customization, stock monitoring, and " "duration control" msgstr "" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:25 msgid "Features:" msgstr "" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:27 msgid "Notifications — Get reminders at the right time" msgstr "" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:28 msgid "History — See which medications you took, skipped or missed" msgstr "" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:29 msgid "Dosage management — Multiple doses with different times" msgstr "" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:30 msgid "" "Frequency modes — Every day, specific days, cycle or just when necessary" msgstr "" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:31 msgid "Color and icon — Give a shape for your treatment" msgstr "" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:32 msgid "Inventory tracking — Monitor your stock and get reminded when it's low" msgstr "" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:33 msgid "Duration — Define the start and end dates" msgstr "" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:44 msgid "Dosage today window in light theme" msgstr "" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:49 msgid "Dosage preferences window in light theme" msgstr "" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:54 msgid "Dosage edit treatment window in light theme" msgstr "" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:59 msgid "Dosage today window in dark theme" msgstr "" #. TRANSLATORS: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/io.github.diegopvlk.Dosage.desktop.in:10 msgid "Medication;Tracker;Reminder;Today;Treatments;Pill;Drug;Remedy;" msgstr "" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:232 msgid "Date" msgstr "" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:199 msgid "Time" msgstr "" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/med-dialog.blp:61 data/ui/one-time-dialog.blp:49 msgid "Name" msgstr "" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:183 msgid "Dose" msgstr "" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 msgid "Status" msgstr "" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 msgid "Time Confirmed" msgstr "" #: src/utils/getHistoryExportFile.js:38 src/utils/getHistoryExportFile.js:117 #: src/editHistDialog.js:68 src/historyFactory.js:186 msgid "Missed" msgstr "" #: src/utils/getHistoryExportFile.js:41 src/utils/getHistoryExportFile.js:121 #: src/historyFactory.js:183 data/ui/edit-hist-dialog.blp:111 msgid "Skipped" msgstr "" #: src/utils/getHistoryExportFile.js:44 src/utils/getHistoryExportFile.js:55 #: src/utils/getHistoryExportFile.js:125 src/utils/getHistoryExportFile.js:138 #: src/editHistDialog.js:73 src/historyFactory.js:190 #: data/ui/edit-hist-dialog.blp:116 msgid "Confirmed" msgstr "" #: src/utils/getHistoryExportFile.js:52 src/utils/getHistoryExportFile.js:134 #: src/editHistDialog.js:56 src/historyFactory.js:178 msgid "Auto-Confirmed" msgstr "" #: src/utils/getHistoryExportFile.js:55 src/utils/getHistoryExportFile.js:138 #: src/editHistDialog.js:74 msgid "Time Unknown" msgstr "" #. TRANSLATORS: Context: 1 Pill at 19:00 #: src/utils/getTreatmentsExportFile.js:69 msgid "at" msgstr "" #: src/utils/getTreatmentsExportFile.js:89 data/ui/med-dialog.blp:443 msgid "Notes" msgstr "" #: src/utils/getTreatmentsExportFile.js:96 src/utils/locale.js:37 #: src/treatmentsFactory.js:268 msgid "Daily" msgstr "" #: src/utils/getTreatmentsExportFile.js:102 src/medDialog.js:428 #: data/ui/med-dialog.blp:459 msgid "Day of Month" msgstr "" #. TRANSLATORS: Context: 2 day(s) on, 1 day(s) off #: src/utils/getTreatmentsExportFile.js:109 msgid "day(s) on" msgstr "" #. TRANSLATORS: Context: 2 day(s) on, 1 day(s) off #: src/utils/getTreatmentsExportFile.js:111 msgid "day(s) off" msgstr "" #: src/utils/getTreatmentsExportFile.js:122 src/todayFactory.js:41 #: src/treatmentsFactory.js:298 data/ui/med-dialog.blp:461 msgid "As Needed" msgstr "" #: src/utils/getTreatmentsExportFile.js:132 data/ui/med-dialog.blp:764 msgid "Duration" msgstr "" #: src/utils/getTreatmentsExportFile.js:135 msgid "Started on" msgstr "" #: src/utils/getTreatmentsExportFile.js:136 data/ui/med-dialog.blp:775 msgid "Start" msgstr "" #: src/utils/getTreatmentsExportFile.js:138 src/treatmentsFactory.js:256 msgid "Ended on" msgstr "" #: src/utils/getTreatmentsExportFile.js:138 data/ui/med-dialog.blp:817 msgid "End" msgstr "" #: src/utils/getTreatmentsExportFile.js:173 src/utils/saveFiles.js:44 #: data/ui/window.blp:234 msgid "Treatments" msgstr "" #: src/utils/getTreatmentsExportFile.js:184 msgid "Generated on" msgstr "" #: src/utils/getTreatmentsExportFile.js:187 msgid "Ongoing" msgstr "" #: src/utils/getTreatmentsExportFile.js:188 msgid "Non-scheduled" msgstr "" #: src/utils/getTreatmentsExportFile.js:189 msgid "Finished" msgstr "" #: src/utils/locale.js:33 msgid "Weekends" msgstr "" #: src/utils/locale.js:35 msgid "Weekdays" msgstr "" #: src/utils/saveFiles.js:22 data/ui/window.blp:156 msgid "History" msgstr "" #: src/editHistDialog.js:60 src/editHistDialog.js:89 src/editHistDialog.js:110 msgid "Confirmed At" msgstr "" #: src/editHistDialog.js:64 src/editHistDialog.js:114 msgid "Skipped At" msgstr "" #: src/historyFactory.js:47 msgid "Select to be Removed" msgstr "" #. TRANSLATORS: "Your Name " #: src/main.js:69 msgid "translator-credits" msgstr "" #: src/main.js:73 msgid "Thanks to These Projects!" msgstr "" #: src/medDialog.js:99 msgid "Edit Treatment" msgstr "" #: src/medDialog.js:100 data/ui/edit-hist-dialog.blp:30 #: data/ui/preferences.blp:112 data/ui/preferences.blp:132 #: data/ui/refill-dialog.blp:67 msgid "Save" msgstr "" #: src/medDialog.js:114 msgid "Copy" msgstr "" #: src/medDialog.js:217 msgid "Add Dose" msgstr "" #: src/medDialog.js:419 msgid "Choose" msgstr "" #: src/medDialog.js:429 src/treatmentsFactory.js:274 msgid "Day" msgstr "" #: src/medDialog.js:456 data/ui/med-dialog.blp:458 msgid "Specific Days" msgstr "" #: src/medDialog.js:463 src/treatmentsFactory.js:295 data/ui/med-dialog.blp:460 msgid "Cycle" msgstr "" #: src/medDialog.js:467 data/ui/med-dialog.blp:452 msgid "Frequency" msgstr "" #: src/medDialog.js:500 msgid "Empty Name" msgstr "" #: src/medDialog.js:506 msgid "Empty Unit" msgstr "" #: src/medDialog.js:513 msgid "Choose at Least One Day" msgstr "" #: src/medDialog.js:527 src/oneTimeDialog.js:187 msgid "Name Already on Treatment List" msgstr "" #: src/medDialog.js:542 msgid "Duplicated Time" msgstr "" #: src/medDialog.js:582 msgid "Are You Sure?" msgstr "" #: src/medDialog.js:583 msgid "will be deleted" msgstr "" #: src/medDialog.js:586 data/ui/edit-hist-dialog.blp:18 #: data/ui/med-dialog.blp:19 msgid "Cancel" msgstr "" #: src/medDialog.js:587 src/treatmentsFactory.js:128 data/ui/med-dialog.blp:865 msgid "Delete" msgstr "" #: src/oneTimeDialog.js:110 msgid "New" msgstr "" #: src/oneTimeDialog.js:121 data/ui/med-dialog.blp:189 #: data/ui/one-time-dialog.blp:178 msgid "Pill(s)" msgstr "" #: src/prefsDialog.js:63 msgid "Accept to allow running in the background and receive notifications" msgstr "" #: src/prefsDialog.js:74 src/window.js:259 msgid "An Issue Has Occurred" msgstr "" #: src/prefsDialog.js:77 src/window.js:267 src/window.js:289 src/window.js:311 #: src/window.js:329 msgid "Close" msgstr "" #: src/timeDoseRow.js:34 msgid "Remove Dose" msgstr "" #: src/timeDoseRow.js:40 data/ui/edit-hist-dialog.blp:90 #: data/ui/one-time-dialog.blp:210 msgid "Change Time" msgstr "" #: src/todayFactory.js:134 msgid "Change Dose" msgstr "" #: src/treatmentsFactory.js:96 src/treatmentsFactory.js:126 #: data/ui/refill-dialog.blp:7 msgid "Refill" msgstr "" #: src/treatmentsFactory.js:125 msgid "Edit" msgstr "" #: src/treatmentsFactory.js:127 msgid "Duplicate" msgstr "" #: src/treatmentsFactory.js:146 msgid "Options" msgstr "" #. TRANSLATORS: keep the %d it's where the number goes #: src/treatmentsFactory.js:244 #, javascript-format msgid "%d Remaining" msgstr "" #. TRANSLATORS: label for when duration is enabled #: src/treatmentsFactory.js:254 msgid "Starts on" msgstr "" #: src/treatmentsFactory.js:255 msgid "Until" msgstr "" #: src/treatmentsFactory.js:283 src/treatmentsFactory.js:286 msgid "Next Dose" msgstr "" #: src/window.js:173 src/window.js:943 msgid "Reminder" msgstr "" #. TRANSLATORS: Notification text for when the inventory is low #: src/window.js:175 msgid "You have treatments low in stock" msgstr "" #: src/window.js:492 msgid "Show All" msgstr "" #: src/window.js:515 msgid "Show Less" msgstr "" #: src/window.js:648 msgid "No Results Found" msgstr "" #: src/window.js:648 src/window.js:1517 msgid "No History" msgstr "" #: src/window.js:818 data/ui/window.blp:260 msgid "No Treatments" msgstr "" #: src/window.js:818 msgid "All Done for Today" msgstr "" #: src/window.js:906 src/window.js:1090 data/ui/one-time-dialog.blp:285 #: data/ui/preferences.blp:73 msgid "Confirm" msgstr "" #: src/window.js:906 msgid "Confirm All" msgstr "" #: src/window.js:907 data/ui/preferences.blp:84 data/ui/window.blp:146 msgid "Skip" msgstr "" #: src/window.js:907 msgid "Skip All" msgstr "" #. TRANSLATORS: keep the %d it's where the number goes #: src/window.js:938 #, javascript-format msgid "and %d more" msgstr "" #: src/window.js:1090 data/ui/one-time-dialog.blp:7 data/ui/window.blp:133 msgid "One-Time Entry" msgstr "" #: src/window.js:1295 data/ui/window.blp:353 msgid "Quit" msgstr "" #: data/ui/edit-hist-dialog.blp:7 msgid "Edit Entry" msgstr "" #: data/ui/med-dialog.blp:7 msgid "New Treatment" msgstr "" #: data/ui/med-dialog.blp:31 data/ui/window.blp:283 msgid "Add" msgstr "" #: data/ui/med-dialog.blp:69 data/ui/one-time-dialog.blp:58 msgid "Color" msgstr "" #. TRANSLATORS: Tooltip for the colors (from Default until Purple) #: data/ui/med-dialog.blp:94 data/ui/one-time-dialog.blp:83 msgid "Default" msgstr "" #: data/ui/med-dialog.blp:106 data/ui/one-time-dialog.blp:95 msgid "Red" msgstr "" #: data/ui/med-dialog.blp:118 data/ui/one-time-dialog.blp:107 msgid "Orange" msgstr "" #: data/ui/med-dialog.blp:130 data/ui/one-time-dialog.blp:119 msgid "Yellow" msgstr "" #: data/ui/med-dialog.blp:142 data/ui/one-time-dialog.blp:131 msgid "Green" msgstr "" #: data/ui/med-dialog.blp:154 data/ui/one-time-dialog.blp:143 msgid "Cyan" msgstr "" #: data/ui/med-dialog.blp:166 data/ui/one-time-dialog.blp:155 msgid "Blue" msgstr "" #: data/ui/med-dialog.blp:178 data/ui/one-time-dialog.blp:167 msgid "Purple" msgstr "" #: data/ui/med-dialog.blp:188 data/ui/one-time-dialog.blp:177 msgid "Unit" msgstr "" #: data/ui/med-dialog.blp:197 msgid "Icon" msgstr "" #. TRANSLATORS: Tooltip for the icons (from Pill until Potion) #: data/ui/med-dialog.blp:226 msgid "Pill" msgstr "" #: data/ui/med-dialog.blp:242 msgid "Alternative Pill" msgstr "" #: data/ui/med-dialog.blp:258 msgid "Capsule" msgstr "" #: data/ui/med-dialog.blp:274 msgid "Round Pill" msgstr "" #: data/ui/med-dialog.blp:290 msgid "Alternative Round Pill" msgstr "" #: data/ui/med-dialog.blp:306 msgid "Ampoule" msgstr "" #: data/ui/med-dialog.blp:322 msgid "Injection" msgstr "" #: data/ui/med-dialog.blp:338 msgid "Square Pill" msgstr "" #: data/ui/med-dialog.blp:354 msgid "Alternative Square Pill" msgstr "" #: data/ui/med-dialog.blp:370 msgid "Triangle pill" msgstr "" #: data/ui/med-dialog.blp:386 msgid "Alternative Triangle Pill" msgstr "" #: data/ui/med-dialog.blp:402 msgid "Bottle" msgstr "" #: data/ui/med-dialog.blp:418 msgid "Drops" msgstr "" #: data/ui/med-dialog.blp:434 msgid "Potion" msgstr "" #: data/ui/med-dialog.blp:457 msgid "Every Day" msgstr "" #: data/ui/med-dialog.blp:473 msgid "Choose Days" msgstr "" #: data/ui/med-dialog.blp:572 msgid "Choose Day" msgstr "" #: data/ui/med-dialog.blp:617 msgid "Change Cycle" msgstr "" #: data/ui/med-dialog.blp:642 msgid "Days Active" msgstr "" #: data/ui/med-dialog.blp:656 msgid "Days Inactive" msgstr "" #. TRANSLATORS: Day in cycle, try to keep it short #: data/ui/med-dialog.blp:671 msgid "Today is Cycle Day…" msgstr "" #: data/ui/med-dialog.blp:694 msgid "Increase Notification Priority" msgstr "" #: data/ui/med-dialog.blp:695 msgid "Show in fullscreen mode or with 'Do Not Disturb' enabled" msgstr "" #: data/ui/med-dialog.blp:699 msgid "Recurring Notifications" msgstr "" #: data/ui/med-dialog.blp:700 msgid "Renotify until it's confirmed or skipped" msgstr "" #: data/ui/med-dialog.blp:705 msgid "Interval in Minutes" msgstr "" #: data/ui/med-dialog.blp:718 data/ui/refill-dialog.blp:36 msgid "Inventory" msgstr "" #: data/ui/med-dialog.blp:719 msgid "Manage your stock" msgstr "" #: data/ui/med-dialog.blp:725 msgid "Current" msgstr "" #: data/ui/med-dialog.blp:738 msgid "Remind Me At" msgstr "" #: data/ui/med-dialog.blp:751 msgid "Refill Amount" msgstr "" #: data/ui/med-dialog.blp:765 msgid "Set start and end dates" msgstr "" #: data/ui/med-dialog.blp:785 data/ui/med-dialog.blp:827 #: data/ui/one-time-dialog.blp:243 msgid "Choose Date" msgstr "" #: data/ui/med-dialog.blp:855 msgid "Mark as Confirmed" msgstr "" #: data/ui/med-dialog.blp:856 msgid "" "If not manually confirmed or skipped, it will be recorded as confirmed in " "history, reducing stock if enabled" msgstr "" #: data/ui/one-time-dialog.blp:44 msgid "From Treatment List" msgstr "" #: data/ui/one-time-dialog.blp:182 msgid "Amount" msgstr "" #: data/ui/preferences.blp:7 data/ui/window.blp:338 msgid "Preferences" msgstr "" #: data/ui/preferences.blp:17 msgid "Auto-Start at Login" msgstr "" #: data/ui/preferences.blp:28 msgid "Auto-Clear History" msgstr "" #: data/ui/preferences.blp:29 msgid "Keeps a maximum of 30 days" msgstr "" #: data/ui/preferences.blp:40 msgid "Low Stock Notification" msgstr "" #: data/ui/preferences.blp:41 msgid "Send reminders when treatments are low in stock" msgstr "" #: data/ui/preferences.blp:52 msgid "Notification Sound" msgstr "" #: data/ui/preferences.blp:63 msgid "Notification Buttons" msgstr "" #: data/ui/preferences.blp:64 msgid "Show or hide confirm/skip" msgstr "" #: data/ui/preferences.blp:98 msgid "Export History As" msgstr "" #: data/ui/preferences.blp:121 msgid "Export Treatments As" msgstr "" #: data/ui/shortcuts-dialog.blp:8 msgid "Shortcuts" msgstr "" #: data/ui/shortcuts-dialog.blp:11 msgctxt "shortcut window" msgid "Show/Hide 'As Needed'" msgstr "" #: data/ui/shortcuts-dialog.blp:16 msgctxt "shortcut window" msgid "New One-Time Entry" msgstr "" #: data/ui/shortcuts-dialog.blp:21 msgctxt "shortcut window" msgid "Add New Treatment" msgstr "" #: data/ui/shortcuts-dialog.blp:26 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "" #: data/ui/shortcuts-dialog.blp:31 msgctxt "shortcut window" msgid "Quit" msgstr "" #: data/ui/window.blp:23 msgid "Show/Hide 'As Needed'" msgstr "" #: data/ui/window.blp:31 msgid "Search" msgstr "" #: data/ui/window.blp:39 msgid "Sort Treatments" msgstr "" #: data/ui/window.blp:48 msgid "Main Menu" msgstr "" #: data/ui/window.blp:61 msgid "Search…" msgstr "" #: data/ui/window.blp:71 msgid "Today" msgstr "" #: data/ui/window.blp:117 data/ui/window.blp:210 msgid "Unselect" msgstr "" #: data/ui/window.blp:220 msgid "Remove Entries" msgstr "" #: data/ui/window.blp:300 msgid "Name Ascending" msgstr "" #: data/ui/window.blp:306 msgid "Remaining Stock (Lowest First)" msgstr "" #: data/ui/window.blp:312 msgid "Remaining Stock (Highest First)" msgstr "" #: data/ui/window.blp:318 msgid "As Needed Last" msgstr "" #: data/ui/window.blp:324 msgid "Ended Last" msgstr "" #: data/ui/window.blp:330 msgid "As Needed/Ended Last" msgstr "" #: data/ui/window.blp:343 msgid "Keyboard Shortcuts" msgstr "" #: data/ui/window.blp:348 msgid "About Dosage" msgstr "" diegopvlk-Dosage-bd9126a/po/pl.po000066400000000000000000000535131514145341100167070ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) 2023 Diego Povliuk # This file is distributed under the license GPLv3-or-later. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: io.github.diegopvlk.Dosage\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-12-19 16:12-0300\n" "PO-Revision-Date: 2026-01-11 16:48+0000\n" "Last-Translator: Karol Putyra \n" "Language-Team: Polish " "\n" "Language: pl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2);\n" "X-Generator: Weblate 5.15.1\n" #. TRANSLATORS: App name, translate to your language and follow the capitalization #: data/io.github.diegopvlk.Dosage.appdata.xml.in:20 #: data/io.github.diegopvlk.Dosage.desktop.in:3 #: src/utils/getTreatmentsExportFile.js:173 src/utils/saveFiles.js:22 #: src/utils/saveFiles.js:44 src/main.js:60 src/window.js:1060 #: data/ui/window.blp:6 msgid "Dosage" msgstr "Dawkowanie" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:21 msgid "Keep track of your treatments" msgstr "Śledź swoją farmakoterapię" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:24 msgid "" "Easily manage and track treatments with Dosage: notifications, history, " "multiple doses, flexible frequency, customization, stock monitoring, and " "duration control" msgstr "" "Łatwo zarządzaj swoją farmakoterapią za pomocą aplikacji Dawkowanie: " "powiadomienia, historia, wiele dawek, elastyczna częstotliwość, " "personalizacja, monitoring zapasów, i kontrola czasu trwania kuracji." #: data/io.github.diegopvlk.Dosage.appdata.xml.in:25 msgid "Features:" msgstr "Funkcje:" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:27 msgid "Notifications — Get reminders at the right time" msgstr "Powiadomienia — Otrzymuj przypomnienia na czas" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:28 msgid "History — See which medications you took, skipped or missed" msgstr "" "Historia — Zobacz jakie leki wziąłeś/aś, ominąłeś/aś lub zapomniałeś/aś" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:29 msgid "Dosage management — Multiple doses with different times" msgstr "Zarządzanie dawkowaniem — Kilka dawek o różnych godzinach" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:30 msgid "" "Frequency modes — Every day, specific days, cycle or just when necessary" msgstr "" "Tryby częstotliwości — Codziennie, specyficzne dni, cykl lub po prostu gdy " "potrzeba" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:31 msgid "Color and icon — Give a shape for your treatment" msgstr "Kolor i ikona — Daj kształt swojemu leczeniu" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:32 msgid "Inventory tracking — Monitor your stock and get reminded when it's low" msgstr "" "Śledzenie zapasu — Monitoruj swój zapas i dostań przypomnienie gdy masz już " "mało" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:33 msgid "Duration — Define the start and end dates" msgstr "Czas trwania — Zdefiniuj daty rozpoczęcia i zakończenia" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:44 msgid "Dosage today window in light theme" msgstr "Dawkowanie okno dzisiaj w jasnym motywie" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:49 msgid "Dosage preferences window in light theme" msgstr "Dawkowanie okno preferencji w jasnym motywie" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:54 msgid "Dosage edit treatment window in light theme" msgstr "Dawkowanie okno edycji leczenia w jasnym motywie" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:59 msgid "Dosage today window in dark theme" msgstr "Dawkowanie okno dzisiaj w ciemnym motywie" #. TRANSLATORS: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/io.github.diegopvlk.Dosage.desktop.in:10 msgid "Medication;Tracker;Reminder;Today;Treatments;Pill;Drug;Remedy;" msgstr "Leki;Śledzik;Przypomnienie;Dziś;Leczenia;Tabletka;Lek;Środek zaradczy;" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:232 msgid "Date" msgstr "Data" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:199 msgid "Time" msgstr "Czas" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/med-dialog.blp:61 data/ui/one-time-dialog.blp:49 msgid "Name" msgstr "Nazwa" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:183 msgid "Dose" msgstr "Dawka" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 msgid "Status" msgstr "Status" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 msgid "Time Confirmed" msgstr "Czas Potwierdzony" #: src/utils/getHistoryExportFile.js:38 src/utils/getHistoryExportFile.js:117 #: src/editHistDialog.js:68 src/historyFactory.js:186 msgid "Missed" msgstr "Przegapione" #: src/utils/getHistoryExportFile.js:41 src/utils/getHistoryExportFile.js:121 #: src/historyFactory.js:183 data/ui/edit-hist-dialog.blp:111 msgid "Skipped" msgstr "Ominięte" #: src/utils/getHistoryExportFile.js:44 src/utils/getHistoryExportFile.js:55 #: src/utils/getHistoryExportFile.js:125 src/utils/getHistoryExportFile.js:138 #: src/editHistDialog.js:73 src/historyFactory.js:190 #: data/ui/edit-hist-dialog.blp:116 msgid "Confirmed" msgstr "Potwierdzony" #: src/utils/getHistoryExportFile.js:52 src/utils/getHistoryExportFile.js:134 #: src/editHistDialog.js:56 src/historyFactory.js:178 msgid "Auto-Confirmed" msgstr "Automatycznie Potwierdzone" #: src/utils/getHistoryExportFile.js:55 src/utils/getHistoryExportFile.js:138 #: src/editHistDialog.js:74 msgid "Time Unknown" msgstr "Czas Nieznany" #. TRANSLATORS: Context: 1 Pill at 19:00 #: src/utils/getTreatmentsExportFile.js:69 msgid "at" msgstr "o" #: src/utils/getTreatmentsExportFile.js:89 data/ui/med-dialog.blp:443 msgid "Notes" msgstr "Notatki" #: src/utils/getTreatmentsExportFile.js:96 src/utils/locale.js:37 #: src/treatmentsFactory.js:268 msgid "Daily" msgstr "Codziennie" #: src/utils/getTreatmentsExportFile.js:102 src/medDialog.js:428 #: data/ui/med-dialog.blp:459 msgid "Day of Month" msgstr "Dzień Miesiąca" #. TRANSLATORS: Context: 2 day(s) on, 1 day(s) off #: src/utils/getTreatmentsExportFile.js:109 msgid "day(s) on" msgstr "dzień/dni przyjmowania" #. TRANSLATORS: Context: 2 day(s) on, 1 day(s) off #: src/utils/getTreatmentsExportFile.js:111 msgid "day(s) off" msgstr "dzień/dni przerwy" #: src/utils/getTreatmentsExportFile.js:122 src/todayFactory.js:41 #: src/treatmentsFactory.js:298 data/ui/med-dialog.blp:461 msgid "As Needed" msgstr "Gdy Potrzeba" #: src/utils/getTreatmentsExportFile.js:132 data/ui/med-dialog.blp:764 msgid "Duration" msgstr "Czas Trwania" #: src/utils/getTreatmentsExportFile.js:135 msgid "Started on" msgstr "Rozpoczęte o" #: src/utils/getTreatmentsExportFile.js:136 data/ui/med-dialog.blp:775 msgid "Start" msgstr "Rozpoczyna Się" #: src/utils/getTreatmentsExportFile.js:138 src/treatmentsFactory.js:256 msgid "Ended on" msgstr "Zakończono w" #: src/utils/getTreatmentsExportFile.js:138 data/ui/med-dialog.blp:817 msgid "End" msgstr "Koniec" #: src/utils/getTreatmentsExportFile.js:173 src/utils/saveFiles.js:44 #: data/ui/window.blp:234 msgid "Treatments" msgstr "Farmakoterapia" #: src/utils/getTreatmentsExportFile.js:184 msgid "Generated on" msgstr "Wygenerowano w" #: src/utils/getTreatmentsExportFile.js:187 msgid "Ongoing" msgstr "W Trakcie" #: src/utils/getTreatmentsExportFile.js:188 msgid "Non-scheduled" msgstr "Niezaplanowane" #: src/utils/getTreatmentsExportFile.js:189 msgid "Finished" msgstr "Zakończone" #: src/utils/locale.js:33 msgid "Weekends" msgstr "Weekendy" #: src/utils/locale.js:35 msgid "Weekdays" msgstr "Dni Powszednie" #: src/utils/saveFiles.js:22 data/ui/window.blp:156 msgid "History" msgstr "Historia" #: src/editHistDialog.js:60 src/editHistDialog.js:89 src/editHistDialog.js:110 msgid "Confirmed At" msgstr "Potwierdzone O" #: src/editHistDialog.js:64 src/editHistDialog.js:114 msgid "Skipped At" msgstr "Pominięte O" #: src/historyFactory.js:47 msgid "Select to be Removed" msgstr "Wybierz Do Usunięcia" #. TRANSLATORS: "Your Name " #: src/main.js:69 msgid "translator-credits" msgstr "" "Michael Ł \n" "Diego Povliuk \n" "Karol Putyra" #: src/main.js:73 msgid "Thanks to These Projects!" msgstr "Dzięki dla Tych Projektów!" #: src/medDialog.js:99 msgid "Edit Treatment" msgstr "Edytuj Farmakologię" #: src/medDialog.js:100 data/ui/edit-hist-dialog.blp:30 #: data/ui/preferences.blp:112 data/ui/preferences.blp:132 #: data/ui/refill-dialog.blp:67 msgid "Save" msgstr "Zapisz" #: src/medDialog.js:114 msgid "Copy" msgstr "Kopiuj" #: src/medDialog.js:217 msgid "Add Dose" msgstr "Dodaj Dawkę" #: src/medDialog.js:419 msgid "Choose" msgstr "Wybierz" #: src/medDialog.js:429 src/treatmentsFactory.js:274 msgid "Day" msgstr "Dzień" #: src/medDialog.js:456 data/ui/med-dialog.blp:458 msgid "Specific Days" msgstr "Specyficzne Dni" #: src/medDialog.js:463 src/treatmentsFactory.js:295 data/ui/med-dialog.blp:460 msgid "Cycle" msgstr "Cykl" #: src/medDialog.js:467 data/ui/med-dialog.blp:452 msgid "Frequency" msgstr "Częstotliwość" #: src/medDialog.js:500 msgid "Empty Name" msgstr "Pusta Nazwa" #: src/medDialog.js:506 msgid "Empty Unit" msgstr "Pusta Jednostka" #: src/medDialog.js:513 msgid "Choose at Least One Day" msgstr "Wybierz Przynajmniej Jeden Dzień" #: src/medDialog.js:527 src/oneTimeDialog.js:187 msgid "Name Already on Treatment List" msgstr "Nazwa Już na Liście Leczenia" #: src/medDialog.js:542 msgid "Duplicated Time" msgstr "Zduplikowany Czas" #: src/medDialog.js:582 msgid "Are You Sure?" msgstr "Czy Jesteś Pewien?" #: src/medDialog.js:583 msgid "will be deleted" msgstr "zostanie usunięte" #: src/medDialog.js:586 data/ui/edit-hist-dialog.blp:18 #: data/ui/med-dialog.blp:19 msgid "Cancel" msgstr "Anuluj" #: src/medDialog.js:587 src/treatmentsFactory.js:128 data/ui/med-dialog.blp:865 msgid "Delete" msgstr "Usuń" #: src/oneTimeDialog.js:110 msgid "New" msgstr "Nowy" #: src/oneTimeDialog.js:121 data/ui/med-dialog.blp:189 #: data/ui/one-time-dialog.blp:178 msgid "Pill(s)" msgstr "Pigułka/i" #: src/prefsDialog.js:63 msgid "Accept to allow running in the background and receive notifications" msgstr "Zaakceptuj, aby umożliwić działanie w tle i otrzymywanie powiadomień" #: src/prefsDialog.js:74 src/window.js:259 msgid "An Issue Has Occurred" msgstr "Wystąpił Problem" #: src/prefsDialog.js:77 src/window.js:267 src/window.js:289 src/window.js:311 #: src/window.js:329 msgid "Close" msgstr "Zamknij" #: src/timeDoseRow.js:34 msgid "Remove Dose" msgstr "Usuń Dawkę" #: src/timeDoseRow.js:40 data/ui/edit-hist-dialog.blp:90 #: data/ui/one-time-dialog.blp:210 msgid "Change Time" msgstr "Zmień Czas" #: src/todayFactory.js:134 msgid "Change Dose" msgstr "Zmień Dawkę" #: src/treatmentsFactory.js:96 src/treatmentsFactory.js:126 #: data/ui/refill-dialog.blp:7 msgid "Refill" msgstr "Uzupełnij" #: src/treatmentsFactory.js:125 msgid "Edit" msgstr "Edytuj" #: src/treatmentsFactory.js:127 msgid "Duplicate" msgstr "Duplikat" #: src/treatmentsFactory.js:146 msgid "Options" msgstr "Opcje" #. TRANSLATORS: keep the %d it's where the number goes #: src/treatmentsFactory.js:244 #, javascript-format msgid "%d Remaining" msgstr "%d Pozostałe" #. TRANSLATORS: label for when duration is enabled #: src/treatmentsFactory.js:254 msgid "Starts on" msgstr "Zaczyna się" #: src/treatmentsFactory.js:255 msgid "Until" msgstr "Do" #: src/treatmentsFactory.js:283 src/treatmentsFactory.js:286 msgid "Next Dose" msgstr "Następna Dawka" #: src/window.js:173 src/window.js:943 msgid "Reminder" msgstr "Przypomnienie" #. TRANSLATORS: Notification text for when the inventory is low #: src/window.js:175 msgid "You have treatments low in stock" msgstr "Masz leczenia w niskim stanie magazynowym" #: src/window.js:492 msgid "Show All" msgstr "Pokaż Wszystko" #: src/window.js:515 msgid "Show Less" msgstr "Pokaż Mniej" #: src/window.js:648 msgid "No Results Found" msgstr "Nie Znaleziono Wyników" #: src/window.js:648 src/window.js:1517 msgid "No History" msgstr "Brak Historii" #: src/window.js:818 data/ui/window.blp:260 msgid "No Treatments" msgstr "Brak Farmakoterapii" #: src/window.js:818 msgid "All Done for Today" msgstr "Wszystko Zrobione na Dziś" #: src/window.js:906 src/window.js:1090 data/ui/one-time-dialog.blp:285 #: data/ui/preferences.blp:73 msgid "Confirm" msgstr "Potwierdź" #: src/window.js:906 msgid "Confirm All" msgstr "Potwierdź Wszystko" #: src/window.js:907 data/ui/preferences.blp:84 data/ui/window.blp:146 msgid "Skip" msgstr "Pomiń" #: src/window.js:907 msgid "Skip All" msgstr "Pomiń Wszystko" #. TRANSLATORS: keep the %d it's where the number goes #: src/window.js:938 #, javascript-format msgid "and %d more" msgstr "i %d więcej" #: src/window.js:1090 data/ui/one-time-dialog.blp:7 data/ui/window.blp:133 msgid "One-Time Entry" msgstr "Jednorazowy Wpis" #: src/window.js:1295 data/ui/window.blp:353 msgid "Quit" msgstr "Zakończ" #: data/ui/edit-hist-dialog.blp:7 msgid "Edit Entry" msgstr "Edytuj Wpis" #: data/ui/med-dialog.blp:7 msgid "New Treatment" msgstr "Nowe Leczenie" #: data/ui/med-dialog.blp:31 data/ui/window.blp:283 msgid "Add" msgstr "Dodaj" #: data/ui/med-dialog.blp:69 data/ui/one-time-dialog.blp:58 msgid "Color" msgstr "Kolor" #. TRANSLATORS: Tooltip for the colors (from Default until Purple) #: data/ui/med-dialog.blp:94 data/ui/one-time-dialog.blp:83 msgid "Default" msgstr "Domyślne" #: data/ui/med-dialog.blp:106 data/ui/one-time-dialog.blp:95 msgid "Red" msgstr "Czerwony" #: data/ui/med-dialog.blp:118 data/ui/one-time-dialog.blp:107 msgid "Orange" msgstr "Pomarańczowy" #: data/ui/med-dialog.blp:130 data/ui/one-time-dialog.blp:119 msgid "Yellow" msgstr "Żółty" #: data/ui/med-dialog.blp:142 data/ui/one-time-dialog.blp:131 msgid "Green" msgstr "Zielony" #: data/ui/med-dialog.blp:154 data/ui/one-time-dialog.blp:143 msgid "Cyan" msgstr "Cyjankowy" #: data/ui/med-dialog.blp:166 data/ui/one-time-dialog.blp:155 msgid "Blue" msgstr "Niebieski" #: data/ui/med-dialog.blp:178 data/ui/one-time-dialog.blp:167 msgid "Purple" msgstr "Fioletowy" #: data/ui/med-dialog.blp:188 data/ui/one-time-dialog.blp:177 msgid "Unit" msgstr "Jednostka" #: data/ui/med-dialog.blp:197 msgid "Icon" msgstr "Ikona" #. TRANSLATORS: Tooltip for the icons (from Pill until Potion) #: data/ui/med-dialog.blp:226 msgid "Pill" msgstr "Pigułka" #: data/ui/med-dialog.blp:242 msgid "Alternative Pill" msgstr "Alternatywna Pigułka" #: data/ui/med-dialog.blp:258 msgid "Capsule" msgstr "Kapsułka" #: data/ui/med-dialog.blp:274 msgid "Round Pill" msgstr "Okrągła Pigułka" #: data/ui/med-dialog.blp:290 msgid "Alternative Round Pill" msgstr "Alternatywna Okrągła Pigułka" #: data/ui/med-dialog.blp:306 msgid "Ampoule" msgstr "Ampułka" #: data/ui/med-dialog.blp:322 msgid "Injection" msgstr "Iniekcja" #: data/ui/med-dialog.blp:338 msgid "Square Pill" msgstr "Kwadratowa Pigułka" #: data/ui/med-dialog.blp:354 msgid "Alternative Square Pill" msgstr "Alternatywna Kwadratowa Pigułka" #: data/ui/med-dialog.blp:370 msgid "Triangle pill" msgstr "Trójkątna pigułka" #: data/ui/med-dialog.blp:386 msgid "Alternative Triangle Pill" msgstr "Alternatywna Trójkątna Pigułka" #: data/ui/med-dialog.blp:402 msgid "Bottle" msgstr "Butelka" #: data/ui/med-dialog.blp:418 msgid "Drops" msgstr "Krople" #: data/ui/med-dialog.blp:434 msgid "Potion" msgstr "Mikstura" #: data/ui/med-dialog.blp:457 msgid "Every Day" msgstr "Codziennie" #: data/ui/med-dialog.blp:473 msgid "Choose Days" msgstr "Wybierz Dni" #: data/ui/med-dialog.blp:572 msgid "Choose Day" msgstr "Wybierz Dzień" #: data/ui/med-dialog.blp:617 msgid "Change Cycle" msgstr "Zmień Cykl" #: data/ui/med-dialog.blp:642 msgid "Days Active" msgstr "Dni Aktywne" #: data/ui/med-dialog.blp:656 msgid "Days Inactive" msgstr "Dni Nieaktywne" #. TRANSLATORS: Day in cycle, try to keep it short #: data/ui/med-dialog.blp:671 msgid "Today is Cycle Day…" msgstr "Dziś Jest Dzień w Cyklu…" #: data/ui/med-dialog.blp:694 msgid "Increase Notification Priority" msgstr "Zwiększ Priorytet Powiadomień" #: data/ui/med-dialog.blp:695 msgid "Show in fullscreen mode or with 'Do Not Disturb' enabled" msgstr "" "Sprawia, że powiadomienie wyświetla się w trybie pełnoekranowym lub nawet " "jeśli włączony jest tryb 'Nie przeszkadzać'" #: data/ui/med-dialog.blp:699 msgid "Recurring Notifications" msgstr "Powtarzające Się Powiadomienia" #: data/ui/med-dialog.blp:700 msgid "Renotify until it's confirmed or skipped" msgstr "Powiadom znów póki potwierdzone lub ominięte" #: data/ui/med-dialog.blp:705 msgid "Interval in Minutes" msgstr "Interwał w Minutach" #: data/ui/med-dialog.blp:718 data/ui/refill-dialog.blp:36 msgid "Inventory" msgstr "Ekwipunek" #: data/ui/med-dialog.blp:719 msgid "Manage your stock" msgstr "Zarządzaj swoim zapasem" #: data/ui/med-dialog.blp:725 msgid "Current" msgstr "Bieżący" #: data/ui/med-dialog.blp:738 msgid "Remind Me At" msgstr "Przypomnij Mi o" #: data/ui/med-dialog.blp:751 msgid "Refill Amount" msgstr "Uzupełnij Ilość" #: data/ui/med-dialog.blp:765 msgid "Set start and end dates" msgstr "Ustaw daty rozpoczęcia i zakończenia" #: data/ui/med-dialog.blp:785 data/ui/med-dialog.blp:827 #: data/ui/one-time-dialog.blp:243 msgid "Choose Date" msgstr "Wybierz Datę" #: data/ui/med-dialog.blp:855 msgid "Mark as Confirmed" msgstr "Oznacz Jako Potwierdzone" #: data/ui/med-dialog.blp:856 msgid "" "If not manually confirmed or skipped, it will be recorded as confirmed in " "history, reducing stock if enabled" msgstr "" "Jeśli nie zostanie ręcznie potwierdzone lub pominięte, zostanie zapisane w " "historii jako potwierdzone i zredukuje stan zapasów, jeśli opcja jest " "włączona" #: data/ui/one-time-dialog.blp:44 msgid "From Treatment List" msgstr "Z Listy Leczenia" #: data/ui/one-time-dialog.blp:182 msgid "Amount" msgstr "Ilość" #: data/ui/preferences.blp:7 data/ui/window.blp:338 msgid "Preferences" msgstr "Preferencje" #: data/ui/preferences.blp:17 msgid "Auto-Start at Login" msgstr "Automatyczne Uruchamianie przy Logowaniu" #: data/ui/preferences.blp:28 msgid "Auto-Clear History" msgstr "Automatyczne Czyszczenie Historii" #: data/ui/preferences.blp:29 msgid "Keeps a maximum of 30 days" msgstr "Przechowuje maksymalnie 30 dni" #: data/ui/preferences.blp:40 msgid "Low Stock Notification" msgstr "Powiadomienie o Niskim Stanie Magazynowym" #: data/ui/preferences.blp:41 msgid "Send reminders when treatments are low in stock" msgstr "Wyślij przypomnienia, gdy leczenie jest w niskim stanie magazynowym" #: data/ui/preferences.blp:52 msgid "Notification Sound" msgstr "Dźwięk Powiadomienia" #: data/ui/preferences.blp:63 msgid "Notification Buttons" msgstr "Przyciski Powiadomień" #: data/ui/preferences.blp:64 msgid "Show or hide confirm/skip" msgstr "Pokaż lub ukryj potwierdź/pomiń" #: data/ui/preferences.blp:98 msgid "Export History As" msgstr "Eksportuj Historię Jako" #: data/ui/preferences.blp:121 msgid "Export Treatments As" msgstr "Eksportuj Farmakoterapię Jako" #: data/ui/shortcuts-dialog.blp:8 msgid "Shortcuts" msgstr "Skróty" #: data/ui/shortcuts-dialog.blp:11 msgctxt "shortcut window" msgid "Show/Hide 'As Needed'" msgstr "Pokaż/Ukryj 'Gdy Potrzeba'" #: data/ui/shortcuts-dialog.blp:16 msgctxt "shortcut window" msgid "New One-Time Entry" msgstr "Nowy Jednorazowy Wpis" #: data/ui/shortcuts-dialog.blp:21 msgctxt "shortcut window" msgid "Add New Treatment" msgstr "Dodaj Nową farmakoterapię" #: data/ui/shortcuts-dialog.blp:26 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Pokaż skróty" #: data/ui/shortcuts-dialog.blp:31 msgctxt "shortcut window" msgid "Quit" msgstr "Wyjdź" #: data/ui/window.blp:23 msgid "Show/Hide 'As Needed'" msgstr "Pokaż/Ukryj 'Gdy potrzeba'" #: data/ui/window.blp:31 msgid "Search" msgstr "Szukaj" #: data/ui/window.blp:39 msgid "Sort Treatments" msgstr "Sortuj Terapie" #: data/ui/window.blp:48 msgid "Main Menu" msgstr "Menu główne" #: data/ui/window.blp:61 msgid "Search…" msgstr "Szukaj…" #: data/ui/window.blp:71 msgid "Today" msgstr "Dziś" #: data/ui/window.blp:117 data/ui/window.blp:210 msgid "Unselect" msgstr "Odznacz" #: data/ui/window.blp:220 msgid "Remove Entries" msgstr "Usuń Wpisy" #: data/ui/window.blp:300 msgid "Name Ascending" msgstr "Nazwa Rosnąco" #: data/ui/window.blp:306 msgid "Remaining Stock (Lowest First)" msgstr "Pozostałe Zapasy (Od Najniższych)" #: data/ui/window.blp:312 msgid "Remaining Stock (Highest First)" msgstr "Pozostałe Zapasy (Od Największych)" #: data/ui/window.blp:318 #, fuzzy #| msgid "As Needed" msgid "As Needed Last" msgstr "Gdy potrzeba" #: data/ui/window.blp:324 #, fuzzy #| msgid "Ended on" msgid "Ended Last" msgstr "Zakończono w" #: data/ui/window.blp:330 #, fuzzy #| msgid "As Needed" msgid "As Needed/Ended Last" msgstr "Gdy potrzeba" #: data/ui/window.blp:343 #, fuzzy #| msgctxt "shortcut window" #| msgid "Show Shortcuts" msgid "Keyboard Shortcuts" msgstr "Pokaż skróty" #: data/ui/window.blp:348 msgid "About Dosage" msgstr "O Dawkowanie" #~ msgid "Empty Treatments" #~ msgstr "Brak Leczeń" #~ msgid "Empty History" #~ msgstr "Pusta Historia" #~ msgid "No Treatments Added" #~ msgstr "Nie Dodano Leczeń" #~ msgctxt "shortcut window" #~ msgid "General" #~ msgstr "Ogólne" #~ msgctxt "shortcut window" #~ msgid "Preferences" #~ msgstr "Preferencje" #~ msgid "After meal" #~ msgstr "Po posiłku" #~ msgid "Refill Stock" #~ msgstr "Uzupełnij Zapas" #~ msgid "Low Stock" #~ msgstr "Niski Zapas" #~ msgid "Form" #~ msgstr "Kształt" #~ msgid "Color and icon" #~ msgstr "Kolor i ikona" #~ msgid "Time and amount" #~ msgstr "Czas i ilość" #~ msgid "Restore" #~ msgstr "Przywróć" #~ msgid "New entry" #~ msgstr "Nowy wpis" diegopvlk-Dosage-bd9126a/po/pt.po000066400000000000000000000533671514145341100167260ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) 2023 Diego Povliuk # This file is distributed under the license GPLv3-or-later. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: io.github.diegopvlk.Dosage\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-12-19 16:12-0300\n" "PO-Revision-Date: 2025-12-22 17:18+0000\n" "Last-Translator: Diego Povliuk \n" "Language-Team: Portuguese \n" "Language: pt\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 5.15.1\n" #. TRANSLATORS: App name, translate to your language and follow the capitalization #: data/io.github.diegopvlk.Dosage.appdata.xml.in:20 #: data/io.github.diegopvlk.Dosage.desktop.in:3 #: src/utils/getTreatmentsExportFile.js:173 src/utils/saveFiles.js:22 #: src/utils/saveFiles.js:44 src/main.js:60 src/window.js:1060 #: data/ui/window.blp:6 msgid "Dosage" msgstr "Dosagem" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:21 msgid "Keep track of your treatments" msgstr "Acompanhe os seus tratamentos" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:24 msgid "" "Easily manage and track treatments with Dosage: notifications, history, " "multiple doses, flexible frequency, customization, stock monitoring, and " "duration control" msgstr "" "Facilmente gira os seus tratamentos com o Dosagem: notificações, histórico, " "doses múltiplas, frequências, monitore o estoque e defina a duração do " "tratamento" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:25 msgid "Features:" msgstr "Recursos:" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:27 msgid "Notifications — Get reminders at the right time" msgstr "Notificações — Receba lembretes na hora certa" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:28 msgid "History — See which medications you took, skipped or missed" msgstr "Histórico — Veja quais medicamentos confirmou, ignorou ou esqueceu" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:29 msgid "Dosage management — Multiple doses with different times" msgstr "Gestão de dosagem — Múltiplas doses com horários diferentes" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:30 msgid "" "Frequency modes — Every day, specific days, cycle or just when necessary" msgstr "" "Frequência — Todos os dias, dias específicos, ciclo ou apenas quando " "necessário" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:31 msgid "Color and icon — Give a shape for your treatment" msgstr "Cor e ícone — Dê uma forma ao seu tratamento" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:32 msgid "Inventory tracking — Monitor your stock and get reminded when it's low" msgstr "Estoque — Monitore e seja lembrado quando estiver baixo" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:33 msgid "Duration — Define the start and end dates" msgstr "Duração — Defina datas para começar e terminar" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:44 msgid "Dosage today window in light theme" msgstr "Janela do Dosagem hoje em tema claro" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:49 msgid "Dosage preferences window in light theme" msgstr "Janela de prefêrencias em tema claro" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:54 msgid "Dosage edit treatment window in light theme" msgstr "Janela de edição de tratamento em tema claro" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:59 msgid "Dosage today window in dark theme" msgstr "Janela do Dosagem hoje em tema escuro" #. TRANSLATORS: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/io.github.diegopvlk.Dosage.desktop.in:10 msgid "Medication;Tracker;Reminder;Today;Treatments;Pill;Drug;Remedy;" msgstr "Medicação;Rastreador;Lembrete;Hoje;Tratamentos;Pílula;Droga;Remédio;" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:232 msgid "Date" msgstr "Data" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:199 msgid "Time" msgstr "Hora" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/med-dialog.blp:61 data/ui/one-time-dialog.blp:49 msgid "Name" msgstr "Nome" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:183 msgid "Dose" msgstr "Dose" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 msgid "Status" msgstr "Status" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 msgid "Time Confirmed" msgstr "Hora Confirmada" #: src/utils/getHistoryExportFile.js:38 src/utils/getHistoryExportFile.js:117 #: src/editHistDialog.js:68 src/historyFactory.js:186 msgid "Missed" msgstr "Perdido" #: src/utils/getHistoryExportFile.js:41 src/utils/getHistoryExportFile.js:121 #: src/historyFactory.js:183 data/ui/edit-hist-dialog.blp:111 msgid "Skipped" msgstr "Ignorado" #: src/utils/getHistoryExportFile.js:44 src/utils/getHistoryExportFile.js:55 #: src/utils/getHistoryExportFile.js:125 src/utils/getHistoryExportFile.js:138 #: src/editHistDialog.js:73 src/historyFactory.js:190 #: data/ui/edit-hist-dialog.blp:116 msgid "Confirmed" msgstr "Confirmado" #: src/utils/getHistoryExportFile.js:52 src/utils/getHistoryExportFile.js:134 #: src/editHistDialog.js:56 src/historyFactory.js:178 msgid "Auto-Confirmed" msgstr "Auto-Confirmado" #: src/utils/getHistoryExportFile.js:55 src/utils/getHistoryExportFile.js:138 #: src/editHistDialog.js:74 msgid "Time Unknown" msgstr "Hora Desconhecida" #. TRANSLATORS: Context: 1 Pill at 19:00 #: src/utils/getTreatmentsExportFile.js:69 msgid "at" msgstr "às" #: src/utils/getTreatmentsExportFile.js:89 data/ui/med-dialog.blp:443 msgid "Notes" msgstr "Notas" #: src/utils/getTreatmentsExportFile.js:96 src/utils/locale.js:37 #: src/treatmentsFactory.js:268 msgid "Daily" msgstr "Diariamente" #: src/utils/getTreatmentsExportFile.js:102 src/medDialog.js:428 #: data/ui/med-dialog.blp:459 msgid "Day of Month" msgstr "Dia do Mês" #. TRANSLATORS: Context: 2 day(s) on, 1 day(s) off #: src/utils/getTreatmentsExportFile.js:109 msgid "day(s) on" msgstr "dia(s) de uso" #. TRANSLATORS: Context: 2 day(s) on, 1 day(s) off #: src/utils/getTreatmentsExportFile.js:111 msgid "day(s) off" msgstr "dia(s) de pausa" #: src/utils/getTreatmentsExportFile.js:122 src/todayFactory.js:41 #: src/treatmentsFactory.js:298 data/ui/med-dialog.blp:461 msgid "As Needed" msgstr "Quando Necessário" #: src/utils/getTreatmentsExportFile.js:132 data/ui/med-dialog.blp:764 msgid "Duration" msgstr "Duração" #: src/utils/getTreatmentsExportFile.js:135 msgid "Started on" msgstr "Começou em" #: src/utils/getTreatmentsExportFile.js:136 data/ui/med-dialog.blp:775 msgid "Start" msgstr "Começo" #: src/utils/getTreatmentsExportFile.js:138 src/treatmentsFactory.js:256 msgid "Ended on" msgstr "Terminou em" #: src/utils/getTreatmentsExportFile.js:138 data/ui/med-dialog.blp:817 msgid "End" msgstr "Fim" #: src/utils/getTreatmentsExportFile.js:173 src/utils/saveFiles.js:44 #: data/ui/window.blp:234 msgid "Treatments" msgstr "Tratamentos" #: src/utils/getTreatmentsExportFile.js:184 msgid "Generated on" msgstr "Gerado em" #: src/utils/getTreatmentsExportFile.js:187 msgid "Ongoing" msgstr "Em Andamento" #: src/utils/getTreatmentsExportFile.js:188 msgid "Non-scheduled" msgstr "Não Programados" #: src/utils/getTreatmentsExportFile.js:189 msgid "Finished" msgstr "Finalizados" #: src/utils/locale.js:33 msgid "Weekends" msgstr "Finais de Semana" #: src/utils/locale.js:35 msgid "Weekdays" msgstr "Dias da Semana" #: src/utils/saveFiles.js:22 data/ui/window.blp:156 msgid "History" msgstr "Histórico" #: src/editHistDialog.js:60 src/editHistDialog.js:89 src/editHistDialog.js:110 msgid "Confirmed At" msgstr "Confirmado Às" #: src/editHistDialog.js:64 src/editHistDialog.js:114 msgid "Skipped At" msgstr "Ignorado Às" #: src/historyFactory.js:47 msgid "Select to be Removed" msgstr "Selecionar Para Remover" #. TRANSLATORS: "Your Name " #: src/main.js:69 msgid "translator-credits" msgstr "" "Diego Povliuk \n" "Silvério Santos " #: src/main.js:73 msgid "Thanks to These Projects!" msgstr "Obrigado à Esses Projetos!" #: src/medDialog.js:99 msgid "Edit Treatment" msgstr "Editar Tratamento" #: src/medDialog.js:100 data/ui/edit-hist-dialog.blp:30 #: data/ui/preferences.blp:112 data/ui/preferences.blp:132 #: data/ui/refill-dialog.blp:67 msgid "Save" msgstr "Gravar" #: src/medDialog.js:114 msgid "Copy" msgstr "Cópia" #: src/medDialog.js:217 msgid "Add Dose" msgstr "Adicionar Dose" #: src/medDialog.js:419 msgid "Choose" msgstr "Escolha" #: src/medDialog.js:429 src/treatmentsFactory.js:274 msgid "Day" msgstr "Dia" #: src/medDialog.js:456 data/ui/med-dialog.blp:458 msgid "Specific Days" msgstr "Dias Específicos" #: src/medDialog.js:463 src/treatmentsFactory.js:295 data/ui/med-dialog.blp:460 msgid "Cycle" msgstr "Ciclo" #: src/medDialog.js:467 data/ui/med-dialog.blp:452 msgid "Frequency" msgstr "Frequência" #: src/medDialog.js:500 msgid "Empty Name" msgstr "Nome Vazio" #: src/medDialog.js:506 msgid "Empty Unit" msgstr "Unidade Vazia" #: src/medDialog.js:513 msgid "Choose at Least One Day" msgstr "Escolha Pelo Menos Um Dia" #: src/medDialog.js:527 src/oneTimeDialog.js:187 msgid "Name Already on Treatment List" msgstr "Nome Já na Lista de Tratamentos" #: src/medDialog.js:542 msgid "Duplicated Time" msgstr "Hora Duplicada" #: src/medDialog.js:582 msgid "Are You Sure?" msgstr "Tem certeza?" #: src/medDialog.js:583 msgid "will be deleted" msgstr "será excluído" #: src/medDialog.js:586 data/ui/edit-hist-dialog.blp:18 #: data/ui/med-dialog.blp:19 msgid "Cancel" msgstr "Cancelar" #: src/medDialog.js:587 src/treatmentsFactory.js:128 data/ui/med-dialog.blp:865 msgid "Delete" msgstr "Apagar" #: src/oneTimeDialog.js:110 msgid "New" msgstr "Novo" #: src/oneTimeDialog.js:121 data/ui/med-dialog.blp:189 #: data/ui/one-time-dialog.blp:178 msgid "Pill(s)" msgstr "Comprimido(s)" #: src/prefsDialog.js:63 msgid "Accept to allow running in the background and receive notifications" msgstr "" "Aceite para permitir a execução em segundo plano e receber notificações" #: src/prefsDialog.js:74 src/window.js:259 msgid "An Issue Has Occurred" msgstr "Ocorreu um Erro" #: src/prefsDialog.js:77 src/window.js:267 src/window.js:289 src/window.js:311 #: src/window.js:329 msgid "Close" msgstr "Fechar" #: src/timeDoseRow.js:34 msgid "Remove Dose" msgstr "Remover Dose" #: src/timeDoseRow.js:40 data/ui/edit-hist-dialog.blp:90 #: data/ui/one-time-dialog.blp:210 msgid "Change Time" msgstr "Mudar Hora" #: src/todayFactory.js:134 msgid "Change Dose" msgstr "Alterar Dose" #: src/treatmentsFactory.js:96 src/treatmentsFactory.js:126 #: data/ui/refill-dialog.blp:7 msgid "Refill" msgstr "Reabastecer" #: src/treatmentsFactory.js:125 msgid "Edit" msgstr "Editar" #: src/treatmentsFactory.js:127 msgid "Duplicate" msgstr "Duplicar" #: src/treatmentsFactory.js:146 msgid "Options" msgstr "Opções" #. TRANSLATORS: keep the %d it's where the number goes #: src/treatmentsFactory.js:244 #, javascript-format msgid "%d Remaining" msgstr "%d Restantes" #. TRANSLATORS: label for when duration is enabled #: src/treatmentsFactory.js:254 msgid "Starts on" msgstr "Começa em" #: src/treatmentsFactory.js:255 msgid "Until" msgstr "Até" #: src/treatmentsFactory.js:283 src/treatmentsFactory.js:286 msgid "Next Dose" msgstr "Próxima Dose" #: src/window.js:173 src/window.js:943 msgid "Reminder" msgstr "Lembrete" #. TRANSLATORS: Notification text for when the inventory is low #: src/window.js:175 msgid "You have treatments low in stock" msgstr "Você tem tratamentos em baixo estoque" #: src/window.js:492 msgid "Show All" msgstr "Mostrar Todos" #: src/window.js:515 msgid "Show Less" msgstr "Mostrar Menos" #: src/window.js:648 msgid "No Results Found" msgstr "Nenhum Resultado Encontrado" #: src/window.js:648 src/window.js:1517 msgid "No History" msgstr "Histórico Vazio" #: src/window.js:818 data/ui/window.blp:260 msgid "No Treatments" msgstr "Sem Tratamentos" #: src/window.js:818 msgid "All Done for Today" msgstr "Tudo Feito Por Hoje" #: src/window.js:906 src/window.js:1090 data/ui/one-time-dialog.blp:285 #: data/ui/preferences.blp:73 msgid "Confirm" msgstr "Confirmar" #: src/window.js:906 msgid "Confirm All" msgstr "Confirmar Todos" #: src/window.js:907 data/ui/preferences.blp:84 data/ui/window.blp:146 msgid "Skip" msgstr "Ignorar" #: src/window.js:907 msgid "Skip All" msgstr "Ignorar Todos" #. TRANSLATORS: keep the %d it's where the number goes #: src/window.js:938 #, javascript-format msgid "and %d more" msgstr "e mais %d" #: src/window.js:1090 data/ui/one-time-dialog.blp:7 data/ui/window.blp:133 msgid "One-Time Entry" msgstr "Registo Único" #: src/window.js:1295 data/ui/window.blp:353 msgid "Quit" msgstr "Sair" #: data/ui/edit-hist-dialog.blp:7 msgid "Edit Entry" msgstr "Editar Registo" #: data/ui/med-dialog.blp:7 msgid "New Treatment" msgstr "Novo Tratamento" #: data/ui/med-dialog.blp:31 data/ui/window.blp:283 msgid "Add" msgstr "Adicionar" #: data/ui/med-dialog.blp:69 data/ui/one-time-dialog.blp:58 msgid "Color" msgstr "Cor" #. TRANSLATORS: Tooltip for the colors (from Default until Purple) #: data/ui/med-dialog.blp:94 data/ui/one-time-dialog.blp:83 msgid "Default" msgstr "Padrão" #: data/ui/med-dialog.blp:106 data/ui/one-time-dialog.blp:95 msgid "Red" msgstr "Vermelho" #: data/ui/med-dialog.blp:118 data/ui/one-time-dialog.blp:107 msgid "Orange" msgstr "Laranja" #: data/ui/med-dialog.blp:130 data/ui/one-time-dialog.blp:119 msgid "Yellow" msgstr "Amarelo" #: data/ui/med-dialog.blp:142 data/ui/one-time-dialog.blp:131 msgid "Green" msgstr "Verde" #: data/ui/med-dialog.blp:154 data/ui/one-time-dialog.blp:143 msgid "Cyan" msgstr "Ciano" #: data/ui/med-dialog.blp:166 data/ui/one-time-dialog.blp:155 msgid "Blue" msgstr "Azul" #: data/ui/med-dialog.blp:178 data/ui/one-time-dialog.blp:167 msgid "Purple" msgstr "Roxo" #: data/ui/med-dialog.blp:188 data/ui/one-time-dialog.blp:177 msgid "Unit" msgstr "Unidade" #: data/ui/med-dialog.blp:197 msgid "Icon" msgstr "Ícone" #. TRANSLATORS: Tooltip for the icons (from Pill until Potion) #: data/ui/med-dialog.blp:226 msgid "Pill" msgstr "Comprimido" #: data/ui/med-dialog.blp:242 msgid "Alternative Pill" msgstr "Comprimido Alternativo" #: data/ui/med-dialog.blp:258 msgid "Capsule" msgstr "Cápsula" #: data/ui/med-dialog.blp:274 msgid "Round Pill" msgstr "Comprimido Redondo" #: data/ui/med-dialog.blp:290 msgid "Alternative Round Pill" msgstr "Comprimido Redondo Alternativo" #: data/ui/med-dialog.blp:306 msgid "Ampoule" msgstr "Ampola" #: data/ui/med-dialog.blp:322 msgid "Injection" msgstr "Injeção" #: data/ui/med-dialog.blp:338 msgid "Square Pill" msgstr "Comprimido Quadrado" #: data/ui/med-dialog.blp:354 msgid "Alternative Square Pill" msgstr "Comprimido Quadrado Alternativo" #: data/ui/med-dialog.blp:370 msgid "Triangle pill" msgstr "Comprimido Triangular" #: data/ui/med-dialog.blp:386 msgid "Alternative Triangle Pill" msgstr "Comprimido Triangular Alternativo" #: data/ui/med-dialog.blp:402 msgid "Bottle" msgstr "Frasco" #: data/ui/med-dialog.blp:418 msgid "Drops" msgstr "Gotas" #: data/ui/med-dialog.blp:434 msgid "Potion" msgstr "Poção" #: data/ui/med-dialog.blp:457 msgid "Every Day" msgstr "Todos os Dias" #: data/ui/med-dialog.blp:473 msgid "Choose Days" msgstr "Escolha os Dias" #: data/ui/med-dialog.blp:572 msgid "Choose Day" msgstr "Escolha o Dia" #: data/ui/med-dialog.blp:617 msgid "Change Cycle" msgstr "Mudar Ciclo" #: data/ui/med-dialog.blp:642 msgid "Days Active" msgstr "Dias Ativos" #: data/ui/med-dialog.blp:656 msgid "Days Inactive" msgstr "Dias Inativos" #. TRANSLATORS: Day in cycle, try to keep it short #: data/ui/med-dialog.blp:671 msgid "Today is Cycle Day…" msgstr "Hoje é o Dia…" #: data/ui/med-dialog.blp:694 msgid "Increase Notification Priority" msgstr "Aumentar a Prioridade da Notificação" #: data/ui/med-dialog.blp:695 msgid "Show in fullscreen mode or with 'Do Not Disturb' enabled" msgstr "" "Mostrar notificações em tela cheia ou com o modo 'Não Perturbe' ativado" #: data/ui/med-dialog.blp:699 msgid "Recurring Notifications" msgstr "Notificações Recorrentes" #: data/ui/med-dialog.blp:700 msgid "Renotify until it's confirmed or skipped" msgstr "Renotificar até ser confirmado ou ignorado" #: data/ui/med-dialog.blp:705 msgid "Interval in Minutes" msgstr "Intervalo em Minutos" #: data/ui/med-dialog.blp:718 data/ui/refill-dialog.blp:36 msgid "Inventory" msgstr "Inventário" #: data/ui/med-dialog.blp:719 msgid "Manage your stock" msgstr "Gira o seu estoque" #: data/ui/med-dialog.blp:725 msgid "Current" msgstr "Atual" #: data/ui/med-dialog.blp:738 msgid "Remind Me At" msgstr "Lembrar na Quantidade" #: data/ui/med-dialog.blp:751 msgid "Refill Amount" msgstr "Quantidade ao Reabastecer" #: data/ui/med-dialog.blp:765 msgid "Set start and end dates" msgstr "Defina datas para começar e terminar" #: data/ui/med-dialog.blp:785 data/ui/med-dialog.blp:827 #: data/ui/one-time-dialog.blp:243 msgid "Choose Date" msgstr "Escolha a Data" #: data/ui/med-dialog.blp:855 msgid "Mark as Confirmed" msgstr "Marcar como Confirmado" #: data/ui/med-dialog.blp:856 msgid "" "If not manually confirmed or skipped, it will be recorded as confirmed in " "history, reducing stock if enabled" msgstr "" "Se não confirmado ou ignorado manualmente, será registrado como confirmado " "no histórico, reduzindo o estoque se habilitado" #: data/ui/one-time-dialog.blp:44 msgid "From Treatment List" msgstr "Da Lista de Tratamentos" #: data/ui/one-time-dialog.blp:182 msgid "Amount" msgstr "Quantidade" #: data/ui/preferences.blp:7 data/ui/window.blp:338 msgid "Preferences" msgstr "Preferências" #: data/ui/preferences.blp:17 msgid "Auto-Start at Login" msgstr "Início Automático no Login" #: data/ui/preferences.blp:28 msgid "Auto-Clear History" msgstr "Limpeza de Histórico Automática" #: data/ui/preferences.blp:29 msgid "Keeps a maximum of 30 days" msgstr "Mantém no máximo 30 dias" #: data/ui/preferences.blp:40 msgid "Low Stock Notification" msgstr "Notificações de Estoque Baixo" #: data/ui/preferences.blp:41 msgid "Send reminders when treatments are low in stock" msgstr "Mandar lembretes quando tratamentos estiverem com estoque baixo" #: data/ui/preferences.blp:52 msgid "Notification Sound" msgstr "Som de Notificação" #: data/ui/preferences.blp:63 msgid "Notification Buttons" msgstr "Botões da Notificação" #: data/ui/preferences.blp:64 msgid "Show or hide confirm/skip" msgstr "Mostrar ou ocultar confirmar/ignorar" #: data/ui/preferences.blp:98 msgid "Export History As" msgstr "Exportar Histórico Como" #: data/ui/preferences.blp:121 msgid "Export Treatments As" msgstr "Exportar Tratamentos Como" #: data/ui/shortcuts-dialog.blp:8 msgid "Shortcuts" msgstr "Atalhos" #: data/ui/shortcuts-dialog.blp:11 msgctxt "shortcut window" msgid "Show/Hide 'As Needed'" msgstr "Mostrar/Esconder 'Quando Necessário'" #: data/ui/shortcuts-dialog.blp:16 msgctxt "shortcut window" msgid "New One-Time Entry" msgstr "Novo Registo Único" #: data/ui/shortcuts-dialog.blp:21 msgctxt "shortcut window" msgid "Add New Treatment" msgstr "Adicionar Novo Tratamento" #: data/ui/shortcuts-dialog.blp:26 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Mostrar Atalhos" #: data/ui/shortcuts-dialog.blp:31 msgctxt "shortcut window" msgid "Quit" msgstr "Sair" #: data/ui/window.blp:23 msgid "Show/Hide 'As Needed'" msgstr "Mostrar/Esconder 'Quando Necessário'" #: data/ui/window.blp:31 msgid "Search" msgstr "Pesquisar" #: data/ui/window.blp:39 msgid "Sort Treatments" msgstr "Ordenar Tratamentos" #: data/ui/window.blp:48 msgid "Main Menu" msgstr "Menu Principal" #: data/ui/window.blp:61 msgid "Search…" msgstr "Pesquisar…" #: data/ui/window.blp:71 msgid "Today" msgstr "Hoje" #: data/ui/window.blp:117 data/ui/window.blp:210 msgid "Unselect" msgstr "Desmarcar" #: data/ui/window.blp:220 msgid "Remove Entries" msgstr "Remover Entradas" #: data/ui/window.blp:300 msgid "Name Ascending" msgstr "Nome Crescente" #: data/ui/window.blp:306 msgid "Remaining Stock (Lowest First)" msgstr "Estoque Restante (Menor Primeiro)" #: data/ui/window.blp:312 msgid "Remaining Stock (Highest First)" msgstr "Estoque Restante (Maior Primeiro)" #: data/ui/window.blp:318 msgid "As Needed Last" msgstr "Quando Necessários em Último" #: data/ui/window.blp:324 msgid "Ended Last" msgstr "Terminados em Últimos" #: data/ui/window.blp:330 msgid "As Needed/Ended Last" msgstr "Quando Necessários/Terminados em Último" #: data/ui/window.blp:343 msgid "Keyboard Shortcuts" msgstr "Atalhos de Teclado" #: data/ui/window.blp:348 msgid "About Dosage" msgstr "Sobre o Dosagem" #~ msgid "Empty Treatments" #~ msgstr "Tratamentos Vazios" #~ msgid "Empty History" #~ msgstr "Histórico Vazio" #~ msgid "No Treatments Added" #~ msgstr "Nenhum Tratamento Adicionado" #~ msgctxt "shortcut window" #~ msgid "General" #~ msgstr "Geral" #~ msgctxt "shortcut window" #~ msgid "Preferences" #~ msgstr "Preferências" #~ msgid "After meal" #~ msgstr "Após refeição" #~ msgid "Refill Stock" #~ msgstr "Reabastecer Estoque" #~ msgid "Low Stock" #~ msgstr "Estoque Baixo" #~ msgid "Form" #~ msgstr "Forma" #~ msgid "Color and icon" #~ msgstr "Cor e ícone" #~ msgid "Time and amount" #~ msgstr "Hora e quantidade" #~ msgid "Restore" #~ msgstr "Restaurar" #~ msgid "New entry" #~ msgstr "Novo registo" #~ msgid "Delete dose" #~ msgstr "Apagar dose" #~ msgid "Name already exists" #~ msgstr "Nome já existe" #~ msgid "Add to history" #~ msgstr "Adc. ao histórico" #~ msgid "medication" #~ msgstr "medicação" #~ msgid "tracker" #~ msgstr "rastreador" #~ msgid "treatments" #~ msgstr "tratamentos" #~ msgid "pill" #~ msgstr "pílula" #~ msgid "drug" #~ msgstr "droga" #~ msgid "remedy" #~ msgstr "remédio" diegopvlk-Dosage-bd9126a/po/pt_BR.po000066400000000000000000000563111514145341100173010ustar00rootroot00000000000000# Tradução em português brasileiro. # Copyright (C) 2023 Diego Povliuk # This file is distributed under the license GPLv3-or-later. # Diego Povliuk , 2023. # msgid "" msgstr "" "Project-Id-Version: io.github.diegopvlk.Dosage\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-12-19 16:12-0300\n" "PO-Revision-Date: 2025-12-22 17:18+0000\n" "Last-Translator: Diego Povliuk \n" "Language-Team: Portuguese (Brazil) \n" "Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 5.15.1\n" #. TRANSLATORS: App name, translate to your language and follow the capitalization #: data/io.github.diegopvlk.Dosage.appdata.xml.in:20 #: data/io.github.diegopvlk.Dosage.desktop.in:3 #: src/utils/getTreatmentsExportFile.js:173 src/utils/saveFiles.js:22 #: src/utils/saveFiles.js:44 src/main.js:60 src/window.js:1060 #: data/ui/window.blp:6 msgid "Dosage" msgstr "Dosagem" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:21 msgid "Keep track of your treatments" msgstr "Acompanhe seus tratamentos" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:24 msgid "" "Easily manage and track treatments with Dosage: notifications, history, " "multiple doses, flexible frequency, customization, stock monitoring, and " "duration control" msgstr "" "Facilmente gerencie seus tratamentos com o Dosagem: notificações, histórico, " "doses múltiplas, frequências, monitore o estoque e defina a duração do " "tratamento" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:25 msgid "Features:" msgstr "Recursos:" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:27 msgid "Notifications — Get reminders at the right time" msgstr "Notificações — Receba lembretes na hora certa" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:28 msgid "History — See which medications you took, skipped or missed" msgstr "" "Histórico — Veja quais medicamentos você confirmou, ignorou ou esqueceu" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:29 msgid "Dosage management — Multiple doses with different times" msgstr "Gerenciamento de dosagem — Múltiplas doses com horários diferentes" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:30 msgid "" "Frequency modes — Every day, specific days, cycle or just when necessary" msgstr "" "Frequência — Todos os dias, dias específicos, ciclo ou apenas quando " "necessário" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:31 msgid "Color and icon — Give a shape for your treatment" msgstr "Cor e ícone — Dê uma forma ao seu tratamento" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:32 msgid "Inventory tracking — Monitor your stock and get reminded when it's low" msgstr "Estoque — Monitore e seja lembrado quando estiver baixo" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:33 msgid "Duration — Define the start and end dates" msgstr "Duração — Defina datas para começar e terminar" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:44 msgid "Dosage today window in light theme" msgstr "Janela do Dosagem hoje em tema claro" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:49 msgid "Dosage preferences window in light theme" msgstr "Janela de preferências em tema claro" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:54 msgid "Dosage edit treatment window in light theme" msgstr "Janela de edição de tratamento em tema claro" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:59 msgid "Dosage today window in dark theme" msgstr "Janela do Dosagem hoje em tema escuro" #. TRANSLATORS: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/io.github.diegopvlk.Dosage.desktop.in:10 msgid "Medication;Tracker;Reminder;Today;Treatments;Pill;Drug;Remedy;" msgstr "Medicação;Rastreador;Lembrete;Hoje;Tratamentos;Pílula;Droga;Remédio;" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:232 msgid "Date" msgstr "Data" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:199 msgid "Time" msgstr "Hora" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/med-dialog.blp:61 data/ui/one-time-dialog.blp:49 msgid "Name" msgstr "Nome" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:183 msgid "Dose" msgstr "Dose" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 msgid "Status" msgstr "Status" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 msgid "Time Confirmed" msgstr "Hora Confirmada" #: src/utils/getHistoryExportFile.js:38 src/utils/getHistoryExportFile.js:117 #: src/editHistDialog.js:68 src/historyFactory.js:186 msgid "Missed" msgstr "Perdido" #: src/utils/getHistoryExportFile.js:41 src/utils/getHistoryExportFile.js:121 #: src/historyFactory.js:183 data/ui/edit-hist-dialog.blp:111 msgid "Skipped" msgstr "Ignorado" #: src/utils/getHistoryExportFile.js:44 src/utils/getHistoryExportFile.js:55 #: src/utils/getHistoryExportFile.js:125 src/utils/getHistoryExportFile.js:138 #: src/editHistDialog.js:73 src/historyFactory.js:190 #: data/ui/edit-hist-dialog.blp:116 msgid "Confirmed" msgstr "Confirmado" #: src/utils/getHistoryExportFile.js:52 src/utils/getHistoryExportFile.js:134 #: src/editHistDialog.js:56 src/historyFactory.js:178 msgid "Auto-Confirmed" msgstr "Auto-Confirmado" #: src/utils/getHistoryExportFile.js:55 src/utils/getHistoryExportFile.js:138 #: src/editHistDialog.js:74 msgid "Time Unknown" msgstr "Hora Desconhecida" #. TRANSLATORS: Context: 1 Pill at 19:00 #: src/utils/getTreatmentsExportFile.js:69 msgid "at" msgstr "às" #: src/utils/getTreatmentsExportFile.js:89 data/ui/med-dialog.blp:443 msgid "Notes" msgstr "Notas" #: src/utils/getTreatmentsExportFile.js:96 src/utils/locale.js:37 #: src/treatmentsFactory.js:268 msgid "Daily" msgstr "Diariamente" #: src/utils/getTreatmentsExportFile.js:102 src/medDialog.js:428 #: data/ui/med-dialog.blp:459 msgid "Day of Month" msgstr "Dia do Mês" #. TRANSLATORS: Context: 2 day(s) on, 1 day(s) off #: src/utils/getTreatmentsExportFile.js:109 msgid "day(s) on" msgstr "dia(s) de uso" #. TRANSLATORS: Context: 2 day(s) on, 1 day(s) off #: src/utils/getTreatmentsExportFile.js:111 msgid "day(s) off" msgstr "dia(s) de pausa" #: src/utils/getTreatmentsExportFile.js:122 src/todayFactory.js:41 #: src/treatmentsFactory.js:298 data/ui/med-dialog.blp:461 msgid "As Needed" msgstr "Quando Necessário" #: src/utils/getTreatmentsExportFile.js:132 data/ui/med-dialog.blp:764 msgid "Duration" msgstr "Duração" #: src/utils/getTreatmentsExportFile.js:135 msgid "Started on" msgstr "Começou em" #: src/utils/getTreatmentsExportFile.js:136 data/ui/med-dialog.blp:775 msgid "Start" msgstr "Começo" #: src/utils/getTreatmentsExportFile.js:138 src/treatmentsFactory.js:256 msgid "Ended on" msgstr "Terminou em" #: src/utils/getTreatmentsExportFile.js:138 data/ui/med-dialog.blp:817 msgid "End" msgstr "Fim" #: src/utils/getTreatmentsExportFile.js:173 src/utils/saveFiles.js:44 #: data/ui/window.blp:234 msgid "Treatments" msgstr "Tratamentos" #: src/utils/getTreatmentsExportFile.js:184 msgid "Generated on" msgstr "Gerado em" #: src/utils/getTreatmentsExportFile.js:187 msgid "Ongoing" msgstr "Em Andamento" #: src/utils/getTreatmentsExportFile.js:188 msgid "Non-scheduled" msgstr "Não Programados" #: src/utils/getTreatmentsExportFile.js:189 msgid "Finished" msgstr "Finalizados" #: src/utils/locale.js:33 msgid "Weekends" msgstr "Finais de Semana" #: src/utils/locale.js:35 msgid "Weekdays" msgstr "Dias da Semana" #: src/utils/saveFiles.js:22 data/ui/window.blp:156 msgid "History" msgstr "Histórico" #: src/editHistDialog.js:60 src/editHistDialog.js:89 src/editHistDialog.js:110 msgid "Confirmed At" msgstr "Confirmado Às" #: src/editHistDialog.js:64 src/editHistDialog.js:114 msgid "Skipped At" msgstr "Ignorado Às" #: src/historyFactory.js:47 msgid "Select to be Removed" msgstr "Selecionar Para Remover" #. TRANSLATORS: "Your Name " #: src/main.js:69 msgid "translator-credits" msgstr "Diego Povliuk " #: src/main.js:73 msgid "Thanks to These Projects!" msgstr "Obrigado à Esses Projetos!" #: src/medDialog.js:99 msgid "Edit Treatment" msgstr "Editar Tratamento" #: src/medDialog.js:100 data/ui/edit-hist-dialog.blp:30 #: data/ui/preferences.blp:112 data/ui/preferences.blp:132 #: data/ui/refill-dialog.blp:67 msgid "Save" msgstr "Salvar" #: src/medDialog.js:114 msgid "Copy" msgstr "Cópia" #: src/medDialog.js:217 msgid "Add Dose" msgstr "Adicionar Dose" #: src/medDialog.js:419 msgid "Choose" msgstr "Escolha" #: src/medDialog.js:429 src/treatmentsFactory.js:274 msgid "Day" msgstr "Dia" #: src/medDialog.js:456 data/ui/med-dialog.blp:458 msgid "Specific Days" msgstr "Dias Específicos" #: src/medDialog.js:463 src/treatmentsFactory.js:295 data/ui/med-dialog.blp:460 msgid "Cycle" msgstr "Ciclo" #: src/medDialog.js:467 data/ui/med-dialog.blp:452 msgid "Frequency" msgstr "Frequência" #: src/medDialog.js:500 msgid "Empty Name" msgstr "Nome Vazio" #: src/medDialog.js:506 msgid "Empty Unit" msgstr "Unidade Vazia" #: src/medDialog.js:513 msgid "Choose at Least One Day" msgstr "Escolha Pelo Menos Um Dia" #: src/medDialog.js:527 src/oneTimeDialog.js:187 msgid "Name Already on Treatment List" msgstr "Nome Já na Lista de Tratamentos" #: src/medDialog.js:542 msgid "Duplicated Time" msgstr "Hora Duplicada" #: src/medDialog.js:582 msgid "Are You Sure?" msgstr "Tem Certeza?" #: src/medDialog.js:583 msgid "will be deleted" msgstr "será excluído" #: src/medDialog.js:586 data/ui/edit-hist-dialog.blp:18 #: data/ui/med-dialog.blp:19 msgid "Cancel" msgstr "Cancelar" #: src/medDialog.js:587 src/treatmentsFactory.js:128 data/ui/med-dialog.blp:865 msgid "Delete" msgstr "Excluir" #: src/oneTimeDialog.js:110 msgid "New" msgstr "Novo" #: src/oneTimeDialog.js:121 data/ui/med-dialog.blp:189 #: data/ui/one-time-dialog.blp:178 msgid "Pill(s)" msgstr "Comprimido(s)" #: src/prefsDialog.js:63 msgid "Accept to allow running in the background and receive notifications" msgstr "" "Aceite para permitir a execução em segundo plano e receber notificações" #: src/prefsDialog.js:74 src/window.js:259 msgid "An Issue Has Occurred" msgstr "Ocorreu um Erro" #: src/prefsDialog.js:77 src/window.js:267 src/window.js:289 src/window.js:311 #: src/window.js:329 msgid "Close" msgstr "Fechar" #: src/timeDoseRow.js:34 msgid "Remove Dose" msgstr "Remover Dose" #: src/timeDoseRow.js:40 data/ui/edit-hist-dialog.blp:90 #: data/ui/one-time-dialog.blp:210 msgid "Change Time" msgstr "Mudar Hora" #: src/todayFactory.js:134 msgid "Change Dose" msgstr "Alterar Dose" #: src/treatmentsFactory.js:96 src/treatmentsFactory.js:126 #: data/ui/refill-dialog.blp:7 msgid "Refill" msgstr "Reabastecer" #: src/treatmentsFactory.js:125 msgid "Edit" msgstr "Editar" #: src/treatmentsFactory.js:127 msgid "Duplicate" msgstr "Duplicar" #: src/treatmentsFactory.js:146 msgid "Options" msgstr "Opções" #. TRANSLATORS: keep the %d it's where the number goes #: src/treatmentsFactory.js:244 #, javascript-format msgid "%d Remaining" msgstr "%d Restantes" #. TRANSLATORS: label for when duration is enabled #: src/treatmentsFactory.js:254 msgid "Starts on" msgstr "Começa em" #: src/treatmentsFactory.js:255 msgid "Until" msgstr "Até" #: src/treatmentsFactory.js:283 src/treatmentsFactory.js:286 msgid "Next Dose" msgstr "Próxima Dose" #: src/window.js:173 src/window.js:943 msgid "Reminder" msgstr "Lembrete" #. TRANSLATORS: Notification text for when the inventory is low #: src/window.js:175 msgid "You have treatments low in stock" msgstr "Você tem tratamentos em baixo estoque" #: src/window.js:492 msgid "Show All" msgstr "Mostrar Todos" #: src/window.js:515 msgid "Show Less" msgstr "Mostrar Menos" #: src/window.js:648 msgid "No Results Found" msgstr "Nenhum Resultado Encontrado" #: src/window.js:648 src/window.js:1517 msgid "No History" msgstr "Histórico Vazio" #: src/window.js:818 data/ui/window.blp:260 msgid "No Treatments" msgstr "Sem Tratamentos" #: src/window.js:818 msgid "All Done for Today" msgstr "Tudo Feito Por Hoje" #: src/window.js:906 src/window.js:1090 data/ui/one-time-dialog.blp:285 #: data/ui/preferences.blp:73 msgid "Confirm" msgstr "Confirmar" #: src/window.js:906 msgid "Confirm All" msgstr "Confirmar Todos" #: src/window.js:907 data/ui/preferences.blp:84 data/ui/window.blp:146 msgid "Skip" msgstr "Ignorar" #: src/window.js:907 msgid "Skip All" msgstr "Ignorar Todos" #. TRANSLATORS: keep the %d it's where the number goes #: src/window.js:938 #, javascript-format msgid "and %d more" msgstr "e mais %d" #: src/window.js:1090 data/ui/one-time-dialog.blp:7 data/ui/window.blp:133 msgid "One-Time Entry" msgstr "Registro Único" #: src/window.js:1295 data/ui/window.blp:353 msgid "Quit" msgstr "Sair" #: data/ui/edit-hist-dialog.blp:7 msgid "Edit Entry" msgstr "Editar Registro" #: data/ui/med-dialog.blp:7 msgid "New Treatment" msgstr "Novo Tratamento" #: data/ui/med-dialog.blp:31 data/ui/window.blp:283 msgid "Add" msgstr "Adicionar" #: data/ui/med-dialog.blp:69 data/ui/one-time-dialog.blp:58 msgid "Color" msgstr "Cor" #. TRANSLATORS: Tooltip for the colors (from Default until Purple) #: data/ui/med-dialog.blp:94 data/ui/one-time-dialog.blp:83 msgid "Default" msgstr "Padrão" #: data/ui/med-dialog.blp:106 data/ui/one-time-dialog.blp:95 msgid "Red" msgstr "Vermelho" #: data/ui/med-dialog.blp:118 data/ui/one-time-dialog.blp:107 msgid "Orange" msgstr "Laranja" #: data/ui/med-dialog.blp:130 data/ui/one-time-dialog.blp:119 msgid "Yellow" msgstr "Amarelo" #: data/ui/med-dialog.blp:142 data/ui/one-time-dialog.blp:131 msgid "Green" msgstr "Verde" #: data/ui/med-dialog.blp:154 data/ui/one-time-dialog.blp:143 msgid "Cyan" msgstr "Ciano" #: data/ui/med-dialog.blp:166 data/ui/one-time-dialog.blp:155 msgid "Blue" msgstr "Azul" #: data/ui/med-dialog.blp:178 data/ui/one-time-dialog.blp:167 msgid "Purple" msgstr "Roxo" #: data/ui/med-dialog.blp:188 data/ui/one-time-dialog.blp:177 msgid "Unit" msgstr "Unidade" #: data/ui/med-dialog.blp:197 msgid "Icon" msgstr "Ícone" #. TRANSLATORS: Tooltip for the icons (from Pill until Potion) #: data/ui/med-dialog.blp:226 msgid "Pill" msgstr "Comprimido" #: data/ui/med-dialog.blp:242 msgid "Alternative Pill" msgstr "Comprimido Alternativo" #: data/ui/med-dialog.blp:258 msgid "Capsule" msgstr "Cápsula" #: data/ui/med-dialog.blp:274 msgid "Round Pill" msgstr "Comprimido Redondo" #: data/ui/med-dialog.blp:290 msgid "Alternative Round Pill" msgstr "Comprimido Redondo Alternativo" #: data/ui/med-dialog.blp:306 msgid "Ampoule" msgstr "Ampola" #: data/ui/med-dialog.blp:322 msgid "Injection" msgstr "Injeção" #: data/ui/med-dialog.blp:338 msgid "Square Pill" msgstr "Comprimido Quadrado" #: data/ui/med-dialog.blp:354 msgid "Alternative Square Pill" msgstr "Comprimido Quadrado Alternativo" #: data/ui/med-dialog.blp:370 msgid "Triangle pill" msgstr "Comprimido Retangular" #: data/ui/med-dialog.blp:386 msgid "Alternative Triangle Pill" msgstr "Comprimido Retangular Alternativo" #: data/ui/med-dialog.blp:402 msgid "Bottle" msgstr "Frasco" #: data/ui/med-dialog.blp:418 msgid "Drops" msgstr "Gotas" #: data/ui/med-dialog.blp:434 msgid "Potion" msgstr "Poção" #: data/ui/med-dialog.blp:457 msgid "Every Day" msgstr "Todos os Dias" #: data/ui/med-dialog.blp:473 msgid "Choose Days" msgstr "Escolha os Dias" #: data/ui/med-dialog.blp:572 msgid "Choose Day" msgstr "Escolha o Dia" #: data/ui/med-dialog.blp:617 msgid "Change Cycle" msgstr "Mudar Ciclo" #: data/ui/med-dialog.blp:642 msgid "Days Active" msgstr "Dias Ativos" #: data/ui/med-dialog.blp:656 msgid "Days Inactive" msgstr "Dias Inativos" #. TRANSLATORS: Day in cycle, try to keep it short #: data/ui/med-dialog.blp:671 msgid "Today is Cycle Day…" msgstr "Hoje é o Dia…" #: data/ui/med-dialog.blp:694 msgid "Increase Notification Priority" msgstr "Aumentar a Prioridade da Notificação" #: data/ui/med-dialog.blp:695 msgid "Show in fullscreen mode or with 'Do Not Disturb' enabled" msgstr "" "Mostrar notificações em tela cheia ou com o modo 'Não Perturbe' ativado" #: data/ui/med-dialog.blp:699 msgid "Recurring Notifications" msgstr "Notificações Recorrentes" #: data/ui/med-dialog.blp:700 msgid "Renotify until it's confirmed or skipped" msgstr "Renotificar até ser confirmado ou ignorado" #: data/ui/med-dialog.blp:705 msgid "Interval in Minutes" msgstr "Intervalo em Minutos" #: data/ui/med-dialog.blp:718 data/ui/refill-dialog.blp:36 msgid "Inventory" msgstr "Inventário" #: data/ui/med-dialog.blp:719 msgid "Manage your stock" msgstr "Gerencie seu estoque" #: data/ui/med-dialog.blp:725 msgid "Current" msgstr "Atual" #: data/ui/med-dialog.blp:738 msgid "Remind Me At" msgstr "Lembrar na Quantidade" #: data/ui/med-dialog.blp:751 msgid "Refill Amount" msgstr "Quantidade ao Reabastecer" #: data/ui/med-dialog.blp:765 msgid "Set start and end dates" msgstr "Defina datas para começar e terminar" #: data/ui/med-dialog.blp:785 data/ui/med-dialog.blp:827 #: data/ui/one-time-dialog.blp:243 msgid "Choose Date" msgstr "Escolha a Data" #: data/ui/med-dialog.blp:855 msgid "Mark as Confirmed" msgstr "Marcar como Confirmado" #: data/ui/med-dialog.blp:856 msgid "" "If not manually confirmed or skipped, it will be recorded as confirmed in " "history, reducing stock if enabled" msgstr "" "Se não confirmado ou ignorado manualmente, será registrado como confirmado " "no histórico, reduzindo o estoque se habilitado" #: data/ui/one-time-dialog.blp:44 msgid "From Treatment List" msgstr "Da Lista de Tratamentos" #: data/ui/one-time-dialog.blp:182 msgid "Amount" msgstr "Quantidade" #: data/ui/preferences.blp:7 data/ui/window.blp:338 msgid "Preferences" msgstr "Preferências" #: data/ui/preferences.blp:17 msgid "Auto-Start at Login" msgstr "Início Automático no Login" #: data/ui/preferences.blp:28 msgid "Auto-Clear History" msgstr "Limpeza de Histórico Automática" #: data/ui/preferences.blp:29 msgid "Keeps a maximum of 30 days" msgstr "Mantém no máximo 30 dias" #: data/ui/preferences.blp:40 msgid "Low Stock Notification" msgstr "Notificações de Estoque Baixo" #: data/ui/preferences.blp:41 msgid "Send reminders when treatments are low in stock" msgstr "Mandar lembretes quando tratamentos estiverem com estoque baixo" #: data/ui/preferences.blp:52 msgid "Notification Sound" msgstr "Som de Notificação" #: data/ui/preferences.blp:63 msgid "Notification Buttons" msgstr "Botões da Notificação" #: data/ui/preferences.blp:64 msgid "Show or hide confirm/skip" msgstr "Mostrar ou ocultar confirmar/ignorar" #: data/ui/preferences.blp:98 msgid "Export History As" msgstr "Exportar Histórico Como" #: data/ui/preferences.blp:121 msgid "Export Treatments As" msgstr "Exportar Tratamentos Como" #: data/ui/shortcuts-dialog.blp:8 msgid "Shortcuts" msgstr "Atalhos" #: data/ui/shortcuts-dialog.blp:11 msgctxt "shortcut window" msgid "Show/Hide 'As Needed'" msgstr "Mostrar/Esconder 'Quando Necessário'" #: data/ui/shortcuts-dialog.blp:16 msgctxt "shortcut window" msgid "New One-Time Entry" msgstr "Novo Registro Único" #: data/ui/shortcuts-dialog.blp:21 msgctxt "shortcut window" msgid "Add New Treatment" msgstr "Adicionar Novo Tratamento" #: data/ui/shortcuts-dialog.blp:26 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Mostrar Atalhos" #: data/ui/shortcuts-dialog.blp:31 msgctxt "shortcut window" msgid "Quit" msgstr "Sair" #: data/ui/window.blp:23 msgid "Show/Hide 'As Needed'" msgstr "Mostrar/Esconder 'Quando Necessário'" #: data/ui/window.blp:31 msgid "Search" msgstr "Pesquisar" #: data/ui/window.blp:39 msgid "Sort Treatments" msgstr "Ordenar Tratamentos" #: data/ui/window.blp:48 msgid "Main Menu" msgstr "Menu Principal" #: data/ui/window.blp:61 msgid "Search…" msgstr "Pesquisar…" #: data/ui/window.blp:71 msgid "Today" msgstr "Hoje" #: data/ui/window.blp:117 data/ui/window.blp:210 msgid "Unselect" msgstr "Desmarcar" #: data/ui/window.blp:220 msgid "Remove Entries" msgstr "Remover Entradas" #: data/ui/window.blp:300 msgid "Name Ascending" msgstr "Nome Crescente" #: data/ui/window.blp:306 msgid "Remaining Stock (Lowest First)" msgstr "Estoque Restante (Menor Primeiro)" #: data/ui/window.blp:312 msgid "Remaining Stock (Highest First)" msgstr "Estoque Restante (Maior Primeiro)" #: data/ui/window.blp:318 msgid "As Needed Last" msgstr "Quando Necessários em Último" #: data/ui/window.blp:324 msgid "Ended Last" msgstr "Terminados em Último" #: data/ui/window.blp:330 msgid "As Needed/Ended Last" msgstr "Quando Necessários/Terminados em Último" #: data/ui/window.blp:343 msgid "Keyboard Shortcuts" msgstr "Atalhos de Teclado" #: data/ui/window.blp:348 msgid "About Dosage" msgstr "Sobre o Dosagem" #~ msgid "Empty Treatments" #~ msgstr "Tratamentos Vazios" #~ msgid "Empty History" #~ msgstr "Histórico Vazio" #~ msgid "No Treatments Added" #~ msgstr "Nenhum Tratamento Adicionado" #~ msgctxt "shortcut window" #~ msgid "General" #~ msgstr "Geral" #~ msgctxt "shortcut window" #~ msgid "Preferences" #~ msgstr "Preferências" #~ msgid "After meal" #~ msgstr "Após refeição" #~ msgid "Refill Stock" #~ msgstr "Reabastecer Estoque" #~ msgid "Low Stock" #~ msgstr "Estoque Baixo" #~ msgid "Form" #~ msgstr "Forma" #~ msgid "Color and icon" #~ msgstr "Cor e ícone" #~ msgid "Time and amount" #~ msgstr "Hora e quantidade" #~ msgid "Restore" #~ msgstr "Restaurar" #~ msgid "New entry" #~ msgstr "Novo registro" #~ msgid "Delete dose" #~ msgstr "Excluir dose" #~ msgid "Name already exists" #~ msgstr "Nome já existe" #~ msgid "Add to history" #~ msgstr "Adc. ao histórico" #~ msgid "Autostart at login" #~ msgstr "Início automático no login" #~ msgid "Clear history automatically" #~ msgstr "Limpar histórico automaticamente" #~ msgid "medication" #~ msgstr "medicação" #~ msgid "tracker" #~ msgstr "rastreador" #~ msgid "treatments" #~ msgstr "tratamentos" #~ msgid "pill" #~ msgstr "pílula" #~ msgid "drug" #~ msgstr "droga" #~ msgid "remedy" #~ msgstr "remédio" #~ msgid "Su" #~ msgstr "Do" #~ msgid "Mo" #~ msgstr "Se" #~ msgid "Tu" #~ msgstr "Te" #~ msgid "We" #~ msgstr "Qa" #~ msgid "Th" #~ msgstr "Qi" #~ msgid "Fr" #~ msgstr "Sx" #~ msgid "Sa" #~ msgstr "Sa" #~ msgid "Sunday" #~ msgstr "Domingo" #~ msgid "Monday" #~ msgstr "Segunda-feira" #~ msgid "Tuesday" #~ msgstr "Terça-feira" #~ msgid "Wednesday" #~ msgstr "Quarta-feira" #~ msgid "Thursday" #~ msgstr "Quinta-feira" #~ msgid "Friday" #~ msgstr "Sexta-feira" #~ msgid "Saturday" #~ msgstr "Sábado" #~ msgid "About" #~ msgstr "Sobre" #~ msgid "Allow Dosage to run in background." #~ msgstr "Permitir que o Dosagem seja executado em segundo plano." #~ msgid "Fixed notifications being delayed after suspension" #~ msgstr "Corrigido: notificações atrasadas após suspensão" #~ msgid "" #~ "Fixed notifications being sent more than once after saving an existing " #~ "treatment" #~ msgstr "" #~ "Corrigido: notificações enviadas mais de uma vez após salvar um " #~ "tratamento existente" #~ msgid "Added a label to show the frequency on treatments list" #~ msgstr "" #~ "Adicionado um rótulo para mostrar a frequência na lista de tratamentos" #~ msgid "Brazilian translation updated" #~ msgstr "Tradução brasileira atualizada" #~ msgid "Initial Release" #~ msgstr "Lançamento inicial" diegopvlk-Dosage-bd9126a/po/ru.po000066400000000000000000000665171514145341100167320ustar00rootroot00000000000000# Russian translation for Dosage. # Copyright (C) 2023 Diego Povliuk # This file is distributed under the license GPLv3-or-later. # volkov , 2023. # msgid "" msgstr "" "Project-Id-Version: io.github.diegopvlk.Dosage\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-12-19 16:12-0300\n" "PO-Revision-Date: 2026-02-04 00:16+0000\n" "Last-Translator: Diego Povliuk \n" "Language-Team: Russian \n" "Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "X-Generator: Weblate 5.16-dev\n" #. TRANSLATORS: App name, translate to your language and follow the capitalization #: data/io.github.diegopvlk.Dosage.appdata.xml.in:20 #: data/io.github.diegopvlk.Dosage.desktop.in:3 #: src/utils/getTreatmentsExportFile.js:173 src/utils/saveFiles.js:22 #: src/utils/saveFiles.js:44 src/main.js:60 src/window.js:1060 #: data/ui/window.blp:6 msgid "Dosage" msgstr "Дозировка" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:21 msgid "Keep track of your treatments" msgstr "Следите за вашими курсами лечения" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:24 msgid "" "Easily manage and track treatments with Dosage: notifications, history, " "multiple doses, flexible frequency, customization, stock monitoring, and " "duration control" msgstr "" "С легкостью управляйте курсами лечения с Дозировкой: уведомления, история, " "многодозные приемы, настройка частоты приемов, кастомизация, мониторинг " "запаса и контроль длительности курсов" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:25 msgid "Features:" msgstr "Функции:" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:27 msgid "Notifications — Get reminders at the right time" msgstr "Уведомления — получайте уведомления вовремя" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:28 msgid "History — See which medications you took, skipped or missed" msgstr "" "История — просматривайте список лекарств которые вы приняли или пропустили" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:29 msgid "Dosage management — Multiple doses with different times" msgstr "Управление дозами — несколько доз в разное время" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:30 msgid "" "Frequency modes — Every day, specific days, cycle or just when necessary" msgstr "" "Частота приема — каждый день, выбранные дни, циклы или просто когда нужно" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:31 msgid "Color and icon — Give a shape for your treatment" msgstr "" "Цвет и иконка — чтобы выбрать иконку и цвет для записи в списке курсов " "лечения" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:32 msgid "Inventory tracking — Monitor your stock and get reminded when it's low" msgstr "" "Мониторинг инвентаря — мониторьте ваш запас и получайте уведомления, когда " "он будет иссякать" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:33 msgid "Duration — Define the start and end dates" msgstr "Длительность — определите начальную и последню даты" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:44 msgid "Dosage today window in light theme" msgstr "Раздел \"Сегодня\" Дозировки в светлой теме" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:49 msgid "Dosage preferences window in light theme" msgstr "Окно настроек Дозирование в светлой теме" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:54 msgid "Dosage edit treatment window in light theme" msgstr "Раздел \"Курсы лечения\" Дозировки в светлой теме" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:59 msgid "Dosage today window in dark theme" msgstr "Раздел \"Сегодня\" Дозировки в темной теме" #. TRANSLATORS: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/io.github.diegopvlk.Dosage.desktop.in:10 msgid "Medication;Tracker;Reminder;Today;Treatments;Pill;Drug;Remedy;" msgstr "Medication;Tracker;Reminder;Today;History;Treatments;Pill;Drug;Remedy;таблетки;лечение;курс;напомнить;принять;история;процедура;доза;" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:232 msgid "Date" msgstr "Дата приема" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:199 msgid "Time" msgstr "Время" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/med-dialog.blp:61 data/ui/one-time-dialog.blp:49 msgid "Name" msgstr "Название" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:183 msgid "Dose" msgstr "Доза" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 msgid "Status" msgstr "Статус" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 msgid "Time Confirmed" msgstr "Время подтверждения" #: src/utils/getHistoryExportFile.js:38 src/utils/getHistoryExportFile.js:117 #: src/editHistDialog.js:68 src/historyFactory.js:186 msgid "Missed" msgstr "Пропущено" #: src/utils/getHistoryExportFile.js:41 src/utils/getHistoryExportFile.js:121 #: src/historyFactory.js:183 data/ui/edit-hist-dialog.blp:111 msgid "Skipped" msgstr "Пропущено" #: src/utils/getHistoryExportFile.js:44 src/utils/getHistoryExportFile.js:55 #: src/utils/getHistoryExportFile.js:125 src/utils/getHistoryExportFile.js:138 #: src/editHistDialog.js:73 src/historyFactory.js:190 #: data/ui/edit-hist-dialog.blp:116 msgid "Confirmed" msgstr "Подтверждено" #: src/utils/getHistoryExportFile.js:52 src/utils/getHistoryExportFile.js:134 #: src/editHistDialog.js:56 src/historyFactory.js:178 msgid "Auto-Confirmed" msgstr "Автоматически подтверждено" #: src/utils/getHistoryExportFile.js:55 src/utils/getHistoryExportFile.js:138 #: src/editHistDialog.js:74 msgid "Time Unknown" msgstr "Время неизвестно" #. TRANSLATORS: Context: 1 Pill at 19:00 #: src/utils/getTreatmentsExportFile.js:69 msgid "at" msgstr "в" #: src/utils/getTreatmentsExportFile.js:89 data/ui/med-dialog.blp:443 msgid "Notes" msgstr "Примечания" #: src/utils/getTreatmentsExportFile.js:96 src/utils/locale.js:37 #: src/treatmentsFactory.js:268 msgid "Daily" msgstr "Ежедневно" #: src/utils/getTreatmentsExportFile.js:102 src/medDialog.js:428 #: data/ui/med-dialog.blp:459 msgid "Day of Month" msgstr "День месяца" #. TRANSLATORS: Context: 2 day(s) on, 1 day(s) off #: src/utils/getTreatmentsExportFile.js:109 msgid "day(s) on" msgstr "" #. TRANSLATORS: Context: 2 day(s) on, 1 day(s) off #: src/utils/getTreatmentsExportFile.js:111 msgid "day(s) off" msgstr "" #: src/utils/getTreatmentsExportFile.js:122 src/todayFactory.js:41 #: src/treatmentsFactory.js:298 data/ui/med-dialog.blp:461 msgid "As Needed" msgstr "Когда нужно" #: src/utils/getTreatmentsExportFile.js:132 data/ui/med-dialog.blp:764 msgid "Duration" msgstr "Длительность" #: src/utils/getTreatmentsExportFile.js:135 msgid "Started on" msgstr "Началось" #: src/utils/getTreatmentsExportFile.js:136 data/ui/med-dialog.blp:775 msgid "Start" msgstr "Начало" #: src/utils/getTreatmentsExportFile.js:138 src/treatmentsFactory.js:256 msgid "Ended on" msgstr "Закончился" #: src/utils/getTreatmentsExportFile.js:138 data/ui/med-dialog.blp:817 msgid "End" msgstr "Конец" #: src/utils/getTreatmentsExportFile.js:173 src/utils/saveFiles.js:44 #: data/ui/window.blp:234 msgid "Treatments" msgstr "Курсы лечения" #: src/utils/getTreatmentsExportFile.js:184 msgid "Generated on" msgstr "Генерировано в" #: src/utils/getTreatmentsExportFile.js:187 msgid "Ongoing" msgstr "Текущий" #: src/utils/getTreatmentsExportFile.js:188 msgid "Non-scheduled" msgstr "Незапланированные" #: src/utils/getTreatmentsExportFile.js:189 msgid "Finished" msgstr "Законченно" #: src/utils/locale.js:33 msgid "Weekends" msgstr "Выходные" #: src/utils/locale.js:35 msgid "Weekdays" msgstr "Будни" #: src/utils/saveFiles.js:22 data/ui/window.blp:156 msgid "History" msgstr "История" #: src/editHistDialog.js:60 src/editHistDialog.js:89 src/editHistDialog.js:110 msgid "Confirmed At" msgstr "Подтверждено в" #: src/editHistDialog.js:64 src/editHistDialog.js:114 msgid "Skipped At" msgstr "Пропущено в" #: src/historyFactory.js:47 msgid "Select to be Removed" msgstr "Выберите для удаления" #. TRANSLATORS: "Your Name " #: src/main.js:69 msgid "translator-credits" msgstr "" "Volkov \n" "Anton Palgunov \n" "Aleksandr Melman " #: src/main.js:73 msgid "Thanks to These Projects!" msgstr "Огромное спасибо этим проектам!" #: src/medDialog.js:99 msgid "Edit Treatment" msgstr "Редактировать курс лечения" #: src/medDialog.js:100 data/ui/edit-hist-dialog.blp:30 #: data/ui/preferences.blp:112 data/ui/preferences.blp:132 #: data/ui/refill-dialog.blp:67 msgid "Save" msgstr "Сохранить" #: src/medDialog.js:114 msgid "Copy" msgstr "Копировать" #: src/medDialog.js:217 msgid "Add Dose" msgstr "Добавить дозу" #: src/medDialog.js:419 msgid "Choose" msgstr "Выбрать" #: src/medDialog.js:429 src/treatmentsFactory.js:274 msgid "Day" msgstr "День" #: src/medDialog.js:456 data/ui/med-dialog.blp:458 msgid "Specific Days" msgstr "Выбраные дни" #: src/medDialog.js:463 src/treatmentsFactory.js:295 data/ui/med-dialog.blp:460 msgid "Cycle" msgstr "Цикл" #: src/medDialog.js:467 data/ui/med-dialog.blp:452 msgid "Frequency" msgstr "Частота" #: src/medDialog.js:500 msgid "Empty Name" msgstr "Отсутствует название записи" #: src/medDialog.js:506 msgid "Empty Unit" msgstr "Пустая единица измерения" #: src/medDialog.js:513 msgid "Choose at Least One Day" msgstr "Выберите хотя бы один день" #: src/medDialog.js:527 src/oneTimeDialog.js:187 msgid "Name Already on Treatment List" msgstr "Имя уже в списке лечения" #: src/medDialog.js:542 msgid "Duplicated Time" msgstr "Одинаковое время у приемов доз" #: src/medDialog.js:582 msgid "Are You Sure?" msgstr "Вы уверены?" #: src/medDialog.js:583 msgid "will be deleted" msgstr "будет удален" #: src/medDialog.js:586 data/ui/edit-hist-dialog.blp:18 #: data/ui/med-dialog.blp:19 msgid "Cancel" msgstr "Отменить" #: src/medDialog.js:587 src/treatmentsFactory.js:128 data/ui/med-dialog.blp:865 msgid "Delete" msgstr "Удалить" #: src/oneTimeDialog.js:110 msgid "New" msgstr "Новое" #: src/oneTimeDialog.js:121 data/ui/med-dialog.blp:189 #: data/ui/one-time-dialog.blp:178 msgid "Pill(s)" msgstr "Таблетка(и)" #: src/prefsDialog.js:63 msgid "Accept to allow running in the background and receive notifications" msgstr "" "Разрешите, чтобы приложение могло работать в фоновом режиме и отправлять " "уведомления" #: src/prefsDialog.js:74 src/window.js:259 msgid "An Issue Has Occurred" msgstr "Произошла ошибка" #: src/prefsDialog.js:77 src/window.js:267 src/window.js:289 src/window.js:311 #: src/window.js:329 msgid "Close" msgstr "Закрыть" #: src/timeDoseRow.js:34 msgid "Remove Dose" msgstr "Удалить дозу" #: src/timeDoseRow.js:40 data/ui/edit-hist-dialog.blp:90 #: data/ui/one-time-dialog.blp:210 msgid "Change Time" msgstr "Изменить время" #: src/todayFactory.js:134 msgid "Change Dose" msgstr "Изменить дозу" #: src/treatmentsFactory.js:96 src/treatmentsFactory.js:126 #: data/ui/refill-dialog.blp:7 msgid "Refill" msgstr "Пополнить" #: src/treatmentsFactory.js:125 msgid "Edit" msgstr "Редактировать" #: src/treatmentsFactory.js:127 msgid "Duplicate" msgstr "Дублировать" #: src/treatmentsFactory.js:146 msgid "Options" msgstr "Опции" #. TRANSLATORS: keep the %d it's where the number goes #: src/treatmentsFactory.js:244 #, javascript-format msgid "%d Remaining" msgstr "%d Осталось" #. TRANSLATORS: label for when duration is enabled #: src/treatmentsFactory.js:254 msgid "Starts on" msgstr "Начинается" #: src/treatmentsFactory.js:255 msgid "Until" msgstr "До" #: src/treatmentsFactory.js:283 src/treatmentsFactory.js:286 msgid "Next Dose" msgstr "Следующая доза" #: src/window.js:173 src/window.js:943 msgid "Reminder" msgstr "Напоминание" #. TRANSLATORS: Notification text for when the inventory is low #: src/window.js:175 msgid "You have treatments low in stock" msgstr "У вас осталось мало лекарств в запасе" #: src/window.js:492 msgid "Show All" msgstr "Показать все" #: src/window.js:515 msgid "Show Less" msgstr "Показать меньше" #: src/window.js:648 msgid "No Results Found" msgstr "Результатов не найдено" #: src/window.js:648 src/window.js:1517 msgid "No History" msgstr "Нет истории" #: src/window.js:818 data/ui/window.blp:260 msgid "No Treatments" msgstr "Нет курсов лечения" #: src/window.js:818 msgid "All Done for Today" msgstr "Вы приняли все лекарства на сегодня" #: src/window.js:906 src/window.js:1090 data/ui/one-time-dialog.blp:285 #: data/ui/preferences.blp:73 msgid "Confirm" msgstr "Подтвердить" #: src/window.js:906 msgid "Confirm All" msgstr "Подтвердить все" #: src/window.js:907 data/ui/preferences.blp:84 data/ui/window.blp:146 msgid "Skip" msgstr "Пропустить" #: src/window.js:907 msgid "Skip All" msgstr "Пропустить все" #. TRANSLATORS: keep the %d it's where the number goes #: src/window.js:938 #, javascript-format msgid "and %d more" msgstr "и ещё %d" #: src/window.js:1090 data/ui/one-time-dialog.blp:7 data/ui/window.blp:133 msgid "One-Time Entry" msgstr "Одноразовый прием" #: src/window.js:1295 data/ui/window.blp:353 msgid "Quit" msgstr "Выйти" #: data/ui/edit-hist-dialog.blp:7 msgid "Edit Entry" msgstr "Редактировать запись" #: data/ui/med-dialog.blp:7 msgid "New Treatment" msgstr "Новый курс лечения" #: data/ui/med-dialog.blp:31 data/ui/window.blp:283 msgid "Add" msgstr "Добавить" #: data/ui/med-dialog.blp:69 data/ui/one-time-dialog.blp:58 msgid "Color" msgstr "Цвет" #. TRANSLATORS: Tooltip for the colors (from Default until Purple) #: data/ui/med-dialog.blp:94 data/ui/one-time-dialog.blp:83 msgid "Default" msgstr "Стандартный" #: data/ui/med-dialog.blp:106 data/ui/one-time-dialog.blp:95 msgid "Red" msgstr "Красный" #: data/ui/med-dialog.blp:118 data/ui/one-time-dialog.blp:107 msgid "Orange" msgstr "Оранжевый" #: data/ui/med-dialog.blp:130 data/ui/one-time-dialog.blp:119 msgid "Yellow" msgstr "Желтый" #: data/ui/med-dialog.blp:142 data/ui/one-time-dialog.blp:131 msgid "Green" msgstr "Зеленый" #: data/ui/med-dialog.blp:154 data/ui/one-time-dialog.blp:143 msgid "Cyan" msgstr "Голубой" #: data/ui/med-dialog.blp:166 data/ui/one-time-dialog.blp:155 msgid "Blue" msgstr "Синий" #: data/ui/med-dialog.blp:178 data/ui/one-time-dialog.blp:167 msgid "Purple" msgstr "Фиолетовый" #: data/ui/med-dialog.blp:188 data/ui/one-time-dialog.blp:177 msgid "Unit" msgstr "Единица измерения" #: data/ui/med-dialog.blp:197 msgid "Icon" msgstr "Иконка" #. TRANSLATORS: Tooltip for the icons (from Pill until Potion) #: data/ui/med-dialog.blp:226 msgid "Pill" msgstr "Таблетка" #: data/ui/med-dialog.blp:242 msgid "Alternative Pill" msgstr "Другой вид таблетки" #: data/ui/med-dialog.blp:258 msgid "Capsule" msgstr "Капсула" #: data/ui/med-dialog.blp:274 msgid "Round Pill" msgstr "Круглая таблетка" #: data/ui/med-dialog.blp:290 msgid "Alternative Round Pill" msgstr "Другой вид круглой таблетки" #: data/ui/med-dialog.blp:306 msgid "Ampoule" msgstr "Ампула" #: data/ui/med-dialog.blp:322 msgid "Injection" msgstr "Инъекция" #: data/ui/med-dialog.blp:338 msgid "Square Pill" msgstr "Квадратная таблетка" #: data/ui/med-dialog.blp:354 msgid "Alternative Square Pill" msgstr "Другой вид квадратной таблетки" #: data/ui/med-dialog.blp:370 msgid "Triangle pill" msgstr "Треугольная таблетка" #: data/ui/med-dialog.blp:386 msgid "Alternative Triangle Pill" msgstr "Другой вид прямоуглольной таблетки" #: data/ui/med-dialog.blp:402 msgid "Bottle" msgstr "Бутылка" #: data/ui/med-dialog.blp:418 msgid "Drops" msgstr "Капли" #: data/ui/med-dialog.blp:434 msgid "Potion" msgstr "Микстура" #: data/ui/med-dialog.blp:457 msgid "Every Day" msgstr "Каждый день" #: data/ui/med-dialog.blp:473 msgid "Choose Days" msgstr "Выберите дни" #: data/ui/med-dialog.blp:572 msgid "Choose Day" msgstr "Выберите день" #: data/ui/med-dialog.blp:617 msgid "Change Cycle" msgstr "Изменить цикл" #: data/ui/med-dialog.blp:642 msgid "Days Active" msgstr "Активных дней" #: data/ui/med-dialog.blp:656 msgid "Days Inactive" msgstr "Неактивных дней" #. TRANSLATORS: Day in cycle, try to keep it short #: data/ui/med-dialog.blp:671 msgid "Today is Cycle Day…" msgstr "Сегодня день цикла…" #: data/ui/med-dialog.blp:694 msgid "Increase Notification Priority" msgstr "Увеличить приоритет уведомлений" #: data/ui/med-dialog.blp:695 msgid "Show in fullscreen mode or with 'Do Not Disturb' enabled" msgstr "" "Отображает уведомление в полноэкранном режиме или даже если включен режим " "«Не беспокоить»" #: data/ui/med-dialog.blp:699 msgid "Recurring Notifications" msgstr "Повторяющиеся уведомления" #: data/ui/med-dialog.blp:700 msgid "Renotify until it's confirmed or skipped" msgstr "" "Повторное уведомление до тех пор, пока оно не будет подтверждено или " "пропущено" #: data/ui/med-dialog.blp:705 msgid "Interval in Minutes" msgstr "Интервал в минутах" #: data/ui/med-dialog.blp:718 data/ui/refill-dialog.blp:36 msgid "Inventory" msgstr "Запас" #: data/ui/med-dialog.blp:719 msgid "Manage your stock" msgstr "Управление вашими запасами лекарств" #: data/ui/med-dialog.blp:725 msgid "Current" msgstr "Текущий запас лекарств" #: data/ui/med-dialog.blp:738 msgid "Remind Me At" msgstr "Напомнить мне, когда запас лекарств опуститься до" #: data/ui/med-dialog.blp:751 msgid "Refill Amount" msgstr "Количество для пополнения" #: data/ui/med-dialog.blp:765 msgid "Set start and end dates" msgstr "Установить начальну и конечные даты" #: data/ui/med-dialog.blp:785 data/ui/med-dialog.blp:827 #: data/ui/one-time-dialog.blp:243 msgid "Choose Date" msgstr "Выберите дату" #: data/ui/med-dialog.blp:855 msgid "Mark as Confirmed" msgstr "Отметить как Подтвержденный" #: data/ui/med-dialog.blp:856 msgid "" "If not manually confirmed or skipped, it will be recorded as confirmed in " "history, reducing stock if enabled" msgstr "" "Если не подтвержден или не пропущен вручную, будет записан как " "подтвержденный в истории, уменьшая запас, если включено" #: data/ui/one-time-dialog.blp:44 msgid "From Treatment List" msgstr "Из списка курса лечения" #: data/ui/one-time-dialog.blp:182 msgid "Amount" msgstr "Количество" #: data/ui/preferences.blp:7 data/ui/window.blp:338 msgid "Preferences" msgstr "Настройки" #: data/ui/preferences.blp:17 msgid "Auto-Start at Login" msgstr "Автоматический запуск приложения при входе в систему" #: data/ui/preferences.blp:28 msgid "Auto-Clear History" msgstr "Автоматически очищать историю" #: data/ui/preferences.blp:29 msgid "Keeps a maximum of 30 days" msgstr "Сохраняет максимум 30 дней" #: data/ui/preferences.blp:40 msgid "Low Stock Notification" msgstr "Уведомление о низком запасе" #: data/ui/preferences.blp:41 msgid "Send reminders when treatments are low in stock" msgstr "Отправлять напоминания, когда запасы лечения низкие" #: data/ui/preferences.blp:52 msgid "Notification Sound" msgstr "Звук уведомления" #: data/ui/preferences.blp:63 msgid "Notification Buttons" msgstr "Кнопки уведомлений" #: data/ui/preferences.blp:64 msgid "Show or hide confirm/skip" msgstr "Показать или скрыть подтвердить/пропустить" #: data/ui/preferences.blp:98 msgid "Export History As" msgstr "Экспортировать историю как" #: data/ui/preferences.blp:121 msgid "Export Treatments As" msgstr "Экспортировать курсы лечения как" #: data/ui/shortcuts-dialog.blp:8 msgid "Shortcuts" msgstr "Комбинации клавиш" #: data/ui/shortcuts-dialog.blp:11 #, fuzzy #| msgid "Show/Hide 'As Needed'" msgctxt "shortcut window" msgid "Show/Hide 'As Needed'" msgstr "Показать/Скрыть 'Когда нужно'" #: data/ui/shortcuts-dialog.blp:16 msgctxt "shortcut window" msgid "New One-Time Entry" msgstr "Новый одноразовый прием" #: data/ui/shortcuts-dialog.blp:21 msgctxt "shortcut window" msgid "Add New Treatment" msgstr "Добавить новый курс лечения" #: data/ui/shortcuts-dialog.blp:26 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Показать комбинации клавиш" #: data/ui/shortcuts-dialog.blp:31 msgctxt "shortcut window" msgid "Quit" msgstr "Выйти" #: data/ui/window.blp:23 msgid "Show/Hide 'As Needed'" msgstr "Показать/Скрыть 'Когда нужно'" #: data/ui/window.blp:31 msgid "Search" msgstr "Поиск" #: data/ui/window.blp:39 msgid "Sort Treatments" msgstr "Сортировать курсы лечения" #: data/ui/window.blp:48 msgid "Main Menu" msgstr "Главное меню" #: data/ui/window.blp:61 msgid "Search…" msgstr "Поиск…" #: data/ui/window.blp:71 msgid "Today" msgstr "Сегодня" #: data/ui/window.blp:117 data/ui/window.blp:210 msgid "Unselect" msgstr "Отменить выбор" #: data/ui/window.blp:220 msgid "Remove Entries" msgstr "Удалить записи" #: data/ui/window.blp:300 msgid "Name Ascending" msgstr "" #: data/ui/window.blp:306 msgid "Remaining Stock (Lowest First)" msgstr "" #: data/ui/window.blp:312 msgid "Remaining Stock (Highest First)" msgstr "" #: data/ui/window.blp:318 #, fuzzy #| msgid "As Needed" msgid "As Needed Last" msgstr "Когда нужно" #: data/ui/window.blp:324 #, fuzzy #| msgid "Ended on" msgid "Ended Last" msgstr "Закончился" #: data/ui/window.blp:330 #, fuzzy #| msgid "As Needed" msgid "As Needed/Ended Last" msgstr "Когда нужно" #: data/ui/window.blp:343 msgid "Keyboard Shortcuts" msgstr "Комбинации клавиш" #: data/ui/window.blp:348 msgid "About Dosage" msgstr "О приложении" #~ msgid "Empty Treatments" #~ msgstr "Пустые курсы лечения" #~ msgid "Empty History" #~ msgstr "История пуста" #~ msgid "No Treatments Added" #~ msgstr "Лечение не добавлено" #~ msgctxt "shortcut window" #~ msgid "General" #~ msgstr "Общие" #~ msgctxt "shortcut window" #~ msgid "Preferences" #~ msgstr "Настройки" #~ msgid "After meal" #~ msgstr "После приема пищи" #~ msgid "Refill Stock" #~ msgstr "Пополнить запас" #~ msgid "Low Stock" #~ msgstr "Запас на исходе" #~ msgid "Form" #~ msgstr "Форма" #~ msgid "Color and icon" #~ msgstr "Цвет и иконка" #~ msgid "Time and amount" #~ msgstr "Время приема и размер дозы" #~ msgid "Restore" #~ msgstr "Восстановить" #~ msgid "New entry" #~ msgstr "Новая запись" #~ msgid "Name already exists" #~ msgstr "Это название уже занято" #~ msgid "Add to history" #~ msgstr "Добавить в историю" #~ msgid "medication" #~ msgstr "лекарства" #~ msgid "tracker" #~ msgstr "трекер" #~ msgid "treatments" #~ msgstr "kурсы лечения" #~ msgid "pill" #~ msgstr "таблетка" #~ msgid "drug" #~ msgstr "лекарства" #~ msgid "remedy" #~ msgstr "целебная" #~ msgid "Su" #~ msgstr "Вс" #~ msgid "Mo" #~ msgstr "Пн" #~ msgid "Tu" #~ msgstr "Вт" #~ msgid "We" #~ msgstr "Ср" #~ msgid "Th" #~ msgstr "Чт" #~ msgid "Fr" #~ msgstr "Пт" #~ msgid "Sa" #~ msgstr "Сб" #~ msgid "Sunday" #~ msgstr "Воскресенье" #~ msgid "Monday" #~ msgstr "Понедельник" #~ msgid "Tuesday" #~ msgstr "Вторник" #~ msgid "Wednesday" #~ msgstr "Среда" #~ msgid "Thursday" #~ msgstr "Четверг" #~ msgid "Friday" #~ msgstr "Пятница" #~ msgid "Saturday" #~ msgstr "Суббота" #~ msgid "About" #~ msgstr "Про" #~ msgid "Allow Dosage to run in background." #~ msgstr "Разрешить 'Дозировка' работать в фоновом режиме." #~ msgid "Fixed notifications being delayed after suspension" #~ msgstr "" #~ "Исправлены оповещения, который задерживались после выхода из режима сна" #~ msgid "" #~ "Fixed notifications being sent more than once after saving an existing " #~ "treatment" #~ msgstr "" #~ "Исправлены уведомления, которые отправлялись больше одного разу после " #~ "сохранения существующих курсов лечения" #~ msgid "Added a label to show the frequency on treatments list" #~ msgstr "" #~ "Добавлено надпись, которая показывает частоту приема в списке лечения" #~ msgid "Brazilian translation updated" #~ msgstr "Обновлен бразильский перевод" #~ msgid "Initial Release" #~ msgstr "Первый релиз" diegopvlk-Dosage-bd9126a/po/sk.po000066400000000000000000000433651514145341100167150ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) 2023 Diego Povliuk # This file is distributed under the license GPLv3-or-later. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: io.github.diegopvlk.Dosage\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-12-19 16:12-0300\n" "PO-Revision-Date: 2025-07-28 02:00+0000\n" "Last-Translator: Robert Rossington \n" "Language-Team: Slovak \n" "Language: sk\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=((n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2);\n" "X-Generator: Weblate 5.13-dev\n" #. TRANSLATORS: App name, translate to your language and follow the capitalization #: data/io.github.diegopvlk.Dosage.appdata.xml.in:20 #: data/io.github.diegopvlk.Dosage.desktop.in:3 #: src/utils/getTreatmentsExportFile.js:173 src/utils/saveFiles.js:22 #: src/utils/saveFiles.js:44 src/main.js:60 src/window.js:1060 #: data/ui/window.blp:6 msgid "Dosage" msgstr "Dávkovanie" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:21 msgid "Keep track of your treatments" msgstr "Sledujte vaše lieky" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:24 msgid "" "Easily manage and track treatments with Dosage: notifications, history, " "multiple doses, flexible frequency, customization, stock monitoring, and " "duration control" msgstr "" "Ľahko spravujte a sledujte liečbu s aplikáciou Dosage: upozornenia, " "história, viacero dávok, flexibilná frekvencia, prispôsobenie, sledovanie " "zásob a kontrola trvania" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:25 msgid "Features:" msgstr "Funkcie:" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:27 msgid "Notifications — Get reminders at the right time" msgstr "Notifikácie — dostaňte pripomienky v správnom čase" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:28 msgid "History — See which medications you took, skipped or missed" msgstr "" "História — Sledujte ktoré lieky ste užili, vynechali alebo zabudli užiť" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:29 msgid "Dosage management — Multiple doses with different times" msgstr "Správa dávkovania — viacero dávok v rôznych časoch" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:30 msgid "" "Frequency modes — Every day, specific days, cycle or just when necessary" msgstr "" "Možnosti opakovania — každý deň, konkrétne dni, cyklus alebo len v prípade " "potreby" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:31 msgid "Color and icon — Give a shape for your treatment" msgstr "Farba a ikona — Dajte svojmu lieku tvar" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:32 msgid "Inventory tracking — Monitor your stock and get reminded when it's low" msgstr "" "Sledovanie zásob — Sledujte svoje zásoby a dostaňte pripomienku, keď ich " "hladina klesne" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:33 msgid "Duration — Define the start and end dates" msgstr "Trvanie — Určite začiatok a koniec" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:44 msgid "Dosage today window in light theme" msgstr "" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:49 msgid "Dosage preferences window in light theme" msgstr "" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:54 msgid "Dosage edit treatment window in light theme" msgstr "" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:59 msgid "Dosage today window in dark theme" msgstr "" #. TRANSLATORS: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/io.github.diegopvlk.Dosage.desktop.in:10 msgid "Medication;Tracker;Reminder;Today;Treatments;Pill;Drug;Remedy;" msgstr "" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:232 msgid "Date" msgstr "" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:199 msgid "Time" msgstr "" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/med-dialog.blp:61 data/ui/one-time-dialog.blp:49 msgid "Name" msgstr "" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:183 msgid "Dose" msgstr "" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 msgid "Status" msgstr "" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 msgid "Time Confirmed" msgstr "" #: src/utils/getHistoryExportFile.js:38 src/utils/getHistoryExportFile.js:117 #: src/editHistDialog.js:68 src/historyFactory.js:186 msgid "Missed" msgstr "" #: src/utils/getHistoryExportFile.js:41 src/utils/getHistoryExportFile.js:121 #: src/historyFactory.js:183 data/ui/edit-hist-dialog.blp:111 msgid "Skipped" msgstr "" #: src/utils/getHistoryExportFile.js:44 src/utils/getHistoryExportFile.js:55 #: src/utils/getHistoryExportFile.js:125 src/utils/getHistoryExportFile.js:138 #: src/editHistDialog.js:73 src/historyFactory.js:190 #: data/ui/edit-hist-dialog.blp:116 msgid "Confirmed" msgstr "" #: src/utils/getHistoryExportFile.js:52 src/utils/getHistoryExportFile.js:134 #: src/editHistDialog.js:56 src/historyFactory.js:178 msgid "Auto-Confirmed" msgstr "" #: src/utils/getHistoryExportFile.js:55 src/utils/getHistoryExportFile.js:138 #: src/editHistDialog.js:74 msgid "Time Unknown" msgstr "" #. TRANSLATORS: Context: 1 Pill at 19:00 #: src/utils/getTreatmentsExportFile.js:69 msgid "at" msgstr "" #: src/utils/getTreatmentsExportFile.js:89 data/ui/med-dialog.blp:443 msgid "Notes" msgstr "" #: src/utils/getTreatmentsExportFile.js:96 src/utils/locale.js:37 #: src/treatmentsFactory.js:268 msgid "Daily" msgstr "" #: src/utils/getTreatmentsExportFile.js:102 src/medDialog.js:428 #: data/ui/med-dialog.blp:459 msgid "Day of Month" msgstr "" #. TRANSLATORS: Context: 2 day(s) on, 1 day(s) off #: src/utils/getTreatmentsExportFile.js:109 msgid "day(s) on" msgstr "" #. TRANSLATORS: Context: 2 day(s) on, 1 day(s) off #: src/utils/getTreatmentsExportFile.js:111 msgid "day(s) off" msgstr "" #: src/utils/getTreatmentsExportFile.js:122 src/todayFactory.js:41 #: src/treatmentsFactory.js:298 data/ui/med-dialog.blp:461 msgid "As Needed" msgstr "" #: src/utils/getTreatmentsExportFile.js:132 data/ui/med-dialog.blp:764 msgid "Duration" msgstr "" #: src/utils/getTreatmentsExportFile.js:135 msgid "Started on" msgstr "" #: src/utils/getTreatmentsExportFile.js:136 data/ui/med-dialog.blp:775 msgid "Start" msgstr "" #: src/utils/getTreatmentsExportFile.js:138 src/treatmentsFactory.js:256 msgid "Ended on" msgstr "" #: src/utils/getTreatmentsExportFile.js:138 data/ui/med-dialog.blp:817 msgid "End" msgstr "" #: src/utils/getTreatmentsExportFile.js:173 src/utils/saveFiles.js:44 #: data/ui/window.blp:234 msgid "Treatments" msgstr "" #: src/utils/getTreatmentsExportFile.js:184 msgid "Generated on" msgstr "" #: src/utils/getTreatmentsExportFile.js:187 msgid "Ongoing" msgstr "" #: src/utils/getTreatmentsExportFile.js:188 msgid "Non-scheduled" msgstr "" #: src/utils/getTreatmentsExportFile.js:189 msgid "Finished" msgstr "" #: src/utils/locale.js:33 msgid "Weekends" msgstr "" #: src/utils/locale.js:35 msgid "Weekdays" msgstr "" #: src/utils/saveFiles.js:22 data/ui/window.blp:156 msgid "History" msgstr "" #: src/editHistDialog.js:60 src/editHistDialog.js:89 src/editHistDialog.js:110 msgid "Confirmed At" msgstr "" #: src/editHistDialog.js:64 src/editHistDialog.js:114 msgid "Skipped At" msgstr "" #: src/historyFactory.js:47 msgid "Select to be Removed" msgstr "" #. TRANSLATORS: "Your Name " #: src/main.js:69 msgid "translator-credits" msgstr "" #: src/main.js:73 msgid "Thanks to These Projects!" msgstr "" #: src/medDialog.js:99 msgid "Edit Treatment" msgstr "" #: src/medDialog.js:100 data/ui/edit-hist-dialog.blp:30 #: data/ui/preferences.blp:112 data/ui/preferences.blp:132 #: data/ui/refill-dialog.blp:67 msgid "Save" msgstr "" #: src/medDialog.js:114 msgid "Copy" msgstr "" #: src/medDialog.js:217 msgid "Add Dose" msgstr "" #: src/medDialog.js:419 msgid "Choose" msgstr "" #: src/medDialog.js:429 src/treatmentsFactory.js:274 msgid "Day" msgstr "" #: src/medDialog.js:456 data/ui/med-dialog.blp:458 msgid "Specific Days" msgstr "" #: src/medDialog.js:463 src/treatmentsFactory.js:295 data/ui/med-dialog.blp:460 msgid "Cycle" msgstr "" #: src/medDialog.js:467 data/ui/med-dialog.blp:452 msgid "Frequency" msgstr "" #: src/medDialog.js:500 msgid "Empty Name" msgstr "" #: src/medDialog.js:506 msgid "Empty Unit" msgstr "" #: src/medDialog.js:513 msgid "Choose at Least One Day" msgstr "" #: src/medDialog.js:527 src/oneTimeDialog.js:187 msgid "Name Already on Treatment List" msgstr "" #: src/medDialog.js:542 msgid "Duplicated Time" msgstr "" #: src/medDialog.js:582 msgid "Are You Sure?" msgstr "" #: src/medDialog.js:583 msgid "will be deleted" msgstr "" #: src/medDialog.js:586 data/ui/edit-hist-dialog.blp:18 #: data/ui/med-dialog.blp:19 msgid "Cancel" msgstr "" #: src/medDialog.js:587 src/treatmentsFactory.js:128 data/ui/med-dialog.blp:865 msgid "Delete" msgstr "" #: src/oneTimeDialog.js:110 msgid "New" msgstr "" #: src/oneTimeDialog.js:121 data/ui/med-dialog.blp:189 #: data/ui/one-time-dialog.blp:178 msgid "Pill(s)" msgstr "" #: src/prefsDialog.js:63 msgid "Accept to allow running in the background and receive notifications" msgstr "" #: src/prefsDialog.js:74 src/window.js:259 msgid "An Issue Has Occurred" msgstr "" #: src/prefsDialog.js:77 src/window.js:267 src/window.js:289 src/window.js:311 #: src/window.js:329 msgid "Close" msgstr "" #: src/timeDoseRow.js:34 msgid "Remove Dose" msgstr "" #: src/timeDoseRow.js:40 data/ui/edit-hist-dialog.blp:90 #: data/ui/one-time-dialog.blp:210 msgid "Change Time" msgstr "" #: src/todayFactory.js:134 msgid "Change Dose" msgstr "" #: src/treatmentsFactory.js:96 src/treatmentsFactory.js:126 #: data/ui/refill-dialog.blp:7 msgid "Refill" msgstr "" #: src/treatmentsFactory.js:125 msgid "Edit" msgstr "" #: src/treatmentsFactory.js:127 msgid "Duplicate" msgstr "" #: src/treatmentsFactory.js:146 msgid "Options" msgstr "" #. TRANSLATORS: keep the %d it's where the number goes #: src/treatmentsFactory.js:244 #, javascript-format msgid "%d Remaining" msgstr "" #. TRANSLATORS: label for when duration is enabled #: src/treatmentsFactory.js:254 msgid "Starts on" msgstr "" #: src/treatmentsFactory.js:255 msgid "Until" msgstr "" #: src/treatmentsFactory.js:283 src/treatmentsFactory.js:286 msgid "Next Dose" msgstr "" #: src/window.js:173 src/window.js:943 msgid "Reminder" msgstr "" #. TRANSLATORS: Notification text for when the inventory is low #: src/window.js:175 msgid "You have treatments low in stock" msgstr "" #: src/window.js:492 msgid "Show All" msgstr "" #: src/window.js:515 msgid "Show Less" msgstr "" #: src/window.js:648 msgid "No Results Found" msgstr "" #: src/window.js:648 src/window.js:1517 msgid "No History" msgstr "" #: src/window.js:818 data/ui/window.blp:260 msgid "No Treatments" msgstr "" #: src/window.js:818 msgid "All Done for Today" msgstr "" #: src/window.js:906 src/window.js:1090 data/ui/one-time-dialog.blp:285 #: data/ui/preferences.blp:73 msgid "Confirm" msgstr "" #: src/window.js:906 msgid "Confirm All" msgstr "" #: src/window.js:907 data/ui/preferences.blp:84 data/ui/window.blp:146 msgid "Skip" msgstr "" #: src/window.js:907 msgid "Skip All" msgstr "" #. TRANSLATORS: keep the %d it's where the number goes #: src/window.js:938 #, javascript-format msgid "and %d more" msgstr "" #: src/window.js:1090 data/ui/one-time-dialog.blp:7 data/ui/window.blp:133 msgid "One-Time Entry" msgstr "" #: src/window.js:1295 data/ui/window.blp:353 msgid "Quit" msgstr "" #: data/ui/edit-hist-dialog.blp:7 msgid "Edit Entry" msgstr "" #: data/ui/med-dialog.blp:7 msgid "New Treatment" msgstr "" #: data/ui/med-dialog.blp:31 data/ui/window.blp:283 msgid "Add" msgstr "" #: data/ui/med-dialog.blp:69 data/ui/one-time-dialog.blp:58 msgid "Color" msgstr "" #. TRANSLATORS: Tooltip for the colors (from Default until Purple) #: data/ui/med-dialog.blp:94 data/ui/one-time-dialog.blp:83 msgid "Default" msgstr "" #: data/ui/med-dialog.blp:106 data/ui/one-time-dialog.blp:95 msgid "Red" msgstr "" #: data/ui/med-dialog.blp:118 data/ui/one-time-dialog.blp:107 msgid "Orange" msgstr "" #: data/ui/med-dialog.blp:130 data/ui/one-time-dialog.blp:119 msgid "Yellow" msgstr "" #: data/ui/med-dialog.blp:142 data/ui/one-time-dialog.blp:131 msgid "Green" msgstr "" #: data/ui/med-dialog.blp:154 data/ui/one-time-dialog.blp:143 msgid "Cyan" msgstr "" #: data/ui/med-dialog.blp:166 data/ui/one-time-dialog.blp:155 msgid "Blue" msgstr "" #: data/ui/med-dialog.blp:178 data/ui/one-time-dialog.blp:167 msgid "Purple" msgstr "" #: data/ui/med-dialog.blp:188 data/ui/one-time-dialog.blp:177 msgid "Unit" msgstr "" #: data/ui/med-dialog.blp:197 msgid "Icon" msgstr "" #. TRANSLATORS: Tooltip for the icons (from Pill until Potion) #: data/ui/med-dialog.blp:226 msgid "Pill" msgstr "" #: data/ui/med-dialog.blp:242 msgid "Alternative Pill" msgstr "" #: data/ui/med-dialog.blp:258 msgid "Capsule" msgstr "" #: data/ui/med-dialog.blp:274 msgid "Round Pill" msgstr "" #: data/ui/med-dialog.blp:290 msgid "Alternative Round Pill" msgstr "" #: data/ui/med-dialog.blp:306 msgid "Ampoule" msgstr "" #: data/ui/med-dialog.blp:322 msgid "Injection" msgstr "" #: data/ui/med-dialog.blp:338 msgid "Square Pill" msgstr "" #: data/ui/med-dialog.blp:354 msgid "Alternative Square Pill" msgstr "" #: data/ui/med-dialog.blp:370 msgid "Triangle pill" msgstr "" #: data/ui/med-dialog.blp:386 msgid "Alternative Triangle Pill" msgstr "" #: data/ui/med-dialog.blp:402 msgid "Bottle" msgstr "" #: data/ui/med-dialog.blp:418 msgid "Drops" msgstr "" #: data/ui/med-dialog.blp:434 msgid "Potion" msgstr "" #: data/ui/med-dialog.blp:457 msgid "Every Day" msgstr "" #: data/ui/med-dialog.blp:473 msgid "Choose Days" msgstr "" #: data/ui/med-dialog.blp:572 msgid "Choose Day" msgstr "" #: data/ui/med-dialog.blp:617 msgid "Change Cycle" msgstr "" #: data/ui/med-dialog.blp:642 msgid "Days Active" msgstr "" #: data/ui/med-dialog.blp:656 msgid "Days Inactive" msgstr "" #. TRANSLATORS: Day in cycle, try to keep it short #: data/ui/med-dialog.blp:671 msgid "Today is Cycle Day…" msgstr "" #: data/ui/med-dialog.blp:694 msgid "Increase Notification Priority" msgstr "" #: data/ui/med-dialog.blp:695 msgid "Show in fullscreen mode or with 'Do Not Disturb' enabled" msgstr "" #: data/ui/med-dialog.blp:699 msgid "Recurring Notifications" msgstr "" #: data/ui/med-dialog.blp:700 msgid "Renotify until it's confirmed or skipped" msgstr "" #: data/ui/med-dialog.blp:705 msgid "Interval in Minutes" msgstr "" #: data/ui/med-dialog.blp:718 data/ui/refill-dialog.blp:36 msgid "Inventory" msgstr "" #: data/ui/med-dialog.blp:719 msgid "Manage your stock" msgstr "" #: data/ui/med-dialog.blp:725 msgid "Current" msgstr "" #: data/ui/med-dialog.blp:738 msgid "Remind Me At" msgstr "" #: data/ui/med-dialog.blp:751 msgid "Refill Amount" msgstr "" #: data/ui/med-dialog.blp:765 msgid "Set start and end dates" msgstr "" #: data/ui/med-dialog.blp:785 data/ui/med-dialog.blp:827 #: data/ui/one-time-dialog.blp:243 msgid "Choose Date" msgstr "" #: data/ui/med-dialog.blp:855 msgid "Mark as Confirmed" msgstr "" #: data/ui/med-dialog.blp:856 msgid "" "If not manually confirmed or skipped, it will be recorded as confirmed in " "history, reducing stock if enabled" msgstr "" #: data/ui/one-time-dialog.blp:44 msgid "From Treatment List" msgstr "" #: data/ui/one-time-dialog.blp:182 msgid "Amount" msgstr "" #: data/ui/preferences.blp:7 data/ui/window.blp:338 msgid "Preferences" msgstr "" #: data/ui/preferences.blp:17 msgid "Auto-Start at Login" msgstr "" #: data/ui/preferences.blp:28 msgid "Auto-Clear History" msgstr "" #: data/ui/preferences.blp:29 msgid "Keeps a maximum of 30 days" msgstr "" #: data/ui/preferences.blp:40 msgid "Low Stock Notification" msgstr "" #: data/ui/preferences.blp:41 msgid "Send reminders when treatments are low in stock" msgstr "" #: data/ui/preferences.blp:52 msgid "Notification Sound" msgstr "" #: data/ui/preferences.blp:63 msgid "Notification Buttons" msgstr "" #: data/ui/preferences.blp:64 msgid "Show or hide confirm/skip" msgstr "" #: data/ui/preferences.blp:98 msgid "Export History As" msgstr "" #: data/ui/preferences.blp:121 msgid "Export Treatments As" msgstr "" #: data/ui/shortcuts-dialog.blp:8 msgid "Shortcuts" msgstr "" #: data/ui/shortcuts-dialog.blp:11 msgctxt "shortcut window" msgid "Show/Hide 'As Needed'" msgstr "" #: data/ui/shortcuts-dialog.blp:16 msgctxt "shortcut window" msgid "New One-Time Entry" msgstr "" #: data/ui/shortcuts-dialog.blp:21 msgctxt "shortcut window" msgid "Add New Treatment" msgstr "" #: data/ui/shortcuts-dialog.blp:26 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "" #: data/ui/shortcuts-dialog.blp:31 msgctxt "shortcut window" msgid "Quit" msgstr "" #: data/ui/window.blp:23 msgid "Show/Hide 'As Needed'" msgstr "" #: data/ui/window.blp:31 msgid "Search" msgstr "" #: data/ui/window.blp:39 msgid "Sort Treatments" msgstr "" #: data/ui/window.blp:48 msgid "Main Menu" msgstr "" #: data/ui/window.blp:61 msgid "Search…" msgstr "" #: data/ui/window.blp:71 msgid "Today" msgstr "" #: data/ui/window.blp:117 data/ui/window.blp:210 msgid "Unselect" msgstr "" #: data/ui/window.blp:220 msgid "Remove Entries" msgstr "" #: data/ui/window.blp:300 msgid "Name Ascending" msgstr "" #: data/ui/window.blp:306 msgid "Remaining Stock (Lowest First)" msgstr "" #: data/ui/window.blp:312 msgid "Remaining Stock (Highest First)" msgstr "" #: data/ui/window.blp:318 msgid "As Needed Last" msgstr "" #: data/ui/window.blp:324 msgid "Ended Last" msgstr "" #: data/ui/window.blp:330 msgid "As Needed/Ended Last" msgstr "" #: data/ui/window.blp:343 msgid "Keyboard Shortcuts" msgstr "" #: data/ui/window.blp:348 msgid "About Dosage" msgstr "" diegopvlk-Dosage-bd9126a/po/sv.po000066400000000000000000000547061514145341100167310ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) 2023 Diego Povliuk # This file is distributed under the license GPLv3-or-later. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: io.github.diegopvlk.Dosage\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-12-19 16:12-0300\n" "PO-Revision-Date: 2025-03-14 12:55+0000\n" "Last-Translator: bittin1ddc447d824349b2 \n" "Language-Team: Swedish \n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 5.11-dev\n" #. TRANSLATORS: App name, translate to your language and follow the capitalization #: data/io.github.diegopvlk.Dosage.appdata.xml.in:20 #: data/io.github.diegopvlk.Dosage.desktop.in:3 #: src/utils/getTreatmentsExportFile.js:173 src/utils/saveFiles.js:22 #: src/utils/saveFiles.js:44 src/main.js:60 src/window.js:1060 #: data/ui/window.blp:6 msgid "Dosage" msgstr "Dosering" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:21 msgid "Keep track of your treatments" msgstr "Håll koll på dina behandlingar" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:24 msgid "" "Easily manage and track treatments with Dosage: notifications, history, " "multiple doses, flexible frequency, customization, stock monitoring, and " "duration control" msgstr "" "Hantera enkelt spårbehandlingar med dosering: aviseringar, historik, flera " "doser, flexibel frekvens, anpassning, lagerövervakning och " "varaktighetskontroll" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:25 msgid "Features:" msgstr "Funktioner:" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:27 msgid "Notifications — Get reminders at the right time" msgstr "Aviseringar — Få påminnelser vid rätt tidpunkt" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:28 msgid "History — See which medications you took, skipped or missed" msgstr "Historik — Se vilka mediciner du tog, hoppade över eller missade" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:29 msgid "Dosage management — Multiple doses with different times" msgstr "Dosehantering — flera doser med olika tider" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:30 msgid "" "Frequency modes — Every day, specific days, cycle or just when necessary" msgstr "Frekvenslägen — varje dag, specifika dagar, cykel eller bara vid behov" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:31 msgid "Color and icon — Give a shape for your treatment" msgstr "Färg och ikon — ge din behandling en form" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:32 msgid "Inventory tracking — Monitor your stock and get reminded when it's low" msgstr "" "Lagerhantering — övervaka ditt lager och få en påminnelse när det börjar ta " "slut" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:33 msgid "Duration — Define the start and end dates" msgstr "Längd — definiera start- och slutdatum" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:44 msgid "Dosage today window in light theme" msgstr "Dosering idag fönster i ljust tema" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:49 msgid "Dosage preferences window in light theme" msgstr "Dosering inställningsfönster i ljust tema" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:54 msgid "Dosage edit treatment window in light theme" msgstr "Dosredigeringsbehandlingsfönster i ljust tema" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:59 msgid "Dosage today window in dark theme" msgstr "Dosering idag fönster i mörkt tema" #. TRANSLATORS: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/io.github.diegopvlk.Dosage.desktop.in:10 msgid "Medication;Tracker;Reminder;Today;Treatments;Pill;Drug;Remedy;" msgstr "Medication;Tracker;Reminder;Today;Treatments;Pill;Drug;Remedy;Medicinering;Påminnelse;Idag;Behandlingar;Piller;Läkemedel;Botemedel;" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:232 msgid "Date" msgstr "Datum" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:199 msgid "Time" msgstr "Tid" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/med-dialog.blp:61 data/ui/one-time-dialog.blp:49 msgid "Name" msgstr "Namn" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:183 msgid "Dose" msgstr "Dos" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 msgid "Status" msgstr "Status" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 msgid "Time Confirmed" msgstr "Tid Bekräftad" #: src/utils/getHistoryExportFile.js:38 src/utils/getHistoryExportFile.js:117 #: src/editHistDialog.js:68 src/historyFactory.js:186 msgid "Missed" msgstr "Glömd" #: src/utils/getHistoryExportFile.js:41 src/utils/getHistoryExportFile.js:121 #: src/historyFactory.js:183 data/ui/edit-hist-dialog.blp:111 msgid "Skipped" msgstr "Hoppade Över" #: src/utils/getHistoryExportFile.js:44 src/utils/getHistoryExportFile.js:55 #: src/utils/getHistoryExportFile.js:125 src/utils/getHistoryExportFile.js:138 #: src/editHistDialog.js:73 src/historyFactory.js:190 #: data/ui/edit-hist-dialog.blp:116 msgid "Confirmed" msgstr "Bekräftad" #: src/utils/getHistoryExportFile.js:52 src/utils/getHistoryExportFile.js:134 #: src/editHistDialog.js:56 src/historyFactory.js:178 msgid "Auto-Confirmed" msgstr "Automatiskt Bekräftad" #: src/utils/getHistoryExportFile.js:55 src/utils/getHistoryExportFile.js:138 #: src/editHistDialog.js:74 msgid "Time Unknown" msgstr "Tid Okänd" #. TRANSLATORS: Context: 1 Pill at 19:00 #: src/utils/getTreatmentsExportFile.js:69 #, fuzzy #| msgid "Date" msgid "at" msgstr "Datum" #: src/utils/getTreatmentsExportFile.js:89 data/ui/med-dialog.blp:443 msgid "Notes" msgstr "Anteckningar" #: src/utils/getTreatmentsExportFile.js:96 src/utils/locale.js:37 #: src/treatmentsFactory.js:268 msgid "Daily" msgstr "Daglig" #: src/utils/getTreatmentsExportFile.js:102 src/medDialog.js:428 #: data/ui/med-dialog.blp:459 msgid "Day of Month" msgstr "Dag I Månaden" #. TRANSLATORS: Context: 2 day(s) on, 1 day(s) off #: src/utils/getTreatmentsExportFile.js:109 msgid "day(s) on" msgstr "" #. TRANSLATORS: Context: 2 day(s) on, 1 day(s) off #: src/utils/getTreatmentsExportFile.js:111 msgid "day(s) off" msgstr "" #: src/utils/getTreatmentsExportFile.js:122 src/todayFactory.js:41 #: src/treatmentsFactory.js:298 data/ui/med-dialog.blp:461 msgid "As Needed" msgstr "Vid Behov" #: src/utils/getTreatmentsExportFile.js:132 data/ui/med-dialog.blp:764 msgid "Duration" msgstr "Längd" #: src/utils/getTreatmentsExportFile.js:135 #, fuzzy #| msgid "Starts On" msgid "Started on" msgstr "Börjar" #: src/utils/getTreatmentsExportFile.js:136 data/ui/med-dialog.blp:775 #, fuzzy #| msgid "Starts On" msgid "Start" msgstr "Börjar" #: src/utils/getTreatmentsExportFile.js:138 src/treatmentsFactory.js:256 msgid "Ended on" msgstr "Avslutades på" #: src/utils/getTreatmentsExportFile.js:138 data/ui/med-dialog.blp:817 #, fuzzy #| msgid "Ends On" msgid "End" msgstr "Slutar" #: src/utils/getTreatmentsExportFile.js:173 src/utils/saveFiles.js:44 #: data/ui/window.blp:234 msgid "Treatments" msgstr "Behandlingar" #: src/utils/getTreatmentsExportFile.js:184 #, fuzzy #| msgctxt "shortcut window" #| msgid "General" msgid "Generated on" msgstr "Allmän" #: src/utils/getTreatmentsExportFile.js:187 msgid "Ongoing" msgstr "" #: src/utils/getTreatmentsExportFile.js:188 msgid "Non-scheduled" msgstr "" #: src/utils/getTreatmentsExportFile.js:189 msgid "Finished" msgstr "" #: src/utils/locale.js:33 msgid "Weekends" msgstr "Helger" #: src/utils/locale.js:35 msgid "Weekdays" msgstr "Veckodagar" #: src/utils/saveFiles.js:22 data/ui/window.blp:156 msgid "History" msgstr "Historik" #: src/editHistDialog.js:60 src/editHistDialog.js:89 src/editHistDialog.js:110 msgid "Confirmed At" msgstr "Bekräftad Vid" #: src/editHistDialog.js:64 src/editHistDialog.js:114 msgid "Skipped At" msgstr "Hoppades Över Vid" #: src/historyFactory.js:47 msgid "Select to be Removed" msgstr "Välj Att Ta Bort" #. TRANSLATORS: "Your Name " #: src/main.js:69 msgid "translator-credits" msgstr "skøldis " #: src/main.js:73 msgid "Thanks to These Projects!" msgstr "Tack Vare Dessa Projekt!" #: src/medDialog.js:99 msgid "Edit Treatment" msgstr "Redigera Behandling" #: src/medDialog.js:100 data/ui/edit-hist-dialog.blp:30 #: data/ui/preferences.blp:112 data/ui/preferences.blp:132 #: data/ui/refill-dialog.blp:67 msgid "Save" msgstr "Spara" #: src/medDialog.js:114 msgid "Copy" msgstr "Kopiera" #: src/medDialog.js:217 msgid "Add Dose" msgstr "Lägg Till Dosering" #: src/medDialog.js:419 msgid "Choose" msgstr "Välj" #: src/medDialog.js:429 src/treatmentsFactory.js:274 msgid "Day" msgstr "Dag" #: src/medDialog.js:456 data/ui/med-dialog.blp:458 msgid "Specific Days" msgstr "Särskilda Dagar" #: src/medDialog.js:463 src/treatmentsFactory.js:295 data/ui/med-dialog.blp:460 msgid "Cycle" msgstr "Cykel" #: src/medDialog.js:467 data/ui/med-dialog.blp:452 msgid "Frequency" msgstr "Frekvens" #: src/medDialog.js:500 msgid "Empty Name" msgstr "Tömt Namn" #: src/medDialog.js:506 msgid "Empty Unit" msgstr "Töm Enhet" #: src/medDialog.js:513 msgid "Choose at Least One Day" msgstr "Välj Åtminstone En Dag" #: src/medDialog.js:527 src/oneTimeDialog.js:187 msgid "Name Already on Treatment List" msgstr "Namn Finns Redan På Behandlingslistan" #: src/medDialog.js:542 msgid "Duplicated Time" msgstr "Duplicerad Tid" #: src/medDialog.js:582 msgid "Are You Sure?" msgstr "Är Du Säker?" #: src/medDialog.js:583 msgid "will be deleted" msgstr "kommer att raderas" #: src/medDialog.js:586 data/ui/edit-hist-dialog.blp:18 #: data/ui/med-dialog.blp:19 msgid "Cancel" msgstr "Avbryt" #: src/medDialog.js:587 src/treatmentsFactory.js:128 data/ui/med-dialog.blp:865 msgid "Delete" msgstr "Radera" #: src/oneTimeDialog.js:110 msgid "New" msgstr "Ny" #: src/oneTimeDialog.js:121 data/ui/med-dialog.blp:189 #: data/ui/one-time-dialog.blp:178 msgid "Pill(s)" msgstr "Piller" #: src/prefsDialog.js:63 msgid "Accept to allow running in the background and receive notifications" msgstr "Acceptera för att tillåta körning i bakgrunden och ta emot aviseringar" #: src/prefsDialog.js:74 src/window.js:259 msgid "An Issue Has Occurred" msgstr "Ett Problem Har Uppstått" #: src/prefsDialog.js:77 src/window.js:267 src/window.js:289 src/window.js:311 #: src/window.js:329 msgid "Close" msgstr "Stäng" #: src/timeDoseRow.js:34 msgid "Remove Dose" msgstr "Ta Bort Dos" #: src/timeDoseRow.js:40 data/ui/edit-hist-dialog.blp:90 #: data/ui/one-time-dialog.blp:210 msgid "Change Time" msgstr "Ändra Tid" #: src/todayFactory.js:134 msgid "Change Dose" msgstr "Ändra Dos" #: src/treatmentsFactory.js:96 src/treatmentsFactory.js:126 #: data/ui/refill-dialog.blp:7 msgid "Refill" msgstr "Fyll På" #: src/treatmentsFactory.js:125 msgid "Edit" msgstr "Redigera" #: src/treatmentsFactory.js:127 msgid "Duplicate" msgstr "Duplicera" #: src/treatmentsFactory.js:146 msgid "Options" msgstr "Alternativ" #. TRANSLATORS: keep the %d it's where the number goes #: src/treatmentsFactory.js:244 #, javascript-format msgid "%d Remaining" msgstr "%d Återstående" #. TRANSLATORS: label for when duration is enabled #: src/treatmentsFactory.js:254 msgid "Starts on" msgstr "Börjar" #: src/treatmentsFactory.js:255 msgid "Until" msgstr "Till" #: src/treatmentsFactory.js:283 src/treatmentsFactory.js:286 msgid "Next Dose" msgstr "Nästa Dos" #: src/window.js:173 src/window.js:943 msgid "Reminder" msgstr "Påminnelse" #. TRANSLATORS: Notification text for when the inventory is low #: src/window.js:175 msgid "You have treatments low in stock" msgstr "Du har behandlingar som har lågt lager" #: src/window.js:492 msgid "Show All" msgstr "Visa Alla" #: src/window.js:515 msgid "Show Less" msgstr "Visa Mindre" #: src/window.js:648 msgid "No Results Found" msgstr "Inga Resultat Hittades" #: src/window.js:648 src/window.js:1517 #, fuzzy #| msgid "History" msgid "No History" msgstr "Historik" #: src/window.js:818 data/ui/window.blp:260 #, fuzzy #| msgid "Treatments" msgid "No Treatments" msgstr "Behandlingar" #: src/window.js:818 msgid "All Done for Today" msgstr "Färdig För I Dag" #: src/window.js:906 src/window.js:1090 data/ui/one-time-dialog.blp:285 #: data/ui/preferences.blp:73 msgid "Confirm" msgstr "Bekräfta" #: src/window.js:906 msgid "Confirm All" msgstr "Bekräfta Alla" #: src/window.js:907 data/ui/preferences.blp:84 data/ui/window.blp:146 msgid "Skip" msgstr "Hoppa Över" #: src/window.js:907 msgid "Skip All" msgstr "Hoppa Över Alla" #. TRANSLATORS: keep the %d it's where the number goes #: src/window.js:938 #, javascript-format msgid "and %d more" msgstr "och %d till" #: src/window.js:1090 data/ui/one-time-dialog.blp:7 data/ui/window.blp:133 msgid "One-Time Entry" msgstr "Engångsinträde" #: src/window.js:1295 data/ui/window.blp:353 msgid "Quit" msgstr "Avsluta" #: data/ui/edit-hist-dialog.blp:7 msgid "Edit Entry" msgstr "Redigera Post" #: data/ui/med-dialog.blp:7 msgid "New Treatment" msgstr "Ny Behandling" #: data/ui/med-dialog.blp:31 data/ui/window.blp:283 msgid "Add" msgstr "Lägg Till" #: data/ui/med-dialog.blp:69 data/ui/one-time-dialog.blp:58 msgid "Color" msgstr "Färg" #. TRANSLATORS: Tooltip for the colors (from Default until Purple) #: data/ui/med-dialog.blp:94 data/ui/one-time-dialog.blp:83 msgid "Default" msgstr "Standard" #: data/ui/med-dialog.blp:106 data/ui/one-time-dialog.blp:95 msgid "Red" msgstr "Röd" #: data/ui/med-dialog.blp:118 data/ui/one-time-dialog.blp:107 msgid "Orange" msgstr "Orange" #: data/ui/med-dialog.blp:130 data/ui/one-time-dialog.blp:119 msgid "Yellow" msgstr "Gul" #: data/ui/med-dialog.blp:142 data/ui/one-time-dialog.blp:131 msgid "Green" msgstr "Grön" #: data/ui/med-dialog.blp:154 data/ui/one-time-dialog.blp:143 msgid "Cyan" msgstr "Cyanblå" #: data/ui/med-dialog.blp:166 data/ui/one-time-dialog.blp:155 msgid "Blue" msgstr "Blå" #: data/ui/med-dialog.blp:178 data/ui/one-time-dialog.blp:167 msgid "Purple" msgstr "Lila" #: data/ui/med-dialog.blp:188 data/ui/one-time-dialog.blp:177 msgid "Unit" msgstr "Enhet" #: data/ui/med-dialog.blp:197 msgid "Icon" msgstr "Ikon" #. TRANSLATORS: Tooltip for the icons (from Pill until Potion) #: data/ui/med-dialog.blp:226 msgid "Pill" msgstr "Piller" #: data/ui/med-dialog.blp:242 msgid "Alternative Pill" msgstr "Alternativt Piller" #: data/ui/med-dialog.blp:258 msgid "Capsule" msgstr "Kapsel" #: data/ui/med-dialog.blp:274 msgid "Round Pill" msgstr "Runt Piller" #: data/ui/med-dialog.blp:290 msgid "Alternative Round Pill" msgstr "Alternativt Runt Piller" #: data/ui/med-dialog.blp:306 msgid "Ampoule" msgstr "Ampull" #: data/ui/med-dialog.blp:322 msgid "Injection" msgstr "Injektion" #: data/ui/med-dialog.blp:338 msgid "Square Pill" msgstr "Fyrkantigt Piller" #: data/ui/med-dialog.blp:354 msgid "Alternative Square Pill" msgstr "Alternativt Fyrkantigt Piller" #: data/ui/med-dialog.blp:370 msgid "Triangle pill" msgstr "Trekantigt piller" #: data/ui/med-dialog.blp:386 msgid "Alternative Triangle Pill" msgstr "Alternativt Trekantigt Piller" #: data/ui/med-dialog.blp:402 msgid "Bottle" msgstr "Flaska" #: data/ui/med-dialog.blp:418 msgid "Drops" msgstr "Dråber" #: data/ui/med-dialog.blp:434 msgid "Potion" msgstr "Dryck" #: data/ui/med-dialog.blp:457 msgid "Every Day" msgstr "Varje Dag" #: data/ui/med-dialog.blp:473 msgid "Choose Days" msgstr "Välj Dagar" #: data/ui/med-dialog.blp:572 msgid "Choose Day" msgstr "Välj Dag" #: data/ui/med-dialog.blp:617 msgid "Change Cycle" msgstr "Ändra Cykeln" #: data/ui/med-dialog.blp:642 msgid "Days Active" msgstr "Dagar Aktiv" #: data/ui/med-dialog.blp:656 msgid "Days Inactive" msgstr "Dagar Inaktiv" #. TRANSLATORS: Day in cycle, try to keep it short #: data/ui/med-dialog.blp:671 msgid "Today is Cycle Day…" msgstr "I Dag Är Cykeldag…" #: data/ui/med-dialog.blp:694 msgid "Increase Notification Priority" msgstr "Öka Aviseringsprioritet" #: data/ui/med-dialog.blp:695 msgid "Show in fullscreen mode or with 'Do Not Disturb' enabled" msgstr "" "Får aviseringen att visas i helskärmsläge eller även om \"Stör ej\" är " "aktiverat" #: data/ui/med-dialog.blp:699 msgid "Recurring Notifications" msgstr "Återkommande Aviseringar" #: data/ui/med-dialog.blp:700 msgid "Renotify until it's confirmed or skipped" msgstr "Meddela igen tills det är bekräftat eller hoppade över" #: data/ui/med-dialog.blp:705 msgid "Interval in Minutes" msgstr "Intervall I Minuter" #: data/ui/med-dialog.blp:718 data/ui/refill-dialog.blp:36 msgid "Inventory" msgstr "Lager" #: data/ui/med-dialog.blp:719 msgid "Manage your stock" msgstr "Hantera ditt lager" #: data/ui/med-dialog.blp:725 msgid "Current" msgstr "Nuvarande" #: data/ui/med-dialog.blp:738 msgid "Remind Me At" msgstr "Påminna Mig På" #: data/ui/med-dialog.blp:751 msgid "Refill Amount" msgstr "Påfyllningsmängd" #: data/ui/med-dialog.blp:765 msgid "Set start and end dates" msgstr "Ställ in start och slutdatum" #: data/ui/med-dialog.blp:785 data/ui/med-dialog.blp:827 #: data/ui/one-time-dialog.blp:243 msgid "Choose Date" msgstr "Välj Datum" #: data/ui/med-dialog.blp:855 msgid "Mark as Confirmed" msgstr "Markera Som Bekräftad" #: data/ui/med-dialog.blp:856 msgid "" "If not manually confirmed or skipped, it will be recorded as confirmed in " "history, reducing stock if enabled" msgstr "" "Om det inte bekräftas manuellt eller hoppas över, kommer det att registreras " "som bekräftat i historiken, vilket minskar lager om aktiverat" #: data/ui/one-time-dialog.blp:44 msgid "From Treatment List" msgstr "Från Behandlingslistan" #: data/ui/one-time-dialog.blp:182 msgid "Amount" msgstr "Mängd" #: data/ui/preferences.blp:7 data/ui/window.blp:338 msgid "Preferences" msgstr "Inställningar" #: data/ui/preferences.blp:17 msgid "Auto-Start at Login" msgstr "Börja Automatiskt På Inloggning" #: data/ui/preferences.blp:28 msgid "Auto-Clear History" msgstr "Automatisk Rensa Historik" #: data/ui/preferences.blp:29 msgid "Keeps a maximum of 30 days" msgstr "Behåller högst 30 dagar" #: data/ui/preferences.blp:40 msgid "Low Stock Notification" msgstr "Lågt Lager Avisering" #: data/ui/preferences.blp:41 msgid "Send reminders when treatments are low in stock" msgstr "Skicka påminnelser när behandlingar är låga i lager" #: data/ui/preferences.blp:52 msgid "Notification Sound" msgstr "Notifikations Ljud" #: data/ui/preferences.blp:63 msgid "Notification Buttons" msgstr "Aviseringsknappar" #: data/ui/preferences.blp:64 msgid "Show or hide confirm/skip" msgstr "Visa eller dölj bekräfta/hoppa över" #: data/ui/preferences.blp:98 #, fuzzy #| msgid "Export History as CSV" msgid "Export History As" msgstr "Exportera Historik Som CSV" #: data/ui/preferences.blp:121 #, fuzzy #| msgid "Empty Treatments" msgid "Export Treatments As" msgstr "Tomma Behandlingar" #: data/ui/shortcuts-dialog.blp:8 #, fuzzy #| msgctxt "shortcut window" #| msgid "Show Shortcuts" msgid "Shortcuts" msgstr "Visa Genvägar" #: data/ui/shortcuts-dialog.blp:11 #, fuzzy #| msgid "Show/Hide 'As Needed'" msgctxt "shortcut window" msgid "Show/Hide 'As Needed'" msgstr "Visa/Dölj 'Vid Behov'" #: data/ui/shortcuts-dialog.blp:16 #, fuzzy #| msgid "One-Time Entry" msgctxt "shortcut window" msgid "New One-Time Entry" msgstr "Engångsinträde" #: data/ui/shortcuts-dialog.blp:21 #, fuzzy #| msgid "New Treatment" msgctxt "shortcut window" msgid "Add New Treatment" msgstr "Ny Behandling" #: data/ui/shortcuts-dialog.blp:26 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Visa Genvägar" #: data/ui/shortcuts-dialog.blp:31 msgctxt "shortcut window" msgid "Quit" msgstr "Avsluta" #: data/ui/window.blp:23 msgid "Show/Hide 'As Needed'" msgstr "Visa/Dölj 'Vid Behov'" #: data/ui/window.blp:31 msgid "Search" msgstr "Söka" #: data/ui/window.blp:39 #, fuzzy #| msgid "Treatments" msgid "Sort Treatments" msgstr "Behandlingar" #: data/ui/window.blp:48 msgid "Main Menu" msgstr "Huvudmeny" #: data/ui/window.blp:61 msgid "Search…" msgstr "Söka…" #: data/ui/window.blp:71 msgid "Today" msgstr "I Dag" #: data/ui/window.blp:117 data/ui/window.blp:210 msgid "Unselect" msgstr "Välja Bort" #: data/ui/window.blp:220 msgid "Remove Entries" msgstr "Ta Bort Poster" #: data/ui/window.blp:300 msgid "Name Ascending" msgstr "" #: data/ui/window.blp:306 msgid "Remaining Stock (Lowest First)" msgstr "" #: data/ui/window.blp:312 msgid "Remaining Stock (Highest First)" msgstr "" #: data/ui/window.blp:318 #, fuzzy #| msgid "As Needed" msgid "As Needed Last" msgstr "Vid Behov" #: data/ui/window.blp:324 #, fuzzy #| msgid "Ended on" msgid "Ended Last" msgstr "Avslutades på" #: data/ui/window.blp:330 #, fuzzy #| msgid "As Needed" msgid "As Needed/Ended Last" msgstr "Vid Behov" #: data/ui/window.blp:343 msgid "Keyboard Shortcuts" msgstr "Tangentbordsgenvägar" #: data/ui/window.blp:348 msgid "About Dosage" msgstr "Om Dosering" #~ msgid "Empty Treatments" #~ msgstr "Tomma Behandlingar" #~ msgid "Empty History" #~ msgstr "Tom Historik" #~ msgid "No Treatments Added" #~ msgstr "Inga Behandlingar Har Lagts Till" #~ msgctxt "shortcut window" #~ msgid "General" #~ msgstr "Allmän" #~ msgctxt "shortcut window" #~ msgid "Preferences" #~ msgstr "Inställningar" #~ msgid "After meal" #~ msgstr "Efter måltid" #~ msgid "Refill Stock" #~ msgstr "Fyll På Lager" #~ msgid "Low Stock" #~ msgstr "Lågt Lager" #~ msgid "Form" #~ msgstr "Form" #~ msgid "Color and icon" #~ msgstr "Färg och ikon" #~ msgid "Time and amount" #~ msgstr "Tid och antal" #~ msgid "Restore" #~ msgstr "Återställa" #~ msgid "New entry" #~ msgstr "Ny notering" #~ msgid "Name already exists" #~ msgstr "Namnet finns redan" #~ msgid "Add to history" #~ msgstr "Lägg till i historik" #~ msgid "medication" #~ msgstr "medicin" #~ msgid "tracker" #~ msgstr "spårare" #~ msgid "treatments" #~ msgstr "behandlingar" #~ msgid "pill" #~ msgstr "tablett" #~ msgid "drug" #~ msgstr "läkemedel" #~ msgid "remedy" #~ msgstr "botemedel" #~ msgid "Su" #~ msgstr "Sö" #~ msgid "Mo" #~ msgstr "Må" #~ msgid "Tu" #~ msgstr "Ti" #~ msgid "We" #~ msgstr "On" #~ msgid "Th" #~ msgstr "To" #~ msgid "Fr" #~ msgstr "Fr" #~ msgid "Sa" #~ msgstr "Lö" #~ msgid "Sunday" #~ msgstr "Söndag" #~ msgid "Monday" #~ msgstr "Måndag" #~ msgid "Tuesday" #~ msgstr "Tisdag" #~ msgid "Wednesday" #~ msgstr "Onsdag" #~ msgid "Thursday" #~ msgstr "Torsdag" #~ msgid "Friday" #~ msgstr "Fredag" #~ msgid "Saturday" #~ msgstr "Lördag" #~ msgid "About" #~ msgstr "Om Dosering" diegopvlk-Dosage-bd9126a/po/ta.po000066400000000000000000000724271514145341100167050ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) 2023 Diego Povliuk # This file is distributed under the license GPLv3-or-later. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: io.github.diegopvlk.Dosage\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-12-19 16:12-0300\n" "PO-Revision-Date: 2025-05-06 14:06+0000\n" "Last-Translator: தமிழ்நேரம் \n" "Language-Team: Tamil \n" "Language: ta\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 5.12-dev\n" #. TRANSLATORS: App name, translate to your language and follow the capitalization #: data/io.github.diegopvlk.Dosage.appdata.xml.in:20 #: data/io.github.diegopvlk.Dosage.desktop.in:3 #: src/utils/getTreatmentsExportFile.js:173 src/utils/saveFiles.js:22 #: src/utils/saveFiles.js:44 src/main.js:60 src/window.js:1060 #: data/ui/window.blp:6 msgid "Dosage" msgstr "அளவு" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:21 msgid "Keep track of your treatments" msgstr "உங்கள் சிகிச்சைகள் கண்காணிக்கவும்" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:24 msgid "" "Easily manage and track treatments with Dosage: notifications, history, " "multiple doses, flexible frequency, customization, stock monitoring, and " "duration control" msgstr "" "அளவைக் கொண்டு ட்ராக் சிகிச்சைகளை எளிதில் நிர்வகிக்கவும்: அறிவிப்புகள், வரலாறு, பல " "அளவுகள், நெகிழ்வான அதிர்வெண், தனிப்பயனாக்கம், பங்கு கண்காணிப்பு மற்றும் காலக் கட்டுப்பாடு" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:25 msgid "Features:" msgstr "அம்சங்கள்:" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:27 msgid "Notifications — Get reminders at the right time" msgstr "அறிவிப்புகள் - சரியான நேரத்தில் நினைவூட்டல்களைப் பெறுங்கள்" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:28 msgid "History — See which medications you took, skipped or missed" msgstr "" "வரலாறு - நீங்கள் எந்த மருந்துகளை எடுத்தீர்கள், தவிர்த்துவிட்டீர்கள் அல்லது தவறவிட்டீர்கள் என்று " "பாருங்கள்" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:29 msgid "Dosage management — Multiple doses with different times" msgstr "அளவு மேலாண்மை - வெவ்வேறு நேரங்களைக் கொண்ட பல அளவுகள்" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:30 msgid "" "Frequency modes — Every day, specific days, cycle or just when necessary" msgstr "" "அதிர்வெண் முறைகள் - ஒவ்வொரு நாளும், குறிப்பிட்ட நாட்கள், சுழற்சி அல்லது தேவைப்படும்போது" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:31 msgid "Color and icon — Give a shape for your treatment" msgstr "வண்ணம் மற்றும் படவுரு - உங்கள் சிகிச்சைக்கு ஒரு வடிவம் கொடுங்கள்" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:32 msgid "Inventory tracking — Monitor your stock and get reminded when it's low" msgstr "" "சரக்கு கண்காணிப்பு - உங்கள் பங்குகளை கண்காணித்து, அது குறைவாக இருக்கும்போது " "நினைவூட்டுங்கள்" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:33 msgid "Duration — Define the start and end dates" msgstr "காலம் - தொடக்க மற்றும் இறுதி தேதிகளை வரையறுக்கவும்" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:44 msgid "Dosage today window in light theme" msgstr "ஒளி கருப்பொருளில் இன்று சாளரம்" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:49 msgid "Dosage preferences window in light theme" msgstr "ஒளி கருப்பொருளில் அளவு விருப்பத்தேர்வுகள் சாளரம்" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:54 msgid "Dosage edit treatment window in light theme" msgstr "ஒளி கருப்பொருளில் மருத்தீடு சாளரத்தை திருத்து" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:59 msgid "Dosage today window in dark theme" msgstr "இருண்ட கருப்பொருளில் இன்று சாளரம்" #. TRANSLATORS: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/io.github.diegopvlk.Dosage.desktop.in:10 msgid "Medication;Tracker;Reminder;Today;Treatments;Pill;Drug;Remedy;" msgstr "மருந்து; டிராக்கர்; நினைவூட்டல்; இன்று; சிகிச்சைகள்; மாத்திரை; மருந்து; தீர்வு;" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:232 msgid "Date" msgstr "திகதி" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:199 msgid "Time" msgstr "நேரம்" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/med-dialog.blp:61 data/ui/one-time-dialog.blp:49 msgid "Name" msgstr "பெயர்" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:183 msgid "Dose" msgstr "டோச்" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 msgid "Status" msgstr "நிலை" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 msgid "Time Confirmed" msgstr "நேரம் உறுதிப்படுத்தப்பட்டது" #: src/utils/getHistoryExportFile.js:38 src/utils/getHistoryExportFile.js:117 #: src/editHistDialog.js:68 src/historyFactory.js:186 msgid "Missed" msgstr "தவறவிட்டது" #: src/utils/getHistoryExportFile.js:41 src/utils/getHistoryExportFile.js:121 #: src/historyFactory.js:183 data/ui/edit-hist-dialog.blp:111 msgid "Skipped" msgstr "தவிர்க்கப்பட்டது" #: src/utils/getHistoryExportFile.js:44 src/utils/getHistoryExportFile.js:55 #: src/utils/getHistoryExportFile.js:125 src/utils/getHistoryExportFile.js:138 #: src/editHistDialog.js:73 src/historyFactory.js:190 #: data/ui/edit-hist-dialog.blp:116 msgid "Confirmed" msgstr "உறுதிப்படுத்தப்பட்டது" #: src/utils/getHistoryExportFile.js:52 src/utils/getHistoryExportFile.js:134 #: src/editHistDialog.js:56 src/historyFactory.js:178 msgid "Auto-Confirmed" msgstr "தானாக உறுதிப்படுத்தப்பட்ட" #: src/utils/getHistoryExportFile.js:55 src/utils/getHistoryExportFile.js:138 #: src/editHistDialog.js:74 msgid "Time Unknown" msgstr "நேரம் தெரியவில்லை" #. TRANSLATORS: Context: 1 Pill at 19:00 #: src/utils/getTreatmentsExportFile.js:69 #, fuzzy #| msgid "Date" msgid "at" msgstr "திகதி" #: src/utils/getTreatmentsExportFile.js:89 data/ui/med-dialog.blp:443 msgid "Notes" msgstr "குறிப்புகள்" #: src/utils/getTreatmentsExportFile.js:96 src/utils/locale.js:37 #: src/treatmentsFactory.js:268 msgid "Daily" msgstr "நாள்தோறும்" #: src/utils/getTreatmentsExportFile.js:102 src/medDialog.js:428 #: data/ui/med-dialog.blp:459 msgid "Day of Month" msgstr "மாதத்தின் நாள்" #. TRANSLATORS: Context: 2 day(s) on, 1 day(s) off #: src/utils/getTreatmentsExportFile.js:109 msgid "day(s) on" msgstr "" #. TRANSLATORS: Context: 2 day(s) on, 1 day(s) off #: src/utils/getTreatmentsExportFile.js:111 msgid "day(s) off" msgstr "" #: src/utils/getTreatmentsExportFile.js:122 src/todayFactory.js:41 #: src/treatmentsFactory.js:298 data/ui/med-dialog.blp:461 msgid "As Needed" msgstr "தேவைப்படும்போது" #: src/utils/getTreatmentsExportFile.js:132 data/ui/med-dialog.blp:764 msgid "Duration" msgstr "காலம்" #: src/utils/getTreatmentsExportFile.js:135 #, fuzzy #| msgid "Starts On" msgid "Started on" msgstr "தொடங்குகிறது" #: src/utils/getTreatmentsExportFile.js:136 data/ui/med-dialog.blp:775 #, fuzzy #| msgid "Starts On" msgid "Start" msgstr "தொடங்குகிறது" #: src/utils/getTreatmentsExportFile.js:138 src/treatmentsFactory.js:256 msgid "Ended on" msgstr "முடிந்தது" #: src/utils/getTreatmentsExportFile.js:138 data/ui/med-dialog.blp:817 #, fuzzy #| msgid "Ends On" msgid "End" msgstr "முடிவடைகிறது" #: src/utils/getTreatmentsExportFile.js:173 src/utils/saveFiles.js:44 #: data/ui/window.blp:234 msgid "Treatments" msgstr "சிகிச்சைகள்" #: src/utils/getTreatmentsExportFile.js:184 #, fuzzy #| msgctxt "shortcut window" #| msgid "General" msgid "Generated on" msgstr "பொது" #: src/utils/getTreatmentsExportFile.js:187 msgid "Ongoing" msgstr "" #: src/utils/getTreatmentsExportFile.js:188 msgid "Non-scheduled" msgstr "" #: src/utils/getTreatmentsExportFile.js:189 msgid "Finished" msgstr "" #: src/utils/locale.js:33 msgid "Weekends" msgstr "வார இறுதி நாட்கள்" #: src/utils/locale.js:35 msgid "Weekdays" msgstr "வார நாட்கள்" #: src/utils/saveFiles.js:22 data/ui/window.blp:156 msgid "History" msgstr "வரலாறு" #: src/editHistDialog.js:60 src/editHistDialog.js:89 src/editHistDialog.js:110 msgid "Confirmed At" msgstr "இல் உறுதிப்படுத்தப்பட்டது" #: src/editHistDialog.js:64 src/editHistDialog.js:114 msgid "Skipped At" msgstr "தவிர்க்கப்பட்டது" #: src/historyFactory.js:47 msgid "Select to be Removed" msgstr "அகற்றத் தேர்ந்தெடுக்கவும்" #. TRANSLATORS: "Your Name " #: src/main.js:69 msgid "translator-credits" msgstr "TamilNeram " #: src/main.js:73 msgid "Thanks to These Projects!" msgstr "இந்த திட்டங்களுக்கு நன்றி!" #: src/medDialog.js:99 msgid "Edit Treatment" msgstr "சிகிச்சையைத் திருத்து" #: src/medDialog.js:100 data/ui/edit-hist-dialog.blp:30 #: data/ui/preferences.blp:112 data/ui/preferences.blp:132 #: data/ui/refill-dialog.blp:67 msgid "Save" msgstr "சேமி" #: src/medDialog.js:114 msgid "Copy" msgstr "நகலெடு" #: src/medDialog.js:217 msgid "Add Dose" msgstr "டோச் சேர்க்கவும்" #: src/medDialog.js:419 msgid "Choose" msgstr "தேர்வு" #: src/medDialog.js:429 src/treatmentsFactory.js:274 msgid "Day" msgstr "நாள்" #: src/medDialog.js:456 data/ui/med-dialog.blp:458 msgid "Specific Days" msgstr "குறிப்பிட்ட நாட்கள்" #: src/medDialog.js:463 src/treatmentsFactory.js:295 data/ui/med-dialog.blp:460 msgid "Cycle" msgstr "சுழற்சி" #: src/medDialog.js:467 data/ui/med-dialog.blp:452 msgid "Frequency" msgstr "மீடிறன், மீள்திறன், நிகழ்வெண், நிகழ்வு" #: src/medDialog.js:500 msgid "Empty Name" msgstr "வெற்று பெயர்" #: src/medDialog.js:506 msgid "Empty Unit" msgstr "வெற்று அலகு" #: src/medDialog.js:513 msgid "Choose at Least One Day" msgstr "குறைந்தது ஒரு நாளையாவது தேர்வு செய்யவும்" #: src/medDialog.js:527 src/oneTimeDialog.js:187 msgid "Name Already on Treatment List" msgstr "மருத்தீடு பட்டியலில் ஏற்கனவே பெயர்" #: src/medDialog.js:542 msgid "Duplicated Time" msgstr "நகல் நேரம்" #: src/medDialog.js:582 msgid "Are You Sure?" msgstr "நீங்கள் உறுதியாக இருக்கிறீர்களா?" #: src/medDialog.js:583 msgid "will be deleted" msgstr "நீக்கப்படும்" #: src/medDialog.js:586 data/ui/edit-hist-dialog.blp:18 #: data/ui/med-dialog.blp:19 msgid "Cancel" msgstr "ரத்துசெய்" #: src/medDialog.js:587 src/treatmentsFactory.js:128 data/ui/med-dialog.blp:865 msgid "Delete" msgstr "நீக்கு" #: src/oneTimeDialog.js:110 msgid "New" msgstr "புதிய" #: src/oneTimeDialog.js:121 data/ui/med-dialog.blp:189 #: data/ui/one-time-dialog.blp:178 msgid "Pill(s)" msgstr "மாத்திரை (கள்)" #: src/prefsDialog.js:63 msgid "Accept to allow running in the background and receive notifications" msgstr "பின்னணியில் இயங்க அனுமதிப்பதை ஏற்றுக்கொண்டு அறிவிப்புகளைப் பெறுங்கள்" #: src/prefsDialog.js:74 src/window.js:259 msgid "An Issue Has Occurred" msgstr "ஒரு சிக்கல் ஏற்பட்டுள்ளது" #: src/prefsDialog.js:77 src/window.js:267 src/window.js:289 src/window.js:311 #: src/window.js:329 msgid "Close" msgstr "மூடு" #: src/timeDoseRow.js:34 msgid "Remove Dose" msgstr "அளவை அகற்று" #: src/timeDoseRow.js:40 data/ui/edit-hist-dialog.blp:90 #: data/ui/one-time-dialog.blp:210 msgid "Change Time" msgstr "நேரத்தை மாற்றவும்" #: src/todayFactory.js:134 msgid "Change Dose" msgstr "அளவை மாற்றவும்" #: src/treatmentsFactory.js:96 src/treatmentsFactory.js:126 #: data/ui/refill-dialog.blp:7 msgid "Refill" msgstr "மீண்டும் நிரப்பவும்" #: src/treatmentsFactory.js:125 msgid "Edit" msgstr "திருத்து" #: src/treatmentsFactory.js:127 msgid "Duplicate" msgstr "நகல்" #: src/treatmentsFactory.js:146 msgid "Options" msgstr "விருப்பங்கள்" #. TRANSLATORS: keep the %d it's where the number goes #: src/treatmentsFactory.js:244 #, javascript-format msgid "%d Remaining" msgstr "%d மீதமுள்ள" #. TRANSLATORS: label for when duration is enabled #: src/treatmentsFactory.js:254 msgid "Starts on" msgstr "தொடங்குகிறது" #: src/treatmentsFactory.js:255 msgid "Until" msgstr "வரை" #: src/treatmentsFactory.js:283 src/treatmentsFactory.js:286 msgid "Next Dose" msgstr "அடுத்த டோச்" #: src/window.js:173 src/window.js:943 msgid "Reminder" msgstr "நினைவூட்டல்" #. TRANSLATORS: Notification text for when the inventory is low #: src/window.js:175 msgid "You have treatments low in stock" msgstr "உங்களிடம் சிகிச்சைகள் குறைவாக உள்ளன" #: src/window.js:492 msgid "Show All" msgstr "அனைத்தையும் காட்டு" #: src/window.js:515 msgid "Show Less" msgstr "குறைவாக காட்டு" #: src/window.js:648 msgid "No Results Found" msgstr "முடிவுகள் எதுவும் கிடைக்கவில்லை" #: src/window.js:648 src/window.js:1517 #, fuzzy #| msgid "History" msgid "No History" msgstr "வரலாறு" #: src/window.js:818 data/ui/window.blp:260 #, fuzzy #| msgid "Treatments" msgid "No Treatments" msgstr "சிகிச்சைகள்" #: src/window.js:818 msgid "All Done for Today" msgstr "அனைத்தும் இன்று செய்யப்படுகின்றன" #: src/window.js:906 src/window.js:1090 data/ui/one-time-dialog.blp:285 #: data/ui/preferences.blp:73 msgid "Confirm" msgstr "உறுதிப்படுத்தவும்" #: src/window.js:906 msgid "Confirm All" msgstr "அனைத்தையும் உறுதிப்படுத்தவும்" #: src/window.js:907 data/ui/preferences.blp:84 data/ui/window.blp:146 msgid "Skip" msgstr "தவிர்" #: src/window.js:907 msgid "Skip All" msgstr "அனைத்தையும் தவிர்க்கவும்" #. TRANSLATORS: keep the %d it's where the number goes #: src/window.js:938 #, javascript-format msgid "and %d more" msgstr "மற்றும் %d மேலும்" #: src/window.js:1090 data/ui/one-time-dialog.blp:7 data/ui/window.blp:133 msgid "One-Time Entry" msgstr "ஒரு முறை நுழைவு" #: src/window.js:1295 data/ui/window.blp:353 msgid "Quit" msgstr "வெளியேறு" #: data/ui/edit-hist-dialog.blp:7 msgid "Edit Entry" msgstr "நுழைவு திருத்து" #: data/ui/med-dialog.blp:7 msgid "New Treatment" msgstr "புதிய மருத்தீடு" #: data/ui/med-dialog.blp:31 data/ui/window.blp:283 msgid "Add" msgstr "கூட்டு" #: data/ui/med-dialog.blp:69 data/ui/one-time-dialog.blp:58 msgid "Color" msgstr "நிறம்" #. TRANSLATORS: Tooltip for the colors (from Default until Purple) #: data/ui/med-dialog.blp:94 data/ui/one-time-dialog.blp:83 msgid "Default" msgstr "இயல்புநிலை" #: data/ui/med-dialog.blp:106 data/ui/one-time-dialog.blp:95 msgid "Red" msgstr "சிவப்பு" #: data/ui/med-dialog.blp:118 data/ui/one-time-dialog.blp:107 msgid "Orange" msgstr "ஆரஞ்சு" #: data/ui/med-dialog.blp:130 data/ui/one-time-dialog.blp:119 msgid "Yellow" msgstr "மஞ்சள்" #: data/ui/med-dialog.blp:142 data/ui/one-time-dialog.blp:131 msgid "Green" msgstr "பச்சை" #: data/ui/med-dialog.blp:154 data/ui/one-time-dialog.blp:143 msgid "Cyan" msgstr "சியான்" #: data/ui/med-dialog.blp:166 data/ui/one-time-dialog.blp:155 msgid "Blue" msgstr "நீலம்" #: data/ui/med-dialog.blp:178 data/ui/one-time-dialog.blp:167 msgid "Purple" msgstr "ஊதா" #: data/ui/med-dialog.blp:188 data/ui/one-time-dialog.blp:177 msgid "Unit" msgstr "அலகு" #: data/ui/med-dialog.blp:197 msgid "Icon" msgstr "படவுரு" #. TRANSLATORS: Tooltip for the icons (from Pill until Potion) #: data/ui/med-dialog.blp:226 msgid "Pill" msgstr "மாத்திரை" #: data/ui/med-dialog.blp:242 msgid "Alternative Pill" msgstr "மாற்று மாத்திரை" #: data/ui/med-dialog.blp:258 msgid "Capsule" msgstr "வில்லை" #: data/ui/med-dialog.blp:274 msgid "Round Pill" msgstr "சுற்று மாத்திரை" #: data/ui/med-dialog.blp:290 msgid "Alternative Round Pill" msgstr "மாற்று சுற்று மாத்திரை" #: data/ui/med-dialog.blp:306 msgid "Ampoule" msgstr "ஆம்பூல்" #: data/ui/med-dialog.blp:322 msgid "Injection" msgstr "உட்செலுத்தல்" #: data/ui/med-dialog.blp:338 msgid "Square Pill" msgstr "சதுர மாத்திரை" #: data/ui/med-dialog.blp:354 msgid "Alternative Square Pill" msgstr "மாற்று சதுர மாத்திரை" #: data/ui/med-dialog.blp:370 msgid "Triangle pill" msgstr "முக்கோண மாத்திரை" #: data/ui/med-dialog.blp:386 msgid "Alternative Triangle Pill" msgstr "மாற்று முக்கோண மாத்திரை" #: data/ui/med-dialog.blp:402 msgid "Bottle" msgstr "பாட்டில்" #: data/ui/med-dialog.blp:418 msgid "Drops" msgstr "சொட்டுகள்" #: data/ui/med-dialog.blp:434 msgid "Potion" msgstr "போஷன்" #: data/ui/med-dialog.blp:457 msgid "Every Day" msgstr "தினமும்" #: data/ui/med-dialog.blp:473 msgid "Choose Days" msgstr "நாட்களைத் தேர்வுசெய்க" #: data/ui/med-dialog.blp:572 msgid "Choose Day" msgstr "நாளைத் தேர்வுசெய்க" #: data/ui/med-dialog.blp:617 msgid "Change Cycle" msgstr "சுழற்சியை மாற்றவும்" #: data/ui/med-dialog.blp:642 msgid "Days Active" msgstr "நாட்கள் செயலில்" #: data/ui/med-dialog.blp:656 msgid "Days Inactive" msgstr "நாட்கள் செயலற்றவை" #. TRANSLATORS: Day in cycle, try to keep it short #: data/ui/med-dialog.blp:671 msgid "Today is Cycle Day…" msgstr "இன்று சுழற்சி நாள்…" #: data/ui/med-dialog.blp:694 msgid "Increase Notification Priority" msgstr "அறிவிப்பு முன்னுரிமையை அதிகரிக்கவும்" #: data/ui/med-dialog.blp:695 msgid "Show in fullscreen mode or with 'Do Not Disturb' enabled" msgstr "" "முழு அளவிலான பயன்முறையில் அறிவிப்பு காண்பிக்கப்படுகிறது அல்லது 'தொந்தரவு செய்யாதது' " "இயக்கப்பட்டிருந்தாலும் கூட" #: data/ui/med-dialog.blp:699 msgid "Recurring Notifications" msgstr "தொடர்ச்சியான அறிவிப்புகள்" #: data/ui/med-dialog.blp:700 msgid "Renotify until it's confirmed or skipped" msgstr "இது உறுதிப்படுத்தப்படும் அல்லது தவிர்க்கப்படும் வரை மறுபெயரிடுங்கள்" #: data/ui/med-dialog.blp:705 msgid "Interval in Minutes" msgstr "நிமிடங்களில் இடைவெளி" #: data/ui/med-dialog.blp:718 data/ui/refill-dialog.blp:36 msgid "Inventory" msgstr "சரக்கு" #: data/ui/med-dialog.blp:719 msgid "Manage your stock" msgstr "உங்கள் பங்குகளை நிர்வகிக்கவும்" #: data/ui/med-dialog.blp:725 msgid "Current" msgstr "மின்னோட்ட்ம், ஓட்டம்" #: data/ui/med-dialog.blp:738 msgid "Remind Me At" msgstr "என்னை நினைவூட்டுங்கள்" #: data/ui/med-dialog.blp:751 msgid "Refill Amount" msgstr "நிரப்புதல் தொகை" #: data/ui/med-dialog.blp:765 msgid "Set start and end dates" msgstr "தொடக்க மற்றும் இறுதி தேதிகளை அமைக்கவும்" #: data/ui/med-dialog.blp:785 data/ui/med-dialog.blp:827 #: data/ui/one-time-dialog.blp:243 msgid "Choose Date" msgstr "தேதியைத் தேர்வுசெய்க" #: data/ui/med-dialog.blp:855 msgid "Mark as Confirmed" msgstr "உறுதிப்படுத்தப்பட்டபடி குறி" #: data/ui/med-dialog.blp:856 msgid "" "If not manually confirmed or skipped, it will be recorded as confirmed in " "history, reducing stock if enabled" msgstr "" "கைமுறையாக உறுதிப்படுத்தப்படாவிட்டால் அல்லது தவிர்க்கப்படாவிட்டால், அது வரலாற்றில் " "உறுதிப்படுத்தப்பட்டபடி பதிவு செய்யப்படும், இயக்கப்பட்டால் பங்கைக் குறைக்கும்" #: data/ui/one-time-dialog.blp:44 msgid "From Treatment List" msgstr "மருத்தீடு பட்டியலிலிருந்து" #: data/ui/one-time-dialog.blp:182 msgid "Amount" msgstr "தொகை" #: data/ui/preferences.blp:7 data/ui/window.blp:338 msgid "Preferences" msgstr "விருப்பத்தேர்வுகள்" #: data/ui/preferences.blp:17 msgid "Auto-Start at Login" msgstr "உள்நுழைவில் தானாகத் தொடங்குதல்" #: data/ui/preferences.blp:28 msgid "Auto-Clear History" msgstr "தானாக தெளிவான வரலாறு" #: data/ui/preferences.blp:29 msgid "Keeps a maximum of 30 days" msgstr "அதிகபட்சம் 30 நாட்கள் வைத்திருக்கிறது" #: data/ui/preferences.blp:40 msgid "Low Stock Notification" msgstr "குறைந்த பங்கு அறிவிப்பு" #: data/ui/preferences.blp:41 msgid "Send reminders when treatments are low in stock" msgstr "சிகிச்சைகள் குறைவாக இருக்கும்போது நினைவூட்டல்களை அனுப்பவும்" #: data/ui/preferences.blp:52 msgid "Notification Sound" msgstr "அறிவிப்பு ஒலி" #: data/ui/preferences.blp:63 msgid "Notification Buttons" msgstr "அறிவிப்பு பொத்தான்கள்" #: data/ui/preferences.blp:64 msgid "Show or hide confirm/skip" msgstr "உறுதிப்படுத்த/தவிர்க்கவும்" #: data/ui/preferences.blp:98 #, fuzzy #| msgid "Export History as CSV" msgid "Export History As" msgstr "காபிம ஆக ஏற்றுமதி வரலாறு" #: data/ui/preferences.blp:121 #, fuzzy #| msgid "Empty Treatments" msgid "Export Treatments As" msgstr "வெற்று சிகிச்சைகள்" #: data/ui/shortcuts-dialog.blp:8 #, fuzzy #| msgctxt "shortcut window" #| msgid "Show Shortcuts" msgid "Shortcuts" msgstr "குறுக்குவழிகளைக் காட்டு" #: data/ui/shortcuts-dialog.blp:11 #, fuzzy #| msgid "Show/Hide 'As Needed'" msgctxt "shortcut window" msgid "Show/Hide 'As Needed'" msgstr "'தேவைப்படும்போது' காட்டு/மறைக்க" #: data/ui/shortcuts-dialog.blp:16 #, fuzzy #| msgid "One-Time Entry" msgctxt "shortcut window" msgid "New One-Time Entry" msgstr "ஒரு முறை நுழைவு" #: data/ui/shortcuts-dialog.blp:21 #, fuzzy #| msgid "New Treatment" msgctxt "shortcut window" msgid "Add New Treatment" msgstr "புதிய மருத்தீடு" #: data/ui/shortcuts-dialog.blp:26 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "குறுக்குவழிகளைக் காட்டு" #: data/ui/shortcuts-dialog.blp:31 msgctxt "shortcut window" msgid "Quit" msgstr "வெளியேறு" #: data/ui/window.blp:23 msgid "Show/Hide 'As Needed'" msgstr "'தேவைப்படும்போது' காட்டு/மறைக்க" #: data/ui/window.blp:31 msgid "Search" msgstr "தேடல்" #: data/ui/window.blp:39 #, fuzzy #| msgid "Treatments" msgid "Sort Treatments" msgstr "சிகிச்சைகள்" #: data/ui/window.blp:48 msgid "Main Menu" msgstr "பட்டியல் விளையாடுங்கள்" #: data/ui/window.blp:61 msgid "Search…" msgstr "தேடுங்கள்…" #: data/ui/window.blp:71 msgid "Today" msgstr "இன்று" #: data/ui/window.blp:117 data/ui/window.blp:210 msgid "Unselect" msgstr "தேர்வு செய்யப்படாதது" #: data/ui/window.blp:220 msgid "Remove Entries" msgstr "உள்ளீடுகளை அகற்று" #: data/ui/window.blp:300 msgid "Name Ascending" msgstr "" #: data/ui/window.blp:306 msgid "Remaining Stock (Lowest First)" msgstr "" #: data/ui/window.blp:312 msgid "Remaining Stock (Highest First)" msgstr "" #: data/ui/window.blp:318 #, fuzzy #| msgid "As Needed" msgid "As Needed Last" msgstr "தேவைப்படும்போது" #: data/ui/window.blp:324 #, fuzzy #| msgid "Ended on" msgid "Ended Last" msgstr "முடிந்தது" #: data/ui/window.blp:330 #, fuzzy #| msgid "As Needed" msgid "As Needed/Ended Last" msgstr "தேவைப்படும்போது" #: data/ui/window.blp:343 #, fuzzy #| msgctxt "shortcut window" #| msgid "Show Shortcuts" msgid "Keyboard Shortcuts" msgstr "குறுக்குவழிகளைக் காட்டு" #: data/ui/window.blp:348 msgid "About Dosage" msgstr "அளவு பற்றி" #~ msgid "Empty Treatments" #~ msgstr "வெற்று சிகிச்சைகள்" #~ msgid "Empty History" #~ msgstr "வெற்று வரலாறு" #~ msgid "No Treatments Added" #~ msgstr "சிகிச்சைகள் எதுவும் சேர்க்கப்படவில்லை" #~ msgctxt "shortcut window" #~ msgid "General" #~ msgstr "பொது" #~ msgctxt "shortcut window" #~ msgid "Preferences" #~ msgstr "விருப்பத்தேர்வுகள்" #~ msgid "After meal" #~ msgstr "உணவுக்குப் பிறகு" #~ msgid "Refill Stock" #~ msgstr "ரீஃபில் பங்கு" #~ msgid "Low Stock" #~ msgstr "குறைந்த பங்கு" #~ msgid "Form" #~ msgstr "வடிவம்" #~ msgid "Color and icon" #~ msgstr "நிறம் மற்றும் படவுரு" #~ msgid "Time and amount" #~ msgstr "நேரம் மற்றும் தொகை" #~ msgid "Restore" #~ msgstr "மீட்டமை" #~ msgid "New entry" #~ msgstr "புதிய நுழைவு" diegopvlk-Dosage-bd9126a/po/tr.po000066400000000000000000000550521514145341100167210ustar00rootroot00000000000000# Turkish translation for Dosage. # Copyright (C) 2023 Dosage's COPYRIGHT HOLDER # This file is distributed under the same license as the Dosage package. # # Sabri Ünal , 2023. # msgid "" msgstr "" "Project-Id-Version: io.github.diegopvlk.Dosage\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-12-19 16:12-0300\n" "PO-Revision-Date: 2025-12-06 10:48+0000\n" "Last-Translator: Sabri Ünal \n" "Language-Team: Turkish \n" "Language: tr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Weblate 5.15-dev\n" "X-Project-Style: gnome\n" #. TRANSLATORS: App name, translate to your language and follow the capitalization #: data/io.github.diegopvlk.Dosage.appdata.xml.in:20 #: data/io.github.diegopvlk.Dosage.desktop.in:3 #: src/utils/getTreatmentsExportFile.js:173 src/utils/saveFiles.js:22 #: src/utils/saveFiles.js:44 src/main.js:60 src/window.js:1060 #: data/ui/window.blp:6 msgid "Dosage" msgstr "Doz" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:21 msgid "Keep track of your treatments" msgstr "İlaçlarınızı takip edin" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:24 msgid "" "Easily manage and track treatments with Dosage: notifications, history, " "multiple doses, flexible frequency, customization, stock monitoring, and " "duration control" msgstr "" "Dozaj ile tedavi takibini kolayca yönetin: Bildirimler, Geçmiş, Çoklu " "Dozlar, Esnek Sıklık, Özelleştirme, Stok İzleme ve Süre Kontrolü" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:25 msgid "Features:" msgstr "Özellikler:" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:27 msgid "Notifications — Get reminders at the right time" msgstr "Bildirimler - Doğru zamanda hatırlatıcılar" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:28 msgid "History — See which medications you took, skipped or missed" msgstr "" "Geçmiş - Hangi ilaçları aldığınızı, atladığınızı yada unuttuğunuzu görün" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:29 msgid "Dosage management — Multiple doses with different times" msgstr "Dozaj yönetimi - Farklı zamanlarda çoklu doz" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:30 msgid "" "Frequency modes — Every day, specific days, cycle or just when necessary" msgstr "" "Sıklık kipleri - Her gün, belirli günler, döngü ya da yalnızca ihtiyaç " "olduğunda" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:31 msgid "Color and icon — Give a shape for your treatment" msgstr "Renk ve simge - İlacınızı şekillerle belirtin" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:32 msgid "Inventory tracking — Monitor your stock and get reminded when it's low" msgstr "Envanter takibi - İlaç stoğunuzu izleyin ve azaldığında hatırlatılsın" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:33 msgid "Duration — Define the start and end dates" msgstr "Süre - Başlangıç ve bitiş tarihlerini tanımlayın" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:44 msgid "Dosage today window in light theme" msgstr "Bugün penceresi açık tema ile" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:49 msgid "Dosage preferences window in light theme" msgstr "Doz tercihleri penceresi açık tema ile" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:54 msgid "Dosage edit treatment window in light theme" msgstr "İlaç düzenle penceresi açık tema ile" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:59 msgid "Dosage today window in dark theme" msgstr "Bugün penceresi koyu tema ile" #. TRANSLATORS: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/io.github.diegopvlk.Dosage.desktop.in:10 msgid "Medication;Tracker;Reminder;Today;Treatments;Pill;Drug;Remedy;" msgstr "Dosage;Medication;Tracker;Reminder;Today;Treatments;Pill;Drug;Remedy;İlaç;İzleyici;Hatırlatma;Bugün;Tedavi;Hap;İlaç;Çare;" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:232 msgid "Date" msgstr "Tarih" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:199 msgid "Time" msgstr "Zaman" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/med-dialog.blp:61 data/ui/one-time-dialog.blp:49 msgid "Name" msgstr "Ad" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:183 msgid "Dose" msgstr "Doz" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 msgid "Status" msgstr "Durum" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 msgid "Time Confirmed" msgstr "Onaylandığı Zaman" #: src/utils/getHistoryExportFile.js:38 src/utils/getHistoryExportFile.js:117 #: src/editHistDialog.js:68 src/historyFactory.js:186 msgid "Missed" msgstr "Unutuldu" #: src/utils/getHistoryExportFile.js:41 src/utils/getHistoryExportFile.js:121 #: src/historyFactory.js:183 data/ui/edit-hist-dialog.blp:111 msgid "Skipped" msgstr "Atlandı" #: src/utils/getHistoryExportFile.js:44 src/utils/getHistoryExportFile.js:55 #: src/utils/getHistoryExportFile.js:125 src/utils/getHistoryExportFile.js:138 #: src/editHistDialog.js:73 src/historyFactory.js:190 #: data/ui/edit-hist-dialog.blp:116 msgid "Confirmed" msgstr "Onaylandı" #: src/utils/getHistoryExportFile.js:52 src/utils/getHistoryExportFile.js:134 #: src/editHistDialog.js:56 src/historyFactory.js:178 msgid "Auto-Confirmed" msgstr "Kendiliğinden Onaylanmış" #: src/utils/getHistoryExportFile.js:55 src/utils/getHistoryExportFile.js:138 #: src/editHistDialog.js:74 msgid "Time Unknown" msgstr "Zaman Bilinmiyor" #. TRANSLATORS: Context: 1 Pill at 19:00 #: src/utils/getTreatmentsExportFile.js:69 msgid "at" msgstr "saat" #: src/utils/getTreatmentsExportFile.js:89 data/ui/med-dialog.blp:443 msgid "Notes" msgstr "Notlar" #: src/utils/getTreatmentsExportFile.js:96 src/utils/locale.js:37 #: src/treatmentsFactory.js:268 msgid "Daily" msgstr "Günlük" #: src/utils/getTreatmentsExportFile.js:102 src/medDialog.js:428 #: data/ui/med-dialog.blp:459 msgid "Day of Month" msgstr "Ayın Günü" #. TRANSLATORS: Context: 2 day(s) on, 1 day(s) off #: src/utils/getTreatmentsExportFile.js:109 msgid "day(s) on" msgstr "gün kullan" #. TRANSLATORS: Context: 2 day(s) on, 1 day(s) off #: src/utils/getTreatmentsExportFile.js:111 msgid "day(s) off" msgstr "gün bırak" #: src/utils/getTreatmentsExportFile.js:122 src/todayFactory.js:41 #: src/treatmentsFactory.js:298 data/ui/med-dialog.blp:461 msgid "As Needed" msgstr "Gerektiğinde" #: src/utils/getTreatmentsExportFile.js:132 data/ui/med-dialog.blp:764 msgid "Duration" msgstr "Süre" #: src/utils/getTreatmentsExportFile.js:135 msgid "Started on" msgstr "Başlangıç" #: src/utils/getTreatmentsExportFile.js:136 data/ui/med-dialog.blp:775 msgid "Start" msgstr "Başlangıç" #: src/utils/getTreatmentsExportFile.js:138 src/treatmentsFactory.js:256 msgid "Ended on" msgstr "Sona erdi" #: src/utils/getTreatmentsExportFile.js:138 data/ui/med-dialog.blp:817 msgid "End" msgstr "Bitiş" #: src/utils/getTreatmentsExportFile.js:173 src/utils/saveFiles.js:44 #: data/ui/window.blp:234 msgid "Treatments" msgstr "İlaçlar" #: src/utils/getTreatmentsExportFile.js:184 msgid "Generated on" msgstr "Oluşturulma tarihi" #: src/utils/getTreatmentsExportFile.js:187 msgid "Ongoing" msgstr "Devam eden" #: src/utils/getTreatmentsExportFile.js:188 msgid "Non-scheduled" msgstr "Zamanlanmadı" #: src/utils/getTreatmentsExportFile.js:189 msgid "Finished" msgstr "Bitti" #: src/utils/locale.js:33 msgid "Weekends" msgstr "Hafta Sonları" #: src/utils/locale.js:35 msgid "Weekdays" msgstr "Hafta İçi" #: src/utils/saveFiles.js:22 data/ui/window.blp:156 msgid "History" msgstr "Geçmiş" #: src/editHistDialog.js:60 src/editHistDialog.js:89 src/editHistDialog.js:110 msgid "Confirmed At" msgstr "Onaylandı" #: src/editHistDialog.js:64 src/editHistDialog.js:114 msgid "Skipped At" msgstr "Atlandı" #: src/historyFactory.js:47 msgid "Select to be Removed" msgstr "Kaldırılacakları Seç" #. TRANSLATORS: "Your Name " #: src/main.js:69 msgid "translator-credits" msgstr "Sabri Ünal " #: src/main.js:73 msgid "Thanks to These Projects!" msgstr "Bu Projeler Sayesinde!" #: src/medDialog.js:99 msgid "Edit Treatment" msgstr "İlaç Düzenle" #: src/medDialog.js:100 data/ui/edit-hist-dialog.blp:30 #: data/ui/preferences.blp:112 data/ui/preferences.blp:132 #: data/ui/refill-dialog.blp:67 msgid "Save" msgstr "Kaydet" #: src/medDialog.js:114 msgid "Copy" msgstr "Kopyala" #: src/medDialog.js:217 msgid "Add Dose" msgstr "Doz Ekle" #: src/medDialog.js:419 msgid "Choose" msgstr "Seç" #: src/medDialog.js:429 src/treatmentsFactory.js:274 msgid "Day" msgstr "Gün" #: src/medDialog.js:456 data/ui/med-dialog.blp:458 msgid "Specific Days" msgstr "Belirli Günler" #: src/medDialog.js:463 src/treatmentsFactory.js:295 data/ui/med-dialog.blp:460 msgid "Cycle" msgstr "Döngü" #: src/medDialog.js:467 data/ui/med-dialog.blp:452 msgid "Frequency" msgstr "Sıklık" #: src/medDialog.js:500 msgid "Empty Name" msgstr "Boş Ad" #: src/medDialog.js:506 msgid "Empty Unit" msgstr "Boş Birim" #: src/medDialog.js:513 msgid "Choose at Least One Day" msgstr "En Az Bir Gün Seçin" #: src/medDialog.js:527 src/oneTimeDialog.js:187 msgid "Name Already on Treatment List" msgstr "İsim Zaten Tedavi Listesinde" #: src/medDialog.js:542 msgid "Duplicated Time" msgstr "Yinelenen Zaman" #: src/medDialog.js:582 msgid "Are You Sure?" msgstr "Emin Misiniz?" #: src/medDialog.js:583 msgid "will be deleted" msgstr "silinecek" #: src/medDialog.js:586 data/ui/edit-hist-dialog.blp:18 #: data/ui/med-dialog.blp:19 msgid "Cancel" msgstr "İptal" #: src/medDialog.js:587 src/treatmentsFactory.js:128 data/ui/med-dialog.blp:865 msgid "Delete" msgstr "Sil" #: src/oneTimeDialog.js:110 msgid "New" msgstr "Yeni" #: src/oneTimeDialog.js:121 data/ui/med-dialog.blp:189 #: data/ui/one-time-dialog.blp:178 msgid "Pill(s)" msgstr "Hap" #: src/prefsDialog.js:63 msgid "Accept to allow running in the background and receive notifications" msgstr "Arka planda çalışmaya izin vermeyi ve bildirim almayı kabul et" #: src/prefsDialog.js:74 src/window.js:259 msgid "An Issue Has Occurred" msgstr "Bir Hata Oluştu" #: src/prefsDialog.js:77 src/window.js:267 src/window.js:289 src/window.js:311 #: src/window.js:329 msgid "Close" msgstr "Kapat" #: src/timeDoseRow.js:34 msgid "Remove Dose" msgstr "Dozu Kaldır" #: src/timeDoseRow.js:40 data/ui/edit-hist-dialog.blp:90 #: data/ui/one-time-dialog.blp:210 msgid "Change Time" msgstr "Zamanı Değiştir" #: src/todayFactory.js:134 msgid "Change Dose" msgstr "Dozu Değiştir" #: src/treatmentsFactory.js:96 src/treatmentsFactory.js:126 #: data/ui/refill-dialog.blp:7 msgid "Refill" msgstr "Yeniden doldur" #: src/treatmentsFactory.js:125 msgid "Edit" msgstr "Düzenle" #: src/treatmentsFactory.js:127 msgid "Duplicate" msgstr "Çoğalt" #: src/treatmentsFactory.js:146 msgid "Options" msgstr "Seçenekler" #. TRANSLATORS: keep the %d it's where the number goes #: src/treatmentsFactory.js:244 #, javascript-format msgid "%d Remaining" msgstr "%d Kalan" #. TRANSLATORS: label for when duration is enabled #: src/treatmentsFactory.js:254 msgid "Starts on" msgstr "Başlangıç" #: src/treatmentsFactory.js:255 msgid "Until" msgstr "Bitiş Tarihi" #: src/treatmentsFactory.js:283 src/treatmentsFactory.js:286 msgid "Next Dose" msgstr "Sonraki Doz" #: src/window.js:173 src/window.js:943 msgid "Reminder" msgstr "Hatırlatıcı" #. TRANSLATORS: Notification text for when the inventory is low #: src/window.js:175 msgid "You have treatments low in stock" msgstr "Stok sayısı azalmış ilaçlarınız var" #: src/window.js:492 msgid "Show All" msgstr "Tümünü Göster" #: src/window.js:515 msgid "Show Less" msgstr "Daha Azını Göster" #: src/window.js:648 msgid "No Results Found" msgstr "Sonuç Bulunamadı" #: src/window.js:648 src/window.js:1517 #, fuzzy #| msgid "History" msgid "No History" msgstr "Geçmiş" #: src/window.js:818 data/ui/window.blp:260 #, fuzzy #| msgid "Treatments" msgid "No Treatments" msgstr "İlaçlar" #: src/window.js:818 msgid "All Done for Today" msgstr "Bugünlük Her Şey Bitti" #: src/window.js:906 src/window.js:1090 data/ui/one-time-dialog.blp:285 #: data/ui/preferences.blp:73 msgid "Confirm" msgstr "Onayla" #: src/window.js:906 msgid "Confirm All" msgstr "Tümünü Onayla" #: src/window.js:907 data/ui/preferences.blp:84 data/ui/window.blp:146 msgid "Skip" msgstr "Atla" #: src/window.js:907 msgid "Skip All" msgstr "Tümünü Atla" #. TRANSLATORS: keep the %d it's where the number goes #: src/window.js:938 #, javascript-format msgid "and %d more" msgstr "ve %d daha" #: src/window.js:1090 data/ui/one-time-dialog.blp:7 data/ui/window.blp:133 msgid "One-Time Entry" msgstr "Tek Seferlik Giriş" #: src/window.js:1295 data/ui/window.blp:353 msgid "Quit" msgstr "Çık" #: data/ui/edit-hist-dialog.blp:7 msgid "Edit Entry" msgstr "Girişi Düzenle" #: data/ui/med-dialog.blp:7 msgid "New Treatment" msgstr "Yeni İlaç" #: data/ui/med-dialog.blp:31 data/ui/window.blp:283 msgid "Add" msgstr "Ekle" #: data/ui/med-dialog.blp:69 data/ui/one-time-dialog.blp:58 msgid "Color" msgstr "Renk" #. TRANSLATORS: Tooltip for the colors (from Default until Purple) #: data/ui/med-dialog.blp:94 data/ui/one-time-dialog.blp:83 msgid "Default" msgstr "Öntanımlı" #: data/ui/med-dialog.blp:106 data/ui/one-time-dialog.blp:95 msgid "Red" msgstr "Kırmızı" #: data/ui/med-dialog.blp:118 data/ui/one-time-dialog.blp:107 msgid "Orange" msgstr "Turuncu" #: data/ui/med-dialog.blp:130 data/ui/one-time-dialog.blp:119 msgid "Yellow" msgstr "Sarı" #: data/ui/med-dialog.blp:142 data/ui/one-time-dialog.blp:131 msgid "Green" msgstr "Yeşil" #: data/ui/med-dialog.blp:154 data/ui/one-time-dialog.blp:143 msgid "Cyan" msgstr "Cam Göbeği" #: data/ui/med-dialog.blp:166 data/ui/one-time-dialog.blp:155 msgid "Blue" msgstr "Mavi" #: data/ui/med-dialog.blp:178 data/ui/one-time-dialog.blp:167 msgid "Purple" msgstr "Mor" #: data/ui/med-dialog.blp:188 data/ui/one-time-dialog.blp:177 msgid "Unit" msgstr "Birim" #: data/ui/med-dialog.blp:197 msgid "Icon" msgstr "Simge" #. TRANSLATORS: Tooltip for the icons (from Pill until Potion) #: data/ui/med-dialog.blp:226 msgid "Pill" msgstr "Hap" #: data/ui/med-dialog.blp:242 msgid "Alternative Pill" msgstr "Alternatif Hap" #: data/ui/med-dialog.blp:258 msgid "Capsule" msgstr "Kapsül" #: data/ui/med-dialog.blp:274 msgid "Round Pill" msgstr "Yuvarlak Hap" #: data/ui/med-dialog.blp:290 msgid "Alternative Round Pill" msgstr "Alternatif Yuvarlak Hap" #: data/ui/med-dialog.blp:306 msgid "Ampoule" msgstr "Ampül" #: data/ui/med-dialog.blp:322 msgid "Injection" msgstr "İğne" #: data/ui/med-dialog.blp:338 msgid "Square Pill" msgstr "Kare Hap" #: data/ui/med-dialog.blp:354 msgid "Alternative Square Pill" msgstr "Alternatif Kare Hap" #: data/ui/med-dialog.blp:370 msgid "Triangle pill" msgstr "Üçgen hap" #: data/ui/med-dialog.blp:386 msgid "Alternative Triangle Pill" msgstr "Alternatif Üçgen Hap" #: data/ui/med-dialog.blp:402 msgid "Bottle" msgstr "Şişe" #: data/ui/med-dialog.blp:418 msgid "Drops" msgstr "Damla" #: data/ui/med-dialog.blp:434 msgid "Potion" msgstr "Karışım" #: data/ui/med-dialog.blp:457 msgid "Every Day" msgstr "Her Gün" #: data/ui/med-dialog.blp:473 msgid "Choose Days" msgstr "Gün Seç" #: data/ui/med-dialog.blp:572 msgid "Choose Day" msgstr "Günü Seç" #: data/ui/med-dialog.blp:617 msgid "Change Cycle" msgstr "Döngüyü Değiştir" #: data/ui/med-dialog.blp:642 msgid "Days Active" msgstr "Aktif Günler" #: data/ui/med-dialog.blp:656 msgid "Days Inactive" msgstr "Aktif Olmayan Günler" #. TRANSLATORS: Day in cycle, try to keep it short #: data/ui/med-dialog.blp:671 msgid "Today is Cycle Day…" msgstr "Bugün Döngü Günü…" #: data/ui/med-dialog.blp:694 msgid "Increase Notification Priority" msgstr "Bildirim Önceliğini Artır" #: data/ui/med-dialog.blp:695 msgid "Show in fullscreen mode or with 'Do Not Disturb' enabled" msgstr "" "Masaüstünde bildirimin tam ekran kipinde ya da 'Rahatsız Etme' kipi etkin " "olsa bile gösterilmesini sağlar" #: data/ui/med-dialog.blp:699 msgid "Recurring Notifications" msgstr "Yinelenen Bildirimler" #: data/ui/med-dialog.blp:700 msgid "Renotify until it's confirmed or skipped" msgstr "Onaylanana ya da atlanana kadar yeniden bildir" #: data/ui/med-dialog.blp:705 msgid "Interval in Minutes" msgstr "Aralık (Dakika Olarak)" #: data/ui/med-dialog.blp:718 data/ui/refill-dialog.blp:36 msgid "Inventory" msgstr "Envanter" #: data/ui/med-dialog.blp:719 msgid "Manage your stock" msgstr "Stoğunuzu yönetin" #: data/ui/med-dialog.blp:725 msgid "Current" msgstr "Geçerli" #: data/ui/med-dialog.blp:738 msgid "Remind Me At" msgstr "Bana Hatırlat" #: data/ui/med-dialog.blp:751 msgid "Refill Amount" msgstr "Yeniden Doldurma Miktarı" #: data/ui/med-dialog.blp:765 msgid "Set start and end dates" msgstr "Başlangıç ve bitiş tarihi belirle" #: data/ui/med-dialog.blp:785 data/ui/med-dialog.blp:827 #: data/ui/one-time-dialog.blp:243 msgid "Choose Date" msgstr "Tarih Seç" #: data/ui/med-dialog.blp:855 msgid "Mark as Confirmed" msgstr "Onaylandı Olarak İmle" #: data/ui/med-dialog.blp:856 msgid "" "If not manually confirmed or skipped, it will be recorded as confirmed in " "history, reducing stock if enabled" msgstr "" "Elle olarak onaylanmamışsa ya da atlanmışsa, geçmişte onaylanmış olarak " "kaydedilecek ve etkinleştirilmişse stok azaltılacak" #: data/ui/one-time-dialog.blp:44 msgid "From Treatment List" msgstr "İlaç Listesinden" #: data/ui/one-time-dialog.blp:182 msgid "Amount" msgstr "Miktar" #: data/ui/preferences.blp:7 data/ui/window.blp:338 msgid "Preferences" msgstr "Tercihler" #: data/ui/preferences.blp:17 msgid "Auto-Start at Login" msgstr "Girişte Kendiliğinden Başlat" #: data/ui/preferences.blp:28 msgid "Auto-Clear History" msgstr "Geçmişi Kendiliğinden Temizle" #: data/ui/preferences.blp:29 msgid "Keeps a maximum of 30 days" msgstr "Azami 30 günü koru" #: data/ui/preferences.blp:40 msgid "Low Stock Notification" msgstr "Düşük Stok Bildirimi" #: data/ui/preferences.blp:41 msgid "Send reminders when treatments are low in stock" msgstr "Tedaviler düşük stokta olduğunda hatırlatmalar gönder" #: data/ui/preferences.blp:52 msgid "Notification Sound" msgstr "Bildirim Sesi" #: data/ui/preferences.blp:63 msgid "Notification Buttons" msgstr "Bildirim Düğmeleri" #: data/ui/preferences.blp:64 msgid "Show or hide confirm/skip" msgstr "Onayla/atla düğmelerini göster ya da gizle" #: data/ui/preferences.blp:98 msgid "Export History As" msgstr "Geçmişi Dışa Aktar" #: data/ui/preferences.blp:121 msgid "Export Treatments As" msgstr "Tedavileri Dışa Aktar" #: data/ui/shortcuts-dialog.blp:8 #, fuzzy #| msgctxt "shortcut window" #| msgid "Show Shortcuts" msgid "Shortcuts" msgstr "Kısayolları Göster" #: data/ui/shortcuts-dialog.blp:11 #, fuzzy #| msgid "Show/Hide 'As Needed'" msgctxt "shortcut window" msgid "Show/Hide 'As Needed'" msgstr "'Gerektiğinde' Göster/Gizle" #: data/ui/shortcuts-dialog.blp:16 #, fuzzy #| msgid "One-Time Entry" msgctxt "shortcut window" msgid "New One-Time Entry" msgstr "Tek Seferlik Giriş" #: data/ui/shortcuts-dialog.blp:21 #, fuzzy #| msgid "New Treatment" msgctxt "shortcut window" msgid "Add New Treatment" msgstr "Yeni İlaç" #: data/ui/shortcuts-dialog.blp:26 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Kısayolları Göster" #: data/ui/shortcuts-dialog.blp:31 msgctxt "shortcut window" msgid "Quit" msgstr "Çık" #: data/ui/window.blp:23 msgid "Show/Hide 'As Needed'" msgstr "'Gerektiğinde' Göster/Gizle" #: data/ui/window.blp:31 msgid "Search" msgstr "Ara" #: data/ui/window.blp:39 msgid "Sort Treatments" msgstr "Tedavileri Sırala" #: data/ui/window.blp:48 msgid "Main Menu" msgstr "Ana Menü" #: data/ui/window.blp:61 msgid "Search…" msgstr "Ara…" #: data/ui/window.blp:71 msgid "Today" msgstr "Bugün" #: data/ui/window.blp:117 data/ui/window.blp:210 msgid "Unselect" msgstr "Seçimi Kaldır" #: data/ui/window.blp:220 msgid "Remove Entries" msgstr "Girdileri Kaldır" #: data/ui/window.blp:300 msgid "Name Ascending" msgstr "Ada Göre Artan" #: data/ui/window.blp:306 msgid "Remaining Stock (Lowest First)" msgstr "Kalan Stok (Önce En Düşük)" #: data/ui/window.blp:312 msgid "Remaining Stock (Highest First)" msgstr "Kalan Stok (Önce En Yüksek)" #: data/ui/window.blp:318 #, fuzzy #| msgid "As Needed" msgid "As Needed Last" msgstr "Gerektiğinde" #: data/ui/window.blp:324 #, fuzzy #| msgid "Ended on" msgid "Ended Last" msgstr "Sona erdi" #: data/ui/window.blp:330 #, fuzzy #| msgid "As Needed" msgid "As Needed/Ended Last" msgstr "Gerektiğinde" #: data/ui/window.blp:343 msgid "Keyboard Shortcuts" msgstr "Klavye Kısayolları" #: data/ui/window.blp:348 msgid "About Dosage" msgstr "Doz Hakkında" #~ msgid "Empty Treatments" #~ msgstr "Boş Tedaviler" #~ msgid "Empty History" #~ msgstr "Geçmiş Boş" #~ msgid "No Treatments Added" #~ msgstr "Hiçbir İlaç Eklenmedi" #~ msgctxt "shortcut window" #~ msgid "General" #~ msgstr "Genel" #~ msgctxt "shortcut window" #~ msgid "Preferences" #~ msgstr "Tercihler" #~ msgid "After meal" #~ msgstr "Yemekten Sonra" #~ msgid "Refill Stock" #~ msgstr "Stoğu Yeniden Doldur" #~ msgid "Low Stock" #~ msgstr "Düşük Stok" #~ msgid "Form" #~ msgstr "Form" #~ msgid "Color and icon" #~ msgstr "Renk ve simge" #~ msgid "Time and amount" #~ msgstr "Zaman ve miktar" #~ msgid "Restore" #~ msgstr "Geri yükle" #~ msgid "New entry" #~ msgstr "Yeni girdi" #~ msgid "Name already exists" #~ msgstr "Ad zaten var" #~ msgid "Add to history" #~ msgstr "Geçmişe ekle" #~ msgid "Autostart at login" #~ msgstr "Girişte kendiliğinden başlat" #~ msgid "Clear history automatically" #~ msgstr "Geçmişi kendiliğinden temizle" #~ msgid "medication" #~ msgstr "tedavi" #~ msgid "tracker" #~ msgstr "izleyici" #~ msgid "treatments" #~ msgstr "İlaçlar" #~ msgid "pill" #~ msgstr "ilaç" #~ msgid "drug" #~ msgstr "ilaç" #~ msgid "remedy" #~ msgstr "çare" #~ msgid "Su" #~ msgstr "Pa" #~ msgid "Mo" #~ msgstr "Pt" #~ msgid "Tu" #~ msgstr "Sa" #~ msgid "We" #~ msgstr "Ça" #~ msgid "Th" #~ msgstr "Pe" #~ msgid "Fr" #~ msgstr "Cu" #~ msgid "Sa" #~ msgstr "Ct" #~ msgid "Sunday" #~ msgstr "Pazar" #~ msgid "Monday" #~ msgstr "Pazartesi" #~ msgid "Tuesday" #~ msgstr "Salı" #~ msgid "Wednesday" #~ msgstr "Çarşamba" #~ msgid "Thursday" #~ msgstr "Perşembe" #~ msgid "Friday" #~ msgstr "Cuma" #~ msgid "Saturday" #~ msgstr "Cumartesi" #~ msgid "About" #~ msgstr "Hakkında" diegopvlk-Dosage-bd9126a/po/uk.po000066400000000000000000000671331514145341100167160ustar00rootroot00000000000000# Ukrainian translation for Dosage. # Copyright (C) 2023 Diego Povliuk # This file is distributed under the license GPLv3-or-later. # volkov , 2023. # msgid "" msgstr "" "Project-Id-Version: io.github.diegopvlk.Dosage\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-12-19 16:12-0300\n" "PO-Revision-Date: 2025-05-17 06:00+0000\n" "Last-Translator: Максим Горпиніч \n" "Language-Team: Ukrainian \n" "Language: uk\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "X-Generator: Weblate 5.12-dev\n" #. TRANSLATORS: App name, translate to your language and follow the capitalization #: data/io.github.diegopvlk.Dosage.appdata.xml.in:20 #: data/io.github.diegopvlk.Dosage.desktop.in:3 #: src/utils/getTreatmentsExportFile.js:173 src/utils/saveFiles.js:22 #: src/utils/saveFiles.js:44 src/main.js:60 src/window.js:1060 #: data/ui/window.blp:6 msgid "Dosage" msgstr "Дозування" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:21 msgid "Keep track of your treatments" msgstr "Слідкуйте за вашими курсами лікування" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:24 msgid "" "Easily manage and track treatments with Dosage: notifications, history, " "multiple doses, flexible frequency, customization, stock monitoring, and " "duration control" msgstr "" "Легко керуйте та відстежуйте лікування за допомогою дозування: сповіщення, " "історія, багаторазові дози, гнучка частота, налаштування, моніторинг запасів " "і контроль тривалості" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:25 msgid "Features:" msgstr "Можливості:" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:27 msgid "Notifications — Get reminders at the right time" msgstr "Сповіщення — вчасно отримуйте сповіщення" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:28 msgid "History — See which medications you took, skipped or missed" msgstr "" "Історія — дізнайтеся, які ліки ви приймали, пропустили або забули прийняти" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:29 msgid "Dosage management — Multiple doses with different times" msgstr "Керування дозами - кілька доз у різний час" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:30 msgid "" "Frequency modes — Every day, specific days, cycle or just when necessary" msgstr "" "Частота прийомів — кожного дня, конкретні дні, цикли або просто коли треба " "прийняти" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:31 msgid "Color and icon — Give a shape for your treatment" msgstr "" "Колір та піктограма — щоб обрати колір і піктограму для запису в курсах " "лікування" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:32 msgid "Inventory tracking — Monitor your stock and get reminded when it's low" msgstr "" "Відкорковування запасу — моніторинг запасу і сповіщення, якщо запас буде " "закінчуватися" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:33 msgid "Duration — Define the start and end dates" msgstr "Тривалість — визначте початкову та кінцеву дати" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:44 msgid "Dosage today window in light theme" msgstr "Розділ \"Сьогодні\" Дозування у світлому стилі" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:49 msgid "Dosage preferences window in light theme" msgstr "Розділ \"Налаштування\" Дозування у світлому стилі" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:54 msgid "Dosage edit treatment window in light theme" msgstr "Розділ \"Курси лікування\" Дозування у світлому стилі" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:59 msgid "Dosage today window in dark theme" msgstr "Розділ \"Сьогодні\" Дозування у темному стилі" #. TRANSLATORS: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/io.github.diegopvlk.Dosage.desktop.in:10 msgid "Medication;Tracker;Reminder;Today;Treatments;Pill;Drug;Remedy;" msgstr "Medication;Tracker;Reminder;Today;History;Treatments;Pill;Drug;Remedy;лікування;курс;аптечка;пігулка;таблетка;нагадати;згадати;прийом;пігулка;доза;дозування;процедура;" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:232 msgid "Date" msgstr "Дата прийому" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:199 msgid "Time" msgstr "Час" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/med-dialog.blp:61 data/ui/one-time-dialog.blp:49 msgid "Name" msgstr "Назва запису" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:183 msgid "Dose" msgstr "Доза" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 msgid "Status" msgstr "Статус" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 msgid "Time Confirmed" msgstr "Час підтверджено" #: src/utils/getHistoryExportFile.js:38 src/utils/getHistoryExportFile.js:117 #: src/editHistDialog.js:68 src/historyFactory.js:186 msgid "Missed" msgstr "Пропущені" #: src/utils/getHistoryExportFile.js:41 src/utils/getHistoryExportFile.js:121 #: src/historyFactory.js:183 data/ui/edit-hist-dialog.blp:111 msgid "Skipped" msgstr "Пропущено" #: src/utils/getHistoryExportFile.js:44 src/utils/getHistoryExportFile.js:55 #: src/utils/getHistoryExportFile.js:125 src/utils/getHistoryExportFile.js:138 #: src/editHistDialog.js:73 src/historyFactory.js:190 #: data/ui/edit-hist-dialog.blp:116 msgid "Confirmed" msgstr "Підтверджено" #: src/utils/getHistoryExportFile.js:52 src/utils/getHistoryExportFile.js:134 #: src/editHistDialog.js:56 src/historyFactory.js:178 msgid "Auto-Confirmed" msgstr "Автоматично Підтверджено" #: src/utils/getHistoryExportFile.js:55 src/utils/getHistoryExportFile.js:138 #: src/editHistDialog.js:74 msgid "Time Unknown" msgstr "Час Невідомий" #. TRANSLATORS: Context: 1 Pill at 19:00 #: src/utils/getTreatmentsExportFile.js:69 #, fuzzy #| msgid "Date" msgid "at" msgstr "Дата прийому" #: src/utils/getTreatmentsExportFile.js:89 data/ui/med-dialog.blp:443 msgid "Notes" msgstr "Примітки" #: src/utils/getTreatmentsExportFile.js:96 src/utils/locale.js:37 #: src/treatmentsFactory.js:268 msgid "Daily" msgstr "Щодня" #: src/utils/getTreatmentsExportFile.js:102 src/medDialog.js:428 #: data/ui/med-dialog.blp:459 msgid "Day of Month" msgstr "День Місяця" #. TRANSLATORS: Context: 2 day(s) on, 1 day(s) off #: src/utils/getTreatmentsExportFile.js:109 msgid "day(s) on" msgstr "" #. TRANSLATORS: Context: 2 day(s) on, 1 day(s) off #: src/utils/getTreatmentsExportFile.js:111 msgid "day(s) off" msgstr "" #: src/utils/getTreatmentsExportFile.js:122 src/todayFactory.js:41 #: src/treatmentsFactory.js:298 data/ui/med-dialog.blp:461 msgid "As Needed" msgstr "Коли Треба" #: src/utils/getTreatmentsExportFile.js:132 data/ui/med-dialog.blp:764 msgid "Duration" msgstr "Тривалість" #: src/utils/getTreatmentsExportFile.js:135 #, fuzzy #| msgid "Starts On" msgid "Started on" msgstr "Розпочинається" #: src/utils/getTreatmentsExportFile.js:136 data/ui/med-dialog.blp:775 #, fuzzy #| msgid "Starts On" msgid "Start" msgstr "Розпочинається" #: src/utils/getTreatmentsExportFile.js:138 src/treatmentsFactory.js:256 msgid "Ended on" msgstr "Закінчився на" #: src/utils/getTreatmentsExportFile.js:138 data/ui/med-dialog.blp:817 #, fuzzy #| msgid "Ends On" msgid "End" msgstr "Закінчується" #: src/utils/getTreatmentsExportFile.js:173 src/utils/saveFiles.js:44 #: data/ui/window.blp:234 msgid "Treatments" msgstr "Курси лікування" #: src/utils/getTreatmentsExportFile.js:184 #, fuzzy #| msgctxt "shortcut window" #| msgid "General" msgid "Generated on" msgstr "Загальні" #: src/utils/getTreatmentsExportFile.js:187 msgid "Ongoing" msgstr "" #: src/utils/getTreatmentsExportFile.js:188 msgid "Non-scheduled" msgstr "" #: src/utils/getTreatmentsExportFile.js:189 msgid "Finished" msgstr "" #: src/utils/locale.js:33 msgid "Weekends" msgstr "Вихідні" #: src/utils/locale.js:35 msgid "Weekdays" msgstr "Будні" #: src/utils/saveFiles.js:22 data/ui/window.blp:156 msgid "History" msgstr "Історія" #: src/editHistDialog.js:60 src/editHistDialog.js:89 src/editHistDialog.js:110 msgid "Confirmed At" msgstr "Підтверджено В" #: src/editHistDialog.js:64 src/editHistDialog.js:114 msgid "Skipped At" msgstr "Пропущено В" #: src/historyFactory.js:47 msgid "Select to be Removed" msgstr "Виберіть Для Видалення" #. TRANSLATORS: "Your Name " #: src/main.js:69 msgid "translator-credits" msgstr "volkov " #: src/main.js:73 msgid "Thanks to These Projects!" msgstr "Велике Спасибі Цим Проектам!" #: src/medDialog.js:99 msgid "Edit Treatment" msgstr "Редагувати Курс Лікування" #: src/medDialog.js:100 data/ui/edit-hist-dialog.blp:30 #: data/ui/preferences.blp:112 data/ui/preferences.blp:132 #: data/ui/refill-dialog.blp:67 msgid "Save" msgstr "Зберегти" #: src/medDialog.js:114 msgid "Copy" msgstr "Копія" #: src/medDialog.js:217 msgid "Add Dose" msgstr "Додати Дозу" #: src/medDialog.js:419 msgid "Choose" msgstr "Обрати" #: src/medDialog.js:429 src/treatmentsFactory.js:274 msgid "Day" msgstr "День" #: src/medDialog.js:456 data/ui/med-dialog.blp:458 msgid "Specific Days" msgstr "Конкретні Дні" #: src/medDialog.js:463 src/treatmentsFactory.js:295 data/ui/med-dialog.blp:460 msgid "Cycle" msgstr "Цикл" #: src/medDialog.js:467 data/ui/med-dialog.blp:452 msgid "Frequency" msgstr "Частота" #: src/medDialog.js:500 msgid "Empty Name" msgstr "Відсутня Назва Запису" #: src/medDialog.js:506 msgid "Empty Unit" msgstr "Відсутня Одиниця Виміру" #: src/medDialog.js:513 msgid "Choose at Least One Day" msgstr "Виберіть Хоча Б Один День" #: src/medDialog.js:527 src/oneTimeDialog.js:187 msgid "Name Already on Treatment List" msgstr "Ім'я Вже В Списку Лікування" #: src/medDialog.js:542 msgid "Duplicated Time" msgstr "Однакові Часи У Прийомів Доз" #: src/medDialog.js:582 msgid "Are You Sure?" msgstr "Ви Впевнені?" #: src/medDialog.js:583 msgid "will be deleted" msgstr "буде видалено" #: src/medDialog.js:586 data/ui/edit-hist-dialog.blp:18 #: data/ui/med-dialog.blp:19 msgid "Cancel" msgstr "Скасувати" #: src/medDialog.js:587 src/treatmentsFactory.js:128 data/ui/med-dialog.blp:865 msgid "Delete" msgstr "Видалити" #: src/oneTimeDialog.js:110 msgid "New" msgstr "Новий" #: src/oneTimeDialog.js:121 data/ui/med-dialog.blp:189 #: data/ui/one-time-dialog.blp:178 msgid "Pill(s)" msgstr "Пігулка(и)" #: src/prefsDialog.js:63 msgid "Accept to allow running in the background and receive notifications" msgstr "" "Прийміть, щоб додаток міг працювати у фоновому режимі і відправляти " "сповіщення" #: src/prefsDialog.js:74 src/window.js:259 msgid "An Issue Has Occurred" msgstr "Виникла Проблема" #: src/prefsDialog.js:77 src/window.js:267 src/window.js:289 src/window.js:311 #: src/window.js:329 msgid "Close" msgstr "Закрити" #: src/timeDoseRow.js:34 msgid "Remove Dose" msgstr "Зняти Дозу" #: src/timeDoseRow.js:40 data/ui/edit-hist-dialog.blp:90 #: data/ui/one-time-dialog.blp:210 msgid "Change Time" msgstr "Змінити Час" #: src/todayFactory.js:134 msgid "Change Dose" msgstr "Змінити Дозу" #: src/treatmentsFactory.js:96 src/treatmentsFactory.js:126 #: data/ui/refill-dialog.blp:7 msgid "Refill" msgstr "Доповнити" #: src/treatmentsFactory.js:125 msgid "Edit" msgstr "Редагувати" #: src/treatmentsFactory.js:127 msgid "Duplicate" msgstr "Дублювати" #: src/treatmentsFactory.js:146 msgid "Options" msgstr "Опції" #. TRANSLATORS: keep the %d it's where the number goes #: src/treatmentsFactory.js:244 #, javascript-format msgid "%d Remaining" msgstr "%d Залишилося" #. TRANSLATORS: label for when duration is enabled #: src/treatmentsFactory.js:254 msgid "Starts on" msgstr "Розпочинається" #: src/treatmentsFactory.js:255 msgid "Until" msgstr "До" #: src/treatmentsFactory.js:283 src/treatmentsFactory.js:286 msgid "Next Dose" msgstr "Наступна Дозу" #: src/window.js:173 src/window.js:943 msgid "Reminder" msgstr "Нагадування" #. TRANSLATORS: Notification text for when the inventory is low #: src/window.js:175 msgid "You have treatments low in stock" msgstr "У вас залишилося мало ліків у запасі" #: src/window.js:492 msgid "Show All" msgstr "Показати Все" #: src/window.js:515 msgid "Show Less" msgstr "Показувати Менше" #: src/window.js:648 msgid "No Results Found" msgstr "Не Знайдено Жодних Результатів" #: src/window.js:648 src/window.js:1517 #, fuzzy #| msgid "History" msgid "No History" msgstr "Історія" #: src/window.js:818 data/ui/window.blp:260 #, fuzzy #| msgid "Treatments" msgid "No Treatments" msgstr "Курси лікування" #: src/window.js:818 msgid "All Done for Today" msgstr "Ви Прийняли Усі Ліки На Сьогодні" #: src/window.js:906 src/window.js:1090 data/ui/one-time-dialog.blp:285 #: data/ui/preferences.blp:73 msgid "Confirm" msgstr "Підтвердити" #: src/window.js:906 msgid "Confirm All" msgstr "Підтвердити Все" #: src/window.js:907 data/ui/preferences.blp:84 data/ui/window.blp:146 msgid "Skip" msgstr "Пропустити" #: src/window.js:907 msgid "Skip All" msgstr "Пропустити Все" #. TRANSLATORS: keep the %d it's where the number goes #: src/window.js:938 #, javascript-format msgid "and %d more" msgstr "і ще %d" #: src/window.js:1090 data/ui/one-time-dialog.blp:7 data/ui/window.blp:133 msgid "One-Time Entry" msgstr "Одноразовий Прийом" #: src/window.js:1295 data/ui/window.blp:353 msgid "Quit" msgstr "Вийти" #: data/ui/edit-hist-dialog.blp:7 msgid "Edit Entry" msgstr "Редагувати Запис" #: data/ui/med-dialog.blp:7 msgid "New Treatment" msgstr "Новий Курс Лікування" #: data/ui/med-dialog.blp:31 data/ui/window.blp:283 msgid "Add" msgstr "Додати" #: data/ui/med-dialog.blp:69 data/ui/one-time-dialog.blp:58 msgid "Color" msgstr "Колір" #. TRANSLATORS: Tooltip for the colors (from Default until Purple) #: data/ui/med-dialog.blp:94 data/ui/one-time-dialog.blp:83 msgid "Default" msgstr "Стандартний" #: data/ui/med-dialog.blp:106 data/ui/one-time-dialog.blp:95 msgid "Red" msgstr "Червоний" #: data/ui/med-dialog.blp:118 data/ui/one-time-dialog.blp:107 msgid "Orange" msgstr "Помаранчевий" #: data/ui/med-dialog.blp:130 data/ui/one-time-dialog.blp:119 msgid "Yellow" msgstr "Жовтий" #: data/ui/med-dialog.blp:142 data/ui/one-time-dialog.blp:131 msgid "Green" msgstr "Зелений" #: data/ui/med-dialog.blp:154 data/ui/one-time-dialog.blp:143 msgid "Cyan" msgstr "Блакитний" #: data/ui/med-dialog.blp:166 data/ui/one-time-dialog.blp:155 msgid "Blue" msgstr "Синій" #: data/ui/med-dialog.blp:178 data/ui/one-time-dialog.blp:167 msgid "Purple" msgstr "Фіолетовий" #: data/ui/med-dialog.blp:188 data/ui/one-time-dialog.blp:177 msgid "Unit" msgstr "Одиниця виміру" #: data/ui/med-dialog.blp:197 msgid "Icon" msgstr "Піктограма" #. TRANSLATORS: Tooltip for the icons (from Pill until Potion) #: data/ui/med-dialog.blp:226 msgid "Pill" msgstr "Пігулка" #: data/ui/med-dialog.blp:242 msgid "Alternative Pill" msgstr "Інший Вид Пігулки" #: data/ui/med-dialog.blp:258 msgid "Capsule" msgstr "Капсула" #: data/ui/med-dialog.blp:274 msgid "Round Pill" msgstr "Кругла Пігулка" #: data/ui/med-dialog.blp:290 msgid "Alternative Round Pill" msgstr "Інша Кругла Пігулка" #: data/ui/med-dialog.blp:306 msgid "Ampoule" msgstr "Ампула" #: data/ui/med-dialog.blp:322 msgid "Injection" msgstr "Ін'єкція" #: data/ui/med-dialog.blp:338 msgid "Square Pill" msgstr "Квадратна Пігулка" #: data/ui/med-dialog.blp:354 msgid "Alternative Square Pill" msgstr "Інша Квадратна Пігулка" #: data/ui/med-dialog.blp:370 msgid "Triangle pill" msgstr "Трикутна пігулка" #: data/ui/med-dialog.blp:386 msgid "Alternative Triangle Pill" msgstr "Інша Прямокутна Пігулка" #: data/ui/med-dialog.blp:402 msgid "Bottle" msgstr "Пляшка" #: data/ui/med-dialog.blp:418 msgid "Drops" msgstr "Краплі" #: data/ui/med-dialog.blp:434 msgid "Potion" msgstr "Мікстура" #: data/ui/med-dialog.blp:457 msgid "Every Day" msgstr "Кожного Дня" #: data/ui/med-dialog.blp:473 msgid "Choose Days" msgstr "Вибрати Дні" #: data/ui/med-dialog.blp:572 msgid "Choose Day" msgstr "Виберіть День" #: data/ui/med-dialog.blp:617 msgid "Change Cycle" msgstr "Змінити Цикл" #: data/ui/med-dialog.blp:642 msgid "Days Active" msgstr "Активних Днів" #: data/ui/med-dialog.blp:656 msgid "Days Inactive" msgstr "Неактивних Днів" #. TRANSLATORS: Day in cycle, try to keep it short #: data/ui/med-dialog.blp:671 msgid "Today is Cycle Day…" msgstr "Сьогодні день циклу…" #: data/ui/med-dialog.blp:694 msgid "Increase Notification Priority" msgstr "Збільшити Пріоритет Сповіщень" #: data/ui/med-dialog.blp:695 msgid "Show in fullscreen mode or with 'Do Not Disturb' enabled" msgstr "" "Відображає сповіщення в повноекранному режимі або навіть якщо ввімкнено " "режим 'Не турбувати'" #: data/ui/med-dialog.blp:699 msgid "Recurring Notifications" msgstr "Повторювані Сповіщення" #: data/ui/med-dialog.blp:700 msgid "Renotify until it's confirmed or skipped" msgstr "Повторно повідомляти, доки не буде підтверджено або пропущено" #: data/ui/med-dialog.blp:705 msgid "Interval in Minutes" msgstr "Інтервал У Хвилинах" #: data/ui/med-dialog.blp:718 data/ui/refill-dialog.blp:36 msgid "Inventory" msgstr "Запас" #: data/ui/med-dialog.blp:719 msgid "Manage your stock" msgstr "Керування вашим запасом ліків" #: data/ui/med-dialog.blp:725 msgid "Current" msgstr "Поточний запас ліків" #: data/ui/med-dialog.blp:738 msgid "Remind Me At" msgstr "Сповістити мене, коли запас ліків зменшиться до" #: data/ui/med-dialog.blp:751 msgid "Refill Amount" msgstr "Сума Поповнення" #: data/ui/med-dialog.blp:765 msgid "Set start and end dates" msgstr "Обрати початкову та кінцеві дати курсу лікування" #: data/ui/med-dialog.blp:785 data/ui/med-dialog.blp:827 #: data/ui/one-time-dialog.blp:243 msgid "Choose Date" msgstr "Виберіть Дату" #: data/ui/med-dialog.blp:855 msgid "Mark as Confirmed" msgstr "Позначити Як Підтверджене" #: data/ui/med-dialog.blp:856 msgid "" "If not manually confirmed or skipped, it will be recorded as confirmed in " "history, reducing stock if enabled" msgstr "" "Якщо не підтвердити вручну або пропустити, це буде записано як підтверджене " "в історії, зменшуючи запас, якщо ввімкнено" #: data/ui/one-time-dialog.blp:44 msgid "From Treatment List" msgstr "Із Списку Курсів Лікування" #: data/ui/one-time-dialog.blp:182 msgid "Amount" msgstr "Сума" #: data/ui/preferences.blp:7 data/ui/window.blp:338 msgid "Preferences" msgstr "Налаштування" #: data/ui/preferences.blp:17 msgid "Auto-Start at Login" msgstr "Автоматичний Запуск Додатку При Вході В Систему" #: data/ui/preferences.blp:28 msgid "Auto-Clear History" msgstr "Автоматичне Очищення Історії" #: data/ui/preferences.blp:29 msgid "Keeps a maximum of 30 days" msgstr "Зберігає максимум 30 днів" #: data/ui/preferences.blp:40 msgid "Low Stock Notification" msgstr "Повідомлення Про Низький Запас" #: data/ui/preferences.blp:41 msgid "Send reminders when treatments are low in stock" msgstr "Надсилати нагадування, коли запаси лікування низькі" #: data/ui/preferences.blp:52 msgid "Notification Sound" msgstr "Звук Сповіщення" #: data/ui/preferences.blp:63 msgid "Notification Buttons" msgstr "Кнопки Сповіщень" #: data/ui/preferences.blp:64 msgid "Show or hide confirm/skip" msgstr "Показати чи приховати підтвердити/пропустити" #: data/ui/preferences.blp:98 #, fuzzy #| msgid "Export History as CSV" msgid "Export History As" msgstr "Експорт Історії Як CSV" #: data/ui/preferences.blp:121 #, fuzzy #| msgid "Empty Treatments" msgid "Export Treatments As" msgstr "Порожні Курси Лікування" #: data/ui/shortcuts-dialog.blp:8 #, fuzzy #| msgctxt "shortcut window" #| msgid "Show Shortcuts" msgid "Shortcuts" msgstr "Показати клавіатурні скорочення" #: data/ui/shortcuts-dialog.blp:11 #, fuzzy #| msgid "Show/Hide 'As Needed'" msgctxt "shortcut window" msgid "Show/Hide 'As Needed'" msgstr "Показати/сховати \"Коли Треба\"" #: data/ui/shortcuts-dialog.blp:16 #, fuzzy #| msgid "One-Time Entry" msgctxt "shortcut window" msgid "New One-Time Entry" msgstr "Одноразовий Прийом" #: data/ui/shortcuts-dialog.blp:21 #, fuzzy #| msgid "New Treatment" msgctxt "shortcut window" msgid "Add New Treatment" msgstr "Новий Курс Лікування" #: data/ui/shortcuts-dialog.blp:26 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Показати клавіатурні скорочення" #: data/ui/shortcuts-dialog.blp:31 msgctxt "shortcut window" msgid "Quit" msgstr "Вийти" #: data/ui/window.blp:23 msgid "Show/Hide 'As Needed'" msgstr "Показати/сховати \"Коли Треба\"" #: data/ui/window.blp:31 msgid "Search" msgstr "Пошук" #: data/ui/window.blp:39 #, fuzzy #| msgid "Treatments" msgid "Sort Treatments" msgstr "Курси лікування" #: data/ui/window.blp:48 msgid "Main Menu" msgstr "Головне Меню" #: data/ui/window.blp:61 msgid "Search…" msgstr "Пошук…" #: data/ui/window.blp:71 msgid "Today" msgstr "Сьогодні" #: data/ui/window.blp:117 data/ui/window.blp:210 msgid "Unselect" msgstr "Скасувати Вибір" #: data/ui/window.blp:220 msgid "Remove Entries" msgstr "Видалити Записи" #: data/ui/window.blp:300 msgid "Name Ascending" msgstr "" #: data/ui/window.blp:306 msgid "Remaining Stock (Lowest First)" msgstr "" #: data/ui/window.blp:312 msgid "Remaining Stock (Highest First)" msgstr "" #: data/ui/window.blp:318 #, fuzzy #| msgid "As Needed" msgid "As Needed Last" msgstr "Коли Треба" #: data/ui/window.blp:324 #, fuzzy #| msgid "Ended on" msgid "Ended Last" msgstr "Закінчився на" #: data/ui/window.blp:330 #, fuzzy #| msgid "As Needed" msgid "As Needed/Ended Last" msgstr "Коли Треба" #: data/ui/window.blp:343 msgid "Keyboard Shortcuts" msgstr "Клавіатурні скорочення" #: data/ui/window.blp:348 msgid "About Dosage" msgstr "Про Дозування" #~ msgid "Empty Treatments" #~ msgstr "Порожні Курси Лікування" #~ msgid "Empty History" #~ msgstr "Історія Порожня" #~ msgid "No Treatments Added" #~ msgstr "Лікування Не Додано" #~ msgctxt "shortcut window" #~ msgid "General" #~ msgstr "Загальні" #~ msgctxt "shortcut window" #~ msgid "Preferences" #~ msgstr "Налаштування" #~ msgid "After meal" #~ msgstr "Після прийому їжі" #~ msgid "Refill Stock" #~ msgstr "Поповнити Запас" #~ msgid "Low Stock" #~ msgstr "Низький Запас" #~ msgid "Form" #~ msgstr "Форма" #~ msgid "Color and icon" #~ msgstr "Колір та піктограма" #~ msgid "Time and amount" #~ msgstr "Час прийому та розмір дози" #~ msgid "Restore" #~ msgstr "Відновлення" #~ msgid "New entry" #~ msgstr "Новий запис" #~ msgid "Name already exists" #~ msgstr "Ця назва вже зайнята" #~ msgid "Add to history" #~ msgstr "Додати до історії" #~ msgid "medication" #~ msgstr "ліки" #~ msgid "tracker" #~ msgstr "відстежування" #~ msgid "treatments" #~ msgstr "курси лікування" #~ msgid "pill" #~ msgstr "пігулка" #~ msgid "drug" #~ msgstr "ліки" #~ msgid "remedy" #~ msgstr "ліки" #~ msgid "Su" #~ msgstr "Нд" #~ msgid "Mo" #~ msgstr "Пн" #~ msgid "Tu" #~ msgstr "Вт" #~ msgid "We" #~ msgstr "Ср" #~ msgid "Th" #~ msgstr "Чт" #~ msgid "Fr" #~ msgstr "Пт" #~ msgid "Sa" #~ msgstr "Сб" #~ msgid "Sunday" #~ msgstr "Неділя" #~ msgid "Monday" #~ msgstr "Понеділок" #~ msgid "Tuesday" #~ msgstr "Вівторок" #~ msgid "Wednesday" #~ msgstr "Середа" #~ msgid "Thursday" #~ msgstr "Четвер" #~ msgid "Friday" #~ msgstr "П'ятниця" #~ msgid "Saturday" #~ msgstr "Субота" #~ msgid "About" #~ msgstr "Про" #~ msgid "Allow Dosage to run in background." #~ msgstr "Дозволити 'Дозування' працювати у фоновому режимі." #~ msgid "Fixed notifications being delayed after suspension" #~ msgstr "" #~ "Виправлено сповіщення, які затримувались після виходу із призупиненого " #~ "стану системи" #~ msgid "" #~ "Fixed notifications being sent more than once after saving an existing " #~ "treatment" #~ msgstr "" #~ "Виправлено сповіщення, які відправлялись частіше ніж один раз після " #~ "збереження існуючого курсу лікування" #~ msgid "Added a label to show the frequency on treatments list" #~ msgstr "" #~ "Додано напис, який показує частоту прийому у списку курсів лікування" #~ msgid "Brazilian translation updated" #~ msgstr "Оновлено бразильський переклад" #~ msgid "Initial Release" #~ msgstr "Перший реліз" diegopvlk-Dosage-bd9126a/po/vi.po000066400000000000000000000547021514145341100167130ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) 2023 Diego Povliuk # This file is distributed under the license GPLv3-or-later. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: io.github.diegopvlk.Dosage\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-12-19 16:12-0300\n" "PO-Revision-Date: 2025-12-22 17:18+0000\n" "Last-Translator: Loc Huynh \n" "Language-Team: Vietnamese \n" "Language: vi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Weblate 5.15.1\n" #. TRANSLATORS: App name, translate to your language and follow the capitalization #: data/io.github.diegopvlk.Dosage.appdata.xml.in:20 #: data/io.github.diegopvlk.Dosage.desktop.in:3 #: src/utils/getTreatmentsExportFile.js:173 src/utils/saveFiles.js:22 #: src/utils/saveFiles.js:44 src/main.js:60 src/window.js:1060 #: data/ui/window.blp:6 msgid "Dosage" msgstr "Dosage" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:21 msgid "Keep track of your treatments" msgstr "Theo dõi các phương pháp điều trị của bạn" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:24 msgid "" "Easily manage and track treatments with Dosage: notifications, history, " "multiple doses, flexible frequency, customization, stock monitoring, and " "duration control" msgstr "" "Dễ dàng quản lý và theo dõi các phương pháp điều trị với Dosage: thông báo, " "lịch sử, nhiều liều, tần suất linh hoạt, tùy chỉnh, theo dõi lượng dự trữ và " "kiểm soát thời gian" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:25 msgid "Features:" msgstr "Tính năng:" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:27 msgid "Notifications — Get reminders at the right time" msgstr "Thông báo — Nhận lời nhắc vào đúng thời điểm" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:28 msgid "History — See which medications you took, skipped or missed" msgstr "Lịch sử — Xem những loại thuốc bạn đã dùng, bỏ qua hoặc bỏ lỡ" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:29 msgid "Dosage management — Multiple doses with different times" msgstr "Quản lý Dosage — Nhiều liều với thời gian khác nhau" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:30 msgid "" "Frequency modes — Every day, specific days, cycle or just when necessary" msgstr "Chế độ tần số — Hàng ngày, ngày cụ thể, chu kỳ hoặc chỉ khi cần thiết" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:31 msgid "Color and icon — Give a shape for your treatment" msgstr "Màu sắc và biểu tượng — Tạo hình dạng cho phương pháp điều trị của bạn" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:32 msgid "Inventory tracking — Monitor your stock and get reminded when it's low" msgstr "" "Theo dõi dự trữ — Theo dõi lượng dự trữ của bạn và nhận được lời nhắc khi " "sắp hết" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:33 msgid "Duration — Define the start and end dates" msgstr "Thời lượng — Xác định ngày bắt đầu và ngày kết thúc" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:44 msgid "Dosage today window in light theme" msgstr "Cửa sổ Dosage ngày hôm nay ở chủ đề sáng" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:49 msgid "Dosage preferences window in light theme" msgstr "Cửa sổ tùy chọn Dosage trong chủ đề sáng" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:54 msgid "Dosage edit treatment window in light theme" msgstr "Cửa sổ điều trị chỉnh sửa Dosage trong chủ đề sáng" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:59 msgid "Dosage today window in dark theme" msgstr "Cửa sổ Dosage ngày hôm nay ở chủ đề tối" #. TRANSLATORS: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/io.github.diegopvlk.Dosage.desktop.in:10 msgid "Medication;Tracker;Reminder;Today;Treatments;Pill;Drug;Remedy;" msgstr "" "Medication;Tracker;Reminder;Today;Treatments;Pill;Drug;Remedy;Theo dõi;Nhắc " "nhở;Hôm nay;Phương pháp điều trị;Thuốc uống;Phương thuốc;" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:232 msgid "Date" msgstr "Ngày" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:199 msgid "Time" msgstr "Thời gian" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/med-dialog.blp:61 data/ui/one-time-dialog.blp:49 msgid "Name" msgstr "Tên" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:183 msgid "Dose" msgstr "Liều thuốc" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 msgid "Status" msgstr "Trạng thái" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 msgid "Time Confirmed" msgstr "Thời gian được xác nhận" #: src/utils/getHistoryExportFile.js:38 src/utils/getHistoryExportFile.js:117 #: src/editHistDialog.js:68 src/historyFactory.js:186 msgid "Missed" msgstr "Bỏ lỡ" #: src/utils/getHistoryExportFile.js:41 src/utils/getHistoryExportFile.js:121 #: src/historyFactory.js:183 data/ui/edit-hist-dialog.blp:111 msgid "Skipped" msgstr "Đã bỏ qua" #: src/utils/getHistoryExportFile.js:44 src/utils/getHistoryExportFile.js:55 #: src/utils/getHistoryExportFile.js:125 src/utils/getHistoryExportFile.js:138 #: src/editHistDialog.js:73 src/historyFactory.js:190 #: data/ui/edit-hist-dialog.blp:116 msgid "Confirmed" msgstr "Đã xác nhận" #: src/utils/getHistoryExportFile.js:52 src/utils/getHistoryExportFile.js:134 #: src/editHistDialog.js:56 src/historyFactory.js:178 msgid "Auto-Confirmed" msgstr "Tự động xác nhận" #: src/utils/getHistoryExportFile.js:55 src/utils/getHistoryExportFile.js:138 #: src/editHistDialog.js:74 msgid "Time Unknown" msgstr "Thời gian không xác định" #. TRANSLATORS: Context: 1 Pill at 19:00 #: src/utils/getTreatmentsExportFile.js:69 msgid "at" msgstr "lúc" #: src/utils/getTreatmentsExportFile.js:89 data/ui/med-dialog.blp:443 msgid "Notes" msgstr "Ghi chú" #: src/utils/getTreatmentsExportFile.js:96 src/utils/locale.js:37 #: src/treatmentsFactory.js:268 msgid "Daily" msgstr "Hằng ngày" #: src/utils/getTreatmentsExportFile.js:102 src/medDialog.js:428 #: data/ui/med-dialog.blp:459 msgid "Day of Month" msgstr "Ngày trong tháng" #. TRANSLATORS: Context: 2 day(s) on, 1 day(s) off #: src/utils/getTreatmentsExportFile.js:109 msgid "day(s) on" msgstr "ngày dùng thuốc" #. TRANSLATORS: Context: 2 day(s) on, 1 day(s) off #: src/utils/getTreatmentsExportFile.js:111 msgid "day(s) off" msgstr "ngày không dùng thuốc" #: src/utils/getTreatmentsExportFile.js:122 src/todayFactory.js:41 #: src/treatmentsFactory.js:298 data/ui/med-dialog.blp:461 msgid "As Needed" msgstr "Khi cần thiết" #: src/utils/getTreatmentsExportFile.js:132 data/ui/med-dialog.blp:764 msgid "Duration" msgstr "Khoảng thời gian" #: src/utils/getTreatmentsExportFile.js:135 msgid "Started on" msgstr "Đã bắt đầu lúc" #: src/utils/getTreatmentsExportFile.js:136 data/ui/med-dialog.blp:775 msgid "Start" msgstr "Bắt đầu" #: src/utils/getTreatmentsExportFile.js:138 src/treatmentsFactory.js:256 msgid "Ended on" msgstr "Đã kết thúc vào" #: src/utils/getTreatmentsExportFile.js:138 data/ui/med-dialog.blp:817 msgid "End" msgstr "Kết thúc" #: src/utils/getTreatmentsExportFile.js:173 src/utils/saveFiles.js:44 #: data/ui/window.blp:234 msgid "Treatments" msgstr "Phương pháp đIều trị" #: src/utils/getTreatmentsExportFile.js:184 msgid "Generated on" msgstr "Được tạo vào" #: src/utils/getTreatmentsExportFile.js:187 msgid "Ongoing" msgstr "Đang" #: src/utils/getTreatmentsExportFile.js:188 msgid "Non-scheduled" msgstr "Không theo lịch trình" #: src/utils/getTreatmentsExportFile.js:189 msgid "Finished" msgstr "Hoàn thành" #: src/utils/locale.js:33 msgid "Weekends" msgstr "Cuối tuần" #: src/utils/locale.js:35 msgid "Weekdays" msgstr "Các ngày trong tuần" #: src/utils/saveFiles.js:22 data/ui/window.blp:156 msgid "History" msgstr "Lịch sử" #: src/editHistDialog.js:60 src/editHistDialog.js:89 src/editHistDialog.js:110 msgid "Confirmed At" msgstr "Xác nhận tại" #: src/editHistDialog.js:64 src/editHistDialog.js:114 msgid "Skipped At" msgstr "Bỏ qua lúc" #: src/historyFactory.js:47 msgid "Select to be Removed" msgstr "Chọn để xóa" #. TRANSLATORS: "Your Name " #: src/main.js:69 msgid "translator-credits" msgstr "" "Vietnam Linux L10n \n" "Loc Huynh " #: src/main.js:73 msgid "Thanks to These Projects!" msgstr "Cảm ơn những dự án này!" #: src/medDialog.js:99 msgid "Edit Treatment" msgstr "Chỉnh sửa điều trị" #: src/medDialog.js:100 data/ui/edit-hist-dialog.blp:30 #: data/ui/preferences.blp:112 data/ui/preferences.blp:132 #: data/ui/refill-dialog.blp:67 msgid "Save" msgstr "Lưu" #: src/medDialog.js:114 msgid "Copy" msgstr "Sao chép" #: src/medDialog.js:217 msgid "Add Dose" msgstr "Thêm liều thuốc" #: src/medDialog.js:419 msgid "Choose" msgstr "Chọn" #: src/medDialog.js:429 src/treatmentsFactory.js:274 msgid "Day" msgstr "Ngày" #: src/medDialog.js:456 data/ui/med-dialog.blp:458 msgid "Specific Days" msgstr "Ngày cụ thể" #: src/medDialog.js:463 src/treatmentsFactory.js:295 data/ui/med-dialog.blp:460 msgid "Cycle" msgstr "Chu kỳ" #: src/medDialog.js:467 data/ui/med-dialog.blp:452 msgid "Frequency" msgstr "Tần suất" #: src/medDialog.js:500 msgid "Empty Name" msgstr "Tên trống" #: src/medDialog.js:506 msgid "Empty Unit" msgstr "Đơn vị trống" #: src/medDialog.js:513 msgid "Choose at Least One Day" msgstr "Chọn ít nhất một ngày" #: src/medDialog.js:527 src/oneTimeDialog.js:187 msgid "Name Already on Treatment List" msgstr "Tên đã có trong Danh sách điều trị" #: src/medDialog.js:542 msgid "Duplicated Time" msgstr "Thời gian trùng lặp" #: src/medDialog.js:582 msgid "Are You Sure?" msgstr "Bạn có chắc không?" #: src/medDialog.js:583 msgid "will be deleted" msgstr "sẽ bị xóa" #: src/medDialog.js:586 data/ui/edit-hist-dialog.blp:18 #: data/ui/med-dialog.blp:19 msgid "Cancel" msgstr "Hủy" #: src/medDialog.js:587 src/treatmentsFactory.js:128 data/ui/med-dialog.blp:865 msgid "Delete" msgstr "Xóa" #: src/oneTimeDialog.js:110 msgid "New" msgstr "Mới" #: src/oneTimeDialog.js:121 data/ui/med-dialog.blp:189 #: data/ui/one-time-dialog.blp:178 msgid "Pill(s)" msgstr "Viên thuốc" #: src/prefsDialog.js:63 msgid "Accept to allow running in the background and receive notifications" msgstr "Chấp nhận cho phép chạy ngầm và nhận thông báo" #: src/prefsDialog.js:74 src/window.js:259 msgid "An Issue Has Occurred" msgstr "Đã xảy ra sự cố" #: src/prefsDialog.js:77 src/window.js:267 src/window.js:289 src/window.js:311 #: src/window.js:329 msgid "Close" msgstr "Đóng" #: src/timeDoseRow.js:34 msgid "Remove Dose" msgstr "Loại bỏ liều thuốc" #: src/timeDoseRow.js:40 data/ui/edit-hist-dialog.blp:90 #: data/ui/one-time-dialog.blp:210 msgid "Change Time" msgstr "Thay đổi thời gian" #: src/todayFactory.js:134 msgid "Change Dose" msgstr "Thay đổi liều thuốc" #: src/treatmentsFactory.js:96 src/treatmentsFactory.js:126 #: data/ui/refill-dialog.blp:7 msgid "Refill" msgstr "Làm đầy" #: src/treatmentsFactory.js:125 msgid "Edit" msgstr "Chỉnh sửa" #: src/treatmentsFactory.js:127 msgid "Duplicate" msgstr "Nhân bản" #: src/treatmentsFactory.js:146 msgid "Options" msgstr "Tùy chọn" #. TRANSLATORS: keep the %d it's where the number goes #: src/treatmentsFactory.js:244 #, javascript-format msgid "%d Remaining" msgstr "%d Còn lại" #. TRANSLATORS: label for when duration is enabled #: src/treatmentsFactory.js:254 msgid "Starts on" msgstr "Bắt đầu vào" #: src/treatmentsFactory.js:255 msgid "Until" msgstr "Cho đến khi" #: src/treatmentsFactory.js:283 src/treatmentsFactory.js:286 msgid "Next Dose" msgstr "Liều thuốc tiếp theo" #: src/window.js:173 src/window.js:943 msgid "Reminder" msgstr "Lời nhắc" #. TRANSLATORS: Notification text for when the inventory is low #: src/window.js:175 msgid "You have treatments low in stock" msgstr "Bạn có phương pháp điều trị sắp hết trong lượng dự trữ" #: src/window.js:492 msgid "Show All" msgstr "Hiện tất cả" #: src/window.js:515 msgid "Show Less" msgstr "Hiện ít hơn" #: src/window.js:648 msgid "No Results Found" msgstr "Không tìm thấy kết quả nào" #: src/window.js:648 src/window.js:1517 msgid "No History" msgstr "Không lịch sử" #: src/window.js:818 data/ui/window.blp:260 msgid "No Treatments" msgstr "Không phương pháp điều trị" #: src/window.js:818 msgid "All Done for Today" msgstr "Tất cả đã xong cho hôm nay" #: src/window.js:906 src/window.js:1090 data/ui/one-time-dialog.blp:285 #: data/ui/preferences.blp:73 msgid "Confirm" msgstr "Xác nhận" #: src/window.js:906 msgid "Confirm All" msgstr "Xác nhận tất cả" #: src/window.js:907 data/ui/preferences.blp:84 data/ui/window.blp:146 msgid "Skip" msgstr "Bỏ qua" #: src/window.js:907 msgid "Skip All" msgstr "Bỏ qua tất cả" #. TRANSLATORS: keep the %d it's where the number goes #: src/window.js:938 #, javascript-format msgid "and %d more" msgstr "và %d nữa" #: src/window.js:1090 data/ui/one-time-dialog.blp:7 data/ui/window.blp:133 msgid "One-Time Entry" msgstr "Mục nhập một lần" #: src/window.js:1295 data/ui/window.blp:353 msgid "Quit" msgstr "Thoát" #: data/ui/edit-hist-dialog.blp:7 msgid "Edit Entry" msgstr "Chỉnh sửa mục nhập" #: data/ui/med-dialog.blp:7 msgid "New Treatment" msgstr "Điều trị mới" #: data/ui/med-dialog.blp:31 data/ui/window.blp:283 msgid "Add" msgstr "Thêm" #: data/ui/med-dialog.blp:69 data/ui/one-time-dialog.blp:58 msgid "Color" msgstr "Màu sắc" #. TRANSLATORS: Tooltip for the colors (from Default until Purple) #: data/ui/med-dialog.blp:94 data/ui/one-time-dialog.blp:83 msgid "Default" msgstr "Mặc định" #: data/ui/med-dialog.blp:106 data/ui/one-time-dialog.blp:95 msgid "Red" msgstr "Đỏ" #: data/ui/med-dialog.blp:118 data/ui/one-time-dialog.blp:107 msgid "Orange" msgstr "Cam" #: data/ui/med-dialog.blp:130 data/ui/one-time-dialog.blp:119 msgid "Yellow" msgstr "Vàng" #: data/ui/med-dialog.blp:142 data/ui/one-time-dialog.blp:131 msgid "Green" msgstr "Xanh lá" #: data/ui/med-dialog.blp:154 data/ui/one-time-dialog.blp:143 msgid "Cyan" msgstr "Lục" #: data/ui/med-dialog.blp:166 data/ui/one-time-dialog.blp:155 msgid "Blue" msgstr "Xanh Dương" #: data/ui/med-dialog.blp:178 data/ui/one-time-dialog.blp:167 msgid "Purple" msgstr "Tím" #: data/ui/med-dialog.blp:188 data/ui/one-time-dialog.blp:177 msgid "Unit" msgstr "Đơn vị" #: data/ui/med-dialog.blp:197 msgid "Icon" msgstr "Biểu tượng" #. TRANSLATORS: Tooltip for the icons (from Pill until Potion) #: data/ui/med-dialog.blp:226 msgid "Pill" msgstr "Viên thuốc" #: data/ui/med-dialog.blp:242 msgid "Alternative Pill" msgstr "Viên thuốc thay thế" #: data/ui/med-dialog.blp:258 msgid "Capsule" msgstr "Viên nang" #: data/ui/med-dialog.blp:274 msgid "Round Pill" msgstr "Viên thuốc tròn" #: data/ui/med-dialog.blp:290 msgid "Alternative Round Pill" msgstr "Viên tròn thay thế" #: data/ui/med-dialog.blp:306 msgid "Ampoule" msgstr "Thuốc ống tiêm" #: data/ui/med-dialog.blp:322 msgid "Injection" msgstr "Tiêm" #: data/ui/med-dialog.blp:338 msgid "Square Pill" msgstr "Viên thuốc vuông" #: data/ui/med-dialog.blp:354 msgid "Alternative Square Pill" msgstr "Viên thuốc vuông thay thế" #: data/ui/med-dialog.blp:370 msgid "Triangle pill" msgstr "Viên thuốc tam giác" #: data/ui/med-dialog.blp:386 msgid "Alternative Triangle Pill" msgstr "Viên thuốc tam giác thay thế" #: data/ui/med-dialog.blp:402 msgid "Bottle" msgstr "Cái chai" #: data/ui/med-dialog.blp:418 msgid "Drops" msgstr "Giọt" #: data/ui/med-dialog.blp:434 msgid "Potion" msgstr "Phân lượng" #: data/ui/med-dialog.blp:457 msgid "Every Day" msgstr "Mỗi ngày" #: data/ui/med-dialog.blp:473 msgid "Choose Days" msgstr "Chọn các ngày" #: data/ui/med-dialog.blp:572 msgid "Choose Day" msgstr "Chọn ngày" #: data/ui/med-dialog.blp:617 msgid "Change Cycle" msgstr "Thay đổi chu kỳ" #: data/ui/med-dialog.blp:642 msgid "Days Active" msgstr "Số ngày hoạt động" #: data/ui/med-dialog.blp:656 msgid "Days Inactive" msgstr "Số ngày không hoạt động" #. TRANSLATORS: Day in cycle, try to keep it short #: data/ui/med-dialog.blp:671 msgid "Today is Cycle Day…" msgstr "Hôm nay là Ngày chu kỳ…" #: data/ui/med-dialog.blp:694 msgid "Increase Notification Priority" msgstr "Tăng mức độ ưu tiên thông báo" #: data/ui/med-dialog.blp:695 msgid "Show in fullscreen mode or with 'Do Not Disturb' enabled" msgstr "Hiển thị ở chế độ toàn màn hình hoặc bật 'Không làm phiền'" #: data/ui/med-dialog.blp:699 msgid "Recurring Notifications" msgstr "Thông báo định kỳ" #: data/ui/med-dialog.blp:700 msgid "Renotify until it's confirmed or skipped" msgstr "Thông báo lại cho đến khi được xác nhận hoặc bị bỏ qua" #: data/ui/med-dialog.blp:705 msgid "Interval in Minutes" msgstr "Khoảng thời gian tính bằng phút" #: data/ui/med-dialog.blp:718 data/ui/refill-dialog.blp:36 msgid "Inventory" msgstr "Dự trữ" #: data/ui/med-dialog.blp:719 msgid "Manage your stock" msgstr "Quản lý lượng dự trữ của bạn" #: data/ui/med-dialog.blp:725 msgid "Current" msgstr "Hiện tại" #: data/ui/med-dialog.blp:738 msgid "Remind Me At" msgstr "Nhắc tôi lúc" #: data/ui/med-dialog.blp:751 msgid "Refill Amount" msgstr "Số lượng làm đầy" #: data/ui/med-dialog.blp:765 msgid "Set start and end dates" msgstr "Đặt ngày bắt đầu và ngày kết thúc" #: data/ui/med-dialog.blp:785 data/ui/med-dialog.blp:827 #: data/ui/one-time-dialog.blp:243 msgid "Choose Date" msgstr "Chọn ngày" #: data/ui/med-dialog.blp:855 msgid "Mark as Confirmed" msgstr "Đánh dấu là Đã xác nhận" #: data/ui/med-dialog.blp:856 msgid "" "If not manually confirmed or skipped, it will be recorded as confirmed in " "history, reducing stock if enabled" msgstr "" "Nếu không được xác nhận hoặc bỏ qua theo cách thủ công, nó sẽ được ghi lại " "là đã xác nhận trong lịch sử, giảm lượng dự trữ nếu được bật" #: data/ui/one-time-dialog.blp:44 msgid "From Treatment List" msgstr "Từ Danh sách điều trị" #: data/ui/one-time-dialog.blp:182 msgid "Amount" msgstr "Số lượng" #: data/ui/preferences.blp:7 data/ui/window.blp:338 msgid "Preferences" msgstr "Tùy chọn" #: data/ui/preferences.blp:17 msgid "Auto-Start at Login" msgstr "Tự động khởi động khi đăng nhập" #: data/ui/preferences.blp:28 msgid "Auto-Clear History" msgstr "Tự động xóa lịch sử" #: data/ui/preferences.blp:29 msgid "Keeps a maximum of 30 days" msgstr "Giữ tối đa 30 ngày" #: data/ui/preferences.blp:40 msgid "Low Stock Notification" msgstr "Thông báo lượng dự trữ sắp hết" #: data/ui/preferences.blp:41 msgid "Send reminders when treatments are low in stock" msgstr "Gửi lời nhắc khi phương pháp điều trị sắp hết" #: data/ui/preferences.blp:52 msgid "Notification Sound" msgstr "Âm thanh thông báo" #: data/ui/preferences.blp:63 msgid "Notification Buttons" msgstr "Nút thông báo" #: data/ui/preferences.blp:64 msgid "Show or hide confirm/skip" msgstr "Hiển thị hoặc ẩn xác nhận/bỏ qua" #: data/ui/preferences.blp:98 msgid "Export History As" msgstr "Xuất Lịch sử như" #: data/ui/preferences.blp:121 msgid "Export Treatments As" msgstr "Xuất Phương pháp điều trị như" #: data/ui/shortcuts-dialog.blp:8 msgid "Shortcuts" msgstr "Phím tắt" #: data/ui/shortcuts-dialog.blp:11 msgctxt "shortcut window" msgid "Show/Hide 'As Needed'" msgstr "Hiện/Ẩn 'Khi cần thiết'" #: data/ui/shortcuts-dialog.blp:16 msgctxt "shortcut window" msgid "New One-Time Entry" msgstr "Mục nhập một lần mới" #: data/ui/shortcuts-dialog.blp:21 msgctxt "shortcut window" msgid "Add New Treatment" msgstr "Thêm điều trị mới" #: data/ui/shortcuts-dialog.blp:26 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Hiển Thị Phím Tắt" #: data/ui/shortcuts-dialog.blp:31 msgctxt "shortcut window" msgid "Quit" msgstr "Thoát" #: data/ui/window.blp:23 msgid "Show/Hide 'As Needed'" msgstr "Hiện/Ẩn 'Khi cần thiết'" #: data/ui/window.blp:31 msgid "Search" msgstr "Tìm kiếm" #: data/ui/window.blp:39 msgid "Sort Treatments" msgstr "Sắp xếp phương pháp điều trị" #: data/ui/window.blp:48 msgid "Main Menu" msgstr "Menu chính" #: data/ui/window.blp:61 msgid "Search…" msgstr "Tìm kiếm…" #: data/ui/window.blp:71 msgid "Today" msgstr "Hôm nay" #: data/ui/window.blp:117 data/ui/window.blp:210 msgid "Unselect" msgstr "Bỏ chọn" #: data/ui/window.blp:220 msgid "Remove Entries" msgstr "Xóa mục nhập" #: data/ui/window.blp:300 msgid "Name Ascending" msgstr "Tên tăng dần" #: data/ui/window.blp:306 msgid "Remaining Stock (Lowest First)" msgstr "Lượng dự trữ còn lại (Thấp nhất trước)" #: data/ui/window.blp:312 msgid "Remaining Stock (Highest First)" msgstr "Lượng dự trữ còn lại (Cao nhất trước)" #: data/ui/window.blp:318 msgid "As Needed Last" msgstr "Khi cần thiết cuối cùng" #: data/ui/window.blp:324 msgid "Ended Last" msgstr "Đã kết thúc cuối" #: data/ui/window.blp:330 msgid "As Needed/Ended Last" msgstr "Khi cần thiết cuối cùng" #: data/ui/window.blp:343 msgid "Keyboard Shortcuts" msgstr "Phím tắt" #: data/ui/window.blp:348 msgid "About Dosage" msgstr "Giới thiệu về Dosage" #~ msgid "Empty Treatments" #~ msgstr "Chưa có phương pháp đIều trị" #~ msgid "Empty History" #~ msgstr "Lịch sử trống" #~ msgid "No Treatments Added" #~ msgstr "Chưa thêm phương pháp điều trị nào" #~ msgctxt "shortcut window" #~ msgid "General" #~ msgstr "Tổng Quan" #~ msgctxt "shortcut window" #~ msgid "Preferences" #~ msgstr "Tùy Chọn" #~ msgid "After meal" #~ msgstr "Sau bữa ăn" #~ msgid "Refill Stock" #~ msgstr "Làm Đầy Lượng Dự Trữ" #~ msgid "Low Stock" #~ msgstr "Ít Lượng Dự Trữ" diegopvlk-Dosage-bd9126a/po/zh_HK.po000066400000000000000000000520651514145341100173000ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) 2023 Diego Povliuk # This file is distributed under the license GPLv3-or-later. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: io.github.diegopvlk.Dosage\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-12-19 16:12-0300\n" "PO-Revision-Date: 2025-03-14 05:05+0000\n" "Last-Translator: Chung-Wei Chung \n" "Language-Team: Chinese (Traditional Han script, Hong Kong) \n" "Language: zh_HK\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Weblate 5.11-dev\n" #. TRANSLATORS: App name, translate to your language and follow the capitalization #: data/io.github.diegopvlk.Dosage.appdata.xml.in:20 #: data/io.github.diegopvlk.Dosage.desktop.in:3 #: src/utils/getTreatmentsExportFile.js:173 src/utils/saveFiles.js:22 #: src/utils/saveFiles.js:44 src/main.js:60 src/window.js:1060 #: data/ui/window.blp:6 msgid "Dosage" msgstr "藥記" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:21 msgid "Keep track of your treatments" msgstr "持續追蹤您的處方箋" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:24 msgid "" "Easily manage and track treatments with Dosage: notifications, history, " "multiple doses, flexible frequency, customization, stock monitoring, and " "duration control" msgstr "" "使用「藥記」來輕鬆的管理和追蹤處方箋:主動通知、歷史記錄、多種劑量、頻率彈" "性、自定性高、庫存監控和控管療程" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:25 msgid "Features:" msgstr "功能如下:" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:27 msgid "Notifications — Get reminders at the right time" msgstr "主動通知 — 在對的時間點接收通知" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:28 msgid "History — See which medications you took, skipped or missed" msgstr "歷史記錄 — 查看您吃過、跳過或錯過了什麼藥" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:29 msgid "Dosage management — Multiple doses with different times" msgstr "劑量管理 — 多種劑量與多種時間點" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:30 msgid "" "Frequency modes — Every day, specific days, cycle or just when necessary" msgstr "頻率模式 — 每天、特定幾天、一個週期或按需服用" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:31 msgid "Color and icon — Give a shape for your treatment" msgstr "顏色和圖標 — 自訂您的處方箋" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:32 msgid "Inventory tracking — Monitor your stock and get reminded when it's low" msgstr "庫存監測 — 追蹤藥品庫存,低於安全存量時提醒補充" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:33 msgid "Duration — Define the start and end dates" msgstr "療程時長 — 設定開始與結束日期" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:44 msgid "Dosage today window in light theme" msgstr "「藥記」在亮色模式下的今日頁面" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:49 msgid "Dosage preferences window in light theme" msgstr "「藥記」在亮色模式下的偏好設定" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:54 msgid "Dosage edit treatment window in light theme" msgstr "「藥記」在亮色模式下的編輯處方箋視窗" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:59 msgid "Dosage today window in dark theme" msgstr "「藥記」在暗色模式下的今日視窗" #. TRANSLATORS: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/io.github.diegopvlk.Dosage.desktop.in:10 msgid "Medication;Tracker;Reminder;Today;Treatments;Pill;Drug;Remedy;" msgstr "藥劑;追蹤器;提醒;每日;處方箋;藥丸;藥品;療法;" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:232 msgid "Date" msgstr "日期" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:199 msgid "Time" msgstr "時間" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/med-dialog.blp:61 data/ui/one-time-dialog.blp:49 msgid "Name" msgstr "名稱" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:183 msgid "Dose" msgstr "劑量" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 msgid "Status" msgstr "狀態" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 msgid "Time Confirmed" msgstr "確認時間" #: src/utils/getHistoryExportFile.js:38 src/utils/getHistoryExportFile.js:117 #: src/editHistDialog.js:68 src/historyFactory.js:186 msgid "Missed" msgstr "錯過" #: src/utils/getHistoryExportFile.js:41 src/utils/getHistoryExportFile.js:121 #: src/historyFactory.js:183 data/ui/edit-hist-dialog.blp:111 msgid "Skipped" msgstr "跳過" #: src/utils/getHistoryExportFile.js:44 src/utils/getHistoryExportFile.js:55 #: src/utils/getHistoryExportFile.js:125 src/utils/getHistoryExportFile.js:138 #: src/editHistDialog.js:73 src/historyFactory.js:190 #: data/ui/edit-hist-dialog.blp:116 msgid "Confirmed" msgstr "已服用" #: src/utils/getHistoryExportFile.js:52 src/utils/getHistoryExportFile.js:134 #: src/editHistDialog.js:56 src/historyFactory.js:178 msgid "Auto-Confirmed" msgstr "自動確認" #: src/utils/getHistoryExportFile.js:55 src/utils/getHistoryExportFile.js:138 #: src/editHistDialog.js:74 msgid "Time Unknown" msgstr "時間未知" #. TRANSLATORS: Context: 1 Pill at 19:00 #: src/utils/getTreatmentsExportFile.js:69 #, fuzzy #| msgid "Date" msgid "at" msgstr "日期" #: src/utils/getTreatmentsExportFile.js:89 data/ui/med-dialog.blp:443 msgid "Notes" msgstr "註記" #: src/utils/getTreatmentsExportFile.js:96 src/utils/locale.js:37 #: src/treatmentsFactory.js:268 msgid "Daily" msgstr "每天" #: src/utils/getTreatmentsExportFile.js:102 src/medDialog.js:428 #: data/ui/med-dialog.blp:459 msgid "Day of Month" msgstr "每月第幾天" #. TRANSLATORS: Context: 2 day(s) on, 1 day(s) off #: src/utils/getTreatmentsExportFile.js:109 msgid "day(s) on" msgstr "" #. TRANSLATORS: Context: 2 day(s) on, 1 day(s) off #: src/utils/getTreatmentsExportFile.js:111 msgid "day(s) off" msgstr "" #: src/utils/getTreatmentsExportFile.js:122 src/todayFactory.js:41 #: src/treatmentsFactory.js:298 data/ui/med-dialog.blp:461 msgid "As Needed" msgstr "必要時" #: src/utils/getTreatmentsExportFile.js:132 data/ui/med-dialog.blp:764 msgid "Duration" msgstr "期間" #: src/utils/getTreatmentsExportFile.js:135 #, fuzzy #| msgid "Starts On" msgid "Started on" msgstr "開始日期" #: src/utils/getTreatmentsExportFile.js:136 data/ui/med-dialog.blp:775 #, fuzzy #| msgid "Starts On" msgid "Start" msgstr "開始日期" #: src/utils/getTreatmentsExportFile.js:138 src/treatmentsFactory.js:256 msgid "Ended on" msgstr "結束於" #: src/utils/getTreatmentsExportFile.js:138 data/ui/med-dialog.blp:817 #, fuzzy #| msgid "Ends On" msgid "End" msgstr "結束日期" #: src/utils/getTreatmentsExportFile.js:173 src/utils/saveFiles.js:44 #: data/ui/window.blp:234 msgid "Treatments" msgstr "處方箋" #: src/utils/getTreatmentsExportFile.js:184 #, fuzzy #| msgctxt "shortcut window" #| msgid "General" msgid "Generated on" msgstr "一般" #: src/utils/getTreatmentsExportFile.js:187 msgid "Ongoing" msgstr "" #: src/utils/getTreatmentsExportFile.js:188 msgid "Non-scheduled" msgstr "" #: src/utils/getTreatmentsExportFile.js:189 msgid "Finished" msgstr "" #: src/utils/locale.js:33 msgid "Weekends" msgstr "週末" #: src/utils/locale.js:35 msgid "Weekdays" msgstr "平日" #: src/utils/saveFiles.js:22 data/ui/window.blp:156 msgid "History" msgstr "歷史記錄" #: src/editHistDialog.js:60 src/editHistDialog.js:89 src/editHistDialog.js:110 msgid "Confirmed At" msgstr "何時確認" #: src/editHistDialog.js:64 src/editHistDialog.js:114 msgid "Skipped At" msgstr "何時跳過" #: src/historyFactory.js:47 msgid "Select to be Removed" msgstr "勾選以刪除" #. TRANSLATORS: "Your Name " #: src/main.js:69 msgid "translator-credits" msgstr "Chung-Wei Chung " #: src/main.js:73 msgid "Thanks to These Projects!" msgstr "謝謝這些專案!" #: src/medDialog.js:99 msgid "Edit Treatment" msgstr "編輯處方箋" #: src/medDialog.js:100 data/ui/edit-hist-dialog.blp:30 #: data/ui/preferences.blp:112 data/ui/preferences.blp:132 #: data/ui/refill-dialog.blp:67 msgid "Save" msgstr "儲存" #: src/medDialog.js:114 msgid "Copy" msgstr "複製" #: src/medDialog.js:217 msgid "Add Dose" msgstr "增加劑量" #: src/medDialog.js:419 msgid "Choose" msgstr "選擇" #: src/medDialog.js:429 src/treatmentsFactory.js:274 msgid "Day" msgstr "天" #: src/medDialog.js:456 data/ui/med-dialog.blp:458 msgid "Specific Days" msgstr "特定幾天" #: src/medDialog.js:463 src/treatmentsFactory.js:295 data/ui/med-dialog.blp:460 msgid "Cycle" msgstr "週期" #: src/medDialog.js:467 data/ui/med-dialog.blp:452 msgid "Frequency" msgstr "頻率" #: src/medDialog.js:500 msgid "Empty Name" msgstr "沒有輸入名稱" #: src/medDialog.js:506 msgid "Empty Unit" msgstr "沒有輸入單位" #: src/medDialog.js:513 msgid "Choose at Least One Day" msgstr "至少要選擇一天" #: src/medDialog.js:527 src/oneTimeDialog.js:187 msgid "Name Already on Treatment List" msgstr "名稱已經存在處方箋清單" #: src/medDialog.js:542 msgid "Duplicated Time" msgstr "時間重複" #: src/medDialog.js:582 msgid "Are You Sure?" msgstr "您確定嗎?" #: src/medDialog.js:583 msgid "will be deleted" msgstr "將被刪除" #: src/medDialog.js:586 data/ui/edit-hist-dialog.blp:18 #: data/ui/med-dialog.blp:19 msgid "Cancel" msgstr "取消" #: src/medDialog.js:587 src/treatmentsFactory.js:128 data/ui/med-dialog.blp:865 msgid "Delete" msgstr "刪除" #: src/oneTimeDialog.js:110 msgid "New" msgstr "新" #: src/oneTimeDialog.js:121 data/ui/med-dialog.blp:189 #: data/ui/one-time-dialog.blp:178 msgid "Pill(s)" msgstr "顆" #: src/prefsDialog.js:63 msgid "Accept to allow running in the background and receive notifications" msgstr "接受已允許在背景中執行和接收通知" #: src/prefsDialog.js:74 src/window.js:259 msgid "An Issue Has Occurred" msgstr "發生問題" #: src/prefsDialog.js:77 src/window.js:267 src/window.js:289 src/window.js:311 #: src/window.js:329 msgid "Close" msgstr "關閉" #: src/timeDoseRow.js:34 msgid "Remove Dose" msgstr "刪除劑量" #: src/timeDoseRow.js:40 data/ui/edit-hist-dialog.blp:90 #: data/ui/one-time-dialog.blp:210 msgid "Change Time" msgstr "更改時間" #: src/todayFactory.js:134 msgid "Change Dose" msgstr "改變劑量" #: src/treatmentsFactory.js:96 src/treatmentsFactory.js:126 #: data/ui/refill-dialog.blp:7 msgid "Refill" msgstr "補充" #: src/treatmentsFactory.js:125 msgid "Edit" msgstr "編輯" #: src/treatmentsFactory.js:127 msgid "Duplicate" msgstr "複製" #: src/treatmentsFactory.js:146 msgid "Options" msgstr "選項" #. TRANSLATORS: keep the %d it's where the number goes #: src/treatmentsFactory.js:244 #, javascript-format msgid "%d Remaining" msgstr "%d 剩餘數量" #. TRANSLATORS: label for when duration is enabled #: src/treatmentsFactory.js:254 msgid "Starts on" msgstr "開始日期" #: src/treatmentsFactory.js:255 msgid "Until" msgstr "直到" #: src/treatmentsFactory.js:283 src/treatmentsFactory.js:286 msgid "Next Dose" msgstr "下一劑量" #: src/window.js:173 src/window.js:943 msgid "Reminder" msgstr "提醒" #. TRANSLATORS: Notification text for when the inventory is low #: src/window.js:175 msgid "You have treatments low in stock" msgstr "您的處方箋庫存偏低" #: src/window.js:492 msgid "Show All" msgstr "顯示全部" #: src/window.js:515 msgid "Show Less" msgstr "顯示較少" #: src/window.js:648 msgid "No Results Found" msgstr "沒有結果" #: src/window.js:648 src/window.js:1517 #, fuzzy #| msgid "History" msgid "No History" msgstr "歷史記錄" #: src/window.js:818 data/ui/window.blp:260 #, fuzzy #| msgid "Treatments" msgid "No Treatments" msgstr "處方箋" #: src/window.js:818 msgid "All Done for Today" msgstr "今天的藥物已服用完畢" #: src/window.js:906 src/window.js:1090 data/ui/one-time-dialog.blp:285 #: data/ui/preferences.blp:73 msgid "Confirm" msgstr "確認" #: src/window.js:906 msgid "Confirm All" msgstr "確認全部" #: src/window.js:907 data/ui/preferences.blp:84 data/ui/window.blp:146 msgid "Skip" msgstr "跳過" #: src/window.js:907 msgid "Skip All" msgstr "跳過全部" #. TRANSLATORS: keep the %d it's where the number goes #: src/window.js:938 #, javascript-format msgid "and %d more" msgstr "增加 %d 更多" #: src/window.js:1090 data/ui/one-time-dialog.blp:7 data/ui/window.blp:133 msgid "One-Time Entry" msgstr "單次輸入" #: src/window.js:1295 data/ui/window.blp:353 msgid "Quit" msgstr "離開" #: data/ui/edit-hist-dialog.blp:7 msgid "Edit Entry" msgstr "編輯項目" #: data/ui/med-dialog.blp:7 msgid "New Treatment" msgstr "新處方箋" #: data/ui/med-dialog.blp:31 data/ui/window.blp:283 msgid "Add" msgstr "新增" #: data/ui/med-dialog.blp:69 data/ui/one-time-dialog.blp:58 msgid "Color" msgstr "顏色" #. TRANSLATORS: Tooltip for the colors (from Default until Purple) #: data/ui/med-dialog.blp:94 data/ui/one-time-dialog.blp:83 msgid "Default" msgstr "預設" #: data/ui/med-dialog.blp:106 data/ui/one-time-dialog.blp:95 msgid "Red" msgstr "紅色" #: data/ui/med-dialog.blp:118 data/ui/one-time-dialog.blp:107 msgid "Orange" msgstr "橘色" #: data/ui/med-dialog.blp:130 data/ui/one-time-dialog.blp:119 msgid "Yellow" msgstr "黃色" #: data/ui/med-dialog.blp:142 data/ui/one-time-dialog.blp:131 msgid "Green" msgstr "綠色" #: data/ui/med-dialog.blp:154 data/ui/one-time-dialog.blp:143 msgid "Cyan" msgstr "青色" #: data/ui/med-dialog.blp:166 data/ui/one-time-dialog.blp:155 msgid "Blue" msgstr "藍色" #: data/ui/med-dialog.blp:178 data/ui/one-time-dialog.blp:167 msgid "Purple" msgstr "紫色" #: data/ui/med-dialog.blp:188 data/ui/one-time-dialog.blp:177 msgid "Unit" msgstr "單位" #: data/ui/med-dialog.blp:197 msgid "Icon" msgstr "圖示" #. TRANSLATORS: Tooltip for the icons (from Pill until Potion) #: data/ui/med-dialog.blp:226 msgid "Pill" msgstr "藥丸" #: data/ui/med-dialog.blp:242 msgid "Alternative Pill" msgstr "替代藥丸" #: data/ui/med-dialog.blp:258 msgid "Capsule" msgstr "膠囊" #: data/ui/med-dialog.blp:274 msgid "Round Pill" msgstr "圓形藥丸" #: data/ui/med-dialog.blp:290 msgid "Alternative Round Pill" msgstr "替代圓形藥丸" #: data/ui/med-dialog.blp:306 msgid "Ampoule" msgstr "安瓿" #: data/ui/med-dialog.blp:322 msgid "Injection" msgstr "注射" #: data/ui/med-dialog.blp:338 msgid "Square Pill" msgstr "方形藥丸" #: data/ui/med-dialog.blp:354 msgid "Alternative Square Pill" msgstr "替代方形藥丸" #: data/ui/med-dialog.blp:370 msgid "Triangle pill" msgstr "三角形藥丸" #: data/ui/med-dialog.blp:386 msgid "Alternative Triangle Pill" msgstr "替代三角形藥丸" #: data/ui/med-dialog.blp:402 msgid "Bottle" msgstr "藥瓶" #: data/ui/med-dialog.blp:418 msgid "Drops" msgstr "點滴" #: data/ui/med-dialog.blp:434 msgid "Potion" msgstr "藥水" #: data/ui/med-dialog.blp:457 msgid "Every Day" msgstr "每天" #: data/ui/med-dialog.blp:473 msgid "Choose Days" msgstr "選擇星期" #: data/ui/med-dialog.blp:572 msgid "Choose Day" msgstr "選擇天數" #: data/ui/med-dialog.blp:617 msgid "Change Cycle" msgstr "更改週期" #: data/ui/med-dialog.blp:642 msgid "Days Active" msgstr "用藥天數" #: data/ui/med-dialog.blp:656 msgid "Days Inactive" msgstr "停藥天數" #. TRANSLATORS: Day in cycle, try to keep it short #: data/ui/med-dialog.blp:671 msgid "Today is Cycle Day…" msgstr "今天是第…" #: data/ui/med-dialog.blp:694 msgid "Increase Notification Priority" msgstr "提升通知優先權" #: data/ui/med-dialog.blp:695 msgid "Show in fullscreen mode or with 'Do Not Disturb' enabled" msgstr "在全螢幕模式下顯示或是「禁止打擾」模式啟動時" #: data/ui/med-dialog.blp:699 msgid "Recurring Notifications" msgstr "反復通知" #: data/ui/med-dialog.blp:700 msgid "Renotify until it's confirmed or skipped" msgstr "重複提醒直到已確認或是跳過" #: data/ui/med-dialog.blp:705 msgid "Interval in Minutes" msgstr "幾分鐘提醒一次" #: data/ui/med-dialog.blp:718 data/ui/refill-dialog.blp:36 msgid "Inventory" msgstr "庫存" #: data/ui/med-dialog.blp:719 msgid "Manage your stock" msgstr "管理藥品庫存" #: data/ui/med-dialog.blp:725 msgid "Current" msgstr "現有" #: data/ui/med-dialog.blp:738 msgid "Remind Me At" msgstr "低於多少提醒" #: data/ui/med-dialog.blp:751 msgid "Refill Amount" msgstr "補充量" #: data/ui/med-dialog.blp:765 msgid "Set start and end dates" msgstr "設定開始和結束日期" #: data/ui/med-dialog.blp:785 data/ui/med-dialog.blp:827 #: data/ui/one-time-dialog.blp:243 msgid "Choose Date" msgstr "選擇日期" #: data/ui/med-dialog.blp:855 msgid "Mark as Confirmed" msgstr "標記爲已確認" #: data/ui/med-dialog.blp:856 msgid "" "If not manually confirmed or skipped, it will be recorded as confirmed in " "history, reducing stock if enabled" msgstr "如果沒有手動點選已確認或是跳過,將會在歷史記錄列為已確認,庫存也會減少" #: data/ui/one-time-dialog.blp:44 msgid "From Treatment List" msgstr "從處方箋挑選" #: data/ui/one-time-dialog.blp:182 msgid "Amount" msgstr "數量" #: data/ui/preferences.blp:7 data/ui/window.blp:338 msgid "Preferences" msgstr "偏好設定" #: data/ui/preferences.blp:17 msgid "Auto-Start at Login" msgstr "登入後自動啟動" #: data/ui/preferences.blp:28 msgid "Auto-Clear History" msgstr "自動清除歷史記錄" #: data/ui/preferences.blp:29 msgid "Keeps a maximum of 30 days" msgstr "只保留30天內的紀錄" #: data/ui/preferences.blp:40 msgid "Low Stock Notification" msgstr "低於存量通知" #: data/ui/preferences.blp:41 msgid "Send reminders when treatments are low in stock" msgstr "當處方箋庫存低於安全存量時通知" #: data/ui/preferences.blp:52 msgid "Notification Sound" msgstr "通知音效" #: data/ui/preferences.blp:63 msgid "Notification Buttons" msgstr "通知按鈕" #: data/ui/preferences.blp:64 msgid "Show or hide confirm/skip" msgstr "顯示或隱藏確認/跳過" #: data/ui/preferences.blp:98 #, fuzzy #| msgid "Export History as CSV" msgid "Export History As" msgstr "將歷史記錄輸出爲 CSV" #: data/ui/preferences.blp:121 #, fuzzy #| msgid "Empty Treatments" msgid "Export Treatments As" msgstr "沒有治療記錄" #: data/ui/shortcuts-dialog.blp:8 #, fuzzy #| msgctxt "shortcut window" #| msgid "Show Shortcuts" msgid "Shortcuts" msgstr "顯示捷徑" #: data/ui/shortcuts-dialog.blp:11 #, fuzzy #| msgid "Show/Hide 'As Needed'" msgctxt "shortcut window" msgid "Show/Hide 'As Needed'" msgstr "顯示/隱藏「按需服用」" #: data/ui/shortcuts-dialog.blp:16 #, fuzzy #| msgid "One-Time Entry" msgctxt "shortcut window" msgid "New One-Time Entry" msgstr "單次輸入" #: data/ui/shortcuts-dialog.blp:21 #, fuzzy #| msgid "New Treatment" msgctxt "shortcut window" msgid "Add New Treatment" msgstr "新處方箋" #: data/ui/shortcuts-dialog.blp:26 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "顯示捷徑" #: data/ui/shortcuts-dialog.blp:31 msgctxt "shortcut window" msgid "Quit" msgstr "離開" #: data/ui/window.blp:23 msgid "Show/Hide 'As Needed'" msgstr "顯示/隱藏「按需服用」" #: data/ui/window.blp:31 msgid "Search" msgstr "搜尋" #: data/ui/window.blp:39 #, fuzzy #| msgid "Treatments" msgid "Sort Treatments" msgstr "處方箋" #: data/ui/window.blp:48 msgid "Main Menu" msgstr "主選單" #: data/ui/window.blp:61 msgid "Search…" msgstr "搜尋…" #: data/ui/window.blp:71 msgid "Today" msgstr "今天" #: data/ui/window.blp:117 data/ui/window.blp:210 msgid "Unselect" msgstr "取消選取" #: data/ui/window.blp:220 msgid "Remove Entries" msgstr "刪除項目" #: data/ui/window.blp:300 msgid "Name Ascending" msgstr "" #: data/ui/window.blp:306 msgid "Remaining Stock (Lowest First)" msgstr "" #: data/ui/window.blp:312 msgid "Remaining Stock (Highest First)" msgstr "" #: data/ui/window.blp:318 #, fuzzy #| msgid "As Needed" msgid "As Needed Last" msgstr "必要時" #: data/ui/window.blp:324 #, fuzzy #| msgid "Ended on" msgid "Ended Last" msgstr "結束於" #: data/ui/window.blp:330 #, fuzzy #| msgid "As Needed" msgid "As Needed/Ended Last" msgstr "必要時" #: data/ui/window.blp:343 #, fuzzy #| msgctxt "shortcut window" #| msgid "Show Shortcuts" msgid "Keyboard Shortcuts" msgstr "顯示捷徑" #: data/ui/window.blp:348 msgid "About Dosage" msgstr "關於藥記" #~ msgid "Empty Treatments" #~ msgstr "沒有治療記錄" #~ msgid "Empty History" #~ msgstr "清空歷史記錄" #~ msgid "No Treatments Added" #~ msgstr "還沒有加入處方箋" #~ msgctxt "shortcut window" #~ msgid "General" #~ msgstr "一般" #~ msgctxt "shortcut window" #~ msgid "Preferences" #~ msgstr "偏好設定" #~ msgid "After meal" #~ msgstr "飯後服用" #~ msgid "Refill Stock" #~ msgstr "補充庫存" #~ msgid "Low Stock" #~ msgstr "低庫存" diegopvlk-Dosage-bd9126a/po/zh_TW.po000066400000000000000000000521201514145341100173200ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) 2023 Diego Povliuk # This file is distributed under the license GPLv3-or-later. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: io.github.diegopvlk.Dosage\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-12-19 16:12-0300\n" "PO-Revision-Date: 2025-03-17 10:10+0000\n" "Last-Translator: Chung-Wei Chung \n" "Language-Team: Chinese (Traditional Han script) \n" "Language: zh_TW\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Weblate 5.11-dev\n" #. TRANSLATORS: App name, translate to your language and follow the capitalization #: data/io.github.diegopvlk.Dosage.appdata.xml.in:20 #: data/io.github.diegopvlk.Dosage.desktop.in:3 #: src/utils/getTreatmentsExportFile.js:173 src/utils/saveFiles.js:22 #: src/utils/saveFiles.js:44 src/main.js:60 src/window.js:1060 #: data/ui/window.blp:6 msgid "Dosage" msgstr "藥記" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:21 msgid "Keep track of your treatments" msgstr "持續追蹤您的處方箋" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:24 msgid "" "Easily manage and track treatments with Dosage: notifications, history, " "multiple doses, flexible frequency, customization, stock monitoring, and " "duration control" msgstr "" "使用「藥記」來輕鬆的管理和追蹤處方箋:主動通知、歷史記錄、多種劑量、頻率彈" "性、自定性高、庫存監控和控管療程" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:25 msgid "Features:" msgstr "功能如下:" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:27 msgid "Notifications — Get reminders at the right time" msgstr "主動通知 — 在對的時間點接收通知" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:28 msgid "History — See which medications you took, skipped or missed" msgstr "歷史記錄 — 查看您吃過、跳過或錯過了什麼藥" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:29 msgid "Dosage management — Multiple doses with different times" msgstr "劑量管理 — 多種劑量與多種時間點" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:30 msgid "" "Frequency modes — Every day, specific days, cycle or just when necessary" msgstr "頻率模式 — 每天、特定幾天、一個週期或按需服用" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:31 msgid "Color and icon — Give a shape for your treatment" msgstr "顏色和圖標 — 自訂您的處方箋" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:32 msgid "Inventory tracking — Monitor your stock and get reminded when it's low" msgstr "庫存監測 — 追蹤藥品庫存,低於安全存量時提醒補充" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:33 msgid "Duration — Define the start and end dates" msgstr "療程時長 — 設定開始與結束日期" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:44 msgid "Dosage today window in light theme" msgstr "「藥記」在亮色模式下的今日頁面" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:49 msgid "Dosage preferences window in light theme" msgstr "「藥記」在亮色模式下的偏好設定" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:54 msgid "Dosage edit treatment window in light theme" msgstr "「藥記」在亮色模式下的編輯處方箋視窗" #: data/io.github.diegopvlk.Dosage.appdata.xml.in:59 msgid "Dosage today window in dark theme" msgstr "「藥記」在暗色模式下的今日頁面" #. TRANSLATORS: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/io.github.diegopvlk.Dosage.desktop.in:10 msgid "Medication;Tracker;Reminder;Today;Treatments;Pill;Drug;Remedy;" msgstr "藥劑;追蹤器;提醒;每日;處方箋;藥丸;藥品;療法;" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:232 msgid "Date" msgstr "日期" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:199 msgid "Time" msgstr "時間" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/med-dialog.blp:61 data/ui/one-time-dialog.blp:49 msgid "Name" msgstr "名稱" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 #: data/ui/one-time-dialog.blp:183 msgid "Dose" msgstr "劑量" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 msgid "Status" msgstr "狀態" #: src/utils/getHistoryExportFile.js:10 src/utils/getHistoryExportFile.js:81 msgid "Time Confirmed" msgstr "確認時間" #: src/utils/getHistoryExportFile.js:38 src/utils/getHistoryExportFile.js:117 #: src/editHistDialog.js:68 src/historyFactory.js:186 msgid "Missed" msgstr "錯過" #: src/utils/getHistoryExportFile.js:41 src/utils/getHistoryExportFile.js:121 #: src/historyFactory.js:183 data/ui/edit-hist-dialog.blp:111 msgid "Skipped" msgstr "跳過" #: src/utils/getHistoryExportFile.js:44 src/utils/getHistoryExportFile.js:55 #: src/utils/getHistoryExportFile.js:125 src/utils/getHistoryExportFile.js:138 #: src/editHistDialog.js:73 src/historyFactory.js:190 #: data/ui/edit-hist-dialog.blp:116 msgid "Confirmed" msgstr "已確認" #: src/utils/getHistoryExportFile.js:52 src/utils/getHistoryExportFile.js:134 #: src/editHistDialog.js:56 src/historyFactory.js:178 msgid "Auto-Confirmed" msgstr "自動確認" #: src/utils/getHistoryExportFile.js:55 src/utils/getHistoryExportFile.js:138 #: src/editHistDialog.js:74 msgid "Time Unknown" msgstr "時間未知" #. TRANSLATORS: Context: 1 Pill at 19:00 #: src/utils/getTreatmentsExportFile.js:69 #, fuzzy #| msgid "Date" msgid "at" msgstr "日期" #: src/utils/getTreatmentsExportFile.js:89 data/ui/med-dialog.blp:443 msgid "Notes" msgstr "註記" #: src/utils/getTreatmentsExportFile.js:96 src/utils/locale.js:37 #: src/treatmentsFactory.js:268 msgid "Daily" msgstr "每天" #: src/utils/getTreatmentsExportFile.js:102 src/medDialog.js:428 #: data/ui/med-dialog.blp:459 msgid "Day of Month" msgstr "每月第幾天" #. TRANSLATORS: Context: 2 day(s) on, 1 day(s) off #: src/utils/getTreatmentsExportFile.js:109 msgid "day(s) on" msgstr "" #. TRANSLATORS: Context: 2 day(s) on, 1 day(s) off #: src/utils/getTreatmentsExportFile.js:111 msgid "day(s) off" msgstr "" #: src/utils/getTreatmentsExportFile.js:122 src/todayFactory.js:41 #: src/treatmentsFactory.js:298 data/ui/med-dialog.blp:461 msgid "As Needed" msgstr "按需服用" #: src/utils/getTreatmentsExportFile.js:132 data/ui/med-dialog.blp:764 msgid "Duration" msgstr "期間" #: src/utils/getTreatmentsExportFile.js:135 #, fuzzy #| msgid "Starts On" msgid "Started on" msgstr "開始日期" #: src/utils/getTreatmentsExportFile.js:136 data/ui/med-dialog.blp:775 #, fuzzy #| msgid "Starts On" msgid "Start" msgstr "開始日期" #: src/utils/getTreatmentsExportFile.js:138 src/treatmentsFactory.js:256 msgid "Ended on" msgstr "結束於" #: src/utils/getTreatmentsExportFile.js:138 data/ui/med-dialog.blp:817 #, fuzzy #| msgid "Ends On" msgid "End" msgstr "結束日期" #: src/utils/getTreatmentsExportFile.js:173 src/utils/saveFiles.js:44 #: data/ui/window.blp:234 msgid "Treatments" msgstr "處方箋" #: src/utils/getTreatmentsExportFile.js:184 #, fuzzy #| msgctxt "shortcut window" #| msgid "General" msgid "Generated on" msgstr "一般" #: src/utils/getTreatmentsExportFile.js:187 msgid "Ongoing" msgstr "" #: src/utils/getTreatmentsExportFile.js:188 msgid "Non-scheduled" msgstr "" #: src/utils/getTreatmentsExportFile.js:189 msgid "Finished" msgstr "" #: src/utils/locale.js:33 msgid "Weekends" msgstr "週末" #: src/utils/locale.js:35 msgid "Weekdays" msgstr "平日" #: src/utils/saveFiles.js:22 data/ui/window.blp:156 msgid "History" msgstr "歷史記錄" #: src/editHistDialog.js:60 src/editHistDialog.js:89 src/editHistDialog.js:110 msgid "Confirmed At" msgstr "何時確認" #: src/editHistDialog.js:64 src/editHistDialog.js:114 msgid "Skipped At" msgstr "何時跳過" #: src/historyFactory.js:47 msgid "Select to be Removed" msgstr "勾選以刪除" #. TRANSLATORS: "Your Name " #: src/main.js:69 msgid "translator-credits" msgstr "Chung-Wei Chung " #: src/main.js:73 msgid "Thanks to These Projects!" msgstr "謝謝這些專案!" #: src/medDialog.js:99 msgid "Edit Treatment" msgstr "編輯處方箋" #: src/medDialog.js:100 data/ui/edit-hist-dialog.blp:30 #: data/ui/preferences.blp:112 data/ui/preferences.blp:132 #: data/ui/refill-dialog.blp:67 msgid "Save" msgstr "儲存" #: src/medDialog.js:114 msgid "Copy" msgstr "複製" #: src/medDialog.js:217 msgid "Add Dose" msgstr "增加劑量" #: src/medDialog.js:419 msgid "Choose" msgstr "選擇" #: src/medDialog.js:429 src/treatmentsFactory.js:274 msgid "Day" msgstr "天" #: src/medDialog.js:456 data/ui/med-dialog.blp:458 msgid "Specific Days" msgstr "特定幾天" #: src/medDialog.js:463 src/treatmentsFactory.js:295 data/ui/med-dialog.blp:460 msgid "Cycle" msgstr "週期" #: src/medDialog.js:467 data/ui/med-dialog.blp:452 msgid "Frequency" msgstr "頻率" #: src/medDialog.js:500 msgid "Empty Name" msgstr "沒有輸入名稱" #: src/medDialog.js:506 msgid "Empty Unit" msgstr "沒有輸入單位" #: src/medDialog.js:513 msgid "Choose at Least One Day" msgstr "至少要選擇一天" #: src/medDialog.js:527 src/oneTimeDialog.js:187 msgid "Name Already on Treatment List" msgstr "名稱已經存在處方箋清單" #: src/medDialog.js:542 msgid "Duplicated Time" msgstr "時間重複" #: src/medDialog.js:582 msgid "Are You Sure?" msgstr "您確定嗎?" #: src/medDialog.js:583 msgid "will be deleted" msgstr "將被刪除" #: src/medDialog.js:586 data/ui/edit-hist-dialog.blp:18 #: data/ui/med-dialog.blp:19 msgid "Cancel" msgstr "取消" #: src/medDialog.js:587 src/treatmentsFactory.js:128 data/ui/med-dialog.blp:865 msgid "Delete" msgstr "刪除" #: src/oneTimeDialog.js:110 msgid "New" msgstr "新" #: src/oneTimeDialog.js:121 data/ui/med-dialog.blp:189 #: data/ui/one-time-dialog.blp:178 msgid "Pill(s)" msgstr "顆" #: src/prefsDialog.js:63 msgid "Accept to allow running in the background and receive notifications" msgstr "接受已允許在背景中執行和接收通知" #: src/prefsDialog.js:74 src/window.js:259 msgid "An Issue Has Occurred" msgstr "發生問題" #: src/prefsDialog.js:77 src/window.js:267 src/window.js:289 src/window.js:311 #: src/window.js:329 msgid "Close" msgstr "關閉" #: src/timeDoseRow.js:34 msgid "Remove Dose" msgstr "刪除劑量" #: src/timeDoseRow.js:40 data/ui/edit-hist-dialog.blp:90 #: data/ui/one-time-dialog.blp:210 msgid "Change Time" msgstr "更改時間" #: src/todayFactory.js:134 #, fuzzy #| msgid "Change dose" msgid "Change Dose" msgstr "改變劑量" #: src/treatmentsFactory.js:96 src/treatmentsFactory.js:126 #: data/ui/refill-dialog.blp:7 msgid "Refill" msgstr "補充" #: src/treatmentsFactory.js:125 msgid "Edit" msgstr "編輯" #: src/treatmentsFactory.js:127 msgid "Duplicate" msgstr "複製" #: src/treatmentsFactory.js:146 msgid "Options" msgstr "選項" #. TRANSLATORS: keep the %d it's where the number goes #: src/treatmentsFactory.js:244 #, javascript-format msgid "%d Remaining" msgstr "%d 剩餘數量" #. TRANSLATORS: label for when duration is enabled #: src/treatmentsFactory.js:254 msgid "Starts on" msgstr "開始日期" #: src/treatmentsFactory.js:255 msgid "Until" msgstr "直到" #: src/treatmentsFactory.js:283 src/treatmentsFactory.js:286 msgid "Next Dose" msgstr "下一劑量" #: src/window.js:173 src/window.js:943 msgid "Reminder" msgstr "提醒" #. TRANSLATORS: Notification text for when the inventory is low #: src/window.js:175 msgid "You have treatments low in stock" msgstr "您的處方箋庫存偏低" #: src/window.js:492 msgid "Show All" msgstr "顯示全部" #: src/window.js:515 msgid "Show Less" msgstr "顯示較少" #: src/window.js:648 msgid "No Results Found" msgstr "沒有結果" #: src/window.js:648 src/window.js:1517 #, fuzzy #| msgid "History" msgid "No History" msgstr "歷史記錄" #: src/window.js:818 data/ui/window.blp:260 #, fuzzy #| msgid "Treatments" msgid "No Treatments" msgstr "處方箋" #: src/window.js:818 msgid "All Done for Today" msgstr "今天的藥物已服用完畢" #: src/window.js:906 src/window.js:1090 data/ui/one-time-dialog.blp:285 #: data/ui/preferences.blp:73 msgid "Confirm" msgstr "確認" #: src/window.js:906 msgid "Confirm All" msgstr "確認全部" #: src/window.js:907 data/ui/preferences.blp:84 data/ui/window.blp:146 msgid "Skip" msgstr "跳過" #: src/window.js:907 msgid "Skip All" msgstr "跳過全部" #. TRANSLATORS: keep the %d it's where the number goes #: src/window.js:938 #, javascript-format msgid "and %d more" msgstr "增加 %d 更多" #: src/window.js:1090 data/ui/one-time-dialog.blp:7 data/ui/window.blp:133 msgid "One-Time Entry" msgstr "單次輸入" #: src/window.js:1295 data/ui/window.blp:353 msgid "Quit" msgstr "離開" #: data/ui/edit-hist-dialog.blp:7 msgid "Edit Entry" msgstr "編輯項目" #: data/ui/med-dialog.blp:7 msgid "New Treatment" msgstr "新處方箋" #: data/ui/med-dialog.blp:31 data/ui/window.blp:283 msgid "Add" msgstr "新增" #: data/ui/med-dialog.blp:69 data/ui/one-time-dialog.blp:58 msgid "Color" msgstr "顏色" #. TRANSLATORS: Tooltip for the colors (from Default until Purple) #: data/ui/med-dialog.blp:94 data/ui/one-time-dialog.blp:83 msgid "Default" msgstr "預設" #: data/ui/med-dialog.blp:106 data/ui/one-time-dialog.blp:95 msgid "Red" msgstr "紅色" #: data/ui/med-dialog.blp:118 data/ui/one-time-dialog.blp:107 msgid "Orange" msgstr "橘色" #: data/ui/med-dialog.blp:130 data/ui/one-time-dialog.blp:119 msgid "Yellow" msgstr "黃色" #: data/ui/med-dialog.blp:142 data/ui/one-time-dialog.blp:131 msgid "Green" msgstr "綠色" #: data/ui/med-dialog.blp:154 data/ui/one-time-dialog.blp:143 msgid "Cyan" msgstr "青色" #: data/ui/med-dialog.blp:166 data/ui/one-time-dialog.blp:155 msgid "Blue" msgstr "藍色" #: data/ui/med-dialog.blp:178 data/ui/one-time-dialog.blp:167 msgid "Purple" msgstr "紫色" #: data/ui/med-dialog.blp:188 data/ui/one-time-dialog.blp:177 msgid "Unit" msgstr "單位" #: data/ui/med-dialog.blp:197 msgid "Icon" msgstr "圖示" #. TRANSLATORS: Tooltip for the icons (from Pill until Potion) #: data/ui/med-dialog.blp:226 msgid "Pill" msgstr "藥丸" #: data/ui/med-dialog.blp:242 msgid "Alternative Pill" msgstr "替代藥丸" #: data/ui/med-dialog.blp:258 msgid "Capsule" msgstr "膠囊" #: data/ui/med-dialog.blp:274 msgid "Round Pill" msgstr "圓形藥丸" #: data/ui/med-dialog.blp:290 msgid "Alternative Round Pill" msgstr "替代圓形藥丸" #: data/ui/med-dialog.blp:306 msgid "Ampoule" msgstr "安瓿" #: data/ui/med-dialog.blp:322 msgid "Injection" msgstr "注射" #: data/ui/med-dialog.blp:338 msgid "Square Pill" msgstr "方形藥丸" #: data/ui/med-dialog.blp:354 msgid "Alternative Square Pill" msgstr "替代方形藥丸" #: data/ui/med-dialog.blp:370 msgid "Triangle pill" msgstr "三角形藥丸" #: data/ui/med-dialog.blp:386 msgid "Alternative Triangle Pill" msgstr "替代三角形藥丸" #: data/ui/med-dialog.blp:402 msgid "Bottle" msgstr "藥瓶" #: data/ui/med-dialog.blp:418 msgid "Drops" msgstr "點滴" #: data/ui/med-dialog.blp:434 msgid "Potion" msgstr "藥水" #: data/ui/med-dialog.blp:457 msgid "Every Day" msgstr "每天" #: data/ui/med-dialog.blp:473 msgid "Choose Days" msgstr "選擇星期" #: data/ui/med-dialog.blp:572 msgid "Choose Day" msgstr "選擇天數" #: data/ui/med-dialog.blp:617 msgid "Change Cycle" msgstr "更改週期" #: data/ui/med-dialog.blp:642 msgid "Days Active" msgstr "用藥天數" #: data/ui/med-dialog.blp:656 msgid "Days Inactive" msgstr "停藥天數" #. TRANSLATORS: Day in cycle, try to keep it short #: data/ui/med-dialog.blp:671 msgid "Today is Cycle Day…" msgstr "今天是第…" #: data/ui/med-dialog.blp:694 msgid "Increase Notification Priority" msgstr "提升通知優先權" #: data/ui/med-dialog.blp:695 msgid "Show in fullscreen mode or with 'Do Not Disturb' enabled" msgstr "在全螢幕模式下顯示或是「禁止打擾」模式啟動時" #: data/ui/med-dialog.blp:699 msgid "Recurring Notifications" msgstr "重複通知" #: data/ui/med-dialog.blp:700 msgid "Renotify until it's confirmed or skipped" msgstr "重複提醒直到已確認或是跳過" #: data/ui/med-dialog.blp:705 msgid "Interval in Minutes" msgstr "幾分鐘提醒一次" #: data/ui/med-dialog.blp:718 data/ui/refill-dialog.blp:36 msgid "Inventory" msgstr "庫存" #: data/ui/med-dialog.blp:719 msgid "Manage your stock" msgstr "管理藥品庫存" #: data/ui/med-dialog.blp:725 msgid "Current" msgstr "現有" #: data/ui/med-dialog.blp:738 msgid "Remind Me At" msgstr "低於多少提醒" #: data/ui/med-dialog.blp:751 msgid "Refill Amount" msgstr "補充量" #: data/ui/med-dialog.blp:765 msgid "Set start and end dates" msgstr "設定開始和結束日期" #: data/ui/med-dialog.blp:785 data/ui/med-dialog.blp:827 #: data/ui/one-time-dialog.blp:243 msgid "Choose Date" msgstr "選擇日期" #: data/ui/med-dialog.blp:855 msgid "Mark as Confirmed" msgstr "標記爲已確認" #: data/ui/med-dialog.blp:856 msgid "" "If not manually confirmed or skipped, it will be recorded as confirmed in " "history, reducing stock if enabled" msgstr "如果沒有手動點選已確認或是跳過,將會在歷史記錄列為已確認,庫存也會減少" #: data/ui/one-time-dialog.blp:44 msgid "From Treatment List" msgstr "從處方箋挑選" #: data/ui/one-time-dialog.blp:182 msgid "Amount" msgstr "數量" #: data/ui/preferences.blp:7 data/ui/window.blp:338 msgid "Preferences" msgstr "偏好設定" #: data/ui/preferences.blp:17 msgid "Auto-Start at Login" msgstr "登入後自動啟動" #: data/ui/preferences.blp:28 msgid "Auto-Clear History" msgstr "自動清除歷史記錄" #: data/ui/preferences.blp:29 msgid "Keeps a maximum of 30 days" msgstr "只保留30天內的紀錄" #: data/ui/preferences.blp:40 msgid "Low Stock Notification" msgstr "低於存量通知" #: data/ui/preferences.blp:41 msgid "Send reminders when treatments are low in stock" msgstr "當處方箋庫存低於安全存量時通知" #: data/ui/preferences.blp:52 msgid "Notification Sound" msgstr "通知音效" #: data/ui/preferences.blp:63 msgid "Notification Buttons" msgstr "通知按鈕" #: data/ui/preferences.blp:64 msgid "Show or hide confirm/skip" msgstr "顯示或隱藏確認/跳過" #: data/ui/preferences.blp:98 #, fuzzy #| msgid "Export History as CSV" msgid "Export History As" msgstr "將歷史記錄輸出爲 CSV" #: data/ui/preferences.blp:121 #, fuzzy #| msgid "Empty Treatments" msgid "Export Treatments As" msgstr "沒有治療記錄" #: data/ui/shortcuts-dialog.blp:8 #, fuzzy #| msgctxt "shortcut window" #| msgid "Show Shortcuts" msgid "Shortcuts" msgstr "顯示捷徑" #: data/ui/shortcuts-dialog.blp:11 #, fuzzy #| msgid "Show/Hide 'As Needed'" msgctxt "shortcut window" msgid "Show/Hide 'As Needed'" msgstr "顯示/隱藏「按需服用」" #: data/ui/shortcuts-dialog.blp:16 #, fuzzy #| msgid "One-Time Entry" msgctxt "shortcut window" msgid "New One-Time Entry" msgstr "單次輸入" #: data/ui/shortcuts-dialog.blp:21 #, fuzzy #| msgid "New Treatment" msgctxt "shortcut window" msgid "Add New Treatment" msgstr "新處方箋" #: data/ui/shortcuts-dialog.blp:26 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "顯示捷徑" #: data/ui/shortcuts-dialog.blp:31 msgctxt "shortcut window" msgid "Quit" msgstr "離開" #: data/ui/window.blp:23 msgid "Show/Hide 'As Needed'" msgstr "顯示/隱藏「按需服用」" #: data/ui/window.blp:31 msgid "Search" msgstr "搜尋" #: data/ui/window.blp:39 #, fuzzy #| msgid "Treatments" msgid "Sort Treatments" msgstr "處方箋" #: data/ui/window.blp:48 msgid "Main Menu" msgstr "主選單" #: data/ui/window.blp:61 msgid "Search…" msgstr "搜尋…" #: data/ui/window.blp:71 msgid "Today" msgstr "今天" #: data/ui/window.blp:117 data/ui/window.blp:210 msgid "Unselect" msgstr "取消選取" #: data/ui/window.blp:220 msgid "Remove Entries" msgstr "刪除項目" #: data/ui/window.blp:300 msgid "Name Ascending" msgstr "" #: data/ui/window.blp:306 msgid "Remaining Stock (Lowest First)" msgstr "" #: data/ui/window.blp:312 msgid "Remaining Stock (Highest First)" msgstr "" #: data/ui/window.blp:318 #, fuzzy #| msgid "As Needed" msgid "As Needed Last" msgstr "按需服用" #: data/ui/window.blp:324 #, fuzzy #| msgid "Ended on" msgid "Ended Last" msgstr "結束於" #: data/ui/window.blp:330 #, fuzzy #| msgid "As Needed" msgid "As Needed/Ended Last" msgstr "按需服用" #: data/ui/window.blp:343 #, fuzzy #| msgctxt "shortcut window" #| msgid "Show Shortcuts" msgid "Keyboard Shortcuts" msgstr "顯示捷徑" #: data/ui/window.blp:348 msgid "About Dosage" msgstr "關於藥記" #~ msgid "Empty Treatments" #~ msgstr "沒有治療記錄" #~ msgid "Empty History" #~ msgstr "歷史記錄空白" #~ msgid "No Treatments Added" #~ msgstr "還沒有加入處方箋" #~ msgctxt "shortcut window" #~ msgid "General" #~ msgstr "一般" #~ msgctxt "shortcut window" #~ msgid "Preferences" #~ msgstr "偏好設定" #~ msgid "After meal" #~ msgstr "飯後服用" #~ msgid "Refill Stock" #~ msgstr "補充庫存" #~ msgid "Low Stock" #~ msgstr "低庫存" diegopvlk-Dosage-bd9126a/screenshots/000077500000000000000000000000001514145341100176475ustar00rootroot00000000000000diegopvlk-Dosage-bd9126a/screenshots/med-dialog-bigger.png000066400000000000000000007133171514145341100236300ustar00rootroot00000000000000PNG  IHDRp]ɇ&tEXtCreation TimeMon 01 Dec 2025 10:00:14ѐ`tEXtSoftwaregnome-screenshot>?IDATx['u"mq ba ۰m f膻n-ZZ BݮK_zsb7MrϛWHr"7I#y~R!(+@e 2CPf @!* [HWk@Ex{Ci HG !0h 0^G{Q ϟp PJ!dAP  nY!B~"ϗGho^ywr}>\FH(סKoﯬCr#}~y]x\olo[!P6eOok WjB.~ɲl@gɖsY+"-<9,=-OrJYھ|Z}X|V*J,(eل'{ʾބ??BMgyOP MbS\MmuPe\Vp@dZ-˰Ӟt.e,8_9/^^@'WaOB=6u(g@)U(TV@}B'egz!DS.V$p'(e9/^7} 7s7}s@پ>m|?e=6ɂ`fYөsYELIL%<I6F!P4d>PV:XM=.KT'6I\OE(f*gzZJq`u6Ju:y)Ti,۪TDZ>tczJIFOU@' \'m2=iYT2*$zS]&1ű,彖ﰡßdb*6JVIoR!LB=,OVţ \{H79N,YgЛ'U, (ۃ8RUIe \KV铪[oq.ZI!_Oo~ ΋cHJ O3y~O7PlNN2g{>grt@} }@OH+שUBT{B(%=&ɪ{ qy;GH4It>NOǒtz0auqV 괆2+2o~ꫯ6K4H-QdUAi'iO2dxy?q?Bd9U}}sQ Zr{}k55SzA"+ 2 ҹ<- SGydqv *O?@i{dP@YMkTO-2gؓ'`_[sOu8s׽;~=r:gy<ޑv  ~(r:?bqF{<_LnAե"2OEM#ߒ?H$qPyz_`; i5kGy^>OOC0!*H$"yɬ%\DӽG 2I[-Y7yVx? kkk;+~@yn []ܡO@@OlKDaO&z y? S o''{^@ ozt^ {9b"ѹbI6'PTce,92>Ko/65z?5fhfف*$/d93SIa (I"V RC߯?T~oi{ !3dc;P!4iv`e>K8Sp83 `BcYw:[pBd8ۿ?TYg;j"2@vM6O(dwP8!Ϡ~;;;c#K781>?eʻmm;O6m=zz,gLʐz ҝ'6qI4Ҋz=?}|in+i7?VJeeJt>7|I8i\s9PHs$ҝ(t/@JV{>SϼdP?ChW$dUZZ UgT@đ1H )\#UF7 2y_lĽu[o}.$dC'Mk)G?fl;&Sd Y©HNTHd {Jm L?7$58ۺy%:/wexݪ-|O2~;:eN={HTnCkEEŞNȔV q)H!rYfۿyd˵({($~q6jy9 8H"Jt>\|@J5>sGο;)7KJOBM227$;DY@ $*  ØPԔ)Drvc m@3V WO=)Nk9昣T2]su\ZH&m_(xm)"*N'iP:z^M%Ӑ!Cvc @ۥf-R]|gg v i]znQ2%k;̴}DMz@LtuuI bmr>PmiqWU rI[m~=zx-|RQ:0m׊)hƠYɓWK8{۽yל:VqI]2L! Oއ}|>0]@ 8@&TjYzכ[.xhP,2kKB5YCO)E>\+4+45@^nQsi^7~5W)|h[6!immL[Rz.@dg{1=@JDKgz3Io1г 1*H֐DM.*œdYɿ}9}6LeyA\zwgٳl0F<i_ ?eʔd̙rJ!C˦n*'n'o HE[CczJ >ɗ mAOQgkNGn͝w-O>kg}nr /^*wq|̸-Zd ?8Yk-3ݭ4T42[_Z[[c֡(jZ4H7pЯ'eJe˖ fɒ%rYfWǟ(ls2|ZoZ=ZFCP}}l6&4hܗ_~%u=jO!_~\u՟ZnXPao]%dۀRD"P&ݪL*u zRR92EV|ʹ2oʯ},]Dm)_J&O~#'{}}`̛7OfɾQtk!ߖVy鍆wo͖IkCۖ好]n)V1t Yb3\Wls}sŗȌ_H.l٦r ʟի$V^my#Ρ9?rZTAOq泘kW=l)fb멧1Ǎ\~][o tZ\&LJ2fs~Μ9 /'L\O>wMggYT7وVY9(߳4EJm\iC>j3'P**\?/@lo}dKWPror~Sff0΍';Q>zĉ;=;ϡH>@2G}eY!0|, 7 Ko&Sßbl+dkmmg}+}$mߒ޵:S 7@y'?9>~rw9lkwpnzM[[{wmUH(݀P:A߾ǎiʔ\'6q:d֬#@rAfVFKoώVaW53f]gQ2vhA…z`0dmtJZ]]+^oE m[Zm&@69hzhks1'lrGtrmcǎ!BR3g[OwH>|G\Nv#ϸk k~QO!s_G%KßRcV(Q\IV1g'q.{*: /\5̞t@rx9+mߑNY{Kږiر+"_}5uo,]KWV=c,lEMVpMۖsxbWu^nllISH]]ݒS9BO~6R^_s+[mdCs|yOJ#vr![N:ijj?C5x`$twdxM^l_=HlWfB >mN+x9?Ҥ%@?._v)'{/-u[/ }z?:~g,R +s5 NK.o9=h wy-[&V;P &;RUUw;os-LABOn[vqĴ;\s"mf)ˢE"7tk0/AnE9D]'9sqwu"GPzN۾9+r>i>;v^ʫs3lP/~vuwyG/^j}6W[g08qgqEEիmo }W__o[Zu/g_>\n=gfmb>߷.4 _=z.~Ywuۚ[g5K.=}V6;wФI\dܪk첓y~}eS1{oʒ%Kwmݶqw/>z~ \1د~Ϭ>Ǭ躓nֿDZ@߈p碁<*w$6Ysk }֟sR ʢ'WO r&I+:̙_7hC/O88{wfʔ_/?k x9R:X?#O~/9{{Y,%>o&$iJ'|]C)y$Dϸ=W_k+~xɧdO?CJdq bӊsqlVʵ|Ŋ l}r]cBi'?Pپw4cеsIiHÏ`n-ᅗL^}]GGygsٳ`ar|WW{#b![d޾!.d]r̝;|op9쳬Ȅ_ۏ jg[.=Sr'μ[D'@LtYxy?Cg5r+Vp74X Z go<?`}/;F& ̞ʩ5r:iХ{΃t}믿wl @:~N(Q:/io{^dJ&{}(?o>J'(ցh~z?iy]gxx/S¿ᤏ^,Ag>V:뮻Vf̘!nx^v ßXt7t,.Պ^z5~ /wu^+5_ŸJSAܛ8 Vw&~km޼I p½rhXӺL/u6[xz,z&\wθ+ŸXK,wXw+nvڈ bi 7hB\Jn=< ?.\ᏓA7tKr? W]uMI_nZW{Gz⋯ą?N^}dK+ ßXo^y Ow6 ݉NumM7,o{a\;5 ? L2O///ڶ-w-6 M%כ=m}NX?Zc;0eP KAhXk Mq 5RviG3NygL ۃ>lT4t|`ԩSyu0viG2ZGDdž}Ec+齡6gωN:^ƏpFszYfw oϛVN6 utٹjue tkK;:z:x]m>cR2zh=99++;;>Nu~m'!GϙVj][Z?ϸqcJ{t/[mץx۶Ro{܏?V Ü{O>1!m׏T`cIw=z}̚5bQ?_o>m5ՈZږr 7, bq?p}'w&ll*yM+6muZL:[= 6@=P1Rf6mMی^~*D{'7|G8][;정i^wmc*u{SNvF.{ \_^+*vm=bj/Jbn/cV2W\[@[XG7Ghaܸq 6nd/w7tJwo(RWѿəg9mj,XhOX>L'@{fk8_Z%r0seyA)$mwkfrϗzr3L6Ms{5تpqKu.^v\!6o/MMͦ PAs}3AH{lʉ:K룿+IXJ+*t E?S5ra?4|A{)-smmvg I1Vm+#QDО[g\OÑ;':h8:|Ph_Dw<ʕ+\?GJ:<0t5orԠg7_<9??q8DŽtn ;Ҡ^pgzy tGskn?KF.2fL5iZH4s2m2dP'vvT58`_k=? |9𣤐 P(7U4B ms6ec=TV@y z20 [LN;5t?ϑ5\b7pȺ׵QrPLF$j''{3O9Jn#耘ح .{k'=up/WN: msYvyg*-t/mlw߃\ֹVZcy8>Gi.g#t@4U׏+ivu@Z]Oݖo{%m%Zt^n„cYbs˵%#/LKw}u^筲mZ]r!wD[j+K;ʒ[nIRd\Jmm&`Ø4h`$Qqg} ;[#F 7sٴ2Ȧ;x8&Ҋ$gc>xR@t`$Q{QLָks.}#n ڨ6QU)U ~/a M(y=So?RYYek} Ti[;hKfݒ6+r NbL [?~i\CN^N:hmm1|ZZ\r0kжnklZd@o3aAf +탴 wa,7ƹ[)k[O?|ƴModXao6'{dM9 Z\5x_&V[YMУ[mXs^1mMҿV[fN8.KDx)u~^Gih-͊:Jjm/]O۔9% K[\?V6!= hh̘1qFX+nzLw(q@·sHh­6 n3p-ڂI[vzنZߵT+/@':̜\{ f0PꖥK^rh+'m$=t>s[%$5{l3G} 2]嫭{U =ѹH|@ Ƕ +Ov1^ ̓[oC:ثY&'aNf}ƆjIxDz#NxXuםg, ;mI`h .8_OBLy :fZ[ߞC`ϞG-YT:j9묟8ieIdҦ;d8wHfժUq>#4iiHTWW-x++b䁳X?BZ1=, F}Ί" ˮyǴJPx9z$'{C.!̩\UcbC()EP[Vb_ϣ> 2:5|iZ); եoQؿ;hcsC׵ۭjkOl{O=W}\bHZaZCB~~?/N0Zf|?==tc.g_'&|Δ+W7:ՠA_Jt9 ^38%? n{'lb{^nϗl}~>3W_}e*b_>HñLwM`e:H|Vv"LP}s=-]Tضn;3w##*9sʽ>Z|H)ϋsnC}J9=̳G۳D3fy-j4]wC}K:[;4s>`/ Pt^OOaZ}l~:W+6hCg%?B=O^Bɇ")](#mU۱rVj|o2՗m9!A3]+Rn)&| 6]ќ7oAjIoAsnYDt0u&I_u{g?;-1j;`n ůsehTVVw!VDsP|kƛoZJ[J566`MCܹV8~i +{kwG}̜V b&@qzW"ssٴmx̟P9hƛh38SMQ 4ՀԦetZs(,gz^Ι6_#CkLJkM l'1ʕT;'@B]EW26·~CNv~͒S nvv>vcGj@߈$)6>_Skϱ“R ^l2dȐȜ _WipEWP ~:G6]$˗4Jð'ʂ"ijZ>[Z?ףVh9ۓO>er~n/o WCc;RS~bAv7ȟYfYG]˴2w&{xL2e[l#M7XJń ȧNj~wotZp l:^{iNλ5zq09zhհ_K}}:Փ"˴ݚ &tO}gx2qVp+dn1lo5jz;C"=ۺEos2h7]63׿tړ|ϙ9>߀.⋙i]W_v ѦH:V[]z#^qtzuq#_5р{=]ǿL;#FX;k˅u]T?Ξ=ǜg]x;^[["KۙuLО{f2U?V+~_aZ3X!Ñ9m*Gy Ν5kvhѢtd:M:HUU GxMJDw"q裏3Ɯ ~WhK/ʜyr4PAïb|t5AFԆ¯tL>].wmYsҹ'ˋ" P,t#W?D!Pogc/WB!A_sn'xt=1e'jz W_,Ӂu; tE;F󺢫#o+gyp3`+zQ{(XF9{HβX76u 9ꠃt`%M74,?1tպ?M] [o~gP,*(Z5jm37* LC`Lg}mVoVO>tdx'`~D {caÆ>ݵ|D bd6Dwjonנ.S1!?i^mU:hVT\566Fx!5:ח̡;{4T:sL;L.gPW/m{[3Ȕ)<.wŬ44K>s̏zV\V8ߗM7Ą@-5ҽr/Wu!W7$AxcFIܓƱ'yu;>DZ̙_weą֞jrRBS:N:\wr-bZ}uO=5I U7o'S{jdk;#Pw˵r;orj*ߏ3- 34/[Oݢ@i0 h&._i=~0Y!Dۄ:hto48iVYd02L72PкR]]%fVn2C1qb+V4GAIpe>Cm?|ֿkw]wuzoE@鶃{mkk$<7d#m]MACc`!8=H%GePYxqr51x7srJ(?gK]Q.hbU8F4li[gBj'|2~شߖ|EˆbRWW/nE3*jxM [{ŸG g%lrٞꞧz:.7nG?raO,55UVB>\=GwWF AE«1;5<}Gy#ǿ@:tYg@9u}*`*NgҥK%裏J8-LNFK'z4h9"?'矙sI=kEg7˗Y!? `q3hٲe׿^Z=vi'Lk~7r'|ބ< lƠA+.5>xji+:8H]V/?k8iJL@oi7GM{/^(e?e뭷8[o3R^O{ߟq:P ߝć2$ 6'dnG jkkomvK1*cDr$QDddd[ h0s'JKk_[Hwd"w${YhHmN;((n^;7^G:SпɢhT¤F}}45iyxcCfܓƱhq<3g~e4OMzNǾo@j7-Æ #Ge4A=ee7svͱkY!%#]WeҤ2w<7 C 6x쳗 (;I]s5tOWWH1o086d%<=5t9vBcAR,Ku,I<TڢK~hoPN&@V\)'OLS9 /5Js<@򢣣msS  N.]]JoB X Zr &d>e*C'82 I CB?mmݷIҺdl(wZg>0%$NʞY3 1?Eomm?iVFonMxC*q!:_PdB8bNB|l>p%Q޾]rОHm-@rGOCv |J+e[yyHb@Dʙg-ٜMl<^t3ʮ% @rJ r=ꨶV@ЏÞ 7}Y⪡+:/@@|l@d%x$ϹC{h hh0S]]-V)ںp9SWo^sՉy~W z SQQ骮Ɏ{Ag\?@ \q^l '6+·w6I5р kj:tgN[UU5r޴|KD:Q}=w|.$RYY)ݝg=@'zBh..E+vPpr~2AK8kӃ~~+[A|E#a^ ⽦\EE>@L6ฃć@@(|><!fe J(cHt:ltttY(~PTao$S!g̀g͠ tA[a+@P(o' ?VUUe G U?AOp'deIOtǼP1@i V媦Rm3ݔ񸎣;;CgEPд3уЧ;\#S[- 6TH]]u:";PN⺻d[[477ɲe˭fG9; CàhVr$"LŸhkU?Ѿֺ~]] 2BC vPSSmv1b-hCVX)~ ZքAI6ߏs"\7{mݶRWW+m/m1&m3zɶbCP(9bPFyڹM'0aQ%m0m26s@ᏸBdH@ȴ[_6pn\sL5puv3 so빷h Εԭ$G:D,j}>dmfwjm\@f+8(yV$ګ+v= Q6vA}/{_W$*9}{Qߓm5fm7݆'v_ʜs=_[_g֕lAYzi}O{3 ?g?n{RߛFx- n:qn2? (aڝ$GɪtIsdJֵ҂~PQB X+EKߛ&m6vmU@9>o$!6 7kF1n#GJ6iQ}'hQ}f#lnO >!e@TE5JCCdJWB߫ @yUAj6s鶛n鶜nөm='gU@KR-cz:#$Ss9Pj= gv2Jg)݆snөD@dg7d)P{{ 2D2&@) @yM*}Qyp VLj!(e},dV {|%>#ǁ@]@EEH4]}WWW (Lkg,}{-kӾn鶜m|>k<@_@A$ -Ugd`\wa)Z<9o(mټu[NtNn91Pa0Q t&XSe`E3zZi;D' Cggtwwe\LҦa}/tWIPҾYᗩY?EiGINZ[[UzcF"LTBKn˨nsIE:] E mtv[]( $ }/P{9ޖ/!Ce';G0'ZUUYY!UUVT)k@rJ+Ht՞xRUVC%Id]bnjJgGϷJzɄAWLS}/]mʒ:SYbW+5QAQ{mp' 0;2A@ ]yT|^S~e=}#՞ϰ2{O$=֍L8>^<^FL˺-ܶ3_hrO؈v֝c+++ƄBڎl[AP5^ӹ3TD5#| yY(2Aכi^<,ifLm][Oۅ?}EC! !P{{G"E@zL04iceCK'(r<]Fr(tLE[u MUC-FidEWn:יO6et\^tL_Q:A;#2+w,#nll[ ~HXtEiNB Y!D!y6y.R1+$-=Y^yбhe {\E -JƜe]rf Ÿ2#Jt@O #=p\nkdFBYwR+Wn2dTUU 2{|dРA5rO6l%S72['d#m;vxEJ4۬558=`@JνJ&li j}ŋ˳>/>Y.] ."|o$HWMVnKeo'MMɿ2`yGeҤɑ&l-'|_2kגc~7fX\_xcN)|r,mH.;N;{}$ScU X;i1-tUn,:fC  I]4Wj"Y{x0nC}I/_!?_+ T$[1WSrͷ& 6tMWgBfϞj Пkn묳7k=BV\"d n:U2jPaqd2o_ ڭ;)$C )b㣏>~ֵL[-6N ,2?~dٔ)|$m@4/Fz?&ߙ(N;c<@]-(;iЭo4 Q]]eTU"- $C Nl] W[IP_sdGszfQ+b5rigȲe#{채PWW$yd޼$552tzdソ##GV\C6 SO6^hXoYu?Ce:`Owyezj0`5Rvum]|Ws˜9ߘ2|0ae}*9JB63;SN{A&O~C/^,---ZkرcL9u7}7nsu^{uyw"z|\ۺ ;;r^9,ɷ%=H|}}{Y26WoҊ'xǒ%K\n#FwI0VڴT&t%2ki1Pӹ*+}& TAPHX-@u$LVx;,>j_Ӗ݇V?({u5\Ѡ6x`9C墋.6Kz@t r?Luk.:)Fjtȅ^`棈i&MwNTZw/~q>sY;d'[J6twCKOכn\roejx nb͝;Ϻ#Lx㭸进L>#r~73ODz_X5@ꫬpis>_'}ܶO)Kۏ сtɜe~h75fhl2Rf.Ny?W1a!2qlpzc+$]a2z{jU ry]|crPYYe@k wHވ+ {p@'֕c۷iH}8=/Ꮣ{MǶq]w+[n-:y饗Dž?4o.6{6aޮ¨W@?\IV &4 83Lk8q{uҠIۚ[RN+hx 쬳M8i5>|e_|1 W~0q6AcOr% 08iA_׸Ǧ8如4ֿu\qᏓi?_%=qVh]{ۢu~pP̎& W?Z\!VДzh#7$>Yre+l3G+xc7@\4,mN"Qѿ2("ejEں(QLʉ'r c:;{*j+ mFqfǦ{]w]pV?~Oʕ+#A{ q.,ӿzNNN5H rꀧjii5׿?EmQvmAfy7H6 r 2@b:VS Ҫ~}Zk^<R#B??y|lP3}tymJ3!ʊ+"J cw׫rϦe?!V}Lb rzRhM71~_jEo5;wfڧ4O5dz6[t3 ogtbOMugu`*R;;L'|*򷴪Lh5m?[Sh'|i Ӷv Xu?cMM^#{mMZLC~h L )/hΠuXy l{&6H* v?ڔ95([Se Ŋ b`W&ڡ6pbH!<āQ; Xu~ذa^)?J׿jYN駑:;s3]e6q9sDs=8=3pG<"Hmsu@Q:b={3<]:@?=Ofkt ' ]v̧.Y2nH7K>mu};Fn[s߱3NsˆX~[4Z-߮9x|zUqֱ.>"gun[G+|Piԕ;*Ω+^&Wtݘg2|yX];HpW"be%ùWjlƥVtwyjtO~hEϺVh0\[[S4vqc+^4~]~&k;^/1#ņZ_ bY{eye~+bc9sye~yzu70tZw:^|zѶS-=sVz>ۑTEC@b@7d{^ѽaze& LdV.M7 m$d=p%;cT$j`yle-ΒѹjlrK9@W*طˍ 48сiӦ'vޠHIzth ^406JMMT{O_[u浉 BNuoIT{|= u^8Fޞ չSf-lV.Ye-44жzVk!16v\F@"_ZyNuFMCkx6[= oOygo@[ @D9{ӉF;G0{~Rh  X׷*'m_mmTHJ My)o[oG'ֽ{!Q"rmncG<sSluҹbHEwp'~O8sA =C',iȐ妛Oت,;O3f ,p *# 4 ٮ)VsMq zoƯ3S=o/r-=5` Thnme3}65' n|1*Q<#hSUD6sL>P9+yU[b[麏][!is:j @J*HV+i늶t Z:FS=AP:nɼW\jvҕn)ns{t;'Bdڴ(ݳKv'MY#>e&ԭP~v4ǻ첓ieg_d>vnmpmwXOxcL[$z)b%4pҁ?93\J"}]^,{gd-]w7߉k︪uz+||ŗeѢE[lLԩ(

tdm+*VXi6'|jm]s(} &wٹm^%Kf)붯" tKwxW'Zb; FH.%+YbdfoNk?|=Tvٰu{;zoNtuu[+^序S J>4.S㜗W o_j:4vܠZahb`7TSSrN־#!$._ZW8YPA [wvqy.;ʻN{ϴm{\2dDǶM{$J׹3RZל_"5G曇6s@Yp/vzϚhAA֗_~YZ[HYu!?LkA~Kez pu/V lxq]n{=+9m|mmmr3߇䡇^MMMض"އVR{[YiuO=>|ke])>) ۍ7۴_~7Bܖȗ>f}wI_kLn\# am&E TvwmL7bͯg*M&5պU rŏ0j?ME8cd 1*iŵ$(`HH?(5-$ƛf?2)W:_o~%+V,ojj{ muK.{޶.;˫9?{l9S\ ˗0{WkEݷZ^{=L)O8d3h";&ǿҽ:5,X}y[lzhײqƙ=mo9hk:L𬕂vV} ]m-rͷgeϭ#K8?~WL^rgto3zZmX.Bk2o<]-tXa ZE/F,9#eȑ&׀\4=jM3v옸eW^gs=zm?K]1w_|zS4J/ib:^R@5wx[cXfEF/wC1~:Nw- =50O~l&jwZI2`Al06r}('|ba _SKio9k_~<@J??iH\iD[yȮ*X' 8еL+I]}Ѯ"wqrl#Gy2Nk)$_cǘ堃t\prZaQavH]9XZ =)GuA`~6pÄsHߺ+d(wp-c7qL Vssdq{ jUi*:eٷIC}*?s+Xa\QJJq]ܓƱhq<:9Ȟq(帻^џvBLnFNz:67{}{M] q@;fx=uk%7J[,^ؼ]]Vli߇|BSE-P_.}Nڪ@۵5ʄ_@G`c2 +T%ToW?P t~EϷ&AD-{ϛ7|'jHՎz,2n?԰.6ʄίK(d+ ]ʦ_>ZiB*piUֱ| 6qXgKN_Tћl{쐥w^OuY'r3(^I^Trˊ+ͱ|7@t(&,!5Cq!Sݮ%7zRLtO_coh=V͡4?FM,@Y]bM>b1ids!lA$Ҷx+:;ʪ}>}NPO{Cc/9wӻ9.ɽɵ%_lj[[}NLG(]!i, ;h=ΠAP tuHYݾZE9?r~nJxڧ>BI&c }FmT6_uBAYl[%}CQ?9\J>3sz]vq]6q92O:D媺ARU]oN7/']mMW=ZGG>GZ(F@^[WPsVh')`P^De뮻d6eCC5(y/W s }ح\ "rN)[j+ 믿njK0 z|^˧=/}/ҷVO;:}/FUA vwI2d&RHP(˗/{@Mӎb#!`?JbAvY+чoLJsl._ϖo,[@M_kg@l`{*dROQ[yڥuBiJGGYl\r-?3fW\*BL(Zu]) o|!tɲ֠#6m֫I>TM49r5^lm ~K&***˴o{-GUKәOYٌ m+eT74ZJNQw?VSt晧K!ϻ!WŁo#EKAU^]b[aBz=]NݣQj t>U@:!kUU*@2(}V Pr^UVIUu[m咂@]]]RH~Y˦M&ϝ@@(\` M7=oV/ϭ Hk}Շ~$TnBGZ)˔BvrMô<R![[)S~ҥa}/JU]ڥU:[WJM,lZ@"v (uBGß^YVck&5RIkW 'ㆆz}]:`損Ja![ Pi4M%;v{~-euY~A@ P:}|,Z Ѽρb&T;cѫ)qG@8hZp8(MpUԉ5U@㨣Lw<ä  EJVsMY?){9[߮"PWW'@) @y:yJQ>߻UuߎU/~9r\qť2qvR[[cʎ;`Z_(:PzS4kIW9Mkf ,oi[%RUUehuttP*=]P~ܤZ~0V]RY}拯6<P*iu%sf>l. 2D: )=ŷ]ovʝZ>ʬYixկs UVV P YP~j]OQ|Y^Onw>kPtGߏVX>jm :댒_B9{oFijjEM*(}2k)(^:W [Y%+l5 a@?WV,Q9 }S)SZ>`*PQ1? kߎL%7=B-Qzx-*@C\}sNn At`}œ@(*:mt`^hbN 'mby|@WZ_/_.Lu#[ly#/k6 E'_HZs+Ÿ1C+d+ϲy{_w=tvvjܵz޴ꧺ8逻.ONmY?EhC; ByhA 6} l--*3OB\$Nުgi'KB:-~96:{Frk|RQQi4@":oVe.m̶43T?##k5d rTL[%PdzfP>ZPO?KzٴiӤo%(kRsĆ?LB ЉZM<7t@^Gl'ʐ(ÖN.Uf.vtH4:h|r| ;}dR@>O>fv-euY~(:$-n k_+yz lE(_ȣP0y|zfmz9ä/kN@NZe8\ൂi7:oE3QSpMUIU#GW\*'n'5RWW+;Y6bZh=0;!ktmUhW˜y( B𶮯ZrJ , 2D: )^P&Pt*r ,k F<N{7e*VQ i+j%|> @1`@ѩA\ o=WGU#Gp5k(:A4쩭ޏ;CrH$-P@yd b7E0 ll85)7Jl^iG3@| tA:i>yd-6#N!\zr*)x  uhevfE4x^9TYIᏪ.pso)PLN9l0'GCAnzɗJB-nyKK :ӥ5b@Thn~2&+Iڕ}s\Hg8=G嫻*? }駟%lڴiRX E@Ѫz\x@=$uJyWUSuÎvYpֆ-^XP~Z$ HeUT|XUR,>BMH@ѪJ.֙4eu*էU7#dqr!m/hXWU?<{l DF#mY7P^]BUUa-eP0F<˹vjsPPxY1쓣ϱ;͚5ydƌ2o\tӍP>:ۛqmp PQQa~_ ᨣ/BZ[]B7 *5!Iϭ?+VUVIcc :T ,4JSS,_R塳uRQU+CFJ!H9RR8q;Zq̲# S  Df?"RksOjj? PȀϩоj93fle믿JW{2 tv㕁GKu k:'OEE#9@1b %#G:CR=Zgg̟?ߜ1 ;w!. ISj`/UU2`ĆRY]'Ţlr XVh]!PM<0g7ӭ-b=L@(]uC~H,mAI[[}N~P^+Jg@V̚nȆnh4HOk 4g#XUWWv)9@1#PYAj)J>Vne˖땍6P***#@z\YY)G3 ?jjjL)e<Ů|fTh;}}Y2ǣF{(i@hL)'9@)@It*RChR[)jAm]xHAF]X~_"\ъ+C::%\MM @"Pvt御k1b*:E kQMe8xbQG*^TUUy/UVV~P-] Z+NHricJuuc㡘eǹOT|4pihh0PGG~) 37@P ԘZ n?(:-Nȱgnx^kԫHTZm,I'=PjmR>u 0zK:;$i3QUU ZVMTAMzu>絒T/ dش*H v[NzvĿ=rE(y?z>Ѳrl|>ո}lH@Ї x鿉VAmwA Mw{Mz5r^ |*A(W@*W|x@OMDZg t3xֱ/ 5!PqG۶R#У뛢#:V:1J'h\nn4.Pʢ+~Y-4 oj {&tHB$Bfb`G:Z qkZik㏴PZ_]6ʛL[imNA yf|I PL.^{@b@zY ٥(dU?vx oKUU%~J |>;uuuK[[[dk憱B o?'wBRS #QՏ]u%xqt*5UTT HÞDA!W2DY[ީjȫD}ejtcC NYivF@6[TuwwdoAޛh:ۻ*=N?9Ϗֽ4q8Vo; 6T[\ήR v<+x#ezT]u'4!P]]!M͡mD)@tv**|[@:-} .o kZa6N WtC5tC=F'B *TT8V Y've4wJ/4b4Jm-P=mpI>CVƾ$C T^8p\Ҧv*;=?zy -$@ :O{{9z?@r@\R1Xl92= @.^wDR__/o mB Z[[ VBX@W=e=rvѹ7DGэ)1+:\=tRV(m6I`M$  E\oѹ~$C );q[wWN1-nzǽuSKlPL. oQ>V6Aw>Vx*Hȳ ;K83 yTDwtH{BW8"+(^!S czVW|U?ȮKX*Li#BQ䑊3 ؉':or@W0GOGC0(:1'c迁HWğW(i5R(@[UMyJNvƹiUp(§672us}6U?A cΕD;E~Wtk+r(w;ꛕ^s hKA G˻̡{Mo3UZ+++a; Cb:[8X}!Z1q @|/uwß5yd@VbW<Ȟ,sЬ>t2NVZuD¸Jfߊv[A@i)n- ~55R]]mBRe<ųbWe@ 'ler9rOܱ3O\ +ʈh牄a tqhb_/:W,%r:z}Wm(Ԣ0 /ioo7P45UA(K_sń[;s`A/K #~}=IW@oȉضpn!WJ8-Ġi 5UY{|kO06 P]]TT}EG+k~VEoG {Y|+6p2ڽ5 9c?Ϊ %}y8@kEZ'fhVtI @A]Xa {m&oNTV˖pvC(쉽,QWT+0(rPȽbԿ(iii1F.ihh(jx$vz:@ /APNx[$y{Ȼ'nt~D-_WHGG4K1`jժUV(55RRo*(~ΟDs1P15O@.KwwZ J0-ߜMIRAn@֒T^/{>(6 Jw;^z̿TVch@~- /nI=s㉐V+hRV__/*v|{$Cfx;B*0R l'V^-ULx/${$d'9y?z}uP~AmKvVVty:ʞ݁CuDO[8A:~B 't奫3Ry:T@iM)?6}:w;8g:69RjjjL(e:͸J{{̅UUUmE׺#Pmm YRsDΛRSv&ʋBAC ׮5A^萮.sZC*~#LdJZZsŃm䎎h 5aP p(-\2M+י)Wc*1 ҝ b1R cr`9@7cm\s;cѱm#!lHlW "Cz@p}r6k@]&e ]@bdt͞+7cU JETM\vp:s 'b9@r\tPdˊaCзt{~| ǟG},_|1S_`&ѿ;p@:t >\vaeĈ$_[UU%@vp~@:;;}"c4G  )9*x- ~yorP+thf[T4 ZIyʲe^gɒ0}2if&l,?Ѳ;eZs1@mØlzdСC*?`^oK.]*9K.cy-[l1Nr~޴%GxFZ[s`UTTY!sH)w] PNMLN>TW/_.W\gZToh[\Ӫ fϞ#?䮻떏+my%sHbW"^':5@9>}sܒ:< n6ɝК^uwDT 8+OKMᩭ\-[LΝ+s̑^z%-\PP49󤥥%/[\fBZ.w_|1S顇_|YrTY3wM  IWB=}V=5@f͚%}dVZ-}[r'z[ z[%r2\* H@B )';?֬tOի#Qz̡'cƬ/}IsՆU랄UVVOz<=p)'e^OZJn} @+Bk!h!xi+'YʑxX(Ÿ/R@n;AF%}/%h:䨣CGae{=3<'͙U]%(v^ox87Q*X@RRbW=x|| 4Hvuso>PraզoG},~:MoĒ%KC4]r|t:SY`A=uC^'տ3s)Ǣs9^T9$ DZ УKzꙤ9][oI.Jd:@r Nx%±lCaٳ護ޑѣחÇK6-[& lbUTTĉ;l/{A T^~U8WuOu?.`]v6c|p w) ]?:]Ꮾ\x/M ^5j\={rV>H?-Z?qc8l-"A;ӕh0`0 =odjC= tA[ <ؔf^{=[VuzY{Mp/_.?tttO_?̳o0CEEtuuʔ)~Ggy455GޯK9E_iD7t![n@ 7c~q_|^zNU.@^ sL풰r5Uf^mi[&n^Ai8pFK&hv{{FK4J 6L[i!'LJ w]hwm X3ٰ.bkx: /S/[l1uiƍZs^[th0̙c*R TSt\5딗y]nAϝwޝt:rZxփN/ E>Ǻ#I@ rEVC tt-PB/ZsV;麟Uh,JxtMQ?i`׳YfOɱcz뭛m[[[PUewt?jР1$ 6LppӍvQ,V͛gŸǛvrg>?ӷWBҒ{\BSlzvzA+k@ņґ*=@  I6ey~gϴٝigf?o^'3sI8=:+W`Sr9?3 ɉ' plN>tvX 6x,_:TqJr4,>ItZS$ B@(&f.NEc--mKj`yǘZkkkb9L_;KAk{{|S0ˢE >fڴfСFþ^{\?oo{3g~{Z]tb=s+*n׌Ꮽ2}Z j6:5=8e~+-d#м51͖mHZi^[L`MO4upp=I%e&,Ɍ Ғ>}z8??cݺe{{ 5kf:zͷ͚7zҹ0lڪM;??^Q` lhT8\aPo&6u.,H}vYFvmWc\rYu3!i$2`6s$#r|>_Itc=U[ٗ}rumD- 0tǮO{{ H=;`@FqgVimm(@@ [RzP m"a+ Vi$[n͛7p9c[VsT-&d)~;كS6*J}3{lR@/}ĴBVwu\͜?:åƠ6p@*6n/g(@SH{^+xy EHwKWW\t9x䡇1}䠧z\;>}lF[i~ޝ ̢ծ:35}8CF:3vuYrU?яȹ瞝ZsI%8mx B=?c$!P(h$@KE$ykßl{-^}uXBV^#ٳgɡb[N-{c> t>K<3؞1cuHLԣϵ J{lkk+i &i2t8`?JZ7y%Jg.n{WD/ z$WJߛG4/ GwK/|֭ԩSdڴmvFVm2믿>cu"]hDOx?k_r^׆T;srOL%NRLo<:Х40qhX=wG}hN^WN; #>Nۻ>SeO+>w),Zjs?sY[\sO7+ /g+*nZO??]J+:/~ZϺRjCFNQhHmVi}ќ&O,{̈i̥nX,&^n[oms9۰qFn2gjXJL?"wm={?Ĉ7S7w޹g^x糧,zw4oڴi`>5̺JgP3Qk?$c*y{L4vڗ_.xTy֮]+/YZ[[A} >{˖-[d'M?Z1-T-M:Uw snko|[bnGi3{?-)9)s嗿n}Be9sWLW׊~ˈDjo,MU9x%wƂ @?L%s5O> u ~]d&u:`Gi>,qyRoG}>)sZJ?XuԑkV2_u4Ŝ?ֆx,:־~2^z"QwJ~@9 @8/FPop *4Td!_<-ҰfLOޯ}Ϗ;X9X ӦM S>O|1m߾f䒋G|njp8,==='dI@ @~T?Jm+s.D^ +g["^9ZW5D"iZNw-O3?ݶN:}p'*4T<.,t[tf˖nA lΜ2o@kl}fLᏲ{R:;;e+exB䒳|>hGd" ft =l97Qn+H(>VwV\$o}^;YnYFYbh{ s9[fϞ%l/KnBR}V JJwK(Z1}fNG'(#w"ޮNϪɓ' ƢJV@V'c<K/$oTlBS. evt=*VZ(& %8g,B}Qf7g{16kPqʒ%7?~StK-8s;02㤤"N_~!skJHk* jWQoi[+VT3,dE[bRFB RʔxSzt$lvwd H 2sx“[Ir.NOKoH:/Ζrz?پ}hSˊW[)Ц;Y;9zo+Y?%i90_&_y s2!Oe~V*&iVͼmdSS Pm{YV8:l}GGu֙Rk  @x{Ll-'xBc? Yr9/"r\P".Vtt١thV9՜hs̑ŋC=HZ[[U;n֬RkZNL-+wܗN+~7!-}*3o47fvo(MKKZ$$n6rUƴԩS墋.7p>s pTDΜ kkYL-xD"҈4Muh2'l|܀ SYHgV yTZчvό-Nʒ`@hH4}τ?U c4> n@I%+~1#*k_(#*  UOH@m.I2 G3<$ J8h4* M ~2cO_SRA+޷b  Gb*2'B 4p2P$X,&@4b3x%h}7Nnj=f엦T0&M2KKg#1?y}R`>ʂbP O;s=/6H?{H=؟gէ92mTP($^o55gjd1Jc<z{Y:l}GGu֙R, - M&d;Εҷ˟½Ϯs,YgBtI&@6D"!XܺDOMp B` >|~+7徼QJ!rE}Μ9xdɍf> }-{L2Ys܀xB*VF"<}z W8\=eI~C6lx}_4:({Aq^7 >v4 ypκ_`}w ~<+.0v t`׫G"naQ13~ݿwqP|܀xA)WNɭں]{)e^Hr[OzqnyljRJl{MQC#xzӱQֲSOCD5*Tt',pvDꔖS.L>BwsODz}貕9gO6OœtY`E"&PO:6q*c~@ ՠReɒe {dsΖٳgI9WT_ UKWz@[獹]}ʟ]\KJ%76(.@PZ[[tKϢ9Cugqٶmӱ3VqB*U>ѨreK__8nҧee+eʔRKhFIÙ ? }\ǒvZ mwLcG){BHfG[sN,x|F1םRf̎;Ηc9Fj oIϚJX`&n<cK8}kH zhuQ%Kn }}* ϗZVW* vK]+-uI"-Jp߽;m tcR(s]!45䓦\٬mmyYO: dfY9= O t[sg ԃIo !P'*;ȌjaE[bԖkp-Okz\~+4t○ؚrӠgeLNy*ro ngAk׾$˖=+6Y=k-)X=3-VppDZjI":&ѹt>:vɗ_䦪 f7۫ j7R;@͍GWhT'NokgN/\PGPcY+}֜^d)yL& `1EtLbMY1Qkkmƞ-XϸZo; ;mmK%@=]Z9LnG{JR%:@iylj>U*IQ\2PpCz&tBUmWLۅ3 ԂA<%Q`{!s=K֬Y#ys wtYg)l7"p5OEEӤ#gK۹gHls{E{]H*l,jE zw޻K`>&86pmRפ3̻H$"۷ȤI]դcht&ȯѶنk^ծjii>9sWʒ%7s_hweʔR+&@Mw;:$SFO($7K趹-#3xi)5nΪjoxIt,z$7~Hﱵ]jM3]bԩS墋.zq܄9'؄;Q6a=c. gł temdPi:1GvcI2lūBO1n9j5Lm84OW4fܦipi6<ʟ@ hnomZ2@C:бAß1K1nZSKK# `$@Gw'uJm010geڿeY>whU9 ȶmeMf~ /SB:1x"޼1{tt[Pn-ffۦnDax*O{9a (3{m{^>s]bP "Y5 i `t,c [C:бAn7zS@HGGJ]+U3oCO˒TdP5do(e R),<'Rz[`D\B-E%Oƍ ԩS%$0AٲeD1k3NiIiaOŸ`0dmf[D?G J~i&M~f@gRHjB H:VJ׍9mRCVFk)SRMZuVk.Aʱo }JD ͭB5>"͠ll){T4@u6кH;0'EaHCd2%>{f6^Py:C<7>jcm?yH}9-a1;Fۡ eo}mt0}vYjKrz(%rkУ=ہ ޴E\"[#۶9ʪ:Hyy ٣uS8NГ]};LC3~Z95p; +~y&ue%_̥s&F =gxJ9@:hKZ=Yɗ2E >}9T ~bz=wxA}\wœ~l>'u($)(5Z;8}Th$@ XV'b !8G(v`LK?՛>M`^z^jhjzf]f=8Ü5@ƓS'na!On3tՏS \>ssb@eAYz&}N(TU@}hmܣPOzO (hx[y~۽H06h o t>W7Ꮞ9h*hEP/lAr  F0NU9p rۼ9OwT@ Wh)ܺ-s9<oa|t %Ȁ %\KK@ѝvƘ k'Ru&g'S*J2Jvé 'CASV3V!q Z(o{@ `@#м4jo3KJ`0HC 9EmRA|T@~NB Fc u+ 3zT.&0s֒7sì`ktXŬ (TڡL$ b$|ր׽P:BGj g}\>9r+f^HJq7}289 `t(jdΪuj𘹈 G'lijˮ|)\ d49eZ{ !b>T2h;6 EC!P=aP_ =hV@T(>;4Bmߊ+l͈tPR2?ӷGzK@@T*)5!q? pm`d@F _ΚAT Tqc͟2'\3}w4{_W-"VY2#R Zf]~J=/9F)o_#zIw/¨0 kb Ii](۔ZTO}Јt#ecwȨ0*yEpc4D"a.=PN;*&{*|j`P<]4R)gn 0R]ldbkMوʷhUũȠ͇h,cbHVT@F {|h N4LR=`lpЮ}{heE/&yP 7+5chO~?a݉2y1>p_xƴ^S9=3VhP/-36W(}$ w\ˬ׳tD+/Z)@q|4^ZWUi 1CKK,vE:&2- AlG5 @z>\Oz+WYeҴzR@g4'

ʹ8gX (V FM'6*}Eyhޜ!Qv+8gLdW7Ӄp,zJ LRvJbFE ,`ßt gc QB Svc_̱voEdw0Gg*NRY0̫w`Z<@rG!۽SNt̡]f,}vn +|F[Skc }nΉP(8K~ D 0f;Ner}}9}흌 RAڙ-ъlO0@#Y㑘x(? *<I BD.PDLјS _~Tٕ@|DI :61<1L*͙A88I8I,f 0( Pi@**GzVK 4윁)ujūz'|BVekk[όY|>ɓ'vGGGz] _(;¬s:p[$gu&'P)@*Bw^tŏki|($Aɲ!Qz{q FF|>1'iii1`ZqH$!x BqP. ebNJ\׳l(lA1ë}_+,N/PGvBTD"du'AO}xD[[5M6pIs;\;A.ܼNEPkk @200 h\ЧQ欹,ԐO=/J y=  An3^Ȯ;|06zLE[CaPĄxݱ=r~Nm{{U?|E:L94у}bV4@EC;6re蘅o$=V> V_0V `t׏~:;;PTugYf)m۶n޼Yʥgy= /Pmzyf KҴҦϕ7HT9tttcM0e *A ө"IK/}y #>#bCf>ɭ>bYJTshۭ{ ;]dȨ>lcs}D裏4|[ӴiSev!96m24zQf<(}288`n?cjA{1$QJ20/ PuV9UrZK*C`DN+nk2v0PYكfH+fR=x݆-?q&r^Yf׽:xiI9)~7[_8jVp<@ |vW#!PP~/=DP;Kvy'9䐃dƌf<,k֬zXGZa"HWp=-Pi}}}ҬyۀR9sRɜc7Pv6ޑ(rLhxsjyN K؅U2ۦLdN{d29> @KEށQ&6l07lx\vuu PD"66s뵏hc=>#0ف(oMfn{\Hǭ]lڴѺI?ZsZd 'NeDV c.? E젃0knݺUn}{Owc͚0sPFq uɓ'i"vlٲE~e̙iZNhoOB;{l9͛'7n|H^zi} ^_Yf^{홞{mD"aZ+WnsܝnceT~bYt#*;M{uԒx]w1H-LX'M_o 4lٲeAf @=mP+V~+xYgOϻb@ u_^VP}.3f̐Jiii1'eՃ^^O^k =aߑZ|g|Asѓ=饮\ {Vf{W-i+:6U^3߻&`|>cݏ;y?edޒʺ^du#]JۣO#д4TG2P'V|z Z¶2&;s7}Uo`"zrZ4Q7G{~ԛL500(Gˮe˞W.DG t(v7 _4pO Hkkk@04*w6"7?}Iԗ.S kϰVҕsV|3Q_sWL$o Dß|=aI+cuwo+X\ISCA$2`qEKC}^=! E8डhOS7? "oA?ZgbnSѲ>{K=+pŸ+VaO~]MuJ|cs:'P%g K~~m"Zf+2> p%8[IH<ɦ?[߃jV~{oOmc۶Ro(r5?>҄?Jc9*ww7T`ƍCߛG}h4H4%}I{-^}u5H[aθP8 u;ϗzҪZ)wKggǰ<Gs^)g300`*W}H4 Կv1=pbWex2w\X,.4Z^;oU4gE"4F}&.аG2s$E9+mR+;#?go~־|C\.2DvGgFfZ,Qhȕ4{ommp;FhH$q{ {n\|?ڦ_4')4zGG\}d9Roj{V,?Gcvc>J\ڨ5vh~@V 6P .bM K_T op0Tt[t4O*{gN )QTu#?Jn?P5kƆ:'~TR? O/p4&*|:NA@m4[&ھ|B >59; TьᏣ @#}@եgT]3?'?{ァ\}_¨!PI1rHd@歒mm7 4ށۡmVOj:\vß|g~Yo7 T0Yp⊯ϡD3O1` '7\/MJ4|nn[[bLҚ?ѓ*;Ne˞Y8F va[Zkho}SZ:8έ"o WKYAXJVodt's=2+eYYCPB*tZ:2*^OEy?5g]Q,}cpX,fZ%Kn+V -s̞=Kj@ @\?dgDr<@ʢ$U+z =r.-rVj\ŎnncG* &J7G'[nK9J+y4)8 @j( n^͛.pzҥOWʔ)t Z ≔~ 1sZۘbҦmzzzk׮5Kƍ}gPWי W6g+H&Ҝ?>_e<9?YrA&,WGU@t>)]jeɒrG__ Zo7 T*jk6W~AV=!&>"@vЕv\?V:sCvI]2gly.k< O~^,{t5 \[dԩ9񏯑;Kvy',=˿r +ЉK/jj}|_:Hp;= >+}u_qƻnVT%'OY7|3}a2p-[%? TF4ZZ|eVX!s;P7ȖSۼߎ!Y07(:2y(IJw_RVg{˛۷wS /O}ܯ2s̜z3(V@NTIz7-sK/|}R!" m ]sO'L|ъX,S FݧtŸ[Ꮺgi88Xh$OZ HM$^ MLɑHBg|2' ӯ ʟ7C_S/6J V栏D7:ssns5koX-{FgUN%ϩ,~i[JC=X*Aw1r}XH'f T PC:ttvY*kwWn T%? O[J[1҂SO-+z_mg Cpx;:O mC;$(-lѓv`NPW9IC_<#4Ie7@U=%۲e?nC6nd(9ƜWnfߛOJ:Ltu;Og1CJOɦA7mS٢7SVn'I}43uJ.߇jWUׄ?]="95<3Npho_s'_ylWF-Rh''dҥR Y)kY&(ԩS+.K4x7j{}200 PH?8>׿뮻8W]V lU's[mr=~ȅ^GU3@eq9sWʡ$-滨XYfJ3B::.+[O$)w?7N+{`s(^ڥ?S ?[dzzd*L_K u~v-(Ggy\d zVy;ASO=m*._(|а;=]'hDZ}( mZZBeo%̘1dW\8(=O|W2.Ll|܀ Vͩvm'z͘1&{?|3֡* +ވA;d/ _L_3gʪU̥z5) &MdBhݺu&ٰMðmVphynP(F炬T4F=.+V^3;̵>CO3MHz8,I~+s{CcW'?Q~ww^H>^ @ GÕ_W805̙3́|z @Cu'?\rgoܸɼV6/;ZٺuҥDb1=HEi5sSpzeɒMh,[9l={C=? ppro9`n=w ??2}xk;r׶ƲvZwTҨwΑeڎÙxs'e$Z=d< 7jmmhύ6}x=l-]v.}ZV~^/RL\, I9iw_n2S늄?GvA;ޑ m+/I ;nqF翘.74s(=C>K'ɧgD.Z<)wq >ܹsd,&Myp=Gh4*pd>c%Kn }}* ϗZgN'D/0uHßQ89t-&@7 Bt}Oφyq>5U.ɓ>+_E&o/M뮻'r}ﮮikk0n+ܪ>WoŊR  obwnbx{S̙#wysj>RkWVnr-6n:.ßE|h伾[s7I$fۨ MsW@LfT´=ͼHRf|[Nv@y;엺̙3_ԩSeÆ7m\tl3fyɧdҧ%sϭ_G===C?o$J<^ܤnn#L?Ur}䩧>?N:2wSl^'_-|7s񰃈16m-r|>9W˭E?0sO/~ypiVͼmϘsϲa;:嬳ΔzgN]M-n\>؛r}ßv.-1F,S+4R 2Ůٺu[{{L.L>]/oKm0iMd:::6nMs/^|zAu[[v!fݬY3h= ?'Y!H(e9mA3s}uD#:ܮM۾iO~ ӾQ HդRIy &:gmP---JB&MdB4G^9w}h}TaۊV1hICOV Mzƥնys\v;Ӫ}ҧeM)S&K-kB~_>.mݗ9H+^ټUNB#wmNO˖ܳyt;*FcrNcA)X<0;8_9JF?/~)rXvL6M'D"aq6sv6ud 9ᏣT]xRK^R om:B^q]{{dK8l$ec}r;/$ wvLn۸m 'd,=&Ϯ4sLr6¼yǓbLիz|+Շ>ʓO>eo}\:O?.#hBAk,|:k̘̊%?)obu_>uleR}#8̴}Vpv8;Z%YYqQT)t|_|rUߓ}ѐK?G&x:/@HDbԒ1c<և)t=|1GtV[+фiUV.]r܀$YY:'bD76s,yۏ`yl> J"Qd|>}yi@z~`@Wrc" BMQ!8N2ҹNzjYjqCM͈kG+39ؿ]ܽE\_h=r.!9yVJmt]0C0JSyzt>3g& ntPHz:AS3ۧg)2N)F+tR {YFs{ttYg)l7"pW"Ѥ$S;M3loDbږlKJ$fրzWv=gd߹ZvTԓS~:.EH>}]ŭ˸v;i݇!Z=x}wVo}y8B8"}}}R s̑ŋ%Kn4`Ѣry)S&K6p5onRqS,ؠ0n>֥o{SH$iZi>-ʦMfN#muv࿶1H~iY]uNiՒun" 41aMH+ YWI$5dZƙyWCB/U]A2i䫄01@۶mA>}9+CժmEV|~3>C'+Z4E  FEG1s[ǚLW N(` ;6rP& `@hֽ&3gΐ6Zp8,7n:;_:[U2h;6 EC! ʡG}]'hYn NgB <% s vpxu[:uF200([lh4f9|V(3mߜ*L  *M?c tQ:.4JqdҴ|wƗj-}Rǁ&  @]X)hȹ>+5tv^blFk)SDٹqvغu5~H:~J;}ЧGb߁mZ) ̻ٱE%j7RםǓ2s89gi%@zWww/ H{{ 2eW$M0USU"-aJw|@v[.ݡ⑁$i?{RB =莯@5tn3x6Dr2.۷ȶm맲+4g^B3smGΥdWd<73%Am2g=GftzPc39˄@e~&nT02 ?'+6$&R`g5zdLw}`}כ23 r}u?@s֤* gd|NoTU@ 6@{])eW o=O~iPmX\+>ӃqȹSN x2;N7{> ~ug*z n\۽e?~u@7s*Q9xWmrWZ5S ]Ne<}b@,(xncϛ84A kFD(l)*{g?'S!ThG~#w*|r'zhZ4sU0 8`OOʺЧw#䨭BMg}\>9r+f^}hV*TXdJy: Po2?ӷGzXB jRǴK=8At~zw@1@rUn7oWaAcQd@XLTlnbk<z1sn\z `oH _Q_t>'^KootvvJ ǚ?/'PN:H=4xU8(@QU@s}~C&PH7K4O8`ҖoNj?1(XdR&x<"HjBA*`ƢGъ  ;q\ [9'# J }uY+@seJm3LR=`a; =fEM7:ޒ:9Mί `4@Fi nfDۙYuHwhbrJ 31΢;vhʭd2!d,0GF; ?mٶm t̜1e3ς:DZhPߑS#ۊoJE$;á;I#;(vڔi;vՏCrR)?@3>n@ue8e;ɮq:8i\@J6|Û|z$2=$.2OSM Y4w̙\@#+|@yTf +|F[Skc }nΉP(8K~ D 0f;Ner}})wv2P;PJ Qw&K ~[}c[z UF}P APbē.^~N&? 0.KE쓫<3Yzdkd9 4:TZ.{|tgd6 %LI6!9@*tn%̃mʝ m85\lwFr/ehYbl.ne SɭdÊ9^R#R9c)J9IECD"{ (34LqgljKX̄A>whZoU\3T9s-۳J<2WF*̾x%@E䷅˴wKTؗw3RxT:qZagWfgIC(MCx\Cz} $^3J&&q|~}EF;d*CU?m P?_R1F[ . vo*@8OvUι߾,<'ЫFVj[lRBv5P-ܫXՏSŇZv %f4|S''E1 CD2ߟ jjLЇ~ =J PQjWe=*op5PՏSuawO --!hUPoo:&T4n5jox3m UE1cʝGq&BMkv_V(ɴ3fm0iRB!RcSNAپgh`0hϯq{59 @ng T%Lk.ݑv9!ID۽ٿ207y~YgdZ=liۗ3ЖpN5*M"м-ràb*cx1>3TD"fz*kk.`F%O34y~ʡv[K `@(F_L8I,fז:wGsGb ~:ágdHRHJs Wם^׺F&)-'ص{ XkBfͭsM<Ɍ;::j* Go=fO[85A?J!Pv;tŏ5gJBA'i?]?k1jF|>1'S---&WDf \@Ŭg 鎲?X$ɡ^)h'PU:yRf,b=Ahs:A&(r(VP1-ъ-'b ytao3c'8]!*Ax7 "*H!/ݩߥ푬 ƪДFG ^tRVX$E*θ%_Ӷ1c.R'3?ʕZ ;:J34ҳ۔)J*A :1M1(cc-Js@ƅhJ?{I&zbf*,9Q.t,c(a**Q.=֒ G 8;^~̺ۛiӦ U13jWW@D&:F (sq̉DUx8SN`F:SN[+E[.Az1MqJإңv?KB "0G}\֬Y%@1 ncJ|?TZZLM+8!(ّp,˹E T~\,0tlc{]*@Uy<^im(H#pv*-{Vx㍜w؍7 &K~0A|@F2;}}}hTzܰaZJܡЙKy?/fyG}+2GR8pմ~Cx{h C`σтјfϞ#-4{F 9ܐ<2yRK˗j$g 'rc1_3N P x(*ND3:MO˶mc4%wy|CI(uδzY,.H$m=~LfjIۦ9^OZs;@1A(SN1;w3]{O1%XN,~~ڪ_onp_ (r?YcZn43*L8B1L$ʝ@Q˪t߯g L!ݎ?^?wjwI֬Y#2V:V[_dʬY3dѢE2}6lxSzJ+[[n3<3gvZY9Sg|ipB?ǂC9.[lܸQl*&u̙3dvP*gSAqح+a1}]]R( J0Kg &Ugh;XԜS 4IA@pq?ń> )”)cSsVs545x77X 9cd3iP /ӷm^qǝY.%7o=g{ ׿"݆+"+Vwt;w(M.\ThT})xY4jiii豾ۡ%;=èKO)Ρ.5yd9[-ZP֮}Y^~eλ}{OIӶۭfGe}$O?-Oeʕ@>üvygdڴヒϹL^{Ym]^IyG|CcH$bPPkk@#c h ~mmU2ɧ?Yᆬ:kdӦMN>Dk&֭3mJ#ٳ8Մ?U:HY`0Z]Yi=}{:9wZΞf`-.\`ϓ?>jQu1GGkvء{S+Hd@zzzdEߓујul˖-uVvxg}1{-;찃 xaك>d~#pPQ:sc6Όz_|vq̝;gM2|x . jÆ Þ9%&M%;.nI[5O,-N@ieD_]p>^ܺXȉ'o.~Qqj6I$rmwk9 >FNsݩzkвuV[KmO{ziKjs6Ar\:.yNJߛG}h@VڣM֭Q0N禹%}T9w֯_/6mG}L<򈂏s>KmϦK1ZkZBRZs;q:OH/_atTx@mX>{vpRɆ@CweC)=[]Lw`=\4(N9S<ē;|ۣwXsHُI?_.rA|ViϤI]uz裏?L^yy֛~D^xEyaSU@F߷F:܄@ҪAq; ,!՗[w1@%ҹw9 y'[41Zu~3g {sڴ0͛QロYԛo)7GٴiYҨy@shHv]?}noe޼yn J43gδ~ g̝;\v y(!--&TWh]v\jbV\%O>t5V<2So*& EÓFͲ?hMY{\z~D/}?4^WN;T:-ږ-[&=:羍7wkp~v@J$r'Cqe&ܹI<Oߧ|)뮻'gi۸xPn6-=as}08m9FۢnF 8 Eiʟ|=5+hHSN>Zツ.V;g5eݺL{8:䐃s7k,D"a̟yYfrz2;`$ of]8L4I.\ ˗f}ݥ/9sM@hؽ3礧fckyĶp_nf.UnEa%֍n k(/˫Z;VO.O<̷}]$v谁p{{.Lիev5g5ctΑ|H^zi4L͗#i^ϡsiR~ڵ/W|CV̴B6m'}`iǡ%F@-g t[ƒIùK.Ǐ6]`hōVHWW׈g@jK81cdӪwtZЙgʔ#o}͢mv5"PQ+V~k7w-G֬y^ϛvL Ȁ iVm:!ym84rFjbP(&*E罼d?{%~OOlNm 94U OϤŚobE&6htZ|VzzzG}%L _$c"m+AWKRM+%D Kß.ݛ7wkd}4X,fZ6Kh:?{9=l~jqW۽[p5DCzLlpEMь5q蜔hnxe]n}uK>mWRkAp- G"˦MK֭$KKKNr…TrGQx @#)xFO;4x n@u1T,1c|?j͚M%cڴf TjoҐ󤃠px@onի xԪ{#@\'^bڼ[Ewߑ)Ȁ~]9mR vGfھiek_e˞ƫ^nYFYbu# -s̞=Kꡞ8NvF "7x^,4ݽ%!(Pę3g~Px ]v.}ZV~^/RL,Vy\&Zl }v~->gQG.ӧOJƶE TW8Z&z< WnN]V6m, ʕ%Kn }}*Y@6*4bώ;Γ#f͋ޔ_ U vmW9ԓǷurm"vWz駟bvG瞻׭ {S첳i!p'[#`lٲEzkYo K/72e?f_rgMկ^nOOsI׿~ZZ9(h/ʕrsq׾eio6>Wq]w1۬T__|oM0?XfϞenoܸQ/=ӓ/ajuаŴRZiS̘1Jl{9mޔ;찃Aǩ$K;׋3{{m_,N+oso\n.o\/˴:˷jsTi+ _T<7UI3uޫф*_b9MX-G37뿮C9جӠ_i+իט?#7:/+Jk[5m/P9{UH>ٿ>,J?W[i誫O,¯y?Lg:֚?GF'_g :zcU;9h/pE\z|rS\:7cN;-ݘs{۶mCK-hK4i%~`C>S_.2y1yꩧ ?OL7ԫ~}褪NL6n$]9#ӯ K_Bz'|*u]@N8ϻyO~?2ikk7-o|FJ*9&K)~%}z}]'O_`-59R=?F $)ǁg+V&%r̜9]vY!G[i/~K{oAJ[͟?_ʡm@>a5Yh<ē&:c=F? 1Բi ;5u9ܳ l1V9sx fIvŐ P :F˛w6o.MuK>m7'ϏZm!^+i20P^p>2oS٣ssbq+Ꮺ6ahh֣O(6imm);hFN7m{DN;E~k2T:O,]T:;Ê>N?4,d޻Ym]]:N5PYx[i6u衇x֜~sU}CiӦJ]s瘞j]1뮻H5dӟ~/m%<z\[[w4"xǩzqI˞\זg>}qTu@iZ@:SO-+z_-[p-=cM"K_kѢ}̢홞ㆳrt9;}zt׾yۏ-n9ۭrJ5̜93}]S:N3|W6N:`7r2RZ$&o==,Yf%.guԊ^G͛B}N4Q]]r駙bˮ*vymnT*הCNϩsیD+\֯]6m,3=G>N"F]@G #/kժd4~JSNs̑ŋ4=tSv!fݬY3VmKm}tasO(iOmW4py'd<3[ʔV8bMI^~y{ϖ,oFsip[!w6~MỲOzG?_򺢯;iRl7qT)cJ]t?VjP  s롫ܖ~u'g&T-2eZi3*>w|c,773i+o|3#fwn|k/ʪh4&k̜9?ps!=Nі-[䮻.'MP1Gk P*:q:^Lm8hJ !hޭ[k&-̙3/9ZsG~wV@ӟSS}](:lZwI{G}No^!_f+\l 4qh˃qK/icOȝwmѶl-N9$O+/[g/~KӪϙiƌo\.Q}9gk"gAT:1}kwJWOq;Rt1#Ւޝ_$N۟w'H69XVmv3g ?-\ƛoe ϟ/]]%=Wdz=.b*JM}͛Me^ϴ"I'Z_|AxI^2=_'wxεڌj>۲Ş36 ?5 y=v?ºЃVɡɼ%uF"G[F 8 E )x#ҝ3Z]voJ=x43jT{e3o*4 OwK,7&rdhLs 0(5dpp\?3є'#+.9qqJ9t,]=dFΜ?AˤI] ԵE )lmuAͳ>/O:q*̫z|na[413^)Jvq|<7|ƥKKKyXFXj)luGf*ή6z-L0vT8cG{ nWu 0 MGv;I%uI$s&jٺ]Y^^Y#Rǵ} e\C(J,xqtӝ"I=iy4: MKwuMy9 tP+h4НBMWw=N71Ut_;::^OY5 @3 0!ΛnڝΤ'qk[?r~k7}5t*ϮzT<5>wchc U>5Fb#1'xA@3_5 PZ.cDŽo:^I&X%{BStO挛qb94hV@0u=4:.ɤ}Zu1H=8YtڥO_wmFtlU"DlBGew (aڼ]=mRȓ,awʭ@O NlJQk۶m9΄@^{N}[{kv_tLc)o@aw`|!0*ݩp V<9h,S9C*iΒS  t%{̝;[tLb]A@gbF P}P^w(::: @DJh+@ hvj^#;ic~m1ሴ ԒEtLs } ` T |ƩFӧ' P)gEʙseO ccx+c 0}uy5սqt)wF ! XJhR^!B]X:`t{$Nl؞̨KsJWu43*WQ$]i4bsyq ~:쬶 :XY~LF%?Z7J˖Rv{<`2*-j]δ3"  4=t c3Aqa 4yCD"n+}p"0Kʕ[ǪW04eddTQt̡cXD$:6)0ߎfu{ /|;qYNBx`MѨ/3יLࢁ^J;8i=xa]w8R!#8V l2`~[41{8ۿY*WY?ڎP| 9h:CJ%I%/qij|~6 7@]C:бA瘥!ԛ݉ $=A`\T(a%{ z P+Y!7סPXYuӦY~D1A:1-tsG@8 yԗj}@1 e9hʗ{3N`vmLUB X@mm ion$ ٸq< fV=Htc;B:бE1Gs'm_GK Bc Yu&w`hBy^+e``$ LOm:AK&Sfk ǂtK8lqr L:dTh'rŗj%s4Uj(,9ò[0aj h}RrR)@u!پ~u>vbWBp!fS uo:?' hk/kaNW(@ECq*E0D wm(( RIȾoSvTxv7k=҄prץPq7LYc t [eϯXs.zL@U_ѳO@$[mioZݦAh\@ hbgeU3m fWY?gWN nVXT8!^x1I;ѱΙ$qMŦm˭LE5-Ӳx9n7isPbWSAu?NKCM"O &Sp۾寵r+N[URAnw>9г~&_!T e9n('{xdA$Z5ckF$aCc艴ѦRv?#GrԊ@M ,Cg@DP֚+:qwuRު"+|HsU\G9V:+ vR[jlep:p8u̝8+~ iԬÛ |v$nA>x,_ dknsVDُUz aIjvh/Z^WDD_gSӘ{0A|uUaaA6眽uSUeYpT\YTil}kVR}\{N+F<P9?/GWFUៃ`2LJ t'w&K4ctF~jSK^WJ‹Ub\gdr@s=\ Jy5]z;OU#2PHL &p< <%~>U?#?G 8On8 *gFVg<G+Ze .ցn_Mj$s~nA}<:vv{es8ב)j=!0vµJ * uQ.-SPb]WP]1ɴstڪoejϾ zoCZabAOOwD{;Vא (s@PnY\q8{gU~ܺ.&ث5r/Vh0ȪJ~ &l8n<>_aC:žU @=+{qUYEP$d&r [;&H߯x4*08虘Wky*2Z;7$uZZ k7k[ 5܄@#hT*)D*;t:[#WKf|sί6ެ?:?ڋ~׍+jVPqTUBP15։&O|>f4hT*!x"$pNbPt9G:!Ӛ'I$큀_@6 J$&I$zVK Xg!g arj 23zͶN2uX#h_A:B.%*~|>B%H؃:W:?Վ hĜ$P(g/13$LfyL)K$كg uuM4[^J @*lqUK BEC ]׮2AL)Fm }Tj ~x\m8jM _ζgB Ωh X1UAd=0^o==T%?_:0c7%g }3ղ:(S_}222jN@|'L 3_n0P__/ehO:f*΅=}Atz@Vŏ}6۵ׄA&nG5BO;p8}.y%*r''in۽^_:`z[|:&NtLb s[/dL|~SqQ)bVιX!P܄ I"PZ"2l f[oRՏ] eZ-ެAZOO\+A>'7ym8'dtttUHsUAT ;-'3I#ZU֋[VYޅ4KG={Oo`4AiEvA~A:^.bͦE,3e8#P3 U9'ݷ>7l5w=WF+̽YG[8̘oz38#%`zo1 4J囖G1ӦT1-tc s9)7NACJ]Jz̖( bKK PoZYORb1^tc sYqQnҝIx4"Jl; .Y}>ꩶ'fb}x'k b@pPZ*He (>x~ZY@L`!PACbx]z|;#cD"a.̚5C^<:ѱItlR80&8{Gh `**+,9I8̺?O":&*Rjc^f8@z*WLjOJZE$:61U@@cs1ΌZ `z} 8@U;SN[+֋AV1Mq1cȥ阦vLnDrud~ce@t'cZU@|TBp3^뢫jZ}hh`M똆5K^V/dƊ+;?k?'ߟ BSv2T/&TB2i$MfыL!xMi^D|6q%,HPHtlcG4ťI4@ՋCP: ~ |s2aD"I=e.d::S+m9ؕ#zncLkH۾nrZ'2ـ)f.gMUP;@ÒJIIwA@xbS.J溫+,:F6cKSGڪ-kk& V.qaUP6F Aؐ}B4yv7gY߂nc;$=!H$*hD^o(rI5 V' cuXseP2,Px5j3zS2J}Jok?fm+g\DTT*mZYG~ UcPՊ=;xڧX_I_W/á$zȄBytBӓuvAìS }hk~I)_:)Lq\|k }go9GZ\ժ\J֭鹳g~v ZhNkx3 LUP;4~!~.D߷ @JF$Ӏ*I?:E4۷2{Td;8TJFGG>[Qmf=vfyu⋛?Ĕyk5HY`{1,wݵ `:Hgs{ꩧ1ٳdKwg/:;2Vnk] t:er/{ SA :1 I'$&B% e4æMr/[9xjǁ3<#CCC^{W+z/LɕW^%O l{wshsD1 pzɤڣD>N=l}iU0.ZaS… N5zaJwf@vf:Vg/{go\{>Vk82!U:]Ʉdޣӂz}3UIA^x[ H{^0U?[Z.7ZQTL[in` vlԾ:;X鴯@-dlH:[0#ilךּg_Փ4dҥ{Y'4;/ŋ<wiڟi6 16l`Ikr%?m*aZ&W' tvi CH$̥YU嬳`Nk{zZpIKe(x]Ν6 ͐F93 ܱd*Qʙ9۬YK:7 HJib]o7ֱכecVk2X{H޷+rpIâ{>vh|D70:4LO~qqk¥MFYlϿ =W+>\tхemg nB25CdSoI/+]Lv^YZ $֮]+AmF[MD_GGʫHdT_Un ٳgW|S/yN: /a|mM6rZMT).S9^DYV]Ac1UA{vWP `:o#NgTe)te5R4m5gYr/S1 Kf_y^+h.,e˖!\9,̘a}g:i{`0hGF&6A1w\Siy̘1#&Ft522If}}Vp7]|𡊏YFI[J%7]LbT32qxT^YM9}md~r7 {ׂ̬5סPY3˺m[)R푑ɲm-QpfC1; 3 G>BA&]LOŚU)גt߻{Ʈ:IL˵l *?@Odd@ӮnJ;ύtI'n{f-[~=}%Kn u֕{b:P[n-uK=d2s~\9'4W|ś{mz'mWh?鴯: r'>|_ϭ1yey&8QКCÎGݹFl\|s s̓Ovi~GKB 9 y'K… MueNnyvp]v1V}G+=jv˭VnnZ~}S:F3|4^+53tY.Kx}m%ӱMȎWKҗT>B]o~<ȣL%> 9唓堃^KdSi_2ӟ"/'?ˆ ;JE}9vqǘ*m۶ɯ[h?}v9ꨣn+} ̢ZM2g}G{?لQ?/R6nh/v4"@ncP-ZH.B3to2kVctZ\ dRMkV=Z6)Sw@iwgjDx|ߒ{L?$NWZr9gM7"O=t#Yt}Qpႂ rYgʍ7$=DrG,O8xYbEH{կ23<>c yիN7k@}5k֬:[n'. 4 *-Bb\K8H+ c߁@@:K+̞=[=8@zNrۼkvU=?JR`r2cezɤu*'{`'2QID&=$[yd2kMEkxU\ymZݮWvrWgCs՚5IK}Nzw^"H[V zFZ-Yd3zc__٦|}eM/===zT*}ʩ^|O͙o|92<8/d^i]SS,kn{xHOyPtM7Zo{J_Axųccz7\<|]:d8JtbDCصvq\;/Re[kp9TptgM5ɤIߧ 3QG)GqlٲU^|qz94jfΜ2Q:x2q4;wNGL`0mThL+w=ɉn`Lg 3XiO1Q/ܞ}`NTeݍrfϞ%3g0khVڶNm\SG}LWZ]ɿ,c>;Й'pFS'!qGH=4k#m۶]:s[N=.te@j500 V]"k<$ڦ}ŊrYol@\QU( F?%mOz_ךۍ\ EijmmQ0:Ժfmm2  涭^}P֬Y#@htJ3 'Ki͔Jz,PMwJjP6Ct_z?+ tK}q` `|=p֌iWwR5{G}<)>N=ׂmnR];W9\n6(џj&83d{ooyZY3\SdS0-lWH@gdz|ߖ͛˅^$_c?՟^_Yvjh" twwGf-X0_Zs/2?$dv7s ;'nb_}+>W}na[N7@u^e-fϞ-~q ,xLZGc T]4C'}>_U*k{,d2ltfȄ@մ:Qwc9J;S%!ЗUkK 7?ZO|̼g O6* {|TbTC*> Q}04~}+- |k(4`8'KN:i nD\蚿 p[~*;9);ϧZ>x^OS־HSrE_ x<.ʹeˀ2<<۶z裏g e֬LWGԷJ隳DmMP܄!ZF@x"ע0(c.hvywq|>8r@G+@7`GgЪf@V |L/$WB%^+K@]sJJ'eß$1ߚϒ%Kdٲ];˂%<#4K5lnԊYGs=C[f4kP|Ie*=e˾'rAA%P1':S.st_娣0m4YAO?w|L[jg<BAb~Iٿ*_H ĆDۓM@컲cM22y$ػ.>RfJ $_V n],~s;O,hn}R"HǺ<7o~bž Z7!w|Ϝ{cVig@:*>L <^$)˾VҗdRc Gqɢ=ērwMgQws1<=v[&o[NF۞iV> }l}~$Ii>S{1)< G<,~[7W Dq ^]]ᚃWrҥ;addxxX6mڜ ٞF_(W#9cFz[l '5Ͱh" eժKz@ڂm7d֬,&@_҉tRO&gVTEW_#dmÜ!xᅟm܈K9$ iٳg˹_Z_pf7'_H:LcgJ~럛6pˮF0>+΋{\N鴯@ڂ?3ml۶{L_J6o"[l1s~2m͚dݺu24C.\(̟?k]DQ핝w^"TJnyu5ǯ4mlP( _vj֭{޴n{ۂ +_Mo7g~;ߓSN97o6Ν#tPnOz6WpMG:~G#tY h o&6/OLsYFߗ>s/rͷfo)|:N:8XsIev5Zѣmwɋ/Xz蓟R~i\&[n{ϴ^+fW9C m44Zp*?oxME7-;{-fN[|KT8#?X.SU5N@ٕ8`cϰpgܹf-v}˜9s䨣ZGZ-6m6[>mn⦂ܸV鸱M}4ھY/S@@j'q3]mߴdppP~a.3^%ӵ|^׎˗N&6l믿Th^vrnmӊuGT}f%/9PnY桊;-ZTiu5*mҝef1}}_*wt$'7'@ixWWD"tu_Ѿ}ڱiC B15 V<^$čY /32h.{rz{L[6mzH1*h Zm޼9w=Uo0T`; ۣ9ۢ&u{+Wovyd``k60]"H'@#hx"7'u" ~tt'͵[;8}Th'@ڞ,_Ȅ@TL}?x[KD:YN~Bl .]*<8`?y5;WšP䫥-ߎ;k_o9v xЬSO}4Z۷[`Ǟ9C="h$]>4ox<^vÚ?AK{;$ W~'޾BYOƮI3fM^knC}3in0mfϞ%Gudg̘3=2YOrFh:M[5u]}nbzNߣ[d'*Nyt2sP겯h$*awʞ('Zu T~ ɔ? t,9t ^.6PZy~4x>7Mk3mAvaڿ//D̟??w[i4 4;M#uc*022"V]bnks`Lߋ?S.h @7'@3!ISIX:M~4ꮖppWMy/4Cş5wI39^YGiXnsܚ3iJjuFۼyLš, ̗D"aڣ=ko2c'|4V}__du֙ '>쳹'tBxǤV'@3ih >辴N4-}/?3:W6=L{8ΩGAm^{YYfʑGnn75O9k>#}59S׿Thti7Ri4u7|aF9W\egw9^>bٸE Z!wLZ ziE?ioKhd2)TLҩdzIZkߘoq肔C^_ {4n p:F&KS.Hu~fϞ-[nf[GdȨ~&Ar˭mkdN?JnܶzEӀ:T#z;ӬC.]*_E%g*s |Vw  $^O3g|Znivpz\I:ӗ L&͚X\c" 3i8n7 j044$ħkz{e%̱WƍVz+ή"_峟l۶]."sѶhx".wi¥~+d͚s&SuK5:!񲗝$gxjH~z>;M@w+j~)^OwH;cE^4Sc2}];hл@b&Њ VhJ5'x,YD~_`]G }wp{mfETopXϟ̗C9EVwࠩR>>~;|EM4P56ndߢ 4 (  Rfۀ] c~=1O@jg4pJ=6W6W/ʆ# eA,^j?_2k6h]wԛ7Z9OeCl@<.BsO=h2sLs2M$⮖p]]ݦ8ڶ Pqy]Nt]#ª{JmMàF>L57khh$ Zt\UZI+:E]{V,tC5 oI(svX&}gܠ6Z{yG7M҉~B~E"J3iUbj?XIx4jx#ޝ%c]#TB<^ 4ƻʫlذ1mcN2]`2uU4bƤq-=f-P(TЖ]1fA+zGZLj/!+4s/ld{:oGưdu!O#FPdƌ򲗝$臤L d퇵*H/ ͓ٓv :F0NAR)sMK~ ټE)}~:>(TP/:u_P't2o޼et鲟Z͉D2{4SYjCB^gG lhDZZW^)Q쳙Pʾ.N7]0GCQh6 _ G`|K`\oXzv>d{*C(=@|Y1(ǘG=bVLQToKOLJrc ;Y5F,y!G][9g(Q{wdtb};GzбQ֜f&X\ڒ @%@-liHެUO. d: 56ɏU sh$]'KZ—@e@ T;cwSkѹ-ԋݳϢӻzf^o߾]tlx4hT(>h()9/gĆ7 PwNnڋ]@+D&:F Oٱ PO-S;YnXg!s;<۱AS?P-@Y!R!LhDt,c%?N.Z+0AйsQd2)Wc{ 9Cg^fAYQŞ_\|Zq!jTe@mGD!P&{1ӒxݦA.=k%{sm'gh}2cj3d+˖-ԛ?:ǴLģ6܉)s&D<{Ipњoڡ[s0^GKªsC`\59oUYv&Red2eh~Pnϳo=Bp43\,}WyLd@փ̘͛߱/Pm۶AmDEk>c&N[U?VXdkJ3]׃bk&H8Z.?w}qVD"Qh7ϛkU8AOj q댙;qV` @]Y7|IƱ ȼJYR8Q*|d;iYS@LC =:?twČʦMNPq)+//i0>ۏi7k- j'2&$*)nIwh0glKZ*RtpgSNƻ9A~*;|`43eLp|ςˇ*֙n>}OL>w-8~S-xm2I=UnHV[jҖ[u~c_ڶV+]Z@&|@+DLөd<&`n}漝_(kf_G"Q&Up ۼٟs)U<Wn<_Su[4*n|x 5 [m)re*Y-̽:TLh,TBD6I 0U3m fWY?gW?N nVXTsN ~~I5OHXl7 uHMJ+I@ h*3`> SIx8|u[~A4T |T r8*> 7=gn2s ߽ Vs(l:V9?n)z^| t@]K<U|^ BKuSim)+2\Bzn5 y+us#>ն<H86P,^bf^%II2A!<* SH$)s['ݻ&|5].~̹&XDJC! !kWuuuDQ涆>a*~ 3-^q,:עs.* ȞZQ&AƶuCro0 !ܩ֊?k+:N\%5^O3P *yɽx25'nVX`cv5񄹦@P[_Moh3Bvo[piL&͵ݍEl3TC'ϕ< y1<:㕮!J P*b=dBQA1gO$#ΡhWNJR(x6<'MwșP5&ÝLh4:@\h ?xJ7PxBNœZBM~js8G&J$R [%7(;Wܥ`0N vW.}] B |&JT*3eA-sj?lb4Nyj'|=A^.!B;(2׌Q@Y^o~sV-ISdY:@@'Z1w q_jJ ]cm*Y(Pn|dss}~.:Ճhev\Yĺ?@ȯdUi=H0H+'t"]٭B;Z(F rlGhJ8'intu:}W2H$Nd )s_'}>v1~h嚲2rPk$c VǮI$2xe EicXh=+?WD5J+ؔsxw@%̊( .PǮGpz[{PL f4ca3ۺ] H/1g@CUXYgƌ`JO,ӊAFcٱF( L``>T5VDQ5^ƌ/P86߁vE8 @2%⑔$ɚBZk,Ѥ a|`Ok)|P/z٬YLKX,[J*CX1ӃV`9۵57M& f~UAzL"{itQ IH/n?SP{Ά? 45􄳭[1"jH$*hD^o(Aaq/CP3g*&ۭ+\" Ff=f)Zqъ zŸT*=OFfΜAt̡cۇXWhgttĴv ɸtw(?&Pg:B:pB񴴒O P7 ^Z~?3Wh:1Gc'(^/!PbqSCCC&bY@KDShpP֞%h" ^n U1ߴ OYt 222Uxzm fǐOC5]]hPɤ%vsK8(S` mᏓ7}_in]V6l Ri{d,m޼9ͦc؜cKlSck `"ж4\&=:zKݾ[-2WMVEWt,cE*ASm" P][@[LvaI,^Xss+WLjOJfhD(W O9u~|@ڎV$wp﹕@+WZU@6lkVvVk]G/zkZA$:6)αK9TU9nFz:TSL{:أs!7"nSx\>3gMcz?TUt'7p+ mCÓvXg<z{{C6ovӳڍt eSH$R~ h5k щᏭ @#ֶO7ݧfmݺMyqiV}kd}.J!_ naQcc1cƉ6p*-*dV>h jHا>H[oUܢ )J랞n1sDSHۣEO%F@\/IJ2yutߚI:昣;uv e-J7bWe~*D:?M}>.ѱ_7'GE]~2<<,#!>Y:/Ⱦ<11JƌYt'kC<5sD\e``@VD֬y({#+V,z,\@_Nb&@\->LgR]!o 2Yd'Yy[ ;[^Ks9{e5pꌁR"-OFεQ- }bSiNW_c %~JtbW2G<m޺8[ _ ãmW+>\tх2kLig nB91ںM [exkL2>LYz|逹uMc*c巿D^ǣիV'B@]=|\.DX1aNh(tQs =UKѬ1=~>$IsiU~W؆GLU>^i{~\pD$%hIed?n^_R}d2ki}kfHBQUCf9cwD1uƍ/Jn6ڷ>1,wIiFe!9^9zhJr K<fz*>fi&w nF\+m~O2~lyrpn{n\{4HٳeŊʭf;KZ p[;ytCB.iHnzy4pq{>h?7Y 0gR)s֜t 1kz.z \m4+;*q8|c iwP0@R͝֋ڡ^i+1<(;d{2U|ڭo!n^qL~N4гR"hhQܶJC`0h.lL|~6V-Lss+V+s_ǚ M;F4SgnX?}7Yɩ>f=C~AqX3,ZH.B9C+,]rm ̗fkgPu2LڿU y~*d6 ZqڮU@k_3h<ϺnYV2gs[i=Ѓ'}`ۄ?N;mUmN={i7|~SNfI$|Yp*N*r7nN>o]"uwyg¤7̙IAKkj7aiW{3鱫{By?򩷷W%nnks7TpL!Do~W6Gm|xif wL}kǦNt!WV{^hV> n@I7pJMoW5--N2q<0ږm*}Y0'-nUCCC^\=gCAw|~hVdժKd͚D]bud ,ƿ\Q'|U Mg<*/ܿk$"IȖsGv9b'9xtCBp64OonU!n/lϯQk՟ۖ-^ wuD"%*W+^xYgf@\Z^}+@VF=W{IzuI=4bQ_b{GttlhhG[6+pO]>?4KEcU~'ã%ۇGLUP+p Sd*?K?t *?)+N[& BqTon4<T5kHk0z@:Z&~P'.UCJϜer;#\tهnFͥ]"cvשٚ<-[, lB޲O!ǥsMӧ2f:+pT*e7;ݗfCkfPbžzh= abxӨgKDrˏ״$QuwťɚZO+=tݧfT|>g i:>jʤT:Ao6\^]c?۞*ެGc1uTFXygMJ]?NNe˖- /4d2)6m۷=U3ӓQ/eb-^S%5 o|~h%g hu| >IDdzxӨ.|7?ѨĒӷy~Vd2?IƂ>w5N/R fEr ˛o2~}kt%뮻^{n/GV [mWz0۴1?sΖ3fx`?7̒%;ɧ?Iw䪫_koҥ;oלQs5kD"$xomj4Ov}}lTeZ-`g h6_L@C=#Gm/(|^"Ȇ?>;Z'9P?V@| _{ッ7gG+䷿O}r/⊫_顇6K.|񋟗#8󟗛@'t2P^ɡ"?I6M$RxB>;`gyVþ{b?PJ_7d;{HMJWǮg5;S _s 0uJ'LZu ubr97… Z/83ZxF|Tt2-"}ޖ?\I&̈́ ֵ^n*ӝk G3U^Ǵ+>lZt ݂v7|-[䳟@Dbq{ /2֊o#$>逹2ki_6ّۦ!^|!ɤKZ(FIkTzjQ1mvywq2=9!#?[m3byimm4댽wgBO'mU7z]w?/X?ߒc9L+Z~I*NQ^W<k_Fܹso":\+,}?,tФe]u֙RkObͶnkm;z&}f{ 6]OWi6ۦww6(,7y(62v4Z{Ƚ/m S@c]|Oo?ivHh̙#ye}2<ҬT|"Uz ۉ' {k\w cZa:6`0(=m޺>X$5kHsy-?<kfHNA]{gȱ޿ᏪǾJ[s̱1梓ɯy͙ͫ&6ZYXo6[&J'œ Z l| =|a6ŭ۴g r \q8vWl{;ߞ l9`v/wgu_7駟6k_{tww}Vs涮{aerA/)8y؛|9!30^N҈}['{fWS-Z.GUTht^bZ=z 4~ ˢe#eof!Q=.}m &m,=GvA%uε9Գщ3gƍjE/_ngO2: 9yϻxk~–{L{8_W}= ׿_>\IXev_'#FXm=Q}bc=Uu/N:鄪t쿗{c=Q$5S*7 -{cDu7!Z:gC:LBg_kе54yqI9n9;2u &m,|CdN2zsm/iTFK׾4wʬS(il\wĜWQ<]+krtYgmT[o/~+涶ϛh8VH3}Q3^%knU'=.s}U|B9 Ud}V@'Q9Oj>3wc22)#gzi{- H"Lν\#cI[?7i~cwY`AV<\&BD"&іt^{v6mTpٲe,wuy'?YA|򓟖/|9唓k٫ƬdOk]vP-[Kw.O]w@]}ev5q֭ul|~p -Zd:[df͔fiEx0LDwt,ovX};ϛZ5D^zg&*ƛrϏH|_^[r‘:jhht:kľ}Zn+L}>PoEӉݟWҗj䱽U=ROs1gNϟ??hR9˿ۛJ+ lut͟/}’3\v%ϿkKm[tA0i`j]<=  Z'؏j `-/xl}r~%Kv2fx.wF+L;1(}7_LmGۧחNjcש ŏ~t|?*[>wݵM.z[y+N<y+zly uuP}}mSN.&P5;CroϽ뮻s9N P!=pi4ڈ}Ze]]U%W}ngNwKgw}lSw%-ي}}}200)Xgȶnrl[dIkϒ>`T"H-[5N8 [nM m~V{?W}`[ #/x,QGan_{%9oU\y ^ӭڗ?u~|rh[ZM&\&oippP~aB3^%igkgq=ʋ/n*KwWaK_Rg|KV}Yҿ*dEr'={ݫL=肟9Ld?/7}w^\/?=|C]g~_QYt<|3V65Z5`r}1w^{Y]o}Ǵ 7UW]-7|׿.9o믿/~YT*m)rq 3Eш}Cw'U2l i{%:7չ촿Śe qm1}ٚYZue]a.Nelt2> R{GZ͛[3ogGqǝRZ,k=鯹m oZK3hկk_?19ӅV{3Ş|uq;PߦN _pK 景?'ylZ%IӟbYf)Gғjƛ䓟soS.222b¨ܒ4.|~h'7ŕn@ӀIl8!xZ)I ~4с(vgdn2+#.~YRM'~*Bjq!*>O}ܜ}h[&i& |}LWZ_W& ɳ*{Y+L|;o%wn. tr_y;cJO~3Yplڴϩ^w-s̑J>[L^g.zp2{g>6rͦ:okԩtu7rH;am@GРkfHFIH/.wJĮIg?L&׺nrQ3@t׿\rY=9:Q|rgią}aiSL+c9Z3Nի6 ,^X~˟~crkht]v~O01o~[lڔo{l~;=}lkhLLčiSQLxjy)v^|k~}?yݏZ֖GzMe_s}ߺ.P"{iVG3 tz?>6m:I2^tqI%ew;/fꡈ|[j0Н}?^s_J*tM=hZo{JޟnE#!J4ꮖpp6oғ=gyzs>Tg^{%fPCzy;]t8ڵT?*t= L$MJ*٘$??>: %5{v`.\^ xp@{ӓjڼJ'8`sq+t xܝk|N[# >?3 ZYՕljPݹoq  d4Y!s[0}M}fT>b[@+t7>?3 \zI/ZIl;OP`Z撝7iI%ӒI%kAZƙ}S e}ٟ[^u`;@h}ik>5c>?tK24mV5CǬE߯VNH` PKrIJܱ6&Ԫ5lϺ:-}jC'@F/wZ/ 9׼ mkMtЩ#z3@y,b/ͬ^C1-ރ@DBR)s?dk{A>e0\rܞa鉨LnO1l|~dh6@u"!B{q2]L}g-k>b1y>?3e2V; # =?&"BgQ@qLt:GW7 ҮZcC Gz?N% 0=~Ys >Qoow,Y{E;R:F?#0Kʷ H'RL|̎<}}p>gc}݂50 `|M SW$bi mW͒ND7v:Vo /+ZD\W_w83V'IX9t_tځ;1cۙ{hfr>?e2ldW7/S=1Jh?OtD"}}h':9cFaq}O<)xɣb1e qH#<M0}m{}hW=̵V9lY@$-3#ma L_h7*@'Њ@ If B->O ^T*mgC*T1Ğ/۩P\L_5MGߣWIt"OM,wnhO$5^G "S·͕$nGZs&-{ W.wg(bqP>Ϣ ) K<h4j{rF; nQIT(F,;({d"z$e3o!nc} t`TʄzI$ֺZUj>?}[~d }:;_#ܻ)ّ t0VlǬwA {w7 MOD3,>0-ie.zb[ɤ 6gҧ~1mtauY~3֙|~hoddio?!P \q.̗-QyٱcXz PW;g͑[;6UBrra5+P0q|~ؕ4?:4xKlA!P}P\zitK(^U<|\.DXX2#{uɫ00v4|+~EijU Him:lVz`L;lH3b5'^1S{4*<;Fe`$-S1+/ 1{}q4ਯL&-ܚ?JQft.FZkԎ@UU@({6ތ$H-Q S uF42.@hԄ@P L)v pqcXS?X܄?+֜9ނ@5@rVg'z J }mFEZ  F.]SZߩ|^.i;QjfZt=:w>J$⦛ͷdN`U?|5ʷˌ7isPm}m]Hh~ʵL+ymVhʭt:%ͤ_]hWvѸw151؆U۷k׌U$ Z†iM2cFv+ڿ3jjRx`:k6"zb͘j ׻4XU?VXdk XAAo4: @( X3w;حi`ԬÛ |v$nA6_J?t: ^h-E6cWwqL-+'C|Q~;L s$ځϗ_ȾX0{|{94Oa{ʃIR[ߊVih4*Th-Xc`_.+09 @]X\SE`R<4 4<3Yנ{5PZ2WZ^Iݓ [4O>L׋Bk'"j:61'F el P']sl\;;T SbVx-AU?Th=yu`)lE5+2 |>bqs `K@QuUbf\G=c>aD#寝VTpn*:S-SSut6vy΀N[8+f|>M v2;vd9c%?I_7s"?_{-P=VJ[ iԍ= [ُ[{Au@ bY@is[ŹTaj9.I$.fұI@Q%[*6+ }ZZuX@=Iª dzBa2.Ud ^|KJv74C"0c;N~*;z  gYT2 tm XM&\;pi6p1ksqDŽ>X fΜa^Hu"Z2P($kϪܺ5ʭ@ng 4\*D"OK:ʭɫ%X[9oJvo֟uD͟O9{&ۃ { G60Q:nұAt,b+ a*~0AV=G(+-χ@Vk;ic ļ;=33L=Fָ6ai|᏷ qL+ {0q:X1^] fLNmw5{zX3Nd?fsUe2S:x}l^kg 8B <dŒK8C0Yώu!Ue&Ǐ~H\@}}%cJʵ⥺fZ*T29*bu gŹ)ΤAOӋVء|531NOڎcQy!P #P3{2=7wꦖȾt:c԰Gс$Mo:y/ t4챃g*>s-:b@8؛V@jb9Aݏm z{PW@Afx@:hK3A&nm7~LSތ mw7 f?'#E>㞂מ6oc' lN;Zb1vU8+:I*#Ps"=/h +V|mv(dd֙6g -x ysޞ2AP3qSn{g ~:a:k5{2 'ȭ*?=L3Aij NA3媀}+7)ߺ-]{s>m@w+lZiǶ{TE*;eyzpj _qAM[ d:u*Up @G+}rh+8]H׸ՋN@Y>9RHA(@|Pf*6_ǹpC8s4@l@* Ȯ%Sr K W\5ݹrv;ҁ_akp *xU{d+D(4P"`0;q(JPxr}MebuBk25ُ9׵:C?c@iU[ 3P* TdMg> * 3-^|Pl}kV㴏c"Pdl X #PRb z}Zjc濹՞Z><ۮut]'1U?T@r#eQwV TyserOgBLݦӥ],#P`,^Q?pZ %ۧ hϔNb͏{o:~; < %x$*<V JWt6ƴhGvrpP@EvD-Ua7tyggD2{T*e/q=j3׶iv@kU@|Gj]p@njt$ sI&e׿)ScH֦φAs!@ЩL;)=pL%IK*{@:?QH@^{Yh/ҩ43ko^ % P: Yl8ƒЧ3BiѰH7A{{%=0 :l|:͙_@'~{jh4jdhMUPұ/s6 KzFIdBk%i'MIO M$d 7.s3smD ڵ5N&2@;#0l83 ~e/f{AnP)̩%a v_T:8qV)Y?q~lu]4 & 6qv8G ڍontuu  mk{4&zӀ*=@IǙHr˭׽NYVnhy~*4^OBs[c t>h't:eŸX,an%L1vv l{'Z8L¶6 l^=ŋe=0oViWѰGsgHMYff/3@z8`zcX@:61t a%'ʍC09scQc!ʕǙ 6ڵH)7Z$OC#}2{, C@A :fб!t,c [J09Ӛ?}}7cV @[5ک򧘾 {Ѧǵ[]mgWؗX:SO۾dq3}0;B: @mttD:݁܈@M$z:NAz{{C6o%-nWne´_u sH(Ժu/KBα3*v:y? m!=vNiSmn& pDRI+(ݧ&59(s;rjmՏ[k ԛ5ta;J49H?鴯ڇ_ zG,!v-rʓ[=fϐEZ8WI#͢m.JX#x@͛7IRiXFz{{49Tv4j"W|sc94slvD\e``@VD֬y({#+V,z,\@@ TpxgRᡧ'm&lȠF}}lv[&KdnrKa;[ZaGϺK$: HOO@C 1 @F.Ζ-^ wuD"1&ʅ^$۶mfi>@- G|<}lm<4c +Wk^W7?*Ӗ Z@D"֘$5IH,VTj1UAUĐsFdI"1+kN뺆5+q 5Ds9yS=s~Ux{cQq"\fȊ@\@C8)((ŋe;v쐽{I"g~}*@MVX+WJ4BH hE#8R#INFP@rDH 6=zy J(R5.11ARSB!}A*U}@6ñ:Gv^&;CB B#)K(ϟ/oX(O4L/" c1G#WHN1YhT7v?%%*jݺB!B!$蛠RPXrңG*}ʏ!T?! B1s¾AX9;LzppQQ6L,B!R]OX.vV/?ƍ+i>ɐc/hC(BIaIGO+h-Ej@Լ֡C. *II:w)S.! n6q1F! BQ\ GMO(:nҨQ#5(h Amv:@(U.4B!B&裠bYDa}+- \q1=_4 B!qS UDǞ "..N{52)''%DNRii>!B!8QB%!!^4bwR!& BjB( tAE/+HaZ O3Z~f2UXHB!Bq 裠*u>@n$bº 8zBGiY/vOCr}򢕮r`RZ0{xy%'=:J(؝//咐=(B!BR,o~ 6yUWp!2CYrWq\~eҼy3.!DC B( qԒ&Bu =h쫎'~CPZ+GYcebbB!B@EWXj7PuyB<99+:(>!·!yQҧbg~'xҧY#m c%$j](B!BaS +Vʕ+z` T?!%,\#: m\H\FϗG\D֭[/}̘1; ߿*b! DXokBHpXW3aT BHm&Q!iUcO[µBoanS(r[1o߮'!Q KKt6Q-[! ԗ  } | 7\'vO<1^ׯ/f r㍷OdĈa>2iddѢ골X*ٱc\{rJ,~.O>OWL4iXbK&N|K4{SeȑһwO `IF!K 8WtC_Ez./]@RP"8x߄ gLvPa0{źUO㷻Pe'Hذa,XP6m*fo>uN;'KFFF+* JAAlܸIͷjJ̝;_rssO?1O6C|m5jtr{Hrrk;?LwQСCg^5ߥKI>@W .\Hƌ9[bK41iҷo%2VSQ;۷ѣ$))Iv"BHM}ڨ}}3nXYn.ﱼN ;RPRP"8@!׼\Ե|nk?AjwC}6*=|}Cj>zyGkoP?\x>uwSUx/F}Be]K,I|4y"[Y+.S-ZQ#\\y87yt2&O~G6l(v *jk/̜9K\|?!Bb}|gYvxU1hBEn2Cիuhs'@8 JH\ޣ6WX9A]}YrAҧYO綮 R;RTHozQt ?5hA? >>^}ʋưaC a˘,]wiG_z^vʝ]RQ;!ĩIaaDϒR^[N8GK )Iy*${x,: xء"@sS! P"88$h',v@ RRz?-~+q)Ϩ_>֭pXtÆ 7\JfϞ+w6R0ڔB BS%%%BUYY(t}(iƔnB)kx_!6 !q$%h @8D-[-uԑ6mZe7o5kJNNt)Dvu6\3"V~}m Unz5߬YS5 9o|9pڮ{}۶mEriԨp ҩSp^k{tRٹsq܅*mۦmaXWٻw bTUև1z3yƱu K^&YyG%;;[Ə // 0گ]^߯>}zv<΍{=-L6Zn-uTD[ ]#NJ#FcBlhˣG+T< YO$E;72d?۰g{s-C.cǎv) 1F 0h8nݺm\:tXS"?:S{$J_Tm_ M8!r4Fi)kk]Zhz8n .WÇQ<̙3csj!ގ[OK~eO[o' W_;5睿Bc8 n`Woxӻw/? Fwޙ$2{>[! 믿!S|`e]*wqߑf͖_K8=zir=)w߾}kV7oǟ2Ur>i&*ʸqy,⋯~cٛo&syM׫yD??SG4?4KM⿮n6Ø؅"͕T+8O^zv {Q"Ngujks-ɧU}Y\o߿:{W3Q&MoСC6sGG{ofΜ&/=uDHp \Zn5?i[2w|8Mu'(];*m2evm ` YE}U IyU!$ a?׵=TJ2mĈ>U UoBxD0 B`"yT'G'|!8`ş3mnO smptZA`[m?bqgk`x~U? 8o7礪@h_Vy1CXXx<> \~ 4e]y5jp\xA6<Ϙ1P^GG}H*_wߌoec+]wѵ-%ao17]m!(a˯eKcm\{+JH ;% 6D]O,SO=mY\}d\ ;^ȑ,Nǫvif?wCٸqk^7'<q0Pj8矨OxyV5͹瞭)L\sUýrJ'XHyz{-XEs8u5=Ppv`HaR;nM099-Q!o'LR􀪠5BHuC)HR#袮]v~wi*=@c<20y\36G}:B(pcBb䫃gvE9\y⹄$ܷq?} akֺXu:B]_HVGosxEB!đ$KC:K;eDRDJ&G)wΘ6*,9cd5BK.Ovԩ'BQy#ןeҥm_Ҷ}2I6Rˇ qw:+)~;/0]vP2;vv۷ߞoE0dK,U\[ 5G(@B7?`s߾}dذ@A9 NqS>QNv@>"?OwyCKxف`߾Nfɕc 9yoAй @摟&l޼Y~;]>1:փ"VZ`9s'DYxzÿA`Z͵,0">6s6-0a gۼy,]\H(9-<j,Gv ڭ?zaE]0x Ā'ɜ9dÆjekh X5IyI!4WEa-Z2J@@0b#L]eS W\yG|} xS+7Gwʧ[0zc><(0S}7r#f~8_U9RoߡBU$vXX" 8CaLXhbA[rU @ (w58PjjJ@#\Ytn,;`C.S@a*9V#7e54ocо c7BH7:O'G38h @xREOBDq,IJR9?:+GUΛU4,T݊]%;;Y.~;U g…'5OM/ kw=w0vv>r$KM9\ s1gP5'wLK\bԕS(..vj{ܹs<*\W |D "xV$*WXlw ZZy/{iժ+,!`þYó5n8$@@SgbyB Li׮Zq "ҥTNx_An6C zNN>y*Wń`q}w+Ox;?kђSm S a$77Jo*!@a7n4ÆIƑF,U<nj9G|m%@BxFNnj9[!$(((P4V?-[oApK@KN8/֙g­5pBPe@9 8I7r?0oE?b$@իZql`h=D)+[l/LϿHpmHNj?]D'1o_ϼ%KE9眳0cϓOV2nB{ıkV-W'*?yΥ2 <㥗^9ʪPn۶S# =!$˓SݺuT]߷)V xnAԚ/q4(BbD]/&8xނk+c^"ݺuU0?.9<̙+7|2"\M7]/72?#kU.8ܿ@Fe krm Cz㍷G6رS{}{+'0Ctzeɒor]wJrr~w|W0NŗFܦK/H2@\~Xڵ׿^{Q:5kQ7GCc(/rT]tVE~;e͚.#кu;r#ns|?"䒂Ҩk[CmUƐs}y3񩧞Qb*HmVÁ>߸׽ E;Uu6HJJ~(!XB y{>넰(b'8] & ~RUީ H!N!1CzRܢe2ձ O=VG}&x@m?<XT|1`ë{#V?r+!{Pۡ|:v=zpe\wxRg(oDOr㍞Vo{\~q9r$K ˝&/J7 w7Ͽw7O=wu.n&'OQꪨ8V}. r)']p ]pKkQu 7S,X$W_;pJJ\'W\qov߯p\sQtC*S-Bԩ?6<v(6!$0֗rd?_ ӡrP czO5ğL e cslv̎( pX6|peww,xyPRБ|6(Wݻ_'Hnu8gP`x7n(m۶+؁ %007iD!v햬liѢ$rrKKxZj2c-Gkux: h/}E7n죪 |Uv0Dx~e,{v5k;径V>{?yq߷~I {/c0*ټy3,{\|K,0YN»)c j@SBBr\M^ _/5YғuO=̭bˈN!3<'S v-k}'BHߩǜTP\+WSxPЖb-\W BH%9 L@rb;.N9 H0Ӕ$6xMP@BWk~+_>V!$())VVy/TP63ḻKD5- oM^^F ! BHBK#[\" ͓LCPpBf;'c!Rqmߌ6mZքZE 'Ab1IlA!9<|P"( /g9E%S\f!NNRINrBSiڴ!$1^z)zFdͮN㠮IvYW Y!RSG!AR^8c_\*%elQZR(B!Rz͔Y rSLw`h f-F;\5-I*/PqqKJJR~Cu(Bj,INRSQiHaIYbDxIM4sB!B:B;V'V BB*((P9lIGn"@RD@INHI)5:,ņ LJղ29џ7:5 $1.^)B!BH"|3ȩ^@(.sOg(H< `TTT$Eq*r`A"jZu$5܄B!57Z )lYפ&A±+D#{@~DRSD!B!fȜF~+**TyNʦ:W@LPq1R)--=Vn|Z8CSBAx9IIE!!B0)5 !B!$x!,W9NuMjpBH`(wB*$hXH`J!B!ՁTRTeXֺ&S^nc:BH0P"| E=?jJ(B!B- qjR9Lʄr! 3̝-Q "CRqҢN7%%]$B! Rd4ԚD yLڠlAنe1=HmLj!$0!ҡ^R!B!bOFFET1`gqf\ts8ŝJOOBj-&.f]BHNAqEFlB!B4}trSX|9r8eB٬eո+또BqqwI:Z%T!үyC[b!B!LRRR$--cl T (bꘐByy!i =IB9U"%.%$֭: 6N`t8S}?t,\H23СC$ٸqڵ[ 8I0$6l4z&Mѣԩ?ѣO$ٴikVN<źu #Vu wYʕ+GҴiӠrHG5k&?yҨQ#Sky^^{GFFZ7FÇ˱cocNZ*͛0ر4u,_WĜ*瀿T4ݸ>233w[\WSQQܹKڶm# ʀ Y8 ?-!B'11"  B_qGm#l/_!s3:ą>%$$ʠAz,˕k*P @-wSPeȐS$RXROby#G`w @'fV ]DU`g ܶm޽[:vLy>bbÆ :8|*Lq1#HmKb-!DA<9ԢPlq-;z| !5x̝;O Һuk_dg5 _T\5jDSN8q//^>G.BHԩ۷_:w\ {D-BxbK\INNa|aPvYAٖ-[nD%^ru#B 4BXIIL1z믿U͚5NR0<3jH%yQkUw7AA$'rk֬7ѣG9H^zH6Iuqafk=k> #\Q #vbԳgO3f̔|6U`": F*O`ã8[b !<زe :Dɸ7c-.¥0_M1 _Zxu]x8Z|Oh/«[>AȅunU'Oq¾qoݻϳ-YUߤIUeVA g D gvWa6`j1]INf֭< ENq<0(c`BYk9J4qf_?0e'C%rxA\\4 %K`F{99r6 DjnfϞ=eƹG_x ʖDaRRnsG!xc; aHvsVoG8a6aF\ (Q38]z. 롄؂A6ۯ,טyݢխ[7%TV=mz޼{РŵwK⎷Z]ts4>ѣOpC=ԍapn5q =g{ĠeV:X PwmR{n~:tho+!/Xq:y3t[s"_*/|u ]t!4v_w@x~@>\-A]n*ϱPN;ra>#, taPF8Hi&+S2E Pp4.c@IBޯrs{~yC  Bbtf7@ܯFUb&E RI1b|nݺT*ѣǔ.aHq0 ևA򫯾Q/Xذjڰ6C85E<>aQfXGs>YhSrO>yjC[QF:tLj{kGUʮ1pN`dt=:!@=7={HB{@iF|{qri#յ `xUUBYщ!tǙCφSN9Y3 d4Vy>B1cQ=X D%y;/pO:A] 8^VRZH@nmmxV9ཅp?S#"@ᚳ˕G]:|Y GyC>*]v=}=ZA~0]Оe"5|^Je\P Fߛu5o  ¸~|VUyUkxna-T]%$$z@5ee1k}8g\5MKu}%y-7 ;:sTzA}}G}?n!$xsA7+SU褤)..U#TtB :U !`Ђj6A'opo$6mp6kpMa6F#CA# Ux #tw歷,𫅋p0ځP%#|a u` {MV !+˚\sW/ڻhprفhgm_,9ʯG,Nm.{ۈE@L{u57:h{c"Aebd@ \@=^@09{= p^m>`a FxNhPB0?VO>,yT TL6 *y'ϜtR6 3Mqlaj p\ʥχ>?Ul|u sᮠ%h 7B?;Vц[ L "+kũs]\ Ѓ'h~]̄:xfE{ւC !~Wm: F져{厑*0,8^Pu6Cj}7U~I kBƅ8FtaL&@O!W*B  r N(V`A^z*ẁ `(G/ҠN?1*s O3kw;0ry! VKֿ 7\;XmDJn*_qJ@!woߡ}v#  A*<s~t) ?)P˔+q@F.#:)eCx P},нBpl v]MeUg ;+C0`<Ǫzu܂KOAhõxx?eb- M)#Y9͈چwFBj" ~ߴ`'b(BA-y#aErר4 B:u0jIݡ( дb(R"D:zUўB*?caae@~RיӡC{|m*>edԑF Ȑ3ȓ F,0_yp'|]ѼцH&:D*X ]h'[1cf } \׏799ugՅoC"QPd:ءC{OxBri+5uCk3|u~6sӻw/m֭T~,;i3{Xoha*s|r5 UBU\UUÚ5꥗^bwN ?~qo{1/4BG0yU!"īX1PbĦ6HvCC*M6 K(`4)0(vaXpt) < :zD? %E"An/K"V "~p~M9s 86O:u2{P&{!u(!;t(,tat oԻ졀k { GyҤISW^ ֭7d_M`꾉c9¹:C뽶q2yJ|C^;m萓F# B8`?ܹsEH+K >: ʙg^?5J;08rxF k~B@,6<ǪzIwO/ 9q辖/‘H+_\OSWtvr5_^ tPBV 4an]a/–AڱTQ+0 Truclp)Qʊ+eɒ>_IQz;^ƶ^zE&N|˕"N8tƟ_]"/qCsx\ X \ޑ3.1:Xfuֻb[P ~Ď۷:Kn>vxMVک۰aOT% ]:xZHo5m#or iGR?86ڧ<7k 5h˻߫WO5} ӃAZU9v쨺^AF@(!S|סC7m -pC'A$'Z lf+ᾡ=uYZXU5 - \2Ƴ9 "-h_P3Z j}sJ)+PtK=8q}@(Ơ?6\pb =m_I??A4#5u9I"G؍>TӧܴimTG{8r,G*:tgkFi~Tɧ 'sU:9c$%` .80"3Nq|ކC1~%S?mB_'0f"޽{d9F0~a-O0'={*FcVO={ ˁҍ7QF/# ej_5`)':@,?4VBr8奥իDkK+Go>F={9kF/Z}E粪e=-2 d$Q[_KBM; mcǎʓ 7>2/F][Ƭ :u?'%ѬY3 U;ñhP>ЎĊ._ ={|JyԨn ҥT~_-@xG{^瞍jVft#ͬYsT"޼Pe9 !$XRi>M <}y(z_4#|iTsϏ7_$MЙ8p2`X0]ԼySk9>mpݞu駟^o#t!fgg:6Cb^%c7si/$BHaÆ*"!\;ȏCxxy3t{w5id{uma#QPhj\Zpϊ'(MCe~]o W^y7&Cҿ- t {C_=qݢ@5md=|}'|<QǦWZ!3x9g~p@?أD4 Qh{Fc'  tUQS|CY t~qMP|[Xᙰw~yjC VύP@-^_bsUi+--Q(-Wx!+u <-Zwf!N]1J;3߳*ϱP5;9>_}=O{ 7ײr/yL(L!!Jxxb:%Ĺz9ee: `2=HotyXV xp!0zd+sE0n`ɁiԨT;`LWM=!!맟f| 7')W]uL6] )|:Q>9S`؃ajmE9rd?$1*vܟ#'0G4ts\2C _$`L%P]vq ftEРACz@(y~V(&C.kl2/5 ?+a{h7tH=T0>ݺuJ̨k>Kyv>{ǎ'Tw  , =zfE7'xwhϚp>3?5ܢ]y8u #ƍ]g5 #?-\!R UVRݺuU[_}^P¼i9Fܠ6 /<_y\i/"?Oÿ́"%&&%\<~:PB@9-Z|o!X Y]vbݲe[C?0dKeƌ.NY 꽻Ӻ.z4.tO'Ip}Aʡ]˲^IBHx >ݲx˧uJ|Zb7Μ^{&غPռLMre|0E [ی. }YY+yu'bӠAdcnNN2f'F _@ 6 80YhoXYwOtaT3B\068C[`WJ@;恉Up_@=Ȩ =;xN*fe~ۢ.ah:ew27TYqӉǂk,m a}C=ssBK. 4~pc@N Ä_eACtHpQ x bpJJȩ,.q;V=KAecܻk"vΕӈ^%(i*X q Q3 l(x?zBӥKS!6D2i$@D Va[.,Jkj @f>;LngJV|nn2~aH!B:XFȰc.ٖ@q(Gz)EO7w8{T?5Mb8BHKwj}N{`;ELC~L72w !B\]UَD'Vyizh0wVrTrbdB!Bj":U٧5uq?~yy`B"  BH)--ygJ"k:pּ?91? q !B!N}hMTn"ϐo |EvP S4S$))4K,B"BiiO ϣ 1KSTT())B!B!N}>x9 Ӵ˓%99hOIB!!$)᧴IQ-IIʋ#$R5͑/6?<>ղh>gNSNNdff !B!8QW1=9gK_oשSzy{i<(dUoL`?A ŔP O!$\P"`IHA T^B!BH@}3̚U 8BcplRR*QȘ ]%?h_%P脐@2KJ>--U?T;NqJHD 22҅B!BMt_wCD!A }i4%BH(p85!$$ \Dz2)*GQt#𙕕%B!Rݠobw*:6Z`s!PD%)RTTw&{#UQQ[*B!i@}}>C$60D @ ==)oJP/lB!Bs>"蓠o_C" R HtIIIVťPpb B/kzIBbSO;w8@$kGʌw㕠't dǼ@B!ʃ[{3\Ţ! B&%? )BDP.l>51EHlвeKܹ39gQBJ/3Ex?SRRDuC{^)((B!BЇ@_} -ǰ9#@UCDqH{B?(Bl/ytؑ$$v1ڳglٲUD L'9 pOLbٻwܹK%neh8B!BW@}!З@} >GH$ѹ|D֬Y/ݺu'Qdv0{6Y!+wgA;/?,_AO!B\\B}bU1uE,s@ܿITcz !  B_Ἔ5Iݺuѣ2o< @bHZ;V/WLJ$l Az9K+s99vtJDP~ mb BEwSo/,ɥ_^B2\E!գ_׏u?b[}B!`A$)x9LHRb#˗>}z;p`8:,Bg7-_u73CчB!cgw{؇ns BެW=EEERXA@~1ᜧ$Krr!&!Ey xC)()"㳤$mJ S^`DI6%'AZn%;v씹sy@ *\r8༁b 433Q7CB!Kxzy35o%ErC`*TT0N !&!5H~IAТO0`_*iI15b0yeɒ%RTT`&*Nş7*V!sG B!BOn\.=µEN(--ME X!b 1 (h"^zANJr$ǘғ%#9=&:C>dРcٻw8;o ܚ莜;)<=u`ߎB!X"8^|s >j8o(55RŹ#[B!~bLE\Cp/ɗ:&NaÆңGOYb̛7_ @ ,XHܡ]!B!fxJII8 R%%EHo 0l_b;9!Tgœ?V(ʂ29#WHN1YhWwqdB!}߮dD"9z# ʆ2k ϱc VWTZ$KfJDI,?B BHoX4(sQ)sHYYx5 ϐoLC!BHmOQXXT <~A jN 8(BO~qIMDŽcKKJ^9<D!BH[R5_Xa_BDq4x!)L<݂"Yol8IvfyG\9 QQFiUtnQz6?QR$RSv@2!B!:a4񞩯yP j)S>+W D=N/L7o&@oRRmRU(BMnQ94n}ڮci2oINL.).pl8:agm$--'B!DL {-؉>KAAD#<&99ye-k˄ A p!N!ı;8OEIY~8[ ?P4{ϲFu.gt)cHNg'i ?=˔OB!E}x%3>>Nh1S`())QS2Gnir%8ލ!% lXee ];M ן[z|_#5=*C`LM}JK\b5#y!B)?=L-G.A J B8*@ᣨ(y|WX+WJ4S"8ލ!%$<{W-G|k^_z!=u ~Z=<+?[B{Vl6y槗S~'-2JX)Pn}JJ y<>>ARR+>1ҏ9B!Bj> @YY <&xj@IHH4 ~ *ꬰ0P }piiil7G@HK,twqxLy쮣dpoRִNc5ukY.y,ݳRX=ZtwNJcNJ`@>%C INNIJ!B_<~0 ,=8VTT,yyyCEc Oty@hv=K~]U$'' !T7BIA%s؁?C)g~ VglQwJo D7~+Tq5;3[anLiذP!B!x> 3>So"Pt7nddFըS'CƎTMu!A!đ*TQFu*xڤ\ol;p[mNP 1Dz:BroF'G!B!KOa+sxG(M-d„2hI*irղfB^Y!#8ÿ-̑g{,υ=ϑP=Ǩ@wIN8G(JU1k;Z@wLϟ"7\33ۇB!R%RRRqFrXG?!;?s٣EaÆr>*!]8 3ut)T^_>r 9}!o%RE/Cɺue%hѯ~:'`=YRR*JJOOzŚB!So>sa(0JLX'@ B(. %Ql_ngT)?nK>u-[s\\]U$H$9t,Xa)Wa0Kubg: PuýB!BEFF=f= %)iBzMYX'҄QZKʽk<חmI9IʳHSd}k%B=ؾ}L:]8`t`s2`@ӧiF#+>UDOB!BH@_}w}zs.!N@Q( 6yݻEh,w2k<ײokKJiG;vL̙F!5oB ;E%<' :5mڴ|.*JKˎ.:u2(B!B" ?䩾H\\$$x''Օ )ʕ{8Q.2L B8C{Iut=uHk߻H(zX`ԠA5jJrMjjxU$ŹX'bM !B!H > =S]!ydŒ_hLh?~9R=nFq!#T`a7H8s߇rH(DJgϮ]'xNݙ2GMABx!)+!B!D A1$E @m#bCu0eS˛\TTW]B @G%9^Z=K/Z mۮ>3Y,<_nCU\\^4(B!RA}I7~|C}f~rJ(BZ!$c#oVެYq\@eWF%&&Hj*B!B"蓘@0sy! @GjgG%R-8wZb8"iJJUպu3B!B I7Ab/J-=ztw!Dqqݚs0D_B.$'' !B!T蓠o)־ (>zDqJF:u2dK: +!#TU޷V"Ū}C!BqX* *II:w)BD\RAÆ ;n w"BH MDI:% /pE;ͺJ(zhڴܷo#FyB'|`/|q&B!8MGA_쳈X4Vj[ic! ТFqI 9'&'$ɠ<}),-pQPRdsDzmJJBh9vB=vjZ|[iuJKK' !B!)bXySа.!N!q$(O~H*yhQײDC9*8v;0BKj~ɒ% C3*B,$ !B!8QWq{zGl! P"8xIE)3%CFuloBN٪eŞUGu!H(q쑢_!E2uk.u8(w<ԕ!nt9 !B!죔>mׯq]{!ȫއ_|Yn6c]^x%ٻwTYbR4!đ [IY]Fdˡme37ΖyG.t6}珷sBrNQ* 3G3$++[~qddKݺuUϗK.X5Vc?1B!$G7P\\8YTT$C#INNk٢EKd2axiРD3O!T?BI%|[UIONFg4XOM{Fm] eA*Km \?跒J8"233ϒ^zJjjr+vV ' *:NfB!Byga7_";ю)S>4NDBr4!đ B.7F^r-ϖ~&߭Qz7.ݛuU!꧛uUjC?;n.TpI yALNN>}HϞ=$;;vLJKeJuagb?B!D_8~M*:Xw+WG(BKZb+ʑPiT{ykf :^[ӧkK̘1S>jVz'/G78?'}Lyh}yeҤR\\Zh|YTT,W\qرSj[%vG!gT{`h @=ztŋ. !)P"80'Knq:2~,ڹTJ{!MILmOU vmÆ` |V2f9BT˖-KӦM%Vn;v?,{Zn:${U]t1:>PGd…zӦ0|ZZIq]vl߾CtG @۷oG)Ϧ]|B!Im&xGqʺu$77cy:2v-qBSh๓_/eaT 7+^$:WV[+l]ٻP+6_ӓҤQFiUtiQz4*op_ogzXIOO.cvٸqlݺd#" ؃y3ψi#<zFn~֭+U݇ӡC!9rڵ[y>|Xy!pTeeʈ(;ǂc±chV{X !=!1AfJ9w >?8&R33,yY3l#MW\ gIͥ{nAt2ӿG}{~׮]w0JN_cݺjY`x7o8pPkĠ;wc[)oup߱cС P/bwwA:wTLmAiҤtEZld߾j9c" Yxb3#33S=w q FM3|q4؛$ `)G IMǂc"5KFF29eάY2kI=4?M L@1l{|k*DDO>Po=(ߩ;sz^PZv,?[0yjV"a c=ڟ70#³YCM.|/|QٳgTi^߾}kwޙd]?*]Vh/`?! XO˂ =}}_!SS~4sJ@[MO /oS+نED>!-1A4֛ڰa C@ kCD hd=E; ;id}8:tq| #˜9a!mÂgzm,^zBB<e*xo+qܘ $ie XAF#!8 @!-xi,+9`<>#e|׉_!df֑mv(cO3 k^w?,ӧPÐ1"G5Dʳ7_mH$G+9xa9d vUɍ7b.z2xMqϿP^FC pp-7?+I 4ڵ(AJp\76Dʻ;vpҨQCnNNji&.or@uA[Ms_yŋ=.h۶de;w*qf„'=#xrcOVV܁Q"%B{ݮZhʌ}c@:>eƌo;nj Hm1OG-[t!nxw:Vp[ձKǎ'khɒe{D#B! -+YE+B~[7S4h 8 ;kMF!N!$@شr)،uoA;ཡ`aγ> */@>`./ϠA"ZRè}<'yȤIoEPUƄBR8߯zxՉy柮Y+, 9ˆQoJ?FT^Uz{+ɖ-[$@h_V lGW/^"? Y< >?._E ng̘ 4z(yч2@}h[ğE~Ue8$1bk'1b;l+裏>c/upO',;%ho:KΗ_~m\cO+A eɶ^c>x> \嗏U#u߄ĉoy獩0G!5& bU1g+zXT&bxPa`;2\Id sM+)k(;Y,_R < .8{xv@g« Cx/2 _{mu?fxOPHp ╇\Aѿ_ѪUKSǚ3uuJ޽0[˧~''xl/ [HqUțo]UArgp,h7^1i{*w xGT=9tO4}wϐC>îgϞ#Pgy%t!<o$ÏmG䒋<!\½!yB?vƍ aB1C"\Ef-3 akֺXu:B]N[Nǂc"'C BHLR/O xPM[x, ++[6mڤ'+"g 8>xy!.pBHm"//5S10x^B➌g,wX  {(!9pƒ>q0!$DY Is!þ.0"H B Yg|Ѣ.# Qo>\> vn$=zT,hTfa4qP{@ zذ*P16DGэțT "ƍ9B< dSO \N;UMUepڌt9~9aF%" dgrQ!O+!u?eQ7% BHm,?sU S3CƚPgPP"x :α5 OBe׿N;;F\c{F>})7oԩ?'R^k{OA!0cE{`jܸqH^?''(!|= ;!/yy g0!$D@hiVO%(Wʪ)Qk aRu_fhR5k"N!<3sSM7}!l>Va*mH_ I@4eD01HP|݇\5?!dZAkԨumabGSv U"uݺueK 9233us9N XWD~7t?Knn-[!<@Z By{j13dϞ./XPKmp!x ຂu9 O0!i/B$#)]΍oⷝ,hϟh7F#'3|A' p[7kfnpETUUXtN}‹! $R@xG1ń O8QiݸqkڮkY \Tc%+7^nYyN!b˖-T5pD}Sa}qF)p]&okR˳e)B! A5}0!7\ ~ (LXͻBj.V23Jj(FP"8`x!M2Kf#(R` ~3VFBLXpи]!^xe)..~ѡ?S}@>:YRR"3f-7.7p ?Hx.B-[$9I{̜9K؊$<9>g'tu$uFc amT{nj~ƌ1}jٶmg픨jǎ;=BǮ1P\??4[?lqqa9&;QAo7nBm@poZxAo[ =N qxׅWxu?(RP"X Ƥ'I0'E >/oR1cQl2+wڭ V`/3Arx( jvBkqx-]w)I*~w|W.o:_||m*:^zk[:CNu$fvۧK~{{ҵk6izoS`@Xg}0ʿ![ >x {~ă{Qn[s,\[48c3w}x3O?sdN>#λ1u֮y_6 oOn]NzZݧg͜9sO]۞r`Q@u-wk&Ǐzɕp~5{nu͝;u3穧Q۷+c8hٲ'4}Oǟك> sYg!&{D2g (t(wT' !$&xEKDǩп$B ї !7CT[ԩʓ?zB?%2fķ=B[o?.Gd3 //F;U^~Uet]*#zRRG^ y䑇U<}F E]AfQa1կ__`Lþ_z9ynj}{so+koϜ駏R^yu^p'^ <!@|K-ThA \q2lP!ox؇~kqU0Ʋw^D@)uiX'Ĺ`@4o3+ S,E @ BrɆ4E'ׯRu.2Wfa~{=F@?.B`v2z][ _ w77p}<%?e}7Ƀ_:;#1 +)W^>"ݻj,ǎ\@:4? ,&BцZXw{%WCM#9B ڪSÝ6|Wxu%XGOC~q.o) ĉ\ZhժG03u]XkarS" m6[.<%[~''Bj x~N^ ʂ2 dO #)xĔD?aqj:X/!&..qA|Z'eO`/n@ɇ !vRKii\&~l':" X]f'smYxĈx) *eeݡC6mZKM^AN-- 8·JF ;x>;ʈݺujo_{zD ?Eov [f^;m%|޽U'm "JEڀ:rT_1 aUA_c(Of eq";?FBHmB/} E iРJ4}O ڨT2#UW>^Ë8ģ hfϞʀw]=o8UG>lڟy>!$.]:b|1i!:ΗyMO$?WCB*$%)Y }` iJ:v(6m_~Y(6BHdȆU0Utј(5_TG&_>v=gfIwM<@B9O"`ucė 06y B2b ^c](B)Or> ʴ{^oT qr(8 @];B!x(W/u3mR#P3`@?ٷo:tXVZ+#F0=-KTx]rE*ww">F!swʬ (f [+QבU ^о}<['q`D KBD8iDDyue72i{!۔K/"4i0j.t:tB!9h41'x: !z+^@7lؠ*:tHyV9$ @vý<"_8tR!붲]^\Z,f]tqtZB*e˖2i[А'b]O׮g)zB!ęmGiiTP6GUOH!x?HmF?gH~BH0p>!ąwjMF廍JfJA'BH,ӰaCy{5k PorlB!lJJJ]VAɹjPX ¾Gׇ@@O7!bӳΟ+!( !с!Bz4*q?+㱼8rHA !5$ݻB!$0Cz)z>!y4(]nE]G C,""wqAmԩSUiX\=(B* IO-{,+R̬#B!Do^n)f gY˪qGPˆPӝ: <% 6ÇnHi(pDHMY!B(Bl= i[DB!~`4(w8wٽTVC 'Dg͆Bp˃ҧyOiSZv0WHl"\!5ʌC!B31# H *gSP6]NpOgfe8Aܹ+B񧴴xI@!!$qBH4oB!B '޹~j%%W*fE$Zu!A5g ?P"xhɭOMOtT!B!$ 5PlZ"P=ZڴNHi@   B-3l\<B!B 'Iũ8lWבQFұ'5RA7w!!~Ѣ5 \-꾗b!B!p욷4ũXKvXk]Gpp}# l.yj>) }ÿQ!!o/mٝFˑ#rXE B!BHHI%~HVV@P6]X·D7 ^r? A;B_W!]\).3dd!B!PWJbb;"?6gCh|τ6ƢH(>>Anݪn߾4l@ A.?VC @[qRV2"#bRRR*2:B!Ba55{q2yerh8H&NEBL$/B-l3b~<BblxH>.^P^T!B!$fϼ|9r8eFY|N m*O<!@h/ cv⥬ 딩τS*--U@*$bJ#B! DZZ[XAhٲeԫWOI2#XG;0ބ8x)ѧL-悹xus{o!!zE-j=Ħ2A VK Ѯ˄8twapzz4hPڍrJѣ4m;͒%d޽-{={HMfѢ_q8չڰalڴYڵk+'ح}…Eҹsg ۷PVZ}˚5kdysek0P{ yg\7~ڴiY0]5v~ '333U-ī v%m۶e@Y|dc^%DvS{2-.۴ĻP!T BH 2ÿos2?,*/^hk~@ivO,++"#g Njj!~OKx ̚5[ `0wwS ֭S)#Nصk̙3W7o04U֮]F#-_B/^:uHnoN ~'uNcOMttj5ܯgXСCx]5v~ 7Qfz}Q x@|SN9|*Lq1#j.YYz9c]׎VcbCd@ZTmiixzjq bEl&T?!Abԋ^P`2x&?a3~Lʎ !15Fi:tXeɂ e}rĉoI^^{nN:*oΝ;y,Hʱc/-[HMǵ^>YMV7n,5RPK`^lⱊ?;IId~VVX\gu$kWR35H CP 'G(W ݻdf֑hrX턄wE:MSBH8gX=~<1!$t(B#%`qRnYnA`zQKU s`";F>MRSS}cԩdʻORS0˜"ꫯPAt R`Tÿ鶇Vkfk4--M֭He˖ρ>Q 7! Zx۽ےYd&}cWoz`[r ?֜gv !2P"TK|yOc{̗wx9=<rB_&[ng^ձfZaFbR,$zh6 @A R0VXX }?seңljz %>|XVZM'"mРzB(Ek}Yγ}σj !U!Jxx@1ǹFx9ee: `2x^=<''wǹ8%K֭8v kX5={MX^^?p!$$ˈO%\S-yz(Xq{zr|׼{,tt6ԩˆ /1 Td)9S=ٺuXt,?4Ko' -WKq*ׯWJ3t#؟fΝF G"(>Q:X㇝E+$ȋ}YsG>9:ha=.ԡGVs晧 MU!/ϬC@-}a˯\Fh(8+7F*hѯ2woNA>xIP0@CP|m}~?=qd.D+u,ՙ~>nwREO~>~/5@f+½oD@O>{?2f޼ツ\x4T}oP~*.\YEa*&LYcOUѢJ¾*T{wM_X\ڏ X.\P"MG>W#BIײe~Sң}\~wpOՆ=9UUuTJVU߲QUHial|tjȗmMתʯ>h0Vzo篋ۿ*z4*§D(:NC}dDRMuHzQ xnrpkBm*w? Of7pdܸqq:D<rnr8E{]BM^&p#}Մ.vDSzk|eZh;:i>h!}%3p'4ߎJ|%*{Pء[ dEmB_}[oÇ[1Oep_LZlz2VlO*(3f~RMalڴ%s_-I~ 伂@1E~ E?]s͕6~ih{I߳ddlu@~u}̵ӦMK^)1c]SN Z7pk𸯅g D? .8ϵ:۾}G?ᏨOe] {WG+; k#.t eSuSkWŪ"֬Y7{kqo}tY6GcX=Gs׍{F`r|k]lϋΓdP!CA?Gj3ɐPCcRpnoaCUC4*MZʙgs*I=Z& _|q;TQ?֮mvUU8cikN_^4v҆h,Yĵ]QE&=SjW 0+&LZIWMB럨EKtQd&u Ę{˗ܮIsUNSeV8Eoo~Λ7c4?Ux׾lmmqG.(4PN)TQ˻ҋ]xE۟ĉ'.;ez/:ӝ Q=sM@\vYk NG˗_vT8V=Bߛ~s!*tTJ)nWZU2߲k)ĭп};x==R?`0 (u6SZ@sɮԝopQʐ+\q6~hQd&2e׮=n({@jϪ(D+P;Ů2dӦMn"O>kS03هJ.Yrk-?ڛTR*_ET=&!1Q}'j34vGzDMzP+_~u_;uYx ~_[hE  )y(Vnq)biQg}^xak]Dբi(iHZ=oy n&WPÇ4ɯ5:@ZG?kR\!j#-y+ߩ XᆵٳJ wPJr*rSV 12DS~\ N cٲ3Ğ—+V6o\wm6kkk|o_^&HoI~MdΝz;?6?pD`ҤZB֭[ӓA[2eW~|r\Ô-}./VvU>f̘asu>4ɭ1UjEy_W{U=&3ްacczk;;w0|+yk+$7mzOYJ V֭[BY1sqv44x,N;]z5u]~y9WAz]~˧ Z̙}ԏ7o;/@4(l*N_Vxvؙ~i[E:j^h۶`dh T}m"b#Q=~V7hg˔)ޛ4O_v[o}JϚ5k܄$krCzص$5|MSuX1}lzM |!ײ/^Z=Q իWr~#<./[v M:wɅAwn6~#ʼys w}cTЄv{Mw9=..?_N'G)((^-JEr `=쳙+41pWۏ|7E^KGywp-_~Y鵿sT5w};vgYi=/,~V~-J?߉EO=o~{l…ny7Jt}_4Zw&5pK޻ᵰ.cvΝz}0K9ܳ b w/rkh]:D]`O T*sI&`P.Os9ێg==b*k{s)uYkwv*Qܹ]~C})U 7N@q*UmYDdBh/{׭]lٲQj3яޞ W4(ޅ&g̘naE. $M@.YM>L?׭d D!-K/qؿ.Ia%\d ,HAB+_vN\rqHmJ{ɧ]EM5 qZGc*Lb/Z ~Mv^^{ymVs*Tۇ>ދWзbkazQ@#O3U%^_Uyu]"t>%CSn݆dQk HKx=Fp:YG벮J5 t/ԥ&tiiiM_khZeAC՚ }M 0<,٫ UԨEznR%*(tI(zi_轨 =;p^Q[,!\_ޛ#.8/UBDMjxǺJQG~9tkPߓȡsԂP-n3Ue9@Ϝ!gn(kRITptPtAb.MNkJ򷯴UƯΏ/^xp!s;u'+r]s+u_gP젢G:]GiS(,R24 ꫯ~RuLc {J|4Wˮ%Ӈ y1b Z3F-ޟCxdֱׯqq'}3Iw+ "ʣgˆ QZh޼PAP 13 /[Hx7^oY@@_"o @J25IkO k)S& Ĝ9F_ˁ>C1D6@\bI֓! 3gg0i@(,æpK& Q%ZmTʁP6Qc tJ$TSeE0F ,~@XMQR" :;]m(7M4F Z 7(`LQ-! êrQIdQIRZZZ "hl1h/CU\>jNgUMMw^r hLMJpvp Vukh`8i Y~qEvJ Σ#jkk555 5=4Xw&ȯ&wLE8(' @?AP jkkMMMvpPјCcA4јDc  ]mh}@sß`Lm(\@UeQwwwӧU V]]mzXGGٳ:;;mo4Y2VԵn d;~!@bÇBR"R +4[ccٔ)Qy0TUq*j7>I&y '!lWeà I (Ⱥ1@mM6ƌc---{=O'If\ߡ ez| 4Qx(8*O.w^W7ʵJj6iD5#Glޑs$:ھ*l z=?x JE@}@6](8:+u۹swz'ѣh  Cu8p@zrm5~ |jQ  @E+UUur t*Rݶo>w[mm׏qUAZ?(U=AP'}]@\*FT5>o{[!7JRZ_z]P']oo˶zV9 kw@T(6^ToG8@#TjmOR>0|+)5!@W(~}m`gb_ ~# `(5 CQE#Nޏu7#`#X-ߨu>c P?*MpGJ0BT> 1pFn 8FA@+ ' t@PSJ@@ɮS3~K#F`0JJK$r.TCG_G]W9w=S()LJ>HZ]]Ը:ҏ0iLNT :e:;;]LV[uu`PPՏi 뭶 $UG8a---=u nTQ  !W({ZCX7|3UN :xp&vAž PISp^[G-Əo:RI&X[[5553#m!M5b+eG_kp6nZH6ed;xP8C-|5 B @1S_:;ȑ63U8Shl1shDS+*R[t T54ѣG 1. jn>{I_S cm @% FO*4~ B4@X+Jc  )9R.;tōEL涞& &ʮG?~!7j{h WX'@eSXZUTEY`h H0& ,22 @\,wtT斞UGGk6qx+ A4јDc'< Y4@jQv]hꤍź?"@]nRHh @lDUtvvW$hwG(bGʩ_['\5(I46% U@r#BsHTMcz?T+Cv ]뺺:rDc`.5b0[!SpԜZ)oծ&hY̍ac0ʉ5@E :ѣ Bc%'@-$XLU-j BcU@?X" GSS.]cd .1Jh"QׄC YWvv`/ubq1d| V|-SUU@\c`B7@b!j8 @1~T @L[^n_M7@IBu 7@[ȑ#6vX;YM6[oC;-ZhSNy\WW[]n}mɓm9x"+DwږQF{gښ뮱:۶-o >~VɌ3l F>lrH[mUU ӨQu6n8y ~?s[f]rE?gy.> Y>OدZMM.LLδ}_ ƚ5o/үo1sj?/#q3gδO}_9gw=<#oW#c/RЅ5mŊ9\׿vrnꩧk(˧w~3vmW;~]oٳ>oX*r-Yr ~%}]}K?o[! {w{߻F{455uJD߷N ƏQEgҤIti.I$\Xo}oZU#s ௼z̯oOz Tt6<7I}v?kۊtCSN g'|~> \DK3g~uӦMu߇23cto|NH_7ܶh[GsG/~_{,Vy*ρl׮}??}=Gih_h@_t_ UoͅrMTtc=a#GsW\<_ƍ\5g?i>:ްgB|yz-{;P%hv@c_{޽O~S/̝_J|}_u&j/vک_ye 4AwE@ fʢ|Or}0uM7؋/H^;\'/x}O/*s02mmnM8 .*>:FQ)@i$  HcsQ{}.haB! eNw~}5.Ԑo>s/s;~>fQeMU>\~eG _V_N= ėep׻(q=j?ntUN k}~[}O 뮻@kmm]vU">_zZ']uM}Ï ?g%Ѿ>Ҿ. H>pKm@wٚsDYzud8 9眝q&MCQ/명>UV (97a;֭[ԂNh;Ny?Mre-Th;꜐*,hw+`)-r{&­tmΜٮ}N3@t1zP{J}}}M@ … .{q3y~ȣBhr_]ʕ/s='2MT[k{ݮ6&'|":sK.*zK/vm\SN9s0ͷ kll^z]k/ʥj={FC}FPجY2=p&˖HU@uƒ%[RKk`FF;PcֻTZ[G]ikYc @ m^͙N>$?~km=Z/NZW;x vСCjR0C6^|PbZ }NSLq <=~zV }u`٨]v8*j5iԒC* ڿE~˲7hkii믿~w?[ 6!)|R۔B3@i_}rU@jydI/|*Ӂ=:ߒMagUUW'mǎ/'N.Mc ,PTP4?~^ ۽{[pkiӦ6ޤpWLmq㦢ݰaCB8twh?uuu !ȑ#^S]@ڗڧ@@ʔW_}U 袋.̩?Yt;~_jMsp٧ܹ @ZqE@T >#e2<֏z+x (ԲqW/o>_Yh0Q |Ǐwgڛo|^z9\qG]tUWX]]v{_Tb~SCC;6UJtH۷`#Z?Zf=n"/逸 ~?'nz7ao>isw}胃~TY2뻑w~ߝߡCv&G~5vX[2w3ýҥٳ T&^`~ZN2M۠m iF0U(Ou]m555{.(Zb=#k~BĻ暫o`SʥM6uvxtRo_?dڙ9s/;|HIPKKuŸ/~omQ| *֩QJti.x) b;w|9ho6Ee~?}jկqou~b7o_}/|H&F]hszD8xP\/|o 7\ |Vm7|u׷3`9s3G5JG+T=okOۢm*.Ε@`+P*<|.:e}Znz2MH!HAzu9;HJ\˗PgzGGR]>Yhܹ˝jkk\q6\t;{~N'\R}vۿQp5zhlz/|n\qr^Ժ~93fL'Zh]D}PUI?'U@:gwIr9Lˉ~[{?A-]z=p~Ǫ,og4{./ 8lQ9_N坺Cع3h@ Manj2w>o .H_Z`Cgs/@ejooτ?1O۴}x*͋s+Nkkk L@h7x^hw޹*S[[{r8ҺIm-ܶ.U?*jlltFܹsmҤڿmٲu?n*# P~W~6nd= s3|V'WڶC?tSTh(Ͽ~zWvo>۰acfnڴ:snG…;>kKjruvvp"Geqm6vw'* 롦G?±>Tׯgv?uvve.C8Um okoc !PtSTs9o]9A߸ҶEmsܫY`~:ٔ*7~4iRݻ7籢-\X02 WxR0%-^+zۦL\~߿㊅?'@Ax˶n{Ǣ@?  A4?ʠѶ o{ WRC D"ZgЭWsmJ}zWD6NZ{{p95jkk,m^%uzӾN lذ1χ@gG !OKKUBz(M<,] ^#)[3ب\/Qdq޶aZVgPpj Cb.?rF촸6ivVzD@? . JKW(~U@&ml0H\@BŋiѢE? j1ё ~;vCx m PTի\UzÍ3`Ҥ@Ñ1cƄDZZZm-^6Eb&uuu6z|y;Jܴ Þ8?2jT`d# ;555wۺ]*ʕ/ w3wyΜ9v뭷{/5qo_ܓGᄏ-dnq0Z V$)WmH$\2vز =TU1!h x睭T} jjj xо /hKۧ4~L'|z뭷C6zA-B(^k}Sh2zhkhhȴaK2z`ST44QF86Ї7|:;СCif` yS+8_z~jz V!PUOꟺZ8<-@yټylڵ~z[䤂}7-~;*aFۻw9rĦNjӦMKZuu2羏=_^%۵k{ɓ'_k&(vc1.\`3gmM-K,qy뭵.Z`t҉q&[-kllLԜz6{ ֗6{+Xe>/7nl6}ڳ'اZfiګsڷm֬wp=ēɜ]w5_}5_)S&۳>~6gl[2Z 굵^3c/^ocuNJWsڦÇۨQm4}UgϞjs mg&J}v[U m`0o *&Ol;LKL궤,}P3RTxSDPM4".=@zHBBг>g+Wld۷=&o妜c˖-B'|MI=Nz{߅1uߗx̧ u֥ 9ʕ/0SM޶m (nLߓM=!vv+ynw)S/{mm]ӓT{ҧ7ݺQW^ynXhgg1@z-{޹sG:y.tszx饗ݶtwgZJaoKWR}^Ld]nu̢dI!Y`;Xf0`7vur m}f L @j)SuUMh!&TɆqE>cVՍK/9~1{=V/sαs9˽^gKOڿ&-Ztd-Z䂀3zU~? 2j{߅?^ >}~͚.|RUMg}օ@YRWM@l-O0L0 Qh FN>9)`#^^!SO=ކv=/ݾ o07tpBPɤ{/I9.䒋 /p? 6ggs?ߟ… /r\KKk:Z^KL&Lpv<̳3F~d' cct3]uP%s}QEkϽrNUU]鿑s\U g&}P`Ÿ[~}3u k0}8 PEAEQ 3sL"ML>ݮ w&Q4puz{5W{}U10hܹ kg 5];ǨjD8z-#MX(3Xꂉ{mWSS(}7p\̩rSŌ:)IM]%U"ib'~v˖ &znzwk[[b Mvۭ.Ђԅ1lG]q=j)䔂FZIu5Ÿ3f3fkv)~P & t?|>+>Zs. cC-A۫[U({Z[ ТM<>;鳅˺N>9ۿn}S`; 4c.::TTq1{t(ķK6>WhAڵͮ?~~m_KG\Ku6UЄ۫yyU]`GGF++>RBTأS7!h &&g.|We/_nA: J"Uz)8 *RHvP qȧ2S@-T^Q}uezګ]U߿nކNW6o\`8)ATzk{F?_*(BԝHSAS9BR'8em|0@}F@䓗jUHUA}8 S+{Þ6l()&9UE.in>lkE rL6W+Wv@ɖ༱h$ ؄ - QOT"SLvjmh}X`X;c'x }TJ#;:oNBL] 4s)G+0}qek:Fӷ\ |=))T6U9[ݺ<;vHA+Iy㎛Qs)}ž }@'^}e,jP.MM7/G.gß APTU&RF*uq ~FsPv7DL)h5kk{ DLdFٲe\&woAP~E;o\w^G_^e֭yѣaaWiugufQR>MBfժUaFWo^FPx-D]H0 .[PӇ?!Γ? T٤뮻}}߃*Ʌ}ߓ~_:tJ裏5 WP>kS>WZY¨-BDNP8xF4\nG*Y'b @@4HU@ JmɈEZ['?d)bի]`joQA-mݻmnׄ{z] R0kVn:z ɒ%KrPK|(ZFT'DDMy T,Ui]֞y湒 'IxZ9&Pۛ s9i=Ӯ]`ԺO '7MK%*߾zYHmT >ѻ?_8JzSN&3fӟ %a$j}Iصk[EhQ; -[ޱ_z;[luݢE U]Q~Ƶy7o\wP̷k\QA(XP+[6oj9z̙sN&>h&Qk9Nol0n>]Vң`R)hWɝ3gj=E]zҺ>9үW&ygkF}m*s\0P>'W5ɓ}&:u54O ’)iuTO57K)U`]VXK@1TP" O;T{?]W& iu0޳z*h.=mtuuC=z?Vzo?ٽv.\YfdC~h`aʔhs}v뭷 Q0AᑎL=[駟{3ysyw~n3@9p:BnHi@Q@jP* AmVXid[w)QXꫯOz TIk?sϹgn֭wU9.Z8۷pG|n?LG7wx tkk)?$ȵ^m?.7厲դBF~M8Pgy6p_-\۷ﴝ;ww_(_'j,9ܳsM0B |!)kllras4:kY:wgg+Noow,_~Ic}h;w}.sHۯԤI]pZI:a\p{=~{}~W5Z4Z?nξrOW,7 mSTe> r @%"zcFaBR\~rזkWm˖-:K\u`@ >< \mmr5iT K,9ѦOnO=LRݞ~Y׮WhEFDG!o E-\EUx'N;DžI;;7pb."[`@J?*omyfʗ>w䒋]$]v'+Wvݍ;WUާ^W!.x*Z|MDRqQ( _U?BPJ4SUU%OQ%BS2tܠ[y=P/b-}Lw뵶*tYuu%N!P?o`[hTIJr@ךYjjhp7ovU"2*zMMA9dB-T&­o6n>uT`e„CLoUX\K_J~/[|aަAlG\ئ0D}A#j3f[/J~M*?~;pMIiM)UYu0&/ 8Mt(tH/NݡɊ\W |Tb'; #AU-苪~~1|#굘[#vjQutش-ך4>WEg)gh?7n\O{ 6`Im tҝJ1 @j,\ȵ۷oywlΜ96mZڵ3sKrJvl7t[ޙg4A}*#Tv |hi}u| H$ζ /<߆h Y@@_"o @J25I:jv啗*?ڋ͞=jmtӍqUFcƌ1B~qA%-R*]@èޝ wW G>2. nkoo3 ?FchQ( @D40IhtP@\c`/{q@`Д%%@rDc࠵pSE v2aP2p筭G -d*~B# @,Qt2LFr$T% f\4&Dc @2PATo~r $%ܒ0z!uDfU]t-:;;`i,1&.8Tʅ tPԸ{u-`h $$j@b%\Gة?ʎVp ;ANiW@aWh< (8NZSSPCcE|gar4YCr"J~T%݀}d 94DcI46 U@6pG`Hh1G8 $o?[Puww?}X@;aզut۞=Əo0 jv@%jE] OsA! 6|((%O* IY{{566Y[[M2J\Ok'vd2ס {@ʦxP6 J+}}0S֭ڴiSm̘1bw9,${Ÿd& ZPfAWPH+ 4ruu\;ήm_zl&MQ 9r?`1GҪ훯Ɇ?'}wC @Yi_Wo APG:객;wn 8q=p24P)vZ㇚'O? ]T+b!.XUU)GH!P*msX}Wƒ7#?tvvjÇ[z}tk ~k\_G@u~0 J e= xS.]SSojՕ9ﴦfkl: . uyή٣Ə=ʟf@% F_!P0 ҁwݾHTP0#cuRo\.HywR zsOpm>u({k* V3MwI$]0\nVד#\ drx"hV+ ~z;?JB? At$C!_Te~ϓenynɽ*" Wn^'[8!V_@kN|<o;!/*VDn˞۽u  Jrp A㬧:(y U p&7QOG$?G1 A@@c|OuWbDUkvp~B}$U׵ PqvqlmȐO{qGHrosu} .@jV}#T> @E4P,gRCHAxŪz ٝ0FR?`@9TAZ?0'X0F: XG8 C 8kwtd !?@e3<QJmGK`$Pc `Ϻ?T~ HGq 9<T:?>>A0bD Stm޼D"wB?APJ ~uu:bM_ x|F @E+R:.uwwʅ8:Ͽ?7*B"'UL&{nr_k 0*R'N }R'O"u"PP?. J&. R8*j HC8Z)T.XMM##Ju𧭭]֩Ӆ?dUW' AP1 UjΞo jkkz- ؠqA2Y*~t@ؘ1c*ZLU@P~|54u;ȧ1èQugj) kQ?Gu~a3(4iYSSs8jkk:BT*  Ox]z gMсdSL3WI8"3e>_𧳳ˎis!И1c\1ch1H8+ZOkϐJu[C8=z` Ǒ5unm0T @lO!n "@JCŸTO/n;Ҙ#CZX*adniB @` Tbz 1Ix%5qB(Qv0enXMU@Z c" !rGGLenPutto'wpDcI46~c  EM e厶NڨQ`i,1IP **Vp8 FTOgg[xa@hL(}WP~@(vZ+\uR˅ZrјDc?N ]P(7 @,1 tN8$ۻnO~OcI8l"a bʒ;i$[~pҭY0a͚u|׮}۶n}]~G <ʍ0lzWij'lQv \w۽{m޼gk/ʦOnӟkڨQlJ$/u ۭݝwvvO]0]n2>袬@A"jjj9ͯaj6*a Ϸo~kvWnjO_c6;pv۱c>t9Җ:P6j[v}^={Si ?6λnn_o6s}h;wˋ/d2\j^.O>ͭ;I{k˖a'$td[o7mܸq6w;唓{7--;]]]=^ٳ3_nߤIknn_MT5g̘n4|>}^m}޼y}Ǝk^KḲ$3ЦKPsAw5}3f0쳟)s?a.?.؈R~:w r3=Oe۾}Gט6mZz;.uׯ_ȹ%䬳δ}_2o['c5>l_җudUo}w޹G?֜5445plMMMG?RkǏV ]<6TgtᏪjQ>3gQ޽ycjjjl)&;LlRE'?k=ϒ%'ى'.vAYk~'M{tip,[L ʢ??Kd8v ڮ] 5>{>о>*1UyMkkk3ΰg}ζmfC? }>3<õSSk4Q_xUm޼Ǯ\R:__}嗹}sO[[{|pp}}ʹ*R sс3jU?xA4uwCC!Lvl\rQf-ϪUaKMf̧rя7~nfœ^{#򹪫+_RN#\s}:u tQ@8qVUZ@tY6G ?6DFH D8Ʋegٳ#o+s GG<L>;ɯߧ?LhCGgɒSO.\_\--- Tw(nI&OZ᪝>ADun}t_=FsjW Ate/ r]6T$g,=2&MwNv_yeU}}&T͢F*U3~x궿=VϡsVj$gTplb Ѿ}AՏBp4z>w^{'];v^J[SS ̚u|5kkm2mԂ=-ACZ&\scֻyJ]ik 1Aԙ6m˝w~ǾoDJ=˯_T  `۾۳M2Ņ5CA)OBNpƌ@n]m߾] m tO~j_ʿ_~.\`'Oqرc]/n 6ϯcC}޿ٝO8 ѺG;nƐU^)`Nڎ;3UFij_khilqL `||W_KKM}ݻhuw'/;rP*SNM@ƍ嫖vz W(Ѻxz-N۷ȴj ѣG Fk 1G?=gnrr&\քA!@tuuٶm\p~d#kּeB^x;7Y7oM6< _0?Ig5~;V r=H/@ÇۗeۿB??uٳgg.#kժ/@%I=:8ދo~[Eǯͳnɐ/ESPDGǮkm=+ѩſ~x*%:r[0"vuQ}-Z/ vz3o\W_<`ӧO|v4i8И~'_ "n?|< z>6ZWtAQ1fͲ;w\sVN:>~co~w>t߿h+^r_ptɔ)ܴ Zoaqn .G^@?y%KNJ?ns.x}~n[;Y[[}yv7߶ 6֭ڿ7_?ޅL2u3L[쥗^Nԧ~?3V~3k{ɧgs7TOبR%۴\ jܹ3HVAY\KfAo]wߢᏜ}Y/exxkbছnfگ Bַn^O+n_k7!Ԣϡ`~w\p$+/~o2#?_}Ca NԢ,*g-ET \CQJ)D<|J×ɯjݺ ɴddxރg]RRv!w/?nlm| l$Z<:Ztر.$Qg^{mVWWksC?۷oM8Uc׮ݶcB)8S;({mwg̘>Ɂ\\UNZ?~a`9;HVzd]N$srpZZ۠qK'nVUWe1l·_xL'BTyr*:uέ}]A 8`֬i()Hhi@8ydw:DNhooτ?1O۴}TVp־502hkk\@c[uuFۤm kO> mӦܹsmҤڿmٲu?n*#e+gFbnOp:ڵogx*=Nׯ}@z:=[ Fgg; RR6z(+m1?;dž 1zlnk=% ٕTV oVx ß*o@ o]ڧLoOq}=Tςӗz@{{? .<8V OR0%-^܃޶)S!@ 6lؤ{gɓ Ċr Q!ĆRU&8)_I3h; >.WhEn;tZhb~uttdfǎ ^h*UjWpcƌ84i;G(pd̘1`%V;pŅEۤm o c0rXI]]=*:mR)+7mŇ?'U1h@j=e;gkmmuI&QcCWW=5\詜chb۟kjj>`)<7nɆ+ wjoom޳ٳOr6h[NmU~<[0Pkn<\z`d=;sltww4)k&vZwꫯJ2ۮPt׮]dɉGU{0tԢLU@%Hj̠eرe[;fnTU1!h+Wd><}t5kM0U={n>=!qخb_}1:*:xA{uv}߲ pRhmƏoG분 nw[oҥKmܸ6<^[OU> hP/\pw޹jj{ɧ^SNYB" &Gkll d2ꫯ駟>l!>'5h|S)? hc 1r0LnjTpP(˖ }6ndlA6ojۿK2sz~jz V!PUOꟺZ8<-@yP@wM o:whTu=ǚ5oن 9莴6mq9wi|fX_4ڽ{:tئLd3f̰O_Hu~clԩp9nmm{½u]Z̽`>~۶mV2O֭SMmmEoڞ={] I&9唓{-`^Zz_Os9xM[~9 9sf:;돲y8k}VS3Lz]m{mOw V/]z {unzhS'+gϋS멧v?mmG/':K/yGO;._̙m/2@|嶁:q:'OoNɤnKZRr=o '01I6ۺ]'{ BuI&85 wS |t0}-ٹsԿ暫줓Ntib{Ƕd.ez CCv70JӺuot奾޽wl{} r7utt穩uۢ {sZJ֭KE{zz/!mߗizkmz?&DZ{q5\]qy)ٷo_D|aݏV|4qX[[B7ォwy'޻b''- ]WW(صkP2tि`ߓ ;tƍ::!Pn+xVL2oB@-D?utx~ßYgl2CVȡ /<ߎ?x7kW^q͔)@|OVEYhV1c $.hR]*)4ՙw%͟?Ue(䒋 6Uڐ/JoW*祷iQ3Ϻg?~W{*jT4{G _ W. /L$ɞ={ҏyPe˽炐%KNrR?oMZX¶lyǽO~>ޫۮЇ? /t>?Uexl QAʕ/_즛N8] <=B9sP 1;JZ9D՝=9UUuST fU[Bo--ßd(Qbl@ o:7ّQ^LORe\4Rk(ؽ{ Re&5頪K/N=Ͽy-!~BS_ jG _}Un2]<)uR);w]j ntlNmQXp9g/^C$<_mᏨzHYgysG=^)8ΥM7ݐNJOv(S%6mW<-[ڬ{km-ܜ?^xZ5U1}]-n25\EXETAg?m^Sk#GZ{=?/T x꽩G'd?2HGF]qBRtgEP&8U:^;B:Z*u` We]tWcQ_7ھ)0jW Ta„ я~M,@k6jAK*7o]~enSvکGZyHm:;@[U |0U4~Y(*=e˖$O{VGo߾õQ_|ahc+O|(r RCUJz~{.Qő*w My,ض6Vm}DA&P6݋ŽvwRlO oQ Kߣ~wM4WEQՕܹMNZ˶ qS"$M|i; +@Vxnuwҿ'GMGWNFvy\ccs '}+g(mr*yʟ8RZ(P7o;2BhYj%/JZZZ*Ҥ?x=n{Z0P+U!t҉zN/ Rnh&=}]{ɧN Ca)6QTz}Uބs~U! 8q+@~/;vtͳ3\*S6p6ur0jqv@;_GA;TlnS ѻ (|]܂Qgˣ=@Ӹ(犇 ={l۶mkkkȑ.Kli&D7^&<6mZmݺխ{R UXG?vNfra ՚2:*[n Zk={,^حf~{^זhg&jWHu@Đ`oosHkW(:tsh~>v?7oq nذAoY^S>f 9@(ߓpEO[y?Z~!F @{]rꩧ6kpرcw}֬mhSNv'Y5{'\EgNQ!Wv۾h"*4^|q;rw _p@p4|뺨oϞVq|wɘ ^՗`]*^-}nk;y ~N頻֮]k<>Ig2. |3:B'\ڻ?_8JzSNl3f }t@Qp bywn6\wlQ4 JW^Y"KGJ Vvk;㌥.^GrՖ-[mz^R/#QAZSS 'pfTEO?5k*$o1qjvkk[  t?"He Cm:@h]n==}Nnm8?8U.S"o R 7LU>:Ck?A?*s駥'7'7ۣ>n_|aZ+V7XU7rꩧ͛7O?c\rqv{Gd \UUE답 S۷'|O|<ȶm5Q^ K-.==Vtz8=il ٻj''ڵou<{`QeӒ%'5G>r{Κ:l40ak).ԎPlgK!s*e:*@^zO>TR6ctbZ (I<Ӛ wݷS?z(Hi@Q@jP* ̙39l[%{d& g9viHk\~r{G_I)lƌinvrړOk]-Z[[?6{ lIz*w=[p TJ\p~&u4pJk}wxm;'|#p vqmˊ;sx}w[乱U<͜93_gDV? _։k_Ι3Mڵ۵BS[3+բE S\̽URPtuuҥm_v K~lW .pѺRz={ \O?\pm 񬳖w~6ٹs[K-_~Fp@AS ~ r @%@UWp>E]W/Pv(ax`84m޼V~"At5CA?Q&."F]tʟ?a^i"\4}u׸(Ƶ*!4ɓ'Fݪ#G59766k:'uTA$M{դ5y ׻E7o{>[xR%ѹ]p[i?iCgϞDI!Nlٱc 2=jS {uŋ2IU$ z'tbT;ryfDyw߷ګ]yrWbT}SeOP̹瞛!. ^mR6+ @b!4eGID0lg (Akᔧ*@b#/Ue d2[[[06ɎU؅G@XGe2t獍妱Ix"1 ) ^e?P}5J$B[[@hL(AT9 .e g߾I1J%7!`X>B.> :Z*tvvZKKpXDcM4F]q   G,T*TW׸*/a @, ztw\1 "+siMM蟿;Tu\@%D}]G_k)z•?᯳͆;?J@B`@ﺻ}5mU`HGu ߦӹ][̥*'e|!P~$T @g՛Ht`(q.$ʭe'*G8&TTDڭWȓv;~dH>ۇB'V'7 ܚTU{}UD-O~)vqB׾- (͛x4-XwC_Tnݖ={ ߿ @V o Hש+YOuPg@LnJ-?P UI~ÁzcBQ8*+ r'Dݧ+ @ňׇ?zr+fPIJ+v[k*DWmVoݙ =!B6P UA\=hG|@U ?uiX*`e1:?PUE/ @U;`!A}{]4r:~#`O`d#t@+U=p,!J]p@)PBgxP8&Hm ՟uX#|} rO[[Sgg jN ;*b>=-ނAZ}}ZAdU耰1c;U$ՙ #"DU*?:zO5XkhwOcQIUAA.R*  ֢ kw VWWgP 86ikkkqFֺۃu-T @lß:?#k ƍ@7ɦLlg%pD;f+|Ogg9B1cƸGCc -4XCc=cq qE V| ŸNמ!궆q6z(R_?ƅAc#k@a @(=IßC5D }?]]^6vl=!1G*eHUU’ӄ@8c@⧣/ZcCMcAcJkPVQ`K (+ A4 $]=!E@B  @厎43p&Nc1"hl0 @<0(B@:ʮmW]QXXDco>*?K]T@&(EvMLrM1jrSLrK&77%kԨ Q@l "J"E:,K݅ݝ|=s̙Ϝ9m9$ @)/?b^Сc%}P/R)tuQ -Z0P_tLcw=v BBsUtl=VC 򊎡\w GT-[4Ptlcرu;x5f͚nD(:V{ =8@}E P**u֭ xY|7\ LU],0/tc  /T3੕zc=fѱT' @=]u`0|cwR[D yuTuTPP`wفjc={JL׮]L˖-MC߰b*usǛSOnݦ}y榩+))1vK r*v;fq/ /P=%{_̒%DoL2djyǟ4:84ho?kOwܱ6M3gy+?ӣG3yDsSM'|f޼7gvڨzzϚ_7cG2ݻw3M{{޼Yu   OxK|>|j; {f>+** w}aÆo 0O>s7o;t5(0??kx1ᄏ\|}7 @ ԫTX+V4} zrZqٴiۮ򍂝^ao6sϝUV k:wǙ>v:VK8@ ԛ| xxꩧ3 zԽnI<n47UӢEո8ǟaGff͚mb ϯYgi^~y:c Z uzOW8jٺu7ow!Vc 7@A TA) 3~)++3?goH^x)Ga/~?u0| fZo>Ӿ}{ӷ (YuRۥY޽LEEy뭷͆ ͱk&N<ۄ{nmv{Kc1P7jٴ4Ν;iӧwj,V({G85zLiiӞcniӦMk|~P%Peyyx$%vmcw E=L~떋[6yf; ұcGsq?s۶Xx7aוiJK,'hj7n2V֭;vL4jog͛nGaI;vۦ~wϞ=rp1L y7Or վ};s יygg>s}]owf)_;{ܯG4j,[Lpcz9Q /75F(4޻LXjS=c8~d^}uVPcx*/y{Xӯ__-׆?jW?w 4/N:i}˖-XGy[iMnßf͚ٺukՑ# P03fwNUAZ(P叨׿=w]mwwRPp{!\ŤIm7DHFv|7x9j@ӟݿ5o|˯7%:߳x)[ӟ5߫!wB勪mn'볿>[  zoIEwDݧiC.ikOPp .T)uSwmVh?n,x ]pꢮح~\z&aMݎ}V( 7|vlnί\~ O3_;{zu;΃iv~<# ޿nϲ*DA]fj{J =D6޾ګS~jӦ >7ѣO`ݸ/~?suīwu(PWn?Wa}40Q@iWxP5WySL}#}N?}.!Ϟ`Oj!C+FVJdԨ{, Wԥ]2 ~јGZ~mƺ[-S[2YWnz/^T=4{_UW]a,uKh=SX(X{mu;ӟ{zxt z" M {[7U<ׯ}u6L#Ms&خT iӞt)?OȌۋ*p1ېs>S>O]osϝ aE&kgXXRVVfJJJ{ٳ$?LX:v`ra6ZɺSeԩy]+u'{ڐɺr%>1sϝoH 37H$/>tԼ$nn8Wh}u!+}vZIS/5-Z05] 2$mŏ@C?l!7UUw~ :V̈*l';}MMJG4&Q.&SHݑuWPP`N>?cu&ce*캢@oyח_s1o{S՘(H;36'ŗM4iV^%3: +T.7|,j+CΝ;ٯۮζlbڿr j&֭[gm/9Xv3gFRlcӯ -Z47 smfo~g~;3bĩfqf-k.v\1zz2kժ,զJBhcǎ;_eR9pVo[={4͚/Ɓ# $-Wgz:!}7n,|j_Vvԅ-[o<1T2n/4dsΎi1]f͚c?O3V,i04o YgiRU$Ri+K\xIAB 7tlP XZ?|4oޢ.* 67Dl#<󬩬c:txG|mUme~fԨ{Gͯ۷W^y޾wa.2sM߾'ؠD7a+"y̓g;.6&?HgIO< K؝{fʔ ͝w)*uqի㷳j|9|ܹs4(-uxСߥPYJ|{yN{߻UZ_ڷls7?5(ַnLaw-{{_ټ6rWxo}) ?p_~+7wYh濺l4tLqqqof[='eDuAM4VM]AEIMQ@dAݨ1Lz716l4?Vw?6x_nngW'{L4o ~d8 T;v9 _c}E>Xjs=M֭ ci,?Ln:G1tiR~ߚNS;8;~'ۋX﷿f$we.|a}euNׯ摒Ou)S}vؼyzsUSM>}@CMgHi7)uiժi߾ @daРS'ό9"+t?qQtp"E]`Ak*,oK|` C}wCUq]]tӗAҷMs?7h36ob֬YkUa}d/hpEBlކ=䓏EI?K]=}3~ uB/>RSoxZ&.Q%׿~y+gaST=F!=۽! QiiٶmٱcgB-RlW_54/@ͅ= ! =K{[Zv_@>å?s]r_xJ{[UTTڮؤIMmVM9:=ۗGg>v&5T:Ui gK7DԷnݺʋtD~۷0[lF_F* k͜B&unT3p)}͛m%Q%dGQEV=[Y/uF={?D4DUR{9 ӆP סC{ӹsgwkB{ : r={۩銍ThnTp*0 pUhf4h޽ыBʣەKs6I{<.gj֥RPPia^jNl/21 2;K}*"\W^.>N+Hx@ 46ТE 2GP:dvi }ԭ*U5niuPezDQ ٱnbaPC [Tۭ[7@Rw8wuby%<A(RdKOyV%Myyy -R@.U1##I(7 cǎH qB@g6J c\:1[? hڷogzUOg; 5$w  :{jcGu'5 HNCP[YYbMaLϞ'}@ -<ԼԢR;0Ӵi}S4/5O@j@^oԣG: }5 7O@r@Сj.:t;M %*--$GPKk?[i4-AO@3 9 ZqjT[nlRbAT@iޖ ycOӢij!@C sN&hOC @>|9r$(bڷϟGӤiW{Pyy: ++ %aJvmMfE&h4m!kP G\pRVV]ڶmkMgC`@9V^~^')uV&_i4 k ƍ޽{%8h,YbmnJKKɓ10h>xYf9>fȐ⏫qdƌ)LMS']vݻEdķn6~i۶ilva-Zl:uhƍkw]hᩧ73:dߣ846X:vi>C3tɦG߳TddG懺G[dot?t4E@E&_ibpy PxiNB]y<3w5o | 5Xlݺsz\t^4}ܹݻ>3ŋm|47ng߾}^K{-6/M5s=wv=ǓR aYz'8p4E.*uKQQhڂ9i^ jصkܹ暫w5,ӫW/;@]R㶜}3jjP0` Nch*D8H"<*..6<}2umu@xU'> SDV.((0F@oa A {6#Nox[nAr:͟.rODTTuW5Gk(++w;P_E5kg7Pb! |\Xo4mn:ӞF!,_¬]l۶f֭ g:$}M.znF>|GfŊf]v3cƜn̓hҥv̅R޽{SNfڴiݖ-[m[{^WA50Ysl7]ߚfMcN̰aCmA5~P׮]4kΝ޽Ç>_T\Qߣ.4xd7M֭A]╖o:veJmذu|ҳW\egϞF\˖-]ihSMycu5UQQ cA6VW+Pذam|Vw]~u { jj3u6q4C GjPڸqc[~_T!ܺu&ӗ)5VișMԀ1+ui 8Dnb)x|v~kYjڵkC͹Nv&Ey曪}uA|9ueI@//4h@Bj]ZGܹv\RRiZw.bK /G=ut9L֕f:gΜj|?߰s(y&SZ+/<*wEuYtaM)"U'X|{9V['! Sӓvh3Έ=c̜9slǸqcȑj4Y:kOtꫯfh yϚj}td}6? _ў[n6z̝;6Nz}D(/?b^yem0QcxU-FjW|ԞA0Hg'AYYgyl*NvYWgE/6:C^v;԰(5Ni|暨?}mq@<~5)9)*KtR0f͚hxKѺGqySj ۲emh۱cmk5]jDֺ3o+35a^Ӥߥ zJ!m joPñI5~^yT޶yΜmM Ԙ8~8-?\ ދׯu[u j۷ k;мD۸WEEy4mƎct]kN:$[-ߡeJ U^i}>3=4{E]ha)lTykCi'.4Uգuf|Yahykٳ60`ۯ=UQRerJ6ٮ;w3ϴaWڟ}n7+6;vݷt~ /MnW#)w/h>nUGp Z ԬjkY{O'(6*lٲEA K> {5i~Bϰϯ]I]C8BQc%\d.5&(R5=U JF]L_5:{'5+ Y: X tLUBtVyې5}SLwݢ&רb% Sl^46vCWLMdҺ gU ?mC %($jhTs i0Dgػߨug_zrM0j=pD۸]UѦU~oy @U2aYeWZϒ<|X$}IαۛwZw_,*jfP5D}|JvLmGۃ*$\^k=/?/Urhߪ*%u& #n;z -W/-W\qerP F۷o{|#?LۅMG,߳hb{تY u]7J(Q(vkgw7\%NΖN~m h~hߦoT@qGM~fA5߯C5ݻ㏻ߪ1vSK .t3~jlO5~_.qąN۩(S#M3#U̓ti)P>ظ3AAdˇ[L`~m>N O7۰8LwAaOPƵQX}Qީ1ZӫOdTAK 4F 0{žuTB[+ggz_8l ߵz)6nB ǭG" y$3Qq])7>u5DmIaΦUCkQ%@j QDMƪq5iH6Hާ35.XBdGy.r)˄P7GHPY.ػwLgK!ui#jN9n=vs#^uTCs}'[7jTv"!L)qUU6ײqt6IA Æ lqTijELDg٫'m]vׯF}u4;+:@_|S.TّlmQhAZ ݲT uk"8| ݹsje]폏Wl=v iYi3@/?u8߭_z}4dJtv,ò5xK]oC=l+*)_ƃQ`0]$]ꋦI榳*0H PG2ils}hW`"{-ciL[`1}R uꟓBu#@qgJ W@^{suUW4$--j[e5sӽ'6̘4i$}P)C+u=( TW7k|XuE۩+.@NUe n޴7lhC]W_Rc=mjJкLо$r׭Z7}^= m lnM>Os]OqF{"(o+xI B5ޒ. r527> u炟;*D Y5͉ q]Q yȝŨϓQ;6PCξAj,ҙG3.O̝ }4@i F:߄f=r)h*|KK+̄ 1W#Q \K"7/j>W{Խ@Oleƍlo /k̲e<;&SA!33}_>,ߺ.BQ7Zu)/υny.G}Ɵ eV5ۇe]n:5V*ŒyeU۲d*n}ߤ0]k\\,_¼ʫ6h4h9cme~.=7~ƯZS\\lS 7V]t WK]ؠSӝ*KMNS^c<ԡC{{jbe*W4 leCkٵA&K`'UM۶l75a>u$(;(lڦ],5Ć~/Xwkv%-1ܸPZ'zi[yrU#;UTTh^x%{Rm&Rj@/o]O]^iܣvUqԀ޽{@ :t؝b]:+KtLe.7_Ӯ@.{*mWwABt\twͪS0oc?oĉA?(Gaܫ2+V0o DV֭l8WUY ֭[ڳ~g:i4yј~Ddؠ~4(lYQ?Ag`Gtf?\5wDA]l`Nk &\eep5CWZ}'b ޽yj|qݶ9Q8nS#.M'^'4^aEmnYkѼTL~\Xn +x&x o߾B?mѧ^8(՘,U5vU=޽ODQ[^CS߯liY~v Dۉ-Mm?oÆ vyj|,4I+~ye4<=ּj*[ؠ5u8߭>([4P%%%:OYj ?74(h+Zu5c}4hZtC|6$" LO_yef>k\)gzoꚥ>t61uI s\w33GǬYsLϝ^{ ү__ۘ.TՑYmW͋/duwuݻnu5s1G7X{ΐֺպu¨nذavScyo$g(ՐU"=Ԝ+'c+>CߪbU(8Q:ի n6md~hYS㣏q @~cVwI .8w޹駟vU`[]̙k&Oh8omS^k?Wf^ 4ֈ [2Fx=Sv@Ox׮]!*~b!_Okh+zi820QЧ>ןyxرͼyQcŒ[hmlSRoCڪ Qc,s5\e8WqWD Z L%m<[FԨp"_pΨ"!lcKE i\}Uߝ/ZG'L83ixr\7zٺ+j}2 .(> }+WߨFR oRX4WiT5q^w7߲cyMرcr6Kߥ ^(0q1cF۰OAGG܅zNPwe:.LpK./ژ1c'2a 4ІXP*:k=YO?k^}5:14 xu+/Z:tV (i|H(%Zg!}M JLN ׼ ! =K{^j7a ԕXV2vˣ3E/]zzL {t}kzTn Nto۶]5ܩ;5ִ{PwtZj́͞=v]ҙvj;9/u14߯}}1J.dgKu]X3<}|50uÎ!TԅdT0bQHۉBߥ6W0gwoU2{ Cb]a%vX0ʥÇ 4\qI)Q7: *'(RhaOUxQT-7 0j; 1!E@+E]ͩ aUo'X@smG?U]Ҩ+ApM+uyj>.J .?щ>jڵ ڦN4/ԜR[:[T muVmװG_p)(0Ge˖j(UIeV**PRzn?}ӽ{7 C@hu辰\@Sq̐!3.եQF i|u cvxnjul̠CJʕvD';VQ 争kif=f׮G?0Z[Pᏺ}S#E_@jflB`Xs.ĂXTX bolϞc%*)Q u,qA[_toݾ :kҪUksǙ]vEG+ < . ~"doM nVۮ@PU-[4 l V5Aҥ)+;r]*Lee"(IqWGՏ=Ԭ.M-O { j@3k8<[]I J > ( xuVSRRb? 6>p"ѧ7ʃ+Wu>1' 40k{~!fƌ)LCOkNc 9Զnݿ 9.D"tM@B@aʕv-駛o̷{<46۷o7+V0۷Kĉg>`yŶK}~_DN?`cϞKCr.ׇ|]rmѢyTÇm}r|~yfӿ@;v[cyET-P;U_ hh45_sU㎍?׭[7ӵkWأGP%?Fo[ Sև|tf^zTCj_tG6QoǸIv#!梮h@F|Z~7eC~K/qduI W\`SjJ. 2{ݢE _nre>tDyyY|Yzٻw)**2]t12;=G1+VYfs䓇}Ozuiӧv P5ԩ{aذ,w]d?[4 /do;k(1oWD}_ȑ#̛oeK3޾f֬9v oߵgi~Q#f{}faIkCm۶Ol֭[G[};ݥey)O$G>;wIj޽9Qv{iwYh:vg&P ڗhLvzd޼v=Lѧ??};Όs چ=FM65˺u뢍_d_J9x@ NuIAZ K,{?ٳcΚMZ7ob.OyuϞ=v'M:TAN ӧ )ʎΗz}|hr4Ϟyfm uxYfmqXFOG>,^5:ϻk~~?̧O'}v7md|/bЫFY ?Q5#<}>w%.N)ռy 誱\5VkH@AEL&¬j8~<[lںuGZPCgG_#h9+ oӎ+*̈́ grmvzG&d. h^}mw>{ժmjA>ێvpA :uhz+F׍v?uLFE.>zyP~Kf)Z^ \Ս咒Ji9^r6MGa?  $h_~DZlit6,x3{yސԼRxuɽ^(VuHO?igl;Z|ʩ6 .[ F_ :s39s^6/:] F<5ju5lt}H_}5bŊhyhjߩ3;t`++԰Sc&Wê*_8F[n6A^^zNm˖-wtWgëB {PڵkmC@o=[Fgo U:Bgxk u/N1ro_55zczD?Ht|hIvmMa(@;j(=uX̿?]V/mTmCkEWgEgOy챿x~Y7n]zm7l8sઋ6ی;V(Qÿ~^{~ǢRC d#ٺx),?~]~,iӞ3_m K}N64G#<~Jad?: ڨ:Otskiߡ`[ElW۞w̜ MkuLe]}fkp%M tFmc?8{VN Pp{ Y-[6t^j5lf5nOW_}E!}Wa[0.`Q?K>5|*Q`jرs9# Ka vZ;׆jS5[oM5kOө0FS.n1K5 YQ0vh[a+a}X Ll1vj+v4ՈSQ*FTq|S3x`ިzB4_g`Hոȝ`B jl-++TTQ3g>[ĝB=^?f*ٺ.Tݢp뢺V;+++aϊUݬ}@S`/ 6~$8N-}T1Ѿ}jQ-MzY|;1v' W@eUpޣ`̘5-*MUڎT_][!Gl<5|FA4=5ҩR^zVy!EtFwt)J?7nZWc~zqg[S ^'$ Uqy}?.B&aVU3?5^w5YU(0S!Q橸/ J>ƛVumo(hL\j^~;Dzq爫l#4]jW$UUE㧪L*\՝B̽{%<[뤂g|Z&P4ƿQȡ Xgm0f̘Ju->;73hZ\W~ [.4hlPiwAt =Mc[h|?8N۶Y$d۫Sꍄ۲Dtֻ ڹsW Ec{΍QS=kl!xȐ_|6nꢁU})7?UJon:_".$T@TVuU#b"*uQabhJ.LCvGIYnߜ={JRGVڿi?ȣ6T§xeTinIآ2A*KG'w-U(d y4PixI8>M/vW* a\`\&@>!GK{$}c~uQQ?sW7OD㝄}Cͯ Z6 r=$hpd&MҸ?-ҥY@۹s5*OaM5Fcuxv~* @@U?'ɄI~~-I^u1~$ddQΌWCk(=>)6^}UA8ާ4Fiiw"ټܿi4O5DRvѠ:~7mr ׅjvc/w?Js߰Rqƫ6ud„ v\ nrP|HPje*H.nQlmX~َiS͛7ɓ'lnj*T4}K|`+f|\|E>d̆?i+Tݩnu-u99s$}?aM*Lݪ=Ӷ[+WICjuSU@; w mviճgϜVxkޮ# v1纱۵+|65{X F-H.*B jN Ɇq6@PE駟lZZvz5%%,25.^~5/*}AU ҮJ 4,_^kL!CbAԪUVDlok7@Wキ8>?N8WTɰnݺS51Y՚Ә~$88ZƗ7h@.gݺOg)1bxKm3h;fcAuyŊ;6ӧP97֕– /Iolؐ$31n}X9A]y n*6mp\`v j4_ٺum$6bW^6 nLSNjٶm={N{@<}=zJ9vc3jH{FV_x<иyB ͯ>7=_qehΝ7/n߼ Җ-[nݪrlx}Wfڮ4Gi@T~},˖-J"u  䢱vذaw鳴ziU^Zn]Q/&T(yŗOw}ƫJxf?KјQiӦ۠ĆU>6g2v=>qY51j۶..S-vu4Tɼy Un*5g1.vkRײ?fUi{Wi\|eRK#u%hv;ŃU7ULz@p<ئ_ j<)楗fEދ621wmڸqmuTXnj=wyẆ~d=6]~p"5Mjӟ,{B[l q:66k?uTVvج_6fK+u7iaÆ eڴ碿uMg C ;jHѣ'4'4>?~f6xmUB#ux32)_68Ѵ( whZ. )Ɍ3ڎ \wݵ%1r|n X&kn.\ƍË2[\U][9N!~,tknnT4  Tvp{KEElĉ546j.Xm.jx+5 5 ߳U= )u5rhcjݎXn-X J366fSL6ݺuγEK+G=jmU毪 4ކ H{WzKׯOU"cǎ6[Hsq]ՔCe=q5<`ܸ1C0\s Rie+.Uĺ5tO<ɼλf?K ?:*s  lܹo,M 7\oVZ `c˺ V3aYBvu Od< ЧR(BLSh{†#6\py.e̔W3fyXŏօS/[ -k̚5';:V k\Wv.Ui졵kHr;V!䳰 B>^{ zsy5lUԇ!IHy\P:++#cqN1p76-KKHdj C!{hüݷot |FdX)e)GUSmP&RRQmڴiY ڶmﮩoa}1M7}n/x7 n&4~~7w'yQoӦ Kݙihyqof?R5w&N<njqjF ]*`LG|Sze2ԴIFe?fC_ d˖lEN=j MZ6?n6l ٵ?>LUagﶸ.1։:ACK ӤT]Pm -  p5iSG+}{1)KumOx@ )ЄTџJ VϤ̎ hmos.B B:?cbW?jLDW"HFNbV@+)4͚53zۑ#͎Lyyر\Po%H]Q C @VNQ]T J2vUTdLEE16{2ӭ[W{VdV:TjU5'EE .BN3z0+ MPU v*mTTD)چ MM6m dfGO<+< O+ 4*hb]yB!\,(vV***u˖lwp]KΦUR)--3wÇD9LfE7WS&?=?5UE<_Vht/J ΫAGAu[ܹiݺ]qz(..?TnuмyOaDž>c(F#LU4A] tDr wv*UVF̮]s-Z47m۶UA?{1mρV4kV1}T ' hdYD#**hD„@V=B=VU;  C}@H*}d?SWozIaaC"G!Qb]X?@ s>d Dkj!ObS=!@78Q;dL>׿ \UO 9aPلϦAU?AjݺywTO- w‰ ysO-6P??>@ `*zn{>c<8@am˶{7 E4᪁gD+8UgV%~N ,(1I tT^$s1j2@z]]W:ZIqo#{*_8!54YHjM}wIeZ Ŗ KP5{;9\ k>c;! W^j6r GUR@^ɪ"}s5j .=W[$\8I|3Nhq K._>fdLM ݏE?4 ɪV{@[W>.e 'LZ rIM?@UU=gO:(@@U6!f -Pu7(eTTT,**쑪!8 z]_y @(k0ɻ|EPOw}o2&-6Oس^0>lq;5(p$-L1᲌zS@{[f^_.}ܹ lEP{@FM[|brLH2y>cTVj q;cRnݺ7d?+{4uMȆn =\]e*IUp 3B뮻| t4E85ċOLnrT?"@G2}ZT,}a20%=U T,V`&u6t?H\V([/-fw׵kZXٌ!@ڃ1}[4Gy5=@$. 9)♃%az73)^ifu5dR1ɻ~ ]Ty ,Aق2Q*w,0OtQBw;y h,bh ?8@cU(CP`b])[H=x3 2>ɩ- Y&TJEI])S;x c~e'S0ɃdTE-&ZmL>3h&y]ʣR1_UTTM@z Sfe *_T(&5x6rE"* SIX NG/_W~RQQ@SHh8.r2L=82lZU[iH.. ^W*Cˑs~/ @QsAf(30q!s'(0&yZ je2A5IVS7B>y衇v|W)1xK e aTOj?HI6sUqkA~2[>P .4D:߱ 1@UulW?f{/h (#0.߼Oqz23IKVGM& d ƟةK9Uz)ܸqE_^?EEETh2۽/+1Ma6He&(#pݾe ǘ\"YP#kҽ/c]Iq?2I^dLtT-2eʳWTpi A)xߦ]^lWh ={4ظ\Տ( 0E" U(LO$Sg2\At = /w͢Ks=SOy)sAAH71H$~|=ER<I]YYoue}s4<>7ZhڷoBt@ۜHbҥKkX)^MbГ뷠Bd@AP'D3yzyC+MUugxV"" 䓇]լYs+?"DŴHxm?گŮ_=4\qquyy˖}'Q)3ÝdOP1d-\ 2|>]Od]wvުk7s7^?sg{ ߤ> VX%P8>q[ڧm[Wk"V"(=\UZ3U}䑿vчdOPdLfOk&C.<ۮk/ *=>iҤ_O=k׮_EEݢC&B$ رc yڶmMO,"`hSr1߿n%ggBU/?P']O$bLnŸ0>؅geZ1EPaǂ^kc|ݯ)QŠ*S09]9zTSx _걠T}.cu=_]'{,YEP s$"]X^ܥT7&1^' ~RU$EVP!N7&uTMt Q#HdKǼ!~:&3VaCm@†B^Lے{8{.  @CT=-蹠^LTAOކ?RaCMB TP'豠'UO'Ue< !4y!dH)Ls2s^'{,}5> w?qc|]=,Ơ4FV${. edS0՚j{;c3}1@ @Pr^dJʄ q ~7>_k%@U5~&CAs}IZ0P$k:V$WO!DmWv0(<@CWc {sd|6 xh販?^U;ل= +_@gdz?c<@CML OXE_ل':5 {r."9szS@ d\Wes?caw !lѩ&e Et兆I. z,WIxhr\czM2y>/4H Wr4 J}=I(ihd۽ZM¡LߟQMÐym 1rrY lJ\.@&(L{MՏWC&72y>И RrYtυy>o5H6u4%jL^C$5 r|{5 Nr䢪A?X UENm=;T4``(I&AK y6CL>;<"ImUdP]aKmU4Gc$ل.ڭ U`RAN @N}T0]M4Hj:! 4E[jy6IBOBFHS pȽi}4ȩІ`"i2T !4I|B&8M=rYhIDATx[u'{uoF[ -lAEGq "{^"Ad2, =^I'$7&&9i{{W.()BPbJ @!(1@% 9E09C( %P#> B7afa~^?Co.uл|4.o!E.^/AٗЦA%$d+) ?lGH(ۡKW!P龾LRI mK6*հ"וm( Q“T'UrAP) rR몝|G‰T^/KI纩"D\%w(KIlUd;J\T2<R &E0P(2 Pdj Bi0ҹI6*rrqY*)XNdRd/Ozl` eiyo%sy*0"@&幮6tBlVd3 JTC-2 ~r] #٬4*p.dǗu-KTtw@_J7HvxAM0},D˒,g"PEOx<-SɄD^'<@!I'H6J6q^72*j| ?ݓ2J'vp-Ojīmy(Qq^(@(iY!'zYU?O{>d%~IFoU@ǫ F]6,te\rɽL~3 |^!?eѧ{y]\@1 y*`˃^s\ϗm m}LcY3밡ßxˢ*:WK1z{ QU@^ǫQA8E=F2%s^R˒ =H*QeD]  @1Fx>Zer^OB\ 2{rĕ@^D]7@bI$SǹDOt':u^Rz/nY'}(nZ A}ٲO~wA/c!]$[<.d/UP*?ɴ~KT[kfW8Hxy\\SSsޡ]J@vkO>st^6q>E>-žTZ%w|)\@y>'|o,\_GJs_34#pfd ^E)^HѩS&seZj7c_&gSկ~uد?doyGjl86p#to8:pV˼ $}ēv@ȗ|r=ѧCoVD76 4|w=wI8GW#^utÚTer@TD; :8Zƥ_Kv' /%<E } (zxsy':-vfJOO/^p:Tޚ74+@ %KOL+MPZY.MJ%zӝ*=~ꩧ;F~:6큄4wGCTT$nف!{A= L >*Dqf@BcZsuv7p^!Oy?s/s!Z\޳2@z:;;UZ˄?@wO]谎`A YwcBΝJ~ǫM[o+ eM:wJRoPsD?eiES_p* ]]]Vf*~6  ;DOuЕιB ($<@^瓽,Fs*^Oi|o=Bz|=^inn"~W;]4SG SF$grl^{{B@:t{ɴP|aƆ'6g Aw4]8edEdOOKtK8g gc=}REUd۟õ"+B}JdTO&2mO@]7m~f)hpI'=//=7_Oܭڢ&'l]?^]@r2:{-//OW Ҫ8.W|6|2e%B/:(={Ҥ'9%v |@9B ഈ@^瓽̥LRId|t}L!}^sϽ`{3J|yC:FH2OB]d輴Lx'TTT ^4B!s羢a-:Zfdm+W/Ow)' (i!Q۾zz_QM)l"*NǓjP:z^M%Ӑ!Cc @ڤ\B-J]|gg v =Ӣ&ٜ#/%;-eJ&% .z> {i> Љ@[ }fc SvJ~^YI+8&mm~gii|zkeR^rܴ]+vf s$n|Xf/[{~$se+M.z9|sT=CHU1~RnV~'`H{1>2Ju \Z]VŦهB u;)+~PeA}f >+Ҭ ^p8#gOoR r?K|2+HƏR`D nD{@rpsIW ~)B~:hvy&x ںL*Ӫ ;ڜ5WW3gf'W!O t&3Jvҫ5D444RUߖZ}uZj%K[C(Y'iP.4B~5TK!:[%+-z`T8MܩYCOʷRT sic ?6s%<P̊;D7F+s2՗՛H$ZLgN>PV hH*tMzVuE{_o@>P;ss vXdg SR|$ehW iVh@k" ʦƏ[~bP-[[[􍐴4[ٵ-\{[ut7꼯JHQ1thHzx%>P>CrQMT -[&}d(UW5-ꫯK6 [e~_Rڶd 6 PsG)d88)_*`K.{_a&W\.$K+6mj\۴iy /<_ C9r~TAO|m滘m6.<)db5'MQ~K ]n t]f̘&97n9tRy'e޼#י7ge<^EuoYn?krkޏ>&[/UlsNSR9VUU9 TAPe+}g۷\{ͷ$]yLמrAJyk9/$%}˕_Crz!n&͊+`Ӆ^iOv}wߔ]w%@_`?%w-y,~G䃵O7Xwdbf   [y55EĮDa][jI+dߑLLM^/{į~Ը{ȭZv={LfZ͜9nmmܮL|>-g;+|.zQB9;uy9>G.z&,:tގvdB# *Z*?kN-ca+W>K"dRQ~<}j(AC>תG9AT噶m^ JQ1FԋK_ܟSN9Irʗo.?߉;rxyCCt҉r]wjE$w9?~8+Y/[o>Hcˁ'G>ۈ(7߿}YϞ~iyJp> …9[I|?H8XuvjSLC9WWW W?Eg9{{ A|׿l:$[b }kB=O 0@waC:/'2j(%t/#~uvm'?E2v2ֻ+_OV6J[i7o[ͪU\!^;A,P!B!pۜ<%zfP*;4#]Ӝ>ԯʴiS$*X1V (Їn:{N?[9q_6x`ɕbmmwd&/fPEO{ esPOSʟy^ O#>(PIkۇ0@!@ H{gkN<2k.}o>.t뭷~kI>g?1gQt\V.,HE'c iFywȺu뤽M bz2e^W/_.?|d*L$ro$Zᮮ.y7ɊAw}dȑdȗ]m5w\y㍷"u^|dho},s.UUUײp:/c[oYߛW|+|&N({L0u{XN5kuݜ8p=1:;;_W^+k׮7Y2l0u]e=vʘuwwZvI'D Yp._).3o1v{?o'x yʞ9oɎ; Zҥ; ;$>}roV'ξ`A\Bƍ>S< 6T.;wWzW뻹IXaf@I,.//D6mj4enz{WWWgOR[[we%K7nNO&z}~Yg裥k-Rgo:urMMͦ?YF h>=+.DyZXa^[UU^3{n^gnvwt~Wue7H׏vy'|́~S7K.5>m7zY2~X)MB0@пpi ;ldBs}QLPIiV\ A![o=fV'w^3N~BauȝwFu0?ǭb?\}_̀,Ez}/i_SOGNGqdN:7Mx^ "M ioO?+@ rC>ks{ Dᡇ8@:L' N[OC%KbN|gg㎞c![zپ6&dݰa|'wkĈrXߵўSXlϠǦM̧{C7q /MtA#ӀIV:V6_*RM|^^0BZ PHz6Zz)e./F۷褍H'|\˴uN}=Z^ Ձ r~K#s5D1bij_ ;\cƌvUƏoZ~{N;M7Ci!Vjh>-CʟgҤpъ mץ*:3~Hu(rzzdA2lHōGN`do>RW۝˦E'?QBS?ʩS @iC_;Ҡ9-}ѐɶ[JK<ر[6jnʞJ߿oj}oY*=om ,{GMMt=@Qfos֊x{niŦ.j)Z˾: f{7{n6'|<][iVyWU]DE| .gXA#h~Ӝ;T7HEm&_P/gr"W`৴$D>%)/y">J߿⊟EOSfʲ_wI>=3K/v*;mf;ϛ3=Yb} slyN;ԘĦ_~5?.L/䧑TpvGIOwuמ:CS;5i ]N'F[c)Ё ڦTF=f/H iPA?^x~jW2~u>hkӠA~4ՠ{*M- ?XsazWAʗ|$1JWC4Vj6 zn;w/^c;Ws]ZCf;ҠJۤ9i7r^_|}xrq{߿Hƍ [ uH4o}2m2d=nf~omvh ȥ;Q{b e+m ̽J('QP>*sshgqk0T鞷կ#{k𕯜,Hn[|1" :Ȫ{ڞ{HNN9 r`;LDtnNp_~:~: m}=*5sfbnnyݮTԺGVZbɊ&Rqt?J?t>Y ~\aNZ 4@hW8jߩw[.i%&nh&,1b9REFӧO#U0ׯ .nr8?Ka]SMro@V|-Y6wH?q$U7Nm&`ØL 40(tAHwxn9dylsn"Hr?ct҉+0:"1|) 5JUMM뼮oi^׏Ѷhڮ-Usҹ=~EC^Ny^C2Q1F_oĈ1r-b;8 z׉~o5x7a`GG+vmbn;'}kvXLnVײP mf>0mdP_0U[[kBmy4cHC]xaHODw?YǏ|2rw-Æ 1{oeѢEϊ`o"m͚ur7>wUrgng?zpP^_9%{]gŋҰF<}o̙yo7ɽ_7^/oqyyYiM1q]H2bX?^YZ/v6lcv&rViU[zP . +ґߝĆ28 6'dnG sHV\_9* ~{GHJO*O@m :(1-;?~L|Jf9hMjGC+ZIIh۞;+u}}R랽on +Gi;cÎӇz:ɗ1cF:s>#guiCU7ѿJg/90Tmq?w#^+{WT4Oţ7~&D~ 0LHt_ىA+ywiǾN4H}I{Mst TE?xorKv=82-p>WZSO{\tsf:Gg|STb¤_/@@eN|oK@2e? nzTrδKZ k ~.I`g|S;_63⋿' LzOPF>/я3`{nkZӳjOWktmme[byl{=v6m 2 uD: 8;\f͚%gt wZSwv].D4@?s%~zxIt;O<9#~h*_=ԁz[40ZZm5t屿!w~Um 6*mo^UQⵈ/ rmc|zK|,*DvtЁY}}^wǻn}}kn/~ fN#:o}=+ZM5nx3i}$stu'm/}1m_w$ܫ[N_ߖXi;JLG}7dm<@!{`@ @*`0+ѿG:n;/f]AG2'ר3PLRq.mz6(I2d.A ]I;ܳ]x#$g\xGi͚1-ݜgfnw˙g~u}]I5J8F<T55Uy0}uOx\~{NvyݏjEn2 _MsNX*J˖-7m4r^av|>Vr{w?G^ۻkߟnP_SO=˦x,_|'Ϙ6XַN7[} &ƻ:MǎJ{N ([J-~83/z 2u ɾ7Jm^ZCJN9ihw2Ζc֓!7{wcdoC'Z ׶瞻yKҥmС2a„(']vi' /Rxѷlu K":…n?fG:(ee~nGyl֭jOBGիn۴{H&mVuw͜9|;b\~t}#-3˽=ceذpď>Z*7|ich׾O 6mj\cSNTVVΏDkpt'ޚ'evQOy_G߳{,;m„mL%W]u~7Lȥ~~?]!Z)kNAϿ`~F]~]1t|}Ô`/+c+t/'s_AR|x?6(`KȤ""$BU3  BAW_}̷a{衇AWJ;O=ƾѣǘ=gϞp]CLKUV{>/ {t`' iv銫}^{3kuY{g)FACe*tۄO02#8-^X;vmMKQyE?77Y6ido"swyޖ /EZ0yy]뤿ΠI[oA1({f9/ Wn9#庞~zr'xj's] [o=72icJY dve}Θ1C}˯k`;oo-cy]kԨ*iD%%{W`]),ů"ՋΡuʘ߬Z9Ar0 2j;A)/젃r<;\"l3~s{躟/Gx,JwpcWAP!PTHUX]ݎDN9处=[۽s^_o.}ܑP;Ĕ.޻ MOoOH8OCž}s}^}]w/?fItchZEI'dnouk_;E}մz^I'Y7"www:7N{Tx݇1Ys훫%K,虿 wdN^ѷ $n&wFӶzci}MƏ#}u;Wr5p3Ko5kuS\zӛvMϻcCLo^h\絢GAUr!1/lbC j~LJ>T;jakiK﮻1tp'1d^wL99L}MQlEc9j1缆Ar@Y:wK/N:ΝV|: :9zWbuOObs—ދ.sA鵄3@xm7ۊiX M"ݯD}sFˤgc2D޹ݏ/ =Vt@d'I8 s@4>ڷI@,ޡX]|9w %ܗı/yw;ecim>[C3^toS7Kk(ѡL (q6|{p+ޝs9}l4UWY nkݳhC{Z peԨfT麊އ0|}J>裏2-uX6m9tuHhmm+>-漶pV+ E:gСìC'_̵ɓ'OiYH.|;PĦsh+AC9X:H)%:ޚ5kJ`fuIV[ƭ]Ƭc{IF466`hРA9l[j!7s ~qiN׋,jZkzvtF7)s@|9*|1=M@iź{¥ծ55 \o~:7;O!qAOt,qkUU5婼Fֹ/!Jr\5aجmZv-' O~1ygWygP(9S=s|z* Z]UU٩wZdOXZeH'ZOKH˜{ U'6rB;i~,} ;Cen:ɥCj?6}LP} k0_]+ֲI>#gm KwwwGyZ[[qn͚5?C ?&g@ýOI>޷ =~MLJ“E ;r@' ·͞>ieMSse{nB 0w9>{ Ÿ'yx00Nvc_7>߳S^ XN.;.4aBv?Ѓc1xwIL8$Ff\,sߓc1筰wV:̎;C PXӦM_]>Ä_)@HMХس)g8+b١ᕅme8Æ R[[me(%Nq]]zv3ڵkk@oZ k;Q@΃vy#w59$D|o#" 7d~_J-~OA+un$kke̘Q5@TA@ҝF!n;Tj_A>t 5;;; (API./5H/?~fΜa,Ybm[b (<6Yx%M&/JD ڬߠ.ɇ +aΟ,?J- B g3m4WcYIr+++iD>^-stOdnYȈVWdDCV.STȮ+ėtlqdRm^ ʝvK =   ?Q{ٕ?=ߴkmmlV);=үȮX{ V?o--bZbh?b6y6y{9>jjYnY[\nO۲BV#GLɬnZZZ["\0;D\-Al m$ P*%gbqݠ} :;;&NcRAy 9ڬ0vsObП^!7l|Qw*U/mގJ6qDy76N/v;Nwo~z"$R@PRO=/gcƌ$]H>A,g_yQ~tF9 gQ?m5fm7݆k/y@R@%ι-b/_V[J:lڴɴ| ~& k;o PH3M#ކ N8 J {okoУx?X$ӹSRZi\?(T(!_K?M'm6vmU@9>o$!7 7zi{c ܮ-$Gt455 O?Y' O?YMǘ1lEoO >!e@TE6H}}JWB? @iUAj:sՙm8ݖm: 6 (aV{{u1=b*9͜?(6 yJEYJt* A6 (Rl 4<J_bC T PPnxJ_t>6\OWi/Z+=+:I 4yPaP:Ƽ?(Zp*tNtN xv@?s2`0`6&aJCo -ϰn6n۩m> @'uW m1ĺ(neny{9(nr*rm;g?%3O b' ͡kjj$l\4Y4])@)Hlov*v'{Pz<@P|uBFBeeAs>7!ϲ-goE6v"4@jL뢊2ImP*,PMmPR,\[춞͞?@ %}~PPRgҰ:PR,붜sۮGۆBPl' ( |( MGiHޖn _%^Oe1gR@7JEzT0P7 X"DPE&;A [d IŇJTr+(dm7E 8}SlP} EN{z. ?/uoذA:;dȐRYY)Hݫ&ݑ; 4HPF,- /5]*Lݳ[&-Fm|c;;A|>D /y UYj<e9fWp1t{s;Hn[Ar~?ȦMW^y̜ŏill25HO/$Ϳoy93fLO?/xGw{7nX\tHx]WK:gm5MɆ'ʹ?ε*SE"{r S}#X| St[t:T }T9 X[T qKK9.u`Pnfwe|ݺɃ>,GyH䭷ۯ~[/~6|򉩞544HX=7mIW[[?X,x7r^@ݱaMM2gײC9X<툩ǦޱF,(=V3>̱3ee~8Dt|zAY kr"2@v+7L=h_ #yꀣVD=˙g-k׮,<NyW_eVHSS2_#CӧɁ/GV\C6 3N7' ^xEZ3TƎZ>#=6Ϟ=G^~Md2fhk=e4'W.܇ÇɬYAPRs0[dB 3yYj477ˈ#dq͜D_CO><ಽ\yg1澵Zξ^H'{`Hθm}<.NM*]eV2r@u/7˦;T䰩5rSVwɿ^kkOE). 4҃@mm푊 ]wqtȈΩҹq>T 555ٝt*QO|e o9[o{k0mM}h%wWzx5\Ѡ6x`9c?Ą/=[k2u8M9拞Y)?JKKkNJ(qr(=ܜt_U\@nfm]e)8O.8_jz`c7򟙖/>L|y s {/&o_ ɡ,guYEN+? ^wK,j~sDeozW#Ͽs_رc#;ϓO?,|ʕKg /H/^zŋ?{\~vrsUa^g|3}Xw>ß]ij FD:uַ 2JTS6S㆖#+dѪJmeCeUŝGdhptdP0-+ 3g6[:<>LT\kk0Ti8b@Zt#9"O]]9dy!4$>uԑy+tK.3qҽutt0ꫯu?s7z^_~ELMC7{}_|='#+~iQO .w$K<&4 8묳̀m]wq]9xo?/ 9"/hƠ3q߲sϽ3q {1"+\?I+5H%[t^ SᏓL׿ ln]a*H/W5\8:[o7wnBкk@2uE|Ľ +O'5~C)6`eOVfʬqttL_Qw][B&*LWS={[6ly]Vsqd>9i;9mO4fk S3ijlnn1o~]wciK%;d :7?o@iP5ed27G)t\iUV'?N>6nh 5`Ջ~i ZcCZa~Bs>:Yp뼶R~}|Y~}Z^f+35Ж{6-Y7駟5!M+8g̘jө3DzLĉۛ_/"`v}۴OUilC=dq_kgόtA :;.4U:ZlӁ:^7NzCGKʴ^V{L5埚('@;pj[8mk笀U%׳bOg 3e>9`{g{Z`jPtӍ[w@85w問:ʫM`3/_޵^`Y]ַeP ԿSt{uu$@'ʣ :e?O(֯:?lذWupwF&Թ$?ZVy]|E¹zk~c6qE?KFs=8=pGihmö;T?;u@Q:b99,9?D.瑁S{"mIfktiG*f{{%6iH7K;ַ̓iA˗/7}ie˨Q6=ފ@z6|pKoܕW^njQwOu//}!r>/"m4(oH} (7ogcOFO56t9gم/ۯ{elhD4M[:i8 t/,rҵC(RE~麎~~Ə'3glw,::3]39J{~KV7?\%n6sQdV1׶.%"gun\G+~uP}ĕ;*Ω3n[+WS+:c򍽙g2XυCNk!,z5HaN@r^Ѫ!K#s0 tU霼Z80=} Ǻ{;==8{xeH+m„ G=ggiʹ~۵L[k9y']s3{=nq@vxĦUEz/~ËM=?Ͽ õL(MtZysO /6Gy0&Ew$pJ3^x9+cl{L$QFգ:3}4-XnvtJ+cIw~?f/j:ߞj PG+~~Gv7VnqHcu阋NwT #3 *ʹrq+= m'A[89' &Yf9ֹx՚9%ZQ///7mV:Dž;D?s#T6WB[JE3BYY":w>E^^ҭY?1cF{^w)Ǎ:Ru}5>g;YtmڱF~F 8~Y[_xZ1B=S _ݴ[n;TWES 7H9xg`PM`| ν3azdӦFɄV&UVnl<ǾȦ^^'Cx{r"|^].fYtxtҊ;Jr&(#G0'@@ϟožyv٥ ?Gg~dh ^40?^zW/ߋNUm{99jjj@wp zlee➠hP7eǦm@zNmAY5jkM[^Pu!Ǯzd~5tDq6lΑ%8'~k{c+n{{^IsTs HL~Yvf_QJܛoӐHH{Hmz*]oj>82=rԐM*fzoC'Ǯ^}n *2M/+}QMmѝAtVۤH@Bvvd{e 3f,39_+Z{ʶ΋p7;37tw$ε=?E"GTFo\8~+Gyy#ˢ(s2$6hk<[E7 r9lŊ]e}u?*zε]w%g}u/'M͛\u5nFajo|[RL;vn{aZ?F*7Jgw8ӹ|fxya7}F ,7J]!a HD[ ]K ]0***PEل ۘm׿qc#?C=X \{T__g<:)|W_}5 ^{)SL5-|4_@wBfRSS#mm=s%hv([o6pvTYY!ӦM5CtPa&ӶYfI9r|Y?Ω:R~iel ^uh3JA;HGd,_[} Yn4,E">@kU!o-ݾ<hs]T@\vOGwP^$On$6r^'O~*W^y٣IKb&>'MWs"x&/it%_v{nNdٽ[:3Mpofׄロ9sM+;$stttʍ7l?:_g|3a!p^:]vyٮ`ŋ~g/y'#yQwl1(O;Ms^6H~k;'Lm*9|*4PWWZ1r?o/ĭ'#0.N:υѽ_~y啹rwm>C /|i+SҒ (F[b:u7A:No'?\灘W+49C3wr]n}=-9m||O{|>{D_1[V?? }h%޾7ѕ:Vi[ ZZBf~. \?^7~o^z镘ג ^yM+>z@P&;mnzn򽶫]tpm 3G ]U̱UrjHZ1‡vD ݾZmY)'Z/W~izsUT+Q} qWBn˫*(:}Y~}dyccy] om^z=Cy%Ki}̕nzwVA+rIgYvk_;%ǿҽ=ǿZS9 M ;m1v:ܗ|k٤I̞^xo~K8Z)ȬY3pQ@ޱtBG9Ň=|'On)gңv3Vuv#o^lgݯ=HzH~UTTZ!m* *<{'T =JO) sJ\q1{=#-lhpbǣСC%?YGu#'sK~j]t׹첟Xc\O:* {NKM˵\twe}q-ӿ{|sʅy?^lGWGN:ۜ- _^JL[E?zWV=[ޮoI\L?eذa~GJ!{4ε\,,9^S?Gxʷ}Ȟo-kΨ| x+q5%'l҈On BkaMDyEg!fO'b N>$߮oC+_9L[9>[咶ed f||WLN?z'.6x7Dʱ~y$hw{aӐ׿ ~1u ]˴BO+@4{_kO娣 t ''{eNo~2h?~ P8pIE}G: +,ώа.vgJ~-rK.qaք kЖewp-Qu\ ѭ@7oUz4\S䊇7&8ZUt]keICloݲw~A%Kr/ckq<9uͷhч/靱1#7I0o޾I=:X{Ha{=]s ?]i=ɗu>#)VfժUfޜrF~&L&п=~F[2iKsVkҹ-]ۘ1cL,m {o)A:Li;~TT']T6?#P4ЖzVpkWM m{Uz @P;m֎ J+}RF@˙?ncj6W|@555f (f@zQ|[Nb?oiܡB H,*1%@iIS;(~YOڥM =PuuUK:cG SkOK'nBY_W/ݝ@a2(~#ʬ(mrU?-ve@ RݝR[[W@=CA( Z{uvmbSSH4TLBw7Ͽ`Vf˟Kv ( ㇕5gutti0hBJb®^[gH5B?{^~IUe%( |( g}R,C) "P6')ϵh3g sp*mUQ9~i@i;\m)~\4@)J}@ Tڻ ?sX`!/իטӗ^c`0X]]-@13 @i9jZŬT?BRyJ4E9R%s1cƌmFfYUUU%?A)J~v3 JSjdpOQtnX%*gkBF|:TM{! )/<לk=YH&jkk(F|v(MU/@1ֺ^W$]UEJ&}mPPQ} Zҫj=v3m 4HUYYI-g/̠~f.\ҸjtmBQᏭ_G(tC^XsdB_sϙc }aN|~5+6p^**pA? i[~⠟UfaUUK(Mk>֍ڥtdkBD(4OzM6lwY`N瞮vudP3UP~~ BϨ~VfTVՙMkIgkm^:ģVp  5k˷9s^`0(~_v}We[ndJwT`gS?YoX_p`*PQfKEW7Z!PwW߄0v?VŃ]`tHVS$ofϞmMb 7XaP5X8p477K{;(:mt`ړohbCɴ[<5zA vuJ2dO]]]/֭;K׎>kEBvߦJvڪ*+;*Sss" YoS_ђM:இ2=ҪnXzxt~oʬ +x0>^-sXvɒݲ) !)F(b_}OF4a2eL:ڎP\YETV5HwWnXSwĽlO  ~>+$nEzpPfkqo)MMMg|KfΜ6p---\|M_53(Yllh C$Wt;#P"|Nk^SS/tRIw0isӛ lAsM3;{s渾Ng/ihh0sׇPz*q[:ɥpnO<)r#Ds@A磵(J7uHrjwZ Er/O~?*L]&E勍@!@C?ŸVeZg+1}U-#?% C_{J XOWGWH6ABn Nw mvӛa @d3*+2ǹ =l @ N !H6۾9MݢR!@!_Yx80!֗'֭['wy̟:ɓwN8^F)} @ N֑UZ.LN瓽l`K~x80lӶ}au\&uXvy7˯ 6J_d%Iß'Gß(_Q'GLM/:`jP&ِͷ9 E07۴wOinnYbB_D 8';TW':s;A~T m<}Q; ^6|l{@JTcΟǖJͰr9k⧖+-lf,+i[;8 =0}R@._.fvIi][l{@ /K+IJ@Lr(+ ,Â~lӞxqRW ___'wz/@VK?h看Vp3 F Z+fy.E;9@.7@eem}nmr啗ˮΔjve9BPpt'dlNcv &Y=oPUFȡP [VY%%} "{ ?{x((8Ye Dֶ#|>E{7eUP a+k$a C NEjp(スZ_? veTTK6 @(<Ѱ~4Y @WCW&l D [t;*x1axk7i舥3(W?᏾f j3U5$t=Aɷuɝw%/dQFJ5~ ۸'|sjS8e6yS>>Z9I:jsov:O.W_}C:CڛrWʆ %=/(HU>iȬhd6x}OֲNs;$^ᏪsO>Y&?B!39aP[% JeUWITTTHggӝwS[c77s9KI(T(He>->g c:?ۏG_|Z#(]]MfPɥpwYK~  : K! ˬs;?Qy^7loo>[)556yVVf RQY'Uu%|uUU }>=ߏ (X~:@?l|sEUf29xR\z 9f:95V,Y"رd&eL%)#$*+M<)r!߯a +%ùy*sPPxY!쓣1;-^ޓe>@hk45åzCyy9twwK>xqKKKky}}wܱ/B/:mA+<rH5J~\~zٸq44СC%ha4Ț5keݺ ߅Y{ѲAB.!%Yar啗˝weԩSOIkBB:|]HS$}m?>lر&ZcAP*ȕ ~=ކIeζFl\n)VQQa]]]C s=[z0T\=O(KcnYRt>E(j[iJ\ֳ<]0l+)PS7kP<P}5JGG :D `,!C˺u륔G78 m\8 ^zi᭴eĈaQA:6<5XOem~RVV&5&L_V(4@B'R&"xܸ1m% s yhgс} EßkFڧ5 _u5_0 :8|k7TKwwuH)*//3 QSOZ;{pg^Kutt{_> C-n46nb統hЮP̼-URd?IU@6sn#'HEU:kQJ6(T@JC ڷwgT]3/,]qtKK477рX%xNŻNq@fe6;|9 } )Y-jjHݐR^QX)M)%h(:kV\" G{_Y8mw &HOk tR)6}}@Q$8/;q8>:~}f>|Ϝmp8?P2jBUUUiJc>(J eO%Pu?65ڵL m GC=cb8 6 }`$qbTfyWW & m$U\Vj޶K1ס(t@*~9m1rseL, AVnĢ@9m/ˤ¼>={!>&0OGG9nKyyY mU!?kBGiR Ic{p€jTƂn|RszmK1WcWtuuonH_]PV3?CXmmxDZ.imm*Zw$#UAT(~[;8}T(&@,~ijIgwaTU'@XrٰѶo[n+G{OOڀES t*% H ({4Hv|-R jk@!P4h\ΠtC}Z1,ѣG׾Ȝ7QSLk4h X+Udž $fvFVyzZHS ]h= w!V@!PR4xiN $/tݿ *v@8T-: V|?T(v@JiT%IGwH:icJUu\Ɗ~t'h?XJw00hT(74p7P{{'ֹS@ /hPcš*H A@PۊY+2N}e _C +B?9|Ÿ?rhll4 (4уnjKNѭ𙹈_1;~;TUX+xy!- XI]wHnsinn5">_2zvlZ tLhޯ4T\oᏮwuVy tۣks!P rOSу o#v.mGݶ/Vϴ_f>1P}*Zf?{]׽ hذ2pYjuۄJ;h|t; (4ѶmĈ:NTU]3to;ݓk tDEtDM[l;26;PF #&+*$@P(g((SS^^& t[DItDQt[%:r  W@AO7xHX@VyUtww4&mF  A 1 zH{4!}=Xуړ}@_m6S.^B.gO| "|qn7; k{@zLB&m|?T!:q9|L@nurm(BWWkm(m{RBϞ"  dc.Z;YEz[!O`1M+-T!;6ns\SS-P(tŹD\0D:l  1V vڲLhjgePPTB@mV  4 RV[C rt"Y8|R텎ȥmT!u{ŞSAk2+F nSuZ[{e'~n7wY/++\fmy=m  ε}%|GEW 2y#,ll 9gϞ坝e$n3RYYikWzA^<=6&B j<+ >9ifO;uMd>Ap 'V`ӰY֭[/MMMTrObzz_zzXyto5ba@<@C=W,v @kWQ8؎rK+}6mdb*+!c+_:jNkKEw#-ĈngXdmdusq455KCC)2l^ Bփbr91( -1?6 ^e<' Z?\+BRWW+UUU*QO+ Z Ԛbh[g. =ͮ)//|HxU@~OA/Ϭ0u1]1Hmm#H?sq@S닰(VxGJRJGXT!7n,ǦM>bx%u]6pX=g?~ qU@=+=@ANC@ `tbOm WUUIERֳmF)GŢ =iӊNA_ )陟 $B !g+8g叮@!8diuAm{TTT] Dsno6*HWho%>@c_>mt3ke4kc{!@fM&Hvz=sƄ{H|1$ ;[83 7WLK7"ph4+".j  ᪟pX#ZASM_nv;8w'|2c'Ί9}}@>z$XzrEV`R>cIĴw՜?עU-UĢ+|z;8o}#u^clO(؇@mv 2Jdj㞐'GrO{9; $ UIJ&mU^^HCYS1s @|o}pCLHK7~ӊٓ%ztG2{>!$'L+z*y}0. X577K6h A|vՈX66a2ۂw|αs S d^qW-|": rWP,=ϧ\DNܧ_VSTkc>xb-۝9Lt%wr8c+ S@"-\O{ %|ܳ-TuKNf_-\wb{Ovq 4Ll[oCV\%wk2aРf{>%ސ:}vhqVee& Y+/2TUUYJ^zE>3!tKMMMJ QV{uorQG@ZK/<ᏓV 4H8tɎyt(t:6RV&fX\6~ﴚMUmAUz)FedL.G7jefejڵ'ҥK'Nv8k{/}-eV-r{)ɖl@阉蘊Xr3Yioo6sZ8Pr/^, +(=?7I_C="/v~H60HR=c-: ;oF=U@JɦMI}q㶖~fB nvto}rݷ7 ,멍7-&`ϧSWh\Z)o T+%"^s%?4D!;ϐ1cH__͆'nEө~MN< &)++7CyytvvܹVy|s9_"t]?{"t]+~alnW_'2e@ ;coV==t'l{"mg we@s%8gиl~km>imWtO>KHf˴U/͛L>M Y_goỳ1̼+fOo瞦?7]'xR4ŝ;5w q'Fk]]q0u :ĴS˷r:G֍"sų뮳̱FK~,ßu|khh Bӝh @d97AT<#GT+WBVOe΅ y\@@k9Ax .{oPGsdڴ/&l#o]R W,WȦMT@֊|wۗ%{_'ME]YnfIDjmEzSᏮe>[gm׵K_W:_Nql΁(iYr IN1OOC@QT~ӦMhz5k6 vOO)E[]}5 K9ǹ羷6b}[Z;3Z/s9+sﵯH5gZp(A [@z@9?$* u 0͞=K9`sW^˟,XOwu:S8p3؞1cHwϤD)}-NiHsZFNhXBjV tNc7P  OK?8@!V{Wtܖ-[ԩSdڴ%ukbipBs^:w.n˯"/`_ Ÿ5}jU}{eҤ^/vX(Be:&>JW(D`魥p`vO=d #>Nۻ!SeSH+iw!{DZi/5pG28kQßK/~;2kM(6'iUiZ~xe#G5kYtl1}C(bD@;˟>ˀ1yd9昣cvay%-&w97ޔ@njdF ~lذA~2<r ˖=n?{7o#<:@ ;2{9r뭷P\^+s}@k=kd&b9dv;&gΫ61PPV&d`T: /hBR /s=g+2P(ԘykOټyә::4.х@ .sR9/2z>g{P_Լ *TK, %;_IS3b1xRhHZm%SvtD!=+3>l >SIsws^׾:7;e>+%P\_`ִiSMF;oDR&OdA^Z%Q Jk]xk8唓K>%c1W_]gI:;;\Mf(BaPIz27̵tR{!^uO"A=:~F1'Xߡ^Pl޼\<8UX]CԶ멂%sF2G[AJf\FiiLT?"OY;qNnfuh(ݚXNÔ+B.ۮԽCutT _ڄhJ3WB fpкd8$M%yu=\Y355kkVZ҃~?_+qshNK}Ÿ|3O!(0gpXR6˚>hWN8N L++twwUwQ0~iA;WO{8`dPlyF:Аm?XL%P:Owx:9K9[lM6efٲe"r&AssYrio~srm2<<\ZszqO+mBa3D"a}Ť˕1B5b@ZB:|G}TxIyכowyg+9Ggԋ\4h4f7`J4jkc)ͅ@K#W-"z.n˯ʕ+eԩuAb1/z4K9ۋD>oT54JS1>T94Ÿ=x씉b"mk৙Gow={FZmc4@flK&6 M) Qi^=xjpDMKÓfZc*"8=S `+ @skooiۢۄ$)D".nъᏣ @#҉U6}! M:::64S喱M:Bai[DudtzF)Zm !wl?N7hHSn#KV &m2Dfl6C '3H y0{wK%=4>2hTbOĚ$k"PSſ`U%mtOE'CCV9jHLzʣzVɒ%ʕ[YhO9dYR j!+IIM%%2+~Y/"rCV#w,w6ydz4P59.T~+6-&Xo"͋iS\v;Ylf3rWȔ)6pZp/ V҉nM~OZs5jtmuβZ+zWGZ{F3~bH?9 ,m^6UAR\̏S\$e 藒xAnskS AXz玶x@mmA BV(Pq! ud,.=**^X}+Wzm'5Zpm!߽ZR:Y,{9S[JjfxZbO,zn+ߕ?*Zn 'B `<^sZCzբ40Ps*8:EmmAF,ۮmO}9$ YDRe*皢;et$i?PkooL`cO7P(kj4ҋUllKZ).EQDRV EO??ƩI&u0דɔu>x^kk}>[r_^(xfhm34`9sȕW^!K\g{˹Wlk^O  cLW-50([?dX:tImى$vrd6{Wg幅g[uF4 k6NӼuƫBE1]aԩr8K%_!ՠoUyN=6MydR"7%ժŶYp>}_,Fk<Q1Ki*(JZj1,@'^Nh:unFmq)2|3?.nn2..?L5LkyiPO:*#]^=#CCaWU&tbe/ iSVn ,g >U{ruQOIuym*ɉh$BrD(Ik))5@ <-g :due҉5ֹd*ԮX}+W x@P JǬ RfQ~ϴTH$ M":&ѱQ|cfk jLd@ܧ}3OG{/]l5@ `oڴ4ԕAt,c{l؏)63Xho|<h< SNh?U3M23L ~RϰYvPO:qY¤TRis9S:wwwəg!Шrp_u ݎxZK5HU|rRRU@v:j8=t c3Aaa4Yn#hΙ3G 9]:;;C6f͚)@9np/xR]E{(s;Jz;qNIlyd="m}ɮ`P"5/]]ax8d:&ѱ@:6 @u{Ky Rz{ $+*3gΐN06PȄ?Ήg gm/حF}h'+9g76X;^k' 8 CE`˖-!e7Zc>LTlÉzpBc%K~8MU'4^V0V@\ H6p%=}D{6oͬ{}oS-}ﴩ&1[JؓOKlJ3PkksGMY۪\7 (HY֬yZT+B <ɜ@Ri@ ZmWW N @r=DT Ud!3㌶`ۊ޷rJ/ ZvIKsgˤ>%C?VkϻO]0˘^s&{[5- |S(@u z}6hc,v 17mL]&k@nu^?Sud_) 8򔺝Go?:p.''vpY=!n<ۿ)ڂF {mCnA<xS ɏJowH{$ܾ"~qfΟ}3/jok͜9K;iB {'>LOKj i[;ON0g3m4rsBRN+< zV|ݓ z>c9ˆ@efs?>cO -Zw. vp !h±0UVhݡJ$$=gy:mv+] dks˶zKg+ZC?}ny &3V" H+m"T<=:QiF6{Pr@/嶃мJ}+Q5a`HtvdMPhXZnktB O{QSfn8(VUSiӬrs+9.n:::6hJV?4@ Ÿ-[J3ǚ<z17s,͸-H3ܮӝe4Pt'JIXB>if|?՗}|@@ܷ48ʙfO6@3@S37LJ翚K=JßX,$ZA,**\_}G\W& M,+1a }f ~4р-`v^ .V{=4HѹXCai]h xNt(,!+JIcxm?*okk~3U?TL\!su@#ml4P}&J$F4|͆@KE+C!+ 8'i?E5+ Vzzz%H$⮖p[4+ G'2av"e$Ld*~~\pZIZrﻗ-` 7{ 0Ph]uu%sEƪ4ѾmmvN^c97ZO>tww(9l4V@`B0AxzYAP II'dʞ 8@>x|~  XO ~^ s* yh6y~F/ |0hQ=si3Q04x./`o` 46oo{K]V颡Pc9n:A{* ~vu_slrG:n_A~@Ї Ƚw:(%%LKwmڿs |Q8tߗpg_oۃSEg y9MnxMHh`o:(4Ѷm][H$Z^{8k1r2>d*[ļ?@dW8)^[i9!L5@h&J(.1gJM{@r4I$4IdZ(-ok{;u VaDqs]Kn A&v 'tPQX;f $rU?N[ك. w&(|S'uv'bq Bc Ʃ nmesNGnʳpȓD:RU?N?z^םn3B:fhoo3V g o {JA@h4*-T2عty˝ǹK456m%SN&P;B:ER zɸR~ BJ0*=)@_- X,fnAk6VoK[[L>MΩRu<w*G*mzٿh}j8$x(U-HJ$5!PggLK*:б1tc{EB#Evz*2e$8Т@]th4b`===)P+:бr:o4wEzʙY EJ@xG<;[* ~ܽ=.Pk:13(!Mdʴ%,(>_vOΎnvOx8^ 3=k.;̶d~t<%o02sx& J| `0hV8mwU@#pr?܏.s,=8Oቚ|Ra7dd)f#s^#ΙO$/qZ*#ɄqNfceCD `iF%JZ c6ikk3PrBls[K6Pȩ cqNv+g27sOZ Pgg$ǓΓ + à**Uy\:ow,%s=)j50L[[[\_`UH[n~ӧK5<23g-o`aD?_O+Z@j-\[: ž~K7؞vyfp,=㫱{A=;g&ykG=CN=dSO}dw;3lZDBB A']4Q嶯x}lw[Տ7s[C*j!YW voj@8OnUι߾,='жWS0hB+;٤Av5P}k홈a… 'yŸkAy2<pHᐸ3PGGtuuJiȖpN>@S*)TrvTrwxaPQPsz"Uoؿ PkZ344d.Fx<&MX T PM`gP @EnTK>匽(Ȼ'yz|R-?VH$ŸAq3 t~iooy̒^UAs 9܄x"0ɄIk7%T23G_%-zvifNp8b~?nݼu=fBݣ:~eoiSe}1rmܸo@aP9ձOߏN|0+`\$qtRO{Z!$|饗d``@v-rvNKľ>y5AC>̚5+_1w[\N6M ~sWWU|#}B}$~ V5 5=5I&$zVK vf쳐3}*#I|rSǾg[סnq3fA?]Vy[vs9 Wf w.se 5kp޻C cuLnBh4f-Qs\%N68GeT-34]]2i$3CiWxFϛ7\߲eDjΟ6F=RtܨVc,qjQ*HDb?>hmVs#;VLjh1 Oh P(b*M4 QZEߥGTх']ctZ PkCCCҪZyT+JhT\P#Lw<~<Ξ裏ۜ;RQ 1;@# LPmmZ-XҎ:$=TLw6t}UHn^CDJ8֯_?ׯ\í6r8XK6 9."Pg'M1Y7O.ˇ~DBpǽ‹q'ⴌKS &NeDVLlzis0' B cB`T;pf7M ցole˖-rڵȭfnn2y$O]]]rM8tg~։`m/&6m@8z `D;=볕;|Ԃ['O,zr˭yf/3gJOOi9!= ٳO6|ٰa,]z< *>[̚5ScwzyN&:L&xmΝ-tlTnZXT/n,o?Ι%7A!Z.,^?^zY|M8er`abBk^{ʹ =m/}YVz:nڴiryw&z0XF{urMor"9cjgiKJGG5rU7E`$uTSeRj72w\^?s&j ~ty|>d9p6A}UZJ,>Jydz944d}2^ {}ɶ%i-Oz}l޼6LAFh'I p+W'>q 3#̧]sU u_Q`W/VP}%3f̐Zioo7'e5^^O:;;^ׯ~? #|g5kJ޿^{K;tRsѓRe{_'44V/w]Rօ9R.s te"#Rm}(@+w'`ϝ;G]ewӧ7l'jE}lOr 7-JBag/?/fZ‹eƍR+̃ę (̯r8z ,:#HɲWw;a5h? ?O*%sWßRYɢ%)׷Y+kx:3&6{ޫx\d;}@9@<<uG?!?Z*iShiFNr͕/x_(rG=F?KZ!D=E(yH7%ocMMnc~ix<.V.s?u u>.;.҈h@.R`d@Jrv ͥ{9}мJ?^,qDžHzmF +9:oG>/ys Fh%t* B Ow$>T.ϙesJ# Ÿ]`ttgn4g4k-((KKE#w |*4ŸOGfW5 kxH\.2id~Gg=Fe[AZ?6&'ְGx<73J#Pމr"e?O.d^m>KŸRT̝;G^mʅ? .=Q?H7okpH<;<-qx8P hf\pE200YL?K3ޝYw 7Wռ ~{/7H&rzeٲc5W_CZgwg/JfY߭=׊3;I iZ#e~FZ^+?J'O#?J0˅@5^}}fN;Eji? 4x,D7%wW}C oBUpt/v+ kQO}9yB">k[K둀Z~!TZ-QsHmߴi6Rg?_g6o{.7ox~h, {th4&ʞidM둶A @+VnK%j>:h~qMZZ_"mVn֊m|oŸ=]+G}#@ŸW>I։D"&h,fvh в4 R0VJBѴ ڭΠWؿܥuß/Keß.98;)tЁ%ßK/Raw)k'7044d3o43_(L* ~'˶t/ E%#]AA?:W/2o]n)7oʫyW D|CV.(@@ٺipT7S4-awAc"Tx}/[޺RᏣ\T,м{ K"@*Y.WVe}(@KJHZb&V< FD{L8` hEǣ'VnLGRᏣTᏲ? 4h4f7`j``@mmAfBcinS D +Aw@/\RN*uoooz= iFs}v(:lÆ  H%wL&9ЃG}WC\?5}北>mNI$I4JR2 tҎjG;aOww '/B!yu`wSjY`|ixCAKN?}B%PѪO}m޼E-&6l4?w~cZ`K]g@ ƚjΟ輩mmA($s4C۷r65L:E2 ._^ǍWsY[[RKGu90w @q꿭-84تN:1^qŕ>xZ\Z~?f0VۤnE|:NIKGpBԏq|i}1y;Ѩ‹󥧧[j#<pw{^֬Y+frtmwM9 @ ~T?* }Z*cwHvSQڨ׊CW45hNnKNof/"o}*+L9FjI[<2s}>nŊC֮}>}%r|>,6O֭[eЬZ)QvcOӪ/~ /yål}K_bv O"ѺU2m@S4OVܦ*HdkA=LL^{|SOλЄ?}ѢSN:T/i?Y챒w^WԳ?VcRIۤVf̘a>#>C+li{Hu)GVp܈ $hDI3H{9sfK^\꠷ [i 2i$+&Y oۢ-VpXyO;OLC /<_.\ F9kEC oԓr*4s̛7,N;\o4vv-(t[܄g6-DiYZLּu72 )gZWOjfn[G@ +?/u~R/Nk3g@6J~ .\(_ 7m6l4˂ _-[[-[LDK<ZtN ]V:7U8 d-%K3\hO9dYR&@\m8T?ܼ",)[Y4M[KJ^HvjwHoG*vttۨjF/|m*i;qZ]ټLmL _1o} fV?:::@vf[-+FiS\v24ʬ[ Y+dʔt ']HU!Ș[{Nܳ]N])~_m~m RV6lO3yB[Nx I&RONEҁ{}nsXLԛ.zҏ.XL&g{^:Oj\mɒ?aStI=8ۭ kt~Zh5 ʳ;+N zz}\ޚTAWJr{}z6΋ORۥp'O*3ry w;$|ArQG{{{~ܧs@pzWXU+WJ=p pH:5!?{@6REMʾ dܠLmpJR<.Z7%nSw^G̙#{LѼ9`ODǿNnMtt˻.9/9玎N Ct9n:~FF{*vmQ9L\?&W%ӒHU_??8l?-#vio}Y^srA]īQ&rkjNHU9cmfΜ)^9qSoǡ' ϗ˟4c=.˖=n O?F~ lyS)xIF=Um͢E{//{_}g@Bn\)~gQ=ya|S]K?xs.=m NC7`~Vj͘XMj.G >O<Gߗovء'X.<`9^ҪZyZ9iE뻻3ϐzkgpX n]6voGH[`6+o#RM+oa4G}Ze˖YˬGeǭeFj6}S9[l-yҥӧ?=|mjLZqw*i5M~k@W^yrȁuggzfݬY3Z @9v~@8%w>[?>Ki}ρ]7f{:rv۬.pCCCoO^S)R`Mԛ>00(ӦM+y`pq&yW\iT &MTtJ&_}uN۬B1Pgg&+exE^90*F׉נ+y)^ac6 %eq{˖=X9sfwMD"kK Ȼ7/o̘15={塇2BBS~W^1 ;,qPFel9G )^_fÜ?MQ>Y:YrhE>KfϞ%@\}u.J 9eZ{ @n/S{{{ҧI& 4꡻[N?e_GZh/Խ.^7d~g !4 T~9ipI u=I/ќx#l']ve-[Y0edF}p\'-$ (ӻ+S+eŸ#zK}6;?4T]ScP~MJ-rzʴiM'}-={#inTcƴK6/q FhgN'Ʉ/0c?u\!;o=0#D?Aȓתo }&=xfΞjY-Ht^H] 碬oM{B~~I&0p7X)|l5ڹX_g16tz$~") ~ӧ ZV'EQD2~y\Dmmm j1K)TIǗ1h< W\8Ӻ29{\[=r9>rd9 mLݮtr< ? #8c2̙32tuuI,3BZ^ k^ Za>9cqJ!=sߜsΙvZ3 n 5QZ5m?sќTπ*FgE8c( g :ouF0(lVWTެASvI$bUO< c'>,Oן5{t'XP{ɄA:tuu 4MJ؅Ǧ҈dɒdUE>KfϞ%|h@\)IT9˩:e)Y5aNʿ3vmM+ ß]f>dܤ)y&i]MN,:3TP39H֭[ 4M8@T~b1M.le˞5k+BL,R#W)#+WݺUgi%KiVhs2I9ztjP6by]aP,:`,X(G}ԛEߓ5h4&mmAF1tb@mYВ% CCæ* Γz܀+6p+?W~tleÛ,yxHnY}2+;6n[CId=+^SfB|i7W-Vz?5XdP("fYi?n\j(%}}ec?oRM?zXbUV\)!@\_ ;/=m\tP}3w+عYb~1 T{ ?PM[m ˟V\cWY?k-iX_yL+P(,c?:FqB*,hUAڽ!S - ku5HS+>q|vmZɓ&,mmm3gq#{֜^)iӦL& `1EtLbM91Md`}w/Zv70*xd8Zq]Uay䥨vCwj>%FP * PUkە@ivaƌc;=Oid5~Yj9LYv w3 /[=2edfp ]m"9 tܡ,b#;x뵫>X~sVUWWxIt,z$?rOGLx<.0uTQ7a h V䆹"6pm-f/{>>3 Zӱ9r{Lmf+_(&Ҷhyz[oGi,Feۿ@ZLKcXC:1Ha;f)@HLFtu[m4:t[t/̹l n|ouN۷upo'Rz[`d\K<D")6I08 SN6D"Qټybqk3NiIiⰇ~BJth4I^+.HIB6+|:VJ ׍9m% (nAqy +SL13#g˖-!%:\C x3>NSy#BOimmAk,}XZAGG&p3 MiKT7IeViԺH;0NJS9;O+4Jg i6^Z2)tH$Lph[10?yH}y-a1v;D"t;t#д4PzS;9MCzjy!PI\נG={L c9id22aml~:ȾRx@3q)u;;g9~tL\:AOnOsլ!?6hj` 7mJG]?9N~#06Zd9ĻtکA[ʺ Ly.9饲M'fpœ z>c9ˆ@e&O4@Ϭ@3!4` 2IK,ᎣAGz=o44qiYp4!ofszӇxi ۞6!Q~s=.haζ5@ƓW'n'?)vjG Bai]h LH(HA^kǿ1 [[[|q*az944i4g+d|9ScWI?pRU?=%jn{+|al4P|nOs@!R4x [AP(ہ{ ZO+jgj N9AP~7'r ({>/ ~_يҭ۲ŁPaǏGp==G$qWK-m^+S$Rs4_+vWr ]Neo0!@Rzi?d3n,|<9{nzM@θ7Wu@h?_O?|_C,;6p'{Cdq O,hd'ɝ'"yV:)^ǰ|^i8U@p@>[((R ]}a( !&B]k妡O"O\w{>ik ^wz&hm:&NTLF.D„?>_~_ AzEicE?J!PV7r~ar~~'Ci`o`}iq;б3VAQ-Fc&s|>׼j4{~fo^H(3H6+qڛVP(l=k%fz);@9#UuYwu U*'5K$5=MpcW=v6f8^߶-ms ƛ]Xwh* ' HwJ ޹m/M@aA$<0@N;^ G[4O„?{{{LA=L ZcŒ˭smo7e猱/U$ J?aЀQ?d2~ȩmE7"P Ѓ)#;(vڴzSw;,৶] P'e??ƅ30c,!)7ı/Inŏyi;H7"P o&يtz; #*$!k&-~v/twwW:. CC!3у>_~;s@>-ϩ1v>7l( ~0 0f;Ner}}={Aڙ-ъlO0xӱG,#q3&x2#Blň'/\ +NSx&?A`x{{ؓ9pmy:g>!TL+V';Uj[d&oZ4}z@L+oѺ0mΕγoKuީɿmstLXXbl.Y) STɯ䴀dAUTU3<<.;}M_ޞOj=۾SzVM2l;O:ѱ֭flbυ&bwYhge{|3^ɝG0X*{}ˆJ2W@Da[l{t^}_/]QuD=۩Vf_mK$H't,Q?rs4~ǻǛ!OaPy@_+nWYG7Ff'*i o_h۫FVi_lR >cMo7RD"n&^3Qz{{o j#W5|P { +U-@lyTA(:lO H?DF@D&8EdzN7Uq僝n@-AP.\3 ƻ'yq[n R']F*[XmC xΟRs1O@]2xH[[@D(:V 9s+!+|˟0* !}~wCed2.X)NP0J {>~WEOsڿ&͋ Ɏ}$~ V5 5L=%xYv@tܖjz'|RVeGG[ehhȌY|>ɓ'vwwwf[ TX;¬t3'ZI'LOVԄbLŏki|[[m[gTbC:Ftd1#Ĝ݄BhZJ8D"aAmqP- UNJ\׳l(lA9>$"K U1Jz[]8͂PB!TuttA*HDbOgg;?Ysu0713^ʭ;|06zLE[BmaPTi8ۋjτ?]]f!A|D)]G,mj1c.8R `t"V6{ziڟm>qx͒H$G}y @sGm#(!BbΙM뮻eҤfVpMϲjx`ǿK gn۾:]kɆ@11N0V@*d:7MB_nbJ/4V=jE8td2A`L*wOAN"@5c5-~*yԊsbqsIR@FCCڵk3{{{TwW8宻p7;$ロАink2<<,2k YxL>-ߐBn76M7bp2g}dꧭoc{oYpAd'eÆ y4WfΜ!tuu J9eƝ㕎vk<2!߶c%B`DN|SA~Z+HTXF#ˊ)h/9Я[ { /(/~ˍ7lJwuW9#eI 'G]&sn.;?~ZJo dk˾MDwBIR{Iy'eڴ>3Ϲ[L{ ''` -{L|!λg@:L&HQPSLB!AAsϽ I'U:::W^1m*g򶷝b!Gy,Z^RڂVȻ^W駿 tvW{E<1 W3׏>((}C=Dv}w+Lj7tlh CHk\,z V|rZv'K/7oZ]s( {rrsQRÙ^sϙ ̗sݯД)SL8m[ 닞g)&M;\@=L&Sy(@YCڴ*%$jf>@ҽܷ-ڴj'L-nڮ388$x\>}Zh0c;:y~ԛon4-J-[l1ٲeV{~ͷtW?-`{qܧ':U@Ps(ف^{cA4v{.5mϦK9Z388XqVyG|l8\?LhbJSEp'rKө?S̑MJW&|ASN9YnV+@[N:$At~?ʣ>&;c9#$ɲWVQN;ɁP1Iuz;T^z%+}M^}u(zM(]UaKu PXdhh>;SN4zjs=ӹw>@yG[o}]\mgb>3g(z;mڜVp6͟?OJ]w,7ސlܸQ֮}FڋkѰGxfUWW {bϬ 3Ls 7J"ܧ^{q;2si۸[*7tiKJ05}TӓdUTFoP[lٶl5>}>VSDfE`4 JÉS[{O|4JwQGY=%y睬pg?S}sm˓O>e+j͟?_>͚5˄6pH) .03kLVSN?f7o 4Tj]8L4I{XRd]w_|I"SHֽfccZݒKPcrqIp8iq`SO:'KЪL8h4&:=K˪uoNVvV'p T~c(//\c=FO.>̷}Y,zHwT}=L5k.ljƌ-K/?<+,Z(Gq̞=+5X1z{H ^/|K_UM&Qy)@4bZA=ڂ G͈j2ZlXacE-@H!y"D '+_MSO=%@].? vѢ̢7CCV.# \?Ҫ43`q2eꢯukf[ZYr|[Cy+.k>#̧t r[^#)#5X_ 9,WF"ßkkѬɓ堃yjw`|i3glWZIٱ-_Rӊ ]*=[Ttˋ.dQdJvAХ>O>ϯh4 h`CcE0ם6}m 5et'5kƍJ+>OਏZ.HțQ={n@m(މhx<g. E2wĤI+Qkt'k={oT%%iIREg9>J .: >K3ޝYw 7Wռq??we &h4Rt[<O܊ MEiʟBޛaN Ej$I Zo,ۤnEi%nՊᏣ @#NG$hnn#ЊmhP-=:yF<3i&F?pDV/bt{j!^dɒdU-,Z}Y2{,g{[pP(lBFvNF#AD"xiS\v24ʬ[ Y+dʔR@܄ki8Q6nGYfvl*dBewU&P(dSo^͛']^~ァWf̘.j%H^,m^йw* Γzp+wתBɔr[!TJ Ӛ5k2|yϑɓ{ZWnńrϥ^.K#SvOC|czsO$ eyksrȬᆿY0XX}+Wzm'e5Ԉ(5JкuG?l: jT؅y=JsϽ?wRL6M?Pӓ:گZX~G? -mC @p%81LJ=N/~kyz}V~ppP~UsZ1}'w}7WTJn3u`׿^oBߕ.0q~|Cf 6P/<RضȢE{m}#kP}hۃ\ӦMdcynNYju1Z rӲxqu;,ҽ4Hy^<#i&>}ybl"CCٔzip)|_d'8jDq9gڵkq8o}wwyRoT.@\)_T.Y`\p6]3vDOAio/nO>yU@ͺZ]qڽӎ&|[O0xMs6o,o,_]~z>i$;w+7x3{޴T;찃ꫯ̞=[k9G_k>c hԩ27g=O͋/dҁ[QO>yznEv}ۭ-C̟?T9\Z֯_o}sɾSѿ> w0G`$:Хt|s8cFuU.=c@w,fWBa30҉R^jj)+xX/:}^׃i 4gHh4*wyb.@hh{=o~y~͢/~R׿YsӟL~#9ᆬȄ1|>N/\2e>l_|'Lr饗g}cVQ/~IV^#G}|s~gQu9FJէG3@\'3ʅ?3f̐mC{j+ |>O& ".k<-(m>-3549bvO^T~Y֭{M3:yO{ܗ|ogش:+η=vo_M4hҪ$} :QKdBJ9LX5V =9?|AfeL[ZkB}[rᇙMo~[VHWso~[+|k0]t}&`RT!=JbtЁfq2N+KW]g}tL}޴k'\*Zk^ܛ7 :ZU0^ʅ?jӦ>ӪJ$ȭޑn"08CM7 6pv O 8?lg;vcz[[?`ڞ7mٳgO~C3'C:A=OS>T-\0n}褪N7ypf |W#<"`0 ZAc&y^Wok};'~m|~ßmq.pԜlrWQ":jeo7g_w%C Wb!בG&ӧOZm oBBz\~Fo<-[xfqa}3o}ubU_{7jq'* >E:䐃GJog,rS=&0KVBEuQ jF}pZ^GL#kL@j}.y`К4Tx}G֯1쳏Զk:Vߌ7f~L:::>כKv3rf9y뭷[a슲mR۩Sw}=_344dScB+wXr4#tN_jI𧽽:!O X2m]K?;P>TКnjD3\62fMdp;jʝxv-g*8c}$T%w˭P|ɮ}LYڮyd?/?Cs]q{d]wiӦyMЙgWԒ?_>5#::'O-ٸOxu] $E!P=ßX@ _w1e'g~so.@̙33ףѨ>"Η^zlԩSe~ߘ˅ XiBA@y}s9gڵkex8K< i,8uF3d,ydY^4m4ܔ c f+j9GN;TS}SnyC1[Of:]2_{磟~Mם4\6I@5FpOCO~ \pC5 'xppzӾKy>+mE"Q_5lΟZl{3rۉQzqs #Fsf7xl-ݴY(*z̧>u|&7p  7M71:gK{/4s|_gyTVbqYg+SuYgtaK 4q6o,wwG>j*q~> Tj} YYp:~;Is8LdnQkW孯WjM7̙3d9ZsQG~s}V@3WS}[vy'+txѴxMo3cw|K/|ɄW\qY4pġ-l:np%2myQ;͢( ws[|r܋/u$~vDwI$/W{^RZ:~@}*4;m,/H׿3XP6J^{]n9sfZ w74\ .ޞs2mwN;ʨJwSi&S*`b}LVz^z=tY8TN_C^{ԱS)K.~״'])zV6'PiK%K+WZ\hO9dYRoyjy=gl[[ٿOoS @i1vpBXLm̽*X9nK)s{D\Id2,8} oro3C;yϭwttZiٕ#i8T.a鎼{V[I-h,ݛ.CMPXLiӦ>eh(;eOXcgL)S&K=gn_#K$R]{׭VZ,`P񄩂)ԈG% h֣O[[@;TV{A%K~8MU' J%մӳsG? Wngt]v|}ut[sQI>Thv-e&/S~:%,;fV=~&VXU+WJ}yF3[@bɓ{?f*F>HG>XG1HQ7rZГ11.3ki(WMV|ZxIyW$ ӧ&rL6U܌1Kyv]癭E_^zm ZzLGG!{Ei3YwY9Th:>ncr~Ytz83eڵ2ЃͺYfJIp5; !iEm Jxs|>71r,(-%K=L:U.|ig{M*gCWIm")ʇ_>}_,V0gYJ˿o1q:^Lm<4jZqƪHFxZ㑡[c{_ [?ms7"tG[Zn ;ASvӔHĘ+D(Ik);u#|Wmu<4 Lm`b'|^sGd*؅gd:mjm4m&J;JsΖs΢ӛZ%[nh4UTv C T~^6h:=== {b%H{^f! 4Itlc;ˠtt|@-Mf@RoooSU{Rc6 4=&({Do4-i9=RU|\x3(PS[*$ cD(xE. 8TʙfOR%hb:| uwwb6N믯.i늶.ž4z8"}z5w@M6L7X䞰d;< P $fL<@|Nа'&p-Abqλu'à'-h\?3A=J3sԠ/H 3fL8 yJ'l?g'#6.t 4WHC+Yt_w ;:{F˓  =^~N?˹m_* ϶*y I:1])9'&*8>Hq[N R4xioo3SGGS?T(i+8 ]mt]_vkhAD" KWWxIt,uly:'tF"j sO ; ha.I;Zn_U@N8mWxb:Py!ZG t|VcAK00Wx\It~4; -KwuMyFcfj ?ٻ892O=g@(7\" ⲺODvWOT<侉 W@LwTw9=3}T|ޯW{zj:3o=ϔN! \c_qB hi?eܼy@Rԍ}۶mдֱAß|ʯC 4y:5cx=S{ͤ?kga@fywzL3ݙtʺحЊ۟;~kT/AW_C1U@ܙ=ғLL%V0e:.ԪmEVXP':.+Q1@::H$jiEצM@mHΝ#( blݺM5w~|᏿ qw( MrzQvg flhwǷeZ0?P(H3G{۾}q>ҟQTH:V*@cY_g%eM/s1s"m6k1'A+AǟqBI@u@&;Uj1F{9&TƜ%522ܒHkW-uyZ !y,IOO 2 @r<6L}FFFǫ}Q ~q*{- dyX:4ځz(Tv8icTM,+36wv_xЕ?kiAw-m ǜGCߓcBwvegYDJ"j[<?k!gPg# }e?@p9KrLa3[JB4!AɍjA ܁wlneHh[^@?ˊYz&,;U=vs?rU?}e w5Pi[7"t>f{\+P#+ O*2aST$ɲ0^QHA(@|PA@U;T.+\Pr\>9J~Bs>4NjqW әRސ)rT3mO\)?GwWvqcVoc^@g(} h=Ysln\?(.vn= *p?+\m }~1z:vj(F <@٬O*!P3 ;_:+$LJ(* TysͿ2'<7}wkȨ هqۿP U@G}l|KO5k-Y>`@+uE8s/kcwiT8(@EU@sWRRy\wHzz% J+:Uͩ ?|TCJU@~O2m:3<,ORf$JKwwtRsT``9,h,7O0hW=b_Sv@*" :cZY+ J(d2mvPD+J5<hj-h=26d}=֢\['S`RTTw(@tD tTb1E"a*fGъx|dW7. htt\P(lvbkejm3I VѰGh3I&oɎxWy0 ʷˎ7Sm|, } ;4䘠~j 39Ew8.[LZ:da Mt@xN} t1uWRAR˶ lh =V7m:o9?hV@jRc;Ӝ1;"b͚j ݟֻcmWa>dƯhJaNmW]_Skcm7|(~Kq D 0iD' 9}}v;;rh(+NԮ;?xվ.hJCjC˅>+F|P󹷗{nҟ0@t^>ʗ;xg^#̙O%бNҪ?v8{'T 43k&t;C@*wn%̃mʝ oX];U#2>P!{徒kw`<@`Z/Vd/<΁Z:4p-;MO\4I3=Oa@_[;cS[,O&& ss:ș+no/yd}'UUv?^Z E.ۻe Pҝ,-&0*w@U0N+lwe}J4I4Ir? HHB 9cL&mŸxg~>3 f)h$~ht:iz*kk.`U%J34y~zzC*022j]F$`( @xvL8I2i/ז:wm @sGɄ ~:ágBdHZHkWط^׺&R&']]Qzt:4{Ĭ%3^r@g2] T\䨵a98tLvKg$LO^ԅݎ+ LH$L؃d@C8c!3QH X{*P(OϘWKqo81"0mdI3!QŸt:3ދ;+=?J:O Op$tgJ hs:A]]]&( 0-X+ }T`& GXCfh4{&͘ K#B=1à1SLGiLԾpEG{$UnJ|#ZU@:)+4At,bIfcgRi[zL9AY>T#&MwLWJO*sOk0ZyYf NFFFellTo[zz]TPFrŸ?θb@*A8 䅀g"xIFhwZ3<)%$@H$HW t 7 t;ecǰ{*3=昣e=逸GyLsΑ%]܄x\RiڿO<1zY?DN8%{7Ƀ>Z&49^SN }\Cev/CL={o[L[ wuO {u]m&>]v+ L~DR3gv:Z|622bNi7XdOOxU"jX,֤vY3fӋ=V+\ٌdÒN)I'vAPCbP7pnbfΜ9ǴM@vǯv[j<Ӡy4A{-qŸ:0]]Qټy?I=M=:4ʤ  vYz;LU,[oN>$k=@eÆ{=S?_#gyD"c=rG|'x\p~ {rnLSo^x[ H;ZCgmy֊brN}\vs3Vдsuhu٧oUAߋ'o!PA{3$vX̐ޒJ:1d]%OڍT0ShKJ.]j*^%˞|Iy%krgھMC 6X\y\tJG7mM]vY{lNN\F$n=מi~Ah˖fٳm_fX,QhܝH~tܣ&Wxp\ھ(E#<=63OkejRc߻}l&m!vm˦MMeug7x#}Y +rpIâ>Gqx|D70-vHu [&2 t!P$h'@ڞᏗhhB 3?\s5_: o˶[Wiprm7FVVNsV|S/Syn: /p\XVH9ЦMLK9&ZߩtUhozb;)Ԡ*Lz|D%mL2) D1HѠ~d;VTzĪe˖aZ93}f7g;[n*qa̹?4ڼ}f͚ș#`5@JMQ[!ith'uLs@; жR$Zl6-#LƄ z6ϮD"%*=@8mJe7&P{*g6o2/5A7o6m?0su"Jtچ[08NPjlK[?}[Imzzz ?i˖nyU#~gɒ%fD"!֭+57Ŝ֭[>nR8U{\_>zMϪO!\mm}5=fa+jtLZNI;?NY@1?U97';H<̟'W]ǂvu]o]=虍￟׿ s үy.l}HNCzǩN;pKA,X0_.\X]n`覛n68`?tJ/3L[N'jΟ:Q/ ?TSL{hɜ@wy7o˭[YwJ9|+7  Av1,NVscŊcM̶mg? N4ѯپ}s1Β]Za+M5V8k{.q:׿ ~[R6nh6pk׮5FLIk+%:E鴌oRu @Pmdf>vL=N^|nu䑇h>f9se2g=SOcҥrh,J iXN8^;вK{56V<3fdWQqǩ3g`Z{qppȼo}RD`&9+fzN n@B6Tlt ]P ">H=3D4ty'uo9f͒388t9sfWVۭI'hFt5tzsY^t.q^8s)G^)'l[:*j4 i0Uq&u3ԍ$JKuu x IÄ@ z1{Ai6̼ysez{{eJϫ>cѢEptXl@zKOX:Ec8!yɦ;oPI9Uhyꩧee͚ͲhbKs{6_l4uʉwH@-T|H:[8#k%ݹ3+tm۶ 7hnk5iZڑl@y+իds__q^zs֗;3rV|zsg:"f޾}P9~}jumw駙ɚypݫŤYlO}B-[~y/2s63/!]xu?ʎwIrxvRJƒd]W֥r@U@sYvrKA2DQg*Nk1-{[R4W q ] zwyGc{4dҊ~LZ^[_Η~m TzO/)~ޒ\:4=?RիWK3њtrD-nl]U36𘬽u z6ܑGinkК5k@J =l owBL xR6U4{Zϳ7TF7=P,O _hM{[H'tB6m`c[x=/Sscen*A21i&'\XEkds=?.Z cݭ2]^WN>Dsg/}+26ּI9O:gw޿)_|V#5z[`rZ~ HOOW9眳xOjfT)隷,;ҷXS}Kd>m-[Qgj:M,Kbn?ȣ~Xjy$ l7d-rEM7RskjFo LN*n//H<0ꊚ9p:lѢlPNPctڿU e{|O_eӟTҴ Htww>w5U>-[c`i@u:K+̝;W.=v9@k[4x.[t|ԡt]φG>${{e})x*v}w=ONsBj@} .x4`</dҍoC6|}:a> Lt1-GulٲU^|qzd<ȱ#G⋿ tio/[K~?h^ 3c</ 9`!?G pWAOw+U~Qe׽sٳd]vw66V\yoam寙NCG>_rI'H5jWofc[ d;dӃ/XֻQR͚@{}Mf( 8U+eGDCs}"iVn pFU'n$RTt hACL-Wv?}X?~4^ѪyelO}B-[~yǭ"3g4sB >,c(X>ws$ܷD@ @GҀǡO9fo T֌rcxxTBw'OCdK."fJon5cڇ~cW`|tl&-򉆄?] +>kZ@3_.jeZ-|>0sY}Δwet//-ŎW|{Ƀ>I8L, I<>OBmhUŋ_$W\qHA($s̖V/ 9> n2];UpKe?}~]o>,\^qi뮻^.;u6?J*.`bzL8y["+ S1w\WV7pW6# HGOe T]h:ЙgZ~M8?_#L2y Sx?/m5#&uG۸EٶmT=k-es{`O~W~D֭['CC;dvO.\X5׮}Fbʮ.1gusLk_iڮ٢H _j֭{޴m>-h"?'o|[%L%|KN94n޼ܟ?r!e[;xi=M[LE7f[~B+. {^I'IQI peǨú>3-zH^|䪫~[-j!6't|C,z|ӟG}LV8V> i?ϙ;P]yo8uRw]VH5 /J׾$gz_ 6C>9|ȟ璉euWf-z[$2s ]wxK(ġF|̅ӵoyO?κh'ptww]۱cX^sU:E B>G/[ D4Њm]^|ŊCsᏆ3^euΝok^\Oz B2:~ЪoL7w=o^j3B+']2]wEu^(!`x6"k}w+>\I6[ ak'ؾ֭[3FѹmN<soTsM7gU:=G!0{կ_]&^G+/S/>cժ'V8rU.汃>ȴS_Cp㎕F:ֶ?|c?妝a\nk;Y~/~S暫sV>iHzԛ43qEq[fГ> {uY墋.m۶Kb@96I;d:v])]rv<Q+J`X+(Hpkueϕ7$kڊRYb om챉eG[/gq6?`Zs!6g3iE~KEHg}rw}_͜/*qw{sϽIjTkÍ=RÝ盹xj<(͓c9J7ӊ%r뭷[G*j}/Tiu+S5trAJ3zO&+Y:G޴R[F:^t, l%\͠ gC"!dӡ!TvUNF7@H½HG=_%]5|…W ǿTqi8mvsV\QВl͹VqөO7wGsE+LiVG۽ӠRw%= lE|WhO&DN#O[53Zk@ǚwI:1$fVҗfieDu7:rR^_K.>Pzh2qAUvq04dLXc:_ OtC=l3N;Ti owѢ= Rydjm #:TF A:4+|Α5kX9眳Y7OaVFk~ KHL6p7xiS6w9昣 ?k֬58 S[ܝx ?ŴGs-Njp7nwܱ:{>+ ZoZ{xKbZi5 /kk{i=I>kO"]'kV+arW\i??m]gr6_~I; 6]7T1t~}Lk3mAvڿz+MpmmK4`䮻1n4i3XS}t>G?${kʾF,Vńшd2i:h $IisGZY_:<O|uSct}f&ڎcժрHV U˴5[d:?PYhi{^m&D"r'J>_—7{ӳ>}I'T| mPM446duuiHs? xYy^/}9_%ӡhH-ԉ'  Cnw{WeqRM+⹝J{u@Ҏh# h-!bۤ:b njҔ tmGuVwoq_V^Rh200 ~\zwL8]vٯ:WTnܲzEӀǽ٬ |Hd汥KxqIݮ"^YI9MOȯ?ɼyizx(:JjN ]]QI%-( u/"6^ dRNdpY!?Vsv[Z\;S7zZri:ロ|sO~3mv袋Eۢ%]r%c¥}eGɑG!uK5z@8I>=Swʷ=y7o= 2&Sz;LUԵ^W{5j=L? 1cΟcBH pJ 2 O,0}y?ZѢ*՜x rI'k%?ukWtЁ҈Ҝ-ҥ&|;䪫~+g8ʟYfZsEK4P={=XߛGŸΣcN Jth˨vyf%vvկ~IIYI͗tv /edWdT[~ڢxuRohԓO>%Cd.f{gڽe"\Ov,z2ؘZuuu*otH$,lXJ @[ v͗Tl@2c?hV?ش2FàF>M5/k}hh$ Z H$iQʤc×h7iܮt=^Gmid- e?'^gؽoUd2Y3s[Ͳf`#Eߛ;d XҩfzԃA/*N[APʺNtf|, A+ v侼QJ9V; T Rx? hG@:/PȞY-|\?XLo|; _:LYOFlNPcW뗱bj vnЮt=,2˄1䰤#ͤt8y~PiW> |J$Sf3ttRYcTMLp8dm uNFt.+Eʤea>`\?:wӁ^~yK(vۻ@nRgj4p ~ t.OöH @f jz̶B%M d1߸&$-G@5|>j:(!U@ c['VұQ41K*:F/% Ҹ>u": 8& vK߀cL ,-J:6q* Och mǦUAzPHljӡ':ANO'8Ytio߾@8S D8mBG/JdR5~L:dJ(,̴r+ aAۨRk Az-ײ|hhР;*mF:Nd|#0!r3o0mR9[ZcqKaCqŐ5 vE׼Oɦ3=ǟD nttLt,cإX ԓ |G`> Zl:)@Ϛ+ʙs˖-Ӟ&C :1=6+sʵP EfSvy&=Y=s4AFʕg#[qcẀ+222*(:бAt,cW8ގff3VT01 ҳ%ӉK*|8l :1;$o?@v#f&D"M}{Qx&A.L]Q 4  ͛htc sC {R -bIsPv w>^³-XmgۿY|ՠ9 /탲ifd2Sc [C:X_4FͣO:>?A*!P`>Q LW*@xmE"3sϭQZ<KB:б9tc'q*/T-tlRYPvR{w;M,w?5E+̹?:r!?9בHTBuӦY~bqA:1-tsG3VQhȣFGcBM?<((Cw٬ky/}@z;?eV4rK&d200` C-Ѩ20BTTJ"H' Yk@AɅ?3P?zE?JTq7>s!P`|qPߞ2:ٱcXz 0m@m z4>v@) 鴙 ӾNl~Uud(8$c :@_0Ϗs??h4 /qP* yl.AI2(r>w٬S (ɗ5_ Zٷ3>sx[1owu0\|sB]O4|s*|>{!PV* )d=#s/\KuD[ouwG30U@r1mO&eǿ.kBjv~Y~9>aAq_AU͛Xa#5UYp'*rsh sڟUg6 JTU\d*-@`L(wuE´?wيˊwpL> 9U=vP:aPтצrU?}e w5Pi[7҄rǿ=[KvoO , 9bs[~We\n@*7};"(jK{2 FGEZ f'F)]jQ[5WA.Vp2:u*U ⅁ߟ#4c':6c&dtSqhrxK6ע>/ӲDL}n2fĩН~>z[drLP?S*lm;vhʭL&-^UHA(@|Pf*v;.˽pA8s&Z%۷ Ac_7* eCOMNgFN+ڿXϘA{ss;,ÇL=0Y媁|3s>o !`_h'U8ϫXRwc_gͱwŏ}!m`sWd]0(`s$%?嫁̿vq81wEX&:h^mnڋ+|&8?Q1 6ŁP;xIs$:O ȹvpwvWt T? Λ}vs* rm*@S.)~\rx/ r=(*ws>ZE? qd^ %YaPHU20O:$ѳZB3c䜁5*הou04:da M;1 ={oj* .98tLvKg$LO^ԅ$\O H$b]„=hJaNm̿]_^8%@3豑@@ɱPHѨ u*cciIRV1"0mdI3 f+7ث6tWIhW-jTCVPH hs:A]]]&( 0-XLOww4]-o?6R6S-)>\CVc*nt46 `L]btShelqv>'̔jE&uCr/01!!RՏSe-޲fgB3sX86X[Edzp= ^\%9m0yP Uz2) f)WTh8Oo=(9sf1аOm]A\/qͦE<D")hP@T>/ȦGG#4ZǹM'y~ܹsP3 yf7֭\S=h;Z;jϩ^;X%LӣT:\|ܡݢ!eJZ'\p)ѱ)tlk8wg U=5(>_}*!PSM2Hc^Ac\[i{,7G`tlc kCHq .Ϧ^w"scs"@j-'%x ̙cS~tc s]qQ;,t:Y JT;HJun U[71G'gzӱ9(NOpNL&ֿYL@❇ tD0wDO:D"a 2{, c{D":&!B+\@Pϣ?yʖ'}<WcGϺK&Z'ttc U@:Sp@Y^o~sgQn_5?3[mg8 4At,bI!Tlx4R `f3n 4l}n ` ?s:=2>J&‚M":&ѱIq8ù; TaW`w$> az*+,9.I0ȼ?O":&+ҹjc~X5@5@JĦ♲P_R)IˬYce* 1|>p;cF8@E!Δ zg9}tLcg'EE;r;AR48%)eǒ>S-?m??? P0F9U@|TB3^Ϟ=Ktleˀhi`|1M ^ T*Ucŕy:a^(2vɌSɦ3Igd3\ ̙B֎aк%.!Y1?d2m9MtcP(4=DBq~I4@ՋxHX08Vb5IӒNXiBBV $ @WYsۃ'{[gje̎8xQicloH۾njtb15^ P4mp#бLXZRTMOzhʄAhPB]v\ NuOOWe۶f |H[kk& M\ _Upk8MIL4HRBA [vi2-hK6p28$/pF (*ޕ !P#+m%9HLՊHV뵒jڏ9I뒎DIytCRڔ綦d`Ze8nkOz#>fdܠ0$, V(Y3fѱVkYPuZ3::"TZFT*!=J!H|8)DFZI؎o(r屲bq-gf&3pꌝd:+7>۟=kc202g5nAz>¼,*J(> \?'L8_x_LJF-?ǡMߣWN 5(}{ji6Td!gMVHuu"64gSA :1qth@B&1:Si8u6?q>[{Uٶm%KЎs/46TsdttVMkVӡ"w! P~q+}@ 7*Ƴ~h:gޟJtix^r,%wەM[3@{}:B@yTxGޟJtݚ=qv=͛7 *Cm]]'vd`PIﶆQ߫װl:S3K..o~RٸEif/Ԃ%F$3&uul=X&Kbn~{a{x{lCR>{64Nn^'M I*={R% ۯQVf[ '?y{}267sZu\tffitGruM [exk 2de e|2]RZ\yW/DLYj o5;rxvW ha;d֬~M]q/exؕKY`C KK+NJ\˓7 ;6ǼXZ6>: r7q.]G]f:cI,{,[n]SwnG{Ut:x.r۲J={o5Z!hgիP JŚZ*۾LTIU׹V<\?2N8>k֥OViE7#k֬彽=r9gK6FOJ'U ,,>h Tn9-2Vmj:H$j@Ne˖I+x:wϼ3q[-{K3a1v/^,_|ya.9#̲EJb@9T{Yߪ?ہ*kʂ{AA.]g]wm7,+W'z[G)=|B^A=ߥ ͤ~V366&FשYl?J&1Vйn/=v9@k[4k.)?( M7>Ъ~2o|_3g& K6ۚ3&iy׬&kSgK(мjf֭[M =;KI>lݺMO?=U 8ft:-[l1BL[[ŋtNl?R&^ƶ@<'nlQ)[e?Mn5=󣚦t5zQI<5sw68eycdY#7tK .xp5,?_r<(vyp7,\Xz`+-7x<:JӶox륷۸EO&M200`ip}8t97ȬYZ=Z~M’%>;׿^/?ך oҥ??k_{f'^|;߷C26f .SO}mo65*]7]@1'}jm xN+?jxKL6=MvyɂK?=]ls238t۟ܳ&k۠'(ylp5>Iy5e_~я~XN;2\W,##-4xzG+%g䨣Ϲ?l d`C?_|k_?Lͧ+y$RDR>ᄃ`~gyV>/a%XT6m,?%{Ḯ_Dn; __0}G SW\q us}"iVn p06(ʽ?L^xpsH?"#[ݎZ,%{j ?B;_ʆ?ڶm\p+?n##O_$zL 7(ԅeßr?CUWI>ϖ?|Pgǟ!>OŸ:P/ʯ~ sQf>&=Y u}T}۷{ /H͔_+۲-n2 rXT:Zu\tf xqVjm4qJ!m^+w9yzsRF8SKnf6o_b陎K._`Lg/~K^=p:yϓzw(y\뗿siΟ?O [|KgklrܗՂ337+]io3@moŏ~OI048~՘izI'Z^.{챇Xqwo˾MۻD׽Fgo9CCO/6$mԼyӟxy~>%O= t>H$Rg."/yO\IXev߈V/w[>/@cZՙ⤓N:K.^%kQyˎgji$GuuEe=\=@V<:*:r8iV9W6^ӫKOj7ox9522R8~s9[ZzUkC.Q Vl(52QTfo7&r)'f$֟f˖-z]Slw7uůc?g _gٲ͵ݺumW;]#֕/hUŋήJ3:t3gx}NMZp3Ÿ'_ܦ}suGk {=^5dȋ_z [sup~|stٝwY>ryd(m۶fK5œyo߾]M tD!Pq N|}Pѿq===-Vk{|iRO_FTHzM|o?ԇ׭К;w\p{+j Ms|:jfexk<~ ,9ۿ%Ꮺ˺cZ)N߸`U v;v sύTE ۯj9 y54CZc&5b]~hr'9Tl ^FNWSfp •_'\f?x_%~I=͟?Ϝ9p/Jp|S7CVuwߧx<^R:?QIO|ZkJ7?z~rL*_I,f?/ mD<>5|b~?m 8sjҰ'lbi4Z^T= _Nm_OI}+_;o.N=|2s,'wޮdddo~I'@zf~ TI|JN;Yf8+s̞mݱXlq*ʽV̤F+ 1ۄm Ms][cl|t w??#G倒Br,i?>YI&;'O?gt[t%m^W[G'ͽaFogyk4rO!Ts=Ol/m۶]~_wAڷM'g v$'Rp ׯP* cYMSo snz9So7{gY/wKf+RV~Dt|eI9ZD<)~_'*2h[zs%٬כ dFZ/[nx<&L)G?qI7g*&:oyr?7/7o;`ٚ5O? ?ڊ-B%/9XMC~’J|s%>s LgDw(S }ɧƿnGLyΒ%Y06b]~ $+mI|Xܺdժ墋.6OO FMtr| wj@/dVeΐkEt%H6MJ_[킥vXYsv]ʊ+d&iV@ؔۢ}{e`ٻyϯwUA6 \NS=k_{wMc=ʾzl}QfnMػƛSO)yk~__oAz:唓J w9;ì/3.9V|=7_uy7! u834CyѲL?sB4!tK۾]L 8e'\8?bDՖopCxl`- t]5ϒ%KdٲݬR}]eѢfQyLt.F8}[\rɷKŸ}?kTqKeϴp.? r[,=G=e]C+Xe3 'гa 7mW߂p8$Gudczc2oᦒyr+W'27*)?ۦի|@<\<+ Jzxz]#rbZ+;{E<}5h~?i]fPشJ O?\hvon _ڗL.7XѺh&Ljĺ{& WlelſM׽*/& u$141Դ~{n&X;h~ϕݏ^lVB]V[pJXLh zj"5bn? eӪyˎ.>Q+\7+ȂK\|=\9˞eg~u:>L7_|x4@_RP寙_`FjO>t駟.xLVkпSzW('sY[7[&M[|73՜9o)Gғ:[#|)7'u=r_F\҃3F+^77}{cͤ^AtZ!PX[ o:I9^9; B2/#t趀\+8w.1U:?~G?d־?D_L"g?\M[{Y+L*nݾJ )o?vZ$6m+^ 7oTOB6ob*moFsѓFFK~O|%m[μFJױl?xziּTZ}fZa+T?[Yo ia G ع{#uu,*3`r~v|Kw-=Pqvi-Y؟墋>UpƸo|mRs30 駟Z9;S'?4F>]~C`FS{;66mڔ oX3F#^av,^X."9ä+j:Lmf3Ԣßjv_-ݗ}_Oީ/0y|z赶<ͻn-79=$RљgEB\'$pb1_R@fي+Q߻Y˚66Qs{]H1J+] y {\9eyk"v['?p[ ˖-+Bn"'2g߻z }=9@[MD=ZٸqdE2YSTOORK:߶mt9sH ИlYy+ XAC~涆>n6ߪG}zBұS9zyZ!A^m_嵘 gvzUCt7 Qڍ@?ӟP%L7f}:ƺ_CECvu]/ReYkp9v4 IӒJtVK`?q~Q}OMs6SU@*&˙ xp@{ӓjڼJT|AUzE+<t"]Fl?xMWW׌ t]kh-Dz;o.N\N gλnVJX7DhV@[^Ϻ.NWGfC[)u]f_<`#nE6BрdRAIf]m/ Q"rڸ4Sq:R'jf{(GWq9m9-m__;L=bSʯ ֿ0/o|]DUɥ^F-E#mU U߳m۶]P+eI OϪm]VTEh\]Gmi5Χu\ddppP~a[['NQK k?^3dN*GN OKl(!^dju65O"f%e(垵qyd7?gӵ|YG/t:#d{틅Ba[/ؘvl&w[2>9rۤ: xV А9߼g`"3L#*t ^zE$l0/k猃+;U@;2k,̫{5l?x+}}zo^}O+R8zX'$$Ғ$jLEP `T+~6 e]'aigo<׬ @;}YMz,/P^x +*p L&B@#бtp!^ɌiI'4 $̴?Ne5YvA L"~knJ|j!e[ ,jAք@Sɦ3IeMI6UY[:^>h.4@{ I;ѶoTNx<.smvwwe^MhH$hBV\Dp@I`GwL)fWoky򓯞Ü?s mPzuE?/ԋBLFCu&ZT@L*{-ɗ.O-9,9u췘63iжQzݨ3\uTiLjt:mgYZOsNYA|>x+ 04Xm ;7 /y۱}`&pa 12ݪp^[.4ѶmL(K*VZ^gP&z*8gKn[I+;*XO4hЖQzq6J Z\S%=Lj_7hl>>g@-T`E/l@i {l}4pڹ䎧b˻͝Pe9^yٞQ@i(Lۯ{Ax47y 9L'= 24JRr#r1K1b%~I9 ?hS8O0*/0 9Z>S'dy2HRsguuМ\ӛ膤<))mMlIp<+Jp' NtnP\dJ s墑Ʉ@&) b)9IáN܁h? lT`ٲٌ9@=&_*K,OarJwP+[9%P scG=vO0lcaT;e K&rc 3R>^aQ13~)FރFJ(2kIO0?w~9FB(Ikq3X JTB Ėޯإ/{՗ 9.Mtc؅ch$gl,fn;'K]‡@e@ T;cd#fdžԋs΢ӻzfk bfMf cģ1FGc&|ȕP@YNCaOYtnKFT3;xd6pZO&:F _ٱ PO-?+JT.ewv,wC< ItwTPvvvKtR_ :5K%Șu["Se t@ $ؘtuu 4EtL NXs; L|s*4p eU-sd1K6`:ځ_vPqt cY8zc*\r[G]cWesuA= % *;rTYu>[ZJ+N 4=t cVa(_ј&U1=֢\;tt:ZHw$2cudƫ2s2ZςRsgb1. Tڷ3!4BC :M C p S?x|is|>梷|֊+TC*'rn;?#uھ  5+8ɺaW)8K*KgUʇA\?)O$DR$O.cccrF:ѱr蝃UK'~qM-+ݜcP>υ[~9LGL{' |<@Ef_;;rh(+NԚI՛ޛyʸB {"Vicf=uL5B~2Sh@ ;3>QW so/+܎?')>Q`*8:`Jw Ge .n_5A;)8~~npTjTFGI5u gRّ:3F0qBe?J{(K&vclw7<2!}g Up~@]˷wToٚ[fstڪ+tm_Kr0c_;L64=  q{W}/P=V8J[sD0]@9 rZ9Au@ d:豫25M& gE!V6T:hbYs]$N{hŏ_|0b  W^ .@aC:ž& `ԕnSVzP~TsLs˝Ǵ =UCNuY׀OrsT9Q~>@ȇ4ׅs8.>WY" gZT2 tn (؃"o>?ˊ?'F7p?`hт&t+Zr )<Sn. )F"ptJɴ9ɤs1ukN7m$N4zl,f~>^2Q5si ䷃{* 7>;v)ߺ-]{s?e^066jZd|+WRTTLY[% XWh,~ht:)D ~RLGm@_qAL[9 שT +\quuI9 1$P((p BFɄ ~|% Mel;g ajj#Iהou0,h5Tq݁*]!TnG}?e 3r/={Y] T\(!:U?n)z^ НD" DKuSin);29\B~n5 y+YuFmy(h4jBx&>Mjrkax=Og0n|ek=V>q,zEd2a Ԋ 5qv26(f٢xRA+:NhK8ms0>0P *L}e5͚-V#h;8gD"iP+*TޡurߋsELgn P;jZR)stcc6@ENY5<>;}xt6/]]Qs[C w@@UN6ӃG>j))d=`J<@t\01 e,% ɜ YS@`{h7YP2)Z@ENO<;^\xO_!JaN-!s&?O}s9pvML%WP Go(a^aS]A*-{LF6opJ?Ah:P(0P: Tdg> ?I2}]-8kW;]|—w }B7cT>*!Pkw}Nժ?b}9l uh_AppлzLń/W5A%̩Ƕg,J(w|XTu?sG❰="yNȮq3fy24aVNtm紊kiN*>ʃDGTE*rTJC,$ z;@1vd&Ǔ^R9% T ;Kt<e<3 < %JN0RՏSL {zz$L `fqA 3?zBXw}X"Vz">UQ  6P  XrU?N?zZ@13DsѪ;FrAP04AH/qg@r~vNW/ 픓U@|.GrsKy~t֬~D"Ν-x\i q{| i*-Z>/i.z_o|x $#G4>U8?OG+0K*C2#?QH*@/~}~ Kæq?y~kup7VoDO$?1\0ЪD BӰGq37q8'ED"aP: 䔛_S$'f8SVS˙B֦@ȊHA Z;_֎a8@ժ~Jz:ߏ-0hWQ2"XC`NC5PiN,3PeR/EѶn)N8 @ҝdJƬЧFZDFF)u3#7q2;Z']]Qz4 a=b֒HIes5vz+hL:6PWWvF`W;V83; ~[DRz0Atd@C8c!3Q@56XlLo(S|TF@|uӊdYn EB"3QNg{qg@C#I|~ '>1FT*!= JA+q Im*t(0 ͊MV[~|?2W mo4A+t 6b2+W-^؄@rZGLgi7?_Yf_lJ@~3ŁcȀ&|?Bl6#((֟0Ox.qﱕt0r+kʆ [  |rAz~3gVvH:ѱItlS1m6 ~)q0sq @H"%^Qk++roJs5+2^+gZh D&:FѱJqyiۈ(ZӮڭr F-m&D@;S^my'*V'JWZE$:61U@(GÓv:46 [Y r]aFYijgikֹ-a&::&ѱ3Nq]ʡ P<]xܻ-@h+:N;Uު9;e Kov3^S tl 2^#ittd-Kjnu]giLH$"j:61=Vq.LG'G-2uNiKg9mn&*ŭ.JWicXø4nVi1I:JFMg<२?~^oދҤ V=c-&1ƒ%7jL`EEcƎ"T(M?3}ݷoߗϰfgfܹSs"B}0n]СCI&:?{l nRB!B 8,N(h'O(p G"!'TK_,eS^C!ШQG_ d.B!GA_O chHJIRB< ^HmhNhFY{ݣES׳ iJj[vj$%%I@?"tr4h;KmTMo߾Cݻw5|I;mB! _oNPEEAUN0BWHB eRZ^.<_oYNZq9yc3ʁJc7J$Xq)G%˖-KInY`^'ʒ%ˤyfr$>Dz:UWСLf͚IYzWYO8:ygdҤWD lغ]tѥyrɯ}$M/K֭$Qdu~#1oN;88DC$IF!DJ 8 9>\~}e!/ZB!u  B')na >tmXnw jC1#LMR/˞={$xyPԚ5k+M6B? !_ɩvű@5v:߱cG5k_~d؟:u< :iuru8W\%6m>SF]v֭tW^Vӂց$?w$ yZN D)s ?OZthb//SGw}K:uE-;vQ#V\rɅ~xm .UxPU[?ӿR룏'BH"ς/6۷ 'P޿.r`UEB!z1u?x@8f{J;0A21\@eG*=>cƎ#^jHÁ>|XG^4O4>z%le7@]۽{?s.UxmB #>곴̺ז=Hs)99ERS1gDFFz{HB¹WpL=}R.D%e Fj"+VK,Wa-[|jj 6Tg)x!ٹs$ ٤I{Z"w@sEֿ?{ƌYe)^]Lc!DOQQi-꽼{n͕".(/PFeFq 8 LjcMD /! 9b)D+ cLMx#c=#Z4oKFsNlݺw+;w,={8Q?(V\3kȐTUlm6: 9{ٱcn׷aAmܸIsرZ!"=z*7/~Q;D]tr[ZٶmPO/_B gHvcLȳrȾ}d„W\-۷ocС 4@RRkO8g87ov~Z"hcSNҸq#mh#޽|#NJ#ZYY m۶ y KQ7aͪ@}".hժ&@.=۶'2B:pw, 1F 0h8>}z[m'\ڵ[irncvMj~vwh۟?9͛yp@]|rI*滵PTV vk͚e͛=ob&Mk,B/]N*0$B1?f|: BDeλ?Tf 9OĂrtވ@["Pn"̣"8v?B"K,UOxܹKm۪F?֠m1jn 7͚5.]:޽~P?7 O>B06j= jd 𺀗W_# aO>t޽f`Xlu\7ߩڵT YV߹00ƍ5{u^JJJؑcz  ,|?8hs1Ж@u]*Hs53mt"!cNNFH5$?QP#(.wgu:ˡ;KVn9|c;?A!F>&|1ej6 `1^y]wݫ oNG@o>ÖW믿b \!u3ٳת ڮ~!֬]7o!W^yM=q$ƅhj,o'p@xCN{ S~!_~pGu j-0bSgzON[D31H>-}>72r4O*z@M`9ʣ|IhFR݃5"Pt$PĄ/sFk&޻#}o&))Pt+LVA#SÇ{X#h8'0c~㢋.P|Lma@ p_l{RϑXĉ<#<'@̃y睷H4o{NƂ yf!d`m׳Ͼf l8x2 -N,jM C)矻.6N!$QA:xfW%`s Io~6&c:X׹su"AyE@ic9rF x @;{}AU??n-Am=@ڷoaB݈GB]XdʔPT'tV zt2XtqY0in`ȑ#t/})S>7ޘ2kf,m(G /L;s ٢Eu20fY{Ń!#"zO](3NW깄h?~iĒӿBάP[;LO?,p|nBA<Ěuo~sog1Otur'z0UE,jM)~~Bݲek&c=F!$6Bomƞ l\Û"t*#|fab}&#$u7c\7O{Qg adTvBH(`PHT4#W ZN)s]".1bcذeٲfZ_FC7W/)2X`(-0È0ukBO%]tz ѫT0xa㨣F#x7Ր!C4`(9|V`: sC®suF ̱vзo@suGŸ9A9ڶmB0H>n5)Cu38O.g¿!|wCBHhb1"  l 3! & ϐ ٙh ^ŵ9OBHD!͛͡Ȋ{|?<{kA¾zX)|ȍ߬}vS &&U(=xt,р<nر7/R}8Gڵ;(<O{%~4 Bn荑2d32aB:lޔ1cxHٴiJp U ~=Dgv剦=˜łTVr-CW lXU:u9233ܮbrcCr| ˡpĺ֤ e3xTq @h_3!$PW?xy{qkQ}w}'Qu>x(;5.\򻺁|BHC9}M.q= @%r"{6X>sv. PԤMB8${wBɍ u_*zz )x)Q@ݡ۵cl"ͅUVI^(׌ Bk(B cr%i^!^!s@)2Md߁"_FtP9y]AsoQ٫ j2~!<ӳ7!#=0 @X5mV:?ma;Go\uյaaF:>={/2@/L71;&}$f뤓NpkhG u*;̡(Gða˥^+ǣ>w^כ\:9Uԁ;ܨQvy;Ct2m 7;xP/ =~Sb뾌}3t~С XTm5z>+d۶|?2!x}g B}<~m,["`x26$X/@K#!s @,x /gyNæX]cƳho|F@e_^#g=^c% g}ݯ~uq9^B4mķ ؈7+'J9Y~sZw}Oj믿VzګQ_uxMctyKxsꩧ0cσU2nB{ıvj;sP멧&><RF O c a@CE[|ݻJaK2p`G?9D!D~~ ?4iS]a~YDa%"9uA4B#w-O?=Qs$yr啿Rc0_~o[&Dֳ>Py˯M72.].#-ֿbM7(i/U{8{[usy-?߫һwO)=/ uW3zZۂ<$1NMjWz`Μ7Qnjj?hn$pUfDýY# lòSPh[1v-:zC]CD=􈊩# Uy{=5_\n <,`Dԛ/c4hWVn]/O>ٳg ˝%߫ߨ: u]#!ׁpCsaFy:c52Q~+Gud>ݙgu3S/+\2;vXbt7o\v/փxrEXxȿ+g[P:^k S|8=BM~zE=dȐRP88vz2@z 6{,j,7dyIznxIQlj' ~̘\?dGUg1Aވ?-Z4_sOkkĢƢ ?ҽ{7mxѸq#=&!$xM@ g(ܺeAB'yPd]r] H..XHa`Y: 7"‘>۲dǧsJq|:Ɣz9Ydڄ8_!Ok_(~wW~o䤥y[-3%=pv#`39LUs.:Z,{e`,//v;w$@!m۶]$7:@@<(݆zoElתU ҥK:38~]s֭5G@-w>i߾zy99/xtgh`[qus2`BU]۷_0WuG Cǚ}wVCTuADh;m۶sDVc>{K(>O$$1T̄GB}ߋCXbgyU/ 9oํ/ДBNJB_"C|J{73fhiǤ9THU"9b}'*qGȯ}_!*Cmarb ڟ}>=F^=*7[P~9_0U8>YSB]r !BH Tj [Og-GҿDrğ{uKǚ?ȿ[B۾}tZ;!V?@VxqP:lBw% ўKhBKp`n wrt`05k O<;UL?gu:BHB#=*w (Ӗ-۬wr_7CaP6z؃xV9lي-_\KR2BHm@YR@Q 6BSsצpa1^7nxR!BMH!_"rݥzOFP6gغD"@]Sh7xc;=p!^!ij ,`ACtRo)``iӦwh!BGyLLLsÉ8 ^eͳ:%< O_p/xCRбhTnwv!wǀcJ'nB$5BzK/BI4JKN^YYa P62_1uMV'wh\xxK ZE&ij~x@ٲ|f|g.Ѽ֫ jRjy+&B 7p\|ҹs'M`M!Jiio)x;eK48xL͕xо}{ 2y}%\$͛/?$BOiv]kS160!RI6u"DV'1lnezuM"L`*)V-t I]aBCB<㤧ֿ !B!5S^^S۷Aٜe5x#(YYYPhHJI(B/b}<&B!BH%%l"2\e'$RUY!  @ 59YfǒB!æ*A^e3t0ʔ+pEh}$$ i!p F!BH&99mV+-nl&^#;;G+! BHB$#]eooB!{ΨiEUeKHoٻhQ(11!P"$23$3E e'B!RS\WrάǒC4DBY'g^!B!DOzzaؙf߾}UeK:κ&&33SD!C&r^AWt-[&_~B!B'3 I{Jiix e3L$腑Xs&>y2B7BNIhO'59Yi.i޺վBş%EEEB!=JIMM޷WIR{OZj)^eBL9+E oAcz%P +`W BH%=\@zj4=(Ny OFFmfJ.]B!rr'$%5[n2BUCJ pHT $%%K~~$96#$!---#Tԙ' :C-A%c^?r?yWXy|2B!BH@yq%992xȞ={yP)8j$.TRSST*--/AIII<Ąb` BHKۜLiHo7^!B!&O{2#_Qb5(ʂ29, c@Xiܸu>ͅ2l! ziA%eRZK+xe9ٱaFٱcƧFEr!]c?ڵ[_`uɨQ#%Y{-2l¤6YfU[n%cǎS|c/iii~k.ra}4,VZm65ܫWO!رS/_.6mD_ϓ={ʐ!m۶-۷~/-[F8<srrtxw-Fyb,Ckk׾Bлyfh }qİ{9}&*5~,M{M7VJq%Y'KR ( reKc@ݒ4wV"BHCRoA^9ʥTJˣ d&Kf{_.]&3gζ:EAߥGȑG V\DOh(9(--[.>MSSbby7O7(5!eL+7q9s!G9ıL!woUiSd]v4Dj4i{1PJJ%7A&} e0Ox4iExc5~&<͟! !."Bشih@'a2dOA |Rstz&4t`S]#E]aɂ0dٲs.Ita+++u&T[C4tl1a ΄KTxm-oW@I z@n޼nB摺:/L9pm^`%\k)6f{ CR%xb4$LQ 7=.8ġe˖޽sѱcG9Cn23,\k0`jU`ԩӴ3楃0B".?&;AN9y1GK8eGMmɒ߭5+t=ʎpK4|*ce2eʧH?X۶m#Æ0U5o #o˖-5Dž(;B*BFCȿ;wj;th/#Fp3pp !uɪ!|C zhL*{CqݻNM\\k+Ր\{tc^ IW^V<#|Xyyt ju6֭\vF}684 QnAhCl6uVQ s5-W0&"Kn]rC54 B^q=$iu~ 6m!z pŽHkxy-'$2j;>kBឌ{3:βm"\*Z 3P;k@-<rV-]<;o IۧOQfBxةSG0HM'Oq¾qo8p@г-][`oݺcy_A=(#B߷ڂWMcܻ8:X\U4tB1i"cp7oA6mڬ)?Ⴖ 1BHx(B$[@q ON% '0 fFylY$0Xƍ-'KSBuB@ھ}{s7 @QdÆax͛w&C={lzj䒋!+*u?n;C:x0?V~bPߠ4g+vg1~exGð〸; NBp`({4Ϥ`a4`1>mc)͆ < ENq<0(cHB9kƌ*}Ap\vSgM=?2P)FP;156h9qA" HpC9'{VaBD6fƌYCQf{Yg^$T%%Zii* Bd(`dv0;9lp!qޱ/myvDQw}OQO}R]h_ٳZQokO>$lZ]xN4s9cXC=ԍapn5R*?Q:r-Zӿ5NWҥ{ՠ0"`4`}PQN`ХKW3=# =0X8Bu]+yy2i+j|_w0@QC2?R& 'U`シp FrㅑFB <9BE/VZmgz0k,5cFk@`KԀ($G[ R&AجUVi} 8xs17\jGO,Xg0pHnG$jul>/7Jus" o2qQײAkȑzu_!ϿPϿI ;;=eWݺuQu<͵#>QF)hgu~up/AxEnC 﫚SNn:bZhi1Z/^ 6rJB5jd~4xü[zvk pq}GFqy>gal9֣q?5 ѩ* |A|I0/|^zi^h[hc|6Kmpl8x\Q+p/C[yU} ! }#Ҳ.U=SQZZ"_ezY}y5Q())VY`HDgF47l`4=ԓ} ~0Pj'0؀.]Ʉ2H @('0(i*Ce($S]V0C3t1cWC iQcv7|'ta#1J`3FRƈpN G>ZG~*"ps晧jG`\a0AԀoܸnܸgi[G B'o50LJB6FvbN` '>:rdk}*1#-ל[$?3?z4a4?*qWaݻgq bI, xCf='}BpA7o,hso6!`& |XU9V{wV*EKmu'A2Xw`$C3gd .ֵJi?#@u +JL}TB #0 9{riY*BtB(::m0Nayrf`X 5B6fd8Fjc 0Ra6F#CA# Ux #tFata5E¿I@0~E;?^@_ф~Lpn0+B>Tl]Am4Mzv`:Y6;Bn/ޠ9oF3-R aڀ[B#re4fݣ휹4w!F#ԟ۶mϪ݀ڈ1Cp}s _x CKvܥ4|cy}btx"%9a0B1X`<=唓W_)0="-imdeU=9d6 3MqluaHn<|\e·9?5l|u1w s᮰'h 7B}(j;Q1 &[^w~r&鹭*|BBtؔ'`Q|Dޯ;\!Jkq0#?0 r$i lLt|2E cs~}0 v%n!p #pэØ / Llo K/p,%#h,Dv"{yhӑFP<>_d@PbNM0fna83倇Brjuo[; X0p8cW9"&uWRuoW ȷpif"}$w-\\<0u1'D$Ӧ}S ֻ w/,Sx#:kBx/GMRox8X{g`%u }BTA%\yChvU_5yޝT .hNp`5OC;ޙy@q ȹkOffAIC @*ITGul-W\*&P0"D&zM1BE%A~ (.*ț1ݻwӄ6mFHZl)$#Cbrx O '`Pè~ cUH]XX&s/4Z DHKq EW3wK qk~ ާôt93\3uTm=#ɿb>vހ*t &3OaaPm^ݹ8p{۰a|T͏F$m|k\& XUYc7p..]^-DY]΍؁Y559Cw޹1hmx^Mٹsz">qo{au0 uU d@P]OkxyDqDŽjFB`0BHn/۷C_X  .]&_=/zƘH:k ~:WVĉG(!'ya0J{n0a ml{*%ڨ,;[t>fKq,=x ̃lrYhqİavnԳ$7ǟ%C馟7dErtnoO4! ym]me ;rƸ%F}R?g$!nժjB)߃`A76mڤu>esXEݻYV5 V^^&;iu6b(;r"тicǎ/ {HYJs>l#'ZU.aFC l+0_Asz0"1T\)%mD2w:ȫ{ h `I7 joOgg]z9V{w}È2flA?Bȇ{ HCfn7߄1%P>3b݊H.^Zix6\:ٿ|Ǯc5߾e}~jWu.kZh1aqa_(0"BF͵/D7 ?lhzzr:AAy^u۩S'Wo̚Уǡҷo$ڶmkC3}(++['NL^XyGbČ7T 1cr[o/^u~2Ӵ/7oA+hц`m92|L_/6T]u@QƇ~hwb?}*Ï!x~GzOiڴ>B=Kk齻cO): \۴iصk7ؽ};'xMx im( 09=!$4 GC>m勍dvH3}Ԁl2LFg t  F)S>m~$Q #2$и?H (qz0m߾]^ze0B :?0(%<_{}=Gu 8GR`8|פO^sCdݺuW^|P(Po䯀FOk!r͚; 3d9HAx?2}wQvm47 9s|챣}}'o}y# ۷W$yUT`{c7s/$wBHD\Cv6) dԨ{w5i+{uc~makтԸß;OPCu~]=N*T~'|7FBq2tP- t c-SK_n^ CXrqz \oz4m!N:!HzkҤWcikֱ n<~N >x'G~p@3kت"[=\1ܓq~ qɯw(!s֔}zXᙰmvyj9Bр[ ?vZi+++gk <usws ,#tpH=6s>CB=Kk]_q ^~ZE3n $1ϷsU>k B+TQ$x,[SB+0H3w<5cts5F°/XdҪU+0 #c!= \069G& 0}:25k090>spƤm쯆</֭KS^zL )|:1A9S`؃a֬91" Fwq{`ĨY檀#'Gt|:9 |PC  k]_׌ 7oa]Gq8%={\E1zi]cǨ |\pe€npOUhn@FvUVPYQh㧜rzv>RgO~hsm";LƳ&VO9Dyͷ] hc\r^vZw8&| ȏ0wc ct:昣# UWR&Mo> /(am\m(Mk鬳P/+E}L4Pjj{YЁ"@zEdpK@?S9^vvհ$ΑeT1So'ʣ'@bCU# >8y<0a1#E`MLy18Fsp_^^Kb^n$5F8k7y:F147!T J`9AyB{r\؟|!9F5#T  c7 m##m8^+ԙ&Q}k0'/P8p9QXXE] uL> .B!1 իQbBCO|yTtNfYO wU}D`@/my2"!E K*YZFPUD&F=-TpnH;:U/<x Ckb UWue`T_6ZNժUjm~VW@T$ds}ƍ~TmO {r!Woeҋ$)ȃ$!bC퀁ڲxooHD pj_/"xAcV7 BcEP~SۼkJN!B!nA}[OA)؟j;qz+&>þB!$b_0}+=N*m12WFR *AH:˂ϔd`!fNNB!BH]8.^zT59dߤ՛[) U ?Q1ܗBHuD6ΗD#T2 N~٩ /G⇿T!R/=%~Bݻ!B!AULxy8_1'.P?rV=#dBj BH|~cGJd AspM>*|B$2"yUi? IM'8RLB0YdKFFB!BH]> "b @I]׈.(3_IANάOBH,D 2W%P P:$3UM+Yyvl1J\:O))T.v !B!R;: +7,<2ewbDO@-!1!0,\ex ?/%&8[ED- s t՗\G{{4[JME$ _ YB!B!}I}J#}ph!'Oo5 r; @, &2!6Dư 2!{N{H VeIA7P™?VuYe+;wJN#B!BH "oIc #>panKhA#Ĕ+#FH]INLj6 B!1 <}c!оᴕ8%XB BH`mmI(zT5aApJ1{qPA/r)((}KӦMB!Bj=c{$y}]q@^uJM(BjR))) ̗#ԜH59_\ý,((S8c&WJѿӥTB!B > "v^/ ZFoH=O(TDh!GMڅwBHPVV"%S*D필pThǫvv!B!NCx̄! LNRRb/OKKX% ! @RRROYY' F\9ԌݧǞ'r#BRS`_nD2BHMD6xxu[dr7nDdn‰@L^$O @Hk. rv!B!)@^xF5$~RSnrșz$z0m\舶,!P"D1z|fjك@fB$̄w`wZZv*_VV~T/{W8 !B!we?SO#8=Wn[i|CjZ`sEbm¶F @Ӧ=?ȤEeCbJU"k N[wCH _ۅd o9!B!|B}1)V~gD,*׫M?$>h\Cf[L!@R%ƀ^[_N|˜BHZ}wU+T[q%c+U.C!BHs.ǓL$ ?Fv?$ Bi̔A @8 3ϑۿ,RXg \|&W-bVz8/7!Bn^?˓\ 7PpX7gpo ;;Ss!>M4vH  BHH* ǫ?IFc!6m#y3m؄~+<}!B>nJmP`7U-#@[PpRSS.OD  BHXŲyߏ~5}l"<Ώ=J9hI$")aBgO( B!B7 :}C$<@o $!$!zDu:9BOUڵk&d  ,w >ѳr{a!B!'x/_Op[ @T!D ).-[}F(KqǍ~G֯_/[nmI" d;sӑ3;~B3!B!Ddx~w;$Eا [<@T0~9!$ "aFZJacd͚u6Y~tEn@íWׄB!ďX0 :~1^?ik~C  Bny;\MM-$8⋓TfΜUo *7Pu !B!$Uݝt|AQ"˜70 p6aFɰaCu~ܹ:ZQ0 &k@B!$I$ɕ Hip>!$%u=MI<ny{ҧO/D侭/B! E[klӄ@(BBb &7 :D4i"ٳg[B! ?+))>ˤLF>KRosMCIKKQKt5!$!Q?"_=_~'WBO!BH.[oD'uAAHT$¶@BH}!Q^Q.%e֋cYUIYy.+ȉl #RS$%)ERÔ4] \Yt 4ݎۅP!B!$;< =RTA@~1ddKzzBR]>ȂSXZ$giyiD۔YBɩn A*%]:u(7 fF=OQQ?^UHBI$(B9PtSA Dm@5?95%k˲gID‰?**3p}"B!$q1SIJJVIa"P탾($ ЏD?B @^?%|a'@^###Ɍ3}ߺw.Bx\'>ee>Ǚļ?B!*?=\# Ġd&΄7P(@6B ! RPR$^UhDGd1b$BA{~YYΛ)&iii:~B!RAT)**yL*JjjJH!}ؒ"!$DIHR?UiD#-[;wZT6lxP^?ۧ`7#iA_ !B!  RR²c%0T4TWj',p h G:! <I1IVٽ {D;<~yq׏{GgIFڹ#B!@g ^A D'TΟ `FFBWDI('¾eO\O*n{Ś!6mb|g!B!Dh'd߾ensa:''Bc i'O(p8VB!@ˊc*!bIdOvĚ4i,YYB!B!} 9l"P )(h8}ކt!U!%:vˊVʚ=CiY2tl^z>T#)kplL *U?eeR\\lu*Q?B!Z}2׾HRRvoa߮Ů]de_IүarKvm%MKKB !&8_c8Ɔ.+Qr^@HJ!B!}E>IQWq  N0ŋɓ_ y/}܄R!Pb /~oJQ5@-Փ(q Δ*C͛#B!}E'A$Pqal!d^mzʹϐ[{+>]y}`n>Xqi) ;VOii&^ň;B!B+4i,v> 9Ee^Rׯ,\8wKOOBkd"x(´Kٙo # w*Cm8Fh}:켗c(ǜHAh|"6&tL!BK'AS}7jW[/^8^rrj4j#ǟ'.BܠD$eѿ,}zjs2hr^O k_ZwmOVNh1'2q+ |b!B!58*NO\@5͛(Q *ii&w9"}hBvu DX as ׋0w!B('̔UKQief/Xc~2Y_I h׮]jjYp,X^J+ 0<ٝRT4B!B<&裠bYD0>ꇁoӦjJ̹))狁uA"x^,eަE~Nsb¾Nsm߲?,s{FjzڵSFoAH8 7n2. }B!B j%%%Y?$EdFJѧ{o{E x&x^oNJ|7n&Gt".goZ)WŦMeʔeǎ"={*Æ AIΝ%=nCU Rr0*B, !B!xQWOht2ȍDlX/@ B(r̚=}?IU@fv}u}V[=)e8B2s,Ԯ]{9$--M;-Mܹs')((&'xގ!B!`Q*ς 85 Wio7*@ɓ_ˑ7I;L.|Vꂺ B19+{IqV-E߀}oDCy͛˘1i@23+wcB0!B!K靓`M +;w]w+/"k* Ʉ ˞=u׽! Z!#Zdgn[fڢUwh-=?E ;ӢJeEt !B!$}ϒa o&O~MrsWP]PWuA!N(B?IVc-f5CՄ7gvvmF[(B!Ba%uS ˖˥n` =!$ e޽{۶Ż8C/#~IHٽ{]TVZ-|L6;0߾}$*lwB- eUҐIBgdfH^quR/#&'-X0G?K䢋.͛+L~$HvG!o>Nx_p !u BHNJ(rjBvޙyn\^Pjjx /;PYV͛_zoomAƍ;UHhA_%KeҦ7C&6o,Tk;)f׮]u6ի_PH;ԩ,aʴ:_rlڴY?sO @6mHZZ+DowBILiPrrR侹j*ިQ Bk(BTfo{o[Jl_ʭe־jC^ \= @eGUFM7)S> [B]yjOtR {1u>z|!x >,HG4xS#R== %Tf=tlRSSԛ~09L8VYY-Zn^= !^w"BHINЮdVvyJq-;=5C%M;O?mWWqv#u'ʯmw2;>zdΝBlҤt^pBi8ɞ={ݻ%77W ,TS%»&ʈ(;ǂc±qHKmR;}DuA"xEteX7׷죕ɐN%#%69p K}N[vD^ tI_>!P[^9!cܸG\ 4]|AΒvI߾}"IxӿU tCn?`hsj=Vm0{ٱc 2*a~G9paVwoa͛ݻIffzݽ{wٳV} /B? N֭O^ҡC9cj" <{d߾}2a]bw߭Todݺu^CX"M^^lo~A׮]5!ؽ{0\XX(oe ݧeȩӣǡ}mc4gͭ61=ZF/;;[Cҡ DR "By :Xۋ[]]s f8>P.pmٲ 8m]ulԨtI>]wYm֭*p,ZwwI?6O!D|C,qRQM|"m3 @Lxf4nX5= B`o9b Ҝ{z9o7_D۝Coސ}R-愞JH CaqM%'ѬY3>g^uj_ Ǝ=^n!cSh% N`8rm5DDz]Bj=(_7F{ը *v"],[vͷyߖx0DLԗ'hT@[4_ kq%ED>% 2A4kBZfPD@ ^y+.*"dz`|vg@y'Mzk {Gi]7DD's|J9Q3gC_R@oaݣ_]ӦM믑;G!!2~K8nL"-Fx'"xdIMN(5h$cz^:Kw$Wc}wV|(˶[j\njc-0͖H#_^b?^+T{-#jX‡Mp …䮻aLH86x{yI"݌ϸqg4v;:@㎻TXo38goGq}o?=hwR7ޖp{ݷ^OhX^z'o:Kh]c +^cs|~}㇀ ǂ ƫ}#}rgC7e6qr%BH}bᵉ@}٪/;U@}0 !$Z ''x|߲ ʕw !- K !$35C%59E>rio-/SIy#"k=$4naRc ?唓H 0`X].]3O@0쩧? Cx/2 ~zc3mҤW}a;?C~=cL%0MΣy! A̹o/_M}@;~6s s75 Q)SۭZTB!vW䚫J,>/l00e`]}&ꊐx򶶙<5?ǀ>/M]!A9I '0p '=[~e@O}AWfWO^_| خm[C5n*ZwWYJKVs $pDHQ0L6mX?Lx/^#J;ׄidg2EhD4cN /)9*x%(B< :ViْW/9N{6LJXK#{!H͐a =PqAFIt-W3ۈ SU $^YPZj{Teϐ㏧h>"x52α3 OBu!?rDwmsUujZNx =#[}Ynl߾]LL|HnfOA! 0x`jժUT^?g{exT[!j*{w$^&;!s@cxUv hr΀qOdu-+o/iY2tlAz>T%)œluq ̫yffΜMsC;IaҐЬ-6:4IdD$1;wj&Lx@WBse˖!u-b+BGBjN!|󭚇I&V\S!t gBT93Bsk(jK/i5#XΝk1Ul^ddzB$ j f<@`JMM[IB.o{з> tqM5'ɯk> \K.(3Å&!७Qz/Kc% 0@FO?}ϧرcA'tIC۶\DNꐟ_{N]^$.ܹ󤶀hq}wuFP q-ӺueȰ_VZvoٮgY \rIR7U(g}R+7j+|9[n0t4s$Za%1]xzO?=Q&MzU'2Y~BzӡCzK 8̄K$o %w4Rx0֘JJJ$` 7\/u9^B K!DVZVx58&I\WA#_;43 ֨QG'&L6=rUj1@KN_^c훟4)_idذՓ?cyuSN O=r,!7L(*Nє}iӾ[F>7gn]C?7 B!|_(p| :tȟf0gmBA "T.~m,["`ꔐxnM}!+!$qDIg4'c1]t5p;q|Ĉ:+sΗ/oGyȀ|M7Jzz/Ґqƛ{/\szB;۷- +3O] -{m>?壏>pp0J lɣ2?+CvIƍ/V%]w\}uֹH/68oQ3yw|_Cnf=&Aԩ2 xtO:S塇m~ҿY3s,P@iW_K߶G5B?qqD_^{|w>O;7^zj@8?voٲEYf1x<#*^iXѡC'@7|/Q2;G0p' !4${Uf8HAP7"P$bG H!^9! CVZJ~I$2iYz,~+"SS%ҥGk&bwߡ"0?oMb:0 G !4 ~S=[ߏk-Dm۶6 '@[<nx:BW!$@ش V}9:0Ӧ~#l /LcBйe_^FO<- ߤIUW])7{?a F]wrJő<2oː~\rɅjܿ䒋Tyҷa~jؑ Ȅ ȑ#dҤ5Ikugq2tq訣ԿalϑVM2kϨY?rL(7\'>ѱcGGoxD3+BXkE_BEcM.y*[~B x~MiӺ ʂ2 eO #(e"z$E<)O,Ry%^vv.0!$bn;'!(/&p_P~9_0U8>YSB]r GIH $헂$;#I݁_S Su LZsJ};t~ ƻ_|߾}k$ %0&A|k#\ $#h5 Es BqqO ԸީQ-[Yr_7Ca &&LDQW!T @Jz>'r0! EБ\pٹ瞭s3kyK <!BU"ry1<ʄ9%{um @w/֭[DÆ 4z!t'ឨ"xBH]B@XIMNEy35h,Yiu?*֭[KNǟ'|j,Fl/@NQF !BAHS{WA7)BDPm͚55a׮]#u)%2PpM$Z8 F!5!$f@R\V{ꐞ~PEN}!C!:ȤISOM?XGSj=h!B7)-m8E he&'TW dz oM~~$9Ă!^yVS)()<)d'(=w+}Ҷmk!ѢE [nҶ}K-f͚kn !BMiio)y9W ,kXo1Q]I}QT1P>?&1O?mNoߡ*?<õB||:I'$} Ν;9kP/!{ƍջR\I֩X~Gҥ%(ʂ]$ ?-!$(*⦦"S"T BHHGv>"H+D'ȿ®e#KJJ$&ߓ⫯fCݔ)ɪUt>==Crss% W?EfΜڵ M]tʕ+ul$ҥdEq7Eu&iii>O@ҤI4l߾]~zm@g-\{@@['8V]v񤧧E$ k ^@yy*$' _5jTg9cvޣec))aD x0!IQD !u BHvsӎyߏe$0R_~T^^!$2xoy׮ݲw^7olsY =q󒟟'ǟ':uGCۢg~U1~ҡC{|VˈGUVҲeKv.zɒ7ॗ^oiid6T-[ǓO>IG<BWR?5HI >FiӦRPPh-wjLNOx80^o,9+N !ğrzP"!$ xHcLe߷!c̠=eTٴizw 4P 8@"TEFF\v٥-Jjr7r)Pbu BAI&:d"K,&AoBA(?&v{%xf,C LBY9P0{ ! >}h8w+!` Fii{!4$l'¼! f /)ŋݻoො])%d͛M+r3̞=G٫y?Xo(فPtӧSN9u| ٸqlݺU^z ?CU;vhy6mbo3Cw|Lvj'|Qn9$! 6mZHu@xEZ^Ͳe4'Raabܹ ?($zA8b?3Ha:.~ٷo-0c,uN>D]^ڃi#˖-+D{4kT˂2axh͙lٲEwqmիרЋkCcεoX~5 (ðaj1mֹ Z Zy1-QGa 6sܻwo)g̘)eeeDk0=mݺM-Z0G۶me!zt;'^8g!l[ j#L))VNC

SGFܟ9se_z$7 -ZN[:sUkt(+ Wa&(>Dp}U< ;wą;3@`44S#ki "c%#GeZV0"v1xHN#]HNN8ai }!su&p̙kir?@O:O^o\qe{=SbK0y"8/ ']tʝ$+ZB^}5pO="㖕Zm 9!@ }^rz]°Ao 1vm7@_~9CQ>RcA=..A׬Y3WOiӾh'aU*gUDGX<KH7b$ x 2H// ch%!,%|6<ߔTOVx^V0L3 W6moO v0^s(B` BHH*_(* 34Qd*B xCJп# a 8@7 u'z7Z m۶qNQ4 7Q7Uo!#322-!tƱ 1؁1"AKJxQO1$<qŃz7h:0­O.xT v U lBWNzuP`Ȑ*d0a2FJ/JUvv/BAmk'EUW'0CD3/\0(ptXucĄc ض;&>>]C4F۴ic]gV? ڵk'zq,;wH}a1ml0} { vLPL4nK4MJ}5`1؀ھw4>>ѹG땮t?B.9='{j-B믿ζQRx\jp鬳̆?ϵζlZ^s<+$U)K F{xRtu]w6*m#,]U)b͚mvܢ贖2uu]Wv~w~}}Z!P @B "Ҕɟ˵6.kI&=RV Dڰ*m38#o/zUߎ8u_{Vp^/ u\vmp\rK6$k+z\aŋ۶+(_GԨZV[%aFd7SVRUˡOTKƒ\sic62W c \ԞN/,rm4WD*D{|։'Pr Vyd F\G?x5Z=U~ bS( $K.=|'x]6(g)ZyP̟sN&rKT܏7 cm=?Pq| y3_q7mo,ՆLپ}%6@x# Q Կ1m|VE!]6I'`+C6l`7D:o fb#D%aw'R=mo_RK\Q8x N D;QA3}VѮmWBNWPJֺ,s\Ϳ}Z-z^ ŽA?͘Qٜ ~Yr \C}/ӳ8ٙ&0QepJOmAs˺{EP.qP'.ty{؇@ӱʟ(P]\MERԶ}y8?*B`mkd*~x2mU5F&yFEj[D9joݚ`8Hl֜&Ÿ*"9Nzw_ ~n VQ ̷shNkv L5tmW8B>l$*sj!m$S Nb5Zjk/^?߹^bs=֐~;QՏTU3U \5*\B8h.`@SbόӍ3mZ{׋ \vV9 _/Xnх?M-g7Y_&tڿw}OcŸd ~eoN[My@1@siɅ@uبe DVE1B!G+i?mOxRq06P#NV~FU!:ԗو{N<FXk9~)Q mv-F+ϐJ]6ZMUR^>ۋ.m:hלFR,vY{mY Tݤ}Ŷ{gQmx v;泟p+.7VaC*n{y_zQxs;ޤI]6V^OOOvt:WBn=w G)QNţ=v'm3Q嶺8^*DoL<{>C %Q6prwdU }tZfpϠvelϵ0o:oHw=[0H? 楗^Q5ih Փ _qߴXX`mr'nB<` V*+D-bd]eϻZbq; bƨj׊/ΝLt{ގ)~L̓UbA~f>vu޺s5K:?V*6gP] ǂQ^/ /-o,kjݩn XV'zdPn\?FpFRVYoï{ zs r>ׄ zip}{rK D.ʒ#1;zaeޏʘR + 4@*blvޗW^Ywق~3護֘^[a7kڐ ۶m^ܿCm(%}'%ټysfזLAY\ŕ?#HU.^{2 kqߕޖ—+V*#8̟?ߞ޷*KqLZa[y9~=^Z{<1n8 ̷Ǖ믿ZÆ#gb͚MP޺ul(3=Ҍ6s*׫w䩧bO}Ek{[AT ݯ)y,oBwfͲ4'ל9ԩ|sloo$ޡw96[1wWU>nUuGaw$7N{UA&=%}% vP*mmmM[˵Zp?Vsxj1?"˥jy 4'ҥK-o9vbrv}]џ}9/5q'g6?S+ȾAsGޱ3V{ת5.ٺu[+آ. ^@>M-ich rBJ[^UlQ;gy~~S \vv̞]ugӖf^[>^)YfxJ"ݷ*7Y~lk/mds4'[oerxQͿ}l|M yQ۲?_Z3_ UШʕ+Gsz=sa]pl3۶:?,~usΪ{(E]hѼb}[u ۷e]fzꩲ*UQu̙3l0U{gsV裏_|9jCLк/='{.9l5؃~m0?XG?ΪMEPlnk\Îfz@܅;n? @ᡱ#q,'Kp5}[ByTy?xmˆqޏLCE]`;wŲe˲{g?{{6\k.#7p ۓC'hŋGsyعty]1SA QH]KJ]rvիWpB%_|YpaM % A/z:\|EE +O?k+6lh*k݀{y8>3ysmU5׋ \tQ7GE'>"Rl (w=ZȯqF s˨@Pk@jƅ?GKvL@÷bP\bL&ye)_磂߻Gsh7ؽ5т @#Jŏ yЇqžeaBP @j? V*7%@P̹M,!^{u;hn4ZobsƷ[F^^b >Z u1 ) QoIg`k#BU)ʚ 5ٳʞC1oޱSLPYj1i|/؉`DPI@Bm3J%*䪁!Jh>0wBWW=E Mƒ7ˍ\O~j+5]X 0&'7WX;BazV 30o'(E4f)^}x@DQ?OnSl.{,x>̔)S D(hq5->@0DV0.x hhOCR!DF~eR$q{w@ycX%7 rs{l"McXErcR @.8Pr5BFјDcQ(: * ?hp"Dͮ{I1Jpܒ0F!N<;jkKؖ CCCXXDcM4Fq]cB^s:]vٖ 0V4XDcolWuh@H?:v1NS?f!D`(;d}}}f߾ a49CF"DJ0va۷ofϞejR)[wȆ?I$$:B" @ʅA^APB)If{1@m99fҤI*kv9Y|8I ?l㵂+`^9_(˅@^y%I{9Jfl33s 3aBb7{51G´%l7W y᏿Ȱ @X)XT*ri#od&Af۶[̘1L8p4P{f)vZ'qO1pa@:`X(r{H!P*6wﶗutI*HoZ? j{}ti?mmJ 2nwi_Ցw"x@3q٣Gc w|p Q*TޜA.v@2c`H{uuP.Xi$ cv9hIJAwyܞva?]B-˅@rIh@H)gMi yKې(ǝ--'?^ dbyUAn(siKM<U-vc/?ocy>~Y`A0u7ol5۶m.[=~{z޼yv#DyΚ5̟?Ϝp|=2aG__izzz̵~ttt?9ꨣԩS ޞ+grG3zɡCy+mk zzÄ fʔ) _̚5k_h~~yQ_.K$ 33֬yʯsM7d/S@-Cf7w\k۠橧7_#Ka +W=s.g}( REs9glU;bO}wϿhR)llf//enKn Zvطoߨ!=oM6< q/g̙fSmlX7<:7p=^b)ǟ_yn~mʗKO1nزegM1wיp{'/1  ~/ܑ \DKse6.!؇{`j6:z}8p{w֙/~Ns}?+8"},z'Ng{OmpC>jcoxu,i_\~fQk}wMW8KgߴWWW (뿾V_eVx/S[Gk zɧ{\{54>}N긳Q%~/ui-eZGfF^+0~P% ͡w޹vlڴ92Wr6p.R>+G3g0mawk>+V 0-y3}tsiK͛7J,3gvzr5Py5WT~^{+iW1䂡s=cͣرloGf͚a;ֶUIyHLi躺Bᚁ^#VzD@-ZXt#<C 4(_ .k6P,_=>眳CGD/ovjcdSq+/¢^rE=N s' 6p~W_Kye]Ff͚ew66mm[)]Gmt^3**B8 hj_ÏڰG8WemnOpõy۹s=xMSt?h„N3uS.?4 裏Ξ޵+|cĉ6YtVOG9.Me]b@Ҝ?~/(|Ѽ7vns.Js趛mN kw3' @Ti4\Uy3\%KN2w\v;=Bͫ߿qriR)FAS =*VOL ~t={=2qt5[5^@kpMMcTMsҨ%*UTB`27Dg/Q ajMs9 6ikT-VwߵU@jyxIky\޽{M@2גMaoU%֭۲AS3U5k9cFP6MX$hQTh9~Ujc;5\=:v=M9u˜9xキׯϞvϭj5w.@{ɧM2&4Ck^t_Ow3Vk  UZV /ȫq;\{˯Wч~d_/a;=dlArlif4k9}5e~ٷo=v?H1u>u{M@#A;nG=\<ZjYv˻ '>q}|@G-DMf,0o&v^}lHsR骫0棏^z޾@s Nj%:t߾@nacN!ᢋ.]SNΆC/?1;Ӭ[000hygWy:{GgOsϽ;|Ej/a~8p?2wqD;~Ìɓe]jOw^sМ|ҝ={i4=='!j\?qW[6(zG\sD}LriÆv*t?/;ܹsaJ~Wz8,i-HEP(WW(28–}Cw?_~uֿF0he@_ 2rӹAj2/3~4|/mc=V74̞@QFX5}S{= ßmPhZ3ux-ߒyA;ߨc {Qk]/g2Ά̹H̙3^׮]y]oѢEO"n_J˽0%& =6cu^T6{lۦ77{)xbϬYŃ#C"ED?Dqr-r=xxTiD@ڦ.Pɯ =68=ƪE]!E"#V|5=iok]?B jDD[[ x]MGG"=6:K _^% w^z,zLzl«q1h]@ \`i&N̅@7n2T4 aO0ӾMa߾{{͛?0@3[UÏ[ƚ“)S+Ẋ~dMA=`ezm@c 4゚3rs׽3QQ;*Nq7} s9#05(S}6`S&e ;fϞ1 ?Xӄ@@ifݽu7 ?ƴ?7e^zexlôiӲ60cM>\.*7,k7(o=dĉfԩp.lI$t0VH}{;4KԩS̄  (᭷6CCɢ8plذV0Em U\ٳԛC\[afhL<@ffڵw5Tp7\mn9^h^3v22s16,]Դ%/2}}}梋._yU}v{?fRsQG@cN{5עE ܹG^^GQM[/^lkmpq椓Nq`֬ytwwg7Ԝr)c1=}=}ɤys䒋͔)9JkN5|s9SF\sG/^SOg6$̵~,|ժ7l}fϞe0k.RSZ X\'p|vի߲mݺ՞_n}ꫯ4u83tA3aDss2T RmΝת~.8N?tQ\[l1+V^`Mjm{/4Ѽx^ϬYVtH$tY OgwPSKTjxno C{lS}v[f#-;oԕW^ah{=stFmL\zř@W_%}4gœwY} g˖244 ɮ!\~u̢o}F;,\,S ;@^ .?ߙ@jٳ؍몚І mP66L2%vTs䒋leo~ao_U07tÈeyϴz2߱?~QEK\s #U{qdj \ sk֬ᓪj<6Pe]bImyɧl 0 Qwׇ@.Y$)`;>WW3eFs?7+u-JZp5*{o:s1^E6&=hM5gC/\pY~}>˜uYv}Wo߾}o-Zd.BeT4}t?{ޞqƲת۾ G?6/ dmg6kgzsQEZyX,9dwU@jyV٦n J}+ZßDß9sfVX@pi^x%Q 3wl"m(8W_aQhFA_kutݏ}T300`>캪R4kQG͵&׬6kw_QՈ*ptoF`DO?} &EFNqSN4!u`qB+~&T-%8GWžfk#ﯫȚ4imv'>\P & ״'תO>[ ٶm>/uRt -U*m#}}l/dwhю&i-eZG:n#F=Q7f`:h掹ghPSű BoC6bTa GAD]c8iӦo}iP=]jQj__a[z vwmؼBz^~XDTأQ7ڐuQL6ΜyF/_~U(L+ T?ϓʙ#A^fl@ZN-5QzjG^K/dukUI Ri1 * B0HB#m[4zB uC:[%e#R;&wZ*@qwھ`*jU?ځDhțSK%KjUHqUAZȮ];3aO 6vNޜ .ol}E r9F@rev0w D 6ȵpCTٳZ۩OT1S 3ݣ{gNVBoD(x߅B 1OjTYЭ6+۸/-v^[f WA #*8^oI*U+kGSN*P-ߤ{q?fhP&Fo@RTn7mZ04MGo!Q5'cd=UFH&4iS`|PFؾ}EhQ; djWveXV=s[ЂB1F.護تA(XP+͛?mrL{Λwlzs𡹍T-F5Z˹y\K7P|hj7W5:L{ZyGF%]M6̝;מV0RՓEp1vlӦ͡So}Ƕ) rm*}Yj\P-ʸh֬Y~͙3L:-; K2ޡw96])Uhg]VX팤K@1TP& O=K/z.+U#j 0㣏>2<}U,]z}̒L&ͣ> F?VXec~E] ʚ5kmE66C gɄF;?hnfBh(LPx=SO?aygLX[ٶi6ls\??m&gF^ _UZ?=li^^{5ۊ[>D*@cK,6\p~6md|!sm[Zi Ux"UUE@ڒr388`IN8t. +VzHDjg}v6_1p駙u޵U9wېFslٲdO{~76o.` 6\s'?φߵ{jB}m5*pʡvc=|&gQ%z+,YDsᇛgy.zjn}yۮUhcS!*G!^'.*[n퓶"KAR3fs=ۆIAz͇f6qA_h.\XHUI/dG]AUW]a_g f2n{l$^z}M/5$mQ{Έ}No{x#ZȄ8j5sM7en [*2PX_V\4r\+8V;ljcZoݺ/227m) >wt[D:edQe %ץ{Lz%iI(L6׳}Z龦NbÁPk7*U}sjUC-T­}n4fʔ%yT`eiuoeϷ*tХF%Z98pж:ujYAcٰMDo4AhxL4w7'Ug'OiN)7U[8fչ&'|mӆciw>?LŎMgQܠ5G GƂZTQ~{6gn1U۩ݟ*Fk޽};s9i@ VҔYS+`+d)S]GZ'H{Vcs]SFw* E$RcgѢmݻw7o90/پ}[& Zg+N>ja=ywg`TRQ;07Hh.́'O3<\py4OGVobsBE>@hmxQ\^}Za{ej0+qWQ?jv啗;Vٳ׾j/vǚSo7xCq*I&z!hwa67j]GyyQE4I % PWW=(k-4@i"n@ ԥQ*}2uMccpH$ D1K˨ SL!*&l wF D7F,nDf  rxH hhOybT4YEU\hBx) =;dѼIn.d?В>hpi{ E^t:H$qwwF?VZ?ho_zCcE\g`0c!h򊰌Szc].s2GW{~߾}^1h,1& [ipYL5IxP NC]v 54?ޘ$S'zHFUԻkZMDm BX*> 媀F@mmmÞ߹s7Ԕkh̡ ?f)UI0*.kpAOPhi3' 9hZ 鼁RJ{Ht^d2i;;'344;v6=ff„N:ok3cD&Id[Nr;a4#}nV*1 02*%ܩXo>|Їt,1ܾT.r9Z3$3A`&4۶ fƌf q*}ݛ?liۇxDž>?̿lrqz@{./"Ƚx)eܾ 8c,h>a՛B vX,mT (Jݻw::MW$[qӒ4ahhV<;\Kc6ikk?nNU,aNYIo\QI.sY%Wڶmny Jƍ*TrB wZAt:e E\2>2ܟ]y'47/Oܜ=:9~4p.W箛3E;!jqe Ë=n+=\62}cPx4P=I&u]o?iMT}{.v@2c`H{uuP.Xi$ cv9h( z sn2hY.ʭO*re W|bF+\^S x]?O܌lo7!XbU@ kejU emH_N7h0gxI6U-6"~F;^.WƠ fd 8+aN2S*Gץz#Ys . ' (W㿝0({im'屐 _ 4`[hN;]"?(%R{+*ڭXeP:=9t{/`("KUj'ysOɻo|@#.6Un Zul.2e[SU J uN!osnkk* h Uej zf:(v U p&?QOqsCCCO+c0^2M Nޭ@TꔺNyO:/ogEY$i?@ϻNB(lǟ 1'Y8!lRˣ *ߕ-\1ۿ Y‚bCl}:4 INc3 ΊX,\@PPV 7sF+us h&U]6biS s}K+-/o4}RehlWI k.wR7wޘUXdZKx5=l.˵zKg/+tZCpBWz)',pBJBUH8vK%d~{n@Ƿ~ #Z1ƃV=4_ ] ZCh~m?~!V昢q\v,Ae &<4(M5@*{F=Bs2g믿s_\@hiž=֫$O 0vj5N)7i0ʓ Ӈ%/cP_cL~)ղ[[NrH,NXiPH ]۷-os̼$Oh5ڡyaZF ko? bvo功Oce0,xߔ-Þ`cȀf,yS{LȲbTࠤ.uW{_u#l^M5xhhmn jvoq}+;P`|):)'j+jªJU e2~;syʭ Y77\2|Iف2e C&Hb ,FMۿXTKʩJX2ቜ;=0|HO&Sk]0όN~en<\Zr32cfN̢,z .;]a&lJlڴiً.̛< Ɨori300hOϟ?ߴrۼfn +:x }}9YE^<~m@r!.?zoޟ>S^9kecha*y@I VS7]?UG4~?ɗ(+0^ ,S('(Ժ?tTrr/3'#1y~ŋOcժ7:qO^ (NGVTv}w;e9h%qx{=m4'H__ON;?1o''| @=h&7;Orϻk@$| s/ц?*ʩ)N5UXJ.džݱ*:3v-|ᩧX,=m$tRA˵R:NeKL .=N Pu),h 駟Δ)}^GA 4+wN'Wx뭷>ogGϐz~=JRN/jb .nX8ͅ:*  7[!PG\yAKɶK`D( *(yy5rPyBD`"Wp[[-k>y S#:}=445G-o\O0 |ª)ҰGj^VpBnXȱ m|K_>s3f̸_QS ~[^%PL3 qex{~d2[^m+|x6pU0ڻ\U0ٵ Vyŗr@sW^fO@g޽{??oGË' } c* JO7^^Z*ф@C0(r@J_~8m޼y'O s1D|v5UI.I kwA{s5͠x=?>d* Ŋ|  2d0ț+"6h&/ʶ}®\/&x3AN'g18qӦMou]|&ʨGCRU?鐃1 9_eWx!PA+}eaG?("L?aU<)S~OeaN/uvhB w\hYBA \|봅n*vB@3$(w2f8BOф>ʹ" baP<1Xo 7K!4rteKd+e'xWr\tySgP(Pڃ)rZ3AhF `NW{0%= ahB bP'lYXSPS,2%BhF@ > Y*pYg4>ž?2aCCc/p\t*K!4tC\*q:U( -+缩Qi3'rc˃*ݾ;*q㌅<ưATZQ?WҖM ׸~>B@#|@4zCA( B"rwŴ CbZ @!h1@-_AIENDB`diegopvlk-Dosage-bd9126a/screenshots/preferences.png000066400000000000000000005055521514145341100226720ustar00rootroot00000000000000PNG  IHDR4L&tEXtCreation TimeMon 01 Dec 2025 09:59:10:'tEXtSoftwaregnome-screenshot>IDATx`G$d! 3@{Q(P-ewQ*з-,B%2ށH{xے{'Y{Yt:I'ّw JWPRJ @!(1@% C. &2g@e"y|Vt?$jg@##ŋ0GA==(O8(D x7$A=-% r z=tl8%@#ψ e;tJ:*0"B@2 d}lɆ@VR}L>;%@!Wx뤳^%b ;(UGpTJ-HL:˦ PHr܁,-βlUd;JgyJY.sޟrTl6 eL|=ٮ*H:dt'FEN.KeUD&U;,OTd[ KݗÈtT:(Ph MYɓ̀( R1|4ueP@.dd' Z[ͪWĚo~ 5dJ( F1, ~=2fT!P錷L祳 .j٪Iv+B|;y,@e۱%s_+"-\Y/ۉ'{?,[m2}r("U? bK~Y:I>ž*"''@gd'bNh9ttbK澼+"jl=,dإ$qܖϋB rQ'jD,,(gDAMB"U?΋?eD K22 HrNP"'s[R?g3@VO&s;s&@~>nx?yXA?s3/x/g#PEOD xSɄDOf~<?BNll\6<*j| ?h?*}"d%,@!K%ԈU9h~ eǫJ7w=mIWj9/ݪxף>d/#%yIF*d.cU#T/͋o^*g+IՏv2Zs_}wOPi. ~ħ˹xL,ۗ$b8<ݟ\ Ě9(VU+H!T ǪQ(1F2%s[R?m 2 > ҝ$u2H"Ke \Jx-2$e6ZuK!WOU?(1_$~%+kF-'B(F@O2:*OxϟenK,cuG/E? :J*!eI*F$VuOt8>Ə2r':$/%h#%?e\)ܗIh^'V9cMeEDv(U+8gMm*Qc,:TŻv,BvOwhr Vx{G9眳ȑ#֎X?^B@@.XH: 2oO_}hUA-ZXUA$o'{_J^R?Պ2يhOHr9; N8)}ry& ((իWO{^_c:H(Z$"((((O2U?׿ zwsK06vy[>k':꨷"(2JB 2 דmaOhyG1[lq}{(Oǥ?= ? .{~ \d!Mn;:4w7M2) ?-?Y$ҵ"9.zޗPP*?ɴ~W"[jfW8oWIpθH}B pMMMOl7H0q$UfS]]mmW^@ϣ/ޑ`Ơp!ZG3wR'gce3JOQ,Ȗp΄??~ry&jTt}}}IZB I5Z POz pl豾Z&}*_.nk}6p*l#ʶi @ a3!H#hqg[7t -d-4w_vo[y?5?x^*K'LePO = |}&$ C୪drP#8@z"a{{&9r 3I"v;¤##(e(ǾȾ\Ź^0lvL,o7' c~)+cC麆>8'`;@Or{ >o1o}"k͆|g%a$5 \ϼ{:Ь"Ch߮b}9W1\)ޟvŹ3Rikk34y+Ҟ3'`;@kh ]+/},P*ؙBGĺKHNBBjJ\򦒩_~e*PSST==MЧ;(mPn~q][f#)L\Ja$bg v "%lΑ -eJ&% .r< {i뮻ҁ Z[[{3P}@OvRuϛ) }N}nkVܺ(ڵke͚ղzup:OetTp;SЌA&^6v4rJ~M8\sz#Z?r=󫐭hzsOog'vM+%@2R{2qߝ@_ +@*Ekk5`vOϦS%ق2Ԭ7xKكq9F YJ+۱ʬ =z8L6gx@#I`;@[nVwٲRZ}>y٠Wv٤c'}1 ρ܋ 1ƕ!N744%l9 ̉|55UtO|ё5O$~ײ¾^ b\O9fxtF*-gLß3 y3D @@OI?Jŗڒ9F.m_[+ W={wޑx浶9e?Cb]C@^<]Z[[Ay,Eu4븮vБ5$*LI'>d#*?^*DP\ ~R |ҭ*|= k[mW{dZ$kȷНlTI:T=ekjjzkڴkqP We}ވۮzu@3|@qec?w PJz ^c[@)Xߔ\(~O|.(]+\.we%[?uorQm~* i H"'w`cPRm؏',t=!Jgm.vDȾ1x_1nj% f̘)̞Z|W_Ə/;lfa˛ GR(B;bG;}啿?鏦ɰ:mlTv~Օ1J=L v=WᮕA:ߕ h &)̓fzb83@T+r.%)g ~>o^Bs+W뮻 M /D+@w {5kW\%֭l7ߒ>i}\S!… Eƌ.+V,ocRmzywevegΝew w C_~wٕGJ%?uveK5P욚K턓|uunJ!}=?DI-Whc ٳyY;k :ӧ10a7N*++@ϓoт+ zJ'4@O=t'?-z , 0`UP-޴(֮]#sA鵄3@vQJ>_I1f:VTT1 T|P-_R7ޔˬZL ˦]w"/-'< _#<8ec= EO}?o][o]2vN;(Gf͚}Yt~O%Wt>n#,<2eOvm>fÏ;3\';Qga`;oo:裬7nS3?X0>C+x]'ʸAbirk'7L6믿Q2nMjG k'ECD%ôhS {f]uG#}>‹S)Fra)>C׾~\>~Ʈ*=hk5y_|)1bD.߷BS+n?}a8㬘'( Iwž|;[[wV*mV 1l38c&8/ -ynWWXD:耘 }W&Tox!ɾUKZ%}]*mc9rd~jhraÆʘ1cA|un A~«v|> ?q!D=vEPǦTBkbZQQ6Y{u@9jjo^2Z?ֆ,9sG(A|t<]C ghBrBᷳ$-"oAO"'#?:Bxߦ"O|gd+Dϭ&O>oVm.hE i jK3gnv{H8eԩɞ{.ɛsrӞekxK>X3V^̑#G KOgy!WXs;!|yRAK8XjSL'n:k/_P. ǢE[τ@l2y.2a0 mŊio…<モk^~dذ!4Nx|!Px |>sٯm( =k'ӟpd/~qyt?o?z˗XtY,?ﶶW++z[xʤ'le?iaK/]$sHZE{z;ֻロL4 hIg3AYbEˠA7Ѵwh} 2ct19أD_&_-*¬n4(r˖- {/uuеk 7;+s9a3d ^=nsv Av^^  uAI P8mL|jmMfʃ>lGǛJx~'ʖ[n.uc|#ϊ V^-7p_}^W;Xcݺ`fҳ^}5yǺ@ /o>tVD=nmC3(Rܿ D\x=ryd?مQwׄ3wqǬ~*9sMz.Ze{|\mmrT!m}:xq ~ߗc9\?}*M|'ٰ@yNUW]u.:9n#'uR7p|_G~8ssg}xu HS@9Og J(dJ ;?=]&M.Za{]sza$y@@!W6N_ Kh!Pdg@KjjjZMc74]gMzqS eI\#%ϺQu`֡Ctl@iPF*++W^2d`d`U=Px+j0'kHPdAKO D @lC%PLpvRe@ N88Dpݳ%hɊ\YzާcyVۼ͜}}g+&uH_KP\R :[9quq2tP@Ϧ'nNM-%KKKKٟ )&K19Jx??VswXtX3tF?}qi?N8^P"{Oy15:ujLH'GMß_j裏̀:}'r5Gʹd]wZS>+GO=]ß@G5P@̙\: {ӳ,c7!tw}Hݗ}Jݷ}L׌?}kl| $wn$<Ж4i9{ ~N;Hqd; #W@=&>yfM? ]kllq9|ӻ/wz@aK%t1=صaz x-  ғ53+NwUTT*s Oqex4`@j`4sLPؒ9nf}GTұ~ZZͤˏ9Rv" e/o>* Nѹ_k/OJ eߡ] =n ;$GF@oY?Den7?@qo9:(~@Sb +p+KMɌ3>j`=6O!Pg%P*r*oTWWǼժa'L6 r媘j  •\Ǿ3 e qHo#dc꾦s꾧c:Q#+cٷc< e|lZE/lȽ'd m$(C:;LW_}=>K }ч˗_~iZ9q山Jݻ?qnh+ڥBj+s @6T6LO? Z-@~@ yz@VHeL =@.rX7K[=f:1nmw @*t_BEAJyyyM{#̇!CWZn[m&MN~_I߾gcxͨϩl>s5|G5P ~o,)ÌD 4ON3iXH;F%P R@YзoggvoEk˞{egӸ+ʢE޷J T[u- ogoXƶ=V[mIȹ`|fTj   V^hD-풶?%tSt̽e|LK e!(cƌzߣ>&g!e{Qd3MB}}>_L-ܔvg G HFX?@ax2yG?bFL׽' +sU>x-W^y-b pzK/bDݻ)cpZmȱ5X3jHׯO/}T{3u82!z\;[?h!PӲ*$|WMnǥ@rwK$VUU%[nL45?g͐?cJ)/v,Y<|߉/\r 8@rA@W9YsCZKu㺺VƏpLrAON^|r]@npen;| o햨m|zZCcС2grv)\v Ɉ嫯2˟|2x ISfgP/kǬ%D l`dRE=q\:`89szG0ZL4W\YjϷw}'0rrH߾}%WTgL |~s^655[o5ڵd x4rw\ڡ+4)vh//@uԱOcR,b?<`ر$|ICǥ?b 8.cC¢Xv!ˁ~/yrDFehvɕW^@6w>.P{{gS>>kx?sG8;hL۱嗫cMrDzf'q}M{$vl'"{5E2(heɺڪX .^zeruȨ"|tXש pHuwul;3?q-v|̛7O֬Y#֭7U'}1cʦ~@:eԥF^* G}ŋ}W܄@O:qX@v/@ĸA򡢢 n ˬkon` tzK3:Ryu; joo7uB2lPSAO o@ iLw:MRtu]>)#gO@}>O~TWJ]]PHjkk>>ܷuP)BF@lygPaB}Xy APjj4`)j=WǺ!@Tq{'7'"{coqlT ZAK]']7b6R*7^;7uL-/++Jﵵvmln39:W'XVc^>}Y'x?q@qjijjBPUUm @T_] obAdWP4iiiVģZQScQL**ʭI@/c9x/; _hJs!? u=6ҳ&|>@ @W:/ݿkjjfɴG:544ZD+MM!}ŋwT1u<.yP4x7-iFOfzlx],':hu @qjll&A@(Tw]'Z sM Ki fhu_CCM)Ÿ*ɂ[o</Q (.:O}}CVo MjkkXAwe#*9 c9\1/+Z ~)t^YeeT@1iii%4hZfvˉlܷ޶A>@1`FgtLf-w?c1\I6p:x^(lȵ@zvo';i'g뾫s_'}a!h@+*T!N[Ta=/УK?4-=9E=< :(|5<ԡP4vm:i/}voq/p&0zݦ'ztX57{/fO3| }+ǦU{o?@)qf5L (L0 :O ʉM߳wNP2z)@Ǻu }4ٳTW׈s}GrtƂ[ZM1_eز ףrH 0 i֯_/~,YDmj4ilF@:5:н:Z3P^!  }W^KYn|y&mx~2l0s=dQRhyQ{5lgA(*MMC039h0RWW' "DPX8 ?+WsANWi䪫4P!x뭷/M(v~*R,t]^.ꞗ( JN[UUUYqwyON:{eРAgnW{ :D6ڈ@hi uC( LtZ TlmݛV J.\ˢEe…fLV ]q/{߅>sMKKKw[s9SviǸ˿λrmw\pnXT:@C(:|>cAz]wSweiw)+]ti޼yr5ɬYCf\>dLtưۣF$a VXaK/X&O5Ӧ!7p9[t:v\he%)hR!61f(,pyWBW_}-?}:(Q\6]7̼^{]V\)쳷ya?ƛtR7F%xlՖQ__{?t{„ra裏֬Y##FM6XN</Lg!S>k>K1o~sz1g_2l0k)ց]~zk-KƏ'e!9;(2 >6ttݵ[L}e\"Jd-6 %-Zᆆ83ϑBu5\kHc‚;[~+e=vݷfڰrҠ6v&a?"wqWX;;p"Oo{DN>D9ӻɬ4<ēaw߇=F?_7]B* _f̘i/i+uua̚5+=j Y>>#yjnm%N5akͱ#wvԳuK/܄GN˗//# nA=_~ZQC:@_`zƊ>3MD ?zrYgT2^X rY  0 vd]5q?Nzs/8isϽ 6vGG9 <\̙3믿!]tqH{VHv4 q~߄?N?kI3Ί8ܷxb9ԟt "iUi!|m>?yf\w =M{O2U]vIX~ z{W^%?(xAdZ@ @iժUG֚uևhТU6=`uOkךUj?fz-eСeqck;7 l첳 єVh4]vnR]]m>1ʜ`'s,>3rHիμO._CXؤYn(~<B_3~vaVbM8Q? =(Gqxh>yÞk뭷vl7 fhmhng]k~&6m5w!˖[nng3[Jo U4 Ц~vL4<+*z{~%?e]w{9zU+%ɞ{.ƺ PB>|VX`F1:am4xGÖՃP~h$\rPmnCO>sΙ&| !e pG^rտ s=dĈ&,iKx媫.O>^&t[o5m`λ04SO=-?]Z9iKWm޼y$,ұlZ5tʕW^} [?ljh޿d(ҰJ*++I6t㠃SO=T )m ܕu>՛?^.z<ܳ;ZMM&hvUW =f8-X0t]z絕u#CދǦY?Ia?4 &s9K~jh:[PjL4vptl?*(T@a?Ormm]۴Fۙų'yvY.2pg:V$kΜ9aϣg@k˲h/_voaÆF]v g8|Mؼ?&}a#qХQF֪gs1bè_oDg Eî<#M8V[O6( b P֬Y~ ?x*wQ[bey<%cŊ2|pIV&95R}vw,[INZK二=2W+W;-ݢq~v[lx2u곡y /LJOAȵ'i!fB7x˴֚MO[=]QD !3`9أ͸1hV񤫩)\¥%d]imm ]]]-jnnt47w+i<}j咶iW:γɄ8K۾dBzkyPH_ F7д#y5~}Q3l䵼^{]k ]ןs:GBY8}c h#7vtrPgϣZf= (3K}lf@TmF_~Puβez;/GstrwךmeVQQay-3tP2'|pXO4ݻ9ZǺ]ұiԨ2ajvwZ_v}7S pcBsw_ns/ȯ~9L[@ꫯ1!M}''nr睷B$ >dzuD.eK-Jokl;8/Nq2ᅲSN9͌SYYرK~S$rkJEipWV ŋVz NMܤIʁ/S>w=Մ&˗QG}lmW^ygG/ߘNNÇo vh~?&443ieUss__&};t 4:#e73u+V=DZ#Г[zM+oYg4nE@7P+t?Wҥ뜫7?1c8i22bpIVt k & .  օ/{dB"ϼְE_/2k=k悶b暫:lgРAwsnx'u9C\N~7|csri?[N[i <@r?_rQ[@(ti ч~@zڹ2m+u/ q>Pܯ9(׿3-2}-riIo1n2~ _bE0eM66a4<{Z r}Zs1GPql/gF[Wm+Bҷo.kt'F}|yy #***f֎-\ ikJr+Kmq>15-3gF?cL)$Wg}N'@,X`+޷pBYjO eMd&#$5j˕<r@"|eZccC6Y 1\z%ȝdm^Lm>*V6/… ǟVrׯ 2o|yi{;l/0|ywd }t钰֭ŋٳo߾k}&>Ǽy' ULaf~㥘~fžݝaOg9 +T_fiMmVqT@Z"ۿ?\j ֬Y#=7innxtgr8qkɆ_~T :$:u_1r:6wU8t߿}Z*nbr3U^zݞv{Lu=#JuÁ3--mN&xzbA-"*M7\76llU8grI?K.X=.aK/vK0n=O…nnF dm'w衇ȑZ5fҳ&] lڢ{?mݰg=M6Dvyg9䓤w>e%}'=pя$o&M>Th;+o>3QKxN­nPtGt_HtHt_IX-lƌa[wy7tfʆny**+]t\7,l@SOd6Gy{_C)|l{7iҶ2tаy^Mτ͜9[ўc=0?Ί ԒY,5G+tmuлw/\!Гh~}E֮]ױ3Up،  )R/6/2vph֬Yruꞯ*t?s6mnMX$ *ᄏˡysJŋ+;y"1Ԋͥ[|y}ZUMvIssS̪|q~ aODŽ=16 @R2{&rҖf vV8xo2ml2NCStӱfفI6WsMc@cE t'ma.uw<~},k-xU?:̙lTAT + y[BCCq4z=fCQ H̜9˼|8 \dTUUmQC }裏dvA2GqqǝfC[͙3 8ќ3x.(qnIZWUU >=qN =iE(P3* IkjjJ_h^oY*9أgynm}-Ԗ/_)SF\F}˲'txVK.|Ÿ^?{jݺufJ@>| b"iH醬VL0Aݻl6fR| yƚꫯ-Ҍg4sI-%˖- v]fLD0G.}m^K G/& n]`n@t_Yfr oy1s 6pv(ݸnX9ئO!5D7o]?Xikef@ztJێ똰rpN@T7|6oM>fܸ\34$y7k_ [^K7jMZs'f"t{%Oɚ5C.\ >?43 jž?7|\m/^e(&Gh /mU@ZȌ[>Vp_)s,R}7mJ78c6tSygCX@[o E~;ywB˿{f0,X.Mψr-$F%?N[o]NâOCfϞm&Fjjj{l`GCnjcBӧMzmmVu>_9gi뷾}{w9+ :ݷ}5k֙}.}/w G$eƌocƌ2SWW'Æ gLlIx4PhG×N8.kkʔ=XypSsBo?{eurV( .̀8;.K  @T-a  @ VplM7@jaL3ȟx`$Bapxz?PH"e +Ѝy4$ ٜTH:W T]&.h9K䛕mtO4=P'\"^v^տL)&ˤxcJA Æv΋+r@7!T?6~@陱U^Iik}Rt- M{1}C{{d*g*br)6e %!@ tCRg=;'sF@rdM* G'=*+ Hkk"Ӎ &UR:Kö6AucV4jWv۴ʚ[3婏} .|U=R=5J|ӰG練luS+ ]@Ң!h=6ޮ(ZSOjdr䶵. NکLO|T/VV5@J?cS n'VV8@ninn6'?mɶA3I)7W}vUU5G۾ u뜡?95)~vE+@q$-]`~M ?^GwSW?egڹe>>FH?; Z:Cv3F}\E )uvswD= _\+_,.ꕎtVĢiw#v3ϲP31mB Y .Fi69tW5_!(_kMO>.+We˖>Ƀ 6l-'*m*@yz)7 ,mZ%u1ǖJ+@YN[)FU]痶V+Yf?>^@-\*WC*("DӍޗ^zE..7ߚ?5R> qϴuR?]z?6}M}]a?u=nv\34jݩTi+8 r 9Sd__]΁st )._~U' . 93dѢEMג%KM_l ]MMMn]8 KdR:Zu{6tZ9jܷ}E_[^@4IO\Vv9^*rcŭl}FʩD>|fʉ'j* յ ;[LG~c㎻Ⱦ$td9LEg/<9s~,LPl/oΖo~5.p~tt]스@G{:i+8m~7u, B ڻ̫,+C3GG`ק5UL<>cyϛ7_[o# ֿVyi@1?ZiKmuu V@~EV^Cdp@\ ȗKn\T wڲM[Kh۰_2RL\ؙ\<䃶z:Mso&gqp妛n:CfksߪU䢋~!3f<_|,[L{FaÆ*?/eᏹ FQIuu2!ԹSeVVVn. ~'$B E?WK75EņVW- h] ˊ+';e͚3"w&S)>YN;r][Ϭenfv?=<&XLScԄVr}Иu2IJ\7:>c+ѝt, cNnb&Y:ziqG^?-^}5?m1.\d=ҫW~yJ_~\e駟 ǜtcɓw5gB;?KdBmY#oZ)4N6pxm|~$pQ-#BFw~ 2]R~䭷N~w%{t7ѣd& gI'qZds}MBg%V-_",,Yh PdQO6bv2jHٴxk''xpcܸM.'_nL=. _^{ԟMJ:H f=7pDe3RO#s5nY޽{~YTVV_6/>|3 {>'VFn鲺\#FM6|^ۧ y Pl3F* ut>I&酎v\}Ӧ-@BkMy_\qť2hȁ6=;gܬ/􊹾@AE}쫯&^{SMr3rw-׿o&ch5'/[8wtӱrOl0ٙѝ b)l^:Q?`$ҠAL=-l O<g o _|iw.l3Q<$> "q啗oK>isu7Xa*{9[Ox- =e4f7|}oe֬/d]wW]orʉ򓟜&eeϜ%ZQ mFUKuqDk]2gt ;VodW58/צŽ_V744:0Ҋ=A٦ :A&tNΊ#~i`.[Ȑ!W+`=B\eCuu K/Ǭ'OYeg e e˖%\ Yr\z&ѐ@g^W^yTS^^.PB ˬdؕ/3f̴B³T?\iܯS jjeƛʜvO]w+Њ. 446l {Pn@>}Hڒ`k TJ2fαFI ;ƨ8s=IkMmԖ[n.l <48w߽./? f1e&O2?9Ѓ,駟Yb+%Wڄ ?D~ҥn2-ȲQUug0ȅ^,쳗p~2ivI%Gm??j̘6e|hnzSUU@ZO+~/lLt'\>crg}+YZ/{=ZOZ?/Lj뮻}joo7|bVMi}=`}.%]Ԋ;$Oé.T i@FaB'(loid­ [p]]oܱ[5z;r* @,TQ8txötҔw҃E{[߾aٷ׬YVK6r˟La΃JۖymRQQnϷI6XHz' .{駟)f OKuuFѣGݯәga/[<4nN$-wui6nP&4ԠJ;_16M)4>L:SL:;QWN;hBtE] GqXPi4pAeM_ _G 8s59p[W?g>2 I QʕhSiŊK=9kJ}zYǒQjE25X5Vrz!溎sɁw{ݲvۆ·*1s.Ž}%ap&/bUsh 03dt}n~vY{gLDk׮Bߧ^z\ja4zFǔ };C޷;XU /x7bPՔ!)n>- X}mmw-NL@?W`Ǘ4uYq U#ڠNZs}*Kvv$r~#wyi];[iUK<'bڏimv}-^|%I?==jaƝw*V_&}̜,X,=OmFrYeDfI! cl>͞=\j(VHiұ# :D[r8u$(bt^gvQh@n%IltBzT9XPy=٨Bh y[m,^2[n6XL7Dc >E&P,]P|֖]}K@)Ꮓ/P4Qzg*bMcƌv,sχU;t]EdzIF ;L zW>޾_8q+ߴK evxcD{>O,XhӎQ5klɶ@~]1Ssٳ[@nKȊ2C'p&R\bKU_^VZilll0m۬Gu2>FQ'u@H(c*:ƀbk.'sSKQ Ɗm|ms]%ޱ}+>p CקN}6cRwޓXjk;\ju5yO?_YQ? s=R21y򮡶:M*ݎl7=j !ZpDѽ'fթ<ԴwZW0^?\A`G]? {Zc fRtM^#^:]']h,Ϻ6]ccZɹKX}}.}N}'r(1@rŘ ASluuy\ױ[IEEpg5G2׵: s:ͅ|gf6S4usr'ɴioe7|3ewqGs=MMV saʩļl>|x躶?d|`4]W^y5T gH߾}b>G2G/^b!䬞IҋM@g'gqr˟oc=An鏲vʮ,M46MsB\{|CX?kt;Yi.-Y9QX@hv h[J[Th"-g\lҊ\dW5'ncbd]v_~E^{m9mWp=;1***L5fh9O5skoC9 6!iSN$̰a믕/ʼuh&=c`M7]w\T\y = w/=te~Zhw3V(5VcKS\S'Y*'O s뻎䟶gAm?WjG+ur^֓t >gWzVT[T}(nT(Jt]u\ d7:NW^yiϗoV>{ɲ4q*n lVYw񗰖c\pyrGB]dvȷ:ICOfd\{dMdž 4P8S׿?fKw&8Nw5ڂB l%ۂBn#-Jmcw7ߐpd~湔ߧ"> A80s~,3~6"}68n(9}@#XnE5R(t]t: -{zRֱ{"+v󯬬^z}m'@vdp*_t]VO$sN>_ym](fr%9ߕedm<9yt9s2ng 94ϒ譈>t Rtn% Zq:ZS&s|^Λz= DݚFO6OL$ݛNF)ҠϮJG?\Jޗ{\?3d뭷ܴioGM0N(%LURhNӃVk[],:(;JX@_p< x@':}s}\~ {gZ'8cܟIg F3)c]1OPeeT544JssS<w [tfCK{@Z}X7w"M7+MٳeժfW}6tSӷR}z˧ Zm4a 0Zm1̐'Goj/ th\wL%= Rq?^cu]u5BGihT-9n}@VOz_WNp/U8]B]: kz r+Rf} "Էgq{*~\`r\q@0 >aP6JKKK窭 !h ]O^ױtB@ Zsk@0Vv*j{ٲ20tYMcWx?FL+6om߷Vk/o7^^9p[ﵜVphURyL߫ \\2?rs喧&dʄ2j@ HMyp/+-2kA|jhsivTuTu\jm߮>lTAnjj6UV6[=ut555YPvɻV_@i,Xŗk_/m_+u@m>!uZ twSW{UW'8P? 4;_e]D1G_Uد#F}B8 l:R<Z ~O'UWWIuK^P@Ajė4'Ʌ?րLKP|~ :&Cc'J{`2p lɛo?/(xFUX@yiv fpsɧ ZeΒ6fe,]5~injvhCVw=&q LHdb^vˠ^ٯL6R.[Zd=򫽽=w[|0tu`hIߛˡVo%痜i+Y*; y.ƮAN@+'37lܕe<w\11oYYuoi鬚F@ھ9rK6 g@׃+j. ^́{KKxF aP6۾9@X kUE.GS|-?A|?bD@@IӖj l@Cx- ȏhN1hҙ3om:OǖL̝vX %?ţJ~4C(;V@eDU_6/QchQQß*=T\~M\@V2cAKXn$ T/ Vw1xrv|R"=@!}> 풹oV}M*J~ZOda}W DY.mS @>xO*G9"UVQP/{Bv{{BF 8 bLPY2:8IY2E6Tiooz)4NnNug@a@BYRU7UCL+{,J[UTh+Ei󋴵vL@e[g'myM治C uyef@Q*ko",zZ3/N_;2uubA(x\.(޺^ hQ***"mFt}bE B \U s*+sॼ̴e}&3i{2ymܵ3S{{i+ǦYSSm~@1#PFhg( rmV^1Zz+jL =[SSSe4ii VdCUUUXC"P!ohu[-SEj*jhd2 ku(@*e: Y?.P ]2eJ@4 HVkj1fA+*hdH}ѠB `S!r!C{LO'~+! z\.-NИAPP1կhRn}5ZS{@9^PAYive.99ߎ*@C׷<ƴ]ė <@ P`LT |Ay/PO@> J!РcL@eA+ ߺL(B=݂Ljv[hc=eڽG Hr pʽb-y @q!(1nK+p,1 EH<DN~?@ $@T3ITfE >y܆j K!׹V3z@"@ڠ;jPO'.dxtji tϮ~ vp$䵾)6R&ȃc H@Й#t |hm!1*~F *gɰ^dGՅ/&?_5m  1vĎ"-mj{io K4777TlF @x/)v {baY/Q@b )++>}z'#nz1#GZ;UAbMMML^z G(- Ы {-OVVVZ]@v]{ 2ussG,Y*?/yW`kJ fkg堃R3V/8U'd/?NI=no\?唓d 7g\Oβ>6ɻѓ3 ޖK$F 8I  H7$pf g+(`vM /OT.\d=ҫW/HOm^s]޻?6#g}\pyu;d;=yO+us%j*mÃ_uuuuEߓ7}^|F]NjV[[kރ>;{}\כ#G{g~},Xܧ-5|E+^\2dKuxg{aS'h ֭[o&/٣.ɢz9~MLgKxJ=<3 "OlHP(fw:c,U@@z^1_s~HAE}쫯&^{SML?_zgnM?mrw'=!OlyWͥ/_R1.Ry7m 4J~_=.k֬ Oc9R<󌘡ܹ_ɍ7,|2}r')>yM ?py O<7 693f(_~9cnj-] +w7_~ݷ-K3mjjO>;*Ȣ6]w?D( zڵk3~"W,}AwRgݽ^8z{P@PA@[4jF1v{(M@z{;~޽zwlݛyy'''GU =VQd=,FDUpD23v0U4%8GM+w^|"if3`o>Ҹqcu]gEb a@/уxL^=Y9k׮oMCO wcРTp?8g}APCK*lx㍷7뮻iܸKڴi0ۓO>t>%w"33CXG˖0a7k؆?Q]rM ӠA}ԩS}֓kGk N=0 Ԡ1eʏ}bFDDm(gJ?ޕ M^#a`]`Eo9~gu;SJXOKD*fQ؂egT<nyDjt )Rq.Ld|x2oЫWU p00z*{a?*II3Ri֭U.*uۭ$wc.]&O?f[j)<ٳE˽ޯ{It|׮]} g1=HݺfJSO=XTY5(K˥^yy#X_"c̒x6L^z k .t>˽{4u@B=P_y1rqVFo9Aې3 %I֭UǟR-X7 G駟ЛY>@(]%""'ף.me eU3J"W=^KJJZ6t0(Q@X={}L,;7%d}^-}CDE_6PE h +2wg*+kƊJ%￟T> o޼EΝ;eU:J!qyG}z c")纯[˅?RA ~q^{ ʜ9sU^&NF9T0drJq)V08fq- 3bp5UE`_OB?[o1I'  QuW'c=vCf9NnA2T!0" 8D;NPu,dz$]̼{nؔ`mrƬ"&(b@G0k~ >vt@;] 3GK/*3gR(U-Z>t萠E B.dM4E* 0@VVv f % tgŊP_! 8ptpBHEU(>'cC)D+L艆hlwZ(eWYx ,RבIDDDSYSBBO]Z5mΐLTw~|gx<~~("c g֌kGJ+s*$&Ƽ3ⴽz{RReٕdGϞv@E)6}ZZl龎#چ UIwW@ wߎko߾r}.02k#HoߡGSӱcGJIIz&nP_?' 7w}pͲw^ÏUe-SN.hlwZ(o>FCKȣʙ>ߏo}[zbH8!Xbb@QeS^_DѬYUz޻f X0~7|瑙`_` ~ *k&2; į_}Hz|`ZY|9@4?|ʝTF/88 %\y***AO짦u?(2W/^"gϑ!Cz5ݡ!N5a e∈Iaa*YO@C#7ԁ KUz%" ƏD[̝;_93%nj9H߄@I' TI]"c z`lٲU]m&`g۶8_*@)7|xtϔ)?z1gŝ\u hxONSx$FĝAͻςs|Q9s$cǞ4{zыHo`U6>_Ej5zܻw<g>ؓR[L:M9g58Ki־=(⭦3.)cN\x}@ ""xʭz~0aFyJ@PaaZ\"k؞' հ~y樐s駪Aioݷw^ڵk#;^vqPbϾn]226ݢl|76(?*~-|>Q8T*?V:J]tѥG֭TFw޼s/5\lK.{V˖-Q͚Q*ӭ:I]w -vء?rtU4du~ AAA "pFksLt(ϗwgx!3~o߁ЯNUo6޽z;6l 5 y %"""y#e3*![nIڴف\A)"?L6Xc ;o&3t 's+O?Ɓ5E_ɹ^^ꫯ2*W4o\}a{{?j;Ӧ^cĉ=MDDOYLfݻ>\fK`b_DDD@DDdaAR+WVG?oDy`L^|Yr[_`w3H0 ճHӃjAߐ~Ja1Ν;o0d^Qo@=2todaYE䓏~.孷ސzz|[j)թAF/@?0|iHm}u%X!)===={vټy3:` <6ʱܹKeaPеkwIPYyu9oX>Oqq*Y֨QÐTEP -k'XT!xuVU2;l5,Y9Ūm{Z{ADDGc6mbwԓx^`0+%^pJͥ!#nwHFFݎ&~:D?H0󳵫~ 8U}N:`@ hQcAgkrY.-إwe%$}sKmղe 5Uv|0^B!RZhHI'} ʖy. 9 ֽ{7 Wi۶Mg*󅈈(>,;;~4Ν}Ox.Lqkdy% (!y}әADDт3WX)?wǎTy;""xRTTn ^RC f-[Y?ް""Dk^6l6]wݙ0TDDTN1PKѣnj.5%J2 @DDTl޼E}U&;S22`@喛T":>޽W~ b'm*z_e(1Kk<$^a0.=&""J Q5\W|M! .7|A /53(#"v-7…'//O֭S]/))GyP+{DwQuڛ,VZZ&))y/Mg"15Q`ŵ6mZ˛o.~dffJ{E:y'DDDDD$)"(aV\\$:oTͺ3(!JU|W]w.ـ W^yMy=!""""J$II8ʒxyKD&""J""ZϾz:`#Y^yu!""""J4)))5Hmu뚈(0DDD )33#8po޽GQjwP¦ÇKiiMg"]DDD ""JHG~U {rㄈ( +%)IWsB(0O7=Aa3 @DDn&ήQgT; %dWUl/mk.7$!"'*"bWSqql߾CZn%5 yPslqѰn@DDT``C>!kP*+Cр?R]4 ҹsgiӦ񣬬L~aJrr GuYg6PM$Z=&k֬1"":ΠDT,vSed_o[~= R9O !߈(Q1DDDʀeڴ xL/JZn-G:8С>6@ۼy ԫWO.肠ìl͛7LݻIFT@im*g3իA^zIV-wzw^#Q QB')X˨!;иUnwիWEsvQGRSκ,딈(Q1DDD-$ .R7(5Lk0qr9ck~;Ռ3%Tu( :u 9WQ~A:ԧOoY`BٳǀJ͝;_]3Lر=-[Tiܸ󄈈(.uQ%G, 3p؍CBݻwOD?SN|""D$""Uڴi-o~a jx[o^8evڥJEy,DBudÆw^~Y?Cc vu1PAݻw Qd` JQ N3/%Kkx+@@Pfa""D ""uzG%͘1S֯_/*; ##=c݀+/%%%Ν; 9zgd.;vk8{ 5ƍ2{vVP8jI~}Uy0jj5QҰa}iڴT4`0{qu^7okXUk7l@`\6Tݳg,ZX߯#'|rbUj}ses؛:u1f͚-窠AN=n0D eleڵpB@ ,_\kTC_WCN?2x6ndv[+t@m (aJ|޴i<!7nV߉P 3pժUIm۶Qߧʄݔ)?ÇӰ=6}&9ma`@ﲦM눈Le\bMK xq}uV\3؏ضm* =_%:/^Ǎ;7hq9s@J!`Ŋry%V8(o"sP*˖?n~|^^11\f%<1cHvm= ԓ&M1[P.l7|ӜgX:`,65O#FTƺ,3gֵ5kmۍRc#-ZP1o L&ޏq&La ]P`I_¼ Lww֭*؅?l8r䈺X[nT~ҥS""xB< xs ڷoo :6l01K$)2@3'5LDD"a;JOϐYaaVgTUgYy9g<€;E0שSgΝ;#j#P\\8 7o1xE co>X۷hF0C nFeccT;d vکj)S~T)ÇlA A9-3 pXlʎA`֗gܸUȑ<r$5hܯ_9`"=M>S zc=2Hu0ȁu;ʱG=}Ժǀ嬳 08`o8Զ,ٴi|= dz1MoB=)(1DDU31Єݫ2M21vϾϿTMU+\W劼kNJ2:_}j^`Se `8Qe rl{2U_ ~G,Kp/*Ѐ6ᇟT׭Pn N=u6 {'{`pP=rF i`6Ygv* QXoxFɭP@X_yD6ҋ/XȈPbkȐT~-(u,Szuݷc;77W6m\# ]Nt2~y1prT=>Vc!ὰbGϼy:M @3ZLpo>W&?=*k 2X.|aQ;|W~69FFaH6c@@@k"sРsv_!Fݷo ?fĥS 44A,7;OQQg9x85V ke߰& Qp@_G8k*p-0uS&pЧ~L!"BfAWS02v0pXАAWW%md 28z>!y:e> Ha`|$LXP~1 :PăSt90d=Yd^ =0o *r" ApDsY"@AH rokР+EN~@R )' gTy Fߏ#B͠,u*;F=ztw߇o(z}@SN<(ALM3UN3dv3dN.oS>NqA~{ PA3d4?̲oDDT0DDa :@6Pz"L^xٝ}q㎿h QF2)HEf͚ͨ}LJKKTuvޫ.2ȶy5 K@gYLPk+aLjܸA6mӼ̈@!AOpBd3EFXofRaa@79ԫWO⋯ 2;-e WCo4f fxgD % ulH͙L:M`;ܳݏՙ=FAo,zlLɬԏU(M>Ӭ ] e⬺vjbʒ%KT%)䛈5mDŽr‰ g,9оnnp-j#(d8@5xL|7l1>Tgb FPlٲ=g?ϒO>8h)3Α3QN:U5g5k<Pbogc^z((d~(kqF+.S٭g룟N07SmڴAc}roep0RIV^8N-ApЏ ZB*2'רX ˑ%[fG?6"63tAF NĪ J w}_}WQ:Ggs~J@T RZ7UFQې`u7#I²9sʮ]x:R,JDT*.. ]Ac>\ A wt 8 x o5zRQ"`B಺喛ॆ ~;ޚ w;\5UHnVۼK3<ƼP. &Lx&ME]dh#@~A5(ABŷ~,t@ѣG;oly)փfLLNN1O}=]RJF[^x߃pсXMB x M(>h ?:[(X9UWO8t 'Ȋ+TjDBPL$AL[7UF1X׹sgYx6%=r[gosǗ-[f:e]у.Lw p {dY@~^ѣPEe<_aDDD@D05uԑ{-^L…()g\s@Jh8@Y@֮]5hӧ VOÇo رKBr`Æ Uj*mLdǠ);= P13j~ի}|D߰ŋݻ}ߧO/w(7749bB):+J<"HȤIST# 6TelٲEVX)5E375}`jO/ '(TȐAfς U@}ޥ:u2 ݻw`Uǎ2}46ms{$hFvuvUpwiW b9.]+]ڲ:Ŗ +?Užzƾcrr19xsJ\דݫPV@a_Y>Ҩf?4?DDtad5]R<016j>pq^|״iS_$}t:jꫯp5\%@j|ޡC{ubWjJi޼ v'N/Lrrꨬ=/ZƏ#娾[Y~.jm}EBl*AH5k+{3w+ 2~ -XzP.M4Yɫ)zq'_zsCYfjp$g1\>c1c1ަFJa To4=P=)ҫWOYhQJLZWv)|&=zP03,K}zٳ룲p3P@n~o:/|:o.)--AVmTC̙3ߓo@O\| 'o dT. C$K/(J"V>( H۪U+zzTP=03lgʏ 2P 7'@h]lT\\jlܸZ ڵkrѣ$\ޙ,燷.>} ö_h (MFg,Xu6d;Pe.+,cGٳU.xb?5l̥^2Z֭[AسcBofyO?-`YtĉU; vw9Z:SɅzygD fgl?4~oʯCyKMBV_ 2Wmm'&td ˍ̊D6#\bi2<}B |(qpR.Ո@ Y-ml(,]9B//d "?;xZV""5ey?A""_g[BNn[.riѶuy"xͷT ehzɀGVP_Pw10?UP>0<пyz-j.S]ǠpYSea6 ŚY}f9_.c*Sq<ۜ"X((AFc*X(jjUr 06D)*d;Jl#wac9ۣ\_UJy=;t 0](댬qT0,9TV6Nݳ'`p$;)M+/ W%X\(B &MK<l$N<6[,b_"+StbeUeE '> խ[א] "`T5xQaB98l< g[z U/Hl_o 'Tׅ5ԝ(\(yJ(߈~YHDD;󈈈(0DD!<:77W;_G*@ͻq7jTS #Ff͚Ck6ddw/ıBeV-Z4s>\N ӭP(M:?OEDDN@DDD"tD~ÆMҳg߰aC۶msg_xJ@ z!(&Mj{x<aƍ_wݵr晣Ν;]䝿;wj9>!ےaÆ!""JLtZ#"25kǮZJ ۷ʇ~qرc|2Y|;,ZDbw^gŕܹ>v֬YNOϐ:QAD4jPСC{iݺ5?DDDDDD  " ٠A'y{;lmM6vJ0|C2~BDDDDDDDDDk QГk~ؿcYlr7.K\Z׭[?/VVV&DT}٣۷OI&ҦMkIJJL13z eV>>, 6f͚@5S @zN';uVV攣GN?45|B>\oժQm۶]|!]]mbvo׻n,5ݮnm>+gX$":N9u٩SAbKu\Z' r[K nwcEL;촶kVMDDDDDDDDDD5 """""""""""Z """""""""""Z """""""""""Z """""""""""Z """""""""""Z """""""""""Z """""""""""Z """""""""""Z """""""""""Z """""""""""Z """""""""""Z """""""""""Z "q.K9ۮ<$DDDDDDDy y<[q[Df"UھSGDDDDDDDdl,!" QLagTJKˌNzYAR+>:9Ncru/eׯ'DDDDDD{ǎDf7ܗv];XS[%溱P&)a\Ob b ")..R!""""""":RxN9NR\lޞ$))F0(Y "bA0u g%P!?u\&%%ۈAݺ98?++}ofp{(jC~`L8(V E @Dy)..rg8vIMM5Z!"""""""*8NMNN4***6"5RPP&F (U=(R QJJJug蠟A*((tg@Q$"JqyZ}22ҘCDDDDDDD\~~ay0@e!8DDTU%*A'?jb(|S+1BALD#D6x\L;;;%߈c,k/,,b " v60|~5IA}CšDDDDDDDDу P q"P1DD!;śJѫے5`(0sYY)@DR֝·>2n0oOjX_(6PN/..Q Q";fs*NFFv)--U42 Q@zG]0DDDDDDDDK6]u@ Q0 QP܅ڼ>[,!"""""""B8.eeejb8" @DND_|c+oDHDDDDDDDD{x@&qsb UuYRRf, "@D{d W z%';2} ? Q@΃KJVo{- """""""꒜lf""  "K@t?|b03\. ? ; =?89Izp "Tb㿇ks'6u*x>DO'"Nem U[XuFl6!"-d"""""""s/f2 WqHIHYJK?OA4Rv9JC$!"9|deeK:R[lݺUJKKr5nHtAΖ䀏z۰alڴYROs߇ƷHugiҤ@DVӆ]%1BN#@TRq$qd!_~U.].Օz@'VO?\f̘)vߞ!qΓH"d]r9cG姟'|_wݵү_Hݺu}OHNNyキQ>yWd„w}ۂse~WȶmꫯnQ?|һw/y(0^@D1DDj0Or{,_\#&t3c~ư7_7n, ?|(Nocqt2ٻwq'"""""U"9jgc?9f1#! B<-*g=F:v -Z0d *Cرc2qd)**'|u&M"/DZl!#\'5-K/u~5>2l)>w[7oq/^"Oyy6m |ݗ>vʨQ#!"""*  (0(3rhUTѣ"N^h|#efQ@7n>H]?vcKvm}\&wu\Z Ϙ`01bĻSN"? {<逸P4͆}^{uB;^)ۋe|D|%٤n]qHҩin"twmV\\&TV4Qɯ.IIIjBf5\Ebc3KϤIe^h޼w_?4lP]Gwԩ#U}xŃ;e@vFtv5@xAK er,V쾯YCuJQӥg's_ Cg2B " }rҌ)]&"82ID =~\G$(C"9"?zmеku|^PYpTe{Y,A`B՟IFе]+.$pSl* J䌮ڐh}QBWrs풙aLY/}W^~0yò 2Xl޼Esc!n2ny~*wu f~#J#W]uE>S =L8'hڴ*k1w'P~oI9:h<&#㛈(T?"J8*'?Nmo@]G1c" ~0ȳϾtРԥBY7@&w) 7?K0T<={SO=m T_,g}eAin|={݃?xϻտwi &-W>9s|1t9 ޕ oGƎ=+\Z^<=)Dyʢs<P{RM0cLhlV()x]wx @@""~P{k_oyr|#22ju܆GA惆>/('{TMA,Np'p|Wk/o{ףkTJg-^D]"}^r)" sNuS}ζ6E-{z7uduv}?=մh^$%gFlHW+,Sn5kf[B`jdAIHvY䳛Uqv}<k 3j_ݛ'99I6l78mxwf %(!JKŕ{Dj , (RցTu1ppӿ?u:/fd!\bی B[n 2udyU .=0?yKH:jҤIpZ?בu]nJ"-3<~< %;[lωTӢy!A<̮z䬳1/O?MXt{JKKUA@,j'13.S)L.<1Kk=Z됪N9xO/%my<%(!j_4בcB)_JeKt97tNJ_-]L5J{~v ާAz ?sOBב?rzYq(QW5)T(vYO?\f͚ڞjR4>wn ޑif+dӦͪPA 8#^b\$"o%`ٷԗ{ήJE^º:s!^Dښc2{嗙2zHHW""Oʕ5I~ϓE5' zz:ĺK4O0*̃wy&"JIBDpp46gx*)]^JC,jgda}Ij\tĖ*цeO6o">tX`'%wcr-7I6%ޡ̗~F5*cQkqJeh\vة2|P:/t] 4oUnSdbgСnDL'}ѨvڥtY ׯW(iװauݺ֭U<sL2R@3b=]}d˖ܹ>u4VY*?Q|AuthÆ7=pyo([Z?yBzM7姙!沢̙?|.N>S]ׯsU: V>뮻Ae,{ҡC{ukI\qeԩ婧qܞ4zDymRqk׮ʅnDDt|{uFգܛ˰91 5=ޢ2jeg&'zglNM} ݇^DDb7*-&©UTs9x.^B84̟/|%kf?ά̏W_}C]o޼ulX_uZl2$>KuzRF|A`7|wE [Y}'s/, %{Unj9㾱cǨKAoW^y],Y+['xTH;cZJp &SeIEyYK|ҫ{ D/? 핈OSVȒmԌJy7qy}/Șl+R떢坽ԩ{0M&"I QRq=&yO"_M +3OsyO(μ(%p\Æejܹ󥺡*f͚~Iu{́ad ̘1SԠ=uם~$Yb07OeU^jyYŇ~NܢuCyc=)㟍IG_Z-[t_w=J3NwWu+ ?صk{ _Eo؞*Lb-KÂZZ]G&=C*ҠAkz^oNXi4W"":>}\w;F~MnU_j"2<GfQ}՚yׯ+)zJJ.珽kP+|[a=_ɺzIjD"{.`YT7wW89;3AܮJ&d5$f$vkMFFdzp"o(B?X 'z\e7 azK)`>?֫Wz7nREӦ!YY?!}Q9F⋯uu}uH=X!3棏>U1ysB̫oAe!s/ȭ,бc~/O?\Dc{ 3H>/dIa[yᅗ_uյ7XYW;qd?fhy 꽧MGg8A5Ԛ[y7{dWv@X˶I-`3(od%W1?edgO"""+-Q\rQ22;磄wkgX7z0~z]# Ӽys^c}#Zp]sU2|of„we%V }LSI,Eya[{C mҤ' % y^DDUeqvif\Z'z!vۺu)QpzgU^89>7$V\(<A TuU'3ގ/Zam[Tu>M5'tY]+#C b:TbbD2s;W[j)ɚՙT lF(A/-~\ZCׯ/ݺuSI9Jdj+IND鯝;w,&MuPu{^ C)7 FnO~&T $77O=Y*x٣[t{%"vˮxq3G}[G5~Y̤ƨo =&s䋛DŽ?m۶ݘ Xᰫ Ƽa60/S͜9SNBv29ErAq_ӦM~M,S0w(V^}IO}6QVۅ.o(cN:`gh̊?Ku\Z' r[K nwc 8"K '6Tɼ<0،c}%go/]Y"ΒHJD2(bȾ@sUkvP6,R8j۶M[*qUE~&Tevٹs'Dvv"JDDۯ{J>#g̞wͥS6v喪uݱII'{"h2O԰L"" @DpMPp4ېSA)*"҆GRe`dHaMЉ%kY2""""xt{<1,t&PҸNeb0o2B@/5@}33DD@Dw\QzG~]UMm^QT~?U"*6`@){bx%cBOySe\ny^@UWl[ןÑJ&3]2x@DJ"A KƼǺ&""J$ED'livΓXq`6PFDDDDDahR!SټXuެH:~y&r/%y=(D'LFQdx/G3.Hff;w$V(Ql"}ZȒmMa)f KYHVj -ryY@[uls;E"--M .,,0'U^le""Gi$dީ1%C[ 'ϐ#/YrpxΑ^*c;I? -0Tシٳȏ?$?˙3g Q(ϓ<%kyywa0/ֲoX DOZg6U~~ ge"""^: $dɾZ}iq?@7>ĥ h+9rI¥roy]u%ij[nI.\$GXΒoQj²eˍl). P:mlrI$m޼E#]v Jm0cLٶm'\rZm\Bm͚5a]$ѸˌQgUe U"}ʌD)--$<8vٽኇm g㳬W :D*sFt(qeםd7nf-2u&fOrϓKV2 )==MrsZ)ǎLIW̳f2#(.Ra8geJʑ*΃۟HS$OIE ꫀxA)^ZP=9fv*71cYm2[v"S67_{A[v  Ӻukn/YfM4-[Jݺ9ƁQرCv%sQ=|iBէCF@ftAY|w.xu!y뭷nUjW_}CgB(97lٲFRۿ'T]?nd#b a_g֨  .~V.uLikKrlA .J|=ZqL7`Y@Dli: RsߟoI !Sj 5۷{vtNԲ UA'xTjd5͙3W]4d#51/gȲeˤ{*HDգw^j"";QBD3m\2 K>۬p.eTz_[!O_ףڂ@=Qŝcg488.:"Q820W (^-[FWS@^ƎQ՗[R=C׉N k֭tIzz*O߾}A 6 ?ʑ.⥿hyOEn) CkxqCWfu˃? EʦyN\)..xyל92@.$*ˆfxGJݺuGC۽{I ^j͚*v 4jjF.PlU_ \p*1E%Ky+:3AS(e8M) 6qu0}NKF:C}:k`QZ}Զ sҥ S;wR+ >VZm_qqV^^*knYh>l =p|z~}Y:> |&XO>t~=lkq~CZnpرS-a7F[rM|"R/u>عst@kV-ii,V /۫Wرyozua\TG_aÆ\_;bG#c]uMˬ|ay}.,,TիW/IJ 5l@f͚sXvqlU=//Ϙ$WtUڶmX}PߟNtZ>WXښ7o~1 .q&Yz6ʜ5Q.ۓ6?>KϞݍߢV!/zO,7mTN<Y;\>)(c wMgUMj~gT8~VVmk!BR;~)fGy %Sr [y܊ߢ 酅E5yy$aެЧ5++3"f2@F(qKUK%JRzn!e 2HIjBvT(q ?={,78`e hPA)wޭ0f`.))5~5RdӦߪ $<"n:#H0g@V'Oq7=@ܨQ#%|`0 u1 Ʋa ́;,yf5?X `ou&a$OlylAzk}5 >㾕+W(&1`}u*;8쒩Sɲe47ܹS3…dY.0c<-[Բw9*xA70maӦMj{3, xݩSE0|N<|T&Ndy-s  [N?Ts~z&/_lcެ ֠O b3@0FKMv%g5Z># L(0?ch}edd,ҥS\AJfWfcez{C%?۫nG0K w\o,p;٧i.]d`Slߞma|TJ}={̛7sK%%PB`~aY/:^sɒejXak׿2'9oul,/Լ^@El̄ 73T&!Wj''р$ 8YH@:5M1O,a}d~jȲ5Nȉ''N#" Q|ζqʋ~ k1ҿj MsÙ5Vxb?c:#2(80k.9j  XI&ˈ@6p7.04G0 AЩS{d S]0u3*q-,& JLp0AOS-XPeda~7AA۶@0 b4p ;`8 ۍAs9~PM>SVZ69gu>x`n؟:u a ۼy ?,?1nݺG B7xZBkw޹d]~^Y=̚5K 4i SAJl' i=1c8Ԡ<3]uLÇ?TǿA符LQw~.2ڸq 37<竌d`@ގ7K.VJzk|X1ٳQ :ul? !ea9[f~L f`9gs-Zcǎ1Gcw6[$pmϢ~opvl|`!kjȐ9~YVxdnJV>+~:!Nu~O]GAJۊ=sd{`믿S|73#.33I>tVo/N&_P_< n`7< M-?\#fE[YJ:eD+Of{}>Oyk tPkb/==dzrot)1`Ja0nZŮ5 \c]~@o WRQ 1K! z9,zkX_@0^xO|3<XoLJaYE`\y*@ugl cg;rך1l&`Y1X1t?14̓5[Bϧ2ZX:Lm/x 1z;c0_3Cgu7 2umkm*lJlgx|TG8]ż5rpn ESi7!6*|o|Ҽy35<"  ,2AX|Á!pab^y EMpz^ˑuC:7Oj"C;{fX@[AO+E{_,xo1J DD{Dl8W lƲGrU@@'0aݰa*ك$8.ugces3;1[8))1Qgby^4,;u%P'<jUZ > B9AW0$a60@Ud z(ӄ (cX6u ^kvnnW\ywV }U"T^}*>}?_1/,o@c"cc_}>'O E׮]@VYd귆wm:LBkl>V'm8T:0]j CCYL-p-OV"1DB]`]: )27V^b{H*pmc\p~k , ?=w@V&6'j9m*Y^>K*{y͚iTl-I^^Y72'*ZAc߈@D0lk _b*2EeqYvjMvmՄl 3ʅ.ӃL! <Wqv]f O7p@Lk#HDl^Uca2RRRe*`R`_~! 2"%Q X^zQ u6aIy:_I5k c-ǧyiZ!6ې 'e@}kn+ <+Z^ d  &uA7XϢEUپKwpv@s fG'DGTGz1xˠF!de.9 7ӦMoc9ÄeX`[DeT"WR Ad3N߾}UXXw}_Q]0~c Mk݀ۚUhorkro>4S@fpCz }7*_Q(M5F2eu|4hЋ]'ؑې MWlw9A'U.z0'""ٚ  2 4%CD "J86 ~UXA mPƎ'3<}F1~l\ M3lyWȑRT,Z:(='|JA]Nu0iݺq,IG5v k:9~ˌKIvuBˀ`=^qe>gCd1` *e2jȀcRv67;,(Humx]zvuM~-:(8Ugq)@Rv᧩>Y8+% (`H3ib@f+]p*HT}8f]\.\o_iN)CFvː-S'!ЂRxۊ nG0YiiU. oۈNg ;j8"xd"d[̦IW3?DBos}\pB[u1xII,\X+$8؟+WJ4UײUHa,/^|ִiSi۶Pm۶̊VZxrk׮< ekcPԟ[ZByvڪKd? eЍuiƍ-E,*{Sc=~@Pޗ.][Ϟ=ʶwigY4Ȃ Wa=>@7i{Ǟq_M}ju'hI:^_ws/ʫ=VwXg=V3T_@#-RTi/on*^X8'SJf9IOIG3utrm6C\;.=%IMޭ>rɧ75W}~zJSOq~v{pB 2"KqcX<kf7?DDD Keُ}O [FY(޽{ƍMSUdh8`7oXa޽=z- ͜ z>L@"ݾ}{ׯD%&Nj4iih6mV,{VUu.[u:ź@`ƌʅsۢ4lZY.4 my܏ASl(c FI=/ZƏX֭8PGV)+ ɡCUVzn!7<:^,>}̾+zQ 5VV^`>3בR,UvlX~Sѳg c<餁yYeP8[v|w*\ކuF2 zn|Uii2bp'ľ;de˖>EM}*u'7#>/])S~R@t<-Zbv) q|&M?NGwس>7@T5DMԭ}~10'臆} +(?Tmj(1H="Ȗm:>;3 //˗F(p&5t;zP^ͭ'OQ Myjp fPvSI0S6lA WΚgnԙ{he.U]XؾPvMѿ+Сzd A^ P@2>"KRWC ;w{e„w/24̳;͌Wv/Z0 悂|y7Uɬ}{cѣGʧ~^{CZhJ޻w} с%dh` ^ ?Q,X^O|wK =F6s,utZ70>g\c{٥@F ,oq0Sk+A @ȼ;0 2y}|G8c$Uf͚"Yyk;RU =O>\r2yp}Ԩ3To( ȑ#yss# "~GN<@(aCeڴ wQ" {K'|^u,B*Y` '=p`-=M$).,:YbCp*;T;ahp6/1Iɩp+zY~Qgc0O>yGv@$p1J p.LT8ptO$s٪KUa,2P_}fMEY: xbJý [ ]V z35~/j`[KlkU,`3G پ !Q xwABAv <8qz1@p晣T O^85V 1^ CkiGS -vڰKwXg޽{U)mC4L>Semܘ@ЩSG{"dD]kUM}*u'L.}E+!5;vYs RviA) J" A5ey?Ać0\jYludFx-K6:9,ha[nzDT(?duJ%7}|o&Hq !>}GQXeTi=3Z;uc6tP5ekys0OevcyN6&Ϻq:izf/>'ՌrGkOCl/׫k٪K$0g>J\@8Qa_g#k5,"O .:kyHݷZ;00t>A4dXNRuF499]CSU^"e6K}!*/FY/p*4G¶d Fl71xCcpx~-M4!îOXƙ3gy‰f%[y%u{ LƄJL8~rM7?Wa vB8pۄ岹{g1I)]uS!~TNeN`ߕ "UxAFh g0Zo0?"Ѣ5v6< 1 5@Z:źc* ;PIߢ`2Bw4JƢVa\N+jp* pӰaQ럨*@Tu`Wsb "}pKv ƨBeH8Pńw (" 5H\EőIMiFbKa"""""/ ":.@1P 4BF UVj\:ͣj:PE$ \(vUW}9"""""" """"Ooy_+QmQ-c"0E(0DDKM)DDDDDDDDT=\c1}ED`0$Ca[#\e Uӥ.mƀME " "CѤJJikcX"  "uKw U2uiqX*_ "r(  GIɸz,"J9zvU*`:\N#3!1DDr}`_۝򅈈bIJr !"@D&S|w1DDDDDDDDT-J,vc̆(ȇ[^bk6WQ!"""""""B)oAD@DM5;Igי'DDDDDDDD;SPP6Knac<;c1{us@DDDDDDDD_(N @Di)k+ƹO.)P(6Pk>2p%wK!"""""""˜˱czrrxo"@"";Y@qHȑ EZ0\.1DD$ Qz6˳eIiy;$*DDDDDDDDTu(3*c X!`DD~qiWW^d수qd`rBDDDDDDDD_'c1 (t"7ٜƿ rd3Tl """""""aLg1OX \};" @Dv$t {L ` \:2uJaa =<$DDDDDDDdOY+ .(((q >HEP!_&vb]Fx`N1bUME-.w ~s n)U "TE8WyƩvJPμ]ۜtpzŽMډc+B=y8V@DUͺ>GE =aeE1wv*<@.с QTy5u7vh^? i pi7(R QTx(~1/+vb|KBʪU)[g d^q{5uqHE揽<7.=?!DDDDDDDDzYg~Q@΃K){jQ5IN6Hg$DD~\n=X1)#"""""-X]S8ټ5 Mv$%aJU2 Daf\Nv/1DD9=$Q+**|c*0>p(Y|9%%%IFF1eT!JdvYt@yc0-rp(!!s),,=rR0،P^5Jvv %"< Y s'b0I`%B͍8D:rcB (''ǸLDb@֯l}0DDy(q:tHex> 8:؜h@^S'[ի'D" " """""""ZX<(EE>`5c^,dxL6G@ }ׯ/)))BDDT0DDqRRJS̉扪;,60$cJ$9ɸ'Q(((<kG}P-==]RSS$99YG2)))Q$6J`P,{쑆 e'""-""\%EFЧDOˉUx1ձ%d&F(>˾}g-JeeeO aB`(##CիBGU4 d-޽QjوU"a(v"Z 2N) 1*V:f\O$e؅WDDDDD/SYA0Q@3L!HAhƍ1j1#_\Q-V :`PqI&ADDDDDTeA}Fw3(SB0A &M'% zpcе% XTSK L53j0=t&$'}))*aӦMPSY ˤVuaW1!W|C  QL#.).وOG EJfS J{ܦ?i֬iA))!vvg%R%(Jaa1e2EǴ4cJ4!""WP쒼BuI46g}.?0I6lؠnk߾uh7|III""""Dp^ӬY?4oެZ? ;w%R6%z!H@5cG)g*^W\dffSVT"4KQB;RSTZKS'v[+VTW_}-ϿUW""""D.uFxo#c\O@)@5 ѣGh{rQYYYƔ1DD +)%ߤuWRR"uԑDjM0?@>zc ޽XGT_-[QbwONNNg *,xh|cDRor:K>HINNvgG;Pe!@P~~nY@DhT3j ʾ h}ŗ2~ER^~UYt:Xynݺa=Q'5x@{y}=/3g>o4JGaND⥗^!۶mRnFIDVO?\f̘)vߎ2qΓ<ƶ8k< N+/"Pܥ8Jn 5H sٽsٽ_efskզ̯ nC!CV7i4^&~ :2d(Q@؎-'GU?CzeVLyyVV8]M dZ &+?Ӵ,Z&tD9;?*UD,m Wxs|Wn<(ͷZ |7Zϕtyݽs4>ǹ;ҕQÔ"βtyҼeʉ@Z׹mߴmId=inh GͫƳL@ UE@uMV]d%F7jlqCd^}uo7BUVYN8Xp ?lShrAݞ:kε[er=ǽE.vg?3W]umՖ-sʔ׽e1 v':m@_ItzUL>;ȸƛn[ncGy'׿[ s~n]I{^mfv9}7ވ{?G֡vN(TS ؚSNc+kwmqȑ#\)1 mK=֓å^-Ը ?@E|Otj$ytj n;sk8*zƒ%KZ۾|<C ͫd;HkQ/Xg_\o?,l7ΐlXQͶUGcr-/w@lywRT_xvVpguwtlû bjU3{/c=N?϶^{^Z¯Xi/gUܹ}:Nңۿt=52h3f|BK/ضvת䨣u!(Pŋ]o۟|{:駟~rP=߇f5o|;\8"z &uw߻y}u)w"Ɲt).:t; DOs{~NhK˯tc% cڴϱcW%1US;pW .:]YO|;/R(F<UjK|;HW7cSS8ua[ݧk4/ږT՚O󜛛ֿg @Ze]":bO~\mo}[ɛ" >rC|y+-辱>l^THYIvU't=t?:ښk{\><צˮW4z'{< 4)ds}}'xjvGڶN} .taLNv \r9Z-<جY?gB"0ka7ijefAmڽ.X*#Ur{.gʖd|mwyzsX^wigegվ [{l/`n=}-I^9>l*oWvv]tr;^yAݞqc';l/vyyzkbCڧtv=+駟>X##G+ԍ䏋@:|k RKd}tQ?M^Q!F miP5/ʟ'=y~Wuƿ[V 3<!VK{[P͞=;~J9nYhٳUl3&41UO3I@2/|?3Ϲ˼<;S>O>\#co:b ^/WOUHT{챯{_L=\{l7KyQG7'tv=+2Y:Pu  aJdty Ϋ/݃LVJwVV۔ty<i6;pVM7Wn|V(ZsmXq/mﶸ:b *"ɏu-^v֥)i0˧ \)mʔm̙lpljsCw `V5\eY$$si[5{V Q̵#cUUurɍ[-KIIYA@R]c5DӢʟ^i ,MWȷp}Q9Y64&α/g߯toaUr. e=gi:_2Lfꖇr-lk5cǎic62|Ky7nuVuu86mhVQQ&L;23hkG3@ȑ#Z}uU&QP{'v< nyT$СCx:==zZp .$P $)~H* ͛?(]T]\\dBdɒm- tE -6t=8=7{M0uo7.mk]5/kwYnj>X`)ev/YvӛZo~ ) N=t7VLuIۻ*.rwjEkAhs! EEo]xn,=gjUlцne_qǝ䪤4ΒZکF3jrjgz{֙] Ven9Z:= ͛?$U2Wo)̤m,kyyy.L1nhU%[ߢO^sĖU[9g)IW /?ʮ}?]N-I_7kqmR@ʛnOZ /X࿦m]wڿ}O^wǮ/RcK/j΋/[4hPsR'|ɧg5/^82Gnni+ceҰ:uΩ۶v3Y2i H;],o?fɅnvc/,^Zv]3]QI҄$ u.6Kfm٧~yS vj.ŽxkJiiؑ'|ʦM{?zm|a\E?kD:Kˮ˯ꕎy\_s+:Ә:zLT[ook ~k,]_mUmȐoHd{I_`uU_cj緒{g\M"=c=esڤ¿ %!7i-}My3\Đ$iHG@NC1c]\°m|cTcަύ? ȧm5~3cdI'N>D7B>zVUJuOvuicǎujvH˩Kc<<Zxm?{G쵛lԘ-gyNCm|uԱg/{Mwߝjꪫ~+d9S쫯uI?NtCrmo9ces/2;rʫrJfhpyq_k~5׹*,I۫NC{?9S]{nݶٳSNsjoڣڶ[/N*KߟwޙjG\cƌ6҉Ri*k`*4k5nVZzСCFoX<}%1),,  V[l{Ey Ϋ9J?:F4&ٟFZzHC_5C N .SV2xToԦ@tY&b<( s+CVQ׼unCldiV6n-Iim8eU6wIxUqn.wh󼃇[FmSlh}G[b)o7_$jƍt{_C +>7@mR}4Kb-?@`eP;1} (R2q6Dz[`!6bp(?ugFꙿmO?ܵ9SP:tM4Cg*geJj֑7g܄ M 4Z  @O 鄅~r dM^[|M5i޲®2[ )6mY.ҺhNjnʔ)ntR>Kc3 ^ip>յ=~mQme7cA8-LdWĢʼICdez$aj \'k.-ӕG`PA;: RwM}f> ZCϧZM=w ?+wm Yԗe.G)POgiJY6yyetɓ;|:`!B'M}I[=]q@wvFII;YZ{ud4m+ӹ'HElU_弳G GؼK/m5cj_ڿAQS?V]D+/}A?[\ʘH?d**mw ;duo:b#sJ#e=~sBv)Z{pϜ9ݿr[ln@D--Xxi.?s 号i4AZ6H7v:6ء'?ֵxF.?7kz:% :ĵۿE|h .!Phi?yy6dCw 2U'.2H;]fZuTN~ zdAEwv&Q;her+^^DW fY.tUYӧ~n?ECw{3?S8P :OOP@:P#ſLkɵU{뚸42'd{ ͯmqU~ZW(:N^^1bi(Y~S߳ H{V0o?Çܮ!Đ2UHGevr@y9!xb::vWzD֎fM[oK6czkhBwVSg~ N4 (\)**#GܹgMPw>s﹅6nXUh"TVVW%V2ß#3NwBC@k[X]C4HRΝo[ VD6~r[RRhI]IC@Ů%ܼys]&.d.#e[uu}WÆ C{PGPx`z ۂc62IGS!Y I466X]]wک6ͳݧe")Pit lۭoO~\:{J{"QVivU%@@H R!P,k/pAO4@p4NMN/^*z-3ď;G`=|^ڢ.vU? 4{G~~]lWθHetD -iۯ0;^h_̩o7նޤM? #mɅU M5 q4ؘ1m^S'yRԔݿq<롤?頴ĵC1UUUyCes WIvVȎں.{z-W%wfmi7Z{xZ-=60lo^w*/kc@PsE^Wng(n$z :^SS**+>4/@%STXXBNVڨRgmɅn;fN,nc麪mСV[[MASE";jY U?|hlM9>E`bp%//sܺz7AnY ]H[ڀ/ Yem#hlOj}& lxqM\w5ѝ&!?qL"MW(Z!})<)+[lÇty !+@Z+ [u]"ݘ(FŶϺE:zWD>s rB6nhLltL)* W*HAա >$A{{RZZj-ݧ*ŋ-h4oAw晕XSryn+Z6T'J|:+kWUU*27OA?K@X@ vkY!WiD\zZ: tԠA bUTT˾ӘRgR #~L2Kb˶q|ښRC qc)xQ뵾h5)dpJϟ,- Agt,:tkkk1NOLlyYH} i| z/ 4D)Qwq BOYVXYd{-|h!h GN^N˂?3@L )b=MMw=v BtKBoU4H$z,&iH$G !Q|CK"hP8ú?ZGMf% =7.@L(EٕF$j ](@i155Eȯ"6 m l-\T7F0M)lP͖ϵ3kh ZpU[[.c6!* -$ۀXgl'MzŸƈee! @Z ؆/'--h :tz^ee:ڕ%tԨ3F6ek,gcquTUX$i U@Hh)ˍ=gAyg[?7bH}toXC6@нt̥]H-ۿh 7Z1v^=V5Yyy!@7ұs?MMMG lmcBMq!~kg[}C{\$EEg<|+\ ~??ZCRUú mDsdmhjj:FT+c.ѓrbd~ThUbrP(VdHdY}};CE%TTWxY'XXD 6$2(muDVM$ tTq!P^^@@3Uֹ1W\t-,B !*?,} (Z 7STUU&6b@GNTc&u/Zz)ւ?z &h_C-@iipq%j߿] n#?k9 hx| H/qFCCC`esJEJ{rDZ-bccvuW4$^@%~B 4"nCD(MHYn*VDâhYziB0ĉ^6c'zo@]oti  {w'A"@X|M{;%P9@c:@7'+y Ӣ!O0n4& 6R%j (8E_#8U?@$nx( Vؙ,c,}f=4ɭT\?i}5/(E7H~J-(y}fno gt1_ B0('*emK(xŮ7g5Vqn&1c{ A32xJ * "-\s{eFLoMIi[ 2/n5w A+K~± y_׿ @w#m'X䷄^&hXhonjQaP(6uLZnoۣ5Ag#[4k-⧖_ 3qں ݁@A|eW%<PS ďN(x9pJP=@J l1|V+yXI~5?}Y'Eg+g  )y5 }oV>)_cQ}iHk|NUUM=S=V]]meee"͝; @[n E>lslz݈ϱpOеVbkpB7τ +>vڪ?𣕗[^^-Dw~?uoٱ4hZocǺvdh2,KmWL ~GOk`cY[wݵ|UUU766ŋ潨Ə{W_Mw:t5*/++s4Q`2l&{W5~86Γ֕EUƍs)1z +,>h[dIcuuu߸${${^{m޼sgOiO⋯TZ[k5SS_F>ס:M}{|ĉn,+_[4fƊk,diH3{?o6dvɼn,A:} چnwYȋB]ԩoƮ_{unUVY.wߓO>}{jY4nb{{_ueV[O? V\q;ԓmuֶdOa_~'Zz6V3}t;#oI[o]by.??ҮϺ+ ߭?6i{s= -?;qa:,''z[a?Q~\rapɞu1nt{aq+U:{/ujI-jt7xdu=y)_#G۪P/x*D?XQrˍw QpW^şp8ږNAìT0{ z( Tyy A+kƝt).QE_,?U~.)O=}6lS.]ʝe**2MUcӦo]Ÿ!C{l 8q9sγ+ .hyGy T/9go>Ď:X{l_ϭC>s ^S t]p`*x: _wu ε5\#ڴ]vٕ _i#˓O>U֣>^{Is_w)vugUQ\{_2(X4jλ~g7f[]reG-7=6kvgH!̾*3&MZ-lf; .r(*#Uz[n~3PeL2oXPA#(;lJ"U3.o._GW\qw_6w/vyu뮉Wu7{u\#j_wr~ms{E}5V'4Rw@@;܁btQD{hO?]?_ŵ =]X)-t1{X 1c$}:?*iyq7)8Ifw@~wzܥZq)yg}.s{7 I#4֐?f…qϟƂJw=mɶko99#uU IjkXUoz~ŶfM"݉p1s9g 'ii+좋ouӦ}\UDmzKK=<|AYYYEct'[o+,,HCx!$v-_2 јM}-X:CmZ.HO-^}vMn9V=nVMd]ߴjW_=ca׻5RZ)߁; D@lM]uCמ~Y/µjMرcZ}رccU.2n8jW1m47&ŋMV[[g= ZuPVuZ%OI'*ˎ=ZJxP;wnֻ_哌j:c{w.`Uh 6X6|V=-*9n&yݽiƛtn7Dm|qg[I{[2Zg[޿N;;g3gr-'z ڞw3HC%U]ty{?w=뽸g;nuc?K)wqxA*-j]۷~oȎ>HTsCx@7הW)_yyG(uNC4˒%e)1Jevv!OiinO{MSYuusϽ_~c| @裏ǟL~箿λT*#F4RAkf̘"8/ӧOQq^n&jW^ɍRRRlpjkk'A[_VɨQEY0PT[͘z_p{VV޺w'mF1o=o`>Ohb{]kLva*k_M6x-wk muJ&mn oDkk.;k3 /uf6,?M7]~'~}ͷqIG ϲ.РAgIzUG{uiLUVY]饗[:zŗbѝ]Mh3s_=/‹zV϶+{weT u.\ִF7lSw{>ϛ:X۴fŽ+UȓO>eӦyo[F Vh̚d_+5Zvy'K+N46U#jnuמzꙤj[ZӞu=o]~.{IzjמlEn&}7 C Dh:JSO=]-~gOO:6w'Zaa >x7}UU{LU/:8~'*?cZرcݥ߽δw&in+++cZx}gvM6v_3qAM:֍e˯[}wuĪbKxr}t5gw܉rA oqӫf?]~U{ؗ_FmzpQrmݶٳSNsU^bHuzߡ[g]/2{Dվ*+\s 6(|)n,-ܧO?ՅoE 9\}SW rmdkʳ[s=yl;HIG{ァM79GK/;} MݤPo% R6lXy;rcpMv-*_~zò.,N;,(Ӥ5W__o=ww 2TI* o: 2dpݵ#S ~_ۺ뮓cƌl ηg̜ye-“Uy?cn5װ[o6`V[!ߦKm4Bkv-xwPg'/-[:)..vUI\wt/wYPmm ZkoVZ՟u} ~RO[|AqGF7~'lVvw?GAթK[Z_~=!Rn28%/ NYR=f7S ѱ<2KC)Jףt_cc\}lAԛϖΗ͗Zqc-{M-*[y啒F`OS @) # T~nvRn˿u͝;7m&O^O>~6Nwqڮ][kn>F}l~x]]ǵ2d.6qr?O;>sgbF~i_ʟϿꫯt*Ԃ0P{7.v!#:ܦLwj;cn`-k駟쫯۪[,[]wBűOK/B!6dc1bOݎA 2|䒋l̘ѱZwu/ '==C!PVV=3-B Oz@vg5k,khhnj`z--///~9w}Wo6c7qfǷfVNb8ݧ{X4i7[YϿd+%mG?@ځo첳kPo~_>qℤʶ76v_qqasTch7?/3v ? VHQQ駟p>4l͖Iom_l},o?8F^='Y;8mdFPmڼy0abeYN9${G\%ZM\sԢMSkCSOݷ۶xG}<ؒYq\`g}JIK.sxl7ΊDGigyjJ0)YD(tnjn=~x>|X筿nT[[yfzm7u-X0رcS U&͜9+v… s%' ܹs] @R./+H[=M:5v[gir]n&-WzEnDeq5(! 4a4/]w;&O^z*v\s :thTTTϳ$7TYYagS@SFR tTH;|뭷 ҩߺӐ!mĈ4ŋћ^tӃ>dsq/roh?䓴gB ^Rz8 l {7oUWW[^^H[~^xw2toc-uYFMoْ%em }GnŶ3҅N oֲ; 3ϹtBC^^nϟ7o}'zH>Xo: xGX8zJ,_XGW[m5;3>vA{^O?s?^ZZj9l'ouX裏ް=n`mAUU_ذa:gzal‰^{]_fQ6~xk/{?f}'.Pt*1~khhltM,y.-ԩGtrͽ[m@:f͚esγ( iᡇkϽqۮvZsigzaw[-׫lȐQEEEʷ~{gcgΜܖTEX+zl WWWyW`5Wp;mhh{R1bmFga=z҅M>URhwѵr3{[/?b!~w;@7m3 EAԯ~` .LQRy\Paaa(㏽skK 6X/kBQUt?~/kbAѵJV*xO{l…Ia\Jd4c޼^Zc.[s5Z,Kuu˱y(ȭ3iHG.w@[c5\+ Spwwϟ* 1b0[wu>3v?R-T%3toֽBoډꭾϿpvcc YeUZ,~֕>s}6Zwj]wݸJjU=OF_]W+D}[9…oY}z}KJJl5LޞS߿ ߍC[껭uϺNP歽U;Qju_g>iKw]5֧O?;]n@"! ly65puH?r֬Zqy]8M6;^~U JKSk&O^3vP2Hm:i!_|azzo}bAAeHMgR˯M6su߾uY;X^q?4ĶjX.:Ƚdb7R@~{o;w}oӧOLeMhs\+99 {c)h ם~}W{ϓv@“{ޭϟ)Q/P욇g}ɧ笺* yV|UEU3PҪ0a9C]5F0rrNu :K}ZVXUYPGZ\ollŸJ Z R`eRP HU'|RW (?Yyl6s4 wh}rrrZN{ (tӍ]0O>iӦAYÇosYLy݅ xIaǜ9?W_=Ӷ- Uu߲*wޙꪋTm5zh)|4iQVYYawoGj_+8b'-~V;ߪwGUMZUfj9Unk̸zU)3R3:vS˺[ƆF?_;@vۭ[]}sզt}j~3.pwWlڴ20`@e> w,[acsZ% Gqr\駟j쳷@.74{vpv;讃KBP{5.))vU lT":6n>dSCU~/;m5ek ?TU;EAъf:ߗ+ Ae_uT[[Qچm.HQ(ri~{Btf]ȠJUE5Zj GbL<.>Tx[Zsݽm97:喛6j#JY[" IT52i+qa…T/U.PP]*\d{t^j1{\=^Q!w[S{?', oN/YEct~ցGjyuwDa8U$ }| {:\}Ƚkw_}rssl]wU8ƛب!Ut>}tT8tOg뀩ׁq$m!Ɯxj:S_![(X&Pk)t$䈶 qLf+wкw{?V,HCEU {U~ZJid8/ rQ_hw6ƍKZ]Zfrgh0#4JygvcҴF’S-SXd>UɈ7 4)S%ڷiıxZWeL R D_3ýFYxG^*j4vؤ}j]T陪E/qD{zrw]Vl+..^`6j~5Z}kc*kӚ)R;Hμ7 0`造Ptpw n:KZIiR* [LZxqEy ۴ixU dTšU1(RGnG$hlIVe !n{wQ%DP*8jݥ L41j:"xp??ݥ@[vqh*@SFԋ5OZ;`AtZI{kP-*߫(LMfIP_BwRմ}=.xTUĵV9*j&r0y6Vh{}@0ptyhUhU1 j*$Dt8YʼnOAʪ}j+H U@ \%#QK@zJ~u*< e}.I轆  6W{u}>:RZ WdUU-KytEX }쳗ڹijdXoŮcҤ@h{Kw 00ZV@Xam 7_Å/]W;ԶRLϋݧ Gq4ڒ`!8q}a3g~Zҩ6lX巳n2:WФ k\ $^h[l524…aÆk>T)yom@3fLqi\*}'5ΑФhmi:Uh w /*Uu~T%*Cd-@sm>u0WJk*  5Sq- UEnQ+8NiG@oferǴo߂Lty&kϥ{kK@+=[Gռy sփB9s}SQ$|ˮ"hkmrs?{~ZKF'[+Q}}{oC}}M@сw,~wZ}mcz([Z}IW_*7OBS+8qB1?Z f͊V*M0cܸۙ1/r)lۯ1ѧ&g'Kdt@޷iwDk_~TI_z]wm_͝;7qb5 ZF3 PX[[I?pcr%Z{ɱ0gɒS_V[ژ1cғO>gO>KzMm;j( \@Z]~%:!_i뭷Zsγ]_gZq~^w'N{\U䪞?}PNNM]>\r>!J]wK7j% jtP^axLkeomʔSs{Oq-Bm3f-2uO>TwIߣ^{.\`#F UHAA]]FkygQPPh ?ZW^G}<6OAMk*qSEެYbOkAͳ_~]R00>@e ַwߝg}ڽG6:_i%R%:Bgyֵj2s,lرnZί-ZȵKg„ nŋǵkM7;{]UPQQs6p.J GT_SO=kz`W1a&Mv7>Uf{i{|8#-gUEwq{{XQRؠjS뼭ުk|.@kUah vخm2?_-+Eu …\ߏM63Y.ĭJ֖\^N)UiR՝~w06lSW[xp l뭷vV8Vpogh [Tݙ =T]aQ~]ŏN ꪫXRE]MZ 7?u&ky\dIt%u 7ЭPxxn>}GB.SIj6eJ53f̈=qfρN̯Jl(YvF?#w*nMa{hn6K>Ç:}N.7cOߗIV~p;#HvjepJv_8pY7W3ԛ566p mDiM?irgkklO=-q S/'4,}TIPSS JKJqH***p' Z,mi3j@FWm!YrrRRccJݯP RՏޡ;{2x)++o:昣}ڮP;A7vqYYaWmD]OzO^~X2!Jm 2$:Mx^SN? gƍtƍg``оd}Rt^A۰ԲG?bVWWkyy9틥CziX@Gic7.=#[g@'G"MnUUUF L\$mj Uj+))1@Ѿ/%J r|F+P2?)Q J&:jhݨ;++ @"#뭮 )Z|;*:\i#ϥ}/*k"0P~+H$z.zNNxaP@w#Э\J_NN7庳\geӆ{5ɫuK Cg*Yf?rűhO* _{O,C:f'YMYYu..@6^ԟدFj^^+?=?>6֕i{[!^CC-^z}0?+L:6}3ɱ| yS;R]sstY}}R읂| sO߫X6L}*EmB 4)R_TPP" N%555GϠA%?yG"qG#e,X+J~c*:֢c.@:E!?~-P4-<,s5ggG!UYzUU}.{5r_;qߍ̧?": c@"0mx~rw~(xv.;*CѾ âIX~MM-!N!n4i˸ zoG:M}h]}+Bt}1EZC:eQ5se TF/UEH î}ɒ2to},Bb՚O.4Pcc!!ЦS=z^2/1Ve\w{ɒ%VYYeѾo},ki+q?g`R;8~]]$^@ZܠX8V=+yPs8]@/ >Ot_[TZ@JfɢO{<;hm' em99y h}'Ci_JTڷJ b. @@ZCUFE[/#g5k /4۝ŋܹ, Ϥ}'Ci_*cAn  TFĒkpni y#ړ:t%]AZ]]c3gβ*ZOHW>})Si~}, m6I*gCGP j~$˼|F;wСC,??` Y]]/>YVu'5?~ {\/D}mO  -$9R |"Cē ǢmߚktS64O?vp6d׷8Th"o(b ~QNN'C?fxrPccdL $"R~U~9)$/1uG%j2@YlR4ق c9VTT誂lX{}*+Vѐ ~s\OYqt,aiRX}}.aw'H?Я_%}N8^Y{B _s:}@_ AO|~ePue@f^|PA@%<@o#04555Zޚ"):tzV8zV8ۛr,cݗeH] $A>!B(@Jky__?ɞt~|IOCz U[G ,My6%#Osz{WE{c-e :.%Q@E+O{߶ʽr/ ʲ" *y5]Ol?-t8O;E X? h4+ j]bV[fY%nAPjܿ-O t[g>]<.$C 22J }0ƻf ʼ²J- hJV 7v:1>,OsSCC#{au [vvrssݔ $G_8= 5X?}+P-PmC,αjdϋ>ky}$ԡ}joixM^(`(9{SG@2QNDWB *APw%g?]D›~juu, [QQ7[8'++r-'''6Əx'"*:.vSUUXii)d< zE-S(j$bk{]k,YbI4Ÿ Ķr'͛2 E_4,v@oIG$ dz~~~v-Zh)d0i̟ʟb^KǧyIlyּ@#T!4Ezo[ ` ijj>5N_}KE8], ]5E@}l-q+Wfr`6xVs?MEO7O?馂aژMϳ5M޲Vz .XeO,))iQeN4oUb[8L%鉿NVc}*)ˇlV cruUcC/+}AO{ZVV WҝQ2D,HOTHKMZL/Ӭz'- ,"j^`?qMz=:KaB{S_2t Ѻ;TVV...Ly]dI춖6piޔ*-c#>ʊGoBlއY٬WcQ%P׬d e(HoOP PTW׸p~iEEi^N 2ZHK  fwJn-kc6?׻o.9몦^v@fkJA*55i9q ]P 455ZŸ[_ndg!lZYSbTĺQ$J]O$l`:6ba}2%UՏ_S_߰[tgrss2z#i'++*~t[aa􄸺zZ['XU2[ewXH?@H| Fa7UU> ~tk8ҾP~~TT^^ >LABdA݁@҆n93jqu[ե.ɂVz}РR3tBС֖,)[h8Bͭo5Pdrղ#C ޖT{֕ͲEŸDz Kݲ[ nuɦGSR2VofqOj WI0O!ƀ ײg"{Pxv82 Bi׏pܒ1^si?BiaW$ßFu!Paa!}&;iJRڧ c%4FRZgyO\6HevB)N,Vk?%meN|? V[[vTJJJw>O口CSl 9޿%Mx,+q/GnGŸZRZZjh[Ibl-2UHGTH;ᬮ .43υ@GBi46Fn"KiJVҾVxGAu=q H?^XU {rc뫬lVCdc[*~KsqiJV})$ V0566xWUi5>-tD BY2N5n޿-7#uih}-~DN To:3MFVNJk5. ,i$Z=-@<'.  i)]`]5xqfj?L9jfMV>U?}' ="{d鎇z=!,*[iKZJ ~fQVUUYIetdҒƺr늒q[ZUp}?LqS8; 꼍HE#>|OFHg5Ҳ8 +V5ZNNtl~ZәwEEeyM\H'@VVN.iUF̰U[_deNU.ՇZpbK~>'K)***`Rccw Ho_ک{X!Uqq1Hk@W(lY%XWf]W$MM6WQgiz֖fo;P_n_:/ϥ}/cep?RxRSSWQSV؆aH-7"jiͅ#=*ʲtlY}_.2ɈVE\RIJ9 z}H?ebfwPŋ-h4oAPJKBFo^m7'$ۙYY,(7@ҾWp_,(dEEcVUUYYY7t&S}c@ X( s-~7:VY>XsPS ~ dii4/AW3d !;7-@o~뿝 >ܖ,Yₙ 4_aPaaxMrTSSSZc,%R4h LE #e S ʟ ZG*}ܢ[Knn{M|e 7=[^^v׍֓zKZ{ZAA@&#4w-ˌ3x svp&??*+aO}V9UU .o @2 f!LZjYCǪ -OII 2u˶RPQQ)<55Z:y' ӾмA <3 4UW׸{jjj:j]R~~GVo+ ‘+2 ]–Wjp@K/3Y5չ㧱1bH5£, uw@/9En\@Zc( Q.@o ?^7ȅ1 kH Ge[8 tApn46PM]  ,tC`@PP)o555)j z55E4z+@ i11 3ܠ8 }1@p\]hYOqar2@ ЦpvAݸ9hZHA[Mn"\0"U-=-׀t/ٽ>`_~ꪫkn"&w4@A#ІY-ijP?jju5w'ޛvd2Q20E" pXh6 ^٪Hcs m ,pAoiee~ݿ}JKKl6uаa t.C!F6R 8}(ZIWϟox= R{<3{K:w,Di m*\vKVV4gE.\ } [SS+zp [Ѹmr q7u^{zJOw[nVÏ;s=Fe_||awϱ#u>=c%\`=Ïإ^a=]reOY~~=ԣso 2.vo>su;+묫 }~m^}u{޵&[y[u,Ɓ.@R$ژe"ueʳSߌZUUEE+$v3wkjjjm9skߗcu?[ߵ_s{]]]|B% Ⱥhb{ݩ;Ywfy;MszWl76rr7nl :c}}yJ=Tq? -P @Fξakh?ј+MV[H;;찋39OQFСC>~w}6l0w}ܹ`B^E |`tܸqk{bٮ޻Fmkf4kVt&N>32mN;Ͽpd44V[…B, R~ 3|#;s}^{ky:x-^GiEw]*TPRAX[a_G7Ɗ<_k3b{f阋?mNN0nb7O 7, Y {\E6HtK/Ǯ+XTs駸_~}Z<_rᏜr]UH2oOgq6yN8OwGoU['Np}ΝKW *1 |r˭.uOG^6bE)]y]p믿_?H[`A5Yy{̅'Zg Hyyy;Җ,Yr>z꙱Gmײ *Tu-cvv7zW]忇L#G~uP*Y7^6_Lo;&mKt^^5k1Q݇jY# @R71d㬩1z6H AF{![!R?n6vml11WvuQSSkgq-rv*,< vqmA./k{kv3v?K駟on_|Mk/2y>{%?c{M JGy]|n'}=X*nfw]̮X=QuigizL,\䪯C~kz@{we]i\ra:u544؟'fmĈuo oW^y5e1K cD.vZgN:>i @rm ׷wޙ{t=GweKݮK]a93 ϳvخ]Ug{= +:ʯQK-~@R@ڦYFl:'uP& |> wy}jm4Y?e,^Ȏ<6vjA.`? kno믿ݧ3<-{FͶ&\_.U6^z镸wkVʱarss쨣3\Jm٪6ß!_#'o?P!{|1{ =sI |m6lcƌ%@uuu6ekzJ<3n<%΋Z;vj, O>^mV[qՊWcx[vW̤#U0r% 4)ɀަc*jWXD0?:@J~PEGu`N$ t8 gU_kT7&qz+7։xN~‚тV[-yeJkcUh $ d6|s͞=H9s~rlf~M6vgrPc%y&Uɴǧ~n~uG kk/3[}RQuWmU[$lә~6 i`ւ7|4~ xOo|W]hmޢӵ}awh~h=5iuvж*8㜸謳u,;Su2Kb;]@wPŏ[46Fw4zEwf@!hU? jC9VyMtJNNۈke? "6@ڠ:ПKPeo02ˌr-ڢOUwWH.\ $}<Uh Ud͟??s7vڜoߝw*4i+ wT1v~l;gƎ]wz?wKm6ݴ9|}oFR5ZZkMNzlRrT?v?_^{nv;yW_;Gcgw'!;y%):~3i9>h;wR߽:Mg-=Ҵ[L8v;@[ \&6J.z;:yG5.6h뫭? sI~RTHckǮV/{$DaXQQQixqq[2:iBnf_vg)HҤPIԨ=^{ѡUuNiϺ]YGlڴ?R^{]WHO| }>lnHUN?Ow`$j++ 0{ȡiMKו_cB7ũ%~c-;Ɋݸ * QA j׬dךC?(~g׿~g}몪vY,vo5xpA=Y}Iv3 {ᅧSNwu?dLzĉ?q]Y۹1!dcL)xDD$9~±s@FHi>[%>$72cíg':tUrYۙg殫JBgK$UR  4*쮿yK@88vL݆DgJ 4~~]wJzOJ}j{(Q8ek.l9%?*RM/mцO=twwpǟ$lt"" wEQQz]RDDP@@P:Rze'nv'K2);o.>sjI3;2Pv'@~/>N_3xN===JEAsι<&!ɓ=Fy8qy=j^K͛7K5RK-)#sd㮺L5J,{ovU駟*9tғkɝwȮ;))'xJ?kzo{51ǟlB<}.:GgzCy6дӃHzF{y?9Q;cI ڈ#fZI%첳KTs/R[yF@^z9YE[]v%?CǴ!+>/9;C|m`0jSI;<ץ_J;0ٹ2k$NFj164٤>N}OM뿽Y%Ѓ駜2>Lأ.Lߝqd+(駟bй馛cy=}5Aj _}stur`׺KM;!GGGձmZ|[+P櫯cFhhWq*j i V^y%9묩rE^Tϔj{Bwy\qTAdW i8SȬ @5}uIROcW=}cmy\>?RQ%p\ :.Kqޢ9Ŵ=筎)~ctkVRɾ6Mz`WoRn/vWz{t;֤i7G]V[mo/&_VW_k%ɬןŏ? FeXKKKɯW_}%g1ܗ]v͵a}٦iws̕ڄcreV4T(akQ_\rI)?̵N> is444 !G o~zi]:rV BJqSZ:$.ד%t.Rd]K)p~RZHR;=@={=ylzGplOK9k#Kok,=p2MfLQ{ߡ:O.5Zd)7P%?ˀ%Zu@@9(D".X$0\vUz Y1;cצ…d(7M]]f^{HKK`tNrV@򩖀ĮI?p8$feE"h4f?qҤI{F^xA*9cdĉ0K#oi-~[뉠$Xz}8\cZ ^@RbX{!  hؓ{} rw";d@%H,p@ AL+x *C`I%S%%OJ*d<7W'ht 02Pf=j.'ޛDZO%ҏK?>;R B!?c;FjNO;!xIO:S& p},AWO+.1k)wQ :bIF"BOzp @a@ H''.θg8V6jE^(h4jxr VmA饾:/% Mnm[O^k T ߑeuN^#5 ƻ~AwR԰+l5%\gJ+ Zc]|AI$RPzzz\x/3 wJPmWh;nmTh4*)PD"a4ͺ6}Oop ß~1C!$T)oHR[Jv ~T#3DyCBOVVvmD&TPv8\y?6{@|'Y ?c^̙׈uG?v[j2qT'oHRSS{QwRe@?&Sˮ3)cbqH`@Vhi )@Jx:~TSHPwՆJo8@_wnkße,k|keiR *L&\=4v{? ;C]S(7E:f=ǫ &:Ve%*T{tGJ3?PR4흼?[S5KuLS &"B :=f*a~cQk3 &InkhkJ(d޻P'PVr\pr(qc9]r4n2Jqt2Yz8wO^:Sͣ&Yy[jjS@Y(*rR}of;IAfu{WŸp[bW5Tq)7 fR)XЛ}`@Z}BOu7][9kP!I,Jv ~đFTZ~H WYm` )nFRy8wBjҰ'\1ޓ9]GUJCcD".hU6=#4mp&I>.GcVVuu9w{zx/R(_5O^L%P2ޜ'PguK*w RMmH]qeמ(&7[N{f@j$- Gj խNZ[JdR:;;Q*nn- ~D_y.ԶM&?V;2OMBccvGGT z GVMCͱJbtU^N8baTؤlf$qioomm{~E 8I3& @[i6kIi/ J:Yz&K[Gg0hJm48vj6 Wjk$ Eɼ+ pC n.e֞dCۿi2.sC!\_ck0Jhx모ik[$'N?ms j,gD|-b@ڞm{h'Bi͢EottۜtX"L6Vo@iaQ~Qvu/KhR__'u]]]&~ۢ۬~GEZM~]" QhvEʜ9srEF1cH$qE۪۠ @Em$QX} ?ٳѸq̜:Nd;8GQ* J]KD}OvPHƏ'{͛3N9үmۦۨ *F.$oA J'f}. ,d2)C-˄ r*b dۥk ttt0RɔzR41:_ߩzZxiyW's_05\Sz+o}^,'N Z!Lu3]](2:;;Sx}:OE'r<@*N\UẠ6G_ʙg+ovɔ[f?ɹ%m  Z&N(&qҀFk uuV@xU9ZmZp֠i̘1@EkVL%VhpE9sʑG-_}uɏ?뮒[W/H[2Gh{ڈ1cufblii:JFbi$?טouݐLlƲrs7ߔ^{=soo\rerwL 0Jgg:wN9]Ct\@3&kiHPT4 V5AiiHE?Z^{ԩG/Odƌ7d +CIill2APggmKObill0_ZT O۫jj#&?3PPi߬?${oo'w͟?_}qyo1gjKeYZ6lSuם͙D"!^zk[n[tӍs^[{_yծuYuU\{}y壏'g6s,.f{i0A.=fnR]]GVoAKZuǥ3.̵FzT=} +\(^w\{ ӼyM /(:M=,( /y|[[[h&رi?;ByFk"@Ym)rr-[q:=I2uY6W^y!\s͕9U뭷v{{kNwumV[Jmms/*$r?J'>\|)jAQ' HMm,mו{[~?3zɧe֬~ `R̟?_Νgڹi3s̼mM=Ӡ~ew {}}:')_cB:j/\xSN9Qzˢ'CIyi"  ?~fE[Lg*u w'?vg塇&ӧnڲ tǟ4M8 n^}uz iK:M^W\qBC_N?s1O=u\pVh}jvYf7}c=$0@[7mPh]Ͻ'7pdwZ483M4Zc@JiӢE2fk ÙvйM? x?=JB_5A$sٷH0he!Tf_2};~ "N.Ǐ&蔓O>tӍMe1K/K?;/houԑywf&K9h7B!7 BtT*}|1JAtُP6(mK*a_mrA| \2׵әg.kъ|f?~lw][j\Ce$?_|Lz+r rg;_= l=%ql@~A8>=8}--cO?,ӦݙƫKxI:9go/=B9i7|3s{3A70ѹ>y.r%+2AvۚHzΖ]vIl:/J(@.טw}2PnW+6o-L^nZ{G?:ȄDNkV8y]f wz4)6%en{ۿɓ'˺뮓%{&niK6jֶ-%"up2G^˜ޤ6 "m=v~$[~[}- ٶf++y sGn*w&N(_~9pPo^?v&Q=\r Y{>3N:Xz{YO~r "~ t$vp6PL,޷)t s5p"*ЯV8P=44quY[rW#?Yfe\ӰGC < ϗRyeo_ J+(^z455ַw?+L&O^^KJ PL* @+2NY"hq@G:NS*g5Uneܸr睷n"z=PfȴiȪ"Z{5@i![l.wuR__sȃ2nh!K,a.P]\S2(AQq.KuAǥs 9.׵7U`̏^P00^[LL/;O^=c=q}YnI2Z:I=׀{竇R}ήП2eMEZ"k!w鼞,)ǥs"]J` 9g8ZerEgf]oGL@jiiM7XCjVWWg0P&уzƙ(@Hò2{{ڢ 6T/ nڡ\OWً!Psp)vN%36sWP8q1cZۭ wـ K:w C[S&C ١sbɖeeeoXys2a#b@yH錂vJd͗y=Ō!M֎HXF;CA=44@0F  ;)W+5YѤ_wHV]SS W(pw&.` sɚh툤sd1%J FWsI>>&CQ(oƁ@Ҵ SL$I,0ghr}}@U½% XKtwXY'=42!?@A\@ HUEI4 P(dH$̙*===&T>%;0|c0W'퍚'H?14`3]!be@uԳOtG$+qڛVim=k%}F}J~Ū=zD+|I,5Tl`xK*ӂ?} &h! ʶK7ISmׄ>z=OX[qu{tx d2!9`');kѢV`q\5lJ re?DZ}Dݾ󳲫)ڿ(w,tCwDfGDwP=jSHQ~aQ:H] |Y^^{mC^8, qҗ)sYcw^[ `(YF0lKʱ>#*v'A"3K^Z{+|[)+YO͆B^U?sفO(^al{;;ٶb;J N]n~ߋP(` @D^|tt,V *W1 v;߂~v=A X;!II̙,޹ox:{>JSJnPي'b.Ȅb靽АƎninn@K`:+%Uܗ7P(ު92ڷ9~-'_/_  CQqGˆAGyB!wر85ZAOXPooTjk#:: :J@ )R8{ `8( gT£>^G U2MG,! j()/eYJCGZo59!ŪIFR?]s@9(D".X L&2sUR.zvilҗY?[ۚ55.`ZuuuKCCOX:ҹt Mron0ABww!O7|@(_eS>O I?p8dB>('~(D"&h ~n'G8B̛7O[nْ6ueU3ǔD$Xz}8\#H CŢ&9blzVK8c TJHw_555f_dJW' UL{I& `?rڧرcv655ej oԓ !;_햢' EMO`f*~\Z"UT6pʟ@_;8oP H[uKkk"14IWrtg4'OX΄BQk5U`$RkE`bQUzN}} PwfY"XVS uvv1t ̛CS}4 H tN`"E0@EGQs]C:*~D* $e(30o|AA ^0`qȫ_3hVgeۿe#:SzsZ(EZeΜf~ t̤c'CX*XA؋Fm{zz , %ӝ ]'rĆ!'m(^p{R(!s],[Lpt*1=uu@,-~ˌ3SQOuH@ %g鎪@dJϟoDg1iUPAWKJ:.G+6>zo?55aS_5g`Ѥ˸? !P}߮zO]W)!}] xR tӾ G[%ɾ˸ɢEUGϝ6<{^|smGJ8+'ҟ@z"ez}@Q@ß|ắw2s j] u;TgJ >}9T)$}z '}\g~l>;u($Ay'UUL(@^ރ|Uc"aA?2fi7}H02Pz=ToJgO^]O`9Ü5WU=NJv <' > bHQ ٕܜ# -Ig]ԝQv,V0[|wT(|U?FJي۲ݛ?Kp@:.U@C `s彿>>U:mg+ϓ rlw:Z铹C(XPw<@4?/#W|J>imH0$ U)o띁rVyH)v|ݮqs=~tlWP .Zo}ѝ5!*F|@z\>rH c,WZbeЃck=ҋ "[{ya}Wuo8>g}_?S8q:xȑމ'>T8rgYYr#iǸ?{9.tR%(z({7sR0?c`=+[CX5Pǥkz#$01 ÅX"ix*)dʬKc}ǃNyH`@jA KkY?`N`P'TъZaOO<.q+I0Qh  tEv`Pjk%H6e@*`#Pt3n+)))V~TAz :qʾZK4&M4EJ5T\{8`8<( }0Ҋ4⧽76%֗B ͵aSkF?FffI$Lj$`HBԘ%eA%8N_|Z- +zf13_GzzSV(P:,XZ꥾Nx]DO41u 0dR:;;\, ki 'r"@*Z[oT:q+ 5Air緣Z:֦^5nWc .+JZ{cjF[[M?CH8UMM(.ZASGGgNU׊qƙ * sTB۷Bt~P`Ѱey۳5774Pҥ,ND͛7_Əg@% TX\:qt4 ϟ52q⤲?N5ky66@%!PɤDZ{{z 0i7ţ dI~MNmJ`!PZ{'r:珷򧩩IƎ+#Ennn+T {DW-M$M+bRjmm58i"#ކ:V1c_ӃP)7?۫#D)hLBA+|Z@ȆG:;;]nʬmDjNZG4^ <'u]hW[I~Ʒ\{l d@HsCPtLZd۷BtDTuj^5 e‘Xy?Nz_4֚"idžQn sc ZgΫLM_6gi$ s' m"Ƿ?Եڙ;iu_t8J5 Z;Cw:|b%?ۼټ UeiQB5&\;ƮL咾}/T+ M$%^0@+OcFN|=Yy\z/??C!#3?wWJ }1=dPJ+[U()xOdӀy>Atn755JmmmmBRO<.启훆?o~&Q+iyBrIĥ- IL?DN&K3 &$`0 Pc|FccB3kUcc@RS}}W  \X[z0H8gTd: GOtӢE1dWWW_ l=ANTjh4Gj(cJ۬ۮ';*}O"p e2f@͞S L*d@~-f5׵5BKK?Nj  :1tLc##XILPGj!Smm&m7xjhB?=O.xn\[׬+}@ \=m{]zK[P͍`g9F+HH:VJuj S%}o@|'Nn n?/1[x޼Ef;j5| HjcԖ'NZIJ:fr!wUM!IMMNv ~Dw}yy nV\\?mW =8S94 ^ kk444Ș1-zܩ׏ڹYN=f, (NN:JNWy[N% J>qл~@Om'mNϗsrŸ` Β>g&9yӵ=_Ug?:i}}Jc(KV5T^}s6|[g CĄ?Kh_hzˌBsa*98 * c5u+} QoY[7=_{ O X,j.#466 `JVαVuV\єry&ӮE=9ϯ6XS6YnI)F_K_S_i)e0>8+wv!f jkKc+cZH@`0亭RyNh!zKMW[ɵP46u=e%Ywɉ2!_0E8wjG,3ƍSѓv_JX:17 K*/ӰRyw4!ЅϽ./lˬ;h)>i%? v]ey5k(`*Vh sVZMMHtJ1X Ui-jjӑWS}of;5ͦ2X? d̺X\.yaW[+GoVIg?yŸ5EB(\>_O<3|G--230HaN:F. ސD+*w @|'L[XƕsN\9e}c11c3XͩջnwuuIn=_p/ՕiRCT]?FLhy^sfc1J |}9O*ԖvR)t[m0NW@|) y8@OYNC_ `Y.s{?6ՀJO:k c/e+R8566nwtTNV{?QI{oy&>;=59pq H=,ݔL&tB#0Z^)31ל.yeillrUhS{{4776~Ej [u߾rq@.mv@_Sl;zocCOtvt7ua(?{,gPV{'D=8DMѩ12_73a)I+W7[|f@'FQ,=JŪMÓg.ܶEWmmojw5Ej<)Ov h cgu#MYAYrBѯ[em|Te Bj8/OYpAfV,ZHƎ+~NmI~Gtg6,m=Q)hIWL.g+8:ppv~ࡾ V]uuujA[[&Fw{:P&j(*0]FBAi//FQçZZ3F"k]GG ^Fnnnn3T aLmzg0_^d.[j; Q-cq^)nn+T  &1ui1FIXB!?~i椭͛3N9үmۦۨ @viMA\h?~+&; c*U/˄ r*b dۥk tttTH^KmD֞oW,a”rۯ;T]P)ge97 ~qY UK'… &OÙnijjFJ)D<>'ݢ@[Wk*c@ VPpӠeĉj' htA RWWo4WU>==ݦ[2 ƌ#PTqV  e7{4~iJ[[и+s40gꡚ|=R)YbFV5[ZZNXQ"5(0uؿ3;R9.QSS4g$d@*+5,P9E.@ = ELYeҊ5:T  !\#+diJ4>4;mV[1}P0h0A.=fnR]]GVoAk3ޘ$1`*~̙Iai rmѨY9~$:_}\ `G! 9"Yq@Uॡ&$Ѹtb])?KS> (@ձp4ъXBbh6<LD/T- d"aDIǥ7P>:Om(d{SOoG̙cz>/䒲;l/nQAH("R+‚O%%LufޠqZ  HM (Pz U1ϐ}rᅗȹO?3_}W8tYnehBQDŽ:5!Tr H[[[}7k 0л{_}ti%?V9L0Uiw,Zȵn-oV͢׿]K.`~ׄ+Ysh:2{9sWGʡԵn 70˴iw 7z|WwE߷s9C\rI\su3eq]qťR__/SN9]^~w駟"9nXK~u(L4Q;ܗJoۛ޲v@=ruʔ)rqG_U*4P  DPXPw#VfeSOnk7q:찃孷ޒwfݓO>?ª^f͚%mmeզ zbS"Jlɤ;V[nYRO?~r3Xb=o>/Z?Rmnk@w{yͷ^;sɔrd86 ? Mugڹ$znp>~ fxC*E}}.%=IFk^}93챇\m=\_s5 $T_io~v?GF#aLݱtw=G}̟mMŬOM>nݬ[KG?M,5:3W3'NЯ7#[w) ,{L_Hmm{d 7|c/2~v`_|񅹮Ʉ u? VhO&$/*sꫯLx}&Yfedu֒P(VZiE/Rf;{^}oKs̚,Ҳ[\ \5566ɓ|ykkʫgJߛoiii񼗅}~3XoudeKcf>sεeWUVV{?k?~trUW1S{-Gϴџ;bzѿKkZߋ#ZV/5{<}lhk 7V*Zki+#U[oݜ*[RI++z@"l$y񫹮Ѹg4{纭srT̺X,f&Eց8 Goޏ Z9|x566ʟ?Or]sϘ~+k5t8eM6.-zk&MyJ4tV ?;\_[n-S5:sMaO~rh/IsyV8G`O~ )Zy챿[Z:yd]v*o{uBO>X}r?w=_27ם]wnZ*^suցh--riȎ;no>wdyڴ;\qU&\Z{/q~w}y /!!D8pלYy뭷|+9d 7 4˛oM)9c/??7|Y`_9#M @ѹ-i3m^{asu 0zȀ8 n{vsawpB@2m9M?$W/[Ö́~?~3ccy&Q,Ԓy_륗^O<ZU vEѧ~&{<3yڡak3nXVZ:H9sZҕ&CN-󯭍H}}6TXz饬dLР '}zF&Ѱ$Z͟?߄1>9`a^*:R^{\ݿh>KQl*Σ=e1MqkGf],q\G97puM9U3Fmh@杝]~]`Ilwmz X&?Vxrl6͘*.\j-ew== + NE`E]bl\x%6==uYkip駚[iE@װ@nwTZu/M[>nø\j@ϙ?<2N>x?em6坡_fLhp1pL~Zݢ*4ءҖqZ40ҋMf{V44W^yүU46;y6~ {/]s/X3 Oy꦳Κ*cƤӖj#+\SmCCs=K6|Zq!eg} `/ &ԩ{0_}YߚkF҃PubK/\?@ihj;>_<7jhh0:8k5.8+4dYH$ƮSykfkdZT\]y ?am>:'{gD: +AA>Rh՛pPi˫T=ēgKV}nooo9/um~pս za^ZZZ\jw^E /;(IȡkKxzhD46ZPуݿmX};!~ ns=F+0;WeʦP_5ꫯwQ:T;v6ھ?-@:] tQ:/I1niZ$[c2~ U&i6?ŪVhR*{n'd0}J>cƴdkP>Ζoxz֮6d#)F? t.m 9Kѯ J{U6O< lN)ݦ^z\er35hV _?}Vzq3 R~'JO6A>Crᇸx_򐹾^&G CF J>jBKr7>y3rXve5j@&fϞm[jLV81Lf+t9s~/ f9أe0N8X KڲJПt>Oe]c*hoTAwb vm ,4A.ofzЄE6/n)SVO> *ĉMmZT3Wc& ]Z9?6 (yV&?]c%&-tD9?Ѫ3?tӟaI'op8qx}l{2Nn% uҭكvTVح{mSt-ꮻ`.`]wa%/+ϖ\2]a$m#j{˯/kZc{eܸ.2RQfmZK..fO=s,nPJ+(|916UY1bsQ*̜?:=֒@8J (gO \0s[ONp8]-;(`ۙ ۄ ;gfvGg@g䴦:_$:wɫN7U(ZuW'X|<&<󬹮z`զ糙NyfbK?dͥ]qRt KoM7$or08ŪbPJW\T7ZJn#^޾|mo;`-m@5|~srӃw۶Dc*z%-; R`@ {G"[bNczƴ.zWtrrE^΋qiS͙6 @~KdҤ%_9hLz?>@*ѬYko0=J+(|YU%oN׸r9ӯ~[}Z,M}\>Zp-eYZ]wmY\E F;ˠ7tҊ;TS*]sΨ/hP#cFZu5RAiK>:= /ϊ{}hM>pu/rVD"[s#~ac/|{nji_>(ZE'rT =fNt5{|Ež99 C(玄aw@%JL޴`HbV V١zF4I6oN:k=?iJ=9&lb._xEUDz㩧a}Gߧ؟cke$pQq٦ MQj OcjD::M;+^zJV[}؁YooԴu[gI/@MoٴS;P $]v\Imb-u?۞gjz,Du|?zD=R~T[u,{a w(ғI۷ӋI*(ӥ[Q)1"~e`-lz@U 'mv7|?_=BSw%oz맟~ v@M7,sT3РF"])~ҋz' .97w}YqhV:x9cdM7uם{s[,z٧/N>FO>YL>M~˟}?#3M7"7|.\dj .8W~ ~}v,~>~^}2\7sqP 0]g9kh2vX+9?r ~ˣKL뷯:S߻s9Nmmϛח{e 70ۡ>mkEo!3fG򗇬1SE?KZ fm6>eR>#m{.믿nc]VsuցtVnYc}.khU>'6Y|]NLMɁ/_/5-4Ok s`3+\trTCM%~um'I~}9c] g7\TiЪGߏGCm|3 mݦ[/p睷>,Dw׶yͷL4 gV055g~_ȍ7^$龩tbṞc%Vo)s >=r?AW7*E.KuAǥs 9.׵y`̏^ sVhOlTǻ}JV wM-#Hft[-۵ˉm&zMN9 ;쐜 ꫯB{LseiуZ-m!R"zٳ de)y҃VLJom{;[ZKzܹϿڈb4*5׊ȸqLHPDjbܸJYhn~ΞGܹs_@ j'yBv(D8#mkllȣǾ^J z2emQδɾKgI9.YWR o}- sg{BH.rAr=cz.wIW3s9|93́i /~q Vk8N=MG szǮ l &ei𢁊ݺpr~g=u_^ϩ(_]o;zg ~r!X;ߤ;$ʗG:^#ΞOҔ[i)q$eK;Ȅb=,}W*cYfӂ~ P:Z}lko@_c} ُP 0(Έ']bvH U?WdZi?]kH,wLꫯ}\}}7  =?es;h}~ (p?˶wK_җٝoj`qֹI]x⬐3FiG!<:iM_|9cƎ+^z N=O2S}^u@{]92k3h`2v [/ *R)J mJ);(fXoc54W_)O?<{I,^Z{r? ?P08'r>-'_/_  CQqGˆAGBn~yKa^Aq3 kjj2 ,o7{y~e(m @9ol (yl?rR~9g '( e +[z~Ud'Ϟ+ɮv"=͎gwŭ.  â؎MsT B#b@ι3sQ#T *CPe @!2@UT *CPe @!2@UT *CPe @!2@UT *CPe @!2@Ud `@Ə'@!2@UT *CPe @!2@UT *CPe @!2@UT *CPe @!2@U&((Y^|%B#䢋.9s墋~-0Th#Ds @!PP*vYUd1 I>O=<+JOOO`0 klV~HCC@Ɨ_~)gyyO&So{${lцz70̙+Gyt'?dy_`\w W_MlƲrs7ߔ^{=soo\rerw37Yh.|7!---2Kfm*455eH$K/wmvm+nqkwuuɕW^Z?UW]ŵޗ|X>2{lihh%\|vlT ӓ.|W_zN]]]c~륻7UC/z49ܳL4p6t/Jmmmyg`V[?;By^hƏYE.슜krɧ̬q]y9IW^u|ͤ\#8uuu)L@5! K,1ILYյwޕ;@?r7 lZ\wݍu믿s̯Pb9C>[1+7|[n-H8s[ƽ;9_Y%viiz;s[+׿D84dwE#`sΙӟfiYl+l${|[+o-ݙ6x#2.nme .83fd@gˬӰgֹ|>,[P/[lwڦSO=IgCN<j.yGRPXm)rr-[q:=I2uY6W^y!\s͕Ƕznwq\|=No[m֚=Br/gpquO>@@+{<#>+3fUOˬYm.xR)?̝;ϴsӰg̙ygr-L8{!mGASKKt~?OR멯ƄPuuu2^|%_맜rlEO::LE  @~̢t{ pU@~O~Z3CMOݴe6hU?ink+ӧqܼc5Җt6 *)T/ 5 ̙czTsjPo{H` V({}r 7YLFHO?@U=v @8-Z(~mp8mW -р'o<$@J9Srɬi;+D²;w?^SN>_kM76=K/l.촓{ǻnoFrQGZM䜟h&K9h7B!7 Bt@/Ƕ{AX&Lpݮo\׶oNgy.u:/OG+~|as[C>gqu=orߖs\|2uٮ˹. ʹ|AOPz--cO?,ӦݙƫKxI:9go/=B9i7|3s{3A70ѹ>y.r%+2AvۚHzΖ]vI`q‰m\d~$2M^{mij 9Ztw^wrӤlnh4m&O,뮻Nvgg{ {K244Җl:,mϠJ  Z0-c7yG2뺺wjآmmB2}rgĉ_6g a;lgݓo%^+849蠃7jnϚ'h---rpH@jg#0T`hh9묳\u6lG2˸a0x466ȅ/ˮ߾`J+(^z455ַw?+L&O^^KJ Ca_` vs8MuT֛rBqʝw&F25lMdڴ[dUWRVtBm-6]sw˹_j7\4Ґj%0L]v !Sj@%\:|낎Kr\:g%}1o (Om5~N*dR'u]H$ìfܼ]gOK3aK'Iխ]y]Yp`;dV5E)/0_Fۯ{H+tZYa2iҤ`| P(hWPO-mUIO mItnoz g{l\.v)l*m֢Cy=YRK"E[@jiiM7XCjVWWgÁl*ia @JA@!2@0D_T *C((ppˎ @WvhOz FX@0X @IңT*%ʎH(pz%L te P$@OF<@yc/{,@F3 A F{P^羏  #XA!%(+=e^=byD0pQ21'9SU> J+0( Gz̕c2@*6ӛP\.ZHc.Lef@rxvi|Aӎ7*c-s+#;4!Py 0c;s?@`=,cFMMȴ-c,kK^8Ld^ޱUA/ @^γ9yLkJX:JqX1P(gz&F Wc1@{ Eӗg餤&ţc*[ѱ{p F (o I$1[[[Kc)SJX:1wF`yʶh޼@0:ұ3I WPH|c$uJ gT$i$TPjjjDEee̘m.lPH[lGd;2~?BdS/@P9ZO2B"Do"FeѢV핉'YdTtwG+B3 EQ @F*lv& i $ k}z!df\Xb444@K̙wB]/ ?LnC (ntgeCk:PI$沶δf5iI]]h+ ,h4fBRS2m*lt?ή a8 )E@@}^ãYl +YAPLf5 ʸq㤾p;… qQҴqQ8 |j;)=a@9+u{Ds ,6(L}HXLU@ѱ{& {Nr3@PvjȾA K]@^6Gq;޴8f8(OPsU@wމcu~L;{Y F@Y(NCn- ɵI_ k.c8Vcl욍e1lO~{ٲU gkY zo_{o?.ƨ٘5]٢X9 N-I.Vɪ)M5Uàz!. :6_ޮ ;0=c86mSǾͧS!%odWU@D>_vmGǤqlǨqc?)}lC-OOe!ٍp޽ǢqL1kYxXY@-VMU9`07nܘ߹lBƱhƱiiصlL_(lcmH-S۷_ OX8c4Ucbmj{ئ(_ST7gggB & nOƠq,fȇ?ecbSH~ 5hɥ꧂KjCpzz~_5c8c8 U`MNB ̍͛7':?? ַ½{BcƱfsƱg?ƨO4 `@kh*(Tg}eIž;wwF#3g8c8Lkd?ӱhoQfjQ#XNco`/śEL Rxo|8W*?ǛQ &%w g{3h;`Ыm>i2[v]g]dkU"8Y_G 30>꫷'>?nݺǏo?λI~=3OJzbSYK!̺EDkM֭M ( >'kA8;;Ax{7|?O?t13 c~P':`/tIl%Vpt@ٵqٔo1\h777&JA{;'<ԏM> 8R޽'>ToY3 ~qh}O_Mi<l>@|.|6N7,&Buy8oa?<3noczZET?ѽɇ3ɇ4o׮\Âgv͟t}s`MVo@6F(w~Ȗ_&~4>??aP?LdO3<^eOO“'CrpЍ>VfÕĩß!nOo m;kK _H`O Ǥb5Pgtu] eԟ|+~x8ɶ6Z.^Sル˜fyyI5,864S9叝O8Ƅu{d+9.^ӿz\c,bT*,{m($zƭZy *~pggު~Nw6>VeBqiUeKja MxFW!LJϙ]fKpɓqt*v^7o ش/^W?ˇ8mFdi^NG8[?_O~u~F!lLvw֭+v~nj8`\T6#3%=@f+wß@]GnoxjlZF=AUQ8W eLϧA6%~>na"lC7>''[c`[0'gjUO/칚QKvnGʁp aCy fQ؄Ʊ99l׮﵄>&VT+K}uS3zkiۖ-Rz=wpcal4}yM-f+ʹ̜z_Lꠋ5bfPb04yek^'kLA z|lj|W>;U\ ~kOppF Sov5}\6}'[, z؁ŔpI5 YO峅?,HXM=\LEUtʷuoQ~1jض6(Sʢ8G?i%N7C~Js?항z)Nn`w|og @[1Rg]vZ_ ,?[vZOc^n] _┖~K8{Bz#-=ŭ(2U̪G㧻p".(ڿޝ<ԋYCvPK>E#7/ %M˳y!͘}]tmM]o.uY3..? 9ʦeP6[] qe.̪kmȳ?8iM5)ߺePYSz3F,[ .BSM`~e 7bٕ)5No Ia8pcCTbp;lL].րhS@M4?oTr$w+q/nAf>)!V-OS:AkbFm㳸W˱AP: fyBRp1\eKnjitKE_Wh/m>m>?=N^ 0L_2=}ſoMaȦwKS sMWBqEuo5~îm2YlQs毝$r;h' !BW=6+T.Tߊ9FoZ=f%4*;.WU )Jcqov7* BH?ū?CV徬' * eVȝ?H=]a\:o߾>t}3(f a10'Ȋaϰ5k:+U?yYPqM:@ ho`p X 'V]\}^!I?kUΛiP<ϑJȪ_f^?hdY$cB |2bOU?oeU*V5]_r/lv_>z@pҺ?o'dS= kU@mBV-SH*GIpڣGN|U@pRV!\ʧxy:J*Ҵ h:@}]P?*^xx: 8M^x_,y<> ӿU-?e㢥BMT%^MFme|.8Lß13!g !,BjkѿLPeT=>twݿgj:88|0$?ubOgTr]:k V ϛ?U!OYTskvo?x~I!oQX<[1 a~[t8j jP [~po߾+n %?Ǐק?Ӿʟ5@V ꪂ(Y:ZuAeSтk+54?>CǷ߾k˟APm=ѓL dAO1K(?!)xOpQ*yө=p7ʵ_\/9?ُcIӽ-8oo/ҿ! sbsf+~OYSV§o+ >~85\ݒ ;ūwo__O ~lS6[ٴoJE}qyӾF,yY5j:NS@C.dG'''? lN>)w_ۿ ~bO\'U'OW? UJ)e cQO*dV\;jBMس3O`ײoj6mMASik_D6-b4 m&!Qpg&}k@a@mׄ.Zה@u"hUՅ2MCe&eJU5PMP<Ϣ5!kjm,[S'oBuWr( j֤ݪ?ŶžMCb@/\ۤ}QedÚU;˄={W*!ТeUmm`-S-3Z|@yU[ݵLxlj#yN6|پ6[Pj.Ϋ8v%2h&}[P::zVi[w ں~} .+kEMu5\Y[WT Eˆ+]<0cAPY[ ŸhhV >M"BvѪaȦem{(}u5%VLO>@*7]Dm^ieeP]&;kh)ٷupL暝uPjEkX']3]TuJuUGSmMCmiEmu<$v:C6u5A?ѡ@Ѻs a70oٰe]<DE˄.: ]dAA?ѡ@6v6*!̺Ρ@ѪLׁcuزlCuo`{ m:%J{i>I-J6`M2G$%E]{Ypmf `} ` }J |N0@B"% \J<IENDB`diegopvlk-Dosage-bd9126a/screenshots/today-dark.png000066400000000000000000003506021514145341100224220ustar00rootroot00000000000000PNG  IHDR4L&tEXtCreation TimeMon 01 Dec 2025 09:59:31tEXtSoftwaregnome-screenshot>IDATx[݅R*(P܊wE?ZܭPXKݽ|96uwdLd9|@N!1@9  Ccr Pz8x)E08C( EP#42Px?^Ax4} w  (B6p!Ҵ x=$_*B6"Y֓'烠h$"ڢd.>^N@Fy_x]"L(WÊx^WI{GD Ob}x+炠\ RF5*U;2VG։gX"2I*ÒX۝uY7RJdC@.KEu;c]/J0Ц5dLH'UC)BDTz%ɨIm=HjǑzd`s'iyۢ=ceso TW%z2MѶ`!3mmn.q v;,9O(^ڗmX{?"ݞT Zf= U9"p(* w塪x+rWS2Բh%ʰ!'\c_m$apAb-@l6p*}µtKdh *!P†T?V8̋eHJ G 6/#!dD {MN2kc\l^b=f5ŸpO 2߲N^ ! `D MBU4JK(cX/c?zv:0׃E=f1ܖHiY'Tc_ V_Zgl>QALW`tjL /U,wXbp!:ki,^(>ye=zڰd=3^ójwv  _h\.Wښϟ;yժUUhUA-XPUA(磽-& /1kŏ2ڊ`OH]m^^dO0CSS/rѢW/@GC: DWEs{T3uYoxYYseIr*Rp2PH$ 2JF7PcD)Ln8iZy?SC7rH/u| O&0gVV^FUDDSc$U"P?~sZYCd^SnZk;f̙/^<gqgjPA= 6.b{ Ks7:!xI&٦"3i;Δd?H~N]łs挡QBW(:$ \x˜X R ^{3OEE)KנgeUPV?@zbXbҥKyoµw D!-Ry+l`Hvc G <ر9;kAM˟@[~ Vx|/f ]X%$E$OLìz͵ꧮN :t`U:˗@.k @[~.@)\cK>Hگ!o̫E]]!M+fJIR?[i\4E:VWm¿4g 1~R\}[8 l KX)֣]$Qь dwDXǺ̺8KQRch8\V[HKf ތAZEjgmΑ RhRP\Ԥ(о~my} %mh [2/}L}oXh+ϔ﹞k9^on m=aK \t>Sx34k\%كݛsuewU\y(W*zY=z3Cm7Z4 5}6[ACv\"N2*}f~+p4ѓ?hN=|oӀ5iقnf xi4J4HYI,PʖQ̇*Vy~Jhd[@*5CFEކ 劽;J._ ABX%T\5T RSS-5M}}o5W͓'MEP<E.k g1 h¢BA3}/ >"ZS{9brq9>>W)`cjU t2Skf ެAsoh i"7I%L G}}e<;}u&ڄ0?x/%|m rE[F\|vC_&UK9ìH"8kv>R6p3?idy>#d=7={~7o?^y=5hLt[\.JxD7O•:P5K/XN88e[l{ ƛ@OnZf7`Zf5P]z2sLsv8K:J:sIQkFL@hV 9\fWr)̛7_]gotǛjŊ_zdѢ vn<ҡC#^{TUUIӊi @TQQ!JmٲeA;(LU5T+b?"#GqJ~9>ȑ;hngtU}-gc Bw߽w4R6Xgudذ$//Oַoy :v {챻޸`RTq:Z<3D\ IAAd*6VM!=Hļ^T&lbzwE|x<駟T]]-$VtARcǎrꩣ+B4oR&?gЪ.ܹ$[.UE{dK1quԱ.mM7`>Z}gO7.?Vvq:; ="shk]>oE{_O\䚩St0`=&zT++QmԱ$Cex@=Cӄ@Lm(z)wWܹd 6@&>锻]ǟo#rim~Qygh-o;l/rw?|Ga<-;| 6n?5l刀vijtikH-[4E*=J*s%<$dVU "kMoGɉ' iy衇ȁ /< $*mB?Wb}T1eʟe3}b!C6[f=c2}wREoYaazccnq8Zz${zdЖ+V,O?hsy?V{Zkpu]W~A9d@$w%לzWZ gyLJ+(ƌk yKϞ=a«$o< ~C=ܯF޴%W흒ao^55-^XVX} dۘ#7:Rה:PYgmi׮(г_{퍘v8u]vYF!a%KÏetlZ7M>Hnme-ͯ\ʌ~s}RSS#@o<[svmd]GgECC}>G%믿~{eŋw\ڦbvLtYw̝;״{6~am.ќF{{-Ko1_r͟UK0r'Ӑ\{ М>:V/]wWΕ-M}V${&[oo^+^zer䑇K߾}d9rQOl&ׯ'LWf͚%|}o?jM.ӱj%믿PAg6x`[o4'v{}k| 2t?_~կ~ތ}Yc}SDb֟C=X[o=S]g?ϝ;_ ϶1:^?k>}}>?z ׀GC {ޒ@GD+~c=hp v]D tݻd=}G}\@dڜuAk{.SLK/spm~ЃTvG9F |nӃ?:'ZsO>~WeٲezM77[o /RRRbop/%WtA-_._xEH@jn;'o]vhnf|XieU:~T;Ai+<#GlΞ<[G_^}uz&ѣ 1Gɷ|7 3<ݯ? H> ݉c ; nf~+CF\ U?dI!CjPkʷL+mC1z鞠⟠{Gw-׳Yga3NsށoN褚}P7wy~\sM:6rnرom @l~^|&:KC:s'/@Vچ^rg- } Ns"7  mLn{!kB a]t6yͷ't7u^ .}] ew>z8dڜ9h8pcwH80ꭷ`=on=H]WWgF{~z]Fw&ch8rWh5ЊO_7fR깮6]G2 F (BӧN+U^{O1 6*8{c׹sgy{e 6dѪʛn1@gu ynJ#`VHJ, \|${T@cebZ@| t̟+ʯG\s͕뮻x{qHޡX2Gj;`~1^zghkx@v\sv@m&{ァ{VX-X]ep}:G[zK`Ν'Wxjl*lDg[֜9s|_{ wQ=Z ?MKmqdRS!l }6|'9tvi XѶhvmϔH[i"Zm}UUU/7|kVmtj #j=qƌx}y޿fsŝ5P[n«횴GO0`-9|UM7 ラ,Z8kt->s`[o0^6l7z?$V褕^l0SP?@]R A G^xI-")ٿ^7Yzku5Yxieu1:Z~wqw ']ik5}.?c}~>3SN3=;ۛk?Ǜ?mСC︗VʋW_hZAw]Æ 3-4Կ^MzE[iwZ'wv(1q/-DtcbK>-"W*_w+wK{m7dl{9#ܞKT@Y7Rt^λ;OK0鎧U*++ͼ駉rE-۴ENz Dx: Y\~yM}`w7vziȐhu 'y@_#cƼ׳ܿN5X6,y4okvmՖ& 1ggT_~y$9 3dV~Ǟ02 Ճ/?#,]wCsvءGˁ1c^B/N*=0{=I8zB?)~T?3ںi(deRAr]|񥦺󠁁=[l]ihryH^=[0!BΝ+2o@S:^hmߕ?ل)JC3^5UJK;$%%&Q|ɾ;-ٳ=o7j.5~[G3{n# f=ߘ_osa7@٠mҬyŖW^#?E~~a۪aa)&5zMp<:bkұ~%Y 0u_NޏWn Y%3 Y.%QP:*s2:L^/@=}\W#p{|"{Dv-+(5\x$ Yꡇ?^:Ptl%^#Fտ__iHWn<[7^{9s3u滮,i?ge>tJN Ԋpafz JoI[4:~Gfx}[|>=փzU҃JZ1zi&ЉvI դ1X*COLЪυ `„=ߦ]9z#|ŗ}ᏗV<黮%뭷o:V4w,DiGo>s~GxJGvi"xn[^{J8=/Qc15 E:?k <i;`'$;Qx7AҌ&y J}4c[> n䒋^>\M Jۊ]y5[]cIAI:k]}>m=ɫUғ95zU(},a/=kyڴi₩6mdg>ﹶrT,%WﬕqWAX_~+m=ooW}:c|:h ~~|9X=UE:։[o}cܸ/B>Ge shqeˬYͼ~ .{U,RMOgVj5}ҟq^*o=֖d-IR>Mg2 >6 _IOO޽Lo0h'II߻xFAVZrHKǵk„̘?x{:{$Z[\ Q}Q^zv꯿&wy-]tiF!)GόwZuwCa>}__0jԡf o?mfΐV+ڿ! )`SVa/6M :YFk#=0:ފ1q^{ s?L QAkl f㥟KM6p>{-]f͚eՎZq;|pM͝;;vz\c Zi0z" Fsi$=5^o*-.W`'`{B`%_~DC?GE^¸*(^$FUۛpZYJV>S9ޮc!Ӓ){oT:($C=*;v2Tt뮻ڜy=]۝{2~p{5*$EE--,,qF8Gq9(Hb=\۩xۧ-ڶK$L`"ϵj%~]uDh8Ak:cumӻ's~̡e%תUA-U4M'V-迷V!dB"џ7`LK/?믿uvk(;mqq|mج':5,Vt}@eLt]=q>~Nvߌ2=zc݂Y>{ɫ0jf=묳;,\w?e@gyVH6={榛yL0`@83R/42ҥK{aZZזI^Z ao5Cyv5:nj^W\%O<񈄣_hj }l0V9^:o.@*mc?S?tGy "'_ 2ĴV>=M7H,tt;7o^rgA< }1l9ܷo_j>o<d믿o&?:u[6d`O<%`E~~Wֳ}~N9dGOoKL>xdg_#z{u9Y HV&cGih-!P #cKJE+zFμر/]vESu µZPIVqL:˾LNi[V=p?OW^y ޻766yvB5S̝;{o^L498䐃J[caem hc}oZ[*?kij.S/q7ۙs /c[Fvyɧe?vg馛 g.=s@*i+ ZL?-t@a=AjF⋖*JFߥ}\?>;=s;R& z0o@lt;7Y+5 ӠOΝƭՂuՖZ;~:[Ӏ?XZ߰a/[ \vo|{>}z{-3>yѐN宽*t䑇nѣߺ}8v*5}{Jh0}ot$Yc:XEY HB?7l.V};\ID%dѳ36Ӌ9\4{}d]+z\9˯M{}L8TsBjr睷mV?loϿ8qE>-Gx$or¾~/hnV}m|r HN=d߼ɶ^cƼ$S/I.V*;龺@Dձ1E]wkat컇z@?0T[km;^u}#n[j #!VM۽zm;Ơ-wsѾFS18v^V x 휖mUK"=rgT~gc ={4}pu̟Pmt7h@dZ[vIC`'eh+VMOc}t|SOwZ3P޽n_|)27Ǝ}ų/0_tbSw\u v݇~"zHt:{\OT:W_<":Fq?' 7^oSy~?7t1cA[omq>o^lO0 (T ޣ[&:cS^}Zs=N/26:p-7N8J퐡߯DC/mǾ#=zB[;/ -Zoބ^/JMzu_m|53byT/}҆(뉒q]a[UG Uۜ!ce4$>}}i]wun׀Gˠc_˅^ %zFwo fL>+{)S9Q8Y{_em;;:ƊrƌN(W_}9cw[,zfd2λ/19鹎Աձ}yek\py~S0!G6;5իlyzn`dZZZj-=|y䑇$7x0^Vk׫'jVyi(f`ST/LZN'B}~t3TGp)%mK8ݺut> gvѾڦW=X ZmA>3cژeLU?ڣk׮ɥhi-mѡC5kV\'hZS^^fEkc[!֣>.Vs~'s86Tr:VŃ%KӁ3V-Apۺ^޽̙zZdo{TyVzPVDz3UiK:v(k_DC+[~9e rt,.]Jcc9~BHkЖxk|0 Ak/*«(})lPSSNR)=f2qܥܧ5[E>e5ez0Fp餃Y=QK.3;I'av굯s&PrW_}#{>W&ѳgΜex>zN\:qe ggj~? %hYVqâ{QOB9m'E&M,[lo[o/cv)᏶QJ\l23C+LSAxOH=f/Y1~%:y-PK tqʕҮ];$MƎ A s5xҥVNgmlb6fL/ m y@<NOBॵ6 >m6jj`%|m 9?m߫***@ҡAVZ$h@ f>󀶅yH1˖-*I5}}.Ÿh@Kama?C*--RIj&AH,]ekJ~%|m9\kժJOT-RTT1VWWgB%[SMPSS{m @~6f3Y =ͼauf} =O#'IJ`GQhk?4 _2Sڸt \k>8klA5k~m9V2= }kk@[~V[b5k4k+@[~-Vs\|>\_F}fmh 0XlYN I_E P.m9оRVV&i+*B(?@h A$T\\,%%%RPP Dٰ۠^m9DFX)//O %?#3:.ijr`<.=M_6|m9ć(JzZdž`|hK@6"1@9  Ccr @!1@9  Ccr @!1@9  Ccr @!1@9  Ccr @!1@9  Ccr @!1@9 F O<^:v(X|.n[\@ 6(GKIuu~Iyyo~hbI_U(s}Р I塇1Uenj+ozkjj䮻lvHAAoꫯ[ZèQȐ!}:Fx-Iŋ-YD\C ![o/-\i-}ۮnݺ%\&!Ӯ];ZU).-Xih#|-GH&֭{тOx1@=@kK׮]޶Z{IfkSϘB@."-L˴* uIN^b @a qq:~4MMMr-[V#߈XhKhҳgO(ZYlL4YYd$CYYzhᆛvKnՖҩCrJYp|O?Kccc(..6xaҥKg)--Ks/;v 3jl~+y=2l@i߾o?Ȝ9seڴL7aN~dƌ!gșg @-A<~+/|ǒms=wޕxtM;lXuѼ7 wiœ`49Faarɲֻw/2drACȏ?{ァu2dMdwoURi]GQG)CbUTTJn[I 4\Jk w&\s P6t ; ^;+mHj. XiHrg[op;lXGN=q:cg1tP9/HZE 1{1bc)))ϛ7_nOXp' ĴA:Ѓ>Gȧ~C+h+s}iom|-MVAyih-ɴ]Wvr!ڶ^nC~jia+믿+mO $*,/eާG I~w1&kԨCwѢE7/jګiՠA$:u(guzR%=SL%h fC1xt3v5k9ߵkW3߹sgYwugm5vkAGyLz.={6W8yҭ[W^-=i)ɔ;'뭷 o^n6>}װ/2Bު&m 7x 3iĉǹҋMHګ7yy}Æm$s Bk=w[Se}!y<kаK _ c$q0۔,X<d3*,TPjjjJZvꫯSN97( lA_0vy'_ɈCooe_K<{K_|9`?KG߼86N&L/Q$ٗm0Sc5Y>z=C m%Ï ,'xRsNk 襭u,& Q &hp`eGv7 ? [Ćn?ȯ- O>6^.fRK,1;{Iz[6h=1:v7߿3EԨ:fo;֊f͚>:P8稣趧쩨f-HkWeС*m4Y@Ls䒋=믿IN:>|Ӡ1FTKۚECۚ=Cr7HII1z|Ef(fo!UWW-V۶&}$tlTIc@ jeDKuHCCr 30뮻 0)SgH-Z,O=zh߲HVXy}2F~t=2˗Xk59Yh-駟 1ڦԌYnjy3~9g\I&mAe]qQ?0߸A38̈́!-2^{rhٳ*G]7 hv4U4{a~ǚ)w}ϲ (Ұ74Od}͛7_o)}>}{@OnN: 'gH)~pǏ:qu}mKYYN~!Q=3~Gq@TMuLm]믿O?M;7$:З_~eH>S}|.fٳg@Kg~$L,˞{v*O@zL_N˖-3۪մimɓ嫯mڷL.\dƵb꣏> Mg=zt-֭|~3g'ЎǞ믿]w ]Vٳ}=cJݺu { E4 82&`>|SSb zWeYjkPbΝ+z{@z&h8G[Yo{'P9>2.{o{~2|=|O?@"ҖbkoYo-7Zכǟ0aI0Zq'Ʌ^tdPky7n2PVhV˗0_&+W ]C;ۼ3f} 4>3䪫1co?˯4@ј8+/4:vL=믿nʨ믿Q{kUFǑz.SeN˥uʳ\ZdǰaM%m1 ;x36pHvp.K2UEEС {t\';w]HYY,ZT돖O[GCxzGA_Vr Bݿ{T,]TZc ۷7'6Fz@L;՗.\Z' ,ܥ܇1d 2!0KS",Ybxi3u4I }fΜix?kVVzR ^zc_-~),,4_{m m @!1@9  Ccr @!r癜p0@[vWO.ijҩIR@JhSPP`.ڲaײ\C )YIOaa@hzE''T@Bۻy.XH[RR δDq@´[qq ~zbmii֚p ѪmmNx9Ngs)..Үf(((4W @b-݆m-@:X[ʺ5?5T-V@yB @gcNq4l4,6dD@ßFJE^M5+oZܫ)zlrƚ񀔛@DмGeݭs-Mu鑗'HG ,%]696W] } %U@"!F󞄳H_;֦@XHF $$qP* e׆Ap5 KjA  8 AA▒k_^^PB ,݉(j#mMr:?""Q~I~Mr8g~SJܜjvh";c6B# м{N8 Lyf[@]%\iPA\Ek8Y Y)]V?^͙dҥKgs[njyCL2Wv=[FObKŋMO u]:G𢡊eϩϭٌ QȬgS_(FY=S*Fa΄7oL>]~yH}Q=kԭ[7)**JߩdҠx;<;.5kYVP/^zJcc,\PN*򙊊rt2gϞmٳ F-Zdof.]*Yk.RRR* {ѷo_s}e/L=ztٳ$W^^'xi'juOuu ruﱥ%, l*)),7HmD!s*%tф?J(X+ѡC9s{n*iڴ<\_ ;XtM8 :thRXssك&6F&|j gK(nW= x4J+\4 efeׂ̘kӧϐxȔ{ :DN:s^{!/Rch6]gORGC#<\𣀝_MK\[SZsmwP=>̻첋ĪPzi/L}lvu/Q&$~ީS'S-=!/Ꮥ>nncNiDbJL+\ -6l3sO?ݦ-͛oEk7UY:V.[n F? IJJq„îc7cLAѐ˫{Ovf+ ^B}_L'{۪ ـ@F3"Eښ,Qo97U@ Ri7o˳C9Hva;S {n.vbŌ3B<њ>}zۖ,Y_"))>m2!mmmmL@2\P8<+}~klK`J[\:ut)`]ᛚ6jV-ڑGn*|e(s驐^sxJ$S6Z[kZWX,1=>MJH EJdw$ku84hCORn?/\}vrgkkr]ъ Ǝ}݄Fsβ뮻ȇ~,ݻ̜9+w]+?%Nm,..\BL@q8$4홫ß7IϭNnn^}SI۹j͙Ksɔ)7|3q:[\huVe03f̔w}\#znImFٳٙbo]]=]:- :@23Pw)RԩT D5k(!j߾z\rW[iWvq{ӧwvnݺ&,P\\$NgI.#F26{k@Fr/ro?^6D5?:QG[y"o̥sJ|i>8jƌhѢnjjWȹmI[r%Kʧ~*ܠ%xo5@` L[D*JD׬\؊+@bA[8MytI2+L t)^goژ+MD4HS] ~:t ;w"gJ?í/#GlΖ:|u̞={z>,\H=DVZZ*-'aԚ٨]v-VjI+jp @|t,l5qFECJtV_Zlri$̲pb>rZ8gjۿ%UCecJkO˗)Z54m4.aؘ-%6|2} +WI}w~(B 8EJUc MU, D_S(**]w8RRR"]v 6(yyyf9s v+W;4mfqZk{ @(_9eע)WȐ-_BVi?|MMMbrС'ii9L~~ZJ@***qfu[ [BzP+M<+,l֤-<%K}}Kc=+ZΝ+f2(˗/;UiөSGv(//VF&@~"i)΂"F:r͇~ xil2~6 fK3%w<TzS;]2DJ="Z=kW} ~V.v`yhj+ < jhh eanu ҧ2G 4 AZ1,''T"e* = ^@ - ~R  &{#<ċ@XY盹W>3YZn=d7BUH6 IgV/ R^;8 _"R@ʴCrcH iP? E[ FPDcr @!1@9  Ccr @!1@9  Ccr @!1@9  Ccr @!1@9 @o>R^^.m]ii+EEE q)--#8L;Pӧ˖-?R|!:uZrɲ#$>InvIc9Zvitӭ߫W/9ev]en[͛'<Ӳ|rt!חz\tp[ǎe}ۄ4}O6`o~̘פcfٳ߼riŋ$D?K4hC?x 'J$:y[x?_ǘPJvء{Ȃ |߾}?Ɇn >~Ux?/ͯg9|뭻:[mmmcf@O?,JN(̛7/`3­{n~˾+ Gs9oٓO>)/HF( \n[IFno@veduʕ+_H% Q{_Sb-;e3gΔ?C9cXRɑz.SeN˥uʳ\Z > 5JKKeܸK.eZtW@Dйdȝwg#k?kvMx%Z_uȹ^j]F|]vYN?4߼V\qUܹ:t8-&$\sW_ҮFvy7XB2Gĉu`p=3ܮ՗.\Z' ,ܥ܇1DZF|GϞ==AMqz>l\Gyi~ς |Dˮl=x +++eҤAp襗^[馛[o&}?҂@LF[]w5t"_gv}G{ZU4%V>ʁq;;&Hc/*F!~]۵媫ѣOuJAAo~ƌc$\.K .t:ᄓH5XCZ[-[.3gΔ?K-ZQ^{؀wB^CKhPB'r `w-YjH}sG-wf9u82r{t͌bJYd!4i{ze޼fFd @!H2@I $ $Cd @!H2@I@ @r t& f:9nfl~|:yc&]@p\*)).؞鍰Nvs$-555v6"iii guҪj+h+@ڄᐌX46++S++ 1Vokss]RQQiZ@,$==ݚmCoRUU%ZvVzr]ځ^sȠ # ~ydǝ=#--t_k1R@ZeCуHhڕVk2@M4v˗wg%hoYYp8f `<2n\pنZ@̬@shRAe@n:咔@shTCtcB M!,'/Ya =@tJ h v'_?㤦^QTh &e82GzK :Tjdh B~ۻwuʽ^@rBhCӵ[*}@t 8svN>c9P |@FFԵj9s؆@=\nnԨy:nf~ h9pD/+qtl6&1@!H2@uMRvq٬n3bkӬGkͽϚ>s)lDHp# |IN[ßٶBvki!oXAPU{Rc:Ap@7NdXOsBr4aPUxK)o|4@#3'&G[{0(ilʭ!@$q9=ߗ5t*u{DңG-W4f~ʈ#pȌ3L/55L.˚ySv9WS~_|:uv{yoMM ʟ`E,.]rTC:AAg.%z`鏟1.qXn閰׮r9CeŊߝ,h_nO\vO?@̐t҃AOCuYOr R***%5E@ 2W&89@ i}WL9)q2ᏺϦ miP]rrrhSii HX]p%ѹ-ߚC*ؤ]+H7sڞz7? ѱ}k֌xLO s:fIKK5cE!Pff%|k8 =ß RdK-!P^ӪDmK.[4> g*Rjjj 4ҩ:\;:h7 {"[i`Եk7kr),,HT@V$R۬۞(@2zh|8)** 6x==߿y|ȑ#dȐ!|ݺuOCE};Knn|Ge˖]`;3ƍd nh w=*%K]g􎳱cw0UC99goy78~~ ΁e˖ŋMjHz֭[W\+kZ]tXipc ZdUcd-&@DC ?!1:HKW_ ^Gk׮2uf4?y|go oƇ_{1??Osd .8/x7n @3OSO\o?nF|/&t O(G >?dm~+]v BiKO?LLyЄaNg>cw˽ل?7)YևNo޽{Ԗo}}:0hS^5MҳgO)((0m DuHZ!3CN8^n7T4(tye]K{҃' 4={]ּ7W_}W7\x&уk5?,[,#/Øʠu?O߫ {)'Y!&Ѷu&C= 5=Bßիט"Ђ@{Sus i7E?z>qv BwwE=MmH\6乒@KW#nOI^=k1!ŝw-+V4˵&5\mƾ䤓&*mdƛdڴOw3 }zyCwC 4Lq:[Ctt@7 ۮϡm [v]].G~vSMYSI'mA㉋*ܽT^^|w=GTYY1 O4WnnNq~~55 G~'*"@ʴw:屡í9+8:O_:Ȼlɢ6}}-kVj-\4gi)rrrzKnSTT(Mb3>hxyWZZ"555ttsrrtSDS%[.STҨEyI6lm+%E1vӒefɳw/UMW4E5ݻVd Æ 3s~({hZ.+M1b̜C:4HN[ҭ6?J>ڼmB۶Z^FutP^'2^6X@ǶK/TWM߆ n-gʰ(gr9_ϫVW%%Z :c]v'.}?L tLX龦;d|a6&'i& ThҐ#Gr衇6!d?7|kF> o_fIuu4Wos4nKK7j<֖%D .Aa##lB<y`x1X^zϩs51Vסw*v kꢋ~oz?ڪU|ɀ/a1r񓢾6f9#~wZ͘1#WK/n9{}ib38< %tU7iUϟG9…{/}CMwT8N1bN;ԬȫVn .4-Vw1㏙~z#IKֺ4#=^f[\w 7z#w՚x?}Q;úv*s<E\yyƛ.==<,D͑1s7mvp^a˴ի隟{[R"׫yaJgT%\rEI ڰavǓ6S9sL0A (< {4PHuןK.2Hc~+T#h߭,^XZOɀM#7tK}m+V-&wy˭l& \@ee\qU"NUVVJm(r ^P A%̥Zcif]taRihE?egYHR H9_5<@DÑ~G=|SIVN}CjaZowyY۠wSwꫯ ;;w\~[oK,&x6r*t_ ameӦMZ~[o±@S 7ߒOlssس^'xHtutR#@<ŸCh!2}7Ə`F B(~S7~u _MtIVLJ@/X&ol.tbr!|r?VqUfċ<-?y|g cmC7p >mڵ12 vpڷyÆnݺfkL]6c}3Uω-[H"zӖJG*((̼.[k^ƾ5kD\[/C"&-.œ*u&mnݭNٶ/Jb bw{zN`"=r ;nl}s f֖aO2m[8S [S+ĺīqso @ܩm_6 (E2Dڢ9ePW>Vp̆uZ$) I!&^۬D ;:'JnL۰!lY.c M>cL߰^x@dVUU<##CM6G @$[FuWNgeѳ55E_ڴVD?euG1\3׭kYnˠAen~#eTݻwcܹdӦM{챻ٞE6n\޵kWm]\$ʰ%33S$6}xD .U{V?Q~\dcX.J˒X .rQ")5rnbde!E/3tI5ټy l/_|5QW_ .0`G.]ѣHL37*gggKYY$+g Tc@iK4-*"G[P ޸Rd2w_H>/)6-6֚{YF?+4: 7Ovъn?-^hJ*rrrVVX,ypIufM]c>.g\ɒңGOkD99鶆}xE nUz}V0qμ9ᒓj:DUy\tq?ƎThΆ erK>C["￿3ښ'+W/6`aOhp8%//WK$6:"$Jp`Uh'%jJ+_P>_N$vm~L_V\8Gw)rC[yWe˖Bi/55'L6v#xzcJjj+6Pl-E峂r+v?U:&kW7Ȏ]i_lg63ڒlT } e:B^bi5R*˖- `"233 aGm4 txE {|X;/Ea2=o-[:mJX95)u{$咶V[Yt:@YJoTLM-2 $hnSr@+zƗ|=uutߒY.]dĈ汶{ TaaֆZήr36趄mmD@PHT$ݧd|l[=CNlڴI,Y"Dqj{6/vi7Qc@[ ~k%ϕ"@E)Yu VPP {<9wѣ }4q\\MMtTS9揞6z<@r!0*^q=H[7ZUUUYSu2Yt,\$Z={a@huPiiH{˕zVFH$@J-I#1UY^j4`ٸqt ~R^`F+fò2iKn.'' Qƴ}@""p ݵՖ"i }^ : Z6l(]t1ˆҀF۳JEETVV5z0Rh۹PRXX($-ŕ0@ZC~?v[RKMM凵ShՎNڂTn i˶yf3w:f}e˖bϓ3_[ f4@lsYIW<h WoDQ̰;vGYJ  l;huQrt@t@TȼM-q:F~@S4?W,CT 4Flu+VJMyYk].@p=VT^!POnn N-Y^7@Gk5p (l:-]*l>"hZ~ &ʊu|^@, 4@"*,ż'%UоJKKJo QlKw#2@Z$*~7k5 ] Vb^O`n Y@h  %mE$b !j4^1 H>тh+|~% 1kY[C!'l(Pc6-ܶ;V򩿜`$B u"|Жmma֜J!DGC@uq@#."K? @BhxlGhW@ v8Ɇ}t$ J ӹurݮ-jk8/>N^xtO @p\*))f͝/ y鍰Nvs$-555v6"iii guҪj+h+@ڄᐌX46++S++ 1Vokss]RQQiZ@,$==ݚmCoRUU%ZvVw#?@ddq@hT}E@Kh/PtԖJII5d%4h'Ny^[^о2ph 8s"eY7!"ФŀNÂr$%%<&@z@1萫^sW :Fzzz1!h>'}r–ytJ h v'_yZ׽U*zFQ1@HɔnvS]&8:M)@ 9Ш @rBhC+kJ@r:]B)N&duS#XNC)T6O:8Z>Oc9s؆@=⺹_\ U:ݮ5#@8 GJCfhchM  h@9Spᴞdn%G^n{j^z -#!93U)ibwЧIua"֗L_5yjG HͰ>X,qe0[SaMbchF$hc?δ&ҭ Loux t B #T4qg׍ӑa}#-SO^u1`555fdG *.ScwJ#i,7~._x;Jqqt-5tyW_ꫯMtKIIvRPY͓!:L))ۮh0TUUeMRQQ)L(c83$hC<fx0l0} i&IfG&Zfģ:ܑ/h8ْeΧbPFF}R^^n4x^dA i'Ni0i5:?fN 4T%ʫ2bpYv|WN\ɑ~N[?Z@@+S%i@e;]^(vpGqC N[Ᶎ>5R[[kx<'Z9N3Nךj FCL)..Jp@ !%J۪LhX.]Lh|B*++ HC!SSSM7 {"[i`Եk7kr),<@"p- HO>2rٳ铼vz={v`ZW7n2z ^{nO?ޣwix>C \RΝW/KË)S"ӧO.>|l;o_K,t~bxٺw[iiϹJ:XCMf] A8R3x:NA%h?+{챻 ._U/_a*Xz.^[Cv*w }zVI‰VlٰayޣGy{C-֭7S*l˖-1GnN`fS3~xyǭ^ =yɿgCSN9I|hJ2)}-UH4sGC7[JC+2mmmDB`sę'B-@?.hrˇ~ ['ӍnʑG ԩoDO<>sѾ́~YrԲe /&L 5W_}|tSѢC;ɬ?[o;wJr2o<\CÕnZ~bSh{ oofIKK3!nmiۭ!.vGpqkg+Lz7Eţ狑77m 7͋:>PnnD(mZI}:3[ntachʕW^eue4xgO۱}W`>LS{B5sOZq%bK/uu?O`?4M =ʫǟ/bk^+̉\tѥaSGjOΤcDV qkHQ-TI6OC5 nV<3V ^QYr&i>H3-],:T,ߡNC5uQ3dƌ$ ,9sF}Ͽ>0`@tp_ y׃'2x@g. :N(=_ѶM!2mmD@ 8fgzl dHΐ}${I>B\:6Ok+()ERj.J|Jikos>W{2ҪhU&Ze֙;wĢ:8mi-ݞ{!h[mJ[iƎA3dffCixt[Bh;8暚jk[:% qͩ2-Vtfv^{/;.vW%v.vŸ hgSY(mF.k=UB5k6TXXhf-"UWWISiֻwo3QVV9myR5k4VXlܸ"$ ͟{iQg̹s @gЛÖNg}kn ku^YY%~_ ^_V8Җ-l} ~wywlJ[}TmPX  U^^!5-.:3 /hp 㫩;^O"rssdg'FBEoO?ttv݇bxE n9R3 i <tٯB{wOEܙdWC8z0t;@њI/<^rL,YT ur+\*¥kHk%%%Z1yG_hw'6wXD3HMM+6Ɯm#tt m @rfJ[H:D0E\Q wu|ɷRk-]g=k!)9}Aތ>2ⴧez2k@6:7n.b0kgn>36"-41\:Zo*W77z)..xۨ!mTu_v` h#vggZ3xRme-k>?dJيopUfǺlSdwڈcQL tL x!t㬾[i _~5QcƌE;~GZowvء~p۽{w[t[UTd2I%{JJ|CdYeoθ;:ŋ>/!%K«}4t]j}n/aZxGo@GIOK7%m' 쎘ۿ93J[?>Tb/?")}$wؐ$[f%%ktu o﮸*S%pPYY)F9t}xAcsNמݵLdKK zfm8B6_%j}o/k׮s9O^x%(|w}/_|?/Kk_^;+@|~>4߯Mc>#yGö1PV1urȼy__~ .6SgϬ8_MԴSG7|KN>yBkz=RSS#FY=@I -l 7)#li-+Cvh¹JK'0Z[U&RwZ]ӧOٳWȺuݻI~F/_n*VZB=+**J[X;eer O233*//O6lXog BБ#h+-[H"sM= (..Ҏ=/((̼.[k^ &>k̉Rw'/^Hm>ELy$,kl. xJjK[lygG|wKź+GD ."ݑ =l_ @f=-Y۬89)^QD|vJnFHNy|msC'8D bО]/&9OѼ| #UbccF@rEح*rmC@{ xOwjŸ5n,rF|Fbw?ИdIj&ɋ@$5%aSE]/oaQß=լGvmI$} ^|CUG qASu9NJnpąQßIse 쪈n)?$zž;;:EG ql̰-ܾb Y~f=–)uWnw9D@xL/ܕ-QaTIWm}-TqNJ+ksH,1HRn;yJJ$m7[g in ]%Es;\kﳤx'keS/̾㥶dԖdHω-+C[^ɩ&yZZ$m7T;~Oj÷τWe #۶B?8]" w⑆$~?pJjj@ͺO@L\%!PYO_3r [OL%Q,tuHVUUUa322$Dns>@sWÑ%?%k'/HJnYm-nצmߴ'2X[$}Vbrss%//*^mv߿ 4PV^-^/ JKˬ4{w&cǎsɦMcw=?lܸ1k׮nJyy|ul,Lӧyxfg2zhwn6y$l69CO?,![OtEfϞ-oh233dv24Ϭ>7 PHns('G@⒯ b ZYdiY϶Z 4ܗpMW7 ]&bsGы,{8),,_|E^Nty[L`| 4xׂ  }K@zr0zų=Cƍk?5Gr ǛSCZ <mYo> [=hv?~ !oP]]c:EE<7ĪR}Bl)++DvqO%ƴD9bgSU,߼N0E\ۖ==Mzy,!e˿uVSwW+!Xahlu\t_u;BNN~VWʊ+%zZufM]c>.g\ɒVӚ/dp8dĈF￟{4,g%Hyקʚ5kK+4)**6 HrYgǏ<@;i@NN@t_ ^[ޚ qfJ,E/'_w {MCn4SKT&QaL6l /ࢺ:)55E3f5OV\%%%%_~md3tPeeVeں5i#2A޽/\ Yi9N˕gU%} )oM<@˦^.&V{ulOdɫYh]JrRoW^-[hVf|2ʹma1ƌk6}t3Q~~ݻյ>@ӛ"nj5-nnc(nϨ[].li :&.[~}[z~U)l-Y'mI1T6m*>Ȅ2A{!X´ TQFje˖%hZWik [}6w߽2:G}l*^ s=M=/ ,vѴKIqX)dDׯ(={+WZ\n+--MeΜtYu:@W_}m*&L`6. 7t{Y@s̑UV7cƌwﭠ@֬Yc%cƲ[WߘC ~[g/*d۠Ub;uT{ ,PeUzzyo\;wL|Ho 64oΎJϵ]. ^k Ҭ 䶶+X-Y+k>GMϐ!{KV$HIͶnoW&UJRk+6g]l}:(/b.Pw@uLÇջ+9JvGOc`%2߿0\|4Fé:Ь5X5g4\`8o0Z˖-5k&xX@KiŽgyc U.˜yGwtu[ QHޚ 9H˒Dmt_;x3FZpQ?f7MZK{tD)* ߩ=fGтm(=y6iz?҃jK "8jv1xСi6|tmر&Ip}:'k=q24ћJKK}r%'zOhfH@MbOID䫭Jvv/>mٲŴҶit\hU%hz:4T=R1;ZlM)Zv5(:FTY~Uhuʹ__bߠ=ܿ2 6ٳ%Z ~3@~sk ^~UB l9#LnziXAIKN*˖-3c8+yrg?j`۰hF׭[g  Ssix'* 6zVf̘a^omm]8tYf IgfmwV|rLV 8U-Ѵʩ裏7akZrSaջ>8i.+V0Cǟhf{} zIO?k}xΜ2nXK,5'iii"*:&<MeV.i ;`{AG뱳ހKo;@2@Ӏdm;},t[t%Q\PBEk֘?,\gC?SeBi`?xp݅eEbUh ^{ui05 MN;2 K5Ӈ%_1ׁ^u&9&}*=!{f} {w{ZBνML˹vM .voX[6Il~G&h귡CM][bsۖ-yG,7{33 $^ݳ5s)2{^=slw4VOqdl])~$ QQچo[7-&˼_Ey>hD-$U[G}Lt,/p.?F 6)[kWT@xh@:o-;01+ii֔a:Jokf 9p &rM!lO]EPhPZsb%5%.W8.q8d`l7z3T<i_S㶖$2 Bh -?M.kp_k_+['0OeB݁HVpхW ڶ"_hpSyk @uq@hHCmT$hAO>?-\@^F(1Ă@n+ W_N0A ! :U>ThK@Զpu[_kN@"~ѣJ׸PhA֥[_\z !4<6rS#~ NCɃ}t$ odCs@["H2@I $ $Cd @!H2@I $ $Cd @!H2@I $ $Cd @!H2@I $ $CdqpHݥ.tJϞ=%??_ImmOMM,Tf38M9S<$:Y~wsѲnk֬?Hai 0u֙ra>(+s̕i>_5#.ݻw3~_^x-?^bbq=[NіC桓#d8G?~·a%%%c 4P0azsy_53{aa]Bn6yw%2u풕zrW_}z&g6D m/3)77g͚9њԚ:}싘!IY\x Zh19s{'j\]t&)S/tV<M?m{'ݶN8^xFsO^{M"Æ Gvy' 7\+ [o*8qO^.06O7||][>J.γ>'/jiiirmiSi-7|2ͩN\s͕ryFo SRRR߯ۡ!ґŝNږN'ɏ@\{a6!ʅ^ -'{LزoS^z?Y`{h .:t twܹ 14 &M:ф@s .s=IkZ22҃+++g?˃g_z!]:Vy#?t}ZYd-/̖c$<ȑ#rk[RUUlaG Ycǎ [gܸ篿FX/VDesT2 uO4ꤓ~'%}&Krɍ --~QSmZBC_~zTמL۰ExHӷU۔>^`,ݦ9lG!C ښ{2m&M:T\vh< @""3g sZJb1{fjJ޽MPs熇E+WK/\.BS T7ςuEN3O[ꫯ[O  vұ;ڵsrInnYo;sC:|E~z}ɧfj ;H+iĈr~<`ieMŋ6Zt25jdpYϞ==egg_d*V|&*,,ɍ@:sC >Vkw}WƏ߹ի/$R.]žKc#ޟ/-INF7p}QtMT|iY` $7@:唓>l|ͷҞ4q TTVVIc"[IKh3v#;zym2iqGCꫯǟ0m3y)rw#`7/yTRAAYV6l`#u>t҉CSޕ{_EEEsm!טFmUɡ"7t7:wupӊ￟)>;w^j&ɉ@\93L;r7K[d_ƌ'r/$O?wڵk Þ; T5 =z /r 7\' ϟ99eӦr [w-aϛ= yfO̚5K.`;G 8믭qTdKeUUU&x޽[p {lʕaϷl"}}2݇e=zt:#lG}d;hty9y7Z)4c ;dy`FpWaRSSwJ~~~ز?&7'9眳7%%4d͚=/rW>lz{xM6Lt ^z_fu]䪫4BEzeW!Ґ!xNϲ|r7ndhÏISt\-[‹b۬?.|Wjz76-C'GELy$,kl. oirKHëvpNvKڂy)G:رc套^Z  a A$1\^yLeQc- HhSPP | *K@p47qR\\:hڴi2n81&hRJJh) Mx.! ФɓOt>B e@@ :Ԅ@ݻw/@ @S h $(B !F  Hp@"@ ))~:hڴi2n8zbt$t. Jӹurݮ@"Vx^q#^xxzG'=@p\%y%ifa'hg$O=tżƁ%O56HZ^3k' 6"999@&%B@k'z E5hK@ڄ0,YY:_c!z-Em@RSS%77N2}tSmڴi H S;vL0Ao˺udȑ))!SJo +@|J =&N-E@cxT16u M&;찃TWWe^{m:555c8Mru.۵HYY! f `\uTNXa-Mß%KGkzuQfY'xBJJJdĉ2fhSݣaV<0.L 1dfݐK4)p`qnY2a#BЎ4mϩno o暰KKK3$cB M!,˔a=CjA;oK.:GJJJ]V>IMM+"=W_~>SAt:̵h v'_~Kz˫Ӥ=i)*EEEtYӄ;>[ /=ow$++< jCIi.;Yoye i@e˖g+e&&hΜ92s/~̞=[>#ȐOŸU@|3C.bJS>>/ngD>hA| 9* g=_!*\Af預}!TLȳm]JKKc ~ g$/ H:b]娛ysu d$ZF:XG_^1S}@:q8f, JXBu}@rk@ ~R\"N4A.(׶)xRH Հ.@U?T#Є 4HѩyOs9VeօA~kN|\.Ӯ[v봭sC/>N>zfxsYvdO>>{ĉ + [n | [nC[eeeJg^|)55E+Lkdb]}zKEEi/Mώ;K.5,UEi˖`)%e0;ݏ";w{_~[YzO-Ρ 999<)^鹙; 9_lrݑNݧë#vˠ.?/f\\@BѾTIN4 6oM>ݴӶc￟V *!ʋ/<~Lr]߯'/<汶0=z}ϼyO:h+\~#&?uO<%|4d=k6wp=(_}}]waE~v jٳg˪UM%CM=]s_dPLC=RƍzT5 9ŗs$J❆?w_Onnn#$*$C$7#yt_j~xC'q2k֬c L~iVuN>$SreW*#5`_1_(n 5AVXiϓG}XFmz>oBH׽TL83n8 ~_CyQrȴi'l[{§>#'L"~I'(5IU\rE$mA,ꫯ'JYY\~fL O;hkD۬^^^.H۾iON-6^v@ @BIOl:ru>L+HZ*=ݺuZjix9:]reGu1|]w \}#<& ?J2ݸq L.w9AY{4 J.ThM4&j~8ۃҶv/ Ծ#8aZMvlʻڗK@ $x~'+"6@ 2SERJ)3U:D~~~qeYKyyQѪ'`Μ&\Q͏7бnԡb慅EVDᓆ0jMU@'}2s̨זr?Oi?*͑rɧO%vziF%ug@-6<xzn)N:98;BUfҒǮv/_ǰįjܹQk`hYX@?M&L0T44sm6j(Xۿ˜F3}XNqy뭷M+K/ -:Ytd87ꜰ0.Gx'uu WkY88֐F6XV-*[.]B߳y|5^o>56ګ)˯%F|P4IO6 h>iN3x| 7ɄPL.N  $ ݧNˑ4D]_4} @HiI;C^Hi6krЌs[VE< z-7f8B|\ҌTVVnuԑ?^/ʌc4iqҿ?Ӷ!ڇV4% Q>uV%fλ;?b.@H'U7f @9Mn9)w`O=|&5jsaÆʄ @TTTHGڴi 4T֭3'4zb뮻t{D]ޣG9C?Hn֨wu7y~gƬ[Wf]v%YC7%ݷ Ş$#* U@K 7is*qqnȥ8bT}MiH >kpb2cwf7zA~)TWWJtЁht:̨ 8.jڴO!cƌ;/ /b:^ƍ@(tt;;v~//%>)/ q)+I}앋K_p˟^ȏÏhAsϿÇc=* ʔ);dk|f-Ϯko9UC=({ {wf*n}F{/9䐃4/ &4O>ٸ'[5 h @ҎÞo?:F?ESN:zፎY AY>GF]VzʡHSDx fٲf f_azɧ䮻vx'LrzO硇{u|<~zmBTx<^)..2h9c Umm?/Oo7Y6sAs; y\CQ'oNڞOݰ$ K'l~^5!P7$@XK2lh%F{L iǕOTmSX~B##axcOfiYś o.!hA 1v8bc .^_,F"2ax<\sXk*m6GiPsg]b?qP{XXv ۼ~lZPȴR+r*,;٠7rcԵQIIyܸ %Z|}걄ccg]w@q:;Q'ٻUDTGƞ{d TO}R."?c;M~$m۶ q ۥrS+SN+a2$Oe!VM7ur_gcؒ=Fcl0 iǑֹ ">[8hp|kwsɖ-[ڼS*̧yu63HBk_sBZ/~9rvTH*cF! Gkɫ>9 ex̟N)c4!vI:fJDc}UN*>N{?31}~/&ol_>?+sΕW* 'Hʺ~M[OGEEy\#K.7bZIrXhx'~+5d9m#:lqZßvel=]G6Ҋ2!s'dNT}'H;A/;Uu'Xsb*Kɮ]뢢"2erW.>?(GGR>̓3̉ gtÞOchs!(xϯtcu ۼ6sᏕ֠'wd_}$@mɕg? qG<ܱ@2Q |gpB'y%ͺuϘZf̘n 5m߾C~@N-:gH%{I݉hKi_v a9W׮R׽T ڀl9wjH۾LVi@+RV8;6H& YM? k`C+| ~^!iI4ZUxt9ax[N]6!Sh}f^lVh/m2nCfwʹsd8iوpb9!''$r٦M|77|I݉oN+q|?G@x˩'-$ްk+bq/uk U%I.6i^Fh* H;{VyKG`ԅyrv}K[[{mmmr=JJhGE۵M(wȌjLp ( Kkg ~'A+ aOvu$)/t+9Y8%G֊}cd"vudNoԱfIG C|U^~yx<ʫo~K돧|XxNz lRUl95N7%5e)ʳGZdWm@l痍|_j  ݛ~ qn@ҎΩrȈ-=kAi   tY]]vۏfXSHcXz袟()mhcNJ'$bZu {Z6\drS.6PEitln-ՃS5X|`te4eU EF[*Ǻ~:OؒݢZգ4: &96Od6v 2!&dvS&;L(Gdl,@Ҏ?ǞS \]3>.R9֝# I4)-I.)pLJsg?*hh4~Te}$9 D tDs"\"%69,EOI`HX 9KMCR y(`]7XayZg7s͝蒹2iٓ0#I& hxH@a;$M>AtOHǨcM&ķ$?2'3rddLtHVY.MYnZj"#IWB5&H4*%o ,Nj_~7$ &9^/j9׃Rۤ/vy*T?H}xII#GH;Vƍb&z9]˹.2c饗@f|rT%SwBȓ'1ǜ@!+i같phx9%:0f$ V{C.S+OIجiʳ]\A=FR{6M.<[."qZG'N4NZ,̄?=]rrQygN (??_̙-Ǐ7LÑf==$_R[IBJ + =oeRCT9e 0I-1@:"|HKܡUw>_WGrԇ?:V_+IMM$Œ媫VXAT~!2yd}T@ & ɑlc1o'$G+%9<9)NvS`gctE mi wqN嶿+K*zҹw?4%-WO3Ϝ']v99zرC%2\B.m\+q%93y $M}#T񌔆@ ~TP6K7^n7ǀW_G>&//ϴƛ>}iOWHXkMǸ~+ra+*6ϢEXc]f?.҇o:PXųC2bH^YTh+ywHw {EYxW=E?ɐo3áV&ݻO֬y DJHPG+驰P}wi?=j+W&3Q.~ܸj466(|2yZy:$ٳM9ms"߿_'^-[Zg .8_=OikO1$ڀl?9>@& Z:oRL,j$j?"ZE+a ~N[|CJEEOִHx<]NRISo%nW^yV5iP y.* 9uҝ+d Zt$?;ZX>Wd4йrA難0U8ZAk/^|nkRmt~UC:^OΝ*II*yFV7i8 hiaK32Ecڦrۇ\R'i:}}LA cta)pgv dh5m6+BjjƛcuZ_͛VhsɎVϏW\.ӦM3s 9rTرS%2O+@mK)))hӺa7HҊVh@F;nV#C6=j'N`199HU1MѡC̜?--f ]-Zh%3~__m(ѹ|b[iՒдiSЩF&Mhu?~[ P пϿ(uuFIY@zқ4Pћ=?juh|aN3>=n9?2ͬ{#-gN&t.9sȖ-[~rKLg֝}&yweժս> 3fLSݚ;ߎۺuYԂ ̾iEolvWkHuQ!TOmf>  ̥j_Ctm7eRA7-w Fw՛C s0LaSM)t_uLh4u}|.<|Smt3ydS}ģ's /=(s[?4xZoot@2V|:N1*bzSѣG>!:ujm&L 7 N:ot3f@'J+{*+hθq㺭={yMouϓ%K.^΄ 5fŧ)SNvE]-ѐ/_щU RM:E.n*e˖e]b>IN7z9Hpdg SLG 8M RVӑ&Jr 붮CM d۶2wn*PF'h뷪*[om?صΝ 'oݻwyt\i~+f?}9k䬳4sՙhqjI\Dz]cc{tӧ>Dd=tT=P6wOpcdc3{CrLj54tH Z#׍ѣG~}rA."Qe"2DGcs2m[pz2HE#aOjnyM#+.̵}wB֟ͣ䴤'8zh6=ѓzZm Z aVD߉G+/_fG{}ܬs:&TѪ!@LpAޝJz6иiʨ(hhh/**27.hd= 6 y]NGgNˬq6ZiclRQdbmɎ>#r5,Gho}Xvֆeˡ?',:ƍ_(0ZBScP%/+,Qx=.U4xЭaP'4/ӹ~ڼ+ ^4x DOZG|b(}u\Ǐ 0K@vs]2 t't8ff[ g!A h.[L~XKF't~iP9L44. f9a ¦K~VMßlnH< Y+Rɱu#4f!_HoyNm pZР&քaq9"a3f+]-4< \! }ⷂ]L2? )#pG\iH3f7 ,csL@f!Wt.鏿&Hpݺ65/r/@urco#r *@B(7 ɮ89H@@p]@a>o-s]ML ; }8uҶv Ǚ( |@|@ ;zw RJ8ޝAYf{uaJ^o`Y*W+H?`@5 D "Ws*zmԵp; qzݶ|#A AN;uJU> lBH_N*~$:.uD{D/zU y %@R N=^ϭޏ|N2Bs#9C zV 6dJ@J yrqݮ-nk8$,.A t %L ID )\.nq bk|Kou8tk&Q>_^~D#P999k}7qV x ,\0y 9rsݦ^"0$pXn8?#ۏ G+rr AUsn$Waa8B CB`P_bE5v6 2!"0U/&\صC .KrrrsB A_; k4 R#//9!%3Wȴ3k6 RtJ   }:u'IXVy}qݢjU@C`@|xַv<@6+i-q'!H-)T~1Yύ7rq `zŬ}A N@Gq r8{<)@zG2&>iDо@o@z'3W܎\+> 4(  z/G; @fK+_ }K(Buڥ!pHf%NSYvEB$ %;[@#3,5pUhIà"GKM}mA.EßL E4|f`  Y% } Ef>TҠ0iJe3=)//zVcǎcǎ >1Q4@ҥ@@&c GirD>7{Nh*3Ϝg3gv\A^xyfZ ޟ9s8v9q2E3Yt֩~OOJ.\(qFillS^^fC:gY'9nٽ{lݺE|>M8wee^{MZZZƄ 5޽{]t=j}ӎ3mᄏl8.='2a%\l۔KCCH=;T}Τ&7.UfUΓѶ|2y K"G[ d EɤʟtCi6K]|0'Z_U'UVz4C=,?:G'=*+#S.].wvg۞={;7u暫}瓻/yKO_yokg/?nM~oK?o{ &y祳Ӵ*@jG?Qz^æs;K~<*U?} ewɏj&Ih c 2bΟt,w}E[-[W+mϞEjkkȑZS4%Vs^kմE?뮺jqD[n6Q_|>ӦM͉Ą?XJGi׿Up\tхf*tg۶m_2n8.TZ\|5Q Ե DECtyZ?QOoId%%R:Si8UUU) w ECrW^yռ6k:?g$ShwK+F>ϛjw̙cxcims{sWc#/}ToOst 0}kpE+4z?Z8ct5kHM*dgtmߴ(7}*7GW@2BD$svrL)K/ydTʧ#AZ?r}5tۿm< &h>l<`t z-::p\sMVmElѶxq/77,*_Iʟtu_ SH{Bq%tlE$vX:?z׭p^AuZS;w3V~Æ7?ۼ2TO=tWϿ` Ljܹ2u|͚' ɋw @rqwaa[y'!!|<;BU2f٥]$JǦcL+#*&M9sfnߒAC p8|_މG;ڵ+6ǎzp ֭}O;p¥뮋ThVm ƌc"\:gvKztrY>z4Ϻ2g:BF?lf?$~"ٳsU_z/ۼ3ɠm9gi%ړ:H^^^] @vX]=å/_fo߾]w‹ 9t~O;{RXEH[ȑd*W>+?@ҖVFoʱ5掞3.Njn=#BcÌDYjrW:tvv+VD~Z<$˄ 5fZe/P+cn饗jت'3iH4G!#HW@V+Tޤg5bw|DZ[[ʹ>骄9Dۿ VbOH,=clcұVTWaw$Nǰj#rb YyuO[:lNOÇ[ݻϼsݶo[oW37;vL~ʯ9hUW]eo߾C?>S F*Ԯ6p@"OT*:jSYshi ZA&~tSU4#ȉm1 6 rmKu\.\^,z1pE;Lz6/~sw- $ RS$gӸ[~ _u>Oߺ uȞ|mlQTT$cVZN۾͘1]KСC&FJoRtaTa'ӋnѠ7=ߑ<%[k7!+i4J:B-3+u[DյqݾCß\xH:vhsnڴY.Ɣo?8;}vRpJ9mBy@G4oP]\c*qZ- }G! 4 (+3oSϐꄄg:6H7L6 !I5t[/ ?5'P/p(~ikkﵾMW)~0;h6p-/5%<=L|W~i'{W='G[:RQ<l3<~ +dZLYS-xs|?-&+i7%2l7R+/e 7I@ FA\EخPX{c.Q T"T"-c߸K+י'\9:f#Mh>V a7r673GK+rLGգ7|j%P 7PQn+hسdL.f]3MǤctF(J 8;v5l7Ğ]iuOHǨcM _D(+g˹.6=KJ~N \[4^Ο|?e+hG1@Q -yq: e$^9U}Nϗ/m˶haq]$U>GSJL,رcg!~2qD=>z/hY--rg֭QʦM>E˹.6y饗Mϕ\.d3crh2RngTU o7B4{8TfVε2|5d1@:",xdk-SLZw̢zG=Μ(sMhӓ6WA}WNNכ wL`wn/RUVV#kIf޽[/s>H6 G $F¾weZ%Bq^̫>[]GU&N)ee˜)'ß]m1@:7 O=7/YuTktdq:V`s ߐ_)/"e̘12Tweǎrz}RQQ.{u2Yݶߵky׮]H;$F@*:tHD9*ej2orvb?~L-c%K $@Vg]%2}۴~) ˺ݏc4%㩦cM 曊l*~~{|c 7@Cft`rsdɒ%2w2ٿۑ0nLsA6yJv<"wlZS7@PP\EvH&>I iߑ(5ߑ_V-`Pj[w">UytoG%1Xm֬qÆ7?JڼyyA+|ziӶpȼys2+~6:Ѭn:a?I$ |* ƄA={L>]+۷o*++3FUUUGѣhZyKi{eԫR2z3Hg@ZL~.cL^ѹOKض r3EFjƌ|2]&M3ϰRlcIA<KU21mV)\@JN0fɢEݻH"iأZ[[%ѴWs>ʮ}yn3å7<:Lf 3.3L}t@^M|d-\pRYY!'N4ʦM%Q5V(mhU19'ÇHQQ `@[[w1[^7YU23d*doT82fpdL`Μ9J˪U%PiM-2aB鐺:ٵk$ZL+T?ONSrss%뒎~ҿmJtW@2B foJ6бF۔)Sdٲ+% ˚5k=ϧ?>߫_iF[itxTTˍ7~Bv|Go*@jkk3]\.do=]m=$?~;+~.EŒZ=-fu_ SvqڝRS(f2Ə/]wvYhӖk`0`qvmBdP~Tr6m̟Yܑ#GȎ;EJJJL5P&.nW6uߐ,qUi叆?IdVomsI&w16gNX{yٶmdFFç+W6tӦM4iyEuHLOtt|[eV뾏RΑ^Z/7nlA֭d'{#` rmKu\h.\^L0aS6/~sw- $ ]$vpHڼώrp8:;غ'RzW]CCCN8!@@`V hQ?[PfV̓cfȸR_%Ez#w}{HCGԶ[e[FtOiڵG2KIIyܸ %۳Z2t1yy]u=JZ߅ YE@JEOvup8$s){zg.dSkM]7 tiUVD7Z 9@2:aSb˜|W9 H?w` ڭ੃Ћ5&E N tv{lik guDu08@2pۙ+nG }Ax`h 4ѥUasˑcA.qڝk3H;zǕ  $_A2{iG`S$)]`1 @\6۩>Z9Hpݺp Wo !z!H`0$0 BRr0NKZP3l8 B` @z} qt;s%>:hX9[K3_Z>_lD > wK{U(H+xw@@ZWS$HS`0f,v= v{]"H ?`@5 D " ]qn 5::%ZMk88l=#V'pp}r@i]k8 (ZV38& Z]W6p.?{*@rH x/N8lQDؔD{[),Kf$O{{tvvk5C I>P (MUN 9:::MWP`phO Q]"?yPXzͥUbCS?F`POl*M[ZK00puj.ޭlCXy>+i@ 7~ N@z`:Uc`0('$77W &dc #h`B `P!P)ak]񚃕\GaOwu9z # u"AU@<9xv%Zӆ^O CJ 7^>$=6p?Dßh¦BܺZJl;>b'04@!r һ\|ݫs zznd/6齾{}@X`x [6p}8'^o} D`ĆP ůEs  r-ܩ;V齞`dB uzVP $ԩpn#'L@&ѣJ{\(x@gtrzn~syH Iճh? 0T"T9ΓCv]lq[dN'a t J K,aZH" IrvKNk[s ^z#á\3z $ɑ\S鍳hU!@H!ybFsSH1mVP/>%5˳\@b荶v]:;;.0Ls?$k.t\0|@!,>E` 9rsݦ^"0$pX&-\~75G+rr AdƧo6M'UXX OfWP`Pf2)9sa@k \.@@b(&]nZ@ JH)t:L% >$,.v@nk5* !0 GNsAAO un&0 qVT.<:}`xr9* !/=(9/{!WZNK} )0IS}r:@nU pDxS-!)k>g}N:&%%%&:y&ԧ>)6]=ꭰ@Fs. ikk7ᲅ`Y}d%E˯7qɿՏJt@2D)j84rڭYFʕZXL?Ꮖ@ϟҀ ׿w:> u: ϖ?LCZP MlfNލ]qӾ-%I1/ڿ<.řD>ٲeybŊA}fŊ汩I^~y}X:oM_mkEeE'9EI͖LegnI]CS[2@2ɜ'JY}*G[=s̖wtk֬@ 3gZ]Nhcǎu*յN{zRpB0''Ǐw{49tޜϲNrܲ{^ٺu|'N`k&--qc„)**+{Zw{ :y'Ǐ3wᄏ,6m\RG;"蹏Vڤ+Hw&+>}L=CF[%WJn$9_1LC 92'S *9t>o~$@ UVz4Onw߯M5JTYy^/^|AkrWXzr{?<'oNYt|{ߕ뮻۝m{;Ș1o|]n䮻K|ғcƛGzMtg0h|6X?mx$Kigǎ 5#ß(GW=a]i2 0*U?} jY3ؿG @pt2Aǒjz׋/d/[W+mϞEjkkȑڮF5%Vs^kմE?뮺jqD}喛w7iӬvss?1>:hl׿j}:.P~$??Tl۶Mۻ~{Kƍ'ruךdžR#SŸh4U@FY":(0h8UUU) wm}/`ʫ浶Y%?9+$j@_Za5~T\}u];gē'GOk+W䡇~/7\q2Ss[os ǗES᣿O|R>ҥ+0k"~NWjw 9f6ituӕ}g>@,Ȟ'JonTz饗IJKKMφ ofHuV^FA[it&QZ,^U]vOwvr=Zs}F4!^0a d(>l<`Q:Zs ( ;tPk;̓tO<ִ۱cH\d*w=gvNH':O:V@&@s-ɑvz'^{udjTģ-;wF gjc^w|'O=t'Ͽ` LC.Z1kHC,oWSSo<H1ݚ&~fL fG~ gΕ /u3nrVѱ=")sя~ _zOۋ͙3vo ):N<:QԮ]9vXscCl݈Hå'NP=S@:ѬޱWQQ.c<] )C%Xtt0܋+%>.o,5G^ k=~ԭKb5`G{5%W][mᔆ >$;眅MOhOR yyy~JivX-|>C=,+\nVSt?|k]H3*u,^7!-#]1]qTM_9Y/ ˄#m/A'"ɢc v hժUr-_1hYby|駓z„яnsJݰeݺgdroK0-ޜNFf2i?E]P?+yI(pcW\/Ic;9Z S=ٳg@A%=ww' MY>>!Y*Kd'[~}sXz9iuL:Q12v$t,I E.{_ܽpC>+S1_6@ ˱'*ɠcO:y ryM۷'Xk=07(ɢƏoD{,~uU6XHy8m*,OzƠc @@Z\bs8$WK:앎{ew+V cmy9xJKKeU4Lh6f@fo qXiY%l:6GλR~2ᐄ~s="Vza, iɞjxmL/uG藽C$K֘IGG8NwQz F< 555qK_TWW 6ctywŶ0rDǜ{8 dA vvQ:c3G8XtLh -ْT]yT\ۺxOT4|/ZoY=I$36IN@wݺuruҥ"8tyn<|CQ|?6پ}l3٧)/ AG /u[g Vzр&8K熩T`& x44I9^/F37o82ɫ :7^H7@ҎHx?Q t:p((r*ľիg>s+_|K'G.ŸC ǥe.Svp۴M\E?vϘ%Eΐ܊J@ pĕF6-٢FCA9S@gF>yT2'6u^u82|=(\)G֭^5-B~ç{Oȉ-Ħ7A~qI&)q䙪@2Q 3G݃;p38OH<Ҷ+~E@L7!cFH;9[!'u'vW Gݴpk'6SM'v7s+NJ[%FFiۿWZMQ84UC:O&?ArJH wlL@N{&?6aن^Ykn'I>O9ntNpZ,M;H;[~w N1sK,,F~2"t{=_ꚸ1'NÏnGs;9۴isƔo?8;vmaw:L;Lk{fnmho@gx~i޵CZ2C].qUX )1[ &N\뵆G56H& 'hxn2@,<(-[?ptܰ0rB_{okk{Uʷu84*;ӓ?AZho#Jץ156XviܺYZO1 z&6oVSvB)}v@29mmx]k<>׈6n\k 돮$ݝ;L;SʑgKhkZ_8cƙ# 4񲌄"y:0zn؇q^"=[%76ȿOhʷux$JϹ@rƔPs\'zd8l |MU?\}MMndΟcG$hgs:]Z&Eusd<ɷ% <'?+q-mq+9:vPyi]]vۏfXS[T !Cg3g1syn#h37-hYzC $D)[H2a4& H;u##7͓I7Z[E)^ßcOE0RT3ysn8r*LPi\¡t՚dAx:O82-s K`$M!5&Jd<#9(ikX(o~MJȱG[.R9֎eDUT"%3JER2k䏟 <hhhWU-ֶ:҄?6[ۤxlTH;a`-S ԟT?*c 4:7KXv퐐+ rW H! !SyR|)G[V(momWQxl)8EyD@Z2% `CT?*HÏ ϖ.HN8(<;/\]w-^'W\qTTBolvZMx䒋GYOdΊ 3gn'Ѝ#F#j|eЧYX$@g̶sAvɷ j&IHhk5ctD -IiA_|E:}C?+~:9_%tŲb2+0DϏu;vu@08pO@ (yU^^Iaa\z%RUU%W vMF"hi@#H NK"J S@g6s:yb%;p،ҕ] M5I\3mߒ)d+pK/?ih8!#vr Zaifٲey=YɢU2.Z4ߺ~1*$b05?IǠctEe]vv#?sEś(DmE($&]1eڵUZ"Dۿ&ڽ{u֙RYYѵnW_ekH[h`jL^6o~+e)dWi]Y|)Lkl0ctF ;ő848W/zL6:헆]%Lȕ0C~ m.Dh ERPoB!'p+zt:Mcpg1ì_@:Z)--5&'NSȼydUrRlc꟨/yH&D,]7 H:ړ6PTۻ̒j:TU$crhr[W_"MwhEi%?;vu1'Gn{" d+%@$y7'F،%]4Θ#\)ŧ;@#EeYɽ)dڿeh4ct3f}555RXX(W^yy_DЪŋ5++^3N4 Ĵ|@@&1$8%fL=C2Aw>@& *-lctPVZ-n/bS5s9 V8_+//ׄ1Jۻ늊JSe ޔDCKNKǙb^F~<!-zituIG~KNtW@2B8`[8 $XtLIm.v[/IQQ̚5S>!@Z9K<:ʕRsرC?Kjٻw5=raiii/ms]֡}OWd߽?i_8?`>@ 1NY|d3l}g׮&7ZĉƮpȴ+ f˖-&Jgyִ~;3M{;]V[7iKh@ #nfؿGcHJ G2 ho nD!׌trqv BT_)SȄ 52A*++䢋.3Θ!?!p T>?ϙ@ȤOߜ6s?@ 6V" B>lreJ^^lذ znSYYi;:: xt<@}IӏhKj ҵ}ˤ'Jw_d>/\)ŧÿTv hi64TdW9e}n3c4xa s>^{up~ѣG1*../=H}}˴'/O~-7 d: Kit>t?\p\ym͛yLh%\,3g4'oQFCtӲ1>w|k%M^{i k.ԟH?z9H%?e~S˩ -Mmtt>G0("IGV z:% 7ۺh{6 Gn{?0d&R'N4ƍʆ oʢEȒ%J q8RSS#yf;OVFáC$ 0?!;w7`ۿ^͕X9N8![l:vm&ԩSLwQ@ъ=7+Y7WirRd_t8| `7Q [x~q-Mz/jU h[4tiii5'1Gz}^4\pRZZb(襗^2Z䩧.c|H)=A:uq y뭷M뤾,^HfϞ]wKkk btT Sgg9fh˘s/xÞXmٺI7Nev>^[gy]1ϋu /F"l#}q[>!Ƒ/_`+. hM76t:͉E4D*..P( [Ôtc(,,4Z+''Ǽ'k=ǨZ-i@z ɠd{3%tɭ$jqP=!?*cni۵C2]}}9K2JC,]_P"="VN>>X1G@P hA'|;Sӗ84(QzK:1h0V{ǎ g-5eUAz^lk6\dC@ *68rn-6C!lp`d4mh@aA!]v;æB(2%'y'`d/ LUNحl lea>a  *Nd#pZРƄ5mb;fB6SlNG.{ÕO+ XK0 a*D=Fc/!EeaI(@N=z=}l?!Y7-[⮷9' Ղ@z [HuG`1T 'Qo@`{cwR+Cέq%>:h.k {n |@|@xWzw RJ8΍A}^z;@lrdqpoV^!K"hZ?n9 .j_aq'iƮ΢@i]k8 (ZV99ѠT|mmݮ@gӼ*-$WKKA fEMMOgcW=^*_"Hv4j>6 } 0ho~)]9萶6^C>$zGItpu](H,*ϩ#0('c6Z&-k-zͥuhA 8:5PVp6[}RTT,n7mYOOlC` @t*pkAilxWH$ #6pB/~O-@=HHSmNݱwOC WӳʇD N w{>`*2Q}UEB #=kOsp#}@H@񃝾JH% )W7}@!0  @!2@Y d ,Ce @!2@Y d ,Ce @!2@Y d ,Ce @!2@Y d ,Ce @!2@Y d ,Ce @!2@Y d ,Ce @!2@Y d ,Ce @!2@Y d ,Ce{sw :CPg @!3@u :CPg @!3@u f%R&@`}N WZ@WyP]߽^@NbUViiif B )V{H!S,3Y^^htIRSX maLM=%y4o@Wɍ 4ox!{-J|iV:?":uZbIQr#hZ9M"FZdLZM+iAJI8'yl+[oЖhdSSkH׶ L,Jl䈬\8, ʁ"QNM@u-!aꔎJA7hVXyO̬,-EsIHSNiqlM@Yv[eu,_N''r iT@ҧȻSD"޷" ^cZ\\4kw,9\BGhF{1ņHķӷ)PNFj̈MRz:FhŦN7oIl1(RקJWIcBΎ7Kg_ix%F 閾>T(foTzԴޟ67O_Hm7ANO|X(4DP ŶSBZ800 ]]]266& z`4O ~[ JOac}&8xNvrMA˫uUnV=Ғ3BQڃ43:0Z`^o.~S?iסY[C$W_@Hҁ-2 Ch4jTڼS:^ _% \4o#s?srrV]}uQhIj}'e+$;zZ.(@>g`1$^whEgl{[ㅿ'<*`Cz/j_bMǐ$N~W+ߕ=o{I)S VmݺQwlc3uK=zOe{9@9M7@>])F_+ßwr4|';FT4w[7CݾߺNc9  HEρ_lno车/tiF¬!wJυjT.fxˌAxG9Ҫ[PNgG9 + _Ht8AA&='znT\yY>;{OAUrr^uid#to9 ":7eC$_k`uܪUN`# *߿eilFϑɋq&?};$^4y]PNWr*]1Mz9sVow {Q4oig- @YڼyԹ|C~[Ioi*@դkzzz$s,czv {Rʹʖ@>@Ub}OP9vMoU@~@U`{ӦM s@cEvN[轩Rti*YN0 JHo/*u*;{W Jݣ-(KWrx.]Ses0͍JF?;_N{5rr<)ǬcJdVsY Rje]NcuI8,HDInVimm5С2==-~Pe4Fq@J>;%4[ޫzNqs9]K--x\VVV֗;;;e۶m{rXl RiZ)4m[K[esG{7rtq@1#nڥ;7 o 9zWo:9'uVB^sFEǕs(rx i޶W[0yn77IKcsqYvEnKS@\"mnp@b"'GV}!=4eB G qv9mgǎr-?'\s eҲLgر'Ǹ馽WjXϑ힎Vn9 xL+ڪ;;LV$bY^^'|hcJUҥX[Q6BD :J59/BQOAM/\|(>ѣ'__'.H-9Wnhӧ7a?%")w}ޕrIy^+]vF;xGyD'G;Q~ߵHKnp-$"W,..FO?W4?1v>i>22"ն9wZ˘y}v R4;$tw6kvkn/?2/oZ*/ɫ%j2]W{r^#yȶm9~O0yxO|S21jW*cxiS M0P7o6晚2BRq8h& %=L ] m!f<_mkV2NSz~\Y~c55Ѻ$cC21nqrrIoHɀkFOz=:yJ)UNͻ~w9ndtw9zgeKv)ulpX]=y{OzZN>>O9+{zz񁺻dy>&TŢ5k6].H _6zӶb %5u7{0.~}SsdA;SY>5"$DFp**F9m B/ڰM[jl?rY1Ӏꫯ[oxI@~c) Uj9 xH+4W\$ %'1[~,nڽ{\r˗_C~cԘDW({z DnJ?u3q'3ޥ`^'ܼU:mX_grwݾ(yBL g?9𾑑Qҗbo2 mu7#,=~Ĺsmsss۶mcǞ s7mS6#c9'3Zd;3_Q۷3gY^qC\Y$ߣF T%WGv[%|y$C\*mA9L'Wft=Ғu2+_+,zSXsxFJ,f:9~8u?s]w.'~0#-Myߝ?gez!.&wn䱆Wc32|ƈ\9ltj4&_J~Ο Rܸ.Moz=ŸI?s9xG8~D2Dz w]ș~:::6@Zx?ik@3._^^ӧψΜ9c1' h~~^ƹ oF 2yǤc|༼E]4`ѐZ _N?ٶy 7w7[?,2+E~eOeRehIg8=V@WxY6_lK׷ecҮtRdbf@ [aG~~5鱤.]n)R_xx^>=`+}%-{dtvVO0+d8A_16{rڤݿY=!bhy-~Z@eVeWUsA8ZVJ? |tL bhxxX<\xng(3#^py*UN!_}t~C4!7l6B4mj^:Zd0b zڂ+,Ǽ}▌؞X] q{"*;z-r$-6ŗ^ӦO3 s<1nkk~y/!Zn{r LQ[Tn7vN<)Ք>T(]Nitd2˱ 7ܭPr[׆gߟX4_rUD8]߶:- vș%iON:Pk(}{6mq=_<8'M%,Z1N>ޏ:R>33Οyse&O/I9 j^<^57ZMu2FJ!-7U_{f42*vf# MLJ#$xmuS||\,!Е[㎘]i kϟ \Ge 9?ϭ˻'߸.Oi7z4.OKo^ꭌbȺK)]N~OJҗ|QWP)4J:𸦫My׻.w]9ƹ 4To[f˯$we8{X2QҰZש."hܡCTq4 .u1>qGuܲcܜ/c* E"."tL{yCJwFEKe4+Tސ<;b]Ǫjݛd5xn)s[8T[ϭQ]ezrڎ;{ɻLsH.\ZPnǼXԧ{zz.eyrFi 5Z͋ܨX/JSk4qUD>lhWDU֗rO@"YeYmIڦpǨrݾ]wuO륻X7>>.Gm.+Bvޝ\7,ߗC1GGgdxx*]?miTInm_mNƌ1gvOtK|мL/掌FWֻbμ6:Əg m!szr:cPccFYdv#F@˶ˉ'*56b x[533###>uO;wNKn@䫏fw]3M//.nXݣ鮸~x2s q# F6' Í{r:ۖ-HèO^׮李{-h$@ sLīH$,KKˮB`xe@{yȗ^&{.I:^"_y9vahsyΰ\9ZBms˧cسr%$zNjdd6.? xǺ$Y=|3cTù{rt[[v-41[hsM7IGG{r!r%˒TvͶcپR9<q>>00 O=uJN>m<^ s[JbNfO_fܑ ;֙ /NHt%?I[5>r裯MVjct gK~Xp@5i;Z&, jfR+@12+Uyf}\fع⋍0\zm۶-v)Pzzz6['&ɯͨ9eׅU}31#f<lr|iB.v>?>>.4B ;8 t{r RxLZQE[_ߦd{oޭ[3i%ܜxMϩriqb1gL{nj;[.ag>5,rϧG.k롯7}fTxƢ!niHz#mis7c=3{F*8xNv낖Wdyw}`'|䒋]?/h3??/>Ǻhmm51RHٳf4ʾ>wOix`m=!IFsb#}%B2ЕbnxfUNČ߀R,?L}|@iaϾ}211)]{}#G^[ajXq )}[Tfq_{dz:Iu^%rC@UO5*G%+X>#2::j|F"T+t-[_:^Ѩ1ÏU%QfG%geP-NnРɑcܠrV9ٳgڵkv/k+!?ʍr+7Vؘ## {6m$W_}1O8ܺXwUWI__\y2>cWK9-1{_mEd߻,Յ CɰѺ'ݦАԂri@ڮDFǡǶ핁emK.g9"嫤4=zN3{.EƎ9i&j޳zUTVOem7Z_-1N>]-{4"DBѺ<;;'6 d,kE F]pE['\҉gI@m{r崖'N4ZV~9 bx_bff7бcOgd``lٲ%#Q<;;k1eqqQBϥr;!DOGg借Zf9 gOMMݪ4z*7&7x[ޫty*UNj@ h0ʯt8蹳;;/ {t.jPղZx*]땪 O@ϙ;=,n> }V@O齩hTS@{zll\P=gxWt*UN m||rrRsV7^c_#?{ӫrr8-@U8*ʰ:?vλrTA yw@ϑ.+dw}ITދzOz]PN;E9 n\F{zny1Ϙ}}BTރz/VrTƧuhhH`Oύ\Uf>|BTC¸]PNm9 |?kP6Ũ\@b6='znuvgeO{崽jU @Ue}<:55%=zN([.,WxG9RPNg^9 \l@בQF@υܘP<{=MPyz=rr:4! _YiTd'}BTN'*G1ZPNF@23@ gsrQ~ܕ^,>@@轥i]GY?R-mf7^BrjTL;?^}}w=e R[PN[_P@E2juW@e3Y]4€ ڞ>ER|z/Y}3rrZ6(3d3*u ^wK$J|G'JKZPNEHj C+DּV.&djjJ288(pXA4!Y\Dbx[xJ:o}F>&+kk5UZ u5/R:ȶV=211!N~kR1 쉯M'P+zXßZ/(j^ȔI&udy"x#277'D,../H껙OJBgOKo ?earrY# Rm?&@ݳ\4+F3ۻI6oPb1I}*>ՕPz>JBG+W}="@ύ{eפiV,“|[41UhVƥ2WFe]__lڴwZKI\~,Qv]v А4Y8ŵf%Z4Krs}OU&w9]MMM'Iv!d7rpv}QKNNt F]ES4@W3Zͬ`L/SSSSK:;;Y"233c  EgCZ/{4um^Μg~$K:s{rq}UPBѨQk%c{{OAqC<7 _Xq.-w]_^qr|OaP˶Ҽu2(\[ƣ%V>+-4@U4rm[ݻǧ`Mf&c>eQdXJkk89HsN!cL pZy:++:-ҒNq,XvcArst4\j o`Wɿ#h IGT[u5&[Ҭ'%>?bY:#'eeޔ(j^dffNh?[م:GǛ0eW2---S?qu\XM2592OfT}};S8A9 PG  *]Ӳ(iPr?mZgp/}볱^6ݐ>A +|S8G9 P4pNm \'=MݾM}S7sqaIp8,@3)X œϕ]X«t$5{\.Y[XSe1Z?';@فf )%c ª\#_FR1@? NⲱMgZsT Xlnn^ 46 4; AIe -hƐ/nS(*'3)fJ*40Ruv'/a-;IoD"$qiV AIuB!WgNz5+fkJMEEl ۽fs@}y=iS[ Bb1I@cq۵召ßTt\-}&|Zf}ŕ,i42_s?:%dccN٭hxx衭[L^4ZYY84gßI?"ŴqߔPr#y PpnnMq-ROɓO|`yyYn'n3 Qcu9k|ET*^J+\d)y!c˫t]!J@>}}ӓӒj(΃eՍP"aE9d+|]e/Դ8<77{___s;# 1<-ς؇>f7on߬{8=V럒áJ@۝*ڧICl kK Mh @}.":QKof?vN~SpHUs,s]>&OpxOz{&[/]ZovG9| Ov#b'T tWBerS++L B40.73ўT<ƳϞ}3I*G VeccjՏ*5Ypō8 %se]f| %'M{7!p啻w9KraVVV)=>6 }T>ٿ;yÒ Xt ~tkГ7kГм5߼ݲm:V]k.^!PZBA4ҖAxA*Csnt| ~t*o~~˖G[x?f.k#+?j n\]$RvG /p({rȺ]C \>8xѵpdW0<L\u  u'9 $YMO'3x!}|jI1E$;x1d8\O?>n?NRAC5B 5_Y_r,Kj#c]"r.r@:kȓż曷["aCBuNCR'3u'Yۜ Ԣr s}v7ovKkǷᏪtPNd] ~مW69 }iS(JٽZ`|Zm/P%Yϳ=^`>g[\,K/(bYۭ+n99/ |FhGŶɵnT'W!\l^ *4_JK!e[߲OJd8m>g=]‰8 ||Ǫ[]YK u*hs,ɱo}RJQu9Wϱo:b߄?Bm*fpi$y[_AJ 1?u'!QN)~rsb(T5u#R\ThSBJr#(6"(_(4)5q,Enn.b}1$Ͼ3'P"ϾNR[5O!D[3_( *vmԺr[ds+q:dY ?h T|m<:Y_hV2y;mSJSs~@Z.5)v9׺bPJi-(c@ruNUEW)INaA]ZR[Wsddk 7s!4D2\lZT)T")g])P*٭s#ɷ6_H%:)v[٭sk\ R7CZ ~T#̨dd.Uk*{r¡b_Bq~TnuTʾl k})c{RۊmS7~j9R崾q# *f{PO)n ʷ6'} UjpV~47Jl+fߪH>x/~QNpF0FT@ʭ9zwH+6`"*v?_HT2!@I%CbvkT@RsJ aoب԰R-y&QRBvF#/ T@j!x0nMTs=R2n:DFvR6Q)BǭЦ(DHS  y4LcjT ! Aj!TiѰ(APnA  >G0z@ B"w*΄u :CPg @!3G{IENDB`diegopvlk-Dosage-bd9126a/screenshots/today-light.png000066400000000000000000003517311514145341100226140ustar00rootroot00000000000000PNG  IHDR4L&tEXtCreation TimeMon 01 Dec 2025 09:59:21f ětEXtSoftwaregnome-screenshot>IIDATxu'^X:H bdz za;{og]wAAl`G"lMy~˄줗M_7dL"L;+b@^!3@y   Iu0tT=Zm:"J}(zR]5!tH6Im@!IEEN:ngD2U;-x ?EˣY+ÈDx:(m MRYɓʀ(۳R.|K6IweP@:$' (ZZʪO[iy 52J(۳F., ~r=3Ie!PI|Y\h{TU;my۲B.? dz,uU =nY,ul R͓<ej|EZ"[tVd* ,e'{(dŸDD!oucY6r]"s/>V[mMD2 {]DY/e@702]c8oψl Q'jh .,ahAMB"U?.s:"SCHTV%p'(eKMGI&/FxX#(Б 4bǾ,Z`.ExDEiY,MG w'2KHv{,#!dDBXCX?PVe:XH&wHUU8XE[+@6'W9m?>:#U%E6/qޞ2  ~t bt&XhU@\9qOі9GZI+K>lct yns^wVosݾ<@.'[/>Lopp+o]:cؖEz?ݞt [朔3 W9H(* xe/m)srnY, KgؐL)q.5JtU q  @.JEp>Z%3IT(]aCŸd~.b[.9ű~4@\L b։Tc_f|?H%㖎1:"@'RŶu%|2h$#ZhEV8-:Ə9FȪqqn'Kpm)qKGdŸhBpsyQ`*Yyiyq|(U+ntj L+/*|.}au>O"Az[R.$ "Ux݂VSd-a.R\\:z  頁H[絴4lٲ3w}VV3iUPys nWL{8q>VXV>2i cs9zڨ-d͛w 70wb t4j[$"(((c(O,U?T6|$ '466?;LUA (jl*J6_՛=*~ mᏎc#:jrVC HHÅ BDZE6m1)䥫[e}h?3vس z]]@cs<>bJ"| 1RQ|c{#m.@"TrL:uuY ~ڴ 6 i WN0*H}E}%|ElOO,"U(g˷pެ=:ޏwEgt:L@^[lc=ztY^BCV 9CgK8'VpBC 'uBX缶|+~o 0h&ـfV(A,ق[Q[n!x+Ttjs@Vk[Ih=)9裻=...B@z91)Sh-+ov*mۺe2pNQ2ɒ'b}~s^w>0ȴ}5jT_ RKKW??Nm9$6&|(WB >^2. ZU\\aee9hA8rN" c]FP@T$nsCŁ\ϟ?@ifف %˪|A!왊[!$* &8+"AtTSLٵs·J JSSs l6[[}ü#EET["%: ysA CF!mBʛ:n( ~m R._ϩn- 7*;{|!HLMgUve &6Ɔe9`H2 9ٳזgjf66myX2It xq^ oi2ϊ+$ ?} Z5"˧Hf )-c .\#RF6ۼ[*pVOq]]-[HM[|TRR":u7S| 9D|^YYqUXU@V '(RPJ HםJexähg(dtoiO65ppV*}7Y>QjZdIO|+xTze`bzl=LpyE3ve/-k:^Y5.wmx$4qG(U t@rNnVzu`*^|ſv8-]`3d;w, 9 ͸_d̦7E\L vNI[wd 0I"@nHLl7ofk"Wvg$tHo](lw0@+22wYk],_>Uaڸe%`&\Tcx=i|! >>&@[13MᮇoP(۫\T2w;S]]B~g .xaI-"(tbM9GF*),\+8x@2 nց$=跾v}?P[*>>6@ Kŋe…`Aۤuަzlf jHلۼHHZĥj Tiu-*{5PM}--f<0U֬&Ȫ [Aq{TqqZO".U555C$.P 9wscjvͫ%c'\Z `cK3 0TLґlY3K|Y?eVs}e#8h6 y@ao@yزZZ~e2*y.P8mے%KM<>WGݼ2kHed&'DÚ7-qv h{䋩b IOyҒ>+ssswYC”x"[*ZeEz;dz~k+[x/><|1cQ`}~o.\ i[L=,_܌9ceRYC%.@e}\|OgZnPH Œm_ >b}.:6YEA%ì!?nVd tY朼֏^($|rW%z ?~N~3k'o?Jׄ wޓ)SW^2bF㎣eM7ײ!x^)++ 6Oҕ:P=oMxɐe_~9Lz~?@͚5Kƌ>ef̘a_|@\p֥+j3S SKK,_BnSQQgEM,th8w2mY1byCĉˬ dAV1){kEr-g7cOɮSNV#M0Խ{7*s,[Q=ygRv+@M \0X?X7֥K cX?MS{ʾ>?gq|G+wRK> Quͷŋ%t?V2f-O:ʭ7[E@]u5mtЁ￟w|gu>tמ2yx\74av5Y*67sorkɤ?\'MKm,//7ce_@igZkf=RC 7MXeS޿.;>-Ɓ#@۾es@^x$cԨmߧ;K<`h[:B9 :gtҩrETD_Eo͐nOȲ"BGMK,%%ݟ1c|ww gcwG7|ғ ua[TF |I>r˪jE_~9Y]U%5h Youmi BRޜ2^D//ҴIFKK<2i]"={ N=${SO\֥K95!VmJ&Lowp^Cg" :[4鉅Z7rNFgFYB|  5Ʌl3èD(Q\V{\tѥ&rgΦy޽̲y4g9ig?˙g-U2`@ UƎ}URi]S]S]vv{;͔Zb=zY}H„N8Eۆ/oѪW9L9g5>e͜93{XdzԩSlkcdRccZ5|ͷ2r7n~]gC6lSInstiOr# ,X {کĜvv0>%ٱ; ;{@>.:PYtYpCCGmbk]{ C' jk%) 4Ǵv=cfL"˱-7IKZZN=.1em裏n4ç[nMy!InnTٳ9k'e?pW_!Çg)_|Yh%rU 7\cFC}]Sq;B{Hde;8U/˯fz=]$VMMMɄ d?deR^^؞nF%} 8cΝkcr}>'_|j܆N}u,//|qכ^c=JV[mvyoCif_^ڵ 93<+?!Ν'c\g߳(A`Ќ/hb֭.mS7z()++kw?q Y[=L2%߲^N;flno8m4,y7q=*f3f 7 TO=>.״ieM7 GױٳgzrvHWeIӶoʟTzϿkӾ-~i6gw ﳱc e ӿ}ʎ;8uz7kJֿf}>m n ֶfMM/&7x@K믿ɣ>.}]w} :ĜioE7e?L%V[?jxW䧟~?ӜܻwosƵ.}N>G}}wW_7~ ĨᏝomӦM3u䑇 NC{ϵVW~]ӻ/^z>3<'fkk:HE{Հ4Z\+ \l^oǟ4'h9`ָ҃,v˖-3drKAi;m 6}.W]ul!d-{ァ\yՁpzfcz?-|k?ALY6d 6x9O(]Nۈ;ip2y󺸫-*͘?n}}} i믿)lŊ!ѿ?~ᆝ!4yk v}^޾㎻-XМ駟K/(shwI[^jl!W6O[?'Kkς]ۿW 6ﵻMC' Y~Tn#r?7N3eW^yyD>drtP-B GO<唓$iə(Q@= ?k2=fHv*N¹ZpQ>c{lwP~Q3\ ^EYYz9t[|as2jԶ!gF鶸HуMz nKT)zwc:IlOo8-ZHN;? !.2cШ)S.--mZz;ZIza>t\Ȳv!x]SZE[i@MYenU^Ku]:' H󞰷kEбǞ.qwqMq r/^.  U[wew}+ 4-Wq ukoJ4O?LN_De=I z2CkA{=ଳ/ВBQVěy=̬p;xs N=4Y|yp=gymҳgL􇛞O~D"dU,z 7ߖN8NVvzwɴV3?`mݮk6ݭg%kgj+j/'t\ׯlV2tP/Yۼi#<Mm(γ{uv댧 E?ƍ<8-?R1ZmR< lg{/vG0}raj H@ ^o֢o]^{) ]^yj]_F{J)&^J~k҃ma<_|2V[!G'h_-|NKg#kߒ\hjt}tL*O> ^זv UcBm{ɰa_T(e]!>x_BEq!9bo{?SO=|Nm}}j"cgt4^{`ֆn(hk|]jUHN:fN_7ψ,hw֖ 'yA6m+曙L龚t} `~V4YN J_2dibsMf+w>}a>3Mdb#("]P (=Ȣ}vw}oHcL\to}õh@EDQH虭VȠ':d+mf0`7Huu1.4U/.zN!\pfϞc'=woRUU\g-7c mr ~ks羇Vc>{UJO?08i\9+6 دz:N} NF-Z9eoi=7b?ctsU&?k0rmv~'2QӴ#|$iW1Gl?@*G.--Q35Kdef^+g;쬭._}j{7D[XnM7vm*73dm z0D9=g2[e};h@s]v,Æm(mmO0T+a}og~ e ֓!C$µҿקz&87¹rpB[H[1Yԝ ڲk7shq[xi-^zq3`ҖfbZči+W߄E۔kq,o\[;Rou$[ĺnY-[s͡ ݯڦj ;|r{ogAϝ;ׄ[oNz`}KD>k@x@I>awӴ"qw&G$Zwg.,%Í70Xϥ%~e=<8mḱOwas>Ж6ξN:c8qb0LѣB e[ouK'wgixLBgLn|+~Un鿒(=Hƪ}|VFOtp [6x uݖAWw]РA;Ҍ=?ʵé̘* vmwvWd ΃=$UH0"~` H~}7|c끤/ m%v;^z&Eud%lM"'_8C|iOtұq򲸫?nϑ!Rj8gt䑇Zd /JYz$@7/n7&'C쥗^ntQ-<C 5 o@OZ($ӢN+ ;J>k V2&O5fO2XϪe*C 3!'2C9Ȝvfرo{Ǩg s_p"G[7r}>A~;fgqhoۺt"W]ui-ݼy0ǭjI6m8 Hжewɒ!˴ZY>@eտOVz"= ;,뭷~ד5$λPrs@=!SOv]hgGg- 9^oQ[ZZoKe۞G# ޽iUOMg~7d=.ӳ_.+=;@N9eZgkϿuEpl<;>ݙ}ko\E{7o^vqvcdžԱ.;!Muu (me({Ҥ怖6 *[ ߕvNqNO}PR6;qtl'g I dµ~衇u 'Ol~YNO=t^źO4է~-ڞ+/Z-@u֖xh7 .8_vme<}o슊q7-I2C~v~n֙?[Ɛ覛c iێRC2?3T8@ G{@{ټ ͨ]k:?BWֳgVN',Ӂ-ݭg[;>9Km5X$ o?Jdž쮭ߴzN+ʵb#CðքwqWpo Yu\ ']Gkǟ=-dm˯WT @ |7rmw,3 7۴|$2Pӿ; ,Z }hWhndq I hP}g7߾W_}-fj7v%)mGTJg- fD?#?ʺnR\D Ph)=vXܦ?.29̏p?VhqҒu=?l@&$W =][ LߜwsK8?zt{K .jw"iC\2z(ۃi^.~ieW^R-}`༶P妽~g?CQWJ>|n޺fm'sLk^}l}O?,xw5-~~nXBdR$!u]Ԕigk͙XV}嗓͘?ھ1W /-E6,>@5ӯYuVF㎣X=O,A'=F*G}iUmO1Nn'8i+rҝjڿv!%u<}cT[D+A2xv;f̵f8p` hy,ӱ:Aa?-\Rew @N'08Sq?d 7oN8Nn?! <8 'F;3Ƙ>Lz54Է4@F}[g}>8c͘@[}ٖBu<@ {ْi# V踄G}./hWm1-0xv>RY H?'-.. VKQDIz)'E߫h叮D6b>sM7_%?s5$C <%fĦTtu.\u#vڱx;S.zLŏhڢG7'Dgvn;ڿ!{K e;c .ӶCIuk1r;u3{nK%lӓՌJ!S4!uÐyб`~7{BcZ=]ΝgZ: 5hРoC*؎?Xa%Jn>ٮ"?T`7Zs5We]i*,91wp JK:ZH-Z2iO$WD Gy} ifmFtDdiгg@o9أ*C+.._ߛiR9e>}7[?vJlгnz{CoE\&_~C&mQۡ 0<뉇5VZ :eĈg=t9g|f̱Hc̘K/ rҿ]m-B!mԮj.]v5$FǺᄏ }wdhkZLnۥ³>eZƥS_YͥNیhbq'KOyk.S~]xI}I}We7Y]wuv;XL E>Ձ"˖-LܹsH6h {̟ ܽ{wbI̙-K.~&-Od=hU<ڢ%?Hs@>ߤ~w]i ݿ~ϚGBq=;-[̴lՓ4OmѴ}̙牎ۨ6~APdMjГz:r &ȷ~K$a#]Jh˃:\A43qO<8VFl:uL6]-ZĬӵk֭f~ذaBې; [n]m@S\[$CL%AcX={wޕtj[6d 6pCIa=̧Kss< ,#^k|+Z.z롇.\mYotlD聡5*F'lPR_*>k6N^Đ)t0OVUHyc(CtHwʳ`sQ2eԕgi3:zuhBvuZXdҤIREO^JfVdSO=#㵵z w>;32aĈٯ:nTUTYY)MM,٨l#bG@`SN6miV@W]u&rȐ5Lu zuc䢋.q>w]G[s֚*Ufk1ۆ:'.2>.T'O 'q(A upd*=_VNz4ce ԹsO?,:ӯ__㾽/V-jɶn#K eM:u$eee)%#-)ɷ~K$E0іpP@L@(4@$dHJUUi}IhI6mx/><O ^:ZG?`}^($|yH/z-Fb1Mm (|HV OiL(..*ưL=%R BgPXhӥKgVyssF%%cXu8}/Ps 54)//XHEEi; \II47gl-[{@kpMUUU ƆԔpk8PVV 忂Ҵ{0顁Vqs50jWyk hS(@!`?UVҁjjjLp}m?P mAΝrL}M8(?P=z޸о:pp]]H.V( 1ȧ@x@aA%h=L@t@QZ[[YZZV~Xx 9ҥKT*9C]Ht"~x<AG<1.piܖymvi^755@~Q~_p~RQQ!a֬YR[[ѣtMRko=W.Tii,0&Kuc.DXRG[D 8I;w!Xt~Ҥ/e̞='d,X(^x~ ) {˗ܧZ[(-UH@6` I4i &I6Y`<3HC|D aq3c ?d?/,_ݻwxuF 8 812y{6x'eɒ%TZZ"*.*G$q~,EEErgUWoM0Qvmרbd޼ybEK.eu֖7LvMMF]]<#r#ׯdl2ԩZz!l 6,,E|FNZ-Z,EV[m59r 2dHigLUkk<n 駟ٳe%RVVj_/`sx9sʇ~$f![^{-vmM>>~M=Ï&Z&0`iΝfꫯq~7dVrK.5a?o)fwyOviI't\+fΜ%'O={' }q} nx!-^X~WhrGKEEELU?mB#6;Fb$3?Ntg yXiw]엲c@G8ۻ ae.\$z{I~Vƍ/+&^]wcI+r@6m~'0Jsss}vᏝPo1VѪo5Ӑ{?mZ5 / _Hj*}z ,z_ @'SL Y6l؆! {`wߕ|޽X%\dڠٽ+ 5j[fekh|5\ GG njjjd]wd_>}V ަ$+V"dzɲ.;IUUU6 O4\駟Me-6!C0F7v믿O'xv!놬SϘ̢-ǩGuoѪ+zJ5S.߇>r- k۷.]}5,hYh/̘{{1;u$~_G[)=ȯ۳gI,ںN[)}{A>Ͽ[JKKMӿ3˖[na*&26m^[ǟ+l󦁉>-fB*'^{\G+n?=zTp믿1;cpH[t oHMO544נ-Ԕ)SU2Yqo3RW_7۔*Xz!2*m„!ζoÆ sG<@h49昣L壏>o6;m_E]w9žnCkm㔾?:&F  ԆnXDV)Y_=$Q`&^vݺu#8,(CTƏ\RmܸMe˨Ǫ8m{'O,H(4UaVh1l2x`4hPR{./Jp#<&_|A{hŒb{ڭo3Bq9&>Hӧ|aVhqJwڼyܦNcu6"U$KCt+"coݶ* qzNӧ[[}WAlf,! ,.|GfRZQ,n>}$t\~ F2.]2-m,Ytۏ-;J,1u_+8_z$Zǹ=E?mw7k*~>6r8۠)&m 3N{"}ծDi ꠿uvm͎:H3o?F9[99X555lDY*h,eeeݝVoWbm{\ήRRILJJt>6 @bV[[5$ G+ZIIIr N883>/*̝;/$_5jƪIV䠃_pYvb55568{ nLqԢ=TUU[Wuֵrm.q۞u]Ggouӻw/sY]]8[͙3GRɭ*U@t,@AL544*#67]ve+3) b< HmݖHmff34Ν;%…L+TnM>2~g8- z> ަƮD>=ۏ2W:D8䐃_~ŋW| >,L4)۵j7oygm14ÆmxV}. j\S~\}:tLCz[6xD*G/K /?N+vozZ?ձfm\#<*2@L4PǟBiɰaZT__oڙi7 I4\x<_p^p͞6lzK*vx@7|Dv#F&/ 9s<& ޽Y~QY8}'ҥKgiaV$=SjJiв;ضcH+4lm]j`;MYlYӫW/&f^c=TYlvpm4\^}Nז~C 1?㐐(N=;U|G &Jk[1; |Dr-L^pT鳚 ~mFHNC*KRe֔v-n/ߪj)S2S.]QC3p@tMky\+EC$ 졘nmgʄg>UHiiYp4m]CC!f#m}WSI_ +{Պ_zP?fag_/v@E+\VrIQ3Q{wzix{+`,89ԓڵ;UOiH!3dCtqHuuSZZ"'N8Tekq?' zo+T  Qiƌ3BEkj CO.˗/75P1A8JK/uTPcjָ}]a+g4J.:_:uv N.ktq iʼnMRZZ*555ҷoU,iŊZSh:r*-LNuf*lJM7 }Z*QMMMa{2[F+ϟo}1QZZ22pZ :o1mI",t)a-b YCÂl Q]]edtLgР VET?m X˪% @<cq<;[b4c.vpmXĊ@DK)ۺTk% AhlF/8߹t*//c '+~&^wZce|땊rs\9w&(TTym4B &@b2qFseTdDiiliiGoDg4e;% (--3x ?!Ўs9M땕 ^Gu/D] n8z ,l_^Z@R\\l.[[}T@玃^s]H!EEnpX ;@m aYg,ot@xM-&je B:BmDdܤ9OC/0IlOZ䗺0m @4@\ڮf=>XU^/dmaPEW*J @@^o0/~_L䓆TBviٲeRYY)ʼn-^Xv*,MM"--SXj.&o7dKii; yee%NsK6੶AHUGsG?u׍ gWG}"?TWW_(]tx=k2d{ 0j& , r)//G^(al?춦sؗ6e'|jvkkkeʔ)&Obۗ/_!ӦMxi۾/lϲxd7YbEw|Yt Iccccs@>!'̔ ꧶v31YnmmVZciܸ%ۍ=J:u$k1XPzd]wrfH׮]7XQ+>,>>}2'Ċpr2m֜g@~ԔgW;8ݡ? s]{!N?͜Թsm2e 7믿9cdvM1:h6=Ȍc׳rew1ZZZ6fPs֙筮5G+Eui}vAO?˂ ;[*N$ۥ"!l2Yd l;{Rv*=zt3cj%Ez-$*5zc9_S[r@ʶe>ilɾrh[ WS d{g54hlO.ch`AҼyJcctT-Cݻ,f]fϞ)J^cx<Ӳe\߿H3g\ijj4wߛ޽l0}TWW'%%%ҷo̙3u1PSk;wy>}y@jieҥoEB r*++Lp,IúvUA 0U:w1 @TT'4Ÿl&+MVzRUֱ@w'M\|͙͂32=KgDmr {=ywM7[NF|iYpaz[:You= 駟5C|laȁ z Zk }92ej Y].$c\gduב{/q[l&ߪK,umϦ-٪$7N:ӓ -Z,]t6'@.7:} Z:Ҕ)_ICCfˡCeUC=bŸrY{h[G,;2O޽d56zG0V؃ݑxhM7sTH[M4Iyqill4k94c1}11b#s>v<{}S]tgɢ9 瞗6.%%|@,7_$}׭[7ӆ^Vmlcn]i gP *)?¶tdwڦrロfoYh 3k^Cqo3Lt g83|0vmrmFϞz䬳/\[p±f^w|n1)o ǎП~Cf;2׵JH[a򧪪*Ꮭ>nHr|izeM6m*GYUBNeeé'7p\p;dtpj)/c\o>|xs| @uħSIxI -mm ]:R&2Əo v]w;voV4u7R[>Ѷo<RWW/1bx7pCsciM<hd <(mݻw ^g( !U6YXBmmmlǠZ} :>6A;z}mRahKٳZ 2$,jka._L4mh͙OO>< СCe 3Zi8ӣGH-_\v"*++du v{31`3AE[tBd-}}Qy-' */ŲQRYI5V7˯)m s9'|Np/fzͷ{)l---:&OEEy}La'G;N艇v:e_cm[hIZ dZu/ڳ6Ml~]ͫ"nǭ,Mo;&L>VP߾}ݦ=h9z姟~ロ.f2m}bg=ݷ M[mm] {O>VmVtd[@Z͙O[+-QcI29ydԘo<0h1xE5⊫q~q+**LEN'o3{ رo.(!RY}ٳgwY.4)**?O!rI_ U@47-2IßXV4/V$Z5sSUU3tX5?뮻Y/ҥAzfРzVל9s]׋T7ys}WϪ@q\֎hY"b`R f.g-io4I,믿57xG/ՐH-YT~ZpϿ(^x\rJ-ڷ2s,{}7Os}MF ?444dj\mU }- JM-iZ-T@{_|1AZZ^o}F.%%%U=r s~F_L4j^z{l-ܹ?goҥ%y|n]eG ?466̗NŹق1dO2-/׬=cGڵ :4=n|d2+orYwݵewzW~+AM7)++HssMM}g| r7?b`r褓7AO&s t9_d *dtcIE句/tso07tRhj! u&M\~?ƌe…2{oVr%H>}W /dGdAe ?|mµmw6ucJoU{8?!އkIxd/J>nMqn@6 }RTxB=eR8c?ロ=)9y߆m|Nو@^k 쀹 ,@aWKqf^}RxЛֹX4~cisj)+NJ'۠;F+|/!ˢ? Y=J[#]@$^oQȼ\vkl@ xSLA|rUyȑoW9(/ Oy=[[[%W9KxY1Dl#-)x>.WJy'#76qeН݊LSZn?¼ @*..|KKJ.mن@T$"͒mŻ@j%Q_V<~k+.j7!N,\9OW%!MMɞq|m 8 *O)]JүKdUesTZVkNG?4@J?7|rZ;۝d]v1ZZ?5t9ج'} Y>uT hlr .\(} t ae|ǜTΜD t[}1^yMh6 +X8ɶjC6&ܳc}N>@ Razˀ߿CKdҥ Y_~vzmu&T*Fl++Hmcr^Sᕓ'X!;4{F^'gMf, }믿W_M֭ mLJIiiiȲf\3fzrUV fVvR0*#Ӵ)"u.s :ivN|5If,j1 iM*ջD6Tf'#ɹV*g ҝI xk7s *K׮]!в13 RYY*%ݜ2OĴ}@."USSdONkӠ[lrMW0"0'\E(54ԇN@TYtȲ>iOtO{;w-# ^Ċ+Uh`VSg)..6krKgCҩٵǢQ]]r*+<1&P lzvZ|yr-WzN= icjOmm:׷JTUU rGDͻ<{!;B rd;|iȲ%KK \yݐF.Aj3gO СCo>+6g~ҫWOtM!<?zb`mz=D}|A lo@M~ij阭uV{4]EPmޡ۱D~ҭ[wo&'Ne˖ɌP4 HFillLhp=L+i ozdrO mvil5~SS8*{yx6~ A~_A^T,UN*..i#;:577Gi5'}`0A6.Pqq1JJJ$WY'pIxG%e |N&3[yisL~ۥ}"]Jh˃UWiRV@TKLxUEW*ᏗYgvi;Cb\s Dky0Ue@S$ ~i Li*  }@,HtqSO!n@A!DujndHkk|~DC A݋\+Zi)--.̑zKgPC3=2AۿX@p `G 'Űd.+ gXgl2uTdymtm W~"9tF6H7 |>Xkm rJCZA@Z? zqqt7@bQ"Y78 tjhh0? ^@B8Z^庻dE =}q;8˾3a]6*1@j[ K]]^\\! vUm1HF -%~ 4 RC=梬oTW@a]^4n )--$N[Y?^o[?A &Vpm󭭭fǤU/ 1ʟhc@8@\Y>uet|utDC Aiii @eTH444}WC ![)+ e`V5!PiiAZNG 3 +vT4jmmYYhTbvb4 xB`qg.ٖfJߢ\':ڿHdޮS*NgeEwjweŏ?XmRAbA &ouk9&PmmJ5@j{v@k+<֘?V% @b*@zǙC$;B!}:aq ~*@U;7r|V\f{ @yu3qA$R/@H[5=qVY-ؙ*\ŏTH% IsVC!*@%qB?ҁ@ʸU8ۿEoU[E ܂g@.J$!@-r=2|űD A@&Ȉp;6C _H@:;Bz@y  |뺥RnҤI{Pllf[}k6z+_~PJ믿T )<]M޽뮻,Kx0!#C _?_1s,y饗CiO8ly Οt ҭ[7 <(Z~g,Y$dSۉŝw----V_=IƢE{ίZ~x/j"}%D &˖- ~eeeGw{1}R'YzX\q{9,j^G\" 455G\1#CwmYcS7k=͘AhxH5 1ڵKȼUINmmm|]$|L<%8_RR"$ɍ7;8ߩS EӥKkpR@Lu2xbUWW?c!ɍ5wqWȲuӧOΝ;W^x%{wz^{C~{a$rK4oޟ!ڪm„IW^9sD3C lM6]6t~Zn Ѽ/u>249L(4zGGf~!?ēff0>LÆm ?Bp=fmyWVV14qVK @AݻWqx~]uۂ BDʽlWmfIGig%]bsx-.S~Fojj'Ҫ^ YhQpVsٲɟΗ;[>0m>ţkovi9R^{;(W\qYJG4Fίzrg뫭;d^;DeÇ3 ߴǻᆛBZڕO?K@)--Sk`򭼴_9&>Ie.%|A f:&?y\vc޼? {*bxࡐgϞvbuʉ'o*,:\~ uYu[Wwo3ސ嫯QG+pq?2@\^DV#e̘#3{yCw1RVV&Jg77s455ku] hd{% {_&Lg>(5Iսp6`lT`BB$JkhHm ޶jڝ-im]KH4k;|ZTdeg殻y>d9%X>\GeWXGȝz& @j*YlYVJJe2jԶzekP~ylڴٌ4tP+(.GDL ha2 @!0@ d Ca2 @!0@p8,r lI@z!ؚv-p@O Э`') I00ȃB }<,qݒe& ݉@(~_fz# 5]'ihh0s+99Vj@Tcc ~`dכ%ŞŞKJc407xL#Ut |#?[rssDfΛa&|Jmm ZB, IӻVjkkc=)(7+Oh@>_m"HiP HZ }4>i7jUP^^@gq@  DqzMžAz :+:L} /ZXн `0X@ڍ@\b{ci+8' HȾ$TW/w?j񺻨@o" -3]b=W~X@^oyC !Nq_w zFvvA*@\iݒ븾?@j CQn  Q4WrW3 -^#@B7W}zEhE@uWt!y} r 8q@B IR @B@! %(a@$5I0$ujŕe&ךre} aK>mAP)(lȄA9m R^a, 6 +'a_]BҪ|MaPA D`H @ڐUATXMMoAWa @N."ҭ+V儬0FCb)󉻸 $_^j,++Æ ׯ\J 2e) _CC~5yY(vhnG<xY䕜3k6QD ~PEu([VvՋX\ցe{e/Tˣ^ސ#}f̘)W\qTVVFs?dI>_Tg=_ ( H 0AvI^^5KAA3ð?!ց_RRDmwYR@rѢo?~ fZK Q6ax kieOuu^ $YiSyۜJ!@ҚVh۷T0@,ov*6m?t-Ѯ UUU֭D*RRRbntG m6K^R(w2AX|x?Ӧ'9}["YYY#f|}U|)?H޽ޣs̕իטD/m76>B!hwoD^5j[sיqW_[۶ڎj%I?_GϜpgv.]̼>rH3fc(M˦Hm' q Փ, tұ\ul!=W Jm 3O}KTR~L^xIn+q㶓?B+=gi&9c:$ZOÍs9<~kMx㤽O9g;?__CL`boi=">Dt]2urʠA^0mrI'G32p3giNڒm<Ѓҝg۰aclz.XZZ"A%F?oI֭[/}1m DWkIw/}F.JT6gZr鿵Bҝ3~g lvqS`on5Օ\5.OKØmP(,f/?)>Ww <}>'}n{'.2᏶9r/ۛz7Ow]X~3 b~v jj>ҙ?z]lsz]Ꮣ~~Wl[9&6FH'TH a_B啒)t_^qŴ ֮]']w ).MC[]&O=i *;rWʁN 9o|䒿-{q?G7~ߚvkZoW=#3 .Th0P^{lO<'|g˯m?tmՠJ+//&R|sUrW[aT@KSD{Ŧ͌Et-~+٩ Cϑ'v,‚m8iMmzH;8 iA[eT' -(==15(@h]:Hw!wܙ3tonuZs Fl 4<_j=%uͷI;"9coVU麷zcT~Z1dtcVhwn6{|"H@Ri֐e>bK3}MC 4o#Eu]⾦}O?<^`Y6z|P 35xmNvyoHGlܸQfn?]o㤨<+b7V~Bw h[ngIرR݆H5vYHU+Hm;;OIpF wAx;q6I\yt<] dJVh8?_};JV_{eϙ376aBf e'I3U;Y[5mM75e i&OPZeN|ZsmR!鶄Bvp99RPX{sSYe&wĕ#-?9F]9\>K$O[g!fTtaÆ!#y 'i!ZhÆ ǧrZc%^G~}7;;[ Ms:%۾%ѝD]ϟm H]Vj|Aj~TtVPTR{$z+}`!s=;#v:^?Q[D{WZkwҐLTWǯtd@&ұ_c)+%JmS,ӎZn $}Z?RJ.9Ge]P nWw;KSeeU8Í8jswΎn}p(pIzI{9gjg[[`0Oϣ(U6jc}(**jl)@RVW']!lT\z6#ݷd2Q{s./C$Yf_S eڊWw]8ZaJsa%566(oɮ[y }ZYlkkپ[3w]ҧOh+=j4ݐvc˖ven"K/THUn־1a*.EAOљ>$$;(!X?:c]Vtϥσ7KπX3MTQ)I5%h^{#|Gl#oĮzǴgoAmy7[}72sw,1ufYKw~Yɓ%77WK+g;ﶺdUVQ`kʻ85mm3 ׮Z3uW}uw4M Kr]zq]!P啷Jz{`}=(֭ڝw)w?^>|ŗ|[O?yˋ/ljʔ)RVo+ax949C#L<~GMϒ%Kc>N}yLJ0q6j颩['HE@RRAU US?e|:ʕ+%-?=$+9YZţN9tywLҪF{ |1rE4P(${̙3Thit1yذar5ךI[)>Ґ䷿= s9S:*;+]tZ~?0۪֬Y+^{s}N;MlqO>Uȝa6m ["P=hLWWlvͱ1~BRQ˴ 뽅i|>,+3t;v$%LLPtHn{@* zE=w꾱]ܽˢ}u$=ۮϛǽz '.KU Hx]FׯHcH=Iϋz\!%]y VeRL&U3\@R+?M]<.O+kE=Oz!7'Lqsb=v p@$)k䰨 ̑ܨY x LOtH$]n{@*J#Jnx2Q>L$.g}fGE-ʞ8As^/*vc RԓddqF6l7gIW{] my͑]&JRF=ollt@q%y׌1J^~ѧNbcπgd絵nb9v Uk@J6n $#8+&W$nwF۵i7 JOd>J0 ԡB!Yb,]\beWx_J:mv}TD %i8I2-[ɥ'EkGk%Ц6qy?طpXXj{\7F[J.>K\Y9Mv[4{y% X۽Y>C|ٳg]O>V`92j̙Lx~9#˗-[.Wm&*ɂ w@ msWWWӁnJo}TD %p4T $W..+^' "uIΔ%g׉W}z5qjx-> J/K=5Oeej**#F ܦw jjjLƍ^iw!QʺueQغsS[UU@N/,WA+%YYÇHۮn/GP #FKɟG'|צFw  m7VfxWu![Pt3e޼yw̔ÇIIIkhSUU7HEEv9vwm 8nTu$m+['@rXGS%L%J ?L]+QR,}4.7|:X ʞ{iZKKNNx4Ӷ- _<GcꍄJMIV[y؂.qJF7.y'O(/7/WrS;R<JW}} }>H-=vȑ#dӦM%mwemFʸq `"|ڨͦ[E*msʊtTE %U<IљS"Εƹ$R3O֬*7cem;B']wWnt9+} :('N7LOkjoml-ZH)R3vMl|Q;Iݦ$vHe@R$VHU=9{n-ETYMMwI7*64JGMOnJ*(/0TTThRcHyl8>}`7o 1NzUUU&xtt[t[u P -K%ndݧLQWWy[V>XOFVԮ[>j< ^Bkmb+tܟSz]V"J/O⡇NZ߾}#A}% EkLz3S^Ř?ln+ bH|q'h7W ˓ܼ,G~Ǝl=bÆQ@Ĭ]VJJJDSEETVt H+\((zIG܌jf/N\4`߿lܸ ~^`Iqq+UWWKUUuTd1?w2 %\^!+/l;O͛Nl\n Btk8,BsNEEҫW/tE -{[!uЗ.@M.p+ 2/99RQQѢ2G*3i`c^ymȝ`|'( q}lVȔYl}-S J1t̟Ll \rһzPl癊 {ANM9_̨،7dH5 V, WJ*rY)rǐJ~磖mذ7ˣ>x2bpYp|'jj4i'fYjz衇eذrAr@N|Pѱzjjl,mnH!@Ҟ,l*D%%dpʕB*zl>ľ |q31gb 8p C_C6m$7`A:|RWS]]nYS>d:jrW;)2cLa9I+ZKm-@Fœ/+ iǟbBqX5neOZy@9Нd))˜'a_ )"+K\y.( 2d. "ǚ p}Ca>9WN@!UР&M?` BH82ΌJe>&f5}#l}t8A t@zI9_h }- ^kkk8=hu^ ~?^Vi n<ϛ4z'⇶o:@`APs%PŤ`FZ$L2 Gnu>Sl D a;NG7 b;dDc>v^cIľڋ@;xxU@&-Û@eO$>i{-9O V47EKĶs>90HΪee{t)* ?筭 Х!OuP+%Q< "^O}/@&D )`B!|Bs {,krכ%YY\н+[~ihhlFX!6jN`^Wrr0+t)=' F]-ŞM]Q&h荳:y<egt ]BHŏ\3fXI6??߄Az-E'R[[gB!$@ZXf k(!We@2$Nj?T4H V::E.HSTTh&k*\4k0\azq[ᒦ~JJi^kQv@h7=kߟ7HB9 '-@k-!P 2^@>XAnz,P%znc0B BM΃;ޭ0{h;8~CCh/ rPO>]<]t|qM+8!H>,gQ';i!Q@@Z[*f~S'm EVǟm<An\WAkZSD#챀ADz !n:H.\D5@Z=xdI;O@Oб,X[9$r?^*zJvvA*@\οNN@Oj CQn  Q4 ]mB7E !6M@O d Ĉ=?y} B hTH(r7 P-Td [`H1КBUS}S풂9"!4ItwQAUua s @ON."ҭ+>ںg7\NR2anrJx͛H^:L~ߚ kH{mv{X_Y,''L>nT-+݂0,u!io ੲihVtkЦ}LPds]gMRP/L0x=_CX*jJ4ZJiG rR(lѢo?~I&7oupR2dߞaB>S9CVTWWKMM8$H$RXXh4hd  iM~tTT 6@YIA U./~od}@|ZSYY)UUU֭D*RRRbZ@#6BRטM*9W!h;W_}AnM@"ZSQQaڷ%%9mZc8 i~7L 4ծMVSMMּ7!Gm޼twq[LKNNvABMAQndyCCj -4ڸqNK ]H;,6ǫZz,X_I4hLC^:…ߘ3ڷ> 6ʤI;ޣwi͟@n󬽘G.&oɲecKUTT+kkذa-#8eժn3m\.֭3ǎx?'9sҥ#GcEW_ˊ+Z `qe4xMC"s, t*++5z[Tc_m 'ھ%^i]O1,Y*_|'&\pׯ' '}z~I's Y.&RvjT;M7bMkZ|\pe-SN9=j= tR;S+<)ͿƛMVh?mL'_͜5ܕW5RoYˮ+$m@{Mxc&Vu߾퍼>o|ko1!{첿DOOZy9S}r*k;nY`KshדIo^E6jnHTH -Ӥ>=æ+#G+Tn&(m=(S۱T(fϞ#M=#Gz﮻"gqy2?wqǝfۮl]qY&@JPzQOnk%KD~ͷ J뎨YgKUdc@Wys\ҿ##dɎe9vmoV֬Yk&U;c)Dmk„ @{&9sF}Igsqlږ駟G_j-Җv͚|[WkZx;i۷Tl-P0nsNN 2 )>dhumTQ'?; >AeQU]ؚBh_ޘWgŸ] 4'utR 0 2uW^jFQ⯓+mλښ5kL;5*J ŐV?С~&|-;;; 6Drik̜;l zZEEE2gK}KDKCCssN"|V0⟪\j|:PA9+vI5kQnjV9fkj *+B^ʤ~Y;ÇɱHFVzeƬ),,¥ rq?J;JJJ"5lӧO=ɹ}@JM1BȴTD e6vM|s@|B6Դ/oGv&G&ˑ~]ld}UP>[ /ihޅkr6%Gʰ^)}-j3lE?H呖bzG|ذM9}Bdŭ@-CH5ډyç%[ZZ"NQ;CؕK/THU;ZC ,`V\rfb>r^E2iX .~tǺԽnk .wgjc %KU9>cǎ1ygB1}՞{!w\_7z0!L]]ymx-;~mxZ3dHS۳>\>.>Tio{@` )GoJe{nNVbϢrjG"˟[+k&#tu= ^6d^~9X1_{Vq,]Ly13JccBM/ }9,cݥ39Loer]= Y^^a^۷\q_3~39(L@ߜiQvn.+]tY?jI+Ꚃ1cF+o1\2/3doB́LU&<[~~f= *. O}Q5} =rִ?>UN7q%f!7O|Pc,>O/N2 \.nVr''HgiGL|~C6߷oV?s=;j c= n EiAى'`J0Ӗ2mL3mh%O>=E;7*=ɖt۬n}}Tkv.wc-s;;օ@Rtz{ \[apke?xtTׇ49 QЙV3m<[ߪ20$[rDYTuΛwqoيrRټV׬^Z֭[oZZ***e&C!IZ5cw_PһwoIGbFPXz*PFȡsetu}gk⟎~|ŽsV6ZA 8)tiCTӷ#xs󛕑ʟ/W6ʼ5;4Pұ64ٲ:{O; fMЦWO$Z;H;)Ui@-`K1dӯִP@* %UQw&G%6Q^>̉ZewwT@QϽo `U0K7FtM#/ѠGWԲmãVZ1`TQf9N}T@ 8)UEtV$w ŸJdۺ/j;*} UB<>i )'  .v7?In1~V%C_e@ˋz^[[+&vc R-$ީ &Ո;@hkf|~nt]}ʟg@k?ɶJ0 ԡB!Yb,]\"GzdIQQ} 嫯 K~"B&M(,ߴi|ɧgԩ{J*|zjxzϺue~+d +nwj]y|ek7&NQ|2w\{i}om>_J:mv}TD %^mxX\Ͳ*Y@mYuU?.? zƒK%˝|xӓ^̟={ ^_C^>sٳӧO+CF|Y&<,_l Ov' ,޽{|3կHqqQ_^ߧSCُ]-PjIhŊ|rf駟M3ZSJdKy:mjjsa:m]͐O,iH 8-B+_ 5&_HQ%O}FóGz6q1YaϧMϦ`#JMd?UoȪU1ܺ0TkjjLƍ^iw!QۚjѣGI& 7"_ k˯MBʊn%x㎕!C zҥLSVVf~d%_CsМڪ'mu}TE eg.H %O%׽V)_\re:b^萮 kOꫯM +3f+:䐃Me3e޼yw̔ÇIIIyM[pi/^lC@C0mV@J[V1cxd* {n~RJKK$6ڴH?]+[' rU#J帝 LMgi[9+.GQ]JoRs=M޽{IwɖfڶBAy͛o￟HWZzMcJ^H= M(]Hqq:FHtttt_ UQ e:V0R]Ow/ӟdzHwL3@w۷|AҧOo :ȑ#L -m g[`|b3˸qI&ALu OO G b{ߴ<|Y*,;JHG<)**};곴JeܹgIرc{22wr*s:nVh߾^uuu駟 ں4o0מf>SSfk:M^egn/Æ M,Z۷i:s8S|%n:׮]kԨՎn8Ι37o.b+0k*#{㍷Kg 3QΊͦ[E*mss7* )0-ưBɷiEٲrU,uUA] e'Kv-G'蠔'8݄2=IC 弐ТES*V8QFE/Ϛ,\HwVX 0s Is\̵>7Hӿ] 0tܘe˖Gud3?{ >VhԂO>^Z< VSo}췞 i &/|oҥØ1B I^{u]M\ft )SiĉᔾW^31!͗_~iB.}O{kϛOmg_|1ۢm]; 6m^x1ri@g#A߼P+y~> piii8[Rz{޳6V'鶻\=t7't1E.ȦQfRtzgKoJ}]/k:` eWh%ǐ!CLȘ1?`G‘JяGj>CZ+ 32>h[? VZ%3T;ra?c‡?~ X9(3llCH5K~TGiUOYYxM! 7rsd1.,YڏI8IwߝeB NlҥˬM=ZA4iN˚5k9Bz!2z(|=dƌvLYkNo/bŸNMϴ ?7|[~j krysUF@& M[M:?.lvfmTG i4mhKʱœ̾yfY8^k-מyYs^i%GedlذܵVPPhZٴ H mkyM!PC8@cθ"ǎm{%'O,9riEO7|c㎉j/9#Ltveg+M۷ oQF-߉C?<"]9Ӷ Vϴ; 4p9N Gִ`LkYŸ?TvkZv; Z1eWuwnڼW}α' W^2CjK@bs(fHB -eޟL'E/n뤏uLٳȿ *mvLTΘ7o;:HI⾶s]I[iPr =V >|xa8?@ĉ?X~(e!qJҊ*5ML~\B{+&?? GWGA^oSf͚9ЃG[=~֛4xqiݱncO ] iqIiG*j t_t2C=} ==P,бqb54ԛit*[pyl#FXwfw$]]gڦ}Xښ4ЋG~z Czsױ~t1nclPXFAK!ԇ$;dwFoi,G~ eK?( P:Og-[,R1cU+:FPW@ʒ7|u*Ԋ^H8_i>ҟ-Zqs~yQ6쿿#_~y C'O6[m7mذ1K1k׮5[-_QQi:-IJ*gfH@ҊMӛ3vgd;_$3h}*ݻ9a=x=eSeE[%;ސCH[uԑqKNrs;-ϗpS;j:n;O%%MU2z2OY? `D3Zuf̘r[o[yҿ?8qGnʛ2ewYtFZbʢEʏ<=%BSyoܸ)jL rz.R\\dn8J:gUUuz|ErH; ܢ],ʵvl9sG^?FBŋ9 ~e믿aiPW@ AH& +퇞Bi{==j~|w&x)..>ݱ4|v}ᥗ^wߝeZA|BKh6S ~#Ǐ`kAˀM[ꚨ4J~~~[ieDsms @Zm)%}*}-կ~iJA8p@Rc`0(7S"Z]47{u;ipu_ɒYn]_|(l2kW7o]e[dY2lv}ȑ#d9rJiK8ocGKaaa$*^x5OF-A>S+zY~[' δGaQQ 0-*+QخzܞkیFoI#zCzlϵy~m:Pcc9WcD ]p5@@EIu?ƕdW_z = аdAI?n$Ѱ&?st2;>Nzr{vҠ^Yfu2ڶl֬IknOm 8tPӧ Ũ0=Q7޴柙{ժ}N&͟Pk=ÇV/B ; z2:s,Su'V֬Yc|3xXohvЉs Vz| Yl.t]7QߡߥI P x:YnT%{ '5 >|2m77ˣ>u5Zg1\.\(9@4i'fYjBzTtЁ[B֮]ca̘ѭh(2{lS=^C 1Kf/}va"=y3eڴ|_gAo˯y5j_7UO՛6{ \Km@l=6z7`%jYZoH`d p@zl߭9J}gWަ)'@!UРF<`H VYqM{zbM.Zsdg5-TF`N^K @B .#_'P(d6. ,?D4@.GC > mp*A@ #?BM]3w mJ4vP466;U]p Ц]g-*m  m#ЦlKڶePM@=̳< v MbOm:*zy |^k[90RPoCq!@G62OVVuCUU@\H'^o EK5}?zE} }&\t* B6уG Bx<}S T[[kB X4)l ~<\6ZG4wfqG?@ZCUVp΃P}]kYՃ`0h\IZ65- ^7@ `:h7tZq=Z 1 m(4q?v0M&ǁ@8jxuK*́OE7E]vkHZ\[AZlJSp~t՛D=?}Y@-+-&3Z|"daM8rc3b!~tsqb=ipP^ $'K'}^@:%ށ6wīG?F 5]6i:-|G@ )HsnyB߄@, ]"-qx??́@pV4/K.F4>@HQq>omH. yU>w`C(MkM="-b}:r A$up @w"Э}s.p]@O #Z;4<4 [Dе2 @!0@ d Ca2 @!0@ d Ca2 @!0@ d Ca2 @!0@ øRH(7ɪU^[  6HEEd6766 l)THJ8i9sV 7nv}F0_|I^} ;wnT3p@o}K~+hOɻΔW}Pn[n;{rJaaa>ou#;̐M6e.K'vpRRR"S\IJ𼵹s;'c|\76?=jŊ]-sm7 SޮϸKeoZ]/??_.|9H2^{ ^YY\v_dvmu_~USInu]#;3p:[e=vmN:AOOa r 7Eӧ'Ș1F>3yg#8>w}xu-]]}i8Ç ~ eINN$ŝu !wuOTzMÏHGTVVkϕQ-F2-l+WZvqȲe˖_zy$PgLD:F66O5!mڴ͘Cwqgdg}n<{Lc֞{!Yұr!=E}͚6rk[ZC'vtKGk lvF-[rUoYUǂ ъ#8,*tQϵr'e.ӱ4ԱۤI;Ys8=S'뮻QgB0 -N?O7؜ANG>(ڝL mOVVڵeEEQhgţ۴O_ߧ8wik7?mٴyGyyfYlytݺVoyWMճ>'[?8)++@ӎrYK2ƏghӜӐ!CꫯzTiKѣGE-tj&O=ߨeGyD>߻w/gܸqM3$ӱ;*//B^z24`@d6 r?t7F=vm~-{:vP]]4t|>wM_!ȑ#}LҰosty56<߾rQGJi)?@#{ 5smv9gIW⊫䫯n|Рr1GwĪz^\\,}B:J ZFy#ciK}K~˟ʨx Rs=/vG2 0vugNҷo-lyyҚV _(_|| 1_ L]~_[ )gk?LN?ҕ-~E QE__x_~~~F۲t2(;Sn+ Zb:+yL+&MI~3dر?V@Jyȵ^rrv5WYaSV̚u2a˗ /G/v ﱫq57nlYfix[hQgT__/]w+f?'N?Wƌc [ )Gn9*K/Yvyrwʊ+wi| 2V^^a˩W^Q> :w>fN6~w…ߘpW_}͌g'XɨQ O@ x]w,g6߫c|#:B'>QEEE2y$y7#˾fQ:;<3/1mrrrZ|?555-^Lu֙_1 >,dgȇ~$uf}]O.3f:>vک_]׊g6 I>#S=EqǝUYtm6یyсMl<1c|A->7ތz^TTh4$b۵egg駟f>^yᅗ҄@NwA.<`+G 8[w"9sؖl˴}Zaalڴ92=Qmʕ糣 28yYYLSԲ@꣖mܸɌihgۡ:NrI?#<\JJJ$~殻"^x;Flݨ!gϑG-khhlޫn*Ugoˋ<['l^? =$2p"u잣<~pLG{?P3>W^Mrʶnk|KvnN?Aʞr)Ee˖9+{ 6T,X(]wTT4 4:S>~t]Y 'L /b}vYNqiT0\IJ𼵹s;'c|\76?$;S: TMj*93cwZ,߼y R/y,YT:Bjn港י3'?鉑vO04WVV*@瓕%'s]͚?)/hZa/eܸq-tLvW.;)hMǡ);'ieYksITZrrro5U:}+1y$ګcXļ,m1MЧ@W+^ׄ@h!NZ@ Ҏc ݻ<}OO?'+Vh,m7V?89ЃZK(첳<|y?~zɲ{ q4,ৠ _jj|褓~f$/ F 8[+Vʕ+\<,իLF\[4LkM6KdС2b;ۿ|>ٰa3}WKccȮRR)-`  hݺuۛ'o|J B eJĀaM8/M;S BZid!Hh>/z?'|vpvpbhSc_SC3iҤ]/+} tT{ڹՎs;'c|\76?H0F֮]+'h^K7HxL{Ovwk{)hMǡ);'ieYksIn/k*% J(2봧Gi@{@! HC@ZCi@"@ē%msYv[o;`B#n|38QG < >,J ҨЭ&I`0l>|>dVڵ$+++R  z>ds=W׉st݉ "`[!OwrVȀM=K56HL t*t@2-z=m͜@yy`tJI]] 컋7eړ^ ж~B:i玜lI@W!%4𩯯7-qKnn̘1Cw6'//~=f9!=y3$o =WI֙PH H޵R]]m=)**^zŸs׷{] ^;k(z-Ey^ck-,*$E[iZCAOw߿3Ff͚YK/ɼydŋZ5XEһwoӧ* _5UA::EǯYYGTVAׯr 7D-߁]4yd)))=:R++0@{s*:)A:+:L<ϸHb;Uߖ^vuWg}^dզg2h :t >LC 1yH?ƢZ')@M6tZ7n4&*lHD]Om6a f t뭷l }Z5MLK8Hmz9j0A}]ڋ>ȨY7WV8,-FMoSO=e<#2;S*++M 8P=Iҹ7tm͜@{hb׏ośނgyf遞p[x}?Fo6BA`Ьk> |#Vp6B m!} aY[^t=m-fΜiڸX>:iʕ+M:+=+V'x<ٽ@zGC 7:+8 *=' z-+k8+s;cvp}5@eeetR駟n}zz@hMoxܦch/ qD/x:2A٪?4!?}R)))1mذAzj|G* 7{, m9?D$dAO?uON 9vO>ThՏ?y^^`hɒ%sxިϻ\[i 8 \9?h!j雺zBA>/G46!UBUUU2l0>}z[fNC t, 7<֎NA!}'IpG+zmDvHU@ZߚQ@AҟZh7l*:\Ar4HG]ۓ>ZT^^.N;_&Kdpڀ 9ж,x Ud :ϮpGj;qVj@ZٳeԩrW~;?;?;=  [@Bv)qv}^ArG؃6 Hiիe̙ Hc͙3U@&L6l Z$іoT e5"PsD/ٞV4Vqhأ˵"޼@rm-gA@p@( x@AveօV' H8X/`5[ϭ)k50qǚyۓmͭPŽetjM@ `?vVغpiBz3Q(PkB6 bMVP$[߿d |q{ y$G@pdpHUTݾЧk}V0X)JyT ^! Iw vE:7j.:@Ұ* ~ &nj0(PY)R @xyy<+ʪU,ʀ堃c=Z's̕~V>#QN;f~'R>uuuI{tҪ*4qټiX7TBjVYK6I?Ntp@Pyma,~B-N>r鿦*k]w<#3ezW;Eϟkkk#74kV˺ns@]^#&Z{.$nÆ 0}es$/;ۻ4UYSКBϝC1S1wNʲy[#Dcdmtf-@W_}2M~2d szy>s+/3z=bmrW ԡjj|dqIaa 2E(P/޿\VoWb'v zRgHt? 4nvk$ ś[i~yܫW*4i.XP?"Yvy~iZ)j*яN0.r5WIqqszg'g1{_2fhԘ(h0ӝz[>"Ӿ'ea=e[/S @֥Mt[u$ r*..'an1AY[AzͷM;Z?J8GXA,i*ۤN~v|Oz+|q̙#+WAJe„2lP j}go=8>tzPUUeΓRh@/N[9H/eԑKN@Z1ҩ'n{"cf>`@9#WƎm#dƌr *t9i?ٴiSz_$gqy,ׯ UW]!Vo_~ń0N 49Ѓ%oKżw\xy^S׿>Äd'93<նvlFI~3eӦ͑ t,nnkIIIZDy-RQ__)@:l`CW>>[l*VԾ}a/⮣gk0?~;S48'{_.bdmf bit)˳>om6ی4j?M]<syGmvqSz9 XZs饗?q &GOԗ_~%S]մEo2"5@Ւ4Ya)ttt P -(B'[zɓwrG?kI-y≧Lewj?hxf`覛#u+d޼&yw쫮քXZyO?,ymŊ\&_|y=.;py{WkUPP`E?<}"g+|jxfz_^}uB󥴴<}dNn++蝅3[LSQQ~ͦ Zmm/,,Tmߴ'PmO|vp@҂?;'i rYNJ85l0?:s睷Gc\w5}ywߝikH4t[Dq]Q? ʪsӢ*ƌ-wSգ6|ɧgG_Hݏ< 3g'x~i7mO4?{xIz^9MT~'+b6@ eZ8ى>TK;-:x8?Im'HNNSӿ۷y?HfޫWpO¨ٳDQwߝenn}կ~){k/ʓO>>9iK:- ^g]TC͟@ƻ=zt M[$>$mKYft۪ @j $P_.웵ݭ 򸶶V:9>+~ˀwyyM-Z^HiK5'QID[DZ:LfdD'sBM%Q3 'h&>Sjy뭷o1(566JL7;|EtF#\TEٻ89m^twS糖$$^q\m=KL5qlcplm$4 ! 5PG_w[Vڻ۽;m0m~3/+IVhHݶKӁL߀#vW\ SoZ )uܲ|W,ÏoaτZ%19rt@kii1kf'Z'H<2I"yoʦ#GǏ $lcJutogļ?^tE mV+G^Ծys4KA,)CbQמ[&2st"2V,Oyt\.̛7WE+r 򥽽Cn|s:'8UYU[[g'քȲecGkǛU=3@%??_.<ӟ*2mBZWLcұ*r#k'NP=3*%@[$6y;f/{?=$;^*/.-K{_emIE kk@bźI,rl$%7|Ɲ53HS@Ғ{ yk:Uk]!Sc1'{CwK]pff}^ЀСf;ٔA g\y-߯~먯.ꪫXm?I7*="<~;Η4bDH= [d#1Nl/I]bs#ByìzuZ_c% c{[m{na9o(3n[!ej;a=s]vg?9ik|K'7n25Hż3nM˃4{~6G>! _=ztַsIۻ>=@zdti3]zƺ}㍵/]tau.ßTnT ,!æZ珍c1@:"vIXOA\ztbs`rK'ʄ?҉Ka_d1>#&M4%{{kug?yM{'@b%F?I*ʟ\+H苤x%R8|+:K\ctzLC ;jW3_Emf.ȅ_ =6%V%_e5RWWg]VzaʡIYx 'NԘ*Gn5ƨkZw8|Q巿}„(+W~MCU.y +_\NӾ98w΍tezkԨTdi ۤKd_<L6U$kC1XsNP4yFR{nOI7Z!bsin/]M{O+S>&@ 3Ÿ1cogJ{ұ؊$ ?Gb?p7̙[> K,6!H*>n4ȑzUO8A.Y*zZҥ&88q\~I!z䑇#]4w|Dyf ֹΓ'g?{TiФmBw.2+9B$֙XbytiOW>T\(3MEP:wrlƤc+{@:h39XG.Ѷ"֑=bDo][-$t?TUkȾADv֋ Ti( d瘊s>9 {^8%F9v{׀aȑi4>ꢕ8ƍb*H/|s*( ?!淵J'4Xڽ{֙>R&Od*$G{{YB;v"}_ _Tȱ9̷R:]R8B-lWpۥaןn49]\5593vЛf͌ɬuBk?EB\G>XEZb(C2@ #u55ﶭdJÜy~N/g (ch֬f#g"Z?4͛+dQ)yud'g)XF/2A?:~b~M:kHWT C 9Kn.j>ަoxHd 7'C߿&wuIEE47H}}}Z Gٴ`hkO~>sj+f՟gRYY`:U]bGH/~wx:N9D鄤Ѭs}T͓BrMiA{Cڏu ޯ-ϸ?Oi xI|GLlʾ}Oaa72bD8V+s"Ùݦ%1ر` }\eeYs>%g-oܒbs[9rrvgH)wNVʧG%=!mGߐïIG#cD@ 3O ;c yg+,ǎݻw['H͒+Ç3ܹڵOD`wv`=1RP=TqMW}lV `?G GoX6ת!i?Tt5Oq @V,DBŸeҒG#2VP 1b)7%W!|]*QPe/6SrygCoT8KјhE&42=$noo/JuF~x9ݶ+|/)c Ν M&yڮm0~pGumpd`y'ۻ 3ⱒW1+Z#3h?`<>j V_/m։i:phԅRd-.1HA`c]k&$mG֛߰'>Ok +S> UӁ=uWđIUtԲze065YʧHr#fڧ;l8rD%bصGa8 z} ;ys&@w'~ctC hxdhAwSisHɸ+X*eHd"̱ ?Gic?6WGt:|ӧAxk~]+ߔN @ڱ]ⓡ XNNG Gp9̒9֢ eHQ+mGVsx1^6T(mxШM?G^w!5x lC+챻Jfn=[6)!Q;`h3;C2ZM[k-뤳~ L81 $o7 o pnϏ76N&Ᏻ*%@!QǚLeJzi;F֫aSKyRiڻT&,QW%@|&7K{>-#~Q&&k/]ցad?JǜlMMMhG%Cuq9z477[~)..LQWW/k׮3cE 3\.x:Amz1&[J{ݢ@9bw78đ_!:8 ސڷ̍mM@ZEІlRP5GOl okڻ,ZvE'Jٰaj+ʰar:v옼h^yU1b\ugD&۷o  i8&,PŌʾ|N+L%jJgn&8+͘ HK6Gi -&Tvi?XF_(R&77WN,It, yp]}I&}O\0X@қ$yL/ld%'ޓ{j%HK ?gu1ڄ;7oW_}T iVE1 ͛7TiS_ /l٥rҊ%_f*~40ygY6fPX|ihҢEѣM[[74VgUVV ]]:PI3tQ1|E9I;;EZNUc22T[[Y*fC=0a\w+e*#MCݮZysYSL Pdذafuև߯44h99>Xj5j sB}9qi%?޴+//K/XfϞ%~OV^#ҋ ']}sPM\P23d }>& XP&D0[ohEe]k2`ɚV57tãwM[̩ϞvpsLכ؉J>=o%SOq3N}}LA 8!GAxk%XtL,btvƧS[[k ڵkъr ĥjZ%jHUUUeoiӦ*:JI:~'ij1E[L|~3h&q:](lL}e^/ގ ܊+ȑ#&(m˰ae4wXaT}7ʕ/~t!]Gۿie$QB-veHG%%tZ/u]dyJ: t ( |wJ&ȑ#CfnH:n< V?Sƌ#'N0'&:.o;wF|-X6rjQUK:GPGGٳW>"և͢!ԕW^!K.DG4(IKJJlß7 Xf~zdG۾Q 8΂*X6$6gl1as2ڶm.g6m_|QKٶqFuY&)E3x`I9ΨYf%;iEЂ i h4J***6c13Zd.0U:]i7.SŸ Zf]I9JUs?!<"lYXmi2s6yumzL Xt>5k֘ӧO ooi Vr=ٷĢsi͞={zqm{ 6ʱczsAQSSYk.=iނ'WM4\44iӛonYGҒ)ztt2-˔wδ_K6Mm@jO'>fSOE.bm'b2_Ōʜ{vʨ ^7I8#-Mmt/g `DfXG.ucI=GcP .pZ/Z/o}(d]zT)mt(DA[[/붭&x^?M׿ʹdS%%fwG[[wߦGرcMsQq82n8ٺu̙3G2[s- [頙?H'Ns9r啗=RPP(SL6t4 Tw#O?a=;"G~7&UUOc[.kܸx&}_y=~+`*#-Ǐ7߫a>@wz!tՂ~gT#r|OĦoG|8+j=R=3*%鮦&8~ҿo=C7rS!0t.B N0w'k uc%\m}%1͞'0tucwIz@m"׿)[%Mf qreƌirj6Yt n~;XW\śɱ 7,^{nH[͟'JvZܹS6oݏK.؄J4$+ϼb\f3gʥ^"?(#]w L9s ^}u9v4556T]p¬S8xK+|7y˕>矉˾cmOH?Igi9 lR>TZT H&v6XKJXa#oXFKE+E;U?UU͝H6h %4O4 'ʻ}zM0r[kkw~jll0ذaeRzҧwVTTzMC~ȟ̡8fMv*i=ln=$ގ:{m|qWX+"ϑ x쥒 HC]j4aRYWێ2SۿrE[ 8=[tbkPee. bYښAIqt4eUAz3Z{ 'H$ Tᔛ0F[$KL}i'3Ӡ&tsvHh0vO.zӛ?TvNe2v+Z9 (Z ND#pFР&THB +M[K7(2Nvk >vγT?~}7K^^8؊u  6 ,ÌI& *'"9 9H ?x-&M@ =TE#HSPNDC : Wɤ}n@r .?C_n{;z:'˺)h[06@rn,Wus@ *{D++[u_W Bnvb!KKn9ݶy;7O )n]~Z@?mmfub!M_%S> c?$?>G' QzURuuy 1[hMV@L=*t-)՗y逸n@|5VtސZ B=,J)s?'޶LGzE( @Ah1D<<Ȩ\- x%z@R\\$yyyӖo5@J #.6X䃕~fcL<Xt赖?VuBCO=4 =8q:&-Qj k*uZqd7Rt)T:лM#c1aݮkM A5 ~tݮkZK(*:غ?@BO"6w}]kYՃg\EZq\Se˄B̠MB5TJfwZ zz{wj+t@AOd 4p<-`B}MA t@zITG @Ps*(ZpE|wr-g n'k'Vo-YC7E`z`S@^҃ :-'Z$l; o |z.=!~ yI(yQC#dXs|y%Vs0P@%ځn3wD8p@ ^6 tzW?Gx 0$SaOP30 1+`E϶p{ws*0U?znx#7n#!E8Ě'y_ W!O=C B!iz79(Ÿ؟#Ѫ}3g@$zx[ׄB3<lkKH#]]n+LobuˬN溬0)o@J`4|mzW2w].L\S6RY]v \\x!tvv+~v噅"o՛d LRt*&k)P2k<փsAhmP G*~Nh!AzV Wi N\7ß">Az +Nx-rpmy^ZZB78k,zEiNB B``C-O#oiTzď^k9u (t]2jiWzl+*$Hjs0{^B @".Vb! .vmք@@"(/G6ԅ $Naal6z=\!)t O{_FHh<O B }!ЧAŞWHޖn0@i8&> zDZy{!4D  1&tze'z*t /y<*@/=Ÿ(| t. 3x-F[E" BwZug].W@D:uﱻVnn  D;hh9v' Hm~_[1J;Q_s Bl}@ Nm ]: S8fBPeq>y7K@gjZ[bsb..;sH{@²lk>Nk鲂wVP$yt˩yN8rȳ+HzmZzn;gtj0șW,@]prhzXdz f$!^htATkM劫 7n8p@;.ͧ7XkN(6۶oa}Ax{@[-3ӦMLM?yif9qTUUIhK_7rQ\Nۥ+秡\)((pmuϻ/J/6K?(n(sn"y"hO?ttSI$kc o"h U^6/b)))1gϞ)^zɝws>SG˒tUl*,,o~wJZ|E\[H:mИ'K6}/ޒGoyZnG\Ÿ;77 X ]՚ؒx}}Mn>xٲU^BÍ7ҀG?<2dK^xa|_To:DK/,CkkYBsV b2zL8V[dNtx%S>dYҥ .]feeehх^ (ν_i#/^d?3 ]sSSsZV>2m+,7=ɦ9dtd^9stI\I筷6l۶ydtիט^{8b]uy06;m1kަb^SSF1+++d޼y2lXYਧO~>ӊCUϙm:B! r ?_nuO?c/X=]v|>TH.=H'DQUϫt~tw|G<)E?}%/i2 -d w7#鏎Aǒlz%\d/_ܱ˲eZH#GQFwI+i^yɧMS\\dv4p6 8>9+Cg^hc)**2q=ߞxwYfHaaaSrQ,TZvy|uK:?? .5iv=Ȅ'$Ho_}%Ÿ'7G$@2㗎.:Sy4\ذac_`x2PYaʟ fMH/MHw}3Z3_T,]dx?nnh4x + K/O|'qBn#yO /,7U;+W.o}}W2?_2stO<<أKü`=̳&+. oז|jwdǎ yf6mituӕ}ʟ}}}LA #hl1]t")+ έlsQ 6l^DA[iK3 z40G+t񍿗U/nU~v ΛokGN3t fQ:ߏEkQnBt 9l^ UK y,*_Iʟtu_ SH{6x|mtL:dҀBR+Vm.\aMu-{̓ӧǏgO?7ꫯϞ~\[['kaZO:Wjkkӟtmw>8T1iy$wf~凎!!VM3N}}L@ 䚝-?O,:6c2Bg5^;pl۶RV:9ѐHމF; 2%{Ï)Yf|mSs &\z`;E^B ꫫ@b[L[bN%=\yPzjdgwHw4j$dkH2=GIǦc+vI̜9C&MhYt\rEז.]nI ]|siS]]IZ::nMt:­bGOh:*7wG-[aϘ1T]]~Sȥ^,vKWWIc.WC}ϷH}|(@ݚ꟦m掞kC^ R5_X=Asq!3NGGy*˓DywoooLW^yMkM7_~SY ~)R'wâg + i@ bl_ַmRL=#X1\> =6:&[BNsޝt sn2(@Җ+xwo!XUUUɂ 7֚6p-]9r{js8{g]бꘓ7իט\uqjodW]uE@;vd`KC87|v-RZZs)++3QoU/*lc1OT˱i3y%.-v{:cX%ogrBCω ݶW'~]-%2nJkP%{W\q{8qlke( ZC% rzn!:P4?_rL3O?kcǎ3gk&t[[6?!εє?ЍR6HJGaӡc1@:"] Cb?o_(TC:OWP%s*??_2XbJ>2n81cƘMH y[zٶm/ 9ٳnj_M1jH9眳gY5p08@ÒJʟ\T*#gUȳ+j0)]$EtzL g-Wayy,hvcֱ'S \qK$77iٳW.첫j|w˂ʙ$gɒkPVp]N xXEZb 5?`Ÿ=ʟ=rݴK @ѻx|k=if:g9HLfOZv]ULGǚ,ecziHg[m7?999."YǗ3an~t }c*;!'|@9m |EWK[j:N}=G̭sv,?*8v@*%3Idrb z?jw*K|!=Zqq\2r\r?<ްaCTVVZͅ2qnWzلGDz? Gɓ'u dRQQA )4ikklhco&ă i[ípŬM_2ctD 8i _~*ȓB-'{gƵd-SɦcMM6KMM^k]~gg9~kt\{붭-/Jn*/JƏ'9s1 3=٨9\2͹ybNU9uZ?:}@Җ!RC@.=JryjM٘"}Dy.GǨcM;v?J 2xuW_iڶ>yDϕNdS*<}uOJ W #ߔA iK[enw_8,J˿u$?Eǘ28ڮ- jINm6L8Aꤦ6};{dҤ2ctzٺuSM*+eĈ&JUK!??_<'S ٱ‴LT\o@Zjw7zsliHp?BI8} SYY):lЮ]zU" Ʈ]VX'dnΝrM7Haa`hLnntuuI6бFv].ٲߐLnwq!F ieL^S:rqrdݺɓ$ͺxaOOmmmt2|r嗙+7UFk֬+\`F3L6rX+ʡ5S{%h+ywHw ;jtL:tzae9/ښ-4{GgذafCaV-^|5JZZZL2!d_ser J\Z}c1m۶o!NKnZq8N&DÖV9|V@5M2Y-t@-Z-_ Jggd"]ђ-?}ᥴH}LA #؝6/˕蹬c1޽dc[2{ >c,>ko;6m?^F'62WQQ|~3i&tUB/}m_2 @p8KWG2Ynӌ%Վ9"O?~.m(-ڴZ^^~a7shՏ2j1w\g-fVpgE;455jL]"%i]߻X괫 t (6 #3{r;Ң[MM/O.Tf͚)Cq睷Fçnδ۳g>|D8`ZAוW^!zYII477} J; Xdwސc[%?(4 ˵r tuSI翈%-yJ6 HkZ.v3FPZZjZ+7DN$ Zn2w@F*gi2sɟgioo[ .t+-|%vhÆrر^5w9&RMM@K_JKKrQ'ݷL/+~cilۺh ci5M='9ҡ[ggT̘1].hФK[ZZ4ϵK/uaV^Nf1jzʱ0-CzX|(YmHe?8Mοc]yz"4X9l%(,W\g]&uuum;d߾1{Kdql&;vo5sh{I&eee(=7V/ZN*oAjkk'SL\ 5޽{EO~.),\@h7iԜ暛 .4Ytls{-_Y7L4QX( O&nv$8r&J-:&/I555qf9x9@ڶ뮕[nB[m*V,;w͛7 V\r&TDॸ1z A'r|DA\yPv|X9&]pe#d%Md6#hl|\w=Wѵ|w/WOҍ#- SSvcˑb ZZZ{g=һ***z}zÄ?ڂRvVܺN |(ۃ\+ǷK&i<*mDv/qIae)ʉR=\FS)֬_GiR۟|也tr9/`_OXZ?|"֑x0*8 f^ $?p[fN`[4zg[\?vh!H% ft4eUAZlk6XdrD hW2a+_f 9r+J&v]ٹ @z#pǖ@v"26 2 r"Bg={t$769ܸ  1 "~@ r" G($G(ٴ[ W}n 9^YpY@/McfE$HmֶWus@ ="jU+HG' QzU){ZN C[$jXBqrfכf xk.--#7ڵ@/=zXLz̾yvISS3!@4 }?Aqy cG&3Iqq O[*G A *=lz`a3Y6xs`xzŅCq8o }YON?0h@T ^SG(֢#C @L*mG v|^S nB ]Nh ~v\0ZB^W9ՙ-! }ly %\˒7|>s.z׊2*[&gnZ^頢TBl6{JdsݻS F_ z"ßP0mcgh"juK*?oDXŸSA@ׂkm -kk8#e`pc?^; znAOϊھ, # ZhUo9y"daM |cldsQ`0;NBA> |^ Ěk,Ÿ"0(P0pzME 4 m*(??_`J `Pt|qm8)..2 k*+Jh``0R _ySV8f ^kQv0=w[v/ =iG L.E`@Bj^h*)"Hjs0{^B @".~z3F Cwu͚@S_?^?TXX 6M^iB?@b H,Ֆ]^/$?)ӭ@_)tP|AQ< D6pvM|>s0 Qesp'^tz|B> ( v)p8$atv @=n }J嗖. ])r9My#^W|>Y9߯7dnMv8q:\ ȼ ~pD5i閦.\RK8ECu~? @H! "i=u`g ><ȴp-n4Y?;?l@ZqT d3=ᒭ?.OggYNjH(//Ϭdo>!"Z͍'óf…Y'/̶O^6ַ駟9sΑG$YV|Q~Ɂd 2|xnT^^.'OBF%ҋ>UAgT}#/.G[eZk^='k'MLphF  On%hu]s@4nX(;v\O+*o֜P|{lm߾ [gM*FxӦr JΝaZu~j}f'?yH>g>s  [{{tu%4T+YD[/O<ЇnMYPZ[[Mf^IVo{uiߖ 0i{p@6CŸWTъٳgK>7,]̬dѢ {my|͕OS汶XM\+-hjjN'ݷ@M+ߐդ?7u Q hO{?!Ϻ頻ҹu߳mv1cz\AW1q8ΝLP^>L6g[Xm|sԘ畕V1O +~49tޜM&M2aK{7*JIIq8t谴ړ&M o;{ĉL[tu͚rQjaĉrYSzܹs@hG=oJt͹Τ4痽*J=elm_r+*g EɤʟtmR1'В%G?O39VX2|"QO}V@jZ} 3>ѻM(R_ uVw=<3E^$-kK_v{M[=鸞 _~|;ߗz۝m?Lz444Z;v >~XzmŸ"S~^=2g?gzb21|x|k=b |t,>n?'=%kk_io0?f͐sϧȑ(z +h)CdB Z$i󱿾VO#d K}Gd )B<mÆQ|my|@/g) .Xhk5}Z"4!ށkNȯ~ Smtܺu xg0//B>񉏟 [>%/T\Lo~{_`<YtO<<أKüJio_g{H M[egtmߴ!utu_ S@FoFTU/tE̴[9?^ VLk]"Դr &!Zo]΄QV,{~m*wqnMvz=r]wߣI7tyV|?UUU=z<࿛?G7`^{]?*cǎ ?}yݜS[iӧ 4K}sPtscOO%1oTH{-ntz}mtL-In+^ڶ@R .BZlSfh%l?~"DHE[W_}e}/_nO.Ĭڤ^C -Z1kHC,Çl >t6t:ȹ[Wa 4u&Com5 YS1ՒH:BClISC?8W ضmK%#,ɉD:N4:QȔ)S]}ﶯb5kVF<5瑆Krn*W0woϯ4{ᇤ d]Sf,ŒܱOزK2i1!P";m;ztsgHtey.I3gȤIMEҥ˺@K.7k 2I$ ]UI੮-}Vpjpf뿐n!n}UGCMƌ+_o~S/}E~<&ױ˕Ш^ J)c%nHW@Җ#-VD "kzPzy%Qt%ΤWu:::$??X=*}uޝ$S:l+d߾Co3aZ9 3eSlɈyb}1|y\t@V#,/ ߑ־%clM\@]DlSej+f;dq"ۿsw v]7wO_?*ʊ믿-ZtA֭J_<䞯%N|XNuޖLcб@"^IGm'_b-4Ji"MUU,X<6pugr$Q9ryկ~Y.\siMsޔi(seSK ]<*c{l dJ: + iOxʟ'>d)?\|̮*7˿/Y$=B߿;a@:Vs2xfzill[a_uqjoh~W]uEhcٴisQ#@|V$Mǘ z~jچeI!ey>?t B -{S훆?v"VY6T~%Jd;D9+L kC9q~ PJ(!^QQQ;v\?'k{z '$c|r>iH}-G NnO,+E=.XtLi~a?@ 5i:uP!Ofy4rWSO=#+V4>{7Nb̘1fv{~#wN@_p?l??Y7M7l]GyɧBLkeرݶut'Lʕ/;C +s@znLK9(?edOC="{;K AO#{e˖˙?~ߣG>!'>.'K=v:Fk|ڀ̋H*iSl]4X0ZWZ\Rc?Nni;(cXh ܃xOH2yseĈjtWP=Z_/'N0ϵ\kkkuGMOiiynŸ*%w}7ԩgw@| OH2In󐜓?ey.9:ϟ[]!serj=WZd*zIf~ `DfXG.u}Y-D -לG{߇%;R?ީoU n59n@%ցfV9~?h/˦Yƌ-#GHgM{{YfIZMʛ 92T0Z捨4ϰ\= Ͳl!],> />W?C֬ۆn7!"t>y50tֵ,lY/6[ޱ?|"֑x0ZH;8Jq]R'9TXdƹ]%=P6m@:%;C*%s$V mZrD s[刵k\𗊱@x 7+Rᄐz?\<N@=B f}ɶ2PB:yJy?1=zTJߟd@[$4ql2(_.S-GVؒ"حnV(ou=OH*!v|~q T]{gL 7.GW` u:_ϵʇfO[fN+'%kJt=& ±r2iX vYў+9^/ou vlm;Wo#u8.]3}O޶vh=  lZ?0;ze0s2@fW e0O:PKY TЊ|^Y&s+dF0SA7zfΟNuEj{tH 4Uz?_\z``b)w%١,/Z\f]+ڴN9mvyI'^Aʭ-U)G77jB:pkli07r6;ZH;Q*OkϯMQ߻^ Kw5ݶEC1Աap'gs΍ڂ&&EEɽ~"u0g03Ok{$)ʊ#etqT˼rj9|ٖ ?MCWGj3nS$cbrj9Smi xwoP l]2;v#>|x?`<>bo0;Oˁfc]̑`%>Z|k9op9܄?.lm4?:w6i=$Ҏ:t2w;ìygx6[5d6q^8۬::gOw*fMP8ljv] 65Y&ˆrFGpV=ӴȄbS|+p:LS+r NXs= j0K9&8f9jH@GK:2tk7ϰ\3&HG@RnZ% ooWw:J,Y,o B&O$[l6/><^q [7n2D˜9$}R'??_Yn^XR#PPP`gd9f,i'-$|̾@#]N89c6s2Y(ڽihh2qxSsaimm_i^K$^]<4i[ggg8`䒋wiakii&)--O4=d:{U˕ e{ml8Z+`J dayr53ǢctM::nkn:y 2n80a 1(m)z(\2otY![=*SLu-g3QIIi @p}NwTW/} t (6H'3{*t:騬4뮮.o9|嬳H*hV/]po>9|.|C&ٱc83鹍jJM14h-Kg%B SHVRA!ke?Jl߾]6n=wc֣GTjUe!ZaFSӈ#d„ qSS8sFii߹[TD/W."~-7u XZM;Ly5/Hgggs1jB^yUٹs9?\IZݶ>B=_s:駟5m"ѣGr"n0K|7M +|{,IF 9d4OiI}G\)rGH&ߺmVf^~'v-7aȑ#GL +sϝ~ϸqcʛo)/J6n,#FTÇHGGp΋/HF!0fr!oӧʂk&3?^.|)//ٳgɖ-o_72e0EgB'Fϟ+Y7Wi5//+wΙ&m!k40SoT d  O= lNOA ShÁO4=_ E$SFK/ Yuijj4K~$UJe⫬e={H++vsΙmS[޴ )..6L睷@ /zΠALGGx<I JA tyr>YAyqxe0|(vX}dO p{֑KmubXG>.ݞ`HBsVryQ߿}XM#MnG%l:%iR/5'}9qTl9fQ S҅[ ;6Z1{Mi@z DGQ=OȦcuA5ȱvi tzP!eyPV,+ɜptdZֿ Źf s?r^hNwO#{,u"}lk-1= YEBCi;=!A9R`: 00*xH4 g jLX'ĭ%>8t#k ӛ4@[ |tqu[ @z#pasHAS@F"26~ 2 r"RgbAh$769ܹ  1 <^?@ r" G-)$G(B?@5uXi]@Iz:'˺)h;zX dqfmqU7 D Я GWE-*nx''tGPDYC FhY^kǑބKA PPB6у`ńA~@v~B|>joo7!.TtX4 ?v^ k-Gb >E<ޅ vu}eڛVR|>sEkrN- 3^7 -^tPn*!6=i%2ݩb#Я=O(G[඀ }345y~溋V%SOE7E`@",Bϩ H_kӃ}O5ɵJ0\[Igm y NUz-Jf*䷜l/ bq5XO@hv 6r/x٤wx3]U?FN=^C9 _\Ƭ"=E>9Oϩ SDV;깍vo@ܜ |r= ?Lk}@\E<Ѫz>v`C(2M_Mg "=}N@Mb]D"PھEn8p]@2Hlh !T#r@|d ,Ce @!2@Y d ,Ce @!2@Y d ,Ce @!2@Y d ,Ce @!2@oN:;JRI,ɶe0ޱxMI!IwBf:!'=鞧NNg i:LI'8h ;ű1dc#fK*T{JtUwysvoU\>2 .#2 .#2 .#2 .#2 .#2 .#2 .#2 .#2 .#2 .#2 .#2 .#2 .#2 .#2 .#2 .#2 .#2 .#2 .#2 .#2 .#2 .#2 .#2 .#2 .#2 .#2 Ulvv6eaaaɹ===ۻ-.lG3\g'clr!&gbvn!'@OĦ:7Ŏ-q@#hX."#qfffq)<,',:оt|{tܷw&&;_L&pL؉'gځF{ siSbkRl_okҗ>Ο+8CL额6! N폜8٩]9gW^6$ @; ^nAee!52ʽFJ ԉ' VJO5k}体q~>?~p44@{/hh'i>첚}7'bjVm}kF ׍jho@-$hBqddd=i{&}_@ |ɝ+hNtP &KCV!T4P`L=ޯ7{i:~@gdikF7zm(ׯ[oYH; y%:l?~o&cӪ~)(֞xǥtGvV :JCȑ#]ѩ~3}|V5JLw=t4DZUzZ>MD ˕ưxb! @Hnq:PC?3+ N:cbjj*VԁׯN8HPO)PYvCt4FV[bNgnE4NjH;-hG@J NŜkЮҰoht{]iۻX@m*ͱ撨$]vPOzܜ?$^K\NԮ4j'hC:ӖjNO7htϥ{]h@5N隤kj훉 Y=jڥ$@ѩXZ;\w}X, K`iKsmڇ{ztm5jwx~dܻI'ӽ,4L 6I5k~v{S;]; @-JjY3l.t6vzyNPt-_3݇ vhg͸G*_t9ħTm.ݣ^m44@ MMM+k{=vz\CZbvv6fffw'N[f(v|alذ!MZOۇĽ{,t^z@S;ӝQ4hvy":}cccKeße||"og/={\rN~V:vX<{gjH״^PROnv'^|P/hOMn6n-9%b~~iݻczKsS`^R1t݅UB͔i'ش/3]N6;/  kzb*Gȁѓ%;6{ߴ%3fwkGޭ<@8ϣ>wxb߾ٶwpp0FG7ĎW\7tSl޼guw|^ٟsճ2y@;Ss5d:344E{@|͚5?ɖ-[ѣ`'yX~}RQ#*tW]1dS tcs'MăO_y97*jS}Ӎk%J3P힞 Rv@-k/~Q{^USI;7;wЦMb֭jR?!e>KlYn]uo~hLLUL;ls =ofp+Y=vh{wSU'Ug~./{K[ߒmۏ,9'ç5ˡCCWlܸ1EslPfJ4]ە/َ/ax'mVT#׬[o;1U3?o2XtPV\cA{Jͥ{-+kZN礯}mX;3"?-8pFW; @udT< oݓ{^cq~(<|$_j5;JNPu4Y+:wޝTLR@o߾xK_t}߉={\N_qLO<#J?KR_ǧ oO_7a^kn\LPV[fy K@2?‘܁ؚyO$Uڤ?Nģ%–W^>7>tUwx/bCqHo|OؒܒKKr~3JRtٯ&㾽3׭W\:g?X [tÒۏщ#/s2\3c1>=_1oHc'q*xFsYgſ&U}ƥ^>.-ǏqnJ@#hgy&6CCcQo\pAX%Xnm4K=1ýq݅k=Eß47·9-RF/~lQI iRh?se~%z73H~oHo{m=W?gpIS]$w^&GQOi}#*q*bdd$⋟gÆ U?Uvg>8t\n6@U_ibsG%\Tk;6ٜow8_*] /=#ƒW^6W=/VJ 4|ܷ?k3S{htgKGɊx M^7oCf<$3 9wo* 5;9||RvSѹxa:|v(s2xy}q$gꯣ Gdͮ]wU|jLɀ'%?9^t.?w =vG~UVTQ'SW5dСCAQ)F'9y&M_fpD)-W;Y2p&8z%>Kđ%KKR75ٷ4'ѯ~Ÿ<$;]zp*$әN??aKV=rzK G@;3|v>ek4?t,e__tEg.9giuʞgCJl<%?7 6SCK\Aǧ[T}g{2{.2$.::t&y"?'CkGb֭cǎ:=lE??}Nܰ;'NL=/ 떆wd˖4ܿ*zĉ )pt:Ek^PЮ_^l^6n JZzl_? OWL+35Z8JVkT*Eu=ۿw?ǎVselXv_:Yn]E:h\%Nhbbrq{rr2!Ҝ>W+ur_ҵ]4*`A›O.lj Z{x.;[(tk||j5ܚ)NZkx`@bRoSTuyqD'G; @u@M\ Çd};18ظSϦM2_ptڵLbt'NĪvάˆ/:V}\:ӛ#^Oeg vl.O :޼Ηjv;]( v}ɮ_~ee˖{ȑ}7ozAT<칩]wy@M;.m۶eßFwN͛8x`G@Fzë;psx6;%N?Ӻ=qtcoaݒG,Ŷ4O/(9u,߾1KJ:Js$ݩj믋][kX ҹ=\rq;@ ɚ5::[ni۷ƍ3nyc_=:ͱ~͙x'~6UYZ}O GUf>00J^u_'U{!SuO xR_*|8@<*,uܵPAꈛvP৕qmo%x#ӿ+޺->xl--Z0 o_~ٸ:/$[FC'Y?xp6Hw_= V=Vi4[IO ڵ+;}֮Zf{'w^vzHO߿?ŅhX[nn$;o{qupo֗}B_~6N,>y8msʡbaᬔd75=n!EaX[s|꣦4k&kUסCۿ سxbg<ޘz85Vǵ}P#v0w<}t.}fKJׅϱ9g{Q=VËin뮻&[*۸qC3@,uQ 61D۳> \[/u_.-]H+qQxdCo([}+LXgw7wܳyw=z"17>u{zsZ{:@jsmۺ~W-}۵+X*}&&&qx _CC';o~+v%O +ߋKK=gziU;5o>Ǐ9w/x >INP!Z`g}vIk.ٟIC}f9qbjرcDzx8tؽ{uƸ喗g?UyM;R3muXqdrCʟtN:K@ 4\Bo>_N?k -n*|{;vd+rZ9C39/<ܚPtϦ{^ZN')ٴiS<kG^#*zT/Ivۿd{pp`{C ק~:.zk]tt[;i8K.8tN ERUM@_~YqA 8$IOoo۶5lhJˆ@A=[oNwF'hfffs{av)/}It 1PJq{ÿ[;ݩNP^o2^F^}yjW5h @ Y&z{I\ڥk(j8о=FNLiJk_ @[ͥiq^Hvz\;e!ch9ڥk֌7\7 T7=hiV; @qh##Ljk~yojk k9%~rp\I'ӽ,4L 6IZh'sZO&J,]V=ZU&==L隴S3/{l5tqN4Q[g*К5kL']tMk7d#htϥ{]hjv@ҙvRv^m2xht{hO'@K j~vfWt4~rHKZNw; 4ZXz| ~Uٹ~v$[kwiUNJF*6u:V0CgNAm88tOuB`jZfT4jc!8P*MR\yطR]ޙDK2cN8~xtԡOЧIo1O(2d_{hέN.:)oh89Nsqvv6AyRbzt[];<=@u.?w q9]c:Saz[5-}^ktgzzkʌdtX;N{m(ׯ[o!Ŵgpp8,selek%*GBN 򖴝LLLLd_;@v3wj (txi:K^4"AOPn]qĉl|47FP\msH|xc\jm/|ɝ;rh:CA+* ~@!( 5v`Lif{"> AR ~^HẑXʹMTX5PAғSSS-r( 444Io2>y嵐XPo?~p*B>4@{jPTn7Pj6;;`Te`v(=o&Tȉx sꋛ/^l(.=2hڋ@I_"u2'sBſӓ}R:%==[t$6ƣgcwfy{d.ų163 1;P/~4bƾر??.ڢh4@ XTlΟj'_Ul_b_1h!S}]SV=4@۪_,Tazas@|V@J 2T+5V8[N#RcE~nX\P|t*kX,>MONJ-X^s2K5Jxm2,&J TlbFڮՎWbe~Q^Ɛ_S,)yQP[I'ѩa1s;TmuNsjLQCoWPpCWrcǎW@>~KvbaR-QÆ[N U/vl!*i.V6cPSB'o9F*!=VUzOOb*z saU_,ke~}dd?^Uʯ*V %[/TSԨ9Zb^s]t<%swySb3z"JhdPvbU@s5k_E81ߌ=)WQ(rOja9@uQ|(/B_T~;diT2-RDaOL#_UT} zoW:YW_qŕqrȷTSMPd;ZP!aJzg J XOV4k^c/}x Ҽ?^C[/Z^lce52*<^MEP9 r!P_v( {г2:tc}7N)6O'w,?S)Yv9j@*ITp =g~S3 eOaPD%*Shĭhh@+c jĒ+͚ӿ_W_鷽^w'?e) E"AXP z b+ϩf.jJJ Tjhkf,in%K tٯu?+_ʻdJbiSlRsDIJ)^lcUWT鳪 y-d|BR믿 *055]Ѽ'U~pTS'^?u jVTx#CrA=E^sAP3ַs뭷|۶snQ'U߿~wkߩ)) ~J>ֆ?J=JSJB¥j)Jgµo{ۮ4ctt z{{n_ {w _ӡLIü0ԩTSn?lW{&/5Pk}A%;7@^WuX0ЎV2_f;?KK ~fN/>)kbYbW^K+UT*cs|nz%B:I-E0x-q:Nk\JBz?IV@raPoPO%J?tjJlWTۗnZ^˭ێ׬aCB}ՆB]zRnx(8V h%Pn0oŎ[_^=m$Vo *? yU yPQa) :QBBd*>+$I6:*x-^ D ˭ZιlV_(s~ʞ!"TUOV .}Pn}Ioϊ箴 hFYNQ'T2_܅*EM2XrjWMSme_ VZnQmR0SMHTkR90Q ^㵞Q[TXB4R=‹ZÑrABjC?lG]zUoR1T}|Nψ2@7&Z(snrxJ}펫N!DV^) u_5ӭp_žj׫َ7E;ZzceέfcS%Sjvt\Ov VU^nSv}Njl/'fԾjD_' tVrL.m=Vn_-[FVc2ϩwerKXuB,gF=+ٷs52*ON z Wl_ΩЍ5\}:ԾZN + y:)6PN+ŒFAtEtZ,wxCqhG+ C-ZiԳ=TX=f9ABZ5U?:9JVR}S㵞ݤ AW:VP!yl9jR@j9muC4ji{]$8G0Sn zU4"i,j=uS;id#@42$]OmPҨ08rÖFUtMtc,'tiaHf&r*I5iEՎjDdLQÖ~^׆?jz.hz6]$%iD#kDHOj rf2&YPN'4$Q'*.YPǪ ~r@K s'GT0ڟЧPBz*VN0'YPs4N LU@]Fe@]Fe@]Fe@]I6Y6bIENDB`diegopvlk-Dosage-bd9126a/snap/000077500000000000000000000000001514145341100162505ustar00rootroot00000000000000diegopvlk-Dosage-bd9126a/snap/snapcraft.yaml000066400000000000000000000025771514145341100211300ustar00rootroot00000000000000name: dosage-tracker base: core24 adopt-info: dosage-tracker grade: stable confinement: strict platforms: amd64: arm64: armhf: parts: dosage-tracker: plugin: meson source: https://github.com/diegopvlk/Dosage.git source-tag: "v1.9.4" build-environment: - GI_TYPELIB_PATH: $SNAP/gnome-platform/usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/gjs/girepository-1.0:$GI_TYPELIB_PATH meson-parameters: - --prefix=/snap/dosage-tracker/current/usr build-snaps: - blueprint-compiler override-pull: | craftctl default sed -i -e 's|@GJS@|/snap/dosage-tracker/current/gnome-platform/usr/bin/gjs|g' src/io.github.diegopvlk.Dosage.in organize: snap/dosage-tracker/current: . parse-info: [usr/share/appdata/io.github.diegopvlk.Dosage.appdata.xml] prime: - -snap/dosage-tracker slots: dosage-tracker: interface: dbus bus: session name: io.github.diegopvlk.Dosage apps: dosage-tracker: command: usr/bin/io.github.diegopvlk.Dosage desktop: usr/share/applications/io.github.diegopvlk.Dosage.desktop autostart: dosage-tracker-startup.desktop common-id: io.github.diegopvlk.Dosage environment: GI_TYPELIB_PATH: $SNAP/gnome-platform/usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/gjs/girepository-1.0:$GI_TYPELIB_PATH extensions: - gnome plugs: - audio-playback - login-session-observe diegopvlk-Dosage-bd9126a/src/000077500000000000000000000000001514145341100160765ustar00rootroot00000000000000diegopvlk-Dosage-bd9126a/src/editHistDialog.js000066400000000000000000000141101514145341100213260ustar00rootroot00000000000000'use strict'; import Adw from 'gi://Adw?version=1'; import GObject from 'gi://GObject?version=2.0'; import Gtk from 'gi://Gtk?version=4.0'; import { getDosageWindow } from './main.js'; import { MedicationObject } from './medication.js'; import TimePicker from './timePicker.js'; import { addSaveKeyControllerToDialog } from './utils/helpers.js'; import { historyLS, treatmentsLS } from './window.js'; export const EditHistDialog = GObject.registerClass( { GTypeName: 'EditHistDialog', Template: 'resource:///io/github/diegopvlk/Dosage/ui/edit-hist-dialog.ui', InternalChildren: [ 'editHistDialogClamp', 'saveButton', 'popoverScrollTime', 'nameDoseSpinRow', 'takenRow', 'takenButtons', ], }, class EditHistDialog extends Adw.Dialog { constructor(listView, itemPosition) { super({}); this._listView = listView; this._itemPosition = itemPosition; this._itemObj = listView.get_model().get_item(itemPosition).obj; this._initEditDialog(); } _initEditDialog() { const date = new Date(this._itemObj.taken[0]); this._timePicker = new TimePicker(date); this._popoverScrollTime.set_child(this._timePicker); const item = this._itemObj; if (item.taken[1] === -1) { date.setHours(item.time[0]); date.setMinutes(item.time[1]); } this._nameDoseSpinRow.title = item.name; this._nameDoseSpinRow.subtitle = `${item.dose} ${item.unit}`; this._nameDoseSpinRow.value = item.dose; this._takenRow.subtitle = this._timePicker.entry.text; this._confirmActivated = false; switch (item.taken[1]) { case 2: this._takenButtons.active_name = 'confirmed'; this._takenRow.title = _('Auto-Confirmed'); break; case 1: this._takenButtons.active_name = 'confirmed'; this._takenRow.title = _('Confirmed At'); break; case 0: this._takenButtons.active_name = 'skipped'; this._takenRow.title = _('Skipped At'); break; case -1: this._takenButtons.active_name = 'skipped'; this._takenRow.title = _('Missed') + ' (?)'; this._saveButton.sensitive = false; break; case 3: this._takenButtons.active_name = 'confirmed'; this._takenRow.title = _('Confirmed'); this._takenRow.subtitle = _('Time Unknown'); break; } this._nameDoseSpinRow.connect('output', row => { row.subtitle = `${row.get_value()} ${item.unit}`; }); this._timePicker.entry.connect('changed', e => { if (this._takenRow.subtitle != e.text) { this._takenRow.subtitle = e.text; const confirmActive = this._takenButtons.active_name === 'confirmed'; if (confirmActive) { this._takenRow.title = _('Confirmed At'); this._confirmActivated = true; } } }); addSaveKeyControllerToDialog(this, this._saveButton); const [editHistDialogClampHeight] = this._editHistDialogClamp.measure( Gtk.Orientation.VERTICAL, -1, ); this.content_height = editHistDialogClampHeight + 48; } _handleTakenRowStatus() { this._saveButton.sensitive = true; this._takenRow.subtitle = this._timePicker.entry.text; switch (this._takenButtons.active_name) { case 'confirmed': this._takenRow.title = _('Confirmed At'); this._confirmActivated = true; break; case 'skipped': this._takenRow.title = _('Skipped At'); } } _saveHistoryItem() { const dosageWindow = getDosageWindow(); const item = this._itemObj; const tempTaken0 = item.taken[0]; const tempTaken1 = item.taken[1]; let missedDose = 0; let skippedDose = 0; let confirmedDose = 0; switch (item.taken[1]) { case -1: missedDose = +item.dose; break; case 0: skippedDose = +item.dose; break; default: confirmedDose = +item.dose; } const skipActive = this._takenButtons.active_name === 'skipped'; const confirmActive = this._takenButtons.active_name === 'confirmed'; if (skipActive) item.taken[1] = 0; else if (this._confirmActivated && confirmActive) item.taken[1] = 1; else if (tempTaken1 === 2 && confirmActive) item.taken[1] = 2; else if (tempTaken1 === 3 && confirmActive) item.taken[1] = 3; else item.taken[1] = 1; if (item.taken[1] === -1) return; const dateTaken = new Date(item.taken[0]); dateTaken.setHours(this._timePicker.hours); dateTaken.setMinutes(this._timePicker.minutes); item.taken[0] = dateTaken.getTime(); const updatedItem = new MedicationObject({ obj: { name: item.name, unit: item.unit, time: item.time, dose: this._nameDoseSpinRow.value, color: item.color, taken: [dateTaken.getTime(), item.taken[1]], }, }); const it = this._listView.get_model().get_item(this._itemPosition); const [, pos] = historyLS.find(it); const updItem = updatedItem.obj; if ( updItem.taken[0] !== tempTaken0 || updItem.taken[1] !== tempTaken1 || updItem.dose !== item.dose ) { historyLS.remove(pos); historyLS.insert_sorted(updatedItem, (a, b) => { const dateA = a.obj.taken[0]; const dateB = b.obj.taken[0]; if (dateA < dateB) return 1; else if (dateA > dateB) return -1; else return 0; }); dosageWindow.updateJsonFile('history', historyLS); dosageWindow.setShowHistoryAmount(); } else { return; } this._listView.scroll_to( Math.max(0, this._itemPosition - 1), Gtk.ListScrollFlags.FOCUS, null, ); for (const i of treatmentsLS) { const sameItem = i.obj.name === item.name && i.obj.inventory.enabled; if (sameItem) { let tempInv = i.obj.inventory.current; if (item.taken[1] === 0) { i.obj.inventory.current += confirmedDose; } else { const diff = item.dose - this._nameDoseSpinRow.value; const adjusts = skippedDose + missedDose; i.obj.inventory.current += diff - adjusts; } if (tempInv === i.obj.inventory.current) break; // trigger signal to update labels i.notify('obj'); dosageWindow.updateJsonFile('treatments', treatmentsLS); dosageWindow.checkInventory(); } } } _closeDialog() { this.force_close(); } _save() { this._saveHistoryItem(); this.force_close(); } }, ); diegopvlk-Dosage-bd9126a/src/historyFactory.js000066400000000000000000000117731514145341100214760ustar00rootroot00000000000000/* * Copyright 2023 Diego Povliuk * SPDX-License-Identifier: GPL-3.0-only */ 'use strict'; import Gdk from 'gi://Gdk?version=4.0'; import GLib from 'gi://GLib?version=2.0'; import Gtk from 'gi://Gtk?version=4.0'; import Pango from 'gi://Pango?version=1.0'; import { getDosageWindow } from './main.js'; import { dateFormat, timeFormat } from './utils/locale.js'; export const historyHeaderFactory = new Gtk.SignalListItemFactory(); export const historyItemFactory = new Gtk.SignalListItemFactory(); historyHeaderFactory.connect('setup', (factory, listHeader) => { listHeader.dateLabel = new Gtk.Label({ halign: Gtk.Align.START, ellipsize: Pango.EllipsizeMode.END, }); listHeader.set_child(listHeader.dateLabel); }); historyHeaderFactory.connect('bind', (factory, listHeader) => { const item = listHeader.get_item().obj; const dateLabel = listHeader.dateLabel; const dateTime = GLib.DateTime.new_from_unix_local(item.taken[0] / 1000); const formattedDt = dateTime.format(dateFormat); dateLabel.label = formattedDt.charAt(0).toUpperCase() + formattedDt.slice(1); }); historyItemFactory.connect('setup', (factory, listItem) => { listItem.box = new Gtk.Box({ css_name: 'item-box', }); listItem.checkButton = new Gtk.CheckButton({ css_classes: ['selection-mode'], valign: Gtk.Align.CENTER, halign: Gtk.Align.CENTER, margin_start: 13, tooltip_text: _('Select to be Removed'), }); listItem.checkButton.connect('toggled', btn => { const dosageWindow = getDosageWindow(); const pos = listItem.position; if (btn.active) { dosageWindow.histMultiSelect.select_item(pos, false); } else { dosageWindow.histMultiSelect.unselect_item(pos); } btn.active = listItem.selected; }); listItem.signal = listItem.connect('notify::selected', () => { listItem.checkButton.active = listItem.selected; }); listItem.box.append(listItem.checkButton); listItem.selectable = false; listItem.labelsBox = new Gtk.Box({ valign: Gtk.Align.CENTER, hexpand: true, orientation: Gtk.Orientation.VERTICAL, margin_start: 9, margin_end: 10, }); listItem.box.append(listItem.labelsBox); listItem.nameLabel = new Gtk.Label({ css_classes: ['title'], halign: Gtk.Align.START, ellipsize: Pango.EllipsizeMode.END, margin_bottom: 1, }); listItem.labelsBox.append(listItem.nameLabel); listItem.doseLabel = new Gtk.Label({ css_classes: ['subtitle'], halign: Gtk.Align.START, ellipsize: Pango.EllipsizeMode.END, }); listItem.labelsBox.append(listItem.doseLabel); listItem.takenBox = new Gtk.Box({ css_name: 'badge-box', valign: Gtk.Align.CENTER, margin_end: 14, }); listItem.takenLabel = new Gtk.Label({ valign: Gtk.Align.CENTER, ellipsize: Pango.EllipsizeMode.END, }); listItem.takenIcon = new Gtk.Image({ css_name: 'badge-icon', }); listItem.takenBox.append(listItem.takenLabel); listItem.takenBox.append(listItem.takenIcon); listItem.box.append(listItem.takenBox); listItem.set_child(listItem.box); listItem.keyController = new Gtk.EventControllerKey(); // activate item with space bar listItem.keyController.connect('key-pressed', (_, keyval, keycode, state) => { if (keyval === Gdk.KEY_space) { const row = listItem.box.parent; const listView = row.parent; listView.emit('activate', listItem.position); } }); listItem.controllerAndSignal = false; }); historyItemFactory.connect('bind', (factory, listItem) => { const item = listItem.get_item().obj; const box = listItem.box; const row = box.parent; if (!listItem.controllerAndSignal) { row.add_controller(listItem.keyController); row.connect('unrealize', () => { listItem.disconnect(listItem.signal); }); listItem.item.connect('notify::obj', () => { setLabels(listItem); }); listItem.controllerAndSignal = true; } setLabels(listItem); box.css_classes = [item.color]; }); function setLabels(listItem) { const { nameLabel, doseLabel, takenBox, takenLabel, takenIcon } = listItem; const item = listItem.get_item().obj; const itemTakenDate = GLib.DateTime.new_from_unix_local(item.taken[0] / 1000); const itemTime = GLib.DateTime.new_local(1, 1, 1, item.time[0], item.time[1], 1); const time = itemTime.format(timeFormat); const timeTaken = itemTakenDate.format(timeFormat); nameLabel.label = item.name; doseLabel.label = `${item.dose} ${item.unit} ⦁ ${time}`; const isConfirmed = item.taken[1] === 1 || item.taken[1] === 2 || item.taken[1] === 3; takenIcon.visible = isConfirmed; switch (item.taken[1]) { case 1: takenLabel.label = timeTaken; takenIcon.icon_name = 'check-confirmed-symbolic'; takenBox.css_classes = ['success']; break; case 2: takenLabel.label = _('Auto-Confirmed'); takenIcon.icon_name = 'check-auto-confirmed-symbolic'; takenBox.css_classes = ['success']; break; case 0: takenLabel.label = _('Skipped'); break; case -1: takenLabel.label = _('Missed'); takenBox.css_classes = ['error']; break; case 3: takenLabel.label = _('Confirmed'); takenIcon.icon_name = 'check-confirmed-symbolic'; takenBox.css_classes = ['success']; } } diegopvlk-Dosage-bd9126a/src/io.github.diegopvlk.Dosage.in000077500000000000000000000006121514145341100235040ustar00rootroot00000000000000#!@GJS@ -m import { exit, programArgs, programInvocationName } from "system"; imports.package.init({ name: "@PACKAGE_NAME@", version: "@PACKAGE_VERSION@", prefix: "@prefix@", libdir: "@libdir@", datadir: "@datadir@", }); const { main } = await import("resource://@resource_path@/js/main.js"); const exit_code = await main([programInvocationName, ...programArgs]); exit(exit_code); diegopvlk-Dosage-bd9126a/src/io.github.diegopvlk.Dosage.src.gresource.xml000066400000000000000000000014731514145341100264640ustar00rootroot00000000000000 utils/getHistoryExportFile.js utils/getTreatmentsExportFile.js utils/helpers.js utils/locale.js utils/saveFiles.js utils/upgradeItems.js editHistDialog.js historyFactory.js main.js medDialog.js medication.js oneTimeDialog.js prefsDialog.js refillDialog.js timeDoseRow.js timePicker.js todayFactory.js treatmentsFactory.js treatmentsSorter.js window.js diegopvlk-Dosage-bd9126a/src/main.js000066400000000000000000000126231514145341100173640ustar00rootroot00000000000000/* * Copyright 2023 Diego Povliuk * SPDX-License-Identifier: GPL-3.0-only */ 'use strict'; import Adw from 'gi://Adw?version=1'; import Gio from 'gi://Gio?version=2.0'; import GLib from 'gi://GLib?version=2.0'; import GObject from 'gi://GObject?version=2.0'; import Gtk from 'gi://Gtk?version=4.0'; import { PrefsDialog } from './prefsDialog.js'; import { sortTreatments } from './treatmentsSorter.js'; import { DosageWindow } from './window.js'; pkg.initGettext(); pkg.initFormat(); export const DosageApplication = GObject.registerClass( class DosageApplication extends Adw.Application { constructor() { super({ application_id: 'io.github.diegopvlk.Dosage', flags: Gio.ApplicationFlags.DEFAULT_FLAGS, resource_base_path: '/io/github/diegopvlk/Dosage/', }); this.hidden = false; const appId = this.get_application_id(); globalThis.settings = new Gio.Settings({ schemaId: appId }); const treatmentsSorterAction = new Gio.SimpleAction({ enabled: true, name: 'treatments-sorter', state: new GLib.Variant('s', settings.get_string('treatments-sorting')), parameter_type: new GLib.VariantType('s'), }); treatmentsSorterAction.connect('activate', (action, parameter) => { treatmentsSorterAction.state = parameter; const sortingOrder = parameter.get_string()[0]; settings.set_string('treatments-sorting', sortingOrder); sortTreatments(sortingOrder); }); this.add_action(treatmentsSorterAction); const showPrefAction = new Gio.SimpleAction({ name: 'preferences' }); showPrefAction.connect('activate', () => { const prefsDialog = new PrefsDialog(); prefsDialog.present(this.activeWindow); }); this.add_action(showPrefAction); this.set_accels_for_action('app.preferences', ['comma']); const showAboutAction = new Gio.SimpleAction({ name: 'about' }); showAboutAction.connect('activate', () => { let aboutParams = { application_name: _('Dosage'), application_icon: 'io.github.diegopvlk.Dosage', version: pkg.version, issue_url: 'https://github.com/diegopvlk/Dosage/issues', license_type: Gtk.License.GPL_3_0_ONLY, copyright: '© 2023 Diego Povliuk', // TRANSLATORS: "Your Name " translator_credits: _('translator-credits'), }; const aboutDialog = new Adw.AboutDialog(aboutParams); aboutDialog.add_acknowledgement_section(_('Thanks to These Projects!'), [ 'GNOME https://www.gnome.org/', 'GTK https://www.gtk.org/', 'Libadwaita https://gnome.pages.gitlab.gnome.org/libadwaita/', 'Workbench https://apps.gnome.org/Workbench/', 'Blueprint https://jwestman.pages.gitlab.gnome.org/blueprint-compiler/index.html', 'GTK4 + GJS Book https://rmnvgr.gitlab.io/gtk4-gjs-book/', 'GJS Guide https://gjs.guide/', 'Flatpak https://github.com/flatpak/', ]); aboutDialog.add_link( 'Donate (PayPal)', 'https://www.paypal.com/donate?hosted_button_id=DVL7H35GA66X6', ); aboutDialog.add_link('Doar (Pix): diego.pvlk@gmail.com', 'diego.pvlk@gmail.com'); aboutDialog.add_other_app('io.github.diegopvlk.Cine', 'Cine', 'Play your videos'); aboutDialog.add_other_app( 'io.github.diegopvlk.Tomatillo', 'Tomatillo', 'Focus better, work smarter', ); aboutDialog.present(this.activeWindow); }); this.add_action(showAboutAction); const newOneTimeAction = new Gio.SimpleAction({ name: 'new-one-time' }); newOneTimeAction.connect('activate', () => { this.activeWindow.unselectTodayItems(); this.activeWindow._viewStack.visible_child_name = 'today-page'; this.activeWindow.addTodayOrOneTimeToHist(); }); this.add_action(newOneTimeAction); this.set_accels_for_action('app.new-one-time', ['t']); const newTreatAction = new Gio.SimpleAction({ name: 'new-treatment' }); newTreatAction.connect('activate', () => { this.activeWindow._viewStack.visible_child_name = 'treatments-page'; this.activeWindow._presentMedDialog(); }); this.add_action(newTreatAction); this.set_accels_for_action('app.new-treatment', ['n']); const shWhenNeededAction = new Gio.SimpleAction({ name: 'sh-when-needed' }); shWhenNeededAction.connect('activate', () => { this.activeWindow.setShowWhenNeeded(null, true); }); this.add_action(shWhenNeededAction); this.set_accels_for_action('app.sh-when-needed', ['h']); const quitAction = new Gio.SimpleAction({ name: 'quit' }); quitAction.connect('activate', () => { this.activeWindow.withdrawPastNotifications(); this.quit(); }); this.add_action(quitAction); this.set_accels_for_action('app.quit', ['q', 'w']); this.add_main_option( 'startup', null, GLib.OptionFlags.NONE, GLib.OptionArg.NONE, 'Start app hidden at startup', null, ); } vfunc_handle_local_options(options) { if (options.contains('startup')) { this.hidden = true; } return -1; // continue execution } vfunc_activate() { let { activeWindow } = this; if (!activeWindow) { activeWindow = new DosageWindow(this); activeWindow.set_hide_on_close(true); } if (this.hidden) { activeWindow.hide(); this.hidden = false; } else { activeWindow.present(); } } }, ); export function main(argv) { const application = new DosageApplication(); return application.runAsync(argv); } export const getDosageWindow = () => DosageApplication.get_default().activeWindow; diegopvlk-Dosage-bd9126a/src/medDialog.js000066400000000000000000000423411514145341100203250ustar00rootroot00000000000000/* * Copyright 2023 Diego Povliuk * SPDX-License-Identifier: GPL-3.0-only */ 'use strict'; import Adw from 'gi://Adw?version=1'; import GLib from 'gi://GLib?version=2.0'; import GObject from 'gi://GObject?version=2.0'; import Gtk from 'gi://Gtk?version=4.0'; import { getDosageWindow } from './main.js'; import { MedicationObject } from './medication.js'; import { TimeDoseRow } from './timeDoseRow.js'; import { sortTreatFunc } from './treatmentsSorter.js'; import { addLeadZero, addSaveKeyControllerToDialog, handleCalendarSelect, } from './utils/helpers.js'; import { firstWeekday, getDayLabel, getSpecificDaysLabel } from './utils/locale.js'; import { treatmentsLS } from './window.js'; const FREQUENCIES = ['daily', 'specific-days', 'day-of-month', 'cycle', 'when-needed']; export let dosageList; export const MedDialog = GObject.registerClass( { GTypeName: 'MedDialog', Template: 'resource:///io/github/diegopvlk/Dosage/ui/med-dialog.ui', InternalChildren: [ 'toastOverlay', 'saveButton', 'medDialogClamp', 'medName', 'dosageColorButton', 'dosageColorPopover', 'dosageColorBox', 'medUnit', 'dosageIconButton', 'dosageIconPopover', 'dosageIconBox', 'medNotes', 'frequencyMenu', 'frequencySpecificDays', 'specificDaysBox', 'frequencyDayOfMonth', 'dayOfMonth', 'frequencyCycle', 'cycleActive', 'cycleInactive', 'cycleCurrent', 'dosageList', 'increasePriority', 'recurringNotif', 'recurringInterval', 'medInventory', 'medCurrrentInv', 'medReminderInv', 'refillAmount', 'medDuration', 'calendarStartRow', 'calendarStart', 'calendarEndRow', 'calendarEnd', 'markAsConfirmed', 'deleteButton', ], }, class MedDialog extends Adw.Dialog { constructor(listView, itemPosition, duplicate) { super({}); this._list = listView; this._position = itemPosition; this._duplicate = duplicate; this._existingTreatment = (listView && itemPosition >= 0) || duplicate; dosageList = this._dosageList; this._updatedItemPosition = 0; this.set_presentation_mode(2); this._initMedDialog(); this._setDialogHeight(); } _initMedDialog() { this._toast = new Adw.Toast(); this._calendarDate = GLib.DateTime.new_now_local(); const calDate = this._calendarDate.format('%x'); this._calendarStartRow.subtitle = calDate; this._calendarEndRow.subtitle = calDate; this._setIconAndColor(); handleCalendarSelect(this._calendarStart, this._calendarStartRow); handleCalendarSelect(this._calendarEnd, this._calendarEndRow); if (this._existingTreatment) { if (!this._duplicate) { this.title = _('Edit Treatment'); this._saveButton.label = _('Save'); this._deleteButton.set_visible(true); } this.set_presentation_mode(0); const item = this._list.get_model().get_item(this._position).obj; this._medName.text = item.name; this._medUnit.text = item.unit; this._medNotes.text = item.notes ? item.notes : ''; if (this._duplicate) { this.set_presentation_mode(2); this._medName.text += ` (${_('Copy')})`; } for (const clr of this._dosageColorBox) { if (clr.get_name() === item.color) { this._dosageColorButton.add_css_class(item.color + '-clr'); this._dosageColorButton.name = clr.get_name(); } } for (const icn of this._dosageIconBox) { const icon = item.icon + '-symbolic'; if (icn.get_icon_name() === icon) { this._dosageIconButton.set_icon_name(icon); } } item.dosage.forEach(timeDose => { const timeDoseRow = new TimeDoseRow(timeDose); this._dosageList.append(timeDoseRow.spinRow); }); this._setFreqMenuVisibility(item); if (item.frequency === 'specific-days') { this._frequencyMenu.subtitle = getSpecificDaysLabel(item); } if (item.markConfirmed) { this._markAsConfirmed.active = true; } if (item.notification.increasePriority) { this._increasePriority.active = true; } if (item.notification.recurring) { this._recurringNotif.set_enable_expansion(item.notification.recurring.enabled); this._recurringInterval.value = item.notification.recurring.interval; } if (item.monthDay) { this._dayOfMonth.value = item.monthDay; } if (item.frequency === 'day-of-month') { this._handleDayOfMonthLabels(); } if (item.days && item.days.length !== 0) { let day = firstWeekday; for (const btn of this._specificDaysBox) { for (const d of item.days) { if (d === day) btn.set_active(true); } day = (day + 1) % 7; } } if (item.cycle && item.cycle.length !== 0) { const [active, inactive, current] = item.cycle; this._cycleActive.value = active; this._cycleInactive.value = inactive; this._cycleCurrent.value = current; this._cycleCurrent.adjustment.set_upper(active + inactive); if (item.frequency === 'cycle') { this._frequencyMenu.subtitle = `${active} ⊷ ${inactive}`; } } if (item.inventory.enabled) { this._medInventory.set_enable_expansion(true); } this._medCurrrentInv.value = item.inventory.current; this._medReminderInv.value = item.inventory.reminder; this._refillAmount.value = item.inventory.refill; if (item.duration.enabled) { this._medDuration.set_enable_expansion(true); // this parsing is in seconds const start = GLib.DateTime.new_from_unix_local(item.duration.start / 1000); const end = GLib.DateTime.new_from_unix_local(item.duration.end / 1000); this._calendarStart.select_day(start); this._calendarEnd.select_day(end); } this._deleteButton.connect('activated', () => { confirmDeleteDialog(item, this._position, getDosageWindow(), this); }); } else { const timeDoseRow = new TimeDoseRow({ time: [12, 30], dose: 1 }); this._dosageList.append(timeDoseRow.spinRow); this._setFreqMenuVisibility(); } const addDoseBtn = new Gtk.Button({ css_classes: ['circular', 'suggested-action'], valign: Gtk.Align.CENTER, margin_end: 3, icon_name: 'list-add-symbolic', tooltip_text: _('Add Dose'), }); addDoseBtn.connect('clicked', () => { const lastRow = dosageList.get_last_child(); let h = lastRow.hours; const m = lastRow.minutes; const d = lastRow.value; const timeDoseRow = new TimeDoseRow({ time: [++h, m], dose: d }); dosageList.append(timeDoseRow.spinRow); }); this._dayOfMonth.connect('output', this._handleDayOfMonthLabels.bind(this)); this._cycleActive.connect('output', this._handleCycle.bind(this)); this._cycleInactive.connect('output', this._handleCycle.bind(this)); dosageList.get_first_child().prefix.prepend(addDoseBtn); for (const button of this._specificDaysBox) { button.connect('toggled', this._setSpecificDaysFreqLabel.bind(this)); } this._setSpecificDaysButtonOrder(); addSaveKeyControllerToDialog(this, this._saveButton); } _setIconAndColor() { for (const clr of this._dosageColorBox) { clr.connect('clicked', () => { const cssClasses = [clr.get_name() + '-clr', 'circular']; this._dosageColorButton.set_css_classes(cssClasses); this._dosageColorButton.name = clr.get_name(); this._dosageColorPopover.popdown(); }); } for (const icn of this._dosageIconBox) { icn.connect('clicked', () => { this._dosageIconButton.set_icon_name(icn.get_icon_name()); this._dosageIconPopover.popdown(); }); } } _addOrUpdateTreatment() { const isUpdate = this._list && this._position >= 0 && !this._duplicate; const today = new GLib.DateTime(); let days = []; let doses = []; let cycle = []; let invEnabled = false; let durEnabled = false; let name, unit, notes, color, frequency, monthDay, icon, markConfirmed, notification, inventory, current, reminder, refill, duration, start, end; if (this._medInventory.get_enable_expansion()) { invEnabled = true; } if (this._medDuration.get_enable_expansion()) { durEnabled = true; start = +this._calendarStart.get_date().format('%s') * 1000; end = +this._calendarEnd.get_date().format('%s') * 1000; } else { start = +today.format('%s') * 1000; end = start; } name = this._medName.text.trim(); unit = this._medUnit.text.trim(); notes = this._medNotes.text.trim(); days = this._getSpecificDays(); monthDay = this._dayOfMonth.value; doses = this._getDoses(); markConfirmed = this._markAsConfirmed.get_active(); notification = { recurring: {} }; notification.increasePriority = this._increasePriority.get_active(); notification.recurring.enabled = this._recurringNotif.get_enable_expansion(); notification.recurring.interval = this._recurringInterval.get_value(); cycle[0] = this._cycleActive.adjustment.value; cycle[1] = this._cycleInactive.adjustment.value; cycle[2] = this._cycleCurrent.adjustment.value; color = this._dosageColorButton.get_name(); icon = this._dosageIconButton.get_icon_name().replace('-symbolic', ''); current = this._medCurrrentInv.value; reminder = this._medReminderInv.value; refill = this._refillAmount.value; inventory = { enabled: invEnabled, current: current, reminder: reminder, refill: refill }; duration = { enabled: durEnabled, start: start, end: end }; frequency = FREQUENCIES[this._frequencyMenu.get_selected()]; doses.sort((obj1, obj2) => { const [h1, m1] = obj1.time; const [h2, m2] = obj2.time; const hm1 = `${addLeadZero(h1)}${addLeadZero(m1)}`; const hm2 = `${addLeadZero(h2)}${addLeadZero(m2)}`; return hm1 === hm2 ? 0 : hm1 > hm2 ? 1 : -1; }); if (isUpdate) { const item = this._list.get_model().get_item(this._position).obj; doses = doses.map((dose, idx) => { const lastTk = item.dosage.find( itDose => itDose.time[0] === dose.time[0] && itDose.time[1] === dose.time[1], )?.lastTaken; return { time: dose.time, dose: dose.dose, lastTaken: lastTk || null, }; }); treatmentsLS.remove(this._position); } else { doses.forEach(dose => { dose.lastTaken = null; }); } const newIt = new MedicationObject({ obj: { name: name, unit: unit, notes: notes, frequency: frequency, color: color, icon: icon, days: days, monthDay: monthDay, cycle: cycle, dosage: doses, notification: notification, inventory: inventory, duration: duration, markConfirmed: markConfirmed, }, }); treatmentsLS.insert_sorted(newIt, sortTreatFunc(settings.get_string('treatments-sorting'))); this._updatedItemPosition = treatmentsLS.find(newIt)[1]; } _getDoses() { const doses = []; let currRow = dosageList.get_first_child(); while (currRow) { const ds = { time: [currRow.hours, currRow.minutes], dose: currRow.value, }; doses.push(ds); currRow = currRow.get_next_sibling(); } return doses; } _getSpecificDays() { const days = []; let day = firstWeekday; for (const button of this._specificDaysBox) { if (button.get_active()) { if (!days.includes(day)) { days.push(day); } } day = (day + 1) % 7; } return days.sort(); } _setSpecificDaysButtonOrder() { let day = firstWeekday; for (const button of this._specificDaysBox) { button.label = getDayLabel(day); day = (day + 1) % 7; } } _setSpecificDaysFreqLabel() { if (this._getSpecificDays().length === 0) { this._frequencyMenu.subtitle = _('Choose'); } else { this._frequencyMenu.subtitle = getSpecificDaysLabel({ days: this._getSpecificDays(), }); } } _handleDayOfMonthLabels() { this._frequencyMenu.title = _('Day of Month'); this._frequencyMenu.subtitle = _('Day') + `: ${this._dayOfMonth.value}`; } _handleCycle() { const sum = this._cycleActive.value + this._cycleInactive.value; this._frequencyMenu.subtitle = this._cycleActive.value + ' ⊷ ' + this._cycleInactive.value; this._cycleCurrent.adjustment.set_upper(sum); if (this._cycleCurrent.adjustment.value > sum) { this._cycleCurrent.adjustment.value = sum; } } _setFreqMenuVisibility(item) { const freqRowPrefix = this._frequencyMenu.get_first_child().get_first_child(); const selected = this._frequencyMenu.get_selected(); freqRowPrefix.visible = selected !== 0 && selected !== 4; this._frequencyMenu.connect('notify::selected-item', frequencyMenu => { const selected = frequencyMenu.get_selected(); freqRowPrefix.visible = selected !== 0 && selected !== 4; this._frequencySpecificDays.visible = selected === 1; this._frequencyDayOfMonth.visible = selected === 2; this._frequencyCycle.visible = selected === 3; switch (selected) { case 1: frequencyMenu.title = _('Specific Days'); this._setSpecificDaysFreqLabel(); break; case 2: this._handleDayOfMonthLabels(); break; case 3: frequencyMenu.title = _('Cycle'); this._handleCycle(); break; default: frequencyMenu.title = _('Frequency'); } // if when-needed is selected, hide mark confirmed, priority, duration and recurring this._markAsConfirmed.visible = selected !== 4; this._increasePriority.visible = selected !== 4; this._medDuration.visible = selected !== 4; this._recurringNotif.visible = selected !== 4; let currRow = dosageList.get_first_child(); while (currRow) { currRow.prefix.sensitive = selected !== 4; currRow.visible = selected !== 4 || currRow === dosageList.get_first_child(); currRow = currRow.get_next_sibling(); } }); if (item) { const selectedIndex = FREQUENCIES.indexOf(item.frequency); this._frequencyMenu.set_selected(selectedIndex); } } _isValidInput(isUpdate) { this._medName.connect('changed', name => name.remove_css_class('error')); this._medUnit.connect('changed', unit => unit.remove_css_class('error')); const emptyName = this._medName.text.trim() == ''; const emptyUnit = this._medUnit.text.trim() == ''; if (emptyName) { this._toast.dismiss(); this._toast.title = _('Empty Name'); this._toastOverlay.add_toast(this._toast); this._medName.add_css_class('error'); return; } else if (emptyUnit) { this._toast.dismiss(); this._toast.title = _('Empty Unit'); this._toastOverlay.add_toast(this._toast); this._medUnit.add_css_class('error'); return; } if (this._frequencySpecificDays.get_visible() && this._getSpecificDays().length == 0) { this._toast.title = _('Choose at Least One Day'); this._toast.dismiss(); this._toastOverlay.add_toast(this._toast); return; } for (const it of treatmentsLS) { const i = it.obj; if (isUpdate) { const item = this._list.get_model().get_item(this._position).obj; if (i === item) continue; } if (i.name.toLowerCase() === this._medName.text.trim().toLowerCase()) { this._toast.dismiss(); this._toast.title = _('Name Already on Treatment List'); this._toastOverlay.add_toast(this._toast); this._medName.add_css_class('error'); return; } } let currRow = dosageList.get_first_child(); const rows = []; while (currRow) { const time = String([currRow.hours, currRow.minutes]); if (rows.includes(time)) { this._toast.dismiss(); this._toast.title = _('Duplicated Time'); this._toastOverlay.add_toast(this._toast); return; } else { rows.push(time); } currRow = currRow.get_next_sibling(); } return true; } _setDialogHeight() { const [medDialogClampHeight] = this._medDialogClamp.measure(Gtk.Orientation.VERTICAL, -1); this.content_height = medDialogClampHeight + 48; } _close() { this.force_close(); } _save() { const isUpdate = this._list && this._position >= 0 && !this._duplicate; const dosageWindow = getDosageWindow(); if (!this._isValidInput(isUpdate)) return; this._addOrUpdateTreatment(); dosageWindow.updateEverything({ skipHistUp: true }); const pos = Math.max(0, this._updatedItemPosition - 1); dosageWindow._treatmentsList.scroll_to(pos, Gtk.ListScrollFlags.FOCUS, null); this.force_close(); dosageWindow.scheduleNotifications('saving'); } }, ); export function confirmDeleteDialog(item, position, dosageWindow, medDialog) { const alertDialog = new Adw.AlertDialog({ body_use_markup: true, heading: _('Are You Sure?'), body: `${item.name} ` + _('will be deleted'), }); alertDialog.add_response('cancel', _('Cancel')); alertDialog.add_response('delete', _('Delete')); alertDialog.set_response_appearance('delete', Adw.ResponseAppearance.DESTRUCTIVE); if (medDialog) { alertDialog.present(medDialog); } else { alertDialog.present(dosageWindow); } alertDialog.connect('response', (_self, response) => { if (response === 'delete') { const it = dosageWindow._treatmentsList.model.get_item(position); const deletePos = treatmentsLS.find(it)[1]; treatmentsLS.remove(deletePos); if (medDialog) medDialog.force_close(); dosageWindow.updateEverything({ skipHistUp: true, skipCycleUp: true, treatIsEmpty: treatmentsLS.n_items === 0, }); dosageWindow.scheduleNotifications('deleting'); dosageWindow._treatmentsList.scroll_to( Math.max(0, position - 1), Gtk.ListScrollFlags.FOCUS, null, ); } }); } diegopvlk-Dosage-bd9126a/src/medication.js000066400000000000000000000011351514145341100205500ustar00rootroot00000000000000/* * Copyright 2023 Diego Povliuk * SPDX-License-Identifier: GPL-3.0-only */ 'use strict'; import GObject from 'gi://GObject?version=2.0'; export const MedicationObject = GObject.registerClass( { GTypeName: 'MedicationObject', Properties: { obj: GObject.ParamSpec.jsobject( 'obj', 'Medication', 'Medication Object', GObject.ParamFlags.READWRITE | GObject.ParamFlags.CONSTRUCT, {}, ), }, }, class extends GObject.Object { get obj() { return this._obj; } set obj(obj) { if (this._obj === obj) return; this._obj = obj; this.notify('obj'); } }, ); diegopvlk-Dosage-bd9126a/src/meson.build000066400000000000000000000016631514145341100202460ustar00rootroot00000000000000pkgdatadir = join_paths(get_option('datadir'), meson.project_name()) gnome = import('gnome') i18n = import('i18n') src_res = gnome.compile_resources('io.github.diegopvlk.Dosage.src', 'io.github.diegopvlk.Dosage.src.gresource.xml', gresource_bundle: true, install: true, install_dir: pkgdatadir, ) bin_conf = configuration_data() bin_conf.set('GJS', find_program('gjs').full_path()) bin_conf.set('PACKAGE_VERSION', meson.project_version()) bin_conf.set('PACKAGE_NAME', meson.project_name()) bin_conf.set('prefix', get_option('prefix')) bin_conf.set('libdir', join_paths(get_option('prefix'), get_option('libdir'))) bin_conf.set('datadir', join_paths(get_option('prefix'), get_option('datadir'))) bin_conf.set('resource_path', '/io/github/diegopvlk/Dosage') configure_file( input: 'io.github.diegopvlk.Dosage.in', output: 'io.github.diegopvlk.Dosage', configuration: bin_conf, install: true, install_dir: get_option('bindir') ) diegopvlk-Dosage-bd9126a/src/oneTimeDialog.js000066400000000000000000000162661514145341100211670ustar00rootroot00000000000000'use strict'; import Adw from 'gi://Adw?version=1'; import Gio from 'gi://Gio?version=2.0'; import GLib from 'gi://GLib?version=2.0'; import GObject from 'gi://GObject?version=2.0'; import Gtk from 'gi://Gtk?version=4.0'; import { getDosageWindow } from './main.js'; import { MedicationObject } from './medication.js'; import TimePicker from './timePicker.js'; import { handleCalendarSelect } from './utils/helpers.js'; import { historyLS, treatmentsLS } from './window.js'; export const OneTimeDialog = GObject.registerClass( { GTypeName: 'OneTimeDialog', Template: 'resource:///io/github/diegopvlk/Dosage/ui/one-time-dialog.ui', InternalChildren: [ 'toastOverlay', 'oneTimeDialogClamp', 'medName', 'colorBox', 'colorButton', 'colorPopover', 'medUnit', 'medAmount', 'medTime', 'dateOneEntry', 'calOneEntry', 'oneTimePopover', 'confirmBtn', 'oneTimeBtnRow', 'oneTimeEntries', 'popoverScrollTime', ], }, class OneTimeDialog extends Adw.Dialog { constructor() { super({}); this._toast = new Adw.Toast(); this._timePicker = new TimePicker(); this._popoverScrollTime.set_child(this._timePicker); this._initOneTimeDialog(); this._setTreatmentsBtnList(); } _initOneTimeDialog() { const dosageWindow = getDosageWindow(); const calendarDate = GLib.DateTime.new_now_local(); const calDate = calendarDate.format('%x'); for (const clr of this._colorBox) { clr.connect('clicked', () => { const cssClasses = [clr.get_name() + '-clr', 'circular']; this._colorButton.set_css_classes(cssClasses); this._colorButton.name = clr.get_name(); this._colorPopover.popdown(); }); } this._dateOneEntry.subtitle = calDate; handleCalendarSelect(this._calOneEntry, this._dateOneEntry, true); this._medTime.subtitle = this._timePicker.entry.text; this._timePicker.entry.connect('changed', e => { this._medTime.subtitle = e.text; }); this._confirmBtn.connect('clicked', () => { if (!this._isValidInput()) return; this._addSingleItemToHistory(); dosageWindow.updateEverything({ skipCycleUp: true }); this.force_close(); dosageWindow.scheduleNotifications('saving'); }); const [oneTimeDialogClampHeight] = this._oneTimeDialogClamp.measure( Gtk.Orientation.VERTICAL, -1, ); this.content_height = oneTimeDialogClampHeight + 58; this.present(dosageWindow); const setConfirmBtn = () => { if (this._medName.text.trim() == '' || this._medUnit.text.trim() == '') { this._confirmBtn.sensitive = false; } else { this._confirmBtn.sensitive = true; } }; this._medName.connect('changed', name => { name.remove_css_class('error'); setConfirmBtn(); this._toast.dismiss(); }); this._medUnit.connect('changed', unit => { unit.remove_css_class('error'); setConfirmBtn(); this._toast.dismiss(); }); } _setTreatmentsBtnList() { const btnNew = new Gtk.Button({ css_classes: ['flat'], can_shrink: true, label: _('New'), }); btnNew.remove_css_class('text-button'); btnNew.get_first_child().set_halign(Gtk.Align.START); btnNew.get_first_child().set_max_width_chars(50); this._oneTimeEntries.append(btnNew); btnNew.connect('clicked', () => { this._oneTimePopover.popdown(); this._medName.text = ''; this._medUnit.text = _('Pill(s)'); this._colorButton.set_css_classes(['circular']); this._colorButton.name = 'default'; this._medAmount.value = 1; this._medName.sensitive = true; this._medUnit.sensitive = true; this._existingEntry = false; this._toast.dismiss(); }); this._oneTimeBtnRow.get_child().append(this._oneTimePopover); this._oneTimeBtnRow.connect('activated', _ => this._oneTimePopover.popup()); this._existingEntry = false; if (getDosageWindow()._treatmentsList.model.get_n_items() > 0) { this._oneTimeBtnRow.sensitive = true; const tempTreatmentsLS = Gio.ListStore.new(MedicationObject); for (const it of treatmentsLS) { tempTreatmentsLS.insert_sorted(it, (a, b) => { return a.obj.name.localeCompare(b.obj.name); }); } for (const it of tempTreatmentsLS) { const item = it.obj; const btn = new Gtk.Button({ css_classes: ['flat', 'one-time-name'], can_shrink: true, label: item.name, width_request: 120, }); btn.get_first_child().set_max_width_chars(50); btn.remove_css_class('text-button'); btn.get_first_child().set_halign(Gtk.Align.START); btn.connect('clicked', () => { const cssClasses = [item.color + '-clr', 'circular']; this._colorButton.set_css_classes(cssClasses); this._oneTimePopover.popdown(); this._medName.text = item.name; this._medUnit.text = item.unit; this._colorButton.name = item.color; this._medAmount.value = item.dosage[0].dose; this._medName.sensitive = false; this._medUnit.sensitive = false; this._confirmBtn.sensitive = true; this._existingEntry = true; this._toast.dismiss(); }); this._oneTimeEntries.append(btn); } } } _isValidInput() { if (this._existingEntry) return true; for (const it of treatmentsLS) { const i = it.obj; if (i.name.toLowerCase() === this._medName.text.trim().toLowerCase()) { this._toast.title = _('Name Already on Treatment List'); this._toastOverlay.add_toast(this._toast); this._medName.add_css_class('error'); return; } } return true; } _addSingleItemToHistory() { const dt = +this._calOneEntry.get_date().format('%s') * 1000; const entryDate = new Date(dt); const dose = this._medAmount.value; const h = this._timePicker.hours; const m = this._timePicker.minutes; entryDate.setHours(this._timePicker.hours); entryDate.setMinutes(this._timePicker.minutes); entryDate.setSeconds(new Date().getSeconds()); const item = new MedicationObject({ obj: { name: this._medName.text.trim(), unit: this._medUnit.text.trim(), time: [h, m], dose: dose, color: this._colorButton.get_name(), taken: [entryDate.getTime(), 1], }, }); historyLS.insert_sorted(item, (a, b) => { const dateA = a.obj.taken[0]; const dateB = b.obj.taken[0]; if (dateA < dateB) return 1; else if (dateA > dateB) return -1; else return 0; }); const todayDt = new Date().setHours(0, 0, 0, 0); const entryDt = entryDate.setHours(0, 0, 0, 0); for (const it of treatmentsLS) { const i = it.obj; const newIt = item.obj; const sameName = i.name === newIt.name; const updateInv = sameName && i.inventory.enabled; // if it's the time as of an existing item // update lastTaken if entryDate is today if (todayDt === entryDt) { for (const timeDose of i.dosage) { const sameTime = String(timeDose.time) === String(newIt.time); if (sameName && sameTime) { timeDose.lastTaken = new Date().toISOString(); const dateKey = new Date().setHours(h, m, 0, 0); getDosageWindow().app.withdraw_notification(String(dateKey)); break; } } } if (updateInv) { i.inventory.current -= newIt.dose; // trigger signal to update labels it.notify('obj'); break; } } } }, ); diegopvlk-Dosage-bd9126a/src/prefsDialog.js000066400000000000000000000065721514145341100207050ustar00rootroot00000000000000/* * Copyright 2023 Diego Povliuk * SPDX-License-Identifier: GPL-3.0-only */ 'use strict'; import Adw from 'gi://Adw?version=1'; import Gio from 'gi://Gio?version=2.0'; import GLib from 'gi://GLib?version=2.0'; import GObject from 'gi://GObject?version=2.0'; import Gtk from 'gi://Gtk?version=4.0'; import Xdp from 'gi://Xdp?version=1.0'; import { saveHistFile, saveTreatFile } from './utils/saveFiles.js'; import { historyLS, treatmentsLS } from './window.js'; export const PrefsDialog = GObject.registerClass( { GTypeName: 'PrefsDialog', Template: 'resource:///io/github/diegopvlk/Dosage/ui/preferences.ui', InternalChildren: ['exportHistFmt', 'saveHistoryBtn', 'saveTreatmentsBtn'], }, class PrefsDialog extends Adw.Dialog { constructor() { super({}); this._initPrefs(); } _initPrefs() { // Export format this._exportHistFmt.set_selected(settings.get_int('export-history-format')); this._exportHistFmt.connect('notify::selected-item', () => { settings.set_int('export-history-format', this._exportHistFmt.get_selected()); }); this._saveHistoryBtn.sensitive = historyLS.n_items > 0; this._saveTreatmentsBtn.sensitive = treatmentsLS.n_items > 0; // Necessary for saving the files Gio._promisify(Gtk.FileDialog.prototype, 'save', 'save_finish'); Gio._promisify(Gio.File.prototype, 'replace_contents_async', 'replace_contents_finish'); } _setSwitchStartStateFromKey(_prefsDialog, key, switchRow) { switchRow.settingsKey = key; return settings.get_boolean(key); } _setSwitchSettingsKey(switchRow) { settings.set_boolean(switchRow.settingsKey, switchRow.active); } /** Autostart handling (flatpak or native) */ _handleAutostart(switchRow) { settings.set_boolean(switchRow.settingsKey, switchRow.active); const state = switchRow.active; if (GLib.getenv('container') === 'flatpak') { const portal = new Xdp.Portal(); const flags = state ? Xdp.BackgroundFlags.AUTOSTART : Xdp.BackgroundFlags.NONE; portal.request_background( null, _('Accept to allow running in the background and receive notifications'), ['io.github.diegopvlk.Dosage', '--startup'], flags, null, (_portal, result) => { try { portal.request_background_finish(result); } catch (err) { console.error(err); if (!state) return; const alertDialog = new Adw.AlertDialog({ heading: _('An Issue Has Occurred'), body: err.message, }); alertDialog.add_response('close', _('Close')); alertDialog.present(this); } }, ); } else { const path = GLib.build_filenamev([ GLib.get_home_dir(), '.config', 'autostart', 'dosage-tracker-startup.desktop', ]); if (state) { GLib.mkdir_with_parents(GLib.path_get_dirname(path), 0o755); const desktopEntry = [ '[Desktop Entry]', 'Type=Application', 'Name=io.github.diegopvlk.Dosage', 'Exec=dosage-tracker --startup', ].join('\n'); GLib.file_set_contents(path, desktopEntry); } else { const file = Gio.File.new_for_path(path); if (file) file.delete(null); } } } _saveHistory() { const fmt = this._exportHistFmt.get_selected(); const isISO = fmt === 1 || fmt === 3; const isHTML = fmt === 2 || fmt === 3; saveHistFile(isISO, isHTML, this).catch(console.error); } _saveTreatments() { saveTreatFile(); } }, ); diegopvlk-Dosage-bd9126a/src/refillDialog.js000066400000000000000000000040501514145341100210300ustar00rootroot00000000000000/* * Copyright 2023 Diego Povliuk * SPDX-License-Identifier: GPL-3.0-only */ 'use strict'; import Adw from 'gi://Adw?version=1'; import GObject from 'gi://GObject?version=2.0'; import Gtk from 'gi://Gtk?version=4.0'; import { getDosageWindow } from './main.js'; import { sortTreatments } from './treatmentsSorter.js'; import { addSaveKeyControllerToDialog } from './utils/helpers.js'; export const RefillDialog = GObject.registerClass( { GTypeName: 'RefillDialog', Template: 'resource:///io/github/diegopvlk/Dosage/ui/refill-dialog.ui', InternalChildren: [ 'refillDialogClamp', 'refillRow', 'refillInventory', 'saveButton', 'refillButton', ], }, class RefillDialog extends Adw.Dialog { constructor(listItem) { super({}); this._listItem = listItem; this._itemObj = listItem.get_item().obj; this._initRefill(); } _initRefill() { const itemObj = this._itemObj; this._refillRow.subtitle = itemObj.name; this._refillInventory.value = itemObj.inventory.current; this._refillButton.label = '+' + itemObj.inventory.refill; addSaveKeyControllerToDialog(this, this._saveButton); const [refillDialogClampHeight] = this._refillDialogClamp.measure( Gtk.Orientation.VERTICAL, -1, ); this.content_height = refillDialogClampHeight + 50; } _refill() { this._refillInventory.value += this._itemObj.inventory.refill; } _save() { const dosageWindow = getDosageWindow(); this._itemObj.inventory.current = this._refillInventory.value; // trigger signal to update labels this._listItem.get_item().notify('obj'); const treatSort = settings.get_string('treatments-sorting'); if (treatSort === 'amount-remaining-more' || treatSort === 'amount-remaining-less') { sortTreatments(treatSort); } dosageWindow.updateEverything({ skipHistUp: true, skipCycleUp: true }); const pos = Math.max(0, this._listItem.position - 1); dosageWindow._treatmentsList.scroll_to(pos, Gtk.ListScrollFlags.FOCUS, null); dosageWindow.scheduleNotifications('saving'); this.force_close(); } }, ); diegopvlk-Dosage-bd9126a/src/timeDoseRow.js000066400000000000000000000036211514145341100206770ustar00rootroot00000000000000'use strict'; import Adw from 'gi://Adw?version=1'; import Gtk from 'gi://Gtk?version=4.0'; import { dosageList } from './medDialog.js'; import TimePicker from './timePicker.js'; export class TimeDoseRow { constructor(timeDose) { let [hours, minutes] = timeDose.time; this.spinRow = new Adw.SpinRow({ climb_rate: 0.2, digits: 2, adjustment: new Gtk.Adjustment({ lower: 0.25, upper: 9999, step_increment: 0.25, value: timeDose.dose, }), }); this.spinRow.add_css_class('t-d-row'); this.date = new Date(); this.date.setHours(hours); this.date.setMinutes(minutes); this.timePicker = new TimePicker(this.date); this.removeDoseBtn = new Gtk.Button({ css_classes: ['circular', 'destructive-action'], valign: Gtk.Align.CENTER, margin_end: 3, icon_name: 'user-trash-symbolic', tooltip_text: _('Remove Dose'), }); this.timeBtn = new Gtk.MenuButton({ can_shrink: true, css_classes: ['flat', 'numeric'], tooltip_text: _('Change Time'), label: this.timePicker.entry.text, valign: Gtk.Align.CENTER, halign: Gtk.Align.START, popover: new Gtk.Popover({ child: new Gtk.ScrolledWindow({ propagate_natural_height: true, propagate_natural_width: true, child: this.timePicker, }), }), }); this.spinRow.hours = this.timePicker.hours; this.spinRow.minutes = this.timePicker.minutes; this.spinRow.timeBtn = this.timeBtn; this.timePicker.entry.connect('changed', e => { this.timeBtn.label = e.text; this.spinRow.hours = this.timePicker.hours; this.spinRow.minutes = this.timePicker.minutes; }); this.spinRow.prefix = new Gtk.Box({}); if (dosageList.get_first_child()) { this.spinRow.prefix.append(this.removeDoseBtn); } this.spinRow.prefix.append(this.timeBtn); this.spinRow.add_prefix(this.spinRow.prefix); this.removeDoseBtn.connect('clicked', () => { dosageList.remove(this.spinRow); }); } } diegopvlk-Dosage-bd9126a/src/timePicker.js000066400000000000000000000075651514145341100205450ustar00rootroot00000000000000'use strict'; import Adw from 'gi://Adw?version=1'; import GLib from 'gi://GLib?version=2.0'; import GObject from 'gi://GObject?version=2.0'; import Gtk from 'gi://Gtk?version=4.0'; import { addLeadZero } from './utils/helpers.js'; import { amPmStr, clockIs12, timeDot, timeFormat } from './utils/locale.js'; /** * A time picker widget with spin buttons. * @param {number} ts - Unix Timestamp. * @property {Widget} entry - Gtk.Entry (entry.text for formatted time). * @property {number} hours - Current hour. * @property {number} minutes - Current minute. */ const TimePicker = GObject.registerClass( { GTypeName: 'TimePicker', }, class TimePicker extends Gtk.Box { constructor(ts) { super({ css_name: 'time-picker', }); const dTime = GLib.DateTime; this.time = ts ? dTime.new_from_unix_local(ts / 1000) : dTime.new_now_local(); this.hours = this.time.get_hour(); this.minutes = this.time.get_minute(); const hours12 = this.convert24To12(this.hours); if (clockIs12) this.hours = hours12.hours; this.entry = new Gtk.Entry({}); this.setComponents(hours12); this.setTime(); } setComponents(hours12) { const hoursMinutesBox = new Gtk.Box({}); hoursMinutesBox.set_direction(Gtk.TextDirection.LTR); this.adjH = new Gtk.Adjustment({ lower: clockIs12 ? 1 : 0, upper: clockIs12 ? 12 : 23, value: this.hours, step_increment: 1, }); const spinBtnHours = new Gtk.SpinButton({ css_name: 'time-spinbutton', orientation: Gtk.Orientation.VERTICAL, valign: Gtk.Align.CENTER, numeric: true, wrap: true, adjustment: this.adjH, }); const spinBtnSeparator = new Gtk.Label({ label: timeDot ? ' . ' : ' ∶ ', }); this.adjM = new Gtk.Adjustment({ lower: 0, upper: 59, value: this.minutes, step_increment: 5, }); const spinBtnMinutes = new Gtk.SpinButton({ css_name: 'time-spinbutton', orientation: Gtk.Orientation.VERTICAL, valign: Gtk.Align.CENTER, numeric: true, wrap: true, adjustment: this.adjM, }); this.buttonsAmPm = new Adw.ToggleGroup({ margin_start: 8, halign: Gtk.Align.CENTER, valign: Gtk.Align.CENTER, visible: clockIs12, orientation: Gtk.Orientation.VERTICAL, }); this.btnAM = new Adw.Toggle({ label: amPmStr[0], name: 'am', }); this.btnPM = new Adw.Toggle({ label: amPmStr[1], name: 'pm', }); hoursMinutesBox.append(spinBtnHours); hoursMinutesBox.append(spinBtnSeparator); hoursMinutesBox.append(spinBtnMinutes); this.append(hoursMinutesBox); this.buttonsAmPm.add(this.btnAM); this.buttonsAmPm.add(this.btnPM); this.buttonsAmPm.active_name = hours12.isPM ? 'pm' : 'am'; this.append(this.buttonsAmPm); spinBtnHours.connect('output', h => { h.text = clockIs12 ? String(this.adjH.value) : addLeadZero(this.adjH.value); this.setTime(); return true; }); spinBtnMinutes.connect('output', m => { m.text = addLeadZero(this.adjM.value); this.setTime(); return true; }); this.buttonsAmPm.connect('notify::active', () => this.setTime()); } setTime() { if (clockIs12) { const pmActive = this.buttonsAmPm.active_name === 'pm'; const hours24 = this.convert12To24(this.adjH.value, pmActive); this.time = GLib.DateTime.new_local(1, 1, 1, hours24, this.adjM.value, 1); } else { this.time = GLib.DateTime.new_local(1, 1, 1, this.adjH.value, this.adjM.value, 1); } this.hours = this.time.get_hour(); this.minutes = this.time.get_minute(); this.entry.text = this.time.format(timeFormat); } convert24To12(hours24) { const isPM = hours24 >= 12; const hours12 = hours24 % 12 || 12; return { hours: hours12, isPM }; } convert12To24(hours12, isPM) { if (isPM && hours12 < 12) { hours12 += 12; } else if (!isPM && hours12 === 12) { hours12 = 0; } return hours12; } }, ); export default TimePicker; diegopvlk-Dosage-bd9126a/src/todayFactory.js000066400000000000000000000137161514145341100211140ustar00rootroot00000000000000/* * Copyright 2023 Diego Povliuk * SPDX-License-Identifier: GPL-3.0-only */ 'use strict'; import Adw from 'gi://Adw?version=1'; import GLib from 'gi://GLib?version=2.0'; import Gdk from 'gi://Gdk?version=4.0'; import Gtk from 'gi://Gtk?version=4.0'; import Pango from 'gi://Pango?version=1.0'; import { getDosageWindow } from './main.js'; import { timeFormat } from './utils/locale.js'; export const todayHeaderFactory = new Gtk.SignalListItemFactory(); export const todayItemFactory = new Gtk.SignalListItemFactory(); todayHeaderFactory.connect('setup', (factory, listHeader) => { listHeader.box = new Gtk.Box({ hexpand: true, }); listHeader.selectTimeGroupBtn = new Gtk.Button({ css_name: 'time-group-selection', css_classes: ['flat'], valign: Gtk.Align.START, }); listHeader.selectTimeGroupBtn.connect('clicked', _btn => { const dosageWindow = getDosageWindow(); for (let pos = listHeader.start; pos < listHeader.end; pos++) { dosageWindow.selectTodayItems(null, pos, true); } }); listHeader.whenNeededLabel = new Gtk.Label({ halign: Gtk.Align.START, ellipsize: Pango.EllipsizeMode.END, opacity: 0.75, label: _('As Needed'), }); listHeader.pinIcon = new Gtk.Image({ icon_name: 'pin-symbolic', opacity: 0.75, margin_start: 4, }); listHeader.box.append(listHeader.selectTimeGroupBtn); listHeader.box.append(listHeader.whenNeededLabel); listHeader.box.append(listHeader.pinIcon); listHeader.set_child(listHeader.box); }); todayHeaderFactory.connect('bind', (factory, listHeader) => { const item = listHeader.item.obj; const isWhenNd = item.frequency === 'when-needed'; listHeader.whenNeededLabel.visible = isWhenNd; listHeader.pinIcon.visible = isWhenNd; listHeader.selectTimeGroupBtn.visible = !isWhenNd; if (!isWhenNd) { const itemTime = GLib.DateTime.new_local(1, 1, 1, item.time[0], item.time[1], 1); const time = itemTime.format(timeFormat); listHeader.selectTimeGroupBtn.label = time; } }); todayItemFactory.connect('setup', (factory, listItem) => { listItem.box = new Gtk.Box({ css_name: 'item-box', }); listItem.icon = new Gtk.Image({ margin_start: 14, margin_end: 1, icon_name: 'pill-symbolic', css_classes: ['med-icon'], valign: Gtk.Align.CENTER, }); listItem.box.append(listItem.icon); listItem.labelsBox = new Gtk.Box({ valign: Gtk.Align.CENTER, hexpand: true, orientation: Gtk.Orientation.VERTICAL, margin_start: 9, margin_end: 12, margin_top: 4, margin_bottom: 4, }); listItem.box.append(listItem.labelsBox); listItem.nameLabel = new Gtk.Label({ css_classes: ['title'], halign: Gtk.Align.START, ellipsize: Pango.EllipsizeMode.END, margin_bottom: 1, }); listItem.labelsBox.append(listItem.nameLabel); listItem.doseAndNotes = new Gtk.Label({ css_classes: ['subtitle'], halign: Gtk.Align.START, justify: Gtk.Justification.FILL, wrap: true, natural_wrap_mode: Gtk.NaturalWrapMode.NONE, }); listItem.labelsBox.append(listItem.doseAndNotes); listItem.amountBox = new Gtk.Box({ css_classes: ['spin-box', 'spin-today-amount'], }); listItem.amtSpinRow = new Adw.SpinRow({ digits: 2, adjustment: new Gtk.Adjustment({ lower: 0.25, upper: 9999, step_increment: 0.25, }), }); listItem.amountBox.append(listItem.amtSpinRow); listItem.amountBtn = new Gtk.MenuButton({ tooltip_text: _('Change Dose'), css_classes: ['circular', 'today-amount'], icon_name: 'view-more-horizontal-symbolic', valign: Gtk.Align.CENTER, halign: Gtk.Align.CENTER, margin_end: 10, visible: false, popover: new Gtk.Popover({ css_classes: ['popover-scrolled'], child: new Gtk.ScrolledWindow({ propagate_natural_height: true, propagate_natural_width: true, child: listItem.amountBox, }), }), }); listItem.box.append(listItem.amountBtn); listItem.checkButton = new Gtk.CheckButton({ css_classes: ['selection-mode'], valign: Gtk.Align.CENTER, halign: Gtk.Align.CENTER, margin_end: 11, can_focus: false, can_target: false, }); listItem.signal = listItem.connect('notify::selected', () => { listItem.checkButton.active = listItem.selected; }); listItem.box.append(listItem.checkButton); listItem.selectable = false; listItem.set_child(listItem.box); listItem.keyController = new Gtk.EventControllerKey(); // activate item with space bar listItem.keyController.connect('key-pressed', (_, keyval, keycode, state) => { if (keyval === Gdk.KEY_space) { const row = listItem.box.parent; const listView = row.parent; listView.emit('activate', listItem.position); } }); listItem.controllerAndSignals = false; }); todayItemFactory.connect('bind', (factory, listItem) => { const item = listItem.item.obj; const box = listItem.box; const row = box.parent; const icon = listItem.icon; const amountBtn = listItem.amountBtn; const amtSpinRow = listItem.amtSpinRow; const name = listItem.nameLabel; const doseAndNotes = listItem.doseAndNotes; item.position = listItem.position; if (!listItem.controllerAndSignals) { row.add_controller(listItem.keyController); listItem.checkButton.connect('toggled', btn => { amountBtn.visible = btn.active; btn.active = listItem.selected; listItem.checkButton.active = listItem.selected; }); amtSpinRow.connect('output', row => { item.dose = row.value; listItem.setDoseAndNotes(); }); amountBtn.connect('notify::visible', btn => { if (!btn.visible) { item.dose = item.originalDose; listItem.setDoseAndNotes(); } }); row.connect('unrealize', () => { listItem.disconnect(listItem.signal); }); listItem.setDoseAndNotes = () => { doseAndNotes.label = `${item.dose} ${item.unit}`; if (item.notes !== '') { doseAndNotes.label += ` ⦁ ${item.notes}`; } }; listItem.controllerAndSignals = true; } name.label = item.name; listItem.setDoseAndNotes(); amtSpinRow.set_value(item.dose); icon.icon_name = item.icon; box.css_classes = ['card-stripe', item.color]; if (item.frequency === 'when-needed') { box.opacity = 0.75; } else { box.opacity = 1; } }); diegopvlk-Dosage-bd9126a/src/treatmentsFactory.js000066400000000000000000000210571514145341100221570ustar00rootroot00000000000000/* * Copyright 2023 Diego Povliuk * SPDX-License-Identifier: GPL-3.0-only */ 'use strict'; import GLib from 'gi://GLib?version=2.0'; import Gdk from 'gi://Gdk?version=4.0'; import Gio from 'gi://Gio?version=2.0'; import Gtk from 'gi://Gtk?version=4.0'; import Pango from 'gi://Pango?version=1.0'; import { getDosageWindow } from './main.js'; import { confirmDeleteDialog } from './medDialog.js'; import { RefillDialog } from './refillDialog.js'; import { getSpecificDaysLabel } from './utils/locale.js'; export const treatmentsFactory = new Gtk.SignalListItemFactory(); let delayDialog = false; let ref = 0; treatmentsFactory.connect('setup', (factory, listItem) => { listItem.box = new Gtk.Box({ css_name: 'item-box', }); listItem.altClick = new Gtk.GestureClick({ button: 3 }); // right click menu listItem.altClick.connect('pressed', (_gestureClick, _nPress, x, y) => { const position = new Gdk.Rectangle({ x: x, y: y }); listItem.popoverMenu.pointing_to = position; listItem.popoverMenu.popup(); }); listItem.box.add_controller(listItem.altClick); listItem.icon = new Gtk.Image({ margin_start: 14, margin_end: 1, icon_name: 'pill-symbolic', css_classes: ['med-icon'], valign: Gtk.Align.CENTER, }); listItem.box.append(listItem.icon); listItem.labelsBox = new Gtk.Box({ valign: Gtk.Align.CENTER, hexpand: true, orientation: Gtk.Orientation.VERTICAL, margin_start: 9, margin_end: 11, margin_top: 2, margin_bottom: 2, }); listItem.box.append(listItem.labelsBox); listItem.nameLabel = new Gtk.Label({ css_classes: ['title'], halign: Gtk.Align.START, ellipsize: Pango.EllipsizeMode.END, margin_bottom: 1, }); listItem.labelsBox.append(listItem.nameLabel); listItem.infoLabel = new Gtk.Label({ css_classes: ['subtitle'], halign: Gtk.Align.START, justify: Gtk.Justification.FILL, wrap: true, natural_wrap_mode: Gtk.NaturalWrapMode.NONE, }); listItem.labelsBox.append(listItem.infoLabel); listItem.durationNextDateLabel = new Gtk.Label({ css_classes: ['subtitle'], halign: Gtk.Align.START, ellipsize: Pango.EllipsizeMode.END, visible: false, margin_top: 1, }); listItem.labelsBox.append(listItem.durationNextDateLabel); listItem.invLabelBox = new Gtk.Box({}); listItem.invLabelBtn = new Gtk.Button({ css_classes: ['badge-button'], valign: Gtk.Align.CENTER, margin_end: 4, visible: false, tooltip_text: _('Refill'), child: listItem.invLabelBox, }); listItem.invLabel = new Gtk.Label({}); listItem.invWarningIcon = new Gtk.Image({ icon_name: 'dosage-stock-warning-symbolic', }); listItem.invLabelBox.append(listItem.invLabel); listItem.invLabelBox.append(listItem.invWarningIcon); listItem.invLabelBtn.connect('clicked', btn => { if (!delayDialog) { const dosageWindow = getDosageWindow(); const refillDialog = new RefillDialog(listItem); refillDialog.present(dosageWindow); delayDialog = true; setTimeout(() => { delayDialog = false; }, 500); } }); listItem.box.append(listItem.invLabelBtn); listItem.optionsMenu = new Gio.Menu(); listItem.optionsMenu.append(_('Edit'), `app.edit${ref}`); listItem.optionsMenu.append(_('Refill'), `app.refill${ref}`); listItem.optionsMenu.append(_('Duplicate'), `app.dup${ref}`); listItem.optionsMenu.append(_('Delete'), `app.del${ref}`); listItem.editAct = new Gio.SimpleAction({ name: `edit${ref}` }); listItem.refillAct = new Gio.SimpleAction({ name: `refill${ref}` }); listItem.duplicateAct = new Gio.SimpleAction({ name: `dup${ref}` }); listItem.deleteAct = new Gio.SimpleAction({ name: `del${ref}` }); ref++; listItem.popoverMenu = new Gtk.PopoverMenu({ halign: Gtk.Align.START, has_arrow: false, menu_model: listItem.optionsMenu, }); listItem.box.append(listItem.popoverMenu); listItem.optionsButton = new Gtk.MenuButton({ tooltip_text: _('Options'), css_classes: ['circular', 'flat'], valign: Gtk.Align.CENTER, margin_start: 5, margin_end: 11, icon_name: 'view-more-symbolic', menu_model: listItem.optionsMenu, }); listItem.box.append(listItem.optionsButton); listItem.set_child(listItem.box); listItem.keyController = new Gtk.EventControllerKey(); // activate item with space bar listItem.keyController.connect('key-pressed', (_, keyval, keycode, state) => { if (keyval === Gdk.KEY_space) { const row = listItem.box.parent; const listView = row.parent; listView.emit('activate', listItem.position); } }); listItem.controllerAndSignals = false; }); treatmentsFactory.connect('bind', (factory, listItem) => { const { box, nameLabel, icon } = listItem; const item = listItem.item.obj; if (!listItem.controllerAndSignals) { const app = getDosageWindow().application; const row = box.parent; row.add_controller(listItem.keyController); row.connect('unrealize', () => { app.remove_action(listItem.editAct.get_name()); app.remove_action(listItem.refillAct.get_name()); app.remove_action(listItem.duplicateAct.get_name()); app.remove_action(listItem.deleteAct.get_name()); }); listItem.item.connect('notify::obj', () => { setInventoryAndDateLabels(listItem); }); listItem.editAct.connect('activate', () => { const listView = row.parent; listView.emit('activate', listItem.position); }); if (item.inventory.enabled) { listItem.refillAct.connect('activate', () => { const refillDialog = new RefillDialog(listItem); refillDialog.present(getDosageWindow()); }); app.add_action(listItem.refillAct); } listItem.duplicateAct.connect('activate', () => { const list = getDosageWindow()._treatmentsList; getDosageWindow()._presentMedDialog(list, listItem.position, 'duplicate'); }); listItem.deleteAct.connect('activate', () => { confirmDeleteDialog(item, listItem.position, getDosageWindow()); }); app.add_action(listItem.editAct); app.add_action(listItem.duplicateAct); app.add_action(listItem.deleteAct); listItem.controllerAndSignals = true; } nameLabel.label = item.name; icon.icon_name = item.icon; setInventoryAndDateLabels(listItem); box.css_classes = [item.color]; }); function setInventoryAndDateLabels(listItem) { const item = listItem.item.obj; const { infoLabel, durationNextDateLabel, invLabelBtn, invWarningIcon } = listItem; const today = new Date().setHours(0, 0, 0, 0); const start = new Date(item.duration.start).setHours(0, 0, 0, 0); const end = new Date(item.duration.end).setHours(0, 0, 0, 0); const inv = item.inventory; if (inv.enabled) { let currInv = inv.current < 0 ? 0 : inv.current; invLabelBtn.visible = true; invWarningIcon.visible = false; // TRANSLATORS: keep the %d it's where the number goes listItem.invLabel.label = _('%d Remaining').replace('%d', currInv); invLabelBtn.remove_css_class('warning'); if (inv.current <= inv.reminder) { invWarningIcon.visible = true; invLabelBtn.add_css_class('warning'); } } // TRANSLATORS: label for when duration is enabled const startLabel = _('Starts on') + ` ${formatDate(item.duration.start)}`; const untilLabel = _('Until') + ` ${formatDate(item.duration.end)}`; const endedLabel = _('Ended on') + ` ${formatDate(item.duration.end)}`; if (item.duration.enabled && item.frequency !== 'when-needed') { durationNextDateLabel.visible = true; durationNextDateLabel.label = untilLabel; if (start > today) { durationNextDateLabel.label = startLabel; } } switch (item.frequency) { case 'daily': infoLabel.label = _('Daily'); break; case 'specific-days': infoLabel.label = getSpecificDaysLabel(item); break; case 'day-of-month': infoLabel.label = _('Day') + `: ${item.monthDay}`; break; case 'cycle': const nextDt = new Date(item.cycleNextDate).setHours(0, 0, 0, 0); const nextDate = formatDate(nextDt); if (item.duration.enabled) { durationNextDateLabel.label = untilLabel; if (nextDt > today && nextDt <= end) { durationNextDateLabel.label += ' ⦁ ' + _('Next Dose') + `: ${nextDate}`; } } else if (nextDt > today) { durationNextDateLabel.label = _('Next Dose') + `: ${nextDate}`; } if (nextDt <= today && !item.duration.enabled) { durationNextDateLabel.visible = false; } else { durationNextDateLabel.visible = true; } infoLabel.label = `${_('Cycle')} ⦁ ${item.cycle[0]} ⊷ ${item.cycle[1]}`; break; case 'when-needed': infoLabel.label = _('As Needed'); break; } if (item.notes !== '') infoLabel.label += ` ⦁ ${item.notes}`; if (item.duration.enabled && (end < today || end < start)) { durationNextDateLabel.label = endedLabel; } } function formatDate(dt) { const date = GLib.DateTime.new_from_unix_local(dt / 1000); return date.format('%x'); } diegopvlk-Dosage-bd9126a/src/treatmentsSorter.js000066400000000000000000000063451514145341100220310ustar00rootroot00000000000000'use strict'; import Gtk from 'gi://Gtk?version=4.0'; import { getDosageWindow } from './main.js'; import { treatmentsLS } from './window.js'; export function sortTreatments(sortingType) { treatmentsLS.sort(sortTreatFunc(sortingType)); const dosageWindow = getDosageWindow(); dosageWindow._treatmentsList.scroll_to(0, Gtk.ListScrollFlags.FOCUS, null); } export function sortTreatFunc(sortingType) { const today = new Date(); today.setHours(0, 0, 0, 0); switch (sortingType) { case 'name-ascending': return (a, b) => { return a.obj.name.localeCompare(b.obj.name); }; case 'amount-remaining-less': return (a, b) => { const nameA = a.obj.name; const nameB = b.obj.name; const invA = a.obj.inventory; const invB = b.obj.inventory; const enabledA = invA.enabled; const enabledB = invB.enabled; if (enabledA !== enabledB) { return enabledA ? -1 : 1; } if (enabledA && enabledB) { const curA = invA.current; const curB = invB.current; if (curA !== curB) { return curA - curB; } } return nameA.localeCompare(nameB); }; case 'amount-remaining-more': return (a, b) => { const nameA = a.obj.name; const nameB = b.obj.name; const invA = a.obj.inventory; const invB = b.obj.inventory; const enabledA = invA.enabled; const enabledB = invB.enabled; if (enabledA !== enabledB) { return enabledA ? -1 : 1; } if (enabledA && enabledB) { const curA = invA.current; const curB = invB.current; if (curA !== curB) { return curB - curA; } } return nameA.localeCompare(nameB); }; case 'when-needed-last': return (a, b) => { const isNeededA = a.obj.frequency === 'when-needed'; const isNeededB = b.obj.frequency === 'when-needed'; if (isNeededA !== isNeededB) { return isNeededA ? 1 : -1; } return a.obj.name.localeCompare(b.obj.name); }; case 'ended-last': return (a, b) => { const durA = a.obj.duration; const durB = b.obj.duration; const enabledA = durA.enabled && a.obj.frequency !== 'when-needed'; const enabledB = durB.enabled && b.obj.frequency !== 'when-needed'; if (enabledA !== enabledB) return enabledB ? -1 : 1; if (enabledA && enabledB) { const endA = new Date(durA.end).setHours(0, 0, 0, 0); const endB = new Date(durB.end).setHours(0, 0, 0, 0); const pastA = endA < today; const pastB = endB < today; if (pastA !== pastB) return pastB ? 1 : -1; } return a.obj.name.localeCompare(b.obj.name); }; case 'when-needed-ended-last': return (a, b) => { const isNeededA = a.obj.frequency === 'when-needed'; const isNeededB = b.obj.frequency === 'when-needed'; const durA = a.obj.duration; const durB = b.obj.duration; const isEndedA = !isNeededA && durA.enabled && new Date(durA.end).setHours(0, 0, 0, 0) < today; const isEndedB = !isNeededB && durB.enabled && new Date(durB.end).setHours(0, 0, 0, 0) < today; if (isEndedA !== isEndedB) return isEndedA ? 1 : -1; if (isNeededA !== isNeededB) return isNeededA ? 1 : -1; return a.obj.name.localeCompare(b.obj.name); }; default: return (a, b) => { return a.obj.name.localeCompare(b.obj.name); }; } } diegopvlk-Dosage-bd9126a/src/utils/000077500000000000000000000000001514145341100172365ustar00rootroot00000000000000diegopvlk-Dosage-bd9126a/src/utils/getHistoryExportFile.js000066400000000000000000000121271514145341100237420ustar00rootroot00000000000000import { clockIs12 } from './locale.js'; /** * Get the history CSV file. * * @param {Object} history - History JS Object * @param {boolean} isISO - Get with ISO date or not */ export function getHistoryCSV(history, isISO) { const header = [_('Date'), _('Time'), _('Name'), _('Dose'), _('Status'), _('Time Confirmed')]; const rows = history.map(med => { const time = new Date(); time.setHours(med.time[0]); time.setMinutes(med.time[1]); const timeString = time.toLocaleTimeString(undefined, { hour: 'numeric', minute: 'numeric', hour12: clockIs12, }); const dateTaken = new Date(med.taken[0]); const dateString = isISO ? dateTaken.toISOString().split('T')[0] : dateTaken.toLocaleDateString(undefined, { year: 'numeric', month: '2-digit', day: '2-digit', }); let timeConfirmedStr = ''; let status; switch (med.taken[1]) { case -1: status = _('Missed'); break; case 0: status = _('Skipped'); break; case 1: status = _('Confirmed'); timeConfirmedStr = new Date(med.taken[0]).toLocaleTimeString(undefined, { hour: 'numeric', minute: 'numeric', hour12: clockIs12, }); break; case 2: status = _('Auto-Confirmed'); break; case 3: status = _('Confirmed') + ` (${_('Time Unknown')})`; break; } const doseUnit = `${med.dose} ${med.unit}`; return [ `"${dateString}"`, `"${timeString}"`, `"${med.name.replace(/"/g, '""')}"`, `"${doseUnit.replace(/"/g, '""')}"`, `"${status}"`, `"${timeConfirmedStr}"`, ].join(','); }); return [header.join(','), ...rows].join('\n'); } /** * Get the history HTML file. * * @param {Object} history - History JS Object * @param {boolean} isISO - Get with ISO date or not */ export function getHistoryHTML(history, isISO) { const header = [_('Date'), _('Time'), _('Name'), _('Dose'), _('Status'), _('Time Confirmed')]; const thead = ` ${header.map(label => `${escapeHTML(label)}`).join('')} `; const tbodyRows = history .map(med => { const time = new Date(); time.setHours(med.time[0]); time.setMinutes(med.time[1]); const timeString = time.toLocaleTimeString(undefined, { hour: 'numeric', minute: 'numeric', hour12: clockIs12, }); const dateTaken = new Date(med.taken[0]); const dateString = isISO ? dateTaken.toISOString().split('T')[0] : dateTaken.toLocaleDateString(undefined, { year: 'numeric', month: '2-digit', day: '2-digit', }); let status; let timeConfirmedStr = ''; let statusClass = ''; switch (med.taken[1]) { case -1: status = _('Missed'); statusClass = 'status-missed'; break; case 0: status = _('Skipped'); statusClass = 'status-skipped'; break; case 1: status = _('Confirmed'); statusClass = 'status-confirmed'; timeConfirmedStr = new Date(med.taken[0]).toLocaleTimeString(undefined, { hour: 'numeric', minute: 'numeric', hour12: clockIs12, }); break; case 2: status = _('Auto-Confirmed'); statusClass = 'status-confirmed'; break; case 3: status = _('Confirmed') + ` (${_('Time Unknown')})`; statusClass = 'status-confirmed'; break; } const doseUnit = `${med.dose} ${med.unit}`; const cells = [dateString, timeString, med.name, doseUnit, status, timeConfirmedStr].map( escapeHTML, ); const statusCell = `${cells[4]}`; return ` ${cells[0]} ${cells[1]} ${cells[2]} ${cells[3]} ${statusCell} ${cells[5]} `; }) .join('\n'); const tbody = `\n${tbodyRows}\n`; const style = ` `; return minifyHTML(`${style} ${thead} ${tbody}
`); } function escapeHTML(str) { return String(str) .replace(/&/g, '&') .replace(//g, '>') .replace(/"/g, '"') .replace(/'/g, '''); } function minifyHTML(html) { return html .replace(/\s+/g, ' ') .replace(/\s*(<[^>]+>)\s*/g, '$1') .trim(); } diegopvlk-Dosage-bd9126a/src/utils/getTreatmentsExportFile.js000066400000000000000000000133211514145341100244240ustar00rootroot00000000000000import { clockIs12, getDayLabel } from './locale.js'; const escapeHTML = str => String(str) .replace(/&/g, '&') .replace(//g, '>') .replace(/"/g, '"') .replace(/'/g, '''); /** * Get the treatments HTML file. * * @param {Object} treatments - Treatments JS Object */ export function getTreatmentsHTML(treatments) { const now = Date.now(); const ongoingTreatments = []; const endedTreatments = []; const nonWhenNeededTreatments = treatments.filter(med => med.frequency !== 'when-needed'); const whenNeededTreatments = treatments.filter(med => med.frequency === 'when-needed'); nonWhenNeededTreatments.forEach(med => { if (med.duration.enabled && med.duration.end < now) { endedTreatments.push(med); } else { ongoingTreatments.push(med); } }); const mapColorToCSS = color => { const colorMap = { blue: 'light-dark(#3584e4, #6ab9ff)', red: 'light-dark(#e62d42, #ff7077)', yellow: 'light-dark(#c88800, #eba93d)', purple: 'light-dark(#9141ac, #e391ff)', cyan: 'light-dark(#2190a4, #64c8dd)', green: 'light-dark(#3a944a, #57e389)', orange: 'light-dark(#ed5b00, #ff8542)', default: 'light-dark(#4a4a52, #dfe0eb)', }; return colorMap[color]; }; const formatDate = timestamp => { return new Date(timestamp).toLocaleDateString(undefined, { year: 'numeric', month: 'short', day: 'numeric', }); }; const formatDosage = (dosage, unit) => { return dosage .map(d => { const timeFmt = new Intl.DateTimeFormat(undefined, { hour: 'numeric', minute: 'numeric', hour12: clockIs12, }); const time = new Date(); time.setHours(d.time[0]); time.setMinutes(d.time[1]); // TRANSLATORS: Context: 1 Pill at 19:00 return `${d.dose} ${escapeHTML(unit)} ${escapeHTML(_('at'))} ${timeFmt.format( time, )}`; }) .join('
'); }; const createTreatmentGroupHTML = (title, treatmentsArray, isWhenNeeded, hasEnded = false) => { if (treatmentsArray.length === 0) return ''; let html = `

`; html += `

${escapeHTML( title, )}

`; html += `
`; treatmentsArray.forEach(med => { const cardColor = mapColorToCSS(med.color); const notes = med.notes ? `

${escapeHTML( _('Notes'), )}: ${escapeHTML(med.notes)}

` : ''; let frequencyDisplay = ''; switch (med.frequency) { case 'daily': frequencyDisplay = escapeHTML(_('Daily')); break; case 'specific-days': frequencyDisplay = med.days.map(day => getDayLabel(day, 'long')).join(', '); break; case 'day-of-month': frequencyDisplay = escapeHTML(_('Day of Month')) + ': ' + med.monthDay; break; case 'cycle': const daysActive = med.cycle[0]; const daysInactive = med.cycle[1]; frequencyDisplay = `${daysActive} ${escapeHTML( // TRANSLATORS: Context: 2 day(s) on, 1 day(s) off _('day(s) on'), // TRANSLATORS: Context: 2 day(s) on, 1 day(s) off )}, ${daysInactive} ${escapeHTML(_('day(s) off'))}`; break; default: frequencyDisplay = ''; } let dosageHtml = ''; let durationHtml = ''; if (isWhenNeeded) { dosageHtml = `

${med.dosage[0].dose} ${escapeHTML(med.unit)} ${escapeHTML( _('As Needed'), )}

`; } else { dosageHtml = `

${formatDosage(med.dosage, med.unit)}

`; if (med.duration.enabled) { const startDate = formatDate(med.duration.start); const endDate = formatDate(med.duration.end); durationHtml = `

${escapeHTML(_('Duration'))}:
${ hasEnded ? `${escapeHTML(_('Started on'))} ${startDate}
` : `${escapeHTML(_('Start'))}: ${startDate}
` } ${hasEnded ? `${escapeHTML(_('Ended on'))} ${endDate}` : ` ${escapeHTML(_('End'))}: ${endDate}`}

`; } } html += `

${escapeHTML( med.name, )}


${hasEnded ? '' : `${escapeHTML(frequencyDisplay)}`}

${dosageHtml} ${notes} ${durationHtml}
`; }); html += `
`; return html; }; let title = escapeHTML(_('Dosage')) + ' - ' + escapeHTML(_('Treatments')); let fullHTML = ` ${title}

${title}

${escapeHTML(_('Generated on')) + ' ' + formatDate(Date.now())}

`; fullHTML += createTreatmentGroupHTML(escapeHTML(_('Ongoing')), ongoingTreatments, false); fullHTML += createTreatmentGroupHTML(escapeHTML(_('Non-scheduled')), whenNeededTreatments, true); fullHTML += createTreatmentGroupHTML(escapeHTML(_('Finished')), endedTreatments, false, true); fullHTML += `
`; return fullHTML; } diegopvlk-Dosage-bd9126a/src/utils/helpers.js000066400000000000000000000167221514145341100212460ustar00rootroot00000000000000/* * Copyright 2023 Diego Povliuk * SPDX-License-Identifier: GPL-3.0-only */ 'use strict'; import Gdk from 'gi://Gdk?version=4.0'; import Gio from 'gi://Gio?version=2.0'; import GLib from 'gi://GLib?version=2.0'; import GObject from 'gi://GObject?version=2.0'; import Gtk from 'gi://Gtk?version=4.0'; export const DataDir = Gio.file_new_for_path(GLib.build_filenamev([GLib.get_user_data_dir()])); export function addLeadZero(input) { return String(input).padStart(2, 0); } export function isValidTreatmentItem(it) { const item = it.obj ? it.obj : it; const isValidItem = typeof item.name === 'string' && item.name.trim() !== '' && // name cannot be empty typeof item.unit === 'string' && item.unit.trim() !== '' && // unit cannot be empty typeof item.notes === 'string' && typeof item.frequency === 'string' && // frequency cannot be empty item.frequency !== '' && // if frequency is 'specific-days', 'days' cannot be empty (item.frequency !== 'specific-days' || item.days.length > 0) && // if frequency is 'day-of-month', 'monthDay' cannot be empty (item.frequency !== 'day-of-month' || typeof item.monthDay === 'number') && typeof item.color === 'string' && item.color !== '' && // color cannot be empty typeof item.icon === 'string' && item.icon !== '' && // icon cannot be empty Array.isArray(item.days) && // days must contain only numbers item.days.every(day => typeof day === 'number') && Array.isArray(item.cycle) && item.cycle.length > 0 && // cycle cannot be empty // cycle must contain only numbers item.cycle.every(day => typeof day === 'number') && Array.isArray(item.dosage) && item.dosage.length > 0 && // dosage must have at least one object item.dosage.every( d => Array.isArray(d.time) && d.time.length === 2 && typeof d.time[0] === 'number' && typeof d.time[1] === 'number' && typeof d.dose === 'number' && (d.lastTaken === null || typeof d.lastTaken === 'string'), ) && typeof item.markConfirmed === 'boolean' && typeof item.notification === 'object' && typeof item.notification.increasePriority === 'boolean' && typeof item.notification.recurring === 'object' && typeof item.notification.recurring.enabled === 'boolean' && typeof item.notification.recurring.interval === 'number' && typeof item.inventory === 'object' && typeof item.inventory.enabled === 'boolean' && typeof item.inventory.current === 'number' && typeof item.inventory.reminder === 'number' && typeof item.inventory.refill === 'number' && typeof item.duration === 'object' && typeof item.duration.enabled === 'boolean' && typeof item.duration.start === 'number' && typeof item.duration.end === 'number' && // cycleNextDate is present only if frequency is 'cycle' (item.frequency !== 'cycle' || typeof item.cycleNextDate === 'string'); if (!isValidItem) { throw `Invalid treatment item\n\n${JSON.stringify(item)}`; } return true; } export function isValidHistoryItem(it) { const item = it.obj ? it.obj : it; const isValidItem = typeof item.name === 'string' && item.name.trim() !== '' && typeof item.unit === 'string' && item.unit.trim() !== '' && Array.isArray(item.time) && item.time.length === 2 && typeof item.time[0] === 'number' && typeof item.time[1] === 'number' && typeof item.dose === 'number' && typeof item.color === 'string' && item.color !== '' && Array.isArray(item.taken) && item.taken.length === 2 && typeof item.taken[0] === 'number' && typeof item.taken[1] === 'number'; if (!isValidItem) { throw `Invalid history item\n\n${JSON.stringify(item)}`; } return true; } /** * Create a valid temporary js object. * * @param {string} type - `"history"` or `"treatments"`. * @param {Gio.ListStore} listStore - The treatments or history ListStore * @param {boolean} lsIsEmpty - If the ListStore is empty, returns `{ [type]: [] } * */ export function createTempObj(type, listStore, lsIsEmpty) { const tempObj = {}; tempObj[type] = []; let isValid = false; if (lsIsEmpty) return tempObj; for (const it of listStore) { const item = it.obj; if (type === 'history') { isValid = isValidHistoryItem(it); } else { isValid = isValidTreatmentItem(it); } if (isValid) tempObj[type].push(item); else break; } if (isValid) { if (type === 'treatments') { tempObj.treatments.sort((a, b) => a.name.localeCompare(b.name)); } return tempObj; } } export function handleCalendarSelect(calendar, calendarRow, oneTime) { const today = GLib.DateTime.new_now_local().format('%F'); calendar.connect('day-selected', cal => handleSelect(cal)); calendar.connect('next-month', cal => handleSelect(cal)); calendar.connect('next-year', cal => handleSelect(cal)); calendar.connect('prev-month', cal => handleSelect(cal)); calendar.connect('prev-year', cal => handleSelect(cal)); function handleSelect(cal) { const selDate = cal.get_date().format('%F'); if (oneTime && selDate > today) { (async function () { cal.add_css_class('calendar-error'); await new Promise(res => setTimeout(res, 500)); cal.remove_css_class('calendar-error'); })(); cal.select_day(GLib.DateTime.new_now_local()); } calendarRow.subtitle = cal.get_date().format('%x'); } } export function isTodayMedDay( today, frequency, durationEnabled, start, end, cycle, days, monthDay, ) { if (durationEnabled && (start > today || end < today)) { return false; } switch (frequency) { case 'daily': return true; case 'specific-days': return days.includes(today.getDay()); case 'day-of-month': return monthDay === today.getDate(); case 'cycle': const [active, _inactive, current] = cycle; return current <= active; default: return false; } } export function datesPassedDiff(startDate, endDate) { const start = new Date(startDate).setHours(0, 0, 0, 0); const end = new Date(endDate).setHours(0, 0, 0, 0); const daysDiff = Math.floor((end - start) / 86400000); const datesPassed = []; for (let i = 1; i <= daysDiff; i++) { const currentDate = new Date(startDate); currentDate.setHours(0, 0, 0, 0); currentDate.setDate(currentDate.getDate() + i); datesPassed.push(currentDate); } return datesPassed; } export function addSaveKeyControllerToDialog(dialog, saveBtn) { const keyController = new Gtk.EventControllerKey(); keyController.connect('key-pressed', (_, keyval, keycode, state) => { const shiftPressed = (state & Gdk.ModifierType.SHIFT_MASK) !== 0; const controlPressed = (state & Gdk.ModifierType.CONTROL_MASK) !== 0; const enterPressed = keyval === Gdk.KEY_Return; if ((controlPressed || shiftPressed) && enterPressed && saveBtn.sensitive) { saveBtn.activate(); } }); dialog.add_controller(keyController); } export const HistorySectionSorter = GObject.registerClass( {}, class HistorySectionSorter extends Gtk.Sorter { vfunc_compare(a, b) { const dtA = new Date(a.obj.taken[0]).setHours(0, 0, 0, 0); const dtB = new Date(b.obj.taken[0]).setHours(0, 0, 0, 0); return dtA === dtB ? 0 : dtA < dtB ? 1 : -1; } }, ); export const TodaySectionSorter = GObject.registerClass( {}, class TodaySectionSorter extends Gtk.Sorter { vfunc_compare(a, b) { let [h1, m1] = a.obj.time; let [h2, m2] = b.obj.time; const wnA = a.obj.frequency === 'when-needed'; const wnB = b.obj.frequency === 'when-needed'; if (wnA) [h1, m1] = [-1, -1]; if (wnB) [h2, m2] = [-1, -1]; const hm1 = `${addLeadZero(h1)}${addLeadZero(m1)}`; const hm2 = `${addLeadZero(h2)}${addLeadZero(m2)}`; return hm1 === hm2 ? 0 : hm1 > hm2 ? 1 : -1; } }, ); diegopvlk-Dosage-bd9126a/src/utils/locale.js000066400000000000000000000105421514145341100210350ustar00rootroot00000000000000/* * Copyright 2023 Diego Povliuk * SPDX-License-Identifier: GPL-3.0-only */ 'use strict'; import GLib from 'gi://GLib?version=2.0'; import Xdp from 'gi://Xdp?version=1.0'; const decoder = new TextDecoder(); export const [firstWeekday, firstWorkDay] = getWeekdays(); export const [clockIs12, amPmStr, timeDot, timeFormat, dateFormat] = checkLocale(); export function getDayLabel(day, long) { const now = GLib.DateTime.new_now_local(); const date = now.add_days((day - now.get_day_of_week() + 7) % 7); const dayLabel = date.format(long ? '%A' : '%a'); return dayLabel.charAt(0).toUpperCase() + dayLabel.slice(1); } export function getSpecificDaysLabel(item) { const workdays = Array.from({ length: 5 }, (_, idx) => (firstWorkDay + idx) % 7); const weekends = [0, 6].filter(day => !workdays.includes(day)); const isWeekend = item.days.every(day => weekends.includes(day)); const isWeekdays = item.days.every(day => workdays.includes(day)); const days = item.days; let newLabel; if (item.days.length === 1) { newLabel = getDayLabel(item.days[0], 'long'); } else if (isWeekend && item.days.length === 2) { newLabel = _('Weekends'); } else if (isWeekdays && item.days.length === 5) { newLabel = _('Weekdays'); } else if (item.days.length === 7) { newLabel = _('Daily'); } else { const sortedDays = []; for (let i = 0; i < 7; i++) { const idx = (firstWeekday + i) % 7; if (days.includes(idx)) sortedDays.push(idx); } newLabel = sortedDays.map(day => getDayLabel(day)).join(', '); } return newLabel; } function getWeekdays() { let firstWeekday = 0; let firstWorkDay = 1; try { const [, weekdayOutput] = GLib.spawn_command_line_sync('locale first_weekday'); const [, workDayOutput] = GLib.spawn_command_line_sync('locale first_workday'); // minus 1 because `locale` days are 1 to 7 firstWeekday = +decoder.decode(weekdayOutput) - 1; firstWorkDay = +decoder.decode(workDayOutput) - 1; } catch (error) { console.error(error); } return [firstWeekday, firstWorkDay]; } // can't use Intl.DateTimeFormat, toLocaleDateString or toLocaleTimeString // in historyFactory, it crashes the snap (old gjs version?) // plus GLib.DateTime is a bit faster function getDateFormat(locale) { const formattedDateParts = new Intl.DateTimeFormat(locale, { weekday: 'long', month: 'short', day: 'numeric', year: 'numeric', }).formatToParts(new Date()); const formatMapping = { weekday: '%A', month: '%b', day: '%-e', year: '%Y', literal: '', }; let dateFormat = ''; formattedDateParts.forEach(part => { if (formatMapping[part.type]) { dateFormat += formatMapping[part.type]; } else if (part.type === 'literal') { dateFormat += part.value; // literals (commas, "o'clock", "de", etc) } }); const dateTime = GLib.DateTime.new_now_local(); const monthDT = dateTime.format('%b'); const monthPart = formattedDateParts.find(part => part.type === 'month'); if (monthPart && monthPart.value.endsWith('.') && !monthDT.endsWith('.')) { dateFormat = dateFormat.replace('%b', '%b.'); } return dateFormat; } function checkLocale() { const systemOpts = new Intl.DateTimeFormat().resolvedOptions(); const locale = systemOpts.locale; let is12 = false; let amPmStr = 'AM;PM'; let timeDot = false; let timeFormat = '%H:%M'; let dateFormat = getDateFormat(locale); try { const portal = new Xdp.Portal(); const currentDesktop = GLib.getenv('XDG_CURRENT_DESKTOP'); const isGnome = currentDesktop && currentDesktop === 'GNOME'; const [, outputAmPm] = GLib.spawn_command_line_sync('locale am_pm'); const [, outputTimeFmt] = GLib.spawn_command_line_sync('locale t_fmt'); const outTimeFormat = decoder.decode(outputTimeFmt).replace('\n', ''); const outAmPm = decoder.decode(outputAmPm).replace('\n', ''); amPmStr = outAmPm === ';' ? amPmStr : outAmPm; amPmStr = amPmStr.split(';'); is12 = outTimeFormat.includes('%r') || outTimeFormat.includes('%p') || outTimeFormat.includes('%P'); if (isGnome) { const sett = portal.get_settings(); const clockFormat = sett.read_string('org.gnome.desktop.interface', 'clock-format', null); is12 = clockFormat === '12h' ? true : false; } timeFormat = is12 ? '%-I:%M %p' : '%H:%M'; timeDot = outTimeFormat.includes('.'); if (timeDot) { timeFormat = timeFormat.replace(':', '.'); } } catch (error) { console.error(error); } return [is12, amPmStr, timeDot, timeFormat, dateFormat]; } diegopvlk-Dosage-bd9126a/src/utils/saveFiles.js000066400000000000000000000034221514145341100215160ustar00rootroot00000000000000import Gio from 'gi://Gio?version=2.0'; import Gtk from 'gi://Gtk?version=4.0'; import { getDosageWindow } from '../main.js'; import { historyLS, treatmentsLS } from '../window.js'; import { getHistoryCSV, getHistoryHTML } from './getHistoryExportFile.js'; import { getTreatmentsHTML } from './getTreatmentsExportFile.js'; import { createTempObj } from './helpers.js'; /** Utility: encode string to Uint8Array */ const encode = str => new TextEncoder().encode(str); /** * Save history in the selected file format. * * @param {boolean} iso - Include ISO timestamps * @param {boolean} html - Export as HTML (otherwise CSV) */ export async function saveHistFile(iso, html) { const window = getDosageWindow(); try { const baseName = `${_('Dosage')}_${_('History')}${iso ? '_ISO' : ''}`; const ext = html ? '.html' : '.csv'; const dialog = new Gtk.FileDialog({ initial_name: baseName + ext }); const file = await dialog.save(window, null); const { history } = createTempObj('history', historyLS); const data = html ? getHistoryHTML(history, iso) : getHistoryCSV(history, iso); await file.replace_contents_async(encode(data), null, false, Gio.FileCreateFlags.NONE, null); } catch (error) { console.error(error); } } /** * Save treatments as a HTML file. * */ export async function saveTreatFile() { const window = getDosageWindow(); try { const baseName = `${_('Dosage')}_${_('Treatments')}`; const dialog = new Gtk.FileDialog({ initial_name: `${baseName}.html` }); const file = await dialog.save(window, null); const { treatments } = createTempObj('treatments', treatmentsLS); const data = getTreatmentsHTML(treatments); await file.replace_contents_async(encode(data), null, false, Gio.FileCreateFlags.NONE, null); } catch (error) { console.error(error); } } diegopvlk-Dosage-bd9126a/src/utils/upgradeItems.js000066400000000000000000000077461514145341100222430ustar00rootroot00000000000000// change old versions for compatibility export function upgradeItems(json, type) { if (type === 'treatments') { return updateContents(json.version, treatmentsUpdates, json); } else { return updateContents(json.version, historyUpdates, json); } } function updateContents(currVersion, fileUpdates, json) { const currIndex = fileUpdates.findIndex(update => update.version === currVersion); // if !version, start from the beginning if (currIndex === -1) { for (const update of fileUpdates) { json = update.updateFunc(json); } } else { // start from the next version update for (let i = currIndex + 1; i < fileUpdates.length; i++) { json = fileUpdates[i].updateFunc(json); } } json.version = fileUpdates[fileUpdates.length - 1].version; // return json if it updates if (json.version !== currVersion) { return json; } else { return null; } } const treatmentsUpdates = [ { version: 0, updateFunc: json => oldUpgrade(json, 'treatments') }, { version: 1, updateFunc: json => { const settPriority = settings.get_boolean('priority'); json.treatments.forEach(item => { item.notification = {}; item.notification.increasePriority = settPriority ? true : false; item.notification.recurring = { ...item.recurring }; item.inventory.refill = 30; delete item.recurring; item.markConfirmed = false; }); return json; }, }, ]; const historyUpdates = [ { version: 0, updateFunc: json => oldUpgrade(json, 'history') }, { version: 1, updateFunc: json => json, }, ]; function oldUpgrade(json, type) { if (type === 'treatments' && json.meds) { const newTreatments = { treatments: [], lastUpdate: '', }; json.meds.forEach(item => { const info = item.info || item._info; const dur = info.duration; const icon = info.icon.replace('-symbolic', ''); info.dosage.forEach(d => { d.lastTaken = null; delete d.updated; }); // change to int and to parse in ms instead of seconds if (typeof dur.start === 'string') { dur.start = +dur.start * 1000; // add duration.end if doesn't exist dur.end = +dur.end * 1000 || dur.start; } if (!info.lastUpdate) { info.lastUpdate = new Date().toISOString(); } // v1.1.0 only has recurring: boolean const rcEnabled = info.recurring?.enabled || info.recurring === true; const rcInterval = info.recurring?.interval || 5; const newMed = { name: item.name || item._name, unit: item.unit || item._unit, notes: info.notes, frequency: info.frequency, color: info.color, icon: icon, days: info.days, cycle: info.cycle, dosage: info.dosage, recurring: { enabled: rcEnabled, interval: rcInterval, }, inventory: info.inventory, duration: info.duration, }; newTreatments.lastUpdate = info.lastUpdate; newTreatments.treatments.push(newMed); }); return newTreatments; } else if (type === 'treatments') { json.treatments.forEach(item => { if (!('enabled' in item.inventory)) { item.inventory.enabled = false; // #73 } }); return json; } if (type === 'history' && json.meds) { const newHistory = { history: [], }; json.meds.forEach(item => { const date = item.date || item._date; const info = item.info || item._info; const taken = item.taken || item._taken; const takenValue = taken === 'yes' ? 1 : taken === 'no' ? 0 : -1; newHistory.history.push({ name: item.name || item._name, unit: item.unit || item._unit, time: info.time, dose: info.dose, color: item.color || item._color, taken: [new Date(date).getTime(), takenValue], }); }); return newHistory; } else if (type === 'history' && !Array.isArray(json.history)) { const newHistory = { history: [], }; const historyObj = json.history; const historyKeys = Object.keys(historyObj); historyKeys.forEach(dateKey => { historyObj[dateKey].forEach(item => { newHistory.history.push(item); }); }); return newHistory; } else if (type === 'history') { return json; } } diegopvlk-Dosage-bd9126a/src/window.js000066400000000000000000001270441514145341100177530ustar00rootroot00000000000000/* * Copyright 2023 Diego Povliuk * SPDX-License-Identifier: GPL-3.0-only */ 'use strict'; import Adw from 'gi://Adw?version=1'; import Gdk from 'gi://Gdk?version=4.0'; import Gio from 'gi://Gio?version=2.0'; import GLib from 'gi://GLib?version=2.0'; import GObject from 'gi://GObject?version=2.0'; import Gtk from 'gi://Gtk?version=4.0'; import { EditHistDialog } from './editHistDialog.js'; import { historyHeaderFactory, historyItemFactory } from './historyFactory.js'; import { MedDialog } from './medDialog.js'; import { MedicationObject } from './medication.js'; import { OneTimeDialog } from './oneTimeDialog.js'; import { todayHeaderFactory, todayItemFactory } from './todayFactory.js'; import { treatmentsFactory } from './treatmentsFactory.js'; import { sortTreatFunc, sortTreatments } from './treatmentsSorter.js'; import { timeFormat } from './utils/locale.js'; import { upgradeItems } from './utils/upgradeItems.js'; import { DataDir, HistorySectionSorter, TodaySectionSorter, createTempObj, datesPassedDiff, isTodayMedDay, isValidHistoryItem, isValidTreatmentItem, } from './utils/helpers.js'; export const historyLS = Gio.ListStore.new(MedicationObject); export const treatmentsLS = Gio.ListStore.new(MedicationObject); export const DosageWindow = GObject.registerClass( { GTypeName: 'DosageWindow', Template: 'resource:///io/github/diegopvlk/Dosage/ui/window.ui', InternalChildren: [ 'todayList', 'toggleHistAmountBtn', 'removeHistItemsBtn', 'unselectHistItemsBtn', 'historyList', 'treatmentsList', 'treatmentsPage', 'buttonTreatmentsSorter', 'emptyToday', 'emptyHistory', 'emptyTreatments', 'spinnerToday', 'skipBtn', 'entryBtn', 'entryBtnContent', 'unselectBtn', 'viewStack', 'btnWhenNeeded', 'buttonSearch', 'searchBar', 'searchEntry', ], }, class DosageWindow extends Adw.ApplicationWindow { constructor(application) { super({ application }); this.#loadSettings(); this.#start(); this.#clockTick(); } #loadSettings() { this.app = this.get_application(); settings.bind('window-width', this, 'default-width', Gio.SettingsBindFlags.DEFAULT); settings.bind('window-height', this, 'default-height', Gio.SettingsBindFlags.DEFAULT); settings.connect('changed::clear-old-hist', (sett, key) => { if (sett.get_boolean(key) === true) { this.clearOldHistoryEntries(); this.setShowHistoryAmount(); this.updateJsonFile('history', historyLS); } }); } #start() { const load = () => { this.loadData(); this.withdrawPastNotifications(); this.updateCycleAndLastUp(); this.updateJsonFile('treatments', treatmentsLS); this.loadToday(); this._spinnerToday.set_visible(false); this.handleSuspension(); this.scheduleNotifications(); this.checkInventory(); }; const loadPromise = new Promise((resolve, reject) => resolve()); loadPromise.then(_ => { setTimeout(() => load(), 100); }); } withdrawPastNotifications() { // these are from the closed app // meaning the actions doesn't work, so remove then const prevDate = new Date(this.lastUpdate); prevDate.setDate(prevDate.getDate() - 1); for (const it of treatmentsLS) { const item = it.obj; for (const timeDose of item.dosage) { const currentDate = new Date(); while (currentDate > prevDate) { const dateKey = currentDate.setHours(timeDose.time[0], timeDose.time[1], 0, 0); this.app.withdraw_notification(String(dateKey)); currentDate.setDate(currentDate.getDate() - 1); } } } } loadData() { const treatmentsFile = DataDir.get_child('dosage-treatments.json'); const historyFile = DataDir.get_child('dosage-history.json'); this.createOrLoadJson('treatments', treatmentsFile); this.createOrLoadJson('history', historyFile); if (this.addMissedItems() | this.clearOldHistoryEntries()) { this.updateJsonFile('history', historyLS); } } checkInventory(isNotifAction) { this._treatmentsPage.set_needs_attention(false); this._treatmentsPage.badge_number = 0; let notify = false; for (const it of treatmentsLS) { const item = it.obj; const whenNeeded = item.frequency === 'when-needed'; const today = new Date().setHours(0, 0, 0, 0); const end = new Date(item.duration.end).setHours(0, 0, 0, 0); const ended = item.duration.enabled && end < today; const inv = item.inventory; if (inv.enabled && inv.current <= inv.reminder) { this._treatmentsPage.set_needs_attention(true); this._treatmentsPage.badge_number += 1; if (!notify) notify = !ended && !whenNeeded; } } if (!settings.get_boolean('low-stock-notif')) return; const [notification, app] = this.getNotification(); const icon = Gio.ThemedIcon.new_from_names([ 'emblem-important-symbolic', 'dialog-information-symbolic', ]); notification.set_icon(icon); app.withdraw_notification('low-stock'); if (!isNotifAction && notify) { notification.set_title(_('Reminder')); // TRANSLATORS: Notification text for when the inventory is low notification.set_body(_('You have treatments low in stock')); app.send_notification('low-stock', notification); } } #clockTick() { this.today = new Date(); let lastDate = new Date().setHours(0, 0, 0, 0); const tick = () => { const now = new Date().setHours(0, 0, 0, 0); // update everything at next midnight if (now > lastDate) { this.clearOldHistoryEntries(); this.addMissedItems(); this.updateEverything(); this.scrollHistToTop(); this.scheduleNotifications(); sortTreatments(settings.get_string('treatments-sorting')); lastDate = now; } }; setInterval(tick, 2500); } handleSuspension() { const onWakingUp = () => this.scheduleNotifications('sleep'); this._connection = Gio.bus_get_sync(Gio.BusType.SYSTEM, null); this._connection.signal_subscribe( 'org.freedesktop.login1', 'org.freedesktop.login1.Manager', 'PrepareForSleep', '/org/freedesktop/login1', null, Gio.DBusSignalFlags.NONE, onWakingUp, ); } createOrLoadJson(fileType, file) { const filePath = file.get_path(); if (!file.query_exists(null)) { try { this.createNewFile(filePath, fileType); log(`New ${fileType} file created at: ${filePath}`); } catch (err) { console.error(`Failed to create new ${fileType} file: ${err}`); } } this.loadJsonContents(fileType, filePath); } createNewFile(filePath, fileType) { const file = Gio.File.new_for_path(filePath); const flags = Gio.FileCreateFlags.NONE; const fileStream = file.create(flags, null); if (!fileStream) { throw new Error('Failed to create the file:', filePath); } const outputStream = new Gio.DataOutputStream({ base_stream: fileStream, }); if (fileType === 'treatments') { this.lastUpdate = new Date().toISOString(); outputStream.put_string(`{ "treatments": [], "lastUpdate": "${this.lastUpdate}" }`, null); } else if (fileType === 'history') { outputStream.put_string('{ "history": {} }', null); } outputStream.close(null); fileStream.close(null); } loadJsonContents(fileType, filePath) { const file = Gio.File.new_for_path(filePath); const decoder = new TextDecoder('utf8'); this.errDialog = new Adw.AlertDialog({ heading: _('An Issue Has Occurred'), }); try { const [success, contents] = file.load_contents(null); if (!success) { const errStr = 'Failed to read file contents.'; this.errDialog.body = errStr; this.errDialog.add_response('close', _('Close')); this.errDialog.present(this); console.error(errStr); return; } let allValid = false; const contentString = decoder.decode(contents); const json = JSON.parse(contentString); switch (fileType) { case 'treatments': const upgradedTreatments = upgradeItems(json, fileType); const treatData = upgradedTreatments || json; try { for (const it of treatData.treatments) { allValid = isValidTreatmentItem(it); if (!allValid) break; } } catch (err) { this.errDialog.body = err; this.errDialog.add_response('close', _('Close')); this.errDialog.present(this); console.error(err); return; } this.loadTreatments(treatData); this.lastUpdate = treatData.lastUpdate; this.treatmentsVersion = treatData.version; return; case 'history': const upgradedHistory = upgradeItems(json, fileType); const histData = upgradedHistory || json; try { for (const it of histData.history) { allValid = isValidHistoryItem(it); if (!allValid) break; } } catch (err) { this.errDialog.body = err; this.errDialog.add_response('close', _('Close')); this.errDialog.present(this); console.error(err); return; } this.historyVersion = histData.version; this.loadHistory(upgradedHistory || histData); if (upgradedHistory) { this.updateJsonFile('history', historyLS); } return; } } catch (err) { const errStr = `Error reading ${fileType} file.`; this.errDialog.body = errStr; this.errDialog.add_response('close', _('Close')); this.errDialog.present(this); console.error(errStr, err); } } loadTreatments(treatmentsJson) { try { if (treatmentsLS.get_n_items() === 0) { treatmentsJson.treatments.forEach(med => { treatmentsLS.insert_sorted( new MedicationObject({ obj: { name: med.name, unit: med.unit, notes: med.notes, frequency: med.frequency, color: med.color, icon: med.icon, days: med.days, monthDay: med.monthDay, cycle: med.cycle, dosage: med.dosage, notification: med.notification, inventory: med.inventory, duration: med.duration, cycleNextDate: med.cycleNextDate, markConfirmed: med.markConfirmed, }, }), sortTreatFunc(settings.get_string('treatments-sorting')), ); }); this._treatmentsList.set_factory(treatmentsFactory); this._treatmentsList.remove_css_class('view'); this._treatmentsList.add_css_class('background'); this._treatmentsList.model = new Gtk.NoSelection({ model: treatmentsLS, }); const keyController = new Gtk.EventControllerKey(); const entry = new Gtk.Entry(); this.add_controller(keyController); // press letter to jump to first item with the same letter keyController.connect('key-pressed', (_, keyval, keycode, state) => { if (this._viewStack.visible_child_name !== 'treatments-page') return; const unicodeChar = Gdk.keyval_to_unicode(keyval); const keyName = String.fromCharCode(unicodeChar); if (unicodeChar && keyName) { entry.text += keyName; for (const it of treatmentsLS) { const name = it.obj.name; const entryTxt = entry.text.toLowerCase(); const nameMatch = name.toLowerCase().startsWith(entryTxt); if (nameMatch) { const pos = treatmentsLS.find(it)[1]; this._treatmentsList.scroll_to(pos, Gtk.ListScrollFlags.FOCUS, null); entry.set_text(''); return; } } entry.set_text(''); } }); } } catch (err) { console.error('Error loading treatments:', err); this.errorLoading = true; } } removeHistItems() { const today = new Date().setHours(0, 0, 0, 0); const positionsToRm = []; for (const item of this.histItemsToRm) { const position = historyLS.find(item)[1]; positionsToRm.push(position); const itemRm = item.obj; const removedDt = new Date(itemRm.taken[0]); const date = removedDt.setHours(0, 0, 0, 0); if (date !== today) continue; for (const it of treatmentsLS) { const item = it.obj; const sameItem = item.name === itemRm.name; if (sameItem) { item.dosage.forEach(timeDose => { const sameName = item.name === itemRm.name; const sameTime = String(timeDose.time) === String(itemRm.time); // update lastTaken when removing an item // with the same name, time and date of today item if (sameName && sameTime) { timeDose.lastTaken = null; } }); const updateInv = item.inventory.enabled && (itemRm.taken[1] === 1 || itemRm.taken[1] === 2); if (updateInv) { item.inventory.current += itemRm.dose; } // trigger signal to update labels it.notify('obj'); break; } } } // important for performance and removing in the right order (descending) positionsToRm.sort((a, b) => b - a); for (const position of positionsToRm) { historyLS.splice(position, 1, []); } this.unselectHistItems(); this.updateEverything({ skipCycleUp: true, histIsEmpty: historyLS.n_items === 0 }); this.scheduleNotifications('removing'); } unselectHistItems() { this.histMultiSelect.unselect_all(); this.histItemsToRm.length = 0; this._removeHistItemsBtn.visible = false; this._unselectHistItemsBtn.visible = false; this._toggleHistAmountBtn.visible = this.histMoreThan7Sect && !this.histQuery; } histHasMoreThan7Sect() { const dates = new Set(); const itemDate = new Date(); for (const it of historyLS) { itemDate.setTime(it.obj.taken[0]); const date = itemDate.setHours(0, 0, 0, 0); if (!dates.has(date)) dates.add(date); if (dates.size > 7) return true; } } setShowHistoryAmount() { if (this.histQuery) return; this.unselectHistItems(); const moreThan7Sect = this.histMoreThan7Sect; this._toggleHistAmountBtn.visible = moreThan7Sect; this._toggleHistAmountBtn.label = _('Show All'); if (moreThan7Sect) { this._historyList.remove_css_class('list-no-extra-padding-bottom'); } else { this._historyList.add_css_class('list-no-extra-padding-bottom'); } if (!this.showAllHist && moreThan7Sect) { const dates = new Set(); const itemDate = new Date(); this.historyFilter.set_filter_func(item => { itemDate.setTime(item.obj.taken[0]); const date = itemDate.setHours(0, 0, 0, 0); if (!dates.has(date)) { dates.add(date); } return dates.size <= 7; }); } else if (this.showAllHist) { this._toggleHistAmountBtn.label = _('Show Less'); this.historyFilter.set_filter_func(null); } else { this._toggleHistAmountBtn.visible = false; this.historyFilter.set_filter_func(null); } } toggleHistoryAmount() { this.showAllHist = !this.showAllHist; this.setShowHistoryAmount(); } async loadHistory(historyJson) { try { if (!historyLS.get_item(0)) { historyJson.history.sort((a, b) => b.taken[0] - a.taken[0]); historyJson.history.forEach(med => { historyLS.append(new MedicationObject({ obj: med })); }); this.historyFilter = new Gtk.CustomFilter(); this.filterHistoryModel = new Gtk.FilterListModel({ model: historyLS, filter: this.historyFilter, }); this.setHistorySearch(); const sortedHistModelPromise = new Promise(resolve => { setTimeout(() => { resolve( (this.sortedHistoryModel = new Gtk.SortListModel({ model: this.filterHistoryModel, section_sorter: new HistorySectionSorter(), })), ); }, 200); }); sortedHistModelPromise.then(_ => { this.histMultiSelect = new Gtk.MultiSelection({ model: this.sortedHistoryModel, }); this._historyList.model = this.histMultiSelect; this.histItemsToRm = []; this.setShowHistoryAmount(); this.histMultiSelect.connect('selection-changed', (selModel, position, nItems) => { this.histItemsToRm.length = 0; const selectionBitset = selModel.get_selection(); const maxSize = selectionBitset.get_maximum(); for (let i = 0; i <= maxSize; i++) { if (selectionBitset.contains(i)) { const itRm = selModel.get_item(i); this.histItemsToRm.push(itRm); } } const noItems = this.histItemsToRm.length === 0; this._removeHistItemsBtn.visible = !noItems; this._unselectHistItemsBtn.visible = !noItems; this._toggleHistAmountBtn.visible = noItems && this.histMoreThan7Sect && !this.histQuery; }); }); this._historyList.remove_css_class('view'); this._historyList.add_css_class('background'); this._historyList.set_header_factory(historyHeaderFactory); this._historyList.set_factory(historyItemFactory); const app = this.app; this.showSearchAction = new Gio.SimpleAction({ name: 'showSearch' }); app.set_accels_for_action('app.showSearch', ['f']); app.add_action(this.showSearchAction); historyLS.connect('items-changed', (model, pos, removed, added) => { if (!historyLS.get_item(0)) { this._searchBar.search_mode_enabled = false; this.setEmptyHistStatus(); app.remove_action('showSearch'); } else { const histVisible = this._viewStack.visible_child_name === 'history-page'; this._buttonSearch.sensitive = true; this._buttonSearch.visible = histVisible; app.add_action(this.showSearchAction); this.histMoreThan7Sect = this.histHasMoreThan7Sect(); } }); const keyController = new Gtk.EventControllerKey(); // to select item to be removed with ctrl pressed keyController.connect('key-pressed', (_, keyval, keycode, state) => { if (keyval === Gdk.KEY_Control_L || keyval === Gdk.KEY_Control_R) { this.ctrlPressed = true; } }); keyController.connect('key-released', (_self, keyval, _keycode, _state) => { if (keyval === Gdk.KEY_Control_L || keyval === Gdk.KEY_Control_R) { this.ctrlPressed = false; } }); this._historyList.add_controller(keyController); } } catch (err) { console.error('Error loading history:', err); this.errorLoading = true; } this.setEmptyHistStatus(); } setHistorySearch() { this._buttonSearch.connect('clicked', () => { this._searchBar.search_mode_enabled = !this._searchBar.search_mode_enabled; }); this._searchBar.connect('notify::search-mode-enabled', searchBar => { this._buttonSearch.active = searchBar.search_mode_enabled; }); this.filterHistoryModel.connect('items-changed', () => { let noResults = !this.filterHistoryModel.get_item(0); this._emptyHistory.visible = noResults ? true : false; this._emptyHistory.title = noResults ? _('No Results Found') : _('No History'); }); this._searchEntry.connect('search-changed', () => { const removeDiacritics = str => { return str .toLowerCase() .normalize('NFD') .replace(/[\u0300-\u036f]/g, ''); }; const query = removeDiacritics(this._searchEntry.text.trim()); if (!query) { this.histQuery = false; this.showAllHist = false; this.setShowHistoryAmount(); this._emptyHistory.visible = false; this.scrollHistToTop(); return; } else { this.histQuery = true; } this._toggleHistAmountBtn.visible = false; this.historyFilter.set_filter_func(item => { const itemName = removeDiacritics(item.obj.name); return itemName.includes(query); }); }); this._viewStack.connect('notify::visible-child', viewStack => { const todayVisible = viewStack.visible_child_name === 'today-page'; this._btnWhenNeeded.visible = todayVisible && this.hasWhenNeeded; const histVisible = viewStack.visible_child_name === 'history-page'; this._buttonSearch.visible = histVisible; this._searchBar.visible = histVisible; const treatmentsVisible = viewStack.visible_child_name === 'treatments-page'; this._buttonTreatmentsSorter.visible = treatmentsVisible; if (histVisible) { this.showSearchAction.connect('activate', () => { this._searchBar.search_mode_enabled = true; this._searchEntry.grab_focus(); }); } }); } loadToday() { this.todayItems = []; if (!this.todayLS) { this._todayList.remove_css_class('view'); this._todayList.add_css_class('background'); this._todayList.set_header_factory(todayHeaderFactory); this._todayList.set_factory(todayItemFactory); this.todayFilter = Gtk.CustomFilter.new(it => { return settings.get_boolean('show-when-needed') || it.obj.frequency !== 'when-needed'; }); this.todayLS = Gio.ListStore.new(MedicationObject); this.filterTodayModel = new Gtk.FilterListModel({ model: this.todayLS, filter: this.todayFilter, }); this.sortedTodayModel = new Gtk.SortListModel({ model: this.filterTodayModel, section_sorter: new TodaySectionSorter(), }); this.todayMultiSelect = new Gtk.MultiSelection({ model: this.sortedTodayModel, }); this._todayList.model = this.todayMultiSelect; this.todayMultiSelect.connect('selection-changed', (selModel, position, nItems) => { this.todayItems.length = 0; const selectionBitset = selModel.get_selection(); const maxSize = selectionBitset.get_maximum(); for (let i = 0; i <= maxSize; i++) { if (selectionBitset.contains(i)) { const item = selModel.get_item(i); this.todayItems.push(item); } } const hasTodayItems = this.todayItems.length > 0; this.updateEntryBtn(hasTodayItems); }); } this.todayLS.remove_all(); this.hasWhenNeeded = false; const tempList = []; const today = new Date(); today.setHours(0, 0, 0, 0); for (const it of treatmentsLS) { const item = it.obj; const start = new Date(item.duration.start).setHours(0, 0, 0, 0); const end = new Date(item.duration.end).setHours(0, 0, 0, 0); const isWhenNd = item.frequency === 'when-needed'; for (const timeDose of item.dosage) { const noLastTk = timeDose.lastTaken === null; const isMedDay = isTodayMedDay( today, item.frequency, item.duration.enabled, start, end, item.cycle, item.days, item.monthDay, ); if ((isMedDay && noLastTk) || isWhenNd) { tempList.push( new MedicationObject({ obj: { name: item.name, unit: item.unit, notes: item.notes, color: item.color, icon: item.icon, notification: item.notification, time: [timeDose.time[0], timeDose.time[1]], dose: timeDose.dose, originalDose: timeDose.dose, frequency: isWhenNd ? 'when-needed' : undefined, dateTodayLS: new Date(), originalDose: timeDose.dose, }, }), ); } // only one dose if (isWhenNd) { this.hasWhenNeeded = true; break; } } } this.todayLS.splice(0, 0, tempList); this.todayLS.sort((a, b) => { return a.obj.name.localeCompare(b.obj.name); }); const noItems = this.sortedTodayModel.get_n_items() === 0; const noTreatments = this._treatmentsList.model.get_n_items() === 0; this._buttonTreatmentsSorter.set_sensitive(!noTreatments); this._emptyTreatments.set_visible(noTreatments); this._emptyToday.set_visible(noItems); this._emptyToday.icon_name = noTreatments ? 'pill-symbolic' : 'all-done-symbolic'; this._emptyToday.title = noTreatments ? _('No Treatments') : _('All Done for Today'); const todayVisible = this._viewStack.visible_child_name === 'today-page'; this._btnWhenNeeded.visible = todayVisible && this.hasWhenNeeded; this._btnWhenNeeded.active = settings.get_boolean('show-when-needed'); if (!noItems) this._todayList.scroll_to(0, null, null); } scrollHistToTop() { setTimeout(() => { this._historyList.scroll_to(0, null, null); }, 100); } clearOldHistoryEntries() { if (!settings.get_boolean('clear-old-hist')) return; const itemsHolder = {}; for (const it of historyLS) { const item = it.obj; const dateKey = new Date(item.taken[0]).setHours(0, 0, 0, 0); if (!itemsHolder[dateKey]) { itemsHolder[dateKey] = []; } itemsHolder[dateKey].push(new MedicationObject({ obj: item })); } historyLS.remove_all(); const dateKeys = Object.keys(itemsHolder).sort((a, b) => b.localeCompare(a)); for (const date of dateKeys.slice(0, 30)) { const itemsToAdd = itemsHolder[date]; historyLS.splice(0, 0, itemsToAdd); historyLS.sort((a, b) => { const dtA = new Date(a.obj.taken[0]).setHours(0, 0, 0, 0); const dtB = new Date(b.obj.taken[0]).setHours(0, 0, 0, 0); return dtA === dtB ? 0 : dtA < dtB ? 1 : -1; }); } return true; } scheduleNotifications(action) { for (const id in this.scheduledItems) { clearTimeout(this.scheduledItems[id]); } this.scheduledItems = {}; this.todayGroupedObj = {}; const todayLength = this.todayMultiSelect.n_items; for (let i = 0; i < todayLength; i++) { const item = this.todayMultiSelect.get_item(i).obj; if (item.frequency !== 'when-needed') { this.groupTodayList(this.todayMultiSelect.get_item(i)); } } this.addToBeNotified(action); } groupTodayList(med) { const item = med.obj; const itemHour = item.time[0]; const itemMin = item.time[1]; const dateKey = new Date().setHours(itemHour, itemMin, 0, 0); if (!this.todayGroupedObj[dateKey]) { this.todayGroupedObj[dateKey] = []; } this.todayGroupedObj[dateKey].push(item); } addToBeNotified(action) { for (let dateKey in this.todayGroupedObj) { const groupedObj = this.todayGroupedObj; const now = new Date(); const hours = now.getHours(); const minutes = now.getMinutes(); const seconds = now.getSeconds(); const dateTime = GLib.DateTime.new_from_unix_local(+dateKey / 1000); const isSingleItem = groupedObj[dateKey].length === 1; const confirmStr = isSingleItem ? _('Confirm') : _('Confirm All'); const skipStr = isSingleItem ? _('Skip') : _('Skip All'); const itemHour = dateTime.get_hour(); const itemMin = dateTime.get_minute(); let timeDiff = (itemHour - hours) * 3600000 + (itemMin - minutes) * 60000 - seconds * 1000; const time = dateTime.format(timeFormat); const notify = () => { // notifications from the past will be sent again instantly (setTimeout is < 0) // when performing some action like saving/adding/updating/removing // because it needs to be rescheduled at every action // so don't send notifications in this case if (action && action != 'sleep' && timeDiff < 0) { timeDiff = 0; return; } const [notification, app] = this.getNotification(); let body = ''; const maxLength = 3; const itemsToDisplay = groupedObj[dateKey].slice(0, maxLength); body = itemsToDisplay .map(item => `${item.name} ⸱ ${item.dose} ${item.unit}`) .join('\n\r'); if (groupedObj[dateKey].length > maxLength) { const moreItemsCount = groupedObj[dateKey].length - maxLength; const text = `${itemsToDisplay.map(item => item.name).join(', ')} ${_( // TRANSLATORS: keep the %d it's where the number goes 'and %d more', ).replace('%d', moreItemsCount)}`; body = text; } let title = _('Reminder') + ` · ` + time; notification.set_title(title); notification.set_body(body); if (settings.get_boolean('confirm-button')) { notification.add_button(confirmStr, `app.confirm${dateKey}`); } if (settings.get_boolean('skip-button')) { notification.add_button(skipStr, `app.skip${dateKey}`); } const increasePriority = itemsToDisplay.some( obj => obj.notification.increasePriority === true, ); if (increasePriority) { notification.set_priority(Gio.NotificationPriority.URGENT); } const schedule = () => { this.updateEverything({ isNotifAction: true, skipCycleUp: true }); this.scheduleNotifications(); this.scrollHistToTop(); }; const confirmAction = new Gio.SimpleAction({ name: `confirm${dateKey}`, }); confirmAction.connect('activate', () => { const confirmPromise = new Promise((resolve, reject) => { resolve(this.addNotifItemsToHistory(groupedObj[dateKey], 1)); }).catch(console.error); confirmPromise.then(_ => schedule()); }); const skipAction = new Gio.SimpleAction({ name: `skip${dateKey}` }); skipAction.connect('activate', () => { const skipPromise = new Promise((resolve, reject) => { resolve(this.addNotifItemsToHistory(groupedObj[dateKey], 0)); }).catch(console.error); skipPromise.then(_ => schedule()); }); app.add_action(confirmAction); app.add_action(skipAction); if (settings.get_boolean('sound') && action != 'sleep' && !this.played) { const ding = Gio.File.new_for_uri( 'resource:///io/github/diegopvlk/Dosage/sounds/ding.ogg', ); const mediaFile = Gtk.MediaFile.new_for_file(ding); mediaFile.play(); // when using notification buttons, assuming the app is not visible, // all past items from today will be notified, so the user can see them all // so avoid playing the sound at every notification (async () => { this.played = true; await new Promise(res => setTimeout(res, 5000)); this.played = false; })(); } app.withdraw_notification(`${dateKey}`); app.send_notification(`${dateKey}`, notification); }; let recurringInterval = 99; let recurringEnabled = false; groupedObj[dateKey].map(item => { const recurr = item.notification.recurring; if (recurr.enabled) recurringEnabled = true; if (recurr.enabled && recurr.interval < recurringInterval) { recurringInterval = recurr.interval; } }); if (recurringEnabled) { const interval = recurringInterval; const minutes = interval * 60 * 1000; const recurringNotify = (dateKey, timeDiff) => { this.scheduledItems[dateKey] = setTimeout(() => { notify(); recurringNotify(dateKey, minutes); }, timeDiff); }; recurringNotify(dateKey, timeDiff); continue; } this.scheduledItems[dateKey] = setTimeout(notify, timeDiff); } } getNotification() { const app = this.app; const notification = new Gio.Notification(); const openAction = new Gio.SimpleAction({ name: 'open' }); const icon = Gio.ThemedIcon.new_from_names([ 'preferences-system-time-symbolic', 'alarm-symbolic', 'appointment-soon-symbolic', ]); notification.set_icon(icon); notification.set_default_action('app.open'); openAction.connect('activate', () => { app.activate(); this.present(); }); app.add_action(openAction); notification.set_title(_('Dosage')); return [notification, app]; } setShowWhenNeeded(_btn, isAction) { const btn = this._btnWhenNeeded; if (isAction) btn.active = !btn.active; this.unselectTodayItems(); settings.set_boolean('show-when-needed', btn.active); this.loadToday(); } selectTodayItems(list, position, groupCheck) { const isSelected = this.todayMultiSelect.is_selected(position); if (groupCheck || !isSelected) { this.todayMultiSelect.select_item(position, false); } else { this.todayMultiSelect.unselect_item(position); } } unselectTodayItems() { this.todayItems.length = 0; this.todayMultiSelect.unselect_all(); this.updateEntryBtn(false); } updateEntryBtn(hasTodayItems) { this._entryBtnContent.label = hasTodayItems ? _('Confirm') : _('One-Time Entry'); const entryBtnIcon = this._entryBtnContent.get_first_child().get_first_child(); entryBtnIcon.set_visible(!hasTodayItems); this._skipBtn.set_visible(hasTodayItems); this._unselectBtn.set_visible(hasTodayItems); const hasWN = this.todayItems.some(i => i.obj.frequency === 'when-needed'); this._skipBtn.sensitive = !hasWN; if (hasTodayItems) { this._entryBtn.add_css_class('suggested-action'); } else { this._entryBtn.remove_css_class('suggested-action'); } } addTodayOrOneTimeToHist(btn = this._entryBtn) { const taken = +btn.get_name(); // 1 or 0 const app = this.app; const itemsToAdd = []; const date = new Date(); const hours = date.getHours(); const minutes = date.getMinutes(); const time = [hours, minutes]; if (this.todayItems.length > 0) { this.todayItems.forEach(it => { const item = it.obj; const isWhenNd = item.frequency === 'when-needed'; itemsToAdd.push( new MedicationObject({ obj: { name: item.name, unit: item.unit, time: isWhenNd ? time : item.time, dose: item.dose, color: item.color, taken: [new Date().getTime(), taken], }, }), ); if (isWhenNd) { this.updateTreatInventory(item, taken); } else { this.updateTreatInvAndLastTk(item, taken); } const itemHour = item.time[0]; const itemMin = item.time[1]; const dateKey = new Date().setHours(itemHour, itemMin, 0, 0); app.withdraw_notification(`${dateKey}`); }); historyLS.splice(0, 0, itemsToAdd.reverse()); this.updateEverything({ skipCycleUp: true }); this.scheduleNotifications('adding'); this.scrollHistToTop(); } else { // one-time entry if (!this.delayDialog) { const oneTimeDialog = new OneTimeDialog(); oneTimeDialog.present(this); this.delayDialog = true; setTimeout(() => { this.delayDialog = false; }, 500); } } this.updateEntryBtn(false); } updateTreatInvAndLastTk(item, taken) { for (const it of treatmentsLS) { const treatItem = it.obj; const sameName = item.name === treatItem.name; const itemTime = String(item.time); const updateInv = sameName && treatItem.inventory.enabled && taken === 1; if (updateInv) treatItem.inventory.current -= item.dose; if (sameName) { treatItem.dosage.forEach(timeDose => { const sameTime = itemTime === String(timeDose.time); if (sameTime) { timeDose.lastTaken = new Date().toISOString(); } }); // trigger signal to update labels it.notify('obj'); return; } } } updateTreatInventory(item, { increase = false } = {}) { for (const it of treatmentsLS) { const treatItem = it.obj; const sameName = item.name === treatItem.name; const updateInv = sameName && treatItem.inventory.enabled; if (updateInv) { if (increase) { treatItem.inventory.current += item.dose; } else { treatItem.inventory.current -= item.dose; } // trigger signal to update labels it.notify('obj'); return; } } } addNotifItemsToHistory(groupedArr, taken) { const itemsToAdd = []; const now = new Date(); const today = new Date().setHours(0, 0, 0, 0); groupedArr.forEach(item => { const dateLS = item.dateTodayLS.setHours(0, 0, 0, 0); if (dateLS !== today) { const dateLSItem = new Date(item.dateTodayLS); dateLSItem.setHours(23, 59, 59, 999); for (const it of historyLS) { const sameName = it.obj.name === item.name; const sameTime = String(it.obj.time) === String(item.time); const sameUnit = it.obj.unit === item.unit; const sameDose = it.obj.dose === item.dose; const sameDate = new Date(it.obj.taken[0]).setHours(0, 0, 0, 0) === dateLS; const isMissed = it.obj.taken[1] === -1; const isMarkedConfirmed = it.obj.taken[1] === 2; if ( sameName && sameTime && sameUnit && sameDose && sameDate && (isMissed || isMarkedConfirmed) ) { it.obj.taken[0] = dateLSItem.getTime(); // 3 for items not confirmed today it.obj.taken[1] = taken === 1 ? 3 : 0; if (taken === 0 && isMarkedConfirmed) { this.updateTreatInventory(item, { increase: true }); } else if (taken === 1 && isMissed) { this.updateTreatInventory(item); } it.notify('obj'); break; } } } else { itemsToAdd.push( new MedicationObject({ obj: { name: item.name, unit: item.unit, time: item.time, dose: item.dose, color: item.color, taken: [now.getTime(), taken], }, }), ); this.updateTreatInvAndLastTk(item, taken); } }); historyLS.splice(0, 0, itemsToAdd.reverse()); } _editHistoryItem(listView, position) { if (this.ctrlPressed) { const isSelected = this.histMultiSelect.is_selected(position); if (!isSelected) { this.histMultiSelect.select_item(position, false); } else { this.histMultiSelect.unselect_item(position); } return; } const editHistDialog = new EditHistDialog(listView, position); editHistDialog.present(this); } updateJsonFile(type, listStore, lsIsEmpty) { const fileName = `dosage-${type}.json`; const file = DataDir.get_child(fileName); let tempObj; try { tempObj = createTempObj(type, listStore, lsIsEmpty); } catch (err) { this.errDialog.add_response('quit', _('Quit')); this.errDialog.connect('response', (_self, response) => { if (response === 'quit') this.app.quit(); }); this.errDialog.body = err; this.errDialog.present(this); this.errDialog.set_can_close(false); console.error(err); return; } if (!tempObj || this.errorLoading) return; if (type === 'treatments') { tempObj.version = this.treatmentsVersion; tempObj.lastUpdate = new Date().toISOString(); this.lastUpdate = tempObj.lastUpdate; } else { tempObj.version = this.historyVersion; } const jsonStr = JSON.stringify(tempObj); const updateFile = () => { return new Promise((resolve, reject) => { const byteArray = new TextEncoder().encode(jsonStr); file.replace_contents_async( GLib.Bytes.new(byteArray), null, false, Gio.FileCreateFlags.REPLACE_DESTINATION, null, (file, result, userData) => { try { file.replace_contents_finish(result); } catch (err) { console.error(`Update of ${fileName} failed: ${err}`); reject(err); } }, null, ); }); }; updateFile() .then(() => {}) .catch(err => console.error('Update failed:', err)); } addMissedItems() { let itemsAdded = false; const itemsToAdd = []; const insert = (timeDose, tempItem, nextDate) => { if (!timeDose.lastTaken) { const nextDt = new Date(nextDate); let taken = -1; if (tempItem.markConfirmed) { nextDt.setHours(timeDose.time[0]); nextDt.setMinutes(timeDose.time[1]); taken = 2; } else { nextDt.setHours(23, 59, 59, 999); } itemsToAdd.push( new MedicationObject({ obj: { name: tempItem.name, unit: tempItem.unit, time: tempItem.time, dose: tempItem.dose, color: tempItem.color, taken: [nextDt.getTime(), taken], }, }), ); itemsAdded = true; } }; const lastUpdate = new Date(this.lastUpdate); const today = new Date(); const twoMonthsAgo = new Date(); twoMonthsAgo.setMonth(today.getMonth() - 2); const daysDiff = Math.floor((today - lastUpdate) / 86400000); if (daysDiff >= 60) { // if the app was closed for more than 2 months // only add missed items from the last 2 months this.lastUpdate = twoMonthsAgo.toISOString(); } today.setHours(0, 0, 0, 0); for (const it of treatmentsLS) { const nextDate = new Date(this.lastUpdate); const item = it.obj; const end = new Date(item.duration.end); const start = new Date(item.duration.start); nextDate.setHours(0, 0, 0, 0); end.setHours(0, 0, 0, 0); start.setHours(0, 0, 0, 0); let current = item.cycle[2]; while (nextDate < today) { if (item.duration.enabled && (start > nextDate || end < nextDate)) break; const [active, inactive] = item.cycle; const invEnabled = item.inventory.enabled && item.markConfirmed; item.dosage.forEach(timeDose => { const udpdateInv = () => { if (invEnabled && !timeDose.lastTaken) { item.inventory.current -= timeDose.dose; } }; const tempItem = { ...item }; tempItem.time = [timeDose.time[0], timeDose.time[1]]; tempItem.dose = timeDose.dose; switch (item.frequency) { case 'daily': insert(timeDose, tempItem, nextDate); udpdateInv(); break; case 'specific-days': if (item.days.includes(nextDate.getDay())) { insert(timeDose, tempItem, nextDate); udpdateInv(); } break; case 'day-of-month': if (item.monthDay === nextDate.getDate()) { insert(timeDose, tempItem, nextDate); udpdateInv(); } break; case 'cycle': if (current <= active) { insert(timeDose, tempItem, nextDate); udpdateInv(); } break; } // only the first date of confirmed/skipped items doens't get added // so set lastTaken to null after the first loop timeDose.lastTaken = null; }); current += 1; if (current > active + inactive) current = 1; nextDate.setDate(nextDate.getDate() + 1); // trigger signal to update labels it.notify('obj'); } } itemsToAdd.sort((a, b) => b.obj.taken[0] - a.obj.taken[0]); historyLS.splice(0, 0, itemsToAdd); return itemsAdded; } updateCycleAndLastUp(skipCycleUp) { const lastUpdate = new Date(this.lastUpdate); const lastUp = lastUpdate.setHours(0, 0, 0, 0); const today = new Date().setHours(0, 0, 0, 0); if (lastUp < today) this.lastUpdate = new Date().toISOString(); if (skipCycleUp) return; for (const it of treatmentsLS) { const item = it.obj; const start = new Date(item.duration.start).setHours(0, 0, 0, 0); function findDate(start) { let nextDtStr; let curr = item.cycle[2]; let nextDate = start ? new Date(start) : new Date(); nextDate.setHours(0, 0, 0, 0); while (true) { nextDtStr = nextDate.toISOString(); const [active, inactive] = item.cycle; if (curr <= active) break; curr += 1; if (curr > active + inactive) curr = 1; nextDate.setDate(nextDate.getDate() + 1); } return nextDtStr; } if (item.frequency == 'cycle') { if (start < today) { const datesPassed = datesPassedDiff(lastUpdate, new Date()); let [active, inactive, current] = item.cycle; for (let i = 0; i < datesPassed.length; i++) { current += 1; if (current > active + inactive) current = 1; } item.cycle[2] = current; item.cycleNextDate = findDate(); } else { item.cycleNextDate = findDate(item.duration.start); } // trigger signal to update labels it.notify('obj'); } } } setEmptyHistStatus() { if (!historyLS.get_item(0)) { this._emptyHistory.title = _('No History'); this._emptyHistory.visible = true; this._buttonSearch.sensitive = false; this._searchBar.search_mode_enabled = false; this.app.remove_action('showSearch'); } } updateEverything({ skipHistUp = false, isNotifAction = false, skipCycleUp = false, histIsEmpty = false, treatIsEmpty = false, } = {}) { this.setShowHistoryAmount(); this.updateCycleAndLastUp(skipCycleUp); this.updateJsonFile('treatments', treatmentsLS, treatIsEmpty); this.loadToday(); this.updateEntryBtn(false); this.checkInventory(isNotifAction); this.unselectHistItems(); if (!skipHistUp) this.updateJsonFile('history', historyLS, histIsEmpty); } _presentMedDialog(list, position, duplicate) { // artificial delay to avoid opening multiple dialogs when double clicking button if (!this.delayDialog) { const medDialog = new MedDialog(list, position, duplicate); medDialog.present(this); this.delayDialog = true; setTimeout(() => { this.delayDialog = false; }, 500); } } }, );